热点推荐
ZOL首页 > 服务器 > 评测与技术 > 技术分析与前瞻 > AMD新一代 Barcelona微架构全面解析

AMD新一代 Barcelona微架构全面解析


HARDSPELL/硬派网 【转载】 2007年03月23日 06:06 评论
回到顶部阅读

AMD大翻身!Barcelona处理器架构全解析

  随着Intel Core 2的发布,新一轮处理器性能竞赛全面开始了,而AMD也将在今年年中发布核心代号Barcelona的产品。此前对它的介绍虽然有一些,但都不全面,今天我们编译了Anandtech的文章,相信通过它可以对Barcelona有比较深入的了解。

  在几年前Intel在P6核心获得重大胜利之后,开始对它的处理器开发部门进行划分,其中一个队伍着重在NetBurst架构,而另一个则是在低功耗、高集成度核心方面,代表产品就是大家熟悉的用于笔记本平台的Pentium M处理器。

    当Intel的NetBurst架构处理器在性能和功耗方面受到全面挑战后,Intel不得不考虑把高性能的Pentium M处理器架构移向桌面平台,Israel Development Center (IDC,以色列研发中心)把Dothan的架构重新调整,让它转换为原生的双核,不过Dothan到Yonah的架构调整远比从Banias到Dothan要大,除了双核外,Yonah在微架构方面有很大的调整,并且针对桌面平台,也推出类似架构的Core 2。


『Barcelona架构特性全览』

    而AMD则经历了从K7到K8的变化,未来预计是K9和K10。就目前来说,AMD将在年中发布的Barcelona处理器是一个很好的反击机会,第三季度会推出桌面的版本,Intel则会在年底推出转换到45nm工艺的Penryn,相信今年将是处理器非常热闹的一年。接下来,就让我们来详细了解一下Barcelona的微架构情况。

回到顶部阅读

AMD Barcelona处理器物理规格全分析

  Barcelona是AMD的第一款四核处理器,它不像Intel的四核Kentsfield由两个双核Die拼接而成,这也是为什么AMD把它称为“原生”的原因。同时在工艺方面,它也采用65nm工艺,较K8在制造设计上要复杂很多,Barcelona需要总共11层金属层,而K8则为9层、Core 2也只有8层,更多的金属层会增加制造方面复杂程度,但是对最终消费者没有太明显的负面效应。


    在具备四个核心和2MB L3 cache后,Barcelona总共拥有463M个晶体管,较Kentsfield的582M要少119M。更少的晶体管给cache容量带来了局限性,每个Barcelona核心具备128KB L1 cache和512KB L2 cache,再对四核共享的2MB L3 cache进行一下分割,算起来核心总共有4.5MB cache,而Kentsfield的每个核心则拥有64KB L1 cache和一个共享的4MB L2 cache,整个Kentsfield拥有8.25MB cache,较Barcelona拥有超过80%的容量,这也是在晶体管方面多25.6%的原因。

    但是Barcelona又不是简单的一个带L3 cache的四核K8,我们可以计算一下它们的晶体管数目,除去cache的晶体管,一个双核Athlon 64 X2晶体管数目大概在94M,而Barcelona则在247M,双倍一下也达不到Barcelona的水平,而且简单的双倍计算也不是非常准确的,因为Barcelona只有一个Northbridge设计,所以多出的60M的晶体管是由于架构改进加强后的结果。

回到顶部阅读

Barcelona架构解析:引进全新的SSE128规格

  每一代CPU性能的提升,最大的根源都是架构方面有非常大的调整。从表中对比K8架构,Barcelona可以说是加强了很多,规格几乎都是成倍的增长。首先是SSE指令执行位宽,现在被AMD称为SSE128。在K8架构处理器中,两个SSE指令是并行处理的,SSE执行单元只有64-bits宽度,一个128-bit SSE指令操作,它不得不分割成两个64-bit指令操作,同样的一个128-bit SSE指令被获取后,它被首先解码成两个微操作(micro-ops),这会给这个指令带来多余的解码部分,效率上可想而知。


 

    Barcelona的SSE执行单元则扩充为128-bits(实际上,Intel之前对于core2也是这么做的),一个128-bit SSE指令操作可以不必分割成两个64-bit操作,这意味着更多的可利用带宽可以被使用,那个FP scheduler也可以执行这些128-bit SSE指令操作。

    SSE指令执行性能提升后也带来了另外一个瓶颈:指令获取带宽(instruction fetch bandwidth),这些128-bit SSE指令变得更大,同时为了最大化并行处理的解码数量,每周期32-bytes的带宽可以很好的解决这个问题,32-bytes的指令获取除了可以带来SSE代码带来好处外,同时也给整数代码带来了好处。

    在这之后CPU可以获取和解码更多的指令,你需要能更多的把数据传到核心中去处理,因此AMD也进一步提高了L1 data cache和Barcelonas SSE寄存器(registers)之间的带宽,现在Barcelona可以实现2 x 128-bit loads/cycle的性能,同时L2 cache和内存控制器的接口也被提升到128-bits/cycle后,总体上平衡了上面的改进所带来的性能瓶颈。

    SSE128的加强设计,和Intel对Yonah到Merom转变过程非常相像,在Conroe/Merom之前,Yonah在FP/SSE性能方面和K8没法相比,在此前的同频率下K8和Yonah的性能测试中,各项性能都可以打成平手,只有在视频编码方面不是这样,直到Core 2到来之后,才全面超过了AMD,相信SSE128的设计将给未来的Barcelona带来不错的表现。

回到顶部阅读

Barcelona架构解析:CPU核心架构优化调整

核心调整

    除了以上的改进以外,Barcelona在核心调整方面还有非常多的加强设计。首先从分支预测开始,总体来说,CPU的分支预测器的准确程度取决于设计的宽度和深度,在分支预测器不能有效预测的那些指令数量,决定了多少指令可以快速控制执行单元的运行。K8处理器的分支预测单元就是非常优秀的,而且为它的整体架构做了良好优化。

    Barcelona追加了512-entry indirect predictor(512输入非直接分支预测器),用来预测非直接分支。一个非直接性分支跳转,它的目的是跳转到存储器中的地址指向,换句话说,一个分支有几个目标。一个非直接分支发送CPU到存储器的地址,它包含了指令需要被分支到的地址。

    Intel追加了非直接预测器到他的Pentium M,设计灵感来源于更好的控制非预测分支数量将会带来更高效的性能(其中包括功耗方面的表现),这个设计同样也在此前的Prescott被采用,用来削弱NetBurst架构长管线设计所带来的性能上的损失。

    在Prescott中,这个简单追加设计带来了在SPEC CPU2000测试软件中12%的分支预测错误,但是AMD和Intel在算法结构上的区别则不被公开,在SPEC CPU2000的253.perlbmk测试项目中,非预测分支减少是非常明显的,达到了将近55%。

    非直接预测器并不是Barcelona唯一的性能提升亮点,回归堆栈(return stack)大小较K8有双倍大小的改进,举个例子,在一个很长的命令条中,命令代码包括了很多子程序(比如递归函数),CPU实际上会用完所有空间来纪录它的路径,一旦开始丢失回归地址的路径,就会导致无法进行下一步的分支预测,双倍大小的设计正好是为了解决这个问题,据说这个改进是在收到一个大型软件公司的请求才确定的。

    更多的优化调整

    当然还有一些调整,其中Translation Lookaside Buffers简称为TLBs,是用于虚拟地址向物理内存地址映射的作缓存的,TLBs的使用率是非常高的,但是因为程序变的越来越多,对内存的要求也就需要处理器设计者对TLB容量大小进行调整,相对于K7,K8就有增大,在Barcelona上,AMD也在重复这样的过程,比K8要大一些,但是它们现在支持1G pages,这对数据库应用和虚拟加载非常的有用,AMD同样在Barcelona上引进了128 entry 2M L2 TLB,用于满足更新的程序对大容量的需求。

    Intel在Pentium M上引进的另外一个加强设计是更低的integer divide latency,尽管现在它的细节还不是很多,但是AMD说明他们已经在Barcelona中减小这个延迟,我们还不清楚它的设计是不是和Intel的方法类似,但是预计在真实应用中,不会给性能带来太多的提升。

    还有一些不需要明显提升晶体管数目而提升性能的办法,就是把一些指令放到特殊的快速编码通道里面,这样可以很大程度上缩短指令解码的长度,作为sideband stack optimization(边带堆栈优化器,后面将具体涉及)优化加强一部分的CALL和RET-Imm指令现在也做了这样的处理,同样从SSE registers到 integer registers的MOVs也是这样。

    提到指令,AMD也在Barcelona引进了新的扩展:LZCNT和POPCNT,这两个指令被用于加密应用中,AMD也是也引进了四个新的SSE扩展:EXTRQ/INSERTQ, MOVNTSD/MOVNTSS,我们将在未来Inel的Penryn处理器中看到。

回到顶部阅读

Barcelona架构解析:边带堆栈优化器/更快的加载

 边带堆栈优化器

    最初在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。

回到顶部阅读

Barcelona架构解析:更快内存控制器/新的预取器

更快的内存控制器

    我们知道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已经在前面提到过。
回到顶部阅读

Barcelona架构解析:全新的三等级cache设计

    限于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。


    为了在性能和容量上进行平衡,AMD在设计了128KB L1 Cache和512KB L2 Cache后,多线程软件对多核心的要求也需要更高速的缓存来保持更好的性能。

    AMD并不想通过采用更大容量L2 cache的做法,取而代之的是追加一个第三级的Cache,而且这个Cache将被四核心所共享,在容量上也达到了2MB L3 cache。

    关于缓存的工作原理大家应该比较了解:当L1 cache已经满了之后,数据将被转到速度稍低的L2 cache,同样新的L3 cache类似,当L2 cache已经满了以后,数据将会传到L3 cache。不过控制它操作的算法则是针对四个核心,它在资源调度上有做协调,当CPU需要获取一些代码,一个备份将会在L3 cache中存储下来,因为这个数据可能被四个核心所共享,纯粹的数据加载则通过单独的核心。当数据在此之前已经被共享了,cache控制器会查看历史信息,同时保存这个备份,否则则被丢弃。

    L1 and L2 cache的Associativity则没有被改变,它们还是2-way和16-way,而新的L3 cache则是32-way set associative,通常在CPU-Z里面可以看到这些信息。
回到顶部阅读

Barcelona架构解析:功耗管理/虚拟技术性能提升

AMD虚拟技术加强

    同时在虚拟技术方面,Barcelona也有了相应的改进,拥有了更快的虚拟地址转换,在拥有多个客户OS的虚拟软件堆栈中,有一个内存地址转换必须处理,客户OS向系统管理程序的地址转换,因为每个客户OS拥有独立的内存管理,据AMD声称,目前这个转换是通过软件来实现的,并且是基于一个叫shadow paging的技术,而Barcelona提供的是硬件加速转换,AMD把它称为Nested Paging。

    根据推算大约系统管理程序所消耗的75%的时间是用于shadow paging,转换的地址是在Barcelonas TLBs中被缓存的,而且AMD指出Nested Paging并不需要太复杂的设定,这对于软件开发商来说就变得非常简单。

    功耗管理


    在功耗方面的设计,可以说非常值得关注,目前的Intel四核的功耗非常高,而Barcelona的四个核心工作电压都一样,同时内部的北桥单元则使用独立的电压计划,可以根据另外一个工作情况在0.8V到1.4V之间改变,它们的电压可以独立管理,这将提高功耗效率。

    独立的核心虽然共享同样的电压,但是每个核心都拥有自己的PLL电路,所以它们可以根据负载情况,运行在不同的频率下。

    Barcelona每个核心支持五个独立的p-states(频率等级)转换,改变只是在频率上,p-states完全是硬件控制的,所以我们不需要驱动就可以开启这个功耗管理特性,同时AMD也增加了clock gating(时钟频率比)的数量,同时65nm工艺允许AMD的首款四核的功耗表现就可以和目前的Opteron相当,表现非常的出色!

回到顶部阅读

AMD Barcelona服务器/桌面处理器蓝图全曝光

  当Intel发布它的首款Core 2处理器的时候,它的性能提升是大家有目共睹的,它的成功很大程度上是因为架构方面的改进,所有的Conroe, Merom和Woodcrest全面超过了基于NetBurst架构的Pentium 4。AMD在2003年引进的K8已经确实有些老了,Intel凭借着Pentium M架构实现了Athlon 64的反超,现在就看Barcelona的了。


AMD Opteron处理器蓝图』

    对大家来说最关心的还是具体发布产品的时间了。第一款新架构产品首先将在下一代Opteron中出现,预计将会在年中问世,首度发布的产品工作频率将在2.1GHz到2.3GHz之间,同时到年底将会有更高频率的产品。在桌面平台,AMD的Agena将会基于同样的架构,量产的时候频率会在2.7 - 2.9GHz之间,Kuma则是双核的版本,同时频率将会在2.0 - 2.9GHz之间。

『AMD桌面处理器蓝图』

    在价格方面,我们预计AMD会采取更加务实的策略,此前发布的Athlon 64 X2 6000+就是这样,相信在这方面能够跟竞争对手相抗衡。

    根据此前关于AMD去年和今年第一季度的营收情况,AMD今年第一季度可能无法实现预期的目标,相信阵痛过后,将会有有更加优异的表现。让我一起期盼Barcelona的到来吧,看看这次AMD是不是能干得很漂亮!

给文章打分 5分为满分(共0人参与) 查看排行>>
频道热词:LED照明  工作站  云计算  
视觉焦点
服务器评测与技术热点
排行 文章标题
TOP10周热门服务器排行榜
  • 热门
  • 新品
  • 系列
查看完整榜单>>