330 likes | 454 Vues
命令フェッチ機構の共有に基づく 低消費エネルギー化手法の提案. 九州 大学 大学院システム 情報科学府* 九州大学大学院システム情報科学研究院* * 上野伸也 * 井上弘士** 村上和彰* *. 発表手順. 研究背景 マルチコア・プロセッサにおける課題 命令フェッチ機構における低消費エネルギー化の重要性 研究の目的 命令フェッチ機構の共有化手法 ベンチマークプログラムを用いた定量的評価 まとめと今後の課題. マルチコア・プロセッサにおける課題. 1 チップ上に複数のコアを搭載したマルチコア・ プロセッサが主流 マルチコア・プロセッサの消費エネルギー削減が重要
E N D
命令フェッチ機構の共有に基づく低消費エネルギー化手法の提案命令フェッチ機構の共有に基づく低消費エネルギー化手法の提案 九州大学大学院システム情報科学府* 九州大学大学院システム情報科学研究院** 上野伸也* 井上弘士** 村上和彰**
発表手順 • 研究背景 • マルチコア・プロセッサにおける課題 • 命令フェッチ機構における低消費エネルギー化の重要性 • 研究の目的 • 命令フェッチ機構の共有化手法 • ベンチマークプログラムを用いた定量的評価 • まとめと今後の課題
マルチコア・プロセッサにおける課題 • 1チップ上に複数のコアを搭載したマルチコア・プロセッサが主流 • マルチコア・プロセッサの消費エネルギー削減が重要 • バッテリー駆動機器 →バッテリー駆動時間 • サーバ、スーパーコンピュータ →運用コスト Processor Core Processor Core Shared L2 cache 出典: POWER5 system microarchitecture 3
命令フェッチ機構における低消費エネルギー化の重要性命令フェッチ機構における低消費エネルギー化の重要性 • シングルコア・プロセッサにおいて、命令フェッチ機構における消費エネルギーは大きい • マルチコア・プロセッサにおいても大きな割合を占める 38% 命令フェッチ機構で 約40%の消費エネルギー プロセッサ・コア FE ICACHE BPRED REG DCACHE2 FETCH RENAME DCACHE WINDOW LSQ ALU プロセッサの消費エネルギー内訳 命令フェッチ機構
マルチコア・プロセッサの並列処理における問題点マルチコア・プロセッサの並列処理における問題点 ……… 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); } ……… コア1 コア0 コア1が受け取った命令 コア0が受け取った命令 k=50; z=x+y; k=0; 一致 C[k+0]=A[k+0]+B[k+0]; D[k+0]=C[k+0]*(k+0); C[k+1]=A[k+1]+B[k+1]; D[k+1]=C[k+1]*(k+1); C[k+0]=A[k+0]+B[k+0]; D[k+0]=C[k+0]*(k+0); C[k+1]=A[k+1]+B[k+1]; D[k+1]=C[k+1]*(k+1); 各プロセッサ・コアにおいてそれぞれ 命令フェッチ機構から命令を受け取るのは冗長 ・・・・・・・・・ ・・・・・・・・・
研究のねらい • 着眼点 • マルチコア・プロセッサの並列処理中に、命令フェッチ機構から出力されるデータ内容が一致する場合があることに注目 • 研究の目的 • 並列処理における命令フェッチ機構へのアクセス回数削減により低消費エネルギー化 ⇒命令フェッチ機構において最大20%の消費エネルギー削減効果
提案手法の基本概念と動作例 マルチコア・プロセッサ MIMDモード SIMDモード 演算コア コア1 メインコア コア0 停止している命令フェッチ機構の 消費エネルギー削減 FETCH FETCH ブロードキャスト MIMDモード:従来の並列処理方式。 全てのコアで命令をフェッチ、実行 EXE EXE SIMDモード:メインコアで命令を フェッチし、各コアへブロードキャスト MIMD: Multiple Instructionstream,Multiple Data stream SIMD: Single Instructionstream,Multiple Data stream
提案手法の基本概念と動作例 マルチコア・プロセッサ プログラムカウンタ更新 SIMDモード MIMDモード 演算コア コア1 メインコア コア0 FETCH FETCH 停止している命令フェッチ機構の 消費エネルギー削減 ブロードキャスト ……… 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); } ……… ……… 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); } ……… MIMDモード:従来の並列処理方式。 全てのコアで命令をフェッチ、実行 SIMDモード:メインコアで命令を フェッチし、各コアへブロードキャスト 待機 EXE EXE コア1が実行するプログラム コア0が実行するプログラム 待機 MIMD: Multiple Instructionstream,Multiple Data stream SIMD: Single Instructionstream,Multiple Data stream
命令フェッチ機構の消費エネルギー削減モデル命令フェッチ機構の消費エネルギー削減モデル SIMDモード時の命令フェッチ機構の 消費エネルギー SIMDモードで実行した命令数 総実行命令数 MIMDモード時の命令フェッチ機構の 消費エネルギー 小さいほど削減率が高い プロセッサの構成により決定 大きいほど削減率が高い プログラムの性質によって決定
コア7 コア0 コア1 D$ D$ I$ I$ I$ D$ L2 L2 L2 提案方式の評価 消費エネルギー比較 • 評価内容 • 従来方式: 全てMIMDモードで実行 • 提案方式: MIMDモード,SIMDモードを切り替えながら実行 • オンチップ上の消費エネルギーを比較 • コア間の通信にかかる消費エネルギーは0と仮定 • 評価環境 • シミュレータ: 消費電力シミュレータ SIM-WATTCH,CMPシミュレータ M5 • ベンチマークプログラム:Splash2から4個のプログラムを選択 ・・・・・・ オンチップ オフチップ 主記憶
命令フェッチ機構における消費エネルギー削減効果命令フェッチ機構における消費エネルギー削減効果 命令フェッチ機構における 消費エネルギー削減率 ベンチマークプログラム OCEAN、WATER-SPATIALにおいて約20%の削減効果
プロセッサ全体の消費エネルギー削減効果 消費エネルギー削減率 最大で約8%の消費エネルギー削減
まとめと今後の課題 • まとめ • 並列処理における命令フェッチ機構の共有による消費エネルギー削減手法を提案 • ベンチマークプログラムを用いた評価では、命令フェッチ機構において最大20%,プロセッサ全体では最大約8%の消費エネルギー削減効果 • 今後の課題 • コア間の通信における消費エネルギーを考慮した評価 • 提案手法における同期回数の増加による性能オーバーヘッドの評価 • ベンチマークプログラムの追加
性能オーバーヘッド • 同期回数の増加に伴う実行時間の増加 従来手法 提案手法 1 2 3 スレッド番号 1 2 3 MIMD 同期 時間 SIMD MIMD :実行中 同期 増加 同期 :待機状態
CLK CLK アーキテクチャサポート SIMD SIMD 1 1 Fetch Fetch 演算部 演算部 M U X M U X PC PC 1 1 0 0 0→1 REG PC Fetch 演算部 PC SIMD 0 1 Fetch 演算部 M U X メインコア 1 CLK CLK SIMD
マルチコア・プロセッサにおける並列処理 ……… For(i=0~99){ C[i]=A[i]+B[i]; D[i]=C[i]*i; } ……… プロセッサ・コア1が 実行するプログラムコード プロセッサ・コア2が 実行するプログラムコード ……… For(i=0~49){ C[i]=A[i]+B[i]; D[i]=C[i]*i; } ……… ……… For(i=50~99){ C[i]=A[i]+B[i]; D[i]=C[i]*i; } ……… 並列化前のプログラムコード 並列化後のプログラムコード
制御フローの一致 プロセッサ・コア1が実行するプログラム プロセッサ・コア2が実行するプログラム ……… 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 ……… ……… For(i=50~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; } ………
冗長な命令キャッシュへのアクセス I3 I2 0x01020304 0x00112233 I2 I3 0x01020304 0x00112233 ICACHE ICACHE ICACHE ICACHE プロセッサ・コア1 プロセッサ・コア1 PC PC PC PC プロセッサ・コア2 プロセッサ・コア2 時刻 t t+1
消費エネルギーモデル • 従来手法における消費エネルギー: • 提案手法における消費エネルギー: コア間の通信にかかる消費エネルギーは0と仮定して評価 • 消費エネルギー削減効果: EMIMD:MIMDモードで1命令実行するのにかかる消費エネルギー ESIMD:MIMDモードで1命令実行するのにかかる消費エネルギー ITOTAL:総実行命令数 IMIMD:MIMDモードで実行した命令数 ISIMD:MIMDモードで実行した命令数 Ecom:コア間の通信にかかる全消費エネルギー ΔEcom:SIMDモード時、1命令のブロードキャストにかかる消費エネルギー
消費エネルギー削減効果 • 命令キャッシュにおける消費エネルギー削減率 消費エネルギーは実行命令数に比例すると仮定 • プロセッサ全体における消費エネルギー削減率 コア間の通信にかかる消費エネルギーは0と仮定して評価 ITOTAL:総実行命令数 ISIMD:MIMDモードで実行した命令数 N:コア数 EMIMD:MIMDモードで1命令実行するのにかかる消費エネルギー ESIMD:MIMDモードで1命令実行するのにかかる消費エネルギー
様々な構成における消費エネルギー削減率 プロセッサ全体の 消費エネルギー削減率
SIMDモードによる消費エネルギー削減効果 α=ESIMD/EMIMD プロセッサ構成
実験結果(2/2) • プロセッサ全体の消費エネルギー削減効果 消費エネルギー削減率 最大で6%の消費エネルギー削減
様々な構成のプロセッサにおける消費エネルギー内訳様々な構成のプロセッサにおける消費エネルギー内訳
実験結果(2/3) • 各ベンチマークプログラムにおける全実行時間に対 • する並列処理の実行時間割合 並列処理を行う時間の割合 ベンチマークプログラム FFTでは並列処理を行う時間の割合が小さい
解決策 • 命令の内容が同じ⇒ブロードキャスト ……… k=0; For(i=0~49){ C[k+i]=A[k+i]+B[k+i]; D[k+i]=C[k+i]*(k+i); } ……… ……… k=50; 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
マルチコア・プロセッサの並列処理における問題点マルチコア・プロセッサの並列処理における問題点 各プロセッサ・コアがそれぞれ命令フェッチ機構から命令を受け取るのは冗長 ……… 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