X86-64 microarchitecture levels
X86-64
X86-64 (x86-64) (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit extension of the Intel's x86 instruction set architecture first announced in 1999. The original specification, created by AMD and released in 2000, has been implemented by AMD, Intel, and VIA. The first AMD64-based processor, AMD Opteron, was released in April 2003. Intel 64 is Intel's implementation of x86-64, used and implemented in various processors made by Intel.
OpenSUSE and SUSE use it as one of supported architecture: "Intel or AMD 64-bit desktops, laptops, and servers (x86_64)".
X86-64 microarchitecture levels
In 2020, through a collaboration between AMD, Intel, Red Hat, and SUSE, three microarchitecture levels (or feature levels) on top of the x86-64 baseline were defined: x86-64-v2, x86-64-v3, and x86-64-v4. These levels define specific features that can be targeted by programmers to provide code optimizations.
All levels include features found in the previous levels. Instruction set extensions not concerned with general-purpose computation, including AES-NI and RDRAND, are excluded from the level requirements.
X86-64 a.k.a. x86-64-v1
X86-64 also known as x86-64-v1 is the baseline for all x86-64 CPUs. It matches the common capabilities between the 2003 AMD AMD64 and the 2004 Intel EM64T initial implementations in the AMD K8 and the Intel Prescott processor families.
CPU features: CMOV, CMPXCHG8B (CX8), FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2.
X86-64-v2
OpenSUSE developers decided to use x86-64-v2 microarchitecture level for Leap 16.0 instead of x86-64-v3, which is used for SUSE SLE 16, as a compromise between SUSE being going forward and openSUSE users still needing support for older hardware.
X86-64-v2 adds these CPU features: CMPXCHG16B (CX16), LAHF-SAHF, POPCNT, SSE3, SSSE3, SSE4_1, SSE4_2.
Features match the 2008 Intel Nehalem architecture, excluding Intel-specific instructions.
Supported with:
- Intel Core CPUs - since Intel Nehalem and newer Intel "big" cores (2008 year)
- Intel Pentium and Celeron CPUs - since Sandy Bridge architecture (2011 year)
- Intel Atom CPUs - since Silvermont architecture and newer Intel "small" cores (2013 year)
- AMD "big" cores - since Bulldozer microarchitecture (AM3+ socket) (2011 year)
- AMD "small" cores - since Jaguar microarchitecture for low-powered CPUs (2013 year)
- VIA CPUs - since "Nano C" and "Eden C" microarchitectures (2015 year)
- Zhaoxin CPUs - since Zhangjiang microarchitecture (2015 year)
For more details you can read this text.
Note that for LGA 1156 socket you can get x86-64-v2 support by changing CPU from Pentium or Celeron families to Core or Xeon ones.
Checking your CPU for compatibility with x86-64-v2
Leap 16.0 requires support for x86-64-v2 microarchitecture level. Before installing it check your CPU for compatibility.
The easiest way to understand whether your CPU supports x86-64-v2 is in checking for presence of SSE4.2 (SSE 4.2) instruction set. You can do this by different ways:
1. In Info centre (center) search for CPU flag "sse4_2"
2. Use inxi utility with command 'inxi -Cx', read string "Flags:" at the bottom:
inxi -Cx
or
inxi -Cx | grep sse4_2
3. Use lscpu command:
lscpu | grep sse4_2
4. Use previous lscpu command with better formatting:
lscpu | grep sse4_2 || echo "Your CPU is not compatible with Leap 16.0"
Other ways:
5. Using "ld.so --help":
On any x86_64 Linux distribution (with glibc 2.33 and newer), all x86_64 feature levels supported by a CPU can be verified using command "ld.so --help": at command prompt run
ld.so --help
or
/lib64/ld-linux-x86-64.so.2 --help
The result will be visible at the end of command's output:
Subdirectories of glibc-hwcaps directories, in priority order: x86-64-v4 x86-64-v3 (supported, searched) x86-64-v2 (supported, searched)
Here x86-64-v4 feature level is not supported by CPU, but x86-64-v3 and x86-64-v2 are, which means this CPU does not support AVX512 required at v4 level.
6. Finding "level" in inxi output:
inxi -aCz | grep level
This will show you CPU microarchitecture level. For instance, for AMD Ryzen:
:~> inxi -aCz | grep level arch: Zen/Zen+ note: check gen: 1 level: v3 note: check built: 2019
You can read here related discussion.
See also
Related articles and discussions
1. openSUSE:X86-64-Architecture-Levels
2. Forum discussion about Leap 16.0 and x86-64-v2
3. Bug 1236606 - Please add x86-64-v2 for CPU requirements for Leap 16.0
External links
1. Wikipedia - Microarchitecture levels
2. List of Intel Core processors
3. List of Intel Pentium processors
4. List of Intel Celeron processors
5. List of Intel Atom processors
6. List of Intel Xeon processors
7. List of AMD Athlon processors
8. List of AMD Phenom processors
9. List of AMD FX processors - Bulldozer and Piledriver
10. List of AMD processors with 3D graphics
11. List of AMD Ryzen processors