Upload
essien
View
41
Download
0
Embed Size (px)
DESCRIPTION
稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案. 九州大学大学院 今村 智史 福本 尚人 井上 弘士 村上 和彰. 発表手順. マルチコアにおける並列処理の問題 稼働コア数制限に基づく高性能化手法 基本概念 定量的評価 実行時間モデルを用いた稼働コア数決定法 まとめと今後の課題. 発表手順. マルチコアにおける並列処理の問題 稼働コア数制限に基づく高性能化手法 基本概念 定量的評価 実行時間モデルを用いた稼働コア数決定法 まとめと今後の課題. マルチコアに おける 並列処理. 並列 プログラム. スレッド. スレッド. - PowerPoint PPT Presentation
Citation preview
稼働コア数制限に基づくマルチコア・プロセッサ
性能向上手法の提案
九州大学大学院今村 智史 福本 尚人井上 弘士 村上 和彰
1
発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価
• 実行時間モデルを用いた稼働コア数決定法
• まとめと今後の課題
2
発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価
• 実行時間モデルを用いた稼働コア数決定法
• まとめと今後の課題
3
マルチコアにおける並列処理
4
並列プログラム
コア コア コア
共有キャッシュ
コア
スレッド
スレッド
スレッド
スレッド
マルチコアの概略図
• マルチコア・プロセッサが主流– 1 チップに複数のコアを搭載– プログラムを複数スレッドに分割し,各コアに
割り当てることで並列処理が可能• 理想的にはコア数に比例した性能向上
マルチコアにおける並列処理の問題
5稼働コア数
性能
比
稼働コア数
性能
比
稼働コア数
性能
比
1 2 4 8 16 3205
1015202530
realmemory-ideal
blackscholes
1 2 4 8 16 320
1
2
3
4
5
realmemory-ideal
1 2 4 8 16 32012345678
realmemory-ideal
streamclusterferret
稼働コア数増加に伴い
性能向上
稼働コア数増加に伴い性能向上が頭打ち
稼働コア数を 32 に増加
させると性能低下
1 2 4 8 16 320
5
10
15
20
25realmemory-ideal
性能
比
稼働コア数
メモリアクセスにより
性能向上が阻害
Radix
並列処理による性能向上の阻害要因
• 逐次処理
• 排他制御 • ロードインバランス
6
逐次処理と排他制御による性能向上の阻害
7
• 並列プログラムには逐次処理部分と並列処理可能部分が存在– 逐次処理部分は 1 コアのみで実行
• プログラムの整合性を保つためにクリティカルセクション (CS) が存在– CS: 共有データにアクセスするプログラムの部分– CS 内の処理を行う間は排他制御⇒ 他のコアを待機させ, 1 コアのみで実行
並列処理による性能向上を阻害
ロードインバランスによる並列処理性能向上の阻害
8
• コア毎に処理時間が異なる場合– バリア同期を行う度に処理時間が最も長いコアのバ
リアへの到達を他の全コアが待機 ⇒効率的な並列処理を行えない
• バリア同期:全コアがバリアに到達するまで各コアを待機させ, 全コアが到達すると処理を同時に開始
既存の解決手法• 稼働コア数制限手法 [1]– 稼働コア数増加に伴い性能向上しない場合に稼働コ
ア数をあえて制限– 性能を維持または向上しつつ,消費電力削減
99
性能
比
稼働コア数 稼働コア数
性能
比
1 2 4 8 16 320
1
2
3
4
5
realmemory-ideal
1 2 4 8 16 32012345678
realmemory-ideal
streamclusterferret
性能を維持しつつ消費電力削減 性能を向上しつつ
消費電力削減
[1] Suleman, M et al.: Feedback-driven threading: power-efficient and high-performance
execution of multi-threaded workloads on CMPs, ACM,(2008).
稼働コア数に応じた動作周波数上昇手法
• Intel 社の TurboBoost[2]– プロセッサの消費電力・発熱量を動的に監視– 消費電力・発熱量が上限値に達していない場合,稼働コア
への供給電圧と動作周波数を上昇• 稼働コア数が少ないほど,消費電力・発熱量は減少
⇒稼働コアの動作周波数を大幅に上昇可能
10[2] Intel Corporation: Intel Turbo Boost Technology in Intel Core Microarchitecture (Nehalem)Based Processors. ,Whitepaper,(2008).
コア コア コア
共有 L2 キャッシュ
コア コア コア 休止
共有 L2 キャッシュ
休止
4 コア稼働時
2 コア稼働時f
上昇
f上昇
研究目的• 着眼点– プログラムに応じた稼働コア数制限により性能を維
持または向上しつつ消費電力を削減可能
– 稼働コア数に応じて動作周波数上昇可能
11
消費電力制約下において並列性 ( 稼働コア数 )と稼働コアの動作周波数上昇の適切なトレードオフポイントを選択⇒マルチコアによる並列プログラム実行の高速化
発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価
• 実行時間モデルを用いた稼働コア数決定法
• まとめと今後の課題
12
稼働コア数制限に基づくマルチコア・プロセッサ性能向上手法
13
稼働コア数増加に伴い性能向上が得られない場合・・・
コア コア コア
共有 L2 キャッシュ
コア休止 休止f 上昇
f 上昇
休止させたコアの消費電力バジェットを稼働コアに再割り
当て⇒稼働コアの動作周波数上昇
稼働コア数をあえて制限
⇒消費電力削減
稼働コア数
性能
比
1 2 4 8 16 32012345
稼働コア数制限
ferret動作周波数上昇
ベンチマークプログラムを用いた定量的評価
• 比較対象– all_core :全コア (32 コア ) による実行– throttling: 性能向上を最大にする稼働コア数 ( 最適コア数 ) によ
る実行• 動作周波数上昇なし
– proposal_opt :最適コア数で実行する場合の提案手法
• 前提– プログラム全体を通して一定の動作周波数で実行– throttling , proposal_opt において最適コア数は既知
14
評価環境
15
• シミュレータ:マルチコアシミュレータ M5• ベンチマーク・プログラム
– PARSEC からblackscholes , dedup , swaptions , streamcluster , ferret の 5 つ
Core0 Core1 Core31・・・共有 L2 キャッシュ
主記憶
L1 キャッシュ
L1 キャッシュ
L1 キャッシュ
サイズ: 32[KB]アクセス時間
0.5[ns]
サイズ: 16[MB]アクセス時間 :4[ns]
アクセス時間 :150[ns]シミュレータの設定
稼働コア数に応じた動作周波数• 全コア (32 コア ) 稼働時の消費電力を上限値に設定
• 消費電力が上限値を超えないよう,稼働コア数に応じて動作周波数と供給電圧を決定– 動作周波数は 100MHzごと,供給電圧は 38mVごとに変化– 最大動作周波数は 5GHz
16
2_ 32 VfCP coreall αα: スイッチング確率 C:1 コア当たりの負荷容量f: 定格周波数 (2GHz) V: 定格供給電圧 (1.3V)
動作
周波
数[G
Hz]
稼働コア数1 4 7 10 13 16 19 22 25 28 310 1 2 3 4 5 6
4 8 12 16 20 24 28 32
評価結果 ( 性能 )
17
ベンチマーク・プログラム
• 稼働コア数制限手法– ferret , streamcluster において性能を低下させず稼働コア数を制限
• 最適コア数で実行する場合の提案手法– ferret , streamcluster において性能向上達成
blackscholes swaptions dedup ferret streamcluster0
0.5
1
1.5
2
2.5all_core throttling proposal_opt
性能
向上
比
32 32 3232 32 28 8
6
15
7
事前実行時間短縮のために最適コア数の予測が必要
発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価
• 実行時間モデルを用いた稼働コア数決定法
• まとめと今後の課題
18
実行時間モデルによる稼働コア数決定法
19
並列プログラム 事前実行プロファイル情
報
コア数
0
0.5
1
1.5
2
実行
時間
[秒]
実行時間モデル
代入
コア数に応じた実行時
間を計算
実行時間が最短となる場合のコア数を稼
働コア数に決定
)(
)1(
)1( nf
CSn
CSPCC
f
PCCT
seq
seqprop
実行時間モデル
20
逐次処理部分
並列処理可能部分稼働コア数
稼働コア数に応じた動作周波
数
クリティカルセクション (CS) における排他制御に注目
CC : 1 コアでのプログラム実行に要する総クロックサイクル数Pseq :全プログラム実行時間に対する逐次処理部分の実行時間の割合CS :全プログラム実行時間に対するクリティカルセクション実行時間の割合
最適コア数と実行時間モデルにより決定したコア数での性能比較
21
性能
向上
比
ベンチマーク・プログラム
proposal_model :実行時間モデルにより決定したコア数で実行する場合の提案手法
• blacksholes , swaptions :最適コア数と同じコア数を決定• ferret :最適コア数に近いコア数を決定
– 約 73% 性能向上• dedup , streamcluster :最適コア数に近いコア数を決定できていない
blackscholes swaptions dedup ferret streamcluster0
0.5
1
1.5
2
2.5all_core proposal_opt proposal_model
32 32 32 32 2810
6 77
32
実行時間モデルの妥当性に対する考察[精度が高い場合 ]
• 逐次処理部分と CS を除いた並列処理可能部分の実行時間がプログラム実行時間の約 99% を占める– 性能向上阻害要因の影響が極めて小さい ⇒実測性能とほぼ同等の性能を予測可能 22
blackscholesの情報
逐次処理部分の割合 1.030[%]
CS の割合 0.089[%]
実行時間モデルの妥当性に対する考察[精度が低い場合 (1/2)]
• 稼働コア数が 20未満の場合,実測値<予測値– 実際の実行:ロードインバランスなパイプライン並列処理 [3]– 実行時間モデル:ロードインバランスを未考慮のため性能を過大予測
• 稼働コア数が 20以上の場合,実測値≧予測値– 実際の実行: CS に無関係な処理は並列処理可能– 実行時間モデル: CS 実行時には,常に全コアが同一の CS を実行すると想定している
ため性能を過小予測 23
dedupの情報
逐次処理部分の割合 7.565[%]
CS の割合 3.824[%]
[3] Bienia, C. et al: The PARSEC benchmark suite: Characterization and architectural implications,ACM,(2008).
実行時間モデルの妥当性に対する考察[精度が低い場合 (2/2)]
• CS の割合が極めて小さいが,稼働コア数増加に伴い性能低下– 実際の実行:多数のバリア同期 [4]⇒ バリア同期を行う度にロードインバランスの影響により待ち時間発生
– 実行時間モデル:ロードインバランスを未考慮のため,性能を過大予測
24
streamcusterの情報
逐次処理部分の割合 2.975[%]
CS の割合 0.029[%]
[4] Navarro, A et al.: Analytical modeling of pipeline parallelism,PACT, (2009).
発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価
• 実行時間モデルを用いた稼働コア数決定法
• まとめと今後の課題
25
まとめと今後の課題• 稼働コア数制限に基づくプロセッサ性能向上手法
– 稼働コア数をあえて制限し,稼働コアの動作周波数を上昇– 実行時間モデルとプロファイル情報から稼働コア数を決定– 最適コア数で実行する場合,最大 2倍以上の性能向上– 実行時間モデルにより決定した稼働コア数で実行する場合,
最大約 73% の性能向上
• 今後の課題– 実行時間モデルを再検討し,稼働コア数決定法の精度向上
• CS の実行時間を再検討• ロードインバランスによる影響も考慮
26
ご清聴ありがとうございました
27
Backup slide
28
稼働コア数制限手法 [1]• 稼働コア数増加に伴い性能向上しない場合
⇒稼働コア数を制限• 性能を維持または向上しつつ,消費電力削減• 2 つの阻害要因に着目
– クリティカルセクションにおける排他制御– オフチップメモリバンド幅の制限
[1]M.A. Suleman et al. ” feedback-driven threading: power- efficient and high- performance execution of multi-threaded workloads on cmps”. 2008.
29
稼働コア数
性能
比
1 2 4 8 16 3202468
10121416
realideal
ferret
実測値と予測値の比較~ ferret~
30
性能
比
稼働コア数
012345678
ferret
• CS における排他制御が性能へ大きく影響⇒予測値が実測値と同様の傾向を示す
• 実際の実行:ロードインバランスなパイプライン並列処理 [3]• 実行時間モデル:ロードインバランスを未考慮のため性能を過大予測
ferretの情報
逐次処理部分の割合 4.151[%]
CS の割合 13.746[%]実測値
予測値
消費エネルギー比の算出方法• 全コア実行時に対する消費エネルギー比
= 消費電力比 × 実行時間比
–
– 31
コア稼働時の消費電力全コア稼働時の消費電力消費電力比32
n
232
2
)32(
)()()(
VfkCa
nVnfnkCa n
2
2
)3.1(232
)()(
nVnfn
コア稼働時の実行時間全コア稼働時の実行時間
実行時間比32
n
評価結果 ( 消費エネルギー )
32
blackscholes swaptions dedup ferret streamcluster0
0.2
0.4
0.6
0.8
1
1.2
1.4all_core throttling proposal_opt proposal_model
消費エネ
ルギ
ー比
ベンチマーク・プログラム
3232
3232
32 32 32 28
8
6 7
157
32
10
• 最適コア数で実行する場合の提案手法– dedup , ferret , streamcluster において消費エネルギー削減
• 提案手法 ( 実行時間モデルにより稼働コア数決定 )– dedup おいて消費エネルギー増加– ferret において消費エネルギー削減
現代のプロセッサ• マルチコア・プロセッサが一般的– 1 チップに複数のコアを搭載– 並列処理により性能向上– 同消費電力制約下のシングルコアに比べ
電力効率に優れる
Intel Corei7ダイ写真出典: http://www.atmarkit.co.jp/fsys/zunouhoudan/102zunou/corei7.html
33
なぜマルチコアなのか?• シングルコアに比べ電力効率に優れる• プロセッサの動的消費電力
• 上式をシングルコアの動的消費電力とする• コア数 2 ,動作周波数 50% 低下,供給電圧 20% 低下の
マルチコアの動的消費電力を考えると...
2VfCPdynamic αα: スイッチング確率 C: コア 1 つ当たりの負荷容量 f: 動作周波数 V:供給電圧
22_ )8.0(5.02 VfCP coredynamic α
264.0 VfC α
性能を維持しつつ動的消費電力を 36% 削減 34
ロードインバランスによる並列処理性能向上の阻害
35
• コア毎に処理時間が異なる場合– バリア同期を行う度に処理時間が最も長いコアのバリアへの到
達を他の全コアが待機• バリア同期:全コアがバリアに到達するまで各コアを待機させ,
全コアが到達したら処理を同時に開始
⇒効率的な並列処理を行えない
処理 処
理処理 処
理
バリア
待機
コア 0 コア 1 コア 2 コア 3
待機
実行時
間
評価環境
シミュレータの設定
コアの構成 32 コア,イン・オーダ
L1命令キャッシュ 32KB , 2-way , 64B lines0.5 ns , MSHR 8
L1 データキャッシュ 32KB , 2-way , 64B lines0.5 ns , MSHR 32
L2 キャッシュ 16MB , 8-way , 64B lines4 ns , MSHR 92
L1-L2 間共有バス幅 64B
L2- 主記憶間共有バス幅 16B
主記憶アクセス時間 150 ns
Miss Status Buffer エントリ数: 20 ,レイテンシ: 1 clock cycle
36
• シミュレータ:マルチコアシミュレータ M5[2]• ベンチマーク・プログラム
– PARSEC[3] から blackscholes , dedup , swaptions , streamcluster , ferret の5つ
Core0 Core1 Core31・・・
32KB の L1キャッシュ搭載
32KB の L1キャッシュ搭載
32KB の L1キャッシュ搭載
16MB,4 ns の L2 キャッシュ
4GB,150 ns の主記憶
37
共有データに対する処理の例( 排他制御なし )
load;add 1;store;
スレッド A スレッド Bメモリの 100番地内
のデータ D
実行時間
load;add 1;store;
0
1
• スレッド A,B がそれぞれデータ D に 1 を加えたが,データ D の値は1
38
スレッド B
load;add 1;store;
スレッド Aメモリの 100番地内
のデータ D
実行時間
load;add 1;store;
0
1
1
2
スレッド Aの処理終了
まで待機
共有データに対する処理の例( 排他制御あり )
• スレッド A,B が逐次的にデータ D に 1 を加えたため,データ D の値は2
ベンチマーク・プログラムの情報
プログラム 逐次処理部分 [%] CS[%]
blackscholes 1.030 0.089swaptions 0.095 0.212dedup 7.565 3.824ferret 4.151 13.746streamcluster 2.975 0.029
39
モデルを用いた提案手法と従来手法の比較
• 従来手法 ( 全 32 コアによる実行 )• CS の割合と稼働コア数の変化に応じて
提案手法による性能向上を評価• 逐次処理部分: 1%– 並列処理部分が大部分を占める並列プログラムに
おいて提案手法の有効性を示すため• 最大コア数 = 32• 定格周波数 = 2[GHz]– 供給電圧 = 1.3[V]
N
f
44
V
実行時間モデルの妥当性に対する考察(精度が高い場合 )
blackscholes の実行には逐次処理のみが影響していると考えられる
45
blackscholes性
能比
稼働コア数
1 4 7 10 13 16 19 22 25 28 310
5
10
15
20
25
実測値
予測値
)(
)1(
)1( nf
CSn
CSPCC
f
PCCT
seq
seqprop
従来手法に対する提案手法による性能向上
46
• CS の割合が大きくなるにつれて– 性能向上を最大にする稼働コア数は少なくなる– 性能向上が大きくなる
14%
65%
実行時間モデル
47
• クリティカルセクション (CS) における排他制御に注目– CS :共有データにアクセスするプログラムの部分
)(
)1(
)1( nf
CSnCSP
CC
f
PCCTprop
稼働コア数制限により並列処理性能低下
動作周波数上昇により性能低下を抑制
動作周波数上昇により性能向上
PCU の機能
• プロセッサの実消費電力を最大消費電力値と比べ、その差を動作周波数やコア電圧を制御する回路に伝達
• プロセッサの温度を温度の上限値と比較するとともに、各コアの状態 (C-state :休止,P-state :稼働 ) をチェックし、ターボブーストによる周波数上昇の幅を決定
電力比較
温度比較
コア状態チェック
[5]
50
P-state と C-state状態名 コアの状態
P0~ P5 稼働状態数字が小さいほど高い周波数
C0 稼働状態 (P-state)C1 休止状態
クロックを切り,命令処理停止C3 休止状態
クロックと PLL を OFFコアキャッシュをフラッシュ
C6 休止状態クロックと PLL を OFFコアキャッシュをフラッシュし,コアの状態をラストレベルキャッシュに書き込みパワーゲーティングによりコアの電源 OFF
51
ベンチマークプログラムを用いた定量的評価
• 比較対象– all_core :全コア (32 コア ) による実行– throttling: 性能向上を最大にする稼働コア数 ( 最適コア数 ) によ
る実行• 動作周波数上昇なし
– proposal_opt :最適コア数で実行する場合の提案手法– proposal_model :提案手法 ( モデルにより稼働コア数を決定 )
• 前提– プログラム全体を通して一定の動作周波数で実行– throttling , proposal_opt において最適コア数は既知
52
稼働コア数に応じた動作周波数上昇手法
• Intel 社の TurboBoost[2]– プロセッサの消費電力・発熱量を動的に監視– 消費電力・発熱量が上限値に達していない場合,稼働コア
への供給電圧と動作周波数を上昇• 稼働コア数が少ないほど,消費電力・発熱量は減少
⇒稼働コアの動作周波数を大幅に上昇可能
53[2] Intel Corporation: Intel Turbo Boost Technology in Intel Core Microarchitecture (Nehalem)Based Processors. ,Whitepaper,(2008).