常见的多处理器架构有哪些?
- SMP(Symmetric Multi-Processor) 对称多处理器结构
- NUMA(Non-Uniform Memory Access) 非统一内存访问架构
- MPP(Massive Parallel Processing) 大规模并行处理结构
他们都是如何工作的?
SMP
所谓对称多处理器结构,就是指服务器中多个CPU对称工作,无主次或从属关系,他们共享总线和内存。
各CPU内部必须内置APIC(Advanced Programmable Interrupt Controllers)高级可编程中断控制器单元。用来相互发送中断协调工作。
NUMA
NUMA的基本特征是具有多个CPU模块,每个CPU模块可以由多个CPU组成,并且具有独立的本地内存、I/O槽口等。
节点之间可以通过互联模块(如称为Crossbar Switch)进行连接和信息交互,因此每个CPU可以访问整个系统的内存。
MMP
MMP基本特征是由多个服务器通过互联网络连接而成,每个节点只访问自己的本地资源(内存、存储等),是一种完全无共享(Share Nothing)结构。
多个服务器通过互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。
他们各自的缺点
SMP
随着CPU数量的增加,内存访问冲突将迅速增加,最终会造成CPU资源的浪费,使CPU性能的有效性大大降低。
并且因为共享内存,内存可拓展性受限。
NUMA
互联机制影响,访问本地内存快,访问远端内存慢,所以不能实现线性增长。
当用于数据仓库环境时,由于大量复杂的数据处理必然导致大量的数据交互,将使CPU的利用率大大降低。
MMP
MPP服务器太复杂了,需要一种复杂的机制来调度和平衡各个节点的负载和并行处理过程。
他们各自的优势
SMP
越简单效率越高,特别是在不需要远程通讯的情况下。
NUMA
能够集成大量CPU,适合处理大量计算。
MMP
MMP系统不共享资源,因此对它而言,可拓展的资源比SMP要多,当需要处理的事务达到一定规模时,MPP的效率要比SMP好。
总结
在计算机发展的某一个阶段,CPU的处理性能比较差,不如内存的性能强,所以诞生了SMP框架,多个CPU协同工作解决了CPU性能问题。
后来CPU的性能发展上来了,所以可以更多的内存来提高性能,但是因为SMP的多个CPU共享内存,内存的可拓展性受到限制(毕竟主板可插内存数量有限),
所以诞生了NUMA,NUMA有效的解决了内存拓展性的问题,但是呢NUMA访问远端内存的效率不如访问本地的,所以性能不能线性增长。
而MMP不仅解决了拓展性问题,而且每个节点只访问自己的资源,从而实现了线性增长。