既報のVersalなどに直接関係があるわけではないが、XilinxはCCIX ConsortiumのPromotorメンバーでもあり、今年5月にはCCIXを搭載したVirtex Ultrascale+を発表している。そのCCIXに関してXDF 2018の中でテクニカルセッションがあったので、その内容をお届けしたい。

CCIXは2016年5月に、AMD/ARM/Hurwei/IBM/Mellanox/Qualcomm/Xilinxの7社をPromotorとして策定を始めた、キャッシュコヒーレンシなインターコネクト(Cache Coherent Interconnect for Accelerators)の規格である。これを策定するのがCCIX Consortiumであるが、このCCIX Consortiumが結成されたちょっと後のXilinxが発表したスライドでは「オープン」という言葉が躍っているのは、IBMのCAPIとかNVIDIAのNVLINK、IntelのOmniPathといった規格がいずれもプロプラエタリなものである事を意味している。

もっともCAPIはその後OpenCAPIに進化しており、またXilinxはOpenCAPIになる前のCAPIの時点ですでにサポートをしていたりする上、CCIXのプロモータにIBMも名前を連ねたりしている辺りが非常に政治的にややこしい部分はあるのだが、それはともかくとして動機そのものは簡単で、どんどんI/Oが高速化していく中で、キャッシュコヒーレンシなインターコネクトが無いと不便、というものだ(Photo01)。

  • インターコネクト技術の変化

    Photo01:キャッシュコヒーレンシが無くても良ければPCI Expressで良いわけでもあるが、ただPCI Expressもそこまで性能が上がらないという問題がある

加えて言えば、マルチコアSoCのコア間接続(そのコアがメインプロセッサなのか、アクセラレータなのかは別にして)にも利用できるとする(Photo02)。ただData Sharing Perspectiveというあたりに少し含みがあるが、これは後ほど説明したい。

  • CCIXコンソーシアムの概要

    Photo02:このあたりがCCIXが少し色気を出している部分。対象がアクセラレータとは限らない

CCIXの現状は? というと、今年6月18日にBase Specification 1.0がリリースされている。実はこれに先んじて、昨年のArm TechConのあたりで各社ともCCIXのIPを準備中という話が出ており、今年からぼちぼちCCIXを実装したシリコンも登場しつつある(Photo03)。

  • CCIXに対応するXilinx

    Photo03:今はアクセラレータ/エンドポイントのみシリコン(言ってしまえばXilinx)が存在する状態

実のところCCIX 1.0はPCI Express Gen4をターゲットに、この上に実装されるような形になっており、そのPCI Express Gen4はそれこそエンドポイントこそ16/14nm世代で実装可能だが、ホスト側は10/7nm世代を想定しているため、実際にホスト側が出てくるのは2019年以降という感じになっている。

これに続いてCCIX 1.1/2.0のアップデートも披露された(Photo04)。

  • CCIXのロードマップ

    Photo04:よく見ると、CCIX 1.1もPCIe Gen5「も」利用できるとなっている辺り、必ずしもPCIeである必要はなく、ただしターゲットは32GT/sec前後ということだ

PCI Express Gen5そのものは(今年6月のPCI-SIGのロードマップによれば)2019年第1四半期に予定されているが、ほぼこれと同じタイミングでCCIX 1.1がリリースされる予定である。これに続き、CCIX 2.0が2019年末に予定されているが、ターゲットが56GT/sというのは要するに100G EthernetのPHYの利用を考慮しているものと思われる。

また2つのユースケースも提示された。1つ目は普通のアクセラレータ向け(Photo05)である。

  • ユースケース1

    Photo05:GPはGeneral Purpose Processor、TPはTarget Specific Processorの略だそうだ

要するにメインプロセッサとアクセラレータをCCIXでつなぐ事で、両者を分離することが可能になり、かつ性能を犠牲にしないというものだ。

もう1つは、メモリ拡張I/Fとしての利用である(Photo06)。

  • ユースケース2

    Photo06:10年ほど前に、One Stop SystemsがHPC向けに、PCIeスイッチを利用して最大8ノードで共有メモリを利用できるというソリューションをアピールしたことを思い出した。実際キャッシュコヒーレンシが維持されるから、CCIXを使えば簡単にこうした事も可能になる

こちらは、SCM(Storage Class Memory)をPCIeの先にぶら下げてストレージとして利用しているものを、CCIXにすることでより低レイテンシでアクセス可能になり、しかも柔軟に構成できるというものだ。