SSE3(Streaming SIMD Extensions 3)は、 IntelのコードネームPrescott New Instructions(PNI)としても知られており、 [ 1 ] IA-32(x86)アーキテクチャ向けのSSE命令セットの3番目のバージョンです。Intelは2004年にPentium 4およびCeleron D CPUのPrescott改訂版でSSE3を導入しました。[ 1 ] 2005年4月、AMDはAthlon 64 CPUの改訂版E(VeniceおよびSan Diego)でSSE3のサブセットを導入しました。[ 2 ] x86プラットフォームの初期のSIMD命令セットは、古いものから新しいものまで、MMX、3DNow!(AMDが開発し、新しいCPUではサポートされなくなりました)、SSE、SSE2です。
SSE3にはSSE2に比べて13個の新しい命令が含まれています。[ 3 ]
最も注目すべき変更点は、これまでのすべての SSE 命令がほぼ厳密に垂直方向に動作していたのに対し、レジスタ内で水平方向に動作できるようになったことです。より具体的には、単一のレジスタに格納されている複数の値を加算および減算する命令が追加されました。[ 4 ]これらの命令は、多くのDSPおよび3D演算の実装を高速化するために使用できます。また、グローバルな丸めモードを変更することなく浮動小数点値を整数に変換する新しい命令も追加され、コストのかかるパイプラインの停止を回避できます。最後に、この拡張機能では、キャッシュライン境界をまたぐロードに対してNetBurstLDDQUベースのプラットフォームでより優れたパフォーマンスを発揮する、アライメントされていない整数ベクトルロードの代替手段が追加されました。[ 5 ]
ADDSUBPDADDSUBPSHADDPDHADDPSHSUBPDHSUBPSLDDQUMOVDDUP, MOVSHDUP, MOVSLDUP[ 4 ]FISTTPFISTP命令と同様ですが、浮動小数点制御レジスタの丸めモード設定を無視し、代わりに「chop」(切り捨て)モードを使用します。[ 4 ]標準で float から int への変換に切り捨て動作が必要な C などの言語では、制御レジスタの高コストなロードと再ロードを省略できます。MONITOR、MWAITMONITOR命令は監視対象のメモリ アドレスを指定するために使用され、このMWAIT命令はプロセッサを低電力状態にして、監視対象のアドレスへの書き込みイベントを待機します。[ 4 ]