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. Re模块的方法补充

    id_str = input("输入一个身份证号:") import re obj = re.compile(r"^([1-9]\d{16}[0-9x]|[1-9]\d{ ...

  2. 初识Matlab及界面认识

    通过本章节的学习,需要掌握: MATLAB语言是什么 MATLAB在互联网语言中地位与应用 目标:利用MATLAB进行问题求解的基本规律.够使用MATLAB作为专业应用的工具. 1.什么叫计算? (1 ...

  3. springmvc与struts2执行流程比较

    之前写过一篇struts2的执行流程的文章了,这里对struts2的流程就不做过多的分析,这篇文章主要分析spring-mvc的执行流程以 及struts2与spring-mvc的差别. 1.stru ...

  4. 一分钟明白MySQL聚簇索引和非聚簇索引

    MySQL的InnoDB索引数据结构是B+树,主键索引叶子节点的值存储的就是MySQL的数据行,普通索引的叶子节点的值存储的是主键值,这是了解聚簇索引和非聚簇索引的前提 什么是聚簇索引? 很简单记住一 ...

  5. spark是怎么从RDD升级到DataFrame的?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是spark专题的第五篇,我们来看看DataFrame. 用过Python做过机器学习的同学对Python当中pandas当中的Data ...

  6. Boosting算法总结(ada boosting、GBDT、XGBoost)

    把之前学习xgb过程中查找的资料整理分享出来,方便有需要的朋友查看,求大家点赞支持,哈哈哈 作者:tangg, qq:577305810 一.Boosting算法 boosting算法有许多种具体算法 ...

  7. 【FreeRTOS实战汇总】小白博主的RTOS学习实战快速进阶之路(持续更新)

    博主是个小白,打算把这段时间系统学习RTOS的文章统一整理到这里,另外本文会给出一些参考性资料和指导性建议: 本文宗旨 FreeRTOS 是由Richard Barry在2003年由设计的,由于其设计 ...

  8. 设计模式之GOF23观察者模式

    观察者模式Observer 广播机制 场景:多个观察者--被通知改变 CS的时候,人物移动坐标变化,更新每个人地图上的坐标 核心:当目标对象(Subject)的状态值改变时,需要及时告知所有观察者(O ...

  9. [hdu5225]逆序对统计

    题目:给定一个1到n的排列,求字典序小于这个排列的所有排列的逆序对数之和. 思路:既然是求字典序小于这个排列的,不妨将排列根据和它前k位相同来分类,然后枚举第k+1位的数(小于原序列第k+1位的数), ...

  10. webpack指南(五)TypeScript

    将webpack与TS进行集成. 1. 安装TypeScript 编译器和 loader npm install --save-dev typescript ts-loader 2. 在package ...