Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
12-12-2013_11-21-32 / Посовие_1.docx
Скачиваний:
93
Добавлен:
10.05.2015
Размер:
217.48 Кб
Скачать

8.Принцип обработки операндов simd

8.1. Архитектура mmx

Для ускорения выполнения мультимедиа и коммуникационных программ была разработана и применена в микропроцессорах архитектура MMX (Multi Media eXtension). Эта архитектура включает в себя новые команды и типы данных, что позволяет создавать приложения нового уровня. При этом сохраняется полная совместимость с существующими операционными системами и программным обеспечением. Данная архитектура выполняет обработку операндов по принципу SIMD (Single Instruction Multiple Data, т.е. одна команда – много данных), т.е. одной командой можно обработать сразу несколько единиц информации.

Новые MMX-команды, реализованные в процессоре Pentium III, увеличивают производительность прикладных программ в следующих областях:

  • видео;

  • комбинирование графики и видео;

  • обработка изображений;

  • звуковой синтез;

  • распознавание и синтез речи;

  • телефония;

  • видео-конференции;

  • 2D и 3D графика.

В MMX архитектуре вводятся новые типы данных:

- упакованные байты – 8 байт, упакованные в одно 64-разрядное число;

- упакованные слова – 4 слова, упакованные в одно 64-разрядное число;

- упакованные двойные слова – 2 двойных слова, упакованные в одно 64-разрядное число;

- учетверенное слово – одно 64-разрядное число.

MMX команды могут обрабатывать группы из 8 байт, 4 слов, двух двойных слов и одно учетверенное слово. Такие группы из 64 разрядов рассматриваются как упакованные данные и могут трактоваться как один из вышеперечисленных типов данных.

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

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

FFFFh + 8000h = 7FFFh

В арифметике с насыщением результат операции, который выходит за границу размера данных, насыщается до предельно возможного значения для используемого типа данных, поэтому результат вышеприведенного примера при использовании арифметики с насыщением будет равняться FFFFh.

Если же результат получается меньше 0х80 (для знаковых байт) или меньше 0х00 (для беззнаковых байт), то результатом данной операции будет соответственно 0х80 или 0х00.

В первых микропроцессорах, в которых была реализована технология MMX, регистры, в которых происходит обработка операндов, отображены на регистры, используемые при вычислениях с плавающей запятой, т.е. всего имеется 8 64-разрядных MMX регистров, которые отображаются на поля мантиссы. Значения, записываемые в MMX-регистр, автоматически появляются в младших разрядах соответствующих FPU-регистров (FPU - Floating Point Unit). Обращение к этим регистрам команды выполняют, указывая непосредственно имена этих регистров от ММ0 до ММ7.

ММХ регистры могут использоваться только непосредственно для проведения обработки данных. Они не могут использоваться для адресации к памяти; адресация выполняется при помощи целочисленных регистров и стандартных режимов адресации.

Ниже представлен пример выполнения команды PADDSW mm,mm/m64 – сложение беззнаковых упакованных слов с насыщением – операнды располагаются следующим образом – один операнд, содержащий 4 упакованных слова, находится в регистре, второй операнд может располагаться в регистре или в памяти. Результат располагается в регистре. В представленном примере видно, что первое слово формируется с насыщением.

1010101010101010

1010101010101010

1101010101010101

1010100101000111

+ + + +

1000000000000000

0010101010101010

0000000000000000

1010100101000111

= = = =

1111111111111111

1101010011110100

1101010101010101

1010100101000111

Основной выигрыш в производительности обработки данных при использовании SIMD метода осуществляется за счет одновременной обработки нескольких операндов при помощи одной команды.

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

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

Команда умножения представлена тремя видами: первые два выполняют попарное умножение четырех слов с выбором либо старшей, либо младшей части результата, а третий выполняет операцию вида ab + cd для каждой пары из четырех слов операндов, что очень удобно при вычислении математических рядов.

Команды сдвига реализуют логический и арифметический сдвиги своих операндов. Логические поразрядные команды выполняют операции И (AND), ИЛИ (OR), Исключающее ИЛИ (XOR), а также комбинированную команду И с инверсией одного из операндов (AND NOT), удобную для реализации «обратного выбора» по битовой маске.

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

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

Соседние файлы в папке 12-12-2013_11-21-32