首页 > 其他分享 >3.6 流水线逻辑控制

3.6 流水线逻辑控制

时间:2023-06-03 12:34:32浏览次数:33  
标签:状态 逻辑 3.6 指令 阶段 寄存器 流水线 气泡

加载/使用冒险:在一条从内存中读出一个值的指令和一条使用该值的指令之间,流水线必须暂停一个周期。 处理ret:流水线必须暂停直到ret指令到达写回阶段。 预测错误的分支:在分支逻辑发现不应该选择分支之前,分支目标处的几条指令已经进入流水线了。必须取消这些指令,并从跳转指令后面的那条指令开始取指。 异常:当一条指令导致异常,我们想要禁止后面的指令更新程序员可见的状态,并且在异常指令到达写回阶段时,停止执行。 我们先浏览每种情况所期望的行为,然后再设计处理这些情况的控制逻辑。 特殊情况的处理 对加载/使用冒险所期望的流水线操作。只有mrmovq和popq指令会从内存中读数据。当这两条指令中的任一条处于执行阶段,并且需要该目的寄存器的指令正处在译码阶段时,我们要将第二条指令阻塞在译码阶段,并在下一个周期往执行阶段中插入一个气泡。此后,转发逻辑会解决这个数据冒险。可以将流水线寄存器D保持为固定状态,从而将一个指令阻塞在译码阶段。这样做还可以保证流水线寄存器E保持为固定状态,由此下一条指令会被再取一次。总之,实现这个流水线流需要发现冒险的情况,保持流水线寄存器F和D固定不变,并且在执行阶段中插入气泡。   对ret的实际处理过程,每个周期,取指阶段从指令内存中读出一条指令,对ret指令来说,PC的新值被预测成valP,也就是ret下一条指令的地址,但是我们并不期望运行ret后面的指令,要运行call之后的指令,就要在取指阶段暂停三个周期,直到访存阶段取出call后面的指令开始。   当分支预测错误发生时,当跳转指令到达执行阶段时就可以检测到预测错误。然后在下一个时钟周期,控制逻辑就会在译码和执行段插入气泡,取消两条不正确的已取指令。在同一个时钟周期,流水线将正确的指令读取到取指阶段。   对于导致异常的指令,我们必须使流水线化的实现符合期望的ISA行为,也就是在前面所有的指令结束前,后面的指令不能影响程序的状态。一些因素会使得想达到这些效果比较麻烦:1)异常在程序执行的两个不同阶段(取指和访存)被发现的,2)程序状态在三个不同阶段(执行、访存和写回)被更新。 在我们的阶段设计中,每个流水线寄存器中会包含一个状态码stat,随着每条指令经过流水线阶段,它会记录指令的状态。当异常发生时,我们将这个信息作为指令状态的一部分记录下来,并且继续取指、译码和执行指令,就好像什么都没有出错似的。当异常指令到达访存阶段时,我们会采取措施防止后面的指令修改程序员可见的状态:1)禁止执行阶段中的指令设置条件码,2)向内存阶段中插入气泡,以禁止向数据内存中写入,3)当写回阶段中有异常指令时,暂停写回阶段,因而暂停了流水线。 流水线控制机制 流水线控制逻辑能将指令阻塞在流水线寄存器中或是往流水线中插入一个气泡。假设每个流水线寄存器有两个控制输入:暂停和气泡。这两个输入都为0,使得寄存器加载它的输入作为新的状态。暂停信号1,气泡信号0时,禁止更新状态。暂停信号0,气泡信号0时,寄存器状态会设置成某个固定的复位配置,得到一个等效于nop指令的状态。将暂停气泡都为1看成出错。  

 

   

标签:状态,逻辑,3.6,指令,阶段,寄存器,流水线,气泡
From: https://www.cnblogs.com/LCAB/p/17453742.html

相关文章

  • 6设计指令流水线-2【FPGA模型机课程设计】
    6设计指令流水线-2【FPGA模型机课程设计】前言推荐6设计指令流水线-2安排测试与结果指令流水线理论MIPS的一种简单实现基本的MIPS流水线指令流水线实现MIPS五段流水CPU设计视频中的测试代码设计分析设计思路问题回答代码设计IDEXMEMRegFileMIPSInstMem附录3ID译码4EX执行5MEM......
  • 2023.6.2linux系统文件查找
    03.Linux系统⽂件查找⽂件查找概述find名称查找find⼤⼩查找find时间查找find⽤户查找find类型查找find权限查找find处理动作Authorvx:WingspanGo⽂件查找概述Linux系统中的find命令在查找⽂件时⾮常有⽤⽽且⽅便。它可以根据不同的条件来进⾏查找⽂件:例如⽂件......
  • 2023.6.3——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 数据库逻辑结构设计
    目录ER图向关系模型的转换数据模型的优化设计用户子模式ER图向关系模型的转换如何将实体型和实体间的联系转换为关系模式如何确定关系模式的属性和码一个实体型转换为一个关系模式m:n转换为一个关系模式三个或三个以上实体间的一个多元联系可以转换为一个关系模式具有相......
  • 2023.6.2
    数据库的关系模式的设计 设有关系模式:教师授课(课程号,课程名,学分,教师号,教师名,职称,授课时数,授课学年),其语义为:一门课程(由课程号决定)有确定的课程名和学分,每名教师(由教师号决定)有确定的教师名和职称,每门课程可以由多名教师讲授,每名教师也可以讲授多门课程,在同一学年每个教师对......
  • 2023.6.2——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午考web。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 3.5 Y84-64的流水线实现
    我们终于准备好要开始本章的主要任务——设计一个流水线化的Y86-64处理器。首先,对顺序的SEQ处理器做一点小的改动,将PC的计算挪到取指阶段。然后,在各个阶段之间加上流水线寄存器。到这个时候,我们的尝试还不能正确处理各种数据和控制相关。不过,做一些修改,就能实现我们的目标——一个......
  • 每日总结-23.6.1
    创建和添加HttpSessionsession=request.getSession();session.setAttribute("customerInfo","1");12设置过期时长:1.1:在主页面或者公共页面中加入:session.setMaxInactiveInterval(15*60);1参数说明:单位秒,即在没有活动15分钟后,session将失效。如果设置的值为零或负数,则表示会话将......
  • 2023.6.1——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 微信小程序 - 视图与逻辑
    【黑马程序员前端微信小程序开发教程,微信小程序从基础到发布全流程_企业级商城实战(含uni-app项目多端部署)】https://www.bilibili.com/video/BV1834y1676P/?p=44&share_source=copy_web&vd_source=03c1dc52eeb3747825ecad0412c18ab1页面导航1.什么是页面导航页面导航指的是......