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


请阅读【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。
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
AMBA(Advanced Microcontroller Bus Architecture)总线是由ARM公司提出的一种高性能、可重用的总线结构。ACE(AXI Coherency Extensions)协议是AMBA总线的一个扩展,用于提供多核系统中的一致性支持。 ACE协议的主要目的是解决多核系统中的数据一致性问题。在多核系统中,每个处理器核心都有自己的高速缓存,以提高数据访问效率。但是,当多个处理器核心同时访问相同的数据时,会导致数据一致性问题。ACE协议通过引入缓存一致性机制,保证多核系统中的数据一致性。 ACE协议采用了一种称为MOESI(Modified, Owned, Exclusive, Shared, Invalid)协议的缓存一致性协议。根据该协议,每个缓存行可以处于五种不同的状态:被修改(Modified)、被占有(Owned)、独占(Exclusive)、共享(Shared)和无效(Invalid)。当多个处理器核心同时访问相同的数据时,根据缓存行的状态,各个核心之间会进行相应的数据传输和状态转换,以保证数据的一致性。 ACE协议还支持许多其他特性,如乱序执行、站址传输等。此外,ACE协议还提供了高度灵活的配置选项,以满足不同应用的需求。 总的来说,ACE协议是AMBA总线的一个扩展,用于解决多核系统中的数据一致性问题,提供高性能和可重用的解决方案。通过引入缓存一致性机制和其他特性,ACE协议能够有效地支持多核系统的设计和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

主公CodingCos

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

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

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

打赏作者

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

抵扣说明:

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

余额充值