Ассоциативность КЭШа - Assembler

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста, как определить ассоциативность КЭШа второго уровня, использую cpuid ? У меня есть код вызова моей функции из dll библиотеки:
//Информацию о КЭШе
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;
}
Как правильно обработать результат? Облазил кучу сайтов, но так ничего не нашел. P.s. В программировании новичок.

Решение задачи: «Ассоциативность КЭШа»

textual
Листинг программы
int cacheAssoc = CacheInfo[0] & 0x200;

Объяснение кода листинга программы

  1. Переменная cacheAssoc используется для хранения информации о связности кэша.
  2. Значение переменной cacheAssoc получается путем применения операции побитового И (AND) к значению поля CacheInfo[0] и числу 0x200.
  3. Поле CacheInfo[0] содержит информацию о связности кэша.
  4. Число 0x200 является маской, которая определяет, какая часть информации о связности кэша будет использоваться.
  5. Результат операции побитового И будет содержать только информацию о связности кэша, без других дополнительных данных.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5