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

Обновлено: 30.06.2024

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

Различают следующие виды сопроцессоров:

- математические сопроцессоры общего назначения, обычно ускоряющие вычисления с плавающей точкой,

- сопроцессоры ввода-вывода (например — Intel 8089), разгружающие центральный процессор от контроля за операциями ввода-вывода или расширяющие стандартное адресное пространство процессора,

- сопроцессоры для выполнения каких-либо узкоспециализированных вычислений.

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

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

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

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

- Существует специальная команда ожидания (FWAIT), принудительно останавливающая процессор до завершения вычислений (если для продолжения программы необходимы их результаты). В настоящее время команда используется лишь для обработки исключений при работе с плавающей точкой, работа процессора и сопроцессора синхронизируется прозрачно для программиста.

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

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

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




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

Различают следующие виды сопроцессоров:

- математические сопроцессоры общего назначения, обычно ускоряющие вычисления с плавающей точкой,

- сопроцессоры ввода-вывода (например — Intel 8089), разгружающие центральный процессор от контроля за операциями ввода-вывода или расширяющие стандартное адресное пространство процессора,

- сопроцессоры для выполнения каких-либо узкоспециализированных вычислений.

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

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

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

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

- Существует специальная команда ожидания (FWAIT), принудительно останавливающая процессор до завершения вычислений (если для продолжения программы необходимы их результаты). В настоящее время команда используется лишь для обработки исключений при работе с плавающей точкой, работа процессора и сопроцессора синхронизируется прозрачно для программиста.

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

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

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

Важной частью архитектуры микропроцессоров Intel является наличие устройства для обработки числовых данных в формате с плавающей точкой, называемого математическим сопроцессором . Архитектура компьютеров на базе микропроцессоров вначале опиралась исключительно на целочисленную арифметику. С ростом мощи стали появляться устройства для обработки чисел с плавающей точкой. В архитектуре семейства микропроцессоров Intel 8086 устройство для обработки чисел с плавающей точкой появилось в составе компьютера на базе микропроцессора i8086/88 и получило название математический сопроцессор или просто сопроцессор. Выбор такого названия был обусловлен тем, что,

  • во-первых, это устройство было предназначено для расширения вычислительных возможностей основного процессора;
  • во-вторых, оно было реализовано в виде отдельной микросхемы, то есть его присутствие было необязательным. Микросхема сопроцессора для микропроцессора i8086/88 имела название i8087.

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

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

  • полная поддержка стандартов IEEE-754 и 854 на арифметику с плавающей точкой. Эти стандарты описывают как форматы данных, с которыми должен работать сопроцессор, так и набор реализуемых им функций;
  • поддержка численных алгоритмов для вычисления значений тригонометрических функций, логарифмов и т. п.;
  • обработка десятичных чисел с точностью до 18 разрядов, что позволяет сопроцессору выполнять арифметические операции без округления над целыми десятичными числами со значениями до 10 18 ;
  • обработка вещественных чисел из диапазона ±3.37х10 -4932 …1.18х10 +4932 .

Форма представления чисел с плавающей точкой описана здесь .

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

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

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

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

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

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

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

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

  • Восемь регистров r0…r7 , составляющих основу программной модели сопроцессора — стек сопроцессора. Размерность каждого регистра 80 битов. Такая организация характерна для устройств, специализирующихся на обработке вычислительных алгоритмов.
  • Три служебных регистра:
    — регистр состояния сопроцессора swr (Status Word Register — регистр слова состояния) — отражает информацию о текущем состоянии сопроцессора;
    — управляющий регистр сопроцессора cwr (Control Word Register — регистр слова управления) — управляет режимами работы сопроцессора;
    — регистр тегов twr (Tags Word Register — слово тегов) — используется для контроля за состоянием каждого из регистров стека.
  • Два регистра указателей — данных dpr (Data Point Register) и команд ipr (Instruction Point Register). Они предназначены для запоминания информации об адресе команды, вызвавшей исключительную ситуацию и адресе ее операнда. Эти указатели используются при обработке исключительных ситуаций (но не для всех команд).

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

Регистр состояния сопроцессора SWR

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

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

    6 флагов исключительных ситуаций PE, OE, UE, ZE, DE, IE.
    Исключения — это разновидность прерываний, с помощью которых процессор информирует программу о некоторых особенностях ее реального исполнения. Сопроцессор также обладает способностью возбуждения подобных прерываний при возникновении определенных ситуаций (не обязательно ошибочных). Все возможные исключения сведены к 6и типам, каждому из которых соответствует 1 бит в регистре swr . Программисту не обязательно писать обработчик для реакции на ситуацию, приведшую к некоторому исключению. Сопроцессор умеет самостоятельно реагировать на многие из них. Это так называемая обработка исключений по умолчанию. Для того чтобы вызвать обработку определенного типа исключения по умолчанию, необходимо это исключение оставить не маскированным. Такое действие выполняется с помощью установки в 1 соответствующего бита в управляющем регистре сопроцессора cwr . Типы исключений, фиксируемые с помощью регистра swr:

  • IE (Invalide operation Error) — недействительный код операция;
  • DE (Denormalized operand Error) — ненормированный операнд;
  • ZE (divide by Zero Error) — ошибка деления на нуль;
  • ОЕ (Overflow Error) — ошибка переполнения. Возникает в случае выхода порядка числа за максимально допустимый диапазон;
  • UE (Underflow Error) — ошибка антипереполнения. Возникает, когда результат слишком мал (близок к нулю);
  • РЕ (Precision Error) — ошибка точности. Устанавливается, когда сопроцессору приходится округлять результат из-за того, что его точное представление невозможно. Так, сопроцессору никогда не удастся точно разделить 10 на 3.

Регистр управления сопроцессора CWR

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

Он состоит из:

  • шести масок исключений PM, UM, OM, ZM, DM, IM ;
  • поля управления точностью PC (Precision Control);
  • поля управления округлением RC (Rounding Control).

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

  • PC =00 — длина мантиссы 24 бита;
  • PC =10 — длина мантиссы 53 бита;
  • PC =11 — длина мантиссы 64 бита.

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

Поле управления округлением RC позволяет управлять процессом округления чисел в процессе работы сопроцессора. Необходимость операции округления может появиться в ситуации, когда после выполнения очередной команды сопроцессора получается не представимый результат, например, периодическая дробь. Установив одно из значений в поле RC , можно выполнить округление в необходимую сторону.
Значения поля RC с соответствующим алгоритмом округления:

  • 00 — значение округляется к ближайшему числу, которое можно представить в разрядной сетке регистра сопроцессора;
  • 01 — значение округляется в меньшую сторону;
  • 10 — значение округляется в большую сторону;
  • 11 — производится отбрасывание дробной части числа. Используется для приведения значения к форме, которая может использоваться в операциях целочисленной арифметики.

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

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

  • 00 — регистр стека сопроцессора занят допустимым ненулевым значением;
  • 01 — регистр стека сопроцессора содержит нулевое значение;
  • 10 — регистр стека сопроцессора содержит одно из специальных численных значений, за исключением нуля;
  • 11 — регистр пуст и в него можно производить запись. Это значение в двухбитовом поле регистра тегов не означает, что все биты соответствующего регистра стека должны быть обязательно нулевыми.
Принцип работы сопроцессора

Стек сопроцессора

Регистровый стек сопроцессора организован по принципу кольца. Cреди восьми регистров, составляющих стек, нет такого, который является вершиной стека. Все регистры стека с функциональной точки зрения абсолютно одинаковы и равноправны. Вершина в кольцевом стеке сопроцессора является плавающей. Контроль текущей вершины осуществляется аппаратно с помощью 3-битового поля top регистра swr .

В поле top фиксируется номер регистра стека r0…r7 , являющегося в данный момент текущей вершиной стека.
Команды сопроцессора оперируют не физическими номерами регистров стека r0…r7 , а их логическими номерами st(0)…st(7) . C помощью логических номеров реализуется относительная адресация регистров стека сопроцессора. Например, если текущей вершиной до записи в стек является физический регистр стека r3 , то после записи в стек текущей вершиной становится физический регистр стека r2 . То есть, по мере записи в стек, указатель его вершины движется по направлению к младшим номерам физических регистров (уменьшается на единицу). Если текущей вершиной является r0 , то после записи очередного значения в стек сопроцессора его текущей вершиной станет физический регистр r7 . Что касается логических номеров регистров стека st(0)…st(7) , то они перемещаются вместе с изменением текущей вершины стека. Логическая вершина стека всегда имеет имя st(0) .
Поскольку при написании программы разработчик манипулирует не абсолютными, а относительными номерами регистров стека, у него могут возникнуть трудности при попытке интерпретации содержимого регистра тегов twr , с соответствующими физическими регистрами стека. В качестве связующего звена необходимо привлекать информацию из поля top регистра swr . Таким образом реализуется принцип кольца.
Такая организация стека обладает большой гибкостью, в частности при передаче параметров в процедуру. Для повышения гибкости разработки и использования процедур не желательно привязывать их по передаваемым параметрам к аппаратным ресурсам (физическим номерам регистров сопроцессора). Гораздо удобнее задавать порядок следования передаваемых параметров в виде логических номеров регистров. Такой способ передачи был бы однозначным и не требовал от разработчика знания лишних подробностей об аппаратных реализациях сопроцессора. Логическая нумерация регистров сопроцессора, поддерживаемая на уровне системы команд, идеально реализует эту идею. При этом не имеет значения, в какой физический регистр стека сопроцессора были помещены данные перед вызовом подпрограммы, определяющим является только порядок следования параметров в стеке. По этой причине подпрограмме важно знать только порядок размещения передаваемых параметров в стеке.

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

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

Аннотация: В этой лекции речь идет о способах обмена информацией между ЦП и сопроцессором, о функциях математического сопроцессора и особенностях программирования ПЭВМ с сопроцессором. Рассматривается структура сопроцессоров семейства Intel x87 и блока вещественной арифметики (FPU) процессоров Pentium, а также организация сопроцессорного интерфейса ЦП семейства Motorola MC680х0. Цель: познакомить с основными принципами организации сопроцессоров, сформировать умения и навыки, необходимые для понимания работы систем с сопроцессорами.

Сопроцессоры. Способы обмена информацией между ЦП и сопроцессором

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

Использование сопроцессоров с различной функциональностью позволяет решать проблемы широкого круга:

  • обработка экономической информации;
  • моделирование;
  • графические преобразования;
  • промышленное управление;
  • системы числового управления;
  • роботы;
  • навигация;
  • сбор данных и др.

Можно выделить два способа обмена информацией между ЦП и сопроцессором:

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

Математический сопроцессор: основные функции

\pi

Один из наиболее распространенных типов сопроцессоров - математический сопроцессор . Математический сопроцессор предназначен для быстрого выполнения арифметических операций с плавающей точкой, предоставления часто используемых вещественных констант ( , log 210, log 2e, ln2, :), вычисления тригонометрических и прочих трансцендентных функций (tg, arctg, log , . ).

Стандарт IEEE -754 определяет три основных способа кодирования (типа) вещественных чисел.


А сопроцессор компьютерный процессор, используемый для дополнения функций основного процессора ( ЦПУ). Операции, выполняемые сопроцессором, могут быть плавающая точка арифметика, графика, обработка сигнала, обработка строк, криптография или Интерфейс ввода / вывода с периферийными устройствами. Путем выгрузки ресурсоемких задач из главный процессор, сопроцессоры могут повысить производительность системы. Сопроцессоры позволяют настраивать линейку компьютеров, так что клиентам, которым не нужна дополнительная производительность, не нужно за нее платить.

Содержание

Функциональность

Сопроцессоры различаются по степени автономности. Некоторые (например, FPUs) полагаются на прямое управление через инструкции сопроцессора, встроенные в процессор поток инструкций. Другие - самостоятельные процессоры, способные работать асинхронно; они все еще не оптимизированы для код общего назначения, или они неспособны к этому из-за ограниченного Набор инструкций сосредоточен на ускорение конкретных задач. Обычно они движимы прямой доступ к памяти (DMA), с хост-процессор Здание список команд. В PlayStation 2с Двигатель эмоций содержал необычный DSP-любить SIMD векторный блок способен работать в обоих режимах.

История

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

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

Intel

Оригинал IBM PC включает розетку для Intel 8087 плавающая точка сопроцессор (он же FPU), который был популярным вариантом для людей, использующих ПК для системы автоматизированного проектирования или математические вычисления. В этой архитектуре сопроцессор ускоряет арифметические операции с плавающей запятой в 50 раз. Например, пользователи, которые использовали ПК только для обработки текстов, сэкономили на высокой стоимости сопроцессора, который не повысил бы производительность операций обработки текста.

8087 был тесно интегрирован с 8086/ 8088 и ответил на плавающую точку Машинный код коды операций, вставленные в поток инструкций 8088. Процессор 8088 без 8087 не мог бы интерпретировать эти инструкции, требуя отдельных версий программ для систем с FPU и не-FPU или, по крайней мере, теста во время выполнения для обнаружения FPU и выбора соответствующих функций математической библиотеки.


Еще одним сопроцессором для центрального процессора 8086/8088 был 8089 сопроцессор ввода / вывода. Он использовал ту же технику программирования, что и 8087, для операций ввода / вывода, таких как передача данных из памяти на периферийное устройство, и тем самым уменьшая нагрузку на ЦП. Но IBM не использовала его при разработке IBM PC, и Intel прекратила разработку сопроцессоров этого типа.

В Intel 80386 микропроцессор использовали дополнительный "математический" сопроцессор ( 80387) для выполнения операций с плавающей запятой непосредственно в оборудование. Процессор Intel 80486DX включал в себя оборудование с плавающей запятой. Intel выпустила недорогой процессор 80486SX, в котором не было оборудования с плавающей запятой, а также продала сопроцессор 80487SX, который отключал основной процессор при установке, поскольку 80487SX был полным 80486DX с другим набором контактов. [1]

Процессоры Intel более поздней версии, чем 80486, интегрировали оборудование с плавающей запятой в основной процессор; прогресс в интеграции устранил ценовое преимущество продажи процессора с плавающей запятой в качестве дополнительного элемента. Было бы очень сложно адаптировать методы печатной платы, подходящие для тактовой частоты процессора 75 МГц, для соответствия стандартам временной задержки, энергопотребления и радиочастотных помех, необходимых для тактовых частот в диапазоне гигагерц. Эти встроенные процессоры с плавающей запятой по-прежнему называются сопроцессорами, потому что они работают параллельно с основным ЦП.

Motorola

В Motorola 68000 семья имела 68881/68882 сопроцессоры, которые обеспечивали такое же ускорение скорости с плавающей запятой, что и процессоры Intel. Компьютеры, использующие семейство 68000, но не оборудованные аппаратным процессором с плавающей запятой, могли улавливать и эмулировать инструкции с плавающей запятой в программном обеспечении, что, хотя и работало медленнее, позволяло распространять одну двоичную версию программы для обоих случаев. Сопроцессор управления памятью 68451 был разработан для работы с процессором 68020. [3]

Современные сопроцессоры

По состоянию на 2001 год [Обновить] , специализированные графические процессоры (GPU) в виде видеокарты обычное дело. Некоторые модели звуковые карты были оснащены специальными процессорами, обеспечивающими цифровое многоканальное микширование и эффекты DSP в реальном времени еще с 1990 по 1994 год ( Гравис Ультразвук и Sound Blaster AWE32 являются типичными примерами), а Sound Blaster Audigy и Sound Blaster X-Fi это более свежие примеры.

В 2006 г. AGEIA анонсировала дополнительную карту для компьютеров, которую назвала PhysX PPU. PhysX был разработан для выполнения сложных физических вычислений, поэтому ЦПУ и GPU не должны выполнять эти трудоемкие вычисления. Он был разработан для видеоигр, хотя теоретически для него могут быть разработаны другие математические применения. В 2008 году Nvidia приобрела компанию и отказалась от линейки карт PhysX; функциональность была добавлена ​​с помощью программного обеспечения, позволяющего их графическим процессорам отображать PhysX на ядрах, обычно используемых для обработки графики, с использованием программного обеспечения ядра Nvidia PhysX.

В 2006 году BigFoot Systems представили карту расширения PCI, которую они назвали KillerNIC, которая запускала собственное специальное ядро ​​Linux на FreeScale. PowerQUICC работает на частоте 400 МГц, называя чип FreeScale Блок сетевой обработки или NPU.

В SpursEngine это медиа-ориентированная надстройка с сопроцессором на основе Ячейка микроархитектура. В SPU сами являются векторными сопроцессорами.

В 2008, Хронос Групп выпустил OpenCL с целью поддержки процессоров общего назначения, графических процессоров ATI / AMD и Nvidia (и других ускорителей) на едином общем языке для вычислить ядра.

В 2010-х годах некоторые мобильные вычислительные устройства реализовали датчик концентратор как сопроцессор. Примеры сопроцессоров, используемых для интеграции датчиков в мобильные устройства, включают: Яблоко M7 и M8 сопроцессоры движения, то Ядро датчика Qualcomm Snapdragon и Qualcomm Hexagon, а Блок голографической обработки для Microsoft HoloLens.

В 2012, Intel объявил о Intel Xeon Phi сопроцессор. [4]

По состоянию на 2016 год [Обновить] , различные компании разрабатывают сопроцессоры, направленные на ускорение искусственные нейронные сети для зрения и других когнитивных задач (например, блоки обработки изображений, TrueNorth, и Zeroth), а по состоянию на 2018 год такие чипы AI есть в смартфонах, например, от Apple и нескольких поставщиков телефонов Android.

Другие сопроцессоры

Тенденции

Со временем процессоры имеют тенденцию к росту, чтобы вбирать в себя функции наиболее популярных сопроцессоров. FPU теперь считаются неотъемлемой частью основного конвейера процессоров; SIMD единиц ускорили мультимедиа, взяв на себя роль различных DSP карты-ускорители; и даже GPU интегрированы в кристаллы ЦП. Тем не менее, специализированные блоки остаются популярными вдали от настольных компьютеров, из-за дополнительной мощности и позволяют продолжать развитие независимо от линейки продуктов с основными процессорами.

Читайте также: