https://mp.weixin.qq.com/s/533bJxcPRgO4W2gf_OEhEw

 
分析DUEB参数模型中各种参数类型的可能性。
 
 
1. 节点类型
 
根据参数的传播方向,可以把节点分为三类:
a. 只输出参数的节点,参考OutwardNodeImp;
b. 只接收参数的节点,参考InwardNodeImp;
c. 既接收参数、又输出参数的节点,参考MixNode;
 
也就是说Outward和Inward节点是起始和终止节点,而Mixed节点是中继节点。
 
2. 参数传播
 
参数的传播有两个方向,Downward和Upward:
a. 如果是在Outward和Inward节点之间,则是直接传播(receive/generate)。
b. 如果包含Mixed节点,则参数的传播需要穿过Mixed节点,需要Mixed节点把DI转换为DO,把UO转换为UI。
 
 
3. 两个节点
 
下面以DI/DO为例:
a. Outward生成(generate)然后发送DO参数;
b. Inward接收(receive)DI参数;
 
从DO变成DI,有两种可能性:
a. 存在一个转换机制,把DO转变为DI;
b. DO = DI,即DO和DI是同一个类型;
 
如果存在一个转换机制,那么这个机制需要同时知道DO和DI的信息。其耦合性较高,难以维护。如果存在这个转换机制,则应该在模型层有所体现。
 
虽然无法否定转换机制存在的可能性,但更为简单的方法是DO = DI。
这是对模型的一种化简。
 
 
4. 单个复合节点
 
 
Mixed节点接收DI参数,传播DO参数。
 
DI与DO一样吗?同样存在两种可能:
 
1) 不一样:DI ≠ DO
 
那么需要Mixed节点,实现如何从DI到DO的转换方法。
 
这在MixedNode中有体现:
 
a. mapParamsD():沿着传播方向(Downward)把DI转变为DO;
b. mapParamsU():沿着传播方向(Upward)把UO转变为UI;
 
2) 一样:DI = DO
 
那么在参数传播过程中,这个Mixed节点如同不存在一样,透传参数信息。
 
更准确的说,透传的是参数类型信息,而参数的值是可以有变化的。
 
上面是根据模型的分析参数的可能性。
 
 
5. 化简实现
 
下面根据分析,介绍模型化简后的实现。
 
1) 合并DI/DO,UI/UO
 
 
2) 实例:AXI4Imp
 
 
DI和DO合并之后只有D这一个类型,也就是说向下(Downward)传播(generate/receive)的是D类型的参数。因为下游节点已知自己节点的参数信息,所以向下传播的应该是上游节点的信息。在这个例子中是AXI4MasterPortParameters。
 
同理,U的类型定义为下游节点的参数。在这个例子中为AXI4SlavePortParameters。

Rocket - diplomacy - DUEB参数模型分析的更多相关文章

  1. Rocket - diplomacy - DUEB参数模型的设计

    https://mp.weixin.qq.com/s/9PEEpe1pkQDN9RWpOGSUCQ   介绍DUEB参数模型的设计,不包含实现(实现对设计做了简化).     1. DUEB   di ...

  2. Rocket - diplomacy - AddressAdjuster分析

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

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

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

  4. Rocket - diplomacy - misaligned

    https://mp.weixin.qq.com/s/poCJBcx45clXHm6Uuv8M6w 介绍AddressSet.misaligned的实现.之前介绍的比较概括,也有偏差.这里根据实际执行 ...

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

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

  6. Rocket - diplomacy - LazyModule的实例化

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

  7. Rocket - diplomacy - LazyModule

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

  8. Rocket - diplomacy - ValName

    https://mp.weixin.qq.com/s/so-2x5KLfYF0IMCCqNThwQ   简单调试ValName实现:   1. 使用     ​​   Desugar之后如下: ​​ ...

  9. Rocket - diplomacy - Node相关类

    https://mp.weixin.qq.com/s/BvK3He3GWon8ywG8Jdmcsg   介绍Node相关的类.   ​​   1. BaseNode   BaseNode是所有节点类的 ...

随机推荐

  1. LeetCode #188场周赛题解

    A题链接 给你一个目标数组 target 和一个整数 n.每次迭代,需要从 list = {1,2,3..., n} 中依序读取一个数字. 请使用下述操作来构建目标数组 target : Push:从 ...

  2. 【HBase】快速搞定HBase与Hive的对比、整合

    目录 对比 整合 需求一 步骤 一.将HBase的五个jar包拷贝到Hive的lib目录下 二.修改hive的配置文件 三.在Hive中建表 四.创建hive管理表与HBase映射 五.在HBase中 ...

  3. 【Hadoop离线基础总结】通过Java代码执行Shell命令

    通过Java代码执行Shell命令 需求 在实际工作中,总会有些时候需要我们通过java代码通过远程连接去linux服务器上面执行一些shell命令,包括一些集群的状态管理,执行任务,集群的可视化界面 ...

  4. 【Hadoop离线基础总结】MapReduce入门

    MapReduce入门 Mapreduce思想 概述 MapReduce的思想核心是分而治之,适用于大量复杂的任务处理场景(大规模数据处理场景). 最主要的特点就是把一个大的问题,划分成很多小的子问题 ...

  5. [hdu4497]分解质因数

    题意:求满足gcd(x,y,z)=G,lcm(x,y,z)=L的x,y,z的解的个数. 大致思路:首先如果L % G != 0那么无解,否则令u = L / G,问题变为,gcd(r,s,t)=1,l ...

  6. 使用 pyautogui 进行跨平台的 GUI 自动化操作

    有个朋友最近问我有没有推荐 GUI 桌面应用自动化的技术,我只能回答他:不好意思,这个真有,他是 pyautogui.主要有三大特征: 纯纯的 python, 源码一览无余: 跨平台,linux, w ...

  7. 说一说JS的IIFE

    1. 定义IIFE: Immediately Invoked Function Expression,意为立即调用的函数表达式,也就是说,声明函数的同时立即调用这个函数.对比一下,这是不采用IIFE时 ...

  8. ql的python学习之路-day11

    前言:本节主要学习python内置的方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:qinjiaxi from collections ...

  9. ql的python学习之路-day7

    函数与函数式编程 一.编程模式分为三种: 1.面向对象编程:类----->关键字class 2.面向过程编程:过程----->关键字def,没有return 3.函数式编程:函数----- ...

  10. python之PyCharm下载和安装教程

    PyCharm 是 JetBrains 公司(www.jetbrains.com)研发,用于开发 Python 的 IDE 开发工具.图 1 所示为 JetBrains 公司开发的多款开发工具,其中很 ...