本研究は、整数系プログラムに対して、命令レベルの並列性を効率良く引き出すための複数のプロセッサをチップ上に持つアーキテクチャと、それを最大限に利用するコンパイラ技術を開発することである。研究実績は以下の通りである。第一に、広域に分散する命令レベル並列を利用するため、複数のプロセッサを1つのチップに内蔵し、複数の制御流(これをスレッドと呼ぶ)より命令レベル並列を引き出すアーキテクチャを考案した。特に、命令レベルという小さな粒度で並列性を引き出すために、スレッド内の命令間での通信と同期のオーバヘッドを極めて小さくする機構を見いだした。また、単一のプロセッサの高性能化の鍵を握る分岐予測器の改善や、分岐予測に過度に頼らないための機構である両パス実行方式の改善を行った。第二に、前項で提案したアーキテクチャを生かし、それを用いたコンピュータが広く利用されるために必要なコンパイラを作成した。本コンパイラは、逐次計算モデルに基づくプログラムを本アーキテクチャに合わせて自動的に並列化し最適化するものである。本研究で考案したコンパイラの特徴は、ループ・レベルで並列化する従来の数値計算用のものと異なり、命令レベルの並列性を引き出す目的で、基本ブロック・レベルで並列化するものである。シミュレータを作成し評価を行い、有効性を確認することができた。また、並行して、プログラム内に存在する並列性の限界値について調査も行った。本調査により、まず第一に、基本ブロック・レベルでの並列化が、従来のループ・レベルの並列化より非常に大きな並列性を引き出せることを確認した。また、我々が作成した現在のコンパイラの性能はまだ限界よりかなり低く、大きな改善の余地があることがわかった。
|