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