Exception 为什么在异常的管道中没有MEM.flush?

Exception 为什么在异常的管道中没有MEM.flush?,exception,pipeline,flush,riscv,Exception,Pipeline,Flush,Riscv,我对管道冲洗的例外情况有疑问。 在RISC-V中,管道中有IF.flush、ID.flush和EX.flush作为例外。 但我想知道为什么在异常的管道中没有MEM.flush。 我认为如果我们在MEM stage中检测到异常(例如无效的数据内存访问),我们必须刷新MEM stage以使MEM.RegWrite值为0 谢谢。这些图表一定不完整,所以我不会太认真 本文没有提到虚拟内存、地址转换、加载/存储故障,甚至没有提到指令内存地址转换和故障等 这些图表中通常缺少的其他内容包括: 为jal类型指

我对管道冲洗的例外情况有疑问。 在RISC-V中,管道中有IF.flush、ID.flush和EX.flush作为例外。 但我想知道为什么在异常的管道中没有MEM.flush。 我认为如果我们在MEM stage中检测到异常(例如无效的数据内存访问),我们必须刷新MEM stage以使MEM.RegWrite值为0


谢谢。

这些图表一定不完整,所以我不会太认真

本文没有提到虚拟内存、地址转换、加载/存储故障,甚至没有提到指令内存地址转换和故障等

这些图表中通常缺少的其他内容包括:

  • jal
    类型指令捕获
    pc
    -没有将
    pc
    转发到寄存器的数据路径
  • pc
    从寄存器更改为
    jr
    -类型的跳转寄存器-寄存器没有数据路径进入
    pc
    指示
  • 这类图中也没有缓存未命中(I$或D$)
  • 我已经提到数据和指令存储器都缺少地址转换
  • AUIPC指令还缺少一些数据路径
因此,这个图表肯定是不完整的

对于数据内存访问(也包括指令内存访问),很可能会有一些异常处理——在这个图中没有提到,因为这个图通常忽略了地址转换