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

 
简单介绍Fuzzer的实现。
 
 
1. IDMapGenerator
 
功能类似于IDPool,用于记录id的信息,并对ID进行分配和回收:
 
2. LFSR64
 
用于生成一个64位随机数的逻辑:
 
3. LFSRNoiseMaker
 
使用LFSR64生成一个指定宽度(wide位)的随机数输出:
 
 
4. TLFuzzer
 
1) 基本功能
 
生成一系列的随机请求,用于测试:
 
2) 类参数
 
a. nOperations:需要生成的请求的数目;
b. inFlight: 可以有多少个请求并行处理;
c. noiseMaker: 随机数生成器;
d. noModify:是否不支持写内存的消息;
e. overrideAddress:是否使用该参数覆盖随机生成的访问地址;
f. nOrdered:生成的需要按顺序响应的client参数的数目;
 
3) diplomacy node
 
Fuzzer是一个client节点:
 
不再是适配器节点了,所以Fuzzer只能作为上游节点使用,而不能作为中间节点或者下游节点:
 
clientParams用于生成一组client参数:
A. nOrdered == None:发出的请求不需要按顺序响应
只需要生成一个client参数即可,其包含inFlight个sourceId,用于并发时对响应消息做区分。
 
B. nOrdered != None:发出的请求需要排序
 
nOrdered中的n是指要生成多少个client的参数,Ordered是指每个client中的请求需要按顺序响应。
 
举例:inFlight = 6,nOrdered = Some(2)
a. 需要生成2个client的参数;
b. 每个client包含3个sourceId;
c. 每个client的最多3个请求需要按顺序响应;
 
4) lazy module
 
 
A. 只有输出边,而没有输入边
 
因为Fuzzer是client节点,所以只有输出边,而没有输入边。准确的说,只有一个输出边:
 
B. 提取参数
 
 
C. 请求消息/响应消息计数
 
计数寄存器,初始值为总数目:
 
发送成功和接收成功后递减计数器:
 
D. 所以请求是否发送完成,并全部收到响应消息
 
 
E. 取出channel a/d的信息
 
 
F. 使用随机数生成器生成请求消息的各个组成部分
 
 
G. 进而生成channel a支持的各种消息:
 
 
H. 访问的地址是否合法
 
 
I. 使用随机数从各种消息中选择一个:
 
 
J. out.a.valid
 
channel a中是否包含着一个valid的请求:
需要满足以下条件:
a. 请求信息没有发送完成;
b. 随机生成的信息是合法的;
c. 并行消息所需的sourceId没有被用完,即没有达到并行消息数目上限;
 
K. 回收sourceId
 
 
L. 填充channel a,接收channel d的响应消息
 
其中:
a. 一直接收channel d的响应消息,但是并不进行解析处理;
b. channel b/c/e不使用;
 
M. inc:生成新的请求消息
 
包含两种情况:
a. 已生成的消息不合法;
b. 上一个请求消息已发送完成;
 
N. inc_beat:生成新的beat
 
包含两种情况:
a. 已生成的消息(beat)不合法;
b. 上一个beat发送完成;
 

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

  1. Rocket - tilelink - RegisterRouter

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

  2. Rocket - tilelink - Nodes

    https://mp.weixin.qq.com/s/KJ8pVH76rdxPOZ1vE3QlKA   简单介绍tilelink对Diplomacy Nodes的实现.   ​​   1. TLImp ...

  3. Rocket - tilelink - AsyncCrossing

    https://mp.weixin.qq.com/s/v8plWCBD8vZkxykjJe4TCg   介绍AsyncCrossing的实现,主要介绍如何实现diplomacy Node和LazyMo ...

  4. Rocket - tilelink - mask

    https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg   讨论tilelink中使用MaskGen生成mask的用法.   1. tilelink中的ma ...

  5. Rocket - tilelink - Parameters

    https://mp.weixin.qq.com/s/1I6DcONr0Mg7xiX8F1C7SQ   简单介绍TileLink相关的参数实现(具体问题暂时不展开,后续用到时再做分析).   ​​   ...

  6. Rocket - tilelink - Bundles

    https://mp.weixin.qq.com/s/jrqBg2AIpQogBrpwNXjmwg   简单介绍Bundles文件中对TileLink规范(1.7.1)的定义. 参考链接:https: ...

  7. Rocket - tilelink - TLBusWrapper.to

    https://mp.weixin.qq.com/s/jSnhBzU5_ayQCg5fWAcx-g 简单介绍TLBusWrapper.to()的实现.主要介绍确定this{...}对应代码的过程. 1 ...

  8. Rocket - tilelink - BusWrapper

    https://mp.weixin.qq.com/s/03BvgTNQtD75Guco6gUGQg   简单介绍BusWrapper的实现.   1. HasTLBusParams   定义SoC的挂 ...

  9. Rocket - tilelink - Xbar

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

随机推荐

  1. python学习第八天--异常和异常处理

    Exception 常用异常: AssertionError 断言语句失败 AttributeError 尝试访问未知的对象属性 IndexError 索引超出序列值 keyError 查找一个不存在 ...

  2. [hdu4436 str2int]后缀自动机SAM(或后缀数组SA)

    题意:给n个数字串,求它们的所有不包含前导0的不同子串的值之和 思路:把数字串拼接在一起,构造SAM,然后以每个状态的长度len作为特征值从小到大排序,从前往后处理每个状态,相当于按拓扑序在图上合并计 ...

  3. VMware Centos7 桥接 DHCP无法获得IP

    问题描述 VMware Centos7 桥接模式下,虚拟机无法获得IP,无法联网 解决方案 网络设置为DHCP自动获取IP 查看主机(不是虚拟机)的相关服务是否打开,主要是VMware DHCP 这个 ...

  4. (数据科学学习手札83)基于geopandas的空间数据分析——geoplot篇(下)

    本文示例代码.数据及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在上一篇文章中我们详细学习了geop ...

  5. Spring全家桶之SpringMVC(三)

    Spring MVC单个接收表单提交的数据   单个接收表单提交的参数 在实际开发中通过会在spring MVC的Controller里面接收表单提交过来的参数,这块代码该怎么去编写呢? 示例: 编写 ...

  6. 检查点,Block块,参数化

    l 检查点:每次运行时检查服务器返回的数据是否正确,节省人工检查的时间(压测中数据传输次数过多,页面可能会产生传递混乱) l 检查点函数:web_find l 检查点类型:文本检查点:图片检查点 l  ...

  7. Sentinel源码解析三(滑动窗口流量统计)

    前言 Sentinel的核心功能之一是流量统计,例如我们常用的指标QPS,当前线程数等.上一篇文章中我们已经大致提到了提供数据统计功能的Slot(StatisticSlot),StatisticSlo ...

  8. 都0202年了,你还不知道javascript有几种继承方式?

    前言     当面试官问你:你了解js哪些继承方式?es6的class继承是如何实现的?你心中有很清晰的答案吗?如果没有的话,可以通过阅读本文,帮助你更深刻地理解js的所有继承方式.       js ...

  9. Django之ORM对象关系模型

    MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需 ...

  10. Spring 中基于 AOP 的 XML架构

    Spring 中基于 AOP 的 XML架构 为了使用 aop 命名空间标签,你需要导入 spring-aop j架构,如下所述: <?xml version="1.0" e ...