Interested Article - MMX

MMX ( M ulti m edia E x tensions — мультимедийные расширения) — коммерческое название дополнительного SIMD - набора инструкций , разработанного компанией Intel и впервые представленного в 1997 году одновременно с линией процессоров Pentium MMX . Набор инструкций был предназначен для ускорения процессов кодирования/декодирования потоковых аудио- и видеоданных. Является развитием технологий, предложенных в микропроцессоре i860 . Разработан в лаборатории Intel в Хайфе , Израиль , в первой половине 1990-х .

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

Регистры MMX

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

Типы данных MMX

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

Команды технологии MMX работают со следующими типами данных:

  • упакованные байты (восемь байтов в одном 64-разрядном регистре) ( англ. packed byte);
  • упакованные слова (четыре 16-разрядных слова в 64-разрядном регистре) ( англ. packed word);
  • упакованные двойные слова (два 32-разрядных слова в 64-разрядном регистре) ( англ. packed doubleword);
  • 64-разрядные слова ( англ. quadword).

Синтаксис

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.

Примечания

  1. Millind Mittal, Alex Peleg, Uri Weiser. // Intel Technology Journal. — 1997. — Т. 1 , № 3 . 4 марта 2016 года.
  2. от 19 июля 2013 на Wayback Machine // intel.com
  3. от 11 ноября 2013 на Wayback Machine // ixbt.com
  4. от 3 сентября 2020 на Wayback Machine // 2.09.2020
  5. Михаил Гук. Процессоры Intel: от 8086 до Pentium II. — СПб. : Питер, 1997. — С. 96. — 224 с. — ISBN 5-88782-398-4 .

Литература

  • Бердышев Евгений. Технология MMX. Новые возможности процессоров P5 и P6. — М. : ДИАЛОГ-МИФИ, 1998. — 234 с. — ISBN 5-86404-105-x .

Ссылки

  • (рус.)
  • (англ.) , см. раздел 8 о программировании MMX
  • (англ.) , Руководство
  • (рус.) , статья о программировании ММХ, codenet.ru

Same as MMX