Transcript
Page 1: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

稼働コア数制限に基づくマルチコア・プロセッサ

性能向上手法の提案

九州大学大学院今村 智史 福本 尚人井上 弘士 村上 和彰

1

Page 2: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価

• 実行時間モデルを用いた稼働コア数決定法

• まとめと今後の課題

2

Page 3: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価

• 実行時間モデルを用いた稼働コア数決定法

• まとめと今後の課題

3

Page 4: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

マルチコアにおける並列処理

4

並列プログラム

コア コア コア

共有キャッシュ

コア

スレッド

スレッド

スレッド

スレッド

マルチコアの概略図

• マルチコア・プロセッサが主流– 1 チップに複数のコアを搭載– プログラムを複数スレッドに分割し,各コアに

割り当てることで並列処理が可能• 理想的にはコア数に比例した性能向上

Page 5: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

マルチコアにおける並列処理の問題

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

Page 6: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

並列処理による性能向上の阻害要因

• 逐次処理

• 排他制御       • ロードインバランス

6

Page 7: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

逐次処理と排他制御による性能向上の阻害

7

• 並列プログラムには逐次処理部分と並列処理可能部分が存在– 逐次処理部分は 1 コアのみで実行

• プログラムの整合性を保つためにクリティカルセクション (CS) が存在– CS: 共有データにアクセスするプログラムの部分– CS 内の処理を行う間は排他制御⇒ 他のコアを待機させ, 1 コアのみで実行

並列処理による性能向上を阻害

Page 8: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

ロードインバランスによる並列処理性能向上の阻害

8

• コア毎に処理時間が異なる場合– バリア同期を行う度に処理時間が最も長いコアのバ

リアへの到達を他の全コアが待機 ⇒効率的な並列処理を行えない

• バリア同期:全コアがバリアに到達するまで各コアを待機させ,        全コアが到達すると処理を同時に開始

Page 9: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

既存の解決手法• 稼働コア数制限手法 [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).

Page 10: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

稼働コア数に応じた動作周波数上昇手法

• 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上昇

Page 11: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

研究目的• 着眼点– プログラムに応じた稼働コア数制限により性能を維

持または向上しつつ消費電力を削減可能

– 稼働コア数に応じて動作周波数上昇可能

11

消費電力制約下において並列性 ( 稼働コア数 )と稼働コアの動作周波数上昇の適切なトレードオフポイントを選択⇒マルチコアによる並列プログラム実行の高速化

Page 12: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価

• 実行時間モデルを用いた稼働コア数決定法

• まとめと今後の課題

12

Page 13: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

稼働コア数制限に基づくマルチコア・プロセッサ性能向上手法

13

稼働コア数増加に伴い性能向上が得られない場合・・・

コア コア コア

共有 L2 キャッシュ

コア休止 休止f 上昇

f 上昇

休止させたコアの消費電力バジェットを稼働コアに再割り

当て⇒稼働コアの動作周波数上昇

稼働コア数をあえて制限

⇒消費電力削減

稼働コア数

性能

1 2 4 8 16 32012345

稼働コア数制限

ferret動作周波数上昇

Page 14: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

ベンチマークプログラムを用いた定量的評価

• 比較対象– all_core :全コア (32 コア ) による実行– throttling: 性能向上を最大にする稼働コア数 ( 最適コア数 ) によ

る実行• 動作周波数上昇なし

– proposal_opt :最適コア数で実行する場合の提案手法

• 前提– プログラム全体を通して一定の動作周波数で実行– throttling , proposal_opt において最適コア数は既知

14

Page 15: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

評価環境

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]シミュレータの設定

Page 16: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

稼働コア数に応じた動作周波数• 全コア (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

Page 17: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

評価結果 ( 性能 )

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

事前実行時間短縮のために最適コア数の予測が必要

Page 18: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価

• 実行時間モデルを用いた稼働コア数決定法

• まとめと今後の課題

18

Page 19: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

実行時間モデルによる稼働コア数決定法

19

並列プログラム 事前実行プロファイル情

コア数

0

0.5

1

1.5

2

実行

時間

[秒]

実行時間モデル

代入

コア数に応じた実行時

間を計算

実行時間が最短となる場合のコア数を稼

働コア数に決定

Page 20: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

)(

)1(

)1( nf

CSn

CSPCC

f

PCCT

seq

seqprop

実行時間モデル

20

逐次処理部分

並列処理可能部分稼働コア数

稼働コア数に応じた動作周波

クリティカルセクション (CS) における排他制御に注目

CC : 1 コアでのプログラム実行に要する総クロックサイクル数Pseq :全プログラム実行時間に対する逐次処理部分の実行時間の割合CS :全プログラム実行時間に対するクリティカルセクション実行時間の割合

Page 21: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

最適コア数と実行時間モデルにより決定したコア数での性能比較

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

Page 22: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

実行時間モデルの妥当性に対する考察[精度が高い場合 ]

• 逐次処理部分と CS を除いた並列処理可能部分の実行時間がプログラム実行時間の約 99% を占める– 性能向上阻害要因の影響が極めて小さい ⇒実測性能とほぼ同等の性能を予測可能 22

blackscholesの情報

逐次処理部分の割合 1.030[%]

CS の割合 0.089[%]

Page 23: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

実行時間モデルの妥当性に対する考察[精度が低い場合 (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).

Page 24: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

実行時間モデルの妥当性に対する考察[精度が低い場合 (2/2)]

• CS の割合が極めて小さいが,稼働コア数増加に伴い性能低下– 実際の実行:多数のバリア同期 [4]⇒ バリア同期を行う度にロードインバランスの影響により待ち時間発生

– 実行時間モデル:ロードインバランスを未考慮のため,性能を過大予測

24

streamcusterの情報

逐次処理部分の割合 2.975[%]

CS の割合 0.029[%]

[4] Navarro, A et al.: Analytical modeling of pipeline parallelism,PACT, (2009).

Page 25: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

発表手順• マルチコアにおける並列処理の問題• 稼働コア数制限に基づく高性能化手法– 基本概念– 定量的評価

• 実行時間モデルを用いた稼働コア数決定法

• まとめと今後の課題

25

Page 26: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

まとめと今後の課題• 稼働コア数制限に基づくプロセッサ性能向上手法

– 稼働コア数をあえて制限し,稼働コアの動作周波数を上昇– 実行時間モデルとプロファイル情報から稼働コア数を決定– 最適コア数で実行する場合,最大 2倍以上の性能向上– 実行時間モデルにより決定した稼働コア数で実行する場合,

最大約 73% の性能向上

• 今後の課題– 実行時間モデルを再検討し,稼働コア数決定法の精度向上

• CS の実行時間を再検討• ロードインバランスによる影響も考慮

26

Page 27: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

ご清聴ありがとうございました

27

Page 28: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

Backup slide

28

Page 29: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

稼働コア数制限手法 [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

Page 30: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

実測値と予測値の比較~ ferret~

30

性能

稼働コア数

012345678

ferret

• CS における排他制御が性能へ大きく影響⇒予測値が実測値と同様の傾向を示す

• 実際の実行:ロードインバランスなパイプライン並列処理 [3]• 実行時間モデル:ロードインバランスを未考慮のため性能を過大予測

ferretの情報

逐次処理部分の割合 4.151[%]

CS の割合 13.746[%]実測値

予測値

Page 31: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

消費エネルギー比の算出方法• 全コア実行時に対する消費エネルギー比

= 消費電力比 × 実行時間比

– 31

コア稼働時の消費電力全コア稼働時の消費電力消費電力比32

n

232

2

)32(

)()()(

VfkCa

nVnfnkCa n

2

2

)3.1(232

)()(

nVnfn

コア稼働時の実行時間全コア稼働時の実行時間

実行時間比32

n

Page 32: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

評価結果 ( 消費エネルギー )

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 において消費エネルギー削減

Page 33: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

現代のプロセッサ• マルチコア・プロセッサが一般的– 1 チップに複数のコアを搭載– 並列処理により性能向上– 同消費電力制約下のシングルコアに比べ

電力効率に優れる

Intel Corei7ダイ写真出典: http://www.atmarkit.co.jp/fsys/zunouhoudan/102zunou/corei7.html

33

Page 34: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

なぜマルチコアなのか?• シングルコアに比べ電力効率に優れる• プロセッサの動的消費電力

• 上式をシングルコアの動的消費電力とする• コア数 2 ,動作周波数 50% 低下,供給電圧 20% 低下の

マルチコアの動的消費電力を考えると...

2VfCPdynamic αα: スイッチング確率  C: コア 1 つ当たりの負荷容量  f: 動作周波数  V:供給電圧

22_ )8.0(5.02 VfCP coredynamic α

264.0 VfC α

性能を維持しつつ動的消費電力を 36% 削減 34

Page 35: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

ロードインバランスによる並列処理性能向上の阻害

35

• コア毎に処理時間が異なる場合– バリア同期を行う度に処理時間が最も長いコアのバリアへの到

達を他の全コアが待機• バリア同期:全コアがバリアに到達するまで各コアを待機させ,

        全コアが到達したら処理を同時に開始

 ⇒効率的な並列処理を行えない

処理 処

理処理 処

バリア

待機

コア 0 コア 1 コア 2 コア 3

待機

実行時

Page 36: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

評価環境

シミュレータの設定

コアの構成 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 の主記憶

Page 37: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

37

共有データに対する処理の例( 排他制御なし )

load;add 1;store;

スレッド A スレッド Bメモリの 100番地内

のデータ D

実行時間

load;add 1;store;

0

1

• スレッド A,B がそれぞれデータ D に 1 を加えたが,データ D の値は1

Page 38: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

38

スレッド B

load;add 1;store;

スレッド Aメモリの 100番地内

のデータ D

実行時間

load;add 1;store;

0

1

1

2

スレッド Aの処理終了

まで待機

共有データに対する処理の例( 排他制御あり )

• スレッド A,B が逐次的にデータ D に 1 を加えたため,データ D の値は2

Page 39: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

ベンチマーク・プログラムの情報

プログラム 逐次処理部分 [%] CS[%]

blackscholes 1.030 0.089swaptions 0.095 0.212dedup 7.565 3.824ferret 4.151 13.746streamcluster 2.975 0.029

39

Page 40: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

モデルを用いた提案手法と従来手法の比較

• 従来手法 ( 全 32 コアによる実行 )• CS の割合と稼働コア数の変化に応じて

提案手法による性能向上を評価• 逐次処理部分: 1%– 並列処理部分が大部分を占める並列プログラムに

おいて提案手法の有効性を示すため• 最大コア数   = 32• 定格周波数 = 2[GHz]– 供給電圧   = 1.3[V]

N

f

44

V

Page 41: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

実行時間モデルの妥当性に対する考察(精度が高い場合 )

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

Page 42: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

従来手法に対する提案手法による性能向上

46

• CS の割合が大きくなるにつれて– 性能向上を最大にする稼働コア数は少なくなる– 性能向上が大きくなる

14%

65%

Page 43: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

実行時間モデル

47

• クリティカルセクション (CS) における排他制御に注目– CS :共有データにアクセスするプログラムの部分

)(

)1(

)1( nf

CSnCSP

CC

f

PCCTprop

稼働コア数制限により並列処理性能低下

動作周波数上昇により性能低下を抑制

動作周波数上昇により性能向上

Page 44: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

PCU の機能

• プロセッサの実消費電力を最大消費電力値と比べ、その差を動作周波数やコア電圧を制御する回路に伝達

• プロセッサの温度を温度の上限値と比較するとともに、各コアの状態 (C-state :休止,P-state :稼働 ) をチェックし、ターボブーストによる周波数上昇の幅を決定

電力比較

温度比較

コア状態チェック

[5]

50

Page 45: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

P-state と C-state状態名 コアの状態

P0~ P5 稼働状態数字が小さいほど高い周波数

C0 稼働状態 (P-state)C1 休止状態

クロックを切り,命令処理停止C3 休止状態

クロックと PLL を OFFコアキャッシュをフラッシュ

C6 休止状態クロックと PLL を OFFコアキャッシュをフラッシュし,コアの状態をラストレベルキャッシュに書き込みパワーゲーティングによりコアの電源 OFF

51

Page 46: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

ベンチマークプログラムを用いた定量的評価

• 比較対象– all_core :全コア (32 コア ) による実行– throttling: 性能向上を最大にする稼働コア数 ( 最適コア数 ) によ

る実行• 動作周波数上昇なし

– proposal_opt :最適コア数で実行する場合の提案手法– proposal_model :提案手法 ( モデルにより稼働コア数を決定 )

• 前提– プログラム全体を通して一定の動作周波数で実行– throttling , proposal_opt において最適コア数は既知

52

Page 47: 稼働コア数制限に基づく マルチコア・ プロセッサ 性能向上手法の提案

稼働コア数に応じた動作周波数上昇手法

• Intel 社の TurboBoost[2]– プロセッサの消費電力・発熱量を動的に監視– 消費電力・発熱量が上限値に達していない場合,稼働コア

への供給電圧と動作周波数を上昇• 稼働コア数が少ないほど,消費電力・発熱量は減少

⇒稼働コアの動作周波数を大幅に上昇可能

53[2] Intel Corporation: Intel Turbo Boost Technology in Intel Core Microarchitecture   (Nehalem)Based Processors. ,Whitepaper,(2008).


Top Related