Расширения MIC, SGX
В 2015 г. прошла презентация новой микроархитектуры процессо- ров Intel Skylake с техпроцессом 14 нм. В презентации прозвучали до- статочно любопытные откровения о том, что построенные на Intel Sky- lake серверные и клиентские процессоры могут серьезно различаться по своей конфигурации даже на уровне микроархитектуры. Один пример такого отличия уже хорошо известен – серверные Skylake получили поддержку расширения системы команд MIC (AVX-512), которое в остальных процессорах не используется.
Расширение SIMD инструкций MIC (Many Integrated Core Architec- ture) использует шестнадцать 512-битных регистров для выполнения векторных операций над целочисленными данными и данными с пла- вающей запятой одинароной и двойной точности.
Нововведения в системе команд не миновали и клиентские процес- соры. Так, в них появились новые инструкции семейства Intel SGX (Software Guard Extension). Входящие в этот набор команды позволяют приложению создать для своего исполнения изолированную и защи- щённую среду в памяти, доступ к которой будет невозможен ни для ка- ких иных процессов и устройств. Таким образом, приложение, опери- рующее критически важной информацией, сможет защитить свой код и данные от каких-либо программных и аппаратных атак и вторжений, что может поднять безопасность платформы x86 на новый уровень. Intel отдельно подчеркивает, что благодаря SGX можно создавать и полно- стью защищенный программный код, который невозможно отслеживать с помощью аппаратных отладчиков ITP-класса.
Обобщенный формат команд х86
Базовый набор команд 32-разрядного интеловского процессора обеспечивает выполнение операций над операндами, которые находятся в регистре, памяти или непосредственно в команде. В набор входят без-
адресные, одно-, двух- и трехадресные команды. Процессор реализует
следующие шесть типов двухадресных команд: регистр – регистр; па-
мять – регистр; непосредственный операнд – регистр; регистр – память;
память
– память; непосредственный
операнд – память.
Операнды могут содержать 8, 16 или 32 разряда. Для реализации
различных типов команд определены форматы, задающие порядок раз-
мещения информации о выполняемой операции и способах выбора опе-
рандов.
Обобщенный вид формата команды показан на рис. 2.20. Он до-
пускает наличие следующих полей: кода операции (1 или 2 байта); бай-
тов
адресации
(0,
1
или
2
байта);
байтов
смещения
(0,
1,
2
или
4
байта);
байтов
непосредственных
данных
–
операндов
(0,
1,
2 или
4
байта).
Команды содержат от 1 до 12 байт. Проведенные оценки показы-
вают,
что в
среднем
длина
команды составляет 4–5
байт.
Рассмотрим назначение основных полей кода команды (рис. 2.25).
Код операции
(КОП)
определяет тип
выполняемой операции,
а
также
в некоторых командах в первом байте может содержаться бит W, зада-
ющий
разрядность
операндов:
W
=
0 – операция
с
байтами;
W
=
1
– операция
со
словами (16 или
32 разряда).
КОП
| Байты адресации
| Смещение
| Операнд
|
MOD R/M
| SIB
|
1 или
2 байта
| 0 или 1 байт
| 0 или 1 байт
| 0, 1, 2 или
4 байта
| 0, 1, 2 или
4 байта
|
Рис.
2.25.
Общий
формат
команд
В ряде команд первый байт КОП содержит поля reg или sreg, опре-
деляющие адреса используемых регистров. Трехбитовое поле reg задает
выбираемый регистр в соответствии с разрядностью обрабатываемых
операндов. Поле sreg (двух или трехбитовое) определяет адрес сегмент-
ных регистров.
Байт
адресации
MОD
R/M
содержит три
поля
(рис.
2.26).
Поля
MOD и R/M задают адрес одного из операндов, который может хра-
ниться в регистре или ячейке памяти. Кодировка этих полей определяет
выбираемый
способ
адресации.
7 6 5 3 2 0 7 6 5 3 2 0
MOD
R/M SIB
Рис.
2.26.
Форматы
байтов
MOD
R/M
и
SIB
В одноадресных командах поле REG/КОП содержит дополнитель-
ные биты кода операции. В двухадресных командах поле REG содержит
адрес регистра, в котором хранится второй из операндов. Тип команды
(одно- или двухадресная) определяется первым битом КОП. Поле MOD
указывает, какой разрядности смещение используется для формирова-
ния адреса. Если оно имеет значение 00 (при некоторых значениях R/M)
или 01, 10, то используется 8-, 16- или 32-разрядное смещение. Это
смещение задается соответствующими байтами в коде команды, кото-
рые
располагаются
после
байтов
адресации.
Для реализации некоторых способов относительной адресации ис-
пользуется
байт
SIB.
Он
содержит
3-битовые
поля
INDEX
и
BASE,
определяющие
выбор
регистров, используемых
в качестве
индексного
и базового регистров, и поле SS, задающее масштабный коэффициент
для
модификации значения индекса.
При выполнении операций с непосредственной адресацией один из
операндов задается в последних байтах команды (рис. 2.25). В этом слу-
чае КОП ряда команд содержит бит
S, определяющий способ использо-
вания
непосредственно
задаваемых
данных.
Способы адресации
Интеловский 32-разрядный процессор реализует сегментную орга-
низацию оперативной памяти, при которой физический адрес ячейки
памяти формируется путем сложения базового адреса сегмента и отно-
сительного адреса ячейки внутри сегмента.
Базовый адрес определяется содержимым 16-разрядного сегмент-
ного регистра и зависит от режима работы процессора. Если он работает
в
режиме
обработки
16-разрядных
данных
(режим
реальных
адресов),
то 20-разрядный базовый адрес формируется путем сдвига содержимого
сегментного
регистра
на
4
разряда
влево.
Если
процессор
работает
в режиме
обработки
32-разрядных
данных
(защищенный
режим),
то
32-разрядный базовый адрес содержится в дескрипторе, выбор которого
из таблицы дескрипторов осуществляется с помощью селектора – со-
держимого соответствующего
сегментного
регистра.
В качестве относительного адреса используется содержимое реги-
стров
общего
назначения
или
эффективный
адрес
(ЕА),
который
фор-
мируется в соответствии с заданным способом адресации. ЕА является
16- или 32-разрядным и формируется в зависимости от значения полей
MOD
и
R/M
и
содержимого
байта
SIB
(для
32-разрядных
адресов).
В общем случае ЕА образуется путем арифметического сложения трех
компонентов:
-
содержимого базового регистра;
-
содержимого индексного регистра;
-
8-, 16-, 32-разрядного смещения, заданного в одном, двух или че- тырех байтах команды.
В
зависимости
от
значений
полей
MOD
и
R/M
для
формирования
ЕА
используются все или
часть
этих
слагаемых.
В
процессоре
осуществляются
следующие
способы
адресации
опе-
рандов:
-
непосредственная адресация;
-
регистровая адресация;
-
косвенно-регистровая адресация;
-
прямая адресация;
-
базовая адресация;
-
индексная адресация;
-
базово-индексная адресация;
-
базово-индексная адресация со смещением.
В современных микропроцессорах Intel Core i5, i7 базовый набор
команд
и
используемые
способы
адресации
операндов
практически
полностью совпадают с набором команд и способов адресации в преды-
дущих моделях – Core 2 Duo, Pentium 4. Процессоры обеспечивают ре-
альный и защищенный режимы работы, реализуют сегментную и стра-
ничную
организации
памяти.
Таким
образом,
пользователь
имеет
дело
с хорошо знакомым набором регистров и способов адресации, может
работать с базовой системой команд и известными вариантами реализа-
ции прерываний и исключений, которые характерны для всех моделей
семейств
Intel
Core и
Pentium.