次の図のように、右側に描かれた分散型の推論アクセラレータ16個がチップに搭載され、パッケージには36チップ搭載できる。各アクセラレータには8並列8レーンのベクタ演算器が入っているので、全部で64×16×36=36864個のMACがあることになる。
そして分散型のアクセラレータであるので、まず、重みをPEに分散し、入力をグローバルPEに入れRISC-Vでコントロールレジスタをセットしてストリーム入力を各PEに配る。そして、PEで演算を行い、結果をグローバルPEに格納する。
左上の計算を4個チップに分割して計算させる例である。チップ内でも右の図のように多数のPEに処理を分散させて計算している。
最終的にできたのは次の図のようなものである。中央の写真がMCMで36個のチップが載っている。右側の写真は1個のチップを拡大したものである。16個のPEの左にグローバルバッファとRISC-Vが置かれている。
そして、4つの角に2つずつ置かれているのがGRS信号の送信と受信部で、メッシュネットワークを構成する東西南北の送受信回路がある。上辺の中央はGPIO、可変の中央はJTAGとなっている。
そして、GRSの送受信は予定通り100Gbpsを達成し、コンピュートタイルは128TOPS、9.5TOPS/Wの効率を達成した。また、チップのコア部の面積は111.6mm2で、電源電圧は0.52~1.1Vで動作し、動作周波数は0.48~1.8GHzである。
そして、ターゲット仕様が決まってからテープアウトまでの設計期間は、10人以下のエンジニアで6カ月で行うことができた。これは驚異的に効率の高い設計である。
高効率設計を行うため、ハードウェア設計の抽象度を高めた。論理設計はVerilogではなくC++で記述した。そして、C++の設計からハイレベル合成ツールで論理合成を行った。また、既存のライブラリの利用やジェネレータを使用して設計作業を低減した。
そして、小さな設計チームでアーキテクチャから実装、VLSI設計までを行った。並行して、継続的に自動化したツールフローの組み込みを行った。さらに、アジャイルなプロジェクトマネジメント技法を使うことにより、C++の設計からレイアウトまで24時間で行えるようになった。
次の図は、自動運転のDRIVENETが弱スケール(ハードウェアの性能向上に比例して仕事も増やした場合は実行時間は一定になる)するかを調べたもので、左の図は、チップ数を1、4、32と変え、バッチ数はチップ数に比例して増やした場合のスループットを示している。オレンジ色の折れ線グラフはレーテンシを示しており、チップ数が増えるとわずかにレーテンシが増えるものの、ほぼ一定であり、弱スケールしているといえる。
右の図は、各コアの消費エネルギーをプロットしたもので、青で示したコアエネルギーは若干の増加で、弱スケールしているといえる。一方、オレンジ色で示したGRS部分のエネルギーはチップ数が増えると増加しているが、これはクロックゲーティングを改良することで改善できるとのことである。
ResNet-50でのイメージ認識の場合は、32チップを使うとレーテンシは約1/12となっており、1/32とはかなり差があるが、まあ、強スケール(ハードウェア性能をn倍にすると、同じ仕事をする時間が1/nになる)に近い性能改善が得られている。完全な強スケールにならない主因はチップ数が増えると通信オーバヘッドが増えるためであるとのことである。
まとめであるが、NVResearchのテストチップは、スケーラブルな推論アクセラレータで、MCMを使うことにより、異なる市場向けの推論エンジンが作れることを示した。1パッケージに36チップを搭載し、ResNet-50で2.5Kイメージ/秒のスループットとバッチ=1で 0.4msのレーテンシを達成した。高効率設計では、ASICの設計と検証の工数を1/10に削減し、製品の市場投入期間を短縮し、あるいはより多くの機能をチップに盛り込むことを可能にした。
なお、最高性能は1パッケージで128TOPSと書かれているが、2019年のVLSIシンポジウムの論文を見ると、この性能を出すには限界まで電源を上げてクロックを最高にする必要があり、実用的なところは100TOPS程度が最大と思われる。
(次回は10月1日に掲載します)