- О технологии Neural Engine в процессорах Apple A-серии
- Для чего нужен Neural Engine
- Первое поколение
- Второе поколение
- Третье поколение
- Четвертое поколение
- Новая технология Neural Engine и Apple GPU — Apple A11 Bionic
- О процессоре
- Рейтинг Antutu
- Neural Engine
- Поддержка
- Технические характеристики
- Прочее
- Для чего в процессорах Apple нужны нейроядра Neural Engine. Третья сила магии iPhone
- Как устроены чипы. CPU и GPU на ПК отдельно, у мобильных вместе
- Есть CPU, есть GPU, а есть Neural Engine
- Первый Neural Engine использовали исключительно для Face ID
- Как развивался Neural Engine в iPhone
- iPhone X
- iPhone XS и iPhone XR
- iPhone 11 и iPhone 11 Pro
- iPhone 12 и iPhone 12 Pro
- iPhone 13 и iPhone 13 Pro
- В чём ещё помогает Neural Engine в смартфонах
- Зачем Neural Engine в Mac
- Часть iPhone, которая делает его iPhone
- Секретный сопроцессор Apple M1: что это, зачем и как работает
- Что такое матрица?
- Почему мы вообще заговорили о матрицах?
- В чем разница между сопроцессором Apple Matrix и Neural Engine?
- А в чем отличие матричного сопроцессора от векторного SIMD?
- Но почему про AMX не особо говорят?
- Преимущества сопроцессора Apple Matrix
О технологии Neural Engine в процессорах Apple A-серии
Было опубликовано 20 января 2020 года
Обновлено 2 декабря 2020 года
Приставка «Bionic» к названию процессоров появилось не просто так. На кристалле стал размещаться еще один процессор, который маркетинг Apple назвала «нейронным движком» (Neural Engine).
Он основан на нейронных сетях, которым еще лет 20 назад пророчили лидирующую роль в вычислительной технике.
Позже на помощь Neural Engine пришли блоки AMX, но об этом ниже.
Для чего нужен Neural Engine
Отдельный процессор NPU значительно ускоряет работу таких ресурсоёмких задач как: дополненная реальность (поддерживаемая фреймворком Apple ARKit), машинное обучение и построение нейронных сетей (поддерживаемые фреймворком Apple Core ML).
Neural engine
Технология позволяет Apple реализовать нейронную сеть и машинное обучение более энергоэффективным способом, чем использование основного или графического процессора. CPU и GPU не предназначены для работы с ИИ.
Первое поколение
Впервые нейронный процессор появился в Apple A11 Bionic. Предыдущий чип Apple A10 имел приставку Fusion.
Это первое поколение Neural Engine, которое было встроено чип Apple. В него установлено 2 ядра и оно может выполнять до 600 миллиардов операций в секунду.
Сторонние приложения не могут использовать нейронный движок этого поколения, что приводит к аналогичной производительности нейронной сети для старых iPhone.
Второе поколение
Следующее поколение сделало достаточно большой рывок по сравнению с предыдущим.
Вторая версия включает в себя “нейронный движок» следующего поколения, который установлен сразу в трех чипах компании Apple. Это поколение имеет целых 8 ядер и может выполнять до 5 триллионов операций в секунду, что до 9 раз быстрее по сравнению с Apple A11.
В отличие от Neural Engine 1-го поколения, 2-ое поколение предоставляет доступ для сторонних приложений.
Третье поколение
Третье поколение не сильно продвинулось по сравнению со вторым, но улучшения есть.
Следующий процессор Apple A-серии также включает в себя Neural Engine нового поколения. Имеет 8 ядер, как и ранее, которые стали на 20% быстрее и на 15% меньше потребляют энергию, а также работают до 6 раз производительнее.
Apple добавила в 3 – е поколении специальный ускоритель — блоки AMX. Они ориентированы на выполнение ключевых задач машинного обучения.
Четвертое поколение
Это поколение стало первым для Mac. Neural Engine этого поколения стал сильно лучше в задачах с использованием ИИ.
Четвертая версия содержит в себе нейронный процессор более нового поколения. В нем установлено 16 ядер, больше чем ранее в целых два раза. Они выполняют до 11 триллионов операций за 1 секунду, что по утверждениям Apple на 80% быстрее.
В чипах использующих это поколение, как и в A13, установлен специальный ускоритель — блоки AMX. Они ориентированы на выполнение ключевых задач машинного обучения.
Новая технология Neural Engine и Apple GPU — Apple A11 Bionic
Было опубликовано 25 июля 2019 года
Обновлено 5 ноября 2020 года
Apple A11 Bionic – ARM-система на кристалле (SoC), разработан Apple и изготовлен TSMC. Cочетает в себе процессоры Monsoon и Mistral с графическим процессором Apple GPU.
Впервые появился в iPhone 8, iPhone 8 Plus и iPhone X.
Согласно Apple, Apple A11 Bionic имеет два высокопроизводительных ядра, которые на 25% быстрее, чем в Apple A10 Fusion, и четыре высокопроизводительных ядра, которые на 70% быстрее, чем энергоэффективные ядра в A10.
О процессоре
A11 оснащен разработанным Apple 6-ти ядерным процессором с двумя высокопроизводительными ядрами на частоте 2,39 ГГц, называемыми Monsoon, и четырьмя энергоэффективными ядрами, называемыми Mistral. Ядра Mistral основаны на ядрах Apple Swift от Apple A6. A11 использует новый контроллер производительности второго поколения, который позволяет A11 использовать все шесть ядер одновременно, в отличие от своего предшественника A10.
Чип также интегрирует разработанный Apple трехъядерный графический процессор (GPU) с 30% более высокой графической производительностью, чем A10. В A11 встроен сопроцессор движения M11. Apple A11 Bionic включает в себя новый процессор обработки изображений, который поддерживает вычислительные функции фотографии, такие как оценка освещения, широкий захват цвета и расширенная обработка пикселей.
Рейтинг Antutu
Apple A11 Bionic в рейтинге Antutu набирает около 290.000 баллов. Для сравнения A10 Fusion набирает примерно в среднем 225.000 условных единиц.
Neural Engine
A11 включает в себя выделенное нейронное сетевое оборудование, которое Apple называет «Neural Engine«.
Это оборудование нейронной сети может выполнять до 600 миллиардов операций в секунду и используется для Face ID, Animoji и других задач машинного обучения. Neural Engine позволяет Apple реализовать нейронную сеть и машинное обучение более энергоэффективным способом, чем использование основного процессора или графического процессора.
Однако сторонние приложения не могут использовать нейронный движок данного поколения, что приводит к аналогичной производительности нейронной сети для старых iPhone.
Поддержка
Начало поддержки iOS — iOS 11. Обновления программного обеспечения для систем, использующих этот чип продолжается до сих пор. Производство продолжалось с 2017 года по 2020 год.
Технические характеристики
Базовая частота – 2x 2,39 ГГц ( Monsoon ) + 4x 1,42 ГГц ( Mistral )
Количество ядер – 6
Модель ускорителя – Apple GPU
Количество ядер – 3
Тип оперативной памяти – LP-DDR4X 2133 МГц
Количество оперативной памяти – 3 ГБ
Прочее
Технологический процесс – 10 нм
Количество транзисторов – 4,3 млрд
Набор инструкций – ARMv8.2-A
Площадь кристалла – 87.66 мм^2
Версия Bluetooth – 5.0
Версия Wi-Fi – 5
Поддержка 5G – нет
Для чего в процессорах Apple нужны нейроядра Neural Engine. Третья сила магии iPhone
Начиная с iPhone X, ко всем своим чипам серии A Apple добавляет приставку Bionic. Природная натура этого слова подкрепляется особенным модулем внутри процессора, который называется Neural Engine.
Он состоит из вычислительных блоков, которые помогают iPhone решать задачи, связанные с контекстом.
Перед Neural Engine не стоит задача решить уравнение или отобразить изображение. Это гораздо более тонкая технология, без которой наши смартфоны оставались бы скучными и не умели узнавать нас в лицо.
Ниже расскажу, почему Apple хвалится развитием этого элемента в своих чипах с такой же частотой, как с CPU и GPU. Объясню, зачем именно нужен Neural Engine в том числе в MacBook. А ещё проследим, как нейроядра внутри iPhone стали третьей необходимой силой после вычисления и графики.
Как устроены чипы. CPU и GPU на ПК отдельно, у мобильных вместе
В большинстве ПК, особенно домашних, установлены два главных чипа: CPU и GPU. Они физически находятся в разных частях системного блока и в большинстве случаев созданы разными производителями.
CPU расшифровывается как Central Processing Unit и переводится «центральное вычислительное устройство».
Отвечает за сложные и параллельные вычисления инструкций. Без него компьютер не заработает.
GPU расшифровывается как Graphic Processing Unit и переводится «графическое вычислительное устройство».
Формирует и выводит на монитор визуальную информацию, красиво отображает вычисления процессора и его ОС (операционной системы).
Иногда GPU встраивают прямо в CPU, такой элемент слабее и чаще всего служит временной заменой, чтобы вы видели происходящие внутри компьютера размышления, пока ищете замену дискретной видеокарте. Такие поставляются отдельными модулями.
В компактных устройствах железо работает не только на выдачу мощного результата, но и на сохранение энергии. Важно, чтобы устройство не перегрелось из-за избытка тепла от большой вычислительной нагрузки.
Тут встроенная в CPU графика уже главная, дополнительные процессоры, как правило, либо обрезаны в мощности, либо полноценно работают только при подключении к сети. В смартфонах и планшетах дискретного модуля GPU в принципе не бывает.
Единственный управляющий чип становится чем-то больше обычного CPU. Он превращается в комплексную систему.
И Apple уже добилась в этом лидирующей позиции, поэтому стала интегрировать в процессоры новый тип вычислительных транзисторов.
Есть CPU, есть GPU, а есть Neural Engine
История началась с процессоров для iPhone, в которые постепенно интегрировались новые элементы. Например, Neural Engine. Он ускоряет умные фишки камеры, помогает лучше анализировать голос для Siri и быстрее распознавать людей на ваших фотографиях.
Чуть позже тем же подходом Apple сделала комплексный чип M1 для своих Mac. Внутри него этих ядер ещё больше, и они ежедневно помогают решать те же задачи, что и в iPhone.
В потребительских устройствах для этих целей отдельный чип не ставили, но за ним постепенно закрепляется похожее название.
NPU расшифровывается как Neural Processing Unit и пока никак общепринято не переводится на русский.
Термин постепенно входит в употребление, но каждый производитель называет его по-своему. Будем опираться на формировку Apple, которая звучит как Neural Engine или «Нейронный процессор».
Должно соблюдаться условие: система, которую будут запускать на таком типе процессора, должна быть сначала натренирована на других примерах.
Первый Neural Engine использовали исключительно для Face ID
Apple полностью контролирует производство своих процессоров начиная с iPhone 4 и чипа внутри него A4, которые вышли в 2010 году.
Компания среди первых начала внедрять новые технологии в чипы на мобильных устройствах. Например, переход на 64-битную разрядную систему, интеграцию сопроцессора движения и фотографии, использование минимальных техпроцессов (7 нм, 5 нм).
Ключевым стал 2017 год, когда вышел iPhone X. На его презентации впервые пошла речь о небольшом нейросетевом модуле внутри чипа A11, который Apple впервые и до сих пор называет с приставкой Bionic.
Тогда этому маленькому блоку внутри чипа уделили каплю внимания, чтобы рассказать, как он юрко отличает настоящее лицо от искусственной копии в виде театральной маски. Мы узнали о Neural Engine только то, что он способен обучаться по внешнему виду пользователя, и на этом всё.
С каждым новым поколением NPU значительно развивали и обучали новым возможностям.
В 2021 году он помогает искать определённых людей и создавать воспоминания в приложении Фото, анализировать 40 мимических лиц в реальном времени и создавать Киноэффект в iPhone 13.
Эволюция оказалась впечатляющей.
Как развивался Neural Engine в iPhone
Каждая презентация Apple не обходится без упоминания сопроцессора и без указания, насколько выросла его производительность.
Ниже будет полный список iPhone начиная с 2017 года, с описанием возможностей, которые добавляла компания вместе с улучшением Neural Engine и его ядер.
iPhone X
В чипе A11 внутри iPhone X технология появилась первые.
Два ядра, которые служили исключительно для того, чтобы корректно распознавать лица.
Производительность: 600 миллиардов операций в секунду.
iPhone XS и iPhone XR
В A12 внутри iPhone XS и iPhone XR поставили 8 нейроядер, к которым добавили машинное обучение в других приложениях кроме Face ID и «умную вычислительную систему».
Эта система распознаёт тип задачи, поступающей в процессор, и решает, на каких блоках её обрабатывать: в Neural Engine, CPU или GPU.
Машинное обучение улучшило:
• Предложения слов в клавиатуре
• Подборку фотографий в Воспоминаниях
• Вывод полезных мест в Картах
• Адаптацию экрана True Tone
• Поиск снимков в Фото.
Это было нужно для портретного режима с одной камерой на iPhone XR и для AR-эффектов камеры. Например, чтобы накладывать сценический свет или отслеживать движение 50-ти мышц лица во время звонка по Face Time.
Именно благодаря обучению «на ходу» режим портрета из iOS 15 в Face Time доступен на смартфонах с процессором A12 Bionic и новее.
Производительность: 5 триллионов операций в секунду.
iPhone 11 и iPhone 11 Pro
В A13 внутри iPhone 11 установлен Neural Engine снова из 8 ядер.
Тогда блоку повысили мощность на 20% и снизили потребление на 15% за счёт выборочной подачи энергии на разные области A13.
Вместе с машинным обучением NPU улучшил распознавание речи и стал быстрее справляться с трекингом лицевой мимики в реальном времени.
В этот раз в CPU добавили блоки для ускорения машинного обучения, которые стали в 8 раз быстрее проводить матричные вычисления. Вероятно, именно они дали ускорение нейроядрам.
Производительность: 6 триллионов операций в секунду.
iPhone 12 и iPhone 12 Pro
В A14 из iPhone 12 Neural Engine стал в два раза больше и состоял из 16 ядер.
NPU стал на 80% быстрее того, который был установлен в A13.
Эти улучшения помогли внедрить Deep Fusion во все камеры iPhone, включая фронтальную и сверхширокоугольную. Последняя, несмотря на то, что физически была идентична прошлому поколению, стала снимать более чёткие фотографии.
Этот же NPU установлен во все чипы серии M1 от Apple для Mac.
Производительность: 11 триллионов операций в секунду.
iPhone 13 и iPhone 13 Pro
В A15 из iPhone 13 Neural Engine остался с теми же 16 ядрами. Но они стали заметно мощнее. Даже в новых M1 Pro и M1 Max такого нет.
На этой презентации Apple напомнила, что установленные в Neural Engine элементы для машинного обучения работают эффективно за счёт блоков их ускорения в разделе CPU.
На данный момент это самый мощный NPU среди продуктов Apple. Главной его возможностью стала запись видео с глубоким размытием. Режим в приложении Камера в любом из iPhone 13 называется Киноэффект.
Ещё он помогает Siri распознавать диктовку и корректировать навигатор внутри Apple Maps, делать трекинг предметов в реальном времени, распознавать виды растений и ускорять перевод текста с фотографии в письменный.
Производительность: 15,8 триллионов операций в секунду.
В чём ещё помогает Neural Engine в смартфонах
Многие считают Siri отстающей в развитии по сравнению с другими ассистентами, но на самом деле за этой технологией стоят сложные процессы.
Раньше, когда вы задавали вопрос «Скажи курс доллара к рублю», смартфон записывал данные и отправлял их на сервер с сопроводительными данными вроде обладателя голоса, местоположения, времени суток, чтобы было проще сформулировать ответ. Позже ответ обрабатывался и отправлялся обратно.
Сейчас нейросетевой чип в смартфоне берёт обработку натуральной голосовой модели на себя. Он в реальном времени превращает речь в запрос сам, и в некоторых ситуациях берёт на себя его полную обработку. Он сам понимает, что пользователь хочет узнать и сам же формирует сценарий, по которому будет отвечать.
Например, если вы попросите смартфон сделать сложные расчёты, он справится с ними намного быстрее, чем раньше, потому что сделает это без отправки на сервера. А расчёт начнёт до того, как вы закончите говорить.
Зачем Neural Engine в Mac
Огромный кусок главных функций M1 занимает Neural Engine в правом верхнем углу
Apple постепенно переводит компьютеры Mac на свои процессоры. Год назад, в ноябре 2020-го представили чип M1, в октябре 2021-го к ним добавились M1 Pro и M1 Max.
Несмотря на разницу в производительности CPU и GPU, в каждом из них установлен один и тот же NPU из 16 ядер с мощностью 11 триллионов операций в секунду. То есть он дублирует таковой из A14 внутри iPhone 12.
Выделенные нейроядра в Mac ускоряют процессы в работе профессионалов, завязанные на машинном обучении.
Фотографы могут применить их в Pixelmator Pro, который увеличивает разрешение изображения с помощью процессов машинного обучения, которые активирует Neural Engine.
Видеографы могут использовать функцию умного отслеживания объектов в Final Cut Pro X, чтобы быстрее обрезать видео.
Для разработчиков, учёных и инженеров в их специализированных расчётах и преобразованиях данных, постановки виртуальных экспериментов он тоже будет полезен.
Например, на базе машинного обучения работает платформа TensorFlow. Она помогает внедрять в приложения такие технологии, как распознавание жестов, понимание контекста в естественных вопросах, перенос стиля одного изображения на другое. Чем быстрее будет железо, сделанное для него, тем лучше заработают эти функции.
Часть iPhone, которая делает его iPhone
Apple не устаёт повторять, что её сильная сторона кроется в трепетной связке ПО и железа.
Компания внедряет в свои смартфоны всё больше функций, которые полагаются на заточенные под них ядра. Среди них процессор обработки фото, управления дисплеем, портами и Neural Engine.
«Нейронный движок» помогает смартфону на лету понимать речь, подбирать трогательные Фото в виджете на рабочем столе и выдавать релевантные Воспоминания, отслеживать объекты в кадре Smart HDR, режима портрета и Киноэффекта.
Neural Engine формирует быструю и корректную выдачу данных в Spotlight, распознаёт текст из Камеры, может различать разные виде растений и породы собак.
И в целом он превращает смартфон в устройство, которое с каждым поколением всё лучше распознаёт контекст запроса без подключения к интернету.
Это одна из самых сильных вычислительных сторон iPhone помимо CPU и GPU. И она развивается сумасшедшими темпами из года в год.
Сложно предсказать, на что нейроядра будут способны через 10 лет. Но пока они выполняют свою работу бесшовно и незаметно для пользователя, Apple всё ещё может называть эту технологию магией.
Секретный сопроцессор Apple M1: что это, зачем и как работает
Публикаций о сопроцессоре Apple Matrix (AMX) уже довольно много. Но большинство не особо понятны всем и каждому. Я же попытаюсь объяснить нюансы работы сопроцессора понятным языком.
Почему Apple не слишком распространяется об этом сопроцессоре? Что в нем такого секретного? И если вы читали о Neural Engine в SoC M1, у вас могут возникнуть затруднения в плане понимания, что такого необычного в AMX.
Но для начала вспомним базовые вещи (если вы хорошо знаете, что такое матрицы, а таких читателей, уверен, на Хабре большая часть, то первый раздел можете пропускать, — прим. перев.).
Что такое матрица?
Если по-простому, то это таблица с числами. Если вы работали в Microsoft Excel, то, значит, вы имели дело с подобием матриц. Ключевым отличием матриц от обычных таблиц с числами — в операциях, которые можно с ними выполнять, а также специфической сути. Матрицу можно представить в виде самых разных форм. Например, в виде строк, тогда это вектор-строка. Или в виде столбца, тогда это, что вполне логично, вектор-столбец.
Мы можем складывать, вычитать, масштабировать и умножать матрицы. Сложение — самая простая операция. Вы просто добавляете каждый элемент отдельно. Умножение немного сложнее. Вот простой пример.
Что касается прочих операций с матрицами, об этом можно почитать здесь.
Почему мы вообще заговорили о матрицах?
Дело в том, что они повсеместно используются в:
• Обработке изображений.
• Машинном обучении.
• Распознавании рукописного текста и речи.
• Сжатии.
• Работе с аудио и видео.
Что касается машинного обучения, то для этой технологии нужны производительные процессоры. И просто добавить несколько ядер в чип — не вариант. Сейчас ядра «заточены» под выполнение определенных задач.
Количество транзисторов в процессоре ограничено, соответственно, количество задач/модулей, которые можно добавить в чип, тоже ограничено. В целом, можно бы просто добавить еще ядер в процессор, но это просто ускорит выполнение стандартных вычислений, которые и так выполняются быстро. Поэтому в Apple решили пойти другим путем и выделить модули для обработки изображений, декодирования видео и выполнения задач машинного обучения. Эти модули — сопроцессор и ускорители.
В чем разница между сопроцессором Apple Matrix и Neural Engine?
Если вы интересовались Neural Engine, то, вероятно, знаете, что он также выполняет операции с матрицами для работы с задачами машинного обучения. Но если так, то зачем тогда понадобился еще и сопроцессор Matrix? Может быть, это одно и тоже? Я ничего не путаю? Разрешите мне прояснить ситуацию и рассказать, в чем же разница, объяснив, почему нужны обе технологии.
Главный процессор (ЦП), сопроцессоры и ускорители обычно могут обмениваться данными по общей шине данных. ЦП обычно контролирует доступ к памяти, в то время как ускоритель, такой как GPU, часто имеет собственную выделенную память.
Признаю, что в своих прежних статьях я использовал термины «сопроцессор» и «ускорители» в качестве синонимов, хотя это не одно и то же. Так, GPU и Neural Engine — ускорители разных типов.
В обоих случаях у вас есть специальные области памяти, которые ЦП должен заполнить данными, которые он хочет обработать, плюс еще одна область памяти, которую CPU заполняет списком инструкций, которые должен выполнить ускоритель. Процессору требуется время для выполнения этих задач. Приходится все это координировать, заполнять данные, а затем ждать получения результатов.
И подобный механизм годен для масштабных задач, а вот для малых тасков это уже перебор.
В этом преимущество сопроцессоров перед ускорителями. Сопроцессоры сидят и следят за потоком инструкций машинного кода, которые поступают из памяти (или, в частности, кеша) в ЦП. Сопроцессор вынужден реагировать на конкретные инструкции, которые они были заставлены обрабатывать. Между тем, ЦП в основном игнорирует эти инструкции или помогает облегчить их обработку сопроцессором.
Преимущество заключается в том, что инструкции, выполняемые сопроцессором, можно включить в обычный код. В случае GPU все иначе — программы шейдеров помещаются в отдельные буферы памяти, которые затем нужно явно переносить в GPU. Использовать для этого обычный код не получится. И как раз поэтому AMX отлично подходит для выполнения простых задач, связанных с обработкой матриц.
Нюанс здесь в том, что требуется определить инструкции в архитектуре набора инструкций (ISA) вашего микропроцессора. Таким образом, при использовании сопроцессора применяется более тесная интеграция с процессором, чем при использовании ускорителя.
Создатели ARM, кстати, долгое время сопротивлялись добавлению кастомных инструкций в ISA. И это — одно из преимуществ RISC-V. Но в 2019 году разработчики сдались, заявив однако следующее: «Новые инструкции сочетаются со стандартными инструкциями ARM. Чтобы избежать фрагментации программного обеспечения и поддерживать согласованную среду разработки программного обеспечения, ARM ожидает, что клиенты будут использовать пользовательские инструкции в основном в вызываемых библиотечных функциях».
Это может быть хорошим объяснением отсутствию описания AMX-инструкций в официальной документации. ARM просто ожидает от Apple того, что компания включит инструкции в библиотеках, предоставленных клиентом (в этом случае Apple).
А в чем отличие матричного сопроцессора от векторного SIMD?
В общем-то не так сложно спутать матричный сопроцессор с векторной SIMD-технологией, которая есть в большинстве современных процессоров, включая ARM. SIMD расшифровывается как Single Instruction Multiple Data.
SIMD позволяет увеличить производительность системы в случае необходимости выполнения одной и той же операции над несколькими элементами, что тесно связано с матрицами. В общем-то, инструкции SIMD, включая инструкции ARM Neon или Intel x86 SSE или AVX, часто используются для ускорения умножения матриц.
Но векторный движок SIMD — часть ядра микропроцессора, так же как и ALU (модуль арифметической логики) и FPU (модуль с плавающей запятой) являются частью ЦП. Ну а уже декодер инструкций в микропроцессоре «решает» какой функциональный блок активировать.
А вот сопроцессор — это отдельный физический модуль, а не часть ядра микропроцессора. Раньше, например, Intel’s 8087 был отдельным чипом, который предназначался для ускорения операций с плавающей запятой.
Вам может показаться странным, что кто-то разработал такую сложную систему, с отдельным чипом, который обрабатывает данные, идущие от памяти в процессор, с целью обнаружить инструкцию с плавающей запятой.
Но ларчик открывается просто. Дело в том, что в оригинальном 8086 процессоре было всего 29 000 транзисторов. У 8087 их было уже 45 000. В конечном итоге технологии позволили интегрировать FPU-модули в основной чип, избавившись от сопроцессоров.
Но почему AMX не является частью ядра Firestorm в М1 — не совсем понятно. Может быть, Apple просто решила вывести нестандартные ARM-элементы за пределы основного процессора.
Но почему про AMX не особо говорят?
Если AMX не описан в официальной документации, как мы вообще смогли о нем узнать? Спасибо разработчику Дугаллу Джонсону, кто выполнил прекрасный реверс-инжиниринг M1 и обнаружил сопроцессор. Его работа описана вот здесь. Как оказалось, для математических операций, связанных с матрицами Apple создала специализированные библиотеки и/или фреймворки вроде Accelerate. Все это включает следующие элементы:
• vImage — обработка изображений более высокого уровня, такая как преобразование между форматами, манипулирование изображениями.
• BLAS — своего рода отраслевой стандарт линейной алгебры (то, что мы называем математикой, имеющей дело с матрицами и векторами).
• BNNS — используется для запуска нейронных сетей и обучения.
• vDSP — цифровая обработка сигналов. Преобразования Фурье, свертка. Это математические операции, выполняемые при обработке изображения или любого сигнала, содержащего звук.
• LAPACK — функции линейной алгебры более высокого уровня, например, решение линейных уравнений.
Джонсон понимал, что именно эти библиотеки будут использовать сопроцессор AMX для ускорения вычислений. Поэтому он разработал специализированный софт для анализа и мониторинга действий библиотек. В конечном итоге ему удалось обнаружить недокументированные инструкции машинного кода AMX.
А Apple не документирует все это потому, что ARM LTD. старается не особо афишировать информацию. Дело в том, что если кастомные функции действительно будут широко применяться, это может привести к фрагментации экосистемы ARM, о чем и говорилось выше.
У Apple появляется возможность, не особо афишируя все это, позже изменить работу систем при необходимости — например, удалять или добавлять AMX-инструкции. Для разработчиков достаточно платформы Accelerate, все остальное система сделает сама. Соответственно, Apple может контролировать как оборудование, так и ПО для него.
Преимущества сопроцессора Apple Matrix
Здесь много всего, отличный обзор возможностей элемента сделала компания Nod Labs, которая специализируется на машинном обучении, интеллекте и восприятии. Они, в частности, выполнили сравнительные тесты производительности AMX2 и NEON.
Как оказалось AMX в два раза быстрее выполняет необходимые для выполнения действий с матрицами операции. Это не значит, конечно, что AMX лучше всех, но для машинного обучения и высокопроизводительных вычислений — да.
В качестве вывода можно сказать, что сопроцессор Apple — впечатляющая технология, которая дает Apple ARM преимущество в задачах машинного обучения и высокопроизводительных вычислений.