【问题标题】:cache coherence protocol AMD Opteron chips (MOESI?)缓存一致性协议 AMD Opteron 芯片 (MOESI?)
【发布时间】:2011-07-27 13:38:25
【问题描述】:

如果我可以从一个例子开始。

假设我们有一个 4 个插槽的系统,其中每个插槽有 4 个内核,每个插槽有 2GB 内存 ccNUMA(缓存一致的非统一内存访问)类型的内存。

假设每个套接字上运行的 4 个进程都在 P2 的 RAM 中分配了一些共享内存区域,表示为 SHM。这意味着对该区域的任何加载/存储都会导致查找 P2 的目录,对吗?如果是这样,那么......当查找发生时,就延迟而言,这是否等同于访问 RAM?这个目录在物理上驻留在哪里? (见下文)

举个更具体的例子: 假设 P2 在 SHM 上进行了 LOAD,并且数据被带入 P2 的 L3 缓存,并带有标签“(O)wner”。此外,假设 P4 在同一个 SHM 上执行 LOAD。这将导致 P4 查找 P2 的目录,并且由于数据被标记为由 P2 拥有,我的问题是:

P4 是从 P2 的 RAM 中获取 SHM,还是总是从 P2 的 L3 缓存中获取数据?

如果它总是从 L3 缓存中获取数据,那么直接从 P2 的 RAM 中获取数据不是更快吗?既然它已经必须在 P2 的目录中进行查找?我的理解是该目录实际上位于 RAM 之上。

对不起,如果我严重误解了这里发生的事情,但我希望有人能帮助澄清这一点。

另外,是否有任何关于此类目录查找速度的数据?在数据检索方面,是否有关于此类查找的平均延迟的文档? L3 读命中、读未命中、目录查找有多少个周期?等等

【问题讨论】:

  • 当您说 P1 的 RAMP2 的 RAM 和只是 RAM 时,您到底是什么意思? RAM 通常与处理器分离。看看this image of an ASUS P4V800 architecture(你可能需要放大一点)。 CPU 通过北桥与 RAM 连接。我只是指出这张图片来澄清你所说的 RAM 到底是什么意思。
  • 现在内存控制器已集成到 CPU 中。因此,在多套接字示例的上下文中。 P1 的 Ram 是直接连接到 P1 插座的 ram 模块。其中 P2 的 Ram 是通过内存总线直接连接到 P2 插槽的 ram 模块。 Ram 只是两个套接字可用的全部内存量。但是访问 P1 模块中的内存肯定比从 P2 模块中访问它需要更长的时间。这说明清楚了吗?

标签: memory directory cpu cpu-cache


【解决方案1】:

这取决于皓龙处理器是否实现了HT Assist机制。

如果没有,则没有目录。在您的示例中,当 P4 发出负载时,内存请求将到达 P2 内存控制器。 P2 将使用缓存线进行回复,并且还将向其他两个内核发送探测消息。最后,这两个内核将通过 ACK 回复 P4,表示它们没有缓存行的副本。

如果启用了 HT Assist(通常用于 6 核和更高的套接字),则每个 L3 缓存都包含一个窥探过滤器(目录),用于记下哪些内核保持一条线。因此,在您的示例中,P4 不会向其他两个核心发送探测消息,因为它会查找 HT Assist 目录以发现没有其他人拥有该行的副本(这是一种简化,因为行将是独占而不是拥有,并且不需要目录查找)。

【讨论】:

    猜你喜欢
    • 2018-10-03
    • 2015-10-30
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多