zoukankan      html  css  js  c++  java
  • Rocket

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

     
    以tilelink下的Buffer为例,介绍LazyModule如何组织内部的节点和模块。
     
    1. TileLink Channels
     
    参考TileLink总线的规范文档。
     
    2. BufferParams
     
     
    BufferParams包含了定义一个Buffer需要用到的3个参数:
    a. depth;
    b. flow;
    c. pipe;
     
     
    3. TLBufferNode
     
     
    TLBufferNode是TLAdapterNode的子类。其构造方法包含分别对应TileLink总线a/b/c/d/e 5个channel的BufferParams参数。
     
     
    4. TLBuffer
     
     
    TLBuffer继承自LazyModule。他内部包含一个节点(node),包含一个LazyModuleImp匿名子类的lazy实例module,作为其内部实现。
     
     
    5. TLBuffer.node
     
    TLBuffer.node是TLBufferNode的一个实例。他包含了TLBuffer实例的in/out接口信息。
     
    6. TLBuffer.module
     
    TLBuffer.module是TLBuffer的内部实现。
     
    TLBuffer这个LazyModule的输入输出接口的信息在node中,所以TLBuffer.module要从TLBuffer.node中取出输入接口,实现内部逻辑,最后连接到输出接口上。
     
    这里的内部逻辑就是使用BufferParams中的参数生成的Queue。
     
     
    7. 外部连接
     
    以Channel in.a为例,TLBuffer.module把in.a输出到out.a,那么:
    a. 谁输出到in.a?
    b. out.a输出到哪里?
     
    这些都是TLBuffer作为一个模块,与其他模块之间的连接关系。这些连接是使用TLBuffer.node代替TLBuffer这个模块,与其他LazyModule.node进行连接的。
     
    可以看到TLBuffer的伴生对象,返回的都是buffer.node,以与其他模块连接:
     
     
    8. 附录
     
  • 相关阅读:
    luoguP2016 战略游戏
    [Usaco2006 Nov]Corn Fields牧场的安排
    [Ahoi2009]self 同类分布
    POJ3208:Apocalypse Someday
    [usaco2010 Oct]Soda Machine
    [Usaco2005 Dec]Scales 天平
    PTA的Python练习题(十九)
    堆叠注入
    PHP序列化与反序列化(三)总结实战
    攻防世界web进阶1-12总结篇
  • 原文地址:https://www.cnblogs.com/wjcdx/p/10624168.html
Copyright © 2011-2022 走看看