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

 
简单介绍Bundles文件中对TileLink规范(1.7.1)的定义。
 
1. TLMessages
 
1) 定义TileLink支持的各种消息:
 
两点区别:
a. Acquire分成了两个AcquireBlock和AcquirePerm;
b. 使用Hint/HintAck消息实现Hint操作,而非Intent/HintAck。这样更直接易理解,一致性更好;
 
2) 各个Channel支持的消息:
 
 
2. TLPermissions
 
定义TL-C支持的各个权限(Permission):
 
协议中定义如下:
主干、主干尖端、分支,这里Tip直接写Trunk Tip更好。
 
一致性树中:
a. 每个节点都可以缓存一部分数据;
b. 访问节点与被访问节点之间的节点组成访问路径;
c. 主干分出分支;
d. 处在主干最前端的是主干尖端;
 
从中可以看出:
a. 空白节点(Nothing)未被访问(其中无缓存数据);
b. 因为分支(Branch)还有其他兄弟分支,所以其中的节点不能被写,不然无法做到Cache一致性;
c. 针对Trunk尖端的写操作会穿透之前的所有Trunk节点,所以可以做到自然同步。如果针对TT之前的T节点进行写,则需要额外的同步动作,所以T节点只读。
d. 因为针对B节点的读必然经过TT节点(Cache命中,直接返回),所以无需把TT中的脏数据向B中同步。
 
 
3. TLAtomics
 
定义数字运算、逻辑运算两种原子操作:
 
 
 
4. TLHints
 
定义两种Hint消息:
 
 
5. TLBundle
 
定义各个Channel的输入输出接口。
 
1) 概念抽象
 
 
2) A
 
 
3) B
 
 
4) C
 
 
5) D
 
 
6) E
 
 
7) 集中在一起
 
方向如下:
 
 
6. TLBundleSnoop
 
添加了解耦信号的TLBundle:
 
最近对DecoupledIO有了新的理解(或者说有了理解)。
 
所谓DecoupledIO或者ReadyValidIO,即是解耦信号。通过Ready/Valid这一组额外的信号,把信号的两端解耦。
 
要想知道一件事情是否发生有两种方法:
a. 轮询:自己不停地去检查;
b. 中断:别人告诉自己;
 
DecoupledIO通过一组信号通知对方有信息要发送或者自己准备好要接收了,这样就避免了自己不停地去检查。
 
在没有带外信息的情况下,这种检查意味着信号同步的动作。一方启动了同步,另一方则必须被同步,不然就会丢失信息。如此两端被同步信号紧密的耦合在一起。
 
有了DecoupledIO使用带外的一组信号进行通信,就把两端从同步信号中解放出来。不必被同步,也可以忽略对方的发送信号。耦合性大大降低。
 
总结一下,解耦体现在如下两点:
a. 不必在意对方在干什么,有需要时对方会呼叫;
b. 不必被对方强制干什么,有需要时可拒绝对方;
 
7. TLAsyncBundle
 
实现异步的TLBundle:
 
8. TLRationalBundle
 
实现基于RationalIO的TLBundle:
 
 

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

  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 - TLBusWrapper.to

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

  7. Rocket - tilelink - BusWrapper

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

  8. Rocket - tilelink - Xbar

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

  9. Rocket - tilelink - WidthWidget

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

随机推荐

  1. FOC 电流采样为什么不准?你忽略了这个细节

    文章目录 1 引言 2 延迟类型及典型时间 3 延迟源详细分析 3.1PWM死区时间插入 3.2 光耦延迟和预驱动器延迟 3.3晶体管开关延迟 3.4其他延迟 4 结语 在电机驱动的FOC控制开发过程 ...

  2. 使用Python创建一个系统监控程序--李渣渣(lizaza.cn)

    最近在做个人网站,但是由于服务器资源不足,偶尔会出现系统崩溃的现象,所以想写一个程序来实时监控系统状态.当系统资源占用过高时发送邮件提醒. psutil(进程和系统实用程序)是一个跨平台的库,用于检索 ...

  3. linux centos7 和 windows下 部署 .net core 2.0 web应用

    centos7 下部署asp.net core 2.0应用 安装CentOS7 配置网络[可选] 安装.Net core2.0 创建测试Asp.net Core应用程序 正式部署项目 安装VMware ...

  4. android 数据库是否该关闭

    关于android多线程数据读写请看博客: android 多线程数据库读写 常常纠结于获取了SQLiteDatabase每次操作完是否要关闭的问题,每次关闭又怕影响性能,这里记录下SQLiteOpe ...

  5. webservice初级

    在学习webservice的时候,经常将ns和url花了好久时间才理解过来,这里备份下! 首先定义接口: @WebService public interface IService { @WebRes ...

  6. java ->Date、DateFormat、Calendar类

    Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 毫秒概念:1000毫秒=1秒 毫秒的0点: System.currentTimeMillis()  相当于Date d = new Date ...

  7. 关于Nginx参数路径问题的问题

    本文转载自:https://pureage.info/2013/10/31/130.html 由于工作需要,开始分析nginx的proxy模块,在分析之前,当然要先会用了.于是开始熟悉该模块的一些指令 ...

  8. fastadmin后台:选择视频并允许上传到服务器

    1.在对应方法的视图  “view/class/add.html" 中上传视频部分添加:data-mimetype="video/mp4" 2.在 ”applicatio ...

  9. .Net Core3.0 WebApi 项目框架搭建 五: 轻量型ORM+异步泛型仓储

    .Net Core3.0 WebApi 项目框架搭建:目录 SqlSugar介绍 SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET C ...

  10. 「雕爷学编程」Arduino动手做(29)——DS1302时钟模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...