"); //-->
你了解CPU流水线吗? |
作者: |
让我们先来了解一下流水线(Pipeline)。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就像工业生产上的装配流水线。在CPU中由5??6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5??6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水(如图1)。 流水线是CPU性能的一个重要参数。流水线设计的不同是由CPU本身的构架所决定的,而采用几级的流水线是由CPU设计的目的决定的。我们知道K7和PⅢ的流水线为10级,K8为12级的;P4既有20级的(Northwood和Willamette核心)也有31级的(Prescott核心),这取决于CPU的核心。可是还有一些问题是容易让人忽视的,下面就让笔者来谈一谈流水线带来的误区。 处理器流水线基本可以划分为:指令预取→指令解码→指令执行→载入/储存→写回寄存器这五个部分。在一个周期内只能进行单一的“行为”,如“预取”、“解码”等,但不否认可以同时进行这五个操作。 流水线可以被比喻为“楼梯”,不管采用几级流水线,一个周期内所达到的高度都是一个楼层的高度。也就是说楼梯采用的阶数越多,坡度越小,同时路程也越长;这样对于构架一定的情况下,楼梯的阶数必然有一个最佳值。CPU的主频,可以将其看成登楼梯的某人的速度,而在一定的时间内人所到达的高度便是CPU的性能。这样说,或许不够清晰,我们不妨用具体的数值来看一下。假设楼梯的阶数为10(K7),速度为1GHz,它完成一个周期的时间就是10/1=10。而如果楼梯的阶数为20(P4),速度为2GHz,完成一个周期的时间也是10(20/2)。也就是说采用20阶需要2倍的速度才可以在同样的时间内完成相同的任务。但这种计算方法过于简单,在实际运算中并不是这样的(如图2)。也就是说20阶楼梯的路程并不是10阶路程的2倍,但这个比方却能很形象地说明流水线的长短与频率之间的关系。 那么既然如此,为什么CPU厂商还在不断加长CPU的流水线呢?Intel最新的Prescott核心的CPU流水线长达31级。增加的流水线级数,设计起来比较容易,电路比较简单,每级执行的操作也简单,同时有利于提升处理器的频率。“可提升处理器的频率”这一点对厂商来说很重要,可以让其在频率的竞争中处于领先的位置。但有一利就有一弊,超长流水线所带来的负面效应,就是分支预测性能的下降。分支误预测仍是Intel最弱的一环。分支预测发生在流水线的第一段,如果处理器误预测了一个分支,它必须从流水线中冲掉在错误分支方向上执行的全部指令,然后在正确的程序分支方向上重新启动指令执行和处理。流水线越长分支误预测造成的性能损失越大。简单地说Pentium 4处理器在运行中如果分支预测准确,运行速度会很快,如果预测错误,那么Pentium 4处理器将比AMD处理器受到更多周期的惩罚。 前面笔者曾提到过“如何设计流水线是由CPU本身的构架决定的”。其实,关于流水线不仅仅只是文中开头的那几个数字。因为设计的不同,AMD的CPU包括整数流水线和浮点流水线。如K7构架的整数流水线为10级,而浮点流水线(又称“流水线深度”)15级;K8构架的整数流水线在K7的基础上增加了2级(即12级),浮点流水线也是如此(即17级)。而Intel的流水线就更为特殊,因为其特殊的构架它并不分整数和浮点流水线,而是将8级指令获取/解码的流水线分离出来,因此严格说起来,Northwood和Willamette核心有28级流水线,而Proscott有39级流水线,是现在Athlon 64(K8)架构流水线的两倍。 CPU是一个整体单纯地看待某一个性能参数是不明智的,所以现在AMD和Intel都在提出各自对CPU性能评价的标准。AMD提出“TPI ??True Performance Initiative??理念”,即所谓真实性能标准理念,是指协助用户全面理解适合实际应用需求的电脑性能的一种理念。它既取决于CPU的时钟频率(以MHz或GHz计量),又取决于CPU在规定时钟周期内可以完成的工作量??以每时钟周期完成的指令数(IPC)计量??。真实性能就等于时钟频率与单位时间周期完成工作量的组合,即应用性能=??时钟频率/MHz??×??每时钟周期完成的工作量/IPC??。而Intel也提出用“耗电/性能”作为衡量CPU性能的标准。 结论一:流水线的提出可以将复杂的操作或问题简单化(分成几个简单的部分,个个击破)。AMD CPU浮点运算比较强劲,与它单独设计浮点流水线不无关系,而Intel在整数和解码方面一直独占鳌头,与它“将8级指令获取/解码的流水线分离出来”有很大关系。 结论二:文中提到楼梯的比喻并不贴切,因为它不能反映出同时进行的多个操作。不过,倒很能说明流水线越长就越需要高频率来支持。 结论三:长流水线有利于提升CPU频率,但主频不是惟一衡量CPU性能的参数,对于此时CPU技术的高度发展,用其来衡量CPU的性能并不合理,这也是就Intel在频率竞争中放弃追求长流水线的原因。 最后,笔者希望大家不要片面地将流水线作为衡量一款处理器的重要标准,毕竟CPU只有实际应用中获得出色的表现才 |
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。