【AXI】解读AXI协议事务属性(Transaction Attributes)

article/2025/10/18 14:43:43
芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球
四社区联合力荐!近500篇数字IC精品文章收录
【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍

在这里插入图片描述

解读AXI协议事务属性(Transaction Attributes)

    • 一、写在前面
    • 二、事务属性机制解读(Transaction Attributes)
      • 2.1 Cache知识预览
        • 2.1.1 Cache的功能
        • 2.1.2 Cache的位置
        • 2.1.3 Cache的行为
          • 2.1.3.1 Cache的读行为
          • 2.1.3.2 Cache的写行为
      • 2.2 信号列表
      • 2.3 信号含义
        • 2.3.1 AxCACHE[0]信号bufferable
        • 2.3.2 AxCACHE[1]信号modifiable
        • 2.3.3 AxCACHE[2]信号
        • 2.3.4 AxCACHE[3]信号
        • 2.3.5 总结
      • 2.4 实例分析(memory为例)
      • 2.5 总结
    • 三、其他数字IC基础协议解读
      • 3.1 UART协议
      • 3.2 SPI协议
      • 3.3 I2C协议
      • 3.4 AXI协议

一、写在前面

AXI协议相较于UART,SPI,I2C来说,无论是内容还是难度都上了一个层级,放在一篇文章中进行解读未免篇幅过长,因此,有关AXI一些共性的、通用的问题,作者单独以前缀为【AXI】的标题进行小范围的串联,最终再汇总为深入浅出解读AXI协议,与从零开始的Verilog AXI协议设计,此为作者所思所考的推进顺序,单看【AXI】的每一篇,可能很多读者未免感到有些管中窥豹的疑惑,但若等作者更完此专栏再行观看,从头到尾进行阅读,应该就会有有茅塞顿开的收获与领悟。

二、事务属性机制解读(Transaction Attributes)

我们在之前讨论的AXI协议,无论是握手还是突发传输,其实默认的都是主设备(如CPU Core)和从设备直接相连。但是实际情况中,主设备还需要通过分层存储的形式连接在Cache上,那么通过AXI协议读取的数据是应该在Cache上还是应该在外存上呢? 通过AXI 写回的数据是应该写回在Cache上还是应该在外存上呢? 这个问题的相关讨论就是我们今天这篇文章Transaction Attributes所涉及到的内容,此为前提。

2.1 Cache知识预览

2.1.1 Cache的功能

Cache是一种存储介质,一般介于CPU和主存之间。无论是受限于距离,亦或是类型,主存都是在牺牲了读取速度的情况下换取了更多的存储容量,假如CPU计算所需的每一笔数据都来自于主存,那么每一次load和store,CPU需要等待很久,性能也很差
在设计CPU的过程中,我们发现,通常一次程序的运算,只需要使用主存中的一部分数据,因此我们考虑,是否可以将需要使用的这部分数据拿出来,放到虽然容量小,但是离CPU更近,读取速度更快的内存中,Cache应运而生

2.1.2 Cache的位置

Cache,介于CPU和主存之间,为了提升效率,一般也分为多层(L1 Cache,L2 Cache,L3 Cache),最终再和主存相连接,示意图如下所示。一般情况下现代CPU Core的Cache都是多核的,因此一种普遍的说法是L1 Cache和L2 Cache只服务于一个CPU核而L3 Cache是服务于多个核的
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/f3960278d41f456e99c45679b656f9ce.png
而我们本篇博客中讨论的Cache行为实际上是System Level Cache肤浅条件下可以当作L3 Cache(当然不同的SOC设置的Cache级数不同,不一定都是L3 Cache作为System Level Cache,但是系统级Cache的概念要和L1 Cache这二者的概念区别是很大的)

2.1.3 Cache的行为

Cache本身很复杂,涉及到很多定义和算法,但是我们摘取和AXI Transcation Attributes核心相关的内容进行知识的回顾,其中最核心的AXI协议相关的,即为Cache的读写行为。读者为了真正理解Transcation Attribute,需要重点理解下面的这些名词解释。

2.1.3.1 Cache的读行为

若hit:
说明可以在Cache中找到对应地址的数据,直接从Cache中读取数据即可

若miss,处理方式区分如下:
①Read through: 从slave中读取数据,但是不缓存到Cache处
②Read allocate:从slave中读取数据,同时缓存到Cache处

1.为什么我们要区分read through和read allocate呢?
这是因为通常情况下,我们认为Cache上的数据,对于整个SOC性能的提升是有价值的,使用的次数越多,Cache上数据的价值越大,对有价值的数据的替换,会降低Cache的效率,因此,假如我们从一个Slave(如UART)读取到一个只使用一次的数据,那么我们更希望采用read through的方式来进行,而假如从主存中读取到一个反复调用的地址对应的数据,那么我们希望使用Read allocate的方法来将其保存到Cache中

2.1.3.2 Cache的写行为

Cache的写行为与读行为相似:
若hit:
说明可以在Cache 找到对应地址 以及这个地址所对应的数据,那么出现了两种情况的区分
①Write through: 把数据同时写到Cache和内存中
②Write back:先把数据写到Cache中,再通过flush方式写到内存中

若miss:
①Write allocate: 先把要写的地址和其所对应的地址块载入到Cache中,再write through or write back.
②No write allocate:直接把要写的数据写入到内存中而不经过Cache.

2.什么叫flush呢?
flush是Cache的一种指令,目的是在保留Cache中数据的前提下,将Cache的数据写回到主存中,这里的先Cache后flush相当于把一步操作拆成了两步操作(flush这种操作可能会造成在某些特定情况下,同一个地址Cache中的数据和外存中的数据不一致)。

3.为什么要区分write allocate和No write allocate呢?
与问题1的原因相似,即希望在写行为中,高价值地址数据和低价值地址数据的行为是否进入Cache进行合理的区分

2.2 信号列表

受限于篇幅所限,这里作者就不再讲解AXI3进化到AXI4的种种提升了,仅参考AXI4.0协议来给出所需信号和所需要求,即AxCACHE信号对应的位宽和含义,AxCACHE包括ARCACHE和AWCACHE两个信号,分别针对读行为和写行为,同时这两个信号存在于读控制通路和写控制通路中。

AxCACHE含义
AxCACHE[0]0Non-bufferable
1bufferable
AxCACHE[1]0Non-modifiable
1modifiable
AxCACHE[2]0No allocate
1Read-allocate
AxCACHE[3]0No allocate
1Write-allocate

初学的读者对于这些信号的含义往往倍感迷惑,而官方协议中的解释又稍显简单,作者解释如下2.4节所示。

2.3 信号含义

2.3.1 AxCACHE[0]信号bufferable

buffer:缓冲
这个信号是用来衡量AXI传输过程中过的缓冲能力的,为什么需要缓冲?
就跟我们上篇文章中讨论的Outstanding传输机制有关,先传输的命令会进行等待,依次吐出数据,以此来提升传输效率,因此这个信号置0,即无缓冲能力,置1,信号在到达其最终地址前可以缓冲数个周期(无论是读还是写都是如此)

具体的bufferable结构如何实现也存在很多的方法,一个最简单的肯定是在同时钟域的条件下,用类似同步FIFO的结构,来缓冲载入的命令,再依次读出,即可参考文章如下。
【数字IC手撕代码】Verilog同步FIFO|题目|原理|设计|仿真

2.3.2 AxCACHE[1]信号modifiable

AXI3.0中AxCACHE[1]信号被称作Cacheable,而非modifiable,我们这里还是取用AXI4.0协议来做讲解,采用modifiable的概念

modify:改变
这个信号是用来衡量在传输过程中相关的地址与控制信号是否会发生改变,假如AxCACHE[1]置1,信号可以发生改变,置0,信号不能发生改变,具体是哪些信号不能发生改变呢?

ParameterSignal
Tranfer addressAxADDR
Burst SizeAxSIZE
Burst lengthAxLEN
Burst typeAxBURST
Lock typeAxLOCK
Protection typeAxPORT

【AXI】解读AXI协议中的burst突发传输机制中,核心的起始地址,传输大小,传输长度,传输种类都进行过解读,这些是决定传输形式的最重要的四个信号,而不核心的Lock Type,Protection Type属于进阶内容,以后再讨论,这里也可以暂时一放,但是读者需要注意的是,就算是能改变,改变的也是前四个信号,后两个“Lock type和Protection type”在AxCACHE[1]为1的时候同样不能改变。

请读者思考,为什么在传输过程中我们需要设定控制信号可变或者控制信号不可变呢? 列举以下这些例子,以供参考

  • 1.一个传输切分成了多个传输
  • 2.多个传输合并成了一个传输
  • 3.读传输多抓了一些数据存在Cache里
  • 4.写传输激活了更大范围的地址空间
    稍微解释一下2和3,其它的操作modifiable的原因也是相似的

2.多个传输合并成了一个传输
先后发送了两个burst读传输操作,前一个是针对于32bit数据通路的低16位进行,后一个是针对于32bit数据通路的高16bit进行其他的burst参数一致,假如我们设定了modifiable后,在outstanding传输机制中,我们更倾向于将其合并,将两个读操作进行合并为一个来进行,当然这里面涉及到很多的考量,比如说地址之间依赖关系,或者是什么情况下可以进行合并、等等等。但若是这些事情都被解决了,传输的合并势必会提高整个AXI协议的效率

3.读传输多抓了一些数据存在Cache里
之前就一直在讨论Cache中应该放什么样的数据,什么样的数据价值更高,一个普遍的观点是,假如我们抓取了0x0000_1000这个地址的数据,那这个地址周边的数据如0x0000_0111这种的离得很近的地址最终被读取的可能型一定比地址离它远的高,因此我们可不可以把它周边的数据也同样放到离CPU更近的位置来提高效率?modifiable给出了这种操作的可能性。

2.3.3 AxCACHE[2]信号

这个信号在AXI3中直接当作read-allocate的判断,但是在AXI4.0中被分配了新的意义,具体如下
对于读transaction而言
AxCACHE[2]置1,说明需要去cache中检查读地址是否之前被分配
AxCACHE[2]置0,说明不需要去cache中检查读地址是否被分配

对于写transaction而言
AxCACHE[2]置1,同样需要去cache中检查写地址是否被分配(虽然是写transaction,但是之前的读行为其他主设备transaction行为同样可能使cache中存在这个地址)
AxCACHE[2]置0,说明不需要去cache中检查地址是否之前被分配

2.3.4 AxCACHE[3]信号

与AxCACHE[2]极其相似
对于写transaction而言
AxCACHE[3]置1,说明需要去cache中检查写地址是否之前被分配
AxCACHE[3]置0,说明不需要去cache中检查写地址是否被分配

对于读transaction而言
AxCACHE[3]置1,同样需要去cache中检查写地址是否被分配(虽然是读transaction,但是之前的写行为其他主设备transaction行为可能使cache中存在这个地址)
AxCACHE[3]置0,说明不需要去cache中检查地址是否之前被分配

2.3.5 总结

具体是否应该去cache中检查是否allocate,由两个信号决定,即AxCACHE[2]和AxCACHE[3]共同决定。检查分配这个行为,只有 AxCACHE[3:2] = 2’b00 时才不需要检查cache中的数据,不过AxCACHE[3]和AxCAHE[2]置1,所代表的为什么cache中可能被分配的原因是不一样的,即“是读或写操作产生了分配,是自身还是其他主设备的操作产生了分配。”的区分
除此以外,AxCACHE[1]决定信号可否改变,AxCACHE[0]决定信号可否缓冲。

2.4 实例分析(memory为例)

为什么我们要用memory做例子解读?
因为对于内存来说,需要支持尽可能多的transaction种类,而对于很多其他从设备而言,只需要支持一部分transaction特性即可,使用meemory做例子,覆盖最广。

ARCACHE[3:0]AWCACHE[3:0]Memory type
00000000Non-bufferable device
00010001Bufferable device
00100010Normal Non-cacheable Non-bufferable
00110011Normal Non-cacheable Bufferable
10100110Write-through No-allocate
1110(0110)0110Write-through Read-allocate
10101110(1010)Write-through Write-allocate
11101110Write-through Read and Write-allocate
10110111Write-back No-allocate
1111(0111)0111Write-back Write-allocate
10111111(1011)Write-back Read-allocate
11111111Write-back Read and Write-allocate

1.bufferable指能否缓冲
2.cacheable指是否需要去cache查找是否allocate
3.所谓的No-allocate并不是说读写transaction的分配被禁止
这些概念在协议中都有具体的规定,有需要的直接进行查阅即可,这些memory type的名字更多的是一种种类的划分,而非实际的含义
比如说“Write-through No-allocate”的含义是这样子
在这里插入图片描述

2.5 总结

受限于作者的知识水平,本篇博客中其实还存在很多问题未进行清晰的表达与讨论,包括但不限于以下“如modifiable中的“写传输激活了更大范围的地址空间”与窄传输机制和WSTRB之间的交互关系”、“AxLOCK、AxPORT,Transaction ID与QoS这些额外信号的意义”、“AxCACHE的信号置高置低与through和back的关系”、“不同类型从设备Transaction Attribute的考量”以及“基础但重要的Cache结构、它是如何进行判断hit和miss的、写操作下Cache的一致性原理
但作者相信,面面俱到往往一到不到,重心更为偏向于解释Transaction Attribute和Cache之间的交互关系,和各个信号的含义等更为基础的内容,带领大家领会AXI协议中Transaction Attribute的思想有提高需求的读者可以阅读协议原文或寻找更多的资料进行学习
同样的,假如文章内容存在瑕疵,或读者愿意普及更多内容,若能评论区指出或补充,不胜感激

三、其他数字IC基础协议解读

3.1 UART协议

  • 【数字IC】深入浅出理解UART
  • 【数字IC】从零开始的Verilog UART设计

3.2 SPI协议

  • 【数字IC】深入浅出理解SPI协议
  • 【数字IC】从零开始的Verilog SPI设计

3.3 I2C协议

  • 【数字IC】深入浅出理解I2C协议

3.4 AXI协议

  • 【AXI】解读AXI协议双向握手机制的原理
  • 【AXI】解读AXI协议中的burst突发传输机制
  • 【AXI】解读AXI协议事务属性(Transaction Attributes)
  • 【AXI】解读AXI协议乱序机制
  • 【AXI】解读AXI协议原子化访问
  • 【AXI】解读AXI协议的额外信号
  • 【AXI】解读AXI协议的低功耗设计
  • 【数字IC】深入浅出理解AXI协议
  • 【数字IC】深入浅出理解AXI-lite协议

http://chatgpt.dhexx.cn/article/VAUDnNcR.shtml

相关文章

AXI总线知多少?

关注、星标公众号,精彩内容每日送达 来源:数字ICer 前言 本文针对秋招面试高频问题: AXI总线进行总结; 1.简介 AXI是个什么东西呢,它其实不属于Zynq,不属于Xilinx,而是属于ARM。它是ARM最新的总线接口&…

AXI学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 一、AXI中关于非对齐问题理解 AXI 协议支持地址非对齐的传输,允许突发传输的首字节地址,即起始地址与突发传输位宽不对齐。举个例子,总线位…

AXI 中文

AXI总线协议资料整理 第一部分: 1、AXI简介:AXI(AdvancedeXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(AdvancedMicrocontroller Bus Architecture)3.0协议中最重要的部分&a…

AXI协议

文章目录 前言一、通道信号二、AXI 握手机制三、读写Timing3.1 写数据3.2 读数据 四、通道间的依赖关系4.1 写地址通道( AW )4.2 写数据通道( W )4.2 写响应通道( B )4.3 读数据( R ) 五、信号详细解释5.1 ACLK和ARESETn5.2 Burst…

AXI 总线详解

综述 本文我们详解AXI,在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议。其中三种AXI总线分别为: AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地…

AXI总线概述

AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA3.0中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。AMBA4.0将其修改升级为AXI4.0。 AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.…

AXI协议学习笔记~~

AXI总线简介 ​  AXI属于AMBA(The ARM Advanced Microcontroller Bus Architecture)家族的一员,AXI协议在AMBA3.0版本中开始出现,并在后续的AMBA4.0,AMBA5.0中持续更新,对应为 AXI3,AXI4,AXI5。 ​   …

AXI 系列 之 AXI概述

目录 AXI简介 AMBA总线的演进图 AXI overriew AXI读写通道 AXI读取传输 事务 AXI 写入传输事务 AXI 概念解读 burst传输 FIXED模式下传输首地址后就可以不停传输数据吗? 突发传输不能跨4KB边界? 非对齐传输 复位期间对接口有如下要求&#xf…

AXI接口协议学习总结

AXI接口协议学习总结 下面将AXI接口协议学到的相关内容整理如下 一、AXI接口协议定义 AXI是Advanced eXtensible Interface的缩写,译为高级可扩展接口协议,是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)高级…

【AXI】解读AXI协议双向握手机制的原理

解读AXI协议双向握手机制的原理 一、写在前面二、AXI 双向握手机制简介2.1 信号列表2.2 双向握手目的2.3 握手过程2.3.1 CASE1(READY信号先于VALID信号改变)2.3.2 CASE2(READY信号与VALID信号同时改变)2.3.3 CASE3(REA…

带你快速入门AXI4总线--AXI4-Full篇(1)----AXI4-Full总线

写在前面 AXI4系列链接:带你快速入门AXI4总线--汇总篇(直达链接) 1、什么是AXI4-Full? AXI 表示 Advanced eXtensible Interface(高级可扩展接口),它是由 Arm 定义的接口协议,包含在…

通信协议(AXI)

一、AXI简介 SoC片上总线尚处于发展阶段,不像微机总线那样成熟,目前还没有统一的标准,因此各大厂商和组织纷纷推出自己的标准,以便在未来的SoC片上总线标准中占有一席之地。ARM公司就在1995年推出了自己的总线——AMBA&#xff0…

AXI协议详解

AXI协议详解 Created: July 11 Tags: ARM amba_axi_protocol_spec.pdf AMBA_axi.pdf AXI基础简介 AXI总共分为5个通道,写地址,写数据,写应答,读地址,读数据(读应答在读数据中体现) 特点&a…

AXI协议规范超详细中文总结版

AXI协议规范中文翻译版 来源:https://github.com/lizhirui/AXI_spec_chinese 综述 本文参考分析整理总结了AMBA AXI and ACE Protocol Specification文档的AXI总线协议规范部分,错误之处欢迎指出。 AMBA AXI协议支持高性能高频的系统设计,该协…

虞美人·寄公度

我在阳台上抽烟,我抽了一半,风抽了一半,我没有和风计较,可能风也有烦恼凭栏倚,吞云烟。半入清风、半入喉,清风也染人间愁生活除了眼前的苟且,还要有诗和远…

柳永8首绝美词句

他是白衣卿相,是才子词人。 他有傲人的才华,却仕途失意。 他眠花宿柳,写下流传千古的词章。 他是才子柳永。 今天,给大家介绍他的8首词,体会柳永的人生起伏。 1、《雨霖铃 寒蝉凄切》 寒蝉凄切,对长亭晚…

千灯照碧云,越夜越星沙

(题图摄影:邓建辉) 文 | 弘乐、陈曦 来源 | 螳螂财经(ID:TanglangFin) “晚上去红记吃小龙虾啊!”准备下班的李强拿着电话呼朋唤友。和他一起下楼的同事伍娟听到了,忍不住摇头说:…

《红楼梦》诗词鉴赏(精选)

石上偈 无材可去补苍天,枉入红尘若许年。 此系身前身后事,倩谁记去作奇传? 【诗词简注】 偈(ji记),佛经中的唱词,也泛指佛家的诗歌。 倩(qing庆),央求 【诗词鉴赏】 《红楼梦》的作者…

HDFS核心理论学习记录

标题HDFS理论学习第一天 一、HDFS优缺点 1、优点 高容错性:数据会保存多个副本适合处理大数据:能够处理GB,TB甚至PB级别的数据能够处理百万规模的数据数据廉价不吃配置 2、缺点 不适合低延时数据访问,文件存储是放在磁盘中读…

HDFS——命令、工作机制

1. HDFS前言 设计思想 分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析; 在大数据系统中作用: 为各类分布式运算框架(如:mapreduce&…