30 subscribers

Почему процессоры Apple M1 для ноутбуков превосходят последние модели Intel Core и AMD Ryzen? Разбираемся в деталях.

2,4k full reads

Ударный старт

Когда компания Apple летом 2020 года впервые анонсировала переход Mac-ов на собственные процессоры с архитектурой ARM многие отнеслись к этому скептически.

“Нельзя делать начинку для ПК из комплектующих для iPhone” - волновались профессиональные пользователи “тяжелых” приложений, любители ПК-игр и юзеры, привыкшие открывать в браузере одновременно по 50 вкладок.

Но коммерческие продукты - Apple MacBook Pro Late 2020 и MacBook Air Late 2020 - вышли.

И первые же тесты повергли индустрию в шок: ноутбуки не только не уступали мобильным собратьям на базе архитектуры #x86, но и превосходили их в одних тестах за другим. И по общей производительности на синтетических тестах и по реальной на широчайшем спектре приложений.

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

Причем это касалось как индивидуальных приложений, так и работы в мультизадачном режиме.

“...Одновременный запуск сразу 50 приложений прошёл на #MacBook Pro с процессором M1 без каких-либо заметных лагов, тогда как ноутбуку на Intel потребовалось куда больше времени… Кроме того, модель на M1 даже не включила активное охлаждение, в то время как вариант на Intel будто начал «готовиться ко взлёту...”

“...Запуск приложений тоже происходит на новом MacBook Pro быстрее, чем на версии с процессором Intel...”

“...Открытие большого числа вкладок в Safari никак не нагрузило ноутбук на M1, тогда как вариант на Intel изрядно начал “лагать” уже на 30-й вкладке...”

“...Самым большим сюрпризом стала скорость работы в видеоредакторах. Обработка видео 1080р длительностью 30-40 минут в DaVinci Resolve на старом MacBook занимала около 40 минут. Модель на M1 справляется за 4 минуты — столько же требуется времени моему стационарному ПК с видеокартой GeForce GTX 1060...”

Фактически, впервые в истории “маководы” заговорили об играх на MacBook - а эта сторона никогда не была козырем “фруктовых” компьютеров.

Удивительно, но даже MacOS-приложения скомпилированные под x86, исполняемые в режиме динамической перекомпиляции под специальным системным ПО Rosetta 2 - показывали недурные результаты. Дело в том, что само по себе исполнение не родных программ “на лету” очень серьезно отъедает ресурсы.

(Анекдот в том, что ПО Rosetta первой версии в далеком 2006 году было предназначено для перевода приложений под RISC-процессоры IBM PowerPC на CISC-архитектуру Intel x86. Сегодня, по прошествии неполных 15 лет, Rosetta 2 помогает вернуть экосистему Mac в обратном направлении: от x86 к RISC-процессорам ARM.)

Продажи подскочили

В результате пользователи совершенно забыли о былых опасениях.

Новые MacBook стали товаром “черной пятницы” 2020-го пандемийного года. Продажи MacBook достигли уровней, ранее этими дорогостоящими ноутбуками ни разу не достигнутых. В том числе и у нас в России.

Так, весной этого года MacBook Air Late 2020 на M1 впервые оказался в десятке самых продаваемых продуктов на отечественном рынке. И это при том, что средняя цена “яблочного” устройства превосходит большинство соседей по хит-параду раза этак в три.

В чем тайна?

Так в чем же великая тайна процессоров, изначально разрабатывавшихся для iPhone и iPad? Как так получилось, что гранды микропроцессорной индустрии эпохи ПК - Intel и AMD - проигрывают #ARM-чипу именно по скорости.

То что они проигрывают ему по энергоэффективности, времени автономной работы и т. п. - как бы понятно. В этом-то никто и не сомневался.

Но Photoshop и Premiere, Java и Python-разработка, Maya и 3ds Max?!.. Это потрясающе!

Не будем томить читателя, не желающего погружаться в детали. По большому счету преимущества видны в следующих направлениях:

  • Особенностях RISC-архитектуры CPU и ее применения для оптимизации процесса выполнения кода; главным образом, по части внеочередного исполнения.
  • Относительно небольшие по общей площади занимаемой на кристалле ядра CPU ARM-архитектуры, плюс продвинутый технологический процесс 5-нанометров позволяют отдать больше места на кристалле дополнительным блокам, в особенности GPU - графической подсистеме.
  • Особенность работы с памятью - UMA,также важная для GPU и других периферийных процессов.

А теперь разберемся подробнее, что же имеется в виду.

Общие характеристики

Итак, с чем мы имеем дело по части базовых характеристик. (Сразу скажем: ничего поражающего воображение мы по ним не увидим.)

8-ми или 7-ми ядерный процессор M1 имеет на борту 4 высокопроизводительных ядра FireStorm и 4 энергосберегающих Icestorm.

Почему процессоры Apple M1 для ноутбуков превосходят последние модели Intel Core и AMD Ryzen? Разбираемся в деталях.

Частоты меняются здесь в очень широких пределах, в зависимости от нагрузки: “старший” FireStorm имеет диапазон от 0,6 до 3,2 ГГц, частоты Icestorm – от 0,6 до 2,1 ГГц. (В пиковом режиме - не много, вообще-то, в сравнении с последними поколениями логики Intel/AMD, где в режиме турбо частоты могут составлять 4,5-5 ГГц.)

Однако при максимальных частотах четыре ядра Firestorm рассеивают, все вместе, до 14 Вт, а четыре ядра Icestorm – до 1,3 Вт. Будем считать, что общий TDP Apple M1 – в районе 15 Вт. У мобильных конкурентов x86, конечно, значительно выше - 35-45 Вт.

Плюс на кристалле здесь присутствует GPU, блок тензорики (нейропроцессоры), цифровой сигнальный процессор (ISP), блок аппаратной акселерации шифрования, ну и понятно, всяческие контроллеры периферийных систем.

Отдельно важно отметить, что микросхемы памяти ОЗУ конструктивно совмещены с интегральной схемой процессора. Они выполнены в едином физическом блоке. (system-n-package).

Кристалл Apple Silicon M1 с микросхемами LDDR4X
Кристалл Apple Silicon M1 с микросхемами LDDR4X

Максимальный размер ОЗУ при этом конечно фиксирован - 16 Гб. Но память реально быстрая: LPDDR4X SDRAM 4266 Mегатранзакций/с.

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

Но откуда же взялись победные реляции в плане скорости?

RISC vs. CISC

Традиционно выделяют два типа процессорной архитектуры, иначе говоря два типа системы команд (ISA- Instruction Set Architecture) - RISC и CISC.

Чтобы понять принципиальное различие между ними, освежим, как вообще работает компьютер. ЛЮБОЙ компьютер.

Процесс декодирования команд
Процесс декодирования команд

Есть команда в программе: “просуммировать два значения из ячеек M1 и M2, результат положить в M3”: SUM M1, M2, M3.

Рис.

Команда поступает на декодер команд. Декодер расшифровывает что же, собственно, написано в команде и переводит это на язык микроинструкций. Они размещаются в буфере микроинструкций. Он же буфер исполнения или буфер переупорядочивания (ROB - Re-Order Buffer).

(Оба этих блока будут крайне важны для нас для понимания преимуществ архитектуры RISC вообще и ARM-процессоров Apple Silicon в частности. Поэтому запомним эти слова: декодирование и переупорядочивание.)

Последовательность микроинструкций и указывает всем исполнительским блокам, что делать и в каком порядке.

В нашем случае нужно:

  • Достать из Памяти данные из ячеек M1 и M2 (GET M1; GET M2;); за это отвечает контроллер памяти (или контроллер шины памяти как это часто обозначают).
  • Разместить их во внутренних регистрах блока АЛУ R1 и R2 (PUT R1; GET R2;), соответственно; (АЛУ - Арифметико-Логическое Устройство).
  • Указать АЛУ что данные из нужных регистров надо сложить, а результат положить во внутренний регистр R3 (SUM R1, R2; PUT R3;).
  • Забрать результат из R3 и положить в ячейку памяти M3 (GET R3; PUT M3).

RISC - Reduced Instruction Set Computer

В прямом переводе “процессор с сокращенным набором команд”.

Но лучше сказать: “коротких”, “простых”, “фиксированных” команд. Именно это важно.

Что важно - длина команды здесь фиксирована. Число операндов - по сути ячеек памяти с которым идет обращение в процессе исполнения - постоянно.

Поэтому декодировать эту команду очень просто - блок декодера команд способен во-первых работать очень быстро, а во-вторых прост по своей внутренней конструкции.

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

Представим. Если у нас, например, 8 АЛУ, и все операции фиксированы по размеру и скорости исполнения, мы можем спокойно параллельно исполнить 8 операций, естественно, если они не перебивают друг друга - выполнение следующей не зависит от результатов предыдущей.

Кстати, чем быстрее мы декодируем команды, тем быстрее поймем - как можно их распараллелить: проанализировать алгоритм и разложить микроинструкции в буфере таким образом, чтобы логика вычислений не нарушалась, но при этом у всех иcполнительных блоков была работа. Поэтому его и называют буфером переупорядочивания (ROB).

Таким образом ISA типа RISC открывают более широкие возможности для так называемого внеочередного исполнения, следовательно распараллеливания кода.

Типичными представителями RISC-процессоров являются ARM (ныне принадл. Nvidia), IBM POWER, Oracle (Sun) SPARC, MIPS, RISC-V.

CISC - Complex Instruction Set Compute

Здесь длина инструкции, число операндов в ней, изменчиво.

Дешифрация таких команд - сложная задача. Таких блоков много в процессор не поставишь.

По сути в одну CISC команду “запихнуто” сразу несколько RISC-команд. И изначально, до декодирования, неизвестно сколько именно. CISC-команда может исполняться за несколько тактов, циклов обращения к памяти.

И пока конкретный блок АЛУ не выполнит всю эту последовательность, он не может перейти к выполнению другой команды. Это снижает возможности внеочередного исполнения и распараллеливания выполнения кода.

Есть еще одно важное отличие - регистры АЛУ в RISC неспециализированные, однотипные и их в АЛУ много. А вот в CISC они предназначены для хранения данных определенной длины. Они зависят от типа обрабатываемых данных, можно сказать. И регистров каждого из типов в АЛУ мало. (В определенных случаях данные могут вообще обходить регистры АЛУ и непосредственно поступать на вычислитель из кэш-памяти, но не будем углубляться в это.)

Классическим примером ISA типа CISC и является Intel x86, то есть классические процессоры для ПК от Intel и AMD.

Декодер и буфер команд в Apple M1

М1 - как RISC-процессор использует простые и эффективные блоки декодирования. И их здесь больше, чем у x86 процессоров - very wide instruction decoders. Существенно больше: 8 штук на ядро. И работают они быстрее.

В то время как в самых мощных чипах Intel - максимум по 4 декодера. Понятное дело: блок декодирования CISC - сложная штуковина, в отличии от простейшей конструкции в RISC.

Для Apple это открыло возможность для увеличения буфера внеочередного исполнения инструкций (ROB). Ведь со столь мощным блоком декодирования его есть чем загрузить.

Производители не указывают точный размер буфера, но по оценкам экспертов в старших ядрах Apple M1 Firestorm он составляет до 630 инструкций; и даже в младших Icestorm Icestorm оценивается до 560.

В то время как современные ядра процессоров Intel Willow Cove (для ноутбуков Core 11Gen Tiger Lake) глубина буфера достигает лишь 352. В AMD Zen 3 (Ryzen Cezanne-H) и вовсе 256.

То есть M1 тут обставляет конкурентов до 2 раз по размеру буфера. А это кратно увеличивает возможность внеочередного исполнения.

В конечном счете это мощно сказывается на итоговой производительности.

GPU и UMA-архитектура памяти

А теперь поднимемся на уровень выше - уйдем от внутреннего устройства CPU и рассмотрим чип M1 как SoC - систему на чипе включающую также интегрированные блоки GPU.

Почему процессоры Apple M1 для ноутбуков превосходят последние модели Intel Core и AMD Ryzen? Разбираемся в деталях.

SoC Intel и AMD и интегрированная графика

Прежде чем понять в чем достижение Apple, надо понять суть опыта производителей x86-процессоров в направлении интегрированной графики.

Да, конечно, процессоры Intel и AMD для массовых устройств на сегодня - также вполне полноценные SoC. Они используют интегрированную графику. Причем в случае AMD Radeon она традиционно считается достаточно сильной. (В сопоставлении с Intel.) Да и Intel не стоит тут на месте, скажем начиная с последнего поколения Core компания предложила новый дизайн GPU Intel Xe; чипы этой архитектуры использованы и в фирменных дискретных адаптерах “синих”.

Но интегрированная графика Intel и AMD - все равно слишком слаба. В целом в архитектуре чипа она играет роль как бы “неродного ребенка”. Фактически оба производителя заявляют - хотите настоящей производительности на “тяжелых” графических приложениях и играх - берите дискретную видеокарту.

Все в системе рассчитано на то, чтобы обеспечить работу ядер CPU, а GPU здесь как бы на вторых ролях. И особенно это заметно по организации работы с ОЗУ.

Любая интегрированная графика использует область оперативной памяти для хранения данных графической подсистемы. Скажем, в обычном случае 1-2 Гб из объема ОЗУ выделяется под область GPU.

Но фактически за управление загрузкой этой области памяти отвечает CPU. Он перебрасывает нужные данные из области основной памяти (“своей”) в выделенную “графическую”. А GPU уже выбирает оттуда.

Естественно это замедляет процесс обработки видеопотока.

Дополнительно? есть такая общая установка, очень грубая, но тем не менее…

Ядра CPU обыкновенно пересылают из ОЗУ и обратно небольшие блоки данных, но часто. Назовем этот пункт, условно, “процессорным” типом работы с памятью. Видеопамять же дискретных адаптеров - “графический” тип - как правило забирает из памяти огромные куски едиными блоками.

Соответственно контроллеры памяти, скажем, чипов Nvidia GeForce и Intel Core имеют разную организацию, адаптированную к своему типу потребления данных - передача больших объемов по широкому каналу или более узкий, но высокочастотный канал. Под это заточена организация работы внутренних шин памяти и система управления ими.

Угадайте с одного раза, какой тип организации - “процессорный” или “графический” использован в SoC Core или Ryzen? Конечно “процессорный”. То есть вся общая работы внутренней шины памяти для встроенного GPU - она как бы “не родная”. То же касается и прочих периферийных устройств.

UMA от Apple

Apple меняет подход к UMA (Unified Memory Access). Здесь отдельной области ОЗУ для GPU не выделяется - графический чип может напрямую обращаться к ОЗУ и задействовать столько памяти, сколько ему реально нужно. (Вероятно, это касается прочих спецпроцессоров в составе чипа.)

Контроллер же памяти, шина, очевидно рассчитаны на этот момент и учитывают тип потребления данных, характерный именно для GPU.

Да и сами физические микросхемы памяти в целях снижения задержек и поддержки оптимальных частот, как мы помним, совмещены с SoC конструктивно. Все это дает возможность встроенному GPU проявить себя в полной мере, быть “на равных” с ядрами CPU в плане доступа к памяти.

Кроме того Apple и за счет использования 5-нанометровых ядер CPU, из каковых “больших” - максимум 4, и за счет относительно небольших областей кэш-памяти - элементарно получил возможность отдать на кристалле большую площадь под ядра GPU. В итоге, графика от Apple - это просто более продвинутый чип, чем Intel Xe и Radeon Vega.

Если же взглянуть на ситуацию с GPU в целом, можно заключить, что в сравнении с классической организацией интегрированных систем ПК, в Маках самому ресурсоемкому - графике - просто отдано больше места. И в физическом смысле - площади на кристалле, и в организационном - механизмы доступа к ОЗУ и проч.

Но за счет этого выигрывает не только сама графика, но и скорость работы компьютера в целом - ведь “тяжелая” часть имеет собственный канал доступа к системе. Следовательно, не отвлекает CPU от своих собственных задач.

Ремарка. Деловые причины.

В заключении хотелось бы напомнить о следующем. (Хотя это и банальность.)

Apple - производит чипы для себя. Он сам является единственным поставщиком конечных устройств Mac. Сам отвечает за, по простому говоря, разводку материнской платы. Сам решает сколько полосы пропускания отдавать на те или иные подсистемы.

Почему процессоры Apple M1 для ноутбуков превосходят последние модели Intel Core и AMD Ryzen? Разбираемся в деталях.

Согласитесь, если вы знаете, что никаких подключаемых по шине PCI внешних видеокарт у вас в системе не предусматривается, как не будет в ней, скажем, и внешних разъемов DIMM под дополнительные модули памяти - это много меняет.

Соответственно, вы можете все внимание уделить качеству работы фиксированного, вами сами заданного набора компонент. Достичь их согласованной работы и обеспечить оптимальную скорость на Ватт в таких условиях кратно легче.

Intel и AMD в этом смысле связаны тем, что им нужно предложить общую платформу для разработчиков конечных устройств. Которые и будут варьировать скоростные параметры устройства в широких пределах. В этом смысле системы Core и Ryzen вынуждены быть более универсальными.

Более того, они кроме прочего вообще являются частью общей экосистемы x86, включая и серверные процессоры, с их требованиями к максимизации числа ядер CPU. Это влияет и на организацию общего чипа, вообще на сам подход к проектированию.

Допустим, с конвеера сходит 4-х ядерный Core i3. Но общая то разработка микроархитектуры выполнена с учетом того факта что в экосистеме имеется и Xeon Scalable Platinum на 56 ядер. И это влияет в конечном итоге на все.

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

#Apple silicon M1