Линейная адресация памяти

Линейная адресация памяти

Линейная адресация памяти[неизвестный термин] — схема адресации памяти компьютера в Intel-совместимых процессорах, начиная с Intel 80386.

Благодаря введению механизма линейной адресации можно создавать любое (ограниченное только размерами оперативной памяти) количество адресных пространств. Причём каждая страница линейного адресного пространства может находиться по любому (естественно, выравненному по границе 4 КБайт) физическому адресу, а благодаря обработчику #PF — и на любом накопителе [1].

Содержание

Страница

Вся физическая память делится на страницы фиксированного размера (4 КБайт, 2 МБ или 4 МБ, в x86_64 также 1-2 ГБ). Каждая страница, независимо от размера, выравнена по границе 4 КБайт.

Деление линейного адреса

При использовании линейной адресации 32-битный адрес делится на три части:

  • Номер записи в каталоге страниц (номер таблицы страниц, см. ниже) — биты 31-22 (10). Одна запись из каталога страниц определяет 4 МБайт адресного пространства.
  • Номер записи в таблице страниц (номер страницы в таблице страниц, см. ниже) — биты 21-12 (10). Одна запись из таблицы страниц определяет 4 КБайт адресного пространства.
  • Смещение в странице — биты 11-0 (12).

При использовании страниц по 4 МБайт вторая часть отсутствует. Смещение же в странице определяют биты 21-0 (22).

Принцип работы

Линейная адресация доступна только в защищённом режиме. Для её включения необходимо установить бит PG в регистре CR0. Предварительно необходимо создать в памяти каталог страниц (англ. Page Directory, PD) и таблицы страниц (англ. Page Table, PT), после чего в регистр CR3 загрузить физический адрес каталога страниц.

Схема образования линейного адресного пространства. (Все стрелки указывают на начало страниц)

Каталог и таблицы страниц

Обе эти структуры представляют собой таблицы элементов каталога и таблицы страниц (англ. Page Directory Entry, PDE и англ. Page Table Entry, PTE) страницы памяти по 4 КБайт.

Оба элемента занимают по 4 байта (32 бита) и имеют похожую структуру:

Элемент каталога страниц Элемент таблицы страниц

В жёлтых полях (Page table address, Page address) записаны старшие 20 бит адреса таблицы страниц и страницы соответственно (младшие 12 бит физического адреса всегда равны нулю — не забывайте о выравнивании).

Три бита Avl — это биты, отданные системе. В них можно записать всё что угодно.

Описание флагов:

  • Бит P (англ. Present) определяет наличие данной страницы или таблицы страниц в физической памяти. Если он сброшен, то процессор записывает линейный адрес отсутствующей страницы [2] в регистр CR2 и передаёт управление обработчику #PF, который должен загрузить страницу в память (или создать её) и установить этот бит.
  • Бит RW (англ. Read/Write) определяет, можно ли в эту страницу что-то писать (1 — можно, 0 — нельзя).
  • Бит US (англ. User/Supervisor) разрешает коду с CPL=3 (код пользователя) обращаться к этой странице (при US=1).
  • Бит PWT (англ. Page write through) — запрещение кэша записи (немедленная запись). Используется для управления кэшированием данной страницы. Если он установлен, то запись происходит непосредственно в оперативную память. Актуально обычно в многоядерных машинах.
  • Бит PCD (англ. Page cache disable) — запрещение кэширования этой страницы. При обращении к такой странице, она не заносится в кэш.
  • Бит A (англ. Accessed). Аналогично биту A в дескрипторе сегмента, этот бит никак не влияет на работу со страницей. Он просто устанавливается процессором при первом же обращении к этой странице (чтение, запись, выполнение).
  • Бит D (англ. Dirty, букв. грязный) используется только в элементах таблицы страниц (PTE) для отслеживания изменений страницы. Аналогично биту A, устанавливается процессором, но только при записи на эту страницу.
  • Бит PS (англ. Page size, только каталог страниц) определяет размер страницы. Если сброшен, то этот элемент указывает на таблицу страниц с размером страниц 4 КБайт. Если установлен, то элемент указывает на страницу размером 4 МБайт при 32-битной физической адресации или 2 МБайт при 36-битной. Важно! Работает только при установленном бите PSE в регистре CR4.
  • Бит PAT (англ. Page attribute table, только таблица страниц). Нет информации
  • Бит G (англ. Global). Если этот бит установлен, то адрес страницы (или таблицы страниц) никогда не удаляется из TLB кэша.[3]

Примечания

  1. В этом случае обработчик #PF лишь загружает страницу с накопителя в физическую память. Процессор всё равно обращается только к физической памяти.
  2. Конкретнее, в CR2 записывается полный адрес (32 бита). Напр. если программа обратилась по адресу 00001543h (то есть ко второй странице (№ 1) при страницах по 4 КБайт), то в CR2 запишется именно это число
  3. Удалить из TLB кэша можно любую страницу привилегированной командой INVLPG

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Полезное


Смотреть что такое "Линейная адресация памяти" в других словарях:

  • Защищённый режим — (режим защищённой виртуальной адресации)  режим работы x86 совместимых процессоров. Частично был реализован уже в процессоре 80286, но там существенно отличался способ работы с памятью, так как процессоры еще были 16 битными и не была… …   Википедия

  • Жёсткий диск — Запрос «HDD» перенаправляется сюда; см. также другие значения …   Википедия

  • Opteron — Для улучшения этой статьи желательно?: Викифицировать статью …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»