据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了
//本文摘自新浪北美,所有版权归原作者所有!
上一篇:解决QQ视频假死现象 |
下一篇: 微软作品,仅17k的虚拟光驱! |