Single Instruction | Multiple Instruction | |
Single Data | SISD | MISD |
Multiple Data | SIMD | MIMD |
mm0 - mm7 まで 各64bits(8bytes)。レジスタは FPU と共有
Intel 系では FPU->MMX のときは emms 命令を使う必要がある。 AMD 系では FPU->MMX, MMX->FPU のときに femms 命令を使う。
FPU, MMX と同じレジスタを共有しているため、 emms 命令を呼び出しの前後に使う必要がある
XMMレジスタは xmm0 - xmm7 まで 各128bit
SSE, SSE2 が基本命令セットに組み込まれている。 XMM レジスタは xmm15 までの 16本
MMX | 3DNow! | SSE | SSE2 | SSE3 | SSE4 | AVX | |
K6 | ○ | ||||||
K6-2 | ○ | ○ | |||||
K6-3 | ○ | ○ | |||||
Athlon | ○ | ○ (Enhanced) | |||||
AthlonXP | ○ | ○ (Professional) | ○ | ||||
Athlon64 | ○ | ○ | ○ | ○ | |||
Athlon64(Venice) | ○ | ○ | ○ | ○ | ○ | ||
Athlon64 X2 | ○ | ○ | ○ | ○ | ○ | ||
Phenom | ○ | ○ | ○ | ○ | ○ | ○ SSE4a | |
FX | ○ | ○ | ○ | ○ | ○ | ○ SSE4a, 4.2 | ○ |
MMX Pentium | ○ | ||||||
Pentium II | ○ | ||||||
Pentium III | ○ | ○ | |||||
Pentium 4 | ○ | ○ | ○ | ||||
Pentium M | ○ | ○ | ○ | ||||
Pentium 4(Prescott) | ○ | ○ | ○ | ○ | |||
Pentium D | ○ | ○ | ○ | ○ | |||
Core | ○ | ○ | ○ | ○ | |||
Core2Duo | ○ | ○ | ○ | ○ (+ SSSE3) | |||
Core2(Penryn) | ○ | ○ | ○ | ○ | ○ SSE4.1 | ||
i7 | ○ | ○ | ○ | ○ | ○ SSE4.2 | ||
i7 (Sandy Bridge) | ○ | ○ | ○ | ○ | ○ SSE4.2 | ○ | |
Geode GX, LX | ○ | ○ | |||||
Geode NX | ○ | ○ (Professional) | ○ | ||||
Atom | ○ | ○ | ○ | ○ (+ SSSE3) |
Visual C++ の場合
コンパイラオプション
-ftree-vectorize オプションで、ループ処理を AltiVec, SSE を使用するように自動生成する。 -O2 等の最適化では有効にならない。
Programmable shader を 3DCG 以外の一般的な計算に利用する方法。 使えるスレッド数は GPU ごとに異なる。
RadeonHD 4000 シリーズ, GeForce 8 シリーズ から使える
GeForce8以上で使える。 Quadro FX 370, 570, 1700, 5600, 4600 以降