EPT (Extended Page Tables)
EPT を使用すると、通常物理アドレスとして使用されていたものが、ゲスト物理アドレスとして扱われる。そして、ゲスト物理アドレスは、EPT Pageing structure を使用して物理アドレスに変換される。
上記図からわかる通り、ようは 2 段階ページングかな。
- EPT を使用しないときのアドレス変換+------------+
リニア | Paging | 物理
アドレス → | Structures | → アドレス
+------------+
- EPT を使用したときのアドレス変換
+------------+
+------------+ | Extended |
リニア → | Paging | → ゲスト → | Paging | → 物理アドレス
アドレス | Structures | 物理アドレス | Structures |
+------------+ +------------+
なお、EPT を使用する場合でも、Paging Structure のトップレベルのテーブルである PML4 table のアドレスは、CR3 に格納する。一方、Extended Paging Structures のトップレベルのテーブルである EPT PML4 table は VM execution control field の extended-page-table pointer に格納する。
これを使用すると、リニアアドレスで指定されたメモリにアクセスするためには、リニアアドレス→ゲスト物理アドレスで最大 4回、ゲスト物理アドレス→物理アドレスで最大 4回のメモリアクセスが発生し、つまり最大 8 回メモリアクセスするということか。
x86 プロセッサは、4KB/2MB ページが基本だし、アドレス変換が高速だとは思えないのは私だけ?Paging Structure Cache と、TLB でほとんどすべてカバーできているのだろうか?