x86-64 マイクロアーキテクチャーレベル、CPU、その確認方法
x86-64.net は x86-64 アーキテクチャーの独立したリファレンスです。まず x86-64 マイクロアーキテクチャーレベルを扱います。x86-64-v2、v3、v4 が何を必要とするか、どのプロセッサーがそれを満たすか、マシンをどう確認するかを説明します。
| レベル | 追加される機能 | 最初の Intel | 最初の AMD |
|---|---|---|---|
| x86-64-v1 | CMOV、CX8、FPU、FXSR、MMX、OSFXSR、SCE、SSE、SSE2 | NetBurst (Prescott, Nocona) (2004 年) | K8 (Hammer) (2003 年) |
| x86-64-v2 | CMPXCHG16B、LAHF-SAHF、POPCNT、SSE3、SSE4.1、SSE4.2、SSSE3 | Nehalem (2008 年) | Bulldozer (2011 年) |
| x86-64-v3 | AVX、AVX2、BMI1、BMI2、F16C、FMA、LZCNT、MOVBE、OSXSAVE | Haswell (2013 年) | Excavator (2015 年) |
| x86-64-v4 | AVX512F、AVX512BW、AVX512CD、AVX512DQ、AVX512VL | Skylake-SP (2017 年) | Zen 4 (2022 年) |
命令リファレンス
汎用の基本命令から最新の拡張まで、x86 命令のすべての形式を、エンコーディング、CPUID ビット、対応するプロセッサーとともに掲載しています。Intel XED から生成しています。
ABI と呼び出し規約
どのレジスターが引数を渡すか、long の大きさはいくつか、どのプラットフォームが ABI を共有するかを、実際のコンパイラーが出力したコードを根拠に示します。
呼び出し規約
- System V x86-64Linux、BSD 系、macOS の呼び出し規約: レジスター、構造体、スタック、可変長引数
- Microsoft x64Windows と UEFI の呼び出し規約: 4 つのレジスタースロット、シャドウスペース、参照渡しの構造体
- System V i386Linux と BSD 系の 32 ビットの呼び出し規約: 引数はすべてスタック渡し、結果は EAX、EDX または ST0
- Windows x86cdecl、stdcall、fastcall、thiscall、vectorcall: レジスター、スタックの後始末、名前の装飾
- 呼び出し規約の比較4 つの ABI の引数レジスター、戻り値レジスター、呼び出し先保存レジスターの比較
- ベクトル拡張と ABI__m256 と __m512 の引数、VZEROUPPER、AVX-512 のマスク、APX の新しいレジスター、AMX のタイル
スタック、スレッド、システムコール、C++
- スタックフレームフレームポインター、呼び出し時のアラインメント、レッドゾーン、シャドウスペース、スタックプローブ
- アンワインドと例外.eh_frame のコールフレーム情報、Windows x64 のアンワインドコード、SEH チェーン、シャドウスタック
- スレッドローカルストレージFS と GS、Windows の TEB、ELF の TLS モデルと TLS ディスクリプター
- システムコールLinux、x32、FreeBSD、macOS の SYSCALL と INT 0x80、そして Windows に安定した番号がない理由
- Linux のシステムコール表x86-64、x32、i386 のすべてのシステムコール: 番号、エントリポイント、引数レジスター
- C++ の ABIItanium と Microsoft: this、名前修飾、仮想関数テーブル、メンバー関数ポインター、例外
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 で止まる場合: これらのエラーメッセージの意味と対処法