并行编程基础之CPU架构理解 SMP/MPP/NUMA/SMT/CMP

 

集群架构

l  SMP/MPP/NUMA都是cpu级别的架构,区别是在于访问内存,I/O和外部中断等资源方式的不同。SMP是对称访问和共享访问所有资源,MPP是独立访问各自资源,完全没有共享资源,如果是综合则是NUMA(部分本地内存/部分远端内存)。这就引起一致性等处理方式不同。

è  一致性

SMP模式:数据一致性是由硬件专门管理的,这样做比较容易实现,但成本较高。使用了MESI协议处理多个处理器之间的Cache一致性。该协议也被称为IllinoisprotocolMESI协议在SMP处理器系统中得到了广泛的应用。

MPP模式:节点之间的一致性是由软件来管理,因此,它的速度相对较慢,但成本却低得多;

NUMA模式:在共享内存时维持高速缓存一致性的开销非常大(譬如ccNUMA),所以NUMA无法保证系统性能线性增加,譬如8cpu带来3倍性能提升。Intel提出了另外一种MESI协议的变种,即MESIF协议,由IntelQPI(QuickPath Interconnect)技术引入。主要解决ccNUMA处理器结构的Cache共享一致性问题,这种结构通常使用目录表,而不使用总线监听处理Cache的共享一致性。值得注意的是,MESIF协议解决主要的问题是ccNUMA架构中SMP子系统与SMP子系统之间Cache一致性。而在SMP处理器系统中,依然需要使用传统的MESI协议。Nehelem EX处理器也可以使用MOESI协议进一步优化SMP系统使用的Cache一致性协议,由此可见CMP的某种实现方式就是SMP

è  节点通信

NUMASMP:节点互联机制是在同一物理服务器内部,NUMA访问本地内存和SMP访问互斥内存是必须等待。所以性能无法线性提升。

MPP:节点互联是在服务器外部实现的,每个节点只访问本地内存和资源,所以信息交互和节点本身执行可以同时处理,性能是线性的。

l  SMP (Symmetric Multi-Processing),对称多处理结构的简称。是指在一个计算机上汇集了一组处理器(CPU),CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。它是相对非对称多处理技术而言的、应用十分广泛的并行技术。在这种架构中,虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。所有的处理器都可以平等地访问内存、I/O和外部中断。但是一般来讲,SMP结构的机器可扩展性较差,所有处理器都共享系统总线,因此当处理器的数目增多时,系统总线的竞争冲突迅速加大,系统总线成为了性能瓶颈,常规的一般是8个到16个,不过这对于多数的用户来说已经够用了。构建一套SMP系统的必要条件是:支持SMP的硬件包括主板和CPU;支持SMP的系统平台,再就是支持SMP的应用软件。为了能够使得SMP系统发挥高效的性能,操作系统必须支持SMP系统。

l  MPPMPP (Massively ParallelProcessing)大规模并行处理系统,这样的系统是由许多松耦合的处理单元组成的,要注意的是这里指的是处理单元而不是处理器。每个单元内的CPU都有自己私有的资源,如总线,内存,硬盘等。在每个单元内都有操作系统和管理数据库的实例复本。这种结构最大的特点在于不共享资源。节点之间的数据交换需要软件实施。它的优点是可扩展性非常好;缺点是彼此数据交换困难,需要控制软件的大量工作来实现通讯以及任务的分配、调度,对于一般的企业应用而言过于复杂,效率不高。广泛用于数据仓库,并行计算等。

l  NUMA:Non Uniform Memory Access Achitecture)非一致内存访问架构。NUMA架构则在某种意义上是综合了SMPMPP的特点:逻辑上整个系统也是分为多个节点,每个节点可以访问本地内存资源,也可以访问远程内存资源,但访问本地内存资源远远快于远程内存资源。它的优点是兼顾了SMPMPP的特点, 易于管理,可扩充性好;缺点是访问远程内存资源的所需时间非常的大。Nehalem之后的cpu架构采用的是NUMANUMA-Q广泛的适用于具有大量I/O计算、商业智能、客户关系管理、企业资源规划的环境。

                             

 

l  SMP/CMPSMP是一种ArchitectureCMPchipmulti-processor)是SMP的一种实现方式,SMP中的多CPU的连接方式有很多种,可以通过片内总线,系统总线、网络,而CMP只是其中的一种方式,它仍然是包含于SMP构架的。There're two architectures to exploit on-chip multithreading, oneSMT, the other  CMP.Furthermore, CMPconsists of two implemntations: SMP(SymmetricMP) and asymmetric MP. In conclusion, when referring to on-chip MT, SMP belongs to CMP.

l  CMP:其实就是多核cpu架构Chip multiprocessors)。是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。CMP比较, SMT处理器结构的灵活性比较突出。但是,当半导体工艺进入0.18微米以后,线延时已经超过了门延迟,要求微处理器的设计通过划分许多规模更小、局部性更好的基本单元结构来进行。相比之下,由于CMP结构已经被划分成多个处理器核来设计,每个核都比较简单,有利于优化设计,因此更有发展前途。多核处理器可以在处理器内部共享缓存,提高缓存利用率,同时简化多处理器系统设计的复杂度。根据多个微处理器在哪级存储层次上互连,CMP的结构可分为三类:共享一级CacheCMP,共享二级Cache CMP以及共享主存的CMPCMP系统必须解决因此而引发的Cache一致性问题。在传统多处理器系统结构中广泛采用的Cache一致性模型有:顺序一致性模型(Sequential Consistency Model)、弱一致性模型(Weak Consistency Model)、释放一致性模型(Release Consistency Model)等。与之相关的Cache一致性机制包括侦听一致性机制(Snooping Coherence Mechanism)、目录机制(Directory Mechanism)、面向编译的一致性机制(Compiler-Directed CoherenceMechanism)等。Intel sandy bridge 就是CMP而且ring bus based 共享L3 cache

CMP的核间通讯带宽比SMP大得多,从而不会成为性能瓶颈 CMP 的核间延迟比SMP小得多。CMP可以提供新的轻量级的一致性和同步原语。

 

你可能感兴趣的:(平台软件性能优化)