我有一个关于异常的流水线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
指令。所以,这张图肯定是不完整的。
很有可能对数据内存访问(也包括指令内存访问)的异常进行一些处理--只是在这张图中没有提到,因为这张图忽略了一般的地址转换。