Сопроцессор — специализированный процессор, расширяющий возможности центрального процессора компьютерной системы, но оформленный как отдельный функциональный модуль. Физически сопроцессор может быть отдельной микросхемой или может быть встроен в центральный процессор (как это делается в случае математического сопроцессора в процессорах для ПК начиная с Intel 486DX).
Различают следующие виды сопроцессоров:
Сопроцессоры могут входить в набор логики, разработанный одной конкретной фирмой (например Intel выпускала в комплекте с процессором 8086 сопроцессоры 8087 и 8089) или выпускаться сторонним производителем (например, Weitek (англ.) 1064 для Motorola m68k и 1067 для Intel 80286).
Сопроцессор в программировании
Сопроцессор расширяет систему инструкций центрального процессора, поэтому для его использования, программа (компилируемая без интерпретации и вызова внешних библиотек) должна содержать эти инструкции. Настройки современных компиляторов для языков высокого уровня под процессоры семейства x86 зачастую позволяют выбирать: использовать математический сопроцессор или нет, что особенно важно при создании кода, который будет исполняться внутри обработчика аппаратного прерывания.
См. также
Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её. Это примечание по возможности следует заменить более точным.
сопроцессор — сущ., кол во синонимов: 1 • процессор (18) Словарь синонимов ASIS. В.Н. Тришин. 2013 … Словарь синонимов
сопроцессор — сопроц ессор, а … Русский орфографический словарь
сопроцессор — а; м. [англ. coprocessor] Информ. Устройство компьютера, предназначенное для расширения возможностей выполнения операций … Энциклопедический словарь
сопроцессор — а; м. (англ. coprocessor); информ. Устройство компьютера, предназначенное для расширения возможностей выполнения операций … Словарь многих выражений
Математический сопроцессор — 80×287 в колодке на базовой плате персонального компьютера … Википедия
арифметический сопроцессор MC68881 — Разработан фирмой Motorola для поддержки микропроцессора MC68030 при выполнении операций с плавающей точкой по стандарту IEЕЕ 754 с одинарной, двойной и увеличенной точностью, а также при вычислении тригонометрических функций. Тактовые частоты… … Справочник технического переводчика
арифметический сопроцессор i8087 фирмы Intel — (для МП типов: i8086, i8088) Выполняет с помощью 68 команд арифметические операции над десятичными и целыми числами, а также над 20 разрядными числами с плавающей точкой. Сопроцессор работает параллельно с основным микропроцессором и ускоряет… … Справочник технического переводчика
арифметический сопроцессор — Микропроцессор, специализированный для выполнения сложных арифметических операций, главным образом операций с плавающей точкой в 100 раз быстрее, чем программным путем. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике… … Справочник технического переводчика
Сопроцессор — специализированный процессор, расширяющий возможности центрального процессора компьютерной системы, но оформленный как отдельный функциональный модуль. Физически сопроцессор может быть отдельной микросхемой или может быть встроен в центральный процессор (как это делается в случае математического сопроцессора в процессорах для ПК начиная с Intel 486DX).
Различают следующие виды сопроцессоров:
Сопроцессоры могут входить в набор логики, разработанный одной конкретной фирмой (например, Intel выпускала для процессоров 8086 и 8088 сопроцессоры 8087 и 8089, Motorola — сопроцессор Motorola 68881) или выпускаться сторонним производителем (например, Weitek (англ.) 1064 для Motorolam68k и 1067 для Intel 80286).
Сопроцессор в программировании
Сопроцессор расширяет систему инструкций центрального процессора, поэтому для его использования программа (компилируемая без интерпретации и вызова внешних библиотек) должна содержать эти инструкции. Настройки современных компиляторов для языков высокого уровня под процессоры семейства x86 зачастую позволяют выбирать: использовать математический сопроцессор или нет, что особенно важно при создании кода, который будет исполняться внутри обработчика аппаратного прерывания.
Также бывают периферийные процессоры, предназначенные для управления периферийными устройствами и разгрузки центрального процессора, а именно:
Звуковые процессоры [Микросхемы звукогенераторов]
Микросхемы звукогенераторов — специализированные микросхемы для генерации звука. Они могут использоваться для воспроизведения звуковых эффектов и синтезированной музыки (см. chiptune) в компьютерах, игровых системах (консолях, автоматах) и бытовой технике. Англоязычное название для микросхем этого типа — sound chip, в русской технической терминологии существует сокращение ПГЗ — программируемый генератор звука. Они могут быть полностью цифровыми, полностью аналоговыми, или смешанного типа. В их состав могут входить генераторы частоты (обычно основанные на делении входной тактовой частоты с программно изменяемым коэффициентом деления), контроллеры огибающей, схемы воспроизведения семплов, фильтры, и усилители сигнала.
Звукогенераторы можно разделить на две основные категории — непосредственно синтезирующие звук, и воспроизводящие заранее оцифрованные звуки. Первая категория также может быть разделена по принципу работы на простые синтезаторы частот (построенные на делителях частоты с дополнительными компонентами), и синтезаторы, использующие метод частотной модуляции (FM-синтез, основан на взаимной модуляции нескольких генераторов звука).
В русском языке микросхемы звукогенераторов нередко называют звуковыми (со)процессорами. Однако, это определение некорректно — микросхемы звукогенератора не занимаются обработкой звуковых данных (основная функция процессора), они генерируют звук по одному определённому аппаратно алгоритму, согласно указаниям внешнего по отношению к ним процессора системы. Название звуковой процессор может применяться к цифровым сигнальным процессорам, используемым для обработки звука (например, создания эффекта программно управляемого эхо), а также к микросхемам звукогенераторов, содержащих в своём составе микропроцессор.
Графический процессор
Графический процессор (англ. graphics processing unit, GPU) — отдельное устройство персонального компьютера или игровой приставки, выполняющее графический рендеринг; в начале 2000-х годов графические процессоры стали массово применяться и в других устройствах: планшетные компьютеры, встраиваемые системы, цифровые телевизоры.
Современные графические процессоры очень эффективно обрабатывают и отображают компьютерную графику, благодаря специализированной конвейерной архитектуре они намного эффективнее в обработке графической информации, чем типичный центральный процессор.
Графический процессор в современных видеокартах (видеоадаптерах) применяется в качестве ускорителя трёхмерной графики.
Может применяться как в составе дискретной видеокарты, так и в интегрированных решениях(встроенных в северный мост либо в гибридный процессор).
Вероятностный процессор
Вероятностный процессор оперирует вероятностями на аппаратном уровне. Математический аппарат основан на теореме Байеса. В некотором роде, вероятностный процессор реализует аналоговые вычисления на технологии КМОП. Подобный подход, теоретически, позволяет эффективно реализовать приближенные вычисления, основанные на нечеткой логике или нейронных сетях.
Области применения
Вероятностный процессор относится к специализированным процессорам и, преимущественно, будет использоваться в системах распознавания образов. Например, в биометрии, для диагностики заболеваний, в различных системах мониторинга, в системах технического зрения, системах распознавания голоса, фильтрации спама, фишинга, определении кредитоспособности заемщиков и многих других задачах. Вероятностный подход также предполагает решение технических задач стохастическими методами (методами Монте-Карло), с любой требуемой точностью решения.
Предполагается, что вероятностный процессор может использоваться в современных компьютерах в качестве еще одного сопроцессора наряду с графическим процессором, сигнальным процессором или ПЛИС (FPGA), обеспечивая высокую скорость и эффективность решения широкого круга специализированных задач.
Прототипы
PCMOS: На Международной конференции по полупроводниковым схемам (ISSCC 2009) исследователи из Rice University показали реально работающий вероятностный процессор PCMOS (англ.) (probability-based complementary metal-oxide semiconductor). Прототип в 7 раз быстрее КМОП (CMOS) чипов, и при этом потребляет в 30 раз меньше энергии.
GP5: Компания Lyric Semiconductor представила прототип специализированного процессора для коррекции ошибок твердотельной (флэш) памяти LEC (Lyric error correction). К 2013 году компания планирует представить универсальный программируемый вероятностный процессор GP5. Для новой аппаратной архитектуры разрабатывается новый язык программирования PSBL (Probability Synthesis to Bayesian Logic). Представить первую версию PSBL планируется в конце 2010 г.
Математический сопроцессор
Математический сопроцессор — сопроцессор для расширения командного множества центрального процессора и обеспечивающий его функциональностью модуля операций с плавающей запятой, для процессоров, не имеющих интегрированного модуля.
Модуль операций с плавающей запятой (или с плавающей точкой; англ. 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, хотя он по-прежнему хорошо поддерживается для полной совместимости со старыми приложениями.
Модуль операций с плавающей запятой представляет собой стековый калькулятор, работающий по принципу обратной польской записи. Перед операцией аргументы помещаются в LIFO-стек, при выполнении операции необходимое количество аргументов снимается со стека. Результат операции помещается в стек, где может быть использован в дальнейших вычислениях или может быть снят со стека для записи в память. Также поддерживается и прямая адресация аргументов в стеке относительно вершины.
Форматы данных
Внутри FPU числа хранятся в 80-битном формате с плавающей запятой, для записи же или чтения из памяти могут использоваться:
FPU также поддерживает специальные численные значения:
Регистры
В FPU можно выделить три группы регистров:
Система команд сопроцессора
Система включает около 80 команд. Их классификация:
Super I/O
Super I/O (англ. Super Input/output; дословно: супер ввода-вывода) — название класса сопроцессоров, которые начали использоваться после 1980-х годов на материнских платах IBM PC-совместимых компьютеров путём сочетания функций многих контроллеров, сперва одной платой, устанавливаемой в слот расширения, а затем и одной микросхемой, тем самым достигая уменьшения числа микросхем контроллеров, и таким образом привели к снижению сложности и стоимости компьютера в целом. Super I/O объединяет интерфейсы различных низкоскоростных устройств.
Фактически, на рынке материнских плат массового сегмента предоставлена продукция всего четырёх фирм: ITE Tech, Nuvoton, Microchip Technology и Fintek. Производители брендовой продукции (IBM, HP, Dell, FSC) как правило используют проприетарные разработки схемотехники материнских плат и не публикуют спецификаций применяемых контроллеров.
Как правило, включает в себя следующие функции:
Super I/O также может включать в себя и другие интерфейсы, такие как игровой (MIDI или джойстик) или инфракрасный порты.
Изначально Super I/O связывались через шину ISA. Одновременно с развитием IBM PC-совместимых компьютеров происходило смещение Super I/O, сперва на шины VLB, затем стала использоваться шина PCI. Современные Super I/O используют шину LPC (интерфейс которой предоставляет южный мост материнской платы) и часто реализованы в составе чипсета.
* математические сопроцессоры общего назначения, обычно ускоряющие вычисления с плавающей запятой,
* сопроцессоры ввода-вывода (например — 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.