【A7处理器架构再探:竟有“三级缓存”】
自从iPad 2之后,这是苹果第一次在三款设备内使用同样的处理器、协处理器,A7、M7横跨了iPhone 5S、iPad Air、iPad mini 2,编号均为S5L8960X,无论CPU核心、GPU核心、内存带宽都是一样一样的。
A7是第一颗64位的移动处理器,架构代号“Cyclone”(苹果基于ARMv8指令集自行开发而来),集成两个CPU核心,每个核心64KB一级指令缓存、64KB一级数据缓存,两个核心共享2MB二级缓存。
从A6 Swift开始,苹果就基于ARM指令集自行设计CPU架构,而且出手就表现不凡,那么这一次,A7 Cyclone又是怎么设计的呢?遗憾的是,苹果从来不公开这方面的细节,A7仍然蒙着神秘的面纱。一度我们认为它不过是A6 Swift(苹果的ARMv7)的进化版而已,毕竟你设计了一个CPU,没必要马上抛弃重新来过。
但我们再次低估了苹果。
首先我们想知道的是,A7 CPU的发射宽度是多少?A6的时候,可以从苹果公开的LLVM文档中轻易获悉三宽度的信息,不过呢,尽管每个时钟周期都可以解码、发射、收回最多三个指令,大多数情况下更像是双发射的,浮点、整数代码混合的时候甚至像1.5发射。事实证明,A6的架构设计很成功,面对高通Krait 300也不落于下风。
A7呢?就目前看来,峰值发射宽度达到了六!也就是相当于A6、Krait的两倍,混合不同指令的时候更是能有三倍。
浮点、整数的共同发射局限也基本不存在了,可以并行发射最多四个整数加法、两个浮点加法。每个时钟周期还可以执行最多两个载入或者存储。
执行端口的数量和分布仍不清楚,但是看上去A7已经是最宽的ARM架构了,甚至比高通Krait 400、ARM Cortex-A15都要宽。
之前的分析曾经提到A7大大缩短的内存延迟、大大提高的内存带宽,但还有更重要的一点:更大的系统级缓存。
这是Chipworks是公布的A7内核模块分布图,注意右侧的SRAM。它的容量有4MB,最初以为是给ISP(图像信号处理器)用的,但结果发现不止如此,某种程度上可以视为“三级缓存”。
这是单个核心情况下的内存延迟、传输尺寸对比图。注意看,1-4MB区间的延迟不高也不低,再考虑到A7的二级缓存还是1MB,这就很明显了,4MB SRAM充当了缓存的角色,虽然赶不上二级缓存,但总比主内存快得多。
这是内存带宽和传输尺寸的对比图,1-4MB区间内同样是个比较高的水平,甚至超过了10GB/s,iPad 4此时已经完全是主内存的事儿了,只有不到5GB/s。
上边说的还是单个核心的情况,而A7是双核心的,所以1-4MB期间的实际内存带宽能有20GB/s,而峰值可以达到80GB/s!迄今为止,还没有其它ARM架构处理器能做到这一点,只有Intel可以。
不过,这毕竟不是“专业”的三级缓存,比如在其间的查询就不是和主内存请求并行的,并不能完全解救内存延迟。
另外,它对GPU访问的影响还在研究之中,不过至少可以释放更多的内存通道给GPU,而且看上去某些图形请求也能在这里缓存,并支持根据运行应用类型的不同进行智能分配。