zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/0nzkV4K1osNEQzrtITYxmw

     
    介绍Edges中first/last/done的实现。
     
     
    1. firstlastHelper
     
    辅助函数,用于确定burst中的第一个、最后一个、是否已完成、第几个beat。
    a. beats1 = beats - 1,比如如果需要4个beats,则beats1 = 3;
    b. beats是2的幂: beats = 2^size / 2^log2Ceil(beatBytes);
    c. first:counter为0时,是burst的第一个beat;
    d. last:counter为1或总数为1时,是burst的最后一个beat;
    e. done:最后一个beat输出时,标志着burst完成;
    f. count:当前beat的编号:count = beats1 & ~counter1
     
    下面简单推理一下,并非证明。
    可以看到,只有当beats为2的幂,beats1低位全1时,这种算法才成立。
     
    2. first
     
    判断是否burst的第一个beat:
     
    3. last
     
    判断是否burst的最后一个beat:
     
    4. done
     
    判断burst是否传输完成:
     
    5. firstlast
     
    同时取出first/last/done三个标志:
     
    6. count
     
    取出当前beat的编号:
     
    7. addr_inc
     
    把返回的beat编号转换为地址的增加值,方便后续传输:
     
    8. inFlight
     
    判断总线上是否有消息(message)在传输,以及正在进行传输(请求/响应对)的数目。
     
     
    1) flight
     
    记录当前传输的数目:
    a. client.endSourceId为请求端的数目;
    b. 3为能发起请求通道(channel)的数目,即a/c/e三个channel;
    c. 所以3*client.endSourceId为可以同时存在的传输的总数目;
     
    2) bce
     
    判断是否支持bce通道,即是否符合TL-C标准:
     
    3) first/last
     
    获取burst的beat标志:
     
    4) request/response
     
    判断是request还是response:
     
    5) inc
     
    只有请求的第一个beat时,才增加传输数目:
     
    6) dec
     
    只有响应的最后一个beat时,才减少传输数目:
     
    7) next_flight
     
    PopCount统计inc/dec中比特值为1的位的个数,与当前值相加减,即为下一个值。
     
    8) 返回
     
    返回当前值和下一个时钟周期的值:
     
  • 相关阅读:
    XCode快捷键 转
    [iOS] UIView的clipsTobounds属性
    ios 重用UI部分代码的好方法(再也不用为局部变量的命名而烦恼啦!)
    symbol(s) not found for architecture armv7
    duplicate symbol _main in: / linker command failed with exit code 1
    xcode4.3.2 arc模式下导入非arc的文件 转
    objective-c block 详解 转
    将asi-http-request引入到ARC工程需要做的 转
    浅用block 转
    在Xcode4.5中禁用ARC(Automatic Referencing Counting) 转
  • 原文地址:https://www.cnblogs.com/wjcdx/p/11193959.html
Copyright © 2011-2022 走看看