Процессоры x86 и ARM — в чём разница?

Процессоры x86 и ARM — в чём разница?

Правда ли, что процессор в вашем мобильнике мощнее, чем в вашем компьютере?

Раньше было так: есть мощные процессоры для настольных компьютеров, ноутбуков и серверов, а есть слабые процессоры для мобильных устройств — телефонов и планшетов.

Теперь ситуация меняется: мобильные процессоры постепенно обгоняют настольные, а настольные начинают заимствовать технологии из мобильных. 

Мы уже писали о технологическом прорыве процессоров Apple M1. Пора раскрыть эту тему глубже. 

RISC — простые команды, много кода

На заре процессоров у программистов не было языков высокого уровня, например JavaScript или Python. Все команды писались машинным кодом или на ассемблерах. Программист в то время работал с процессором напрямую, и каждая команда в коде обозначала какую-то инструкцию для процессора.

Например, типичная программа того времени по умножению одного числа на другое могла выглядеть для процессора так:

  1. Выдели память под первое число.
  2. Запиши в это место первое число.
  3. Выдели память под второе число.
  4. Запиши в память второе число.
  5. Поставь единицу в такой-то служебный регистр.
  6. Выполни команду битового сдвига для первого числа.
  7. (много других команд)
  8. Верни служебный регистр в состояние «0».
  9. Выдели память под результат 
  10. Результат умножения положи на это место.

В итоге получалась большая программа, которую было довольно сложно прочитать. 

Такую технологию назвали RISC — Reduced-instruction-set Computing, компьютер с ограниченным набором команд. 

Некоторое время спустя технологию RISC усовершенствовали двумя разными способами — так появились архитектуры x86 и ARM. Первые ориентировались на мощные компьютеры, вторые — на небольшие устройства с пониженным энергопотреблением.

x86 — это сложный RISC

С развитием компьютеров программисты захотели писать более сложные программы. Но чем сложнее программа, тем больше кода приходилось писать. 

Тогда компания Intel выпустила процессор 8086, который поддерживал много новых команд. Они упрощали написание кода, частично закрывая разрыв между машинным кодом и высокоуровневым языком программирования. 

Возьмём тот же пример кода для перемножения двух чисел. Для процессора 8086 код выглядел так:

  1. Возьми первое и второе число.
  2. Перемножь их, а результат положи в новый участок памяти.

«Перемножь числа» — это новая сложная команда, доступная в этом процессоре. Когда процессор встречает её в коде, он выполняет много других инструкций, похожих на те, которые мы писали в начале, и получает тот же результат.

Такая технология называется CISC — complex instruction set computer, вычислительная машина со сложным набором команд. 

✅ С одной стороны, программистам теперь проще писать код: вместо тридцати инструкций можно написать три, а результат будет таким же. Чем больше новых сложных команд поддерживает процессор, тем быстрее идёт разработка. 

❌ С другой — процессору теперь нужно тратить некоторое время на перевод сложных команд в простые. Когда он получает от программиста команду «Перемножь эти два числа», то превращает её в те самые тридцать строк кода и выполняет каждую команду.

После процессора 8086 вышли процессоры 80286 и 80386. Они получились настолько удачными для того времени, что с тех пор Intel маркировку всех своих основных процессоров заканчивала на «86», а технология и набор команд получили название «x86». 

ARM — это продвинутый RISC

По другому пути пошла компания ARM, название которой расшифровывается как «Улучшенные RISC-машины». Подход был такой: зачем нужно много сложных команды для процессора, если можно по максимуму использовать простейшие команды и сосредоточиться на эффективности работы?

В итоге ARM усовершенствовали RISC-архитектуру, сделали команды проще и сосредоточились на эффективности. 

В те времена ARM-процессоры работали не так быстро, как процессоры семейства x86, зато они потребляли гораздо меньше энергии. Со временем это позволило использовать ARM-процессоры в мобильных телефонах.

Получается, процессоры отличаются тем, что x86 это CISC, а ARM — это RISC?

Большинство думает именно так, и в каком-то смысле это похоже на правду. Но это не совсем точно. 

Современные x86-процессоры на 80% состоят из RISC-модулей, которые обрабатывают RISC-команды. Каждая сложная CISC-команда специальным декодером разбивается на много простых команд, которые и выполняют эти модули. 

Получается, что в основе любого современного процессора всё равно лежит RISC-архитектура, сверху которой для каждого устройства наслаиваются свои дополнительные команды.

В чём успех ARM

Чтобы сделать процессор с x86-архитектурой, компании нужно самой придумать и нарисовать все транзисторы и соединения между ними. Это сложный и дорогой процесс, который не могут себе позволить маленькие компании. Из крупных производителей x86-процессоров остались только Intel и AMD.

В ARM сделали иначе — они продают лицензии на производство процессоров по своей архитектуре всем желающим. Получается, что любая компания может купить лицензию и делать свои ARM-процессоры. При этом компания может как угодно улучшать свои процессоры — изменять компоновку, добавлять новые модули и так далее.

Именно доступность лицензии и конкуренция привели к быстрому развитию ARM-процессоров, а не RISC-архитектура или наборы команд.

Сейчас на ARM свои процессоры выпускают Samsung, Nvidia, Qualcomm, Atmel, Huawei и многие другие. Если вы производитель смартфонов, вы можете разработать свой собственный процессор на ARM, а можете купить готовый у любой другой компании. Это создаёт конкуренцию на рынке, гонку технологий и всеобщий прогресс. 

Главное — внутреннее устройство процессора

Современные процессоры состоят из множества отдельных модулей, каждый из которых делает что-то своё, например:

  • обрабатывает изображения,
  • отвечает за работу нейросетей,
  • регулирует энергопотребление,
  • выполняет базовые команды,
  • организует работу с памятью,
  • следит за безопасностью,
  • отвечает за подключение и работу внешних устройств.

От того, как производитель реализует компоновку и соединение модулей, зависит быстродействие процессора и его применимость в разных областях. А из-за того, что ARM-архитектура основана на простых командах, в ней проще соединять такие модули между собой. Получается, что сила ARM — в простоте и гибкости.

Текст:

Михаил Полянин

Редактура:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Мария Дронова

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства и компенсация, если вы пойдёте работать в «Яндекс».
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Отлить в бетоне!
Отлить в бетоне!

Сага о генераторах статических сайтов.

Сжатие без потерь: как это работает
Сжатие без потерь: как это работает

Когда копия не отличается от оригинала.

Как устроен интернет: адреса

Вторая часть рассказа об устройстве интернета. Читайте, пока не заблокировали!

За что не любят программистов

Вредные привычки и издержки профессии, которые мешают окружающим восхищаться работой программиста.

Как парень из Томска руководит бэкенд-разработкой в Практикуме
Как парень из Томска руководит бэкенд-разработкой в Практикуме

О CTF-турнирах и пути в Яндекс.

Если у вас ребёнок: об информатике
Тысячи пользователей онлайн: как работать, когда у тебя высоконагруженный проект
Тысячи пользователей онлайн: как работать, когда у тебя высоконагруженный проект

Скорость решает.

Устанавливаем Вордпресс в Docker
Устанавливаем Вордпресс в Docker

Это быстрее и проще, чем кажется.

Объясни мне: зачем нужен хостинг

Все говорят про какой-то хостинг. Что это вообще такое?

NFT — новые модные токены. Зачем они нужны и не развод ли это?
NFT — новые модные токены. Зачем они нужны и не развод ли это?

Объясняем на Аллегровой.

Разбор: непобедимый алгоритм для игры «4 в ряд»
Разбор: непобедимый алгоритм для игры «4 в ряд»

Разбор видео Code Bullet про трюки в оптимизации алгоритмов

Как устроена и кому нужна стажировка в Яндексе
Как устроена и кому нужна стажировка в Яндексе

Как туда попасть и что там делают.

Что такое Angular
Что такое Angular

И зачем он фронтенд-разработчику.

easy