Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 85

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 79 80 81 82 83 84 < 85 > 86 87 88 89 90 91 .. 528 >> Следующая

команды имеют суффикс PS - Packed Single), так и один младший элемент
пакета (такие команды имеют суффикс SS - Scalar Single).
В памяти пакет одинарной точности располагается так, как это принято в
lntel-архитекту-ре, т. е. младший байт размещается по меньшему адресу
(рис. 2.33). Когда один из 128-раз-рядных операндов (пакет) находится в
памяти, то он должен быть выравнен по 128-разряд-ной границе, иначе при
выполнении SSE-команды произойдет исключение типа #GP "нарушение общей
защиты". Только выполнение команды MOVUPS не вызывает исключения в данном
случае. Операнды меньших размеров (64 или 32 разряда) могут быть
невыравнены.
СИСТЕМА КОМАНД: ОПЕРАЦИИ SSE
127 О
ХММ7 ХММ6
______________________ХММ5_____________________
______________________XMM4_____________________
хммз ХМ М2 ХММ1
хммо
31_________________________________________________о
MXCSR
Рис. 2.32. Регистры блока SSE
При выполнении SSE-команд могут возникать такие же типы ошибок
(исключительных случаев) #1, #D, #Z, #0, #U, #Р, как и при работе блока
FPU. В этом случае в регистре управления-состояния MXCSR блока SSE
соответствующий признак IE, DE, ZE, ОЕ, UE или РЕ принимает значение "1".
При установке этого значения признака ошибки реализуется исключение типа
#ХМ "ошибка SSE", если в регистре управления CR4 установлено значение
бита OSXMMEXCPT = 1 (см. рис. 2.16, в). Для обслуживания исключения
процессор вызывает необходимую подпрограмму. Если в регистре CR4 значение
бита OSXMMEXCPT = 0, то при установке какого-либо из признаков ошибки
реализуется исключение #UD "недействительный код операции". В табл. 2.45
приведена информация о том, какие ошибки могут возникать при выполнении
SSE-команд (команды, не указанные в данной таблице, не вызывают появления
таких ошибок). Необходимо отметить, что блок SSE не фиксирует, обработка
какого из элементов пакета вызвало появление ошибки. Эту задачу должна
выполнять подпрограмма обслуживания исключения.
Реализация исключения может быть замаскирована установкой в единичное
значение соответствующего бита маски IM, DM, ZM, ОМ, UM или РМ в регистре
MXCSR (рис. 2.34). В этом случае при возникновении ошибки (установке
какого-либо из признаков IE, DE, ZE, ОЕ, UE, РЕ в "1") процессор
продолжает выполнение программы без реализации исключения, а результат
операции принимает такое же значение, как при маскировании аналогичных
исключений для операций FPU.
Формат содержимого SSE-регистра управления-состояния MXCSR показан на
рис. 2.34. Отметим, что большинство битов этого регистра имеют такое же
назначение, как соответствующие биты в регистрах FPCR, FPSR блока FPU
(см. рис. 2.5). Поле RC в регистре MXCSR определяет правила округления
результата в соответствии с табл. 2.1. Бит FZ в этом регистре управляет
реакцией блока SSE на антипереполнение. Согласно стандарту IEEE, если
произошло антипереполнение (признак UE = 1), а соответствующее исключение
замаскировано (бит UM = 1), то процессор выдает в качестве результата
денормализованное число. Установка бита FZ = 1 позволяет отойти от
стандарта IEEE. При FZ = 1 результатом антипереполнения будет нуль
соответствующего знака (устанавливаются признаки ошибок UE = РЕ = 1).
Если установлено значение бита маски UM = 0 (ошибка #U не маскирована),
то независимо от значения бита FZ при установке признака антипереполнения
UE = 1 реализуется исключение #ХМ.
127 126 119 118 96 95 94 87 86 64 63 62 55
54 32 31 30 23 22______О
Is I Е | М I S I Е | М I S I E | M I s | E | M
I F3(B15-B12) F2(B11-B8) F1(B7-B4) F0(B3-B0)
201 Oh 2000h
Рис. 2.33. Упакованные числа в формате с плавающей точкой одинарной
точности (пакет одинарной точности)
ГЛАВА 2. ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Таблица 2.45
Типы ошибок, возникающих при выполнении SSE-команд
Команда #! #D #z #о #и #р
ADDPS + + + + +
ADDSS + + + + +
CMPPS + +
CMPSS + +
COMISS + +
CVTPI2PS +
CVTPS2PI + +
CVTSI2SS +
CVTSS2SI + +
CVTTPS2PI + +
CVTTSS2SI + +
DIVPS + + + + + +
DIVSS + + + + + +
MAXPS + +
MAXSS + +
MINPS + +
MiNSS + +
MULPS + + + + +
MULSS + + + + +
SQRTPS + + +
SQRTSS + + +
STMXCSR
SUBPS + + + + +
SUBSS + + + + +
UCOMISS + +
Если в регистре управления CR0 установлено значение бита ЕМ = 1, то
попытка выполнить SSE-команду приведет к исключению #UD. Если в регистре
управления CR4 значение бита OSFXSR = 0 (это означает, что операционная
система не поддерживает сохранение и восстановление содержимого SSE-
регистров при переключении задач), то попытка выполнить SSE-команду
приведет к исключению #UD. Если в регистре CR0 значение бита TS = 1, то
попытка выполнить SSE-команду приведет к исключению #NM.
Формат SSE-команд аналогичен формату ММХ-команд. SSE-команды поддерживают
все возможные способы адресации с использованием байтов MODR/M и SIB.
Префиксы влияют на выполнение этих команд таким же образом, как на
Предыдущая << 1 .. 79 80 81 82 83 84 < 85 > 86 87 88 89 90 91 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed