【转】多核CPU运行模式

多核CPU运行模式主要有以下三种:

  •非对称多处理(Asymmetric multiprocessing,AMP)——每个CPU内核运行一个独立的操作系统或同一操作系统的独立实例(instantiation)。

  •对称多处理(Symmetric multiprocessing,SMP)——一个操作系统的实例可以同时管理所有CPU内核,且应用并不绑定某一个内核。

  •混合多处理(Bound multiprocessing,BMP)——一个操作系统的实例可以同时管理所有CPU内核,但每个应用被锁定于某个指定的核心。

1、非对称多处理(AMP)

  AMP给开发者提供了一个与传统单核CPU系统相类似的运行环境,使得开发者已有的一系列经验和知识可以继续加以利用;同时,这也为老程序的移植提供了相当大的便利性。

  AMP分为同构(homogeneous)和异构(heterogeneous)。前者是指所有内核运行同一种类型和版本的操作系统,后者则是指每个内核运行不同类型或版本的操作系统(比如一个内核运行QNX Neutrino RT,而另一个内核运行Linux)。

  在同构环境中,开发人员只要选择一个可提供分布式编程模式的操作系统,就能最大化地利用多核,允许某个内核上的应用程序透明地与另一个内核上的应用/系统服务(如设备驱动、协议堆栈)进行通信,但不会有传统IPC机制所造成的高CPU占有率。

  异构环境的要求有些不同。在这种环境下,开发人员要么执行专有的通信协议,要么选择可供IPC共享相同架构(如基于IP)的两个操作系统。为了避免资源冲突,两个操作系统还需要通过一个标准机制来访问被共享的硬件。

  在AMP系统中,一个进程(process)总是运行在同一个内核中,即使其他内核处于空闲状态。结果会导致一个内核要么没有被充分利用,要么被利用过度。为了解决这个问题,系统会允许应用程序在内核间动态迁移。然而,这样就需要对状系统信息进行相当复杂的检测。

2、对称多处理(SMP)

  所有内核都运行同一个操作系统拷贝。由于操作系统每时每刻都监控着系统的运行状态,因此可以在多核之间分配资源,而无需应用开发人员的干预。另外,操作系统可以提供内嵌的标准化原语(primitives),如pthread_mutex_lock、pthread_mutex_unlock、pthread_spin_lock和pthread_spin_unlock,从而让多个应用可以安全和容易地共享这些资源。

  一个设计良好的SMP 操作系统允许多个应用线程协同地运行在任何一个内核上。这种协同性使得应用程序任何时候都可以利用芯片的整体计算能力。如果操作系统能提供适当的优先权和线程优先排序能力,就能帮助应用开发人员确保CPU为最需要的应用服务。

3、混合多处理(BMP)

  由QNX倡导的BMP结合了SMP高级资源管理和AMP应用控制的混合功能。BMP跟SMP一样具有透明资源管理功能,不同的是,可以让开发人员将软件任务锁定在指定的内核上。

  与SMP相比,BMP带来了几大优势。它允许共享同一个数据集(data set)的应用独立地运行在同一个内核上,从而消除了SMP系统中会降低性能的CACHE冲突。BMP还可以让为单核环境编写的传统程序正确地运行在多核环境,即让这些应用运行在某一个内核上。

  在BMP系统中,锁定于一个内核的应用无法利用其他内核,即使其他内核处于空闲状态。

4、异步双核和同步双核的解释

同步CPU——Synchronous,Synchronism,是指各个CPU内核必须以相同频率相同电压时工作或同时休息,不能轮流工作,二级缓存共享。CPU性能得到最大发挥,但同时也带来更高的功耗。目前手机同步双核包括三星Exynos4210,德仪OMAP44x0,Nvidia的Tegra2等,代表有三星i9100,MOTO XT910,LG P990。

异步CPU——Asynchronism,各个CPU内核能够同时以相同或不同频率电压处理不同任务,二级缓存共享,显著降低能耗。目前异步双核手机处理器多采用了高通的处理器,比如高通MSM8260(代表机型是小米M1,HTC的G14,G17,G18等)、MSM8660(代表机型是小米电信定制版、三星GALAXY SII(I929)、酷派9900等)、MSM8960(代表机型华硕PadFone、三星GALAXY SIII (I535)、HTC One XC和海尔W910等)、APQ8060(代表机型三星GALAXY SII HD LTE等)等。
  
同步异步的区别:同步的2个CPU是一个整体,无论多少个任务指令 ,都同时合力先完成一个,然后再完成下一个,和电脑CPU相似。
                          异步的2个CPU可独立工作,分别完成不同的任务。在第一个CPU未达到满载状态时,第二个CPU首选执行其他任务或者空闲(不启动);只有在第一个CPU满载非常严重的情况,第二个CPU才会主动分担第一个CPU的任务。所以并不是网络上谣传的两个核心不能同时执行一个任务。

时间: 2024-10-10 00:15:11

【转】多核CPU运行模式的相关文章

随想录(在x86 linux上仿真多核cpu运行)

[ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 搞过嵌入式开发的朋友都知道无论在实际环境还是在fpga上调试代码是一件非常辛苦,同时吃力不讨好的事情.一方面芯片的片上资源少,另外一方面就是除了软件之外你还要处理各种意外的硬件事故.好一点的公司可能还会提供虚拟机来调试,但很多时候虚拟机的稳定性也是一个问题.搞过skyeye的朋友应该比较有体会. 其实,如果调试驱动代码或者cpu boot代码,那么毫无疑问应该在实际环境上开发.但是如果开发的

linux top cset schedtool 对于多核CPU,如何限制进程在一个CPU上运行

对于多核CPU,如何限制进程在一个CPU上运行呢? 如何察看某个进程在哪个CPU上运行: 在控制台中输入: #top -d 1 之后按下f.进入top Current Fields设置页面: 选中:j: P          = Last used cpu (SMP) 则多了一项:P 显示此进程使用哪个CPU. 经过试验发现:同一个进程,在不同时刻,会使用不同CPU Core.这应该是Linux Kernel SMP处理的. 本程序通过这个方法查看,将会在多个CPU上运行. 想要让它在一个CPU

PHP运行模式的深入理解

PHP运行模式有4钟:1)cgi 通用网关接口(Common Gateway Interface))2) fast-cgi 常驻 (long-live) 型的 CGI3) cli  命令行运行   (Command Line Interface)4)web模块模式 (apache等web服务器运行的模块模式)1.CGI(Common Gateway Interface)CGI即通用网关接口(Common Gateway Interface),它是一段程序, 通俗的讲CGI就象是一座桥,把网页和W

单核,多核CPU的原子操作

一. 何谓"原子操作":原子操作就是: 不可中断的一个或者一系列操作, 也就是不会被线程调度机制打断的操作, 运行期间不会有任何的上下文切换(context switch). 二. 为什么关注原子操作?1. 如果确定某个操作是原子的, 就不用为了去保护这个操作而加上会耗费昂贵性能开销的锁. - (巧妙的利用原子操作和实现无锁编程)2. 借助原子操作可以实现互斥锁(mutex). (linux中的mutex_lock_t)3. 借助互斥锁, 可以实现让更多的操作变成原子操作. 三. 单核

linux 多核CPU性能调优

常常感觉系统资源不够用,一台机子上跑了不下3个比较重要的服务,但是每天我们还要在上面进行个备份压缩等处理,网络长时间传输,这在就很影响本就不够用的系统资源: 这个时候我们就可以把一些不太重要的比如copy/备份/同步等工作限定在一颗cpu上,或者是多核的cpu的一颗核心上进行处理,虽然这不一定是最有效的方法,但可以最大程度上利用了有效资源,降低那些不太重要的进程占用cpu资源: 查看系统下cpu信息: cat /proc/cpuinfo taskset就可以帮我们完成这项工作,而且操作非常简单:

【Spark深入学习-11】Spark基本概念和运行模式

----本节内容------- 1.大数据基础 1.1大数据平台基本框架 1.2学习大数据的基础 1.3学习Spark的Hadoop基础 2.Hadoop生态基本介绍 2.1Hadoop生态组件介绍 2.2Hadoop计算框架介绍 3.Spark概述 3.1 Spark出现的技术背景 3.2 Spark核心概念介绍 4.Spark运行模式 4.1.Spark程序组成 4.2.Spark运行模式 5.参考资料 --------------------- 1.大数据基础 1.1 大数据平台基本框架

php 运行模式

常见的五大运行模式:包括cgi .fast-cgi.cli.isapi.apache模块的DLL ,下面作者就这五大运行模式做一些自己的分析,有不对的地方,还请留言指正. CGI运行模式 CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页.CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现. CGI方

PHP的运行模式小结

PHP运行模式有4钟:1)cgi 通用网关接口(Common Gateway Interface))2) fast-cgi 常驻 (long-live) 型的 CGI3) cli  命令行运行   (Command Line Interface)4)web模块模式 (apache等web服务器运行的模块模式)1.CGI(Common Gateway Interface)CGI即通用网关接口(Common Gateway Interface),它是一段程序, 通俗的讲CGI就象是一座桥,把网页和W

PHP运行模式

PHP运行模式有4钟: 1)cgi 通用网关接口(Common Gateway Interface)) 2) fast-cgi 常驻 (long-live) 型的 CGI 3) cli  命令行运行   (Command Line Interface) 4)web模块模式 (apache等web服务器运行的模块模式) 1.  CGI(Common Gateway Interface) CGI即通用网关接口(Common Gateway Interface),它是一段程序, 通俗的讲CGI就象是一