Что такое mmx в процессоре
MMX (Multimedia Extensions — мультимедийные расширения) — коммерческое название дополнительного набора инструкций, выполняющих характерные для процессов кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Разработан в лаборатории Intel в Хайфе, Израиль, в первой половине 1990-х. [источник не указан 1000 дней]
Типы данных MMX
Команды технологии MMX работают с 64-разрядными целочисленными данными, а также с данными, упакованными в группы (векторы) общей длиной 64 бита. Такие данные могут находиться в памяти или в восьми MMX-регистрах.
Команды технологии MMX работают со следующими типами данных:
- упакованные байты (восемь байтов в одном 64-разрядном регистре) (англ.packed byte );
- упакованные слова (четыре 16-разрядных слова в 64-разрядном регистре) (packed word);
- упакованные двойные слова (два 32-разрядных слова в 64-разрядном регистре) (packed doubleword);
- 64-разрядные слова (quadword).
Ссылки
Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её. Это примечание по возможности следует заменить более точным. |
166 МГц Pentium | 1,0 | 1,0 |
200 МГц MMX * | 2,7 | 1,5 |
CompuLink 166 МГц MMX * | 2,2 | 1,3 |
Power Mac 8500/180 | 2,2 | 1,6 |
Power Mac 9500/200 | 2,5 | 1,8 |
Лаборатория Macworld тестировала компьютеры на 25 задачах в пакете Adobe Photoshop (использовалось 32 Мбайт оперативной памяти) и на выполнение рендеринга анимации в пакете Macromedia Extreme 3D 2.0 (использовались 64 Мбайт оперативной памяти). На Macintosh и ПК с процессорами без поддержки MMX было установлено 2 Мбайт видеопамяти. На ПК с процессорам MMX Pentium - 4 Мбайт. Все ПК работали под управлением Windows 95, Macintosh - под управлением System 7.5.3. Со всеми компьютерами использовался 17-дюймовый монитор, поддерживающий 24-разядный цвет. Тестированием в лаборатории Macworld руководил Крис Эйтервейк.
Архитектура ММХ Реализация ММХ Приложения После Pentium Pro придет Pentium II В январе к числу "горячих" тем, о которых так любит писать компьютерная пресса, была причислена технология MMX компании Intel.
В январе к числу "горячих" тем, о которых так любит писать компьютерная пресса, была причислена технология MMX компании Intel. Хотя обсуждение горячих тем, несомненно, процесс весьма "заразный", смею уверить читателя в "неинфекционных" причинах нашего внимания к MMX: она действительно заслуживает подробного рассмотрения в нашей рубрике.
На основании некоторых популярных и чрезмерно восторженных высказываний в ряде западных публикаций, попавших на страницы отечественной прессы, может сложиться впечатление, что технология ММХ непосредственно позволяет разрешить все основные проблемы мультимедиа. Наша цель - рассмотреть, что же такое ММХ на самом деле и в чем ее преимущества, в частности, по отношению к задачам мультимедиа. Вообще считается, что ММХ превратилась в самое значительное расширение архитектуры Intel (IA, Intel Architecture) c момента появления микропроцессоров 80386. И это справедливо, поскольку, грубо говоря, система команд IA за эти годы претерпела весьма незначительные изменения. А с внедрением ММХ сразу добавляется аж 57 новых команд! В то же время "внутренняя реализация" IA подверглась революционным изменениям одновременно с появлением Pentium Pro. По мнению автора, выход на рынок последнего микропроцессора сыграл гораздо более важную, определяющую роль для всего процесса развития микропроцессорных технологий фирмы Intel, и в этом смысле влияние ММХ существенно меньше.
Архитектура ММХ
Прежде чем рассмотреть реализацию ММХ в микропроцессорах Pentium, которые уже активно продвигаются на рынке, или "версию" ММХ для Pentium Pro, которая также должна вскоре появиться, нужно понять общие идеи и принципы ММХ.
Они действительно являются общими. Введение ММХ, с одной стороны, сохраняет совместимость снизу вверх с уже существующими операционными системами и приложениями, работающими на не имеющих ММХ микропроцессорах Intel. С другой стороны, программное обеспечение, использующее ММХ, будет успешно работать как на Pentium/MMX, так и на Pentium Pro/MMX.
Проведенный специалистами Intel анализ показал, что было бы эффективно обратиться к хорошо известной в мире суперкомпьютеров архитектуре SIMD (Single Instruction - Multiple Data, "одиночный поток команд - множественный поток данных"), что и было реализовано в ММХ. Позволю себе здесь отвлечься от основной темы и напомнить: в нашей рубрике уже как-то отмечалось, что изучение архитектуры суперкомпьютеров имеет значение не только само по себе, но и как пример того, что может завтра появиться в персональном компьютере на вашем рабочем столе. Мы как в воду глядели - очередное подтверждение этого тезиса не заставило себя долго ждать. Тот, кто сталкивался когда-либо ранее с SIMD, понимает, что типичный пример здесь - работа с векторами. В случае с ММХ, как мы увидим ниже, также можно говорить о некоторых "векторах".
Во избежание путаницы отметим также, что термины "параллельный" и "распараллеливание" в ММХ используются для обозначения параллельности (одновременности) выполнения ряда операций над данными (компонентами вектора, если угодно) в пределах одной команды. В большинстве же случаев в современной литературе, говоря о распараллеливании, имеют в виду одновременное выполнение нескольких команд, например, различными процессорами.
Итак, что же такое технология ММХ? Можно указать на четыре основные ее "составляющие": применение идей SIMD; расширение системы команд; введение в IA четырех новых типов данных; появление 8 новых 64-разрядных ММХ-регистров. Главный признак новых типов данных ММХ - это упакованные в 64-разрядное "квадрослово" целые. Такие 64-разрядные величины могут храниться в ММХ- регистрах. В квадрослово (это - отдельный тип данных) могут помещаться 8 упакованных байтов, 4 упакованных 16-разрядных слова и 2 упакованных 32-разрядных (двойных) слова. Все упакованные величины выступают как целые числа, со знаками или без. Причем во время выполнения ММХ-команды операции над этими упакованными величинами выполняются одновременно, как если бы они были компонентами вектора. В качестве некоего аналога этих типов данных можно указать на упакованное десятичное представление в мэйнфреймах IBM, хорошо знакомое профессионалам, работавшим с ЕС ЭВМ.
Среди 57 добавленных ММХ-команд можно выделить следующие основные группы: арифметические (сложение, вычитание, умножение, арифметический сдвиг, PMADD - умножение со сложением, a=b*c+d - как, скажем, в микропроцессорах MIPS R10000 или HP-PA 80000); сравнение; преобразования к новым типам данных (упаковка/распаковка); логические команды (AND, AND NOT, OR, XOR); команды сдвига; команды пересылки данных, в том числе загрузка в ММХ-регистр и запись в память. Для того чтобы определить, есть ли в микропроцессоре поддержка ММХ, необходимо выдать команду CPUID и посмотреть, установлен ли бит-признак наличия ММХ.
Реализация ММХ
Поскольку в настоящее время выпускаются микропроцессоры Pentium/MMX, а реализация Pentium Pro/MMX только ожидается, мы сконцентрируемся на особенностях ММХ в Pentium, уделяя Pentium Pro/MMX меньше внимания. Основные отличия между Pentium и Pentium Pro в области реализации ММХ относятся, конечно, к структуре конвейеров. Если Pentium - это суперскалярный микропроцессор, способный выполнять до двух целочисленных команд за такт, то Pentium Pro - это микропроцессор с динамическим выполнением команд, в котором "все по-другому". По сравнению с "чистым" Pentium, в Pentium/MMX в целочисленные конвейеры добавляется еще одна стадия. Вообще говоря, при фиксированной тактовой частоте это обычно минус для производительности, поскольку для поддержания высокого темпа вычислений приходится заполнять более длинные конвейеры. Похоже, этот недостаток с лихвой компенсируется другими усовершенствованиями, о которых будет упомянуто ниже.
Прежде всего, в процессорах с ММХ кэши команд и данных первого уровня являются 4-канальными частично ассоциативными с длиной строки 32 байт. Кэш поддерживает механизм обратной записи и использует алгоритм псевдо-LRU для замещения информации. В процессорах Pentium/MMX емкость кэша команд и данных увеличена вдвое - до 16 Кбайт для каждого. При этом кэш данных доступен из обоих целочисленных конвейеров одновременно, если ссылки идут в разные банки кэша (в "чистом" процессоре Pentium этой возможности не было). Вероятно, наряду с увеличением размера кэша это - одна из самых главных причин повышения производительности Pentium/MMX для программ, не использующих ММХ-команды. В Pentium Pro/MMX кэш данных доступен одновременно для команд записи в память и загрузки регистров, если ссылки идут в разные банки кэша. Задержка из-за непопадания в кэш составляет 8 тактов в Pentium/MMX и не менее 10 тактов в Pentium Pro/MMX.
Кроме модернизации кэш-памяти в Pentium/MMX вдвое (с 2 до 4) увеличено число буферов записи, причем они могут использоваться обоими целочисленными конвейерами (в Pentium каждый буфер был приписан к "своему" конвейеру). Наконец, в Pentium/MMX было также усовершенствовано предсказание переходов.
Pentium/MMX содержит 4,5 млн. транзисторов и построен по технологии 0,35 мкм. Он работает с пониженным напряжением, и поэтому его энерговыделение не возросло. В настоящее время поставляются процессоры с тактовой частотой 166 и 200 МГц.
Приложения
Наконец-то мы добрались до главного - до приложений. Какое же отношение ММХ, как расширение IA, имеет к мультимедиа? Как ясно из предыдущего текста, чисто формально - никакого! ММХ - это вовсе не эквивалент какого-нибудь графического акселератора, который ничем, кроме графики, не занимается. ММХ - это достаточно универсальное расширение IA, поднимающее производительность микропроцессоров Intel. Фактически, конечно же, возможности ММХ наиболее эффективно могут быть использованы прежде всего в мультимедийных приложениях. Но сначала следует привести некоторые общие оценки производительности Pentium/MMX. В таблице 1 представлены данные iCOMP - известного внутреннего индекса производительности микропроцессоров Intel.
Таблица 1.
Индекс iCOMP для различных модификаций Pentium.
Процессор | Тактовая частота | iCOMP |
Pentium/MMX | 200 | 182 |
-"- | 166 | 160 |
Pentium | 200 | 142 |
-"- | 166 | 127 |
-"- | 150 | 114 |
-"- | 133 | 111 |
-"- | 120 | 100 |
-"- | 100 | 90 |
-"- | 90 | 81 |
-"- | 75 | 67 |
Как мы уже говорили, общее увеличение производительности Pentium/MMX в первую очередь определяется модернизацией микропроцессора, не относящейся к ММХ в "узком смысле", под которой мы имеем в виду новые команды ММХ и новые типы данных. Чтобы добиться увеличения производительности за счет собственно ММХ, нужно реально использовать новые команды.
В качестве примера можно привести наложение одного изображения на другое (Intel приводит в пример девушку, объявляющую прогноз погоды на фоне карты). Эту ситуацию можно описать, например, с применением 16-разрядных пикселов. Тогда четыре таких пиксела в ММХ будут обрабатываться параллельно: ММХ-команда сравнения строит маску для данных, позволяющую отделять девушку от зеленого фона, последующие ММХ-команды AND NOT и NOT используют эту маску для определения, какие пикселы следует отобрать, и все завершается командой "или". Без ММХ пикселы обрабатывались бы последовательно по одному, и к тому же понадобились бы команды условного перехода, что "портит" заполнение конвейеров.
Другой пример - скалярное произведение векторов (вспомните суперкомпьютеры). Эта операция часто используется при обработке аудио- и видеосигналов. Применение команды PMADD и упакованных переменных позволяет реализовать эту операцию тринадцатью командами в Pentium/MMX против 40 в Pentium без ММХ. При этом в четыре раза сокращается число потенциально "нехороших" для эффективной работы кэша команд загрузки в регистры, так как загружаются сразу 64-разрядные величины.
Наконец, пример из области трехмерной графики. При манипулировании трехмерными объектами часто применяются матрицы 4х4, которые многократно умножаются на различные четырехмерные векторы, 3 компонента которых есть х-, y- и z-координаты, а четвертая - данные для коррекции перспективы. При использовании PMADD и 16-разрядных целых одна такая команда может работать со всей строкой матрицы, и типовая операция реализуется за 28 команд против 72 в ММХ. Можно показать также, как применение ММХ позволяет ускорить процесс альфа-смешивания при динамическом переходе от одного изображения к другому (вспомните, например, переход от изображения игрока к изображению "Золотого брейна" в популярной телевизионной передаче "Брейн-ринг"!).
Естественно, для более массового использования возможностей ММХ необходимо, чтобы компиляторы научились порождать ММХ-команды в процессе трансляции. С другой стороны, ясно, что ММХ снимает только часть проблем, относящихся к геометрической обработке изображений. Известно, что для построения сложных высококачественных изображений необходимы интенсивные расчеты с плавающей запятой. Программистам рекомендуется избегать чрезмерного перемешивания команд с плавающей запятой с ММХ-командами, чтобы производительность Pentium/MMX не упала. Это связано с тем, что ММХ-регистры являются "алиасами" регистров с плавающей запятой, и переключение с ММХ-"контекста" на работу с плавающей запятой, или обратно, требует до 50 тактов процессора.
Наконец, для высококачественной графики характерно наличие больших массивов данных, которые надо уметь быстро передавать в обрабатывающие устройства. Для решения этой проблемы в Intel ведутся разработки специального высокоскоростного порта AGP (Accelerated Graphics Port). Следует сказать, что поддержка в микропроцессорах Intel специальных команд, эффективных в мультимедийных приложениях, - это часть общей тенденции. Первой здесь была Sun, добавившая в архитектуру UltraSPARC средства VIS (Visual Instruction Set). В этом же направлении движутся и другие фирмы, в том числе AMD, запланировавшая появление ММХ в будущем микропроцессоре К6. А вообще, эта тенденция является прямым отражением всевозрастающего значения мультимедиа в современных информационных технологиях. Intel, несомненно, лидирует в этом процессе, а ее мультимедийная направленность - это "всерьез и надолго".
После Pentium Pro придет Pentium II
Представители компании Intel сообщили, что следующая версия процессора, с усовершенствованными функциями мультимедиа, которая последует за процессором Pentium Pro, получит официальное название Pentium II. Как сказано в официальном заявлении, это название продолжает ряд торговых марок Pentium и Pentium Pro.
Системы с процессорами Pentium I, которые раньше назывались Klamath, предназначены для рынка бизнес-систем. Они будут выпускаться уже в первой половине этого года. К моделям нового семейства относятся процессоры с тактовой частотой 233 МГц и 266 МГц, то есть более быстрые, чем модели самого высокого класса в семействе Pentium Pro, имеющие тактовую частоту 200 МГц. Однако недавно было объявлено, что в лабораторных условиях процессоры, имеющие ту же архитектуру, показали быстродействие в 451 МГц.
Помимо множества команд MMX, процессоры Pentium II будут иметь новый формат компоновки, который разработчики Intel назвали картриджем Single Edge Contact (с однорядным расположением контактов).
Картридж SEC не будет совместим с существующими платами Pentium Pro, в которых процессор вставляется в 387-контактный разъем Socket 8. Вместо этого картридж присоединяется к 242-контактному разъему Slot 1. Новая конструкция картриджа потребует от производителей систем создания новых материнских плат, но Intel обещает, что картриджи новой формы она будет применять только по прошествии некоторого времени.
Несколько тайваньских производителей уже получили пробные экземпляры нового процессора, но пока ничего не известно об их планах выпуска новых продуктов, поскольку представители Intel попросили партнеров воздержаться от каких-либо объявлений.
Pentium MMX — процессор компании Intel, содержащий дополнительное расширение MMX. Впервые появился в 1997 году. Содержит 57 новых команд по параллельной обработке целочисленных данных, введен тип данных 64 бита. Для повышения производительности кэш команд и кэш данных были увеличены до 16 Кб каждый. Процессоры производились с тактовыми частотами 166, 200 и 233 МГц. Все процессоры Intel Pentium MMX использовали дополнительную линию питания 2,8В и устанавливались в разъем Socket-7.
Полезное
Предпосылки
Фактически вся история развития компьютеров представляет собой непрерывную гонку между быстродействием центрального процессора и прочих систем — памяти и внешних устройств. Особенно это заметно в системах мультимедиа, где идет обработка звука и изображения, цифровое представление которых занимает большие объемы памяти. Для эффективной обработки звука и видео при относительно низкой пропускной способности системной магистрали (шины) все большее количество функций переносится в аппаратуру — модемы, видео- и звуковые адаптеры. Это вызывает их заметное удорожание в сравнении с общей стоимостью компьютера, что особенно неприятно в обстановке быстрого морального старения всей компьютерной аппаратуры.
Особенно данная проблема стала актуальна в начале 1990-х годов, когда ПК стал доступен широким массам пользователей и все активнее стал превращаться в средство развлечений. Первым процессором, ощутившим нехватку ресурсов для мультимедийных приложений по тому времени стал Pentium.
На самом деле, неспособность ПК с процессором Pentium эффективно обрабатывать в реальном времени звук и видео без специальных карт происходит уже не столько от общего быстродействия процессора или шины, которые в большинстве случаев вполне достаточны, а от характера его набора команд обработки данных, известного под названием CISC. Этот набор, состоящий из относительно сложных арифметико-логических команд, ориентирован на типовые задачи обработки данных, без специальной «заточки» под особые приложения. Эта выгодная для большинства приложений архитектура оказывается совершенно неэффективной при скоростной и специфической обработке больших массивов данных, поскольку сложная система команд используется на считанные проценты, а накладные расходы составляют десятки и сотни процентов.
Технология MMX представляет собой компромиссное решение, объединяющее пути, используемые в компьютерах SPARC и Silicon Graphics (технология RISC — Reduced Instruction Set Computer, компьютер с упрощенным набором команд), а также в компьютерах с параллельной архитектурой (технология SIMD: Single Instruction, Multiple Data — одна команда, много данных): классический процессор Pentium (CISC) с добавлением ряда простых (RISC) команд параллельной обработки данных (SIMD).
Литература
- Зубков С. В. Assembler для DOS, Windows, UNIX. 3-е изд., стер. — М. : ДМК Пресс; СПб. : Питер, 2004. — 608 с.
- Роберт Шимонски Освой самостоятельно Unix. 10 минут на урок = Sams Teach Yourself Unix in 10 Minutes. — М .: «Вильямс», 2006. — С. 272. — ISBN 0-672-32764-3
Ссылки
Wikimedia Foundation . 2010 .
Особенности реализации MMX
Для обработки данных и хранения промежуточных результатов в Pentium MMX используются восемь 64-разрядных регистров MM0..MM7, которые физически совмещены со стеком регистров математического сопроцессора. При выполнении любой из MMX-команд происходит установка «режима MMX» с отметкой этого в слове состояния сопроцессора (FPU Tag Word). С этого момента стек регистров сопроцессора рассматривается как набор MMX-регистров; завершает работу в режиме MMX команда EMMS (End MultiMedia State). С одной стороны, такая реализация позволила обеспечить нормальную работу приложений, использующих MMX, в многозадачных системах, не поддерживающих эту технологию, поскольку все подобные системы создают собственную копию содержимого стека сопроцессора и слова его состояния для каждого процесса. С другой стороны, переход между режимами занимает значительное время, и совмещение, например, в одном цикле команд сопроцессора с командами 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), удобную для реализации «обратного выбора» по битовой маске.
Команды сравнения работают несколько необычно по сравнению с общепринятой логикой: вместо установки признаков для последующих команд перехода они генерируют единичные битовые маски для тех операндов, которые удовлетворяют условию, и нулевые — для остальных операндов. Последующие логические поразрядные операции могут выделить, погасить или как-то иначе обработать отмеченные таким образом операнды, которые в этом случае могут представлять собой точки изображения или отсчеты звукового сигнала.
Содержание
См. также
Читайте также:
- Где производят процессоры ryzen
- Как перенести фото с айклауда на гугл диск
- Ps3 издает странные звуки при чтении дисков
- Fallout 4 какая видеокарта нужна
- 1a541w блок питания как проверить