CN104699422B - 缓存数据的确定方法及装置 - Google Patents
缓存数据的确定方法及装置 Download PDFInfo
- Publication number
- CN104699422B CN104699422B CN201510105461.XA CN201510105461A CN104699422B CN 104699422 B CN104699422 B CN 104699422B CN 201510105461 A CN201510105461 A CN 201510105461A CN 104699422 B CN104699422 B CN 104699422B
- Authority
- CN
- China
- Prior art keywords
- data
- undetermined
- time window
- identification
- cache miss
- 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.)
- Active
Links
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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0866—Addressing 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/0871—Allocation or management of cache space
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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
-
- 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
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
-
- 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
- G06F2212/6024—History based prefetching
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
技术领域
本发明涉及计算机技术领域,特别涉及一种缓存数据的确定方法及装置。
背景技术
计算机的处理器在处理数据的过程中,由于处理器从缓存存储器读取数据的速度比从磁盘中读取数据的速度快,为了加快数据处理速度,随着数据处理过程的不断进行,处理器会不断挑选出访问量比较高的好数据,并将这些好数据存储于缓存存储器中一份。在此基础上,处理器在处理数据时,如果所需数据已存储于缓存存储器,则直接从缓存存储器读取数据,该数据为缓存命中数据;如果所需数据还未存储于缓存存储器,则从磁盘读取所需数据,该数据为缓存缺失数据。为了加快数据处理速度,对于缓存缺失数据中访问量比较高的数据,可以将其写入缓存存储器,确保后续处理器需要该数据时,可以直接从缓存存储器读取该数据。然而,由于有些缓存存储器的写入次数有限,如SSD(Solid State Disk,固态硬盘),频繁向该类缓存存储器写入数据会降低该类缓存存储器的使用寿命。因此,在向该类缓存存储器写入数据之前,需要从所有的缓存缺失数据中,确定可以写入该类缓存存储器的缓存缺失数据。
相关技术在确定哪些缓存缺失数据可以写入缓存存储器时,通常采用的方法为:从所有缓存缺失数据中,随机选择部分缓存缺失数据,将该选择的缓存缺失数据作为可以写入缓存存储器的缓存缺失数据。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
缓存缺失数据分为访问量高的好数据、访问量居中的一般数据和访问量低的差数据。由于相关技术在确定缓存缺失数据时,仅是随机选择缓存缺失数据,因此,好数据、一般数据和差数据被选中的概率相等,使写入缓存存储器的好数据、一般数据和差数据的比例相等,导致处理器后续从缓存存储器读取数据时的命中率不高。
发明内容
为了提高缓存存储器中存储的访问次数比较高的好数据的比例,从而提高处理器后续从缓存存储器读取数据时的命中率,本发明实施例提供了一种缓存数据的确定方法及装置。所述技术方案如下:
第一方面,提供了一种缓存数据的确定方法,所述方法包括:
获取所读取的缓存缺失数据的数据标识,所述数据标识用于区分不同的缓存缺失数据;
基于获取的缓存缺失数据的数据标识选择待定数据的数据标识;
将各个待定数据的数据标识进行分组记录;
统计所述各个待定数据的数据标识在各个分组中的出现次数;
根据所述出现次数选择目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据。
结合第一方面,在第一方面的第一种可能的实现方式中,所述各个分组构成一个时间窗口序列,所述时间窗口序列包括至少两个时间窗口,每个时间窗口包括第一预设数值个第一存储单元,每两个时间窗口之间间隔第二预设数值个第二存储单元;
所述将各个待定数据的数据标识进行分组记录,包括:
将各个待定数据的数据标识按顺序分别记录至所述时间窗口序列的各个第一存储单元中;
所述统计所述各个待定数据的数据标识在各个分组中的出现次数,包括:
统计所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述统计所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数,包括:
统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量;
根据所述记录同一数据标识的第一存储单元的数量,确定所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量,包括:
当所述时间窗口序列中的所有第一存储单元均被填满时,统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量之后,还包括:
清除所述时间窗口序列的各个第一存储单元中存储的数据标识,以通过所述时间窗口序列记录后续数据读取过程中选择的待定数据的数据标识。
结合第一方面至第一方面的第四种可能的实现方式中的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据所述出现次数选择目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据,包括:
选择出现次数不小于预设阈值的待定数据,将所述出现次数不小于预设阈值的待定数据作为目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据。
结合第一方面至第一方面的第五种可能的实现方式中的任一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述将所述目标待定数据确定为写入缓存存储器的缓存缺失数据之后,还包括:
将所述目标待定数据的数据标识添加至预设白名单中,所述预设白名单包括第四预设数值个第三存储单元,每个第三存储单元可记录一个目标待定数据的数据标识;
当后续读取的缓存缺失数据命中所述预设白名单中的任一个数据标识对应的目标待定数据时,将命中的目标待定数据写入所述缓存存储器。
结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述将命中的目标待定数据写入所述缓存存储器,包括:
当所述缓存存储器的存储空间还未满时,根据所述命中的目标待定数据的数据大小直接将所述命中的目标待定数据写入所述缓存存储器;
当所述缓存存储器的存储空间已满时,根据预设缓存替换算法淘汰所述缓存存储器中所述数据大小的存储空间所存储的数据,将所述命中的目标待定数据写入被淘汰数据对应的存储位置。
第二方面,提供了一种缓存数据的确定装置,所述装置包括:
获取模块,用于获取所读取的缓存缺失数据的数据标识,所述数据标识用于区分不同的缓存缺失数据;
选择模块,用于基于获取的缓存缺失数据的数据标识选择待定数据的数据标识;
记录模块,用于将各个待定数据的数据标识进行分组记录;
统计模块,用于统计所述各个待定数据的数据标识在各个分组中的出现次数;
确定模块,用于根据所述出现次数选择目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据。
结合第二方面,在第二方面的第一种可能的实现方式中,所述各个分组构成一个时间窗口序列,所述时间窗口序列包括至少两个时间窗口,每个时间窗口包括第一预设数值个第一存储单元,每两个时间窗口之间间隔第二预设数值个第二存储单元;
所述记录模块,用于将各个待定数据的数据标识按顺序分别记录至所述时间窗口序列的各个第一存储单元中;
所述统计模块,用于统计所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述统计模块包括:
统计单元,用于统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量;
第一确定单元,用于根据所述记录同一数据标识的第一存储单元的数量,确定所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述统计单元,用于当所述时间窗口序列中的所有第一存储单元均被填满时,统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
结合第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,所述统计模块还包括:
清除单元,用于清除所述时间窗口序列的各个第一存储单元中存储的数据标识,以通过所述时间窗口序列记录后续数据读取过程中选择的待定数据的数据标识。
结合第二方面至第二方面的第四种可能的实现方式中的任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述确定模块,用于选择出现次数不小于预设阈值的待定数据作为目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据。
结合第二方面至第二方面的第五种可能的实现方式中的任一种可能的实现方式,在第二方面的第六种可能的实现方式中,所述装置还包括:
添加模块,用于将所述目标待定数据的数据标识添加至预设白名单中,所述预设白名单包括第四预设数值个第三存储单元,每个第三存储单元可记录一个目标待定数据的数据标识;
写入模块,用于当后续读取的缓存缺失数据命中所述预设白名单中的任一个数据标识对应的目标待定数据时,将命中的目标待定数据写入所述缓存存储器。
结合第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述写入模块用于:
当所述缓存存储器的存储空间还未满时,根据所述命中的目标待定数据的数据大小直接将所述命中的目标待定数据写入所述缓存存储器;
当所述缓存存储器的存储空间已满时,根据预设缓存替换算法淘汰所述缓存存储器中所述数据大小的存储空间所存储的数据,将所述命中的目标待定数据写入被淘汰数据对应的存储位置。
本发明实施例提供的技术方案带来的有益效果是:
通过将各个待定数据的数据标识进行分组记录,并统计各个待定数据的数据标识在各个分组中的出现次数后,根据出现次数选择目标待定数据,并将目标待定数据确定为写入缓存存储器的缓存缺失数据。由于出现次数多能够标识该缓存缺失数据的被读取次数比较多,因而可以从所读取的缓存缺失数据中选择出被读取次数多的好数据,从而能够提高缓存存储器中存储的好数据的比例,进而能够提高处理器后续从缓存存储器读取数据时的命中率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的缓存数据的确定方法所涉及的系统架构图;
图2是本发明另一实施例提供的一种缓存数据的确定方法的流程图;
图3是本发明另一实施例提供的一种缓存数据的确定方法的流程图;
图4是本发明另一实施例提供的一种时间窗口序列的示意图;
图5是本发明另一实施例提供的一种缓存数据的确定装置的结构示意图;
图6是本发明另一实施例提供的一种缓存数据的确定装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
如图1所示,其示出了本发明实施例提供的缓存数据的确定方法所涉及的系统架构图。如图1所示,该系统架构包括处理器101、内存102、缓存存储器103和磁盘104。处理器101所需数据可以存储在内存102、缓存存储器103和磁盘104这三种存储介质中。其中,这三种存储介质的介质访问速度的顺序是内存102>缓存存储器103>磁盘104,而容量大小的顺序是内存102<缓存存储器103<磁盘104。综合考虑成本,内存102和缓存存储器103常分别用于第一、二级缓存,以加速数据处理速度。具体地,处理器101在读取数据时,一般通过DMA(Direct Memory Access,直接内存存取)技术实现,即处理器101在从缓存存储器103或磁盘104读取数据时,先将数据读到内存102中,然后再从内存102中读取。也就是说,处理器101在读取数据时,先从内存102读取数据,如果内存102没有所需数据,则从缓存存储器103读取所需数据,如果缓存存储器103仍然没有所需数据,再从磁盘104读取数据。
其中,本发明实施例针对当内存102中没有处理器101所需的数据时,处理器101需要从缓存存储器103或磁盘104读取数据的情况,提出一种缓存数据的确定方法。具体地,由于处理器101从缓存存储器103读取数据的速度比从磁盘104读取数据的速度快,因此,随着数据处理过程的不断进行,处理器101会在缓存存储器103中存储一份访问量比较高的好数据,以便后续读取数据时,处理器101可以直接从缓存存储器103读取这些数据,而无需再访问磁盘104。为了便于说明,在本发明实施例中,将缓存存储器103中已经存储的数据定义为缓存命中数据,而将缓存存储器103中未存储、处理器103需要从磁盘104读取的数据定义为缓存缺失数据。
另外,由于有些缓存存储器103的写入次数有限,如SSD,如果向该类缓存存储器103写入的数据为访问量不高的数据,即该数据不是处理器101经常需要的数据。在此种情况下,处理器101后续可能不能从缓存存储器103中获取到所需数据,即缓存命中率不高。此时,为了提高缓存命中率,会对缓存存储器103中已缓存的数据进行替换,以淘汰掉那些访问量不高的数据,并进一步重新向缓存存储器103写入新数据。而这种数据替换行为将会使缓存存储器103的数据进行频繁更新。然而,如果缓存存储器103的写入次数有限,则频繁更新数据将会降低缓存存储器103的使用寿命。综上,向该类缓存存储器103写入数据时,应该保证写入的缓存缺失数据中有较高比例的访问量比较高的好数据,以避免该类缓存存储器103因频繁数据更新数据而降低使用寿命。
结合上述内容,在向该类缓存存储器103写入数据之前,需要从所有的缓存缺失数据中,确定可以写入该类缓存存储器103的缓存缺失数据,以提高缓存存储器103中好数据的比例,进而提高处理器101从缓存存储器103读取数据时的命中率。具体的缓存数据的确定方法详见下述各个实施例:
结合图1所示的系统架构示意图,图2是根据一示例性实施例提供的一种缓存数据的确定方法的流程图。如图2所示,本发明实施例提供的方法流程包括:
201:获取所读取的缓存缺失数据的数据标识,其中,数据标识用于区分不同的缓存缺失数据。
202:基于获取的缓存缺失数据的数据标识选择待定数据的数据标识。
203:将各个待定数据的数据标识进行分组记录。
204:统计各个待定数据的数据标识在各个分组中的出现次数。
在另一个实施例中,各个分组构成一个时间窗口序列,时间窗口序列包括至少两个时间窗口,每个时间窗口包括第一预设数值个第一存储单元,每两个时间窗口之间间隔第二预设数值个第二存储单元;
将各个待定数据的数据标识进行分组记录,包括:
将各个待定数据的数据标识按顺序分别记录至时间窗口序列的各个第一存储单元中;
统计各个待定数据的数据标识在各个分组中的出现次数,包括:
统计各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数。
在另一个实施例中,统计各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数,包括:
统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量;
根据记录同一数据标识的第一存储单元的数量,确定各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数。
在另一个实施例中,统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量,包括:
当时间窗口序列中的所有第一存储单元均被填满时,统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
在另一个实施例中,统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量之后,还包括:
清除时间窗口序列的各个第一存储单元中存储的数据标识,以通过时间窗口序列记录后续数据读取过程中选择的待定数据的数据标识。
205:根据出现次数选择目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据。
在另一个实施例中,根据出现次数选择目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据,包括:
选择出现次数不小于预设阈值的待定数据,将出现次数不小于预设阈值的待定数据作为目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据。
在另一个实施例中,根据出现次数选择目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据之后,还包括:
将目标待定数据的数据标识添加至预设白名单中,预设白名单包括第四预设数值个第三存储单元,每个第三存储单元可记录一个目标待定数据的数据标识;
当后续读取的缓存缺失数据命中预设白名单中的任一个数据标识对应的目标待定数据时,将命中的目标待定数据写入缓存存储器。
在另一个实施例中,将命中的目标待定数据写入缓存存储器,包括:
当缓存存储器的存储空间还未满时,根据命中的目标待定数据的数据大小直接将命中的目标待定数据写入缓存存储器;
当缓存存储器的存储空间已满时,根据预设缓存替换算法淘汰缓存存储器中数据大小的存储空间所存储的数据,将命中的目标待定数据写入被淘汰数据对应的存储位置。
本发明实施例提供的方法,通过将各个待定数据的数据标识进行分组记录,并统计各个待定数据的数据标识在各个分组中的出现次数后,根据出现次数选择目标待定数据,并将目标待定数据确定为写入缓存存储器的缓存缺失数据。由于出现次数多能够标识该缓存缺失数据的被读取次数比较多,因而可以从所读取的缓存缺失数据中选择出被读取次数多的好数据,从而能够提高缓存存储器中存储的好数据的比例,进而能够提高处理器后续从缓存存储器读取数据时的命中率。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
结合图1所示的系统架构示意图及图2所示实施例的内容,图3是根据一示例性实施例提供的一种缓存数据的确定方法的流程图。如图3所示,本发明实施例提供的方法流程包括:
301:读取缓存缺失数据。
结合图1所示的系统架构图,当处理器所需的数据未存储于内存或缓存存储器时,处理器需要从磁盘读取数据。其中,处理器从磁盘读取的数据即为缓存缺失数据。然而,在处理器读取的所有缓存缺失数据中,有些缓存缺失数据也可能是处理器需要次数比较多的好数据。针对于这些好数据,可以将其写入缓存存储器,以便于处理器后续直接从缓存存储器读取这些好数据,从而提高数据处理速度。因此,当处理器读取到缓存缺失数据后,触发处理器确定是否将其写入缓存存储器。
302:获取所读取的缓存缺失数据的数据标识,其中,数据标识用于区分不同的缓存缺失数据。
其中,数据标识可以用于区分不同的缓存缺失数据,即一个缓存缺失数据对应一个数据标识。
在本发明实施例中,为了节省确定缓存数据的过程中的系统资源,在确定缓存数据时,可以仅针对缓存数据的数据标识进行处理,因此,在读取到缓存缺失数据后,可以获取所读取的缓存缺失数据的数据标识。
其中,每个缓存缺失数据中可以携带其对应的数据标识。在此基础上,在获取所读取的缓存缺失数据的数据标识时,对于每个缓存缺失数据,可以对其进行解析,以得到其数据标识。
具体地,在获取所读取的缓存缺失数据的数据标识时,可以每读取一个缓存缺失数据,获取一次该缓存缺失数据的数据标识;也可以读取一些缓存缺失数据后,获取一次这些缓存缺失数据的数据标识。另外,由于确定缓存缺失数据的过程可能为周期性的,如每一天确定一次,或每小时确定一次。因此,在获取缓存缺失数据的数据标识时,也可以在达到一个周期时,统一获取一次该周期中所读取的所有缓存缺失数据的数据标识。
303:基于获取的缓存缺失数据的数据标识选择待定数据的数据标识。
具体地,处理器在获取到所读取的缓存缺失数据的数据标识后,可以对读取到的每个缓存缺失数据的数据标识均进行处理,以根据处理结果确定是否将其写入缓存存储器,也可以仅针对所读取的部分缓存缺失数据的数据标识进行处理,以根据处理结果确定是否将其写入缓存存储器。在本发明实施例中,将需要进行处理的缓存缺失数据的数据标识定义为待定数据的数据标识,即本发明实施例中基于对待定数据的数据标识的处理结果,确定是否将该待定数据写入缓存存储器。
结合上述内容,处理器在获取到所读取的缓存缺失数据的数据标识后,需要基于获取的缓存缺失数据的数据标识选择待定数据的数据标识。其中,处理器可以每获取一个缓存缺失数据的数据标识,即确定一次是否将该缓存数据的数据标识确定为待定数据的数据标识;也可以获取一定数量的缓存缺失数据的数据标识后,基于该一定数量的缓存缺失数据的数据标识,从这些一定数量的缓存缺失数据的数据标识中选择一次待定数据的数据标识;还可以在获取缓存缺失数据的数据标识的时间达到一定时长时,基于该一定时长内获取的缓存缺失数据的数据标识,从该一定时长的缓存缺失数据的数据标识中选择一次待定数据的数据标识等。
具体地,处理器在基于获取到的缓存缺失数据的数据标识选择待定数据的数据标识时,包括但不限于有如下两种实现方式:
第一种实现方式:对所读取的缓存缺失数据的数据标识进行随机抽样,将抽中的各个缓存缺失数据的数据标识作为选择的待定数据的数据标识。
具体地,如果处理器每获取一个缓存缺失数据的数据标识,即确定一次是否将其写入缓存存储器,则会增加很多负载,进而降低处理器的数据处理速度。为了避免该种情况发生,可以对所读取的所有缓存缺失数据的数据标识进行随机抽样,将抽中的缓存缺失数据的数据标识作为待定数据的数据标识,并仅针对待定数据的数据标识进行处理,而针对于未抽中的其它缓存缺失数据的数据标识,则不进行处理,从而优化处理器的负载,以减小确定缓存缺失数据过程中对处理器处理其它数据时的处理速度的影响。
其中,在对所读取的缓存缺失数据的数据标识进行随机抽样,将抽中的各个缓存缺失数据的数据标识作为选择的待定数据的数据标识时,包括但不限于有以下几种方式:
第一种:每隔预设时长抽选一个所读取的缓存缺失数据的数据标识,将抽选的缓存缺失数据的数据标识作为一个待定数据的数据标识。
关于预设时长的具体数值,可以根据经验设定。例如,该预设时长可以为1分钟、2分钟、5分钟等。
具体地,如果在到达预设时长时,处理器获取到一个缓存缺失数据的数据标识,则可以将该缓存缺失数据的数据标识作为抽选的一个待定数据的数据标识;如果到达预设时长时,处理器没有获取到缓存缺失数据的数据标识,则处理器可以将下一次获取的缓存缺失数据的数据标识作为抽选的一个待定数据的数据标识。
例如,处理器每3分钟对所读取的缓存缺失数据的数据标识进行一次抽样,计时起点是14:20:15,如果在到达14:23:15时,处理器正获取到缓存缺失数据a的数据标识,则处理器将缓存缺失数据a的数据标识作为一个抽选的待定数据的数据标识。如果在到达14:23:15时,处理器并未获取缓存缺失数据的数据标识,而在14:23:20时,处理器获取到下一个缓存缺失数据b的数据标识,则处理器将缓存缺失数据b的数据标识作为抽选的一个待定数据的数据标识。
当然,如果达到预设时长时,处理器未获取到缓存缺失数据的数据标识,则也可以确定这个时间周期未获取到待定数据的数据标识,并继续计时,当再次历时预设时长后,继续抽选待定数据的数据标识。
第二种:每获取第三预设数值个缓存缺失数据的数据标识后抽选一个所获取的缓存缺失数据的数据标识,将抽选的缓存缺失数据的数据标识作为一个待定数据的数据标识。
关于第三预设数值的个数,可以根据需要设定,例如,第三预设数值可以为10、30、50等。
具体地,处理器可以从计时起点开始对所获取的缓存缺失数据的数据标识的数量进行统计,并设置计数数量的初始值为0。在后续获取数据标识的过程中,处理器每获取一个缓存缺失数据的数据标识,则将计数数量加1,直至计数数量达到第三预设数值时,将该达到第三预设数值时获取的缓存缺失数据的数据标识作为抽选的一个待定数据的数据标识。
例如,如果第三预设数值为10,计数数量的初始值为0,当计数数量增加至10时,处理器正获取到缓存缺失数据c的数据标识,则将缓存缺失数据c的数据标识作为抽选的一个待定数据的数据标识。
第三种:在每次读取缓存缺失数据时,均生成一个对应的随机概率;确定每次生成的随机概率是否不大于预设概率;如果每次生成的随机概率不大于预设概率,则将生成随机概率时读取的缓存缺失数据的数据标识作为一个待定数据的数据标识。
具体地,预设概率为预先设置的对所读取的缓存缺失数据进行抽样的概率。关于该预设概率的具体数值,本发明实施例不作具体限定。例如,该预设概率可以为0.2、0.3等。
其中,在生成随机概率时,可以根据预先定义的随机函数实现。关于随机函数的具体内容,本发明实施例不作具体限定,保证根据该随机函数生成的数值在0-1之间即可。
对于一次读取缓存缺失数据的数据读取过程中,生成该次数据读取过程的随机概率后,为了确定是否将该缓存缺失数据的数据标识作为一个待定数据的数据标识,可以将生成的概率与预设概率进行比对,当生成的概率不小于预设概率时,将生成该随机概率时读取的缓存缺失数据的数据标识作为一个待定数据的数据标识。
例如,如果读取缓存缺失数据d时生成的随机概率为0.13,预设概率为0.2,则由于读取缓存缺失数据d时生成的随机概率0.13小于该预设概率0.2,因此,将缓存缺失数据d的数据标识作为一个待定数据的数据标识。
通过对所读取的各个缓存缺失数据进行抽样,并对抽中的待定数据的数据标识进行处理,而对于未抽中的其它缓存缺失数据的数据标识,则不进行处理,可以避免因对所读取的所有缓存缺失数据的数据标识均进行该处理而消耗处理器过多负载,从而能够减小对数据处理速度的影响。
第二种实现方式:将获取的每个缓存缺失数据的数据标识均作为一个待定数据的数据标识。
在该种实现方式下,针对每次获取的缓存缺失数据的数据标识均会进行处理。通过该种方式能够确保对读取的每个缓存缺失数据均进行识别,使得后续确定的目标待定数据更准确。
304:将各个待定数据的数据标识进行分组记录,并统计各个待定数据的数据标识在各个分组中的出现次数。
在本发明实施例中,为了能够从所有的缓存缺失数据中选择访问次数比较高的好数据,通过将各个待定数据的数据标识进行分组记录,并进一步通过统计各个待定数据的数据标识在各个分组中出现的次数来实现。当某一个待定数据的数据标识在各个分组中的出现次数比较高时,说明该待定数据访问次数比较高,从而可以将该待定数据确定为好数据。另外,如果仅设置一个分组,则某一个待定数据的数据标识在该组数据中的出现次数高具有偶然性,而当设置多个分组时,当某一个待定数据的数据标识在各个分组中的出现次数比较多时,能够排除偶然原因导致的出现次数多,确保能够准确选择出访问次数比较高的好数据。
其中,各个待定数据的数据标识在各个分组中的出现次数可以表示不同的意义。例如,对于某一个待定数据的数据标识,当各个分组中不记录同一待定数据的数据标识时,该待定数据的数据标识在各个分组中的出现次数表示记录该待定数据的数据标识的组数。当各个分组可以用于记录同一待定数据的数据标识时,该待定数据的数据标识在各个分组中的出现次数表示该待定数据的数据标识在各个分组中的出现次数之和。
关于各个分组的形式,可以有很多种,本发明实施例对此不作具体限定。当各个分组的形式不同时,将各个待定数据的数据标识进行分组记录及统计各个待定数据的数据标识在各个分组中的出现次数的方式也不同。例如,各个分组可以构成一个时间窗口序列,该时间窗口序列包括至少两个时间窗口,每个时间窗口包括第一预设数值个第一存储单元,每两个时间窗口之间间隔第二预设数值个第二存储单元。
其中,时间窗口序列包括的时间窗口的具体数量,本发明实施例不作具体限定。例如,时间窗口序列可以包括3个时间窗口,也可以包括5个时间窗口等。关于第一预设数值和第二预设数值的具体数值,本发明实施例同样不作限定。例如,第一预设数值可以为3、4、5等,第二预设数值可以为1或2等。另外,第一存储单元和第二存储单元可以为大小不同的存储单元,也可以为大小相同的存储单元,本发明实施例对此也不进行限定。
如图4所示,其示出了一种时间窗口序列的结构示意图。图4所示的时间窗口序列包括3个时间窗口,每个时间窗口可以存储3个待定数据的数据标识,每两个时间窗口之间的间隙与存储1个数据标识的第一存储单元的大小相同。
结合上述时间窗口序列的形式,在将各个待定数据的数据标识进行分组记录时,可以将各个待定数据的数据标识分别记录至该时间窗口序列的各个第一存储单元中。具体地,在将各个待定数据的数据标识分别记录至时间窗口序列的第一存储单元中时,可以按照时间窗口序列中各个时间窗口的排列顺序,按顺序填充各个时间窗口的第一存储单元。
例如,结合图4,可以将获取到的第一个待定数据的数据标识记录至第一个时间窗口的第一个第一存储单元中,将获取到的第二个待定数据的数据标识记录至第一个时间窗口的第二个第一存储单元中,将获取到的第四个待定数据的数据标识记录至第二个时间窗口的第一个第一存储单元中,依此类推。
进一步地,结合上述时间窗口序列的形式,在统计各个待定数据的数据标识在各个分组中的出现次数时,可以通过统计各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数来实现。
具体地,在统计各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数时,包括但不限于通过如下步骤一和步骤二实现:
步骤一:统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
由于同一待定数据的数据标识相同,且一个数据标识占用一个第一存储单元,因此,可以根据记录同一数据标识的第一存储单元的数量,确定同一待定数据的数据标识在时间窗口序列中的出现次数。结合该内容,为了确定同一待定数据在时间窗口序列的各个时间窗口中的出现次数,需要先统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
具体地,每一个确定缓存缺失数据的过程可以以该时间窗口序列的所有第一存储单元是否被填满来界定。当该时间窗口序列的所有第一存储单元均被填满时,可以看作一个确定缓存缺失数据的过程结束;否则,一个确定缓存缺失数据的过程还未结束,仍需使用待定数据的数据标识填充未被占用的第一存储单元,直至所有第一存储单元均被填满时,该确定缓存缺失数据的过程结束。因此,在统计时间窗口序列的各个时间窗口中存储同一数据标识的第一存储单元的数量时,可以在时间窗口序列中的所有第一存储单元均被填满时实现。
当然,一个确定缓存缺失数据的过程也可以不仅限于为所有第一存储单元均被填满时结束,也可以为时间窗口序列第一存储单元的占用率达到预设阈值时认为一个确定缓存缺失数据的过程结束,本发明实施例对一个确定缓存缺失数据的过程的界定标准不进行限定。在此种情况下,当时间窗口序列第一存储单元的占用率达到预设阈值时,统计一次时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
步骤二:根据记录同一数据标识的第一存储单元的数量,确定各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数。
其中,记录同一数据标识的第一存储单元的数量即为该待定数据的数据标识在时间窗口序列中的出现次数。例如,如果记录待定数据a的数据标识的第一存储单元的数量为3,则可以表明待定数据a在时间窗口序列的各个时间窗口中的出现次数为3次。
当某一个待定数据的被访问次数比较高时,该待定数据的数据标识将会有很多次机会被记录于时间窗口序列的各个第一存储单元中,因此,可以根据时间窗口序列中各个待定数据的数据标识的出现次数选择出访问次数比较高的好数据。结合图4,由于待定数据a的数据标识a在时间窗口序列中出现的次数最多,因此,可以确定待定数据a为访问次数比较高的好数据。
可选地,结合上述对一个确定缓存缺失数据的过程的描述,当时间窗口序列被填满后,可知一个确定缓存缺失数据的过程结束。此时,为了确保后续还可以使用该时间窗口序列存储后续选择的待定数据的数据标识,当统计时间窗口序列中存储同一数据标识的第一存储单元的数量之后,还可以及时清除时间窗口序列的各个第一存储单元中存储的数据标识。其中,在进行清除时,可以删除所有第一存储单元中写入的待定数据的数据标识。
通过上述方式,能够从所有的待定数据中识别出访问量高的好数据,以便后续可以将这些好数据写入缓存存储器,而对于其它访问量不高的缓存缺失数据则不写入缓存存储器,从而能够提高缓存存储器中好数据的比例。
结合上述时间窗口序列的内容,如果时间窗口序列中仅设置一个时间窗口,则某一个待定数据的数据标识在该时间窗口中的出现次数高具有偶然性,而当设置多个时间窗口时,当某一个待定数据的数据标识在各个时间窗口中的出现次数比较多时,能够排除偶然原因导致的出现次数多,确保能够准确选择出访问次数比较高的好数据。
305:根据出现次数选择目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据。
各个待定数据包括访问量高的好待定数据,也包括访问量居中的一般待定数据和访问量低的差待定数据。然而,为了可以将好待定数据确定为写入缓存存储器的缓存缺失数据,可以根据各个待定数据在各个分组中的出现次数选择目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据。
其中,在根据出现次数选择目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据时,可以选择出现次数不小于预设阈值的待定数据作为目标的待定数据,并将目标待定数据确定为写入缓存存储器的缓存缺失数据。
具体地,预设阈值可以根据时间窗口序列中的时间窗口的数量以及每个时间窗口中的各个第一存储单元是否记录同一数据标识来确定。如果每个时间窗口中的各个第一存储单元不记录同一数据标识,则预设阈值不大于时间窗口的数量。例如,当时间窗口的数量为5,且每个时间窗口中的各个第一存储单元不记录同一数据标识,则预设阈值可以为3、4、5等。如果每个时间窗口中的各个第一存储单元可以记录同一数据标识,则预设阈值可能大于时间窗口的数量。例如,当时间窗口的数量为5,且每个时间窗口中的各个第一存储单元可以记录同一数据标识,则预设阈值可以为4、5、7、9等。
通过将待定数据的数据标识记录至第一存储单元中,并根据数据标识在第一存储单元中的出现次数确定目标待定数据时,由于数据标识仅需占用很小的存储空间,因此,可以在不占用处理器很多资源的情况下,比较容易地确定需要写入缓存存储器的缓存缺失数据。另外,由于统计各个待定数据的数据标识在各个分组中的出现次数的过程需要一定的时间才能完成,因此,确定写入缓存存储器的缓存缺失数据的过程需要一定的时间,相对于每次读取到缓存缺失数据时则将其写入缓存存储器的方式,能够减小缓存存储器的数据更新频率,因而,能够提高缓存存储器的寿命。
306:将目标待定数据的数据标识添加至预设白名单中,当后续读取的缓存缺失数据命中预设白名单中的任一个数据标识对应的目标待定数据时,将命中的目标待定数据写入缓存存储器,其中,预设白名单包括第四预设数值个第三存储单元,每个第三存储单元可记录一个目标待定数据的数据标识。
该步骤为可选步骤。当通过步骤301至步骤305确定可以写入缓存存储器的目标待定数据后,可以通过该可选步骤可以将后续数据读取过程中命中的目标待定数据写入缓存存储器。
其中,在将命中的目标待定数据写入缓存存储器时,结合缓存存储器当前的存储情况,包括但不限于有如下两种情况:
第一种情况:缓存存储器的存储空间还未满。
针对该种情况,可以根据命中的目标待定数据的数据大小直接将命中的目标待定数据写入缓存存储器。例如,如果命中的目标待定数据的数据大小为20k,则可以将该命中的目标待定数据写入缓存存储器还未存储数据的20k存储空间中。
第二种情况:缓存存储器的存储空间已满。
针对该种情况,可以根据预设缓存替换算法淘汰缓存存储器中数据大小的存储空间所存储的数据,将命中的目标待定数据写入被淘汰数据对应的存储位置。
其中,该预设缓存替换算法可以为FIFO(First Input First Output,先进先出)算法或LRU(Least Recently Used)算法等。当预设缓存替换算法为FIFO算法时,可以根据命中的目标待定数据的数据大小,淘汰掉缓存存储器中最先存储的该数据大小的存储空间所存储的数据,然后将命中的目标待定数据写入被淘汰数据对应的存储位置。当预设缓存替换算法为LRU算法时,可以根据命中的目标待定数据的数据大小,淘汰掉缓存存储器中最近最少使用的该数据大小的存储空间所存储的数据,然后将该命中的目标待定数据写入被淘汰数据对应的存储位置。
当然,预设缓存替换算法还可以为其它缓存替换算法,本发明实施例不对预设缓存替换算法的具体内容进行限定。
通过该种方式将命中的目标待定数据写入缓存存储器时,可以不用专门消耗处理器资源来将目标待定数据写入缓存存储器,使得向缓存存储器写入目标待定数据的过程对处理器的数据处理速度的影响较小。
进一步地,当预设白名单被填充满后,也可以根据FIFO算法或LRU算法淘汰掉预设白名单中的部分数据,并将后续确定的目标待定数据的数据标识添加至预设白名单中。另外,预设白名单还可以根据在一个确定缓存缺失数据的过程中获取到的数据标识数量对各个数据标识进行排序。在此基础上,在淘汰预设白名单中的部分数据标识时,还可以根据各个数据标识的数量实现。例如,可以淘汰掉预设白名单中数据标识数量最少的数据标识。
当然,在确定目标待定数据后,也可以不通过该可选步骤而直接将确定的目标待定数据写入缓存存储器,本发明实施例对此不作具体限定。
本发明实施例提供的方法,通过将各个待定数据的数据标识进行分组记录,并统计各个待定数据的数据标识在各个分组中的出现次数后,根据出现次数选择目标待定数据,并将目标待定数据确定为写入缓存存储器的缓存缺失数据。由于出现次数多能够标识该缓存缺失数据的被读取次数比较多,因而可以从所读取的缓存缺失数据中选择出被读取次数多的好数据,从而能够提高缓存存储器中存储的好数据的比例,进而能够提高处理器后续从缓存存储器读取数据时的命中率。
参见图5,本发明实施例提供了一种缓存数据的确定装置,该缓存数据的确定装置可以用于执行上述图2或图3所对应实施例提供的缓存数据的确定方法。如图5所示,该缓存数据的确定装置包括:
获取模块501,用于获取所读取的缓存缺失数据的数据标识,数据标识用于区分不同的缓存缺失数据;
选择模块502,用于基于获取的缓存缺失数据的数据标识选择待定数据的数据标识;
记录模块503,用于将各个待定数据的数据标识进行分组记录;
统计模块504,用于统计各个待定数据的数据标识在各个分组中的出现次数;
确定模块505,用于根据出现次数选择目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据。
在另一个实施例中,各个分组构成一个时间窗口序列,时间窗口序列包括至少两个时间窗口,每个时间窗口包括第一预设数值个第一存储单元,每两个时间窗口之间间隔第二预设数值个第二存储单元;
记录模块503,用于将各个待定数据的数据标识按顺序分别记录至时间窗口序列的各个第一存储单元中;
统计模块504,用于统计各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数。
在另一个实施例中,统计模块504包括:
统计单元,用于统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量;
确定单元,用于根据记录同一数据标识的第一存储单元的数量,确定各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数。
在另一个实施例中,统计单元,用于当时间窗口序列中的所有第一存储单元均被填满时,统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
在另一个实施例中,统计模块504还包括:
清除单元,用于清除时间窗口序列的各个第一存储单元中存储的数据标识,以通过时间窗口序列存储后续数据读取过程中选择的待定数据的数据标识。
在另一个实施例中,确定模块505,用于选择出现次数不小于预设阈值的待定数据,将出现次数不小于预设阈值的待定数据作为目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据。
在另一个实施例中,装置还包括:
添加模块,用于将目标待定数据的数据标识添加至预设白名单中,预设白名单包括第四预设数值个第三存储单元,每个第三存储单元可记录一个目标待定数据的数据标识;
写入模块,用于当后续读取的缓存缺失数据命中预设白名单中的任一个数据标识对应的目标待定数据时,将命中的目标待定数据写入缓存存储器。
在另一个实施例中,写入模块用于:
当缓存存储器的存储空间还未满时,根据命中的目标待定数据的数据大小直接将命中的目标待定数据写入缓存存储器;
当缓存存储器的存储空间已满时,根据预设缓存替换算法淘汰缓存存储器中数据大小的存储空间所存储的数据,将命中的目标待定数据写入被淘汰数据对应的存储位置。
本发明实施例提供的装置,通过将各个待定数据的数据标识进行分组记录,并统计各个待定数据的数据标识在各个分组中的出现次数后,根据出现次数选择目标待定数据,并将目标待定数据确定为写入缓存存储器的缓存缺失数据。由于出现次数多能够标识该缓存缺失数据的被读取次数比较多,因而可以从所读取的缓存缺失数据中选择出被读取次数多的好数据,从而能够提高缓存存储器中存储的好数据的比例,进而能够提高处理器后续从缓存存储器读取数据时的命中率。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
参见图6,本发明实施例提供了一种缓存数据的确定装置,该缓存数据的确定装置可以用于执行上述图2或图3所对应实施例提供的缓存数据的确定方法。如图6所示,该缓存数据的确定装置包括处理器601、内存604、缓存存储器602和磁盘603。其中:
磁盘603用于存储缓存缺失数据;
缓存存储器602用于存储缓存命中数据;
内存604用于存储处理器601从缓存存储器602或磁盘603读取的数据;
处理器601,用于:
获取所读取的缓存缺失数据的数据标识,数据标识用于区分不同的缓存缺失数据;
基于获取的缓存缺失数据的数据标识选择待定数据的数据标识;
将各个待定数据的数据标识进行分组记录;
统计各个待定数据的数据标识在各个分组中的出现次数;
根据出现次数选择目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据。
在另一个实施例中,各个分组构成一个时间窗口序列,时间窗口序列包括至少两个时间窗口,每个时间窗口包括第一预设数值个第一存储单元,每两个时间窗口之间间隔第二预设数值个第二存储单元;
处理器601还用于:
将各个待定数据的数据标识按顺序分别记录至时间窗口序列的各个第一存储单元中;
统计各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数。
在另一个实施例中,处理器601还用于:
统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量;
根据记录同一数据标识的第一存储单元的数量,确定各个待定数据的数据标识在时间窗口序列的各个时间窗口中的出现次数。
在另一个实施例中,处理器601还用于:
当时间窗口序列中的所有第一存储单元均被填满时,统计时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
在另一个实施例中,处理器601还用于:
清除时间窗口序列的各个第一存储单元中存储的数据标识,以通过时间窗口序列记录后续数据读取过程中选择的待定数据的数据标识。
在另一个实施例中,处理器601还用于:
选择出现次数不小于预设阈值的待定数据,将出现次数不小于预设阈值的待定数据作为目标待定数据,将目标待定数据确定为写入缓存存储器的缓存缺失数据。
在另一个实施例中,处理器601还用于:
将目标待定数据的数据标识添加至预设白名单中,预设白名单包括第四预设数值个第三存储单元,每个第三存储单元可记录一个目标待定数据的数据标识;
当后续读取的缓存缺失数据命中预设白名单中的任一个数据标识对应的目标待定数据时,将命中的目标待定数据写入缓存存储器。
在另一个实施例中,处理器601还用于:
当缓存存储器的存储空间还未满时,根据命中的目标待定数据的数据大小直接将命中的目标待定数据写入缓存存储器;
当缓存存储器的存储空间已满时,根据预设缓存替换算法淘汰缓存存储器中数据大小的存储空间所存储的数据,将命中的目标待定数据写入被淘汰数据对应的存储位置。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
本发明实施例提供的装置,通过将各个待定数据的数据标识进行分组记录,并统计各个待定数据的数据标识在各个分组中的出现次数后,根据出现次数选择目标待定数据,并将目标待定数据确定为写入缓存存储器的缓存缺失数据。由于出现次数多能够标识该缓存缺失数据的被读取次数比较多,因而可以从所读取的缓存缺失数据中选择出被读取次数多的好数据,从而能够提高缓存存储器中存储的好数据的比例,进而能够提高处理器后续从缓存存储器读取数据时的命中率。
需要说明的是:上述实施例提供的缓存数据的确定装置在确定缓存数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的缓存数据的确定装置与缓存数据的确定方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种缓存数据的确定方法,其特征在于,所述方法包括:
获取所读取的缓存缺失数据的数据标识,所述数据标识用于区分不同的缓存缺失数据;
基于获取的缓存缺失数据的数据标识选择待定数据的数据标识;
将各个待定数据的数据标识进行分组记录;
统计所述各个待定数据的数据标识在各个分组中的出现次数;
根据统计得到的各个待定数据的数据标识的所述出现次数在所述待定数据中选择目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据。
2.根据权利要求1所述的方法,其特征在于,所述各个分组构成一个时间窗口序列,所述时间窗口序列包括至少两个时间窗口,每个时间窗口包括第一预设数值个第一存储单元,每两个时间窗口之间间隔第二预设数值个第二存储单元;
所述将各个待定数据的数据标识进行分组记录,包括:
将各个待定数据的数据标识按顺序分别记录至所述时间窗口序列的各个第一存储单元中;
所述统计所述各个待定数据的数据标识在各个分组中的出现次数,包括:
统计所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数。
3.根据权利要求2所述的方法,其特征在于,所述统计所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数,包括:
统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量;
根据所述记录同一数据标识的第一存储单元的数量,确定所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数。
4.根据权利要求3所述的方法,其特征在于,所述统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量,包括:
当所述时间窗口序列中的所有第一存储单元均被填满时,统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
5.根据权利要求3所述的方法,其特征在于,所述统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量之后,还包括:
清除所述时间窗口序列的各个第一存储单元中存储的数据标识,以通过所述时间窗口序列记录后续数据读取过程中选择的待定数据的数据标识。
6.根据权利要求1至5中任一权利要求所述的方法,其特征在于,所述根据所述出现次数选择目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据,包括:
选择出现次数不小于预设阈值的待定数据,将所述出现次数不小于预设阈值的待定数据作为目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据。
7.根据权利要求1至5中任一权利要求所述的方法,其特征在于,所述根据所述出现次数选择目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据之后,还包括:
将所述目标待定数据的数据标识添加至预设白名单中,所述预设白名单包括第四预设数值个第三存储单元,每个第三存储单元可记录一个目标待定数据的数据标识;
当后续读取的缓存缺失数据命中所述预设白名单中的任一个数据标识对应的目标待定数据时,将命中的目标待定数据写入所述缓存存储器。
8.根据权利要求7所述的方法,其特征在于,所述将命中的目标待定数据写入所述缓存存储器,包括:
当所述缓存存储器的存储空间还未满时,根据所述命中的目标待定数据的数据大小直接将所述命中的目标待定数据写入所述缓存存储器;
当所述缓存存储器的存储空间已满时,根据预设缓存替换算法淘汰所述缓存存储器中所述数据大小的存储空间所存储的数据,将所述命中的目标待定数据写入被淘汰数据对应的存储位置。
9.一种缓存数据的确定装置,其特征在于,所述装置包括:
获取模块,用于获取所读取的缓存缺失数据的数据标识,所述数据标识用于区分不同的缓存缺失数据;
选择模块,用于基于获取的缓存缺失数据的数据标识选择待定数据的数据标识;
记录模块,用于将各个待定数据的数据标识进行分组记录;
统计模块,用于统计所述各个待定数据的数据标识在各个分组中的出现次数;
确定模块,用于根据统计得到的各个待定数据的数据标识的所述出现次数在所述待定数据中选择目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据。
10.根据权利要求9所述的装置,其特征在于,所述各个分组构成一个时间窗口序列,所述时间窗口序列包括至少两个时间窗口,每个时间窗口包括第一预设数值个第一存储单元,每两个时间窗口之间间隔第二预设数值个第二存储单元;
所述记录模块,用于将各个待定数据的数据标识按顺序分别记录至所述时间窗口序列的各个第一存储单元中;
所述统计模块,用于统计所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数。
11.根据权利要求10所述的装置,其特征在于,所述统计模块包括:
统计单元,用于统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量;
确定单元,用于根据所述记录同一数据标识的第一存储单元的数量,确定所述各个待定数据的数据标识在所述时间窗口序列的各个时间窗口中的出现次数。
12.根据权利要求11所述的装置,其特征在于,所述统计单元,用于当所述时间窗口序列中的所有第一存储单元均被填满时,统计所述时间窗口序列的各个时间窗口中记录同一数据标识的第一存储单元的数量。
13.根据权利要求11所述的装置,其特征在于,所述统计模块还包括:
清除单元,用于清除所述时间窗口序列的各个第一存储单元中存储的数据标识,以通过所述时间窗口序列记录后续数据读取过程中选择的待定数据的数据标识。
14.根据权利要求9至13中任一权利要求所述的装置,其特征在于,所述确定模块,用于选择出现次数不小于预设阈值的待定数据,将所述出现次数不小于预设阈值的待定数据作为目标待定数据,将所述目标待定数据确定为写入缓存存储器的缓存缺失数据。
15.根据权利要求9至13中任一权利要求所述的装置,其特征在于,所述装置还包括:
添加模块,用于将所述目标待定数据的数据标识添加至预设白名单中,所述预设白名单包括第四预设数值个第三存储单元,每个第三存储单元可记录一个目标待定数据的数据标识;
写入模块,用于当后续读取的缓存缺失数据命中所述预设白名单中的任一个数据标识对应的目标待定数据时,将命中的目标待定数据写入所述缓存存储器。
16.根据权利要求15所述的装置,其特征在于,所述写入模块用于:
当所述缓存存储器的存储空间还未满时,根据所述命中的目标待定数据的数据大小直接将所述命中的目标待定数据写入所述缓存存储器;
当所述缓存存储器的存储空间已满时,根据预设缓存替换算法淘汰所述缓存存储器中所述数据大小的存储空间所存储的数据,将所述命中的目标待定数据写入被淘汰数据对应的存储位置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510105461.XA CN104699422B (zh) | 2015-03-11 | 2015-03-11 | 缓存数据的确定方法及装置 |
PCT/CN2015/095608 WO2016141735A1 (zh) | 2015-03-11 | 2015-11-26 | 缓存数据的确定方法及装置 |
EP15884413.4A EP3252609A4 (en) | 2015-03-11 | 2015-11-26 | Cache data determination method and device |
US15/699,406 US20170371807A1 (en) | 2015-03-11 | 2017-09-08 | Cache data determining method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510105461.XA CN104699422B (zh) | 2015-03-11 | 2015-03-11 | 缓存数据的确定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699422A CN104699422A (zh) | 2015-06-10 |
CN104699422B true CN104699422B (zh) | 2018-03-13 |
Family
ID=53346603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510105461.XA Active CN104699422B (zh) | 2015-03-11 | 2015-03-11 | 缓存数据的确定方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20170371807A1 (zh) |
EP (1) | EP3252609A4 (zh) |
CN (1) | CN104699422B (zh) |
WO (1) | WO2016141735A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699422B (zh) * | 2015-03-11 | 2018-03-13 | 华为技术有限公司 | 缓存数据的确定方法及装置 |
KR102540765B1 (ko) * | 2016-09-07 | 2023-06-08 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
CN109189822B (zh) * | 2018-08-08 | 2022-01-14 | 北京大数据研究院 | 数据处理方法及装置 |
CN109491873B (zh) * | 2018-11-05 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 缓存监控方法、介质、装置和计算设备 |
CN109857680B (zh) * | 2018-11-21 | 2020-09-11 | 杭州电子科技大学 | 一种基于动态页面权重的lru闪存缓存管理方法 |
CN111506524B (zh) * | 2019-01-31 | 2024-01-30 | 华为云计算技术有限公司 | 一种数据库中淘汰、预加载数据页的方法、装置 |
CN112560118A (zh) * | 2019-09-26 | 2021-03-26 | 杭州中天微系统有限公司 | 用于提供可重置的标识符的配置装置和配置方法 |
CN112565870B (zh) | 2019-09-26 | 2021-09-14 | 北京字节跳动网络技术有限公司 | 内容的缓存和读取方法、客户端及存储介质 |
CN110716885B (zh) * | 2019-10-23 | 2022-02-18 | 北京字节跳动网络技术有限公司 | 数据管理方法、装置、电子设备和存储介质 |
CN111708720A (zh) * | 2020-08-20 | 2020-09-25 | 北京思明启创科技有限公司 | 一种数据缓存方法、装置、设备及介质 |
CN112163176A (zh) * | 2020-11-02 | 2021-01-01 | 北京城市网邻信息技术有限公司 | 数据存储方法、装置、电子设备和计算机可读介质 |
CN112511848B (zh) * | 2020-11-09 | 2023-06-20 | 网宿科技股份有限公司 | 直播方法、服务端及计算机可读存储介质 |
CN114327672B (zh) * | 2021-12-14 | 2024-04-05 | 中国平安财产保险股份有限公司 | 数据缓存时间设置方法、装置、计算机设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104364776A (zh) * | 2012-06-15 | 2015-02-18 | 华为技术有限公司 | 使用缓存缺失请求提供缓存替换通知 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192450B1 (en) * | 1998-02-03 | 2001-02-20 | International Business Machines Corporation | Destage of data for write cache |
US6507893B2 (en) * | 2001-01-26 | 2003-01-14 | Dell Products, L.P. | System and method for time window access frequency based caching for memory controllers |
CN100383792C (zh) * | 2006-04-04 | 2008-04-23 | 浙江大学 | 缓存数据库数据组织方法 |
JP4933211B2 (ja) * | 2006-10-10 | 2012-05-16 | 株式会社日立製作所 | ストレージ装置、制御装置及び制御方法 |
CN101388110B (zh) * | 2008-10-31 | 2011-08-17 | 深圳市同洲电子股份有限公司 | 数据快速读取方法及装置 |
CN102722448B (zh) * | 2011-03-31 | 2015-07-22 | 国际商业机器公司 | 管理高速存储器的方法和装置 |
JP5175953B2 (ja) * | 2011-06-02 | 2013-04-03 | 株式会社東芝 | 情報処理装置およびキャッシュ制御方法 |
EP2767068A1 (en) * | 2011-09-15 | 2014-08-20 | Telefonaktiebolaget LM Ericsson (PUBL) | Cache replacement method and system |
CN103177005B (zh) * | 2011-12-21 | 2016-08-03 | 深圳市腾讯计算机系统有限公司 | 一种数据访问的处理方法和系统 |
CN103186350B (zh) * | 2011-12-31 | 2016-03-30 | 北京快网科技有限公司 | 混合存储系统及热点数据块的迁移方法 |
US8966204B2 (en) * | 2012-02-29 | 2015-02-24 | Hewlett-Packard Development Company, L.P. | Data migration between memory locations |
US9021203B2 (en) * | 2012-05-07 | 2015-04-28 | International Business Machines Corporation | Enhancing tiering storage performance |
CN103514106B (zh) * | 2012-06-20 | 2016-06-22 | 北京神州泰岳软件股份有限公司 | 一种数据缓存方法 |
CN103631528B (zh) * | 2012-08-21 | 2016-05-18 | 苏州捷泰科信息技术有限公司 | 用固态硬盘作为缓存器的读写方法、系统及读写控制器 |
US9135173B2 (en) * | 2013-01-22 | 2015-09-15 | International Business Machines Corporation | Thinly provisioned flash cache with shared storage pool |
WO2014209234A1 (en) * | 2013-06-26 | 2014-12-31 | Agency For Science, Technology And Research | Method and apparatus for hot data region optimized dynamic management |
CN104699422B (zh) * | 2015-03-11 | 2018-03-13 | 华为技术有限公司 | 缓存数据的确定方法及装置 |
-
2015
- 2015-03-11 CN CN201510105461.XA patent/CN104699422B/zh active Active
- 2015-11-26 EP EP15884413.4A patent/EP3252609A4/en not_active Ceased
- 2015-11-26 WO PCT/CN2015/095608 patent/WO2016141735A1/zh active Application Filing
-
2017
- 2017-09-08 US US15/699,406 patent/US20170371807A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104364776A (zh) * | 2012-06-15 | 2015-02-18 | 华为技术有限公司 | 使用缓存缺失请求提供缓存替换通知 |
Also Published As
Publication number | Publication date |
---|---|
US20170371807A1 (en) | 2017-12-28 |
WO2016141735A1 (zh) | 2016-09-15 |
EP3252609A1 (en) | 2017-12-06 |
EP3252609A4 (en) | 2018-01-17 |
CN104699422A (zh) | 2015-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699422B (zh) | 缓存数据的确定方法及装置 | |
CN105117180B (zh) | 一种数据存储方法和装置以及固态硬盘 | |
CN110806986B (zh) | 提高网络芯片报文存储效率的方法、设备及存储介质 | |
CN104881259B (zh) | 一种数据处理方法和装置以及存储设备 | |
CN104572491B (zh) | 一种基于固态硬盘的读缓存管理方法及装置 | |
CN103440207B (zh) | 缓存方法及装置 | |
CN102760101B (zh) | 一种基于ssd 的缓存管理方法及系统 | |
CN104115134B (zh) | 用于管理对复合数据存储设备进行访问的方法和系统 | |
CN104794064B (zh) | 一种基于区域热度的缓存管理方法 | |
CN104503703B (zh) | 缓存的处理方法和装置 | |
CN106547476B (zh) | 用于数据存储系统的方法和装置 | |
CN109032517B (zh) | 一种数据落盘的方法、装置和计算机可读存储介质 | |
CN108139872A (zh) | 一种缓存管理方法、缓存控制器以及计算机系统 | |
CN104156323B (zh) | 一种高速缓冲存储器的数据块长度自适应读取方法及装置 | |
CN105404595B (zh) | 缓存管理方法及装置 | |
CN103888377A (zh) | 报文缓存方法及装置 | |
CN110297787A (zh) | I/o设备访问内存的方法、装置及设备 | |
CN108073349A (zh) | 数据的传输方法及装置 | |
CN106888381A (zh) | 一种数据资源存储方法及装置 | |
CN108139904A (zh) | 写入命令过滤 | |
CN110413545B (zh) | 存储管理方法、电子设备和计算机程序产品 | |
CN106155913B (zh) | 缓存命中率分析的方法及设备 | |
CN105512051B (zh) | 一种自学习型智能固态硬盘缓存管理方法和装置 | |
CN115617712A (zh) | 一种基于组相联高速缓存Cache的LRU替换算法 | |
CN115408149A (zh) | 一种时序存储引擎内存设计及分配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |