https://mp.weixin.qq.com/s/cTRxXwWNEeb4-XX_t4bRcg

 
讨论模块结构信息的来源及使用方式。
 
 
 
1. diplomacy
 
diplomacy:外交,谈判的意思。主要用于模块之间的协商参数。
 
基本思想是首先把模块结构(module hierarchy)抽象为DAG:
a. 把模块抽象为点(Node),把模块之间的连接抽象为边(Edge);
b. 边是有方向的,上游节点为SourceNode,下游节点为SinkNode;
c. Node和Edge组成有向无环图(DAG);
 
然后根据图的结构,确定部分所需的参数。
 
因为图就是最终要构建的模块结构,所以全部参数都已经体现在图中,而无需单独维护参数,只需要从图中提取出所需要的参数即可。
 
2. 模块结构信息
 
电路模块结构的信息,首先来自于设计者(designer)。
 
设计者根据模块结构信息,构建出最终的电路模块结构。
 
从模块结构信息到最终电路结构有几种方式呢?
 
 
3. 最传统的方法
 
最传统的方法是,结构信息始终存在于设计者的心中。设计者根据心中的结构信息,直接构建出具体的模块,然后连接到一起,组成模块结构;
 
 
4. 目前流行的做法
 
目前流行的做法是,把部分结构信息作为parameter或macro提取出来,在模块实现中使用。这样只需要修改parameter的值,而不需要修改模块的实现;
 
这里有两种情况,一是参数作为模块中的参数使用,用于模块的实现;二是参数决定了模块的个数,用于模块的生成(generate)过程。
 
 
5. diplomacy的做法(初步理解)
 
设计者根据心中的结构信息,构建出模块结构,然后从结构中提取出所需要的参数信息。比如bus上挂了2个模块,那么仲裁所需要的比特数就是2;挂了3个就是3。
 
这种方法有哪些优点呢?
 
决定所生成模块个数的参数可以省掉吗?不能,但是要使用DRY(Don't Repeat Yourself)模式,限制参数只在一个集中的地方出现。
 
可以省掉一部分参数,降低耦合。比如bus不需要知道其上所挂的模块的个数信息。
 
相较于静态的参数集合直接决定模块结构,这里可以根据模块结构信息,动态的调整上下级节点所使用的参数。参数可以向上游(upward)和下游(downward)进行传播(propagate)。
 
 
6. 总结
 
综合这几种方式,相对比较好的方法是:
a. 只集中维护一份参数;
b. 这份参数中包含的是每个独立模块的参数,没有模块之间如何耦合的参数;
c. 根据模块结构,获取模块之间如何耦合的信息;
d. 进行部分参数优化(可省略);
e. 生成最终模块结构;

Rocket - diplomacy - 模块结构信息的更多相关文章

  1. Rocket - diplomacy - LazyModule

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

  2. SLP的模块结构

    SLP的模块结构 在开发初期,拟将SLP分为5个模块: 基础练习模块 特定歌曲难点练习模块 玩家能力测试模块 全局设置模块 玩家信息模块 基础练习模块 这里提供可控类型.可控长度.可控BPM的练习套餐 ...

  3. Nginx_handler模块发开(hello模块结构解析)

    声明:请在文章页面明显位置给出原文连接 http://www.cnblogs.com/paulweihan/p/4654173.html,否则保留追究法律责任的权利. 近期查了非常多资料.入门的样例都 ...

  4. Python学习之==>模块结构调整

    一.为什么要进行模块结构调整 当一个脚本中有大量的配置.方法及接口时,脚本显得十分臃肿,可读性很差.为了提高代码的易读性,可以将一个繁杂的脚本根据不同的功能放在不同的目录下分类管理,这整个过程叫做模块 ...

  5. Postgresql 导出表结构信息

    项目用了Postgresql 数据库,项目组要出表结构的文档,手写太麻烦,想用slq脚本导出一份.查了一番资料,似乎没有多好的方法.dump方式导出的脚本太乱,没法直接写在word文档里.只能自己写s ...

  6. SQLServer查询所有库表结构信息

    1.查询数据库中的所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 2.查询某个数据库中所有的表名: SELECT Name FR ...

  7. c#通过oledb获取excel文件表结构信息

    这个问题来自论坛提问,同理可以获得access等数据库的表结构信息. using System; namespace ConsoleApplication11 { class Program { pu ...

  8. WebRTC源码分析四:视频模块结构

    转自:http://blog.csdn.net/neustar1/article/details/19492113 本文在上篇的基础上介绍WebRTC视频部分的模块结构,以进一步了解其实现框架,只有了 ...

  9. java中访问mysql数据库中的表结构信息

    package cn.hncu.meta; import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.Re ...

随机推荐

  1. 记jmeter接口测试动态获取验证码

    在用jmeter做接口测试时,需要动态的获取验证码,以便在登录成功后可以获取token,但是在测试的过程中,遇到了一个问题,想在这里给大家分享一下: 环境描述     在获取验证码的http请求下加后 ...

  2. Spring Cloud 学习 之 Spring Cloud Ribbon(基础知识铺垫)

    文章目录 1.负载均衡: 2.RestTemplate详解: xxxForEntity/xxxForObject:主要介绍get跟post exchange: execute源码分析: 1.负载均衡: ...

  3. Java集合简单介绍

    再最前面分享一下我再学习集合时的方法: 1.首先了解各集合的定义和特点 2.集合的构造方法和常用方法(增删改查等) 3.了解集合使用的场景,再什么情况下使用什么类型的集合(关键是集合的特性) 4.了解 ...

  4. 汽车安全攻击篇:智能网联系统的短板,如何防护汽车的安全C

    我们在<速度与激情>里,经常可以看到主角们利用网络侵入汽车网络系统,然后任意的操纵这些车辆,看电影的时候会被画面所震撼到,这两年"自动驾驶"随着特斯拉的车已经越来越普及 ...

  5. 【HBase】表模型和基本操作介绍

    目录 HBase表模型 常用Shell操作 HBase表模型 创建一个hbase表,必须要有表名和列族名 列族 -- columnFamily,就是上图中的Column Family1 userInf ...

  6. Vant 顶部导航栏【van-tabs】Bug

    Vant 顶部导航栏[van-tabs]Bug 如果在外面包裹div控制显示隐藏会出现导航条不准确的bug 代码 <div class="selWrap" v-show=&q ...

  7. 使用 React hooks 转化 class 的一些思考

    Hooks 是 React 16.8 的新增特性.它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性. 使用 React hooks 转化 class 的一些思考 ...

  8. HBase 安装snappy压缩软件以及相关编码配置

    HBase 安装snappy压缩软件以及相关编码配置 前言 ​ 在使用HBase过程中因为数据存储冗余.备份数等相关问题占用过多的磁盘空间,以及在入库过程中为了增加吞吐量所以会采用相关的压缩算法来压缩 ...

  9. Js调用Android回调处理

    通常在混合app中经常会使用js调用native的方法,一般是: window.nativeApp.call(XXX); 直接调用native方法,对于简单的处理倒是可以,如果需要回调呢?期待的方式是 ...

  10. Badboy脚本开发

    Badboy中的检查点 以sogo.com搜索为例演示,搜索Badboy 选中搜索框中的关键词----菜单“Tools”----“Add Assertion for Selection”添加检查点 2 ...