Streaming SIMD Extensions(SSE)[Wiki]
- ストリーミングSIMD拡張命令 (Streaming SIMD Extensions, SSE) は、インテルが開発したCPUのSIMD拡張命令セット、およびその拡張版の総称である。
- SSEは、x86アーキテクチャに8本の128ビットレジスタを新設し、浮動小数点演算のSIMD処理を実現したものである。AMDのK6-2に実装されたSIMD拡張命令3DNow!に対抗する形でPentium IIIから実装された。4個の32ビット単精度浮動小数点データを一本のレジスタに格納し、同一の命令を一括処理することが出来る。拡張命令であるため、その機能を使用するためにはSSEに対応したソースコードを作成し、プログラムをコンパイルする必要がある。
SSE
SSE4
SSE4.1
45nm世代の Core 2 の Penryn で搭載。47個の命令が追加になる。
Intel AVX
MMX/SSE後継のSIMD拡張命令セットで、呼称がIntel Advanced Vector eXtensionsとなった。Sandy Bridgeマイクロアーキテクチャで初めて搭載された。浮動小数点演算の演算幅がSSEの2倍の256ビットとなり、1命令で8つの単精度浮動小数点演算もしくは4つの倍精度浮動小数点演算を実行することができる。また、命令デコード性能向上のため、新しい命令フォーマット (VEXエンコーディング) が採用されている。3 or 4オペランドの非破壊型命令もサポートするため、レジスタ退避・復元処理の記述を省くことができる。この非破壊型の命令フォーマットに関しては従来の128ビット幅のSSE命令にも使うことができるため、AVXに対応したプロセッサでは新規に導入された256Bit命令を使わなくてもSIMD演算の性能が向上する可能性がある
Intel AVX2
インテルはHaswellマイクロアーキテクチャ から搭載。従来のSIMD整数演算命令が128ビットから256ビットに拡張されるのが主な変更点であるが、要素ごとに独立したシフト量を設定できるシフト命令、非連続なデータを並べ替えながらロードが可能なギャザー命令等の新たな命令も実装される。
FMA (Fused Multiply-Add)
x86プロセッサにおいて積和演算を実現するための拡張命令がFMAである。2007年にAMDがSSE5命令の一部として、2008年にIntelがAVX命令のサブセットとして採用を発表したが、両者の仕様は異なるものであった。その後、Intelは2009年初頭にFMA命令の仕様を変更し、4オペランド (FMA4) をやめ3オペランド形式 (FMA3) とした。2009年5月にはAMDがSSE5命令の採用を取りやめ、AVXのサポートを表明したため、仕様の統一が図られたかと思われたが、FMA命令に関してはIntelが仕様を変更する前の4オペランド版FMAを採用したため、FMA4とFMA3という二系統のFMA命令が混在したまま現在に至っている。
参考URL:http://ja.wikipedia.org/wiki/Streaming_SIMD_Extensions