A Survey of Techniques for Cache Locking

翻译部分文章 A Survey of Techniques for Cache Locking

作者:SPARSH MITTAL, Oak Ridge National Laboratory

高速缓存虽然对于提高应用程序性能很重要,但也是执行时间可变性的一个来源,这使得它在需要最坏情况执行时间 (WCET) 保证的系统中难以使用。缓存锁定是一种有前途的简化 WCET 估计并提供可预测性的方法,因此,一些商用处理器提供了锁定缓存的能力。然而,缓存锁定也有一些缺点(例如,未锁定块的额外未命中、选择锁定内容所需的复杂算法),因此,需要仔细管理以实现缓存锁定的全部潜力。在本文中,我们对缓存锁定技术进行了调查。我们将这些技术分为几组,以强调它们的相似点和差异。我们还讨论了使用缓存锁定的机会和障碍。我们希望本文将帮助研究人员深入了解缓存锁定方案,并激发该领域的进一步工作。

缓存锁定是一种很有前途的技术,可以在性能和可预测性之间取得明智的平衡。缓存锁定使得WCET计算更容易,因为锁定在缓存中的数据项不会被替换,因此,无论以前的访问如何,都可以准确地知道其访问时间。此外,当高速缓存完全锁定时,已知未锁定的项目肯定会丢失,因此也可以容易地确定它们的访问时间。因此,缓存锁定技术(CLT)将内存性能与缓存绑定在一起,从而能够在硬实时系统中使用缓存。除了确保可预测性之外,缓存锁定对于提高性能也很有用,因为通过锁定缓存中的热数据,可以减少这些数据的冲突未命中。

在本文中,我们对缓存锁定技术进行了调查。本文的总体结构如图 1 所示。我们首先讨论 CLT 的前景和挑战(第 2 节)。然后,我们根据使用这些技术的各种处理器缓存来讨论 CLT(第 3 节和表 I)。此外,我们还讨论了不同 CLT 使用的解决方案方法(第 4 节和表 II)。然后我们回顾不同 CLT 的特征,例如它们的优化目标、静态或动态缓存锁定的使用等等(第 5 节和表 III)。在第五节中,我们还讨论了缓存锁定的比较评估研究。
在这里插入图片描述

2. OPPORTUNITIES AND OBSTACLES IN USING CACHE LOCKING

2.1. Preliminaries

本文中使用的与缓存锁定相关的一些术语和概念:
任务的 WCET 是任务可以花费的最大执行时间的上限。就任务控制流图(CFG)而言,WCET是从CFG的起始节点到结束节点的最长路径。在本文中,除非另有说明,性能指的是平均情况下的性能。基本块(BB)表示一系列连续指令,其中控制流从开始到结束进行,没有停止或分支(除了结束处)。

2.2. Benefits and Potential of Cache Locking

缓存锁定可以在多种场景中有利地使用,如下所示。

2.2.1. Ensuring Predictability.

缓存锁定可通过保证缓存访问的准确命中/未命中预测来消除时序异常并降低 WCET 估计的复杂性。这对于需要硬实时保证的安全关键系统特别有用。

2.2.2. Use in Multitasking Applications.

在抢占式多任务系统中,当被抢占的任务恢复执行时,需要将该任务的替换块再次放入缓存中。这种与缓存相关的抢占延迟(CRPD)随着替换块的数量而变化,因此增加了固定的上下文切换开销。缓存锁定可以帮助避免这些延迟或限制它们的值,因此,缓存锁定已在许多多任务系统中使用。

2.2.3. Performance Advantage.

除了可预测性之外,缓存锁定对于提高性能和能源效率也很有用。通过动态锁定高速缓存中的高重用数据,可以避免它们被流或低重用数据驱逐,从而消除冲突未命中。

2.2.4. Availability of Design Choices for Cache Locking.

缓存锁定可以以静态或动态方式完成,这提供了选择合适变体的灵活性。在静态锁定方案中,缓存内容在系统启动时加载,并且这些内容在整个执行过程中保持不变。在动态锁定方案中,可以在程序执行期间的特定执行点进行锁定和解锁。

2.3. Challenges in Using Cache Locking

尽管前景光明,但缓存锁定也带来了一些挑战,如下所示。

2.3.1. Implementation Complexity.

高速缓存锁定需要软件支持和高速缓存替换策略的更改,并且这种设施可能不适用于所有处理器。如果整个缓存被锁定,则需要将额外的缓存行存储在单独的缓冲区中,这使缓存管理变得复杂,或者必须将这些行写回内存,从而导致较大的延迟开销。在多任务系统中,多个任务可能会尝试锁定同一缓存部分,为了避免这种情况,需要考虑锁定操作之间的顺序。
此外,需要仔细选择用于锁定的缓存内容,这通常需要使用计算密集型算法,例如整数线性规划(ILP)。

2.3.2. Performance Overheads.

高速缓存锁定会急剧减少有效高速缓存容量和关联性,并导致未锁定行的丢失。特别是对于直接映射的高速缓存,锁定高速缓存路不会为映射到集合的行留下空间,并且这些行可能必须被绕过或存储在单独的缓冲区中。此外,锁定/解锁例程本身会导致性能损失,可能高达 150 个周期 ,因为这些例程存储在不可缓存的内存区域中,以避免它们干扰正常缓存内容的可能性。

2.3.3. Challenges in Multicore Systems and GPUs.

在多核系统中,缓存锁定可能会使缓存一致性过程复杂化,并且对某些应用程序使用缓存锁定可能导致其他应用程序出现不可预测和不公平的速度减慢。此外,大多数以前的 CLT 都以提高可预测性为目标,而它们在提高性能方面的用途,特别是在多核系统中,尚未得到详细探讨。

2.3.4. Scope and Applicability.

缓存锁定的有效性取决于工作负载中时间局部性的存在以及用于锁定的缓存块(例如,高重用块)的准确识别。在预先知道应用特性的情况下(例如,专用嵌入式系统),可以轻松确定锁定的内容。然而,运行具有数万亿条指令的应用程序的任意组合的处理器显示出高度变化的工作集和复杂的内存访问模式。在这种情况下,应用程序之间的干扰会降低时间局部性,并且缓存中的锁定块会带来收益递减。此外,缓存锁定本身并不是可预测性的完整解决方案,因为在部分锁定的缓存中,对于未锁定的部分仍然需要 CRPD 分析和静态缓存分析。下一节提出的技术旨在解决这些挑战。

3. LOCKING TECHNIQUES FOR VARIOUS PROCESSOR CACHES

在本节中,我们讨论 CLT,因为它们在不同的缓存和处理单元中使用。表 I 基于被锁定的高速缓存以及使用高速缓存锁定的处理单元提出了技术分类。可以看出,大多数工作都提出了指令缓存的 CLT。应用程序中的指令通常在执行期间保持固定,而应用程序处理的数据流在运行时会变化。这使得数据缓存锁定比指令缓存锁定更具挑战性。表 I 还强调了 CPU 和 GPU 都使用了缓存锁定。接下来,我们将讨论其中的几种技术。
在这里插入图片描述

3.3. Techniques for Shared L2 Cache

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值