ソフトウェアに関しても、いくらかの拡張が行われた(Photo02)。まずはAtomic Read-Modify-Writeのサポート。要するにクリティカルセクションを提供するものだ。これはRoot ComplexとDeviceの両方で提供される。これもIOVに向けた機能と考えれば良いだろう。ちょっと意外なのが次のI/O Page Faultのサポート。要するにDMA BufferがIn Pageで無くてもI/OをStartできるというものだ。

Photo02:流石にPage Faultについては「通常DMAの開始前にターゲットバッファはIn Pageでロックするものだが、ロックしなくても良くなるという話か?」と確認したが「今の時点では詳細は説明できない。もう少し待て」との返事。ただこれについては、Exoskeletonの説明の中で、この理由が明確に示された。他に考えられるケースでは、例えば複数のトランザクションが同時に1デバイスに行われるようなシチュエーションでは、まずI/O要求を出しておき、それからBufferの確保なんてやり方もアリな気はする。複数の仮想OSが一斉にPage Lockを掛けたら、Memoryが簡単にボトルネックになってしまうからだ。ただ、下手なインプリメントをすると今度は無意味にI/O Page Faultが多発しそうで、SuperVisorのインプリメントが難しそうではある。

次のConfiguration Enhancementsも、基本的にはIOV関連の対応と思われる。まずBAR Renegotiationは、BAR(Base Address Registers)を再マップする機能だが、これはIOVにおけるFunctional Resetあたりで便利なものとなろう。つまり、ある仮想OSがDevice Resetを掛けた場合などに使われるのではないかと思う。またSwitch Error Reportingは、AER(Advanced Error Reporting)を拡張するとある。こちらは具体的な項目がまだ未公開なので何とも言えないが。

最後のDynamic Power Managementは、消費電力削減である。具体的に言えば、不要な場合に帯域を落すというもので、例えばx16→x8→x4→x1といったバス幅削減と、転送速度の削減(8GT/s→5GT/s→2.5GT/s)の両方をカバーするものになる、という話だった。ただ具体的な話はまだ不明で、例えばx0がありうるか(*1)とか、2.5GT/s未満のスピードがあるか、といったあたりは現状不明である。

このProtocol ExtentionとGeneseoの関係については、はっきりと「これがGeneseoだ」とYanes氏が言っており、つまりこれはIntel/IBMとの協議の中で決まった機能ということになる。このPCI Expres Protocol Extensions、あくまでもGen3世代で導入するとしており、前倒ししてGen2世代に導入する予定は無い、との返事だった。

(*1) 普通に考えればx0、つまり転送中止はありえないのだが、PCI Expressの場合Reset信号が別に用意されるので、これを使えば一度x0に落としてから復帰することは不可能ではない。ただReset信号に複数の意味を持たせることになるので、本当にやるかどうかはちょっと不明だ。