多核心处理器知识与最大加速比计算方法-多处理器编译

您所在的位置:网站首页 加速器cpu占比多少正常 多核心处理器知识与最大加速比计算方法-多处理器编译

多核心处理器知识与最大加速比计算方法-多处理器编译

2024-07-12 13:02| 来源: 网络整理| 查看: 265

/*********************************************************************  * Author  : Samson  * Date    : 03/10/2014  * Test platform:  *              Linux ubuntu 3.2.0-58-generic-pae  *              GNU bash, version 4.2.39  * *******************************************************************/

SMP(Symmetric Multi-Processing),对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。多处理器的结构都是一样的。SMP结构的意思是每一个多核心都是平等的,没有master-slave关系在多核处理器间存在。

Asymmetric multiprocessing,缩写为AMP,ASMP,非对称多处理器,也译为非对称多重处理、非均衡多元处理,一种多元处理的架构。在这种架构下,存在多个处理器;每个中央处理器在某个特定时间内,被指定一个特定的任务去执行。     多核处理器也称为片上多处理器(chip multi-processor,CMP),或单芯片多处理器。     多核处理器将多个完全功能的核心集成在同一个芯片内,整个芯片作为一个统一的结构对外提供服务,输出性能。多核处理器首先通过集成多个单线程处理核心或者 集成多个同时多线程处理核心,使得整个处理器可同时执行的线程数或任务数是单处理器的数倍,这极大地提升了处理器的并行性能。其次,多个核集成在片内,极 大地缩短了核间的互连线,核间通信延迟变低,提高了通信效率,数据传输带宽也得到提高。再者,多核结构有效共享资源,片上资源的利用率得到了提高,功耗也 随着器件的减少得到了降低。最后,多核结构简单,易于优化设计,扩展性强。这些优势最终推动了多核的发展并逐渐取代单处理器成为主流。   由于多核内部有多个核心,那么就存在任务分配、调度、仲裁以及平衡负载等问题,多核之间的任务调度是充分利用多处理器性能的关键。现有的操作系统还无法 有效地支持多核处理器的任务运行。为满足实时处理的要求,均衡各处理器负载,任务调度机制需要研究的内容有设计和优化分布式实时任务调度算法、动态任务迁 移技术等。当前关于多核的任务调度算法主要有全局队列调度、局部队列调度和共生队列调度算法。全局队列调度是操作系统维护一个全局的任务等待队列,当系 统中有一个CPU核心空闲时,操作系统便从全局任务等待队列中选取就绪任务并开始在此核心上执行,它的优点是CPU核心利用率较高。局部队列调度足指操作 系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,便从该核心的任务等待队列中选取恰当的任务执行,局部队列调度的优点 是任务基本上无需在多个CPU核心间切换,有利于提高CPU核心局部缓存命中率,缺点是CPU利用率太低。共生调度方法的基本思想是将访问共享资源较多的 任务和访问共享资源较少的任务调度到同一时刻执行,从而最大程度上减少资源冲突。目前,多数多核的操作系统采用了基于全局队列的任务调度算法。        多核软件应用开发   多核处理器在利用多个核心的并行执行能力来提高处理器运算性能的同时,也给软件开发者带来了麻烦。当前的困境是众多应用并没有利用多核的性能潜力, 多核的性能优势没有体现。这主要有两个原因:一方面并行编程复杂,没有一个易于程序员编写并行程序的编程工具和环境;另一方面一些应用的线程级加速潜力有限。  并行编程困难的问题从并行计算机产生以来就存在,只是随着多核的主流化,问题更加突出了。多核系统下的并行编程,主要是开发多核 的线程级并行性,但是已有的并行编程模式、编程语言不能完全适合多核环境,不能将多核的多线程并行潜力完全发挥出来,例如OpenMP、MPI、并行C 等。因此,针对多核环境下对并行编程应用的要求,许多研究机构和公司一方面对现有的并行编程模型和编程语言进行修改和改进,例如改进支持共享存储结构的 OpenMP、OpenMP+MPI的混合编程模型、PThread多线程编程模型;另外一方面,在资金项目的支持和市场的推动下,各类研究机构也正在积 极研制开发新一代的并行编程模型和并行编程语言,例如事务存储编程模型、Intel公司的Ct编程模型、IBM公司的X10语言、SUN公司的 Fortress语言、Cray公司的Chapel语言等。   另外一方面,多数应用的并行加速潜力有限是因为当前在实际应用中,可供程 序员迅速开发出来的程序还是单线程的,同时多数应用也是用C或C++编写的,它们一直被设计为单线程,而单线程程序中所能开发和利用的并行性始终是有限 的。所以对于这些应用,要么重新编写并行代码,要么研发面向多核结构的自动并行化工具,使得这些应用能在多核处理器系统中高效应用。 Amdahl定律:     完成复杂工作可获得的加速比是有限的,受限于这个工作中必须被串行执行的部分。 工作的加速比S定义为由一个处理器来完成一项工作的时间(用挂钟时间来计算)与采用n个处理器并发完成该工作的时间之比。Amdahl定律给出了用n个处理器协同完成一个应用时可获得的最大加速比S,其中P是该应用中可以并行执行的部分。为简单起见,假设由一个处理器完成整个应用需用1个单位的时间。使用n个处理器并发执行应用中的并行部分需用时p/n,应用中串行部分的执行时间为1-P。因此,并行化以后的计算时间为:1- P + P/n ;     按照Amdahl定律所给出的加速比定义,得到S=1/(1-p+p/n)     假定有5个房间,每个小房间是1个单位,唯一的大房间是2个单位,5人每人一间进行粉刷。每个房间指定一个人(处理器)粉刷意味着6个单位中的5个可以并行粉刷,即p=5/6,1-p=1/6。由Amdahl定律可得加速比为: S=1/(1-p+p/n)=1/(1/6+1/6)=3,由此可知,若有一间房间的大小是其他房间的2倍,那么5个人同时粉刷房屋的加速比仅仅是一个人粉刷的3倍。 若10个人分别刷10间房间,其中一间房间是其他房间的2倍,情况将变得更糟。S=1/(1/11+1/11)=5.5,可以看出,仅仅微小的失衡就使10个人粉刷房屋只能获得5倍速多的加速比。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3