【总线】AXI第十课时:AXI协议的Ordering Model 使用ID tag

         大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁。

        上课时我们讲了AXI响应信号 (Response Signaling):RRESP和 BRESP,本课时介绍一下AXI协议的Ordering Model AXI协议如何使用事务ID标签来启用乱序事务处理和发出多个未完成事务的能力。。

        这里会有一系列的课程,和大家分享AMBA总线家族,欢迎大家一起学习,收藏点赞。

  系列文章

【总线】AMBA总线架构的发展历程-CSDN博客

【总线】设计fpga系统时,为什么要使用总线?-CSDN博客

【总线】AXI总线:FPGA设计中的通信骨干-CSDN博客

【总线】AMBA总线家族的明星成员:AXI协议简介-CSDN博客

【总线】AXI4第一课时:揭秘AXI4总线的五大独立通道-CSDN博客

【总线】AXI4第二课时:深入AXI4总线的基础事务-CSDN博客

【总线】AXI4第三课时:握手机制-CSDN博客

【总线】AXI4第五课时:信号描述-CSDN博客

【总线】AXI4第六课时:寻址选项深入解析-CSDN博客

【总线】AXI4第七课时:AXI的额外的控制信息(PROT和CACHE)-CSDN博客

【总线】AXI4第八课时:介绍AXI的 “原子访问“ :独占访问(Exclusive Access)和锁定访问(Locked Access)-CSDN博客

【总线】AXI第九课时:介绍AXI响应信号 (Response Signaling):RRESP和 BRESP-CSDN博客


        本章节的内容文字看懂应该没问题,但是理解就难一些了, 一般情况下大家使用axi的时候都是使用的现成的程序或IP,只要约定好位宽,连接好信号,不需要大家考虑这些内容。有兴趣的可以了解一下。

概述

本章描述 AXI 协议用事务 ID tags 来处理多地址和乱序传输。

1、五种事务 IDs

( 1) AWID 这个 ID tag 是写地址群组信号。

( 2) WID 这个是写 ID tag 在写事务中,与写数据在一起,主机传送一个WID 去匹配与地址相一致的 AWID。

( 3) BID 这个 ID tag 是写响应事务中。设备会传送 BID 去匹配与 AWID和 WID 相一致的事务。

( 4) ARID 这个 ID tag 是读地址群组信号。

( 5) RID  这个 ID tag 是在读事务中。 设备传送 RID 去匹配与 ARID 相一致的事务。

2、主机可以使用一个事务的 ARID 或者 AWID 段提供的附加信息排序主机的需要。事务序列规则如下:
( 1) 从不同主机传输的事务没有先后顺序限制。他们可以以任意顺序完成。

( 2) 从同一个主机传输的不同 ID 事务,也没有先后顺序限制。他们可以以任意顺序完成。

( 3) 相同数值的 AWID 写事务数据序列必须按照顺序依次写入主机发送的地址内。

( 4) 相同数值的 ARID 读事务数据序列必须遵循下面的顺序:

◇1 当从相同设备读相同的 ARID 时, 设备必须确保读数据按照相同的地址顺序接受。

◇2 当从不同的设备读相同的 ARID 时, 接口处必须确保读数据按照主机发送的相同的地址顺序。

( 5) 在相同的 AWID 和 ARID 的读事务和写事务之间没有先后顺序限制。 如果主机要求有顺序限制, 那么必须确保第一次事务完全完成后才开始执行第二个事务。

3、当一个主机接口与 interconnect 相连时, interconnect 会在信号 ARID、 AWID、WID 段添加一位,每一个主机端口都是独一无二的。这样做有两个影响:

( 1)主机不需要去知道其他主机的 ID 数值, 因为 interconnect 是 ID 值是唯一的,当将主机 number 添加到段中。

( 2)在设备接口处的 ID 段的宽度要比主机接口处的 ID 段宽。

对于读数据, interconnect 附加一位到 RID 段中,用来判断哪个主机端口读取数据。 Interconnect 会移除 RID 段中的这一位在将 RID 的值送往正确的主机端口之前。

展开说明

10.1 关于排序模型

        AXI协议支持乱序事务完成和发出多个未完成事务的能力。这些特性使得实现高性能互连成为可能,最大化了数据吞吐量和系统效率。

        ID信号通过使每个端口充当多个有序端口来支持乱序事务。所有具有给定ID的事务必须有序,但对于具有不同ID的事务的排序没有限制。五个事务ID是:

  • AWID:写地址组信号的ID标签。
  • WID:写事务的写ID标签。主设备连同写数据一起传输WID,以匹配相应地址的AWID。
  • BID:写响应的ID标签。从设备传输BID,以匹配它正在响应的事务的AWID和WID。
  • ARID:读地址组信号的ID标签。
  • RID:读事务的读ID标签。从设备传输RID,以匹配它正在响应的事务的ARID。

注意:从设备和主设备不必使用这些高级特性。简单的主设备和从设备可以一次处理一个事务,按照它们被发出的顺序。

        能够发出多个未完成事务意味着主设备可以在不必等待早期事务完成的情况下发出事务地址。这个特性可以通过使事务并行处理来提高系统性能。

        事务乱序完成的能力意味着到更快内存区域的事务可以在不必等待早期事务到较慢内存区域的情况下完成。这个特性也可以通过减少事务延迟的影响来提高系统性能。

注意:事务的重新排序是相对于其他事务的。没有设施可以重新排序突发数据传输内的事务。定义突发的地址和控制信号控制突发内传输的顺序。

10.2 传输ID字段

        AXI协议提供了一个ID字段,使主设备能够发出多个独立的事务,每个事务都必须按顺序返回。

        主设备可以使用事务的ARID或AWID字段来提供有关主设备的排序要求的额外信息。管理事务排序的规则如下:

  • 不同主设备的事务之间没有排序限制。它们可以以任何顺序完成。

  • 来自同一主设备但具有不同ID值的事务之间没有排序限制。它们可以以任何顺序完成。

  • 具有相同AWID值的一系列写事务的数据必须按照主设备发出地址的顺序完成。

  • 具有相同ARID值的一系列读事务的数据必须按以下顺序返回:

    • 当来自同一从设备的读事务具有相同的ARID时,从设备必须确保按接收地址的顺序返回读数据。
    • 当来自不同从设备的读事务具有相同的ARID时,互连必须确保按主设备发出地址的顺序返回读数据。
  • 具有相同AWID和ARID的读写事务之间没有排序限制。如果主设备需要排序限制,则必须确保第一个事务在发出第二个事务之前完全完成。

10.3 读取排序

        在主设备接口,具有相同ARID值的读事务返回的读数据必须与主设备发出地址的顺序相同。具有不同ARID值的读事务的数据可以以任何顺序返回,并且交错返回具有不同ARID字段的事务的读数据也是可以接受的。

        从设备必须按接收地址的顺序返回具有相同ARID值的一系列读事务的读数据。在具有不同ARID值的一系列读事务中,从设备可以以不同于事务到达顺序的顺序返回读数据。

        从设备必须确保任何返回的读数据的RID值与它正在响应的地址的ARID值匹配。

        互连必须确保来自不同从设备的一系列具有相同ARID值的读事务按顺序完成。

        读数据重新排序深度是挂起在从设备中的地址数量,这些地址可以重新排序。处理所有事务的顺序的从设备具有读数据重新排序深度为一。读数据重新排序深度是一个静态值,必须由从设备的设计师指定。

10.4 正常写入排序

        如果从设备不支持写数据交错(见第8-6页的写数据交错),主设备必须按照它发出事务地址的顺序发出写事务的数据。

        大多数从设备设计不支持写数据交错,因此这些类型的从设备设计必须按接收地址的顺序接收写数据。如果互连将来自不同主设备的写事务组合到一个从设备,它必须确保按地址顺序组合写数据。

        这些限制甚至适用于具有不同AWID值的写事务。

10.5 写数据交错

        写数据交错使从设备接口能够接受具有不同AWID值的交错写数据。从设备声明一个写数据交错深度,表明接口是否可以接受来自具有不同AWID值的源的交错写数据。写数据交错深度是静态配置的。默认情况下,任何接口的写数据交错深度为一。

注意:不允许交错具有相同AWID的不同事务的写数据。

        写数据交错深度是当前挂起在从设备接口中的不同地址的数量,这些地址可以提供写数据。例如,具有两个挂起地址的从设备,所有地址都具有不同的AWID值,可以接收数据的任何一个前两个挂起地址。

        从设备接收每个事务的第一个数据项的顺序必须与它接收事务地址的顺序相同。

        写数据交错可以防止互连组合发往同一从设备的多个数据流时发生阻塞。互连可能会组合来自慢源的一个写数据流和来自快源的另一个写数据流。通过交错两个写数据流,互连可以提高系统性能。

注意:如果两个具有不同AWID值的写事务访问相同或重叠的地址位置,则处理顺序未定义。更高级别的协议必须确保事务处理的正确顺序。

        能够内部控制写数据生成的主设备接口会按照它生成地址的顺序生成所有写数据。然而,如果主设备接口可以从具有不同速度的多个源传递写数据,它可以交错这些源以最大限度地利用互连。

10.6 读写交互

        读写事务之间没有排序限制,它们可以以任何顺序完成。

        如果主设备要求读写事务之间有特定的关系,则必须确保在发出后续事务之前完成早期事务。在读取的情况下,早期事务可以在将最后读取的数据返回给主设备时被认为是完成的。在写入的情况下,只有当主设备收到写响应时,事务才被认为是完成的,当所有写数据已发送时,认为写事务完成是不可接受的。

        对于被外设占据的地址区域,这通常意味着在需要排序限制的读写事务之间切换时,需要等待早期事务完成。

        对于内存区域,主设备可以实施地址检查以针对未完成的事务,以确定新事务是否可能是相同的或重叠的地址区域。如果事务不重叠,则可以在不必等待早期事务完成的情况下开始新事务。

10.7 互连使用ID字段

        当主设备接口连接到互连时,互连将附加额外的位到ARID、AWID和WID字段,这些位对该主设备端口是唯一的。这有两个效果:

  • 主设备不必知道其他主设备使用的ID值,因为互连通过在字段中附加主设备号来使ID值唯一。
  • 从设备接口的ID字段宽度比主设备接口的ID字段宽度宽。

        对于读数据,互连使用RID字段的附加位来确定读数据是发往哪个主设备端口的。互连在将RID值传递到正确的主设备端口之前,会移除RID字段的这些附加位。

10.8 推荐ID字段的宽度

        为了利用AXI乱序事务能力,请使用以下建议:

  • 在主设备组件中实现多达四位的事务ID。
  • 在互连中为主设备端口号实现多达四位的事务ID。
  • 在从设备组件中实现八位的ID支持。

        注意:对于只支持单一有序接口的主设备,将ID输出连接到一个常数值(如0)是可以接受的。

        对于那些不使用排序信息并简单地按顺序处理所有事务的从设备,可以使用标准现成模块向从设备添加ID功能,从而使得设计没有ID信号的从设备基本功能成为可能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

向日葵IT运维节丨解决三个关键问题,搞好企业IT运维

724运维节,是所有运维人的节日,贝锐向日葵也在这一天致敬所有需要7x24小时待命的运维人,将这一天定为“向日葵IT运维节”,为广大运维人带来大量专属福利! 724这组数字,折射出运维人的日常,即7x2…

【电子数据取证】取证图片EXIF数据揭晓位置秘密

文章关键词:电子数据取证、手机取证、介质取证、逆向分析 一、前言 随着智能手机和互联网技术的发展,各种终端应用软件应运而生。本文研究了APK结构、提取方式、逆向分析工具等,并通过实际案例,按照电子数据取证流程从静态分析和…

c++多态的定义和原理

目录 1、多态的定义和实现 1.多态的构成条件 2.虚函数 3.虚函数的重写(覆盖) 4.虚函数重写的两个例外 5.c11 override和final 6.重载,覆盖(重写)和隐藏(重定义) 2、抽象类 概念 接口继承和实现继承 3、多态的原理 1.虚函数表 2.多态的原理 4、多继承中的虚…

MessageBox与HubSpot:企业沟通与客户管理的双重利器

今天咱们来聊聊两个超实用的工具——MessageBox和HubSpot。它们就像是你的超级助手,让你和客户沟通起来更顺畅,管理起来也更轻松。 先说说MessageBox吧 想象一下,你正在忙着工作,突然客户发来个消息,你嗖的一下就收到…

【面试题】MySQL(第三篇)

目录 1. MySQL中如何处理死锁? 2. MySQL中的主从复制是如何实现的? 3. MySQL中的慢查询日志是什么?如何使用它来优化性能? 4.存储过程 一、定义与基本概念 二、特点与优势 三、类型与分类 四、创建与执行 五、示例 六、总…

常见网页问题解决

用edge浏览器打印功能时,出现瞬间或加载几秒后突然闪退情况,本来以为是浏览器出了问题,去重置设置也没有,后来又下载了Chrome浏览器,没想到还是一样!!!!!想着…

超级源点/汇点(算法篇)

算法之超级源点/汇点 超级源点/汇点 概念: 超级源点/汇点是模拟出来的虚拟点,多用于图中: 同时有多个源点和多个汇点,建立超级源点和超级汇点同时有多个源点和一个汇点,建立超级源点同时有多个汇点和一个源点&#x…

windows安装Docker Desktop及国内镜像

简介 Docker 是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。通过Docker工具,简化了应用的部署、配置和管理过程,提高…

2024年五款企业加密软件(企业加密软件排行最新)

关键是数字化时代,企业数据安全至关重要。一般来说信息技术快速发展,企业数据泄露风险上升。你知道的加密软件保护企业核心数据和商业机密,不可或缺。对我而言介绍几款企业加密软件,帮助选择适合需求的解决方案。 固信加密软件ht…

性价比高充电宝有哪些?充电宝十大最佳品牌大盘点!

在如今这个高度数字化的时代,我们的生活离不开各种电子设备,而充电宝作为保障电子设备续航的重要工具,其地位日益凸显。然而,面对市场上琳琅满目的充电宝品牌和产品,要挑选到一款性价比高的充电宝并非易事。在这篇盘点…

C++20中的指定初始化器(designated initializers)

指定初始化器(designated initializers, 指定初始值设定项)语法如下:C风格指定初始化器语法,初始化数据成员的一种便捷方式 T object { .des1 arg1, .des2 { arg2 } ... }; T object { .des1 arg1, .des2 { arg2 } ... }; 说明: 1.每个指…

2024做TEMU跨境电商,全托管/半托管模式怎么选?

如果说2023年,“全托管”是跨境圈的热词,那2024年一定少不了“半托管”。 自2024年1月,速卖通首次推出半托管模式后,引发了众跨境卖家的热议;而TEMU随后在3月也推出半托管模式,便迅速使得半托管这一模式开始…

盲人出行好帮手:蝙蝠避障让走路变简单

在一片无光的世界里,每一步都承载着探索与勇气。我是众多盲人中的一员,每天的出行不仅是从A点到B点的物理移动,更是一场心灵的征程。我的世界,虽然被剥夺了视觉的馈赠,却因科技的力量而变得宽广…

WEB DEVELOPMENT AND APPLICATIONSB DW4213

TASK 1. Pick a topic. o Decide on a product to sell. It can be any product that can be sold online. You may refer to websites such as Lazada or Shopee to get some inspiration. o Example: − Computer Store − Smartphone Store − Vitamins &am…

Visual Studio 2019 (VS2019) 中使用 CMake 配置 OpenCV 库(快捷版)

2024.07.11 测试有效 最近需要用一下 opencv 处理图像,简单配置了一下Cmake下的 opencv 库。 没有编译 opencv ,也不知道他们为什么要自己编译 opencv 。 一、下载并安装 OpenCV 1.前往 OpenCV 官方网站 下载适用于您的系统的 OpenCV 安装包。 2.点击直接…

Java高级重点知识点-23-网络编程

文章目录 网络编程入门软件结构网络通信协议协议分类网络编程三要素 TCP通信程序通信步骤Socket类ServerSocket类简单的TCP网络程序 文件上传【拓展】 网络编程入门 软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。B/S结构 &…

AI Earth——2020年中国建筑物高度CNBH数据产品(10m)

数据介绍: 复旦大学生命科学学院GC3S团队(吴万本博士、赵斌教授等)利用多源地球观测数据和机器学习技术,构建了中国第一个10米分辨率的建筑高度估计模型(CNBH-10m)。基于此模型建立了中国10米分辨率的建筑高度数据集。此数据集基于全天候地球观测(雷达、光学和夜光图像)…

Iridient Developer:解锁Mac RAW图像处理的极致潜力,打造专业级色彩与细节

Iridient Developer for Mac是一款专为Mac用户设计的RAW图像调整软件,它以其卓越的性能和丰富的功能,赢得了众多摄影师的青睐。以下是对这款软件的详细介绍: 一、强大的RAW图像处理能力 Iridient Developer专为处理RAW图像而设计&#xff0…

使用Python实现深度学习模型:在嵌入式设备上的部署

引言 随着物联网(IoT)和嵌入式系统的发展,将深度学习模型部署到嵌入式设备上变得越来越重要。这不仅可以实现实时数据处理,还能大幅降低数据传输的延迟和成本。本文将介绍如何使用Python将深度学习模型部署到嵌入式设备上&#x…

Android WebView由于重定向造成的goBack()无效的问题解决

当加载重定向Url时,webView不能一级一级goback返回上一页面的问题 override fun shouldOverrideUrlLoading(webView: WebView, url: String): Boolean {//网页在webView中打开webView.loadUrl(url)return true}override fun onPageStarted(webView: WebView?, s: S…