Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A_K_3.doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
286.72 Кб
Скачать

3.2 Страничная организация памяти

Недостатки СЕГМЕНТНОЙ ОРГАНИЗАЦИИ ПАМЯТИ:

  • В РЕЖИМЕ ВИРТУАЛЬНОЙ АДРЕСАЦИИ (РВА) размер сегментов различный. Поэтому после нескольких операций СВОПИНГА (обмена сегментов из памяти на диск и подкачки в память с диска новых сегментов) появляется много свободных «ОКОН» в памяти между сегментами малой длины, подкаченных на место удаленных длинных сегментов.

  • У процессоров 386+ длина сегмента может достигать 4 Гбайта, что значительно превышает объем памяти реальных компьютеров. Так как в памяти должны постоянно присутствовать 2..3 сегмента (сегмент кода, сегмент данных и желательно сегмент стека), то необходим механизм, позволяющий вводить и ИСПОЛНЯТЬ СЕГМЕНТЫ ПО ЧАСТЯМ, по мере необходимости. (Этой проблемы не было у МП I80286, так как размер сегмента не превышал 64 Кбайта).

МП 386+ реализуют страничную организацию памяти, если в регистре управления CR0 (см. рис. 3.7) бит 31 имеет значение PG = 1. При этом сегмент разбивается на отдельные РАЗДЕЛЫ, число которых может достигать 210 = 1024. Каждый раздел может содержать до 210 = 1024 СТРАНИЦ объемом по 4 КБайт каждая. Границы страниц жестко фиксированы, их начальные адреса имеют значения от 00000000h до FFFFF000h (младшие 12 бит всегда равны нулю).

Начальные адреса страниц данного раздела хранятся в соответствующей ТАБЛИЦЕ СТРАНИЦ, содержащейся в памяти. Обращение к каждой таблице страниц производится с помощью КАТАЛОГА РАЗДЕЛОВ, в котором содержатся начальные адреса таблиц страниц для всех разделов. Таким образом, страницы, содержащие определенный сегмент программы или данных, могут быть рассеяны по разным частям памяти, а их размещение определяется содержанием КАТАЛОГА РАЗДЕЛОВ и ТАБЛИЦ СТРАНИЦ.

Страничная организация обеспечивает более эффективное использование (заполнение) памяти по сравнению с сегментной, однако требует дополнительного времени и специальных аппаратных средств для преобразования адресов. Линейный (исполнительный) 32-х разрядный адрес при этом является исходной информацией для формирования физического адреса с помощью КАТАЛОГА РАЗДЕЛОВ и ТАБЛИЦ СТРАНИЦ (см. рис. 3.4).

В процессорах с 64-битовым расширением на текущем этапе линейный адрес ограничен 48-битовым пределом, а физический адрес может иметь разрядность до 52 бит.

Для процессоров 386+ характерны следующие варианты разбиения на страницы:

  • «классические» страницы по 4К с 3-ступенчатым адресом (рис. 3.4);

  • страницы по 4М с 2-ступенчатым адресом PSE (Page Size Extension — расширение размера страницы);

  • страницы по 4К с 4-ступенчатым адресом и расширенным (36-битным) физическим адресом (РАЕ);

  • страницы по 2М с 2-ступенчатым адресом и 36-битным физическим адресом (РАЕ);

  • страницы по 4К с 5-ступенчатым 48-битовым линейным адресом и 52-битовым физическим адресом, в 64-битовом режиме (long mode) процессоров с 64-битовым расширением;

  • страницы по 2М с 4-ступенчатым 48-битовым линейным адресом и 52-битовым физическим адресом, в 64-битовом режиме (long mode) процессоров с 64-битовым расширением.

Сформированный линейный (исполнительный) адрес при СТРАНИЧ-НОЙ ОРГАНИЗАЦИИ ПАМЯТИ рассматривается как совокупность трех полей:

  • разряды А31..А22 (поле TABLE) содержат относительный адрес (смещение) КАТАЛОГА РАЗДЕЛОВ, в котором выбирается базовый адрес ТАБЛИЦЫ СТРАНИЦ;

  • разряды А21..А12 (поле PAGE) содержат относительный адрес (смещение) ТАБЛИЦЫ СТРАНИЦ, из которой выбирается базовый адрес требуемой страницы;

  • разряды А11..А0 (поле BYTE) содержат относительный адрес (смещение) выбираемого на странице байта.

КАТАЛОГ РАЗДЕЛОВ занимает одну страницу памяти (размером 4 Кбайта), где содержатся до 1024 32-х разрядных УКАЗАТЕЛЯ ВХОДА (БАЗОВЫХ АДРЕСОВ) в одну из ТАБЛИЦ СТРАНИЦ этого раздела.

Каждая из ТАБЛИЦ СТРАНИЦ также занимает одну страницу памяти (4 Кбайта). В каждой ТАБЛИЦЕ СТРАНИЦ содержатся до 1024 32-х разрядных адресов входа (Базовых Адресов) в СТРАНИЦУ СЕГМЕНТА ПАМЯТИ (в КАДР СТРАНИЦЫ).

Таким образом, ФИЗИЧЕСКИЙ АДРЕС ячейки памяти формируется как сумма старших 20-ти бит, выбираемых из ТАБЛИЦЫ СТРАНИЦ и младших 12-ти бит из поля BYTE в ЛИНЕЙНОМ АДРЕСЕ.

Содержимое регистра управления CR3 (см. рис. 3.9) задает старшие разряды адреса памяти, где находится КАТАЛОГ РАЗДЕЛОВ (младшие 12 разрядов адреса обязательно равны 0).

31

12

11

9

8

7

6

5

4

3

2

1

0

Базовый адрес А31..А12

Резерв ОС

0

0

D

A

0

0

U/S

R/W

P

Рис. 3.5 – Формат указателей разделов и указателей страниц

Базовые адреса, выбираемые из КАТАЛОГА РАЗДЕЛОВ и ТАБЛИЦЫ СТРАНИЦ, также содержат только старшие 20 разрядов начального адреса страницы (рис. 3.5).

Остальные биты используются Операционной Системой для кодирования атрибутов:

  • Р (бит присутствия) – разрешает использование таблицы страниц или кадра страницы при Р = 1. Если Р = 0, то обращение к соответствующему разделу или странице запрещено, и попытка их использовать вызовет прерывание типа 14 (отсутствие доступа к странице);

  • R/W (бит чтения/запись), U/S (бит пользователя/супервизора) – определяют права доступа к соответствующему разделу или странице для пользователя, имеющего минимальные привилегии (уровень 3):

U/S

R/W

0

х

- запрещается доступ

1

0

- разрешается только чтение

1

1

- разрешается чтение и запись.

При запросах с большими привилегиями (уровни 0, 1, 2) допускается запись и чтение при любых значениях U/S и R/W;

  • А (бит доступа) – устанавливается в 1 при обращении к данному разделу или странице для записи или чтения информации;

  • D (бит «мусора») – в указателе кадра страницы устанавливается в 1 при первой записи на данную страницу; для указателей таблиц страниц значение бита D – неопределено.

Биты A и D используются операционной системой виртуальной памяти для определения разделов и страниц в оперативной памяти, содержание которых подлежит замене из дисковых накопителей. Если бит D = 0 (в данную страницу не было записи), то эту страницу не нужно возвращать на диск при свопинге.

Страничная организация памяти требует дополнительных затрат времени для преобразования линейного адреса – в физический. Эти затраты будут весьма значительными, если в каждом цикле производить обращение к оперативной памяти для выбора указателей в таблицах и кадры страниц. Существенное сокращение времени преобразования адресов в МП 386+ достигается путем использования внутренней КЭШ-ПАМЯТИ, которая называется БУФЕРОМ АССОЦИАТИВНОЙ ТРАНСЛЯЦИИ – (TRNSLATION LOOKASIDE BUFFER – TLB).

TLB представляет собой память с ассоциативной выборкой, которая содержит 20‑ти разрядные адреса 32-х страниц, т.е. старшие 20 разрядов ФИЗИЧЕСКОГО АДРЕСА.

Каждый из базовых адресов имеет свой признак – ТЭГ. В качестве тэга используются старшие 20 разрядов ЛИНЕЙНОГО АДРЕСА.

Рис. 3.6 – Буфер ассоциативной трансляции

При поступлении в блок управления страницами ЛИНЕЙНОГО АДРЕСА – его старшие 20 разрядов сравниваются одновременно со всеми тэгами в TLB. Если обнаруживается совпадение этих разрядов с каким-либо тэгом, то из ячейки TLB выбирается соответствующий ему БАЗОВЫЙ АДРЕС СТРАНИЦЫ. Блок страничной адресации формирует физический адрес из старших 20-ти разрядов, считанных из ассоциативной памяти TLB, и младших 12-ти разрядов поля BYTE линейного адреса.

Случай, когда базовый адрес страницы находится в TLB, называется КЭШ-ПОПАДАНИЕМ. При этом не требуется обращаться к оперативной памяти для выборки указателей входа в таблицы и кадры страниц. Формирование физического адреса не требует дополнительных машинных циклов.

Если базовый адрес нужной страницы отсутствует в TLB, то такое обращение называется КЭШ-ПРОМАХОМ. При этом МП выполняет полную процедуру формирования физического адреса с обращениями к каталогу разделов и таблице страниц, затрачивая на это значительное время. Полученный из таблицы страниц 20-ти битовый БАЗОВЫЙ АДРЕС вместе с соответствующими 20-тью битами ЛИНЕЙНОГО АДРЕСА (ТЭГ) заносятся в свободную ячейку TLB, или занимают ячейку, в которой хранился адрес, введенный в TLB ранее других. Таким образом обеспечивается непрерывное обновление содержимого TLB.

Кроме базовых адресов в TLB хранится дополнительная информация, определяющая правила доступа к ним. Эта информация задается следующими битами:

  • V (бит достоверности) – сбрасывается в состояние 0 при записи нового содержимого в регистр управления CR3 (базовый адрес каталога разделов). После преобразования очередного линейного адреса в физический – для этого адреса в TLB будет установлено значение V = 1, указывающего на допустимость использования данного базового адреса;

  • D (бит мусора) – принимает значение 1 при записи на данную страницу;

  • U (бит пользователя/супервизора) и W (бит записи/чтения) – аналогичны описанным ранее битам.

Так как TLB хранит адреса 32-х страниц объемом по 4 Кбайта, то МП 386+ может непосредственно формировать физические адреса для 128 Кбайт памяти. Опыт применения МП показывает, что доля кэш-попаданий составляет 98%. Только 2% обращений к памяти (кэш-промахи) требуют двухступенчатого преобразования адресов с использованием каталога разделов и таблицы страниц в памяти компьютера.

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