VPUの構造
VPUはFMA0、FMA1、ALU0/FMA2、ALU1/Storeを実行する4本のパイプラインを持っており、各パイプラインは32並列の演算ができるので、FMA0、FMA1、FMA2の3本のパイプラインを使えば、毎サイクル96個のFMA演算を行うことができる。これはFP64の場合であるが、FP32であれば、レジスタを半分ずつに分割して192FMAを行うことができる。
アーキテクチャ的にはベクタレジスタの個数は64本であるが、物理的には256本のベクタレジスタを持ち、Out-of-Order実行のためのリネームを行っている。
また、ベクタの和、割り算、1の数を数えるpopulation countなどの命令を実行するComplex Operationパイプラインを設けて、これらのオペレーションがメインのパイプラインを止めてしまうことがないようになっている。
次の図にSPUのブロックダイヤを示す。SPUは毎サイクル4命令をフェッチ、デコードして実行するOut-of-Orderプロセサである。実行ユニットとしてベクタ命令の発行パイプラインを持っているところが特別であるが、それ以外の4本の実行パイプラインは一般的なものである。 そして、32KBの1次命令キャッシュ、32KBの1次データキャッシュと256KBの共通2次キャッシュを持っている。
次の図はメモリサブシステムのブロックダイヤである。図の上側にベクタエンジンのコアが並び、そこから409.6GB/sのバンド幅を持つ、ロード側とストア側のポートが出ており、それがチップ全体を接続する2次元メッシュのNoC(Network on Chip)に繋がっている。NoCの反対側は8個の2MBのLLCに接続されている。LLCのメモリバンド幅は3TB/sを超える。
LLCから2つのメモリコントローラを経由して、6個のHBM2メモリに接続されており、HBM2メモリのバンド幅は1.2TB/sに達する。VE全体では、2.458TFlopsの演算性能に対して1.2TB/sのメモリバンド幅であるので、B/Fは0.488Byte/Flopsとなっている。
また、2MBのLLCは双方向のリングバスでDMAエンジンに繋がれている。リングバスのバンド幅は16GB/s×2である。DMAエンジンは、VEのメモリだけでなく、VEのレジスタやx86のメモリにもアクセスできるようになっている。
LLCは16MBのWrite Back方式のメモリサイドキャッシュである。そして、定期的にLLCの内容を読み出してECCでエラー訂正を行うスクラビングで1ビットエラーが蓄積して複数ビットエラーになるのを防いでいる。
次の図は、メモリバンド幅を測定するStream Triadと、行列積の演算性能を測定するDGEMMの性能をSX-Aurora TSUBASA、Xeon Gold 6142 2PとNVIDIAのTesla V100の3つのプロセサで測定した結果を示すものである。メモリバンド幅は、SX-Aurora TSUBASAがXeonの5.5倍、V100が4.5倍程度で、SX-Aurora TSUBASAがトップである。この結果はSX-Aurora TSUBASAが6個のHBM2を使っているのに対して、V100は4個のHBM2であるので納得できる結果である。
また、バンド幅/WでもSX-Aurora TSUBASAがV100より高い効率を示している。これはVEの消費電力がV100 GPUより低いからではないかと思われる。
一方、DGEMMではSX-Aurora TSUBASAはXeonの1.2倍程度の性能であり、V100が3.5程度であるのに比べて性能が低い。これはV100の方がピークFlopsが高いことが効いているのではないかと思われる。一方、Perf/WではSX-Aurora TSUBASAやV100は高い効率を示している。これは演算性能の割に消費電力が低いためと思われる。
この結果だけでは、SX-Aurora TSUBASAはV100に勝てるとは言えないが、SX-Aurora TSUBASAは16nmプロセスで495mm2のチップであるのに対して、V100は12nmプロセスで815mm2と大きなチップであり、コスト的にはSX-Aurora TSUBASAの方がかなり安いと発表スライドでは主張している。
次の図は、SX-Aurora TSUBASAとXeon Gold 6142 2Pのマシンラーニングの性能の比較を示す棒グラフである。SX-Aurora TSUBASAの方はNECのFrovedisというフレームワークを使い、Xeonの方は業界で広く使われているSparkを使っている。
Web広告の最適化を行うLRでは、SX-Aurora TSUBASAは107.6倍、類似のドキュメントを集めるクラスタリングでは52.3倍、アドバイスを与えるSVDでは39.4倍という圧倒的な性能という結果である。あまりに性能差が大きいので、その原因を百瀬氏に問い合わせたところ、Frovedisは前処理で疎行列のデータを並べ替えてベクタ長を長くしてベクタ演算の効率を高めており、スカラプロセサであるXeonと比べて非常に高い性能が得られているということであった。
まとめであるが、SX-Aurora TSUBASAはAuroraアーキテクチャに基づく新しいスパコンの製品ラインである。従来のように独自のプロセサを作るのではなく、x86/Linuxの環境にベクタ処理を付加した形になっている。
SX-Aurora TSUBASAのベクタエンジンは6個のHBM2メモリを使うことにより高いメモリバンド幅を実現している。そしてAuroraアーキテクチャは、いろいろな環境で高い性能を発揮し、高いエネルギー効率となるよう改良が行われている。
SX-Aurora TSUBASAは、(ベクタプロセサを意識しなくても)標準のプログラミングパラダイムで、性能、電力効率ともにGPUなどの他のプロセサと十分競争力のある性能が得られる。また、統計的マシンラーニングのワークロードにSX-Aurora TSUBASAとNECのFrovedisフレームワークを使うと、非常に高い性能が得られる。
チップサイズの比較はともかく、NVIDIAのV100を16個搭載するDGX-2は約40万ドルで、V100 1個当たり250万円程度である。これに対して、SX-Aurora TSUBASAは、NECの発表では1VEのA100が170万円~、64VEのA500が1億2000万円~となっており、VE 1個あたり200万円弱である。これだけを見ると、NECの方が2割程度安いことになる。
しかし、これはいわゆる定価であり、実際のビジネスでは、これからどれだけ値引きされるのかは分からない。 Post-K(ポスト「京」)のような国家プロジェクトの無いNECがスパコンを開発するのは大変であるが、SX-Aurora TSUBASAはx86サーバにベクタエンジンを付けるという面白い切り口で挑んでいる。成功を祈る。