Prescott核心的失败
尽管有架构上的先进性,Prescott核心的Pentium 4还是英特尔的一次失败。英特尔还指望Pentium 4架构的CPU能跑上5GHz,同时使得它的后继产品能提高到10GHz的水平。然而在多次的修改和改进后,Prescott核心最多只能跑到3.8GHz。而且这时的CPU的功耗已经达到了115瓦。根据不同的说法其中的漏电量在35-50%左右。
Prescott项目失败了,但也不能因此就断言它的整个架构一无是处,相反改进后的Netburst架构的设计思想很有创造性。至于我为什么这么说,就让我从软件方面说起吧。
软件的IPC的“不友好性”
首先,请注意一般的程序代码是不允许CPU完全发挥其指令级并行的能力。为了说明问题,我们以视频编码为例。在现代的CPU上,视频编码程序一般可以在每个时钟周期里运行0.6-0.8个指令。其次,一般程序代码中有将近20%的指令是分支指令,50%的指令为内存操作。在视频编码中,分支一般少于10%,而内存操作则在60%左右。除了分支指令和内存操作指令,其它的大多数指令一般为求和操作,比如“ADD”等。而另有一些内存操作的指令也会用到一些求和时要用到的CPU单元。
你还应该注意的是在很多程序的算法中包含着大量的计算,而这些计算操作往往需要以前一个计算操作的结果为前提,这就产生了一个相关性。结果你不可能在第一个操作结束前就进行第二个计算。
许多研究表明,大理想情况下大多数设计复杂的CPU可以达到每个时钟周期运行2条或者再多一点的指令数,这相当于比今天的CPU要快上两倍。
聚焦Prescott
现在请看下面Prescott的架构图。让我们看看Prescott是如何解决上述问题。
 Prescott的架构 最重要的是应该让内存操作尽可能的快。所以,Prescott把它的L1Cache和L2Cache各自增加了一倍。它还拥有两个专用的地址产成单元(Address Generation Units),一个用于存储,而另一个用于装载。
因为内存的工作速度和CPU相比要慢许多—考虑一下当前的DDR-II 533的内存其默认的工作频率也只是266MHz这个事实,你就会明白CPU对内存的操作是很费宝贵的时钟周期的。而寄希望于达到4GHz或者更高水平的Prescott为了将等待Cache命中的影响降到最低,它的存储缓存(store buffer)从Northwood时的24增加到32,同时把载入请求缓存的容量也扩充了一倍(load request buffers)。这样一来Prescott在同一时刻能允许更多的Cache失效发生。另外,提供一个更智能的硬件预测引擎也是一种有效的降低因内存的高延迟带来的不利影响的方法。
针对分支预测不中的情况,经过优化过的Prescott的分支预测引擎可以正确的预测到以前Northwood所有预测不中的10%。单此一点,就可以让Prescott有20%的性能上的提升。当然,跟踪缓存(trace cache)可以确保在预测不中的情况下也不需要重新回到译码状态。这样,因为预测不中的损失也从39级降低到31级。在大多数情况下因为在跟踪缓存中保存着已经译好的指令,这8级译码环节是不需要重复进行的。
|
|