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

マルチダイ化へ向かうNVIDIAのリサーチチップ「RC 18」

NVIDIAはムーアの法則後の時代に向けてマルチダイを研究

 NVIDIAはGPUのマルチダイ化に向けて進んでいる。そう遠くない将来、NVIDIAのハイエンドGPUは、1個の巨大ダイではなく、2~4個のダイで構成されるようになるだろう。NVIDIAは、学会などで、将来のGPUアーキテクチャとして、複数のロジックダイをパッケージ内に封止したマルチダイ実装の構想について、何回も説明してきた。

NVIDIAが構想する将来のGPUアーキテクチャ。マルチダイを有機サブストレート上に載せる
さらに、マルチダイモジュールを複数オフチップインターコネクトで接続する
モノリシックなGPUからマルチダイのGPUへと移行する

 そして、NVIDIAが主催するGPUコンピューティングのカンファレンス「GTC(GPU Technology Conference) 2019」では、マルチダイ化へ向けた具体的な取り組みが明らかにされた。NVIDIAのリサーチ部門を統括するBill Dally氏(William J. Dally, Chief Scientist and SVP of Research, NVIDIA/Professor(Research), Stanford University)は、GTCの技術セッションと、GTCに合わせて開催された説明会で、マルチダイ構想のための研究用チップについて解説を行なった。

 大手の半導体メーカーは、研究目的のために実際にチップを設計する。Intelなどは毎年のように複数の研究用チップを学会発表しているが、NVIDIAが自社の研究用チップについて説明することは珍しい。

 NVIDIAのリサーチ部門を統括するBill Dally氏は、次のように研究用チップを説明する。

 「深層学習をスケーラブルにする実験として、研究のためのプロトタイプ(チップ)をデモした。これは、基本的には最近テープアウトして製造したもので、現在評価中だ。我々は『RC 18』と呼んでいる。“2018年のリサーチチップ”の意味だ。深層学習のアクセラレータチップであり、非常に小さなサイズからスケール(アップ)できる。小さなダイ1つに16個のPE(Processing Element)が載っている」。

 実際にRC 18のチップ自体は相対的に小さく、TSMCの16nmプロセスで8,700万トランジスタしかない。また、スライドのように、この研究用チップは単体ダイではなく、複数のダイをパッケージに載せたマルチダイ構成となっている。具体的には36個のダイを有機サブストレート上に配置したMCM(Multi-Chip Module)で、複数のダイで連携するスケーラブルなアーキテクチャとなっている。

NVIDIAのリサーチ部門を統括するBill Dally氏(William J. Dally, Chief Scientist and SVP of Research, NVIDIA/Professor(Research), Stanford University)

多くの実験を試みたNVIDIAの研究用チップ「RC 18」

 「このチップでは多くの技術をデモできることが利点だ。技術の1つは、スケーラブルな深層学習アーキテクチャ。もう1つは、有機基板(Organic Substrate)上でのダイとダイの間の、非常に効率的な伝送技術だ」(Dally氏)。

 正確に言えば、NVIDIAがこのチップで実証している技術は、4つだ。Dally氏が触れなかったものが2つある。(1)オブジェクト指向のハイレベル論理合成ベースの設計手法「Object-Oriented High-Level Synthesis (OOHLS)」、(2)パーティション単位でクロックを生成する「Fine-grained Globally Asynchronous Locally Synchronous (GALS)」システム、(3)スケーラブル深層学習アーキテクチャ、(4)低電力低レイテンシのダイ間の伝送信号「Ground-Referenced Signaling(GRS)」だ。また、Dally氏が将来のGPUの内部ネットワークとして触れたことがある、オンダイのメッシュネットワークも実装している。

 このうち、Object-Oriented High-Level Synthesis (OOHLS)とFine-grained Globally Asynchronous Locally Synchronous (GALS)については、NVIDIAは昨年(2018年)のDAC(Design Automation Conference)で発表をしている。チップのアーキテクチャもここで発表した。また、Ground-Referenced Signalingについては、昨年のISSCC(IEEE International Solid-State Circuits Conference)で発表している。

 簡単に言えば、将来のNVIDIAのチップのために必要な、マルチダイ実装、開発ツール、クロッキングシステム、内部アーキテクチャ、ダイ間のスケーラブルな制御などについての研究の集大成チップがRC 18だ。RC 18自体は深層学習やコンピュータビジョン向けアクセラレータチップだが、RC 18で試みている技術の大半は、GPUなどほかのチップに転用可能なものだ。ぱっと見ただけではわかりにくいが、ここに、将来のNVIDIAのGPUやほかのチップについてのヒントが詰まっている。

RC 18の設計概念図

RC 18のベースアーキテクチャ

 RC 18はTSMCの16nm FinFETプロセスで製造されている。8,700万トランジスタと、16nm世代のチップとしては比較的小さなダイだが、このなかに、深層学習用のPE(Processing Element)が16個と、制御用のCPUコア、オンチップのグローバルバッファメモリ、それに、GRS(Ground-Referenced Signaling)が8リンク搭載されている。実際のダイでは、GRSリンク群がかなりの面積を占めており、1チップあたりのGRSによるI/O帯域は100GB/sに達している。このあたりの設計からは、このチップがマルチダイの実証用に開発されたことがわかる。

RC 18のダイ写真

 16個のPEは、4x4のアレイになっており、構造は「Eyeriss」と似ていると論文で説明されている。Eyerissは、NVIDIAとMIT(Massachusetts Institute of Technology)でのリサーチプロジェクトのニューラルネットワークアクセラレータチップで、GTC 2016でもポスター発表された。きわめて低い電力でディープコンボリューショナルニューラルネットワーク(DCNN)を実行できる。NVIDIA関係のニューラルネットワークプロセッサには、このほか、Stanford UniversityとのEIEやNVIDIA自身のDLAなどがあるが、RC 18はそれらとは異なるアーキテクチャとなっている。

Eyerissの基本アーキテクチャ。PEがマトリックスとなっている
Eyerissでのデータムーブメント

 各PEは、プロセッシングユニットとスクラッチパッドメモリ、コントロールユニットとルーターで構成されている。PEはオンチップのメッシュ「Network-on-Chip (NoC)」に、ルーターを通して接続されている。NoC型のインターコネクトは、Dally氏が将来のGPUの概念図で以前示しており、現在クロスバスイッチであるGPUの内部インターコネクトへの適用も視野に入れているとみられる。また、PC 18のPE群は、NoCからクロスバスイッチを介して、オンチップのマルチバンクのグローバルメモリに接続されている。CPUコアはAXI Bus経由でNoCに接続されている。

RC 18のベースアーキテクチャ

 RC 18には通常のCPUコアも実装されている。RISC-V命令セットアーキテクチャの「Rocket」コアだ。Rocketコアはシンプルなシングルイシュー/5ステージのCPUコアだ。比較するならArmのCortex-A5クラスのコアだが、Armよりも実装面積が小さく、効率がよい。Rocketコアの役割は、グローバルイコントローラで、各PEのコントロールレジスタをセットすることでPEを始動し、また、PE内のスクラッチパッドメモリとオンダイでPE共有のグローバルメモリ、さらにオフチップメモリまでのメモリ階層でのデータトランスファを制御する。

RISC-V Rocketコアのアーキテクチャ
RISC-V RocketコアとArm Cortex-A5との比較

 RISC-VはオープンなCPU命令セットアーキテクチャであり、誰でもRISC-VアーキテクチャのCPUを開発できる。しかし、RISC-Vで設計したCPU自体はオープンソースにする必要はなく、商用ライセンスのCPUコアも作ることができる。Rocketは、US Berkeleyで開発された最初期のRISC-Vコアで、オープンソースであるため使いやすく、大学などの研究開発には浸透しつつある。また、NVIDIAの2007年以降のGPUには、現在、「Falcon(FAst Logic CONtroller)」という独自プロセッサコアがマイクロコントローラとして複数個組み込まれているが、これも近い将来RISC-VベースのCPUコアに変わる見込みだ。

SystemC/C++ベースでの上流からの設計フローを導入

 RC 18は、設計フローの面でも実験的なチップとなっている。現在のSoCは、膨大なトランジスタ数で設計が複雑化しており、設計にかかる労力が大きな負担となっている。課題は設計労力を減らすことにあり、そのためNVIDIAは、SystemCでのC++コンポーネントのオブジェクト指向ライブラリによって、上流言語からのハイレベルな合成で設計を容易にする仕組みをRC 18で試みた。ラフに言えば、SystemCでまるまる設計できるようにする試みだ。

 チップの回路設計は、手作業の回路図ベースから「ハードウェア記述言語(HDL:Hardware Description Language)での記述へと移行して長い。ソフトウェアのコンパイルにあたる「論理合成」でRTL(Register Transfer Level)から物理的な回路設計に変換することで、チップ設計を容易にしている。しかし、「Verilog」、「VHDL」といった現在のHDLでは、抽象度が低いため、チップの複雑化によってハードウェア設計の労力が増えてしまっている。そのため、より抽象度が高い言語での設計を実現しようという流れがある。

 C++のクラスライブラリであるSystemCはその代表格だが、実際にチップすべてをSystemCで設計して、RTLに自動変換(動作合成)してネットリストまで論理合成で落とし込む流れはあまり普及していない。RTLへの変換までを自動化するさいに、最適化することが難しいためだ。NVIDIAがやろうとしているのは、まさにその部分で、「Object-Oriented High-Level Synthesis (OOHLS)」によってSystemC/C++モデルをRTLに合成し、レイテンシインテンシブな設計での最適化を可能にする仕組みを作っている。

 また、普遍的なハードウェアコンポーネントのライブラリ化も行なう。このライブラリ「MatchLib」には、ルーターやプロセッサのデータパス、SerDesなどコアな部分も含まれる。RC 18では、シンセサイザブルなSystemCアーキテクチャモデルをRocketコア以外のすべてのコンポーネントに対して行なっているという。

Object-Oriented High-Level Synthesis (OOHLS)での設計フロー

 ちなみに、Rocketコアが除外されているのは、オープンソースのハードウェア記述言語である「Chisel(チズル)」でRocketが記述されているからだ。RISC-Vの初期のオープンソースコアはChiselベースが多い。ChiselはScalaベースで、発想としてはこちらも抽象度を上げて生産性を高める方向だが、今回はC++ベースのSystemCでのツールなので、Rocketコア部分は、はずされている。

 このほか、RC 18では、新しいクロッキング手法であるパーティション単位の細粒度クロック生成の「Fine-grained Globally Asynchronous Locally Synchronous(GALS)」が採用されている。各パーティションごとに、小さなローカルクロックジェネレータが実装されている。パーティション同士のクロックの同期には、非同期のハンドシェイク信号が実装されている。

Fine-grained Globally Asynchronous Locally Synchronous (GALS)の概念図

 OOHLSやGALSなどの設計上の新しい試みは、明らかに大型チップをターゲットとしたものだ。NVIDIAハイエンドGPUのようなモンスターチップへの実装を視野に入れたものと思われる。RC 18を概観すると、NVIDIAがチップ設計においてEDAツールベンダー頼みにするのでもなく、EDAベンダーと協力しながら効率化の道を探っていることがわかる。巨大で複雑なチップを、低い労力で設計可能にすることで、設計生産性を上げようというのがNVIDIAの方向だ。こうした試みは、設計にかかる時間の短縮や、製品バラエティを増やすことにつながる。

 このように、RC 18は設計フローや内部ネットワークなどさまざまな部分で実験が行なわれているが、その核となる部分は、マルチダイ実装にある。次の記事では、RC 18のコアの部分を説明したい。