プログラム内蔵方式に基づいた現代のプロセッサはフォン・ノイマン・ボトルネックと呼ばれる問題を持っており、これまでキャッシュ操作命令や投機的ロード命令の実行などによるデータヘの対策が多くとられて来た。しかし、命令に関しては分岐命令とその実行履歴に基づいた処理対策が主であり、効率的な転送に関して改善の余地が残されている。そこで、命令フェッチのための情報をプログラム中に挿入し、これにより命令キャッシュの制御および命令デコーダへのプリフェッチ制御を行い、ボトルネックに対する負荷の軽減をはかろうとするのが本研究である。 本年度の研究では、命令フェッチ情報を指定できる命令セットアーキテクチャに基づいたプロセッサにおけるプログラムの挙動と命令キャッシュとの関係調査をおこなった。既存の命令パイプライン・レベルのプロセッサ・シミュレータに変更を加えて、数百キロバイト程度のプログラム実行の動作情報および命令キャッシュに関係する数値情報を得られるようにした。さらに、解析の対象プログラムとして、GNU Cコンパイラの本体(cc1)を選択し、RISC型の通常のプロセッサ用に出力されたcc1のアセンブリ・プログラムから、命令フェッチ制御の可能なアセンブリ・プログラムヘの変換プログラムおよび実行可能な形式へのリンクを行うプログラムを作成して、シミュレーションを行った。このシミュレーションにより、命令フェッチ情報を付加したプログラムの平均基本ブロックサイズ、分岐と命令フェッチおよびキャッシュへのプリフェッチのタイミングの解析を行った。またこれと並行して、命令フェッチ情報を付加するのにより適したあたらしい命令セットアーキテクチャに関する研究を行った。
|