CPU 的流水线也是这样。如果我们把它的四个步骤分成四道工序,这样,当第一条指令经过四个周期完成时,第二条指令也完成了三个步骤了,同时,第三条指令已经经过了两个环节,第四条指令完成了一道工序。虽然每条指令都要四个时钟周期,但每个时钟周期总有一条指令完成,因此,完全可以认为 1 个指令周期 = 1 个于时钟周期。不需要更高的制造工艺,CPU 的速度轻松提高了三倍。
486 时代,受当时制作工艺的限制,按照原来的设计体系,CPU 的速度已经很难再有较大幅度的提高了。正是由于流水线,才产生了从 486 到奔腾的质的飞跃。这一进步,远非现在在 CPU 中加几条专用指令所能比拟的。
流水线真是个好办法,如果我们把 CPU 的工作再细分一下,分成更多的工序,加长流水线,速度岂不是可以无限提升?想法当然是好的,可惜行不通。首先,流水线本身增加了 CPU 的复杂程度和工作量,设计、生产过长的流水线存在很多困难。第二,CPU 的工作到底不象是生产汽车。汽车生产线上,前一辆车和后一辆车是相互独立,互不影响的,但是 CPU 的指令却不同。很多情况下(分支判断语句),CPU 下一步该执行哪条指令由上一条指令的执行结果来决定。这种情况下,让流水线空着等待指令的执行结果,效率显然是极其低下的。所以,CPU 专门有一个分支预测算法,来预测上一条指令的执行结果并按照这个猜测的结果执行下一条指令。如果猜对了,当然皆大欢喜,猜错了,就清空流水线上的错误指令并重新执行新指令,当然,这时侯系统的性能就下降了。由于 CPU 的指令存在一定的规律性,所以现在比较好的分支预测算法,预测准确率可达 95%。