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

24.Формирование адреса. Страничная адресация.

При страничной адресации непрерывное пространство линейных адресов памяти разбивается на страницы фиксированного размера (обычно 4 Кб (4096 или 1000h байт), но Pentium Pro может поддерживать и страницы по 4 Мб). При обращении к памяти процессор физически обращается не по линейному адресу, а по тому физическому адресу, с которого начинается данная страница. Описание каждой страницы из линейного адресного пространства, включающее в себя ее физический адрес и дополнительные атрибуты, хранится в одной из специальных системных таблиц, как и в случае сегментации, но в отличие от сегментации страничная адресация абсолютно невидима для программы. Страничная адресация включается при установке бита PG регистра CR0, если бит РЕ установлен в 1 (попытка установить PG, оставаясь в реальном режиме, приводит к исключению #GP(0)). Кроме того, предварительно надо поместить в регистр CR3 физический адрес начала каталога страниц — главной из таблиц, описывающих страничную адресацию. Каталог страниц имеет размер 4096 байт (ровно одна страница) и содержит 1024 4-байтных указателя на таблицы страниц. Каждая таблица страниц тоже имеет размер 4096 байт и содержит указатели до 1024 4-килобайтных страниц. Если одна страница описывает 4 килобайта, то полностью заполненная таблица страниц описывает 4 мегабайта, а полный каталог полностью заполненных таблиц — 4 гигабайта, то есть все 32-битное линейное адресное пространство. Когда процессор выполняет обращение к линейному адресу, он сначала использует его биты 31 – 22 как номер таблицы страниц в каталоге, затем биты 21 – 12 как номер страницы в выбранной таблице, а затем биты 11 – 0 как смещение от физического адреса начала страницы в памяти. Так как этот процесс занимает достаточно много времени, в процессоре предусмотрен специальный кэш страниц — TLB (буфер с ассоциативной выборкой), так что, если к странице обращались не очень давно, процессор определит ее физический адрес сразу. Элементы каталога страниц и таблиц страниц имеют общий формат: биты 31 – 12: биты 31 – 12 физического адреса (таблицы страниц или самой страницы) биты 11 – 9: доступны для использования операционной системой бит 8: G — «глобальная страница» — страница не удаляется из буфера TLB при переключении задач или перезагрузке регистра CR3 (только на Pentium Pro, если установлен бит PGE регистра CR4) бит 7: PS — размер страницы. 1 — для страницы размером 2 или 4 мегабайта, иначе — 0 бит 6: D — «грязная страница» — устанавливается в 1 при записи в страницу; всегда равен нулю для элементов каталога страниц бит 5: А — бит доступа (устанавливается в 1 при любом обращении к таблице страниц или отдельной странице) бит 4: PCD — бит запрещения кэширования бит 3: PWT — бит разрешения сквозной записи бит 2: U — страница/таблица доступна для программ с CPL = 3 бит 1: W — страница/таблица доступна для записи бит 0: Р — страница/таблица присутствует. Если этот бит — 0, остальные биты элемента система может использовать по своему усмотрению, например, чтобы хранить информацию о том, где физически находится отсутствующая страница Процессоры Pentium Pro (и старше) могут поддерживать расширения страничной адресации. Если установлен бит РАЕ, физический адрес оказывается не 32-битным (до 4 Гб), а 36-битным (до 64 Гб). Если установлен бит PSE регистра CR4, включается поддержка расширенных страниц размером 4 Мб для РАЕ = 0 и 2 Мб для РАЕ = 1. Такие страницы описываются не в таблицах страниц, а прямо в основном каталоге. Intel рекомендует помещать ядро операционной системы и все, что ему необходимо для работы, на одну 4-мегабайтную страницу, а для приложений пользоваться 4-килобайтными страницами. Расширенные страницы кэшируются в отдельном TLB, так что, если определена всего одна расширенная страница, она будет оставаться в TLB все время. Для расширенных страниц формат элемента каталога совпадает с форматом для обычной страницы (кроме того, что бит PS = 1), но в качестве адреса используются только биты 31 – 22 — они соответствуют битам 31 – 22 физического адреса начала страницы (остальные биты адреса — нули). Для расширенного физического адреса (РАЕ = 1) изменяется формат регистра CR3 (см. главу 10.1.3), размеры всех элементов таблиц становятся равными 8 байтам (причем используются только биты 0 – 3 байта 4), так что их число сокращается до 512 элементов в таблице и вводится новая таблица — таблица указателей на каталоги страниц. Она состоит из четырех 8-байтных элементов, каждый из которых может указывать на отдельный каталог страниц. В этом случае биты 31 – 30 линейного адреса выбирают используемый каталог страниц, биты 29 – 21 — таблицу, биты 20 – 12 — страницу, а биты 11 – 0 — смещение от начала страницы в физическом пространстве (следовательно, если биты 29 – 21 выбрали расширенную страницу, биты 20 – 0 соответствуют смещению в ней). Основная цель страничной адресации — организация виртуальной памяти в операционных системах. Система может использовать внешние устройства — обычно диск — для расширения виртуального размера памяти. При этом, если к какой-то странице долгое время нет обращений, система копирует ее на диск и помещает отсутствующей в таблице страниц. Затем, когда программа обращается по адресу в отсутствующей странице, вызывается исключение #РЕ Обработчик исключения читает адрес, вызвавший ошибку из CR2, определяет, какой странице он соответствует, загружает ее с диска, устанавливает бит присутствия, удаляет копию старой страницы из TLB командой INVLPG и возвращает управление (не забыв снять со стека код ошибки). Команда, вызывавшая исключение типа ошибки, выполняется повторно. Кроме того, система может периодически сбрасывать бит доступа и, если он не установится за достаточно долгое время, копировать страницу на диск и объявлять ее отсутствующей. Если при этом бит D равен нулю, в страницу не выполнялось никаких записей (с того момента, как этот бит последний раз обнулили) и ее вообще можно не сохранять. Второе не менее важное применение страничной адресации — безопасная реализация flat-модели памяти. Операционная система может разрешить программам обращаться к любому линейному адресу, но отображение линейного пространства на физическое не будет взаимно однозначным. Скажем, если система использует первые 4 Кб памяти, физическим адресом нулевой страницы будет не ноль, а 4096 и пользовательская программа даже не узнает, что обращается не к нулевому адресу. В этом случае, правда, и сама система не сможет обращаться к первой физической странице без изменения таблицы страниц, но эта проблема решается при применении механизма многозадачности, о котором рассказано далее.

25.Режимы работы процессора 80386. Системные регистры процессоров 80386. Уровни привилегий.

Режимы работы процессора архитектуры IA-32

Режим работы процессора определяет поведение, номенклатуру и свойства до-

ступных ресурсов процессора. Перевод процессора из одного режима в другой осу-

ществляется специальными программными и аппаратными методами.

В рамках архитектуры IA-32 доступны следующие режимы работы процессора.

II Режим реальных адресов, или просто реальный режим (real mode) — это режим,

в котором работал 18086. Наличие его в i486 и Pentium обусловлено тем, что

фирма Intel старается обеспечить в новых моделях процессоров возможность

функционирования программ, разработанных для ранних моделей.

II Защищенный режим (protected mode) позволяет максимально реализовать все

идеи, заложенные в процессорах архитектуры IA-32, начиная с i80286. Програм-

мы, разработанные для J8086 (реального режима), не могут функционировать

в защищенном режиме. Одна из причин этого связана с особенностями форми-

рования физического адреса в защищенном режиме.

И Режим виртуального процессора 8086 предназначен для организации многоза-

дачной работы программ, разработанных для реального режима (процессора

18086), совместно с программами защищенного режима. Переход в этот режим

(virtual 8086 mode) возможен, если процессор уже находится в защищенном

режиме. Работа программ реального режима в режиме виртуального 18086 воз-

можна благодаря тому, что процесс формирования физического адреса для них

производится по правилам реального режима.

Ш Режим системного управления (System Management Mode, SMM) — это новый

режим работы процессора, впервые появившийся в процессоре Pentium. Он

обеспечивает операционную систему механизмом для выполнения машинно-

зависимых функций, таких как перевод компьютера в режим пониженного энер-

гопотребления или выполнения действий по защите системы. Для перехода

в данный режим процессор должен получить специальный сигнал SMI от усо-

вершенствованного программируемого контроллера прерываний (Advanced

Programmable Interrupt Controller, APIC), при этом сохраняется состояние вы-

числительной среды процессора. Функционирование процессора в этом режи-

ме подобно его работе в режиме реальных адресов. Возврат из этого режима

производится специальной командой процессора.

Процессор всегда начинает работу в реальном режиме.

Набор регистров

Регистрами называются области высокоскоростной памяти, расположенные внутри

процессора в непосредственной близости от его исполнительного ядра. Доступ

к ним осуществляется несравнимо быстрее, чем к ячейкам оперативной памяти.

Соответственно, машинные команды с операндами в регистрах выполняются мак-

симально быстро, поэтому в программах на языке ассемблера регистры использу-

ются очень интенсивно. К сожалению, архитектура IA-32 предоставляет в распо-

ряжение программиста не слишком много регистров, поэтому они являются

критически важным ресурсом и за их содержимым приходится следить очень вни-

мательно.

Большинство регистров имеют определенное функциональное назначение.

С точки зрения программиста, их можно разделить на две большие группы.

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