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), Машинний код