3DNow!

3DNow! — расширение MMX, предназначенное для AMD-процессоров. Введено в использование, начиная с AMD K6 3D. Созданием данного расширения занимались инженеры компании AMD. Цель разработки 3DNow! -  получение технического превосходства над процессорами Intel по части обработки мультимедийных данных.

Расширение 3DNow! добавило 21 новую команду в работу процессора. Также, данной технологией предусмотрена возможность оперировать 32-битными вещественными типами в стандартных MMX-регистрах. Кроме того, были введены новые инструкции, оптимизирующие переключение в режим MMX/3DNow!, а также контролирующие взаимодействие с кэшем процессора. 

Так, технология 3DNow! существенно дополнила возможности технологии MMX, при это минуя необходимость введения новых режимов работы процессора и регистров. 

Процессора AMD, произведенные после августа 2010 года, обладают двух-функциональной поддержкой данной технологии.

Проверка поддержки

Перед тем как начать пользоваться расширением 3DNow!, необходимо убедиться в возможности поддержки данной технологии установленным центральным процессором. Для этого применяется инструкция CPUID. 

Так выглядит общий порядок действий при проверке:

  1. Необходимо удостовериться, что процессор поддерживает инструкцию CPUID. Если процессор ее не поддерживает, то он не поддерживает и 3DNow!;
  2. Затем выполнить инструкцию cpuid со значением EAX = 0;
  3. После этого выполнить CPUID со значением EAX = 80000000h. Если после этого значение в EAX будет меньше 1, то 3DNow! не поддерживается;
  4. Наконец, выполнить CPUID с EAX = 80000001h. Если после выполнения бит 31 регистра EDX будет установлен в 1, то 3DNow! поддерживается. В противном случае — нет.

Инструкции

  • PAVGUSB — вычисление среднего 8-битовых целых значений;
  • PI2FD — перевод 32-битных целых в вещественные числа;
  • PF2ID — перевод вещественных в 32-битные целые числа;
  • PFCMPGE — сравнение вещественных чисел (> или =);
  • PFCMPGT — сравнение вещественных чисел (>);
  • PFCMPEQ — сравнение вещественных чисел (=);
  • PFACC — накопление суммы вещественных чисел;
  • PFADD — сложение вещественных чисел;
  • PFSUB — вычитание вещественных чисел;
  • PFSUBR — обратное вычитание вещественных чисел;
  • PFMIN — нахождение минимума вещественных чисел;
  • PFMAX — нахождение максимума вещественных чисел;
  • PFMUL — умножение вещественных чисел;
  • PFRCP — установление приближенного значения обратного (1/x) вещественных чисел;
  • PFRSQRT — установление приближенного значения обратного от квадратного корня (1/sqrt(x)) вещественных чисел;
  • PFRCPIT1 — первый шаг вычисления значения обратного (1/x) вещественных чисел;
  • PFRSQIT1 — первый шаг вычисления значения обратного от квадратного корня (1/sqrt(x)) вещественных чисел;
  • PFRCPIT2 — второй шаr вычисления значения обратного или обратного от квадратного корня вещественных чисел;
  • PMULHRW — умножение 16-битных целых чисел с округлением
  • FEMMS — быстрое переключение состояния FPU/MMX;
  • PREFETCH/PREFETCHW — предвыборка строки кэша процессора из памяти.

3DNow! в процессорах

  • Поддержка 3DNow! имеется в процессорах, начиная с AMD K6-2 и до Phenom X6 включительно. Из современных процессоров AMD, 3DNow! не поддерживают процессоры с архитектурой Bulldozer и Fusion;
  • National Semiconductor Geode GX2, AMD Geode GX/LX/NX;
  • VIA C3/CoreFusion/Eden;
  • IDT WinChip 2.
#