riscv - FENCE 在 RISC-V Rocket 处理器中的实现

标签 riscv

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/

相关文章:

assembly - 理解用于函数调用的auipc+jalr序列

system-calls - riscv:qemu scall 与 spike ecall

scala - 使用泛型类型关闭数据路径中的逻辑(Chisel)

assembly - RISC-V 汇编器正在用 bne + jal 取代 beq 指令

qemu - qemu-riscv 如何将 Device Tree Blob 传递给 guest 内核?

cpu-architecture - RISC-V : Implementing SLLI, SRLI 和 SRAI

compiler-construction - RISC-V指令集中的FENCE指令是什么意思?

linux - 如何将文件放入riscv linux?