更快的内存控制器
我们知道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已经在前面提到过。
限于AMD的产能,AMD不可能和Intel那样有实力通过采用更多的晶体管的策略进行竞争,K8通过内存控制器来实现了这个弱势的超越,所以现在 Athlon 64 X2处理器每个核心只有512KB L2 cache,只相当于Intel 2002引进Northwood时的规格。
现在Intel的Core 2已经提到了4MB L2 cache,而目前AMD最快的CPU也只能达到一半的水平,这个限制同样在Barcelona上进一步体现,每个核心只会有512KB L2 cache,总计2MB,而现在Intel的四核Kentsfield总共拥有8MB L2 cache,到今年年底,Intel的Penryn预计将会达到12MB L2 cache。
498)this.style.width=498;" border=1 twffan="done">
为了在性能和容量上进行平衡,AMD在设计了128KB L1 Cache和512KB L2 Cache后,多线程软件对多核心的要求也需要更高速的缓存来保持更好的性能。
498)this.style.width=498;" border=1 twffan="done">
AMD并不想通过采用更大容量L2 cache的做法,取而代之的是追加一个第三级的Cache,而且这个Cache将被四核心所共享,在容量上也达到了2MB L3 cache。
关于缓存的工作原理大家应该比较了解:当L1 cache已经满了之后,数据将被转到速度稍低的L2 cache,同样新的L3 cache类似,当L2 cache已经满了以后,数据将会传到L3 cache。不过控制它操作的算法则是针对四个核心,它在资源调度上有做协调,当CPU需要获取一些代码,一个备份将会在L3 cache中存储下来,因为这个数据可能被四个核心所共享,纯粹的数据加载则通过单独的核心。当数据在此之前已经被共享了,cache控制器会查看历史信息,同时保存这个备份,否则则被丢弃。
498)this.style.width=498;" border=1 twffan="done">
L1 and L2 cache的Associativity则没有被改变,它们还是2-way和16-way,而新的L3 cache则是32-way set associative,通常在CPU-Z里面可以看到这些信息。
AMD虚拟技术加强
同时在虚拟技术方面,Barcelona也有了相应的改进,拥有了更快的虚拟地址转换,在拥有多个客户OS的虚拟软件堆栈中,有一个内存地址转换必须处理,客户OS向系统管理程序的地址转换,因为每个客户OS拥有独立的内存管理,据AMD声称,目前这个转换是通过软件来实现的,并且是基于一个叫 shadow paging的技术,而Barcelona提供的是硬件加速转换,AMD把它称为Nested Paging。
根据推算大约系统管理程序所消耗的75%的时间是用于shadow paging,转换的地址是在Barcelonas TLBs中被缓存的,而且AMD指出Nested Paging并不需要太复杂的设定,这对于软件开发商来说就变得非常简单。
功耗管理
498)this.style.width=498;" border=1 twffan="done">
在功耗方面的设计,可以说非常值得关注,目前的Intel四核的功耗非常高,而Barcelona的四个核心工作电压都一样,同时内部的北桥单元则使用独立的电压计划,可以根据另外一个工作情况在0.8V到1.4V之间改变,它们的电压可以独立管理,这将提高功耗效率。
498)this.style.width=498;" align=middle border=1 twffan="done">
独立的核心虽然共享同样的电压,但是每个核心都拥有自己的PLL电路,所以它们可以根据负载情况,运行在不同的频率下。
Barcelona每个核心支持五个独立的p-states(频率等级)转换,改变只是在频率上,p-states完全是硬件控制的,所以我们不需要驱动就可以开启这个功耗管理特性,同时AMD也增加了clock gating(时钟频率比)的数量,同时65nm工艺允许AMD的首款四核的功耗表现就可以和目前的Opteron相当,表现非常的出色!
当Intel发布它的首款Core 2处理器的时候,它的性能提升是大家有目共睹的,它的成功很大程度上是因为架构方面的改进,所有的Conroe, Merom和Woodcrest全面超过了基于NetBurst架构的Pentium 4。AMD在2003年引进的K8已经确实有些老了,Intel凭借着Pentium M架构实现了Athlon 64的反超,现在就看Barcelona的了。
498)this.style.width=498;" border=1 twffan="done">
AMD Opteron处理器蓝图
对大家来说最关心的还是具体发布产品的时间了。第一款新架构产品首先将在下一代Opteron中出现,预计将会在年中问世,首度发布的产品工作频率将在 2.1GHz到2.3GHz之间,同时到年底将会有更高频率的产品。在桌面平台,AMD的Agena将会基于同样的架构,量产的时候频率会在2.7 - 2.9GHz之间,Kuma则是双核的版本,同时频率将会在2.0 - 2.9GHz之间。
498)this.style.width=498;" border=1 twffan="done">
498)this.style.width=498;" align=middle border=1 twffan="done">
AMD桌面处理器蓝图
在价格方面,我们预计AMD会采取更加务实的策略,此前发布的Athlon 64 X2 6000+就是这样,相信在这方面能够跟竞争对手相抗衡。
498)this.style.width=498;" align=middle border=1 twffan="done">
根据此前关于AMD去年和今年第一季度的营收情况,AMD今年第一季度可能无法实现预期的目标,相信阵痛过后,将会有有更加优异的表现。让我一起期盼Barcelona的到来吧,看看这次AMD是不是能干得很漂亮!