<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=CPUID</id>
	<title>CPUID - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=CPUID"/>
	<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=CPUID&amp;action=history"/>
	<updated>2026-04-04T10:56:14Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=CPUID&amp;diff=1047&amp;oldid=prev</id>
		<title>Zhang3：创建页面，内容为“CPUID指令可用于检索有关cpu的各种信息，如供应商字符串和型号、内部缓存的大小以及（更有趣的是）支持的cpu功能列表。  ==如何使用CPUID== === 检查CPUID可用性 === 在使用CPUID指令之前，还应该通过测试eflags中的“ID”位（0x200000）来确保处理器支持该指令。 此位仅在支持CPUID指令时才可修改。 对于不支持CPUID的系统，更改 'ID' 位不会有任何影响。  '''注…”</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=CPUID&amp;diff=1047&amp;oldid=prev"/>
		<updated>2022-03-27T23:25:16Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“CPUID指令可用于检索有关cpu的各种信息，如供应商字符串和型号、内部缓存的大小以及（更有趣的是）支持的cpu功能列表。  ==如何使用CPUID== === 检查CPUID可用性 === 在使用CPUID指令之前，还应该通过测试eflags中的“ID”位（0x200000）来确保处理器支持该指令。 此位仅在支持CPUID指令时才可修改。 对于不支持CPUID的系统，更改 &amp;#039;ID&amp;#039; 位不会有任何影响。  &amp;#039;&amp;#039;&amp;#039;注…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;CPUID指令可用于检索有关cpu的各种信息，如供应商字符串和型号、内部缓存的大小以及（更有趣的是）支持的cpu功能列表。&lt;br /&gt;
&lt;br /&gt;
==如何使用CPUID==&lt;br /&gt;
=== 检查CPUID可用性 ===&lt;br /&gt;
在使用CPUID指令之前，还应该通过测试eflags中的“ID”位（0x200000）来确保处理器支持该指令。 此位仅在支持CPUID指令时才可修改。 对于不支持CPUID的系统，更改 'ID' 位不会有任何影响。&lt;br /&gt;
&lt;br /&gt;
'''注意：'''在示例C中实现此例程可能会导致问题，因为编译器可能随时更改EFLAG。&lt;br /&gt;
&lt;br /&gt;
此汇编例程检查是否支持CPUID：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
    pushfd                               ;保存EFLAGS&lt;br /&gt;
    pushfd                               ;存储EFLAGS&lt;br /&gt;
    xor dword [esp],0x00200000           ;反转存储的EFLAGS中的ID位&lt;br /&gt;
    popfd                                ;加载存储的电子标志 (ID位反转)&lt;br /&gt;
    pushfd                               ;再次存储EFLAGS（ID位可能反转，也可能不反转）&lt;br /&gt;
    pop eax                              ;eax=修改后的EFLAGS(ID位可能反转，也可能不反转)&lt;br /&gt;
    xor eax,[esp]                        ;eax = 更改了哪些位&lt;br /&gt;
    popfd                                ;恢复原始EFLAG&lt;br /&gt;
    and eax,0x00200000                   ;如果ID位不能更改，则eax=0，否则为非零值&lt;br /&gt;
    ret&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注1: 有一些旧的cpu支持CPUID但eblags中的ID位不支持 (NexGen)。 当且仅当必须首先启用CPUID（Cyrix M1）时，这些CPU也支持CPUID。&lt;br /&gt;
&lt;br /&gt;
注2：您可以简单地尝试执行CPUID指令，并查看是否得到无效操作码异常。 这避免了支持CPUID但不支持EBLAGS中的ID位的cpu的问题； 对于支持CPUID的CPU，速度可能会更快（对于不支持CPUID的CPU，速度可能会更慢）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===基本用法===&lt;br /&gt;
CPUID指令的想法是，您可以在EAX中使用不同的值调用它，它将返回有关处理器的不同信息。 例如，如果我们想要供应商ID字符串（见下文），我们应该这样编码：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
mov eax, 0x0&lt;br /&gt;
cpuid&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
AMD和英特尔之间存在差异。 根据Intel CPUID应用说明，在取出信息 (例如处理器签名，处理器功能标志等) 之前，我们应该首先检查供应商ID字符串中的 “GenuineIntel”。&lt;br /&gt;
&lt;br /&gt;
===CPU供应商ID字符串===&lt;br /&gt;
&lt;br /&gt;
在EAX=0的情况下调用时，CPUID返回EBX、EDX和ECX格式的供应商ID字符串。 按此顺序将它们写入内存会产生12个字符的字符串。 这些可以根据已知的供应商ID字符串进行测试：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* Vendor strings from CPUs. */&lt;br /&gt;
#define CPUID_VENDOR_OLDAMD        &amp;quot;AMDisbetter!&amp;quot; // Early engineering samples of AMD K5 processor&lt;br /&gt;
#define CPUID_VENDOR_AMD           &amp;quot;AuthenticAMD&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_INTEL         &amp;quot;GenuineIntel&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_VIA           &amp;quot;VIA VIA VIA &amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_OLDTRANSMETA  &amp;quot;TransmetaCPU&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_TRANSMETA     &amp;quot;GenuineTMx86&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_CYRIX         &amp;quot;CyrixInstead&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_CENTAUR       &amp;quot;CentaurHauls&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_NEXGEN        &amp;quot;NexGenDriven&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_UMC           &amp;quot;UMC UMC UMC &amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_SIS           &amp;quot;SiS SiS SiS &amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_NSC           &amp;quot;Geode by NSC&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_RISE          &amp;quot;RiseRiseRise&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_VORTEX        &amp;quot;Vortex86 SoC&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_OLDAO486      &amp;quot;GenuineAO486&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_AO486         &amp;quot;MiSTer AO486&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_ZHAOXIN       &amp;quot;  Shanghai  &amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_HYGON         &amp;quot;HygonGenuine&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_ELBRUS        &amp;quot;E2K MACHINE &amp;quot;&lt;br /&gt;
 &lt;br /&gt;
/* Vendor strings from hypervisors. */&lt;br /&gt;
#define CPUID_VENDOR_QEMU          &amp;quot;TCGTCGTCGTCG&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_KVM           &amp;quot; KVMKVMKVM  &amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_VMWARE        &amp;quot;VMwareVMware&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_VIRTUALBOX    &amp;quot;VBoxVBoxVBox&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_XEN           &amp;quot;XenVMMXenVMM&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_HYPERV        &amp;quot;Microsoft Hv&amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_PARALLELS     &amp;quot; prl hyperv &amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_PARALLELS_ALT &amp;quot; lrpepyh vr &amp;quot; //有时Parallels会因为字节顺序不匹配而将“PRL HyperV”错误地编码为“lrpepyh VR”。&lt;br /&gt;
#define CPUID_VENDOR_BHYVE         &amp;quot;bhyve bhyve &amp;quot;&lt;br /&gt;
#define CPUID_VENDOR_QNX           &amp;quot; QNXQVMBSQG &amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
您已经知道供应商ID字符串在EBX，ECX，EDX中返回。 让我们以英特尔处理器为例。 它应该返回“GenuineIntel”。 查看以下文本，以了解如何将字符串放置在寄存器中:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      MSB         LSB&lt;br /&gt;
EBX = 'u' 'n' 'e' 'G'&lt;br /&gt;
EDX = 'I' 'e' 'n' 'i'&lt;br /&gt;
ECX = 'l' 'e' 't' 'n' &lt;br /&gt;
 &lt;br /&gt;
 其中，MSB代表“最高有效字节”，LSB代表“最低有效字节”。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
此外，EAX设置为CPUID调用支持的最大EAX值，因为并非所有处理器都支持所有查询。&lt;br /&gt;
&lt;br /&gt;
=== 中央处理器功能 ===&lt;br /&gt;
&lt;br /&gt;
当使用EAX=1（CPUID_GETFEATURES）调用CPUID时，CPUID会在EDX中返回一个包含以下值的位字段。&lt;br /&gt;
请注意，不同品牌的CPU可能会赋予这些处理器不同的含义。 &lt;br /&gt;
最近的一些处理器还将ECX用于功能 (形成不同的集合)，由于某些旧cpu在此寄存器中返回虚假信息，因此您应该非常小心。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
enum {&lt;br /&gt;
    CPUID_FEAT_ECX_SSE3         = 1 &amp;lt;&amp;lt; 0, &lt;br /&gt;
    CPUID_FEAT_ECX_PCLMUL       = 1 &amp;lt;&amp;lt; 1,&lt;br /&gt;
    CPUID_FEAT_ECX_DTES64       = 1 &amp;lt;&amp;lt; 2,&lt;br /&gt;
    CPUID_FEAT_ECX_MONITOR      = 1 &amp;lt;&amp;lt; 3,  &lt;br /&gt;
    CPUID_FEAT_ECX_DS_CPL       = 1 &amp;lt;&amp;lt; 4,  &lt;br /&gt;
    CPUID_FEAT_ECX_VMX          = 1 &amp;lt;&amp;lt; 5,  &lt;br /&gt;
    CPUID_FEAT_ECX_SMX          = 1 &amp;lt;&amp;lt; 6,  &lt;br /&gt;
    CPUID_FEAT_ECX_EST          = 1 &amp;lt;&amp;lt; 7,  &lt;br /&gt;
    CPUID_FEAT_ECX_TM2          = 1 &amp;lt;&amp;lt; 8,  &lt;br /&gt;
    CPUID_FEAT_ECX_SSSE3        = 1 &amp;lt;&amp;lt; 9,  &lt;br /&gt;
    CPUID_FEAT_ECX_CID          = 1 &amp;lt;&amp;lt; 10,&lt;br /&gt;
    CPUID_FEAT_ECX_SDBG         = 1 &amp;lt;&amp;lt; 11,&lt;br /&gt;
    CPUID_FEAT_ECX_FMA          = 1 &amp;lt;&amp;lt; 12,&lt;br /&gt;
    CPUID_FEAT_ECX_CX16         = 1 &amp;lt;&amp;lt; 13, &lt;br /&gt;
    CPUID_FEAT_ECX_XTPR         = 1 &amp;lt;&amp;lt; 14, &lt;br /&gt;
    CPUID_FEAT_ECX_PDCM         = 1 &amp;lt;&amp;lt; 15, &lt;br /&gt;
    CPUID_FEAT_ECX_PCID         = 1 &amp;lt;&amp;lt; 17, &lt;br /&gt;
    CPUID_FEAT_ECX_DCA          = 1 &amp;lt;&amp;lt; 18, &lt;br /&gt;
    CPUID_FEAT_ECX_SSE4_1       = 1 &amp;lt;&amp;lt; 19, &lt;br /&gt;
    CPUID_FEAT_ECX_SSE4_2       = 1 &amp;lt;&amp;lt; 20, &lt;br /&gt;
    CPUID_FEAT_ECX_X2APIC       = 1 &amp;lt;&amp;lt; 21, &lt;br /&gt;
    CPUID_FEAT_ECX_MOVBE        = 1 &amp;lt;&amp;lt; 22, &lt;br /&gt;
    CPUID_FEAT_ECX_POPCNT       = 1 &amp;lt;&amp;lt; 23, &lt;br /&gt;
    CPUID_FEAT_ECX_TSC          = 1 &amp;lt;&amp;lt; 24, &lt;br /&gt;
    CPUID_FEAT_ECX_AES          = 1 &amp;lt;&amp;lt; 25, &lt;br /&gt;
    CPUID_FEAT_ECX_XSAVE        = 1 &amp;lt;&amp;lt; 26, &lt;br /&gt;
    CPUID_FEAT_ECX_OSXSAVE      = 1 &amp;lt;&amp;lt; 27, &lt;br /&gt;
    CPUID_FEAT_ECX_AVX          = 1 &amp;lt;&amp;lt; 28,&lt;br /&gt;
    CPUID_FEAT_ECX_F16C         = 1 &amp;lt;&amp;lt; 29,&lt;br /&gt;
    CPUID_FEAT_ECX_RDRAND       = 1 &amp;lt;&amp;lt; 30,&lt;br /&gt;
    CPUID_FEAT_ECX_HYPERVISOR   = 1 &amp;lt;&amp;lt; 31,&lt;br /&gt;
&lt;br /&gt;
    CPUID_FEAT_EDX_FPU          = 1 &amp;lt;&amp;lt; 0,  &lt;br /&gt;
    CPUID_FEAT_EDX_VME          = 1 &amp;lt;&amp;lt; 1,  &lt;br /&gt;
    CPUID_FEAT_EDX_DE           = 1 &amp;lt;&amp;lt; 2,  &lt;br /&gt;
    CPUID_FEAT_EDX_PSE          = 1 &amp;lt;&amp;lt; 3,  &lt;br /&gt;
    CPUID_FEAT_EDX_TSC          = 1 &amp;lt;&amp;lt; 4,  &lt;br /&gt;
    CPUID_FEAT_EDX_MSR          = 1 &amp;lt;&amp;lt; 5,  &lt;br /&gt;
    CPUID_FEAT_EDX_PAE          = 1 &amp;lt;&amp;lt; 6,  &lt;br /&gt;
    CPUID_FEAT_EDX_MCE          = 1 &amp;lt;&amp;lt; 7,  &lt;br /&gt;
    CPUID_FEAT_EDX_CX8          = 1 &amp;lt;&amp;lt; 8,  &lt;br /&gt;
    CPUID_FEAT_EDX_APIC         = 1 &amp;lt;&amp;lt; 9,  &lt;br /&gt;
    CPUID_FEAT_EDX_SEP          = 1 &amp;lt;&amp;lt; 11, &lt;br /&gt;
    CPUID_FEAT_EDX_MTRR         = 1 &amp;lt;&amp;lt; 12, &lt;br /&gt;
    CPUID_FEAT_EDX_PGE          = 1 &amp;lt;&amp;lt; 13, &lt;br /&gt;
    CPUID_FEAT_EDX_MCA          = 1 &amp;lt;&amp;lt; 14, &lt;br /&gt;
    CPUID_FEAT_EDX_CMOV         = 1 &amp;lt;&amp;lt; 15, &lt;br /&gt;
    CPUID_FEAT_EDX_PAT          = 1 &amp;lt;&amp;lt; 16, &lt;br /&gt;
    CPUID_FEAT_EDX_PSE36        = 1 &amp;lt;&amp;lt; 17, &lt;br /&gt;
    CPUID_FEAT_EDX_PSN          = 1 &amp;lt;&amp;lt; 18, &lt;br /&gt;
    CPUID_FEAT_EDX_CLFLUSH      = 1 &amp;lt;&amp;lt; 19, &lt;br /&gt;
    CPUID_FEAT_EDX_DS           = 1 &amp;lt;&amp;lt; 21, &lt;br /&gt;
    CPUID_FEAT_EDX_ACPI         = 1 &amp;lt;&amp;lt; 22, &lt;br /&gt;
    CPUID_FEAT_EDX_MMX          = 1 &amp;lt;&amp;lt; 23, &lt;br /&gt;
    CPUID_FEAT_EDX_FXSR         = 1 &amp;lt;&amp;lt; 24, &lt;br /&gt;
    CPUID_FEAT_EDX_SSE          = 1 &amp;lt;&amp;lt; 25, &lt;br /&gt;
    CPUID_FEAT_EDX_SSE2         = 1 &amp;lt;&amp;lt; 26, &lt;br /&gt;
    CPUID_FEAT_EDX_SS           = 1 &amp;lt;&amp;lt; 27, &lt;br /&gt;
    CPUID_FEAT_EDX_HTT          = 1 &amp;lt;&amp;lt; 28, &lt;br /&gt;
    CPUID_FEAT_EDX_TM           = 1 &amp;lt;&amp;lt; 29, &lt;br /&gt;
    CPUID_FEAT_EDX_IA64         = 1 &amp;lt;&amp;lt; 30,&lt;br /&gt;
    CPUID_FEAT_EDX_PBE          = 1 &amp;lt;&amp;lt; 31&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==在GCC中使用CPUID==&lt;br /&gt;
&lt;br /&gt;
或者，可以使用GCC附带的__get_cpuid函数。 要使用此函数，请包含 &amp;lt;cpuid.h&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;cpuid.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*示例：获取CPU的型号*/&lt;br /&gt;
static int get_model(void)&lt;br /&gt;
{&lt;br /&gt;
    int ebx, unused;&lt;br /&gt;
    __cpuid(0, unused, ebx, unused, unused);&lt;br /&gt;
    return ebx;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*示例：检查内置本地APIC。*/&lt;br /&gt;
static int check_apic(void)&lt;br /&gt;
{&lt;br /&gt;
    unsigned int eax, unused, edx;&lt;br /&gt;
    __get_cpuid(1, &amp;amp;eax, &amp;amp;unused, &amp;amp;unused, %edx);&lt;br /&gt;
    return edx &amp;amp; CPUID_FEAT_EDX_APIC;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Disputed}}&lt;br /&gt;
&lt;br /&gt;
CPUID可以用各种请求代码 (在eax中) 调用，并且将在一般寄存器中返回值 (很大程度上是内置的服务中断)。 以下代码由Clicker的x86/cpu.h公开。H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*已弃用：应该使用GCC附带的&amp;lt;cpuid.h&amp;gt;头。*/&lt;br /&gt;
&lt;br /&gt;
enum cpuid_requests {&lt;br /&gt;
  CPUID_GETVENDORSTRING,&lt;br /&gt;
  CPUID_GETFEATURES,&lt;br /&gt;
  CPUID_GETTLB,&lt;br /&gt;
  CPUID_GETSERIAL,&lt;br /&gt;
  &lt;br /&gt;
  CPUID_INTELEXTENDED=0x80000000,&lt;br /&gt;
  CPUID_INTELFEATURES,&lt;br /&gt;
  CPUID_INTELBRANDSTRING,&lt;br /&gt;
  CPUID_INTELBRANDSTRINGMORE,&lt;br /&gt;
  CPUID_INTELBRANDSTRINGEND,&lt;br /&gt;
};&lt;br /&gt;
    &lt;br /&gt;
/** 向CPUID发出单个请求。例如，适配 “intel功能特性”&lt;br /&gt;
 * 请注意，即使只关注“eax”和“edx”，其他寄存器&lt;br /&gt;
 * 将被操作修改，因此我们需要将其告知编译器。&lt;br /&gt;
 */&lt;br /&gt;
static inline void cpuid(int code, uint32_t *a, uint32_t *d) {&lt;br /&gt;
  asm volatile(&amp;quot;cpuid&amp;quot;:&amp;quot;=a&amp;quot;(*a),&amp;quot;=d&amp;quot;(*d):&amp;quot;a&amp;quot;(code):&amp;quot;ecx&amp;quot;,&amp;quot;ebx&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
    &lt;br /&gt;
/** 发出完整请求，将通用寄存器输出存储为字符串&lt;br /&gt;
 */&lt;br /&gt;
static inline int cpuid_string(int code, uint32_t where[4]) {&lt;br /&gt;
  asm volatile(&amp;quot;cpuid&amp;quot;:&amp;quot;=a&amp;quot;(*where),&amp;quot;=b&amp;quot;(*(where+1)),&lt;br /&gt;
               &amp;quot;=c&amp;quot;(*(where+2)),&amp;quot;=d&amp;quot;(*(where+3)):&amp;quot;a&amp;quot;(code));&lt;br /&gt;
  return (int)where[0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==另见==&lt;br /&gt;
&lt;br /&gt;
===文章===&lt;br /&gt;
* [[VMX]] 英特尔的虚拟机扩展（Virtual-Machine Extensions）&lt;br /&gt;
* [[Detecting CPU Topology (80x86)]]检测80x86上的CPU拓扑&lt;br /&gt;
&lt;br /&gt;
=== 论坛文章 ===&lt;br /&gt;
* [[Topic:11998|CPUID For OS Developers]], an implementation written by Brynet-Inc.&lt;br /&gt;
* [[Topic:12146|Forum topic about issues with CPUID]]&lt;br /&gt;
&lt;br /&gt;
=== 外部链接 ===&lt;br /&gt;
* You can check out [http://sandpile.org/x86/cpuid.htm SandPile.org] for an exhaustive list of functions available through CPUID instruction.&lt;br /&gt;
* Intel's [http://bochs.sourceforge.net/techspec/24161821.pdf CPUID Specification]&lt;br /&gt;
* AMD's [http://support.amd.com/TechDocs/25481.pdf CPUID Specification]&lt;br /&gt;
&lt;br /&gt;
[[Category:X86 CPU]]&lt;br /&gt;
[[de:CPUID]]&lt;/div&gt;</summary>
		<author><name>Zhang3</name></author>
	</entry>
</feed>