非常在线首页 首页 > 产品频道 > CPU > 导购 >  正文

测试软件不再准?Intel对CPU动手脚

2005-03-04 作者:x86-secret x86-secret 编辑:小狗子 【复制本帖地址

    据x86-secret消息,他们发现了Intel对处理器的内部结构进行了秘密的改造,导致测试软件显示错误信息。要理解这条消息,必须具备一些基础知识,首先是了解CPU的内部时钟记数器的概念,或者被称为TSC。TSC首先在奔腾时代被引入Intel的处理器,其作用就是在一个固定的时间里计算CPU的时钟数。开机时TSC的记数器清零,然后每过一个时钟周期加一。它的数值可以被一个MSR读出,或者使用一条rdtsc的指令读出。在一秒钟时间里,一块200MHz的奔腾处理器在这个记数器里会增加200,000,000次,而P4 3.8GHz会增加38亿次。这个记数器使用一个64位的寄存器来存储,它的长度可以允许一块4GHz的处理器连续使用146年而不溢出。

    TSC有许多用途,首先,它被用于计算处理器的主频。读取主频的程序首先读取TSC的值,等待一个固定时间后再次读取TSC的值,从两者的差值中计算出处理器的真实主频。我们通过它可以实时的计算处理器主频,比如移动处理器中时钟是不停改变的,只有通过这样的方法才能实时显示主频。另外TSC可以被用来估计机器的性能,因为通过它可以知道执行一段代码这台机器到底用了多少时钟周期。许多测试软件使用这种方法计算FLOPS,共识是FLOPS=操作数/从TSC得到的时间。这段时间是通过系统主频和TSC得到的数值计算出来的。

    那么Intel如今采取了什么改变?简单来说,TSC可能不再和主频同步增加了。

    下面来看一点解释:从Prescott P4 REV F41开始,Intel使用了一种C1E机制来改变处理器的功耗。它可以在空闲的时候把处理器的倍频降低到14X,这样可以减少功耗和发热。而6XX系列的处理器引进了EIST机制,可以实时改变处理器的倍频和电压。这些改变导致了一些检测软件的显示错误。比如下面图中的情况。

    上图中使用了P4 630处理器,默认的BIOS,新装的系统。使用了三个软件:CPU-Z 1.26.3,Sandra 2005和CrystalCPUID 4.3.8.240。我们注意到所有软件都认出了主频3GHz,不过都把FSB错误的认为是215MHz,倍频是14X,真正的情况应该是15×200。这些软件的工作原理如下:

从TSC计算出处理器的主频 

从MSR寄存器中读出倍频 

主频除以倍频就得到FSB了

    无可非议的一点是这些结果是错误的,错误的根源要么是TSC那里得到主频错了,要么倍频错了。不过我们从上面的结果来看14X的倍频满足降频的机制。所以问题应该出在主频上,于是我们使用最新的1.27版的CPU-Z来看结果,它使用了另外的方法来计算主频,没有使用TSC。

    从上面的结果看,主频是2.8GHz,这是正确的结果,FSB也正确的显示为200MHz。那么我们就要问为什么之前的软件都错误了呢?为什么他们都显示主频3GHz呢?问题就在于TSC不再随着真实的主频递增了。主频是2.8GHz时,TSC仍旧随着3.0GHz的速度增加。用平常的软件很难深入了解这个问题,因为处理器使用率大了以后会导致倍频上升。

    下面使用一款小程序再次检验我们的结论。它使用了两种不同的机制来检验主频,一种是通过TSC,另外一种通过和CPU-Z 1.25一样的方法。

    从上面的结果看出TSC的确是罪魁祸首,是它导致了那些软件的误报。为了进一步揭露这个现象,我们再一次使用ScienceMark V2中的L2延迟测试。这个测试仅仅和处理器的结构有关,换句话说,所有Prescott处理器,不论主频多少,应该得到一样的结果。

    从结果看,正常情况下的确结果一样,但是当倍频下降到14X后,TSC仍旧以3.6GHz运行,这款测试软件又一次误报了成绩。那么Intel对TSC机制的改变会导致什么后果?显然是误导测试软件。我们已经看到,自动降倍频后,TSC不再按照真实主频工作了,很多软件就会产生错误。我们联系了Intel想得到一些消息,但是就如以往一样,毫无回音。我们又在Intel的论坛上贴了帖子,得到如下回复“这个问题的答案牵涉到Intel的机密,所以我们不能给出这个问题的解释”。我们只能自己猜测其原因:是要误导测试软件?要隐藏真实频率?要限制超频?要为双核心处理器作准备?

    不管答案是什么,我们估计Intel不会给出答案了。但是Intel最后却给出了解释。

    大意是:目前的PRM(程序员参考手册)中没有给出完整的关于P4的TSC的描述。但是我们会适时更新它,包括以下几点:CPUID 0xF30之后的P4的TSC的确是运行在固定频率的,它在启动的时候就被设定好了,这个要求是操作系统厂商提出的。这种固定TSC的工作方式更适合于作为wall clock timer,而目前主要的应用的确是这样而不是计算主频。如果你要计算主频,Intel推荐使用PMON记数器来计算平均主频。

    总的来说,Intel承认了它对TSC工作方式的改变,而我们希望看到的是Prescott推出时就对这个问题进行解释,而不是现在。而真正的原因到底是不是操作系统厂商要求这样做的我们当然没办法证实。

    这片新闻告诉我们:要经常更新测试软件;另外今后可能将看到平均主频来表示性能而不再是实际主频了。


打印】【评论】【硬件论坛】【非常在线社区】【关闭

本文共有 条评论,点击查看读者的评论!

发表评论:      昵称: 不用注册,可直接发表评论
发表内容:  
※您要为您所发的言论的后果负责,故请各位遵纪守法并注意语言文明。
硬 件 中 心
数 码 中 心
站 内 搜 索

关于我们 | 网站地图 | 广告刊例 | 招聘英才 | 联系我们 | 非常在线社区 | 将非常在线加到收藏夹

北京市海淀区西三环北路50号紫竹院豪柏国际B1-1702室 邮编:100048 网站电话:点击查看
Copyright © 2000 - 2007. All rights reserved. 非常在线 版权所有.京ICP证031006号