大原雄介の半導体業界こぼれ話

新バスインターフェイス「CXL」の静かなる普及

キャッシュコヒーレンシ対応のアクセラレータ向けインターフェイスの始まり

 2014年8月、IBMは「POWER8」を発表した。22nm SOIを使い、ソケットあたり最大12コア/最大4.1GHz駆動のプロセッサであり、L3/L4はeDRAMを利用して搭載という製品であるが、ここでIBMはCAPI(Coherence Attach Processor Interface)ポートを初実装。名前の通りキャッシュコヒーレンシがサポートされるアクセラレータ用のインターフェイスである。

 これに合わせてNVIDIAは、このCAPIと互換性のある「NVLink」を発表。Pascalベースの「Tesla P100」にNVLinkを実装し、CPU-GPUの接続にこれを利用できるようにした。POWERベースのCPUとNVIDIAのGPUを組み合わせたスーパーコンピュータという提案は、最終的にORNL(Oak Ridge National Laboratory)とLLNL(Lawrence Livermore National Laboratory)に「Summit」と「Sierra」として導入されることが決まったが、ここには1世代後になるPOWER9+Voltaベースの「NVIDIA V100」という構成で2017年から導入がスタート、2018年6月のTOP500ではそれぞれ1位と3位を占めるに至る。

 さて、CAPIはその後2017年にOpenCAPI Consortiumに衣替え。名前の通りオープンな組織となったことで、必ずしもIBM/NVIDIAでなくても、ここに加盟すればOpenCAPIを利用可能という形になったが、アクセラレータの方はともかくホスト側の方はまったく加盟メンバーが増えなかった。

 もっと正確に書けば、2017年のOpenCAPI Consortium開設当時はボードメンバーにAMD/Google/IBM/Mellanox/Micron/NVIDIA/WD/Xilinxとそれなりのメンバーがいたのに、現状Strategic Level MemberはIBMとXilinxのみ。MicronとGoogleはContributor、WDはObserverになり、AMD/NVIDIA/Mellanoxは名前が消えている(AMDによるXilinx買収で、そもそもXilinxもこの先なくなるかもしれない)。

 そして、ArmやAMDなどはこのCAPIの対抗技術としてCCIX Consortiumを2015年に立ち上げる。こちらはPCI Expressの物理層だけを流用し、上位層に独自のキャッシュコヒーレントプロトコルを載せるという仕組みであり、ホスト側メンバーが集結した。

 CCIXはCPU同士のインターコネクト、キャッシュコヒーレンシなアクセラレータ接続、そしてキャッシュコヒーレンシなメモリ接続を提供するというもので、理想は高いのだが、やや重いプロトコルになっていた。

 それでもほかにないということもあり、Armなどはアクセラレータ/CPUだけでなく、一部CPU/CPU間の接続にもCCIXを利用するというロードマップを示していた(図版01)。Xilinxの一部FPGAには2018年からCCIXの実装も始まり、2019年にはいよいよEPYCにも実装され、ホストとクライアントの両方がCCIX対応になった……というところでいきなりCXL(Computer Express Link)をぶっこんできたのがIntelである。

図版01:2018年のArm TechConにおける資料。ArmのCMN-600はダイ中の接続には利用できるが、ダイあるいはチップをまたぐ接続には利用できない(というか、そういう構成を想定していない)関係で、ここにCCIXを使うというシナリオを立てていた

突如登場したIntelのCXLとは

 CXLはIntelの独自規格で、元々はIntel AL(Accelerator Link)という名前で開発していたものらしいが、これを当然にオープンな規格として公開するに至った理由は定かではないが、突如としてCXL Consortiumを立ち上げるとともに、CXL 1.1の仕様をこのCXL Consortiumに寄贈するという動きを見せた。

 規格そのもので比べると、CXLはCCIXに比べてやや軽量な実装である。

 CXLでは「CXL.IO」、「CLX.Cache」、「CXL.Memory」という3種類の通信が定義されている。ここでCXL.IOはPCI Express互換というか、PCI Expressをそのまま持ってきたI/Oプロトコル。CLX.Cacheはキャッシュコヒーレンシを取るためのもの、そしてCXL.Memoryはメモリアクセスのためのものである。

 ただCCIXはキャッシュコヒーレンシを双方向で維持するのに対し、CXLではCPU側のキャッシュコヒーレンシしか保証しない(つまりアクセラレータのキャッシュまでは考慮しない)といった具合に、CCIXに比べると実装の負荷が軽減されるような規定になっていた。

 驚くことに、このCXL ConsortiumにAMDやArmなど、CCIXのメンバー企業も乗った。実際、最新のメンバー企業を見ると、AMD/Arm/IBM/Intel/NVIDIAが名前を連ねており、もうCCIXどこに行った? という感じである。

 AMDがCXL Consortiumに加盟したのは2019年7月のことだが、この直後にちょうどMark Papermaster氏(最高技術責任者兼エグゼクティブ・バイスプレジデント)と話をする機会があった。そこで「なんでCCIXに入ってるのにCXLにも加盟したの?」と直球をブン投げてみたところ、「スタッフは2週間に渡って検討したんだが、ガバナンスがオープンになっており、加盟しても問題はないという結論になった」とした上で、エコシステムパートナーからの要望が強かったことを理由の1つに挙げた。

 Papermaster氏の返答などを基に分析すると、ぶっちゃけCCIXに比べてCXLの方が実装が楽であり、それでいてできることに大きな違いがない、というのが最大の理由である。もちろんCPU同士の接続は不可能だが、たとえばIntelならQPIとかUPI、AMDならInfinity Fabricがあるから、別にCPU同士の接続にCXLは不要である(それを言えばCCIXも不要なのだが)。なので接続対象はアクセラレータやAttached Memoryということになる。これらはAMDが作るのではなく、パートナーが作ることになるわけで、これらの接続はCCIXでもCXLでも大差ない。であれば、安く作れる方をパートナーとしては志向するわけで、AMDとしてもそうしたニーズを無視できなかったということだ。

 CXL 1.1はコンソーシアムを結成してすぐに公開されている。これはPCIe Gen5をベースにしたもので、内容的にはIntel Accelerator Technologyそのままである。実際仕様を読むと「“Intel AL”を“CXL”と読み替えろ」と冒頭に書いてあるほどだ。

 ただ、ここからコンソーシアムは積極的に作業をスタート。2021年1月にはCXL 2.0仕様がリリースされている。CXL 2.0の追加機能は

  • CXL Switchの実装と、これを利用したFan-outトポロジーのサポート
  • リソースの管理やプーリング機能

などが追加された。またメモリバッファ向けの新規APIについてのワーキンググループも同時に立ち上がっている。

CXL 2.0と激しくぶつかり合うOMI

 このCXL 2.0と激しくメモリバッファインターフェイスの座を争っているのが、OpenCAPIの中でメモリの拡張のみにフォーカスしたOMI(Open Memory Interface)である。OMIは要するにメモリインターフェイスをシリアル化することで、よりプロセッサに搭載できるメモリ量を増やそうという発想で、POWER9からメモリインターフェイスがこのOMIに刷新された。

 POWER10の場合、OMIを16チャネル搭載しており、それぞれ64GB/secの帯域なのでフルに搭載すると1TB/secの帯域となる(図版02)。

図版02:HotChips 32におけるPOWER10の発表資料より。容量と速度のバーターが出来る(あと、メモリコントローラそのものを外に出したので、複数世代のメモリが利用できる)のがOMIのメリットである

 どうつながるか? というのはこちら(図版03)。実は業界ではこのOMI派とCXL派が激しくやりあっているという感じで、実際昨年(2021年)のHot Interconnectsでは、基調講演のDebendra Das Sharma氏(Intel)がCXLのメリットを滔々と語る一方で、テクニカルペーパーの最後のセッションではObjective AnalysisのJim Handy氏らがOMIの素晴らしさを力説するという、わざとやっただろう的なプログラムであった。

図版03:MicrochipのSMC1001(OMI DDR4 Enterprise Memory Controller)のブローシャより。要するにSMC1001はDDR4とOMIのブリッジをする形である

 ちなみにOMI陣営の方に「OMIってFBDIMMの再発明では? 」と振ったところ「全然違う。そもそもFBDIMMでは信号線の数が減らなかったが、OMIはずっと少ないし、技術的にもOMIは破壊的(destructive)イノベーションなものだが、FBDIMMは違う」という反論が返ってきた。

 ただ、商業的には数の論理というか、POWER9/10しか対応プラットフォームのないOMIと、x86とArmでサポートされるCXLでは勝負するまでもなく、それもあって多くのソリューションベンダーがCXLに群がっている。

 たとえば2021年3月にMicronは3D XPointの事業から撤退したが、このリリースの中で同社は「Micron sees immense promise in new classes of memory-centric solutions that utilize CXL to scale the capacity, performance and content required by applications to run on infrastructure with greater architectural freedom.(Micronは、CXLをベースにアプリケーションに必要な容量や性能・コンテンツを拡張し、アーキテクチャの自由度が高いインフラで実行する新しいクラスのメモリ中心のソリューションに大きな可能性を見出している)」と、はっきり3D XPointに見切りをつけ、その開発費をCXLベースの製品に投じることを明らかにしている。

 Rambusは2021年6月にCXL Memory Interconnect Initiativeなる取り組みを発表している(これも今一つ中身が分からないのだが)が、2022年5月にはこの取り組みを加速するべく、IP設計ベンダーのHardentを買収している

 Samsungは昨年5月にPCIe Gen5対応のCXLメモリモジュールを発表したが、この時は開発用プラットフォームに過ぎなかった。ところが今年(2022年)5月10日には初のCXLメモリモジュール製品を発表している。そんな訳で、CXLメモリの市場が間もなく立ち上がろうとしているのがお分かりいただけるかと思う。

 ちなみにCXL Consortiumは昨年の段階では「速度を上げる議論は今のところない」(Hot Interconnectsにおける質疑応答から)という話だったが、PCI Express 6.0の標準化完了に伴い、これをサポートしたCXL 3.0が間もなく登場することが先日明らかになった(図版04)。

図版04:これは今年5月のSNIA Persistent Memory+Computational Storage Summit 2022におけるスライド。実は2021年11月にCXL ConsortiumはGen-Z Consortiumを吸収合併した。これに伴い、Gen-Zで提供されていた機能を提供できるようにする、というのもCXL 3.0の目的の1つになったと思われる

CXLを最初に実装できるのは、IntelではなくAMD?

 さて、例のごとく(?)ここまでは超絶長い枕である。CXL Ecosystemが立ち上がるためには、そのプラットフォームが必要である。これはSapphire Rapidsが担う……と「当初は思われていた」(図版05)。

図版05:Intel Architecture Day 2020におけるスライド。Sapphire RapidsはCXL 1.1をサポートする、とちゃんと書かれている(いた)

 実は昨年あたりから、IntelはSapphire Rapidsに関する発表をいろいろ行なっている(HotChips 33とかLinley Processor Forum 2021 Fall、ISSCC 2022など)のだが、ブロック図にPCIeとは書いてあってもCXLと書いてないのをちょっと訝しく思っていたのだが、最近

  • そもそもSapphire RapidsはCXL.ioとCLX.cacheは実装されているが、CXL.memoryは未実装である。なので、CXLベースのアクセラレータの利用には差し支えないが、メモリバッファは利用できないということになる(図版06)
  • しかもSapphire RapidsのPCIe/CXLには問題があり、少なくとも最初に出る製品はCXLが一切使えない(CXL.cacheの実装に問題があった、と聞いたが真偽のほどは不明)

という話が湧いてきている。このあたりの問題が解決されてCXLがちゃんと動作し、メモリバッファが利用できるのは、次のEmerald Rapidsに持ち越される、というのがもっぱらの評判である。

図版06:CXL 2.0のWhite Paperより。左端の、ローカルメモリを持たない単純なアクセラレータのみ、Sapphire Rapidsで利用できる

 もちろん、現状はCXLメモリバッファはまだ最初の製品が出ただけで、OSとかミドルウェア、ハイパーバイザーなどの対応はこれからなので、今すぐプラットフォームが用意できないとビジネス的に困るか? と言われればあんまり困らないのだが、検証プラットフォームがないというのはさすがに問題である。

 そもそもSapphire Rapidsそのものが当初は2021年中に出ると言われ、2022年初頭になり、2022年6月のInvestor Meetingで「本日最初のSKUの出荷を開始した」と宣言しつつ、そのSKUがIntel Arkで見当たらない辺りは、現状まだ一般出荷が開始できたとは言えないわけで、Sapphire Rapidsがこの調子だとEmerald Rapidsが出てくるのはいつのことだ? と不安にならざるを得ない。

 この状況を救ってくれそうなのは、皮肉にもAMDである。先日行なわれたFinancial Analyst Dayにおける説明の中で、今年第4四半期に出荷されるGenoaベースの第4世代EPYCは、PCIe Gen5に加え、CXL 1.1のメモリ拡張機能をサポートすることを明確に宣言したからだ(図版07)。

図版07:“Memory expansion with CXL”という書き方に何となく当て擦りを感じるのは、筆者の心が汚れているだけなのだろうか? (いやそうかもしれないが)

 本格的な実装はZen 5世代、つまり2024年前後になると思うが、ここでサポートされるInfinity Architectureでは、CXL 2.0ベースのメモリサポートとか、CXL 3.0への対応なども発表されている(図版08)。

図版08:CXL 3.0に関しては、全機能をGen4 Infinity Architectureでサポートするかどうかは不明である。PCIe Gen6に対応したDouble Bandwidthのみ、という可能性もある

 要するに、今後CXLベースのメモリソリューションは、EPYCプラットフォーム上で開発/検証される公算が非常に高いことになる。Intelから見れば軒を貸して母屋を取られた気分だろうが、その理由はIntel自身の製品遅延にあるあたり、恐らく中の人は歯がゆい思いをしているのだろうと思われる。