FPGA開発日記

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

IBM POWER7の論文を読む (4. 命令フェッチ)

マイクロアーキテクチャに関する論文を読んでいる。今回はIBM POWER7に関する論文。

ieeexplore.ieee.org

戻って命令フェッチを見ていく。


命令フェッチ

  • 命令キャッシュ : 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 : 命令フェッチアドレスレジスタ

    • 各スレッドのプログラムカウンタアドレスを追跡している。