3DNow! является расширением набора инструкций x86, разработанным Advanced Micro Devices (AMD). Он добавляет инструкции с одной инструкцией и несколькими данными (SIMD) к базовому набору инструкций x86, позволяя выполнять векторную обработку , что повышает производительность многих приложений с интенсивной графикой. Первым микропроцессором, реализовавшим 3DNow, был AMD K6-2 , представленный в 1998 году. Когда приложение было подходящим, это увеличивало скорость примерно в 2–4 раза. [1]
Тем не менее, набор команд не получила большую популярность, и AMD объявила августа 2010 года , что поддержка 3DNow будет сбрасываться в будущем AMD процессоров, за исключением двух команд (в PREFETCH
и PREFETCHW
инструкции). [2] Эти две инструкции также доступны в процессорах Intel Bay-Trail. [3]
История [ править ]
3DNow была разработана в то время, когда 3D-графика становилась популярной в мультимедийных приложениях и играх на ПК. Отображение трехмерной графики в реальном времени в значительной степени зависело от блока вычислений с плавающей запятой (FPU) центрального процессора, выполняющего вычисления с плавающей запятой , и в этой задаче процессор AMD K6 легко уступал своему конкуренту, Intel Pentium II.
В качестве усовершенствования набора команд MMX набор команд 3DNow расширил регистры SIMD MMX для поддержки общих арифметических операций (сложение / вычитание / умножение) над данными с плавающей запятой одинарной точности (32-битные). Программное обеспечение, написанное для использования AMDNow 3D вместо более медленного FPU x87, могло работать до 4 раз быстрее, в зависимости от сочетания инструкций.
Версии [ править ]
3DNow [ редактировать ]
Первая реализация технологии 3DNow содержит 21 новую инструкцию, поддерживающую операции SIMD с плавающей запятой. Формат данных 3DNow - упакованный, одинарной точности с плавающей запятой. Набор инструкций 3DNow также включает операции для целочисленных операций SIMD, предварительную выборку данных и более быстрое переключение MMX с плавающей запятой. Позже Intel добавит аналогичные (но несовместимые) инструкции для Pentium III , известные как SSE (Streaming SIMD Extensions).
Инструкции 3DNow с плавающей запятой следующие:
PI2FD
- Упаковано 32-битное целое число в преобразование с плавающей запятойPF2ID
- Упакованное преобразование чисел с плавающей запятой в 32-битное целое числоPFCMPGE
- Сравнение упакованных чисел с плавающей запятой, больше или равноPFCMPGT
- Сравнение упакованных чисел с плавающей запятой, большеPFCMPEQ
- Сравнение упакованных чисел с плавающей запятой, равноPFACC
- Накопление с плавающей запятойPFADD
- Упакованное добавление с плавающей запятойPFSUB
- Упакованное вычитание с плавающей запятойPFSUBR
- Упакованное обратное вычитание с плавающей запятойPFMIN
- Упакованный минимум с плавающей запятойPFMAX
- Упакованный максимум с плавающей запятойPFMUL
- Упакованное умножение с плавающей запятойPFRCP
- Упакованное обратное приближение с плавающей запятойPFRSQRT
- Аппроксимация обратного квадратного корня с плавающей запятойPFRCPIT1
- Упакованная обратная величина с плавающей запятой, первый шаг итерацииPFRSQIT1
- Упакованный обратный квадратный корень с плавающей запятой, первый шаг итерацииPFRCPIT2
- Упакованный обратный / обратный квадратный корень с плавающей запятой, второй шаг итерации
Целочисленные инструкции 3DNow следующие:
PAVGUSB
- Упакованное 8-битное целочисленное усреднение без знакаPMULHRW
- Упакованное 16-битное целочисленное умножение с округлением
Инструкции по повышению производительности 3DNow следующие:
FEMMS
- Более быстрый вход / выход из состояния MMX или с плавающей запятойPREFETCH/PREFETCHW
- Предварительно загрузите как минимум 32-байтовую строку в кэш данных L1 (это нерекомендуемая инструкция)
Расширения 3DNow [ править ]
Существует мало или совсем нет свидетельств того, что второй версии 3DNow когда-либо официально давалось собственное торговое название. Это привело к некоторой путанице в документации, относящейся к этому новому набору команд. Наиболее распространенные термины - Extended 3DNow , Enhanced 3DNow и 3DNow + . Фразу «Enhanced 3DNow» можно найти в нескольких местах на веб-сайте AMD, но использование заглавных букв «Enhanced» является либо чисто грамматическим, либо используется для выделения процессоров, которые могут иметь или не иметь эти расширения (наиболее заметные из которых ссылается на страницу тестов для K6-III-P, у которой нет этих расширений). [4] [5]
Это расширение набора команд 3DNow было введено в процессоры Athlon первого поколения . Athlon добавил 5 новых инструкций 3DNow и 19 новых инструкций MMX. Позже K6-2 + и K6-III + (оба нацелены на рынок мобильной связи) включали 5 новых инструкций 3DNow, исключая 19 новых инструкций MMX. Новые инструкции 3DNow были добавлены для усиления DSP . Новые инструкции MMX были добавлены для ускорения потоковой передачи мультимедиа .
19 новых инструкций MMX являются подмножеством набора инструкций Intel SSE1. В технических руководствах AMD эти инструкции отделяются от расширений 3DNow. [4] В литературе по продуктам AMD, однако, это разделение менее очевидно, когда преимущества всех 24 новых инструкций приписываются усовершенствованной технологии 3DNow. [6] Это привело к тому, что программисты придумали собственное название для 19 новых инструкций MMX. Наиболее распространенным является Integer SSE ( ISSE ). [7] SSEMMX и MMX2 также можно найти в документации по видеофильтрам из сектора общественного достояния. ISSE может также относиться к Internet SSE, раннему названию SSE.
Инструкции DSP расширения 3DNow следующие:
PF2IW
- Пакетное преобразование чисел с плавающей запятой в целые с расширением знакаPI2FW
- Упакованное целочисленное слово в преобразование с плавающей запятойPFNACC
- Упакованный отрицательный накопитель с плавающей запятойPFPNACC
- Упакованные смешанные положительно-отрицательные числа с плавающей запятойPSWAPD
- Упакованное двойное слово подкачки
Инструкции расширения MMX (Integer SSE) следующие:
MASKMOVQ
- Хранение потокового (обхода кеша) с использованием байтовой маскиMOVNTQ
- Потоковое (обход кеша) хранилищеPAVGB
- Упакованное среднее значение беззнакового байтаPAVGW
- Упакованное среднее значение беззнакового словаPMAXSW
- Максимальное количество упакованных слов со знакомPMAXUB
- Максимальный упакованный байт без знакаPMINSW
- Минимум упакованного слова со знакомPMINUB
- Минимальный упакованный байт без знакаPMULHUW
- Упакованное умножение старшего беззнакового словаPSADBW
- Упакованная сумма абсолютных разностей байтовPSHUFW
- Упакованное слово в случайном порядкеPEXTRW
- Извлечь слово в целочисленный регистрPINSRW
- Вставить слово из целочисленного регистраPMOVMSKB
- Переместить байтовую маску в целочисленный регистрPREFETCHNTA
- Предварительная выборка с использованием ссылки NTAPREFETCHT0
- Предварительная выборка с использованием ссылки T0PREFETCHT1
- Предварительная выборка с использованием ссылки T1PREFETCHT2
- Предварительная выборка с использованием ссылки T2SFENCE
- Забор магазина
3DNow Professional [ править ]
3DNow Professional - это торговое название, используемое для обозначения процессоров, сочетающих технологию 3DNow с полным набором инструкций SSE (например, SSE1, SSE2 или SSE3). [8] Athlon XP был первый процессор нести торговое название 3DNow Professional, и был первым продуктом в семействе Athlon , чтобы поддерживать полный набор инструкций SSE1 (на сумму: 21 оригинальных инструкций 3DNow, пять 3DNow инструкции расширение DSP ; 19 инструкций расширения MMX; и 52 дополнительных инструкции SSE для полной совместимости с SSE1). [9]
3DNow и Geode GX / LX [ править ]
Geode GX и Geode LX добавлены две новые инструкции 3DNow , которые в настоящее время отсутствуют во всех других процессоров.
"Профессиональные" инструкции 3DNow, уникальные для Geode GX / LX, следующие:
PFRSQRTV
- Взаимное приближение квадратного корня для пары 32-битных чисел с плавающей запятойPFRCPV
- Взаимное приближение для пары 32-битных чисел с плавающей запятой
Преимущества и недостатки [ править ]
Одним из преимуществ 3DNow является то, что можно складывать или умножать два числа, которые хранятся в одном регистре . При использовании SSE каждое число можно комбинировать только с числом в той же позиции в другом регистре. Эта возможность, известная в терминологии Intel как горизонтальная , была основным дополнением к набору инструкций SSE3 .
Недостатком 3DNow является то, что инструкции 3DNow и MMX используют один и тот же регистровый файл, тогда как SSE добавляет 8 новых независимых регистров ( XMM0
- XMM7
).
Поскольку регистры MMX / 3DNow совместно используются стандартным FPU x87 , инструкции 3DNow и инструкции x87 не могут выполняться одновременно. Однако, поскольку он связан с x87 FPU, состояния регистров 3DNow и MMX могут быть сохранены и восстановлены с помощью традиционных x87 F(N)SAVE
и F(N)RSTOR
инструкций. Такое расположение позволило операционным системам поддерживать 3DNow без явных изменений, тогда как регистры SSE требовали явной поддержки операционной системы для правильного сохранения и восстановления новых регистров XMM (с помощью добавленных инструкций FXSAVE
и FXRSTOR
).
Инструкции FX * являются обновлением более старых инструкций сохранения и восстановления x87, поскольку они могут сохранять не только состояния регистров SSE, но и состояния регистров x87 (следовательно, это означает, что он также может сохранять регистры MMX и 3DNow).
На ядрах AMD Athlon XP и K8 (например, Athlon 64 ) программисты на ассемблере отметили, что можно комбинировать инструкции 3DNow и SSE для уменьшения давления регистров , но на практике сложно повысить производительность из-за того, что инструкции выполняются на общих функциональные блоки. [10]
Процессоры, поддерживающие 3DNow [ править ]
- Все процессоры AMD после K6-2 на базе архитектур семейств K6, Athlon, Athlon 64 и Phenom. Не поддерживается в процессорах архитектуры Bulldozer, Bobcat и Zen и их производных.
- Последний процессор AMD APU, поддерживающий 3DNow, - это A8-3870K.
- National Semiconductor Geode , позже AMD Geode.
- Ядра VIA C3 (также известные как Cyrix III) "Samuel", "Samuel 2", "Ezra" и "Eden ESP".
- IDT Winchip 2
Ссылки [ править ]
- ^ «Эффективное использование 3DNow в Linux» . Linux Journal. 1 декабря 1999 . Проверено 3 октября 2010 .
- ^ «Инструкции 3DNow устарели | AMD Developer Central» . Blogs.amd.com. 2010-08-18. Архивировано из оригинала на 2010-10-24 . Проверено 3 октября 2010 .
- ^ "IntelE38xx - MinnowBoard Wiki" . Архивировано из оригинального 11 февраля 2017 года . Проверено 13 февраля 2017 года .
- ^ a b «Расширения AMD для руководства по набору инструкций 3DNow и MMX» (PDF) . Advanced Micro Devices, Inc. марта 2000 . Проверено 7 июня 2008 .
- ^ "Мобильный ноутбук на базе процессора AMD-K6-III-P: Ziff-Davis CPUmark 99" . Проверено 7 июня 2008 .
Неправильное название на странице: Мобильные процессоры AMD-K6-III + и AMD-K6-2 + с Enchanced [
sic
] 3DNow!
Технологии
- ^ «Краткое описание процессора AMD Athlon» . Advanced Micro Devices, Inc. Retrieved 2008-06-08 .
- ^ "ISSE" . AviSynth . Проверено 19 июля 2017 .
- ^ «Объясняя новую профессиональную технологию 3DNow» . Advanced Micro Devices, Inc. архивации с оригинала на 2009-01-21 . Проверено 8 июня 2008 .
- ^ «Архитектурные особенности AMD Athlon XP» . Advanced Micro Devices, Inc. Retrieved 2008-06-08 .
- ^ "3DNow + против SSE на Athlon XP - comp.sys.ibm.pc.hardware.chips | Группы Google" . Проверено 3 октября 2010 .
Дальнейшее чтение [ править ]
- Кейс, Брайан (1 июня 1998 г.). «3DNow повышает производительность 3D-графики других производителей». Отчет микропроцессора .
- Оберман, С .; Favor, G .; Вебер, Ф. (март 1999 г.). «Технология AMD 3DNow: архитектура и реализации» . IEEE Micro .
Внешние ссылки [ править ]
- 3DNow Technology Partners , заархивировано из оригинала (удалено с веб-сайта AMD в начале 2001 г.)
- Руководство по переносу инструкции AMD 3DNow (PDF) , заархивировано из оригинала (удалено с веб-сайта AMD в 2014 г.)
- Руководство по технологии 3DNow
- Расширения AMD для руководства по набору инструкций 3DNow и MMX
- Справочник процессоров AMD Geode LX
- Объяснение новой технологии 3DNow Professional (в архиве)