• Rocket


    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:
     
     
  • 相关阅读:
    rxjava rxandroid使用遇到的坑
    使用ARouter遇到的坑
    java(Android)跨Module调用对应类方法需求解决方案
    前端工程师技能之photoshop巧用系列第四篇——图片格式
    前端工程师技能之photoshop巧用系列第三篇——切图篇
    前端工程师技能之photoshop巧用系列第二篇——测量篇
    前端工程师技能之photoshop巧用系列第一篇——准备篇
    js中用tagname和id获取元素的3种方法
    MVC显示Base64图片
    在ASP.NET MVC应用程序中随机获取一个字符串
  • 原文地址:https://www.cnblogs.com/wjcdx/p/11110258.html
Copyright © 2020-2023  润新知