救命稻草?剖析AMD Bulldzoer新品策略

运维 服务器运维
Bulldozer堪称是自1999年推出K7处理器以来的最重要产品更新。下面,我们便为读者简要分析AMD在Bulldzoer中做出这些设计更新的主要背景。

AMD公司在最近召开的HotChips会展上终于透露了其新款分别面向服务器和移动市场的Bulldozer和Bobcat处理器产品的有关细节,这两种处理器产品是AMD推出Opteron处理器之后最重要的一次产品升级,而其中Bulldozer更堪称是自1999年推出K7处理器以来的最重要产品更新。

AMD推土机、山猫新架构官方视频

以下,我们便为读者简要分析AMD在Bulldzoer中做出这些设计更新的主要背景。

[[14749]]

AMD推出Bulldozer产品的主要目的和宣传重点,是在这款处理器在传统的多核心处理器和SMT同时多线程这两种技术之外,又开拓出了一条新的多线程处理器设计道路。在传统的多核心处理器设计(又称CMP)中,每个处理器核心只能运行单个线程;而SMT则恰好相反,多个线程可以共享单个处理器核心的资源,并可以在单个处理器核心中被同时执行。

而Bulldozer则定位在CMP和SMT两种技术之间,在Bulldozer中,两个线程可以共享一个处理器核心的前端功能单元,但是整数执行资源部分则为线程独享式设计。

在进一步探察Bulldozer内部架构之前,我们必须要看清楚的是,尽管AMD方面想极力撇清自己的产品与SMT的相似之处,并将他们的方案自称为“第三种多线程处理器设计”,但是Bulldozer其实质其实是以SMT为基础的一种改良设计。#p#

SMT处理器基础

传统SMT架构设计需要解决的主要问题是:“如何在处理器经常需要等待速度较慢的主内存传送关键代码或数据的情况下,保证处理器可以经常运行在满负荷的工作状态下?”在实际应用中,要想将某个线程的执行状态保存下来,并将处理器的执行资源转交给另外一个线程,是一个非常复杂而耗时的过程,而且通常需要进行大量的内存操作。因此,处理器通常会一次载入两个或两个以上数量的线程有关代码和数据,然后再由执行机构在这几个线程中根据线程的优先级进行动态切换。采用这种设计的处理器中,如果有某个线程处于停等内存数据的状况,那么处理器便可以迅速切换为执行另外一个不需要停等数据的线程,而无需进行复杂的上下文开关切换操作。

基于这种思路,为了让SMT设计的处理器能够正常工作,处理器中所有的代码或数据存储机构所存储的内容必须一致或采用分区的形式保存数据。这是大家必须首先牢记的一点,我们在文章的后面还会用到这个结论。

这里我们举双路SMT设计的处理器为例。这种处理器中需要设置两套不同的架构寄存器组(architectural registers)和换名寄存器组(rename registers),其中一套供给线程A使用,另一套则供线程B使用;同时,处理器的指令队列缓存器( instruction queues)的容量也需要设计得很大,这样才可以让指令窗口中存有足够多的分属两个线程的指令条数,以便处理器的执行单元能够时时处于较忙的工作状态。

最后,SMT处理器中由两个线程共享的功能单元(这些单元通常是执行管线上各个执行单元的指令缓存)必须被设计成任何一个线程都不能完全独占的结构。也就是说,这些共享单元必须在两个线程之间进行平衡,时刻保证供给某个线程使用的功能单元不会处在空置的状态之下。

基于以上的原因,SMT处理器的内核需要增加许多额外的功能单元,系统的整体功耗也会因此而提升。不过由于采用以上设计之后,处理器可以不需要把大量的时间和功率耗费在等待慢速的内存传送上,因此还可以算得上是物有所值。

#p#

SMT处理器的优势与劣势

SMT设计对多线程负载而言是较为适用的,多线程负载中的每一个线程通常都不会完全耗尽处理器的所有资源。对双路SMT处理器而言,假如正在执行的两个线程都需要花大量时间等待主内存的数据传送,那么它的执行效率与不支持SMT的传统双核CMP处理器是类似的,而且由于SMT处理器的硬件功能单元总数要比传统的双核CMP少很多,因此其执行效率要比CMP更好。在这种理想状态下,每个双路SMT执行核心都可以比得上一对不支持SMT的传统CMP核心,这样处理器的总体功耗便会减小许多。

据AMD宣称,由于无需在等待主内存传输数据方面耗费过多的时间,因此在实际应用中,一个双路SMT核心的效率相当于1.3个传统CMP核心。换句话说,如果主内存的数据传输操作不再是系统的瓶颈,那么SMT处理器会由于其中的执行单元数量相对较少而执行效率相比CMP核心降低,在这种情况下,SMT处理器会与传统单核设计的处理器类似(主要执行单元数量与传统单核类似),不过其中又比传统的单核处理器设置了更多额外的硬件单元,这样整体的效率相比传统的CMP多核设计便会出现下降的现象。

AMD给出的1.3倍数据恐怕有点略显悲观,之前曾有人宣称SMT的执行效率可能达到传统CMP核心的1.7倍左右。不过这种效率值与处理器的实际工作负载是有很大依赖作用的,而这些效率倍数通常都是在比较极端的条件下给出的,所以大家不应该过分迷信这样的效率倍数数字。实际上,在实际的工作中SMT处理器经常会由于执行单元数量的不足,而令其中执行的线程处于停等的状态下。

Bulldozer方案:进一步增加整数执行单元的套数

深度剖析Bulldzoer及AMD产品战略探讨

面对以上SMT处理器的不足,AMD提出的解决方案是直接增加整数执行单元的数量,这样每个线程都可以独享一套整数执行单元。而传统的SMT处理器则通常只会在执行单元的缓存部分进行扩容,比如为不同线程设置独享的寄存器文件等;而Bulldozer中则在增加寄存器文件的基础上进一步增加了整数执行单元的数量,这样每一个线程都能独享一套整数执行管线资源。

总体上看,Bulldozer设计与传统SMT处理器设计的唯一区别就是增加了整数执行单元的套数。因此,我们说Bulldozer并不是真正意义上的“双核”设计,而应该说是“1.5核”设计更为恰当一些,相比之下,传统SMT处理器的设计则可以称为是一种“1.2核”的设计。#p#

Bulldozer会是AMD的救命稻草吗?

AMD自称Bulldzoer的每个核心都可以平均按1.8核的效率执行双线程任务,这样的效率等级在外人看起来似乎有点过分乐观。当然,这里需要再次提醒大家注意的是SMT处理器的执行效率与其所实际执行的工作任务是息息相关的。不过有一点可以肯定的是,尽管Bulldozer的执行效率会比传统的SMT更高,不过这种更高是以增加了不少高功耗的整数执行单元为代价换来的。而且,在实际的应用中,Bulldozer架构能不能够充分发挥自己执行单元上的数量优势,还需要看Bulldozer在处理器缓存架构,处理器内部缓冲器和指令缓存方面的设计效果如何而定,而并不能仅仅看整数执行单元数量的多少来判断执行效率的高低。

Bulldozer浮点执行部分的性能较高,在Bulldzoer中浮点执行单元采用的是双线程共享式的设计,假如内存带宽足够的话,处理器执行浮点任务时的性能应当是比较高的。

Bulldozer架构的推出并不算是AMD在处理器架构设计领域的一次冒险之举。在此之前IBM/Intel等公司曾推出过其它几款宽位执行SMT产品,而这次的Bulldozer只是在这些SMT设计的基础上进行了谨慎的改良化设计。

在处理器设计领域,改良型的方案通常要比彻底的改革方案效果更好。许多风格激进的改革派设计方案如安腾,奔腾四Netburst,IBM Cell等均很快战死沙场,反而是许多改良型的设计方案最终赢得了胜利。

从渐进式改良的观点看,AMD这次为Bulldozer加入四个整数执行单元可谓改良幅度较大。这样的改良当然需要对处理器内部的其它功能单元进行许多微调和重新设计的配合才能充分发挥作用,比如缓存容量,缓存联合路书,缓存延迟参数,指令缓冲区的大小,资源分区策略,解码器带宽等等。虽然在设计新处理器时通常都需要面对这些参数的调整,但对AMD而言仍然需要冒很多风险,一般在设计成熟的过程中,设计人员会逐步对这些参数进行调整,但留给Bulldozer的时间已经不多了,AMD的Bulldozer处理器很快便会上市,因此在这方面AMD不能够出现任何的差错。

不过,让Bulldozer产品如期上市,并且能够对Intel的产品在性价比,性能/功耗比方面形成较大的威胁,还算不上是AMD的终极目标。

#p#

前事不忘,后事之师

在与Intel的交战过程中,AMD获胜的场合通常并非硬碰硬的战斗,而多数是“以己之长攻敌之短”的战役。历史上看,AMD的几次重大胜利都是通过攻击Intel的弱点和漏洞取得的。比如,当年Intel高调宣布开发EPIC指令集设计的安腾64位处理器时,AMD就推出了X86-64的方案,结果在服务器市场大获成功;又比如,在Intel迟迟未能推出QPI点对点总线界面技术,而不得不继续沿用老旧的共享式前端总线设计时,AMD就迅速向多插槽服务器市场推出了Hypertransport点对点互联技术;再如当Intel不遗余力推广成事不足败事有余的RAMBUS内存技术,以及后来的高耗电型FB-DIMM内存技术时,AMD则坚守DDR战线,因此保持了其系统平台早性能/功耗比方面的优势。

可以说目前Bulldozer攻击的主要目标还是服务器市场,但目前为止,Intel公司的传统服务器平台产品线并没有明显的缺点和漏洞可以攻击,其至强产品线目前正如日中天。(当然在移动平台领域就是另外一回事了,不过这并非本文的主题,会放在另外一篇文章中介绍)。

不过,请大家注意我上面所说的是“传统服务器产品线”,目前Intel的服务器产品中比较欠缺和忽视的是低功耗,高密度的云计算服务器,而目前ARM和一些新兴企业如SeaMicro等则正在瞄准这个漏洞进行突破。

所以,假如让我来运营AMD的话,我会把公司的主要精力放在用Bobcat产品为核心,构建一整套低成本,低功耗,高密度的云服务器平台方面。连Intel高管Justin Rattner自己也承认,至强这类处理器运行某些云服务器应用时效率并不是很高。因此,我认为AMD此时不应该把过多的精力放在上网本和传统的服务器处理器产品上,而应该把精力投放在云服务器市场。

只有这样,才能成功击中Intel当下的最大软肋。Intel目前的有关产品还停留在实验室的阶段,而AMD如果能够把Bobcat产品投放到云计算服务器市场,一定会取得不小的成功。

AMD会这么做吗?如果情况不是这样,那么Bulldozer的性能最好是能够登峰造极,否则他们的出路将非常有限。

【编辑推荐】

  1. AMD服务器芯片Bulldozer细节披露
  2. AMD官方披露推土机性能:16核比12核高50%
  3. 最低99美元?AMD新皓龙即将登场(附规格表)
责任编辑:景琦 来源: CNBeta
相关推荐

2012-05-07 09:36:47

Facebook数据中AMD服务器

2013-08-29 10:28:37

Windows 8.1

2009-03-11 12:37:10

虚拟化ITCIO

2016-07-18 08:19:58

2015-07-27 10:10:21

MIUI 7小米

2012-09-29 09:25:27

SI云计算

2012-07-30 09:52:01

云计算SI

2018-05-10 06:58:08

2009-10-15 17:20:42

数据中心技术

2013-11-20 09:11:52

大数据大数据时代

2013-01-17 11:29:52

移动视频移动互联网移动广告

2012-03-13 09:33:19

云计算集成自定制代码

2011-02-13 16:15:20

诺基亚Android微软

2009-01-18 08:58:21

华为北电金融危机

2014-06-11 16:42:43

2017-06-19 08:47:49

Hadoop大数据HDFS

2019-09-04 10:17:23

医疗互联网医保

2010-05-31 10:38:06

创业打工

2012-05-04 10:53:08

移动应用紧急服务
点赞
收藏

51CTO技术栈公众号