多核CPU面临的挑战与机遇

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多核CPU面临的挑战与机遇

——如何发挥多核CPU的性能

09计算机科学与技术一班

2009118231

樊如霞

多核CPU面临的挑战与机遇

——如何发挥多核CPU的性能取代过去的单一中央处理器,计算机目前正在步入多核时代。尽管这项技术对我们而言并不是新鲜事物,但这是这种类型的体系架构首次大规模运用于商用个人电脑和服务器市场。这场变革将影响到每位计算机用户。多核技术的触角已经深入到服务器,笔记本电脑甚至游戏机控制台领域。从最终用户的角度来看,这种变革的影响是潜移默化的。程序设计者们发现要实现多核设计的性能也是一项充满挑战的艰巨任务,特别是现在还没有一劳永逸的办法和自动化技术能适应多核系统上运行的现行软件。

多核CPU就是基板上集成有多个单核CPU,早期PD双核需要北桥来控制分配任务,核心之间存在抢二级缓存的情况,后期酷睿自己集成了任务分配系统,再搭配操作系统就能真正同时开工,2个核心同时处理2“份”任务,速度快了,万一1个核心死机,起码另一个U还可以继续处理关机、关闭软件等任务。

与单核处理器相比,多核处理器在体系结构、软件、功耗和安全性设计等方面面临着巨大的挑战,但也蕴含着巨大的潜能。

CMP和SMT一样,致力于发掘计算的粗粒度并行性。CMP可以看做是随着大规模集成电路技术的发展,在芯片容量足够大时,就可以将大规模并行处理机结构中的SMP (对称多处理机)或DSM(分布共享处理机)节点集成到同一芯片内,各个处理器并行执行不同的线程或进程。在基于SMP结构的单芯片多处理机中,处理器之间通过片外Cache或者是片外的共享存储器来进行通信。而基于DSM结构的单芯片多处理器中,处理器间通过连接分布式存储器的片内高速交叉开关网络进行通信。

由于SMP和DSM已经是非常成熟的技术了,CMP结构设计比较容易,只是后端设计和芯片制造工艺的要求较高而已。正因为这样,CMP成为了最先被应用于商用CPU 的“未来”高性能处理器结构。

虽然多核能利用集成度提高带来的诸多好处,让芯片的性能成倍地增加,但很明显的是原来系统级的一些问题便引入到了处理器内部。

多核处理器的革命给整个计算机领域带来了前所未有的挑战和机遇。一方面,多核意味着在同样的空间内实现更多的计算功效。另一方面,处理器体系架构的根本性变化要想充分利用这些处理器,比起之前的设计就更具挑战性。

从应用需求上去看,越来越多的用户在使用过程中都会涉及到多任务应用环境,日常应用中用到的非常典型的有两种应用模式。

一种应用模式是一个程序采用了线程级并行编程,那么这个程序在运行时可以把并行的线程同时交付给两个核心分别处理,因而程序运行速度得到极大提高。这类程序有的是为多路工作站或服务器设计的专业程序,例如专业图像处理程序、非线视频编缉程序、动画制作程序或科学计算程序等。对于这类程序,两个物理核心和两颗处理器基本上是等价的,所以,这些程序往往可以不作任何改动就直接运行在双核电脑上。

还有一些更常见的日常应用程序,例如Office、IE等,同样也是采用线程级并行编程,可以在运行时同时调用多个线程协同工作,所以在双核处理器上的运行速度也会得到较大提升。例如,打开IE浏览器上网。看似简单的一个操作,实际上浏览器进程会调用代码解析、Flash播放、多媒体播放、Java、脚本解析等一系列线程,这些线程可以并行地被双核处理器处理,因而运行速度大大加快(实际上IE浏览器的运行还涉及到许多进程级的交互通信,这里不再详述)。由此可见,对于已经采用并行编程的软件,不管是专业软件,还是日常应用软件,在多核处理器上的运行速度都会大大提高。

日常应用中的另一种模式是同时运行多个程序。许多程序没有采用并行编程,例如一些文件压缩软件、部分游戏软件等等。对于这些单线程的程序,单独运行在多核处理器上与单独运行在同样参数的单核处理器上没有明显的差别。但是,由于日常使用的最最基本的程序——操作系统——是支持并行处理的,所以,当在多核处理器上同时运行多个单线程程序的时候,操作系统会把多个程序的指令分别发送给多个核心,从而使得同时完成多个程序的速度大大加快。

另外,虽然单一的单线程程序无法体现出多核处理器的优势,但是多核处理器依然为程序设计者提供了一个很好的平台,使得他们可以通过对原有的单线程序进行并行设计优化,以实现更好的程序运行效果。

上面介绍了多核心处理器在软件上面的应用,但游戏其实也是软件的一种,作为一种特殊的软件,对PC发展作出了较大的贡献。一些多线程游戏已经能够发挥出多

核处理器的优势,对于单线程游戏,相信游戏厂商也将会改变编程策略,例如,一些游戏厂商正在对原来的一些单线程游戏进行优化,采用并行编程使得游戏运行得更快。有的游戏可以使用一个线程实现人物动画,而使用另一个线程来载入地图信息。或者使用一个线程来实现图像渲染中的矩阵运算,而使用另一个来实现更高的人工智能运算。如今,大量的支持多核心的游戏涌现出来,从而使得多核处理器的优势能得到进一步的发挥。

从最终用户的角度来看多核对工作负载的影响更为直接。举例来说,你的工作负载要同时执行不同的任务,此时多核系统就能马上发挥它的性能优势所在。

应用程序的设计者们为了满足多核的需求需要花费时间对代码进行升级和测试。在并行程序设计上没有简单或者自动化的捷径可循,因此多核菜单(MCCB)的设计就需要付出更多的努力。除了研发多核应用软件需要花费额外的心血外,还要适应不断涌现的全新概念,以充分发挥多核CPU的性能。

从定义上说,所有的多核系统都必须共享内存。设计内存子系统能让核心之间的争夺最小化,但是仍然会出现内存空间为两个或者更多内核所用的时候。这种情况在很多时候就会导致性能问题或者性能衰减。

与传统的单核处理器不同,多核系统的每个核心都必须共享本地资源。除了内存之外,这些资源还包括硬盘,网络连接,PCI总线和个人电脑,工作站或者服务器的其他组件。

在多核系统中,应用程序在那个核心上运行取决于操作系统。操作系统会尽可能的让所有的核心的工作负载均等。通过在核心间对程序进行迁移来实现分配。如果万一程序迁移所在的核心无法使用同样的高速缓存或者本地内存资源,那么程序就会丧失高速缓存数据的优势所在,性能也会因此衰减。

多核也会引发程序设计中新的错误类型。这种情况的出现是因为在核心间新的时间动态分配出现了问题。当核心都在互相等待和冻结或者他们不能保持同步时,这种情况就会发生从而报错。程序设计者们必须在编译应用程序时对这一点有清醒的认识。

最后一个问题就是程序模式。在多核系统中,核心是通过内存共享数据和通讯。程序设计者们实现的途径是取决于他们惯常编写代码的程序模式。对于所有的多核程序设计来说,没有单一的标准方式(程序语言或者API)是可以通行无阻的。处于多核菜单的设计目的,我们将程序设计方法分成两类:

主流方法:这种设计方法就是公开/标准API(应用编程接口),从过往经验看API已经在并行程序设计上取得了成功,具有丰富的编程经验基础来向程序设计者提供支持。采用API

相关文档
最新文档