Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
uchebnik.docx
Скачиваний:
0
Добавлен:
10.01.2020
Размер:
557.61 Кб
Скачать

2.1 Архитектура процессоров ia-32

2.1.1.Основная исполнительная среда микропроцессора с архитектурой ia32

Современные процессоры, используемые в персональных ЭВМ построены на основе архитектуры, получившей название IA32 (32-х разрядная архитектура Intel). Отличия этой архитектуры от внедряемой в настоящее время 64-х разрядной архитектуры заключается лишь в добавлении в последней двух дополнительных режимов работы: режима совместимости и 64-битного режима. В последнем режиме, 64-х разрядным ОС позволяется запускать приложения в которых осуществляется обращение к линейному адресному пространству, адресуемому 64-х разрядным двоичным числом, увеличивается количество регистров общего назначения (РОНов) и их разрядность увеличивается до 64.

Основным источником информации по архитектуре и режимам работы микропроцессоров являются справочники, выпускаемые фирмами-производителями процессоров (Intel и AMD) и доступные для скачивания посредством глобальной сети Internet.

Основная исполнительная среда, в которой будет выполняться программное обеспечение формируется из:

  • Адресного пространства

  • Регистров общего назначения

  • Регистров сопроцессора

  • Регистров команд ОКМД

  • Стека

На рисунке 24 показана основная исполнительная среда микропроцессоров с архитектурой IA-32.

Tag register – регистр тега, используется при выборке данных из КЭШа. В зависимости от схемы кэширования тег может являться либо адресом данных в ОП, либо признаком по которому производится сравнение при ассоциативном поиске (как правило).

Основные регистры, используемые при выполнении программ

РОНы – 8 регистров EAX, EBX, ECX, EDX, ESI, EDI, EBP, и ESP являются 32-х битными и используются для хранения следующего:

  • Операнды для логических и арифметических операций

  • Операнды для вычисления адреса

  • Указатели на ячейки памяти

ESP используется для хранения указателя стека и, как правило, для других целей не используется.

При выполнении многих команд, неявно предполагается что операнды хранятся в специфичных регистрах: например, при выполнении строковых операций в качестве операндов используется содержимое регистров ECX, ESI, и EDI. При использовании сегментной модели памяти, некоторые команды принимают, что указатели в определенных регистрах относительны определенных сегментов. Например, некоторые команды принимают, что указатель в регистре ЕВХ указывает на сегмент, начало которого указано в сегменте DS .

EAX — аккумулятор для операнда и результата

EBX — указатель на данные в сегменте, адрес которого указан в регистре DS

ECX — счетчик для строковых и циклических операций

EDX — указатель для ввода/вывода

ESI — указатель на данные в сегменте, на который указывает DS. Указатель источника для строковых операций

EDI — указатель на данные (или местоположение) в сегменте, на который указывает регистр ES. Указатель местоположения результата для строковых операций

ESP — Указатель стека (в сегменте SS)

EBP — Указатель на данные в стеке (в сегменте SS)

В 64-х битном режиме те же регистры называются RAX и т.д. и к ним добавляются регистры R8R15, к которым также можно обращаться побайтно (R8L (байт), R8W (слово), R8D (двойное слово) и R8 (четверное слово, т.е. 64 бита))

Сегментные регистры – CS, DS, SS, ES, FS, и GS хранят 16-ти битный селектор сегмента. Селектор сегмента – специальный указатель, который идентифицирует сегмент в памяти. При использовании плоской модели памяти, сегментные регистры загружаются указателями, которые указывают на перекрывающиеся сегменты (одно и то же число). При сегментной модели памяти – в сегментные регистры записываются различные числа. Одновременно программа может использовать до 6 сегментов. Каждому сегментному регистру сопоставляется определенный тип данных:

CS – указывает на сегмент кода

SS – указывает на сегмент стека

DS, ES, FS, и GS – указывают на сегмент данных

В 64-х битном режиме CS, DS, ES, SS устанавливаются в 0, а FS и GS могут быть использованы как дополнительные базовые регистры при вычислении линейного адреса.

Регистр признаков (флагов)

32-х битный регистр EFLAGS содержит группу флагов состояния, управляющий флаг и группу системных флагов. Некоторые флаги могут быть изменены напрямую с помощью специальных команд. Полностью регистр флагов не изменяется. После включения питания в нем записано число 0000002h

Рисунок 3 – Основная исполнительная среда микропроцессора с архитектурой IA32

Флаги состояния:

CF – флаг переноса

PF – флаг четности, устанавливается в «1», если младший значащий байт результата содержит четное число единиц

AF – корректирующий флаг, устанавливается если был перенос или заем из младшей тетрады в старшую (из старшей в младшую). Используется при выполнении операций двоично-десятичной арифметики. В иных моделях процессоров может называться CY.

ZF – флаг равенства 0 результата операции.

SF – флаг знака результата. Устанавливается равным старшему значащему биту результата. (0 – положительный результат, 1 – отрицательный результат)

OF – флаг переполнения. Устанавливается, если результирующее целое положительное слишком большое или отрицательное слишком маленькое. Этот флаг показывает условия переполнения в арифметике для целых чисел со знаком (в дополнительном коде).

Из вышеперечисленных флагов только CF может быть напрямую изменен.

DF – флаг направления, управляет строковыми командами. Если DF установлен в «1»,то при операциях со строками адреса уменьшаются (обработки строки идет с конца), если DF сброшен в «0» – адреса увеличиваются (обработка строки одет с начала).

Системные флаги – управляют операционной системой и исполняемой программой. Они не должны меняться прикладным ПО.

TF – флаг трассировки (trap flag), когда установлен в «1» – разрешает пошаговое исполнение программы

IF – флаг разрешения прерываний

IOPL2 бита, используются для разрешения или запрещения доступа к адресному пространству ввода/вывода. Приложение, пытающееся обратиться к пространству ввода/вывода должно обладать уровнем привилегий не более (т.е. меньше или равным) чем записано в этих битах. Всего поддерживается 4 уровня привилегий: 0 (операционная система), 1,2, (драйвера и программы обслуживающие ОС), 3 (прикладное ПО). В операционной системе Windows используется только 2 уровня привилегий: 0 (ядро ОС, драйвера уровня ядра и т.п.) и 3 (прикладное ПО).

NT – управляет цепочкой прерванных задач или цепочкой вызовов подпрограмм. Установлен в «1», если текущая задача связана с предыдущей, и сброшен в «0», если связи нет.

RF – управляет ответом процессора на отладочные исключения.

VM – флаг виртуального I8086. Для разрешения режима виртуального I8086 устанавливается в «1», сброс в «0» приводит к возвращению в защищенный режим.

AC – проверяет выравнивание слов в памяти. Установка этого флага и бита AM в регистре CR0 разрешает проверку выравнивания ссылок памяти; сброс этого флага и/или бита AM - отменяет проверку выравнивания.

VIF – виртуальный флаг прерывания.

VIP – виртуальный флаг обработки прерывания. Устанавливается ПО, процессору этот флаг доступен только для чтения. Если установлен, то прерывание обрабатывается, сброшен – никакое прерывание не обрабатывается.

ID – флаг идентификации. Возможность сбрасывать или устанавливать этот флаг показывает, что команда CPUID поддерживается.

В 64-битном режиме используется регистр RFLAGS. Старшие 32 разряда которого зарезервированы, а младшие – аналогичны EFLAFS.

Кроме представленных на рисунке 24 регистров, системному программисту доступны и другие ресурсы процессора:

  • Порты ввода/вывода

  • Управляющие регистры: 5 штук (CR0÷CR4), определяют режимы работы процессора и характеристики текущей задачи. Описание и назначение этих регистров приводится в документации фирмы Intel [2].

  • Регистры управления памятью: регистры GDTR, IDTR, LDTR и регистр задачи (task register) определяют местоположение структур данных, используемых в управлении памятью в защищенном режиме. Описание и назначение этих регистров приводится в документации фирмы Intel.

  • Отладочный регистр: отладочные регистры DR0÷DR7 управляют и позволяют отлаживать выполнение операций процессором.

  • Регистры диапазона типа памяти (MTRR): используются для назначения областям памяти типа кэширования (от «ни в коем случае не кэшируемая – сразу запись/чтение» до «чтение и запись из кэша по мере возможности»), зависящего от типа памяти (ROM, RAM, отображенная на ОП память устройств и т.п.) и позволяющие оптимизировать работу с памятью.

  • Специфичные регистры: у процессора есть множество различных регистров, используемых для управления и отчета о производительности процессора. Виртуально, каждому из них соответствует какая то системная функция и программно они не доступны (единственное исключение – таймер).

  • Регистры проверки машины

  • Счетчики контроля производительности

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]