前年度から引き続き,メモリアクセスを伴ったCプログラムを高位合成ツールによってハードウェア化する際に,効率的なハードウェアが生成させるような統一的な記述法を研究した. 前年度は,見た目はC言語であるが,実際はハードウェアに直感的な言語仕様を提供するHandel-Cという高位合成ツールを使った.しかしながら,近年,ANSI-C/C++により厳密に準拠し,完全にソフトウェアなCプログラムを入力できるツールが一般的に広まってきた.そこで,今年度は,そのような高位合成ツールであるVivado HLSを題材に,Cプログラムの記述法を検討した. 前年度用いたHandel-Cも,今年度のVivado HLSも,メモリアクセスを伴ったCプログラムをハードウェア化するにあたって,どう記述するかは設計者まかせであった.それを,誰もが同じように,かつ,簡単に記述できるよう,高位合成ツールの入力Cプログラムの統一的な記述法を提案することは,設計負荷の削減や,生成ハードウェアの性能保証にとって重要である. 基本的には,メモリ読み出し部,データ処理部,メモリ書き込み部を,FIFOを境界に並列動作するように記述する.これは,Handel-Cでも同様である.ただ,個々の関数を並列ハードウェアに明示的に変換できるHandel-Cとは違い,Vivado HLSでは実ハードウェアを直接的に明示できない.そのようなツールにおいて,各部がFIFOを介して並列動作するようなハードウェアに必ず変換される簡単で単純な記述法を示した.ハードウェア規模と性能に関する実験を通して,提案の記述法は,無駄なハードウェアの増加にはつながらず,メモリアクセスレイテンシを隠蔽しながら,高い性能を達成できた. 以上から,異なる入力Cプログラムの特性を持った高位合成ツールにおいても統一的かつ効率的な記述を提案できた.
|