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

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



      1. Форматы команд и способы адресации в интеловских процессорах


В качестве примера рассмотрим набор команд и способы адреса- ции, используемые в процессорах интеловской архитектуры. Для этих процессоров в табл. 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-регистров, ХММ-регистров) и восстанавливает ранее сохраненное состояние процессора.

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