Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Программная модель FPU






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

Таким образом, основу программной модели FPU составляет регистровый стек, состоящий из восьми 80‑ битных регистров данных (R0–R7), называемых численными (арифметическими) регистрами (рис. 5.13). В этих регистрах хранятся числа, представленные в форме с плавающей точкой в расширенной вещественном формате.

Регистр, являющийся текущей вершиной стека, определяется трехбитовым полем TOP (Top of stack) в слове состояния SW (Status Word). Регистр, являющийся вершиной стека, содержит последнее включенное в стек значение и обозначается в командах как ST(0) или просто ST. ST(1) – следующий регистр, расположенный «ниже» ST(0), содержащий предпоследнее, записанное в стек значение и т.д. Все команды FPU рассчитаны на такую относительную адресацию. Причем стек имеет кольцевую (круговую) организацию, «переполнение» стека может быть замаскировано (рис. 5.13).

Рис. 5.13. Регистры FPU

С каждым регистром стека ассоциируется двухбитный тэг, а их совокупность образует слово тэгов TW (Tag Word). Тэг показывает, что содержится в регистре, и помогает в выполнении команд:

00 – допустимое ненулевое значение;

01 – нуль;

10 – специальное значение (денормализованное, бесконечность и т.п.);

11 – пустой регистр (отсутствие данных).

Регистр SW отражает общее состояние сопроцессора. Бит B (Busy) указывает на занятость сопроцессора выполнением команды или наличие не обслуженного запроса на прерывание. Биты Ci (C0‑ C3) определяют код условия. Если после выполнения команды переслать слово состояния в регистр AX с помощью инструкции FSTSWAX, а затем выполнить инструкцию SAHF, биты кода условия будут перенесены в регистр флагов процессора (C3 – ZF, C2 – PF, C0 – CF), что дает возможность использовать эти коды в командах переходов. (Примечание: новые инструкции FPU P6 изменяют флаги непосредственно в регистре EFLAGS.) Остальные биты устанавливаются при возникновении исключений (переполнение стека, немаскируемого исключения и пр.).

Управляющее слово (CW – Control Word) служит для выбора параметров выполнения операций: маскировки отдельных исключений, определения точности вычислений (одинарная, двойная или расширенная), задания способа округления (к ближайшему значению, по направлению к ±µ, по направлению к 0).

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

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

Все команды FPU делятся на следующие группы:

· команды передачи данных (между регистрами стека, между вершиной стека и памятью);

· арифметические команды (основные арифметические операции и дополнительные (масштабирование, извлечение корня и т.п.));

· команды сравнения (анализ числа в вершине стека и формирование кода условия в SW);

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

Устройство FPU имеет пять форматов команд (рис. 5.14)

Команды первых двух форматов осуществляют обращение к памяти для выполнения передачи данных в память и считывания из памяти и выполнения арифметических операций и сравнения (они похожи на команды целочисленного устройства). Поле формата памяти MF определяет тип операнда: 00 – вещественное число одинарной точности, 01 –целое двоичное число (32 бита), 10 – вещественное двойной

 
 

точности, 11 – целое слово (16 бит) или упакованное десятичное (80 бит).

Команды, содержащие в поле mod значение 112, «пропускаются» целочисленным устройством. Формат с ST(i) используется для выполнения арифметических операций и операций сравнения с использованием регистрового стека. Бит R определяет, возвращается ли результат в вершину стека или в другой регистр, а бит P – производится ли выталкивание из стека.

Предпоследний формат – это формат команд, оперирующих константами и неявными операндами (нет явных спецификаций операндов, они задаются неявно кодом операции). К этим форматам относятся трансцендентные и дополнительные арифметические команды.

Последний формат зарезервирован для команд управления устройством FPU.

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.