首页 技术 正文
技术 2022年11月12日
0 收藏 522 点赞 3,737 浏览 1825 个字

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

 简单介绍HintHandler的实现。 ​Rocket – tilelink – HintHandler​ 1. 基本功能 实现Hint请求的处理逻辑。 类参数:passthrough:是否把Hint请求透传给下游节点处理; 2. diplomacy node HintHandler是一个适配器节点:​Rocket – tilelink – HintHandler​ 1) clientFn 把HintHandler看到的上游节点的参数,转换为下游节点看到的HintHandler节点的参数。 这里把原sourceId左移一位,最低位用于编码信息。 2) managerFn 把HintHandler看到的下游节点的参数,转换为上游节点看到的HintHandler节点的参数。 这里根据情况,为下游节点新增支持Hint操作的能力:a. 如果下游节点支持Hint操作,并且允许透传Hint请求(passthrough),那么直接使用下游节点的能力;否则:b. 如果下游节点支持PutPartial,则使用PutPartial的能力;否则:c. 如果下游节点的区域类型为GET_EFFECTS,则使用Get的能力;否则:d. 告诉上游节点,不支持Hint操作; 3. lazy module lazy module用于实现HintHandler的内部逻辑。 1) 成对的输入边和输出边 ​Rocket – tilelink – HintHandler​ 2) 默认in直连out ​Rocket – tilelink – HintHandler​ 3) 确保HintHandler支持Hint请求 ​Rocket – tilelink – HintHandler​注意这里使用的是edgeIn,而不是edgeOut。edgeIn.manager是指HintHandler节点作为的manager。 这里判断的意思就是确保HintHandler支持Hint请求。无论是透传,还是由HintHandler代为处理。 4) usePP & useGet ​Rocket – tilelink – HintHandler​usePP:使用PutPartial消息为下游manager处理Hint请求;useGet:使用Get消息为下游manager处理Hint请求; 5) mapPP & mapGet 判断当前请求的地址对应的manager使用PP还是Get处理Hint请求:​Rocket – tilelink – HintHandler​ 6) 转换请求到out.a ​Rocket – tilelink – HintHandler​ 7) 转换响应到in.d A. 如果使用Get处理Hint,则需要丢弃响应消息AccessAckData: ​Rocket – tilelink – HintHandler​a. 如果Get的能力小于或等于beatBytes,就不存在burst请求,都是单beat请求。这个单beat请求会直接被转换(transform),所以不需要丢弃;b. 如果Get的能力大于beatBytes,就需要把除去最后一个的beat丢弃;​Rocket – tilelink – HintHandler​ B. transform是编码位,代表着是否需要把Get和PP的响应转换为HintAck:​Rocket – tilelink – HintHandler​ 8) 处理Acquire操作的source: 因为不需要HintHandler做处理,所以直接把source移位即可:​Rocket – tilelink – HintHandler​ 9) repeater 用于处理burst PutPartial转换:​Rocket – tilelink – HintHandler​ A. 因为Hint请求不包含数据,所以其size可以很大。PutPartial包含数据,所以当size大于beatBytes时需要分成多个beat组成burst请求。 即一个size大于beatBytes的Hint请求,被转换成了包含多个beat的PutPartial请求。a. The Control type signals (i.e., *_address, *_size,*_param) must be held constant for the entire burst. ​Rocket – tilelink – HintHandler​b. mask为0,不真的写入数据:​Rocket – tilelink – HintHandler​ B. 直到所有的PutPartial beats发送完成,才允许in.a继续输入:​Rocket – tilelink – HintHandler​repeater.io.repeat在最后一个beat之前的beat时都为真。意味着即便从repeater.io.deq取走数据,repeater.io.full也为真:​Rocket – tilelink – HintHandler​ 此时repeater.io.enq.ready为假:​Rocket – tilelink – HintHandler​ 所以这里repeater的用法与Fragmenter中类似,都是用来Hold住in.a而等待out.a的。 4. 默认连接与特定连接 1) 默认连接 默认out与in直连:​Rocket – tilelink – HintHandler​即in.a/b/c/d/e与out.a/b/c/d/e分别相连,这属于bulk connect。 2) 连接特定域 这里又把新的输出连接到out.a的部分域上:​Rocket – tilelink – HintHandler​ 3) 如何区分? 这两者如何共处呢?这里且先提出问题,等后续再研究。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,000
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,512
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,358
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,141
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,771
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,849