掌桥专利:专业的专利平台
掌桥专利
首页

缓存控制方法、装置、缓存行结构、电子设备和存储介质

文献发布时间:2023-06-29 06:30:04


缓存控制方法、装置、缓存行结构、电子设备和存储介质

技术领域

本公开涉及计算机技术领域,尤其涉及一种缓存控制方法、缓存控制装置、缓存行结构、电子设备和存储介质。

背景技术

缓存(cache)也可以称为高速缓存,是指可以进行高速数据交换的存储器。缓存先于内存与CPU(Central Processing Unit,中央处理器)交互数据,因此速率很快。

在一些应用场景中,用户希望实现持久性的缓存,即,用户希望将数据持久地保存在缓存中。

发明内容

本公开提供了一种缓存控制技术方案。

根据本公开的一方面,提供了一种缓存控制方法,包括:

对于任一缓存行,从所述缓存行的持久位中,获取所述缓存行的持久属性,其中,所述持久位为用于标记所述缓存行中的缓存数据的持久属性的标志位,所述持久属性包括持久性或者非持久性;

基于所述持久属性,控制所述缓存数据的有效期。

在一种可能的实现方式中,所述方法还包括:

响应于范围设置指令或者范围重置指令,获取目标属性值和目标范围,其中,所述目标属性值包括持久性或者非持久性,所述目标范围表示请求设置为所述目标属性值的缓存行的范围;

将所述目标范围内的缓存行的持久位,分别设置为所述目标属性值。

在一种可能的实现方式中,所述方法还包括:

响应于预取指令,根据所述预取指令指示的持久属性,设置所述预取指令对应的缓存行的持久位。

在一种可能的实现方式中,所述预取指令包含于范围设置指令。

在一种可能的实现方式中,所述方法还包括:

响应于无效指令,将所述无效指令指示的缓存行的有效位设置为无效,其中,所述缓存行的持久属性包括持久性或者非持久性。

在一种可能的实现方式中,所述无效指令包含于范围重置指令。

在一种可能的实现方式中,所述方法还包括:

响应于最小持久路数的设置指令,设置所述最小持久路数;其中,所述最小持久路数表示持久路的最小数量,所述持久路表示用于存储持久性的缓存数据的路;任一组缓存的任一路的持久属性是非固定的,且任一组缓存在任意时刻的持久路的数量均大于或等于所述最小持久路数。

在一种可能的实现方式中,所述方法还包括以下至少之一:

响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且存在非持久路的情况下,在所述非持久路中存储所述持久性的缓存数据;

响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且不存在非持久路的情况下,基于预设的缓存替换策略确定目标持久路,并在所述目标持久路中存储所述持久性的缓存数据;

响应于针对非持久性的缓存数据的缓存指令,在非持久路已满的情况下,基于预设的缓存替换策略确定目标非持久路,在所述目标非持久路中存储所述非持久性的缓存数据;

响应于针对非持久性的缓存数据的缓存指令,在所有路均为持久路的情况下,基于预设的缓存替换策略选择目标持久路,并在所述目标持久路中存储所述非持久性的缓存数据。

根据本公开的一方面,提供了一种缓存控制装置,包括:

第一获取模块,用于对于任一缓存行,从所述缓存行的持久位中,获取所述缓存行的持久属性,其中,所述持久位为用于标记所述缓存行中的缓存数据的持久属性的标志位,所述持久属性包括持久性或者非持久性;

控制模块,用于基于所述持久属性,控制所述缓存数据的有效期。

在一种可能的实现方式中,所述装置还包括:

第二获取模块,用于响应于范围设置指令或者范围重置指令,获取目标属性值和目标范围,其中,所述目标属性值包括持久性或者非持久性,所述目标范围表示请求设置为所述目标属性值的缓存行的范围;

第一设置模块,用于将所述目标范围内的缓存行的持久位,分别设置为所述目标属性值。

在一种可能的实现方式中,所述装置还包括:

第二设置模块,用于响应于预取指令,根据所述预取指令指示的持久属性,设置所述预取指令对应的缓存行的持久位。

在一种可能的实现方式中,所述预取指令包含于范围设置指令。

在一种可能的实现方式中,所述装置还包括:

第三设置模块,用于响应于无效指令,将所述无效指令指示的缓存行的有效位设置为无效,其中,所述缓存行的持久属性包括持久性或者非持久性。

在一种可能的实现方式中,所述无效指令包含于范围重置指令。

在一种可能的实现方式中,所述装置还包括:

第四设置模块,用于响应于最小持久路数的设置指令,设置所述最小持久路数;其中,所述最小持久路数表示持久路的最小数量,所述持久路表示用于存储持久性的缓存数据的路;任一组缓存的任一路的持久属性是非固定的,且任一组缓存在任意时刻的持久路的数量均大于或等于所述最小持久路数。

在一种可能的实现方式中,所述装置还包括存储模块,所述存储模块用于以下至少之一:

响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且存在非持久路的情况下,在所述非持久路中存储所述持久性的缓存数据;

响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且不存在非持久路的情况下,基于预设的缓存替换策略确定目标持久路,并在所述目标持久路中存储所述持久性的缓存数据;

响应于针对非持久性的缓存数据的缓存指令,在非持久路已满的情况下,基于预设的缓存替换策略确定目标非持久路,在所述目标非持久路中存储所述非持久性的缓存数据;

响应于针对非持久性的缓存数据的缓存指令,在所有路均为持久路的情况下,基于预设的缓存替换策略选择目标持久路,并在所述目标持久路中存储所述非持久性的缓存数据。

根据本公开的一方面,提供了一种缓存行结构,任一缓存行由持久位、有效位、标签位和数据块构成;

其中,任一缓存行的持久位用于标记所述缓存行中的缓存数据的持久属性,所述持久属性包括持久性或者非持久性。

根据本公开的一方面,提供了一种电子设备,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行上述方法。

根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。

根据本公开的一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。

在本公开实施例中,通过对于任一缓存行,从所述缓存行的持久位中,获取所述缓存行的持久属性,其中,所述持久位为用于标记所述缓存行中的缓存数据的持久属性的标志位,所述持久属性包括持久性或者非持久性,并基于所述持久属性,控制所述缓存数据的有效期,由此在缓存行中增加持久位,通过持久位标记所述缓存行中的缓存数据的持久属性,并仅依赖于缓存行的持久位来记录缓存数据的持久属性。由于本公开实施例基于每个缓存行的持久位判断每个缓存行中的缓存数据是否是持久性,而无需使用一对寄存器来设置持久性的缓存行的地址窗口,因此,本公开实施例在处理加载请求或者存储请求时,无需将加载请求或者存储请求中的缓存行的地址与所述地址窗口的边界进行比较,从而能够节省加载时间或者存储时间。另外,由于本公开实施例通过缓存行中的持久位来记录缓存数据的持久属性,而非使用一对寄存器来设置持久性的缓存行的地址窗口,因此通过采用本公开实施例,能够同时存在多个持久性的缓存行的范围。其中,多个持久性的缓存行的范围可以是非连续的,从而能够实现更灵活的持久性的缓存。再者,本公开实施例通过缓存行中的持久位来记录缓存数据的持久属性,而非通过硬件将每组缓存固定划分为持久路和非持久路,因此不存在固定划分持久路和非持久路所导致的缓存浪费的问题。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。

图1示出相关技术中的缓存替换策略的示意图。

图2示出本公开实施例提供的缓存控制方法的流程图。

图3示出本公开实施例提供的缓存控制方法中的缓存行的硬件结构的一示意图。

图4示出本公开实施例提供的缓存控制方法的缓存替换策略的一示意图。

图5示出本公开实施例提供的缓存控制方法的缓存替换策略的另一示意图。

图6示出本公开实施例提供的缓存控制方法的缓存替换策略的另一示意图。

图7示出本公开实施例提供的缓存控制方法的缓存替换策略的另一示意图。

图8示出本公开实施例提供的缓存控制装置的框图。

图9示出本公开实施例提供的电子设备1900的框图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。

另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

相关技术中主要通过两种方式实现持久性的缓存。

第一种方式是使用一对寄存器设置持久性的缓存行的地址窗口。在这种方式中,加载请求和存储请求可以查看所述地址窗口的边界,以判断对应的缓存行是否是持久性的。

第二种方式是通过硬件将每组缓存固定划分为持久路和非持久路。在这种方式中,持久路和非持久路均是固定的,持久性的缓存数据仅存储在持久路中,非持久性的缓存数据仅存储在非持久路中。图1示出相关技术中的缓存替换策略的示意图。在图1所示的示例中,1组缓存包括8路,其中,第0路至第3路为非持久路(图1中的v),第4路至第7路为持久路(图1中的p)。在非持久路已存满的情况下,若需要存储新的非持久性的缓存数据(图1中的d),则需要替换第0路至第3路中的某一路;在持久路已存满的情况下,若需要存储新的持久性的缓存数据(图1中的d),则需要替第4路至第7路中的某一路。

其中,在第一种方式中,使用单个地址窗口来限定持久性的缓存行的范围。在这种方式中,在每次对寄存器进行编程以改变地址窗口时,均需要驱动程序在中间中断程序,导致性能成本增加。另外,在这种方式中,在每次判断缓存数据是否是持久性时,均需要将缓存行的地址与地址窗口的边界进行比较,导致每个加载请求和每个存储请求均增加额外的等待时间。

在第二种方式中,持久路和非持久路的硬边界将可能导致缓存的浪费。例如,1组缓存包括4条非持久路和4条持久路。在4条非持久路和2条持久路已存满的情况下,若需要存储新的非持久性的缓存数据,则需要替换4条非持久路中的某一路,尽管此时仍有2条持久路未被使用。又如,1组缓存包括4条非持久路和4条持久路。在4条持久路均已存满的情况下,若需要存储新的持久性的缓存数据,则需要将该缓存数据降级为非持久性的缓存数据,或者需要替换4条持久路中的某一路。

为了解决类似上文所述的技术问题,本公开实施例提供了一种缓存控制方法、装置、电子设备、存储介质和程序产品,通过对于任一缓存行,从所述缓存行的持久位中,获取所述缓存行的持久属性,其中,所述持久位为用于标记所述缓存行中的缓存数据的持久属性的标志位,所述持久属性包括持久性或者非持久性,并基于所述持久属性,控制所述缓存数据的有效期,由此在缓存行中增加持久位,通过持久位标记所述缓存行中的缓存数据的持久属性,并仅依赖于缓存行的持久位来记录缓存数据的持久属性。由于本公开实施例基于每个缓存行的持久位判断每个缓存行中的缓存数据是否是持久性,而无需使用一对寄存器来设置持久性的缓存行的地址窗口,因此,本公开实施例在处理加载请求或者存储请求时,无需将加载请求或者存储请求中的缓存行的地址与所述地址窗口的边界进行比较,从而能够节省加载时间或者存储时间。另外,由于本公开实施例通过缓存行中的持久位来记录缓存数据的持久属性,而非使用一对寄存器来设置持久性的缓存行的地址窗口,因此通过采用本公开实施例,能够同时存在多个持久性的缓存行的范围。其中,多个持久性的缓存行的范围可以是非连续的,从而能够实现更灵活的持久性的缓存。再者,本公开实施例通过缓存行中的持久位来记录缓存数据的持久属性,而非通过硬件将每组缓存固定划分为持久路和非持久路,因此不存在固定划分持久路和非持久路所导致的缓存浪费的问题。

下面结合附图对本公开实施例提供的缓存控制方法进行详细的说明。

图2示出本公开实施例提供的缓存控制方法的流程图。在一种可能的实现方式中,所述缓存控制方法的执行主体可以是缓存控制装置,例如,所述缓存控制方法可以由终端设备或服务器或其它电子设备执行。其中,终端设备可以是用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal DigitalAssistant,PDA)、手持设备、计算设备、车载设备或者可穿戴设备等。在一些可能的实现方式中,所述缓存控制方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图2所示,所述缓存控制方法包括步骤S21至步骤S22。

在步骤S21中,对于任一缓存行,从所述缓存行的持久位中,获取所述缓存行的持久属性,其中,所述持久位为用于标记所述缓存行中的缓存数据的持久属性的标志位,所述持久属性包括持久性或者非持久性。

在步骤S22中,基于所述持久属性,控制所述缓存数据的有效期。

缓存行(Cache Line)是缓存系统中的最小缓存单位。即,缓存系统是以缓存行为单位进行存储的。缓存行的大小可以为64字节等,在此不做限定。

在本公开实施例中,在每个缓存行中分别额外增加一个持久位。其中,任一缓存行中的持久位,可以用于标记所述缓存行中的缓存数据的持久属性。其中,所述持久属性可以为用于表示所述缓存数据的持久性或非持久性的属性。若任一缓存行中的缓存数据的持久属性为持久性,则所述缓存数据将不会过期;若任一缓存行中的缓存数据的持久属性为非持久性,则所述缓存数据将会过期。

在一种可能的实现方式中,若任一缓存行的持久位的值为1,则可以表示所述缓存行的持久属性为持久性;若任一缓存行的持久位的值为0,则可以表示所述缓存行的持久属性为非持久性。

当然,除了持久位,缓存行还可以包括有效位(即invalid位)、脏位(即dirty位)等,在此不做限定。

图3示出本公开实施例提供的缓存控制方法中的缓存行的硬件结构的一示意图。在图3所示的示例中,缓存行包括持久位、有效位和其他信息。

在一种可能的实现方式中,所述方法还包括:响应于范围设置指令或者范围重置指令,获取目标属性值和目标范围,其中,所述目标属性值包括持久性或者非持久性,所述目标范围表示请求设置为所述目标属性值的缓存行的范围;将所述目标范围内的缓存行的持久位,分别设置为所述目标属性值。

在该实现方式中,范围设置指令可以表示首次设置缓存行的持久位的指令,范围重置指令可以表示非首次设置缓存行的持久位的指令。

作为该实现方式的一个示例,范围设置指令或者范围重置指令可以采用起始行的地址和总行数来表示目标范围。其中,起始行表示请求设置为目标属性值的所有缓存行中的第一行,总行数表示请求设置为目标属性值的缓存行的总行数。

作为该实现方式的另一个示例,范围设置指令或者范围重置指令可以采用起始行的地址和结束行的地址来表示目标范围。其中,起始行表示请求设置为目标属性值的所有缓存行中的第一行,结束行表示请求设置为目标属性值的所有缓存行中的最后一行。

在该实现方式中,范围设置指令可以用于将目标范围内的所有缓存行的持久位,分别设置为目标属性值。例如,若目标属性值为持久性,则范围设置指令可以用于将目标范围内的所有缓存行的持久位分别设置为持久性;又如,若目标属性值为非持久性,则范围设置指令可以用于将目标范围内的所有缓存行的持久位分别设置为非持久性。

在该实现方式中,范围重置指令可以用于将目标范围内的所有缓存行的持久位,分别重置为目标属性值。例如,若目标属性值为持久性,则范围重置指令可以用于将目标范围内的所有缓存行的持久位分别重置为持久性;又如,若目标属性值为非持久性,则范围重置指令可以用于将目标范围内的所有缓存行的持久位分别重置为非持久性。

在该实现方式中,通过响应于范围设置指令或者范围重置指令,获取目标属性值和目标范围,并将所述目标范围内的缓存行的持久位,分别设置为所述目标属性值,由此能够基于范围设置指令准确地设置目标范围内的各缓存行的持久属性,并能够基于范围重置指令准确地重置目标范围内的各缓存行的持久属性。另外,通过范围设置指令和范围重置指令设置缓存行的持久位,还能够实现持久位的显示控制。

在该实现方式中,并非直接依赖于加载指令和存储指令设置持久位,否则将由于有限的缓存地址知识而难以正确地设置持久位。

在一种可能的实现方式中,所述方法还包括:响应于预取指令,根据所述预取指令指示的持久属性,设置所述预取指令对应的缓存行的持久位。

在该实现方式中,预取指令可以表示用于缓存数据预取的指令。其中,缓存数据预取可以表示将数据预先存储到缓存中。缓存数据预取可以在下一个加载指令或者存储指令到来之前,先将数据从主存调入缓存中。在该实现方式,在缓存数据预取的过程中,可以实现持久位的设置,从而能够进一步提高缓存控制的便捷性。

作为该实现方式的一个示例,所述预取指令包含于范围设置指令。通过采用该示例,能够在范围设置指令中附加缓存数据预取的能力。

在一种可能的实现方式中,所述方法还包括:响应于无效指令,将所述无效指令指示的缓存行的有效位设置为无效,其中,所述缓存行的持久属性包括持久性或者非持久性。

在该实现方式中,无效指令可以表示用于将缓存行中的缓存数据设置为无效的指令,即,无效指令可以用于将缓存行中的缓存数据设置为无效。其中,可以通过将缓存行中的有效位设置为无效(例如可以将invalid位的值设置为0),来将缓存行中的缓存数据设置为无效。在该实现方式中,通过无效指令将持久性的缓存数据设置为无效,由此能够提高对持久性的缓存数据进行管理的效率。

作为该实现方式的一个示例,所述无效指令包含于范围重置指令。通过采用该示例,能够在范围重置指令中附加将缓存数据无效的能力。

在一种可能的实现方式中,所述方法还包括:响应于最小持久路数的设置指令,设置所述最小持久路数;其中,所述最小持久路数表示持久路的最小数量,所述持久路表示用于存储持久性的缓存数据的路;任一组缓存的任一路的持久属性是非固定的,且任一组缓存在任意时刻的持久路的数量均大于或等于所述最小持久路数。

作为该实现方式的一个示例,可以通过全局寄存器设置最小持久路数。

在该实现方式中,任一组缓存的任一路的持久属性是非固定的。例如,第0路在某一个或多个时间范围内可以为持久性,且在其他时间范围内可以为非持久性。

在该实现方式中,持久路与非持久路之间的边界是软边界,即,实际上在持久路与非持久路之间不存在边界,因此能够解决硬边界的持久路和非持久路所带来的缓存浪费的问题。

在另一种可能的实现方式中,所述方法还包括:响应于最大持久路数的设置指令,设置所述最小大久路数;其中,所述最大持久路数表示持久路的最大数量,所述持久路表示用于存储持久性的缓存数据的路;任一组缓存的任一路的持久属性是非固定的,且任一组缓存在任意时刻的持久路的数量均小于或等于所述最大持久路数。

在另一种可能的实现方式中,所述方法还包括:响应于最小非持久路数的设置指令,设置所述最小非持久路数;其中,所述最小非持久路数表示非持久路的最小数量,所述非持久路表示用于存储非持久性的缓存数据的路;任一组缓存的任一路的持久属性是非固定的,且任一组缓存在任意时刻的非持久路的数量均大于或等于所述最小非持久路数。

在另一种可能的实现方式中,所述方法还包括:响应于最大非持久路数的设置指令,设置所述最小大久路数;其中,所述最大非持久路数表示非持久路的最大数量,所述非持久路表示用于存储非持久性的缓存数据的路;任一组缓存的任一路的持久属性是非固定的,且任一组缓存在任意时刻的非持久路的数量均小于或等于所述最大非持久路数。

在一种可能的实现方式中,所述方法还包括以下至少之一:响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且存在非持久路的情况下,在所述非持久路中存储所述持久性的缓存数据;响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且不存在非持久路的情况下,基于预设的缓存替换策略确定目标持久路,并在所述目标持久路中存储所述持久性的缓存数据;响应于针对非持久性的缓存数据的缓存指令,在非持久路已满的情况下,基于预设的缓存替换策略确定目标非持久路,在所述目标非持久路中存储所述非持久性的缓存数据;响应于针对非持久性的缓存数据的缓存指令,在所有路均为持久路的情况下,基于预设的缓存替换策略选择目标持久路,并在所述目标持久路中存储所述非持久性的缓存数据。

在该实现方式中,预设的缓存替换策略可以为PLRU(Pseudo Least RecentlyUsed,伪最近最少使用)、LRU(Least Recently Used,最近最少使用)或者LFU(LeastFrequently Used,最不经常使用)等等,在此不做限定。

作为该实现方式的一个示例,可以响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且存在非持久路的情况下,在所述非持久路中存储所述持久性的缓存数据。图4示出本公开实施例提供的缓存控制方法的缓存替换策略的一示意图。在图4所示的示例中,1组缓存包括8路,预设的最小持久路数为4。当前,第1、2、3、6路为非持久路(图4中的v),第0、4、5、7路为持久路(图4中的p)。在4条持久路均已存满的情况下,若需要存储新的持久性的缓存数据,则在非持久路中存储该新的持久性的缓存数据。

作为该实现方式的另一个示例,可以响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且不存在非持久路的情况下,基于预设的缓存替换策略确定目标持久路,并在所述目标持久路中存储所述持久性的缓存数据。图5示出本公开实施例提供的缓存控制方法的缓存替换策略的另一示意图。在图5所示的示例中,1组缓存包括8路,预设的最小持久路数为4。当前,8条路均为持久路。在8条持久路均已存满的情况下,若需要存储新的持久性的缓存数据,则在持久路中存储该新的持久性的缓存数据。

作为该实现方式的另一个示例,可以响应于针对非持久性的缓存数据的缓存指令,在非持久路已满的情况下,基于预设的缓存替换策略确定目标非持久路,在所述目标非持久路中存储所述非持久性的缓存数据。图6示出本公开实施例提供的缓存控制方法的缓存替换策略的另一示意图。在图6所示的示例中,1组缓存包括8路,预设的最小持久路数为4。当前,第1、2、3、6路为非持久路(图6中的v),第0、4、5、7路为持久路(图6中的p)。在4条非持久路均已存满的情况下,若需要存储新的非持久性的缓存数据,则在非持久路中存储该新的非持久性的缓存数据。

作为该实现方式的另一个示例,可以响应于针对非持久性的缓存数据的缓存指令,在所有路均为持久路的情况下,基于预设的缓存替换策略选择目标持久路,并在所述目标持久路中存储所述非持久性的缓存数据。图7示出本公开实施例提供的缓存控制方法的缓存替换策略的另一示意图。在图7所示的示例中,1组缓存包括8路,预设的最小持久路数为4。当前,8条路均为持久路。在8条路均为持久路的情况下,若需要存储新的非持久性的缓存数据,则在持久路中存储该新的非持久性的缓存数据。

作为该实现方式的另一个示例,可以响应于针对持久性的缓存数据的缓存指令,在持久路未存满的情况下,在持久路中存储所述持久性的缓存数据。

作为该实现方式的另一个示例,可以响应于针对非持久性的缓存数据的缓存指令,在非持久路未存满的情况下,在非持久路中存储所述非持久性的缓存数据。

通过采用上述实现方式,能够最大限度地在缓存中保存持久性的缓存数据。

下面通过一个具体的应用场景说明本公开实施例提供的缓存控制方法。在该应用场景中,可以在每个缓存行中分别额外增加一个持久位,并通过持久位标记其所属缓存行中的缓存数据的持久属性。可以响应于范围设置指令或者范围重置指令,获取目标属性值和目标范围,并将所述目标范围内的缓存行的持久位,分别设置为所述目标属性值,其中,所述目标属性值为持久性或者非持久性。其中,范围设置指令还可以包括预取指令,范围重置指令还可以包括无效指令。

在该应用场景中,还可以响应于最小持久路数的设置指令,设置所述最小持久路数。其中,任一组缓存的任一路的持久属性是非固定的,且任一组缓存在任意时刻的持久路的数量均大于或等于所述最小持久路数。可以响应于针对持久性的缓存数据的缓存指令,在持久路未存满的情况下,在持久路中存储所述持久性的缓存数据;可以响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且存在非持久路的情况下,在所述非持久路中存储所述持久性的缓存数据;可以响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且不存在非持久路的情况下,基于预设的缓存替换策略确定目标持久路,并在所述目标持久路中存储所述持久性的缓存数据;可以响应于针对非持久性的缓存数据的缓存指令,在非持久路未存满的情况下,在非持久路中存储所述非持久性的缓存数据;响应于针对非持久性的缓存数据的缓存指令,在非持久路已满的情况下,基于预设的缓存替换策略确定目标非持久路,在所述目标非持久路中存储所述非持久性的缓存数据;响应于针对非持久性的缓存数据的缓存指令,在所有路均为持久路的情况下,基于预设的缓存替换策略选择目标持久路,并在所述目标持久路中存储所述非持久性的缓存数据。

可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

此外,本公开还提供了缓存控制装置、电子设备、计算机可读存储介质、计算机程序产品,上述均可用来实现本公开提供的任一种缓存控制方法,相应技术方案和技术效果可参见方法部分的相应记载,不再赘述。

图8示出本公开实施例提供的缓存控制装置的框图。如图8所示,所述缓存控制装置包括:

第一获取模块81,用于对于任一缓存行,从所述缓存行的持久位中,获取所述缓存行的持久属性,其中,所述持久位为用于标记所述缓存行中的缓存数据的持久属性的标志位,所述持久属性包括持久性或者非持久性;

控制模块82,用于基于所述持久属性,控制所述缓存数据的有效期。

在一种可能的实现方式中,所述装置还包括:

第二获取模块,用于响应于范围设置指令或者范围重置指令,获取目标属性值和目标范围,其中,所述目标属性值包括持久性或者非持久性,所述目标范围表示请求设置为所述目标属性值的缓存行的范围;

第一设置模块,用于将所述目标范围内的缓存行的持久位,分别设置为所述目标属性值。

在一种可能的实现方式中,所述装置还包括:

第二设置模块,用于响应于预取指令,根据所述预取指令指示的持久属性,设置所述预取指令对应的缓存行的持久位。

在一种可能的实现方式中,所述预取指令包含于范围设置指令。

在一种可能的实现方式中,所述装置还包括:

第三设置模块,用于响应于无效指令,将所述无效指令指示的缓存行的有效位设置为无效,其中,所述缓存行的持久属性包括持久性或者非持久性。

在一种可能的实现方式中,所述无效指令包含于范围重置指令。

在一种可能的实现方式中,所述装置还包括:

第四设置模块,用于响应于最小持久路数的设置指令,设置所述最小持久路数;其中,所述最小持久路数表示持久路的最小数量,所述持久路表示用于存储持久性的缓存数据的路;任一组缓存的任一路的持久属性是非固定的,且任一组缓存在任意时刻的持久路的数量均大于或等于所述最小持久路数。

在一种可能的实现方式中,所述装置还包括存储模块,所述存储模块用于以下至少之一:

响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且存在非持久路的情况下,在所述非持久路中存储所述持久性的缓存数据;

响应于针对持久性的缓存数据的缓存指令,在持久路已存满、且不存在非持久路的情况下,基于预设的缓存替换策略确定目标持久路,并在所述目标持久路中存储所述持久性的缓存数据;

响应于针对非持久性的缓存数据的缓存指令,在非持久路已满的情况下,基于预设的缓存替换策略确定目标非持久路,在所述目标非持久路中存储所述非持久性的缓存数据;

响应于针对非持久性的缓存数据的缓存指令,在所有路均为持久路的情况下,基于预设的缓存替换策略选择目标持久路,并在所述目标持久路中存储所述非持久性的缓存数据。

在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现和技术效果可以参照上文方法实施例的描述,为了简洁,这里不再赘述。

本公开实施例还提供一种缓存行结构,任一缓存行由持久位、有效位、标签位和数据块构成;

其中,任一缓存行的持久位用于标记所述缓存行中的缓存数据的持久属性,所述持久属性包括持久性或者非持久性。

在本公开实施例中,标签(tag)位可以用于存储缓存数据的标签,数据块可以用于存储缓存数据。

本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。其中,所述计算机可读存储介质可以是非易失性计算机可读存储介质,或者可以是易失性计算机可读存储介质。

本公开实施例还提出一种计算机程序,包括计算机可读代码,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。

本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。

本公开实施例还提供一种电子设备,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行上述方法。

电子设备可以被提供为终端、服务器或其它形态的设备。

图9示出本公开实施例提供的电子设备1900的框图。例如,电子设备1900可以被提供为终端、服务器或其它形态的设备。参照图9,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。

电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入/输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(Windows Server

在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。

本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。

这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。

上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。

若本公开实施例的技术方案涉及个人信息,应用本公开实施例的技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本公开实施例的技术方案涉及敏感个人信息,应用本公开实施例的技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

技术分类

06120116019633