CN114077553A - 自适应性高速缓存分区 - Google Patents

自适应性高速缓存分区 Download PDF

Info

Publication number
CN114077553A
CN114077553A CN202110838429.8A CN202110838429A CN114077553A CN 114077553 A CN114077553 A CN 114077553A CN 202110838429 A CN202110838429 A CN 202110838429A CN 114077553 A CN114077553 A CN 114077553A
Authority
CN
China
Prior art keywords
cache
memory
cache memory
metadata
allocated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110838429.8A
Other languages
English (en)
Inventor
D·A·罗伯茨
J·T·帕夫洛夫斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN114077553A publication Critical patent/CN114077553A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Abstract

本申请涉及自适应性高速缓存分区。所描述的设备和方法至少部分地基于指示预取性能的量度对高速缓存存储器进行分区。可以基于操作条件调整为与预取操作对高速缓存存储相关的元数据分配的高速缓存存储器的量。因此,所述高速缓存存储器可以被分区成为与地址空间有关的元数据(预取元数据)分配的第一部分以及为与所述地址空间相关联的数据(高速缓存数据)分配的第二部分。可以在适合于预取的工作负载下增加分配到所述第一部分的高速缓存存储器的量,否则减少所述量。所述第一部分可以包含所述高速缓存存储器的一或多个高速缓存单元、高速缓存线、高速缓存路、高速缓存集合或其它资源。

Description

自适应性高速缓存分区
技术领域
本申请涉及用于自适应性高速缓存分区的方法、设备和系统。
背景技术
为了有效地进行操作,一些计算系统包含层级存储器系统,所述层级存储器系统可以包含多个存储器层次。在此,高效操作可能需要成本效率和速度效率。因为较快存储器通常比相对较慢存储器更昂贵,所以设计人员试图平衡其相对成本和益处。一种方法是使用较少量的较快存储器以及较多量的较慢存储器。在层级存储器系统中,所述较快存储器被部署在比较慢存储器更高的层次处,使得所述较快存储器可以首先被优选地访问。相对较快存储器的实例被称为高速缓存存储器。相对较慢存储器的实例是后备存储器,所述后备存储器可以包含初级存储器、主存储器、后备存储装置等。
高速缓存存储器可以通过使用例如高性能存储器胞元存储和检索后备存储器中的数据来加速数据操作。所述高性能存储器胞元使所述高速缓存存储器能够比所述后备存储器更快地对存储器请求做出响应。因此,高速缓存存储器可以基于存在于高速缓存中的所期望数据实现从存储器系统的更快响应。一种增加所期望数据存在于高速缓存中的可能性的方法是在请求数据之前预取数据。为此,预取系统试图预测处理器将请求哪些数据,并且然后将此所预测的数据加载到高速缓存中。虽然预取系统可以使高速缓存存储器更有可能加速存储器访问操作,但是数据预取可能引入工程师和其它计算机设计师所努力克服的操作复杂性。
发明内容
设备和方法至少部分地基于指示预取性能的量度对高速缓存存储器进行分区。可以基于操作条件调整为与预取操作对高速缓存存储相关的元数据分配的高速缓存存储器的量。因此,所述高速缓存存储器可以被分区成为与地址空间有关的元数据(预取元数据)分配的第一部分以及为与所述地址空间相关联的数据(高速缓存数据)分配的第二部分。可以在适合于预取的工作负载下增加分配到所述第一部分的高速缓存存储器的量,否则减少所述量。所述第一部分可以包含所述高速缓存存储器的一或多个高速缓存单元、高速缓存线、高速缓存路、高速缓存集合或其它资源。
本申请的另一方面涉及一种方法,其包括:为与地址空间有关的元数据分配高速缓存存储器的第一部分;将与所述地址空间的地址相关联的数据写入到与所述高速缓存存储器的所述第一部分不同的所述高速缓存存储器的第二部分;以及至少部分地基于与预取到所述高速缓存存储器的所述第二部分中的数据有关的量度来修改为与所述地址空间有关的所述元数据分配的所述高速缓存存储器的所述第一部分的大小。
本申请的另一方面涉及一种设备,其包括:存储器阵列,所述存储器阵列被配置为高速缓存存储器;以及逻辑,所述逻辑耦接到所述存储器阵列,所述逻辑被配置成:分配所述高速缓存存储器的第一部分以存储与地址空间有关的元数据;确定与加载到所述高速缓存存储器的第二部分中的高速缓存数据有关的量度,所述第二部分不同于所述第一部分;并且至少部分地基于所确定的量度来修改分配到所述第一部分的所述高速缓存存储器的量。
本申请的又另一方面涉及一种系统,其包括:高速缓存存储器,所述高速缓存存储器包括多个高速缓存单元;接口,所述接口被配置成耦接到计算装置的互连件;以及逻辑,所述逻辑耦接到所述接口和所述高速缓存存储器,所述逻辑被配置成:将所述高速缓存存储器分区成第一部分和第二部分,为与和存储器相关联的地址空间有关的元数据分配所述第一部分,并且所述第二部分被分配用于存储对应于所述地址空间的地址的高速缓存数据;将与所述地址空间有关的元数据写入到所述高速缓存存储器的所述第一部分;至少部分地基于写入到所述高速缓存存储器的所述第一部分的所述元数据将数据写入到所述高速缓存存储器的所述第二部分中;并且至少部分地基于与写入到所述高速缓存存储器的所述第二部分中的所述数据有关的量度来修改分配到所述第一部分的所述高速缓存存储器的量。
附图说明
本文档参考以下附图描述了自适应性高速缓存分区的一或多个方面的细节。贯穿附图,使用相同数字来引用相似的特征和组件:
图1-1到1-3展示了可以实施自适应性高速缓存分区的技术的示例环境。
图2展示了可以实施自适应性高速缓存分区的一些方面的设备的实例。
图3展示了可以实施自适应性高速缓存分区的一些方面的设备的另一个实例。
图4-1到4-3展示了自适应性高速缓存分区的示例操作实施方案。
图5-1到5-3展示了自适应性高速缓存分区的另外的示例操作实施方案。
图6展示了描绘自适应性高速缓存分区的操作的示例流程图。
图7展示了描绘自适应性高速缓存分区的操作的示例流程图。
图8展示了描绘至少部分地基于与预取性能有关的量度进行自适应性高速缓存分区的操作的示例流程图。
图9展示了描绘至少部分地基于与高速缓存和/或预取性能有关的量度进行自适应性高速缓存分区的操作的示例流程图。
图10展示了用于实施自适应性高速缓存分区的系统的实例。
具体实施方式
概述
半导体工艺技术和微架构的进步已经引起处理器周期时间显著减少并增加了处理器密度。同时,存储器技术的进步已经引起存储器密度增加但存储器访问时间相对较小地减少。因此,以处理器时钟周期测量的存储器等待时间在持续增加。然而,高速缓存存储器可以帮助桥接处理器-存储器等待时间间隙。相比于后备存储器,可以存储后备存储器的数据的高速缓存存储器能够更快地为请求服务。在一些方面,可以在存储器层级结构中的后备存储器“上方”或“前面”部署高速缓存存储器,使得在访问较慢后备存储器之前优选地访问高速缓存存储器。
尤其由于成本考虑,所述高速缓存存储器的容量可能低于所述后备存储器或主存储器的容量。所述高速缓存存储器可以因此加载所述后备存储器的地址空间的所选子集。可以根据适合的标准(如高速缓存接纳策略、驱逐策略、替换策略等)从高速缓存存储器中选择性地接纳和/或驱逐数据。
在操作期间,可以响应于“高速缓存未命中”而将数据加载到高速缓存中。高速缓存未命中是指与尚未加载到高速缓存中和/或未包含在高速缓存的工作集合中的地址有关的请求。服务于高速缓存未命中可能涉及从较慢后备存储器中获取数据,所述较慢后备存储器可能显著降低性能。相比之下,服务于导致“高速缓存命中”的请求可能涉及访问性能相对较高的高速缓存存储器,而不会招致访问性能相对较低的后备存储器的等待时间。
在一些情况下,可以通过预取改善高速缓存性能。预取通常涉及在请求地址之前将地址加载到高速缓存存储器中。预取器可以预测即将到来的请求的地址,并在后台中将地址预加载到高速缓存存储器中,使得当随后接收到与所预测的地址有关的请求时,可以由高速缓存存储器为请求服务,而不是触发高速缓存未命中。换言之,可以使用性能相对较高的高速缓存存储器来为与所预取的地址有关的请求服务,而不会招致性能相对较低的后备存储器的等待时间。
可以在命中率、“有用”预取的数量、有用预取与“无效”预取的比率等方面量化预取的益处。如本文所使用的,“有用”预取是指导致后续高速缓存命中的预取,所述高速缓存命中被称为“预取命中”。换言之,通过预取与地址相关联的数据来实现有用预取,所述地址随后从高速缓存存储器请求和/或以其它方式进行访问。相比之下,“无效”预取或“预取未命中”是指对随后不会被请求并且如此不会产生高速缓存或预取命中的数据进行预取。无效预取可能对性能产生不利影响。无效预取可能消耗有限的高速缓存存储器资源以及不太可能被请求(例如,使高速缓存中毒)的数据,从而导致高速缓存未命中率增加、命中率较低、抖动增加、带宽消耗较高等等。
预取器可以通过试图检测访问存储器的模式并且然后根据检测到的模式预取数据来尝试避免这些问题。所述预取器可以使用元数据来检测、预测、导出和/或利用存储器访问模式,以确定准确的预取预测(例如,预测即将到来的请求的地址)。所述预取器所使用的元数据可以被称为“预取器元数据”、“预取元数据”、“请求元数据”、“访问元数据”、“存储器元数据”、“存储器访问元数据”等。这种元数据可以包含与地址空间有关的任何适合的信息,包含但不限于:先前请求的地址或地址偏移的序列、地址历史、地址历史表、索引表、相应地址的访问频率、访问计数(例如,在相应窗口内的访问)、访问时间、最后访问时间等等。
所述预取器可以实施适合于预取的工作负载的预取操作。如本文所使用的,“适合的”工作负载或“适合于预取”的工作负载是指根据所述预取器可检测到的(和/或可利用的)模式产生存储器访问的“可预测的”工作负载。适合的工作负载可以因此指代与所述预取器能够从其中导出可预测的访问模式的元数据相关联的工作负载。适合的工作负载的实例包含其中存储器请求偏移一致的偏移量或步长的工作负载。这些类型的工作负载可以由重复地和/或以规则模式访问结构化数据的程序产生。通过非限制性实例的方式,程序可以重复访问大小为D的数据结构,从而产生可预测的工作负载,在所述可预测的工作负载中,存储器访问偏移相对恒定的偏移量Δ或步长,其中Δ≈D。步长和其它类型的访问模式可以从与所述工作负载的先前存储器访问有关的元数据中导出。所述预取器可以利用从此类元数据导出的存储器访问模式来预取将来可能被请求的数据。在上述步长实例中,响应于地址a的高速缓存未命中,所述预取器可以将地址a+Δ、a+2Δ、……到a+dΔ的数据加载到高速缓存存储器中(其中d是可配置的预取程度)。考虑到从与所述工作负载相关联的元数据导出的可预测存储器访问模式,从地址a+Δ到a+dΔ预取的数据将可能引起后续预取命中,由此防止高速缓存未命中并改善性能。
某些类型的工作负载可能不适合于预取。如本文所使用的,“不适合的”工作负载或“不适合于预取”的工作负载是指以所述预取器不能预测、建模和/或以其它方式利用以产生准确的预取预测的方式访问存储器的工作负载。不适合的工作负载可以指代与所述预取器不能从其中导出地址预测、模式、模型等的元数据相关联的工作负载。不适合的工作负载的实例包含由不以重复的和/或规则的模式访问存储器的程序、以看似随机的地址和/或地址偏移量访问存储器的程序、根据过于复杂或多变而无法被所述预取器检测到(和/或无法在预取器元数据中捕获)的模式访问存储器的程序等产生的工作负载。试图预取不适合的工作负载的数据可能会导致预取性能不佳。由于对不适合的工作负载的预取决策不受可辨别的访问模式引导,因此在从所述高速缓存中驱逐之前,可能随后请求很少所预取的数据(如果有的话)。如本文所公开的,不准确的预取预测可能会导致无效预取,所述无效预取会消耗所述高速缓存存储器的相对有限的容量以及随后不太可能被访问的数据,而排除可能被更频繁地访问的其它数据。因此,试图对不适合的工作负载进行预取可能会降低高速缓存性能(例如,导致较低的命中率、增加的未命中率、抖动、增加的带宽消耗等等)。为了避免这些问题和其它问题,可以不对不适合的工作负载(和/或在与不适合的工作负载相关联的地址区域内)实施预取。
高速缓存可以服务于多个不同的工作负载,每个工作负载具有相应的工作负载特性(例如,相应的存储器访问特性、模式等)。如本文中进一步详细公开的,所述地址空间的相应区域内的工作负载特性可能取决于随时间而变化的多种因素。因此,在所述地址空间的不同区域内运行的程序可能会产生具有不同特性(例如,不同的存储器访问模式)的工作负载。例如,在所述地址空间的第一区域内运行的第一程序可以按第一步长模式(Δ1)访问存储器;在第二区域内运行的第二程序可以每秒以不同的步长模式(Δ2)访问存储器;在所述地址空间的第三区域内运行的第三程序可以根据更复杂的模式(如相关性模式)访问存储器;在所述地址空间的第四区域内运行的另外的程序可能会不可预测地访问存储器;等等。尽管第一步长模式可能能够在所述第一区域内产生准确预取,但是如果在其它区域中使用,则所述第一步长模式将可能产生不佳结果(反之亦然)。
在一些实施方案中,可以通过维持与地址空间的相应区域有关的元数据来改善预取性能。预取器所使用的元数据可以包含多个条目,其中每个条目包含与使用所述地址空间的相应区域进行的存储器访问有关的信息。预取器可以利用与相应区域有关的元数据来通知所述相应区域内的预取操作。更具体地,预取器可以利用与所述地址空间的相应区域有关的元数据来确定所述相应区域内的工作负载的特性,确定所述工作负载是否适合于预取(例如,区分适合于预取的工作负载和/或区域与不适合于预取的工作负载和/或区域),确定相应区域内的访问模式,根据所确定的访问模式在相应区域内实施预取操作等等。在一些实施方案中,预取器元数据覆盖多个固定大小的地址区域。可替代地,所述预取器元数据可以被配置成覆盖自适应大小的地址区域,在所述地址区域中,工作负载特性(如访问模式)是一致的。在这些实施方案中,预取器元数据的相应条目所覆盖的地址范围的大小可以在地址空间的相应区域内变化,这尤其取决于所述相应区域内的工作负载特性和/或预取性能。
与存储器访问有关的元数据经常在层级存储器系统(如存储器I/O路径等)的性能敏感功能处和/或在所述性能敏感功能内被跟踪。此外,利用此类元数据的预取操作可以是性能敏感的(例如,以确保在请求此类数据之前所预取的数据是可用的)。因此,在高性能存储器资源内维持与存储器访问相关的元数据(预取器元数据)可以是有利的。在一些实施方案中,预取元数据可以维持在高性能高速缓存存储器内。例如,高速缓存的高性能存储器资源的固定部分可以被分配用于存储预取器元数据(和/或将所述固定部分分配到所述高速缓存的预取器和/或预取逻辑)。可以在设计、生产和/或制造所述高速缓存和/或部署所述高速缓存的组件(如处理器、片上系统SoC等)时确定所述固定部分的大小和/或配置。在一些实施方案中,可以在硬件、寄存器传送级(RTL)实施方案等中设置为预取元数据分配的高速缓存存储器的固定部分。
高速缓存存储器的固定分配可以尤其通过减少元数据更新、地址预测、预取操作等等的等待时间来改进预取性能。由于高速缓存存储器的大小是有限的,所以为元数据存储分配高速缓存存储器的固定部分可能会对高速缓存性能的其它方面产生不利影响。例如,所述固定部分的分配可能会减少可以加载到高速缓存中的数据的量,这可能导致高速缓存性能降低(例如,导致未命中率增加、命中率降低、替换率增加等)。在一些情况下,经改进的预取性能的益处可能超过这些缺点。例如,当服务于具有可以被准确地预测和/或利用的访问模式的适合的工作负载时,预取器可以利用维持在高性能高速缓存存储器的固定分配内的元数据来实施产生更好的整体高速缓存性能的准确、低等待时间的预取操作,尽管高速缓存容量减少。
然而,在其它情况下,经改进的预取性能的益处可能不会超过减少的高速缓存容量的缺点。例如,当服务于不适合的工作负载时,分配到预取器元数据的高速缓存存储器资源的固定部分可能会被有效地浪费掉。更具体地,当服务于具有可能不能被预取器准确地预测和/或利用的访问模式的工作负载时,分配用于存储预取器元数据的高速缓存存储器的固定部分可能不会产生有用的预取,并且如此可能不能改进高速缓存性能,远不及由于高速缓存容量减少而发生的性能代偿。当服务于不适合的工作负载时,高速缓存存储器的固定分配将更好地用于增加高速缓存的可用容量,而不是存储预取器元数据。
为了解决这些问题以及其它问题,可以预先确定分配到预取元数据的高速缓存存储器的量(固定的预取元数据容量)。固定的预取元数据容量可以被配置成在一系列不同的操作条件下提供可接受的性能。在一些实施方案中,固定的预取元数据容量可以通过测试、经验、模拟、机器学习等来确定。尽管固定量的预取元数据容量可以在一些条件下产生可接受的性能,但性能可能会在其它条件下受到影响。此外,所述高速缓存可能无法适应工作负载条件的变化。
考虑例如具有固定的预取元数据容量的高速缓存服务或以其它方式操作主要不适合的工作负载(例如,产生预取器无法建模、预测和/或利用以确定准确预取预测的存储器访问的工作负载)的情况。固定的预取元数据容量因此可能无法产生性能改进。在这些情况下,可以通过减少固定的预取元数据容量或完全移除固定分配来改进高速缓存性能。
考虑具有固定预取元数据容量的高速缓存服务于如具有不同的相应访问模式(在相应的预取器元数据中跟踪)的大量工作负载、具有更复杂的访问模式的工作负载、具有涉及更大量的预取器元数据的访问模式的工作负载等主要适合的工作负载的其它情况。固定的预取元数据容量可能不足以准确地捕获所述工作负载的访问模式,从而导致预取准确度降低以及高速缓存性能下降。在这些条件下,可以通过增加预取器可用的元数据容量(和/或进一步减少可用高速缓存容量)来改进高速缓存性能。
工作负载特性(如访问模式)可以因地址区域而异。此外,相应工作负载和/或对应地址区域的特性可能随时间推移而变化。地址空间的相应区域内的工作负载特性可能取决于许多因素,包含但不限于:利用相应区域的程序、所述程序的状态、所述程序执行的处理任务、所述程序的执行阶段、所述程序访问的数据结构的特性、访问数据结构的方式等等。预取器可以利用与相应地址区域内的工作负载特性有关的元数据来确定相应地址区域内的准确预取预测。因此,产生准确预取预测所需的预取器元数据的量可能取决于许多因素,所述因素可能随时间推移而变化,包含但不限于:工作负载(和/或对应地址区域)的数量、跟踪相应地址区域内的访问模式所需的元数据的量、由相应地址区域内的预取器实施的预取技术、访问模式的复杂性等等。在第一操作条件下(和/或在第一时间间隔期间)产生准确预取预测所需的预取元数据容量可能不同于在第二操作条件下(和/或在第二时间间隔期间)产生准确预取预测所需的预取元数据容量。
为了解决这些缺点和其它缺点,本文档描述了自适应性高速缓存分区技术,所述技术使得能够动态调整分配用于存储预取器元数据的高速缓存存储器的量。因此,可以对分配到预取操作的高速缓存存储器容量进行微调以改进高速缓存性能。
在一个实施方案中,预取器实施多个工作负载的步长预取技术,其中每个工作负载对应于地址空间的相应区域。预取器可以使用与相应区域内的访问有关的元数据来检测相应工作负载的步长模式。检测Y个工作负载的步长访问模式可以涉及维持与Y个不同地址区域内的访问有关的元数据。然而,固定的预取元数据容量可能无法维持能够捕获Y个模式的元数据,这可能会降低预取预测的准确度,从而导致高速缓存性能降低。例如,固定的预取元数据容量可能只能跟踪Y个模式的子集,从而使X个地址区域不被覆盖。这可能使预取器在X个地址区域内实施不准确的预取或完全阻止在X个地址区域内进行预取。相比之下,所公开的自适应性高速缓存分区技术可以能够尤其通过增加分配到预取器的高速缓存存储器的量使得所述预取器能够存储与Y个工作负载和/或区域中的每一个的步长模式有关的元数据来改进高速缓存性能。所公开的自适应性高速缓存分区可以能够响应于变化的工作负载条件而修改预取元数据容量。例如,Y个工作负载中的一或多个可能会随时间推移而从适合转换到不适合,从而导致预取性能降低。响应于预取性能的降低,可以减少为预取器元数据分配的高速缓存存储器的量,所述量的减少可以使可用高速缓存容量对应地增加,由此改进整体高速缓存性能。
在另一个实例中,预取器可以实施相关性预取技术,所述技术学习可以重复但不像简单步长或Δ地址模式(相关性模式)那样一致的访问模式。所述相关性模式可以包含含有多个元素的Δ序列,并且如此可以从比简单步长模式更大量的元数据中导出。例如,根据相关性预取操作的程度,包含两个元素(Δ1,Δ2)的Δ序列的相关性预取可以包含预取地址a+Δ1、a+Δ12、a+2Δ12、a+2Δ1+2Δ2等等。由于相关性预取技术试图获取更复杂的模式,因此这些技术可能涉及更大量的元数据。在针对多个工作负载和/或区域跟踪相关性模式的情况下,具有固定的预取元数据容量的高速缓存可能不足,从而导致性能降低。相比之下,尽管可用高速缓存容量对应地减少,但本文中公开的自适应性高速缓存分区技术可以增加分配到预取器的高速缓存存储器的量,从而产生经改进的预取准确度和更佳的整体性能。所公开的自适应性高速缓存分区技术可以响应于变化的工作负载条件(如具有更简单的单步长访问模式的工作负载、具有更少工作负载的工作负载等)而调整高速缓存存储器的分配。
所公开的自适应性高速缓存分区技术还可以改进机器学习和/或机器学习(ML)预取实施方案(如基于分类的预取器、人工神经网络(NN)预取器、深度神经网络(DNN)预取器、递归NN(RNN)预取器、长短期记忆(LSTM)预取器等)的性能。例如,可以训练LSTM预取器以对地址空间内的存储器访问的“本地上下文”进行建模,其中每个“本地上下文”对应于地址空间的相应地址范围。这些类型的ML预取技术可以试图利用本地上下文,因为如本文所公开的,由在相应本地上下文内运行的程序访问的数据结构倾向于存储在重复地和/或以规则模式访问的相连数据结构或块中。可以训练ML预取器以在相应的本地上下文内开发和/或完善ML模型,并且所述ML预取器可以使用ML模型来实施预取操作。然而,由于由在地址空间的各个区域内操作的程序所产生的工作负载中的差异,本地上下文可能跨地址空间显著地变化。被训练以学习地址空间的一个区域内(和/或由一个程序产生)的本地上下文的ML模型可能无法准确地对所述地址空间的其它区域内(和/或由另一个程序产生)的本地上下文进行建模。因此,所述ML模型可能依赖于覆盖相应的本地上下文的元数据。高速缓存存储器的固定分配可能不足以维持针对由高速缓存所服务的工作负载的ML模型,从而导致预取性能不佳。然而,所公开的自适应性高速缓存分区技术可以能够根据由此跟踪到的ML模型的数量和/或复杂性来调整分配到预取器的预取元数据容量的量。
所描述的用于自适应性高速缓存分区的技术可以与高速缓存、预取器和/或层级存储器系统的其它组件一起使用。在一些实施方案中,耦接到高速缓存存储器的逻辑被配置成平衡通过为预取元数据分配高速缓存存储器容量而实现的性能改进与可用高速缓存容量的对应减少的影响。所述逻辑可以被配置成为与地址空间有关的元数据(例如,预取元数据)分配高速缓存存储器的第一部分,将高速缓存数据分配到所述高速缓存存储器的不同于所述第一部分的第二部分,和/或至少部分地基于与预取到所述高速缓存存储器的所述第二部分中的数据有关的量度来修改为所述元数据分配的所述高速缓存存储器的所述第一部分的大小。所述量度可以被配置成量化高速缓存和/或预取性能的任何适合的方面,包含但不限于:预取命中率、预取未命中率、有用预取的数量、无效预取的数量、有用预取与无效预取的比率、高速缓存命中率、高速缓存未命中率、请求等待时间、平均请求等待时间等。当所述量度超过第一阈值时,为预取器元数据分配的高速缓存存储器的量可以增加,并且当所述量度低于第二阈值时,所述量可以减少。
可以响应于与地址空间有关的请求(如读取请求、写入请求、传送请求、高速缓存命中、高速缓存未命中、预取命中、预取未命中等)而更新维持在所述高速缓存存储器的所述第一部分内的元数据。所述高速缓存的预取器(和/或预取逻辑)可以被配置成至少部分地基于与维持在所述高速缓存存储器的所述第一部分内的地址空间有关的所述元数据选择预取到所述高速缓存存储器的所述第二部分中的数据。所述元数据可以包含与地址和/或地址空间的范围有关的任何适合的信息,包含但不限于:地址序列、地址历史、索引表、Δ序列、步长模式、相关性模式、特征向量、ML特征、ML特征向量、ML模型、ML建模数据等。
响应于监测一或多个与预取到所述高速缓存存储器的所述第二部分中的数据有关的量度,可以修改为元数据分配的所述高速缓存存储器的所述第一部分的大小。所述量度可以被配置成量化预取性能并且可以包含但不限于:预取命中率、有用预取的数量、无效预取的数量或有用预取与无效预取的比率等等。当所述量度中的一或多个量度超过第一阈值时,可以增加所述第一部分的大小,或者当所述量度低于第二阈值时,可以减小所述第一部分的大小。在一些实施方案中,在预取性能保持高于第一阈值时,分配用于存储与地址空间有关的元数据(预取器元数据)的高速缓存存储器的量可以递增地和/或周期性地增加。可以增加为所述元数据分配的高速缓存存储器的量,直到达到最大值或上限。相反,在预取性能保持低于所述第二阈值时,为所述元数据分配的高速缓存存储器的量可以递增地和/或周期性地减少。可以减少为所述元数据分配的高速缓存存储器的量,直到达到最小值或下限。在一些方面,在所述下限处,没有分配用于元数据存储的高速缓存资源,并且基本上所有的高速缓存存储器都可用作高速缓存容量。
以这些方式,自适应性高速缓存分区提供了用于有效应对不同预取环境的灵活设备和技术。高速缓存存储器可以包含为与地址空间有关的元数据分配的第一部分和分配用于高速缓存所述地址空间的数据的第二部分。在示例实施方案中,至少部分地基于当前的处理工作负载来调整所述第一部分和所述第二部分的相对大小。如果当前的处理工作负载适合于预取,则可以适当地设定所述第一部分的大小。例如,逻辑可以增加所述第一部分的大小并减小所述第二部分的大小。所述逻辑可以将一些存储器存储从被用于高速缓存数据转换成被用于存储元数据,以增加适合于预取的工作负载的预取能力。另一方面,如果当前的处理工作负载不适合于预取,则可以适当缩小所述第一部分的大小,以提供更多资源来高速缓存数据。在这种情况下,所述逻辑可以减小所述第一部分的大小并增加所述第二部分的大小。因此,所述逻辑可以将一些高速缓存存储器存储从被用于维持元数据转换成被用于存储高速缓存数据,以减少由预取器为不适合于预取的工作负载消耗的资源。因此,所描述的高速缓存分区可以适于根据当前的处理工作负载有效地提供更多预取功能或更多高速缓存存储。
示例操作环境
图1-1展示了可以实施自适应性高速缓存分区的一些方面的示例设备100。设备100可以被实现为例如至少一个电子装置。示例电子装置实施方案包含物联网(IoT)装置100-1、平板计算机装置100-2、智能手机100-3、笔记本计算机100-4、台式计算机100-5、服务器计算机100-6、服务器集群100-7等。其它设备实例包含:可穿戴装置,如智能手表或智能眼镜;娱乐装置,如机顶盒或智能电视;主板或服务器刀片;消费者器具;车辆;工业设备;网络附接存储(NAS)装置等等。每种类型的电子装置都包含一或多个组件,以提供一些计算功能或特征。
在示例实施方案中,设备100包含至少一个主机102、至少一个处理器103、至少一个存储器控制器104、互连件105、存储器108和至少一个高速缓存110。存储器108可以表示主存储器、系统存储器、后备存储器、后备存储装置、其组合等。存储器108可以用任何适合的存储器和/或存储设施实现,包含但不限于:存储器阵列、半导体存储器、只读存储器(ROM)、随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、晶闸管随机存取存储器(TRAM)、铁电RAM(FeRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、磁阻式RAM(MRAM)、自旋扭矩传送RAM(STT RAM)、相变存储器(PCM)、三维(3D)堆叠DRAM、双倍数据速率(DDR)存储器、高带宽存储器(HBM)、混合存储立方体(HMC)、固态存储器、闪存、与非闪存、或非闪存、3D XPointTM存储器等。本文描述了存储器108的其它实例。在一些方面,主机102可以进一步包含和/或被耦接到非暂时性存储装置,所述非暂时性存储装置可以用包含任何适合的非暂时性、持久性、固态和/或非易失性存储器的装置或模块来实现。
如所示出的,主机102或主机装置102可以包含处理器103、存储器控制器104和/或其它组件(例如,高速缓存110-1)。处理器103可以耦接到高速缓存110-1,并且高速缓存110-1可以耦接到存储器控制器104。处理器103还可以直接或间接地耦接到存储器控制器104。主机102可以通过互连件105耦接到高速缓存110-2。高速缓存110-2可以耦接到存储器108。
所描绘的设备100的组件表示具有存储器层级结构(或层级存储器系统)的示例计算架构。例如,高速缓存110-1可以逻辑地耦接在处理器103与高速缓存110-2之间。进一步地,高速缓存110-2可以逻辑地耦接在处理器103(和/或高速缓存110-1)与存储器108之间。在图1-1实例中,高速缓存110-1相比于高速缓存110-2位于存储器层级结构的更高层次处。类似地,高速缓存110-2相比于存储器108位于存储器层级结构的更高层次处。所指示的互连件105以及耦接各个组件的其它互连件可以使数据能够在各个组件之间或之中传送。互连件实例包含总线、切换结构、承载电压或电流信号的一或多根电线等。
尽管图1-1中描绘并且本文中描述了设备100的特定实施方案,但是设备100可以以替代性方式实施。例如,主机102可以包含另外的高速缓存,包含多层级高速缓存存储器(例如,多个高速缓存层)。在一些实施方案中,处理器103可以包含一或多个内部存储器和/或高速缓存层,如指令寄存器、数据寄存器、L1高速缓存、L2高速缓存、L3高速缓存等。进一步地,至少一个其它高速缓存和存储器对可以耦接在所展示的高速缓存110-2和/或存储器108“下方”。高速缓存110-2和存储器108可以以各种方式实现。在一些实施方案中,高速缓存110-2和存储器108两者安置在主板上或由所述主板物理地支持,其中存储器108包括“主存储器”。在其它实施方案中,高速缓存110-2包含DRAM和/或由所述DRAM实现,并且存储器108包含非暂时性存储器装置或模块和/或由所述非暂时性存储器装置或模块实现。尽管如此,所述组件可以以替代性方式实施,包含以分布式或共享存储器系统实施。进一步地,给定设备100可以包含更多、更少或不同的组件。
高速缓存110-2可以被配置成通过将性能相对较低的存储器108的数据存储在性能相对较高的高速缓存存储器120内来改进存储器性能。高速缓存存储器120可以由高速缓存硬件提供和/或体现,所述高速缓存硬件可以包含但不限于:半导体集成电路系统、存储器胞元、存储器阵列、存储器库、存储器芯片等。在一些方面,高速缓存存储器120包含存储器阵列。所述存储器阵列可以被配置为包含多个高速缓存单元(如高速缓存线等)的高速缓存存储器120。所述存储器阵列可以是存储器胞元的集合(例如,网格),其中每个存储器胞元被配置成存储数字数据的至少一位。高速缓存存储器120(和/或其存储器阵列)可以在半导体衬底(如硅、锗、硅锗合金、砷化镓、氮化镓等)上形成。在一些情况下,所述衬底是半导体晶圆。在其它情况下,衬底可以是绝缘体上硅(SOI)衬底,如玻璃上硅(SOG)或蓝宝石上硅(SOS)或另一个衬底上的外延半导体材料层。可以通过使用包含但不限于磷、硼或砷的各种化学物种进行掺杂来控制衬底或衬底的子区域的导电性。可以在衬底的初始形成或生长期间通过离子注入或通过任何其它掺杂机构来执行掺杂。然而,本公开并不限于这一点;高速缓存存储器120可以包含任何适合的存储器和/或存储器机构,包含但不限于:存储器、存储器阵列、半导体存储器、易失性存储器、RAM、SRAM、DRAM、SDRAM、非易失性存储器、固态存储器、闪存等。
可以响应于高速缓存未命中而将数据加载到高速缓存存储器120中,使得可以更快地为数据的后续请求服务。另外的性能改进可以通过将数据预取到高速缓存存储器120中来实现,所述预取可以包含预测将来可能被请求的地址并将所预测的地址预取到高速缓存存储器120中。当随后在高速缓存110-2处接收到与所预取的地址有关的请求时,可以由性能相对较高的高速缓存存储器120为请求服务,而不会触发高速缓存未命中(并且不会访问性能相对较低的存储器108)。
可以尤其基于与存储器108的地址空间有关的元数据122来选择用于预取的地址。在一些实施方案中,可以从元数据122中导出地址空间的相应区域内的访问模式,并且所述访问模式可以用于将数据预取到高速缓存存储器120中。在一些实施方案中,元数据122中的至少一些元数据维持在高速缓存存储器120内。高速缓存存储器120的部分或分区可以被分配用于存储元数据122。可以至少部分地基于一或多个量度来调整、微调、修改、改变和/或以其它方式管理为元数据122分配的高速缓存存储器120的量。所述量度可能与预取性能的一或多个方面有关(可以包含一或多个预取性能量度),如有用预取的数量、无效预取的数量、有用预取与无效预取的比率、预取命中率、预取未命中率等。可替代地或另外地,所述量度可能与高速缓存性能的一或多个方面有关(可以包含一或多个高速缓存性能量度),如高速缓存命中率、高速缓存未命中率等。当所述量度中的一或多个量度超过第一阈值时,为元数据122分配的高速缓存存储器120的量可以增加,当所述量度低于第二阈值时,所述量可以减少等等。
在图1-1实例中,自适应性高速缓存分区的各个方面由高速缓存110-2实施。然而,本公开并不限于这一点。所公开的用于自适应性高速缓存分区的技术可以在任何高速缓存110(例如,高速缓存110-1)和/或高速缓存层中(包含跨多个高速缓存110和/或高速缓存层)实施。在一些实例中,高速缓存110-2可以被配置成为与地址空间有关的元数据122分配高速缓存存储器。可替代地或另外地,处理器103的一或多个内部高速缓存可以被配置成实施如本文所公开的自适应性高速缓存分区(例如,处理器103的L3高速缓存可以分配高速缓存存储器以存储与地址空间有关的元数据122)。
图1-2展示了可以实施自适应性高速缓存分区的设备的另外的实例。设备100可以包含高速缓存110,所述高速缓存被配置成高速缓存与地址空间相关联的数据。高速缓存110可以被配置成高速缓存与任何适合的地址空间有关的数据,所述地址空间包含但不限于:存储器地址空间、存储地址空间、主机地址空间、输入/输出(I/O)地址空间、主存储器地址空间、物理地址空间、虚拟地址空间、虚拟存储器地址空间、尤其由处理器103、存储器控制器104、存储器管理单元(MMU)等管理的地址空间。在图1-2实例中,高速缓存110被配置成高速缓存与存储器108的地址空间有关的数据。因此,存储器108可以代表存储器层级结构内的高速缓存110的后备存储器。
高速缓存110可以将相对较慢的存储器108的地址和/或对应数据加载到相对较快的高速缓存存储器120中。可以响应于高速缓存未命中(例如,响应于与在高速缓存110内不可用的地址和/或数据有关的请求)而加载数据。服务于高速缓存未命中可以涉及将数据从相对较慢的存储器108传送到相对较快的高速缓存存储器120。因此,高速缓存未命中可能会导致请求等待时间增加和性能不佳。在与地址有关的请求被接收到之前,高速缓存110可以通过将地址预取到高速缓存存储器120中来解决这些问题和其它问题。准确的预取可以产生可以使用高速缓存存储器120服务的预取命中,而不会招致高速缓存未命中所涉及的等待时间。然而,不准确的预取可能会消耗高速缓存存储器资源以及随后不会被访问的数据,这可能不利地影响性能(例如,增加未命中率、降低高速缓存命中率、增加带宽消耗等等)。
与地址空间有关的元数据122尤其可以用于通知预取操作。在一些实施方案中,从元数据122中导出地址访问模式,并且所述地址访问模式被准确地利用以预测即将到来的请求的地址。元数据122可以包含与地址空间有关的任何信息和/或与高速缓存110的后备存储器(例如,存储器108)相关联的数据,包含但不限于:先前请求的地址或地址偏移的序列、地址历史、地址历史表、索引表、相应地址的访问频率、访问计数(例如,在相应窗口内的访问)、访问时间、最后访问时间、ML特征或参数、ANN特征或参数(例如,权重和/或偏置参数)、DNN特征或参数、LSTM特征或参数等等。在一些方面,元数据122包含多个条目,每个条目包含与地址空间的相应区域有关的信息。与地址空间的相应区域有关的元数据122尤其可以用于确定相应区域内的地址访问模式,所述地址访问模式可以用于通知相应区域内的预取操作。
元数据122可以是性能敏感的。与地址空间有关的元数据122可以在性能敏感操作(如服务请求的操作、高速缓存操作、预取操作等等)中被检索、更新和/或以其它方式访问。因此,将元数据122维持在高性能存储器资源中可以是有利的。在图1-2实例中,与地址空间有关的元数据122中的至少一些元数据维持在高速缓存存储器120内。高速缓存存储器120的一部分可以被分配用于存储元数据122。如图1-2所展示的,高速缓存存储器120的第一部分124(或第一分区)为元数据122而保留。对应于与存储器108相关联的地址空间的地址的数据(高速缓存数据)可以高速缓存在高速缓存存储器120的第二部分126(或第二分区)内,所述第二部分可以与第一部分124不同和/或分开。第一部分124可以包含高速缓存存储器120的任何适合的资源,包含但不限于零或多个:高速缓存单元、高速缓存块、高速缓存线、硬件高速缓存线、集合、路、行、列、库等。第一部分124(或第一分区)可以被称为元数据部分、元数据分区、预取部分、预取分区等。第二部分126(或第二分区)可以被称为高速缓存部分、高速缓存分区等。
可以至少部分地基于一或多个量度来调整第一部分124的大小。所述量度可能与高速缓存110和/或存储器层级结构的任何适合的方面有关,包含但不限于:请求等待时间、平均请求等待时间、吞吐量、高速缓存性能、高速缓存命中率、高速缓存未命中率、预取性能、预取命中率、预取未命中率、有用预取的数量、无效预取的数量、有用预取与无效预取的比率等。第一部分124的大小可以响应于指示高速缓存和/或预取性能满足一或多个第一阈值的量度而增加,并且可以响应于未能满足一或多个第二阈值的量度而减小。所述量度可以被配置成量化高速缓存110上的工作负载适合于预取的程度。因此,分配用于存储与预取操作有关的元数据122的高速缓存存储器120的量可以对应于工作负载适合于预取的程度(如通过一或多个量度量化)。在适合于预取的工作负载条件下,第一部分124的大小可能增加(并且第二部分126的大小可能减小),这可以实现更准确的预取并且进一步改进整体高速缓存性能,即使可用高速缓存容量减少。在不适合于预取的工作负载条件下,第一部分124的大小可能减小(并且第二部分126的大小可能增加),这可以增加高速缓存110的可用容量。在适合的工作负载下,高速缓存容量可用性的增加可以使性能改进(例如,降低高速缓存未命中率、降低替换率等等)。
图1-3展示了可以实施自适应性高速缓存分区的设备的另外的实例。在图1-3实例中,高速缓存110可以是处理器103(和/或其处理器核)的内部高速缓存和/或高速缓存层,如L1高速缓存、L2高速缓存、L3高速缓存等。在一些方面,存储器层级结构可以进一步包含安置在处理器103与存储器108之间的高速缓存110(如图1-1所展示的高速缓存110-2)。
高速缓存110可以被配置成高速缓存与地址空间的地址相关联的数据。在图1-3实例中,高速缓存110被配置成高速缓存与由MMU(如存储器控制器104、操作系统等)管理的虚拟地址空间有关的数据。所述地址空间可以大于主机102的存储器资源的物理地址空间(例如,所述地址空间可以大于存储器108的物理地址空间)。所述地址空间可以是32位地址空间、64位地址空间、128位地址空间等。
高速缓存110可以分配高速缓存存储器120的第一部分124以存储与地址空间有关的元数据122。元数据122可以包含与对地址空间的相应地址和/或地址区域的访问有关的信息,所述信息尤其可以用于将数据预取到高速缓存存储器120的第二部分126中(预取与所述地址空间的相应地址有关的高速缓存数据128)。如本文所公开的,高速缓存110可以至少部分地基于一或多个量度来调整分配用于存储元数据122的高速缓存存储器120的量。高速缓存110可以在适合于预取的工作负载条件下增加分配到第一部分124的高速缓存存储器120的量,并且可以在不适合于预取的工作负载条件下减少分配到第一部分124的量。
用于自适应性高速缓存分区的示例方案和设备
图2展示了用于实施自适应性高速缓存分区的设备的实例200。所展示的设备包含高速缓存110,所述高速缓存被配置成加速与存储器108(后备存储器)有关的存储器存储操作。如本文所公开的,存储器108可以是任何适合的存储器和/或存储设施。
高速缓存110可以包含和/或耦接到接口215,所述接口可以被配置成从至少一个请求方201接收与和存储器108相关联的地址空间有关的请求202。请求方201可以是主机102、处理器103、处理器核、客户端、计算装置、通信装置(例如,智能手机)、个人数字助理(PDA)、平板计算机、物联网(IoT)装置、相机、存储器卡读取器、数字显示器、个人计算机、服务器计算机、数据管理系统、数据库管理系统(DBMS)、嵌入式系统、片上系统(SoC)装置等。请求方201可以包含系统主板和/或背板,并且可以包含处理资源(例如,一或多个处理器、微处理器、控制电路系统等)。接口215可以被配置成将高速缓存110耦接到一或多个互连件,如互连件105、主机102等。
高速缓存110可以被配置成通过使用如高速缓存存储器120等高性能存储器资源服务于与存储器108有关的请求202。高速缓存存储器120可以包含高速缓存存储器资源。如本文所使用的,“高速缓存存储器资源”是指任何适合的数据和/或存储器存储资源。在图2实例中,高速缓存存储器120的高速缓存存储器资源包含多个高速缓存单元220,每个高速缓存单元220能够存储相应数量的数据。高速缓存单元220可以包含和/或对应于存储器资源的任何适合类型和/或布置,包含但不限于:单元、存储器单元、块、存储器块、高速缓存块、高速缓存存储器块、页、存储器页、高速缓存页、高速缓存存储器页、高速缓存线、硬件高速缓存线、集合、路、存储器阵列、行、列、库、存储器库等。在图2实例中,高速缓存存储器120包含X个高速缓存单元220(高速缓存单元220-1到220-X)。
在一些实施方案中,高速缓存110可以逻辑地安置在请求方201与存储器108之间(例如,可以插置在请求方201与存储器108之间)。在图2实例中,请求方201、高速缓存110和存储器108可以通信地耦接到互连件105。高速缓存110可以包含和/或耦接到逻辑(高速缓存逻辑210),所述逻辑被配置成尤其通过监测、过滤、嗅探、获取、拦截、标识和/或以其它方式检索与互连件105上的地址空间有关的请求202来接收与和存储器108相关联的地址空间有关的请求202。高速缓存逻辑210可以被进一步配置成将地址204映射到高速缓存单元220。与映射到高速缓存单元220的地址204有关的请求202(包含与地址204相关联的有效数据)会引起高速缓存命中,所述高速缓存命中可以通过使用性能相对较高的高速缓存存储器120来服务。未映射到存储在高速缓存存储器120内的有效数据的与地址204有关的请求202会引起高速缓存未命中。服务于引起高速缓存未命中的与地址204有关的请求202可能涉及实施传送操作203以从相对较慢的存储器108获取与地址204相关联的数据,这可能增加请求202的等待时间。
在一些实施方案中,高速缓存逻辑210包含和/或耦接到预取逻辑230。预取逻辑230可以被配置成预测即将到来的请求202的地址204。预取逻辑230可以被进一步配置成实施传送操作203(或使高速缓存逻辑210实施传送操作203)以将对应于所预测的地址204的数据预取到高速缓存存储器120中。预取逻辑230可以使传送操作203在高速缓存110处接收到与所预测的地址204有关的请求202之前实施。因此,与所预测的地址204有关的后续请求202可以引起可以使用性能相对较高的高速缓存存储器120服务的预取命中,而不会招致服务于高速缓存未命中(或访问性能相对较低的存储器108)所涉及的等待时间。与所预取的地址204有关的请求202的等待时间可以不包含将所预测的地址204的数据加载到高速缓存110中所涉及的等待时间。
预取逻辑230可以至少部分地基于与地址空间有关的元数据122(例如,预取器元数据)来确定地址预测。如本文所公开的,元数据122可以包含任何适合的地址访问特性,包含但不限于:先前请求的地址或地址偏移的序列、地址历史、地址历史表、索引表、相应地址的访问频率、访问计数(例如,在相应窗口内的访问)、访问时间、最后访问时间等等。预取逻辑230可以被配置成响应于与相应地址204有关的事件而维持和/或更新元数据122,所述事件可以包含但不限于:数据访问请求、读取请求、写入请求、复制请求、克隆请求、修整请求、擦除请求、删除请求、高速缓存未命中、高速缓存命中等。预取逻辑230可以利用元数据122来确定地址访问模式,并且可以使用所确定的地址访问模式来预测即将到来的请求202的地址204。在一些实施方案中,元数据122可以包含多个条目,每个条目包含与地址空间的相应区域有关的信息。预取逻辑230可以利用元数据122来确定地址空间的相应区域内的访问模式,并且使用所确定的访问模式来预测相应区域内的即将到来的请求202的地址204。
在一些实施方案中,元数据122的至少一部分维持在高速缓存存储器120内。高速缓存逻辑210可以分配高速缓存存储器120的第一部分124以存储元数据122和/或供预取逻辑230使用。高速缓存逻辑210可以将与地址空间的地址有关的数据(高速缓存数据128)维持在高速缓存存储器120的第二部分内,所述第二部分可以与高速缓存存储器120的第一部分124分开和/或不同。在图1-3实例中,高速缓存逻辑210分配M个高速缓存单元220以存储元数据122。第一部分124可以包含高速缓存单元220-1到220-M,并且用于存储高速缓存数据128的第二部分126可以包含C个高速缓存单元,其中C=X-M(高速缓存单元220-M+1到220-X)。尽管图1-3展示了自适应性高速缓存分区的一个实例,但是本公开并不限于这一点并且可以适于根据任何适合的分区方案对高速缓存存储器120进行分区。在另一个实例中,高速缓存逻辑210可以将高速缓存单元220-1到220-C分配到第二部分126,并且将高速缓存单元220-C+1到220-X分配到第一部分124。在其它实例中,高速缓存逻辑210可以分配高速缓存单元220的其它分组,如集合、路、行、列、库等。
高速缓存逻辑210可以被配置成实施第一映射方案(元数据方案),以将元数据122和/或其条目映射到第一部分124内的高速缓存单元220。高速缓存逻辑210可以被进一步配置成实施第二映射方案(高速缓存或地址映射方案316),以将地址204映射到分配到第二部分126的高速缓存单元220。高速缓存逻辑210可以被配置成响应于修改分配到第一部分124和第二部分126中的一或多个的高速缓存存储器120的大小和/或配置而修改第一映射方案和/或第二映射方案。
高速缓存逻辑210可以至少部分地基于一或多个量度212来调整分配用于存储元数据122的高速缓存存储器120的数量。量度212可以被配置成量化高速缓存110上的工作负载适合于预取的程度。更具体地,量度212可以被配置成量化预取性能的各个方面(例如,可以包含一或多个预取性能量度212和/或与预取性能有关的量度212),如预取命中率、数量或有用预取、有用预取与无效预取的比率等。可替代地或另外地,量度212可以被配置成量化其它性能特性,包含高速缓存性能(例如,可以包含一或多个高速缓存性能量度212和/或与高速缓存性能有关的量度212),如高速缓存命中率、高速缓存未命中率等。
高速缓存逻辑210可以使用量度212来确定高速缓存110上的工作负载适合于预取的程度并且相应地对高速缓存存储器120进行动态分区。更具体地,高速缓存逻辑210可以至少部分地基于量度212中的一或多个量度来调整分配到第一部分124和/或第二部分126的高速缓存存储器120的量。高速缓存逻辑210可以周期性地监测量度212,并且可以响应于所述监测而确定是否修改第一部分124的大小。当量度212中的一或多个量度高于第一阈值时(当预取性能超过第一阈值时),高速缓存逻辑210可以增加分配到第一部分124的高速缓存存储器120的量,并且当所述一或多个量度212低于第二阈值时(当预取性能低于第二阈值时),所述高速缓存逻辑可以减少所述量。高速缓存逻辑210可以在后台操作中、在空闲时间段期间(当不主动地服务于请求202、不主动地实施预取操作等时)、按照所确定的时间表等来监测所述一或多个量度212。增加第一部分124的大小可以包含减小第二部分126的大小,而减小第一部分124的大小可以包含增加第二部分126的大小。更具体地,增加第一部分124的大小可以包含将第二部分126的一或多个高速缓存单元220重新分配到第一部分124,而减小第一部分124的大小可以包含将第一部分124的一或多个高速缓存单元220重新分配到第二部分126。修改第一部分124的大小可以包含修改包含在第一部分124中的高速缓存单元220的数目(例如,修改M),这可能引起修改包含在第二部分126中的高速缓存单元220的数目(例如,修改C,其中C=X-M)。
重新设置为元数据122分配的高速缓存存储器120的量的大小可以包含操纵元数据122和/或高速缓存数据128。减少为元数据122分配的高速缓存存储器120的量可以包含驱逐元数据122的部分。可以根据策略(元数据驱逐策略)驱逐元数据122。元数据驱逐策略可以指定,当第一部分124的大小减小时,元数据122的最旧和/或最近最少使用的条目将被驱逐。类似地,减小第二部分126的大小可以包含从一或多个高速缓存单元220中驱逐高速缓存数据128。可以根据策略(替换或驱逐策略)驱逐高速缓存数据128,所述策略可以包含但不限于:先进先出(FIFO)、后进先出(LIFO)、最近最少使用(LRU)、时间感知LRU(TLRU)、最近最多使用(MRU)、最不经常使用(LFU)、随机替换等。
高速缓存逻辑210、预取逻辑230和/或其组件和功能可以包含但不限于:电路系统、逻辑电路系统、控制电路系统、接口电路系统、输入/输出(I/O)电路系统、熔断逻辑、模拟电路系统、数字电路系统、逻辑门、寄存器、开关、多路复用器、算术逻辑单元(ALU)、状态机、微处理器、存储器内置处理器(PIM)电路系统等。高速缓存逻辑210可以被配置为高速缓存110的控制器(或高速缓存控制器)。预取逻辑230可以被配置为高速缓存110的预取器(或高速缓存预取器)。
图3展示了用于实施自适应性高速缓存分区的设备的另一个实例300。如本文所公开的,高速缓存110可以被配置成高速缓存与和存储器108相关联的地址空间有关的数据。在图3实例中,所述设备包含耦接在请求方201与存储器108之间的高速缓存110。在一些实施方案中,高速缓存110插置在请求方201与存储器108之间。高速缓存110可以包含和/或耦接到第一接口215A和/或第二接口215B。第一接口215A可以被配置成通过第一互连件105A接收与地址空间的地址204有关的请求202,并且如此可以被称为前端互连件。如本文所公开的,请求202可以对应于一或多个请求方201。第二接口215B可以被配置成尤其将高速缓存110(和/或高速缓存逻辑210)耦接到后备存储器(如存储器108),并且如此可以被称为后端接口。高速缓存数据128可以在传送操作203中加载到高速缓存110中,所述传送操作由和/或通过第二接口215B实施。可替代地,如图2所展示的,请求方201、高速缓存110和存储器108可以耦接到同一互连件。高速缓存存储器120可以包含多个高速缓存单元220(例如,X个高速缓存单元220-1到220-X)。高速缓存单元220可以包含存储器胞元、存储器行、存储器列、存储器页、高速缓存线、硬件高速缓存线、高速缓存存储器单元320、高速缓存标签326等。在一些实施方案中,高速缓存单元220被组织成多个集合,每个集合包含多个路,每个路包含和/或对应于相应的高速缓存单元220。
在图3实例中,每个高速缓存单元220包含相应的高速缓存存储器单元(CMU)320和/或高速缓存标签326和/或与其相关联。高速缓存标签326可以被配置成标识存储在CMU320内的数据。CMU 320可以能够存储与地址空间的一或多个地址204(一或多个可寻址数据单元)相关联的高速缓存数据128。在一些方面,每个CMU 320(和每个高速缓存单元220)能够存储U个地址204(或U个数据单元)的数据。在地址空间引用相应字节(是字节可寻址的)的实施方案中,每个CMU 320(和对应的高速缓存单元220)可以具有U个字节的容量。
高速缓存单元220可以进一步包含高速缓存元数据322和/或与其相关联。高速缓存单元220的高速缓存元数据322可以包含与存储在高速缓存单元220的CMU 320内的高速缓存数据128有关的信息(例如,与分别存储在高速缓存单元220-1到220-X的CMU 320-1到320-X内的高速缓存数据128有关的高速缓存元数据322-1到322-X)。高速缓存元数据322可以包含与高速缓存单元220的内容有关的任何适合的信息,包含但不限于:指示存储在高速缓存单元220的CMU 320内的高速缓存数据128是否有效的有效性信息、指示高速缓存数据128自从存储器108中加载后是否已被修改的“脏”标记(应在驱逐之前写入到存储器108)、访问计数、最后访问时间、访问频率、指示高速缓存数据128是否在预取操作中被加载的预取标记等等。在一些实施方案中,高速缓存单元220的高速缓存元数据322可以维持在高速缓存单元220的CMU 320内。可替代地,高速缓存元数据322可以维持在单独的高速缓存存储器资源内。
高速缓存逻辑210可以实施、包含和/或耦接到分区逻辑310,所述分区逻辑可以被配置成尤其将高速缓存存储器120分区成第一部分124和第二部分126(例如,将高速缓存存储器120划分为第一分区和第二分区)。高速缓存逻辑210可以被配置成映射、指配地址204和/或以其它方式使所述地址与分配到第二部分126的高速缓存单元220相关联。高速缓存逻辑210可以根据地址-高速缓存映射方案(地址映射方案316或地址映射逻辑)使地址204与高速缓存单元220相关联。在图3实例中,地址映射方案316可以在逻辑上将地址204划分为标签区域(地址标签206)和偏移区域205。偏移区域205可以定义在最低有效位(LSB)地址区域内。偏移区域205中包含的位数可以对应于高速缓存单元220的容量(例如,O=log2U,其中O是偏移区域205中包含的位数,并且U是高速缓存单元220的CMU 320的容量(就可寻址数据单元而言))。地址标签206可以定义在剩余的最高有效位(MSB)地址区域内。地址标签206(TA)中包含的位数可以为TA=AL-U,其中AL是地址204中包含的位数(例如,64位)。尽管示例地址204、偏移区域205和地址标签206在本文中参考大端格式展示和描述,但是本公开并不限于这一点并且可以适于以任何适合的格式、编码或字节序与地址204一起使用。
高速缓存逻辑210可以被配置成使用任何适合的地址映射方案316(或映射逻辑)将地址标签206映射到高速缓存单元220,所述地址映射方案包含但不限于:模方案(IU=TA%C,其中IU是高速缓存单元220的索引,地址标签(TA)206在C高速缓存单元220的集合或组内映射到所述索引)、映射函数(例如,根据IU=fU(TA,C),其中fU是将地址标签(TA)206映射到一组C可用高速缓存单元220内的索引IU的函数)、散列函数(例如,根据IU=fh(TA,C),其中fh是通过从地址标签(TA)206中导出的散列值将地址标签(TA)206映射到索引IU的函数)、直接映射、完全关联映射、集合关联映射等。高速缓存逻辑210可以针对地址204查找高速缓存单元220和/或确定高速缓存存储器120是否包含对应于地址204的有效数据(例如,确定地址204是高速缓存命中还是高速缓存未命中)。高速缓存逻辑210可以尤其通过将地址204的地址标签206与高速缓存单元220的高速缓存标签326相匹配来为相应地址204查找高速缓存单元220。与高速缓存标签326相匹配的地址204可以被标识为高速缓存命中,而与高速缓存标签326不匹配的地址204可以被标识为高速缓存未命中。在一些实施方案中,高速缓存逻辑210实施层级的或基于集合的地址映射方案316,在所述地址映射方案中,地址标签206首先被映射到多个集合中的一个集合,并且然后与所述集合中的多个路的高速缓存标签326进行比较,每个路对应于相应的高速缓存单元220。
如本文所公开的,高速缓存逻辑210可以包含和/或耦接到预取逻辑230,所述预取逻辑可以利用与地址空间有关的元数据122来预测即将到来的请求202的地址并将对应于所预测的地址的数据预取到高速缓存存储器120中。元数据122的至少一部分可以维持在高速缓存存储器120内。高速缓存逻辑210可以包含、实施和/或耦接到分区逻辑310,所述分区逻辑可以被配置成将高速缓存存储器120划分为第一部分124和第二部分126(对高速缓存存储器120进行分区)。第一部分124可以被分配用于与地址空间有关的元数据122。分区逻辑310可以将高速缓存存储器120的剩余可用容量(第二部分126)用作可用高速缓存容量。如本文所公开的,高速缓存逻辑210可以使用高速缓存存储器120的第二部分126来维持高速缓存数据128。
分区逻辑310可以被配置成将高速缓存存储器120划分为包括高速缓存存储器120的高速缓存存储器资源的第一部分124的第一分区(例如,高速缓存单元220的第一数量)以及包括所述高速缓存存储器资源的第二部分126的第二分区(例如,高速缓存单元220的第二数量)。高速缓存存储器120的第一部分124可以被分配用于存储与地址空间有关的元数据122,并且第二部分126可以被分配为高速缓存110的可用高速缓存容量(例如,分配用于存储高速缓存数据128)。分区逻辑310可以被配置成至少部分地基于指示预取性能和/或由高速缓存110服务的工作负载适合于预取的程度的量度212来调整分配到第一部分124和/或第二部分126的高速缓存存储器资源的数量。分区逻辑310可以被配置成将零或多个高速缓存单元220分配到第一部分124,并且将一或多个高速缓存单元220分配到第二部分126。
在图3所展示的实例300中,高速缓存逻辑210(和/或分区逻辑310)将高速缓存存储器120的X个可用高速缓存单元220中的M个高速缓存单元220分配到第一部分124,使得C个高速缓存单元220被分配到第二部分126,其中C=X-M。高速缓存存储器120的第一部分124可以包含高速缓存单元220-1到220-M,并且第二部分126可以包含高速缓存单元220-M+1到220-X。然而,本公开并不限于这一点,并且可以以任何适合的模式或根据任何适合的方案或布置对高速缓存存储器120进行分区和/或分配高速缓存单元220。
高速缓存逻辑210可以实施、包含和/或耦接到元数据映射方案314(和/或元数据映射逻辑),所述元数据映射方案可以被配置成映射、寻址、关联、引用分配到第一部分220的高速缓存单元220和/或以其它方式提供对所述高速缓存单元的访问。元数据映射方案314可以使预取逻辑230(或外部预取器)能够访问维持在高速缓存存储器120的第一部分124内的元数据122。在一些实施方案中,由高速缓存逻辑210(和/或分区逻辑310)实施的元数据映射方案314将元数据地址映射到分配到第一部分124的高速缓存单元220(和/或相应高速缓存单元220内的偏移)。元数据映射方案314可以定义元数据地址空间(MA),MA∈{0,…,(M·U)-1},其中U是高速缓存单元220的容量(CMU 320的容量),并且M是分配到第一部分124的高速缓存单元220的数量。可替代地或另外地,元数据地址空间(MA)可以定义高速缓存单元索引(MI)的范围,每个索引对应于分配到第一部分124的M个高速缓存单元220中的相应一个,MA∈{0,…,M-1}。尽管本文描述了元数据映射方案314(和/或元数据寻址和/或访问方案)的实例,但本公开并不限于这一点并且可以适于通过任何适合的机构或技术提供对分配到第一部分124的高速缓存存储器120的访问。
将高速缓存存储器120分区成多个部分(例如,第一部分124和第二部分126)可以包含配置所述部分的映射逻辑和/或映射方案以分配、包含和/或并入高速缓存存储器120的指定的高速缓存存储器资源。如本文所使用的,“分配”、“分区”或“指配”高速缓存存储器120的一部分(或将高速缓存存储器资源“分配”、“分区”或“指配”给高速缓存存储器120的部分或分区)可以包含将所述部分(或分区)的映射逻辑和/或映射方案配置成“包含”或“引用”所述高速缓存存储器资源。将映射逻辑和/或映射方案配置成“包含”或“引用”分配到高速缓存存储器120的所述部分或所述分区的高速缓存存储器资源可以包含将所述映射逻辑和/或映射方案配置成引用、分配、包含、并入、添加、映射、寻址、关联和/或以其它方式访问(或提供对所述高速缓存存储器资源的访问)所述高速缓存存储器资源。将高速缓存存储器资源分配到高速缓存存储器120的部分或分区(例如,第一部分124)可以进一步包含从高速缓存存储器120的其它分区或部分(例如,第二部分126)中“解除分配”、“移除”或“排除”存储器资源。如本文所使用的,从高速缓存存储器120的部分或分区中“解除分配”、“移除”或“排除”高速缓存存储器资源可以包含将所述部分(或分区)的映射逻辑和/或映射方案配置成“移除”、“排除”或“解除引用”所述高速缓存存储器资源。将映射逻辑和/或映射方案配置成“移除”、“排除”或“解除引用”高速缓存存储器资源可以包含将所述映射逻辑和/或所述映射方案配置成从所述分区或所述部分中移除、禁用、忽略、解除分配、解除引用、解除映射、绕过和/或以其它方式排除所述高速缓存存储器资源(例如,防止所述高速缓存存储器资源由和/或通过所述映射逻辑和/或所述映射方案访问)。
在图3实例中,高速缓存逻辑210(和/或分区逻辑)可以被配置成将M个高速缓存单元220分配到高速缓存存储器120的第一部分124(例如,高速缓存单元220-1到220-M)。如本文所公开的,将M个高速缓存单元220分配到第一部分124可以包含将元数据映射方案314(和/或元数据映射逻辑)配置成包含和/或引用高速缓存单元220-1到220-M。将M个高速缓存单元分配到第一部分124可以进一步包含从第二部分126中解除分配和/或排除M个高速缓存单元220。从高速缓存存储器120的第二部分126中解除分配或排除高速缓存单元220-1到220-M可以包含将地址映射方案316配置成移除、排除和/或解除引用高速缓存单元220-1到220-M。地址映射方案316可以被配置成使得地址204(和/或地址标签206)不映射到分配到第一部分124的高速缓存单元220。在图3实例中,地址映射方案316可以被配置成索引高速缓存存储器120的X个可用高速缓存单元220的子集,所述子集包含C个高速缓存单元220,其中C=X-M(例如,高速缓存单元220-M+1到220-X),并且排除分配到第一部分124的M个高速缓存单元220(例如,高速缓存单元220-1到220-M)。在一些实施方案中,可以尤其通过禁用与高速缓存单元220相关联的高速缓存标签326从地址映射方案316中排除高速缓存单元220。因此,将高速缓存单元220-1到220-M分配到高速缓存存储器120的第一部分124可以包含禁用高速缓存标签326-1到326-M。在图3中,分配到高速缓存存储器120的第一部分124(并且从第二部分126和/或地址映射方案316中排除)的高速缓存单元220的高速缓存标签326用交叉影线突出显示。在地址映射方案316中,地址标签206可以保持启用和/或索引包含在高速缓存存储器120的第二部分126中的对应于高速缓存单元220-M+1到220-X的高速缓存标签326-M+1到326-X。
在一些方面,高速缓存逻辑210(和/或分区逻辑310)根据分区方案312对高速缓存存储器120进行分区。分区方案312可以在逻辑上定义如何在高速缓存存储器120的第一部分124与第二部分126之间划分高速缓存存储器资源。分区方案312也可以在逻辑上定义如何在分区之间分配高速缓存资源。分区方案312可以定义可以在第一部分124与第二部分126之间对高速缓存存储器120进行动态分配和/或分区所使用的规则、方案、逻辑和/或标准。分区方案312可以被进一步配置成指定将分别分配到第一部分124和/或第二部分126的高速缓存存储器资源的量、数量和/或容量。适应分区方案312可以包含修改分配到第一部分124和/或第二部分126的高速缓存存储器资源的量、数量和/或容量。在图3实例中,分区方案312分配M个高速缓存单元220以存储元数据(例如,将M个高速缓存单元220分配到第一部分124),并且将X-M个高速缓存单元220分配为可用高速缓存容量(例如,将剩余的X-M个高速缓存单元220分配到第二部分126)。
在一些实施方案中,分区方案312将高速缓存逻辑210(和/或分区逻辑310)配置成将高速缓存单元220分配到第一部分124(可以根据高速缓存单元或基于高速缓存单元的方案对高速缓存存储器120进行分区)。分区方案312可以按高速缓存单元地址或索引顺序地分配高速缓存单元220。在顺序分区方案312中,将M个高速缓存单元220分配到第一部分124可以包含将高速缓存单元220-1到220-M分配到第一部分124,使得高速缓存单元220-M+1到220-X被分配到第二部分126,如图3所展示的。增加第一部分124的大小可以包含将另外的高速缓存单元220顺序地分配到第一部分124。在顺序方案中,将分配到第一部分124的高速缓存单元220的量从M个高速缓存单元220增加到M+R个高速缓存单元220(例如,将第一部分124的大小增加R个高速缓存单元220)可以包含将高速缓存单元220-M+1到220-M+R从第二部分126分配到第一部分124。因此,第一部分124可以包含高速缓存单元220-1到220-M+R,并且第二部分126可以包含高速缓存单元220+M+R+1到220-X。相反,将第一部分124的大小从M个高速缓存单元220减小到M-R个高速缓存单元220(例如,将第一部分124的大小减小R个高速缓存单元220)可以包含将高速缓存单元220-M-R到220-M从第一部分124分配到第二部分126。因此,第一部分124可以包含高速缓存单元220-1到220-M-R,并且第二部分126可以包含高速缓存单元220+M-R+1到220-X。
尽管本文描述了分区方案312的实例,但本公开并不限于这一点。在其它实施方案中,分区方案312可以将高速缓存逻辑210(和/或分区逻辑310)配置成以其它模式、顺序和/或方案分配高速缓存单元220。在一个实例中,分区方案312可以定义交错分配模式、模模式、散列模式,可以根据高速缓存存储器120的硬件结构和/或高速缓存存储器120的高速缓存单元220组织的方式来分配高速缓存单元220等。
在一些实施方案中,高速缓存存储器120包含多个集合,每个集合包含多个路,每个路包含和/或对应于相应的高速缓存单元220。分区方案312可以通过路、集合等分配高速缓存存储器资源。在基于路的方案中,高速缓存逻辑210(和/或分区逻辑310)可以通过路对高速缓存存储器120进行分区。在一个实例中,高速缓存逻辑210可以将一或多个集合内的第一数量的零或多个路分配到第一部分124,并且可以将一或多个集合内的第二数量的一或多个路分配到第二部分126。在另一个实例中,第一部分124包含高速缓存存储器120的每个集合内的第一数量的零或多个路,并且第二部分126包含每个集合内的第二数量的一或多个路。在包含N路集合的高速缓存存储器120中(例如,每个集合包含N路的高速缓存单元220),第一部分124可以包含每个集合内的第一组路,并且第二部分126可以包含每个集合内的第二组路(例如,可以包含未分配到第一部分124的路)。通过路将M个高速缓存单元220分配到高速缓存存储器120的第一部分124可以包含将W1路分配到每个集合内的第一部分,其中
Figure BDA0003178038040000251
并且S是包含在所述高速缓存存储器中的集合的数量。可以将每个集合内的W2路分配到第二部分126,其中W2=N-W1
Figure BDA0003178038040000252
并且N是每个集合内的路的数目。第一部分124可以包含每个集合内的路1到W1,并且第二部分126可以包含每个集合内的路W1+1到N。然而,本公开并不限于这一点,并且可以以任何适合的方式、方案和/或模式在第一部分124与第二部分126之间分配路。
在基于路的方案中,将分配到第一部分124的高速缓存存储器120的量从M个高速缓存单元220增加到M+R个高速缓存单元可以包含将每个集合的另外的W1A路分配到第一部分124(并且从第二部分126中解除分配每个集合的W1A路),其中
Figure BDA0003178038040000253
因此,第一部分124可以包含每个集合内的路1到W1+W1A,并且第二部分126可以包含每个集合内的路W1+W1A+1到N。相反,将分配到第一部分124的高速缓存存储器120的量从M个高速缓存单元220减少到M-R个高速缓存单元可以包含将每个集合的W2A路从第一部分124分配到第二部分126,其中
Figure BDA0003178038040000261
因此,第一部分124可以包含每个集合内的路1到W1-W2A,并且第二部分126可以包含每个集合内的路W1-W2A+1到N。
可替代地或另外地,高速缓存逻辑(和/或分区逻辑310)可以被配置成通过集合对高速缓存存储器120进行分区。分配集合可以包含分配所述集合的每个路(和/或对应的高速缓存单元220)。在基于集合的方案中,第一部分124可以包含高速缓存存储器120的零或多个集合的第一组,并且第二部分126可以包含所述集合中的一或多个集合的第二组(可以包含未分配到第一部分124的高速缓存存储器120的每个集合)。通过集合将高速缓存存储器120的M个高速缓存单元220分配到第一部分124可以包含将E1集合分配到所述第一部分124,其中
Figure BDA0003178038040000262
并且N是包含在每个集合中的路的数目,使得E2集合被分配到第二部分126,其中E2=S-E1,并且S是包含在高速缓存存储器120中的集合的数目。第一部分124可以包含高速缓存存储器120的集合1到E1,并且第二部分126可以包含集合E1+1到S。然而,本公开并不限于这一点,并且可以以任何适合的方式、方案和/或模式在第一部分124与第二部分126之间分配集合。
在基于集合的方案中,将分配到第一部分124的高速缓存存储器120的量从M个高速缓存单元220增加到M+R个高速缓存单元可以包含将高速缓存存储器120的另外的E1A集合分配到第一部分124(并且从第二部分126中解除分配E1A集合),其中
Figure BDA0003178038040000263
因此,第一部分124可以包含集合1到E1+E1A,并且第二部分126可以包含集合E1+E1A+1到S。相反,将分配到第一部分124的高速缓存存储器120的量从M个高速缓存单元220减少到M-R个高速缓存单元可以包含将E2A集合从第一部分124分配到第二部分126,其中
Figure BDA0003178038040000264
因此,第一部分124可以包含集合1到E1-E2A,并且第二部分126可以包含集合E1-E2A+1到S。
如本文所公开的,高速缓存逻辑210(和/或分区逻辑310)可以至少部分地基于一或多个量度212来调整分配到第一部分124(和/或第二部分126)的高速缓存存储器120的量。量度212可以被配置成量化高速缓存110上的工作负载适合于预取的程度。量度212可以被配置成量化预取性能的各个方面。高速缓存逻辑210(和/或预取逻辑310)可以确定和/或监测预取性能的任何适合的方面,如预取命中率、预取未命中率、有用预取的数量、无效预取的数量、有用预取与无效预取的比率等。预取命中率可以通过跟踪对高速缓存存储器120内的所预取的高速缓存数据128的访问来确定。如本文所使用的,“所预取的”高速缓存数据128是指在(例如,通过预取逻辑230和/或在预取操作中)请求之前被加载到高速缓存存储器120中的高速缓存数据128。相反,未预取的高速缓存数据128是指响应于请求202、高速缓存未命中等而加载的高速缓存数据128。在一些实施方案中,高速缓存逻辑210通过使用高速缓存元数据322来跟踪所预取的高速缓存数据128。高速缓存逻辑210可以在高速缓存元数据322中记录预取标记或其它指示符,以区分所预取的高速缓存数据128与未预取的高速缓存数据128。可以基于维持在高速缓存元数据322内的所预取的高速缓存数据128的访问量度(如访问计数、访问频率、最后访问时间等)来确定预取命中率。可替代地或另外地,预取未命中率可以通过标识不具有访问或访问低于阈值数量或频率的所预取的高速缓存数据128来确定。
在一些方面,量度212被进一步配置成量化高速缓存性能的其它方面,如高速缓存命中率、高速缓存未命中率、请求等待时间等等。高速缓存逻辑210可以被配置成确定和/或监测高速缓存性能的各个方面。高速缓存逻辑210可以被配置成尤其通过监测引起高速缓存命中的请求202的数量、监测引起高速缓存未命中的请求202的数量等来确定高速缓存命中率。
在一些实施方案中,一或多个量度212被配置成量化地址空间的相应区域内的高速缓存和/或预取性能的各个方面。高速缓存逻辑210(和/或预取逻辑230)可以确定和/或监测由元数据122的相应条目覆盖的地址空间的区域内的预取性能。因此,量度212可以量化地址空间的相应区域内的工作负载适合于预取的程度。预取逻辑230可以利用量度212来确定是否实施在相应地址区域内进行预取、相应地址区域的预取程度、为相应地址区域维持的元数据122的量等。
高速缓存逻辑210(和/或分区逻辑310)可以利用一或多个量度212对高速缓存存储器120进行动态分区。更具体地,高速缓存逻辑210可以利用量度212来确定、微调、适应和/或以其它方式管理分配用于存储与地址空间有关的元数据122的高速缓存存储器120的量(分配到第一部分124的高速缓存存储器120的量)和/或分配用于存储高速缓存数据128的高速缓存存储器120的量(分配到第二部分126的高速缓存存储器120的量)。高速缓存逻辑210(和/或分区逻辑310)可以被配置成:a)当量度212中的一或多个量度超过第一阈值时,增加分配到第一部分124的高速缓存单元220的数量(由此减少分配用于存储第二部分126内的高速缓存数据128的高速缓存单元220的数量);或b)当量度212中的一或多个量度低于第二阈值时,减少分配到第一部分124的高速缓存单元220的数量(由此增加分配用于存储第二部分126内的高速缓存数据128的高速缓存单元220的数量)。由于量度212可以被配置成量化预取性能,因此由高速缓存逻辑210实施的调整可以基于由高速缓存110服务的工作负载适合于预取的程度来在第一部分124(元数据122)与第二部分126(高速缓存数据128)之间动态分配高速缓存存储器资源。高速缓存逻辑210可以在适合于预取的工作负载条件下增加为元数据122分配的高速缓存存储器120的量,并且可以在不适合于预取的工作负载条件下减少(或消除)所述分配,由此在为不适合的工作负载服务时增加可用高速缓存容量的量。
增加分配到第一部分124的高速缓存单元220的数量可以包含将第二部分126的一或多个高速缓存单元220指配或分配到第一部分124。如本文所公开的,将高速缓存单元220分配到第一部分124可以包含将元数据映射方案314(和/或元数据映射逻辑)配置成包含高速缓存单元220,从而向预取逻辑230提供对高速缓存单元220(或其CMU 320)的访问和/或以其它方式使高速缓存单元220的CMU 320可用于存储与地址空间有关的元数据122。
将高速缓存单元220分配到高速缓存存储器120的第一部分124可以进一步包含从第二部分126中解除分配高速缓存单元220。从高速缓存存储器120的第二部分126中解除分配高速缓存单元220可以包含将地址映射方案316(和/或地址映射逻辑)配置成移除或排除高速缓存单元220。地址映射方案316可以被配置成解除引用高速缓存单元220,使得从包含在第二部分126中的C个高速缓存单元220中排除高速缓存单元220。地址映射方案316可以被修改成从索引或其它机构中移除高速缓存单元220,地址204和/或地址标签206通过所述索引或其它机构与高速缓存单元220相关联(例如,通过禁用高速缓存单元220的高速缓存标签326)。从第二部分126中解除分配高速缓存单元220可以进一步包含从高速缓存单元220中驱逐高速缓存数据128,将高速缓存元数据322的有效性标记设置为“假”等。在一些实施方案中,从第二部分126中解除分配高速缓存单元220进一步包含标识高速缓存单元220内的“脏”高速缓存数据128(至少部分地基于与高速缓存数据128相关联的高速缓存元数据322,如“脏”指示符)以及将所标识的高速缓存数据128(如果有的话)清除和/或降级到如存储器108等后备存储器(例如,将所标识的高速缓存数据128写回到存储器108)。
高速缓存逻辑210(和/或分区逻辑310)可以被配置成在对高速缓存存储器120进行重新分区以增加第一部分124的大小和/或减小第二部分126的大小时保持高速缓存状态。当减少分配到第二部分126的高速缓存存储器120的量时,高速缓存逻辑210可以尤其通过压缩存储在第二部分126内的高速缓存数据128以将所述高速缓存数据存储在更少的高速缓存单元220内来保持高速缓存状态。将R个高速缓存单元220从高速缓存存储器120的第二部分126分配到第一部分124可以包含将存储在高速缓存存储器120的第二部分126内的高速缓存数据128从对应于C1个高速缓存单元220的当前大小压缩到对应于C2个高速缓存单元220的压缩大小,其中C2=C1-R。压缩高速缓存数据128可以包含驱逐当前存储在高速缓存存储器120的第二部分126内的高速缓存数据128的第一子集,所述第一子集包含相当于R个高速缓存单元220的高速缓存数据128(和/或存储在当前分配到第二部分126的R个高速缓存单元220内的高速缓存数据128)的量。可以基于适合的驱逐或替换策略和/或标准(如FIFO、LIFO、LRU、TLRU、MRU、LFU、随机替换等)来选择高速缓存数据128的第一子集以进行驱逐。从高速缓存单元220中驱逐高速缓存数据128可以使高速缓存单元220可用于存储其它高速缓存数据128(将高速缓存单元128从“占用”转变为“可用”或空)。高速缓存逻辑210(和/或分区逻辑310)可以被进一步配置成将要分配到第一部分124(如果有的话)的存储在高速缓存单元220内的剩余的高速缓存数据128移动到将保持分配到第二部分126的可用高速缓存单元220。
在一些实施方案中,将包含X个高速缓存单元220的高速缓存存储器120的第一部分124的大小从M个高速缓存单元220增加到M+R个高速缓存单元220可以包含:a)选择第二部分126的高速缓存单元220以分配到第一部分124(例如,选择R个高速缓存单元220以进行重新分配);b)从当前分配到第二部分126的C个高速缓存单元220的R个高速缓存单元220中驱逐高速缓存数据128(其中C=M-X);c)将存储在所选高速缓存单元220(如果有的话)内的高速缓存数据128移动到C-R个高速缓存单元220的可用高速缓存单元220以保持分配到第二部分126;以及d)将R个所选高速缓存单元220从第二部分126分配到第一部分124。选择用于驱逐的高速缓存单元220可以不同于选择用于重新分配的高速缓存单元220。如本文所公开的,高速缓存逻辑110可以基于驱逐或替换策略来选择高速缓存单元220以进行驱逐。相比之下,高速缓存逻辑110(和/或分区逻辑310)可以基于单独的、独立的标准选择高速缓存单元220以将其从第二部分126重新分配到第一部分124(或反之亦然)。如本文所公开的,可以根据分区方案312来选择从第二部分126重新分配到第一部分124(或反之亦然)的高速缓存单元220。分区方案312可以定义在第一部分124与第二部分126之间划分(和/或动态分配)高速缓存单元220所使用的规则、方案、逻辑和/或其它标准。分区方案312可以以任何适合的模式或方案划分高速缓存存储器120,所述模式或方案包含但不限于:序列方案、基于路的方案、基于集合的方案等。
减少分配到第一部分124的高速缓存单元220的数量可以包含增加分配到第二部分126的高速缓存单元220的数量(例如,增加可用高速缓存容量)。减小第一部分124的大小可以包含将一或多个高速缓存单元220从第一部分124指配或分配到第二部分126。将高速缓存单元220分配到第二部分126可以包含从元数据映射方案314中移除高速缓存单元220,使得高速缓存单元220不再包含在可用于存储元数据122的M个高速缓存单元220的组中(例如,修改元数据地址方案MA)。将高速缓存单元220分配到第二部分126可以进一步包含修改地址映射方案316以引用高速缓存单元220(例如,将高速缓存单元220包含在可用于存储高速缓存数据128的C个高速缓存单元220的组中)。地址映射方案316可以被修改成尤其通过启用高速缓存单元220的高速缓存标签326来使地址204和/或地址标签206能够映射和/或指配到高速缓存单元220。
减少分配到第一部分124的高速缓存单元220的数量可以减少可用于存储元数据122的高速缓存存储器120的量。因此,减小第一部分124的大小可以包含压缩元数据122以将其存储在更少量的高速缓存存储器120内。元数据122可以被压缩以存储在较小存储器范围内(例如,从第一大小M1到较小的第二大小M2)。压缩元数据122可以包含移除元数据122的一部分,如元数据122的一或多个条目。可以基于移除标准(如阶段标准(最旧的先移除、最新的先移除等)、最近最少访问标准、最不常访问标准等)来选择元数据122的所述部分。
可替代地或另外地,可以至少部分地基于一或多个量度212来选择元数据122的各个部分以进行移除。元数据122可以包含多个条目,每个条目包含与地址空间的相应区域有关的访问信息。预取逻辑230可以利用元数据122的相应条目来在由所述相应条目覆盖的地址区域内实施预取操作。所述一或多个量度212可以被配置成量化由元数据122的相应条目所覆盖的地址区域内的预取性能。压缩元数据122可以包含至少部分地基于由所述条目覆盖的地址区域内的如由量度212所量化的预取性能来选择元数据122的条目以进行移除。在一些实施方案中,可以移除预取性能低于阈值的元数据122的条目(和/或可以减少分配到所述条目的存储器容量的量)。可替代地,可以保留表现出较高预取性能的元数据122的条目,而可以移除表现出较低预取性能的条目(例如,可以选择元数据122的R个性能最低的条目以进行移除)。因此,压缩元数据可以包含从一或多个高速缓存单元220中移除元数据122和/或将元数据122(和/或元数据122的条目)从重新分配到第二部分126的高速缓存单元220移动到分配到第一部分124的剩余高速缓存单元220。
图4-1展示了用于实施自适应性高速缓存分区的设备的另一个实例400。设备400包含高速缓存110,所述高速缓存被配置成高速缓存与和存储器108相关联的地址空间有关的数据。高速缓存110可以包含和/或耦接到一或多个互连件。在图4-1实例中,高速缓存110包含和/或耦接到被配置成将高速缓存110耦接到第一互连件105A的第一接口215A和被配置成将高速缓存110耦接到第二互连件105B的第二接口215B。高速缓存110可以被配置成服务于来自一或多个请求方201的与地址空间的地址204有关的请求202。高速缓存110可以通过使用高速缓存存储器120服务于请求202,所述请求可以包含在传送操作203中加载与地址空间的地址204相关联的数据。可以响应于高速缓存未命中、预取操作等而实施所述传送操作。高速缓存110可以包含和/或耦接到接口215,所述接口可以被配置成将高速缓存110(和/或高速缓存逻辑210)耦接到一或多个互连件,如互连件105A和/或105B。
在图4-1实例中,高速缓存存储器120包含多个高速缓存单元220,每个高速缓存单元220包含和/或对应于相应的高速缓存线。高速缓存单元220可以被布置成多个集合430(例如,集合430-1到430-S)。集合430可以是N路关联的;每个集合430可以包含N个路420,每个路420包含和/或对应于相应的高速缓存单元220(相应的高速缓存线)。如所展示的,每个集合430可以包含N个路420-1到420-N,每个路420包含和/或对应于相应的高速缓存单元220。高速缓存存储器120可以包含X个高速缓存单元220(或X个高速缓存线),其中X=S·N。
由高速缓存逻辑210实施的地址映射方案316(或地址映射逻辑)可以被配置成将地址204划分成偏移量205、集合区域(集合标签406)和地址标签206。如本文所公开的,偏移量205可以对应于高速缓存单元220的容量(例如,CMU 320的容量)。地址映射方案316可以利用集合标签406来使地址204与相应的集合430相关联。在一些方面,地址映射方案316包含集合映射方案,通过所述集合映射方案,集合标签406被映射到一组可用集合(SC)、SC{420-1、……、420-S}中的一个集合,如下SI=fS(TS,SC),其中fs是集合映射函数,TS是集合标签406,并且SI是所选集合430的索引或其它标识符。地址映射方案316可以进一步包含路映射方案,通过所述路映射方案,地址标签206被映射到所选集合430的N个路420中的一个路(例如,通过将地址标签206与路420的高速缓存标签326进行比较)。
高速缓存逻辑210可以包含、实施和/或耦接到分区逻辑310,所述分区逻辑可以被配置成将高速缓存存储器120分区成第一部分124和第二部分126。如本文所公开的,第一部分124可以被分配用于存储与地址空间有关的元数据122,并且第二部分126可以被分配用于存储高速缓存数据128(可以被分配为可用的高速缓存容量)。高速缓存逻辑210可以根据分区方案312在第一部分124与第二部分126之间分配高速缓存存储器120。分区方案312可以指定将为元数据122分配的高速缓存存储器120(第一部分124)的量。分区方案312还可以指定将高速缓存单元220分配到第一部分124和/或第二部分126的方式。在图4-1实例中,高速缓存逻辑210被配置成通过路420对高速缓存存储器120进行分区(可以实施基于路的或路分区方案312-1)。路分区方案312-1可以指定,为第一部分124分配高速缓存存储器120的零或多个集合430内的零或多个路420。在一些实施方案中,路分区方案312-1指定,为第一部分124分配高速缓存存储器120的每个集合430内的零或多个路420。
在一些实施方案中,高速缓存存储器120包含多个库(例如,SRAM库)。可以在相应的库内组织高速缓存存储器120的路420。更具体地,每个集合430的路420可以跨高速缓存存储器120的多个库进行分割。在一些实例中,每个路420可以由所述库中的相应的库实施:每个集合430-1到430-S的路420-1可以由第一库实施,每个集合430-1到430-S的路420-2可以由第二库实施等等,其中每个集合430-1到430-S的路420-N由高速缓存存储器120的第N个库实施。高速缓存存储器120的库可以包含单独的存储器块。因此,为元数据122分配的第一部分124可以包含高速缓存存储器120的零或多个库(或块)。元数据映射方案314可以将分配到第一部分124的库寻址为线性(或平坦的)存储器组块。因此,元数据映射方案314可以使元数据122能够以任何适合的方式布置和/或组织(例如,如由预取器、预取器逻辑230等所指定的)。
在图4-1实例中,分区方案312-1将每个集合430内的两个路420分配到预取逻辑230。因此,分配用于存储元数据122的高速缓存存储器120的第一部分124可以包含每个集合430-1到430-S内的路420-1和420-2(可以包含M个高速缓存单元220,其中M=2·S)。可用于存储高速缓存数据128的高速缓存存储器120的第二部分126可以包含每个集合430-1到430-S内的N-2个路(可以包含C个高速缓存单元220,其中M=(N-2)·S)。在图4-1到4-3中,用交叉影线展示了分配到第一部分124的路420(和/或高速缓存单元220),以将其与分配到第二部分126的路420区分开来。如所展示的,第一部分124可以包含高速缓存存储器120的每个集合430-1到430-S内的第一部分124-1到124-S,并且第二部分126可以包含集合430-1到430-S内的第二部分126-1到126-S。
将高速缓存单元220(或路420)分配到第一部分124可以包含将地址映射方案316配置成禁用或忽略高速缓存单元220。在图4-1中,每个集合430的两个路420被分配到第一部分124,并且地址映射方案316适于禁用或忽略每个集合430的路420-1和420-2(例如,通过禁用对应的高速缓存单元220-1和220-2的高速缓存标签326-1和326-2)。在图4-1实例中,可用于存储高速缓存数据128(SC)的集合430的数量可以基本上不变。如所展示的,高速缓存存储器120的第二部分126可以包含S个集合430,每个集合包含N-2个路420(路420-3到420-N)。因此,地址映射方案316可以在高速缓存存储器120的S个集合430之间分配地址204(通过集合标签406等)。由高速缓存逻辑210(和/或地址映射方案316)实施的路映射方案可以适于修改集合430的关联性。在图4-1实例中,地址映射方案316将集合430管理为[N-2]路关联的,而不是N路关联的。更具体地,地址映射方案316将N-2个地址标签206映射到相应的集合430而不是N个地址标签206。
如本文所公开的,将路420分配到第一部分124可以包含从路420中驱逐高速缓存数据128。如本文所公开的,可以根据驱逐或替换策略选择高速缓存数据128以从相应的集合430中驱逐。将集合430的R个路420分配到第一部分124可以包含将存储在集合430内的高速缓存数据128从N个高速缓存单元220的容量压缩到N-R个高速缓存单元220的容量。高速缓存逻辑210可以选择高速缓存数据128以将其保留在相应集合430内,并将所选高速缓存数据128移动到相应集合430的将保持分配到第二部分126的N-R个路429。在图4-1实例中,将每个集合430的路420-1和420-2分配到第一部分124可以包含尤其通过从集合430的两个路420的第一组中驱逐高速缓存数据128(使得保留集合430的N-2个路420的第二组)、将存储在路420的第二组内的高速缓存数据128移动到集合430的路420-3到430-N(如果必要的话)并且将路420-1和420-2指配给第一部分124来将每个集合430内的高速缓存数据128从N个高速缓存单元220的容量压缩到N-2个高速缓存单元220的容量。
可以根据元数据映射方案314访问维持在高速缓存存储器120的第一部分124内的元数据122。在图4-1实例中,元数据映射方案314可以定义元数据地址空间(MA),所述元数据地址空间包含每个集合430-1到430-S的路420-1和420-2。例如,元数据地址空间(MA)可以包含地址范围{0,…,(R·U·S)-1},其中R是分配到S个集合430中的每个集合内的第一部分124的路420的数目,并且U是每个路420的容量(就可寻址数据单元而言)。可替代地,元数据地址空间(MA)可以定义对应于第一部分124的相应路420(或高速缓存单元220)的索引和/或偏移量的地址,如下{0,…,(R·S)-1}。
高速缓存逻辑210(和/或预取逻辑230)可以被配置成确定和/或监测一或多个量度212。如本文所公开的,量度212可以被配置成量化高速缓存和/或预取性能。高速缓存逻辑210(和/或分区逻辑310)可以至少部分地基于量度212中的一或多个量度来调整路分区方案312-1。高速缓存逻辑210可以将路分区方案312-1调整成:当量度212中的一或多个量度超过第一阈值时增加第一部分124的大小(并减小第二部分126的大小),或者当量度212中的一或多个量度低于第二阈值时,减小第一部分124的大小(并增加第二部分126的大小)。增加第一部分124的大小可以包含增加分配到高速缓存存储器120的每个集合430内的第一部分124的路420的数目。减小第一部分124的大小可以包含减少分配到高速缓存存储器120的每个集合430内的第一部分124的路420的数目。
图4-2展示了实例401,在所述实例中,增加了分配用于存储与地址空间有关的元数据122的路420的数目(例如,从每个集合430内的两个路420增加到每个集合430内的三个路420)。可以响应于确定和/或监测量度212(例如,响应于由超过第一阈值的量度212所量化的预取性能)而增加分配到第一部分124的高速缓存存储器120的量。如所展示的,分配用于存储元数据122的第一部分124可以包含每个集合430-1到430-S的路420-1到420-3。可用于存储元数据122的容量可以增加到M=3·S·U,其中U是在可寻址数据单元方面的高速缓存单元220(或CMU 320)的容量。将路420-3分配到第一部分124可以包含修改元数据映射方案314以引用每个集合430内的路420-3(例如,定义元数据地址方案,包含地址0到(3·S·U)-1、路索引0到(3·S)-1等)。
如图4-2所展示的,增加第一部分124的大小可以引起分配用于存储高速缓存数据128的高速缓存存储器120的量减少(减小第二部分126的大小)。如本文所公开的,将每个集合430的路420-3分配到第一部分124可以包含将存储在每个集合430内的高速缓存数据128压缩到N-3个路420中(通过在每个集合430内选择高速缓存数据128以进行驱逐并且移动数据以保留在每个集合430的路420-3到420-N的每个[N-3]关联集合430内)。分配路420-3可以进一步包含修改地址映射方案316以使地址204与[N-3]路关联集合430相关联,而非与[N-2]或N路关联集合430相关联。将每个集合430的路420-3分配到第一部分124可以包含禁用每个集合430内的路420-3的高速缓存标签326-3。
图4-3展示了另一个实例402,在所述实例中,分配用于存储与地址空间有关的元数据122的路420的数目减少(例如,减少到每个集合430内一个路420)。可以响应于确定和/或监测一或多个量度212(例如,响应于由量度212所量化的预取性能低于第二阈值)而减少分配到第一部分124的高速缓存存储器120的量。如所展示的,分配用于存储元数据122的第一部分124可以包含每个集合430-1到430-S内的单个路420-1。可用于存储元数据122的容量可以减少到M=S·U,其中U是在可寻址数据单元(或S个高速缓存单元220)方面的高速缓存单元220(或CMU 320)的容量。如本文所公开的,减小第一部分124的大小可以包含压缩元数据122以将其存储在数目减少的路420内(例如,通过元数据122的部分、元数据122的一或多个条目等)。减小第一部分124的大小可以进一步包含修改元数据映射方案314以引用分配到第一部分124的较小数目的路420。在图4-3中,元数据映射方案314可以引用每个集合430内的路420-1和/或定义元数据地址方案,包含地址0到(S·U)-1、路索引0到(S)-1等。
如图4-3所展示的,减少分配到第一部分124的高速缓存存储器120的量可以引起分配用于存储第二部分126内的高速缓存数据128的高速缓存存储器120的量增加。在图4-3实例中,每个集合的路420-2和420-3被分配到第二部分126。将路420-2和420-3分配到第二部分126可以包含修改地址映射方案316以包含每个集合430的路420-2和420-3(例如,通过启用路420-2和420-3的高速缓存标签326-2和326-3)。
图5-1展示了用于实施自适应性高速缓存分区的设备的另一个实例500。设备500包含高速缓存110,所述高速缓存被配置成高速缓存与和存储器108相关联的地址空间有关的数据。高速缓存110可以包含和/或耦接到接口215,所述接口可以被配置成将高速缓存110(和/或高速缓存逻辑210)耦接到互连件,如主机102的互连件105。高速缓存110可以被配置成服务于来自请求方201的与地址空间的地址204有关的请求202。高速缓存110可以通过使用高速缓存存储器120服务于请求202,所述请求可以包含在相应传送操作203中加载与地址空间的地址204相关联的数据。可以响应于高速缓存未命中、预取操作等而实施所述传送操作。存储器108、高速缓存110和请求方201可以通过互连件105通信耦接。
如所展示的,高速缓存存储器120可以包含多个高速缓存单元220,所述多个高速缓存单元可以被组织成多个N路关联集合430(例如,S个集合430-1到430-S,每个集合包含N个路420-1到420-N)。高速缓存逻辑210可以实施、包含和/或耦接到分区逻辑310,所述分区逻辑被配置成将高速缓存存储器120分区成第一部分124和第二部分126。高速缓存逻辑210根据分区方案312-1对高速缓存存储器120进行分区和/或划分,所述分区方案可以指定将分配用于存储元数据122(第一部分124)、高速缓存数据128(第二部分126)等的高速缓存存储器120的量。如本文所公开的,分配到第一部分124的高速缓存存储器120的量可以至少部分地基于尤其量化预取性能的一或多个量度212。
在图5-1实例中,高速缓存逻辑210(和/或分区逻辑310)通过集合和/或根据集合或基于集合的分区方案312-2对高速缓存存储器120进行分区。更具体地,高速缓存逻辑210可以分配高速缓存存储器120的集合430中的零或多个集合以存储与地址空间有关的元数据122(第一部分124),并且分配集合430中的一或多个集合以存储高速缓存数据128(第二部分126)。在图5-1中,分配到预取逻辑230的高速缓存存储器120的第一部分124包含两个集合430(例如,集合430-1和430-2),并且高速缓存存储器120的分配用作可用高速缓存容量的第二部分126包含S-2个集合430(例如,集合430-3到430-S)。在图5-1中,用交叉影线填充图案突出显示分配到第一部分124的集合430。
如以上所公开的,由高速缓存逻辑210所实施的地址映射方案316(或地址映射逻辑)可以被配置成尤其通过使地址204与相应的集合430相关联并将地址204的地址标签206匹配到所关联的集合430的高速缓存标签326来将地址204映射到高速缓存单元220。然而,将一或多个集合430分配到第一部分124可以减少包含在第二部分126中的集合430的数目(减少地址204可以映射到的集合430的数目)。分配R个集合430以存储元数据可以将可用集合430的数目减少到S-R(或图5-1实例中的S-2)。将R个集合分配到第一部分124可以包含修改地址映射方案316(和/或其集合映射方案)以在S-R个集合430的组(SC)、SC{420-R、……420-S}或{420-1、……、420-[S-R]}之间分配地址204,如下SI=fS(TS,SC),其中fs是集合映射函数,TS是集合标签406,并且SI是可用集合430(SC)中的所选集合的索引或其它标识符。在一些实施方案中,地址映射方案316修改地址204被划分的方式(和/或相应地址区域的大小)。地址映射方案316可以至少部分地基于分配到第一部分124的集合430的数量来调整包含在集合标签406-1中的位数。地址映射方案316可以例如将包含在集合标签406-1中的位数减少log2R,其中R是分配用于存储元数据122的集合430的数目(减少图5-1实例中的一位)。
元数据映射方案314可以被配置成使元数据122(和/或元数据地址)与分配到第一部分124的高速缓存存储器120相关联。元数据映射方案314可以定义一系列元数据地址0到(R·N·U)-1或索引0到R·N,其中R是为元数据122分配的集合430的数目,N是包含在每个集合430中的路420的数目,并且U是每个路420(和/或对应的高速缓存单元220)的容量。
高速缓存逻辑210可以被进一步配置成至少部分地基于与预取性能有关的一或多个量度212来调整集合分区方案312-2。当量度212中的一或多个量度超过第一阈值时,高速缓存逻辑210可以增加为元数据122分配的集合430的数目,并且当量度212中的一或多个量度低于第二阈值时,所述高速缓存逻辑可以减少为元数据122分配的集合430的数目(并且增加可用于存储高速缓存数据128的集合430的数目)。
图5-2展示了实例501,在所述实例中,为元数据122分配的高速缓存存储器120的量与图5-1所展示的实例500相比有所增加。第一部分124的大小可以基于地址空间的一或多个区域内的预取性能而增加。在图5-2中,包含在第一部分124中的集合430的数量可以增加到四(例如,从集合430-1到430-2增加到集合430-1到430-4)。分配另外的集合430-3和430-4以存储元数据可以包含调整地址映射方案316以在S-4个集合430之间分配地址(与S-2或S个集合430相反)。地址映射方案316可以被修改成将包含在集合标签406-2中的位数减少两位(或与图5-1实例的集合标签406-1相比减少单个位)。将集合430分配到第一部分124可以包含从集合430中驱逐高速缓存数据、禁用集合430的每个路420的高速缓存标签326-1到326-N等等。将另外的集合430分配到第一部分124可以进一步包含调整元数据映射方案314以包含另外的集合430。在图5-2实例中,元数据映射方案314可以适于定义一系列元数据地址0到(4·N·U)-1或索引0到4·N。
图5-3展示了实例502,在所述实例中,为元数据122分配的高速缓存存储器120的量与图5-2的实例501(以及图5-1的实例500)相比有所减少。如本文所公开的,第一部分124的大小可以基于地址空间的一或多个区域内的预取性能而减小。在图5-3中,包含在第一部分124中的集合430的数量可以减小到一(例如,减少到单个集合430-1)。因此,减小第一部分124的大小可以包含分配另外的集合430-4到430-2以存储高速缓存数据128(分配到第二部分126)。将一或多个集合430分配到第二部分126可以包含压缩元数据122并将经压缩的元数据存储在数目减少的高速缓存单元220内。在图5-3实例中,元数据122可以被压缩以存储在N个高速缓存单元220内。压缩元数据122可以包含移除元数据122的部分,如一或多个元数据条目。可以基于任何适合的标准来选择所述条目,包含但不限于:阶段标准(最旧的先移除、最新的先移除等)、最近最少访问标准、最不常访问标准、预取性能标准(例如,由元数据122的相应条目所覆盖的地址区域内的预取性能)等。元数据映射方案314可以被修改成减少由此引用的高速缓存单元220的数目(将元数据地址范围减小到N·U或将元数据索引范围减小到N)等等。地址映射方案316可以被修改成增加可用集合430到S-1的数量。地址映射方案316可以被配置成尤其通过增加包含在地址204的集合标签406-2中的位数来在较大数目的集合430之间分配地址204。分配集合430以存储高速缓存数据可以进一步包含启用集合430的每个路420的高速缓存标签326(例如,启用分配用于存储高速缓存数据128的集合430的每个路420-1到420-N的高速缓存标签326-1到326-N)。
用于自适应性高速缓存分区的示例方法
此部分将参考图6到9的流程图(flowchart/flow diagram)描述示例方法。这些描述仅通过举例方式引用图1-1到5-3中描绘的组件、实体和其它方面。图6用流程图600展示了用于实施自适应性高速缓存分区的设备的示例方法。流程图600包含框602到606。在一些实施方案中,主机装置102(和/或其组件)可以执行流程图600的一或多个操作(和/或本文中描述的其它流程图的操作)以实现至少一种用于自适应性高速缓存分区的方法。可替代地或另外地,所述操作中的一或多个操作可以由存储器、存储器控制器、PIM逻辑、高速缓存110、高速缓存存储器120、高速缓存逻辑210、预取逻辑230、嵌入式处理器等执行。
在602处,分配高速缓存110的高速缓存存储器120的第一部分以存储与地址空间有关的元数据122,所述地址空间与高速缓存110的后备存储器相关联(例如,所述地址空间与存储器108相关联)。例如,分配第一部分可以包含将高速缓存存储器120分区成第一部分124和第二部分126。第一部分124可以被分配用于存储元数据122,并且第二部分126可以被分配用于存储高速缓存数据128(可以被分配为可用的高速缓存容量)。维持在高速缓存存储器120的第一部分内的元数据122可以包含与对地址空间的相应地址和/或区域的访问有关的信息。高速缓存110的预取器和/或预取逻辑230可以利用元数据122来预测即将到来的请求202的地址204,并且将与所预测的地址204相关联的数据预取到高速缓存存储器120的第二部分126中。元数据122可以包含与地址空间有关的任何适合的信息,包含但不限于:先前请求的地址204或地址偏移的序列、地址历史、地址历史表、索引表、相应地址204的访问频率、访问计数(例如,在相应窗口内的访问)、访问时间、最后访问时间等。在一些方面,元数据122包含多个条目,每个条目包含与地址空间的相应区域有关的信息。与地址空间的相应区域有关的元数据122尤其可以用于确定相应区域内的地址访问模式,所述地址访问模式可以用于通知相应区域内的预取操作。
可以根据任何适合的分区方案312(如顺序方案、基于路的分区方案312-1、基于集合的分区方案312-2等)将高速缓存存储器120分区成第一部分124(例如,第一分区)和第二部分126(例如,第二分区)。第一部分124可以包含高速缓存存储器120的高速缓存存储器资源的任何适合的部分、数量和/或量,包含但不限于零或多个:高速缓存单元220、CMU 320、高速缓存块、高速缓存线、硬件高速缓存线、路420(和/或对应的高速缓存单元220)、集合430、行、列、库等。在一些实施方案中,高速缓存逻辑210将M个高速缓存单元220分配到第一部分124并将X-M个高速缓存单元220分配到第二部分126作为可用高速缓存容量(其中X是包含在高速缓存存储器120中的可用高速缓存单元220的数目)。分配M个高速缓存单元220可以包含:将高速缓存单元220-1到220-M分配到第一部分124(例如,根据顺序方案);分配高速缓存存储器120的每个集合430的路W1内的高速缓存单元220,其中
Figure BDA0003178038040000381
并且S是包含在高速缓存存储器120中的集合430(例如,根据基于路的分区方案312-1);分配集合1到E1内的高速缓存单元220,其中
Figure BDA0003178038040000382
并且N是包含在高速缓存存储器120的每个集合430中的路420的数目(例如,根据基于集合的分区方案312-2)等。
分配M个高速缓存单元220可以包含从M个高速缓存单元220中清除和/或降级高速缓存数据128,所述清除和/或降级可以包含将存储在高速缓存单元220内的脏高速缓存数据128写入到存储器108等。分配M个高速缓存单元220可以进一步包含配置地址映射方案316,通过所述地址映射方案,地址204被映射到相应的高速缓存单元220、集合430和/或路420以禁用、移除和/或忽略M个高速缓存单元220,使得地址204不会映射到M个高速缓存单元220(并且M个高速缓存单元220不可用于存储高速缓存数据128)。在一些实施方案中,在602处,高速缓存逻辑210禁用分配到第一部分的M个高速缓存单元220的高速缓存标签326。
在一个实例中,高速缓存逻辑210通过路420对高速缓存存储器120进行分区(例如,通过分配高速缓存存储器120的相应集合430内的路420)。在路分区方案312-1中,将M个高速缓存单元220分配到第一部分124可以包含将高速缓存存储器120的S个集合430-1到430-S中的每个集合内的W1个路420分配到第一部分124,其中
Figure BDA0003178038040000391
使得每个集合430内的W2个路420被分配到第二部分126,其中W2=S-W1
Figure BDA0003178038040000392
)。
在另一个实例中,高速缓存逻辑210可以实施基于集合的分区方案312-2,通过所述基于集合的分区方案,高速缓存存储器120通过集合430进行划分。按照基于集合的分区方案312-2将M个高速缓存单元220分配到第一部分124可以包含将E1个集合430分配到第一部分124,其中
Figure BDA0003178038040000393
并且N是包含在每个集合430中的高速缓存单元220(路420)的数目,使得E2个集合430被分配到第二部分126,其中E2=S-E1
Figure BDA0003178038040000394
分配M个高速缓存单元220以存储元数据可以进一步包含将元数据映射方案314配置成提供对M个高速缓存单元220的存储器存储容量的访问。由高速缓存逻辑210实施的元数据映射方案314可以提供对包含在高速缓存存储器120的第一部分124中的M个高速缓存单元220的存储器存储容量的访问。元数据映射方案314可以定义元数据地址空间(MA),MA∈{0,…,(M·U)-1},其中U是高速缓存单元220的容量(CMU 320的容量)。可替代地或另外地,元数据地址空间(MA)可以定义高速缓存单元索引(MI)的范围,每个索引对应于分配到第一部分124的M个高速缓存单元220中的相应一个,MA∈{0,…,M-1}。尽管本文描述了元数据映射方案314(和/或元数据寻址和/或访问方案)的实例,但本公开并不限于这一点并且可以适于通过任何适合的机构或技术提供对分配到第一部分124的高速缓存存储器120的访问。
在604处,将与地址空间相关联的数据写入到高速缓存存储器120的第二部分126。例如,高速缓存逻辑210可以响应于与触发高速缓存未命中的地址204(例如,尚未加载到高速缓存存储器120的第二部分126中的地址204)有关的请求202而将数据加载到高速缓存存储器120中。可替代地或另外地,在604处,高速缓存逻辑210(和/或预取逻辑230)可以将高速缓存数据128预取到高速缓存存储器120的第二部分126中。预取器逻辑230可以利用与地址空间有关的元数据122来预测即将到来的请求202的地址204,并且将高速缓存逻辑210配置成在与所预测的地址204有关的请求202被接收到之前预取对应于所预测的地址204的高速缓存数据128。在传送操作203中,所预取的高速缓存数据128可以从相对较慢的存储器108传送到相对较快的高速缓存存储器120中。用于预取高速缓存数据128的传送操作203可以被实施为后台操作(例如,在高速缓存110不为请求202服务的空闲时间段期间)。
在一些方面,在604处,高速缓存逻辑210(和/或预取逻辑230)可以被进一步配置成确定和/或监测与高速缓存110有关的一或多个量度212。量度212可以被配置成量化高速缓存和/或预取性能的任何适合的方面,包含但不限于:请求等待时间、平均请求等待时间、高速缓存性能、高速缓存命中率、高速缓存未命中率、预取性能、预取命中率、预取未命中率、有用预取的数量、无效预取的数量、有用预取与无效预取的比率等。
在一些实施方案中,高速缓存逻辑210(和/或预取逻辑230)可以被进一步配置成记录、更新和/或以其它方式维持与在604处分配的高速缓存存储器120的第一部分内(例如,高速缓存存储器120的第一部分内)的地址空间有关的元数据122。如本文所公开的,元数据122可以由和/或通过元数据映射方案314访问。
在606处,至少部分地基于与预取到高速缓存存储器的第二部分中的高速缓存数据128有关的一或多个量度212来修改分配到与地址空间有关的元数据122的高速缓存存储器120的第一部分的大小。当量度212中的一或多个量度超过第一阈值时,可以增加分配到第一部分124的高速缓存存储器120的量。在606处,当预取性能保持高于第一阈值时和/或直到达到最大值或上限时,第一部分124的大小可以递增地和/或周期性地增加。相反,在606处,当量度212中的一或多个量度低于第二阈值时,可以减少分配到第一部分124的高速缓存存储器的量。在606处,当预取性能保持低于第二阈值时和/或直到达到下限时,第一部分124的大小可以递增地和/或周期性地减小。在一些方面,在所述下限处,没有高速缓存资源被分配用于存储元数据122,并且基本上所有的高速缓存存储器120都可用作高速缓存容量。
在606处,为元数据122分配的高速缓存存储器120的量可以在高速缓存110上的工作负载适合于预取时增加,并且可以在所述工作负载不适合于预取时减少(如由一或多个量度212所指示的)。因此,高速缓存110可以能够适于不同的工作负载条件。例如,当为适合于预取的工作负载服务时,增加分配到预取元数据122的高速缓存存储器120的量可以使性能改进,尽管可用高速缓存容量减少,而减少为元数据122分配的高速缓存存储器120的量可以使高速缓存110的可用容量能够增加,从而使性能在不适合于预取的工作负载下改进。
在一些实施方案中,修改为元数据122分配的高速缓存存储器120的第一部分124的大小可以包含完成未决请求202(例如,排空高速缓存110的流水线)、清除高速缓存110、重置预取逻辑230(和/或预取器)、对高速缓存存储器120进行重新分区以修改分配到第一部分124和/或第二部分126的高速缓存存储器120的量以及使用重新设置大小的高速缓存存储器120(例如,使用重新设置大小的高速缓存存储器120的第一部分124和/或第二部分126)恢复操作。可替代地,修改高速缓存存储器120的第一部分124的大小可以包含保持高速缓存和/或预取器状态。当增加分配到第一部分124的高速缓存存储器120的量时,高速缓存逻辑210可以尤其通过压缩维持在第二部分126内的高速缓存数据128(例如,选择R个高速缓存单元220的高速缓存数据128以进行驱逐)、将高速缓存数据128从指定分配到第一部分124的高速缓存单元220移动到将保持分配到第二部分126的高速缓存单元220等等来保持高速缓存状态。当减少分配到第一部分的高速缓存存储器120的量时,高速缓存逻辑210可以尤其通过压缩维持在第一部分124内的元数据122以将其存储在更小数目的高速缓存单元220内(例如,通过移除元数据122的部分,如与表现出较差预取性能的地址区域相关联的条目)、将经压缩的元数据122移动到将保持分配到第一部分124的高速缓存单元220等等来保持预取器状态。
在606处,增加分配到第一部分(例如,第一部分124)的高速缓存存储器120的量可以包含将一或多个高速缓存单元220从第二部分(例如,第二部分126)分配到第一部分124。如本文所公开的,将一或多个高速缓存单元220分配到第一部分124可以包含清除和/或降级高速缓存单元220、修改地址映射方案316以禁用、移除和/或忽略高速缓存单元220(例如,禁用高速缓存单元220的高速缓存标签326)、修改元数据映射方案314以包含和/或引用高速缓存单元220等等。因此,增加分配到第一部分的高速缓存存储器120的量可以包含减少分配到第二部分的高速缓存存储器120的量(和/或减少可用于存储高速缓存数据128的高速缓存存储器120的量)。减小第二部分126的大小可以包含压缩存储在高速缓存存储器120的第二部分126内的高速缓存数据128,所述压缩可以包含选择高速缓存数据128以将其从高速缓存110中移除和/或驱逐。可以根据任何适合的替换或驱逐策略(如FIFO、LIFO、LRU、TLRU、MRU、LFU、随机替换等)来选择高速缓存数据128。压缩高速缓存数据128可以包含将被高速缓存数据128所消耗的高速缓存存储器120的量减少R个高速缓存单元220,其中R是从第二部分126分配到第一部分124的高速缓存单元220的数目(或R·U,其中U是高速缓存单元220、CMU 320或路420的容量)。
在一些方面,高速缓存逻辑210选择第一组高速缓存单元220以将其重新分配到第一部分124,并且选择第二组高速缓存单元220以进行驱逐。第一组和第二组各自可以包含R个高速缓存单元220,其中R是将被重新分配到第一部分124的高速缓存单元220的数量。可以独立地和/或根据相应的选择标准来选择第一组和第二组。第一组高速缓存单元220可以根据地址映射方案316、元数据映射方案314、分区方案312等来选择(所述方案可以按照预定模式或方案来分配用于存储元数据122的高速缓存单元220,所述预定模式或方案如顺序方案、基于路的分区方案312-1、基于集合的分区方案312-2等)。如本文所公开的,可以根据驱逐或替换策略来选择第二组高速缓存单元220。重新分配R个高速缓存单元220可以包含:a)清除第二组高速缓存单元220;以及b)将高速缓存数据128从包含在第一组中(但不包含在第二组中)的高速缓存单元220移动到第二组高速缓存单元220。因此,当减少高速缓存110的可用高速缓存数据128容量时,高速缓存逻辑210可以在高速缓存存储器120内保留更频繁地访问的数据。
在一些实施方案中,高速缓存逻辑210根据路或基于路的分区方案312-1对高速缓存存储器110进行分区。将R个高速缓存单元220从第二部分126分配到第一部分124可以包含将所述高速缓存的每个集合430内的一或多个路420分配到第一部分124。将R个高速缓存单元220从第二部分126分配到第一部分124可以包含将S个集合430-1到430-S中的每个集合内的另外的W1A个路420从第二部分126分配到第一部分124,其中
Figure BDA0003178038040000421
可替代地或另外地,高速缓存逻辑210可以根据集合或基于集合的分区方案312-2对高速缓存存储器110进行分区。将R个高速缓存单元220从第二部分126分配到第一部分124可以包含将高速缓存存储器120的另外的E1A个集合430从第二部分126分配到第一部分124,其中
Figure BDA0003178038040000422
并且N是包含在每个集合430中的高速缓存单元220(或路420)的数目。
在606处,减少分配到第一部分(例如,第一部分124)的高速缓存存储器120的量可以包含将一或多个高速缓存单元220从所述第一部分分配到第二部分(例如,第二部分126)。如本文所公开的,将一或多个高速缓存单元220分配到第二部分126可以包含修改地址映射方案316以启用、包含和/或以其它方式引用高速缓存单元220(例如,启用高速缓存单元220的高速缓存标签326)、修改元数据映射方案314以移除高速缓存单元220等等。
减少分配到第一部分的高速缓存存储器120的量可以进一步包含压缩元数据122。元数据122可以被压缩以存储在更少的R个高速缓存单元220内,其中R是将从第一部分124分配到第二部分126的高速缓存单元220的数量。在606处,压缩元数据122可以包含移除元数据122的一部分,如元数据122的一或多个条目。可以基于移除标准(如阶段标准(最旧的先移除、最新的先移除等)、最近最少访问标准、最不常访问标准等)来选择元数据122的所述部分。
可替代地或另外地,可以至少部分地基于一或多个量度212来选择元数据122的各个部分以进行移除。元数据122可以包含多个条目,每个条目包含与地址空间的相应区域有关的访问信息。预取逻辑230可以利用元数据122的相应条目来在由所述相应条目覆盖的地址区域内实施预取操作。所述一或多个量度212可以被配置成量化由元数据122的相应条目所覆盖的地址区域内的预取性能。压缩元数据122可以包含至少部分地基于由所述条目覆盖的地址区域内的如由量度212所量化的预取性能来选择元数据122的条目以进行移除。在一些实施方案中,可以移除预取性能低于阈值的元数据122的条目(和/或可以减少分配到所述条目的存储器容量的量)。可替代地,可以保留表现出较高预取性能的元数据122的条目,而可以移除表现出较低预取性能的条目(例如,可以选择元数据122的R个性能最低的条目以进行移除)。因此,压缩元数据可以包含从一或多个高速缓存单元220中移除元数据122和/或将元数据122(和/或元数据122的条目)从重新分配到第二部分126的高速缓存单元220移动到分配到第一部分124的剩余高速缓存单元220。
图7用流程图700展示了用于实施自适应性高速缓存分区的设备的方法的另外的实例。流程图700包含框702到708。在702处,高速缓存110的逻辑(例如,高速缓存逻辑210)实施分区方案312以尤其将高速缓存存储器120分区成第一部分124和第二部分126。第一部分124可以包含高速缓存存储器120的第一部分,并且第二部分126可以包含高速缓存存储器120的第二部分,所述第二部分不同于第一部分124。第一部分124可以被分配用于存储与地址空间(如与高速缓存110的后备存储器(存储器108)相关联的地址空间)有关的元数据122。第二部分126可以被分配用于存储与所述地址空间(例如,可以是高速缓存110的可用高速缓存容量)有关的高速缓存数据128。对高速缓存存储器120进行分区可以包含实施元数据映射方案314以访问分配到第一部分124的高速缓存单元220,并且实施地址映射方案316以将地址空间的地址204映射到分配到第二部分126的高速缓存单元220。
在704处,高速缓存110服务于与地址空间有关的请求,所述服务可以包含维持与第一部分124内的地址空间有关的元数据(例如,在维持在第一部分124内的元数据122内)以及将与所述地址空间的地址相关联的数据加载到第二部分126中。可以响应于高速缓存未命中(如与在高速缓存110内不可用的地址204有关的请求202)而将数据加载到高速缓存存储器120中。可替代地或另外地,在704处,可以将数据预取到高速缓存存储器120中。预取器(和/或高速缓存110的预取逻辑230)可以利用维持在第一部分124内的元数据122来预测即将到来的请求202的地址204,并且在高速缓存110处接收到与所预测的地址204有关的请求202之前,与所预测的地址204相对应的数据可以被预取到第二部分126中。
在706处,高速缓存逻辑210(和/或预取逻辑230)可以确定是否调整高速缓存存储器120的分区方案312。更具体地,在706处,高速缓存逻辑210(和/或预取逻辑230)可以确定是否修改为元数据122分配的第一部分124的大小(和/或修改分配用于存储高速缓存数据128的第二部分126的大小)。如本文所公开的,所述确定可以至少部分地基于一或多个量度212,所述一或多个量度可以被配置成量化预取性能。确定是否调整分区方案312可以包含确定和/或监测与预取到第二部分126中的数据有关的一或多个量度212并将量度212与一或多个阈值进行比较。在708处,分区方案312可以响应于量度212中的一或多个量度大于第一阈值和/或小于第二阈值而进行调整;否则,流程可以在704处继续进行,其中高速缓存110可以继续为与地址空间有关的请求服务。
在708处,高速缓存逻辑210调整分区方案以尤其修改分配到第一部分124和/或第二部分126的高速缓存存储器120的量。在708处,当量度212超过一或多个第一阈值时(例如,当预取性能超过一或多个第一阈值时),为元数据122分配的第一部分124的大小可以增加(并且为高速缓存数据128分配的第二部分126的大小可以减小)。相反,当量度212低于一或多个第二阈值时(例如,当预取性能低于一或多个第二阈值时),第一部分124的大小可以减小(并且第二部分126的大小可以增加)。
增加第一部分124的大小可以包含将高速缓存资源从第二部分126分配到第一部分124(例如,一或多个高速缓存单元220、路420、集合430等)。增加第一部分124的大小可以包含减小第二部分126的大小。如本文所公开的,减小第二部分126的大小可以包含压缩存储在第二部分126内的高速缓存数据128(例如,通过选择高速缓存数据128以进行驱逐、将高速缓存数据128移动到分配到第二部分126的剩余高速缓存单元220等等)。相反,减小第一部分124的大小可以包含将高速缓存资源从第一部分124分配到第二部分126。如本文所公开的,减小第一部分124的大小可以包含压缩存储在高速缓存存储器120的第一部分124内的元数据122(例如,通过选择元数据122的部分以进行移除、将元数据122的部分移动到分配到第一部分124的剩余高速缓存单元220等等)。如本文所公开的,响应于708处调整高速缓存存储器120的分区方案312,流程可以在704处继续进行,其中高速缓存110可以服务于与地址空间有关的请求。
图8展示了描绘至少部分地基于与预取性能有关的量度212进行自适应性高速缓存分区的操作的另一个示例流程图800。流程图800包含框802到816。在802处,高速缓存逻辑210(和/或预取逻辑230)将高速缓存存储器120划分成第一部分124和第二部分126。第一部分124包含为与地址空间有关的元数据122分配的高速缓存存储器120的第一分区,并且第二部分126可以包含为高速缓存数据128分配的高速缓存存储器120的第二分区(第一部分与第二部分126分开)。
在804处,高速缓存110服务于与地址空间有关的请求,所述服务可以包含将数据加载到高速缓存存储器120的第二部分126中、响应于与地址204有关的请求202而从高速缓存存储器120的第二部分126中检索与地址空间的相应地址204相关联的数据、维持与对高速缓存存储器120的第一部分124内的地址空间的相应地址和/或区域的访问有关的元数据122、利用维持在高速缓存存储器120的第一部分124内的元数据122来将高速缓存数据128预取到高速缓存存储器120的第二部分126中等等。
在806处,高速缓存逻辑210(和/或预取逻辑230)确定是否评估高速缓存存储器120的分区方案312。在一些实施方案中,可以在后台操作中和/或通过使用高速缓存110的空闲资源来评估分区方案312。806处的确定可以至少部分地基于高速缓存110是否空闲(例如,是否正在服务一或多个请求202)、空闲资源是否可用等。806处的确定可以基于一或多个基于时间的标准(例如,可以周期性地和/或以确定的时间间隔评估分区方案)、预定计划等。可替代地或另外地,806处的确定可以由工作负载条件和/或预取性能量度(例如,一或多个量度212)触发。高速缓存逻辑210可以被配置成周期性地和/或连续地确定和/或监测与预取性能有关的量度212,并且可以响应于量度212超过和/或低于一或多个阈值而在806处触发对分区方案312的评估。
如果806处的确定是要评估分区方案312,则流程在808处继续进行;否则,流程继续在804处为与地址空间有关的请求服务。
在808处,高速缓存逻辑210(和/或预取逻辑230)可以确定和/或监测预取性能的一或多个方面,如预取命中率、预取未命中率、有用预取的数量、无效预取的数量、有用预取与无效预取的比率等。在808处,高速缓存逻辑210(和/或预取逻辑230)可以确定和/或监测与预取性能有关的一或多个量度212,如本文所公开的。预取命中率可以基于维持在与所预取的高速缓存数据128相关联的高速缓存元数据122内的所预取的高速缓存数据128的访问量度。可以通过使用预取指示符(如与高速缓存数据128相关联的预取标记)来标识预取到高速缓存存储器120中的高速缓存数据128,所述预取标记可以维持在与存储高速缓存数据128的高速缓存单元220相关联的高速缓存元数据322内。
在810处,将在806处确定的预取性能与第一阈值进行比较。如果预取性能超过第一阈值,则流程在812处继续进行;否则,所述流程在814处继续进行。在一些实施方案中,810处的确定基于在810处确定的预取性能是否超过第一阈值以及当前分配到第一部分124的高速缓存存储器120的量是否低于最大量、阈值或上限。如果是,则流程在812处继续进行;否则,所述流程在814处继续进行。
在812处,高速缓存逻辑210修改分区方案312以增加分配用于存储与地址空间有关的元数据122的高速缓存存储器120的量(例如,增加高速缓存存储器120的第一部分124的大小)。增加分配到第一部分124的高速缓存存储器120的量可以包含减少分配到第二部分126的高速缓存存储器120的量(例如,减少高速缓存110的可用容量)。在812处,高速缓存逻辑210可以将指定的高速缓存存储器资源(如一或多个高速缓存单元220、路420、集合430等)从第二部分126重新分配到第一部分124。例如,高速缓存存储器120可以被分区成包括第一组高速缓存单元220的第一部分124和包括第二组高速缓存单元的第二部分126,所述第二组不同于所述第一组。增加分配到第一分区(第一部分124)的高速缓存存储器的量可以包含尤其通过从一或多个高速缓存单元220中驱逐和/或移动高速缓存数据128、从地址映射方案316中移除一或多个高速缓存单元220(例如,禁用一或多个高速缓存单元220的高速缓存标签326)、将一或多个高速缓存单元220添加到元数据映射方案314等等来将第二组中的一或多个高速缓存单元220分配到第一组。
如本文所公开的,高速缓存逻辑210可以被进一步配置成:压缩存储在第二部分126内的高速缓存数据128以将其存储在更少量的高速缓存存储器120内;将地址映射方案316配置成移除、禁用和/或解除引用指定的高速缓存存储器资源;将元数据映射方案314配置成包含、引用和/或以其它方式提供对用于存储元数据122的指定的高速缓存资源的访问等等。响应于实施经修改的分区方案312以增加为元数据122分配的高速缓存存储器120的量(并且减少可用高速缓存容量的量),流程可以在804处继续进行。
在814处,将在808处确定和/或监测的预取性能与第二阈值进行比较。如果预取性能低于第二阈值,则流程在816处继续进行;否则,所述流程在804处继续进行。在一些实施方案中,814处的确定基于在810处确定的预取性能是否低于第二阈值以及当前分配到第一部分124的高速缓存存储器120的量是否高于最小量、阈值或下限。如果是,则流程在816处继续进行;否则,流程继续在814处进行。
在816处,高速缓存逻辑210修改分区方案312以减少分配用于存储与地址空间有关的元数据122的高速缓存存储器120的量(例如,减小高速缓存存储器120的第一部分124的大小)。减少分配到第一部分124的高速缓存存储器120的量可以包含增加分配到第二部分126的高速缓存存储器120的量(例如,增加高速缓存110的可用容量)。在816处,高速缓存逻辑210可以将指定的高速缓存存储器资源(如一或多个高速缓存单元220、路420、集合430等)从第一部分124重新分配到第二部分126。在816处,高速缓存逻辑210可以被进一步配置成:压缩存储在第一部分124内的元数据122以将其存储在较小量的高速缓存存储器120内;将地址映射方案316配置成启用、引用和/或以其它方式利用指定的高速缓存存储器资源以将其用于高速缓存数据128;将元数据映射方案314配置成移除、排除和/或解除引用指定的高速缓存资源等等,如本文所公开的。响应于实施经修改的分区方案312以减少为元数据122分配的高速缓存存储器120的量(并且增加可用高速缓存容量的量),流程可以在804处继续进行。
图9展示了描绘至少部分地基于与高速缓存和/或预取性能有关的量度进行自适应性高速缓存分区的操作的示例流程图900。流程图900包含框902到916。在902处,高速缓存110将其高速缓存存储器120分区成第一部分124和第二部分126。第一部分124可以包含高速缓存存储器120的第一部分(例如,零或多个高速缓存单元220、高速缓存线、硬件高速缓存线、路420、集合430等)。第二部分126可以包含高速缓存存储器120的不同于第一部分124的第二部分。可以为与地址空间有关的元数据122分配第一部分124,并且第二部分126可以被分配用于存储高速缓存数据128(可以是可用高速缓存容量)。
在904处,高速缓存110服务于与地址空间有关的请求,所述服务尤其可以包含接收请求202、响应于高速缓存未命中而将高速缓存数据128加载到高速缓存存储器120的第二部分126中、通过使用存储在高速缓存存储器120的第二部分126内的高速缓存数据128来服务请求202等等。
在906处,高速缓存110、高速缓存逻辑210、预取逻辑230和/或耦接到高速缓存110的预取器维持与高速缓存存储器120的第一部分124内的地址访问特性有关的元数据122。如本文所公开的,元数据122可以包含与对地址空间的相应地址和/或地址区域的访问有关的任何适合的信息。在908处,至少部分地基于维持在高速缓存存储器120的第一部分124内的元数据122将高速缓存数据128预取到高速缓存存储器120的第二部分126中。
在910处,高速缓存、高速缓存逻辑210、预取逻辑230和/或耦接到高速缓存110的预取器确定和/或监测一或多个量度212。如本文所公开的,量度212可以被配置成量化高速缓存和/或预取性能。在912处,评估量度212以确定是否调整高速缓存存储器120的分区方案312(例如,确定是否调整分配到第一部分124或第二部分126的高速缓存存储器120的量)。912处的确定可以至少部分地基于在910处确定和/或监测的量度212。912处的确定可以基于高速缓存性能和/或预取性能来调整分区方案312。可以在914处响应于以下而调整分区方案312:a)量度212超出一或多个阈值;b)预取性能超出一或多个预取阈值;c)高速缓存性能超出一或多个高速缓存阈值等。912处的确定可以基于预取性能(例如,预取命中率)是高于上限预取阈值还是低于下限性能阈值、高速缓存性能(例如,高速缓存命中率)是高于上限高速缓存阈值还是低于下限高速缓存阈值等等。在一些实施方案中,912处的确定可以基于预取性能和高速缓存性能两者(可以被配置成平衡预取性能和缓存性能)。912处的确定可以基于:a)预取性能是否超过第一预取阈值,并且高速缓存性能是否低于第一高速缓存阈值;b)预取性能是否低于第二预取阈值,并且高速缓存性能是否高于第二高速缓存性能阈值等。
可替代地或另外地,912处的确定可以尤其基于当前为元数据122分配第一部分124的高速缓存存储器120的量(元数据容量)。确定912可以基于预取性能是否高于第一预取性能阈值并且元数据容量是否低于第一容量阈值(例如,第一预取容量阈值或元数据容量阈值)、预取性能是否低于第二预取性能阈值并且元数据容量是否高于第二容量阈值(例如,第二预取容量阈值或元数据容量阈值)等。在一些实施方案中,912处的确定基于高速缓存性能。所述确定可以基于由量度212(例如,高速缓存性能量度212)量化的高速缓存性能是否低于高速缓存性能阈值。在914处,分配用于存储与地址空间有关的元数据122的高速缓存存储器120的量可以被迭代地和/或周期性地调整以改进高速缓存性能(例如,增加或减少)。
在914处,确定第一部分124和/或第二部分126的大小调整。大小调整可以至少部分地基于在910处确定和/或监测的量度212(和/或在912处对量度212的评估)。在914处,当由量度212量化的预取性能处于或高于上限预取阈值(并且元数据容量低于所确定的最大值)时,可以增加为与地址空间有关的元数据122分配的第一部分124的大小。相反,当由量度212量化的预取性能处于或低于下限预取阈值时,可以减小第一部分124的大小。在另一个实例中,分配到第一部分124的高速缓存存储器120的量:a)可以在预取性能高于第一预取阈值并且高速缓存性能低于第一高速缓存阈值时增加;或者b)可以在预取性能低于第二预取阈值并且高速缓存性能高于第二高速缓存性能阈值时降低等。
可替代地或另外地,大小调整可以尤其基于当前为元数据122分配第一部分124的高速缓存存储器120的量(元数据容量)。当预取性能高于第一预取性能阈值并且当前分配到第一部分124的高速缓存存储器120的量低于第一容量阈值时,可以增加分配到第一部分124的高速缓存存储器120的量。相反,当预取性能低于第二预取性能阈值并且当前分配到第一部分124的高速缓存存储器120的量高于第二容量阈值时,可以减小分配到第一部分124的高速缓存存储器120的量等。在一些实施方案中,914处的大小调整可以基于高速缓存性能量度,如高速缓存命中率。在914处,分配用于存储与地址空间有关的元数据122的高速缓存存储器120的量可以被迭代地和/或周期性地调整以实现经改进的高速缓存命中率(例如,增加或减少)。在一些实施方案中,912处的确定和914处的大小调整可以根据优化算法实施,所述优化算法可以被配置成收敛到引起如由量度212量化的最优(或局部最优)高速缓存性能的最优(或局部最优)分区方案312。
用于自适应性高速缓存分区的示例系统
图10展示了用于自适应性高速缓存分区的示例系统1000。如本文所公开的,系统1000可以包含高速缓存设备1001,所述高速缓存设备可以包含高速缓存110和/或用于实施高速缓存110的装置。图10的描述涉及上述方面,如多个其它图(例如,图1-1到5-3)中描绘的高速缓存110。系统1000可以进一步包含接口1015,所述接口用于将高速缓存设备1001与互连件1005耦接、(例如,从请求方201)接收与和存储器108相关联的地址空间的地址204有关的请求202、实施传送操作203以从存储器108中获取高速缓存数据128等等。接口1015可以被配置成将高速缓存设备1001耦接到任何适合的互连件,包含但不限于:互连件、物理互连件、总线、主机装置102的互连件105、前端互连件105A、后端互连件105B等。接口1015可以包含但不限于:电路系统、逻辑电路系统、接口电路系统、接口逻辑、开关电路系统、开关逻辑、路由电路系统、路由逻辑、互连电路系统、互连逻辑、I/O电路系统、模拟电路系统、数字电路系统、逻辑门、寄存器、开关、多路复用器、ALU、状态机、微处理器、嵌入式处理器、PIM电路系统、逻辑220、接口215、第一接口215A、第二接口215B等。
高速缓存设备1001可以包含和/或耦接到高速缓存存储器120,所述高速缓存存储器可以包含但不限于:存储器、存储器阵列、半导体存储器、易失性存储器、RAM、SRAM、DRAM、SDRAM等。在图10实例中,高速缓存存储器120包含多个高速缓存单元220(例如,高速缓存单元220-1到220-X),每个高速缓存单元220包含和/或对应于相应的CMU320和/或高速缓存标签326。在一些方面,高速缓存单元220被布置成多个集合430(例如,集合430-1到430-S),每个集合430包含多个路420(例如,路420-1到420-N),每个路420包含和/或对应于相应的高速缓存单元220。
系统1000可以包含组件1010,所述组件用于为与地址空间有关的元数据122分配高速缓存存储器120的第一部分124、在与高速缓存存储器120的第一部分124不同的高速缓存存储器120的第二部分126内高速缓存数据和/或至少部分地基于与预取到高速缓存存储器120的第二部分126中的数据有关的量度212来修改为元数据122分配的高速缓存存储器120的第一部分124的大小。组件1010可以被配置成将高速缓存存储器120划分成包含高速缓存存储器120的第一部分124的第一分区1024和包含高速缓存存储器120的第二部分126的第二分区1026。第一分区1024可以被分配用于存储元数据122,并且第二分区1026可以被分配用于存储高速缓存数据128。组件1010可以包含但不限于:电路系统、逻辑电路系统、存储器接口电路系统、存储器接口逻辑、开关电路系统、开关逻辑、路由电路系统、路由逻辑、存储器互连电路系统、存储器互连逻辑、I/O电路系统、模拟电路系统、数字电路系统、逻辑门、寄存器、开关、多路复用器、ALU、状态机、微处理器、嵌入式处理器、PIM电路系统、高速缓存逻辑210、分区逻辑310、分区方案312、元数据映射方案314(和/或元数据逻辑1014)、地址映射方案316(和/或地址逻辑1016)等。
组件1010可以被配置成根据分区方案312对高速缓存存储器120进行分区。分区方案312可以定义用于在第一分区1024与第二分区1026之间划分高速缓存存储器120的高速缓存存储器资源(例如,高速缓存单元220)的逻辑、规则、标准和/或其它机制。分区方案312还可以被进一步配置成指定第一分区1024和/或第二分区1026的量、数量、容量和/或大小(例如,可以指定第一部分124和/或第二部分126的量、数量、容量和/或大小)。分区方案312可以定义在第一分区1024和/或第二分区1026之间动态地重新分配和/或重新指配高速缓存存储器资源的逻辑、规则、标准和/或其它机制,如基于高速缓存单元的方案、基于路的分区方案312-1、基于集合的分区方案312-2等。在图10实例中,分区方案312将组件1010配置成将M个高速缓存单元220分配到第一分区1024(并且将X-M个高速缓存单元220分配到第二分区1026)。
在一些实例中,分区方案312定义基于高速缓存单元的方案。在基于高速缓存单元的方案中,将M个高速缓存单元220分配到第一分区1024可以包含将高速缓存单元220-1到220-M分配到第一部分124和/或将220-M+1到220-X分配到第二部分126,如图10所展示的。在其它实例中,分区方案312定义基于路的方案(例如,路分区方案312-1)。在基于路的方案中,将M个高速缓存单元220分配到第一分区1024可以包含将高速缓存存储器120的每个集合430内的W1个路420分配到第一分区1024,其中
Figure BDA0003178038040000501
Figure BDA0003178038040000511
并且S是包含在高速缓存存储器120中的集合430的数量,使得每个集合430内的W2个路420被分配到第二分区1026,其中W2=N-W1
Figure BDA0003178038040000512
可替代地,分区方案312可以定义基于集合的方案(例如,集合分区方案312-2)。在基于集合的方案中,将M个高速缓存单元220分配到第一分区1024可以包含将E1个集合430分配到第一分区1024,其中
Figure BDA0003178038040000513
并且N是包含在每个集合430中的路420的数目,使得E2个集合被分配到第二分区1026,其中E2=S-E1
Figure BDA0003178038040000514
组件1010可以实施、包含和/或耦接到元数据逻辑1014。元数据逻辑1014可以被配置成映射、寻址、关联、引用和/或以其它方式访问(和/或提供对所述高速缓存单元的访问)分配到第一分区1024的高速缓存单元220。如本文所公开的,元数据逻辑1014可以实施和/或包含元数据映射方案314。元数据逻辑1014可以包含但不限于:电路系统、逻辑电路系统、存储器接口电路系统、存储器接口逻辑、开关电路系统、开关逻辑、路由电路系统、路由逻辑、存储器互连电路系统、存储器互连逻辑、I/O电路系统、模拟电路系统、数字电路系统、逻辑门、寄存器、开关、多路复用器、ALU、状态机、微处理器、嵌入式处理器、PIM电路系统、高速缓存逻辑210、分区逻辑310、分区方案312、元数据映射方案314等。
组件1010可以实施、包含和/或耦接到地址逻辑1016。地址逻辑1016可以被配置成映射、寻址、关联、引用和/或以其它方式访问(和/或提供对所述高速缓存单元的访问)分配到第二分区1026的高速缓存单元220。地址逻辑1016可以被配置成映射地址空间的地址204和/或使所述地址与存储在分配到第二分区1026的高速缓存单元220内的高速缓存数据128相关联。如本文所公开的,地址逻辑1016可以实施和/或包含地址映射方案316。地址逻辑1016可以包含但不限于:电路系统、逻辑电路系统、存储器接口电路系统、存储器接口逻辑、开关电路系统、开关逻辑、路由电路系统、路由逻辑、存储器互连电路系统、存储器互连逻辑、I/O电路系统、模拟电路系统、数字电路系统、逻辑门、寄存器、开关、多路复用器、ALU、状态机、微处理器、嵌入式处理器、PIM电路系统、高速缓存逻辑210、分区逻辑310、分区方案312、地址映射方案316等。
组件1010可以被进一步配置成至少部分地基于一或多个量度212来调整分区方案312。如本文所公开的,量度212可以被配置成量化预取性能。可替代地或另外地,量度212可以被配置成量化其它方面,如高速缓存性能(例如,高速缓存命中率、高速缓存未命中率等)。组件1010可以被配置成确定和/或监测量度212。组件1010可以至少部分地基于量度212中的一或多个量度来修改为元数据122分配的高速缓存存储器120的第一分区1024(和/或第一部分124)的大小。
组件1010可以实施、包含和/或耦接到预取器1030,以响应于与地址空间的地址204有关的请求202而更新维持在高速缓存存储器120的第一部分124内的元数据122和/或至少部分地基于维持在高速缓存存储器120的第一部分124内的元数据122来选择将预取到高速缓存存储器120的第二部分126中的数据。元数据122可以包含与地址空间的地址有关的任何适合的信息,包含但不限于:访问特性、访问统计、地址序列、地址历史、索引表、Δ序列、步长模式、相关性模式、特征向量、ML特征、ML特征向量、ML模型、ML建模数据等。预取器1030可以包含但不限于:电路系统、逻辑电路系统、存储器接口电路系统、高速缓存电路系统、开关电路系统、开关逻辑、路由电路系统、路由逻辑、互连电路系统、互连逻辑、I/O电路系统、模拟电路系统、数字电路系统、逻辑门、寄存器、开关、多路复用器、ALU、状态机、微处理器、嵌入式处理器、PIM电路系统、高速缓存逻辑210、预取逻辑230、步长预取器、相关性预取器、ML预取器、LSTM预取器等。
在一些方面,组件1010被配置成确定和/或监测与预取到高速缓存存储器120的第二部分126中的数据有关的量度212,并且响应于所述监测而修改高速缓存存储器120的第一部分124的大小。组件1010可以被配置成响应于量度212高于第一阈值而增加为元数据122分配的高速缓存存储器120的第一部分124的大小(并且减小第二部分126的大小),或者响应于量度212低于第二阈值而减小第一部分124的大小(并且增加第二部分126的大小)。可替代地或另外地,组件1010可以被配置成响应于第一部分124的当前大小低于元数据容量阈值以及以下中的一或多个而增加第一部分124的大小:a)高于预取性能阈值的预取性能量度212和/或b)低于高速缓存性能阈值的高速缓存性能量度212。相反,组件1010可以被配置成响应于第一部分124的当前大小高于预取容量阈值以及以下中的一或多个而减小高速缓存存储器120的第一部分124的大小:a)低于预取性能阈值的预取性能量度212和/或b)高于高速缓存性能阈值的高速缓存性能量度212。
组件1010可以被配置成将一或多个高速缓存单元220分配到第一分区1024。将高速缓存单元220分配到第一分区1024(和/或第一部分124)可以包含将元数据逻辑1014配置成寻址、引用一或多个高速缓存单元220和/或提供对所述一或多个高速缓存单元的访问以存储元数据122和/或从地址逻辑1016中移除、禁用、忽略和/或以其它方式排除高速缓存单元220。相反,将高速缓存单元220分配到第二分区1026和/或第二部分126可以包含将地址逻辑1016配置成寻址、引用高速缓存单元220和/或以其它方式将所述高速缓存单元用作可用高速缓存容量(例如,以存储高速缓存数据128)和/或从元数据逻辑1014中移除、禁用、忽略和/或以其它方式排除高速缓存单元220。将高速缓存单元220分配到第一部分124可以包含从高速缓存单元220中驱逐高速缓存数据128并且禁用高速缓存单元220的高速缓存标签326。将高速缓存单元220分配到第二部分126可以包含从高速缓存单元220中移除元数据122并且启用高速缓存单元220的高速缓存标签326。
组件1010可以被配置成增加第一部分124的大小(例如,响应于量度212高于第一阈值)。增加第一部分124的大小可以包含压缩存储在第二部分126内的高速缓存数据128。组件1010可以被配置成当增加第一部分124的大小(并且减小第二部分126的大小)时保持维持在高速缓存110内的高速缓存数据128的至少一部分。响应于增加第一部分124的大小,组件1010可以被配置成从所选高速缓存单元220中驱逐高速缓存数据128,所选高速缓存单元220保持分配到第二部分126。组件1010可以被进一步配置成将高速缓存数据128移动到所选高速缓存单元220。可以从将要从第二部分126分配到第一部分124的高速缓存单元220中移动高速缓存数据128。
相反,组件1010可以被配置成减小第一部分124的大小(例如,响应于量度212低于第二阈值)。减小第一部分124的大小可以包含压缩存储在第一部分124内的元数据122。组件1010可以被配置成当减小第一部分124的大小时保持元数据122的至少一部分。组件1010可以被配置成将为元数据122分配的高速缓存存储器120的量从第一组高速缓存单元220减少到第二组高速缓存单元220,所述第二组小于所述第一组。组件1010可以被进一步配置成压缩元数据122以将其存储在高速缓存单元220的第二组内。组件1010可以将存储在包含在第一组高速缓存单元220中的高速缓存单元220内的元数据122移动到包含在第二组高速缓存单元220中的高速缓存单元。
结论
尽管已经用特定于某些特征和/或方法的语言描述了自适应性高速缓存分区的实施方案,但是所附权利要求的主题不一定限于所描述的特定特征或方法。而是,特定特征和方法作为自适应性高速缓存分区的示例实施方案公开。

Claims (29)

1.一种方法,其包括:
为与地址空间有关的元数据分配高速缓存存储器的第一部分;
将与所述地址空间的地址相关联的数据写入到与所述高速缓存存储器的所述第一部分不同的所述高速缓存存储器的第二部分;以及
至少部分地基于与预取到所述高速缓存存储器的所述第二部分中的数据有关的量度来修改为与所述地址空间有关的所述元数据分配的所述高速缓存存储器的所述第一部分的大小。
2.根据权利要求1所述的方法,其进一步包括:
响应于与所述地址空间的地址有关的请求而更新维持在所述高速缓存存储器的所述第一部分内的所述元数据;以及
至少部分地基于维持在所述高速缓存存储器的所述第一部分内的与所述地址空间有关的所述元数据将数据预取到所述高速缓存存储器的所述第二部分中。
3.根据权利要求1所述的方法,其进一步包括在所述高速缓存存储器的所述第一部分内维持以下中的一或多个:地址序列、地址历史、索引表、Δ序列、步长模式、相关性模式、特征向量、机器学习ML特征、ML特征向量、ML模型或ML建模数据。
4.根据权利要求1所述的方法,其进一步包括:
监测与预取到所述高速缓存存储器的所述第二部分中的所述数据有关的所述量度;以及
响应于所述监测而修改所述高速缓存存储器的所述第一部分的所述大小。
5.根据权利要求4所述的方法,其进一步包括监测预取命中率、有用预取的数量、无效预取的数量或有用预取与无效预取的比率中的一或多个。
6.根据权利要求1所述的方法,其进一步包括以下中的一项:
响应于所述量度超过第一阈值而增加为与所述地址空间有关的所述元数据分配的所述高速缓存存储器的所述第一部分的所述大小;或者
响应于所述量度低于第二阈值而减小为与所述地址空间有关的所述元数据分配的所述高速缓存存储器的所述第一部分的所述大小。
7.根据权利要求6所述的方法,其进一步包括以下中的一项:
响应于所述量度超过所述第一阈值而减小所述高速缓存存储器的所述第二部分的大小;或者
响应于所述量度低于所述第二阈值而增加所述高速缓存存储器的所述第二部分的所述大小。
8.根据权利要求1所述的方法,其进一步包括响应于所述高速缓存存储器的所述第一部分的所述大小低于元数据容量阈值以及以下中的一或多个而增加为与所述地址空间有关的所述元数据分配的所述高速缓存存储器的所述第一部分的所述大小:
高于预取性能阈值的预取性能量度;或者
低于高速缓存性能阈值的高速缓存性能量度。
9.根据权利要求1所述的方法,其进一步包括响应于所述高速缓存存储器的所述第一部分的所述大小高于预取容量阈值以及以下中的一或多个而减小为与所述地址空间有关的所述元数据分配的所述高速缓存存储器的所述第一部分的所述大小:
低于预取性能阈值的预取性能量度;或者
高于高速缓存性能阈值的高速缓存性能量度。
10.根据权利要求1所述的方法,其进一步包括:
响应于为与所述地址空间有关的所述元数据分配所述高速缓存存储器的一组高速缓存单元,
从地址映射方案中移除所述一组高速缓存单元,并且
将所述一组高速缓存单元添加到元数据映射方案。
11.根据权利要求1所述的方法,其进一步包括:
响应于将一组高速缓存单元从所述第二部分分配到所述第一部分,
从所述一组高速缓存单元中的高速缓存单元中驱逐高速缓存数据,并且
禁用与所述一组高速缓存单元中的所述高速缓存单元相关联的高速缓存标签。
12.根据权利要求11所述的方法,其进一步包括:
从所选高速缓存单元中驱逐高速缓存数据,所述所选高速缓存单元将保持分配到所述第二部分;以及
将存储在从所述第二部分分配到所述第一部分的所述一组高速缓存单元中的高速缓存单元内的高速缓存数据移动到所述所选高速缓存单元。
13.根据权利要求1所述的方法,其进一步包括将为与所述地址空间有关的所述元数据分配的高速缓存存储器的量从所述高速缓存存储器的第一组高速缓存单元减少到所述高速缓存存储器的第二组高速缓存单元,所述第二组小于所述第一组,所述减少包括:
压缩所述元数据以将其存储在所述第二组高速缓存单元内;
将存储在包含在所述第一组高速缓存单元中的高速缓存单元内的元数据移动到包含在所述第二组高速缓存单元中的高速缓存单元;以及
将包含在所述第一组高速缓存单元中的一或多个高速缓存单元分配到所述高速缓存存储器的所述第二部分。
14.根据权利要求1所述的方法,其进一步包括:
为与所述地址空间有关的所述元数据分配所述高速缓存存储器的一定数量的路;以及
至少部分地基于所述量度修改为与所述地址空间有关的所述元数据分配的所述高速缓存存储器的路的所述数量。
15.根据权利要求14所述的方法,其进一步包括:
将所述高速缓存存储器的集合的所述路划分成为与所述地址空间有关的所述元数据分配的第一组和分配用于高速缓存与所述地址空间相关联的数据的第二组;以及
将高速缓存数据从所述第一组内的路移动到所述第二组内的路。
16.根据权利要求1所述的方法,其进一步包括:
为与所述地址空间有关的所述元数据分配所述高速缓存存储器的一定数量的集合;以及
至少部分地基于所述量度修改为与所述地址空间有关的所述元数据分配的所述高速缓存存储器的集合的所述数量。
17.根据权利要求1所述的方法,其进一步包括:
响应于将所述高速缓存存储器的所述第一部分的容量从第一容量减小到小于所述第一容量的第二容量而选择与所述地址空间有关的所述元数据的子集;以及
将与所述地址空间有关的所述元数据的所选子集存储在所述高速缓存存储器的所述第一部分的减小的容量内。
18.一种设备,其包括:
存储器阵列,所述存储器阵列被配置为高速缓存存储器;以及
逻辑,所述逻辑耦接到所述存储器阵列,所述逻辑被配置成:
分配所述高速缓存存储器的第一部分以存储与地址空间有关的元数据;
确定与加载到所述高速缓存存储器的第二部分中的高速缓存数据有关的量度,所述第二部分不同于所述第一部分;并且
至少部分地基于所确定的量度来修改分配到所述第一部分的所述高速缓存存储器的量。
19.根据权利要求18所述的设备,其进一步包括分区逻辑,所述分区逻辑被配置成将所述高速缓存存储器的多个高速缓存单元中的第一组高速缓存单元分配到所述第一部分,并且将所述多个高速缓存单元中的不同的第二组高速缓存单元分配到所述第二部分。
20.根据权利要求19所述的设备,其中所述高速缓存存储器的所述高速缓存单元包括以下中的一或多个:存储器单元、块、存储器块、高速缓存块、高速缓存存储器块、页、存储器页、高速缓存页、高速缓存存储器页、高速缓存线、硬件高速缓存线、路、存储器阵列的行或存储器阵列的列。
21.根据权利要求19所述的设备,其进一步包括预取逻辑,所述预取逻辑被配置成:
将与所述地址空间有关的元数据存储在所述第一组高速缓存单元内;
至少部分地基于存储在所述第一组高速缓存单元内的所述元数据来确定即将到来的请求的地址;并且
将对应于所确定的地址中的一或多个地址的数据写入到所述第二组高速缓存单元。
22.根据权利要求19所述的设备,其中:
所述高速缓存存储器包括多个集合,每个集合包括多个路,每个路对应于所述高速缓存存储器的所述多个高速缓存单元中的相应的高速缓存单元;并且
所述第一部分包括在所述多个集合中的每个集合内的一或多个路。
23.根据权利要求22所述的设备,其中为了增加分配到所述第一部分的所述高速缓存存储器的所述量,所述逻辑被配置成:
从所述多个集合中的一个集合的所选路中驱逐高速缓存数据;
将高速缓存数据从所述集合的指定路移动到所述集合的所述所选路;
禁用所述指定路的高速缓存标签;并且
将所述集合的所述指定路包含在所述高速缓存存储器的所述第一部分中。
24.根据权利要求19所述的设备,其中:
所述高速缓存存储器包括多个集合,每个集合包括多个路;
所述第一部分包括所述多个集合的第一组;
所述第二部分包括所述多个集合的第二组,所述第二组不同于所述第一组;并且
为了增加分配到所述第一部分的所述高速缓存存储器的所述量,所述逻辑被配置成:
从所述第二组的集合中驱逐高速缓存数据;
禁用包含在所述集合中的每个路的高速缓存标签;并且
将所述集合包含在所述第一组中。
25.一种系统,其包括:
高速缓存存储器,所述高速缓存存储器包括多个高速缓存单元;
接口,所述接口被配置成耦接到计算装置的互连件;以及
逻辑,所述逻辑耦接到所述接口和所述高速缓存存储器,所述逻辑被配置成:
将所述高速缓存存储器分区成第一部分和第二部分,为与和存储器相关联的地址空间有关的元数据分配所述第一部分,并且所述第二部分被分配用于存储对应于所述地址空间的地址的高速缓存数据;
将与所述地址空间有关的元数据写入到所述高速缓存存储器的所述第一部分;
至少部分地基于写入到所述高速缓存存储器的所述第一部分的所述元数据将数据写入到所述高速缓存存储器的所述第二部分中;并且
至少部分地基于与写入到所述高速缓存存储器的所述第二部分中的所述数据有关的量度来修改分配到所述第一部分的所述高速缓存存储器的量。
26.根据权利要求25所述的系统,其中所述逻辑被进一步配置成:
将所述高速缓存存储器的多个集合中的每个集合内的第一数量的路分配到所述第一部分;并且
将与所述地址空间有关的所述元数据存储在所述第一数量的路内,所述第一数量的路被分配在所述高速缓存存储器的所述多个集合中的每个集合内。
27.根据权利要求26所述的系统,其中所述逻辑被进一步配置成:
将所述高速缓存存储器的所述多个集合中的每个集合内的第二数量的路分配到所述第二部分;并且
将与所述地址空间的地址相关联的数据高速缓存在所述第二数量的路内,所述第二数量的路被分配在所述高速缓存存储器的所述多个集合中的每个集合内。
28.根据权利要求27所述的系统,其中为了增加分配到所述第一部分的所述高速缓存存储器的所述量,所述逻辑被进一步配置成将所述高速缓存存储器的所述多个集合中的每个集合内的指定路从所述第二部分分配到所述第一部分,所述分配包含被进一步配置成:
从所述多个集合中的一个集合的所选路中驱逐高速缓存数据;
将高速缓存数据从指定路移动到所述所选路;以及
禁用所述指定路的高速缓存标签。
29.根据权利要求25所述的系统,其中所述逻辑被进一步配置成:
将所述高速缓存存储器的多个集合中的第一组一或多个集合分配到所述第一部分;
将所述高速缓存存储器的所述多个集合中的第二组一或多个集合分配到所述第二部分,所述第二组不同于所述第一组;
将与所述地址空间有关的所述元数据存储在所述第一组一或多个集合内;并且
将与所述地址空间的地址相关联的数据高速缓存在所述第二组一或多个集合内。
CN202110838429.8A 2020-08-19 2021-07-23 自适应性高速缓存分区 Pending CN114077553A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/997,811 US11507516B2 (en) 2020-08-19 2020-08-19 Adaptive cache partitioning
US16/997,811 2020-08-19

Publications (1)

Publication Number Publication Date
CN114077553A true CN114077553A (zh) 2022-02-22

Family

ID=80269585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110838429.8A Pending CN114077553A (zh) 2020-08-19 2021-07-23 自适应性高速缓存分区

Country Status (2)

Country Link
US (2) US11507516B2 (zh)
CN (1) CN114077553A (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
KR20220120016A (ko) * 2021-02-22 2022-08-30 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US20220358235A1 (en) * 2021-05-05 2022-11-10 EMC IP Holding Company LLC Access Control of Protected Data Using Storage System-Based Multi-Factor Authentication
US11893251B2 (en) 2021-08-31 2024-02-06 Apple Inc. Allocation of a buffer located in system memory into a cache memory
US11704245B2 (en) * 2021-08-31 2023-07-18 Apple Inc. Dynamic allocation of cache memory as RAM
US20230350598A1 (en) * 2022-04-28 2023-11-02 Micron Technology, Inc. Performance monitoring for a memory system
US20240111425A1 (en) * 2022-09-29 2024-04-04 Advanced Micro Devices, Inc. Tag and data configuration for fine-grained cache memory
KR102561809B1 (ko) * 2023-01-10 2023-07-31 메티스엑스 주식회사 적응적 캐시 풀 관리 방법 및 장치

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721874A (en) 1995-06-16 1998-02-24 International Business Machines Corporation Configurable cache with variable, dynamically addressable line sizes
US7590800B2 (en) 2006-06-30 2009-09-15 Seagate Technology Llc 2D dynamic adaptive data caching
US7873791B1 (en) * 2007-09-28 2011-01-18 Emc Corporation Methods and systems for incorporating improved tail cutting in a prefetch stream in TBC mode for data storage having a cache memory
US8069311B2 (en) 2007-12-28 2011-11-29 Intel Corporation Methods for prefetching data in a memory storage structure
US8266409B2 (en) 2009-03-03 2012-09-11 Qualcomm Incorporated Configurable cache and method to configure same
US8180763B2 (en) 2009-05-29 2012-05-15 Microsoft Corporation Cache-friendly B-tree accelerator
US20120278560A1 (en) 2009-10-04 2012-11-01 Infinidat Ltd. Pre-fetching in a storage system that maintains a mapping tree
US8589627B2 (en) 2010-08-27 2013-11-19 Advanced Micro Devices, Inc. Partially sectored cache
US8527704B2 (en) 2010-11-11 2013-09-03 International Business Machines Corporation Method and apparatus for optimal cache sizing and configuration for large memory systems
US9304933B2 (en) 2011-02-18 2016-04-05 Intel Corporation Techniques to request stored data from a memory
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US9769030B1 (en) * 2013-02-11 2017-09-19 Amazon Technologies, Inc. Page prefetching
US10001927B1 (en) 2014-09-30 2018-06-19 EMC IP Holding Company LLC Techniques for optimizing I/O operations
KR102130578B1 (ko) * 2014-12-02 2020-07-06 에스케이하이닉스 주식회사 반도체 장치
JP6438777B2 (ja) 2015-01-30 2018-12-19 ルネサスエレクトロニクス株式会社 画像処理装置および半導体装置
US9563564B2 (en) 2015-04-07 2017-02-07 Intel Corporation Cache allocation with code and data prioritization
US9696931B2 (en) * 2015-06-12 2017-07-04 International Business Machines Corporation Region-based storage for volume data and metadata
KR102362941B1 (ko) 2015-09-03 2022-02-16 삼성전자 주식회사 적응적으로 캐시를 관리하는 방법 및 장치
US9734070B2 (en) 2015-10-23 2017-08-15 Qualcomm Incorporated System and method for a shared cache with adaptive partitioning
US9767028B2 (en) 2015-10-30 2017-09-19 Advanced Micro Devices, Inc. In-memory interconnect protocol configuration registers
US9832277B2 (en) 2015-11-13 2017-11-28 Western Digital Technologies, Inc. Systems and methods for adaptive partitioning in distributed cache memories
US10387315B2 (en) 2016-01-25 2019-08-20 Advanced Micro Devices, Inc. Region migration cache
US10503652B2 (en) 2017-04-01 2019-12-10 Intel Corporation Sector cache for compression
US10678692B2 (en) 2017-09-19 2020-06-09 Intel Corporation Method and system for coordinating baseline and secondary prefetchers
US10394717B1 (en) * 2018-02-16 2019-08-27 Microsoft Technology Licensing, Llc Central processing unit cache friendly multithreaded allocation
US11294808B2 (en) 2020-05-21 2022-04-05 Micron Technology, Inc. Adaptive cache
US11409657B2 (en) 2020-07-14 2022-08-09 Micron Technology, Inc. Adaptive address tracking
US11422934B2 (en) 2020-07-14 2022-08-23 Micron Technology, Inc. Adaptive address tracking

Also Published As

Publication number Publication date
US20220058132A1 (en) 2022-02-24
US11507516B2 (en) 2022-11-22
US20230169011A1 (en) 2023-06-01

Similar Documents

Publication Publication Date Title
US11507516B2 (en) Adaptive cache partitioning
US11294808B2 (en) Adaptive cache
US9152569B2 (en) Non-uniform cache architecture (NUCA)
KR101826073B1 (ko) 메모리 관리를 위한 캐시 동작들
US7558920B2 (en) Apparatus and method for partitioning a shared cache of a chip multi-processor
US7584327B2 (en) Method and system for proximity caching in a multiple-core system
CN111052095B (zh) 使用动态预取深度的多行数据预取
US9317448B2 (en) Methods and apparatus related to data processors and caches incorporated in data processors
US20220171709A1 (en) Forward caching memory systems and methods
US6549983B1 (en) Cache memory system and method for managing the same
CN112639748B (zh) 异步正向缓存存储器系统和方法
US20180088853A1 (en) Multi-Level System Memory Having Near Memory Space Capable Of Behaving As Near Memory Cache or Fast Addressable System Memory Depending On System State
US20180095884A1 (en) Mass storage cache in non volatile level of multi-level system memory
US8589627B2 (en) Partially sectored cache
KR102254066B1 (ko) 포워드 캐싱 애플리케이션 프로그래밍 인터페이스 시스템 및 방법
US20060143400A1 (en) Replacement in non-uniform access cache structure
US7293141B1 (en) Cache word of interest latency organization
US10725675B2 (en) Management apparatus, information processing apparatus, management method, and computer program product
US11693778B2 (en) Cache grouping for increasing performance and fairness in shared caches
Dandamudi Cache Memory
WO2017091197A1 (en) Cache manager-controlled memory array

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination