依赖于机器的优化.ppt
《依赖于机器的优化.ppt》由会员分享,可在线阅读,更多相关《依赖于机器的优化.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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,回写结果回写结果WB5级指令流
4、水线中级指令流水线中的的5条连续指令条连续指令 10.1 处理器体系结构处理器体系结构10.1.1 指令流水线和分支延迟指令流水线和分支延迟分支延迟分支延迟发现应该执行一个分支而不是直接后继发现应该执行一个分支而不是直接后继转转向向一一个个分分支支时时会会引引起起取取分分支支目目的的地地址址指指令令的的延延迟并引起指令流水线迟并引起指令流水线“打嗝打嗝”可可以以通通过过使使用用硬硬件件,根根据据分分支支的的执执行行历历史史来来预预测测分支结果并从预测的目的地址预取指令分支结果并从预测的目的地址预取指令分支延迟不可避免,因为分支预测会发生偏差分支延迟不可避免,因为分支预测会发生偏差10.1 处理
5、器体系结构处理器体系结构10.1.2 流水化的执行流水化的执行如果不依赖一条指令结果的随后指令在该结如果不依赖一条指令结果的随后指令在该结果产生前就被允许执行果产生前就被允许执行有有些些指指令令的的执执行行需需要要几几个个周周期期,几几个个操操作作同同时时出出现在它们的执行级上可能的现在它们的执行级上可能的如如果果最最长长的的执执行行流流水水线线是是n级级,n个个操操作作同同时时进进行行的可能性是存在的的可能性是存在的并非所有的指令都能被完全流水化,例如浮点除并非所有的指令都能被完全流水化,例如浮点除 通用处理器大都动态察觉相继指令之间的依赖性通用处理器大都动态察觉相继指令之间的依赖性 嵌入式
6、系统把数据相关性的检查交给软件嵌入式系统把数据相关性的检查交给软件10.1 处理器体系结构处理器体系结构10.1.3 多指令发射多指令发射 每周期发射几个操作,让更多操作同时进行每周期发射几个操作,让更多操作同时进行超长指令字机器超长指令字机器将若干个操作编码在单周期中发射将若干个操作编码在单周期中发射编译器需要确定哪些操作可以并行发射编译器需要确定哪些操作可以并行发射超标量机器超标量机器超标量机器有按普通顺序执行语义的正规指令集超标量机器有按普通顺序执行语义的正规指令集硬硬件件自自动动察察觉觉指指令令之之间间的的相相关关性性,并并且且在在它它们们的的操作数可用时就发射它们操作数可用时就发射它
7、们更复杂的调度器能够更复杂的调度器能够“乱序乱序”执行指令执行指令10.2 代码调度的约束代码调度的约束 代码调度代码调度用在代码生成器产生的机器代码上的优化技术用在代码生成器产生的机器代码上的优化技术本节讨论代码调度的约束本节讨论代码调度的约束控制相关约束控制相关约束 在在原原程程序序中中执执行行的的所所有有操操作作都都必须在优化代码中执行必须在优化代码中执行数据相关约束数据相关约束 优优化化程程序序中中的的操操作作产产生生的的结结果果必须同原程序对应操作的结果一样必须同原程序对应操作的结果一样资源约束资源约束 调度不能过分占用机器的资源调度不能过分占用机器的资源优化程序很难调试优化程序很难
8、调试内存状态可能和顺序执行的任何内存状态不匹配内存状态可能和顺序执行的任何内存状态不匹配10.2 代码调度的约束代码调度的约束 10.2.1 数据相关数据相关真相关真相关 如如果果对对同同一一个个单单元元先先写写后后读读,那那么么读读依赖于所写的值依赖于所写的值反相关反相关 如如果果对对同同一一个个单单元元先先读读后后写写。可可以以通通过把值存在不同的单元来删除反相关过把值存在不同的单元来删除反相关输出相关输出相关 如如果果对对同同一一个个单单元元先先后后写写两两次次。也也可可删除删除数数据据相相关关概概念念可可同同时时用用于于内内存存访访问问和和寄寄存存器器访问访问10.2 代码调度的约束代
9、码调度的约束 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 发现内存访问中的相关性发现内存访问中的相关性发现数据相关需要不同形式的分析发现数据相关需要不同形式的分析数组元素间的别名分析数组元素间的别名分析Ai和和Aj是否互为别名是否
10、互为别名指针别名分析指针别名分析若若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 R1,R1,R2LD R2,cADD R1,R1,R2LD R2,dLD R3,eADD R2,R2
11、,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完成整个计算需要完成整个计算需要7步步10.2 代码调度的约束代码调度的约束 10.2.3 寄存器使用和并行执行之间的折
12、衷寄存器使用和并行执行之间的折衷例:例:(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 代码调度的约束代码调度的约束 10.2.6 投机执行的支持投机执行的支持内内存存读读取取是是一一类类使使用用频频繁繁,且且能能从从投投机机执执行行大大大大获益
15、的指令获益的指令但在但在 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 一个基本的机器模型一个基本的机器模型机器模型机器模型M=(R,T)T:操作类型集,如读取、存储和算术运算等:操作类型集,如读取、存储和算术运算等
17、R=r1,r2,:硬硬件件资资源源向向量量集集,如如内内存存访访问问部部件、算术运算部件和浮点功能部件件、算术运算部件和浮点功能部件ri代表第代表第i类资源中可用的部件数类资源中可用的部件数每每个个操操作作有有一一组组输输入入操操作作数数、一一组组输输出出操操作作数数和和一个资源需求一个资源需求和每个输入操作数相关的是一个输入延迟和每个输入操作数相关的是一个输入延迟和每个输出操作数相关的是一个输出延迟和每个输出操作数相关的是一个输出延迟10.2 代码调度的约束代码调度的约束 10.2.7 一个基本的机器模型一个基本的机器模型机器模型机器模型M=(R,T)对对每每种种操操作作类类型型t,资资源源
18、使使用用由由一一张张二二维维资资源源预预留留表表RTt来建模来建模条条目目RTti,j是是t类类型型的的一一个个操操作作在在它它被被发发射射i时时钟钟周期后,使用第周期后,使用第j种资源的部件数种资源的部件数对任何对任何t、i和和j,RTti,j必须小于或等于必须小于或等于Rj10.3 基基 本本 块块 调调 度度10.3.1 数据依赖图数据依赖图基本块由数据依赖图基本块由数据依赖图G=(N,E)来表示来表示结点集合结点集合N表示该块的机器指令中的操作集合表示该块的机器指令中的操作集合有向边集合有向边集合E表示这些操作之间的数据相关约束表示这些操作之间的数据相关约束G的结点集的结点集N和边集和
19、边集E按如下两步构造按如下两步构造N中中的的每每个个操操作作n有有一一张张资资源源预预留留表表RTn,其其值值直直接就是接就是n的操作类型的资源预留表的操作类型的资源预留表每每条条边边e都都标标示示有有延延迟迟de,表表示示e的的目目的的结结点点必必须须在它源结点发射在它源结点发射de个时钟周期之后才可以发射个时钟周期之后才可以发射10.3 基基 本本 块块 调调 度度数据依赖图数据依赖图资源预留表资源预留表alu 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 2221
20、11111i1i2i3i4i5i6i7灰色表灰色表示示1 白色表白色表示示0操作是全流水操作是全流水的,只需显示的,只需显示在第在第1行使用行使用的资源的资源 10.3 基基 本本 块块 调调 度度10.3.2 基本块的表调度基本块的表调度关键路径包括最后关键路径包括最后5个结点,故第个结点,故第3条指令先调度条指令先调度再调度第再调度第1条指令,因为第条指令,因为第4条指令还需等条指令还需等1周期周期第第4周期调度周期调度2条条资源预留表资源预留表alu men调度表调度表LD R3,8(R1)ADD R3,R3,R2ADD R3,R3,R4ST 0(R7),R7ST 12(R1),R3ST
21、 4(R1),R2 LD R2,0(R1)10.3 基基 本本 块块 调调 度度10.3.2 基本块的表调度基本块的表调度根根据据每每个个结结点点同同先先前前已已经经被被调调度度的的各各结结点点之之间间的的数数据据相相关关约约束束,来来计计算算一一个个结结点点可可以以执执行行的的最最早早时间槽时间槽这这个个结结点点所所需需资资源源根根据据一一张张资资源源预预留留表表来来进进行行检检查查,该该资资源源预预留留表表收收集集了了所所有有到到目目前前为为止止被被占占用用资资源源。这这个个结结点点的的调调度度按按有有足足够够资资源源的的最最早早时时间间槽来安排槽来安排10.4 全局代码调度全局代码调度对
22、对于于有有适适度度指指令令级级并并行行的的机机器器,仅仅对对每每个个基基本块进行紧凑调度会引起许多资源空闲本块进行紧凑调度会引起许多资源空闲全全局局调调度度:为为了了更更好好地地利利用用机机器器资资源源,需需要要考考虑虑把把指指令令从从一一个个基基本本块块移移到到另另一一个个基基本本块块的代码生成策略的代码生成策略必须保证必须保证原来程序中所有指令在优化程序中都被执行原来程序中所有指令在优化程序中都被执行当当优优化化程程序序可可以以投投机机地地执执行行额额外外指指令令时时,这这些些指指令肯定不能有任何多余的副作用令肯定不能有任何多余的副作用10.4 全局代码调度全局代码调度10.4.1 简单的
23、代码移动简单的代码移动先用例子展示操作在基本块之间移动涉及的问题先用例子展示操作在基本块之间移动涉及的问题 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 全局代码调度全局代码调度假定假定a,b,c,d和和e的地址不同,分别保存在的地址不同,分别保存在R1到到R5由由于于数数据据相相关关,块块内内的的指指令令必必须须串串行行执执行行,且且插插
24、入入 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 全局代码调度全局代码调度假定机器在一个时钟周期执行任意的两个操作假定机器在一个时钟周期执行任意的两个操作读取操作有读取操作有2周期的延迟,其他指令周期的延迟,其他指令1周期的延迟周期的延迟L:if(a=0)goto Lc=be=d+d(a)源代码源代码(b)局部调度的机器代码局部调度
25、的机器代码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时投机地完成时投机地完成B2的存储操作放到的存储操作放到B3的的一份拷贝中一份拷贝中L:if(a=0)goto Lc=be=d+d(a)源代码源代码(b)局部调度的机器代码局部调度的机器代码LD R6,0(R1)NOPBEQZ R6,LLD R7,0(R2)N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 依赖于 机器 优化
限制150内