logo search
Методичка

2.1.2 Регистры дополнительных функциональных модулей

К дополнительным функциональным модулям можно отнести:

Модуль FPU предназначен для обработки вещественных чисел и подробно рассматривается в главе 8.

Расширение MMX (MultiMedia eXtensions – мультимедийные расширения) – коммерческое название дополнительного набора инструкций, выполняющих характерные для процессов кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX.

Расширение MMX включает в себя восемь 64-битных регистров общего пользования MM0–MM7. Для совместимости со способами сохранения состояния процессора в существующих ОС Intel была вынуждена объединить в программной модели процессора восемь регистров MMX с мантиссами восьми регистров FPU. Аппаратно это могут быть разные устройства, но с точки зрения программиста – это одни и те же регистры. Таким образом, нельзя одновременно пользоваться командами FPU и MMX.

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

Команды технологии MMX работают со следующими типами данных:

MMX-команды имеют следующий синтаксис: instruction [dest, src]. В систему команд введено 57 дополнительных инструкций для одновременной обработки нескольких единиц данных. Большинство команд имеют суффикс, который определяет тип данных и используемую арифметику:

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

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

MMXEXT – Extended MMX, так же известное как EMMI (Extended Multi-Media Instructions), это расширение набора инструкций MMX, предложенное компанией Cyrix и внедрившей его в свои процессоры 6x86MX. EMMI расширяет набор инструкций MMX двенадцатью новыми командами, полезными при мультимедийной обработке. Это расширение не задействовано по умолчанию, и перед использованием требует включения с помощью BIOS или программно (требуется установить бит EMMX - CCR7 bit 0). EMMI никогда не пользовалось большой поддержкой со стороны производителей программного обеспечения или признанием конкурентов Cyrix (некоторые инструкции Intel SSE имеют такие же коды операций, что и инструкции EMMI, и не являются совместимыми с ними). Это расширение больше не включалось в набор инструкций процессоров, планирующихся к выходу после 6x86MX.

3DNow! – дополнительное расширение MMXдля процессоровAMD, начиная сAMD K6 3D. Причиной создания 3DNow! послужило стремление AMD завоевать превосходство над процессорами производства компании Intelв области обработки мультимедийных данных. Хотя это расширение является разработкой AMD, его также интегрировали в свои процессорыIBM,Cyrix и другие. Технология 3DNow! ввела 21 новую команду процессораи возможность оперировать 32-битными вещественными типами в стандартных MMX-регистрах. Также были добавлены специальные инструкции, оптимизирующие переключение в режим MMX/3DNow! и работу скэшемпроцессора. Таким образом, технология 3DNow! расширяла возможноститехнологииMMX, не требуя введения новых режимов работы процессора и новых регистров.

Потоковое SIMD-расширение – SSE (Streaming SIMD Extensions) – это набор инструкций, разработанный Intel и впервые представленный в процессорах серии Pentium III как ответ на аналогичный набор инструкций 3DNow! от AMD, который был представлен годом раньше. Технология SSE позволяла преодолеть две основные проблемы MMX – при использовании MMX невозможно было одновременно использовать инструкции сопроцессора, так как его регистры использовались для MMX, и работы с вещественными числами. SSE включает в архитектуру процессора восемь 128-битных регистров XMM0-XMM7, каждый из которых трактуется как 4 последовательных значения с плавающей точкой одинарной точности. SSE включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных. Реализация блоков SIMD осуществляется распараллеливанием вычислительного процесса между данными, то есть, когда через один блок проходит поочерёдно множество потоков данных. Преимущество в производительности достигается в том случае, когда необходимо произвести одну и ту же последовательность действий над разными данными.

SSE2 – это SIMDнабор инструкций, разработанный Intel, и впервые представленный в процессорах серииPentium 4. SSE2 использует восемь 128-битных регистров XMM0-XMM7, включённых в архитектуру x86 с вводом расширения SSE, каждый из которых трактуется как два последовательных значения с плавающей точкой двойной точности. SSE2 включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных. Также SSE2 содержит инструкции для потоковой обработки целочисленных данных в тех же 128-битныхXMM‑регистрах, что делает это расширение более предпочтительным для целочисленных вычислений, нежели использование набора инструкций MMX, появившегося гораздо раньше.Преимущество в производительности достигается в том случае, когда необходимо произвести одну и ту же последовательность действий над большим набором однотипных данных.

SSE3 – третья версия SIMD-расширенияIntel, потомокSSE,SSE2иMMX. Состоит из 13 новых инструкций. Впервые представлено 2 февраля2004года в ядреPrescottпроцессораPentium 4.

SSE4 – новый набор команд микроархитектуры Intel Core, впервые реализованный в процессорах серииPenryn(не следует путать сSSE4Aот AMD). Он был анонсирован 27 сентября 2006, однако детальное описание стало доступно только весной 2007. SSE4 состоит из 54 инструкций, 47 из них относят к SSE4.1 (они есть в процессорах Penryn). Полный набор команд (SSE4.1 и SSE4.2, то есть 47 + оставшиеся 7 команд) доступен только в процессорах Intel с микроархитектурой Nehalem, которые были выпущены в середине ноября 2008 года. Ни одна из SSE4 инструкций не работает с 64-битнымиMMX-регистрами (только с 128-битными XMM0-XMM15). Добавлены инструкции, ускоряющие компенсацию движенияввидеокодеках, быстроечтение изпамяти, множество инструкций для упрощения векторизации программ компиляторами. Кроме того, в SSE4.2 добавлены инструкции обработки строк 8/16 битных символов, вычисленияCRC32. Впервые в SSE4 регистрXMM0 стал использоваться как неявный аргумент для некоторых инструкций.

Векторное расширение AVX (Advanced Vector Extensions) – расширение системы команд x86длямикропроцессоровIntelиAMD, предложенное Intel в марте 2008. Улучшения:

Новая система кодирования машинных кодов VEXпредоставляет новый набор префиксов кода, которые расширяют пространство возможных машинных кодов. Добавлены инструкции с количеством операндов более трех. Векторные регистрыSIMDмогут быть больше 128 бит.

AVX применяется для интенсивных вычислений с плавающей точкой в мультимедиа, научных и финансовых задачах. Увеличивает степень параллелизма и пропускную способность в вещественных SIMDвычислениях. Уменьшает давление (нагрузку) на регистры благодаря неразрушающим трехоперандным операциям.

Использование YMM регистров требует поддержки со стороны операционной системы. Следующие системы поддерживают регистры YMM: Linux: с версии ядра 2.6.30; Windows 7 и Windows Server 2008 R2.

Микропроцессоры с расширением AVX: Intel Sandy Bridge, 2010; AMD Bulldozer, 2011.

Крипто расширение системы команд AES (Advanced Encryption Standard) – расширение системы команд x86для микропроцессоров, предложенное компанией Intel в марте 2008. Целью данного расширения является ускорение приложений, использующий шифрование и дешифрование по алгоритму AES. Сходное расширениеPadLock engineсуществует в микропроцессорах отVIA Technologies.

Микропроцессоры с крипто расширением команд AES: Intel Westmere (Nehalem на 32нм техпроцессе), 2009г.; AMDBulldozer, 2011г..