研究概要 |
本研究では,DSP(digital signal processor)用のリターゲッタブルコンパイラ開発を目標に,プログラムのデータフローをDSPのデータパスにマッピングするための問題の定式化とそれを解くアルゴリズムについて研究を行なった. 1.コード生成アルゴリズムの開発 コード生成のための処理は,1)命令・演算器選択2)バインディング,3)スケジューリングからなるが,それぞれについて,アルゴリズムを考案した.1)については,ルールベースでデータフローグラフを書き換える方式を採用した.2)については,演算の演算器への割当てに伴って必要となるデータ転送命令を極力押えるとともに,同じ演算を行う演算器が複数ある場合になるべくそれが並列に使われるようなバインディングを求めるアルゴリズムを考案した.3)については,処理をレジスタ制約解析とリストスケジューリングに分割する方法を考案した.また,非直交なデータパス上でスピルコードを挿入する新しいアルゴリズムを考案した. 2.リターゲッタブルコンパイラの試作 構文解析と中間コード生成部にSUIFとValen-Cを用い,perl言語にてコード生成処理を行うコンパイラを試作した.C言語で書かれたG.723.1音声処理のプログラムを対象に,MAC(multiply-and-accumulate)の数や,データバス構成を様々に変化させたDSPのデータパスをターゲットにコンパイルを行い,ハードウェアコストと実行サイクル数のトレードオフを調べられることが分かった.
|