SSE4 ( Streaming SIMD Extensions 4 ) は、Intel Core マイクロアーキテクチャおよびAMD K10 (K8L)で使用されるSIMD CPU命令セットです。2006 年 9 月 27 日に Fall 2006 Intel Developer Forumで発表され、ホワイトペーパーには漠然とした詳細が記載されていました。[1] 47 個の命令のより正確な詳細は、北京で開催された Spring 2007 Intel Developer Forum のプレゼンテーションで明らかになりました。[2] SSE4は、2004 年初頭にリリースされたSSE3命令セットを拡張したものです。以前の Intel SIMD 命令 (例: SSE3) を使用するすべてのソフトウェアは、SSE4 命令をサポートする最新のマイクロプロセッサと互換性があります。既存のソフトウェアはすべて、SSE4 を組み込んだマイクロプロセッサ、および SSE4 を組み込んだ既存および新規のアプリケーションが存在する場合でも、変更を加えることなく引き続き正常に動作します。[3]
他の前世代のCPU SIMD命令セットと同様に、SSE4は最大16個のレジスタ(それぞれ128ビット幅)をサポートし、4つの32ビット整数、4つの32ビット単精度浮動小数点数、または2つの64ビット倍精度浮動小数点数をロードできます。[1]ベクトル要素ごとの加算/乗算やベクトルスカラー加算/乗算などのSIMD演算は、1つのCPU命令で複数バイトのデータを処理します。並列演算により、パフォーマンスが著しく向上します。SSE4.2では、最大16バイトの2つの文字列フラグメントを比較する命令を含む、新しいSIMD文字列演算が導入されました。[1] SSE4.2はSSE4のサブセットであり、SSE4の最初のリリースから数年後にリリースされました。
SSE4 サブセット
Intel SSE4 は 54 個の命令で構成されています。一部の Intel ドキュメントでSSE4.1と呼ばれている 47 個の命令で構成されるサブセットは、 Penrynで利用できます。さらに、残りの 7 個の命令で構成される 2 番目のサブセットであるSSE4.2 は、 NehalemベースのCore i7で初めて利用可能になりました。Intel は、開発者からのフィードバックが命令セットの開発に重要な役割を果たしたと考えています。
Barcelonaベースのプロセッサから、AMD は4 つの SSE4 命令と 4 つの新しい SSE 命令を含むSSE4a命令セットを導入しました。これらの命令は SSE4.1 をサポートする Intel プロセッサには存在せず、AMD プロセッサはBulldozerベースの FX プロセッサでのみ Intel の SSE4.1 と SSE4.2 (完全な SSE4 命令セット) のサポートを開始しました。SSE4a では、アラインされていないロード命令がアラインされたアドレスのアラインされたバージョンと同じくらい高速になる、ミスアライン SSE 機能も導入されました。また、メモリにアクセスする非ロード SSE 操作のアラインメント チェックを無効にすることもできました。[4] Intel は後に Nehalem プロセッサで同様の速度向上をアラインされていない SSE に導入しましたが、 AVXまで非ロード SSE 命令によるミスアライン アクセスは導入しませんでした。[5]
名前の混乱
Intel Core 2プロセッサ ラインで導入された、現在SSSE3 (Supplemental Streaming SIMD Extensions 3)として知られているものは、Intel が SSSE3 という名称を思いつくまで、一部のメディアでは SSE4 と呼ばれていました。社内では Merom New Instructions と呼ばれていましたが、当初 Intel は特別な名前を割り当てる予定はなく、一部のジャーナリストから批判されました。[6] Intel は最終的に混乱を解消し、SSE4 という名前を次の命令セット拡張のために確保しました。[7]
IntelはSSE4を指すためにHD Boostというマーケティング用語を使用しています。[8]
新しい指示
SSE のこれまでのすべてのイテレーションとは異なり、SSE4 にはマルチメディア アプリケーションに固有ではない操作を実行する命令が含まれています。定数フィールドによって動作が決定される多数の命令と、XMM0 を暗黙の 3 番目のオペランドとして受け取る一連の命令が特徴です。
これらの命令のいくつかは、Penryn のシングル サイクル シャッフル エンジンによって有効になります。(シャッフル操作はレジスタ内のバイトを並べ替えます。)
SSE4.1
これらの命令は、Intel のCore マイクロアーキテクチャの 45 nm 縮小であるPenryn マイクロアーキテクチャで導入されました。サポートは CPUID.01H:ECX.SSE41[ビット 19] フラグによって示されます。
SSE4.2
SSE4.2ではSTTNI(文字列およびテキストの新命令)[10] 、一度に16バイトの2つのオペランドで文字検索と比較を実行するいくつかの新しい命令が追加されました。これらは(とりわけ)XML文書の解析を高速化するために設計されました。 [11] また、特定のデータ転送プロトコルで使用される巡回冗長検査CRC32を計算する命令も追加されました。これらの命令は、 NehalemベースのIntel Core i7製品ラインで最初に実装され、SSE4命令セットを完成させました。一方、AMDはBulldozerマイクロアーキテクチャから最初にサポートを追加しました。サポートはCPUID.01H:ECX.SSE42[ビット20]フラグで示されます。
Windows 11 24H2ではCPUがSSE4.2をサポートしている必要があり、そうでない場合はWindowsカーネルを起動できません。[12]
POPCNTそしてLZCNT
これらの命令は SIMD 命令ではないため、SSE レジスタではなく整数レジスタで動作しますが、同時に登場し、AMD によって SSE4a 命令セットで導入されたにもかかわらず、サポートを示す専用の CPUID ビットを持つ個別の拡張機能としてカウントされます。Intel はNehalemPOPCNTマイクロアーキテクチャから実装し、Haswellマイクロアーキテクチャから実装します。AMD はBarcelona マイクロアーキテクチャから両方を実装します。
LZCNT
AMD はこの命令ペアをAdvanced Bit Manipulation (ABM)と呼んでいます。
のエンコードは、 (ビット スキャン リバース) 命令LZCNTのエンコードと同じエンコード パスを取りますBSR。このため、LZCNTHaswell より前の Intel CPU など、これをサポートしていない一部の CPU で呼び出されると、無効な命令BSR例外を発生させる代わりに、操作が誤って実行されるという問題が発生します。これは、との結果値が異なるために発生します。
LZCNTBSR
BSF末尾のゼロは、 (ビット スキャン フォワード) 命令または命令を使用してカウントできますTZCNT。
Windows 11 24H2ではCPUがをサポートしている必要がありPOPCNT、そうでない場合はWindowsカーネルを起動できません。[15]
SSE4a
SSE4a命令グループはAMDのバルセロナマイクロアーキテクチャで導入されました。これらの命令はIntelプロセッサでは利用できません。サポートはCPUID.80000001H:ECX.SSE4A[ビット6]フラグで示されます。[17]
サポートするCPU
X86-64 v2 CPU:
- インテル
- Silvermontプロセッサ (SSE4.1、SSE4.2 および
POPCNTサポート) - Goldmontプロセッサ (SSE4.1、SSE4.2 および
POPCNTサポート) - Goldmont Plusプロセッサ (SSE4.1、SSE4.2 および
POPCNTサポート) - Tremontプロセッサ (SSE4.1、SSE4.2 および
POPCNTサポート) - Penrynプロセッサ ( Pentium Dual-CoreおよびCeleronを除く SSE4.1 をサポート)
- NehalemプロセッサおよびWestmereプロセッサ (SSE4.1、SSE4.2 を
POPCNTサポート、ただしPentiumおよびCeleronを除く) - Sandy Bridgeプロセッサ以降 (SSE4.1、SSE4.2 を
POPCNTサポート、PentiumおよびCeleronを含む) - Haswellプロセッサ以降 (SSE4.1、SSE4.2
POPCNTをLZCNTサポート)
- Silvermontプロセッサ (SSE4.1、SSE4.2 および
- アム
- K10 ベースのプロセッサ (SSE4a
POPCNTおよびLZCNTサポート) - 「Cat」低電力プロセッサ
- Bobcat ベースのプロセッサ (SSE4a
POPCNTおよびLZCNTサポート) - Jaguar ベースのプロセッサ以降 (SSE4a、SSE4.1、SSE4.2
POPCNTおよびLZCNTサポート) - Puma ベースのプロセッサおよびそれ以降 (SSE4a、SSE4.1、SSE4.2
POPCNTおよびLZCNTサポート)
- Bobcat ベースのプロセッサ (SSE4a
- 「重機」プロセッサ (SSE4a、SSE4.1、SSE4.2
POPCNTおよびLZCNTサポート)- ブルドーザーベースのプロセッサ
- パイルドライバーベースのプロセッサ[20]
- スチームローラーベースのプロセッサ
- 掘削機ベースのプロセッサおよびそれ以降
- Zenベースのプロセッサ(SSE4a、SSE4.1、SSE4.2、
POPCNTおよびLZCNTサポート) - Zen+ベースのプロセッサ(SSE4a、SSE4.1、SSE4.2、
POPCNTおよびLZCNTサポート) - Zen2ベースのプロセッサ(SSE4a、SSE4.1、SSE4.2
POPCNTをLZCNTサポート) - Zen3ベースのプロセッサ(SSE4a、SSE4.1、SSE4.2
POPCNTをLZCNTサポート) - Zen4ベースのプロセッサ(SSE4a、SSE4.1、SSE4.2
POPCNTをLZCNTサポート) - Zen5ベースのプロセッサ(SSE4a、SSE4.1、SSE4.2
POPCNTをLZCNTサポート)
- K10 ベースのプロセッサ (SSE4a
- 経由
- 肇新
- ZX-C プロセッサ以降 (SSE4.1、SSE4.2 をサポート)
参考文献
- ^ abc Intel Streaming SIMD Extensions 4 (SSE4) Instruction Set Innovation、 Wayback Machineで 2009 年 5 月 30 日にアーカイブ、Intel。
- ^ 45nm 次世代 Intel Core マイクロアーキテクチャ向け Intel SSE4 のチューニング Archived March 8, 2021, at the Wayback Machine , Intel.
- ^ 「Intel SSE4 プログラミング・リファレンス」(PDF)。2020年2月15日時点のオリジナルよりアーカイブ(PDF) 。 2014年12月26日閲覧。
- ^ 「"Barcelona" プロセッサ機能: SSE 不整列アクセス」。AMD。2016 年 8 月 9 日時点のオリジナルよりアーカイブ。2015 年3 月 3 日閲覧。
- ^ 「Intel Nehalem マイクロアーキテクチャの内部」。2015 年 4 月 2 日時点のオリジナルよりアーカイブ。2015 年3 月 3 日閲覧。
- ^ 「コンロー」での私の経験 アーカイブ済み 2013年10月15日、Wayback Machine、DailyTech
- ^ 世界で最も人気のあるプロセッサアーキテクチャの拡張、2011年11月24日アーカイブ、Wayback Machine、Intel
- ^ 「Intel - データセンターソリューション、IoT、PCイノベーション」。Intel 。 2013年2月7日時点のオリジナルよりアーカイブ。2009年9月17日閲覧。
- ^ Intel Streaming SIMD Extensions 4 (Intel SSE4) を使用したモーション推定、 Wayback Machineで 2018 年 6 月 16 日にアーカイブ、Intel。
- ^ 「Intel® Streaming SIMD Extensions 4 (Intel® SSE4) によるスキーマ検証」。2018年6月17日時点のオリジナルよりアーカイブ。2012年2月6日閲覧。
- ^ 「Intel® Streaming SIMD Extensions 4 (Intel® SSE4) を搭載した XML 解析アクセラレーター」。2018 年 6 月 17 日時点のオリジナルよりアーカイブ。2012 年2 月 6 日閲覧。
- ^ Klotz, Aaron (2024年4月24日). 「Microsoft、一部のPCでWindows 11 24H2をブロック — CPUがSSE4.2をサポートしていないとOSが起動しない」. Tom's Hardware . 2024年4月29日閲覧。
- ^ Intel SSE4 プログラミング・リファレンス Archived February 15, 2020, at the Wayback Machine p. 61。CRC32C多項式に関する議論については、 RFC 3385 Archived June 19, 2008, at the Wayback Machineも参照してください。
- ^ Nehalem CRC32 命令を使用した高速並列 CRC 計算 — Dr. Dobbs、2011 年 4 月 12 日
- ^ Sen, Sayan (2024年3月17日). 「MicrosoftはPopCntブロックの誤動作を修正したが、Windows 11 24H2の要件は今後も残る可能性がある」. Neowin . 2024年3月17日閲覧。
- ^ Intel® 64 および IA-32 アーキテクチャー・ソフトウェア開発マニュアル、第 2B 巻: 命令セット・リファレンス、N ~ Z、2011 年 3 月 8 日にWayback Machineにアーカイブ。
- ^ ab 「AMD CPUID仕様」(PDF) 。 2013年11月1日時点のオリジナルよりアーカイブ(PDF) 。2013年10月30日閲覧。
- ^ Rahul Chaturvedi (2007 年 9 月 17 日)。「"Barcelona" プロセッサ機能: SSE4a 命令セット」。2013 年 10 月 25 日時点のオリジナルよりアーカイブ。
- ^ Rahul Chaturvedi (2007 年 10 月 2 日)。「"Barcelona" プロセッサ機能: SSE4a、パート 2」。2013 年 10 月 25 日時点のオリジナルよりアーカイブ。
- ^ “AMD FXシリーズ FX-6300 - FD6300WMW6KHK / FD6300WMHKBOX”. 2017年8月17日時点のオリジナルよりアーカイブ。2015年10月9日閲覧。
外部リンク
- Intel による SSE4 プログラミング リファレンス
- SSE 4.2 文字列命令用の PCMPSTR 計算機は、2022 年 5 月 10 日に Ghostarchive.org にアーカイブされています。
