最終更新:2017-07-21 (金) 11:33:02 (2650d)
AVX
Top / AVX
Intel Advanced Vector eXtentions
32nmで製造される次世代アーキテクチャの「Sandy Bridge」に搭載される新しい拡張命令?
AVXでは算術演算命令?が131個、非算術演算命令?が126個定義されており、従来のSSE命令のほぼスーパーセットとして定義されている
http://software.intel.com/en-us/avx/
変更点
- レジスターを256bitに拡張
- エンコード方式を変更
- 機械語での命令の先頭に「C4」や「C5」があった場合、その後ろに「命令長が何byteあるか」「どんなレジスターを使うか」を格納する「Payload」フィールドを追加した
- 256bit SIMD演算をサポート
- 3・4オペランド命令を導入
- ADDPS xmm1, xmm2/m128
- つまり、命令に対する被演算子(オペランド、xmm1やm128など)が2つしか指定できない。この命令を実行すると、xmm1にxmm2かm128のどちらかを加算して、その結果をxmm1に書き戻す。つまりxmm1の値が書き換わってしまうので、元の値を保持しておきたい場合、実行に先立って値をどこかにコピーしておく必要がある。
- AVXではこれに対し、3ないし4オペランドがサポートされる。例えばADDPSに対応するAVX命令としては、3オペランドの以下のような命令が用意される。
- VADDPS xmm1, xmm2, xmm3/m128(m256も可)
- この場合、xmm2とxmm3もしくはm128(256)の値を加算し、結果をxmm1に書き戻すことになる。つまり元の値は残されることになる。
- FMA(Fused Multiply Add)命令をサポート
- FMAというのは、例えば「A=B×C+D」というフォーマットの命令である。自然科学の分野で、こうした演算は非常に多く利用されており、AVXではこれを1命令で実行できる命令セットを用意した。
AVX2
- 浮動小数点のFMA(積和演算)に対応
- 256ビット長の整数ベクトル演算(整数演算SIMD機能)に対応