- •Лекция 25
- •Возможности сопроцессора
- •Архитектура сопроцессора
- •Регистры сопроцессора
- •Регистр состояния SWR
- •Регистр управления CWR
- •Регистр тегов TWR
- •Форматы данных
- •Форматы данных
- •Форматы вещественных
- •Форматы данных
- •Форматы данных
- •Форматы данных
- •Система команд сопроцессора
- •Система команд
- •Команды передачи данных
- •Команды передачи данных
- •Целочисленные арифметические команды
- •Вещественные арифметические команды
- •Вещественные арифметические команды
- •Вещественные арифметические команды
- •Вещественные арифметические команды
- •Вещественные арифметические команды
- •Команды сравнения
- •Команды сравнения
- •Команды трансцендентных функций
- •Команды трансцендентных функций
- •Команды управления сопроцессором
- •Команды управления сопроцессором
- •Команды управления сопроцессором
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 2
- •Пример 2 (данные
- •Пример 2 (ввод интервала)
- •Пример 2 (ввод K и N)
- •Пример 2 (подготовка к выводу таблицы)
- •Пример 2 (цикл вывода
Лекция 25
Архитектура и программирование сопроцессора
Возможности сопроцессора
Полная поддержка стандартов IEEE-754 и 854 на арифметику с плавающей точкой. Эти стандарты описывают как форматы данных, так и набор реализуемых функций.
Поддержка численных алгоритмов для вычисления значений тригонометрических функций, логарифмов и др.
Обработка десятичных чисел с точностью до 18 разрядов, что позволяет сопроцессору выполнять арифметические операции без округления над целыми десятичными числами со значениями до 10^18.
Обработка вещественных чисел из диапазона ±(3.37E-4932 … 1.18E+4932).
Архитектура сопроцессора
Восемь регистров R0 – R7, составляющих программную модель сопроцессора – стек сопроцессора. Размерность каждого регистра – 80 бит.
Три служебных регистра:
регистр состояния сопроцессора – swr (Status Word Register) – отражает информацию о текущем состоянии сопроцессора;
управляющий регистр сопроцессора – cwr (Control Word Register)
– управляет режимами работы сопроцессора;
регистр слова тегов – twr (Tag Word Register) – используется для контроля за состоянием каждого из регистров R0 – R7.
Два регистра указателей – данных dpr (Data Point Register) и команд ipr (Instruction Point Register). Они предназначены для запоминания информации об адресе команды, вызвавшей исключительной ситуации и адресе ее операнда.
Регистры сопроцессора
|
|
Регистры стека сопроцессора R0 – R7 |
|
|
Регистр тегов |
||||||
|
|
Знак |
Порядок |
Мантисса |
|
|
|
twr |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
R0 |
|
|
|
|
|
|
|
|
0 |
|
|
R1 |
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
||||
R2 |
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
||||
R3 |
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
||||
R4 |
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
|
||||
R5 |
|
|
|
|
|
|
|
|
10 |
|
|
|
|
|
|
|
|
|
|
||||
R6 |
|
|
|
|
|
|
|
|
12 |
|
|
|
|
|
|
|
|
|
|
||||
R7 |
|
|
|
|
|
|
|
|
14 |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
79 |
78 |
64 |
63 |
0 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Регистр состояния SWR
|
c3 |
top |
c2 |
c1 |
c0 |
es |
sf |
pe |
ue |
oe |
ze |
de |
ie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
14 |
13 11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
IE (Invalidate operation error) – недействительная операция,
DE (Denormalized operand error) – денормализованный операнд,
ZE (divide by zero Error) – ошибка деления на нуль,
OE (Overflow Error) – ошибка переполнения,
UE (Underflow Error) – ошибка антипереполнения,
PE (Precision Error) – ошибка точности,
SF (Stack Fault) – ошибка работы стека сопроцессора,
ES (Error Summary) – суммарная ошибка работы сопроцессора,
C0 – C3 (Condition Code) – коды условия,
TOP – указатель регистра текущей вершины стека.
Регистр управления CWR
|
|
|
RC |
|
PC |
|
|
P |
U |
O |
Z |
D |
I |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
PC (Precision Control) – поля управления точность:
00 – длина мантиссы 24 бита,
10 – длина мантиссы 53 бита,
11 – длина мантиссы 64 бита.
RC (Rounding Control) – поля управления округлением:
00 – значение округляется к ближайшему числу;
01 – значение округляется в меньшую сторону;
10 – значение округляется в большую сторону;
11 – производится отбрасывание дробной части.
Биты P, U, O, Z, D, I – составляют маску исключений. Если бит в маске установлен в единицу, то обработку соответствующей исключительной ситуации осуществляет сопроцессор. В противном случае – генерируется аппаратное прерывание ошибки сопроцессора, и запускается обработчик ОС или пользователя.
Регистр тегов TWR
Возможны следующие значения в полях регистра тегов:
00 – регистр стека сопроцессора занят допустимым ненулевым значением.
01 – регистр стека сопроцессора содержит нулевое значение.
10 – регистр стека сопроцессора содержит одно из специальных численных значений.
11 – регистр пуст и в него можно производить запись.
Форматы данных
Сопроцессор может работать со следующими типами данных:
двоичные целые числа – 16, 32 и 64 бита;
упакованные целые десятичные числа (BCD) – максимальная длина 18 упакованных десятичных цифр (9 байт);
вещественные числа в трех форматах – коротком (32 бита), длинном (64 бита), расширенном (80 бит).
Форматы данных
Специальные численные значения:
денормализованные значения – это числа меньшие минимального нормализованного числа для каждого вещественного формата, поддерживаемого сопроцессором;
нуль;
положительная и отрицательная значения бесконечности;
нечисла;
неопределенности и неподдерживаемые форматы.
Форматы вещественных
|
чисел |
Короткий |
Длинный |
Расширенный |
|
Формат |
|||||
|
|
|
|
|
|
Длина числа (бит) |
32 |
64 |
80 |
|
|
Размерность мантиссы |
24 |
53 |
64 |
|
|
Диапазон значений |
1E-38 … |
1E-308 … |
1E-4952 … |
||
|
|
1E+38 |
1E+308 |
1E+4932 |
|
Размерность характеристики q |
8 |
11 |
15 |
|
|
Значение фиксированного |
+127 |
+1023 |
+16383 |
|
|
смещения |
|
|
|
|
|
Диапазон характеристик q |
0…255 |
0…2047 |
0…32767 |
||
Диапазон порядков p |
-126…+127 |
-1022… |
-16382…+16383 |
||
|
|
|
+1023 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|