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) 返回
 
返回当前值和下一个时钟周期的值:
​​
 

Rocket - tilelink - first的更多相关文章

  1. Rocket - tilelink - RegisterRouter

    https://mp.weixin.qq.com/s/DaJhf7hEoWsEi_AjwSrOfA   简单介绍RegisterRouter的实现.   ​​   1. 基本介绍   实现挂在Tile ...

  2. Rocket - tilelink - Nodes

    https://mp.weixin.qq.com/s/KJ8pVH76rdxPOZ1vE3QlKA   简单介绍tilelink对Diplomacy Nodes的实现.   ​​   1. TLImp ...

  3. Rocket - tilelink - AsyncCrossing

    https://mp.weixin.qq.com/s/v8plWCBD8vZkxykjJe4TCg   介绍AsyncCrossing的实现,主要介绍如何实现diplomacy Node和LazyMo ...

  4. Rocket - tilelink - mask

    https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg   讨论tilelink中使用MaskGen生成mask的用法.   1. tilelink中的ma ...

  5. Rocket - tilelink - Parameters

    https://mp.weixin.qq.com/s/1I6DcONr0Mg7xiX8F1C7SQ   简单介绍TileLink相关的参数实现(具体问题暂时不展开,后续用到时再做分析).   ​​   ...

  6. Rocket - tilelink - Bundles

    https://mp.weixin.qq.com/s/jrqBg2AIpQogBrpwNXjmwg   简单介绍Bundles文件中对TileLink规范(1.7.1)的定义. 参考链接:https: ...

  7. Rocket - tilelink - TLBusWrapper.to

    https://mp.weixin.qq.com/s/jSnhBzU5_ayQCg5fWAcx-g 简单介绍TLBusWrapper.to()的实现.主要介绍确定this{...}对应代码的过程. 1 ...

  8. Rocket - tilelink - BusWrapper

    https://mp.weixin.qq.com/s/03BvgTNQtD75Guco6gUGQg   简单介绍BusWrapper的实现.   1. HasTLBusParams   定义SoC的挂 ...

  9. Rocket - tilelink - Xbar

    https://mp.weixin.qq.com/s/UXFHYEQaYotWNEhshro68Q   简单介绍Xbar的实现.   ​​   1. 基本介绍   用于为Xbar的输入和输出连接生成内 ...

  10. Rocket - tilelink - WidthWidget

    https://mp.weixin.qq.com/s/pmJcsRMviJZjMwlwYw6OgA   简单介绍WidthWidget的实现.   ​​   1. 基本介绍   用于设定与上游节点连接 ...

随机推荐

  1. 搜索+简单dp

    前言:即使是简单的递归,在复杂度过高时也可以使用简单的dp. 一般有两种情况,一是利用dp思想求最优子结构进行搜索剪枝,二是利用搜索进行dp数组的填充. 例题一.hdu1978 题目大意:这是一个简单 ...

  2. [蓝桥杯2018初赛]小朋友崇拜圈(dfs找环)

    传送门 思路: 题意大意:n条有向边,找出最大环. 我们发现,如果一个小朋友没有被任何人崇拜,那么他一定不位于环中.为此我们可以设置一个indug数组预处理.如果2被崇拜了那么indug[2]就加加, ...

  3. spring中bean的常用属性

    一.scop scope用来配置bean对象是否是单例模式.单例模式是java的二十三种设置模式之一,指在这个项目运行过程中一 个类的对象只会实例化一次.一般,工厂类的对象都是单例模式.非单例模式叫多 ...

  4. 数据库-第八章 数据库编程-8.1 嵌入式SQL

    嵌入式SQL 一.嵌入式SQL的处理过程 1.嵌入式SQL语句的基本格式 2.嵌入式SQL的处理过程 3.主语言访问数据库的基本步骤 ⅰ建立数据库连接 ⅱ定义必要的主变量和数据通信区 ⅲ访问数据库并返 ...

  5. Ubuntu+uWSGI部署Django项目【鸿篇巨制,事无巨细】

    背景 任务: 视频翻译项目需要在两个服务器上进行通信(国内&海外的阿里服务器). 因为python是主语言,选用了Django 来快速部署API. 注:Django中文文档:https://d ...

  6. struts2 自定义tag标签

    在项目中可能有很多相同的jsp页面表示功能,这时可以使用自定义的tag进行定义,渐少重复的工作量便于日后维护! 下面就基于struts2进行自定义标签的定义与实现: 首先:自定义类MyTag继承str ...

  7. fastadmin后台:在表单操作项添加操作按钮并控制弹出页面的大小

    1.进入对应目录:eg(public/assets/js/backend/conmpany.js) 2.在field:'operate' 中添加buttons 源码: {field: 'operate ...

  8. k8s安装部署成功

  9. quartzJob

    定时任务的时间修改.暂停.立即执行 定时任务的修改.暂停主要是调用quartz内置方法pauseJob().resumeJob().triggerJob()等方法 //暂停一个job JobKey j ...

  10. Arthas 使用(二) —— 应用场景

    1. ognl获取bean SpringContextUtil,通常代码中会有类似这样的工具类用来获取 bean 实例 @Component public class SpringContextUti ...