一、QPI总线技术

Nehalem使用的QPI总线是基于数据包传输packet-based)、高带宽、低延迟的点到点互连技术point to point interconnect),速度达到6.4GT/s每秒可以传输6.4G次数据)。每一条连接link)是20bit位宽的接口,使用高速的差分信号differential signaling)和专用的时钟通道dedicated clock lane),这些时钟通道具有失效备援failover)。QPI数据包是80bit的长度,发送需要用4个周期。尽管数据包是80bit,但只有64bit是用于数据,其它的数据位则是用于流量控制、CRC和其它一些目的。这样,每条连接就一次传输16bit2Byte)的数据,其余的位宽则是用于CRC。由于QPI总线可以双向传输,那么一条QPI总线连接理论最大值就可以达到25.6GB/s2×2B×6.4GT/s)的数据传送。单向则是12.8GB/s。

对于不同市场的Nehalem,可以具有不同的QPI总线条数。比如桌面市场的CPU,具有1条或者半条QPI总线半条可能是用10bit位宽或单向);DP服务器双CPU插座)的CPU,每个具有2条QPI总线;而MP服务器4个或8个CPU插座)的,则每个具有4条或更多的QPI总线。

二、IMC

Nehalem的IMCintegrated memory controller,整合内存控制器),可以支持3通道的DDR3内存,运行在1.33GT/sDDR3-1333),这样总共的峰值带宽就可以达到32GB/s3×64bit×1.33GT/s÷8)。不过还并不支持FB-DIMM,要Nehalem EXBeckton)才有可能会支持FB-DIMMFully Buffered-DIMM,全缓冲内存模组)。每通道的内存都能够独立操作,控制器需要乱序执行来降低掩盖)延迟。由于有了Core 2近4倍的内存带宽,Nehalem的每个核心支持最大10个未解决的数据缓存命中失败outstanding data cache miss)和总共16个命中失败,而Core 2在运行中则只支持最大8个数据缓存的和总共14个的命中失败。

IMC能够很显著的降低内存延迟尤其是对于采用FB-DIMM方案的系统)。下面的Nehalem与Harpertown,我不清楚是什么频率情况下的对比来自于IDF上的表格,可能Nehalem是3.2GHz)。Nehalem的本地内存延迟大约是Harpertown的60%。Harpertown系统使用的是1.6GT/s的前端总线,所有内存都在一个位置,大约是略低于100ns纳秒)的延迟,这样Nehalem的内存延迟就是约60ns。对于2个CPU插座的Nehalem来说,使用的是NUMA结构Non Uniform Memory Access Achitecture,非均匀内存存取架构),远方内存的延迟则要高一些,因为这时对内存的请求和回应需要通过QPI总线,其延迟大约是Harpertown的95%。所以,即使是最糟糕的情况,延迟还是得到了降低。一个有意思的问题是,当使用4个CPU插座的Nehalem时,延迟是否将会被增大?因为这种系统很有可能会使用FB-DIMM,而这意味着将遭受延迟损失,不过远方内存的延迟还是将只会比本地内存慢个约30ns。

对于其它使用IMC和核心互连的多CPU系统例如EV7、K8、K10),内存延迟也是非均匀的NUMA)。为了优化性能,操作系统就必须知道延迟差异,并调度那些在同一个CPU上共享数据的进程。Windows Vista是Microsoft的第一个为NUMA进行优化的操作系统,而Linux等则已经很早就可以支持NUMA了。

Nehalem的远方/本地延迟比是约1.5倍。衡量K8的NUMA系数也就是远方延迟除以本地延迟)在2 CPU系统时也差不多是1.5。而在4 CPU系统时,INTEL将具有优势,因为所有的内存要么都是本地当QPI总线上没有hop时),或者所有内存都是远方QPI总线上有一个hop时)。因为使用对角线连接,每个CPU都有QPI总线连接,那么远方内存最多就一跳1个hop)。而现在的4插座的K8或K10系统,有的内存在HT总线上多达有2个hop。总之,具有更大的NUMA系数,就更需要软件考虑其所使用的内存的位置。作为参考,其中最早一个具备IMC和核心互连的EV7,在其64 CPU的系统中,NUMA系数为1.86-5.211-8个hop的情况)。


相关内容