460 likes | 558 Views
待機ラインへの参照密度に基づく低リーク・キャッシュの動的制御. 福岡大学 ◎小宮礼子 九州大学 井上弘士 村上和彰. 発表手順. はじめに キャッシュ・リーク削減手法の問題点 待機状態ラインへの参照密度解析 性能低下抑制を目的とした動的制御方式の提案 評価 おわりに. はじめに. プロセッサの消費電力 =リーク消費電力+動的消費電力. StrongA RM SA-110 *2. 70%. プロセッサ中のリーク電力の割合 * 1. Power: 43 %. キャッシュ・メモリのリーク消費電力削減が必要 !!.
E N D
待機ラインへの参照密度に基づく低リーク・キャッシュの動的制御待機ラインへの参照密度に基づく低リーク・キャッシュの動的制御 福岡大学 ◎小宮礼子 九州大学 井上弘士 村上和彰
発表手順 • はじめに • キャッシュ・リーク削減手法の問題点 • 待機状態ラインへの参照密度解析 • 性能低下抑制を目的とした動的制御方式の提案 • 評価 • おわりに
はじめに プロセッサの消費電力 =リーク消費電力+動的消費電力 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
☹ ☺ • 活性状態のライン(活性ライン): 高リーク , 高速アクセス • 待機状態のライン(待機ライン) : 低リーク , 低速アクセス ☺ ☹ キャッシュ・リーク削減手法 低リークキャッシュ 従来キャッシュ 待機状態 活性状態 • ラインの状態を動的に切替える 待機ライン数が増加 →リーク削減 待機ラインへのアクセス →性能低下
ミス Cache Decay:状態破壊に基づくリーク削減方式 • 活性ライン→待機ライン(供給電圧0V) • 非アクセスサイクル数 ≧ 閾値 • (閾値:decay interval) • 待機ライン→活性ライン • アクセス発生時 アクセス アクセス アクセス アクセス アクセス 活性 待機 待機ライン参照 ⇒ 必ずキャッシュ・ミスになる • 従来キャッシュにおいても発生するミス • Cache Decayにより新たに発生したミス (=「増加ミス」) 「増加ミス」の発生に伴い性能低下 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.
低リーク・キャッシュの性能低下を改善するには?低リーク・キャッシュの性能低下を改善するには? 方法1.キャッシュ・ミス時のミス・ペナルティの削減 L2以下の記憶階層ではキャッシュ・サイズは増加傾向 →ミス・ペナルティの削減は困難 方法2.「増加ミス」回数の削減 低リーク・キャッシュを動的に制御し,「増加ミス」を削減 評価結果: Cache decay リーク削減率:92.7%, 性能低下:15.1% 提案方式 リーク削減率:90.6%, 性能低下:5.0%
Cache Decayにおける「増加ミス」の解析 • Increased-Miss-Density (IMD)とは? ライン毎「増加ミス」回数の多寡を示す指標 1以上⇒平均以上の「増加ミス」が発生 IMDiが高いライン = 性能低下を引き起こすライン
IMD f183.equake 1 i175.vpr 1 L1キャッシュライン・インデックス
IMDi < 1 1 ≦ IMDi < 2 2 ≦ IMDi < 4 4 ≦ IMDi 解析結果 高密度ラインにおける 「増加ミス」が占める割合 高密度ラインが占める割合 7.7%のラインが71%の「増加ミス」を発生 「増加ミス」の割合 ラインの割合 一部のラインが「増加ミス」を頻発!
新しい低リーク・キャッシュ動的制御方式の提案新しい低リーク・キャッシュ動的制御方式の提案 「増加ミス」を頻発するラインを常に活性ラインで動作 常活性ライン 「増加ミス」頻発 常に活性ライン 活性 待機
≧ 閾値 10bit右シフト 1bit左シフト IMDiに基づく動的常活性ライン決定方法 ならば 常活性ライン ラインiにおける「増加ミス」回数 ≧ 全ラインにおける「増加ミス」回数の平均×閾値 <例>キャッシュ・ライン数 = 1024 (=210) 閾値 = 2 (=21) 総「増加ミス」回数 平均「増加ミス」回数 ≧? ラインiにおける「増加ミス」回数 平均「増加ミス」回数×閾値 yes no Cache Decay 常活性ライン
≧? 内部構造 「増加ミス」カウンタ 常活性フラグ Decayフラグ 非アクセスカウンタ tag data 0 1 2 状態破棄 ・ ・ ・ ・ ・ ・ ・ ・ ・ 1023 Voltage Control Vdd / 0 ≧? シフタ 総「増加ミス」カウンタ decay interval
0 1 2 ・ ・ ・ ・ ・ ・ ・ ・ ・ 1023 ≧? 内部構造 「増加ミス」カウンタ 常活性フラグ Decayフラグ 非アクセスカウンタ tag data 状態破棄 1 1 Voltage Control Vdd / 0 ≧? シフタ 総「増加ミス」カウンタ decay interval
評価環境 • 評価対象 Cache Decay 閾値x:IMDiがx以上のラインを常活性ラインにしたキャッシュ x = 1, 2, 4 • 評価環境 シミュレータ: SimpleScalar 3.0d 命令発行:in-order データL1キャッシュ (32KB, 連想度32) • 対象アプリケーション • SPEC CPU 2000ベンチマークセット • (fp 4個,int 6個) • 評価項目 実行時間増加率 リーク消費エネルギー削減率
閾値1 閾値2 閾値4 Cache Decay 評価結果 92.7% 性能改善 90.6% 15.1% リーク削減効果維持 5.0%
閾値1 閾値2 閾値4 Cache Decay 評価結果 性能改善 リーク削減効果減
まとめ • 低リーク・キャッシュの性能低下抑制方式を提案: 「増加ミス」の発生密度が高いラインを動的に検出し, 常活性ラインにすることで性能を改善 • 結果 • リーク削減効果を維持したまま性能を改善できた • 最善ケース(f183.equake 閾値4)の場合: • Cache Decay リーク削減率:92.7%, 性能低下:15.1% • 提案方式 リーク削減率:90.6%, 性能低下:5.0% • 今後の課題 • 動的消費エネルギーを含めた総合評価
待機ラインの実現方式 改善できれば,性能低下小かつリーク削減効果大!
「増加ミス」が性能低下にどれだけ影響しているか?「増加ミス」が性能低下にどれだけ影響しているか? 「増加ミス」回数が多いほど性能も低下! 増加ミス
IMD i181.mcf 1
高密度ラインが占める割合 ラインの割合
高密度ラインにおける「増加ミス」が占める割合高密度ラインにおける「増加ミス」が占める割合 7.7%のラインが71%の「増加ミス」を発生 「増加ミス」の割合 一部のラインが「増加ミス」を頻発!
カウンタ フラグ 待機 ≧? どのようにして常活性ラインを動的に決定するか? tag data 0 1 2 ・ ・ ・ ・ ・ ・ 状態破棄 1023 Voltage Control Vdd / 0 decay interval
カウンタ フラグ 待機 ≧? どのようにして常活性ラインを動的に決定するか? tag data 0 1 2 ・ ・ ・ ・ ・ ・ 状態破棄 1023 1 Voltage Control Vdd / 0 非アクセスサイクル数をカウント 待機カウンタ≧decay interval ⇒待機フラグ=1 decay interval
カウンタ フラグ カウンタ フラグ 常活性 待機 0 1 2 ・ ・ ・ ・ ・ ・ ・ ・ ・ 1023 ≧? どのようにして常活性ラインを動的に決定するか? tag data 状態破棄 Voltage Control Vdd / 0 ≧? globalカウンタ decay interval
カウンタ フラグ カウンタ フラグ 常活性 待機 0 1 2 ・ ・ ・ ・ ・ ・ ・ ・ ・ 1023 ≧? どのようにして常活性ラインを動的に決定するか? tag data 状態破棄 1 Voltage Control Vdd / 0 Cache decay時の「増加ミス」回数をカウント ≧? 全「増加ミス」回数をカウント globalカウンタ decay interval
カウンタ フラグ カウンタ フラグ 常活性 待機 0 1 2 IMDi≧閾値 ならば 常活性ライン ・ ・ ・ ・ ・ ・ ・ ・ ・ 1023 ラインiにおける「増加ミス」回数 ≧ 全ラインにおける「増加ミス」回数の平均×閾値 ≧? どのようにして常活性ラインを動的に決定するか? tag data 状態破棄 1 Voltage Control Vdd / 0 ≧? globalカウンタ decay interval
カウンタ フラグ カウンタ フラグ 常活性 待機 0 1 2 IMDi≧閾値 ならば 常活性ライン ・ ・ ・ ・ ・ ・ ・ ・ ・ 1023 ラインiにおける「増加ミス」回数 ≧ 全ラインにおける「増加ミス」回数の平均×閾値 ≧? どのようにして常活性ラインを動的に決定するか? tag data 状態破棄 1 Voltage Control Vdd / 0 ≧? ライン数:2x, 閾値:2yの場合, globalカウンタの値を (x-y)ビット右にシフト 例)ライン数1024 = 210, 閾値2 = 21 ⇒9ビット右シフト globalカウンタ decay interval
カウンタ フラグ カウンタ フラグ 常活性 待機 0 1 2 IMDi≧閾値 ならば 常活性ライン ・ ・ ・ ・ ・ ・ ・ ・ ・ 1023 ラインiにおける「増加ミス」回数 ≧ 全ラインにおける「増加ミス」回数の平均×閾値 ≧? どのようにして常活性ラインを動的に決定するか? tag data 状態破棄 1 1 Voltage Control 常活性カウンタ≧シフトした値 ⇒常活性フラグ=1 Vdd / 0 ≧? globalカウンタ decay interval
カウンタ フラグ カウンタ フラグ 常活性 待機 常活性 フラグ 待機 フラグ 状態破棄 信号 0 0 0(活性) 0 1 0 1 0 (活性) 2 ・ ・ ・ ・ ・ ・ ・ ・ ・ 1 0 0 (活性) 1023 1 1 1 (破棄) ≧? どのようにして常活性ラインを動的に決定するか? tag data 状態破棄 1 1 Voltage Control Vdd / 0 ≧? globalカウンタ decay interval
カウンタ フラグ カウンタ フラグ 常活性 待機 常活性 フラグ 待機 フラグ 状態破棄 信号 0 0 0(活性) 0 1 0 1 0 (活性) 2 ・ ・ ・ ・ ・ ・ ・ ・ ・ 1 0 0 (活性) 1023 1 1 1 (破棄) ≧? どのようにして常活性ラインを動的に決定するか? tag data 常活性フラグ=1 ならば 常に活性ライン 状態破棄 1 1 Voltage Control Vdd / 0 ≧? globalカウンタ decay interval
カウンタ フラグ カウンタ フラグ 常活性 待機 常活性 フラグ 待機 フラグ 状態破棄 信号 0 0 0(活性) 0 1 0 1 0 (活性) 2 ・ ・ ・ ・ ・ ・ ・ ・ ・ 1 0 0 (活性) 1023 1 1 1 (破棄) ≧? どのようにして常活性ラインを動的に決定するか? tag data 常活性フラグ=0 ならば Cache decayと同様に動作 状態破棄 1 1 Voltage Control Vdd / 0 ≧? globalカウンタ decay interval
どれだけ性能低下を改善したか?① 性能改善 15.1% 5.0%
リーク消費エネルギー削減効果は維持できたか? ① 92.7% 90.6% リーク削減効果維持
何故f183.equakeはリーク削減効果を維持したまま性能を改善したか?何故f183.equakeはリーク削減効果を維持したまま性能を改善したか? Cache decay 少数ラインが「増加ミス」を頻発 →一部のラインのみ常活性ラインになるため, リークは増加せず,性能を改善する 高密度ラインにおける 「増加ミス」数が占める割合 高密度ラインが 占める割合
どれだけ性能低下を改善したか?② 閾値に反比例して性能改善
リーク消費エネルギー削減効果は維持できたか? ② 閾値に反比例してリーク削減効果低下
何故i256.bizp2では性能改善に伴いリーク削減効果が低下するか?何故i256.bizp2では性能改善に伴いリーク削減効果が低下するか? Cache decay 「増加ミス」密度が高いライン数が多い →常活性ライン数が増えるため,リーク削減効果減 そのラインでの「増加ミス」回数は多い →性能は改善 高密度ラインにおける 「増加ミス」数が占める割合 高密度ラインが 占める割合
どれだけ性能低下を改善したか?③ 性能改善せず
リーク消費エネルギー削減効果は維持できたか? ③ リーク削減効果変わらず
i181.mcf(閾値2,4)は何故性能もリークも変化しないか?i181.mcf(閾値2,4)は何故性能もリークも変化しないか? 常活性ラインになるラインがない →Cache decayと同じ動作をする
どれだけ性能低下を改善したか?④ 元々性能が低下していない
リーク消費エネルギー削減効果は維持できたか? ④ リーク削減効果低下 理由:無駄に常活性ラインに切替わる