【问题标题】:Implementation of FENCE in the RISC-V Rocket processorFENCE 在 RISC-V Rocket 处理器中的实现
【发布时间】:2015-02-04 16:23:57
【问题描述】:

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

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

【问题讨论】:

    标签: riscv


    【解决方案1】:

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

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

    查看的最佳位置是ctrl.scala,其中包含指令及其控制信号。 (非阻塞)数据缓存的代码可以在nbdcache.scala找到。

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

    【讨论】:

    • 谢谢克里斯。是否有任何地方记录了这种机制?由于 Rocket 是一个有序的核心,我想没有投机执行支持。在栅栏和原子指令上停滞似乎是保守的,因为整个研究都在减少这种开销。
    • 我会在此处 (riscv.org/workshop-jan2015.html) 上查看有关 Rocket 的视频和幻灯片以进行概述。但是对于这种低层次的细节,恐怕现在代码是最好的文档。我认为实际上没有任何研究——甚至没有任何意义——在 5 级处理器中推测性地加速越过栅栏。罚款太小,成本太高。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 2020-10-18
    • 2020-09-04
    • 1970-01-01
    相关资源
    最近更新 更多