10.2 多处理机系统的结构
多处理机系统的设计理念是通过多个处理器(CPU)的协同工作,以提高计算性能和系统的吞吐量。这些系统的结构根据处理器之间的连接方式和内存访问模式可以分为不同的类型,主要包括统一内存访问(UMA)和非统一内存访问(NUMA)多处理机结构。
10.2.1 UMA多处理机系统的结构
统一内存访问(UMA)
在UMA结构中,所有处理器通过一个共享的主存进行通信,对所有处理器来说,访问内存的速度是相同的,这种结构通常用于对称多处理器系统(SMP)。UMA系统可以进一步根据连接方式的不同被细分为以下几种结构:
1. 基于单总线的SMP结构
- 所有处理器通过一个公共总线与集中的存储器连接。
- 优点:简单,易于实现。
- 缺点:可伸缩性有限,总线成为系统性能的瓶颈。
2. 使用多层总线的SMP结构
- 每个处理器都有自己的本地高速缓存和私有存储器,通过本地总线访问。
- 系统使用一个或多个系统总线将不同处理器的本地总线连接起来。
- 减少了总线竞争,提高了系统的可伸缩性。
3. 使用单级交叉开关的系统结构
- 通过交叉开关阵列直接将每个处理器与存储器模块连接。
- 提供了更高的并行度和可伸缩性。
- 缺点:硬件成本较高,适用于中等规模的系统。
4. 使用多级交换网络的系统结构
- 将多个小型交换开关级联,形成多级交换网络。
- 减少了访问冲突,提高了访问速度。
- 缺点:硬件结构昂贵,编程复杂度增加。
UMA系统的共享内存模型简化了程序设计,但随着处理器数量的增加,共享的资源(如总线或内存)很快成为性能瓶颈。
非统一内存访问(NUMA)
NUMA结构旨在解决UMA结构中的可伸缩性问题。在NUMA系统中,每个处理器或处理器组有自己的本地内存,处理器访问本地内存的速度远快于访问远程内存。NUMA系统通过在处理器和内存之间增加一层智能路由,以实现更好的可伸缩性和性能。NUMA允许构建更大规模的多处理器系统,但增加了内存访问的复杂性和编程难度。
多处理机系统的设计选择和优化需要根据具体的应用需求、性能目标和成本预算进行权衡。随着硬件技术的发展和编程模型的改进,多处理机系统将继续在高性能计算领域扮演重要角色。
10.2.2 NUMA多处理机系统结构
1. NUMA结构和特点
NUMA(Non-Uniform Memory Access)多处理机系统中,处理机访问内存的时间依赖于内存单元的位置。NUMA系统通常由多个处理机节点组成,每个节点可以包含一个或多个CPU,各节点通过高速互连网络或公用总线连接。每个节点都有自己的本地存储器、I/O设备,并能访问系统的全局地址空间。NUMA系统中,处理器访问本地内存最快,访问其他节点的远程存储器速度较慢。
2. CC-NUMA 构造方法
CC-NUMA(Cache-Coherent Non-Uniform Memory Access)是NUMA架构的一个变种,每个CPU都配备有自己的高速缓存。这种架构通过目录方法来维护高速缓存之间的一致性。每个节点的目录表记录了高速缓存块的位置和状态,确保了数据的一致性和有效性。
当CPU需要访问内存时,会首先检查本地高速缓存,如果未命中,则通过目录查询确定数据是否已经存在于系统的某个节点的高速缓存中。如果是,相应的数据会被传送到请求节点的高速缓存中;如果不是,数据从远程内存读取到请求节点的高速缓存中。
CC-NUMA的操作例子
考虑一个简化的例子,系统中有256个节点,每个节点拥有独立的CPU和本地存储器。假设CPU 20想要访问节点36的存储器单元,它会将请求通过互连网络发送给节点36。节点36检查目录表,如果发现目标数据已存在于另一个节点(如节点82)的高速缓存中,则请求数据从节点82传送到节点20,并更新目录表。
NUMA系统的优势与挑战
- 优势:NUMA架构支持构建具有大量CPU的大型系统,提供了比传统SMP更好的扩展性和灵活性。
- 挑战:远程内存访问的延迟比本地内存访问高,这可能影响系统性能。为了最大化性能,应用程序可能需要针对NUMA架构进行优化,以减少远程内存访问并充分利用本地内存。
NUMA架构提供了一种在现代多核、多处理机系统中扩展性和性能之间平衡的解决方案。通过合理设计和优化,NUMA系统可以有效地支持高性能计算和大规模数据处理应用。