欢迎来到天天文库
浏览记录
ID:48236277
大小:279.50 KB
页数:40页
时间:2020-01-18
《第5-6章 指令级并行(简化版).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章指令级并行及其开发方法大连海事大学计算机系5.1指令级并行的概念5.2相关与指令级并行5.3指令的动态调度5.4动态分支预测技术5.5多指令流出技术指令级并行:指令之间存在的一种并行性,利用它,计算机可以并行执行两条或两条以上的指令。(ILP:Instruction-LevelParallelism)开发ILP的途径有两种资源重复,重复设置多个处理部件,让它们同时执行相邻或相近的多条指令;时间重叠,采用流水线技术,使指令重叠并行执行。开发ILP的方法可以分为两大类主要基于硬件的动态开发方法基于软件的静态开发方法流水线处理机的实际CPI理想流水线的C
2、PI加上各类停顿的时钟周期数:CPI流水线=CPI理想+停顿结构冲突+停顿数据冲突+停顿控制冲突理想CPI是衡量流水线最高性能的一个指标。5.1指令级并行的概念相关与流水线冲突相关有三种类型:数据相关、名相关、控制相关相关是程序固有的一种属性,它反映了程序中指令之间的相互依赖关系。流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。流水线冲突有三种类型:结构冲突、数据冲突、控制冲突5.2相关与指令级并行5.2相关与指令级并行2.控制相关并不是一个必须严格保持的关键属性。有时,不遵守控制相关既不影响异常行为
3、,也不改变数据流。可以大胆地进行指令调度,把失败分支中的指令调度到分支指令之前。举例:DADDUR1,R2,R3BEQZR12,SkipnextDSUBUR4,R5,R6DADDUR5,R4,R9Skipnext:ORR7,R8,R95.2相关与指令级并行3.对于正确地执行程序来说,必须保持的最关键的两个属性是:数据流和异常行为。保持异常行为是指:无论怎么改变指令的执行顺序,都不能改变程序中异常的发生情况。即原来程序中是怎么发生的,改变执行顺序后还是怎么发生。可弱化为:指令执行顺序改变不能导致程序中发生新的异常。数据流:指数据值从其产生者指令到其消费者指
4、令的实际流动。分支指令使得数据流具有动态性,因为一条指令有可能数据相关于多条先前的指令。分支指令的执行结果决定了哪条指令真正是所需数据的产生者。静态调度依靠编译器对代码进行静态调度,以减少相关和冲突。它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。通过把相关的指令拉开距离来减少可能产生的停顿。动态调度在程序的执行过程中,依靠专门硬件对代码进行调度,减少数据相关导致的停顿。5.3指令的动态调度5.3指令的动态调度能够处理一些在编译时情况不明的相关(比如涉及到存储器访问的相关),并简化了编译器;能够使本来是面向某一流水线优化编译的代码在其它的流水
5、线(动态调度)上也能高效地执行。以硬件复杂性的显著增加为代价优点:5.3指令的动态调度到目前为止我们所使用流水线的最大的局限性:指令是按序流出和按序执行的考虑下面一段代码:DIV.DF4,F0,F2ADD.DF10,F4,F6SUB.DF12,F6,F14ADD.D指令与DIV.D指令关于F4相关,导致流水线停顿。SUB.D指令与流水线中的任何指令都没有关系,但也因此受阻。5.3.1动态调度的基本思想5.3指令的动态调度在前面的基本流水线中:ID检测结构冲突检测数据冲突一旦一条指令受阻,其后的指令都将停顿。5.3指令的动态调度为了使上述指令序列中的SUB
6、.D指令能继续执行下去,必须把指令流出的工作拆分为两步:检测结构冲突等待数据冲突消失只要检测到没有结构冲突,就可以让指令流出。并且流出后的指令一旦其操作数就绪就可以立即执行。(修改后的流水线是乱序执行的)乱序执行指令的执行顺序与程序顺序不相同指令的完成也是乱序完成的5.3指令的动态调度为了支持乱序执行,我们将5段流水线的译码阶段再分为两个阶段:流出(Issue,IS):指令译码,检查是否存在结构冲突。若不存在,就将指令流出。读操作数(ReadOperands,RO):等待数据冲突消失(如果有的话),然后读操作数。ISRO检测结构冲突检测数据冲突5.3指令
7、的动态调度在前述5段流水线中,是不会发生WAR冲突和WAW冲突的。但乱序执行就使得它们可能发生了。例如,考虑下面的代码DIV.DF10,F0,F2ADD.DF10,F4,F6SUB.DF6,F8,F14存在反相关存在输出相关可以通过使用寄存器重命名来消除。5.3指令的动态调度动态调度的流水线支持多条指令同时处于执行段。要求:具有多个功能部件、或者功能部件流水化、或者兼而有之。指令乱序完成带来的最大问题:异常处理比较复杂(精确异常处理、不精确异常处理)动态调度的处理机要保持正确的异常行为对于一条会产生异常的指令来说,只有当处理机确切地知道该指令将被执行时,
8、才允许它产生异常。5.3指令的动态调度即使保持了正确的异常行为,动态调度处理机仍
此文档下载收益归作者所有