研究概要 |
間接アドレッシングによってメモリがアクセスされるDSPに対して,計算順序の変更と算術レジスタの効率的な利用によって,メモリアクセスによって生ずるオーバーヘッドを削減可能であることを示した. DSPでは,その応用時にプログラムを高効率な即ち実行時間の短いコードに自動変換する技術が重要である.計算順序の変更によりレジスタと演算器の効率的に活用して,ある程度高効率なコードを得ることができる.しかしながら,DSPはメモリアクセスが間接アドレッシング程度の貧弱な機構に限られるなど様々な制約があり,これにより逆にオーバーヘッドを生じる.このオーバーヘッドは,変数のアドレス配置を工夫することである程度低減できることが分かっているが,更なるコード化効率の改善のためには,上記の両面を考慮したコード最適化方法の確立が不可欠である. そこで,今年度はプロトタイプのコンパイラを作成し,コード最適化の可能性を確認すると共に種々問題点を明らかにした.本コンパイラは,計算順序決定,レジスタ割当,及びメモリアドレス配置を主とし,それらが相互に連携しながら逐次反復実行する.レジスタ割当においては,コード中におけるプログラム変数及びスピル処理などによって生ずる中間変数の生起・参照回数を調べて,これをレジスタの利用効率の向上に利用すると共に,変数及び中間変数のアクセスに際してそれらのアドレス配置結果を適宜参照してオーバーヘッドの少ないレジスタ利用ができるように計算順序決定方法に対して指針を与える.計算順序決定では,実際のコードにほぼ1対1に対応した中間,コードを用いて,可能ないくつかの計算順序候補の中から,レジスタ割当で得られた指針を基にして,メモリアクセスのオーバーヘッドが最小となる順序を決定する. 以上の方法を数種の例題に適用し,メモリアクセスに伴うオーバーヘッドを抑え,コード化効率が改善できることを確認した.
|