2016-11-17 2 views
1

На веб-странице wiki (https://en.wikipedia.org/wiki/Sandy_Bridge) указано, что Data TLB имеет 64, 32 и 4 записи соответственно для страниц 4 КБ, 2 МБ и 1 ГБ.Как определяется размер TLB в процессоре Intel Sandy Bridge?

Я нашел эти цифры трудно понять. Sandy Bridge имеет виртуальный адрес 48 бит, что означает, что для страницы 4K может быть 2^36 страниц, а для страниц 2 МБ и 1 ГБ должно быть 2^27 и 2^18 страниц. Если TLB имеет 64 записи для страницы 4K, размер каждой записи должен быть не менее 6 + 36 = 42 бит. Почему на странице 2M есть только 32 записи вместо 2^15 (42-27) записей?

Я знаю, что в записях TLB будут дополнительные биты для целей управления. Но не должно ли это пространство быть постоянным для разных размеров страницы?

ответ

4

Becuase они разные TLBs.
Выполнение cpuid с EAX = 2 на моем Haswell и декодирование дескрипторы TLB получает:

Инструкция TLB:
                            2М/4М страницы, полностью ассоциативные, 8 записей
                            4KByte страниц, 8-полосная, 64 записей

данных TLB:
                            2М/4М страниц, 4-полосные, 32 записей и отдельный массив с 1 Гбайт страниц, 4-пути, 4 записей
                            4 КБайт страниц, 4-полосная, 64 записей

Shared второго уровня TLB:
                            4 K/2M страниц, 8-позиционная, 1024 записей

TLB кэш является высоко специализированный CAM с фиксированной планировкой, это не память с памятью общего назначения.

Некоторые TLB могут обрабатывать больше одного размера страницы, но это компромиссы, поскольку информация кэшируется в общем формате.
Наличие разных TLB, обрабатывающих разные размеры страниц, улучшает хиты кеша, как и DTLB и ITLB.

Кадры данных работают по-разному, так как они не кэшируют информацию, они кэшируют данные без макета, поэтому имеет смысл указать размер в KiB для них, но это не для кэшей, которые имеют дело со структурированной информацией.

+0

Это действительно имеет смысл! Спасибо. – Harper

Смежные вопросы