Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Архитектура часть 6..doc
Скачиваний:
42
Добавлен:
16.04.2013
Размер:
480 Кб
Скачать

6.1.2. Выполнение набора инструкций ia-32

Пока процессор выполняет набор инструкций IA-32 (PSR.is=1), используется архитектура приложений IA-32 (такая же, как в процессоре Pentium III), а именно:

  • Процессор загружает, декодирует и выполняет IA-32 инструкции (т.е. уровня 16/32-битных приложений, технологий MMX и SSE).

  • Является видимым только состояние регистров на прикладном уровне IA-32 (т.е. основные регистры IA-32, MMX и SSE регистры, регистры селекторов, EFLAGS, FP регистры и регистры управления FP). Состояние прикладных и управляющих регистров Itanium – не видимо, а именно, не видны регистры – переходов, предикатные, прикладные, управления, отладки, тестирования и мониторинга выполнения.

  • Действительна сегментация режимов IA-32: реального, защищенного и VM86. Применяются проверки сегментной защиты, а виртуальные адреса генерируются согласно правилам сегментации IA-32. Определены сегменты GDT и LDT, для поддержания сегментированных прикладных программ IA-32. Полностью поддерживаются сегментированные 16- и 32-битные коды.

  • Виртуальные обращения ограничены 4G байтами виртуального региона 0. Управление памятью архитектуры Itanium используется для трансляции виртуальных и физических обращений набора инструкций IA-32 к памяти и портам ввода/вывода.

  • Обращения к памяти данных и инструкций обязательно делается в порядке убывания. Упорядочивание памяти использует модель упорядочивания памяти процессора Pentium III.

  • Ресурсы операционной системы IA-32 (страничный обмен IA-32, регистры MTRR, таблица дескрипторов прерываний IDT, регистры управления, регистры отладки, а также привилегированные инструкции) заменены ресурсами, определенными в архитектуре Itanium. Все обращения к этим ресурсам приводят к ошибке перехвата.

6.1.3. Переключения наборов инструкций

В следующем разделе собрано поведение каждого переключения набора инструкций. Для уточнения деталей можно посмотреть описание инструкций jmpe (инструкция IA-32) и br.ia (инструкция Itanium).

Операционные системы могут запретить переключение набора инструкций (jmpe и br.ia), с помощью установки бита PSR.di в 1. Если PSR.di=1, то выполнение jmpe или br.ia приведет к ошибке «Запрещено переключение набора инструкций». Переключение набора инструкций на уровне системы при выполнении rfi или прерывания, игнорирует состояние бита PSR.di (описанного в разделе 3.3.2 «Регистр состояния процессора (PSR)» во втором томе).

6.1.3.1. Инструкция jmpe

Инструкции jmpe reg16/32 и jmpe disp16/32 используются для перехода и переключения управления на набор инструкций Itanium. Здесь есть две формы: косвенная регистровая и абсолютная. Абсолютная форма вычисляет целевой виртуальный Itanium адрес следующим образом:

IP{31:0} = disp16/32 + CSD.base

IP{32:63} = 0

Косвенная форма читает содержимое 16/32-битного регистра и вычисляет целевой Itanium адрес следующим образом:

IP{31:0} = [reg16/32] + CSD.base

IP{32:63} = 0

Адресаты для инструкции jmpe должны быть выровнены на 16-байтовую границу и не должны превышать 4GB в 64-битном адресном пространстве, из-за ограничений адресуемости IA-32. Если есть какое-то задержанное цифровое исключение IA-32, то jmpe аннулируется и генерируется ошибка «Исключение с плавающей точкой IA-32».

Переключение в набор инструкций Itanium не изменяет уровень привилегий процессора.