スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。
せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、資料を切り貼りしながらブログに乗せていくことにした。
- 命令フェッチ・ステージの概略
- L1Iキャッシュから命令をフェッチしてデコード・ステージに命令を供給する。
- L1Iキャッシュ
- L1-ITLB
- 分岐予測機構
- 読みだされた命令イメージのまInstruction Buffer(IBUFF)に保存される。
- L1Iキャッシュから命令をフェッチしてデコード・ステージに命令を供給する。
- 分岐予測機構
- 分岐予測機構は、複数の分岐予測器から構成される。
- Small Taken Chain Predictor (S-TCP)
- Branch direction & Branch target address prediction
- Small Taken Chain Predictor (S-TCP)
- 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命令を保存できる。
- 分岐予測機構は、複数の分岐予測器から構成される。
- 分岐ターゲットバッファ
- 分岐のターゲットアドレスを持つ。4ウェイの2048エントリ。
- リターンアドレススタック
- 関数呼び出しからの戻りアドレスを保存する。
- 8エントリのスタック
- 分岐予測の組み合わせ
- 命令タイプに応じて分岐予測を使い分ける。
- ショート・ループ検出
- 命令バッファ内でのループを検出できる。
- IBUFFにはループブロックを入れることができる。IBUFFは48命令を含めることができる。