- Сравнение производительности ПК и смартфонов, включая iPhone 11
- Какой линейкой будем мерить
- Результаты тестов
- Кто есть кто на диаграмме
- А можно ли сравнивать разные архитектуры?
- К чему вообще эти сравнения?
- Ссылки на чарты
- О превосходстве Apple M1 Pro над флагманами AMD и Intel
- реклама
- Кратко о Pro и Мах версиях
- реклама
- реклама
- Apple M1 Pro в синтетике
- реклама
- Apple M1 Pro vs Ryzen/Intel в реальных задачах
- Тесты в видеоиграх
- Потребление энергии
- Итоги
- Почему чип Apple M1 такой быстрый?
- Что такое микропроцессор CPU?
- M1 — это не центральный процессор
- Не такой уж засекреченный неоднородный способ вычислений от Apple
- В чем особенность архитектуры Единой Памяти (UMA) от Apple?
- Если системы SoC такие “умные”, то почему Intel и AMD не следуют той же стратегии?
- Гонка наращивания мощности CPU
- Много ядер или процессоры “исполнения вне очереди ОоОЕ”?
- Как работают процессоры Out-of-Order
- Инструкции ISA и микро-операции
- Почему выполнение ОоОЕ процессорами Intel и AMD уступает чипу М1?
- Почему Intel и AMD не могут добавить больше декодеров?
- Но ядра процессора AMD Zen3 ведь быстрее, так?
- Будущее
Сравнение производительности ПК и смартфонов, включая iPhone 11
После выхода iPhone 11 с SoC Bionic A13 в очередной раз возникло желание сравнить его производительность с ПК. Пару лет назад эппловские чипы уже обошли средний сегмент ноутбуков. И поскольку там прогресса в производительности практически нет, новый карманный гаджет должен сейчас обойти уже всю ноутбучную братию и хорошенько «покусать» настольные системы.
Во многом обошел. Покусал. Детали под катом.
Изучая мнения о том, кто быстрее (смартфоны или ноутбуки), самым распространенным оказался вариант: «как смартфон за 60 тыс. может быть медленнее ПК, стоящего дешевле?» Правда, эти мнения высказывались не на Хабре. А вот технически подкованные люди наоборот вопрошали, мол, как кроха с TDP в 3-5 Вт может обойти монстров с TDP 65 Вт и более, при том, что производятся они по близким техпроцессам?
Образовались два разных лагеря. Сам я, будучи по первому ВО инженером-системотехником, принадлежу ко второму. И на вопрос о ваттах у меня есть ответ. Но давайте перейдем к сути дела.
Какой линейкой будем мерить
Сравнивать производительность будем в кроссплатформенном тесте Geekbench 5, эмулирующем работу реальных пользовательских задач типа архивации, шифрования. Насколько легитимно сопоставлять в нем разные платформы – хороший вопрос. Поднимем его чуть ниже. А сейчас лишь скажу, что создатели теста усиленно на это напирают:
Этим тестом пользуюсь периодически. Но результаты для данного поста взял из официальных чартов. В них создатели помещают усредненные значения из того, что попадает к ним в базу от пользователей. Чаще всего такие результаты оказываются слегка заниженными, ведь пользователи – не профессиональные тестеры. У них во время теста в фоне может работать какое-нибудь ПО, или включен режим энергосбережения. Впрочем, нас это не волнует. Крайние нижние значения там и так наверняка отбрасываются. Вдобавок у меня нет цели получить прецизионные данные. Достаточно обрисовать некую общую картину.
Результаты тестов
Первое – Apple крута, и за последние пару лет она увеличила отрыв от Qualcomm и Samsung с их лицензионными и допиленными армами.
Второе – уровень производительности топовых смартфонов в офисно-потребительских задачах сравнялся с продвинутыми ноутбуками и хорошими офисными ПК (см. оговорки ниже).
Третье – одноядерная производительность. Именно она отвечает за отзывчивость интерфейса и быстроту работы приложений, основная масса которых плохо приспособлена к распараллеливанию.
Кто есть кто на диаграмме
Теперь давайте глянем на нутрянку подопытных. Для удобства я собрал все в одну табличку.
Если совместить эти данные с диаграммой производительности, видно, что ограниченный тепловой пакет не дает молотить всем ядрам мобильных чипов на полную катушку. Дополнительные ограничения вводит архитектура big.LITTLE, в рамках которой не всегда возможна одновременная работа высокопроизводительного кластера в чипе и энергоэффективного.
А можно ли сравнивать разные архитектуры?
Полноценное сравнение процессорных архитектур крайне затруднительно, и у меня нет идей, как это грамотно можно сделать. ARM принадлежит к типу RISC, а x86 к CISC. За счет меньшего числа команд и меньшего количества блоков ARM-чип должен выполнять отдельные команды быстрее и энергоэффективнее. Но как только речь заходит о выполнении сложных функций, под которые у x86 есть заготовленные аппаратные блоки и наборы команд, ARM будет курить в сторонке. Но это в теории.
А еще есть разные операционки, разные компиляторы. И мне кажется, разработчики Geekbench слегка забили на все это, упростив все до мониторинга выполнения системой каких-то типовых задач, например декодирования jpg или сборки закэшированных веб-страниц. При этом код этих задач они старались оптимизировать для каждой системы отдельно.
В итоге счастливый владелец последнего айфона может с гордостью сказать, что его смарт способен так же быстро открывать фотки из галереи, как и топовая пятигигарцовая «печка» от Intel. Но делать более серьезные заявления Geekbench уже не позволяет. Впрочем, для большинства бытовых ситуаций этого вполне достаточно.
Больше деталей по их тестам можно найти вот в этом pdf.
К чему вообще эти сравнения?
Три года назад меня посетила мысль, что с ростом производительности мобильных чипов они могли бы покуситься на сегмент недорогих нетбуков, треть цены которых, порой, составляет ОС от Microsoft. С учетом того, что Google распространяет свою ОС бесплатно, а за добавление сервисов Google Play и прочих надо заплатить лишь $1 с устройства, идея захвата нижнего сегмента выглядела вполне реалистичной.
Однако маркетологи Qualcomm пошли иным путем и последние пару лет пытаются удивить мир системами за $1000, в которых их топовые чипы уживаются с Windows 10…
Ссылки на чарты
Если вам интересны усредненные результаты других систем, можно воспользоваться онлайновой базой «Гикбенча». Вот прямые ссылки на автоматически обновляемые чарты для Android, iOS и PC. Там же в поиске можно вбивать любые ключевые слова (модели чипов, смартфонов) и смотреть результаты, полученные другими пользователями для данных устройств. Единственное, фильтровать неадекватные варианты придется самостоятельно.
Источник
О превосходстве Apple M1 Pro над флагманами AMD и Intel
реклама
Все начиналось с iPad Pro. Когда был выпущен этот девайс многие не верили в показатели синтетических тестов Geekbench. Поразительной мощи мобильный чип уже приближался к уровню довольно сильных игровых ПК. Но тогда никто не беспокоился об этом. Поворотным моментом стало решение самой богатой корпорации в мире Apple прекратить сотрудничество с Intel и AMD. Оказывается, яблочной организации не нужны топовые процессоры i9 и дискретные видеокарты Radeon. В 2020 году был представлен чип начального уровня М1. Он показывал невероятный уровень производительности, но все еще не дотягивал до флагманских десктопных решений.
Обновленная версия М1 Pro, M1 Max превосходит самые дорогие ноутбуки на х86 процессорах в 90% случаев. В статье рассмотрим разные сценарии: синтетические тесты, архивация, компиляция кода, кодирование видео, накладывание эффектов и прочее. В большинстве тестов М1 «втаптывает в землю» Ryzen 9, Intel i9 последних поколений.
Кратко о Pro и Мах версиях
реклама
Обновленные чипы получили большее количество процессорных ядер и значительное усиление графического адаптера – доступны модификации на 16 и 32 GPU cores. Стоит отметить унифицированную пам’ять, которая используется как в качестве ОЗУ, так и для графического чипа.
Цены не маленькие, но не выше чем Apple выпускала свои продукты на Intel. Но в этом поколении пользователи получают невероятную производительность в сравнении с лучшими х86 аналогами.
реклама
Стоимость схожих по мощности ноутбуков на AMD/Intel не сильно отличается. Еще недавно это казалось не возможным: пользователь получает тонкий и автономный ноутбук премиального класса, который оказывается производительней любых более громадных и конкурентов, живущих от батареи в 3-10 раз меньше.
Apple M1 Pro в синтетике
В данном сравнении приведены результаты тестирования чипа M1 Pro, который имеет идентичную M1 Max производительность центрального процессора. Старшая модель отличается усиленным графическим ускорителем и поддержкой до 64Гб памяти. Но даже M1 Pro с легкостью обходит конкурентов в большинстве сценариев.
Флагманский ноутбучный чип AMD Ryzeon 9 5900HX не дотягивает до показателя нового ARM детища от Apple. О Ryzen 5, 7 серии говорить нет смысла – они находятся почти на одном уровне с бюджетным М1 2020 года.
реклама
Однопоточная производительность решает в большинстве типичных задач офисного характера и это тест приблизительно отражает скорость обработки скриптов в браузере, файловых документов и прочее. Флагманский камень i9-11980HK лишь на несколько баллов обходит конкурента (теперь уже мобильные чипы Apple можно смело называть конкурентами самых дорогих процессоров Intel/AMD.
Apple M1 Pro vs Ryzen/Intel в реальных задачах
Обработка видео с помощью центрального процессора отражает немного иную ситуацию. Это редкий случай, где M1 Pro уступает многопоточным процессорам Ryzen.
В Blender 2.9x «айпадовский» процессор опять опережает Ryzen 9 5900HX при рендере на CPU. Intel i7 10 и 11 поколений и вовсе находятся вне конкуренции. Видимо рассказы на презентации о тотальном превосходстве над Intel не были излишними.
Этот тест крайне актуальный для программистов. М1 компилирует код на 65% быстрее Ryzen 9 5900HX и i9-11980HK. А еще говорят в народе: «время не купишь».
Математические вычисления не проходят так гладко. Оптимизация программы хромает и в результате M1 Pro оказывается на уровне i7-1165G7, перевес над которым в других тестах достигает двух- или трехкратных значений.
Работа в офисных приложениях с M1 Pro находится приблизительно на том же уровне, что и Ryzen 9 5980HS, i7-10870H. Новинка Apple немного уступила Intel Core 11 поколения.
Еще один тест, где Apple не оставляет шансов своим х86 конкурентам. 10 ядерный мобильный чип с легкостью обходит 16 поточные флагманы AMD Ryzen 9. Разница в скорости обработки данных достигает почти двукратного значения в сравнении с топовым APU Ryzen 7 5700U.
Конвертация PDF файлов в PNG формат занимает меньше всего времени на «улучшенном iPad’овском процессоре». М1 Pro прилично быстрее всех флагманов Intel/AMD.
Есть и вовсе неоптимизированные программы, которые работают ужасно на новом чипе. Подобное было на релизе М1 в 2020 году, но большинство разработчиков кинулись оптимизировать свой софт для перспективного рынка Mac OS.
PugetBench в Adobe Premiere Pro 2022 снова расставил все на свои места. М1 Pro не оставляет шансов умирающей х86 архитектуре.
В значении ‘Export Score’ новинка немного проигрывает, но этот тест очень показательный и демонстрирует, что даже не флагманский M1 Pro на 5-10% медленнее обрабатывает видео чем комбинация из самого мощного ноутбучного процессора и дискретной видеокарты RTX3070. При этом потребление энергии до двух раз меньше. Учтите, это M1 Pro, а не флагманский M1 Max, в котором графический ускоритель в 2 раза мощнее.
Воспроизведение видео при обработке показывает уже типичную картину – M1 Pro быстрее всех х86 аналогов с RTX видеокартами.
Тест Gigapixel AI позволяет х86 процессорам урвать первенство с преимуществом до 15-20%.
Тесты в видеоиграх
В Shadow of the Tomb Raider 16 ядерный графический чип M1 Pro оказывается немного медленнее RTX3050. Стоит учитывать сырую оптимизацию и возможную несовместимость новых Apple с Windows играми. Можно предположить, что флагман M1 Max будет как минимум на уровне десктопной RTX2060 или ноутбучной RTX3060.
В Metro: Exodus новинка легко обходит Core i7-11800H с RTX3050.
Потребление энергии
При максимальной нагрузке потребление энергии в среднем составляет 40Вт. Невероятный показатель для звания самого производительного сверхтонкого ноутбука в мире.
Итоги
У компании Apple достаточно денег, чтобы выкупить AMD, Intel и NVIDIA вместе взятых, но антимонопольный комитет не позволит провернуть подобное. Это и к лучшему. Эти деньги организация вкладывает в разработку собственных чипов. Фирма выделяет средств больше чем любая другая корпорация в этом направлении.
Не удивительно, что рынок в итоге получил самые производительные ноутбучные процессоры в мире с минимальным тепловыделением. Apple на этом не останавливается и готовится к завоеванию рынка десктопных компьютеров.
Учитывая темпы развития, невероятный потенциал и оптимизацию у них есть все шансы в ближайшие 5-10 лет в прямом смысле отправить в анналы истории все достижения Intel, AMD и NVIDIA.
Источник
Почему чип Apple M1 такой быстрый?
Опыт использования новых маков с М1 начинает расставлять точки над i. Эти чипы быстрые. Очень быстрые. Но почему? В чем магия?
Я смотрел видео на Youtube, где автор купил iMac в прошлом году максимальной конфигурации. Машина с 40+ Gb ОЗУ стоила ему около 4000$. Он смотрел с недоверием, как его гипердорогой iMac был разнесен в пух и прах новеньким Mac mini с М1 на борту, который стоил около 700$.
В реальном мире, тест за тестом, макбуки с М1 не просто превосходят топовые компьютеры Intel прошлых поколений. Компьютеры Mac просто уничтожают их. С недоверием люди стали спрашивать, как такое возможно?
Если вы не один из этих людей, то вы пришли в правильное место. Здесь я расскажу простыми словами, что же такого сделали Apple с их М1. Особенно многих интересуют следующие вопросы:
В чем техническая причина того, что чип М1 такой быстрый?
Сделали ли Apple нечто экзотическое, чтобы добиться такого эффекта?
Легко ли будет Intel и AMD сделать то же самое, чтобы оставаться в гонке?
Конечно, вы пробовали гуглить эти вопросы. Если вы попытаетесь понять, что сделали Apple за поверхностными пояснениями, вас очень быстро завалит обилием технического жаргона. Например, “М1 использует блоки декодирования (very wide instruction decoders)”, “огромный буфер переупорядочивания (reorder buffer, ROB)” и т.д. Если вы не компьютерный гик, то подобные термины будут для вас просто чепухой.
Чтобы полностью погрузиться в тему, рекомендую к прочтению мою статью “What Does RISC and CISC Mean in 2020?“. В статье я объясняю, что такое микропроцессор CPU, а также разбираю концепции:
архитектура набора команд ISA
работа конвейера (Pipelining)
архитектура хранения и загрузки (load/store)
Микрокод vs микро-операции
Но если вы нетерпеливы, я опишу здесь кратко материал, достаточный для понимания этой статьи.
Что такое микропроцессор CPU?
Обычно, когда мы говорим о чипах от Intel или AMD, мы подразумеваем центральный процессор CPU. Как я уже писал в своей статье “RISC vs CISC”, процессор загружает инструкции из памяти, а затем каждая из них выполняется последовательно.
Очень простой RISC чип, не М1. Инструкции перемещаются из памяти по голубым линиям в регистры. Декодер определяет, чем является каждая инструкция, и активирует различные части CPU через красные линии. ALU складывает и отнимает числа из регистров.
CPU на самом базовом уровне — это устройство с несколькими именованными ячейками памяти, называемыми регистрами, и некоторым количеством вычислительных юнитов, названных арифметико-логическими устройствами ALU. ALU выполняет сложение, вычитание и другие простые математические операции. Тем временем, эти устройства лишь соединены с регистрами CPU. Если вы хотите сложить два числа, то нужно сначала их получить из памяти, а затем положить в регистры. Ниже приведено несколько примеров типичных инструкций, которые и RISC процессор, и М1 В том числе выполняет:
Здесь r1 и r2 — это регистры, о которых я говорил ранее. Современные RISC процессоры не способны выполнять операции над числами, которых нет в регистрах. Если даже числа лежат в оперативной памяти, то они все равно недоступны для CPU. Сначала их нужно поместить в два соответствующих регистра. В примере выше мы сначала сохраняем число из ячейки 150 в оперативной памяти в регистр r1 , затем делаем то же самое для числа из ячейки 200 и сохраняем в регистре r2 . Только после этого числа могут быть сложены инструкцией add . 
Старый механический калькулятор с двумя регистрами: регистр для хранения результата (the accumulator) и регистр входящей информации. Современные CPU имеют больше дюжины регистров и они цифровые, а не механические.
Концепция регистров стара. Например, на этом старом калькуляторе регистр — это механизм, который удерживает число, используемое в операции. Прямо как настоящий кассовый аппарат. Регистр — это “расположение”, где вы регистрируете входящее число.
M1 — это не центральный процессор
Очень важная вещь, которую нужно запомнить: М1 — это не только CPU. Это система множества чипов, лежащих в одной кремниевой обертке. CPU же — это один из этих чипов. Технически, М1 — это весь компьютер на одном чипе. Он содержит CPU, графический процессор GPU, память, контроллеры I/O и множество других вещей, делающих компьютер компьютером. Это мы называем системой на чипе (system on the chip, SoC).
М1- система на чипе. Это значит, что все необходимое для компьютера — уже на чипе.
Сегодня, если вы покупаете чип — Intel или AMD — фактически вы покупаете большое число микропроцессоров в одной обертке. В прошлом у компьютеров было несколько физически отдельных чипов на материнской плате.
Пример материнской платы. Память, CPU, графическая карта, контроллеры входа/выхода, сетевая карта и множество других компонентов присоединены к материнской плате для связи друг с другом.
Сегодня у нас есть возможность поместить множество транзисторов на один чип, поэтому и Intel и AMD стали производить чипы со множеством микропроцессоров. Мы называем их “ядрами” процессора. Одно ядро, по сути, это полностью независимый чип, который может читать инструкции и исполнять их. Микрочип с несколькими CPU.
Долгое время это было сутью игры за повышение мощности: просто добавь еще ядер в CPU. Но кто-то взбунтовался в рядах производителей: один игрок на рынке чипов пошёл по своему пути.
Не такой уж засекреченный неоднородный способ вычислений от Apple
Вместо того, чтобы следовать тренду добавления ядер в процессор, Apple выбрала иную стратегию: они стали добавлять больше специализированных процессоров для выполнения конкретных задач. Преимущество заключается в том, что специализированные чипы, как правило, существенно быстрее выполняют свою задачу, затрачивая меньше энергии, чем CPU общего назначения.
Об этом способе было известно давно. Много лет уже как специализированные чипы GPU выполняют определенную задачу — обработку графики. Графические процессоры от Nvidia и AMD делают это гораздо быстрее, чем мог бы делать центральный процессор.
Apple лишь пошла более радикально по этому пути. Вместо множества ядер общего назначения, чип М1 внутри содержит:
Центральный процессор CPU — “мозги” системы на чипе. Выполняет большинство задач компьютера и программ
Графический процессор GPU — используется в обработке графики и изображения, в том числе и в играх.
Блок обработки изображений ISP — используется для увеличения производительности во время работы приложений по обработке графики.
Обработчик цифровых сигналов (digital signal processor, DSP) — Выполняет более сложные математические функции, чем центральный процессор, включая декомпрессию музыкальных файлов.
Блок нейронной обработки (Neural processing unit, NPU) — используется в топовых смартфонах, чтобы ускорить работу машинного обучения и AI.
Кодировщик видео (Video encoder/decoder) — для энергоэффективного преобразования видео разных форматов.
Блок безопасности (Secure Enclave) — шифрование, аутентификация и безопасность.
Блок единой памяти (Unified memory) — позволяет модулям чипа взаимодействовать максимально быстро.
Это только часть объяснения, почему люди, которые занимаются видео и графикой на компьютерах с процессором М1, отмечают прирост производительности. Дело в том, что задачи выполняются на том процессоре, который для этого был создан. Это позволяет относительно недорогому Mac mini с М1 на борту обработать графику, даже не вспотев, тогда как дорогой iMac с Intel запускает все свои кулеры охлаждения на полную мощность и все равно отстает от М1. Прочесть больше о неоднородном (heterogeneous) вычислении можно здесь: Apple M1 foreshadows Rise of RISC-V.
Синие блоки — это чипы центрального процессора, а зелёные — графического.
В чем особенность архитектуры Единой Памяти (UMA) от Apple?
Я немного лукавлю, когда говорю “Архитектура Единой Памяти (Unified Memory Architecture, UMA)”. Чтобы объяснить почему, вернемся на пару шагов назад.
Долгое время недорогие компьютеры имели центральный процессор с интегрированным графическим чипом на одной матрице. Он работал медленно. В прошлом, когда говорили “интегрированная графика”, подразумевали “слабая графика”. Эти процессоры были слабы по нескольким причинам. Первая заключается в том, что память для центрального процессора и графического была разделена. Если данные от центрального процессора должны были быть переданы графическому, то он не мог просто сказать “На, держи и используй”. CPU должен был явно скопировать этот блок данных в память графического процессора.
CPU не требует большого объема данных, но хочет получать их быстро.
CPU и GPU работают с памятью по-разному. Позволим себе привести аналогию из жизни: CPU хочет, чтобы официант подал блюдо как можно быстрее, и маленькие порции не заботят процессор. Представьте себе небольшой французский ресторан, где официанты катаются на роликах.
Так графический процессор хочет видеть порцию данных. Чем больше, тем “веселее”.
Графический процессор, напротив, жаждет большие порции и готов подождать ради этого. Он пожирает огромнейшие куски данных, потому что этот процессор — множество чипов, которые обрабатывают данные параллельно. Представьте американскую фастфуд-закусочную, где нужно немного подождать, пока прикатят тележку еды к твоему столику.
Зная разницу в способах работы с памятью у CPU и GPU, это было не самой лучшей идеей размещать их на одной плате. GPU постоянно “голодает”, пока ему подают маленькие порции методом французской сервировки. Как результат, не имело смысла ставить производительные GPU на один чип вместе с CPU. Так самые маленькие порции данных вполне могли быть “разжеваны” слабым графическим процессором.
Вторая причина слабой графики — производимое тепло мощными GPU. По этой причине нельзя было их интегрировать с CPU, не получив проблем с охлаждением. Большинство графических дискретных карт выглядит так, как карта ниже: огромные монстры с массивными кулерами. У них есть специально выделенная память, чтобы обрабатывать огромные блоки данных.
GeForce RTX 3080.
Поэтому эти карты выдают высокую производительность. Однако у них есть ахиллесова пята: если они хотят получить какие-либо данные из памяти CPU, то эти данные передаются по медным путям, называемым шиной PCIe. Попробуйте после долгой работы попить воду через тонкую соломинку. Она быстро дойдет до вашего рта, но пропускная способность будет недостаточной.
Блок единой памяти (UMA) Apple пытается решить эти проблемы без недостатков старомодной общей памяти. Они достигают этого следующим образом:
Больше нет специально ограждённых блоков памяти для CPU или GPU. Память доступна для обоих процессоров. Они используют одни и те же ячейки памяти, копирования больше нет.
Apple ставят память, которая способна выдавать большие порции данных быстро. В техническом лексиконе это называется низкой задержкой и высокой пропускной способностью (low latency and high throughput). Как следствие, соединения между двумя раздельными областями памяти не требуется.
Apple сумели снизить потребление энергии у GPU, поэтому относительно производительные графические процессоры теперь можно интегрировать на чип без перегрева. Процессоры ARM производят в целом меньше тепла, соответственно графический чип может позволить себе нагреться сильнее до допустимых температур, чем такой же чип на матрице от Intel или AMD.
Некоторые скажут, что единая память UMA — это не новинка, и это будет правдой. Различные системы в прошлом имели схожую архитектуру, однако в них, во-первых, требования к памяти не так сильно отличались, как требования от CPU и GPU. Во вторых, то, что Nvidia называют единой памятью, на самом деле не совсем таковой являлось. В мире Nvidia “единая память” — это когда программное обеспечение и железо работают так, чтобы бесшовно копировать данные между раздельными областями памяти CPU и GPU. С точки зрения программистов единая память от Apple и от Nvidia работают одинаково, но под капотом совершенно разная архитектура.
Конечно, есть и обратная сторона такой архитектуры памяти Apple. Обеспечение широкой пропускной способности памяти требует полной интеграции, что подразумевает отсутствие возможности апгрейда железа. Apple стремится минимизировать риски, в том числе работая над увеличением скорости работы SSD дисков.
Так компьютеры Apple работали с видео до появления архитектуры единой памяти. Одна из опций — использовать внешнюю видеокарту, работающую по порту Thunderbolt 3. Есть разные предположения о том, как эта же система будет работать в будущем с М1.
Если системы SoC такие “умные”, то почему Intel и AMD не следуют той же стратегии?
Что же такого Apple делает, что не могут делать другие производители? В некоторой степени, делают. Многие производители добавляют все чаще специализированные со-процессоры. AMD тоже начали ставить более мощные графические процессоры в свои чипы, а также они постепенно двигаются к некоторой форме “систем на чипе”, называемых Accelerated Processing Unit APU, которые являются тоже комбинацией CPU и GPU на одном чипе.
APU от AMD Ryzen. CPU и GPU (Radeon Vega) расположены на одной матрице, но этот чип все равно не содержит других со-процессоров, IO контроллеров и единой памяти.
Есть еще одна важная причина, почему AMD не спешат. Чип SoC — это весь компьютер на одном чипе. Это затрудняет бизнес для нынешних производителей компьютеров вроде HP или Dell. Позвольте мне прояснить позицию: если весь ваш бизнес заточен под производство двигателей для машины, то это будет необычно начинать производить и продавать целые машины.
В случае ARM же, напротив, это не проблема. Производители компьютерных деталей могут просто купить лицензию на производство ARM и другие чипы и производить SoC с теми компонентами, которые они считают полезными. Затем они отправят готовые макеты на завод производства полупроводников вроде GlobalFoundries или TSMC, которые уже сегодня производят чипы для AMD и Apple.
Завод по производству полупроводников TSMC в Тайване. Завод производит чипы для AMD, Apple, Nvidia и Qualcomm.
Здесь возникает большая проблема, связанная с бизнес-моделью Intel и AMD. Их модель основана на продаже процессоров общего назначения, которые покупатели просто вставляют в материнские платы. Любой желающий может просто купить материнскую плату, память, CPU и видеокарту от любого производителя и собрать их в одном компьютере.
Однако мы уже уходим от этого подхода. В новом мире SoC вы не собираете компоненты от разных производителей. Вместо этого вы собираете интеллектуальную собственность на производство. Вы покупаете чертежи видеокарты, CPU, модема, IO контроллеров и других деталей компьютера от разных вендоров и интегрируете их в собственном SoC. Сейчас ни Intel, ни AMD, ни Nvidia не планируют продавать лицензию на интеллектуальную собственность на производство SoC Dell, HP или любому другому производителю.
Конечно, Intel и AMD могут начать продавать произведенные SoC. Но из каких компонентов они будут состоять? У сборщиков компьютеров есть свои соображения на этот счет. В итоге эта ситуация может перерасти в конфликт между Intel, AMD, Microsoft, потому что произведенные чипы нуждаются и в программном обеспечении.
Для Apple все просто — они контролируют весь процесс производства. Они предоставляют, например, библиотеку Core ML для машинного обучения. Сторонние разработчики не задумываются даже, работает ли их код с Core ML на CPU от Apple или Нейронном чипе (Neural Engine).
Гонка наращивания мощности CPU
Неоднородные вычисления (heterogeneous computing) — это только лишь одна из причин. Ядра общего назначения процессора М1, называемые Firestorm, действительно быстры. Это главное отличие от ARM процессоров прошлого, которые были слабы по сравнению с процессорами Intel и AMD.
Firestorm обгоняет большинство процессоров Intel и почти обходит самый быстрый чип от AMD — Ryzen. Народная мудрость гласит, что этого никогда не должно произойти. Прежде чем поговорить о том, что делает Firestorm таким быстрым, важно понять концепции увеличения мощности процессора. В принципе, вы можете комбинировать два пути увеличения скорости:
Быстрее выполнять инструкции в последовательности.
Выполнять инструкции параллельно.
В далеких 80-х это было легко. Просто увеличьте частоту процессора, и инструкции будут выполнены быстрее. Цикл процессора — это когда чип выполняет какую-то операцию. Но эта операция может быть очень маленькой. Таким образом, инструкция может потребовать несколько тактов выполнения, так как состоит из нескольких мелких операций.
Тем не менее, сегодня увеличение частоты процессора становится почти неосуществимым. Это тот самый “Конец закона Мура”, о котором люди твердят последнее десятилетие. Таким образом, у нас остаётся только увеличивать количество выполняемых инструкций в параллели.
Много ядер или процессоры “исполнения вне очереди ОоОЕ”?
Как уже говорили, есть две опции:
Добавить ядер в процессор, чтобы каждое работало в параллели и независимо.
Научить каждое ядро выполнять несколько инструкций параллельно.
С точки зрения разработчика, добавить ядер — это как добавить потоки (thread) выполнения. Каждое ядро работает как физический поток. Если вы не знаете, что такое поток, то можете воспринимать его как процесс, который выполняет какую-то задачу. С двумя ядрами CPU может выполнять две задачи параллельно в два потока. Задачей же может быть две какие-либо программы или одна и та же программа, запущенная дважды. Каждый поток имеет свое “место” в последовательности программных инструкций и временно хранит результаты выполнения.
В принципе, процессор может иметь одно ядро и выполнять программы в несколько потоков. В таком случае процессор прерывает один поток и сохраняет его состояние перед переключением на другой поток. Позже он переключится назад. Такая схема более-менее работоспособна, пока процессор не начинает часто переключаться из-за:
ожидания ввода данных пользователем
данных, которые приходят медленно из-за плохого интернета и других подобных случаев.
Это называется логическими потоками. Физические же потоки используют физические ядра для ускорения работоспособности.
Для разработчиков проблему составляют логические потоки, ведь под них необходимо специально писать мультипоточный код. Это сложно, а в прошлом это было едва ли не самой сложной задачей. Тем не менее, сервер со множеством логических потоков — это не сложно: каждый веб-запрос пользователя обрабатывается отдельным потоком. Таким образом, множество физических ядер дает ощутимое преимущество. Особенно для облачных вычислений.
Процессор ARM Ampere Altra Max имеет на борту очень много физических ядер и был разработан специально для облачных решений.
Вот поэтому мы и видим процессоры ARM с безумными 128-мью ядрами. Этот чип был специально разработан для “облаков”. Вам не нужна сумасшедшая производительность от одного ядра, потому что в облачных сервисах важно наличие как можно большего количества физических ядер на 1 Ватт мощности, чтобы обработать как можно больше запросов пользователей. Более подробно о многоядерных процессорах можно прочесть в статье Are Servers Next for Apple?.
Apple же на противоположной стороне спектра устройств. Они производят устройства для одного пользователя, и множество ядер — это небольшое преимущество. Покупатели ведь используют свои компьютеры для игр, видеоредакторов и разработки программ. Они хотят девайсы с мощной графикой.
Программы для пользовательского рынка обычно не используют много ядер компьютера. Например, игры работают прекрасно и на восьмиядерных процессорах, а 128 ядер — это трата ресурсов. Тут лучше меньше ядер, но более мощных.
Как работают процессоры Out-of-Order
Чем больше параллельно выполняемых инструкций, тем быстрее процессор. Принцип выполнения Out-of-order execution (ОоОЕ) заключается в том, что инструкции выполняются параллельно и при этом эта параллельность незаметна разработчикам программного обеспечения. Об альтернативном решении можно почитать здесь: Very Long Instruction Word Microprocessors.
Разработчики не должны писать код, чтобы воспользоваться преимуществами ОоОЕ. С точки зрения разработчика это выглядит так, как будто каждое ядро работает быстрее. Прошу заметить, что это не прямая альтернатива физическим потокам. Можно использовать оба варианта в зависимости от проблемы, которую необходимо решить. Чтобы понять, как работает ОоОЕ, нужно понимать принцип работы памяти компьютера. Запрашивание данных из одного расположения работает медленно, а процессор способен запрашивать данные параллельно. Следовательно, передача 1 байта информации займет столько же времени, сколько и 100 следующих байт.
Роботы на складе онлайн-магазина Komplett.no, Норвегия.
Вот вам аналогия: посмотрите на подъемники на складе, например, на этих красных роботов на фото. Постоянные перемещения по пространству и быстрое взятие объектов из близлежащих ячеек хранения. Память компьютера похожа на это. Вы можете вытащить информацию очень быстро, если она лежит в близких друг к другу ячейках.
Данные пересылаются по шине данных (databus). Это похоже на дорогу или трубу между памятью и компонентами процессора, куда данные отправляются. В реальности мы имеем даже медные дорожки на плате. Чем шире шина, тем больше байт одновременно мы можем передать.
Процессор получает блок инструкций для выполнения полностью, но выполняет их одну за другой. Современные процессоры могут выполнять их по принципу Out-of-Order-execution. Это значит, что процессор анализирует инструкции на предмет зависимости между операциями.
Умножение — довольно тяжелая операция, она требует несколько тактов процессора. Вторая операция из последовательности выше вынуждена подождать, когда будет выполнена первая операция, так как ей требуется ее результат. Но третья операция не зависит от первых двух. Следовательно, процессор с ОоОЕ может выполнить третью операцию параллельно первым двум в отдельном потоке.
В жизни инструкций может быть тысячи, но процессор все равно способен анализировать зависимости между ними. Процессор смотрит на входные данные каждой инструкции, зависят ли они от результатов других инструкций. Например, инструкция add r4, r1, 5 зависит от значения в регистре r1 , которое является результатом операции умножения. Все эти связи складываются в проработанный граф операций, с которым CPU вполне справляется: узлы — это инструкции, а линии соединения — регистры.
CPU анализирует этот граф связей, чтобы понять, какие инструкции можно выполнять параллельно, а какие — отложить, так как их входные данные еще не были получены. Большинство операций будет выполнено еще до того, как процессор обозначит их завершенными. Со стороны же всё выглядит так, как будто инструкции были выполнены в том же порядке, в котором они были поданы процессору.
В принципе, у вас есть две формы параллелизма: одну разработчики программ должны учитывать при написании кода, а вторая — неявная, которая полагается на множество транзисторов, выполняющих их на CPU с помощью магии Out-of-Order-Execution. Для небольших процессоров с малым количеством транзисторов это не будет работать эффективно.
Именно магия OoOE и делает процессор М1 таким быстрым. На данный момент этот процессор быстрее, чем любое решение от Intel или AMD, и все складывается так, как будто они и не догонят никогда Apple. Чтобы понять почему, мы должны погрузиться немного в детали.
Инструкции ISA и микро-операции
Я пропустил некоторые детали о работе ОоОЕ. Программы, загруженные в память, были собраны для конкретной архитектуры процессора ISA. Например, для x86, ARM, PowerPC, 68K, MIPS, AVR и других.
Для процессора x86 операция извлечения числа из памяти выглядит так:
У x86 регистры названы как ax , bx , cx и dx (мы ведь помним, что это именованные ячейки памяти в CPU). Такая же операция для процессора ARM будет выглядеть так:
Процессоры Intel и AMD построены на x86 архитектуре, а М1 от Apple — ARM. Внутри эти процессоры работают совершенно иначе, но программисты этого не видят. Мы описываем их работу микро-операциями (micro-ops, μops). С этими инструкциями железо Out-of-Order и работает.
Но почему ОоОЕ не может работать с обычным машинным кодом? Это потому что процессор вынужден хранить различную дополнительную информацию к инструкциям, чтобы иметь возможность выполнять их параллельно. Таким образом, обычная ARM инструкция может быть длиной 32 бита максимум (последовательность из 32 цифр: 0 и 1), а инструкции из микро-операций могут быть гораздо длиннее. Они содержат информацию о порядке исполнения.
Как вы помните, мы выполняем операции 01 и 03 параллельно. И обе операции хранят результат своей работы в регистре r1 . Если мы запишем результат 03 перед тем, как начнет выполняться операция 02, то вторая операция получит неверные входные данные. Следовательно, соблюдать очередность исполнения очень важно. Очередность выполнения хранится вместе с самой микро-операцией, а также хранятся и зависимости операций друг от друга.
Поэтому мы не можем написать программу специально под микро-операции, так как они содержат очень много дополнительной специфичной информации. Для двух различных ARM процессоров последовательность микро-операций может быть очень разной.
CPU может выполнять микро-операции очень быстро, потому что микро-операция — это одинарная очень простая операция. Обычно инструкции ISA могут быть очень сложными. Они состоят из множества команд, которые переводятся в микро-операции. Само слово “микро” происходит от сути операции, а не занимаемой ею памяти.
Для процессоров CISC зачастую нет других решений, кроме микро-операций, формирующих длинные последовательные цепочки. Это исключает использование ОоОЕ. Процессоры RISC же могут выбирать. Например, некоторые небольшие ARM процессоры не используют микро-операции. Но также они и не выполняют код с помощью ОоОЕ.
Почему выполнение ОоОЕ процессорами Intel и AMD уступает чипу М1?
Вы, может быть, удивлены, почему это имеет значение? Почему эта деталь важна для понимания, из-за чего Apple превосходит Intel и AMD? Суть заключается в том, как быстро вы сможете заполнить буфер микро-операций. Если у вас большой объем памяти, то ОоОЕ сможет быстрее найти независимые цепочки инструкций, которые могут быть выполнены параллельно. Но это имеет мало смысла, если у вас не получается быстро заполнять освободившееся пространство памяти после выполнения инструкций. Способность быстро заполнять буфер полагается на способность быстро нарезать машинный код на микро-операции. Устройства, которые этим занимаются, называются декодерами (decoder).
И тут мы, наконец-то, видим киллер-фичу процессора М1. Самый большой и “подлый” процессор Intel имеет на борту 4 декодера. А чип М1 — неслыханные 8 декодеров — значительно больше, чем кто бы то ни было до этого. Так можно заполнять буфер гораздо быстрее. Помимо этого, буфер для инструкций у чипа М1 больше в три раза, чем у среднего чипа в индустрии.
Почему Intel и AMD не могут добавить больше декодеров?
Здесь мы можем заметить “месть” процессоров RISC и начинаем понимать, почему чип М1 построен на базе ARM архитектуры. Видите ли, инструкция для процессора x86 может быть от 1 до 15 байтов длиной. Инструкция для RISC же имеет постоянную длину — 4 байта. Почему это важно для нас? Дело в том, что разделение потока байтов на ограниченные инструкции, чтобы “накормить” ими восемь декодеров процессора параллельно, становится тривиальной задачей, если инструкции всегда одной и той же длины.
Тем не менее, декодеры в x86 не знают, где начнется следующая инструкция. Получается, что декодерам приходится анализировать и длину инструкций. Intel и AMD решила эту задачу топорно: декодер постоянно пытается определить, является ли выполняемая операция начальной точкой инструкции. Таким образом, процессор совершает очень много неудачных попыток. Это создает очень запутанную и сложную стадию декодирования, и из-за этого действительно сложно добавить больше декодеров. Но для Apple же это становится тривиальной задачей. Фактически, 4 декодера — это максимальное число возможных декодеров для Intel и AMD.
Это и есть главная причина, почему М1 ядра Firestorm могут обрабатывать в два раза больше инструкций, чем Intel и AMD, на той же частоте процессора.
Одни могут возразить, что инструкции CISC содержат больше микро-операций. х86 инструкция превращается в две микро-операции, тогда как ARM инструкция — это одна микро-операция. Затем 4 декодера х86 обработают такое же количество микро-операций за такт, какое 8 декодеров у CPU. К сожалению, такое происходит редко в жизни. Очень оптимизированный код для x86 редко использует сложные CISC инструкции, которые могли бы быть переведены во множество микро-операций. Фактически, большая часть этих инструкций будет переведена в одинарные микро-операции.
Тем не менее, эти простые инструкции х86 не помогают Intel и AMD. Несмотря на то, что инструкции длиной в 15 байтов — редкость, декодеры все равно должны быть готовы их обработать, и это и мешает производителям добавлять больше декодеров.
Но ядра процессора AMD Zen3 ведь быстрее, так?
Насколько я помню из последних бенчмарков, новейшие ядра AMD Zen3 немного быстрее, чем ядра М1 Firestorm. Но здесь есть небольшой трюк — ядра Zen3 работают на частоте 5 Гц, тогда как Firestorm работают на частоте 3.2 Гц. Ядра Zen3 лишь немного превосходят Firestorm, несмотря на то, что работают на частоте выше на 60%.
Но почему же Apple тоже не повышает частоту процессора? Ответ прост — чип станет горячее. Это одна из особенностей Apple — их компьютеры не требуют сильного охлаждения, в отличие от Intel и AMD. В сущности, ядра Firestorm превосходят Zen3, тогда как Zen3 вынужден оставаться в игре за счет гораздо большего перегрева. Apple просто не выбирают этот путь.
Если Apple захотят больше мощности, они добавят больше ядер, и это позволит дать больше производительности, не увеличивая сильно потребление энергии.
Будущее
Похоже, что AMD и Intel загнали себя в угол по двум фронтам:
У них нет бизнес-модели, чтобы так же легко продолжать стратегию разнородных вычислений (heterogenous computing) и следовать SoC разработкам.
Их устаревший набор инструкций CISC теперь преследует их, не позволяя улучшать мощность Out-of-Order.
Это не значит, что игра окончена. Они могут увеличивать частоту процессора и применять больше охлаждения, подбрасывать больше ядер и наращивать объем кэша CPU. В любом случае, оба производителя в невыгодном положении. Intel даже хуже, ведь они на данный этап официально проигрывают гонку производительности, а их GPU очень слабы для интеграции в чипах SoC.
Проблема с подбрасыванием большего числа ядер заключается в том, что ядер становится слишком много. Это хорошо только для серверных станций. Тем не менее, Amazon и Ampere атакуют рынок с их монструозными 128-ядерными процессорами. Это схоже с ситуацией, когда вы боретесь на восточном и западном фронте одновременно.
К счастью для Intel и AMD, Apple не продают свои чипы на рынок, поэтому пользователи вынуждены смириться с тем, что производители чипов им предлагают. Покупатели могут лишь спрыгнуть с корабля, но этот процесс медленный. Вы не сможете быстро сменить платформу, так как инвестировали в нее уже немало. А молодые профессионалы с деньгами, которые не успели еще выбрать свою платформу, могут инвестировать все больше в Apple, укрепляя свои позиции на премиум рынке и, следовательно, свои акции на рынке ПК.
UPD от переводчика: статья вызвала бурное обсуждение, что не может не радовать. Очень много комментариев с более глубоким пояснением, как процессоры работают. Также в комментариях привели много полезных ссылок:
Is Apple silicon ready? — покажет, какие программы уже оптимизированы для М1
Автор оригинальной статьи не привел ссылку на то самое видео-сравнение, но тут можно посмотреть сравнение Mac mini с М1 vs Mac Pro
Источник