FPGA開発日記

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

Understanding the detailed Architecture of AMD's 64bit Core "Chapter-3: Opteron's Data Cache and Load/Store Unit"の翻訳が完了

f:id:msyksphinz:20160524232435p:plain

前々から勉強のために翻訳している、"Understanding the detailed Architecture of AMD's 64bit Core"の第3章「Opteron's Data Cache and Load/Store Unit」をとりあえず翻訳完了した。

かなり誤訳とか、分かりにくいところがあると思うが、そこはボチボチ直していこう。

本章は、メモリアクセスのためのデータキャッシュ、ロードストアユニット(Load Store Unit: LSU)についての解説がある。

github.com

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章は、命令キャッシュについての解説だ。ここまで行ければ、とりあえずこの文章の翻訳プロジェクトは一旦終了としたい。