Ассоциативность КЭШа - Assembler
Формулировка задачи:
Подскажите пожалуйста, как определить ассоциативность КЭШа второго уровня, использую cpuid ?
У меня есть код вызова моей функции из dll библиотеки:
Что надо передать, чтобы получить нужную мне информацию?
Как правильно обработать результат?
Облазил кучу сайтов, но так ничего не нашел.
P.s. В программировании новичок.
//Информацию о КЭШе int CacheInfo[4]; //Вызываем функцию и получаем информацию о КЭШе gPrInf(CacheInfo, ?);
// Определяем наличие Ассоциативности
extern "C" __declspec(dllexport)
void cpuid(int rgs[4], int func)
{
int ieax, iebx, iecx, iedx;
__asm
{
mov eax, func
cpuid
mov ieax, eax
mov iebx, ebx
mov iecx, ecx
mov iedx, edx
}
rgs[0] = ieax;
rgs[1] = iebx;
rgs[2] = iecx;
rgs[3] = iedx;
}Решение задачи: «Ассоциативность КЭШа»
textual
Листинг программы
int cacheAssoc = CacheInfo[0] & 0x200;
Объяснение кода листинга программы
- Переменная
cacheAssocиспользуется для хранения информации о связности кэша. - Значение переменной
cacheAssocполучается путем применения операции побитового И (AND) к значению поляCacheInfo[0]и числу 0x200. - Поле
CacheInfo[0]содержит информацию о связности кэша. - Число 0x200 является маской, которая определяет, какая часть информации о связности кэша будет использоваться.
- Результат операции побитового И будет содержать только информацию о связности кэша, без других дополнительных данных.