390 likes | 550 Views
キャッシュ・ミス頻発命令を考慮したメモリ・システムの高性能化. 三輪英樹 九州大学 大学院システム情報科学府 情報理学専攻 堂後靖博 福岡大学 大学院工学研究科 電子情報工学専攻 Victor Mauro Goulart Ferreira 九州大学 大学院システム情報科学府 情報理学専攻 井上弘士,村上和彰 九州大学 大学院システム情報科学研究院 情報理学部門. 発表手順. 研究背景 ロード対象データの再計算による 実行サイクル削減手法 本手法により性能向上を得るための条件 予備評価実験および考察 まとめ. 研究背景. キャッシュ・ミス頻発ロード命令
E N D
キャッシュ・ミス頻発命令を考慮したメモリ・システムの高性能化キャッシュ・ミス頻発命令を考慮したメモリ・システムの高性能化 三輪英樹 九州大学 大学院システム情報科学府 情報理学専攻 堂後靖博 福岡大学大学院工学研究科電子情報工学専攻 Victor Mauro Goulart Ferreira 九州大学 大学院システム情報科学府 情報理学専攻 井上弘士,村上和彰 九州大学 大学院システム情報科学研究院 情報理学部門 デザインガイア ARC 研究会
発表手順 • 研究背景 • ロード対象データの再計算による実行サイクル削減手法 • 本手法により性能向上を得るための条件 • 予備評価実験および考察 • まとめ デザインガイア ARC 研究会
研究背景 • キャッシュ・ミス頻発ロード命令 • Delinquent ロード命令「DL 命令」 • DL 命令に着目したキャッシュ・プリフェッチ • ロード対象アドレスを,別スレッドにて計算. • 既存研究: DDMT (Sohi@Wisconsin),Pre-Computation (J.P.Shen@Intel) • 主記憶へ先見的にアクセスし,レイテンシを隠蔽. • DL 命令に着目したレイテンシ削減手法 • 本発表にて提案. デザインガイア ARC 研究会
提案手法 • データを主記憶からロードするのではなく再計算 (Re-Computation; RC). • DL 命令を再計算 (RC) コードで置換し,実行サイクル数を削減する. デザインガイア ARC 研究会
DL 命令対象データの再計算 (RC) による実行サイクル数削減手法 本手法適用コード プログラムコード (静的/動的に生成) c = a + b; c = a + b; RC コード (Re-Computation) 値cは主記憶に 保存される ... ... 値cを再計算! ロード時の 主記憶への アクセスが 削減できる! c = a + b; z = x + c; z = x + c; 値cはキャッシュメモリになく,主記憶から読み込まれると仮定 値 a,bは キャッシュメモリに存在すると仮定
RC コードの例 プログラムコード アセンブリコード 本手法適用コード c = a + b; Load a Load b Add c, a, b Store c Load a Load b Add c, a, b Store c RC コード Load a Load b Add c, a,b ... ... ... z = x + c; Load c Load x Add z, x, c Store z [RCコード] Load x Add z, x, c Store z ‘Load c’ をRCコードで置換! 値cを 再利用 デザインガイア ARC 研究会
CDFG Load Load Load Load Store … DL命令 RC コードの生成方法 ソースコード … 00409588 l.d $f2 00409590 l.d $f0 004095a0 neg.d $f2,$f2 004095a0 mul.d $f2,$f2,$f0 004095a8 l.d $f0 004095b0 mul.d $f2,$f2,$f0 004095e0 s.d $f2,10b34594 … 00402280 l.d 10b34594 … CDFG 生成 同一 アドレス DL 命令 デザインガイア ARC 研究会
本手法により性能向上を得るためには? • DL 命令によるキャッシュ・ミスの絶対回数が多いこと. • 多数の DL 命令が RC コードで置換可能であること. • 少なくとも RC コードの実行サイクル数が,主記憶へのアクセスサイクル数よりも小さくなること. • RC コードのクリティカルパスが短いこと. • RC コードに含まれるロード命令は,すべてキャッシュ・ヒットすること. デザインガイア ARC 研究会
本手法適用時の実行サイクル数削減率 デザインガイア ARC 研究会
予備評価実験 • 予備評価実験の主旨 • ベンチマークプログラムを利用し,本手法を定量的に評価する. • 本手法の実現方法に関係なく,本手法による最大性能向上を評価する. デザインガイア ARC 研究会
評価環境 • シミュレータ: SimpleScalar 3.0d • ベンチマーク: SPEC CPU 2000 • 入力データ: Reference • ベンチマークのコマンドラインは,DL 命令によるキャッシュ・ミス回数が多い設定を利用. • バイナリ • MIRV Compiler (ミシガン大学) を利用してコンパイル. • mesa, art, equake, ammp • gzip, vpr, gcc, mcf, parser, vortex, bzip2 • 20億命令実行後の2億命令が評価対象 デザインガイア ARC 研究会
主なシミュレータの設定 • 命令発行: アウト・オブ・オーダ • キャッシュ・メモリ容量 • L1D: 32KB (64B/エントリ, 2 ウェイ) • L1I: 32KB (64B/エントリ, 1 ウェイ) • L2: 2MB (64B/エントリ, 4 ウェイ) • アクセスレイテンシ • L1: 1 サイクル • L2: 16 サイクル • 主記憶: 250 サイクル デザインガイア ARC 研究会
本手法により性能向上を得るためには? • DL 命令によるキャッシュ・ミスの絶対回数が多いこと. • 多数の DL 命令が RC コードで置換可能であること. • 少なくとも RC コードの実行サイクル数が,主記憶へのアクセスサイクル数よりも小さくなること. デザインガイア ARC 研究会
DL 命令が全てキャッシュ・ヒットした場合の実行サイクル数削減率 デザインガイア ARC 研究会
本手法により性能向上を得るためには? • DL 命令によるキャッシュ・ミスの絶対回数が多いこと. • 多数の DL 命令が RC コードで置換可能であること. • 少なくとも RC コードの実行サイクル数が,主記憶へのアクセスサイクル数よりも小さくなること. デザインガイア ARC 研究会
RCコードで置換できたDL命令の割合 デザインガイア ARC 研究会
本手法により性能向上を得るためには? • DL 命令によるキャッシュ・ミスの絶対回数が多いこと. • 多数の DL 命令が RC コードで置換可能であること. • 少なくともRC コードの実行サイクル数が,主記憶へのアクセスサイクル数よりも小さくなること. デザインガイア ARC 研究会
RCコード平均実行サイクル数 デザインガイア ARC 研究会
実行サイクル数削減率 デザインガイア ARC 研究会
考察 • 効果があまり出ないベンチマーク • DL 命令によるキャッシュ・ミスの絶対回数が少ないベンチマーク: mesa,vpr_p,gcc,vortex • RC コード置換可能 DL 命令数が少ないベンチマーク: art, vpr_r • RC コードサイズが比較的大きいベンチマーク: ammp • 効果が出るベンチマーク • 上記のどれにも該当しない: mcf デザインガイア ARC 研究会
まとめ (1/2) • メモリ・ウォール問題への対策として,再計算に基づくメモリ・システム高性能化手法を提案した. • 予備評価結果より,実行サイクル数を削減することができる可能性があることを示した. デザインガイア ARC 研究会
まとめ (2/2) • 以下の点を中心に研究を進める必要がある. • RC コード生成方法の確立. • RC コード内のロード命令のキャッシュ・ヒット状況の調査. • RC の適用によるキャッシュ・ヒット状況の変化の調査. デザインガイア ARC 研究会
終了 ご静聴ありがとうございました デザインガイア ARC 研究会
評価における仮定 • DL 命令は,L2 キャッシュ・ミスを頻発させる 上位 16 個 (命令アドレス) のロード命令とする. • RC コード生成時に必要なコントールフローはトレースデータから 1 パスを抽出する. • RC コード中のロード命令は,全て L1 ヒット. • RC コードを生成できた場合でも,命令数が主記憶へのアクセスサイクル数より多ければ,RC コードは生成できなかったとする. • キャッシュのヒット状況の変化は考慮しない. デザインガイア ARC 研究会
本評価における RC コード実行サイクル数の評価方法 • RCコードをグループに分類 全 RC コード グループA 代表RCコードA 実行サイクル数A グループB 代表RCコードB 実行サイクル数B … … … • 各グループごとに代表コードを生成 • 実行サイクル数を求め,各グループの代表値とする デザインガイア ARC 研究会
本評価におけるRCコードの生成方法 • RC コードを生成するためには,コントロールフローおよびデータフローが必要. • コントロールフロー • トレースデータを利用し 1 つのパスのみを抽出. • データフロー • アセンブリコードにおいてレジスタの依存関係を追跡することで抽出. デザインガイア ARC 研究会
異なる入力を使用した場合のDL命令の一致状況 (smallinput v.s. train) デザインガイア ARC 研究会
異なる入力を使用した場合のDL命令の一致状況 (smallinput v.s. ref) デザインガイア ARC 研究会
実行サイクル数削減率 • 実行サイクル数削減率 (Corg - Cccc ) / Corg×100[%] • Cccc : 本手法適用後実行サイクル数 • Corg : 本手法適用前実行サイクル数 デザインガイア ARC 研究会
本手法適用後実行サイクル数 • Cccc = Cideal + Crc + Cnorc • Cccc : 本手法適用後実行サイクル数 • Cideal : DL 命令による L2 ミス・ぺナルティを 0 とした場合 • Crc : RC コードの実行サイクル数 • Cnorc : RC コードで置換できなかった DL 命令の実行サイクル数 デザインガイア ARC 研究会
RC コードの総実行サイクル数 • Crc = CPI·∑idldpc∑krccgIrccg(i,k) · Nrccg(i,k) • CPI : Clock cycles per instruction • Irccg(i,k) : ある DL 命令のインスタンス iに対する RC コードのうち,ストア命令(のアドレス) kに対応する RC コード命令数 • Nrccg(i,k) : ある DL 命令のインスタンス iのうち,RC コードを生成することができた回数 デザインガイア ARC 研究会
DL 命令の総実行サイクル数 • Cnorc = (Corg - Cideal ) / Ndl2miss· Nnorc • Corg : 本手法適用前の実行サイクル数 • Ndl2miss : DL 命令による DL2 ミス回数の総数 • Nnorc : RC コードが生成できない (サイズオーバを含む) 判断された DL 命令数 デザインガイア ARC 研究会
命令発行: アウトオーダ 分岐予測: gshare, 2K 命令デコード幅,命令発行幅:8命令/サイクル IFQ: 8エントリ LSQ: 32エントリ RUU: 64エントリ メモリバンド幅: 8B メモリポート: 2 メモリ L1D: 32KB (64B/e,2w) L1I: 32KB (64B/e,1w) L2: 2MB (64B/e, 4w) ヒットレイテンシ L1: 1 サイクル L2: 16 サイクル 主記憶: 250 サイクル ITLB,DTLB:1Mエントリ シミュレータの設定 (1/2) デザインガイア ARC 研究会
整数演算器 (装置数,実行レイテンシ,発行レイテンシ) ALU: 4, 1, 1 乗算器: 1, 3, 1 除算器: 1, 20, 19 浮動小数点除算器 (装置数,実行レイテンシ,発行レイテンシ) ALU: 4, 2, 1 乗算器: 1, 4, 1 除算器: 1, 12, 12 開平演算器: 1,24, 24 シミュレータの設定 (2/2) デザインガイア ARC 研究会
CCC の実装方法の分類 デザインガイア ARC 研究会
研究背景 (1/3) • マイクロプロセッサおよび主記憶 (DRAM) の動作周波数は毎年向上. • しかし,年次動作周波数向上率はマイクロプロセッサのほうが高い. • マイクロプロセッサ側から見れば,主記憶は毎年遅くなっている! • 計算よりもデータのロードが圧倒的に遅い. • 「メモリ・ウォール問題」 デザインガイア ARC 研究会
研究背景 (2/3) • メモリ・ウォール問題の代表的な対策技術 • キャッシュ・メモリの搭載 • 多層化 • キャッシュ・プリフェッチ • ストライドプリフェッチ • キャッシュ・ミス頻発ロード命令に着目したプリフェッチ • キャッシュ・ミス頻発ロード命令 • Delinquent ロード 命令: 「DL命令」 デザインガイア ARC 研究会
提案手法 • DL 命令の対策に,CCC の概念を利用. • データを主記憶からロードするのではなく再計算 (Re-Computation; RC). • DL 命令を再計算 (RC) コードで置換し,実行サイクル数を削減する手法を提案. • 値を参照するのではなく,計算で求める • Computing Centric Computation (CCC) • デザインガイア ARC 研究会
全L2ミス中のDL命令の割合 デザインガイア ARC 研究会