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

Буферы быстрого преобразования адреса. Ассоциативная память

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

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

32. Инвертированные таблицы страниц.

Традиционные таблицы страниц требуют по одной записи для каждой виртуальной страницы. Для 32-разрядного виртуального адресного пространства и страницы размером в 4к таблицы страниц займет 4Мб. Для 64-разрядного адресного пространства таблица займет порядка 15Тб. Чтобы решить эту проблему используются инвертированные таблицы страниц. В такой модели таблица содержит по одной записи на каждый страничный блок. Тогда для 64-разрядного виртуального адресного пространства при 256Мб оперативной памяти с размером страничного блока 4к, таблица страниц займет 4б*64к (менее 1Мб). Хотя инвертированные таблицы экономят много места, усложняется процесс перевода виртуального адреса в физический. Когда процесс N обращается к виртуальной странице P, аппаратное обеспечение не сможет найти физическую страницу используя только номер P в качестве индекса. Вместо этого поиск должен производиться по паре (N,P) во всей инвертированной таблице. Кроме того поиск должен выполняться при каждом обращении к памяти. Ускорить процесс можно с помощью ассоциативной памяти. Буфер TLB может содержать все часто используемые страницы. В этом случае поиск будет проходить так же быстро, как и с обычными таблицами. Однако, при неудачном поиске придется программно искать пару во всей инвертированной таблице. Усовершенствовать такой поиск можно с помощью хэш-таблицы виртуальных страниц. Все виртуальные страницы, которые находятся в данный момент в памяти и имеют одинаковое значение хэш-функции, сцепляются друг с другом.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: