https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg

 
讨论tilelink中使用MaskGen生成mask的用法。
 
1. tilelink中的mask
 
1) channel a/b包含一个mask信号:
 
Byte lane select for messages with data:
这里并没有显示mask信号。可以看到传输数据使用的byte lane与地址是对应的。按照mask的定义,如果整理出来,应该如下表:
 
 
a. The mask is also used for messages without a data payload. Get消息的data域是被忽略的,但是mask仍然要按照address/size去生成。
 
b. When the operation size is smaller than the data bus, the mask should be generated identically to an operation which does carry a data payload.
 
c. For operations which are larger than the data bus, all bits of the mask should be HIGH, although the message remains a single-beat.
 
d. PutPartialData比较特殊,mask中的HIGH比特不需要连续:0xa。
但是size=2^3=8字节,但是却只写了3个字节。a_size定义如下:
可以看到:
- a_size表示的是操作对象的范围(range),也就是说要写的数据从这个里面选;
- 这个写是不是一定写,而是有可能写(possibly write);
 
从以上两点可以看出,PutPartialData写的数据是在a_address/a_size范围内的mask任意为一的位对应的字节。
 
2) mask的实现
 
a. Get
 
使用MaskGen实现:
注意两点:
- address需要跟size对齐,也就是address%size=0;
- mask中为1的比特要连续;
 
实现mask的MaskGen()需要满足这两点。
 
b. PutFullData
 
同样包含Get中的两点:
- address需要跟size对齐,也就是address%size=0;
- mask中为1的比特要连续;
 
所以可以使用MaskGen()实现:
 
a_size表示要写的数据的总字节数;
 
c. PutPartialData
 
- address需要跟size对齐,也就是address%size=0;
- mask中为1的比特不需要连续;
 
其实现没有使用MaskGen(),需要外部实现后传入:
这里也可以看出MaskGen的特点。
 
a_size的意义在上面也分析过了:
- a_size表示的是操作对象的范围(range),也就是说要写的数据从这个里面选;
- 这个写是不是一定写,而是有可能写(possibly write);
 
2. MaskGen
 
从上面的分析可以看出,MaskGen()生成的mask的特点如下:
- address需要跟size对齐,也就是address%size=0;
- mask中为1的比特要连续;
 
在之前对MaskGen(链接:https://mp.weixin.qq.com/s/_aJqf1cFJDK5RVRBhxTWOw)的介绍中,与预期不一致的行,都是因为地址和size不对齐:
 
而注释中地址和大小并没有对齐:
 
这个例子似乎有点问题。
 
 

Rocket - tilelink - mask的更多相关文章

  1. Rocket - tilelink - RegisterRouter

    https://mp.weixin.qq.com/s/DaJhf7hEoWsEi_AjwSrOfA   简单介绍RegisterRouter的实现.   ​​   1. 基本介绍   实现挂在Tile ...

  2. Rocket - tilelink - Xbar

    https://mp.weixin.qq.com/s/UXFHYEQaYotWNEhshro68Q   简单介绍Xbar的实现.   ​​   1. 基本介绍   用于为Xbar的输入和输出连接生成内 ...

  3. Rocket - tilelink - WidthWidget

    https://mp.weixin.qq.com/s/pmJcsRMviJZjMwlwYw6OgA   简单介绍WidthWidget的实现.   ​​   1. 基本介绍   用于设定与上游节点连接 ...

  4. Rocket - tilelink - SRAM

    https://mp.weixin.qq.com/s/-z9n6SHyAiK2OE7mOSvC2Q   简单介绍SRAM的实现.   ​​   1. 基本介绍   实现一个支持读写的静态存储器.存取的 ...

  5. Rocket - tilelink - RegionReplicator

    https://mp.weixin.qq.com/s/XZVCdt50tM6lavchGm9GRg   简单介绍RegionReplicator的实现.   ​​   1. 基本介绍   根据mask ...

  6. Rocket - tilelink - RAMModel

    https://mp.weixin.qq.com/s/9ccDTm6HytvfGN5R2CPoAQ   简单介绍RAMModel的实现.   ​​   1. 基本介绍   RAMModel用于定义内存 ...

  7. Rocket - tilelink - HintHandler

    https://mp.weixin.qq.com/s/MHW_aBSL72YNee9bVWWeaw   简单介绍HintHandler的实现.   ​​   1. 基本功能   实现Hint请求的处理 ...

  8. Rocket - tilelink - Fragmenter

    https://mp.weixin.qq.com/s/kNQrhlf33AErK7IzalnUDw   简单介绍Fragmenter的实现.   ​​   1. 基本介绍   用于把上游节点地址空间范 ...

  9. Rocket - tilelink - BankBinder

    https://mp.weixin.qq.com/s/oZCYBdy5glxJQmYKVWvpvA   简单介绍BankBinder的实现.   ​​   1. 基本介绍   A BankBinder ...

随机推荐

  1. Spring Cloud 学习 之 Spring Cloud Eureka(架构)

    Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 Eureka服务治理基础架构的三个核心要素: 服务治理机制: 服务提供者: ...

  2. python学习之break和continue在for循环中的使用(案例:打印出10以内的偶数,并且只要前三个偶数)

    运行程序,break是整个程序都跳出 continue则表示跳过当前一次循环,然后继续执行循环

  3. Coursera课程笔记----P4E.Capstone----Week 6&7

    Visualizing Email Data(Week 6&7) code segment gword.py import sqlite3 import time import zlib im ...

  4. HTTPS简单介绍

    在HTTP协议中有可能存在信息窃听或者身份伪装等问题,使用HTTPS协议通信机制可以有效地防止这些问题. 1 HTTP协议的缺点 通信使用明文,内容可能被窃听 不用验证通信方的身份,因此可能会遭遇伪装 ...

  5. spark on yarn安装

    网上关于spark的安装说明很多了,这里就以spark  pre-build with user provided hadoop 安装包为例讲解, 下载spark  pre-build with us ...

  6. 这一份MySQL书单,可以帮你搞定90%以上的面试题!

  7. 广义Fibonacci数列模n的循环节

    见这里:http://blog.csdn.net/ACdreamers/article/details/25616461 有详细的分析推理 只找出了循环节的上限,设 f[n] = (af[n - 1] ...

  8. 2、接口测试(Composer)

    前言 Fiddler最大的优势在于抓包,我们大部分使用的功能也在抓包的功能上,fiddler做接口测试也是非常方便的. 对应没有接口测试文档的时候,可以直接抓完包后,copy请求参数,修改下就可以了. ...

  9. Spark Streaming 整合 Flume

    Spark Streaming 整合 Flume ​ 一.简介二.推送式方法        2.1 配置日志收集Flume        2.2 项目依赖        2.3 Spark Strea ...

  10. 最香远程开发解决方案!手把手教你配置VS Code远程开发工具,工作效率提升N倍

    文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 今天和大家分享远程开发工具,分享一下我平常是如何用 V ...