MMX

Материал из Wiki.

Перейти к: навигация, поиск

MMX (Multimedia Extensions — мультимедийное расширение) — коммерческое название дополнительного набора инструкций, выполняющих характерные для процессов кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Разработан в лаборатории Intel в Хайфе, Израиль, в первой половине 1990-х.

Регистры MMX

Расширение MMX включает в себя восемь 64-битных регистров общего пользования MM0—MM7. Физически никаких новых регистров с введением MMX не появилось. MM0—MM7 — это в точности мантиссы восьми регистров FPU (Математический сопроцессор), от R0—R7. Таким образом, нельзя одновременно пользоваться командами Математического сопроцессора и MMX.

Типы данных MMX

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

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

Синтаксис

MMX-команды имеют следующий синтаксис:

instruction [dest, src]

Здесь instruction — имя команды, dest обозначает выходной операнд, src — входной операнд.

Большинство команд имеют суффикс, который определяет тип данных и используемую арифметику:

  • US (unsigned saturation) — арифметика с насыщением, данные без знака.
  • S или SS (signed saturation) — арифметика с насыщением, данные со знаком. Если в суффиксе нет ни S, ни SS, используется циклическая арифметика (wraparound).
  • B, W, D, Q указывают тип данных. Если в суффиксе есть две из этих букв, первая соответствует входному операнду, а вторая — выходному.

Выделяют следующие группы команд:

  • Команды пересылки данных
  • Команды преобразования типов
  • Арифметические операции
  • Команды сравнения
  • Логические операции
  • Сдвиговые операции
  • Команды управления состоянием
Личные инструменты