AMBA-AXI3/4/5 协议详解(附带ACE/ACE5)

摘要:本文系统梳理了 AMBA AXI 协议从 AXI3 到 AXI5 及 ACE5 的演进脉络与核心机制。内容涵盖各版本特性对比、五通道架构、VALID/READY 握手与防死锁依赖、突发控制(AxLEN/AxSIZE/AxBURST)、字节选通与非对齐传输、事务属性(AxCACHE/AxPROT)、事务 ID 与排序模型、Exclusive 原子访问,以及 AXI4-Lite、AXI5-Lite 等轻量接口的约束与互操作方式,并附有完整的位域编码速查表,适合作为 AXI 协议学习与工程查阅的参考。

一、版本介绍

AXI 协议随 AMBA 规范文档的 Issue(版本)演进而发展,各 Issue 与协议版本的对应关系如下:

文档 Issue

引入的协议/变化

说明

Issue B

AXI3

早期版本定义的 AXI,现称为 AXI3。支持写交织(Write Interleaving)、WID、2-bit AxLOCK(含 Locked 访问)。

Issue C

AXI4、AXI4-Lite

新增 AXI4:突发长度扩展到 256、移除写交织与 WID、AxLOCK 缩减为 1-bit、新增 QoS/Region/User 信号;同时定义 AXI4-Lite 轻量接口。

Issue D

整合版

将 Issue C 中分开描述的 AXI3 与 AXI4 定义整合为统一文档。

Issue E

属性机制 + 澄清

增加澄清与建议,并引入“属性(Property)”机制声明新能力:Ordered_Write_Observation、Multi_Copy_Atomicity。

Issue F

AXI5、ACE5

新增 AXI5(AXI4 的扩展,含原子事务等 9 项新能力)与 ACE5;新能力均以属性声明,未声明即为 FALSE。

下方表格对比了各个版本的AXI协议区别

特性

AXI3

AXI4

AXI4-Lite

AXI5

AXI5-Lite

最大突发长度

16

INCR: 256;FIXED/WRAP: 16

1

INCR: 256

1

数据位宽

≤1024 bit

≤1024 bit

32 / 64 bit

≤1024 bit

≤1024 bit

WID / 写交织

支持

移除

ID 信号

可选

可选

必须

必须

AxLOCK 位宽

2 bit(Normal/Exclusive/Locked)

1 bit(Normal/Exclusive)

1 bit

Exclusive 访问

支持

支持

不支持

支持

不支持

Atomic 事务

可选(属性)

可选(属性)

AxQOS / AxREGION

User 信号 (xUSER)

可选

可选

内存类型

任意

任意

Device Non-bufferable

任意

Device Non-bufferable

响应排序

In-order

In-order

In-order

In/Out-of-order

In/Out-of-order

Check / Poison / Trace 等

可选(属性)

部分可选

二、AXI3 / AXI4 协议主要架构

1.协议主要特点

  • 地址/控制相位与数据相位分离;
  • 基于突发(burst)的事务,仅发送首地址;
  • 支持基于字节选通(byte strobe)的非对齐数据传输;
  • 读、写数据通道分离,可低成本支持 DMA;
  • 支持多个未完成(outstanding)地址发射;
  • 支持事务乱序完成(out-of-order completion);
  • 可在通道中任意插入寄存器级(register slice)以优化时序。

2.五通道架构

AXI 是突发式协议,定义了 5 个相互独立的通道:

通道

信号前缀

方向

承载内容

读地址通道

AR

Master → Slave

读事务的地址与控制信息

读数据通道

R

Slave → Master

读数据 + 读响应(RRESP),含 RLAST

写地址通道

AW

Master → Slave

写事务的地址与控制信息

写数据通道

W

Master → Slave

写数据 + 字节选通(WSTRB),含 WLAST

写响应通道

B

Slave → Master

写完成响应(BRESP)

Figure 1 写事务的通道架构

Figure 2 读事务的通道架构

每个通道都由一组信息信号加一对 VALID / READY 信号构成双向握手:信息源用 VALID 表示通道上地址/数据/控制信息有效;目的端用 READY 表示可以接收。读数据与写数据通道还各含一个 LAST 信号,指示事务的最后一个数据项。

  • 读数据通道:数据总线宽可为 8/16/32/64/128/256/512/1024 bit,并携带读响应状态。
  • 写数据通道:每个 8-bit 数据配一个字节选通位;写数据通道信息总是被视为已缓冲(buffered),因此 master 无需等待先前写事务的确认即可继续发起写。
  • 写响应通道:slave 对每个完整的写事务(而非每个数据拍)给出一次完成响应。

3.接口与互联

Figure 3 接口与互连拓扑

典型系统由若干 master 与 slave 经互连(interconnect)相连。AXI 为以下三种界面提供单一接口定义:master–互连、slave–互连、master–slave。互连在协议上等价于一个具有对称 master/slave 端口的设备。常见互连拓扑有三种:共享地址与数据总线;共享地址总线 + 多数据总线;多层(multilayer)多地址多数据总线。由于地址通道带宽需求通常远小于数据通道,共享地址 + 多数据总线是性能与复杂度的良好折中。

4.寄存器级(Register Slice)

每个 AXI 通道的信息只单向传输,且通道间无固定时序关系,因此几乎可以在任何通道的任何位置插入寄存器级,代价仅为增加一拍延迟。这使得设计可以在“延迟周期数”与“最高工作频率”之间权衡,例如处理器与高性能存储器直连,而到低性能外设的路径用寄存器级隔离。

三、信号描述

1.全局信号

信号

描述

说明

ACLK

全局时钟,所有通道共用,信号采样于 ACLK 上升沿

时钟源

Required

ARESETn

全局复位,低有效

复位源

Required;复位期间 VALID 信号必须拉低

2.写地址通道(Write Address Channel)

信号

描述

版本/备注

AWID

写地址 ID 标签,用于标识写事务、支持乱序完成

Master

可选;AXI3/AXI4 均有

AWADDR

写地址,突发首拍地址

Master

Required

AWLEN

突发长度,实际传输数 = AxLEN + 1

Master

AXI3: 4-bit(1~16);AXI4: 8-bit(INCR 1~256)

AWSIZE

突发大小:每拍的字节数 = 2^AWSIZE

Master

3-bit

AWBURST

突发类型(FIXED/INCR/WRAP)

Master

2-bit

AWLOCK

锁定访问类型

Master

AXI3: 2-bit;AXI4: 1-bit

AWCACHE

缓存属性/内存类型

Master

4-bit

AWPROT

保护类型(特权/安全/指令)

Master

3-bit,Required

AWQOS

QoS 值(4-bit)

Master

仅 AXI4

AWREGION

区域标识(4-bit)

Master

仅 AXI4

AWUSER

用户自定义信号

Master

仅 AXI4,可选

AWVALID

写地址有效

Master

Required

AWREADY

写地址就绪

Slave

Required

3.写数据通道(Write Data Channel)

信号

描述

版本/备注

WID

写数据 ID(用于写交织时标识数据归属)

Master

仅 AXI3;AXI4 移除

WDATA

写数据

Master

8~1024 bit

WSTRB

写字节选通,WSTRB[n] 对应 WDATA[(8n)+7 : (8n)]

Master

宽度 = 数据位宽/8

WLAST

写最后一拍指示

Master

Required(AXI4-Lite 无)

WUSER

用户自定义信号

Master

仅 AXI4,可选

WVALID

写数据有效

Master

Required

WREADY

写数据就绪

Slave

Required

4.写响应通道(Write Response Channel)

信号

描述

版本/备注

BID

写响应 ID,等于该写事务的 AWID

Slave

可选

BRESP

写响应状态

Slave

2-bit;可选(默认 OKAY)

BUSER

用户自定义信号

Slave

仅 AXI4,可选

BVALID

写响应有效

Slave

Required

BREADY

写响应就绪

Master

Required

5.读地址通道(Read Address Channel)

与写地址通道对称:ARID、ARADDR、ARLEN、ARSIZE、ARBURST、ARLOCK、ARCACHE、ARPROT、ARQOS(AXI4)、ARREGION(AXI4)、ARUSER(AXI4 可选)、ARVALID(Master)、ARREADY(Slave)。各信号含义与 AW 通道对应信号相同,仅方向用于读事务。

6.读数据通道(Read Data Channel)

信号

描述

版本/备注

RID

读数据 ID,等于该读事务的 ARID

Slave

可选

RDATA

读数据

Slave

8~1024 bit

RRESP

读响应状态

Slave

2-bit;可选(默认 OKAY)

RLAST

读最后一拍指示

Slave

Required(AXI4-Lite 无)

RUSER

用户自定义信号

Slave

仅 AXI4,可选

RVALID

读数据有效

Slave

Required

RREADY

读数据就绪

Master

Required

7.AXI3与AXI4信号差异小结

  • AXI4 移除 WID:写交织(write interleaving)不再支持,写数据必须按写地址发射顺序逐事务完成。
  • AXI4 新增 AWQOS/ARQOS、AWREGION/ARREGION、以及五个 xUSER 用户信号(均为可选)。
  • AXI4 的 AxLEN 扩展为 8-bit(仅 INCR 可用到 256),AxLOCK 缩减为 1-bit。
  • AXI4 的 AxCACHE bit[1] 语义更名为 Modifiable。

四、事务机制:握手、突发与响应

1.复位与握手

Figure 4 退出复位

复位释放后,master 与 slave 的 READY 信号可以在任意时刻置位;但所有 VALID 信号必须在复位释放后、且在对应通道首次握手前保持无效,直到组件准备好发起传输。

VALID/READY握手的3种合法时序

Figure 5 VALID 先于 READY

Figure 6 READY 先于 VALID

Figure 7 VALID 与 READY 同拍

  • 规则:源端一旦置起 VALID,在 READY 出现并完成握手前,不得撤回 VALID,也不得改变通道上的信息信号。
  • 规则:源端不得等待 READY 才置起 VALID(防止死锁)。
  • 目的端可以等待 VALID 再置 READY,也可以提前置 READY。

2.通道间依赖关系(防死锁)

Figure 8 读事务握手依赖

Figure 9 AXI3 写事务握手依赖

Figure 10 AXI4/AXI5 写事务握手依赖

  • 读事务:master 不得等 ARREADY 才发 ARVALID;slave 不得等 RREADY 才发 RVALID;slave 可在 ARVALID&ARREADY 后才发 RVALID。
  • AXI3 写事务:BVALID 只依赖 WVALID/WREADY(写数据全部接收后即可响应)。
  • AXI4 写事务:slave 必须等 AWVALID&AWREADY 与 WVALID&WREADY(及 WLAST)都完成后才能置 BVALID——即写响应同时依赖地址与数据两个通道的完成。
  • master 不得等 BREADY 相关的响应才发 AWVALID/WVALID;slave 不得等 BREADY 才发 BVALID。

3.突发控制信号:AxLEN/AxSIZE/AxBURST

3.1 AxLEN——突发长度

  • 实际传输拍数 = AxLEN + 1。
  • AXI3:AxLEN[3:0],4-bit,支持 1~16 拍。
  • AXI4:AxLEN[7:0],8-bit;INCR 突发支持 1~256 拍;FIXED 与 WRAP 仍限制为 1~16 拍。
  • 规则:任何突发不得跨越 4KB 地址边界。
  • 规则:WRAP 突发的长度必须为 2、4、8 或 16。
  • 规则:FIXED 突发长度不得超过 16。

3.2 AxSIZE——每拍传输字节数

AxSIZE[2:0]

每拍字节数

0b000

1

0b001

2

0b010

4

0b011

8

0b100

16

0b101

32

0b110

64

0b111

128

规则:AxSIZE 不得超过数据总线宽度(例如 32-bit 总线最大 AxSIZE=0b010,即 4 字节/拍)。

3.3 AxBURST——突发类型

AxBURST[1:0]

类型

行为

0b00

FIXED

地址保持不变,用于反复访问同一位置(如 FIFO);长度 ≤16 且不跨 4KB。

0b01

INCR

递增突发:首拍后每拍地址按 AxSIZE 字节数递增;AXI4 下最长 256 拍。

0b10

WRAP

回环突发:递增到回环边界后回绕到边界起点;长度必须 2/4/8/16,且首地址必须对齐到每拍大小。

0b11

Reserved

保留

INCR 地址计算公式:Address_N+1 = Address_N + Number_Bytes(Number_Bytes = 2^AxSIZE)。首拍使用 master 给出的起始地址(可以非对齐)。

WRAP 地址计算:先按对齐规则计算 Aligned_Address = INT(Start_Address / Number_Bytes) × Number_Bytes;回环下边界 Wrap_Boundary = INT(Start_Address / (Number_Bytes × Wrap_Size)) × (Number_Bytes × Wrap_Size),Wrap_Size = AxLEN + 1;当地址到达上边界(Wrap_Boundary + Number_Bytes × Wrap_Size)时回环到 Wrap_Boundary。

4.字节选通(WSTRB)与窄传输(Narrow Transfer)

WSTRB[n] 控制 WDATA[(8n)+7 : (8n)] 这一个字节是否有效:写数据拍中只有对应 WSTRB 置位的字节才会被 slave 采纳。非首尾拍通常 WSTRB 全 1;首拍/尾拍可用 WSTRB 实现非对齐或不足整拍的写。规则(字节不变性 byte invariance):多字节数据只占用其对应字节车道,其余车道值无意义。

Figure 11 8-bit 窄传输示例

Figure 12 32-bit 窄传输示例

当 AxSIZE 小于数据总线宽度时称为窄传输。此时有效字节车道的位置取决于地址的低位:例如 32-bit 总线上 AxSIZE=0b001(2 字节)时,地址 bit[1]=0 则使用 WDATA[15:0],=1 则使用 WDATA[31:16]。

5.非对齐传输(Unlighted Transfer)

Figure 13 32-bit 总线上的对齐与非对齐传输

  • AXI 支持起始地址不按 AxSIZE 对齐的传输,slave 必须正确处理(或按定义的安全方式失败)。
  • 非对齐时,首拍只传输从起始地址到该拍末尾的有效字节,其余字节车道用 WSTRB(写)屏蔽或忽略(读)。
  • 后续各拍地址按对齐后的边界递增,即地址“对齐推进”,仅首拍含非对齐部分。
  • slave 可以不支持非对齐访问,但必须以协议合规的方式(如返回 SLVERR/DECERR)完成事务,不得死锁。

6.回环传输(Wrapping Transfer)

Figure 14 64-bit 总线上的对齐回环传输

  • WRAP 突发要求首地址对齐到 AxSIZE 字节;回环边界由突发总字节数(AxLEN+1 × 2^AxSIZE)决定。按上面3.3的公式可算得,图中回环下边界为0x00,回环上边界为0x00+(4x2^2)=0x10,即第4个transfer从0x00开始。
  • 例如 64-bit 总线、AxSIZE=0b011(8B)、AxLEN=3(4 拍):地址序列在 16 字节×2 的回环窗口内循环。
  • WRAP 不得用于跨越回环窗口之外的地址;互连拆分事务时必须保持回环语义。

7.xLAST信号

WLAST 与 RLAST 分别指示写数据与读数据的最后一拍。slave 依据 WLAST 判断写事务数据接收完成;master 依据 RLAST 判断读事务结束。AXI4-Lite 因突发恒为 1 而不含 xLAST 信号。

8.写/读响应:BRESP/RRESP

RRESP/BRESP[1:0]

名称

含义

0b00

OKAY

正常访问成功。对 Exclusive 访问而言,OKAY 表示“未成功”(失败)。

0b01

EXOKAY

Exclusive 访问成功:仅当 master 的 Exclusive 访问成功(monitor 判定通过)时返回。

0b10

SLVERR

Slave 错误:事务到达 slave 后出错(如 FIFO 溢出、寄存器地址错误、权限错误等)。

0b11

DECERR

解码错误:地址无对应 slave(互连解码失败)。

  • 读响应与最后一拍读数据同拍给出(RLAST 拍携带 RRESP)。
  • 写响应在整个写事务完成后给出一次。
  • 响应为 OKAY 时不区分部分错误:一个事务只有一个整体响应状态。即中间一旦有任何错误,如某个beat的部分字节没有写进去,即不OKAY,简化了协议,牺牲了报告的精确性。

9.突发写/读事务完整时序波形示例

Figure 15 突发写事务完整时序(INCR,长度 4,W 通道含 1 个等待周期)

  • T1:AWVALID 与 AWREADY 同拍握手,写地址相位完成,AWADDR / AWLEN(=0b11,即 4 拍) 在该拍有效;
  • T2:首拍写数据 D0 在拍末上升沿被采样传输;T2 握手完成后,master 于 T3 摆出第二拍数据 D1,恰逢 WREADY=0,按规则 WVALID 与 WDATA 必须保持不变直至握手完成——因此 T3 保持的是“已发出但未被接收”的 D1(而非已接收的 D0,若重复驱动 D0,一旦下一拍 WREADY=1 将造成 D0 被重复采样),D1 于 T4 拍末被传输;
  • T5~T6:D2、D3 依次传输,末拍 T6 置起 WLAST;
  • T7:slave 在收齐全部写数据(WLAST 握手完成)后才置起 BVALID,BRESP=OKAY;master 的 BREADY 恒为 1,响应当拍完成——符合 AXI4 写响应依赖。

Figure 16 突发读事务完整时序(INCR,长度 4,含 slave 延迟与 R 通道 1 个等待周期)

  • T1:ARVALID 与 ARREADY 握手完成,读地址相位结束;
  • T2~T3:slave 准备数据期间 RVALID=0(slave 只可在收到请求后才置 RVALID);
  • T4:首拍读数据 D0 在拍末上升沿被采样传输;T4 握手完成后,slave 于 T5 摆出第二拍数据 D1,恰逢 RREADY=0(master 未就绪),按规则 RVALID 与 RDATA 必须保持不变——因此 T5 保持的是 D1(而非已接收的 D0,避免 RREADY 恢复后被重复采样),D1 于 T6 拍末被传输;
  • T7~T8:D2、D3 依次返回,末拍 T8 置起 RLAST,RRESP=OKAY 与数据同拍给出;
  • 全程体现“VALID 不得等待 READY”:master 预置 RREADY=1,slave 在数据就绪后自主置起 RVALID。

五、事务属性:AxCACHE与AxPROT

1.AxCACHE

先说一下AXI3和AXI4及以后对该功能的编码是不一样的,目前比较流行的是AXI4及以后,所以先说一下主流的AXI4对应的编码

AWCACHE(写)

ARCACHE(读)

[3]

Allocate:写可分配缓存行(写分配提示)

Other-allocate:读可分配到其他缓存(非本缓存)

[2]

Other-allocate:写可分配到其他缓存

Allocate:读可分配缓存行

[1]

Modifiable:事务参数可被互连修改

Modifiable:同左

[0]

Bufferable:写可被缓冲并提前响应

Bufferable:读可从缓冲区返回数据

AXI4 将 bit[1] 更名为 Modifiable,表示互连可以修改事务的地址/长度/大小/突发类型(例如拆分或合并以优化带宽);bit[1]=0 时为 Non-modifiable 事务,互连不得修改 AxADDR、AxSIZE、AxLEN、AxBURST、AxLOCK、AxPROT 等参数。下表为AXI4内存类型编码:

内存类型分为 Device 与 Normal 两大类、Bufferable 与 Non-bufferable 两种缓冲属性:

  • Device Non-bufferable(ARCACHE/AWCACHE = 0b0000):最强顺序性,读必须从最终端点取最新值,写必须到达端点后才可响应。
  • Device Bufferable(0b0001):设备语义但写可被缓冲(写响应可提前),仍不可缓存/修改。
  • Normal Non-cacheable Non-bufferable(0b0010):普通内存、不可缓存、不可缓冲。
  • Normal Non-cacheable Bufferable(0b0011):普通内存、不可缓存、写可缓冲(最常见的“强顺序+写 posted”类型)。
  • Write-Through 类(AR=0b1010/0b1110,AW=0b0110/0b1110 等)与 Write-Back 类(AR=0b1011/0b1111,AW=0b0111/0b1111 等):可缓存内存,区别在于写分配/读分配与写回策略提示。

注:Table 括号内的编码为可选替代编码,互连可将其归一化为推荐编码。

下表为AXI3的

AXI3 名称

含义

AxCACHE[0]

Bufferable

可缓冲:写可在到达最终目的地前被中间缓冲吸收并提前给响应;读可从缓冲获取数据。

AxCACHE[1]

Cacheable

可缓存:访问可被缓存组件截获/分配。

AxCACHE[2]

Read-allocate

读分配:仅当 Cacheable 时有意义,提示缓存应为该读分配行。

AxCACHE[3]

Write-allocate

写分配:仅当 Cacheable 时有意义,提示缓存应为该写分配行。

2.Modifiable 事务的行为约束

  • Non-modifiable(bit[1]=0)事务:互连不得改变其地址、大小、长度、突发类型等;也不得与其他事务合并。
  • Modifiable 事务:互连可拆分/合并/修改,但必须保持:访问的地址集合不变、每地址的传输次数不变、不得跨越 4KB 边界、不得改变事务的 QoS 语义等。
  • Device 类型内存通常应使用 Non-modifiable 事务,以保证对外设寄存器的精确访问语义。

3.AxPROT——保护类型

名称

= 0

= 1

AxPROT[0]

Privileged

非特权访问(用户态)

特权访问(内核态)

AxPROT[1]

Secure

Secure 访问

Non-secure 访问

AxPROT[2]

Instruction

数据访问

指令访问

  • AxPROT[1] 注意:该位为 1 表示 Non-secure(与直觉相反),即“安全属性取反”编码。
  • AxPROT[2] 仅为提示性质:slave 可据此区分指令/数据访问行为,但不保证系统级安全。
  • AxPROT 不单独提供安全保障,系统安全需依赖信任控制器等机制。

六、事务ID与顺序(Ordering)

1.ID信号与基本排序规则

  • ID 信号:AWID / ARID(master 发出),BID / RID(slave 返回,等于对应事务的 AWID/ARID);AXI3 另有 WID 用于写交织。
  • 相同 ID 的事务之间必须保持发射顺序被观察到(in-order):同 ID 的读响应、写响应按发射序返回。
  • 不同 ID 的事务之间可以乱序完成(out-of-order),这是 AXI 提高带宽利用率的核心机制。
  • master 通过分配不同 ID 来“放松”排序、提升并行度;需要强顺序时使用同一 ID。
  • 写数据与写地址的对应:AXI4 中写数据按写地址发射顺序传输(无交织),因此 AXI4 不需要 WID。

1.1 AXI3写交织(Write Interleaving)

AXI3 允许不同写事务的写数据拍交错传输(write interleaving),用 WID 标识每拍数据属于哪个写事务。AXI4 移除该特性:AXI4 接口上写数据必须按写地址的发射顺序、逐事务连续传输,WID 信号不存在。移除原因:交织显著增加 slave/互连的缓冲与排序复杂度,且收益有限。

1.2 ID宽度建议

  • 规范建议 master 端口 ID 宽度至少 4 bit;
  • 互连在 master ID 基础上追加约 4 bit(用于标识 master 来源);
  • slave 端口 ID 宽度建议 8 bit。

2.AXI4排序模型

AXI4 定义了 master、interconnect、slave 三类组件的排序义务:

组件

排序规则要点

Master

需要顺序保证的事务使用相同 ID 发射;不需要顺序的事务可用不同 ID。Master 必须能接受不同 ID 事务的响应以任意顺序返回。

Interconnect

必须保持同 ID 事务的顺序;不同 ID 可重排。必须保证同一 slave 地址空间的写观察顺序符合排序模型(见下)。

Slave

对同 ID 事务按接收顺序处理并保序响应;对不同 ID 可乱序响应(AXI4 默认仍按接收序,但允许提前响应 early response)。

2.1 提前响应(Early Response)与写观察

  • AXI4 允许 slave/互连在写数据真正到达最终存储前提前返回写响应(buffered 语义),但这会改变“写被其他 master 观察到”的时机。
  • Producer/Consumer 模型:生产者写完数据后写“标志位”,消费者读到标志位后必须能看到对应数据。该模型要求:对同一观察者,写之间保持顺序观察。
  • Ordered_Write_Observation 属性:为 TRUE 时,组件保证写观察顺序满足增强的 Producer/Consumer 模型,使 master 无需依赖读回或 barrier 即可安全协作。

对于生产者、消费者和观察者有疑惑的可以看下列描述:

1)生产者(Producer):产生数据的实体。通常是某个处理器、DMA 控制器或其他 master 设备。它执行写操作,将数据写入内存或外设,供其他设备使用。例如:一个 CPU 核心计算出一段结果,写入共享内存缓冲区,它就是生产者。

2)消费者(Consumer):使用数据的实体。通常是另一个处理器、外设或 master 设备。它执行读操作,从内存或外设获取生产者写入的数据,并进行后续处理。例如:另一个 CPU 核心读取共享内存中的结果,它就是消费者。

3)观察者(Observer):任何能够观察到某个写操作结果的实体。在 AXI 系统或多核系统中,观察者可以是:消费者(它需要看到生产者的数据);其他无关的 master(它们也可能访问同一地址,只是碰巧看到);甚至是发起写操作的生产者自己(它通过读回也可以观察)。“观察”指的是:该实体通过读操作能够感知到写操作是否已完成、数据是否已更新。

七、原子访问:Atomicity、Exclusive与Locked

1.Single-copy 原子性

Single-copy atomicity 指:一个事务的所有字节,对系统中的观察者要么“整体可见”要么“整体不可见”,不会出现半更新状态。AXI 按数据大小划分原子组(atomicity group):例如某系统保证 ≤32-bit 访问原子,另一系统保证 ≤64-bit 原子。

Figure 17 不同 single-copy 原子组的系统示例

2.Muti-copy 原子性

  • Multi-copy atomicity 要求:写一旦对某个 master 可见,就必须对所有 master 可见(全局顺序一致)。
  • AXI 默认不要求 multi-copy 原子性。
  • 属性为 TRUE 时,所有写事务(含 buffered)在返回响应前必须对所有观察者可见。

3.Exclusive访问

Exclusive 访问用于实现信号量/原子读-改-写:master 先 Exclusive 读某地址(互连中的 monitor 记录地址+ID),随后对同地址发 Exclusive 写;若期间该地址未被其他 master 写过,则写成功并返回 EXOKAY,否则写失败(返回 OKAY,数据不落盘)。实践中,一般只用于单beat情况,不会用于突发等情形,即保证了原子操作的确定性,用于信号量和自旋锁等。

  • 规则:Exclusive 访问的字节数必须为 2 的幂(1、2、4、8…字节),且地址按字节数对齐。
  • 规则:Exclusive 访问最大 128 字节;AXI4 中 Exclusive 事务长度不得超过 16 拍(AxLEN ≤ 15)。
  • Exclusive 读与 Exclusive 写必须使用相同的 AxID、相同地址、相同大小。
  • 读返回 EXOKAY 仅表示该访问被 monitor 记录;写返回 EXOKAY 才表示“比较成功、更新生效”。
  • monitor 只需保证“未被他人写则成功”;被他人写时“必须失败”,但 monitor 也可因资源不足等其他原因使事务失败(false fail 允许)。
  • 不支持 Exclusive 的 slave 对 Exclusive 访问返回 OKAY(视为普通访问),master 软件需重试。

版本

AxLOCK

含义

AXI3

0b00

Normal access(普通访问)

AXI3

0b01

Exclusive access(排他访问,见 8.3)

AXI3

0b10

Locked access(锁定访问:总线锁定,见 8.5)

AXI3

0b11

Reserved

AXI4

0b0

Normal access

AXI4

0b1

Exclusive access

Locked 访问在事务期间锁定总线,阻止其他 master 插入访问,用于不可分割的读-改-写序列。AXI4 移除 Locked:因其严重破坏流水线与互连性能,且 Exclusive 已覆盖主要用途。AXI4 接口上 AxLOCK 只有 1-bit,不再存在锁定语义。

八、附加信号:QoS、Region与User

1.AxQOS——服务质量

  • AxQOS[3:0],4-bit,QoS 值范围 0x0~0xF,值越大优先级越高;默认 0b0000 表示“无特殊 QoS 要求”。
  • master 为每个事务标注 QoS;互连/slave 可据此调度(如优先服务高 QoS 事务、为高 QoS 保留带宽)。
  • AXI5 增加 VAWQOSACCEPT/VARQOSACCEPT(QoS_Accept 属性):slave 反向告知其当前愿意接受的 QoS 阈值,master 可据此调节发射策略。

2.AxREGION——区域标识

  • AxREGION[3:0],4-bit,提供 16 个区域编码,是地址译码结果的显式表达。
  • 仅存在于地址译码点下游的接口;互连根据地址映射生成 AxREGION,slave 可省去自身译码逻辑。
  • slave 必须对同 ID 不同 region 的事务保序响应;对不支持的 region 必须以合规方式处理(如报错或别名映射)。
  • AxREGION 不创造新的独立地址空间,只是现有地址空间的译码视图;默认值 0x0。

3.User信号(xUSER)

  • 五个可选用户信号:AWUSER、ARUSER、WUSER、RUSER、BUSER,宽度 IMPLEMENTATION DEFINED。
  • 规范不建议使用 User 信号(易导致互操作问题);若使用,建议放在互连上透传。
  • 各通道是否实现 User 信号可独立决定,不要求全部通道一致。

九、AXI4-lite

AXI4-Lite 是 AXI4 的轻量子集,面向组件内部简单的控制寄存器类接口,在不需要突发传输的场景下使用。其关键功能约束:

  • 所有事务突发长度恒为 1(单拍)。
  • 数据位宽固定为 32 bit 或 64 bit。
  • 所有访问为 Non-modifiable、Non-bufferable(即 AxCACHE = 0b0000 语义)。
  • 不支持 Exclusive 访问(无 AxLOCK)。
  • 无 ID 信号(AWID/ARID/BID/RID/WID 均不存在),响应按序返回。
  • 支持 WSTRB 字节选通(与 AXI4 相同)。
  • 地址宽度无限制;无 xLAST 信号(因长度恒为 1)。

以下为AXI4-lite的信号列表

Global

Write address

Write data

Write response

Read address

Read data

ACLK

AWVALID

WVALID

BVALID

ARVALID

RVALID

ARESETn

AWREADY

WREADY

BREADY

ARREADY

RREADY

AWADDR

WDATA

BRESP

ARADDR

RDATA

AWPROT

WSTRB

ARPROT

RRESP

AXI4-Lite 接口不存在的信号:AxLEN、AxSIZE、AxBURST、AxLOCK、AxCACHE、AxQOS、AxREGION、xID、xLAST、xUSER。由于长度恒 1、位宽固定,这些信号的信息均为隐含常量。

AXI4-lite如果有AXI4进行交互的话,有如下几种情况:

  • AXI4-Lite master 接 AXI4 slave:完全兼容(Lite 的行为是 AXI4 的合法子集)。
  • AXI4 master 接 AXI4-Lite slave:需要桥接/转换组件,将 burst 拆分为单拍、处理位宽与不支持的访问类型。
  • 转换规则要点:burst 拆分为多个长度 1 的事务;非 32/64 位宽需扩展/截取;Exclusive 访问需以普通访问模拟并返回 OKAY(表示失败)或由桥返回错误。
  • Protection:AXI4-Lite 保留 AxPROT,转换时直接透传。

十、扩展部分——AXI5以及AXI5-lite

1.AXI5 是 AXI4 的能力扩展(而非替代):保留 AXI4 全部事务模型,通过属性(Property)机制按需增加 9 项新能力。组件未声明某属性即视为不具备该能力、相关信号不存在。以下为新增信号表:

通道

信号

属性

描述

AW

AWATOP

Atomic_Transactions

原子操作类型与算术操作端序(6-bit)

AW

AWTRACE

Trace_Signals

写事务跟踪位

AW

AWLOOP

Loopback_Signals

写地址组 loopback,由 BLOOP 环回

AW

AWMMUSECSID / AWMMUSID / AWMMUSSIDV

Untranslated_Transactions

未翻译事务的 Secure/Stream/Substream-valid 标识

W

AWMMUSSID / AWMMUATST

Untranslated_Transactions

Substream ID;PCIe ATS 已翻译指示

W

AWNSAID

NSAccess_Identifiers

Non-secure 访问标识符(写)

W

WDATACHK

Check_Type

写数据校验(检错/纠错)

W

WPOISON

Poison

写数据毒化指示

W

WTRACE

Trace_Signals

写数据跟踪位

B

BTRACE

Trace_Signals

写响应跟踪位

B

BLOOP

Loopback_Signals

环回 AWLOOP 的值

AR

ARTRACE / ARLOOP / ARMMU*

Trace/Loopback/Untranslated

读侧对称信号

R

ARMMUSSID / ARMMUATST / ARNSAID

Untranslated/NSAccess

读侧 MMU/NSAID 信号

R

RDATACHK

Check_Type

读数据校验

R

RPOISON

Poison

读数据毒化指示

R

RTRACE / RLOOP

Trace/Loopback

读响应跟踪位 / 环回 ARLOOP

VAWQOSACCEPT / VARQOSACCEPT

QoS_Accept

slave 指示可接受的写/读 QoS 值

AWAKEUP

Wakeup_Signals

master 指示接口活动(低功耗唤醒)

2.原子事务(Atomic Transactions)

原子事务把“操作”随数据一起送到数据所在位置执行,减少数据搬移与锁定窗口,适合数据远离执行者的场景(如远端内存的原子加)。支持接口:AXI5、ACE5-Lite、ACE5-LiteDVM。

2.1 四种原子事务类型

类型

行为

出向数据

入向数据

AtomicStore

发送数据+操作;目标执行操作并把结果存回地址;只返回写响应,无读数据

1/2/4/8 B

AtomicLoad

同 Store,但额外返回地址处的原始值

1/2/4/8 B

与出向相同

AtomicSwap

用发送值交换地址处的值,返回原始值

1/2/4/8 B

与出向相同

AtomicCompare

发送 compare+swap 两个值;匹配则写入 swap 值;总返回原始值

2/4/8/16/32 B

出向的一半

2.2 AWATOP编码

AWATOP[5:0]

含义

0b000000

Non-atomic operation(普通非原子事务)

0b01exxx

AtomicStore(e=AWATOP[3] 端序位:0 小端 / 1 大端,仅算术操作有效)

0b10exxx

AtomicLoad(e 同上)

0b110000

AtomicSwap

0b110001

AtomicCompare

AWATOP[2:0]

操作

说明

0b000

ADD

内存值与发送数据相加,结果存回内存

0b001

CLR

发送数据中为 1 的位,清除内存对应位

0b010

EOR

按位异或

0b011

SET

发送数据中为 1 的位,置位内存对应位

0b100

SMAX

有符号取大

0b101

SMIN

有符号取小

0b110

UMAX

无符号取大

0b111

UMIN

无符号取小

2.3 原子事务规则要点

  • AtomicStore/Load/Swap:数据大小 1/2/4/8 字节,地址按大小对齐;burst 类型必须为 INCR。
  • AtomicCompare:出向含 compare+swap 两值;地址对齐到单值大小;对齐到总大小时 Compare 先发(INCR),否则 Swap 先发(WRAP);AWLEN>1 时读数据拍数为 AWLEN 的一半。这个规则保证了无论地址是否总大小对齐,从内存的角度看,Compare 值始终位于 Swap 值的低地址一侧,且操作不跨越对齐窗口。
  • AWLEN>1 时 AWSIZE 必须为全数据总线宽度;WSTRB 仅对有效数据字节车道置位。
  • ID 规则:原子事务不得与同时未完成(outstanding)的非原子事务共用 AXI ID;多个同时未完成的原子事务之间也不得共用 ID。
  • 属性约束:AWSNOOP 全 0;AWLOCK 必须为 0b0(Normal)。
  • slave/互连若声明支持原子事务,则必须支持全部操作类型、大小与端序。
  • 响应:写响应表示结果对所需观察者可见;含读响应的原子事务,收到首个读数据即视为可见。

3.其它新能力

  • Check_Type:WDATACHK/RDATACHK 每字节配校验位,可检测(奇偶)并可能纠正损坏数据。
  • Poison:WPOISON/RPOISON 指示某组数据“此前已损坏”,毒化随数据传播,在消费时再报错误。
  • QoS_Accept:VAWQOSACCEPT/VARQOSACCEPT 让 slave 告知可接受 QoS 阈值,辅助 master 流量调节。
  • Trace_Signals:每通道 1-bit trace 位,支持系统级调试与性能测量。
  • Loopback_Signals:AWLOOP/ARLOOP 由 master 发出,BLOOP/RLOOP 环回,便于把响应与发射时记录的索引表关联。
  • Wakeup_Signals:AWAKEUP 指示接口活动,用于低功耗状态管理。
  • Untranslated_Transactions:携带 MMU Stream ID / Substream ID / ATS 状态,支持 SMMU 类未翻译事务。
  • NSAccess_Identifiers:AWNSAID/ARNSAID 标识 Non-secure 访问上下文,支持受保护数据的存储处理(如 MPAM/权限隔离)。

4.AXI5-lite

AXI5-Lite 是 AXI5 的单拍子集,在 AXI4-Lite 基础上放宽位宽与排序限制,面向与高性能处理器紧耦合、要求低响应延迟的外设:慢外设不阻塞快外设的响应。

  • 所有事务突发长度为 1;
  • 不同 ID 的请求允许响应乱序(AXI4-Lite 不允许);
  • 所有访问视为 Device Non-bufferable;
  • 不支持 Exclusive;
  • 数据位宽任意(≤1024 bit),不再限于 32/64;
  • ID 信号必须存在(用于乱序响应的匹配)。

Figure 18 使用 AXI5-Lite 的存储系统示例

下表为AXI4-lite,AXI5和AXI5-lite的对比

接口线数对比(32-bit 地址+数据):AXI5 = 224 线;AXI5-Lite = 175 线;AXI4-Lite = 160 线。互操作:AXI5-Lite master 可经简单桥接访问 AXI4-Lite slave;AXI4-Lite slave 升级为 AXI5-Lite 时需增加 ID 与乱序响应能力。

十一、扩展部分——ACE以及ACE5简述

1.ACE一致性扩展介绍

  • ACE 在 AXI 之上新增 Snoop 通道:AC(snoop 地址)、CR(snoop 响应)、CD(snoop 数据),使互连(snoop filter / 目录)能查询各核缓存状态,实现硬件一致性。
  • 缓存行状态:I(Invalid)、UC/UD(Unique Clean/Dirty)、SC/SD(Shared Clean/Dirty)。
  • Shareable 域:Non-shareable、Inner Shareable、Outer Shareable、System Shareable,定义一致性维护的范围。
  • 事务类型扩展:ReadShared/ReadClean/ReadUnique/MakeUnique/CleanUnique/WriteBack/WriteClean/Evict/CMO 等;以及 Barrier 事务与 DVM(Distributed Virtual Memory)操作(TLB/分支预测器维护)。
  • ACE-Lite:无 snoop 输入端口的简化版,可作为 IO 一致性 master(如 DMA 窥探缓存)。

2.ACE5的变化

2.1 shareable域的调整

AxDOMAIN

描述

ACE5 备注

0b00

Non-shareable

不变

0b01

Inner Shareable

废弃(Deprecated),新设计应使用 0b10

0b10

Outer Shareable

不变

0b11

System Shareable

不变

2.2 Barrier事务不再支持

  • ACE5 / ACE5-Lite 各变体均不支持 Barrier 事务;需要排序的 master 应延迟发射依赖请求直至先前事务完成。
  • Barrier_Transactions 属性:TRUE(默认,兼容旧 ACE)表示接口含 AxBAR 信号;FALSE 表示无 barrier 支持。
  • 互操作:ACE/ACE-Lite master 接 ACE5 slave 时,若 master 的 Barrier_Transactions 为 TRUE 需桥接组件。

2.3 ACE5新能力

  • DVM v8.1:支持 ARMv8.1 的 DVM 消息协议(兼容 v8/v7)。
  • Persist_CMO:新增 Clean to Point of Persistence 的缓存维护操作。
  • Check_Type / Poison / QoS_Accept / Trace_Signals / Loopback_Signals / Wakeup_Signals:与 AXI5 相同的信号机制。
  • Coherency_Connection_Signals:接口动态接入/脱离一致性系统的信号(SYSCOREQ/SYSCOACK 类)。
  • Untranslated_Transactions(ACE5 下有限制)与 NSAccess_Identifiers。

十二、Appendix——位域编码速查

以下汇总了本文提及的所有位域编码表,方便快速查看

A.1 AxBURST[1:0]

编码

类型

0b00

FIXED

0b01

INCR

0b10

WRAP

0b11

Reserved

A.2 AxSIZE[2:0]

编码

字节/

0b000

1

0b001

2

0b010

4

0b011

8

0b100

16

0b101

32

0b110

64

0b111

128

A.3 AxLOCK

版本

编码

含义

AXI3

0b00 / 0b01 / 0b10 / 0b11

Normal / Exclusive / Locked / Reserved

AXI4

0b0 / 0b1

Normal / Exclusive

A.4 AxCACHE[3:0]

AXI3

AXI4

[3]

Write-allocate

AW: Other-allocate / AR: Allocate 的对侧(见 6.2 表)

[2]

Read-allocate

AW: Other-allocate / AR: Allocate

[1]

Cacheable

Modifiable

[0]

Bufferable

Bufferable

A.5 AxPROT[2:0]

0

1

[0]

Non-privileged

Privileged

[1]

Secure

Non-secure

[2]

Data access

Instruction access

A.6 BRESP/RRESP[1:0]

编码

含义

0b00

OKAY

0b01

EXOKAY

0b10

SLVERR

0b11

DECERR

A.7 AxDOMAIN[1:0](ACE/ACE5)

编码

含义

0b00

Non-shareable

0b01

Inner Shareable(ACE5 废弃)

0b10

Outer Shareable

0b11

System Shareable

A.8 AWATOP[5:0](AXI5)

编码

含义

0b000000

Non-atomic

0b01exxx

AtomicStore

0b10exxx

AtomicLoad

0b110000

AtomicSwap

0b110001

AtomicCompare

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值