欢迎光临散文网 会员登陆 & 注册

谈一下AMD的农用机械系(FX)架构失败的原因

2022-08-16 12:01 作者:夏目未央_  | 我要投稿

本文细讲一下农用机械系架构为什么会拉跨的如此彻底

FX处理器

首先讲一下推土机架构的一些特性,每个线程具有独立的整数执行单元是推土机和传统双线程SMT处理器在设计上的主要区别。不过从推土机的设计来看,这也并不能算是真正意义上的双核CMP设计,两个核心还要共享浮点执行单元,而浮点单元还是经过阉割的,如果将传统的CPU核心的性能算是100%,那么推土机一个CMP的性能和效率大概就是140-150%,或者叫他1.5核而并非双核。这样的好处就是能够大大节省晶体管的数量、降低核心面积和功耗,同时降低成本。虽然也算不上真正的“双核”,但这样的设计的确要比传统SMT设计更加高效,传统的SMT高出单个核心约15%-25%左右的效率,一个SMT核心由此就能粗略算是1.25个传统核心

推土机模块解析

虽然推土机的模块设计要比传统SMT在效率上更高,但是每个核心都单独配备整数单元也提高了成本和功耗。如果没有意外的话,推土机架构的浮点性能应该是极好的。AMD曾经表示虽然浮点单元是被两个线程共享的,但给予足够的内存带宽,芯片将具有很高的浮点运算性能,且AMD还想将浮点运算的工作交由内建的iGPU处理器来完成,这种内建iGPU的处理器就被AMD称作为APU,如果没有意外的话,这时候意外就出现了,在实际应用场景下,由于浮点单元被共享且本身效率就极低,内存技术也没有现在这样发达,导致推土机在涉及到浮点运算的场景不能说是完全拉跨只能说是没什么嗨用,APU方面考虑到功耗和发热,AMD并没有提供高性能的iGPU单元,甚至说这种iGPU内建的计算单元数量就很少,加上iGPU和CPU模块之前并没有使用高速总线连接,就导致APU性能也不是非常出色,但这只是农用机械失败的次要原因,因为这里的缺陷一定程度上可以用高频来弥补,只能说那个时代的APU比上不足比下有余吧,不可否认的是,APU在那一段AMD卖大楼的日子里也拯救了AMD

模块交互

另一方面,推土机独特的架构也使其的缓存延迟太高,因为它也使用了长管线设计,这点上推土机架构和奔腾4的管线设计十分类似,长管线导致延迟周期太高,高延迟对传统桌面应用有一定影响,这也是性能失利的原因之一

处理线

还有一个重要的原因是推土机的分支预测,误预测惩罚机制和指令缓存命中率的问题,这也是影响推土机性能的主要原因,推土机跟英特尔的Sady Bridge一样都是长管线设计,但是Sady Bridge却针对可能的分支误预测做了补救措施,有专用的缓存以减少预取和解码过程中的延迟,但是推土机并没有类似的设计,且推土机的L1Cache并不能适应双线程操作,推土机的关联性缓存太低,为2-way而英特尔却在双线程应用中采用8-way的关联性缓存,这就导致推土机只要在2-way 64KB L1指令缓存中进行双线程操作,指令缓存命中率就会明显下降,也就导致了性能羸弱

普通管线架构

简单的说一下分支预测和流水线设计,举个例子,假如你有一条工厂流水线,上面有A,B,C,D四名员工,这四名员工都是只会照着图纸组装零件,你的工作流程是A to B to C to D,如果没有流水线设计,那么一旦某一天B环节上的负载突然增加,而你的工作流程是固定的,那么A,C,D就会闲死而B就忙死

理解图

如果加入了流水线设计,那么A在做完工作后将产品交给B,B就开始加工,此时的A又开始了下一产品的架构,这样四个工人同时不间断的工作,效率就会增加,而多个工人就叫多级流水线,在处理器中增加多级流水线,处理器在处理多条指令的时候就会有很大的优势,现代处理器的流水线级数是很庞大的,但流水线设计会带来很多风险,其中一个就是遇到跳转指令的时候。跳转指令一般跟着if语句一起出现。就好像你的工人遇到了多个不一样的零件,要工人自己去选择正确的零件组装成产品,那么这个时候工人的效率就会迅速下降,因为你招进来的工人只会照图组装,没有了图纸他就不知道怎么办了,就会导致后面的功能有能力但是也在摸鱼

理解图

这个时候,分支预测就出现了,还是工厂流水线,A,B,C,D四名工人是比较聪明的工人,他们会察言观色,B会观察A工人的工作,然后提前选择出需要的零件,如果选择对了就开始组装然后把零件给C工人,这就叫分支预测,如果B工人自己提前选择出的零件是错误的,这就叫分支预测错误,而B工人在反应到自己拿错零件之后区重新选择正确零件的过程就叫做分支预测错误惩罚,如果B工人一直错下去,就会对你工厂流水线造成极大的影响,所以说,在处理器的分支预测上,如果分支预测一直错误,就会对整条指令造成不可逆的影响,再甚者,有一些预测错误甚至会让整条指令推到重来,这样来理解,推土机就是错误惩罚太高导致性能不足,英特尔之前因为奔腾四的超长流水线设计,有了很多分支预测的经验,才没有使性能倒退,而AMD并没有这种经验,这也就是农用机械系产品失败的主要原因

理解图

再者,其实农用机械系在设计之初,就瞄准了服务器负载,在桌面平台上,桌面应用要求更高的IPC性能,对分支预测敏感,但是对线程数量要求比较低,这些恰好都不是推土机的擅长的领域,AMD只能使用提高CPU频率来掩盖设计上的缺陷,以满足桌面平台的需要,原本AMD对于推土机的目标是同功耗下频率至少要高20-30%,但是最终却是同频率下功耗是高10%,就很离谱,但是服务器应用才是推土机架构最擅长的领域,服务器应用对CPU的IPC性能并不敏感,即使是CPU的缓存命中失误比较高,但其延迟方面所受的影响也比较小,但是它对CPU并行、内存占用要求比较高,因此推土机高延迟但是大容量的L2缓存在服务器应用中表现就很好

AMD大楼

后来大量的缺陷导致了推土机桌面性能不济,对于当时的AMD来说,现实就是除非架构有较大变化,否则基于推土机架构演变而来的农用机械系的处理器依然难以跟Intel相提并论。在这一代失利中,对于AMD来说,也无力对农用机械系的架构进行大改了,所以当时的AMD重心转向了APU这样的全功能、低成本处理器

真正意义上的最后一代农用机械 第七代APU

产品发布后推土机没有带给AMD复兴的荣耀,反倒成了滑铁卢,当时的AMD在CPU性能上暂时无力跟Intel对线了,只能依靠APU和GPU业务苟延残喘,当其失败的不只刚刚提到过的设计缺陷,在制程工艺上,AMD又被GF坑了一把,GlobalFoundries不成熟的32nm 工艺使得推土机的功耗和发热巨大,而推土机又急需拉高频率来掩盖设计缺陷,这就进一步拉高了推土机的发热,进一步限制了CPU性能提升

原本是AMD的,后来卖出去专坑AMD

除了制程工艺,软件和操作系统对于推土机的优化也少之又少,推土机模块化的设计和传统SMT设计并不同,而开发者却将AMD的推土机CPU单元看作是传统的SMT核心,导致其很难发挥出真正的性能,虽然日后微软也为推土机平台提供了任务调度补丁,但也不足以改变推土机拉跨的事实

Windows

现在的AMD吸取了农用机械系的教训,也将模块化的设计延续下来,对整体的框架完全推倒重来,才成就了如今的AMD,才有了现在和酷睿有对线能力的锐龙,不可否认,推土机从宏观上来看,虽然击溃了当时的AMD,但一定程度上也成就了今天的AMD

AMD历代产品渲染图

授权转载自酷安@MacAlistair

转载请联系原平台作者

谈一下AMD的农用机械系(FX)架构失败的原因的评论 (共 条)

分享到微博请遵守国家法律