EMZETT.
Войти

x86-64 и ARM64

Коротко: x86-64 (также AMD64) и ARM64 (AArch64) — две важнейшие архитектуры набора команд для 64-битных процессоров. x86-64 стоит в большинстве ПК и серверов, ARM64 — в смартфонах, компьютерах Apple Mac и всё чаще в серверах и ноутбуках.

Подробнее: Набор команд (ISA) определяет, какие машинные команды понимает процессор. Программы компилируются под него и потому работают только на подходящей архитектуре, если их не транслируют или не эмулируют.

Подробности

x86-64 (AMD64)ARM64 (AArch64)
СемействоCISC (сложные команды переменной длины)RISC (простые команды фиксированной длины 32 бита)
ПроизводителиIntel, AMDApple, Qualcomm, Samsung, Ampere, Amazon (Graviton)
ЛицензированиеIntel/AMD с перекрёстным лицензированием, закрытоARM Holdings лицензирует дизайн многим
Типичное применениеНастольные ПК, ноутбуки, серверы, игрыСмартфоны, планшеты, Mac на Apple silicon, встраиваемые, облако, Raspberry Pi
Сильная сторонаНаивысшая пиковая производительность, огромная программная базаВысокая эффективность (производительность на ватт), мало отходящего тепла
Гибридные ядраЯдра Intel P/Ebig.LITTLE / Apple P/E
Регистры16 общего назначения31 общего назначения
Программная совместимостьWindows, Linux, macOS (Intel), почти все программы для ПКAndroid, iOS, macOS (Apple silicon), Linux, Windows на ARM

Важные следствия:

  • Совместимость: программа для x86 не запускается напрямую на ARM. Этим занимаются трансляторы (Rosetta 2 на Mac, Prism в Windows на ARM).
  • Энергия: у ядер ARM проще декодирование команд, поэтому они экономнее. Это объясняет время работы смартфонов и MacBook от аккумулятора.
  • Современные процессоры x86 внутри разбивают свои CISC-команды на RISC-подобные микрооперации; различие менее резкое, чем раньше.
  • История: AMD разработала x86-64 (2003) как расширение 32-битного x86, отсюда «AMD64». Intel её приняла. ARM возникла в 1985 году, 64-битная версия (ARMv8) — в 2011.
  • 32-битная ARM (ARMv7) в новых устройствах почти не нужна.
  • RISC-V: третий, открытый набор команд растущего значения.
  • Программирование: при компиляции указывайте целевую архитектуру (--target aarch64). Образы Docker существуют для linux/amd64 и linux/arm64.

См. также: 16, 32 и 64 бита, Процессор (CPU), Машинный код