的linux 查询cpu信息息是这样吗

换了CPU,怎么系统里头还是原来的CPU信息
如果风扇的散热效率不够,就算换了新风扇也不行。如果不是风扇的原因,还可能是以下几点:
1.cpu导热硅脂变干老化。老化变干的硅脂里面导热的颗粒会聚积,这时就使cpu无法正常的散热了。
2.电脑机箱风道不畅。机箱内设备在工作时散发出大量的热量,如果风道不畅通就会产生局部过热的现象,cpu也有可能会产生过热现象。
3.病毒的影响。木马程序从远程控制计算机的一切活动,包括让计算机重新启动,这样会让cpu产生更多负载,导致升温。
4.系统文件损坏。系统文件被破坏,有可能会产生系统在启动时会因此无法完成初始化而强迫重新启动,这样很容易让cpu温度上升。
换CPU是不需要重新装系统的。如果是win9X的话要有CPU的驱动,一定要装驱动程序。如果是其他操作系统那么就不需要了,其他操作系统会自动安装驱动的。中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
人的综合分
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?查看: 1464|回复: 2
我今天新买的CH8,为什么CPU的信息有
我今天新买的CH8,为什么CPU的信息有这样的显示?
我通过 “我的电脑”-->右键 属性,在常规中看到的CPU信息是这样?其它的朋友显示什么?IBM corporation Intel(R) Pentium(R) processor 1.86GHz&&797HMz,512 MB。而且这个797刚开始的时候是334HMz,很是奇怪?能告诉我什么原因吗?
呵呵, 这就是Intel 的SpeedStep 技术阿,就是可以随电力消耗情况或者CPU繁忙程度进行自动的频率调整。像你这种情况就是进行降频了,可能是正在使用电池或者是此刻系统负荷比较少吧!!
谢谢。还真不知道这会事,学习了c++获取cpu信息 - c_dragon - 博客园
随笔 - 145, 文章 - 0, 评论 - 61, 引用 - 0
原文地址:http://blog.csdn.net/jamesliulyc/article/details/2028958
1、什么是cpuid指令
&&& CPUID指令是intel IA32架构下获得CPU信息的汇编指令,可以得到CPU类型,型号,制造商信息,商标信息,序列号,缓存等一系列CPU相关的东西。
2、cpuid指令的使用
&&& cpuid使用eax作为输入参数,eax,ebx,ecx,edx作为输出参数,举个例子:
&__asm&{&&mov eax, 1&&cpuid&&...&}
&&& 以上代码以1为输入参数,执行cpuid后,所有寄存器的值都被返回值填充。针对不同的输入参数eax的值,输出参数的意义都不相同。&&&
为了更好的在C++中使用cpuid指令,可以使用类对指令进行封装,在类中定义一个专门的函数负责cpuid的执行,他需要一个输入参数。还需要定义四
个成员变量存储cpuid执行以后返回来的值。由于这四个寄存器都是32位长的,可以使用unsinged long 类型变量存储。
&typedef unsigned long DWORD
&class CPUID&{&public:&&...&private:&&void Executecpuid(DWORD eax);&// 用来实现cpuid
&&DWORD m_&&&// 存储返回的eax&&DWORD m_&&&// 存储返回的ebx&&DWORD m_&&&// 存储返回的ecx&&DWORD m_&&&// 存储返回的edx
&void CPUID::Executecpuid(DWORD veax)&{&&// 因为嵌入式的汇编代码不能识别 类成员变量&&// 所以定义四个临时变量作为过渡&&DWORD&&DWORD&&DWORD&&DWORD
&&__asm&&{&&&mov eax, veax&;将输入参数移入eax&&&cpuid&&;执行cpuid&&&mov deax, eax&;以下四行代码把寄存器中的变量存入临时变量&&&mov debx, ebx&&&mov decx, ecx&&&mov dedx, edx&&}
&&m_eax =&// 把临时变量中的内容放入类成员变量&&m_ebx =&&m_ecx =&&m_edx =&}
&&& 这样就可以通过直接调用Executecupid()函数的方式来执行cpuid指令了,返回值存在类成员变量m_eax, m_ebx, m_ecx和m_edx中。
3、获得CPU的制造商信息(Vender ID String)
&&& 把eax = 0作为输入参数,可以得到CPU的制造商信息。&&& cpuid指令执行以后,会返回一个12字符的制造商信息,前四个字符的ASC码按低位到高位放在ebx,中间四个放在edx,最后四个字符放在ecx。比如说,对于intel的cpu,会返回一个&GenuineIntel&的字符串,返回值的存储格式为:
&&&&&&&&&& 31&&&&& 23&&&&& 15&&&&& 07&&&&& 00&&&&&&& EBX| u (75)| n (6E)| e (65)| G (47)&&&&&&& EDX| I (49)| e (65)| n (6E)| i (69)&&&&&&& ECX| l (6C)| e (65)| t (74)| n (6E)
&&& 因此可以这样实现他:
&string CPUID::GetVID()&{&&char cVID[13];&&&// 字符串,用来存储制造商信息&&memset(cVID, 0, 13);&&// 把数组清0&&Executecpuid(0);&&// 执行cpuid指令,使用输入参数 eax = 0&&memcpy(cVID, &m_ebx, 4);&// 复制前四个字符到数组&&memcpy(cVID+4, &m_edx, 4);&// 复制中间四个字符到数组&&memcpy(cVID+8, &m_ecx, 4);&// 复制最后四个字符到数组
&&return string(cVID);&&// 以string的形式返回&}
4、获得CPU商标信息(Brand String)
在我的电脑上点击右键,选择属性,可以在窗口的下面看到一条CPU的信息,这就是CPU的商标字符串。CPU的商标字符串也是通过cpuid得到的。由于
商标的字符串很长(48个字符),所以不能在一次cpuid指令执行时全部得到,所以intel把它分成了3个操作,eax的输入参数分别是
0xxx,每次返回的16个字符,按照从低位到高位的顺序依次放在eax, ebx,
ecx, edx。因此,可以用循环的方式,每次执行完以后保存结果,然后执行下一次cpuid。
&string CPUID::GetBrand()&{&&const DWORD BRANDID = 0x;&&// 从0x开始,到0x结束&&char cBrand[49];&&&&// 用来存储商标字符串,48个字符&&memset(cBrand, 0, 49);&&&&// 初始化为0
&&for (DWORD i = 0; i & 3; i++)&&&// 依次执行3个指令&&{&&&Executecpuid(BRANDID + i);&&&&&&memcpy(cBrand + i*16, &m_eax, 16);&// 每次执行结束后,保存四个寄存器里的asc码到数组&&}&&&&&&// 由于在内存中,m_eax, m_ebx, m_ecx, m_edx是连续排列&&&&&&&&// 所以可以直接以内存copy的方式进行保存&&return string(cBrand);&&// 以string的形式返回&}
5、检测CPU特性(CPU feature)
&&& 我98年初买第一台电脑的时候,CPU能支持MMX就很了不起了。现在的intel
CPU,台式机的好点的都支持Hyper-Threading了,移动的要支持Speed
Sted。这些都是CPU的特性。CPU的特性可以通过cpuid获得,参数是eax =
1,返回值放在edx和ecx,通过验证edx或者ecx的某一个bit,可以获得CPU的一个特性是否被支持。比如说,edx的bit
32代表是否支持MMX,edx的bit 28代表是否支持Hyper-Threading,ecx的bit 7代表是否支持speed
sted。下面就是获得CPU特性的例子:
&bool CPUID::IsHyperThreading()&&// 判断是否支持hyper-threading&{&&Executecpuid(1);&&// 执行cpuid指令,使用输入参数 eax = 1
&&return m_edx & (1&&28);&&// 返回edx的bit 28&}
&bool CPUID::IsEST()&&&// 判断是否支持speed step&{&&Executecpuid(1);&&// 执行cpuid指令,使用输入参数 eax = 1
&&return m_ecx & (1&&7);&&// 返回ecx的bit 7&}
&bool CPUID::IsMMX()&&&// 判断是否支持MMX&{&&Executecpuid(1);&&// 执行cpuid指令,使用输入参数 eax = 1
&&return m_edx & (1&&23);&&// 返回edx的bit 23&}
&&& CPU的特性还有很多,这只是平时我们听到比较多的三个,更多的特性请参考intel的资料。
6、获得CPU的缓存(cache)&&& &&& 缓存,就是CACHE,已经成为判断CPU性能的一项大指标。缓存信息包括:第几级缓存(level),缓存大小(size),通道数(way),吞吐量(line size)。因此可以使用一个结构体来存储缓存信息。
&struct CacheInfo&{&&&&&&// 第几级缓存&&&&&&// 缓存大小,单位KB&&&&&&// 通道数&&&&&&// 吞吐量
&&CacheInfo()&&&&// 构造函数&&{&&&level = 0;&&&size = 0;&&&way = 0;&&&linesize = 0;&&}
&&CacheInfo(int clevel, int csize, int cway, int clinesize) &// 构造函数&&{&&&level =&&&size =&&&way =&&&linesize =&&}&};&&& &&&
缓存信息可以通过eax = 2的cpuid来得到(得到的不光有cache信息,还有其他的一些信息),返回值在eax(高24位), ebx,
ecx和edx,总共15个BYTE的信息,每个BYTE的值不同,代表的意义也不同,所以需要用一个哈希表存储各种不同BYTE的定义,可以定义一个
map类型的类成员存储这些资料。我把资料上和缓存有关的信息存储如下:
&m_cache[0x06] =& CacheInfo(1, 8, 4, 32);&m_cache[0x08] =& CacheInfo(1, 16, 4, 32);&m_cache[0x0a] =& CacheInfo(1, 8, 2, 32);&m_cache[0x0c] =& CacheInfo(1, 16, 4, 32);&m_cache[0x2c] =& CacheInfo(1, 32, 8, 64);&m_cache[0x30] =& CacheInfo(1, 32, 8, 64);&m_cache[0x60] =& CacheInfo(1, 16, 8, 64);&m_cache[0x66] =& CacheInfo(1, 8, 4, 64);&m_cache[0x67] =& CacheInfo(1, 16, 4, 64);&m_cache[0x68] =& CacheInfo(1, 32, 4, 64);
&m_cache[0x39] =& CacheInfo(2, 128, 4, 64);&m_cache[0x3b] =& CacheInfo(2, 128, 2, 64);&m_cache[0x3c] =& CacheInfo(2, 256, 4, 64);&m_cache[0x41] =& CacheInfo(2, 128, 4, 32);&m_cache[0x42] =& CacheInfo(2, 256, 4, 32);&m_cache[0x43] =& CacheInfo(2, 512, 4, 32);&m_cache[0x44] =& CacheInfo(2, );&m_cache[0x45] =& CacheInfo(2, );&m_cache[0x79] =& CacheInfo(2, 128, 8, 64);&m_cache[0x7a] =& CacheInfo(2, 256, 8, 64);&m_cache[0x7b] =& CacheInfo(2, 512, 8, 64);&m_cache[0x7c] =& CacheInfo(2, );&m_cache[0x82] =& CacheInfo(2, 256, 8, 32);&m_cache[0x83] =& CacheInfo(2, 512, 8, 32);&m_cache[0x84] =& CacheInfo(2, );&m_cache[0x85] =& CacheInfo(2, );&m_cache[0x86] =& CacheInfo(2, 512, 4, 64);&m_cache[0x87] =& CacheInfo(2, );
&m_cache[0x22] =& CacheInfo(3, 512, 4, 64);&m_cache[0x23] =& CacheInfo(3, );&m_cache[0x25] =& CacheInfo(3, );&m_cache[0x29] =& CacheInfo(3, );
&&& m_cache是类成员,定义如下:
&map&int, CacheInfo& m_&// Cache information table
&&& 在得到返回值以后,只需要遍历每一个BYTE的值,找到在m_cache中存在的元素,就可以得到cache信息了。代码如下:
&typedef unsigned char BYTE;
&DWORD CPUID::GetCacheInfo(CacheInfo& L1, CacheInfo& L2, CacheInfo& L3)&{&&BYTE cValues[16];&&&&&&// 存储返回的16个byte值&&DWORD result = 0;&&&&&&// 记录发现的缓存数量&&Executecpuid(2);&&&&&&// 执行cpuid,参数为eax = 2&&memcpy(cValues, &m_eax, 16);&&&&&// 把m_eax, m_ebx, m_ecx和m_edx存储到cValue
&&for (int i = 1; i & 16; i++)&&&&&// 开始遍历,注意eax的第一个byte没有意义,需要跳过&&{&&&if (m_cache.find(cValues[i]) != m_cache.end())&&// 从表中查找此信息是否代表缓存&&&{&&&&switch (m_cache[cValues[i]].level)&&// 对号入座,保存缓存信息&&&&{&&&&case 1:&&// L1 cache&&&&&L1 = m_cache[cValues[i]];&&&&&&&&&case 2:&&// L2 cache&&&&&L2 = m_cache[cValues[i]];&&&&&&&&&case 3:&&// L3 cache&&&&&L3 = m_cache[cValues[i]];&&&&&&&&&default:&&&&&&&&&}&&&&result++;&&&}&&&&}
&&& 7、获得CPU的序列号
&&& 序列号无处不在!!CPU的序列号用一个96bit的串表示,格式是连续的6个WORD值:XXXX-XXXX-XXXX-XXX-XXXX-XXXX。WORD是16个bit长的数据,可以用unsigned short模拟:
&typedef unsigned short WORD;
&&& 获得序列号需要两个步骤,首先用eax = 1做参数,返回的eax中存储序列号的高两个WORD。用eax = 3做参数,返回ecx和edx按从低位到高位的顺序存储前4个WORD。实现如下:
&bool CPUID::GetSerialNumber(SerialNumber& serial)&{&&Executecpuid(1);&// 执行cpuid,参数为 eax = 1&&bool isSupport = m_edx & (1&&18);&// edx是否为1代表CPU是否存在序列号&&if (false == isSupport)&// 不支持,返回false&&{&&&&&}&&memcpy(&serial.nibble[4], &m_eax, 4);&// eax为最高位的两个WORD
&&Executecpuid(3);&// 执行cpuid,参数为 eax = 3&&memcpy(&serial.nibble[0], &m_ecx, 8);&// ecx 和 edx为低位的4个WORD
CPUID还能获得很多信息,以上实现的都是最常见的。完整的代码和有关cpuid的资料我会用附件的形式附在文章结尾。昨天代码写完后拿给朋友看,朋友
骂我使用了太多的memcpy()函数进行赤裸裸的内存操作...其实我这么做的目的是提高程序的性能,减少代码量,但是可读性就降了下来,不喜欢这种风
格的朋友可以自己改一下。还有,因为CPUID类只是提供了很多的接口,没有存储数据的功能,所以类以Singleton的方式设计,使用方法可以参考我
代码中的test2.cpp文件
cpuid的资料cpuE86118什么型号
全部答案(共1个回答)
ORE E 8600
这两种处理器都是四核的!但是I5处理性能比较强些,集成的显卡比较弱,A8相对来说显卡和处理性能比较均衡些,如果是有独立显卡,那就选I5,如果只有核显,也就是集显...
自美国经济优先认证机构委员会推出社会责任国际标准(SA8000)以来,发展中国家和发达国家围绕它的性质及作用所引发的争议就从未停止过。社会责任标 准旨在通过有道...
超频的问题,要具体问题具体分析的。你要求得这么详细,只能给你推她了。在他的指导下超,最好电脑前有电话。
华硕电脑股份有限公司 (中国大陆地区 )
免费服务热线:...
不知道为什么会选择安利的东西,并没有觉得他们家的东西有多好。
只不过传销的力度比较大而已。
答: B. 机器指令
答: 还是不错的哦,技术还不是很成熟毕竟是才出来的哦
给个好评哦!~~
答: 电脑 你还得看是笔记本 还是台式机 结构不一样 怎么回答?
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区}

我要回帖

更多关于 cpu信息 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信