ARM 2020 TechDay上,ARM不出意外的发布了其下一代移动旗舰核心Cortex-A78,并且也稍有意外的同时发布了新的服务器核心Cortex-X1。在移动领域,ARM是毫无疑问的霸主,打着望远镜都找不到对手在哪里的独孤求败式的存在。而服务器领域,ARM从10多年前就已经开始了默默耕耘。那时候ARM自己才刚刚发布A15的核心,仅仅是一个双发射部分乱序执行的处理器,和当时的intel酷睿系列相距甚远。但在当时很多人已经开始视ARM为intel在服务器领域强有力的竞争对手,认为基于RISC的ARM在功耗上教CISC架构的intel有着巨大的优势,在同等功耗下可以提供比intel更高的性能。由于intel在服务器领域一枝独秀,有一些比较激进的公司也愿意押宝ARM。然而最终的结果是显而易见的,第一波吃螃蟹的基本上全军覆没。而ARM自己并没有在服务器核心上倾注太大的精力,而是在A15后,经过A57的试水,随后从A72开始,保持每年一代新核心的更替速度,牢牢踩住了移动互联网的节奏,随着移动领域的腾飞而快速成长为现在的霸主。在此基础上,ARM才开始尝试推出自己的服务器核心。从Neoverse-N1开始,到今天的X1。与此同时,市场上又出现了新一波ARM服务器创业的浪潮,而这一次ARM的机会似乎要大很多。本文仅通过分析ARM的新一代核心,对其架构的发展谈一下个人粗浅的见解。
对于Cortex A78,ARM给出的指标是相对A77 20%的提升。从流水线结构上来看,相比A77并没有非常明显的改变,仍然基于ARM A v8.2,流水线级数和发射数目也没有改变。其他诸如DynamIQ大小核等也是标配。因此这一代Cortex核心并不能算作一次跨越式的提升,而只能是小步伐的改进。这20%的提升中应该有不少是工艺改进的结果。可以看出Cortex A系列的基本设计思路仍然是PPA的平衡,这也是ARM最擅长的一点。
前端流水ARM特别提到的改进是增加了2条branch的处理机制。在现代处理器设计中,分支预测准确率是至关重要的一环,以至于有一个针对分支预测的算法竞赛。虽然最新的分支预测算法都是公开的,比如TAGE预测器,但是在具体的硬件实现中,这更像是一个实验性质的设计。由于硬件在分支预测资源的访问和更新上的时间差,以及多指令预取的存在,实际的分支预测处理和对应的软件算法是有所不同的。这在很大程度上需要根据当前流水线的访问特点进行调整,依据则是大量的基准程序的测试。ARM在多年的预测器设计中积累了丰富的经验和测试集,这方面是很多年轻公司所不具备的,也是ARM的优势之一。
A78的后级执行主要增加了一个乘法器,应该是根据当前移动端的具体应用需求而增加的运算资源,可能跟当前的深度学习应用相关。其余的一些诸如fusion,renamig,OoO window的调整,主要还是基于PPA的平衡而做的妥协设计。在这方面,ARM的步子还是比较稳健的,并没有像Apple一样大力出奇迹的堆硬件,主要原因还是ARM面对的用户比较复杂,对各方面都有一定要求,限制也更多,不能像Apple一样可以只针对IOS相关的需求进行设计。在这方面ARM更像是带着镣铐的舞者,不过跳的十分不错。
再来看X1的配置。从具体的流水线结构上来看,X1和A78算是师出同门,换句话讲就是A78的再次改良版。主要增加了指令发射数,乱序调度空间,以及大幅增强的NEON的执行能力,整体的运算能力向Intel的core系列和AMD的ZEN看齐。对标intel和AMD的服务器芯片,X1有两个比较大的劣势。第一是较短的流水线级数,这样限制了核心的峰值频率,也就限制了其峰值性能;第二是不支持单核多线程,这样在服务器领域的多线程并发执行的能力要弱不少。因此X1其实和真正意义上的服务器芯片还有一定差距。从这点上来看,ARM还是非常谨慎的,在保证A78设计的前提下,通过在统一架构下的部分扩展,提供了一个单核运算能力和乱序能力更强一些的核心,用来做服务器入门芯片的试水。
从A78的参数来看,ARM在移动端似乎也步入了如intel挤牙膏的阶段,改进下预测器,增加个执行单元,调整几个buffer的配置,再用上最新的工艺,就算是新一代的产品。这并不是ARM不思进取,相反,这正是ARM最合理的策略。不像intel还是不时的受到AMD的威胁,在移动端,ARM近似一个独孤求败的存在。因此对于它而言,最关键的是不犯错,而不是创新。从ARM的整个产品线来看,虽然M系列贡献了一半以上的出货量,但是在营收和利润方面,A系列是核心,至于其他的总线,安全等IP都是建立在这个核心的基础上的。因此cortex A系列的高端处理器才是ARM的基本盘,是不可动摇的。很早之前ARM对于这一点就非常清楚,这也不难理解为什么ARM一直没有很激进的切入服务器领域,而是推动合作伙伴进行开发。因为移动市场才是ARM的生命线。从初次尝试高性能核心A15的不尽如人意,以及被称为火炉的A57的失败,这段时间是arm的低谷,然而幸运的是,期间没有强有力的对手出现,intel和mips都错失了这个机会。从A72开始,ARM逐渐找到了移动端处理器设计的感觉,后续A73到A77,每一款都可以称为爆款。这其中的设计思路,就是紧跟移动端的需求,在当前的技术条件下,提供一个性能功耗最佳的解决方案。随着ARM设计的渐入佳境,其他开发ARM移动核心的厂商渐渐的拉不开差距也提供不了多少差异化,这样的开发也变得不重要了。除了Apple之外,高通和三星都逐渐退出了ARM定制核的开发,ARM几乎完全垄断了移动处理器的市场。
很多人把intel在移动端的失败归结为CISC指令集的问题。这里提供另一个思路。从现在atom的指标来看,功耗并没有比arm的大多少,而最新的arm核心的手机芯片的功耗也一直在上升。因此CISC导致的功耗问题并不是决定性问题。个人拙见,导致intel在移动端失败的根本原因恰恰是它的核心优势,即以技术为导向的公司理念。这是intel一直占据处理器设计制高点的法宝,而这个优势在以快为本的移动互联网时代反而成为了劣势。虽然ARM技术很牛,但其理念是市场为导向的。市场要什么,就以最快速度推什么。code size大,就推16/32混编;java流行,就推jazelle;要64位运算,直接造出一套新的。管它编码是不是优美,架构是不是合理,是不是兼容,好用就行。看了ARM的ISA,编码混乱,结构繁琐,再看看MIPS,编码简洁结构优美。然而ARM成功了,MIPS失败了。这种面向市场的快速反应,也许不是最优,但却最快满足了需求。而intel按部就班,反复讨论最合理的架构模型,再调研设计验证一系列走下来,几年过去了。这在服务器这种迭代缓慢的领域,能够保证提供最稳定高效的产品,但是对于日新月异的移动互联网就完全跟不上市场的变化。
移动端的爆发就是几年的时间,intel在它技术至上的思路下错过了,作为提出众多先进设计的公司,却赶不上飞速发展的移动互联网需求。而ARM抓住了这个机会,通过满足市场的一切需求而快速建立起自己的生态。而生态一旦完善,后来者就难有插足的机会。这样大的机会只会有一个胜利者。想打破这样的垄断只有2条路,要么等待新的市场出现,要么等垄断者犯错。ARM从1991年创立,准备了20年才等到移动互联网这个机遇,并且intel这个老大犯了唯技术论的错误。那么对于服务器,这样的机会到来了么?
第一次ARM服务器泡沫的破灭,MARVELL等公司纷纷止损。然而有一家公司坚持了下来,经历了数次迭代,推出了国内最具竞争的ARM服务器平台“鲲鹏”,就是华为。止损需要魄力,而坚持需要更大的勇气和远见。这一波的ARM服务器浪潮有一个特点,就是除了传统芯片厂商,像amazon这样的甲方也加入了行列。这些互联网巨头的思路,更是以需求为导向。那么ARM阵营的成功,就取决于这些需求是否是当下的intel生态所不能提供的。分析到此可以有一个初步的结论了:在一些特殊的云领域,有戏,但通用领域大多数还是会被intel把持。这些特殊的领域,是指新兴的,或者足够大的专用领域。比如亚马逊的网购系统,这是个专用性强,主要对商品分类,搜索,物流,支付进行处理,并不需要考虑其它支持,同时系统庞大到能够支撑新的生态设计。那么arm服务器就有一席之地。或者类比腾讯的微信,网易的手游等。而对于通常的云服务这类通用型强的领域,ARM较弱的单核性能恐怕很难撼动intel的地位,,而intel成熟的生态更是巨大的障碍。
从这个角度看,ARM从高端移动核心逐步上移的策略或许是最稳妥的选择,毕竟移动的大后方不能动摇。推动合作伙伴先行开发,虽然丧失了一些先机,但毕竟arm掌握着指令集定义的权利,而在服务器领域肯定是需要做很多ISA上的改进的。而licence了ARM架构的公司在这点上会落后于ARM,成为先行创业的风险所在。中国作为最大的移动互联网市场,也最有机会撑起一部分ARM服务器的应用,这也是华为在内的ARM阵营的机会。至于能到多少,一方面要看究竟能挖掘多少这样的专用领域,一方面也要看intel老大哥的反击了。
更多干货,欢迎关注公众号:MikesICroom
回复“课程”获取斯坦福大学AI加速器课程资料
【参考资料】
https://www.anandtech.com/sho...
【图片来源】
https://medium.com/@khalidtay...
https://www.youtube.com/watch...
https://www.q578.com/s-5-2019...
https://technews.tw/2019/01/0...