x86-64 マイクロアーキテクチャーレベル、CPU、その確認方法

x86-64.net は x86-64 アーキテクチャーの独立したリファレンスです。まず x86-64 マイクロアーキテクチャーレベルを扱います。x86-64-v2、v3、v4 が何を必要とするか、どのプロセッサーがそれを満たすか、マシンをどう確認するかを説明します。

x86-64 マイクロアーキテクチャーレベル。各レベルは、その上の行のレベルのすべての機能も必要とします。
レベル追加される機能最初の Intel最初の AMD
x86-64-v1CMOV、CX8、FPU、FXSR、MMX、OSFXSR、SCE、SSE、SSE2NetBurst (Prescott, Nocona) (2004 年)K8 (Hammer) (2003 年)
x86-64-v2CMPXCHG16B、LAHF-SAHF、POPCNT、SSE3、SSE4.1、SSE4.2、SSSE3Nehalem (2008 年)Bulldozer (2011 年)
x86-64-v3AVX、AVX2、BMI1、BMI2、F16C、FMA、LZCNT、MOVBE、OSXSAVEHaswell (2013 年)Excavator (2015 年)
x86-64-v4AVX512F、AVX512BW、AVX512CD、AVX512DQ、AVX512VLSkylake-SP (2017 年)Zen 4 (2022 年)

命令リファレンス

汎用の基本命令から最新の拡張まで、x86 命令のすべての形式を、エンコーディング、CPUID ビット、対応するプロセッサーとともに掲載しています。Intel XED から生成しています。

ABI と呼び出し規約

どのレジスターが引数を渡すか、long の大きさはいくつか、どのプラットフォームが ABI を共有するかを、実際のコンパイラーが出力したコードを根拠に示します。

呼び出し規約

スタック、スレッド、システムコール、C++

Linux マシンの確認

glibc 2.33 以降では、動的ローダーで確認できます。supported と表示される最も高いレベルが、そのマシンのレベルです。

$ /lib64/ld-linux-x86-64.so.2 --help | grep supported
  x86-64-v3 (supported, searched)
  x86-64-v2 (supported, searched)

Windows、macOS、C からの確認を含む、その他の確認方法

プログラムが Fatal glibc error: CPU does not support x86-64-v2 や Illegal instruction で止まる場合: これらのエラーメッセージの意味と対処法