命令フェッチ機構の共有に基づく

命令フェッチ機構の共有に基づく
低消費エネルギー化手法の提案
九州大学大学院システム情報科学府*
九州大学大学院システム情報科学研究院**
上野伸也* 井上弘士** 村上和彰**
1
発表手順
• 研究背景
– マルチコア・プロセッサにおける課題
– 命令フェッチ機構における低消費エネルギー化の重要性
•
•
•
•
研究の目的
命令フェッチ機構の共有化手法
ベンチマークプログラムを用いた定量的評価
まとめと今後の課題
2
マルチコア・プロセッサにおける課題
• 1チップ上に複数のコアを搭載したマルチコア・プロ
セッサが主流
• マルチコア・プロセッサの消費エネルギー削減が重要
– バッテリー駆動機器
→バッテリー駆動時間
– サーバ、スーパーコンピュータ
→運用コスト
Processor
Core
Processor
Core
Shared
L2 cache
出典: POWER5 system microarchitecture
3
命令フェッチ機構における
低消費エネルギー化の重要性
プロセッサ・コア
• マルチコア・プロセッサに
おいても大きな割合を占
める
33%
35%
38%
命令フェッチ機構で
約40%の消費エネルギー
1%
9%
7%
9%
3%
DCACHE
ALU
命令フェッチ機構
• シングルコア・プロセッサ
において、命令フェッチ機
構における消費エネル
ギーは大きい
DCACHE
LSQ
REG
WINDOW
RENAME
FETCH
ICACHE
BPRED
FE
2
ICACHE
BPRED
ALU
RENAME
WINDOW
LSQ
REGFILE
DCACHE
DCACHE2
RESULTBUS
CLOCK
0%1% 2% 0%
プロセッサの消費エネルギー内訳
4
マルチコア・プロセッサの
並列処理における問題点
………
k=0;
if() z=x+y;
For(i=0~49){
C[k+i]=A[k+i]+B[k+i];
D[k+i]=C[k+i]*(k+i);
}
………
コア0
………
k=50;
if() z=x+y;
For(i=0~49){
C[k+i]=A[k+i]+B[k+i];
D[k+i]=C[k+i]*(k+i);
}
………
コア1
コア1が受け取った命令
コア0が受け取った命令
k=50;
k=0;
z=x+y;
C[k+0]=A[k+0]+B[k+0];
C[k+0]=A[k+0]+B[k+0];
D[k+0]=C[k+0]*(k+0);
D[k+0]=C[k+0]*(k+0);
各プロセッサ・コアにおいてそれぞれ
C[k+1]=A[k+1]+B[k+1];
C[k+1]=A[k+1]+B[k+1];
D[k+1]=C[k+1]*(k+1);
命令フェッチ機構から命令を受け取るのは冗長
D[k+1]=C[k+1]*(k+1);
・・・・・・・・・
・・・・・・・・・
一致
5
研究のねらい
• 着眼点
– マルチコア・プロセッサの並列処理中に、命令フェッ
チ機構から出力されるデータ内容が一致する場合
があることに注目
• 研究の目的
– 並列処理における命令フェッチ機構へのアクセス回
数削減により低消費エネルギー化
⇒命令フェッチ機構において最大20%の消費エネル
ギー削減効果
6
提案手法の基本概念と動作例
マルチコア・プロセッサ
演算コア
コア1
メインコア
コア0
FETCH
FETCH
ブロードキャスト
MIMDモード
SIMDモード
停止している命令フェッチ機構の
消費エネルギー削減
MIMDモード:従来の並列処理方式。
全てのコアで命令をフェッチ、実行
EXE
EXE
SIMDモード:メインコアで命令を
フェッチし、各コアへブロードキャスト
MIMD:
Multiple Instruction stream,
Multiple Data stream
SIMD:
Single Instruction stream,
Multiple Data stream
7
提案手法の基本概念と動作例
マルチコア・プロセッサ
プログラムカウンタ更新
演算コア
コア1
メインコア
コア0
FETCH
FETCH
ブロードキャスト
待機
EXE
EXE
SIMDモード
MIMDモード
停止している命令フェッチ機構の
消費エネルギー削減
MIMDモード:従来の並列処理方式。
全てのコアで命令をフェッチ、実行
SIMDモード:メインコアで命令を
フェッチし、各コアへブロードキャスト
コア0が実行するプログラム
コア1が実行するプログラム
………
待機
k=0;
if() z=x+y;
For(i=0~49){
C[k+i]=A[k+i]+B[k+i];
D[k+i]=C[k+i]*(k+i);
}
………
………
k=50;
if() z=x+y;
For(i=0~49){
C[k+i]=A[k+i]+B[k+i];
D[k+i]=C[k+i]*(k+i);
}
………
MIMD:
Multiple Instruction stream,
Multiple Data stream
SIMD:
Single Instruction stream,
Multiple Data stream
8
命令フェッチ機構の
消費エネルギー削減モデル
SIMDモード時の命令フェッチ機構の
消費エネルギー
RFETCH
SIMDモードで実行した命令数
 ESIMD 
I SIMD
 
 1 
 EMIMD  I MIMD  I SIMD
MIMDモード時の命令フェッチ機構の
小さいほど削減率が高い
消費エネルギー
プロセッサの構成により決定
総実行命令数
大きいほど削減率が高い
プログラムの性質によって決定
9
提案方式の評価
• 評価内容
消費エネルギー比較
– 従来方式: 全てMIMDモードで実行
– 提案方式: MIMDモード,SIMDモードを切り替えながら実行
• オンチップ上の消費エネルギーを比較
• コア間の通信にかかる消費エネルギーは0と仮定
• 評価環境
– シミュレータ: 消費電力シミュレータ SIM-WATTCH,CMPシミュレータ M5
– ベンチマークプログラム:Splash2から4個のプログラムを選択
コア0
コア1
I$ D$
I$ D$
L2
L2
主記憶
コア7
・・・・・・
I$ D$
L2
オンチップ
オフチップ
10
命令フェッチ機構における
消費エネルギー削減効果
命令フェッチ機構における
消費エネルギー削減率
25%
20%
15%
10%
5%
0.001127129
0%
OCEAN
RADIX
WATER-SPATIAL
FFT
ベンチマークプログラム
OCEAN、WATER-SPATIALにおいて約20%の削減効果
11
消費エネルギー削減率
プロセッサ全体の
消費エネルギー削減効果
9%
8%
7%
6%
5%
4%
3%
2%
1%
0%
OCEAN
RADIX
WATER-SPATIAL
最大で約8%の消費エネルギー削減
12
まとめと今後の課題
• まとめ
– 並列処理における命令フェッチ機構の共有による消費エ
ネルギー削減手法を提案
– ベンチマークプログラムを用いた評価では、命令フェッチ
機構において最大20%,プロセッサ全体では最大約8%の
消費エネルギー削減効果
• 今後の課題
– コア間の通信における消費エネルギーを考慮した評価
– 提案手法における同期回数の増加による性能オーバー
ヘッドの評価
– ベンチマークプログラムの追加
13
ご清聴ありがとうございました
14
Back Slide
15
性能オーバーヘッド
• 同期回数の増加に伴う実行時間の増加
従来手法
1
2
提案手法
3
スレッド番号
1
2
3
MIMD
同期
時間
SIMD
:実行中
:待機状態
同期
MIMD
増加
同期
16
アーキテクチャサポート
CLK
SIMD
CLK
SIMD
P
C
M
Fetch 1 U
1 X
演算
部
P
C
M
Fetch 1 U
1 X
0
0→1
演算
部
0
REG
P
C
SIMD
Fetch
演算
部
P
C
メインコア
CLK
0M
Fetch 1 U
1 X
演算
部
CLK
SIMD
17
マルチコア・プロセッサ
における並列処理
プロセッサ・コア1が
実行するプログラムコード
………
For(i=0~99){
C[i]=A[i]+B[i];
D[i]=C[i]*i;
}
………
並列化前のプログラムコード
………
For(i=0~49){
C[i]=A[i]+B[i];
D[i]=C[i]*i;
}
………
プロセッサ・コア2が
実行するプログラムコード
………
For(i=50~99){
C[i]=A[i]+B[i];
D[i]=C[i]*i;
}
………
並列化後のプログラムコード
18
制御フローの一致
プロセッサ・コア1が実行するプログラム
………
For(i=0~49){
C[i]=A[i]+B[i];
D[i]=C[i]*i;
}
………
プロセッサ・コア2が実行するプログラム
………
For(i=50~99){
C[i]=A[i]+B[i];
D[i]=C[i]*i;
}
………
………
I0:$10=0
I1:$11=50
I2:load $1
I3:load $2
I4:$3=$1+$2
I5:$4= $3 * $10
I6:$10=$10+1
I7:if $10<$11JUMP I2
………
………
I0:$10=50
I1:$11=100
I2:load $1
I3:load $2
I4:$3=$1+$2
I5:$4= $3 * $10
I6:$10=$10+1
I7:if $10<$11JUMP I2
………
19
冗長な命令キャッシュへのアクセス
プロセッサ・コア1
I2
プロセッサ・コア1
I3
0x00112233
I2
プロセッサ・コア2
I3
0x00112233
0x01020304
ICACHE
t
PC
ICACHE
PC
時刻
ICACHE
PC
ICACHE
PC
プロセッサ・コア2
0x01020304
t+1
20
消費エネルギーモデル
• 従来手法における消費エネルギー:E ORG
–
EORG = E MIMD  ITOTAL + Ecom
• 提案手法における消費エネルギー:E PRO
–
EPRO = EMIMD  IMIMD + (ESIMD + ΔEcom )  ISIMD + Ecom
コア間の通信にかかる消費エネルギーは0と仮定して評価
• 消費エネルギー削減効果:R
–
E PRO
ESIMD
ISIMD
R = 1= (1)
E ORG
E MIMD ITOTAL
EMIMD:MIMDモードで1命令実行するのにかかる消費エネルギー
ESIMD:MIMDモードで1命令実行するのにかかる消費エネルギー
ITOTAL:総実行命令数 IMIMD:MIMDモードで実行した命令数
ISIMD:MIMDモードで実行した命令数 Ecom:コア間の通信にかかる全消費エネルギー
ΔEcom:SIMDモード時、1命令のブロードキャストにかかる消費エネルギー
21
消費エネルギー削減効果
• 命令キャッシュにおける消費エネルギー削減率
消費エネルギーは実行命令数に比例すると仮定
I SIMD N  1
–
RIcache 
ITOTAL

N
• プロセッサ全体における消費エネルギー削減率
コア間の通信にかかる消費エネルギーは0と仮定して評価
ESIMD
ISIMD
–
R reduce = (1-
ITOTAL:総実行命令数
E MIMD
)
I TOTAL
ISIMD:MIMDモードで実行した命令数
N:コア数
EMIMD:MIMDモードで1命令実行するのにかかる消費エネルギー
ESIMD:MIMDモードで1命令実行するのにかかる消費エネルギー
22
シミュレーション環境
23
M5の設定
プロセッサの構成
8コア・アウトオブオーダ
命令発行幅
8
L1命令キャッシュ
サイズ 32KB /ブロックサイズ 64B/連想度
4/レイテンシ 1サイクル
L1データキャッシュ
サイズ 32KB /ブロックサイズ 64B/連想度
4/レイテンシ 1サイクル
L2キャッシュ
サイズ 1MB/ブロックサイズ 64B/連想度 4/
レイテンシ 6サイクル
24
ベンチマークプログラムの入力
プログラム
入力
OCEAN
258 × 258 ocean
RADIX
256K integers
WATER-SPATIAL
512 molecules
FFT
1024 data points
25
実験結果(グラフ)
26
様々な構成における
消費エネルギー削減率
9%
プロセッサ全体の
消費エネルギー削減率
8%
7%
6%
5%
OCEAN
RADIX
4%
WATER-SPATIAL
3%
2%
1%
0%
IO1
IO2
IO4
OoO1
OoO2
OoO4 C2_OoO1 C2_OoO2 C2_OoO4
27
SIMDモードによる
消費エネルギー削減効果
α=ESIMD/EMIMD
0.9
0.85
0.8
0.75
0.7
0.65
0.6
0.55
0.5
IO1
IO2
IO4
OoO1
プロセッサ構成
OoO2
OoO4
C2_OoO1 C2_OoO2 C2_OoO4
28
実験結果(2/2)
• プロセッサ全体の消費エネルギー削減効果
7%
消
費
エ
ネ
ル
ギ
ー
削
減
率
6%
5%
4%
OCEANcontig
radix
3%
WATER-SPATIAL
2%
1%
0%
IO1
IO2
IO4
OoO1
OoO2
OoO4
最大で6%の消費エネルギー削減
cache2
29
様々な構成のプロセッサにおける
消費エネルギー内訳
100%
90%
80%
CLOCK
70%
RESULTBUS
DCACHE2
60%
DCACHE
REGFILE
50%
LSQ
WINDOW
40%
RENAME
ALU
30%
BPRED
ICACHE
20%
10%
0%
OoO1
OoO2
OoO4
IO1
IO2
IO4
C2_OoO1 C2_OoO2 C2_OoO4
30
実験結果(2/3)
•各ベンチマークプログラムにおける全実行時間に対
する並列処理の実行時間割合
並列処理を行う時間の割合
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
OCAEN_CONTIG
RADIX
WATER-SPATIAL
ベンチマークプログラム
FFT
FFTでは並列処理を行う時間の割合が小さい
31
解決策
• 命令の内容が同じ⇒ブロードキャスト
………
k=0;
For(i=0~49){
C[k+i]=A[k+i]+B[k+i];
D[k+i]=C[k+i]*(k+i);
}
ブロードキャスト
………
コア1が受け取った命令
C[k+0]=A[k+0]+B[k+0];
D[k+0]=C[k+0]*(k+0);
i=i+1;
ループ継続判定
C[k+1]=A[k+1]+B[k+1];
D[k+1]=C[k+1]*(k+1);
・・・・・・・・・
………
k=50;
For(i=0~49){
C[k+i]=A[k+i]+B[k+i];
D[k+i]=C[k+i]*(k+i);
}
………
コア2が受け取った命令
コア1
C[k+0]=A[k+0]+B[k+0];
D[k+0]=C[k+0]*(k+0);
i=i+1;
ループ継続判定
C[k+1]=A[k+1]+B[k+1];
D[k+1]=C[k+1]*(k+1);
・・・・・・・・・
コア2
32
マルチコア・プロセッサの
並列処理における問題点
………
k=0;
if
For(i=0~49){
C[k+i]=A[k+i]+B[k+i];
D[k+i]=C[k+i]*(k+i);
}
………
………
k=50;
if
For(i=0~49){
C[k+i]=A[k+i]+B[k+i];
D[k+i]=C[k+i]*(k+i);
}
………
コア1が受け取った命令
コア2が受け取った命令
フェッチ機構から受け取った内容は一致
C[k+0]=A[k+0]+B[k+0];
D[k+0]=C[k+0]*(k+0);
i=i+1;
ループ継続判定
C[k+1]=A[k+1]+B[k+1];
D[k+1]=C[k+1]*(k+1);
・・・・・・・・・
コア1
C[k+0]=A[k+0]+B[k+0];
D[k+0]=C[k+0]*(k+0);
i=i+1;
ループ継続判定
C[k+1]=A[k+1]+B[k+1];
D[k+1]=C[k+1]*(k+1);
・・・・・・・・・
コア2
各プロセッサ・コアがそれぞれ命令フェッチ機構
から命令を受け取るのは冗長
33