FPGA開発日記

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

富岳のプロセッサA64FXのマイクロアーキテクチャマニュアルを読む(2. 命令フェッチ)

スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。

github.com

せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、資料を切り貼りしながらブログに乗せていくことにした。


  • 命令フェッチ・ステージの概略
    • L1Iキャッシュから命令をフェッチしてデコード・ステージに命令を供給する。
      • L1Iキャッシュ
      • L1-ITLB
      • 分岐予測機構
    • 読みだされた命令イメージのまInstruction Buffer(IBUFF)に保存される。

f:id:msyksphinz:20200323230326p:plain

  • 分岐予測機構
    • 分岐予測機構は、複数の分岐予測器から構成される。
      • Small Taken Chain Predictor (S-TCP)
        • Branch direction & Branch target address prediction
    • Branch Weight Table (BWT) / Loop Prediction Table (LPT) / Return Address Stack (RAS)
      • Branch direction prediction
    • Branch Target Buffer (BTB)
      • Branch target address prediction
    • Small Taken Chain Predictior(S-TCP) : Takenな分岐命令を検出して、実行チェインを検出する。
    • Loop Prebiction Table(LPT)
      • ローカル分岐ヒストリカウンタを用いて分岐の方向をほ良くする。
      • 8エントリを持つ。最大で8命令を保存できる。

f:id:msyksphinz:20200323230815p:plain

  • 分岐予測器
    • 分岐重みテーブル(Branch Weight Table)
      • グローバルヒストリレジスタ(Grobal History Register:GHR)の履歴と重みテーブルに基づいて予測を行う。

f:id:msyksphinz:20200323231807p:plain

  • 分岐ターゲットバッファ
    • 分岐のターゲットアドレスを持つ。4ウェイの2048エントリ。
  • リターンアドレススタック
    • 関数呼び出しからの戻りアドレスを保存する。
    • 8エントリのスタック

f:id:msyksphinz:20200323232148p:plain

  • 分岐予測の組み合わせ
    • 命令タイプに応じて分岐予測を使い分ける。

f:id:msyksphinz:20200323232300p:plain

  • ショート・ループ検出
    • 命令バッファ内でのループを検出できる。
    • IBUFFにはループブロックを入れることができる。IBUFFは48命令を含めることができる。

f:id:msyksphinz:20200323232451p:plain