仮想化道場
Haswellアーキテクチャの最上位プロセッサ「Xeon E7 v3」
(2015/5/6 14:00)
Xeon E7 v3コアの強化点
Xeon E7 v3コアの強化点としては、昨年発表されたXeon E5 v3とあまり変わらない。
それでも、Ivy Bridgeコアに比べるとIPCで約10%の性能アップが見られるほか、融合積和演算(FMA)の性能向上、AVX整数演算の256ビット化、暗号などに使用されるRSAやGMP(多倍長整数演算)などの多倍長演算(Crypto)の性能向上が行われている。
最も大きいのは、Xeon E5 v3でサポートが見送られたTSX(トランザクショナルメモリ)がXeon E5 E7 v3では正式にサポートされたことだ。
TSXでは、メモリのロック機能とデータベースなどで使われるトランザクショナル機能をハードウェア(命令セット)で実現している。
メモリのロックは、現在読み書きしているメモリをロックして、ほかのプログラムから、作業中にデータを書き換えられることを防ぐ機能だ。
この機能は便利だが、ほかのプログラムからはロックが解除されない限り、他のプログラムはそのメモリの読み書きができないため、他のプログラムはアイドル状態になってしまう。もしプログラムのミスなどでメモリのロックが解除されない場合は、ずっとアイドル状態で待ち続けることになる(デッドロック)。
そこで、データベースなどで使われているトランザクショナル機能と同じような機能をメモリに持ち込んだのが、TSXになる。
TSXでは、メモリロックを行って、メモリの読み書きを制限するのではなく、全てのプログラムを同時に実行させる。
もし、あるメモリ領域のデータを読み込こんで処理を行っているプログラムがある場合に、別のプログラムが同じメモリ領域に別のデータを書き込んだとする。そのときには、メモリに新しいデータを書き込む段階で、読み込んだときのデータと比較して、データが異なっていたら、処理のやり直しを行う。このことをトランザクショナル処理という。
Xeon E7 v3を使えば、トランザクショナル処理プログラミングせず、プロセッサのTSX機能を利用することができる。また、ロック/アンロック機能、トランザクショナル機能をハードウェア(命令セット)で実現するため、性能が向上する。ソフトウェアで、ロック/アンロック機能、トランザクショナル機能をインプリメントするには、膨大なコードが必要になるが、これがいくつかの命令で実現できるなら、アプリケーション自体のコードもシンプルになる。このため、TSX機能をサポートしたインメモリデータベースなどでは、高い性能を出すことができる。
もっとも、現状では、すべてのプロセッサでTSX機能がサポートされているわけではなく、多くのプロセッサに対応するのであれば、ソフトウェアで、ック/アンロック機能、トランザクショナル機能をサポートする必要がある。今の時点で、インメモリデータベースなどのコードが劇的にシンプルになるということはないだろう。
仮想化においても、Xeon E5 v3と同じくVMCSシャドウイングがサポートされている。この機能では、頻繁に起こるVM Read/VM WriteをVMCSシャドウが中間層としてまとめ、ルートVMMに送ることで、頻繁に起こるVM開始/VM終了の数を劇的に減らす。VM開始/VM終了は、プロセッサから見れば、1つの命令に多くのクロックが費やされるため、これを減らすことで、ハイパーバイザーのパフォーマンスがアップすることになる。
また、ハイパーバイザーが使用するEPT A/Dビットをハードウェアが管理することで、ハイパーバイザーがEPT A/Dビットのトラッキングをする必要がなくなる。これにより、ハイパーバイザーの動作が軽くなる。
これらの仮想化機能はXeon E5 v3でも追加されているが、対応するハイパーバイザーが必要になる。現状では、LinuxのKVMやXenでサポートされており、VMwareのESXi、MicrosoftのHyper-Vなどでサポートが予定されている(一部の機能は、テクニカルプレビューの様な形でサポートされている)。