1. ホーム
  2. x86-64

[解決済み] 64bitのintelアーキテクチャは全てSSSE3/SSE4.1/SSE4.2命令をサポートしているのでしょうか?

2022-03-09 15:09:45

質問

ウェブで検索したら インテルソフトウェアマニュアル . しかし、すべてのIntel 64アーキテクチャは、最大SSSE3または最大SSE4.1または最大SSE4.2またはAVXなどをサポートしているかどうかを確認することはできません。私のプログラムでは、最小限のSIMDサポート命令を使用できるようになります。よろしくお願いします。

解決方法を教えてください。

x64ネイティブ(AMD64またはIntel64)プロセッサは、SSEおよびSSE2のサポートのみが義務付けられています。

SSE3 は Intel Pentium 4 プロセッサ("Prescott")、AMD Athlon 64("revision E")、AMD Phenom、およびそれ以降のプロセッサでサポートされています。つまり、すべての x64 対応 CPU が SSE3 をサポートしているわけではありませんが、ほとんどの CPU が SSE3 をサポートしているはずです。

Supplemental SSE3 (SSSE3) は Intel Core 2 Duo, Intel Core i7/i5/i3, Intel Atom, AMD Bulldozer, AMD Bobcat, およびそれ以降のプロセッサーでサポートされています。

SSE4.1 は、Intel Core 2 ("Penryn")、Intel Core i7 ("Nehalem")、 Intel Atom (Silvermont core)、AMD Bulldozer、AMD Jaguar、それ以降のプロセッサーでサポートされています。

SSE 4.1 および SSE4.2 は、Intel Core i7 ("Nehalem"), Intel Atom (Silvermont core), AMD Bulldozer, AMD Jaguar, およびそれ以降のプロセッサーでサポートされています。

AVXは、Intel "Sandy Bridge", AMD Bulldozer, AMD Jaguar, およびそれ以降のプロセッサーでサポートされています。

参照 このブログシリーズ .

x64 ネイティブをサポートしているが SSE3 をサポートしていない CPU は、CMPXCHG16b、PrefetchW、および LAHF/SAHF の要件により Windows 8.1 x64 ネイティブでサポートされていない「第一世代」の 64 ビットとなるため、実際には新しいマシンでは SSE3 がサポートされている可能性が高くなります。SSSE3以降は、まさに誰をターゲットにしているかによって、制約が多くなります。例えば バルブハードウェアアンケート は SSE4.1 を 77%、SSE4.2 を 72% としています(AMD または Intel の SSE4.1 を搭載するものは、SSE3 および SSSE3 も搭載することになります)。

UPDATEしています。 下のコメントで、Valveの調査によるPCゲーマーのSSE3支持率は100%になりました。SSSE3、SSE4.1、および SSE4.2 はすべて 97 ~ 98% の範囲にあります。AVXは約92%で、ソニーやマイクロソフトの現世代ゲーム機はAVXまでサポートしています。AVXの主な価値は、SSE4.1やSSE4.2のように /arch:AVX スイッチで すべて SSEコード生成で、レジスタスケジューリングを効率化する3オペランドVEXプリフィックスを使用します。参照 このブログの記事 .

AVX2 は 75% に近づいています。これは非常に良いことですが、それでもゲームにとっては、フォールバックパスなしに依存することはブロックされる可能性があります。AVX2 は Intel Haswell、AMD Excavator、およびそれ以降のプロセッサーでサポートされています。参照 このブログの記事 .

Windows on ARM : ARM64 の Windows 用 x86 エミュレーションは SSE4.1 までしかサポートしておらず、Windows 11 の x64 エミュレーションは SSE4.2 までしかサポートしていないことに注意してください。AVX/AVX2 は、これらのプラットフォームではサポートされていません。