分布式共享内存在缓存和寄存器存在的情况下如何工作?

How does Distributed Shared Memory work in the presence of cache and registers?

我最近读了几篇描述 DSM 的论文。

其中一些试图提供顺序一致性。我了解该算法的工作原理以及它如何利用页面错误处理程序来完成它。但是有一点让我疑惑的是,即使内存本身是顺序一致性的,但是缓存和寄存器每台机器一个可能会破坏顺序一致性模型。

如何与 cache/registers 一起使用?

即使是支持松散一致性的 DSM(如 TreadMarks 论文),它在 Lock() / Unlock 操作中进行所有同步,它仍然存在相同的问题:

它如何处理缓存和注册以防止每台机器上的私有副本?

DSM 将扩展为 DCSM (+ 最好使用智能 beyond-NUMA 控制)

分布式一致性共享内存 (DCSM) 架构,作为这种合适的内存架构的一种形式,其中物理上分离的内存区域 仍然可以作为一个连续的、逻辑上共享的地址来寻址 space.

为了让这个概念按照上面的要求工作,单词“Coherent”是关键(以及 NUMA/L1、L2、{L3 | local-memory} 管理控制所有花丝 CPU 内在函数,从寄存器到 CPU- 本地缓存和内存)。

行业可用的稳健 DCSM 实施必须解决非常一致的问题,以便变得可行,因此这种底层 DCSM 系统的用户视图只是一个大/胖单体的视图-(抽象) -主机,尽管有成千上万的 CPU-s 和所有物理分布的计算资源(跨越 CPU-s,DRAM 内存块,各种 IO 设备,包括存储、所有网络接口等),整个 DCSM 集成基础架构仍然保持一致的高性能 "super"-host.

因此,预计或不需要直接的用户代码交互,并且可以启动任何遗留代码,现在有一些 8000+ CPU-s + XYZ [TB] RAM 作为一个连贯的 space 用于纯内存计算 (其中 XYZ 最近可以扩展到数百甚至数千以上的范围,限制更多按个人预算而不是原则上)。

人们可以很容易地感觉到,对这样的计算设备有什么期望,在引擎盖下有这样一个拥有如此巨大计算资源的野兽,用户代码不需要也不会打扰实际资源的方式/位置物理利用,因为 O/S-level 抽象让用户代码假设,它就在那里并连贯地运行 "across" 这样一个分布式计算资源 DCSM 基础设施。

这不是很好吗?