CN110502452B - 访问电子设备中的混合缓存的方法及装置 - Google Patents
访问电子设备中的混合缓存的方法及装置 Download PDFInfo
- Publication number
- CN110502452B CN110502452B CN201910631237.2A CN201910631237A CN110502452B CN 110502452 B CN110502452 B CN 110502452B CN 201910631237 A CN201910631237 A CN 201910631237A CN 110502452 B CN110502452 B CN 110502452B
- Authority
- CN
- China
- Prior art keywords
- data
- accessed
- index table
- bit
- heat
- 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
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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/0877—Cache access modes
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
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
本申请公开了一种访问电子设备中的混合缓存的方法及装置,属于计算机存储技术领域。该方法包括:接收针对待访问数据的读指令。当在索引表中查找到待访问数据的逻辑地址时,则从索引表中获取待访问数据的状态信息,进而读取待访问数据。状态信息用于指示数据存储在易失性缓存中还是非易失性缓存中。也即是,本申请为混合缓存统一设置一个索引表,索引表中记录了混合缓存中所存储的数据的逻辑地址,并指示每个逻辑地址对应的数据是存储在DRAM中还是PCM中,这样在混合缓存中读取数据时,不管该数据存储在混合缓存的DRAM中还是PCM中,均仅需查找一次索引表即可确定该数据存储在哪种缓存中,从而提高了访问混合缓存中的数据的效率。
Description
技术领域
本申请涉及计算机存储技术领域,特别涉及一种访问电子设备中的混合缓存的方法及装置。
背景技术
随着大数据时代的到来,一种基于动态随机存储器(dynamic random accessmemory,DRAM)和相变存储器(phase change memory,PCM)的混合缓存逐渐受到人们的青睐。其中,相对于DRAM,PCM具有非易失性、低功耗和存储密度大等优势。但是相对于PCM,DRAM在写延迟上有一定优势,因此基于DRAM和PCM的混合缓存可以同时兼具两者的优点。由于混合缓存中包括两种不同类型的存储介质,因此,亟需研究一种访问混合缓存的方法。
相关技术中,为DRAM和PCM分别设置各自所存储数据的索引表。当处理器访问某个数据时,先根据DRAM的索引表确定DRAM中是否存储有这个数据。如果DRAM中未存储这个数据,则根据PCM的索引表确定PCM中是否存储有这个数据。如果PCM中存储这个数据,则从PCM中获取这个数据。基于上述描述,当需要在混合缓存中访问数据时,可能需要对DRAM和PCM对应的索引表分别进行查询,从而影响访问混合缓存的速度。
发明内容
本申请提供了一种访问电子设备中的混合缓存的方法及装置,可以提高访问混合缓存的速度。所述技术方案如下:
第一方面,提供了一种访问电子设备中的混合缓存的方法,该方法应用于电子设备,混合缓存包括易失性缓存和非易失性缓存。该方法包括:接收针对待访问数据的读指令,读指令中携带待访问数据的逻辑地址;在索引表中查找逻辑地址,索引表中存储有混合缓存中所存储数据的逻辑地址对应的状态信息,状态信息用于指示混合缓存中所存储数据是存储在易失性缓存中还是非易失性缓存中;当在索引表中查找到待访问数据的逻辑地址时,则从索引表中获取待访问数据的状态信息;根据待访问数据的状态信息从非易失性缓存或者易失性缓存中读取待访问数据。
当采用两级混合缓存时,如果DRAM和PCM分别设置各自的索引表,需要先查找DRAM的索引表,当所读取的数据不在DRAM的索引表中时,还需要查找PCM的索引表。这样,如果所读取的数据不在DRAM中时,还需要执行一次查找PCM索引表的过程,这将增加数据读取的时延。因此,在本申请实施例中,可以为混合缓存统一设置一个索引,该索引表中记录了混合缓存中所存储的数据的逻辑地址,并指示每个逻辑地址对应的数据是存储在DRAM中还是PCM中,这样在混合缓存中读取数据时,不管该数据存储在混合缓存的DRAM中还是PCM中,均仅需查找一次索引表即可确定该数据存储在哪种缓存中,从而提高了访问混合缓存中的数据的效率。
可选地,索引表中的每个逻辑地址对应有存储每个逻辑地址对应的数据的物理地址;相应地,该方法还包括:在从索引表中获取待访问数据的状态信息时,还获取待访问数据的物理地址。相应地,根据待访问数据的状态信息从非易失性缓存或者易失性缓存中读取待访问数据包括:根据待访问数据的状态信息及待访问数据的物理地址从非易失性缓存或者易失性缓存中读取待访问数据。
在本申请实施例中,索引表中的每个逻辑地址对应有存储每个逻辑地址对应的数据的物理地址,如此,在确定待访问数据的状态信息时还可以获取待访问数据的物理地址,进而根据状态信息和物理地址直接读取待访问数据,进一步提高了访问混合缓存中的数据的效率。
可选地,索引表包括一级索引表和多个二级索引表,一级索引表中的一级索引为逻辑地址中从高位到低位的排序中的前p个比特位上的比特值进行组合得到的2^p个比特值组合,p为正整数,每个比特值组合对应一个二级索引表指针,二级索引表指针用于指示多个二级索引表中的一个二级索引表,二级索引表用于存储逻辑地址和每个逻辑地址对应的物理地址,存储的逻辑地址为存储在混合缓存中的数据逻辑地址,且所存储的逻辑地址的前p个比特位与一级索引表中的二级索引表指针所对应的比特值组合中的比特值相同。在索引表中查找逻辑地址包括:在一级索引中查找待访问数据的逻辑地址的前p个比特位对应的比特值组合;根据比特值组合对应的二级索引表指针,从多个二级索引表中获取一个二级索引表;在二级索引表中查找待访问数据的逻辑地址。
在本申请实施例中,为了避免索引表的结构过于庞大,索引表可以包括一级索引表和多个二级索引表,这样便可在一级索引表中的值中配置二级索引表指针,以便于能够快速查找到二级索引表,从而提高查找待访问数据的逻辑地址的效率。
可选地,索引表的一级索引表还包括存储的各个逻辑地址对应的数据的状态信息,具体为:每个一级索引所对应的查询结果还包括一个状态信息集合,状态信息集合用于存储逻辑地址满足相应一级索引的数据的状态信息,二级索引表中存储逻辑地址顺序排列;从索引表包括的各个数据的状态信息中确定待访问数据的状态信息,包括:根据待访问数据的逻辑地址在获取的二级索引表中的排序,从一级索引对应的查询结果中包括的状态信息集合中确定待访问数据的状态信息。可选地,索引表的二级索引表还包括存储的各个逻辑地址对应的数据的状态信息具体为:二级索引表还用于存储每个逻辑地址对应的数据的状态信息;从索引表包括的各个数据的状态信息中确定待访问数据的状态信息,包括:在获取的二级索引表中确定待访问数据的状态信息。
在本申请实施例中,索引表中存储的各个逻辑地址对应的数据的状态信息可以设置在一级索引表中,也可以设置在二级索引表中,提高了索引表的灵活性。
可选地,二级索引表中的二级索引为逻辑地址中除p个比特位之外的其他q个比特位上的比特值,q为正整数,二级索引表中的每个二级索引对应的查询结果中包括一个逻辑地址集合,逻辑地址集合中的每个逻辑地址对应一个物理地址,且逻辑地址集合包括的逻辑地址为混合缓存中逻辑地址同时满足相应一级索引和相应二级索引的数据的逻辑地址。
当二级索引表按照上述设置配置时,可以避免二级索引表包括的项的数量过多,从而提高在二级索引表中查找信息的效率。
可选地,读取待访问数据之后,还包括:根据待访问数据的逻辑地址,从热度记录表中获取与待访问数据的逻辑地址对应的热度记录序列,热度记录表包括多个热度记录序列,每个热度记录序列对应一段逻辑地址区间,待访问数据的逻辑地址落在逻辑地址区间内,每个热度记录序列用于记录对应逻辑地址区间对应的数据的热度;更新所获取的热度记录序列所记录的热度。
在本申请实施例中,需要为混合缓存的易失性缓存中的数据配置热度记录,以便于后续根据热度记录确定易失性缓存中的哪些热数据需要淘汰成温数据。
可选地,每个热度记录序列包括多个比特位,每个比特位对应一个更新周期。相应地,更新所获取的热度记录序列所记录的热度,包括:获取当前时间对应的更新周期,将当前时间对应的更新周期对应的比特位更新为表示热度记录序列对应的逻辑地址对应的数据被访问过的标识。
在本申请实施例中,可以为比特位配置更新周期,在某个更新周期内只需更新该更新周期对应的比特位即可,以便于后续快速根据各个更新周期对应的比特位确定数据在最近一段时间内的访问热度。
可选地,该方法还包括:检测热度衰减指令;获取每个热度记录序列多个比特位中位于当前时间对应的更新周期之后的下一个更新周期对应的比特位;将每个热度记录序列中下一个更新周期对应的比特位上的比特值更新为标识热度记录序列对应的逻辑地址对应的数据未被访问过的标识;将每个热度记录序列中下一个更新周期确定为当前时间对应的更新周期。
如果在一段时间内某些数据频繁地被访问,将导致这些数据对应的热度记录序列中的比特位均被更新为表示热度记录序列对应的逻辑地址对应的数据被访问过的标识。后续如果这些数据继续被访问,那么热度记录序列将不能代表这些数据在最近一段时间内被访问的记录。因此,在本申请实施例中,还需通过上述方式对热度记录表中的热度记录序列进行热度衰减。
可选地,多个比特位按照指定顺序周期性地排列;热度记录表配置有时钟和指针,时钟在***初始化之后按照设置的时长周期性地计时,指针在***初始化时指向多个比特位中的一个比特位,在每次时钟的计时时长达到设置的时长时,触发指针按照排序切换指向下一个比特位;当前时间对应的更新周期对应的比特位为当前时间指针指向的比特位。通过指针和时钟的配置,可以快速确定多个比特位中各个比特位对应的更新周期。
可选地,检测热度衰减指令,包括:当当前时间到达热度记录表更新时间点时,则触发热度衰减指令,热度记录表更新时间点为***初始化时配置的;和/或,当高热度记录序列在所有热度记录序列中所占的比例大于参考比例时,则触发热度衰减指令,高热度记录序列指高位比特位均为表示热度记录序列对应的逻辑地址对应的数据被访问过的标识的热度记录序列,高位比特位是指多个比特位中更新周期在当前时间之前参考时长内的比特位。也即是,可以在上述两种场景中进行热度衰减,提高了进行热度衰减的灵活性。
可选地,该方法还包括:根据热度记录表确定易失性缓存中所存储的数据的热度值;如果数据的热度值小于热度阈值,则将该数据淘汰至非易失性缓存中。由于热度记录表中的一个热度记录序列可以对应一段逻辑地址区间,因此,通过本申请实施例提供的淘汰数据的方式,可以利用热数据的空间局部性,同时对一批数据进行处理,提高了淘汰热数据的效率。
可选地,根据热度记录表确定易失性缓存中所存储的数据的热度值之后,还包括:如果热度值小于热度阈值,则确定与该数据的逻辑地址相邻的逻辑地址对应的数据的热度值;确定数据和与数据的逻辑地址相邻的逻辑地址对应的数据的平均热度值;如果平均热度值大于或等于热度阈值,则保留数据在易失性缓存中。
为了提高由于偶然原因出现淘汰数据出现错误,如果某个数据的热度值小于热度阈值,并不急于将该数据淘汰至非易失性缓存,而是结合逻辑地址与该数据的逻辑地址相邻的数据的热度值,综合判断是否需要将该数据淘汰至非易失性缓存,提高了淘汰热数据的灵活性。
可选地,确定平均热度值之后,还包括:如果平均热度值小于热度阈值,则将数据淘汰至非易失性缓存中。
如果平均热度值小于热度阈值,表明与该数据的逻辑地址相邻的逻辑地址对应的数据大部分最近也没有被频繁地访问,此时,可以将该数据淘汰至非易失性缓存中,提高了淘汰热数据的灵活性。
可选地,根据热度记录表确定易失性缓存中所存储的数据的热度值之前,还包括:当检测到易失性缓存的剩余存储容量低于空闲容量阈值时,和/或,当检测到淘汰热数据指令时,执行根据热度记录表确定易失性缓存中所存储的数据的热度值的步骤。也即是,可以在以上两种场景来进行热数据淘汰,提高了淘汰热数据的灵活性。
可选地,多个比特位中每个比特位配置有一个时间权重,每个比特位的时间权重用于指示相应比特位上的比特值的更新时间距离当前时间的远近,多个比特位中当前时间待更新比特位的时间权重最大;根据热度记录表确定易失性缓存中所存储的数据的热度值,包括:获取热度记录表中每个热度记录序列包括的多个比特位的时间权重;根据每个热度记录序列包括的多个比特位的时间权重,将每个热度记录序列包括的多个比特位上的比特值进行加权求和,得到的求和值作为每个热度记录序列对应的逻辑地址区间对应的数据的热度值。这种确定热度值的方式可以使得确定的热度值能够指示该数据在当前时间最近一段时间内被访问的情况。具体地,热度值越大,表明该数据最近被访问的频率较高,热度值越小,表明该数据最近被访问的频率较低。
可选地,如果热度值大于热度阈值,则保留第一热度记录序列对应的逻辑地址的数据在易失性缓存中之前,还包括:如果当前时间到达热度阈值更新时间点,则从热度记录表中随机选择m个热度记录序列,m为大于或等于1的正整数,热度阈值更新时间点为***初始化时配置的;根据m个热度记录序列中每个热度记录序列的热度值和易失性缓存中的期望存储数据比例,确定热度阈值,期望存储数据比例是指在易失性缓存中期望存储的数据的大小与在混合缓存中期望存储的数据的大小之间的比例。
为了使得热度阈值能够反映混合缓存中的当前数据访问情况,处理器可以定期动态调整热度阈值,以便于后续根据调整之后的热度阈值进行热数据淘汰,以使热数据淘汰后的易失性缓存的访问命中率较高。
该方法还包括:确定易失性缓存的访问命中率,访问命中率用于指示访问的数据为易失性缓存中的数据的比例;根据易失性缓存的访问命中率,确定m。其中,随机选择的热度记录序列的个数也是根据当前混合缓存中的数据访问情况确定的,以便于后续根据调整之后的热度阈值进行热数据淘汰,以使热数据淘汰后的易失性缓存的访问命中率较高。
可选地,确定易失性缓存的访问命中率之后,还包括:根据易失性缓存的访问命中率,确定热度阈值更新时间点。另外,定期动态调整热度阈值的周期也可以根据当前混合缓存中的数据访问情况确定,以便于后续根据调整之后的热度阈值进行热数据淘汰,以使热数据淘汰后的易失性缓存的访问命中率较高。
第二方面,提供了一种访问电子设备中的混合缓存的装置,该装置具有实现上述第一方面中访问电子设备中的混合缓存的方法行为的功能。该装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的访问电子设备中的混合缓存的方法。
第三方面,提供了一种访问电子设备中的混合缓存的装置,该装置的结构中包括处理器和存储器,存储器用于存储支持该装置执行上述第一方面所提供的访问电子设备中的混合缓存的方法的程序,以及存储用于实现上述第一方面所提供的访问电子设备中的混合缓存的方法所涉及的数据。处理器被配置为用于执行存储器中存储的程序。存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述第一方面的访问电子设备中的混合缓存的方法。
第五方面,提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面所述的访问混合缓存中的数据的方法。
上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是本申请实施例提供的一种电子设备的结构示意图;
图2是本申请实施例提供的一种处理器访问数据的流程示意图;
图3是本申请实施例提供的一种访问电子设备中的混合缓存的方法流程图;
图4是本申请实施例提供的一种索引表的示意图;
图5是本申请实施例提供的一种记录热度的方法流程图;
图6是本申请实施例提供的一种热度记录表的示意图;
图7是本申请实施例提供的一种热度衰减方法流程图;
图8是本申请实施例提供的一种热数据淘汰方法流程图;
图9是本申请实施例提供的一种访问电子设备中的混合缓存的装置示意图;
图10是本申请实施例提供的另一种访问电子设备中的混合缓存的装置示意图;
图11是本申请实施例提供的另一种访问电子设备中的混合缓存的装置示意图;
图12是本申请实施例提供的另一种访问电子设备中的混合缓存的装置示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种电子设备的结构示意图。如图1所示,该电子设备包括至少一个处理器101,总线102、混合缓存104、外存105以及至少一个通信接口106。
处理器101可以是一个通用中央处理器(central processing unit,CPU)或一个或多个用于控制本申请方案程序执行的集成电路。每个处理器可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
总线102用于连接处理器101、内存103、混合缓存104以及外存105之间传送信息。该总线102除包括数据总线之外,还可以包括电源总线和控制总线等。但是为了清楚说明起见,在图中将各种总线都标为总线102。
混合缓存104作为电子设备的内存,包括易失性缓存103和非易失性缓存107,且易失性缓存103中可以划分出两个区域,这两个区域分别称之为写数据缓存1031和读数据缓存1032。写数据缓存1031用于为处理器101执行写数据操作提供缓存。写数据缓存1031中的数据按照一定的算法下刷至外存105中。本申请实施例并不限定将写数据缓存1031中的数据下刷至外存105的具体实现方式。
读数据缓存1032和非易失性缓存107用于为处理器101执行读数据操作提供两级的缓存。
上述易失性缓存103可以为随机存取存储器(random access memory,RAM)、DRAM等。非易失性缓存107可以为PCM、铁电存储器、或者磁式存储器等新型的非易失性存储设备。
另外,外存105可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only Memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。
另外,读数据缓存1031还用于存储执行本申请方案的程序代码,并由处理器101来控制执行。程序代码中可以包括一个或多个软件模块。
通信接口106,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(wireless local area networks,WLAN)等。
上述的计算机设备可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备可以是台式机、便携式电脑、网络服务器、掌上电脑(PersonalDigital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备或者嵌入式设备。本申请实施例不限定计算机设备的类型。
基于上述图1所示,计算机设备中包括写数据缓存1031、读数据缓存1032和非易失性缓存107、以及外存105这三类不同功能的存储介质。处理器在访问数据时,可以按照一定的顺序依次访问这三类存储介质。图2是本申请实施例提供的一种处理器访问数据的流程示意图。如图2所示,处理器在访问数据时,先从写数据缓存1031中访问该数据。如果写数据缓存1031中不存在该数据,则从读数据缓存1032和非易失性缓存107中访问该数据。如果读数据缓存1032和非易失性缓存107中不存在该数据,则从外存105中访问该数据。
图2中的读数据缓存1032用于存储读数据缓存1032和非易失性缓存107这个两级缓存的索引表及热数据。索引表包括读数据缓存1032中存储的数据的索引,以及非易失性缓存107中存储的数据的索引。
非易失性缓存107用于存储从读数据缓存1032中淘汰下来的温数据。本申请实施例提供了一种数据热度识别算法、及一种数据淘汰算法,数据热度识别算法用于识别读数据缓存1032中所存储数据的热度。数据淘汰算法用于根据所识别的数据的热度将读数据缓存1032中的数据淘汰至非易失性缓存107中,后续实施例将对此进行详细解释说明,在此就先不阐述。
另外,如图2所示,非易失性缓存107也可以按照一定的策略对存储的数据进行淘汰,并将淘汰的冷数据存储至外存105中。关于将非易失性缓存107中的数据淘汰至外存105的解释可以参考现有的缓存淘汰的相关技术,本申请实施例对此不做详细阐述。
本申请实施例中,数据根据被访问的频率划分为热数据、温数据、及冷数据。访问频率大于等于第一预设值的为热数据、访问频率小于第一预设值大于第二预设值的为温数据、访问频率小于等于第二预设值的数据为冷数据。
接下来对本申请实施例提供的访问电子设备中的混合缓存的方法进行解释说明。需要说明的是,本申请实施例中访问的混合缓存具体是指图1和图2中的读数据缓存1032和非易失性缓存107这个两级缓存,其中,访问的混合缓存中的易失性缓存具体是指图1和图2中的读数据缓存1032,后续不再一一解释。
图3是本申请实施例提供的一种访问电子设备中的混合缓存的方法流程图。应用于图1所示的电子设备的处理器中。如图3所示,该方法包括如下步骤:
步骤301:接收针对待访问数据的读指令,读指令中携带待访问数据的逻辑地址。
基于图2所示的处理访问数据的流程可知,当处理器接收到读指令时,先确定写数据缓存中是否存储有该待访问数据。如果写数据缓存中存储有该待访问数据,则直接读取该待访问数据。如果写数据缓存中不存在该待访问数据,则确定读数据缓存和非易失性缓存这个两级混合缓存中是否存储有该待访问数据。本申请实施例提供的访问电子设备中的混合缓存的方法可以应用于该场景中。
对于混合缓存,如果DRAM和PCM分别设置各自的索引表,混合缓存中每种缓存的索引表用于指示该缓存中的存储的数据的逻辑地址和物理地址之间的映射关系则在读取数据时,需要先查找DRAM的索引表,当所读取的数据不在DRAM的索引表中时,还需要查找PCM的索引表。
这样,如果所读取的数据不在DRAM中时,还需要执行一次查找PCM索引表的过程,这将增加数据读取的时延。因此,在本申请实施例中,可以为混合缓存统一设置一个索引表,索引表中记录了混合缓存中所存储的数据的逻辑地址,并指示每个逻辑地址对应的数据是存储在DRAM中还是PCM中,这样在混合缓存中读取数据时,不管该数据存储在混合缓存的DRAM中还是PCM中,均仅需查找一次索引表即可确定该数据存储在哪种缓存中,从而提高了访问混合缓存中的数据的效率。
为了后续便于说明,在此先对本申请实施例提供的索引表进行解释说明。
图4是本申请实施例提供的一种索引表的示意图。该索引表中记录了混合缓存中存储的数据的逻辑地址、每个逻辑地址对应的物理地址,以及每个逻辑地址对应的数据的状态信息,状态信息用于指示逻辑地址对应的数据是存储在DRAM中,还是存储在PCM中。如图4所示,索引表可以包括一级索引表401(entry table)和多个二级索引表402(nodetable)。为了后续便于说明,将一级索引表中的索引称为一级索引,将二级索引表中的索引称为二级索引。
一级索引可以为逻辑地址中p个比特位上的比特值进行组合得到的2^p个比特值组合。p为正整数。这p个比特位可以为从高位到低位的排序中的前p个比特位。
由于p个比特位上的比特值可以组合得到2^p个不同的比特值组合,而图4中的索引表中用于记录混合缓存中的数据的逻辑地址、逻辑地址对应的物理地址、以及每个逻辑地址对应的数据的状态信息。虽然不是所有逻辑地址中的数据均存储在混合缓存中,但是为了避免后续在混合缓存中的数据发生变化时,一级索引表中需要频繁地添加或删除某项信息。因此,如图4所示,一级索引表可以包括2^p项信息。每项信息包括一个一级索引和该一级索引所对应的查询结果。一级索引表中每个一级索引所对应的查询结果包括一个二级索引表指针和一个状态信息集合。也即是,每个比特值组合对应一个二级索引表指针和一个状态信息集合。如此,后续当混合缓存中数据发生变化时,只需要更新各个一级索引对应的查询结果即可,而无需更改整个一级索引表的结构。
对于一级索引表中的任一一级索引,该一级索引所对应的查询结果中的状态信息集合包括二级索引表指针所指示的二级索引中所确定的逻辑地址所指示数据的状态信息。由于不是所有逻辑地址中的数据均存储在混合缓存中,因此,对于该一级索引对应的状态信息集合,该状态信息集合中只包括混合缓存中逻辑地址前p个比特位与该一级索引所对应的比特值组合中的比特值相同的数据的状态信息。比如,如果混合缓存中逻辑地址前p个比特位与该一级索引所对应的比特值组合中的比特值相同的数据的个数为1个,那么该状态信息集合中的状态信息的个数为1个。如果混合缓存中逻辑地址前p个比特位与该一级索引所对应的比特值组合中的比特值相同的数据的个数为多个,那么该状态信息集合中的状态信息的个数为多个。如果混合缓存中不存在逻辑地址前p个比特位与该一级索引所对应的比特值组合中的比特值相同的数据,那么该状态信息集合中的状态信息的个数为0。
对于一级索引表中的任一一级索引,该一级索引所对应的查询结果中的二级索引表指针用于指示多个二级索引表中的一个二级索引表,也即是,图4中一级索引表的每项信息对应一个二级索引表。该二级索引表中用于记录逻辑地址和每个逻辑地址对应的物理地址,记录的逻辑地址为混合缓存中逻辑地址满足相应一级索引的数据逻辑地址,逻辑地址满足相应一级索引是指:逻辑地址前在p个比特位上的比特值与相应一级索引所指示的p个比特位上的比特值组合中的比特值相同。也即是,二级索引表中的存储的逻辑地址为存储在混合缓存中的数据逻辑地址,且所存储的逻辑地址的前p个比特位与一级索引表中的该二级索引表指针所对应的比特值组合中的比特值相同。其中,二级索引表中记录逻辑地址的实现方式可以为:记录逻辑地址中除p个比特位之外的其他位的值,或者,记录逻辑地址在全部比特位上的比特值。
比如,逻辑地址包括32个比特位,可以将逻辑地址中高10位上的比特位作为一级索引表的一级索引,此时,图4所示的一级索引表包括2^10项信息,每项信息对应一个二级索引表。假设一级索引表中第一项信息包括的一级索引为0000000000,也即是,高10位比特位上的比特值均为0。此时,0000000000这个一级索引所对应的查询结果中的状态信息集合包括混合缓存中逻辑地址的高10位上的比特值均为0的所有数据的状态信息。0000000000这个一级索引所对应的查询结果中的二级索引表指针所指示的二级索引表用于记录混合缓存中逻辑地址的高10位上的比特值均为0的所有数据的逻辑地址和每个逻辑地址对应的物理地址。其中,对于该二级索引表,由于该二级索引表是0000000000这个一级索引对应的二级索引表,表明该二级索引表中记录的逻辑地址的前p个比特位上的比特值为0000000000。因此,该二级索引表中记录的混合缓存中的各个数据的逻辑地址可以只记录逻辑地址在剩余22个比特位上的比特值。当然,该二级索引表中记录的混合缓存中的各个数据的逻辑地址也可以记录逻辑地址在全部32个比特位上的比特值,对此不做具体限定。
又比如,对于任一一级索引,假设该一级索引对应的查询结果中的状态信息集合为数据1、数据2、数据3至数据100这100个数据中每个数据的状态信息。那么该一级索引所对应的查询结果中的二级索引表指针指示的二级索引表用于存储这100个数据中每个数据的逻辑地址。
并且,二级索引表中存储的多个数据的逻辑地址的排序和状态信息集合中多个数据的状态信息的排序对应。比如,状态信息集合中的各个数据的状态信息的排序可以和二级索引表中的各个数据的逻辑地址的排序一致。排序一致是指:状态信息的排序结果和逻辑地址的排序结果中,处于同一位置的状态信息和逻辑地址对应同一个数据。比如,上述100个数据的状态信息按照数据1的状态信息、数据2的状态信息、数据3的状态信息、…、数据100的状态信息排序。这100个数据在二级索引表中的逻辑地址也按照数据1的逻辑地址、数据2的逻辑地址、数据3的逻辑地址、…、数据100的逻辑地址这种方式排列。这样可以保证状态信息的排序结果和逻辑地址的排序结果中,处于同一位置的状态信息和逻辑地址对应同一个数据。
其中,将状态信息集合中各个状态信息的排序和二级索引表中各个逻辑地址的排序对应设置,以便于后续根据某个数据的逻辑地址在二级索引表中的位置,可以直接从状态信息集合中获取对应位置的状态信息作为这个数据的状态信息,从而提高状态信息的获取效率。
另外,为了便于管理二级索引表中的地址,二级索引表中的二级索引可以为逻辑地址中q个比特位上的比特值。这q个比特位可以为逻辑地址中除了一级索引的p个比特位之外的其他比特位。比如,可以为逻辑地址中低位到高位排序中前q个比特位。此时,由于q个比特位上的比特值可以组合得到2^q个不同的组合比特值,和一级索引表同样的原因,为了避免后续由于混合缓存中的数据发生变化,导致二级索引表中的项需要不停地删除或者添加,因此,对于一级索引表中的任一一级索引,该一级索引所对应的二级索引表指针所指示的二级索引表包括2^q项信息,每一项信息包括一个二级索引和该二级索引所对应的查询结果。对于二级索引表中的任一二级索引,该二级索引所对应的查询结果为一个逻辑地址集合,该逻辑地址集合中每个逻辑地址对应一个物理地址,且逻辑地址集合包括的逻辑地址为混合缓存中逻辑地址同时满足相应一级索引和相应二级索引的数据的逻辑地址。也即是,逻辑地址集合包括的逻辑地址不仅在q个比特位上的比特值与该二级索引所指示的比特值相同,还在上述p个比特位上的比特位与该二级索引所对应的一级索引所指示的比特值相同。另外,由于不是所有逻辑地址中的数据均存储在混合缓存中,因此,逻辑地址集合中的逻辑地址的个数可以为任一整数,且二级索引表中各个二级索引对应的逻辑地址集合可以不同。
比如,可以将逻辑地址中低10位上的比特位作为二级索引表的二级索引,此时,假设一级索引表中第一项信息包括的一级索引为0000000000,该一级索引所对应的二级索引表包括2^10项信息,每项信息包括一个二级索引和该二级索引所对应的查询结果。假设该二级索引表中第一项信息包括的二级索引为0000000000。此时,该二级索引所对应的查询结果所指示的逻辑地址集合包括混合缓存中逻辑地址同时满足低10位和高10位上的比特值均为0的数据的逻辑地址和每个逻辑地址对应的物理地址。
也即是,在图4所示的索引表中,一级索引表包括2^p项信息,且每项信息均对应一个二级索引表,该二级索引表中包括2^q项信息,每项信息包括一个逻辑地址集合。假设每个逻辑地址集合中包括k个逻辑地址和与k个逻辑地址一一对应的k个物理地址。因此,对于一级索引表中任一项信息指示的二级索引表,该二级索引表中包括(2^q)×k个逻辑地址和每个逻辑地址对应的物理地址。并且,该二级索引表对应的一级索引表中的一项信息中的状态信息集合中包括(2^q)×k的状态信息。其中,k为正整数,上述k仅仅是对逻辑地址集合中包括的逻辑地址的数量的一种举例说明,并不构成对逻辑地址集合中包括的逻辑地址的数量的限定
在***初始化时,可以先配置图4所示的索引表,此时索引表中一级索引表的状态信息集合和二级索引表中的逻辑地址集合此时可以为空值。后续当混合缓存中新增或删除数据时,只需更新索引表中的状态信息集合和逻辑地址集合中的具体元素即可,无需对索引表的结构进行更改。
如图4所示,索引表是直接根据数据的逻辑地址、逻辑地址对应的物理地址和状态信息集合映射而成的,无需通过复杂的哈希计算来构建索引表,提高了构建索引表的效率。另外,由于索引表中的一级索引表和二级索引表均是采用逻辑地址中的部分比特位作为索引的,因此,可以使得相邻的逻辑地址在索引表中的存储位置也相邻。而热数据通常具有空间局部性,也即是,一段逻辑地址区间的数据通常均为热数据,因此,本申请实施例提供的索引表还可以充分利用热数据的空间局部性,以便于后续根据索引表对热数据进行成批处理,进一步提高处理热数据的灵活性。
另外,在本申请实施例中,可以将索引表配置为图4所示的一级索引表和二级索引表。在其他实现方式中,还可以为索引表配置更多级别的索引表,比如,可以在索引表中配置一级索引表、二级索引表和三级索引表,配置方式和上述图4所示的配置方式基本相同。或者,也可以仅仅设置一级索引表,在此就不在一一展开说明。
另外,在图4所示的一级索引表中,每个状态信息可以采用1个比特位来指示对应的数据存储在易失性缓存还是非易失性缓存中。比如,该1个比特位上的值为1时,表明相应数据存储在易失性缓存中。该1个比特位上的值为0时,表明相应数据存储在非易失性缓存中。
在图4所示的索引表中,状态信息是配置在一级索引表中的。具体应用时,也可以将状态信息配置在二级索引表中。此时,在图4所示的索引表中,一级索引表包括2^p项信息,每项信息包括一个一级索引和一级索引对应的查询结果,该一级索引对应的查询结果包括一个二级索引表指针。每个一级索引对应的二级索引表指针均对应一个二级索引表,该二级索引表中包括2^q项信息,每项信息包括一个逻辑地址集合,每个逻辑地址集合中包括逻辑地址、与每个逻辑地址对应的物理地址和每个逻辑地址对应的数据的状态信息。
也即是,在本申请实施例中,索引表中存储的各个逻辑地址对应的数据的状态信息可以如图4所示设置在一级索引表中,当然也可以设置在二级索引表中,在此不做具体限定。
另外,为了进一步提高在索引表中查找数据的效率,图4所示的索引表可以以键值(key-value)的方式存储。以键值的方式存储索引表是指:对于一级索引表或二级索引表,将表中的索引作为键,将每个索引对应的查询结果作为值进行存储。由于键值结构的数据在查询时可以直接在索引表中定位需要查找的数据,而无需遍历整个索引表才能查找到相应数据,因此,通过键值的方式存储索引表可以提高后续查找数据的效率。
步骤302:在索引表中查找该逻辑地址。
基于图4所示的索引表,步骤302的实现方式可以为:在一级索引中查找待访问数据的逻辑地址的前p个比特位对应的比特值组合;根据该比特值组合对应的二级索引表指针,从多个二级索引表中获取一个二级索引表;在该二级索引表中查找待访问数据的逻辑地址。
具体地,可以确定待访问数据的逻辑地址中p个比特位上的比特值,将待访问数据的逻辑地址中p个比特位上的比特值作为一级索引,从一级索引表中查找该一级索引所对应的查询结果。该查询结果包括一个二级索引表指针。根据该二级索引表指针从图4所示的多个二级索引表中获取一个二级索引表。确定待访问数据的逻辑地址中q个比特位上的比特值,将待访问数据的逻辑地址中q个比特位上的比特值作为二级索引。从前述获取的二级索引表中查找该二级索引所对应的查询结果,该查询结果为一个逻辑地址集合。然后遍历该逻辑地址集合,如果在该逻辑地址集合中遍历到待访问数据的逻辑地址,则确定索引表中存储有待访问数据的逻辑地址。
步骤303:当在索引表中查找到待访问数据的逻辑地址时,则从索引表中获取待访问数据的状态信息。
基于步骤302可知,索引表的一级索引表或二级索引表还包括存储的各个逻辑地址对应的数据的状态信息。因此,在通过步骤302在二级索引表中查找到待访问数据的逻辑地址时,便可从索引表包括的各个数据的状态信息中确定待访问数据的状态信息。
在一种可能的实现方式中,如果是索引表的一级索引表还包括存储的各个逻辑地址对应的数据的状态信息,如图4所示,每个一级索引所对应的查询结果还包括一个状态信息集合,该状态信息集合用于存储逻辑地址满足相应一级索引的数据的状态信息,该二级索引表中存储逻辑地址顺序排列。此时,从索引表包括的各个数据的状态信息中确定待访问数据的状态信息的实现方式可以为:根据待访问数据的逻辑地址在获取的二级索引表中的排序,从一级索引对应的查询结果中包括的状态信息集合中确定待访问数据的状态信息。
比如,一级索引表中的状态信息集合中的各个数据的状态信息的排序可以和二级索引表中的各个数据的逻辑地址排序一致。排序一致的解释已在上述图4所示的索引表中进行了解释。此时,如果根据一级索引查找到的二级索引表中包括50项信息,二级索引表中每项信息包括的二级索引所对应的查询结果为一个逻辑地址集合,且每个逻辑地址集合中包括8个逻辑地址,这8个逻辑地址按照顺序排列。假设根据待访问数据的逻辑地址确定的二级索引是这50个项信息中的第26项信息包括的二级索引,且待访问数据的逻辑地址在该二级索引对应的逻辑地址集合中的排序为第4个,则可以将状态信息集合中第204(也即是,(26-1)*8+4)个状态信息作为待访问数据的状态信息。
当然,一级索引表中的状态信息集合中的各个状态信息的排序也可以和二级索引表中的各个键对应的值中的逻辑地址排序恰好相反,此时,同样可以根据该排序相应地从状态信息集合中获取待访问数据的状态信息,在此不再详细阐述。
在另一种可能的实现方式中,如果是索引表的二级索引表还包括存储的各个逻辑地址对应的数据的状态信息。也即是,二级索引表还用于存储每个逻辑地址对应的数据的状态信息。此时,从索引表包括的各个数据的状态信息中确定待访问数据的状态信息的实现方式可以为:在获取的二级索引表中确定待访问数据的状态信息。
另外,基于上述图4所示的内容可知,二级索引表中还存储有的各个逻辑地址对应的物理地址,因此,在通过步骤302在二级索引表中查找到待访问数据的逻辑地址时,便可直接获取该待访问数据的的物理地址。
步骤304:根据待访问数据的状态信息从非易失性缓存或者易失性缓存中读取待访问数据。
基于步骤303可知,在从索引表中获取待访问数据的状态信息时,还获取待访问数据的物理地址。因此,步骤304的实现方式可以为:根据待访问数据的状态信息及待访问数据的物理地址从非易失性缓存或者易失性缓存中读取待访问数据。
具体地,在根据步骤303确定出待访问数据的状态信息后,如果待访问数据的状态信息所指示的存储位置为易失性缓存,则根据待访问数据的物理地址从易失性缓存中访问待访问数据。如果待访问数据的状态信息所指示的存储位置为非易失性缓存,则根据待访问数据的物理地址从非易失性缓存中访问待访问数据。另外,在通过非易失性缓存中访问待访问数据后将待访问数据从非易失性缓存复制至易失性缓存中,以便于后续直接通过易失性缓存访问待访问数据。
步骤305:当在索引表中没有查找到待访问数据的逻辑地址时,从外存中读取待访问数据。
在步骤302中遍历该逻辑地址集合的过程中,由于索引表是针对混合缓存配置的索引表,因此,如果待访问数据存储在混合缓存中,那么在该逻辑地址集合中是可以遍历到待访问数据的逻辑地址的。相应地,如果待访问数据没有存储在混合缓存中,那么在该逻辑地址集合中是无法遍历到待访问数据的逻辑地址的。这种情况下,处理器确定待访问数据存储在外存中,进而便可从外存中读取该待访问数据。在通过外存访问待访问数据后将待访问数据从外存复制至易失性缓存中,以便于后续直接通过易失性缓存访问待访问数据。
本申请实施例提供的混合缓存中包括两种不同类型的缓存介质,并且易失性缓存中用于存储热数据,非易失性缓存中用于存储从热数据中淘汰下来的温数据。基于该场景,需要为混合缓存的易失性缓存中的数据配置热度记录,以便于后续根据热度记录确定易失性缓存中的哪些数据需要淘汰成温数据。其中,热度记录也即是数据的访问频率记录。
因此,本申请实施例还提供了一种热度记录表,如图6所示,热度记录表包括多个热度记录序列,每个热度记录序列采用CNT标记。每个热度记录序列对应一段逻辑地址区间(图未示),该逻辑地址区间可以包括一个逻辑地址,也可以包括多个相邻的逻辑地址,逻辑地址区间中的逻辑地址为易失性缓存中存储的热数据的逻辑地址。由于易失性缓存中的数据是动态变化的,因此,在本申请实施例中,如果检测到易失性缓存中新增或删除数据,则确定该新增或删除的数据的逻辑地址,并在图6所示的热度记录表中将该新增或删除数据的逻辑地址对应的热度记录序列进行更新,以保证热度记录表用于指示当前时间易失性缓存中的存储的所有的数据的访问热度。为了方便描述,图6只示出了热度记录序列,没有示出每个热度记录序列对应的逻辑地址空间。
如图6所示,每个热度记录序列包括多个比特位,在每次访问该热度记录序列对应的逻辑地址区间中的逻辑地址的数据时,更新这多个比特位上一个比特位的比特值,以实现该热度记录序列能够指示逻辑地址在对应的逻辑地址区间中的数据在最近一段时间内的访问情况。详细的更新方式将在下述实施例中说明,在此先不展开阐述。
因此,在步骤303中,访问待访问数据之后,还需通过下述步骤对热度记录表进行更新。
图5是本申请实施例提供的一种热度记录方法流程图,应用于图1所示的电子设备的处理器中。如图5所示,该方法包括如下步骤:
步骤501:根据待访问数据的逻辑地址,从热度记录表中获取与待访问数据的逻辑地址对应的热度记录序列。
由于热度记录表中的每个热度记录序列对应一段逻辑地址区间,因此,可以直接根据待访问数据的逻辑地址,从热度记录表中获取与待访问数据的逻辑地址对应的热度记录序列。
步骤502:更新所获取的热度记录序列所记录的热度。
在本申请实施例中,可以为每个比特位配置一个更新周期。如此,在某个更新周期内只需更新该更新周期对应的比特位即可,以便于后续快速根据各个更新周期对应的比特位确定数据在最近一段时间内的访问热度。
此时,步骤502的实现方式可以为:获取当前时间对应的更新周期,将当前时间对应的更新周期对应的比特位更新为表示热度记录序列对应的逻辑地址对应的数据被访问过的标识。表示热度记录序列对应的逻辑地址对应的数据被访问过的标识可以为第一比特值。比如,第一比特值可以为1,用于指示待访问数据当前被访问过。
在本申请实施例中,为了通过热度记录序列指示对应的逻辑地址区间中的逻辑地址对应的数据在最近一段时间内的访问情况,可以为热度记录表配置一个时钟和指针。在计算机设备初始化之后,该时钟按照设置的时长周期性地计时,这个热度记录序列包括的多个比特位按照指定顺序周期性地排列,并在初始化时将指针指向多个比特位中的一个比特位。每次当该时钟的计时达到一个周期时,将该指针按照多个比特位的排序指向下一个比特位。此时,步骤502中当前时间对应的更新周期对应的比特位即为当前时间该指针所指向的比特位。其中,当前时间对应的更新周期对应的比特位也可以称为当前时间待更新比特位。通过这种方式的配置,可以使得排序中位于当前时间待更新比特位之前的比特位中,距离当前时间待更新比特位越近的比特位上的比特值用于指示距离当前时间较近的时间段内数据被访问的情况,距离当前时间待更新比特位越远的比特位上的比特值用于指示距离当前时间较远的时间段内数据被访问的情况。
如图6所示,每个热度记录序列标记为CNT,每个CNT包括8个比特位。这8个比特位分别标记为比特位A、比特位B、比特位C、比特位D、比特位E、比特位F、比特位G、比特位H。假设配置的时钟的计时时长为1小时,这8个比特位按照A、B、C、D、E、F、G、H、A、B、C、D、E、F、G、H、…A、B、C、D、E、F、G、H的顺序周期性地排列。在***初始化时,指针指向比特位A。当时钟的计时时长达到1小时时,指针从比特位A切换指向比特位B,且时钟重新开始计时。当时钟的计时时长再次达到1小时时,指针从比特位B切换指向比特位C,且时钟重新开始计时。依次类推,假设在某次时钟的计时时长达到1小时时,指针从比特位G切换指向比特位H,且时钟重新开始计时。那么在下次时钟的计时时长达到1小时时,指针从比特位H切换指向比特位A,且时钟重新开始计时。时钟和指针重复上述过程。
如图6所示,指针当前时间指向的比特位为比特位A,则确定比特位A为当前时间对应的更新周期对应的比特位,将比特位A上的比特值更新为1,用于指示待访问数据在当前时间被访问过。
另外,对于图6中的热度记录序列,为了便于记录各个比特位上的比特值的更新时间与当前时间之间的远近,预先配置与多个比特位个数相同的时间权重,该时间权重可以指示距离当前时间的远近,其中时间权重越大距离当前时间越近,时间权重越小距离当前时间越远。在每次指针切换指向一个比特位时,确定多个比特位基于指定顺序排列成一个封闭的环中位于指针指向的比特位的下一个比特位,以下一个比特位为起点,按照该指定顺序对这多个比特位进行排序,将预先配置的多个时间权重分配给排序后的多个比特位,排序后的各个比特位的时间权重依次降低。如此,每当时钟的计时时长到达,指针切换指向的比特位时,便更新各个比特位上的时间权重,以使指针指向的比特位在任何时间的时间权重均最大,且指针下一次即将指向的比特位的时间权重最小。
比如,预先配置了8个时间权重,分别标记为L0、L1、L2、L3、H0、H1、H2与H3。这8个时间权重依次增大。图6中的8个比特位分别标记为A、B、C、D、E、F、G、H。且这8个比特位按照A、B、C、D、E、F、G、H的顺序排列成一个封闭的环。如果当前时间指针指向比特位C,则按照下述表1中的分配方式将各个时间权重分配给各个比特位。
表1
比特位A | 比特位B | 比特位C | 比特位D | 比特位E | 比特位F | 比特位G | 比特位H |
H1 | H2 | H3 | L0 | L1 | L2 | L3 | H0 |
又比如,如果当前时间指针指向比特位D,则按照下述表2中的分配方式将各个时间权重分配给各个比特位。
表2
比特位A | 比特位B | 比特位C | 比特位D | 比特位E | 比特位F | 比特位G | 比特位H |
H0 | H1 | H2 | H3 | L0 | L1 | L2 | L3 |
又比如,如图6所示,当前时间指针指向比特位A,则按照下述表3中的分配方式将各个时间权重分配给各个比特位。
表3
比特位A | 比特位B | 比特位C | 比特位D | 比特位E | 比特位F | 比特位G | 比特位H |
H3 | H2 | H1 | H0 | L3 | L2 | L1 | L0 |
在图6所示的热度记录序列中,指针是按这8个比特位按照指定顺序周期性排列后指向其中一个比特位,因此,在指针指向某个比特位的时间内,该比特位上的比特值可能在上一个循环周期内已经被更新过,此时,将导致这些数据对应的热度记录序列无法表征数据在最近一段时间内的访问情况。因此,在本申请实施例中,还需对热度记录表中的热度记录序列进行热度衰减。
图7是本申请实施例提供的一种热度衰减方法流程图,应用于图1所示的电子设备的处理器中。图7所示,该方法包括如下步骤:
步骤701:检测热度衰减指令。
处理器可以在以下两种场景中检测到热度衰减指令。
第一种场景:计算机设备在***初始化时配置有热度记录表更新时间点。因此,当当前时间到达热度记录表更新时间点,此时计算机设备将自动触发热度衰减指令。比如,在计算机设备的***初始化时,可以配置每隔1天更新热度记录表,假设计算机设备的***初始化时间点为0:00,那么热度记录表更新时间点为每天的0:00。
第二种场景:当高热度记录序列在所有热度记录序列中所占的比例大于参考比例时,此时,可以触发热度衰减指令。高热度记录序列指高位比特位均为表示热度记录序列对应的逻辑地址对应的数据被访问过的标识的热度记录序列。其中,高位比特位是指多个比特位中更新周期在当前时间之前参考时长内的比特位,也即是,高位比特位是指当前时间之前最近一段内更新的比特位。由于各个比特位可以根据时间权重来确定更新比特位上的比特值的时间距离当前时间的远近,因此,高位比特位可以指热度记录序列的多个比特位中时间权重从高到低的n个比特位,n为大于或等于1的正整数。
假设在当前时间各个比特位上的时间权重如表2所示,则高位比特位可以是比特位D,也可以是比特位B和比特位D等等。如果高位比特位是比特位D,则高热度记录序列为比特位D为1的热度记录序列,如果参考比例是90%,则高热度记录序列在所有热度记录序列中所占的比例大于90%,则触发热度衰减指令。
上述两种场景可以单独使用,可以结合使用,本申请实施例对此不做具体限定。
步骤702:获取每个热度记录序列多个比特位中位于当前时间对应的更新周期之后的下一个更新周期对应的比特位。
如表2所示,只要确定当前时间指针指向的比特位,便可确定多个比特位上每个比特位的时间权重,此时,时间权重最小的比特位便为下一个更新周期对应的比特位。如图6所示,在热度衰减前,下一个更新周期对应的比特位为比特位H。
步骤703:将每个热度记录序列中下一个更新周期对应的比特位更新为表示热度记录序列对应的逻辑地址对应的数据未被访问过的标识。
在步骤702中,则可以将所有热度记录序列中时间权重为L0上的比特值更新为第二比特值,本实施例中,该第二比特值为零。为了后续便于说明,将步骤703称为重置操作。如图6所示,可以将所有热度记录序列中比特位H上的比特值重置为0。
步骤704:将每个热度记录序列中下一个更新周期对应的比特位确定为当前时间对应的更新周期对应的比特位。
在步骤703中,可以将指针直接指向下一个更新周期对应的比特位即可实现将每个热度记录序列中下一个更新周期对应的比特位确定为当前时间对应的更新周期对应的比特位。由于计算机设备在每次指针切换指向的比特位时,均会为各个比特位重新分配时间权重,因此,在步骤703中,在将每个热度记录序列中下一个更新周期对应的比特位确定为当前时间对应的更新周期对应的比特位之后,各个比特位的时间权重相当于进行了顺序转移。为了后续便于说明,将步骤704称为权重转移操作。
比如,假设执行步骤703之前,各个比特位上的时间权重如表1所示,那么在执行步骤703之后,各个比特位上的时间权重便更新为表2所示的情况。
表4
比特位A | 比特位B | 比特位C | 比特位D | 比特位E | 比特位F | 比特位G | 比特位H |
H2 | H1 | H0 | L3 | L2 | L1 | L0 | H3 |
又比如,如图6所示,在热度衰减之前,各个比特位上的时间权重如上述表3所示,在热度衰减之后,各个比特位上的时间权重如下述表4所示。
另外,在本申请实施例中,不同的热度记录序列中同一时间权重对应的比特位存储在一段连续的地址空间中。如图6所示,时间权重L0对应的所有热度记录序列的比特位存储在一段连续的地址空间中,时间权重L1对应的所有热度记录序列的比特位存储在一段连续的地址空间中等。因此,处理器在执行步骤703时,由于所有热度记录序列中下一次待更新的比特位存储在一段连续的地址空间中,此时,只需要对这段连续的地址空间中的比特位的比特值统一重置为0即可。处理器在执行步骤704时,也是针对各段连续的地址空间重新分配时间权重即可,相当于只执行一次重置操作和一次权重转移操作,无需针对每个热度记录序列分别执行上述步骤703和步骤704,提高了执行热度衰减的效率。
另外,由于后续需要根据该热度记录表中的热度记录序列对易失性缓存中的热数据进行淘汰,因此,在本申请实施例中,热度记录表中的热度记录序列仅仅针对易失性缓存中的热数据进行配置。由于易失性缓存中的数据是动态变化的,因此,在本申请实施例中,如果检测到易失性缓存中新增数据,则确定该新增数据的逻辑地址,并在图6所示的热度记录表中将该新增数据的逻辑地址对应的热度记录序列进行重置,比如,将全部比特位中指针当前时间指向的比特位上的比特值重置为1,其他比特位上的比特值重置为0。或者如果检测到易失性缓存删除数据时,则确定该新增数据的逻辑地址,并在图6所示的热度记录表中将该删除数据的逻辑地址对应的热度记录序列进行重置,比如,将全部比特位上的比特值重置为0。通过以上对热度记录表的维护,以使热度记录表中包括的各个热度记录序列一直保持为针对易失性缓存中数据的热度记录序列。
通过图5和图7所示的实施例,针对混合缓存的易失性缓存中的数据可以通过热度记录序列来记录该数据最近时间内被访问的情况,因此,本申请可以根据该热度记录序列对易失该数据进行淘汰,以实现将热数据淘汰成温数据。
图8是本申请实施例提供的一种热数据淘汰方法流程图,应用于图1所示的电子设备的处理器中。图8所示的热数据淘汰方法也即是图2中的热点识别淘汰算法。如图8所示,该方法包括如下步骤:
步骤801:根据热度记录表确定易失性缓存中所存储的数据的热度值。
本发明实施例中,计算易失性缓存中所存储数据的热度值的方法为:根据每个热度记录序列包括的多个比特位上的比特值,确定每个热度记录序列对应的逻辑地址区间对应的数据的热度值。
基于图5和图7所示的实施例可知,在任一时间,根据当前时间指针指向的比特位,便可确定热度记录序列包括的各个比特位中每个比特位的时间权重。因此,确定每个热度记录序列对应的逻辑地址区间对应的数据的热度值的实现方式可以为:根据每个热度记录序列包括的多个比特位的时间权重,将每个热度记录序列包括的多个比特位上的比特值进行加权求和,得到的求和值即可作为每个热度记录序列对应的逻辑地址区间对应的数据热度值。这种确定热度值的方式可以使得确定的热度值能够指示该数据在当前时间最近一段时间内被访问的情况。具体地,热度值越大,表明该数据最近被访问的频率较高,热度值越小,表明该数据最近被访问的频率较低。
比如,热度记录序列包括的各个比特位的时间权重为上述表2所示的时间权重。此时,对于任一热度记录序列,该热度记录序列对应的逻辑地址区间对应的数据的热度值可以为:比特位A上的比特值×H0+比特位B上的比特值×H1+比特位C上的比特值×H2+比特位D上的比特值×H3+比特位E上的比特值×L0+比特位F上的比特值×L1+比特位G上的比特值×L2+比特位H上的比特值×L3。
另外,在本申请实施例中,可以在以下两种场景来执行图8实施例提供的热数据淘汰方法。
第一种场景为检测到易失性缓存的剩余存储容量低于阈值。在第一种场景中,处理器可以根据易失性缓存的剩余存储容量及时进行热数据淘汰,避免出现易失性缓存中存储过满的情况。
第二种场景为检测到淘汰热数据指令。淘汰热数据指令可以由后台管理人员触发,在第二种场景中,处理器可以根据用户的需求来进行热数据淘汰,提高了热数据淘汰的灵活性。
上述两种场景可以单独使用,可以结合使用,本申请实施例对此不做具体限定。
步骤802:如果该数据的热度值小于热度阈值,则将该数据淘汰至非易失性缓存中。
相应地,如果数据的热度值大于或等于热度阈值,则保留在易失性缓存中。如果数据的的热度值大于或等于热度阈值,表明该数据最近一段时间内被访问的频率较高,此时则无需将该数据淘汰至非易失性缓存中,也即是,保留该数据在易失性缓存中。
如果数据的热度值小于热度阈值,表明该数据最近一段时间内被访问的频率较低,此时,在一种可能的实现方式中,可以直接将该数据淘汰至非易失性缓存中。在另一种可能的实现方式中,也可以通过下述步骤803至步骤806对该数据进行淘汰,提高了淘汰热数据的灵活性。也即是,图8中的步骤802和步骤803至步骤806是两种并列的实现方式。
步骤803:如果数据的热度值小于热度阈值,则确定与该数据的逻辑地址相邻的逻辑地址对应的数据的热度值。
在本申请实施例中,为了提高由于偶然原因出现淘汰数据出现错误,如果数据的热度值小于热度阈值,并不急于将该数据淘汰至非易失性缓存,而是结合与其逻辑地址相邻的数据的热度值,综合判断是否需要将该数据淘汰至非易失性缓存,提高了淘汰热数据的灵活性。
因此,如果数据的热度值小于热度阈值,则确定与该数据的逻辑地址相邻的逻辑地址对应的数据的热度值,以通过下述步骤804至806判断是否需要进行热数据淘汰。其中,确定该数据的逻辑地址相邻的逻辑地址对应的数据的热度值,同样可以根据相邻的逻辑地址对应的数据热度记录序列来确定相邻的逻辑地址对应的数据的热度值,在此不再赘述。
步骤804:确定该数据和与该数据的逻辑地址相邻的逻辑地址对应的数据的平均热度值。
步骤805:如果平均热度值大于或等于热度阈值,则保留该数据在易失性缓存中。
如果平均热度值大于或等于热度阈值,表明与该数据的逻辑地址相邻的逻辑地址上的数据大部分都是最近被频繁访问的数据,根据热数据的空间局部性,可知该数据很有可能最近会被频繁访问。此时如果直接将该数据淘汰至非易失性缓存,在淘汰后很容易出现立马要访问该数据的情况,从而造成不必要的淘汰。因此,在本申请实施例中,可以将该数据继续保留在易失性缓存中。相当于给该数据第二次机会。
步骤806:如果平均热度值小于热度阈值,则将该数据淘汰至非易失性缓存中。
如果平均热度值小于热度阈值,表明与该数据的逻辑地址相邻的逻辑地址上的数据大部分最近也没有被频繁地访问,此时,可以将该数据淘汰至非易失性缓存中。
上述淘汰热数据过程中的热度阈值可以是后台管理人员配置,此时在配置热度阈值之后,后续便可根据该固定的热度阈值来淘汰数据。另外,为了使得热度阈值能够反映混合缓存中的当前数据访问情况,处理器可以定期动态调整热度阈值,以便于后续根据调整之后的热度阈值进行热数据淘汰。
在一种可能的实现方式中,处理器定期动态调整热度阈值具体可以为:如果当前时间到达热度阈值更新时间点,则从热度记录表中随机选择m个热度记录序列,m为大于或等于1的正整数。根据m个热度记录序列中每个热度记录序列的热度值和易失性缓存中的期望存储数据比例,确定热度阈值。期望存储数据比例是指在易失性缓存中期望存储的数据的大小与在混合缓存中期望存储的数据的大小之间的比例。
比如,当混合缓存中存储容量为1太字节(terabyte,TB),而用作热数据缓存的DRAM空间仅有100千兆字节(gigabyte,GB),因此易失性缓存中的期望存储数据比例为10%,则可以根据10%和m个热度记录序列中每个热度记录序列的热度值,确定一个热度阈值,以使只有那些热度值大于了其他热度值90%的热度记录序列对应的数据才能够被留在DRAM中。
其中,随机选择的热度记录序列的个数也是根据当前混合缓存中的数据访问情况确定的。在一种可能的实现方式中,在每次调整热度阈值之前,可以确定易失性缓存的访问命中率,访问命中率用于指示访问的数据为易失性缓存中的数据的比例;根据易失性缓存的访问命中率,确定m。示例地,易失性缓存的访问命中率越高,表明调整之前的热度阈值已经比较准确,此时m可以较小。如果易失性缓存的访问命中率较低,表明调整之前的热度阈值不是很准确,此时m可以较大,以使调整之后的热度阈值能够准确。其中,热度阈值的准确是指按照该热度阈值淘汰数据之后,处理器每次访问的数据基本在易失性缓存中。
另外,定期动态调整热度阈值的周期也可以根据当前混合缓存中的数据访问情况确定。在一种可能的实现方式中,可以根据易失性缓存的访问命中率,确定热度阈值更新时间点。示例地,易失性缓存的访问命中率较高时,表明调整之前的热度阈值已经比较准确,此时,热度阈值更新时间点的周期设置较长,也即是没有必要频繁更新热度阈值。易失性缓存的访问命中率较低时,表明调整之前的热度阈值不是很准确,此时,热度阈值更新时间点的周期设置较短,也即是需要频繁更新热度阈值,以使调整之后的热度阈值较为准确。
参见图9,本申请实施例提供了一种访问电子设备中的混合缓存的装置,如图9所示,该装置900包括:
接收模块901,用于执行图3实施例中的步骤301;
查找模块902,用于执行图3实施例中的步骤302;
第一获取模块903,用于执行图3实施例中的步骤303;
读取模块904,用于执行图3实施例中的步骤304。
可选地,索引表中的每个逻辑地址对应有存储每个逻辑地址对应的数据的物理地址;
第一获取模块在从索引表中获取待访问数据的状态信息时,还用于获取待访问数据的物理地址;读取模块,具体用于:根据待访问数据的状态信息及待访问数据的物理地址从非易失性缓存或者易失性缓存中读取待访问数据。
可选地,索引表包括一级索引表和多个二级索引表,一级索引表中的一级索引为逻辑地址中从高位到低位的排序中的前p个比特位上的比特值进行组合得到的2^p个比特值组合,p为正整数,每个比特值组合对应一个二级索引表指针,二级索引表指针用于指示多个二级索引表中的一个二级索引表,二级索引表用于存储逻辑地址和每个逻辑地址对应的物理地址,存储的逻辑地址为存储在混合缓存中的数据逻辑地址,且所存储的逻辑地址的前p个比特位与一级索引表中的二级索引表指针所对应的比特值组合中的比特值相同;
查找模块,具体用于:在一级索引中查找待访问数据的逻辑地址的前p个比特位对应的比特值组合;根据比特值组合对应的二级索引表指针,从多个二级索引表中获取一个二级索引表;在二级索引表中查找待访问数据的逻辑地址。
可选地,索引表的一级索引表还包括存储的各个逻辑地址对应的数据的状态信息,具体为:每个一级索引所对应的查询结果还包括一个状态信息集合,状态信息集合用于存储逻辑地址满足相应一级索引的数据的状态信息,二级索引表中存储逻辑地址顺序排列;第一获取模块,具体用于:根据待访问数据的逻辑地址在获取的二级索引表中的排序,从一级索引对应的查询结果中包括的状态信息集合中确定待访问数据的状态信息。
可选地,索引表的二级索引表还包括存储的各个逻辑地址对应的数据的状态信息具体为:二级索引表还用于存储每个逻辑地址对应的数据的状态信息;第一获取模块,具体用于:在获取的二级索引表中确定待访问数据的状态信息。
可选地,二级索引表中的二级索引为逻辑地址中除p个比特位之外的其他q个比特位上的比特值,q为正整数,二级索引表中的每个二级索引对应的查询结构中包括一个逻辑地址集合,逻辑地址集合中的每个逻辑地址对应一个物理地址,且逻辑地址集合包括的逻辑地址为混合缓存中逻辑地址同时满足相应一级索引和相应二级索引的数据的逻辑地址。
可选地,如图10所示,该装置900还包括:
第二获取模块905,用于执行图5实施例中的步骤501;
第一更新模块906,用于执行图5实施例中的步骤502。
可选地,每个热度记录序列包括多个比特位,每个比特位对应一个更新周期;第一更新模块,具体用于:获取当前时间对应的更新周期,将当前时间对应的更新周期对应的比特位更新为表示热度记录序列对应的逻辑地址对应的数据被访问过的标识。
可选地,如图11所示,该装置900还包括:
检测模块907,用于执行图7实施例中的步骤701;
第三获取模块908,用于执行图7实施例中的步骤702;
第二更新模块909,用于执行图7实施例中的步骤703;
第三更新模块910,用于执行图7实施例中的步骤704。
可选地,多个比特位按照指定顺序周期性地排列;
热度记录表配置有时钟和指针,时钟在***初始化之后按照设置的时长周期性地计时,指针在***初始化时指向多个比特位中的一个比特位,在每次时钟的计时时长达到设置的时长时,触发指针按照排序切换指向下一个比特位;
当前时间对应的更新周期对应的比特位为当前时间指针指向的比特位。
可选地,检测模块907,具体用于:
当当前时间到达热度记录表更新时间点时,则触发热度衰减指令,热度记录表更新时间点为***初始化时配置的;和/或,
当高热度记录序列在所有热度记录序列中所占的比例大于参考比例时,则触发热度衰减指令,高热度记录序列指高位比特位上的比特值均为表示热度记录序列对应的逻辑地址对应的数据被访问过的标识的热度记录序列,高位比特位是指多个比特位中更新周期在当前时间之前参考时长内的比特位。
可选地,如图12所示,该装置900还包括:
第一确定模块911,用于执行图8实施例中步骤801;
淘汰模块912,用于执行图8实施例中步骤802。
可选地,第一确定模块911还用于执行图8实施例中的步骤803和步骤804;
该装置还包括保留模块,用于执行图8实施例中的步骤805。
可选地,淘汰模块912,还用于执行图8实施例中的步骤806。
可选地,第一确定模块,还用于:
当检测到易失性缓存的剩余存储容量低于空闲容量阈值时,和/或,当检测到淘汰热数据指令时,执行根据热度记录表确定易失性缓存中所存储的数据的热度值的步骤。
可选地,多个比特位中每个比特位配置有一个时间权重,每个比特位的时间权重用于指示相应比特位上的比特值的更新时间距离当前时间的远近,多个比特位中当前时间待更新比特位的时间权重最大;
第一确定模块,具体用于:
获取热度记录表中每个热度记录序列包括的多个比特位的时间权重;
根据每个热度记录序列包括的多个比特位的时间权重,将每个热度记录序列包括的多个比特位上的比特值进行加权求和,得到的求和值作为每个热度记录序列对应的逻辑地址区间对应的数据的热度值。
可选地,该装置还包括:
选择模块,用于如果当前时间到达热度阈值更新时间点,则从热度记录表中随机选择m个热度记录序列,m为大于或等于1的正整数,热度阈值更新时间点为***初始化时配置的;
第二确定模块,用于根据m个热度记录序列中每个热度记录序列的热度值和易失性缓存中的期望存储数据比例,确定热度阈值,期望存储数据比例是指在易失性缓存中期望存储的数据的大小与在混合缓存中期望存储的数据的大小之间的比例。
可选地,该装置还包括:
第三确定模块,用于确定易失性缓存的访问命中率,访问命中率用于指示访问的数据为易失性缓存中的数据的比例;
第四确定模块,用于根据易失性缓存的访问命中率,确定m。
可选地,该装置还包括:
第五确定模块,用于根据易失性缓存的访问命中率,确定热度阈值更新时间点。
当缓存采用两级混合缓存时,在本申请实施例中,可以为混合缓存设置一个索引表,索引表中记录了混合缓存中所存储的数据的逻辑地址和逻辑地址对应的物理地址,并指示每个逻辑地址对应的数据是存储在DRAM中还是PCM中,这样在混合缓存中读取数据时,不管该数据存储在混合缓存的DRAM中还是PCM中,均仅需查找一次索引表即可,从而提高了访问混合缓存中的数据的效率。
需要说明的是:上述实施例提供的访问混合缓存中的数据的装置在访问混合缓存中的数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的访问混合缓存中的数据的装置与访问混合缓存中的数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid State Disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (17)
1.一种访问电子设备中的混合缓存的方法,其特征在于,所述方法应用于电子设备,所述混合缓存包括易失性缓存及非易失性缓存,所述方法包括:
接收针对待访问数据的读指令,所述读指令中携带所述待访问数据的逻辑地址;
在索引表中查找所述逻辑地址,所述索引表中存储有所述混合缓存中所存储数据的逻辑地址对应的状态信息,所述状态信息用于指示所述混合缓存中所存储数据是存储在所述易失性缓存中还是所述非易失性缓存中;
当在所述索引表中查找到所述待访问数据的逻辑地址时,则从所述索引表中获取所述待访问数据的状态信息;
根据所述待访问数据的状态信息从所述非易失性缓存或者所述易失性缓存中读取所述待访问数据。
2.如权利要求1所述的方法,其特征在于,所述索引表中的每个逻辑地址对应有存储每个逻辑地址对应的数据的物理地址;
所述方法还包括:
在从所述索引表中获取所述待访问数据的状态信息时,还获取所述待访问数据的物理地址;
所述根据所述待访问数据的状态信息从所述非易失性缓存或者所述易失性缓存中读取所述待访问数据,包括:
根据所述待访问数据的状态信息及所述待访问数据的物理地址从所述非易失性缓存或者所述易失性缓存中读取所述待访问数据。
3.如权利要求2所述的方法,其特征在于,所述索引表包括一级索引表和多个二级索引表,所述一级索引表中的一级索引为逻辑地址中从高位到低位的排序中的前p个比特位上的比特值进行组合得到的2^p个比特值组合,所述p为正整数,每个比特值组合对应一个二级索引表指针,所述二级索引表指针用于指示多个二级索引表中的一个二级索引表,所述二级索引表用于存储逻辑地址和每个逻辑地址对应的物理地址,存储的逻辑地址为存储在所述混合缓存中的数据逻辑地址,且所存储的逻辑地址的前p个比特位与所述一级索引表中的所述二级索引表指针所对应的比特值组合中的比特值相同;
所述在索引表中查找所述逻辑地址,包括:
在所述一级索引中查找所述待访问数据的逻辑地址的前p个比特位对应的比特值组合;
根据所述比特值组合对应的二级索引表指针,从所述多个二级索引表中获取一个二级索引表;
在所述二级索引表中查找所述待访问数据的逻辑地址。
4.如权利要求1至3任一所述的方法,其特征在于,在所述读取所述待访问数据之后,所述方法还包括:
根据所述待访问数据的逻辑地址,从热度记录表中获取与所述待访问数据的逻辑地址对应的热度记录序列,所述热度记录表包括多个热度记录序列,每个热度记录序列对应一段逻辑地址区间,所述待访问数据的逻辑地址落在所述逻辑地址区间内,每个热度记录序列用于记录对应逻辑地址区间对应的数据的热度;
更新所获取的热度记录序列所记录的热度。
5.如权利要求4所述的方法,其特征在于,每个热度记录序列包括多个比特位,每个比特位对应一个更新周期;
所述更新所获取的热度记录序列所记录的热度,包括:
获取当前时间对应的更新周期,将当前时间对应的更新周期对应的比特位更新为表示所述热度记录序列对应的逻辑地址对应的数据被访问过的标识。
6.如权利要求4所述的方法,其特征在于,所述方法还包括:
检测热度衰减指令;
获取每个热度记录序列多个比特位中位于当前时间对应的更新周期之后的下一个更新周期对应的比特位;
将每个热度记录序列中所述下一个更新周期对应的比特位更新为表示热度记录序列对应的逻辑地址对应的数据未被访问过的标识;
将每个热度记录序列中所述下一个更新周期对应的比特位确定为当前时间对应的更新周期对应的比特位。
7.如权利要求5或6所述的方法,其特征在于,所述多个比特位按照指定顺序周期性地排列;
所述热度记录表配置有时钟和指针,所述时钟在***初始化之后按照设置的时长周期性地计时,所述指针在***初始化时指向所述多个比特位中的一个比特位,在每次所述时钟的计时时长达到所述设置的时长时,触发所述指针按照排序切换指向下一个比特位;
所述当前时间对应的更新周期对应的比特位为当前时间所述指针指向的比特位。
8.如权利要求4所述的方法,其特征在于,所述方法还包括:
根据所述热度记录表确定易失性缓存中所存储的数据的热度值;
如果所述数据的热度值小于热度阈值,则将所述数据淘汰至所述非易失性缓存中。
9.一种访问电子设备中的混合缓存的装置,其特征在于,所述混合缓存包括易失性缓存及非易失性缓存,所述装置包括:
接收模块,用于接收针对待访问数据的读指令,所述读指令中携带所述待访问数据的逻辑地址;
查找模块,用于在索引表中查找所述逻辑地址,所述索引表中存储有所述混合缓存中所存储数据的逻辑地址对应的状态信息,所述状态信息用于指示所述混合缓存中所存储数据是存储在所述易失性缓存中还是所述非易失性缓存中;
第一获取模块,用于当在所述索引表中查找到所述待访问数据的逻辑地址时,则从所述索引表中获取所述待访问数据的状态信息;
读取模块,用于根据所述待访问数据的状态信息从所述非易失性缓存或者所述易失性缓存中读取所述待访问数据。
10.如权利要求9所述的装置,其特征在于,所述索引表中的每个逻辑地址对应有存储每个逻辑地址对应的数据的物理地址;
所述第一获取模块在从所述索引表中获取所述待访问数据的状态信息时,还用于获取所述待访问数据的物理地址;
所述读取模块,具体用于:根据所述待访问数据的状态信息及所述待访问数据的物理地址从所述非易失性缓存或者所述易失性缓存中读取所述待访问数据。
11.如权利要求10所述的装置,其特征在于,所述索引表包括一级索引表和多个二级索引表,所述一级索引表中的一级索引为逻辑地址中从高位到低位的排序中的前p个比特位上的比特值进行组合得到的2^p个比特值组合,所述p为正整数,每个比特值组合对应一个二级索引表指针,所述二级索引表指针用于指示多个二级索引表中的一个二级索引表,所述二级索引表用于存储逻辑地址和每个逻辑地址对应的物理地址,存储的逻辑地址为存储在所述混合缓存中的数据逻辑地址,且所存储的逻辑地址的前p个比特位与所述一级索引表中的所述二级索引表指针所对应的比特值组合中的比特值相同;
所述查找模块,具体用于:
在所述一级索引中查找所述待访问数据的逻辑地址的前p个比特位对应的比特值组合;
根据所述比特值组合对应的二级索引表指针,从所述多个二级索引表中获取一个二级索引表;
在所述二级索引表中查找所述待访问数据的逻辑地址。
12.如权利要求9至11任一所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于根据所述待访问数据的逻辑地址,从热度记录表中获取与所述待访问数据的逻辑地址对应的热度记录序列,所述热度记录表包括多个热度记录序列,每个热度记录序列对应一段逻辑地址区间,所述待访问数据的逻辑地址落在所述逻辑地址区间内,每个热度记录序列用于记录对应逻辑地址区间对应的数据的热度;
第一更新模块,用于更新所获取的热度记录序列所记录的热度。
13.如权利要求12所述的装置,其特征在于,每个热度记录序列包括多个比特位,每个比特位对应一个更新周期;
所述第一更新模块,具体用于:获取当前时间对应的更新周期,将当前时间对应的更新周期对应的比特位更新为表示所述热度记录序列对应的逻辑地址对应的数据被访问过的标识。
14.如权利要求12所述的装置,其特征在于,所述装置还包括:
检测模块,用于检测热度衰减指令;
第三获取模块,用于获取每个热度记录序列多个比特位中位于当前时间对应的更新周期之后的下一个更新周期对应的比特位;
第二更新模块,用于将每个热度记录序列中所述下一个更新周期对应的比特位更新为表示热度记录序列对应的逻辑地址对应的数据未被访问过的标识;
第三更新模块,用于将每个热度记录序列中所述下一个更新周期对应的比特位确定为当前时间对应的更新周期对应的比特位。
15.如权利要求13或14所述的装置,其特征在于,所述多个比特位按照指定顺序周期性地排列;
所述热度记录表配置有时钟和指针,所述时钟在***初始化之后按照设置的时长周期性地计时,所述指针在***初始化时指向所述多个比特位中的一个比特位,在每次所述时钟的计时时长达到所述设置的时长时,触发所述指针按照排序切换指向下一个比特位;
所述当前时间对应的更新周期对应的比特位为当前时间所述指针指向的比特位。
16.如权利要求12所述的装置,其特征在于,所述装置还包括:
第一确定模块,用于根据所述热度记录表确定易失性缓存中所存储的数据的热度值;
淘汰模块,用于如果所述数据的热度值小于热度阈值,则将所述数据淘汰至所述非易失性缓存中。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行权利要求1-8任一项所述的访问电子设备中的混合缓存的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910631237.2A CN110502452B (zh) | 2019-07-12 | 2019-07-12 | 访问电子设备中的混合缓存的方法及装置 |
PCT/CN2020/097519 WO2021008311A1 (zh) | 2019-07-12 | 2020-06-22 | 访问电子设备中的混合缓存的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910631237.2A CN110502452B (zh) | 2019-07-12 | 2019-07-12 | 访问电子设备中的混合缓存的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110502452A CN110502452A (zh) | 2019-11-26 |
CN110502452B true CN110502452B (zh) | 2022-03-29 |
Family
ID=68585864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910631237.2A Active CN110502452B (zh) | 2019-07-12 | 2019-07-12 | 访问电子设备中的混合缓存的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110502452B (zh) |
WO (1) | WO2021008311A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502452B (zh) * | 2019-07-12 | 2022-03-29 | 华为技术有限公司 | 访问电子设备中的混合缓存的方法及装置 |
CN112242976B (zh) * | 2019-07-17 | 2022-02-25 | 华为技术有限公司 | 一种身份认证方法及装置 |
CN112948171A (zh) * | 2019-12-11 | 2021-06-11 | 华为技术有限公司 | 数据处理方法、装置、终端设备及计算机可读存储介质 |
CN111443867B (zh) * | 2020-03-24 | 2021-08-03 | 腾讯科技(深圳)有限公司 | 一种数据存储方法、装置、设备及存储介质 |
CN112559564B (zh) * | 2020-11-19 | 2022-08-12 | 山东云海国创云计算装备产业创新中心有限公司 | 一种应用层状态信息的存取方法、装置和介质 |
CN116368473A (zh) * | 2020-12-24 | 2023-06-30 | 阿里巴巴集团控股有限公司 | 兼具存储处理和属性数据管理的混合存储器管理***和方法 |
CN113064930B (zh) * | 2020-12-29 | 2023-04-28 | ***通信集团贵州有限公司 | 数据仓库的冷热数据识别方法、装置及电子设备 |
CN113742307B (zh) * | 2021-08-11 | 2023-08-25 | 达梦数据技术(江苏)有限公司 | 一种基于值日志***的二级索引的存储和查询方法及*** |
CN114296635B (zh) * | 2021-12-03 | 2023-11-03 | 北京易捷思达科技发展有限公司 | 缓存数据的缓存淘汰方法、装置、终端及存储介质 |
CN114116530B (zh) * | 2021-12-06 | 2022-09-13 | 海光信息技术股份有限公司 | 存储控制方法及装置、数据处理方法及装置以及存储介质 |
CN114327278A (zh) | 2021-12-30 | 2022-04-12 | 北京百度网讯科技有限公司 | 数据的追加写方法、装置、设备以及存储介质 |
CN117372236A (zh) * | 2022-07-06 | 2024-01-09 | 格兰菲智能科技有限公司 | 共享内存的访问方法、装置、计算机设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101237417A (zh) * | 2008-02-29 | 2008-08-06 | 华为技术有限公司 | 队列索引方法及装置和流量整形的方法及装置 |
CN102215528A (zh) * | 2010-04-06 | 2011-10-12 | 中兴通讯股份有限公司 | Harq参数的传递、获取方法与hsdpa*** |
CN106502928A (zh) * | 2016-09-29 | 2017-03-15 | 华为技术有限公司 | 一种存储***掉电保护方法、存储控制器及电子设备 |
CN107391398A (zh) * | 2016-05-16 | 2017-11-24 | 中国科学院微电子研究所 | 一种闪存缓存区的管理方法及*** |
CN107817945A (zh) * | 2016-09-13 | 2018-03-20 | 中国科学院微电子研究所 | 一种混合内存结构的数据读取方法和*** |
CN108139902A (zh) * | 2015-10-16 | 2018-06-08 | 科内克斯实验室公司 | 用于提供混合模式来访问ssd驱动器的方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008055269A2 (en) * | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Asymmetric memory migration in hybrid main memory |
US8874827B2 (en) * | 2011-08-09 | 2014-10-28 | Samsung Electronics Co., Ltd. | Page merging for buffer efficiency in hybrid memory systems |
US9811472B2 (en) * | 2012-06-14 | 2017-11-07 | International Business Machines Corporation | Radix table translation of memory |
KR20170060203A (ko) * | 2015-11-23 | 2017-06-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN105786717B (zh) * | 2016-03-22 | 2018-11-16 | 华中科技大学 | 软硬件协同管理的dram-nvm层次化异构内存访问方法及*** |
US10452539B2 (en) * | 2016-07-19 | 2019-10-22 | Sap Se | Simulator for enterprise-scale simulations on hybrid main memory systems |
CN108762671A (zh) * | 2018-05-23 | 2018-11-06 | 中国人民解放军陆军工程大学 | 基于pcm和dram的混合内存***及其管理方法 |
CN110502452B (zh) * | 2019-07-12 | 2022-03-29 | 华为技术有限公司 | 访问电子设备中的混合缓存的方法及装置 |
-
2019
- 2019-07-12 CN CN201910631237.2A patent/CN110502452B/zh active Active
-
2020
- 2020-06-22 WO PCT/CN2020/097519 patent/WO2021008311A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101237417A (zh) * | 2008-02-29 | 2008-08-06 | 华为技术有限公司 | 队列索引方法及装置和流量整形的方法及装置 |
CN102215528A (zh) * | 2010-04-06 | 2011-10-12 | 中兴通讯股份有限公司 | Harq参数的传递、获取方法与hsdpa*** |
CN108139902A (zh) * | 2015-10-16 | 2018-06-08 | 科内克斯实验室公司 | 用于提供混合模式来访问ssd驱动器的方法和装置 |
CN107391398A (zh) * | 2016-05-16 | 2017-11-24 | 中国科学院微电子研究所 | 一种闪存缓存区的管理方法及*** |
CN107817945A (zh) * | 2016-09-13 | 2018-03-20 | 中国科学院微电子研究所 | 一种混合内存结构的数据读取方法和*** |
CN106502928A (zh) * | 2016-09-29 | 2017-03-15 | 华为技术有限公司 | 一种存储***掉电保护方法、存储控制器及电子设备 |
Non-Patent Citations (2)
Title |
---|
基于生命值敏感的闪存数据库缓冲区替换算法;王力玉等;《吉林大学学报(工学版)》;20160321;全文 * |
集群环境下分布式索引的实现;翁海星;《计算机应用》;20160110;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110502452A (zh) | 2019-11-26 |
WO2021008311A1 (zh) | 2021-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110502452B (zh) | 访问电子设备中的混合缓存的方法及装置 | |
CN107193646B (zh) | 一种基于混合主存架构的高效动态页面调度方法 | |
US9817765B2 (en) | Dynamic hierarchical memory cache awareness within a storage system | |
CN102782683B (zh) | 用于数据库服务器的缓冲池扩展 | |
US20110252215A1 (en) | Computer memory with dynamic cell density | |
US10691601B2 (en) | Cache coherence management method and node controller | |
EP3572946B1 (en) | Cache replacement method, device, and system | |
CN108776614B (zh) | 存储块的回收方法和装置 | |
CN110688062B (zh) | 一种缓存空间的管理方法及装置 | |
CN103019960A (zh) | 分布式缓存方法及*** | |
CN104503703B (zh) | 缓存的处理方法和装置 | |
US20140223072A1 (en) | Tiered Caching Using Single Level Cell and Multi-Level Cell Flash Technology | |
US20180113815A1 (en) | Cache entry replacement based on penalty of memory access | |
CN114253908A (zh) | 键值存储***的数据管理方法及其装置 | |
WO2020063355A1 (zh) | 数据块的缓存方法、装置、计算机设备及计算机可读存储介质 | |
US11593268B2 (en) | Method, electronic device and computer program product for managing cache | |
CN111506604A (zh) | 访问数据的方法、装置和计算机程序产品 | |
CN106164874B (zh) | 多核***中数据访问者目录的访问方法及设备 | |
CN109478164B (zh) | 用于存储用于高速缓存条目传输的高速缓存位置信息的***和方法 | |
CN111475099A (zh) | 一种数据存储方法、装置及其设备 | |
US10585592B2 (en) | Disk area isolation method and device | |
WO2021008301A1 (zh) | 访问电子设备中的混合缓存的方法及装置 | |
CN116244219A (zh) | 一种基于raid缓存状态的落盘方法及*** | |
CN116185287A (zh) | 一种降低读延时的方法、装置及固态硬盘 | |
CN112650691B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |