EPICアーキテクチャ
EPICはそれらの問題点に対して以下のような機能で対処する。
各命令には識別フラグがあり、次の命令がそれ以前の命令の処理結果に依存しているかどうかを示す。識別フラグによって命令幅を変更できるVLIWと言える。これにより、将来複数の命令を同時に実行する拡張を実現することができる。コンパイラが同時実行可能命令を十分には見つけられない場合、NOP命令で命令幅を埋める代わりに識別フラグに依存マークをつけ、命令キャッシュなどを有効利用できる。依存しているかどうかはコンパイラが決定するので、ハードウェアが依存関係をチェックするのは簡単になる。識別フラグに依存マークがない限りは実行ユニットの分だけ命令を発行し、依存マークを見つけたらレイテンシを確保して以前の命令の処理結果を待つ。
例 識別フラグが「-」なら以前の命令に依存しない、「+」なら依存するとする。 +命令A +命令B -命令C -命令D +命令E -命令F という命令列があったとき、2命令同時実行可能なハードウェアなら +命令A +命令B -命令C -命令D +命令E -命令F の様に4クロックで実行できる。将来3命令同時実行可能なようにハードウェアを拡張した場合、 +命令A +命令B -命令C -命令D +命令E -命令F 命令セットの互換性を崩さず先の命令列をそのまま、しかも以前のハードウェアより速い3クロックで実行できる。