Conroe强在哪儿?Core vs K8架构解析
Intel Core 微架构很明显是曾经取得过巨大成功的 P6 微架构的继承者。不过,它加入了很多新的特性和设计,比如微指令融合技术、宏指令融合技术、内存相关性预测和庞大的 SIMD 及浮点执行资源。
与优秀的 AMD K8 处理器的设计相比,采用 Core 微架构的处理器是更宽、更有效率、更加乱序化的处理器设计。当我们对 Jack Doweck 提出“Core 微架构中庞大的执行资源需要 SMT 技术才能完全利用”的观点的时候,Jack Doweck 表示不同意。全新的内存相关性预测技术从指令级并行的层次上把 load 操作的并行性提高了一大块,而 Core 微架构强大的一级缓存与二级缓存带来的高带宽可以帮助处理器把执行单元的利用率保持在与 Pentium M 处理器相近的水平上。这样,与时钟频率相同的 Pentium M 处理器相比,Core 微架构多出的三分之一的执行资源可以获得接近三分之一的性能提升。
那么,对 AMD 来说,是否意味着“Game Over”?首先,我们几乎可以肯定,在 AMD 下一代的处理器上肯定会有一些明显的变化。然后,现在还不能说 K8 处理器的生命周期已经结束了。AMD 可以做的一种明显的升级措施是增强其处理器的 SSE 执行性能,可以通过增加执行单元的位宽,或者增加浮点流水线中的执行单元的数量。
为了保证浮点单元的实力得到充分的发挥,AMD 应该提高处理器缓存的带宽。旧的 K7 处理器的二级缓存相当慢,而 K8 处理器已经可以把二级缓存能够提供的带宽加倍。我们可以期待 AMD 在未来的处理器的二级缓存上使用256-bit的总线位宽。
最后,AMD K8 处理器的整数性能也还有很大的提升空间。K8 处理器对 load 操作的乱序执行并不优秀,这是从 K7 处理器开始就存在的弱点。实际上,我们知道 AMD 的设计师对此非常清楚,但是在 K8 处理器上没有做出改进非常令人惊讶。如果能够更加有效的对 load 操作进行乱序执行,即使不能达到 Core 微架构所采用的内存相关性预测技术的效果,也可以期待5%的性能提升。这也是 Pentium M 处理器能够在某些类型的应用程序中击败 K8 处理器的重要原因之一。
这些只是一些我们熟悉的方面。除此之外,可能还会有更多的措施可以使 K8 处理器延续的更久。
再来看一下采用 Core 微架构的服务器产品Woodcrest,考虑到服务器应用程序中能够发挥指令级并行能力的地方并不多,Core 微架构没有应用超线程技术应该是它仅有的缺点。这个小缺点是 Core 微架构的设计思想导致的,因为 Core 微架构需要顾及服务器平台、桌面平台和移动平台。这也许会使 Sun 公司和 IBM 公司在某些需要进行多线程应用的服务器平台上得到机会。不过,采用 Core 微架构的4核产品 Tigerton 很快就要到来,也许可以弥补这个劣势。那么,现在我们的读者应该清楚了:你很难从 Core 微架构中找出明显的缺陷。
不过,具有讽刺意义的是,就在一年前,Intel 还并不重视提升IPC(Instructions Per Clock)和ILP(指令级并行能力)。多核被认为是未来的发展趋势,而单核的性能似乎无关紧要。因此在 Dobbs 博士的文章中曾经提到“The free lunch is over”(免费的午餐结束了),他认为以后只有增大缓存才能带来IPC的微弱提升,开发者把注意力集中在处理器的IPC效率上的日子已经一去不复返了。一些研究者甚至认为,具有简单的、顺序执行的架构的处理器才是未来的方向。
我们却非常怀疑“Threading is our only savior”(多线程是唯一的救世主)。Unreal 3 游戏引擎的开发者 Tim Sweeney 曾经指出,在下一代游戏引擎中开发多线程的代码是非常大的挑战。宽流水线、高频率的处理器被否定得有一些过快。NetBurst 微架构的设计使用了 LVS 电路设计的策略来实现极高的频率,而 Core 微架构并没有采用这种策略。但是,它仍然是一个采取极宽流水线的、采取乱序执行策略的处理器,这是那些不想花费太大力气在编写多线程应用程序上的程序员的免费的午餐。从这个角度来说,对双核处理器发展的需求可能不会那么太迫切。让用户得到更高的性能是软件开发者和处理器设计者共同的责任。是的,双核是好东西,但是单核的性能仍然重要。