Как найти размер кэша процессора для процессора x86 - PullRequest
2 голосов
/ 29 сентября 2010

Я хочу найти размер кэша процессора кэшей L1 или L2, используя язык ассемблера x86. Я слышал, что регистры cpuid и MSR содержат системные данные. Может кто-нибудь помочь мне, как я могу получить размеры, пожалуйста.

Ответы [ 3 ]

3 голосов
/ 29 сентября 2010

Вот минимальный пример того, как вы могли бы найти его, используя инструкцию CPUID :

#include <stdio.h>
#include <limits.h>

#define cpuid(id) __asm__( "cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "a"(id), "b"(0), "c"(0), "d"(0))
#define b(val, base, end) ((val << (__WORDSIZE-end-1)) >> (__WORDSIZE-end+base-1))

int main(int argc, char **argv)
{
        unsigned long eax, ebx, ecx, edx;

        cpuid(0);
        printf("identification: \"%.4s%.4s%.4s\"\n", (char *)&ebx, (char *)&edx, (char *)&ecx);

        printf("cpu information:\n");

        cpuid(1);
        printf(" family %ld model %ld stepping %ld efamily %ld emodel %ld\n",
                        b(eax, 8, 11), b(eax, 4, 7), b(eax, 0, 3), b(eax, 20, 27), b(eax, 16, 19));
        printf(" brand %ld cflush sz %ld*8 nproc %ld apicid %ld\n",
                        b(ebx, 0, 7), b(ebx, 8, 15), b(ebx, 16, 23), b(ebx, 24, 31));

        cpuid(0x80000006);
        printf("L1 cache size (per core): %ld KB\n", b(ecx, 16, 31));

        return(0);
}
1 голос
/ 29 сентября 2010

Вы можете использовать инструкцию CPUID . Если вы установите регистр EAX на определенные значения, вы можете получить необходимую информацию в регистрах EAX, EBX, ECX и EDX.

Вы можете получить больше информации в этом руководстве от AMD.

0 голосов
/ 29 сентября 2010

Как предполагает Соравукс, интродукция CPUID - это то, на что вы захотите взглянуть. (Возможно, вы захотите взглянуть на CPUID, например, в Руководстве разработчика программного обеспечения для архитектуры Intel 64 и IA-32, том 2A, здесь ).

Функции, которые вам, вероятно, будут наиболее интересны: CPUID.EAX=02h и / или CPUID.EAX=04h (в зависимости от ваших конкретных потребностей). Эти функции обеспечивают довольно большую производительность, поэтому я не буду вдаваться в подробности, но руководства Intel и AMD должны содержать все, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...