ISA nomenclature reference
Nomenclature for the major computer instruction set architectures (ISAs) can be confusing. Hopefully this clears a few things up!
x86 family (a.k.a. 80x86 family, 8086 family)
The following are synonyms, unambiguously referring to the 32-bit ISA:
- IA-32 (typically used by Intel)
- x86-32,
x86_32
The following are (almost) synonyms referring to the 64-bit ISA:
- x86-64,
x86_64
- x64 (typically seen on Windows)
- Intel 64, Intel® 64 (typically used by Intel)
- May specifically refer to the ISA as implemented by Intel processors; see notes below
- AMD64, amd64 (typically seen on Linux)
- In certain contexts, may specifically refer to the ISA as implemented by AMD processors; see notes below
- EM64T (archaic)
Other common terms:
- x86
- This is commonly used to refer to the family of ISAs as a whole; this is how I have been using it on this page. It is sometimes used to mean the 32-bit ISA specifically, particularly when contrasted with x86-64 or x64.
- i386, 80386
- These terms both refer to a specific Intel microprocessor: the first
device in the x86 family to be 32-bit. “i386 architecture” therefore
alludes to the 32-bit ISA when used correctly. However, it is
occasionally used to refer to the family of ISAs as a whole (e.g. in
the GNU
as
manual chapter heading).
- These terms both refer to a specific Intel microprocessor: the first
device in the x86 family to be 32-bit. “i386 architecture” therefore
alludes to the 32-bit ISA when used correctly. However, it is
occasionally used to refer to the family of ISAs as a whole (e.g. in
the GNU
Additional notes:
- There are actually subtle differences between x86-64 as implemented in AMD devices (AMD64) and as implemented in Intel devices (Intel 64); these differences are typically avoided in application binaries for compatibility.
- IA-64 refers to Itanium, a totally different ISA to x86.
- IA-32e refers to the fourth mode that Intel 64 introduces, which has both compatibility and 64-bit sub-modes. The IA-32e compatibility sub-mode executes 32-bit IA-32 instructions on a 64-bit processor, and the IA-32e 64-bit sub-mode executes full 64-bit instructions.
Extensions (non-exhaustive):
- MMX
- SSE, SSE2, SSE3, SSE4
- 3DNow! (AMD, deprecated)
- AVX, AVX2, AVX-512
- SVML
ARM family
The following are synonyms, unambiguously referring to the 32-bit ISA:
- ARM32
- AArch32
- A32 (formally refers to the instruction set as opposed to the architecture)
The following are synonyms, unambiguously referring to the 64-bit ISA:
- ARM64
- AArch64
- A64 (formally refers to the instruction set as opposed to the architecture)
Additional notes:
- “ARM” typically refers to the family as a whole.
- ARM version 7 (and sub-versions, e.g. ARMv7E-M) necessarily refer to the 32-bit architecture, as the 64-bit extensions were only introduced with ARMv8.
- Any ARM version 8 or above with the suffix -M refers to the 32-bit ISA.
- Any ARM version 8 or above with the suffix -A refers to the 64-bit ISA.
- For hardware: ARM Cortex-M processors are all 32-bit. Confusingly, Cortex-A processors range from 32-bit to 64-bit to both.
- AArch64 processors may be able to execute 32-bit ARM instructions in the AArch32 “execution state” (mode). Unlike x86, however, this backwards-compatibility is not compulsory; some processors (e.g. the Cortex-A34) support AArch64 only.
Extensions (non-exhaustive):
- Thumb, Thumb-2
- Jazelle
- SVE, SVE2
- Advanced SIMD (Neon)