热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Rocket–core–wb_reg_flush_pipe

https:mp.weixin.qq.coms6WVmHCY0nd_AtOBByfgJVA 简单介绍wb_reg_flush_pipe的作用。  1.wb_reg_flush_pi

https://mp.weixin.qq.com/s/6WVmHCY0nd_AtOBByfgJVA

 

简单介绍wb_reg_flush_pipe的作用。

 

 

1. wb_reg_flush_pipe值的由来

 

1) wb_reg_flush_pipe

wb_reg_flush_pipe的值是通过流水线从mem_reg_flush_pipe传递而来的。

如果没有kill mem阶段,则可以把mem_reg_flush_pipe传递给wb_reg_flush_pipe:

这里kill mem的典型情况是mem_reg_valid为假,即mem阶段流水线寄存器的值不合法。

 

2) mem_reg_flush_pipe

 

mem_reg_flush_pipe的值从ex_reg_flush_pipe传递而来:

如果不考虑debug的情况,mem_reg_flush_pipe直接在ex_pc_valid的控制下,由ex_reg_flush_pipe传递而来。

 

ex_pc_valid主要的情况为ex_reg_valid,即ex阶段流水线寄存器的值是合法的。在中断的情况下,ex_pc_valid也为真。

 

3) ex_reg_flush_pipe

 

ex_reg_flush_pipe的值使用id阶段生成的值更新:

这里存在两种情况:

a. 指令为fence_i指令;

b. csr指令要求flush流水线;

 

2. wb_reg_flush_pipe的使用

 

wb_reg_flush_pipe可以导致take_pc_wb,进而导致take_pc,要求重新取指。重新取指的pc是随着flush pipe一路传递而来的wb_reg_pc,其源头为ibuf.io.pc。

 

3. 对流水线的影响

 

所谓flush pipe就是刷新流水线。即以带有flush效果的指令为分界,之前的指令都执行完成之后,才能重新取指进行执行。

 

以fence_i指令为例:

a. 在ID阶段,fence_i指令导致ex_reg_flush_pipe的值将要被更新为1:

因为fence_i是一条正常指令,所以ctrl_killd = 0;

 

b. 在EX阶段,fence_i指令正常执行:

mem_reg_flush_pipe将要被更新为1。

 

c. 在MEM阶段,fence_i指令正常执行:

wb_reg_flush_pipe将要被更新为1。

 

d. 在WB阶段,fence_i指令触发take_pc:

take_pc实时导致之前的各阶段被废弃(killd/killx/killm),并重新取指。

 



推荐阅读
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 本文介绍了在安装或运行 Python 项目时遇到的 'ModuleNotFoundError: No module named setuptools_rust' 错误,并提供了解决方案。 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 离线环境下的Python及其第三方库安装指南
    在项目开发中,有时会遇到电脑只能连接内网或完全无法联网的情况。本文将详细介绍如何在这种环境下安装Python及其所需的第三方库,确保开发工作的顺利进行。 ... [详细]
  • Babylon.js 实例展示
    探索 Babylon.js 的强大功能,通过全屏演示体验其卓越性能。本文提供在线文档链接和默认渲染管线的源码调试地址,帮助您深入了解 Babylon.js 的工作原理。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了如何像程序员一样思考,强调了将复杂问题分解为更小模块的重要性,并讨论了如何通过妥善管理和复用已有代码来提高编程效率。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
author-avatar
freezing-wing
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有