经过进一步的探寻,发现A9的三级缓存其实还是4MB,大小并没有变。最直接的证据就是芯片面积分析。A8是台积电20nm工艺造的,三级缓存部分面积约4.9平方毫米,而台积电16nm版本的A9三级缓存部分面积约4.5平方毫米。
iPhone 6s A9处理器揭秘 三级缓存新设计
考虑到台积电16nm本来就是在20nm基础上改进而来的,金属间距都没变,对三级缓存SRAM的影响很小,足以证明A9的三级缓存容量没变。
但是,苹果重新设计了A9三级缓存的架构,从包容式(Inclusive)变成了淘汰式(Victim)。
简单地说,包容式缓存会包含一份上级缓存数据的完整拷贝,比如说A8二级缓存1MB、三级缓存4MB,后者其实就有四分之一的空间是前者的复制品,实际有效容量为3MB。
A9的二级缓存增大到3MB,再这么干显然不行了,所以4MB的三级缓存就完全是自己的。这样做的坏处当然是延长了三级缓存的延迟,但占用的芯片面积也小了,就看你怎么选了。
再看看这张之前的缓存/内存延迟测试图,可以明显发现3MB、7MB两个节点的延迟发生了突变,正好对应三级缓存的开始和结束。之前对这块理解有误。
另外可以看出,A9的缓存延迟相比于A8其实大大降低了,所以苹果选择改变设计是很明智的。不知道下一代A10会怎么设计呢?延续A9?还是像A9X那样完全取消三级缓存?