有朋友提出希望讲一下AXI的原子访问(Atomic Accesses)。其实这部分我在前面特意没提及,一是个人感觉这块牵扯的基本概念太多,而且晦涩难懂,二是工作中真需要用到的机会也不多。今天简单介绍一下,有不对的地方请大家指教。
何为“原子性”?在这里,“原子性”指的是内存访问的一个特征,也称为原子访问,该内存访问操作要么执行完,要么不被执行,不存在执行一半被打断的可能。也就是该内存访问操作像原子一样不可切割。
为此,ARMv8-A(注意,不是AXI)中定义了两种原子性:单拷贝原子性(single-copy atomicity)和多拷贝原子性(multi-copy atomicity),此处不展开太多了,以后有机会单独写一篇与大家讨论。
AXI4中引入了一个概念,单拷贝原子大小(single-copy atomicity size)。这个术语定义事务原子更新的最小字节数。AXI4协议要求大于单拷贝原子大小的事务必须更新至少为单拷贝原子大小的内存块。
更复杂的系统需要支持更大的原子元素,特别是64bit,这样主机就可以使用基于这些更大原子元素的数据结构进行通信。系统中支持的单拷贝原子性大小非常重要,因为给定通信中涉及的所有组件都必须支持所需的原子元素大小。AXI4协议本身不需要特定的单拷贝原子大小,系统可以设计为支持不同的单拷贝原子大小。AXI的spec里面给了下图一个例子:图中的处理器,DSP,DRAM控制器,DMA,SRAM,互连和外设都是32bit的single-copy atomicity size;同时处理器,DSP,DRAM控制器和相关的互连部分也是64bit的single-copy atomicity size。

为了支持原子访问,AXI中定义了两种操作:排他访问(exclusive access),和锁定访问(locked access)。
排他访问机制可以提供信号量类型的操作,而不需要在操作期间保留总线给特定主机。也就是说信号量类型的操作不会影响总线访问延迟或最大可实现带宽。主机通过AxLOCK信号选择独占访问,RRESP和BRESP信号分别表示独占访问读写的成功或失败。从机需要额外的逻辑来支持独占访问。
排他访问的基本机制是:
主机对一个地址执行排他读取。
在稍后的某个时间,主机试图通过执行排他写入来完成独占操作到相同的地址,并且具有与用于排他读取的地址匹配的AWID。
此排他写入访问被标记为:
Ø 如果在排他读访问之后没有其他主机写入该位置,则标记为成功。在这种情况下,排他写入更新内存。
Ø 如果另一个主机在排他读取访问后已写入该位置,则标记为失败。在这种情况下,内存位置不会更新。
主机通过执行排他读取来启动排他操作。如果事务成功,从机返回EXOKAY响应,指示从机记录了要监视的地址以进行排他访问。如果主设备尝试从不支持排他访问的从设备进行排他读取,则从机将返回OKAY,不是EXOKAY。
不支持独占访问的从机可以忽略AxLOCK信号。但是必须能够对正常访问和排他访问返回OKAY响应。
与排他访问相对的是锁定访问。当主机使用AxLOCK信号来指示事务是锁定的事务时,互连必须确保只有该主机可以访问目标从属区域,直到来自同一主机的未锁定事务完成。互连中的仲裁器必须执行此限制。在主机启动读或写事务的锁定序列之前,它必须确保没有其他事务等待完成。任何带有AxLOCK的表示已锁定事务的事务都会强制互连锁定后续的事务。因此,锁定的序列必须由一个没有AxLOCK指示锁定事务终结。这就要求最后一个事务包含在锁定的序列中,并有效地移除锁定。完成锁定序列时,在发出最终解锁事务之前,主机必须确保所有先前锁定的事务都已完成。然后,它必须确保最终解锁事务在开始任何进一步的事务之前已经完成。主机必须确保锁定序列中的所有事务都具有相同的AxID值。
可以看出,锁定访问需要在一段时刻内独占互连,因此会极大影响互连的性能。在AXI4中已经取消对锁定访问的支持。
AXI3支持locked access,AxLOCK信号为2bit。

AXI4中考虑到大多数组件并不需要锁定的事务,而且锁定事务对于互连设计和QoS带来挑战,因此取消了对locked access的支持,AxLOCK信号为1bit。

原文地址:https://mp.weixin.qq.com/s/5c7fAuA4oRFX7a_3hqfoOQ

AXI协议解析(六)相关推荐

  1. AXI协议解析(四)

    来看看事务属性(Transaction Attributes),主要是对cache,buffer和memory controller的规定.按照协议,从机分为存储从机(memory slave)和外设 ...

  2. AXI协议解析(五)

    今天先来看一下传输标识(transaction identifier)的概念,主要是ID信号. 开始之前先讲几个概念,首先是outstanding(想不好怎么翻译,有的人译为超前)传输.如果没有out ...

  3. AXI协议解析(三)

    了解完通道握手的依赖关系,我们再看看传输事务的结构.首先看传输的地址结构.AXI协议是基于突发(burst)传输的.所谓突发传输,就是在一次事务中,连续地传输多个地址相邻的数据.一次突发传输中可以包含 ...

  4. AXI协议解析(二)

    前面说到AXI的五个通道是独立的,但通道间必须保持一定的约定关系: 写回复必须在一次写事务的最后一个写数据之后 读数据必须在接收到读地址信号之后 通道间握手必须满足一定的依赖关系 前两条好理解,重点看 ...

  5. AXI协议解析(一)

    AXI的全称是Advanced eXtensible Interface.在spec里面是这么自夸的: •用于高带宽和低延迟设计. •提供高频操作,无需使用复杂电桥. •协议满足各种组件的接口要求. ...

  6. AXI协议(五)-AXI-STREAM及接入思路解析

    AXI协议(五)-AXI-STREAM及接入思路解析 在本文中,你将可能学会: AXI-STREAM协议的梗概(下简称axis) 尝试编写出普通摄像头接入AXIS的思路 本来想讲完怎么接入的,由于篇幅 ...

  7. synopsys PCIE IP协议解析

    synopsys PCIE IP协议解析 1.Overview Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环.同时,Cor ...

  8. AMBA协议之AXI协议——中文翻译

    AMBA协议之AXI协议--中文翻译 本规范的编写是为了帮助那些想要熟悉高级微控制器总线架构(AMBA)和设计与AXI协议兼容的系统和模块的硬件和软件工程师. 文章目录 AMBA协议之AXI协议--中 ...

  9. SSL协议解析及SSL虚拟专用网

    参考博客地址 目录 第一部分:SSL协议解析 一.SSL简介 二.SSL协议介绍 三.SSL协议应用 四.SSL协议特点 五.SSL协议结构分析 六.SSL连接建立过程(握手过程) 七.几个重要的se ...

最新文章

  1. JMeter:No-GUI运行及生成漂亮的HTML报告
  2. 半导体基础知识(1):材料和器件
  3. linux mysql 日志乱码_Linux下MySQL保存进去数据为乱码的解决办法
  4. GARFIELD@09-21-2004
  5. 【学习笔记】30、Python基础综合练习
  6. Matlab | Matlab从入门到放弃(11)——基于Matlab的矩阵分解、幂和指数
  7. Sonar-project.properties配置
  8. scn SAP UI5 exercise - create root view
  9. python 服务端框架_GitHub - edisonlz/fastor: Python服务端开发框架-极易上手,超出你的想象!...
  10. 简易分享功能(非第三方)
  11. 前端学习(1408):多人管理28用户信息展示
  12. JS实现前端动态分页码
  13. 记百人计划--测试思路
  14. 啊哈C语言 第四章 第 十 节
  15. 亚马逊不再是以前了--亚马逊防关联
  16. c语言将一句英文逆序输出,C++实现英文句子中的单词逆序输出的方法
  17. maven报错The forked VM terminated without saying properly goodbye. VM crash or System.exit called
  18. 小猿日记 - 程序猿的日常日记(4)
  19. 台式低速常温离心机S400操作规程
  20. 黄金搭档:老虎+猫头鹰+孔雀+考拉

热门文章

  1. python echarts数据可视化实战
  2. Hexo博客备份移植填坑记
  3. 微信公众号开发微信昵称包含特殊字符
  4. 寒假本科创新——机器学习(二)
  5. 基于YOLOv5s 的口罩佩戴检测
  6. 【工作计划】6.11-6.15
  7. Windows系统的mstsc版本升级
  8. 利用prolog实现电影助手
  9. java保留两位小数四舍五入_关于java 四舍五入使java保留2位小数示例讲解
  10. 树莓派有线网络设置_Adafruit的树莓派教程:网络设置