AMBA-AXI(二)AXI的序,保序与乱序

news/2024/10/23 7:36:47/

💡Note:

本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf(issue F)整理的。

主要是分享AXI3.0和4.0部分。

如果内容有问题请大家在评论区中指出,有补充或者疑问也可以发在评论区,互相学习🙌


Ordering

Read ordering:相同的master发出相同ARID的burst到不同的slave,这些burst数据返回的顺序必须跟发出的地址顺序一样;RID要和ARID一样。

Write ordering:AXI4.0中写数据必须跟地址的顺序是一样的,因为缺少WID来跟AWID对应。

总线得到master 的ARID, AWID, WID之后,会增加几个bit用以区分不同master的ID,这样master不必考虑它发出的ID跟其他master相同,总线会将拓宽之后的ARID, AWID, WID发给slave,所以slave收到的ID可能会宽一些,并且可能跟mater发出的ID不同。

Slave返回的RID也是经过拓宽的,因为slave发出的RID和ARID相同,这个RID在经过总线的时候,总线将多余的bit去掉再给到mater,所以master收到的RID和它发出的ARID是一样的。(BID也是一样的)

  1. 同一个burst的不同transfer的ID一定是相同的吗?

对于读操作,ARID只采样一次,每次transfer的RID,都要跟ARID相同,所以不同transfer的RID是相同的。

对于写操作,BRESP只有一次,它也要跟AWID相同,所以也是相同的

  1. 同一个burst的不同transfer的完成顺序跟发起顺序是相同的吗

因为同一个burst中的transfer用的是相同的RID,没法区分不同transfer RDATA,所以只能要求transfer完成顺序是跟发起顺序是一样的。

写的话只对burst回一个resp。

AXI对ordering的要求

  1. 相同channel的、相同ID的burst,如果destination(写的destination是slave,读是master)也是相同的,那么这些burst请求要in-order。

这句话怎么理解呢,比如master在AR通道发出了相同ID的多笔burst命令,如果这些burst都是传给同一个memory location,那么它们到达memory的顺序跟master request顺序一样。

但是如果是发给不同的memory location,那不需要保证请求到达slave的顺序,不符合上面“同一个destination”这个条件。

  1. 相同ID的response,他们在返回给master的时候,也要跟请求的顺序是相同的。

AXI没有要求ordering的地方

• Transactions from different Managers

• Read and write transactions

• Transactions with different IDs

• Transactions to different Peripheral regions

• Transactions to different Memory locations

保序和乱序

这里讨论的保序和乱序都是基于一个master发出的请求。并且粒度是一个burst传输。

问题1:什么是保序?

  1. Master对同一memory location发出的读burst请求按照master发出的顺序,到达memory。

  1. Memory location对master的读响应,按照请求的顺序返回给master。

  1. Master对同一memory location发出的写burst请求按照master发出的顺序,到达memory。

  1. Memory location对master的写响应,按照请求的顺序返回给master。

  1. Master对同一memory location先发写再发读,确保写先到达memory。读到的是写进去的数据。

问题2:什么是乱序?

  1. 读响应返回的顺序跟读请求的顺序不同。

  1. 写响应返回的顺序跟写请求的顺序不同

问题3:什么时候要保序?

相同channel、相同ID,并且相同destination,那这些传输用in-order。比如master发出相同ID的请求到一个或者多个slave,那它收到的响应要跟请求顺序是一样的。

问题4:什么时候可以乱序?

  1. 同一master发出请求的ID不同。

  1. 同一master对不同的memory location或者peripheral space发出的请求。

  1. 不同master发出的请求之间。(是否会操作相同的地址,不在AXI考虑范围内,AXI不解决一致性问题)

out-order不是master决定的,因为这不会增加master的效率,而是由slave决定的,比如不同slave返回数据的距离和速度不同。

slave 会保证:

  1. 如果先收后到对于同一memory location的写和读,那么写的顺序在读之前。

  1. 如果先收后到对于同一memory location的读和写,那么读的顺序在写之前。


http://www.ppmy.cn/news/29135.html

相关文章

Puppeteer项目结构梳理

最近接触了一个个人感觉很奈斯的项目,故记录思路如下: puppeteer项目梳理: 入口文件 run.js 入口命令 node run.js YourConfig.json 1、我们可以在自己的config.json里面设置好 ①、登录的用户名密码;aws或其它服务器的access等id,accessKey…

pwnlab通关流程

pwnlab通关 关于文件包含,环境变量劫持的一个靶场 信息收集 靶机ip:192.168.112.133 开放端口 根据开放的端口信息决定从80web端口入手 目录信息 在images和upload路径存在目录遍历,config.php被渲染无法查看,upload.php需…

二叉树——二叉树的最近公共祖先

二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一…

2023雅虎邮箱不能注册?别急,这份教程教你成功注册雅虎邮箱

这几年,跨境电商的迅猛发展,越来越多人加入这片蓝海,跨境人拥有一个专业的邮箱账户显得尤为重要,它是商业交流和日常工作的必备工具。因此,雅虎邮箱成为了许多人的首选,全球范围内使用雅虎邮箱的人数是非常…

解读“方差”

其实,从这个标题就可以看出来,方差,这个问题不简单, 先给出定义: 方差其实应该叫,差方差,(差方)差,差的平方的差,与差的平方之间的误差&#xff0…

【ES】Elasticsearch核心基础概念:文档与索引

es的核心概念主要是:index(索引)、Document(文档)、Clusters(集群)、Node(节点)与实例,下面我们先来了解一下Document与Index。 RESTful APIs 在讲解Document与Index概念之前,我们先来了解一下RESTful APIs,因为下面讲解Documen…

STM32F1,F4,L1系列禁止JTAG和SW引脚方法

STM32F1系列 程序中在使用到JTAG、SWD的某个IO 时,需要禁用掉相关调试方法后,再配置相应的IO方式。在需要相应的接口配置前使用这些代码。 对于F1系列,调用函数进行专门的禁止。 标准库配置方式: RCC_APB2PeriphClockCmd(RCC_A…

Python 日志

欢迎访问我的博客首页。 Python 日志1. 通过函数调用栈实现2. 改变 print 函数输出字体的颜色3. 使用 logging3.1 自定义名称的句柄3.2 使用默认句柄4. 参考1. 通过函数调用栈实现 traceback 库记录着 Python 的调用栈。使用 traceback,不仅可以输出日志位置&#x…