Ассоциативность КЭШа - 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 является маской, которая определяет, какая часть информации о связности кэша будет использоваться.
- Результат операции побитового И будет содержать только информацию о связности кэша, без других дополнительных данных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д