AXI协议详解(6)-原子访问

news2024/12/28 19:55:37

原子访问

本章介绍了 AXI 协议如何实现排他访问和锁定访问机制。 它包含以下部分:

  • 原子访问
  • 排他访问
  • 锁定访问

6.1 原子访问

为了实现原子访问权限,ARLOCK[1:0]AWLOCK[1:0] 信号提供排他访问和锁定访问。 表 6-1 显示了 ARLOCK[1:0]AWLOCK[1:0] 信号的编码。

image-20221030151627051

Table6-1 Atomic access encoding

6.2 排他访问

排他访问机制能够实现信号量类型的操作,而无需在操作期间将总线保持锁定到特定的Master。 排他性访问的优点是信号量类型的操作不会影响关键的总线访问延迟或最大可实现的带宽。

ARLOCK[1:0]AWLOCK[1:0] 信号选择排他访问,RRESP[1:0]BRESP[1:0] 信号表示排他访问成功或失败。

Slave必须有额外的逻辑来支持排他访问。 AXI 协议提供了一种故障安全机制,以指示Master何时尝试对不支持它的Slave进行排他访问。

6.2.1 排他访问过程

  1. Master从地址位置执行排他读取。

  2. 稍后,Master尝试通过对同一地址位置执行排他写入来完成排他操作。

  3. Master的排他写访问信号如下:

    • 如果在读取和写入访问之间没有其他Master写入该位置,则成功。
    • 如果另一个Master在读写访问之间写入该位置,则失败。 在这种情况下,地址位置不会更新。

    注意:
    Master可能无法完成排他操作的写入部分。 排他访问监控硬件必须仅监控每个事务 ID 的一个地址。 因此,如果Master未完成排他操作的写入部分,则后续排他读取会更改正在监视的排他地址。

6.2.2 master 视角的排他访问

Master通过执行排他读取来启动排他操作。 这通常会从Slave返回 EXOKAY 响应,表明Slave记录了要监视的地址。
注意:
如果Master尝试从不支持排他访问的Slave进行排他读取,则Slave将返回 OKAY 响应而不是 EXOKAY 响应。 Master可以将此视为指示不支持排他访问的错误条件。 建议Master不要执行此排他操作的写部分。

在排他读取后的某个时间,Master尝试对同一位置进行排他写入。 如果自排他读取后位置没有改变,则排他写入操作成功。 Slave返回 EXOKAY 响应,排他写入更新内存位置。(排他读取后,接着进行同一个地址的排他写,肯定能成功)

如果自排他读取后地址位置发生了变化,则排他写入尝试失败,Slave返回 OKAY 响应而不是 EXOKAY 响应。 排他写入尝试不会更新内存位置。(排他读取后,接着进行不同的地址的排他写,会失败)

Master可能无法完成排他操作的写入部分。 如果发生这种情况,Slave将继续监视地址的排他性,直到另一个排他读取启动新的排他访问。

在读部分完成之前,Master不得开始排他访问的写部分。(排他写的优先级小)

6.2.3 Slave角度的排他访问

不支持排他访问的Slave可以忽略 ARLOCK[1:0]AWLOCK[1:0] 信号。它必须为正常和排他访问提供 OKAY 响应。

支持排他访问的Slave必须具有监视器硬件。建议这样的Slave为每个可以访问它的排他Master ID 设置一个监控单元。单端口Slave可以在Slave外部有一个标准的排他访问监视器,但多端口Slave可能需要内部监视。

排他访问监视器记录任何排他读操作的地址和 ARID 值。然后它会监视该位置,直到对该位置进行写入,或者直到另一个具有相同 ARID 值的排他读取将监视器重置为不同的地址。

当使用给定的 AWID 值发生排他写入时,监视器会检查该地址是否正在被监视以获取排他性。如果是,则这意味着该位置没有发生写入,并且排他写入继续进行,完成排他访问。Slave向Master返回 EXOKAY 响应。

如果在排他写入时不再监视地址,这意味着以下情况之一:

  • 位置自排他读取后已更新
  • 监视器已重置到另一个位置

在这两种情况下,排他写入都不能更新地址位置,Slave必须返回 OKAY 响应而不是 EXOKAY 响应。

6.2.4 排他访问限制

以下限制适用于排他访问:

  • 具有给定ID 的排他写入的大小和长度必须与具有相同ID 的前一个排他读取的大小和长度相同。
  • 排他访问的地址必须与事务中的总字节数对齐。
  • 排他读取和排他写入的地址必须相同。
  • 排他访问读取部分的ARID 字段必须与写入部分的AWID 匹配。
  • 排他访问的读和写部分的控制信号必须相同。
  • 在排他访问突发中传输的字节数必须是2 的幂,即1、2、4、8、16、32、64 或128 个字节。
  • 可在排他突发中传输的最大字节数为 128。
  • ARCACHE[3:0]AWCACHE[3:0] 信号的值必须保证监控排他访问的Slave看到事务。例如,由Slave监视的排他访问不能具有指示事务可缓存的 ARCACHE[3:0]AWCACHE[3:0] 值。

不遵守这些限制会导致不可预测的行为。

在排他操作期间要监视的最小字节数由事务的长度和大小定义。 可以监控更大数量的字节,最多 128 个,这是排他访问的最大值。 然而,这可能导致排他访问实际上成功但由于相邻字节被更新而被指示为失败的情况。

6.2.5 不支持排他访问的Slave

响应信号 BRESP[1:0] 和 RRESP[1:0] 包括成功正常访问的 OKAY 响应和成功排他访问的 EXOKAY 响应。 这意味着不支持排他访问的Slave可以提供 OKAY 响应以指示排他访问失败。
注意:
对不支持排他访问的Slave的排他写入总是更新内存位置。
只有当排他写入成功时,对支持排他访问的Slave的排他写入才会更新内存位置。

6.3 锁定访问

当事务的 ARLOCK[1:0] 或 AWLOCK[1:0] 信号表明它是锁定传输时,互连必须确保只有该Master被允许访问Slave区域,直到来自同一Master的解锁传输完成。互连内的仲裁器用于强制执行此限制。

当Master启动读或写事务的锁定序列时,它必须确保没有其他未完成的事务等待完成。

任何将 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为指示锁定序列的事务都会强制互连锁定之后的事务。因此,锁定序列必须始终以未将 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为指示锁定访问的最终事务完成。此最终事务包含在锁定序列中并有效地移除锁定。(锁定的事务会强制将它之后的事务也锁定,所以如果想要移除锁定,需要把最后一个事务的 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为未锁定。)

当完成一个锁定序列时,Master必须确保在发出最终解锁事务之前所有先前的锁定事务都已完成。然后,它必须确保在开始任何进一步的事务之前,最终的解锁事务已经完全完成。

Master必须确保锁定序列中的所有事务都具有相同的 ARID 或 AWID 值。

注意:
锁定访问要求互连防止在锁定序列进行时发生任何其他事务,因此会对互连性能产生影响。 建议锁定访问仅用于支持传统设备。

以下限制是推荐的,但不是强制性的:

  • 将所有锁定的事务序列保持在同一个 4KB 地址区域内
  • 将锁定的事务序列限制为两个事务

任何其他事务,因此会对互连性能产生影响。 建议锁定访问仅用于支持传统设备。

以下限制是推荐的,但不是强制性的:

  • 将所有锁定的事务序列保持在同一个 4KB 地址区域内
  • 将锁定的事务序列限制为两个事务

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

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

相关文章

3.NLP基础:文本可视化简述

1.文本可视化的流程 文本可视化依赖于自然语言处理,因此词袋模型、命名实体识别、关键词抽取、主题分析、情感分析等是较常用的文本分析技术。文本分析的过程主要包括特征提取,通过分词、抽取、归一化等操作提取出文本词汇级的内容,利用特征…

Qt 集成 FFmpeg 实现颜色格式转换

目录 1. Qt 集成 FFmpeg 1.1 下载 FFmpeg 1.2 Qt 集成 FFmpeg 1.2.1 修改 .pro 文件 1.2.2 放入 dll 文件 1.2.3 代码中使用 FFmpeg 2. 图像格式转换 3. 预览 4. 项目地址 项目需要,写个小工具来实现图像颜色格式的转换,主要的 Feature 如下&am…

百度最强中文AI作画大模型

前言 最近文生图领域的发展可谓是分生水起,这主要是得益于最近大火的扩散模型,之前笔者也写过一篇关于文本生产3D模型的文章,大家感兴趣的可以穿梭: https://zhuanlan.zhihu.com/p/570332906 今天要给大家介绍的这一篇paper是百度…

AXI协议详解(10)-非对齐传输

非对齐传输 本章介绍 AXI 协议如何处理未对齐的传输。 它包含以下部分: • 未对齐的传输 • 示例 10.1 关于未对齐传输 AXI 协议使用基于突发的寻址,这意味着每个事务由多个数据传输组成。 通常,每个数据传输都与传输大小对齐。 例如&…

Linux入门

Liunx 一计算机发展历史第一台计算机的诞生时代背景线计算机的发展线国家线时间线收束Liunx诞生操作系统简述购买云服务器以及登录增加用户总结学习的同时别忘了每天运动! 身体才是革命的本钱 计算机发展历史 第一台计算机的诞生 第一台计算机在1946年2月14日在美国…

webpack学习踩坑笔记(持续更新中...)

目录 学习内容: 1.5使用plugin 1.6 使用DevServer 学习内容: 《深入浅出webpack》 深入浅出Webpack Dive Into GitBook 因为很多内容书上已经写了,这里主要是记录一下个人看书过程中遇到的坑 1.5使用plugin 这一部分介绍了一个可以把…

vue3事件处理

获取到用户点击或者勾选的值 <li click“clici(item)” v-for"item in data" :key"id"> {{item}}</li> <script> clici(item){ } </script> v-model 实现数据的双向绑定 v-model.lazy 只有当用户提交或enter键后才触…

【数据结构】动态顺序表(C语言实现)

文章目录0. 前言1. 线性表2. 顺序表2.1 概念及结构3. 动态顺序表的实现3.1 定义结构3.2 接口函数总览3.3 初始化3.4 检查增容3.5 尾插3.6 尾删3.7 头插3.8 头删3.9 查找3.10 指定下标位置插入3.11 指定下标位置删除3.12 修改3.13 打印3.14 销毁4. 完整代码SeqList.hSeqList.cte…

HTML常见标签总结

目录 1.标题标签 2.段落标签 3.字体修饰标签 4.图片标签 5.超链接标签 6.表格标签 7.列表标签 8.表单标签 9.下拉菜单 10 多行文本框 1.标题标签 一级标题是<h1></h1>中间填上标题的内容,一共可以设置六级标题,数字越小,标题就越大越粗 我们测试一段代码 …

深度残差收缩网络(Deep Residual Shrinkage Networks for Fault Diagnosis )

摘要-本文开发了新的深度学习方法&#xff0c;即深度残余收缩网络&#xff0c;提高来自高噪声振动信号的特征学习能力&#xff0c;并实现较高的故障诊断准确性。软阈值作为非线性转换层插入到深层体系结构中&#xff0c;以消除不重要的特征。此外&#xff0c;考虑到通常为阈值设…

大数据编程实验一:HDFS常用操作和Spark读取文件系统数据

大数据编程实验一&#xff1a;HDFS常用操作和Spark读取文件系统数据 文章目录大数据编程实验一&#xff1a;HDFS常用操作和Spark读取文件系统数据一、前言二、实验目的与要求三、实验内容四、实验步骤1、HDFS常用操作2、Spark读取文件系统的数据五、最后我想说一、前言 这是我…

Swift基础——字典

Swift基础——字典 嗯。。。前面我们已经学习了数组&#xff08;相关文章地址&#xff09;&#xff0c;我们知道了在Swift中&#xff0c;苹果提供了两种集合类型来存储集合的值即Array和Dictionary。 Dictionary字典 字典&#xff1a;一种存储多个相同类型值的容器&#xff…

谈谈Java对象的生命周期

经过前面的分析 &#xff0c;我们现在来看一下创建的对象到底是什么东西&#xff0c;并且完整的总结一下一个对象从创建到回收到底经过了哪些阶段。 1 对象的创建 对象创建的主要流程: 1.类加载检查 虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常…

【趣学算法】贪心算法、海盗古董装船问题

14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的&#xff0c;这一次&#xff0c;让我们先人一步&#xff0c;趣学算法&#xff01; 文章目录贪心本质贪心选择最优子结构最优装载问题sort函数总结贪心本质 一个贪心算法总是做出当前最好的选择&#xff0c;也就是说…

R语言“优雅地“进行医学统计分析

本文首发于公众号&#xff1a;医学和生信笔记&#xff0c;完美观看体验请至公众号查看本文。 医学和生信笔记&#xff0c;专注R语言在临床医学中的使用&#xff0c;R语言数据分析和可视化。 文章目录主要函数描述性统计比较均值增强R中的ANOVA事后检验&#xff08;post-hoc&…

嘉立创EDA的一些使用技巧

立创EDA专业版-使用教程 (lceda.cn):https://prodocs.lceda.cn/cn/faq/editor/index.html绘制板框&#xff1a;https://blog.csdn.net/gutie_bartholomew/article/details/122936253和 mil 的切换&#xff0c;按【Q】切换单位测量 AltM&#xff0c;方便地测量物件之间的距离。按…

MySQL调优之索引在什么情况下会失效?

MySQL中提高性能的一个最有效的方式是对数据表设计合理的索引。索引提供了高效访问数据的方法&#xff0c;并且加快查询的速度&#xff0c;因此索引对查询的速度有着至关重要的影响。 使用索引可以快速地定位表中的某条记录&#xff0c;从而提高数据库查询的速度&#xff0c;提…

Spring JdbcTemplate.queryForObject()

Spring JdbcTemplate 是JDBC核心包中的中心类。它简化了 JDBC 与 Spring 的使用&#xff0c;并有助于避免常见错误。在此页面上&#xff0c;我们将学习使用它的queryForObject 方法。 JdbcTemplate.queryForObject不同参数的方法。1. <T> T queryForObject(String sql, …

继承-安全-设计模式

继承 与 原型、原型链 1. 继承是什么&#xff1f; 继承就是一个对象可以访问另外一个对象中的属性和方法 2. 继承的目的&#xff1f; 继承的目的就是实现原来设计与代码的重用 3. 继承的方式 java、c等&#xff1a;class**javaScript&#xff1a; 原型链 ** ES2015/ES6 中…

数据导入与预处理-拓展-pandas可视化

数据导入与预处理-拓展-pandas可视化1. 折线图1.1 导入数据1.2 绘制单列折线图1.3 绘制多列折线图1.4 绘制折线图-双y轴2. 条形图2.1 单行垂直/水平条形图2.2 多行条形图3. 直方图3.1 生成数据3.2 透明度/刻度/堆叠直方图3.3 拆分子图4. 散点图4.1生成数据4.2 绘制大小不一的散…