Вы когда-нибудь задумывались, почему ваш смартфон работает на процессоре ARM, а мощный игровой ПК — на x86? Эти две архитектуры играют ключевую роль в современных технологиях, но используются в разных устройствах. ARM-процессоры применяют в смартфонах, планшетах, умных часах, MacBook и даже некоторых серверах благодаря низкой потребляемой мощности. Процессоры на x86 известны своей производительностью и гибкостью, что делает их идеальными для сильных ПК и серверов.
В этой статье мы разберем, чем отличаются эти архитектуры, как они работают и почему ARM стал популярным выбором для мобильных устройств, а x86 сохраняет позиции в мире мощных ПК и серверных решений.
Используйте навигацию, если не хотите читать текст полностью:
→ Краткий обзор архитектур ARM и x86
→ Структурные различия между ARM и x86
→ Применение в различных устройствах и приложениях
→ Заключение
Краткий обзор архитектур ARM и x86
Архитектуры процессоров ARM и x86 — две различные философии проектирования в компьютерной инженерии. Каждая из них имеет свои структурные характеристики, наборы команд и области применения.
Архитектура ARM разработана Acorn Computers в 1980-х годах. Она основана на принципах вычислений с упрощенным набором инструкций (RISC) и славится энергоэффективностью и преимуществами производительности на ватт. ARM стала популярным решением для мобильных устройств, встраиваемых систем и приложений.
Архитектура x86 следует парадигме вычислений с комплексным набором инструкций (CISC). Она доминирует в ПК и ноутбуках, а также в серверных средах благодаря своей способности обрабатывать сложные инструкции и обширной поддержке устаревшего программного обеспечения.
Одним из главных аспектов при рассмотрении архитектур является иерархия памяти. Она определяет скорость доступа к данным и эффективность, играя ключевую роль в обеспечении баланса между производительностью и энергопотреблением.
Важность иерархии памяти возросла с ростом производительности процессоров. На рисунке показаны изменения производительности одного процессора во времени, с учетом исторических улучшений скорости доступа к основной памяти.
Линия процессора показывает среднее количество запросов к памяти в секунду, а линия памяти — увеличение количества обращений к DRAM в секунду. В реальности частота запросов процессора неодинакова, а система памяти обычно имеет несколько банков DRAM и каналов.
В 2000 году время доступа к памяти DRAM составляло около 100 наносекунд, а в 2020 — уже более 200. Однако значительного улучшения производительности отдельных процессоров за это время не произошло. Следовательно, разрыв в пропускной способности между процессорами и DRAM хоть и продолжил расти, но этот рост замедлился. Основная причина того, что разрыв все же увеличивается — рост числа ядер в процессорах. Чем их больше, тем больше и разрыв.
Каждое ядро современных высокопроизводительных процессоров для настольных ПК, таких как Intel® Core® i7 6700, может обрабатывать два запроса к памяти за один такт. Благодаря четырем ядрам и тактовой частоте 4,2 ГГц процессор i7 может генерировать пиковые 32,8 миллиарда обращений к памяти с 64-битными данными в секунду, в дополнение к пиковой потребности в примерно 12,8 миллиарда ссылок на 128-битные инструкции. Его общая пиковая пропускная способность составляет 409,6 ГБ/с. Эта невероятная величина достигается за счет многопортовой и конвейерной обработки кэшей.
Структурные различия между ARM и x86
Наборы инструкций
Основные различия между ARM и x86 заключаются в их наборах инструкций и парадигмах выполнения. Процессоры ARM используют набор инструкций, основанный на Reduced Instruction Set Computing (RISC). Этот подход к проектированию подчеркивает простоту и содержит меньше инструкций, которые могут быть выполнены за один такт. Это обеспечивает эффективное декодирование и выполнение, что приводит к повышению производительности за такт и снижению энергопотребления.
Процессоры x86 используют архитектуру Complex Instruction Set Computing (CISC), характеризующуюся большим набором инструкций. Многие из этих инструкций требуют выполнения нескольких тактовых циклов, что увеличивает время декодирования и энергопотребление. Однако эта сложность также обеспечивает больше возможностей команд, что делает процессоры x86 хорошо подходящими для сложных задач и широкой совместимости программного обеспечения.
Эти различия влияют на эффективность работы: архитектура загрузки-хранения ARM оптимизирует скорость выполнения простых команд, в то время как способность x86 выполнять операции непосредственно в памяти благоприятствует сложным вычислительным задачам.
Инструкции CISC могут быть любой длины. Максимальная теоретическая длина инструкции x86 может быть бесконечной, но на практике не превышает 15 байт. Инструкции RISC имеют ограниченную длину. Источник.
Наборы команд
Различия в наборах инструкций обуславливают также разницу в способах выполнения команд. Для RISC характерно использование простых и однотипных команд, тогда как CISC предлагает более сложные и разнообразные.
Вот как можно охарактеризовать наборы команд для ARM.
- Ограниченное количество команд. RISC-архитектуры обычно используют небольшое количество базовых инструкций, что позволяет ускорить их выполнение. Каждая инструкция предназначена для выполнения простой операции.
- Единая длина. Все инструкции в архитектуре RISC имеют одинаковую длину, что упрощает процесс их декодирования и способствует более высокой скорости выполнения.
- Конвейеризация. Архитектуры RISC разработаны для облегчения конвейеризации команд, где несколько этапов инструкций обрабатываются одновременно, тем самым повышая общую производительность. Поскольку каждая команда занимает одинаковый интервал времени для выполнения, конвейеризация более эффективна в системах RISC.
- Большое количество регистров. Чтобы минимизировать необходимость в более медленном доступе к памяти, RISC-системы используют большое количество регистров. Это позволяет командам работать непосредственно с данными, хранящимися в регистрах, а не обращаться к памяти часто.
- Гарвардская архитектура. RISC обычно использует гарвардскую модель памяти, которая разделяет пути хранения и передачи сигналов для инструкций и данных, что еще больше повышает эффективность обработки.
- Оптимизация компилятора. RISC-системы в значительной степени полагаются на сложные компиляторы для оптимизации кода и эффективного управления регистрами. Простота набора команд облегчает компиляторам генерацию эффективного машинного кода.
С другой стороны, архитектура CISC характеризуется сложным набором инструкций, который позволяет выполнять многошаговые операции в рамках одной инструкции.
- Сложные команды. Системы CISC включают в себя широкий спектр сложных инструкций, каждая из которых способна выполнять несколько операций, таких как загрузка, оценка и сохранение данных, в рамках одной инструкции.
- Переменная длина. Инструкции в архитектурах CISC различаются по длине, что может усложнить процесс их декодирования. Блок управления (CU) должен определить длину каждой инструкции и декодировать ее соответствующим образом.
- Несколько тактовых циклов. Если в RISC большинство инструкций выполняются за один тактовый цикл, для выполнения инструкций CISC может потребоваться несколько циклов. Это объясняется сложностью самих инструкций.
- Меньше регистров. Архитектуры CISC обычно имеют меньше регистров по сравнению с RISC. Этот выбор дизайна компенсируется сложными командами, которые могут напрямую манипулировать данными в памяти.
- Простота компиляторов. Хотя инструкции CISC сложнее, они часто упрощают работу компилятора, поскольку одна сложная инструкция может заменить ряд более простых. Это уменьшает размер программы, но может увеличить время выполнения из-за сложности декодирования и выполнения команд.
Открытость архитектуры ARM
Открытость архитектуры ARM позволяет производителям и разработчикам адаптировать процессоры под специфические нужды, добавляя или изменяя компоненты ядра в зависимости от задач. Это гибкость дает, например, возможность создания энергоэффективных и производительных решений для разнообразных устройств — от смартфонов до серверов.
AWS, Alibaba и другие компании разрабатывают собственные чипы на базе ARM. Это позволяет им оптимизировать производительность своих серверов и снижать затраты. Также существуют открытые решения, такие как процессоры Ampere, доступные для тестирования и использования в различных конфигурациях.
В отличие от ARM архитектура х86 является закрытой и патентованной. То есть ее кастомизацию ограничивают лицензии и патенты, а также высокая степень стандартизации и совместимости между различными процессорами. Вместе с тем, патентованные технологии позволяют держать под контролем развитие архитектуры и поддерживать высокие стандарты производительности и безопасности.
Бэкграунд
Со временем набор инструкций x86 эволюционировал, включив в себя многочисленные устаревшие функции для поддержания обратной связи со старым программным обеспечением. Это привело к увеличению сложности архитектуры. Избыточный бэкграунд порой препятствует росту производительности и эффективности проектирования. Например, архитектура x86 расширилась от простых 16-битных инструкций до 32- и 64-битных режимов, а также виртуальной памяти, виртуализации и функций безопасности.
В свою очередь, архитектура ARM хотя и развивалась, сохранила более чистый дизайн, сосредоточившись на сокращении унаследованного «багажа». Например, набор инструкций ARM начинался как 32-битная архитектура, а затем включал 16-битный режим и поддержку 64-битной архитектуры, но она избежала обширного накопления устаревших функций, наблюдаемых в x86.
Использование регистра
Использование и структура регистров также подчеркивают различия между архитектурами ARM и x86. Архитектура x86 включает в себя множество регистров: общего назначения (EAX, EBX и т. д.), специализированных (CS, DS), управляющих (CR0, CR2) и векторных (XMM0, K0).
ARM обычно использует более рационализированный набор регистров, фокусируясь на сокращении количества инструкций, требующих доступ к памяти. Например, в RISC-проекте инструкции, такие как ADD, всегда принимают регистры в качестве операндов. Это упрощает конвейер и может повысить производительность с помощью конвейеризации и управления регистрами.
Производительность и эффективность
Хотя архитектуры ARM и x86 были оптимизированы для соответствующих рынков, фокус на энергоэффективности по сравнению с производительностью различается. Философия дизайна ARM подчеркивает низкое энергопотребление, что делает его идеальным для встраиваемых приложений и мобильных устройств, где энергоэффективность имеет первостепенное значение. Простота набора инструкций способствует этой эффективности, поскольку для их выполнения требуется меньше тактовых циклов.
Процессоры x86 часто оптимизированы для высокой производительности, где вычислительная мощность является ключевым фактором. Сложный набор инструкций обеспечивает широкий спектр вычислительных возможностей и совместимость программного обеспечения. Обратная сторона этого — высокое энергопотребление.
Применение в различных устройствах и приложениях
ARM
Процессоры ARM могут потреблять до 30-50% меньше энергии по сравнению с x86. К тому же они меньше. Например, Snapdragon 8 Gen 2 имеет размер чипа около 16×16 мм. Apple, Qualcomm и Samsung используют процессоры ARM в смартфонах и планшетах, получая выгоду от их более низких требований к питанию и интегрированных функций.
Переход Apple на Apple Silicon на базе ARM в компьютерах Mac подчеркивает растущее присутствие ARM на рынке настольных компьютеров и ноутбуков. Архитектура ARM обеспечивает этим устройствам значительную энергоэффективность и конкурентную производительность, хотя совместимость с приложениями x86 часто требует трансляционных слоев, таких как Rosetta 2.
ARM также проникает на рынки серверов и центров обработки данных. Примером служат серверы ARM01-NVMe Selectel на базе процессоров Ampere Altra, предназначенные для масштабирования облачных инфраструктур и обработки интенсивных рабочих нагрузок. Эти серверы предлагают 128 ядер, поддерживают высокую пропускную способность и энергоэффективность.
Многоядерные серверы с процессорами Ampere Altra оптимизированы для виртуализации, работы с базами данных и контейнерными оркестраторами. Например, облачные серверы с поддержкой Kubernetes позволяют гибко распределять ресурсы и масштабировать приложения, минимизируя затраты на энергопотребление. Этот подход особенно эффективен для предприятий, стремящихся к устойчивому развитию и снижению операционных расходов.
Такие сервера демонстрируют превосходные результаты в различных бенчмарках. Процессоры Ampere Altra Max M128-30 продемонстрировали хорошую производительность. Особенно в тесте mysqlslap — во многом благодаря большому количеству ядер и микроархитектурным оптимизациям. Хотя в ряде случаев они проигрывали x86-процессорам — например, в операциях записи и в одном и двух потоках из-за особенностей архитектуры. Конфиг может стать хорошим компромиссом между стоимостью и производительностью: однопроцессорная система такой стоимости составляет хорошую конкуренцию закоренелым лидерам рынка.
Кроме того, в нагрузках на базе MySQL и Redis серверы ARM превосходят многие традиционные x86 решения, предлагая лучшую производительность на ватт и пониженные энергозатраты, что крайне важно для крупных дата-центров.
Для дополнительных примеров и детальной информации о доступных конфигурациях серверов Selectel на базе ARM, можно посетить официальный сайт. Масштабируемая архитектура ARM хорошо подходит для обработки различных рабочих нагрузок в серверных средах.
Универсальность ARM распространяется и на высокопроизводительные вычисления, как это демонстрирует Fugaku. Это самый быстрый в мире суперкомпьютер, использующий процессоры ARM для обеспечения исключительной вычислительной мощности и эффективности.
Энергоэффективный дизайн процессоров ARM делает их идеальными для устройств для умного дома, носимых технологий и промышленных датчиков. Способность ARM работать непрерывно при минимальном энергопотреблении делает его предпочтительным выбором для этих постоянно работающих приложений.
Подход ARM к поддержанию производительности при оптимизации энергоэффективности воплощен в многоядерном процессоре Cortex-A9 CPU и архитектуре «big.LITTLE». Она объединяет высокопроизводительные ядра с энергоэффективными для управления рабочими нагрузками.
x86
Процессоры на архитектуре x86 благодаря высокой производительности и совместимости с почти любым ПО покорили рынок ПК, ноутбуков и дата-центров. Они подходят для самых требовательных задач: работы с 3D-графикой, рендеринга видео, игр, машинного обучения и т. д.
В сегменте игровых компьютеров процессоры на x86 обеспечивают выдающуюся производительность. Например, Intel® Core® i9-13900K имеет 24 ядра и 32 потока, что позволяет достигать тактовой частоты до 5,8 ГГц. Эти процессоры поддерживают новейшие видеоигры и VR-приложения, обеспечивая частоту кадров до 144 FPS в современных играх на максимальных настройках. AMD RyzenTM 9 7950X также предлагает отличные характеристики с 16 ядрами и 32 потоками, что делает его идеальным для высокопроизводительных игр и задач рендеринга.
Другие процессоры на x86 играют ключевую роль в дата-центрах и облачных вычислениях. Например, Intel® Xeon® Platinum 8380 поддерживает до 40 ядер и 80 потоков, обеспечивая масштабируемость и производительность для крупных серверных приложений. Он также обладает поддержкой до 6 ТБ оперативной памяти, что позволяет эффективно работать с большими объемами данных. AMD EPYCTM 7742 имеет 64 ядра и 128 потоков, обеспечивая выдающуюся многозадачность и высокую производительность для виртуализированных сред и вычислительных кластеров.
Заключение
Итак, ARM и x86 — это два разных инструмента для разных задач. ARM со своей энергоэффективностью делает смартфоны и планшеты быстрыми и долговечными. Ваш iPhone 15 с чипом A16 Bionic или новый Android на Qualcomm Snapdragon — все они работают долго без подзарядки и справляются с любыми приложениями благодаря ARM.
А вот x86 — это настоящая рабочая лошадка для серверов и мощных ПК. Если у вас дома стоит крутой игровой компьютер на Intel® Core® или рабочая станция на AMD RyzenTM, или если вы пользуетесь сервисами, работающими на серверах с Intel® Xeon® или AMD EPYCTM, то это все заслуга x86. Эти процессоры отлично справляются с тяжелыми вычислениями и поддерживают тонны софта.
Теперь, когда вы немного больше знаете о том, как работают эти архитектуры, вы сможете лучше понять, почему ваш смартфон такой шустрый, а рабочий ПК такой мощный. Каждая архитектура имеет свое место и задачи, и это знание помогает осознанно выбирать технику, которая подходит именно вам. А что вы думаете по этому поводу? Напишите в комментариях.