1. ARM Cortex-A77架构概述
作为ARM在2019年推出的新一代移动处理器架构,Cortex-A77延续了奥斯汀家族的设计理念,在保持出色能效比的同时,实现了显著的性能提升。这款代号为"Deimos"(希腊神话中的畏惧之神)的架构,是继Cortex-A76之后的又一力作。
从技术角度来看,Cortex-A77并非完全推倒重来的设计,而是在A76基础上进行了一系列关键改进。它继续采用ARMv8.2指令集架构,支持AArch32和AArch64两种执行状态,并保持了对DynamIQ Shared Unit(DSU)的支持,这使得它能够与高效的Cortex-A55小核心灵活搭配,形成big.LITTLE配置。
在缓存设计上,A77延续了A76的配置:64KB的L1指令缓存和64KB的L1数据缓存,以及256KB或512KB的L2缓存。有趣的是,ARM为面向基础设施的Neoverse N1处理器(基于A76架构)配置了1MB的L2缓存,但在移动端的A77上却选择了较小的缓存容量,这反映出ARM对不同应用场景的差异化设计思路。
2. Cortex-A77微架构深度解析
2.1 前端设计革新
A77的前端设计进行了重大改进,最显著的变化是分支预测单元的带宽从32B/周期提升至64B/周期。这种翻倍的带宽设计是为了配合更强大的指令解码/重命名/分配单元,确保前端不会成为性能瓶颈。
分支预测单元的具体改进包括:
- 分支目标缓冲(BTB)容量从6KB增加到8KB
- 放弃了之前的BTB层次结构,改用统一的64入口L1 BTB
- 分支预测错误延迟从11个周期降低到10个周期
另一个关键创新是引入了Macro-Op(MOP)缓存结构。这种1.5K entry的缓存作为L0指令缓存,存储了已解码和融合的指令。当MOP缓存命中时,指令可以直接进入重命名阶段,跳过了解码环节,这有效减少了流水线深度和分支预测错误的惩罚。
2.2 解码单元增强
虽然A77的解码器宽度仍保持4发射,但在MOP缓存命中的情况下,重命名阶段的带宽提升到了6发射。这种不对称设计是为了在保持解码器复杂度可控的同时,最大化前端吞吐量。
解码单元的其他改进包括:
- 重排序缓冲区(ROB)从128条目增加到160条目
- 重命名带宽提升50%
- 支持动态代码
