我已阅读英特尔®QuickPath互连简介 。 该文档未提及处理器使用QPI来访问内存。 所以我认为处理器不通过QPI访问内存。
我的理解是否正确?
我已阅读英特尔®QuickPath互连简介 。 该文档未提及处理器使用QPI来访问内存。 所以我认为处理器不通过QPI访问内存。
我的理解是否正确?
是的,QPI是用来访问多插槽系统的所有远程内存,并且其大部分的设计和性能的目的是支持以合理的方式这样的访问(即,延迟和带宽比本地访问没有太多糟糕)。
基本上,大多数x86多插槽系统都是轻微的 1 NUMA:每个DRAM组都连接到特定插槽的内存控制器:这个内存是该插槽的本地内存 ,而剩余的内存(连接到其他一些插槽)是远程记忆 。 对远程内存的所有访问都通过QPI链接进行,并且在许多系统2上完全占用了所有内存访问的一半以上。
因此,QPI旨在实现低延迟和高带宽,使这种访问仍然表现良好。 此外,除了纯内存访问之外 ,QPI是通过其发生套接字之间的高速缓存一致性的链接,例如,通知另一个套接字无效,已经转换到共享状态的行等。
1也就是说,NUMA因子相当低,延迟和带宽通常小于2。
2例如,在启用NUMA交错模式和4个插槽的情况下,75%的访问权限是远程的。
英特尔QuickPath互连(QPI) 未连接到DRAM DIMM,因此不用于访问连接到CPU集成内存控制器(iMC)的内存。
在你链接的论文中,这张图片存在
这显示了处理器的连接,QPI信号与存储器接口分开描绘。
图片前面的文本确认QPI未用于访问内存
处理器通常还具有一个或多个集成存储器控制器。 基于处理器支持的可扩展性级别,它可能包括集成的交叉开关路由器和多个英特尔®QuickPath互连端口。
此外,如果查看典型数据表,您会发现用于访问DIMM的CPU引脚不是QPI使用的引脚 。
然而,QPI用于访问非核心,即包含存储器控制器的处理器的一部分。
由维基百科上的QPI文章提供
QPI是一种快速内部通用总线,除了可以访问CPU的非核心外,还可以访问其他CPU的非核心。 由于此链接,可以使用QPI(包括远程CPU的iMC)访问非核心中可用的每个资源。
QPI定义具有多个消息类的协议,其中两个用于使用另一个CPU iMC读取内存。
该流使用类似于通常的网络堆栈的堆栈。
因此,远程内存的路径包括QPI段,但本地内存的路径不包括。
更新
对于Xeon E7 v3-18C CPU(专为多插槽系统设计),Home代理不直接访问DIMMS,而是使用Intel SMI2链接访问Intel C102 / C104可扩展内存缓冲区 ,后者又访问DIMMS。
SMI2链路比DDR3更快,内存控制器实现可靠性或与DIMMS交错。
最初,CPU使用FSB访问北桥 ,这个有内存控制器,并通过DMI链接到南桥 (英特尔术语中的ICH-IO控制器中枢 )。
后来FSB被QPI取代。
然后将内存控制器移入CPU(使用自己的总线访问内存和QPI与CPU通信)。
后来,北桥(英特尔术语中的IOH-IO Hub )被集成到CPU中,用于访问PCH (现在取代南桥), PCIe用于访问快速设备(如外部图形控制器)。
最近PCH已经集成到CPU中,现在只暴露PCIe,DIMM引脚,SATAexpress和任何其他常见的内部总线。
根据经验,处理器使用的总线是: