推土机微架构

推土机微架构（英语：AMD Bulldozer）是AMD继K10微架构之后推出的中央处理器微架构，由 IBM Power4 的总工程师 Chuck Moore 操刀。该微架构主要应用于桌上型平台、伺服器平台乃至超级计算机的微处理器核心上。Bulldozer在历经数次跳票后于2011年9月19日发布，其首发产品是核心代号为“Zambezi”的AMD FX。
Bulldozer微架构从一个早期已搁置的微架构设计发展而来，主攻热设计功耗为10瓦至125瓦的处理器平台。AMD预期认为，基于Bulldozer架构的处理器在实际应用中每个「推土机」（Bulldozer）核心每瓦效能可达到高效能计算（High-performance computing，HPC）的水准。届时每个“推土机”核心会支援Intel绝大部分的指令集（包括SSE4.1、SSE4.2、AES、CLMUL以及AVX），以及AMD自有的指令集（包括由SSE5拆分而来的XOP、FMA4、CVT16）。

**概观**
2011年，AMD处理器开始导入32奈米制程，推出APU（加速处理单元）新形态处理器，应用在桌上型电脑与笔记型电脑。超微的处理器架构有两大关键的调整方向，依用途区分成两种系列，其研发技术代号分别为Bulldozer与Bobcat。Bulldozer架构针对主流伺服器、桌上型电脑、笔电的应用，提供高存取效能与高负载多执行绪的架构，并选择以APU组态的高延展性来连结图形处理器；Bobcat主攻低耗电的超轻薄电脑应用。
Bulldozer架构的处理器均使用格罗方德的32纳米HKMG SOI制程，重新使用类似DEC的多任务计算的设计。根据AMD的发布说明，“平衡专用和共用的处理器运算资源，来提供一个易于成倍提升计算效能的，高度紧凑的单晶片多核心的设计”。换句话说，透过精简处理器核心一些「冗余」部分，辅以多核心/多线程的设计，超微希望籍此以更少的能耗，来充分发挥这些核心的特性和效能来提升整块微处理器乃至整个平台的效能。AMD研究员Tim Fischer表示，Bulldozer采用全新的控制结构和运算单元，其性能体现于整数运算、浮点运算、L1快取、电源管理，和时脉产生器等……均是开发重点，主要意义在于降低功耗并提升单位功耗的效能。
Bulldozer微架构的设计早在2003年已出现，由于AMD忙于K8微架构处理器的研发和推出而搁置，后来Bulldozer架构在该微架构的基础上重新设计。可合并为1个256位的2个128位并且可进行融合乘法运算的浮点运算单元，这个主要特性在2003年的设计中已出现；一个Bulldozer核心单元中，除了前述的浮点运算单元外，还拥有两个整数排程运算单元，每个整数排程运算单元各自拥有4条管线（另外的读取、解码这两级管线为两个整数运算单元所共用）；L1快取为每整数排程运算单元独占，但L2快取则为两个整数排程运算单元所共用。AMD称这样的一个单元为一个“模组”，一个16线程的Bulldozer处理器中包含8个这样的模组，但一个模组并不会被辨认为一个物理核心，而是根据一个模组中的2个整数排程运算单元的数量辨认为两个逻辑核心（即作业系统会将1个模组辨认为两个逻辑核心/线程）。一个“模组”包含2个逻辑核心，和Intel的超线程技术中1个物理核心被辨认为2个逻辑核心的做法似乎有类似之处，但事实上，两者大相径庭：AMD Bulldozer的“模组”为每条线程提供了各自的整数运算排程单元和一级指令快取，而英特尔的超线程则是两条线程共用核心内所有可用的运算资源。
基于Bulldozer微架构，32纳米SOI HKMG制程的处理器产品于2011年9月率先于桌上型平台上发布，是为核心代号“Zambezi”（Socket AM3+，4至8线程）之AMD FX系列；紧接着的是10月12日发布伺服器平台，核心代号“Interlagos”（Socket G34，16线程）、“Valencia”（Socket C32，4至8线程）之AMD Opteron系列重新启用了AMD少有的“FX”品牌。首发的桌面级产品FX-8150，将有四个Bulldozer模组；伺服器级微处理器，代号Interlagos，是由两个包含4个Bulldozer模组的MCM、共八个Bulldozer模组所构成。

**微架构特性**

**Bulldozer核心/模组**
完整的Bulldozer模组之示意图
完整的基于Bulldozer微架构的处理器示意图，包含：4模组8核心8线程、L3快取以及I/O总线
Bulldozer伺服器的记忆体架构- AMD认为并对外声明这种模组化的设计是“基于集群的多线程”或“两个整数排程运算单元的集群”。这种基于集群的多线程技术一般称为“集群多线程”（CMT，Clustered Multithreading），而AMD则定义：基于这种设计的处理单元为一个“模组”（Module）。从硬体的复杂性和功能性的角度出发，Bulldozer模组（集群多线程）介于两个独立的处理器核心和超线程之间。两个独立的处理器核心的设计中，每个核心拥有独立的处理单元、快取等运算资源，一般称这种多线程设计为晶片级多核心（CMP，Chip Multi-Processor）；而超线程则是两条线程运作于一个运算排程资源足够多、管线足够长（但不可太长）的处理器核心上，两条线程的运算资源是共用的，包括处理单元、快取，一般称这种多线程设计为同步多线程（SMT，Simultaneous Multithreading）；而集群多线程中一般几条线程或多或少共用fetch、寄存器甚至是浮点运算单元等运算资源，但主要执行单元——整数排程运算单元都是独占的。这种集群式多线程微架构的设计，综合了晶片级多核心和同步多线程的特点，最早的实例是DEC在1996年研发后来推出市场的精简指令集体系的微处理器Alpha 21264，后来的升阳电脑公司和甲骨文公司开发的UltraSPARC T1（核心代号「Niagara」）、UltraSPARC T2（核心代号「Niagara 2」）微处理器也是采用类似的设计（UltraSPARC T2还同时使用了同步多线程技术）。
** 超微采用集群多线程设计的Bulldozer模组中，包含两个x86整数运算排程单元并被辨认为两个逻辑核心，每个整数运算排程单元各自占有16KB一级指令快取；一个可拆分为两个128位元的256位元浮点运算单元，fetch、解码器、二级快取、I/O总线等为两条线程所共用，即一个模组所有。- 每模组都拥有独立的硬体资源：
** 2MB的L2快取（模组内两个整数运算排程单元共用）；
** 模组内两个整数运算排程单元共用2路32KB一级指令快取，每整数运算排程单元独占1路16KB一级指令快取和全数4路64KB一级资料快取，包含快取分支预测；
** 两个独立的整数运算排程单元/整数核心，
*** 每个整数运算排程单元拥有两个算术逻辑单元（ALU，Arithmetic logic unit）和位址产生单元（AGU，Address generation unit），由此一个整数排程运算单元在一个时钟周期内可完成4次运算操作和记忆体存取作业，即一个模组可达成8指令发射/处理作业；
*** 对一些偏重多线程的应用程式，两个整数排程运算单元和更多的执行管线可提供更多的硬体资源予两条并行的线程上，以提升这些应用程式的效能表现；
*** 两个整数运算排程单元的Bulldozer模组比仅有1个整数运算排程单元的仅多出12%的电晶体数量以及5%的晶片面积增量；
** 一组两个对称的128位元FMAC（融合乘法加法）浮点运算单元，在接收到有256位浮点运算作业的指令（如AVX）或并行的（x87/MMX/SSE等）128位元浮点运算作业后可以合并为1个256位元的浮点运算单元，这种设计可以更好地相容一些不支援并行对称浮点运算的应用程式；
** 共同的Fetch／解码管线;- 所有模组共用三级快取和增强的双通道DDR3-SDRAM记忆体控制器；- 一个模组共计2.13亿个电晶体，占用30.9平方毫米的晶片面积，这个数据包含了2MB的二级快取，四个模组共计约12亿电晶体；- 按照超微的说法，基于AMD Bulldozer微架构的处理器上，一个双线程的的处理器上有一个Bulldozer模组（2个整数排程运算单元），一个4线程的处理器有两个模组（4个整数排程运算单元），一个8线程的处理器上有4个Bulldozer模组（8个整数排程运算单元），如此类推。

**指令集**
 支援Intel的AVX指令集（Advanced Vector Extensions，进阶矢量扩展），使处理器支援256位元的浮点运算作业。除此之外还支援Intel授权的SSE4.1、SSE4.2、AES、CLMUL、Multiply-Add/Accumulat等，以及AMD自有的XOP、FMA4、CVT16、SSE4a等，其中XOP、FMA4、CVT16是AMD原先的SSE5拆分而来（原本Bulldozer将会实现SSE5指令集，但是由于Intel选择不支援SSE5而另立自己的AVX指令集，AMD最终决定将SSE5分拆），尽管这三者为并行对称的128位元算指令，但可以相容于AVX的编码方案。

**制程/制作工艺、时钟频率、热设计功耗**
四模组八核心的AMD Bulldozer架构的处理器- 11层金属、32纳米SOI辅以格罗方德首代HKMG制程；- Turbo Core 2.0，和上代Turbo Core一样可以根据处理器的负载状态调整各处理器核心的时钟频率。在处理器核心闲置时可以降低其时钟频率乃至关闭核心；处理器核心满载时可以提升其时钟频率，处理器半数核心处于满负荷时可以有1GHz的提升幅度，全部核心满载时也有500MHz的提升幅度，但是时钟频率的提升会保持在处理器的TDP限制（俗称「热墙」或「工作温度墙」）之下。与上一代Turbo Core相比，Turbo Core 2.0可以使处理器核心关闭，而且可以调整各个核心的时钟频率，而首代Turbo Core则只能一次过调整半数核心的时钟频率而不能调整单个核心的，核心闲置也不能被完全关闭。- 处理器核心电压在0.775V至1.425V，伺服器平台的预设时钟频率最低1.6GHz，最高3.4GHz；桌上型平台预设时钟频率最低2.8GHz，最高达4.2GHz；- 热设计功耗最低25瓦，最高140瓦。

**快取、记忆体**
 单晶片最高8MB的路快取容量，4模组8核心共用；伺服器版本最高端型号的AMD Opteron 6200系列4模组8核心以上的则为16MB（两个多晶片模组）。单晶片的8MBL3快取被划分为4个容量相同的2MB的部分，可以和北桥（记忆体控制器）一并运作于2.2GHz的时钟频率上，于1.1125V的操作电压；- 原生支援DDR3-1866记忆体；- 桌上型平台的处理器，内建双通道DDR3记忆体控制器，支援PC3-14900（DDR3-1866）、PC3-16000（DDR3-2000）、PC3-17000（DDR3-2133）以及更高规格的记忆体；伺服器/工作站平台的处理器，则内建四通道DDR3记忆体控制器，可支援PC3-1280（DDR3-1600）暂存型记忆体（ECC记忆体，仅核心代号“Valencia”、“Interlagos”支援）。- AMD称每通道支援两条DIMM DDR3-1600（亦即每通道的两条DIMM记忆体插槽可插满DDR3-1600的记忆体），但单个通道两条DIMM插上DDR3-1866记忆体时会降低记忆体时脉至1600MHz。

**输出输入总线、配套晶片组、处理器插座**
第一代Bulldozer的处理器之I/O界面示意图- HyperTransport总线升级为3.1版本，预设运作时钟频率3.20GHz，传送速率6.4GT/s，频宽25.6GB/s，单向位宽16位元。新版本的HyperTransport，在上一代K10.5微架构，HY-D1步进的“Magny-Cours”核心（socket G34平台，新步进版本于2010年3月推出）和“Lisbon”核心（socket C32平台，新步进于2010年6月推出）AMD Opteron处理器上业已使用。- AMD官方接受媒体采访时确认：“现有的G34、C32服务器平台会支持基于推土机的新款服务器产品（核心代号为“Interlagos”/“Valencia”）。至于桌面上，为了充分发挥推土机架构的能力，会引入增强的AM3+接口，支持推土机并向下兼容现有AM3接口处理器。”
** 桌面版处理器使用的插座为Socket AM3+（也称AM3r2）配套晶片组为900系列晶片组此代晶片组除了支援AMD自家的CrossFireX多卡互联技术以外，还会支援NVIDIA SLI多卡互联技术。
*** 处理器上共942个针脚，插座上也有942个脚位，但和同样也是942个脚位的Socket AM3插座不同的是Socket AM3+仅支援DDR3-SDRAM记忆体、HT总线版本不同以及供电稳定性更强；
*** 可向下相容于800系列晶片组、使用Socket AM3插座（包括一些已使用Socket AM3+的）的主机板，但需要主机板厂商提供BIOS/EFI韧体更新，因为AMD官方没有提供正式的技术支援，也没有说明Socket AM3+接口的处理器可使用于Socket AM3插座的主机板，然而AMD却说明了Socket AM3接口的处理器可以使用于Socket AM3+插座的主机板上。
** 伺服器/工作站平台则继续沿用既有的伺服器晶片组和既有的socket G34（LGA1974）和socket C32（LGA1207）。

**处理器**

**桌上型处理器**
基于Bulldozer微架构的桌上型平台处理器为AMD FX，于2011年9月19日正式上市。使用GlobalFoundries 32nm SOI工艺，支持Turbo Core 2.0、Cool'n'Quiet、HyperTransport 3.1等技术。使用新的Socket AM3+（942）插座，支持DDR3-1866双通道内存，分为8核、6核、4核三种版本，主频从2.8GHz~4.2GHz不等。配套芯片组为AMD 900系列芯片组。
Bulldozer与Fusion APU“Llano”两个系列处理器的上市时间定案，分别是2011年9月19日跟2012年第一季。最初有4个Bulldozer处理器在2011年9月19日发布，分别是：四核心FX-4100、六核心FX-6100、八核心FX-8150、FX-8120。三核心型号（1.5个模组，微软KB2592546修补程式的定义为“1.5核心”）只供OEM市场。

**伺服器处理器**
2011年11月14日，AMD宣布推出针对伺服器等级效能的Opteron 6200与4200系列处理器（先前代号分别为：Interlagos与Valencia），主要将提供其扩充性，并且提供高出73%的记忆体频宽，以对应更高阶的虚拟化技术应用，同时在整体耗电量部份也让每组核心减少原有一半，同时也让主机使用空间减少三分之二，进而节省更多电力、空间等成本支出。
AMD也同步透露2012年将加入全新AMD Opteron 3000伺服器平台，主要锁定超高密度、超低功耗的1路网路主机代管（Web Hosting）、网路伺服器（Web Serving），以及微型伺服器（Microserver）等应用领域。其中将会先推出代号为「Zurich」的4至8核心架构的处理器系列，同样采用推土机（Bulldozer）架构且对应AM3+插槽，并且预计将于2012上半年间出货。

**主要特性**
同价位伺服器处理器产品效能约较竞争品牌高出89％
*处理器阵容齐全、从4核心一路涵盖到16核心
*与前代平台相同的功耗曲线下，每颗核心功耗最低约可达4.375W
*处理关键云端、虚拟化及高效能运算等作业时，效能可高出24％至84％
*拥有2路处理器最高的TPCC速度测试分数
*最低的虚拟系统（virtual machine，VM）单位成本
*最高可达4个记忆体通道，最高可支援1600MHz记忆体时脉
*支援1.25伏特超低电压记忆体
*每颗处理器最高支援12组DIMM记忆体，最高可支援384GB记忆体
*最多可支援4个16倍速的HyperTransport（HT3）链路，每个链路传输速度达每秒6.4GT

**效能表现和市场反应**

**AMD FX系列效能问题**
首款基于Bulldozer微架构的消费级处理器AMD FX上市后，在微架构的设计上、效能上和能耗上饱受争议。首发的顶级型号FX-8150，在倚重单线程的基准效能测试中，测试结果显示FX-8150不仅落后于基于Nehalem、Sandy Bridge等微架构的Intel Core i系列，还不如基于K10微架构的AMD Phenom II系列；不过在倚重多线程的效能测试中，结果显示勉强可以追平Phenom II X6 1100T和Intel Core i7-2600K。纵观各媒体的效能测试结果，FX-8150综合效能强于Intel Core i5 2500K，而零售价格则在其之下，这个结果并没给市场预期留下好印象。在效能测试中，FX-8150在厂方预设时钟频率下运作，无论待机抑或满负荷运作，能耗比与Intel基于SandyBridge的处理器不相上下，但是进行较大幅度的超频后，FX-8150尽管效能提升明显但处理器会变得极其耗电，能耗比变得相当低下。
Tom's Hardware的网站评论认为，这种在多线程负载下仍然不如预期的效能表现，是由于目前Windows 7的线程和处理器核心一一对应的线程排程方式。他们指出，如果Windows首先把一条线程分配给一个Bulldozer模组，并在模组内分为两条子线程以充分利用该模组内的整数排程运算单元，这将会效能最大化地使处理器同时处理四条线程。这种线程排程方式和带有超线程的Intel微处理器的类似——Windows 7会在利用逻辑核心（超线程得到的）前把线程安排至物理核心上。
对于处理器在超频状态时夸张的功耗水平，业界相信由于格罗方德的32纳米SOI HKMG制程仍旧不成熟，这个导致了处理器核心在更高时脉下运作时，漏电现象严重，使耗电量飙升以及核心发热量大增。而且有效能测评指出，AMD为压低FX系列的功耗，有意压低部分型号处理器的最高工作温度，而这个温度的设定值，实际还低于处理器在预设时钟频率下满负荷运作时的最高温度，这样一来在处理器过热保护机制下，效能受到了不小的影响，从而使处理器效能不如预期。
而AMD FX的较低阶的型号中，FX-4100系列与Intel Core i3系列之间的比较以及FX-6100系列与Intel Core i5系列（Core i5 2500K除外）之间的比较中，除了某些倚重单线程的应用程式和基准效能测试项目以外，其余的差距不大。不过功耗方面仍然有些偏高，尤其是超频以后功耗仍然大幅增加。
2011年10月13日，AMD在其官方部落格中回应了AMD FX系列处理器的效能、功耗表现不如市场预期的问题，除了指出由于微架构不同于以往的x86处理器的微架构，现行的应用程式以及基准效能测试程式没有对Bulldozer微架构的特点进行充分优化，以至效能不如预期以外，也承认FX-8150效能不济的事实：不少效能测试成绩不如Intel的Core i7-2600K/2700K，甚至比不过AMD上一代的消费级顶级产品Phenom II X6 1100T。AMD同时表示，在2012年以后的发展规划中，将提升Bulldozer微架构的效能，并降低功耗，目标是每一瓦电功率的效能提升10%至15%。格罗方德也表示继续改进其32纳米SOI HKMG制程。根据目前一些基于AMD Piledriver微架构的AMD Fusion（核心代号“Trinity”）的工程样品的效能测试，结果显示和AMD的预期效能一致。

**超级电脑**
AMD于2011超级电脑展（Supercomputing 2011）上，宣布基于Bulldozer微架构的新款AMD Opteron 6200系列处理器已被HPCwire杂志的编辑与读者评选为2012年最受瞩目的五款新产品之一，并被美国国家科学基金会（National Science Foundation）的Blue Waters计划采用，将在伊利诺州的国家超级电脑应用中心（NCSA）建置此部超级电脑。
超过235部，搭载近5万颗AMD Opteron 6200系列处理器的Cray XE6机柜，使Blue Waters超级电脑能提供超过每秒千兆次（petaflop）的充裕效能，在各种现象研究上的获得突破性进展，包括：宇宙大爆炸（Big Bang）之后的演进、龙卷风的形成、病毒侵入细胞的机制，与其他众多科学工程方面的应用。
2012年12月，搭载18,688颗8模组16核心的AMD Opteron 6274为任务分配单元，18,688颗NVIDIA Tesla运算加速卡（GK110通用图形处理器）的泰坦超级电脑以17.59petaFLOPS的记录荣登TOP500第一名，Green500（超级电脑效能功耗比前500强）第三名。

**效能优化修补程式**
2011年12月16日，微软发布了KB2592546，即传说中的推土机线程调度补丁。而当天上午微软就已经撤下了补丁，对于这一点BSN网站联系了微软和AMD，得到了AMD方面的官方回应：
微软在KB2592546之后，针对以Win7、Windows Server 2008 R2的电脑为基础，进行最佳化。目前，AMD推土机处理器比预期的慢。因为在该两种作业系统的执行绪逻辑，只对同步多执行绪（Simultaneous Multithreading, SMT）的排程特色进行优化，而没对集群多线程（CMT，Clustered Multithreading）一类的多线程设计的处理器进行特别优化，来让效能最有效地运行。
后来完整版的修补程式（KB2646060以及KB2645594更新档）发布，不少效能测试结果显示这些效能优化修补程式效用有限，无论是伺服器平台还是桌面平台，最多仅在某些项目上有15%的效能增长。
2012.09.21 AMD的驱动程式已有内建修补无需安装微软的修正程式

**金氏世界纪录**
AMD全球副总裁暨终端产品事业群总经理Chris Cloran表示，等级最高的FX-8150八核心处理器，在2011年8月31日，由AMD团队超频达到8.429GHz，超越同厂处理器先前的被「Team AMD FX」缔造的8.308 GHz成绩，荣登金氏世界纪录「最高时脉的电脑处理器」。

**改进版本**
AMD在2011年发布2012年的财政预算以及2012年的产品路线图时宣布，在2012年的第三季度发布Bulldozer微架构的改进版Piledriver。首批基于Piledriver的处理器是核心代号「Trinity」的AMD A系列处理器（APU）行动版本和桌面版本；新FX和Opteron在2012年9月发布。

**参考文献**

**外部连结**
 2011至2012年最新AMD产品发表时程大公开- AMD Opteron 6200系列重装上阵fix-attempted=yes - AMD Bulldozer推土机十大热门问题，且看AMD官方细细解答！date=20140826120832 - AMD Bulldozer/K10架构对比fix-attempted=yes - AMD Bulldozer解析date=20111115180426 - AMD FX处理器官网
*https://archive.today/20130424224040/blogs.amd.com/unprocessed/tag/bulldozer/
** "Bulldozer" 20 Questions, Part 1
** "Bulldozer" 20 Questions, Part 2
** "Bulldozer" 20 Questions, Part 3
*accessdate= 2010-12-16 
*archivedate= 2011年7月11日 - access-date=2012-10-16 

**参见**
 AMD CPU微架构列表- AMD FX- AMD Piledriver- AMD Fusion- AMD Bobcat- SSE5- 多晶片模组