向7nm时代的性能巅峰出击ARMCor

ARM的处理器架构基本上维持着一年一变。从早期的Cortex-A15到Cortex-A57,再到Cortex-A72、Cortex-A73以及Cortex-A75,ARM最近数年内不断通过发布全新架构,推动了移动计算性能的不断前行。今年五月,ARM又发布了全新的Cortex-A76架构,这款架构瞄准的是全新7nm工艺,其性能表现有望再攀高峰。

ARM在五月的ARMTechDay上,发布了一个全新的架构:Cortex-A76。和近期所有命名为“7x”的架构一样的是,Cortex-A76是一款主打高性能的大核心产品。实际上,这款全新的高性能架构并不是那么简单,它有可能将ARM带入一个全新的市场,向从未正面交锋的对手发起冲击。

来自奥斯汀家族的高性能移动架构

在本刊《移动世界的新王者—深度解析Cortex-A73》一文中,曾经详细梳理了ARM几大研发中心对应的产品及研发历史。ARM的架构研发团队有三个,分别位于美国得克萨斯州的奥斯汀、法国索菲亚以及英国剑桥。在过去一段时间中,其奥斯汀团队和旗下产品较少在人们面前出现,人们熟悉的Cortex-A73、Cortex-A75等都来自索非亚团队。实际上沉默是为了更好的爆发,奥斯汀团队早在年就已经开始研发有关未来微架构体系的相关内容,尤其是在FP/SIMD方面,Cortex-A75就从奥斯汀团队的新架构中吸取了不少“养分”。

奥斯汀团队最新的研发成果就是Cortex-A76。对ARM来说,Cortex-A76是一个全新研发的架构,也是一个全新的起点—对一个以出售IP为主的企业来说,一般不会研发全新架构,因为这往往意味着高昂的投入。但是ARM还是这样做了,并宣称其为第五代“年度节点”产品。从ARM过去五年的发展来看,其每年推出一个新的微体系架构类似于英特尔的“Tick-Tock”,但在ARM这里实际上是“Tock-Tock-Tock”。ARM宣称其每一代的GAGR(CompoundAnnualGrowthRate,年度复合增长率)高达25%,并全部来自于微架构的改进。

▲Cortex-A76是一个“笔记本电脑”级别的处理器产品。

那么Cortex-A76为何值得ARM投入甚多,并让重要的架构研发团队从零开始、全力投入呢?这是因为Cortex-A76的优势在于设计时兼顾了高性能和高效率。如果从传统架构改进而来,研发人员不得不遇到很多掣肘,但是设计一个全新架构,研发人员可以消除整个系统中的瓶颈,并打破之前微架构的限制。

Cortex-A76的重点放在了高性能上,并且保持极高的能耗比使其能够适应不同的场合,包括对功耗及其敏感的移动设备等。鉴于Cortex-A76如此优秀的特性,用ARM的话来说,Cortex-A76是一款“笔记本电脑”级别的高性能处理器架构,同时还具有高效能。这个理念贯穿了ARMTechDay的始终,ARM希望利用Cortex-A76的巨大性能提升来进一步强化新兴市场的竞争,例如高通正在宣传其骁龙处理器的“AlwaysConnectedPCs”,正是基于这个理由。

在一些宽泛的指标中,ARM对Cortex-A76的具体期望如下:性能提高35%,功率效率(能耗比)提高40%,此外还有对机器学习的支持,性能提升至原有架构的4倍等。ARM还给出了性能对比的基准:10nm工艺、2.8GHz运行的Cortex-A75架构对比7nm工艺、3GHz运行的Cortex-A76架构。

▲ARM对Cortex-A76的性能期望。

另外,Cortex-A76还可以兼容最新的DynamIQ技术,可以将其配合Cortex-A55,组成一个兼顾高性能和高性能功耗比的处理器集群,厂商可以和目前的Cortex-A75搭配Cortex-A55那样,推出Cortex-A76搭配Cortex-A55的“1+6”或者“2+6”处理器集群。值得一提的是,Cortex-A76在设计中也作出了一些取舍,比如ARM依旧指出Cortex-A75拥有最好的PPA(单位面积性能),因此Cortex-A75也并非落伍,在具体产品中使用谁将取决于厂商的需求。

▲Cortex-A76支持DynamIQ,能够组成不同的核心。

接下来,本文将深入Cortex-A76的核心,带你了解这一全新架构。

▲Cortex-A76架构设计的一些要点

Cortex-A76前端架构

总体来看,Cortex-A76是这样一个结构:超标量乱序结构,拥有4个解码前端(4发射),8个执行端口,总流水线级数13级,执行延迟为11级。在前端,ARM设计了一个新的预测/获取单元,被称为“基于预测的获取”,这意味着分支预测单元将介入指令获取单元的工作,这和之前所有的ARM微架构都有所不同,能够实现更高的性能和更低的功耗。

▲Cortex-A76的架构总览

在分支预测单元方面,ARM首次采用了混合间接预测器。预测器和读取单元分离,其支持的大型结构独立于机器其余部分运行。独立结构意味着可以使用时钟门控技术控制功耗,这对分支预测单元而言是能效比上的积极改进。分支预测器方面,ARM设计了3级分支目标缓存,一个16通路的nanoBTB,一个64通路的microBTB和一个通路的主BTB。

相比之下,虽然ARM在Cortex-A73和Cortex-A75的分支预测器上宣称能够预测所有分支,但是Cortex-A76的分支预测器显然更为强大,能够带来比前代产品更强的分支预测效果,以提高效能。

▲Cortex-A76的前端,强化的预测部分的功能。

Cortex-A76的分支预测单元运行速度是读取单元的2倍,也就是32Bit/周期,这意味着每周期可以执行多达8×32bit条指令,这些指令在由12个“区块”所组成的指令提取单元前会组成一个指令提取队列。相对应的,读取单元以16Bit/周期操作,执行4×32bit的指令。以指令读取单元2倍速度运行的分支预测单元,能够在预测错误的情况下,隐藏流水线中的分支“气泡”并避免错误影响指令提取单元以及后续的核心其余部分,一些消息显示核心方面能够处理指令方面出现的8次错误,大大提高了容错率。

所谓“气泡”,是指那些可能存在的危险导致流水线发生指令停滞或者延迟。在之前的微架构中,即使预测正确,并且指令端能够向解码端发送大量的指令,但一旦指令输入解码端并被分解成微操作的时候,就有很大可能遇到“气泡”。

流水管线方面,Cortex-A76拥有13级流水线和11级核心的延迟。在这个过程中,指令等待的关键路径和阶段可以重叠,比如发生在分支预测过程的第二个循环和指令提取过程的第一个循环之间。在最理想的情况下,核心延迟可以缩短3个周期。

在解码和重命名阶段,Cortex-A76的每个周期吞吐量为4个指令,也就是4发射方案。相比之下,Cortex-A73和Cortex-A75在这个阶段的指令吞吐能力分别为2和3,所以Cortex-A76带来了比Cortex-A75约33%的指令宽度增幅。Cortex-A72的指令吞吐能力为3,但是在Cortex-A73上变为2,主要是考虑到架构需要进一步优化效率和功率,并尽可能高的提高前端设备的利用率。随着Cortex-A76进入4发射,ARM引来了自己最“宽”的微架构,虽然相比三星或者苹果,Cortex-A76依旧显得比较“瘦”。

▲Cortex-A76的解码和重命名阶段的设计。

Cortex-A76的提取单元提供最多16个32bit的指令解码队列。流水线阶段由2个指令对齐和解码循环组成。在这一步,ARM决定使用2周期单元而不是之前架构上的1周期单元。另外,在处理ASIMD/FP管线指令时,之前的索菲亚内核在解码阶段依旧需要一个辅助周期,但是ARM似乎发现了其他的优化方法,使得Cortex-A76的微架构能满足设计的需求。

解码阶段的每个周期采用4条指令,并且以每条指令1.06Mops的平均比率输出宏操作。ARM同样在寄存器重命名阶段进行了功耗优化,做法和之前的分支预测单元类似,都是为功能模块加入时钟门控。Cortex-A76中的重命名单元时独立的,通过时钟门控控制整数、ASMID和标志操作等。

另外,Cortex-A76的重命名和调度只需要使用1个循环,相比之前的2个周期有所减少。在宏指令方面,Cortex-A76的宏指令按照每条指令1.2uop的比例拆分为微操作,因此每个周期拥有高达8uops的调度次数,这比之前Cortex-A75的6uops和Cortex-A73的4uops增加了不少。

在乱序执行方面,Cortex-A76的乱序窗口大小为,缓冲区被分成负责指令管理和负责回收注册的两个方面,ARM称其为混合提交系统。这里需要强调的是,ARM没有把重点放在增加相关单元和设计方面,因为ARM发现这部分的性能投资回报非常糟糕。一些数据表明重新排序缓冲区7%才能增加1%的性能,因此这部分设计只需要做到够用就好。另外,ARM还表明自己试图优化前端,一伙的管理程序活动和系统调用方面的最低延迟,但是没有更进一步的消息。

Cortex-A76的后端架构

再来看看后端的执行部分。Cortex-A76的整数核心包含了6个执行单元,其中图中有4个单元分别是1个分支、2个ALU、1个ALU/MAC/DIV单元,再加上一个加载/存储单元。其中的3个整数执行流水线中的2个ALU进行简单算术操作,1个复杂流水线执行乘法触发和CRC操作。3个整数管道由一个深度为16的指令队列提供指令服务,2个加载/存储单元则由深度为12的指令队列负责。

▲Cortex-A76的后端设计

浮点方面,ARM设计了2个执行单元,其中一个执行FMUL/FADD/FDIV/ALU/IMAC等,功能较为强大,另一个比较简单只执行FMUL/FADD/ALU,ASMID浮点核心由2个深度为16的队列提供指令服务。

当人们谈及后端架构时,往往会提到指令吞度量和延迟。Cortex-A76在指令延迟方面有很大进步,这是由于其架构设计可以在非常重要的指令上削减周期所致。Cortex-A76将乘法和乘法累加的延迟从之前的3个周期降低到了2个周期,吞吐量相比Cortex-A75保持不变。显然,因为Cortex-A76有3个整数流水线,这相当于吞吐量相比Cortex-A75增加了50%,同时延迟更低。

在负责FP和ASMID操作的“VX”也就是矢量执行流水线中它有着更显著的改进,ARM称其为“最先进”的设计,虽然这个结果已经被炒作了好多年了。从设计来看,浮点算数运算的延迟从3个周期降低到了2个周期,乘法累加从5个周期降低到了4个周期。ARM在这里称执行带宽依旧是“双位ASMID”的意思是,对于Cortex-A75和之前的处理器,只有一个向量管线能够使用位,另一个则是64位,在Cortex-A76上,2个向量管线都是位,所以4精度操作的吞吐能力相比前代产品增加了一倍。

Cortex-A76的数据缓存固定为64KB,并且是4路关联的设计方案,负载延迟保持在4周期,数据标签和查找所需要的DTLB运行在一个单独的管道中。ARM的设计目标是最大限度的提高MLP/内存级并行性,以便能够支持更多的内核。此外,Cortex-A76还设计了4个不同的预取引擎,这些并行运行的预取引擎可以查看各种数据模式并将数据加载到缓存中。

就Cortex-A76的缓存层次而言,ARM设计的还是非常到位的,在带宽和数据延迟方面达到两全其美。64KBL1指令缓存和64KBL1数据缓存的读取速度高达32Bit/周期。L2高速缓存可配置为KB或者KB,并且使用了第二代DSU设计,D端包括了一个2X32Bit/周期写入和读取接口。L3缓存采用了独占设计。整体而言,核心微架构方面有关缓存的改进据说可以将内存带宽提升最高达90%。

▲Cortex-A76的L1数据缓存设计

▲Cortex-A76的缓存加入了第二代DSU

Cortex-A76在存储微架构设计上的优势在于通过详细优化每一周期的运行以最大化整个核心的内存性能。在设计阶段,工程师研究那些可以为性能或者功耗带来0.25%差异的特性,如果可以达到,那么就被认为是对核心有价值的设计。不要小看这些百分比,大量的小数据调优后能够带来相当显著的性能提升。

▲Cortex-A76的缓存性能比前代产品有很大提升

在延迟方面,ARM认为Cortex-A76做到了极致。ARM宣称要使得自己的客户能够SoC上遵循自己的设计规范,以实现最高的性能并充分发挥优势。比如对主内存每纳秒的延迟提升将会带来0.25%的性能。正如我们在骁龙中所看到的,这颗SoC的问题在于其延迟较高的L4缓存,使得最终性能没有达到ARM的期望。未来,ARM的客户们需要更多的


转载请注明:http://www.aierlanlan.com/rzdk/4325.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了