36
操操操 操操操操操操操操操操操 Yanshan Universi ty 8.1 操操操操 8.2 操操操 操操操操操操操操操操操 8.3 操操操 操操操操操操操操操 操操操 操操操操操

8.1 多核简介 8.2 操作系统对多核处理器的支持方法 8.3 操作系统基于多核平台的优化

Embed Size (px)

DESCRIPTION

第八章 多核操作系统. 8.1 多核简介 8.2 操作系统对多核处理器的支持方法 8.3 操作系统基于多核平台的优化. 8.1 多核简介. 8.1.1 概述 多内核 是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。 多核处理器 是单枚芯片(也称为“硅核”),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。 - PowerPoint PPT Presentation

Citation preview

Page 1: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University8.1 多核简介

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

8.3 操作系统基于多核平台的优化

第八章 多核操作系统

Page 2: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.1 多核简介8.1.1 概述 多内核是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。 多核处理器是单枚芯片(也称为“硅核”),能够直接插入单一的处理器插槽中,但操作系统会利用所有相关的资源,将它的每个执行内核作为分立的逻辑处理器。通过在两个执行内核之间划分任务,多核处理器可在特定的时钟周期内执行更多任务。 多核架构能够使目前的软件更出色地运行,并创建一个促进未来的软件编写更趋完善的架构。随着向多核处理器的移植,已有软件无需被修改就可支持多核平台。操作系统专为充分利用多个处理器而设计,且无需修改就可运行。为了充分利用多核技术,应用开发人员需要在程序设计中融入更多思路,但设计流程与目前对称多处理( SMP )系统的设计流程相同,并且现有的单线程应用也将继续运行。 多核技术能够使服务器并行处理任务,而在以前,这可能需要使用多个处理器,多核系统更易于扩充,并且能够在更纤巧的外形中融入更强大的处理性能,这种外形所用的功耗更低、计算功耗产生的热量更少。多核技术是处理器发展的必然。

Page 3: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.1.2 发展多核的原因 功耗问题限制了单核处理器不断提高性能的发展途径。 作为计算机核心的处理器就是将输入的数字化的数据和信息,进行加工和处理,然后将结果输出。假定计算机的其他子系统不存在瓶颈的话,那么影响计算机性能高低的核心部件就是处理器。反映在指令上就是处理器执行指令的效率。 处理器性能 = 主频 * IPC 从上面的公式可以看出,衡量处理器性能的主要指标是每个时钟周期内可以执行的指令数( IPC: Instruction Per Clock )和处理器的主频。 提高处理器性能就是两个途径:提高主频和提高每个时钟周期内执行的指令数( IPC )。处理器微架构的变化可以改变 IPC ,效率更高的微架构可以提高 IPC 从而提高处理器的性能。但是,对于同一代的架构,改良架构来提高 IPC 的幅度是非常有限的,所以在单核处理器时代通过提高处理器的主频来提高性能就成了唯一的手段。 不幸的是,给处理器提高主频不是没有止境的,从下面的推导中可以看出,处理器的功耗和处理器内部的电流、电压的平方和主频成正比,而主频和电压成正比。 因为:“处理器功耗正比于电流 * 电压 * 电压 * 主频”,“主频正比于电压”,所以:“处理器功耗正比于主频的三次方 ”。

Page 4: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

如果通过提高主频来提高处理器的性能,就会使处理器的功耗以指数(三次方)而非线性(一次方)的速度急剧上升,很快就会触及所谓的“频率的墙”( frequency wall )。过快的能耗上升,使得业界的多数厂商寻找另外一个提高处理器性能的因子,提高 IPC 。 提高 IPC 可以通过提高指令执行的并行度来实现,而提高并行度有两种途径:一是提高处理器微架构的并行度;二是采用多核架构。 在采用同样的微架构的情况下,为了达到处理器 IPC 的目的,我们可以采用多核的方法,同时有效地控制功耗的急剧上升。 因为:“处理器功耗正比于电流 * 电压 * 电压 * 主频”,“ IPC

正比于电流”,所以:“处理器功耗正比于 IPC” 。 由单核处理器增加到双核处理器,如果主频不变的话, IPC 理论上可以提高一倍,功耗理论上也就最多提高一倍,因为功耗的增加是线性的。而实际情况是,双核处理器性能达到单核处理器同等性能的时候,前者的主频可以更低,因此功耗的下降也是指数方(三次方)下降的。反映到产品中就是双核处理器的起跳主频可以比单核处理器更低,性能更好。

Page 5: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

由此可见,将来处理器发展的趋势是:为了达到更高的性能,在采用相同微架构的情况下,可以增加处理器的内核数量同时维持较低的主频。这样设计的效果是,更多的并行提高 IPC ,较低的主频有效地控制了功耗的上升。 处理器实际性能是处理器在每个时钟周期内所能处理器指令数的总量,因此增加一个内核,理论上处理器每个时钟周期内可执行的单元数将增加一倍。原因很简单,因为它可以并行的执行指令,含有几个内核,单位时间可以执行的指令数量上限就会增加几倍。而在芯片内部多嵌入几个内核的难度要远远比加大内核的集成度要简单很多。于是,多核就能够在不提高生产难度的前提下,用多个低频率核心产生超过高频率单核心的处理效能,特别是服务器产品需要面对大量并行数据,多核心分配任务更能够提高工作效率。可以看作一种多处理器协作的微缩形式,并且达到更加的性能价格比,一套系统达到多套系统的性能。

Page 6: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.1.3 多核的出现是技术发展的必然性1. 晶体管时代即将到来 根据摩尔定律,微处理器的速度以及单片集成度每 18 个月就会翻一番。经过发展,通用微处理器的主频已经突破了 4GHz ,数据宽度也达到 64位。在制造工艺方面也同样以惊人的速度在发展, 0.13um 工艺的微处理器已经批量生产, 90nm 工艺以下的下一代微处理器也已问世。照此下去,到 2010年左右,芯片上集成的晶体管数目预计超过 10亿个。因此,体系结构的研究又遇到新的问题:如何有效地利用数目众多的晶体管?国际上针对这个问题的研究方兴未艾。多核通过在一个芯片上集成多个简单的处理器核充分利用这些晶体管资源,发挥其最大的能效。 2 .门延迟逐渐缩短,而全局连线延迟却不断加长 随着 VLSI 工艺技术的发展,晶体管特征尺寸不断缩小,使得晶体管门延迟不断减少,但互连线延迟却不断变大。当芯片的制造工艺达到 0.18 微米甚至更小时,线延迟已经超过门延迟,成为限制电路性能提高的主要因素。在这种情况下,由于 CMP (单芯片多处理器)的分布式结构中全局信号较少,与集中式结构的超标量处理器结构相比,在克服线延迟影响方面更具优势。

Page 7: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

3 .符合 Pollack 规则 按照 Pollack规则,处理器性能的提升与其复杂性的平方根成正比。 如果一个处理器的硬件逻辑提高一倍,至多能提高性能 40%,而如果采用两个简单的处理器构成一个相同硬件规模的双核处理器,则可以获得 70%~ 80%的性能提升。同时在面积上也同比缩小。 4 .能耗不断增长 随着工艺技术的发展和芯片复杂性的增加,芯片的发热现象日益突出。多核处理器里单个核的速度较慢,处理器消耗较少的能量,产生较少的热量。同时,原来单核处理器里增加的晶体管可用于增加多核处理器的核。在满足性能要求的基础上,多核处理器通过关闭(或降频)一些处理器等低功耗技术,可以有效地降低能耗。 5 .设计成本的考虑 随着处理器结构复杂性的不断提高,和人力成本的不断攀升,设计成本随时间呈线性甚至超线性的增长。多核处理器通过处理器 IP等的复用,可以极大降低设计的成本。同时模块的验证成本也显著下降。 6 .体系结构发展的必然 超标量( Superscalar )结构和超长指令字( VLIW )结构在高性能微处理器中被广泛采用。但是它们的发展都遇到了难以逾越的障碍。 Superscalar 结构使用多个功能部件同时执行多条指令,实现指令级的并行( Instruction-Level Parallelism , ILP )。但其控制逻辑复杂,实现困难,研究表明, Superscalar 结构的 ILP 一般不超过 8 。 VLIW 结构使用多个相同功能部件执行一条超长的指令,但也有两大问题:编译技术支持和二进制兼容问题。

Page 8: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.1.4 单芯片多处理器与多线程处理器 未来的主流应用需要处理器具备同时执行更多条指令的能力,但是从单一线程中已经不太可能提取更多的并行性,主要有以下两个方面的原因:一是不断增加的芯片面积提高了生产成本;二是设计和验证所花费的时间变得更长。在目前的处理器结构上,更复杂化的设计也只能得到有限的性能提高。 对单一控制线程的依赖限制了多数应用可提取的并行性,而主流商业应用,一般都具有较高的线程级并行性。为此研究人员提出了两种新型体系结构 : 单芯片多处理器( CMP )与同时多线程处理器( Simultaneous Multithreading ,SMT ),这两种体系结构可以充分利用这些应用的指令级并行性和线程级并行性,从而显著提高了这些应用的性能。 从体系结构的角度看, SMT比 CMP 对处理器资源利用率要高,在克服线延迟影响方面更具优势。 CMP 相对 SMT 的最大优势还在于其模块化设计的简洁性。复制简单设计非常容易,指令调度也更加简单。同时 SMT 中多个线程对共享资源的争用也会影响其性能,而 CMP 对共享资源的争用要少得多,因此当应用的线程级并行性较高时, CMP 性能一般要优于 SMT 。此外在设计上,更短的芯片连线使 CMP比长导线集中式设计的 SMT 更容易提高芯片的运行频率,从而在一定程度上起到性能优化的效果 。

Page 9: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.1.5 从多处理器到多核 为了更清楚地理解多操作系统、多核与虚拟化趋势,需回到多处理器系统和多核的关系上。多处理器离多核的应用只有一步之遥。不过,多核与多处理器也有不少区别,其中有一些挑战你必须面对。如多处理器系统中的软件并不能直接拿到多核系统中运行。 在采用多核技术的时候,操作系统管理内核的基本方式有两种:第一种是对称多处理( SMP ),这是由一个操作系统来控制多个内核。只要有一个内核空闲可用,操作系统就在线程等待队列中分配下一个线程给这个空闲内核来运行。第二种是非对称多处理( AMP ),每个内核上都运行各自的操作系统。 多核系统并不是直接把多个芯片的多处理器浓缩到单一芯片之中这么简单。实际上,多核系统和多处理器系统之间存在着许多重要的区别,导致不能把多处理器系统上的软件直接移植到多核系统上来。 多处理器系统和多核系统的主要区别之一就是,在多处理器系统中, CPU之间的界线是比较清晰的。在典型的多处理器情况下,多个 CPU 通过总线连接起来,即便是共享外部存储器,这些 CPU基本上都是独立运行的。在多核系统中,情况就有所不同。不论采用何种架构,在多核系统中被共享的东西非常多。 运行在多处理器系统中的程序是多线程的程序。这种程序必须是可重入的,即程序代码能够被重叠地启动并且同时运行在多个上下文中,这些运行上下文构成多个线程。

Page 10: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.1.6 多核微处理器1 )英特尔酷睿 2 双核处理 英特尔率先揭开了多核计算时代的帷幕。酷睿 2双核处理器的价值在于,它缔造了一个范围涵盖核心硬件生产商、周边硬件制造商、软件开发商、整机厂商乃至系统集成商等产业参与者的全新产业链。对于用户来说,英特尔酷睿 2 双核处理器堪称有史以来最令人兴奋的个人电脑核心引擎。根据多个独立调查组织提供的数据显示,该处理器在各种服务器、台式机和游戏基准测试中遥遥领先于其它处理器产品,器能够满足用户不断升级的多元需求。

2 )英特尔酷睿 2 四核处理器 从双核到四核,再到集成 80 计算核心、性能堪比超级计算机的原型处理器,英特尔对多内核技术的不懈探索总能够挺立于技术和产业的最前沿。 已上市的酷睿 2四核处理器为通用服务器和工作站提供了非凡的速度与响应能力—受益领域还包括追求绝对性能的数字媒体创建、高端游戏以及其它市场。45纳米四核时代的普及,进入 2009年,处理器已经由双核升级到四核时代。

Page 11: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

3 )未来的多核微处理器 作为多内核技术的先导者,英特尔于 2007 年初煅制出了内含 8

0 内核的可编程处理器,它提供了足以与超级计算机匹敌的强劲性能,且功耗仅 62瓦,较大多数家用电器更低。毫无疑问,凝聚了英特尔深厚技术积淀、创新前瞻力及精湛制程工艺的 80 内核处理器预示了计算 / 通信技术领域未来的发展趋向—它还证明,在可以预见的未来,摩尔定律定能继续驱动整个 IT 产业高速发展。 多核时代到来 Intel 发布 6 核至强处理器, 2008年 09月,英特尔终于按计划发布了 Xeon (至强) 7400 处理器。该处理器开发代号为“ Dunnington” ,是英特尔首颗基于 X86 架构的六核处理器,主要面向注重多线程运算的高端市场。英特尔表示, Xeon 7400 在虚拟机和数据库应用方面进行了很多优化。其二级缓存高 16MB ,每个核心都支持虚拟化技术,其虚拟化性能跟以往产品相比提高达 50

% 。

Page 12: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

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

8.2.1 并行计算机访存模型

8.2.2 调度 8.2.3 中断 8.2.4 存储管理 8.2.5 虚拟化技术

Page 13: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

UMA(均匀存储访问)模型 物理存储器被所有节点共享; 所有节点访问任意存储单元的时间相同; 发生访存竞争时,仲裁策略平等对待每个节点,即每个节点机会均等;

各节点的 CPU 可带有局部私有高速缓存; 外围 I/O 设备也可以共享,且每个节点有平等的访问权利。

P1 P2 Pn

I / O SM1 SMm

共享存储器

处理器

( )系统互连

总线 交叉开关 多级, , 网络

当前对称多处理器共享存储并行计算机 SMP均采用这种模型(一台机器上多个 CPU )

Page 14: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

NUMA(非均匀存储访问)模型 物理存储器被所有节点共享,任意节点可以直接访问任意内存

模块; 节点访问内存模块的速度不同,访问本地存储模块的速度一般

是访问其它节点内存模块的 3 倍以上; 发生访存竞争时,仲裁策略对节点可能是不等价的; 各节点的 CPU 可带有局部私有高速缓存 ( cache ); 外围 I/O 设备也可以共享,但对各节点是不等价的。

CPU0

cache

CPU1

cache

hub mem

router

节点0

CPU0

cache

CPU1

cache

hub mem

router

节点n

… …

互联网络

SGI Origin 系列并行计算机,采用基于 cache 目录一致性的非均匀访存模型( CC- NUMA ),设计了专门的硬件,保证在任意时刻各节点 cache 中数据与全局内存数据的一致性。

Page 15: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

COMA(全高速缓存存储访问)模型 各处理器节点中没有存储层次结构,全部高速缓存组成了全局地址空间;

利用分布的高速缓存目录 D 进行远程高速缓存的访问; COMA 中的高速缓存容量一般都大于 2 级高速缓存容量 使用 COMA 时,数据开始时可以任意分配,因为在运行时它最终会被迁移到要用到它的地方。

互连网络

D

C

P

D

C

P

D

C

P

Page 16: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

NORMA(非远程存储访问)模型 所有存储器都是私有的,仅能由其本地处理器访问; 基于消息传递的并行计算机,每个节点都是由一台处理器、本

地存储器和 I/O 外设组成的自治计算机。 绝大多数 NORMA 都不支持远程存储器的访问; 在 DSM (分布式共享内存)中, NORMA 就消失了。

消息传递互连网络(网络,环网,超立方,

)立方环等

P M

P M

M P

M P

M

P

M

P

M

P

P

M

P

M

P

M

. . .

. . .

...

...

Page 17: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

多核操作系统中进程的分配与调度 进程的分配将进程分配到合理的物理核上,因

为不同的核在共享性和历史运行情况下都是不同的。

有的物理核能够共享二级 cache ,而有的却是独立的。

进程间数据共享- > 分配给有共享二级 cache的核,提升命中率。

Page 18: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

多核下操作系统调度的研究热点 程序的并行研究; 多进程的时间相关性研究; 任务的分配与调度; 缓存的错误共享; 一致性访问研究; 进程间通信; 多处理器核内部资源竞争;

Page 19: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

任务的分配 单核:只有一个核的资源可以使用- > 不存在

核的任务分配问题; 多核:多个进程如何在各个核中分配?

均匀分配?一起分配到一个核?按照一定的算法分配?

受底层系统结构影响 SMP 架构- >只共享内存 CMP 架构- > 也会共享二级缓存

Page 20: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

任务的调度 各个核一致的调度算法 各个核独立的调度算法 进程是否一直运行在同一个核?还是迁移? 怎样调度实时任务和普通任务(优先级不同)? 系统是否要进行负载均衡?

调度策略(单核)- >多核呢? 先来先服务 FCFS 最短作业优先 SJF 优先级调度 轮转法 RR 多级队列调度

Page 21: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

Linux 2.6内核的调度算法 时间复杂度 O(1) (1) 系统为每个处理器都维护一个单独的就绪队列

活动的就绪队列:包含当前时间片还有剩余的就绪任务 扩展的就绪队列:包含那些时间片已经用完的,重新分配时间

片的就绪任务。 (2) 任务的调度是基于优先级调度的

每个处理器上的任务共有 140 个优先级,每个就绪任务的优先级通过散列函数直接映射到处理器的位图数据结构上,通过位图的 find-first-bit 可以找到优先级最高的执行

(3)活动就绪队列和扩展就绪队列通过指针转换 (4)负载均衡

一个 core 的任务结束,转而处理其他最忙 core 上的任务若所有 core都有任务,则每 200ms检查是否均衡

Page 22: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

多核调度算法 对任务的分配进行优化。使同一应用程序的任务尽量在一个核上执行,以便达到有共享数据的任务尽量在一个核上面运行,而共享数据量少或者没有的任务在不同核上进行。

对任务的共享数据优化。由于 CMP 体系结构共享二级缓存,可以考虑改变任务在内存中的数据分布,使任务在执行时尽量增加二级缓存的命中率。

对任务的负载均衡优化。当任务在调度时,出现了负载不均衡,考虑将较忙处理器中与其他任务最不相关的任务迁移,以达到数据的冲突量小。

Page 23: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

高级编程中断控制器 APIC 是基于中断控制器分散在两个基础功能单元—本地单元以及 I/O 单元的分布式体系结构。在多核系统中,多个本地和 I/O APIC 单元能够作为一个整体通过 ICC 总线互相操作。 APIC 发挥的功能有:接受来自处理器中断引脚中的内部或外部 I/O APIC 的中断,然后将这些中断发送给处理器核处理。

在多核处理器系统中,接收发送核内中断消息。 多核体系处理器中,必须将中断处理分发给一组核处理。当系统中有多个核在并行执行时,必须有一个能够接收到的中断分发给能够提供服务的核的机制。

Page 24: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

APIC通过中断命令寄存器( ICR)来接收和发送IPI消息, ICR提供如下功能: 发送中断到其他处理器核 允许处理器核转发收到的其不服务的中断到其他处理

器核来服务 给处理器核自身发送中断(一次自中断) 传递特殊 IPI (核内中断)到其他处理器核,比如启动

IPI消息 IPI消息可以用来启动处理器核或者分配工作任务到不同的处

理器核 IPI消息能够用来在系统时或者系统执行的广泛功能单元中分

发中断到不同的处理器核。

Page 25: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

多核高级可编程中断控制器 APIC

Page 26: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

构建并行机系统的不同存储结构

MIMD

多计算机( )多地址空间非共享存储器

( I BM SP2, DEC TruCl usterTandem Hymal aya, HP,

Mi crosof t Wol fpack, etc)

NORMA

UMA

NUMA

Cluster

MPP( I ntel TFLOPS)紧耦合

PVP(Cray T90)

SMP( I ntel SHV, SunFi re, DEC 8400,

SGI PowerChal l enge, I BMR60, etc. )

COMA (KSR-1, DDM)

CC-NUMA(Stanford Dash,

SGI Ori gi n 2000, Sequent NUMA-Q,HP/ Convex Exempl ar)

NCC-NUMA (Cray T3E)

DSM(TreadMarks,Wi nd Tunnel ,I VY, Shri mp,

etc. )

( )

松散耦合( )

中央存储器

分布存储器

多处理机单地址共享

()

空间存储器

Page 27: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

多核下存储管理相对变化较少,主要改进 为了充分使用多核的运算能力,很多库函数都

要做成非阻塞调用方式的,但这样会导致数据冲突或不同步的问题,所以必须保证数据同步机制。

事务内存管理机制:能够协调程序,在并行运行的同时,保证数据的同步。

为了提供内存分配的效率,可以使用多线程内存分配,这样可以提高效率,降低 cache冲突,特别有利于空间核时间关联性强的内存操作。

Page 28: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

虚拟化技术:是指对计算机资源进行的抽象,是在系统、应用或用户与资源进行交互时,对计算机资源的物理特性进行隐藏的一种技术。

分类: ( 1 )平台虚拟化:由指定硬件平台上的宿主软件来实行,为其他软件提供一个模拟的计算机环境。其他软件通常都是完整的操作系统,就像安装在独立的硬件平台上一样运行。

( 2 )资源虚拟化:它是被扩展到具体系统资源的虚拟化,它涉及资源的合并、划分以及简化的模拟等作用。

Page 29: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

平台虚拟化—模拟模拟:虚拟机模拟完成的硬件,允许针对

完全不同的 CPU 的未经修改的操作系统直接运行。

模拟的实现需要广泛的技术,从状态机到全虚拟平台的动态编译。

这种方法长期以来被用来在新处理器可用之前对软件进行开发。

Virtual PC 、 QEMU等

Page 30: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

平台虚拟化 原始虚拟和全虚拟

虚拟机模拟足够的硬件来保证未修改的为相同 CPU 设计的操作系统独立运行。

VMware 、 Win4BSD等 部分虚拟

虚拟机模拟多个但并非所有底层硬件环境,特别是地址空间 这样的环境支持资源共享和进程独立,但是不允许独立的客体操

作系统实例 Windows 、 Linux等

类虚拟 操作系统级虚拟 应用程序虚拟

Page 31: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

资源虚拟化 针对平台虚拟化到具体系统资源的虚拟化的扩展;涉及资源的合并、划分以及简化的模拟

合并单个资源形成更大的资源或者资源地 RAID :多个磁盘- > 大的逻辑磁盘 物理储存资源- > 存储池

计算机集群,网格计算和虚拟服务器使用上述技术将多个具体计算机合并成大型的计算机。

分区是对单一资源划分成同种形式更易于管理的资源(磁盘空间、网络带宽等)

封装通过创建简化的接口来隐藏资源的复杂性

Page 32: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.3 操作系统基于多核平台的优化 8.3 1. 多核多线程技术的发展 1 )内存与处理器速度的差距导致 cpu浪费时间等待访存获取数据,两种基本的方法可以从物理上进行一定的改进:增大缓存;提高时钟频率。但是,缓存成本较大,在物理上也有一定限制;时频的提高,可以在相同时间完成更多的操作,但随之也带来问题:程序间的相关性和延迟的影响随之增加。2 )于是,人们想到,不只有突破物理上的限制来提高性能,在空间和时间上并行,增加吞吐量也是一种途径。因为虽然用户最关心的是交互性程序的响应时间,管理者关心单位时间的任务完成量;但最终都是在最短时间内完成最多任务。 既然原来的瓶颈在于访问时处理器需阻塞等待而浪费硬件资源,那么可以让 cpu 在这个延迟时间内干其它的事,譬如从其它的指令流读取指令运行已经准备就绪的进程或线程。

Page 33: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.3.2 多核多线程与传统程序运行的不同带来的问题 1) 传统系统运行的程序只需很少的改变便可以运行在 cmt 系统中,但不可避免的某些线程会影响到另外线程的执行,这该如何处理?2) 负载平衡与热缓存有时矛盾,如何处理?比如为了减少资源的争用,将争用少的放到一个核,导致这个核负载大。3) 进程与其包含的线程的调度分别在什么时候,两者有何关系?4) 多核的调度与核内多线程的调度分别配合?先将任务调到核,再在核内调度个线程还是怎样?5) 如果任务很少,是只让部分 cpu 工作,避免调度分发带来的复杂冗余的工作,还是依旧负载平衡?

Page 34: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.3 3. solaris对多核的支持 1 ) solaris 中线程的体系结构 a. 分为用户级和内核级;用户级也可以在核内或核外运行。但是核外需要上下文切换开销很大;核内更有利于并发使用 cpu ,同时成为多个用户线程的调度。 b. 每个进程需要一个线程作为其指令执行体,线程分配到各个 cpu

运行。而每个用户级线程必须绑定到一个 LWP , LWP再将它关联到一个内核线程。 LWP 并不一定是进程创建时就建立,而是在虚要使用时再被请求创建。这个用户级线程可以作为调度的执行实体,有独立的优先级调度,这与内核的优先级调度是分离的,并且对内核不可见。 LWP 存在于内核里,记录着线程的状态,但内核级线程并不一定有LWP ,如服务线程。 c. 用户级线程有线程库中的每个进程的调度线程调度管理。每个线程存在于他所属的进程链表,也存在于内核级线程链表。内核级线程决定线程运行在哪个 cpu 上,自己则被调度什么时候执行。

Page 35: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

2 ) solaris采用调度等级( classes )定义 内核调度和执行进程的规则,总共有 6 个 classes ,可以在同一核中调度,可以自适应。每个 classes 有一个列表,用来寻找线程。3 )负载平衡( load balancing ) 为了让各个核之间少无用的调度,每个核有自己的调度队列,其线程可以重赋值时间片大小,用完后放回队列。内核可以抢占其它时间片,可以同时多个调度类,但是每个决定要调度的地方必须有一个间接函数调用调度类相关代码。有一种内核抽象,代表逻辑 cpi ,共享物理资源如 cache 、 sockets 接口。4 )热缓存机制(充分利用缓存里已经存在的数据) 可公用线程的线程放在同一逻辑 cpu;可公用缓存的线程也放在同一逻辑 cpu 。

Page 36: 8.1  多核简介 8.2  操作系统对多核处理器的支持方法 8.3  操作系统基于多核平台的优化

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

anshan University

8.3 4. Linux2.6 及以上的调度 对 SMP的支持,负载平衡:创建任务时,被放到一个给定的逻辑 cpu运行对列,但并不知道这个任务运行的时间长短,因此开始的分配可能不理想,于是任务可以重新分发。于是将负载较重的 cpu中的可执行进程或线程重新调度到负载较轻的 cpu,即使现负载平衡。 事实上,每隔 200ms,处理器就会检查 cpu的负载是否均衡,不是,则重分配一次。但是,显然,这样就带来了另外一个负面影响,即新任务对 cpu 冷缓存,需重新加载数据。 热缓存,每个 cpu一个运行队列,各个任务与 cpu 密切相关,可以更好的利用热缓存。即任务在 cpu上运行所需相关的数据都被放到这个 cpu的缓存,可直接读取;而缓存是本地的存储器(片上),进而提高了访存速度,减少延迟。