
Рассмотрм работу 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?