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 ] AMDは2005年4月にAthlon 64 CPUのリビジョンE(VeniceおよびSan Diego)でSSE3のサブセットを導入しました。[ 2 ] x86プラットフォームの初期のSIMD命令セットは、古いものから新しいものの順に、MMX、3DNow!(AMDが開発、新しいCPUではサポートされていない)、SSE、SSE2です。
SSE3にはSSE2に比べて13個の新しい命令が含まれています。[ 3 ]
変更点
最も注目すべき変更点は、これまでのSSE命令がほぼ垂直方向に動作していたのに対し、レジスタ内で水平方向に動作できるようになったことです。具体的には、1つのレジスタに格納された複数の値を加算および減算する命令が追加されました。[ 4 ]これらの命令は、多くのDSPおよび3D演算の実装を高速化するために使用できます。また、グローバル丸めモードを変更せずに浮動小数点値を整数に変換する新しい命令もあり、コストのかかるパイプラインストールを回避できます。最後に、この拡張機能では、 NetBurstLDDQUベースのプラットフォームでキャッシュライン境界を越えるロードに対してより優れたパフォーマンスを発揮する、アラインメントされていない整数ベクトルロードの代替命令が追加されました。[ 5 ]
SSE3対応CPU
- AMD:
- Opteron(ステッピングE4以降[ 6 ])
- セムプロン(パレルモ以来。ステップE3)
- Athlon 64 (Venice Stepping E3 および San Diego Stepping E4 以降)
- Athlon 64 FX (サンディエゴ ステッピング E4 以降)
- アスロン 64 X2
- フェノム 64 X2
- Athlon IIとPhenom II
- トゥリオン家
- K10ファミリー
- APUファミリー(GPUなしを含む)
- FXシリーズ
- 禅ファミリー
- インテル:
- VIA /ケンタウロス:
- Transmeta Efficeon TM88xx(Code Morphingソフトウェアアップデート搭載)(モデル番号TM86xxではありません)
新しい指示
一般的な指示
算術
ADDSUBPD- 加算・減算・パックドダブル[ 8 ]
- 入力: { A0, A1 }, { B0, B1 }
- 出力: { A0 − B0, A1 + B1 }
ADDSUBPS- 加算・減算・パック・シングル[ 8 ]
- 入力: { A0、A1、A2、A3 }、{ B0、B1、B2、B3 }
- 出力: { A0 − B0、A1 + B1、A2 − B2、A3 + B3 }
AOS(構造体の配列)
HADDPD- 水平加算パック倍精度[ 8 ]
- 入力: { A0, A1 }, { B0, B1 }
- 出力: { A0 + A1, B0 + B1 }
HADDPS- 水平加算パックシングル[ 8 ]
- 入力: { A0、A1、A2、A3 }、{ B0、B1、B2、B3 }
- 出力: { A0 + A1、A2 + A3、B0 + B1、B2 + B3 }
HSUBPD- 水平減算パックダブル[ 8 ]
- 入力: { A0, A1 }, { B0, B1 }
- 出力: { A0 − A1, B0 − B1 }
HSUBPS- 水平減算パックシングル[ 8 ]
- 入力: { A0、A1、A2、A3 }、{ B0、B1、B2、B3 }
- 出力: { A0 − A1、A2 − A3、B0 − B1、B2 − B3 }
LDDQU- 上で述べたように、これは不整列整数ベクトルロードの代替手段である。[ 8 ]これはビデオ圧縮タスクに役立つ可能性がある。
MOVDDUP、、[ 4 ]MOVSHDUPMOVSLDUP- これらは、複素数や音などの波の計算に役立ちます。
FISTTP- 古いx87
FISTP命令と似ていますが、浮動小数点制御レジスタの丸めモード設定を無視し、代わりに「chop」(切り捨て)モードを使用します。[ 4 ] floatからintへの変換で標準的に切り捨て動作が必要なCなどの言語で、制御レジスタの高価なロードと再ロードを省略できます。
その他の指示
MONITOR、MWAIT- この
MONITOR命令は監視対象のメモリアドレスを指定するために使用され、MWAITプロセッサを低電力状態にして監視対象アドレスへの書き込みイベントを待機します。[ 4 ]
参考文献
- ^ a b Shimpi, Anand Lal; Wilson, Derek. 「Intel's Pentium 4 E: Prescott Arrives with Luggage」www.anandtech.com . 2010年4月24日時点のオリジナルよりアーカイブ。2023年4月10日閲覧。
- ^ Shimpi, Anand Lal. 「Industry Update - Q4-2004: AMDがSSE3サポートを追加、Intelの925/915は売れず、その他」 www.anandtech.com 。 2010年8月9日時点のオリジナルよりアーカイブ。 2023年4月10日閲覧。
- ^ 「Intel命令セット拡張テクノロジー」 . Intel . 2023年4月10日閲覧。
- ^ a b c d Wright, Christopher. 「SSE3命令セット」 . softpixel.com . 2023年4月10日閲覧。
- ^ 「LDDQU — 128ビットの非整列整数のロード」 www.felixcloutier.com . 2023年4月10日閲覧。
- ^ Wilson, Derek. 「AMD K8 E4ステッピング:SSE3パフォーマンス」 www.anandtech.com . 2010年7月6日時点のオリジナルよりアーカイブ。 2023年4月10日閲覧。
- ^ 「Intel Xeon 3.4GHz ['Nocona' コア]」 HEXUS 2004年8月18日. 2023年4月10日閲覧。
- ^ a b c d e f g「SSE3命令 - x86アセンブリ言語リファレンスマニュアル」 . docs.oracle.com . 2023年4月10日閲覧。