命令フェッチ機構の共有に基づく 低消費エネルギー化手法の提案 九州大学大学院システム情報科学府* 九州大学大学院システム情報科学研究院** 上野伸也* 井上弘士** 村上和彰** 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
© Copyright 2024 ExpyDoc