一种高速缓冲存储器cache中的cache块的替换方法和装置与流程

文档序号:12363567阅读:199来源:国知局
一种高速缓冲存储器cache中的cache块的替换方法和装置与流程
本发明实施例涉及数据存储
技术领域
,尤其涉及一种高速缓冲存储器(cache)中的cache块的替换方法和装置。
背景技术
:由于访问cache的速率大于访问内存的速率,因此节点中一般设置有cache。cache的基本读写单位为cache块(cacheline)。由于cache的容量小于内存的容量,因此当cache达到最大容量、且需要在cache中添加新的数据时,即满足替换条件时,需要将cache中的一个cache块中存储的数据替换出去。由于访问本地内存的速率大于访问远程内存的速率,因此,具体实现时,一般希望远程内存中的数据,即远程页面中的数据,能够在cache中停留的时间较长,从而减少因访问远程内存而导致的访问延迟。基于此,一种改进的替换方法包括:为cache中的每个cache块添加一个锁定位(lockbit),将存储有远程页面中的数据的cache块的锁定位置1;并基于LRU(LeastRecentlyUsed,近期最少使用算法),将锁定位为0的一个cache块中存储的数据替换出去。其中,锁定位置1的cache块中存储的数据不会被替换出去。在上述改进的替换方法中,锁定位置1的cache块会被滞留在cache中,这样,若锁定位置1后的cache块在后续访问中均不再被命中,则会使cache的有用空间减少,从而降低了cache的利用率。技术实现要素:本发明的实施例提供一种cache中的cache块的替换方法和装置,用以在减少因访问远程内存而导致的访问延迟的同时,有效保证cache的利用率。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,提供一种cache中的cache块的替换方法,应用于节点,所述节点中设置有cache;所述方法包括:将所述cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类;其中,所述第一分类对应的年龄增长速率小于所述第二分类对应的年龄增长速率;在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄,并在满足替换条件时,将年龄最大的一个cache块中存储的数据替换出去。结合第一方面,在第一种可能的实现方式中,所述节点中还设置有传输后备缓冲器TLB,所述TLB中包括每个cache块对应的页表;在所述将所述cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类之前,所述方法还包括:根据所对应的页表的页面类型,确定每个cache块中存储的数据为远程页面数据还是本地页面数据;其中,所述页面类型为远程页面或本地页面。结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述将所述cache中存储有远程页面数据的cache块归为第一分类之后,所述方法还包括:在所述第一分类中,确定在预设时间段内被访问次数大于或等于第一阈值的远程页面组;确定在所述预设时间段内,所述远程页面组中被访问cache块的数量小于或等于第二阈值的远程页面,作为远程伪热页;将所述第一分类中的存储有所述远程伪热页中的数据的cache块归为第一子分类,所述第一分类中的其他cache块归为第二子分类;其中,所述第一子分类对应的年龄增长速率小于所述第二子分类对应的年龄增长速率。结合第一方面,在第三种可能的实现方式中,所述在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄,包括:在每次访问的过程中,若所述cache中有被命中的cache块,则将所述被命中的cache块的年龄清零,并根据所属的分类对应的年龄增长速率,更新其他未被命中的cache块;或者,在每次访问的过程中,若所述cache中没有被命中的cache块,则根据所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄。结合第一方面,在第四种可能的实现方式中,所述cache与内存之间的连接方式为组相连映射;在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄,并在满足替换条件时,将年龄最大的一个cache块中存储的数据替换出去;包括:在每次访问cache中的一个cache组的过程中,按照所属的分类对应的年龄增长速率,更新所述cache组中的每个cache块的年龄,并在满足替换条件时,将所述cache组中的年龄最大的一个cache块中存储的数据替换出去。结合第一方面、第一方面的第一种可能的实现方式至第四种可能的实现方式任一种,在第五种可能的实现方式中,当所述cache与内存之间的连接方式为组相连映射时,所述满足替换条件包括:被访问的cache组中没有被命中的cache块,且所述被访问的cache组达到最大容量;或,当所述cache与内存之间的连接方式为全相连映射或直接映射时,所述满足替换条件包括:所述cache中没有被命中的cache块,且所述cache达到最大容量。第二方面,提供一种节点,所述节点中设置有cache;所述节点包括:归类单元,用于将所述cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类;其中,所述第一分类对应的年龄增长速率小于所述第二分类对应的年龄增长速率;更新替换单元,用于在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄,并在满足替换条件时,将年龄最大的一个cache块中存储的数据替换出去。结合第二方面,在第一种可能的实现方式中,所述节点中还设置有传输后备缓冲器TLB,所述TLB中包括每个cache块对应的页表;所述节点还包括:第一确定单元,用于根据所对应的页表的页面类型,确定每个cache块中存储的数据为远程页面数据还是本地页面数据;其中,所述页面类型为远程页面或本地页面。结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述节点还包括:第二确定单元,用于在所述第一分类中,确定在预设时间段内被访问次数大于或等于第一阈值的远程页面组;并确定在所述预设时间段内,所述远程页面组中被访问cache块的数量小于或等于第二阈值的远程页面,作为远程伪热页;所述归类单元还用于:将所述第一分类中的存储有所述远程伪热页中的数据的cache块归为第一子分类,所述第一分类中的其他cache块归为第二子分类;其中,所述第一子分类对应的年龄增长速率小于所述第二子分类对应的年龄增长速率。结合第二方面,在第三种可能的实现方式中,所述更新替换单元具体用于:在每次访问的过程中,若所述cache中有被命中的cache块,则将所述被命中的cache块的年龄清零,并根据所属的分类对应的年龄增长速率,更新其他未被命中的cache块;或者,在每次访问的过程中,若所述cache中没有被命中的cache块,则根据所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄。结合第二方面,在第四种可能的实现方式中,所述cache与内存之间的连接方式为组相连映射;所述更新替换单元具体用于:在每次访问cache中的一个cache组的过程中,按照所属的分类对应的年龄增长速率,更新所述cache组中的每个cache块的年龄,并在满足替换条件时,将所述cache组中的年龄最大的一个cache块中存储的数据替换出去。结合第二方面、第二方面的第一种可能的实现方式至第四种可能的实现方式任一种,在第五种可能的实现方式中,当所述cache与内存之间的连接方式为组相连映射时,所述满足替换条件包括:被访问的cache组中没有被命中的cache块,且所述被访问的cache组达到最大容量;或,当所述cache与内存之间的连接方式为全相连映射或直接映射时,所述满足替换条件包括:所述cache中没有被命中的cache块,且所述cache达到最大容量。上述技术方案,通过将cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类;其中,第一分类对应的年龄增长速率小于第二分类对应的年龄增长速率;然后,在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新cache中的每个cache块的年龄,并在满足替换条件时,将年龄最大的一个cache块中存储的数据替换出去。由于存储有远程页面数据的cache块的年龄增长速率小于存储有本地远程页面数据的cache块的年龄增长速率,因此,相比本地远程页面数据,远程页面数据在cache中停留的时间较长,这样,能够减少直接访问远程内存的次数,从而解决了因访问远程内存而导致的延迟较大的问题。另外,由于远程页面数据可以成为年龄最大的存储块,即可以被替换出去,因此,在本发明实施例中,远程页面数据不会滞留在cache中;因此与现有技术中的远程页面数据会被滞留在cache中的技术方案相比,能够增加cache的有用空间,从而提高cache的利用率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种cache中的cache块的替换方法的流程示意图;图2为本发明实施例提供的一种各分类中的cache块的年龄增长情况 的示意图;图3为本发明实施例提供的一种节点的结构示意图;图4为本发明实施例提供的另一种节点的结构示意图;图5为本发明实施例提供的另一种节点的结构示意图;图6为本发明实施例提供的另一种节点的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行示例性描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下获得的所有其他实施例,都属于本发明保护的范围。为了清楚说明本发明实施例提供的技术方案,首先简单介绍cache、TLB,以及二者之间的关系,以方便本领域技术人员理解:1)、cachecache的基本读写单位为cache块。一个cache块中可以存储本地页面数据或远程页面数据。其中,“本地页面数据”是指本地内存中的数据“远程页面数据”是指远程内存中的数据。这里的“节点”具体可以为数据中心中的任一个服务器,另外也可以为其他设备。内存由若干个页面组成,页面的读写单位为block。一个block所占的存储空间小于或等于一个cache块所占的存储空间。当CPU(CentralProcessingUnit,中央处理器)需要访问一个block(下文中称为“待访问block”)中的数据时,首先根据待访问block的虚拟地址,获取待访问block的内存地址,即物理地址;然后,在cache中查找该内存地址对应的cache块;若查找到,即有cache块被命中,则从被命中的cache块中读取待访问block中的数据;若没有查找到,即没有cache块被命中,则从内存中读取待访问block中的数据,并将待访问block中的数据写入一个空闲cache块中。需要说明的是,本文中将没有存储数据的cache块称为“空闲cache块”。举例而言,CPU可以根据待访问block的虚拟地址,从节点的页表区中获取待访问block的内存地址;也可以根据待访问block的虚拟地址, 从TLB(TranslationLookasideBuffer,传输后备缓冲器)中获取待访问block的内存地址。2)、TLBTLB用于将虚拟地址转换为内存地址。TLB由若干个页表组成,每个页表对应一个远程页面或本地页面。CPU根据待访问block的虚拟地址,从TLB中获取待访问block的内存地址,可以包括:CPU向TLB发送待访问block的虚拟地址;TLB根据待访问block的虚拟地址,在TLB中查找待访问block所属的页面对应的页表;若查找到,即TLB命中,则根据该页表获取到待访问block的内存地址,并反馈给CPU;若没有查找到,即TLB失耙,则根据待访问block的虚拟地址,从节点的页表区中获取待访问block的内存地址,并在TLB中为待访问block所属的页面分配新的页表。3)、cache块与页表之间的关系TLB中的一个页表与cache中的存储有该页表对应的页面中的数据的cache块对应。需要说明的是,本文中的“多个”是指两个或两个以上。另外,本文中提供的方法的执行主体为节点,其中,若不加说明,则该执行主体具体可以为节点中的CPU。参见图1,为本发明实施例提供的一种cache中的cache块的替换方法的流程示意图。图1所示的方法应用于节点,该节点中设置有cache;该方法包括:S101:将cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类;其中,第一分类对应的年龄增长速率小于第二分类对应的年龄增长速率。举例而言,可以预先为cache中的每个cache块添加第一标记位。这样,节点在执行步骤S101之前,可以首先确定每个cache块中存储的数据为远程页面数据还是本地页面数据,然后,在执行S101时,将存储远程页面数据的cache块的第一标记位和存储本地页面数据的cache块的远程页面第一标记位设置为不同的值,以实现对cache中的cache块的归类。这样,在后续步骤中,可以通过第一标记位的不同的值,来区分一个cache 块所属的分类为第一分类还是第二分类。其中,“第一标记位”所占的存储空间的大小可以为一个或多个比特位。当然,具体实现时,也可以通过其他方式标记第一分类和第二分类,本发明实施例对此不进行限定。需要说明的是,每个分类对应的年龄增长速率可以有一个或多个,因此,“第一分类对应的年龄增长速率小于第二分类对应的年龄增长速率”可以描述为:第一分类对应的平均年龄增长速率小于第二分类对应的年龄增长速率。下述第一子分类对应的年龄增长速率与第二子分类对应的年龄增长速率,与此类似,不再赘述。S102:在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新cache中的每个cache块的年龄,并在满足替换条件时,将年龄最大的一个cache块中存储的数据替换出去。其中,“每次访问的过程”是指每次访问一个block中的数据的过程。“所属的分类”包括第一分类和第二分类。举例而言,当cache与内存之间的连接方式为组相连映射时,cache被分为多个cache组;S102具体可以为:在每次访问一个cache组的过程中,按照所属的分类对应的年龄增长速率,更新该cache组中的每个cache块的年龄,并在满足替换条件时,将该cache组中年龄最大的一个cache块中存储的数据替换出去。当cache与内存之间的连接方式为组相连映射时,满足替换条件包括:被访问的cache组中没有被命中的cache块,且该被访问的cache组达到最大容量;当cache与内存之间的连接方式为全相连映射或直接映射时,满足替换条件包括:cache中没有被命中的cache块,且cache达到最大容量。在满足替换条件时,若(一个cache组中)最大年龄的cache块有多个,则可以将该多个中的任意一个cache块中的数据替换出去。在一种可选的实现方式中,S102可以包括:在每次访问的过程中,若cache中有被命中的cache块,则将该被命中的cache块的年龄清零,并根据所属的分类对应的年龄增长速率,更新其他未被命中的cache块。举例而言,当cache与内存之间的连接方式为组相连映射时,在每次访问一个cache组的过程中,若该cache组中有被命中的cache块,则 将该被命中的cache块的年龄清零,并根据所属的分类对应的年龄增长速率,更新该cache组中的其他未被命中的cache块。需要说明的是,具体实现时,可以按照其他的方式实现步骤S102。例如,在一次访问的过程中,若cache中有被命中的cache块,则减少被命中的cache块的年龄,或在接下来的若干次访问中,停止增加该被命中的cache块的年龄等。在另一种可选的实现方式中,S102可以包括:在每次访问的过程中,若cache中没有被命中的cache块,则根据所属的分类对应的年龄增长速率,更新cache中的每个cache块的年龄。举例而言,当cache与内存之间的连接方式为组相连映射时,在每次访问一个cache组的过程中,若该cache组中没有被命中的cache块,则根据所属的分类对应的年龄增长速率,更新该cache组中的每个cache块的年龄。该可选的实现方式具体包括:在每次访问的过程中,若cache中没有被命中的cache块,且不满足替换条件,则根据所属的分类对应的年龄增长速率,更新cache中的每个cache块的年龄,并在cache中的一个空闲cache块中添加待访问block中的数据。另外,若满足替换条件则需要将一个cache块中存储的数据替换出去,以腾出存储空间,从而在该cache块中写入待访问block中的数据。需要说明的是,一般地,每个分类对应的最大年龄相同;当然,具体实现时,也可以不设置最大年龄,即认为最大年龄均为无穷大。另外需要说明的是,由于在满足替换条件时,需要将年龄最大的cache块中存储的数据替换出去,换言之,cache中存储的数据在不断更新,因此在一个时间段内,cache中可能存储有远程页面数据或本地页面数据,也可能既存储有远程页面数据也存储有本地页面数据。本发明实施例提供的cache中的cache块的替换方法,通过将cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类;其中,第一分类对应的年龄增长速率小于第二分类对应的年龄增长速率;然后,在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新cache中的每个cache块的年龄,并在满足替换 条件时,将年龄最大的一个cache块中存储的数据替换出去。由于存储有远程页面数据的cache块的年龄增长速率小于存储有本地远程页面数据的cache块的年龄增长速率,因此,相比本地远程页面数据,远程页面数据在cache中停留的时间较长,这样,能够减少直接访问远程内存的次数,从而解决了因访问远程内存而导致的延迟较大的问题。另外,由于远程页面数据可以成为年龄最大的存储块,即可以被替换出去,因此,在本发明实施例中,远程页面数据不会滞留在cache中;因此与现有技术中的远程页面数据会被滞留在cache中的技术方案相比,能够增加cache的有用空间,从而提高cache的利用率。可选的,在步骤S101之前,该方法还可以包括:确定每个cache块中存储的数据为远程页面数据还是本地页面数据。具体可以通过以下方式实现:方式一、当在向一个cache块中存储数据时,根据该数据的内存地址确定该数据为远程页面数据还是本地页面数据。举例而言,远程页面数据的内存地址的取值范围与本地页面数据的内存地址的取值范围不同;因此,可以根据数据的内存地址确定该数据为远程页面数据还是本地页面数据。方式二、当cache中已经存储有数据时,根据该cache块中包含的内存地址,获知该数据为远程页面数据还是本地页面数据。举例而言,一个cache块中存储有数据,以及该数据的内存地址。方式三、当节点中还设置有TLB时,根据所对应的页表的页面类型,确定每个cache块中存储的数据为远程页面数据还是本地页面数据;其中,“页面类型”为远程页面或本地页面;TLB由若干个页表组成。举例而言,可以预先为每个页表添加标记位。这样,节点在执行方式三中的步骤之前,可以首先根据每个页表对应的页面的地址,确定该页面为远程页面还是本地页面,然后,将对应远程页面的页表的标记位和对应本地页面的页表的标记位设置为不同的值,以区分不同页表的页面类型;接着,在执行方式三中的步骤时,根据每个页表的标记位的值,以及页表与cache块之间的对应关系,确定每个cache块中存储的数据为远程页面数据还是本地页面数据。其中,“标记位”所占的存储空间的大小可以为 一个或多个比特位。方式三中,通过所对应的页表的页面类型,确定每个cache块中存储的数据为远程页面数据还是本地页面数据;这样,一旦获取到一个页表的页面类型,即可获知该页表对应的所有cache块中存储的数据为远程页面数据还是本地页面数据。可选的,在执行S101中的“将cache中存储有远程页面数据的cache块归为第一分类”之后,该方法还可以包括:步骤1:在第一分类中,确定在预设时间段内被访问次数大于或等于第一阈值的远程页面组。其中,“远程页面组”由第一分类中的、且在预设时间段内被访问次数大于或等于第一阈值一个或多个远程页面组成。步骤1可以描述为:从远程页面中选择出频繁被访问的页面,即远程热页。远程热页可以进一步分为远程真热页和远程伪热页。其中,远程真热页是指在该预设时间段内,所访问的cache块比较分散的远程页面;远程热页是指在该预设时间段内,所访问的cache块比较集中的远程页面。下述步骤2为确定远程伪热页的过程。步骤2:确定在该预设时间段内,远程页面组中被访问cache块的数量小于或等于第二阈值的远程页面,作为远程伪热页。需要说明的是,节点中还可以设置有RMC(RouterManagerCenter,路由器后台管理中心)。RMC可以时刻监听并统计每个远程页面被访问的次数,并执行上述步骤1-2,然后将步骤2中的结果上报给CPU,由CPU执行步骤3。步骤3:将第一分类中的存储有远程伪热页中的数据的cache块归为第一子分类,第一分类中的其他cache块归为第二子分类;其中,第一子分类对应的年龄增长速率小于第二子分类对应的年龄增长速率。举例而言,可以通过为每个cache块添加第二标记位。这样,节点可以为不同子分类中的cache块的第二标记位设置不同的值,以通过每个cache块的第一标记位的值和第二标记位的值,来区分一个cache块所属的分类为第一子分类还是第二子分类。其中,“第二标记位”所占的存储空间的大小可以为一个或多个比特。需要说明的是,由于CPU在不同时间段内所访问的cache块在不断变化,且cache中存储的数据在不断更新,因此一个远程页面可能在一个时间段内为远程伪热页,在另一个时间段内不为远程伪热页。另外,本发明实施例对预设时间段、第一阈值和第二阈值的取值不进行限定。该可选的实现方式,将第一分类中的cache块区分为第一子分类和第二子分类,这样,S102中的“所属的分类”可以包括第一子分类、第二子分类和第二分类。具体实现时,还可以对每个分类或每个子分类中的cache块再进行归类。例如,还可以将第二子分类中的远程真热页归为一个分类,将第二子分类中的其他远程页面归为另一个分类。当然,还可以按照对远程页面的归类方式,对本地页面进行归类。下面通过一个具体的示例对上文提供的cache中的cache块的替换方法进行示例性说明:在本示例中,预先为TLB中的每个页表添加一个标记位,该标记位可以称为远程页面位,记作R1;并预先为cache中的每个cache块设置第一标记位和第二标记位,其中,第一标记位可以称为远程页面位,记作R2,第二标记位可以称为伪热页位,记作PH。另外,R1、R2、PH所占的存储空间的大小均为1个比特。本示例中,通过一个页表的R1的取值确定该页表对应的cache块的R2的取值;通过R2与PH的取值区分第一子分类、第二子分类和第二分类。具体如下表1所示:表1R2PH分类11第一子分类10第二子分类00第二分类下面举例说明如何确定R2与PH的取值。1)、R2的取值每次在TLB中添加新的页表时,若该页表对应的页面为远程页面,则将该页表的R1置1,并在本次和后续访问过程中,将该页表对应的每个 cache块的R2置1;若该页表对应的页面为本地页面,则将该页表的R1置0,在本次和后续访问过程中,将该页表对应的每个cache块的R2置0。2)、PH的取值RMC时刻监听并统计每个R1被置1的页表对应的页面(即远程页面)被访问的次数,以及存储有远程页面数据的cache块被访问的次数;并确定在预设时间段内被访问次数大于或等于第一阈值的远程页面组,然后,确定在该预设时间段内,远程页面组中被访问cache块的数量小于或等于第二阈值的远程页面,作为远程伪热页;最后,将R2被置1的每个cache块中、存储有远程伪热页中的数据的cache块的PH置1,将R2被置1的每个cache块中的其他cache块的PH置0。假设cache与内存之间的连接方式为4路组相连映射,那么,若cache大小为64KB,则每一路有256个cache块,下面以标号分别为0、1、2、3的cache块构成的一个cache组为例进行说明。假设标号为0、1、2、3的cache块的R2与PH的取值如表2所示:表2cache块R2PHcache块010cache块100cache块211cache块300假设每个分类中的cache块的年龄增长情况如图2所示。其中,第一子分类对应的年龄增长速率为1;第二子分类对应的年龄增长速率有两个,分别为1和2;第二分类对应的年龄增长速率为3。每个分类对应的最大年龄均为9。假设连续4次访问过程中,被命中的cache块依次为:cache块2、cache块3、cache块3、空;其中,“空”表示没有被命中的cache块。那么,基于图2所示的每个分类对应的年龄增长速率,在连续4次访问结束时,表2中的各cache块的年龄的更新情况如表3所示。其中,假设在该连续4次访问过程的开始时刻,表2中的各cache块的年龄分别为3、 0、6、9。表3第1次访问过程中,cache块2被命中,因此cache块2的年龄清零。按照第二子分类对应的年龄增长速率,将cache块0的年龄由3增长到4。按照第二分类对应的年龄增长速率,将cache块1的年龄由0增长到3。由于在第1次访问开始时,cache块3的年龄已达到最大值,因此不再增长,仍然为9。第2次访问过程中,cache块3被命中,因此cache块3的年龄清零。按照第二子分类对应的年龄增长速率,将cache块0的年龄由4增长为6。按照第二分类对应的年龄增长速率,将cache块1的年龄由3增长为6,会出现cache块1与cache块0的年龄相同的情况,因此可以将cache块1的年龄按照第二分类对应的年龄增长速率由6顺延至9。按照第一子分类对应的年龄增长速率,将cache块2的年龄由0增长为1。第3次访问过程中,cache块3被命中,因此cache块3的年龄清零。按照第二子分类对应的年龄增长速率,将cache块0的年龄由6增长到7。由于在第3次访问开始时,cache块1的年龄已达到最大值,因此不再增长,仍然为9。按照第一子分类对应的年龄增长速率,将cache块2的年龄由1增长为2。第4次访问过程中,没有被命中的cache块,且cache已达到最大容量,即满足替换条件,因此将年龄最大的cache块1中存储的数据替换出去。按照第二子分类对应的年龄增长速率,将cache块0的年龄由6增长到7。按照第一子分类对应的年龄增长速率,将cache块2的年龄由2增长为3。按照第二分类对应的年龄增长速率,将cache块3的年龄由0增长为3,会出现cache块2与cache块3的年龄相同的情况,因此可 以将cache块3的年龄按照第二分类对应的年龄增长速率由3顺延至6。需要说明的是,在将年龄最大的cache块1中存储的数据替换出去之后,可以将第4次访问过程中的待访问数据写入cache块1中;这样,cache块1的R2和PH的取值,会根据新写入的数据进行更新。具体可以参考上文提供的R2和PH的取值的部分的描述,此处不再赘述。参见图3,为本发明实施例提供的一种节点的结构示意图。图3所示的节点3用于执行上文提供的cache中的cache块的替换方法。本实施例中的相关内容的解释可以参考上文。节点3中设置有cache;该节点3包括:归类单元31和更新替换单元32。其中:归类单元31,用于将所述cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类;其中,所述第一分类对应的年龄增长速率小于所述第二分类对应的年龄增长速率。更新替换单元32,用于在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄,并在满足替换条件时,将年龄最大的一个cache块中存储的数据替换出去。可选的,节点3中还设置有传输后备缓冲器TLB,所述TLB中包括每个cache块对应的页表;如图4所示,节点3还可以包括:第一确定单元33,用于根据所对应的页表的页面类型,确定每个cache块中存储的数据为远程页面数据还是本地页面数据;其中,所述页面类型为远程页面或本地页面。可选的,如图4所示,节点3还可以包括:第二确定单元34,用于在所述第一分类中,确定在预设时间段内被访问次数大于或等于第一阈值的远程页面组;并确定在所述预设时间段内,所述远程页面组中被访问cache块的数量小于或等于第二阈值的远程页面,作为远程伪热页。在该可选的方式中,归类单元31还用于:将所述第一分类中的存储有所述远程伪热页中的数据的cache块归为第一子分类,所述第一分类中的其他cache块归为第二子分类;其中,所述第一子分类对应的年龄增长速率小于所述第二子分类对应的年龄增长速率。可选的,更新替换单元32具体用于:在每次访问的过程中,若所述 cache中有被命中的cache块,则将所述被命中的cache块的年龄清零,并根据所属的分类对应的年龄增长速率,更新其他未被命中的cache块;或者,在每次访问的过程中,若所述cache中没有被命中的cache块,则根据所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄。可选的,所述cache与内存之间的连接方式为组相连映射;该情况下,更新替换单元32具体用于:在每次访问cache中的一个cache组的过程中,按照所属的分类对应的年龄增长速率,更新所述cache组中的每个cache块的年龄,并在满足替换条件时,将所述cache组中的年龄最大的一个cache块中存储的数据替换出去。可选的,当所述cache与内存之间的连接方式为组相连映射时,所述满足替换条件包括:被访问的cache组中没有被命中的cache块,且所述被访问的cache组达到最大容量;或,当所述cache与内存之间的连接方式为全相连映射或直接映射时,所述满足替换条件包括:所述cache中没有被命中的cache块,且所述cache达到最大容量。本发明实施例提供的节点,通过将cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类;其中,第一分类对应的年龄增长速率小于第二分类对应的年龄增长速率;然后,在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新cache中的每个cache块的年龄,并在满足替换条件时,将年龄最大的一个cache块中存储的数据替换出去。由于存储有远程页面数据的cache块的年龄增长速率小于存储有本地远程页面数据的cache块的年龄增长速率,因此,相比本地远程页面数据,远程页面数据在cache中停留的时间较长,这样,能够减少直接访问远程内存的次数,从而解决了因访问远程内存而导致的延迟较大的问题。另外,由于远程页面数据可以成为年龄最大的存储块,即可以被替换出去,因此,在本发明实施例中,远程页面数据不会滞留在cache中;因此与现有技术中的远程页面数据会被滞留在cache中的技术方案相比,能够增加cache的有用空间,从而提高cache的利用率。在硬件实现上,上述归类单元31、更新替换单元32、第一确定单元 33、第二确定单元34中的一种或几种可以以硬件形式内嵌于或独立于节点的处理器中,也可以以软件形式存储于节点的存储器中,以便于处理器调用执行以上各个模块对应的操作,该处理器可以为中央处理单元(CPU)、微处理器、单片机等。参见图5为本发明实施例提供的一种节点的结构示意图。图5所示的节点5用于执行上文提供的cache中的cache块的替换方法。本实施例中的相关内容的解释可以参考上文。节点5中设置有高速缓冲存储器cache51;该节点5包括:存储器52和处理器53。存储器52,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。处理器53执行所述存储器52存放的程序,以实现本发明实施例提供的cache中的cache块的替换方法,具体包括:将所述cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类;其中,所述第一分类对应的年龄增长速率小于所述第二分类对应的年龄增长速率;以及在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄,并在满足替换条件时,将年龄最大的一个cache块中存储的数据替换出去。可选的,如图6所示,节点5中还设置有传输后备缓冲器TLB54,所述TLB54中包括每个cache块对应的页表;该情况下,处理器53还用于:根据所对应的页表的页面类型,确定每个cache块中存储的数据为远程页面数据还是本地页面数据;其中,所述页面类型为远程页面或本地页面。可选的,处理器53还用于:在所述第一分类中,确定在预设时间段内被访问次数大于或等于第一阈值的远程页面组;并确定在所述预设时间段内,所述远程页面组中被访问cache块的数量小于或等于第二阈值的远程页面,作为远程伪热页;将所述第一分类中的存储有所述远程伪热页中的数据的cache块归为第一子分类,所述第一分类中的其他cache块归为第二子分类;其中,所述第一子分类对应的年龄增长速率小于所述第二子分类对应的年龄增长速率。可选的,处理器53还用于:在每次访问的过程中,若所述cache中有被命中的cache块,则将所述被命中的cache块的年龄清零,并根据所 属的分类对应的年龄增长速率,更新其他未被命中的cache块;或者,在每次访问的过程中,若所述cache中没有被命中的cache块,则根据所属的分类对应的年龄增长速率,更新所述cache中的每个cache块的年龄。可选的,所述cache与内存之间的连接方式为组相连映射;该情况下,处理器53具体用于:在每次访问cache中的一个cache组的过程中,按照所属的分类对应的年龄增长速率,更新所述cache组中的每个cache块的年龄,并在满足替换条件时,将所述cache组中的年龄最大的一个cache块中存储的数据替换出去。可选的,当所述cache与内存之间的连接方式为组相连映射时,所述满足替换条件包括:被访问的cache组中没有被命中的cache块,且所述被访问的cache组达到最大容量;或,当所述cache与内存之间的连接方式为全相连映射或直接映射时,所述满足替换条件包括:所述cache中没有被命中的cache块,且所述cache达到最大容量。本发明实施例提供的节点,通过将cache中存储有远程页面数据的cache块归为第一分类,存储有本地页面数据的cache块归为第二分类;其中,第一分类对应的年龄增长速率小于第二分类对应的年龄增长速率;然后,在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新cache中的每个cache块的年龄,并在满足替换条件时,将年龄最大的一个cache块中存储的数据替换出去。由于存储有远程页面数据的cache块的年龄增长速率小于存储有本地远程页面数据的cache块的年龄增长速率,因此,相比本地远程页面数据,远程页面数据在cache中停留的时间较长,这样,能够减少直接访问远程内存的次数,从而解决了因访问远程内存而导致的延迟较大的问题。另外,由于远程页面数据可以成为年龄最大的存储块,即可以被替换出去,因此,在本发明实施例中,远程页面数据不会滞留在cache中;因此与现有技术中的远程页面数据会被滞留在cache中的技术方案相比,能够增加cache的有用空间,从而提高cache的利用率。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的 对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM(Read-OnlyMemory,只读存储器)、RAM(RandomAccessMemory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1