● 全新的缓存设计 L3 Cache被引入
Nehalem处理器计算内核的改动介绍完毕,下面进入非计算内核改动的介绍部分。这一部分的改变可谓大刀阔斧,非常引人瞩目。
首先是缓存的改变。Nehalem处理器最显著的变化是重新设计了缓存结构,引入了L3缓存。其L1缓存的设计与酷睿微架构相同,而L2缓存则采用超低延迟的设计,不过容量大大降低,每个内核仅有256KB,新加入的L3缓存采用共享式设计,首批上市的Core i7配备了8MB L3缓存。
Nehalem Core i7处理器缓存结构图
从图中可以看到,Nehalem处理器的L3缓存完全开放,由4颗核心共享,它几乎可以处理所有的一致性流量问题,同时不需要单独打扰每颗独立核心自己的L1、L2缓存。如果L3缓存没有命中,那么我们需要访问的数据也不在L1或者L2中,此时也不需要侦听所有核心。如果L3缓存命中成功,它还可以作为侦听过滤器。
Nehalem的每个核心有64KB的L1和256KB的L2在L3缓存中保留数据,因此在总共的8MB L3中,有1MB-1.25MB的数据与前两级缓存相同。
为了提高缓存利用效率,Nehalem使用了MESIF缓存一致性协议(全称为MESIF cache coherency protocol),在它的L3缓存中的每一个缓存行里,有4bit用作核心确认,以此表明是哪一个核心在它私有的缓存里具有这个行的数据备份。如果某个核心确认位设置位0,则那颗核心就不具有该行的数据备份;如果两个以上核心的确认位都有效,设置为1,那么该缓存行就被确定为未被修改的,任何一个核心的缓存行都不能够进入更改模式;当4颗核心确认位都是0时,就不需要对其它内核做侦听,而只有1个位是有效时,则只需要侦听那1颗核心。这种仲裁机制让Nehalem的L3缓存避免了每个核心数据一致性错误,带来更多带宽。