`
落地窗
  • 浏览: 439596 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多核技术与并发多线程技术介绍(转载)

阅读更多
看多很多人在这个上面把概念弄混淆,我这里给大家简单介绍一下这两个技术的不同。多核技术可以看成是一种cpu的集成技术,在一个CPU处理模块上,可以集成2个或者是多个CPU,但是,他们还是单独的物理cpu。并发多线程技术则需要OS的支持,是在OS级别上,可以实现一个物理cpu的多线程并发处理,提高oltp环境模式下的cpu利用率。
先说多核技术,如在IBM的power5中,就有如下几种不同的cpu集成模式:如Dual-Core 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-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的cpu模块(cpu插槽)并没有增加,所以,如果在开始选型的时候,只选择4颗cpu(或以下),而又想留有扩展余地的话,则一定要选择Quad Core Module [QCM]技术的cpu模块,否则,以后只能通过更换cpu模块(而不是增加cpu模块)来升级cpu个数了,这样会比较麻烦。
在不同的厂商,对这个多核技术可能略有差别,如Sun将其多核心架构命名为CMT(Chip Multi-Threaded),把一个芯片(类似IBM的CPU模块,内含2个或多个core)叫成一个cpu(physical processor)。CMT技术能够将更多的晶体管压缩到一个芯片中,同时能够简化每一个CPU的设计,把更多的CPU压在一个芯片当中以提高整个芯片处理交易事务的能力。需要知道的是,这里与ibm的core的定义将有所差别,IBM认为一个core是一个cpu(physical processor),而SUN认为一个芯片是一个CPU。更多的人习惯拿CMT技术与下面说的SMT技术来对比,但是CMT是硬件技术,SMT更多是软件技术,所以,我个人认为与多核技术对比比较合适。
因为以上的差别,以cpu为收费对象的厂商,如Oracle,则在不同的cpu类型上,一般有不同的处理方式,现在一般已经不在按物理的cpu来购买license,而是cpu模块方式来购买,例如oracle规定,在IBM Dual-Core Module(双核模块)的power芯片上,一个双核模块(内含2颗物理cpu)只需要购买1.5个license。
看了多核技术,我们再说并发多线程技术,在power5的构架上,以及AIX 5.3以上,或运行在其上的linux 2.6核心以上,都可以支持这个技术,也叫SMT(simultaneous multi-threading)技术。一个物理的CPU,在IBM中也就是一个core,在OS层面上,将显示为2颗(或多颗,这需要看未来的发展可能性)逻辑的CPU。
注意的是,这种技术与硬件构架以及OS都是有关系的,如SMT就是power5才支持的,而且也要特定的OS,如Aix 5.3才支持,也就是说,power5上跑5.2,也是不支持这样的技术的。在这样的技术中,每个power5 cpu两个硬件线程,SMT旨在利用POWER5处理器的超标量特性,以便同时执行多个指令。它的基本理念是:没有一个单一应用可使向POWER5这样的超标量处理器达到完全饱和的状态,因此,部署同时提供输入的多个应用效果更理想。如图,如果把cpu的指令处理分成很多小的单元的话,它们是可以并发的。


那么,按照这样的设计思想,那么,SMT技术将在细小的oltp应用中受益,而大型的计算业务,如浮点密集型的工作(耗费单个CPU很长时间,对浮点单元与内存带宽消耗比较大),是不适合使用SMT技术的。当然,我们可以在OS级别决定是否打开SMT技术,主要取决于这个技术是否为我们带来好处,默认则是打开SMT。
在实际的使用中,我们可能发现,一个物理cpu分化的2个逻辑cpu可能存在分配不平等的现象,如topas可以看到:
     CPU      User%   Kern%   Wait%   Idle%
     cpu6      31.7     7.5    51.6     9.1
     cpu4      30.4    10.1    45.2    14.3
     cpu0      19.4     6.6    28.2    45.8
     cpu2      15.4     5.7    31.4    47.5
     cpu3       0.0     1.5     0.0    98.5
     cpu5       0.0     1.3     0.0    98.7
     cpu7       0.0     1.3     0.0    98.7
     cpu1       0.0     1.6     0.0    98.4
如以上,1,3,5,7比较闲,而2,4,6,8会比较忙,按照IBM的官方说法是,在SMT技术中,如果仅仅是其中一半的逻辑cpu(对应到具体个数的物理cpu)能满足需求的话,另外的一半逻辑cpu将一般比较闲置,只有当系统业务比较繁忙的时候,另外一半的逻辑cpu是可以参与计算的。我猜想,估计这样处理的规则是,避免在简单任务的时候,也采用复杂的分发机制。
以上介绍了多核技术与多线程技术,多核技术一般指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
     proc0          Available 00-00         Processor
     proc2          Available 00-02         Processor
     proc4          Available 00-04         Processor
     proc6          Available 00-06         Processor
这个命令查看到的,则是逻辑cpu的数目,与topas看到的数目一致:
#bindprocessor -q
     The available processors are:  0 1 2 3 4 5 6 7
我们也可以采用如下的命令查看cpu的详细信息,如主频,是否支持SMT,是否开启了SMT等等。
#lsattr -El proc0
     frequency   1896102000     Processor Speed       False
     smt_threads 2              Processor SMT threads False
     state       enable         Processor state       False
     type        PowerPC_POWER5 Processor type        False
或者使用smtctl查看整体的smt信息,更多的信息可以查看man smtctl
#smtctl
     This system is SMT capable.
     SMT is currently enabled.
     SMT boot mode is not set.
     SMT threads are bound to the same physical processor.
     proc0 has 2 SMT threads.
     Bind processor 0 is bound with proc0
     Bind processor 1 is bound with proc0
     proc2 has 2 SMT threads.
     Bind processor 2 is bound with proc2
     Bind processor 3 is bound with proc2
     proc4 has 2 SMT threads.
     Bind processor 4 is bound with proc4
     Bind processor 5 is bound with proc4
     proc6 has 2 SMT threads.
     Bind processor 6 is bound with proc6
     Bind processor 7 is bound with proc6
分享到:
评论

相关推荐

    英特尔多核多线程技术

    - **服务器集群**:数据中心和云计算平台大量使用多核多线程技术来提供高并发服务。 - **大数据处理**:大数据分析和机器学习算法需要处理海量数据,多核多线程处理器能够有效加速这一过程。 #### 四、多核多线程...

    英特尔多核-多线程技术

    多核与多线程的结合,使得处理器在处理复杂计算、多任务环境或者需要大量并发操作的场景下,表现更加出色。比如在服务器应用中,多核多线程技术可以同时处理来自多个用户的请求,保证服务的响应速度和稳定性。在大...

    多核多线程-并发编程简述.pdf

    综上所述,本文档聚焦于多核多线程并发编程,它不仅涉及到软件层面的多线程编程技术,还涉及到硬件层面的多核处理器技术,并且强调了并发设计模式以及多线程在不同操作系统平台上的应用。通过这些内容的讲解,开发者...

    英特尔多核多线程技术(中文版带书签)

    #### 多核与多线程技术 随着微处理器技术的不断进步,**多核**和**多线程**技术成为了提升计算性能的关键手段之一。 - **多核技术**指的是在一个处理器芯片上集成多个核心,每个核心都能独立执行计算任务。这种...

    多线程与多核编程

    多线程与多核编程是现代计算机系统中提高性能和响应速度的重要技术。在多任务环境中,操作系统通过多线程实现并发执行,使得用户能够同时处理多个任务,从而提升用户体验。而多核CPU则提供了硬件层面的并行计算能力...

    英特尔多核/多线程技术-资料汇集

    本文档集重点探讨了“英特尔多核/多线程技术”,它源于英特尔软件网络,旨在提供全面的多线程编程指南。资料涵盖了多线程编程在不同操作系统下的应用,包括Linux/Unix环境和Windows环境,同时讨论了多线程程序设计中...

    多线程与多核编程入门

    多线程与多核编程是现代计算机系统中提高性能和响应速度的重要技术。在这个领域,开发者需要理解如何有效地利用计算资源,特别是在处理大数据量或计算密集型任务时。以下是对这些概念的详细解释: 1. **多线程**:...

    多线程与多核编程.pdf

    ### 多线程与多核编程 #### 13.1 进程与线程 **13.1.1 进程与多任务** 进程是操作系统中的一个重要概念,指的是正在执行中的程序。在现代多任务操作系统中,可以同时运行多个程序。进程包含了程序在内存中的所有...

    多线程与多核编程方法

    多线程与多核编程是当前计算机科学技术中一个非常重要的话题。在现代计算机系统中,多任务操作系统可以同时运行多个程序,是通过 CPU 分时和程序并发实现的。在这种情况下,进程和线程作为两个基本概念,扮演着非常...

    浙江大学-英特尔多核技术

    - **多线程** 是多核技术中的关键编程模型,它允许多个执行流同时运行,每个线程可以在一个单独的核心上执行,实现任务的并发处理。开发者需要掌握如何创建、管理以及同步线程,以充分利用多核处理器的潜力。 - **...

    多线程并发技术

    在现代软件开发中,多线程并发技术是提高程序性能和响应速度的关键因素之一。随着计算机硬件的性能持续提升,程序也必须能够有效地利用多核处理器来实现真正的并行处理。JVM(Java虚拟机)作为Java应用程序的运行...

    多核多线程杂谈-并行计算

    多线程编程是一种在单个进程中创建多个线程的技术,这些线程可以并发执行,从而提高程序的响应性和整体性能。多线程可以充分利用多核处理器的优势,但在编写多线程程序时需要注意线程安全问题,即确保数据的一致性和...

    多核和单核中多线程及单线程的特点

    总的来说,单线程更适合简单任务和低并发场景,而多线程在处理高并发和需要充分利用多核性能的应用中更为合适。理解单线程与多线程的特点,以及如何有效地管理线程同步,是提升软件性能和可靠性的关键。在实际开发中...

    多核程序设计技术-通过软件多线程提升性能(中文版)

    #### 一、多核处理器与多线程技术概述 随着计算机硬件技术的发展,多核处理器已成为现代计算平台的标准配置。多核处理器是指在一个物理处理器上集成两个或多个独立的处理器核心,这些核心可以并行执行任务,从而...

    windows下多核多线程编程

    在Windows操作系统中,多核多线程编程是提高程序并行性和效率的重要手段。通过创建和管理多个线程,可以在多核处理器上并发执行任务,从而充分利用硬件资源,提升程序性能。本文将深入探讨如何在Windows环境下进行多...

    多线程与多核编程——一本书的一部分。

    本文档摘自一本关于多线程与多核编程的专业书籍,主要介绍了进程与线程的概念及其在多任务系统中的作用,同时也探讨了在多核环境下如何优化程序设计。 #### 二、进程与线程 ##### 2.1 进程与多任务 进程(process...

    多核程序设计Linux多线程编程.ppt

    总之,Linux多线程编程利用pthreads库提供了一种有效的方法来实现并发执行,提高系统资源利用率,特别是在多核处理器环境下。正确理解和使用线程创建、同步和资源管理的函数,是编写高效、可靠的多线程应用程序的...

    网络游戏-应用于单台多核处理器主机的多线程网络爬虫执行方法.zip

    《网络游戏-应用于单台多核处理器主机的多线程网络爬虫执行方法》是一个深入探讨如何在游戏开发和网络数据抓取中利用多线程技术的资料。在现代计算机硬件中,多核处理器已经成为标准配置,这为并发处理提供了强大的...

Global site tag (gtag.js) - Google Analytics