【发布时间】:2015-02-04 16:23:57
【问题描述】:
FENCE 指令在 Rocket CPU 中的作用是什么?我尝试通过 fpga 源但找不到它。
另外,写缓冲区在哪里实现?我可能会在那里得到答案:)
【问题讨论】:
标签: riscv
FENCE 指令在 Rocket CPU 中的作用是什么?我尝试通过 fpga 源但找不到它。
另外,写缓冲区在哪里实现?我可能会在那里得到答案:)
【问题讨论】:
标签: riscv
[Rocket's source code](Rocket 是一个 5 级处理器)。
需要fence 的指令,如FENCE 或某些原子操作,将在解码阶段停止,直到缓存告诉控制逻辑fence 操作可以继续(即,缓存现在是“订购”)。缓存通过“ordered”信号执行此操作。数据缓存不会被排序,例如,如果它有一个未完成的缓存未命中它正在等待。
查看的最佳位置是ctrl.scala,其中包含指令及其控制信号。 (非阻塞)数据缓存的代码可以在nbdcache.scala找到。
我相信写回单元控制着存储数据的写回,但这是一个非常复杂的高性能缓存,支持 AMO 和 ECC,所以不要指望它匹配更简单的缓存设计,其中写缓冲区在概念上将被绘制为位于处理器和缓存之间。
【讨论】: