Основные режимы работы х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 системах
составляет 2
32 = 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 Тбайт адресного пространства платформы.
-
Форматы команд и способы адресации в 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 определяет операции типа
регистр – ре-гистр для всех команд обработки. Источником данных являются встро-
енные
регистры
или
непосредственные
операнды.
Трехрегистровый
формат команд позволяет отличать регистр результатов от двух реги-
стров – источников, позволяя использовать их в других командах. Дан-
ные пересылаются между памятью и регистрами только специальными
командами загрузки/сохранения. Адреса памяти формируются с исполь-
зованием
базового
регистра и смещения.
-
Особенности системы команд 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, имеющий большое число ресурсов (в частности, регистров