导航:ZOL首页 > CPU频道 > CPU新闻 | ![]() |
据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那里得到主频错了,要么倍频错了。不过我们从上面的结果来看14X的倍频满足降频的机制。所以问题应该出在主频上,于是我们使用最新的1.27版的CPU-Z来看结果,它使用了另外的方法来计算主频,没有使用TSC。
从1.27版CPU-Z的结果看,主频是2.8GHz,这是正确的结果,FSB也正确的显示为200MHz。那么我们就要问为什么之前的软件都错误了呢?为什么他们都显示主频3GHz呢?问题就在于TSC不再随着真实的主频递增了。主频是2.8GHz时,TSC仍旧随着3.0GHz的速度增加。用平常的软件很难深入了解这个问题,因为处理器使用率大了以后会导致倍频上升。
从上面的结果看出TSC的确是罪魁祸首,是它导致了那些软件的误报。为了进一步揭露这个现象,我们再一次使用ScienceMark V2中的L2延迟测试。这个测试仅仅和处理器的结构有关,换句话说,所有Prescott处理器,不论主频多少,应该得到一样的结果。
Intel最后却给出了解释。大意是:目前的PRM(程序员参考手册)中没有给出完整的关于P4的TSC的描述。但是我们会适时更新它,包括以下几点:CPUID 0xF30之后的P4的TSC的确是运行在固定频率的,它在启动的时候就被设定好了,这个要求是操作系统厂商提出的。这种固定TSC的工作方式更适合于作为wall clock timer,而目前主要的应用的确是这样而不是计算主频。如果你要计算主频,Intel推荐使用PMON记数器来计算平均主频。
总的来说,Intel承认了它对TSC工作方式的改变,而我们希望看到的是Prescott推出时就对这个问题进行解释,而不是现在。而真正的原因到底是不是操作系统厂商要求这样做的我们当然没办法证实。
这片新闻告诉我们:要经常更新测试软件;另外今后可能将看到平均主频来表示性能而不再是实际主频了。
我要评评 | 买笔记本,台式机 拨打800-858-2399,为您量身打造! | |
相关产品 | 所有“Intel”产品 | |||||
|
相关文章 | Intel | |||||||||||||||||||
|
相关经销商 | 免费注册公司信息 我要在此被推荐 | ||||||||||||||||||||||||||||||
|