文档视界 最新最全的文档下载
当前位置:文档视界 › 浅议多核处理器技术

浅议多核处理器技术

浅议多核处理器技术
浅议多核处理器技术

浅议多核处理器技术

00748712 荣振 摘要:多核处理器以其高性能、低功耗优势正逐步取代传统的单处理器成为市场的主流。随着应用需求的扩大和技术的不断进步,多核必将展示出其强大的性能优势。但目前多核处理器技术还面临着诸多挑战,本文主要介绍了多核处理器发展的关键技术并对多核处理器技术的发展趋势进行简要分析。

关键词:多核;同构异构;片上通信;I/O结构;低功耗

1多核处理器介绍

多核处理器也称为片上多处理器(chip multi-processor,CMP),或单芯片多处理器。自1996 年美国斯坦福大学首次提出片上多处理器(CMP)思想和首个多核结构原型,到2001 年IBM推出第一个商用多核处理器POWER4,再到2005 年Intel和AMD多核处理器的大规模应用,最后到现在多核成为市场主流,多核处理器经历了十几年的发展。在这个过程中,多核处理器的应用范围已覆盖了多媒体计算、嵌入式设备、个人计算机、商用服务器和高性能计算机等众多领域,多核技术及其相关研究也迅速发展。

多核处理器将多个完全功能的核心集成在同一个芯片内,整个芯片作为一个统一的结构对外提供服务,输出性能。多核处理器首先通过集成多个单线程处理核心或者集成多个同时多线程处理核心,使得整个处理器可同时执行的线程数或任务数是单处理器的数倍,这极大地提升了处理器的并行性能。其次,多个核集成在片内,极大地缩短了核间的互连线,核间通信延迟变低,提高了通信效率,数据传输带宽也得到提高。再者,多核结构有效共享资源,片上资源的利用率得到了提高,功耗也随着器件的减少得到了降低。最后,多核结构简单,易于优化设计,扩展性强。这些优势最终推动了多核的发展并逐渐取代单处理器成为主流。

2 多核发展的关键技术

多核处理器结构不仅有性能潜力大、集成度高、并行度高、结构简单和设计验证方便等诸多优势,而且它还能继承传统单处理器研究中的某些成果,例如同时多线程、宽发射指令、降压低功耗技术等。但多核处理器毕竟是一种新的结构,在多核结构设计和应用开发中出现了以前未曾遇到的新问题,这些问题给多核处理器的未来提出了挑战。

2.1 核心结构的选择

目前多核处理器的核心结构主要有同构和异构两种。同构与异构是多核处理器主要的两种结构形态。顾名思义,同构多核处理器是指处理器芯片内部的所有核心其结构是完全相同的,各个核心的地位也是等同的。目前的同构多核处理器大多数由通用的处理器核心组成,每个处理器核心可以独立地执行任务,与通用单核处理器结构相近。

同构多用于通用多核处理器结构。在多计算机系统结构的分类方法中,多处理器结构和多计算机结构因为其互连方式和数据存储与共享方式相异,相应地,同构的多核处理器也可以依据其互连的层次在结构上予以区分,即,核心之间可以通过共享存储器互连,也可以在Cache 层面(或局部存储器)互连。

异构多核处理器芯片内部采用多种功能不同的核心。如有负责管理调度的主核和负责计算的从核构成的多核处理器;再有承担定点、浮点、特殊计算等不同计算功能的核心构成的多核处理器。目前的异构多核处理器通常同时集成通用处理器、DSP、媒体处理器、网络处理器等多种类型的处理器核心,针对不同需求提高应用的计算性能。其中,通用处理器核常作为处理器控制与通用计算之用的主核,而其他处理器核则为用于加速特定的应用的从核。

2.2 片上通信技术

多核芯片上的多个核心虽然各自执行自己的代码,但是不同核心间可能需要进行数据的共享和同步,因此片上通信结构的性能将直接影响处理器的性能。当前片上通信主要有3 种方式:总线共享、交叉开关互连和片上网络(network on chip,NOC)。

总线共享结构是指片上核心、输入输出端口以及存储器通过共享二级或三级Cache,或者通过连接核心的总线进行通信。总线结构的长处是较为简单,易于设计实现,当前多数双核和四核处理器基本上都采用了该结构,但缺点是总线结构可扩展性较差,适用于核心数较少的情况。比较典型的总线共享结构处理器有Hydra、Intel 的Core、IBM 的Power4/5 等。交叉开关互连结构由交叉开关以及接口逻辑构成。交叉开关与总线结构相比,优势是数据通道多,访问带宽更大,但不足是交叉开关结构占用的片上面积也较大,而且随着核心数的增加,性能也会下降,因此它也只适用于核心数较少的情况。例如AMD公司的Athlon x2 双核处理器用交叉开关来控制核心与外部的通信。

片上网络是把互连网络用于片上系统设计,解决片上组件之间的通信问题,它借鉴了并行计算机的互联网络。片上网络与并行计算机的互连相比有很多相同点:支持包通信、可扩展、提供透明的通信服务等;但也有不同之处:片上网络技术支持同时访问,而且有可靠性

高以及可重用性高等特点。它与总线结构、交叉开关结构相比,片上网络可以连接更多IP 组件、可靠性高、可扩展性强以及较低的功耗,因此片上网络被认为是更加理想的大规模CMP 互连技术。当前片上网络主要有二维网格网络、3K Tours 等互连结构。片上网络设计的问题是寻找网络开销和多核耦合程度最佳的平衡,并同时考虑网络的可扩展性。RAW 处理器就采用了片上二维网络结构,它通过集成高速网络和优化的路由算法,片上核心间的通信延迟最大不会超过6个周期,而且该结构可扩展性强。这3种结构虽各有优势和不足,但亦可融合,比如在全局范围采用片上网络而在局部选择总线或者交叉开关结构,以实现性能与复杂性的平衡。

2.3 多核与I/O结构

多核与I/O 结构处理器芯片能力的提高对系统的I/O 能力提出了更高的要求。近年来,标准I/O 接口的传输率和带宽等主要性能指标不断提高,并从并行传输向串行传输转变,使以前普遍存在的I/O 瓶颈得到了很大的改善,远程访问的延迟和带宽都有了很大提高。

与单核环境比较,多核环境下系统的I/O 变得复杂了,对于同构的多核环境,每一个处理器核在系统中的地位是平等的,都有独立I/O 操作的可能,这使得系统特别是操作系统必须给予相应的调度与管理技术支持;对于异构的多核环境,主核运行完整的操作系统,从核主要用于计算,I/O 操作一般由主核统一完成,系统层面上,这与单核的情形相仿。所以,研究与计算能力相匹配的新I/O 技术势在必行。

I/O 能力的提高不仅仅是总线接口一方面的问题,而是应从处理器内外综合考虑的问题。当前的研究实例包括:下一代总线架构、新PCI-Express、DDR3内存、全缓冲DIMM 和I/O 加速技术等,其中I/O 加速技术包括借助增强特性优化TCP/IP 堆栈、借助I/O加速网卡实现CPU 平衡处理、借助直接内存访问技术增强数据移动处理能力等方面。

2.4 存储结构设计

处理器与主存储器之间的速度差距一直是处理器结构设计中必须考虑的问题,因为存储系统自身的体系结构设计直接关系到系统整体性能,会对整个芯片的尺寸、功耗、布局、性能以及运行效率等各方面产生很大的影响。以往在单处理器中通过采用缓存结构基本上能较好地解决这个问题,能保证处理器性能得到发挥。可是,发展到了多核处理器时代,核心和主存之间因速度差距而带来的问题变得严重了。由于处理器内部核心数目增多,对主存的访问需求增加,而单处理器时代的缓存层次和访问带宽已经不能跟上多核处理器的访问需求,必须针对多核处理器进行相应的存储结构设计,并解决好存储系统的效率问题。

当前对存储系统设计,绝大多数处理器采用缓存设计,也有些处理器采用了片上存储器结构。缓存结构设计的优点是硬件设计与实现容易,易于应用开发与编程,缺点是需要保证缓存数据的一致,而且结构扩展不易。针对缓存数据一致性问题,其解决策略主要有总线侦听协议和基于目录的目录协议。侦听协议是每块缓存通过缓存侦听器时刻侦听总线,以接受一致性命令,不足的是它只适合核心数目较少的情况。目录协议是通过目录表记录自身存储块在其他缓存中的状态,以便维持一致性时使用点对点的通信,缺点是实现代价太大,并发访问目录时存在性能瓶颈。除了上述的硬件一致性算法,还有基于多处理机的软件一致性算法,但能否作为多核结构的缓存一致性机制,这些需要进一步的探讨研究。目前大多数多核处理器采用总线的侦听协议。

片内存储器是将片外的存储器引到了片内,它与片外存储器一样是统一编址,因此它避开了缓存不命中和一致性问题,但它由于采用了存储器结构,其访问延迟较缓存大。当前一些研究人员通过采用高速动态随机存储器来组成片内存储器,缩小了与缓存间的性能差距。除了选择何种存储结构外,存储结构设计的问题还有:存储器多大比较合适;在哪一级实现数据的共享和通信比较合适;在哪一级解决缓存一致性问题比较合理;存储结构如何支持多线程的应用等。

2.5 多核的功率和热管理

在整个计算机系统中,处理器,特别是高性能的处理器的功耗往往占系统功耗的50%,甚至更高。而当前,处理器性能提高1%就会使芯片功耗增加3%,对于系统设计而言,功耗对系统的可靠性、可用性以及系统的规模有着直接的影响。

集成电路芯片的功耗分静态与动态两类,静态功耗主要受与频率相关的漏电流的影响,频率越高,漏电流越大;动态功耗与工作频率及工作电压的平方成正比,即P=C*f*V2 ,因此,适当的频率和较低的电压是降低处理器芯片功耗的基础。多核环境下的低功耗技术也主要体现在芯片的基础参数和片上功耗管理方面。

频率高低反映出处理器峰值运算性能的强弱,多核处理器芯片的工作频率和工作电压一般都较单核处理器低,相对较低频率和较低电压,再配合按实际需求动态智能化管理功耗的方法,减少实际耗散功率,将整个处理器芯片的功耗控制在有效的热管理技术之下。

2.6 操作系统设计

由于多核内部有多个核心,那么就存在任务分配、调度、仲裁以及平衡负载等问题,多核之间的任务调度是充分利用多处理器性能的关键。现有的操作系统还无法有效地支持多核

处理器的任务运行。为满足实时处理的要求,均衡各处理器负载,任务调度机制需要研究的内容有设计和优化分布式实时任务调度算法、动态任务迁移技术等。当前关于多核的任务调度算法主要有全局队列调度、局部队列调度和共生队列调度算法。全局队列调度是操作系统维护一个全局的任务等待队列,当系统中有一个CPU 核心空闲时,操作系统便从全局任务等待队列中选取就绪任务并开始在此核心上执行,它的优点是CPU 核心利用率较高。局部队列调度是指操作系统为每个CPU 内核维护一个局部的任务等待队列,当系统中有一个CPU 内核空闲时,便从该核心的任务等待队列中选取恰当的任务执行,局部队列调度的优点是任务基本上无需在多个CPU核心间切换,有利于提高CPU核心局部缓存命中率,缺点是CPU 利用率太低。共生调度方法的基本思想是将访问共享资源较多的任务和访问共享资源较少的任务调度到同一时刻执行,从而最大程度上减少资源冲突。目前,多数多核的操作系统采用了基于全局队列的任务调度算法。

3 多核发展趋势

多核处理器产生的直接原因是替代单处理器,解决微处理器的发展瓶颈,但发展多核的深层次原因还是为了满足人类社会对计算性能的无止境需求,而且这种压力还会持续下去。即便在当前,设计者已经有效地将多核性能提高到了一个新的水平,可是人们对性能的渴望并未就此泯灭。

阻碍多核性能向更高水平发展的问题很多,可真正束缚多核发展的是低功耗和应用开发两个问题。由于现有的多核结构设计方法和技术还不能有效地处理好这两个问题,因此有必要在原有技术基础上探索新的思路和方法。下面的内容是为了实现高性能、低功耗和高应用性的目标多核处理器呈现得几种发展趋势:

(1) 多核上将集成更多结构简单、低功耗的核心。为了满足性能需求,通过集成更多核心来提高性能是必然选择,但是核心的结构也必须考虑。因为如果核心结构过于复杂,随着核心数量的增多,不仅不能提升性能,还会带来线延迟增加和功耗变大等问题。例如,2007 年Tilera公司和Plurality 公司分别推出自己的64 核处理器产品,而Intel 公司也将推出80个核心的低功耗处理器。

(2) 异构多核是一个重要的方向。研究表明,将结构、功能、功耗、运算性能各不相同的多个核心集成在芯片上,并通过任务分工和划分将不同的任务分配给不同的核心,让每个核心处理自己擅长的任务,这种异构组织方式比同构的多核处理器执行任务更有效率,实现

了资源的最佳化配置,而且降低了整体功耗。

(3) 多核上应用可重构技术。大规模高性能可编程器件的出现,推动了现场可编程门阵列(field programmable gate arrays,FPGA) 技术的发展。在芯片上应用FPGA 技术有高灵活性、高可靠性、高性能、低能耗和低成本多种优势。微处理器设计人员注意到了这种优势,并将FPGA 等可重构技术应用到多核结构上,让结构具备可重构性和可编程性。这种创新思路大大提高了多核的通用性和运算性能,使处理器既有了通用微处理器的通用性,又有专用集成电路的高性能,使之兼具了灵活性、高性能、高可靠、低能耗等众多优良特点。

4 结束语

多核处理器的出现,对计算机体系结构的发展来讲有着深远的影响。在未来的一段时间之内,多核处理器将在处理器市场上占有统治地位。但是如何充分利用多核处理器的性能,更好的发挥出多核的优势,让每个核能够同时处理任务,提高系统利用率,不仅需要硬件上的资源重复,多核互联,还需要更好的分配任务,分配能够使多个核同时工作,不互相争夺共享资源的任务,是当前软件工作者和硬件工作者协同工作的重点所在。

参考文献:

[1] 谢向辉,胡苏太,李宏亮. 多核处理器及其对系统结构设计的影响[J]. 计算机科学与探索, 2008,(06) .

[2] 贺松健. 多核处理器技术浅析[J]. 科技促进发展, 2009,(02) .

[3]刘必慰,陈书明,汪东. 先进微处理器体系结构及其发展趋势[J]. 计算机应用研究, 2007,(03) .

[4] 何军,王飙. 多核处理器的结构设计研究[J]. 计算机工程, 2007,(16) .

多核与多线程技术的区别到底在哪里

多核与多线程技术的区别到底在哪里? 【导读】:毫无疑问的,“多核”、“多线程”此二词已快成为当今处理器架构设计中的两大显学,如同历史战国时代以“儒”、“墨”两大派的显学,只不过当年两大治世思想学派是争得你死我亡,而多核、多线程则是相互兼容并蓄,今日几乎任何处理器都朝同时具有多核多线程的路线发展迈进。毫无疑问的,“多核”、“多线程”此二词已快成为当今处理器架构设计中的两大显学,如同历史战国时代以“儒”、“墨”两大派的显学,只不过当年两大治世思想学派是争得你死我亡,而多核、多线程则是相互兼容并蓄,今日几乎任何处理器都朝同时具有多核多线程的路线发展迈进。 虽然两词到处可见,但可有人知此二者的实际差异?在执行设计时又是以何者为重?到底是该多核优先还是多线程提前?关于此似乎大家都想进一步了解,本文以下试图对此进行个中差异的解说,并尽可能在不涉及实际复杂细节的情形下,让各位对两者的机制观念与差别性有所理解。 行程早于线程 若依据信息技术的发展历程,在软件程序执行时的再细分、再切割的小型化单位上,先是有行程(Process),之后才有线程(Thread),线程的单位比行程更小,一个行程内可以有多个线程,在一个行程下的各线程,都是共享同一个行程所建立的内存寻址资源及内存管理机制,包括执行权阶、内存空间、堆栈位置等,除此之外各个线程自身仅拥有少许因为执行之需的变量自属性,其余都依据与遵行行程所设立的规定。 相对的,程序与程序之间所用的就是不同的内存设定,包括分页、分段等起始地址的不同,执行权阶的不同,堆栈深度的不同等,一颗处理器若执行了A行程后要改去执行B行程,对此必须进行内存管理组态的搬迁、变更,而这个搬迁若是在处理器内还好,若是在高速缓存甚至是系统主存储器时,此种切换、转移程序对执行效能的损伤就非常大,因为完成搬迁、切换程序的相同时间,处理器早就可以执行数十到上千个指令。 两种路线的加速思维 所以,想避免此种切换的效率损耗,可以从两种角度去思考,第一种思考就是扩大到整体运算系统的层面来解决,在一部计算机内设计、配置更多颗的处理器,然后由同一个操作系统同时掌控及管理多颗处理器,并将要执行的程序的各个程序,一个程序喂(也称:发派)给一颗处理器去执行,如此多颗同时执行,每颗处理器执行一个程序,如此就可以加快整体的执行效率。 当然!这种加速方式必须有一个先决条件,即是操作系统在编译时就必须能管控、发挥及运用多行程技术,倘若以单行程的系统组态来编译,那么操作系统就无法管控服务器内一颗以上的处理器,如此就不用去谈论由操作系统负责让应用程序的程序进行同时的多颗同时性的执行派送。 即便操作系统支持多程序,而应用程序若依旧只支持单程序,那情形一样是白搭,操作

多核处理器的发展前景和存在问题综述

多核处理器的发展前景和存在问题综述 目录 1.概述 (2) 2.处理器的发展趋势 (2) 从单核到多核 (3) 同构多处理器与异构多处理器 (3) 多核处理器发展面临的挑战 (4) 多核与多线程技术 (4) 3.多核处理器的高速缓存一致性问题 (4) 增强一致性的基本方案 (5) 目录式Proximity-aware 协议 (5) 4.多核加速串行程序的主要方法 (8) 并行编译器 (8) 推测多线程 (9) 基于线程的预执行机制 (9) 5. 总结 (10) 参考文献 (11)

1. 概述 在过去的几十年时间里,处理器的性能一直按照莫尔定律在发展。提高处理器性能的基本方法就是不断提升主频。从初期的几十MHz到不久前IBM的Power 6达到了,设计人员甚至想过提升到7G~8GHz。不过,进入2002年以来,CPU 提升主频的困难越来越大,因为主频的提升带来了散热和功耗的大幅增加等问题。在几年前,英特尔和AMD都调整了研究方向,开始研究在同一CPU中放置多个执行内核。 说到底,出现多核处理器的最根本原因是人们对计算能力永无止境的追求。尽管这些年来,处理器从来没有停止过前进的脚步,但每一次性能的突破,换来的只是对更高性能的需求,特别是在油气勘探、气象预报、虚拟现实、人工智能等高度依赖于计算能力的场合,对性能的渴求更加迫切。 既然单处理器的发展已经到了瓶颈,而多核将会引领以后处理器发展的潮流,那么我们就看看多核处理器带给我们什么样的性能提升,多核处理器要全面应用到各个领域所需解决的问题。 多核的好处非常明显。首先,由于是多个执行内核可以同时进行运算,因此可以显著提升计算能力,而每个内核的主频可以比以前低,因而总体功耗增加不大。其次,与多CPU相比,多核处理器采用与单CPU相同的硬件架构,用户在提升计算能力的同时无需进行任何硬件上的改变,这对用户来说非常方便。 然而,多核处理器要发挥它的作用必须要解决许多问题,不像CPU的频率提升,无论如何你都可以从中受益,要从多核处理器中受益,首先在设计多核处理器时,要注意不同核心之间的通信与数据的一致性,另外,在软件层次上也需要对多核进行改进,以充分利用多核的性能。 本文结合了几篇最新的多核方面的论文和一些网上评论,从处理器的发展趋势,前景以及存在的挑战几个方面介绍了多核的相关问题。文章第二部分主要介绍处理器的发展趋势,第三部分主要阐述多核的一个关键问题高速缓存一致性已经如何通过预取来提高带宽,第四部分主要阐述多核在提高串行程序性能方面的作用。 2. 处理器的发展趋势

多核处理器

多核处理器 多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核技术的开发源于工程师们认识到,仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,先前的处理器产品就是如此。他们认识到,在先前产品中以那种速率,处理器产生的热量很快会超过太阳表面。即便是没有热量问题,其性价比也令人难以接受,速度稍快的处理器价格要高很多。 最新新闻 中国发布全球首款全系统多核高精度导航定位芯片 全球首款全系统多核高精度导航定位系统级芯片,13日在第六届中国卫星[2.10% 资金研报]学术年会期间对外发布。专家表示,这意味着国产芯片不仅具备国际竞争力,还从“跟踪者”跃升为“引领者”。...详情 内容来自 中文名多核处理器 定义集成两个或多个完整的计算引擎 第一颗通用型微处理器4004 技术优势采用了线程级并行编程 目录 1技术发展 2发展历程 3技术优势 4技术瓶颈 5技术原理 6技术关键 ?核结构研究 ?程序执行模型 ?Cache设计 ?核间通信技术 ?总线设计 ?操作系统设计 ?低功耗设计 ?存储器墙 ?可靠性及安全性设计 7技术意义 8技术种类 9技术应用 10应用 11英特尔 1技术发展 256线程的CPU 256线程的CPU 英特尔工程师们开发了多核芯片,使之满足“横向扩展”(而非“纵向扩充”)方法,从而提高性能。该架构实现了“分治法”战略。通过划分任务,线程应用能够充分利用多个执行内核,并可在特定的时间内执行更多任务。多核处理器是单枚芯片(也称为“硅核”),能够直

接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。多核架构能够使软件更出色地运行,并创建一个促进未来的软件编写更趋完善的架构。尽管认真的软件厂商还在探索全新的软件并发处理模式,但是,随着向多核处理器的移植,现有软件无需被修改就可支持多核平台。操作系统专为充分利用多个处理器而设计,且无需修改就可运行。为了充分利用多核技术,应用开发人员需要在程序设计中融入更多思路,但设计流程与对称多处理(SMP)系统的设计流程相同,并且现有的单线程应用也将继续运行。得益于线程技术的应用在多核处理器上运行时将显示出卓越的性能可扩充性。此类软件包括多媒体应用(内容创建、,以及本地和数据流回放)、工程和其他技术计算应用以及诸如应用服务器和数据库等中间非标轴承https://www.docsj.com/doc/ac1005468.html,层与后层服务器应用。多核技术能够使服务器并行处理任务,而在以前,这可能需要使用多个处理器,多核系统更易于扩充,并且能够在更纤巧的外形中融入更强大的处理性能,这种外形所用的功耗更低、计算功耗产生的热量更少。多核技术是处理器发展的必然。推动微处理器性能不断提高的因素主要有两个:半导体工艺技术的飞速进步和体系结构的不断发展。半导体工艺技术的每一次进步都为微处理器体系结构的研究提出了新的问题,开辟了新的领域;体系结构的进展又在半导体工艺技术发展的基础上进一步提高了微处理器的性能。这两个因素是相互影响,相互促进的。一般说来,工艺和电路技术的发展使得处理器性能提高约20倍,体系结构的发展使得处理器性能提高约4倍,编译技术的发展使得处理器性能提高约1.4倍。但是今天,这种规律性的东西却很难维持。多核的出现是技术发展和应用需求的必然产物。 2发展历程 1971年,英特尔推出的全球第一颗通用型微处理器4004,由2300个晶体管构成。当时,公司的联合创始人之一戈登摩尔(Gordon Moore),就提出后来被业界奉为信条的“摩尔定律”——每过18个月,芯片上可以集成的晶体管数目将增加一倍。 在一块芯片上集成的晶体管数目越多,意味着运算速度即主频就更快。今天英特尔的奔腾(Pentium)四至尊版840处理器,晶体管数量已经增加至2.5亿个,相比当年的4004增加了10万倍。其主频也从最初的740kHz(每秒钟可进行74万次运算),增长到现在的3.9GHz(每秒钟运算39亿次)以上。 当然,CPU主频的提高,或许在一定程度上也要归功于1975年进入这个领域的AMD公司的挑战。正是这样的“双雄会”,使得众多计算机用户有机会享受不断上演的“速度与激情”。一些仍不满足的发烧友甚至选择了自己超频,因为在玩很多游戏时,更快的速度可以带来额外的饕餮享受。 但到了2005年,当主频接近4GHz时,英特尔和AMD发现,速度也会遇到自己的极限:那就是单纯的主频提升,已经无法明显提升系统整体性能。 以英特尔发布的采用NetBurst架构的奔腾四CPU为例,它包括Willamette、Northwood和Prescott等三种采用不同核心的产品。利用冗长的运算流水线,即增加每个时钟周期同时执行的运算个数,就达到较高的主频。这三种处理器的最高频率,分别达到了2.0G、3.4G和3.8G。 按照当时的预测,奔腾四在该架构下,最终可以把主频提高到10GHz。但由于流水线过长,使得单位频率效能低下,加上由于缓存的增加和漏电流控制不利造成功耗大幅度增加,3.6GHz奔腾四芯片在性能上反而还不如早些时推出的3.4GHz产品。所以,Prescott产品系列只达到3.8G,就戛然而止。 英特尔上海公司一位工程师在接受记者采访时表示,Netburst微架构的好处在于方便提升频率,可以让产品的主频非常高。但性能提升并不明显,频率提高50%,性能提升可能微不

多核处理器的主要实现架构及其设计挑战

多核处理器的主要实现架构及其设计挑战 2008年03月01日 为得到更高的处理性能,曾经唯一的做法是提高单一处理器的频率,但当这一做法因为功耗和发热的非线性增长而变得难以为继时,集成多个处理器核心的器件便应运而生。谈到多核处理器,ARM的中国总裁谭军先生给出的定义是:“多核处理器是指在同一个核内具有多个处理器内核,它们可以通过内部的缓存来控制,有选择性的开/关。” 总体上,多核处理器架构分为同质架构和异质架构两大类。MIPS 科技公司产品营销总监P ete Del Vecchio认为:“当SoC 的功能被分解进彼此次之间通信非常有限的的多个子系统时,异质架构的多核系统最为适用。”他还表示:“同质架构的多核系统设计使分配到不同处理器的任务共享的数据可以自动保持一致。这种多核系统比较容易编程,可提供直接的机制,在不同处理器之间动态地迁移任务。” 各种应用于通用领域和嵌入式领域的多核处理器都可以归入到上面提到的这两种架构。TI 采用的是将DSP与CPU核心相结合的混合结构。TI通用DSP业务发展经理郑小龙表示:“DSP速度极快适于实时处理,CPU控制能力全面适合非实时处理,TI的混合结构多核处理器将二者的优点充分结合,构成一个极其高效的SoC。”MIPS的Pete Del Vecchio表示:“目前,MIPS主要致力于最大限度地提高单处理器的频率。”但他同时表示:“已有获得授权的厂商在利用各种MIPS 内核,不论是在异构还是同构多核实现方法方面均取得了巨大的成功。例如,Sigma Designs 开发的一款芯片采用两个MIPS内核,一个用来处理应用软件/OS,另一个用于系统安全。” Freescale的多核平台包含2到32个Power Architecture 的e500-mc Power内核,该平台在高端包含了一个基于互联的片上控制网络,它可以减少由于拥塞而带来的性能降低。ARM在2007年推出了当最多具备四核时性能可达8,000DMIPS 的Cortex-A9处理器。英特尔目前多核处理器采用的微架构是著名的酷睿微架构,酷睿微架构具备以下重要特性: 1. 英特尔宽区动态执行; 2. 英特尔智能内存访问; 3. 英特尔高级数字媒体增强; 4. 英特尔高级智能高速缓存; 5. 英特尔智能功率特性。 在实施多核处理器的过程中,在硬件和软件两方面业界都面临一系列挑战。TI的郑小龙认为:“挑战首先表现在系统配置方面,其次表现在软件协调开发方面。”ARM通过已经被业界证明成功的MPCore 技术看到了以下几大设计挑战:1. 预先整合的并且通过验证的可扩展多核处理技术;2. 整合的中断分配和处理器间的通信;3. 先进的Snoop控制单元,支持增强的缓存一致性。应对这些挑战,谭军表示:“ARM在Cortex-A9 MPCore中在以下几个方面进一步加强了MPCore 技术:1. 加速器一致性端口(ACP);2. 先进的总线接口单元;3. 具有中断虚拟的多核ARM TrustZone技术;4. 通用中断控制器(GIC)。

多线程编程的原则及要点

2.4多线程编程的原则及要点: 随着多核CPU的出世,多核编程方面的问题将摆上了程序员的日程,有许多老的程序员以为早就有多CPU的机器,业界在多CPU机器上的编程已经积累了很多经验,多核CPU上的编程应该差不多,只要借鉴以前的多任务编程、并行编程和并行算法方面的经验就足够了。 但是,多核机器和以前的多CPU机器有很大的不同,以前的多CPU机器都是用在特定领域,比如服务器,或者一些可以进行大型并行计算的领域,这些领域很容易发挥出多CPU的优势,而现在多核机器则是应用到普通用户的各个层面,特别是客户端机器要使用多核CPU,而很多客户端软件要想发挥出多核的并行优势恐怕没有服务器和可以进行大型并行计算的特定领域简单。 多核CPU中,要很好地发挥出多个CPU的性能的话,必须保证分配到各个CPU上的任务有一个很好的负载平衡。否则一些CPU在运行,另外一些CPU处于空闲,无法发挥出多核CPU 的优势来。 要实现一个好的负载平衡通常有两种方案,一种是静态负载平衡,另外一种是动态负载平衡。 1、静态负载平衡 静态负载平衡中,需要人工将程序分割成多个可并行执行的部分,并且要保证分割成的各个部分能够均衡地分布到各个CPU上运行,也就是说工作量要在多个任务间进行均匀的分配,使得达到高的加速系数。 2、动态负载平衡 动态负载平衡是在程序的运行过程中来进行任务的分配达到负载平衡的目的。实际情况中存在许多不能由静态负载平衡解决的问题,比如一个大的循环中,循环的次数是由外部输入的,事先并不知道循环的次数,此时采用静态负载平衡划分策略就很难实现负载平衡。 动态负载平衡中对任务的调度一般是由系统来实现的,程序员通常只能选择动态平衡的调度策略,不能修改调度策略,由于实际任务中存在很多的不确定因素,调度算法无法做得很优,因此动态负载平衡有时可能达不到既定的负载平衡要求。 3、负载平衡的难题在那里? 负载平衡的难题并不在于负载平衡的程度要达到多少,因为即使在各个CPU上分配的任务执行时间存在一些差距,但是随着CPU核数的增多总能让总的执行时间下降,从而使加速系数随CPU核数的增加而增加。 负载平衡的困难之处在于程序中的可并行执行块很多要靠程序员来划分,当然CPU核数较少时,比如双核或4核,这种划分并不是很困难。但随着核数的增加,划分的粒度将变得越来越细,到了16核以上时,估计程序员要为如何划分任务而抓狂。比如一段顺序执行的代码,放到128核的CPU上运行,要手工划分成128 个任务,其划分的难度可想而知。

片上众核处理器硬件同步机制研究

片上众核处理器硬件同步机制研究* 徐卫志1,2刘志勇1范东睿1焦帅1,2张浩1宋风龙1雷峥蒙1,2余磊1,2 1(中国科学院计算技术研究所系统结构重点实验室北京 100190) 2(中国科学院研究生院北京 100039) 摘要同步机制是片上多核/众核处理器正确执行和协同通信的关键,其效率对处理器的性能非常重要。本文针对片上众核体系结构,提出了两种硬件粗粒度同步机制,集中式同步机制和分布式同步机制,分别通过片上的集中式锁管理器和分布式锁管理器来实现;以片上同构众核处理器Godson-T模拟器为平台,通过量化评估程序,评估比较了提出的两种硬件支持的同步机制与基于原语的软件同步机制的性能。结果表明,硬件支持可以使得片上众核处理器的同步机制性能明显提高,而分布式锁管理器的扩展性要好于集中式锁管理器。 关键词片上众核处理器;同步;硬件支持;集中式锁管理器;分布式锁管理器 中图法分类号: TP302 文献标识码: A 1 引言 传统单核处理器采用指令级并行的技术提高性能,借助于超标量和流水处理提高处理器的主频,但是随着主频的提高却使得功耗和散热问题难以依靠现有的技术解决。而半导体工艺的发展,使得片上可集成的晶体管数目日益增多,因而体系结构设计者为了在性能进一步提升的同时降低功耗和散热,提出了线程级粗粒度并行的片上多核/众核处理器[1]。片上多核/众核处理器与传统多处理器相比,其优点是片上处理能力强、带宽高、通信距离短、传输速度快等,多个线程之间的数据通信效率高,因而需要高效的同步机制与之匹配。 同步操作保证多个线程之间的数据传播,临界区的互斥访问使得多个线程对共享存储的写操作等同于串行执行,保证程序执行语义的正确性。因而,同步操作的性能对片上众核处理器而言非常重要,直接影响了多个线程协同执行的速度。 在传统多处理器系统中,已有许多针对于互斥操作的研究,主要可以分为两类,一类是设计更好的软件算法,第二类是为其提供专用的硬件支持等。软件锁的缺点在于同步开销大、扩展性差、存储空间要求高等。例如,Test&Set锁[2]是基于原子指令Test&Set的软件锁,它需要每个参与同步的线程不断地执行Test&Set指令,每一次执行Test&Set指令,就检查并修改对应的内存块,造成大量的访存操作和网络操作,当线程数增多时,Test&Set锁的扩展性很差。虽然已经有一些改进的基于原子指令的软件同步方法,但是原子指令实现困难,代价高,当片上集成了成百上千个处理器核时,软件锁难以满足众核处理器的性能需求,势必形成“synchronization wall”。 虽然基于同步原语的软件锁相对于硬件锁较灵活,但是在众核片上支持硬件锁,可以充分利用片上通信速度快的特点,大大提高同步操作的效率,从而提高整个芯片的计算能力。文献[3]针对于众核处理器Cyclops-64,提出了专用的硬件同步状态缓存器SSB,用于支持细粒度的同步操作,目的是有效利用众核处理器的片上处理能力。然而,硬件支持对于片上众核处理器中粗粒度同步机制的性能影响仍没有相关的研究。 因而,我们提出了基于片上众核体系结构的两种硬件粗粒度同步机制,使用专门的片上锁管理器来实现同步,包括集中式锁管理器和分布式锁管理器,从不同角度评估了硬件支持对片上众核结构同步机制的性能提升,将集中式同步机制,分布式同步机制,以及软件同步机制进行了比较。结果表明,硬件支持可以使得片上众核处理器的同步机制性能明显提高,而分布式锁管理器比集中式锁管理器扩展性更好。 本文如下组织:第2节介绍多核/众核同步机制的相关研究工作,包括基于原语的同步机制实现方式,硬件同步,细粒度同步,事务内存等;第3节提出片上众核结构中专用硬件支持的同步机制,包括集中式同步管理器与分布式同步管理器,为了评估需要,在片上众核结构中也实现了Ticket Lock;第4节介绍模拟平台和试验结果,并对结果进行分析,对软件锁和硬件锁,集中式锁管理器和分布式锁锁管理器进行比较;第5节总结本文,并提出进一步的工作。 *本课题得到国家自然科学基金重点项目(60736012)、国家“九七三”重点基础研究发展规划项目基金(2005CB321600)、国家“八六三”高技术研究发展计划项目基金(2009AA01Z103)、国家杰出青年科学基金(60925009 )、国家自然科学基金创新研究群体科学基金(60921002)、北京市自然科学基金(4092044)资助。 徐卫志(1982年生),男,山东龙口人,博士研究生,主要研究方向为高性能计算机体系结构、并行算法等;刘志勇(1946年生),男,博士,研究员,博士生导师,主要研究领域为算法、计算机系统结构、并行处理、片上存储系统等;范东睿(1979年生),男,博士,副研究员,主要研究方向为低功耗处理器设计;张浩,博士,助理研究员;宋风龙,博士;雷峥蒙,硕士研究生;余磊,博士研究生。

操作系统对多核处理器的支持方法

随着多核处理器的发展,对软件开发有非常大的影响,而且核心的瓶颈在软件上。软件开发在多核环境下的核心是多线程开发。这个多线程不仅代表了软件实现上多线程,要求在硬件上也采用多线程技术。可以说多核提供了可以大幅提升性能的机制,多核软件就是可以真正利用这一特点的策略。只有与多核硬件相适应的软件,才能真正地发挥多核的性能。多核对软件的要求包括对多核操作系统的要求和对应用软件的要求。 多核操作系统的关注点在于进程的分配和调度。进程的分配将进程分配到合理的物理核上,因为不同的核在共享性和历史运行情况都是不同的。有的物理核能够共享二级cache,而有的却是独立的。如果将有数据共享的进程分配给有共享二级cache的核上,将大大提升性能;反之,就有可能影响性能。进程调度会涉及到比较广泛的问题,比如负载均衡、实时性等。 面向多核体系结构的操作系统调度目前多核软件的一个热点,其中研究的热点主要有下面几方面:程序的并行研究;多进程的时间相关性研究;任务的分配与调度;缓存的错误共享;一致性访问研究;进程间通信;多处理器核内部资源竞争等等。这些探讨相互独立又相互依赖。考虑一个系统的性能时必须将其中的几点同时加以考虑,有时候对一些点的优化会造成另一些点的性能下降,需要用程序进行性能优化评测,所以合适的多核系统软件方案正在形成过程中。 任务的分配是多核时代提出的新概念。在单核时代,没有核的任务分配的问题,一共只有一个核的资源可被使用。而在多核体系下,有多个核可以被使用。如果系统中有几个进程需要分配,是将他们均匀地分配到各个处理器核,还是一起分配到一个处理器核,或是按照一定的算法进行分配。并且这个分配还受底层系统结构的影响,系统是SMP构架还是CMP构架,在CMP构架中会共享二级缓存的核的数量,这是影响分配算法的因子。任务分配结束后,需要考虑任务调度。对于不同的核,每个处理器核可以有自己独立的调度算法来执行不同的任务(实时任务或者交互性任务),也可以使用一致的调度算法。此外,还可以考虑一个进程上一个时间运行在一个核上,下一个时间片是选择继续运行在这个核上,还是进行线程迁移;怎样直接调度实时任务和普通任务;系统的核资源是否要进行负载均衡等等。任务调度是目前研究的热点之一。 在单核处理器中,常见的调度策略有先到先服务(FCFS),最短作业调度(SJF),优先级调度(Priority-scheduling algorithm),轮转法调度(round-robin RR),多级队列调度(multilevel queue-schedule algorithm)等。例如在Linux操作系统中对实时任务采取FCFS和RR两种调度,普通任务调度采取优先级调度。 对于多核处理器系统的调度,目前还没有明确的标准与规范。由于系统有多个处理器核可用,必须进行负载分配,有可能为每个处理器核提供单独的队列。在这种情况下,一个具有空队列的处理器就会空闲,而另一个处理器会很忙。所以如何处理好负载均衡问题是这种调度策略的关键问题所在。为了解决这种情况,可以考虑共同就绪队列,所有处理器公用一个就绪队列。但是这无疑对进程上下文切换、锁的转换增加了执行时间,降低了性能。另外一种想法就是选择一个处理器来为其他处理器调度,因而创建了主从结构。有的系统将主从结构作进一步扩

多核处理器的优点和缺点

三、多核处理器的优点和缺点 从应用需求上去看,越来越多的用户在使用过程中都会涉及到多任务应用环境,日常应用中用到的非常典型的有两种应用模式。 一种应用模式是一个程序采用了线程级并行编程,那么这个程序在运行时可以把并行的线程同时交付给两个核心分别处理,因而程序运行速度得到极大提高。这类程序有的是为多路工作站或服务器设计的专业程序,例如专业图像处理程序、非线视频编缉程序、动画制作程序或科学计算程序等。对于这类程序,两个物理核心和两颗处理器基本上是等价的,所以,这些程序往往可以不作任何改动就直接运行在双核电脑上。 还有一些更常见的日常应用程序,例如、等,同样也是采用线程级并行编程,可以在运行时同时调用多个线程协同工作,所以在双核处理器上的运行速度也会得到较大提升。例如,打开浏览器上网。看似简单的一个操作,实际上浏览器进程会调用代码解析、播放、多媒体播放、、脚本解析等一系列线程,这些线程可以并行地被双核处理器处理,因而运行速度大大加快(实际上浏览器的运行还涉及到许多进程级的交互通信,这里不再详述)。由此可见,对于已经采用并行编程的软件,不管是专业软件,还是日常应用软件,在多核处理器上的运行速度都会大大提高。 日常应用中的另一种模式是同时运行多个程序。许多程序没有采用并行编程,例如一些文件压缩软件、部分游戏软件等等。对于这些单线程的程序,单独运行在多核处理器上与单独运行在同样参数的单核处理器上没有明显的差别。但是,由于日常使用的最最基本的程序——操作系统——是支持并行处理的,所以,当在多核处理器上同时运行多个单线程程序的时候,操作系统会把多个程序的指令分别发送给多个核心,从而使得同时完成多个程序的速度大大加快。 另外,虽然单一的单线程程序无法体现出多核处理器的优势,但是多核处理器依然为程序设计者提供了一个很好的平台,使得他们可以通过对原有的单线程序进行并行设计优化,以实现更好的程序运行效果。 上面介绍了多核心处理器在软件上面的应用,但游戏其实也是软件的一种,作为一种特殊的软件,对发展作出了较大的贡献。一些多线程游戏已经能够发挥出多核处理器的优势,对于单线程游戏,相信游戏厂商也将会改变编程策略,例如,一些游戏厂商正在对原来的一些单线程游戏进行优化,采用并行编程使得游戏运行得更快。有的游戏可以使用一个线程实现人物动画,而使用另一个线程来载入地图信息。或者使用一个线程来实现图像渲染中的矩阵运算,而使用另一个来实现更高的人工智能运算。如今,大量的支持多核心的游戏涌现出来,从而使得多核处理器的优势能得到进一步的发挥。 但布赖恩特直言不讳地指出,要想让多核完全发挥效力,需要硬件业和软件业更多革命性的更新。其中,可编程性是多核处理器面临的最大问题。一旦核心多过八个,就需要执行程序能够并行处理。尽管在并行计算上,人类已经探索了超过年,但编写、调试、优化并行处理程序的能力还非常弱。 易观国际分析师李也认为,“出于技术的挑战,双核甚至多核处理器被强加给了产业,而产业却并没有事先做好准备”。或许正是出于对这种失衡的担心,中国国家智能计算机中心主任孙凝辉告诉《财经》记者,“十年以后,多核这条道路可能就到头了”。在他看来,一味增加并行的处理单元是行不通的。并行计算机的发展历史表明,并行粒度超过以后,程序就很难写,能做到个以上的应用程

多核处理器在计算方面的优势

面对飞速增长的流媒体信息和网络应用的全球化趋势,企业和消费者要求电脑处理器提供更多的便利,更明显的优势,采用多核处理器的x86服务器就是在这种背景下应运而生。目前,数据库、创作3D图像、同时运行多项任务、数学分析和网络服务等各种各样的应用,对计算性能的要求永无止境。如何在更好的性价比条件下,有效地满足现在与未来的需求,成为企业用户面临的必然选择。 双核处理器:计算技术发展的重要趋势 从技术层面来看,多核处理器,较之当前的单核处理器,能带来更多的性能和生产力优势,因而最终将成为一种广泛普及的计算模式。多核处理器还将在推动PC安全性和虚拟技术方面起到关键作用,虚拟技术的发展能够提供更好的保护、更高的资源使用率和更可观的商业运算市场价值。 向多核处理器的迈进是一个重要的技术发展趋势。双核处理器技术的引入是提高处理器性能另一个行之有效的方法。因为处理器实际性能是处理器在每个时钟周期内所能处理器指令数的总量,因此增加一个内核,处理器每个时钟周期内可执行的单元数将增加一倍。在这里我们必须强调一点的是,如果你想让系统达到最大性能,你必须充分利用两个内核中的所有可执行单元:即让所有执行单元都有活可干! 当这些处理器面世时,它们将会立即对企业和消费者带来极大的便利。多核处理器可以通过为工作负担较重的场合——尤其是那些已经在使用多线程应用的场合?D?D提供显着提升的性能,促进服务器/工作站业务环境的发展。根据现有的计划,我们可以看到,一些国际领先的处理器厂商计划在2005年中国推出第一个面向服务器和工作站市场的双核处理器。届时,企业计算的x86服务器市场将全面进入双核时代,从而拉开了多核服务器全新应用时代的帷幕;而这个时代帷幕一旦拉开,将把X86服务器的应用提升到一个前所未有的高度,使客户在举足之间轻松提升性能,更加有效地运行应用,提高工作负担较重的应用,例如数据采集、数学分析和Web服务,提高更高的生产效率。 双核服务器:企业服务器的必由之路 计算机处理器的设计在近20年来以一个常速在不断进化发展。计算机持续向大众市场发展和扩散和我们提出的要求都在不断推动着向更强大的处理器前进的趋势。市场对更高性能处理器的要求与对更成熟的软件应用程序的需求紧密相关。例如,如今全球盛行的电子邮件,在十年以前只是一项限制性很强而且价格昂贵的技术。如今,软件应用程序,从帮助大型企业更好地管理和保护他们的关键业务数据和网络到允许家用PC机编辑家庭录像、处理数字照片和将下载音乐烧制成CD,几乎无所不在。

多核处理器1

多核处理器 摘要: 多核处理器也称为片上多处理器(chip multi-processor,CMP),或单芯片多处理器。自1996年美国斯坦福大学首次提出片上多处理器(CMP)思想和首个多核结构原型,到2001年mM推出第一个商用多核处理器POWER4,再到2005年Intel和AMD多核处理器的大规模应用,最后到现在多核成为市场主流,多核处理器经历了十几年的发展。在这个过程中,多核处理器的应用范围已覆盖了多媒体计算、嵌入式设备、个人计算机、商用服务器和高性能计算机等众多领域,多核技术及其相关研究也迅速发展,比如多核结构设计方法、片上互连技术、可重构技术、下一代众核技术等。然而,多核处理器的技术并未成熟,多核的潜力尚未完全挖掘,仍然存在许多待研究的问题。 二.什么是多核处理器 2.1什么是多核处理器 多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核技术的开发源于工程师们认识到,仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,先前的处理器产品就是如此。他们认识到,在先前产品中以那种速率,处理器产生的热量很快会超过太阳表面。即便是没有热量问题,其性价比也令人难以接受,速度稍快的处理器价格要高很多。英特尔工程师们开发了多核芯片,使之满足横向扩展(而非纵向扩充)方法,从而提高性能。该架构实现了分治法战略。通过划分任务,线程应用能够充分利用多个执行内核,并可在特定的时间内执行更多任务。多核处理器是单枚芯片(也称为硅核),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。多核架构能够使软件更出色地运行,并创建一个促进未来的软件编写更趋完善的架构。尽管认真的软件厂商还在探索全新的软件并发处理模式,但是,随着向多核处理器的移植,现有软件无需被修改就可支持多核平台。操作系统专为充分利用多个处理器而设计,且无需修改就可运行。为了充分利用多核技术,应用开发人员需要在程序设计中融入更多思路,但设计流程与对称多处理(SMP)系统的设计流程相同,并且现有的单线程应用也将继续运行。得益于线程技术的应用在多核处理器上运行时将显示出卓越的性能可扩充性。此类软件包括多媒体应用(内容创建、编辑,以及本地和数据流回放)、工程和其他技术计算应用以及诸如应用服务器和数据库等中间层与后层服务器应用。多核技术能够使服务器并行处理任务,而在以前,这可能需要使用多个处理器,多核系统更易于扩充,并且能够在更纤巧的外形中融入更强大的处理性能,这种外形所用的功耗更低、计算功耗产生的热量更少。多核技术是处理器发展的必然。推动微处理器性能不断提高的因素主要有两个:半导体工艺技术的飞速进步和体系结构的不断发展。半导体工艺技术的每一次进步都为微处理器体系结构的研究提出了新的问题,开辟了新的领域;体系结构的进展又在半导体工艺技术发展的基础上进一步提高了微处理器的性能。这两个因素是相互影响,相互促进的。一般说来,工艺和电路技术的发展使得处理器性能提高约20倍,体系结构的发展使得处理器性能提高约4倍,编译技术的发展使得处理器性能提高约1.4倍。但是今天,这种规律性的东西却很难维

多核处理器架构及调试

多核处理器架构及调试 认识多核基本架构多核处理器在同一个芯片中植入了多个处理器引擎,这就可以提供更高的CPU性能、功能特性和分区能力。一般说来,多核有两种实现形式。第一,SMP(Symmetricmultiprocessing,对称多处理)。在这种情况下,开发人员面对的是单一的抽象化硬件平台,由SMP操作系统来决定具体由哪一个内核来运行哪个任务,其中每个内核都是相同的,而且在同一个操作系统的管理控制之下,共享同一个内存。第二,AMP(Asymmetricmultiprocessi 认识多核基本架构 多核处理器在同一个芯片中植入了多个处理器引擎,这就可以提供更高的CPU 性能、功能特性和分区能力。一般说来,多核有两种实现形式。 第一,SMP( Symmetric multiprocessing,对称多处理)。在这种情况下,开发人员面对的是单一的抽象化硬件平台,由SMP操作系统来决定具体由哪一个内核来运行哪个任务,其中每个内核都是相同的,而且在同一个操作系统的管理控制之下,共享同一个内存。 第二,AMP(Asymmetric multiprocessing,非对称多处理)。在这种情况下,各个处理器内核都运行着各自独立的操作系统。这种独立性意味着,其中各个处理器内核既可以是同构的,并且运行同样的操作系统,也可以是异构的并运行各自不同的操作系统。 多核环境显著增加了系统复杂度,因而在对操作系统和与多核相关的硬件进行调试的时候,就必须采用一整套更有效的工具。另外,尽管大家都认为多核就是指在同一个芯片中放入多个内核,但是在实际开发工作中所遇到的多处理问题,实际上不仅仅局限于在单一芯片中的多个内核。事实上,不论这些处理器内核是在同一个芯片之中,或者分布在同一个电路板中的多个芯片之中,甚至同一个系统中的多个电路板之中,开发人员都必须解决好多处理环境中的调试问题。相对于最近出现的单一芯片多核架构,有多个处理器芯片和多个处理器电路板组成的复杂系统已经存在很多年了。因此,多处理架构的调试问题其实早已存在,只是单一芯片内多核架构的普及将多处理系统调试问题更加尖锐地摆在了开发人员面前。 从这个意义上,多年前就开始从事多处理环境软件开发的厂商就积累了更丰富的经验,在应对多核软件开发方面站在了更为有利的地位。例如 Wind River 公司经典的实时操作系统VxWorks在多年前最初的设计思路就是基于多处理架构的,因此不论从运行环境还是开发调试工具任何一方面看,对于多核环境的适应能力都比其他工具要强得多。 认识多核调试难点

浅谈多核CPU、多线程与并行计算

0.前言 最近发觉自己博客转帖的太多,于是决定自己写一个原创的。笔者用过MPI 和C#线程池,参加过比赛,有所感受,将近一年来,对多线程编程兴趣一直不减,一直有所关注,决定写篇文章,算是对知识的总结吧。有说的不对的地方,欢迎各位大哥们指正:) 1.CPU发展趋势 核心数目依旧会越来越多,依据摩尔定律,由于单个核心性能提升有着严重的瓶颈问题,普通的桌面PC有望在2017年末2018年初达到24核心(或者16核32线程),我们如何来面对这突如其来的核心数目的增加?编程也要与时俱进。笔者斗胆预测,CPU各个核心之间的片内总线将会采用4路组相连:),因为全相连太过复杂,单总线又不够给力。而且应该是非对称多核处理器,可能其中会混杂几个DSP处理器或流处理器。 2.多线程与并行计算的区别 (1)多线程的作用不只是用作并行计算,他还有很多很有益的作用。 还在单核时代,多线程就有很广泛的应用,这时候多线程大多用于降低阻塞(意思是类似于 while(1) { if(flag==1) break;

sleep(1); } 这样的代码)带来的CPU资源闲置,注意这里没有浪费CPU资源,去掉sleep(1)就是纯浪费了。 阻塞在什么时候发生呢?一般是等待IO操作(磁盘,数据库,网络等等)。此时如果单线程,CPU会干转不干实事(与本程序无关的事情都算不干实事,因为执行其他程序对我来说没意义),效率低下(针对这个程序而言),例如一个IO操作要耗时10毫秒,CPU就会被阻塞接近10毫秒,这是何等的浪费啊!要知道CPU是数着纳秒过日子的。 所以这种耗时的IO操作就用一个线程Thread去代为执行,创建这个线程的函数(代码)部分不会被IO操作阻塞,继续干这个程序中其他的事情,而不是干等待(或者去执行其他程序)。 同样在这个单核时代,多线程的这个消除阻塞的作用还可以叫做“并发”,这和并行是有着本质的不同的。并发是“伪并行”,看似并行,而实际上还是一个CPU在执行一切事物,只是切换的太快,我们没法察觉罢了。例如基于UI 的程序(俗话说就是图形界面),如果你点一个按钮触发的事件需要执行10秒钟,那么这个程序就会假死,因为程序在忙着执行,没空搭理用户的其他操作;而如果你把这个按钮触发的函数赋给一个线程,然后启动线程去执行,那么程序就不会假死,继续响应用户的其他操作。但是,随之而来的就是线程的互斥和同步、死锁等问题,详细见有关文献。 现在是多核时代了,这种线程的互斥和同步问题是更加严峻的,单核时代大都算并发,多核时代真的就大为不同,为什么呢?具体细节请参考有关文献。我

一分钟看懂CPU多发射超标量、多线程、多核之概念和区别

【闲来无事、做做科普、反正也算是marketing job;教你一分钟看懂CPU多发射超标量/多线程/多核之概念和区别】最近在多个场合大肆宣扬多核多线程,收到对多线程表示不解的问题n多,苦思多日,终得一形象生动的模型,你肯定懂的。 因为是比喻和科普、过于严谨的技术控请勿吐槽。 处理器性能提高之公开秘笈:超标量、多线程、多核。 用于说明的生活模型:高速公路及收费站。 简单CPU的原型:单车道马路 + 单收费闸口,车辆只能一辆辆排队通过,并行度为1。 为了提高通行能力同时积极创收,相关部门运用世界顶尖CPU设计理念,对高速公路系统进行了如下拓宽改造: (1)增加车道(图示为3条车道); (2)增加收费通道(图示为2个通道);

(3)每个收费通道放置多个收费员(图示每条通道有a和b两个收费窗口)。 其中(1)+(3)组合手段就是所谓的超标量结构,该图示为双发射超标量。超标量指有多个车道,双发射是指有a和b两位收费员可以同时发卡,把两辆车送到不同车道上去。 手段(2)就是多线程的模型了,原有车道不变、只增加收费通道,这样多个车流来的时候可以同时发卡放行。 从这个比喻来看多线程显然是个非常直观和有用的办法,但为什么在CPU世界中似乎有点模糊难懂的感觉呢?那是因为CPU的指令流喜欢一个挨一个、一列纵队龟速前进,这样的话单通道多收费员还起点作用、多通道就形同虚设了。收费员1.a和1.b会累死,而2.a和2.b则能够睡觉。因此把车流进行整队就很重要——这就是并行编程,即要设法把一列纵队排列成多列纵队。 至于多核的概念,那就简单粗暴很多了,直接在这条马路边上进行征地拆迁、新修一条一模一样的高速公路便是,牛吧。现在大家手机里面的多核,就是并排几条“单收费通道+多车道”的马路,车流稀少、路况不错,不过相关部门表示因为道路利用率底下、经济效益欠佳、回收投资压力巨大。 无论多核还是多线程,都有一个同样的问题需要解决,就是要把车流整成多列纵队,这样多条马路和多个收费通道的并行度才能发挥作用。

从多核到众核处理器

从多核到众核处理器 此文由客座作者Zheng Li所写,欢迎大家follow他的twitter: https://www.docsj.com/doc/ac1005468.html,/biglizheng 其实“多核”这个词已经流行很多年了,世界上第一款商用的非嵌入式多核处理器是2002年IBM推出的POWER4。当然,多核这个词汇的流行主要归功与AMD和Intel的广告,Intel 与AMD的真假四核之争,以及如今的电脑芯片市场上全是多核处理器的事实。接下来,学术界的研究人员开始讨论未来成百上千核的处理器了。有一个与多核匹配的词叫片上网络(Networks on Chip),讲的是多核里的网络式互连结构,甚至有人预测未来将互连网集成到片上这种概念了。当然,这样的名词是很吸引眼球的,不过什么东西都得从实际出发,这篇文章也就简单地分析了为什么有多核这个事情,以及多核系统的挑战。 为什么有多核处理器? 事先需要提及的是,一个常见误区就是多核和众核处理器的发展来源于应用和市场驱动。实际上,应用和市场希望单核处理器的寿命越来越长,而物理限制是多核以及未来众核处理器出现和发展的动力。之后我们来谈论一下,首先,为什么有多核处理器?从Intel 80286 到Intel Pentium 4大概二十多年的时间都是单核处理器的天下,为什么最近几年单核处理器却销声匿迹了?是什么导致了多核时代的到来? 这里需要知道一个经验定律和三个限制,他们是多核处理器的最本质缘由。这个定理就是摩尔定律。Gordon Moore博士是Intel的创始人之一。早在他参与创建Intel之前的1965年,他就提出,在至少十年内,每个芯片上集成的晶体管数(集成度)会每两年翻一番。后来,大家把这个周期缩短到十八个月。这个指数规律的发展速度是令人难以置信的,大家都听过那个国王按几何级数赏赐大臣谷粒,从而使得国库被掏空的传说。而摩尔定律讲得就是现实中晶体管数量几何级数倍增的故事,更令人难以置信的是这个速度保持到今天已经快五十年了。人类历史上应该还没有任何技术是指数发展这么久的。题外话一句,若干年前,互联网骨干网带宽曾经这么指数了几年,曾有人将其总结为一个定律忽悠一堆人研究光纤通讯,后来发现带宽没法按照指数定律涨了,许多搞光电的人也就找不到工作了。扯远了点,整个 IT产业之所以风光了这么多年,摩尔定律是本质的因素。 当无数的硅公硅婆和软件民工们将晶体管数目的增长转换为计算机等IT产品的性能时,摩尔定律也就有了两个推论,每十八个月,计算机等 IT 产品的性能会翻一番;相同性能的计算机等 IT 产品,每十八个月价钱会降一半。后面这个推论很可怕的一件事情,他说,如果你IT产品像菜市场的商贩一年年复一年的卖同样的东西,那么你IT产品的价钱会指数下降。从某种意义上来说摩尔定律逼迫着所有的IT企业不断的按指数规律提高产品的性能,并且创新出新的产品。但不幸的是,这种从晶体管数转换为性能增长的过程日趋困难。 时至今日,集成度还在以摩尔定律的速度增长,但是性能的增长遇到了三个物理规律的限制。第一是功耗,第二是互连线延时,第三是设计复杂度。

相关文档
相关文档 最新文档