zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/GWL41P1G1BXm2sTeLmckdA

     
    介绍NodeHandle相关的类。
     
     
     
    1. NoHandle
     
    顶层类(trait),作为所有NodeHandle的父类型,没有定义特别操作。
     
     
    2. InwardNodeHandle
     
     
    主要用于实现节点绑定逻辑。
     
    1) bind方法
     
    委托给InwardNode.bind()实现;
     
    2) 与NodeHandle连接
     
     
    a. 连接
     
    与Chisel3中相同,“:=”的意思为连接,左侧为下游,右侧为上游。上游流出为Outward,下游流入为Inward。
     
    b. 多
     
    按连接个数和方向,这四个方法分别代表了一对一、一对多、多对一、多对多这四种连接形式。
     
    “*”代表连接个数不确定;
     
    “*”与“=”的相对位置代表了哪一侧的个数不确定。个数不确定,需要根据实际情况确定(resolve)。
     
    一对多是指一个上游节点发出多条连接,连接到下游节点,其形状为星型(star)。最终连接个数由多的一侧,也就是下游节点确定。
     
     
    c. 实例
     
    引自链接:https://www.lowrisc.org/docs/diplomacy/
     
     
    The input crossbar crossbarI has three inwards connections with the three processors. However, there is only one connection with the cache that is set up by :=*. Similarly, the output crossbar has two outwards connections but only one inwards connection with cache set up by :*=. In other words, :=* means the number of connections is defined by the outwards side while :*= means the number of connections is defined by the inwards side.
     
     
    d. 级联
     
    连接的动作是可以级联的,如:
     
    连接方法的返回值为InwardNodeHandle:
     
    所以返回值可以作为连接符号的左侧,继续进行级联。
     
    以“:=”为例,其方法签名和实现如下:
    首先在参数中,把h看做是一个上游节点,要连接到this这一个下游节点;
    然后在返回值,把h看做是一个下游节点,供级联时作为下游节点使用;
     
     
    e. 类型
     
    以“:=”为例,其方法签名如下:
     
    InwardNodeHandle本身的参数类型为:
     
    “:=”方法又声明了几个方法参数类型:
    这些带X的参数类型是h引入的,作为h的DI/UI/EI/BI系列参数使用。
     
    h的类型如下:
    使用InwardNodeHandle类型的参数类型DI/UI/BI作为NodeHandle定义中的DO/UO/BO,这说明了这个定义使用的是简化模型,也就是上游节点的DO/UO/BO和下游节点的DI/UI/BI是同一个类型。
     
    返回值的类型为:
    这是h作为inner side的类型。
     
    PS. EY为h的输出边,类型可以与this的输入边EI不同。这里不做讨论。
     
     
    3) 与OutwardNodeHandle连接
     
    上游节点h为OutwardNodeHandle类型,输出为NoHandle,不可级联。
     
     
    3. OutwardNodeHandle
     
    节点绑定有InwardNodeHandle实现,所以OutwardNodeHandle相对简单。
     
     
    4. NodeHandle
     
     
    NodeHandle既可以充当InwardNodeHandle也可以充当OutwardNodeHandle。
     
    1) 与NodeHandle连接
     
    连接后的两个节点组合成为一个整体,以上游节点h的输入为输入,以下游节点this的输出为输出:
     
    2) 与OutwardNodeHandle连接
     
    因为上游节点是一个OutwardNodeHandle,可以立即为一个只有输出没有输入的节点,所以返回的是一个OutwardNodeHandle,没有输入,以下游节点this的输出为输出:
     
     
    5. NodeHandlePair
     
    用于组合两个NodeHandle:
     
  • 相关阅读:
    openpyxl处理excel
    python播放声音
    python利用wave对声音数据进行处理
    线性代数相关知识
    《深度学习》笔记-卷积神经网络
    Django--知识补充
    Django--2、form表单
    Django--4、认证系统
    Django--1、MTV及基本应用
    前端--3、jQuery
  • 原文地址:https://www.cnblogs.com/wjcdx/p/10462444.html
Copyright © 2011-2022 走看看