持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情
ARM从Cortex系列开始性能有了质的飞跃,如Cortex-A8/A15/A53/A72,本节介绍Cortex系列在芯片设计方面的重大改进。 计算机体系结构是一种权衡艺术的体现,“尺有所短,寸有所长”。在处理器领域经历多年的优胜劣汰,市面上流行的处理器内核在技术上日渐趋同。 ARM处理器在Cortex系列之后,加入了很多现代处理器的一些新技术和特性,已经具备了和Intel“一较高下”的能力,如2016年发布的Cortex-A73处理器。
2005年发布的Cortex-A8内核是第一个引入超标量技术的ARM处理器,它在每个时钟周期内可以并行发射两条指令,但依然使用静态调度的流水线和顺序执行方式。Cortex-A8内核采用13级整型指令流水线和10级NEON指令流水线,其分支目标缓冲器(Branch Target Buffer,BTB)使用的条目数增加到512,它同时设置了全局历史缓冲器(Global History Buffer,GHB)和返回栈缓冲器(Return Stack Buffer,RSB)等,这些措施极大地提高了指令分支预测的成功率。另外,它还加入了路预测(way-prediction)部件。
2007年Cortex-A9发布了,引入了乱序执行和猜测执行机制,并扩大了L2高速缓存的容量。
2010年Cortex-A15发布了,其最高主频可以到2.5GHz,它最多可支持8个处理器内核,单个簇最多支持4个处理器内核。它采用超标量流水线技术,具有1TB物理地址空间,支持虚拟化技术等新技术。其指令预取总线宽度为128位,它一次可以预取4~8条指令,比Cortex-A9提高了一倍。其译码部件一次可以译码3条指令。Cortex-A15引入了微操作指令。微操作指令和x86的微操作指令较类似。在x86处理器中,指令译码单元把复杂的CISC指令转换成等长的微操作指令,再进入指令流水线中;在Cortex-A15中,指令译码单元把RISC指令进一步细化为微操作指令,以充分利用指令流水线中的多个并发执行单元。指令译码单元为3路指令译码,在一个时钟周期内可以同时译码3条指令。
2012年64位的Cortex-A53和Cortex-A57发布了,ARM开始进入服务器领域。Cortex-A57是首款支持64位的ARM处理器内核,采用三发射乱序执行流水线(Out-of-Order Execution Pipeline),并且增加数据预取功能。
2015年发布的Cortex-A57的升级版本Cortex-A72如图1.25所示。A72在A57架构的基础上做了大量优化工作,包括新的分支预测单元,改善译码流水线设计等。在指令分发单元上也做了很大优化,由原来A57架构的3发射变成了5发射,即同时发射5条指令,并且还支持并行执行8条微操作指令,从而提高译码器的吞吐量。