OpenMPハードウェア動作合成システムの検証(Ⅰ) 高性能計算研究室 4回生 金森 央樹 2008/2/6
研究背景と目的 背景 目的 LSI開発の大規模化・期間の短縮 動作合成における並列処理記述の課題 OpenMPを用いたハードウェア動作合成システム 目的 本システムを用いて生成した回路と手書きにより生成した回路との比較と評価 素数判定プログラム、ラプラシアンフィルタ 本システムの改良方法と検討
OpenMPを用いた動作合成システム 逐次プログラムからの段階的な設計 OpenMP トランスレータ コンパイラ 並列アルゴリズム 並列効果 ハードウェア制約 OpenMP プログラム (動作記述) 逐次プログラムからの段階的な設計 トランスレータ OpenMP コンパイラ 並列アルゴリズム 並列効果 並列動作HW中間表現 マルチスレッド プログラム 早期に並列化手法の検討 検証時間の短縮 コード ジェネレータ SMP環境 (PCクラスタ) シミュレーション OpenMP構文を 利用した動作合成 並列動作ハードウェア ハードウェア合成 アルゴリズム評価
素数判定とラプラシアンフィルタ 素数判定 ラプラシアンフィルタ 繰り返し、対象値以外で余剰がなければ素数ではないと判断する。コード 素数であるか判定したい対象値を決め、2から対象値まで順番に除算を 繰り返し、対象値以外で余剰がなければ素数ではないと判断する。コード ジェネレータが余剰に対応していないため、減算を繰り返すことで代用した。 ラプラシアンフィルタ エッジ検出の一つで画像に対し二次微分を行うことで、色の輝度、変化を 強調しエッジを検出する。画像データを保存するため、メモリを使用。 HDL記述・・・手書き約40行 システム約140行 ラプラシアンフィルタ 変換 1 -8 1 HDL記述・・・手書き約260行 システム約1050行
相違点・・・状態遷移方法(case文、if文) HDL記述~素数判定~ assign ADD1_RESULT = ADD1_A + ADD1_B; assign ADD1_A = (CurrentState==P_STATE13) ? i : i; assign ADD1_B = (CurrentState==P_STATE13) ? 32'd1 : i; case(CurrentState) P_INIT : oEND <= 1'b0; P_END : oEND <= 1'b1; P_STATE7 : ans <= ConstNum6; P_STATE9 : i <= iDATAstart; P_STATE13 : i <= ADD1_RESULT; P_STATE14 : m <= iDATA; P_STATE16 : REG16 <= SUB1_RESULT; P_STATE17 : m <= REG16; ~~~~略 if(i==0&&m==0)begin i <= iDATAfor; m <= iDATA; end else if(i==iDATAend)begin oEND <=1'b1; end else begin if(m>i)begin m <= m-i; end else if(m==i) begin ans<=1; i <= i+1; end 手書きの生成回路 システムの生成回路 相違点・・・状態遷移方法(case文、if文) 演算の表記方法、演算器部の有無
oADDR・・・アクセスするメモリのアドレス 相違点・・・演算の表記方法、演算器部の有無 HDL記述~ラプラシアンフィルタ~ oADDR・・・アクセスするメモリのアドレス P_STATE45_ARRAY_R0 : REG45_R0 <= ADD1_RESULT; P_STATE45_ARRAY_R1 : REG45_R1 <= MUL1_RESULT; P_STATE45_ARRAY_R2 : REG45_R2 <= ADD1_RESULT; P_STATE45_ARRAY_R3 : begin oADDR <= REG45_R2; 32’d3:begin oADDR <= address + i +(j-1)*width; 手書きの生成回路 システムの生成回路 相違点・・・演算の表記方法、演算器部の有無
素数判定~シミュレーション時間~ SMP環境での実行時間は、回路シミュレーション時間より約千倍高速 void main(void){ int iDATA,i,m,ans; ans=0; #pragma omp parallel for for(i=2;i<iDATA/2;i++){ for(m=iDATA;m>=i;m=m-i){} if(m==0) ans=1; } ノード数 SMP環境 実行時間[ms] 1 19.4(1.0) 2 11.5(0.6) 4 8.2(0.4) ノード数 回路シミュレーション時間[s] 手書き システム 1 20.4(1.0) 70.5(1.0) 2 21.0(1.0) 78.4(1.1) 4 21.8(1.1) 99.2(1.4) OpenMPを用いた素数判定プログラム SMP環境での実行時間は、回路シミュレーション時間より約千倍高速
素数判定~論理合成~ 動作周波数・・・システム>手書き。 ー1状態1演算により、クロックの周期が小さくなったため ノード数 最大動作周波数[MHz] 動作クロック数[Mclocks] スライス数[slices] 手書き システム 1 162 188 1.06(1.0) 3.35(1.0) 129(1.0) 148(1.0) 2 0.98(0.9) 3.02(0.9) 272(2.1) 282(1.9) 4 161 0.90(0.8) 2.75(0.8) 589(4.5) 434(2.9) 動作周波数・・・システム>手書き。 ー1状態1演算により、クロックの周期が小さくなったため 動作クロック数・・・システムは手書きの約3倍 ー1状態で実行する演算量の違い スライス数・・・あまり大きな差無し
ラプラシアンフィルタ ~シミュレーション時間&論理合成~ ノード数 SMP環境 実行時間[ms] 1 40.4(1.0) 2 22.5(0.6) 4 14.6(0.4) ノード数 回路シミュレーション時間[s] 手書き システム 1 1828(1.0) 13018(1.0) 2 1251(0.7) 11449(0.9) 4 1809(1.0) 10741(0.8) ノード数 最大動作周波数[MHz] 動作クロック数[Mclocks] スライス数[kslices] 手書き システム 1 104 70 21.9(1.0) 110.8(1.0) 0.64(1.0) 2.44(1.0) 2 106 10.9(0.5) 55.4(0.5) 1.22(2.0) 4.83(2.0) 4 97 27.7(0.3) 2.32(3.6) 9.48(3.9) SMP環境での実行時間は、回路シミュレーション時間の約30万~70万倍高速 動作クロック数・・・クロック減少比は、ノードが増えるほどシステムが優秀 スライス数・・・システムではノード数に比例し回路規模が増加
考察と改良案 実行クロック数・・・システム側は1状態1演算で処理しているので、1クロックでの仕事量が少なく、手書きよりもクロック数がかかる。 スライス数・・・演算器部、状態遷移に必要なレジスタや配線が生成されるため、システム側が大きくなる。 A<=A+Bの演算回路 Aレジスタ Aレジスタ 値保持レジスタ + + Bレジスタ Bレジスタ CLK CLK システム改良前(現在)の生成回路 改良案の生成回路 レジスタ、配線の減少による、回路規模の縮小化 演算にかかるクロック数の減少による、回路全体の速度向上
まとめと課題 まとめ ・素数判定プログラムでのシステムの評価 →1状態1演算により、動作周波数においてシステム>手書き 今後の課題 ・ラプラシアンフィルタでのシステムの評価 →理想的な速度向上比 →ノード数に比例して回路面積の増加 ・考察 ・システム改良案・・・演算結果を保持するレジスタを必要とせず、1クロックで演算、代入を実行できる回路の自動生成 →回路の面積縮小化と速度向上 今後の課題 ・考察で提案した改良案の実現 ・クロックサイクル数と動作周波数とのトレードオフ