Игнорировать влияние ARM-архитектуры на рынке современных процессоров уже невозможно. Технология, созданная для малопроизводительных смартфонов, стала реальной угрозой гегемонии x86, которая царит на рынке последние «дцать» лет. Amazon запускает в облаке собственные серверы на базе ARM – Graviton2, заявляя, что чуть ли не 49% новых инстансов Amazon EC2 построено на базе этих серверов. А M1 от Apple показывает все большую конкурентоспособность.

Когда произойдет революция на серверном рынке? Состоится ли смещение Intel и AMD с пьедестала? Или они подстроятся под веяния рынка? Кто поднимет знамя ARM на серверном рынке и как скоро серверы с новыми процессорами заполнят дата-центры? Все эти вопросы обсудили в рамках выпуска подкаста «О чем молчит сервер» от Selectel, а я, директор по развитию продуктов Саша Тугов, зафиксировал ключевые мысли дискуссии и решил поделиться ими с Хабром. Добавлю, что это лишь мнение, которое не является истиной в последней инстанции. Хотите поделиться своими размышлениями на тему — добро пожаловать в комментарии.

История повторяется


Если посмотреть на историю серверного рынка, х86 не всегда был доминирующей платформой. В «стародавние времена» (80-е — 90-е годы XX века) популярные тогда мейнфреймы работали на довольно специфических процессорах, практически не совместимых с домашними компьютерами. А х86 был, по сути, очень-очень дешевой платформой для домашнего ПК. Как же эта архитектура проникла в серверы?

Дело в том, что Intel и AMD делали процессоры для масс-маркета, а в нем денег больше, чем в любом B2B-бизнесе. Соответственно, компании богатели: у них появились ресурсы на R&D (research and development), новые фабрики и другие активности, приводящие их к росту. В итоге процессоры Intel и AMD стали настолько крутыми, что обогнали все серверные платформы того времени. Так архитектура х86 закрепилась в серверном сегменте: сейчас она в 99,99% серверов.

Интересно, что тот же самый путь проходит архитектура ARM, изначально созданная для малопроизводительных телефонов, смартфонов, планшетов со «спрессованной» энергоэффективностью. Рынок мобильных гаджетов, как можно заметить, стремительно растет — сейчас он в разы крупнее современного рынка ПК и серверного оборудования.

Критический вес набирала и ARM, а компании, развивающие ARM-чипы (тот же Apple), настолько прокачали свои процессы, столько вкладывались в R&D, что превратили их в супер-мега-энергоэффективные и производительные процессоры, готовые к разным нагрузкам.

Сейчас можно наблюдать, как взорвали рынок макбуки на процессоре М1. Они доказали, что ARM – не только для скроллинга ленты в смартфоне, а как минимум для офисной работы. И кажется, серверный рынок ждет та же участь, что постигла его 20 лет назад, — смена «власти». Бабло побеждает бабло: у кого больше денег, тот делает более крутые технологии. А они, в свою очередь, вытесняют менее продвинутые технологии.

Что стоит за переходом на ARM


На самом деле, переход с x86 на ARM-архитектуру — лишь следствие другого важного изменения: изменения подхода к созданию микропроцессоров общего назначения. Тут нужно вспомнить про CISC- и RISC-архитектуры.

x86 и ее давно почившие аналоги относятся к первой. CISC (Complex Instruction Set Computer) – это расширенный набор инструкций, которые выполняет процессор. В современных имплементациях процессоров Intel, в документации, насчитывается более 6 000 инструкций. Просто огромное количество! Зачем вообще процессору выполнять так много инструкций?
ARM, в свою очередь, относится к RISC-подходу — Reduced Instruction Set Computer. Как можно понять из названия, здесь процессор использует урезанный набор инструкций — условно, 100-200.

Какая нам в принципе разница, как это все работает и сколько инструкций поддерживает процессор? А разница есть, и большая. Нужно понимать, что современный процессор, когда он выполняет какой-то программный код, уже скомпилированный (не то, что мы на Python набрали, а машинный код), читает из памяти и инструкции, и данные. Это непрерывный процесс. Соответственно, чем больше инструкций процессор поддерживает, тем более сложным у него должен быть блок декодера инструкций. То есть ему нужно сначала эту инструкцию найти, понять, какие данные ей переданы в параметрах, и так далее.

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

У RISC все инструкции крайне простые: одна инструкция вынимает из памяти, вторая — складывает, третья — записывает обратно. Кроме того, все инструкции одинаковой длины, так что нашей «числодробилке» не нужно угадывать, где тут инструкция, а где данные.
Исполнение инструкций при RISC-подходе можно сравнить с очередью на кассе в магазине, когда один человек в конце очереди забирает свои продукты, второй расплачивается, а третий выкладывает свои продукты на ленту, чтобы кассир их пробил. Это дает значительный прирост в скорости. А в CISC-процессорах с этим проблемы: инструкции разной длины и сложности, выполняются в разное время.

Конечно, лидеры рынка понимали эти ограничения и искали способы их обхода. Так, у Intel и AMD есть такая технология, как Hyper-Threading. Она позволяет обрабатывать несколько инструкций на каждом ядре процессора. Так, одна часть ядра складывает, а вторая — делит. И все это происходит параллельно. Именно поэтому в процессорах с Hyper-Threading в два раза больше логических ядер, чем физических.

Как бы то ни было, тот факт, что у вас больше логических ядер, не означает двукратное повышение производительности. На практике повышение составляет 30-40%. К слову, гипертрединг можно и на ARM-архитектуре сделать. Просто пока этим никто не занимался.

ARM в дата-центрах


Зачем они там?


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

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

Как «стакается» серверное ПО с ARM


Если смотреть на веб-сервисы, то большая часть написана на скриптовых языках. По сути, это даже не «бинарники», скомпилированные под определенную архитектуру, а программы на Python, PHP, Ruby, которые можно быстро перекомпилировать — в языках есть все возможности для этого. (Go компилируемый, но полностью открытый и чаще всего ПО поставляется в исходниках, которые можно перекомпилировать)

Кроме того, большинство веб-проектов работают на ОС Linux. А ядро Linux уже очень давно поддерживает ARM-архитектуру. То есть в серверном сегменте гораздо более портируемое ПО. Добавим, что оно нередко с открытым исходным кодом, а значит, при необходимости его можно быстро оптимизировать под ARM. Это, конечно, большое преимущество серверного оборудования. Apple пришлось делать транслятор инструкций, чтобы старое ПО, созданное под x86, работало на новых М1. Но там своя специфика: большая часть приложений бинарно скомпилирована.

Если же речь о серверном оборудовании для энтерпрайз-заказчиков, которые сидят на Windows, то да, серверная «винда» ARM не поддерживает. Но есть мнение, что Microsoft почует, куда дует ветер. Перекомпилировать что-то под ARM, в целом, не так сложно, — был бы спрос. А спрос появится с большой вероятностью.

Когда ARM-серверы появятся в дата-центрах


С практической точки зрения прямо сейчас нет ARM-серверов, которые были бы сильно интереснее, чем Intel или AMD.

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

Стартапы, создающие серверы на ARM, обычно проваливались на последнем факторе: низкие продажи, потому что они были лишь на старте, и, как следствие, высокие цены. Давайте встанем на место клиентов: нам говорят, мол, вот вам процессор на ARM, и называют немалую цену. Ну хорошо, ARM, но по производительности-то он такой же, как Intel. Да и у Intel больше линейка, больше альтернатив и плюшек. И не забываем, что стоимость процессора — занимает лишь 20-30% от стоимости сервера.

В общем, чтобы все сработало и у тебя купили ARM-процессор, нужно быть кем-то вроде Apple на серверном рынке. Сама Apple на него, конечно, едва ли ступит, так что мы ждем скорее ее аналоги. Может, на Китай наложат еще большие санкции и перестанут продавать им американские x86-процессоры. И Huawei начнет разрабатывать свой процессор. Мало того, что компания его сделает, они еще и обеспечит гигантское массовое производство за счет китайского рынка.

Если он получится дешевым, если он получится сверхтехнологичным (сделают сложные интерконнекты, чтобы там могло уместиться до 100-200 ядер, общий кэш, быстрый обмен данными и т.д.), если Huawei обеспечит дистрибуцию, поддержку, экосистему, запатчит Linux по полной, тогда да, это будет прямо революция в серверном сегменте.

Но пока вся картина не складывается, есть только фрагменты. Нет большого рынка, нет тех, кто поднял бы знамя ARM и шел бы с ним на серверный рынок.

Серверы на ARM в Selectel


В Selectel Lab мы тестировали сервер от Huawei с двумя процессорами по 64 ядра. Когда ARM-процессоры только пришли, у Вовы Турова было очень много проблем с ними. Архитектура непонятная, а единственная операционная система, которую удалось установить сразу, это CentOS 7. В ней по умолчанию все пакеты стабильны, а программное обеспечение очень старое. Где найти нужный софт? В итоге наш специалист поладил с сервером и поставил на него Ubuntu. Серьезных различий с привычным х86 нет: пакеты есть, программное обеспечение есть, все радует. Но физические тесты производительности, например Geekbench, для серверов на ARM недоступны — не собраны еще под эту архитектуру.

Сервер Huawei Taishan 200. Источник

Клиенты Selectel, которые брали ARM-серверы Huawei на тест, на проблемы с софтом не жаловались. Для многих, конечно, преимущество x86 состоит хотя бы в том, что под эту архитектуру больше ПО написано. Но в этом не так много правды. В мире Linux достаточно много программного обеспечения с открытым исходным кодом. Поэтому, если до тебя никто не запускал какой-то софт на ARM, просто будь первым.

От кого ожидать процессоры в серверном сегменте


На самом деле, позволить себе такую разработку могут крупные облачные провайдеры — тот же Amazon. Стоит понимать, что Amazon Web Services гораздо больше любого Dell, HP и других игроков рынка.

Очень интересно наблюдать, как Amazon уже запустил в своем облаке собственные серверы на базе ARM – Graviton2. И компания заявляет, что у них чуть ли не 49% новых инстансов Amazon Elastic Compute Cloud построены на базе этих серверов. А это просто гигантский уровень проникновения для такой молодой технологии. Также 14% всех виртуальных машин Amazon – на базе их собственных ARM-серверов.

Источник

Конечно, всегда есть риск, что каждый лидер рынка — Google, Microsoft, Amazon — будет делать ARM-архитектуру под свои продукты, а провайдерам потом придется как-то учиться их адаптировать. Так мы опять вернемся во времена мейнфреймов, когда эти «суперкомпьютеры» представляли собой программно-аппаратные комплексы, несовместимые ни на уровне «железа», ни на уровне ПО.

Но сейчас такая ситуация менее вероятна: рынок привык к открытости и конкурентному подходу. Кроме того, балом сейчас правят облачные провайдеры, и поставщикам оборудования и ПО приходится считаться с их требованиями. Ведь клиенты приходят в первую очередь к облачному провайдеру, а потом смотрят, что у них в маркетплейсах и списках сервисов.
В чем еще преимущество облаков в этом деле? Когда ты вкладываешься в какой-то R&D, естественно, ты хочешь защитить свои наработки от конкурентов. Например, как делают в Apple. У них сильно огороженная экосистема, в которую они никого не пускают.

В случае с облачными провайдерами эта огороженная экосистема получается естественным образом. Пользователи (как и конкуренты) облачного сервиса не могут добраться до «потрохов» технологии и скопировать ее. Ты используешь сервис, а как он там внутри оптимизирован, это все интеллектуальная собственность компании. Те же Amazon берут ARM, допиливают архитектуру для серверов, потом берут какой-нибудь Linux, но при этом его полностью переписывают, запатчивают и делают какую-нибудь базу данных как сервис, на базе полностью своего программно-аппаратного стека. А затем продают процессоры той же производительности за меньшие деньги либо процессоры с большей производительностью за те же деньги. Естественно, все идут к ним.

И, по сути, мы уже наблюдаем эту революцию. И в случае с ARM-процессорами она идет даже не от производителей серверов, а от гипер-облаков. У кого очень много серверов? У FANG (Facebook, Amazon, Netflix, Google и других). Google уже, может, что-то такое делает в своей Кремниевой долине, но для внутренних проектов. Мы не можем знать наверняка.

***
Разницу между подходами RISC и CISС мы популярно объяснили в третьем ролике цикла, посвященного Mac Mini на M1.


Если не видели эти ролики, советуем — это качественный geek porn. Там же, на YouTube Selectel, есть остальные выпуски подкаста «О чем молчит сервер».

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


  1. EgorovDenis
    29.07.2021 14:54
    +2

    ARM - это компания, которая является владельцем прав на архитектуру процессоров ARM. RISC-V - это другая архитектура и не одно и то же, что ARM.

    Например, китайская компания Alibaba штампует процессов на RISC-V по той причине, что за эту архитектуру не надо платить и санкции для неё не опасны. Даже Amazon хочет использовать RISC-V в своих серверах. При этом умельцы смогли даже запустить андроид на RISC-V, но гугл пока не одобрил этот проект.

    Так что прошу не путать ARM и RISC-V


    1. fortyseven Автор
      29.07.2021 14:55
      +1

      Всё так, RISC-V - открытая RISC архитектура. ARM - закрытая лицензируемая RISC архитектура.


    1. homm
      29.07.2021 15:37
      +4

      Прошу не путать RISC и RISC-V


    1. Lirix_vladimir
      29.07.2021 17:16
      +1

      В статье ни слова о RISK-V


      1. Lirix_vladimir
        29.07.2021 17:16
        +1

        сорри RISC-V конечно же


  1. checkpoint
    29.07.2021 15:55
    +5

    Все таки предлагаю ARM отнести к проприетарной CISC по той же причине, что и x86 — там сейчас более 2000 инструкций с длинным хвостом наследия. В этом смысле RISC-V — настоящий RISC, базовый набор всего 47 инструкций.

    У RISC-V должно все получиться, в том числе и на серверах, требуется только время. Ждем SiFive P550 в камне — заявленная производительность на уровне топовых ARM-ов (Cortex-A75) с существенно меньшей занимаемой площадью, что, теоритическо, должно способствовать уталкиванию бОльшего числа ядер на кристалл.


    1. fortyseven Автор
      29.07.2021 17:42

      Ну до x86 им пока далеко и идеологически они начинали и стараются держаться подхода RISC. Да и вики пока считает их RISC


    1. beeruser
      29.07.2021 21:06
      +3

      предлагаю ARM отнести к проприетарной CISC по той же причине, что и x86

      Предлагаю всё серое и полосатое считать кошкой.

      Вообще-то есть целый список критериев по которым можно судить о принадлежности к CISC/RISC.

      с длинным хвостом наследия .

      Первый ARMv8 процессор появился в 2013г.

      базовый набор всего 47 инструкций

      RV32I?

      Так у ARM было 26 при аналогичных возможностях =)

      Базовый набор никого не интересует, тем более в серверах.

      заявленная производительность на уровне топовых ARM-ов (Cortex-A75) 

      Топовый? Cortex-A75 это старый телефонный процессор (3-wide).

      Имеющиеся серверные ARM-ы это Neoverse N1, который уже тоже устарел.

      Чипы на современных ядрах выйдут в 2022г. Хотя Graviton 3, скорее всего раньше.


  1. Antervis
    29.07.2021 20:54

    в 21 веке однозначно относить процессоры к RISC или CISC как-то странно. Они все имеют как тривиальные, так и относительно сложные инструкции (да хоть тот же SIMD), во всех декодер преобразует команды в какое-то внутреннее представление процессора (которое тоже однозначно не классифицируешь), в ARM-который-вы-окрестили-RISC есть возможномть комбинации двух простых команд в одну (могу путать с RISC-V). По сути основная разница в фиксированности размера команды, но она никак не относится к RISC/CISC классификации


    1. beeruser
      29.07.2021 22:17
      +1

      в 21 веке однозначно относить процессоры к RISC или CISC как-то странно.

      ISA вполне определённо отностится к конкретному семейству архитектур.

      Внутри же современные OoO чипы устроены примерно одинаково.

      относительно сложные инструкции (да хоть тот же SIMD)

      Странно говорить о SIMD как о "сложных" инструкциях.

      Обычное 32-битное сложение превращается в 2-wide SIMD просто отключением переноса из 15-го в 16-й разряд.


  1. eps
    30.07.2021 12:25

    выпуска подкаста «О чем молчит сервер» от Selectel

    Заинтересовался


    … ссылка на YouTube..
    … нет RSS..
    … нет ссылкок на подкаст-площадки..


    Хммм… Ладно, один выпуск можно и тут посмотреть, слышал про эту моду на видео-подкасты.


    … Видик без видеоряда..
    ...YouTube не даёт сворачивать видео, ставит звук на паузу..


    Интерес прошёл


    1. fortyseven Автор
      31.07.2021 11:13
      +1

      Ссылка на подкасты исправлена https://band.link/RkVB0


  1. LinearLeopard
    30.07.2021 13:22
    +1

    К слову, гипертрейдинг можно и на ARM-архитектуре сделать. Просто пока этим никто не занимался.

    https://en.wikichip.org/wiki/cavium/thunderx2 - вот процы с 4x потоков от числа ядер, я так подозреваю, они именно как hyper-threading работают?


    1. fortyseven Автор
      31.07.2021 10:19

      Да, подход аналогичный


  1. nitrocaster
    31.07.2021 19:44
    +2

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

    Чем дольше развивается архитектура, тем больше инструкций в ней появляется. Через 10 лет ARM станет плохим только из-за разросшегося набора инструкций? Конечно нет.
    Более сложный декодер инструкций сам по себе проблемой не является.

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

    Современные процессоры вообще не выполняют те инструкции, на которые вы смотрите в дизассемблере. Мало кто понимает, что именно там под капотом на самом деле выполняется. Откуда взялась идея того, что это является боттлнеком для CISC архитектур?

    У RISC все инструкции крайне простые: одна инструкция вынимает из памяти, вторая — складывает, третья — записывает обратно. Кроме того, все инструкции одинаковой длины, так что нашей «числодробилке» не нужно угадывать, где тут инструкция, а где данные. [...] Это дает значительный прирост в скорости. А в CISC-процессорах с этим проблемы: инструкции разной длины и сложности, выполняются в разное время.

    Насколько значительный? Citation needed.


    1. fortyseven Автор
      01.08.2021 14:10

      Всё так, в случае с ARM дело еще и в выравнивании инструкций и данных, подробнее тут


  1. vkomen
    01.08.2021 20:18

    IMHO, при нынешнем процессорном бюджете та часть, которая декодирует инструкции из CISC в элементарные процессорные у х86 - о малое от всех накладных расходов!


    1. Armmaster
      01.08.2021 20:23

      ИМенно так.