Буферы быстрого преобразования адреса

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

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

Найденное решение состояло в оснащении компьютеров небольшим устройством для отображения виртуальных адресов на физические без просмотра таблицы страниц. Состояние этого устройства, названного буфером быстрого преобразования адреса (Translation Lookaside Buffer (TLB)), которое иногда еще называют ассоциативной памятью, показано в табл. 3.1. Зачастую это устройство находится внутри диспетчера памяти и состоит из небольшого количества записей. В данном примере их 8, но их количество редко превышает 64. Каждая запись содержит информацию об одной странице, включающую номер виртуальной страницы, бит, устанавливающийся при модификации страницы, код защиты (разрешение на чтение, запись и выполнение) и физический страничный блок, в котором расположена страница. Эти поля имеют точное соответствие полям в таблице страниц, за исключением номера виртуальной страницы, который в таблице страниц не нужен.

Еще один бит показывает задейство- ванность страницы (то есть используется она или нет).

Пример, который мог бы сформировать TLB, показанный в табл. 3.1, — это циклический процесс, занимающий виртуальные страницы 19, 20 и 21, поэтому их записи в TLB имеют коды защиты, разрешающие чтение и исполнение. Основные данные, используемые в этот момент (скажем, обрабатываемый массив), занимают страницы 129 и 130. Страница 140 содержит индексы, используемые при вычислениях, производимых с элементами массива. И наконец, стек занимает страницы 860 и 861.

Таблица 3.1. Буфер быстрого преобразования адреса, используемый для ускорения страничного доступа к памяти


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

Нас интересует, что же произойдет, если номер виртуальной страницы не будет найден в TLB. Диспетчер памяти обнаруживает его отсутствие и осуществляет обычный поиск в таблице страниц. Затем он выселяет одну из записей в TLB, заменяя ее только что найденной записью из таблицы страниц. Поэтому, если вскоре эта страница будет востребована снова, то во второй раз она уже будет найдена в TLB. Когда запись удаляется из TLB, бит модификации копируется обратно в таблицу страниц, находящуюся в памяти. Другие значения, за исключением бита ссылки, там уже присутствуют. Когда TLB загружается из таблицы страниц, все поля берутся из памяти.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Буферы быстрого преобразования адреса:

  1. Письма без адреса
  2. Посылайте молитву по верному адресу.
  3. 7. Посылайте свою молитву по верному адресу
  4. Статья 108. Преобразование юридического лица
  5. 25. Преобразование хозяйственных товариществ и обществ (корпораций)
  6. Преобразование
  7. СОН БЫСТРЫЙ
  8. Быстрые и медленные планеты
  9. 3. Приватизация предприятий путем их преобразования в акционерные общества
  10. Статья 106. Слияние, присоединение, деление и преобразование юридического лица
  11. 5.10.4. Быстрое создание отправного пункта
  12. Быстрый вызов желаемого
  13. ГЛАВА 1. ЖУРНАЛИСТСКИЙ ТЕКСТ И СОЦИАЛЬНАЯ ДЕЙСТВИТЕЛЬНОСТЬ: ПОЗНАНИЕ, ОТРАЖЕНИЕ, ПРЕОБРАЗОВАНИЕ
  14. 3.2.4. Ошибка, состоящая в быстрых переходах