1、 多核技术综述姓名:朱齐敏 学号:08002516摘要:本文首先阐述了多核技术的定义和相关概念,然后介绍了多核技术的好处及其发展状况,接着描述了多核技术带来的挑战以及面对挑战我们因怎样开发并行软件和如何让旧程序应对多核环境。本文提纲:1、什么是多核技术2、多核技术相关概念3、多核技术的好处4、多核技术的发展5、多核技术带来的挑战6、多核平台下的并行开发 7、旧程序如何应对多核环境1、什么是多核技术简单的讲,多内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核处理器是多枚芯片(也称为“硅核”) ,能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为
2、独立的逻辑处理器。通过在多个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。单核与多核的区别单核处理器:通过提高主频来提升效率,随之提高的还有处理器的功耗和成本。多核处理器:通过多核结构的并行计算提高效率,功耗小,但是单个任务的处理速度不会提升。多核与多处理器(多 CPU)的区别:多核是指一个处理器芯片有多个处理器核心,他们之间通过 CPU 内部总线进行通讯;多处理器是指简单的多个处理器芯片工作在同一个系统上,多个处理器之间的通讯是通过主板上的总线进行的。2、多核技术相关概念SMP:指在两个相似(或相同 )的处理器通过一条高速通道连接,并且共享外 CPU、线程多实例无需了解,
3、由操作系统自动协调运行,并管理共享资源。AMP:在一个由两颗或者多颗相同或者不同的处理器通过各种通信通道连接( 比如可以将一个 MCU(Main Control Unit)和一个 DSP 集成在一起) ,在逻辑上共享或者独占外设、存储器的体系架构上,运行不同的操作系统实例,相互之间通过 TIPC(Transparent Inter-Process Communication)等机制通讯。往往是用于主控处理单元与各种专业协处理器协同工作的情形。多核:是一种处理器的结构,在一个芯片上集成了多个处理器核心。一般各个核有独立的 L1cache,但共享 L2 Cache,同时,也共享存储器、外设。SMT
4、(HT):同时多线程技术(在 intel 称为超线程技术 ),是在 CPU 中提供多个半独立的处理器单元,其中寄存器独立,但共享 L1 cache 和 ALU 单元,其目的是提高 ALU 的利用率,提升 CPU 效率。从物理上来看,是一个类多 CPU 体系。当然各芯片厂家实现方案可能不同。 多处理器:由多颗相同或者不同的独立完整的 CPU 通过通信通道连接,可共享也可独立拥有存储器、外设。并行:活动线程在不同的硬件资源或者处理单元上同时执行,多个线程在任何时间点都同时执行。并发:线程在同一个硬件资源上交替执行的过程,所有活动线程在某段时间内同时执行的状态,但是在某个给定的时刻都只有一个线程在执
5、行 。3、多核技术的好处由于是多个执行内核可以同时进行运算,因此可以显著提升计算能力,而每个内核的主频可以比以前低,因而总体功耗增加不太大。与多 CPU 相比,多核处理器采用与单 CPU 相同的硬件机构,用户在提升计算能力的同时无需进行任何硬件上的改变,这对用户来说非常方便。相对于传统的单核 CPU,多核 CPU 具有性能高、功耗低、设计和验证周期短、通信延迟低等诸多优点,同时它还带来了 CPU 设计方式的变革,提供了一种新的发展模式。相比单核处理器,它有更强的性能优势,并且在推动 PC 安全性和虚拟技术方面起到关键作用,虚拟技术的发展能够提供更好的保护、更高的资源使用率和更可观的商业计算市场
6、价值。普通消费者也将比以往拥有更多的途径获得更高性能。正是由于多核的这些优点,所以,多核很快被用户接受,并得以普及。4、多核技术的发展无论是 AMD 还是 Intel, 目前已经发布的新型处理器多是双核,计算机的发展总是追求系统物理规模的不断减小,以及性能和集成度的不断提高。随着应用的需要,芯片上的处理器数目将不断增多,双核也将走向多核。由于应用的需要,多核技术将与其它先进技术交织,成为处理器的发展方向。由于 32 位越来越难以满足应用需要, “64 位+ 多核” 将是处理器发展的趋势。双核 PC 时代在 2005 年 4 月正式开始,当时英特尔发布了至尊版奔腾840 处理器,是一款主频 3.
7、2GHz 的 90 纳米芯片,紧随其后的就是走向主流的奔腾 D 800 系列 CPU。而英特尔的第二代双核处理器奔腾 D 900 系列在2006 年年初发布,并且开始将英特尔的制程工艺全面转向 65 纳米。在这段时期,由于集成了优秀的内存管理器,并且可以运行在与 CPU 相同的频率,所以 AMD 的 90 纳米双核 Athlon 642 产品线开始获得广泛的追捧。而此时英特尔处理器仍然需要通过低速的前端总线交换数据,让系统内存与CPU 进行沟通。 当前具有代表性的多核 CPU 产品(1) 第一个商用的多核 CPU 是 2001 年 IBM 推出的双核 RISC 处理器Power 4(2) 20
8、04 年 IBM 又推出后继产品 Power5,并在双核的基础上引入多线程技术。同时,HP 也推出多核 CPU 产品 PARISC8800 SUN 也发布双核产品 UltraSPARC IV。(3) 2005 年,多核 CPU 得到全面发展,AMD 迅速推出面向服务器、支持 x86 指令集的双核心 Opteron 处理器。 而 Intel 则推出面向桌面系统的双核 CPU Pentium D 及 Pentium Extreme Edition。另外,IBM 在超级计算机系统 BlueGeneL 中使用的 CPU 也是一种双核 CPU,与索尼和东芝联合推 出的 Cell 处理器具备多达 9 个核
9、心。(4) 2006 年 1 月 Intel 发布了首款双核移动处理器 Core Duo,这一全新的处理器为笔记本性能带来了很大进步。继这次成功之后,Intel 在 2006 年夏季同时发布了 Core 2 Duo 桌面(Conroe )和移动(Merom )处理器。(5) 2008 年 11 月 17 日 , 推 出 64 位 四 核 心 CPU Core i7 , 沿 用 x86-64 指令 集 , 并 以 Intel Nehalem 微 架 构 为 基 础 , 取 代 Intel Core 2 系 列 处 理 器 。(6)20010 年, 3 月 17 日,英特尔正式发布了采用 32nm
10、 工艺的新一代Nehalem 微构架双路服务器处 理器至强六核服务器 CPU 5600 家族,代号“Westmere-EP”。5、多核技术带来的挑战毫无疑问,多核给我们提供了更经济的计算能力。但是,这种能力能否善加利用还要取决于软件。 如果不针对多核进行软件开发,不仅多核提供的强大计算能力得不到利用,相反还有可能不如单核 CPU 好用。 “从某种程度上说,对于软件开发者而言,CPU 主频提升就像是免费的午餐,此前所有的程序很自然地会从主频的提升中受益,而如今多核出现了,这种免费的午餐没有了。我们必须针对多核重新进行软件设计。 ” 多核程序带来的挑战(1) 程序是否具备扩展性(2) 程序能否更精
11、确(3) 产品是否易于编程和维护(4) 并行开发模式a.打破串行的编程过程 “一步一步 ”的模式b.首先要进行分析和拆解c.然后才能进行程序的编写(5) 程序设计并行规划为双核,四核、八核、十六核等更多核芯规模开发(6) 针对多核的开发过程与传统的开发模式的不同需要性能优化工具多核带来的软件困惑(1) 软件怎么利用多核尚未解决a.为了竞争,硬件推进太急躁b.软件还未准备好(2) 操作系统a.目前尚无一个操作系统支持多核!b.目前多核操作系统实际上是多处理器操作系统,把多核当作多处理器看待,不是为多核定制的。c.虚拟化技术也是一种解决方案,把多核虚拟为单核,但是有性能牺牲。(3) 应用软件a.计
12、算型软件,容易并行,可以支持多核。b.信息处理软件,一般都是串行的,很难利用多核。6、多核平台下的并行开发 多核软件开发总体要求(1) 架构方面:提升软件并行性算法级(使用并行算法、使用 OpenMP 编程)任务级(流水线、多实例)合理规划资源分配(中断资源分配、处理器分配)(2) 编程方面:选用适当的同步手段控制锁粒度充分认识多核带来的程序并发性提高(同时多任务运行、关中断将不确保安全的同步)(3) 下层支撑平台提供支持:多种类型同步手段(spinLock,读写锁、全局中断锁)快速核间通讯手段(IPI 机制)并发任务管理,二级调度任务间的同步性并行设计的方法(1) 数据并行性 :有不相关的任
13、务对数据集的不同元素进行相同的操作,我们称这种数据相关表现了。(2) 功能并行性:有不相关的任务对数据集的不同元素进行不同的操作。(3) 流水线:在处理单个问题上不存在并行性,但如果需要处理多个问题,且每个问题可以分为几个阶段,那么就能支持与阶段数相同的并行性。并行程序设计思想目前比较流行的三种:(1) 扩张编译器开发并行化编译器,使其能够发现和表达现有串行语言程序中的并行性,例如 Intel C+ Compiler 就有自动并行循环和向量化数据操作的功能。这种把并行化的工作留给编译器的方法虽然降低了编写并行程序的成本,但因为循环和分枝等控制语句的复杂组合,编译器不能识别相当多的可并行代码而错
14、误地编译成了串行版本。(2) 扩展串行编程语言这是当前最为流行的方式,通过增加函数调用或者编译指令来表示低层语言以获取并行程序。用户能够创建和结束并行进程或线程,并提供同步与通信的功能函数等。这方面较为杰出的库有 MPI 和 OpenMP 等;在解释型脚本阵营,ParallelPython 也吸引了不少粉丝。(3) 创造一个并行语言虽然这是一个疯狂的想法,但事实上近几十年来一直有人在做这样的事情,如 HPF(High Performance Fortran)是 Fortran90 的扩展,用多种方式支持数据并行程序。7、旧程序如何应对多核环境(1) 精确地评估旧程序是否需要作出修改。如 Fox
15、mail、Windows 优化大师之类的桌面软件原本就只占用极少的CPU 资源,那么就不需要针对多核改写。而作为网站服务器端运行的 CGI程序基本上都是以多进程或多线程的方式来响应请求的,将可以平滑地充分利用多核系统的性能优势,一般而言也不需要针对多核改写。(2) 就重避轻 。一个应用程序,性能瓶颈通常都只有几个或者一两个甚至这些瓶颈相关的功能还是用户很少使用的。那么为了这些少量需求而对已有程序进行伤筯动骨的改造是不合适的,更不宜以多线程的架构重写整个应用。如果应用程序是使用 C/C+/Fortran 编写的,那使用 OpenMP 使性能瓶颈部分的代码并行化是相当好的选择。如果代码是使用 C#/java/Python 等脚本编写的,可能需要多花一些功夫来完成同样的工作。(3) 不追逐潮流。一句话,如果旧的应用程序没有性能瓶颈,那就不要作任何改动,否则只会引火烧身。像暴风影音、千千静听这一类多媒体播放软件,针对多核优化是可做可不做的事情;但如果做了,用户可能反而会觉得太占用资源,因为换了双核系统还觉得播放视频/音频的时候做其它事情仍然有点 “卡”,那就不如不做。