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:
 
 

最新文章

  1. Android 工具-adb
  2. 不行,受不了了,我要记录下这个 bug
  3. oracle sys as dba
  4. HTML学习入门
  5. 全新安装Mac OSX 开发者环境 同时使用homebrew搭建 PHP,Nginx ,MySQL,Redis,Memcache ... ... (LNMP开发环境)
  6. iOS学习笔记之ARC内存管理
  7. HDU1002大数加法
  8. spring+hibernate+struts整合(1)
  9. 使用elk+redis搭建nginx日志分析平台(转)
  10. java中GUI的awt和Swing的知识点
  11. [转帖]流程控制:for 循环
  12. Python正则表达式指南(转)
  13. HttpClient基本使用
  14. 如何获取Azure AD tenant的tenant Id?
  15. 3ds max学习笔记(九)-- 实例操作(路径阵列)
  16. vs2017 遇到异常。这可能是由某个扩展导致的。奇妙的解决方式
  17. hadoop 学习笔记
  18. python认知及六大标准数据类型
  19. markdown的学习记录
  20. array_multisort函数,以及多维数组下排序的应用,并与usort函数对比

热门文章

  1. 【认证与授权】Spring Security自定义页面
  2. 在使用SSH+Spring开发webservice ,报的一些异常及处理方法
  3. 面试官:小伙子,听说你看过ThreadLocal源码?(万字图文深度解析ThreadLocal)
  4. 加速你的网络!软路由构建 去AD+国内域名加速解析+抗污染+速度优选 与PSW无缝集成 综合方案
  5. MySQL基础总结(二)
  6. 01-Taro打造hello-world应用
  7. JS理论:编码习惯
  8. sqli-labs之Page-2
  9. webpack的proxytable的配置
  10. 黑马程序员_毕向东_Java基础视频教程——赋值(随笔)