x86-64 и ARM64
Коротко: x86-64 (также AMD64) и ARM64 (AArch64) — две важнейшие архитектуры набора команд для 64-битных процессоров. x86-64 стоит в большинстве ПК и серверов, ARM64 — в смартфонах, компьютерах Apple Mac и всё чаще в серверах и ноутбуках.
Подробнее: Набор команд (ISA) определяет, какие машинные команды понимает процессор. Программы компилируются под него и потому работают только на подходящей архитектуре, если их не транслируют или не эмулируют.
Подробности
| x86-64 (AMD64) | ARM64 (AArch64) | |
|---|---|---|
| Семейство | CISC (сложные команды переменной длины) | RISC (простые команды фиксированной длины 32 бита) |
| Производители | Intel, AMD | Apple, Qualcomm, Samsung, Ampere, Amazon (Graviton) |
| Лицензирование | Intel/AMD с перекрёстным лицензированием, закрыто | ARM Holdings лицензирует дизайн многим |
| Типичное применение | Настольные ПК, ноутбуки, серверы, игры | Смартфоны, планшеты, Mac на Apple silicon, встраиваемые, облако, Raspberry Pi |
| Сильная сторона | Наивысшая пиковая производительность, огромная программная база | Высокая эффективность (производительность на ватт), мало отходящего тепла |
| Гибридные ядра | Ядра Intel P/E | big.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), Машинный код