2016-第3章-3-增加内容流水线处理器设计重点.ppt

2016-第3章-3-增加内容流水线处理器设计重点.ppt

  1. 1、本文档共123页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
   条件转移指令要判断Z标志是否能用。若Z标志还没有准备好,则还要暂停流水线一个时钟周期(类似数据相关暂停),但由于转移指令只可能改变PC而不改变其它状态,因此用不着封锁WZ,WMEM,WREG(对转移指令来讲,这些信号原本就为0)。   如果处在ID级的是条件转移指令,而且处在EXE级的是ALU类型的指令(就要写Z标志到流水线寄存器Z了),则要等到ALU指令写完Z后,再判断转移与否,为此要暂停一个周期。 条件转移指令与无条件转移指令有所不同(除了转移时废弃紧接其后的指令外): 需要判断Z标志 根据Z决定转移还是不转移 * sub r1,1 sub r1 bne stall Zero? add or i r2,15 or r3 r2,1r3 add r5 Subi r1 , r1 , 1 Bne loop Ori r3 , r2 , 15 Loop : add r5 , r2 , r3 转移时,废弃该指令 WIR=WPC= =   EXE_instIsALU表示处在EXE级的是ALU指令。我们使用EXE_WREG来产生它,除了load指令,凡是向寄存器堆写结果的指令都是ALU类型的指令。图1.43给出了这部分的控制电路。 * 暂停逻辑条件: 图1.43 判断Z标志相关并暂停流水线 * 三、假定转移不发生(针对条件转移)  假定转移不发生(猜测)的思想是流水线按猜测转移不发生运行,具体是把紧接转移指令后的指令打入IR: * 如果转移不发生,则让它继续执行; * 如果转移成功,则废弃它的执行。 图1.44 猜测不转移 转移没有发生 * 问题的关键是如何在猜测不成功(转移发生)时终止指令的执行。 指令执行的效果:改变处理机的状态、寄存器堆和存储器的内容。如果: * 在EXE级结束之前,清除WZ; * 在MEM级结束之前清除WMEM; * 在WB级结束之前清除WREG 就不会对处理机和存储器产生任何影响。 因此,转移发生时,需要,产生一个控制信号以控制终止紧接转移指令的下条指令执行。 *   在我们的流水线处理机中,转移成功与否,在转移指令的ID级就已明了: * 无条件转移指令,在ID级知道肯定转移; * 如果没有采用条件转移硬件暂停,则编译器会加nop, 如: sub r1, r1, 1 nop bne ok ;本指令在ID级根据Z知道是否转移 * 如果采用了前面的条件转移暂停技术,由于条件转移指令在ID级暂停一个时钟周期等待Z标志,因此也能在ID级确定转移是否发生。 BTAKEN = bne Z+beq Z+branch 因此,ID级产生的转移发生逻辑条件: *   把ID级产生的转移发生条件(BTAKEN,转移成功时为1)打入流水线寄存器,以便在下一个周期使用。下一个周期恰好是紧接转移指令的后一条指令的ID级,就可以利用BTAKEN通过与门来清除前面提到的3个写信号。 * 不转移时,BTAKEN=0,不封锁,让其后指令继续执行(图1.44)。 * 发生转移时,BTAKEN=1,封锁其后的写信号。 *   如果程序执行时,如果条件转移指令占13%,条件转移成功和条件转移不成功各占1/2,则与总是浪费一个周期的方法相比,猜测执行的方法可以节省1/2 X 13%=6.5%的周期。其加速比为1/(1-0.065)=1.07,或者说,提高效率7%。 图1.44 猜测不转移 转移没有发生 BTAKEN = bne Z+beq Z+branch * BTAKEN 打入流水线寄存器 例1: 如果模型机只采用软件方法处理控制相关,则编译器应该在条件转移指令前后加nop指令,无条件转移指令后加nop。如: sub r1, r1, 1 nop bne ok nop add r2, r2, r3 …… 0k: or …… branch L1 nop sub r3, r4, r5 …… L1: and r6, r7, 10 * 例1: 如果模型机只采用假定转移不发生方法,则编译器应该在条件转移指令前加nop指令。如: sub r1, r1, 1 nop bne ok add r2, r2, r3

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档