如果我可以从一个例子开始。
假设我们有一个 4 个插槽的系统,其中每个插槽有 4 个内核,每个插槽有 2GB RAM 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 读命中、读未命中、目录查找有多少个周期?等等