来自于 anandtech 文章 翻译
Cortex-A78: Doubling Down on Efficiency
Cortex-A78几乎延续了Arm的传统设计理念,即严格按照性能,功率和面积(PPA performance, power, and area)之间的平衡进行制造。Arm能够以低功耗和小面积提供极具竞争力的性能。Cortex-A78承诺在相同的功率范围内将持续性能提高20%。这个数字是对产品性能的预测,结合了微体系结构的改进以及即将推出的5nm节点的改进。
Cortex-X1: Breaking the Design Constraint Chains
Arm的现有业务模型旨在尝试创建可满足最广泛客户需求的CPU IP。这就产生了一个问题,即您不能过度关注PPA三角形的任何一个区域而又不妥协其他两个区域。Arm的CPU内核多年来一直生活在Apple的CPU内核的阴影下,尽管可以肯定的是,Apple的内核在技术上是优越的,但Arm商业模式建立一个更大的微体系结构。
随着ARM公司获得更多的客户,并增加研发资源来设计更高性能的内核(服务器空间是主要驱动力),Arm似乎终于设法达到了设计能力的交叉点。该公司现在每年能够构建和交付多个单一微体系结构。从某种意义上讲,我们从去年开始推出Neoverse-N1 CPU就已经看到了这一点,Neoverse-N1 CPU在其Cortex-A76移动同级产品上已经有了一些更显着的微体系结构更改。
Cortex-X1,基本设计与A78非常相似-实际上,两个CPU都是由同一奥斯汀CPU设计团队共同创造的,但最大的不同是X1打破了其功耗和面积限制,专注于获得最佳性能,而很少考虑PPA三角形的其他两个指标。
Cortex-X1是在Arm的一个新程序的框架内设计的,该公司将该Program称为“ Cortex-X Custom Program”。该Program是该公司先前几年前发布的“ 基于Arm Cortex技术构建 ”Program所做的改进。该许可证允许客户在新的微体系结构的设计阶段早期进行协作,并要求对配置进行自定义,例如更大的重新排序缓冲区(ROB),不同调优的预取器或用于更好地集成到其中的接口自定义SoC设计。高通公司是该许可证的主要受益者,充分利用了核心的品牌重塑选项。
新的Cortex-X程序是BoACT许可证的改进,这次是围绕对Arm产品路线图中列出的“基础”设计进行更重要的微体系结构更改。在这里,Arm宣称它允许客户更多地定制和区分他们的产品。但真正的要点是,该公司现在有资源来最终完成一些主要客户多年来要求的工作。
要注意的一件事是,尽管Arm将程序命名为“ Cortex-X Custom Program”,但不要将其与具有体系结构许可的供应商的实际自定义微体系结构相混淆。该习惯是指Arm对其路线图CPU内核的定制-该设计仍由Arm自己自行构建,并提供IP。目前,所有被许可方之间的X1 IP也将是相同的,但是该公司不排除将来迭代中特定于供应商的更改-如果有兴趣的话。
这次,Arm还在核心上维护了营销和品牌,这意味着我们不会看到CPU的名称不同。总而言之,围绕设计程序的整个营销披露可能有点令人困惑-事实上,X1只是Arm的另一种单独的CPU IP产品,针对的是其主要合作伙伴,他们可能愿意支付更多费用。以获得更高的性能。
归根结底,我们得到的是两种不同的微体系结构-都是由同一团队设计,并且都共享相同的基本设计模块-但A78致力于最大化PPA指标,并着重于效率,尽管新的Cortex-X1能够最大限度地提高性能,即使这意味着要牺牲更高的功耗或更大的裸片面积。
对于Arm来说,这是一个令人难以置信的设计理念变更,因为该公司不再受Apple,AMD或Intel等大型公司的超高端性能环的束缚.
Cortex-A78 Micro-architecture: PPA Focused
新的Cortex-A78在Arm的路线图上已经存在了几年,我们一直期望该设计代表Arm新的Austin系列中最小的一代微体系结构跳跃。作为Arm的Austin核心设计的第三次迭代,A78遵循Arm在Cortex-A76和A77上实现的25%至30%的IPC改进.
随着新的A78现在与更高性能的X1 CPU一起成为同级配对的一部分,我们自然会看到这种特定微体系结构的最大重点在于改进设计的PPA。Arm的目标是合理地提高性能,并在减少功耗和保持或减小内核面积之间取得平衡。
它仍然是Arm v8.2 CPU,与要在DynamIQ群集中配对的Cortex-A55 CPU共享ISA兼容性。我们在这里看到了类似的扩展可能性,在Arm的预计平均目标设计中,每个DSU最多具有4个内核,并且L3高速缓存可以扩展至4MB。
在整个设计中都可以找到核心的微体系结构改进。在前端,最大的变化是分支预测器,它现在能够在每个周期处理最多两个分支。去年,Cortex-A77在后端引入了辅助分支执行单元,但是前端的实际分支单元仍然每个周期只能解决一个分支。
现在,A78能够同时解析每个周期的两个预测,从而极大地增加了core这一部分的吞吐量,并且能够更好地从分支预测错误以及core下游进一步产生的pipleline中恢复过来。Arm声称他们的微体系结构是非常受分支预测驱动的,因此此处的改进大大增加了内核的改进。自然,分支预测器本身在准确性方面也得到了改进,这是每一代人都在不断努力的结果。
Arm专注于前端的不同方面,以提高电源效率。在L1I缓存方面,我们现在看到该公司为供应商提供了32KB的实现选项,使客户可以减少内核的面积,从而对性能产生很小的影响,但是却可以提高效率。对分支预测器的某些结构进行了其他更改,其中公司缩小了一些投资回报率低的模块,这些模块的面积和功耗成本较高,但对性能的影响不大。
Cortex-A78上的Mop缓存与A77上的相同,最多可容纳1500个已解码的宏操作。从前端到中核的带宽与A77相同,具有多达4个宽的指令解码器,并从宏操作高速缓存到重命名阶段最多提取6条指令,从而绕过了解码器。
在middle-core和执行流水线中,大部分工作都在改善设计的面积和功率效率方面进行。现在,我们看到了更多的指令融合案例,这不仅有助于提高内核性能,而且还提高了电源效率,因为在相同的工作量下,它占用的资源更少,能耗也更少。
issue queues 的设计也发生了较大变化。Arm解释说,在任何OOO磁芯中,这些都是非常耗电的功能,尽管没有详细说明更改的任何细节,但设计师在这些结构中进行了一些良好的电源效率改进。
寄存器重命名结构和寄存器文件也已针对效率进行了优化,有时会减小其大小。特别是寄存器文件已经重新设计了它们能够容纳的条目的密度,并在相同的空间中打包了更多数据,从而使设计人员能够在不降低其功能或性能的情况下减小结构的整体尺寸。
在re-order-buffer方面,尽管容量在160个条目处保持不变,但新的A78改善了电源效率和可以打包到缓冲区中的指令密度,从而增加了结构单位面积的指令。
Arm还微调了A78的乱序窗口大小,与A77相比,实际上减小了窗口大小。此处的解释是,较大的窗口尺寸通常在扩大尺寸时不会带来良好的投资回报,而A78的目标是最大程度地提高效率。需要注意的是,此处的OOO窗口不仅指保持不变大小的ROB,Arm此处采用了不同的缓冲区,队列和结构来支持OOO操作,并且很可能在这些块中我们看到了容量减少。
在该图上,我们可以看到Arm在调度阶段略微改变了它的描述,公开了每个周期6个宏运算(Mops)的调度带宽,而去年该公司将A77描述为调度10 µops。苹果之间的比较是,新的A78将调度端的调度带宽增加到每个周期12 µops,从而实现了包含一些新功能的更广泛的执行核心。
在整数执行方面,唯一的大增加就是将一个ALU升级到了更复杂的流水线,该流水线现在还可以处理乘法运算,实质上使内核的整数MUL带宽加倍。
其余的执行单元在这一代中几乎没有看到任何变化,并且与我们在Cortex-A77中已经看到的基本一致。直到明年,我们预计Arm核心的执行单元将发生更大的变化。
在内核和内存子系统的后端,我们实际上发现了一些较大的更改以提高性能。第一个重大变化是添加了新的加载AGU,以补充现有的两个加载/存储AGU。这不会改变每个周期执行的存储操作,但会使内核的负载带宽增加50%。
从LD / ST队列到L1D缓存的接口带宽已从每个周期的16个字节增加到每个周期32个字节,并且从内核到L2的接口在其读取和写入带宽方面也增加了一倍。
与L1I缓存非常相似,A78现在还提供了32KB L1D选项,使供应商可以选择配置较小的内核设置。L2 TLB也从1280页减少到1024页–这实质上提高了结构的能效,同时仍然保留了足够的条目以完全覆盖4MB L3缓存,同时仍将访问延迟降至最低。
Cortex-X1 Micro-architecture: Bigger, Fatter, More Performance
尽管Cortex-A78在性能目标上似乎相对温和,但Cortex-X1与Arm惯常的“平衡”设计理念大相径庭,Arm设计的核芯支持绝对性能,即使这是以能源效率和空间效率为代价的。
从高层次上讲,该设计可以概括为一种超负荷的A78-保持相同的功能原理,但显着增加了内核的结构以最大化性能。
与A78相比,它的内核更宽,从4解码器扩展到5解码器,将重命名带宽增加到高达8 Mops /周期,并且极大地改变了一些管道和缓存,从而使NEON单元,并将L2和L3高速缓存加倍。
在前端(并且对其余内核同样有效),Cortex-X1采用了我们在Cortex-A78上已经涵盖的所有改进,包括新的分支单元。除了A78引入的更改之外,X1还进一步扩展了此模块的某些方面。L0 BTB已从Cortex-A77和A78上的64个条目升级到X1上的96个条目,从而允许采用更多零延迟的分支。分支目标缓冲区仍然具有L0和L2 BTB的两层结构,在先前的公开中将Arm称为nanoBTB和mainBTB。microBTB / L1 BTB存在于A76中,但随后已停产。
宏操作缓存已从1.5K条目增加了一倍,达到3K条目,这使它成为其中公开披露的微体系结构中的一个大结构,甚至比Sunny Cove的2.25K条目还要大,但不及Zen2的4K条目结构-尽管我们这样做必须明确指出Arm谈论宏操作,而Intel和AMD谈论微操作缓存。
L1I的提取带宽从4条指令增加到5条指令,增加了25%,解码器带宽也相应增加;Mop缓存的提取和重命名带宽从6条指令增加到8条指令,增长了33%。每个周期。实际上,只要达到Mop缓存,该内核就可以充当8宽计算机。
在middle-core上,Arm在这里再次谈到了通过Mops或每个周期的指令来增加调度带宽,当将X1与A78进行比较时,将调度带宽从6增加到8,增加了33%。以微秒为单位,将Mops完全分解成较小的微秒时,内核每个周期最多可处理16个调度,与A77能够达到的10微秒/周期相比,增加了60%。
无序窗口大小已从160个条目增加到224个,从而增加了核心提取ILP的能力。这一直是Arm一直不愿升级的一个方面,因为他们提到性能并不会随着结构尺寸的增加而线性地线性扩展,而这是以功耗和面积为代价的。鉴于X1不必针对各种供应商实现,因此它们能够做出这些让步。
实际上,Cortex-X1现在是4x128b SIMD机器,矢量执行宽度几乎与某些台式机核心(例如,英特尔的Sunny Cove或AMD的Zen2)相等。尽管与那些设计不同,Arm的当前ISA不允许单个向量大于128b,这是下一代内核中需要解决的问题。
在内存子系统方面,Cortex-X1也发生了一些重大变化-尽管AGU设置与Cortex-A78上的设置相同。
在L1D和L2缓存方面,Arm创建了新设计,其访问带宽有所不同。此处的高速缓存接口并不宽,但更改的是高速缓存设计本身,现在实现了两倍的存储体。解决的问题是,在对缓存进行多个并发访问时可能发生存储区冲突,这是我们几年前在Cortex-A76内核的内存测试中可能观察到的奇怪的“ zig-zag”模式的结果,并且仍然存在该μarch的一些变体。
X1上的L1I和L1D缓存应配置为64KB。在L2上,由于它是全新设计,Arm还趁机增加了最大缓存大小,现在最大可增加一倍,达到1MB。同样,这实际上与我们在Neoverse-N1上首次看到的1MB L2缓存设计不同,而是一个新的实现。访问延迟比N1的11周期变型好1个周期,无论缓存大小如何,X1上的访问延迟均达到10个周期。
内存子系统还提高了支持更多负载和存储的能力,此处的窗口增加了33%,甚至为内核的MLP能力增加了更多。我们必须注意,这种增加不仅涉及存储和加载缓冲区,还涉及整个系统具有跟踪和服务请求的功能。
DSU中的L3高速缓存加倍并不一定意味着它会是一个较慢的实现,因为延迟可能是相同的,但是取决于合作伙伴的实现,它可能意味着几个额外的延迟周期。这可能指的是使用单独的电源管理来存储L3的选项。到目前为止,我还没有听说过任何厂商使用DSU的此功能,因为像高通这样的大多数实施者一直都在4MB L3上始终保持完全开机。借助8MB DSU,一些供应商可能会考虑更好地管理电源,例如,只要只有很少的核心处于活动状态,它就只能部分通电。
总的来说,这里关于Cortex-X1微体系结构的清楚之处在于,它主要由与Cortex-A78相同的基本构建基组成,但是结构越来越大。特别是在前端和中核中,X1与A78相比真正使事情变得更加复杂,其核心是更广泛的微体系结构。关于此处某些结构的投资回报率低的争论仅不适用于X1,而Arm则选择了可行且合理的最大配置,即使这样做会增加内核的尺寸并增加功耗。
Performance & Power Projections: Best of Both Worlds
在性能方面,将内核的ISO功率目标定为1W,Arm表示,实施A78可使性能提高20%,这是一个健康的升级。N7上的2.6GHz A77大致与联发科技Dimensity 1000( )匹配.
同时,通过ISO性能比较,与N7上的2.3GHz A77相比,A78可以将功耗和能耗减少一半。这种比较可能针对市场上的各种中核实施,这是一个任意比较,但是Arm也展示了一些更好的数据,我们将在稍后进行介绍。
当实际观察具有类似核心配置(基本上是Arm期望最普遍实现的配置)的ISO过程节点比较时,我们看到A78的性能比Cortex-A77大约提高了7%,同时还降低了功耗(4%),减少面积4%。再次重要的是要注意,尽管这些数字听起来有些小,但Arm的投影数字确实展示了具有较低边界配置的A78,例如只有32KB的L1D和L1I缓存。
有趣的是,这里的Arm首次发布了微体系结构的整体性能/功率曲线,将A77与A78进行了比较。我们看到,在较高的工作频率下成本较高,并且达到这些较高的频率(P = f *V²)所需的电压随功率的平方增加。
在A77能够达到的最高性能点上,新A78的耗电量将减少36%。在更中间的性能水平上,这种功耗降低将为30%。最后,在相同功率水平下,A78的性能可以提高7%。
转移到Cortex-X1上,在世代性能方面的改进更加令人印象深刻,并且与A77相比,我们发现在相同频率下的峰值性能提高了 30%。该比较实际上是最大配置的X1与最大配置的A77。值得注意的是,我们从未见过供应商提供3GHz A77,这意味着实际的性能提升实际上甚至比这还要大。
IPC与A77相比提高了30%,涵盖了SPEC2006的整数和浮点套件,这是非常令人印象深刻的。Arm还展示了Stream带宽的改进以及Octane性能的提高,尽管我发现它们并没有太大意义,尽管它们确实可以作为此类工作负载中微体系结构的指标。
ARM在X1的功率和面积效率方面相对模糊,称它们对这些“定制”零件的数字并不像在Cortex-A78这样的公共路线图设计中那样公开.就面积而言,在类似的过程中,我们应该期望X1内核大约是A78大小的1.5倍-包括最大化的L1和L2缓存之间的差异。力量也应该大致反映在这个数字上。
自然,预计Cortex-X1会比Cortex-A78更大。Arm确实警告说,对于移动设计,我们极不可能看到具有两个以上X1内核的实现。这里的公司本质上是在拥抱采用三层核心体系的行业趋势,并且随着A78和X1的推出,它们使客户能够以比频率和过程库更大的灵活性和更多的差异来构建这样的系统。在当今的“中级”和“性能”核心中,我们一直看到差异化。