网站大量收购独家精品文档,联系QQ:2885784924

因为读和写寄存器都发生在Cycle.pptVIP

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
因为读和写寄存器都发生在Cycle

* 因为读和写寄存器都发生在Cycle 6的末尾,两者基本上同时发生,读稍微要早那么一点点,因为写有延迟。 * 因为读和写寄存器都发生在Cycle 6的末尾,两者基本上同时发生,读稍微要早那么一点点,因为写有延迟。 * 整个硬件框图。实际上大部分内容与SEQ+相比,是相当类似或者说相同的。 变化有: 信号的重新组织与命名。在原有输入信号前面加上流水线寄存器名称(大写)以区分各自用到的信号。因为例如icode就在Decode、Execute、Memory和Write back阶段都存在,而且这些信号的内容还不同(因为属于不同的指令),所以用流水线寄存器来加以区分。D_icode, E_icode, M_icode, and W_icode. 如果这些信号是某一阶段产生的,则以小写字母作前缀。例如valE是由Execute阶段产生的,所以在Execute阶段,他的名字叫e_valE. 2. 在Fetch阶段增加了Predict PC部件来预测下一条指令的地址。 3. 将valP和valA在Decode阶段合并为一个信号,所以多了一个Select A部件。书上P321。主要用处是减少控制信号和寄存器的数目。因为只有call指令会在memory阶段用到valP, 只有jump指令会在execute阶段用到valP。这两种指令都不需要用到寄存器A。所以我们可以将这两个控制信号合并。这样,SEQ中的data部件就不需要了。 因为在Fetch阶段本身就有Predict PC部件。这样valP在其他场合也不需要传播到Fetch阶段之外的场合去。 * * 因为读和写寄存器都发生在Cycle 6的末尾,两者基本上同时发生,读稍微要早那么一点点,因为写有延迟。 * * * E M W三个阶段的dstM dstE和D阶段的srcA srcB比较,所以这几个信号必然都要进入Pipe control logic. E_bubble,D_stall和F_stall作为该控制逻辑的输出,控制bubble和stall行为。 * E M W三个阶段的dstM dstE和D阶段的srcA srcB比较,所以这几个信号必然都要进入Pipe control logic. E_bubble,D_stall和F_stall作为该控制逻辑的输出,控制bubble和stall行为。 * 注意:五个forward条件之间的顺序不能更换。 因为首先在pipeline中阶段越前的指令越靠近目标指令,所以如果两个不同阶段的指令写同一个寄存器,显然应该保留阶段较前的那个。 其次,同一阶段dstE可能和dstM相同,这发生在 popl %esp上。根据语义,%esp的内容应该是内存的值,而不是计算得到的值。 * 上图中的stall信号和bubble信号正是作用于这种特殊的寄存器才能起作用。 Bubble和stall同时为1是不允许的。 * 上图中的stall信号和bubble信号正是作用于这种特殊的寄存器才能起作用。 Bubble和stall同时为1是不允许的。 * 上图中的stall信号和bubble信号正是作用于这种特殊的寄存器才能起作用。 Bubble和stall同时为1是不允许的。 * 这个Na?ve pipeline说的是PIPE-或者是使用stall技术的简单pipeline * * 通过增加pipeline寄存器,我们将整个指令执行过程划分为5个阶段(stage)。 因为计算PC这一阶段的工作量太小了,所以于Fetch阶段合并。 注意:事实上PIPE-的很多部件和大体流程都是与SEQ+非常类似的。 图中的长条形灰色方框就是流水线寄存器。每个都包含了许多个对应的寄存器。 * * Eax的内容没有问题。因为decode需要它是在clock cycle的结尾,这时ALU已经计算出结果了。所以可以直接把ALU的输出作为forward的输入。 * 因为原来valA是通过选择Select valP和srcA对应的值来的。现在srcA对应的值通过forward模块进行选择到底从那里得到。所以valA必须经过select和forward两个模块。所以简写为 Sel+Fwd A. * 因为原来valA是通过选择Select valP和srcA对应的值来的。现在srcA对应的值通过forward模块进行选择到底从那里得到。所以valA必须经过select和forward两个模块。所以简写为 Sel+Fwd A. * 注意:五个forward条件之间的顺序不能更换。 因为首先在pipeline中阶段越前的指令越靠近目标指令,所以如果两个不同阶段的指令写同一个寄存器,显然应该保留阶段较前的那个。 其次,同一阶段dstE可能和dstM相同,这发生在 popl %esp上。根据语义,%esp的内容

您可能关注的文档

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档