SSE3

SSE3Streaming SIMD Extensions 3 )は、 Intelコード名Prescott New InstructionsPNI )としても知られ、[ 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命令セットは、古いものから新しいものの順に、MMX3DNow!(AMDが開発、新しいCPUではサポートされていない)、SSESSE2です。

SSE3にはSSE2に比べて13個の新しい命令が含まれています。[ 3 ]

変更点

最も注目すべき変更点は、これまでのSSE命令がほぼ垂直方向に動作していたのに対し、レジスタ内で水平方向に動作できるようになったことです。具体的には、1つのレジスタに格納された複数の値を加算および減算する命令が追加されました。[ 4 ]これらの命令は、多くのDSPおよび3D演算の実装を高速化するために使用できます。また、グローバル丸めモードを変更せずに浮動小数点値を整数に変換する新しい命令もあり、コストのかかるパイプラインストールを回避できます。最後に、この拡張機能では、 NetBurstLDDQUベースのプラットフォームでキャッシュライン境界を越えるロードに対してより優れたパフォーマンスを発揮する、アラインメントされていない整数ベクトルロードの代替命令が追加されました。[ 5 ]

SSE3対応CPU

新しい指示

一般的な指示

算術

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
古いx87FISTP命令と似ていますが、浮動小数点制御レジスタの丸めモード設定を無視し、代わりに「chop」(切り捨て)モードを使用します。[ 4 ] floatからintへの変換で標準的に切り捨て動作が必要なCなどの言語で、制御レジスタの高価なロードと再ロードを省略できます。

その他の指示

MONITORMWAIT
このMONITOR命令は監視対象のメモリアドレスを指定するために使用され、MWAITプロセッサを低電力状態にして監視対象アドレスへの書き込みイベントを待機します。[ 4 ]

参考文献

  1. ^ 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日閲覧
  2. ^ Shimpi, Anand Lal. 「Industry Update - Q4-2004: AMDがSSE3サポートを追加、Intelの925/915は売れず、その他」 www.anandtech.com 2010年8月9日時点のオリジナルよりアーカイブ。 2023年4月10日閲覧
  3. ^ 「Intel命令セット拡張テクノロジー」 . Intel . 2023年4月10日閲覧。
  4. ^ a b c d Wright, Christopher. 「SSE3命令セット」 . softpixel.com . 2023年4月10日閲覧
  5. ^ 「LDDQU — 128ビットの非整列整数のロード」 www.felixcloutier.com . 2023年4月10日閲覧。
  6. ^ Wilson, Derek. 「AMD K8 E4ステッピング:SSE3パフォーマンス」 www.anandtech.com . 2010年7月6日時点のオリジナルよりアーカイブ。 2023年4月10日閲覧
  7. ^ 「Intel Xeon 3.4GHz ['Nocona' コア]」 HEXUS 2004年8月18日. 2023年4月10日閲覧
  8. ^ a b c d e f g「SSE3命令 - x86アセンブリ言語リファレンスマニュアル」 . docs.oracle.com . 2023年4月10日閲覧