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. openCV从入门到放弃

    与图像处理之间的关系,opencv的简介和使用定位 如题...因为偶然的机会需要用到图像处理,像我这么爱学习 并且动手能力又强的人怎么能没有心得笔记呢,哇哈哈哈.非要说的low逼点这玩意儿这玩意儿就是 ...

  2. Java模拟UDP通信

    目录 Java基础:模拟UDP通信 1.一次发送,一次接收 1.1.发送方 1.2.接收方 2.多次发送,多次接收 2.1.发送方 2.2.接收方 3.模拟双方通信 3.1.发送方的线程 3.2.接收 ...

  3. CSS颜色及文本字体

    CSS颜色及文本字体 CSS颜色表示法 CSS文本设置 CSS边框属性 背景属性 元素溢出 CSS颜色及文本字体 CSS颜色表示法 颜色名表示,比如:red 红色,yellow黄色,pick粉色 16 ...

  4. Spring官网阅读(十三)ApplicationContext详解(下)

    文章目录 BeanFactory 接口定义 继承关系 接口功能 1.HierarchicalBeanFactory 2.ListableBeanFactory 3.AutowireCapableBea ...

  5. 常用中文分词工具分词&词性标注简单应用(jieba、pyhanlp、pkuseg、foolnltk、thulac、snownlp、nlpir)

    1.jieba分词&词性标注 import jieba import jieba.posseg as posseg txt1 =''' 文本一: 人民网华盛顿3月28日电(记者郑琪)据美国约翰 ...

  6. iOS开发--性能调优记录

    CPU VS GPU 关于绘图和动画有两种处理的方式:CPU(中央处理器)和GPU(图形处理器).但是由于历史原因,我们可以说CPU所做的工作都在软件层面,而GPU在硬件层面 对于图像处理,通常用硬件 ...

  7. 白话马尔科夫链蒙特卡罗方法(MCMC)

    前言 你清茶园不是人待的地方! 里面的个个都是人才,说话又好听--就是我太菜了啥也听不懂,这次期中还考的贼**烂,太让人郁闷了. 最近课上讲这个马尔科夫链蒙特卡罗方法,我也学得一塌糊涂.这时我猛然想起 ...

  8. Mysql 常用函数(14)- lower 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html lower 的作用 将所有字符串更改为小写,然后返 ...

  9. APP测试知识中的monkey测试

              了解了logging模块的应用 1)两种方式,1:日志级别函数 2:日志级别的四大组件来实现日志功能(日志流处理) 2)日志流处理日志logging四大组件:logger(日志器) ...

  10. 9.2 Go 文件IO操作

    9.2 Go 文件IO操作 1.1.1. bufio包 带有缓冲区的IO读写操作,用于读写文件,以及读取键盘输入 func main() { //NewReader返回一个结构体对象指针 reader ...