• 正文
  • 相关推荐
申请入驻 产业图谱

AMBA协议第4篇|CHI协议架构与AXI4-Stream / 低功耗接口

16小时前
169
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
目录式一致性 · 流式数据传输 · Q/P-Channel功耗管理 CHI四节点Write-InvalidateAXI4-StreamQ/P-Channel

ACE的嗅探方案在8核、16核时总线流量爆炸——每次写都要snoop所有核,N个核就是N次嗅探。CHI用目录式架构解决这个问题。再加上AXI4-Stream和低功耗接口,这篇覆盖AMBA的三个进阶主题。

资料来源:ARM AMBA5 CHI Architecture Spec(508页)、AMBA4 AXI4-Stream Protocol Spec(42页)、AMBA4 Low Power Interface Spec(46页)。

一、CHI协议架构:为大规模多核而生

ACE的瓶颈

ACE用总线嗅探(Snooping)维护一致性,每次写操作互连器都要向所有Master发Snoop请求。核数少时没问题,但到了16核、32核:N个核 = 每次写snoop N次,总线流量和延迟随核数线性增长。这就是ACE的扩展性天花板。

CHI核心思想:目录式一致性

CHI(Coherent Hub Interface)是AMBA5定义的一致性协议,ACE的继任者。它引入Home Node(主节点)作为集中管理者——类似一个"目录",记录每个Cache行被哪些核缓存。写操作时只通知目录里记的核,不用全网广播。

四种节点类型

RN
Request Node
请求节点(CPU核)
HN
Home Node
主节点(一致性管理)
SN
Subordinate Node
从节点(内存控制器
MN
Misc Node
杂项节点(DVM管理)
节点 角色 典型实例
RN(Request Node) 发起一致性事务 CPU核、带有Cache的Master
HN(Home Node) 一致性管理,维护目录 L3 Cache控制器、互连器
SN(Subordinate Node) 响应请求,提供数据 DDR内存控制器
MN(Misc Node) 系统管理 DVM(分布式虚拟内存管理)

协议分层:5层解耦

CHI把一致性事务拆成5层,语义和物理传输彻底解耦:

Transaction(事务) ← 高层操作语义,如"读这个地址"
Message(消息) ← 协议层交互单元
Packet(包) ← 链路层传输单元
Flit(流控单元) ← 流控层单元
Phit(物理单元) ← 物理层单元

这种分层让CHI可以适配不同的物理互连(Ring、Mesh、Crossbar),上层协议不变,只换底层传输。

Write-Invalidate vs Write-Update

CHI选择Write-Invalidate(写无效)而非Write-Update(写更新):

Write-Invalidate:写之前先让其他副本无效,然后只写自己的Cache。后续读由本地Cache命中,不再产生总线流量。

Write-Update:写的时候同时更新所有持有副本的Cache。每次写都产生多份流量。
CHI选Invalidate的原因:减少总线流量。如果被写的变量后续还要读,Invalidate只需一次无效化,后续都本地命中;Update每次写都广播新值,流量更大。

关键概念:三个"点"

概念 全称 作用
PoS Point of Serialization 序列化点,保证事务的全局顺序
PoC Point of Coherency 一致性点,所有Master看到的一致性视图
PoP Point of Persistence 持久化点,数据在此后保证持久存储

CHI vs ACE对比

维度 ACE CHI
架构 总线嗅探 目录式(Home Node)
扩展性 差(流量随核数线性增长) 好(只通知持有副本的核)
总线流量 高(每次写全网Snoop) 低(目录精确通知)
复杂度 高(分层架构+目录维护)
适用场景 2-8核 16核以上大规模多核
CHI在AI芯片中的应用

AI芯片(多核NPU/GPU SoC)需要大规模并行计算,核间数据共享频繁。CHI的目录式一致性天然适合——几十个计算核心通过CHI互连,HN统一管理一致性,避免总线嗅探的流量爆炸。这也是为什么新一代AI芯片SoC普遍采用CHI。

二、AXI4-Stream:无地址的单向数据流

设计哲学

AXI4-Stream是AMBA4引入的流式传输协议,设计哲学三个词:无地址、单向、流式。它不像AXI那样发地址再搬数据,而是直接"灌"数据流——主设备一直发,从设备一直收,TLAST标记包尾。

核心信号

信号 作用
TVALID / TREADY 握手(同AXI)
TDATA 数据
TSTRB 数据选通(标记哪些字节是有效数据)
TKEEP 数据保留(标记哪些字节保留到包尾)
TLAST 最后一拍(标记包的结尾)
TID / TDEST 数据流ID / 目标路由
TUSER 用户自定义

TSTRB vs TKEEP:容易混淆

区别一句话

TSTRB:标记当前这拍里哪些字节是有效数据(类似AXI的WSTRB)。

TKEEP:标记哪些字节要保留到包尾。被TKEEP标记为0的字节是"Position Bytes"(位置字节,用于对齐),会在传输过程中被丢弃,不保留到包尾。

三种字节类型

类型 TSTRB TKEEP 说明
Data Bytes 1 1 有效数据,保留到包尾
Position Bytes 0 1 位置字节,用于对齐,非有效数据
Null Bytes 0 0 空字节,无意义,可丢弃

传输层次

Transfer(单次传输)→ Packet(数据包)→ Frame(帧)

Transfer = 一次TVALID/TREADY握手
Packet = 由TLAST标记结尾的一组连续Transfer
Frame = 一组Packet的集合

什么时候用Stream?

DMA搬运大数据块搬运,不需要每拍发地址
视频流水线摄像头ISP编码器,像素流连续传输
AI加速器权重传输:NPU加载权重,单向大流量
音频流ADCDSP→DAC核心判断标准:不需要地址、单向、数据量大 → 用Stream。需要地址、双向、事务性强 → 用AXI4。

三、低功耗接口:Q-Channel与P-Channel

AMBA4引入的低功耗接口,通过两个通道实现组件级功耗管理。

Q-Channel:开关控制

Q-Channel用于组件进入和退出低功耗状态——本质上是个"开关":

信号 方向 作用
QREQn 设备→控制器 请求进入/保持正常状态
QACCEPTn 控制器→设备 接受低功耗请求
QDENY 控制器→设备 拒绝低功耗请求
QACTIVE 设备→控制器 设备活跃指示(有未完成事务时拉高)

典型场景:CPU执行WFI/WFE指令进入空闲,Q-Channel通知时钟控制器关掉CPU时钟,省电。CPU有中断来了,QACTIVE拉高,请求恢复时钟。

P-Channel:状态切换

P-Channel用于组件在不同功耗状态间切换——比Q-Channel更精细,可以切到不同功耗档位:

信号 方向 作用
PREQ 设备→控制器 请求状态切换
PACCEPT 控制器→设备 接受状态切换
PDENY 控制器→设备 拒绝状态切换
PACTIVE 设备→控制器 设备活跃级别(多位,表示需求强度)
PSTATE 设备→控制器 请求的目标功耗状态

典型场景:SoC级DVFS(动态电压频率调节),CPU在高性能模式(高压高频)和省电模式(低压低频)间切换。PACTIVE多位编码表示"我需要多高的性能",控制器据此决定切到哪档。

Q-Channel vs P-Channel

一句话区分

Q-Channel = 开关:要么开要么关,进不进低功耗。适合组件级关时钟。

P-Channel = 档位:可以在多个功耗状态间切换。适合SoC级DVFS和电源域管理。

面试题预告(完整题库见文末资料包)
    CHI的四种节点类型分别是什么角色?CHI为什么用Write-Invalidate而不是Write-Update?AXI4-Stream和AXI4有什么区别?什么时候用Stream?Q-Channel和P-Channel分别用于什么场景?
下一篇预告 · 5/6

AMBA5新特性与AI芯片SoC实战

AMBA5不只是AXI5换个名字。Poison、Cache Stashing、DTI、ATP这些新特性正在改变AI芯片的SoC架构设计方式。下一篇把AMBA5前沿+实战一次讲透。

相关推荐