Conroe优势分析 Core vs K8架构解析

互联网 | 编辑: 2006-07-21 17:00:00编译 一键看全文

宽动态执行(Wide Dynamic Execution),高级数字多媒体增强技术(Advanced Digital Media Boost),智能内存访问技术(Smart Memory Access),高级智能缓存技术(Advanced Smart Cache)――这些都是 Intel 的市场部人员重点宣传的技术,所有的这些技术造就了 Intel 新推出

3

  使用集中式保留站也是把 Core 微架构称作“P8 微架构”的理由之一,这是相对古老的 P6 微架构的第二项巨大的提升。它利用保留站并调度与分配执行单元来执行微指令。执行结束后,执行结果被存储到乱序缓冲区内。这样的设计方式无疑是继承自Yonah、Dothan 甚至 P6 微架构。

  最大的区别并不能立即从图表上看出来。Intel 先前的处理器需要2个时钟周期才能完成一次分支预测操作,而 Core 微架构只需要1个时钟周期。而 AMD 的 K8 处理器也只需要1个时钟周期就可以完成一次分支预测操作。

  另外一处令人惊讶的地方是 Core 微架构的 SSE 多媒体指令执行性能。Core 微架构拥有3组非常强大的128-bit的 SSE 执行单元,其中2组是对称的。拥有如此强大的SSE执行资源,Core 微架构在执行128-bit SSE2/SSE3指令时将远远超过 K8 处理器。

  在 K8 处理器上,1条128-bit的 SSE 指令会被解码成2条64-bit的指令,因为 K8 处理器的 SSE 执行单元只能执行64-bit的指令。所以说,从这个角度看,Core 微架构的SSE处理能力至少是 K8 处理器的2倍。如果是对64-bit的浮点进行操作,Core 微架构每个时钟周期可以处理4个双精度浮点数的计算,而 K8 处理器可以处理3个。

  就整数执行单元来说,Core 微架构比 Pentium 4 处理器和 Dothan 处理器也有很大的提高,而与 K8 处理器处于同样的水准――如果只考虑执行单元的数量的话,Core 微架构与 K8 处理器都拥有3组ALU。如果也考虑 AGU 的话,K8 处理器拥有3组,甚至比 Core 微架构的2组要更有优势。这可能会使 K8 处理器在一些不太常见的整数计算中有优势,比如解密运算。不过,Core 微架构拥有的更深、更灵活的乱序缓冲区和更大、更快速的二级缓存可以在绝大多数整数运算中消除 K8 处理器这个小小的优势。

 自从采用 P6 微架构的 Pentium Pro 处理器之后,X86 处理器开始拥有乱序发射和执行指令的能力。不过,乱序缓冲区内平均大约三分之一的指令很难重排序――就是那些 load 操作。把 load 操作提前执行可以极大的提高性能。与需要数据的时候才进行 load 操作相比,尽可能早的开始 load 操作十分有用,因为这可以更有效的把一级缓存及二级缓存的延迟隐藏掉。

  这很容易理解。假设现在有一个 ALU 操作需要某数据,可是该数据不在一级缓存中。如果 load 该数据的操作在该 ALU 操作之前就已经执行完毕,那么访问二级缓存的延迟就不会对性能产生影响。不过,需要注意的是,如果 load 操作针对的数据在程序中还有 store 操作要对其进行写入,那么就不能把 load 操作提前到该 store 操作之前执行。因为这样的情况下,如果提前执行 load 操作的话,意味着你得到的会是错误的数据,而不是最新的。

 Intel 内存相关性预测技术

  上图中的 Load 2 操作不能提前执行,因为它操作的数据与 Store 1 操作的数据相同,需要等待 Store 1 操作先完成。只有 Store 1 执行完毕,数据Y才拥有正确的值。不过 Load 4 操作没有理由不能提前进行,它不需要等待 Store 1 或者 Store 3 操作完成。这样,通过把 Load 4 操作提前,load 单元有更多的时间去获得正确的操作数。

  不过,之前的处理器在这种情况下――有 store 操作存在――都不会把 load 操作提前。因为处理器不知道 store 操作针对的数据单元与 load 操作是否相同。如果想要搞清楚是否相同的话,需要计算存储器地址。这十分困难,因为在指令乱序和调度的时候,存储器地址还是未知的。

  这时需要注意一个事实:load 操作读取到一个错误数据的概率相当小,只有1%到2%。所以,Intel 的 Core 微架构设计师 Jack Doweck 决定,允许所有的 load 操作提前执行,假设所有的 load 操作读取到的数据都是正确的。而为了应对错误的发生,Intel 加入了一个预测器。

  根据 Jack Doweck 的描述,以及我们对以前的 P6 微架构和 Pentium M 处理器的了解,我们制作了下面的图表。注意这并非 Intel 官方的图表。

 Core 微架构乱序执行引擎

  预测器做出预测,并指示乱序缓冲区是否可以把某 load 操作提前执行。在 load 操作提前执行之后,冲突监测单元会扫描MOB(Memory Reorder Buffer),查看是否有 store 操作与 load 操作冲突。如果有冲突发生的话,load 操作必须重新执行,这时大约会损失20个时钟周期。不过与之前的处理方式相比,Core 微架构采用的这种处理方式总体上肯定可以提高处理器的效率。

  检测某 load 操作和某 store 操作是否是针对同一内存地址的行为称作内存相关性预测(memory disambiguation)。Core 微架构允许 load 操作提前到 store 操作之前执行的处理方式可以带来性能上的巨大提升。在某些测试代码中,这个提升甚至达到了40%。虽然我们在实际的应用程序中不会看到如此大的提升,但是无疑这项技术会带来令人印象深刻的提升――我们可以期待10%到20%的性能提升。

  不要忘记,load 操作可能是所有操作中最重要的操作。不仅仅因为 load 指令占了X86处理器内所有微指令的三分之一强,还因为当 load 操作发生时可能导致的巨大延迟会引起处理器的等待。那么,这项极其灵活的 load 操作乱序执行技术与其它架构的处理器相比是什么情况呢?

 Load 操作处理方式比较

  旧的 P6 微架构和 Penium M 处理器也已经可以较好的处理 load 操作,可以把某 load 操作提前到另外的 load 操作之前进行,也可以提前到已知不会发生冲突的 store 操作之前进行。P6 微架构的内存乱序缓冲区(Memory Reorder Buffer,简称MOB)采用如下的规则:如果在乱序执行窗口中存在与某load操作内存地址相同的store操作,则该load操作不能提前执行;如果在乱序执行窗口中存在内存地址未知的store操作,则任何load操作不能提前执行;某store操作不能提前到另外一个store操作之前执行。

  相比之下,K8 处理器要逊色的多,它只能把 load 操作移动到不相关的 ALU 操作之前进行,而不能移动到其它 load 操作之前,当一个 load 操作等待某 store 操作执行的时候,处理器会浪费大量的时钟周期。这意味着 K8 处理器在指令乱序这方面受到极大的限制。

  这也许是 K8 处理器在游戏和整数计算等方面输给 Core 微架构的最重要的原因之一,尽管它拥有延迟更低的内存子系统和更多的整数执行资源。整数运算进行的存储器操作经常有许多未知的地址需要计算,而浮点运算则不是这样,它对存储器的访问是更加规范的。这也是 K8 处理器在浮点运算方面不输给 Dothan 处理器的原因之一。

  当 load 操作和 store 操作都已经进入 Load/Store 单元的队列中的时候,K8 处理器允许 load 操作在不冲突的 store 操作之前执行。不幸的是,这时把 load 操作提前执行已经不能隐藏缓存缺失所带来的延迟。你可以认为这是 K8 处理器拥有的 Load/Store 乱序机制,但是它在流水线中的位置太靠后,比起 P6 微架构、Pentium M 处理器和 Core 微架构所采用的技术相差甚远。

Core 微架构拥有庞大的执行资源和巨大的共享式二级缓存,看起来是非常适合应用 SMT(Simultaneous Multi Threading)技术的处理器设计。但是,Intel 并没有在 Core 微架构中应用 SMT 技术。其原因并不是 SMT 技术不能带来好的结果。Intel 的工程师接受的任务是研发拥有极佳性能的、可以适应服务器和桌面系统和移动系统等多种平台的处理器。而SMT技术只有在服务器平台上才能带来最大的性能提升――最高可以达到40%。因此以色列团队的工程师们决定放弃SMT技术。另外,SMT技术还会使处理器中发热最大的部分更热,所以说,SMT 并不适合 Core 微架构的“单个微架构统一所有平台”及“功耗最优化平台”的设计思想。

  至于引入集成式内存控制器(Integrated Memory Controller,简称IMC),Intel 的工程师表示花费在内存控制器上的晶体管不如放到二级缓存上。这个观点当然会引起极大的争议。不过有一点是可以肯定的:二级缓存的功耗会比内存控制器更小。Intel 的这个选择也许是因为把内存控制器放到芯片组上使得他们可以在不改变处理器设计的情况下支持新类型的内存。考虑到 Intel 的桌面平台和移动平台使用 DDR2 内存模组,而服务器平台将使用 FB-DIMM 内存模组,这样做的灵活性就很明显了。改进的内存相关性预测技术及预取单元等可以弥补不集成内存控制器带来的损失。那么,集成内存控制器会提高 Intel 处理器的性能吗?几乎是肯定的,但是 Intel 目前还在考虑其它的选择。

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 微架构并没有采用这种策略。但是,它仍然是一个采取极宽流水线的、采取乱序执行策略的处理器,这是那些不想花费太大力气在编写多线程应用程序上的程序员的免费的午餐。从这个角度来说,对双核处理器发展的需求可能不会那么太迫切。让用户得到更高的性能是软件开发者和处理器设计者共同的责任。是的,双核是好东西,但是单核的性能仍然重要。

提示:试试键盘 “← →” 可以实现快速翻页 

总共 3 页< 上一页123
一键看全文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑