300 likes | 563 Views
3 次元積層 SRAM/DRAM ハイブリッド・キャッシュ. ○橋口慎哉 † (現 ‡ ) 福本尚人 † 井上 弘士 † 村上和 彰 † † 九州大学 ‡ 富士通株式会社. 発表手順. 3 次元積層技術と DRAM スタック法 研究 目的 SRAM/DRAM ハイブリッド・キャッシュ 評価実験 まとめと今後の課題. 研究背景. 3 次元積層技術 グローバル配線長の削減、チップ面積縮小 異なるプロセスを経て製造されたダイ同士の積層 プロセッサ・ダイと DRAM ダイを積層することによりオンチップ・メモリの大容量化を実現可能 →メモリウォール問題の解決策.
E N D
3次元積層SRAM/DRAMハイブリッド・キャッシュ ○橋口慎哉†(現‡) 福本尚人† 井上弘士† 村上和彰† †九州大学 ‡富士通株式会社
発表手順 • 3次元積層技術とDRAMスタック法 • 研究目的 • SRAM/DRAMハイブリッド・キャッシュ • 評価実験 • まとめと今後の課題
研究背景 • 3次元積層技術 • グローバル配線長の削減、チップ面積縮小 • 異なるプロセスを経て製造されたダイ同士の積層 • プロセッサ・ダイとDRAMダイを積層することによりオンチップ・メモリの大容量化を実現可能 →メモリウォール問題の解決策 TSV(Through SiliconVias) 出典:米インテル社
DRAMスタック法 • DRAMスタック法[1] • 従来の2次元実装プロセッサ(ベースプロセッサ)上に大容量DRAMキャッシュを積層 • 下層SRAMをタグ格納領域として利用 64MB L2 (DRAM) Core(s) + L1(s) 4MB Tag (SRAM) Core(s) + L1(s) 4MB L2 (SRAM) ベースプロセッサ(2次元実装) DRAMスタック法(3次元積層) L1キャッシュのアクセス時間[cc] L1キャッシュ ミスの割合 L2キャッシュのアクセス時間[cc] L2キャッシュ ミスの割合 平均メモリアクセス時間[cc] 主記憶の アクセス時間[cc] プログラムによっては性能低下の可能性 [1]Bryan Black et al. “Die Stacking (3D) Architecture,”International Symposium on Microarchitecture,2006
プログラム間のミス率削減率の違い • プログラム間でミス率削減率が異なる →プログラムによってはDRAMスタック法の導入で性能低下 LU 削減量小 削減量小 FMM FFT Ocean Ocean 削減量大 削減量大 Cholesky Barnes Cholesky 性能向上率 WaterSpatial 3.0 Raytrace 2.5 性能 向上 2.0 1.5 1.0 性能 低下 0.5 0 0 50 100 100 80 60 150 40 L2キャッシュ アクセス時間の増加 20 0 200 L2キャッシュミス率の削減率 [points] [cc]
プログラム実行中のミス率削減効果の違い Ocean 適したキャッシュ容量:大 (181cc) L1ミスペナルティ=HTL2+MRL2×MMAT 適したキャッシュ容量:小
研究のねらい • 着眼点 • 大容量DRAMキャッシュの活用により必ずしも性能が向上するとは限らない • 適したキャッシュ容量はプログラム間、ならびにプログラム内で変化 • 研究目的 • DRAMスタック法の問題点を解決したメモリ・アーキテクチャの提案と評価 • 「大容量かつ低速キャッシュ」ならびに「小容量かつ高速キャッシュ」を同一アーキテクチャで実現
SRAM/DRAM ハイブリッド・キャッシュ • 異なる2種類の動作モードをプログラムのメモリ参照の特性に応じてプログラム実行中に自動で切り替える 未使用 L2 Cache (DRAM) L2 Cache (SRAM) L2 Tag (SRAM) Core(s) + L1(s) Core(s) + L1(s) 切り替え SRAMキャッシュモード (高速・小容量L2キャッシュ) DRAMキャッシュモード (低速・大容量L2キャッシュ) DRAM Core(s) + L1(s) SRAM
タグ情報のマッピング タグ SRAMキャッシュモード時のデータ格納場所 タグ デコーダ SRAMキャッシュモード時のタグ格納場所 1 Way 1 Way 2ウェイ・セットアソシアティブ SRAMキャッシュ 2ウェイ・セットアソシアティブ DRAMキャッシュ L2 Cache L2 Tag Core(s) + L1(s)
通常のキャッシュ構成 64ビットアドレス(物理アドレス) インデックスフィールド タグフィールド オフセットフィールド 下層SARM(容量: ラインサイズ: 連想度: ) デコーダ . . . = = MUX1 Data (SRAM) Hit/Miss (SRAM)
ハードウェア・サポート 64ビットアドレス(物理アドレス) インデックスフィールド タグフィールド オフセットフィールド 下層SARM(容量: ラインサイズ: 連想度: ) デコーダ 上層DARM(容量: ラインサイズ: 連想度: ) = = 追加HW MUX2 MUX1 . . . = = Data (SRAM) 追加HW MUX3 追加HW 追加HW 追加HW Hit/Miss (SRAM) Data (DRAM) Hit/Miss (DRAM)
動作モード決定法 一定L2アクセス 以下の判定式を基に実行中の区間における適切な動作モードを求め、それを次区間の動作モードに設定 DRAMキャッシュモード SRAMキャッシュモード 動作モードを 決定したい区間 現在実行中の区間 実行中に同時に得る必要がある →ハードウェア・サポートによるミス率推測 ハードウェア依存で既知 :SRAM/DRAMキャッシュのミスの割合 プログラムの実行 :SRAM/DRAMキャッシュ、主記憶のアクセス時間[cc] 区間 1 2 N-1 N N+1
ミス率推測法(SRAMキャッシュモード時) オンチップ オンチップ L2 Cache (DRAM) 推測用タグRAM 主記憶 主記憶 L2 Cache (SRAM) L2 Tag (SRAM) Core(s) + L1(s) Core(s) + L1(s) SRAMキャッシュモード DRAMキャッシュモード • DRAMキャッシュ用のタグを別途保持し、タグ比較することでDRAMキャッシュモード時のミス率推測 • 大容量のタグRAMが必要になるため、サンプリングにより容量を大幅に削減 SRAMデータ SRAMタグ 下層SRAM DRAMタグ 推測用タグRAM
ミス率推測法(DRAMキャッシュモード時) オンチップ オンチップ L2 Cache (DRAM) 推測用タグRAM 主記憶 主記憶 L2 Cache (SRAM) L2 Tag (SRAM) Core(s) + L1(s) Core(s) + L1(s) SRAMキャッシュモード DRAMキャッシュモード SRAMタグ DRAMタグ DRAMデータ 下層SRAM 上層DRAM 推測用タグRAM
動作モード切り替え時の動作 オンチップ オンチップ L2 Cache (DRAM) 推測用タグRAM 主記憶 主記憶 L2 Cache (SRAM) L2 Tag (SRAM) Core(s) + L1(s) Core(s) + L1(s) SRAMキャッシュモード DRAMキャッシュモード ①ダーティラインの主記憶書き戻し SRAMデータ ②キャッシュのフラッシュ(全無効化) ① SRAMタグ ② 下層SRAM • 切替えオーバヘッド発生! • ダーティラインの書き戻し • 切り替え後の初期参照ミス DRAMタグ 推測用タグRAM
評価モデル • DRAM-STACK:DRAMスタック法 • HYBRID-D-x:ハイブリッド・キャッシュ(下記参照) ※8GB/sのメモリバンド幅を想定し、全ダーティラインのデータ転送時間でライトバックに要する時間を近似
評価環境 • プロセッサシミュレータ:M5 • ベンチマークプログラム:SPEC CPU 2000 、Splash2から選択 • 評価指標:AMAT DRAM-STACK DRAMキャッシュモード オンチップ オンチップ SRAMキャッシュモード コア コア 容量:32KB アクセス時間:2clock cycle L1 L1 容量:2MB アクセス時間: 6clock cycles 容量:32MB アクセス時間:28clock cycles L2 キャッシュ L2 キャッシュ 主記憶 アクセス時間:181clock cycles 主記憶
評価結果 3.03
評価結果 3.03 実行中のメモリ参照の振る舞いに追従することが可能 →実行中に動作モードを切り替えることで理想的には大きく性能向上
評価結果 3.03 3.03 プログラム実行を通してほぼすべての区間がDRAMキャッシュモード
評価結果 3.03 3.03 twolf プログラム実行を通してほぼすべての区間がSRAMキャッシュモード ハイブリッドにすることが有効
評価結果 3.03 mcf 動作モード切り替え時のオーバヘッドが大きい
評価結果 3.03 HYBRID-DはDRAM-STACKに対し性能低下 opt mcf opt メモリ参照の振る舞いの変化に対する追従性の低下 ammp
まとめと今後の課題 • まとめ • DRAMスタック法の問題点を解決するSRAM/DRAMハイブリッド・キャッシュを提案 • 実行中の動作モードを切り替えで性能低下する場合が多い • 今後の課題 • より性能が向上する実行中動作モード決定法の考案 • プログラム毎に動作モードの決定・設定をする静的方式の検討 • 消費エネルギー評価
高性能動作モードの入力依存性 (2MBのSRAMキャッシュと32MBのDRAMキャッシュを想定) 入力により適した動作モードは異なる!
入力依存性を考慮した動作モード決定・切り替え入力依存性を考慮した動作モード決定・切り替え 動作モード 切り替え 動作モード決定 適切な動作モードは入力に大きく依存するため、 「動的決定・動的切り替え」を選択
動作モード切り替え例 動作モード切り替え (DRAMキャッシュモード→SRAMキャッシュモード) 動作モード切り替え (SRAMキャッシュモード→DRAMキャッシュモード) 動作モード判定開始 動作モード判定開始 区間ナンバー N-1 N N+1 N+2 N+3 M-1 M M+1 プログラムの実行 実行動作モード S S S S S S D D D D D SRAMキャッシュモードが高性能 SRAMキャッシュモードが高性能 DRAMキャッシュモードが高性能 ウォームアップ区間 (動作モード決定・切り替え、) ウォームアップ区間 動作モード決定区間 S:SRAMキャッシュ・モード D:DRAMキャッシュ・モード
DRAMキャッシュミス率推測アーキテクチャ タグ インデックス オフセット 実際はサポートしないハードウェア フィルタ アクセス もしインデックス下位lg nビットが0なら 下位lg nビットを除くインデックスを出力 0でないなら出力なし SST ※セット数(容量)を1/nにサンプリング C:DRAMキャッシュの容量[B] W:DRAMキャッシュの連想度 L:DRAMキャッシュのラインサイズ[B] 本来必要なDRAMキャッシュ用タグRAM(SRAM)
L2キャッシュミス率推測誤差 ※サンプリングにより容量を1/32に削減 0.02を超えるのは 全体の約3% 最初の区間のみ