キャッシュ・リーク電力削減

キャッシュ・リーク電力削減
アルゴリズムに関する定量的評価
福岡大学
●小宮礼子 井上弘士 モシニャガ・ワシリー
九州大学
村上和彰
2004/04/26
1
発表手順
はじめに
キャッシュ・リーク削減手法
切り替えアルゴリズムとその分類
比較対象モデルの決定
評価
おわりに
2004/04/26
2
はじめに
プロセッサの消費電力
=リーク消費電力+動的消費電力
ARM-110
70%
プロセッサ中のリーク電力の割合*
Power: 43 %
キャッシュ・メモリのリーク消費電力削減が必要!!
* Fred Pollack (Intel Fellow): New Microarchitecture Challenges in the Coming Generations of CMOS Process Technologies [Micro32]
2004/04/26
3
キャッシュ・リーク削減手法
リーク削減方式
sleepモード
(低リーク・低速)
従来方式
awakeモード
(高速・高リーク)
共通点
ある粒度単位でsleepモードとawakeモードを用意
sleepモード領域が増加→リーク削減
sleepモードへのアクセス→ペナルティによる性能低下
使用されない領域のみsleepモードへ変更
2004/04/26
4
相違点
各モードを適用する範囲
→ 粒度
sleepモード時のデータ取り扱い → データ
モード切替えのタイミング
→ アルゴリズム
<粒度>
ライン
セット
ウェイ
キャッシュ全体
<データ>
破壊
非破壊
2004/04/26
複雑
小
制御
リーク
簡単
大
リーク0 ,ミス数増加
リーク極少,ミス数変化なし
5
既存手法
DRI
Decay
Drowsy
Hierarchy
粒度
set
line
全体
データ移動部分
データ
破壊
破壊
保存
保存
(sleepへの)
アルゴリズム
キャッシュ
全体のミス数
≦閾値
非アクセス
サイクル数
≧閾値
定期的
データをLoad
(awakeへの)
アルゴリズム
キャッシュ
全体のミス数
≧閾値
ミス発生
アクセス発生
データをStore
相違点
2004/04/26
6
研究目的
問題点
大域的な整理なし
各手法の相互評価なし
研究目的:
リーク削減アルゴリズムの分類と
定量的評価
2004/04/26
研究手段
リーク削減手法の大域的分類
各手法の定量的評価
粒度はライン単位,
データ保持状態は非破壊型に固定
7
リーク削減アルゴリズム
• Sleep切替アルゴリズム
– 対象ラインの状態を「低リーク/低速モード」へ変更
– 将来、参照されないであろうラインを検出
• Awake切替アルゴリズム
– 対象ラインの状態を「高リーク/高速モード」へ変更
– 近い将来、参照されるであろうラインを検出
リーク消費エネルギーと性能オーバヘッドに影響
2004/04/26
8
切り替えアルゴリズムの分類
Sleepモードへの切替えアルゴリズム
切替えタイミング
切替え条件
条件無し
判定期間
(実行時間≧閾値)③
カウンタ値≦閾値
カウンタ型 (ミス数①、アクセス数)
(種類)
条件付き
カウンタ値≧閾値
判定時期
Time-Window③
同期③
Time-Window①
同期①
Time-Window
同期または非同期
(ヒット数、非アクセス時間②) No-Time-Window② 非同期②
イベント型
Load命令発行④
①DRI
②Decay
T
2004/04/26
No-Time-Window④ イベント発生時④
③Drowsy
④Hierarchy
非同期
同期
t
Time-Window
No-Time-Window
9
切替えタイミング
<TW同期型>
T
<TW非同期型>
利点 判定回数が少ない
t
モード切替え
判定期間
欠点 モード切替えまでに
時間のロス
判定時期
t
モード切替え
判定期間
T
<NTW非同期型>
<NTWイベント型>
T:Time-Window
判定時期
条件成立
利点 モード切替えが早い
欠点 常に判定が必要
判定時期
t
モード切替え
判定期間
利点 モード切替えが早い
判定時期
t
モード切替え
判定期間
イベント発生
利点 モード切替えが早い
欠点 実現不可能なアル
ゴリズムがある
欠点 条件がイベント型の
時のみ使用
10
Awakeモードへの切替えアルゴリズム
切替えタイミング
切替え条件
条件無し
判定期間
Time-Window
(実行時間≧閾値)
カウンタ値≦閾値
条件付き
Time-Window
(ヒット数、非アクセス時間)
カウンタ型
(種類)
カウンタ値≧閾値
Time-Window①
イベント型
同期
同期
同期①または非同期
(ミス数①、アクセス数)
No-Time-Window 非同期
Store命令発行④
No-Time-Window イベント発生時
②③④
②③④
Load/Store命令発行②③
①DRI
2004/04/26
判定時期
②Decay
③Drowsy
④Hierarchy
11
比較対象モデルの決定
(sleep-awake)
モデル名
L-S
L-LS
NAC-S
NAC-LS
Non-S
Non-LS
切替え条件
イベント
(Load)
イベント
(Load)
カウント
(非アクセス
サイクル)
カウント
(非アクセス
サイクル)
無条件
無条件
閾値
-
-
4Kcycle
4Kcycle
4Kcycle
4Kcycle
判定期間
NTW
NTW
NTW
NTW
TW
TW
判定時期
イベント
発生時
イベント
発生時
非同期
非同期
同期
同期
切替え条件
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
判定期間
NTW
NTW
NTW
NTW
NTW
NTW
判定時期
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
Hierarchy
----
----
Decay
----
Drowsy
アルゴリズム
awake
→sleep
sleep
→awake
リーク削減手法
2004/04/26
12
比較対象モデルの決定
(sleep-awake)
モデル名
L-S
L-LS
NAC-S
NAC-LS
Non-S
Non-LS
切替え条件
イベント
(Load)
イベント
(Load)
カウント
(非アクセス
サイクル)
カウント
(非アクセス
サイクル)
無条件
無条件
閾値
-
-
4Kcycle
4Kcycle
4Kcycle
4Kcycle
判定期間
NTW
NTW
NTW
NTW
TW
TW
判定時期
イベント
発生時
イベント
発生時
非同期
非同期
同期
同期
切替え条件
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
判定期間
NTW
NTW
NTW
NTW
NTW
NTW
判定時期
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
Hierarchy
----
----
Decay
----
Drowsy
アルゴリズム
awake
→sleep
sleep
→awake
リーク削減手法
2004/04/26
13
比較対象モデルの決定
(sleep-awake)
モデル名
L-S
L-LS
NAC-S
NAC-LS
Non-S
Non-LS
切替え条件
イベント
(Load)
イベント
(Load)
カウント
(非アクセス
サイクル)
カウント
(非アクセス
サイクル)
無条件
無条件
閾値
-
-
4Kcycle
4Kcycle
4Kcycle
4Kcycle
判定期間
NTW
NTW
NTW
NTW
TW
TW
判定時期
イベント
発生時
イベント
発生時
非同期
非同期
同期
同期
切替え条件
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
判定期間
NTW
NTW
NTW
NTW
NTW
NTW
判定時期
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
Hierarchy
----
----
Decay
----
Drowsy
アルゴリズム
awake
→sleep
sleep
→awake
リーク削減手法
2004/04/26
14
比較対象モデルの決定
(sleep-awake)
モデル名
L-S
L-LS
NAC-S
NAC-LS
Non-S
Non-LS
切替え条件
イベント
(Load)
イベント
(Load)
カウント
(非アクセス
サイクル)
カウント
(非アクセス
サイクル)
無条件
無条件
閾値
-
-
4Kcycle
4Kcycle
4Kcycle
4Kcycle
判定期間
NTW
NTW
NTW
NTW
TW
TW
判定時期
イベント
発生時
イベント
発生時
非同期
非同期
同期
同期
切替え条件
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
判定期間
NTW
NTW
NTW
NTW
NTW
NTW
判定時期
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
Hierarchy
----
----
Decay
----
Drowsy
アルゴリズム
awake
→sleep
sleep
→awake
リーク削減手法
2004/04/26
15
比較対象モデルの決定
(sleep-awake)
モデル名
L-S
L-LS
NAC-S
NAC-LS
Non-S
Non-LS
切替え条件
イベント
(Load)
イベント
(Load)
カウント
(非アクセス
サイクル)
カウント
(非アクセス
サイクル)
無条件
無条件
閾値
-
-
4Kcycle
4Kcycle
4Kcycle
4Kcycle
判定期間
NTW
NTW
NTW
NTW
TW
TW
判定時期
イベント
発生時
イベント
発生時
非同期
非同期
同期
同期
切替え条件
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
判定期間
NTW
NTW
NTW
NTW
NTW
NTW
判定時期
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
Hierarchy
----
----
Decay
----
Drowsy
アルゴリズム
awake
→sleep
sleep
→awake
リーク削減手法
2004/04/26
16
比較対象モデルの決定
(sleep-awake)
モデル名
L-S
L-LS
NAC-S
NAC-LS
Non-S
Non-LS
切替え条件
イベント
(Load)
イベント
(Load)
カウント
(非アクセス
サイクル)
カウント
(非アクセス
サイクル)
無条件
無条件
閾値
-
-
4Kcycle
4Kcycle
4Kcycle
4Kcycle
判定期間
NTW
NTW
NTW
NTW
TW
TW
判定時期
イベント
発生時
イベント
発生時
非同期
非同期
同期
同期
切替え条件
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
イベント
(Store)
イベント
(Load/Store)
判定期間
NTW
NTW
NTW
NTW
NTW
NTW
判定時期
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
イベント
発生時
Hierarchy
----
----
Decay
----
Drowsy
アルゴリズム
awake
→sleep
sleep
→awake
リーク削減手法
2004/04/26
17
評価
ベンチマーク
プログラム
ZonC
入力
SPARCシミュレータ
抽出
ベンチマーク:SPEC2000
(int 12個,float 14個)
SPARCプロセッサ
(アウト・オブ・オーダ実行)
128KB,連想度2 ,データL1キャッシュ
アドレス
トレース
実行サイクル
トレース
入力
出力
リーク削減率
2004/04/26
実行時間
増加率
キャッシュ・シミュレータ
性能・リーク消費エネルギーの測定
sleepラインへのアクセス・ペナルティ
(SHP = Sleep Hit Penalty)
→1~3cycle
sleep/awakeモードでの
リーク消費エネルギー
→0.08 : 1
K.Flautner, “Drowsy Caches: Simple Techniques for Reducing Leakage Power,
Proc. of the 29th Int, Symp. on Computer Architecture, pp.148-157, May 2002.
18
消費エネルギー・モデル
LEtotal = CSize × CC × LEbit
キャッシュ・サイズ(128K)
プログラム実行時間:CC = CCconv + CCextra
削減方法なし
増加実行時間
サイクル当たりのSRAMセルリーク消費エネルギー:
LEbit = SR × LEsbit + (1-SR) × LEabit
1bit-sleep-SRAMセル平均リーク消費エネルギー
→0.08LEabit
キャッシュ内のsleepモード部分の割合
2004/04/26
19
100
90
-20
-30
2004/04/26
SHP=1
2
3
80
80
70
70
60
60
50
50
40
40
30
30
20
20
10
10
0
0
実行時間増加率(%)
-10
i164.gzip
i175.vpr
i176.gcc
i181.mcf
i186.crafty
i197.parser
i252.eon
i253.perlbmk
i254.gap
i255.vortex
i256.bzip2
i300.twolf
f168.wupwise
f171.swim
f172.mgrid
f173.applu
f177.mesa
f178.galgel
f179.art
f183.equake
f187.facerec
f188.ammp
f189.lucas
f191.fma3d
f200.sixtrack
f301.apsi
平均削減率
リーク消費エネルギー削減率(%)
SHPがリーク消費エネルギー削減率に
与える影響(L-S)
100
90
-10
-20
-30
20
消費エネルギー・モデル
LEtotal = CSize × CC × LEbit
キャッシュ・サイズ(128K)
SHPにより増加!!
プログラム実行時間:CC = CCconv + CCextra
削減方法なし
増加実行時間
サイクル当たりのSRAMセルリーク消費エネルギー:
LEbit = SR × LEsbit + (1-SR) × LEabit
1bit-sleep-SRAMセル平均リーク消費エネルギー
→0.08LEabit
キャッシュ内のsleepモード部分の割合
2004/04/26
21
リーク消費エネルギー削減率(%)
100
90
-20
-30
-50
141
SHP=1
-69
2
3
80
80
70
70
60
60
50
50
40
40
30
30
20
20
10
10
0
0
-40
-78
実行時間増加率(%)
2004/04/26
-10
i164.gzip
i175.vpr
i176.gcc
i181.mcf
i186.crafty
i197.parser
i252.eon
i253.perlbmk
i254.gap
i255.vortex
i256.bzip2
i300.twolf
f168.wupwise
f171.swim
f172.mgrid
f173.applu
f177.mesa
f178.galgel
f179.art
f183.equake
f187.facerec
f188.ammp
f189.lucas
f191.fma3d
f200.sixtrack
f301.apsi
平均削減率
SHPが実行時間増加率に与える影響
(L-S)
100
90
-10
-20
-30
-40
-50
22
モード切替えアルゴリズムの比較
100
SHP=2
SHP=3
90
80
80
70
70
60
60
50
50
40
40
30
30
20
20
10
10
0
0
-10
-20
2004/04/26
SHP=1
L-S
実行時間増加率(%)
リーク消費エネルギー削減率(%)
90
100
-10
NAC-S
Non-S
L-LS
NAC-LS
Non-LS-20
23
おわりに
まとめ
モード切替えアルゴリズムの分類
比較評価
sleepアクセス・ペナルティの影響
→リーク削減率・実行時間へ悪影響を与える
各アルゴリズム比較
→sleep : 無条件, awake : Load/Store命令発行
今後の課題
未評価アルゴリズム・粒度・データの評価
実行時間増加による性能低下を抑える
制御回路を含めた評価
マルチスレッド環境下での評価
2004/04/26
24
2004/04/26
25
ZonCプロセッサ・モデル
SPARC64プロセッサ
トレースドリブン
Out-of-order実行方式
ノード数
1
CPU数
1
コア数
1
CPUのクロック周波数
ウォームアップ命令数
測定対象命令数
2004/04/26
1250MHz
3,000,000
6,000,000
26
sleepラインの割合(L-S)
80
70
60
Sleep line (%)
50
40
30
20
10
0
1
22 43 64 85 106 127 148 169 190 211 232 253 274 295 316 337 358 379 400 421 442 463 484 505
キャッシュアクセス(*10000回)
2004/04/26
i164-gzip-0025
i175-vpr-0033
i176-gcc-0053
i181-mcf-0239
i186-crafty-0042
i197-parser-0114
i252-eon-0162
i253-perlbmk-0087
i254-gap-0136
i255-vortex-0062
i256-bzip2-0097
i300-twolf-0042
f168-wupwise-0007
f171-swim-0096
f172-mgrid-0103
f173-applu-0001
f177-mesa-0173
f178-galgel-0039
f179-art-0090
f183-equake-0054
f187-facerec-0034
f188-ammp-0182
f189-lucas-0466
f191-fma3d-0141
f200-sixtrack-0090
f301-apsi-0167
27
sleepラインの割合(L-LS)
50
45
40
Sleep line (%)
35
30
25
20
15
10
5
0
1
22 43 64 85 106 127 148 169 190 211 232 253 274 295 316 337 358 379 400 421 442 463 484 505
キャッシュアクセス(*10000回)
2004/04/26
i164-gzip-0025
i175-vpr-0033
i176-gcc-0053
i181-mcf-0239
i186-crafty-0042
i197-parser-0114
i252-eon-0162
i253-perlbmk-0087
i254-gap-0136
i255-vortex-0062
i256-bzip2-0097
i300-twolf-0042
f168-wupwise-0007
f171-swim-0096
f172-mgrid-0103
f173-applu-0001
f177-mesa-0173
f178-galgel-0039
f179-art-0090
f183-equake-0054
f187-facerec-0034
f188-ammp-0182
f189-lucas-0466
f191-fma3d-0141
f200-sixtrack-0090
f301-apsi-0167
28
sleepラインの割合(NAC-S)
120
100
Sleep line (%)
80
60
40
20
0
1
23 45 67 89 111 133 155 177 199 221 243 265 287 309 331 353 375 397 419 441 463 485 507
キャッシュアクセス(*10000回)
2004/04/26
i164-gzip-0025
i175-vpr-0033
i176-gcc-0053
i181-mcf-0239
i186-crafty-0042
i197-parser-0114
i252-eon-0162
i253-perlbmk-0087
i254-gap-0136
i255-vortex-0062
i256-bzip2-0097
i300-twolf-0042
f168-wupwise-0007
f171-swim-0096
f172-mgrid-0103
f173-applu-0001
f177-mesa-0173
f178-galgel-0039
f179-art-0090
f183-equake-0054
f187-facerec-0034
f188-ammp-0182
f189-lucas-0466
f191-fma3d-0141
f200-sixtrack-0090
f301-apsi-0167
29
sleepラインの割合(NAC-LS)
120
100
Sleep line (%)
80
60
40
20
0
1
23 45 67 89 111 133 155 177 199 221 243 265 287 309 331 353 375 397 419 441 463 485 507
キャッシュアクセス(*10000回)
2004/04/26
i164-gzip-0025
i175-vpr-0033
i176-gcc-0053
i181-mcf-0239
i186-crafty-0042
i197-parser-0114
i252-eon-0162
i253-perlbmk-0087
i254-gap-0136
i255-vortex-0062
i256-bzip2-0097
i300-twolf-0042
f168-wupwise-0007
f171-swim-0096
f172-mgrid-0103
f173-applu-0001
f177-mesa-0173
f178-galgel-0039
f179-art-0090
f183-equake-0054
f187-facerec-0034
f188-ammp-0182
f189-lucas-0466
f191-fma3d-0141
f200-sixtrack-0090
f301-apsi-0167
30
sleepラインの割合(Non-S)
120
100
Sleep line (%)
80
60
40
20
0
1
23 45 67 89 111 133 155 177 199 221 243 265 287 309 331 353 375 397 419 441 463 485 507
キャッシュアクセス(*10000回)
2004/04/26
i164-gzip-0025
i175-vpr-0033
i176-gcc-0053
i181-mcf-0239
i186-crafty-0042
i197-parser-0114
i252-eon-0162
i253-perlbmk-0087
i254-gap-0136
i255-vortex-0062
i256-bzip2-0097
i300-twolf-0042
f168-wupwise-0007
f171-swim-0096
f172-mgrid-0103
f173-applu-0001
f177-mesa-0173
f178-galgel-0039
f179-art-0090
f183-equake-0054
f187-facerec-0034
f188-ammp-0182
f189-lucas-0466
f191-fma3d-0141
f200-sixtrack-0090
f301-apsi-0167
31
sleepラインの割合(Non-LS)
120
100
Sleep line (%)
80
60
40
20
0
1
23 45 67 89 111 133 155 177 199 221 243 265 287 309 331 353 375 397 419 441 463 485 507
キャッシュアクセス(*10000回)
2004/04/26
i164-gzip-0025
i175-vpr-0033
i176-gcc-0053
i181-mcf-0239
i186-crafty-0042
i197-parser-0114
i252-eon-0162
i253-perlbmk-0087
i254-gap-0136
i255-vortex-0062
i256-bzip2-0097
i300-twolf-0042
f168-wupwise-0007
f171-swim-0096
f172-mgrid-0103
f173-applu-0001
f177-mesa-0173
f178-galgel-0039
f179-art-0090
f183-equake-0054
f187-facerec-0034
f188-ammp-0182
f189-lucas-0466
f191-fma3d-0141
f200-sixtrack-0090
f301-apsi-0167
32