研究概要 |
DSP(Digital Signal Processor)は非常に高い演算処理能力を有しているが,そのソフトウェア開発環境は不十分であり,一般的な高速演算を必要とする処理にも有効に利用されることが少なかった.このような高速処理では,実行速度が速い(コード化効率が良い)コードが要求されるので,ユーザはDSP内部ハードウェアについて熟知した上で,試行錯誤的プログラミングを行うことになる.更に,多種多様なDSPが存在するため,ユーザはプログラミングにおいてより一層大きな負担が強いられる.本研究では,汎用処理も含めて様々なDSPについてコードを統一的に低コストで自動生成するためのコンパイラシステムの実現を目標としている. まず,目的とする処理対象を処理ブロック間のデータの流れ(変数間の依存関係)だけで表現する表現方法を開発した.ここでは,処理対象として高速演算処理を必要とする信号処理アルゴリズムに限定した.本表現方法では,変数間の先行制約関係しかわからないため,適切なスケジューリング方法を用いて全体の計算順序を定める必要がある.このとき,全試行を行えば最適解を求めることができるが,処理対象の規模が大きくなると実用時間内にスケジューリングできなくなる.そこで,発見的な手法によって近似最適解を求めるスケジューリング方法を確立した.また,本表現方法及び本スケジューリング方法の汎用処理への拡張性についても検討を行った. 更に,DSPプログラミング熟練者と同程度のコード化効率が得るためのコード最適化方法を提案した.本方法では,ニューラルネットワークにコード最適化方法を習得させることにより,様々なコード最適化方法をコンパイラシステムに容易に適用できると共に異なるターゲットDSPについてのコード最適化も容易とした. 以上の提案した方法を実際に利用してDSPをターゲットとするプロトタイプのコンパイラをIBM-AT互換機及びワークステーション上で試作し,いくつかの例題についてコンパイラの出力したコードと人間の作成した(最適とみなせる)コードについて比較を行った.比較の結果は良好であり,ユーザが計算順序やDSPのアーキテクチャに捕らわれることなく目的とする処理の入力を行うことができると同時に,高いコード化効率をも求めることができるという,優れたコンパイラシステムが得られ,DSPプログラミングに必要な時間と労力を著しく軽減できた.
|