FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

RISC-Vの高性能アウト・オブ・オーダCPU XiangShanについての資料を読む (3. Microarchitecture Design and Implemenation)

HPCA2024で開催された、RISC-Vのアウト・オブ・オーダCPU XiangShanについての資料が公開されていたので、読んでみることにした。 じっくり読みたいので、1ページずつ要点を抑えていく。

次は、マイクロアーキテクチャのトピックについて。

xiangshan-doc.readthedocs.io


XiangShanには3つの世代がある。

  • YQH : 28nm でテープアウトし1.3GHz。性能的にはSPEC CPU2006 7.01 @1GHz
  • NH : 14nmでテープアウトし2.0GHz。性能的にはSPEC CPU2006 20 @2GHz
  • KMH : Vector拡張とハイパーバイザー拡張を実装。
  • まずは第1世代のYQHについて。
    • 11ステージの6命令デコード・リネーム
    • TAGE-SC-Lの分岐予測器を実装
    • 整数物理レジスタ160エントリ、浮動小数点物理レジスタ160エントリ
    • 192エントリのROB、64エントリのLQ、48エントリのSQ
    • 各機能ユニットには16エントリのRS
    • 16KBのL1命令キャッシュ、128KBのL1plus命令キャッシュ
    • 32KBのL1データキャッシュ
    • 32エントリのITLB / DTLB, 4KエントリのSTLB
    • 1MBのインクルーシブ・L2キャッシュ
  • YQHのマイクロアーキテクチャ(パイプライン)
    • ディスパッチするときにレジスタを読むスタイル。14Read / 8Write
    • 最大コミット数は6命令/1サイクル
  • 第2世代、NHのアーキテクチャ
    • 整数物理レジスタ196エントリ、浮動小数点物理レジスタ192エントリに増強
    • ROBは256エントリに増強、80エントリのLQ、64エントリのSQに増強
    • 算術演算ユニットは各32エントリのRS
    • 64KBのL1命令キャッシュ
    • 64KBのL1データキャッシュ
    • 80エントリのDTLB、32エントリのITLB、2KエントリのSTLB
    • 1MBのノン・インクルーシブL2キャッシュ
    • 6MBのノン・インクルーシブL3キャッシュ
  • NHのフロントエンド
    • フロントエンドをProducerとConsumerに分離。
      • Producer : 分岐予測ユニット
      • Consumer : 命令フェッチユニット
  • 分岐予測について
    • 3ステージの分岐予測
      • ステージ1: uBTB
      • ステージ2: FTB + TAGE (FTB : Fetch Target Bufferのこと)
      • ステージ3: SC + ITAGE + RAS (SCは良く分からないが、Statistical Correctorのこと?)
  • 命令キャッシュ
    • 64KBの4-way VIPTブロッキングキャッシュ
    • TileLinkをサポート
    • PLRUのリプレースメント