基于CC—NUMA的多处理器系统研究
扫描二维码
随时随地手机看文章
对于多处理器系统,比较流行的有3种模式,对称多处理(Symmetric Multiprocessing,SMP)模式、非均匀存储访问(Non Uniform Memory Access,NUMA)模式、大规模并行处理(Massively Parallel Processing,MPP)模式。SMP模式即将2个或2个以上的同样的处理器连接到一个共享的主存上。在SMP系统中,所有的处理器可以同时访问同一个物理存储器,即运行同一个操作系统,因此也被称为均匀性存储访问系统。这种结构比较简单,但是由于其是共享存储器,容易在访存时产生系统瓶颈,可扩展性也比较差。MPP是分布式存储器模式,可扩展性好,但是需要并行编程和并行编译,在软件系统构建上比较复杂,使用不便。NUMA架构将若干个单元通过专门的互联设备联结在一起组成分布式和共享内存空间。每一个处理器可以访问自己的存储器,也可以访问其他处理器或者共享的存储器,所有访存有远近、时延长短之分,称为非均匀存储访问。在某个处理器访问空间上比较远的存储器时,会有很大的时延,为了缓解这个问题,通过高速缓存一致性使得处理器访问存储器的几率大大降低,在某种程度上提高了系统效率,这种架构称为CC—NUMA即一致性缓存非均匀存储访问模式。这种架构继承了SMP和MPP系统的一些优点,在处理器个数,内存大小、I/O连接能力和带宽上有很大的伸缩性,又保持了SMP系统单一操作系统、简单的应用程序编程模式和易于管理的优点。
1 CC—NUMA基本架构
CC—NUMA架构的系统最出名的莫过于SGI公司的ORIGIN系列,SGI公司很好的发展和扩展了CC—NUMA技术,其基本架构被广泛应用。图1是其ORIGIN2000的基本原理图,每一个节点拥有2个处理器,2个二级缓存,主存,用于互联的HUB芯片,1个I/O接口,1个互联网络的路由器接口,它的每个节点可以看作是一个SMP,通过互联网络可扩展至128个处理器的多处理器系统。Origin 2000的所有结点通过CrayLink高性能互联网络相互联接,路由器是构成CrayLink的基本单位,它包含6个端口,内部采用交叉开关实现端口间的全互联。每个路由器的2个端口用于联接结点,其余4个端口实现路由器间的互联,形成互联网络拓扑结构。该CrayLink的半分带宽与结点个数成线性递增关系,对任意2个结点,至少能提供两条路径,保证了结点间的高带宽、低延迟联接和互联网络的稳定性和容错能力。
2 两种比较新的架构
SGI公司的Origin系列多处理器系统是一种比较通用的架构,但是还是比较复杂。后来,分别由Corepaq公司的Alpha EV7框架的处理器Alpha 21364和AMD公司的Opteron处理器组成的CC—NUMA架构的多处理器系统简单很多,这两种处理器都是针对多处理系统领域推出的,其有着特有的专为多处理器系统应用设计的处理器结构。
2.1 Alpha 21364处理器
2000年,Compaq公司推出了Alpha处理器的第四代产品Alpha21364,这是一款RISC处理器,在当时非常先进,在业内首次在处理器内集成了内存控制器,特别是它还有先进的多处理互联功能,在建造多处理器系统上很方便。
21364的简化图如图2所示。21364是64位处理器,拥有1.5 MB的L2 CACHE,支持缓存一致性协议。内部集成了2个RDRAM内存控制器,在RDRAM中对于页命中点对点的延迟是30 ns,加载应用的延迟是75 ns,对应高达12 GB/s的带宽。最大的不同就是有一个路由器,有4个连接通道可与附近处理器相连,并与本地端口和I/O端口相连,每个连接通道提供6.2 GB/s的带宽。
21364的处理器问互联总线提供了CC—NUMA多处理器架构间的无粘合连接,如图3所示。处理器间的二维拓扑互联架构满足了最远的处理器间的最小系统延迟设计。这种架构可扩展至128个处理器互联。
2.2 Opteron处理器
AMD公司在2001年推出了其第8代处理器K8架构的Opteron处理器。Opteron处理器基于X86系统架构并对其做了根本性改善,属于64位处理器,并兼容32位X86处理器架构。Opteron处理器集成了内存控制器,降低了访存延迟,加大了访存带宽。Hyper—Transport(超传输)互连控制器也被集成到Opteron处理器内部,在处理器和I/O子系统之间提供了拓展性极强的数据连接带宽。在Opteron处理器内部的数据通道为双向16位的通讯,可以达到1 600 MT/s(每秒百万次传送)的工作效率,可提供双向为6.4 GB/s的带宽。AMD Opteron处理器之间以及处理器同I/O子系统之间如何通过HyperTransport(超传输)技术进行互连。处理器之间的互连采用的是一致性协议(CoherentProtocol),相反I/O连接遵循的是非一致性协议(Non—coherent Protoco1)。集成了3个HyperTransport(超传输)互连控制器和1个内存控制器的处理器,需要尽可能高效地把指令和数据信息发送到相关接口。为实现这一需求,系统采用了交叉通道架构。
图4中展现了北桥架构细节,包括交叉通道(XBar)、内存管理器之间的路由指令和数据信息、3个HyperTransport(超传输)技术的连接和处理器自己的系统请求接口(System Request Interface,SRI)。
现在对Opteron处理器组成的CC—NUMA系统的内存访问进行分析。将内存访问分为本地访问和远程访问。如图5所示为hops图,处理器对本地存储器的访问,由于其无需经过节点,访问路程为O—hop(跳跃),依次的处理器分别需要经过1个和2个其他的处理器才能访问远程存储器,路程分别为1一 hop和2-hops。Opteron处理器支持在无其他任何芯片组连接的情况下支持无粘合地将至多8个处理器连接成CC—NUMA多处理器系统。如图6 所示为8个处理器拓扑,它有将8个处理器连接成多处理器系统的两种方案。在图6中,提供两条HyperTransport I/0通道,32 GB/s的对分带宽,经过计算其平均访问路程为1.64 hops。图6提供了4条HyperTransport I/O通道,25.6 GB/s的对分带宽,1.71hops的平均访问路程。这两种方案各有所长,前者I/O带宽虽然小于后者,但提供了更高的处理器间带宽和更小的平均访问路程,在访问延迟上也相当小,所以在总体性能上优于后者。
3 新型架构
考虑到以上两种架构所用的处理器具有特殊性,都有独有的处理器间互联总线,不能推广到大部分处理器。而Origin2000的架构过于复杂,也就失去了其普遍性。故在此,基于前几种架构,提出一种更加简单、通用的CC—NUMA框架,如图7所示为一个四处理器的系统原理图。
图7中,整个系统完全是一个模块化的架构,各个模块之间都是独立的,包括CPU、内存控制器、存储器路由器、存储器以及I/0系统。每个CPU有自己的CACHE、内存控制器和可共享的本地存储器,CPU可以直接访问本地存储器,也可以通过存储器路由选择存储器,然后访问远程存储器。CACHE的一致性也通过存储器路由实现。这样,在CPU L2 CACHE比较大的情况下,CPU可以较少地访问存储器,或者可以很快地访问本地存储器,减少在访问远程存储器时的延迟。各处理器之间的互联可以通过现有的各种总线完成,如PCI一E,RAPIDI/O等,这样既利用了现有技术,又很方便,具体实现还在研究中。
存储器路由的选择可以由高速FPGA实现,不同的FPGA可以扩展到不同数量、类型的处理器,所以整个系统的扩展性大大提高。
系统带宽取决于内存控制器带宽,其平均的访问路程为1.5 hops,明显低于前面几种架构的延迟。在总体性能上主要取决于FPGA路由器的性能。当前的高速FPGA在频率吞吐量上可以达到500 MHz以上的速度,在单引脚上可以达到6.5 Gb/s的传输,完全可以满足存储器路由的带宽要求,并且其高频率也可以有效控制整个系统的访存延迟。
整个系统可以快速地配置起来,并且可以扩展。所用的处理器可以是X86架构的处理器、PowerPc、MIPS处理器等,甚至一些嵌入式处理器也可以使用,真正达到了通用性。
4 结 语
多处理器系统的建构是一个很复杂的工程,要想充分发挥硬件架构的性能优势还需要操作系统及应用程序的配合,不同的操作系统及应用程序运行在同样的处理构架上其性能表现也会大相径庭。