Математический сопроцессор. Для чего он нужен? Сопроцессоры Любимых игр а встроенный сопроцессор

27.06.2020

Важной частью архитектуры микропроцессоров 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 .

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

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

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

Числа простой и двойной точности (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 состоит из:

  • 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.

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

  • бита ошибки работы стека сопроцессора SF (Stack Fault). Бит устанавливается в 1, если возникает одна из трех исключительных ситуаций - РЕ, UE или IE. В частности, его установка информирует о попытке записи в заполненный стек, или, напротив, попытке чтения из пустого стека. После того как значение этого бита проанализировано, его нужно снова сбросить в 0, вместе с битами РЕ, UE и IE (если они были установлены);
  • бита суммарной ошибки работы сопроцессора ES (Error Summary). Бит устанавливается в 1, если возникает любая из шести перечисленных выш исключительных ситуаций;
  • четырех битов с0…с3 (Condition Code) - кода условия. Назначение этих битов аналогично флагам в регистре EFLAGS основного процессора - отразить результат выполнения последней команды сопроцессора.
  • трехбитного поля TOP . Поле содержит указатель регистра текущей вершины стека.
  • бита B занятости сопроцессора.

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

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

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

Маски исключений предназначены для маскирования исключительных ситуаций, возникновение которых фиксируется с помощью шести бит регистра swr . Если какие-то маскирующие биты исключений в регистре cwr установлены в 1, то соответствующие исключения будут обрабатываться самим сопроцессором. Если для какого-либо исключения в соответствующем бите маски исключений регистра cwr содержится 0, то при возникновении исключения этого типа будет возбуждено прерывание int 16 (10h). Операционная система должна содержать (или программист должен написать) обработчик этого прерывания. Он должен выяснить причину прерывания, после чего, если это необходимо, исправить ее, а также выполнить другие действия.

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 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/: строк).

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

Сопроцессор является только обиходным названием для этого чипа. Полностью он называется математическим сопроцессором или Numeric Processing Unit (NPU) или Floating Point Processing Unit (FPU).

Наличие сопроцессора на материнской плате не является обязательным, поэтому на его месте может оказаться пустой разъем для дальнейшей установки сопроцессора. Исключением являются все CPU 486DX и выше - здесь сопроцессор интегрирован прямо в CPU.

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

Оперативная память

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

Чтобы CPU мог выполнять программы, они должны быть загружены в оперативную память (в область памяти, доступную для программ пользователя). CPU имеет непосредственный доступ к данным, находящимся в оперативной памяти (Random Access Memory, RAM - память с произвольным доступом, ОЗУ), с другой же -"периферийной", или внешней, памятью (гибкими и жесткими дисками) процессор работает через буфер, являющийся разновидностью оперативной памяти, недоступной пользователю. Только после того, как программное обеспечение будет считано в RAM с внешнего носителя данных, возможна дальнейшая работа системы в целом. Оперативная память представляет собой самую быструю запоминающую среду компьютера. Принципиально имеет значение то, что информация может быть как записана в нее, так и считана.

Оперативная память имеет свои достоинства и недостатки:

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

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

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

Запоминающим элементом динамической памяти является конденсатор, который может находиться в заряженном или разряженном состоянии. Если конденсатор заряжен, то в ячейку записана логическая 1. Если конденсатор разряжен, то в ячейку записан логический 0. В идеальном конденсаторе заряд может сохраняться неопределенно долго. В реальном конденсаторе существует ток утечки, поэтому записанная в динамическую память информация со временем будет утрачена, так как конденсаторы запоминающих элементов через несколько миллисекунд полностью разрядятся. Во избежание потери информации существует процесс регенерации памяти (Refresh).

Оперативная память представляет собой плату (за исключением старых моделей PC, где микросхемы устанавливались прямо в материнскую плату), длинной около 8-и см., на которой размещены микросхемы DRAM (Dynamic RAM). Такая плата называется модулем и устанавливается в соответствующие слоты материнской платы. Наибольшее распространение в последнее время получили DIMM-модули. Также имели место SIP и SIMM-модули. Модули вставляются в специально предназначенные для них слоты на материнской плате, называемые банками (Banks).

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

Логическое распределение оперативной памяти

Логическое распределение оперативной памяти определяется не только применяемой операционной системой, но и особенностями аппаратной реализации IBM-совместимых PC.

Можно выделить три важнейшие логические области оперативной памяти:

Стандартная оперативная память (Conventional Memory) Важнейшая область памяти (первые 640 Кб). В ней расположена большая часть всех прикладных программ и данных.

UMA (Upper Memory Area) Здесь находится информация, которая служит для сопряжения прикладных программ с различными картами расширений. (384 Кб расположенные между 640Кб и 1Мб)

XMS (Extended Memory Specification) Вся память выше 1Мб. Используется Windows-приложениями

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

Модуль операций с плавающей запятой (или с плавающей точкой; англ. 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.