おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

Streaming SIMD Extensions(SSE)[Wiki]

SSE
SSE4
SSE4.1

45nm世代の Core 2 の Penryn で搭載。47個の命令が追加になる。

SSE4.2

Nehalemマイクロアーキテクチャ の第1世代 Intel Core i で初めて実装された。7個の命令を追加。SSE 4.2 の追加命令は以下の通り。

  • String & Text New Instructions (STTNI)
    • PCMPESTRI
    • PCMPESTRM
    • PCMPISTRI
    • PCMPISTRM
    • PCMPGTQ
  • Application Targeted Accelerators (ATA)
    • CRC-32
    • POPCNT - ビットが立っている数を数える
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命令が混在したまま現在に至っている。

  • FMA命令
    • MADD:A×B+C
    • MSUB:A×B-C
    • NMADD:-(A×B)+C
    • NMSUB:-(A×B)-C
  • FMA4
  • FMA3

参考URL:http://ja.wikipedia.org/wiki/Streaming_SIMD_Extensions