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

时间:2015-02-04 16:23:57

标签: riscv

FENCE指令在Rocket CPU中的作用是什么?我试过通过fpga源但无法找到它。

除此之外,写缓冲区在哪里实现?我可能会在那里得到答案:)

1 个答案:

答案 0 :(得分:5)

[Rocket's source code](火箭是一个5级处理器)。

需要fence的指令,如FENCE或某些原子操作,将在解码阶段停止,直到缓存告诉控制逻辑可以进行fence操作(即,缓存现在是“有序”的)。缓存通过“有序”信号执行此操作。例如,如果数据高速缓存有等待的未完成高速缓存未命中,则不会对其进行排序。

最好看的地方是ctrl.scala,其中包含说明及其控制信号。 (非阻塞)数据缓存的代码可以在nbdcache.scala中找到。

我相信写回单元管理存储数据的写回,但这是一个非常复杂的高性能缓存,支持AMO和ECC,所以不要指望它匹配更简单的缓存设计,其中写缓冲区从概念上讲,它将被绘制为处理器和缓存之间。