期待のネット新技術

PCIeの処理オーバーヘッドを36分の1に、IBM独自の「CAPI」から「OpenCAPI」へ

【InfiniBandの現在】

 「InfiniBandの現在」では、規格としての歴史と現状、今後の動向をまとめて紹介している。大半の読者にとっては「InfiniBandって何?」というところだろうが、僚誌クラウドWatchをご覧になっておられる読者の中には「何で今さら」という方も居られるかもしれない。

 そう、InfiniBandという規格は、1999年に作業が始まり、2000年に最初の規格策定が行われたという「えらく古い」規格なのである。

「InfiniBandの現在」記事一覧

PCIe 3.0で13μsのオーバーヘッドを0.36μsへと引き下げる「CAPI 1.0」

 今回は脇道に逸れるが、Gen-Zの競合規格の1つとして、前回も少しだけ触れた「OpenCAPI」について紹介したい。“メモリ拡張”という意味では、現時点でGen-Zへの最有力の競合候補の1つと言えるものだ。

 OpenCAPIは元々、「CAPI(Coherent Accelerator Processor Interface)」としてIBMのPOWER8プロセッサーで搭載されたメカニズムである。

最後の行はちょっと手前味噌すぎる気もしなくはない。出典はOpenCAPI ConsortiumプレジデントであるMyron Slota氏の"OpenCAPI and its Roadmap"(PDF)

 このときはまだ、IBMが開発したPOWER8における独自規格であり、そのメリットも限られたものだった。そして、IBMの説明によれば、このときのCAPIは汎用のアクセラレーター接続用で、PCI Express Gen 3よりも帯域が広く、かつキャッシュコヒーレンシを提供できるというものだった。しかし、事実上の対応製品は、NVIDIAのNVLinkを搭載したGPUと、FPGAボードに限られていた。

 IBMはこのCAPIを利用し、「Sierra」と「Summit」というスーパーコンピューターを構築、ORNL(米オークリッジ国立研究所)とLLNL(米ローレンス・リバモア国立研究所)に納入している。最終的に納入されたSierraとSummitは、IBM POWER9とNVIDIA「Volta(Tesla V100)」の組み合わせだったが、本格納入に先立つアプリケーションの移植などに向け、POWER8に「Pascal(Tesla P100)」を組み合わせたパイロットシステムが2016年あたりから納入され、これがCAPIベースでPOWER8とPascalを接続するかたちとなっていた。

 物理的な意味では、PCI Express Gen 3の配線やPHYをそのまま利用していたが、その上位層は、PCI ExpressではなくCAPI独自のものとなっている。

 ちなみにCAPIを利用した場合のメリットについて、IBMでは処理におけるオーバーヘッドの引き下げとしていた。従来型のSNAP Frameworkを利用し、CPUからGPUへデータを送るのは以下右のような構成となるが、CAPI(とCAPI SNAP)を利用すると、アプリケーションはメモリへ書き込むだけで、その領域を外部のデバイス(GPU/FPGA)を直接参照できるので、右下のように余分な処理は必要なくなるわけだ。

アプリケーションからは、まずデバイスドライバー経由で外部デバイス(GPU/FPGA)のメモリがマッピングされているアドレスを取得し、そこへメモリコピーを行う必要がある。この処理のうちデバイスドライバーだけでおよそ1000命令を消費する
PCI Express経由だと合、メインメモリと外部デバイス(GPU/FPGA)のメモリが完全に分離されていて、CPUコアから直接プロセスが外部デバイスのメモリを操作できない(逆もしかり)が、CAPIではこうした垣根がなくなる

 その結果として、例えばFPGAなりGPUに何か処理を投げ、その結果を返してもらうという処理におけるオーバーヘッドが、従来型では13μsにも及ぶのに対し、CAPIではこれを0.36μs程度まで引き下げることが可能になる、との数字が示されている。

これはCAPIだけが高速と言うわけではなく、InfiniBandでも似たような数字になる。出典はPOWER System CAPI Hardware Acceleration, Montpellier Cognitive Systems LabのAlexandre Castellance氏/Bruno Mesnet氏による"CAPI SNAP"(PDF)

倍速化した「CAPI 2.0」のリリースと並行し、「OpenCAPI Consortium」を設立

 そんなわけで、CAPI(CAPI 1.0)は完全にPOWERアーキテクチャの独自規格であったが、これをもう少し汎用化したものが、2016年10月に登場したOpenCAPIである。正確に言えば、IBMは2017年に登場したPOWER9プロセッサーとともに「CAPI 2.0」をリリースする。

 このCAPI 2.0ではInterconnectがPCI Express Gen4 x16(正確には2×PCI Express Gen4 x8)へと切り替わって速度が倍増しているほか、いくつかの新機能(CPU側でのAddress Translation、アクセラレーターからのDMA実行並びにアトミック命令、アクセラレーターからCPU側のスレッドへの通知)が追加されてはいるが、基本的には速度を倍増した「だけ」の仕様である。

 このCAPI 2.0は、CAPI 1.0と同じくIBMの独自仕様となるが、これと並行してIBMはCAPIのオープン化を図り、具体的には前述した2016年10月に「OpenCAPI Consortium」を設立した。創立メンバーはAMD・Dell EMC・Google・HPE・IBM・Mellanox Technologies・Micron・NVIDIA・Xilinxに加え、何とCCIX ConsortiumとGen-Z Consortiumまでが加盟している。

 オープン化ということは、仕様の策定のレベルからConsortium内で行われるという意味であり、理屈から言えば、例えばOpenCAPI対応のデバイスをGen-Zで接続したり、CCIXと相互接続するといったこともあり得るわけで、2者の加盟は、そうした可能性を見据えてのことではないかと思われる。

 ただ、OpenCAPI Consortiumに戦略的なレベルで現状でも残っているのは、Google・IBM・Mellanox Technologies・NVIDIA・Xilinxの5社とWDだけで、ControbutorとしてもMicronが残っている程度。AMD・Dell EMC・HPEの3社とCCIX Consortium・Gen-Z Consortiumはすでに脱退しているようだ。参加してみたものの、メリットが見い出せなかった、というあたりではないだろうか。

独自Interconnectで25GT/secを実現、汎用化も進んだ「OpenCAPI 3.0」

 OpenCAPI Consortiumでは、CAPI 2.0(のドラフト)をベースに、最初のOpenCAPIの仕様となる「OpenCAPI 3.0」を2016年10月にリリースする。もっとも、DataLink Layerこそ、この2016年10月のリリースのものが最終であるが、Transaction Layerに関しては、2017年1月に改訂版であるVersion 1.1がリリースされ、これが最新となっている。

 主な特徴をまとめたのが以下となるが、このうち特筆すべきはPHYがPCI Express 4.0互換の16GT/secから、独自の25GT/secのものに変わった(厳密には両対応で、このあたりはCCIXも似たようなかたちとなっている)ことで、これによってさらなる高速化が可能、というものだ。

3倍、というのはCAPI 1.0(8GT/sec)との比較であって、CAPI 2.0とのものではない

 さらに詳細な説明が以下だ。CAPI 1.0/2.0はPOWERアーキテクチャーと厳密に結び付いた仕様となっていたが、OpenCAPIではこのあたりが完全にアーキテクチャ非依存化され、汎用的な利用も可能となっている。

 このOpenCAPI 3.0では、OpenCAPI側に、メモリとそのメモリを管理するHome Agentという機能を実装することがサポートされている。ただ、この時点でのメモリというのは、主にSCM(Storage Class Memory)であった。

 細かいところでは、CAPI 1.0/2.0で可能だった「PSL(Power Service Layer)」におけるホスト側メモリのキャッシング機能が、OpenCAPI 3.0では落とされているなど、単純にCAPI 2.0をそのまま置き換えたわけではない。

 これはおそらくアーキテクチャ非依存化のために行われた変更と思われる。ただOpenCAPI 3.1では、Standard DRAMをサポートするような変更が施されることになった。次回は、このOpenCAPI 3.1における「OMI(OpenCAPI Memory Interface)」の話を紹介していきたい。

「InfiniBandの現在」記事一覧

大原 雄介

フリーのテクニカルライター。CPUやメモリ、チップセットから通信関係、OS、データベース、医療関係まで得意分野は多岐に渡る。ホームページはhttp://www.yusuke-ohara.com/