logo
несколько программ / bsp33

10 Арифметический сопроцессор

Еще одно устройство, которое мы опишем в этом томе - арифметический сопроцессор фирмы Intel. В старых моделях компьютеров сопроцессор устанавливался на системной плате в отдельной панельке и подключался непосредственно к центральному процессору. Современные процессоры Pentium содержат встроенный арифметический сопроцессор.

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

Основная область применения арифметического сопроцессора - научные расчеты и машинная графика. Некоторые пакеты САПР, например, Autocad, отказываются работать, если в машине отсутствует сопроцессор.

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

Как программировать сопроцессор?

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

Ассемблерные мнемоники всех команд сопроцессора начинаются с буквы F, например: FADD, FDIV, FSUB и так далее. Команды сопроцессора могут адресоваться к операндам, аналогично обычным командам центрального процессора. Операндами могут быть либо данные, расположенные в основной памяти компьютера, либо внутренние регистры сопроцессора.

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

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