AMD的革新——下一代AMD处理器构架解析
技术空间
双核处理器成为市场主流已然是不可逆转的趋势,而CPU制造商也从单核到双核的巨大成功中看到了多核处理器的光明未来,于是AMD公司的4核处理器就呼之欲出了。
10h家族
Athlon这个品牌从K7时代开始,听到的次数已经快要让用户产生审美疲劳了,就在这个时候“AMD 10h处理器家族”这个品牌闪亮登场。我们所熟知的Agena、Agena FX、Kuma或者媒体曝光率甚高的Barcelona,都在AMD 10h系列处理器的范围之内。
“AMD 10h处理器家族”的中高端产品将被赋予Phenom这个新的品牌,用以取代目前盛极一时的Athlon系列品牌。Phenom在口语中是杰出人才的意思,这也寄托着AMD公司对新一代架构的无限希望。
面向高性能桌面用户的Agena系列产品,出现在市场上的时间将会在年底圣诞节档期上。在此之前,10h家族的高端产品Barcelona将在夏天出现在服务器市场,目前AMD已经放出了2.6GHz的Barcelona处理器测试成绩,它和现阶段产品相比相当不错。
从工艺制程来看,Barcelona系列产品采用的是65nm技术,初始频率设定在2.1GHz到2.3GHz(年内主要将面世的是TDP为90W左右、主频为2.3GHz的产品)。不过AMD表示,利用B0制程,在同样TDP的前提下10h系列核心实际频率还将有400Hz~500MHz的提升空间。
而年底的Phenom也可能是因为B0制程的引入,起始频率就至少站在2.2GHz~2.4GHz的水平线上,列表上的高频产品上探3.0GHz也并不意外。不过在45nm技术引入之前,中高频4核处理器的TDP在89W~120W之间的现象并不能得到缓解。

原生的力量
虽然把多个核心集成在一起是技术发展的必然趋势之一,但这些物理核心是如何整合起来的还是值得分析的问题。多物理核心的设计理念来源于MPS,这里面又分为SMP系统、ASMP系统和松耦合多处理器系统三种。
以Cell处理器为代表的ASMP流派,特点是每个核心相对简单,但数目可以集成相当庞大,上百个核心的Cell并不是什么天方夜谭。ASMP是一种比较松散的结构,任务请求和系统资源都由不同的处理器管理,系统将执行的所有任务按照一定的分配原则交给不同的处理器去完成。可以理解为各个核心相对独立,各自完成自己的任务然后上交。
AMD和Intel的多核心处理器在设计思路上都是源于SMP(Symmetric Multi-Processor,对称多处理器)系统,存储器、I/O等系统主要资源都被系统中的所有处理器共享,任务请求被仲裁器均匀地分配到所有可用的处理器上。SMP架构很重要的是均衡负载,我们可以看到在双核心的Opteron中,这两个物理内核各自拥有独立的1MB二级缓存,然后两个物理内核都是先连接在SRI(System Request Interface,系统请求接口)上,然后通过Crossbar Switch(交换控制台)与内置的内存控制器以及HT总线端口进行沟通。
目前双核处理器的设计已经趋向成熟,4核处理器最简单的办法就是2+2=4。将两个双核处理器集成到一块芯片上就可以直接实现4核处理器。在这种实现方法中两个双核处理器几乎是独立运作甚少均衡负载的,在系统请求送达的时候CPU只需要简单的安排向左走还是向右走即可。
那么什么是原生4核处理器呢?答案就是类似Barcelona的设计,把2+2变成1+1+1+1。每个核心具备自己单独的64KB的L1数据Cache、512KB的L2 Cache,然后四个核心共享2MB(或者更大)的L3 Cache。

从晶体管数目上来看,Barcelona核心是由4.63亿个晶体管构成的,而Brisbane核心只有1.54亿个晶体管,2MB的L3缓存会占用1亿左右的晶体管数目。简单计算就可以知道Barcelona比两个Brisbane核心加2MB的L3缓存还多出5500万个晶体管,这相当于多出了一块经典的Barton 2500+处理器。由此也可以看出,AMD所谓的原生确实不是简单的叠加,在SMP理念中非常重要的仲裁/分配、I/O控制等部分都有新的强化设计。
简单的2+2或者未来4+4打造的8核心处理器,这是加速多核CPU出现在市场上的秘诀,毕竟这需要的时间很短。打造原生多核处理器,在性能上肯定比简单叠加的产品要高,但是研发成本的增加却不容忽视。另外,技术并不是决定一家公司或者一件产品成功的唯一关键,上市时间也是主管们应该考虑的问题。
变更与增加:优化分支预测技术
从架构图上来看10h系列核心和K8相比非常的相似,在每个核心内基本找不出新增的单元。但它在细节上的增加与变更并不少,其中又以Fast load和间接分支预测器的引入、缓存与内存控制策略的变化等比较引人注意。
Faster load也就是指Out-of-Order load的能力。指令的执行通常是有先后的,在传统的观点中前面的指令未结束,后面的指令必须等待,因为前面指令的执行结果可能会对后续指令产生影响。但事实上不少指令相对而言是独立的,对这些独立的指令完全可以在前置指令结束之前利用空闲的单元装载并执行,这就能大大提高性能。
有资料显示30%左右的情形加入了Faster Load技术都能有效提高性能,和收益相比预测指令独立性的资源开销就比较微小了,而且10h系列核心有3个AGU,存储地址算出后只要没有数据关联问题就可以先载入,所以不会因为遇到预测错误的问题而损失性能。引入Faster Load技术是10h系列核心向竞争对手Core 2 Duo学习的地方,同时根据自己的特点还有所改进,相对K8核心,这项从无到有的技术出现意义不小。

1个512路的间接分支预测器也是10h系列核心的新增内容。对于分支指令,下一个指令数据块的获取如果引入分支预测机制必然可以提高性能,而K8架构对间接分支等情况并不具备预测能力。10h核心加入的这个间接分支预测器,是一个类似首选目标地址的历史记录表的设计,在ROB和RS需要间接分支的时候它就可以提供帮助。
缓存部分的变化基本都是量变性质的,比如10h系列核心L1的D-Cache依然采用的是两路的64KB设计,L2 Cahce是16路的512KB设计,都与K8核心无甚差别,新增的L3 Cache则是32路的2MB设计。

值得一提的是,数据预取器在10h系列核心中,将可以直接把数据预取到L1-D中,而不是K8架构的L2。通过Crossbar设置从其它核心的L1中预取也是允许的,不过AMD惯用的Cache关系设置或许会让事情变得更复杂。至于TLB部分的提升从K7开始就是每个版本必做的事情,L1-D对1GB页面的支持也并不是让人吃惊的事情。
在内存控制部分,K8的IMC是1个128b的界面,而10h系列核心IMC被拆分为两个64b的界面,且可以同时读写。这个拆分有利于多核心工作时更加灵活,且IMC在供电和频率和CPU核心方面可以不同,这也就意味着超频会更加容易。
在IMC中除了有更多的Buffer等设计以外,还具备有新的预取器,这个预取器拥有自己的Buffer,并不需要占用L2或者L3的空间,同时也像主板北桥上的预取器一样可以提升系统的性能。

最后的话
10h系列核心中的变化还有很多,比如利用Sideband Stack Optimizer把push、call、return 等指令的堆叠运算独立出解码与执行单元,将call、ret等指令从Microcode转为 Fastpath,还缩短了L2 Cache以及一些处理、存取周期技术。
在普通用户喜闻乐见的应用层面上,10h系列核心已经开始支持DDR3、5.2GT的HT3.0等新一代技术,包括对8核心处理器的支持也随着4条HT通道的成熟而出现,不过在最初的版本上,这些新一代技术的支持暂时不会被开放出来。最吸引人的是在能源管理上的变化,现阶段的多核心处理器的每个核心都还在做着齐步走的运动,而10h系列核心的每个核心都能独立进行5级P-State调节。也就是说可以针对性地、独立地设定每个物理核心的工作状态,这对节能是非常有帮助的。
不管是技术层面的量变,还是应用层面上的功能加入,AMD几乎把除了4 Issue以外能做的优化都抬到了桌面上来。这些性能上的优化,对服务器级的应用效果最好,对于桌面级的应用,也会随着时间越来越明显。