为什么管道中没有 MEM.flush 异常?
Why there is no MEM.flush in pipeline for exceptions?
Here is img of RISC-V pipeline with flush for exceptions
我对异常的管道冲洗有疑问。
在 RISC-V 中,管道中有 IF.flush、ID.flush 和 EX.flush 用于处理异常。
但我想知道为什么管道中没有 MEM.flush 异常。
我认为如果我们在 MEM 阶段检测到异常(例如无效的数据内存访问),我们必须刷新 MEM 阶段以使 MEM.RegWrite 值为 0。
谢谢。
这种图肯定是不全的,我就不当真了。
文中未提及虚拟内存、地址转换、load/store 故障,甚至指令内存地址转换和故障等。
这些图表中通常缺少的其他内容包括:
- 捕获
pc
用于 jal
类型的指令 — 没有将 pc
转发到寄存器的数据路径。
- 从寄存器更改
pc
,用于 jr
类型的跳转寄存器 — 没有数据路径让寄存器转到 pc
说明。
- 这些图表中也没有缓存未命中(I$ 或 D$)
- 我已经提到缺少数据和指令存储器的地址转换
- AUIPC 指令也缺少一些数据路径
所以,这张图肯定是不完整的。
很可能对数据内存访问(也适用于指令内存访问)的异常进行了一些处理 — 只是在此图中未提及,因为此图通常忽略了地址转换。
Here is img of RISC-V pipeline with flush for exceptions
我对异常的管道冲洗有疑问。 在 RISC-V 中,管道中有 IF.flush、ID.flush 和 EX.flush 用于处理异常。 但我想知道为什么管道中没有 MEM.flush 异常。 我认为如果我们在 MEM 阶段检测到异常(例如无效的数据内存访问),我们必须刷新 MEM 阶段以使 MEM.RegWrite 值为 0。
谢谢。
这种图肯定是不全的,我就不当真了。
文中未提及虚拟内存、地址转换、load/store 故障,甚至指令内存地址转换和故障等。
这些图表中通常缺少的其他内容包括:
- 捕获
pc
用于jal
类型的指令 — 没有将pc
转发到寄存器的数据路径。 - 从寄存器更改
pc
,用于jr
类型的跳转寄存器 — 没有数据路径让寄存器转到pc
说明。 - 这些图表中也没有缓存未命中(I$ 或 D$)
- 我已经提到缺少数据和指令存储器的地址转换
- AUIPC 指令也缺少一些数据路径
所以,这张图肯定是不完整的。
很可能对数据内存访问(也适用于指令内存访问)的异常进行了一些处理 — 只是在此图中未提及,因为此图通常忽略了地址转换。