双剑合璧ARM CORTEX-A78和CORTEX-XI架构一览
- 来源:微型计算机 smarty:if $article.tag?>
- 关键字:ARM,市场,架构 smarty:/if?>
- 发布时间:2020-07-29 12:58
2019年是ARM相当成功的一年。在移动SoC方面,ARM旗下的新品持续攻城略地,比如在高通骁龙865中使用的Cortex-A77已成为高端SoC的首选。另外,ARM还打入服务器市场,人们终于可以使用到基于Neoverse-N1架构的处理器,比如亚马逊推出的Graviton 2以及Ampere即将发布的服务器处理器等。不过,这并不意味着ARM在这些领域没有对手。实际上,在服务器领域ARM才刚刚开始,它面临着AMD和英特尔强有力的竞争。在移动市场上,虽然包括三星、高通等都放弃或者弱化了自研核心,但是苹果依1日把持着移动计算市场最高性能的名头。这些性能差异存在的原因有一部分是技术实现方面的,但是更多应该是市场和商业原因。ARM总要面对更广泛和更多样化的用户,这是苹果所不用顾忌的。
现在,ARM希望做出一些变化。在2020年的TechDay上,ARM直接发布了两款架构。其中一款是顺理成章、按部就班的Cortex-A78,另一款则显示了ARM在业务模型和设计理念_上的新变化,这款被称为Cortex-Xl的全新架构将成为ARM在2020年的旗舰产品,并且跳脱出市场和商业所带来的折中取向,以更为激进地方式提于性能,颇为令人期待。
CORTEX-a78:完美平衡性能、功耗与面积
Cortex-A78早在两年前就已有苗头,当时ARM公开代号为“Hercules”的架构,并给出了到2020年的路线图。根据路线图,今年发布的Cortex-A78架构是Cortex-A76架构的第三次迭代,新架构吸纳了Cortex-A76和Cortex-A77两款处理器的大量技术和设计,并在其之上进行了优化,以实现更高的能耗比设计。
Cortex-A78是ARM严格按照l生能、功率和面积(也就是PPA)进行平衡设计的架构。从历史上来看,ARM在依照PPA进行产品设计和优化方面的表现—直很好,它通常能够提供低功耗的小面积产品,但又拥有可比条件下更优的性能。并且,这种设计还拥有充分的弹性空间,也能够根据应用场景的不同进行扩展,对追求高性能的客户颇有吸引力。总的来看,Cortex-A78的目标是在相同功率范围内将性能提高20%。当然,这个数据是包含了Cortex-A78架构的改进和5nm工艺应用的双重改善的结果。
Cortex-A78依1日采用的是ARM v8.2指令集,在指令集上没有任何变动的原因是考虑到要和Cortex-A55实现DynamIQ,因此这里必须保持ISA的相关兼容性。可扩展性上,四个Cortex-A78核心可以组成一个DSU进行DynamIQ配对,这一点和上一代保持一致,也是目前市场中的主流选择。缓存数据方面,每个核心的L1私有指令缓存可配置32KB或者64KB,L1數据缓存的可配置容量和前者相同,但是加入了ECC校验,每个核心私有的L2缓存可配置为带ECC、256KB或者512KB,L3高速缓存可以根据用户的需求,最高可选配置为4MB。
进一步来看,Cortex-A78的各个方面都进行了改进。在前端,最大的变化来自分支预测器,新的分支预测器可以在每个周期处理两个分支,此前的Cortex-A77虽然在后端引入了辅助分支预测器,但是其前端的分支预测器依旧只能处理一个分支。
在分支预测器翻倍后,Cortex-A78能够在每个周期实现2个分支预测,这样一来就极大地增加了核心部分的吞吐能力,或者能够更好地从分支预测的错误或是核心产生的“管道气泡”中恢复过来。所谓“管道气泡”是指处理器在执行多个并行指令的过程中,指令之间存在关联或者执行时间不均从而发生了互相等待的问题,这将导致整个处理器的效能由于互相等待而下降。“气泡”就像是在本来流畅的水管中存在的一段空气,它并不会带来任何“水流”(性能提升),反而会带来“水流”的停滞。ARM声称自家架构的性能生能在很大程度上是受到分支预测驱动的,因此在分支预测上的改进会大幅度提高处理器内核的效能。自然在分支预测的准确性上,新内核也会更出色,这都是一代一代不断进步的结果。另外,ARM还对分支预测的某些结构进行了更改,缩小了一些晶体管回报率较低的模块,比如那些面积和功耗成本较高,但是对性能影响不大的模块,从而重新平衡了整个分支预测部分的PPA。
在Cortex-A78前端的其他方面,ARM专注于提高电源效率。在L1的指令缓存方面,正如前文所述,用户既可以选择减少内核面积的32KB配置方案(这个方案会对性能带来些许负面影响,但能提高每平方毫米的效能),也可以考虑选择64KB的方案以追求更好的生能表现。Mop缓存方面,Cortex-A78和之前的Cortex-A77-样,都能最多容纳1 500个已解码的宏操作。另外,Cortex-A78从前端到核心中段(简称为“中核”)的带宽也和前代产品一样,设计了宽度为4的指令解码器,且从Mop操作缓存能够获取多达6条指令至重命名阶段,可以绕过指令解码器。
进入中核和执行流水线部分后,ARM宣称对新核心的大部分改善都用于PPA上。现在,ARM加入了更多的指令融合内容,这不仅有助于提高内核性能,还带来了电源效率的提高。因为在相同的工作量下,融合
Cortex-A78将是ARM历史上能耗比最出色的高性能移动处理器架构
Cortex-A78的宏观特性一览
Cortex-A78基于Cortex-A77设计,但是大幅度优化了PPA表现。
Cortex-A78在分支预测上做出了加强指令占用更少的资源和电源,但是会输出同样的性能。发行队列(lssueQueues)方面,ARM宣称带来了电源效率的改进。ARM进一步解释到,对任何乱序执行的架构来说,发行队列都是高耗电模块,因此对其进行深入的改进是必要的。但是ARM没有给出任何改进这部分的细节信息。
寄存器部分,包括寄存器重命名模块和寄存器文件也针对效率进行了优化,一部分减少了尺寸。尤其是寄存器部分已经重新设计了它们能容纳的条目密度,并且在相同的空间内可以打包更多的数据,从而使设计人员能够在不降低其功能或者性能的情况下减少结构的整体尺寸。
接下来是重排序缓;中区,虽然依1日维持了1 60个条目,但是Cortex-A78依1日在电源效率方面有所提升,并且可以打包以提高缓;中区的数据密度,从而增加结构中单位面积可以存储的指令数量。
在比较关键的乱序执行窗口上,Cortex-A78比Cortex-A77更小。ARM的解释是,较大的乱序执行窗口并不会有较高的投资回报,这和Cortex-A78尽可能提高效能的目标是;中突的。需要注意的是,乱序执行的窗口不仅仅是指ROB容量,ARM在和乱序执行的缓冲区、队列、结构等方面都进行了改进,很可钱在这些方面进行了一些缩减。
指令调度阶段,ARM在Cortex-A78上改变了说法,新架构采用了每周期6个Mops的调度带宽,之前的Cortex-A77是10个uops。另外,Cortex-A78在分派端量分派带宽增加到每周期12 uops,这将带来执行核心的性能提升。
计算单元部分的改变就比较少了o其中整数执行部分,Cortex-A78的一个简单ALU单元改进为更复杂的计算单元,现在这个新单元可以进一步执行乘法计算,这实际上带来了整数MULi+算能力的翻倍。其余部分则保持了和Cortex-A77-样的规格。
进入后端部分,一些比较明显的、用于提高性能的改进就比较多了o第一个重大变化是增加了新的加载AGU,和现有的两个AGU-起使得内核在相关计算上的负载能力增加了50%,不过这并不会改变每个周期的存储操作。在LD/ST队列到L1数据缓存方面,新处理器的接口带宽相比前代产品翻倍,从16个字节增加到了32个字节,并且内核到L2接口的读取和写入带宽也增加了一倍。
ARM在預取器方面似乎取得了突破。ARM宣称Cortex-A78的新预取器在存储区域的覆盖率、准确性和及时l生方面都得到了全新的改进,这里的及时性是指预取器能够快速抓住新出现的模式,并能够尽快地将数据引入较低级别的缓存中。预取器的工作流程也得到了改善,并不会启动得太早或者太晚,或者不必要地预取那些—段时间内不再使用的数据。
最后再来回顾—下缓存部分。除了容量可选外,L2 TLB部分得到了改善,其容量从1280页减少至1024页,这实际上提高了能效比,但是同时依1日保留了足够的条目以覆盖L3的4MB配置,访问延迟也进一步降低。
总体而言,在Cortex-A78上我们似乎看到了大量的缩减或者折中的做法,这些都是为了尽可能高的PPA而进行的操作。考虑到同时发布的Cortex-X1将专注于高性能,因此这些改进无论是从技术还是市场的角度出发,都是有一定道理的。
CORTEX-X1:一切为性能
ARM多年来的业务模型带来了可以满足最广泛客户需求的CPU设计方案,这里存在一个问题就是有关面积、能耗比和性能这样的三角形,设计人员不可能在提升一个部分的同时又满足其余两个部分的需求,也就是俗称的“不可能三角”。当然苹果在这里似乎证明了这个“不可能三角”存在的可能,但是造成ARM存在劣势的一个重要因素是,ARM在商业方面从来都没有证明过自己拥有研发更大核心的能力。
可以自定义的高性能架构
随着ARM客户越来越多,并增加了一些用于设计高性能内核的研发资源后,ARM似乎终于在设计能力上达到了一个突变点,从Neoverse-N1的发布一直到Cortex-A76的上市,似乎ARM有意在处理器设计上带来一些不
Cortex-A78在中核和执行部分上的优化一览
Cortex-A78在缓存部分的改进同以往的内容。
在ARM的介绍中,Cortex-X1的研发代号是“Hera”,这和之前的 “Hercules”类似,并且和Cortex-A78-样都来自ARM位于奥斯汀的设计团队。当然和Cortex-A78努力平衡PPA有所不同的是,Cortex-X1直接瞄准了性能,而很少考虑剩余的两个指标。
在处理器设计上,Cortex-X1也是ARM首次以一个全新的模式进行研发,这个模式被称为“Cortex-X自定义模式”,这个新的模式是ARM几年前发布的“Cortex技术构建”的改进版本。新的模式或者许可证允许客户在新的微架构的设计阶段早期进行协作,并要求对配置进行自定义,比如更大的ROB、不同的预取器或者更好集成的SoC设计等。从商业角度来看,这种新的模式实际上是之前BoACT的进一步改进版本,允许对处理器架构的“基础”设计部分进行更为深入的自定义和更改。ARM多年来一致宣称它允许客户更多的定制和区分旗下的产品,但直到现在ARM才真正拥有可以完成这项口号的资源。
需要注意的是,尽管ARM将新的Cortex-X1以及未来的Cortex-X家族的产品都统统定义为“Cortex-X自定义模式”,但是请不要将这种自定义模式和具有体系结构许可的供应商自行定义的微架构混淆,ARM的新模式依旧以局限于ARM自己提供相关IP和核心迭代,只是许可方可以选择不同的搭配方式。当然,ARM可能会在未来允许特定供应商对核心架构的更改——如果有这样的需求的话。
追求更强、更宽、更快
从架构改进来看,ARM在Cortex-A78上的改进是偏向温和的,—切都是为了更高的PPA。相比之下,在Cortex-X1上我们看到了一个和ARM遵循“平衡”的传统大相径庭、更为激进的方案。在Cortex-X1的设计上,ARM支持的是绝对的生能,即使这样的设计需要以能源效率和空间效率为代价。
Cortex-X1的架构设计可以概括为一种超负荷的Cortex-A78,也就是保持了相同的功能原理,但是显著增加了内核结构以最大化性能。和Cortex-A78相比,Cortex-X1的内核更宽,其解码宽度从Cortex-A78的4宽度扩展至5宽度,重命名带宽也提高到8Mops每周期,并且极大地改变了一些管道和缓存设计,使得NENO单元、L2缓存和L3缓存的性能或者容量翻倍。
在前端设计方面,Cortex-X1采用的部分设计在Cortex-A78上已经存在,包括新的分支预测单元。但有所不同的是,Cortex-X1扩展了处理器前端的很多方面,比如LO BTB部分已经从之前处理器的64条目升级到了96条目,从而允许采用更多零延迟的峰值。分支目标缓冲区依旧日设计了LO和L2 BTB两层结构,在先前公开的资料中,ARM将两部分称为nano BTB和MainBTB。更早一些的micro BTB/L1 BTB的名称只存在于Cortex-A76中,但是已经不再使用了.
宏操作缓存是Cortex-X1的重大改进,其容量相比之前产品的1.5K条目翻倍达到了3K条目。相比之下,英特尔在Sunny Cove中也仅仅使用了2.25K条目,当然AMD在Zen 2架构中使用的4K条目更大一些。在技术上,ARM的宏操作和英特尔、AMD提出的微操作实际上是一回事。
Cortex-X1的L1指令缓存提取带宽已经从之前的4条指令增加至5条,提升了25%,相应的解码器带宽也增加
Cortex-X1专为高性能设计,带来了30%的性能提升幅度。
Cortex-X1基于Co rtex-A78架构进一步加强而来
Cortex-X1的相关性一览,主要是可以自私你故意构架.了。Mop缓存的提取和重命名带宽从之前的6条指令增加至8条指令,每周期提升了33%。实际上只要数据到达了Mop部分之后,这款微架构就可以充当8宽度设计了o
中核部分,ARM再次谈到了通过Mops或者每个周期的指令来增加调度带宽。相比Cortex-A78,Cortex-X1的調度带宽从6增加到了8,也增加了33%。如果以uops来折算的话,当Mops完全分解成较小的uops时,内核每个周期最多可以处理16个调度内容,这比Cortex-A77能达到的lOuops每周期相比,提升高达60%。
乱序执行窗口方面,Cortex-X1配备了224个条目的乱序执行窗口(之前产品仅有1 60个),从而增加了核心提取ILP的能力。这是ARM-直不愿意大幅升级的部分,因为这部分的性能并不会随着结构尺寸的线性增加而线性扩展,反而会带来比较高的功耗和面积耗费。当然鉴于Cortex-X1面向的市场,这样的设计也是合理的。
在数据执行方面,和Cortex-A78相比,Cortex-X1的整数流水线没有任何变化,但是浮点流水线加倍,尤其是浮点和NENO流水线,这和之前的架构设计大相径庭。实际上从字面意义上来说,加倍是指将之前的架构相对应的管道进行复制粘贴,但依1日能够带来相当大的改进并增加了大量的执行资源。
在浮点资源加强后,Cortex-X1现在已经是4x128bit[YJSIMD设计了,矢量执行的宽度已经和台式机处理器,如Sunny Cove或者AMD Zen 2相同了o当然这里还存在一些约束,比如ARM现有的ISA不允许单个矢量大于128bit,这些问题将在下一代内核中解决。
在内存子系统方面,Cortex-X1发生了比较大的变化。首先来看L1数据缓存和L2部分。这两部分缓存ARM都采用了全新的设计,带来了不同的接入带宽。当然,高速缓存的接口并没有变宽,真正改变的是缓存本身的设计,现在实现了双倍的缓存区块(Bank),这里解决的问题是在对缓存进行多个并发访问时可能遇到的区块;中突,这种冲突存在于几年前的Cortex-A76架构中,并在测试中以奇怪的“之字形”图样显示出来,现在依1日存在于这个微架构的一些变体中。最后,Cortex-X1上的L1数据缓存和指令缓存的容量配置都是64KB。
在L2上,由于采用了全新的设计,ARM将L2的最小容量直接翻倍至1MB。相比之下,之前ARM在Neoverse-N1上也采用了1MB的L2缓存,但是这两者的设计是不一样的。新的Cortex-X1的L2访问延迟只有10个周期,比Neoverse-N1要小1个周期(Neoverse-N1为11个周期),因此性能进一步得到了提升。
内存子系统的改进还涉及支持更多负载和存储的能力,相关窗口宽度增加了33%,核心的MLP能力上还增加了更多。需要注意的是,这种增加不仅涉及存储和加载缓冲区,还涉及整个系统跟踪和服务请求的功能实现。另外,Cortex-X1的L2 TLB部分相比Cortex-A78大小也增加了一倍(相比Cortex-A76只增加了66%,因为
Cortex-X1相比Cortex-A78的主要改进部分
Cortex-X1的前端为了性能扩大了部分端口和资源
Cortex-X1的解码、重命名和执行部分得到了显著加强
Cortex-X1拥有更大的缓存Cortex-A78缩小了这部分面积),因此能够多在4KB的TLB上映射8MB的缓存,这和Cortex-X1搭配8MB L3缓存的设想是一致的。
在整个处理器集群中,L3缓存容量的大幅提升并不意味着速度的降低,因为这些缓存的延迟可能是相同的,但是取决于最终的实现方案,或者有额外的几个周期的延迟,这可能是指使用单独的电源来控制L3部分。当然,到目前为止,都没有看到任何厂商在L3上使用DSU的电源控制功能,比如高通的4MB L3是一直保持激活和活跃状态的。在8MB L3上,可能有一部分厂商开始考虑引入电源管理机制了,比如当只有很少的核心处于激活状态时,L3就部分启用而其余部分则休眠以节约能源。
总的来看,Cortex-X1的微架构相比之前的Cortex-A78,其基本构造结构是相似的,但是部分单元的规模要大不少。尤其是在前端和中核部分,Cortex-X1更为庞大。相比Cortex-A78极端重视PPA而言,Cortex-X1在这方面显然更为宽松,当然这将带来更多的功耗和更大的核心尺寸。
另外,Cortex-X1的流水線级数依1日很短,只有10个周期的分支错误预测损失和13个阶段的深度设计,这一点和Cortex-A78是一样的。值得一提的是,Cortex-X1更大的结构和更宽的设计也没有妨碍到频率的提升。
性功能耗能否两全其美?
在架构方面的信息介绍完之后,按照管理,ARM会带来相关处理器的性能、功耗预测。在Cortex-A78上,ARM选择了Cortex-A77进行对比,但是Cortex-A78采用的是台积电5nm工艺,而后者采用了7nm工艺,因此所有的对比数据中,既包含了微架构的改进带来的性能提升,也包含了工艺制程的优化。
在性能方面,将内核的ISO功耗目标定义在1W的时候,Cortex-A78可以使得性能提升20%,当然,台积电7nm工艺上Cortex-A77在1W功耗下只能运行在2.6GHz的水平,而Cortex-A78则提高到了3GHz,频率提升了15%。
在功耗方面,将CPU设定在相同的SPECint2006性能输出的情况下,Cortex-A78的功耗仅为Cortex-A77的一半。这是因为除了工艺因素外,Cortex-A78只需要2.1GHz就能完成Cortex-A77在2.3GHz下的性能,因此更为节约能耗。总的来看,在性能和功耗的可比参数上,Cortex-A78分别带来了20%的增加和50%的降低。
另外,在基本相同的条件下比较的话,ARM也给出了相关的数据,比如全部基于台积电7nm工艺,以及为Cortex-A78的核心配备了32KB的L1缓存,其余的两款核心都配备了64KB的情况下,不同处理器的PPA也就是性能、功耗和面积三个数值中,Cortex-A78相比Cortex-A77和Cortex-A76,带来了7%的性能提升、4%的功耗降低和5%的面积减少。
另外,ARM还首次发布了微架构的整体性能和功耗曲线,并比较了Cortex-A78和Cortex-A77。在Cortex-A77的性能最高点上,Cortex-A78的功耗减少了36%。在相同的功耗下,Cortex-A78的性能可以提高7%。
接下来看Cortex-X1。相比Cortex-A77,Cortex-X1带来了相同频率下3 0%的峰值性能提升,相比Cortex-A78则有22%,这里比较的是最大配置的Cortex-X1、Cortex-A77和Cortex-A78,并且都运行在3GHz下,实际上这样的Cortex-A77并不存在。另外ARM还展示了Cortex-X1在多个方面的生能提升,相比Cortex-A77,提升幅度大约在30%-18%不等。另外还有一个数据值得关注,那就是Cortex-X1的核心面积。目前的一些模糊数据显示,Cortex-X1的核心面积大约是Cortex-A78的1.5倍。
在和现有处理器的对比上,Anantech做出了一些预测。他们使用了3GHz的Cortex-X1和Cortex-A78来对比目前的部分处理器产品的单核心性能,并加入了桌面处理器Core i9-10900K和AMD Ryzen 9 3950X。结果显示,Cortex-X1有可能比Cortex-A77架构的骁龙865快了大约37%,近苹果A13处理器的生能。另外在和桌面处理器的对比中,这些测试显示现有的ARM处理器架构并没有太多地落后于AMD和英特尔,如果ARM未来还以这样的生能增幅狂奔的话,那么AMD和英特尔可能会紧张了。另外,在能耗比方面,Cortex-X1功耗可能是Cortex-A78的1.5倍或者2倍,但是考虑到它性能的提升幅度,因此依1日可以在能耗比方面和苹果的相关产品竞争。相比之下,Cortex-X1的能耗比仅仅比Cortex-A78差了大约23%,比骁龙865差了11 %-14%,因此在Cortex-X1的相关产品上,ARM在功耗上还有很大的回旋余地。
由于Cortex-X1的面积变大,因此ARM也提到在移动SoC中很难看到2个Cortex-X1核心的处理器,实际上越来越多的厂商正在考虑使用拥有三个处理器簇的产品,比如1个高性能核心Cortex-X1搭配3个中等核心Cortex-A78,再搭配4个Cortex-A55这样的小核心,实现“1+3+4”的设计,这很可能将是未来的主流。这样的设计相比采用Cortex-A78和Cortex-A55的‘4+4”设计,大约带来了30%的性能增长和1 5%的处理器面积增加,也是划算的。
在客户方面,三星已经确定将使用Cortex-X1和Cortex-A78,因此目前的问题在于三星会选择“1+3+4”方案还是“2+2+4”方案,这很大程度上取决于三星制造Exynos处理器的5nm工艺。另外,高通可能会选择“1+3+4”的方案,毕竟现在的骁龙865中高通已经在这样做了。另外华为海思可能短时间内不会使用Cortex-X1,毕竟除了众所周知的原因外,海思一般不倾向于使用最新的微架构。联发科也有可能使用Cortex-X1和Cortex-A78,虽然其长期以来都被看作是成本导向的公司,不过在追求性能方面,联发科可能会有自己独特的想法。
总的来说,ARM本次发布的内容看点不少。Cortex-A78虽然在架构上进步不大,但是依1日带来了绝对优秀的PPA表现,毫无疑问,Cortex-A78将成为未来数年时间市场的宠儿。让人惊喜的是Cortex-X1,ARM在这款产品上展示了全新的设计理念和性能优先的思路,显示出ARM在思考处理器发展上的突破和变化。毕竟,Cortex-X1带来了相比Cortex-A77 30%的IPC提升幅度,甚至在一些测试中接近x86处理器,让人充满遐想,更加值得期待
Gortex-X1的性能表现,比Cortex-A78再度提升22%。
Cortex-X1单线程性能在不同测试下的情况
Anantech预测的Cortex-X1和Cortex-A78的性能和功耗情况
ARM在核心搭配上也提出了一些自己的看法,可能未来高端处理器“1+3+4”的方案将成为主流。