CN116249970A - 可扩展的基于区域的目录 - Google Patents
可扩展的基于区域的目录 Download PDFInfo
- Publication number
- CN116249970A CN116249970A CN202180065752.4A CN202180065752A CN116249970A CN 116249970 A CN116249970 A CN 116249970A CN 202180065752 A CN202180065752 A CN 202180065752A CN 116249970 A CN116249970 A CN 116249970A
- Authority
- CN
- China
- Prior art keywords
- cache
- field
- region size
- bit
- region
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 64
- 230000008859 change Effects 0.000 claims abstract description 17
- 238000000034 method Methods 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 18
- 239000004744 fabric Substances 0.000 claims description 10
- 230000008520 organization Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 238000005192 partition Methods 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0824—Distributed directories, e.g. linked lists of caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0826—Limited pointers directories; State-only directories without pointers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种高速缓存目录,该高速缓存目录包括一个或多个高速缓存目录,该高速缓存目录可配置为在每个高速缓存目录条目内在第一字段与第二字段之间互换至少一位,以改变所表示的存储器的区域的大小和在高速缓存子系统中跟踪的高速缓存行的数量。
Description
背景技术
现代计算系统具有多个中央处理单元(CPU),其通常包括并依赖于高速缓存分级结构中的多个高速缓存以改善处理器和存储器性能。与主存储器相比,高速缓存是存储频繁存取的数据的较小、较快的存储器设备,因此可以低延迟存取该数据。此类高速缓存设备通常实现于静态随机存取存储器(SRAM)中,并且通常位于发出存储器请求的处理单元与主存储器设备之间。存储器侧高速缓存是附接到特定存储器设备或存储器的分区的专用高速缓存,该专用高速缓存缓存写入存储器设备以及由其他设备从该存储器设备读取的数据。
在多节点计算机系统中,必须采取特殊的预防措施来保持由不同处理节点正在使用的数据的一致性。例如,如果处理器尝试访问某个存储器地址处的数据,则该处理器必须首先确定存储器是否存储在另一个高速缓存中并且已经被修改。为了实现该高速缓存一致性协议,高速缓存通常包含多个状态位以指示高速缓存行的状态,来保持整个系统中的数据一致性。一种常见的一致性协议例如是“MOESI”协议,其中每个字母表示高速缓存行的状态。这些状态如下:高速缓存行已被修改(M),高速缓存行是专用的(E)或共享的(S),或者高速缓存行是无效的(I)。占用(O)状态指示该行在一个高速缓存中被修改,在其他高速缓存中可能存在共享副本,以及存储器中的数据是过时的。每个高速缓存行包括高速缓存目录中的状态位,该高速缓存目录持续跟踪当前由系统使用的高速缓存行,以指示该行处于哪个MOESI状态。
基于各种类型的处理需求以及高速缓存大小和主存储器大小的增加,在多处理器系统中管理高速缓存目录方案变得非常困难。
附图说明
本文附图的图示中所示的实施方案是作为示例而非作为限制。在附图中:
图1是计算系统的一个实施方案的框图。
图2是内核复合体的一个实施方案的框图。
图3是多CPU处理器系统的一个实施方案的框图。
图4是高速缓存目录的一个实施方案的框图。
图5是示出用于改变在处理器系统中跟踪的高速缓存行的区域大小的方法的一个实施方案的过程的流程图。
图6是示出用于增大或减小区域大小并且根据需要重新分配区域的方法的一个实施方案的过程的流程图。
具体实施方式
以下描述阐述了众多具体细节诸如特定系统、部件、方法等的示例,以便提供对实施方案的良好理解。然而,对于本领域技术人员将显而易见的是,可在没有这些具体细节的情况下实践至少一些实施方案。在其他情况下,未详细描述众所周知的部件或方法,或者以简单的框图格式呈现众所周知的部件或方法,以便避免不必要地混淆实施方案。因此,所阐述的具体细节仅是示例性的。特定具体实施可因这些示例性细节而异,并且仍设想在实施方案的范围内。
随着CPU数量增加,相应的高速缓存和高速缓存大小变得更大,高速缓存目录也按比例扩大以覆盖更大数量的条目。通常,按照每个高速缓存行访问高速缓存目录,以计算出该行已缓存在系统中的确切位置以及该行的当前状态,来在接收到请求时正确地过滤出监听。在一个实施方案中,为了减小目录消耗的芯片面积的大小,高速缓存目录跟踪对应于系统中的高速缓存行组(而不是单个高速缓存行)的存储器的区域。以此方式,可针对该整个高速缓存行组共同做出决策。
高速缓存目录方案的一个实施方案可静态地或动态地重新配置存储器的区域的大小和在每个高速缓存目录条目中跟踪的高速缓存行的数量。图1是计算系统100的一个实施方案的框图,该计算系统包括多个内核复合体105A-105N和多个主节点130A-130N,该多个主节点可被配置为改变存储器的区域的大小和每个高速缓存目录条目跟踪的高速缓存行的数量。计算系统100还包括输入/输出(I/O)接口120、数据织构/总线125和网络接口135。在其他实施方案中,计算系统100可包括其他部件和/或以其他配置布置。
在一个实施方案中,每个内核复合体105A-105N包括处理部件,诸如一个或多个处理器内核或其他专用处理部件。内核复合体105A-105N内的每个处理器内核包括具有一个或多个级别的高速缓存的高速缓存子系统。在一个实施方案中,高速缓存子系统包括连接至每个内核复合体105A-105N的共享高速缓存(例如,图2中的三级(L3)高速缓存230)。在一些实施方案中,一个或多个内核复合体105A-105N可包括具有高度并行架构的数据并行处理器,诸如图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等中的一者或多者。如本文所用,“内核复合体”也可称为“处理节点”或“CPU”或“CPU复合体”。
在一个实施方案中,主节点130可包括一致性从设备、高速缓存目录和耦接到任何数量和类型的存储器设备(未示出)的存储器控制器中的一者或多者。例如,耦接到主节点130的存储器设备可包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND闪存存储器、NOR闪存存储器、铁电随机存取存储器(FeRAM)等。
I/O(输入/输出)接口120表示任何数量和类型的I/O接口,例如但不限于各种类型的外围部件互连(PCI)总线、吉比特以太网(GBE)总线、通用串行总线(USB)、专用处理器(例如,平台安全处理器、图形处理器)和系统管理逻辑。各种类型的外围设备可耦接到I/O接口120。此类外围设备包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录设备、外部存储设备、网络接口卡等。
在各种实施方案中,计算系统100可以是服务器、台式计算机、膝上型电脑、移动设备、游戏机、流媒体设备、可穿戴设备或各种其他类型的计算系统或设备中的任一种。计算系统100中示出的部件的数量、取向和类型仅作为示例,并且可以基于应用程序和系统架构而在实施方案之间改变。
图2是内核复合体200(例如,图1的内核复合体105A-105N)的一个实施方案的框图。在一个实施方案中,内核复合体200可包括四个处理器内核210A-210D和高速缓存子系统,该高速缓存子系统包括一级(L1)高速缓存215A-215D、二级(L2)高速缓存220A-220D和三级(L3)高速缓存230。高速缓存子系统可包括被配置为存储数据块(未示出)的高速的高速缓存存储器(例如,L1高速缓存215A-215D、L2高速缓存220A-220D和L3高速缓存230)。如本文所用,“块”是存储在高速缓存存储器内的连续存储器位置中的一组字节,出于一致性目的,其被视为单元。另外,术语“高速缓存块”、“块”、“高速缓存行”和“行”中的每一者在本文中是可互换的。在一些实施方案中,块还可以是高速缓存中的分配和释放单元。块可从系统内的其他高速缓存,诸如从其他内核复合体(例如,图1的内核复合体105A-105N),或从主存储器检索,例如可通过图1的主节点130A检索。
另外,在一个实施方案中,L3高速缓存230由处理器内核210A-210D中的每个处理器内核共享。L3高速缓存230耦接到用于访问数据织构(例如,图1的数据织构/总线125)的一致性主设备和存储器子系统(未示出)。在其他实施方案中,内核复合体200可包括更少或更多的处理器内核(例如,处理器内核210A)和对应的L2高速缓存(例如,L2高速缓存220A)。在另外的其他实施方案中,内核复合体200可包括其他类型的可寻址高速缓存子系统,该可寻址高速缓存子系统可包括不同数量、类型和级别的高速缓存存储器而不脱离本公开的范围。
图3是处理器系统300的一个实施方案的框图。在一个实施方案中,处理器系统300包括多个内核复合体(如CPU 305A-305N所示)。在各种实施方案中,CPU(例如,CPU 305A)的数量和每个CPU的内核(例如,内核308A-308N)的数量可根据设计选择而改变。每个CPU305A-305N还包括高速缓存子系统310A-310N中的对应的一个高速缓存子系统。在各种实施方案中,高速缓存子系统310A-310N可在大小和结构上改变,如上文参考图2所述。
在一个实施方案中,每个CPU 305A-305N连接至对应的一致性主设备315A-315N,该一致性主设备进一步连接至数据织构/总线318。如本文所用,“一致性主设备”被限定为处理在互连(例如,数据织构/总线318)上流动的业务,并且管理高速缓存的一致性的代理,其包括每个一致性主设备(例如,一致性主设备315A-315N),每个一致性主设备协同工作以生成、接收和处理一致性相关的消息和探针来同步处理器系统300内的共享高速缓存数据的副本。
在各种实施方案中,通过对应的一致性主设备315A-315N和数据织构/总线318,每个CPU 305A-305N可连接至一个或多个一致性从设备。例如,CPU 305A可连接至可访问彼此的高速缓存目录的多个一致性从设备,诸如一致性从设备(CS)320A-320D和一致性从设备321A-321D,每个一致性从设备通过一致性主设备315A和数据织构/总线318连接。一致性从设备320A连接至存储器控制器(MC)330A和高速缓存目录(CD)325A,而一致性从设备321A耦接到存储器控制器331A和高速缓存目录326A。每个存储器控制器330A-330N和331A-331N连接至存储器设备340A-340N和341A-N中的相应的一个存储器设备。每个存储器控制器(诸如存储器控制器330A)的功能中的一个功能是提供处理器系统300的元件访问存储器设备340A-340N和341A-341N。在各种实施方案中,尽管示出为一个块,但存储器设备340A-340N和341A-341N中的每个存储器设备可由一个或多个物理存储器构成并且可以是适合于存储数据的任何类型,诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等。
在一个实施方案中,每个高速缓存目录(例如高速缓存目录325A)包括一个或多个条目,并且每个条目对应于存储器340A中的区域。每个条目包括信息(例如,参见图4)以跟踪处理器系统300内缓存的数据,该缓存的数据对应于存储器340A中的区域内的数据。区域大小(有时称为页面大小)可由存储器340A中的地址块限定,并且该地址可根据存储器的组织方式(例如,存储器是否跨信道交错)和存储器地址映射基础而在实施方案之间改变。在一个实施方案中,条目的一个或多个字段可配置为改变正由高速缓存目录跟踪的存储器340A中的区域的页面大小。
在一个实施方案中,设备340A-340N和341A-341N中的存储器在存储器控制器330A-330N和331A-331N中的每个存储器控制器中被均等地划分,并且每个一致性从设备(例如,一致性从设备320A-320N和321A-321N)和它们相应的高速缓存目录(例如,高速缓存目录325A-325N和326A-326N)管理该存储器的相应的相等和连续的部分。另选地,存储器设备340A-340N和341A-341N中的一些或全部存储器设备具有不同的存储容量。在各种实施方案中,一致性从设备可访问一个或多个其他一致性从设备的高速缓存目录。例如,一致性从设备320A可访问处理器系统300内的多个其他高速缓存目录,诸如326A-326N和325B-325N。
在一个实施方案中,当一致性从设备320A接收到以其对应的存储器控制器330A为目标的存储器请求时,一致性从设备320A在其对应的高速缓存目录325A中执行查找,以确定该请求是否以由高速缓存目录325A中的条目跟踪的涵盖在存储器340A的区域内的存储器位置中的数据为目标,以及该存储器请求是否导致高速缓存命中,该高速缓存命中意味着可在存储在与该区域相关联的高速缓存子系统310A-310N中的高速缓存行中找到所请求的数据。在一个实施方案中,如果查找导致命中,则一致性从设备320A将探针发送到在高速缓存目录中的命中条目中被识别的CPU(例如,CPU 305A-305N)。由一致性从设备320A生成的探针的类型取决于由命中条目指定的一致性状态。
在一个实施方案中,一致性从设备320A可通过在高速缓存目录325A中的每个条目的标签字段与引用计数字段之间互换至少一位,重新配置高速缓存目录325A以改变区域大小并且因此改变在高速缓存子系统310A-310N内跟踪的高速缓存行的数量。
增大区域大小并且因此增加每个高速缓存目录条目跟踪的高速缓存行的数量减小在处理系统中进行跟踪的高速缓存行的粒度。因此,高速缓存目录可以容纳更大的高速缓存系统大小。
尽管在图3中未示出,但在其他实施方案中,可存在从数据织构/总线318到为避免混淆附图而未示出的其他部件的其他连接。例如,在另一个实施方案中,数据织构/总线318包括到一个或多个I/O接口和一个或多个I/O设备的连接,诸如图1所示。
图4是高速缓存目录400的一个实施方案的框图。在一个实施方案中,高速缓存目录400包括高速缓存目录控制器402和高速缓存目录阵列404,该高速缓存目录阵列包括高速缓存目录条目406和高速缓存目录条目408。高速缓存目录400还包括高速缓存目录阵列410,高速缓存目录阵列包括高速缓存目录条目412并且被示出为在已编程的位重新分派之后增大区域大小,这将在下文进一步描述。在一个实施方案中,阵列404和阵列410的每个条目包括状态字段415、扇区有效字段420、集群有效字段425、引用计数字段430和标签字段435。在其他实施方案中,阵列404和阵列410的条目可包括其他字段并且可根据设计选择而布置。
在示出区域大小的改变的一个实施方案中,启动位重新分派以增大每个高速缓存目录条目的区域大小。这增加了针对处理器系统(例如,图3的处理器系统300中的CPU(A-N))中的每个CPU复合体的引用计数字段430的高速缓存行使用跟踪容量。在各种实施方案中,引用计数字段430的宽度取决于处理器系统中的CPU复合体的数量,因为每个CPU复合体包括待跟踪的高速缓存行。
引用计数字段430用于跟踪在处理器系统中某处缓存的区域的高速缓存行的数量。对于对来自该区域的高速缓存行的每个新订阅,使引用计数字段430递增。对于来自该区域的从该高速缓存中逐出的每个高速缓存行,使引用计数字段430递减。最终,如果引用计数字段430达到零,则高速缓存目录条目(例如,条目406)被标记为无效,并且该条目可被重新用于存储器中的另一个区域。通过使用引用计数字段430,可以降低区域无效探针的发生率。当高速缓存目录条目与在处理器系统的高速缓存中不再具有活动高速缓存行的区域相关联时,引用计数字段430允许回收高速缓存目录条目。
例如,返回到图4,假设每个条目的位宽度是固定的,为了使每个高速缓存目录条目的区域大小加倍,将来自标签字段435的标签位移位到引用计数字段430。针对2K区域和48位地址宽度,前11[10-0]位用于偏移并且限定区域大小(2^11=2048(2K))。假设64字节的高速缓存行大小和2千字节(K)区域大小,每个区域的高速缓存行的数量将是2K/64或每个区域32个高速缓存行。标签字段435将是来自该地址的[47-11]的最高有效36位,并且该地址的11个最低有效位对应于如上所述的2K区域大小。因此,如高速缓存目录条目406和408中所示,引用计数字段430将具有对应于要跟踪的高速缓存行的总数量(如由每个CPU集群的高速缓存行的数量和CPU集群的总数量确定)的Z位。
现在为了将区域大小增大到4K,根据一个实施方案,将位从标签字段435重新分派到引用计数字段430,使得标签字段435现在包括来自[47-12]的最高有效35位,并且最低有效位[11-0]是针对4k(2^12)区域大小的偏移。现在针对相同的64字节高速缓存行大小,4K区域将包括4K/64或每个区域64个高速缓存行。将位从标签字段435移位之后,如高速缓存条目412中所示的引用计数字段430是Z+1位,从而以二进制使跟踪的行的数量加倍。在其他实施方案中,可通过将位从引用计数字段430重新分派到标签字段435来减小区域,或者可将多于一位重新分派到标签字段435和引用计数字段430或从该标签字段和该引用计数字段重新分派以创建更大或更小的区域大小。
集群有效字段425包括位向量以跟踪与由高速缓存目录条目表示的限定的区域相关联的内核复合体(例如,图3中的CPU 305A-305N)内的高速缓存行的存在。例如,可存在8个CPU内核被一起分组为4个CPU集群,每个CPU集群中有2个CPU内核。在该示例中,集群有效字段425将具有4位,每位表示处理器系统中的8个CPU内核中的2个CPU内核。如果,例如,如果集群有效字段425向量是[1001],则仅第一CPU集群和第四CPU集群已与由区域表示的高速缓存行中的任一个高速缓存行交互。在一个实施方案中,扇区有效字段420存储对应于区域内的高速缓存行的子组或扇区的位向量以提供区域内的细粒度跟踪。例如,如上所述,针对64字节的高速缓存行和2千字节(K)的区域大小,每个区域的高速缓存行的数量将是2K/64或每个区域32个高速缓存行。针对8位的扇区有效字段420,每位将必须跟踪32/8或每个扇区4个高速缓存行。例如,如果如上所述用相同的64字节的高速缓存行大小将区域大小增大到4K,则跟踪的高速缓存行的数量将是4K/64或者每个区域64行。然后,针对相同的8位的扇区有效字段420,每位将必须跟踪64/8或每个扇区8个高速缓存行。粒度的减小可被某些未跨多个高速缓存复合体广泛共享的应用程序所容许,其益处就是,例如通过增大区域大小来获得附加的高速缓存系统覆盖。
在一个实施方案中,状态字段415包括状态位,该状态位指定与区域相关联的高速缓存行子系统中的多个高速缓存行的聚合状态。针对高速缓存行的聚合状态由每个区域的最限制的高速缓存行状态限定。例如,如果针对由多个高速缓存行组成的整个区域的至少一个高速缓存行为脏,则针对与区域相关联的高速缓存目录条目的状态字段415被设置为“脏”。类似地,如果整个给定区域的至少一个高速缓存行被共享,则针对给定区域的状态被设置为“共享”。在各种实施方案中,可以存在以类似方式归因于整个区域的区域的单个高速缓存行条目的其他状态。
子组或扇区的组织以及扇区有效字段420中的位的数量可在不同实施方案之间改变。在上文所述的一个实施方案中,扇区有效字段具有8位,然而,在其他实施方案中,扇区有效字段可具有附加的位以增加粒度或具有较少位以减小粒度。另外,在一个实施方案中,可使用存储在扇区有效字段420中的偏移来识别分区。每个偏移识别在给定区域内的给定分区的位置。在另一个实施方案中,扇区有效字段420还可指示针对给定区域内的每个分区的独立拥有者和独立状态。
图5是示出用于改变处理器系统中的存储器的区域大小和每个高速缓存目录条目中跟踪的高速缓存行的数量的方法的一个实施方案的过程500的流程图。在一个实施方案中,通过在系统启动时读取并执行配置设置和指令来启动过程500。在其他实施方案中,一个或多个程序或应用程序可被配置为自动地监视高速缓存利用率并且动态地启动过程500,或者可被配置为接受输入(诸如用户输入)以启动过程500。在其他实施方案中,可针对一个或多个计算系统远程地监视高速缓存利用率,并且每个系统可被配置为基于远程命令启动过程500。
在框502处,处理器系统将高速缓存目录从跟踪第一区域大小重新配置为跟踪第二区域大小,区域大小由从对应于存储器(例如,图3中的存储器340A-340N和341A-341N)中的起始地址和页面大小的标签字段(例如,图4中的标签字段435)中的地址移除的偏移位的数量限定。该过程在框504处继续,其中通过在标签字段与引用计数字段之间互换至少一位,重新配置高速缓存目录条目阵列字段(参见图4)。如上所述,根据位重新分派的方向,该重新分派增大或减小对应于存储器页面大小的区域和处理器系统中跟踪的高速缓存行的数量。在完成重新配置后,在框506处,高速缓存目录现在可基于位重新分派、基于重新配置的区域大小来跟踪高速缓存子系统中的高速缓存行。
图6是示出用于增大或减小区域大小并且基于利用率重新分配区域的方法的一个实施方案的过程600的流程图。在框602处开始,处理器系统(例如,图3中的处理器系统300)内的主节点接收信号,以将一个或多个高速缓存目录从第一区域大小重新配置为第二区域大小,该第二区域大小如由从对应于存储器中的起始地址和页面大小的标签字段中的地址移除的偏移位的数量限定。
在决策框604处,基于在框602中接收到的信号增大或减小区域大小。如果区域大小增大,则在框606处,在一个实施方案中,高速缓存目录中的高速缓存目录控制器(例如,图4中的高速缓存目录控制器402)通过将一位或多位从标签字段的最低有效位重新分派到引用计数字段来配置高速缓存目录条目阵列(例如,图4中的高速缓存目录阵列404)。重新分派的每位使如由标签字段中的地址偏移限定的区域大小加倍,并且添加到引用字段的每位使该字段可在处理器系统的一个或多个高速缓存子系统(例如,图3中的高速缓存子系统310A-310N)中跟踪的高速缓存行的数量加倍。在一个实施方案中,在框608处,增加的待跟踪的高速缓存行意味着:扇区有效字段中的每位基于更大的区域大小和扩展的引用计数字段来跟踪更多的高速缓存行(参见上文参考图4中的扇区有效字段420示出的2K/4K示例)。
类似地,如果区域大小减小,则在框610处,高速缓存目录中的高速缓存目录控制器通过将一位或多位从引用计数字段重新分派到标签字段来配置高速缓存目录条目阵列。重新分派的每位使如由标签字段中的地址偏移限定的区域大小减半,并且从引用字段减少的每位使该字段可在处理器系统的一个或多个高速缓存子系统中跟踪的高速缓存行的数量减半。在一个实施方案中,在框612处,减少的待跟踪的高速缓存行意味着:扇区有效字段中的每位基于更小的区域大小和减小的引用计数字段来跟踪更少的高速缓存行。
在一个实施方案中,在框614处,可监视引用计数来确定处理器系统的高速缓存子系统中有多少高速缓存行被订阅或正被使用。例如,引用计数可针对与被逐出的区域相关联的每个高速缓存行递减,或者针对被添加的每个高速缓存行递增。在一个实施方案中,当引用计数递减到低于阈值时,则触发区域大小的改变。尽管图6的框被示为依次执行,但在其他实施方案中,框(例如框606-614或框610-614)可彼此并行或同时执行。
公开了一种用于维护高速缓存目录的方法,该高速缓存目录包括用于跟踪针对第一区域大小的高速缓存行的一个或多个高速缓存目录条目,并且配置这些一个或多个高速缓存目录条目用于跟踪针对第二区域大小的高速缓存行。该一个或多个高速缓存目录条目中的每个高速缓存目录条目包括第一字段和第二字段。第一字段对应于具有第一页面大小的存储器中的第一区域,并且第二字段跟踪存储在与第一区域相关联的高速缓存子系统中的高速缓存行的第一数量。
配置该一个或多个高速缓存目录条目用于跟踪针对第二区域大小的高速缓存行包括:在该高速缓存目录中的第一字段与第二字段之间互换至少一位,以将第一区域改变为对应于该存储器中的第二页面大小的第二区域,并且以改变由该一个或多个高速缓存目录条目中的每个高速缓存目录条目跟踪的高速缓存行的最大数量。至少一位的互换包括:将该至少一位从第一字段的最低有效位重新分派到第二字段,以通过增加偏移位的数量来增加该区域大小。在一个实施方案中,第二区域大小大于第一区域大小,并且该至少一位向第二字段的重新分派使该高速缓存子系统中跟踪的高速缓存行的最大数量增加以对应于增加的区域大小。
根据区域大小,第一页面大小可包含等于该高速缓存子系统中缓存的两个或更多个高速缓存行的倍数的数据量。在另一个实施方案中,该过程包括:将第二高速缓存目录从跟踪针对第一区域大小的高速缓存行配置为跟踪针对第二区域大小的高速缓存行,并且第二高速缓存目录通过数据织构耦接到主节点。在又一个实施方案中,该过程包括:基于配置该一个或多个高速缓存目录条目用于跟踪针对第二区域大小的高速缓存行,在该一个或多个高速缓存条目的第三字段中改变每位跟踪的高速缓存行的数量。该过程可包括:针对该一个或多个高速缓存目录条目中的每个条目,当该条目中的第二字段的值达到阈值时,重新分配该条目用于跟踪该存储器的另一部分。
在一个实施方案中,处理系统包括耦接到一个或多个高速缓存目录的一个或多个主节点,每个高速缓存目录可以从跟踪针对每个高速缓存行条目的第一区域大小的高速缓存行改变为跟踪针对每个高速缓存行条目的第二区域大小的高速缓存行,并且第一区域大小与存储器的第一页面大小相关联,并且第二区域大小与该存储器的第二页面大小相关联。该处理系统还可包括耦接到该一个或多个主节点的多个处理节点,每个处理节点包括一个或多个处理器和高速缓存子系统,该高速缓存子系统包括由该一个或多个高速缓存目录跟踪的高速缓存行。
用于从跟踪来自每个高速缓存行条目的第一区域大小的高速缓存行改变为跟踪针对每个高速缓存行条目的第二区域大小的高速缓存行的处理系统可包括该一个或多个高速缓存目录以在每个高速缓存行条目的第一字段与第二字段之间互换至少一位。在一个实施方案中,该一个或多个主节点中的每个主节点可接收信号,以启动第一字段与第二字段之间的该至少一位在该一个或多个高速缓存目录中的互换。用于互换该至少一位的处理系统可将来自第一字段的最低有效位的至少一位重新分派到第二字段,并且第一字段中的该至少一位的丢失使第二区域大小相较于第一区域大小而增大,并且第二字段中的该至少一位的增加使由该一个或多个高速缓存目录条目中的每个高速缓存目录条目跟踪的高速缓存行的最大数量增加。
在一个实施方案中,第二页面大小包含该高速缓存子系统中缓存的两个或更多个高速缓存行的偶倍数。在另一个实施方案中,该一个或多个主节点中的至少一个主节点可以将第二高速缓存目录从跟踪针对第一区域大小的高速缓存行配置为跟踪针对第二区域大小的高速缓存行,并且第二高速缓存目录通过数据织构耦接到一致性从设备。在该一个或多个高速缓存目录中的至少一个高速缓存目录中,该一个或多个主节点中的至少一个主节点可以在用于跟踪针对第二区域大小的高速缓存行的该一个或多个高速缓存目录条目的第三字段中改变每位跟踪的高速缓存行的数量。
在一个实施方案中,高速缓存目录包括一个或多个高速缓存条目,并且可以从跟踪针对每个高速缓存行条目的第一区域大小的高速缓存行改变为跟踪针对每个高速缓存行条目的第二区域大小的高速缓存行。第一区域大小与存储器的第一页面大小相关联,并且第二区域大小与该存储器的第二页面大小相关联。高速缓存目录控制器可耦接到该高速缓存目录,并且可以在该一个或多个高速缓存条目中每个高速缓存条目的第一字段与第二字段之间互换至少一位,以从第一区域大小改变为第二区域大小。在一个实施方案中,针对用于互换该至少一位的高速缓存目录控制器,存在从第一字段的最低有效位到第二字段的该至少一位的重新分配,并且第一字段中的该至少一位的丢失使第二区域大小相较于第一区域大小而增大,并且第二字段中的该至少一位的增加使由该一个或多个高速缓存目录条目中的每个高速缓存条目跟踪的高速缓存行的最大数量增加。在一个实施方案中,第二页面大小包含该高速缓存子系统中缓存的两个或更多个高速缓存行的偶倍数。
本文所述的实施方案可包括各种操作。这些操作可由硬件部件、软件、固件或它们的组合执行。如本文所用,术语“耦接到”可意指直接耦接或通过一个或多个居间部件间接耦接。在本文所述的各种总线上提供的任何信号可与其他信号时分复用,并且在一个或多个公共总线上提供。另外,电路部件或块之间的互连可被示出为总线或单信号线。总线中的每个总线可另选地是一个或多个单信号线,并且单信号线中的每个单信号线可另选地是总线。
某些实施方案可被实施为计算机程序产品,该计算机程序产品可包括存储在计算机可读介质上的指令。这些指令可用于对通用或专用处理器编程以执行所描述的操作。计算机可读介质包括用于以机器(例如,计算机)可读的形式(例如,软件、处理应用程序)存储或传输信息的任何机制。计算机可读存储介质可包括但不限于磁存储介质(例如,软盘);光学存储介质(例如,CD-ROM);磁光存储介质;只读存储器(ROM);随机存取存储器(RAM);可擦除可编程存储器(例如,EPROM和EEPROM);闪存存储器或适于存储电子指令的另一类型的介质。
另外,一些实施方案可在其中计算机可读介质被存储在多于一个计算机系统上并且/或者由多于一个计算机系统执行的分布式计算环境中实践。另外,在计算机系统之间传送的信息可跨连接计算机系统的传输介质进行推送或拉取。
尽管按特定顺序示出并描述了本文的方法的操作,但是可改变每个方法的操作的顺序,使得可按相反顺序执行某些操作,或者使得某个操作可至少部分地与其他操作同时执行。在另一个实施方案中,不同操作的指令或子操作可以间歇性和/或交替方式进行。
在前述说明书中,已参考其具体示例性实施方案对实施方案进行了描述。然而,将显而易见的是,可在不脱离如在所附权利要求中阐述的实施方案的更广泛的实质和范围的情况下对这些实施方案进行各种修改和改变。因此,应将该说明书和附图视为例示性的而非限制性的。
Claims (21)
1.一种方法,包括:
维护高速缓存目录,所述高速缓存目录包括用于跟踪针对第一区域大小的高速缓存行的一个或多个高速缓存目录条目;以及
配置所述一个或多个高速缓存目录条目用于跟踪针对第二区域大小的高速缓存行。
2.根据权利要求1所述的方法,其中所述一个或多个高速缓存目录条目中的每个高速缓存目录条目包括第一字段和第二字段,所述第一字段对应于在存储器中具有第一页面大小的第一区域,并且所述第二字段跟踪存储在与所述第一区域相关联的高速缓存子系统中的高速缓存行的第一数量。
3.根据权利要求2所述的方法,其中所述配置所述一个或多个高速缓存目录条目用于跟踪针对第二区域大小的高速缓存行包括:在所述高速缓存目录中的所述第一字段与所述第二字段之间互换至少一位,以将所述第一区域改变为对应于所述存储器中的第二页面大小的第二区域,并且以改变由所述一个或多个高速缓存目录条目中的每个高速缓存目录条目跟踪的高速缓存行的最大数量。
4.根据权利要求3所述的方法,其中至少一位的所述互换包括:将所述至少一位从所述第一字段的最低有效位重新分派到所述第二字段,以通过增加偏移位的数量来增加所述区域大小。
5.根据权利要求4所述的方法,其中:
所述第二区域大小大于所述第一区域大小;并且
所述至少一位向所述第二字段的所述重新分派使所述高速缓存子系统中跟踪的高速缓存行的所述最大数量增加以对应于增加的区域大小。
6.根据权利要求2所述的方法,其中所述第一页面大小包含等于所述高速缓存子系统中缓存的两个或更多个高速缓存行的倍数的数据量。
7.根据权利要求1所述的方法,所述方法还包括:
将第二高速缓存目录从跟踪针对所述第一区域大小的高速缓存行配置为跟踪针对所述第二区域大小的高速缓存行,其中所述第二高速缓存目录通过数据织构耦接到主节点。
8.根据权利要求1所述的方法,所述方法还包括:
基于所述配置所述一个或多个高速缓存目录条目用于跟踪针对所述第二区域大小的高速缓存行,在所述一个或多个高速缓存条目的第三字段中改变每位跟踪的高速缓存行的数量。
9.根据权利要求1所述的方法,所述方法还包括:
针对所述一个或多个高速缓存目录条目中的每个条目,当所述条目中的所述第二字段的值达到阈值时,重新分配所述条目用于跟踪所述存储器的另一部分。
10.一种系统,包括:
耦接到一个或多个高速缓存目录的一个或多个主节点,每个高速缓存目录被配置为从跟踪针对每个高速缓存行条目的第一区域大小的高速缓存行改变为跟踪针对每个高速缓存行条目的第二区域大小的高速缓存行,其中所述第一区域大小与存储器的第一页面大小相关联,并且所述第二区域大小与所述存储器的第二页面大小相关联。
11.根据权利要求10所述的系统,还包括:
耦接到所述一个或多个主节点的多个处理节点,每个处理节点包括一个或多个处理器和高速缓存子系统,所述高速缓存子系统包括由所述一个或多个高速缓存目录跟踪的高速缓存行。
12.根据权利要求10所述的系统,其中从跟踪来自每个高速缓存行条目的第一区域大小的高速缓存行改变为跟踪针对每个高速缓存行条目的第二区域大小的高速缓存行包括所述一个或多个高速缓存目录以在每个高速缓存行条目的第一字段与第二字段之间互换至少一位。
13.根据权利要求12所述的系统,其中所述一个或多个主节点中的每个主节点被配置为接收信号,以启动所述第一字段与所述第二字段之间的所述至少一位在所述一个或多个高速缓存目录中的互换。
14.根据权利要求12所述的系统,其中互换所述至少一位包括:将来自所述第一字段的最低有效位的至少一位重新分派到所述第二字段,其中所述第一字段中的所述至少一位的丢失使所述第二区域大小相较于所述第一区域大小而增大,并且所述第二字段中的所述至少一位的增加使由所述一个或多个高速缓存目录条目中的每个高速缓存目录条目跟踪的高速缓存行的最大数量增加。
15.根据权利要求10所述的系统,其中所述第二页面大小包含所述高速缓存子系统中缓存的两个或更多个高速缓存行的偶倍数。
16.根据权利要求10所述的系统,其中:
所述一个或多个主节点中的至少一个归属节点被配置为将第二高速缓存目录从跟踪针对所述第一区域大小的高速缓存行配置为跟踪针对所述第二区域大小的高速缓存行,并且
所述第二高速缓存目录通过数据织构耦接到一致性从设备。
17.根据权利要求10所述的系统,其中在所述一个或多个高速缓存目录中的至少一个高速缓存目录中,所述一个或多个主节点中的至少一个主节点被配置为在用于跟踪针对所述第二区域大小的高速缓存行的所述一个或多个高速缓存目录条目的第三字段中改变每位跟踪的高速缓存行的数量。
18.一种计算设备,包括:
高速缓存目录,所述高速缓存目录包括一个或多个高速缓存条目,并且被配置为从跟踪针对每个高速缓存行条目的第一区域大小的高速缓存行改变为跟踪针对每个高速缓存行条目的第二区域大小的高速缓存行,其中所述第一区域大小与存储器的第一页面大小相关联,并且所述第二区域大小与所述存储器的第二页面大小相关联。
19.根据权利要求17所述的计算设备,还包括:
高速缓存目录控制器,所述高速缓存目录控制器耦接到所述高速缓存目录,并且被配置为在所述一个或多个高速缓存条目中每个高速缓存条目的第一字段与第二字段之间互换至少一位,以从所述第一区域大小改变为所述第二区域大小。
20.根据权利要求17所述的计算设备,其中所述高速缓存目录控制器互换所述至少一位包括:将来自所述第一字段的最低有效位的至少一位重新分派到所述第二字段,其中所述第一字段中的所述至少一位的丢失使所述第二区域大小相较于所述第一区域大小而增大,并且所述第二字段中的所述至少一位的增加使由所述一个或多个高速缓存目录条目中的每个高速缓存目录条目跟踪的高速缓存行的最大数量增加。
21.根据权利要求16所述的计算设备,其中所述第二页面大小包含所述高速缓存子系统中缓存的两个或更多个高速缓存行的偶倍数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/033,212 US11507517B2 (en) | 2020-09-25 | 2020-09-25 | Scalable region-based directory |
US17/033,212 | 2020-09-25 | ||
PCT/US2021/051010 WO2022066543A1 (en) | 2020-09-25 | 2021-09-19 | Scalable region-based directory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116249970A true CN116249970A (zh) | 2023-06-09 |
Family
ID=78086146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180065752.4A Pending CN116249970A (zh) | 2020-09-25 | 2021-09-19 | 可扩展的基于区域的目录 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11507517B2 (zh) |
EP (1) | EP4200708A1 (zh) |
JP (1) | JP2023543231A (zh) |
KR (1) | KR20230070034A (zh) |
CN (1) | CN116249970A (zh) |
WO (1) | WO2022066543A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11531620B2 (en) * | 2021-03-25 | 2022-12-20 | Arm Limited | Distributed virtual memory management for data processing network |
GB2605577A (en) * | 2021-03-31 | 2022-10-12 | Advanced Risc Mach Ltd | Accessing Encoded Blocks of Data |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0567355B1 (en) | 1992-04-24 | 2001-09-19 | Compaq Computer Corporation | A method and apparatus for operating a multiprocessor computer system having cache memories |
US6192458B1 (en) * | 1998-03-23 | 2001-02-20 | International Business Machines Corporation | High performance cache directory addressing scheme for variable cache sizes utilizing associativity |
US7467280B2 (en) * | 2006-07-05 | 2008-12-16 | International Business Machines Corporation | Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache |
US9678878B2 (en) * | 2008-09-30 | 2017-06-13 | Intel Corporation | Disabling cache portions during low voltage operations |
US8635428B2 (en) * | 2009-12-09 | 2014-01-21 | Oracle America, Inc. | Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes |
US20130205088A1 (en) * | 2012-02-06 | 2013-08-08 | International Business Machines Corporation | Multi-stage cache directory and variable cache-line size for tiered storage architectures |
US9292444B2 (en) * | 2013-09-26 | 2016-03-22 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
US9507731B1 (en) * | 2013-10-11 | 2016-11-29 | Rambus Inc. | Virtualized cache memory |
US10515049B1 (en) * | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US11119926B2 (en) * | 2017-12-18 | 2021-09-14 | Advanced Micro Devices, Inc. | Region based directory scheme to adapt to large cache sizes |
US10691602B2 (en) | 2018-06-29 | 2020-06-23 | Intel Corporation | Adaptive granularity for reducing cache coherence overhead |
US11232039B2 (en) * | 2018-12-10 | 2022-01-25 | Advanced Micro Devices, Inc. | Cache for storing regions of data |
US11593273B2 (en) * | 2019-01-30 | 2023-02-28 | Intel Corporation | Management of cache use requests sent to remote cache devices |
US11656995B2 (en) * | 2019-11-26 | 2023-05-23 | Micron Technology, Inc. | Dynamic access granularity in a cache media |
-
2020
- 2020-09-25 US US17/033,212 patent/US11507517B2/en active Active
-
2021
- 2021-09-19 CN CN202180065752.4A patent/CN116249970A/zh active Pending
- 2021-09-19 WO PCT/US2021/051010 patent/WO2022066543A1/en active Application Filing
- 2021-09-19 JP JP2023519092A patent/JP2023543231A/ja active Pending
- 2021-09-19 KR KR1020237013352A patent/KR20230070034A/ko unknown
- 2021-09-19 EP EP21790011.7A patent/EP4200708A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4200708A1 (en) | 2023-06-28 |
JP2023543231A (ja) | 2023-10-13 |
US20220100672A1 (en) | 2022-03-31 |
KR20230070034A (ko) | 2023-05-19 |
WO2022066543A1 (en) | 2022-03-31 |
US11507517B2 (en) | 2022-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11908546B2 (en) | In-memory lightweight memory coherence protocol | |
US7774551B2 (en) | Hierarchical cache coherence directory structure | |
JP5005631B2 (ja) | 複数のコアキャッシュ・クラスタ間の包括的共有キャッシュの提供 | |
US7552288B2 (en) | Selectively inclusive cache architecture | |
CN112513825B (zh) | 混合精确和不精确的缓存侦听过滤 | |
US20120102273A1 (en) | Memory agent to access memory blade as part of the cache coherency domain | |
CN111684425A (zh) | 适应于大高速缓存大小的基于区域的目录方案 | |
US10282295B1 (en) | Reducing cache footprint in cache coherence directory | |
US11314646B2 (en) | Region based split-directory scheme to adapt to large cache sizes | |
US10705977B2 (en) | Method of dirty cache line eviction | |
US7925857B2 (en) | Method for increasing cache directory associativity classes via efficient tag bit reclaimation | |
CN116249970A (zh) | 可扩展的基于区域的目录 | |
CN115203071A (zh) | 默认共享状态缓存一致性协议的应用 | |
CN112673358B (zh) | 在基于区域的高速缓存目录方案中加速对私有区域的访问 | |
US20240111683A1 (en) | Dynamically altering tracking granularity in a region-based cache directory | |
US11954033B1 (en) | Page rinsing scheme to keep a directory page in an exclusive state in a single complex | |
CN118369651A (zh) | 探测过滤器目录管理 |
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 |