Материал: А. Д. Чередов, А. Н. Мальчуков

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Расширения 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.

Источник: https://files.student-it.ru/previewfile/151041