Rocket CPU中的FENCE指令是做什么的?我尝试通过 fpga 源代码但找不到它。
另外,写缓冲区在哪里实现?我可能会在那里得到答案:)
最佳答案
[Rocket's source code] (Rocket 是一个 5 级处理器)。
需要 fence
的说明, 喜欢 FENCE
或某些原子操作,将在解码阶段停止,直到缓存告诉控制逻辑 fence
操作可以继续(即,缓存现在是“有序的”)。缓存通过“有序”信号完成此操作。例如,如果数据缓存有等待的未完成缓存未命中,则不会对数据缓存进行排序。
最好看的地方是ctrl.scala ,其中包含指令及其控制信号。 (非阻塞)数据缓存的代码可以在 nbdcache.scala 中找到。 .
我相信写回单元管理存储数据的写回,但这是一个非常复杂的高性能缓存,支持 AMO 和 ECC,所以不要指望它与更简单的缓存设计相匹配,而写缓存在概念上是绘制在处理器和缓存之间。
关于riscv - FENCE 在 RISC-V Rocket 处理器中的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326323/