现在来看,一个两-段流水线,只有另一条指令的一半被清洗了,因此时钟周期的浪费还不算很过分。再看看一条 10-段流水线。因为完成指令1需要
10 个时钟周期,处理器在错误的假设下正在处理的九个时钟周期全都白费了。同样,一个 20-段的流水线(比如 Willamette),一旦分支预测出错,将浪费
19 个时钟周期。
据估计这些低于 10% 的分支预测错误使奔腾 III 的性能降低了 20-40%,你对这种影响应该有一点初步认识了。考虑到大约只有
10-20% 的指令会出现分支,这就是说平均每 50-100 条指令(10-20% 的分支指令的 10%)才会出现一次分支预测错误。重申一遍,如果这
50 到 100 条指令都预测正确了的话,奔腾 III 的性能将会快上 20-40%。现在,你应该能够认识到一个好的分支预测算法的重要性了。
并且,你现在能够清楚,如果我们试图实现一条 500-段的流水线,一旦分支预测出错,性能的损失将非常的恐怖。
总结
流水线能够,也正在被用于提升系统性能,提高处理器的时钟频率。但事情不是制造尽可能长的流水线这么简单 —— 长流水线也有它的一些固有缺点和问题。物理空间的大小是一个例子(奔腾
IV 的尺寸要比奔腾 III 差不多大上一倍)。另外,随着流水线长度的增加,分支预测出错带来的惩罚也就越发的沉重。
结合我们前面的序言,不得不担心 Willamette 的 20-段流水线是否太长了,虽然时钟频率可以更高,但可能实际上妨碍了性能。虽然
Intel 做了打量的工作来改进分支预测算法以减少预测出错的频率,可是一旦分支预测出错,惩罚太沉重了。据估计,因为流水线太长,在相同的时钟频率下,Willamette
的性能可能要比奔腾 III 慢 20%。Intel 还有其它一些先进的体系机构,因此这种说法有可能是真的,也有可能不是真的
—— 但是有一点可以确定,得益于 20-段的流水线,Willamette 可以达到奔腾 III 所无法达到的高得多的时钟频率。要知道,时钟频率是一大卖点。可能少数熟悉内情的专业技术人员不会去选择时钟频率更高的处理器,但对大多数人来说,他们一定会这样做。
总之,目前有关 Willamette 性能的猜测终究只能是猜测。它有可能比同频的奔腾 III 快,也有可能比它慢。手上没有最终的那块硅晶片,我们无法确定到底会是个什么结果。