SSE

読み:エスエスイー
外語:SSE: Streaming SIMD Extensions 英語
品詞:商品名

ストリーミングSIMD拡張命令。IntelマイクロプロセッサであるPentium Ⅲから搭載された命令群のこと。開発中にはKNIやMMX2とも呼ばれていた。

機能

マルチメディア向け命令セットMMXの機能に加え、新たに70個の命令が追加された。

新設された8本の128ビットのレジスタに32ビットの単精度浮動小数点データを4つまで格納可能で、これをまとめて演算できる。かくして浮動小数点演算の大幅な高速化を実現した。

OS

レジスタが増えている関係から、タスク切り換え時に新レジスタの待避と復元処理をOS側が対応していないとならない。

このため、マルチタスクオペレーティングシステムまたはマルチスレッドオペレーティングシステムの場合、古いOSでは使用することができない。

機能の有無判別

機能の有無は、EAXレジスタに1を代入してCPUID命令を実行し、EDXレジスタに得られたフラグのビット25が1かどうかで確認できる。

SSEでは計70命令が追加された。ニーモニックのルールは次の通りである。

  • 命令の最後のpsは、4つのパックド単精度浮動小数点演算。
  • 命令の最後のssは、最下位のみの単精度浮動小数点演算。

また、movupsを除く殆どの命令で、メモリーとの128ビットの読み書きには16バイトのアラインメントが必要。さもないと一般保護例外

SSEで追加された新命令は、次の通りである。

  • 転送
    • movaps
    • movups
    • movss
    • movlps
    • movhps
    • movlhps
    • movhlps
    • movmskps
  • 加算
    • addps
    • addss
  • 減算
    • subps
    • subss
  • 乗算
    • mulps
    • mulss
  • 除算
    • divps
    • divss
  • 逆数の近似値
    • rcpps
    • rcpss
  • 平方根
    • sqrtps
    • sqrtss
  • 平方根の逆数の近似値
    • rsqrtps
    • rsqrtss
  • 最大
    • maxps
    • maxss
  • 最小
    • minps
    • minss
  • 論理
    • andps
    • andnps
    • orps
    • xorps
  • 比較
    • cmpps
    • cmpss
    • comiss
    • ucomiss
  • シャッフル
    • shufps
  • アンパック
    • unpckhps
    • unpcklps
  • 変換
    • cvtpi2ps
    • cvtsi2ss
    • cvtps2pi
    • cvtss2si
  • MXCSRステート管理
    • ldmxcsr
    • stmxcsr
  • キャッシュなしで転送
    • movntps
    • maskmovq
  • キャッシュ制御、プリフェッチ、メモリーアクセス順序
    • prefetch
    • sfence

以下の命令がMMX用に追加された。MMX2とも呼ばれる(MMXと同様に、SSE2からはXMMレジスタに対しても可能)。

  • 転送
    • movntq
  • 平均
    • pavgb
  • ワードの転送
    • pextrw
    • pinsrw
  • 最大
    • pmaxub
    • pmaxsw
  • 最小
    • pminub
    • pminsw
  • 各バイトの最上位ビットを汎用レジスタに転送
    • pmovmskb
  • 乗算
    • pmulhuw
  • 絶対値
    • psadbw
  • シャッフル
    • pshufw