Для чего служит сопроцессор современного микропроцессора

Математический сопроцессор

С появлением новых моделей микропроцессоров Intel совершенствовались и сопроцессоры, хотя их программная модель осталась практически неизменной. Как отдельные (а, соответственно, необязательные в конкретной комплектации компьютера) устройства, сопроцессоры сохранялись вплоть до модели микропроцессора i386 и имели название i287 и i387 соответственно. Начиная с модели i486, сопроцессор исполняется в одном корпусе с основным микропроцессором и, таким образом, является неотъемлемой частью компьютера.

Основные возможности математического сопроцессора:

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

Тип чисел Знак Степень Целое Мантисса
+∞011…11100…00
положительные
нормированные
000…01 — 11…10100…00 — 11…11
положительные ненормированные000…00000…00 — 11…11
00, 100…00000…00
отрицательные ненормированные100…00000…00 — 11…11
отрицательные нормированные100…01 — 11…10100…00 — 11…11
-∞111…11100…00
нечисла
(NaN — Not a number)
*11…111**…** ≠0

Числа простой и двойной точности ( float ( DD ) и double ( DQ ) соответственно) могут быть представлены только в нормированной форме. При этом бит целой части числа является скрытым и подразумевает логическую 1. Остальные 23 (52) разряда хранят двоичную мантиссу числа.

Числа двойной расширенной точности ( long double ( DT )) могут быть представлены как в нормированной, так и в ненормированной форме, поскольку бит целой части числа не является скрытым и может принимать значения как 0, так и 1.

Основным типом данных, которыми оперирует математический сопроцессор, являются 10-байтные данные ( DT ).

Программная модель сопроцессора

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

Для чего служит сопроцессор современного микропроцессора. Смотреть фото Для чего служит сопроцессор современного микропроцессора. Смотреть картинку Для чего служит сопроцессор современного микропроцессора. Картинка про Для чего служит сопроцессор современного микропроцессора. Фото Для чего служит сопроцессор современного микропроцессора

В программной модели сопроцессора можно выделить три группы регистров:

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

Регистр состояния swr – отражает текущее состояние сопроцессора после выполнения последней команды. В регистре swr содержатся поля, позволяющие определить: какой регистр является текущей вершиной стека сопроцессора, какие исключения возникли после выполнения последней команды, каковы особенности выполнения последней команды (некий аналог регистра флагов основного процессора).
Для чего служит сопроцессор современного микропроцессора. Смотреть фото Для чего служит сопроцессор современного микропроцессора. Смотреть картинку Для чего служит сопроцессор современного микропроцессора. Картинка про Для чего служит сопроцессор современного микропроцессора. Фото Для чего служит сопроцессор современного микропроцессора

Структурно регистр swr состоит из:

Регистр управления работой сопроцессора cwr – определяет особенности обработки числовых данных. С помощью полей в регистре cwr можно регулировать точность выполнения численных вычислений, управлять округлением, маскировать исключения.
Для чего служит сопроцессор современного микропроцессора. Смотреть фото Для чего служит сопроцессор современного микропроцессора. Смотреть картинку Для чего служит сопроцессор современного микропроцессора. Картинка про Для чего служит сопроцессор современного микропроцессора. Фото Для чего служит сопроцессор современного микропроцессора
Он состоит из:

2-битовое поле управления точностью PC предназначено для выбора длины мантиссы. Возможные значения в этом поле означают:

По умолчанию устанавливается значение поля PC =11.

Бит 12 в регистре cwr физически отсутствует и считывается равным 0.

Регистр тегов twr – представляет собой совокупность двухбитовых полей. Каждое поле соответствует определенному физическому регистру стека и характеризует его текущее состояние. Команды сопроцессора используют этот регистр, например, для того, чтобы определить возможность записи значений в эти регистры. Изменение состояния любого регистра стека отражается на содержимом соответствующего этому регистру 2-битового поля регистра тега. Возможны следующие значения в полях регистра тега:

Принцип работы сопроцессора

Принцип работы сопроцессора совместно с центральным процессором
Процессор и сопроцессор имеют свои раздельные системы команд и форматы обрабатываемых данных. Несмотря на то, что сопроцессор архитектурно представляет собой отдельное вычислительное устройство, он не может существовать отдельно от основного процессора. Процессор и сопроцессор, являясь двумя самостоятельными вычислительными устройствами, могут работать параллельно. Но это распараллеливание распространяется только на выполнение команд. Оба процессора подключены к общей системной шине и имеют доступ к одной и той же информации. Инициирует процесс выборки очередной команды всегда основной процессор. После выборки команда попадает одновременно в оба процессора. Любая команда сопроцессора имеет код операции, первые пять бит, которого имеют значение 11011. Когда код операции начинается этими битами, то основной процессор по дальнейшему содержимому кода операции выясняет, требует ли данная команда обращения к памяти. Если это так, то основной процессор формирует физический адрес операнда и обращается к памяти, после чего содержимое ячейки памяти выставляется на шину данных. Если обращение к памяти не требуется, то основной процессор заканчивает работу над данной командой (не делая попытки ее исполнения) и приступает к декодированию следующей команды из текущего входного командного потока. Выбранная команда попадает в сопроцессор одновременно с основным процессором. Сопроцессор, определив по первым пяти битам, что очередная команда принадлежит его системе команд, начинает ее исполнение. Если команда требует операнды из памяти, то сопроцессор обращается к шине данных за чтением содержимого ячейки памяти, которое к этому моменту предоставлено основным процессором.

Источник

Секретный сопроцессор 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 преимущество в задачах машинного обучения и высокопроизводительных вычислений.

Источник

Математический сопроцессор

Для чего служит сопроцессор современного микропроцессора. Смотреть фото Для чего служит сопроцессор современного микропроцессора. Смотреть картинку Для чего служит сопроцессор современного микропроцессора. Картинка про Для чего служит сопроцессор современного микропроцессора. Фото Для чего служит сопроцессор современного микропроцессора

Для чего служит сопроцессор современного микропроцессора. Смотреть фото Для чего служит сопроцессор современного микропроцессора. Смотреть картинку Для чего служит сопроцессор современного микропроцессора. Картинка про Для чего служит сопроцессор современного микропроцессора. Фото Для чего служит сопроцессор современного микропроцессора

Для чего служит сопроцессор современного микропроцессора. Смотреть фото Для чего служит сопроцессор современного микропроцессора. Смотреть картинку Для чего служит сопроцессор современного микропроцессора. Картинка про Для чего служит сопроцессор современного микропроцессора. Фото Для чего служит сопроцессор современного микропроцессора

Для чего служит сопроцессор современного микропроцессора. Смотреть фото Для чего служит сопроцессор современного микропроцессора. Смотреть картинку Для чего служит сопроцессор современного микропроцессора. Картинка про Для чего служит сопроцессор современного микропроцессора. Фото Для чего служит сопроцессор современного микропроцессора

Математический сопроцессор — сопроцессор для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля.

Модуль операций с плавающей запятой (или с плавающей точкой; англ. floating point unit (FPU) ) — часть процессора для выполнения широкого спектра математических операций над вещественными числами.

Простым «целочисленным» процессорам для работы с вещественными числами и математическими операциями требуются соответствующие процедуры поддержки и время для их выполнения. Модуль операций с плавающей запятой поддерживает работу с ними на уровне примитивов — загрузка, выгрузка вещественного числа (в/из специализированных регистров) или математическая операция над ними выполняется одной командой, за счёт этого достигается значительное ускорение таких операций.

Содержание

Сопроцессоры

x87 — это специальный набор инструкций для работы с математическими вычислениями, являющийся подмножеством архитектуры процессоров x86. Такое название он получил, потому что первоначальные отдельные математические сопроцессорные чипы имели названия, заканчивающиеся на 87. Как и другие расширения базового набора инструкций процессора, эти инструкции не являются строго необходимыми для построения рабочей программы, но будучи аппаратно реализованными, общие математические задачи они позволяют выполнять гораздо быстрее. Например, в наборе инструкций x87 присутствуют команды для расчёта значений синуса или косинуса.

Сопроцессоры Intel семейства x86

Для процессоров семейства x86 с 8086/8088 по 386, модуль операций с плавающей запятой был выделен в отдельную микросхему, называемую математическим сопроцессором. Для установки сопроцессора на плате компьютера предусматривался отдельный разъём.

Сопроцессор не является полноценным процессором, так как не умеет делать многих необходимых для этого операций (например, не умеет работать с программой и вычислять адреса памяти), являясь всего лишь придатком центрального процессора.

Одна из схем взаимодействия центрального процессора и сопроцессора, применяемая, в частности, в x86 сопроцессорах, реализуется следующим образом:

Начиная с процессора Intel486DX модуль операций с плавающей запятой был интегрирован в центральный процессор и назван FPU. В линейке Intel486SX модуль FPU отключался (поначалу в эту линейку попадали процессоры с бракованным FPU). Для процессоров Intel486SX также выпускался «сопроцессор» Intel487SX, но, фактически, он являлся процессором Intel486DX и при его установке процессор Intel486SX отключался.

Несмотря на интеграцию, FPU в процессорах i486 представляет собой неизменный сопроцессор, выполненный на том же кристалле, более того, схема FPU i486 полностью идентична сопроцессору предыдущего поколения 387DX вплоть до тактовой частоты (в два раза меньшей, чем частота центрального процессора). Настоящая интеграция FPU c центральным процессором началась только в процессорах Pentium модели MMX.

Сопроцессоры x86 от сторонних производителей

Широкое распространение в соответствующий период получили сопроцессоры для платформы x86, выпускавшиеся компанией Weitek — ею были выпущены 1167, 2167 в виде набора микросхем и микросхемы 3167, 4167, для процессоров 8086, 80286, 80386, 80486, соответственно. По сравнению с сопроцессорами от Intel они обеспечивали в 2-3 раза большую производительность, но обладали несовместимым программным интерфейсом, реализованным через технологию memory-mapping. Она сводилась к тому, что основной процессор должен был записывать информацию в те или иные области памяти, контролируемые Weitek-овским сопроцессором (собственно, оперативной памяти там, конечно не было). Конкретный адрес, куда производилась запись, интерпретировался в качестве той или иной команды. Несмотря на несовместимость, сопроцессоры от Weitek были широко поддержаны как разработчиками ПО, так и производителями материнских плат, предусматривавших на них гнёзда для установки такой микросхемы.

Ряд других компаний также выпускал различные несовместимые математические сопроцессоры, реализуя интерфейс к ним через порты ввода-вывода или прерывания BIOS, но они не получили такого широкого распространения.

Компании-производители клонов выпускали совместимые с 80287 80387 сопроцессоры, работавшие быстрее аналогичных интеловских. Среди этих компаний можно упомянуть Cyrix, AMD, Chips & Technologies (C&T). Иногда система команд этих сопроцессоров расширялась несколькими несовместимыми, например, аналог 80287 от C&T содержал команды для работы с вектором из четырёх значений с плавающей точкой. Серьёзной поддержки от производителей ПО эти расширенные команды не получили.

Процессоры EMC87 от фирмы Cyrix могли работать как в режиме программной совместимости с Intel 80387, так и в собственном несовместимом режиме программирования. Для них обеспечивалась аппаратная совместимость с разъёмом 80387-го сопроцессора.

В СССР выпускалась микросхема (КМ)1810ВМ87, которая являлась аналогом 8087

Другие платформы

Аналогично, материнские платы ПК, построенных на процессорах Motorola, до разработки этой фирмой процессора MC68040 (в который сопроцессор был встроен) содержали математический сопроцессор. Как правило, в качестве FPU использовался сопроцессор 68881 16 МГц или 68882 25 МГц. Практически любой современный процессор имеет встроенный сопроцессор.

Компания Weitek также выпускала математические сопроцессоры для платформ 68000 и MIPS.

Устройство FPU

Все процессоры Intel и AMD, начиная с 486DX, имеют встроенный математический сопроцессор, и в отдельном сопроцессоре не нуждаются (за исключением Intel486SX). Тем не менее, термин x87 всё ещё используется для выделения той части инструкций процессора, которая занимается вычислениями с использованием плавающей запятой; компиляторы могут использовать эти инструкции для производства кода, который работает быстрее, нежели тот, что использует вызовы к библиотекам для выполнения операций с плавающей запятой.

Инструкции x87 совместимы со стандартом IEEE-754. Однако, x87 выполняют операции не в строгом соответствии с форматами IEEE-754, из-за использования более широких регистров. Поэтому последовательность арифметических операций может выполняться несколько по-разному на наборе x87 и на процессоре, строго следующем формату IEEE-754.

x87 организует свои регистры не как массив, как большинство других архитектур, а как регистровый стек, работающий по принципу обратной польской записи. Это означает, что в один момент времени, только два верхних регистра доступны для проведения операций, а доступ к другим регистрам требует манипуляций со стеком. Хотя такая организация получается и удобной для программистов, она делает трудоёмким построение эффективного кода x87 для компиляторов.

Начиная с Pentium III, вычисления с помощью инструкций SSE осуществляются с одинарной точностью, а в более поздних версиях — с двойной точностью форматов IEEE-754. После появления SSE2, использование x87 в значительной степени умаляется в 64-разрядных архитектурах x86-64 и связанных с ней 64-битных реализациях операционных систем, таких как Microsoft Windows, Mac OS X, Solaris, FreeBSD и Linux, хотя он по-прежнему хорошо поддерживается для полной совместимости со старыми приложениями.

Модуль операций с плавающей запятой [2] [3] представляет собой стековый калькулятор, работающий по принципу обратной польской записи. Перед операцией аргументы помещаются в LIFO-стек, при выполнении операции необходимое количество аргументов снимается со стека. Результат операции помещается в стек, где может быть использован в дальнейших вычислениях или может быть снят со стека для записи в память. Также поддерживается и прямая адресация аргументов в стеке относительно вершины.

Форматы данных

Внутри FPU числа хранятся в 80-битном формате с плавающей запятой, для записи же или чтения из памяти могут использоваться:

FPU также поддерживает специальные численные значения:

Регистры

В FPU можно выделить три группы регистров:

Система команд сопроцессора

Система включает около 80 команд. Их классификация:

См. также

Примечания

Для чего служит сопроцессор современного микропроцессора. Смотреть фото Для чего служит сопроцессор современного микропроцессора. Смотреть картинку Для чего служит сопроцессор современного микропроцессора. Картинка про Для чего служит сопроцессор современного микропроцессора. Фото Для чего служит сопроцессор современного микропроцессора

8 бит · 16 бит · 32 бит · 64 бит · 128 битПараллелизм

PipelineКонвейер · In-Order & Out-of-Order execution · Переименование регистров · Speculative execution
УровниБит · Инструкций · Суперскалярность · Данных · Задач
ПотокиМногопоточность · Simultaneous multithreading · Hyperthreading · Superthreading · Аппаратная виртуализация
Классификация ФлиннаSISD · SIMD · MISD · MIMD
Реализации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, вид снизу … Википедия

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *