ポスト「京」のプロセッサ「A64FX」はArmベースながら異彩放つ重厚系

これまで4回に渡り「Arm最新動向」として、2018年10月に米国で開催されたArmの年次イベント「Arm TechCon 2018」であったさまざまな話題をご紹介してきた。今回の5回目では、締めくくりとして、富士通というか、東京工業大学 教授 兼 理化学研究所 計算科学研究センター長である松岡聡氏による、次世代スーパーコンピュータのポスト「京」(Post-K)に向けたプロセッサ「A64FX」の話を取り上げようと思う。

「Cortex-Aシリーズ」などのArmのIPを使わずに、アーキテクチャライセンスを取得して独自のアーキテクチャを構築している半導体ベンダーは幾つか存在するが、Arm TechCon 2018では富士通のA64FXと、あとは設立されたばかりのAmpere Computingによる「eMAG」というプロセッサの2つのみがセッションとして取り上げられていた。ところが、あいにくAmpere Computingの方は、ぎりぎり顧客向けの製品出荷が開始されるかどうかという微妙なタイミング(正式な出荷開始は2018年10月11日)だったこともあってかアーキテクチャの説明などは一切なく、エコシステム向けのソリューションの概略を説明するにとどまったためあまり有益な情報とはいえなかった。

これに対して、松岡氏によるA64FXの説明は、その大半が2018年8月に行われた「HotChips 30」で公開された内容と同じではあるものの、幾つか情報のアップデートが示されたので、この辺りをまとめてご紹介したいと思う。ちなみに筆者は、この原稿を2019年4月17日に書いているのだが、同年4月17~18日には横浜で「Cool Chips 22」が開催されており、2日目の4月18日の最後で、富士通の山村周史氏による「A64FX High Performance Processor Architecture and its Design Challenges」という招待講演が行われることになっている。おそらくは、Arm TechCon 2018における情報をもう少しアップデートしたものが出てくると思われるが、この記事はそのための予習と考えていただければいいかもしれない。

まずはA64FXのタイムラインから。当初は、2019年の第2四半期あたりで設計と実装(Design and Implementation)のフェーズが完了し、その後量産やインストールを2020年いっぱいかけて実施。2021年から、ポスト京の運用が順次開始されるという予定だった。ただし実際には、2019年4月15日に開発を完了、製造を開始することがアナウンスされており、若干ではあるがスケジュールは前倒しになり、開発も順調に完了したことを伺わせる。

そのA64FXの設計目標は、とにかく性能やスループットもさることながら、高効率を狙った構成になっており、これをArmのアーキテクチャ「Arm v8.2A」で実現する、ということで国外からも(導入するかしないかはともかくとして)注目を集めている。そのA64FXのパッケージ構成がこちら。13コア(これらのうち演算には12コアを利用)のCMG(Core Memory Group)×4と、CMG間をつなぐネットワーク、それとTofuD/PCIeのコントローラーが1つのダイにつながり、さらにHBM2が4つつながる構成である。製造はTSMCの7nm FinFETプロセスを用い、トランジスタ数は87.9億個に達している。

さて、肝心のパイプライン構造だが、このスライドにもあるように、基本は「京」に採用された「SPARC64」のものをそのまま利用しつつ、フロントエンドのみArm命令に置き換えた形である。これは、富士通の基本的な方針であって、実際に富士通ジャーナルでも、メインフレームやUNIXサーバ、HPC向けでもマイクロアーキテクチャは共通であることを明言している。実際、SPARC64からの拡張は、512ビットのSVE(Scalable Vector Extensions) SIMD(Single Instruction/Multiple Data)エンジン×2を取り扱う部分と、当然こうなると扱うべきデータ量が128バイト/サイクルまで増えることになるため、L1データキャッシュ周りの拡張と、あとはHBM2/TofuDへの対応といった部分が変更点であり、逆に言えばそれ以外はほとんど差が無い形である。

AIやディープニューラルネットワークの処理も念頭に置く

そのSVEであるが、FMA(Fused Multiply-Add)命令を実行しようとすると、本来は4オペランドのものを3オペランドで表現する必要があり、この結果、MOVPRFXとFMA3の2つの命令でFMA4を表現する形になっている。これをプレデコード(Pre-Decode)の段階で1命令として処理することで、FMAを1サイクルで処理可能にしている。こうした工夫もあり、このSIMDを使った場合の性能は、富士通の従来のSPARC系列に比べて大幅に性能が改善している。

またA64FXでは、当初からAI(人工知能)やプレデコードを要するディープニューラルネットワークの処理を念頭に置いて8/16/32ビットの整数もサポートしており、これもあって特に8ビットの処理では20TOPS(1秒当たり20兆回の演算が可能)を超える性能を発揮できるとされる。これを支える仕組みの1つが、L1データキャッシュに搭載されるCombined Gatherである。SIMD演算の場合、必ずしも必要なデータがキャッシュライン内に配されているとは限らず、キャッシュラインをまたいでデータをアクセスする必要があることも多い。この際に、2つのキャッシュラインを同時にアクセスすることで、キャッシュラインをまたいでも64バイト/サイクルのスループットを実現できるという仕組みである。

CMGの概略がこちらである。先述した通り、13コアのうち1コアはI/Oなど向けで、残り12コアが演算処理を担う。このCMGが4つ、オンチップネットワーク経由で接続されトータルで48コア(+4コア)の構成になる形だ。そのCMG内の帯域をまとめたのがこちら。L1キャッシュレベルでB/F比(Bytes/Flops比)が4、L2でも1.3という高い数字を示しているのが特徴的だ。さすがにHBM2まで行くと0.37まで落ちるので、プログラム側での最適化の配慮は必要だが、高いB/F比が要求されるアプリケーションでも性能を出す、という目的に沿った構成になっているのが分かる。

ちなみにその性能について言えば、HPC向けでどんな技術がどの分野に貢献しているかをまとめたのがこちら。性能比較のベースラインとなっているのが「SPARC64 XIfx」である。取りあえず一番効くのが512ビットSIMD、というこれはまぁ当然な話ではあるのだが。

インターコネクト「Tofu」も進化

さて、ここまでのスライドはHotChips 30と共通だったが、ここからアップデートを。2018年10月の時点で既にA0サンプルのA64FXが稼働しており、それを利用しての実測値がこちらである。動作周波数は明らかにされていないが、DPで2.764T/3.072TFLOPSという数字からすると1.8G/2GHz駆動と考えられる。もとになったSPARC XIfxは20nmプロセスで2.2GHz駆動だったから、これに比べるとやや低めではあるが、そもそもA0サンプルということを考えれば、これでも十分な速度といえる。また、そもそも高密度に実装されることを考えると、あまり消費電力は増やしたくないわけで、それもあって低めに抑えられている可能性もある。

省電力関連で言えば、常に消費電力を監視しながら電力制御を行う仕組みは当然に入っている訳だが、消費電力を絞る方法として、従来のクロックゲーティングやパワーゲーティングに加え、デコード帯域を絞ったり、利用可能な実行ユニットを制限したりというパワーノブ(Power Knob)という方式も実装されていることが明らかにされた。

このA64FXプロセッサは1つのCMU(CPU Memory Unit)に2つずつ搭載され、このCMUを8枚搭載したBoB(Bunch of Brades)を3組まとめたシェルフを、1つのラックに8つ搭載する予定になっている。つまり、1ラックで384ノード、18432コアが実装される形となる。

最後に「Tofu」関連について。富士通は「京」の立ち上げの際に、初代のTofu(Torus Fusion)というインターコネクトを採用したが、SPARC64 XIfx(Tofu2)を経てA64FXにも引き継がれており、こちらも「TofuD」に進化している。このTofuDで8バイトのデータを送る際のレイテンシ(遅延時間)を比較したのがこちら。大規模システムの場合、このインターコネクトのレイテンシが性能に与えるインパクトはかなりシビアなもので、少数のノードで動かすとベンチマークプログラムである「Linpack」の効率が80%超えなのに、同じシステムを大規模ノードに拡張したら50%程度まで落ちた、なんて話は珍しくもない。

その理由は、ノード間の通信に時間がかかり過ぎるからで、これを最小限に抑えるためにもこのレイテンシ削減は大きな意味がある。もちろん帯域そのものも確実に広がっており、これで性能改善(というか性能劣化防止)に努めているという話である。

ということで、駆け足でA64FXの特徴をご紹介してきた。何というか、内部構造はArmのプロセッサというよりは富士通の従来の構造そのままで、むしろArmであることに違和感を覚えそうなほどだが、もう最近のプロセッサは(それこそx86はとっくにそうだし、IBMもZ系列なんかは特にそうだが)対応する命令セットと内部の構造にはあまり関係が無い(デコード段で命令変換を掛けてしまうので、それこそVILW(Very Long Instruction Word)でもない限り、大体処理できる)ことを端的に示しているといえる。

Armのコアがそもそも省電力向けを身上としており、Cortex-A76でもまだ例えばIntelの「Skylake」などに比べるとやや軽めに見えるのに対し、A64FXは明らかに重厚系のコアであって、会場でもちょっと異彩を放っていた感はあった。