CN106126434A - 中央处理器的缓存区的缓存行的替换方法及其装置 - Google Patents
中央处理器的缓存区的缓存行的替换方法及其装置 Download PDFInfo
- Publication number
- CN106126434A CN106126434A CN201610460009.XA CN201610460009A CN106126434A CN 106126434 A CN106126434 A CN 106126434A CN 201610460009 A CN201610460009 A CN 201610460009A CN 106126434 A CN106126434 A CN 106126434A
- Authority
- CN
- China
- Prior art keywords
- cache lines
- priority
- application program
- buffer area
- cache
- 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.)
- Granted
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
-
- 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
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
本发明适用于计算机技术领域,提供了一种中央处理器缓存区的缓存行的替换方法及装置,所述方法包括:步骤1,根据分别缓存在所述中央处理器缓存区的多个缓存行中的多个应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;步骤2,将所述中央处理器缓存区中需要被替换的缓存行进行替换。借此,本发明提高了实时性数据块的命中率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种中央处理器的缓存区的缓存行的替换方法及其装置。
背景技术
随着互联网服务、社交网络以及云计算等新兴应用的迅速兴起,数据中心处理的并行请求越来越多密集。如何保证大规模访问请求的实时性,是体系结构所面临的新挑战。
“存储墙”是冯诺依曼体系结构的最大挑战,也是影响应用程序实时性的主要因素。中央处理器Cache(缓存区)在缓解“存储墙”问题方面扮演着重要的角色,很大程度上弥补了CPU和存储器的速度鸿沟。因此,中央处理器Cache在保证应用程序实时性方面也存在着重要的影响。通过在中央处理器Cache替换策略上添加对实时性的考虑,可以提高应用程序的实时性,进而提高网络服务质量。
目前,针对网络服务的QoS(Quality of Service,服务质量)的缓存策略,目前主要分为两部分内容:一部分是针对流媒体代理缓存的替换策略的优化,这部分缓存主要针对于存在内存和硬盘中的文件存储区进行优化,非传统中央处理器核与内存之间的Cache;另一部分是对于CPU内部的Cache的替换策略的优化,利用实时性标签对Cache进行区域划分。然而,当前的Cache划分方式需要对Cache及其控制电路进行大量的修改,增加了功耗、面积的开销,且不易扩展。
综上可知,现有的中央处理器的缓存区的缓存行的替换技术在实际使用上,显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种中央处理器缓存区的缓存行的替换方法及装置,以提高实时性数据块的命中率。
为了实现上述目的,本发明提供一种中央处理器缓存区的缓存行的替换方法,所述方法包括:
步骤1,根据分别缓存在所述中央处理器缓存区的多个缓存行中的多个应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;
步骤2,将所述中央处理器缓存区中需要被替换的缓存行进行替换。
根据所述的替换方法,所述在所述步骤1之前包括:
步骤21,在所述应用程序运行时,根据执行所述应用程序的任务的剩余时间对所述应用程序的任务进行优先级分类,并为每个所述优先级分类分配优选级标识值;
步骤22,在所述缓存行中为每个所述应用程序的任务添加优先级标识值。
根据所述的替换方法,所述步骤22包括:
在所述应用程序发生访存请求操作时,所述应用程序的优先级标识值随访存请求的地址一并发到对应的所述缓存行,并在所述缓存行发生第一次发生访问失效并需要回填操作时,将所述优先级标识值写入到所述对应的缓存行的优先级标识位中;
所述优先级标识值包括两位优先级标识位。
根据所述的替换方法,所述应用程序的任务被访问的时间间隔由一所述应用程序的任务所属的缓存行的计数器进行计数,在所述应用程序的任务被访问时,所述计数器的计数值置为0,反之所述应用程序的任务所属的缓存行的计数器的计数值加1;
所述优先级分类的级别越高,所述优先级标识值越小,反之,所述优先级标识值越大;
所述步骤1还包括:
在所述中央处理器缓存区的缓存行需要替换时,将计时所述应用程序被访问的时间间隔的计数器的计数值与所述优先级标识位标识的优先级标识值相加,将相加后所获得的数值最大的所述缓存行作为需要被替换的缓存行;和/或
在所述缓存区中的缓存行的被访问的时间间隔的计数器的计数值达到预设的最大值时,逐步降低所述缓存行的优先级标识值直到所述缓存行被访问或者被替换。
根据所述的替换方法,所述步骤2还包括:
步骤23,根据计算出的所述需要被替换的缓存行将所述中央处理器缓存区中对应的缓存行进行替换;
步骤24,刷新所述缓存区中其它缓存行的计数器的计数值。
为了实现本发明的另一发明目的,本发明还提供了一种中央处理器缓存区的缓存行的替换装置,所述替换装置包括:
计算模块,用于根据分别缓存在所述中央处理器缓存区的多个缓存行中的多个应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;
替换模块,用于将所述中央处理器缓存区中需要被替换的缓存行进行替换。
根据所述的替换装置,所述替换装置还包括:
优选级分类模块,用于在所述应用程序运行时,根据执行所述应用程序的任务的剩余时间对所述应用程序的任务进行优先级分类,并为每个所述优先级分类分配优选级标识值;
标识添加模块,用于在所述缓存行中为每个所述应用程序的任务添加优先级标识值。
根据所述的替换装置,所述标识添加模块在所述应用程序发生访存请求操作时,将所述应用程序的优先级标识值随访存请求的地址一并发到对应的所述缓存行,并在所述缓存行发生第一次发生访问失效并需要回填操作时,将所述优先级标识值写入到所述对应的缓存行的优先级标识位中;
所述优先级标识值包括两位优先级标识位。
根据所述的替换装置,所述应用程序的任务被访问的时间间隔由一所述应用程序的任务所属的缓存行的计数器进行计数,在所述应用程序的任务被访问时,所述计数器的计数值置为0,反之所述应用程序的任务所属的缓存行的计数器的计数值加1;
所述优先级分类的级别越高,所述优先级标识值越小,反之,所述优先级标识值越大;
所述计算模块包括:
计算子模块,用于在所述中央处理器缓存区的缓存行需要替换时,将计时所述应用程序被访问的时间间隔的计数器的计数值与所述优先级标识位标识的优先级标识值相加,将相加后所获得的数值最大的所述缓存行作为需要被替换的缓存行;和/或
降级子模块,用于在所述缓存区中的缓存行的被访问的时间间隔的计数器的计数值达到预设的最大值时,逐步降低所述缓存行的优先级标识值直到所述缓存行被访问或者被替换。
根据所述的替换装置,所述替换模块包括:
替换子模块,用于根据计算出的所述需要被替换的缓存行进行替换,将所述中央处理器缓存区中对应的缓存行进行替换;
刷新子模块,用于刷新所述缓存区中其它缓存行的计数器的计数值。
本发明通过根据分别缓存在所述中央处理器缓存区的多个缓存行中的多个应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;然后,根据计算获得的所述中央处理器缓存区中需要被替换的缓存行将所述中央处理器缓存区中需要被替换的缓存行进行替换。由此,不但考虑了缓存行中应用程序的任务的被访问的时间间隔,还考虑该任务的实时性,提高实时性数据块的命中率。具体的,将缓存区中的每个缓存行添加此行数据所属应用程序的优先级标识值,当缓存区发生访问失效时,按照传统Cache替换策略及缓存行的优先级信息进行综合衡量后替换。此外,本发明实施例中的操作系统需要支持将应用程序按照实时性需求进行优先级分类,并将优先级信息添加至访存数据包中,一起发送至Cache中。为了避免高优先级Cache行长时间未使用且因优先级较高长时间未被替换,而导致的Cache资源浪费的情况,对于高优先级Cache行长时间未被使用时需要逐步降低该Cache行的优先级,直到其被替换出Cache,由此优化了中央处理器缓存区的缓存行的替换方案。
附图说明
图1是本发明中央处理器缓存区的缓存行的替换装置的结构图;
图2是本发明中央处理器缓存区的缓存行的替换装置的结构图;
图3是本发明缓存区结构工作原理图;
图4是本发明中央处理器缓存区的缓存行的替换方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图1,在本发明的第一实施例中,提供了一种中央处理器缓存区的缓存行的替换装置100,替换装置100包括:
计算模块10,用于根据分别缓存在所述中央处理器缓存区的多个缓存行中的多个应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;
替换模块20,用于将所述中央处理器缓存区中需要被替换的缓存行进行替换。
在该实施例中,针对提高任务执行QoS的中央处理器缓存区(Cache)的缓存行的替换,提供了中央处理器缓存区的缓存行的替换装置100。计算模块10在所述中央处理器缓存区需要替换时,如在数据或指令缓存区(Cache)行进行替换时,在传统替换方式的基础上,还考虑了缓存行中缓存的应用程序的任务的实时性。该实时性包括如同一缓存组中的多个缓存行的各个应用程序的任务的优先次序。由此增加对任务QoS的权衡。具体的,计算模块10根据缓存于所述中央处理器缓存区的应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;然后替换模块20再根据计算模块10计算获得的所述中央处理器缓存区中需要被替换的缓存行,将所述中央处理器缓存区中对应的缓存行进行替换。由此,可以在进行中央处理器缓存区的缓存行的替换时,充分考虑应用程序的任务的优先级和被访问的时间间隔,可以提高实时性数据块的命中率。
参见图2,在本发明的第二实施例中,替换装置100还包括:
优选级分类模块30,用于在所述应用程序运行时,根据执行所述应用程序的任务的剩余时间对所述应用程序的任务进行优先级分类,并为每个所述优先级分类分配优选级标识值;
标识添加模块40,用于在所述缓存行中为每个所述应用程序的任务添加优先级标识值。
在该实施例中,需要优选级分类模块30对所述应用程序的任务的优先级进行分类。具体的,优选级分类模块30在所述应用程序运行时,根据执行所述应用程序的任务的剩余时间对所述应用程序的任务进行优先级分类。所述裕度时间是指执行应用程序的任务的剩余时间。由于如网络服务这样的高并发的请求,每个子任务可以理解为一个用户请求,而用户请求不能无限制等待服务器响应。因此,每个应用程序的任务都会有时间限定,例如多少毫秒如果没有反馈给用户的话,则定义为服务失败。所以这里的裕度时间为执行一个应用程序的任务剩余的存活时间,可以看成任务的倒计时时间。在优选级分类模块30对所述应用程序的任务进行优先级分类后,还为每个所述优先级分类分配优选级标识值;如任务A的优选级标识值为0,任务B优选级标识值为1,任务C优选级标识值为2。通过优选级标识值可知,任务A的优选级高于任务B和任务C。最后,标识添加模块40在所述中央处理器缓存区对应的缓存行中为所述应用程序的任务添加优先级标识。
参见图2,在本发明的第三实施例中,标识添加模块40在所述应用程序发生访存请求操作时,将所述应用程序的优先级标识值随访存请求的地址一并发到对应的所述缓存行,并在所述缓存行发生第一次发生访问失效并需要回填操作时,将所述优先级标识值写入到所述对应的缓存行的优先级标识位中;
所述优先级标识值包括两位优先级标识位。
具体的,所述应用程序的任务被访问的时间间隔由一所述应用程序的任务所属的缓存行的计数器进行计数,在所述应用程序的任务被访问时,所述计数器的计数值置为0,反之所述应用程序的任务所属的缓存行的计数器的计数值加1;所述优先级分类的级别越高,所述优先级标识值越小,反之,所述优先级标识值越大;
在该实施例中,在所述应用程序发生访存请求操作时,将所述应用程序的优先级标识值随访存请求的地址一并发到对应的所述缓存行,并在所述缓存行发生第一次发生访问失效并需要回填操作时,标识添加模块40将所述优先级标识值写入到所述对应的缓存行的优先级标识位中。所述优先级标识值包括两位优先级标识位,当然根据具体的设计需要也可以包括其他位数的优先级标识位,如1位或者是3位。在本实施例中以最近最久未使用(LRU,Least Recently Used近期最少使用算法)为例进行描述(对其它替换算法同样适用)。LRU算法,即替换在最近时间里被CPU访问次数最少的行(其原理是在每个行中设置一个计数器,某行被CPU访问,则置0,其它增1。在一段时间内,如此循环,直到Cache访问miss,需要替换时,把计数值最大的替换出去)。假如LRU替换策略以2bits为替换标识位,则初始化时所有Cache行的标志位为“00”,当Cache行被访问一次时,计数器归零,其它标志位自增1(“11”除外)。
在本发明的一个实施方式中,从中央处理器流水线里面发出的访存消息需携带此应用程序的优先级标识值,应用程序的优先级分类不能超过Cache硬件标识位的最大宽度。Cache要在每个Cache行添加标识位,用以标识本行数据所属应用程序的优先级。标识位的宽度可按照应用程序实时性分类特点及硬件开销进行权衡设置,如可以选为两位。
参见图2,在本发明的第四实施例中,计算模块10包括:
计算子模块11,用于在所述中央处理器缓存区的缓存行需要替换时,将计时所述应用程序被访问的时间间隔的计数器的计数值与所述优先级标识位标识的优先级标识值相加,将相加后所获得的数值最大的所述缓存行作为需要被替换的缓存行;和/或
降级子模块12,用于在所述缓存区中的缓存行的被访问的时间间隔的计数器的计数值达到预设的最大值时,逐步降低所述缓存行的优先级标识值直到所述缓存行被访问或者被替换。
所述替换模块20包括:
替换子模块21,用于根据计算出的所述需要被替换的缓存行进行替换,将所述中央处理器缓存区中对应的缓存行进行替换;
刷新子模块22,用于刷新所述缓存区中其它缓存行的计数器的计数值。
在该实施例中,通过计算子模块11将计时所述应用程序被访问的时间间隔的计数器的计数值与所述优先级标识位标识的优先级标识值相加,将所述获得的数值最大的所述缓存行作为需要被替换的缓存行;计算子模块11需要按照传统替换算法(如LRU)以及缓存行所属应用的优先级进行综合判断,同等访问时间间隔下,低优先级的缓存行被优先替换出缓存区。替换子模块21的替换的条件是Victim=Max(Counter+TQoS),Counter为时间间隔(以LRU算法为例),TQoS标识的为优先级(数值越小优先级越高)。在本发明的一个实施方式中,需要替换时,按照顺序将标志位最大的Cache替换掉,因为此Cache行为最近最少使用。假设有一个三Cache line的Cache组,分别标记为Line 1,Line 2,Line3。其中有3个任务A,B,C,共享此Cache。3任务的优先级为PA>PC>PB,在Cache行中添加2bits的标识位,标识任务的优先级。在面向QoS的Cache替换策略中,既考虑使用时间间隔,也需要考虑缓存行中的应用程序的任务实时性的优先级。替换的条件是Max(Line 1,Line 2,Line 3)=Counter+TQoS。为此,本发明需要添加实时性优先级标识域,标识Cache行所属应用的实时性优先级。当Cache访问miss时,被替换的行用公式表示为:Victim Cache Line=MAX(Counter+Priority),其中CacheCounter为LRU算法中的计数器,Priority为Cache行所属应用的实时性优先级。另外,在替换完成后,刷新子模块22刷新所述缓存区中其它缓存行的计数器的计数值。对于所述缓存区中的缓存行的被访问的时间间隔的计数器的计数值达到预设的最大值时,该预设的最大值根据硬件条件决定,如可以为11,当然,还可以是其他的数值。降级子模块12逐步降低所述缓存行的优先级标识值直到所述缓存行被访问或者被替换。
参见图3,在本发明的一个实施例中,提供了Cache结构和工作原理,其中101为从访存部件发往Cache的访存请求地址,包括Tag位、Index位、Offset位以及本发明需要新添加的TQoS位,用以标记本次请求所属应用的优先级信息;102为一对多选择器,根据地址的Index位选择Cache组;103为Cache Tag位,用以寻址Cache行;104为Cache数据域;105为本发明添加的TQoS域,用以标识本Cache行所属应用的优先级信息;106为Cache行计数器,用以LRU替换算法中的访问时间计数;107为本实验新添加的替换Cache计算单元,根据收集到的TQoS域信息和LRU Counter信息通过公式Victim Cache Line=MAX(Counter+Priority)计算出相应的Victim Cache;108为数据选通单元,根据Tag对比结果将命中的Cache数据配合109多路选择器发送出去,或是将Cache失效信号发送到下一级Cache或者存储器。
参见图4,在本发明的第五实施例中,提供了一种中央处理器缓存区的缓存行的替换方法,所述方法包括:
步骤S401中,根据分别缓存在所述中央处理器缓存区的多个缓存行中的多个应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;由计算模块10实现。
步骤S401中,将所述中央处理器缓存区中需要被替换的缓存行进行替换。由替换模块20实现。
在该实施例中,在中央处理器缓存区需要替换时,如在数据或指令Cache行进行替换的时候,则在传统的中央处理器缓存区的缓存行的替换策略基础之上增加对缓存行中缓存的应用程序任务QoS的权衡。该QoS的权衡包括:根据缓存行中缓存的应用程序的任务的优选级,判断该应用程序的任务的实时性,或者说是紧急性。将需要优选处理的应用程序的任务结合其被访问的时间间隔作为计算依据,由计算模块10计算所述中央处理器缓存区中需要被替换的缓存行;然后替换模块20根据计算模块10计算的结果将所述中央处理器缓存区中对应的缓存行进行替换。在本发明的一个实施方式中,具体的实现方法是在操作系统层,根据每个任务实时性的不同,对任务发出的访存请求添加实时性标签。在Cache行填充时,将实时性标签写入实时性信息位。当替换的时候,在考虑传统替换策略条件的同时,需要考虑此行所属任务的优先级。而优选级通过优选级标识值进行标识。在同等其它情况下,低优先级的Cache行先于高优先级被替换出去,这样可以延缓实时性高的数据被替换出Cache,相应的提高实时性数据块的命中率。
在本发明的第六实施例中,所述在所述步骤S401之前包括:
优选级分类模块30在所述应用程序运行时,根据执行所述应用程序的任务的剩余时间对所述应用程序的任务进行优先级分类,并为每个所述优先级分类分配优选级标识值;
标识添加模块40在所述缓存行中为每个所述应用程序的任务添加优先级标识值。
而所述在所述缓存行中为每个所述应用程序的任务添加优先级标识值的步骤包括:
标识添加模块40在所述应用程序发生访存请求操作时,所述应用程序的优先级标识值随访存请求的地址一并发到对应的所述缓存行,并在所述缓存行发生第一次发生访问失效并需要回填操作时,将所述优先级标识值写入到所述对应的缓存行的优先级标识位中;所述优先级标识值包括两位优先级标识位。
其中,所所述应用程序的任务被访问的时间间隔由一所述应用程序的任务所属的缓存行的计数器进行计数,在所述应用程序的任务被访问时,所述计数器的计数值置为0,反之所述应用程序的任务所属的缓存行的计数器的计数值加1;所述优先级分类的级别越高,所述优先级标识值越小,反之,所述优先级标识值越大;
在该实施例中,在应用程序运行时,优选级分类模块30根据应用程序的裕度时间,对程序进行优先级分类。当应用程序在流水线执行过程中发生访存操作时,应用程序的优先级随访存请求地址(101)一并发往Cache。当Cache出现Cache行回填操作时,标识添加模块40将TQoS值写入到相应的Cache行的优先级标识域(105)中。即当Cache行第一次发生Miss且需要被填充时,TQoS被填充至相应的标识位。Cache行更新时,TQoS值也相应的更新。
此外,而步骤S401包括:
计算子模块11在所述中央处理器缓存区的缓存行需要替换时,将计时所述应用程序被访问的时间间隔的计数器的计数值与所述优先级标识位标识的优先级标识值相加,将相加后所获得的数值最大的所述缓存行作为需要被替换的缓存行;和/或
降级子模块12在在所述缓存区中的缓存行的被访问的时间间隔的计数器的计数值达到预设的最大值时,逐步降低所述缓存行的优先级标识值直到所述缓存行被访问或者被替换。
所述步骤S401包括:
替换子模块21根据计算出的所述需要被替换的缓存行将所述中央处理器缓存区中对应的缓存行进行替换;
刷新子模块22刷新所述缓存区中其它缓存行的计数器的计数值。
具体的,当Cache行已被填充过,之后Cache行替换需根据公式Victim CacheLine=MAX(Counter+Priority)=Counter+TQoS,计算子模块11计算出(107)需要被替换的Cache行。出于公平性的考虑,为了避免高优先级的任务当某一Cache行的Counter达到“11”时,再一次刷新时,之前“11”对应的Cache行内容的优先级就需要由降级子模块12逐步降低,直到被在此访问或者被替换出Cache。这样可以防止优先级非常高的任务长期占据Cache行的现象发生。
在本发明的一个实施例中,以最近最久未使用(LRU,Least Recently Used近期最少使用算法)为例进行描述(对其它替换算法同样适用)。LRU算法,即替换在最近时间里被CPU访问次数最少的行(其原理是在每个行中设置一个计数器,某行被CPU访问,则置0,其它增1。在一段时间内,如此循环,直到Cache访问miss,需要替换时,把计数值最大的替换出去)。假如LRU替换策略以2bits为替换标识位,则初始化时所有Cache行的标志位为“00”,当Cache行被访问一次时,计数器归零,其它标志位自增1(“11”除外)。需要替换时,按照顺序将标志位最大的Cache替换掉,因为此Cache行为最近最少使用。假设有一个三Cache line的Cache组,分别标记为Line 1,Line 2,Line 3。其中有3个任务A,B,C,共享此Cache。3任务的优先级为PA>PC>PB,在Cache行中添加2bits的标识位,标识任务的优先级。在面向QoS的Cache替换策略中,既考虑使用时间间隔,也需要考虑任务实时性的优先级。替换的条件是Max(Line 1,Line 2,Line 3)=Counter+TQoS。为此,在本发明的实施例中,需要添加实时性优先级标识域,标识Cache行所属应用的实时性优先级。当Cache访问miss时,被替换的行用公式表示为:Victim Cache Line=MAX(Counter+Priority),其中CacheCounter为LRU算法中的计数器,Priority为Cache行所属应用的实时性优先级。它依次包含如下步骤:
步骤A TQoS标识位生成
在应用程序运行时,操作系统根据应用程序的裕度时间,对程序进行优先级分类。当应用程序在流水线执行过程中发生访存操作时,应用程序的优先级随访存请求地址(101)一并发往Cache。当Cache出现Cache行回填操作时,将TQoS值写入到相应的Cache行的优先级标识域(105)中。
步骤B TQoS标识位填充
当Cache行第一次发生Miss且需要被填充时,TQoS被填充至相应的标识位。Cache行更新时,TQoS值也相应的更新。
步骤C Victim Cache Line计算
当Cache行已被填充过,之后的Cache行替换需根据公式Victim Cache Line=MAX(Counter+Priority)=Counter+TQoS计算出(107)需要被替换的Cache行。出于公平性的考虑,为了避免高优先级的任务当某一Cache行的Counter达到“预设的最大值”时,如11,再一次刷新时,之前“预设的最大值”对应的Cache行内容的优先级就需要逐步降低,直到被在此访问或者被替换出Cache。这样可以防止优先级非常高的任务长期占据Cache行的现象发生。
步骤D Cache Line替换
按照计算出的Victim Cache Line进行替换,同时刷新Cache组内其它Cache行的Counter值(106)。
表1所示为传统LRU替换算法的Cache访问和替换过程。表2为考虑应用程序优先级的Cache访问和替换过程。如表1和表2所示,当任务A的优先级最高时,其所属数据由于优先级的作用能够在Cache中延长生命周期,可以提高任务A访存的命中率,因而可以提高A应用程序的运算效率,提高任务A的实时性。假设Cache组中有三个Cache Line。
假设读取的Cache行次序为:A0,B0,C0,B1,A0,C1,C0,A0。
其中Cache行所属任务有限级为PA>PC>PB,优先级标识值为:0,1,2。
具体两种Cache访问操作的对比步骤如下:
步骤1:两种Cache行为一致,数据A0被存入Line 1。
步骤2:两种Cache行为一致,数据B0被存入Line 1,A0的计数器+1。
步骤3:两种Cache行为一致,数据C0被存入Line 1,A0、B0的计数器+1。
步骤4:两种Cache行为不同,传统Cache中,高优先级的A0被替换出去;QoS Cache此时被替换出去的是优先级较低且时间相对较久的B0,其它Cache行+1。
步骤5:两种Cache行为不同,传统Cache中,A0替换掉B0;QoS Cache中A0命中,此时就可以看出高优先级的A0命中的次数大于传统Cache,其它Cache行+1。
步骤6:两种Cache行为不同,传统Cache中,C1替换掉C0;QoS Cache中A0命中,此时就可以看出高优先级的A0命中的次数大于传统Cache,其它Cache行+1。
步骤7:两种Cache行为不同,传统Cache中,C0替换掉B1;QoS Cache中C0替换掉B1,其它Cache行+1。
步骤8:两种Cache行为一致,A0都出现命中。
表1
表2
综上所述,本发明通过根据分别缓存在所述中央处理器缓存区的多个缓存行中的多个应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;然后,根据计算获得的所述中央处理器缓存区中需要被替换的缓存行将所述中央处理器缓存区中需要被替换的缓存行进行替换。由此,不但考虑了缓存行中应用程序的任务的被访问的时间间隔,还考虑该任务的实时性,提高实时性数据块的命中率。具体的,将缓存区中的每个缓存行添加此行数据所属应用程序的优先级标识值,当缓存区发生访问失效时,按照传统Cache替换策略及缓存行的优先级信息进行综合衡量后替换。此外,本发明实施例中的操作系统需要支持将应用程序按照实时性需求进行优先级分类,并将优先级信息添加至访存数据包中,一起发送至Cache中。为了避免高优先级Cache行长时间未使用且因优先级较高长时间未被替换,而导致的Cache资源浪费的情况,对于高优先级Cache行长时间未被使用时需要逐步降低该Cache行的优先级,直到其被替换出Cache,由此优化了中央处理器缓存区的缓存行的替换方案。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1.一种中央处理器缓存区的缓存行的替换方法,其特征在于,所述方法包括:
步骤1,根据分别缓存在所述中央处理器缓存区的多个缓存行中的多个应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;
步骤2,将所述中央处理器缓存区中需要被替换的缓存行进行替换。
2.根据权利要求1所述的替换方法,其特征在于,所述在所述步骤1之前包括:
步骤21,在所述应用程序运行时,根据执行所述应用程序的任务的剩余时间对所述应用程序的任务进行优先级分类,并为每个所述优先级分类分配优选级标识值;
步骤22,在所述缓存行中为每个所述应用程序的任务添加优先级标识值。
3.根据权利要求2所述的替换方法,其特征在于,所述步骤22包括:
在所述应用程序发生访存请求操作时,所述应用程序的优先级标识值随访存请求的地址一并发到对应的所述缓存行,并在所述缓存行发生第一次发生访问失效并需要回填操作时,将所述优先级标识值写入到所述对应的缓存行的优先级标识位中;
所述优先级标识值包括两位优先级标识位。
4.根据权利要求3所述的替换方法,其特征在于,所述应用程序的任务被访问的时间间隔由一所述应用程序的任务所属的缓存行的计数器进行计数,在所述应用程序的任务被访问时,所述计数器的计数值置为0,反之所述应用程序的任务所属的缓存行的计数器的计数值加1;
所述优先级分类的级别越高,所述优先级标识值越小,反之,所述优先级标识值越大;
所述步骤1还包括:
在所述中央处理器缓存区的缓存行需要替换时,将计时所述应用程序被访问的时间间隔的计数器的计数值与所述优先级标识位标识的优先级标识值相加,将相加后所获得的数值最大的所述缓存行作为需要被替换的缓存行;和/或
在所述缓存区中的缓存行的被访问的时间间隔的计数器的计数值达到预设的最大值时,逐步降低所述缓存行的优先级标识值直到所述缓存行被访问或者被替换。
5.根据权利要求4所述的替换方法,其特征在于,所述步骤2还包括:
步骤23,根据计算出的所述需要被替换的缓存行将所述中央处理器缓存区中对应的缓存行进行替换;
步骤24,刷新所述缓存区中其它缓存行的计数器的计数值。
6.一种中央处理器缓存区的缓存行的替换装置,其特征在于,所述替换装置包括:
计算模块,用于根据分别缓存在所述中央处理器缓存区的多个缓存行中的多个应用程序的任务的优先级标识值和被访问的时间间隔,计算所述中央处理器缓存区中需要被替换的缓存行;
替换模块,用于将所述中央处理器缓存区中需要被替换的缓存行进行替换。
7.根据权利要求6所述的替换装置,其特征在于,所述替换装置还包括:
优选级分类模块,用于在所述应用程序运行时,根据执行所述应用程序的任务的剩余时间对所述应用程序的任务进行优先级分类,并为每个所述优先级分类分配优选级标识值;
标识添加模块,用于在所述缓存行中为每个所述应用程序的任务添加优先级标识值。
8.根据权利要求7所述的替换装置,其特征在于,所述标识添加模块在所述应用程序发生访存请求操作时,将所述应用程序的优先级标识值随访存请求的地址一并发到对应的所述缓存行,并在所述缓存行发生第一次发生访问失效并需要回填操作时,将所述优先级标识值写入到所述对应的缓存行的优先级标识位中;
所述优先级标识值包括两位优先级标识位。
9.根据权利要求7所述的替换装置,其特征在于,所述应用程序的任务被访问的时间间隔由一所述应用程序的任务所属的缓存行的计数器进行计数,在所述应用程序的任务被访问时,所述计数器的计数值置为0,反之所述应用程序的任务所属的缓存行的计数器的计数值加1;
所述优先级分类的级别越高,所述优先级标识值越小,反之,所述优先级标识值越大;
所述计算模块包括:
计算子模块,用于在所述中央处理器缓存区的缓存行需要替换时,将计时所述应用程序被访问的时间间隔的计数器的计数值与所述优先级标识位标识的优先级标识值相加,将相加后所获得的数值最大的所述缓存行作为需要被替换的缓存行;和/或
降级子模块,用于在所述缓存区中的缓存行的被访问的时间间隔的计数器的计数值达到预设的最大值时,逐步降低所述缓存行的优先级标识值直到所述缓存行被访问或者被替换。
10.根据权利要求9所述的替换装置,其特征在于,所述替换模块包括:
替换子模块,用于根据计算出的所述需要被替换的缓存行进行替换,将所述中央处理器缓存区中对应的缓存行进行替换;
刷新子模块,用于刷新所述缓存区中其它缓存行的计数器的计数值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610460009.XA CN106126434B (zh) | 2016-06-22 | 2016-06-22 | 中央处理器的缓存区的缓存行的替换方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610460009.XA CN106126434B (zh) | 2016-06-22 | 2016-06-22 | 中央处理器的缓存区的缓存行的替换方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106126434A true CN106126434A (zh) | 2016-11-16 |
CN106126434B CN106126434B (zh) | 2019-04-30 |
Family
ID=57268041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610460009.XA Active CN106126434B (zh) | 2016-06-22 | 2016-06-22 | 中央处理器的缓存区的缓存行的替换方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106126434B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368437A (zh) * | 2017-07-24 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
CN107391630A (zh) * | 2017-07-10 | 2017-11-24 | 北京京东尚科信息技术有限公司 | 处理并行网络请求的方法、装置及终端设备 |
WO2020062986A1 (zh) * | 2018-09-26 | 2020-04-02 | Oppo广东移动通信有限公司 | 文件缓存的回收方法以及装置、存储介质及终端 |
WO2023130316A1 (zh) * | 2022-01-06 | 2023-07-13 | 中国科学院计算技术研究所 | 一种兼顾服务质量和利用率的缓存动态划分方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383672A (zh) * | 2012-05-01 | 2013-11-06 | 辉达公司 | 高速缓存控制以减少事务回滚 |
CN104166631A (zh) * | 2014-09-11 | 2014-11-26 | 浪潮(北京)电子信息产业有限公司 | LLC中Cache行的替换方法 |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN106155936A (zh) * | 2015-04-01 | 2016-11-23 | 华为技术有限公司 | 一种缓存替换方法与相关装置 |
-
2016
- 2016-06-22 CN CN201610460009.XA patent/CN106126434B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383672A (zh) * | 2012-05-01 | 2013-11-06 | 辉达公司 | 高速缓存控制以减少事务回滚 |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN104166631A (zh) * | 2014-09-11 | 2014-11-26 | 浪潮(北京)电子信息产业有限公司 | LLC中Cache行的替换方法 |
CN106155936A (zh) * | 2015-04-01 | 2016-11-23 | 华为技术有限公司 | 一种缓存替换方法与相关装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391630A (zh) * | 2017-07-10 | 2017-11-24 | 北京京东尚科信息技术有限公司 | 处理并行网络请求的方法、装置及终端设备 |
CN107391630B (zh) * | 2017-07-10 | 2020-03-31 | 北京京东尚科信息技术有限公司 | 处理并行网络请求的方法、装置及终端设备 |
CN107368437A (zh) * | 2017-07-24 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
WO2020062986A1 (zh) * | 2018-09-26 | 2020-04-02 | Oppo广东移动通信有限公司 | 文件缓存的回收方法以及装置、存储介质及终端 |
CN110955614A (zh) * | 2018-09-26 | 2020-04-03 | Oppo广东移动通信有限公司 | 文件缓存的回收方法、装置、存储介质及终端 |
WO2023130316A1 (zh) * | 2022-01-06 | 2023-07-13 | 中国科学院计算技术研究所 | 一种兼顾服务质量和利用率的缓存动态划分方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106126434B (zh) | 2019-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531617B2 (en) | Allocating and accessing memory pages with near and far memory blocks from heterogenous memories | |
CN103902474B (zh) | 一种支持固态盘缓存动态分配的混合存储系统和方法 | |
CN106909515B (zh) | 面向混合主存的多核共享末级缓存管理方法及装置 | |
CN104407989B (zh) | 具有统一标签和片化数据的高速缓冲存储器 | |
CN103246616B (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
US8914581B2 (en) | Method and apparatus for accessing cache memory | |
CN106126434A (zh) | 中央处理器的缓存区的缓存行的替换方法及其装置 | |
KR100978156B1 (ko) | 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체 | |
CN109582600B (zh) | 一种数据处理方法及装置 | |
CN104572502B (zh) | 一种存储系统缓存策略自适应方法 | |
CN103236989B (zh) | 一种内容分发网络中的缓存控制方法、设备及系统 | |
CN110297787B (zh) | I/o设备访问内存的方法、装置及设备 | |
CN117056087B (zh) | 云数据中心混合内存优化方法、计算机装置及存储介质 | |
CN105094751A (zh) | 一种用于流式数据并行处理的内存管理方法 | |
CN106383792B (zh) | 一种基于缺失感知的异构多核缓存替换方法 | |
CN107111557A (zh) | 在共享高速缓存存储器系统中提供共享高速缓存存储器分配控制 | |
CN101694640A (zh) | 多核架构下共享二级Cache的替换策略的实现方法 | |
CN101800768B (zh) | 一种基于存储联盟子集划分的网格数据副本生成方法 | |
CN104714898B (zh) | 一种Cache的分配方法和装置 | |
CN113222115B (zh) | 面向卷积神经网络的共享缓存阵列 | |
US20120144124A1 (en) | Method and apparatus for memory access units interaction and optimized memory scheduling | |
CN106339330A (zh) | 高速缓存刷新的方法及系统 | |
US20120297131A1 (en) | Scheduling-Policy-Aware DRAM Page Management Mechanism | |
CN105808160B (zh) | 基于SSD的mpCache混合存储系统 | |
Zhang et al. | DualStack: A high efficient dynamic page scheduling scheme in hybrid main memory |
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 |