zoukankan      html  css  js  c++  java
  • Rocket

    https://mp.weixin.qq.com/s/UHGq74sEd9mcG5Q3f-g3mA

     
    介绍AddressDecoder的实现。
     
    1. 基本定义
     
    每个Port包含多个地址集合(Seq[AddressSet]),需要确定输入的地址是属于哪一个Port。
    AddressDecoder的任务是在满足需求的情况下,找到需要比对的最少比特位。
     
    其中,givenBits是确定要比对的比特位。如果givenBits已经可以满足需求,则不需要再找其他比特位。
     
    2. 类型定义
     
     
    3. partitionPort
     
    根据AddressSet中bit对应位的值,把Port中的AddressSet分成两部分。
    这里存在三种情况:
     
    这样就把一个Port拆分为两部分分别称为一个Port。
     
    4. partitionPorts
     
    根据partitionPort的划分结果,把所有相似的Port搜集到一起。
     
    case_a_ports中包含的port中的所有的AddressSet中,bit对应位的值为0;
    case_b_ports中包含的port中的所有的AddressSet中,bit对应位的值为1;
     
    5. partitionPartitions
     
    根据partitionPorts的划分结果,把所有相似的Partition搜集到一起。
     
    最初的Partitions中只包含一个partition,
    根据第一个比特位的划分,把这一个partition分为两个partition;
    根据第二个比特位的划分,把这两个partition分为四个partition;
    。。。
     
    每个partition中的port是bit对应位相同的port,亦即使用bit对应位无法区分的port。所以最终的目标是每个partition中只包含一个port,这样就可以把所有的port都能单独区分出来。
     
    6. bitScore
     
    对bit划分的结果进行评分,依据是均匀程度,越能把Ports进行均匀划分的bit位得分越高:
     
    这里有一个疑似Bug
    根据命名规则,前两个度量使用max开头,使用max结尾;后两个度量应该是使用sum开头,使用sum结尾。但是第四个度量值使用sum开头,而使用max结尾。使用max结尾,使其意义与第二个度量值一样,显得冗余。所以应当是sum结尾。
     
    7. recurse
     
    从bits中,递归找到能对所有Port进行唯一区分的最有比特位集合。
     
    8. AddressDecoder.apply
     
     
    a. 确保任意两个Port中的地址集合不重叠,重叠的地址集合怎样都无法区分;
    b. 找到所有要尝试的比特位;
    c. givenBits包含了一定要比对的比特位,所以先使用其中的比特位进行划分;
    d. 使用recurse找到bitsToTry中的最优比特位组合;
    e. 与givenBits或在一起即为(为了确定address属于哪一个port,)所有要比对的比特位;
    f. 验证结果:只考虑output中比特位的情况下,任意两个Port中的地址集合不重叠;
     
    9. 使用实例
     
    ahb/Xbar.scala(为提升可阅读性,已进行重构):
     
    a. 找到所有的port:val port_addrs
    b. 找到区分port地址所需要的比特位:val routingMask;
    c. 每个port中,只考虑routingMask中的位,所需要比对的地址:route_addrs;
    d. 生成电路比对输入的地址(in.haddr)是否存在与每一个Port中,返回结果比特位(Bool);
     
  • 相关阅读:
    git add . 的时候遇到warning: LF will be replaced by CRLF inXXX 解决办法
    用Merge存储引擎中间件实现MySQL分表
    隐型马尔科夫模型(HMM) 简介
    隐型马尔科夫模型(HMM)向前算法实例讲解(暴力求解+代码实现)---盒子模型
    数据输入——生成你需要的echart图(世界地图,气泡图)
    数据输入——生成你需要的echart图(堆积柱状图、扇形图、嵌套环形图)
    jython实现java运行python代码
    django第四课 标签的用法(if/else、for、ifequal、过滤器、注释等)
    django第三课 模版
    paddlepaddle使用(一)
  • 原文地址:https://www.cnblogs.com/wjcdx/p/10704913.html
Copyright © 2011-2022 走看看