Memory 缓存一致性协议AMD Opteron芯片(MOESI?)

Memory 缓存一致性协议AMD Opteron芯片(MOESI?),memory,directory,cpu,cpu-cache,Memory,Directory,Cpu,Cpu Cache,请允许我从一个例子开始 假设我们有一个4个插槽的系统,每个插槽有4个内核,每个插槽有2GB RAM ccNUMA(缓存一致非均匀内存访问)类型的内存 假设在每个套接字上运行的4个进程都在P2的RAM中分配了一些共享内存区域,表示为SHM。这意味着对该区域的任何加载/存储都将导致对P2目录的查找,对吗?如果是,那么。。。当这种查找发生时,在延迟方面是否等同于访问RAM?这个目录实际驻留在哪里?(见下文) 举一个更具体的例子: 假设P2在SHM上加载数据,并将数据带到P2的L3缓存中,标记为“(O)

请允许我从一个例子开始

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

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

举一个更具体的例子: 假设P2在SHM上加载数据,并将数据带到P2的L3缓存中,标记为“(O)owner”。此外,假设P4在同一个SHM上加载。这将导致P4查找P2的目录,由于数据标记为P2所有,我的问题是:

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

如果它总是从三级缓存获取数据,那么直接从P2的RAM获取数据不是更快吗?因为它已经在P2的目录中进行了查找?我的理解是,目录实际上位于RAM的顶部

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


此外,是否有任何数据表明这种目录查找的速度有多快?在数据检索方面,是否有关于此类查找的平均延迟的文档?三级读取命中、未命中、目录查找的周期数是多少?等等。

这取决于Opteron处理器是否实现HT辅助机制

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


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

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