01-缓存一致性---基础知识

273 篇文章 421 订阅

引流关键词: bit.LITTLE,GPU,CCI,cache,缓存一致性,DSU

快速链接:
.
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈

在这里插入图片描述

相关链接:
01-缓存一致性—基础知识
02-缓存一致性—实现big.LITTLE、GPU 计算和企业应用
03-缓存一致性—提高性能和引入CoreLink CCI-500

1、简介

我们所说的“一致性”是什么意思?
在这里插入图片描述

让我们回归基础,问一下一致性是什么意思?一致性是关于确保系统中的所有处理器或总线主控器看到相同的内存视图。例如,如果我有一个正在创建数据结构的处理器,然后将其传递给 DMA 引擎进行移动,则处理器和 DMA 必须看到相同的数据。如果该数据缓存在 CPU 中并且 DMA 从外部 DDR 读取,则 DMA 将读取旧的过时数据。

有三种机制可以保持一致性:

  • 禁用缓存是最简单的机制,但可能会显着降低 CPU 性能。为了获得最高性能,处理器通过管道以高频率运行,并从提供极低延迟的缓存中运行。缓存多次访问的数据可显着提高性能并降低 DRAM 访问和功耗。将数据标记为“非缓存”可能会影响性能和功耗。
  • 软件管理的一致性是数据共享问题的传统解决方案。在这里,软件(通常是设备驱动程序)必须清除或刷新缓存中的脏数据,并使旧数据无效,以便与系统中的其他处理器或主设备共享。这需要处理器周期、总线带宽和功率。
  • 硬件管理的一致性提供了一种简化软件的替代方案。使用此解决方案,任何标记为“共享”的缓存数据将始终自动更新。该共享域中的所有处理器和总线主控器看到的值完全相同。
2、软件一致性的挑战

缓存存储靠近处理器的外部存储器内容,以减少访问的延迟和功耗。片上存储器访问的功耗明显低于外部 DRAM 访问。

软件管理的一致性使用两个关键机制管理缓存内容:

  • 缓存清理(刷新):
    如果缓存中存储的任何数据被修改,它就会被标记为“脏”,并且必须在将来的某个时间写回 DRAM。清理或刷新缓存的过程将强制将脏数据写入外部存储器。
  • 缓存失效:
    如果处理器具有本地数据副本,但外部代理更新主内存,则缓存内容已过时或“陈旧”。在读取此数据之前,处理器必须从缓存中删除陈旧数据,这称为“无效”(缓存行被标记为无效)。一个例子是用作网络流量的共享缓冲区的内存区域,它可以由网络接口​​ DMA 硬件更新;希望访问此数据的处理器必须在读取新数据之前使任何旧的陈旧副本无效。
2.1、挑战 1:软件复杂性

来自应用处理器供应商的系统架构师的抱怨:
“50% 的调试时间花在软件一致性问题上,因为这些问题很难找到和查明。”

软件一致性很难调试,缓存清理和失效必须在正确的时间完成。如果这样做太频繁,则会浪费电力和 CPU 工作量。如果做得太少,将导致陈旧的数据,这可能会导致不可预测的应用程序行为,如果不是崩溃的话。调试这个非常困难,因为它会偶尔出现数据损坏。

以下来自一家应用处理器供应商,该供应商希望将更多硬件加速器和接口连接到一致的互连,以帮助缩短新产品的上市时间
“我们希望连接更多具有硬件一致性的设备,以简化软件并加快产品进度。”

2.2、挑战 2:性能和功耗

如果请求者之间的共享率很高,则软件缓存维护的成本可能很高,并且会限制性能。例如,ARM 基准测试发现,对于处理每个数据包头的网络应用程序,可能会在缓存维护上花费超过三分之一的 CPU 周期。部分挑战是确定需要维护哪些数据。最坏的情况是,必须刷新完整的缓存内容,这可能会取代需要从 DRAM 读回的有价值的数据。

2.3、将硬件一致性扩展到系统

在这里插入图片描述
硬件一致性并不是一个新概念。事实上,ARM 的第一个实现是在 ARM11 MPCore 处理器中。在这里,最多 4 个处理器内核集成在一个集群中,并且可以作为“对称多处理器”(SMP) 运行,并且可以看到彼此的 L1 缓存和共享的 L2。所有最新的 ARM Cortex 应用处理器都支持该技术。

将硬件一致性扩展到系统需要一致的总线协议, 2011 年 ARM 发布了 AMBA 4 ACE 规范,该规范在流行的 AXI 协议之上引入了“AXI 一致性扩展”。完整的 ACE 接口允许处理器集群之间的硬件一致性,并允许 SMP 操作系统扩展到更多内核。以两个集群为例,对内存的任何共享访问都可以“窥探”另一个集群的缓存,以查看数据是否已经在芯片上;如果不是,则从外部存储器 (DDR) 中获取。

AMBA 4 ACE-Lite 接口专为 IO(或单向)相干系统主控而设计,如 DMA 引擎、网络接口和 GPU。这些设备可能没有自己的任何缓存,但它们可以从 ACE 处理器读取共享数据。或者,它们可能有缓存,但没有缓存可共享的数据。

虽然硬件一致性可能会给互连和处理器增加一些复杂性,但它极大地简化了软件并启用了软件一致性无法实现的应用程序。一个例子是 big.LITTLE 全局任务调度。
在这里插入图片描述

3、总结

缓存一致性是共享数据时需要理解的一个重要概念。禁用缓存会影响性能;软件一致性增加了开销和复杂性;硬件一致性自动管理共享,可以简化软件。AMBA 4 ACE 总线接口将硬件缓存一致性扩展到处理器集群之外的系统中

4、参考

Extended System Coherency: Part 1 - Cache Coherency Fundamentals


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

代码改变世界ctw

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

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

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

打赏作者

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

抵扣说明:

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

余额充值