FENCE指令在Rocket CPU中是用来做什么的?我试着查看FPGA源代码,但是没有找到它。
另外,写缓冲区实现在哪里?我可能可以在那里找到答案 :)
FENCE指令在Rocket CPU中是用来做什么的?我试着查看FPGA源代码,但是没有找到它。
另外,写缓冲区实现在哪里?我可能可以在那里找到答案 :)
[Rocket的源代码](Rocket是一个5级处理器)。
需要fence
的指令,例如FENCE
或某些原子操作,在解码阶段将被停顿,直到缓存告诉控制逻辑可以执行fence
操作为止(即,缓存现在是“有序”的)。缓存通过“ordered”信号来实现这一点。如果数据缓存有未完成的缓存未命中等待,则数据缓存不会被排序。
最好的查找位置是ctrl.scala,其中包含指令及其控制信号。 (非阻塞)数据缓存的代码可以在nbdcache.scala中找到。
我认为写回单元控制着存储数据的写回,但这是一个非常复杂、高性能的缓存,支持AMO和ECC,因此不要期望它与更简单的缓存设计相匹配,在这些设计中,写缓冲区在概念上被绘制在处理器和缓存之间。