MMX (Multimedia Extensions — мультимедийные расширения) — коммерческое название дополнительного SIMD-набора инструкций, разработанного компанией Intel и впервые представленного в 1997 году одновременно с линией процессоров Pentium MMX. Набор инструкций был предназначен для ускорения кодирования/декодирования аудио- и видеоданных. Является развитием технологий, предложенных в микропроцессоре i860. Разработан в лаборатории Intel в Хайфе, Израиль, в первой половине 1990-хIntel in Haifa, Israel // intel.comIntel Israel Fab Tour — первое официальное международное пресс-мероприятие Intel в Израиле // ixbt.com.

Сейчас набор инструкций MMX, представленный в 1997 году, является откровенно устаревшим и уже давно вытеснен различными версиями SSE и AVX. Тем не менее, в средствах разработки он всё ещё формально поддерживается; правда, в силу редкости использования реализация страдает от многочисленных дефектов. Поэтому есть предложения удалить его из популярного набора компиляторов LLVMКомпиляторы могут остаться без поддержки Intel MMX // 2.09.2020.

Регистры MMX Расширение MMX включает в себя восемь 64-битных регистров общего назначения MM0—MM7. Для совместимости со способами переключения контекста процессора в существующих ОС Intel была вынуждена объединить в программной модели процессора восемь регистров MMX с мантиссами восьми регистров FPU. Аппаратно это могут быть разные устройства, но с точки зрения программиста — это одни и те же регистры. Таким образом, нельзя одновременно пользоваться командами математического сопроцессора и MMX.

Типы данных MMX Команды технологии MMX обрабатывают целочисленные данные, упакованные в группы (векторы) общей длиной 64 бита, либо одиночные 64-битные слова. Такие данные могут находиться в памяти или в восьми MMX-регистрах.

Команды технологии MMX работают со следующими типами данных: упакованные байты (восемь байтов в одном 64-разрядном регистре) (); упакованные слова (четыре 16-разрядных слова в 64-разрядном регистре) (); упакованные двойные слова (два 32-разрядных слова в 64-разрядном регистре) (); 64-разрядные слова ().

Синтаксис MMX-команды имеют следующий синтаксис: instruction [dest, src] Здесь instruction — имя команды, dest обозначает выходной операнд, src — входной операнд.

Систему команд образуют 57 инструкций, позволяющих параллельно обрабатывать несколько элементов данных. Большинство команд имеет суффикс, который определяет тип данных и используемую арифметику: US (unsigned saturation) — арифметика с насыщением, данные без знака. S или SS (signed saturation) — арифметика с насыщением, данные со знаком. Если в суффиксе нет ни S, ни SS, используется циклическая арифметика (wraparound). B, W, D, Q указывают тип данных. Если в суффиксе есть две из этих букв, первая соответствует входному операнду, а вторая — выходному. Можно выделить следующие группы инструкций: пересылки данных, позволяющих перемещать данные между регистрами MMX и целочисленными регистрами процессора или памятью; упаковки и распаковки данных, позволяющих преобразовывать элементы векторов в элементы с меньшей разрядностью или попарно объединять элементы с образованием элементов большей разрядности; арифметических, например, сложение и вычитание в различных режимах, умножение, а также операция умножения 4 пар операндов с последующим сложением первого произведения со вторым, а третьего - с четвёртым; сравнения векторов с записью результата сравнения в виде битовой маски; логических — И, инверсия прямой импликации, ИЛИ и исключающее ИЛИ; логических и арифметических сдвигов; управления состоянием — установка признаков пустых регистров слова тегов FPU. Выполнение инструкций MMX не приводит к изменению флагов условий слова состояния FPU, за исключением поля TOP. К регистрам MMX можно обращаться непосредственно по именам, в отличие от регистров FPU, которые организованы в стек с вершиной, определяемой полем TOP слова состояния FPU. При этом поле TOP сбрасывается после выполнения любой инструкции MMX. Выполнение инструкций MMX возможно в любом режиме процессора.

MMX во встраиваемых процессорах Семейство процессоров Intel XScale, начиная с модели PXA270, содержит дополнение к системе команд ARM, называемое iwMMXt, похожее на расширение IA-32 MMX.

Примечания

Литература

Ссылки Технология MMX — новый этап развития процессоров Intel IA Software Developer’s Manual, Vol 1, см. раздел 8 о программировании MMX IA Optimization manual, Руководство Codenet.ru, статья о программировании ММХ, codenet.ru

Категория:Инструкции x86 Категория:Расширения архитектуры x86