SSE

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

ストリーミングSIMD拡張命令。IntelマイクロプロセッサーであるPentium Ⅲから搭載された命令群のこと。

目次

新たに128ビット長のXMMレジスター8本を新設し、これを用いてSIMD命令を処理する。

一つのレジスターに32ビットの単精度浮動小数点数を4つまで格納可能で、同一の演算命令を一括処理できる。かくして浮動小数点演算の大幅な高速化を実現した。

マルチタスクOSまたはマルチスレッドOSの場合は、タスク/スレッド切り換え時にレジスターの待避と復元処理をせねばならないが、レジスターが増えているという都合から、未対応の古いOSでは使用することができない。

SSE以降も続々と機能が拡張され、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2などと続いている。

沿革

SSE

Pentium Ⅲから搭載された、最初のSSEである。追加命令数は70で、開発中にはKNIやMMX2とも呼ばれていた。

AMD主導の拡張命令である3DNow! Professionalは、このSSEに対応している。

SSE2

Pentium 4(WillametteコアとNorthwoodコア)から搭載された。追加命令数は144で、倍精度浮動小数点演算や整数演算などに対応した。

AMDでは、AMD64で標準命令として取り込まれている。

SSE3

Pentium 4の第三世代プロセッサーコアPrescottから搭載された。

追加命令数は13に過ぎないが、複素数演算やメモリーアクセスなどの高速化が図られており、ビデオエンコーディングなどの処理能力が向上している。

SSSE3

SSE3に対する拡張で、追加命令数は16である。

特に、水平加算などが追加されたため、内積計算などが高速化された。

SSE 4.1

Core 2の新コアPenrynから搭載された。追加命令数は47である。

様々なメディア処理、画像処理、3D処理のパフォーマンス向上を目的とした命令が追加されている。

SSE 4.2

Core i7(Nehalemコア)から搭載された。追加命令数は7である。

XML解析用の文字列検索命令や、CRC32演算命令といった、サーバー向けの命令が追加されている。

SSE4a

AMD独自の命令で、AMD K8Lから追加された。名前こそSSE4となっているが、IntelのSSE4とは全く無関係である。

SSE5

AMDが追加を予定していたもの。後述するIntel AVXが後から発表されたため、SSE5はキャンセルされた。

Intel AVX

MMX/SSEの後継となるSIMD拡張命令セットで、Sandy Bridgeから搭載された。

VEXプリフィックスを用いた、全く新しい命令フォーマットを使用することを特徴とする。これに伴い、従来のXMMレジスターが128ビット長だったものを、倍の256ビット長のYMMレジスターに拡張することができた。理論上、1スロットあたりの演算性能は倍となる。

Intel AVX2

Haswellから搭載された、拡張命令セット。

機能の有無判別

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

  • SSE ‐ EDXレジスターのビット25
  • SSE2 ‐ EDXレジスターのビット26
  • SSE3 ‐ ECXレジスターのビット0
  • SSSE3 ‐ ECXレジスターのビット9
  • SSE 4.1 ‐ ECXレジスターのビット19
  • SSE 4.2 ‐ ECXレジスターのビット20
  • Intel AVX ‐ ECXレジスターのビット28

AVX2以降は、EAXレジスターに7、ECXレジスターに0を代入してCPUID命令を実行し、EBXレジスターに得られたフラグの該当ビットが1かどうかで確認できる。

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

  • SSE4a ‐ ECXレジスターのビット6
  • XOP ‐ ECXレジスターのビット11
  • FMA4 ‐ ECXレジスターのビット16

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
用語の所属
マルチメディア命令
関連する用語
SSE2
SSE3
KNI
MMX
浮動小数点
__m128
Enhanced 3DNow!

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club