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. 附录
 

Rocket - diplomacy - LazyModule实例:Buffer的更多相关文章

  1. Rocket - diplomacy - LazyModule

    https://mp.weixin.qq.com/s/FBU8fE4u9-UK6mRGQOlvbQ   介绍LazyModule的实现.     ​​   1. children   LazyModu ...

  2. Rocket - diplomacy - LazyModule的实例化(补)

    https://mp.weixin.qq.com/s/rgCRorjPYyyD6i7moIzbZg   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  3. Rocket - diplomacy - LazyModule的组织方式

    https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule L ...

  4. Rocket - diplomacy - LazyModule的实例化

    https://mp.weixin.qq.com/s/9PsBt4_4qHx4i6C5XtuiUw   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  5. Rocket - diplomacy - NodeHandle相关类

    https://mp.weixin.qq.com/s/GWL41P1G1BXm2sTeLmckdA   介绍NodeHandle相关的类.     ​​   1. NoHandle   顶层类(tra ...

  6. Rocket - debug - TLDebugModuleInner - Program Buffer Access

    https://mp.weixin.qq.com/s/EJVqw7JPjjaib68tENl5AQ 简单介绍TLDebugModuleInner中的Program Buffer Access. 1. ...

  7. Rocket - debug - TLDebugModuleInner - Program Buffer

    https://mp.weixin.qq.com/s/kjhJJ3moRQzxHt6pJOXEgg 简单介绍TLDebugModuleInner中Program Buffer寄存器的实现. 1. pr ...

  8. Rocket - diplomacy - AddressAdjuster分析

    https://mp.weixin.qq.com/s/UYVSO3XFJmhe5bUD_XbMLg   先介绍如何使用AddressAdjuster,然后分析UI参数的生成及使用.   ​​   1. ...

  9. Rocket - diplomacy - AddressAdjuster

    https://mp.weixin.qq.com/s/X0s5CWN84GEiwpNR7tiRgA 基于AddressAdjuster介绍LazyModule的实现.   参考链接:https://g ...

随机推荐

  1. WCF(一)

    在学习WCF之前要知道几个术语: 一:终结点 终结点由3个要素组成:契约,绑定,地址. 1.契约:契约属于一个服务公开接口的一部分.一个服务的契约,定义了服务端公开的服务方法,使用的传输协议,可访问的 ...

  2. python 读hdf4文件,再转写成一个tif文件

    1.安装pyhdf包 (1)通过此链接查找并下载pyhdf包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame(根据自己的系统及python版本选择 ...

  3. 图形学_opengl纹理映射

    学了半学期的图形学,除了几个用python或是matlab比较方便的实验外,用的大多数是opengl,在这总结一下纹理贴图实验中opengl的用法. 1.编译器连接静态库 有用到glaux.h的程序, ...

  4. Oracle JDK究竟从哪个版本开始商用收费?

    经常被问到Oracle JDK是不是要钱了?收费了?从哪个版本开始商用收费? 木有错,Oracle JDK从2019年4月16号开始商用商用商用收费了!有图有真像: 2019年4月16日当天,Orac ...

  5. zabbix-agent客户端安装与配置

    zabbix-agent客户端安装与配置 下载abbix-agent客户端源码软件包 解压agent源码包,并且切换到解压目录. [root@localhost ~]# tar -zxf zabbix ...

  6. 单片机之静态局部变量static

    HL-1慧静电子 上程序: main.c #include <reg52.h>#include "Timer.h" /********P1口低有效*********** ...

  7. 设计模式GOF23之单例模式

    单例模式的五种方式 主要:懒汉式,饿汉式 其他:双重检测锁(Double Checking模式),静态内部类,枚举模式 选取时机 延时加载,占用内部资源大:静态内部类好于懒汉 不延时加载,占用内部资源 ...

  8. nth-of-child和nth-of-type的区别

    p:nth-of-child(2)     翻译过来就是,必需是p元素,并且是父标签的第二个元素,满足以上两个条件,这些样式才会渲染. p:nth-of-type(2)     翻译过来就是,必需是p ...

  9. Spring Cloud 系列之 Consul 配置中心

    前面我们已经学习过 Spring Cloud Config 了: Spring Cloud 系列之 Config 配置中心(一) Spring Cloud 系列之 Config 配置中心(二) Spr ...

  10. django提供二进制流数据文件的下载

    基于djnago框架的二进制流数据传输(提供较大文件的下载) (1)数据源: 高质量图片.视频.音频.文件.数据库数据等.如果是数据库文件,需要先读取相应的数据,然后写入表格在传输到前端以供下载! ( ...