多核处理器摘要:多核处理器也称为片上多处理器(chip multi-processor,CMP),或单芯片多处理器。
自1996年美国斯坦福大学首次提出片上多处理器(CMP)思想和首个多核结构原型,到2001年mM推出第一个商用多核处理器POWER4,再到2005年Intel和AMD多核处理器的大规模应用,最后到现在多核成为市场主流,多核处理器经历了十几年的发展。
在这个过程中,多核处理器的应用范围已覆盖了多媒体计算、嵌入式设备、个人计算机、商用服务器和高性能计算机等众多领域,多核技术及其相关研究也迅速发展,比如多核结构设计方法、片上互连技术、可重构技术、下一代众核技术等。
然而,多核处理器的技术并未成熟,多核的潜力尚未完全挖掘,仍然存在许多待研究的问题。
二.什么是多核处理器2.1什么是多核处理器多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。
多核技术的开发源于工程师们认识到,仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,先前的处理器产品就是如此。
他们认识到,在先前产品中以那种速率,处理器产生的热量很快会超过太阳表面。
即便是没有热量问题,其性价比也令人难以接受,速度稍快的处理器价格要高很多。
英特尔工程师们开发了多核芯片,使之满足横向扩展(而非纵向扩充)方法,从而提高性能。
该架构实现了分治法战略。
通过划分任务,线程应用能够充分利用多个执行内核,并可在特定的时间内执行更多任务。
多核处理器是单枚芯片(也称为硅核),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将每个执行内核作为分立的逻辑处理器。
通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。
多核架构能够使软件更出色地运行,并创建一个促进未来的软件编写更趋完善的架构。
尽管认真的软件厂商还在探索全新的软件并发处理模式,但是,随着向多核处理器的移植,现有软件无需被修改就可支持多核平台。
操作系统专为充分利用多个处理器而设计,且无需修改就可运行。
为了充分利用多核技术,应用开发人员需要在程序设计中融入更多思路,但设计流程与对称多处理(SMP)系统的设计流程相同,并且现有的单线程应用也将继续运行。
得益于线程技术的应用在多核处理器上运行时将显示出卓越的性能可扩充性。
此类软件包括多媒体应用(内容创建、编辑,以及本地和数据流回放)、工程和其他技术计算应用以及诸如应用服务器和数据库等中间层与后层服务器应用。
多核技术能够使服务器并行处理任务,而在以前,这可能需要使用多个处理器,多核系统更易于扩充,并且能够在更纤巧的外形中融入更强大的处理性能,这种外形所用的功耗更低、计算功耗产生的热量更少。
多核技术是处理器发展的必然。
推动微处理器性能不断提高的因素主要有两个:半导体工艺技术的飞速进步和体系结构的不断发展。
半导体工艺技术的每一次进步都为微处理器体系结构的研究提出了新的问题,开辟了新的领域;体系结构的进展又在半导体工艺技术发展的基础上进一步提高了微处理器的性能。
这两个因素是相互影响,相互促进的。
一般说来,工艺和电路技术的发展使得处理器性能提高约20倍,体系结构的发展使得处理器性能提高约4倍,编译技术的发展使得处理器性能提高约1.4倍。
但是今天,这种规律性的东西却很难维持。
多核的出现是技术发展和应用需求的必然产物。
2.2 多核处理器是怎么工作的三.多核处理器的特点从上面对什么是超线程技术以及它是怎么工作的介绍中我们已经对超线程技术的特点有了大致的了解,但是同其它提高系统性能的技术一样,它是既有优点又存在缺陷和不足的。
下面将从技术方面和实际应用两个方面对超线程技术的特点进行客观的分析说明。
3.1 超线程在技术方面的优点和缺点1、优点:一种应用模式是一个程序采用了线程级并行编程,那么这个程序在运行时可以把并行的线程同时交付给两个核心分别处理,因而程序运行速度得到极大提高。
这类程序有的是为多路工作站或服务器设计的专业程序,例如专业图像处理程序、非线视频编缉程序、动画制作程序或科学计算程序等。
对于这类程序,两个物理核心和两颗处理器基本上是等价的,所以,这些程序往往可以不作任何改动就直接运行在双核电脑上。
另外,虽然单一的单线程程序无法体现出多核处理器的优势,但是多核处理器依然为程序设计者提供了一个很好的平台,使得他们可以通过对原有的单线程序进行并行设计优化,以实现更好的程序运行效果。
上面介绍了多核心处理器在软件上面的应用,但游戏其实也是软件的一种,作为一种特殊的软件,对PC发展作出了较大的贡献。
一些多线程游戏已经能够发挥出多核处理器的优势,对于单线程游戏,相信游戏厂商也将会改变编程策略,例如,一些游戏厂商正在对原来的一些单线程游戏进行优化,采用并行编程使得游戏运行得更快。
有的游戏可以使用一个线程实现人物动画,而使用另一个线程来载入地图信息。
或者使用一个线程来实现图像渲染中的矩阵运算,而使用另一个来实现更高的人工智能运算。
如今,大量的支持多核心的游戏涌现出来,从而使得多核处理器的优势能得到进一步的发挥。
2、缺点要想让多核完全发挥效力,需要硬件业和软件业更多革命性的更新。
其中,可编程性是多核处理器面临的最大问题。
一旦核心多过八个,就需要执行程序能够并行处理。
尽管在并行计算上,人类已经探索了超过40年,但编写、调试、优化并行处理程序的能力还非常弱;并行粒度超过100以后,程序就很难写,能做到128个以上的应用程序很少。
CPU到了100个核以上后,现在并行计算机系统遇到的问题,在CPU一样会存在;3.2 超线程技术在应用方面的优缺点1、优点还有一些更常见的日常应用程序,例如Office、IE等,同样也是采用线程级并行编程,可以在运行时同时调用多个线程协同工作,所以在双核处理器上的运行速度也会得到较大提升。
例如,打开IE浏览器上网。
看似简单的一个操作,实际上浏览器进程会调用代码解析、Flash播放、多媒体播放、Java、脚本解析等一系列线程,这些线程可以并行地被双核处理器处理,因而运行速度大大加快(实际上IE浏览器的运行还涉及到许多进程级的交互通信,这里不再详述)。
由此可见,对于已经采用并行编程的软件,不管是专业软件,还是日常应用软件,在多核处理器上的运行速度都会大大提高。
日常应用中的另一种模式是同时运行多个程序。
许多程序没有采用并行编程,例如一些文件压缩软件、部分游戏软件等等。
对于这些单线程的程序,单独运行在多核处理器上与单独运行在同样参数的单核处理器上没有明显的差别。
但是,由于日常使用的最最基本的程序——操作系统——是支持并行处理的,所以,当在多核处理器上同时运行多个单线程程序的时候,操作系统会把多个程序的指令分别发送给多个核心,从而使得同时完成多个程序的速度大大加快。
2、缺点虽然英特尔已向外界展示了80核处理器原型,但尴尬的是,目前还没有能够利用这一处理器的操作系统。
四.多核处理器与单核的区别双核和单核和多核的区别是每个核都有自己的任务,比如双核一个核一个处理图片一个核处理二进制,,单核就是什么信息都有它处理,多核就是减轻单核的处理任务,使其更快。
CPU频率,就是CPU的时钟频率,简单说是CPU运算时的工作的频率(1秒内发生的同步脉冲数)的简称。
单位是Hz。
它决定计算机的运行速度,随着计算机的发展,主频由过去MHZ发展到了现在的GHZ(1GHZ=1000MHZ=1000000KHZ=1000000000HZ)。
通常来讲,在同系列微处理器,主频越高就代表计算机的速度也越快,但对于不同类型的处理器,它就只能作为一个参数来作参考。
另外CPU的运算速度还要看CPU的流水线的各方面的性能指标。
由于主频并不直接代表运算速度,所以在一定情况下,很可能会出现主频较高的CPU 实际运算速度较低的现象。
因此主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。
多线程是单核的处理项,线程越多能处理的项也就越多,但不代表速度就快了。
五.多核处理器的应用并行计算技术是云计算的核心技术,也是最具挑战性的技术之一。
多核处理器的出现增加了并行的层次性能使得并行程序的开发比以往更难。
而当前业内并无有效的并行计算解决方案,无论是编程模型、开发语言还是开发工具,距离开发者的期望都有很大的差距。
自动的并行化解决方案在过去的30年间已经被证明基本是死胡同,但传统的手工式的并行程序开发方式又难以为普通的程序员所掌握。
Intel、微软、SUN、Cray等业内巨头正投入大量人力物力进行相关的研究,但真正成熟的产品在短期内很难出现。
可扩展性是云计算时代并行计算的主要考量点之一,应用性能必须能随着用户的请求、系统规模的增大有效的扩展。
当前目前大部分并行应用在超过一千个的处理器(核)上都难以获得有效的加速性能,未来的许多并行应用必须能有效扩展到成千上万个处理器上。
这对开发者是巨大的挑战。
从Power、UltraSPARC T1、安腾到双核Opteron、至强Xeon,各个领域都显示出,多核处理器计算平台势必成为服务器的主流或者说是强势计算平台,但这只是上游硬件厂商的乐观预计。
并不是所有的操作系统和应用软件都做好了迎接多核平台的准备,尤其是在数十年来均为单一线程开发应用的x86服务器领域。
微软软件架构师HerbSutter曾指出:软件开发者对多核处理器时代的来临准备不足。
他说,软件开发社区认识到处理器厂商被迫采用多核设计以应对处理器速度提升带来的发热问题,但却没有清楚地了解这样的设计为软件开发带来多少额外的工作。
在过去一段长时间里,x86系统上软件的性能随着来自Intel和AMD处理器速度越来越快而不断提高,开发者只需对现有软件程序作轻微改动就能坐观其性能在随着硬件性能的上升而不断提升。
不过,多核设计概念的出现迫使软件世界不得不直面并行性(将单个任务拆分成多个小块以便分别处理之后再重新组合的能力)问题。
当然,为服务器设计软件的开发者已经解决了一些此类难题,因为多核处理器和多路系统在服务器市场已经存在多年(在传统的Unix领域),一些运行在RISC架构多核多路系统上的应用程序已经被设计成多线程以利用系统的并行处理能力。
但是,在x86领域,应用程序开发者多年来一直停留在单线程世界,生产所谓的“顺序软件”。
现在的情况是软件开发者必须找出新的开发软件的方法,面向对象编程的兴起增加了汇编语言的复杂性,并行编程也需要新的抽象层次。
另一方面,处理器设计厂商在设计产品时也应该将软件开发者考虑在内,“处理器的首要着眼点应该是可编程性,而不是速度。
”Sutter说。
多核处理器要想发挥出威力,关键在于并行化软件支持,多核设计带动并行化计算的推进,而给软件带来的影响更是革命性的。
Intel很早就通过超线程技术实现了逻辑上的双处理器系统,可以并行计算,但这不过是对处理器闲置资源的一种充分利用而已,并且这种充分利用只有在特定的条件下,尤其是针对流水线比较长且两种运算并不相互交叉的时候,才会有较高的效率,如编码解码、长期重复某种矩阵运算以及一些没有经过仔细编写的软件等。