【AMBA Bus ACE 总线 1 -- ACE 总线介绍】

本文介绍了多处理器系统中的Coherency问题,包括数据一致性和操作顺序一致性。ARM为解决这一问题推出了ACE协议,它是AXI协议的扩展,支持缓存一致性管理和数据共享。ACE总线通过缓存一致性协议、屏障事务以及增加AC、CR、CD三组总线来处理共享数据时的一致性问题。此外,文中还提到了Acknowledge signaling(Wack和Rack)以及Snoop Channel Signals在确保操作正确性中的作用。


请阅读【AMBA Bus ACE 总线与Cache 专栏 】

欢迎学习:【嵌入式开发学习必备专栏】


Coherency 问题简介

一致性Coherency)问题通常出现在多处理器系统中,尤其是当多个处理器可能同时访问同一内存位置时。简单来说,一致性问题是关于保证一个处理器上的操作结果对于其他处理器来说是可见和一致的问题。这里涉及两个主要方面:

  1. 数据一致性:如果两个或多个处理器都要读写同一个内存位置,我们需要确保它们不会读到过时或不正确的数据。例如,如果处理器A更新了某个内存位置的数据,那么处理器B在之后读取该位置时应该能读到处理器A最新写入的数据,而不是旧的数据。
  2. 操作顺序一致性:不仅数据要保持一致,操作的顺序也要一致。也就是说,如果处理器A先执行操作1然后执行操作2,其他处理器观察到的操作顺序也应该是这样。

ACE 出现背景

为了解决 Coherency 这一挑战,ARM引入了ACE协议。ACE是基于AXI(Advanced eXtensible Interface,高级可扩展接口)协议的一种扩展,AXI本身就是ARM处理器和外设之间的高性能、高带宽接口协议。通过ACE,ARM能够提供一种机制,使得多核处理器系统中的缓存可以实现一致性管理和数据共享。

ARM的ACE协议引入了以下关键特点来支持缓存一致性和系统级一致性:

  • 缓存一致性协议支持:支持多核心之间的缓存行一致性,允许有效地同步缓存数据。
  • 屏障事务(Barrier Transactions):支持同步操作,确保特定操作的顺序性。

ACE 总线介绍

ACE 总线主要是解决多个master共享数据时产生coherency的问题,对于memory 属性因此强调的是 shareable, 可以理解为某一个地址或者cache 行,它可能被多个master所共享,因为我们叫它shareable。

CE 协议相较于AXI 总线增加了3组总线:

  • AC(Snoop Address)
  • CR(Snoop Response)
  • CD(Snoop Data).
    在这里插入图片描述

AC 的方向是个 slave 方向(slave interface给master interface的线),也就是slave 方向向master方向的请求,因为master要连接到总线上,总线和master连接的那个点就叫做slave interface,只有slave interface 才可以和master 相连,所以针对coherency 总线发起一个 snoop transaction 给 master,比如 CPU 或者DMA,然后Master 会通过 CR(Snoop Response) 来响应这个transaction,有snoop 就有可能出现数据的传输,有些情况下,数据可以通过snoop data 把数据传过来。

需要注意的是并不是所有的 snoop transaction 都需要有 snoop data 传输

Acknowledge signaling

此外还有 Wack 和 Rack, 主要用于告诉一次完成的transaction 结束了。

SignalSource
RACKManager
WACKManager

在这里插入图片描述

  • Rack 拉高的前提是当Rlast Rvalid Rready 都握手成功的时候
  • Wack 拉高的前提是 Bvalid Bready 都握手成功

这两个信号解决的问题是:针对相同cache line 访问的情况,如果 RACK 或者WACK 没有给的时候,另外一个 Master 对这个cache line的snoop transaction,coherency总线是不应该发过来。

Snoop Channel Signals

Snoop channel signalsSignals
Snoop AddressACVALID, ACREADY, ACADDR[x:0], ACSNOOP[3:0], ACPROT[2:0]
Snoop ResponseCRVALID, CRREADY, CRRESP[4:0]
Snoop DataCDVALID, CDREADY,CDDATA[x:0], CDLAST
  • 既然对于cache行的操作,那么就要告诉它一个地址,因为如果不给地址,那不就不知道对那个cacheline操作;
  • ACPROT[2:0]:因为访问有安全和非安全的区别,特权及非特权,所以需要有PROT信号;
  • ACSNOOP[3:0] :因为snoop transaction有很多种,比如 clean, invalidae,clean share等等,这些snoop transaction就是通过 ACSNOOOP[3:0] 来区分的。
  • CDDATA[x:0] 用来将snoop数据传回给 coherency总线,然后 coherency总线决定是将数据写入memory总还是传给其他master。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公讲 ARM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值