轻松读懂移动处理器 CPU微架构全解析
正如我们前面提过的,苹果公司在上世纪九零年代就已经和 ARM 合作并且提供了一些微架构设计上的修改方案,因此苹果对 ARM 一点都不陌生甚至有非常丰富的经验。
从 iPad、iPhone 4/iTouch 4、Apple TV 2 开始,苹果开始真正介入 ARM 芯片设计,推出了名为 A4 的自行设计 ARM 处理器。A4 采用了 ARM 授权的 Cortex-A8 IP Core,但是苹果找来了 Intrinsity 公司(已经被苹果收购)和三星公司合作进行了一些调优,可以让 A4 的频率跑得比基于上一代制程的 Cortex-A8 更快。曾经有说法认为 A4 的 L2 cache 大小是 640KiB,但是后来确认修正为 512KiB(这是 ARM Cortex-A8 内核的可选配置方式之一)。
A5 系列依然是采用 ARM IP core,从 Cortex-A8 升级为 Cortex-A9 双核,不过整个 A5 系列出现了三个版本,即 APL0498、APL2498、APL5498(A5X),三个版本的芯片面积各不一样,其中 A5X 的 GPU 是四核 PowerVR 5 并且拥有 4 通道内存总线,定制化设计在这里体现得非常明显。
真正的定制化设计是从 A6 开始,苹果公司给 A6 搭配的 CPU 内核是完全有自己团队开发的 Swift,不仅这样,苹果还提出了一个新的名字:ARMv7s。传统上,ARMv7 是属于 ISA 版本名称,不过 ARMv7s 至今都并未出现在 ARM 官网的公开资料里,因此 ARMv7s 可能并非 ARM 的产物,而是苹果自己在 ARMv7 基础上做的一个架构优化定义,让编译器可以为 Swift 微架构匹配对应的调优,本质上 ISA 还是 ARMv7A。
CPU | iPhone | iPad | iPod Touch | Apple TV | ||
ISA | 内核 | 芯片名称 | ||||
"ARMv7s" | Apple Swift | Apple A6X | 4 | |||
Apple A6 | 5 | |||||
ARMv7A | ARM Cortex-A9 | Apple A5X | 3 | |||
Apple A5 | mini | |||||
4S | 2 | 5 | 3 | |||
ARM Cortex-A8 | Apple A4 | 4 | 1 | 4 | 2 | |
三星 S5PC100 | 3GS | 3(32/64GB) | ||||
ARMv6 | ARM 1176JZ(F)-S | 3(8GB) | ||||
3 | 2 | |||||
1 | 1 |
那么 Swift 和以往的 Cortex-A9 相比有哪些改进呢?苹果公司并未详细说明,传统上这家公司就是这样,千方百计捂着,不过 Anandtech 利用一些自己编写的微型基准测试程序进行了一些探测,以程序员的角度大致估量出了 Swift 的微架构是长得如何了。
在前端部分,Swift 具备三个指令解码器,可以每个周期完成三条指令的解码,而在指令分发器上,具备五个发射端口,浮点单元、整数单元各占两个,还有一个专供 Load/Store 单元使用,具备乱序执行能力、整数流水线深度为 12 级,cache 子系统的时延比 Cortex-A9 低了差不多一半。
“ARMv7s”的设立估计就是让编译器获知编译执行对象是 Swift,这样就能对各种指令顺序进行一些预调度,确保尽可能低的 CPI。
简而言之,A6 系列就是采用了比 A5 系列更先进制程和微架构的产物,其中的 CPU 内核则是苹果首次真正完全执行开发的设计,未来是否会在 GPU 上也有类似的动静将会是值得关注的。