スポンサードリンク

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

スポンサーリンク
スポンサードリンク

PCIeの処理オーバーヘッドを36分の1に、IBM独自の「CAPI」から「OpenCAPI」へ
[元記事]
 「InfiniBandの現在」では、規格としての歴史と現状、今後の動向をまとめて紹介している。大半の読者にとっては「InfiniBandって何?」というところだろうが、僚誌クラウドWatchをご覧になっておられる読者の中には「何で今さら」という方も居られるかもしれない。【この記事に関する別の画像を見る】 そう、InfiniBandという規格は、1999年に作業が始まり、2000年に最初の規格策定が行われたという「えらく古い」規格なのである。
■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プロセッサーで搭載されたメカニズムである。
 このときはまだ、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)を直接参照できるので、右下のように余分な処理は必要なくなるわけだ。
 その結果として、例えばFPGAなりGPUに何か処理を投げ、その結果を返してもらうという処理におけるオーバーヘッドが、従来型では13μsにも及ぶのに対し、CAPIではこれを0.36μs程度まで引き下げることが可能になる、との数字が示されている。
■倍速化した「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も似たようなかたちとなっている)ことで、これによってさらなる高速化が可能、というものだ。
 さらに詳細な説明が以下だ。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)」の話を紹介していきたい。

スポンサードリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク