AXI (Advanced extensible Interface) 协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。当前最新为 AXI 5.0 (2020年)。

AXI5 Spec download AMBA

AXI5 的一个重要更新,就是增加了对atomic transaction (或称之为 atomic operation,原子操作)的支持。

Atomic transactions are suited to situations where the data is located a significant distance from the agent that must perform the operation. Compared with using Exclusive Accesses, this approach reduces the amount of time during which the data must be made inaccessible to other agents in the system.

AXI5支持4大类的atomic,分别为atomic store、atomic load、atomic swap和atomic compare。其中,atomic store和atomic load 会再细分为多种不同的atomic operation,比如ADD、CLR等等;atomic swap和atomic compare则没有细分的atomic operation,因为其操作是固定的。

atomic的request 会通过AW和W channel 发送出去, atomic response 会通过 B 和R channel 进行返回。其中AW channel会在AXI4的基础上增加AWATOP[5:0]的signal,用来标识atomic的类型和具体的operation类型;W channel会传递 原始的操作数(operand)。如上的read modify write 操作,atomic 类型为store atomic,atomic operation为ADD,原始的操作数 就是 1。

atomic store和atomic load都需要通过AW 和W channel发送 addr、length、atomic type and operation,都需要从memory读取addr位置的原始数据,都需要进行ALU运算,然后将新的value再存入addr位置。两者的主要区别体现在 atomic 操作完成的response和data返回上:atomic store会通过B channel返回一个 atomic response;而 atomic load会通过R channel 返回 访问地址空间的 原始数据(也就是进行atomic operation之前的数据)。

如下是spec中对atomic 四大类的描述,其中outbound和inbound 的表述都是站在 master的角度来看的。

Atomic type

Description

Atomic store

• Sends a single data value with an address and the atomic operation to be performed.

• The target performs the operation using the sent data and value at the addressed location as operands.

• The result is stored in the address location.

• A single response is given without data.

• Outbound data size is 1, 2, 4, or 8 bytes. 也就是master发出的数据

atomic load

• Sends a single data value with an address and the atomic operation to be performed.

• The original data value at the addressed location is returned. 一定要注意,此处返回的不是 ALU计算后的数据,而是addr位置的原始数据。

• The target performs the operation using the sent data and value at the addressed location as operands.

• The result is stored in the address location.

• Outbound data size is 1, 2, 4, or 8 bytes. 也就是master发出的数据

• Inbound data size is the same as the outbound data size.也就是 memory需要返回的数据

atomic swap

• Sends a single data value with an address. 不需要 atomic operation

• The target swaps the value at the addressed location with the data value that is supplied in the transaction.

• The original data value at the addressed location is returned.

• Outbound data size is 1, 2, 4, or 8 bytes.

• Inbound data size is the same as the outbound data size

atomic compare

• Sends two data values, the compare value and the swap value, to the addressed location. The compare and swap values are of equal size. 不需要 atomic operation。

• The data value at the addressed location is checked against the compare value:

— If the values match, the swap value is written to the addressed location.

— If the values do not match, the swap value is not written to the addressed location.

• The original data value at the addressed location is returned.

• Outbound data size is 2, 4, 8, 16, or 32 bytes. Compare需要携带 两个操作数,一个为compare value,一个是 swap value。

• Inbound data size is half of the outbound data size because the outbound data contains both compare and swap values, whereas the inbound data has only the original data value.

AXI5 new feature: support atomic transaction相关推荐

  1. 蓝牙知识二【FEATURE SUPPORT】【LL_PING】【 LL_LENGTH】【Private Device Address Generatio】【profile例子EXAMPLE ATT】

    SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...

  2. Feature Support and Procedure Mapping

    对服务,特征,描述的相关操作的支持表. No Feature Sub-Procedure Ref Client  Support Server  Support 1 Server Configurat ...

  3. djagno-oscar的页面出现Error 10605 - Receiving country does not support the transaction currency.

    修改币种的路径是: http://127.0.0.1:8000/admin/partner/stockrecord/1/change/

  4. 自己收集整理的微软错误代码大全(中文和英文)

    自己收集整理的微软错误代码大全,分别为中文和英文部分,供广大软件开发人员共勉.                  微软错误代码 2.1  中文 0 操作成功完成. 1 功能错误. 2 系统找不到指定的 ...

  5. RPC论文翻译(Implementing Remote Procedure Calls)

    论文解读请参考:https://blog.csdn.net/bingxuesiyang/article/details/119670092?spm=1001.2014.3001.5501 总述: Re ...

  6. 使用SQLMonitor监视访问ORACLE的“服务”

    以前使用SQLMonitor抓捕"应用程序"访问ORACLE的SQL语句,用起来比较爽--这次遇到的应用是以WINDOWS服务的方式来运行的,尝试了一下SQLMonitor的监视服 ...

  7. 微软错误代码大全(中文和英文)

    以下内容转载自:点击打开链接 http://blog.csdn.net/magenfeng/article/details/8536557#comments 感谢原创! 微软错误代码 2.1  中文 ...

  8. GetLastError() 返回值一览

    函数原型: DWORD GetLastError() 中文版(不完全) [0]-操作成功完成. [1]-功能错误. [2]-系统找不到指定的文件. [3]-系统找不到指定的路径. [4]-系统无法打开 ...

  9. Oracle为什么不需要double write?

    近期看到朋友圈转发了几篇关于MySQL innodb double write的文章:感觉都还不错.突然想到为什么Oracle没有这个东西?PostgreSQL是否也有类似机制? 在网上搜了一下,发现 ...

  10. 史上最强解读:Oracle里面为什么没有double write?

    导读:MySQL有double write机制,PostgreSQL有full page write机制,那么Oracle里面为什么没有类似机制呢? 近期看到朋友圈转发了几篇关于MySQL innod ...

最新文章

  1. 一位编程15年的大佬:我的OpenCV开发高手成长之路
  2. 为什么需要交叉熵代价函数
  3. CentOS 5.10安装Oracle 11G R2
  4. 三个容器倒水_绿茶“最忌讳”先放茶叶再倒水,想要茶味香浓,记住正确泡茶法...
  5. 初识Python之安装—anaconda pycharm区别
  6. Git 和 GitHub 教程——版本控制入门
  7. 【LOJ#6036】[雅礼集训2017Day4]编码
  8. 随想录(c语言的优缺点)
  9. Github 开源趋势榜 TOP 1:英伟达升级发布二代 StyleGAN!
  10. printf 小函数 大问题-转
  11. 手机电子名片html,利用JavaScript的AngularJS库制作电子名片的方法
  12. 数据统计分析(SPSS)【6】
  13. 玉溪第一座智能变电站,造国际一流智能配电网,机器人来运维
  14. 用油猴子定制你的个性化插件
  15. 黄金面试技巧|应届生求职必备
  16. 12月的第一天!给你一个11月回血指南!
  17. qt5的configure选项说明(2)
  18. 完全背包问题 买书(信息学奥赛一本通)
  19. 微信网页端软键盘收起点击事件失效
  20. 赵小楼《天道》《遥远的救世主》深度解析(93)究竟真理真Xiang的踪迹

热门文章

  1. 微信备份时提示不在同一个网络
  2. MATLAB 2016b--神经网络工具箱中BP网络的实现
  3. 金邦达:做最值得客户尊重的IC卡项目服务商
  4. 光照 (4) 漫反射光照
  5. IBM大中华区云计算中心刘欣主题演讲
  6. 2017年第十七届迪培思广州国际广告展会刊(参展商名录)
  7. 反转字符串中的元音字母Python解法
  8. 浙江师范大学计算机复试考什么,浙江师范大学考研难吗?一般要什么水平才可以进入?...
  9. 三箭暴雷造清算 回顾三箭资本Zhu Su黑以太坊奶自己投资项目的黑历史
  10. [基本功]辛普森悖论