VLIWにルーツを持つ 1989年までに、HPの研究者たちは、 RISC( Reduced Instruction Set Computer )アーキテクチャが1 サイクル あたり1命令という限界に達しつつあることを認識しました。彼らは、後にEPIC と名付けられる新しいアーキテクチャの研究を開始しました。[ 3 ] この研究の基礎となったのはVLIW で、複数の操作がすべての命令にエンコードされ、複数の実行ユニットによって処理されます。
EPICの目標の一つは、命令スケジューリングの複雑さをCPUハードウェアからソフトウェアコンパイラ に移管することでした。コンパイラは(トレースフィードバック情報を利用して)静的に命令スケジューリングを実行できます。これにより、CPU内の複雑なスケジューリング回路が不要になり、追加の実行リソースを含む他の機能にスペースと電力を解放できます。同様に重要な目標は、コンパイラを使用して並列実行のさらなる機会を見つけて活用することで、 命令レベル並列性 (ILP )をさらに活用することでした。
VLIW (少なくとも初期の形態)には、主流となることを阻むいくつかの欠点があった。
VLIW命令セットは、実装間で 下位互換性が ありません。実行ユニット数 の多い (より広い)実装が構築された場合、その広いマシン用の命令セットは、以前の狭い実装との下位互換性がなくなります。 CPUキャッシュ やDRAM を含むメモリ階層 からのロード応答には、決定論的な遅延がありません。これは、コンパイラが階層のどの階層でデータが利用可能になるか(より具体的には、すべてのキャッシュからデータが欠落し、メインメモリからフェッチする必要があるタイミング)を事前に予測できないためです。このため、コンパイラによるロード命令の静的スケジューリングは非常に困難になります。EPICアーキテクチャはVLIWアーキテクチャから発展したが、スーパースカラ アーキテクチャの多くの概念を継承している。
VLIWを超えて EPIC アーキテクチャは、VLIWの欠点を克服するためにいくつかの機能を追加しています。
複数のソフトウェア命令のグループはバンドル と呼ばれます。各バンドルには、次のバンドルがこの一連の操作に依存しているかどうかを示すストップビット があります。この機能により、将来の実装では複数のバンドルを並列に発行できるようになります。依存関係情報はコンパイラによって計算されるため、ハードウェアはオペランドの依存関係チェックを実行する必要はありません。 ソフトウェアプリフェッチ命令は、データプリフェッチの一種として使用されます。このプリフェッチにより、ロード時のキャッシュヒット率が高まり、キャッシュのさまざまなレベルで必要とされる時間的局所性の度合いを示すことができます。 投機的ロード命令は、データが使用されるかどうか(制御依存関係を回避するため)、または使用される前に変更されるかどうか(データ依存関係を回避するため)が不明な場合でも、データを投機的にロードするために使用されます。 チェックロード命令は、投機的ロードが後のストアに依存しているかどうか、したがって再ロードする必要があるかどうかをチェックすることで、投機的ロードを支援します。 EPICアーキテクチャには、ILPを向上させるための様々なアーキテクチャコンセプトも含まれ て い ます。
述語実行は 、分岐の発生を減らし、命令の投機的実行を 増やすために使用されます。この機能では、分岐条件が述語レジスタに変換され、分岐が実行されなかった側の実行済み命令の結果を無効にするために使用されます。汎用レジスタ内の「 not a thing」 ビットを使用した遅延例外により、起こりうる例外を超えて投機的実行が可能になります。 非常に大きなアーキテクチャレジスタファイルは、 レジスタの名前変更 の必要性を回避します。 多分岐命令は、多数の代替分岐を1つの束にまとめることで、分岐予測の精度を向上させます。 Itaniumアーキテクチャでは、レジスタファイルの回転機能も追加されました。 これは、レジスタを手動で 展開して 名前を変更する必要がなくなるため、ソフトウェアパイプライン処理 に役立つツールです。
その他の研究開発 Itaniumアーキテクチャの開発とは直接関係のない、EPICアーキテクチャに関する他の調査も行われてきた。
イリノイ大学アーバナ・シャンペーン校の ウェンメイ・フー氏 が率いるIMPACTプロジェクトは、このテーマに関する 多くの影響力のある研究の源泉となった。HP研究所のPlayDohアーキテクチャも、もう一つの重要な研究プロジェクトだった。 Gelatoは 、学術研究者と企業研究者が協力して、Itaniumサーバー上で動作するLinuxアプリケーション向けのより効率的なコンパイラを開発するオープンソース開発コミュニティでした。
参考文献 ↑ Schlansker および Rau (2000 年 2 月)。「EPIC: 命令レベル並列プロセッサのアーキテクチャ」(PDF) 。HP Laboratories Palo Alto、HPL-1999-111。2022 年 5 月 19 日にオリジナル(PDF) からアーカイブ済み。2008年 5 月 8 日 に取得 。 ↑ US 4847755、 Gordon E. Morrison、Christopher B. Brooks 、 Frederick G. Gluck、「自然な並行性を持つ低レベル命令を並列処理することにより、処理全体を向上させるための並列処理方法および装置」、1989年7月11日公開、MCC Development Ltd.に譲渡。 1 2 「 イタニウムの発明:HPラボはいかにして次世代チップアーキテクチャの創造に貢献したか」 HP ラボ 2001 年6月 2012年3月4日時点の オリジナル よりアーカイブ 2007年12月14日 閲覧 ↑ De Gelas, Johan (2005年11月9日) 「イタニウム ― トンネルの先に光はあるのか?」 AnandTech 。 2006年1月13日の オリジナル からアーカイブ。 2008年5月8日 閲覧 。
外部リンク EPICの歴史的背景 マーク・スモザーマン(2002)「EPICアーキテクチャと実装の理解」