x86-64 and ARM64
In short: x86-64 (also AMD64) and ARM64 (AArch64) are the two most important instruction set architectures for 64-bit processors. x86-64 sits in most PCs and servers, ARM64 in smartphones, Apple Macs and increasingly in servers and notebooks.
In more detail: An instruction set (ISA) defines which machine instructions a processor understands. Programs are compiled for it and therefore run only on the matching architecture unless they are translated or emulated.
In Depth
| x86-64 (AMD64) | ARM64 (AArch64) | |
|---|---|---|
| Family | CISC (complex, variable-length instructions) | RISC (simple, fixed 32-bit instruction length) |
| Manufacturers | Intel, AMD | Apple, Qualcomm, Samsung, Ampere, Amazon (Graviton) |
| Licensing | Intel/AMD cross-licensed, closed | ARM Holdings licenses the design to many |
| Typical uses | Desktop PCs, notebooks, servers, games | Smartphones, tablets, Apple silicon Macs, embedded, cloud, Raspberry Pi |
| Strength | Highest peak performance, huge software base | High efficiency (performance per watt), little waste heat |
| Hybrid cores | Intel P/E cores | big.LITTLE / Apple P/E |
| Registers | 16 general-purpose | 31 general-purpose |
| Software compatibility | Windows, Linux, macOS (Intel), nearly all PC programs | Android, iOS, macOS (Apple silicon), Linux, Windows on ARM |
Important consequences:
- Compatibility: An x86 program does not run directly on ARM. Translators handle it (Rosetta 2 on the Mac, Prism in Windows on ARM).
- Energy: ARM cores have simpler instruction decoding and are therefore more frugal. This explains the battery life of smartphones and MacBooks.
- Modern x86 processors split their CISC instructions internally into RISC-like micro-operations; the difference is less sharp than before.
- History: AMD designed x86-64 (2003) as an extension of 32-bit x86, hence “AMD64”. Intel adopted it. ARM originated in 1985, the 64-bit version (ARMv8) in 2011.
- 32-bit ARM (ARMv7) is hardly needed by new devices anymore.
- RISC-V: Third, open instruction set of growing importance.
- Programming: Specify the target architecture when compiling (
--target aarch64). Docker images exist forlinux/amd64andlinux/arm64.
See also: 16, 32 and 64 bit, CPU, Machine code