Streaming SIMD Extensions
ストリーミングSIMD拡張命令 (Streaming SIMD Extensions, SSE) は、インテルが開発したCPUのSIMD拡張命令セット、およびその拡張版の総称である。
目次 |
[編集] 概要
SSEは、x86アーキテクチャに8本の128bitレジスタを新設し、浮動小数点演算のSIMD処理を実現したものである。4個の32bit単精度浮動小数点データを一本のレジスタに格納し、同一の命令を一括処理することが出来る。拡張命令であるため、その機能を使用するためにはSSEに対応したソースコードを作成し、プログラムをコンパイルする必要がある。
当初の64Bit演算機では128Bit演算命令の処理に2クロックが必要であり、RISC系CPUに搭載されているSIMD命令やAMDの実装した3DNow!命令と比べて、最適化が煩雑で性能的なディスアドバンテージとなっていたが、Coreマイクロアーキテクチャ/K10マイクロアーキテクチャより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とは名前は似ているが互換性は無い。
[編集] Intel AVX
MMX/SSE後継のSIMD拡張命令セットで、呼称がIntel Advanced Vector eXtensionsとなった。Sandy Bridgeマイクロアーキテクチャから搭載され、演算幅がSSEの2倍の256bitとなるため理論上の演算性能も2倍になる。また、命令デコード性能向上のため、新しい命令フォーマットが採用されている。3 or 4オペランドの非破壊型命令もサポートするため、レジスタ退避・復元処理の記述を省くことができる。
AMDはBulldozer世代向けに当初予定していたSSE5拡張命令をキャンセルし、AMD FXではAVXがサポートされることになった。
[編集] Intel AVX2
インテルはHaswellマイクロアーキテクチャ から搭載。SIMD整数演算が128ビットから256ビットになるなど。
[編集] 歴史
- 1999年 2月: インテルがSSE搭載のPentium III プロセッサを発表。
- 2000年 11月: インテルがSSE2搭載のPentium 4 プロセッサを発表。
- 2004年 2月: インテルがSSE3搭載のPentium 4 プロセッサを発表。
- 2006年 6月: インテルがSSSE3搭載のXeon 5100 プロセッサを発表。
- 2006年 7月: インテルがSSSE3搭載のIntel Core 2 プロセッサを発表。
- 2007年 8月: AMDがSSE5を発表。
- 2008年 1月: インテルがSSE4(SSE4.1のみ)搭載のIntel Core 2 プロセッサを発表。
- 2011年 1月: インテルがAVX搭載の第二世代Intel Core i7 プロセッサを発表。