マルチ・スレッド 実行を前提とした キャッシュ・リー

マルチ・スレッド実行を前提とした
キャッシュ・リーク削減アルゴリズムの評価
福岡大学
◎小宮礼子 井上弘士 モシニャガ・ワシリー
九州大学
村上和彰
2004/09/08
1
発表手順
はじめに
キャッシュ・リーク削減手法
評価対象手法
マルチ・スレッド実行時の評価
おわりに
2004/09/08
2
はじめに
プロセッサの消費電力
=リーク消費電力+動的消費電力
ARM-110
70%
プロセッサ中のリーク電力の割合*
Power: 43 %
キャッシュ・メモリのリーク消費電力削減が必要!!
* Fred Pollack (Intel Fellow): New Microarchitecture Challenges in the Coming Generations of CMOS Process Technologies [Micro32]
2004/09/08
3
キャッシュ・リーク削減手法
リーク削減方式
sleepモード
(低リーク・低速)
従来方式
awakeモード
(高速・高リーク)
ある粒度単位でsleepモードとawakeモードを切替える
sleepモード領域が増加→リーク削減
sleepモードへのアクセス→ペナルティによる性能低下
将来,参照されないであろう領域をsleepモードへ変更
2004/09/08
4
従来評価
リーク削減手法の分類と定量的評価
分類
いつモードを切替えるか?
どの範囲で制御するか?
どのようにしてモードを切替えるか?
評価
リーク消費エネルギー削減率
実行時間増加率
2004/09/08
5
従来評価
前提:単一スレッド実行
単一スレッド
1スレッドのみを実行
(ST)
マルチ・スレッド 複数スレッドを同時に実行
→スレッドの組合せによりアクセスパタンが変化
(MT)
MT実行時にリーク削減手法が有効か?
研究目的
MT実行時のリーク削減手法有効性評価
2004/09/08
6
評価対象(Drowsy Cache)
単一スレッド評価時に最良だったリーク削減手法
いつモードを切替えるか?
awake→sleep:将来,参照されない領域を検出
一定サイクル(4Kサイクル)経過後
sleep→awake:将来,参照されるであろう領域を検出
アクセス発生時
どの範囲で制御するか?
ライン単位
アクセス
どのようにしてモードを切替えるか?
アクセス
awake
sleep
内部状態非破壊方式
2004/09/08
7
評価
ベンチマーク
プログラム
ZonC
入力
SPARCシミュレータ
抽出
アドレス
トレース
128KB,連想度2 ,データL1キャッシュ
実行サイクル
トレース
入力
出力
リーク削減率
実行時間
増加率
ベンチマーク:SPEC2000
600万命令実行
SPARC64プロセッサ
スレッド数4
(アウト・オブ・オーダ実行)
キャッシュ・シミュレータ
性能・リーク消費エネルギーの測定
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.
2004/09/08
8
消費エネルギー・モデル
LEtotal = CSize × CC × LEbit
キャッシュ・サイズ(128K)
プログラム実行時間:CC = CCconv + CCextra
削減方法なし
実行時間ペナルティ
サイクル当たりのSRAMセルリーク消費エネルギー:
LEbit = SR × LEsbit + (1-SR) × LEabit
1bit-sleep-SRAMセル平均リーク消費エネルギー
→0.08LEabit
キャッシュ内のsleepモード部分の割合
2004/09/08
9
入力ベンチマーク・プログラム
Max
Min
i176.gcc
i164.gzip
ET
f179.art
f173.applu
f191.fma3d
i255.vortex
i252.eon
i175.vpr
i253.perlbmp
i254.gap
f168.wupwise
f200.sixtrack
i253.perlbmp
i254.gap
LE
f200.sixtrack
i256.bzip2
f188.ammp
i186.crafty
i255.vortex
i197.parser
f179.art
i176.gcc
i181.mcf
f178.galgel
ET:実行時間増加率
2004/09/08
Mid
LE:リーク消費エネルギー削減率
10
SHPがリーク消費エネルギー削減率に与える影響
100
SHP=1 2
3 cycle
90
リーク消費エネルギー削減率(%)
80
70
60
50
40
30
20
10
0
2004/09/08
ET-Max ET-Mid ET-Min LE-Max LE-Mid LE-Min
11
消費エネルギー・モデル
LEtotal = CSize × CC × LEbit
キャッシュ・サイズ(128K)
SHPにより増加!!
プログラム実行時間:CC = CCconv + CCextra
削減方法なし
実行時間ペナルティ
サイクル当たりのSRAMセルリーク消費エネルギー:
LEbit = SR × LEsbit + (1-SR) × LEabit
1bit-sleep-SRAMセル平均リーク消費エネルギー
→0.08LEabit
キャッシュ内のsleepモード部分の割合
2004/09/08
12
入力ベンチマーク・プログラムの影響
2004/09/08
SHP = 1
SHP = 2
SHP = 3
100
90
90
80
80
70
70
60
60
50
50
40
40
30
30
20
20
10
10
0
0
ET-Max ET-Mid ET-Min LE-Max LE-Mid LE-Min
実行時間増加率(%)
リーク消費エネルギー削減率(%)
100
13
消費エネルギー・モデル
LEtotal = CSize × CC × LEbit
キャッシュ・サイズ(128K)
低減!!
プログラム実行時間:CC = CCconv + CCextra
削減方法なし
実行時間ペナルティ
サイクル当たりのSRAMセルリーク消費エネルギー:
LEbit = SR × LEsbit + (1-SR) × LEabit
1bit-sleep-SRAMセル平均リーク消費エネルギー
→0.08LEabit
キャッシュ内のsleepモード部分の割合
2004/09/08
14
おわりに
まとめ
MT実行時のリーク削減手法の有効性を評価
入力ベンチマーク ET-Min
SHP 1cycle
リーク削減率:
88.2%
実行時間増加率: 1.84%
ST実行時に実行時間増加が低いプログラム
→高いリーク削減効果
今後の課題
実行時間増加による性能低下を抑える
2004/09/08
15
2004/09/08
16
ZonCプロセッサ・モデル
SPARC64プロセッサ
トレースドリブン
Out-of-order実行方式
ノード数
1
CPU数
1
コア数
1
CPUのクロック周波数
ウォームアップ命令数
測定対象命令数
2004/09/08
1250MHz
3,000,000
6,000,000
17
マルチ・スレッド
VMTを使用:
2次キャッシュミスをトリガにしてスレッド切替え
時間
スレッド1
2004/09/08
スレッド2
18
切り替えアルゴリズムの分類
Sleepモードへの切替えアルゴリズム
切替え条件
カウンタ型
(target)
監視期間
条件確認
カウンタ値≦閾値
(ミス数[1],アクセス数)
Time-Window[1]
同期[1]
カウンタ値≧閾値
(実行サイクル数[3])
Time-Window[3]
同期[3]
カウンタ値≧閾値
(ヒット数、非アクセスサイクル[2])
イベント型
Load命令発行[4]
[1]DRI
[2]Decay
T
2004/09/08
Time-Window
同期
非同期
No-Time-Window[2]
---
No-Time-Window[4]
---
[3]Drowsy
[4]Hierarchy
非同期
同期
t
Time-Window
No-Time-Window
19
切替えタイミング
<TW同期型>
T
<TW非同期型>
T
<NTW型>
条件確認
利点 判定回数が少ない
t
モード切替え
監視期間
欠点 モード切替えまでに
時間のロス
条件確認
t
モード切替え
監視期間
利点 モード切替えが早い
欠点 常に条件確認が必要
条件確認
利点 モード切替えが早い
t
モード切替え
監視期間
欠点 実現不可能なアルゴ
リズムがある
T:Time-Window
条件成立
20
Awakeモードへの切替えアルゴリズム
切替え条件
カウンタ型
(target)
監視期間
条件確認
カウンタ値≦閾値
(ヒット数、非アクセスサイクル)
Time-Window
同期
カウンタ値≧閾値
(実行サイクル数)
Time-Window
同期
Time-Window [1]
カウンタ値≧閾値
(ミス数[1],アクセス数)
イベント型
Store命令発行[4]
Load/Store命令発行[2 [3]]
[1]DRI
2004/09/08
[2]Decay
同期
非同期[1]
No-Time-Window
---
No-Time-Window [2] [3][4]
---
[3]Drowsy
[4]Hierarchy
21
比較対象モデルの決定
モデル
(sleep-awake)
sleepモードへ
awakeモードへ
切替条件 監視期間 条件確認 切替条件 監視期間 条件確認
EC-EC
EC
TW
同期
EC
TW
同期
EC-NAC
EC
TW
同期
NAC
TW
同期
EC-S
EC
TW
同期
S
NTW
---
EC-LS
EC
TW
同期
LS
NTW
---
NAC-EC
NAC
NTW
---
EC
TW
同期
NAC-NAC
NAC
NTW
---
NAC
TW
同期
NAC-S
NAC
NTW
---
S
NTW
---
NAC-LS
NAC
NTW
---
LS
NTW
---
EC: Execution Cycles NAC: No-Access-Cycles S: Store LS: Load/Store
(実行サイクル数)
2004/09/08
(非アクセスサイクル数)
(Store命令発行) (Load/Store命令発行)
22
モード切替えアルゴリズムの比較
100
LEtotal(SHP=2)
Exe.Time(SHP=2)
LEtotal(SHP=3)
Exe.Time(SHP=3)
100
90
80
80
70
70
60
60
50
50
40
40
30
30
20
20
10
10
0
0
EC-EC
EC-NAC
EC-S
EC-LS
NAC-EC NAC-NAC NAC-S
NAC-LS
実行時間増加率(%)
リーク消費エネルギー削減率(%)
90
LEtotal(SHP=1)
Exe.Time(SHP=1)
23