1.7 为NUMA架构和更高的可扩展性做好准备
近年来,使用最广的多处理器模型——多称多处理器(symmetric multiprocessor,SMP)模型——已经让位给了非一致性内存访问(non-uniform memory access,NUMA)体系结构。SMP最大的问题之一在于处理器总线成为了未来可扩展性的瓶颈,因为每一个处理器都能平等地访问内存和I/O。
而在NUMA体系结构中,每一个处理器访问距离自己近的内存的速度比访问距离自己远的内存的速度要快。当处理器数目大于4的时候,NUMA能够提供更好的可扩展性。在Windows垂直扩展技术的术语中,NUMA是按照以下方式组织的(这种组织的示意图见图1-17):
● 一台计算机可以有一个或多个组(group)。
● 每个组可以有一个或多个NUMA节点(node)。
● 每个NUMA节点可以包含一个或多个物理处理器或插槽(真正的微处理器)。构成一个NUMA节点的不同微处理器可以访问本地内存和I/O。
● 每个处理器或插槽具有一个或多个物理内核,因为处理器通常都是多核微处理器。
● 每个物理内核可以提供一个或多个逻辑处理器或硬件线程。
图1-18展示了一台具有一个组的计算机,这一个组具有两个NUMA节点。每个NUMA节点具有两个能够访问这个节点的本地内存和I/O的微处理器。如果运行在NUMA节点#0上的处理器#0的物理内核#0上的一个线程需要访问NUMA节点#1的本地内存,那么这个线程必须通过两个NUMA节点之间共享的总线来传输数据,因此,这个过程比访问本地内存的速度要慢。