Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 03.03.2010 | Доступ: свободный | Студентов: 5335 / 1307 | Оценка: 4.35 / 3.96 | Длительность: 24:14:00
ISBN: 978-5-9963-0267-3
Специальности: Разработчик аппаратуры

Лекция 3: Физическая и логическая организация адресного пространства

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >

Буфер ассоциативной трансляции страничного адреса

Страничная организация памяти требует двух дополнительных обращений к памяти: для считывания ЭКТС и ЭТС. Чтобы не ухудшать производительность процессора, в схемы управления страничным преобразованием адреса встроен буфер ассоциативной трансляции страничного адреса ( Translation Lookaside Buffer - TLB ).

Когда программа формирует линейный адрес, который отображен на находящийся в TLB элемент PTE, преобразование выполняется без дополнительных обращений к памяти.

TLB представляет собой память с ассоциативной выборкой, которая содержит 20-разрядные базовые адреса 32 страниц. Каждый из базовых

Структура буфера TLB ассоциативной трансляции страничного адреса

Рис. 3.15. Структура буфера TLB ассоциативной трансляции страничного адреса

адресов имеет свой признак (тег), в качестве которого используются старшие разряды линейного адреса.

Программы не могут управлять кэшированием элементов PTE. Диспетчер памяти MMU кэширует каждый используемый элемент PTE до заполнения буфера. При заполненном TLB процессор может найти страничную информацию для 128 Кбайт физической памяти (32 страницы по 4 Кбайт). При такой емкости TLB доля кэш-попаданий составляет в среднем 98 %.

TLB состоит из модуля основной памяти, блока LRU, используемого при ее обновлении, и логики обслуживания (рис. 3.15).

Основной модуль памяти содержит 8 блоков, каждый из них содержит информацию о 4 страницах, для которых ранее производилось преобразование страничного адреса. Таким образом, основной модуль содержит 32 строки, позволяющие непосредственно, без обращения к КТС и таблице страниц, определить базовый физический адрес для одной из 32 страниц, параметры которой загружены в TLB.

Каждая строка TLB содержит информацию, необходимую для ее выбора (тег, биты, определяющие доступ к странице), и информацию о выбираемой странице (базовый адрес, атрибуты). Ее структура представлена на рис. 3.16.

Формат строки модуля основной памяти TLB

Рис. 3.16. Формат строки модуля основной памяти TLB

Поля базового адреса физической страницы и атрибуты D, U/S, R/W, PWT, PCD аналогичны соответствующим полям в ЭТС. Поле тега содержит старшие разряды линейного адреса, для которого номер виртуальной страницы преобразовывался в номер физической страницы. Бит V определяет достоверность хранимой в данной строке информации ( V = 0 -незаполненная строка, V = 1 - достоверная информация).

После формирования линейного адреса 3 младших разряда поля номера виртуальной страницы (биты 14….12 линейного адреса) определяют номер одного из 8 блоков TLB. Старшие 17 разрядов (биты 31…15) ЛА сравниваются одновременно ассоциативным образом с 17 битами тегов, содержащихся в каждой из 4 строк выбранного блока, с учетом бита достоверности V каждой строки. Если для некоторой строки сравнение прошло успешно, значит, эта строка содержит информацию по искомой физической странице. То есть для нее преобразование виртуального адреса в физический уже выполнялось, и результат этого преобразования содержится в найденной строке. Указанный в найденной строке базовый адрес обеспечивает выборку нужной физической страницы.

Если совпадения не было, то базовый адрес нужной страницы отсутствует в TLB, и преобразование страничного адреса проводится обычным путем с обращением к КТС и ТС. Полученная из таблицы страниц информация о физической странице вместе с 17 старшими разрядами линейного адреса (тег) заносится в строку одного из блоков TLB, номер которого задается битами 14…12 линейного адреса. Выбор одной из 4 строк адресованного блока, в которую заносится новое содержимое (тег, базовый адрес и др.), определяется принятым механизмом замещения.

Для TLB принят механизм замещения наиболее долго неиспользуемой строки ( least recently used - LRU ). При этом выбор замещаемой строки в блоке определяется битами B0, B1, B2 (биты LRU ), которые хранятся в дополнительном модуле памяти TLB. Этот модуль содержит 8 строк по 3 разряда каждая. Строка модуля соответствует одному из блоков основной памяти TLB. Логика обслуживания TLB переопределяет биты строки LRU по мере обращения к соответствующим строкам блока TLB.

В любой момент сочетание разрядов B0…B2 указывает, к какой из строк данного блока дольше всего не было обращения. Именно эта строка и замещается при необходимости записи новой строки, если все 4 строки блока уже заполнены. Заполненность строки определяется значением бита ее достоверности V.

При инициализации все биты B0, B1, B2 для всех блоков сбрасываются в "0". В ходе работы биты B0, B1, B2 принимают значения в соответствии с алгоритмом LRU следующим образом. Если последнее обращение в текущем блоке производилось к строкам L0 или L1, устанавливается B0 = 1. Если же оно осуществлялось к L3 или L4, то B0 = 0. При проверке пары строк L0:L1 в случае последнего обращения к L0 устанавливается B1 = 1, в противном случае B1 = 0. При проверке пары строк L2:L3 в случае последнего обращения к L2 устанавливается B2 = 1, в противном случае B2 = 0 (табл. 3.4).

Таблица 3.4. Порядок изменения бит в строке LRU
Бит LRU Последнее обращение

B0 = 1

B0 = 0

L0 или L1

L2 или L3

B1 = 1

B1 = 0

L0

L1

B2 = 1

B2 = 0

L2

L3

При поиске подлежащей замене строки в блоке, если все 4 строки достоверны, вначале проверяется, к какой из пар строк L0:L1 или L2:L3 производилось последнее обращение. Затем производится анализ внутри пары, отобранной на предыдущем этапе. Таким образом, замена строки в блоке TLB в случае, когда они все достоверны, проводится в соответствии с табл. 3.5.

Таблица 3.5. Порядок замены строк в блоке TLB
B0 B1 B2 Заменяемая строка
0 0 X L0
0 1 X L1
1 X 0 L2
1 X 1 L3

В принципе, для того чтобы задать номер одной из 4 строк, достаточно 2-разрядного кода. Но при этом механизм, определяющий строку, к которой дольше всего не было обращений, может оказаться достаточно сложным. Здесь же путем добавления всего лишь одного бита получаем прозрачный механизм как по установке этих разрядов, так и по определению строк, подлежащих замене. Хранение элементов таблиц страниц в TLB таит в себе опасность, связанную с модификацией ЭТС "на лету", то есть в ходе выполнения программы. Предположим, что в программе предусматривается вносить изменения в каталог таблиц страниц или в таблицы страниц. После подготовки необходимых таблиц и разрешения страничного преобразования процессор будет загружать ЭТС в TLB до заполнения. Затем по мере необходимости процессор заменяет старые элементы новыми. Пусть теперь программа изменила некоторый ЭТС, хранящийся в памяти. Если измененный элемент уже находится в TLB, процессор будет пользоваться его старым значением, так как он не может узнать о том, что этот элемент в памяти был модифицирован.

Для преодоления этой коллизии программисту необходимо после всей подготовки к изменению ЭТС сразу же перезагрузить регистр CR3, например, с помощью такой пары команд:

MOV EAX, CR3
MOV CR3, EAX

При любой перезагрузке регистра CR3 все биты достоверности в TLB сбрасываются ( V = 0 ), и МП будет вынужден проводить новые преобразования страничного адреса для всех страниц, загружая при этом в TLB и модифицированный ЭТС.

Аналогичные операции выполняются при отсутствии страницы в оперативной памяти ( P = 0 ), но уже операционной системой. Страничное нарушение при отсутствии страницы в оперативной памяти вызывает следующие действия:

  1. операционная система копирует запрошенную страницу с диска в оперативную память;
  2. ОС загружает адрес страничного кадра в элемент таблицы страниц или каталога таблиц страниц и устанавливает P = 1. При этом могут быть установлены и другие биты, например, R/W ;
  3. так как в TLB может оставаться копия старого ЭКТС или ЭТС, операционная система очищает его;
  4. осуществляется рестарт команды, вызвавшей страничное нарушение.

Расширение объемов обрабатываемой информации, особенно мультимедийной, вместе с увеличением функциональных возможностей микропроцессоров и микропроцессорных систем в целом, привело к существенному изменению в параметрах страниц. Современные микропроцессоры, сохраняя главную особенность страничной организации постоянство объема страницы, обеспечивают возможность использования широкого диапазона их размеров. Так, в микропроцессоре Itanium на аппаратном уровне поддерживаются страницы емкостью 4/8/16/64/256 Кбайт, 1/4/16/64/256 Мбайт.

Краткие итоги. В лекции рассмотрено физическое и логическое представление памяти. Показан общий механизм формирования физического адреса при сегментно-страничном представлении адресного пространства. Рассмотрен порядок формирования адреса блоком сегментации и блоком страничного преобразования микропроцессора. Показаны способы, обеспечивающие сокращение времени такого преобразования.

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Владислав Салангин
Владислав Салангин

приветствую создателей курса и благодарю за доступ к информации! понимаю, что это уже никто не исправит, но, возможно, будут следующие версии и было бы неплохо дать расшифровку сокращений имен регистров итд, дабы закрепить понимание их роли в общем процессе. 

Михаил Королёв
Михаил Королёв