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