半导体行业观察 · 2020年05月27日

Arm全新CPU深度解读

来源:内容由半导体行业观察(ID:icbank)编译自「anandtech」,谢谢。

对于Arm来说,2019年是伟大的一年。在移动方面,他们延续过往的成功,因为该公司继续看到其Cortex内核在这个领域的强悍表现,特别是我们现在已经看到了在旗舰芯片组(例如Snapdragon 865)中使用的新型Cortex-A77。然而,过去一年该公司最大的新闻不是移动领域,而是服务器领域。今天,人们可以使用基于Arm Neoverse-N1打造 CPU,例如亚马逊令人印象深刻的Graviton2芯片,预计未来会有更多供应商,例如Ampere即将发布其服务器产品。

尽管正如我们所说的,Arm服务器领域确实正在腾飞,旨在与AMD和Intel竞争,但Arm尚未达到移动市场的顶峰——至少现在还没有。在过去的几年中,Arm的移动Cortex内核一直生活在Apple的定制CPU微体系结构的阴影下,因为Apple似乎总能够打造出能击败Cortex的设计。尽管存在技术方面的差异,但当中也有Arm方面的商业考虑。

在今天举办的Arm 2020 TechDay,该公司不仅发布了一个新的CPU微体系结构,还发布期待已久的Cortex-A78。但是Arm还将推出其新的Cortex-X1 CPU作为该公司的新旗舰性能设计。此举不仅令人惊讶,而且标志着Arm的业务模型和设计方法学上极为重要的差异,最终解决了该公司多年的产品线折衷方案。

新的Cortex-A78:效率加倍

全新的Cortex-A78并不完全让人感到意外。

两年前,Arm 首次公开披露了Hercules代号,当时他们提出了公司到2020年路线图。两年后,Cortex-A78诞生了。代表Arm新的Austin系列CPU微体系结构的第三次迭代,该迭代是从Cortex-A76从头开始的。

全新的Cortex-A78几乎延续了Arm的传统设计理念,即严格按照性能,功率和面积(PPA)之间的平衡进行制造。PPA是更广泛的行业标准,而Arm正是这个领域的佼佼者,他们能够以低功耗和小面积提供极具竞争力的性能。而这些设计目标对Arm来说是生死攸关的,因为该公司拥有大量难以置信的客户,他们针对非常不同的产品用例——有些追求性能,而另一些则以成本为重中之重。

总而言之(我们将在后面详细介绍),Cortex-A78承诺在相同的功率范围内将持续性能提高20%。这个数字是对产品性能的预测,结合了微体系结构的改进以及即将推出的5nm节点的改进。IP应该代表已经很重要的A76和A77的直接继承者。

新型Cortex-X1:打破设计约束链

Arm的现有业务模型旨在尝试创建可满足最广泛客户需求的CPU IP。这就产生了一个问题,即您不能过度关注PPA三角形的任何一个区域而又不妥协其他两个区域。我曾提到Arm的CPU内核多年来一直生活在Apple的CPU内核的阴影下,可以肯定的是,Apple的内核在技术上是卓越的,但造成Arm劣势的一个重要因素是Arm的业务方面无法证明建立一个更大的微体系结构。

随着公司获得更多的客户,并增加用于设计高性能内核的研发资源(服务器是主要驱动力),似乎Arm终于设法在设计能力上达到了一个交叉点。该公司现在每年能够构建和交付多个单一微体系结构。从某种意义上讲,我们从去年开始推出Neoverse-N1 CPU可上以看到。今年的开始,Neoverse-N1 CPU在其Cortex-A76移动同级产品上已经有了一些更显着的微体系结构更改。

快速看一下新的Cortex-X1,我们发现Arm的CPU微体系结构的希腊万神殿家族树中的X1的地位更高。这个代号为Hera的设计至少与其Hercules兄弟姐妹的命名类似,表示它们之间的紧密设计关系。X1的基本设计与A78非常相似。实际上,两个CPU都是由同一奥斯汀CPU设计团队共同创造的,但最大的不同是X1打破了其功耗和面积限制,专注于获得最佳性能,而很少考虑PPA三角形的其他两个指标。

Cortex-X1是在Arm的一个新程序的框架内设计的,该公司将该程序称为“ Cortex-X自定义程序”。该程序是该公司先前几年前发布的“ 基于Arm Cortex技术构建 ”程序所做的改进。提醒一下,该许可证允许客户在新的微体系结构的设计阶段早期进行协作,并要求对配置进行自定义,例如更大的重新排序缓冲区(ROB),不同调优的预取器或用于更好地集成到其中的接口自定义SoC设计。高通公司是该许可证的主要受益者,充分利用了核心的品牌重塑选项。

新的Cortex-X程序是BoACT许可证的改进,这次是围绕对Arm产品路线图中列出的“基础”设计进行更重要的微体系结构更改。在这里,Arm宣称它允许客户更多地定制和区分他们的产品。但真正的要点是,该公司现在有资源来最终完成一些主要客户多年来要求的工作。

要注意的一件事是,尽管Arm将程序命名为“ Cortex-X自定义程序”,但不要将其与具有体系结构许可的供应商的实际自定义微体系结构相混淆。该习惯是指Arm对其路线图CPU内核的定制-该设计仍由Arm自己自行构建,并提供IP。目前,所有被许可方之间的X1 IP也将是相同的,但是该公司不排除将来迭代中特定于供应商的更改,如果有兴趣的话。

这次,Arm还在核心上维护了营销和品牌,这意味着我们不会看到不同的CPU名称。总而言之,围绕设计程序的整个营销披露可能有点令人困惑。事实上,X1只是Arm的另一种单独的CPU IP产品,针对的是其主要合作伙伴,他们可能愿意支付更多费用。以获得更高的性能。

归根结底,我们得到的是两种不同的微体系结构。他们都是由同一团队设计,并且都共享相同的基本设计模块,但A78致力于最大化PPA指标,并着重于效率,尽管新的Cortex-X1能够最大限度地提高性能,即使这意味着要牺牲更高的功耗或更大的裸片面积。

对于Arm而言,这是一个令人难以置信的设计理念变更,因为该公司不再受苹果,AMD或英特尔等大型公司的超高端性能环的束缚,同时仍然保留了其在bread & butter设计方面的优势更多以成本为导向的供应商,他们提供了数亿台设备。

让我们首先剖析新CPU的微体系结构更改,从Cortex-A78开始……

Cortex-A78微架构:专注于PPA

新的Cortex-A78在Arm的路线图上已经存在了几年,我们一直期望该设计代表Arm新的Austin系列中最小的一代微体系结构跳跃。作为Arm奥斯汀核心设计的第三次迭代,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能够同时解析每个周期的两个预测,从而极大地增加了核心这一部分的吞吐量,并且能够更好地从分支预测错误以及核心下游进一步产生的 pipeline bubbles中恢复过来。Arm声称他们的微体系结构是非常受分支预测驱动的,因此此处的改进大大增加了内核的世代改进。自然,分支预测器本身在准确性方面也得到了改进,这是每一代人都在不断努力的结果。

Arm专注于前端的不同方面,以提高电源效率。在L1缓存方面,我们现在看到该公司为供应商提供了32KB的实现选项,使客户可以减少内核的面积,从而对性能产生很小的影响,但是却可以提高效率。对分支预测器的某些结构也进行了其他更改,其中公司缩小了一些投资回报率低的模块,这些模块的面积和功耗成本较高,但对性能的影响不大。

Cortex-A78上的Mop缓存与A77上的相同,最多可容纳1500个已解码的宏操作。从前端到中核的带宽与A77相同,具有多达4个宽的指令解码器,并从宏操作高速缓存到重命名阶段最多提取6条指令,从而绕过了解码器。

在中核和执行流水线中,大部分工作都在改善设计的面积和功率效率方面进行。现在,我们看到了更多的指令融合案例,这不仅有助于提高内核性能,而且还提高了电源效率,因为在相同的工作量下,它占用的资源更少,能耗也更少。

发行队列( issue queues)中的设计也发生了较大变化。Arm解释说,在任何OOO核心中,这些都是非常耗电的功能,尽管没有详细说明更改的任何细节,但设计师在这些结构中进行了一些良好的电源效率改进。

寄存器重命名结构和寄存器文件也已针对效率进行了优化,有时会减小其大小。特别是寄存器文件已经重新设计了它们能够容纳的条目的密度,并在相同的空间中打包了更多数据,从而使设计人员能够在不降低其功能或性能的情况下减小结构的整体尺寸。

在重排序缓冲区方面,尽管容量在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的接口在其读取和写入带宽方面也增加了一倍。

Arm似乎已经拥有一些业内最先进的预取器,在这里他们声称A78在存储区域覆盖率,准确性和及时性方面都进一步改进了设计。这里的及时性是指它们迅速锁定新兴的模式,并尽可能快地将数据引入较低级的缓存中。您也不会看到预取器启动得太早或太晚,例如不必要地预取了一段时间不会使用的数据。

与L1I缓存非常相似,A78现在还提供了32KB L1D选项,使供应商可以选择配置较小的内核设置。L2 TLB也从1280页减少到1024页–这实质上提高了结构的能效,同时仍然保留了足够的条目以完全覆盖4MB L3缓存,同时仍将访问延迟降至最低。

总体而言,如果要在真空中展示内核,Cortex-A78的微体系结构披露可能听起来令人惊讶,因为我们看到很多人提到减小结构尺寸和整体折衷以最大程度地提高能源效率。考虑到Cortex-X1专注于性能,这自然是有道理的。

Cortex-X1微体系结构:更大,更轻巧,性能更高

尽管Cortex-A78在性能目标上似乎相对温和,但今天最大的公告是功能更强大的Cortex-X1。如前所述,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条目结构。

L1I的提取带宽已从4条指令增加到5条指令,增加了25%,解码器带宽也相应增加;Mop缓存的提取和重命名带宽从6条指令增加到8条指令,增加了33%每个周期。实际上,只要达到Mop缓存,该内核就可以充当8宽计算机。

在中核上,Arm在这里再次谈到了通过Mops或每个周期的指令来增加调度带宽(dispatch bandwidth),当将X1与A78进行比较时,调度带宽从6增加到8,增加了33%。以µops表示,当将Mops完全分解成较小的µops时,内核每个周期最多可处理16个调度,与A77能够达到的10µops /周期相比,增加了60%。

无序窗口大小已从160个条目增加到224个,从而增加了核心提取ILP的能力。这一直是Arm一直不愿升级的一个方面,因为他们提到性能并不会随着结构尺寸的增加而线性地线性扩展,而这是以功耗和面积为代价的。鉴于X1不必针对各种供应商实现,因此它们能够做出这些让步。

在执行方面,与A78相比,我们看不到整数流水线的任何变化,但是由于流水线加倍,浮点和NEON流水线与过去的微体系结构的分歧更大。实际上,从字面意义上讲,可以加倍,因为A77和A78的两个现有管道本质上又被复制粘贴了,并且两对单元的功能相同。这是相当大的改进,并增加了执行资源。

实际上,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能力增加了更多。我们必须注意,这种增加不仅涉及存储和加载缓冲区,还涉及整个系统具有跟踪和服务请求的功能。

最后,与A78相比,L2 TLB的大小也增加了一倍(与A77相比增加了66%),在4K页上可提供8MB的内存,非常适合设想的8MB L3缓存目标X1的实现。

DSU中的L3高速缓存加倍并不一定意味着它会是一个较慢的实现,因为延迟可能是相同的,但是取决于合作伙伴的实现,它可能意味着几个额外的延迟周期。这可能指的是使用单独的电源管理来存储L3的选项。到目前为止,我还没有听说过任何厂商使用DSU的此功能,因为像高通这样的大多数实施者一直都在4MB L3上始终保持完全开机。借助8MB DSU,一些供应商可能会考虑更好地管理电源,例如,只要只有很少的核心处于活动状态,它就只能部分通电。

总的来说,这里关于Cortex-X1微体系结构的清楚之处在于,它主要由与Cortex-A78相同的基本构建基组成,但是结构越来越大。特别是在前端和中核中,X1与A78相比真正使事情变得更加复杂,其核心是更广泛的微体系结构。关于此处某些结构的投资回报率低的争论仅不适用于X1,而Arm则选择了可行且合理的最大配置,即使这样做会增加内核的尺寸并增加功耗。

我认为,公司在这里设定的唯一真正的设计限制是X1的频率能力。它仍然是一个非常短的管道设计,具有10个周期的分支错误预测损失和13个阶段的深频率设计,并且在A78和X1之间保持不变,后者具有更大的结构和更宽的设计,不会妨碍A78核心的峰值频率。

推荐阅读
关注数
11057
内容数
1772
最有深度的半导体新媒体,实讯、专业、原创、深度,50万半导体精英关注。专注观察全球半导体最新资讯、技术前沿、发展趋势。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息