VT-x に128バイトサブページ単位の書込み保護が導入される予定

将来の Intel x86 CPU に追加される機能を先出しで解説する Intel Architecture Instruction Set Extensions Programming Reference が Oct. 2017 に改定され -030 になった。前回の紹介は id:nminoru:20161014:intelcpu。

https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

今回は、大きく2つの機能が追加されている。1つめはEPTを使ったVMMにおいてゲストVMの物理メモリの4KBページよりも細かい128バイト単位のサブページで書き込み保護を掛けるようにする機能と、ガロア体アフィン変換をする機能の2種類だ。

EPT-Based Sub-Page Permissions

ゲストVMの4KBページを32個の128Bサブページに分割し、それぞれに書込み保護をかけることができる。これまでの書込み保護は存在し、それがOKがで後にSPPのチェックが行われ、書込み保護に違反するとVM Exitすることになる。

基本的には4KBページよりも小さな単位の書き込みを拾えるので、Copy-On-Write動作による差分更新の必要なデータを小さくすることができる。いろいろ応用が考えられる。

  • ライブ・マイグレーションは、VMの停止時間をできるだけ少なく・切り替え直後の性能の低下を小さくするためには、VMを走行させた状態で移動元のメモリページをある程度まとめて移動先に転送し、その後にVMを停止させマイグレーション開始後にVMが変更したページを再転送する戦略をとることになる。この時にSPPがあれば再転送するデータ量は最小化できる。
  • 複数ノード間で動作する(ソフトウェア)分散共有メモリを作る場合、細かい粒度で変更箇所が検知できることは有利になる。
  • 同様にゲストVMの物理メモリとstorage-class-memoryな不揮発メモリをマッピングする場合もSPPが使える。

ちなみにサブページ機構は IA-64(Itanium) にも存在する。IA-64 の仮想記憶は 4K/8K/16K/64K/256K/1M〜 と様々なページサイズをとることができるが、IA-32 互換モードは常に 4KB を必要とする。そこで IA-64 側のページテーブルエントリのメモリ属性を特別な値(001b)に設定した場合、部分的にページテーブルが1段分増えて、通常ページが 4KB で分割されたサブページになり個別の物理メモリ位置と属性を指定することが可能になる。これは今回の x86-64 の SPP よりも強力な機能だ。