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. Java 常用API(一)

    目录 Java 常用API(一) 1. Scanner类 引用类型的一般使用步骤 Scanner的使用步骤 例题 2. 匿名对象 概述 匿名对象作为方法的参数 匿名对象作为方法的返回值 3. Rand ...

  2. centos7启动httpd服务失败:Job for httpd.service failed because the control process exited with error code.

    centos7启动httpd命令有两个可以用 service httpd start    systemctl start httpd.service 如果出现如下报错 Job for httpd.s ...

  3. Python3+Pycharm+PyQt5环境搭建步骤

    搭建环境: 操作系统:Win10 64bit Python版本:3.7 Pycharm:社区免费版 一.Python3.7安装 下载链接:官网 https://www.python.org/downl ...

  4. 800+Java后端经典面试题,希望你找到自己理想的Offer呀~

    前言 在茫茫的互联网海洋中寻寻觅觅,我收藏了800+道Java经典面试题,分享给你们.建议大家收藏起来,在茶余饭后拿出来读一读,以备未雨绸缪之需.另外,面试题答案的话,我打算后面慢慢完善在github ...

  5. 一篇文章根治各种HR面的套路问题,文章给出参考答案

    引 IT 行业更重要的是技术面. HR 面只是最后一道把关, 检查这个应聘者是否存在一些 "致命缺陷". 所以整体的面试过程, 大家要保持不卑不亢, 淡定从容, 条理清晰, 沉着稳 ...

  6. 2018-08-26 jQuery与javaScript的区别及核心方法

    1.jq对象就是js new Object 生成的普通对象. 2.jq对象与js对象,他们的方法不能共用! 3.jq对象与js对象的相互转化: js对象转jq对象 -> $(js_obj);// ...

  7. My sql的知识点 不足点请指点谢谢

    My SQL:(关系数据库) 数据库能够能够干吗? 1. :存储大量的信息,方便检索和访问    2. :保持数据信息的一致,完整      3. : 共享和安全 4. : 通过组合分析,产生新的有用 ...

  8. hadoop与spark的处理技巧(一)Top N处理技巧

    1.MR的topN处理方案,假设所有输入Key都唯一 2.MR的topN处理方案,假设输入Key不唯一 3.spark的topN处理方案,假设所有输入Key都唯一,不使用top()和takeOrder ...

  9. 相机测试camera报告的问题

    AE问题 整体偏亮 整体偏暗 高光过爆 暗处过暗 对比度低/高 亮度: 关注暗处过暗 高光过爆   对比度: 关注头发,衣服 对比度低照片会有好像一层薄薄的,发蒙 关注植物,会有灰色的 AWB问题 偏 ...

  10. webpack指南(六)命令行环境配置

    webpack 命令行环境配置中,通过设置 --env 可以使你根据需要,传入尽可能多的环境变量.在 webpack.config.js 文件中可以访问到这些环境变量. webpack --env.N ...