EPICアーキテクチャ

EPICアーキテクチャ（エピック・アーキテクチャ）は、VLIWをベースに改良が施されたコンピュータ・アーキテクチャ。インテルおよびヒューレット・パッカードが、IA-64（Itanium）で開発・採用した。Explicitly Parallel Instruction Computing Architectureの略。
背景.
アウト・オブ・オーダー実行と投機的実行パラダイムが規模とともに複雑さを増してきたため、プロセッサ業界では1990年代中頃から複数の処理を明示的にひとつの命令で行う命令セットの再評価が始まった。
このような研究はVLIWと呼ばれるもので複数の機能ユニットに対する処理が各命令にエンコードされるものである。
目標は複数命令の動的スケジューリングの複雑さをハードウェア実装からコンパイラに移すことであり、これにより(トレースフィードバック情報を使って)命令スケジューリングが静的に行われるようになる。
もうひとつ重要な目標は命令レベルの並列性(ILP、instruction level parallelism)をさらに活用することである。
VLIWの弱点.
VLIWが(少なくとも本来の形式では)主流になれなかったのは、以下のような欠点があったためとした。
EPICアーキテクチャ.
EPICはそれらの問題点に対して以下のような機能で対処する。
<br>
例<br>
識別フラグが「-」なら以前の命令に依存しない、「+」なら依存するとする。<br>
+命令A +命令B -命令C -命令D +命令E -命令F<br>
という命令列があったとき、2命令同時実行可能なハードウェアなら<br>
+命令A<br>
+命令B -命令C<br>
-命令D<br>
+命令E -命令F<br>
の様に4クロックで実行できる。将来3命令同時実行可能なようにハードウェアを拡張した場合、<br>
+命令A<br>
+命令B -命令C -命令D<br>
+命令E -命令F<br>
命令セットの互換性を崩さず先の命令列をそのまま、しかも以前のハードウェアより速い3クロックで実行できる。<br>
<br>
実際のIA-64の実装では、命令ごとに1ビットの識別フラグ領域を確保するのではなく、一定数の命令を束にした単位(バンドルと呼ぶ)ごとに数ビットのフラグ領域を確保している。バンドル幅を埋めるのにNOPを使う点を除けば、命令ごとの識別フラグと同様の効果を得られる。<br>
"EPIC"アーキテクチャには"ILP"を高めるための様々なコンセプトが詰め込まれている。
EPICの実装.
IA-64アーキテクチャ（Itanium）ではレジスタ・ローテーション機能を追加している。これはループ展開やソフトウェア・パイプライニングなどに役立つ。
Wen-mei Hwuが率いたイリノイ大学のIMPACTプロジェクトはこの分野に様々な影響を与えた。HPの研究所のPlayDohアーキテクチャも別の大きな研究プロジェクトとして挙げられる。
2004年、EPICアーキテクチャはデジタル信号処理のような特定の分野で成功している。一般的なコンピューティング分野では、そもそもそれほどの並列性を抽出できるのか議論があり、評価は定まっていない。Itaniumの創始者であるヒューレット・パッカード社は2004年9月にアーキテクチャを強調するのをやめた。