2.1.2 Регистры дополнительных функциональных модулей
К дополнительным функциональным модулям можно отнести:
Модуль обработки вещественных чисел FPU;
Мультимедийные расширения: MMX, MMXEXT, 3DNow!, 3DNowExt;
SIMD‑расширения: SSE, SSE2, SSE3, SSSE3, SSE4, SSE5;
Векторное расширение AVX;
Крипто расширение AES.
Модуль FPU предназначен для обработки вещественных чисел и подробно рассматривается в главе 8.
Расширение MMX (MultiMedia eXtensions – мультимедийные расширения) – коммерческое название дополнительного набора инструкций, выполняющих характерные для процессов кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX.
Расширение MMX включает в себя восемь 64-битных регистров общего пользования MM0–MM7. Для совместимости со способами сохранения состояния процессора в существующих ОС Intel была вынуждена объединить в программной модели процессора восемь регистров MMX с мантиссами восьми регистров FPU. Аппаратно это могут быть разные устройства, но с точки зрения программиста – это одни и те же регистры. Таким образом, нельзя одновременно пользоваться командами FPU и MMX.
Команды технологии MMX работают с 64-разрядными целочисленными данными, а также с данными, упакованными в группы (векторы) общей длиной 64 бита. Такие данные могут находиться в памяти или в восьми MMX‑регистрах.
Команды технологии MMX работают со следующими типами данных:
упакованные байты packed byte (восемь байтов в одном 64-разрядном регистре);
упакованные слова packed word (четыре 16-разрядных слова в 64-разрядном регистре);
упакованные двойные слова packed doubleword (два 32-разрядных слова в 64-разрядном регистре);
64-разрядные слова (quadword).
MMX-команды имеют следующий синтаксис: instruction [dest, src]. В систему команд введено 57 дополнительных инструкций для одновременной обработки нескольких единиц данных. Большинство команд имеют суффикс, который определяет тип данных и используемую арифметику:
US (unsigned saturation) – арифметика с насыщением, данные без знака;
S или SS (signed saturation) – арифметика с насыщением, данные со знаком. Если в суффиксе нет ни S, ни SS, используется циклическая арифметика (wrap-around);
B, W, D, Q указывают тип данных. Если в суффиксе есть две из этих букв, первая соответствует входному операнду, а вторая – выходному.
Новые инструкции включают следующие группы:
Команды пересылки данных (Data Transfer Instructions) между регистрами MMX и целочисленными регистрами и памятью;
Команды преобразования типов;
Арифметические операции (Arithmetic Instructions), включающие сложение и вычитание в разных режимах, умножение и комбинацию умножения и сложения;
Команды сравнения (Comparison Instructions) элементов данных на равенство или по величине;
Логические операции (Logical Instructions) – И, И-НЕ, ИЛИ и Исключающие ИЛИ, выполняемые над 64 битными операндами;
Сдвиговые операции (Shift Instructions) логические и арифметические;
Команды управления состоянием (Empty MMX State) очистка MMX - установка признаков пустых регистров в слове тегов.
Инструкции 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. Улучшения:
Размер векторных регистров SIMDувеличивается с 128 (XMM) до 256 бит (регистры YMM0 – YMM15). Существующие 128-битные инструкции будут использовать младшую половину новых YMM регистров. В будущем возможно расширение до 512 или 1024 бит.
Неразрушающие операции. Набор инструкций AVX позволяет использовать любую двухоперандную инструкцию XMM в трехоперандном виде без модификации двух регистров-источников, с отдельным регистром для результата. Например, вместо a = a + b можно использовать c = a + b, при этом регистр a остается неизмененным. AVX не поддерживает неразрушающие формы операций над обычными регистрами общего назначения, такими как EAX, но такая поддержка, возможно, будет добавлена в последующих расширениях.
Требования выравнивания данных для операндов SIMDв памяти ослаблены.
Новая система кодирования машинных кодов 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г..
- Предисловие
- Глава 1. Общие сведения о микропроцессорах
- 1.1 Классификация микропроцессоров
- 1.2 Характеристики микропроцессоров
- 1.2.1 Тактовая частота
- 1.2.2 Архитектура процессора
- 1.2.3 Технологический процесс производства
- 1.2.4 Частота системной шины
- 1.2.5 Размер кэша
- 1.3 Типы архитектур микропроцессоров
- 1.4 Структурная схема микропроцессоров
- 1.4.1 Микропроцессор Фон-Неймана
- 1.4.2 Конвейер
- 1.4.3 Зависимость между частотой и количеством ступеней конвейера
- 1.5 Представление информации в эвм
- 1.5.1 Двоичное представление целых чисел
- 1.5.2 Представление символьной информации
- Глава 2. Архитектура микропроцессоров ia-32
- 2.1 Состав и функции регистров
- 2.1.1 Основные регистры
- 2.1.2 Регистры дополнительных функциональных модулей
- 2.2 Типы адресации
- 2.3 Система команд
- 2.3.1 Классификация команд
- 2.3.2 Формат команды
- 2.3.3 Однобайтовые команды
- 2.3.4 Непосредственно заданные операнды
- 2.3.5 Команды с регистровыми операндами
- 2.3.7 Команды с операндами, расположенными в памяти
- Глава 3. Организация многоуровневой памяти
- 3.1 Принцип построения многоуровневой памяти
- 3.2 Организация кэш-памяти
- 3.3 Протоколы когерентности памяти микропроцессоров
- 3.4 Страничная организация памяти
- Глава 4. Режимы работы процессоров ia-32
- 4.1 Обзор режимов работы
- 4.2 Реальный режим адресации
- 4.3 Защищённый режим
- 4.3.1 Дескрипторные таблицы
- 4.3.2 Дескрипторные регистры
- 4.3.3 Дескриптор
- 4.3.4 Односегментная модель памяти
- 4.3.5 Многосегментная модель памяти
- Глава 5. Страничная организация памяти в процессорах ia‑32
- 5.1 Каталог страниц
- 5.2 Таблица страниц
- 5.3 Страничная переадресация
- 5.4 Диспетчер виртуальных машин системы Microsoft Windows
- Глава 6. Архитектура процессоров с параллелизмом уровня команд
- 6.1 Подходы к использованию ресурса транзисторов в микропроцессорах
- 6.2 Суперскалярные процессоры и процессоры с длинным командным словом
- 6.3 Зависимости между командами, препятствующие их параллельному исполнению
- 6.4 Предварительная выборка команд и предсказание переходов
- 6.5 Условное выполнение команд в vliw-процессорах
- 6.6 Декодирование команд, переименование ресурсов и диспетчеризация
- 6.7 Исполнение команд
- 6.8 Завершение выполнения команды
- 6.9 Направления развития архитектуры процессоров с параллелизмом уровня команд
- Глава 7. Мультитредовые микропроцессоры
- 7.1 Основы мультитредовой архитектуры
- 7.2 Выявление тредов
- 7.3 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков управления программы
- 7.3.1 Мультитредовая модель выполнения программы
- 7.3.2 Мультитредовые программы
- 7.3.3 Аппаратные средства мультитредовой архитектуры
- 7.3.4 Преимущества мультитредовой архитектуры
- 7.4 Мультитредовые процессоры с тредами, выявляемыми путем анализа потоков данных программы
- 7.5 Специфика мультитредовых моделей распараллеливания
- Глава 8. Модуль обработки вещественных чисел
- 8.1 Представление чисел с плавающей запятой
- 8.2 Состав модуля fpu
- Глава 9. Основы 64-разрядной архитектуры
- 9.1 Состав и назначение регистров микропроцессора ia-64
- 9.2 Особенности архитектуры epic
- 9.3 Архитектура x86-64
- 9.4 Структура одноядерного процессора
- 9.5 Многоядерные процессоры
- 9.6 Зачем нужны “лишние” разряды?
- Глава 10. Современные 64-разрядные микропроцессоры корпораций Intel и amd
- 10.1 Архитектура Intel Core 2
- 10.1.1 Intel Wide Dynamic Execution
- 10.1.2 Intel Intelligent Power Capability
- 10.1.3 Intel Advanced Smart Cache
- 10.1.4 Intel Smart Memory Access
- 10.1.5 Intel Advanced Digital Media Boost
- 10.1.6 Логическая схема процессора
- 10.2 Архитектура Intel Core i7
- 10.2.1 Технология Hyper-Threading в архитектуре Nehalem
- 10.2.2 Иерархия кэш-памяти в архитектуре Nehalem
- 10.3 Хронология развития семейств микропроцессоров с архитектурой Nehalem
- 10.4 Архитектура amd Athlon 64
- 10.4.1 Ядро процессора
- 10.4.3 Контроллер памяти
- 10.4.4 Контроллер HyperTransport
- 10.5 Архитектура amd k10
- 10.4.1 Технология amd Memory Optimizer Technology
- 10.5.2 Ядро процессора
- 10.5.3 Предвыборка данных и инструкций
- 10.5.4 Выборка из кэша
- 10.5.5 Предсказание переходов и ветвлений
- 10.5.6 Процесс декодирования
- 10.5.7 Диспетчеризация и переупорядочение микроопераций
- 10.5.8 Выполнение микроопераций
- 10.5.9 Технологии энергосбережения
- 10.5.10 Шина HyperTransport 3.0
- 10.5.11 Семейство процессоров Barcelona
- 10.5.12 Семейство процессоров Phenom
- Глава 11. Технологии, поддерживаемые современными микропроцессорами
- 11.1 Технологии тепловой защиты
- 11.1.1 Технология Thermal Monitor
- 11.1.2 Технология Thermal Monitor 2
- 11.1.3 Режим аварийного отключения
- 11.2 Технологии энергосбережения
- 11.2.1 Технология Enhanced Intel SpeedStep
- 11.2.2 Технология Cool'n'Quiet
- 11.3 Технология расширенной памяти
- 11.4 Технология антивирусной защиты
- 11.5 Технология виртуализации
- 11.6 Реализация технологий в современных микроархитектурах
- 11.6.2 Em64t – NetBurst
- 11.6.3 Intel Core
- 11.6.4 Intel Atom
- 11.6.5 Nehalem
- 11.6.6 Xeon
- Глава 12. Графические микропроцессоры
- 12.1 Основные термины и определения
- 12.2 Технологии построения трёхмерного изображения
- 12.2.1 Технологии повышения реалистичности трехмерного изображения
- 12.3 Шейдерный процессор
- 12.4 Особенности современных графических процессоров
- Глава 13. Однокристальные микроконтроллеры
- 13.1 Общая характеристика микроконтроллеров
- 13.2 Микроконтроллеры семейства avr
- Почему именно avr?
- 13.3 Общие сведения об омк avr
- 13.4 Характеристики avr-микроконтроллеров
- Глава 14. Технология производства микропроцессоров
- 14.1 Особенности производства процессоров
- 14.2 Новые технологические решения
- 14.3 Технология производства сверхбольших интегральных схем
- I. Выращивание кристалла кремния
- II. Создание проводящих областей
- III. Тестирование
- IV. Изготовление корпуса
- V. Доставка
- 14.4 Перспективы производства сбис
- Англо-русский словарь терминов и аббревиатур
- Библиографический список
- Интернет-ссылки
- 350072. Краснодар, ул. Московская, 2, кор. А.