什么是NUMA?
NUMA代表非一致性内存访问(Non-Uniform Memory Access)。NUMA是一种多处理器模型,其中每个处理器都连接到专用的内存。非一致性内存访问(NUMA)机器旨在避免UMA机器的内存访问瓶颈。逻辑共享内存在NUMA机器的处理节点之间物理分配,从而形成分布式共享内存架构。
这些并行计算机的可扩展性非常高,但它们对本地内存中的数据分配非常敏感。访问节点的本地内存段比访问远程内存段快得多。
主要区别在于地址空间的组织方式。在多处理器中,使用全局地址空间,该空间从每个处理器都能一致地看到。多个处理器可以访问所有内存区域。
在多计算机中,地址空间在处理单元(PE)的本地内存中被复制。不允许任何PE直接访问另一个PE的本地内存。
这种内存地址空间的差异也反映在软件层面:分布式内存多计算机基于消息传递范式进行编程,而NUMA机器基于全局地址空间原则进行编程。
在近期的并行计算机(例如Cray T3D)中,这些机器变得越来越难以区分,因为两种编程范式都以库包的形式提供给用户。
另一个使差异更小的因素是,访问远程内存模块的实际方式在这两类MIMD计算机中是相同的。即使在NUMA机器中,远程内存访问也是通过消息实现的,类似于消息传递多计算机。
在分布式内存多计算机中不会出现缓存一致性问题,因为消息传递范式显式地管理多个等效数据结构的副本,这些副本以自主消息的形式存在。
在共享内存范式中,可以访问类似的全局数据结构,如果在本地缓存中保留全局数据结构的本地副本,则可以提高访问效率。
硬件提供的缓存一致性方案没有引入到NUMA机器中。这些系统可以缓存只读代码和数据以及本地数据,但不能缓存共享的可修改信息。这是NUMA和CC-NUMA多处理器之间的显著区别。NUMA机器更接近多计算机,而不是其他共享内存多处理器,而CC-NUMA机器代表真正的共享内存系统。
在NUMA机器(例如多计算机)中,主要设计问题是处理器节点的组织、互连网络以及降低远程内存访问的可能方法。典型的NUMA机器包括Cray T3D和Hector多处理器。