MMX (набор команд)

редактировать
Эта статья о наборе инструкций для процессоров Intel Pentium и Pentium II. Информацию об операционной системе, в которой в качестве последней версии использовалось сокращенное название, см. В разделе Windows 3.0.

Pentium с MMX

MMX - это архитектура набора команд с одной инструкцией и несколькими данными ( SIMD ), разработанная Intel и представленная 8 января 1997 года с линейкой микропроцессоров на базе Pentium P5 (микроархитектура), названной «Pentium с технологией MMX». Он разработан на основе аналогичного устройства, представленного на Intel i860, а ранее на видеопиксельном процессоре Intel i750. MMX - это дополнительная возможность процессора, которая поддерживается в процессорах IA-32 Intel и другими поставщиками с 1997 года.

New York Times описала первоначальный толчок, включая рекламу Суперкубка, как сосредоточенный на «новом поколении блестящих мультимедийных продуктов, включая видеофоны и трехмерные видеоигры».

Впоследствии MMX был расширен несколькими программами Intel и другими компаниями: 3DNow!, Streaming SIMD Extensions (SSE) и текущие версии Advanced Vector Extensions (AVX).

СОДЕРЖАНИЕ

  • 1 Обзор
    • 1.1 Именование
    • 1.2 Технические детали
    • 1.3 Поддержка программного обеспечения
  • 2 преемника
  • 3 MMX во встроенных приложениях
  • 4 См. Также
  • 5 ссылки
  • 6 Внешние ссылки

Обзор

Именование

MMX официально является бессмысленным инициализмом, зарегистрированным Intel; неофициально инициалы по-разному объясняются как обозначающие

  • MultiMedia eXtension,
  • Множественное математическое расширение, или
  • Matrix Math eXtension.

Компания Advanced Micro Devices (AMD) во время одной из своих многочисленных судебных тяжб с Intel представила маркетинговые материалы от Intel, в которых говорилось, что MMX означает «Matrix Math Extensions». Поскольку инициализм не может быть зарегистрирован как торговая марка, это была попытка аннулировать торговую марку Intel. В 1995 году Intel подала иск против AMD и Cyrix Corp. за неправомерное использование своего товарного знака MMX. AMD и Intel урегулировали вопрос, при этом AMD признала MMX товарным знаком, принадлежащим Intel, а Intel предоставила AMD права на использование товарного знака MMX в качестве названия технологии, но не названия процессора.

Технические подробности

Процессор Pentium II с технологией MMX

MMX определяет восемь регистров процессора, с именами от MM0 до MM7, и операции, которые с ними работают. Каждый регистр имеет ширину 64 бита и может использоваться для хранения либо 64-битных целых чисел, либо нескольких меньших целых чисел в «упакованном» формате: одна инструкция затем может применяться к двум 32-битным целым числам, четырем 16-битным целым числам или восьми. Сразу 8-битные целые числа.

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

Чтобы избежать проблем совместимости с механизмами переключения контекста в существующих операционных системах, регистры MMX являются псевдонимами для существующих регистров модуля с плавающей запятой x87 (FPU), которые при переключении контекста уже сохраняются и восстанавливаются. В отличие от регистров x87, которые ведут себя как стек, каждый регистр MMX имеет прямую адресацию (произвольный доступ).

Любая операция, связанная со стеком с плавающей запятой, может также повлиять на регистры MMX и наоборот, поэтому такое сглаживание затрудняет работу с операциями с плавающей запятой и SIMD в одной программе. Чтобы максимизировать производительность, программное обеспечение часто использовало процессор исключительно в том или ином режиме, откладывая относительно медленное переключение между ними как можно дольше.

Каждый 64-битный регистр MMX соответствует мантиссе 80-битного регистра x87. Таким образом, старшие 16 бит регистров x87 не используются в MMX, и все эти биты устанавливаются в единицы, что делает их типами данных Not Number ( NaN ) или бесконечностями в представлении с плавающей запятой. Это может использоваться программным обеспечением, чтобы решить, предназначено ли содержимое данного регистра как данные с плавающей запятой или данные SIMD.

Программная поддержка

Программная поддержка MMX развивалась медленно. Компилятор Intel C и связанные с ним инструменты разработки получили встроенные функции для вызова инструкций MMX, а Intel выпустила библиотеки общих векторизованных алгоритмов с использованием MMX. И Intel, и Metrowerks пытались выполнить автоматическую векторизацию в своих компиляторах, но операции на языке программирования C плохо отображались на набор инструкций MMX, и пользовательские алгоритмы с 2000 года, как правило, все еще приходилось писать на языке ассемблера.

Преемники

AMD, конкурирующий поставщик микропроцессоров x86, улучшила MMX от Intel с помощью собственной 3DNow! набор инструкций. 3DNow наиболее известен добавлением поддержки одинарной точности (32-битной) с плавающей запятой в набор инструкций SIMD, среди других целочисленных и более общих улучшений.

Следующим после MMX основным расширением Intel для x86 стало Streaming SIMD Extensions (SSE), представленное в семействе Pentium III в 1999 году, примерно через год после AMD 3DNow! был представлен.

SSE устранил основные недостатки MMX (невозможность смешивать целочисленные операции SIMD с любыми операциями с плавающей запятой), создав новый 128-битный регистровый файл (XMM0 – XMM7) и новые инструкции SIMD для него. Как и 3DNow !, SSE ориентирован исключительно на операции с плавающей запятой одинарной точности (32-битные); Целочисленные операции SIMD по-прежнему выполнялись с использованием регистра MMX и набора команд. Однако новый регистровый файл XMM позволял SSE SIMD-операции свободно смешиваться с операциями MMX или x87 FPU.

Расширения Streaming SIMD 2 ( SSE2 ), представленные в Pentium 4, дополнительно расширили набор инструкций SIMD x86 за счет целочисленных (8/16/32 бит) и поддержки данных с плавающей запятой двойной точности для файла регистров XMM. SSE2 также позволял кодам операций MMX ( коды операций ) использовать операнды регистров XMM, расширенные до еще более широких регистров YMM и ZMM более поздними версиями SSE.

MMX во встроенных приложениях

Intel - х и Technology Group Marvell «s XScale ядро микропроцессора, начиная с PXA270 включают SIMD архитектуры набора команд расширение для ARM архитектуры ядра под названием Intel Wireless MMX Technology (iwMMXt), какие функции аналогичны в IA-32 расширения MMX. Он обеспечивает арифметические и логические операции с 64-битными целыми числами, при этом программное обеспечение может вместо этого выполнять две 32-битные, четыре 16-битные или восемь 8-битных операций в одной инструкции. Расширение содержит 16 регистров данных по 64 бита и восемь регистров управления по 32 бита. Доступ ко всем регистрам осуществляется через стандартный механизм сопоставления сопроцессора архитектуры ARM. iwMMXt занимает пространство сопроцессоров 0 и 1, и некоторые из его кодов операций конфликтуют с кодами операций более раннего расширения с плавающей запятой, FPA.

Более поздние версии процессоров Marvell ARM поддерживают коды операций Wireless MMX (WMMX) и Wireless MMX2 (WMMX2).

Смотрите также

использованная литература

внешние ссылки

Последняя правка сделана 2023-12-31 10:55:53
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте