异构和其他 DSM 系统 |分布式系统
分布式共享内存是允许最终用户进程访问共享数据而无需进程间通信的系统。应用于松散耦合分布式内存系统的共享内存范例称为分布式共享内存 (DSM)。
分布式共享内存 (DSM) 是计算机科学中的一种内存架构,它允许将物理上不同的内存作为一个逻辑共享地址空间进行寻址。这里的共享不是指单个中央内存,而是指地址空间。
换句话说,DSM 系统的目标是使进程间通信对最终用户透明。
需要异构 DSM (HDSM):
许多计算环境具有异构性,这几乎总是不可避免的,因为硬件和软件通常是针对某个应用领域量身定制的。例如,超级计算机和多处理器擅长计算密集型任务,但难以处理用户界面和设备 I/O。另一方面,个人计算机和工作站经常配备优秀的用户界面。
许多应用程序需要复杂的用户界面、特定的 I/O 设备和大量的计算能力。人工智能、CAM、交互式图形和交互式模拟都是此类应用的示例。因此,将不同的机器集成到一个连贯的分布式系统中并在它们之间共享资源是非常可取的。
HDSM 有利于需要同时访问来自多个主机的资源的分布式和并行应用程序。
异构 DSM:
在异构计算环境中,应用程序可以充分利用几种计算架构的优点。在分布式系统中通常需要异构性。有了这样一个异构的 DSM 系统,不同架构的机器之间的内存共享将是可以想象的。构建异构 DSM 的两个主要问题是:
(i) 数据兼容性和转换
(ii) 区块大小选择
数据兼容性和转换:
数据可比性和转换是异构 DSM 系统的初始设计关注点。不同架构的机器可以使用不同的字节顺序和浮点表示。从一台机器发送到另一台机器的数据必须转换为目标机器的格式。数据传输单元(块)必须根据其内容的数据类型进行转换。因此,应用程序员必须参与其中,因为他们熟悉内存布局。在异构 DSM 系统中,可以通过将系统组织为源语言对象的集合或仅允许一种类型的数据块来完成数据转换。
- DSM 作为源语言对象的集合:
根据第一种数据转换技术,DSM 被构造为源语言对象的集合。在这种情况下,数据迁移的单位要么是共享变量,要么是对象。编译器可以直接使用转换过程在不同的机器体系结构之间进行转换。 DSM 系统在访问远程对象或变量之前检查请求节点和拥有该对象的节点是否兼容。如果节点不兼容,它会调用转换例程、转换和迁移共享变量或对象。
这种方式在 Agora Shared Memory 系统中使用,虽然便于数据转换,但性能较低。标量、数组和结构是编程语言的对象。它们中的每一个都需要访问权限,并且迁移需要通信开销。由于传输协议的数据包大小有限,访问大阵列可能会导致错误共享和抖动,而迁移则需要碎片和重组。 - DSM 作为一种数据块:
在第二个数据转换过程中只允许使用一种类型的数据块。 Mermaid DSM 使用这种方法,它使用的页面大小等于块大小。附加信息保存在页表条目中,例如页中保存的数据类型和分配给页的数据量。当存在页面缺陷或不兼容时,该方法将页面更改为适当的格式。
这种方法有一些缺点。因为块只包含一种数据,碎片可能会浪费内存。异构计算机上的编译器还必须在编译器生成的代码中复合结构内的数据类型大小和字段顺序方面保持一致。即使只能访问页面的一小部分,也会转换并发送完整的页面。因为用户必须描述用户指定数据类型的转换过程,以及数据类型到转换例程的映射,所以透明度降低了。最后,如果数据转换过于频繁,浮点数的准确性可能会受到影响。
块大小选择:
块大小的选择是创建异构 DSM 系统的另一个难点。在 DSM 系统中,异构机器可以有不同的虚拟内存页面大小。因此,可以使用以下任何算法来选择正确的块大小:
- 最大页面大小:顾名思义,DSM 块大小是该技术中所有机器中最大的虚拟内存页面大小。多个虚拟内存页面可以容纳在单个 DSM 块中,因为页面大小始终是 2 的幂。如果在页面大小减小的节点上发生页面错误,则会收到多个块,包括所需的页面。错误共享和抖动是由于块大小较大而经常发生的常见问题。
- 最小页面大小:选择 DSM 块大小作为所有计算机上可用的最小虚拟内存页面大小。当页面大小较大的节点发生页面错误时,将发送多个块。这种方法减少了数据争用,但由于更大的通信而引入了额外的块表管理开销。
- 中间页面大小:鉴于上述两个过程,最佳选择是选择介于机器最大和最小虚拟内存页面大小之间的块大小。该方法用于平衡大块和小块带来的问题。
根据数据捕获的管理方式,设计 DSM 系统的方法有以下三种:
1.操作系统管理的DSM
2. MMU硬件管理的DSM
3.由语言运行时系统管理的DSM。
- 由操作系统管理的 DSM:由操作系统管理的数据缓存管理领域包括 Ivy 和 Mirage 等分布式操作系统。每个节点都有自己的内存,页面错误会向操作系统发送一个陷阱,然后操作系统使用交换消息来识别和获取所需的块。操作系统负责数据的放置和迁移。
- DSM 由 MMU 硬件管理:内存缓存由 MMU 硬件和缓存在此技术中管理。为了保持高速缓存的一致性,使用了监听总线协议。例如,DEC Firefly 使用内存硬件。目录可用于跟踪数据块和节点的位置。 MMU 在页面错误的情况下定位并传输请求的页面。
- 由语言运行时系统管理的DSM:DSM 在该系统中被组织为一组编程语言元素,例如共享变量、数据结构和共享对象。编程语言和操作系统在运行时处理这些共享变量或对象的放置和迁移。可以将指示数据利用模式的特征添加到编程语言中。这样的系统可以支持多种一致性协议,并且可以应用于单个数据的粒度。但是这种技术给程序员带来了额外的负担。此类系统的示例是 Munin 和 Midway,它们使用共享变量,而 Orca 和 Linda 使用共享对象。
帝斯曼的优势:
- 当一个块被移动时,使用位置参考。
- 通过引用传递和传递复杂的数据结构更容易使用单个地址空间。
- 因为没有单一总线,所以没有内存访问瓶颈。
- 因为 DSM 程序具有类似的编程接口,所以它们是可移植的。
- 相当大的虚拟内存空间。
同构 DSM 和异构 DSM 之间的区别:
当分布式应用程序组件直接通过 DSM 共享内存时,它们之间的连接比通过 DSM 共享数据时更紧密。因此,很难将 DSM 扩展到异构系统环境。
同构 DSM 的性能略好于异构 DSM。尽管在数据转换方面存在许多挑战,但异构 DSM 可以通过与同构 DSM 相媲美的功能和性能透明度来实现。