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

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

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

Несмотря на то, что практически все процессоры, начиная с 486-го, оснащены встроенным сопроцессором, их быстродействие может изменяться. Исторически сложилось так, что сопроцессоры производства Intel работают быстрее, чем сопроцессоры AMD и Cyrix, однако в последнее время ситуация начинает изменяться.

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

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

Математические сопроцессоры называют ещё процессорами с плавающей запятой, потому что они особенно ярко проявляют свои возможности в этой области математики. Числа с плавающей запятой часто используются в научных расчетах и представляются, как правило, мантиссой и ординатой. Преимущество, получаемое от установки математического сопроцессора, зависит от того какие задачи решаются на компьютере. Согласно утверждению Intel сопроцессор может уменьшить время выполнения математических операций, таких как умножение, деление, возведение в степень на 80% и более. Скорость выполнения простых операций, таких как сложение и вычитание практически не уменьшается.

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

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

Микропроцессоры 8088, 80286, 80386 сконструированы так, что они позволяют использовать арифметические сопроцессоры 8087, 80287, 80387 фирмы "Intel"-соответственно. Более поздние модели микропроцессоров имеют встроенные сопроцессоры.

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

Выполняемая программа должна сама определять наличие сопроцессора и после этого использовать написанные для него инструкции; в противном случае сопроцессор только потребляет ток и ничего не делает. Большинство современных программ, рассчитанных на применение сопроцессоров, обнаруживают его присутствие и используют предоставляемые возможности. Наиболее эффективно сопроцессоры используются в программах со сложными математическими расчетами: в электронных таблицах, базах данных, статистических программах и системах автоматизированного проектирования. В то же время при работе с текстовыми редакторами сопроцессор совершенно не используется.

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

Вещественные числа в трёх форматах: коротком (32 бита), длинном (64 бита) и расширенном (80 бит).

Двоичные целые числа в трёх форматах: 16, 32 и 64 бита.

Упакованные целые десятичные числа (BCD) числа - длина максимального числа составляет 18 упакованных десятичных цифр (72 бита).

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

Деморализованные вещественные числа -- числа, которые меньше минимального нормализованного числа. При формировании такого значения в некотором регистре стека в соответствующем этому регистру теге регистра TWR формируется специальное значение (10);

Бесконечность (положительная и отрицательная), возникает при делении на нуль ненулевого значения, а также при переполнениях. При формированиитакого значения в некотором регистре стека в соответствующем этому регистру теге регистра TWR формируется специальное значение (10).

Нечисло, различают два вида нечисел:

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

Спокойные (тихие) нечисла. Сопроцессор может формировать спокойные нечисла в качестве реакции на определённые исключения, например число вещественной неопределённости.

Нуль - в формате с плавающей запятой, нуль также считается специальным значением.

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

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

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

Математический сопроцессор - это специальный модуль для выполнения операций с плавающей запятой, который работает в содружестве с центральным процессором.
Математический сопроцессор не является обязательным элементом персонального компьютера. От него, в принципе, можно отказаться. Так раньше и поступали из соображений экономии.
Однако, при решении задач, которые требовали выполнения большого количества математических вычислений, например, при научных или инженерных расчетах, остро встал вопрос о повышении производительности компьютера.
Для этого решили использовать дополнительный специальный процессор, который "настроен" на выполнение математических операций и реализует их во много раз быстрее, чем центральный процессор. Таким образом, была получена возможность наращивать производительность центрального процессора за счет специального модуля - математического сопроцессора.
Не в пример центральному процессору, математический сопроцессор не держит под управлением основную массу цепей компьютера. Наоборот, вся деятельность математического сопроцессора определяется центральным процессором, который может посылать математическому сопроцессору команды на выполнение программ и формирование результатов. В обычном режиме центральный процессор выполняет все функции компьютера. И лишь, когда встречается задача, с которой лучше справится математический сопроцессор, ему выдаются данные и команды, а центральный процессор ожидает результаты. К таким задачам относятся, например, математические операции между вещественными числами (операции между числами с плавающей запятой), где числа представлены мантиссой и ординатой (десятичная степень числа, определяющая положение десятичной запятой).
Если раньше, в компьютерах первых поколений (i80386, i80486) модуль математического сопроцессора устанавливался на материнскую плату в виде отдельного чипа, то в современных компьютерах использование математического сопроцессора, как отдельного чипа, не требуется, поскольку он уже встроен в центральный процессор.
Преимущества, которые вы получаете от использования математического сопроцессора, зависят от того, какие задачи решаются на вашем компьютере.
Согласно данным компании INTEL, математический сопроцессор может уменьшить время выполнения математических операций, таких, как умножение, деление и возведение в степень, на 80 процентов и более. Скорость выполнения простых математических операций, таких, как сложение и вычитание, не изменяется.
С практической точки зрения, производительность персонального компьютера, касающаяся подготовки текстов и ведения базы данных (функций, не требующих сложных математических расчетов), не может быть улучшена математическим сопроцессором. Однако, вы получите ощутимый прирост производительности при проведении научных и инженерных расчетов, обработке статистических данных, а также при работе с графикой, так как последняя требует интенсивных математических расчетов.

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

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

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

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

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

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

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

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

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

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

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

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


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

Сопроцессоры могут входить в набор логики, разработанный одной конкретной фирмой (например, 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», [Дорогая княжна,] быстро, механически написала она и остановилась. «Что ж дальше могла написать она после всего того, что было вчера? Да, да, всё это было, и теперь уж всё другое», думала она, сидя над начатым письмом. «Надо отказать ему? Неужели надо? Это ужасно!»… И чтоб не думать этих страшных мыслей, она пошла к Соне и с ней вместе стала разбирать узоры.
После обеда Наташа ушла в свою комнату, и опять взяла письмо княжны Марьи. – «Неужели всё уже кончено? подумала она. Неужели так скоро всё это случилось и уничтожило всё прежнее»! Она во всей прежней силе вспоминала свою любовь к князю Андрею и вместе с тем чувствовала, что любила Курагина. Она живо представляла себя женою князя Андрея, представляла себе столько раз повторенную ее воображением картину счастия с ним и вместе с тем, разгораясь от волнения, представляла себе все подробности своего вчерашнего свидания с Анатолем.
«Отчего же бы это не могло быть вместе? иногда, в совершенном затмении, думала она. Тогда только я бы была совсем счастлива, а теперь я должна выбрать и ни без одного из обоих я не могу быть счастлива. Одно, думала она, сказать то, что было князю Андрею или скрыть – одинаково невозможно. А с этим ничего не испорчено. Но неужели расстаться навсегда с этим счастьем любви князя Андрея, которым я жила так долго?»
– Барышня, – шопотом с таинственным видом сказала девушка, входя в комнату. – Мне один человек велел передать. Девушка подала письмо. – Только ради Христа, – говорила еще девушка, когда Наташа, не думая, механическим движением сломала печать и читала любовное письмо Анатоля, из которого она, не понимая ни слова, понимала только одно – что это письмо было от него, от того человека, которого она любит. «Да она любит, иначе разве могло бы случиться то, что случилось? Разве могло бы быть в ее руке любовное письмо от него?»
Трясущимися руками Наташа держала это страстное, любовное письмо, сочиненное для Анатоля Долоховым, и, читая его, находила в нем отголоски всего того, что ей казалось, она сама чувствовала.