发明内容
本发明提供一种对目录条目进行替换的方法及装置,以解决现有技术中耗费的***资源较大的问题。
本发明提供了一种对目录条目进行替换的方法,将当前目录高速缓存Cache中的所有目录条目划分为两路以上的分组,为每一路分组分别分配零个以上的信号位,其中,各路分组中零个以上的信号位按照预设顺序进行排列;包括:
在确定接收到的一致性报文所对应的目录条目位于当前目录Cache中的第n路分组时,将第n路分组中的所有信号位进行置位,其中,n为大于0且小于等于q的整数,q为分组个数,取m为大于等于1且小于n中的每一个整数,针对每一个整数分别执行将第n-m路分组中的第m个信号位进行复位,其余信号位保持不变;
根据每一路分组中各个信号位的取值,分别计算每一路分组对应的频率统计值;
根据每一路分组对应的频率统计值,确定目录Cache中需要替换的目标分组;
将确定的所述目标分组中包括的目录条目进行替换。
优选地,所述根据每一路分组中各个信号位的取值,分别计算每一路分组对应的频率统计值,包括:利用下述计算公式计算第n路分组对应的频率统计值:
lru_select[n]=(lru_n-1_1)&(lru_n-2_2)&(lru_n-3_3)&…&(lru_n-m_m)&(~lru_n_1)&(~lru_n_2)&(~lru_n_3)&…&(~lru_n_Pn)
其中,Pn为第n路分组分配的信号位的个数,lru_n-m_m为第n-m路分组中第m个信号位的取值,~lru_n_Pn为第n路分组中第Pn个信号位的取值的取反。
优选地,所述确定目录Cache中需要替换的目标分组,包括:
将频率统计值为1的分组确定目录Cache中需要替换的目标分组。
优选地,所述为每一路分组分别分配零个以上的信号位,包括:
为第n路分组分配q-n个信号位。
优选地,所述将当前目录Cache中的所有目录条目划分为两路以上的分组,包括:
将当前目录Cache中的所有目录条目划分为8路分组;或,
将当前目录Cache中的所有目录条目划分为16路分组;或,
将当前目录Cache中的所有目录条目划分为32路分组。
本发明还提供了一种对目录条目进行替换的装置,包括:
划分单元,用于将当前目录高速缓存Cache中的所有目录条目划分为两路以上的分组;
分配单元,用于为每一路分组分别分配零个以上的信号位,其中,各路分组中零个以上的信号位按照预设顺序进行排列;
置位复位单元,用于在确定接收到的一致性报文所对应的目录条目位于当前目录Cache中的第n路分组时,将第n路分组中的所有信号位进行置位,其中,n为大于0且小于等于q的整数,q为分组个数,取m为大于等于1且小于n中的每一个整数,针对每一个整数分别执行将第n-m路分组中的第m个信号位进行复位,其余信号位保持不变;
计算单元,用于根据每一路分组中各个信号位的取值,分别计算每一路分组对应的频率统计值;
确定单元,用于根据每一路分组对应的频率统计值,确定目录Cache中需要替换的目标分组;
替换单元,用于将确定的所述目标分组中包括的目录条目进行替换。
优选地,所述计算单元,用于利用下述计算公式计算第n路分组对应的频率统计值:
lru_select[n]=(lru_n-1_1)&(lru_n-2_2)&(lru_n-3_3)&…&(lru_n-m_m)&(~lru_n_1)&(~lru_n_2)&(~lru_n_3)&…&(~lru_n_Pn)
其中,Pn为第n路分组分配的信号位的个数,lru_n-m_m为第n-m路分组中第m个信号位的取值,~lru_n_Pn为第n路分组中第Pn个信号位的取值的取反。
优选地,所述确定单元,用于将频率统计值为1的分组确定目录Cache中需要替换的目标分组。
优选地,所述分配单元,用于为第n路分组分配q-n个信号位。
优选地,所述划分单元,用于将当前目录Cache中的所有目录条目划分为8路分组;或,将当前目录Cache中的所有目录条目划分为16路分组;或,将当前目录Cache中的所有目录条目划分为32路分组。
本发明实施例提供了一种对目录条目进行替换的方法及装置,通过对当前目录Cache中所有目录条目进行划分,并为划分的每一路分组分配信号位,在一致性报文对应的目录条目位于第n路分组时,通过将第n路分组中的所有信号位进行置位,以及取m为大于等于1且小于n中的每一个整数,针对每一个整数分别执行将第n-m路分组中的第m个信号位进行复位,其余信号位保持不变,并计算每一路分组的频率统计值,根据每一路分组的频率统计值,使得在替换目录Cache的目录条目时,以一个组为单位进行替换,相对于现有技术的以一个目录条目为单位进行替换的方式,节省了替换时间从而节约了***资源。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种对目录条目进行替换的方法,将当前目录高速缓存Cache中的所有目录条目划分为两路以上的分组,为每一路分组分别分配零个以上的信号位,其中,各路分组中零个以上的信号位按照预设顺序进行排列;该方法可以包括以下步骤:
步骤101:在确定接收到的一致性报文所对应的目录条目位于当前目录Cache中的第n路分组时,将第n路分组中的所有信号位进行置位,其中,n为大于0且小于等于q的整数,q为分组个数,取m为大于等于1且小于n中的每一个整数,针对每一个整数分别执行将第n-m路分组中的第m个信号位进行复位,其余信号位保持不变。
步骤102:根据每一路分组中各个信号位的取值,分别计算每一路分组对应的频率统计值。
步骤103:根据每一路分组对应的频率统计值,确定目录Cache中需要替换的目标分组。
步骤104:将确定的所述目标分组中包括的目录条目进行替换。
根据上述方案,通过对当前目录Cache中所有目录条目进行划分,并为划分的每一路分组分配信号位,在一致性报文对应的目录条目位于第n路分组时,通过将第n路分组中的所有信号位进行置位,以及取m为大于等于1且小于n中的每一个整数,针对每一个整数分别执行将第n-m路分组中的第m个信号位进行复位,其余信号位保持不变,并计算每一路分组的频率统计值,根据每一路分组的频率统计值,使得在替换目录Cache的目录条目时,以一个组为单位进行替换,相对于现有技术的以一个目录条目为单位进行替换的方式,节省了替换时间从而节约了***资源。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
如图2所示,本发明实施例提供了一种对目录条目进行替换的方法,该方法可以包括以下步骤:
步骤201:将当前目录Cache中所有目录条目划分为两路以上的分组。
例如,当前目录Cache中包括100条目录条目,将这100条目录条目进行划分,划分的分组个数q为两路以上,例如,将当前目录Cache中的所有目录条目划分为8路分组;或,将当前目录Cache中的所有目录条目划分为16路分组;或,将当前目录Cache中的所有目录条目划分为32路分组。其中,q为大于等于2的整数。
其中,每一路分组中包括的目录条目可以任意设定。
步骤202:为每一路分组分别分配零个以上的信号位。
若将前目录Cache中所有目录条目划分为n路分组,那么为第n路分组分配的信号位的个数为:Pn=q-n,且为第n路分组分配的这(q-n)个信号位是:lru_n_1、lru_n_2、lru_n_3、…、lru_n_Pn。其中,n为大于0且小于等于q的整数,Pn是大于等于0小于分组个数q的整数。
本实施例以将当前目录Cache中所有目录条目划分为8路分组为例进行说明,将当前目录Cache中所有目录条目划分为第1路分组、第2路分组、第3路分组、第4路分组、第5路分组、第6路分组、第7路分组、第8路分组。
根据划分的8路的分组,为第n路(此时n为1、2、3、…、8)分组分配的信号位按照预设顺序进行排列,此时第n路分组的第m个信号位为lru_n_m:
第1路分组,分配7个信号位:lru_1_1,lru_1_2,lru_1_3,lru_1_4,lru_1_5,lru_1_6,lru_1_7;
第2路分组,分配6个信号位:lru_2_1,lru_2_2,lru_2_3,lru_2_4,lru_2_5,lru_2_6;
第3路分组,分配5个信号位:lru_3_1,lru_3_2,lru_3_3,lru_3_4,lru_3_5;
第4路分组,分配4个信号位:lru_4_1,lru_4_2,lru_4_3,lru_4_4;
第5路分组,分配3个信号位:lru_5_1,lru_5_2,lru_5_3;
第6路分组,分配2个信号位:lru_6_1,lru_6_2;
第7路分组,分配1个信号位:lru_7_1;
第8路分组,分配0个信号位。
步骤203:接收一致性报文,确定一致性报文所对应的目录条目位于当前目录Cache中的分组。若一致性报文所对应的目录条目位于当前目录Cache中的第n路分组时,将第n路分组中的所有信号位进行置位,取m为大于等于1且小于n中的每一个整数,针对每一个整数分别执行将第n-m路分组中的第m个信号位进行复位,其余信号位保持不变。
本实施例的置位是指将信号位取值为1,本实施例的复位是指将信号位取值为0。
当一致性报文所对应的目录条目位于当前目录Cache中的第1路分组时,将第1路分组的所有信号位:lru_1_1,lru_1_2,lru_1_3,lru_1_4,lru_1_5,lru_1_6,lru_1_7均置位1,其余信号位保持不变。
当一致性报文所对应的目录条目位于当前目录Cache中的第2路分组时,将第2路分组的所有信号位:lru_2_1,lru_2_2,lru_2_3,lru_2_4,lru_2_5,lru_2_6均置位1,将信号位lru_1_1复位0,其余信号位保持不变。
当一致性报文所对应的目录条目位于当前目录Cache中的第3路分组时,将第3路分组的所有信号位:lru_3_1,lru_3_2,lru_3_3,lru_3_4,lru_3_5均置位1,将信号位lru_1_2,lru_2_1复位0,其余信号位保持不变。
当一致性报文所对应的目录条目位于当前目录Cache中的第4路分组时,将第4路分组的所有信号位:lru_4_1,lru_4_2,lru_4_3,lru_4_4均置位1,将信号位lru_1_3,lru_2_2,lru_3_1复位0,其余信号位保持不变。
当一致性报文所对应的目录条目位于当前目录Cache中的第5路分组时,将第5路分组的所有信号位:lru_5_1,lru_5_2,lru_5_3均置位1,将信号位lru_1_4,lru_2_3,lru_3_2,lru_4_1复位0,其余信号位保持不变。
当一致性报文所对应的目录条目位于当前目录Cache中的第6路分组时,将第6路分组的所有信号位:lru_6_1,lru_6_2均置位1,将信号位lru_1_5,lru_2_4,lru_3_3,lru_4_2,lru_5_1复位0,其余信号位保持不变。
当一致性报文所对应的目录条目位于当前目录Cache中的第7路分组时,将第7路分组的所有信号位:lru_7_1置位1,将信号位lru_1_6,lru_2_5,lru_3_4,lru_4_3,lru_5_2,lru_6_1复位0,其余信号位保持不变。
当一致性报文所对应的目录条目位于当前目录Cache中的第8路分组时,将信号位lru_1_7,lru_2_6,lru_3_5,lru_4_4,lru_5_3,lru_6_2,lru_7_1复位0,其余信号位保持不变。
步骤204:在预设时间段确定每一路分组中各个信号位的取值,分别计算每一路分组对应的频率统计值。
在本实施例中,可以预先设置一个时间段,每当到达这个时间段时,确定每一路分组中各个信号位的取值。
本实施例中,可以利用下式(1)计算第n路分组对应的频率统计值:
lru_select[n]=(lru_n-1_1)&(lru_n-2_2)&(lru_n-3_3)&…&(lru_n-m_m)&(~lru_n_1)&(~lru_n_2)&(~lru_n_3)&…&(~lru_n_Pn) (1)
其中,lru_n-m_m为第n-m路分组中第m个信号位的取值,~lru_n_Pn为第n路分组中第Pn个信号位的取值的取反。
以8路分组为例,下面是每一路分组的频率统计值:
第1路分组的lru_select[1]=(~lru_1_1)&(~lru_1_2)&(~lru_1_3)&(~lru_1_4)&(~lru_1_5)&(~lru_1_6)&(~lru_1_7);
第2路分组的lru_select[2]=(lru_1_1)&(~lru_2_1)&(~lru_2_2)&(~lru_2_3)&(~lru_2_4)&(~lru_2_5)&(~lru_2_6);
第3路分组的lru_select[3]=(lru_2_1)&(lru_1_2)&(~lru_3_1)&(~lru_3_2)&(~lru_3_3)&(~lru_3_4)&(~lru_3_5);
第4路分组的lru_select[4]=(lru_3_1)&(lru_2_2)&(lru_1_3)&(~lru_4_1)&(~lru_4_2)&(~lru_4_3)&(~lru_4_4);
第5路分组的lru_select[5]=(lru_4_1)&(lru_3_2)&(lru_2_3)&(lru_1_4)&(~lru_5_1)&(~lru_5_2)&(~lru_5_3);
第6路分组的lru_select[6]=(lru_5_1)&(lru_4_2)&(lru_3_3)&(lru_2_4)&(lru_1_5)&(~lru_6_1)&(~lru_6_2);
第7路分组的lru_select[7]=(lru_6_1)&(lru_5_2)&(lru_4_3)&(lru_3_4)&(lru_2_5)&(lru_1_6)&(~lru_7_1);
第8路分组的lru_select[8]=(lru_7_1)&(lru_6_2)&(lru_5_3)&(lru_4_4)&(lru_3_5)&(lru_2_6)&(lru_1_7)。
对于上述8路分组分别对应的频率统计值可能为1或0。
步骤205:根据每一路分组对应的频率统计值,确定目录Cache中需要替换的目标分组。
在本实施例中,设置频率统计值为1的那一路分组为需要替换的目标分组。
步骤206:将确定的所述目标分组中包括的目录条目进行替换。
根据上述方案,通过对当前目录Cache中所有目录条目进行划分,并为划分的每一路分组分配信号位,在一致性报文对应的目录条目位于第n路分组时,通过将第n路分组中的所有信号位进行置位,以及取m为大于等于1且小于n中的每一个整数,针对每一个整数分别执行将第n-m路分组中的第m个信号位进行复位,其余信号位保持不变,并计算每一路分组的频率统计值,根据每一路分组的频率统计值,使得在替换目录Cache的目录条目时,以一个组为单位进行替换,相对于现有技术的以一个目录条目为单位进行替换的方式,节省了替换时间从而节约了***资源。
如图3、图4所示,本发明实施例提供了一种对目录条目进行替换的装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例对目录条目进行替换的装置所在设备的一种硬件结构图,除了图3所示的CPU、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的对目录条目进行替换的装置40包括:
划分单元401,用于将当前目录高速缓存Cache中的所有目录条目划分为两路以上的分组;
分配单元402,用于为每一路分组分别分配零个以上的信号位,其中,各路分组中零个以上的信号位按照预设顺序进行排列;
置位复位单元403,用于在确定接收到的一致性报文所对应的目录条目位于当前目录Cache中的第n路分组时,将第n路分组中的所有信号位进行置位,其中,n为大于0且小于等于q的整数,q为分组个数,取m为大于等于1且小于n中的每一个整数,针对每一个整数分别执行将第n-m路分组中的第m个信号位进行复位,其余信号位保持不变;
计算单元404,用于根据每一路分组中各个信号位的取值,分别计算每一路分组对应的频率统计值;
确定单元405,用于根据每一路分组对应的频率统计值,确定目录Cache中需要替换的目标分组;
替换单元406,用于将确定的所述目标分组中包括的目录条目进行替换。
可选的,所述计算单元404,用于利用下述计算公式计算第n路分组对应的频率统计值:
lru_select[n]=(lru_n-1_1)&(lru_n-2_2)&(lru_n-3_3)&…&(lru_n-m_m)&(~lru_n_1)&(~lru_n_2)&(~lru_n_3)&…&(~lru_n_Pn)
其中,Pn为第n路分组分配的信号位的个数,lru_n-m_m为第n-m路分组中第m个信号位的取值,~lru_n_Pn为第n路分组中第Pn个信号位的取值的取反。
可选的,所述确定单元405,用于将频率统计值为1的分组确定目录Cache中需要替换的目标分组。
可选的,所述分配单元402,用于为第n路分组分配q-n个信号位。
可选的,所述划分单元401,用于将当前目录Cache中的所有目录条目划分为8路分组;或,将当前目录Cache中的所有目录条目划分为16路分组;或,将当前目录Cache中的所有目录条目划分为32路分组。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。