【短期集中連載】大原雄介の最新インターフェイス動向
|
【写真3】FSB-FPGA方式はTightly Coupledに含まれる。では他に何があるかというと、例えばTolapaiことIntel EP80579。EP80579にはSecurity Service Unitと呼ばれる暗号化アクセラレータを搭載した品種があるが、これはブリッジを挟んだHigh Speed Internal Bus経由でメモリに直接接続されている | 【写真4】Intelの場合、MCH(X58ならばIOH)とICHの両方からPCI Expressが出るし、それはAMDの場合も似たり寄ったりである。最近ではデュアルとかトリプルビデオカードと銘打って、x16スロットを2~3本用意するマザーボードが増えてきたから、これは非常に都合が良い事になる |
このFSB-FPGA方式とPCI Express経由の接続という2種類の接続方法は、アプリケーションから見ればかなりの相違がある。そこでこの違いを吸収し、接続方式をアプリケーションから遮蔽するのがIntel QuickAssist Technologyであり、これでは性能が足りない場合のより高速なアクセス手法がExoskeletonだ。QuickAssist TechnologyとExoskeletonはどちらもソフトウェアソリューションなので、今回詳細は割愛するが、ExoskeletonはともかくQuickAssist TechnologyはあくまでもIntelのソリューションなので、PCI Express Extensionには入ってこない。
さて、それではこれで万事解決かというと、やはりPCI Expressにただアクセラレータを挿しただけでは性能面へのインパクトが大きい。グラフィックスのように描画データをまとめて送り込んで「後は宜しく」で済ませられるものや、SATAなどのブロックデバイスのように「大きな塊で送受信を行なうので、トランザクションの発生する頻度そのものはそう多くない」ものもあるが、問題は、もっと小さいサイズのデータを煩雑にやり取りするケースが想定される汎用のアクセラレータの場合だ。現在のPCI Expressではこうしたケースでのオーバーヘッドが大きい。
そこで考えられたのがGeneseoである。具体的にはレイテンシを削減するためにData Reuse HintとOrdering、Pause/Resumeといった機能の搭載や(写真5)エンコード方法/ヘッダ構造の変更(写真6)、ソフトウェア側でのAtomic RMWのサポートやI/O MMUの改良(写真7)、電力管理の機能強化(写真8)などが挙げられている。これらの機能拡張をPCI-SIGに、Intelから提案を行なった結果が今回のExtensionに繋がっているわけだ。
連載第3回目の写真6のキャプションで「アプリケーションがTPCC/SPEC_jpp/DGEMMなんていうHPC向けなのかという話は後述」と書いたが、要するにターゲットとなるのはさまざまな汎用アクセラレータ(First TargetはGPGPUかもしれないが、他にも例えばこんな製品は当然ターゲットの1つだろうし、あるいはLSI Logicに買収されたTarariのCIS(Content-Inspection Processor)も、こうした方法で接続されるターゲットとなるだろう。
もっとも、これらのExtensionがそのまま素直に全部採用されるかは今のところ定かではない。例えばGeneseoに含まれていたOrderingとPause/Resumeについては、今のところExtensionに入るかどうかちょっと不明である。Orderingは、SATA 2.6で入ったNCQ Priorityに近いものに見受けられる。つまりAttributeなりHintなりで、トランザクションの優先順位を設定する(単にHigh/Lowだけなのか、何レベルかが用意されるのかも不明だが)というものだし、これにあわせて低い優先順位のトランザクションを途中で中断したり再開したり出来るPause/Resumeというスキーム(PCIのDelayed Transactionにちょっと近いものか?)もあるようだが、当然こうしたものを全部インプリメントするとなると、結構大変なものになるだろう。それはハードウェアの実装のみならず、ソフトウェア側の負荷も高まる事になる。あるいは、Packet header overhead improvementsにしても、TLPなりDLPなりのパケットフォーマットそのものに手をいれるというのは、PCI ExpressのMACそのものに手を入れることになってしまい、現実問題としてかなりハードルが高いように思える。
IDF Fall 2008では、Geneseoとして提案された拡張のうち、比較的実装の可能性の高いものを選んで紹介したといった雰囲気であり、最終的にどうなるかは今年のPCI-SIG Developers Conferenceあたりまでは、状況ははっきりしないだろう。
Extensionの行方がはっきりしないもう1つの理由はOpenCLだろう。OpenCLが何かという話は別の記事に譲るとして、確かに建前上はOpenCLでは特定のハードウェアに依存しないのは事実だが、それは「特定のハードウェアでなくても高速に動作する」事は意味しない。特にCPUとGPUを共同させて動かすようなケースでは、よりオーバーヘッドの少ないメカニズムがあるに越した事は無い。
ただ現状、Khronos GroupがPCI Express Extensionにどこまで参画しているかはちょっと不明である。勿論AMD(ATI)、NVIDIAといったベンダーは既に参画しているから、こうしたベンダーや、(Geneseoの言いだしっぺである)Intelも当然OpenCLの事を忘れている訳ではあるまい。ただOpenCLを高速に実行するために必要な機能が現状の(Geneseoベースの)Extensionで十分か、それともほかにも何か必要とするのか、あるいは現時点ではPCI Express ExtensionにOpenCLは関与しないのか、といったあたりの動向がまたつかめたらレポートしたいと思っている。
というところで、PCI Expressに関する動向は今回で終了となる。次回からは、SATA 3.0についてお話しする。
□関連記事 【2008年12月18日】Khronos Groupの代表がOpenCLを解説(2009年3月23日)
[Reported by 大原雄介]