Streaming SIMD Extensions

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ストリーミング SIMD 拡張命令 (SSE, Streaming SIMD Extensions) は、インテルが開発したCPUのSIMD拡張命令セット、およびその拡張版の総称である。

目次

[編集] 概要

SSEは、x86アーキテクチャに8本の128bitレジスタを新設し、浮動小数点演算のSIMD処理を実現したものである。4個の32bit単精度浮動小数点データを一本のレジスタに格納し、同一の命令を一括処理することが出来る。拡張命令であるため、その機能を使用するためにはSSEに対応したソースコードを作成し、プログラムコンパイルする必要がある。

当初は主要な演算命令の処理に2クロックが必要であり、RISC系CPUに搭載されているSIMD命令やAMDの実装した3DNow!命令と比べて、最適化が煩雑で性能的なディスアドバンテージとなっていたが、Coreマイクロアーキテクチャより1クロック処理が可能な形態へと改良された。

元々はインターネット・ストリーミング SIMD 拡張命令 (Internet Streaming SIMD Extensions, ISSE)と呼ばれていたが、命令内容そのものはインターネットとは直接関係が無くマーケティング的な要素が強かったため、現在ではインターネットの文字が外され単にSSEと呼ばれるようになっている。

SSEの機能を強化したものにSSE2やSSE3、SSSE3 (Supplemental Streaming SIMD Extensions 3) がある。また、SSEは他社製品にも採用されている。

[編集] SSE

Pentium III にはじめて実装された。追加された命令数は70。Pentium III の開発コードネームが Katmai であったことから、KNI (Katmai New Instructions) やMMX2とも呼ばれていた。廉価製品のCeleronにおいても、その第三世代製品 Coppermine-128k よりSSEに対応している。

AMD社によるSIMD拡張命令セット、3DNow! プロフェッショナル・テクノロジは、SSEと互換性がある。

[編集] SSE2

SSE2は従来のSSEに144個の新たな命令が加えられ、一度に扱えるデータの数も増加した。具体的には64ビットの倍精度浮動小数点データ及び整数演算の追加、キャッシュの制御機能の強化がなされた。

SSE2はPentium4で初めて実装された。AMD社のAMD64アーキテクチャでは、拡張命令ではなく基本命令としてSSE,SSE2が取り込まれている。

[編集] SSE3

SSE3はSSE2に13個の新たな命令が加えられた。具体的にはメモリアクセス及び複素数計算の高速化、仮想CPUのスレッドの動作制御などの機能が搭載され、主に動画圧縮の処理が向上した。

SSE3の名称が発表される前はPNI(Prescott New Instructions)と呼ばれていた。Pentium4のPrescottコアで初めて実装された。

[編集] SSSE3

SSSE3はSSE3に32個の新たな命令が加えられた。 Coreマイクロアーキテクチャベースのマイクロプロセッサで初めて実装された。

SSSE3と名付けられる前はMNI(Merom New Instructions; 旧称Tejas New Instructions)という名称があった。登場当初はSSE4と呼ばれると一般的には思われていた。

[編集] SSE4

45nm世代の Core 2 の Penryn で搭載。 54個の命令が追加になる。そのうち47個がSSE4.1、7個がSSE4.2と呼ばれる。 初期のPenrynではSSE4.1のみが実装。

[編集] SSE4a

AMD Phenomで搭載。 キャッシュ関連や挿入、展開の4命令が追加。IntelのSSE4とは名前は似ているが互換性は無い。

[編集] SSE5

AMDが2007年8月に発表した。AMDの進めるTorrenza(開発コード)アーキテクチャに従い、これまで別途プログラムを作成する必要があった内蔵GPUユニットや暗号化アクセラレータなどを、CPUコア側からシームレスに扱えるようになる。

[編集] Intel AVX

MMX/SSE後継のSIMD拡張命令セット。"Sandy Bridge"から搭載予定。演算幅がSSEの2倍の256bitとなるため理論上演算性能も2倍になる。またAVXでは命令デコード性能向上のため新しい命令フォーマットが採用される。

[編集] 歴史

[編集] 関連項目