Главная страница
Предыдущая страница (что такое расширение SSE)

Расширение SSE (требует pentium3)

В отличие от MMX, это расширение не использует уже существующие ресурсы процессора, а вводит 8 новых независимых 128-битных регистров данных: XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7. Поэтому не требуется команд типа emms для переключения режимов и можно пользоваться другими расширениями, работая с SSE. Кроме восьми регистров данных, вводится дополнительный 32-битовый регистр управления/состояния MXCSR, который используется для маскирования исключений:
бит  7: IM – маска исключения IE
бит  8: DM – маска исключения DE
бит  9: ZM – маска исключения ZE
бит 10: OM – маска исключения OE
бит 11: UM – маска исключения UE
бит 12: PM – маска исключения PE
биты 14—13: RC – управление округлением
бит 15: FZ – режим сброса в ноль (flush-to-zero)
Если маскирующий бит=1, то исключение не обрабатывается, иначе при возникновении аварийной ситуации программа вылетает. Поле RC определяет режим округления:
00 – к ближайшему числу
01 – к отрицательной бесконечности
10 – к положительной бесконечности
11 – к нулю
Бит FZ включает режим сброса в ноль. В этом режиме команды SSE не превращают слишком маленькое число с плавающей запятой в денормализованное, а возвращают ноль. Введём условное обозначение: rSSE – регистр SSE
Огранизация SSE очень похожа на организацию FPU, отличие в том, что в FPU регистры представлены в виде стека, а SSE даёт возможность прямого доступа

Типы данных SSE

Основной тип данных – упакованные числа с плавающей запятой одинарной точности. В одном 128-битном регистре размещаются сразу 4 таких числа: в битах 127—96 число 3, в битах 95—64 число 2, в битах 63—32 число 1, в битах 31—0 число 0. Целочисленные команды SSE могут работать с упакованными байтами, словами или двойными словами. Но эти команды оперируют данными, находящимися в регистрах MMX. В командах SSE формата "команда приёмник, источник" приёмник и источник одновременно не могут быть переменными (похоже, нет такой команды во всём процессоре, которая бы могла оперировать двумя операндами из памяти за исключением тех, которые специально для этого предназначены)

Следующая страница (команды пересылки данных SSE)