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. D - The Bakery CodeForces - 834D 线段树优化dp···

    D - The Bakery CodeForces - 834D 这个题目好难啊,我理解了好久,都没有怎么理解好, 这种线段树优化dp,感觉还是很难的. 直接说思路吧,说不清楚就看代码吧. 这个题目转 ...

  2. 软件工程复习 WHUT

    软件过程模型: 瀑布模型:界限分明的独立阶段,计划驱动的软件过程.规范软件开发活动 (例如:可分为分析.开发.维护三个阶段) 也称生命周期模型.线性模型,采用结构化分析.设计.编程技术 不足的地方:知 ...

  3. 设计模式之GOF23策略

    策略模式strategy 场景:对不同客户的不同报价策略 如果采用if else不易扩展,不符合开闭原则,可以采用策略模式 策略模式: 对应于解决某一个问题的算法族,允许其中一个算法去解决某一问题,同 ...

  4. 瞬间教你学会使用java中list的retainAll方法

    retainAll方法简介 当我们有两个list集合的时候,我们可以使用retainAll方法求得两个list集合的子集.retainAll是Collection接口中提供的一个方法,各个实现类有自己 ...

  5. vue相关环境搭建一条龙

    前言 如题,基于很多朋友对于环境配置及搭建存在疑问或者不熟悉的情况,因此整理一篇完整的环境搭建说明,在此默认各位到手的电脑是需要从0开始配置环境.  nvm的安装 很多同学过去可能安装node都是直接 ...

  6. 【Effective Java】第二章-创建和销毁对象——1.考虑用静态工厂方法代替构造器

    静态工厂方法的优点: 可以赋予一个具有明确含义的名称 可以复用唯一实例,不必每次新建 可以返回原实例类型的子类对象 可以在返回泛型实例时更加简洁 缺点: 类如果不含有共有的或者受保护的构造器,就不能被 ...

  7. R的安装以及包安装

        今天看论文,需要用到R语言的库,于是又折腾了半天..     其实并没有什么太大的问题,只是在第三方包的下载方面还有python中使用R方面遇到了问题: 第三方包的导入      其实在网上有 ...

  8. 分布式文件存储库MinIO可还行?

    在传统的单体应用架构中,一个应用程序对应一台服务器,提供单进程服务. 但是随着业务的升级,技术的更新迭代,分布式.集群架构.微服务等现已俨然成为主流. 几乎所有的项目都会与文件挂钩,例如OA系统的报表 ...

  9. IOS真机测试(已拥有个人开发者证书)

    创建真机调试证书并进行真机测试 步骤1 在启动台中点击其他,找到钥匙串访问. 步骤2 在打开的界面中点击右边的系统根证书,然后点击左上角的钥匙串访问,然后是证书助理,最后点击从证书颁发机构申请证书. ...

  10. linux下获取软件源码包 centos/redhat, debian/ubuntu

    linux下获取软件源码包 centos/redhat, debian/ubuntu centos下: 1. yum install yum-utils 主要为了获取yumdownloader 2. ...