http://blog.163.com/huang_bp/blog/static/123119837200911305045437/
随着多核的普及,SMP (symmetric multiprocessing)的概念也不断进入到大家的视线,大家通常会有这样的疑问,与SMP对应的是什么呢?他们有什么区别呢?
首先来说,SMP是多核cpu发展后才提出的一个概念,与之对应的是AMP(asymmetric mulitiprocessing)。这连个之间有什么不同呢?google之后发现,通常的答案是这样的:
SMP是对称多处理。
AMP是指非对称多处理,非对称多处理是指各核的结构并非对称。
都是直接翻译过来的,看着还是有点晕。无意中读到了《操作系统概念 Operatiing System Concepts》第七版,其中的描述,让我豁然开朗。下面摘录下来与大家共享:
The multiple-processor systems in use today are of two types. Some systems use asymmetric multiprocessing, in which each processor is assigned a specific task. A master processor controls the system; the other processors either look to the master for instruction or have predefined tasks. The scheme defines a master-slave relationship. The master processor schedules and allocates work to the slave processors.
The most common systems use symmetric multiprocessing (SMP), in which each processor performs all tasks within the operating system. SMP means that all processors are peers; no master-slave relationship exists between processors.
看到这儿问题就比较清楚了,SMP和AMP的主要差异在于各个处理器之间是对等的还是有主从关系的。
目前我们接触的SMP的模型比较多,例如:pc机上运行的SMP的Linux、Solaris等。多核厂家例如:Tilera, Freescale等也都是提供了SMP的Linux给用户使用。
什么情况下会用AMP呢?SunOS Version 4支持AMP,但是我没有使用过。但是按照上述对AMP的定义,现在很多嵌入式厂家和应用中似乎已经在使用类似AMP的操作系统模型;数通中的控制平面运行Linux,而数据平面运行在一个简化的平台上(裸的cpu平台上)直接实现对I/O的控制,控制平面可以实现对数据平面任务的调度和管理;另外就是一个cpu上,让不同的核同时运行Linux,vxWorks等多个操作系统。
从目前来看SMP是一个主流,但是随着云计算时代的到了,似乎AMP也将会逐渐由展露风采的机会,让我们拭目以待。