Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по ассемблеру, 1ый семестр (Гончаревич А Л) [3131 вопросов] / шпоры-1 / 18.Программная модель математического сопроцессора..docx
Скачиваний:
49
Добавлен:
15.06.2014
Размер:
108.41 Кб
Скачать

Для обработки числовых данных в формате с плавающей точкой процессоры IA-32

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

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

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

неотъемлемой частью компьютера.

Что появилось:

1. Полная поддержка стандартов IEEE-754 и 854 на арифметику с плавающей

точкой.

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

3.Обработка десятичных чисел с точностью до 18 разрядов.

4.Обработка вещественных чисел

Архитектура сопроцессора

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

В программной модели сопроцессора можно выделить три группы регистров.

1.Восемь регистров RO.. .R7 составляют основу программной модели сопроцессора — стек сопроцессора. Размерность каждого регистра — 80 битов.

2.Три служебных регистра:

  • регистр состояния сопроцессора SWR (Status Word Register) отражает информацию о текущем состоянии сопроцессора и содержит поля, позволяющие определить, какой регистр является текущей вершиной стека сопроцессора, какие исключения возникли после выполнения последней команды, каковы особенности выполнения последней команды (некий аналог регистра флагов основного процессора) и т. д.;

  • управляющий регистр сопроцессора CWR (Control Word Register) управляет режимами работы сопроцессора; с помощью полей в этом регистре можно регулировать точность выполнения численных вычислений, управлять округлением, маскировать исключения;

  • регистр слова тегов TWR (Tags Word Register) используется для контроля за состоянием каждого из регистров RO.. .R7 (команды сопроцессора используют этот регистр, например, для того, чтобы определить возможность записи значений в указанные регистры).

3. Два регистра указателей — данных DPR (Data Point Register) и команд IPR (Instruction Point Register) — предназначены для запоминания информации об адресе команды, вызвавшей исключительную ситуацию, и адресе ее операнда.Эти указатели используются при обработке исключительных ситуаций (но недля всех команд).

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

В поле ТОР фиксируется номер регистра стека 0...7 (RO.. .R7), являющегося текущей вершиной стека. Команды сопроцессора не оперируют физическими номерами регистров стека RO...R7. Вместо этого они используют логические номера этих регистров ST(0)...ST(1). С помощью логических номеров реализуется относительная адресация регистров стека сопроцессора. Если текущей вершиной стека является физический регистр RO, то после записи очередного значения в стек сопроцессора его текущей вершиной станет физический регистр R7 .

Регистр состояния SWR

- Шесть флагов исключительных ситуаций.

Бит SF (Stack Fault) — ошибка работы стека сопроцессора. Бит устанавливается в единицу, если возникает одна из трех исключительных ситуаций (см. ранее) — РЕ, UE или IE. В частности, его установка информирует о попытке записи в заполненный стек или, напротив, попытке чтения из пустого стека. После того как вы проанализировали этот бит, его нужно снова установить в ноль вместе с битами РЕ, UE или IE (если они были установлены);

Бит ES (Error Summary) сигнализирует о суммарной ошибке в работе сопроцессора. Бит устанавливается в единицу, если возникает любая из шести исключительных ситуаций, о которых будет рассказано далее.

Четыре бита СО...СЗ (Condition Code) представляют собой код условия. Назначение этих битов аналогично флагам в регистре EFLAGS основного процессора —они отражают результат выполнения последней команды сопроцессора. В приложении А для некоторых команд сопроцессора приведена интерпретация битов СО...СЗ.

Трехразрядное поле ТОР содержит указатель регистра текущей вершины стека.

Почти половину регистра SWR занимают биты (флаги) регистрации исключительных ситуаций. Исключительная ситуация — особый тип прерываний. исключения — это разновидность прерываний, с помощью которых процессор информирует программу о некоторых особенностях ее реального исполнения. Сопроцессор также обладает способностью возбуждения подобных прерываний при возникновении определенных ситуаций (не обязательно ошибочных). Все возможные исключения сведены к шести типам, каждому из которых соответствует один бит в регистре SWR. Сопроцессор умеет самостоятельно реагировать на многие из них. Это так называемая обработка исключений по умолчанию. Для того чтобы запретить сопроцессору обработку определенного типа исключения по умолчанию, необходимо это исключение замаскировать. Такое действие выполняется путем установки в единицу нужного бита в управляющем регистре сопроцессора CWR

Приведем типы исключений, фиксируемые с помощью регистра SWR: