FPGA開発日記

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

IBM POWER7の論文を読む (3. LSUの概要2)

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

ieeexplore.ieee.org

LSUの続き。


アドレス変換

  • EA (Effective Address) : 有効アドレス。64-bit
  • RA (Real Address) : 実アドレス : 46-bit
  • 第1レベル変換
    • EAからRAへ変換する。
    • D-ERATキャッシュ : 64エントリx2
    • IERATキャッシュ : 64エントリ
  • ERATにキャッシュミスが発生した場合、第2レベルの変換が呼び出され、変換が生成される。
    • SLBキャッシュ : 32エントリ
    • TLB : 512エントリ

L1Dキャッシュの構成

  • L1Dキャッシュの構成 32KB 8ウェイ セットアソシアティブ バンク型
    • キャッシュラインサイズ : 128バイト (1024-bit)
      • 32バイトの4セクタ
      • L2キャッシュからの32バイトサイズの専用リロードインタフェースが入っている。
      • 1クロック毎に32バイトのデータを供給可能
    • 2リードポート (ロード命令用)
    • 1ライトポート (ストア命令用 / キャッシュラインのリロード用)
    • 書き込みは読み込みよりも遊園度が高い
    • データバイト毎に編成された4つの物理マクロから構成されている
      • EAビットを基準に16個のバンクに分割されている。
      • 合計64バンク
      • 書き込みと同じバンクに読み込まない限り、同じサイクルで1回の書き込みと2回の読み出しが可能
    • ライトスルー設計
      • 書き込みはすべてL2キャッシュに送られる。L1Dキャッシュの掃き出しは必要ない
    • L1DキャッシュはEAビットでインデックスされる
    • バイナリツリーのLRU置き換えポリシで置き換えられる
    • 1セットあたり4kBととなる。
  • ロード命令の実行
    • 生成されたEA (52:56)がSet Predict Arrayのインデックスとして使用される
    • EA (33:51)はハッシュ化され、8つのエントリの集合の内容と比較される。
    • ハッシュの一致を確認した後、L1Dキャッシュから実アドレスを取得して、比較を行って始めてキャッシュヒットが確定する。

ロードミスハンドリング

  • L1Dキャッシュミスが発生したロード命令は、L2キャッシュへのキャッシュライン再ロード要求を行う。
  • この再発行キューのエントリを開放する
  • L1Dキャッシュへのキャッシュラインのロードを追跡するために、LMQにエントリが作成させる。
  • L2キャッシュからリロードデータが戻ってくると、LSUパイプライン上でより高い優先度で再実行される。
  • LMQは、最大2つのロード命令を与えられたLMQエントリとキャッシュラインの再ロード要求に関連できるロードマージをサポートしている。