【レポート】
![]() |
Photo01:Kevin J.McGrath氏(AMD fellow, California microprocessor division)。AMD64のアーキテクトであり、古くはNx586のMicroarchitectureの作業に携わった。 |
たまにはx86の話題でも……と言いながら全然x86ではないのだが、AMDは今回のFPFでPacificaの詳細を発表した。実を言えば詳細自体は以前か発表されており、実際今回の発表もかなりの部分が既に公表済の内容ではあるのだが、新しい話も含まれているので、併せて少しPacificaの内容について説明してみたい(Photo01)。
PacificaはIntelのVirtualization Technology同様に、ハードウェアをパーティショニングする技術というか、ゲストOSに対して仮想マシンを提供する技術である。従来だとOSが直接ハードウェアを操作していたが、Pacificaを使うことで間にHypervisor層が入る形になる(Photo02)。
このHypervisor層とGuest OS層の動作を切り替える命令として新設されたのがVMRUNである。Pacificaの場合、ブート直後はHypervisor層が動作するが、ここでVMRUNを発行するとGuestOSの動作が開始される。ただ、切り替えメカニズムがこれだけだと、HypervisorとGuestOSが並行して走るとは言いがたい。GuestOSが動いているときにHypervisorが動きたい場合もあるからだ。このために用意されているのがIntercept(横取り)機構である。具体的には命令レベルでのIntercept、及び例外/割り込みのInterceptである。特定の命令が実行された場合、あるいは割り込みとか例外が発生した場合、それをトリガーにして制御をHypervisorに戻し、適切な処理を行ってからGuestOSに処理を戻すことが可能である。この辺りの状態を管理するのがVMCBで、これもPacificaで新設された管理テーブルである(Photo05)。
さて、Virtual Machineを考える際に、メモリをどう仮想化して、どう見せるかは課題の一つである。Pacificaは以前からここにShadow Page Table(SPT)とNested Paging(NP)、およびPaged Real Modeという3つの種類をサポートすることを表明していたが、SPTやPaged Real ModeはともかくNPの詳細な説明はなされていなかった。そこで、この3つをもう少し細かく説明したい(Photo06)。
![]() |
Photo06:どちらのメモリ管理を使うにせよ、TLB(Tranlation Lookup Buffer)でのハンドリングが増えるため、これを助ける目的でASIDというフィールドがTLBに新設された。ちなみにPaged Real Modeは仮想アドレス変換ではないのでここには含まれない。 |
SPTは名前の通り、Page TableをShadowingする方法である。Guest OSが直接Page Tableをアクセスしてしまうと、全ての物理メモリにアクセスできてしまう。そこでHyperVisorがPage TableのShadow Setを作り、GuestOSの操作が許される物理メモリだけをそこに割り当てるという仕組みだ(Photo07)。この場合、HypervisorはGuestOSのCR3を常に監視し、変更が加えられたら必要に応じて大元のPage Tableを書き換える必要がある。
![]() |
Photo07:CR3というレジスタがPage Tableのアドレスを指している。そこでHypervisorはまずPage TableのShadow Setを作り、次にGuestOSのCR3レジスタの内容をそのShadow Setのアドレスに書き換えるという仕組みである。 |
これに対し、NPはもう少し複雑である。一言で説明すれば、仮想アドレス→物理アドレスの間にもう一段テーブルを介することでメモリのパーティショニングをしようというものだ(Photo08)。この方式のメリットは、HypervisorがいちいちPageTableのメンテナンスをする必要がなくなることである。この辺りを図で示したのがPhoto09である。NPを使うと、物理メモリがGP(Guest Physical)とHP(Host Physical)に分離され、GP→HPの割り当てはHost側のPage Tableで決まることが判る。後はHypervisorが適切にHostのPage Tableを操作すればよいという話だ。
ちなみにこのSPTとNPを比較したのがPhoto10だ。SPTは、あくまでもPageTableだけを書き換える方式だから、GuestOSが認識する物理メモリのアドレスは、実際の物理アドレスだ。つまり仮想化の度合いはやや低い。これに対しNPではGuestOSが認識する物理アドレスは、実際には仮想化されたものである。つまり仮想化の度合いが高いわけだ。
![]() |
Photo10:こちらはAMDが今年5月30日に公開した"AMD “Pacifica” Virtualization Technology"よりの抜粋。同資料、残念ながら今はダウンロードできなくなっている。 |
ではNPで例えばページフォルトが発生したらどうなるか?というと、この際にはGuestOSはPageFaultにより#VMEXITが発生、処理はHypervisorに移る。このため、後はHypervisorが該当するアドレスのPage in作業を行ってからVMRUNを実施する形になる(Photo11)。
最後がPaged Real Modeあるが(Photo12)、これは仮想アドレスのメカニズムはHypervisorが管理するそのままで、GuestOS毎に個別のOffsetを持たせることでメモリのパーティショニングを行う仕組みである。
| 千葉工大 東京スカイツリータウンキャンパスがオープン! - 新型ロボも登場 [19:00 5/23] |
| 産総研、変性タンパク質の活性を回復させる有機ナノチューブゲルを開発 [18:30 5/23] |
| NIMS、空気中の物質を感知して発光するフィルムを開発 [18:29 5/23] |
| 日本NI、最大6.6GHzでRF信号ルーティングが可能なスイッチモジュールを発表 [18:26 5/23] |
| TI、SPICEモデル付きのSAR ADCを発表 [18:24 5/23] |
|
白か黒か? 『劇場版ポケットモンスター ベストウイッシュ』、7月12日放送 [00:47 5/24] ホビー |
|
TVアニメ『Fate/Zero』、第21話「双輪の騎士」の先行場面カットを紹介 [00:16 5/24] ホビー |
|
アニメ「夏目友人帳」展覧会の開催決定、主題歌集発売で [00:00 5/24] ホビー |
|
[ポケットモンスター]人気投票で放送作品を決定 異例の試み [00:00 5/24] ホビー |
|
【コラム】Windowsスマートチューニング 第188回 Vista/7編: タスクスケジューラでリマインダー通知を行う [23:07 5/23] パソコン |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。