Как получить размер страницы TLB с помощью cpuid

Для Intel я использую:

mov, eax, 2h
cpuid

он дает "значение декодирования дескриптора" - хорошо;

Для AMD я использую:

mov, eax, 80000005h
cpuid

Это дает ассоциативность и записи для 4 МБ в eax (4 КБ в ebx).

Вот :

EAX = FF30FF10 EBX = FF30FF20" FF - полная ассоциированная информация, 48 записей данных, FF - полная ассоциированная инструкция, 16 записей инструкции

Так у меня и 4Кб и 4Мб что ли?

P.S. я прав, страница TLB и кеш L1 - разные вещи? Или, может быть, L1 инстр. размер кеша мне нужен?


person Array Gcnew    schedule 22.05.2012    source источник
comment
Насколько я понимаю, современные архитектуры предлагают как 4кБ, так и 4МБ.   -  person Oliver Charlesworth    schedule 22.05.2012
comment
Это означает, что если я просто получу правильный вывод в EAX\EBX, я могу сказать, что это 4MB\4KB?   -  person Array Gcnew    schedule 22.05.2012
comment
Моя мисс, amd docs говорит о страницах размером 2 МБ или 4 МБ. Размеры кэша TLB составляют 64 элемента, что означает, что если L1 = 64 КБ, то размер страницы TLB = 64 * 64 КБ?   -  person Array Gcnew    schedule 22.05.2012
comment
Спасибо за помощь, но теперь я запутался :) У меня есть задачи для TLB: 1) ассоциативность, 2) записи, 3) размер. Как я должен ответить о размере?   -  person Array Gcnew    schedule 22.05.2012


Ответы (1)


Эта запись в Википедии может помочь вам прояснить некоторую путаницу с различными размерами TLB. Это под заголовком «Несколько TLB»:

Например, микроархитектура Nehalem от Intel имеет ассоциативную L1 DTLB с четырьмя путями с 64 записями для страниц по 4 КиБ и 32 записи для страниц по 2/4 МиБ, ITLB L1 со 128 записями для страниц по 4 КиБ с использованием четырехсторонней ассоциативности и 14 полностью ассоциативные записи для страниц размером 2/4 МБ (обе части ITLB статически разделены между двумя потоками)1 и унифицированный TLB L2 с 512 записями для страниц 4 KiB,[2] оба 4-канальные ассоциативные.[3]

person Jason    schedule 01.12.2012