Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
379727.doc
Скачиваний:
36
Добавлен:
22.09.2019
Размер:
1.92 Mб
Скачать
  1. Специализированные процессоры. Числовой арифметический сопроцессор intel 80x87(fpu). Программная (регистровая) модель. Форматы данных. Система команд.

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

Классификация специализированных процессоров:

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

Основная область применения арифметического сопроцессора - научные расчеты и машинная графика. Некоторые пакеты САПР, например, Autocad версии 10, отказывается работать, если в машине отсутствует сопроцессор. Более современный процессор Intel 80486 содержит встроенный арифметический сопроцессор, совместимый с 80387 (и даже немного более мощный).

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

Приведем форматы используемых данных:

Вещественные числа

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

(знак)(мантисса)*10(знак)(порядок)

Например: -1.35*105

Здесь знак - это минус, мантисса - 1.35, порядок - 5. Порядок тоже может иметь знак.

Вспомним также такое понятие, как нормализованное представление чисел:

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

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

Сопроцессор 8087/80287/80387 может работать с вещественными числами в трех форматах:

- одинарной точности;

- двойной точности;

- расширенной точности.

Эти числа занимают в памяти, соответственно, 4, 8 или 10 байтов.

Одинарная точность

1 бит 8 бит 23 бита

---T-------T--------------------┐

│Зн│Порядок│ Мантисса │

L--+-------+---------------------

Двойная точность

1 бит 11 бит 52 бита

---T---------T--------------------------------┐

│Зн│ Порядок │ Мантисса │

L--+---------+---------------------------------

Расширенная точность

1 бит 15 бит 64 бита

---T-------------T------------------------------------┐

│Зн│ Порядок │ Мантисса │

L--+-------------+-------------------------------------

В любом представлении старший бит "Зн" определяет знак вещественного числа:

0 - положительное число;

1 - отрицательное число.

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

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

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

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

Возможно четыре формата целых чисел:

целое число;

короткое целое число;

длинное целое число;

упакованное десятичное число.

Целое число занимает два байта. Его формат полностью соответствует используемому центральным процессором. Для представления отрицательных чисел используется дополнительный код. Короткое целое и длинное целое имеют аналогичные форматы, но занимают, соответственно, 4 и 8 байтов.

Упакованное десятичное число занимает 10 байтов. Это число содержит 18 десятичных цифр, расположенных по две в каждом байте. Знак упакованного десятичного числа находится в старшем бите самого левого байта. Остальные биты старшего байта должны быть равны 0.

Для целых чисел используется дополнительный код.

В дополнительном коде положительные числа содержат нуль в самом старшем бите числа:

0XXX XXXX XXXX XXXX

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

Например, число +5 в дополнительном коде выглядит следующим образом:

0000 0000 0000 0101 = +5

Для получения числа -5 вначале инвертируем значение каждого бита:

1111 1111 1111 1010

Теперь прибавим к полученному числу +1:

1111 1111 1111 1011 = -5

Система команд сопроцессора

Возможны три формата команд сопроцессора, аналогичные форматам команд центральных процессоров 8086/80286/80386. Это команды с обращением к оперативной памяти, команды с обращением к одному из численных регистров и команды без операндов, заданных явным образом.

Все команды сопроцессора можно разделить на несколько групп:

- команды пересылки данных;

- арифметические команды;

- команды сравнений чисел;

- трансцендентные команды;

- управляющие команды.

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

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

Команды сравнения сравнивают вещественные и целые числа, выполняют анализ чисел.

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

Последняя группа команд - управляющие команды - обеспечивают установку режима работы арифметического

сопроцессора, его сброс и инициализацию, перевод сопроцессора в защищенный режим работы и т.д.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]