Технология MMX и 3DNow!


ДРУГИЕ МОИ РЕФЕРАТЫ


Технология MMX

В марте 1996 года Intel сообщила о своей новой технологии MMXT.
MultiMedia eXtension - крупнейшее достижение в области архитектуры Intel за последние 10 лет
с момента появления 32-разрядного i386.

      Основой MMX является архитектура SIMD (Single Instruction Multiple Data). Суть ее состоит
   в том, что данные поступают в процессор в виде 64-битных пакетов, которые обрабатываются
   одной командой. Кроме того, логика процессора пополнилась 57 новыми инструкциями,
   разработанными специально для более эффективной работы с видео, звуковыми и графическими
   данными.(Все новые инструкции имеют коды в заранее зарезервированном диапазоне, поэтому
   переход к новой технологии не влечет за собой существенных затрат на производство, и резкого
   увеличения цен.)
      Для того чтобы процессор смог работать с этими командами, используя расширения ММХ,
   разработчики программного обеспечения должны интегрировать их в приложения.А для того,
   чтобы ММХ-приложения могли работать на всех  компьютерах, они должны содержать две версии
   кода для процессоров - с MMX и без.
     Восемь 64-разрядных регистров MMX физически используют те же регистры, что и операции
   с плавающей точкой.Подобное решение обеспечивает полную совместимость с предшествующей
   архитектурой и, как следствие, полную совместимость с широко распространенными операционными
   системами и прикладным ПО. Однако  такое  совмещение  может снизить эффективность работы в
   случае попеременного использования обычных вычислений с плавающей точкой и работы в режиме
   MMX (на переключение с выполнения MMX-инструкций на операции с плавающей точкой процессору
   требуется 50 тактов).
     Pentium MMX (P55C) имеет и ряд других архитектурных изменений, благодаря которым повысилась
   производительность. К ним относятся удвоенный объем кэша первого уровня(32 Кбайт) и более
   эффективный механизм предсказания условных переходов.
   Больший первичный кэш значит, что процессор имеет под рукой больше данных, уменьшая нужду
   в получении данных из кэша второго уровня, что положительно отражается на всех программах.
   Новые инструкции, применяемые в совокупности с SIMD и восемью расширенными (64-битными)
   регистрами, значительно используют параллелизм, когда восемь байт данных можно обработать
   за один цикл, а не по одному за цикл. Получается специальное преимущество для мультимедиа- и
   графических приложений, таких как аудио и видео де/кодирование, масштабирование образов и
   интерполяция. Вместо перемещения восьми пикселей графических данных процессором по одному
   за раз, эти восемь пикселей могут быть передвинуты как один 64-битный пакет, и обработаны 
   за один цикл. 
   По утверждениям Intel, эти усовершенствования дают 10-20% увеличение скорости для не-MMX
   приложений, и более 60% ускорения для MMX приложений. 
Наибольший эффект от использования ММХ-технологии может быть достигнут в 
алгоритмах со следующими характеристиками:
  *** малый размер данных
      (например,8-битные графические пикселы,16-битные звуковые данные);
  *** короткие,часто повторяющиеся циклы;
  *** частые умножения и накопления;

 

Технология обработки множественных данных в одной инструкции
(Single Instruction, Multiple Data - SIMD)

Сегодняшние мультимедийные и коммуникационные приложения часто используют повторные циклы,
 выполнение которых, при использовании менее 10 процентов программных кодов, отнимает
 до 90 процентов времени. Процесс SIMD (один поток команд и множество потоков данных) дает
 возможность одной инструкции исполнять одну и ту же функцию с различными частями данных,
 аналогично тому, как сержант командует "Кругом" всему взводу, а не каждому солдату
 по отдельности. SIMD позволяет чипу уменьшить количество циклов с интенсивными вычислениями,
 характерных для видео, аудио, графики и анимации.

 

Новый формат представления данных.

ММХ-технология вводит следующие 4 новых 64-разрядных типа данных:
      *** упакованные байты (Packed bytes);
      *** упакованные слова (Packed Words);
      *** упакованные двойные слова (Packed doublewords);
      *** учетверенное слово (Quardword).
   Упакованные байты могут хранить восемь  8-битных пикселов одновременно,  что может быть
 эффективно использовано при работе с видеоизображением. Упакованные слова состоят из четырех
 16-битных слов этот тип данных удобно использовать в коммуникациях и при обработке эвука.
 Упакованные двойные слова состоят  из  двух  32-битных двойных слов.Наконец, самый большой
 вид данных - упакованные четверные слова - подходят для операций,  которые изменяют  порядок
 входных данных (например,точек изображения на экране дисплея).
 Например, графические данные обычно представляются в виде байтов.
MMX-технология дает возможность поместить 8 байт вместе в один 64-разрядный
ММХ-регистр. Когда исполняется ММХ-команда, берутся сразу все 8 байт из
ММХ-регистра, затем производится операция над всеми 8 байтами параллельно и
затем результат опять записывается в ММХ-регистр.

 

Арифметика с насыщением.

  ММХ-технология поддерживает новую арифметику, называемую арифметикой с 
насыщением (Saturation arithmetic). Противопоставим ее арифметике с 
циклическим переносом (Wraparound arithmetic).
  В режиме циклического переноса в случае переполнения результат обрезается
и возвращаются только младшие биты результата.Данный метод вычисления хорошо
известен, он используется при операциях над целочисленными регистрами.
  В режиме насыщения результат операции который выходит за границу размера
данных насыщается до предельно возможного значения для используемого типа
данных.
  Например если результат превышает значение 0x7F (для операций над байтами со знаком) или
значение 0xFF(для операций над байтами без знака),то результатом такой операции будет
соответственно 0x7F или 0xFF.Если результат получается меньше 0х80 (для знаковых байтов),то
результатом данной операции будет соответственно 0х80 или 0х00.

 

Технология 3DNow!

    Технология MMX была разработана преимущественно для того, чтобы улучшить выполнение
мультимедийных приложений, основывающихся на целочисленных операциях, что делает эту
технологию недостаточной для эффективной работы с трехмерной графикой, интенсивно использующей
операции с плавающей точкой. Широкое распространение приложений с 3D-графикой потребовало
и более мощных процессоров для ускорения обработки трехмерных элементов. Технология 3DNow! - 
следующий шаг по сравнению с MMX - ответ на сегодняшние требования к производительности со 
стороны современных приложений, использующих трехмерную графику. Процессор AMD-K6-2 - первый
промышленно выпускаемый процессор, воплощающий возможности технологии 3DNow! 
    Технология 3DNow! представляет собой новейшее дополнение к архитектуре x86-процессоров,
направленное на значительную интенсификацию вычислений с плавающей точкой при обработке
трехмерной (3D) графики и мультимедийных приложений. Преимущества технологии 3DNow! заключаются
в выдающейся производительности при обработке трехмерных графических объектов, более
реалистичном и жизненном их отображение. Кроме того, к преимуществам технологии 3DNow! следует
отнести полноэкранное видео, звук и, конечно, превосходные возможности для работы в Internet.
     3DNow! по сути еще один сопроцессор по типу MMX, но умеющий выполнять 21 новую инструкцию.
Эти новые инструкции призваны, прежде всего, ускорить обработку данных, связанных с трехмерной
графикой. Поэтому в набор инструкций 3DNow! включены команды, работающие с вещественночислен-
ными аргументами одинарной точности. ММХ работает с целыми числами, а при расчете трехмерных
сцен оперировать приходится с вещественными. Как и ММХ, 3DNow! использует те же регистры, что
и сопроцессор, это связано с тем, что операционные системы должны сохранять и сбрасывать все
регистры процессора при переключении задач. 
Теоретически, 3DNow! должен заменить сопроцессор при расчетах трехмерной геометрии и существенно 
ускорить выполнение этих вычислений. Модуль 3DNow! может выполнять до четырех SIMD инструкций
(из своего 21-командного набора) параллельно, что при грамотном использовании может дать
небывалый прирост производительности.Однако, вопрос распараллеливания вычислений должен
решаться программистом, что вызывает определенные трудности при реализации алгоритмов, тем
более, что процесс вычисления геометрии 3D-сцен далеко не линейный. Поэтому, теоретическая
производительность К6-2, значительно превышающая скорость всех современных PII-процессоров,
достигнута быть не может. 
    Таким образом, чтобы от 3DNow! был хоть какой-то эффект, необходимо, чтобы приложение
использовало те самые 21 инструкцию. Причем не как-нибудь, а с учетом конвейерной структуры
этого модуля процессора.

Евгений Игнатьев
Анатолий Курбатов
УлГУ, мех-мат
гр.М-31

Ноябрь,1998

(c) Evgeny Ignatyev