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. Spring Cloud学习 之 Spring Cloud Ribbon(负载均衡策略)

    文章目录 AbstractLoadBalancerRule: RandomRule: RoundRobinRule: RetryRule: WeightedResponseTimeRule: 定时任务 ...

  2. Linux内核驱动学习(三)字符型设备驱动之初体验

    Linux字符型设备驱动之初体验 文章目录 Linux字符型设备驱动之初体验 前言 框架 字符型设备 程序实现 cdev kobj owner file_operations dev_t 设备注册过程 ...

  3. 在培训机构花了好几万学Java,当了程序员还常被鄙视,这是招谁惹谁了?

    在之前的文章中说过,我是非计算机专业,通过参加培训进入程序员这行的. 入了程序员这行后,挺长一段时间在亲戚朋友中,我还是挺有面子的:家族里的第一个程序员,工作不用风吹日晒,收入比其他行业高不少,尤其是 ...

  4. 数组的操作。1,JS数组去重。2,把数组中存在的某个值,全部找出来。3在JS数组指定位置插入元素。。。

    1,数组去重 let arr = [1,2,3,4,5,6,1,2,3,'a','b','a']; let temp = []; // 作为存储新数组使用 for(let i = 0; i < ...

  5. CPU瞒着内存竟干出这种事

    还记得我吗,我是阿Q,CPU一号车间的那个阿Q. 今天忙里偷闲,来到厂里地址翻译部门转转,负责这项工作的小黑正忙得满头大汗. 看到我的到来,小黑指着旁边的座椅示意让我坐下. 坐了好一会儿,小黑才从工位 ...

  6. angular foreach的使用

    var myAppModule = angular.module('myApp', []); var values = { name : 'misko', gender : 'male', " ...

  7. assign 与 深浅拷贝

    Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖.后面的源对象的属性将类 ...

  8. 08 返回动态页面web框架

    08 返回动态页面web框架 动态页面: 网页的内容是动态变化的,不是一直不变的(静态页面:每次显示的内容都是一样) 服务器server端python程序(动态页面版本): import socket ...

  9. DPDK Mbuf Library(学习笔记)

    1 Mbuf库 Mbuf库提供了分配和释放缓冲区(mbufs)的功能,DPDK应用程序可以使用这些mbufs来存储消息缓冲. 消息缓冲存储在内存池中,使用Mempool库. 数据结构rte_mbuf通 ...

  10. 网页导出成word文档的默认视图方式问题

    网页导出成word文档的默认视图方式问题 一般保存后的word文档默认是“Web版式视图”打开,这样会给客户的感觉不是真正的word文档,必须实现打开就是“页面视图” 1. 修改<html> ...