1、多核技术与并发多线程技术的区别介绍2009-04-16 20:29:32 作者:admin 来源: 浏览次数:195 网友评论 0 条 很多人在多核技术与并发多线程技术上会把概念弄混淆,我这里给大家简单介绍一下这两个技术的不同。多核技术可以看成是一种 cpu的集成技术,在一个 CPU处理模块上,可以集成 2个或者是多个 CPU,但是,他们还是单独的物理 cpu。并发多线程技术则需要 OS的支持,是在 OS级别上,可以实现一个物理 cpu的多线程并发处理,提高 oltp环境模式下的 cpu利用率。 先说多核技术,如在 IBM的 power5中,就有如下几种不同的 cpu集成模式:如Dual-Co
2、re Module(双核),表示一个 cpu模块中其实有 2个物理的 cpu(也叫 core),他们共享 L2与 L3 cache。这种 cpu模块一般用在 520/550上,所以,象采用这种模式的 550最多可以有 4颗 CPU(2 个 cpu模块)。而 Quad Core Module QCM,这个不知道怎么翻译了,这种技术下,在一个 cpu模块中,有 4个物理 cpu,相当与 2个 Dual-Core Module集成在一个 cpu模块中,从 55Q以后的机型,如 55Q、55A 都支持这样的 cpu模块,所以,如果采用这样的模块,55A 就可以达到 8颗物理 cpu。最后说 Multi
3、-Chip Module,这个就叫多核技术了,如一个 cpu模块中,可以有 8个物理 cpu,相当于 4个 Dual-Core Module,一般用在 590与 595上。如图,则是一个采用了 Multi-Chip Module技术的 cpu模块:从以上的图片与描述可以看到,这种多核技术不过是物理 cpu的高集成度技术,让更小的地方,可以放更多的 cpu,如 550空间大小不变,同样 2个 cpu模块,如果采用双核的 cpu模块,则只可以支持 4颗 cpu,如果采用 Quad Core Module QCM技术的 cpu模块,则最多可以支持到 8颗 cpu。需要注意的是,这个时候 550的 c
4、pu模块(cpu 插槽)并没有增加,所以,如果在开始选型的时候,只选择 4颗 cpu(或以下),而又想留有扩展余地的话,则一定要选择 Quad Core Module QCM技术的 cpu模块,否则,以后只能通过更换 cpu模块(而不是增加 cpu模块)来升级 cpu个数了,这样会比较麻烦。在不同的厂商,对这个多核技术可能略有差别,如 Sun將其多核心架构命名为 CMT(Chip Multi-Threaded),把一个芯片(类似 IBM的 CPU模块,内含 2个或多个 core)叫成一个 cpu(physical processor)。CMT 技术能够将更多的晶体管压缩到一个芯片中,同时能够简
5、化每一个 CPU的设计,把更多的 CPU压在一个芯片当中以提高整个芯片处理交易事务的能力。需要知道的是,这里与 ibm的 core的定义将有所差别,IBM 认为一个 core是一个 cpu(physical processor),而 SUN认为一个芯片是一个 CPU。更多的人习惯拿 CMT技术与下面说的 SMT技术来对比,但是 CMT是硬件技术,SMT 更多是软件技术,所以,我个人认为与多核技术对比比较合适。因为以上的差别,以 cpu为收费对象的厂商,如 Oracle,则在不同的 cpu类型上,一般有不同的处理方式,现在一般已经不在按物理的 cpu来购买 license,而是 cpu模块方式来
6、购买,例如 oracle规定,在 IBM Dual-Core Module(双核模块)的 power芯片上,一个双核模块(内含 2颗物理 cpu)只需要购买 1.5个 license。看了多核技术,我们再说并发多线程技术,在 power5的构架上,以及 AIX 5.3以上,或运行在其上的 linux 2.6核心以上,都可以支持这个技术,也叫 SMT(simultaneous multi-threading)技术。类似 Intel构架上的 linux支持的 SMP技术,一个物理的 CPU,也就是一个 core,在 OS层面上,将显示为 2颗逻辑的 CPU。注意的是,这种技术与硬件构架以及 OS都
7、是有关系的,如 SMT就是 power5才支持的,而且也要特定的 OS,如 Aix 5.3才支持,也就是说,power5 上跑 5.2,也是不支持这样的技术的。在这样的技术中,每个 power5 cpu两个硬件线程,SMT 旨在利用 POWER5处理器的超标量特性,以便同时执行多个指令。它的基本理念是:没有一个单一应用可使向 POWER5这样的超标量处理器达到完全饱和的状态,因此,部署同时提供输入的多个应用效果更理想。如图,如果把 cpu的指令处理分成很多小的单元的话,它们是可以并发的。那么,按照这样的设计思想,那么,SMT 技术将在细小的 oltp应用中受益,而大型的计算业务,如浮点密集型的
8、工作(耗费单个 CPU很长时间,对浮点单元与内存带宽消耗比较大),是不适合使用 SMT技术的。当然,我们可以在 OS级别决定是否打开 SMT技术,主要取决于这个技术是否为我们带来好处,默认则是打开 SMT。在实际的使用中,我们可能发现,一个物理 cpu分化的 2个逻辑 cpu可能存在分配不平等的现象,如 topas可以看到:如以上,1,3,5,7 比较闲,而 2,4,6,8会比较忙,按照 IBM的官方说法是,在 SMT技术中,如果仅仅是其中一半的逻辑 cpu(对应到具体个数的物理 cpu)能满足需求的话,另外的一半逻辑 cpu将一般比较闲置,只有当系统业务比较繁忙的时候,另外一半的逻辑 cpu
9、是可以参与计算的。我猜想,估计这样处理的规则是,避免在简单任务的时候,也采用复杂的分发机制。以上介绍了多核技术与多线程技术,多核技术一般指 cpu的集成度,一般的厂家规则都是一个 core对应到一个物理 cpu,所以,一个 cpu模块中可能存在多个物理 cpu,而并发多线程技术(SMT)则是指单一物理处理器能够同时分发来自多于一个硬件线程上下文的指令,可以虚化成 2个逻辑的 CPU。我们看一个 power5的 Dual-Core Module技术的 cpu模块与逻辑 CPU的对照图:我们也可以采用如下的命令查看 AIX 5L上物理 cpu的个数,他们的数目不同于开启过 SMT技术以后的 topas中的 cpu个数,简单的说,采用 smt技术的 os上,topas 看到的 cpu个数是物理 cpu的 2倍。#lsdev -Cc processor这个命令查看到的,则是逻辑 cpu的数目,与 topas看到的数目一致:#bindprocessor -q我们也可以采用如下的命令查看 cpu的详细信息,如主频,是否支持 SMT,是否开启了 SMT等等。#lsattr -El proc0或者使用 smtctl查看整体的 smt信息,更多的信息可以查看 man smtctl#smtctl关键词:多核技术并发多线程