为什么实际频率只有1.8G的AMD 2500+处理器运行速度比实际频率2.4G的P4-2.4B还快?为什么采用0.13微米制程的Tulatin核心的处理器最高只能做到1.4G,反而采用0.18微米制程的Willamette核心的处理器却能轻松做到2G?下面我们就来分析一下到底是什么原因导致以上两种“怪圈”的存在。
每块CPU中都有“执行管道流水线”的存在(以下简称“管线”),管线对于CPU的关系就类似汽车组装线与汽车之间的关系。CPU的管线并不是物理意义上供数据输入输出的的管路或通道,它是为了执行指令而归纳出的“下一步需要做的事情”。
每一个指令的执行都必须经过相同的步骤,我们把这样的步骤称作“级”。管线中的“级”的任务包括分支下一步要执行的指令、分支数据的运算结果、分支结果的存储位置、执行运算等等…… 最基础的CPU管线可以被分为5级:
1、取指令
2、译解指令
3、演算出操作数
4、执行指令
5、存储到高速缓存
你可能会发现以上所说的5级的每一级的描述都非常的概括,同时如果增加一些特殊的级的话,管线将会有所延长:
1、取指令1
2、取指令2
3、译解指令1
4、译解指令2
5、演算出操作数
6、分派操作
7、确定时
8、执行指令
9、存储到高速缓存1
10、存储到高速缓存2
无论是最基本的管线还是延长后的管线都是必须完成同样的任务:接受指令,输出运算结果。
两者之间的不同是:前者只有5级,其每一级要比后者10级中的每一级处理更多的工作。如果除此以外的其它细节都完全相同的话,那么你一定希望采用第一种情况的“5级”管线,原因很简单:数据填充5级要比填充10级容易的多。而且如果处理器的管线不是始终充满数据的话,那么将会损失宝贵的执行效率——这将意味着CPU的执行效率会在某种程度上大打折扣。
那么CPU管线的长短有什么不同呢?
其关键在于管线长度并不是简单的重复,可以说它把原来的每一级的工作细化,从而让每一级的工作更加简单,因此在“10级”模式下完成每一级工作的时间要明显的快于“5级”模式。最慢的(也是最复杂)的“级”结构决定了整个管线中的每个“级”的速度——请牢牢记住这一点!
我们假设上述第一种管线模式每一级需要1个时钟周期来执行,最慢可以在1ns内完成的话,那么基于这种管线结构的处理器的主频可以达到1GHz(1/1ns = 1GHz)。现在的情况是CPU内的管线级数越来越多,为此必须明显的缩短时钟周期来提供等于或者高于较短管线处理器的性能。
好在,较长管线中每个时钟周期内所做的工作减少了,因此即使处理器频率提升了,但每个时钟周期缩短了,每个“级”所用的时间也就相应的减少了,从而可以让CPU运行在更高的频率上了。
如果采用上述的第二种管线模式,可以把处理器主频提升到2GHz,那么我们应该可以得到相当于原来的处理器2倍的性能——如果管线一直保持满载的话。
但事实并非如此,任何CPU内部的管线在预读取的时候总会有出错的情况存在,一旦出错了就必须把这条指令从第一级管线开始重新执行,稍微计算一下就可以得出结论:如果一块拥有5级管线的CPU在执行一条指令的时候,当执行到第4级时出错,那么从第一级管线开始重新执行这条指令的速度,要比一块拥有10级管线的CPU在第8级管线出错时重新执行要快的多,也就是说我们根本无法充分的利用CPU的全部资源,那么我们为什么还需要更高主频的CPU呢??
回溯到几年以前,让我们看看当时1.4GHz和1.5GHz的奔腾四处理器刚刚问世之初的情况:当时Intel公司将原奔腾三处理器的10级管线增加到了奔腾四的20级,管线长度一下提升了100%。最初上市的1.5GHz奔腾四处理器曾经举步维艰,超长的管线带来的负面影响是由于预读取指令的出错从而造成的执行效率严重低下,甚至根本无法同1GHz主频的奔腾三处理器相对垒,但明显的优势就是大幅度的提升了主频,因为20级管线同10级管线相比,每级管线的执行时间缩短了,虽然执行效率降低了,但处理器的主频是根据每级管线的执行时间而定的,跟执行效率没有关系,这也就是为什么采用0.18微米制程的Willamette核心的奔腾四处理器能把主频轻松做到2G的奥秘!
固然,更精湛的制造工艺也能对提升处理器的主频起到作用,当奔腾四换用0.13微米制造工艺的Northwood 核心后,主频的优势才大幅度体现出来,一直冲到了3.4G,长管线的CPU只有在高主频的情况下才能充分发挥优势——用很高的频率、很短的时钟周期来弥补它在预读取指令出错时重新执行指令所浪费的时间。
但是,拥有20级管线、采用0.13微米制程的Northwood核心的奔腾四处理器的理论频率极限是3.5G,那怎么办呢?
Intel总是会采用“加长管线”这种屡试不爽的主频提升办法——新出来的采用Prescott核心的奔腾四处理器(俗称P4-E),居然采用了31级管线,通过上述介绍,很明显我们能得出Prescott核心的奔四处理器在一个时钟周期的处理效率上会比采用Northwood核心的奔四处理器慢上一大截,也就是说起初的P4-E并不比P4-C的快,虽然P4-E拥有了更大的二级缓存,但在同频率下,P4-E绝对不是P4-C的对手,只有当P4-E的主频提升到了5G以上,才有可能跟P4-3.4C的CPU对垒,著名的CPU效能测试软件SuperPi就能反应出这一差距来:P4-3.4E的处理器,运算Pi值小数点后100万位需要47秒,这仅相当于P4-2.4C的成绩,而P4-3.4C运算只需要31秒,把同频率下的P4-3.4E远远的甩在了后面!!
AMD 2500+处理器,采用了10级管线,只有1.8G的主频却能匹敌2.4G的P4;苹果电脑的G4处理器,更是采用了7级管线,只有1.2G的主频却能匹敌2.8C的P4,这些都要归功于更短的管线所带来的更高的执行效率,跟它们相比,执行效率方面Intel输在了管线长度上,但主频提升方面Intel又赢在了管线长度上,因为相对于“管线”这个较专业的问题,大多数消费者还是陌生的,人们只知道“处理器的主频越高速度就越快”这个片面的、错误的、荒谬的理论!!这就是Intel的精明之处!!! (个人认为这段话是整篇文章的核心,看懂这段文字也就了解了这篇文章的精髓)
以上简单介绍了有关CPU的执行效率和管线方面的知识,大家一起交流共同进步!