MMX-технология

MMX = Multi-Media eXtension – мульти-медиа расширение.

Технология MMX - итог совместной работы создателей архитектуры микропроцессоров Intel и программистов. При ее разработке был исследован широкий круг программ аудиовизуальной обработки информации: обработка изображений, MPEG-видео, синтеза музыки, сжатия речи и ее распознавания, поддержка видеоконференций, компьютерные игровые программы и т. д. В результате этого анализа были выявлены основные особенности таких программ:

· использование данных целого типа небольшой разрядности, например, 8-разрядные графические пиксели и 16-разрядная оцифровка звука;

· короткие циклы с высокими коэффициентами повторяемости;

· большое количество операций умножения и суммирования, в том числе из-за широкого использования быстрого преобразования Фурье;

· применение алгоритмов, требующих интенсивных вычислений;

· широкое использование операций с высоким уровнем параллелизма.

Было отмечено, что в мультимедийных приложениях 80% времени выполнения программы приходится на 10-20% программного кода. Малая разрядность данных требует дополнительных действий при их обработке на 32-разрядном микропроцессоре, не позволяя в то же время использовать всю мощь 32-разрядной архитектуры.

Простым и наглядным примером такого рода обработки может служить изменение значений всех пикселей видеопамяти на определенную величину. Пусть емкость видеопамяти составляет 1 Мбайт, а каждый пиксель кодируется 1 байтом. Тогда для выполнения указанного действия потребуется выполнить примерно 1 млн операций по прибавлению константы к однобайтовому операнду, который выбирается из памяти. Одновременное выполнение таких действий над 4 операндами, что сократило бы количество операций в 4 раза, невозможно в классической архитектуре IA-32 из-за отсутствия соответствующих команд в системе команд и форматов используемых данных.

На устранение этих противоречий и были направлены основные усилия разработчиков технологии MMX. Процессор Pentium MMX, в котором впервые была реализована новая технология, был представлен фирмой INTel в январе 1997 года. Он позволил на 10-20 % повысить производительность на стандартных тестах, а для специализированных мультимедийных приложений - на 50 %.

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

Расширение MMX ориентировано в основном на использование в мультимедийных приложениях. Основная идея MMX заключается в одновременной обработке нескольких элементов данных за одну инструкцию. Для этого используются 64-битные регистры MMX, в которых размешается несколько данных меньшего размера.

Расширение MMX использует новые типы упакованных данных:

Packed byte - упакованные байты (восемь байт).

Packed word - упакованные слова (четыре слова).

Packed doubleword - упакованные двойные слова (два двойных слова).

Packed quadword - учетверенное слово.

Расширение MMX включает 8 регистров общего пользования (MM0-MM7). Размер регистров составляет 64 бита. Физически эти регистры пользуются младшими битами рабочих регистров сопроцессора.

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

Важное правило, которое следует соблюдать при совместном использовании математического сопроцессора и MMX-расширения: последней выполняемой командой MMX-расширения должна быть команда EMMS. Дело в том, что все ММХ-команды выполняются в том же режиме, что и команды сопроцессора с плавающей точкой, что вызывает изменения содержимого регистра состояния (swr) сопроцессора. Команда EMMS обеспечивает корректный переход процессора от выполнения фрагмента программного кода с ММХ-командами к обработке обычных команд с плавающей точкой. При этом emms устанавливает значение 1 во всех разрядах регистра состояния. Если фрагмент программы, в,котором есть ММХ-команды, не заканчивается командой emms, то все последующие операции с плавающей точкой будут давать некорректные результаты, о чем сигнализирует исключение Stack overflow.

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

Команда PADDSB "Сложение со знаком с насыщением" выполняет сложение одновременно 8 пар однобайтовых операндов. Кроме того, если при выполнении сложения произошло переполнение, то результатом операции будет максимально возможное в этом формате число. Это избавляет программиста от необходимости использования после выполнения каждого сложения команд условных переходов, анализирующих признак переполнения результата, что, в свою очередь, благотворно сказывается на работе конвейера.

Команда PMADDWD "Умножение с накоплением" эффективна при выполнении вычислений, характерных для обработки звуковой и графической информации. Она одновременно перемножает четыре операнда формата "слово" (16 разрядов), попарно складывает результаты умножений двух младших и двух старших байт и получает два 32-разрядных результата.

Команда PMAXSB выполняет нахождение максимума одновременно для восьми 8-разрядных операндов. Она позволяет не только выполнить операцию пакетами по 8 байт, но и избежать ветвлений, а следовательно, и "штрафов" за их неправильное предсказание.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: