CPUID
CPUID je symbolické pojmenování strojové instrukce na architektuře x86, která umožňuje zjistit informace o procesoru. Toto pojmenování je odvozeno z anglického CPU IDentification. Instrukce se prvně objevila na procesorech Intel 80486. Na novějších procesorech poskytuje tato instrukce stále více informací.
Instrukce se typicky využívá ke zjištění podpory instrukcí MMX nebo SSE, dále ke zjištění výrobce a modelu procesoru, velikosti paměti cache, sériového čísla procesoru. Instrukcí není možné zjistit takt procesoru. Informace vrácené instrukcí se z části liší u procesorů společností Intel a AMD. Dříve platilo, že procesory AMD poskytovaly větší množství informací (např. o velikostech L1 a L2 cache).
Operační kód instrukce je 0FA2h
. Obsah registru EAX při volání instrukce určuje, kterou informaci má procesor vrátit. Před použitím instrukce je nutné si ověřit, zda ji procesor podporuje. Program může použít CPUID k určení typu procesoru a zda jsou implementovány funkce jako MMX/SSE.
Ukázka kódu
Úsek kódu v MASM zjišťující podporu instrukce CPUID a testující, zda se jedná o procesor AMD porovnáním obsahu registrů EBX, EDX a ECX s řetězcem AuthenticAMD
:
; zjištění podpory instrukce CPUID pushfd pop eax mov ebx, eax xor eax, 00200000h push eax popfd pushfd pop eax cmp eax, ebx jz l_NoCPUID ; instrukce je podporována ; ... jmp l_EndCPUID l_NoCPUID: ; instrukce není podporována jmp l_EndCPUInfo l_EndCPUID: ; zjištění maximální podporované funkce a výrobce procesoru mov eax, 0 cpuid ; zjištění, zda se jedná o AMD .if ( ebx == 68747541h ) && ( edx == 69746E65h ) && ( ecx == 444D4163h ) ; jedná se o AMD ; ... .else ; není to AMD .endif
Externí odkazy
- Manuál k instrukci:
- Intel (PDF)
- AMD (PDF)
![]() | Tento článek je příliš stručný nebo postrádá důležité informace. Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty. |