|
边带堆栈优化器
最初在Pentium M中,引进了一个叫“dedicated stack manager”(专注堆栈管理器)的特性,根据字面上解释,它是用于控制x86堆栈操作的,比如push, pop, call, return,它的意图就是为了把堆栈操作从所有运行代码中分离出来,以让处理器能够更加有效的处理其它任务。
在Barcelona中,AMD也引进了类似的叫Sideband Stack Optimizer(边带堆栈优化器)的技术,以让堆栈指令不再需要通过3-way解码,并通过整数执行单元的堆栈操作了,这个小小的优化设计可以带来整体性能的提升。
更快的加载
在以前的《新处理器之王!Core 2 Duo全面大评测》文章中,我们对Core 2的智能内存访问技术进行了解析,在对比系统内存存取表现,AMD K8却因内建内存控制器而比Intel Core微架构优胜,但由于Core微架构采用短Pipeline Stage架构及频率相对Netburst微架构低,加上高容量的L2 Cache并内建Shared Router Bus减少FSB使用,因此系统内存控取的表现差距已不像与上代Netburst微架构产品那么严重。而为了进一步拉近与K8架构上的内存性能距离,Intel还在Core微架构中加入全新的内存读取技术,称为Memory Disambiguation。

Memory Disambiguation是一个十分聪明的设计,通过Out of Order过程把内存读取次序作出分析。在传统的微架构里,内存读取是按流程顺序而被执行,如图上例子,Load 4是独立的Data X读取执行,也必需要等待其他Store 1、Load 2及Store 3工作完毕,即使Load 4的Data X和前面的资料存取动作并无关系,因为处理器并不会得到前面的动作是否会改变Data X的数值,所以不能重新排序并分析Load 4能否提前执行。

在Intel Core微架构中通过智能的分析机制,能预知Load 4的Data X是完全独立,并可让它提前执行。正因如此Memory Disambigutaion能减少处理器的等候时间减少闲置,同时减低内存读取的延迟值,而且它可以侦出冲突并重新读取正确的资料及重新执行指令,保证运作结果不会出现严重,但在正常情况下Memory Disambirutation出错的机会率很低。
可以看出Intel Core微架构,一个主要特性是加载指令可以绕过以前加载和存储的指令,平均来说在程序中所有指令的1/3是在加载的时候就完成了,所以如果能够提升加载性能,你就可以全面提升程序的运行性能,在Core微架构中,加载可以被重新排序,以确保需要这些数据的指令在存储访问非常繁忙的时候被执行。
AMD K8架构没有上面同等的乱序执行的协调能力。在没有集成内存控制器的情况下,Intel能够很轻松的执行更多的内存操作,Barcelona采用了类似的方法修正了这个问题,它也能够重新排序这些加载。但是Barcelona需要等待在决定是否这个加载可以被优先于存储执行之前,才把存储地址计算出来,通过这种方式,Barcelona不会有机会预测错误。AMD的设计者考虑到采用类似Intel的预测器的做法,但是好像对它的架构并没有太大益处,AMD能每个周期产生三个存储地址,因为它有3个AGUs (Address Generation Units),而相比Intel只有1个,所以Barcelona在这方面有优势。
从上面看,Barcelona的乱序执行能力加强后,应该会在这方面性能强于Core 2。
更快的内存控制器
我们知道AMD在K8上的成功,很大程度上是大胆的采用了集成内存控制器的做法,不过在Barcelona中它的性能又有了加强。
在Intel Xeon服务器的FB-DIMM内存架构中,可以同时执行读和写命令到AMB,而在标准的DDR2内存中,你只能同时进行一个操作,而且读和写的切换会有非常大的损失。如果是一连串的随机混合执行的话,将会带来非常严重的资源浪费,而如果是先全部读然后再转换到写的话,就可以避免性能的损失。K8内存控制器就采用读取优先于写的策略来提高运行效率,但是Barcelona则更加智能化。
但是读取的数据会被先存放在buffer中,而不采用先直接执行写,但当它的容量达到了极限就会溢出,为了避免这种情况,在此之前才对读写之间进行切换,同时可以带来带宽和延迟方面效率的提高。
K8核心配备的是128-bits宽度的单内存控制器,但是在Barcelona中,AMD把它分割成两个64-bit,每个控制器可以独立的进行操作,因此它可以带来效率上的不小提升,尤其是在四核执行的环境下,每个核心可以独立占有内存访问资源。
Barcelonas中集成的北桥部分(注意不是主板北桥)也被设计成更高的带宽,更深的buffers将允许更高的带宽利用率,同时北桥自身已经可以使用未来的内存技术,比如DDR3。
新的预取器
预取在很多领域的更多部件中都被广泛采用,当NVIDIA发布nForce2的时候,它就强调了智能预取的能力,来充分利用好128-bit内存总线的性能,而更近的Intel的Core 2处理器中被重点强调的每核心三预取器(prefetchers)可以明显减少内存的延迟。
而K8核心每个核心拥有两个预取器,一个是指令,另一个是数据,Barcelona核心仍然保留同样的数目,但是对他们进行了加强,最大的改变是数据预取器,现在可以把数据传到L1数据Cache中,而不是K8核心的L2 Cache。AMD认识到K8预取器的先进性,所以他们只做了上面的处理,同时AMD也提升了L1指令缓存的灵活性,来配合这两个高效请求的工作。
综合来看,似乎Intel的prefetchers在规格方面更有优势,Core 2处理器的每个核心带有两个数据和一个指令prefetchers,加上额外的两个L2 cache prefetchers,可以说是更为可观,但是不一样的设计,最终的性能胜负还不得而知。
Barcelona核心内部拥有自己的数据和指令prefetchers,但是最主要的改进是DRAM prefetcher(内存prefetcher),它位于内存控制器里面,在此前AMD从来没有使用过这样的逻辑设计,这个新的DRAM prefetcher掌管了所有的内存请求和动作,由于DRAM prefetcher要协调四个核心,它就掌控了整个芯片的性能的发挥,同时它不占用L2、L3 caches,它拥有自己独立的buffer来解决数据溢出问题,这个buffer拥有20 - 30个cache线路,其实这个buffer已经在前面提到过。
上一页 [1] [2] [3] [4] [5] [6] 下一页 |