最近の話題 2005528

1.IntelがデュアルコアPentium Dを正式発表

  Intelは,2005年5月26日に正式にPentium Dプロセサとそれをサポートする945,955チップセットを発表しました。Pentium Dはクロックが3.2GHzの840,3.0GHzの830,2.8GHzの820の3種で,1000個ロットの場合の単価は,それぞれ$530,$316,$241となっています。事実上2個のチップが入っているのですが,従来の1個分と同じレベルのお値段です。また,同時にシングルコアの最高性能でる3.8GHzの670も発表されました。こちらのお値段は$851です。

  Pentium Dについては既に何度も取り上げ,性能評価記事なども紹介してきたので,改めて述べることはあまり無いのですが,正式の発表に伴いデータシートが出たので,消費電力について述べます。

  今回のPentium Dのデータシートでは,私が見逃しているのかもしれませんが,電源電圧の絶対値の記述が消えました。もともとIntelのプロセサは,チップからVIDという5〜6ビットの信号が出ていて,これをVoltage Regulator Module(安定化電源)に接続し,VRMはこのVIDの値で指定された電源電圧を出す仕組みになっています。Pentium Dの場合,VIDは0.8375Vから1.600Vまでを25mV刻みで指定できるコードになっています。VIDは,チップを測定して,最大動作周波数の遅めのチップは電源電圧を上げて加速する設定,高速で動作するがリーク電流の多いチップは電源電圧を低めに設定するというようにして歩留りを上げています。 具体的には,設定はチップ上のヒューズを切って書き込むような方法で行われていると思われます。

  ということで,決まった電源電圧というものは無いのですが,それでも従来は,一応,この電圧が標準という痕跡が有ったのですが,今回はVID -xx mVというような記述になり絶対値が消えてしまいました。

  データシートによると,840と830の最大電源電流は125A,820は100A(いずれも最大クロックで動作時)となっています。また,Thermal Design Powerは130Wと95Wです。これに対してシングルコアの6xx系のチップで3.2GHzクロックの640は,74A,84Wで,670は119A,115Wとなっています。どちらも規格の最大値なので,これを割り算して電源電圧を求めるのは多少無理があるのですが,無理をして計算すると,840では1.04V,640では1.135Vとなります。640は840の半分 のチップとすると62.5A,65W動いても良い筈ですが,電源電圧設定が10%程度高めな点と,HTで回路の動作率が上がっているので,電源電流,TDPともに増えていると思われます。

2.AMDが仮想化技術Pacificaの仕様を公開

  2005年5月25日に仮想化技術であるPacificaの仕様を公開したと発表しました。これは3月5日の話題で紹介したIntelの仮想化技術であるVanderpool Technologyに対応するものです。

  仮想化技術はVMM(Virtual Machine Monitor)とかHypervisorとか呼ばれる直接ハードウェアを管理するOSの上に複数のゲストOSを載せ,各ゲストOSはあたかも自分がハードを直接管理しているように見せる技術で,1個のプロセサ上で,同時に異なる種類のOSを動かしたり,同じOSでもユーザや業務別に独立のOSを動かして,別のユーザや業務の情報が見えないように分離したり,一つのOSがクラッシュしても他のOSは影響なく動作を続けられるようにするために用いられます。

  ハードウェア的には,ゲストOSが出すハードウェアを直接制御したり,ハードウェアの状態を直接見るような命令は途中でインタセプトし,VMMが直接のハードウェア資源操作を行って,ゲストOSにはあたかもゲストOSが操作したかのように結果を返します。また,割り込みなどもVMMがインタセプトし,割り込みを受け取るべきゲストOSに渡すというような操作を行います。これらをソフトで行う仮想化ソフトがありますが,このようなインタセプトを行うためのオーバヘッドが大きいという問題がありました。しかし,ハードでサポートを追加することによりオーバヘッドが減少し,ゲストOSやその上で動くアプリケーションの性能が改善されます。といっても仮想化しない場合に比べれば何がしかの低下は避けられません。

  ゲストOSに対して4KBアラインされたVirtual Machine Control Blockというメモリ領域を確保し,ここにゲストOSに制御を渡すときの初期設定やアーキテクチャレジスタの状態を保持して切り替えるという方式はIntelと同じで,とのような命令やイベントをインタセプトしてVMMに制御を渡すかというあたりもあまり違いが無い感じです。

  Intelの仮想化と大きく違うのは,IOデバイスからのメモリアクセスが保護されている点です。Intelの仮想化はゲストOSからは他のゲストOSのメモリは触れない構造にはなっているのですが,PCI上のDMAデバイスに他のゲストOSのメモリ領域のアドレスを指定して動作させると さわれてしまうので,いわば,玄関側はちゃんと鍵がかかるが,裏口は開けっ放しという欠陥住宅です。これに対して,AMDのPacificaではDevice Exclusion Vectorという構造体を持ち,各ビットが4KBの物理メモリに対応してIOデバイスからのアクセスの許可,禁止をコントロールできます。物理的にはDEVはメモリに格納されるアレイですが,AMDプロセサの場合はCPUに内蔵されたNorthbridgeがDEVのキャッシュを持ち,各IOデバイスからのアクセスをチェックします。そして,禁止されたアクセスの場合はMaster Abortをデバイスに返すという方法で,IOデバイスからの不法なアクセスからメモリを保護しています。また,不法アクセスのログはVMMから見られるようになっています。

  また,オプションとなっていますがNested Translationという機能があり,これを使うとゲストOSのメモリ管理で生成されるアドレスを,VMMではアドレスと見做して再度アドレス変換を行います。ゲストOSのアドレス変換が物理アドレスを生成するとゲストOSごとに使用できる物理アドレスを割り当てる必要があり,ゲストOSに物理アドレスが見えてしまいますが,このNested Translationを使うと全てのゲストOSに同じメモリ空間を与えているように見せることが出来,メモリの物理アドレスを完全に隠蔽することが出来ます。

  これらの仮想化を利用してセキュリティーの強化を行っており,SKINITという命令を出すと,CPUをイニシャライズし,セキュリティーローダをロードするのと並行して,Trusted Platform Moduleに入力して暗号化されたシグネチャをチェックし,セキュリティーローダが改変されていないことを確認して実行を開始します。セキュリティーローダはVMMのようなセキュリティーカーネルをロードし,同様に暗号化シグネチャをチェックして実行を開始します。これらの過程において仮想化の機構を使ってIOデバイスなどからのアクセスを排除して安全性を確保しています。

  以上のように,AMDのPacificaはIOデバイス側からのアクセスに対してプロテクションが掛かる点で,IntelのVirtualizationより一ランク上の仮想化を実現しています。

3.「Xbox360への疑問」への回答

  Xbox360のプロセサについて,読者の南谷さんという方から,「寡聞にして奇数個のコアを集積したSMPというのはきいたことがありません。ダイ上での配置もあまり美しくはできないように思えます。」「過去に実例は存在するのでしょうか?また、XBOX360ではl2$ も共有のようですし、アービタなどに特別な工夫が必要ではないのでしょうか?このあたりの話をもう少し掘り下げて頂けるとありがたいです。」という質問を戴きました。

  確かに奇数個のプロセサコアを集積するSMPの例は聞いたことがありません。但し,個人的には,8コア+1スペアで9コア集積というのは,PS-3のように8コアから1個をスペアにして7コア使用より綺麗だと思います。 また,IBMのメインフレームのz990は12プロセサを1個のMCMに搭載し,Azul社のJavaアクセラレータは24CPUコアを集積しているというように2のベキではない例はあります。

  Xenonですが,ゲームの場合はコストも厳しいので3コアで足りるなら綺麗さのためだけに4個にしてチップ面積を増やすことはしないというのは理解できます。配置としては縦長のコアを3個横に並べ,その下にコア3個分の幅のL2$などという配置で,それほど困らないと思います。また,5月14日の話題に書いたように,コアも1MBのL2$も40mm2程度なので,田の字のマスの3個がコアで,残り1個がL2$ということも考えられます。

  L2$のアービトレーションという点では,1コアの場合は,要求はCPUコアと外部のバスからの2箇所があり,これが一番シンプルな場合で,相手が使っている間は待てば良いのすが,2コアになると要求元が3個,3コアになると要求元が4個になります。要求元が3個以上になると,2個以上が待っているケースがあり,どれに使わせるか考える必要がありアービトレーションが複雑になります。このように要求元が2個から3個なると複雑さが大分変わりますが,3個と4個の間の階段はそれほど高くないと思います。