Nehalem是Intel针对Core架构作出了改动,将原来的架构扩展为原生4核(甚至6核、8核)设计,并为多核的需要准备了新的总线QPI来满足巨大的带宽需求的产物。Nehalem内核还采用了集成内存控制器的设计,还融合了NetBurst架构的超线程技术以提高性能。主要优势:更大缓存,更大内存带宽。

    4核心Nehalem: Core i7处理器如下:

wKioL1UTwuPRl1S4AAPDiQg99Nw930.jpg

可是SMT什么意思呢?他就是同步多线程,即每个处理器核心同时运行两个线程。其实现细节如下:

wKiom1UTwrbhW9cAAADvNJvYRKQ690.jpg

    指令集部分还没看懂,后续再研究吧。

    接下来是缓存部分。

    Nehalem新增加了一层L3缓存,这是为了多个核心共享数据的需要(未来Nehalem会具有6到8个核心),也因此这个L3的容量很大。出于消除多核心共享数据的压力,前面的缓存不能让太多的缓存请求到达L3,而且L3的延迟(约30~40个时钟周期)和L1的延迟(3~4个时钟周期)相差太大,因此L2是很有必要的。Nehalem简单地在很小的L1和大尺寸的L3之间插入256KB的L2来起到中继的作用。256KB不算大,可以维持约低于10个时钟周期的延迟。Nehalem的L2和L1不是包含也不是非包含的关系。

wKiom1UTxdSzjL57AAGahrHK5lM723.jpg

Nehalem处理器的L3采用了非独占高速缓存设计(或者说“包含式”,L3包含了L1/L2的内容),这种方式在Cache Miss的时候比独占式具有更好的性能,而在缓存命中的时候需要检查不同的核心的缓存一致性。


核外系统:集成内存控制器(IMC)及快速通道互联(QPI)

先说说IMC跟QPI是干什么用的吧。

IMC:每个CPU插槽有多个内存通道,是用来访问本地内存的。很低内存延迟,很大内存带宽。

QPI:用来访问远端处理器。CPU插槽到插槽的连接、CPU插槽到芯片组的连接。除了提供更高的带宽(每链路25.6GB双向带宽)之外,QPI总线还让多处理器系统更有效率:处理器之间可以直接连接。如上图,每个CPU都可以直接和其他三个CPU通信;

    wKiom1UTyE3gQnpZAAHMlNM7uXM811.jpg

    当处理器在L3 Cache未找到所要内容(L3 Cache Miss)的时候,它将会继续通过IMC集成内存控制器往系统内存索取,同时通过QPI总线询问其他处理器(如果是多处理器平台)。