ARM против x86: В чем разница между двумя архитектурами процессоров?
Вы наверняка знаете, что мир процессоров разбит на два лагеря. Если вы смотрите это видео со смартфона, то для вас работает процессор на архитектуре ARM, а если с ноутбука, для вас трудится чип на архитектуре x86.
А теперь еще и Apple объявила, что переводит свои Mac на собственные процессоры Apple Silicon на архитектуре ARM. Мы уже рассказывали, почему так происходит. А сегодня давайте подробно разберемся, в чем принципиальные отличия x86 и ARM. И зачем Apple в это все вписалась?
Итак, большинство мобильных устройств, iPhone и Android’ы работают на ARM’е. Qualcomm, HUAWEI Kirin, Samsung Exynos и Apple A13/A14 Bionic — это все ARM-процессоры.
А вот на компьютере не так — там доминирует x86 под крылом Intel и AMD. Именно поэтому на телефоне мы не можем запустить Word с компьютера.
x86 — так называется по последним цифрам семейства классических процессоров Intel 70-80х годов.
Чем же они отличаются?
Есть два ключевых отличия.
Первое — это набор инструкций, то есть язык который понимает процессор
x86 процессоры используют сложный набор инструкций, который называется CISC — Complex Instruction Set Computing.
ARM процессоры наоборот используют упрощенный набор инструкций — RISC — Reduced Instruction Set Computing.
Кстати ARM расшифровывается как Продвинутые RISC машины — Advanced RISC Machines.
Наборы инструкций ещё принято назвать архитектурой или ISA — Instruction Set Architecture.
Второе отличие — это микроархитектура. Что это такое?
От того на каком языке говорят процессоры, зависит и то, как они проектируются. Потому как для выполнения каждой инструкции на процессоре нужно расположить свой логический блок. Соответственно, разные инструкции — разный дизайн процессора. А дизайн — это и есть микроархитектура.
- x86 — CISC
- ARM — RISC
Но как так произошло, что процессоры стали говорить на разных языках?
История CISC
Памятка программиста, 1960-е годы. Цифровой (машинный) код «Минск-22».
Всё началось в 1960-х. Поначалу программисты работали с машинным кодом, то есть реально писали нолики и единички. Это быстро всех достало и появился Assembler. Низкоуровневый язык программирования, который позволял писать простые команды типа сложить, скопировать и прочее. Но программировать на Assembler’е тоже было несладко. Потому как приходилось буквально “за ручку” поэтапно описывать процессору каждое его действие.
Поэтому, если бы вы ужинали с процессором, и попросили передать его вам соль, это выглядело бы так:
- Эй процессор, посмотри в центр стола.
- Видишь соль? Возьми её.
- Теперь посмотри на меня.
- Отдай мне соль. — Ага, спасибо!
- А теперь снова возьми у меня соль.
- Поставь её откуда взял
- Спасибо большое! Продолжай свои дела.
- Кхм… Процессор, видишь перец?
- И так далее.
Этот подход стал настоящим спасением как для разработчиков, так и для бизнеса. Захотел клиент новую инструкцию — не проблема, были бы деньги — мы сделаем. А деньги у клиентов были.
Недостатки CISC
Но был ли такой подход оптимальным. С точки зрения разработчиков — да. Но вот микроархитектура страдала.
Представьте, вы купили квартиру и теперь вам нужно обставить её мебелью. Площади мало, каждый квадратный метр на счету. И вот представьте, если бы CISC-процессор обставил мебелью вам гостиную, он бы с одной стороны позаботился о комфорте каждого потенциального гостя и выделил бы для него своё персональное место.
С другой стороны, он бы не щадил бюджет. Диван для одного человека, пуф для другого, кушетка для третьего, трон из Игры Престолов для вашей Дейенерис. В этом случае площадь комнаты бы очень быстро закончилась. Чтобы разместить всех вам бы пришлось увеличивать бюджет и расширять зал. Это не рационально. Но самое главное, CISC-архитектура существует очень давно и те инструкции, которые были написаны в 60-х годах сейчас уже вообще не актуальны. Поэтому часть мебели, а точнее исполнительных блоков, просто не будут использоваться. Но многие из них там остаются. Поэтому появился RISC…
Преимущества RISC
С одной стороны писать на Assembler’е под RISC процессоры не очень-то удобно. Если в лоб сравнивать код, написанный под CISC и RISC процессоры, очевидно преимущество первого.
Так выглядит код одной и той же операции для x86 и ARM.
x86
- MOV AX, 15; AH = 00, AL = 0Fh
- AAA; AH = 01, AL = 05
- RET
- MOV R3, #10
- AND R2, R0, #0xF
- CMP R2, R3
- IT LT
- BLT elsebranch
- ADD R2. #6
- ADD R1. #1
- elsebranch:
- END
Представьте, что вы проектируете процессор. Расположение блоков на х86 выглядело бы так.
Каждый цветной квадрат — это отдельные команды. Их много и они разные. Как вы поняли, здесь мы уже говорим про микроархитектуру, которая вытекает из набора команд. А вот ARM-процессор скорее выглядит так.
Ему не нужны блоки, созданные для функций, написанных 50 лет назад.
По сути, тут блоки только для самых востребованных команд. Зато таких блоков много. А это значит, что можно одновременно выполнять больше базовых команд. А раритетные не занимают место.
Еще один бонус сокращенного набора RISC: меньше места на чипе занимает блок по декодированию команд. Да, для этого тоже нужно место. Архитектура RISC проще и удобнее, загибайте пальцы:
- проще работа с памятью,
- более богатая регистровая архитектура,
- легче делать 32/64/128 разряды,
- легче оптимизировать,
- меньше энергопотребление,
- проще масштабировать и делать отладку.
Поэтому наши смартфоны, которые работают на ARM процессорах с архитектурой RISC, долго живут, не требуют активного охлаждения и такие быстрые.
Лицензирование
Но это все отличия технические. Есть отличия и организационные. Вы не задумывались почему для смартфонов так много производителей процессоров, а в мире ПК на x86 только AMD и Intel? Все просто — ARM это компания которая занимается лицензированием, а не производством.
Даже Apple приложила руку к развитию ARM. Вместе с Acorn Computers и VLSI Technology. Apple присоединился к альянсу из-за их грядущего устройства — Newton. Устройства, главной функцией которого было распознавание текста.
Даже вы можете начать производить свои процессоры, купив лицензию. А вот производить процессоры на x86 не может никто кроме синей и красной компании. А это значит что? Правильно, меньше конкуренции, медленнее развитие. Как же так произошло?
Ну окей. Допустим ARM прекрасно справляется со смартфонами и планшетами, но как насчет компьютеров и серверов, где вся поляна исторически поделена? И зачем Apple вообще ломанулась туда со своим Apple Silicon.
Что сейчас?
Допустим мы решили, что архитектура ARM более эффективная и универсальная. Что теперь? x86 похоронен?
На самом деле, в Intel и AMD не дураки сидят. И сейчас под капотом современные CISC-процессоры очень похожи на RISC. Постепенно разработчики CISC-процессоров все-таки пришли к этому и начали делать гибридные процессоры, но старый хвост так просто нельзя сбросить.
Но уже достаточно давно процессоры Intel и AMD разбивают входные инструкции на более мелкие микро инструкции (micro-ops), которые в дальнейшем — сейчас вы удивитесь — исполняются RISC ядром.
Да-да, ребята! Те самые 4-8 ядер в вашем ПК — это тоже RISC-ядра!
Надеюсь, тут вы окончательно запутались. Но суть в том, что разница между RISC и CISC-дизайнами уже сейчас минимальна.
А что остается важным — так это микроархитектура. То есть то, насколько эффективно все организовано на самом камне.
Ну вы уже наверное знаете, что Современные iPad практически не уступают 15-дюймовым MacBook Pro с процессорами Core i7 и Core i9.
А что с компьютерами?
Недавно компания Ampere представила свой 80-ядерный ARM процессор. По заявлению производителя в тестах процессор Ampere показывает результат на 4% лучше, чем самый быстрый процессор EPYC от AMD и потребляет на 14% меньше энергии.
Компания Ampere лезет в сегменты Cloud и Workstation, и показывает там отличные цифры. Самый быстрый суперкомпьютер в мире сегодня работает на ARM ISA. С обратной стороны, Intel пытается все таки влезть в сегмент low power и для этого выпускает новый интересный процессор на микроархитектуре lakefield.
Пока у ноутбуков и процессоров от Intel есть одно неоспоримое достоинство — (охлаждение и) единство архитектуры. Пока на рынке ARM-процессоров существуют Qualcomm, Samsung, MediaTek, в мире x86 творится монополия и разработчикам сильно легче делать софт и игры под “взрослые” процессоры.
И Apple та компания, которая способна мотивировать достаточное количество разработчиков пилить под свой ARM. Но суть этого перехода скорее не в противостоянии CISC и RISC. Поскольку оба подхода сближаются, акцент смещается на микроархитектуру, которую делает Apple для своих мобильных устройств. И судя по всему микроархитектура у них крута. И они хотели бы ее использовать в своих компьютерах.
И если бы Intel лицензировал x86 за деньги другим людям, то вероятно Apple просто адаптировали свою текущую микроархитектуру под x86. Но так как они не могут этого сделать, они решили просто перейти на ARM. Проблема для нас с микроархитектурой в том, что она коммерческая тайна. И мы про нее ничего не знаем.
Итоги
Спрос на ARM в итоге вырастет. Для индустрии это не просто важный шаг, а архиважный. Линус Торвальдс говорил, что пока рабочие станции не станут работать на ARM — на рынке серверов будут использовать x86.
И вот это случилось — в перспективе это миллионы долларов, вложенных в серверные решения. Что, конечно, хорошо и для потребителей. Нас ждет светлое будущее и Apple, действительно, совершила революцию!
Редактор материала: Антон Евстратенко. Этот материал помогли подготовить наши зрители Никита Куликов и Григорий Чирков. Спасибо ребята!
Определение понятий «архитектура» и «микроархитектура» процессора.
Микроархитектура процессора (внутренняя реализация программной модели). Различные микроархитектурные реализации направлены на повышение быстродействия (производительности):
применение RISC-ядра для исполнения микрокоманд
конвейеризация выполнения инструкций
распараллеливание выполнения инструкций (суперскалярный процессор – этот тот которые имеет более одного конвейера)
предсказание переходов и на его основе спекулятивное исполнение
Базовая микроархитектура микропроцессора
СчАК (счетчик адреса команды) – содержит адрес следующей команды исполняемой программы.
УА (Управляющий автомат) – дешифрирует текущую команду поступившую через шиноформирователь 3 (BD3) с шины данных и разворачивает ее исполнение в последовательность шагов (микрокоманд).
РгК – регистр команд.
Каждая микрокоманда оперирует максимум 2-я операндами, помещаемых в регист А (РгА) и регистр B (РгВ). АЛУ производит действие формируя результат в регистр результата (РгР) и флаги.
Основные характеристики процессоров. Эволюция процессоров.
Основные характеристики процессора:
1) Быстродействие – количество операций в секунду (MIPS). Зависит от количества тактов затрачиваемых на 1 машинный цикл.
2) Тактовая частота – количество тактов в секунду (Гц).
3) Частота системной шины (фронтальная шина)
4) Разрядность (шины адреса и шины данных).
5) Объем адресуемой памяти.
Различные варианты микроархитектуры процессора: cisc, risc, misc, vliw.
CISC – ( Complex Instruction Set Compution ) вычисления со сложным набором команд.
RISC – х86 (Reduced Instruction Set Compution) – сокращенный набор команд. Характеризуется наличием команд фиксированной длины, наличием большого количества регистров, операций типа регистр-регистр, а так же отсутствием косвенной адресации. Упрощение набора команд призвано сократить конвейер, что позволяет избежать задержек на операции условных и безусловных переходов. Однородный набор регистров упрощает работу компилятора при оптимизации исполняемого кода.
MISC – (Minimum Instruction Set Compution) – с минимальным набором команд. Основана на стековой вычислительной модели . Число команд минимально.
VLIW (Very Lang instruction word) – архитектура с командами сверх большой длины. С явно выраженным параллелизмом вычислений уже заложенных в систему команд процессора. Компилятор пытается объединить команды которые могут выполняться параллельно в пакеты те в так называемую сверх длинную команду (от 256 до 1024 бит). Команда состоит из нескольких полей (по числу команд), каждое из которых описывает операцию для конкретного функционального блока. Похоже на статическую суперскалярную архитектуру (существует несколько конвейеров для исполнения) – распараллеливание на этапы компиляции, а не во время исполнения программы. Развитием этой архитектуры стала архитектура
EPIC (Explicitly parallel instruction comp) (другое название IA-64). Команды упакованы по 3 штуки в 128 битные пакеты. Очень сложно обеспечить совместимость. Проще чем использовать новую систему команд, нужно использовать расширения для возможность работы с 64.
Разница между архитектурой и микроархитектурой процессора?
Есть ли разница между терминами «архитектура» и «микроархитектура» процессора?
Обычно под «архитектурой» понимается архитектура уровня набора команд (Instruction Set Architecture, ISA).
Давайте вспомним, что главной задачей CPU является исполнение программ. Согласитесь, что нам не важно, как CPU работает внутри, важно что он исполняет программы, которые мы ему передаем. И не просто исполняет, а исполняет именно так, как мы задумали! Вопрос в том, какие программы может исполнять определенный процессор и какова семантика этих программ. Именно это и определяет ISA — какие программы CPU может исполнять и что эти программы делают, а вот микроархитектура определяет, как CPU устроен изнутри.
Теперь немного подробнее.
ISA — это интерфейс между CPU и программами, которые на этом CPU исполняются. ISA определяет количество регистров, которые видны программисту, доступные инструкции, правила выравнивания и так далее. Если вы хотите написать программу для конкретного CPU вы берете справочник по его ISA и пишите инструкции одна за другой. Таким справочником, например, является Intel® 64 and IA-32 Architectures Software Developer’s Manuals — в нем описывается программная модель архитектур Intel 64 и IA-32 (это архитектуры семейства x86, которые используются в большинстве современных десктопных компьютерах).
В свою очередь микроархитектура определяет то, как CPU устроен внутри. Из каких функциональных узлов он состоит, какая иерархия кэшей, как декодируются инструкции, сколько стадий в конвейере и так далее.
Микроархитектура, не влияет на семантику и результат исполнения программ, но влияет на скорость их исполнения. Мы можем запустить Doom 3 как на старом Pentim IV, так и на новеньком Threadripper — и там и там он будет работать, вот только скорость работы на последнем CPU будет выше.
Кроме производительности микроархитектура влияет на энергопотребление процессора. Например, в свое время Intel запустила линейку процессоров Atom, которая была нацелена на мобильные устройства. Эти CPU реализовали ту же архитектуру x86, но их внутреннее устройство позволяло экономить потребление энергии, что делало возможным их использование в переносимых устройствах.
Микроархитектура программисту не видна † , программист работает на уровне ISA. Если два разных процессора реализуют одну и ту же ISA, то они могут исполнять одни и те же программы. Например, AMD и Intel производят процессоры семейства архитектур x86 — именно поэтому мы можем запускать одни и те же программы как на процессорах Intel, так и на процессорах AMD.
Важно понимать, что ISA не отражает реально происходящие процессы в CPU и является просто абстракцией для программиста/компилятора. Например, ISA x86 обещает программисту, что все инструкции, которые он запишет будут выполняться последовательно, одна за одной ‡ . Но на деле современные процессоры исполняют большинство инструкций параллельно и совсем не в том порядке, в котором их записал программист (см. instruction level parallelism). Тогда как же программы работают, если инструкции выполняются в произвольном порядке? Дело в том, что исполняя инструкции так как ему угодно, процессор следит за тем, чтобы программисту казалось, что инструкции выполняются последовательно * .
В принципе, об этом можно говорить долго, но в целом ISA и микроархитектура — это разные уровни абстракции. Если рассматривать CPU как черный ящик, то ISA — это его интерфейс, а микроархитектура — внутреннее устройство.
† Это, конечно, не совсем так. Программист и компилятор могут использовать свои знания о микроархитектуре конкретного процессора для применения определенных низкоуровневых оптимизаций: зная размер кэша можно разместить код и данные так, чтобы они влезали в кэш-линию, зная что конкретный процессор поддерживает delay slot компилятор может использовать эту информацию, чтобы, например, нивелировать задержку ветвления и так далее.
‡ Сильное и не совсем корректное упрощение. Хотя, конечно, иногда и приходится беспокоиться о memory barriers, но в целом программа действительно исполняется последовательно для программиста.
Что такое архитектура процессора, какая бывает и используется в смартфонах
С момента изобретения первых электронно-вычислительных машин в первой половине 20 века произошла только одна истинная революция. Случилось это в 50-60-х годах, когда на смену громоздким вакуумным лампам пришли полупроводниковые технологии. Тогда в качестве основного материала для их производства были выбраны кристаллы кремния. На них, с помощью различных технологий, вытравливаются миниатюрные транзисторы и связующие их цепи. С тех пор, на протяжении полувека, меняется в сторону уменьшения только размер транзисторов (техпроцесс), и увеличивается их количество на кристалле.
В условиях использования единой технологии (и отсутствия практически применимых альтернатив, так как до массового внедрения квантовых процессоров еще далеко) единственным способом приспособить вычислительные чипы под те или иные задачи — стало изобретение различных архитектур ЦП.
Что такое архитектура процессора
Архитектура процессора — это совокупность главных принципов его конструирования, общая схема расположения деталей на кремниевом кристалле и схема взаимодействия программного обеспечения с чипом. Если еще более упрощенно, то архитектура — это схема, по которой устроен процессор.
За все время было создано много различных архитектур. Самые популярные из них — CISC, MISC, VLIW и RISC. Различия между ними касаются, главным образом, системы взаимодействия процессора с обрабатываемыми данными. Сейчас активно используются конвейерные архитектуры CISC и RISC.
Как работает архитектура процессора
В конвейерной архитектуре данные обрабатываются последовательно, переходя от одного этапа к следующему. Например, на первом этапе процессор получает инструкцию, на втором — производится чтение данных из памяти, на третьем — осуществляется вычислительная операция, а на четвертой — выдача полученного результата. Когда первый этап конвейера освобождается — он может приступить к выполнению следующей инструкции. Этот процесс можно сравнить с работой автозавода: когда работник прикручивает последнюю ступицу колеса — конвейер двигается дальше. Второй работник прикручивает колеса на ступицы, а первый — опять прикручивает ступицы на следующей машине.
Количество стадий конвейера может быть разным. Если программа получает данные исправно, в них не содержится ошибок, то такой подход повышает производительность. Чем длиннее конвейер — тем больше операций выполняется за такт (1 герц частоты процессора). В аналогии с автозаводом, количество этапов конвейера — это количество работников за лентой, по которой двигаются кузова собираемых машин. Чем больше мегагерц — тем быстрее движется лента, тем быстрее работают сборщики. Однако если первый работник что-то сделает не так — получится брак, машину придется собирать заново.
В процессоре все аналогично: если на раннем этапе конвейера происходит ошибка — конвейер нужно перезапускать. Это замедляет производительность и приводит к пустым тратам энергии. Так как для компактных и мобильных устройств энергоэффективность очень важна — специально для них была создана архитектура RISC. От CISC она отличается упрощенным набором команд, которые принимает процессор, и укороченным конвейером. Такая особенность приводит к снижению производительности на фоне CISC (а компьютерные x86-процессоры Intel и AMD построены на ней), но позволяет минимизировать пустую трату энергии.
Архитектура процессоров ARM
Всевозможные MIPS, PowerPC, SPARC и прочие архитектуры типа RISC оставим IT-специалистам. Когда дело касается смартфонов — стоит детальнее уделить внимание ARM, Это — разновидность RISC архитектуры с коротким конвейером, которая является одной из самых распространенных и удачных. Именно ARM использует большинство производителей (Qualcomm, MediaTek, Apple, Samsung, Huawei-HiSilicon и другие). Только Intel в своих SoC атом используют x86-совместимые CISC ядра.
Особенностью ARM процессоров является использование короткого конвейера. Его длина составляет 3 и более этапов, что немного на фоне десятков стадий у CISC. За счет этого сбои в работе конвейера минимально сказываются на скорости обработки программ, максимально эффективно нагружая каждый такт. Поэтому именно ARM стала самой популярной архитектурой процессоров для смартфонов и планшетов.
Архитектура и микроархитектура процессора
Довольно часто в СМИ и интернете происходит путаница между понятиями архитектуры и микроархитектуры процессора. Чтобы внести ясность, следует установить отношение между данными терминами. Так вот, архитектура — это общий принцип устройства и работы процессора, а микроархитектура — всего лишь один из вариантов ее реализации, имеющий свои особенности, но сохранающий совместимость с базовой архитектурой.
Виды микроархитектур ARM для смартфонов
Большинство чипсетов для смартфонов содержат процессоры, созданные на ARM, а именно — микроархитектурах семейства Cortex и других. Список актуальных версий и их отличия приведены ниже.
-
Cortex A7. Устаревающая микроархитектура процессоров для смартфонов. Отличается низким энергопотреблением, имеет конвейер из 8-10 этапов. Не умеет работать с 64-битными инструкциями. Относится к семейству ARMv7.