前々から勉強のために翻訳している、"Understanding the detailed Architecture of AMD's 64bit Core"の第3章「Opteron's Data Cache and Load/Store Unit」をとりあえず翻訳完了した。
かなり誤訳とか、分かりにくいところがあると思うが、そこはボチボチ直していこう。
本章は、メモリアクセスのためのデータキャッシュ、ロードストアユニット(Load Store Unit: LSU)についての解説がある。
http://chip-architect.com/news/2003_09_21_Detailed_Architecture_of_AMDs_64bit_Core.html#3
- 3.1 データキャッシュ: 64kBのデータ容量、データロードに3サイクルレイテンシ
- 3.2 1サイクルあたり2つの読み込みまたは書き込み発行: 8-wayバンクインターリーブ、2-wayセットアソシアティブ
- 3.3 データキャッシュヒット/ミス検出: キャッシュタグとprimairy TLB
- 3.4 512エントリのセカンドレベルTLB
- 3.5 エラーコードと訂正
- 3.6 ロードストアユニット: LS1とLS2
- 3.7 「プリキャッシュド」ロードストアユニット: LS1
- 3.8 LS2へのロード: キャッシュプローブレスポンス
- 3.9 「ポストキャッシュド」ロードストアユニット: LS2
- 3.10 ロードーストアユニット内での命令リタイアと例外処理
- 3.11 ストアフォワーディングとロードフォワーディング、依存リンクファイル
- 3.12 自己変更コードチェック: L1 DcacheとL1 Icacheの相互排他処理
- 3.13 マルチプロセッサにおけるデッドロックの処理: Exponential back-off
- 3.14 マルチプロセッシングとマルチスレッドにおける改善
- 3.15 アドレススペースナンバ(ASN)とグローバルフラグ
- 3.16 TLBフラッシュフィルタ: CAM
- 3.17 データキャッシュスヌープインタフェース
- 3.18 キャッシュコヒーレンシのためのデータキャッシュ: MOESIプロトコル
- 3.19 キャッシュコヒーレンシのためのデータキャッシュ: スヌープタグRAM
- 3.20 L1データキャッシュのスヌーピングとLS2のアウトスタンディングストア
- 3.21 共有メモリにおける厳密なメモリオーダリングのためのLS2スヌーピング
- 3.22 TLBフラッシュフィルタCAMでのスヌーピング
Opteronにおける基本的なメモリアクセスに必要なサイクル数、さらにデータキャッシュの考え方と、マルチプロセッサにおけるスヌーピングの方法が書いてある。 スヌーピングについては、以前資料にまとめておいたので、問題なく読み進めることができた。
www.slideshare.net
メモリアクセスでは、キャッシュを利用してロードストアレイテンシを削減しなければならないのはもちろん、メモリアクセスにより発生する例外をサポートするために、特にストア処理については、投機的に実行するだけでなく、コミットが確定してからメモリアクセスを実行する必要がある。このあたりの処理についても、詳細に説明がなされていた。
第4章は、命令キャッシュについての解説だ。ここまで行ければ、とりあえずこの文章の翻訳プロジェクトは一旦終了としたい。