Перейти к содержимому

Mmx что это

  • автор:

Mmx что это

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

Предпосылки

Фактически вся история развития компьютеров представляет собой непрерывную гонку между быстродействием центрального процессора и прочих систем — памяти и внешних устройств. Особенно это заметно в системах мультимедиа, где идет обработка звука и изображения, цифровое представление которых занимает большие объемы памяти. Для эффективной обработки звука и видео при относительно низкой пропускной способности системной магистрали (шины) все большее количество функций переносится в аппаратуру — модемы, видео- и звуковые адаптеры. Это вызывает их заметное удорожание в сравнении с общей стоимостью компьютера, что особенно неприятно в обстановке быстрого морального старения всей компьютерной аппаратуры.

Особенно данная проблема стала актуальна в начале 1990-х годов, когда ПК стал доступен широким массам пользователей и все активнее стал превращаться в средство развлечений. Первым процессором, ощутившим нехватку ресурсов для мультимедийных приложений по тому времени стал Pentium.

На самом деле, неспособность ПК с процессором Pentium эффективно обрабатывать в реальном времени звук и видео без специальных карт происходит уже не столько от общего быстродействия процессора или шины, которые в большинстве случаев вполне достаточны, а от характера его набора команд обработки данных, известного под названием CISC. Этот набор, состоящий из относительно сложных арифметико-логических команд, ориентирован на типовые задачи обработки данных, без специальной «заточки» под особые приложения. Эта выгодная для большинства приложений архитектура оказывается совершенно неэффективной при скоростной и специфической обработке больших массивов данных, поскольку сложная система команд используется на считанные проценты, а накладные расходы составляют десятки и сотни процентов.

Технология MMX представляет собой компромиссное решение, объединяющее пути, используемые в компьютерах SPARC и Silicon Graphics (технология RISC — Reduced Instruction Set Computer, компьютер с упрощенным набором команд), а также в компьютерах с параллельной архитектурой (технология SIMD: Single Instruction, Multiple Data — одна команда, много данных): классический процессор Pentium (CISC) с добавлением ряда простых (RISC) команд параллельной обработки данных (SIMD).

Технология MMX

Аббревиатура MMX происходит от выражения MultiMedia eXtension — расширение для мультимедиа, которое реализовано фирмой Intel в своей новой серии процессоров MMX с тактовой частотой 166 МГц и более. Исторически сложилось так, что почти любое новое решение в области персональных компьютеров широко рекламируется и преподносится как эпохальное, сулящее невиданный доселе расцвет компьютерным технологиям. Однако давно известно, что подобные громкие заявления во многих случаях оборачиваются весьма скромным реальным эффектом.

Процессор Pentium MMX отличается от «обычного» Pentium по шести основным пунктам: 1) добавлено 57 новых команд обработки данных; 2) увеличен в два раза объем внутреннего кэш (16 кб для команд и столько же — для данных); 3) увеличен объем буфера адресов перехода (Branch Target Buffer — BTB), используемого в системе предсказания переходов (Branch Prediction); 4) оптимизирована работа конвейера (Pipeline); 5) увеличено количество буферов записи (Write Buffers); 6) введено так называемое двойное электропитание процессора.

Набор из 57 новых команд и является основным отличием; остальные пять — не более, чем сопутствующие изменения. Хотя увеличенный объем кэш и внутренних буферов и оптимизированный конвейер несколько ускоряют работу любых приложений, однако основное увеличение производительности — до 60 % — возможно только при использовании программ, правильно применяющих технологию MMX в обработке данных.

Обработка данных в MMX

Как уже говорилось, в Pentium MMX добавлено 57 новых команд обработки данных и, соответственно — четыре новых типа данных. За одну операцию команда MMX обрабатывает 64-разрядное двоичное слово (так называемое квадраслово, или QWord). Новые типы данных образуются от упаковки в квадраслово обычных типов — байтов (по 8), слов (по 4) или двойных слов (по 2). Четвертый тип представляет собой само квадраслово.

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

Набор MMX-команд

Набор MMX-команд состоит из команд пересылки данных, упаковки/распаковки, сложения/вычитания, умножения, сдвига, сравнения и поразрядных логических. Команды упаковки и сложения/вычитания могут работать в двух режимах: обычном, когда переполнение разрядной сетки вызывает «заворачивание» (wraparound) значения результата, и специальном, когда оно приводит к ограничению (clipping) результата до минимально или максимально допустимого значения. Режим ограничения в терминологии Intel называется Saturation (насыщение) — в нем особенно удобно выполнять смешивание цветов изображение или амплитуд звуковых сигналов, поскольку при обычном переполнении результат не имеет никакого смысла.

Команда умножения представлена тремя видами: первые два выполняют попарное умножение четырех слов с выбором либо старшей, либо младшей части результата, а третий выполняет операцию вида ab + cd для каждой пары из четырех слов операндов, что очень удобно при вычислении математических рядов.

Команды сдвига реализуют логический и арифметический сдвиги своих операндов (арифметический сдвиг отличается от логического тем, что при сдвиге вправо освободившиеся разряды заполняются копией знакового разряда, а не нулями, отчего он пригоден для умножения/деления знаковых операндов на степени двойки). Логические поразрядные команды выполняют операции И (AND), ИЛИ (OR), Исключающее ИЛИ (XOR), а также комбинированную команду И с инверсией одного из операндов (AND NOT), удобную для реализации «обратного выбора» по битовой маске.

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

Особенности реализации MMX

Для обработки данных и хранения промежуточных результатов в Pentium MMX используются восемь 64-разрядных регистров MM0..MM7, которые физически совмещены со стеком регистров математического сопроцессора. При выполнении любой из MMX-команд происходит установка «режима MMX» с отметкой этого в слове состояния сопроцессора (FPU Tag Word). С этого момента стек регистров сопроцессора рассматривается как набор MMX-регистров; завершает работу в режиме MMX команда EMMS (End MultiMedia State). С одной стороны, такая реализация позволила обеспечить нормальную работу приложений, использующих MMX, в многозадачных системах, не поддерживающих эту технологию, поскольку все подобные системы создают собственную копию содержимого стека сопроцессора и слова его состояния для каждого процесса. С другой стороны, переход между режимами занимает значительное время, и совмещение, например, в одном цикле команд сопроцессора с командами MMX может не только не ускорить, а даже существенно замедлить выполнение программы. Поэтому для достижения наилучших результатов рекомендуется группировать эти команды отдельно друг от друга, что на самом деле не представляет никакой сложности.

Производительность MMX

Так как MMX — достаточно узкоспециализированное расширение системы команд процессора, нельзя ожидать кардинального ускорения работы только от самого факта перехода на процессор MMX. Как уже было сказано, на приложениях общего характера, незнакомых с MMX, реальная производительность возрастает лишь на единицы процентов, хотя тесты могут показывать ее возрастание на 20-30 % — это происходит из-за цикличности большинства тестов, когда большая часть цикла попадает в увеличенный внутренний кэш. При использовании «чистого» MMX-кода, удачно подходящего к специфике решаемой задачи, быстродействие переписанного участка может возрасти в 5-6 раз, однако это ускорение будет локальным и неизбежно компенсируется «типовыми» участками программы, поэтому не следует сразу же ожидать от программ, использующих MMX, ускорения работы в разы. По максимальным результатам тестов Intel Media Benchmark и Norton Media Benchmark для Windows 95, обработка изображений с использованием технологии MMX происходит быстрее почти в пять раз, однако в среднем получается примерно 1.5..3-кратное ускорение.

Кстати, одним из классов программ, которым использование MMX сильно помогает, являются игры; однако уже давно не секрет, что сейчас компьютер, «достаточный для игр», во многих случаях существенно превосходит по сложности и стоимости «достаточный для работы», ибо современные игры близки по структуре к сложным операционным системам реального времени. Поэтому в ближайшем будущем все без исключения игры, применяющие анимацию и звук, будут поддерживать (а многие — и требовать) технологию MMX.

Регистры 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 указывают тип данных. Если в суффиксе есть две из этих букв, первая соответствует входному операнду, а вторая — выходному.

Новые инструкции включают следующие группы:

  • Команды пересылки данных (Data Transfer Instructions) между регистрами MMX и целочисленными регистрами и памятью;
  • Команды преобразования типов
  • Арифметические операции (Arithmetic Instructions), включающие сложение и вычитание в разных режимах, умножение и комбинацию умножения и сложения;

MMX в встраиваемых процессорах

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

Примечания

  • Команды сравнения (Comparison Instructions) элементов данных на равенство или по величине;
  • Логические операции (Logical Instructions)- И, И-НЕ, ИЛИ и Исключающие ИЛИ, выполняемые над 64 битными операндами;
  • Сдвиговые операции (Shift Instructions) логические и арифметические;
  • Команды управления состоянием (Empty MMX State) очистка MMX — установка признаков пустых регистров в слове тегов.

Инструкции MMX не влияют на флаги условий. Регистры MMX, в отличие от регистров FPU, адресуются физически, а не относительно TOS. Любая инструкция MMX обнуляет поле TOS регистра состояния FPU. Инструкции MMX доступны из любого режима процессора.

См. также

Литература

  • Зубков С. В. Assembler для DOS, Windows, UNIX. 3-е изд., стер. — М. : ДМК Пресс; СПб. : Питер, 2004. — 608 с.
  • Роберт Шимонски Освой самостоятельно Unix. 10 минут на урок = Sams Teach Yourself Unix in 10 Minutes. — М .: «Вильямс», 2006. — С. 272. — ISBN 0-672-32764-3

Ссылки

  • IA Software Developer’s Manual, Vol 1 (англ.) , см. раздел 8 о программировании MMX
  • IA Optimization manual (англ.) , Руководство
  • Codenet.ru (рус.) , статья о программировании ММХ, codenet.ru
  • [1] (рус.) , статья о программировании ММХ
Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её.
Это примечание по возможности следует заменить более точным.
  • Проставив сноски, внести более точные указания на источники.
Наборы расширения базовых инструкций процессоров семейства x86
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES
  • Инструкции x86
  • Расширения архитектуры x86

Wikimedia Foundation . 2010 .

  • Дериева, Регина Иосифовна
  • Линия грёз (цикл)

Полезное

Смотреть что такое «MMX» в других словарях:

  • MMX — [Abk. für Multimedia Extension, dt. »Multimediaerweiterung«], eine Prozessortechnologie von Intel, welche die Ausführung von Multimedia Software beschleunigt. MMX umfasst einen Satz von 57 neuen Grafik , Audio und Videobefehlen und wurde… … Universal-Lexikon
  • Mmx — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sigles d une seule lettre Sigles de deux lettres > Sigles de trois lettres … Wikipédia en Français
  • MMX — es el acrónimo de MultiMedia eXtensions, un juego de instrucciones introducidas por Intel en sus procesadores Pentium MMX. Su función es mejorar el rendimiento en el procesamiento de las tareas multimedia. Para ello incorporan a los… … Enciclopedia Universal
  • MMX — may refer to:* MMX (instruction set), a single instruction, multiple data instruction set designed by Intel * Michelson Morley Experiment, the 1887 experiment attempting to find evidence of the luminiferous aether * Mega Man X, a series of video… … Wikipedia
  • MMX — steht für: Flughafen Malmö, ein Flughafen in Schweden (IATA Code) Michelson Morley Experiment, physikalisches Experiment Mineração e Metálicos S.A., Bergbaufirma von Eike Batista Multi Media Extension, von Intel entworfene Prozessortechnik Das… … Deutsch Wikipedia
  • MMX — (Multi Media Extensions) improved and very fast Pentium processor for operating multimedia programs … English contemporary dictionary
  • MMX — DEFINICIJA krat. inform. integrirani sklop Pentium© serije procesora koji poboljšava multimedijalne sposobnosti računala ETIMOLOGIJA engl. Multi media extensions© … Hrvatski jezični portal
  • MMX — Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar al … Wikipedia Español
  • MMX — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sigles d’une seule lettre Sigles de deux lettres > Sigles de trois lettres Sigles de quatre lettres … Wikipédia en Français
  • MMX — ● np. tm. ►PUCE►TM MultiMedia eXtension ou Matrix Math Extensions. Ensemble de 57 instructions incluses en 1997 dans les processeurs Intel à partir du Pentium pour faciliter le traitement du son et des images. Il s agit en gros de l incorporation … Dictionnaire d’informatique francophone
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

MMX (Multimedia Extensions )

MMX (сокр. от MultiMedia eXtensions — мультимедийные расширения) — набор инструкций микропроцессора, предназначенных для ускорения обработки аудио- и видеоданных.

Технология MMX разработана компанией Intel и впервые использована в 1997 году в процессорах Pentium MMX. Позже ее начали использовать и другие производители. Сегодня MMX является обязательным атрибутом любого современного процессора.

Как работает MMX? Говоря простым языком, каждую единицу времени процессор осуществляет определенное количество машинных операций, обрабатывая в процессе каждой из них какой-то объем информации. Общее быстродействие процессора зависит как от количества совершаемых им операций за единицу времени (частота процессора), так и от количества данных, обрабатываемых им за каждый такт.

MMX представляет собой 57 дополнительных команд и восемь 64-битных регистров, позволяющих процессору за одну машинную операцию обрабатывать 64-битное бинарное слово (так называемое квадрослово), которое может включать сразу несколько более мелких однотипных «частичек» — 8 байтов (1 байт = 8 битов), 4 слова (по 16 бит) или 2 двойных слова (по 32 бита). За счет этого в программах, разработанных с учетом поддержки MMX, процессору для обработки большого массива однотипных данных (которыми, по сути, и являются мультимедийные данные) требуется значительно меньше времени.

Например, при работе с цифровым изображением с глубиной цвета 16 бит процессор с MMX, в отличие от процессора без этого набора инструкций, может одновременно обрабатывать не один, а сразу 4 пиксела.

По результатам синтетических тестов, MMX обеспечивает в среднем почти пятикратное увеличение производительности при работе с мультимедиа. На практике эти цифры несколько скромнее — около 1,5 — 1,7 раза (в оптимизированных приложениях).

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

Эти недостатки MMX были устранены позже с введением технологий 3DNow! и SSE.

ПОДЕЛИТЬСЯ:

НАПИСАТЬ АВТОРУ

Похожие материалы

Технологии и инструкции, используемые в процессорах

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

Отдельные из этих технологий нужны только для решения специфических заданий и в «домашнем» компьютере вряд ли когда-нибудь понадобятся. Наличие же других является непременным условием работы программ, необходимых для повседневного использования.

Так, полюбившийся многим браузер Google Chrome не работает без поддержки процессором SSE2. Инструкции AVX могут в разы ускорить обработку фото- и видеоконтента. А недавно один мой знакомый на достаточно быстром Phenom II (6 ядер) не смог запустить игру Mafia 3, поскольку его процессор не поддерживает инструкции SSE4.2.

Если аббревиатуры SSE, MMX, AVX, SIMD вам ни о чем не говорят и вы хотели бы разобраться в этом вопросе, изложенная здесь информация станет неплохим подспорьем.

Таблица совместимости процессоров и материнских плат AMD

Одной из особенностей компьютеров на базе процессоров AMD, которой они выгодно отличаются от платформ Intel, является высокий уровень совместимости процессоров и материнских плат. У владельцев относительно не старых настольных систем на базе AMD есть высокие шансы безболезненно «прокачать» компьютер путем простой замены процессора на «камень» из более новой линейки или же флагман из предыдущей.

Если вы принадлежите к их числу и задались вопросом «апгрейда», эта небольшая табличка вам в помощь.

Сравнение процессоров

В таблицу можно одновременно добавить до 6 процессоров, выбрав их из списка (кнопка «Добавить процессор»). Всего доступно больше 2,5 тыс. процессоров Intel и AMD.

Пользователю предоставляется возможность в удобной форме сравнивать производительность процессоров в синтетических тестах, количество ядер, частоту, структуру и объем кэша, поддерживаемые типы оперативной памяти, скорость шины, а также другие их характеристики.

Дополнительные рекомендации по использованию таблицы можно найти внизу страницы.

Спецификации процессоров

В этой базе собраны подробные характеристики процессоров Intel и AMD. Она содержит спецификации около 2,7 тысяч десктопных, мобильных и серверных процессоров, начиная с первых Пентиумов и Атлонов и заканчивая последними моделями.

Информация систематизирована в алфавитном порядке и будет полезна всем, кто интересуется компьютерной техникой.

Таблица процессоров

Таблица содержит информацию о почти 2 тыс. процессоров и будет весьма полезной людям, интересующимся компьютерным «железом». Положение каждого процессора в таблице определяется уровнем его быстродействия в синтетических тестах (расположены по убыванию).

Есть фильтр, отбирающий процессоры по производителю, модели, сокету, количеству ядер, наличию встроенного видеоядра и другим параметрам.

Для получения подробной информации о любом процессоре достаточно нажать на его название.

Как проверить стабильность процессора

Проверка стабильности работы центрального процессора требуется не часто. Как правило, такая необходимость возникает при приобретении компьютера, разгоне процессора (оверлокинге), при возникновении сбоев в работе компьютера, а также в некоторых других случаях.

В статье описан порядок проверки процессора при помощи программы Prime95, которая, по мнению многих экспертов и оверлокеров, является лучшим средством для этих целей.


ПОКАЗАТЬ ЕЩЕ

Знакомство с MMX-технологией.

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

movq mmreg1, A movq mmreg2, B paddb mmreg2, mmreg1 movq B, mmreq2
paddb mmreg2, mmreg1 paddb mmreg3, mmreg2

*Инструкция EMMS не паруется.

ТИПЫ ДАННЫХ.

    1. Восемь байтов
    2. Четыре слова
    3. Два двойных слова
    4. Одна 64-разрядная переменная

То, как интерпретируется конкретный регистр, отлично отображается в мнемонике команды. К примеру, инструкция PADDB складывает два операнда, полагая, что они являются набором байт, а PADDW считает операнды набором слов.

Все инструкции можно разбить на следующие группы:

арифметические команды
сложение PADDB PADDD PADDSB PADDSW PADDUSB PADDUSW PADDW
сложение и умножение PMADDWD
умножение PMULHW PMULLW
вычитание PSUBB PSUBD PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW
команды очищающие регистры
EMMS
команды сравнения
проверка равенства PCMPEQB PCMPEQD PCMPEQW
сравнение PCMPGTB PCMPGTD PCMPGTW
команды упаковки/распаковки
PUNPCKHBW PUNPCKHDQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD PACKSSDW PACKSSWB PACKUSWB
логические команды
PAND PANDN POR PXOR
команды передачи данных
MOVD MOVQ
команды сдвига
логический сдвиг влево PSLLD PSLLQ PSLLW
арифметический сдвиг вправо PSRAD PSRAW
логический сдвиг вправо PSRLD PSRLQ PSRLW

Команды MMX имеют такой формат:

инструкция mmreg1, mmreg2/mem64
    P-упакованные данные (Packed data)
    B-байт (byte)
    W-слово (word)
    D-двойное слово (DoubleWord)
    Q-64 битовая переменная (QuadWord)
    S-знаковая (Signed)
    U-беззнаковая (Unsigned)
    SS-знаковая с сатурацией (Signed Saturation)
    US-беззнаковая с сатурацией (Unsigned Saturation)

О смысле жизни.

Скорее всего, прочитав кое-что о командах, вас потянуло ко сну. Дабы не спать на рабочем месте давайте поговорим о простом.

Вообще существует множество задач, где MMX приходится весьма кстати. К примеру, MMX прекрасно подходит для задач обработки звука. Действительно, оцифрованный звук задается последовательностью 8-ми,16-ти или 32-разрядных чисел. По этой причине, если нам нужно, к примеру, воспроизвести два звука одновременно, то согласно теореме о суперпозиции нам следует сложить соответствующие последовательности чисел. Тут MMX на высоте. Кроме того, как нельзя кстати, есть возможность складывать с сатурацией. В результате скорость может быть повышена в 4-5 раз.

Однако разрядность MMX регистров, к сожалению, мала. Поэтому некоторые классы задач сложно приспособить к использованию этой мощи. К примеру, в графике часто нужно выполнить операцию умножения матрицы на матрицу, или вектора на матрицу. Казалось бы, вот где MMX понадобится. Однако в большинстве задач в качестве элементов матрицы или вектора используются числа с плавающей точкой. Вывод — MMX тут не применишь.

Правда можно в качестве элементов использовать числа с фиксированной точкой . Размер такого числа — четыре байта. То есть в один регистр поместится только два элемента вектора. Тонкость тут в том, что в случае трехмерных преобразований скалярное произведение нужно считать от двух трехэлементных векторов. Решить проблему можно — использовать для этого два MMX регистра: в первом два элемента, во втором один. Однако выигрыш при этом будет не столь значителен, как хотелось бы.

К чему же мы пришли?

Очевидно, что технология MMX — это шаг вперед. Аббревиатура MMX — уже стала символом революции. Не даром корпорация Intel пыталась в судебном порядке запретить AMD ее использовать, впрочем, безуспешно.

Она прекрасно вписывается в существующую архитектуру микропроцессора. Сохраняется полная совместимость с уже написанными программными продуктами. Наряду с этим видны и ограничения, заложенные в нее, которые со временем нужно будет преодолевать.

КРАТКОЕ ОПИСАНИЕ КОМАНД.

Приведем описание некоторых инструкций, помогающих понять суть работы MMX.

MOVD
Формат
MOVD mmreg1, reg32/mem32
MOVD reg32/mem32, mmreg1
Описание
Инструкция MOVD пересылает 32 младших бита регистра MMX в регистр общего назначения или память. Или же из регистра общего назначения/памяти в регистр MMX. В последнем случае кроме собственно пересылки биты 32-64 соответствующего регистра обнуляются.

PADDB
Формат
PADDB mmreg1, mmreg2/mem64
Описание
Складывает восемь 8-разрядных чисел операнда источника (MMX регистра или 64-разрядного поля памяти) и восемь 8-разрядных чисел операнда-получателя (регистра MMX). В случае переполнения полученные значения заворачиваются (то есть 255+10=9) без установки флага переноса при подсчете последующих байтов. Результат помещается в операнд-получатель.

PADDSW
Формат
PADDSW mmreg1, mmreg2/mem64
Описание
Складывает четыре 16-битных чисел со знаком операнда источника (регистра MMX или 64-разрядного поля памяти) и четыре соответствующих значения операнда-получателя (регистра MMX). Если сумма каких-либо двух из них менее чем -32768 (8000h), то результат сложения -32768 (8000h). Аналогично в случае, когда сумма превышает 32767 (7FFFh), то возвращаемый результат 32767 (7FFFh). Результат заносится в операнд-получатель.Следующий список возможных ситуаций помогает понять, как происходит сложение:

Если число D250h (-11696) складывается с 8807h (-30713), то получаемый результат 8000h (-32768) — минимально возможное 16-разрядное число.
Если число 5321h (+21281) прибавляется в EC22h (-5086), то получаемый результат 3F43h (+16195).
Сумма 16-разрядного числа 7007h (+28679) и 0FF9h (+4098) дает результат 7FFFh (+32767) — максимально возможное положительное число.
Если к FFFFh (-1) прибавить FFFFh (-1), то получим FFFEh (-2).

PAND
Формат
PAND mmreg1, mmreg2/mem64
Описание
Инструкция PAND выполняет логическую операцию «и» над операндами. Результат заносится в операнд-получатель. Если соответствующие биты источника и получателя равны единице, то значение итогового бита единица. Эта команда может использоваться для распаковки упакованных переменных при помощи маски полученной от инструкций сравнения PCMPEQ и PCMPGT.

PCMPEQB
Формат
PCMPEQB mmreg1, mmreg2/mem64
Описание
Сравнивает источник с получателем, рассматривая операнды как упакованные байты. Если биты операндов эквивалентны, то все биты 8-разрядной части получателя устанавливаются равными единице, в противном случае они обнуляются.

PCMPGTD
Формат
PCMPGTB mmreg1, mmreg2/mem64
Описание
Аналогична PCMPEQ, но в отличие от нее биты в целевом операнде устанавливается в том случае, когда байт целевого операнда больше соответствующего байта операнда источника.

PACKUSWB
Формат
PACKUSWB mmreg1, mmreg2/mem64
Описание
Переводит восемь знаковых слов задаваемые аргументами (по четыре слова в каждом) в восемь беззнаковых байт. После чего результат сохраняется в mmreg1. Сатурация при этом происходит следующим образом:

Команды MMX ( начиная с Pentium MMX, K6 )

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

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

По-английски эти типы данных называются, соответственно, packed byte, packed word, packed doubleword и quadword.

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

instruction [dest, src]

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

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

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

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

EMMS команда обеспечивает переход процессора от исполнения MMX-команд к исполнению обычных команд с плавающей запятой: она устанавливает значение 1 во всех разрядах слова состояния.
PADDB mm, mm/m64; PADDW mm, mm/m64; PADDD mm, mm/m64 команды складывают элементы данных (байты, слова или двойные слова) входного и выходного операнда. Если сумма выходит за границу допустимого диапазона, то по правилам циклической арифметики избыток отсчитывается от другой границы диапазона. «Переноса» единицы из одного элемента данных в другой не происходит.
PADDSB mm, mm/m64; PADDSW mm, mm/m64 команды складывают элементы данных (байты или слова) входного и выходного операнда. Если сумма выходит за граничное значение допустимого диапазона, то результатом считается это граничное значение.
PADDUSB mm, mm/m64; PADDUSW mm, mm/m64 команды складывают элементы данных (байты или слова) входного и выходного операнда. Если сумма выходит за граничное значение допустимого диапазона, то результатом считается это граничное значение.
PSUBB mm, mm/m64; PSUBW mm, mm/m64; PSUBD mm, mm/m64 команды вычитают элементы данных (байты, слова или двойные слова) входного операнда из элементов данных выходного операнда. Если результат выходит за границу допустимого диапазона, то по правилам циклической арифметики соответствующее число единиц отсчитывается от другой границы диапазона. «Переноса» единицы из одного элемента данных в другой не происходит.
PSUBSB mm, mm/m64; PSUBSW mm, mm/m64 команды вычитают элементы данных (байты или слова) входного операнда из элементов данных выходного операнда. Если разность выходит за граничное значение допустимого диапазона, то результатом считается это граничное значение.
PSUBUSB mm, mm/m64; PSUBUSW mm, mm/m64 команды вычитают элементы данных входного операнда из элементов данных выходного операнда. Если разность выходит за граничное значение допустимого диапазона, то результатом считается это граничное значение.
PSLLW mm, mm/m64/imm; PSLLD mm, mm/m64/imm; PSLLQ mm, mm/m64/imm команды выполняют сдвиг элементов данных (16-, 32- или 64-разрядных слов) в выходном операнде на число бит, задаваемое входным операндом. Освободившиеся младшие разряды заполняются нулями.
PSRAW mm, mm/m64/imm; PSRAD mm, mm/m64/imm команды выполняют сдвиг элементов данных (16- или 32-разрядных слов) в выходном операнде на число бит, задаваемое входным операндом. Если сдвигается положительное число, то освободившиеся старшие разряды заполняются нулями, а если отрицательное, то единицами.
PSRLW mm, mm/m64/imm; PSRLD mm, mm/m64/imm; PSRLQ mm, mm/m64/imm команды выполняют сдвиг элементов данных (16-, 32- или 64-разрядных слов) в выходном операнде на число бит, задаваемое входным операндом. Освободившиеся старшие разряды заполняются нулями.
PAND mm, mm/m64 команда вычисляет поразрядное логическое И своих операндов.
PANDN mm, mm/m64 команда вычисляет обращение (поразрядное НЕ) выходного операнда, а затем поразрядное логическое И между входным операндом и обращенным значением выходного.
POR mm, mm/m64 команда вычисляет поразрядное логическое ИЛИ своих операндов.
PXOR mm, mm/m64 команда вычисляет поразрядное логическое исключающее ИЛИ своих операндов.
PMADDWD mm, mm/m64 команда попарно перемножает 16-разрядные слова со знаком входного и выходного операндов. Это дает четыре 32-разрядных произведения. Затем первое произведение складывается со вторым, а третье с четвертым. Суммы записываются в 32-разрядные слова выходного операнда. Если все слова на входе равны 8000h, результатом будет 80000000h (это единственный случай, когда перемножение отрицательных чисел дает отрицательный результат).
PMULHW mm, mm/m64 команда попарно перемножает 16-разрядные слова со знаком входного и выходного операндов, что дает четыре 32-разрядных произведения. Старшие разряды произведений записываются в 16-разрядные слова выходного операнда. Младшие разряды произведений теряются.
PMULLW mm, mm/m64 команда попарно перемножает 16-разрядные слова со знаком входного и выходного операндов, что дает четыре 32-разрядных произведения. Младшие разряды произведений записываются в 16-разрядные слова выходного операнда. Старшие разряды произведений теряются.
PCMPEQB mm, mm/m64; PCMPEQW mm, mm/m64; PCMPEQD mm, mm/m64 команды попарно сравнивают элементы данных (байты, 16- или 32-разрядные слова) входного и выходного операндов. Если элемент данных выходного операнда равен соответствующему элементу входного, такой элемент выходного операнда заполняется единицами. Если равенства нет, он заполняется нулями.
PCMPGTB mm, mm/m64; PCMPGTW mm, mm/m64; PCMPGTD mm, mm/m64 команды попарно сравнивают элементы данных (байты, 16- или 32-разрядные слова со знаком) входного и выходного операндов. Если элемент данных выходного операнда больше соответствующего элемента входного, такой элемент выходного операнда заполняется единицами; если же он не больше входного, то он заполняется нулями.
PACKSSWB mm, mm/m64; PACKSSDW mm, mm/m64 команды преобразуют длинные элементы данных (16- и 32-разрядные слова со знаком) в более короткие (байты или 16-разрядные слова со знаком). Если исходное значение было за пределами допустимого диапазона для выходного типа данных, то результатом упаковки считается ближайшее граничное значение диапазона.
PACKUSWB mm, mm/m64 команда преобразует 16-разрядные слова со знаком из обоих операндов в байты без знака и записывает их в выходной операнд. Если исходное слово со знаком было больше FFh, результатом преобразования считается FFh. Если исходное слово со знаком отрицательно, результатом преобразования считается 00h.
PUNPCKHBW mm, mm/m64; PUNPCKHWD mm, mm/m64; PUNPCKHDQ mm, mm/m64 команды попарно объединяют исходные элементы данных (байты, 16- или 32-разрядные слова), находившиеся в старших 32 разрядах обоих операндов. Полученные в результате более длинные элементы данных записываются в выходной операнд. Исходные значения младших разрядов операндов на результат не влияют.
PUNPCKLBW mm, mm/m64; PUNPCKLWD mm, mm/m64; PUNPCKLDQ mm, mm/m64 команды попарно объединяют исходные элементы данных (байты, 16- или 32-разрядные слова), находившиеся в младших 32 разрядах обоих операндов. Полученные в результате более длинные элементы данных записываются в выходной операнд. Исходные значения старших разрядов операндов на результат не влияют.
MOVD mm, mm/m32/ir32 команда копирует 32 бита из младших разрядов MMX-регистра, либо из памяти, либо из целочисленного регистра в младшие 32 разряда MMX-регистра (старшие разряды заполняются нулями).
MOVD m32/ir32, mm команда копирует 32 бита из младших разрядов MMX-регистра в память либо в целочисленный регистр.
MOVQ mm, mm/m64 команда пересылки данных в MMX-регистр.
MOVQ mm/m64, mm команда пересылки данных из MMX-регистра.

Назад | Дальше

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *