[an error occurred while processing the directive]

【短期集中連載】大原雄介の最新インターフェイス動向
~PCI Express 3.0編その5



●Geneseo

 主なPCI Express Extensionについては、前回までに紹介したものが現時点での全てであるが、「で、これは何」という話が当然出てくるだろう。これらのExtensionの正体は、Intelが2007年に発表したGeneseoである。Geneseoとは、PCI Expressを使ってアクセラレータを接続するための拡張技法であり、これをPCI-SIGにExtensionとして提案したものが、そのまま通ったという話である。

 Intelは元々、アクセラレータに関して2種類の接続形態と、これを支えるソフトウェアを発表している。まず接続形態に関しては、Xilinx/Alteraと提携して、FPGA経由でFSBにアクセラレータを実装するというFSB-FPGA方式(写真1)が1つ。もう1つがPCI Expressにアクセラレータを搭載するという方式だ。

 FSB-FPGA方式の場合、XilinxのVirtexなりAlteraのStartixなりを実装した専用のボードにFSBバスライセンスが内包されているので、別にFSBを使うための利用料は必要ない。FSBに制限がある(現時点で800MHz動作は確かサポートされていない)という欠点はあるにせよ、接続はもっとも高速だし、メモリやキャッシュとのコヒーレンシも提供される。必要なら、4P構成のマザーボードに最大3つまでアクセラレータを接続できる(写真2)といったメリットもある。

【写真1】どうみても、Socket 604よりも大きなドーターボードを装着することになる。これだとどうやってZIF Socketのレバーを固定するんだろうと思ったら、途中にインターポーザが入るのが普通だった。つまりSocket 604とほぼ同寸法のインターポーザをZIF Socketに固定し、その上にドーターボードを載せる形態である。なるほど、未だに800MHz FSBをサポートできないわけだ 【写真2】この構成で、Multi-Gigabit Serial Linkは当然CPUからは見えない形で実装される事になる。というか、これが見えてしまったらチップセットとの親和性が取れなくなるので、Cahce コヒーレンシが維持できなくなりかねない

 もっとも実装面積に限界があるから(FPGAから更に配線を引っ張り出して外部に置いたアクセラレータに接続するなんてトリッキーな技もあるにせよ)、原則としてはFPGA内部にアクセラレーション機能を実装することになる。なので、GPGPUに代表される「大量の演算ユニットを力技で実装し、並列処理をさせることでパフォーマンスを稼ぐ」アプローチには絶対的なゲート数も動作周波数も消費電力も不足するし、なによりコストパフォーマンスが悪すぎる。実際には、汎用ロジックで処理するにはコストがかかりすぎる特殊な処理を高速化するためのアクセラレータを実装する形で使われるのが一般的だろう。

 そのため、もっと汎用的な用途は、PCI Express経由でアクセラレータを装着することになるだろう。実際Intelとしても、FSB-FPGA方式が使われる割合は、全体の中でごく僅かであるとしている(写真3)。これがPCI Express経由ならば、そもそも1台のマシンに複数実装することも容易だし、実装面積/体積や電源供給能力なども遥かに高い。あと、高価なハイエンドFPGAを使わずに実装できるからコスト面でも有利である(写真4)。

【写真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に繋がっているわけだ。

【写真5】これは第3回目で説明したTPHである 【写真6】Signaling/Encoding Schemeは8b/10b Encodingの代わりに128b/130b Encodingを使うというGen3そのものの話。パケットオーバーヘッドに関しては現状まだ不明である
【写真7】これは第4回目に説明したAtomic RMW 【写真8】こちらも第4回目に説明したPower ManagementのDynamic Power Allocation

 連載第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を解説
http://pc.watch.impress.co.jp/docs/2008/1218/khronos.htm
□大原雄介の最新インターフェイス動向
【3月10日】PCI Express 3.0編その1
http://pc.watch.impress.co.jp/docs/2009/0310/interface01.htm
【3月12日】PCI Express 3.0編その2
http://pc.watch.impress.co.jp/docs/2009/0312/interface02.htm
【3月16日】PCI Express 3.0編その3
http://pc.watch.impress.co.jp/docs/2009/0316/interface03.htm
【3月18日】PCI Express 3.0編その4
http://pc.watch.impress.co.jp/docs/2009/0318/interface04.htm

(2009年3月23日)

[Reported by 大原雄介]

【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp
お問い合わせに対して、個別にご回答はいたしません。

Copyright (c)2009 Impress Watch Corporation, an Impress Group company. All rights reserved.