https://mp.weixin.qq.com/s/oZCYBdy5glxJQmYKVWvpvA

 
简单介绍BankBinder的实现。
 
 
1. 基本介绍
 
A BankBinder is used to divide contiguous memory regions into banks, suitable for a cache:
a. BankBinder把连续的内存区域分成多个bank;
b. 每个Bank的大小与cache相匹配;
 
2. 使用
 
在ExampleRocketSystem中有使用:
其中:
a. 上游节点out连接到下游节点BankBinder,星号(*)在BankBinder一侧,即绑定中所包含的连接数由BankBinder节点决定;
b. 上游节点BankBinder连接到下游节点mbus.inwardNode,星号(*)在BankBinder一侧,即绑定中所包含的连接数由BankBinder节点决定;
c. nBanks和mbus.blockBytes都是2的幂;
 
3. BankBinderNode
 
LazyModule BankBinder中用于协商参数的diplomacy Node即为BankBinderNode:
BankBinderNode决定星型绑定中连接的数量,以及参数如何向上向下传递。
 
1) mask
 
生成BankBinder使用的参数,包含:
a. 每个bank的大小;
b. bank的mask;
 
实际使用中:
a. mbus.blockBytes为2的幂,是一个bank的大小,假设为0b0001_0000;
b. nBanks为2的幂,是bank的数目,假设为4,那么nBanks - 1 = 3 = 0b11;
c. mbus.blockBytes * (nBanks - 1) = 0b0011_0000;
 
2) bit
 
从mask中取出的最低位的1(mask & -mask),就是mbus.blockBytes,即bank的大小;
 
3) ids
 
mask中所有1的所有组合(AddressSet.enumerateMask(mask)),就是nBanks,即bank的数目;
 
4) maxXfer
 
最大的传输大小不超过bank的大小:
 
5) resolveStar
 
BankBinderNode是一个TLCustomNode,需要自己实现resolveStar:
a. BankBinder只是把上游的各个bank和下游的各个bank一一绑定到一起,两者数目相同都是ids.size;
b. oStars是输出侧星号的数目,如果星号的数目为0,那么星型绑定resove之后所得连接的数目也是0;如果星号的数目不是0,那么总连接数(ports)减去已知连接数的差值,除以星型绑定的数目,就是星型绑定中包含的连接的数目。(这里假设每个星型绑定包含的连接数目相等,否则就只能有一个星型绑定。)
c. iStars与oStars同理;
d. ports == iKnown + iStar * iStars表明了各个参数之间的关系;
 
6) mapParamsD
 
参数向下传递,根据上游节点传递给BankBinder的参数,生成BankBinder传递给下游节点的参数。亦即使用BankBinder看到的上游节点的参数,生成BankBinder给下游节点看的参数。
其中:
a. visibility使用id取其中的部分,即当前bank对应的那部分;
b. 支持的传输大小(supportsXXX)需要与maxXfer取交集;
 
7) mapParamsU
 
参数向上传递,根据下游节点传递给BankBinder的参数,生成BankBinder传递给上游节点的参数。亦即使用BankBinder看到的下游节点的参数,生成BankBinder给上游节点看的参数。
 
4. class BankBinder
 
LazyModule BankBinder中包含两个部分:
a. diplomacy节点:node;
b. lazy val module;
 
diplomacy节点node根据与上下游节点的连接以及协商而得的参数,生成模块外部接口(输入和输出接口);
lazy val module实现内部逻辑,即如何使用输入接口输入的数据、如何连接到输出接口;
这里的内部逻辑很简单,就是直接相连:out <> in。
 
5. object BankBinder
 
伴生对象,方便创建BankBinder(LazyModule),返回的其diplomacy node。用于与其他节点连接和绑定。
 

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

  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的输入和输出连接生成内 ...

随机推荐

  1. 前缀和(P2697 宝石串)

    前言 每次做出来什么本来做不出的题目,就忍不住记录一下.不过大多时候隔几天来看,就发现,啊,我当时只是做了一道这么弱智的题目呀,哈哈.前缀和确实不算太难.. 传送门 题目大意: 给你一个字符串只含G和 ...

  2. NetCore项目实战篇04---集成IdentityService4

    大家都知道我们的项目中已有web api,现在可以正式访问,不论任何人只要通过输入对应的api网址就可以访问到我们的api 资源,这样是很不安全的,我们需求对当前用户进行身份验证,因此我们在项目中使用 ...

  3. bootstrap4中bootstrap_treeview不显示图标原因以及解决办法

    1.bootstrap4中bootstrap_treeview不显示图标原因 查看过大神的博客,经过自己试验,插件依赖: bootstrap/3.3.7 jquery/3.3.1 <link h ...

  4. python地图投影转换

    一.投影包osr与proj4的使用 1.osr投影转换示例 from osgeo import osr,ogr#定义投影#wgs84source=osr.SpatialReference()sourc ...

  5. opencv-12-高斯滤波-双边滤波(附C++代码实现)

    开始之前 这几天由于自己的原因没有写, 一个是因为自己懒了, 一个是感觉这里遇到点问题不想往下写了, 我们先努力结束这个章节吧, 之前介绍了比较常用而且比较好理解的均值和中值滤波, 但是呢,在例程Sm ...

  6. flush方法和close方法的区别

    package com.yhqtv.demo05.Writer; import java.io.FileWriter; /* * @author XMKJ yhqtv.com Email:yhqtv@ ...

  7. 黑马程序员_毕向东_Java基础视频教程——类型转换(随笔)

    类型转换 class Test{ public static void main(String[] args) { byte b = 3; // b = b + 2; /* Test.java:5: ...

  8. Spring-mvc 配置文件applicationContext.xml

    相关jar包(4.3.16.RELEASE) <!-- Spring mvc 基础jar包,maven 依赖 --> <dependency> <groupId>o ...

  9. 一、HDFS 原理分析

    HDFS 全称 Hadoop Distribute File System,是 Hadoop 的一个分布式文件系统 一.HDFS 的系统结构 1.1 数据块 -- block 文件在 HDFS 上分块 ...

  10. Spring + Struts + Hibernate + Bootstrap-table 实现分页和增删改查

    1.bootstrap界面效果图: 2.Teacher实体类 public class Teacher { private int id; private String name; private S ...