AXI4 ---排序模型

ops/2024/9/23 22:35:37/

1. 排序模型的定义

AXI4协议支持一种基于AXI ID事务标识符使用的排序模型。原则是对于具有相同ID的事务:

  • 针对任何单个外围设备的事务,必须按照它们被发出的顺序到达外围设备,无论事务的地址是什么。
  • 使用相同或重叠地址的内存事务必须按照它们被发出的顺序到达内存。

注意

  • 在具有多个master的AXI系统中,用于排序模型的AXI ID包括基础设施ID(用来唯一标识系统中每个master的一种标识符,这些ID能够唯一地识别每个master。这意味着排序模型独立地适用于系统中的每个master。

AXI排序模型还要求,在同一方向上具有相同ID的所有事务必须按照它们被发出的顺序提供它们的响应。

因为读地址通道和写地址通道是独立的,如果需要在具有相同ID的不同方向的两个事务之间建立排序关系,那么master必须等待接收到第一个事务的响应后再发出第二个事务。

如果master在未收到相反方向上早期事务响应之前发出一个方向上的事务,那么这两个事务之间没有排序保证。

注意

  • 在需要保证排序并需要对早期事务做出响应的地方,master必须确保它已经从系统的适当点接收到了响应。来自中间AXI组件的响应不能保证与下游于中间缓冲区的组件的排序。

2. master排序

一个在相同方向(读或写)发出多个事务且具有相同ID的master,对这些事务的排序有以下保证:

  • 对所有事务的响应顺序必须与发出顺序相同。
  • 对于发往设备内存的事务,到达slave的顺序必须与发出顺序相同。
  • 对于普通内存,发往具有相同或重叠地址的事务到达slave的顺序,必须与发出顺序相同。这也适用于可缓存内存,也就是适用于所有AxCACHE[3:1]不是0b000的有效的事务。

两个事务访问相同或重叠地址的定义是,两个事务至少访问了单个副本原子地址范围内的一个字节。

3. 互连排序

为了满足排序模型的要求,互连必须确保:

  • 保持发往设备内存的、具有相同ID的、相同方向的事务的顺序。
  • 保持发往相同或重叠地址的、具有相同ID的、相同方向的事务的顺序。
  • 保持具有相同ID的写响应的顺序。
  • 保持具有相同ID的读响应的顺序。
  • 对与事务相关联的AXI ID值进行任何操作时,必须确保维护原始ID值的排序要求。
  • 任何在事务到达最终目的地址之前就给出事务响应的组件,必须确保在事务到达其最终目的地址之前,维护本节所述的排序要求。

4. slave排序

为了满足排序模型的要求,slave必须确保:

  • 任何已经发出响应的写事务必须被任何后续的写或读事务看到,不管事务ID是什么。

  • 任何发往设备内存的写事务必须被相同ID的任何后续写事务看到,即使响应尚未发出。

  • 任何发往普通内存的写事务必须被相同ID的任何后续有相同或重叠地址的写事务看到,即使响应尚未给出。这也适用于发往可缓存内存的事务。也就是说,它适用于所有AWCACHE[3:1]不是0b000的有效的写事务。

  • 对于具有相同ID的多个写事务的响应,必须按照事务到达的顺序发出。

  • 对于具有不同ID的多个写事务的响应,可以以任何顺序发出。

  • 任何已经发出响应的读事务必须被任何后续的写或读事务看到,不管事务ID是什么。

  • 任何发往设备内存的读事务必须被相同ID的任何后续读事务看到,即使响应尚未发出。

  • 对于具有相同ID的多个读事务的响应,必须按照事务到达的顺序发出。

  • 对于具有不同ID的多个读事务的响应,可以以任何顺序发出。

5. 最终目的地址前的响应

任何在事务到达最终目的地址之前发出事务响应的中间组件,必须确保来自任何上游master的任何事务都能看到该事务。

注意 在本节的上下文中,上游master是指通过该组件的slave端口访问该中间组件的任何设备。 要求如下:

  • 对于所有内存类型的访问,任何针对相同或重叠地址的后续事务都必须看到中间组件发出响应的事务。
  • 对于设备内存的访问,中间组件还必须保持与它发出响应的事务相同ID和相同slave的任何后续事务的顺序。

只有当AxCACHE属性表明允许这样做时,才能对事务给出中间响应。

AXI协议要求对设备内存访问的排序保证是针对普通内存访问保证的超集。这确保了任何被标记为普通的事务都可以转换为设备事务,而不会移除其原始的保证。为了满足这一要求,对相同或重叠地址的设备内存访问的行为必须与普通内存访问的行为相同,而不考虑ID值。 表格A6-1显示了对于所有内存类型、事务ID和访问相同或重叠地址的组合,何时需要排序。 

内存类型相同ID重叠地址需要排序
设备
普通

在表格A6-1中,普通内存的条目也适用于对可缓存内存的事务。也就是说,它们适用于所有AxCACHE[3:1]不是0b000的有效的事务。

6. 有序写观察

为了提高与支持不同排序模型的接口协议的兼容性,定义了一个可以为单个接口设置为True或False的“Ordered_Write_Observation”属性。

如果将“Ordered_Write_Observation”属性设置为True,则定义该接口具有此属性。

不支持“Ordered_Write_Observation”属性的接口,默认值为False。

支持“Ordered_Write_Observation”属性的接口可以支持带有改进性能的“生产者/消费者”排序模型。

如果两个具有相同ID的写事务被系统中所有其他组件以与事务发出相同顺序看到,则可以声明接口提供Ordered_Write_Observation。

如果接口没有Ordered_Write_Observation属性,那么只有当写入具有相同ID到同一外设的一系列写事务的观察顺序才得到保证。要在没有Ordered_Write_Observation的情况下支持“生产者/消费者”排序模型,必须在向不同外设发出后续事务之前,先完成对一个外设的早期写事务并提供BRESP响应。


http://www.ppmy.cn/ops/15657.html

相关文章

政企版 WPS Pro 专业版注册安装教程

政企版 WPS Pro 专业版安装及激活步骤 第 1 步:下载压缩包(内含注册码)【无解压密码】。 第 2 步:解压缩后,运行 exe 文件,默认步骤安装即可。 第 3 步:安装完成后,新建一个 Word …

开源数据集分享———猫脸码客

猫脸码客作为一个专注于开源数据集分享的公众号,致力于为广大用户提供丰富、优质的数据资源。我们精心筛选和整理各类开源数据集,涵盖机器学习、深度学习、自然语言处理等多个领域,以满足不同用户的需求。 (https://img-blog.csdnimg.cn/d98…

猫头虎分享已解决Bug || TypeError: Cannot read property ‘map‘ of undefined**

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

ASP.NET Core 3 高级编程(第8版) 学习笔记 04

第 19 章主要介绍 Restful Service 的相关知识。Restful Service 的核心内容是:(1)HTTP 请求或 HTTP 动词,用 HTTP 请求表达不同的操作,最好遵守惯例。(2)资源,通过 PATH 结合 paylo…

【堆】Leetcode 295. 数据流的中位数【困难】

数据流的中位数 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: MedianFinder() 初始化…

【网站项目】书籍销售系统小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

类和对象(中)(构造函数、析构函数和拷贝构造函数)

1.类的六个默认成员函数 任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 //空类 class Date{}; 默认成员函数:用户没有显示实现,编译器会自动生成的成员函数称为默认成员函数 2.构造函数 构造函数 是一个 特殊的成员函数&a…

Echarts-丝带图

Echarts-丝带图 demo地址 打开CodePen 什么是丝带图? 丝带图是Power BI中独有额可视化视觉对象,它的工具提示能展示指标当期与下期的数据以及排名。需求:使用丝带图展示"2022年点播订单表"不同月份不同点播套餐对应订单数据。 …