• Rocket core ex_slow_bypass


    https://mp.weixin.qq.com/s/5FpKbfJFWPXZCFFXrhAXDQ

     

    简单介绍ex_slow_bypass相关的实现。

     

    1. ex_slow_bypass

     

    ex_slow_bypass表示指令为sc,或者访问的内存大小小于4字节的情况:

     

    ex_slow_bypass用于更新mem_reg_slow_bypass的值:

     

    2. mem_reg_slow_bypass

     

    mem_reg_slow_bypass是一个寄存器,用于生成mem_mem_cmd_bh信号:

     

    3. mem_mem_cmd_bh

     

    mem_mem_cmd_bh表示是否可以快速完成指令要求的内存命令。其取值的真值表如下:

    其中:

    a. fastLoadWord表示是否支持快速Load字大小的数据,如果不支持,则无论访问内存的大小是字节、半字、字,都无法快速完成;

    b. fastLoadByte表示是否支持快速Load字节大小的数据,如果支持,则load byte和load Half-word也和load-word一样快;如果不支持,则需要判断访存大小,如果是字节、半字则慢,如果是字则快;

    c. 这里隐含的一个情况是:如果不支持fastLoadWord,则不支持fastLoadByte。如果支持fastLoadWord,也不一定支持fastLoadByte。这与生成dcache_bypass_data时的用法相一致:

    先判断更不可能的fastLoadByte,然后在判断可能性更高的fastLoadWord。因为如果先判断fastLoadWord,即便判断了也无法直接取数据。

     

    4. mem_cannot_bypass

     

    mem_cannot_bypass中将mem_ctrl.mem和mem_mem_cmd_bh一起用于判断内存操作是否不能快速完成,如果不能快速完成,则不能用于向后续指令bypass数据,而必须要将后续指令bypass。

    这里加入mem_ctrl.mem是因为mem_mem_cmd_bh中只判断了访存的大小,并没有判断是否内存操作。

     

    在mem_ctrl.mem为真的情况下,加入mem_cannot_bypass的真值表如下:

     

    cannot bypass理解起来需要转一个弯,这里将其取反一下:

     

    5. dcache_bypass_data

     

    dcache_bypass_data也与fastLoadWord和fastLoadByte相关,其定义如下:

     

    在mem_ctrl.mem为真的情况下,其真值表如下:

     

    dcache_bypass_data的使用如下:

    如果mem_ctrl.mem为假,则使用第三个匹配项。

    如果mem_ctrl.mem为真,则使用第四个匹配项。结合上方的真值表,针对dcache_bypass_data的三种可能的情况:

    a. wb_reg_wdata不存在被用于作为转发的情况,实际上wb_reg_wdata中也没有存放load的结果,不能用于bypass;也就是说,如果既不支持fastLoadWord,也不支持fastLoadByte,那么load指令都不能bypass。

    b. io.dmem.resp.bits.data和io.dmem.resp.bits.data_word_bypass都存在用于转发的情况;

     

    如果Load的数据要用于bypass,那么必须在dcache命中的情况下,只有这样load指令才能在WB阶段返回数据。如果不命中的情况下,则无法在WB阶段返回数据。如此将会导致需要bypass数据的指令被replay,即重新执行:

     

    replay_ex_load_use的效果参考如下图示:

     

  • 相关阅读:
    Asp.net MVC中 Controller 与 View之间的数据传递
    Asp.net中WebForm 与 MVC的架构区别
    初步理解MVC
    JavaScript 设置、读取Cookie
    JavaScript 设计模式之工厂模式
    JavaScript对象 属性
    JavaScript中对于闭包的理解
    WebApi 实例
    webservice 简单实例
    【转】Linq 语法
  • 原文地址:https://www.cnblogs.com/wjcdx/p/16036333.html
Copyright © 2020-2023  润新知