HI,
Se eu executar isso em um Dell T410, que tem dois processadores Xeon E5530 Quad Core, recebo a saída mostrada abaixo:
mov eax, 4
mov ebx, 0
mov ecx, 0
mov edx, 0
CPUID
; at this point eax=0x1c004121, ebx=0x1c0003f, ecx=0x3f, edx=0x0
De acordo com a Intel AP-485: "O BIOS usará essa função para determinar o número de núcleos implementados em um pacote de processador físico específico. Para fazer isso, o BIOS deve inicialmente definir o registro EAX como 4 e o ECX como 0 antes de executar a instrução CPUID.Depois de executar a instrução CPUID, (EAX [31:26] + 1) contém o número de núcleos. "
Como você pode ver, o EAX [31:26] é 7, então este pacote tem 8 núcleos. Mas eu sei que só tem 4. Alguém pode me dizer como determinar o número de núcleos em processadores Intel que funciona para o E5530?
A propósito, o número de processadores lógicos parece ser 16, o que eu esperaria que este processador fosse hyperthreaded. Mas mais uma vez eu sei que na verdade tem apenas 8 processadores lógicos.
Se eu executar a instrução CPUID para todas as funções suportadas, obtenho:
cpuid function, eax, ebx, ecx, edx
0x0, 0xb, 0x756e6547, 0x6c65746e, 0x49656e69,
0x1, 0x106a5, 0x7100800, 0x9ce3bd, 0xbfebfbff,
0x2, 0x55035a01, 0xf0b2e4, 0x0, 0x9ca212c,
0x3, 0x0, 0x0, 0x0, 0x0,
0x4, 0x1c004121, 0x1c0003f, 0x3f, 0x0,
0x5, 0x40, 0x40, 0x3, 0x1120,
0x6, 0x3, 0x2, 0x1, 0x0,
0x7, 0x0, 0x0, 0x0, 0x0,
0x8, 0x0, 0x0, 0x0, 0x0,
0x9, 0x0, 0x0, 0x0, 0x0,
0xa, 0x7300403, 0x44, 0x0, 0x603,
0xb, 0x1, 0x2, 0x100, 0x7,
0x80000000, 0x80000008, 0x0, 0x0, 0x0,
0x80000001, 0x0, 0x0, 0x1, 0x28100000,
0x80000002, 0x65746e49, 0x2952286c, 0x6f655820, 0x2952286e,
0x80000003, 0x55504320, 0x20202020, 0x20202020, 0x45202020,
0x80000004, 0x30333535, 0x20402020, 0x30342e32, 0x7a4847,
0x80000005, 0x0, 0x0, 0x0, 0x0,
0x80000006, 0x0, 0x0, 0x1006040, 0x0,
0x80000007, 0x0, 0x0, 0x0, 0x100,
0x80000008, 0x3028, 0x0, 0x0, 0x0,