Сопроцессор - что такое? Описание и отзывы о работе. Функции и принципы работы математического сопроцессора Что такое сопроцессор: общее понимание

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

Что такое сопроцессор: общее понимание

Вам будет интересно:

Прежде всего давайте посмотрим, что это вообще такое и для чего нужно. Исходя из названия этого устройства, нетрудно сделать вывод о том, что это какой-то дополнительный процессор, который установлен в компьютерной системе вместе с главным (центральным). Как и ЦП, сопроцессор монтируется на материнской плате. Однако следует различать основные варианты его установки. Что касается устройства сопроцессора, он может быть представлен и в виде отдельной микросхемы (чипа), для которого на «материнке» отведено специальное место для монтажа (шина), и в виде компонента, встроенного прямо в центральный процессор.

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

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

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

1) Команды передачи данных: - Вещественные данные; - Целочисленные данные; - Десятичные данные.

2) Команды сравнения данных: - Вещественные данные; - Целочисленные данные; - Анализ; - С нулём.

3) Арифметические команды: - Вещественные данные: сложение, вычитание, умножение, деление;

4) Целочисленные данные: сложение, вычитание, умножение, деление; - Вспомогательные арифметические команды (квадратный корень, модуль, изменение знака, выделение порядка и мантиссы).

5) Трансцендентные команды: - Тригонометрия: синус, косинус, тангенс, арктангенс; - Вычисление логарифмов и степеней.

6) Команды управления: - Инициализация сопроцессора; - Работа со средой; - Работа со стеком; - Переключение режимов

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

Математический сопроцессор 80x287 в колодке на материнской плате персонального компьютера.

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

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

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

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

Сопроцессоры могут входить в набор логики, разработанный одной конкретной фирмой (например Intel выпускала в комплекте с процессором 8086 сопроцессоры 8087 и 8089) или выпускаться сторонним производителем (например, Weitek (англ.) 1064 для Motorola m68k и 1067 для Intel 80286).

Микросхемы звукогенераторов - специализированные микросхемы для генерации звука. Они могут использоваться для воспроизведения звуковых эффектов и синтезированной музыки (см. chiptune) в компьютерах, игровых системах (консолях, автоматах) и бытовой технике. Англоязычное название для микросхем этого типа - sound chip , в русской технической терминологии существует сокращение ПГЗ - программируемый генератор звука. Они могут быть полностью цифровыми, полностью аналоговыми, или смешанного типа. В их состав могут входить генераторы частоты (обычно основанные на делении входной тактовой частоты с программно изменяемым коэффициентом деления), контроллеры огибающей, схемы воспроизведения семплов, фильтры, и усилители сигнала.

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

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

Графический процессор (англ. graphics processing unit , GPU ) - отдельное устройство персонального компьютера или игровой приставки, выполняющее графический рендеринг. Современные графические процессоры очень эффективно обрабатывают и отображают компьютерную графику. Благодаря специализированной конвейерной архитектуре они намного эффективнее в обработке графической информации, чем типичный центральный процессор. Графический процессор в современных видеоадаптерах применяется в качестве ускорителя трёхмерной графики.

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

Вероятностный процессор оперирует вероятностями на аппаратном уровне. Математический аппарат основан на теореме Байеса

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

· 1 Области применения

· 2 Прототипы

Области применения[править | править исходный текст]

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

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

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

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

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

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

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

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

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

· 2 Устройство FPU

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

o 2.2 Регистры

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

· 3 См. также

· 4 Примечания

Сопроцессоры[править | править исходный текст]

Основная статья: X87

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

Сопроцессоры Intel семейства x86[править | править исходный текст]

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

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

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

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

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

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

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

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

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

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

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

Сопроцессоры могут входить в набор логики, разработанный одной конкретной фирмой (например, Intel выпускала для процессоров 8086 и 8088 сопроцессоры и 8089, Motorola - сопроцессор Motorola 68881) или выпускаться сторонним производителем (например, Weitek (англ.) для Motorola m68k и 1067 для Intel 80286).

Сопроцессор в программировании

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

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

Напишите отзыв о статье "Сопроцессор"

Примечания

См. также

Ссылки

  • whatis.techtarget.com/definition/coprocessor
  • www.webopedia.com/TERM/C/coprocessor.html
  • www.pcmag.com/encyclopedia/term/46625/math-coprocessor
  • www.trevormarshall.com/old_papers/Approaching-Desktop-Supercomputer.pdf 1990 - Computing coprocessors, early 32 bit computing coprocessors
  • Hansen, Paul Mark, November 1988

Отрывок, характеризующий Сопроцессор

Княжна Марья писала, что она была в отчаянии от происшедшего между ними недоразумения. Какие бы ни были чувства ее отца, писала княжна Марья, она просила Наташу верить, что она не могла не любить ее как ту, которую выбрал ее брат, для счастия которого она всем готова была пожертвовать.
«Впрочем, писала она, не думайте, чтобы отец мой был дурно расположен к вам. Он больной и старый человек, которого надо извинять; но он добр, великодушен и будет любить ту, которая сделает счастье его сына». Княжна Марья просила далее, чтобы Наташа назначила время, когда она может опять увидеться с ней.
Прочтя письмо, Наташа села к письменному столу, чтобы написать ответ: «Chere princesse», [Дорогая княжна,] быстро, механически написала она и остановилась. «Что ж дальше могла написать она после всего того, что было вчера? Да, да, всё это было, и теперь уж всё другое», думала она, сидя над начатым письмом. «Надо отказать ему? Неужели надо? Это ужасно!»… И чтоб не думать этих страшных мыслей, она пошла к Соне и с ней вместе стала разбирать узоры.
После обеда Наташа ушла в свою комнату, и опять взяла письмо княжны Марьи. – «Неужели всё уже кончено? подумала она. Неужели так скоро всё это случилось и уничтожило всё прежнее»! Она во всей прежней силе вспоминала свою любовь к князю Андрею и вместе с тем чувствовала, что любила Курагина. Она живо представляла себя женою князя Андрея, представляла себе столько раз повторенную ее воображением картину счастия с ним и вместе с тем, разгораясь от волнения, представляла себе все подробности своего вчерашнего свидания с Анатолем.
«Отчего же бы это не могло быть вместе? иногда, в совершенном затмении, думала она. Тогда только я бы была совсем счастлива, а теперь я должна выбрать и ни без одного из обоих я не могу быть счастлива. Одно, думала она, сказать то, что было князю Андрею или скрыть – одинаково невозможно. А с этим ничего не испорчено. Но неужели расстаться навсегда с этим счастьем любви князя Андрея, которым я жила так долго?»
– Барышня, – шопотом с таинственным видом сказала девушка, входя в комнату. – Мне один человек велел передать. Девушка подала письмо. – Только ради Христа, – говорила еще девушка, когда Наташа, не думая, механическим движением сломала печать и читала любовное письмо Анатоля, из которого она, не понимая ни слова, понимала только одно – что это письмо было от него, от того человека, которого она любит. «Да она любит, иначе разве могло бы случиться то, что случилось? Разве могло бы быть в ее руке любовное письмо от него?»
Трясущимися руками Наташа держала это страстное, любовное письмо, сочиненное для Анатоля Долоховым, и, читая его, находила в нем отголоски всего того, что ей казалось, она сама чувствовала.

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

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

· обработка экономической информации;

· моделирование;

· графические преобразования;

· промышленное управление;

· системы числового управления;

· роботы;

· навигация;

· сбор данных и др.

· Кэш-память

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

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

Важно заметить, что для согласования содержимого кэш-памяти и оперативной памяти используют три метода записи:

· Сквозная запись (write through) - одновременно с кэш-памятью обновляется оперативная память.

· Буферизованная сквозная запись (buffered write through) - информация задерживается в кэш-буфере перед записью в оперативную память и переписывается в оперативную память в те циклы, когда ЦП к ней не обращается.

· Обратная запись (write back) - используется бит изменения в поле тега, и строка переписывается в оперативную память только в том случае, в случае если бит изменения равен 1.

В структуре кэш-памяти выделяют два типа блоков данных:

· память отображения данных (собственно сами данные, дублированные из оперативной памяти);

· память тегов (признаки, указывающие на расположение кэшированных данных в оперативной памяти).

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

· полностью ассоциативный кэш;

· кэш прямого отображения;

· множественный ассоциативный кэш.

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

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

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

Кэш прямого отображения (или одновходовый ассоциативный кэш). В этом случае адрес памяти (номер блока) однозначно определяет строку кэша, в которую будет помещен данный блок. Физический адрес разбивается на три части: смещение в блоке (строке кэша), номер строки кэша и теᴦ. Тот или иной блок будет всœегда помещаться в строго определœенную строку кэша, при крайне важно сти заменяя собой хранящийся там другой блок. Когда ЦП обращается к кэшу за необходимым блоком, для определœения удачного обращения или кэш-промаха достаточно проверить тег лишь одной строки.

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

Множественный ассоциативный кэш (или частично-ассоциативный кэш). Это компромиссный вариант между первыми двумя алгоритмами.

При этом способе организации кэш-памяти строки объединяются в группы, в которые могут входить 2/4/8/: строк. В соответствии с количеством строк в таких группах различают 2-входовый, 4-входовый и т.п. ассоциативный кэш. При обращении к памяти физический адрес разбивается на три части: смещение в блоке (строке кэша), номер группы (набора) и теᴦ. Блок памяти, адрес которого соответствует определœенной группе, должна быть размещен в любой строке этой группы, и в теге строки размещается соответствующее значение. Очевидно, что в рамках выбранной группы соблюдается принцип ассоциативности. С другой стороны, тот или иной блок может попасть только в строго определœенную группу, что перекликается с принципом организации кэша прямого отображения. Для того чтобы процессор смог идентифицировать кэш-промах, ему нужно будет проверить теги лишь одной группы (2/4/8/: строк).