マイクロアーキテクチャに関する論文を読んでいる。今回はIBM POWER7に関する論文。
戻って命令フェッチを見ていく。
命令フェッチ
- 命令キャッシュ : 32KB、4ウェイセットアソシアティブ
- 16ウェイバンク設計
- IEADIRを使用して、この中から4ウェイを選択する。
- IEADIR : 命令有効アドレスディレクトリ
- ウェイ選択の高速予測を行う。
- 64エントリ
- 命令アドレスのEA → RA変換 (IERAT)
- 最初の32エントリでスレッド0/2をサポート
- 以降の32エントリでスレッド1/3をサポート
- フル命令キャッシュディレクトリ : IDIR
- ウェイ選択の高速予測を行う。
- IFU : L2ユニファイドキャッシュからL1Iキャッシュに命令をフェッチする。
- 命令フェッチリクエストから、32バイトの4セクタのデータが返ってくる。
- デマンドフェッチ
- 命令プリフェッチ
- デマンドフェッチ要求に対して、2つのシーケンシャルキャッシュラインに対して、最大2つの追加L2プリフェッチを開始する。
- これらのフェッチは、4つのスレッドに対してそれぞれ独立に実行される。
命令がフェッチされると、L1Iキャッシュに命令が書き込まれる前に、プリデコードとパリティを作成する。
- 2サイクル消費する。
- 分岐命令のスキャン、グループ形成の支援
- 例外ケースの表示に使用される。
- 最終的にIキャッシュに書き込まれるのは3サイクル後
- その間に、IFUはキャッシュを迂回して命令バッファ(IBUF)と分岐スキャンロジックに命令を分配する。
IFAR : 命令フェッチアドレスレジスタ
- 各スレッドのプログラムカウンタアドレスを追跡している。