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

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

        上课时我们讲了AXI的额外的控制信息,本章节继续讲解AXI的 "原子访问" :独占访问(Exclusive Access)和锁定访问(Locked Access)

        这里会有一系列的课程,和大家分享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博客


         这些机制对于实现复杂的内存操作和确保数据的一致性非常重要。下面我先通过举例来帮助理解这些概念。

举例理解

独占访问(Exclusive Access)

        独占访问是一种机制,允许一个主设备(如CPU)告诉系统它想要对某个内存位置进行一系列操作,而这些操作不希望被其他设备干扰。这种访问通常用于实现信号量(semaphore)或锁(lock)的逻辑。

        例子:假设有两个CPU核心,它们都需要修改内存中的同一个变量。如果第一个核心开始读取这个变量并计划更新它,它可以使用独占访问来确保在它完成更新之前,第二个核心不能访问这个变量。这样,第一个核心就可以执行如下操作:

  1. 发送一个独占读取请求到内存。
  2. 内存响应并记录这个核心的请求。
  3. 第一个核心随后发送一个独占写入请求,如果在此期间没有其他核心访问过这个地址,内存就会接受这个写入请求并更新数据。

        如果第二个核心尝试访问这个地址,它会收到一个失败的响应,因为它不是第一个发出独占请求的核心。

锁定访问(Locked Access)

        锁定访问是一种机制,确保一系列操作在没有其他干扰的情况下完成。这通常用于需要顺序执行多个步骤的场景,例如,当一个核心需要更新多个连续的内存位置时。

        例子:假设有一个核心需要更新一个结构体中的几个字段,这些字段位于内存中的连续位置。为了避免在更新过程中其他核心读取或修改这些字段,核心可以使用锁定访问:

  1. 核心发送一个锁定读取请求到内存。
  2. 内存响应并确保在锁定序列完成之前,不会接受来自其他核心的访问请求。
  3. 核心按顺序发送锁定写入请求来更新每个字段。
  4. 一旦所有更新完成,核心发送一个解锁请求,内存随后解除锁定状态。

        在这个锁定序列中,即使其他核心尝试访问这些内存位置,它们也会被告知当前这些位置被锁定,不能进行访问。

原理

原子访问

关于原子访问

为了支持原子访问原语的实现,ARLOCK[1:0] 或 AWLOCK[1:0] 信号提供了独占访问和锁定访问。表显示了ARLOCK[1:0] 和 AWLOCK[1:0] 信号的编码。

原子访问编码

ARLOCK[1:0]

AWLOCK[1:0]

访问类型

b00

b00

普通访问

b01

b01

独占访问

b10

b10

锁定访问

b11

b11

保留

独占访问

        独占访问机制允许实现信号量类型的操作,而无需要求总线在整个操作期间被特定主设备锁定。独占访问的优点是,信号量类型的操作不会影响关键的总线访问延迟或可达到的最大带宽。

        ARLOCK[1:0] 或 AWLOCK[1:0] 信号选择独占访问,RRESP[1:0] 或 BRESP[1:0] 信号指示独占访问的成功或失败。

        从设备必须有额外的逻辑来支持独占访问。AXI协议提供了一个故障安全机制,以指示当一个主设备尝试对不支持它的从设备进行独占访问时。

独占访问过程

        独占访问的基本过程如下:

        主设备对地址位置执行独占读取。

        在某个后续时间点,主设备尝试通过在同一地址位置执行独占写入来完成独占操作。

        主设备的独占写入访问被标记为:

        如果在读取和写入访问之间没有其他主设备写入该位置,则为成功。

        如果在读取和写入访问之间有其他主设备写入了该位置,则为失败。在这种情况下,地址位置不会被更新。

        请注意,主设备可能不会完成独占操作的写入部分。独占访问监控硬件必须仅监控每个事务ID的一个地址。因此,如果主设备没有完成独占操作的写入部分,随后的独占读取将改变被监控的地址。

主设备视角的独占访问

        主设备通过执行独占读取来启动独占操作。这通常会从从设备返回EXOKAY响应,表示从设备记录了要监控的地址。

        请注意,如果主设备尝试对不支持独占访问的从设备执行独占读取,从设备将返回OKAY响应而不是EXOKAY响应。主设备可以将此视为错误情况,表示不支持独占访问。建议主设备不要执行这部分独占操作的写入部分。

        在独占读取之后的一些时间点,主设备尝试对同一位置执行独占写入。如果自独占读取以来该位置没有变化,独占写入操作就会成功。从设备返回EXOKAY响应,独占写入更新内存位置。

        如果自独占读取以来地址位置已经改变,独占写入尝试将失败,从设备返回OKAY响应而不是EXOKAY响应。独占写入尝试不会更新内存位置。

        主设备可能不会完成独占操作的写入部分。如果发生这种情况,从设备将继续监控地址的独占性,直到另一个独占读取启动新的独占访问。

        主设备在读取部分完成后,不得开始独占访问的写入部分。

从设备视角的独占访问

        不支持独占访问的从设备可以忽略 ARLOCK[1:0] 和 AWLOCK[1:0] 信号。它必须为普通和独占访问提供OKAY响应。

        支持独占访问的从设备必须具有监控硬件。建议这样的从设备为每个可以访问它的独占功能主设备ID都有一个监控单元。单端口从设备可以有一个标准独占访问监控器在从设备外部,但多端口从设备可能需要内部监控。

        独占访问监控器记录任何独占读取操作的地址和 ARID 值。然后它监控该位置,直到对该位置发生写入或直到另一个具有相同 ARID 值的独占读取将监控器重置为不同的地址。

        当发生具有给定 AWID 值的独占写入时,监控器检查是否该地址正在被监控独占性。如果是,那么这意味着自独占读取以来该位置没有发生写入,独占写入继续进行,完成独占访问。从设备返回EXOKAY响应给主设备。

        如果地址在独占写入时不再被监控,这意味着以下之一:

        自独占读取以来,该位置已被更新。

        监控器已被重置为另一个位置。

        在这两种情况下,独占写入不得更新地址位置,从设备必须返回OKAY响应而不是EXOKAY响应。

独占访问限制

        以下限制适用于独占访问:

        具有给定ID的独占写入的大小和长度必须与具有相同ID的前一个独占读取的大小和长度相同。

        独占访问的地址必须与事务中的总字节数对齐。

        独占读取和独占写的地址必须相同。

        独占访问的读取部分的 ARID 字段必须与写入部分的 AWID 匹配。

        独占访问的读取和写入部分的控制信号必须相同。

        独占访问突发中要传输的字节数必须是2的幂,即1、2、4、8、16、32、64或128字节。

        独占突发中可以传输的最大字节数是128。

        ARCACHE[3:0] 或 AWCACHE[3:0] 信号的值必须保证监控独占访问的从设备能看到该事务。例如,被从设备监控的独占访问不能有 ARCACHE[3:0] 或 AWCACHE[3:0] 值,表明该事务是可缓存的。

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

不支持独占访问的从设备

        响应信号 BRESP[1:0] 和 RRESP[1:0] 包括对成功普通访问的OKAY响应和对成功独占访问的EXOKAY响应。这意味着不支持独占访问的从设备可以提供OKAY响应来指示独占访问失败。

        请注意,对不支持独占访问的从设备的独占写入总是更新内存位置。

        对支持独占访问的从设备的独占写入只有在独占写入成功时才更新内存位置。

锁定访问

        当交易的 ARLOCK[1:0] 或 AWLOCK[1:0] 信号显示它是锁定传输时,互连体必须确保只有在来自同一主设备的解锁传输完成之前,才允许该主设备访问从设备区域。互连体中的仲裁器用于执行此限制。

        当主设备开始一系列锁定的读写交易时,它必须确保没有其他未完成的交易在等待完成。

        任何将 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为表示锁定序列的交易都会强制互连体锁定以下交易。因此,锁定序列必须始终以没有将 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为表示锁定访问的最终交易结束。这个最终交易被包括在锁定序列中,并有效地移除了锁定。

        在完成锁定序列时,主设备必须确保所有先前的锁定交易都已完成,然后再发出最终的解锁交易。然后,它必须确保最终解锁交易已完全完成,才能开始任何进一步的交易。

        主设备必须确保锁定序列中的所有交易都有相同的 ARID 或 AWID 值。

        请注意,锁定访问要求互连体在锁定序列进行时防止任何其他交易发生,因此可能会影响互连体性能。建议仅使用锁定访问来支持旧设备。

        推荐但不是强制性的限制包括:

        将所有锁定交易序列保持在相同的4KB地址区域。

        将锁定交易序列限制为两次交易。

为什么这些机制重要?

  • 数据一致性:在多核心系统中,独占访问和锁定访问确保了数据操作的原子性,防止了数据不一致的问题。
  • 性能优化:通过减少对共享资源的争用,这些机制可以帮助提高系统的整体性能。
  • 复杂操作支持:它们允许实现复杂的同步机制,这对于构建可靠的并发系统至关重要。

        理解这些概念对于设计和理解现代多核心处理器中的内存一致性和同步机制非常重要。

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

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

相关文章

力扣习题--找不同

目录 前言 题目和解析 1、找不同 2、 思路和解析 总结 前言 本系列的所有习题均来自于力扣网站LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 题目和解析 1、找不同 给定两个字符串 s 和 t ,它们只包含小写字母。 字符串 t…

Web 基础与 HTTP 协议

Web 基础与 HTTP 协议 一、Web 基础1.1域名和 DNS域名的概念Hosts 文件DNS(Domain Name System 域名系统)域名注册 1.2网页与 HTML网页概述HTML 概述网站和主页Web1.0 与 Web2.0 1.3静态网页与动态网页静态网页动态网页 二、HTTP 协议1.1HTTP 协议概述1.…

跨界客户服务:拓展服务边界,创造更多价值

在当今这个日新月异的商业时代,跨界合作已不再是新鲜词汇,它如同一股强劲的东风,吹散了行业间的壁垒,为企业服务创新开辟了前所未有的广阔天地。特别是在客户服务领域,跨界合作正以前所未有的深度和广度,拓…

刷题之多数元素(leetcode)

多数元素 哈希表解法&#xff1a; class Solution { public:/*int majorityElement(vector<int>& nums) {//map记录元素出现的次数&#xff0c;遍历map&#xff0c;求出出现次数最多的元素unordered_map<int,int>map;for(int i0;i<nums.size();i){map[nu…

llama2阅读: logits是什么?

Logits是一个在深度学习中&#xff0c;几乎一直都有的概念&#xff0c;它意味着模型unnormalized final scores. 然后你可以通过softmax得到模型针对你class的概率分布。 而在llama2的代码中&#xff0c;同样有logits的使用&#xff0c;那么针对llama2&#xff0c;logits的作用…

英国“王曼爱华”指的是哪几所高校?中英双语介绍

中文版 英国“王曼爱华”指的是伦敦大学国王学院、曼彻斯特大学、爱丁堡大学和华威大学这四所院校。以下是对伦敦大学国王学院、曼彻斯特大学、爱丁堡大学和华威大学这四所英国顶尖大学的详细介绍&#xff0c;包括它们的建校历史、专业优势、优秀校友和地理位置。 伦敦大学国…

HTTP协议格式

目录 正文&#xff1a; 1.概述 2.主要特点 3.请求协议格式 4.响应协议格式 5.响应状态码 总结&#xff1a; 正文&#xff1a; 1.概述 HTTP 协议是用于传输超文本数据&#xff08;如 HTML&#xff09;的应用层协议&#xff0c;它建立在传输层协议 TCP/IP 之上。当我们在…

C语言之常用内存函数以及模拟实现

目录 前言 一、memcpy的使用和模拟实现 二、memmove的使用和模拟实现 三、memset的使用和模拟实现 四、memcmp的使用和模拟实现 总结 前言 本文主要讲述C语言中常用的内存函数&#xff1a;memcpy、memmove、memset、memcmp。内容不多&#xff0c;除了了解如何使用&#x…

remix测试文件测试智能合约

remix内其实也是可以通过编写测试文件来测试智能合约的&#xff0c;需要使用插件自动生成框架以及测试结果。本文介绍一个简单的HelloWorld合约来讲解 安装插件多重检测&#xff1a; &#xff08;solidity unit testing&#xff09; 编译部署HelloWorld合约 // SPDX-License-…

Unity中TimeLine的一些用法

Unity中TimeLine的一些用法 概念其他 概念 无Track模式&#xff08;PlayableAsset、PlayableBehaviour&#xff09; 1. 两者关系 运行在PlayableTrack中作用 PlayableBehaviour 实际执行的脚本字段并不会显示在timeline面板上 PlayableAsset PlayableBehaviour的包装器&#x…

实现桌面动态壁纸(二)

目录 前言 一、关于 WorkerW 工作区窗口 二、关于窗口关系 2.1 窗口以及窗口隶属关系 2.2 桌面管理层窗口组分简析 2.3 厘清两个概念的区别 2.4 关于设置父窗口 三、编写代码以供在 Vista 上实现 3.1 方法二&#xff1a;子类化并自绘窗口背景 四、初步分析桌面管理层…

Akamai+Noname强强联合 | API安全再加强

最近&#xff0c;Akamai正式完成了对Noname Security的收购。本文我们将向大家介绍&#xff0c;经过本次收购后&#xff0c;Akamai在保护API安全性方面的后续计划和未来愿景。 Noname Security是市场上领先的API安全供应商之一&#xff0c;此次收购将让Akamai能更好地满足日益增…

PDF压缩工具选哪个?6款免费PDF压缩工具分享

PDF文件已经成为一种常见的文档格式。然而&#xff0c;PDF文件的体积有时可能非常庞大&#xff0c;尤其是在包含大量图像或复杂格式的情况下。选择一个高效的PDF压缩工具就显得尤为重要。小编今天给大家整理了2024年6款市面上反响不错的PDF压缩文件工具。轻松帮助你找到最适合自…

Nginx实战:nginx性能压测(ab)

在nginx的生产实践中,不管是服务上线,还是性能优化,都会遇到需要对nginx的性能压测,本文介绍一个简单的压测工具:ab命令 ab(Apache Bench)是一个常用的HTTP压力测试工具,可以用来测试Nginx的性能和压力。ab命令可以指定并发请求数、请求数、请求类型等参数,并输出测试…

JavaScript-websocket的基本使用

JavaScript-websocket的基本使用 文章说明JavaScript端后台--服务端连接演示 文章说明 本文主要介绍JavaScript中websocket的基本使用&#xff0c;后台采用Java编写WebSocket服务端 JavaScript端 websocket工具类 class Socket {constructor(url, onopen, onmessage, onerror, …

前端实现坐标系转换

一、地理坐标系和投影坐标系 地理坐标系和投影坐标系是地理信息系统&#xff08;GIS&#xff09;中常见的两种坐标系统&#xff0c;它们用于描述和定位地球表面上的点和区域&#xff0c;但在实现方式和应用场景上有所不同。 1. 地理坐标系&#xff08;Geographic Coordinate …

【CUDA】 扫描 Scan

Scan Scan操作是许多应用程序中常见的操作。扫描操作采用一个二元运算符⊕和一个输入数组并计算输出数组如下&#xff1a; [x0,(x0⊕x1),…,( x0⊕x1⊕…..⊕xn-1)] 分层扫描和多种Scan算法介绍 Kogge-Stones Algorithm Kogge-Stones Algorithm最初是为设计快速加法电路而发…

JavaEE——计算机工作原理

冯诺依曼体系&#xff08;VonNeumannArchitecture&#xff09; 现代计算机&#xff0c;大多遵守冯诺依曼体系结构 CPU中央处理器&#xff1a;进行算术运算与逻辑判断 存储器&#xff1a;分为外存和内存&#xff0c;用于存储数据&#xff08;使用二进制存储&#xff09; 输入…

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅

​ 常识: 一般智能手机的额定工作电流大约为200mA Arduino Uno板上I/0(输入/输出)引脚最大输出电流为40 mA Uno板控制器总的输出电流为200 mA 点亮LED灯 发光二极管介绍 发光二极管(Light Emitting Diode&#xff0c;简称LED)是一种能够将电能转化为光能的固态的半导体器件…

实现模型贴图的移动缩放旋转

技术&#xff1a;threejscanvasfabric 效果图&#xff1a; 原理&#xff1a;threejs中没有局部贴图的效果&#xff0c;只能通过map 的方式贴到模型上&#xff0c;所以说换一种方式来实现&#xff0c;通过canvasfabric来实现图片的移动缩放旋转&#xff0c;然后将整个画布以map…