Обработка изображений с использованием расширения процессора

SIMD-регистры с плавающей точкой содержат упакованные 128-разрядные данные. Команды SSE обращается к SIMD-регистрам с плавающей точкой используя регистровые имена XMM0 и до XMM7 . SIMD-регистры с плавающей точкой могут быть использованы для вычислений над данными; но не могут быть использованы для адресации памяти. Адресация выполняется с помощью определенных в IA режимов адресации и регистров

общего назначения (EAX, EBX, ECX, EDX, EBP, ESI, EDI и ESP).

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

Если произошло исчезновение порядка (underflow), а поле flush-to-zero (FZ бит 15) регистра MXCSR установлено в 1, то процессор выполняет следующие действия:

· возвращает нулевое значение в качестве результата, присваивая ему знак истинного результата

· устанавливает в 1 биты 4 и 5 регистра MXCSR (флаги обнаружения исключений исчезновения порядка и неточного результата).

Указанные действия выполняются в том случае, если исключение underflow маскировано (бит 11 регистра MXCSR установлен в 1). При таком режиме увеличивается скорость работы программ, в которых часто происходит исчезновение порядка результата. Достигается это, однако, ценой снижения точности вычислений.[3]

MMX регистры физически реализованы на стандартных для архитектуры Intel 80-разрядных регистрах данных с плавающей точкой. То есть, переход от операций MMX к операциям с плавающей точкой требует запуска команды EMMS. Но так как SIMD-регистры с плавающей точкой являются отдельным регистровым файлом, то команды MMX и команды с плавающей точкой могут быть смешаны с командами SSE без выполнение специальных инструкций таких как EMMS.

Тип данных SIMD с плавающей точкой

Основной тип данных SSE это 128-разрядное значение, содержащее четыре последовательно расположенных (“упакованных”) 32-разрядных числа одинарной точности с плавающей точкой (single-precision floating-point (SPFP))

Каждое 32-разрядное число с плавающей точкой имеет 1 знаковый бит, 8 битов порядка и 23 бита мантиссы, что соответствует стандарту IEEE-754[4] на формат представления чисел одинарной точности с плавающей запятой (SPFP‑чисел).

Данный формат сохранен и в процессорах начиная с Pentium III, однако для упакованных чисел с плавающей точкой используется представление в 32-разрядном формате с одинарной точностью. Поэтому в отдельных случаях результаты вычислений с плавающей точкой в архитектуре х87 могут отличаться от результатов таких же вычислений, использующих новые SSE SPFP-команды.

Новые команды SIMD над целыми могут работать над типами данных состоящих из упакованных байт, слов или двойных слов. Новые команды предварительной выборки работают над данными размер которых от 32 байт и выше.

Команды SSE копирует упакованные типы данных (данные одинарной точности с плавающей точкой – двойные слова) в и из памяти в 64-битные или 128-битные блоки. Однако, при вычислении арифметических или логических операций над упакованными данными, SSE работает параллельно над каждым двойным словом заключенным в SIMD регистре с плавающей точкой.

Новые SIMD-команды над целыми подчиняются соглашениям принятых в инструкциях MMX и работают над данными в MMX регистрах, а не в 128-разрядных SIMD регистрах с плавающей точкой.

Модель выполнения SIMD

Так как потоковое расширение SSE поддерживает операции над упакованными типами данных одинарной точности с плавающей точкой, и дополнительные SIMD команды над целыми, поддерживаются операции над упакованными типами данных (байт, слово или двойное слово).

Этот подход был выбран потому что большинство приложений обработки мультимедиа имеют следующие характеристики:

· существенна параллельность;

· широкий динамический уровень, отсюда базированы на переменных с плавающей точкой;

· регулярное и повторяющая выборка шаблонов из памяти;

· локализированные повторяющие операции выполняемые над данными;

· независимый процесс управления данными.

Потоковое Расширение SIMD доступно из всех режимов выполнения: Защищенного режима (Protected mode), реально адресуемого режима (Real-address mode), и виртуального режима 8086 (Virtual 8086 mode).

Формат данных в памяти

В SSE вводиться новый упакованный 128-разрядный тип данных который состоит из четырех чисел одинарной точности с плавающей точкой. Бит 0 это наименьше значащий - бит (LSB), и бит 127 это наибольше значащий - бит (MSB). Байты в новом формате данных имеют последовательные адреса памяти. Порядок как всегда немного странный, то есть байты с меньшими адресами имеют меньшее значение чем байты с старшими адресами

Формат данных SIMD регистра с плавающей точкой

Значение в SIMD регистрах с плавающей точкой имеет тот же формат, что и 128‑разрядные величины в памяти. Есть два режима доступа к памяти: 128-битный и 32-битный. Таблица 2-1 показывает точность и диапазон типа данных. Кодируется только дробная часть мантиссы. Бит целого будет 1 для всех чисел, за исключением 0 и ненормированного ограниченного числа. Показатель типа данных с обычной точностью кодируется в смещенный формат.

Таблица 2-1. Точность и диапазон SSE типа данных с плавающей точкой

Тип Данных

Длина

Точность

(в битах)

Приблизительный диапазон нормированного числа

Двоичное

Десятичное

С одинарной точностью

32

24

от 2-126 до 2-127

от 1.18*10-38 до 1.70*1038

Таблица 2-2 показывает кодирование для всех классов действительных чисел (то есть, ноль, ненормированное ограниченное число, нормированное ограниченное число, и ) и NaN[5] для типа данных с одинарной точностью. Она также показывает формат для вещественных неопределенных значений, то есть QNaN[6] и SNaN[7] которые используются некоторыми функциями SSE для активизации обработчика исключений.

При сохранении вещественных значений в памяти, значения с одинарной точностью сохраняются в памяти в 4 последовательных байтах. 128-битный режим доступа используется для 128-разрядной выборки из памяти, 128-разрядной пересылки между SSE регистрами с плавающей запятой и всеми логическими, распаковки и арифметическими командами. 32-битный режим доступа используется для 32‑разрядной выборки из памяти, 32-разрядной пересылки между SSE регистрами с плавающей запятой и скалярными арифметическими командами.

Страница:  1  2  3  4  5  6  7 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы