Сопроцессор
Различают следующие виды сопроцессоров:
* математические сопроцессоры общего назначения, обычно ускоряющие вычисления с плавающей запятой,
* сопроцессоры ввода-вывода (например — Intel 8089), разгружающие центральный процессор от контроля за операциями ввода-вывода или расширяющие стандартное адресное пространство процессора,
сопроцессоры для выполнения каких-либо узкоспециализированных вычислений.Сопроцессоры могут входить в набор логики, разработанный одной конкретной фирмой (например, Intel выпускала для процессоров 8086 и 8088 сопроцессоры 8087 и 8089, Motorola — сопроцессор Motorola 68881) или выпускаться сторонним производителем (например, Weitek (англ.) 1064 для Motorola m68k и 1067 для Intel 80286).
Связанные понятия
В области компьютеризации под аппаратным ускорением понимают применение аппаратного обеспечения для выполнения некоторых функций быстрее по сравнению с выполнением программ процессором общего назначения. Примерами аппаратного ускорения может служить блоковое ускорение выполнения в графическом процессоре и инструкции комплексных операций в микропроцессоре.
Суперскалярный процессор (англ. superscalar processor) — процессор, поддерживающий так называемый параллелизм на уровне инструкций (то есть, процессор, способный выполнять несколько инструкций одновременно) за счёт включения в состав его вычислительного ядра нескольких одинаковых функциональных узлов (таких как АЛУ, FPU, умножитель (integer multiplier), сдвигающее устройство (integer shifter) и другие устройства). Планирование исполнения потока инструкций осуществляется динамически вычислительным.
Программи́руемая логи́ческая интегра́льная схе́ма (ПЛИС, англ. programmable logic device, PLD) — электронный компонент (интегральная микросхема), используемый для создания конфигурируемых цифровых электронных схем. В отличие от обычных цифровых микросхем, логика работы ПЛИС не определяется при изготовлении, а задаётся посредством программирования (проектирования). Для программирования используются программатор и IDE (отладочная среда), позволяющие задать желаемую структуру цифрового устройства в.
AMP или ASMP (от англ.: Asymmetric multiprocessing, рус.: Асимметричная многопроцессорная обработка или Асимметричное мультипроцессирование) — тип многопроцессорной обработки, который использовался до того, как была создана технология симметричного мультипроцессирования (SMP); также использовался как более дешевая альтернатива в системах, которые поддерживали SMP.
Секретный сопроцессор 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 преимущество в задачах машинного обучения и высокопроизводительных вычислений.
Сопроцессор
Сопроцессор — специализированный процессор, расширяющий возможности центрального процессора компьютерной системы, но оформленный как отдельный функциональный модуль. Физически сопроцессор может быть отдельной микросхемой или может быть встроен в центральный процессор (как это делается в случае математического сопроцессора в процессорах для ПК начиная с Intel 486DX).
Различают следующие виды сопроцессоров:
Сопроцессоры могут входить в набор логики, разработанный одной конкретной фирмой (например Intel выпускала в комплекте с процессором 8086 сопроцессоры 8087 и 8089) или выпускаться сторонним производителем (например, Weitek (англ.) 1064 для Motorola m68k и 1067 для Intel 80286).
Сопроцессор в программировании
Сопроцессор расширяет систему инструкций центрального процессора, поэтому для его использования, программа (компилируемая без интерпретации и вызова внешних библиотек) должна содержать эти инструкции. Настройки современных компиляторов для языков высокого уровня под процессоры семейства x86 зачастую позволяют выбирать: использовать математический сопроцессор или нет, что особенно важно при создании кода, который будет исполняться внутри обработчика аппаратного прерывания.
См. также
![]() | Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её. Это примечание по возможности следует заменить более точным. |
Технологии цифровых процессоров | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Архитектура | |||||||||
| Параллелизм |
| ||||||||
| Реализации | DSP · GPU · SoC · PPU · Векторный процессор · Математический сопроцессор • Микропроцессор · Микроконтроллер | ||||||||
| Компоненты | Barrel shifter · FPU · BSB · MMU · TLB · Регистровый файл · control unit · АЛУ • Демультиплексор · Мультиплексор · Микрокод · Тактовая частота • Корпус • Регистры • Кэш (Кэш процессора) | ||||||||
| Управление питанием | APM · ACPI · Clock gating · Динамическое изменение частоты • Динамическое изменение напряжения | ||||||||
| Параллелизм |
| ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Реализации | DSP · GPU · SoC · PPU · Векторный процессор · Математический сопроцессор • Микропроцессор · Микроконтроллер | ||||||||
| Компоненты | Barrel shifter · FPU · BSB · MMU · TLB · Регистровый файл · control unit · АЛУ • Демультиплексор · Мультиплексор · Микрокод · Тактовая частота • Корпус • Регистры • Кэш (Кэш процессора) | ||||||||
| Управление питанием | APM · ACPI · Clock gating · Динамическое изменение частоты • Динамическое изменение напряжения |
Полезное
Смотреть что такое «Математический сопроцессор» в других словарях:
математический сопроцессор — — [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN match coprocessor … Справочник технического переводчика
Сопроцессор — Сопроцессор специализированный процессор, расширяющий возможности центрального процессора компьютерной системы, но оформленный как отдельный функциональный модуль. Физически сопроцессор может быть отдельной микросхемой или может быть… … Википедия
Блок операций с плавающей точкой — Математический сопроцессор 80×287 в колодке на базовой плате персонального компьютера. Сопроцессор Motorola 68881 Математический сопроцессор сопроцессор для расширения командного множества центрального процессора и обеспечивающий его… … Википедия
Периферийный процессор — Сопроцессор специализированный процессор, расширяющий возможности центрального процессора компьютерной системы, но оформленный как отдельный функциональный модуль. Физически сопроцессор может быть отдельной микросхемой или может быть встроен в… … Википедия
Intel 80486 — > Центральный процессор Микропроцессор Intel 80486 Производство: с 10 апреля … Википедия
80486 — > Центральный процессор … Википедия
80386 — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактировать эту статью … Википедия
Am486 — AMD Am486DX 40 Am486 семейство микропроцессоров архитектуры x86 компании AMD, предст … Википедия
Микропроцессорный комплект серии К1810 — Микропроцессорный комплект cерии К1810 набор микросхем, аналогичных набору микросхем для процессора Intel 8086, дальнейшее развитие микропроцессорного комплекта К580. Использовался в отечественных IBM PC совместимых компьютерах, таких как… … Википедия
Процессор — У этого термина существуют и другие значения, см. Процессор (значения). Запрос «ЦП» перенаправляется сюда; см. также другие значения. Intel Celeron 1100 Socket 370 в корпусе FC PGA2, вид снизу … Википедия




Технологии цифровых процессоров 





