後藤弘茂のWeekly海外ニュース

AMDの2017年以降の全チップの土台となる「Infinity Fabric」

データ系と制御系の2つのファブリック

 AMDは、新CPU「Ryzen」から、チップ内外のインターコネクトファブリックを一新した。「Infinity Fabric」と呼ばれる新ファブリックによって、Ryzen以降のAMDチップでは、スケーラブルなデータ転送やきめ細かな制御が可能になるという。

 Infinity Fabricは、実際には2つの異なるファブリックで構成されている。データ転送を行なう「Infinity Scalable Data Fabric(SDF)」と、制御系の信号を伝達する「Infinity Scalable Control Fabric(SCF)」の2系統だ。データ転送のInfinity SDFがチップのデータの流れを司る血管系なら、制御系のInfinity SCFはチップの神経系にあたる。この2つのファブリックによって、AMDの新チップ群は効率的に設計されるようになった。AMDのMark Papermaster氏(SVP & CTO, AMD)は次のように説明する。

Ryzen(Summit Ridge)のSoC構成。Infinity Fabricがユニットを接続する
(PDF版はこちら)
Infinity Fabricの概念図
制御系の信号を伝達する「Infinity Scalable Control Fabric(SCF)」
データ転送とコヒーレンシ制御を行なう「Infinity Scalable Data Fabric(SDF)」

 「CPUなどの設計では、マイクロアーキテクチャも重要だが、配管(plumbing)、つまりどう接続するかが非常に重要となる。チップの設計では、配管は2つの意味を持つ。データとコントロールだ。その2つについて、一貫した要素で配管する、これがInfinity Fabricの思想だ。

 Infinity Fabricは2つのピースから成り立っている。データファブリックと、コントロールファブリックの2つだ。データファブリックは、多数のエンジンを接続しても高いスケーラビリティのデータ転送が得られるように作った。コントロールファブリックは、異なるSoCにまたがってスケールする一貫した制御システムを実現する。そのため、どちらもスケーラブルファブリックと呼んでいる。異なるSoCでは、デスクトップ版Ryzenだけでなく、サーバーのNaples、モバイル版Ryzen、さらにディスクリートグラフィックスのVega、これらに渡って、共通したファブリックを提供する。デスクトップ版Ryzen以降のAMDのSoCは、共通したInfinity Fabricの基盤の上に作られるようになる」。

 AMDの製品では、Ryzen以降のCPU、APU(Accelerated Processing Unit)、GPUはいずれもInfinity Fabricベースとなる。GPUでは、次世代のVegaからInfinity Fabricを採用する。2017年の製品で言えば、デスクトップRyzen(Summit Ridge)、サーバーCPU「Naples」、APU「Ryzen Mobile(Raven Ridge)」、ディスクリートGPUファミリ「Vega」の全てがInfinity Fabricとなる。

 Infinity Fabricは、データとコントロールともに、AMDのIPのためのファブリックだ。AMD外のベンダーに対してオープンにする規格ではない。あくまでも、AMDが社内で使うために開発したファブリックだ。ただし、他社のIPをInfinity Fabricに取りこむことが容易になる仕様となっているという。

AMDのMark Papermaster氏(SVP & CTO, AMD)
Infinity Fabricが今後のAMDの全製品のベースとなる
Infinity Fabricのニーズ

CPUとディスクリートGPU間も含めたソケット間接続もInfinity Fabric

 Infinity FabricのデータファブリックSDFは、オンダイ(On-Die)とダイ間の2つの異なる系統がある。オンダイファブリックは、チップのダイの中で、CPUコアやGPUコアなどの各ユニットやメモリコントローラを接続する。オフダイのファブリックは、チップパッケージ上でのダイ同士の接続や、チップソケット間の接続を行なう。どちらもInfinity Fabricなのは、プロトコル層が共通化されているからだ。論理層のプロトコルが共通化されているため、オンダイとオフダイの接続でプロトコル変換のオーバーヘッドが必要ないと見られる。

 「Infinity Fabricは、1つにはオンダイのインターコネクトの拡張だ。しかし、その一方でソケット間もサポートする。ソケットでは、CPUとCPUの間、CPUとGPUの間、CPUと他のアクセラレータの間をInfinity Fabricで接続する。

 データファブリックでフォーカスしたのは、AMDのIPのスケーラビリティだ。プロトコル的には、所定のノード数まで高効率で性能がスケールアップできるように設計した。具体的には、データファブリックは64コアまで良好にスケーリングできる。1ソケット内だけでなく、2ソケット間でも、ほとんどリニアな比率で延びる」とPapermaster氏は説明する。

4コアから8コアへの性能スケーリング。4コアのCore Complex (CCX)は、オンダイのSDFによって接続されている
64コアまでの性能スケーリング。16コアは2ダイ間をオフダイのSDFで接続、64コアは2ソケットをオフソケットのSDFで接続している

 Infinity Fabricはスケーラブルなプロトコルになっており、オフダイを含めて、少なくとも64コアまでの高い効率のスケーラビリティを持つとされている。もちろん、実装上もスケーラビリティを実現できる広帯域なファブリックになっているはずだ。

 また、ここでCPUとGPUのコヒーレント接続もInfinity Fabricと明言していることも重要だ。2015年の12月の時点では、AMDはCPUとGPUの間は、業界標準のアクセラレータインターコネクトで接続するだろうと説明していた。現在は、その部分もオフチップのInfinity Fabricに変わっている。ちなみに、NVIDIAはIBM Power CPUとNVIDIA GPUをNVLinkで接続できるようにした。

 Infinity SDFのプロトコル層は、AMDの以前のインターコネクトである「Coherent HyperTransport」をスタート地点としている。ただし、大きく変えており、HyperTransportと互換性があるわけではない。

 「メモリコヒーレンシについてはHyperTransportをベースにしたが、Infinity Fabricは論理層も拡張している。ノウハウのスタート地点がHyperTransportだっただけで、論理層は異なる。我々は、HyperTransportとの互換性を維持する必要がないからだ。後方互換を保たなければならない理由がないため、プロトコルを自由に変更できる。また、我々はいかなる外部のスペックにも合わせる必要がない」(Papermaster氏)。

物理的な実装は製品によって大きく異なるSDF

 Infinity FabricのSDFは、論理層が共通化されたファブリックで、ダイの内部とダイ同士をそれぞれ接続する。ただし、実装自体はオンダイと、ダイ間では全く異なる。また、オンダイのSDFの実装も、各製品によって大きく異なるコンフィギュレーションになっているという。オンダイSDFであっても、製品毎に要求される仕様が大きく異なるからだ。

 「データファブリックは非常に注意深く実装されている。実証されたプロトコル定義、適正な帯域、そして管理されたレイテンシ。プロトコル、帯域、レイテンシの3つを重視して設計した。また、プロトコルは共通だが、実装はそれぞれの製品で異なっている。

 データファブリックはコンフィギュラブルである必要がある。我々はInfinity Scalable Data Fabric(SDF)と呼んでいるが、Scalableと呼ぶ理由は、コンフィギュラブルだからだ。SDFは、プロトコルはHyperTransportの資産をある程度利用しているが、実装は、非常にフレキシブルにコンフィギュレーションできるようにした。

 例えば、今年(2017年)後半のモバイル版Ryzenでは、データファブリックのコンフィギュレーションは、デスクトップ版Ryzenとは大きく異なる。しかし、依然としてInfinity Fabricで、共通したアーキテクチャとなっている。つまり、SDFでは、異なる製品間で共通したアーキテクチャを採用しているが、個々の製品ごとに、ユニークなコンフィギュレーションと、物理的な最適化、レイテンシの最適化などがなされている。データファブリックは固定されたハードマクロではなく、各SoC毎に最適化できる形となっている」(Papermaster氏)。

 CPUを8コア搭載したデスクトップ版Ryzenと、CPUコアとGPUコアを搭載するAPUであるモバイル版Ryzenでは、SDFに要求される仕様が異なる。データハングリーなGPUコアは広帯域な内部ファブリックを必要とする。AMDの従来のAPUでは、この問題を解決するため、CPUコアからメモリへのアクセスのバスと、GPUコアからメモリへのアクセスのバスを分離していた。これが、CPUコアとGPUコアの間での連携を取りにくくする一因となっていた。AMDは、Infinity SDFでは、一貫したアプローチでこの問題を解決すると見られる。そのために、CPU版のRyzenとAPU版のRyzenでは、内部のSDFの実装が大きく異なると見られる。

 Infinity FabricのSDFについては、オンダイのファブリックの実装仕様自体はAMDの内部に留めて外部には出さない。しかし、SDFのインターフェイスによって、サードパーティのIPをSDFに接続することができるようにすることは可能だという。

 「Infinity Fabricの内部実装自体は、AMD外には提供しない。これは、あくまでもAMDのIPだ。しかし、我々のファブリックに、他社IPを標準的な方法でアタッチできるようにするため、(インターフェイスは)ライセンスがしやすいように作ってある」(Papermaster氏)。

 一方、ダイ間/ソケット間のInfinity Scalable Data Fabricの物理的な実装については、現在のサーバー版Naplesを見る限り、PCI Express Gen3と共通化された物理層をコンフィギュレートして使う仕様となっている。Naplesは32コアのサーバーCPUだが、各CPUパッケージ毎に128レーンの高速なI/Oリンクを備えている。このI/Oリンクは、PCI Express Gen3、SATA、NVMe、そしてInfinity Fabricに使うことができる。そして、2ソケットの場合は、2個のNaplesの接続を64レーンのインフィニティファブリックで行なう。残りの64レーンがそのほかのI/O接続に使われる。

 そもそも、Naples自体が4個のダイを接続したマルチダイの製品だと推測される。そのため、パッケージ内では各ダイが高速I/Oを使ったInfinity Fabricで接続されており、残りの高速I/Oがパッケージ外のI/OとInfinity Fabricに使われていると推測される。

8コアCPUのSummit Ridgeのダイ
(PDF版はこちら)
Naplesの2ソケットソリューション

ノード間の接続はInfinity FabricではなくGen-Zに

 オンダイのユニットの接続と、ダイ間やソケット間の接続の両方をカバーするInfinity Fabricのデータファブリック。そこで出てくる次の疑問は、AMDがノード間の接続をInfinity Fabricでカバーするつもりなのかどうか、という点だ。CPU群とメモリ、あるいはGPUも加えたクラスタ。大規模なシステムでは、このクラスタ化した計算ノード同士も、高速なファブリックで接続する必要がある。

 従来、HPC(High Performance Computing)などでは、広帯域のノード間ファブリックが求められてきた。しかし、現在はデータセンターもビッグデータへの対応で広帯域ファブリックの必要が叫ばれている。Intelはこうしたノード間ファブリック用に、Intelが開発した「Omni-Path」を投入した。現在、ファブリックには複数の規格や規格化が平行しており、ファブリック戦争になりつつある。しかし、AMDはInfinity Fabricをノード間ファブリックにまで広げるつもりはないという。Papermaster氏は次のように説明する。

 「サーバーでのノード間については、HPCなどで広帯域のファブリックが求められている。しかし、AMDは、この部分ではプロプラエタリなアプローチは用いない。なぜなら、我々は次のレベルを目指しているからだ。そのためにはオープンでなければならないと考えている。

 我々は、オンダイやソケット間のインターコネクトについては、Infinity Fabricのようにプロプラエタリな仕様にする。なぜなら、我々は可能な限り早く仕様を作る必要があるからで、AMDへの最適化も必要だ。ファブリックの仕様で手間取っていては、新しいCPUに求められる、できる限り早い製品化ができない。競争力のあるエンジンでリーダシップを取るためには、ファブリックの最適化で制約されたくない。そのため、オンダイやソケット間では、AMD独自のソリューションを求めている。

 しかし、我々はそれ以上のインターコネクトについては、業界を横断したい。クラスタ間をリンクしたり、NVM(不揮発性メモリ)など大容量メモリを接続する、FPGA(Field-Programmable Gate Array)を接続する、こういった場合は、ほかの企業と連携する必要がある。我々の競争相手は、その部分にもプロプラエタリなアプローチを取った。しかし、AMDは異なる。クラスタから外の接続については、業界全体と連携したい。

 そのため、我々は次世代ファブリックを策定する「Gen-Z」コンソーシアムに参加した。Gen-Zのゴールは、業界横断のオープンなアプローチでスケールすることだ。だから、AMDはGen-Zに協力している」。

 この種のインターコネクトの標準化では「Gen-Z」と「CCIX」がある。両者は一部重なるが、CCIXはコンピュートノードとアクセラレータ間の接続にフォーカスしており、Gen-Zはどちらかと言えばより包括的なインターコネクトを目指している。AMDは、社内のIP間についてはInfinity Fabricを持っているため、Gen-Zに重点を置いていることがわかる。また、IntelのOmni-Pathを意識していることもわかる。

 ちなみに、AMDは、ARMベースの高密度サーバーベンチャSeaMicroを買収した際に、同社のサーバー向けトーラスネットワークファブリック「Freedom Fabric」を採用すると説明していた。しかし、現在のAMDは方針を転換していることがわかる。これは、過去数年でファブリックのコンソーシアム化が進んだためと見られる。