1. AXI协议中的SAS机制深度解析
在AXI总线架构中,单活跃从设备(Single Active Slave, SAS)是一种关键的数据一致性保障机制。想象一下这样的场景:当多个主设备同时向同一个从设备发起写操作时,如果没有协调机制,就会像多个快递员同时往同一个快递柜塞包裹,最终导致数据错乱。SAS正是为解决这类问题而设计的硬件级解决方案。
1.1 SAS的工作原理
SAS的核心规则体现在交换机的发散从接口(Divergent Slave Interface)上:当一个AW地址节拍(AW address beat)到达时,如果交换机其他主接口上还有未完成的写数据节拍(Outstanding write data beats)指向不同的目标,那么这个AW地址节拍会被强制停滞(Stalled)。这相当于交通警察在路口设置信号灯,确保同一时间只有一个方向的车辆能通过。
具体实现上,SAS机制包含以下硬件逻辑:
- 写地址通道状态机:跟踪每个主接口的AW/VALID握手状态
- 数据节拍计数器:记录各主接口未完成的WDATA数量
- 仲裁逻辑:当检测到冲突时,暂停新AW通道的传输
1.2 配置拓扑的选择
根据系统需求,有三种方式配置SAS:
-
改变拓扑结构:
- 星型拓扑:所有主设备直连中央交换机
- 树状拓扑:层级式连接,适合区域化访问
- 环形拓扑:低延迟但需要复杂仲裁
-
ASIB CDAS方案调整:
- 保留一个ASIB CDAS方案作为主路径
- 其他路径配置为旁路模式
- 典型应用在多核CPU的L2缓存共享场景
-
交换机从接口SAS化:
- 将特定从接口标记为SAS属性
- 适用于对数据一致性要求高的存储设备
实际项目中,我们通常在DDR控制器接口启用SAS,因为内存访问冲突的概率最高。而在UART等低速外设接口则可放宽此限制。
1.3 SAS与锁事务的交互
AXI3支持锁事务(Lock Transaction),这在多核同步操作中尤为重要。当SAS遇到锁事务时:
- 仲裁后的锁事务会被停滞
- 其他地址通道也被停滞
- 允许所有未完成事务继续执行
- 当锁事务路径无未完成事务时,才开启源读写通道
值得注意的
