- 1、本文档共117页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章节标量处理机(5.4,5.5,5.6) 流水线的冲突MIPS流水线
* 不是所有的数据相关都可以通过旁路的方法来解决。 * 1.Load直到时钟周期4也就是自己的MEM才能通过访存得到操作数(在周期5送到寄存器R1中) 2.DSUB在开始的时候就需要数据。 3 如图的直通属于反方向流动,这根本就无法实现。 4 对于AND,由于是晚启动了2个时钟周期,可以使它把结果立刻从流水寄存器直通到ALU 5 对于XOR直接从寄存器接收结果即可 * 控制冲突比数据冲突造成的损失更大。 当一条转移指令执行的时候,对PC是否加4是不确定的。同时也分为分支成功或者分支不成功。如果是选中了转移,通常要到ID段的末尾,已经完成了地址的计算和比较之后才能改变PC。 * 理想CPI为1,现在由于30%的指令多耗费了3个时钟周期,所以CPI在原来的基础上多了0.3×3=0.9,则实际CPI为1.9 * 1意味着是编译时调度的方法。 2 静态:在整个程序的执行过程中对每个转移的处理都是一样的,软件可以尽量利用硬件调度的动态特性和转移的行为来使转移开销达到最小。 * 在5段流水线中,总是先得到转移成功与否的结果,后得到目标地址,所以用此方法不适合。在某些机器中,例如采用隐含条件码的机器中,转移的目标地址比结果更早产生,此时采用预测转移成功的方法比较合适。 * 在5段流水线中,总是先得到转移成功与否的结果,后得到目标地址,所以用此方法不适合。在某些机器中,例如采用隐含条件码的机器中,转移的目标地址比结果更早产生,此时采用预测转移成功的方法比较合适。 * 采用b和c优化时,不管转移是否被选中,都要执行DSUB指令因此要求执行DSUB指令不会破坏程序的正确性。对于C,在转移未被选中的程序内,不能执行R7 * IR的低16位 * ALU将NPC和Imm中的带符号立即数相加,计算出分支转移的目标地址。前一个时钟周期读出的寄存器A中的值用于决定是否进行转移操作。再此我们只考虑BEQZ,比较的对象是0.只是一个伪指令,只是将R0中的内容传送给BEQ作为一个操作数。为了简单只考虑此种转移 相对偏移的范围是218 * 一条指令从译码段ID流动到执行段EX的操作通常称为发射指令,经过了这一步的指令称为已经被发射的指令。 * 1、ld r1, 45(r2) add r4, r1, r3 2 Ld r3, 45(r2) add r4, r1, r3 3 Ld r1, 45(r2) sd r3, 0(r1) * * 1.Load直到时钟周期4也就是自己的MEM才能通过访存得到操作数(在周期5送到寄存器R1中) 2.DSUB在开始的时候就需要数据。 3 如图的直通属于反方向流动,这根本就无法实现。 4 对于AND,由于是晚启动了2个时钟周期,可以使它把结果立刻从流水寄存器直通到ALU 5 对于XOR直接从寄存器接收结果即可 * 课件只需要两个时钟周期就可以完成 扩展流水线支持浮点操作并且支持各种异常情况。 * 实际上两种方法在设计过程中也会相互交叉 * 来源于CDC6600计算机,用一个称为记分牌的硬件实现了对指令的动态调度。 是robert tomasulo发明的,一他的名字命名 * 解决控制相关出现的问题 * 后面主要看一下动态多指令流出 5.6 开发指令级并行技术 5.6.1 开发指令级并行的技术——硬件技术 5.6.2 开发指令级并行的技术——软件技术 指令级并行的概念 现在复杂指令也使用流水线技术,但是复杂指令系统的流水线在实现时都是先把复杂的指令指令转化为简单的类RISC指令,然后才进行流水线的调度和执行。这样才效率更高,实现更简单。 自1985年以来,所有的处理器都采用流水线方式使指令的执行可以重叠执行。由于可以将指令间的关系看做是并行的,因此将指令间的这种潜在重叠称为指令级并行(ILP,Instruction-level parallelism) 指令级并行的概念 开发指令级并行的方法大致分为两类:一种是基于软件技术,在编译阶段静态的发现并行;一种方法是依赖硬件,动态的发现和开发指令级的并行。目的都是提高指令序列的并行度。使用基于硬件的动态方法的处理器包括Intel的Pentium处理器,在市场上占主导地位;而采用静态方法的处理器包括Intel的Itanium,使用范围局限于科学领域或者特定应用环境中。 简单流水线负责取指令并且发射指令,除非在流水线中的指令与刚取到的指令存在数据相关并且不能通过旁路技术或者直通技术避免,此时检测冲突的硬件将停止有关指令以及后面指令进入流水线,相关被取消之前不再取出和发射新的指令。为了能减少性能损失,编译器将试图调度指令以避免冲突,也就是编译器调度法,又叫静态调度法。 也可以由硬件动态调整执行指令顺序以减少停顿的影响,也就是动态调度法。 静态调度 依靠
文档评论(0)