-
Форматы команд и способы адресации в интеловских процессорах
В качестве примера рассмотрим набор команд и способы адреса-
ции, используемые в процессорах интеловской архитектуры. Для этих
процессоров в табл. 2.1 приведены данные о развитии их системы ко-
манд.
Таблица 2.1Развитие
системы
команд
х86
процессоров
Год появления набора команд
|
Тип процессора, где набор был реализован впервые
| Общее число команд
|
Смысл расширения
|
1979
| i8086
| 170
| Исходный набор команд х86
|
1985
| i386
| 220
| 50 новых команд для перехода к архитектуре IA-32
|
1997
| Pentium/MMX
| 277
| 57 ММХ-команд
|
1999
| Pentium III
| 347
| 70 команд SSE-расширения, AMD 3DNow!
|
2000
| Pentium 4 Northwood
| 491
| 144 команды SSE2
|
2004
| Pentium 4 Prescott
| 504
| 13 команд SSE3, AMD x86-64
|
514
| 10 команд Intel VT-x, AMD-V, Intel EM64T
|
2006
| Core2 Duo (65 нм)
| 546
| 32 команды SSSE3
|
2007
| Penryn (45 нм)
| 593
| 47 команд SSE4.1
|
2009
| Core i7 Nehalem (45нм)
| 600
| 7 команд SSE4.2
|
2010
| Core i5 Westmere (32 нм)
| 606
| 6 команд AES-NI
|
2011
| Core i7, i5 Sandy Bridge (32 нм)
|
| AVX
|
2013
| Core i7, i5 Haswell (22 нм)
|
| AVX2, FMA3, BMI
|
2015
| Core i7, i5 Skylake (14 нм)
|
| MIC, SGX
|
Изначально в базовом наборе команд процессора i8086 были предусмотрены команды обработки чисел с плавающей запятой, кото-
рые до i386-процессора включительно выполнялись на дополнительном сопроцессоре. Начиная с процессора i486, блок обработки чисел с пла- вающей запятой (FPU) стал составной частью микропроцессора.
Переход на 32-разрядную интеловскую архитектуру (IA-32) был осуществлен в процессоре i386 с добавлением 50 новых команд. Все по- следующие модели процессоров (до Pentium 4 включительно) имеют IA-32 архитектуру, несмотря на то, что расширение системы команд происходило неоднократно.
Технология виртуализации Intel VT-x, разработанная для IA-32 и поддерживаемая современными процессорами, использует 10 новых инструкций VM.
В 2002 г. впервые со времен i386 архитектура х86 подвергается принципиальным изменениям. Разработчиками фирмы AMD была со- здана 64-разрядная архитектура, получившая название «х86-64». Эта архитектура базируется на существующей архитектуре IA-32. В 2004 г. Intel вводит в серверные процессоры Xeon 64-разрядную технологию EM64Т (Extended Memory), с программной точки зрения практически идентичную той, что предложила AMD. С 2006 г. эта технология под названием «Архитектура Intel 64» начала использоваться в клиентских ПК с процессором Core 2 Duo.
Начиная с 1997 г. и по сей день система команд x86 расширяется за счет SIMD инструкций: MMX, SSE, SSE2, SSE3, SSSE3, SSE4, AVX, AVX2, MIC.
В 2010 г. в процессорах Intel семейства Westmere (32 нм) стали ис- пользоваться 6 новых инструкций SIMD, которые Intel назвал AES-NI.
ММХ-технология
В
основе
технологии
ММХ
лежит
расширение
набора
команд
(57 новых команд) для эффективного выполнения типичных мультиме-
дийных алгоритмов, к числу которых относятся и многие алгоритмы,
характерные для цифровой обработки сигналов. Это первое существен-
ное
изменение
в
системе
команд
микропроцессоров
семейства
х86,
начиная с выхода в свет микропроцессора i386. В технологии ММХ ис-
пользована модель обработки данных SIMD, предусматривающая одно-
временное
выполнение
операции
над
несколькими
целочисленными
операндами
разрядностью
1, 2
или
4
байта.
ММХ-команды
используют
восемь
64-разрядных
ММХ-регистров
с
плавающей
запятой
и
реализуются
в
том
же
режиме
процессора,
что
и команды с плавающей запятой. ММХ-команды делятся на следующие
группы:
арифметические,
логические
и
сдвига,
сравнения,
передачи
данных,
упаковки
и
распаковки,
отмены
режима
ММХ.
Все
программное
обеспечение, созданное для ранее выпущенных процессоров, без всяких
изменений
может
выполняться
на
процессорах
с
технологией
ММХ.
Стремясь
устранить
недостатки,
свойственные
ММХ-технологии
(отсутствие ММХ-команд для работы с плавающей запятой, невозмож-
ность
выполнения
операций
с
плавающей
запятой
при
выполнении
ММХ-команд), Intel решила внести необходимые дополнения в архи-
тектуру
процессора
Pentium
III.
SSE-расширение
Новые
70
команд
SSE-расширения
делятся
на
4
категории:
-
SIMD-команды обработки данных в формате с плавающей запятой одинарной точности (SPFP-команды);
-
дополнительные SIMD-команды для обработки целочисленных данных;
-
команды управления кэшированием;
-
команды сохранения и восстановления состояния процессора.
SPFP-команды
используют
8
новых
128-разрядных
регистров
(ХММ-регистры)
и
новый
тип
данных
–
128-разрядное
значение,
содержащее
4
последовательно
расположенных
(«упакованных»)
32-разрядных числа с плавающей запятой одинарной точности. При вы-
полнении инструкций с
ХММ
традиционное оборудование
FPU/MMX
не
используется,
что
позволяет
эффективно
смешивать
инструкции
ММХ
с
инструкциями над
операндами
с плавающей
точкой.
Большинство SPFP-команд имеют два операнда. Данные, содержа-
щиеся в первом операнде, после выполнения команды, как правило, за-
мещаются результатами, а данные, содержащиеся во втором операнде,
остаются
неизменными.
SPFP-команды поддерживают два типа операций над упакованны-
ми данными с плавающей запятой – параллельные и скалярные. Парал-
лельные операции выполняются над четырьмя 32-разрядными элемен-
тами
данных,
упакованными в
каждый
128-разрядный
операнд.
Скалярные
операции
выполняются
над
младшими
(занимающие
разряды 0–31) элементами данных двух операндов. Остальные три эле-
мента
данных
не изменяются.
В расширение SSE включены дополнительные SIMD-команды для
работы с целочисленными данными. Эти новые команды расширяют
возможности
существующего
набора
команд
технологии
ММХ.
Они
выполняют
SIMD-операции
над
несколькими
целочисленными
данны-
ми, упакованными в 64-разрядные группы, загружают и хранят упако-
ванные
данные в
64-разрядных ММХ-регистрах.
Кроме
того,
в
SSE
введены
команды
нового типа,
обеспечивающие:
-
управление кэшированием данных с целью повышения эффек- тивности использования кэш-памяти и сокращения числа обращений к ос- новной памяти;
-
упреждающее кэширование данных с целью организации парал- лельной работы конвейера команд и обмена с памятью.
Первая группа команд выполняет запись данных из ММХ (ХММ) регистра в память, минуя кэш. Вторая – обеспечивает запись данных из памяти в кэш различных уровней.
Кроме ХММ-регистров в микропроцессоре Pentium III появился новый регистр состояния и управления MXCSR. Для работы с этими ре- гистрами требуется поддержка как со стороны процессора, так и со сто- роны операционной системы. Чтобы прикладные программы и ОС мог- ли сохранять и восстанавливать состояния новых компонентов процес- сора, введено несколько команд управления. Первая группа команд управления обеспечивает сохранение в памяти содержимого регистра МХCSR и, наоборот, загружает слово состояния из памяти в регистр MXCSR. Вторая группа – сохраняет в памяти состояние процессора (со- стояние регистров данных FPU, MMX-регистров, ХММ-регистров) и восстанавливает ранее сохраненное состояние процессора.