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

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

Основные режимы работы х86-64 архитектуры


Как было сказано выше, корпорацией AMD было разработано 64-разрядное расширение х86-архитектуры, которое получило название

«х86-64», т.е. 64-битная х86 (по аналогии с х86-32). Позднее х86-64 архитектура была переименована в AMD64. В отличие от 64-битной ар- хитектуры IA-64, примененной в процессорах Intel Itanium, х86-64 бази- руется на существующей архитектуре х86-32. Следовательно, процес-

сор, построенный на основе х86-64, может безо всяких проблем испол- нять существующие 32-битные приложения, которых написано на те- кущий момент просто немерено (и в них вложены очень большие день- ги). Причем эти приложения могут выполняться без каких бы то ни бы- ло потерь в производительности в отличие от того же Intel Itanium, где х86-32 систему команд приходится эмулировать.

В процессорах данной архитектуры существующие в х86 регистры общего назначения расширены с 32 до 64 бит и к ним добавлены еще 8 новых 64-разрядных регистров.

Для реализации одновременной работы как с 32-битным, так и с 64-битным кодом и регистрами архитектура AMD64 предполагает под- держку процессорами двух режимов: Long Mode («длинный» режим), имеющего два подрежима 64-битный режим и Compatibility mode (ре- жим совместимости), и Legacy Mode (наследственный режим). Что они собой представляют, можно понять из табл. 2.2.

Таблица 2.2 Режимы работы процессора х86-64 архитектуры



Режим


ОС

Необх. переком- пиляция

приложе- ний

Характеристики

Длина адреса

Длина операнда

Дополни- тельные регистры

Размер РОН

Long Mode

64-битный

64-

битная

ДА

64

64

ДА

64

Compatibility mode

НЕТ

32

32

НЕТ

32

Legacy Mode

32-бит.

НЕТ

32

32

НЕТ

32

16-бит.

16

16


Итак, в 64-битном режиме обеспечивается поддержка:

  • 64-битных виртуальных адресов;

  • 8-ми новых и расширенных 64-битных регистров общего назначения;

  • 64-битного указателя инструкций RIP;

  • сплошного адресного пространства с единым пространством для инструкций, данных и стека.

  • 64-битных арифметических и логических операций над целыми числами.

Данный режим снимает ограничение в размерности адресного про- странства оперативной памяти, которое в современных 32-разрядных х86 системах составляет 232 = 4 Гбайт.

Для адресации новых регистров в команды введены так называе- мые «префиксы расширения регистра», кодирование которых осу-

ществляется кодами, использующимися для команд INC <регистр> и DEC <регистр> в 32- и 16-битных режимах. Команды INC и DEC в 64- битном режиме должны кодироваться в более общей, двухбайтовой форме.

Compatibility mode обеспечивает бинарную совместимость с су- ществующими 16- и 32-битными приложениями при работе с 64-битной операционной системой. Этот режим разрешается ОС по принципу от- дельных кодовых сегментов. Однако, в отличие от 64-битного режима, сегментация функционирует обычным образом, используя семантику защищенного режима. С точки зрения выполняемого приложения про- цессор выглядит как обычный х86 центральный процессор (CPU) в за- щищенном режиме. С точки зрения операционной системы трансляция адресов, работа с прерываниями и исключениями, а также системные структуры данных используют механизмы 64-битного Long Mode.

Наследственный режим (Legacy Mode) обеспечивает бинарную совместимость с 16- и 32-битными операционными системами; полную совместимость с существующими 32-битными реализациями х86 архи- тектуры, включающей в себя поддержку сегментированной памяти и 32-битных регистров общего
назначения и указателя инструкций; процессор уподобляется обычному 32-разрядному х86 CPU. В этом ре- жиме не задействуется ни одна из 64-битных функций.

Нельзя не отметить, что для того, чтобы пользователи смогли вос- пользоваться преимуществами 64-битного режима, необходим компиля- тор, который разработан и поставляется вместе с микропроцессором.

Данная архитектура была реализована в процессорах AMD Athlon 64, Opteron.

Особенности архитектуры Intel 64


Архитектура Intel 64 (технология EM64T) в сочетании с соответству- ющим программным обеспечением поддерживает работу 64-разрядных приложений на серверах, рабочих станциях, настольных ПК и ноутбу- ках. Она, как и х86-64 от AMD, реализует 64-разрядное расширение ре- гистров, те же режимы работы процессора, ту же программную совме- стимость с 16- и 32-битными приложениями, а главное – эта технология расширяет адресное пространство виртуальной и физической памяти.

Архитектура Intel 64 поддерживает следующие возможности:

  • 64-разрядное сплошное пространство виртуальных адресов;

  • 64-разрядные указатели;

  • 64-разрядные регистры общего назначения;

  • 64-разрядную поддержку вычислений с целыми числами;

  • до 1 Тбайт адресного пространства платформы.



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


Рассмотрим форматы команд на примере процессоров архитектуры Power PC, разработанной корпорациями IBM, Apple и Motorola.

Все команды имеют длину 32 разряда и могут быть трех форматов:

  • 1-й формат – КОП (6); RS(5); Rt(5); I (16), где КОП(6) – поле ко- да операции, содержащее 6 разрядов; RS(5), Rt(5) – поля адресов реги- стров (по 5 разрядов); I(16) 16-разрядный непосредственный операнд;

  • 2-й формат КОП (6); RS(5); Rt(5); Rk(5);

  • 3-й формат отличается от 2-го формата наличием дополнитель- ного 32-разрядного командного слова, в котором для различных кодов операций могут находиться 32-разрядные непосредственный операнд, смещение или адрес перехода.

Архитектура Power PC определяет операции типа регистр – ре-гистр для всех команд обработки. Источником данных являются встро- енные регистры или непосредственные операнды. Трехрегистровый формат команд позволяет отличать регистр результатов от двух реги- стров – источников, позволяя использовать их в других командах. Дан- ные пересылаются между памятью и регистрами только специальными командами загрузки/сохранения. Адреса памяти формируются с исполь- зованием базового регистра и смещения.

      1. Особенности системы команд IA-64


Шестидесятичетырехразрядная интеловская архитектура (IA-64), как было сказано выше, реализует EPIC-концепцию, разработанную совместно фирмами Intel и HP; IA-64 не является 64-разрядным расши- рением 32-разрядной архитектуры х86 компании Intel или переработкой 64-разрядной архитектуры РА-RISC компании НР; IA-64 представляет собой нечто абсолютно новое – передовую архитектуру, использующую длинные слова команд, предикаты команд, устранение ветвлений, пред- варительную загрузку данных и другие ухищрения для того, чтобы «из- влечь больше параллелизма» из кода программ.

Команды IA-64 можно подразделить на команды работы со стеком регистров (например, alloc); целочисленные команды; команды сравне-
ния и работы с предикатами; команды доступа в память; команды пере- хода; мультимедийные команды; команды пересылок между регистра-

ми; команды выполнения операций над строками и подсчет числа еди- ниц в слове; команды работы с плавающей запятой.

Целочисленные команды IA-64 включают арифметические опера- ции (add, sub и др.), операции над битами и сдвиги, а также 32-разрядные операции.

Отметим, что команда умножения целых чисел в регистрах общего назначения (GR) отсутствует; для перемножения необходима пересылка целых в регистры с плавающей запятой (FR) и применение операции умножения, выполняемой в функциональном исполнительном устрой- стве вещественного типа. Некоторые специалисты считают это «наиме- нее удачной» чертой системы команд IA-64.

Команды сравнения и работы с предикатами – это одна из принци- пиально новых особенностей IA-64 по сравнению с RISC-архитектурой. Приведем несколько типичных примеров команд этой группы. Команда cmp сравнивает два регистра GR (или регистр GR и литерал) на одно из 10 возможных условий (больше, меньше или равно и т.п.). Команда tbit тестирует заданный бит GR. Команда fcmp сравнивает два числа с пла- вающей запятой. Однако результатом сравнения является не единствен- ный код условия, что типично для обычных процессоров. Логический результат сравнения (1 – истина, 0 – ложь) записывается обычно в пару предикатных регистров (во второй пишется отрицание первого). Эти значения предикатных регистров (PR) используются затем не только в командах условного перехода, как в обычных микропроцессорах. По- чти все команды IA-64 выполнимы «под предикатом», т.е. могут вы- полняться или нет в зависимости от значения указанного в команде PR-регистра. Это позволяет во многих случаях избежать применения условных переходов, которые, как известно, отрицательно сказываются на производительности процессоров. Вместо этого процессор с архитек- турой IA-64, имеющий большое число ресурсов (в частности, регистров
Источник: https://files.student-it.ru/previewfile/151041