Core i7处理器已经发布,不过有关新架构Nehalem的话题还在继续,特别是缓存问题:为什么再加入了三级缓存之后二级缓存变得这么小了?
权威硬件网站AnanTech.com主编兼创始人Anand Lal Shimpi同样有这样的疑惑,他甚至直接对Nehalem架构首席设计师Ronak Singhal说:“我认为Nehalem的缓存容量设计是错误的。”迷茫的Ronak Singhal还以为是在说8MB三级缓存。
先来回顾一下从1998年至今Intel处理器每个核心二级缓存容量的发展历史:
总的来说我们可以得到一个线性趋势,从Pentium III的256KB一直走到45nm Core 2 Duo/Quad的3MB,不过顺着直线走是看不到Core i7的,得垂直向下来到接近横轴的地方,因为Core i7每个核心只有256KB缓存,仿佛一夜之间一切又都回到了10年前。
不过如果再看看二级和三级缓存总容量的发展史,就不太一样了:
从1998年到2004年,Intel处理器外部缓存一直很小,但从2005年开始就呈指数式增长了,因为那一年有了双核心,然后是四核心,最终飙升到了12MB,而拥有10MB总缓存的Core i7基本也是沿着这条曲线的。
事实上,正是从单核心向多核心的转变影响了缓存的设计,因为现在要考虑的是如何同时满足多个核心,而不是单独一个。在多核心的必然趋势下,Nehalem架构是按照四核心处理器来设计的,同时也有着很好的弹性(可扩展性),既能向上扩充做成八核心,也能向下精简做成双核心。
很多工程师认为,对现在的工作负载来说,Nehalem的二级缓存确实是太小了,不过增大二级缓存不仅仅是核心面积的问题,还有延迟。Nehalem二级缓存的延迟是10个周期,以后还可能会再增加1-2个,而对于每核心512KB的小容量二级缓存来说,访问周期延长20%基本上是无法接受的。
今后的二级缓存是否会一定扩容?这可没保证,而Intel的关注点可能会是提升三级缓存的速度。现在8MB三级缓存的访问周期是41个,还有一定的改进空间,比如做到30个是可能的。可惜Ronak Singhal在谈及这个问题的时候闪烁其词,没有说具体怎么说,只说了一句“微架构调整”。
8MB三级缓存看起来已经不少,但每个核心平均只能分到2MB,在Ronak Singhal看来还远远不够。预计下一代32nm工艺产品会在这方面进行增强,也正好符合上边的曲线图。
其实呢,不管微架构如何设计,实际性能表现才是最关键的。Nehalem相比于Penryn有着0-60%的全方位性能提升,这是有目共睹的,所以尽管二级缓存变得很小,也没什么可抱怨的了。