研究概要 |
本研究で開発されたPASCALの自動ベクトルコンパイラは、現在次の5フェーズからなる。(1)フェーズ1:構文意味解析部、(2)フェーズ2:ベクトル化前処理部、(3)フェーズ3:ベクトル化・並列化判定部,(4)フェーズ4:ベクトル化後処理部、(5)フェーズ5:目的コード生成部。フェーズ1はソースプログラムを、独自に設計した中間コードに変換する。現バージョンではソース言語は、PASCAL8000のサブセットとした。フェーズ2ではALIASの検出等を行い、ベクトル化に必要な最適化をも行なう。この最適化手法では、(A)ベクトル化率向上及び(B)解析時のコストの削限を目的とする。フェーズ3は、データフロー解析,コントロールフロー解析で得られた結果を基にして、支配関係解析,ループ検出,制御関係解析及びデータ参照関係解析を行って、中間コードの並べ換え,制御構造変換,ベクトル化及び並列化判定を順に行う。この部分が本コンパイラの中核であり、本研究の主眼である一般の多重ループの自動ベクトル化に対する一指針となる方式がインプリメントされている。フェーズ4は、主にスカラ実行ループの最適化を行う。フェーズ5では、レジスタ割り付け等を行いながら中間コードを機械語に変換する。現バージョンでは、スカラ命令とベクトル命令の並列実行の制御が機械語レベルで容易に行える点で、ターゲット・マシンとしてはHITAC S-810を想定している。もちろん、このフェーズ5を書き替えれば、他のマシン用のコンパイラを作成することも可能である。同様にフェーズ1を書き換えれば、他言語、特にPASCALに近い高級言語に対応することも可能である。現在、コンパイラ自身は移植性を考慮し、標準PASCALで記述され3万2千ステップに及ぶ。本方式では、IF-THEN-ELSEや飛び出しを含む多重ループ全体をベクトル化対象とするる点が、今までにない新しい点である。
|