реклама на сайте
подробности

 
 
> Как работает TLB с разными размерами страниц?
ataradov
сообщение Feb 26 2013, 06:24
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Не нашел более подходящего под-форума, тут есть шанс, что кто-то знает sm.gif

Рассмотрм работу MMU в 32-х разрядной системе. Допустим размер страницы 1кБ (10 бит). Пусть TLB содержит 64 записи (6 бит).

Тогда таблица TLB будет иметь 64 записи следующего вида: | Tag (16) | PhysAddr (22) |

Для преобразования VA -> PA разбиваем VA: | Tag (16) | Index (6) | Offset (10) |. По индексу находим запись в TLB и сравниваем тэги, если совпало, то формируем PA как | PhysAddr (22) | Offset (10) |.

До сюда все понятно. Но многие архитектуры выделяют несколько разных размеров страниц. Для примера сделаем "большую" страницу 2 кб (11 бит). Тогда для сохранения логики TLB нужно оставить прежним, а новые страницы будут занимать 2 записи с почти одинаковым физическим адресом.

Похоже на бред, так как от таких страниц ничего не выигрывается. Что я упускаю? Как транслировать более грубые страницы без значительного усложнения логики TLB?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jks
сообщение Feb 26 2013, 17:31
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 3-04-11
Из: .
Пользователь №: 64 084



Цитата(Taradov Alexander @ Feb 26 2013, 10:24) *
Что я упускаю? Как транслировать более грубые страницы без значительного усложнения логики TLB?


У Интела в х86 преобразование в плоском режиме (Flat addressing) выполняется в два этапа.
Сначала привлекается селектор сегмента, у которого есть теневой регистр с битом гранулярности.
Этот бит определяет размер страниц при трансляции. А потом через каталог таблицы страниц.

А в вашем случае расширить поле тега и загружать бит гранулярности из дескрипторов каталога страниц.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Feb 26 2013, 17:48
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Но это не отменит того, что первый бит поля Index (6) всегда будет содержать 0 для адресов из первой половины большой страницы и 1 для второй половины.

По-хорошему VA нужно разбивать так | Tag (15) | Index (6) | Offset (11) |, но заранее неизвестно в большой или маленькой странице адрес.

Как происходит заполнение TLB из памяти понятно, но не ясно как поможет дополнительный бит в теге если запись из TLB уже выбрали по "маленькому" индексу.
Go to the top of the page
 
+Quote Post
jks
сообщение Feb 26 2013, 19:03
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 3-04-11
Из: .
Пользователь №: 64 084



Цитата(Taradov Alexander @ Feb 26 2013, 21:48) *
Но это не отменит того, что первый бит поля Index (6) всегда будет содержать 0 для адресов из первой половины большой страницы и 1 для второй половины.

По-хорошему VA нужно разбивать так | Tag (15) | Index (6) | Offset (11) |, но заранее неизвестно в большой или маленькой странице адрес.

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


Ну все правильно.
Но кроме Tag [14:0] есть еще скрытый бит поля Tag [15], который будет определять какого размера будут поля Index и Offset.
А загружаться этот бит будет из дескриптора каталога страниц первого уровня по индексу Tag [14:0] .
Если в дескрипторе по данному индексу будет поле указывающее размер страниц 0 - обычная, 1 - большая, то при загрузке кэша TLB загрузится и скрытый
бит Tag [15], который будет управлять размером индексов страничного преобразования.
Если бит 0 то Index (6) | Offset (11) определяют 64 страницы по 2048,
Если бит 1 то Index (5) | Offset (12) определяют 32 страницы по 4096.

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 06:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016