Presentation is loading. Please wait.

Presentation is loading. Please wait.

多核结构与程序设计 杨全胜 http://www.njyangqs.com/ 东南大学成贤学院计算机系.

Similar presentations


Presentation on theme: "多核结构与程序设计 杨全胜 http://www.njyangqs.com/ 东南大学成贤学院计算机系."— Presentation transcript:

1 多核结构与程序设计 杨全胜 东南大学成贤学院计算机系

2 课程内容及要求 多核结构介绍 并行计算基础 进程、线程和并行程序设计
要求掌握以Intel为代表的主流多核处理器的体系结构及操作系统的支持,了解多核带来的挑战。 并行计算基础 要求掌握并行编程模型,并行程序设计相关的问题,程序性能的优化方法,理解并行计算机存储结构,了解弗林经典分类。 进程、线程和并行程序设计 要求掌握线程设计、互斥与同步的概念和相关内容以及并行程序设计中的常见问题,理解进程和线程的概念。

3 课程内容及要求 Windows平台中的多线程程序设计 Windows 平台中的OpenMP编程技术 Intel多核程序设计与优化原理及工具
要求熟练掌握Windows Thread API以及如何解决Windows平台多核程序设计中同步与互斥问题 Windows 平台中的OpenMP编程技术 要求熟练掌握利用OpenMP进行并行程序设计的方法 Intel多核程序设计与优化原理及工具 要求熟练掌握Intel的C++ Compiler, VTune,MKL,Thread Checker,Thread Profiler的使用。

4 参考书

5 参考书

6 参考书

7 参考书

8 参考书

9 多核概述 内容 为什么我们需要多核? 什么是多核? 多核结构 Intel® Dual-core介绍 多核带来的挑战
操作系统对多核处理器的支持方法

10 为什么我们需要多核? 当计算机诞生的时候,程序是指令的串行序列。 上世纪六十年代, 并发技术让多个用户能够同时使用单个主机。
早期的个人计算机,操作系统是单用户操作系统每个时刻只能运行一个程序。

11 为什么我们需要多核? 目前 越来越多的任务需要同时执行 每个任务(应用程序)都变的越来越复杂 互联网应用变的无处不在
用户对高性能处理器的期待越来越大

12 为什么我们需要多核? 并行计算是解决高性能期待的最好办法 计算需求不断增加 基于硅的(串行)架构达到了处理限制的物理极限,又受制于:
可视化、分布式数据库、模拟仿真、科学预测(地震)、大型网络活动等。 基于硅的(串行)架构达到了处理限制的物理极限,又受制于: 光速 热力学 硬件上诸如流水线、超标量等技术带来的改进是有限的,而且我们还需要复杂的编译器才能利用这些新技术。 向量处理这类技术对某些特定的问题是有好处的。

13 为什么我们需要多核? 并行计算是解决高性能期待的最好办法 网络技术的重大进展铺平了基于网络的高效低价并行计算的道路。 并行计算
InifiBand总线 当前: 10,20Gb/s 节点到节点 30,60Gb/s 交换机到交换机 并行计算 是最好的克服单个处理器速度瓶颈的方法之一。 具有好的性价比的小型集群并行计算机 并行处理技术已经成熟并且已经商业化。

14 为什么我们需要多核? 微架构的演进 我们在这 超长指令字(VLIW) 同时多线程(SMT) 推测执行,分支预测 众核(Many core)
多核(Multi core) 流水线,无乱序 流水线,乱序 4位数据 32位数据 64位数据 VLIW超长指令字 SMT , Simultaneous multithreading 同时多线程 被Intel运用为超线程 CMP Chip multiprocessors,片上多核处理器,也指多核心 超标量 双核 片上多核处理器(CMP)

15 为什么我们需要多核? 如何提高处理器性能 交付性能= 频率 * 每时钟指令数(IPC) 提高主频是传统的做法,但会带来高热量。
提高每时钟指令数是又一种方法 流水线技术 超标量技术 多核技术

16 为什么我们需要多核? 多核的优势 更好的响应速度 更高的多线程处理能力 在主流应用中,并行会带来好处 增强用户在多任务环境中的体验

17 多核概述 内容 为什么我们需要多核? 什么是多核? 多核结构 Intel® Dual-core介绍 多核带来的挑战
操作系统对多核处理器的支持方法

18 什么是多核 并发和并行计算 并发: 对于软件来说是一种管理同时使用的共享资源的方法,是宏观同时,微观分时。
并行计算: 涉及到同时使用多个计算机或处理器来执行一个程序。理想的情况下,并行处理会让程序运行的很快,因为有很多的引擎(CPU或core)在运行它。即使单核处理器的机器也能通过网络联系其他的计算机来进行并行处理。

19 什么是多核 多核技术的演进 超线程技术 双核处理器 多核处理器 指令级并行 数据级并行 线程级并行 单核处理器

20 什么是多核 并行性 指令级并行(ILP) 在机器指令级上并行,突出各条指令之间的并行
处理器能重排序,流水线化指令的执行,将指令化作微操作,做主动的分支预测等。 指令级并行在过去的15年中使得处理器的速度快速提升。

21 什么是多核 并行性 数据级并行(DLP) 在多个数据项上完成相同类型的算法和逻辑操作。
典型的,执行单元宽度更宽(64位或者128位)处理32位的多媒体数据。 多媒体、科学计算 向量,SIMD

22 什么是多核 并行性 线程级并行 (TLP) 这是一种粗粒度的并行
服务器可以为每个客户创建一个独立的线程为其服务(Web服务器,数据库服务器) 一个计算机游戏可以在三个独立的线程中做AI,图形和物理仿真。 单核超标量处理器不能完全利用TLP。 多核结构是处理器发展的下一步:明确地使用TLP。 单核超标量不能完全利用TLP是因为它可能并没有为多个线程提供多个独立的执行环境

23 什么是多核 同时多线程 (SMT),Intel的超线程(HT) 允许多个独立的线程在相同的核上同时执行 在相同的核上交织着多个线程的执行
实例: 如果一个线程在等待浮点操作的完成,其他的线程可以利用整型计算单元。 同时多线程的处理器每个处理器(核)中有多个执行环境(如寄存器组,取指部件等),但共享一个执行引擎。

24 什么是多核 片上多核处理器(Chip Multi-Processor,CMP) 将多个计算内核集成在一个处理器芯片中,从而提高计算能力。
不同的核执行不同的线程(多指令),操作不同的存储部分(多数据)。 CPU核心数据共享与同步 总线共享Cache结构:每个CPU内核拥有共享的二级或三级Cache,用于保存比较常用的数据,并通过连接核心的总线进行通信。 基于片上互连的结构:每个CPU核心具有独立的处理单元和Cache,各个CPU核心通过交叉开关或片上网络等方式连接在一起。 通常核数小于8是多核,大于8称为众核

25 什么是多核 什么样的应用能从多核中获得好处? 数据库服务器 Web服务器 编译器 多媒体应用 科学应用, CAD/CAM
通常,利用线程级并行的应用程序

26 多核概述 内容 为什么我们需要多核? 什么是多核? 多核结构 Intel® Dual-core介绍 多核带来的挑战
操作系统对多核处理器的支持方法

27 多核结构 INTEL CORE DUO 一个封装中两个物理核 每个都有自己的执行引擎 每个有自己的L1 cache
32K 指令Cache和32K数据Cache 两个核共享L2 cache 2MB 8路组相联,每行64字节 10个时钟的延迟,写回策略

28 多核结构 AMD Opteron 分离的1MB L2 caches CPU0和CPU1 通过SRQ通信

29 多核结构

30 多核结构 SUN公司的UltraSPARC T1 8个CPU核 每个核能同时运行4个线程
所有的核通过高带宽(134.4GB/s)的交叉开关相连

31 多核结构 SUN公司 的UltraSPARC T2 8个CPU核 每个核能同时运行8个线程 更大的存储器容量 > 512GB以上

32 多核结构 IBM的Cell 1 PPE (Power Processor Element)
8 SPE (Synergistic Processor Element) Cell集成了2亿3400万个晶体管,它采用IBM的90纳米SOI、Low -K工艺制造,核心面积为221平方毫米,芯片规模与Intel即将发布的双核Pentium D相当,两者的制造成本处于同一条水平线上。在逻辑上,Cell处理器基于一个“Power处理单元(Power Processor Element,下面简称为PPE)”,它可以支持SMT虚拟多线程技术,同步执行两个不相干的线程。此外,Cell内部还拥有八个基于SIMD的协处理器(Synergistic Processor Element,以下简称SPE),简单点说,一枚Cell处理器内部整合了九颗独立的运算核心,可支持多达十条线程的同步运行。另外,Cell还整合了 XDR内存控制器,可配合25.6GBps带宽的内存系统,而它的前端总线也采用96位、6.4GHz频率的FlexIO并行总线(原名称为 “Redwood”,RAMBUS公司所开发),这也是有史以来速度最快的计算机总线。 PPE/SPE:针对“简单任务”而设计。PPE处理单元是Cell的控制与运算中枢,它应该是以IBM的Power 4处理器为基础进行设计的,可支持同步多线程技术。该处理单元内置了32KB一级缓存和512KB二级缓存,其规格与同出一脉的PowerPC 970处理器极其类似。而在Cell中,真正负责浮点运算的应该是八个SPE协处理器。图5所示是SPE的逻辑结构,SPE由4个负责浮点运算的处理单元、4个负责整数运算的处理单元、128bit×128结构的寄存器和256KB局部缓存构成,它实际上就是一个完整的运算核心。根据IBM所公布的资料,我们获悉SPE的流水线长度为18级,这一点与X86处理器也非常不同—流水线越长,处理器提升工作频率就越容易,反之就越困难。20级流水线的 Northwood Pentium 4止步于3.2GHz,31级流水线的Prescott核心也不过到达3.8GHz,而Cell以18级的短流水线却实现4GHz以上的高频运作。设计者对此作出详细的解释:X86处理器必须完成大而全的运算功能,运算逻辑往往被设计得非常复杂,这也导致其频率提升非常困难;而Cell在基础架构上执行简单化的计算思想,每一个复杂的任务都可以被分解为多个简单的基础任务,Cell中的SPE就专门针对这些基础任务所设计,这样,它就可以在保持高效的同时拥有简单得多的逻辑结构,既然逻辑构成简单,实现高频率运作就没有什么悬念。从这里也可看出,Cell与X86处理器最大的不同,还是在于它们对计算任务的不同理解。   尽管总线及寄存器都是128位结构,但SPE内的浮点单元和整数单元其实都只有32位,只是IBM通过4路并行运算来获得128bit SIMD的效果,从外部看来,SPE便相当于一个可执行128bit指令的处理单元。SPE内的浮点单元和整数单元各自拥有三条128bit宽度的输入总线和一条128bit宽度的输出总线,二者以全双工模式运作,数据输入/输出操作可同步进行。大家应该也发现这是一套不对等的方案,输入总线的带宽三倍于输出总线,原因在于计算所需的数据总量总是比运算的输出结果要多得多,总线宽度不同在设计上其实非常科学。而借助这两条总线,SPE协处理器的整数/浮点运算单元再与一组包含128个、宽度为128bit的寄存器阵列联结在一起,该寄存器阵列又通过一对全双工运作的、128bit总线同本地缓存(Local Store)相连—每个SPE协处理器都拥有256KB本地缓存,8个SPE就一共拥有2MB缓存,再加上PPE处理单元的512KB二级缓存,Cell 处理器总共拥有超过2.5MB容量的缓存单元,对于一款拥有超级计算效能的处理器来说,如此低的指标同样令人感到诧异。   分析完PPE与SPE协处理器的内部设计,我们再来看看它们是以何种方式组成Cell的。参见前面的图4,我们可以看到Cell内部有一条 768bit位宽的“EIB单元互联总线环(Element Interconnect BUS Ring,EIB Ring)”,它实际上是一个强大的内部总线控制逻辑—Cell内所有的功能单元都通过EIB总线环连接在一起,包括PPE、八个SPE、XDR内存控制器以及外部总线接口,它们所采用的无一例外都是全双工的128bit连接总线。若Cell工作在4GHz频率上,Cell内部的各个功能单元便都拥有 4GHz×128bit/Hz×2(全双工)÷8Byte/bit=128GBps带宽,这样的数字显然是非常可观的。   我们很容易能根据这些参数计算出Cell拥有的运算效能:每个SPE协处理器拥有4路并行的整数/浮点单元,一个时钟周期可执行两个运算周期(类似DDR效果、技术细节未明),每个运算周期又可执行4次32位浮点运算;每个Cell拥有8枚SPE协处理器,它的工作频率假设在4GHz,此时 Cell所具有的浮点效能就是2×4×8×4GHz=256Gigaflops,这应该很好理解。   与常规的双核处理器不同的是,Cell内的九个核心具有相当强的独立性。其中,PPE处理单元的任务是运行操作系统,这个任务对于一个结构类似 PowerPC 970、频率高达4GHz且可支持双线程运作的处理核心来说简直不费吹灰之力。但除了操作系统外,PPE不管任何的事情,应用程序相关的线程运算完全由 SPE协处理器运行。如图6所示,我们可以看到多个应用程序的线程会被平均散布到各个SPE中,整套系统负载均衡、设计得非常科学。而这种纵向结构的多核心设计同X86业界鼓吹的双核处理器截然不同,不论是Pentium D、Yonha还是AMD的双核心Athlon 64,它们的每个处理内核地位对等、每个核心都可以独立完成全部运算,所体现的是一种大而全的计算思想。由于芯片设计越来越复杂,它的工作频率就不得不走了下坡路,Intel当年执著于高频制胜的策略,结果落后于对手,业界普遍认为追求高频率的做法没有前途。而Cell处理器开辟出前所未有的新思路:每个处理内核专注于自己的任务,彼此相互依赖、相互协作,针对任务的简单化也使得每个内核都可以被设计得精简高效,工作频率也轻易达到X86处理器无法企及的高度,最终实现了媲美超级计算机的惊人性能。而在相互协作的同时,Cell内的各个SPE协处理器又保持着高度独立性,除了完成本机的计算任务外,SPE 还可以接受来自Cell计算网络中其他设备的计算请求,并执行相关的计算任务,所得结果再通过网络传输给任务发起者。换句话说,SPE协处理器可以在基于 Cell的计算网络中作平台无关的无缝漫游,网络上的任务可以被均匀分散到所有的Cell处理器上,并以最佳方式在最短的时间内完成。 在看完上述分析之后,你一定会以为Cell将是一个功耗大户,在看到详细资料之前,笔者也是抱这种态度。IBM所公布的资料再度让人大吃一惊,当工作频率为4GHz时,每个SPE协处理器的工作电压高于1.1V,但其功耗仅仅只有4瓦。若频率降到3GHz,工作电压只需要0.9V,此时其功耗只有 2瓦。如果将频率降低到2GHz,每个SPE的功耗仅有区区1瓦。那么,Cell内所有SPE协处理器的功耗总和最高也不过4瓦×8=32瓦。至于PPE 处理单元的核心部分,功耗水平也会控制在很低的水平,合乎逻辑的估计是Cell运算部分的功耗水平会在40瓦左右,即便加上缓存单元整体功耗也可控制在较好的水平上。回过头再来看看功耗将高达130瓦、性能不到Cell十分之一的Pentium D,大家会有什么感受?   考虑到实际应用,Cell的低功耗并不令人吃惊。Cell本来就是为PS3游戏机所设计,而游戏机体积狭小,对芯片的功耗指标颇为敏感,指标过高将给散热带来难题且会产生较高的噪音,这是玩家们绝对无法承受的。在2006年,IBM将采用更先进的65纳米技术来制造Cell,届时它将具有更加出色的功耗水平,而低功耗也为Cell的广泛应用奠定了良好的基础,将它用于嵌入式设备、笔记本电脑、桌面PC还是工作站系统中都没有任何问题,IBM今后所需要关心的,应该是操作系统和应用软件方面的资源配合。

33 多核结构 Tilera公司的Tile64 64核 RISC 19.2W 所有的核通过MESH链接
一个核500Gb/s, 所有核 32Tb/s. 每个核都能执行操作系统

34 多核结构 Intel的Larrabee 多个按序x86 CPU核被扩充为更宽的向量处理器 在片上的保持一致性的2级Cache

35 多核结构 Intel的Sandy Bridge

36 多核概述 内容 为什么我们需要多核? 什么是多核? 多核结构 Intel® Dual-core介绍 多核带来的挑战
操作系统对多核处理器的支持方法

37 Intel® Dual-core介绍

38 Intel® Dual-core介绍 新技术 宽位动态执行技术 高级数字媒体增强技术 智能内存访问技术 智能功效管理

39 Intel® Dual-core介绍 宽位动态执行 从取指开始 4+条指令/时钟 比其他的x86处理器提高>33% 指令转换成微操作

40 Intel® Dual-core介绍 宽位动态执行 4路寄存器重命名 4路微代码 4路重排序 更深的乱序存储缓冲

41 Power = Cdynamic* V * V * Frequency
Intel® Dual-core介绍 宽位动态执行 交付性能 = 频率 * 每时钟指令数 (IPC) Power = Cdynamic* V * V * Frequency 每条指令转换成更少的微操作允许在动态电容下降的情况下,提高IPC,因为更少的位就意味着更少的触发器。

42 Intel® Dual-core介绍 宏融合 将常见的x86指令对组合到一个单独的微代码中。 为宏融合而增强的算术逻辑单元 举例
Instruction Queue 宏融合 将常见的x86指令对组合到一个单独的微代码中。 CMP或TEST + 条件转移 (Jcc) 为宏融合而增强的算术逻辑单元 单个发射 - 效率 单周期执行 - 性能 举例 add ecx, 1 mov [mem1], ecx mov eax, [mem1] cmp eax, [mem2] jge label 此页举例没有宏融合的情况 5条语句需要2个周期完成 Cycle 1 add ecx, 1 dec0 mov [mem1], ecx dec1 for (unsigned int i=0; i<100000; i++) { } mov eax, [mem1] dec2 cmp eax, [mem2] dec3 Cycle 2 jge label dec0

43 Intel® Dual-core介绍 宏融合 将常见的x86指令对组合到一个单独的微代码中。 为宏融合而增强的算术逻辑单元 举例
CMP或TEST + 条件转移 (Jcc) 为宏融合而增强的算术逻辑单元 单个发射 - 效率 单周期执行 - 性能 举例 Instruction Queue add ecx, 1 mov [mem1], ecx mov eax, [mem1] cmp eax, [mem2] jae label 此页举例使用宏融合的情况 5条语句只需要1个周期完成,因为cmp指令和jae指令进行了宏融合 TEST 可以融合所有的条件跳转指令. CMP 只能融合下列条件跳转指令(Core中) JA (and its equivalent, JNBE) JAE (equivalent JNB) JE (JZ) JNA (JBE) JNAE (JC or JB) JNE (JNZ) In this case, CMP will be fused with JAE while not with JGE Cycle 1 add ecx, 1 dec0 for (unsigned int i=0; i<100000; i++) { } mov [mem1], ecx dec1 mov eax, [mem1] dec2 cmpjae eax, [mem2], label dec3

44 Intel® Dual-core介绍 宽位动态执行
微代码融合(Micro-op fusion)技术能在微代码执行前将译码自同一个x86指令的几个常见微代码对融合成一个微代码 u-ops of a Store “mov [mem1] ,edx” sta mem1 Sta是获取地址,std是存数据,他们是mov edx, [mem1]指令译码出来的两个微代码,由于它们基本上都是配对出现,所以将它们融合成一个微代码st 这两个微代码是有数据相关的,所以它们需要两个时钟周期分别进同一个流水线,但融合成一个微代码后只需要一次进流水线了 st [mem1] , edx std [mem1] ,edx 微代码融合有效地“加宽”了流水线

45 Intel® Dual-core介绍 Intel® 数字媒体增强 2x计算量/时钟 128位压缩数据乘法 128位压缩数据加法
128位压缩数据读取 128位压缩数据存储 CMPJCC的宏融合

46 Intel® Dual-core介绍 Intel®智能内存访问 目标 内存消歧技术 改善指令预取部件
WHEN – 确信数据能在最早的时候被取出并准备好 WHERE – 确信要使用的数据靠CPU最近 内存消歧技术 改善指令预取部件

47 Intel® Dual-core介绍 Intel®智能内存访问 没有内存消歧技术时Load4只能等待前面所有Store结束
内存消歧- 解决WHEN的问题 利用装载(load)数据指令和存储(store)数据指令之间的乱序执行来提高推测执行部件的效率,其原则是尽量将load指令提到它前面不冲突的store指令之前执行。 Memory Data W Store1 Y Load2 Y 内存消歧技术可以使需要用的数据被提前装载,以便能快速使用。一旦预测失败,内存消歧技术能检测到地址冲突,并重新装载数据,重新执行该Load操作,不过这种情况出现的概率很小。 Data Z Store3 W Load4 X Data Y 没有内存消歧技术时Load4只能等待前面所有Store结束 这样做究竟有什么好处? 下面来看有内存消歧技术的情况 先乱序 Data X

48 Intel® Dual-core介绍 Intel®智能内存访问 改进预取部件 – 解决WHERE的问题
确保被使用的数据已经位于最靠近能获得最小内存延迟的地方。 用独立于流水线的预测器预测将来要用的数据,提前取到Cache中 L1D是3 clk的延迟和1 clk的通过时间; L2是14和2 clk Cache失效延迟 L1 失效后去读 L2 ~ 10 cycles L2 失效, 存取存储器 ~300 cycles (server/FBD) L2 失效, 存取存储器 ~165 cycles (Desk/DDR2) Cache 带宽 Cache带宽 ~ 8.5 bytes/cycle 存储带宽 桌面系统 ~ 6 GB/sec/socket (linux) 服务器 ~3.5 GB/sec/socket 举例远近是由在该存储体上读取数据的带宽和延迟大小作为衡量标准的。

49 Intel® Dual-core介绍 高级智能Cache 共享的L2Cache是L1 caches的两倍带宽
AS 执行引擎 Local APIC L2 Cache 总线接口 前端总线 AS AS 执行引擎 执行引擎 Local APIC Local APIC 果Cache不是共享的,如果两个核使用同一个数据则需要在前端总线中进行传递,增加了前端总线的负担,而共享cache的连个核不存在这个问题 Cache Line L2 Cache Cache Line L2 Cache 总线接口 总线接口 前端总线

50 Intel® Dual-core介绍 智能功效管理 超细粒度功耗控制 分离总线 功效管理的平台化结构
即使在高性能执行的时候,核的很多部分还是能够关闭的。 能够只对处于工作状态的部件提供电源,而关闭非工作部件的电源供应,从而有效降低功耗。 分离总线 能够使总线宽度动态适应数据宽度的需要,对无效的信息位使其进入低电压状态,从而进一步降低功耗。 功效管理的平台化结构 PSI-2 功耗状态指示(移动领域) DTS 数字热传感器 PECI 平台环境控制接口

51 Intel® Dual-core介绍 Intel多核处理器体系结构相关的程序优化
尽量避免使用具有“改变长度的前缀”的指令,因为它会增加指令译码时间 因指令队列中有循环检测器,所以要注意和常规程序优化中的循环展开取得折中,避免互相抵消 译码优化,四个译码器一个是复杂指令译码器,三个简单指令译码器,最好以此配对指令 因每个时钟周期最多可有6条微操作发射到执行单元,所以尽量将单时钟周期就能执行完的微操作和需要多个时钟周期才能完成的微操作分开 指令队列中的循环检测器(LCP)能避免将循环体中的指令重复解码,提高了指令流的执行带宽。

52 多核概述 内容 为什么我们需要多核? 什么是多核? 多核结构 Intel® Dual-core介绍 多核带来的挑战
操作系统对多核处理器的支持方法

53 多核带来的挑战 对程序员的挑战 从单核程序员变成多核程序员 利用多核处理器提高程序的效率 并行程序设计的挑战 同步 通信 负载均衡 可扩展性

54 多核带来的挑战 对操作系统的挑战 处理器之间的相关性 线程与进程的调度 Cache一致性 处理器之间的通信 核内的资源竞争问题 如何处理中断

55 多核概述 内容 为什么我们需要多核? 什么是多核? 多核结构 Intel® Dual-core介绍 多核带来的挑战
操作系统对多核处理器的支持方法

56 操作系统对多核处理器的支持方法 调度与中断
对任务的分配进行优化。使同一应用程序的任务,尤其是具有共享数据的任务尽量在一个核上执行。没有共享数据或者只有少量共享数据的任务在不同核上执行,这样可以显著降低Cache缺失率。 对任务的共享数据优化。由于CMP体系结构共享二级缓存,可以考虑改变任务在内存中的数据分布,使任务在执行时尽量增加二级缓存的命中率。 对任务的负载均衡优化。当任务在调度时,出现了负载不均衡,考虑将较忙处理器中与其他任务最不相关的任务迁移,以达到数据的冲突量小。

57 操作系统对多核处理器的支持方法 输入输出系统 存储管理与文件系统 利用APIC来处理来自各方的中断
接收来自处理器中断引脚的中断,并将它们发送给处理器核处理 允许处理器核将自己不处理的中断转发给其它核 接收和转发来自其它核的核内中断到其它核 存储管理与文件系统 为使用多核运算能力,库函数改用无阻塞调用方式 用事物内存管理在并行运行同时,保证数据的同步 使用多线程内存管理,降低Cache冲突,提高效率

58 附录 返回 乱序执行技术 为了提高指令流的执行效率,乱序执行核心分析多条指令的数据相关性和资源可用性,然后在不损失数据完整性的前提下,采用能充分发挥多个处理部件并行工作的指令顺序来执行。这个指令顺序可能和原始程序的不一样。 非乱序执行演示 乱序执行演示 R=F-7 R=F-7 执行方向 执行方向 Q=D-E Q=D-E P=A*2 P=A*2 A=B+C A=B+C 流水1 流水2 流水1 流水2

59 附录 分支预测 推测执行 预测分支未来的方向,为处理器预先译码分支之后的指令提供依据 静态分支预测 动态分支预测
返回 分支预测 预测分支未来的方向,为处理器预先译码分支之后的指令提供依据 静态分支预测 预测无条件转移指令发生分支 预测向前分支的条件转移指令不发生转移 预测向后分支的条件转移指令发生转移 动态分支预测 使用分支目标缓冲器BTB记录分支转移历史信息 推测执行 在分支预测基础上,推测分支路径,并按推测执行。


Download ppt "多核结构与程序设计 杨全胜 http://www.njyangqs.com/ 东南大学成贤学院计算机系."

Similar presentations


Ads by Google