вернуться к общему разделу

Технология ММХ. Описание и назначение основных новых регистров и команд.

MMX (Multimedia Extensions – мультимедийные расширения) –  коммерческое название дополнительного набора инструкций, выполняющих характерные для процессов кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Разработан в лаборатории Intel в Хайфе, Израиль, в первой половине 1990-х.
Для реализации MMX была выбрана технология с использованием метода ОКМД, или SIMD (Single Instruction Multiple Data  –  один поток команд при множестве потоков данных). 57 новых команд оперируют с 64-разрядными регистрами. При этом используются уже имеющиеся в микропроцессоре регистры для вычислений с плавающей точкой.
Команды технологии MMX работают с 64-разрядными целочисленными данными, а также с данными, упакованными в группы (векторы) общей длиной 64 бита. Такие данные могут находиться в памяти или в восьми MMX-регистрах. Эти регистры называются MM0, MM1, … , MM7. Команды технологии MMX работают со следующими типами данных:

- упакованные байты (packed byte) – восемь байтов в одном 64-разрядном регистре;

- упакованные слова (packed word) – четыре 16-разрядных слова в 64-разрядном регистре;

- упакованные двойные слова (packed doubleword ) – два 32-разрядных слова в 64-разрядном регистре;

- 64-разрядные слова (quadword).

Все упомянутые регистры могут использоваться только для действий над данными. Их нельзя использовать для адресации памяти.
MMX-команды имеют следующий синтаксис:
instruction [dest, src]
Здесь instruction – имя команды, dest обозначает выходной операнд, src – входной операнд.
Большинство команд имеют суффикс, который определяет тип данных и используемую арифметику:

- US (unsigned saturation) – арифметика с насыщением, данные без знака.

- S или SS (signed saturation) – арифметика с насыщением, данные со знаком. Если в суффиксе нет ни S, ни SS, используется циклическая арифметика (wraparound).

- B, W, D, Q указывают тип данных. Если в суффиксе есть две из этих букв, первая соответствует входному операнду, а вторая – выходному.

Все команды MMX можно разбить на семь категорий:

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

- сравнение (равно, больше чем);

- преобразование (упаковка и распаковка);

- логические (поразрядно выполняемые инструкции И; И-НЕ; ИЛИ; исключающее ИЛИ);

- сдвиг (логический и арифметический вправо или влево на указанное число разрядов);

- передача данных (32- и 64-разрядная пересылка данных между регистрами целых чисел и регистрами MMX, между регистрами MMX и памятью или между регистрами MMX);

- сброс режима MMX.

MMX-команды исполняются в том же режиме процессора, что и команды с плавающей запятой. Поэтому при исполнении всех MMX-команд (кроме EMMS) "портится" слово состояния регистров с плавающей запятой. Доступны MMX-команды[1] (обозначения: mm – MMX-регистр; m32, m64 – память объема 32 и 64 бит соответственно; imm – непосредственный операнд; ir32 - целочисленный регистр. см. здесь).

ЛИТЕРАТУРА

1. CodeNet [Электрон. ресурс]. – 2009. – Режим доступа: http://www.codenet.ru/progr/optimize/mmx.php

 

Автор: Андрей Васильев (программист)

вверх

Тематика статей

Меню