На рынке микроэлектроники царствуют две архитектуры: x86 и ARM (Advanced RISC Machine). И до недавнего времени они сосуществовали в идиллии — с лёгкими нотками конкуренции. Но недавно Apple ткнула палкой в это… болото, показав Apple silicon M1. Все техноблогеры визжали от счастья и отправляли цветы в кабинет Кука. It's a revolution, Jony Timmy.
Но Apple всего лишь ударила клюшкой туда, где шайба окажется, а не туда, где шайба находится сейчас. И не промахнулась.
Но на самом деле революция случилась раньше — в серверном сегменте (об этом я расскажу в следующей статье из цикла).
Содержание:
Да, ARM-архитектура давно пустила корни в сегменты рынка, где x86 годами удерживала монополию. Конъюнктура дуализма в микропроцессорных архитектурах начала разрушаться ещё до выхода M1 — уже были консьюмерские ARM ноутбуки (привет, Qualcomm), серверы и даже суперкомпьютеры. Об этом и поговорим в статье, ведь сейчас ARM на пороге глобальных перемен.
x86 и ARM — двое из ларца
Вряд ли я удивлю кого-то из читателей Хабра, сказав, что в мире есть две основные микропроцессорные архитектуры, от которых пошли почти все остальные: RISC и CISC.
Разнообразие RISC-подобных и CISC-подобных архитектур огромно: RISC-подобные: ARM (доминирующая), MIPS, POWER, SPARC, PA-RISC и Alpha; CISC-подобные: x86 (доминирующая), VAX, MC680x0, z/Architecture. Также уточню, что есть и другие, куда менее популярные архитектуры, например VLIW (Very Long Instruction Word), на которой работает линейка отечественных Эльбрусов. У неё ещё более длинные инструкции, чем у x86. |
Пожалуй, можно написать несколько книг про их различия, преимущества и недостатки. Некоторые авторы на Хабре уже публиковали интересные статьи (раз, два) на эту тему. Моя статья немного про другое, но чтобы общая картина сложилась, вкратце расскажу об отличиях x86 и ARM.
Итак.
Чаще всего разницу выискивают в способах проектирования, в длине команд, в энергоэффективности, в сложности ПО или в области применения.
Тезисы звучат примерно так:
Когда вендорам нужно сделать высокопроизводительное устройство с активным охлаждением и питанием от розетки, они выбирают x86. Там более длинные команды, на обработку которых уходит больше энергии, но зато сложность вычислений выше, а потому на x86 есть более точный и узкоспециализированный профессиональный софт.
Если же нужно что-то компактное, энергоэффективное и бесшумное, работающее от аккумулятора, то смотрят в сторону ARM и других RISC архитектур (привет смартфонам, маршрутизаторам и прочим многочисленным девайсам). Набор команд упрощен и имеет унифицированную длину, благодаря чему процессоры меньше греются и обходятся без активного охлаждения. Софт — проще, но для области применения ARM-процессоров этого достаточно.
Окей, эти тезисы имеют место быть, но настоящая разница — в наборах инструкций.
В наборе команд микроархитектуры x86 есть те, что отвечают за произвольное использование регистров и ячеек памяти. В ARM же есть специальные инструкции для операций над данными в регистрах (регистр-регистр) и отдельные инструкции для обмена данными между регистрами и памятью (нет косвенной адресации). Пресловутые длинные команды из мира CISC на самом деле разбиваются на несколько микроопераций и исполняются RISC ядром — вот тебе и x86. Титанических различий в архитектуре x86 и ARM под капотом не так уж и много. Это всё те же миллионы и миллиарды транзисторов, с помощью которых выполняются логические операции. |
Да, это не самое скандальное разоблачение на свете, но после разговоров со знакомыми сисадминами я понял, что далеко не все об этом знают.
Разница в проектировании — вот в чём SoC
Например, Intel Core i9-12900K или AMD Ryzen 7 4750G — это не CPU, как мы привыкли их называть, а APU (Accelerated Processor Unit), то есть процессор с интегрированной графикой (iGPU) на одном кристалле. Есть модели без встроенной графики, например, Intel Core i9-12900KF или AMD Ryzen 9 3900X — это как раз классические CPU. Но важно учесть, что даже классические CPU — не просто ядра с кэшем. Внутрь встроена логика северного моста, которую раньше на себя брал отдельный чип, распаянный на материнской плате.
А вот на ARM чаще всего другая логика — SoC (System-on-a-Chip) или система на кристалле. Это подход к созданию вычислительного устройства, когда на одной интегральной схеме находится де-факто целый компьютер: ядра CPU общего назначения; ядра GPU; специализированные ядра для обработки изображений (ISP), цифровых сигналов (DSP) и нейронных задач (NPU); память GDDR; кэш; контроллер памяти; модем; многоканальный радиочастотный блок; MultiMedia Hardware Accelerator (аппаратное ускорение); AI Accelerator; IO (ввод/вывод) и многое другое.
Различия связаны тем, что ПК или ноутбуки достаточно большие, чтобы установить в них платы расширения и чипсет, который включает в себя другие компоненты. Всё что нужно для быстрого выполнения команд встроено в процессор (кэш, северный мост), либо общается с ним по очень быстрым шинам PCI-e (видеоадаптеры, ОЗУ, южный мост). А почти вся площадь кристалла процессора выделяется под вычислительные нужды.
Носимая электроника — компактная. Внутри корпуса места мало, а вдобавок туда нужно установить устройства ввода-вывода (дисплей, сенсорная панель, кнопки, динамики, вибромоторчики, камеры, сканеры и другое), сим-карту, а также аккумуляторы для автономной работы и антенны. Поэтому большую часть решили интегрировать прямо в процессор. Всё ради экономии места и быстрого межпроцессорного взаимодействия. Чем дальше в лес, тем больше компонентов интегрируют в SoC.
Итого. Два основных различия современных x86 и ARM процессоров — в наборе инструкций и в физической реализации. Они мало чем отличаются с технической точки зрения, а при желании, если понизить вольтаж и частоты, срезать кэш, избавить от предсказателей переходов и выполнения команд вне очереди, их можно привести к одному знаменателю (вспоминаем x86 Android смартфоны на Intel Atom, и ведь работали).
шARM маленьких процессоров: как Intel прогадала с рынком
Синие долго упирались, не желая разрабатывать процессоры на ARM. Они прошляпили уходящий вагон сапсана, а когда выпустили собственную альтернативу на x86 (Intel Atom) — было поздно. Да, Android нормально работал на x86 процессорах, а некоторые производители, например Lenovo, выпускали годные смартфоны (K900).
Если с технической точки зрения процессоры Atom вполне могли дать конкурентное энергопотребление и производительность на ватт, то софт… С его адаптацией были проблемы. А как мы помним, из-за этой же причины в своё время померла очень неплохая Windows Phone, которая также поздно ворвалась в игру.
На самом деле у Intel было несколько вариантов выйти победителями:
Начать адаптировать x86 процессоры под смартфоны раньше. Если бы софт изначально писали под эту архитектуру, то, возможно, сейчас в наших смартфонах стояли процессоры Intel и AMD;
Выкупить ARM со всеми
потрохаминаработками и патентами. В те времена антимонопольная служба вполне могла бы одобрить сделку (как дела, Nvidia?). HP же поглотила одного из главных конкурентов (Compaq) в 2002 году;Начать полноценную разработку ARM процессоров для смартфонов. Тем более, что у них были процессоры XScale PXA с реализацией набора команд ARMv5TE. Но нет, они продали её компании Marvell за 600 миллионов долларов и сложили все яйца в
одну корзинуx86.
Но случилось, что случилось. Сначала ARM захватила рынок телефонов, позже — смартфонов и носимой электроники, а дальше начались нападки на вотчину x86: ПК и серверы.
Главная причина экспансии — ARM-процессоры быстрее прогрессируют. Не в последнюю очередь из-за модели лицензирования. Любая компания может купить у ARM лицензию на готовые ядра или архитектуру и создавать свои SoC, как это делают, например, Apple, Qualcomm и Samsung. Это даёт относительно низкий порог входа.
Архитектура x86 является открытой и бесплатной. Но готовые ядра Intel или AMD вам никто не продаст. При этом для некоторых функций всё равно понадобится покупать лицензию от Intel и AMD. То есть понимаете, какой порог входа? Вы с нуля начинаете конкурировать с двумя гигантами, которые разрабатывали процессоры десятилетиями.
Но вопрос, как мне кажется, не столько в самой архитектуре, а в том, сколько денег вкладывается в R&D (исследования и разработки).
Сравните сами.
Дисклеймер! Таблица ниже не претендует на точное сравнение, а сухие цифры не показывают реальной картины в рабочих или повседневных задачах. Главная цель — показать скорость прогрессии, а не столкнуть конкретные процессоры лоб в лоб. |
↓CUT↓
2010 ГОД. A4 даже рядом не стоит с топовым на тот момент Intel. Зато TDP всего 5W — хороший вариант для смартфона. | |
Apple A4 (32-bit): 45 нм, 149,000,000 транзисторов, 2 ядра, 1 ГГц, 512 KB кэш, TDP 5W, 0.5 GFLOPS, производительность на ватт — 42 pts. iGPU — 1.6-3.2 GFLOPS. | Intel Core i7-970 (64 bit): 32 нм, 1,170,000,000 транзисторов, 6 ядер, 3.2-3.5 ГГц, 12 MB кэш, TDP 130W, 113.3 GFLOPS, производительность на ватт — 107 pts. Без iGPU. |
2012 ГОД. A6X сильно спрогрессировал, догнал по техпроцессу, но всё ещё сильно отстаёт по производительности и характеристикам. | |
Apple A6X (32-bit): 32 нм, 1,000,000,000 транзисторов, 2 ядра, 1,4 ГГц, 512 KB кэш, TDP 5W, 7 GFLOPS, производительность на ватт — 113 pts. iGPU — 51.2 GFLOPS. | Intel Core i7-3930K: 32 нм, 2,270,000,000 транзисторов, 6 ядер, 3.2-3.8 ГГц, 12 MB кэш, TDP 130W, 230.9 GFLOPS, производительность на ватт — 141 pts. Без iGPU. |
2014 ГОД. A8 перегнал по техпроцессу, почти догнал по количеству транзисторов, сильно нарастил кэш. Очень мощный скачок, а TDP 5W, тогда как Intel прибавил 10 W. | |
Apple A8 (64-bit): 20 нм, 2,000,000,000 транзисторов, 2 ядра, 1.4 ГГц, 4 MB кэш, TDP 5W, 35 GFLOPS, производительность на ватт — 477 pts. iGPU — 115.2 GFLOPS. | Intel Core i7-5930K: 22 нм, 2,600,000,000 транзисторов, 6 ядер, 3.5-3.7 ГГц, 15 MB кэш, TDP 140W, 406.8 GFLOPS, производительность на ватт — 158 pts. Без iGPU. |
2016 ГОД. Где-то здесь началась смена парадигмы. A10 нарастил ядра, частоты, перегнал по транзисторам и это всё с TDP 5W. | |
Apple A10 Fusion: 16 нм, 3,300,000,000 транзисторов, 4 ядра, 1.3-2.3 ГГц, 4 MB кэш, TDP 5W, 88.2 GFLOPS, производительность на ватт — 1,138 pts. iGPU — (FP32) 1200.6 GFLOPS. | Intel Core i7-6900K: 14 нм, 3,200,000,000 транзисторов, 8 ядер, 3.2-3.7 ГГц, 20 MB кэш, TDP 140W, 563.5 GFLOPS, производительность на ватт — 221 pts. Без iGPU. |
2018 ГОД. TDP у A12X вырос в три раза, количество транзисторов тоже. Техпроцесс вырвался вперёд даже относительно компании AMD, у которой нет якорей из своих фабрик. Кэш — x2, частоты подросли, а графическое ядро в два раза мощнее Xbox One S (по заверениям Apple). Жаль, что нормальных игр не было. | |
Apple A12X Bionic: 7 нм, 10,000,000,000 транзисторов, 8 ядер, 1.6-2.5 ГГц, 8 MB кэш, TDP 15W, 240 GFLOPS, производительность на ватт — 1,180 pts. iGPU — (FP32) 1200.6 GFLOPS. | Intel i9-9900K: 14 нм++, количество транзисторов неизвестно, 8 ядер, 3.6-5.0 ГГц, 16 MB кэш, TDP 95W, 588 GFLOPS, производительность на ватт — 384 pts. iGPU — (FP32) 423.2 GFLOPS. AMD Ryzen 7 PRO 2700X: 12 нм, транзисторов 4,940,000,000, 8 ядер, 3.4-4.1 ГГц, 16 MB кэш, TDP 95W, 357 GFLOPS, производительность на ватт — 297 pts, без iGPU. |
2020 ГОД. С выходом M1 стало очевидно, что ARM процессоры способны на большее. Он обошел топовые Intel Core i9-10900K и AMD Ryzen 9 5950X в одноядерных тестах Geekbench 5. С графикой тоже полный порядок. Но в мультиядерных тестах пока отставание, однако TDP многократно меньше. И это первый Apple silicon SoC, который попал в десктопный сегмент. | |
Apple M1: 5 нм, 33,700,000,000 транзисторов, 8 ядер, 2.1-3.2 ГГц, 12 MB кэш, TDP 14W, производительность на ватт — 2,047 pts. iGPU — (FP32) 2610 GFLOPS. | Intel Core i9-10900K: 14 нм+++, количество транзисторов неизвестно, 10 ядер, 3.7-5.3 ГГц, 20 MB кэш, TDP 125W, 706.28 GFLOPS, производительность на ватт — 336 pts. iGPU — (FP32) 460.8 GFLOPS. AMD Ryzen 9 5950X: 7 нм, транзисторов 3,800,000,000, 16 ядер, 3.4-4.9 ГГц, 64 MB кэш, TDP 105W, 963 GFLOPS, производительность на ватт — 595 pts, без iGPU. |
Q1 2022 года | Q4 2021 года |
А вот здесь наблюдается интересная картина. Да, M1 Ultra — это высокопроизводительное чудовище (де-факто это два процессора M1 Max). Он может побороться одновременно с топовыми процессорами и видеокартами уровня RTX 3070 (никаким 3090 тут и не пахнет, что бы ни говорила Apple), но TDP относительно M1 вырос в 7 раз. Появился кулер, питание от розетки и другие прелести из лагеря x86. | |
Apple M1 Ultra: 5 нм, 114,000,000,000 транзисторов, 20 ядер, 2.1-3.2 ГГц, 48 MB кэш, TDP 100W, производительность на ватт — данных нет. В среднем по трём мультикор тестам он в 3 раза превосходит базовый M1. Мощнейший 32-ядерный встроенный iGPU — (FP32) 21.2 TFLOPS. Apple заявляет, что M1 Ultra потребляет при пиковых нагрузках на 100 Вт меньше энергии, чем i9-12900K: около 60 Вт против 160 Вт у x86. | Intel i9-12900K: 10 нм (Intel 7), количество транзисторов неизвестно, 16 ядер, 3.2-5.2 ГГц, 30 MB кэш, TDP 125W, 1.18 TFLOPS, производительность на ватт — 508 pts. iGPU — (FP32) 742.4 GFLOPS. |
И пару слов про недавний M2. MacBook Air с пассивным охлаждением тротлит, а MacBook Pro, у которого активное охлаждение, нет. Линейка Apple silicon M превращается… барабанная дробь… в симбионта из преимуществ и недостатков x86 и ARM. Когда выбираешься на уровень производительности ПК, растёт и |
По таблице выше видно, что процессоры на ARM летели семимильными шагами, а вот x86 вальяжно развивались, никуда не торопясь. Я вижу несколько ключевых причин, почему так произошло.
Во-первых, это деньги и конкуренция.
Рынок процессоров для смартфонов в 2021 году вырос на 23% — до $30,8 млрд. В отдельную категорию выделяют рынок планшетов ($3 млрд), в котором 89% — это ARM, а остальное — x86. А за счёт нормальной модели лицензирования в лагере ARM огромная конкуренция: есть Apple Silicon, Qualcomm Snapdragon, MediaTek, Samsung Exýnos, Nvidia Tegra и Grace, а также Fujitsu и другие.
Все вендоры видят графики роста продаж и прибыли, а конкуренция побуждает их вкладываться в разработку, чтобы не вылететь с этого пира.
С 2017-ого года по 2021-ый поставки выросли с 40 млн единиц до более чем 200 миллионов — динамика роста впечатляющая.
Рынок x86 процессоров составил $74 млрд, но вырос не так значительно — всего на 11.6% за год. Здесь нужно учесть, что из-за COVID-19 смартфоны стали продаваться хуже, а ПК и ноутбуки для работы из дома — лучше.
Intel и AMD вдвоём сидят на суку и без жёсткой конкуренции медленно пилят его (да есть ещё производители, но их доли ничтожно малы). Были годы, когда Intel почти монополизировала рынок x86 (как раз, когда ARM перевернула игру). AMD несколько лет работала с убытками, закрывала линейки процессоров и сокращала штат. А монополия всегда тормозит прогресс.
Другая причина быстрой прогрессии — это цикл обновления устройств.
Игровой ПК вполне может работать 5 и более лет без обновления процессора: Intel Core i7-6700K (2015 года) позволяет нормально играть в современные игры, если видеокарта на уровне (ссылка на видео). Да, с новым процессором FPS будет выше, но разница не в два раза — речь о нескольких десятках процентов.
А теперь давайте взглянем на смартфоны флагманы 2015 года: iPhone 6S, Sony Xperia Z5, Samsung Galaxy S6, LG G4, Google Nexus 6P — ни один из них больше не обновляется, а встретить человека с семилетними смартфонами — непростая задача. Любая модель из среднебюджетного сегмента выиграет по всем параметрам. Вот и получаем, что нормальный цикл обновления в смартфонах (сейчас он замедлился) — около 2 лет. Поэтому и процессоры нужно обновлять быстрее и заметнее.
Всё это позволило за 12 лет ARM-процессорам пройти огромный путь: от 200-кратного отставания до вполне себе конкурентного уровня. Могу ошибаться, но есть ощущения, что дальше начнётся игра на выживание. Прошу заметить, что я не говорю о полном исчезновении x86 или об абсолютном преимуществе ARM. Есть ряд задач, где ещё долго не будет смены парадигмы. Но уже сейчас Intel и AMD придётся шевелиться.
Циклу быть
В следующей статье я расскажу про суперкомпьютеры и серверы на ARM, затрону тему операционных систем и поближе посмотрю на серверные процессоры, которые сделали революцию в производительности за пару лет до Apple M1.
Чего только стоит блейд-сервер HP, у которого 288 ARM процессоров и 1152 ядра :)