↑Revision 1.00 of AMD's CPPC Performance Priority specification listed the feature as being indicated by bit 27 of EDX[218] - this was corrected to bit 16 in later revisions.[217]
EAX=8000'0008h: Virtual and Physical Address Sizes
↑Early revisions of AMD's "Pacifica" documentation listed EAX bit 8 as an always-zero bit reserved for hypervisor use.[226]
Later AMD documentation, such as #25481 "CPUID specification" rev 2.18[227] and later, only lists the bit as reserved.
In rev 2.30[228] and later, a different bit is listed as reserved for hypervisor use: CPUID.(EAX=1):ECX[bit 31].
↑EDX bit 9 is briefly listed in some older revisions of AMD's document #25481 "CPUID Specification", and is set only in some AMD Bobcat CPUs.[229]
Rev 2.28 of #25481 lists the bit as "Ssse3Sse5Dis"[230] - in rev 2.34, it is listed as having been removed from the spec at rev 2.32 under the name "SseIsa10Compat".[231]
EAX=8000'001Fh: Encrypted Memory Capabilities
EAX=8000'0021h: Extended Feature Identification
↑On Intel processors, support for the instruction-cache prefetch instructions is not indicated by CPUID.(EAX=8000_0021h):EAX[20] but instead by CPUID.(EAX=7,ECX=1):EDX[14].
↑If the downgrade from 512-bit to 256-bit datapath is enabled, then AVX-512 instructions that work on 512-bit data items will be split into two 256-bit parts that will be issued over two consecutive cycles. This datapath downgrade can help improve power efficiency for some workloads.[238]
EAX=8000'0025h: Encrypted Memory Capabilities 2
EAX=8C86'0000h: Hygon Extended Feature Flags
Returns index of highest Hygon feature leaf in EAX (valid if greater than or equal to 8C860000h),[246] and Hygon feature flags in EDX.[247]
EAX=8FFF'FFFEh and EAX=8FFF'FFFFh: AMD Easter Eggs
Several AMD CPU models will, for CPUID with EAX=8FFF'FFFFh, return an Easter egg string in EAX, EBX, ECX and EDX.[248][249] Known Easter Egg strings include:
Additionally, AMD K6 CPUs will, for CPUID with EAX=8FFF'FFFEh, return an Easter egg reference to "DEI" in EAX.[251]
On IDT WinChip CPUs (CentaurHauls Family 5), the extended leaves C0000001h-C0000005h do not encode any Centaur-specific functionality but are instead aliases of leaves 80000001h-80000005h.[252]
EAX=C000'0002h: Centaur Extended CPUID Performance Data
This leaf returns information about CPU voltage, temperature, clock multipliers and power-on settings for VIA C7 processors in EAX, EBX, ECX and EDX.[258]
↑On the VIA C7, if the on-chip temperature sensor has been turned off, then EAX will return 0.
EAX=C000'0006h, ECX=0: Zhaoxin Feature Information
This sub-leaf returns feature information in EAX. EBX, ECX and EDX are reserved.
12As of April 2026, bits 1 and 3 of EAX are not listed in any known public Zhaoxin documentation, but have been observed to be set on some KaiXian KX-7000 "Shijidadao" processors.[260]
CPUID usage from high-level languages
Inline assembly
This information is easy to access from other languages as well. For instance, the C code for gcc below prints the first five values, returned by the cpuid:
In MSVC and Borland/Embarcadero C compilers (bcc32) flavored inline assembly, the clobbering information is implicit in the instructions:
#include<stdio.h>intmain(){unsignedinta,b,c,d,i=0;__asm{/* Do the call. */movEAX,i;cpuid;/* Save results. */mova,EAX;movb,EBX;movc,ECX;movd,EDX;}printf("InfoType %x\nEAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n",i,a,b,c,d);return0;}
If either version was written in plain assembly language, the programmer must manually save the results of EAX, EBX, ECX, and EDX elsewhere if they want to keep using the values.
Wrapper functions
GCC also provides a header called <cpuid.h> on systems that have CPUID. The __cpuid is a macro expanding to inline assembly. Typical usage would be:
But if one requested an extended feature not present on this CPU, they would not notice and might get random, unexpected results. Safer version is also provided in <cpuid.h>. It checks for extended features and does some more safety checks. The output values are not passed using reference-like macro parameters, but more conventional pointers.
#include<stdio.h>#include<cpuid.h>intmain(){unsignedinteax,ebx,ecx,edx;/* 0x81234567 is nonexistent, but assume it exists */if(!__get_cpuid(0x81234567,&eax,&ebx,&ecx,&edx)){printf("Warning: CPUID request 0x81234567 not valid!\n");return1;}printf("EAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n",eax,ebx,ecx,edx);return0;}
Notice the ampersands in &a, &b, &c, &d and the conditional statement. If the __get_cpuid call receives a correct request, it will return a non-zero value, if it fails, zero.[261]
Microsoft Visual C compiler has builtin function __cpuid() so the cpuid instruction may be embedded without using inline assembly, which is handy since the x86-64 version of MSVC does not allow inline assembly at all. The same program for MSVC would be:
Many interpreted or compiled scripting languages are capable of using CPUID via an FFI library. One such implementation shows usage of the Ruby FFI module to execute assembly language that includes the CPUID opcode.
.NET 5 and later versions provide the System.Runtime.Intrinsics.X86.X86base.CpuId method. For instance, the C# code below prints the processor brand if it supports CPUID instruction:
usingSystem.Runtime.InteropServices;usingSystem.Runtime.Intrinsics.X86;usingSystem.Text;namespaceX86CPUID{classCPUBrandString{publicstaticvoidMain(string[]args){if(!X86Base.IsSupported){Console.WriteLine("Your CPU does not support CPUID instruction.");}else{Span<int>raw=stackallocint[12];(raw[0],raw[1],raw[2],raw[3])=X86Base.CpuId(unchecked((int)0x80000002),0);(raw[4],raw[5],raw[6],raw[7])=X86Base.CpuId(unchecked((int)0x80000003),0);(raw[8],raw[9],raw[10],raw[11])=X86Base.CpuId(unchecked((int)0x80000004),0);Span<byte>bytes=MemoryMarshal.AsBytes(raw);stringbrand=Encoding.UTF8.GetString(bytes).Trim();Console.WriteLine(brand);}}}}
CPU-specific information outside x86
Some of the non-x86 CPU architectures also provide certain forms of structured information about the processor's abilities, commonly as a set of special registers:
System/370 through z/Architecture IBM mainframe processors have a supervisor-mode-only Store CPU ID (STIDP) instruction, which provides information that includes the CPU type.[263][264]:10-147–10-149
The z/Architecture mainframe processors also have a supervisor-mode-only Store Facilities List (STFL)[264]:10-149 instruction, and a non-privileged Store Facilities List Extended (STFLE) instruction,:7-394–7-395 which list the installed hardware features.
The MIPS32/64 architecture defines a mandatory Processor Identification (PrId) and a series of daisy-chained Configuration Registers.[265]
The PowerPC processor has the 32-bit read-only Processor Version Register (PVR) identifying the processor model in use. The instruction requires supervisor access level.[266]
The RISC-V architecture has an mcpuid "read-only register containing information regarding the capabilities of the CPU implementation"[267]
DSP and transputer-like chip families have not taken up the instruction in any noticeable way, in spite of having (in relative terms) as many variations in design. Alternate ways of silicon identification might be present; for example, DSPs from Texas Instruments contain a memory-based register set for each functional unit that starts with identifiers determining the unit type and model, its ASIC design revision and features selected at the design phase, and continues with unit-specific control and data registers. Access to these areas is performed by simply using the existing load and store instructions; thus, for such devices, there is no need for extending the register set for device identification purposes.
See also
sandpile.org, the world's leading source for technical x86 processor information
x86-cpuid.org, a complete x86 architecture CPUID database plus related code generation tools, to be used by both the Linux Kernel and the Xen hypervisor.[268]
CPU-Z, a Windows utility that uses CPUID to identify various system settings
CPU-X, an alternative of CPU-Z for Linux and FreeBSD
123Debbie Wiles, CPU Identification, archived on 2006-06-04
↑B-CoolWare, TMi0SDGL x86 CPU/FPU detection library with source code, v2.15, June 2000 - see /SOURCE/REALCODE.ASM for a large collection of pre-CPUID x86 CPU detection routines. Archived on 14 Mar 2023.
↑instlatx64. "CPUID dump for RDC IAD 100". Archived from the original on 5 December 2019. Retrieved 22 December 2022.{{cite web}}: CS1 maint: numeric names: authors list (link)
↑@InstLatX64 (February 28, 2019). "First encounter with "GenuineIotel" (o after I, instead of n)" (Tweet) – via Twitter.
↑"GenuineIotel CPUID dump for Intel Xeon E3-1231". instlatx64. Archived from the original on 7 December 2019.
↑Grzegorz Mazur, Identification of x86 CPUs with CPUID support, 5 May 1997. Archived from the original on 24 May 1997.
↑Ingo Böttcher, CPUDET.PAS v1.61, 23 Oct 1996 - CPU identification program that tests for "AMD ISBETTER" string. Archived on 26 Apr 2024.
↑sorgelig (Aug 3, 2017). "ao486 CPUID instruction (in commit 43a2004)". GitHub. Archived from the original on 2023-12-04. Retrieved 2023-12-04.
12sorgelig (Aug 30, 2020). "Update cpuid. · MiSTer-devel/ao486_MiSTer@82f5014". GitHub. Archived from the original on 2023-12-04. Retrieved 2023-12-04.
↑sorgelig (Aug 30, 2020). "ao486 CPUID instruction". GitHub. Archived from the original on October 23, 2023. Retrieved 4 Dec 2023.
↑"v586: 586 compatible soft core for FPGA". GitHub. 6 December 2021.
1234smxi, Inxi issue 197: Elbrus CPU support data and implementation. Retrieved 23 October 2023. Archived on 23 October 2023.
↑Peter Ferrie, Attacks on More Virtual Machine Emulators, page 5. Archived on 15 Feb 2010.
12Amit Singh, Miscellaneous, see Solaris section. Archived from the original on 10 Dec 2004.
1234Darek Mihocka, ARM64 Boot Camp: Understanding x86/x64 Emulation on Windows on ARM, 28 Jan 2024, see "Probing CPUID" section. Archived on 24 Feb 2024.
↑"Fun with Timers and cpuid - by Jim Cownie - CPU fun". 3 March 2021. Archived from the original on 3 March 2021.
↑Insignia Solutions, RealPC Installation and User’s Guide, 1997, p. 71. Archived from the original on 28 Nov 2015.
↑Philippe Geneste, (INFO) Emulation PC sur Mac (in French), 21 Jan 1998. Archived on 24 Jun 2025.
↑Insignia Solutions, SoftWindows 98 Installation and User's Guide, 1998, p. 127. Archived from the original on 25 Nov 2015.
↑VOGONS discussion thread "SIV support for 386/486/586 class + Alpha CPUs and 3dfx + S3 + SiS + Matrox + XGI + old ATI + NVidia GPUs - Testing Help", post by lolo799 on 2021-09-12 17:10 — see SIV32L attachments for a screenshot and a CPUID dump listing the "Compaq FX!32" string. Archived on 19 May 2024.
↑Neko Project 21/W, help/configure (in Japanese). Archived on 22 Sep 2024.
↑CPU-World, CPUID for emulated Neko Project CPU with "Neko Project" string. Archived on 16 Nov 2025.
↑iXBT Labs, VIA Nano CPUID Tricks, Aug 26, 2010. Archived on Aug 29, 2010.
↑IDT, WinChip 2A data sheet, v1.0, Jan 1999, page A-3.
↑AMD, Geode LX Data Book, pub.id. 33234H, Feb. 2009, page 107. Archived on Dec 3, 2023.
↑DM&P, Vortex86EX2_A9133_Master_Data_Sheet_V11_BF, May 8, 2019, page 72.
↑"Chapter 3 Instruction Set Reference, A-L"(PDF). Intel 64 and IA-32 Architectures Software Developer's Manual. Intel Corporation. 2018-12-20. Retrieved 2018-12-20.
↑Intel, Pentium Processor Family Developer's Manual, 1997, order no. 241428-005, sections 3.4.1.2 (page 91), 17.5.1 (page 489) and appendix A (page 522) provide more detail on how the "processor type" field and the "dual processor" designation work.
↑InstLatx64 (17 May 2026). "x86, x64 Instruction Latency, Memory Latency and CPUID dumps".{{cite web}}: CS1 maint: numeric names: authors list (link)
↑AMD, Enhanced Am486DX Microprocessor Family, pub.no. 20736 rev B, March 1997, section 9.2.2, page 55. Archived on 18 Oct 2023.
↑AMD, ÉlanSC400 and ÉlanSC410 Microcontrollers User's Manual, pub.no. 21030, 1997, section 3.6.2, page 73. Archived on 18 Oct 2023.
↑Intel, AP-485 Application Note - Intel Processor Identification and the CPUID Instruction, order no. 241618-006, march 1997, table 5 on page 10, see bit 10.
↑Michal Necasek, SYSENTER, Where Are You?, OS/2 Museum, July 20, 2017
↑Intel, TDX module source code, v1.0.03.03, 22 Jun 2023, see src/common/helpers/smrrs.h. Archived on 20 Jan 2025.
↑Intel, Trust Domain CPU Architectural Extensions, order no. 343754-002, may 2021. Archived on 17 Dec 2024.
↑Intel, Pentium 4 Processor on 90 nm Process Specification Update, order no. 302352-031, sep 2006, see erratum R85 on page 59. Archived on 31 Dec 2008.
↑Geoff Chappell, ECX From CPUID Leaf 1, Jan 26, 2020. Archived on May 9, 2020.
↑Huggahalli, Ram; Iyer, Ravi; Tetrick, Scott (2005). "Direct Cache Access for High Bandwidth Network I/O". ACM SIGARCH Computer Architecture News. 33 (2): 50–59. CiteSeerX10.1.1.85.3862. doi:10.1145/1080695.1069976. CiteSeerX:10.1.1.91.957.
↑Drepper, Ulrich (2007), What Every Programmer Should Know About Memory, CiteSeerX:10.1.1.91.957
12Intel, Itanium Architecture Software Developer's Manual, rev 2.3, volume 4: IA-32 Instruction Set, may 2010, document number: 323208, table 2-5, page 4:81, see bits 20 and 30. Archived on Feb 15, 2012.
↑Intel, AP-485, Processor Identification and the CPUID Instruction flag, rev 30, jan 2006, page 26
↑Michal Necasek, HTT Means Hyper-Threading, Right?, OS/2 Museum, dec 11, 2017
↑"Mechanisms to determine if software is running in a VMware virtual machine". VMware Knowledge Base. VMWare. 2015-05-01. Intel and AMD CPUs have reserved bit 31 of ECX of CPUID leaf 0x1 as the hypervisor present bit. This bit allows hypervisors to indicate their presence to the guest operating system. Hypervisors set this bit and physical CPUs (all existing and future CPUs) set this bit to zero. Guest operating systems can test bit 31 to detect if they are running inside a virtual machine.
↑Kataria, Alok; Hecht, Dan (2008-10-01). "Hypervisor CPUID Interface Proposal". LKML Archive on lore.kernel.org. Archived from the original on 2019-03-15. Bit 31 of ECX of CPUID leaf 0x1. This bit has been reserved by Intel & AMD for use by hypervisors and indicates the presence of a hypervisor. Virtual CPU's (hypervisors) set this bit to 1 and physical CPU's (all existing and future CPU's) set this bit to zero. This bit can be probed by the guest software to detect whether they are running inside a virtual machine.
↑"AMD64 Technology AMD64 Architecture Programmer's Manual Volume 2: System Programming"(PDF) (3.41ed.). Advanced Micro Devices, Inc. p.498. 24593. Archived from the original(PDF) on 30 Sep 2023. Retrieved 9 September 2023. 15.2.2 Guest Mode This new processor mode is entered through the VMRUN instruction. When in guest mode, the behavior of some x86 instructions changes to facilitate virtualization. The CPUID function numbers 4000_0000h-4000_00FFh have been reserved for software use. Hypervisors can use these function numbers to provide an interface to pass information from the hypervisor to the guest. This is similar to extracting information about a physical CPU by using CPUID. Hypervisors use the CPUID Fn 400000[FF:00] bit to denote a virtual platform. Feature bit CPUID Fn0000_0001_ECX[31] has been reserved for use by hypervisors to indicate the presence of a hypervisor. Hypervisors set this bit to 1 and physical CPU's set this bit to zero. This bit can be probed by the guest software to detect whether they are running inside a virtual machine.
↑Intel SDM vol 2A, order no. 253666-053, Jan 2015, p. 244
12Intel, Processor Identification and the CPUID Instruction Application Note 485, order no. 241618-037, Jan 2011, pages 31-32. Archived on 17 Oct 2023.
↑Intel, Itanium Processor Reference Manual for Software Development, rev 2.0, order no. 245320-003, December 2001, page 110. Archived from the original on 18 Feb 2004.
12Intel, Processor Identification and the CPUID Instruction Application Note 485, order no. 241618-036, Aug 2009, page 26. Archived on 6 Oct 2023.
↑InstLatX64, Willamette-128 CPUID dump. Archived on 7 Dec 2019.
↑InstLatX64, Northwood-128 CPUID dump. Archived on 7 Dec 2019.
↑InstLatX64, Prescott-256 CPUID dump. Archived on 6 Dec 2019.
↑InstLatX64, Intel Tolapai CPUID dump. Archived on 19 Jan 2019.
↑Jason Gaston, (PATCH 2.6.24-rc5) x86 intel_cacheinfo.c: cpu cache info entry for Intel Tolapai, LKML, 20 Dec 2007. Archived on 9 Nov 2024.
↑VIA-Cyrix, Application Note 120: Cyrix III CPU BIOS Writer's Guide, rev 1.1, 24 Nov 1999, page 13. Archived from the original on 29 Sep 2000.
↑InstlatX64, Intel Atom 230 CPUID dump. Archived on 7 Dec 2019.
↑Cyrix, Cyrix CPU Detection Guide, rev 1.01, 2 Oct 1997, page 13.
↑CPU-World forum, Working Timna desktop 2023, page 2 - lists a CPUID dump from a Timna engineering sample. Archived on 9 Nov 2024.
↑Geoff Chappell, CPUID Leaf 2, 26 Jan 2020. Archived on Sep 4, 2023.
↑Intel, Itanium 2 Processor Reference Manual, order no. 251110-003, May 2004, page 192. Archived from the original on 7 Dec 2006.
↑Intel, Itanium 2 Processor Specification Update, order.no. 251141-028, Nov 2004, erratum 6 on page 26. Archived from the original on 25 Nov 2004.
↑Intel, Atom C3000 Processor Product Family Specification Update, order no. 336345-020, page 16, Mar 2023. Archived on 7 Oct 2023.
↑Intel, 6th Generation Intel Processor Specification Update, order no. 332689-030, July 2023, see erratum SKL148 on page 66. Archived from the original on 8 mar 2023.
↑Intel, 10th Generation Intel Core Processor Specification Update, order no. 615213-013, apr 2023, see erratum CML081 on page 41. Archived on 19 Jul 2024.
↑Intel, Xeon Processor 7500 Series Datasheet, order no. 323341-001, March 2010, page 150. Archived on Oct 8, 2023.
↑Intel, Optimization Reference Manual, volume 1, order no. 248966-049, jan 2024, chapter 9.6.3.3, p. 361. Archived on 19 Apr 2024.
↑Intel, AP-909 Application Note: Processor Serial Number, order no. 245125-001, March 1999. Archived from the original on 21 Jan 2004.
↑Transmeta, Processor Recognition, 7 May 2002, page 4. Archived from the original on 19 March 2003.
↑Transmeta, Crusoe BIOS Programmer's Guide, 23 Jan 2004, page 12. Archived from the original on 13 May 2005.
↑InstlatX64, Transmeta Efficieon 86x0 CPUID dump, see CPUID 00000003. Archived on 7 Dec 2019.
↑Intel, Processor Identification and the CPUID Instruction, order no. 241618-031, sep 2006, page 32.
↑InstLatx64, Intel Xeon Phi 7210 CPUID dump. Archived on 13 May 2025.
↑"topology.cpp in ps/trunk/source/lib/sysdep/arch/x86_x64 – Wildfire Games". Trac.wildfiregames.com. 2011-12-27. Archived from the original on 2021-03-09. Retrieved 2014-07-10.
↑Hyper-Threading Technology and Multi-Core Processor Detection
↑Intel, Architecture Instruction Set Extensions Programming Reference, order no. 319433-052, March 2024, chapter 17. Archived on Apr 7, 2024.
↑Intel, Intel Processor Identification and the CPUID Instruction (AP-485, rev 30), order no. 241618-030, Jan 2006, page 19.
↑Intel, Intel 64 and IA-32 Architecture Software Developer's Manual, order no. 352462-079, volume 3B, section 15.4.4.4, page 3503
↑Intel, Processor Identification and the CPUID Instruction, order no. 241618-038, apr 2012, p.38
↑Intel, Product Change Notification 108701, 1 aug 2008. Archived on May 11, 2023
12"Performance Monitoring Impact of Intel Transactional Synchronization Extension Memory Ordering Issue"(PDF). Intel. June 2023. p.8. Retrieved 8 May 2024.
123Intel, Architecture Specification: Intel Trust Domain Extensions (Intel TDX) Module, order no. 344425-001, sep 2020, pages 120-122. Archived from the original on Jul 29, 2021.
↑Intel, Deprecating the PCOMMIT instruction, sep 12, 2016. Archived on Mar 5, 2024.
↑Intel, AVX512-FP16 Architecture Specification (PDF), document number 347407-001, June 2021. Archived on Oct 26, 2022
1234"Speculative Execution Side Channel Mitigations"(PDF). Revision 2.0. Intel. May 2018 [January 2018]. Document Number: 336996-002. Retrieved 2018-05-26.
↑Intel, X86S External Architecture Specification v1.2, June 2024, order no. 351407-002, section 3.5, page 13. Archived from the original on 2 Oct 2024.
↑Intel, Envisioning a Simplified Intel Architecture - as of 20 Dec 2024, contains a mention that Intel has chosen not to pursue X86S. Archived on 20 Dec 2024.
123Intel, Flexible Return and Event Delivery (FRED) Specification, rev 6.1, December 2023, order no. 346446-007, page 14. Archived on Dec 22, 2023.
↑Intel, Software Developer's Manual, order no. 325462-080, June 2023 - information about prematurely busy shadow stacks provided in Volume 1, section 17.2.3 on page 410; Volume 2A, table 3.8 (CPUID EAX=7,ECX=2) on page 820; Volume 3C, table 25-14 on page 3958 and section 26.4.3 on page 3984.
↑Intel, Complex Shadow-Stack Updates (Intel Control-Flow Enforcement Technology), order no. 356628-001, August 2023. Archived on 2 Apr 2024.
↑LKML, Re: (PATCH v3 00/21) Enable CET Virtualization, Jun 16, 2023 - provides additional discussion of how the CET-SSS prematurely-busy stack issue interacts with virtualization. Archived on 7 Aug 2023.
12Intel, Advanced Vector Extensions 10, rev 1.0, July 2023, order no. 355989-001. Archived on Jul 24, 2023.
12Intel, Advanced Performance Extensions - Architecture Specification, rev 2.0, Aug 2023, order no. 355828-002, page 37. Archived on Sep 10, 2023.
↑Intel, TDX Module ABI tables, April 2026 drafts, see /PDF/cpuid_virtualization.pdf pages 6-7. Archived on 1 May 2026.
↑Intel, Fast Store Forwarding Predictor, 8 Feb 2022. Archived on 6 Apr 2024.
123Intel, Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598, 4 Aug 2022. Archived on 11 Feb 2024.
↑Intel, Data Dependent Prefetcher, 10 Nov 2022. Archived on 4 Aug 2024.
↑Intel, MONITOR and UMONITOR Performance Guidance, 10 Jul 2024. Archived on 27 Nov 2024.
↑InstLatx64, Intel Core i7-1065G7 CPUID dump — has the SGX oversubscription feature bits set (CPUID.(EAX=12h,ECX=0).EAX[6:5]). Archived on 6 Dec 2019.
↑Intel SGX Virtualization, KVM Forum 2018, p.19. Archived on 17 Nov 2019.
↑Intel, Asynchronous Enclave Exit Notify and the EDECCSSA User Leaf Function, 30 Jun 2022. Archived on 21 Nov 2022.
↑Linux kernel git commit 604dc91, x86/tsc: Use CPUID.0x16 to calculate missing crystal frequency, 9 May 2019 - contains notes on computing the Core Crystal Clock frequency on CPUs that don't specify it, and corresponding C code.
↑Intel, SDM Volume 3A, order no 253668-083, March 2024, chapter 11.5.4, page 408
↑"Linux-Kernel Archive: x86 AMX/ACE with >8 tiles". lkml.iu.edu. Retrieved 2026-08-03.
↑"Intel® Architecture Instruction Set Extensions and Future Features"(PDF) (58thed.). Jun 2025. p.41. 319433-058. Archived(PDF) from the original on 17 Jul 2025. Retrieved 30 Oct 2025.
↑"Intel® Architecture Instruction Set Extensions and Future Features"(PDF) (59thed.). 2 Oct 2025. p.41. 319433-059. Archived(PDF) from the original on 3 Oct 2025. Retrieved 3 Oct 2025.
↑Intel, Architecture Specification: Intel Trust Domain Extensions (Intel TDX) Module, order no. 344425-005, page 93, Feb 2023. Archived on 20 Jul 2023.
↑Intel, Intel Advanced Vector Extensions 10 Architecture Specification, order no. 355989-003US, July 2024, see revision history on page 13. Archived on 8 Oct 2024.
↑Intel, Trust Domain Extensions (Intel TDX) Module Base Architecture Specification, order no. 348549-006US, April 2025, p. 116. Archived on 24 Apr 2025.
↑Intel, Advanced Vector Extensions 10.2 Architecture Specification, revision 4.0, order no. 361050-004US, May 2025, p. 16. Archived on 25 May 2025.
↑"AI Compute Extensions (ACE) Specification"(PDF). x86 Ecosystem Advisory Group (published 15 June 2026). 15 May 2026. p.10. Retrieved 18 June 2026.
12Intel, Intel Xeon Phi Coprocessor Instruction Set Architecture Reference Manual, Sep 2012, order no. 327364-001, appendix B.8, pages 677. Archived on 4 Aug 2021.
12Microsoft, Hyper-V Feature and Interface Discovery, 8 Jul 2022. Archived on 18 Nov 2023.
↑Geoff Chappell, HV_HYPERVISOR_INTERFACE, 10 Dec 2022. Archived on 1 Feb 2023.
↑David Woodhouse, Extended Destination ID: Supporting x86 virtual machines with many vCPUs, 20 Aug 2025, page 4. Archived on 23 Aug 2025.
↑QEMU documentation, Hyper-V Enlightenments. Archived on 17 Apr 2024.
12Xen, CPUID Interface to Xen. Archived on 22 Apr 2024.
↑Linux kernel documentation, KVM CPUID bits. Archived on 22 Aug 2022.
↑Linux 6.8.7 kernel source, /arch/x86/kvm/hyperv.c, line 2793
↑Linux kernel documentation, Virtualization support: 4.118 KVM_GET_SUPPORTED_HV_CPUID. Archived on 26 Mar 2024.
↑FreeBSD commit 560d5ed, 28 Jun 2013, see file /sys/amd64/vmm/x86.c, line 48. Archived on 22 Apr 2024.
↑HyperKit source code, /src/lib/vmm/x86.c line 42, 8 May 2021.
↑QEMU source code, fb/target/i386/cpu.c, line 6475, 18 Mar 2024.
↑Xakep, Детектим виртуалки [Detecting Virtual Machines] (in Russian), 8 Nov 2013 - lists the values returned in EBX/ECX/EDX for CPUID.(EAX=40000000) on Parallels Workstation as 0x70726c20, 0x68797065 and 0x72762020, respectively - which corresponds to the endianness-swapped " lrpepyhvr" string. Archived on 25 Mar 2015.
↑VMWare, Mechanisms to determine if software is running in a VMware virtual machine, 1 May 2015. Archived on 23 Jan 2022.
↑Project ACRN, CPUID Virtualization, 20 Oct 2022. Archived on 25 Mar 2023.
↑VirtualBox documentation, 9.30 Paravirtualized Debugging. Archived on 22 Apr 2024.
↑QNX, Hypervisor - Checking the guest's environment, 25 Mar 2022. Archived on 22 Apr 2024.
↑NetBSD source code, /sys/dev/nvmm/x86/nvmm_x86_vmx.c, line 1430, 6 Nov 2023.
↑OpenBSD source code, /sys/arch/amd64/include/vmmvar.h, line 24, 9 Apr 2024.
↑Siemens Jailhouse hypervisor documentation, hypervisor-interfaces.txt, line 39, 27 Jan 2020. Archived on Jul 5, 2024.
↑Bitdefender Napoca source code, /napoca/kernel/guestenlight.c, line 293, 30 Jul 2020.
↑FEX-Emu documentation, FEXCore custom CPUID functions, 24 May 2024.
↑Intel HAXM source code, /core/cpuid.c, line 979, 20 Jan 2023. Archived on 5 Sep 2025.
↑Linux kernel v5.18.19 source code, /source/drivers/visorbus/visorchipset.c, line 28
↑N. Moore, virt: Support detection of LMHS SRE guests #25594, 1 Dec 2022 - Lockheed Martin-provided pull-request for systemd, adding CPUID hypervisor ID string for the LMHS SRE hypervisor. Archived on 23 Apr 2024.
↑AMD, AMD-K6 Processor Data Sheet, order no. 20695H/0, march 1998, section 24.2, page 283
↑AMD, AMD-K6 Processor Revision Guide, order no. 21846H/0, June 1999, section 3.2.1, page 17
↑Brian Gerst, syscall w/6 args support?, Linux kernel mailing list, 8-9 Dec 1999. Archived on 10 Mar 2026.
↑Intel, Intel 64 and IA-32 Architectures Software Developer's Manual, order no. 325462-079, march 2023, table 3-8 on page 3-238
↑AMD, AMD64 Technology: 128-bit SSE5 Instruction Set, pub.no. 43479, rev. 3.01, Aug 2007, section 1, page 1. Archived from the original on 19 Aug 2014.
12Sandpile.org, x86 architecture CPUID, extended leaf 8000_0001h, accessed 25 Apr 2026. Archived on 20 Aug 2026
↑Sandpile.org, x86 architecture XOP opcodes. Archived on 11 Sep 2024.
↑Lightweight Profiling Specification(PDF), AMD, August 2010, archived from the original(PDF) on 2012-11-27, retrieved 2013-04-03
↑Cyrix, Cyrix CPU Detection Guide, rev 1.01, oct 2, 1997, page 12
↑AMD, Geode GX1 Processor Data Book, rev 5.0, december 2003, pages 202 and 226. Archived on 20 Apr 2020.
↑Instlatx64, AMD Athlon "Thunderbird" CPUID dump. [https://web.archive.org/web/20250515140345/https://instlatx64.github.io/InstLatx64/AuthenticAMD/AuthenticAMD0000644_K7_Thunderbird_CPUID.txt Archived on 15 May 2025.
↑OS/2 Museum, Mystery CPUID bit, see comment by "CL" on 22 Apr 2026. Archived on 25 Aug 2026.
↑AMD, AMD64 Architecture Programmer’s Manual Volume 6: 128-Bit and 256-Bit XOP, FMA4 and CVT16 Instructions, pub.no. 43479, rev 3.03, May 2009, page 23. Archived on 18 Jan 2023
↑AMD, Family 10h BKDG, document no. 31116, rev 3.62, jan 11, 2013, p. 388 - lists the NodeId bit. Archived on 16 Jan 2019.
↑AMD, SimNow Simulator 4.6.1 User's Manual, rev 2.13, Nov 2009, page 187. Archived from the original on 24 may 2012.
↑AMD, AMD64 Architecture Programmer's Manual Volume 3, pub. no. 24594, rev 3.20, may 2013, page 579 - lists the StreamPerfMon bit
↑InstLatx64, VIA C5XL Nehemiah (stepping 1) CPUID dump. Archived on 7 Oct 2025
↑"sandpile.org -- x86 architecture -- CPUID". www.sandpile.org. Retrieved 2026-04-20.
↑Sandpile.org, x86 architecture vector floating-point registers, see bottom of page. Archived on 13 Nov 2025.
↑AMD, US Patent 6877084B1: Central processing unit (CPU) accessing an extended register set in an extended register mode, granted on 5 Apr 2004, expired in 2023.
↑InstLatX64, AMD 4700S CPUID dump. Archived on 10 Oct 2025.
↑"Intel Processor Identification and the CPUID Instruction"(PDF). Download.intel.com. 2012-03-06. Retrieved 2013-04-11.
↑InstLatx64, Vortex86DX3 CPUID dump, 27 Sep 2021. Archived on 21 Oct 2021.
↑InstLatx64, AMD Ryzen 7 6800HS CPUID dump, 21 Feb 2022. Archived on 24 Mar 2023.
↑Chips and Cheese, Why you can't trust CPUID, 27 Oct 2022. Archived on 3 Nov 2022.
↑AMD, Geode LX Databook, pub.id. 33234H, Feb 2009, page 207.
12345Sandpile, x86 architecture CPUID, extended leaf 8000_0007h. Archived on 20 Apr 2026.
↑AMD, BKDG for AMD Family 10h Processors, pub.no. 31116, rev 3.62, jan 11, 2013, page 392. Archived on 16 Jan 2019.
1234AMD, PPR For AMD Family 19h Model 61h rev B1 procesors, pub.no. 56713, rev 3.05, Mar 8, 2023, pages 99-100. Archived on 25 Apr 2023.
12AMD, AMD64 Collaborative Processor Performance Control (CPPC) Performance Priority, pub.no. 69206, rev 1.10, 4 Mar 2026. Archived on 9 Mar 2026.
↑AMD, AMD64 Collaborative Processor Performance Control (CPPC) Performance Priority, pub.no. 69206, rev 1.00, 25 Feb 2026. Archived on 27 Feb 2026.
↑AMD, BKDG for AMD Family 16h Models 00-0Fh processors, pub.no. 48571, rev 3.03, Feb 19, 2015, page 482. Archived on 16 Jan 2019.
↑SpecterDev, Next-Gen Exploitation: Exploring the PS5 Security Landscape, June 2023 hardwear.io conference presentation slide deck, pages 34, 41 and 53. Archived on 10 Jun 2023.
↑AMD, BIOS and Kernel Developer's Guide for AMD Athlon 64 and AMD Opteron Processors, publication #26094, rev 3.30, feb 2006, pages 29-30 (lists Athlon 64 revision differences, including LMSLE) (archived on 16 Jan 2019), and Revision Guide for AMD Athlon 64 and AMD Opteron Processors, publication #25759, rev 3.79, july 2009, pages 7-8 (lists Athlon 64 revision IDs) (archived on 18 Jan 2019).
↑AMD, PPR for AMD Family 19h Model 01h, Revision B1 Processors, Volume 1 of 2, document no. 55898, rev 0.50, may 27, 2021, page 98 - lists branch-sampling bit. Archived on Jul 24, 2022
↑AMD, AMD64 Guest PMC Event Filtering, pub.no. 69202, rev 1.00, 27 Feb 2026. Archived on 11 Mar 2026.
↑AMD, AMD64 Page Modification Logging, pub.no. 69208, rev 1.00, 10 Mar 2026. Archived on 11 Mar 2026.
↑AMD, AMD64 Virtualization Codenamed "Pacifica" Technology, publication no. 33047, rev 3.01, May 2005, appendix B, page 81. Archived on Jun 13, 2011.
↑AMD, CPUID specification, publication #25481, revision 2.34, sep 2010, page 5 - lists "SseIsa10Compat" as having been dropped in November 2009.
12AMD, PPR for AMD Family 19h Model 61h, Revision B1 processors, document no. 56713, rev 3.05, mar 8 2023, page 102. Archived on Apr 25, 2023.
1234AMD, Processor Programming Reference (PPR) for AMD Family 1Ah Model 70h, Revision B0 Processors, order no. 57930, rev 3.00, 30 Apr 2025, pages 103, 119 and 200. Archived on 19 Jan 2026.
123OpenAnolis cloud kernel 6.6 documentation, Hygon Secure Virtualization. Archived on 12 Mar 2026.
↑AMD, Secure VM Service Module for SEV-SNP Guests, pub.no #58019, rev 1.00, Jul 2023, page 13. Archived on 5 Aug 2023.
12AMD, PPR for AMD Family 19h Model 61h, Revision B1 processors, document no. 56713, rev 3.05, mar 8 2023, page 116. Archived on Apr 25, 2023.
123AMD, Technical Guidance For Mitigating Transient Scheduler Attacks, rev 2.0, July 2025, page 3. Archived on 14 Aug 2025.
↑AMD, 5th Gen AMD EPYC Processor Architecture, First Edition, October 2024, page 9. Archived on 28 Dec 2024.
↑AMD, AMD64 Bit Matrix Multiply and Bit Reversal Instructions, pub.no. 69192, rev 1.00, 30 Jan 2026. Archived on 27 Feb 2026.
↑AMD, AMD64 Upper Address Ignore Version 2, pub.no. 69207, rev 1.00, 10 Mar 2026. Archived on 11 Mar 2026.
12345AMD, Technical Update Regarding Speculative Return Stack Overflow, rev 2.0, feb 2024. Archived on Apr 12, 2024.
↑AMD, AMD64 RMPOPT, pub.no. 69201, rev 1.00, Feb 2026. Archived on 26 Feb 2026.
↑AMD, AMD64 Enhanced SMT Protection, pub.no. 69204, rev 1.00, Mar 2026. Archived on 29 Mar 2026.
↑AMD, AMD64 RMP Dirty, pub.no. 69203, rev 1.00, Feb 2026. Archived on 25 Feb 2026.
↑OpenEuler kernel 6.6, arch/x86/kernel/cpu/hygon.c, line 255. Archived on 14 mar 2026.
↑OpenEuler kernel 6.6, arch/x86/include/asm/cpufeatures.h, line 499. Archived on 14 Mar 2026.
↑Ferrie, Peter. "Attacks on Virtual Machine Emulators"(PDF). Symantec. Symantec Advanced Threat Research. Archived from the original(PDF) on 2007-02-07. Retrieved 15 March 2017.
↑Sandpile, x86 architecture CPUID. Retrieved 22 December 2022.
↑instlatx64, CPUID dump of AMD A4-5000, lists "HELLO KITTY" string for CPUID leaf 8FFFFFFFh. Retrieved 22 December 2022.
↑Sandpile, x86 architecture CPUID. Retrieved 30 July 2025.
↑IDT, WinChip 2B Processor Data Sheet, v0.9, April 1999, chapter 3.3.3, page 31.
↑VIA, PadLock Programming Guide rev. 1.66, aug 4, 2005, page 5. Archived from the original on May 26, 2010
↑"ARM Information Center". Infocenter.arm.com. Retrieved 2013-04-11.
↑IBM System/370 Principles Of Operation(PDF) (Firsted.). IBM. June 1970. p.29. GA22-7000-0.
12z/Architecture Principles of Operation(PDF) (Fourteenthed.). May 2022. SA22-7832-13.
↑"MIPS32 Architecture For Programmers, Volume III: The MIPS32 Privileged Resource Architecture"(PDF). MIPS Technologies, Inc. 2001-03-12.
↑"PowerPC Operating Environment Architecture, book III"(PDF).
↑"The RISC-V Instruction Set Manual Volume II: Privileged Architecture Version 1.7"(PDF). May 9, 2015. section 3.1.1.
↑S. Darwish, Ahmed. "[ANNOUNCE] x86-cpuid.org: A machine-readable CPUID repository". Linux Kernel Mailing List archive. Retrieved 20 July 2024.
Further reading
"AMD64 Technology Indirect Branch Control Extension"(PDF) (White paper). Revision 4.10.18. Advanced Micro Devices, Inc. (AMD). 2018. Archived(PDF) from the original on 2018-05-09. Retrieved 2018-05-09.
External links
Intel Processor Identification and the CPUID Instruction (Application Note 485), last published version. Said to be incorporated into the Intel 64 and IA-32 Architectures Software Developer's Manualin 2013, but as of July 2014 the manual still directs the reader to note 485.
Contains some information that can be and was easily misinterpreted though, particularly with respect to processor topology identification.
The big Intel manuals tend to lag behind the Intel ISA document, available at the top of this page, which is updated even for processors not yet publicly available, and thus usually contains more CPUID bits. For example, as of this writing, the ISA book (at revision 19, dated May 2014) documents the CLFLUSHOPT bit in leaf 7, but the big manuals although apparently more up-to-date (at revision 51, dated June 2014) don't mention it.
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions
cpuid command-line program for Linux
cpuprint.com, cpuprint.exe, cpuprint.raw command-line programs for Windows