コデザインのやり方を図16に示す。まず、アプリケーションのカーネルを抽出して、それぞれのカーネルの実行時間を実行時間推定ツールを使って求める。そのやり方であるが、まず、(1)システムパラメタを設定し、(2)システムパラメタの条件でアプリケーションをチューニングする。(3)ツールを使って実行時間を評価し、(4)ハードウェアのボトルネックを見つけたら、システムパラメタを変更して(2)へ戻るというループを繰り返す。

なお、通信時間は通信パターンに基づく解析的モデルを使って実行時間を評価した。

  • 富岳

    図16 コデザインのやり方

コデザインで決めるパラメタとしては、

  • 基本的なアーキテクチャ(Feasibility studyで決定)
    • メニーコア、Out-of-order、SIMDなど
  • 命令アーキテクチャとSIMD命令
    • 富士通はArmと一緒にSVE命令を作った
  • チップの構成
    • CMG(Core Memory Group)のコア数、チップに載せるCMG数、コアとCMGの接続法、L1キャッシュの容量、Way数、スループット、L2キャッシュの容量など、オンチップネットワークの構造、チップサイズ、ノードに含むチップ数 など
  • キャッシュの構造
  • Out of order(O3)リソース
  • ターゲットアプリケーション向けの性能向上
  • ノード間のインタコネクト
  • SerDes、トポロジ(Tofuを使うか別のトポロジか)
  • 富岳

    図17 コデザインで決めるパラメタ

基本構成はFeasibility Studyの結果に基づいて決定した。

  • 決定すべきパラメタ
    • #CMG、#core/CMG、Network on Chip
    • MCMとインタポーザ(有機プリント板、シリコン、ガラス、……)
    • チップサイズはコストに影響する (図の右上のグラフ)
    • 性能はHPLのような簡単なカーネルの解析モデルで推定

構成案としては図18の下半分に描いたように、小さなプロセサチップとHybrid Memory Cube(Micronの3D積層メモリ、FX100で採用)、大きなプロセサチップとHMC、小さなプロセサチップとHBMをMCMに搭載、大きなプロセサチップとHBMなどの案を検討し、結果として、「大きなプロセサチップとHBM」に決定した。

  • 富岳

    図18 チップの構成(1/2)、大きなプロセサチップとHBMの構成を採用

富岳のアーキテクチャチームは、いくつかのCMGとインタコネクトのインタフェースやI/Oを接続するPCIeインタフェースを搭載するチップを作ることに決定した。このチップのサイズはおおよそ400mm2で、7nm FinFETプロセスで製造するときのコストも、まあ、妥当な範囲に収まると考えられる。

最近のAMDのEpyc CPUのようにMCMを使う事も考えられたが、

  • 小さなチップは歩留まりが良く、安く作れる
  • しかし、パッケージングのコストが高い
  • CPUとI/O、ネットワークで個別のチップを作る必要が出そうで、NRE(Non Recurring Engineering)費用が高くなりそう
  • MCM上のチップ間配線が電力消費を増やしてしまう

図19の右下の表は、チップ上のコア数とMCMの枚数を変えてコストを試算したもので、ここでは全体で64コアを搭載するとしている。この表では、64コアを1チップに載せる場合のコストを1.0とすると、例えば16コアのチップを4個を1つのパッケージに搭載すると全体コストは1.03と多少高くなる。その他の案はさらにコストアップが大きい。

ただし、AMDと富士通ではコスト構造が異なる。AMDの方が生産量が多いので、開発のNREは相対的に安くなる。また、AMDのI/Oチップは12nmという古いプロセスを使っており、チップコストも安いと思われ、MCMも安いプリント基板を使っているので、この検討から、AMDのアプローチが間違っているとは言えない。

  • 富岳

    図19 チップの構成。AMDのように複数チップに分割するとコストが高くなるので、1チップに全CPUとネットワークIF、PCIe IFを搭載することにした

(次回に続く)