ARM发布Cortex-A78和Cortex-X1架构:优化能效比,提供超大核选项
ARM于昨晚正式发布了最新一代的高性能Cortex-A系列核心,也就是我们能够预测到的Cortex-A78核心,另外他们还发布了一款面向高性能的大核——Cortex-X1,它是Cortex家族历史上性能最强的一款内核。
Cortex-A78是基于成功的Cortex-A76及Cortex-A77架构,是ARM的第三代Austin内核,通过继续优化而诞生的新架构。它仍然将PPA(Power, Performance and Area)作为自己关注的焦点,在内核IPC上遵循每代提高25%~30%的水平发展。它仍然是一枚采用Arm v8.2指令集的CPU,与常作为小核搭配使用的Cortex-A55之间是指令集兼容的。
在Cortex-A77上面,ARM为它的后端引入了一个新的分支执行器,但前端跟不上需求。于是在Cortex-A78上,ARM扩大了前端的分支预测器,使得它能够在一个时钟周期内可以处理两个预测,提高了核心的吞吐量。同时,为了节约内核面积,ARM提供了32KB的L1指令缓存选项,原本固定为64KB。
在内核的中间部分上,ARM着重于优化原有的设计,大部分工作都是在提高面积和能耗效率。当然,在指令重排与发射方面,ARM增加了指令调度器的宽度,相比Cortex-A77提高了2个μops,达12μops。
后端执行单元部分并没有太大的改变,只是将其中的一个ALU升级为能够处理乘法的更复杂的单元。缓存子系统方面则有较大改变,新增了有一个Load单元,这是对现有的两个Load/Store单元的补充,可以给核心增加50%的Load带宽。通向L1数据缓存的带宽从每周期16B扩展到了每周期32B,核心通往L2缓存的带宽也增加了一倍。
另外,与L1指令缓存的可选32KB大小对应,这里的L1数据缓存大小也可被配置为32KB,以节约内核面积。L2的TLB也从1280页减少到了1024页,足以覆盖4MB的L3缓存,同时提高了L2的能耗效率。
Cortex-A78在整体设计上更为注重效率,但性能提升也是很明显的。
在官方提供的数据中,相比起前代Cortex-A77,单线程性能提升7%,能耗降低4%,面积需求降低5%。而在实际应用中,结合更新的工艺,Cortex-A78能够在相同功耗下提高20%的性能,或是在同性能下节约最多50%的电,是有较大的进步。
为什么Cortex-A78要给出一些节约面积的选项呢?因为他们对大核有了更好的阐述,也就是这次发布的另一款核心——Cortex-X1,它是一款为高性能而生的大核。
Cortex-X1在结构设计上与Cortex-A78如出一辙,但几乎在每个地方都进行了扩展。
图片来自于WikiChip
前端解码部分从4端口增加到了5端口,宏指令缓存直接加倍,达到3000条,甚至超过Intel的Sunny Cove(2250条),但少于Zen 2(4000条)。乱序重排缓冲区(ROB)的大小也是扩充到224条,与Zen 2和Skylake持平。
执行部分中变化最大的是FP单元,也就是ARM特有的NEON浮点引擎,Cortex-X1上面直接将FP单元的数量倍增,达到4x128B的规模,宽度上基本等同于目前的桌面x86处理器,不过ARM目前的指令集并不允许单个长度大于128B的向量,在吞吐上肯定是不如桌面端处理器的。
缓存部分也发生了较大的变化,除了同步Cortex-A78增加的一个Load AGU外,ARM允许Cortex-X1的二级缓存加倍,增加到1MB之多,同时L2 TLB较Cortex-A78翻倍,可覆盖8MB的L3缓存。
Cortex-X1很像Cortex-A78,两者共享了不少设计改进,但Cortex-X1明显是冲着高性能去的,它很宽,有着更高的计算吞吐量。官方数据显示它相比Cortex-A77在峰值性能上有30%的提升,是相当巨大的。
它为厂商提供了一个可定制的大核选项,以后我们在基于ARM的高性能移动处理器上可能会看到使用Cortex-X1作为超大核,加上多个Cortex-A78大核和Cortex-A55小核的配置。
ARM推出Cortex-X1的目的也很明显,是为了更好地在高性能领域中建立自己的地盘,在移动端也可向苹果自研的A系列处理器发起冲击,后者的大核性能真的很恐怖。
预计可以在今年晚些时候看到采用Cortex-A78和Cortex-X1的处理器。