分享

更强大,更高效!ARM全新Cortex

 追逐四叶 2017-09-10

ARM在移动计算领域的地位无可比拟,但这并不意味着ARM可以停滞不前。技术的发展永无止境,ARM从几年前开始就保持了每年推出一个全新架构的节奏。去年,ARM推出了极端注重能耗比的Cortex-A73核心和全新的Mali-G71 GPU。今年,ARM又带来了Cortex-A75和全新的Cortex-A55核心,前者的高性能自然毋庸置疑,后者作为广受欢迎的Cortex-A53的升级产品,将成为未来市场上最重要的移动CPU架构。那么,这两款全新的架构有什么特点,ARM又为这些架构搭配了哪些令人激动的新技术呢?今天,我们就一起来了解这些内容。
作为一家全球企业,ARM成立了三大设计团队用于研发不同方向的产品:首先是美国德克萨斯的奥斯丁团队,主要研发高性能产品,包括Cortex-A15、Cortex-A57、Cortex-A72;其次是英国剑桥,剑桥设计团队推出了著名的小核心产品,包括Cortex-A5、Cortex-A7和Cortex-A53;最后一个地方是位于法国的欧洲科技中心索菲亚-安迪波斯利,ARM在这里研发了索菲亚家族的Cortex-A12、Cortex-A17和Cortex-A73,其产品特点是高性能功耗比。这次,ARM发布的两款产品分别是Cortex-A75和Cortex-A55,前者主打高性能功耗比,后者主打小核心。
▲ARM推出了全新的Cortex-A75和Cortex-A55架构
DynamIQ-big.LITTLE技术接班有人
在描述全新的两款CPU之前,我们先来谈谈新的DynamIQ技术。首先,核心集群规模扩大、电源控制更为灵活。DynamIQ中,ARM允许处理器实现自由搭配,一个集群中处理器并不限制架构和型号,每个集群中最多可以有8个内核(bL技术最多允许4个),允许32个集群存在,内核数量最多可达256个,未来还可以进一步扩展至上千个。之前的bL技术针对某一个特定的集群只有一种电压、频率控制,但是DynamIQ中一个集群内最多可以拥有八种电压和频率控制(每一种被称为一个控制域),这样一来,不同的核心可以使用不同的电压和频率,也允许集群中某核心单独关闭。
▲DynamIQ带来了全新的集群设计方案。
其次,在集群搭配方面,在新的DynamIQ中,ARM认为虽然未来的处理器还是以八核心配置为主,但是八个核心都可以放在一个集群内,可以实现Cortex-A75和Cortex-A55的任意搭配组合,无论是"1+7"还是"2+6",或者是"3+5"、"4+4"等都非常适合,且由于电源管理升级,不同控制域的核心可以实现不同的频率、电压方案,也可以单独关闭。以"1+7"的方案为例,其中"1"是指一个高频Cortex-A75大核心,提供最强大的单线程性能,其余七个是Cortex-A55核心,提供多线程和节能配置。这种方案相比传统的八核心Cortex-A53方案,能够提供最多2.41倍的单线程性能、1.42倍的多线程性能、同时核心面积也仅仅是传统方案的1.13倍,几乎没有增加。反观目前流行的"4+4"方案,单核心性能只能提升至1.95倍,核心面积却增加至1.55倍,成本陡然增加。
为了实现上述功能,DynamIQ成为了一套复杂的控制体系,包括DynamIQ Shared Unit单元用于控制和管理整个处理器核心的电压、频率;DSU作为集群内CPU和系统其余部分的通讯中心,实现数据传输控制的功能;除此之外还包含异步桥、探听过滤期、L3缓存、Bus I/F、电源管理器、ACP(加速一致性端口)和外围设备I/F等部件,实现电源管理、核心同步、处理器和外部设备之间的衔接等功能。
▲DynamIQ能够带来符合市场需求的核心搭配和性能表现。
缓存的改进也是DynamIQ亮点之一。在DynamIQ中,ARM将L1和L2缓存全部都设定为了核心专用缓存,这样可以使得L2缓存的延迟降低50%以上,集群中的所有核心使用可选的L3缓存,容量可选1MB、2MB或者4MB。新的L3缓存为16路设计,技术上属于伪独占设计,不过ARM表示L3缓存完全独立,几乎不会出现在其他缓存中。另外,L3缓存可以分区,这对运行固定工作负载的网络或嵌入式系统以及类似的拥有大量确定性数据的应用程序来说可能比较有意义,L3的分区最多可以分为4组,分区可以根据任务和内核而设定。没有分配的L3缓存可以用作所有处理器共享,并且分区在整个过程中都是动态的,可以根据需要由操作系统管理或者由管理程序创建、调整。
▲DynamIQ在各方面的改进,尤其是缓存方面。
除了上述内容,为了更进一步的提高多核心效率和系统效能,ARM在DynamIQ中还加入了错误报告技术,DynamIQ可以将检测到的错误报告给软件。另外,高速缓存存储也是本次新加入的功能。这个功能允许GPU或者其他的加速器通过ACP或者AMBA 5 CHI端口将数据写入L3缓存,甚至直接进入特定核心的L2缓存。ARM举例说,使用TCP/IP加速网络设备,可以将部分数据直接写入CPU L2。这样一来,数据不需要在处理器中进行多次中转,显著提高了性能比你更降低了功耗,也降低了对缓存一致性机制的依赖。
DynamIQ从系统架构层面改变了系统整体的运行方式,带来了更高效的能源利用方式,能够大幅度提高系统的能耗比。
Cortex-A75--扩大规模、提升IPC
之前我们在文中曾提到ARM的重点已经从绝对的性能转向更看重效能和性能功耗比。Cortex-A73就是这样的产物。从宏观角度来看,Cortex-A75是一款三发射的、11至13级的乱序执行的处理器。相比之前的Cortex-A73,Cortex-A75为了进一步提高性能,解码端从之前的双发射提升到了三发射,同时也放大了后端资源。
▲Cortex-A75的架构简图。
从架构来看,Cortex-A75的解码器和Cortex-A73的基本一样,都能够在一个周期内解码绝大部分指令。Cortex-A75每周期最多实现3条指令解码,发射能力从之前Cortex-A73的4uops/周期提升到6uops/周期,提升幅度为50%。在整数方面,Cortex-A75的每个发布队列可以提供2uops,ALU和AGU采用了独占性设计来提高效率。这样可以使用Cortex-A75在指令执行的推测性上更有优势。峰值性能方面,Cortex-A75的每个管线可以提升至8uops,显著超出前代产品。
另外,和Cortex-A73一样,Cortex-A75面对一些简单的分支uops时可以绕过重命名和调度阶段,这将消除2个阶段的延迟。一些复杂分支指令需要访问寄存器,然后生成一些额外分支,包括ALU和AGU,这可以通过重命名和调度来隐藏部分额外的复杂性,从而提高效率。
▲Cortex-A75的设计目标是瞄准高性能。
在NENO/FP部分,Cortex-A73和Cortex-A75都没有调度阶段,虽然uops仍被加入队列,并且队列之间也存在负载平衡,但由于处理方式存在差异,因此浮点队列比整数队列要长一两个阶段。在NENO/FP部分,Cortex-A75现在可以发送超过3uops/周期,每个队列发送中可以"下沉"2uops。
更进一步的分析先从指令端开始。Cortex-A75依旧是一个"插槽式的微架构",这个架构在之前的Cortex-A73上就已经成功应用,不过ARM迄今为止也没有公布太多细节,大概来说就是ARM设计了8个"Slat"(插槽)用于消除那些冗余指令对资源的消耗,降低系统功耗。
在预取方面,Cortex-A73和Cortex-A75都设计了一个非常简单的指令预取器,它提供了一个64KB L1指令缓存,4路关联,使用的是实际索引的方案,这样有助于降低延迟。在分支预测器上,之前Cortex-A73使用了一个全新的分支预测器和一个64路的micro-BTAC用于提高预测效率,还有静态分支预测器以及包含嵌套子程序返回地址的返回堆栈。考虑到Cortex-A73的分支预测部分拥有优秀的性能、功耗表现,因此ARM将其完全继承到了Cortex-A75中,只是在微循环微观预测器等方面进行了微调,可能会对IPC带来一些改善。
▲Cortex-A75使用改进的分支预测单元。
实际上ARM一直在寻找进一步提升IPC的方法,Cortex-A75最大的改进就是从之前Cortex-A73的双发射升级至三发射。根据ARM的数据,Cortex-A73的大概IPC应该在1.2个单位,在特定的测试中可以增加至1.6至1.8,不过部分测试也相应的降低到0.4至0.6。一个双发射的处理器虽然够用,但是更大的吞吐量在当前的环境下可能会有更好的表现。比如在发生一次分支预测错误后(一般1000次分支预测可能有2至4次预测错误),CPU需要尽可能快的重新填充流水线,所以这个时候就需要更大的吞吐量来加快流水线填充。当然,从宏观角度来看,选择三发射还是双发射,受到功耗、面积、性能等多重因素影响,它会产生其他一系列的问题,但是ARM显然经过了充分的权衡。
在接下来的重命名和调度阶段,Cortex-A75和Cortex-A73基本类似。Cortex-A75没有重新排序缓冲区或者架构寄存器,它使用物理寄存器文件来存储uop操作数,这使得Cortex-A75能够通过限制CPU周围移动的数据量来减少功耗,并降低使用重新排序缓冲器引起的指令窗口瓶颈。另外,ARM还加强如旁路写入、提高核心执行次序、优化L2缓存未命中的处理等。
在数据和缓存部分,Cortex-A75相对Cortex-A73做出了不少调整,比如L1和L2的数据预取部分重新调整,stride预取部分则为Cortex-A75做出了充足的优化。从缓存角度来看,Cortex-A73和Cortex-A75的L1缓存变化不大,主要变化在L2部分。之前也曾提到,由于DynamIQ的存在,传统上共享的L2缓存变成了核心独占设计。根据ARM数据,独占的L2缓存相比共享的L2缓存,延迟时间大约降低了50%,比如指令提取从之前的20至25个周期降低到11个周期(在L1未命中、L2命中的情况下)。
▲Cortex-A75的缓存设计,拥有更高带宽。
在容量方面,L2可以选择搭配256KB或者512KB,其中,在单核心配置下512KB相比256KB能够有2%的性能提升,四核心下最多可达4%至5%。此外,L1数据缓存和L2使用了完全独占的设计,这样两者的数据不会有重复,空间利用率也有了提高。总的来看,ARM在Cortex-A75上使用了独占的L2缓存设计,大幅度降低了延迟并提高了命中率,同时也允许Cortex-A75使用比较简单的指令预取部分来节约功耗和面积,是ARM在重新权衡后的新选择。
▲Cortex-A75完全独占的L2缓存设计,相比上代产品性能提升大约50%。
最后来看比较注重要的管线和执行部分。Cortex-A75的ALU/INT管线和Cortex-A73的相同,两个ALU都能执行基本操作,比如加法和位移,不过只有一个ALU能执行整数乘法和乘法累加,另一个则使用Radix-16分频器执行整数除法。这意味着Cortex-A75不能在一个周期内完成2个整数乘法或者处罚,不过可以同时执行一个整数乘法/除法和一个加法或者位移。在执行效率方面,所有的执行都可以在一个或者两个周期内完成,不过更复杂的操作需要额外的周期。
▲Cortex-A75的计算单元支持更多数据格式。
在浮点计算方面,Cortex-A75和Cortex-A73中的2个64位NENO/FP管线具有自己专用的重命名和128位的寄存器文件,每个SIMD管线都能够执行8个8位、4个16或 2个32位的整数或单精度浮点计算,或者每循环计算1个64位的整数或双精度计算。值得一提的是,由于Cortex-A75更新到了ARMv8.2架构版本,因此还能够实现对半精度的FP16支持。
总的来说,Cortex-A75架构依靠三发射和内和改进、L2缓存独占等设计,基本上达到了ARM提高IPC、提高效能的目的,新支持的格式也大大扩大了新处理器核心的应用范围。并且由于DynamIQ的加入,ARM还能够在核心效率上给予更佳的调配。可以说,Cortex-A75的加强是适时地也是非常恰当的。
Cortex-A55--更多新功能
看完了Cortex-A75,我们再来看看Cortex-A75。从宏观来看,Cortex-A55依旧是一个双发射、顺序执行、8级流水线的CPU核心。根据ARM的资料,对Cortex-A55这个档次的产品来说,8级流水线深度是最佳方案,因为从14nm/16nm到10nm再到7nm的转换中没有发现显著的频率改善(大多数工艺增益都会带来面积缩小、动态漏电率降低),因此继续选择8级流水线是很有意义的,这也决定了Cortex-A55的频率将和Cortex-A53类似。一般来说,较少的流水线等级会带来较低的频率,功耗和面积则没有太大改善;较深的流水线则会带来较高的频率,不过功耗也会随着频率增加而提升。
▲Cortex-A55的架构简图。
从Cortex-A55的架构简图来看,Cortex-A55依旧使用了双发射架构,每个周期可以解码大多数指令。不过,Cortex-A55的变化在于转向独立的负载和存储可以并行执行的AGU,而不是Cortex-A53那样单一组合型的AUG。另外,之前Cortex-A53已经提供了非常不错的吞吐能力,不过问题在于如果没有准备好处理的指令或者数据,或者错误的分支预测、或者高速缓存没有命中的话,Cortex-A53的效率将会大幅度降低,内核甚至会停顿。因此,保持提供指令以及数据对顺序核心来说是至关重要的,这是Cortex-A55带来了改进版本内存子系统的原因之一。
指令端方面,Cortex-A55的L1指令缓存现在升级到了4路关联,而不是之前Cortex-A53的2路,不过依旧采用了VIPT(几何索引、物理标记)设计,这种设计常常用于L1缓存,因为可以显著降低延迟。另外,Cortex-A55还拥有一个15-entry的L1 TLB,支持多个页面大小。L1指令缓存可以选配16KB、32KB或者64KB,这一点和Cortex-A53有类似的地方。
▲Cortex-A55的L1缓存大幅度加强。
接下来是分支预测,一般来说,一个新的CPU架构总会使用新的分支预测器,最起码是重新调校的。Cortex-A55的新分支预测器采用基于神经网络的算法来提高预测精度,并加入了循环中止预测,避免在循环结束时产生错误。另外,Cortex-A55在主要的条件预测器之前,还加入了0周期微观预测器、间接预测器等,用于在特殊情况下提高效能。
在数据方面,Cortex-A55使用了一个全新的数据预取器用于提供更高的带宽,这个新的数据预取器能够监测更复杂的高速缓存未命中情况,并且可以直接预取L1、L2或者L3的缓存数据。ARM认为这样的设计能够为移动设备的UI性能产生正面影响。缓存方面,L1数据缓存依旧是4路关联设计,不过目前是完全独占的排他性设计,其中所有数据都不会在L2缓存中重复。L1数据缓存的大小可选16GB、32KB或者64KB。L1指令缓存的则有一定变化,从之前的PIPT也就是物理索引、物理标记转移至VIPT(虚拟索引、物理标记),这可以在很多场景中降低缓存延迟。另外,L1数据缓存使用了16路方案,带宽相比之前的10路方案显著增大,并且ARM还降低了L1指针追溯周期,从之前的3周期降低至2周期,延迟进一步降低。
在二级缓存方面,Cortex-A55由于需要和DynamIQ搭配使用,因此也获得了独占的L2缓存,和核心同频,这一点和之前Cortex-A75的改进是基本相同的,延迟降低了大约50%,从最多12个周期降低至6个周期。L2缓存可选0KB、64KB、128KB和256KB,ARM估计大量用户会考虑128KB,但也有少部分应用选择256KB。在TLB方面,Cortex-A55的L2的TLB数量从Cortex-A53的512个增加到1024个,富余空间更充足了。另外,L2使用的是PIPT,实现简单、功耗低。在带宽方面,L2使用了4路设计,也是比较正常的方案。
▲Cortex-A55的L2缓存也改成独占式方案。
在执行单元部分,Cortex-A55的设计基本和Cortex-A53相同(也和Cortex-A75类似)。整数方面,Cortex-A55设计了2个可以执行加法和位移操作的ALU,但只有其中一个能够处理整数乘法和乘法累加,另一个则使用Radix-16分频器执行整数除法。在浮点计算方面,考虑到一部分用户只需要整数计算而对浮点并无要求,因此Cortex-A55的2个64位NENO/浮点管线被设计成可选方案-这和Cortex-A75的浮点部分也基本类似,包括支持的规格和对ARMv8.2的支持等,提供了包括FP16半精度和INT8整数计算的支持。
▲Cortex-A55大幅度加强了AGU。
▲Cortex-A55的NENO/FP是可选式设计,支持ARMv8.2。
▲Cortex-A55还加入了大量新功能支持。
总的来看,Cortex-A55的改进主要在于分支预测、数据读取和写入(AGU)以及缓存部分,在执行部分改进较少。这主要是考虑到Cortex-A55较小的核心面积和市场需求所致。实际上Cortex-A53的规格设计已经非常优秀,Cortex-A55只需要简单加强即可。
性能预览--更强,更快
按照惯例,在每次新架构发布后,ARM都会给出一些性能预览,在Cortex-A75和Cortex-A55发布后也不例外,下面我们一起来看看吧。
首先来看Cortex-A75和Cortex-A73。由于微架构存在显著差异,比如三发射和双发射差异,因此Cortex-A75在大量指标上远胜Cortex-A73是理所应当的。根据ARM的数据,Cortex-A75相比Cortex-A73,大约带来了22%的整数性能提升,33%浮点性能提升、16%的内存性能提升、48%的渲染性能提升、34%的GeekBench综合性能提升等,基本上可以看做全面胜出。
▲Cortex-A75对比不同核心的性能情况。
除了单纯的性能外,ARM也给出了在不同功耗配比下Cortex-A73和Cortex-A75的性能情况。在750mW的情况下,Cortex-A75比Cortex-A73性能高大约20%;1W的时候大概高出25%;2W时高出30%。这些数据表明,Cortex-A75的性能和功耗相关性很高,在更高功耗和频率下能够获得更为突出的性能增长。此外,横向对比不同制程的产品来看,ARM认为10nm工艺下Cortex-A75可以运行在3GHz上,此时的性能大概是20nm、2.1GH的A57处理器的2.5倍。
▲ARM给出的Cortex-A75对比Cortex-A73性能情况。
▲Cortex-A75对比Cortex-A73在相同功耗情况下的性能。
再看看Cortex-A55的性能表现。Cortex-A55由于大幅度改善的内存性能,因此虽然执行部分变动不大,但是性能也得到了显著提升,这也恰好说明ARM所说的Cortex-A53的瓶颈在内存部分的判定是正确的。ARM宣称Cortex-A55的内存性能相比Cortex-A53提高了1倍,因此带来了整数18%、浮点38%、渲染14%、综合21%的性能增加。当然,带来如此高幅度的性能增加,功耗一点不增加是不可能的,相比之下Cortex-A55的功耗比Cortex-A53提高了3%,考虑其性能增加,整体能耗比反而再度提升了15%。要知道之前Cortex-A53以及基本做到了性能功耗比的极致,这次再次提升15%殊为不易。
▲Cortex-A55对比Cortex-A53的性能情况
▲Cortex-A55的功耗略有上升,但性能功耗比同样大幅度提升15%。
Cortex-A75和Cortex-A55--奠定未来
通过本文对这两个新核心的介绍,相信大家已经对其基本架构和性能有了一定的了解。从产品角度来看,Cortex-A75和Cortex-A55是ARM在10nm时代的最重要布局,其高性能、高性能功耗比和齐全的特性支持,能够让ARM在移动计算的各个市场都有所斩获。
▲ARM将通过不断推出全新架构和技术,在即将到来的AI时代抢占先机。
从ARM规划产品的角度来看,索菲亚家族在10nm时代将成为移动计算的核心产品,Cortex-A75将取代目前奥斯丁家族的Cortex-A72。由于考虑到移动性能功耗比等原因,ARM在Cortex-A75和Cortex-A55上删除了部分特性,而这些特性应该都会在未来奥斯丁家族的处理器上加入,并竞争诸如车载、关键安全设备等市场。当然,在7nm时代,奥斯丁家族产品的回归,也会进一步提高移动计算设备的性能,这一点毋庸置疑。
至于具体的产品,估计在架构研发时,诸如华为、三星、高通等厂商就已经开始深入介入并提出自己的需求,发布会后最快在2018年第一季度甚至本年度第四季度,就将有厂商推出使用Cortex-A75和Cortex-A55架构以及DynamIQ的产品,实际应用到手机上应该不会晚于明年第二季度。届时,大家就可以看到全新GPU和全新CPU架构的新一代SoC将会爆发出怎样的能量。返回,查看更多
责任编辑:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多