富士通A64FX是一款具有里程碑意义的处理器核心。对于Arm生态,它引入了SVE(可扩展向量扩展)指令集。时至今日,SVE依旧奠定了Arm向量执行策略的基础,后续SME等新扩展也采用了与它一致的向量长度无关设计思路。
对富士通自身而言,A64FX标志着企业从SPARC架构转向64位Arm指令集(AArch64)。采用AArch64,让富士通得以利用更完善、生态支持更强的软件环境。由于Arm软件的数量远多于SPARC软件,这次转型也帮助富士通开拓出原有核心业务之外的市场机会。

但A64FX并不适合通用计算负载。它的主频仅2 GHz,乱序执行引擎规模较小,配套的分支预测器也相对基础。这套配置非常适合高性能计算(HPC)代码,这类代码主要需要为核心的两个512bit向量流水线提供数据;但面对AMD、Arm、Intel的顶级处理器核心,A64FX竞争力不足。上述厂商的最新核心拥有大规模乱序引擎,主频远高于2 GHz,并且搭载复杂的分支预测器。还有多项其他设计取舍,进一步拉大了A64FX的差距。

富士通全新的Monaka核心意在解决上述诸多短板,打造更适配通用负载的处理器。与此同时,富士通依旧兼顾高性能计算场景,保证芯片整体的高向量吞吐量。

在分支预测方面,Monaka搭载三级TAGE预测器。TAGE算法采用多张不同历史长度索引的查表,是当前业界顶尖的分支预测算法。而 “三级” 的具体含义较难解读。富士通可能实现了带有三级覆盖优先级的TAGE预测器:使用更长历史索引的表命中时,可以覆盖上一级由短历史索引表给出的预测结果。可以这样理解这套TAGE结构:第一级基础模块快速给出初步预测;第二级使用十余位历史比特索引多张查表;最后一级则使用数倍于第二级的历史比特查表。
作为对比,A64FX采用2048项的分支权重表,实现类感知机预测算法。感知机预测器可以在历史存储开销增长较小的前提下支持很长的分支历史,但该方案现已逐渐淡出主流。作为参考,AMD早在十余年前的Piledriver架构就使用过感知机预测器,Zen 1之后便不再将感知机作为主要分支预测手段。
Monaka其余分支预测器细节目前尚未公开。A64FX在常规场景下无法连续处理连续跳转分支,返回栈仅有8项,Monaka预计在这些方面做了改进。

Monaka的分支预测器驱动解耦取指流水线,配置64 KB指令缓存。指令完成取指、译码后分发至后端。富士通没有披露Monaka的核心发射宽度,但后端资源包含6个ALU(算术逻辑单元),由此推断核心至少为6发射,否则无法持续为6个ALU供给指令。A64FX为4发射,配备4个ALU。

Monaka后端调度器布局与A64FX类似,沿用富士通内部命名。RSE0、RSE1继续同时为ALU流水线与向量流水线分发指令。从富士通框图来看,谓词操作(PRX)现在由独立端口执行。谓词操作包含WHILE * 这类指令,用于更新谓词寄存器,后续SVE谓词化指令依赖该寄存器。快速处理谓词可以避免谓词指令等待,保障向量流水线持续供数。

6个ALU端口的具体分配仍有部分信息未公开。富士通框图显示RSE0、RSE1驱动4条ALU流水线(EXA、EXB、EXC、EXD)。笔者推测剩余2条ALU流水线和A64FX一样,由RSA调度。

富士通演示文档所用缩写说明
Monaka拥有两条256位向量/浮点流水线;而A64FX是两条512位向量流水线。向量位宽收窄初看并不直观,但考虑到绝大多数Arm软件并未针对宽向量单元做专门优化,该设计具备合理性。充分发挥宽向量单元的能力本身存在难度。Geekbench 6的评测结果显示,仅有少量负载会调用AVX512,并且并非全部AVX512指令都会跑满完整向量位宽。面向范围更广的通用负载时,富士通判断很多应用无法利用超大向量吞吐量。改用256位向量单元,既可以降低功耗、缩减芯片面积,也能简化数据通路设计。

向量单元功耗很高,Monaka采用多项技术降低功耗。富士通在浮点寄存器堆前端加入寄存器缓存,工作方式类似GPU中常见的寄存器复用缓存。近期读取过的浮点/向量寄存器可以保存在该缓存,后续读取同一寄存器的指令可以直接从缓存获取。GPU的寄存器缓存主要用来规避寄存器体冲突带来的流水线停顿;Monaka的寄存器缓存则纯粹用于降低功耗。

虽然每一条SVE谓词指令都需要读取谓词寄存器,确认哪些向量通道需要激活,但大量代码在很长运行周期内全部通道都处于开启状态(谓词寄存器全部置1)。举个例子,遍历数组的循环每一轮迭代都会更新谓词寄存器,只有最后一轮处理数组末尾时,才会关闭部分通道。Monaka会记录谓词寄存器 “全1” 这类高频模式,当执行谓词指令时,可跳过读取谓词寄存器堆,相当于增加了一套基于数值的寄存器缓存,专门处理最常见的谓词取值。

另一项功耗优化针对无法跑满256位向量位宽的代码。大量Arm通用软件使用NEON指令集,该指令集过去十年在Arm核心上广泛支持。NEON最大仅128位向量,很多场景甚至无法占满128位。针对这类情况,Monaka的重命名单元可以记住向量寄存器高半部分为零;后续访问该寄存器的指令,可省去对高位无效零的读写操作,以此节约功耗。

性能层面,Monaka继承了A64FX的聚集加载(gather)优化。聚集加载从不同内存地址读取各个向量通道的数据,而非从连续地址读取完整向量寄存器。如果两个向量通道读取落在同一个64 B对齐块内,Monaka可以一次返回两组通道数据,不需要发起两次独立的L1数据缓存访问,富士通将该能力称为 “组合聚集加载”。A64FX的组合聚集加载更加灵活,支持128 B块;Monaka受限于缓存行大小,仅支持64 B块。补充说明:A64FX的缓存行大小为256字节。

另一项继承自A64FX的特性:非对齐向量加载可以跑满完整带宽。绝大多数CPU执行非对齐加载时底层会拆分为两次访问,一旦跨缓存行,软件侧观测带宽就会下降;A64FX与Monaka则不存在该问题。
Monaka的芯粒采用轮辐式架构,和AMD服务器处理器有相似之处。5纳米I/O芯粒负责把计算芯粒连接到I/O与内存。I/O芯粒两侧排布2纳米工艺的计算芯粒,每颗计算芯粒包含36个Monaka核心。计算芯粒堆叠在5纳米芯粒之上,后者承载Monaka的末级缓存。富士通表示SRAM缩尺已经放缓,将SRAM放到成熟工艺节点有助于控制成本。

这套堆叠方案类似AMD Zen 5的VCache设计。AMD与富士通都把发热更高的计算芯粒放在上层,更贴近散热。模拟供电逻辑同样难以随先进工艺获益,因此富士通也将LDO低压差稳压器放置在5纳米SRAM芯粒上。

把供电单元放到底层芯粒,可以让LDO部署在最需要供电的模块附近。例如在FMA乘加单元旁放置LDO,为这个高功耗模块提供干净稳定的供电。

物理设计层面,富士通希望降低电压实现省电,但SRAM往往是电压下限的约束条件,电压过低会导致芯片工作异常。为此富士通开发了定制SRAM宏单元,支持更低工作电压。

来自ICS 2024过往幻灯片,该低电压SRAM采用辅助电路,公开细节有限,推测会在访问周期内抬升供电电压。

ICS 2024会议幻灯片
A64FX共有52个核心,分为4个CMG集群;每个集群包含12颗计算核心加1颗辅助核心。每个集群挂载8 GB HBM高带宽内存,软件层面呈现为一个NUMA非统一内存访问节点。这套架构对经过深度优化的HPC软件十分友好,但没有NUMA感知的通用代码很难跨集群扩展性能。
Monaka与当代主流服务器处理器保持一致,提供多套NUMA模式,在内存访问均匀性与访问延迟之间做取舍。延迟优先模式:一颗144核Monaka芯片划分为8个NUMA节点。每颗计算芯粒拆分为两个NUMA节点,各分配18个核心,独占底层芯粒上一半的L3缓存。该方案利用部分核心物理距离部分L3缓存更近的特点降低延迟。

均衡模式:沿着计算芯粒边界划分为4个NUMA节点,每颗计算芯粒绑定I/O芯粒上距离最近的内存控制器,逻辑类似AMD EPYC的NPS4模式。单节点模式:整片芯片对外呈现为单个NUMA节点,应用程序可以直接在全部核心上扩展,无需关心NUMA特性。

Monaka使用DDR5内存,与其他服务器平台保持一致。A64FX的HBM虽然可以低功耗提供极高带宽,但总内存容量仅有32 GB,每个NUMA节点仅能分配到受限的8 GB。采用DDR5后,Monaka可以配置更大内存容量。DDR5内存条可插拔,支持后期内存升级,配置灵活。
走出HPC市场,意味着硬件需要部署在物理安全条件参差不齐的环境。Monaka配置一整套云厂商所需要的安全特性。硬件信任根(等效TPM可信平台模块)帮助软件确认底层固件没有被篡改;内存数据加密可抵御冷启动攻击。

软件栈上层,Monaka需要应对不可信代码、缓冲区溢出、Spectre幽灵类漏洞攻击。为此Monaka引入新版Arm指令集安全能力:指针认证可以在跳转前校验指针签名,缓解返回导向编程攻击;CLRBHB等指令用于减轻Spectre幽灵漏洞风险。

Monaka支持特性,来自富士通公开规格文档。
Monaka具备大型机级别的RAS可靠性特性,很大程度继承自富士通长期研发超算芯片的积累,超算场景对可靠性要求极高。除缓存ECC纠错等常规能力外,富士通提到硬件指令重试机制,可修复瞬时故障。公开细节不多,该硬件重试功能在富士通SPARC时代核心就已存在,在早期Hot Chips大会资料中有所描述。

当核心检测到错误,会从提交阶段冲刷流水线,保证出错指令的脏数据不会污染正确的架构状态。随后核心恢复已知正确的架构上下文,逻辑类似分支预测错误回滚,之后单步重新执行出错指令。单步即流水线同一时刻只允许一条指令流动。如果重执行没有报错,核心恢复全速乱序执行,多指令并行流动。
Monaka是富士通一次颇具雄心的尝试。相比A64FX,这款新核心无疑更适配通用计算场景。凭借更高核心数量与主频,芯片整体层面依旧保留很强的HPC处理能力。但Monaka大量关键细节尚未对外披露,富士通暂未公布L3缓存容量,CSE、寄存器堆项数等核心微架构参数也处于未知状态。

从富士通公开资料来看,Monaka每时钟周期性能表现尚可。最大短板大概率依旧是主频,2.9 GHz远低于AMD、Intel乃至Arm服务器核心的水平,会限制单核性能。富士通的竞争优势,更偏向在高集成度设计下提供高向量吞吐量。Monaka核心面积1.47 mm²,对比Arm Neoverse N2(根据L2缓存大小为11.3 mm²),面积只略大,但向量吞吐量达到N2的两倍。期待后续披露更多Monaka细节,也期待富士通在通用计算领域取得市场突破。
本文转自媒体报道或网络平台,系作者个人立场或观点。我方转载仅为分享,不代表我方赞成或认同。若来源标注错误或侵犯了您的合法权益,请及时联系客服,我们作为中立的平台服务者将及时更正、删除或依法处理。
