EMZETT.
Login

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)
FamilyCISC (complex, variable-length instructions)RISC (simple, fixed 32-bit instruction length)
ManufacturersIntel, AMDApple, Qualcomm, Samsung, Ampere, Amazon (Graviton)
LicensingIntel/AMD cross-licensed, closedARM Holdings licenses the design to many
Typical usesDesktop PCs, notebooks, servers, gamesSmartphones, tablets, Apple silicon Macs, embedded, cloud, Raspberry Pi
StrengthHighest peak performance, huge software baseHigh efficiency (performance per watt), little waste heat
Hybrid coresIntel P/E coresbig.LITTLE / Apple P/E
Registers16 general-purpose31 general-purpose
Software compatibilityWindows, Linux, macOS (Intel), nearly all PC programsAndroid, 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 for linux/amd64 and linux/arm64.

See also: 16, 32 and 64 bit, CPU, Machine code