Вы когда-нибудь задумывались, почему ваш смартфон работает на процессоре 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 имеет размер чипа около 16x16 мм. 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. Эти процессоры отлично справляются с тяжелыми вычислениями и поддерживают тонны софта.

Теперь, когда вы немного больше знаете о том, как работают эти архитектуры, вы сможете лучше понять, почему ваш смартфон такой шустрый, а рабочий ПК такой мощный. Каждая архитектура имеет свое место и задачи, и это знание помогает осознанно выбирать технику, которая подходит именно вам. А что вы думаете по этому поводу? Напишите в комментариях.

Комментарии (49)


  1. kuza2000
    19.08.2024 08:40
    +5

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

    В моем понимании железа, RISC превосходит CISC. Единственная причина, по который мы не на ARM или другом RISC - это совместимость со старым ПО. Просто тащим этот груз, который выкинуть бы давно пора. А в статье пишется, что вроде как есть другие причины, но я не нашел ни одной. Пишется, что x86 лучше для высокой производительности. Но чем лучше? Может, хотя бы в одном потоке он обгоняет ARM при сопостовимой потребляемой мощности? Или есть ограничения на максимальную мощность ARM? Может, я что-то упускаю?

    Тема не раскрыта.


    1. unreal_undead2
      19.08.2024 08:40
      +3

      Большая часть отличий в производительности вообще и производительности на ватт определяется не архитектурой, а микроархитектурой. Разве что более сложный декодер x86 влияет на энергопотребление и в мобильном сегменте это заметно. А в плане пригодности ARM для высокой производительности - см. последние чипы от Apple и номер 4 в Top 500.


    1. Sun-ami
      19.08.2024 08:40
      +2

      Главный недостаток RISC - это больший размер исполняемого кода, чем у CISC. Это приводит к большей потребности в чтении из памяти, а память намного медленнее процессора, даже если это кэш-память не самого первого уровня. Выходом здесь может быть увеличение ширины шины памяти, её скорости и количества каналов за счёт многоэтажной конструкции чипов с вертикальными связями, как в процессорах Apple M. Но пока такая конструкция плохо масштабируется и не имеет никаких возможностей для апгрейда.


      1. unreal_undead2
        19.08.2024 08:40
        +2

        больший размер исполняемого кода, чем у CISC

        Всё не так однозначно - вот тут есть сравнение с цифрами.


        1. yatanai
          19.08.2024 08:40

          Тоесть в итоге получаем, "теоретический CISC лучше, ибо по-сути представляет из себя сжатый набор команд закодированный по частоте использования"

          На практике у нас есть только х86, который уже давно перестал быть оптимальным решением


          1. kuza2000
            19.08.2024 08:40

            У меня вывод, что лучше RISC. Длинна кода для RISC не возрастает (выше пруфы). Сам кристалл вроде бы проще, но это не точно. Все остальное одинаково. Но для RISC компилятор собирает код из более мелких кусочков, чем для CISC и у него больше возможностей для оптимизации.


            1. Sun-ami
              19.08.2024 08:40

              У компилятора для RISC обычно действительно больше возможностей для оптимизации, но по другой причине. В CISC есть все команды, которые есть в RISC, так что никто не запрещает компилятору применить те же возможности оптимизации. С CISC хуже другое - для одной системы команд разные процессоры имеют существенно разный по алгоритму микрокод с существенно разными задействованными для каждой конкретной команды ресурсами, поэтому для наилучшей оптимизации компилятору теоретически нужно знать конкретную модель процессора. На практике это обычно неприменимо, кроме, разве что компиляции ядра Linux под конкретный процессор. А для RISC вариантов использования ресурсов процессора гораздо меньше, и универсально оптимизировать код намного проще.


          1. Sun-ami
            19.08.2024 08:40

            Кроме этого теоретического преимущества у CISC также есть существенные недостатки в виде сложного декодера, вместо которого в некоторых случаях можно было бы поставить второе ядро на той же площади кристалла, и более длинного конвейера, который вынуждает использовать более сложный предсказатель ветвлений, и при этом всё равно больше теряет из-за его ошибочных предсказаний. Ну а у современной версии х86, судя по приведенным здесь результатам измерений, и этого преимущества не осталось, потому что его система команд уж слишком отягощена обратной совместимостью.


          1. unreal_undead2
            19.08.2024 08:40

            Кроме прочего переменный размер инструкции - ни разу не отличительная особенность CISC. Скажем, в RISC V есть расширение для использования 2байтных инструкций вперемешку с "обычными" 4байтными.


          1. melodictsk
            19.08.2024 08:40

            На практике уже давно не х86, а амд64. Х86 есть в кристалле, но давно не используется.


      1. Armmaster
        19.08.2024 08:40

        БОльший размер исполняемого кода влияет только на одно - на количество instruction cache misses. Это иногда может сыграть заметную роль по перфу, но найти такой тест, чтобы это стало заметно в части ARM vs X86 надо ещё постараться. И это точно не станет никогда узким местом в части обращения непосредственно в память и требованиям к канальности памяти. Несколько мегабайт (или даже десятки ) LLC кэша вполне гарантируют вам попадание всего кода в кэш.


        1. Sun-ami
          19.08.2024 08:40

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


          1. Armmaster
            19.08.2024 08:40

            В общем, это придуманная проблема. Никогда скорость и канальность памяти не проектируется исходя из вопроса размера кода, главное там - это объём обмена данными и работы подсистемы кэша данных. В принципе, если у вас из L1I код начинает часто выпадать, это уже криминал. Размер кода инструкций имел важное значение на заре проектирования микропроцессоров, также определённую важность он имеет сейчас при проектировании микроконтроллеров. А для соврменных серверных/десктопных процессоров разница в размере кода между CISC/RISC не влияет почти ни на что. Скорее более сложный декодер для CISC имеет значение, хотя впрочем тоже небольшое


            1. Sun-ami
              19.08.2024 08:40

              В принципе, если у вас из L1I код начинает часто выпадать, это уже криминал.

              Что такое часто? К примеру, размер кэша L1 процессора AMD Ryzen 7 8700 - 512 кбайт, а задержка при обращении к L2 - 3 нс, что при частоте 5,1ГГц составляет 15 тактов.


              1. Armmaster
                19.08.2024 08:40

                Часто - это значит если вы в профилировщике видите какую-то значимую величину хотя бы больше 1% от суммарного времени исполнения в поле icache_stalls.


            1. unreal_undead2
              19.08.2024 08:40

              В принципе, если у вас из L1I код начинает часто выпадать, это уже криминал.

              На энтерпрайз приложениях (базы данных, всяческие Spark/Hadoop и т.п.) обычное дело, когда большая часть обращений к L2 инициируется L1I миссами. И iTLB миссы тоже существенно влияют на производительность. Но, как писал выше, разница в размере кода на CISC и RISC - скорее миф, чем реальность, надо сравнивать конкретный код на конкретных архитектурах.


    1. techno_mot Автор
      19.08.2024 08:40

      Но чем лучше? Может, хотя бы в одном потоке он обгоняет ARM при сопостовимой потребляемой мощности? Или есть ограничения на максимальную мощность ARM? Может, я что-то упускаю?

      Но еще x86-процессоры, как Intel Core i9-13900K, превосходят ARM в однопоточных задачах благодаря более высокой частоте и IPC, достигая 30 000 баллов в Geekbench 5 по сравнению с 1 700 баллами у Apple M1. При сопоставимой мощности x86 обычно предлагает лучшую производительность на такт, но ARM-процессоры показывают лучшую производительность на ватт (1.5-2.0 производительности на ватт). ARM-процессоры, хотя и улучшаются, традиционно имеют ограничения в максимальной мощности по сравнению с высокопроизводительными x86-процессорами.


      1. kuza2000
        19.08.2024 08:40

        А кто или что ограничивает ARM-процессоры в максимальной мощности? Если сделать два процессора с одинаковой потребляемой мощностью ARM и x86, то ARM будет производительнее, так?
        И что мешает частоту для ARM увеличить?


        1. ildarz
          19.08.2024 08:40

          то ARM будет производительнее, так?

          Нет, не так. Это так не работает, производительность не масштабируется однозначно с потребляемой мощностью ни вверх, ни вниз. Можно сравнивать только реально существующие процессоры. А ответ на вопрос "что мешает увеличить частоту" может быть очень разным, от "не впишемся в термопакет" для мобильных устройств до "не получается" для серверных.


          1. kuza2000
            19.08.2024 08:40

            Речь не про мобильные устройства, и "не впишимся в термопакет" не аргумент. "Не получается для серверных" - почему?

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


            1. unreal_undead2
              19.08.2024 08:40

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

              Существуют построенные на ARM сервера, десктопы и рабочие станции. Что будет дальше с их долей на рынке - посмотрим.


        1. unreal_undead2
          19.08.2024 08:40

          Что мешает погуглить характеристики серверных процессоров ARM?


          1. kuza2000
            19.08.2024 08:40

            Это не дает ответы на мои вопросы.

            Кстати, какие сейчас наиболее производительные ARM или RISC? Гуглю - все какие-то старые статьи попадаются...


            1. unreal_undead2
              19.08.2024 08:40

              Скажем, NVIDIA Grace, Apple M3, Snapdragon X Elite. Ну и "старенький" A64FX ещё вполне жив.


  1. AlexB17
    19.08.2024 08:40
    +8

    "Каждое ядро современных высокопроизводительных процессоров для настольных ПК, таких как Intel® Core® i7 6700"

    Дальше читать не стал...


    1. ildarz
      19.08.2024 08:40
      +4

      Видимо, автор где-то нашел курсовую (свою или чужую) 2015-2016 года. Иначе содержание статьи, в том числе по уровню изложения, объяснить сложно.


  1. LordCarCar
    19.08.2024 08:40

    А что делает приведенный ассемблерный код для ARM?


    1. unreal_undead2
      19.08.2024 08:40

      Где вы в статье ARM ассемблер нашли? Я вижу псевдокод, иллюстрирующий разницу между гипотетическими CISC и RISC.


      1. LordCarCar
        19.08.2024 08:40
        +1

        Ок, псевдокод.

        Пытались показать одно и тоже действие на разных процессорах, но что-то пошло не так!

        Могут, конечно, сказать, что так в источнике, но зачем копировать ошибки?


        1. unreal_undead2
          19.08.2024 08:40
          +1

          Если не считать опечаток в номерах регистров, вроде криминала нет ) Но если говорить именно про ARM - то в нём есть достаточно продвинутая адресная арифметика и явно вычислять адрес отдельными инструкциями в данном случае не надо.


  1. tmxx
    19.08.2024 08:40
    +2

    Вот как можно охарактеризовать наборы команд для ARM.

    ...

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

    Давно ли в ARM общего применения, которые рассматриваются в статье, гарвардскую архитектуру реализовали?


    1. techno_mot Автор
      19.08.2024 08:40

      насколько я знаю в относительно свежих процессорах, таких как ARM Cortex-X2 и Neoverse V1, применяется гарвардская архитектура с раздельными кэшами для инструкций и данных. Некое продолжение традиции, начавшейся с архитектуры ARMv6 2002 года)


      1. unreal_undead2
        19.08.2024 08:40

        архитектура с раздельными кэшами для инструкций и данных

        Используется на интеловских процессорах начиная по крайней мере с Pentium Pro (1995 год). В каком то смысле это элемент гарвардской архитектуры, но всё таки адресное пространство для инструкций и данных общее и снаружи они поступают в процессор через одну и ту же шину или контроллер памяти.


  1. tmxx
    19.08.2024 08:40
    +1

    Вот как можно охарактеризовать наборы команд для ARM...

    ...

    Большое количество регистров. Чтобы минимизировать необходимость в более медленном доступе к памяти, RISC-системы используют большое количество регистров. Это позволяет командам работать непосредственно с данными, хранящимися в регистрах, а не обращаться к памяти часто.

    ARM и x64 имеют практически одинаковое количество регистров.

    Т.е. в целом, архитектуры RISC и CISC действительно имеют такие свойства, но в статье рассматриваются конкретные семейства.


    1. unreal_undead2
      19.08.2024 08:40
      +1

      Всё таки регистров общего назначения (не векторных) на данный момент на x86 16, а в Aarch64 32. Но интеловский APX грозится это исправить.


      1. tmxx
        19.08.2024 08:40

        вы правы, я ошибся


  1. Armmaster
    19.08.2024 08:40
    +4

    Абсолютно безграмотная статья. Тот редкий случай, когда неправильно почти всё. Наверное, можно написать отдельную статью, чтобы указать все косяки. Самое главное, абсолютно некорректен посыл, что от архитектуры RISC/CISC как-то существенно зависит производительность или энергопотребление. От архитектуры это сейчас практически не зависит никак, всё определяется микроархитектурой чипа, применяемым техпроцессом, качеством физдизайна и набором других параметров, никак с системой команд не связанными.


  1. aabzel
    19.08.2024 08:40

    Господа,

    Предлагаю коллективно создать реестр для сравнения процессорных ядер

    https://docs.google.com/spreadsheets/d/1y9DpZ5n3_t8Bk6t6CaU0f8WBJGfK05y20dzH8ncdMrs/edit?usp=drivesdk

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

    Было бы здорово, если каждый напишет про тот проц с которым упорно работал.

    Кто готов пополнить реестр я добавлю возможность  редактировать.


    1. tmxx
      19.08.2024 08:40

      Делать аналитику.

      для чего?


      1. aabzel
        19.08.2024 08:40

        Например найти свободную рыночную нишу.


    1. molnij
      19.08.2024 08:40

      https://en.wikipedia.org/wiki/List_of_ARM_processors


      1. aabzel
        19.08.2024 08:40

        Тут мало инфы и нет даже базовых характеристик.

        И это только армы. А есть ещё power pc, risс v и прочие ядра


        1. unreal_undead2
          19.08.2024 08:40

          wikichip.org не поможет?


  1. molnij
    19.08.2024 08:40
    +2

    Эм, Селектел, вас-то кто укусил? Вроде обычно достаточно вменяемые статьи, а тут прям какой-то поток бессознательного бреда. Новую сетку для написания шлака на хабр тестируете? Мож не надо, их тут и так уже .. изрядно больше чем хотелось бы

    Просто лень перечислять, плохо буквально всё..


  1. LAutour
    19.08.2024 08:40
    +2

    В 2000 году время доступа к памяти DRAM составляло около 100 наносекунд, а в 2020 — уже более 200

    Память за 20 лет стала медленее?


  1. techno_mot Автор
    19.08.2024 08:40

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


    1. ildarz
      19.08.2024 08:40

      Что такое "эффективная задержка"? Вот у меня i5-13600KF с DDR4, латентность в тесте памяти AIDA чуть меньше 100нс . Это эффективная задержка, или не очень, и как мне получить те 200 из вашего текста?


      1. techno_mot Автор
        19.08.2024 08:40

        тест AIDA дает чуть меньше 100 нс это относиться к физической задержке доступа к памяти. Если мы говорим об эффективной задержке, то учитывайте дополнительные системные задержки, такие как время доступа к кэшу и задержки шины, которые могут добавить примерно 100 нс. Так что, эффективная задержка может составлять около 200 .


        1. ildarz
          19.08.2024 08:40
          +1

          тест AIDA дает чуть меньше 100 нс это относиться к физической задержке доступа к памяти.

          Нет. "Физическая задержка" (если под ней понимать CAS latency, время от поступления чипу сигнала "давай данные" до возвращения им данных из столбца) там порядка 15нс.

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

          К какому кэшу? У любого процессорного кэша задержки МЕНЬШЕ, чем у самой памяти. И что это за "задержки шины", которые тест не показывает? Он как-то мимо шины читает данные? Если да, то как?

          И вопрос "как получить 200нс" все еще открыт (как получить 100нс в 2000, я примерно знаю :)). Их можно каким-то широко распространенным ПО увидеть? Вы же опирались на какие-то реальные данные, когда про 100 и 200нс писали, правда ведь? :)