为什么在管道中没有MEM.flush for exceptions?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在管道中没有MEM.flush for exceptions?相关的知识,希望对你有一定的参考价值。

这里是RISC-V管道的异常刷新的图片

我有一个关于异常的流水线flush的问题,在RISC-V中,有IF.flush、ID.flush和EX.flush的流水线,但是不知道为什么没有MEM.flush的流水线,我想如果我们在MEM阶段检测到异常(例如Invalid Data memory access),我们必须在MEM阶段进行flush,使MEM.RegWrite值为0。

谢谢你。

答案

这种图必然是不完整的,所以我不会太认真。

文中只字未提虚拟内存、地址转换、loadstore故障,甚至指令内存地址转换&故障等。

这些图中普遍缺少的其他内容包括:。

  • 捕捉到... pc 对于 jal类型的指令--没有数据路径可以转发 pc 册的变化。
  • 的变化。pc 从寄存器,为跳转寄存器为 jr类型--没有数据路径让寄存器进入到 pc指令。
  • 这类图中也没有缓存遗漏的情况(I$或D$)。
  • 我已经提到了数据和指令存储器的地址转换缺失问题
  • AUIPC指令也缺少一些数据路径。

所以,这张图肯定是不完整的。

很有可能对数据内存访问(也包括指令内存访问)的异常进行一些处理--只是在这张图中没有提到,因为这张图忽略了一般的地址转换。

以上是关于为什么在管道中没有MEM.flush for exceptions?的主要内容,如果未能解决你的问题,请参考以下文章

C Linux 编程 - 管道使子进程退出

这些 for 循环有啥区别?

是否可以使用经典 UI 在 for 循环中运行 Azure DevOps 管道任务?

如何在Jenkins管道中使用自定义Dockerfile名称?

仅在管道前后删除空格[重复]

为什么我在python中的sklearn中使用管道获取不同的值而没有管道