動作合成とC/C++/SystemC/SystemVerilogの協調設計 ―― Cynthesizerの活用事例
3.分析 ~プロファイリング~
協調設計で重要なのはハードウェア化を行う対象の選択です.この判断を行うためにソフトウェアを分析します.具体的にはプロファイリングを取得して結果を解析することで,ソフトウェア実行でボトルネックとなっている部分を知ることができます.
プロファイリングを取得するためにはいくつかの方法があります.
- プログラム開発ツール
- CPUソフトウェア・シミュレータ
- EDA協調検証ツール
各方法はそれぞれの特徴があり,その長所を生かすように使い分けます.1.のプログラム・ツールは容易に利用できることが最大の特徴で,ソフトウェアの実行時間の中で個々の関数が占める割合などを知ることができます.ここでボトルネックとなる関数が判明します.
2.は具体的にターゲットとなるCPU向けにコードを生成し,そのコードをシミュレーションで実行することで関数の実行時間が分かります.
3.のEDA協調検証ツールは,2.にハードウェアのSystemCモデルを取り込んだ形でのシミュレーションが可能で,ハードウェアとソフトウェアを統合した形での性能評価が実現できます.実行結果に対して強力な解析機能も持ちます.
図2にプロファイリングを行うためのツールの一つである「gprof」の出力例を示します.このように関数個別の占める割合や関数の親子関係を含めた形での解析結果を示せます.特定の部分のデータが必要な場合には,その部分を関数化することでデータを取得できます.この結果からハードウェア化すべき関数を決定して次の工程に移行します.
図2 プロファイリングを行うためのツールの一つである「gprof」の出力例
関数個々の占める割合や関数の親子関係を含めた形での解析結果を示すことが可能.