监听请求是否发送到多节点设置中的所有内核?

Are snoop requests sent to all the cores in a multi node setup?

我知道英特尔在 QPI 中使用家庭侦听一致性协议,在 UPI 中可能使用更多 complex/dynamic(特定于工作负载)。但是,如果缓存行开始时处于 I(无效)状态,而其他内核的 none 将其置于其 L1/L2 中,一旦从本地代理请求缓存行,加载请求也会广播到其他本地核心?我相信是的。但是,加载请求是否也会广播到不同节点上的核心?

另一种可能的解释是:如果在 L2 中找不到,那么将要求 L3 内存控制器提供它。 LLC 控制器将知道哪个 DIMM/core 具有请求的物理数据(使用目录)并通过 QPI/UPI 将请求路由到相应的核心。接下来,请求仅由其 L3 控制器在目标节点中的核心之间广播。最后,L2 控制器将被告知节点间通信,因此 L2 不会广播到其他本地核心。这意味着请求永远不会在节点之外广播。

我知道此类信息可能无法公开获得,但欢迎提出任何想法。

But if a cache line is in I (INVALID) state to begin with while none of the other cores have it in their L1/L2, once the cache line is requested from home agent will the load request be also broadcasted to other local cores?

这是一个实现细节,不是 QPI 规范的一部分。在所有以 Nehalem 开头的英特尔处理器上,无论 L3 缓存是包含还是非包含,片上互连上的每个缓存代理都有一个包含目录,用于跟踪它拥有的缓存行(即映射到它的物理地址) ).因此,除非目录指示所有本地核心都需要被监听,否则监听永远不会广播到所有本地核心。如果 L3 缓存未命中,请求将发送到目标缓存行的本地代理。

will the load request be broadcasted to cores on a different node also?

这也是一个实现细节。这取决于相干模式。如果处理器支持内存级一致性目录并且启用了该目录,则无需为每个请求进行广播。一些处理器支持机会广播 (OSB)。如果启用了 OSB,如果带宽可用,归属代理可以推测性地广播探听。这是与目录查找操作并行完成的。如果目录查找结果表明不需要监听其他NUMA节点,则归属代理将请求的数据发回而不等待监听响应,从而减少延迟。