Арифметический сопроцессор что это
Арифметический сопроцессор
Смотреть что такое «Арифметический сопроцессор» в других словарях:
арифметический сопроцессор — Микропроцессор, специализированный для выполнения сложных арифметических операций, главным образом операций с плавающей точкой в 100 раз быстрее, чем программным путем. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике… … Справочник технического переводчика
арифметический сопроцессор MC68881 — Разработан фирмой Motorola для поддержки микропроцессора MC68030 при выполнении операций с плавающей точкой по стандарту IEЕЕ 754 с одинарной, двойной и увеличенной точностью, а также при вычислении тригонометрических функций. Тактовые частоты… … Справочник технического переводчика
арифметический сопроцессор i8087 фирмы Intel — (для МП типов: i8086, i8088) Выполняет с помощью 68 команд арифметические операции над десятичными и целыми числами, а также над 20 разрядными числами с плавающей точкой. Сопроцессор работает параллельно с основным микропроцессором и ускоряет… … Справочник технического переводчика
усовершенствованный арифметический сопроцессор MC68882 — Совместим по архитектуре и выводам корпуса с сопроцессором MC68881. Благодаря высокой тактовой частоте (16, 20, 25, 33 и в будущем 40 и 50 МГц), двухвходовым регистрам и увеличенным возможностям параллельной работы обеспечивает в 2 4 раза более… … Справочник технического переводчика
MIPS (архитектура) — У этого термина существуют и другие значения, см. MIPS. MIPS (англ. Microprocessor without Interlocked Pipeline Stages) микропроцессор, разработанный компанией MIPS Computer Systems (в настоящее время MIPS Technologies) в соответствии… … Википедия
Процессор — У этого термина существуют и другие значения, см. Процессор (значения). Запрос «ЦП» перенаправляется сюда; см. также другие значения. Intel Celeron 1100 Socket 370 в корпусе FC PGA2, вид снизу … Википедия
Микропроцессорный комплект серии К1810 — Микропроцессорный комплект cерии К1810 набор микросхем, аналогичных набору микросхем для процессора Intel 8086, дальнейшее развитие микропроцессорного комплекта К580. Использовался в отечественных IBM PC совместимых компьютерах, таких как… … Википедия
К1839 — К1839 микропроцессорный комплект, разработанный в 1984 1989 годах в НИИ «Ангстрем» той же командой, которая разработала комплект 1801BMx. Первый советский, а впоследствии и российский 32 разрядный микропроцессорный комплект. С точки зрения… … Википедия
Электронная промышленность России — Электронная промышленность России отрасль промышленности России, развивающая электронную технику. Содержание 1 Предприятия 2 История 3 Микроэлектроника … Википедия
Zilog Z80 — Zilog Z80 >> Центральный процессор Микропроцессор Zilog Z80, одна из самых ранних ре … Википедия
Аппаратное обеспечение IBM PC
12. АРИФМЕТИЧЕСКИЙ СОПРОЦЕССОР
Арифметический сопроцессор значительно (в десятки раз) ускоряет вычисления, связанные с вещественными числами. Он может вычислять такие функции, как синус, косинус, тангенс, логарифмы и т.д. Разумеется, что с помощью сопроцессора можно выполнять и простейшие арифметические операции сложения, вычитания, умножения и деления.
Сопроцессор запускается центральным процессором. После запуска он выполняет все вычисления самостоятельно и параллельно с работой центрального процессора. Если центральный процессор выдает очередную команду сопроцессору в момент времени, когда тот еще не закончил выполнение предыдущей команды, центральный процессор переводится в состояние ожидания. Если же сопроцессор ничем не занят, центральный процессор, выдав команду сопроцессору, продолжает свою работу, не дожидаясь завершения вычисления. Впрочем, есть специальные средства синхронизации (команда FWAIT).
Как программировать сопроцессор?
Команды, предназначенные для выполнения сопроцессором, записываются в программе как обычные машинные команды центрального процессора. Но все эти команды начинаются байта, соответствующего команде центрального процессора ESC.
Встретив такую команду, процессор передает ее на выполнение сопроцессору, а сам продолжает выполнение программы со следующей команды.
Ассемблерные мнемоники всех команд сопроцессора начинаются с буквы F, например: FADD, FDIV, FSUB и т.д. Команды сопроцессора могут адресоваться к операндам, аналогично обычным командам центрального процессора. операндами могут быть либо данные, расположенные в основной памяти компьютера, либо внутренние регистры сопроцессора.
Возможны все виды адресации данных, используемые центральным процессором.
Прежде чем начать обсуждение команд, выполняемых сопроцессором, приведем форматы используемых данных. Как мы уже говорили, сопроцессор может работать либо с данными в формате с плавающей точкой, либо с целыми числами. В следующем разделе мы рассмотрим используемые форматы чисел с плавающей точкой или форматы вещественных чисел.
10 Арифметический сопроцессор
Арифметический сопроцессор предназначен для выполнения операций над числами в формате с плавающей точкой (вещественные числа) и длинными целыми числами. Он значительно (в десятки раз) ускоряет вычисления, связанные с вещественными числами. Сопроцессор может вычислять такие функции, как синус, косинус, тангенс, логарифмы и так далее. Разумеется, что с помощью сопроцессора можно выполнять и простейшие арифметические операции сложения, вычитания, умножения и деления.
Сопроцессор запускается центральным процессором. После запуска он выполняет все вычисления самостоятельно и параллельно с работой центрального процессора. Если центральный процессор выдает очередную команду сопроцессору в момент времени, когда тот еще не закончил выполнение предыдущей команды, центральный процессор переводится в состояние ожидания. Если же сопроцессор ничем не занят, центральный процессор, выдав команду сопроцессору, продолжает свою работу, не дожидаясь завершения вычисления. Впрочем, есть специальные средства синхронизации (команда FWAIT).
Как программировать сопроцессор?
Команды, предназначенные для выполнения сопроцессором, записываются в программе как обычные машинные команды центрального процессора. Но все эти команды начинаются с байта, соответствующего команде центрального процессора ESC. Встретив такую команду, процессор передает ее сопроцессору, а сам продолжает выполнение программы со следующей команды.
Ассемблерные мнемоники всех команд сопроцессора начинаются с буквы F, например: FADD, FDIV, FSUB и так далее. Команды сопроцессора могут адресоваться к операндам, аналогично обычным командам центрального процессора. Операндами могут быть либо данные, расположенные в основной памяти компьютера, либо внутренние регистры сопроцессора.
Для команд арифметического сопроцессора возможны все виды адресации данных, используемые центральным процессором.
Прежде чем начать обсуждение команд, выполняемых сопроцессором, приведем форматы данных. Как мы уже говорили, сопроцессор может работать либо с данными в формате с плавающей точкой, либо с целыми числами. В следующем разделе мы рассмотрим форматы чисел с плавающей точкой или форматы вещественных чисел.
Вещественные числа
Перед тем как приступить к изучению форматов вещественных чисел, используемых сопроцессором, вспомним о числах с плавающей точкой, встречающихся в научных расчетах.
В общем виде эти числа можно записать следующим образом:
· если целая часть мантиссы числа состоит из одной цифры, не равной нулю, то число с плавающей точкой называется нормализованным
В чем преимущества использования нормализованных чисел?
Для тех, кто программировал на языках высокого уровня, знакомо следующее представление чисел с плавающей точкой:
Арифметический сопроцессор может работать с вещественными числами в трех форматах:
Эти числа занимают в памяти, соответственно, 4, 8 или 10 байт (рис. 10.1).
Рис. 10.1. Различные представления вещественных чисел
В любом представлении старший бит определяет знак вещественного числа:
Все равные по абсолютному значению положительные и отрицательные числа отличаются только этим битом. В остальном числа с разным знаком полностью симметричны. Для представления отрицательных чисел здесь не используется дополнительный код, как это сделано в центральном процессоре.
Арифметический сопроцессор работает с нормализованными числами, поэтому поле мантиссы содержит мантиссу нормализованного числа.
Так как здесь используется двоичное представление чисел, сформулируем определение нормализованного числа для двоичного представления:
· если целая часть мантисса числа в двоичном представлении равна 1, то число с плавающей точкой называется нормализованным
Для наглядности представим мантиссу числа в следующей форме:
Здесь символом n обозначается либо 0, либо 1. Нормализованные числа в самой левой позиции содержат 1, поэтому их можно изобразить еще и в таком виде:
Для того, чтобы определить абсолютное значение числа с плавающей точкой, можно воспользоваться следующими формулами:
Знак числа, как мы уже говорили, определяется старшим битом.
Приведем конкретный пример. Пусть мы имеем число с одинарной точностью, которое в двоичном виде выглядит следующим образом:
Значение этого числа равно:
Рассмотрим теперь особые случаи представления вещественных чисел.
Для большей наглядности сведем все возможные представления вещественных чисел вместе на рис. 10.2.
Рис. 10.2. Возможные предстваления вещественных чисел
Целые числа
Арифметический сопроцессор наряду с вещественными числами способен обрабатывать и целые числа. Он имеет команды, выполняющие преобразования целых чисел в вещественные и обратно.
Возможно четыре формата целых чисел:
· короткое целое число;
· длинное целое число;
· упакованное десятичное число
Целое число занимает два байта. Его формат полностью соответствует используемому центральным процессором. Для представления отрицательных чисел используется дополнительный код. Короткое целое и длинное целое имеют аналогичные форматы, но занимают, соответственно, 4 и 8 байт.
Упакованное десятичное число занимает 10 байт. Это число содержит 18 десятичных цифр, расположенных по две в каждом байте. Знак упакованного десятичного числа находится в старшем бите самого левого байта. Остальные биты старшего байта должны быть равны 0.
Существуют команды сопроцессора, которые преобразуют числа в формат упакованных десятичных чисел из внутреннего представления в расширенном вещественном формате. Если программа делает попытку преобразования в упакованный формат денормализованных чисел, нечисел, бесконечности и тому подобных, в результате получается неопределенность. Неопределенность в упакованном формате представляет из себя число, в котором два старших байта содержат единицы во всех разрядах. Содержимое остальных восьми байтов произвольно. При попытке использовать такое упакованное число в операциях фиксируется ошибка.
Мы подробно рассмотрели формат представления вещественных чисел и отметили, что в этом формате для представления отрицательных чисел используется специальный знаковый бит. Для целых чисел используется дополнительный код.
В дополнительном коде положительные числа содержат нуль в самом старшем бите числа:
Для получения отрицательного числа в дополнительном коде из положительного надо инвертировать каждый бит числа и затем прибавить к числу единицу.
Например, число +5 в дополнительном коде выглядит следующим образом:
Теперь прибавим к полученному числу +1:
На рис. 10.3 мы привели все возможные варианты представления целых чисел.
Рис. 10.3. Возможные представления целых чисел
Формат упакованного десятичного числа показан на рис. 10.4.
Рис. 10.4. Формат упакованного десятичного числа
На этом рисунке n0. n17 означают разряды десятичного числа. Они могут изменяться в пределах от 0000 до 1001, то есть от 0 до 9 в десятичной системе счисления.
Теперь, после того как мы рассмотрели форматы данных, с которыми может работать арифметический сопроцессор, можно перейти к изучению внутренних регистров сопроцессора.
Регистры сопроцессора
Арифметический сопроцессор содержит восемь численных 80-битовых регистров, предназначенных для хранения промежуточных результатов вычислений, регистра управления, регистра состояния, регистра тегов, регистра указателя команды и регистра указателя операнда.
Численные регистры
Рис. 10.5. Численные регистры арифметического сопроцессора
Численные регистры используются как стек. Регистр состояния в поле ST содержит номер численного регистра, являющего вершиной стека. При выполнении команд в качестве операнда могут выступать численные регистры. В этом случае номер указанного в команде регистра прибавляется к содержимому поля ST регистра состояния и таким образом определяется используемый регистр. Большинство команд после выполнения увеличивают поле ST регистра состояния, как бы записывая результаты своей работы в стек численных регистров.
Вы можете использовать регистры как массив, но в этом случае необходимо заботится о постоянстве поля ST регистра состояния, так как в противном случае номера численных регистров будут изменяться.
Регистр тегов
Этот регистр разделен на восемь двухбитовых полей, которые мы обозначим как TAG0. TAG7. Каждое поле относится к своему численному регистру (рис. 10.6).
Рис. 10.6. Формат регистра тегов
Поля регистра тегов классифицируют содержимое «своего» численного регистра:
Регистр содержит действительное ненулевое число
В регистре находится нуль
Пустой неинициализированный регистр
Например, если все регистры сопроцессора были пустые, а затем в стек численных регистров было занесено одно действительное ненулевое значение, содержимое регистра тегов будет 3FFFh.
Регистр управления
Регистр управления для сопроцессора 8087 показан на рисунке 10.7.
Рис. 10.7. Формат регистра управления для сопроцессора 8087
Регистр управления сопроцессоров 80287/80387 и сопроцессора, входящего в состав более современных процессоров, имеет аналогичный формат, за исключением того, что бит 7 в нем не используется (рис. 10.8).
Рис. 10.8. Формат регистра управления для современных сопроцессоов
10 Арифметический сопроцессор
Арифметический сопроцессор предназначен для выполнения операций над числами в формате с плавающей точкой (вещественные числа) и длинными целыми числами. Он значительно (в десятки раз) ускоряет вычисления, связанные с вещественными числами. Сопроцессор может вычислять такие функции, как синус, косинус, тангенс, логарифмы и так далее. Разумеется, что с помощью сопроцессора можно выполнять и простейшие арифметические операции сложения, вычитания, умножения и деления.
Сопроцессор запускается центральным процессором. После запуска он выполняет все вычисления самостоятельно и параллельно с работой центрального процессора. Если центральный процессор выдает очередную команду сопроцессору в момент времени, когда тот еще не закончил выполнение предыдущей команды, центральный процессор переводится в состояние ожидания. Если же сопроцессор ничем не занят, центральный процессор, выдав команду сопроцессору, продолжает свою работу, не дожидаясь завершения вычисления. Впрочем, есть специальные средства синхронизации (команда FWAIT).
Как программировать сопроцессор?
Команды, предназначенные для выполнения сопроцессором, записываются в программе как обычные машинные команды центрального процессора. Но все эти команды начинаются с байта, соответствующего команде центрального процессора ESC. Встретив такую команду, процессор передает ее сопроцессору, а сам продолжает выполнение программы со следующей команды.
Ассемблерные мнемоники всех команд сопроцессора начинаются с буквы F, например: FADD, FDIV, FSUB и так далее. Команды сопроцессора могут адресоваться к операндам, аналогично обычным командам центрального процессора. Операндами могут быть либо данные, расположенные в основной памяти компьютера, либо внутренние регистры сопроцессора.
Для команд арифметического сопроцессора возможны все виды адресации данных, используемые центральным процессором.
Прежде чем начать обсуждение команд, выполняемых сопроцессором, приведем форматы данных. Как мы уже говорили, сопроцессор может работать либо с данными в формате с плавающей точкой, либо с целыми числами. В следующем разделе мы рассмотрим форматы чисел с плавающей точкой или форматы вещественных чисел.
Вещественные числа
Перед тем как приступить к изучению форматов вещественных чисел, используемых сопроцессором, вспомним о числах с плавающей точкой, встречающихся в научных расчетах.
В общем виде эти числа можно записать следующим образом:
· если целая часть мантиссы числа состоит из одной цифры, не равной нулю, то число с плавающей точкой называется нормализованным
В чем преимущества использования нормализованных чисел?
Для тех, кто программировал на языках высокого уровня, знакомо следующее представление чисел с плавающей точкой:
Арифметический сопроцессор может работать с вещественными числами в трех форматах:
Эти числа занимают в памяти, соответственно, 4, 8 или 10 байт (рис. 10.1).
Рис. 10.1. Различные представления вещественных чисел
В любом представлении старший бит определяет знак вещественного числа:
Все равные по абсолютному значению положительные и отрицательные числа отличаются только этим битом. В остальном числа с разным знаком полностью симметричны. Для представления отрицательных чисел здесь не используется дополнительный код, как это сделано в центральном процессоре.
Арифметический сопроцессор работает с нормализованными числами, поэтому поле мантиссы содержит мантиссу нормализованного числа.
Так как здесь используется двоичное представление чисел, сформулируем определение нормализованного числа для двоичного представления:
· если целая часть мантисса числа в двоичном представлении равна 1, то число с плавающей точкой называется нормализованным
Для наглядности представим мантиссу числа в следующей форме:
Здесь символом n обозначается либо 0, либо 1. Нормализованные числа в самой левой позиции содержат 1, поэтому их можно изобразить еще и в таком виде:
Для того, чтобы определить абсолютное значение числа с плавающей точкой, можно воспользоваться следующими формулами:
Знак числа, как мы уже говорили, определяется старшим битом.
Приведем конкретный пример. Пусть мы имеем число с одинарной точностью, которое в двоичном виде выглядит следующим образом:
Значение этого числа равно:
Рассмотрим теперь особые случаи представления вещественных чисел.
Для большей наглядности сведем все возможные представления вещественных чисел вместе на рис. 10.2.
Рис. 10.2. Возможные предстваления вещественных чисел
Целые числа
Арифметический сопроцессор наряду с вещественными числами способен обрабатывать и целые числа. Он имеет команды, выполняющие преобразования целых чисел в вещественные и обратно.
Возможно четыре формата целых чисел:
· короткое целое число;
· длинное целое число;
· упакованное десятичное число
Целое число занимает два байта. Его формат полностью соответствует используемому центральным процессором. Для представления отрицательных чисел используется дополнительный код. Короткое целое и длинное целое имеют аналогичные форматы, но занимают, соответственно, 4 и 8 байт.
Упакованное десятичное число занимает 10 байт. Это число содержит 18 десятичных цифр, расположенных по две в каждом байте. Знак упакованного десятичного числа находится в старшем бите самого левого байта. Остальные биты старшего байта должны быть равны 0.
Существуют команды сопроцессора, которые преобразуют числа в формат упакованных десятичных чисел из внутреннего представления в расширенном вещественном формате. Если программа делает попытку преобразования в упакованный формат денормализованных чисел, нечисел, бесконечности и тому подобных, в результате получается неопределенность. Неопределенность в упакованном формате представляет из себя число, в котором два старших байта содержат единицы во всех разрядах. Содержимое остальных восьми байтов произвольно. При попытке использовать такое упакованное число в операциях фиксируется ошибка.
Мы подробно рассмотрели формат представления вещественных чисел и отметили, что в этом формате для представления отрицательных чисел используется специальный знаковый бит. Для целых чисел используется дополнительный код.
В дополнительном коде положительные числа содержат нуль в самом старшем бите числа:
Для получения отрицательного числа в дополнительном коде из положительного надо инвертировать каждый бит числа и затем прибавить к числу единицу.
Например, число +5 в дополнительном коде выглядит следующим образом:
Теперь прибавим к полученному числу +1:
На рис. 10.3 мы привели все возможные варианты представления целых чисел.
Рис. 10.3. Возможные представления целых чисел
Формат упакованного десятичного числа показан на рис. 10.4.
Рис. 10.4. Формат упакованного десятичного числа
На этом рисунке n0. n17 означают разряды десятичного числа. Они могут изменяться в пределах от 0000 до 1001, то есть от 0 до 9 в десятичной системе счисления.
Теперь, после того как мы рассмотрели форматы данных, с которыми может работать арифметический сопроцессор, можно перейти к изучению внутренних регистров сопроцессора.
Регистры сопроцессора
Арифметический сопроцессор содержит восемь численных 80-битовых регистров, предназначенных для хранения промежуточных результатов вычислений, регистра управления, регистра состояния, регистра тегов, регистра указателя команды и регистра указателя операнда.
Численные регистры
Рис. 10.5. Численные регистры арифметического сопроцессора
Численные регистры используются как стек. Регистр состояния в поле ST содержит номер численного регистра, являющего вершиной стека. При выполнении команд в качестве операнда могут выступать численные регистры. В этом случае номер указанного в команде регистра прибавляется к содержимому поля ST регистра состояния и таким образом определяется используемый регистр. Большинство команд после выполнения увеличивают поле ST регистра состояния, как бы записывая результаты своей работы в стек численных регистров.
Вы можете использовать регистры как массив, но в этом случае необходимо заботится о постоянстве поля ST регистра состояния, так как в противном случае номера численных регистров будут изменяться.
Регистр тегов
Этот регистр разделен на восемь двухбитовых полей, которые мы обозначим как TAG0. TAG7. Каждое поле относится к своему численному регистру (рис. 10.6).
Рис. 10.6. Формат регистра тегов
Поля регистра тегов классифицируют содержимое «своего» численного регистра:
Регистр содержит действительное ненулевое число
В регистре находится нуль
Пустой неинициализированный регистр
Например, если все регистры сопроцессора были пустые, а затем в стек численных регистров было занесено одно действительное ненулевое значение, содержимое регистра тегов будет 3FFFh.
Регистр управления
Регистр управления для сопроцессора 8087 показан на рисунке 10.7.
Рис. 10.7. Формат регистра управления для сопроцессора 8087
Регистр управления сопроцессоров 80287/80387 и сопроцессора, входящего в состав более современных процессоров, имеет аналогичный формат, за исключением того, что бит 7 в нем не используется (рис. 10.8).
Рис. 10.8. Формат регистра управления для современных сопроцессоов
Математический сопроцессор
С появлением новых моделей микропроцессоров Intel совершенствовались и сопроцессоры, хотя их программная модель осталась практически неизменной. Как отдельные (а, соответственно, необязательные в конкретной комплектации компьютера) устройства, сопроцессоры сохранялись вплоть до модели микропроцессора i386 и имели название i287 и i387 соответственно. Начиная с модели i486, сопроцессор исполняется в одном корпусе с основным микропроцессором и, таким образом, является неотъемлемой частью компьютера.
Основные возможности математического сопроцессора:
Общая форма представления вещественных чисел предполагает возможность размещения в разрядной сетке следующих типов.
Тип чисел | Знак | Степень | Целое | Мантисса |
+∞ | 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 ).
Программная модель сопроцессора
Программная модель сопроцессора представляет собой совокупность регистров, каждый из которых имеет свое функциональное назначение.
В программной модели сопроцессора можно выделить три группы регистров:
Все указанные регистры являются программно доступными. Однако к одним из них доступ получить достаточно легко, для этого в системе команд сопроцессора существуют специальные команды. К другим регистрам получить доступ сложнее, так как специальных команд для этого нет, поэтому необходимо выполнить дополнительные действия.
Регистр состояния swr – отражает текущее состояние сопроцессора после выполнения последней команды. В регистре swr содержатся поля, позволяющие определить: какой регистр является текущей вершиной стека сопроцессора, какие исключения возникли после выполнения последней команды, каковы особенности выполнения последней команды (некий аналог регистра флагов основного процессора).
Структурно регистр swr состоит из:
Регистр управления работой сопроцессора cwr – определяет особенности обработки числовых данных. С помощью полей в регистре cwr можно регулировать точность выполнения численных вычислений, управлять округлением, маскировать исключения.
Он состоит из:
2-битовое поле управления точностью PC предназначено для выбора длины мантиссы. Возможные значения в этом поле означают:
По умолчанию устанавливается значение поля PC =11.
Бит 12 в регистре cwr физически отсутствует и считывается равным 0.
Регистр тегов twr – представляет собой совокупность двухбитовых полей. Каждое поле соответствует определенному физическому регистру стека и характеризует его текущее состояние. Команды сопроцессора используют этот регистр, например, для того, чтобы определить возможность записи значений в эти регистры. Изменение состояния любого регистра стека отражается на содержимом соответствующего этому регистру 2-битового поля регистра тега. Возможны следующие значения в полях регистра тега:
Принцип работы сопроцессора
Принцип работы сопроцессора совместно с центральным процессором
Процессор и сопроцессор имеют свои раздельные системы команд и форматы обрабатываемых данных. Несмотря на то, что сопроцессор архитектурно представляет собой отдельное вычислительное устройство, он не может существовать отдельно от основного процессора. Процессор и сопроцессор, являясь двумя самостоятельными вычислительными устройствами, могут работать параллельно. Но это распараллеливание распространяется только на выполнение команд. Оба процессора подключены к общей системной шине и имеют доступ к одной и той же информации. Инициирует процесс выборки очередной команды всегда основной процессор. После выборки команда попадает одновременно в оба процессора. Любая команда сопроцессора имеет код операции, первые пять бит, которого имеют значение 11011. Когда код операции начинается этими битами, то основной процессор по дальнейшему содержимому кода операции выясняет, требует ли данная команда обращения к памяти. Если это так, то основной процессор формирует физический адрес операнда и обращается к памяти, после чего содержимое ячейки памяти выставляется на шину данных. Если обращение к памяти не требуется, то основной процессор заканчивает работу над данной командой (не делая попытки ее исполнения) и приступает к декодированию следующей команды из текущего входного командного потока. Выбранная команда попадает в сопроцессор одновременно с основным процессором. Сопроцессор, определив по первым пяти битам, что очередная команда принадлежит его системе команд, начинает ее исполнение. Если команда требует операнды из памяти, то сопроцессор обращается к шине данных за чтением содержимого ячейки памяти, которое к этому моменту предоставлено основным процессором.