Intelのプロセッサの開発コードネーム「Sandy Bridge」から搭載予定の拡張命令セット。
80x86系と呼ばれる一連のプロセッサは、16ビットマイクロプロセッサとして作られた8086の命令フォーマットを拡張した命令フォーマットを採用している。
IA-32にしろ、AMD64 ISA/Intel 64にしろ、16ビット命令の前にプリフィックスを置いて命令を拡張する、という形式を取ってきた。
理論上は幾らでも拡張可能だが、命令が複雑になるためデコード(解読)が難しくなる。このため、命令デコーダ(解読器)は肥大化し電力消費量の増大を招き、またCPUの高速化にとってもボトルネックとなってきた。
拡張を重ねて汚くなる例として、SSE命令がある。元々は3バイト構成の命令セットであったが、データタイプの拡張のために1バイトのプリフィックスが追加され、更に64ビット化に伴いレジスタを8本追加するため1バイトのREXプリフィックスが追加され、結果最大で5バイトになった。すばらしい拡張性、と言えば聞こえは良いが、この命令の解読は容易なことではない。
IntelはかつてIA-64で手痛い失敗はしているが、IA-32にも限界は来ており、早晩、何らかの対策は必要だろうと見られていた。
AVXの新しいアプローチは、従来と互換性を持たせたまま、新しい命令フォーマットを導入することである。
従来のように、1バイト長のプリフィックスを続々と重ねるという非効率な手法ではない。今回も新しいプリフィックスを追加はするが、この1バイト長のVEXプリフィックスには、続いて1〜2バイトのペイロードが置かれ、その後は従来どおりの命令が続く、という拡張が施されている。
機械語コードは、ペイロード長が1の時はC5、ペイロード長が2の時はC4である。
例えばIntelによると、次のように説明されている。
C4とC5はそれぞれLES、LDS命令であるが、これらは利用できなくなるものと思われる。
また、C4の場合3ビットの予備がある。Intelによれば、3ビットあれば1,000以上の新命令を加えることが可能で、新しい命令、レジスタ、ベクタ長、殆ど何でも加えられる、としている。つまりこの方式であれば、当分は汚い拡張が不要になるということである。