FPGA開発日記

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

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

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

ieeexplore.ieee.org

先に興味のあるデータアクセス用のLSUについて読んでいく。


データフェッチユニット

  • LSUはLS0とLS1の対称な実行パイプラインを持っている。1サイクルでロード・ストア動作を実行することが可能。
  • 図6は、LSUパイプラインのマイクロアーキテクチャを示している。
    • LS AGEN
    • Execute
    • SRQ (Store Request Queue)
    • SDQ (Store Data Queue)
    • LRQ (Load Request QUeue)
    • LMQ (Load Miss Queue)
    • D-ERAT
    • ERATミスキュー
    • SLB (Segment Lookaside Buffer)
    • TLB / MMU
    • L1Dキャッシュアレイ
    • データディレクトリ(DDIR)
    • Data Prefetch Request Queue (PRQ)
図は本論文より引用

LS実行

  • STモードとSMT2モードでは、LS命令はどちらのパイプラインでも実行できる。
    • SMT4モードでは、スレッド0/1の命令はパイプライン0で実行され、スレッド2/3の命令はパイプライン1で実行される。
  • LSUへの命令は順番に発行され、古い命令から優先的に発行される。
  • ストア命令は2回発行される。
    • AGENはLSUに発行される
    • データステアリング操作はFXUおよびVSUに発行される
  • LSUの入出力のデータフローバスの構成
    • L2キャッシュからのリロードデータ(32バイト)
    • L2キャッシュへのストアデータ(16バイト)
    • VSUへの実行パイプライン毎の全体で16バイトのロードデータ
    • VSUから16バイトのストアデータ
    • FXUからの実行パイプライン毎の8バイトストアデータ
  • L1 DCacheサイズは32KBである。
    • データキャッシュアクセスによるロードユースは2サイクル。

LSの順序付け

  • LSUはプログラムの順序の効果を保証する必要があるため、SRQとLRQという2つのメインキューを搭載している。
  • SRQ : 32エントリのCAM (Content Addressable Memory)である。
    • 各スレッドは64エントリの仮想エントリを持っている。
    • SRQエントリは発行時に割り当てられる。
    • SRQエントリには、16バイトの対応するSDQエントリが存在している。
    • ストア命令用の最大16バイトのデータをL2キャッシュに払い出すことができる。
      • ヒットした場合にはL1Dキャッシュにも書き込まれる。つまりライトスルーモード。
    • ストアフォワーディングをサポートしている。
      • SRQエントリからのデータは、ロード命令に対してフォワードされる。
  • LRQ : 32エントリのCAM (Content Addressable Memory)である。
    • 各スレッドは64エントリの仮想エントリを持っている。
    • LRQは順不同のロードを追跡し、ハザードを監視する。
      • 若いロード命令が同じアドレスへの古いロード命令やストア命令の前に実行された場合。
      • LRQは若いロード命令とそれに続くすべての命令をフラッシュすることができる。