cache一致性意味着确保系统中所有处理器或总线主控器看到相同的内存视图。 例如,如果我有一个处理器创建数据结构,再传递到 DMA 引擎以移动它,那么处理器和 DMA 必须看到相同的数据。 如果该数据曾在 CPU 中缓存过,而 DMA 从外部 DDR 中读取,那么 DMA 将读取到过时、陈旧的数据。
维护一致性的机制有三种:
· 禁用缓存是最简单的机制,但可能牺牲大量 CPU 性能。 为获得最高的性能,处理器采用管线结构以在高频率上运行,并从延迟性非常低的缓存运行。 数据缓存可以被多次访问,从而大大提高性能,同时减少 DRAM 访问次数并降低功耗。 将数据标记为“非缓存”可能会影响性能和功耗。
· 软件管理一致性是数据共享问题的传统解决方案。 此处软件通常指的是设备驱动程序,它们必须从缓存中清理或清空脏数据,使旧数据失效,从而与系统中的其他处理器或主控器实现共享。 这将占用处理器周期、总线带宽和功耗。
· 硬件管理一致性提供可简化软件的替代方式。 使用这一解决方案时,任何标记为“共享”的缓存数据将始终自动保持最新。 该共享域中的所有处理器和总线主控器看到完全相同的值。
软件一致性的挑战
缓存将外部内存内容存储到靠近处理器的位置,从而缩短访问延迟并降低功耗。 片上内存访问的功耗要远低于外部 DRAM 访问。
软件管理一致性通过两个主要机制管理缓存内容:
· 缓存清理(清空):
o 如果缓存中存储的任何数据被修改,它会标记为“脏”,必须在未来某一时点写回到 DRAM。 这种清理或清空缓存的过程将强制脏数据写入到外部内存。
· 缓存失效:
o 如果处理器拥有数据的本地副本,但外部代理更新了主内存,那么缓存内容将过期或变得“陈旧”。 在读取这一数据前,处理器必须从缓存删除陈旧的数据,这称为“失效”(缓存线标记为无效)。 例如,某一内存区域用作网络流量的共享缓冲区,网络流量可能会被网络接口 DMA 硬件更新;想要访问这一数据的处理器必须先使任何陈旧副本失效后才能读取新的数据。
挑战 1: 软件复杂性
来自应用处理器供应商的一位系统架构师的声音:
“50% 的调试时间花在了软件一致性问题上,因为它们难以发现和查明”
软件一致性难以进行调试,而缓存清理和失效必须在正确的时间执行。 如果过于频繁,这会浪费功耗和 CPU 资源。 如果频率太低,它将导致数据陈旧,并可能引起不可意料的应用程序行为甚至崩溃。 对此进行调试的难度很高,因为偶尔会引起数据损坏。
“我们希望通过硬件一致性连接更多设备,以简化软件并加快产品计划”
上述话语来自某一应用处理器供应商,他们寻求在一致互联结构中连接更多的硬件加速器和接口,帮助缩短新产品的上市时间。
来自网络和调制解调器合作伙伴的声音:
“我们软件部门中只有少数人懂得处理器和无线电子系统之间共享数据所需的谨慎定时。 将此放大为强大百倍的软件团队是非常困难的!”
另一家制造配备 Cortex-A CPU 的调制解调器系统的合作伙伴也希望通过硬件一致性简化软件。
挑战 2: 性能和功耗
如果请求程序之间存在大量共享,软件缓存维护的代价就会很高,而且可能会限制性能。 例如,ARM 基准测试发现处理每一数据包标头的联网应用程序可能会将超过三分之一的 CPU 周期花在缓存维护上。 难点的一部分在于找出哪些数据需要进行维护。 在最糟糕的情形中,必须清空整个缓存内容,这可能会移走需要从 DRAM 读回的有用数据。
下表显示了硬件一致性与软件一致性 DMA 传输性能对比的简单示例。 在这一示例中,随着处理器缓存中脏数据量的增加(命中率),硬件一致性的性能也在提高。 这是因为,在拥有更多脏数据时,软件一致性版本将花费更多时间来清理缓存并使之失效。
将硬件一致性扩展到系统
硬件一致性并非新概念。 实际上,ARM 对其的第一次实施是在 ARM11 MPCore 处理器中。 在这一处理器中,最多 4 个处理器核心集成到一个群集中,作为“对称多重处理器”(SMP) 运行,它们可以互相看到对方的 L1 缓存和共享 L2 缓存。 这一技术受到了所有最新 ARM Cortex 应用处理器的支持。
将硬件一致性扩展到系统需要一致总线协议。ARM 在 2011 年发布了 AMBA 4 ACE 规格,在流行的 AXI 协议基础上推出了“AXI 一致性扩展”。 完整的 ACE 接口允许处理器群集之间实现硬件一致性,并且允许 SMP 操作系统扩展到更多核心。 以两个群集为例,任何对内存的共享访问可以“监听”另一群集的缓存,以了解数据是否已在芯片上;如果没有,则从外部内存 (DDR) 中获取。
AMBA 4 ACE-Lite 接口的设计面向 IO(或单向)一致系统主控器,如 DMA 引擎、网络接口和 GPU。 这些设备可能没有自己的缓存,但可以从 ACE 处理器读取共享数据。 另外,它们可能也有缓存,但不缓存可共享的数据。
虽然硬件一致性可能为互联和处理器增加一些复杂性,但它可以大大简化软件,实现凭借软件一致性无法实现的应用。 例如,big.LITTLE 全局任务调度。
实施硬件一致性
ARM 对 AMBA® 4 ACE 的首批实施包括 ARM® CoreLink™ CCI-400 缓存一致性互联、ARM Cortex®-A15 和 Cortex-A7 处理器。
移动应用:big.LITTLE 处理
CoreLink CCI-400 支持所有 big.LITTLE 组合,如 Cortex-A15 Cortex-A7、Cortex-A17 Cortex-A7 和 Cortex-A57 Cortex-53 等,完整支持包括 64 位在内的 ARMv8-A。big.LITTLE 处理是 ARM 开发的功率优化技术,通过软件将高性能‘big’核心和效率优化的‘LITTLE’处理器相组合,使应用程序在正确的时间动态转移到正确的处理器上。
CoreLink 400
硬件一致性是 big.LITTLE 处理技术的基础,因为它允许 big 和 LITTLE 处理器群集看到相同的内存视图并运行同一操作系统。全局任务调度 (GTS) 等 big.LITTLE 软件在给定的时间将任务放入适当的核心。 对于适中的工作负载,所有处理均可在 LITTLE 核心上运行,big 核心则处于关闭状态。 如果某一工作负载需要较高的性能,则开启 big 核心并将该任务迁移其上,其他适中的工作负载继续在 LITTLE 核心上运行。big.LITTLE GTS 允许 SoC 中的所有核心同时运行;例如,一个具有四个 big 核心和四个 LITTLE 核心的设备可以向操作系统表现为一个八核处理器。
下图展示了一个示例移动应用处理器,它包含 Cortex-A50 系列处理器、CoreLink MMU-500 系统 MMU 和一组 CoreLink 400 系统 IP
在这一系统中,Cortex-A57 和 Cortex-A53 提供 big.LITTLE 处理器组合,通过 AMBA 4 ACE 与 CCI-400 连接,提供完全的硬件一致性。 Mali-T628 和 IO 一致性主控器通过 AMBA 4 ACE-Lite 接口与 CCI-400 连接。 这种 IO 一致性允许 IO 一致性代理从处理器缓存读取数据。
系统中的其他组件包括:
- MMU-500 系统 MMU - 提供 1 级和/或 2 级地址转换,支持面向系统组件的内存虚拟化。
- TZC-400 TrustZone 地址空间控制器 - 对以内存或外设为目标的事务执行安全检查,允许内存区域被标记为安全或已受保护。
- DMC-400 动态内存控制器 - 提供动态内存调度以及与外部 DDR2/3 或 LPDDR2 内存的接口。
- NIC-400 网络互联 - 为 AMBA 4 AXI4、AMBA 3 AXI3、AHB-Lite 和 APB 组件提供完全可配置、可分层的低延迟连接。
CoreLink CCI-500
与 CoreLink CCI-400 相比,CoreLink CCI-500 提供高达两倍的峰值系统带宽,30% 处理器内存性能提升、更低的系统功耗,以及高度缩放和配置能力,能够满足各式应用的需求
监听过滤器介绍
此时监听过滤器登上舞台。通过将监听过滤器集成到互联之中,我们可以维护一个处理器缓存内容目录,免除广播监听的必要。
监听过滤器的原理如下:
- 所有已缓存的共享内存的标记存储在互联内的一个目录中(监听过滤器)
- 所有共享访问将查询这一监听过滤器,可能的回复有两种:
- 命中 –> 数据在片上,提供一个指向具有该数据的群集的矢量
- 未命中 –> 转而从外部内存获取
功率优势
得益于集成式监听过滤器,CoreLink CCI-500 能够比上一代互联更加节省系统内存功耗。这种功耗节省受益于执行一个中央监听查询而不是许多个,同时减少每个命中缓存的监听的外部内存访问次数。 此外,它也可能在监听过滤器回复一致性请求期间,让处理器群集在更长的时间内保持低功耗睡眠状态。
性能优势
移动系统通常为每个处理器群集包含异步时钟桥接器,而这些桥接器之间的通信会带来延迟。 相反,与互联监听过滤器的通信更快速、更容易,功耗也更低。 监听延迟性的减缓可以让处理器性能受益,基准测试表明在内存密集的处理器工作负载中性能提升 30%。 这有助于让您的移动设备速度更快、响应更灵敏,而且能加快视频编辑等生产力应用程序的速度。
另外,通过减少监听,系统中的处理器可以将它们的资源集中于处理性能,更少地去响应监听。 实际上,它意味着用户将拥有性能更高、功耗更低的 SoC。
可缩放解决方案
许多市场中都有采用多群集 SoC 的一致趋势,因为设计团队努力要释放更多的计算性能。 扩展到处理器群集更多、带宽更高的系统,也将显现出监听过滤器的更大优势。 实际上,它已成为将性能扩展到两个处理器群集以上时的必要元素。 CoreLink CCI-500 具有高度可缩放性,支持从 1 到 4 个 ACE 接口(即 1 到 4 个处理器群集)的配置。 双群集 big.LITTLE 将依然是移动应用中的标准,而对其他应用而言,也有采用更多处理器或者一致性加速器的机会。
基础结构联网和服务器应用已经在处理器和 IO 之间拥有很高比例的共享内存访问;ARM CoreLink CCN 缓存一致性网络系列产品已经包含了集成式监听过滤器,为这些应用所需的高性能和低延迟提供保障。 CoreLink CCN 系列依然是性能最高的一致性互联 IP,支持最多 12 个群集(48 核心)、集成式 L3 系统缓存,以及超过 1GHz 的时钟速度。 CoreLink CCI-500 针对移动和其他功率受限应用所需的性能和功率范围进行了优化。 作为补充的 CoreLink NIC-400 网络互联则提供低功耗、低延迟的“其余 SoC”连接,满足 IO 互联请求程序和数十或数百外设与接口的需求。
没有“一码通吃”的互联;相反,ARM 拥有针对每种应用的需求而优化的各种产品。