依赖于机器的优化课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《依赖于机器的优化课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 依赖于 机器 优化 课件
- 资源描述:
-
1、第十章第十章 依赖于机器的优化依赖于机器的优化 在指令级并行的机器上,程序的运行速度依在指令级并行的机器上,程序的运行速度依赖于下面几个因素赖于下面几个因素 程序中潜在的并行程序中潜在的并行 处理器上可用的并行处理器上可用的并行 从串行程序提取并行的能力从串行程序提取并行的能力 在给定的调度约束下发现最佳并行调度的能力在给定的调度约束下发现最佳并行调度的能力 并行的提取和并行执行的调度都可以静态地并行的提取和并行执行的调度都可以静态地在软件中或动态地在硬件中完成在软件中或动态地在硬件中完成第十章第十章 依赖于机器的优化依赖于机器的优化 本章内容本章内容 使用使用指令级并行指令级并行的基础问题的
2、基础问题 提取并行的数据相关性分析提取并行的数据相关性分析 代码调度的基本概念代码调度的基本概念 基本块调度的技术、发现通用程序中的高度数据基本块调度的技术、发现通用程序中的高度数据相关控制流的方法、调度数值程序的软件流水线相关控制流的方法、调度数值程序的软件流水线技术技术 在在多处理器系统多处理器系统上,使用数组的计算密集型程序上,使用数组的计算密集型程序的并行化和数据局部性优化的概念和方法的并行化和数据局部性优化的概念和方法10.1 处理器体系结构处理器体系结构 在考虑指令级并行时,通常想象成一个处理在考虑指令级并行时,通常想象成一个处理器在单个时钟周期内发射几个操作器在单个时钟周期内发射
3、几个操作 事实上,在每周期内发射一个操作是可能的事实上,在每周期内发射一个操作是可能的,而指令级并行的获得是通过使用流水线技术而指令级并行的获得是通过使用流水线技术 本节先解释流水线,然后讨论多指令发射本节先解释流水线,然后讨论多指令发射10.1 处理器体系结构处理器体系结构10.1.1 指令流水线和分支延迟指令流水线和分支延迟 ii+1i+2i+3i+41.IF2.IDIF3.EXIDIF4.MEMEXIDIF5.WBMEMEXIDIF6.WBMEMEXID7.WBMEMEX8.WBMEM9.WB取指令取指令IF,译码译码ID,执行操作执行操作EX,访问内存访问内存MEM,回写结果回写结果W
4、B5级指令流水线中级指令流水线中的的5条连续指令条连续指令 10.1 处理器体系结构处理器体系结构10.1.1 指令流水线和分支延迟指令流水线和分支延迟 分支延迟分支延迟 发现应该执行一个分支而不是直接后继发现应该执行一个分支而不是直接后继 转向一个分支时会引起取分支目的地址指令的延转向一个分支时会引起取分支目的地址指令的延迟并引起指令流水线迟并引起指令流水线“打嗝打嗝”可以通过使用硬件,根据分支的执行历史来预测可以通过使用硬件,根据分支的执行历史来预测分支结果并从预测的目的地址预取指令分支结果并从预测的目的地址预取指令 分支延迟不可避免,因为分支预测会发生偏差分支延迟不可避免,因为分支预测会
5、发生偏差10.1 处理器体系结构处理器体系结构10.1.2 流水化的执行流水化的执行如果不依赖一条指令结果的随后指令在该结如果不依赖一条指令结果的随后指令在该结果产生前就被允许执行果产生前就被允许执行 有些指令的执行需要几个周期,几个操作同时出有些指令的执行需要几个周期,几个操作同时出现在它们的执行级上可能的现在它们的执行级上可能的 如果最长的执行流水线是如果最长的执行流水线是n级,级,n个操作同时进行个操作同时进行的可能性是存在的的可能性是存在的 并非所有的指令都能被完全流水化,例如浮点除并非所有的指令都能被完全流水化,例如浮点除 通用处理器大都动态察觉相继指令之间的依赖性通用处理器大都动态
6、察觉相继指令之间的依赖性 嵌入式系统把数据相关性的检查交给软件嵌入式系统把数据相关性的检查交给软件10.1 处理器体系结构处理器体系结构10.1.3 多指令发射多指令发射 每周期发射几个操作,让更多操作同时进行每周期发射几个操作,让更多操作同时进行 超长指令字机器超长指令字机器 将若干个操作编码在单周期中发射将若干个操作编码在单周期中发射 编译器需要确定哪些操作可以并行发射编译器需要确定哪些操作可以并行发射 超标量机器超标量机器 超标量机器有按普通顺序执行语义的正规指令集超标量机器有按普通顺序执行语义的正规指令集 硬件自动察觉指令之间的相关性,并且在它们的硬件自动察觉指令之间的相关性,并且在它
7、们的操作数可用时就发射它们操作数可用时就发射它们 更复杂的调度器能够更复杂的调度器能够“乱序乱序”执行指令执行指令10.2 代码调度的约束代码调度的约束 代码调度代码调度 用在代码生成器产生的机器代码上的优化技术用在代码生成器产生的机器代码上的优化技术 本节讨论代码调度的约束本节讨论代码调度的约束 控制相关约束控制相关约束 在原程序中执行的所有操作都在原程序中执行的所有操作都必须在优化代码中执行必须在优化代码中执行 数据相关约束数据相关约束 优化程序中的操作产生的结果优化程序中的操作产生的结果必须同原程序对应操作的结果一样必须同原程序对应操作的结果一样 资源约束资源约束 调度不能过分占用机器的
8、资源调度不能过分占用机器的资源 优化程序很难调试优化程序很难调试 内存状态可能和顺序执行的任何内存状态不匹配内存状态可能和顺序执行的任何内存状态不匹配10.2 代码调度的约束代码调度的约束 10.2.1 数据相关数据相关 真相关真相关 如果对同一个单元先写后读,那么如果对同一个单元先写后读,那么读依赖于所写的值读依赖于所写的值 反相关反相关 如果对同一个单元先读后写。可以如果对同一个单元先读后写。可以通过把值存在不同的单元来删除反相关通过把值存在不同的单元来删除反相关 输出相关输出相关 如果对同一个单元先后写两次。也如果对同一个单元先后写两次。也可删除可删除 数据相关概念可同时用于内存访问和寄
9、存器数据相关概念可同时用于内存访问和寄存器访问访问10.2 代码调度的约束代码调度的约束 10.2.2 发现内存访问中的相关性发现内存访问中的相关性 例例(1)a=1(2)p=2(3)x=a 语句语句(1)和和(2)可能构成输出相关可能构成输出相关 语句语句(1)和和(3)可能构成真相关可能构成真相关 语句语句(2)和和(3)可能构成真相关可能构成真相关 除非编译器知道除非编译器知道p不可能指向不可能指向a,否则,否则3个操作必个操作必须串行执行须串行执行10.2 代码调度的约束代码调度的约束 10.2.2 发现内存访问中的相关性发现内存访问中的相关性 发现数据相关需要不同形式的分析发现数据相
10、关需要不同形式的分析 数组元素间的别名分析数组元素间的别名分析Ai和和Aj是否互为别名是否互为别名 指针别名分析指针别名分析若若p和和q相等,则相等,则 p和和 q、p-next和和q-next、p-data和和q-data等都分别互为别名等都分别互为别名 过程间分析过程间分析引用调用场合:形参和形参之间、形参和全局变引用调用场合:形参和形参之间、形参和全局变量之间因实参而引起互为别名量之间因实参而引起互为别名10.2 代码调度的约束代码调度的约束 10.2.3 寄存器使用和并行执行之间的折衷寄存器使用和并行执行之间的折衷例:例:(a+b)+c+(d+e)LD R1,aLD R2,bADD R
11、1,R1,R2LD R2,cADD R1,R1,R2LD R2,dLD R3,eADD R2,R2,R3ADD R1,R1,R2+e+c+ab+d若瞄准极小化寄存器若瞄准极小化寄存器的使用个数,则只需的使用个数,则只需使用使用3个寄存器个寄存器 10.2 代码调度的约束代码调度的约束 10.2.3 寄存器使用和并行执行之间的折衷寄存器使用和并行执行之间的折衷例:例:(a+b)+c+(d+e)LD R1,aLD R2,bADD R1,R1,R2LD R2,cADD R1,R1,R2LD R2,dLD R3,eADD R2,R2,R3ADD R1,R1,R2+e+c+ab+d完成整个计算需要完成整
12、个计算需要7步步10.2 代码调度的约束代码调度的约束 10.2.3 寄存器使用和并行执行之间的折衷寄存器使用和并行执行之间的折衷例:例:(a+b)+c+(d+e)+e+c+ab+d如果对每个中间结果如果对每个中间结果使用不同寄存器,则使用不同寄存器,则完成计算只需要完成计算只需要4步步R1=aR6=R1+R2R8=R6+R3R9=R8+R7R2=bR7=R4+R5R3=cR4=d R5=e10.2 代码调度的约束代码调度的约束 10.2.4 寄存器分配和代码调度的次序安排寄存器分配和代码调度的次序安排 先寄存器分配先寄存器分配 结果代码中会有很多存储相关结果代码中会有很多存储相关 非数值应用
13、本质上没有多少并行,采用这种方式非数值应用本质上没有多少并行,采用这种方式 先代码调度先代码调度 导致寄存器溢出,抵消指令级并行的优点导致寄存器溢出,抵消指令级并行的优点 适用于有许多大表达式的数值应用适用于有许多大表达式的数值应用 在假定伪寄存器就是物理寄存器情况下,先调度在假定伪寄存器就是物理寄存器情况下,先调度指令,然后寄存器分配,把处理寄存器溢出的代指令,然后寄存器分配,把处理寄存器溢出的代码附加在必要的地方,并再次进行代码调度码附加在必要的地方,并再次进行代码调度10.2 代码调度的约束代码调度的约束 10.2.5 控制相关控制相关 在非数值计算中,基本块非常小,其中的操作通在非数值
14、计算中,基本块非常小,其中的操作通常高度相关,几乎不能并行常高度相关,几乎不能并行 调查跨基本块的并行是至关重要的调查跨基本块的并行是至关重要的 若一条指令很可能被执行且有空闲的资源可若一条指令很可能被执行且有空闲的资源可“免免费费”用于完成该指令的操作,则可以投机地执行用于完成该指令的操作,则可以投机地执行该指令;若投机成功,则程序运行得快一些该指令;若投机成功,则程序运行得快一些例例 if(a t)b=a a依赖于比较依赖于比较a t的结果的结果 b=a a;若若a a不会产生副作用,则不会产生副作用,则d=a+c;a a可以投机地执行可以投机地执行10.2 代码调度的约束代码调度的约束
15、10.2.6 投机执行的支持投机执行的支持 内存读取是一类使用频繁,且能从投机执行大大内存读取是一类使用频繁,且能从投机执行大大获益的指令获益的指令 但在但在 if(p!=null)q=p中,投机地对中,投机地对p脱引用将引起该程序因脱引用将引起该程序因p等于等于null而错误地停止而错误地停止 许多高性能处理器提供专门的特性来支持投机地许多高性能处理器提供专门的特性来支持投机地内存访问内存访问10.2 代码调度的约束代码调度的约束 10.2.6 投机执行的支持投机执行的支持 预取指令预取指令在数据使用前将其从内存取到缓存在数据使用前将其从内存取到缓存,若该单元无效或访问它会引起缺页,则忽略若
16、该单元无效或访问它会引起缺页,则忽略 抑制位抑制位允许投机地从内存将数据读取到寄允许投机地从内存将数据读取到寄存器堆,若出现非法内存访问或缺页,则设置目存器堆,若出现非法内存访问或缺页,则设置目标寄存器的抑制位标寄存器的抑制位 判定指令判定指令在判定条件为真时才执行的指令在判定条件为真时才执行的指令例例 if(a=0)翻译成翻译成 ADD R3,R4,R5b=c+d;CMOVZ R2,R3,R1假定假定a、b、c和和d分别被分配了分别被分配了R1、R2、R4和和R5可用来将相邻基本块组合成一个更大基本块可用来将相邻基本块组合成一个更大基本块10.2 代码调度的约束代码调度的约束 10.2.7
17、一个基本的机器模型一个基本的机器模型 机器模型机器模型M=(R,T)T:操作类型集,如读取、存储和算术运算等:操作类型集,如读取、存储和算术运算等 R=r1,r2,:硬件资源向量集,如内存访问部:硬件资源向量集,如内存访问部件、算术运算部件和浮点功能部件件、算术运算部件和浮点功能部件ri代表第代表第i类资源中可用的部件数类资源中可用的部件数 每个操作有一组输入操作数、一组输出操作数和每个操作有一组输入操作数、一组输出操作数和一个资源需求一个资源需求 和每个输入操作数相关的是一个输入延迟和每个输入操作数相关的是一个输入延迟 和每个输出操作数相关的是一个输出延迟和每个输出操作数相关的是一个输出延迟
18、10.2 代码调度的约束代码调度的约束 10.2.7 一个基本的机器模型一个基本的机器模型 机器模型机器模型M=(R,T)对每种操作类型对每种操作类型t,资源使用由一张二维资源预留,资源使用由一张二维资源预留表表RTt来建模来建模 条目条目RTti,j是是t类型的一个操作在它被发射类型的一个操作在它被发射i时钟时钟周期后,使用第周期后,使用第j种资源的部件数种资源的部件数 对任何对任何t、i和和j,RTti,j必须小于或等于必须小于或等于Rj10.3 基基 本本 块块 调调 度度10.3.1 数据依赖图数据依赖图 基本块由数据依赖图基本块由数据依赖图G=(N,E)来表示来表示 结点集合结点集合
19、N表示该块的机器指令中的操作集合表示该块的机器指令中的操作集合 有向边集合有向边集合E表示这些操作之间的数据相关约束表示这些操作之间的数据相关约束 G的结点集的结点集N和边集和边集E按如下两步构造按如下两步构造 N中的每个操作中的每个操作n有一张资源预留表有一张资源预留表RTn,其值直,其值直接就是接就是n的操作类型的资源预留表的操作类型的资源预留表 每条边每条边e都标示有延迟都标示有延迟de,表示,表示e的目的结点必须的目的结点必须在它源结点发射在它源结点发射de个时钟周期之后才可以发射个时钟周期之后才可以发射10.3 基基 本本 块块 调调 度度数据依赖图数据依赖图资源预留表资源预留表al
20、u menLD R2,0(R1)ST 4(R1),R2 LD R3,8(R1)ADD R3,R3,R2ADD R3,R3,R4ST 0(R7),R7 ST 12(R1),R3 222111111i1i2i3i4i5i6i7灰色表灰色表示示1 白色表白色表示示0操作是全流水操作是全流水的,只需显示的,只需显示在第在第1行使用行使用的资源的资源 10.3 基基 本本 块块 调调 度度10.3.2 基本块的表调度基本块的表调度 关键路径包括最后关键路径包括最后5个结点,故第个结点,故第3条指令先调度条指令先调度 再调度第再调度第1条指令,因为第条指令,因为第4条指令还需等条指令还需等1周期周期 第第
21、4周期调度周期调度2条条资源预留表资源预留表alu men调度表调度表LD R3,8(R1)ADD R3,R3,R2ADD R3,R3,R4ST 0(R7),R7ST 12(R1),R3ST 4(R1),R2 LD R2,0(R1)10.3 基基 本本 块块 调调 度度10.3.2 基本块的表调度基本块的表调度 根据每个结点同先前已经被调度的各结点之间的根据每个结点同先前已经被调度的各结点之间的数据相关约束,来计算一个结点可以执行的最早数据相关约束,来计算一个结点可以执行的最早时间槽时间槽 这个结点所需资源根据一张资源预留表来进行检这个结点所需资源根据一张资源预留表来进行检查,该资源预留表收集
22、了所有到目前为止被占用查,该资源预留表收集了所有到目前为止被占用资源。这个结点的调度按有足够资源的最早时间资源。这个结点的调度按有足够资源的最早时间槽来安排槽来安排10.4 全局代码调度全局代码调度 对于有适度指令级并行的机器,仅对每个基对于有适度指令级并行的机器,仅对每个基本块进行紧凑调度会引起许多资源空闲本块进行紧凑调度会引起许多资源空闲 全局调度:为了更好地利用机器资源,需要全局调度:为了更好地利用机器资源,需要考虑把指令从一个基本块移到另一个基本块考虑把指令从一个基本块移到另一个基本块的代码生成策略的代码生成策略必须保证必须保证 原来程序中所有指令在优化程序中都被执行原来程序中所有指令
23、在优化程序中都被执行 当优化程序可以投机地执行额外指令时,这些指当优化程序可以投机地执行额外指令时,这些指令肯定不能有任何多余的副作用令肯定不能有任何多余的副作用10.4 全局代码调度全局代码调度10.4.1 简单的代码移动简单的代码移动 先用例子展示操作在基本块之间移动涉及的问题先用例子展示操作在基本块之间移动涉及的问题 L:if(a=0)goto Lc=be=d+d(a)源代码源代码(b)局部调度的机器代码局部调度的机器代码LD R6,0(R1)NOPBEQZ R6,LLD R7,0(R2)NOPST 0(R3),R7 LD R8,0(R4)NOPADD R8,R8,R8ST 0(R5),
24、R8B2B1B3L:10.4 全局代码调度全局代码调度 假定假定a,b,c,d和和e的地址不同,分别保存在的地址不同,分别保存在R1到到R5 由于数据相关,块内的指令必须串行执行,且插由于数据相关,块内的指令必须串行执行,且插入入 NOPL:if(a=0)goto Lc=be=d+d(a)源代码源代码(b)局部调度的机器代码局部调度的机器代码LD R6,0(R1)NOPBEQZ R6,LLD R7,0(R2)NOPST 0(R3),R7 LD R8,0(R4)NOPADD R8,R8,R8ST 0(R5),R8B2B1B3L:10.4 全局代码调度全局代码调度 假定机器在一个时钟周期执行任意的
25、两个操作假定机器在一个时钟周期执行任意的两个操作 读取操作有读取操作有2周期的延迟,其他指令周期的延迟,其他指令1周期的延迟周期的延迟L:if(a=0)goto Lc=be=d+d(a)源代码源代码(b)局部调度的机器代码局部调度的机器代码LD R6,0(R1)NOPBEQZ R6,LLD R7,0(R2)NOPST 0(R3),R7 LD R8,0(R4)NOPADD R8,R8,R8ST 0(R5),R8B2B1B3L:10.4 全局代码调度全局代码调度 B3肯定要执行,因而可以和肯定要执行,因而可以和B1并行执行并行执行 B2的读取操作在执行的读取操作在执行B1时投机地完成时投机地完成
展开阅读全文