|
|
|
研究心得-------CPU信息的获得,比较全面的。 |
热 ★★★★ |
|
研究心得-------CPU信息的获得,比较全面的。 |
|
作者:闵涛 文章来源:闵涛的学习笔记 点击数:2324 更新时间:2009/4/23 18:38:05 |
|
it 22 (MMX+) AMD specific: MMX-SSE and SSE-MEM bit 21 保留 bit 20 (NX) EFER.NXE, P?E.NX, #PF(1xxxx) bit 19 (MP) MP-capable #3 bit 18 保留 bit 17 (PSE36) 4 MB PDE bits 16..13, CR4.PSE bit 16 (FCMOV) bit 16 (PAT) FCMOVcc/F(U)COMI(P) (implies FPU=1) AMD K7: PAT MSR, PDE/PTE.PAT bit 15 (CMOV) CMOVcc bit 14 (MCA) MCG_*/MCn_* MSRs, CR4.MCE, #MC bit 13 (PGE) PDE/PTE.G, CR4.PGE bit 12 (MTRR) MTRR* MSRs bit 11 (SEP) SYSCALL/SYSRET, EFER/STAR MSRs #1 bit 10 保留 #1 bit 9 (APIC) APIC #2 bit 8 (CX8) CMPXCHG8B bit 7 (MCE) MCAR/MCTR MSRs, CR4.MCE, #MC bit 6 (PAE) 64bit PDPTE/PDE/PTEs, CR4.PAE bit 5 (MSR) MSRs, RDMSR/WRMSR bit 4 (TSC) TSC, RDTSC, CR4.TSD (doesn''''t imply MSR=1) bit 3 (PSE) PDE.PS, PDE/PTE.res, CR4.PSE, #PF(1xxxb) bit 2 (DE) CR4.DE, DR7.RW=10b, #UD on MOV from/to DR4/5 bit 1 (VME) CR4.VME/PVI, EFLAGS.VIP/VIF, TSS32.IRB bit 0 (FPU) FPU 说明 内容 #0 Intel 处理器不支持; 返回值EAX, EBX, ECX, 和 EDX都是0. #1 AMD K6 处理器, model 6, uses 使用第十位指示SEP. #2 如果APIC是无效的,那么APIC读到的是0. #3 AMD CPUID=0662h的K7 处理器如果是具有多处理器能力的版本可能也报告时0 EAX= 8000_0002h, 8000_0003h, and 8000_0004h 输入 EAX=8000_0002h 得到处理器名称的第一部分 EAX=8000_0003h 得到处理器名称的第二部分 EAX=8000_0004h 得到处理器名称的第三部分 输出 EAX EBX ECX EDX 处理器名称字符串#1 AMD K5 AMD-K5(tm) 处理器 AMD K6 AMD-K6tm w/ multimedia extensions AMD K6-2 AMD-K6(tm) 3D 处理器 AMD-K6(tm)-2 处理器 AMD K6-III AMD-K6(tm) 3D+ 处理器 AMD-K6(tm)-III 处理器 AMD K6-2+ AMD-K6(tm)-III 处理器 (?) AMD K6-III+ AMD-K6(tm)-III 处理器 (?) AMD K7 AMD-K7(tm) 处理器 (model 1) AMD Athlon(tm) 处理器 (model 2) AMD Athlon(tm) 处理器 (models 3/4, 6/7, and 8 -- programmable) Centaur C2 #2 IDT WinChip 2 IDT WinChip 2-3D VIA Cyrix III CYRIX III(tm) (?) VIA Samuel (?) VIA Ezra (?) Intel P4 Intel(R) Pentium(R) 4 CPU xxxxMHz (right-justified, leading whitespaces)顺便说一句,Intel只有P4以上才支持。 Transmeta Transmeta(tm) Crusoe(tm) 处理器 TMxxxx 说明 内容 #1 是一个字符数组,以0H结尾. #2 WinChip是否支持决定于是否支持3D Now!. EAX= 8000_0005h 输入 EAX=8000_0005h 得到L1缓存容量和入口数量 #1 输出 EAX 4/2 MB L1 入口信息 EAX的位 描述 31..24 data TLB associativity (FFh=full) 23..16 data TLB entries 15..8 code TLB associativity (FFh=full) 7..0 code TLB entries EBX 4 KB L1入口信息 bits description 31..24 data TLB associativity (FFh=full) 23..16 data TLB entries 15..8 code TLB associativity (FFh=full) 7..0 code TLB entries ECX data L1 信息描述 bits description 31..24 data L1 cache size in KBs 23..16 data L1 cache associativity (FFh=full) 15..8 data L1 cache lines per tag 7..0 data L1 cache line size in bytes EDX code L1信息描述 bits description 31..24 code L1 cache size in KBs 23..16 code L1 cache associativity (FFh=full) 15..8 code L1 cache lines per tag 7..0 code L1 cache line size in bytes 说明 description #1 Cyrix 处理器使用0000_0002h做类似的描述 EAX= 8000_0006h 输入 EAX=8000_0006h 得到L1缓存容量和入口数量 输出 EAX 4/2 MB L2 入口信息 #1 位 描述 31..28 data TLB associativity #2 27..16 data TLB entries 15..12 code TLB associativity #2 11..0 code TLB entries EBX 4 KB L2 入口信息 位 描述 31..28 data TLB associativity #1 27..16 data TLB entries 15..12 code TLB associativity #1 11..0 code TLB entries ECX 统一 L2 cache 信息 #32 bits description 31..16 #4 unified L2 cache size in KBs #3 15..12 #4 unified L2 cache associativity #1 11..8 #4 unified L2 cache lines per tag 7..0 unified L2 cache line size in bytes 说明 描述 #1 0000b=L2 off, 0001b=direct mapped, 0010b=2-way, 0100b=4-way, 0110b=8-way, 1000b=16-way, 1111b=full #2 AMD K7 处理器 L2 cache 必须依赖于此信息. #3 AMD PUID=0630h 的K7 处理器(Duron) 具有 64 KB二级缓存,但是却报告只有1KB. #4 VIA Cyrix III CPUID=0670..068Fh (C5B/C5C)的处理器错误报告bits 31..24, 23..16, and 15..8. EAX 8000_0007h 输入 EAX=8000_0007h 电源管理信息(EPM) 输出 EDX EPM flags 位 说明 31..3 保留 2 (VID) voltage ID control supported 1 (FID) frequency ID control supported 0 temperature sensing diode supported EAX= 8000_0008h 输入 EAX=8000_0008h 得到地址大小信息 输出 EAX 地址大小信息 位 说明 31..16 保留 15..8 virtual address bits 7..0 physical address bits Transmeta EAX= 8086_0000h 输入 EAX=8086_0000h 得到CPUID的最大支持和厂商字符串 输出 EAX=xxxx_xxxxh 最大支持 EAX=l EBX-EDX-ECX 厂商字符串 TransmetaCPU Transmeta processor Transmeta EAX= 8086_0001h 输入 EAX=8086_0001h 得到处理器信息 输出 EAX=0000_0xxxh 处理器信息 family The family is encoded in bits 11..8. 5 Transmeta Crusoe TM3x00 and TM5x00 model The model is encoded in bits 7..4. Transmeta 4 Crusoe TM3x00 and TM5x00 stepping The stepping is encoded in bits 3..0. The stepping values are processor-specific. EBX=aabb_ccddh hardware revision (a.b-c.d), if 2000_0000h: see EAX=l 8086_0002h register EAX instead ECX=xxxx_xxxxh nominal core clock frequency (MHz) EDX=xxxx_xxxxh feature flags description of indicated feature bits 31..4 reserved bit 3 (LRTI) LongRun Table Interface bit 2 (???) unknown bit 1 (LR) LongRun bit 0 (BAD) recovery CMS active (due to a failed upgrade) Transmeta EAX= 8086_0002h 输入 EAX=8086_0002h 得到处理器信息 输出 EAX xxxx_xxxxh reserved or hardware revision (xxxxxxxxh) see EAX=l 8086_0001h register EBX for details EBX aabb_ccddh software revision, part 1/2 (a.b.c-d-x) ECX xxxx_xxxxh software revision, part 2/2 (a.b.c-d-x) Transmeta EAX=8086_0003h, 8086_0004h, 8086_0005h, and 8086_0006h 输入 EAX=8086_0003h 得到信息字符串第一部分 EAX=8086_0004h 得到信息字符串第一部分 EAX=8086_0005h 得到信息字符串第一部分 EAX=8086_0006h 得到信息字符串第一部分 输出 EAX-EBX-ECX-EDX 信息字符串 #1 Transmeta 20000805 23:30 official release 4.1.4#2 (例子) 说明 说明 #1 以00h为结尾的字符串. Transmeta EAX= 8086_0007h 输入 EAX=8086_0007h 得到处理器信息 输出 EAX xxxx_xxxxh 当前时钟频率 (MHz) EBX xxxx_xxxxh 当前电压 (mV) ECX xxxx_xxxxh 当前占用率 (0..100%) EDX xxxx_xxxxh 当前的延迟 (fs) 神秘的功能 EAX= 8FFF_FFFEh 输入 EAX=8FFF_FFFEh 未知 #1 输出 EAX 0049_4544h DEI (according to one source: Divide Et Impera = Divide And Rule) EBX 0000_0000h 保留 ECX 0000_0000h 保留 EDX 0000_0000h 保留 说明 说明 #1 这个方法仅仅被 AMD K6 支持. 神秘的功能EAX= 8FFF_FFFFh 输入 EAX=8FFF_FFFFh 未知 #1 输出 EAX EBX ECX EDX string NexGenerationAMD 说明 说明 #1 这个方法只被he AMD K6支持. 其他 输入 EAX=xxxx_xxxxh 其他 输出 EAX=xxxx_xxxxh EBX=xxxx_xxxxh ECX=xxxx_xxxxh EDX=xxxx_xxxxh 不明确 代码如下: type TCPUIDResult = packed record EAX: DWord; EBX: DWord; ECX: DWord; EDX: DWord; end; TCPUInfo =packed record Name: string[48]; Brand: Word; APIC: DWORD; Vendor: string[12]; Frequency: Real; Family: integer; Model: integer; Stepping: integer; EFamily: integer; EModel: integer; EStepping: integer; MMX: Boolean; MMXPlus: Boolean; AMD3DNow: Boolean; AMD3DNowPlus: Boolean; SSE: Boolean; SSE2: Boolean; IA64: Boolean; X86_64: Boolean; end;
function CPUID(EAX: DWord): TCPUIDResult; var rEAX, rEBX, rECX, rEDX: DWord; begin asm push EAX push EBX push ECX push EDX mov EAX,EAX &nbs上一页 [1] [2] [3] [4] 下一页 没有相关教程
|
|
教程录入:mintao 责任编辑:mintao |
|
|
上一篇教程: 简单的在线升级的实现方法 下一篇教程: Sender 的應用:所有Edit共用一個過濾格式 |
|
|
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网] |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
|
|
|
|
|
|
|
同类栏目 |
|
|
赞助链接 |
|
|
500 - 内部服务器错误。
|
|
|
|
|
|