打印本文 打印本文 关闭窗口 关闭窗口
研究心得-------CPU信息的获得,比较全面的。
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2324  更新时间:2009/4/23 18:38:05  文章录入:mintao  责任编辑:mintao
最近到整理了一份CPU的信息,应该算是比较全面的吧。
几乎现在所有的X86 CPU都内置了CPUID指令以辨别真伪,一些CPU厂商例如AMD,VIA等还内置了更加丰富的扩展CPUID指令,用着更方便了。
下面我们利用Delphi来实现一个CPU检测的软件。
CPUID的调用方式如下:
 asm
 push eax
 push ebx
 push ecx
 push edx
 mov eax,X
//******************************************************
//cpuid指令,因为Delphi的汇编编译器没有内置该指令,
//所以用该指令的机器语言代码$0F,$A2来实现
//******************************************************
 db $0F,$A2
 pop edx
 pop ecx
 pop ebx
 pop eax
 end;
CPUID指令的参数就是EAX,mov eax,X这一句就是把X赋给EAX 。
返回的参数存储在EAX,EBX,ECX,EDX之中。
我们可以写一个函数:
type
 TCPUIDResult = record
   EAX: DWord;
   EBX: DWord;
   ECX: DWord;
   EDX: DWord;
 end;
……
function CPUID(EAX:DWord): TCPUIDResult;
asm
 push eax
 push ebx
 push ecx
 push edx
 mov eax,EAX
 //******************************************************
 //cpuid指令,因为Delphi的汇编编译器没有内置该指令,
 //所以用该指令的机器语言代码$0F,$A2来实现
 //******************************************************
 db $0F,$A2
 mov Result.EAX,EAX
 mov Result.EBX,EBX
 mov Result.ECX,ECX
 mov Result.EDX,EDX
 pop edx
 pop ecx
 pop ebx
 pop eax
end;

CPUID参数及返回值列表:
EAX= 0000_0000h
输入  EAX=0000_0000h  得到CPUID指令所支持的最大值和厂家的名称字符串
输出  EAX=xxxx_xxxxh  得到CPUID指令所支持的最大值 #1
 EBX-EDX-ECX  厂家的名称字符串 #2
   GenuineIntel  Intel 处理器
   UMC UMC UMC  UMC 处理器
   AuthenticAMD  AMD 处理器
   CyrixInstead  Cyrix 处理器
   NexGenDriven  NexGen 处理器
   CentaurHauls  Centaur 处理器
   RiseRiseRise  Rise Technology 处理器
   GenuineTMx86  Transmeta 处理器
   Geode by NSC  National Semiconductor 处理器
说明  描述
#1  pre-B0 step Intel P5 处理器返回 EAX=0000_05xxh.
#2  pre-B0 step Intel P5 处理器不能返回厂商字符串
EAX= 0000_0001h
输入  EAX=0000_0001h  得到处理器 type/family/model/stepping和 面貌标识
输出  EAX=xxxx_xxxxh  处理器 type/family/model/stepping
   extended family  extended family 是 bits 27..20.
     00h  Intel P4
     01h  Intel Itanium 2 (IA-64)
   extended model  extended model 是 bits 19..16.
   type  type是 bit 13 和 bit 12.
     11b  保留
     10b  第二块处理器
     01b  Overdrive 处理器
     00b  第一处理器
   family  family是bits 11..8.
     4  most 80486s
AMD 5x86
Cyrix 5x86
     5  Intel P5, P54C, P55C, P24T
NexGen Nx586
Cyrix M1
AMD K5, K6
Centaur C6, C2, C3
Rise mP6
Transmeta Crusoe TM3x00 and TM5x00
     6  Intel P6, P2, P3
AMD K7
Cyrix M2, VIA Cyrix III
     7  Intel Itanium (IA-64)
     F  如果是这个值的话就看extended family
   model  model 是 bits 7..4.
     Intel  F  如果是这个值的话就看 extended model
     Intel 80486  0  i80486DX-25/33
       1  i80486DX-50
       2  i80486SX
       3  i80486DX2
       4  i80486SL
       5  i80486SX2
       7  i80486DX2WB
       8  i80486DX4
       9  i80486DX4WB
     UMC 80486  1  U5D
       2  U5S
     AMD 80486  3  80486DX2
       7  80486DX2WB
       8  80486DX4
       9  80486DX4WB
       E  5x86
       F  5x86WB
     Cyrix 5x86  9  5x86
     Cyrix MediaGX  4  GX, GXm
     Intel P5-core  0  P5 A-step
       1  P5
       2  P54C
       3  P24T Overdrive
       4  P55C
       7  P54C
       8  P55C (0.25μm)
     NexGen Nx586  0  Nx586 or Nx586FPU (only later ones)
     Cyrix M1  2  6x86
     Cyrix M2  0  6x86MX
     VIA Cyrix III  5  Cyrix M2 core
       6  WinChip C5A core
       7  WinChip C5B core (if stepping = 0..7)
       7  WinChip C5C core (if stepping = 8..F)
       8  WinChip C5C-T core (if stepping = 0..7)
     AMD K5  0  SSA5 (PR75, PR90, PR100)
       1  5k86 (PR120, PR133)
       2  5k86 (PR166)
       3  5k86 (PR200)
     AMD K6  6  K6 (0.30 μm)
       7  K6 (0.25 μm)
       8  K6-2
       9  K6-III
       D  K6-2+ or K6-III+ (0.18 μm)
     Centaur  4  C6
       8  C2
       9  C3
     Rise  0  mP6 (0.25 μm)
       2  mP6 (0.18 μm)
     Transmeta  4  Crusoe TM3x00 and TM5x00
     Intel P6-core  0  P6 A-step
       1  P6
       3  P2 (0.28 μm)
       5  P2 (0.25 μm)
       6  P2 with on-die L2 cache
       7  P3 (0.25 μm)
       8  P3 (0.18 μm)
with 256 KB on-die L2 cache
       A  P3 (0.18 μm)
with 1 or 2 MB on-die L2 cache
       B  P3 (0.13 μm)
with 256 or 512 KB on-die L2 cache
     AMD K7  1  Athlon (0.25 μm)
       2  Athlon (0.18 μm)
       3  Duron (SF core)
       4  Athlon (TB core)
       6  Athlon (PM core)
       7  Duron (MG core)
       8  Athlon (TH core)
       A  Athlon (Barton core)
     Intel P4-core  0  P4 (0.18 μm)
       1  P4 (0.18 μm)
       2  P4 (0.13 μm)
       3  P4 (0.09 μm)
   stepping  stepping 在 bits 3..0.
     Stepping描述的是处理器的细节.
 EBX=aall_ccbbh  brand ID  brand ID是 7..0.
     00h  不支持
     01h  0.18 μm Intel Celeron
     02h  0.18 μm Intel Pentium III
     03h  0.18 μm Intel Pentium III Xeon
     03h  0.13 μm Intel Celeron
     04h  0.13 μm Intel Pentium III
     07h  0.13 μm Intel Celeron mobile
     06h  0.13 μm Intel Pentium III mobile
     0Ah  0.18 μm Intel Celeron 4
     08h  0.18 μm Intel Pentium 4
     09h  0.13 μm Intel Pentium 4
     0Eh  0.18 μm Intel Pentium 4 Xeon
     0Bh  0.18 μm Intel Pentium 4 Xeon MP
     0Bh  0.13 μm Intel Pentium 4 Xeon
     0Ch  0.13 μm Intel Pentium 4 Xeon MP
     08h  0.13 μm Intel Celeron 4 mobile
     0Eh  0.13 μm Intel Pentium 4 mobile (production)
     0Fh  0.13 μm Intel Pentium 4 mobile (samples)
   CLFLUSH  CLFLUSH (8-byte)在 bits 15..8.
   CPU count  逻辑处理器数量 bits 23..16.
   APIC ID  默认(固定的)APIC ID是bits 31..24.
 ECX=xxxx_xxxxh  feature flags  描述
   bits 31...11  保留
   bit 10 (CID)  context ID: L1数据缓存能被设置成适应或共享模式
   bit 9  保留
   bit 8 (TM2)  热量监控 2
   bit 7  保留
   bit 6  保留
   bit 5  保留
   bit 4 (DSCPL)  CPL-qualified Debug Store
   bit 3 (MON)  监控器
   bit 2  保留
   bit 1  保留
   bit 0 (SSE3)  SSE3, MXCSR, CR4.OSXMMEXCPT, #XF, 如果FPU=1也支持 FISTTP
 EDX=xxxx_xxxxh  面貌标志  说明
   bit 31 (PBE)  Pending Break Event, STPCLK, FERR#, MISC_ENABLE MSR
   bit 30 (IA-64)  IA-64
   bit 29 (TM)  THERM_INTERRUPT, THERM_STATUS, and MISC_ENABLE MSRsxAPIC thermal LVT entry
   bit 28 (HTT)  Hyper-Threading Technology
   bit 27 (SS)  selfsnoop
   bit 26 (SSE2)  SSE2, MXCSR, CR4.OSXMMEXCPT, #XF
   bit 25 (SSE)  SSE, MXCSR, CR4.OSXMMEXCPT, #XF
   bit 24 (FXSR)  FXSAVE/FXRSTOR, CR4.OSFXSR
   bit 23 (MMX)  MMX
   bit 22 (ACPI)  THERM_CONTROL MSR
   bit 21 (DTES)  Debug Trace and EMON Store MSRs
   bit 20  保留
   bit 19 (CLFL)

[1] [2] [3] [4]  下一页

打印本文 打印本文 关闭窗口 关闭窗口