System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 双链表老化方法、电子设备及介质技术_技高网

双链表老化方法、电子设备及介质技术

技术编号:44229472 阅读:1 留言:0更新日期:2025-02-11 13:33
本申请涉及计算机技术领域并提供一种双链表老化方法、电子设备及介质。该方法面对全关联缓存下的表项老化的复杂度高和执行效率低下的问题,利用第一链表和第二链表构成双链表设计来实现双链表老化方法,将对缓存表中的表项执行的操作例如表项访问和表项修改,转换为命中第一链表中的第一索引号的第一元素,进而触发对第一链表和第二链表分别执行对应的三方互换操作,实现了基于活跃度的排序优化,在表项没有满时可以进行表项精确老化,在表项满时可以替换不活跃的元素,简化了电路复杂度,节省了内存资源的占用,有助于实现全关联缓存,而且有效地克服了出现重复磋商和反复建链的问题。

【技术实现步骤摘要】

本申请涉及计算机,尤其涉及一种双链表老化方法、电子设备及介质


技术介绍

1、在通信、高性能计算机等应用领域,需要广泛应用缓存来存储各种表项,并且需要通过对缓存表项的老化管理,在有限的存储空间的限制下老化一些表项同时加入新的表项。现有技术中,一种老化方法是时间老化机制,也就是设置在一定时间后将没有使用的表项老化掉,或者从所有的表项中选择最小剩余生存时间的表项老化掉,但是时间老化机制可能出现重复磋商和反复建链的问题,例如被移除的表项可能在当前具有高活跃度,从而影响某些场景下的数据传输性能。另一种老化方法是最近最少使用(least recentlyused,lru),也就是将最近最少使用的表项老化掉,但是lru需要为每个表项单独维护计数器以便统计最近一段时间的被访问次数,这样导致电路复杂度高,难以做到全关联缓存,并且在表项规模较大的情况下执行效率低下。

2、为此,本申请提供了一种双链表老化方法、电子设备及介质,不仅可以实现全关联缓存下的表项老化机制,而且不需要为每一个表项或者每一个元素单独记录和维护访问次数和老化时间,也避免了随机移除和反复建链的损耗,有助于提高资源利用率和数据传输性能。


技术实现思路

1、第一方面,本申请提供了一种双链表老化方法。所述双链表老化方法包括:基于缓存表中的表项,生成第一链表,其中,所述第一链表中的元素与所述缓存表中的表项一一对应,并且,所述第一链表中的元素按照第一表项索引从小到大排列;基于所述第一链表,生成第二链表,其中,所述第二链表中的元素按照第二表项索引从小到大排列,所述第二链表中的具有所述第二表项索引中的最大索引号的元素对应所述第一链表中的具有所述第一表项索引中的次最小索引号的元素,所述第二链表中的具有所述第二表项索引中的次最大索引号的元素对应所述第一链表中的具有所述第一表项索引中的最小索引号的元素;至少在生成所述第二链表之后,初始化链表头部指针从而指向所述第一链表中的具有所述第一表项索引中的最小索引号的元素,以及,初始化链表尾部指针从而指向所述第二链表中的具有所述第二表项索引中的最大索引号的元素;响应于命中所述第一链表中的具有所述第一表项索引中的第一索引号的第一元素,确定所述第一链表中的紧邻在所述第一元素之前的具有第二索引号的第二元素和紧邻在所述第一元素之后的具有第三索引号的第三元素,对所述第一链表执行从所述第一索引号所对应的元素到所述第三索引号所对应的元素,从所述第三索引号所对应的元素到所述链表头部指针所指向的元素,以及从所述链表头部指针所指向的元素到所述第一索引号所对应的元素的第一类三方互换操作,并且,对所述第二链表执行从所述第一索引号所对应的元素到所述第二索引号所对应的元素,从所述第二索引号所对应的元素到所述链表尾部指针所指向的元素,以及从所述链表尾部指针所指向的元素到所述第一索引号所对应的元素的第二类三方互换操作,然后,在执行所述第一类三方互换操作和所述第二类三方互换操作之后,更新所述链表头部指针从而指向所述第一链表中的所述第一索引号所对应的元素以及保持所述链表尾部指针不变。

2、通过本申请的第一方面,面对全关联缓存下的表项老化的复杂度高和执行效率低下的问题,利用第一链表和第二链表构成双链表设计来实现双链表老化方法,将对缓存表中的表项执行的操作例如表项访问和表项修改,转换为命中第一链表中的第一索引号的第一元素,进而触发对第一链表和第二链表分别执行对应的三方互换操作,实现了基于活跃度的排序优化,在表项没有满时可以进行表项精确老化,在表项满时可以替换不活跃的元素,简化了电路复杂度,节省了内存资源的占用,有助于实现全关联缓存,而且有效地克服了出现重复磋商和反复建链的问题。

3、在本申请的第一方面的一种可能的实现方式中,当所述缓存表中的与所述第一链表中的所述第一元素所对应的表项被访问或者修改时,命中所述第一链表中的具有所述第一表项索引中的所述第一索引号的所述第一元素。

4、在本申请的第一方面的一种可能的实现方式中,所述链表头部指针用于指向所述缓存表中的上一次被访问的表项所对应的所述第一链表中的元素。

5、在本申请的第一方面的一种可能的实现方式中,所述第一类三方互换操作用于使得所述第一链表中的活跃度较高的元素朝着所述第一链表的头部移动,并且,所述第二类三方互换操作用于使得所述第二链表中的活跃度较低的元素朝着所述第二链表的尾部移动。

6、在本申请的第一方面的一种可能的实现方式中,所述双链表老化方法还包括:响应于移除所述第二链表中的具有所述第二表项索引中的第四索引号的第四元素,确定所述第一链表中的紧邻在所述第四元素之前的具有第五索引号的第五元素和紧邻在所述第四元素之后的具有第六索引号的第六元素,对所述第一链表执行从所述第四索引号所对应的元素到所述第六索引号所对应的元素,从所述第六索引号所对应的元素到所述链表头部指针所指向的元素,以及从所述链表头部指针所指向的元素到所述第四索引号所对应的元素的第三类三方互换操作,并且,对所述第二链表执行从所述第四索引号所对应的元素到所述第五索引号所对应的元素,从所述第五索引号所对应的元素到所述链表尾部指针所指向的元素,以及从所述链表尾部指针所指向的元素到所述第四索引号所对应的元素的第四类三方互换操作,然后,在执行所述第三类三方互换操作和所述第四类三方互换操作之后,更新所述链表尾部指针从而指向所述第二链表中的所述第四索引号所对应的元素以及保持所述链表头部指针不变。

7、在本申请的第一方面的一种可能的实现方式中,所述第一类三方互换操作和所述第三类三方互换操作均通过第一互换电路实现,所述第二类三方互换操作和所述第四类三方互换操作均通过第二互换电路实现。

8、在本申请的第一方面的一种可能的实现方式中,当所述缓存表中的与所述第二链表中的所述第四元素所对应的表项被删除时,移除所述第一链表中的具有所述第一表项索引中的所述第四索引号的所述第四元素。

9、在本申请的第一方面的一种可能的实现方式中,所述链表尾部指针用于指向所述缓存表中的上一次被删除的表项所对应的所述第二链表中的元素。

10、在本申请的第一方面的一种可能的实现方式中,所述第三类三方互换操作用于使得所述第一链表中的活跃度较高的元素朝着所述第一链表的头部移动,并且,所述第四类三方互换操作用于使得所述第二链表中的活跃度较低的元素朝着所述第二链表的尾部移动。

11、在本申请的第一方面的一种可能的实现方式中,所述双链表老化方法还包括:响应于添加新表项到所述缓存表,添加与所述新表项对应的元素到所述第二链表中的所述链表尾部指针。

12、在本申请的第一方面的一种可能的实现方式中,当所述缓存表已满时,使用与所述新表项对应的元素替换所述第二链表中的所述链表尾部指针所指向的元素。

13、在本申请的第一方面的一种可能的实现方式中,所述双链表老化方法还包括:在添加与所述新表项对应的元素到所述第二链表中的所述链表尾部指针之后,使用所述链表尾部指针的指向作为与所述新表项对应的元素在本文档来自技高网...

【技术保护点】

1.一种双链表老化方法,其特征在于,所述双链表老化方法包括:

2.根据权利要求1所述的双链表老化方法,其特征在于,当所述缓存表中的与所述第一链表中的所述第一元素所对应的表项被访问或者修改时,命中所述第一链表中的具有所述第一表项索引中的所述第一索引号的所述第一元素。

3.根据权利要求1所述的双链表老化方法,其特征在于,所述链表头部指针用于指向所述缓存表中的上一次被访问的表项所对应的所述第一链表中的元素。

4.根据权利要求1所述的双链表老化方法,其特征在于,所述第一类三方互换操作用于使得所述第一链表中的活跃度较高的元素朝着所述第一链表的头部移动,并且,所述第二类三方互换操作用于使得所述第二链表中的活跃度较低的元素朝着所述第二链表的尾部移动。

5.根据权利要求1所述的双链表老化方法,其特征在于,所述双链表老化方法还包括:

6.根据权利要求5所述的双链表老化方法,其特征在于,所述第一类三方互换操作和所述第三类三方互换操作均通过第一互换电路实现,所述第二类三方互换操作和所述第四类三方互换操作均通过第二互换电路实现。

7.根据权利要求5所述的双链表老化方法,其特征在于,当所述缓存表中的与所述第二链表中的所述第四元素所对应的表项被删除时,移除所述第一链表中的具有所述第一表项索引中的所述第四索引号的所述第四元素。

8.根据权利要求5所述的双链表老化方法,其特征在于,所述链表尾部指针用于指向所述缓存表中的上一次被删除的表项所对应的所述第二链表中的元素。

9.根据权利要求5所述的双链表老化方法,其特征在于,所述第三类三方互换操作用于使得所述第一链表中的活跃度较高的元素朝着所述第一链表的头部移动,并且,所述第四类三方互换操作用于使得所述第二链表中的活跃度较低的元素朝着所述第二链表的尾部移动。

10.根据权利要求5所述的双链表老化方法,其特征在于,所述双链表老化方法还包括:

11.根据权利要求10所述的双链表老化方法,其特征在于,当所述缓存表已满时,使用与所述新表项对应的元素替换所述第二链表中的所述链表尾部指针所指向的元素。

12.根据权利要求10所述的双链表老化方法,其特征在于,所述双链表老化方法还包括:

13.根据权利要求1所述的双链表老化方法,其特征在于,所述第一链表关联所述缓存表中的所有表项。

14.根据权利要求1所述的双链表老化方法,其特征在于,当所述缓存表中的表项被访问或者修改时,对所述第一链表和所述第二链表进行改链操作,当所述缓存表中的表项被删除时,对所述第一链表和所述第二链表进行拆链操作,当所述缓存表被添加表项时,对所述第一链表和所述第二链表进行建链操作。

15.一种电子设备,其特征在于,所述电子设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至14中任一项所述的方法。

16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至14中任一项所述的方法。

...

【技术特征摘要】

1.一种双链表老化方法,其特征在于,所述双链表老化方法包括:

2.根据权利要求1所述的双链表老化方法,其特征在于,当所述缓存表中的与所述第一链表中的所述第一元素所对应的表项被访问或者修改时,命中所述第一链表中的具有所述第一表项索引中的所述第一索引号的所述第一元素。

3.根据权利要求1所述的双链表老化方法,其特征在于,所述链表头部指针用于指向所述缓存表中的上一次被访问的表项所对应的所述第一链表中的元素。

4.根据权利要求1所述的双链表老化方法,其特征在于,所述第一类三方互换操作用于使得所述第一链表中的活跃度较高的元素朝着所述第一链表的头部移动,并且,所述第二类三方互换操作用于使得所述第二链表中的活跃度较低的元素朝着所述第二链表的尾部移动。

5.根据权利要求1所述的双链表老化方法,其特征在于,所述双链表老化方法还包括:

6.根据权利要求5所述的双链表老化方法,其特征在于,所述第一类三方互换操作和所述第三类三方互换操作均通过第一互换电路实现,所述第二类三方互换操作和所述第四类三方互换操作均通过第二互换电路实现。

7.根据权利要求5所述的双链表老化方法,其特征在于,当所述缓存表中的与所述第二链表中的所述第四元素所对应的表项被删除时,移除所述第一链表中的具有所述第一表项索引中的所述第四索引号的所述第四元素。

8.根据权利要求5所述的双链表老化方法,其特征在于,所述链表尾部指针用于指向所述缓存表中的上一次被删除的表项所对应的所述第二链表中的元素。

9.根据权利要求5所...

【专利技术属性】
技术研发人员:彭海远
申请(专利权)人:深圳星云智联科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1