マイクロアーキテクチャに関する論文を読んでいる。今回はIBM POWER7に関する論文。
先に興味のあるデータアクセス用のLSUについて読んでいく。
データフェッチユニット
- LSUはLS0とLS1の対称な実行パイプラインを持っている。1サイクルでロード・ストア動作を実行することが可能。
- 図6は、LSUパイプラインのマイクロアーキテクチャを示している。
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)である。
- LRQ : 32エントリのCAM (Content Addressable Memory)である。
- 各スレッドは64エントリの仮想エントリを持っている。
- LRQは順不同のロードを追跡し、ハザードを監視する。
- 若いロード命令が同じアドレスへの古いロード命令やストア命令の前に実行された場合。
- LRQは若いロード命令とそれに続くすべての命令をフラッシュすることができる。