三、多核处理器的优点和缺点
从应用需求上去看,越来越多的用户在使用过程中都会涉及到多任务应用环境,日常应用中用到的非常典型的有两种应用模式。
一种应用模式是一个程序采用了 线程级并行编程,那么这个程序在运行时可以把并行的线程同时交付给两个核心分别处理,因而程序运行速度得到极大提高。这类程序有的是为多路 工作站或服务器设计的专业程序,例如专业图像处理程序、非线视频编缉程序、动画制作程序或科学计算程序等。对于这类程序,两个物理核心和两颗处理器基本上是等价的,所以,这些程序往往可以不作任何改动就直接运行在 双核电脑上。
还有一些更常见的日常 应用程序,例如Office、IE等,同样也是采用线程级并行编程,可以在运行时同时调用多个线程 协同工作,所以在 双核处理器上的运行速度也会得到较大提升。例如,打开IE 浏览器上网。看似简单的一个操作,实际上浏览器进程会调用代码解析、Flash播放、多媒体播放、Java、 脚本解析等一系列线程,这些线程可以并行地被双核处理器处理,因而运行速度大大加快(实际上IE浏览器的运行还涉及到许多进程级的交互通信,这里不再详述)。由此可见,对于已经采用并行编程的软件,不管是专业软件,还是日常 应用软件,在多核处理器上的运行速度都会大大提高。 日常应用中的另一种模式是同时运行多个程序。许多程序没有采用并行编程,例如一些 文件压缩软件、部分游戏软件等等。对于这些 单线程的程序,单独运行在多核处理器上与单独运行在同样参数的 单核处理器上没有明显的差别。但是,由于日常使用的最最基本的程序—— 操作系统——是支持 并行处理的,所以,当在多核处理器上同时运行多个单线程程序的时候,操作系统会把多个程序的指令分别发送给多个核心,从而使得同时完成多个程序的速度大大加快。 另外,虽然单一的单线程程序无法体现出多核处理器的优势,但是多核处理器依然为 程序设计者提供了一个很好的平台,使得他们可以通过对原有的单线程序进行并行设计优化,以实现更好的程序运行效果。
上面介绍了 多核心处理器在软件上面的应用,但游戏其实也是软件的一种,作为一种特殊的软件,对PC发展作出了较大的贡献。一些多线程游戏已经能够发挥出多核处理器的优势,对于单线程游戏,相信游戏厂商也将会改变 编程策略,例如,一些游戏厂商正在对原来的一些单线程游戏进行优化,采用并行编程使得游戏运行得更快。有的游戏可以使用一个线程实现人物动画,而使用另一个线程来载入地图信息。或者使用一个线程来实现图像渲染中的 矩阵运算,而使用另一个来实现更高的人工智能运算。如今,大量的支持多核心的游戏涌现出来,从而使得多核处理器的优势能得到进一步的发挥。 但布赖恩特直言不讳地指出,要想让多核完全发挥效力,需要硬件业和软件业更多革命性的更新。其中,可编程性是多核处理器面临的最大问题。一旦核心多过八个,就需要执行程序能够 并行处理。尽管在 并行计算上,人类已经探索了超过40年,但编写、调试、优化并行处理程序的能力还非常弱。 易观国际分析师李也认为,“出于技术的挑战,双核甚至多核处理器被强加给了产业,而产业却并没有事先做好准备”。或许正是出于对这种失衡的担心, 中国国家智能计算机中心主任孙凝辉告诉《财经》记者,“十年以后,多核这条道路可能就到头了”。在他看来,一味增加并行的处理单元是行不通的。并行计算机的发展历史表明,并行粒度超过100以后,程序就很难写,能做到128个以上的
应用程序很少。CPU到了100个核以上后,现在并行计算机系统遇到的问题,在CPU一样会存在。“如果解决不了主流应用并行化的问题,主流CPU发展到100个核就到头了。现在还不知道什么样的革命性的进展能解决这些问题。”孙补充说。
实际上, 市场研究公司In-Stat分析师 吉姆克雷格(Jim McGregor)就承认,虽然英特尔已向外界展示了 80核处理器原型,但尴尬的是,目前还没有能够利用这一处理器的操作系统。 中科院软件所并行计算实验室副主任 张云泉也持类似的观点。他对《财经》记者表示,这个问题实际一直就存在,但原来在 超级计算机上才会遇到,所以,讨论也多局限在学术界。而现在,所有用户都要面对这样的问题。 目前, 多核心技术在应用上的优势有两个方面:为用户带来更强大的计算性能;更重要的,则是可满足用户同时进行 多任务处理和多任务计算环境的要求。两大巨头都给 消费者描绘出了使用多核处理器在执行多项任务时的美妙前景:同时可以检查邮件、刻录CD、修改照片、剪辑视频,并且同时可以运行 杀毒软件。或者利用同一台电脑,父亲在查看财务报表,女儿在打游戏,母亲在给远方的朋友打 网络电话。但并不是所有家庭只有一台电脑,也不是所有用户都要用电脑一下子做那么多事,更何况目前的大部分应用程序还并不能自动分割成多任务,分别交给多个核心去执行。所以,对于大多数用户来说,多核所带来的实际益处,很可能并不明显。而多核所带来的挑战,或者说麻烦,却是实实在在的。 美国卡内基梅隆大学计算机系教授朗道布赖恩特(Randal E Bryant)在接受《财经》记者采访时就坦称,“这给软件业制造了巨大的问题”。
四、多核处理器的应用情况
并行计算技术是 云计算的核心技术,也是最具挑战性的技术之一。多核处理器的出现增加了并行的层次性能使得并行程序的开发比以往更难。而当前业内并无有效的并行计算解决方案,无论是编程模型、开发语言还是开发工具,距离开发者的期望都有很大的差距。自动的并行化解决方案在过去的30年间已经被证明基本是死胡同,但传统的手工式的并行程序开发方式又难以为普通的程序员所掌握。Intel、微软、SUN、Cray等业内巨头正投入大量人力物力进行相关的研究,但真正成熟的产品在短期内很难出现。可扩展性是云计算时代并行计算的主要考量点之一,应用性能必须能随着用户的请求、系统规模的增大有效的扩展。当前目前大部分并行应用在超过一千个的处理器(核)上都难以获得有效的加速性能,未来的许多并行应用必须能有效扩展到成千上万个处理器上。这对开发者是巨大的挑战。
从Power、UltraSPARC T1、 安腾到 双核Opteron、 至强Xeon,各个领域都显示出,多核 处理器计算平台势必成为 服务器的主流或者说是强势计算平台,但这只是上游硬件厂商的乐观预计。并不是所有的 操作系统和应用 软件都做好了迎接多核平台的准备,尤其是在数十年来均为单一 线程开发应用的x86服务器领域。微软 软件架构师HerbSutter曾指出:软件开发者对多核处理器时代的来临准备不足。他说, 软件开发社区认识到处理器厂商被迫采用多核设计以应对处理器速度提升带来的发热问题,但却没有清楚地了解这样的设计为软件开发带来多少额外的工作。
在过去一段长时间里,x86系统上软件的性能随着来自Intel和 AMD处理器速度越来越快而不断提高,开发者只需对现有软件程序作轻微改动就能坐观其性能
在随着硬件性能的上升而不断提升。不过,多核设计概念的出现迫使软件世界不得不直面 并行性(将单个任务拆分成多个小块以便分别处理之后再重新组合的能力)问题。当然,为服务器设计软件的开发者已经解决了一些此类难题,因为多核处理器和多路系统在服务器市场已经存在多年(在传统的Unix领域),一些运行在RISC 架构多核多路系统上的 应用程序已经被设计成多线程以利用系统的 并行处理能力。但是,在x86领域,应用程序开发者多年来一直停留在 单线程世界,生产所谓的“顺序软件”。
现在的情况是软件开发者必须找出新的开发软件的方法, 面向对象编程的兴起增加了汇编语言的复杂性,并行编程也需要新的抽象层次。另一方面,处理器设计厂商在设计产品时也应该将软件开发者考虑在内,“处理器的首要着眼点应该是可编程性,而不是速度。”Sutter说。多核处理器要想发挥出威力,关键在于并行化软件支持,多核设计带动并行化计算的推进,而给软件带来的影响更是革命性的。
Intel很早就通过 超线程技术实现了逻辑上的双处理器系统,可以 并行计算,但这不过是对处理器闲置资源的一种充分利用而已,并且这种充分利用只有在特定的条件下,尤其是针对流水线比较长且两种运算并不相互交叉的时候,才会有较高的效率,如编码解码、长期重复某种 矩阵运算以及一些没有经过仔细编写的软件等。
即使 IBM的Power5架构,也需要跟最新的操作系统进行融合,加上运行在其上的软件,才有可能利用并发多线程。 虚拟化技术在一定程度上能够处理一些因为多核带来的问题,可以让 应用软件和操作系统在透明的环境下对处理器资源进行分配和管理。
目前在对称多处理器方面,操作系统对资源的分配和管理并没有本质的改变,多以对称的方式进行平均分配。也就是说,在操作系统层面,当一个任务到来时,剥离成为两个并行的线程,因为线程之间需要交流以及操作系统监管,它导致的效率损失要比硬件层面大得多。并且,多数软件并没有充分考虑到双核乃至多核的运行情况,导致线程的平均分配时间以及线程之间的沟通时间都会大大增加,尤其是当线程需要反复访问内存的时候。目前,多数操作系统还没有完全实现 自由的资源分配,如IBM是通过AIX 5.3L来支持Power5上的虚拟化功能,才实现了资源的动态调配和划分的。 从长远来看,需要使用虚拟化技术才可能实现操作系统对任务的具体划分,这很可能改变一些通用的编程模式。
五、多核处理器新近的发展
近年来计算机技术取得了巨大的进步。但是在未来的十年,主流计算机技术中新的工作量、使用模式的出现及变化对未来的计算机平台提出的要求与过去取得的进展也差不多,这些巨大的要求包括:更高的性能、更低的功率密度、更好的功能可扩展性。作为计算机技术门下的一员,多核处理器技术同样面临相同的挑战。未来的处理器将是的社会和技术发展趋势的响应和直接产物,这些趋势包括:渗透性连接和主动性计算、数据的增长和高性能计算、因特网作为计算机和管道、全球化。这些趋势对未来的处理器有几个清晰的指向,处理器的架构需要进化,才能在下一个十年支持性能的增长和市场的需求。至少要满足以下几个关键需求:通用性能、功耗管理、特殊性能和适应性、可靠性安全性及易管理性、生态系统支持和稳定性、大众市场经济。为了满足这些需求,Intel多核处理器将不仅
多核处理器的优点和缺点



