硬件软件权衡



有很多方法可以降低硬件成本。一种方法是将通信辅助和网络更松散地集成到处理节点中,从而增加通信延迟和占用率。

另一种方法是在软件而不是硬件中提供自动复制和一致性。后一种方法在主内存中提供复制和一致性,并且可以在各种粒度下执行。它允许使用现成的商品部件作为节点和互连,最大限度地降低硬件成本。这给程序员带来了实现良好性能的压力。

宽松的内存一致性模型

共享地址空间的内存一致性模型定义了在相同或不同位置的内存操作似乎彼此执行的顺序的约束。实际上,任何支持共享地址空间命名模型的系统层都必须具有内存一致性模型,其中包括程序员接口、用户-系统接口和硬件-软件接口。与该层交互的软件必须了解其自己的内存一致性模型。

系统规格

体系结构的系统规范指定了内存操作的排序和重新排序,以及实际可以从中获得多少性能。

以下是使用程序顺序中的松弛的几个规范模型:

  • 放松写-读程序顺序 - 此类模型允许硬件抑制一级缓存内存中错过的写操作的延迟。当写未命中在写缓冲区中并且对其他处理器不可见时,处理器可以完成在其缓存内存中命中的读取,甚至在其缓存内存中未命中的单个读取。

  • 放松写-读和写-写程序顺序 - 允许写绕过先前对各个位置的未完成写,从而允许在更新主内存之前将多个写合并到写缓冲区中。因此,多个写未命中可以重叠并无序地变得可见。其动机是进一步最大限度地减少写延迟对处理器中断时间的影响,并通过使新的数据值对其他处理器可见来提高处理器之间的通信效率。

  • 放松所有程序顺序 - 默认情况下,除了进程内的​​数据和控制依赖项外,没有保证任何程序顺序。因此,其好处是多个读取请求可以同时处于挂起状态,并且程序顺序可以被后续写入绕过,并且可以自己无序完成,从而允许我们隐藏读取延迟。这种类型的模型对于动态调度处理器特别有用,这些处理器可以继续执行读取未命中到其他内存引用的操作。它们允许许多重新排序,甚至消除编译器优化所做的访问。

编程接口

编程接口假设在同步操作之间不必维护程序顺序。它确保所有同步操作都明确标记或识别为同步操作。运行时库或编译器将这些同步操作转换为系统规范所需的适当顺序保持操作。

然后,系统确保顺序一致的执行,即使它可能以任何方式重新排序同步操作之间的操作,而不会破坏对进程内位置的依赖关系。这允许编译器在同步点之间获得它所需的重新排序的足够灵活性,并且还允许处理器执行其内存模型允许的尽可能多的重新排序。在程序员接口处,一致性模型应至少与硬件接口的一致性模型一样弱,但不必相同。

转换机制

在大多数微处理器中,将标签转换为顺序保持机制相当于在标记为同步的每个操作之前和/或之后插入合适的内存屏障指令。它将节省带有指示要强制执行哪些排序的单个加载/存储的指令,并避免额外的指令。但是,由于操作通常很少,因此这不是大多数微处理器迄今为止采用的方式。

克服容量限制

我们讨论了仅在处理器缓存内存中提供硬件自动复制和一致性的系统。处理器缓存在未首先在本地主内存中复制的情况下,在引用时直接复制远程分配的数据。

这些系统的一个问题是本地复制的范围仅限于硬件缓存。如果从缓存内存中替换了一个块,则当再次需要它时,必须从远程内存中获取它。本节中讨论的系统的主要目的是解决复制容量问题,但仍然在硬件中提供一致性,并以缓存块的细粒度提供一致性以提高效率。

三级缓存

为了解决复制容量问题,一种方法是使用大型但速度较慢的远程访问缓存。当机器的节点本身是小规模多处理器时,这对于功能性是必要的,并且可以简单地为了性能而变得更大。它还将保存已从本地处理器缓存内存中替换的复制远程块。

仅缓存内存架构 (COMA)

在 COMA 机器中,整个主内存中的每个内存块都带有一个与其关联的硬件标签。没有固定节点可以始终保证为内存块分配空间。数据动态迁移到或复制到访问/吸引它们的节点的主内存中。当访问远程块时,它会在吸引内存中复制并加载到缓存中,并由硬件在这两个位置保持一致。数据块可以驻留在任何吸引内存中,并且可以轻松地从一个内存移动到另一个内存。

降低硬件成本

降低成本意味着将某些专用硬件的功能转移到在现有硬件上运行的软件中。对于软件来说,在主内存中管理复制和一致性比在硬件缓存中更容易。低成本方法倾向于在主内存中提供复制和一致性。为了有效地控制一致性,辅助的其他每个功能组件都可以从硬件专门化和集成中受益。

研究工作旨在通过不同的方法降低成本,例如通过在专用硬件中执行访问控制,但将其他活动分配给软件和商品硬件。另一种方法是在软件中执行访问控制,并旨在在没有专用硬件支持的商品节点和网络上分配一致的共享地址空间抽象。

对并行软件的影响

宽松的内存一致性模型需要并行程序将所需的冲突访问标记为同步点。编程语言提供支持将某些变量标记为同步,然后编译器会将其转换为合适的顺序保持指令。为了限制编译器本身对共享内存访问的重新排序,编译器本身可以使用标签。

广告