为什么在管道中没有MEM.flush for exceptions?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在管道中没有MEM.flush for exceptions?相关的知识,希望对你有一定的参考价值。
我有一个关于异常的流水线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?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用经典 UI 在 for 循环中运行 Azure DevOps 管道任务?