时间轴

2025-10-31

init

参考文档:

档:AMBA AXI and ACE Protocol Specificationi, issue H, part A & Part E

AMBA总线发展历史

AXI总线的应用

AXI总线的应用

AMBA总线发展历史

AMBA总线发展历史

AXI基本概念:通道,传输,事务

什么是总线

  • 总线由单个或者一组信号组成,传输数据或者控制信息

  • 在总线上,发送方按协议规定的高点电平组合编码发送信息,接收方再解码

  • 外部总线和内部总线

    • 外部总线连接外围设备,可能外界干扰,连接器,PCB的损耗,信号完整性差

    I2C,UART,SPI,PCIe,USB

    • 内部总线用于SOC内部,在芯片内部走线,距离极短,很多干扰和信号完整性问题不需要考虑

    AXI,UPI(intel)

  • 并行总线与串行总线

    • 并行:多个数据同时传输,需要考虑数据的协同性,导致了并行传输的频率不能做的很高,容易干扰
    • 串行:只有一条链路,把频率做的很高,提高传输速度

并行与串行

AXI总线的特点

  • AXI总线是一个芯片内部的同步串行总线
  • AXI总线的优点
    • 高性能:高带宽(high-bandwidth),低延时(low-latency),高频率(High-frequency)
    • 可灵活扩展总线位宽以及拓扑连接
    • 兼容AHB和APB总线
  • AXI总线的特点
    • 独立的地址/控制和数据通道(seprate read & write channel)
    • 支持burst传输
    • 支持超前传输(multiple outstanding addresses)
    • 在发送地址和数据阶段之间没有严格的时序要求(no strict timing between address and data phases)
    • 支持乱序传输(out-of-order transaction completion)
    • 支持非对齐数据传输(support unaligned data transfer)

AXI拓扑

AXI使用主从机制

  • 由master发起请求
  • slave对请求进行应答

AXI使用主从机制

多对多

AXI通道

AXI定义了5个独立的传输通道(channel),提升bandwidth

  1. 读地址通道:AR
  2. 读数据通道:R
  3. 写地址通道:AW
  4. 写数据通道:W
  5. 写回应通道:B

每个channel不止一根信号线,而是一组信号线

每个channel不止一根信号线,而是一组信号线

写传输事务

  • 地址通道包含传输控制信息
  • 传输事务步骤:
    • Master通过write address channel发起写传输,包括地址和控制信息
    • Master通过write data channel写数据给slave
    • Slave通过write response channel回应

Write address channel

读传输事务

  • Master通过read address channel发送地址和控制信息给slave
  • Slave通过read data channel返回数据,回应信息包含在返回数据里

Read address channel

握手信号(Handshake process)

  • 5个channel都使用相同的握手信号:VALID/READY handshake process
  • source端产生VALID信号表明地址,数据,控制信息等已经ready了
  • destination端产生READY信号表明它开始接受信息了。

Handshake process

只有READY和VALID信号同时有效时才握手

只有READY和VALID信号同时有效时才握手

传输transfer和事务transaction的区别

Transfer

只有一次的握手过程,传输一次数据

只有一次的握手过程,传输一次数据

transaction

有多次的握手信号,由多次的transfer来组成

以write为例,通过write address channel传递地址和控制信息。然后通过write data channel来传输数据。最后通过write response channel来回应。

一共有3个transfer

有多次的握手信号,由多次的transfer来组成

例子:Write transaction: single data item

Write transaction: single data item

例子:Read transaction:single data item

Read transaction:single data item

例子:Read transaction:multiple data items

ead transaction:multiple data items

通道信号和事务结构

写地址通道(write address channel)的信号线

写地址通道(write address channel)的信号线

写数据通道(write data channel)的信号线

写数据通道(write data channel)的信号线

写回应通道(write response channel)的信号线

写回应通道(write response channel)的信号线

读地址通道(read address channel)的信号线

读地址通道(read address channel)的信号线

读数据通道(read data channel)的信号线

读数据通道(read data channel)的信号线

Transaction structure
  • 一次burst中包括多少个传输transfer
    • AXI3最多包含16个transfer:Burst_Length = AxLEN[3:0] + 1
    • AXI4最多包含256个transfers:Burst_Length = AxLEN[7:0] + 1
  • AxSIZE:表示一个transfer传递多少个字节,最大128个字节

Transaction structure

  • AxBURST:表示burst类型

    • FIXED:固定地址模式,应用于FIFO

    • INCR:地址递增模式,应用于RAM

      ​ slave递增地址,支持1~256个transfers,支持unaligned transfer

    • WRAP:地址递增,达到上限后绕回,应用于Cache

Burst type encoding

访问权限(Access permissions)
  • ARPROT[2:0]:表示读事务的访问权限
  • AWPROT[2:0]:表示写事务的访问权限

Protection encoding

高速缓存的支持
  • 传输过程中可以利用各种缓存
    • 系统各级高速缓存,例如L2/L3 cache
    • 系统总线内部的缓存(with the iterconnect)
  • AxCACHE[3:0]:表示高速缓存属性

高速缓存的支持

回应包(response structure)
  • RRESP[1:0],for read transfers
  • BRESP[1:0],for write transfers
  • OKAY:表示normal access成功或者exclusive access has failed
  • EXOKAY:表示exclusive access成功
  • SLVERR:slave error
  • DECERR:解码错误

回应包(response structure)

Write strobes
  • WSTRB[n:0]:表示WDATA上的数据是否有效,一个bit表示一个字节
  • 主要是为了支持不对齐访问

Write strobes

QoS信号
  • AXI总线提供额外的信号线来支持quality of service
  • AWQOS:4-bit QoS,在每个写事务的write address channel中
  • AWQOS: 4-bit QoS, 在每个读事务的read address channel中
  • 0表示最低优先级,F表示最高优先级
  • 一般系统总线IP提供寄存器来配置每个master的QoS
通道依赖关系
  • 依赖关系1:在AWVALID有效之前,WVALID先设置有效
    • AWVALID表示write address channel有效
    • WVALID表示write data channel有效
    • 写地址有效之前,可以先把数据发送出去
  • 依赖关系2:在BVALID有效之前,必须发送WLAST
    • BVALID表示write response channel有效
    • WLAST表示时事务中最后一个transfer
    • 在写回应包发送之前,所有的写data和地址address必须发送完成
  • 依赖关系3:在ARADDR发送完成之前,RVALID不能有效
    • ARADDR表示读事务的第一个transfer的地址
    • RVALID表示read data channel有效
    • 如果地址没有发送完成,不应该看到有读数据返回

lock access and exclusive access

Locked accesses

  • Locked access只在AXI 3协议中,AXI 4已经遗弃
  • AXI 3和AXI 4里有AxLOCK信号线
  • AXI 3中,Locked access类似锁住总线

Locked accesses

AXI3 atomic access encoding

AXI4 atomic access encoding

Exclusive access

  • Exclusive access 比 Locked access 更高效,不需要锁住总线,其他master可以同时访问总线
  • 需要在slave端实现exclusive monitor来协同完成exlusive access
  • ARID 读事务的ID
  • AWID 写事务的ID
  • 访问流程
    1. master发起exclusive读。Slave的exclusive monitor把ARID,地址以及数据填入到表里面。
    2. master对同一个地址发起exclusive写操作。exclusive monitor查表并比较AWID和ARID是否一致
    3. 回应
      • EXOKAY(成功),如果这期间没有其他master对这个地址进行写入,那么exclusive写操作就成功
      • OKAY(失败),如果这个期间有其他master对这个地址进行写入,那么exclusive写失败

例子:独占访问失败

操作序列:

  1. Master往0x8000地址发起第1次的exclusive read操作
  2. Master往0x8000地址发起第2次的exclusive read操作
  3. Master往0x8000地址exclusive地写入0x3->成功
  4. Master往0x8000地址exclusive地写入0x5->失败

例子:独占访问

前三步操作:

前三步操作

Exclusive write时有相同ID的读事务,所以写入成功

当exclusive write成功之后,独占监视器会把这个地址和ID相关的所有entry从这个table里删掉

独占监视器维护的表

Exclusive Write时查表时没有相同ID的读事务,所以失败

事务的次序transaction ordering

AXI transaction ID

  • AXI为每个事务通道有一个独立事务ID
  • 所有的transfer必须有一个ID
  • 在同一个事务的transfer有相同的ID
  • 事务ID是为了out-of-order

AXI transaction ID

写事务次序规则

  • 写事务次序规则1:在write data channel写数据的次序必须和write address channel中的地址传输次序一致(data must follow the same order as address transfers)

写事务次序规则1

在write address channel是先发送A地址,然后再发送B地址,所以在write data cache中,先发送A数据,然后再发送B的数据

  • 写事务规则2:不同ID的写事务之间可以任意次序完成(data for different transation IDs can be interleaved)

写事务规则2

事务B比事务A先完成,尽管事务A比事务B先执行

  • 写事务规则3:相同ID的写事务,按照顺序执行和按照顺序完成(data with the same ID must follow in the order as issued)

写事务规则3

事务B和事务A,C的ID不同,事务B可以任意次序完成。事务A和C使用相同的ID,那么必须事务A先完成,然后才是事务C

读事务次序规则

  • 读事务次序规则1:在read data channel不同的ID的事务可以任意次序(data for different IDs has no ordering restrictions)

读事务次序规则1

尽管在read address channel中事务B比事务A晚发送地址,但是,事务B可以比事务A先读取数据

  • 读事务规则2:不同ID的事务的传输在read data channel可以交织地读(data with different transaction IDs can be interleaved)

读事务规则2

事务A和事务B交织地读数据

  • 读事务规则3:相同ID的读事务必须按照顺序完成(data with same ID must follow in the order as issued)

读事务规则3

事务A和C有相同的ID,事务A比事务C先发送,那么事务A也必须比事务C先完成

非对齐地址访问

  • AXI总线支持非对齐地址访问,使用byte strobes机制

byte strobes机制

从0x1地址开始,先传输3个字节,随后就对齐了地址

AXI-Lite总线

AXI4-Lite总线介绍

  • AXI4-Lite不支持burst模式,或者burst长度为1
  • AXI4-Lite支持数据位宽32bit或者64bit
  • AXI4-Lite所有访问都是Non-modifiable,Non-bufferable
  • 不支持exclusive access

AXI5-Lite总线介绍

  • AXI5-Lite在AXI4-Lite基础上放宽了数据位宽和事务传输次序的要求
  • AXI5-Lite的特点
    • 不支持burst模式,或者burst长度为1
    • 所有访问都是Device and Non-bufferable
    • 不支持exclusive access
    • 当请求具有不同的id时,允许对响应进行重排序

AXI5-Lite

AXI5/ACE5新增的功能

AXI5/ACE5新增的功能

总结

  • AXI总线定义了5个独立的通道,每个通道由一组信号线组成
  • AXI总线定义了传输事务的数据结构和属性
    • Burst的数量
    • Transfer的大小
    • Burst类型
    • 回应包
    • 高速缓存支持
    • 访问全新啊
    • QoS信号
  • 支持exclusive access
  • 通过事务ID来支持乱序传输
  • 支持非对齐访问