Управление памятью в микропроцессорах семейства Х86, страница 11

     Схема преобразования адреса виртуальной памяти в физический адрес оперативной памяти в рассматриваемом случае приведена на Рис III.19. Данная схема иллюстрирует как 32-разрядный виртуальный адрес, определяющий любую ячейку виртуального адресного пространства в 4 Г, отображается в 15-разрядный физический адрес, определяющий ячейку памяти в реально используемой оперативной памяти, емкостью 32 К ячеек. Центральным блоком устройства управления памятью является таблица страниц виртуальной памяти, количество которых определяется двадцатью старшими разрядами виртуального адреса. Таким образом, в рассматриваемом случае таблица страниц содержит 220 = 1 М строк, каждая из которых характеризуется тремя основными атрибутами: номером виртуальной страницы, битом присутствия данной страницы в реальной оперативной памяти и номером страничного кадра в этой оперативной памяти. (Заметим, что в существующих устройствах управления памятью в каждой строке хранится и некоторая дополнительная информация, например, связанная с организацией системы защиты). Поскольку в нашем случае оперативная память состоит из 8 страничных кадров, то на представление номера страничного кадра достаточно трех двоичных разрядов.  Поступающий на вход устройства управления памятью 32-разрядный виртуальный адрес используется следующим образом. Младшие 12 разрядов непосредственно определяют ячейку памяти в страничном кадре реальной оперативной памяти. Двадцать же старших разрядов виртуального адреса определяют номер виртуальной страницы. Если бит присутствия выбранной страницы равен 1, то это значит, что данная страница присутствует в реальной оперативной памяти и содержимое соответствующей строки таблицы страниц передается в выходной регистр устройства управления памятью, как старшие три разряда физического адреса. Если же бит присутствия равен 0, то это значит, что в оперативной памяти этой страницы нет. Следовательно,  ее необходимо найти и выбрать из внешней памяти, переписать в оперативную память на  место менее запрашиваемого  станичного кадра, определить ее адрес в оперативной памяти (занеся соответствующий трехразрядный код в таблицу страниц), установить в 1 соответствующий бит присутствия и повторить адресацию. Однако практически такое одноэтапное преобразование виртуальных адресов адресного пространства в реальные физические адреса используемой оперативной памяти оказывается недостаточно эффективным.

Поэтому, вместо одноэтапного, в процессорах семейства х86 использовано более гибкое двухэтапное или двухуровневое преобразование, показанное на рисунке III.20.

Включение страничного преобразования осуществляется установкой в 1 бита PG в регистре управления CR0, а основой страничного преобразования выступает регистр управления CR3, который содержит 20 старших разрядов физического базового адреса каталога страниц текущей задачи и называется регистром базового адреса каталога страниц – PDBR (Page Directory Base Register). Младшие 12 бит адреса считаются нулевыми, т.е. каталог выровнен по границе страниц. Каталог страниц постоянно находится в памяти и не участвует в свопинге.

Каталог страниц (Page Directory) содержит 1024 32-битных элемента каталога страниц – PDE (Page Directory Entry). Каждый из них адресует подчиненную таблицу страниц, т.е. всего допускается до 1024 таблиц страниц. Каждая из таблиц страниц  содержит 1024 32-битных элементов таблиц страниц – PTE (Page Table Entry), и каждый из элементов PTE, в свою очередь, адресует страницу (страничный кадр) в физической памяти. Отметим, что наличие в каталоге страниц и таблице страниц по 1024 32-битных элементов определяет их размер точно в одну страницу, поскольку каждый элемент занимает 4 байта.

Страничный

       кадр

 

Рис. III.20  Двухэтапное преобразование линейного адреса в

             физический.

Собственно преобразование линейного адреса в физический адрес состоит из следующих действий.

·  Старшие 10 бит (31…22) линейного адреса служат индексом каталога страниц и, дополненные двумя нулями со стороны младших разрядов (поскольку каждый элемент  занимает 4 байта), суммируются с базовым адресом каталога страниц. Этим формируется адрес  элемента PDE каталога и, тем самым, выбирается один из его 1024 элементов. Выбранный элемент PDE определяет 20 старших бит адреса таблицы страниц. С помощью дополнения их 12 нулями со стороны младших разрядов, формируется базовый адрес соответствующей таблицы страниц в адресном пространстве процессора.

·  Средние 10 бит, биты (21…12) линейного адреса, индексируют таблицу страниц. Дополненные со стороны младших разрядов двумя нулями (поскольку каждые элемент PTE также занимает 4 байта) и, суммируясь с базовым адресом выбранной таблицы страниц, они образуют адрес в адресном пространстве запрашиваемого элемента PTE. Из последнего извлекается 20 старших разрядов базового адреса страничного кадра в физической памяти. Дополнив их 12 нулевыми младшими разрядами, процессор формирует полный базовый адрес выбранного страничного кадра в адресном пространстве.

·  20 старших разрядов базового адреса страничного кадра, хранимые в элементе PTE, объединяются (конкатенируются, сцепляются) с младшими 12 битами (11…0) линейного адреса, в результате чего получается 32-битный физический адрес, по которому производится обращение к адресуемому байту памяти.

 Из изложенного следует, что полный размер всех служебных страниц в двухэтапном преобразовании адреса, в общем случае, составляет: 4 Кбайт (каталог страниц) плюс 4Мбайт (1024 таблицы страниц по 4 Кбайт каждая). Однако в любой практической системе требуемый для таблиц размер памяти можно существенно уменьшить.