由于Nehalem家族的微架构都一样,因此笔者不再介绍微架构,关于这部分的内容,可以看这里:
我们从Nehalem-EX的Uncore架构说起,它是和其他Nehalem处理器区别开的地方。Uncore首先包括了所有核心共享的L3缓存部分:
Nehalem-EX处理器晶圆图,中央大片区域都属于L3缓存
Intel的服务器处理器都具有巨大容量的缓存,但是Nehalem-EX的更大一些,8个核心共享一共24MB L3缓存,并且它们分成了8片(Slice),每片有2048组以及24路集合关联,缓存线为64个字节。每个Slice分成48个子阵列,如下图这样:每一个访问只有整体阵列的3.125%加电,从而降低了耗电量。数据阵列使用0.3816um2的单元并使用DECTED(Inline double-error correction and triple-error-detection,双位纠错三位检测)ECC进行保护,具有可变的访问延迟;Tag索引阵列则使用了0.54um2的单元并使用SECDED(Inline single-error-correction and double-error detection,单位纠错双位检测)ECC进行保护,并具有固定的访问延迟。数据阵列具有行冗余和列冗余,Tag阵列则只有列冗余,这些冗余用于在一些阵列单元有缺陷或者损坏的时候担当备份,并通过一个EEPROM控制L3缓存冗余熔断器进行设置,有些类似于硬盘通过P-list和G-list保存扇区重定位到冗余扇区的列表一样。
对于这些冗余技术,Intel特别称为Core-and-cache Recovery核心及缓存恢复,出现小缺陷或者小问题的缓存和处理器核心电路都可以通过冗余线路继续工作,当大量缺陷存在或者大量问题出现的时候,对应的核心和缓存可以设置为关闭模式以降低耗电。彻底避免这些线路用电是不太可能的,在关闭模式下,SRAM的供电将从0.90V降低到0.36V,提供83%的漏电功耗节约,作为比较,睡眠电压是0.75V,节约为35%。大量缺陷在出厂之前会被检测到,由于宇宙射线或诸如此类的因素导致的损坏则可能在工作时被检测到,最后8核心的Nehalem-EX可能会变成一个6核心甚至4核心的Nehalem。如下图所示:
每个核心都有对应的一块L3缓存,可以并行进行存取,效率比起通常的Nehalem要高不少
Nehalem-EX的每个核心可以分到3MB,比Nehalem-EP/Westmere-EP的2MB要更大一些。这8个3MB的Slice(块),每一个L3块在每一个时钟周期可以同时进行4个存取操作,这样Nehalem-EX在同一个时钟周期就可以同时进行32个L3缓存操作。并且,L3缓存对应的物理地址通过哈希计算分布到多个L3 Slice上,从而将存取操作分散,避免了热区效应(hot-spot)。在通常的处理器中,共享的LLC缓存只会有一个端口,同时只能进行数个操作。