待機ラインへの参照密度に基づく 低リーク・キャッシュの動的制御 福岡大学 ◎小宮礼子 九州大学 井上弘士 村上和彰 2005/08/03 1 発表手順 1.はじめに 2.キャッシュ・リーク削減手法の問題点 3.待機状態ラインへの参照密度解析 4.性能低下抑制を目的とした動的制御方式の提案 5.評価 6.おわりに 2005/08/03 2 はじめに プロセッサの消費電力 =リーク消費電力+動的消費電力 StrongARM SA-110 *2 70% プロセッサ中のリーク電力の割合*1 Power: 43 % キャッシュ・メモリのリーク消費電力削減が必要!! *1 Fred Pollack (Intel Fellow): New Microarchitecture Challenges in the Coming Generations of CMOS Process Technologies [Micro32] *2 プロセス:0.35μm, I-cache:16KB, D-cache:16KB, 1998 2005/08/03 3 キャッシュ・リーク削減手法 低リークキャッシュ 従来キャッシュ 待機状態 活性状態 活性状態のライン(活性ライン) : 高リーク ☹ , 高速アクセス ☺ 待機状態のライン(待機ライン) : 低リーク ☺, 低速アクセス ☹ ラインの状態を動的に切替える 待機ライン数が増加 →リーク削減 待機ラインへのアクセス →性能低下 2005/08/03 4 Cache Decay: 状態破壊に基づくリーク削減方式 アクセス アクセス アクセス アクセス 活性ライン→待機ライン(供給電圧0V) 非アクセスサイクル数 ≧ 閾値 (閾値:decay interval) アクセス 活性 ミス 待機ライン→活性ライン アクセス発生時 待機 待機ライン参照 ⇒ 必ずキャッシュ・ミスになる •従来キャッシュにおいても発生するミス •Cache Decayにより新たに発生したミス (=「増加ミス」) 「増加ミス」の発生に伴い性能低下 2005/08/03 S.Kaxiras, Z.Hu, and M.Martonosi, “Cache Decay: Exploiting Generational Behavior to Reduce Cache Leakage Power,” Proc. of the 28th Int. Symp. on Computer Architecture, pp.240-251, June 2001. 5 低リーク・キャッシュの性能低下を 改善するには? 方法1.キャッシュ・ミス時のミス・ペナルティの削減 L2以下の記憶階層ではキャッシュ・サイズは増加傾向 →ミス・ペナルティの削減は困難 方法2.「増加ミス」回数の削減 低リーク・キャッシュを動的に制御し,「増加ミス」を削減 評価結果: Cache decay 提案方式 2005/08/03 リーク削減率:92.7%, 性能低下:15.1% リーク削減率:90.6%, 性能低下:5.0% 6 Cache Decayにおける「増加ミス」の 解析 Increased-Miss-Density (IMD)とは? ライン毎「増加ミス」回数の多寡を示す指標 ライン iにおける「増加ミス」 回数 IMDi 全ラインにおける「増 加ミス」回数の平均 1以上⇒平均以上の「増加ミス」が発生 IMDiが高いライン = 性能低下を引き起こすライン 2005/08/03 7 IMD f183.equake 1 i175.vpr 1 2004/12/02 L1キャッシュライン・インデックス 解析結果 1 ≦ IMDi < 2 IMDi < 1 2 ≦ IMDi < 4 高密度ラインにおける 「増加ミス」が占める割合 高密度ラインが占める割合 100% 90% 7.7%のラインが71%の「増加ミス」を発生 80% 70% 60% 50% 40% 30% 20% 10% 0% 一部のラインが「増加ミス」を頻発! Average i197.parser i175.vpr f183.equake f179.art Average i197.parser i175.vpr f183.equake f179.art ラインの割合 「増加ミス」の割合 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 2005/08/03 4 ≦ IMDi 9 新しい低リーク・キャッシュ動的制御 方式の提案 「増加ミス」を頻発するラインを常に活性ラインで動作 常活性ライン 「増加ミス」頻発 活性 常に活性ライン 待機 常活性ライン数 メリット デメリット 多い 性能低下改善 リーク削減効果減 少ない リーク削減効果維持 性能低下改善できず 10 IMDiに基づく動的常活性ライン 決定方法 IMDi ラインiにおける「増加ミス」 回数 全ラインにおける「増 加ミス」回数の平均 ≧ 閾値 ならば 常活性ライン ラインiにおける「増加ミス」回数 ≧ 全ラインにおける「増加ミス」回数の平均×閾値 <例>キャッシュ・ライン数 = 1024 (=210) 閾値 = 2 (=21) 総「増加ミス」回数 平均「増加ミス」回数 10bit右シフト ラインiにおける「増加ミス」回数 ≧? yes 2005/08/03 no 常活性ライン 1bit左シフト 平均「増加ミス」回数×閾値 Cache Decay 11 内部構造 「増加ミス」カウンタ 常活性フラグ Decayフラグ 非アクセスカウンタ Voltage Control tag 状態破棄 ・・ ・ ≧? ・・ ・ ≧? 0 1 2 1023 Vdd / 0 シフタ 総「増加ミス」カウンタ 2005/08/03 ・・ ・ data decay interval 12 内部構造 「増加ミス」カウンタ 常活性フラグ Decayフラグ 非アクセスカウンタ Voltage Control tag ・・ ・ 状態破棄 1 ・・ ・ 1 ≧? ≧? 0 1 2 1023 Vdd / 0 シフタ 総「増加ミス」カウンタ 2005/08/03 ・・ ・ data decay interval 13 評価環境 評価対象 Cache Decay 閾値x:IMDiがx以上のラインを常活性ラインにしたキャッシュ x = 1, 2, 4 評価環境 シミュレータ: SimpleScalar 3.0d 命令発行:in-order データL1キャッシュ (32KB, 連想度32) 対象アプリケーション SPEC CPU 2000ベンチマークセット (fp 4個,int 6個) 評価項目 実行時間増加率 リーク消費エネルギー削減率 14 2005/08/03 10 5 5.0% 0 70 50 40 Average 15.1% 80 i197.parser 20 100 i175.vpr 性能改善 閾値4 f183.equake 閾値2 f177.mesa 25 リーク消費エネルギー削減率 (%) _ 閾値1 Average i197.parser i175.vpr 15 f183.equake f177.mesa 実行時間増加率 (%) _ 評価結果 Cache Decay 92.7% 90 90.6% 60 リーク削減効果維持 30 20 10 0 15 2005/08/03 10 5 0 30 20 Average 15 i256.bzip2 20 i197.parser 性能改善 閾値4 f183.equake 閾値2 f177.mesa 25 リーク消費エネルギー削減率 (%) _ 閾値1 Average i256.bzip2 i197.parser f183.equake f177.mesa 実行時間増加率 (%) _ 評価結果 Cache Decay 100 90 80 70 60 50 40 リーク削減効果減 10 0 16 まとめ 低リーク・キャッシュの性能低下抑制方式を提案: 「増加ミス」の発生密度が高いラインを動的に検出し, 常活性ラインにすることで性能を改善 結果 リーク削減効果を維持したまま性能を改善できた 最善ケース(f183.equake 閾値4)の場合: Cache Decay リーク削減率:92.7%, 性能低下:15.1% 提案方式 リーク削減率:90.6%, 性能低下:5.0% 今後の課題 動的消費エネルギーを含めた総合評価 2005/08/03 17 2005/08/03 18 2005/08/03 19 待機ラインの実現方式 回路 電源電圧供給停止 状態破棄 (Gated-Vdd) リーク削減効果大 低電源電圧化 (DVS) 状態保存 高閾値電圧化 (VT-CMOS) 記憶していた 情報 再参照時の ペナルティ 失う キャッシュ・ミスと同等 保存 活性ラインへの切替え (一般に1clock cycle) 性能低下小 改善できれば,性能低下小かつリーク削減効果大! 2005/08/03 20 Average i256.bzip2 i197.parser i181.mcf i176.gcc i175.vpr i164.gzip f188.ammp f183.equake 2005/08/03 f179.art f177.mesa 実行時間増加率 (%) _ Cache decayではどれだけ 性能が低下するか? 25 20 15 10 5 0 21 2005/08/03 Average i256.bzip2 i197.parser 2 i181.mcf 2.5 i176.gcc i175.vpr i164.gzip f188.ammp 3.5 f183.equake 4 f179.art f177.mesa DL1ミス回数 (本来のDL1ミス回数で正規化) _ 「増加ミス」が性能低下に どれだけ影響しているか? 4.5 「増加ミス」回数が多いほど性能も低下! 3 増加ミス 1.5 1 0.5 0 22 IMD i181.mcf 1 2005/08/03 23 2005/08/03 Average i256.bzip2 1≦IMD<2 i197.parser i181.mcf 2≦IMD<4 i176.gcc i175.vpr i164.gzip 4≦IMD f188.ammp f183.equake f179.art f177.mesa ラインの割合 高密度ラインが占める割合 IMD<1 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% benchmark program 24 高密度ラインにおける「増加ミス」が 占める割合 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 2005/08/03 2≦IMD<4 1≦IMD<2 IMD<1 benchmark program 一部のラインが「増加ミス」を頻発! Average i256.bzip2 i197.parser i181.mcf i176.gcc i175.vpr i164.gzip f188.ammp f183.equake f179.art 7.7%のラインが71%の「増加ミス」を発生 f177.mesa 「増加ミス」の割合 4≦IMD 25 どのようにして常活性ラインを 動的に決定するか? 待機 カウンタ フラグ Voltage Control tag 状態破棄 ・・ ・ data ・・ ・ ≧? 0 1 2 1023 Vdd / 0 decay interval 2005/08/03 26 どのようにして常活性ラインを 動的に決定するか? 待機 カウンタ フラグ Voltage Control tag 状態破棄 非アクセスサイクル数をカウント 待機カウンタ≧decay interval ⇒待機フラグ=1 2005/08/03 ・・ ・ data ・・ ・ 1 ≧? 0 1 2 1023 Vdd / 0 decay interval 27 どのようにして常活性ラインを 動的に決定するか? 常活性 カウンタ フラグ 待機 カウンタ フラグ Voltage Control tag 状態破棄 ・・ ・ ≧? globalカウンタ 2005/08/03 ・・ ・ data ・・ ・ ≧? 0 1 2 1023 Vdd / 0 decay interval 28 どのようにして常活性ラインを 動的に決定するか? 常活性 カウンタ フラグ 待機 カウンタ フラグ Voltage Control tag 状態破棄 ・・ ・ ・・ ・ 0 1 2 1023 1 Vdd / 0 Cache decay時の「増加ミス」回数をカウント ≧? ≧? 全「増加ミス」回数をカウント globalカウンタ 2005/08/03 ・・ ・ data decay interval 29 IMD ≧閾値 ならば 常活性ライン どのようにして常活性ラインを ラインiにおける「増加ミス」 回数 IMD 動的に決定するか? 全ラインにおける「増 加ミス」回数の平均 i i ラインiにおける「増加ミス」回数 ≧ 常活性 カウンタ 待機 カウンタ フラグ 全ラインにおける「増加ミス」回数の平均×閾値 フラグ Voltage Control tag 状態破棄 ・・ ・ ・・ ・ 1 ≧? globalカウンタ 2005/08/03 ・・ ・ data ≧? 0 1 2 1023 Vdd / 0 decay interval 30 IMD ≧閾値 ならば 常活性ライン どのようにして常活性ラインを ラインiにおける「増加ミス」 回数 IMD 動的に決定するか? 全ラインにおける「増 加ミス」回数の平均 i i ラインiにおける「増加ミス」回数 ≧ 常活性 カウンタ 待機 カウンタ フラグ 全ラインにおける「増加ミス」回数の平均×閾値 フラグ Voltage Control tag 状態破棄 ・・ ・ ・・ ・ 1 ≧? globalカウンタ 2005/08/03 ・・ ・ data ≧? 0 1 2 1023 Vdd / 0 ライン数:2x, 閾値:2yの場合, globalカウンタの値を (x-y)ビット右にシフト decay interval 例)ライン数1024 = 210, 閾値2 = 21 ⇒9ビット右シフト 31 IMD ≧閾値 ならば 常活性ライン どのようにして常活性ラインを ラインiにおける「増加ミス」 回数 IMD 動的に決定するか? 全ラインにおける「増 加ミス」回数の平均 i i ラインiにおける「増加ミス」回数 ≧ 常活性 カウンタ 待機 カウンタ フラグ 全ラインにおける「増加ミス」回数の平均×閾値 フラグ Voltage Control tag ・・ ・ 状態破棄 1 1 ≧? globalカウンタ 2005/08/03 ・・ ・ data ・・ ・ 0 1 2 1023 Vdd / 0 常活性カウンタ≧シフトした値 ≧? ⇒常活性フラグ=1 decay interval 32 どのようにして常活性ラインを 動的に決定するか? 常活性 カウンタ フラグ 待機 カウンタ フラグ Voltage Control tag ・・ ・ 状態破棄 1 ・・ ・ 1 ≧? globalカウンタ 2005/08/03 ・・ ・ data 常活性 待機 状態破棄 フラグ ≧?フラグ 信号 0 0 0(活性) 0 1 0 (活性) 1 0 0 (活性) 0 1 2 1023 Vdd / 0 1decay1interval 1 (破棄) 33 どのようにして常活性ラインを 動的に決定するか? 常活性 カウンタ フラグ 待機 カウンタ フラグ tag Voltage Control 常活性フラグ=1 ならば 常に活性ライン ・・ ・ 状態破棄 1 ・・ ・ 1 ≧? globalカウンタ 2005/08/03 ・・ ・ data 常活性 待機 状態破棄 フラグ ≧?フラグ 信号 0 0 0(活性) 0 1 0 (活性) 1 0 0 (活性) 0 1 2 1023 Vdd / 0 1decay1interval 1 (破棄) 34 どのようにして常活性ラインを 動的に決定するか? 常活性 カウンタ フラグ 待機 カウンタ フラグ Voltage Control tag data 0 1 常活性フラグ=0 ならば Cache decayと同様に動作 2 ・・ ・・ ・・ 状態破棄 ・ ・ ・ 1023 1 1 ≧? globalカウンタ 2005/08/03 常活性 待機 状態破棄 フラグ ≧?フラグ 信号 0 0 0(活性) 0 1 0 (活性) 1 0 0 (活性) Vdd / 0 1decay1interval 1 (破棄) 35 0 Average i256.bzip2 i197.parser 閾値4 i181.mcf i176.gcc 閾値2 i175.vpr i164.gzip 閾値1 f188.ammp 15 f183.equake 2005/08/03 20 f179.art f177.mesa 実行時間増加率 (%) _ どれだけ性能低下を改善したか?① Cache decay 25 性能改善 15.1% 10 5.0% 5 36 0 Average i256.bzip2 i197.parser 閾値4 i181.mcf i176.gcc 閾値2 i175.vpr 90 i164.gzip 閾値1 f188.ammp 80 f183.equake 2005/08/03 50 f179.art f177.mesa リーク消費エネルギー削減率 (%) _ リーク消費エネルギー削減効果は 維持できたか? ① Cache decay 100 92.7% 90.6% 70 60 リーク削減効果維持 40 30 20 10 37 何故f183.equakeはリーク削減効果を 維持したまま性能を改善したか? Cache decay 4≦IMD 2≦IMD<4 1≦IMD<2 IMD<1 100% 90% 80% 70% 60% 少数ラインが「増加ミス」を頻発 50% →一部のラインのみ常活性ラインになるため, 40% 30% リークは増加せず,性能を改善する 20% 10% 0% 2005/08/03 lineの割合 高密度ラインが 占める割合 「増加ミス」回数の割合 高密度ラインにおける 「増加ミス」数が占める割合 38 0 Average i256.bzip2 i197.parser 閾値4 i181.mcf 15 i176.gcc 閾値2 i175.vpr i164.gzip 閾値1 f188.ammp f183.equake 2005/08/03 f179.art f177.mesa 実行時間増加率 (%) _ どれだけ性能低下を改善したか?② Cache decay 25 20 閾値に反比例して性能改善 10 5 39 0 Average i256.bzip2 i197.parser 閾値4 i181.mcf i176.gcc 閾値2 i175.vpr 50 i164.gzip 閾値1 f188.ammp f183.equake 2005/08/03 f179.art f177.mesa リーク消費エネルギー削減率 (%) _ リーク消費エネルギー削減効果は 維持できたか? ② Cache decay 100 90 80 70 60 閾値に反比例してリーク削減効果低下 40 30 20 10 40 何故i256.bizp2では性能改善に伴い リーク削減効果が低下するか? Cache decay 4≦IMD 2≦IMD<4 1≦IMD<2 IMD<1 100% 90% 「増加ミス」密度が高いライン数が多い 80% 70% →常活性ライン数が増えるため,リーク削減効果減 60% 50% そのラインでの「増加ミス」回数は多い 40% 30% →性能は改善 20% 10% 0% 2005/08/03 lineの割合 高密度ラインが 占める割合 「増加ミス」回数の割合 高密度ラインにおける 「増加ミス」数が占める割合 41 0 Average i256.bzip2 i197.parser 閾値4 i181.mcf 10 i176.gcc 閾値2 i175.vpr i164.gzip 閾値1 f188.ammp f183.equake 2005/08/03 f179.art f177.mesa 実行時間増加率 (%) _ どれだけ性能低下を改善したか?③ Cache decay 25 20 15 性能改善せず 5 42 0 Average i256.bzip2 i197.parser 閾値4 i181.mcf 70 i176.gcc 閾値2 i175.vpr i164.gzip 閾値1 f188.ammp f183.equake 2005/08/03 f179.art f177.mesa リーク消費エネルギー削減率 (%) _ リーク消費エネルギー削減効果は 維持できたか? ③ Cache decay 100 90 80 リーク削減効果変わらず 60 50 40 30 20 10 43 i181.mcf(閾値2,4)は何故性能もリークも 変化しないか? 4≦IMD 2≦IMD<4 1≦IMD<2 IMD<1 100% 90% 80% 70% 常活性ラインになるラインがない →Cache decayと同じ動作をする 60% 50% 40% 30% 20% 10% 0% lineの割合 2005/08/03 「増加ミス」回数の割合 44 0 Average i256.bzip2 i197.parser 閾値4 i181.mcf i176.gcc 閾値2 i175.vpr 5 i164.gzip 閾値1 f188.ammp f183.equake 2005/08/03 f179.art f177.mesa 実行時間増加率 (%) _ どれだけ性能低下を改善したか?④ Cache decay 25 20 15 10 元々性能が低下していない 45 0 Average i256.bzip2 i197.parser 閾値4 i181.mcf 10 i176.gcc 閾値2 i175.vpr 20 i164.gzip 閾値1 f188.ammp f183.equake 2005/08/03 f179.art f177.mesa リーク消費エネルギー削減率 (%) _ リーク消費エネルギー削減効果は 維持できたか? ④ Cache decay 100 90 80 70 60 50 40 30 リーク削減効果低下 理由:無駄に常活性ラインに切替わる 46
© Copyright 2024 ExpyDoc