CN113760787B - 多级高速缓存数据推送系统、方法、设备和计算机介质 - Google Patents
多级高速缓存数据推送系统、方法、设备和计算机介质 Download PDFInfo
- Publication number
- CN113760787B CN113760787B CN202111101548.1A CN202111101548A CN113760787B CN 113760787 B CN113760787 B CN 113760787B CN 202111101548 A CN202111101548 A CN 202111101548A CN 113760787 B CN113760787 B CN 113760787B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- level cache
- level
- cache line
- 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/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
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/0877—Cache access modes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
提供多级高速缓存数据推送系统、方法、设备和计算机介质,该系统包括:第一级高速缓存器;第二级高速缓存器,其中第二级高速缓存器的访问速度比第一级高速缓存器慢;控制单元,被配置为:判断在第二级高速缓存器的要被替换的缓存行中是否存在未来可能再次被访问的缓存行并判断第一级高速缓存器中是否存在空闲的缓存行;在判断在第二级高速缓存器中存在未来可能再次被访问的缓存行并且第一级高速缓存器中存在空闲的缓存行的情况下,将未来可能再次被访问的缓存行前推到空闲的缓存行中。本公开利用第一级高速缓存器的空闲空间,存储将来可能会被访问的第二级高速缓存器的要替换的缓存行,减轻了缓存系统的容量缺失和冲突缺失,提高了缓存的利用率。
Description
技术领域
本申请涉及集成电路领域,更具体地,涉及多级高速缓存数据推送系统、方法、设备和计算机介质。
背景技术
现代处理器中往往包含多级的高速缓存(Cache)系统,其访问和运行速度比内存快。图1示出了现有技术的多级的高速缓存系统的一般方框图。如图1所示,以L1级、L2级、L3级高速缓存系统为例,其中,L1缓存一般分为L1D缓存和L1I缓存,用于分别存储数据和指令,通常为各个处理器核分别设置相应的L1缓存,大小分别为16k~64k不等,L2缓存常作为私有缓存,不区分指令和数据,通常为各个处理器核分别设置相应的L2缓存,大小在256k~1M不等,L3缓存作为共享缓存,被多个处理器核共享,通常也不区分指令和数据,一般大于4M。在多级高速缓存系统中,一般L1I缓存和L1D缓存需要快速的访问速度,所以容量比较小。而L2缓存和L3缓存往往容量较大,面积较大,通常占据了芯片上相当比例的面积和晶体管数目。L3缓存可以通过片上网络与内存交换数据。
高速缓存里存的数据是内存中的常用数据的一个拷贝,以便处理器能够迅速地从高速缓存中取出常用的数据,以减少读取数据的时间。高速缓存的容量通常比较小,不可能缓存内存中的所有数据。因此,当高速缓存存满后,再需要存入一个新的数据条目时,就需要把其他数据从缓存中驱逐出去,这个过程称为驱逐(evict),一个被驱逐的数据条目称为牺牲(victim)缓存。这个过程称之为替换或替换。
需要合理的替换策略来保证高速地读取数据以及高效地利用缓存空间。
发明内容
根据本申请的一个方面,提供一种多级高速缓存数据推送系统,包括:第一级高速缓存器;第二级高速缓存器,其中所述第二级高速缓存器的访问速度比第一级高速缓存器慢;控制单元,被配置为:判断在第二级高速缓存器的要被替换的缓存行中是否存在未来可能再次被访问的缓存行并判断第一级高速缓存器中是否存在空闲的缓存行;在判断在第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,将所述未来可能再次被访问的缓存行前推到所述空闲的缓存行中。
根据本申请的另一个方面,提供一种多级高速缓存数据推送方法,包括:判断在第二级高速缓存器的要被替换的缓存行中是否存在未来可能再次被访问的缓存行;判断第一级高速缓存器中是否存在空闲的缓存行;在判断在第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,将所述未来可能再次被访问的缓存行前推到所述空闲的缓存行中。
根据本申请的另一个方面,提供一种多级高速缓存数据推送设备,包括:处理器;存储器,存储了计算器可执行指令,其被处理器运行时进行本公开所述的各个方法。
根据本申请的另一个方面,提供一种计算机可读介质,存储有计算机可读指令,其中当所述计算机可读指令由处理器运行时,进行本公开所述的各个方法。
本公开利用多级缓存系统中的第一级高速缓存器的空闲空间,存储将来可能会被访问的第二级高速缓存器的要替换的缓存行,减轻了缓存系统的容量缺失和冲突缺失,提高了缓存的利用率。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了现有技术的多级的高速缓存系统的一般方框图。
图2示出了高速缓存的组织形式和寻址方式。
图3示出了根据本公开的实施例的多级高速缓存数据推送系统的方框图。
图4示出了根据本公开的实施例的多级高速缓存数据推送系统的方框图以及数据流图。
图5示出了基于L3VB缓冲器的更详细的数据推送结构图。
图6示出了根据本公开的实施例的多级高速缓存数据推送方法的流程图。
图7示出了根据本公开的另一实施例的多级高速缓存数据推送方法的流程图。
图8示出了根据本公开的一个实施例的图7所示的步骤606的具体流程图。
图9示出了适于用来实现本申请实施方式的示例性计算机系统的框图。
图10示出了根据本公开的实施例的非暂时性计算机可读存储介质的示意图。
具体实施方式
现在将详细参照本申请的具体实施例,在附图中例示了本申请的例子。尽管将结合具体实施例描述本申请,但将理解,不是想要将本申请限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本申请的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
图2示出了高速缓存的组织形式和寻址方式。如图2所示,高速缓存被组织为缓存行数组的形式。多个缓存行作为一行组成一个组(set),一列缓存行组成路(way)。通过物理地址获取数据或指令在缓存中的位置(set,way,byte),每个物理地址被分为三部分:索引(Index),选择缓存的组(set),同一组中的所有缓存行通过索引域来选择;标签(tag),选择一组(set)中特定的缓存行,物理地址的标签域与每个缓存行的标签域进行比较,如果匹配,则发出缓存命中(cache hit)信号,从而选择此缓存行,否则发出缓存缺失(cachemiss)信号;偏移量(offset),物理地址在缓存行中的第一个字节(byte),数据或指令从此字节的位置读取。
在实际工作中,在L2级缓存需要替换时,L2级缓存会根据替换算法,选择一个缓存行(cacheline),作为牺牲缓存行(victim cacheline),发给L3级缓存。L3级缓存把这个L2级缓存牺牲缓存行作为数据输入,如果L3级缓存不需要替换,则可以直接将该缓存行存入。如果L3级缓存需要替换,则根据L3级缓存的替换策略,选择一个L3级缓存的缓存行,送入L3级缓存的牺牲缓冲器(victim buffer,VB),进而从L3级缓存的牺牲缓冲器发送到内存,最后将这个L2级缓存的牺牲缓存行存入L3级缓存中。
目前高性能处理器的高速缓存替换策略主要有最少最近使用(least recentlyused,LRU)策略,再参考区间预测(Re-Reference Interval Prediction,RRIP)等,以及在此基础上的一些变种。主要的替换依据是这个缓存行被访问或读取的年龄信息,表示这个缓存行有多久没有被访问或读取了。一般年龄越大,表示越久没有被访问或读取,表示处理器再次访问或读取该缓存行的概率越小,则越容易被替换出去。另外,在L1级缓存和L2级缓存是包含关系的时候,即,L1级缓存的数据在L2级缓存里也有,则L2级缓存经常用数据缓存有效(Data Cache Valid,DcV)和指令缓存有效(Instruction Cache Valid,IcV)信息标明这个缓存行是否也被L1级缓存的数据缓存(Data Cache,DC)或者指令缓存(InstructionCache,IC)存储(如图1所示)。当一个缓存行的DcV或者IcV有效,表示其在L1级缓存和L2级缓存中都存在,那么可以认为它被再次访问的概率要大一些,希望替换算法让它被替换出的优先级低一些,即低的替换优先级导致更不容易被替换。由于缓存容量有限、或者同一索引域的冲突、比如一个索引中的缓存行都是替换优先级低的缓存行,则只能把优先级替换低的缓存行也替换出缓存系统。
另一方面,在多核多线程的场景下,并不是所有的私有的L2级缓存都是处于繁忙状态,特别是处理器的负载的多样性,有些应用负载对访存需求不高。这些情况下,某个处理器核的L2级缓存的存储空间有时候也不会充分被利用。
由于缓存容量限制和索引域冲突原因,一些未来可能还会被访问或引用的数据块可能被迫替换出缓存系统。另一方面,在某些运行情况下,个别私有L2级缓存存在利用率不高的情况。
针对这些问题,本公开提出一种数据前推的机制:
1)对L3级缓存产生的牺牲缓存行进行判断,判定是否是未来可能被再次访问或引用的替换优先级较低的缓存行。
2)判断L2级缓存是否有空闲,如有空闲,将替换优先级较低的缓存行,从L3级缓存前推到L2级缓存中的空闲处。从而让未来可能会被引用的数据块依然保留在多级缓存系统中,而不是存入内存中。等将来这个缓存行再被访问,只需要进行处理器核到处理器核的数据转移即可,降低了访存时延和提高了L2级缓存的利用率。
图3示出了根据本公开的实施例的多级高速缓存数据推送系统的方框图。
如图3所示,多级高速缓存数据推送系统300包括:第一级高速缓存器301;第二级高速缓存器302,其中第二级高速缓存器的访问速度比第一级高速缓存器慢;控制单元303,被配置为:判断在第二级高速缓存器的要被替换的缓存行中是否存在未来可能再次被访问的缓存行并判断第一级高速缓存器中是否存在空闲的缓存行;在判断在第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,将未来可能再次被访问的缓存行前推到空闲的缓存行中。
在此,第一级高速缓存器301的一个实施例是L2级缓存,第二级高速缓存器302的一个实施例是L3级缓存。但是本公开不限于此,实际上,满足第二级高速缓存器的访问速度比第一级高速缓存器慢的两个高速缓存器都可以应用于本公开。例如,第一级高速缓存器301的一个实施例是L1级缓存,第二级高速缓存器302的一个实施例是L2级缓存。或者,第一级高速缓存器301的一个实施例是L1级缓存、L2级缓存、或L3级缓存,第二级高速缓存器302的一个实施例是L4级缓存(如果有的话)。
另外,上述只举例了2级高速缓存器,但是本公开不排除还包括多个其它级高速缓存器,其只要满足第二级高速缓存器的访问速度比第一级高速缓存器慢的两个高速缓存器,也可以应用上述技术方案,也可以不应有上述技术方案。
如此,在判断了在第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,将未来可能再次被访问的缓存行前推到空闲的缓存行中,从而让未来可能会被引用的数据块依然保留在多级缓存系统中,而不是存入内存或其他级缓存系统中。等将来这个缓存行再被访问,只需要在该第一级高速缓存器中查找即可,降低了访存时延,也提高了第一级缓存的利用率。
实现这一步主要包含两个方面:一方面,判定第二级高速缓存器中是否存在未来可能再次被访问的缓存行,例如L3级缓存中要被替换到内存中的牺牲缓存行是否未来可能会再次被引用或者说这个缓存行是否具有较低的替换优先级,更不应该被替换到内存中。例如,可以给每个缓存行进行标记,设计一个热位,为未来可能再次被访问的缓存行设置热位为1,用于标记该缓存行具有低的替换优先级。另一方面,判定其他的第一级高速缓存器是否空闲,例如L2级缓存是否空闲。
当然,上述设置热位为1表示该缓存行具有低的替换优先级且设置热位未0表示该缓存行不具有低的替换优先级,但是这只是表示该缓存行未来可能再次被访问的一种形式。实际上还可采用各种其他方式,比如设置热位和不设置热位分别表示缓存行具有低的替换优先级和不具有低的替换优先级,或者通过其他方式、例如记录该缓存行的物理地址、或者该缓存行映射到某个优先级表中等等,来表示该缓存行未来可能再次被访问。在此不一一描述。只要存在这种指示得知该缓存行未来可能再次被访问,则
接下来,介绍如何判定第二级高速缓存器中是否存在未来可能再次被访问的缓存行。
在一个实施例中,控制单元303被配置为通过如下步骤中的至少一种来判断第二级高速缓存器中是否存在未来可能再次被访问的缓存行:响应于从第一级高速缓存器将第一缓存行替换到第二级高速缓存器,基于指示第一缓存行也被存储在第零级高速缓存器中的标记,判断第一缓存行是未来可能再次被访问的缓存行,其中,第零级高速缓存器的访问速度比第一级高速缓存器快;响应于从第一级高速缓存器将第一缓存行替换到第二级高速缓存器,如果第一缓存行的最近未被访问时间小于预定年龄阈值,判断第一缓存行是未来可能再次被访问的缓存行,其中第一缓存行的年龄是自第一缓存行上次被访问以来所经历的时间;响应于对第一级高速缓存器的访问请求命中第二级高速缓存器中的第一缓存行,将第二级高速缓存器中的第一缓存行送入第一级高速缓存器中,并标记第一缓存行的来源为第二级高速缓存器,并且在从第一级高速缓存器将被标记的第一缓存行替换到第二高速缓存器中的情况下,判断第一缓存行是未来可能再次被访问的缓存行;将对应于一个线程的存入第二级高速缓存器中的缓存行都判断是未来可能再次被访问的缓存行。
也就是说,可以通过几种方式来判断要被替换的一个缓存行是否未来可能再次被访问。
第一,可以通过该缓存行是否也在第零级高速缓存器(例如,第零级高速缓存器的一个实施例可以是L1级缓存)中,如果在的话,可以认为这个缓存行在频繁被访问的缓存中,那么这个缓存行未来再次被访问的概率很高。具体地,可以当L2级缓存发送替换的L2牺牲缓存行给L3级缓存时,将表示其在L1级缓存和L2级缓存中都存在的DcV,IcV的标记也发送给L3级缓存。L3级缓存可以据此设置热位为1,表示低的替换优先级,即表示该缓存行未来可能再次被访问。
第二,可以通过第一缓存行的最近未被访问时间小于预定年龄阈值,判断第一缓存行是未来可能再次被访问的缓存行,其中第一缓存行的年龄是自第一缓存行上次被访问以来所经历的时间。例如,当L2级缓存发送替换的牺牲缓存行给L3级缓存时,判断该L2牺牲缓存行上次被访问以来所经历的时间作为年龄,若年龄较小,表示离上次被访问的时间很近,说明该缓存行未来再次被访问的概率很高,则发送年龄小(age-younger)标记给L3级缓存,L3级缓存对该缓存行设置热位为1,表示低的替换优先级,即表示该缓存行未来可能再次被访问。
第三,可以响应于对第一级高速缓存器(例如L2级缓存)的访问请求命中第二级高速缓存器(L3级缓存)中的第一缓存行,将第二级高速缓存器L3级缓存中的第一缓存行送入第一级高速缓存器中(例如L2级缓存),并标记第一缓存行的来源为第二级高速缓存器(即L3级缓存),并且在从第一级高速缓存器(例如L2级缓存)将被标记的第一缓存行替换到第二高速缓存器(即L3级缓存)中的情况下,判断第一缓存行是未来可能再次被访问的缓存行。例如,如果L2级缓存要替换到L3级缓存的牺牲缓存行是之前从L3级缓存发送过去的,则表示该缓存行在高速缓存、而不是内存中的频率较高,因此这样的缓存行未来可能再次被访问。那么,在当L2级缓存的访问请求命中L3级缓存中的一个缓存行时(即,需要将该缓存行从了3级缓存中发送到L2级缓存),该缓存行送到L2级缓存,并在对应的目录(STM)中标记其来源是L3级缓存。等将来这个L2级缓存的缓存行再次被L2级缓存替换下来到L3级缓存中后,L3级缓存将该缓存行设置热位为1。
第四,假如某个线程的访问速度和效率很重要,比如该线程是重点线程,则软件可以设置该线程的所有存入L3级缓存的缓存行的热位为1,为未来可能再次被访问的缓存行。
当然,上面只是举例了判断缓存行是未来可能再次被访问的缓存行的多种判断方式,但是本公开不限于此。实际上,还可以存在其他判断方式,因为只要是根据实际情况认为未来可能再次被访问的缓存行,都可以通过各种信息进行相应的判断,这些都被包括在本公开中。也可以结合各种判断方式的组合确定未来可能再次被访问的缓存行。
在一个实施例中,在缓存行从第二级高速缓存器送入第二级高速缓存器的牺牲缓冲器的情况下,缓存行的热位与缓存行的数据和状态一起被存入牺牲缓冲器。例如,在判断了该第二级高速缓存器、例如L3级缓存的缓存行是未来可能再次被访问的缓存行之后,当缓存行从L3级缓存被替换的时候,会将该缓存行的数据、状态存入L3VB缓冲器(L3级缓存的牺牲缓冲器,用于缓冲要从L3级缓存被替换出去的缓存行)。这时候将该缓存行的热位也存入L3VB缓冲器。如此,以后可以基于热位确定该缓存行要替换到L2级缓存还是内存。
接下来描述如何判断第一级高速缓存器中是否存在空闲的缓存行。
在一个实施例中,控制单元303通过如下步骤中的至少一种来判断第一级高速缓存器中是否存在空闲的缓存行:在缓存行从第二级高速缓存器送入第二级高速缓存器的牺牲缓冲器之后,检测与缓存行处于同一索引域的各个第一级高速缓存器中有多少路是空闲的,如果空闲的路的数量大于预定路阈值,则判断第一级高速缓存器中存在空闲的缓存行;在每个采样周期,统计各个第一级高速缓存器发送到第二级高速缓存器的请求的数量,如果请求的数量小于预定请求阈值,则判断第一级高速缓存器中存在空闲的缓存行;各个第一级高速缓存器监控自己的空间占用和忙闲程度中的至少一种,如果空间占用和忙闲程度中的至少一种大于相应的预定程度阈值,则判断第一级高速缓存器中存在空闲的缓存行。
也就是说,可以通过几种方式来判断第一级高速缓存器中是否存在空闲的缓存行。
第一,可以在缓存行从第二级高速缓存器送入第二级高速缓存器的牺牲缓冲器之后,检测与缓存行处于同一索引域的各个第一级高速缓存器中有多少路是空闲的,如果空闲的路的数量大于预定路阈值,则判断第一级高速缓存器中存在空闲的缓存行。例如,当缓存行进入L3VB缓冲器后,检查所有L2级缓存中存在L3级缓存行的目录(STM)。对于和这个缓存行同一索引域的L2级缓存,检查各个L2级缓存在这个索引域中有多少个路是空闲的。设空闲的路invalid_way_num>=2(这个路阈值可以由软件配置)。即判定L2的存储空间是空闲的。
在此,如果要替换的L3级缓存行的索引域与空闲的L2级缓存行的索引域相同,则更容易在L2级缓存行中寻址要存入的位置。
第二,可以在每个采样周期,统计各个第一级高速缓存器发送到第二级高速缓存器的请求的数量,如果请求的数量小于预定请求阈值,则判断第一级高速缓存器中存在空闲的缓存行。例如,在L3级缓存的入口处,在每个采样周期中(该采样周期可以由软件配置),统计每个L2级缓存发送到L3级缓存的请求的数量,若低于预定请求阈值(该阈值可以由软件配置),说明该L2级缓存不活跃,可判定该L2级缓存的流水线空闲。
第三,各个第一级高速缓存器可以监控自己的空间占用和忙闲程度中的至少一种,如果空间占用和忙闲程度中的至少一种大于相应的预定程度阈值,则判断第一级高速缓存器中存在空闲的缓存行。例如由L2级缓存直接监控自己流水线的忙闲程度或占用情况,将其反馈给L3级缓存来判断L2级缓存的流水线是否空闲。也可以结合L2级缓存的存储空间是否空间、以及L2级缓存流水线的忙闲程度两者,共同判定该L2级缓存是否空闲可用。
当然,上面只是举例了判断第一级高速缓存器中存在空闲的缓存行的多种判断方式,但是本公开不限于此。实际上,还可以存在其他判断方式,这些都被包括在本公开中。也可以结合各种判断方式的组合判断第一级高速缓存器中存在空闲的缓存行。在此不一一赘述。
如此,判断了在第二级高速缓存器中要被替换的缓存行中是否存在未来可能再次被访问的缓存行和第一级高速缓存器中是否存在空闲的缓存行。
值得注意的是,判断在第二级高速缓存器的要被替换的缓存行中是否存在未来可能再次被访问的缓存行的步骤和判断第一级高速缓存器中是否存在空闲的缓存行的步骤发生的时间、发生的先后顺序可以不同,也可以同时进行,也可以周期进行,也可以依赖于对方的判断结果而执行。例如,可以在缓存行要被替换的时候,判断该缓存行是否在未来可能再次被访问,如果判断为是,才进行判断第一级高速缓存器中存在空闲的缓存行的步骤,如果判断为否,则不进行判断第一级高速缓存器中存在空闲的缓存行的步骤。又例如,可以随时或周期性判断第一级高速缓存器中是否存在空闲的缓存行,如果存在,然后在缓存行要被替换的时候,判断该缓存行是否在未来可能再次被访问,如果不存在,则不再判断缓存行是否在未来可能再次被访问。又例如,可以在缓存行要被替换的时候,同时判断缓存行是否在未来可能再次被访问以及判断第一级高速缓存器中是否存在空闲的缓存行。
最后,例如,若在L3VB缓冲器中的L3级缓存的牺牲缓存行的热位为1,且有L2级缓存器有空闲可用。则判定该L3级缓存的牺牲缓存行可以被推送到L2级缓存,而不是替换到内存,可以设置该牺牲缓存行的标记forward_en为1,即,表示可以推送到L2级缓存。
如此,本来要被替换到内存的L3级缓存的牺牲缓存行被判断了其可能在未来被访问或引用,如果被替换到内存,则在未来要被访问或引用时,又需要将其从内存推送到L3级缓存,这会导致访问延时,也降低了执行效率。而该可能在未来被访问或引用的牺牲缓存行被推送到L2级缓存,则在未来要被访问或引用时,只需要从L2级缓存中快速地取出,由于L2级缓存的访问速度和效率比内存和L3级缓存高,因此,极大地减少了访问延时,提高了执行效率,使得配有这种缓存系统机制的这种处理器获得了优越的高性能。
接下来,描述确定要被推送到第一级高速缓存器(L2级缓存)的缓存行如何被推送到第一级高速缓存器(L2级缓存)。
图4示出了根据本公开的实施例的多级高速缓存数据推送系统的方框图以及数据流图。
多级高速缓存数据推送系统400包括属于2个处理器核的2个第一级高速缓存器401、例如L2级缓存和内存402。
在其中1个L2级缓存中示出了L2M存储器(L2 memory)4011和响应缓冲器L2RB(L2response memory buffer)4012。
L2M存储器4011缓冲要存储在L2级缓存的数据,而响应缓冲器L2RB4012缓冲从L3缓存发送到L2级缓存的L3响应数据。
多级高速缓存数据推送系统400还包括缓冲器区403,包括L2级缓存的牺牲缓冲器L2VB(L2 victim buffer)4031、L3级缓存的牺牲缓冲器L3VB(L3victim buffer)4032、L3级缓存的L3M存储器4033、L3级缓存的响应缓冲器L3RB(L3 response buffer)4034、命中缓冲器HB(hit buffer)4035、L3响应复用器(L3 Resp Mux)4036。
L2级缓存的牺牲缓冲器L2VB 4031缓冲从L2级缓存替换出的缓存行称为L2牺牲数据。
L3级缓存的牺牲缓冲器L3VB 4032缓冲从L3级缓存替换出的缓存行,称为L3推送数据。
L3M存储器4033缓冲要存储在第二级高速缓存器、例如L3级缓存中的数据。
响应缓冲器L3RB 4034缓冲响应于L3级命令命中内存、而从内存发送到L3级缓存的数据。
命中缓冲器HB(hit buffer)4035缓冲响应于L2级命令命中L3级缓存、而要从L3缓存发送到L2级缓存的L3命中数据。
L3响应复用器(L3 Resp Mux)4036可接收来自命中缓冲器HB 4035发送的L3命中数据、可接收来自L3RB发送的从内存发送来的数据、还可接收从L3VB 4032发送的要从L3级缓存替换出的L3推送数据、还可接收从左侧L2级缓存发送到右侧L2级缓存的处理器核-处理器核转移数据。
L3响应复用器4036可在这几种数据中选择一个或多个数据来作为L3响应数据发送给L2级缓存中的L2RB。
在一个实施例中,控制单元303被配置为:在判断第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,从第二级高速缓存器的牺牲缓冲器将可能再次被访问的缓存行的第一数据(例如图4中的L3推送数据)送到响应复用器,其中响应复用器还接收第二数据(例如图4中的L3命中数据)、第三数据(例如,图4中的来自内存的数据)和第四数据(例如,图4中的处理器核-处理器核转移数据)中的至少一个,第二数据响应于对第一级高速缓存器的访问请求命中第二级高速缓存器中的缓存行而要被送入第一级高速缓存器中的缓存行,第三数据是从内存或第三级高速缓存器(例如L4级缓存)发送的,以及第四数据是从另一第一级高速缓存器发送的,其中第三级高速缓存器的访问速度比第二级高速缓存器的访问速度慢;使得响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入第一级高速缓存器。
结合图4和图5,描述将确定要推送的数据从L3级缓存推送到L2级缓存的具体示例过程。
在传统的L2级缓存结构中,L2级缓存会将要被替换的牺牲缓存行替换给L3级缓存。L3级缓存首先将其存储在一个L2VB缓冲器中,等到将L3级缓存中的要被替换出L3级缓存的牺牲缓存行从L3M存储器被读出后,再将L2VB中缓冲的L2级缓存的牺牲缓存行通过写端口写入L3M存储器。
L3级缓存中的要被替换出L3级缓存的牺牲缓存行会被存入L3VB缓冲器4032,进一步发送给内存。
当L2级缓存请求命中L3级缓存中的缓存行时,也会从L3M存储器的读端口把该L3命中数据读出,暂存到HB缓冲器中,进而准备发送给L2级缓存。如果L2级缓存请求缺失,且目录STM也缺失,会从内存中读取数据。来自内存的数据会存入L3RB缓冲器,然后和L3命中数据一起通过一个共享的L3响应复用器,来进行数据选择,然后将选择的数据作为L3响应数据送到目标L2级缓存的L2RB缓冲器。然后L2级缓存进一步把该L3响应数据存入L2M存储器中。
为了L3响应复用器选择数据来推送到L2级缓存而不是内存,因此在增加了本公开的推送机制后,可以在L3VB缓冲器4032中增加一个挑选逻辑(Pick logic),从L3VB缓冲器4032中挑选标记forward_en=1的数据(即,确定要推送到L2级缓存的数据),通过专门的L3推送数据总线将这些数据作为L3推送数据发送到L3响应复用器、和L3命中数据、来自内存的数据和可能的处理器核-处理器核转移数据共同通过L3响应复用器把数据发送给L2级缓存。即,在一个实施例中,在判断第二级高速缓存器(L3级缓存)中存在未来可能再次被访问的缓存行并判断第一级高速缓存器(L2级缓存)中存在空闲的缓存行的情况下,控制单元303可以通过挑选逻辑从第二级高速缓存器(L3级缓存)的牺牲缓冲器(L3VB)4032将可能再次被访问的缓存行的第一数据送到响应复用器4036。
图5示出了基于L3VB缓冲器4032的更详细的数据推送结构图。其中,L3VB缓冲器4032中的挑选逻辑可以被划分为两个:挑选器1(Picker1)501是原本给内存发送数据的L3牺牲挑选器(vic Picker),挑选器2(Picker2)502是从L3VB缓冲器4032的多个缓存行中选择标记forward_en=1的数据(即,确定要推送到L2级缓存401的数据)。挑选器1501只对标记Forward_en=0的牺牲缓存行进行选择,挑选器2 502只从Forward_en=1的牺牲缓存行进行选择。
在此,由于L3响应复用器4036要从几种数据中选择数据发送给L2级缓存401,可以设计一些规则来帮助L3响应复用器4036进行这种选择。
在一个实施例中,控制单元303被配置为:使得响应复用器从接收到的第一数据、第二数据、第三数据和第四数据中选择优先级最高的数据以送入第一级高速缓存器,其中,第一数据的优先级低于第二数据、第三数据和第四数据的优先级。
例如,L3响应复用器4036可以对除了要被推送到L2级缓存401的L3推送数据(即,第一数据)以外的其他数据来源(例如,第二数据、第三数据和第四数据)的选择具有较高优先级,而对L3推送数据的优先级较低。即,控制单元303使得只有其他数据来源不占用(或没被发送到)L3响应复用器时,L3推送数据才能获得L3响应复用器的L3响应总线的使用权以发送到L2级缓存401。
这样,可以优先保证其他数据来源的数据正常地被发送到L2级缓存401,而在其他数据来源的数据不需要发送到L2级缓存401的情况下,才将L3推送数据发送到L2级缓存401以便进一步增加L2级缓存401的利用率。
在一个实施例中,控制单元303被配置为:在第一数据被缓冲在牺牲缓冲器中达预定时间的情况下,拒绝将第一数据从牺牲缓冲器送入第一级高速缓存器,而是将第一数据送入第三存储区,其中第三存储区的访问速度比第二级高速缓存器的访问速度慢。
例如,为L3推送数据增加一个等待计数器(推送数据项计数器,Forward RetryCnt,FRC)503,当其他数据来源持续使用L3响应复用器4036、而挑选器2 502选出的L3推送数据只能等待时,FRC加1。当FRC计数器超过一定阈值(可由软件配置)后,FRC计数器清零;同时,FRC发出拒绝(Reject)信息给L3VB缓冲器。控制单元303使得L3VB缓冲器4032将这个数据项的Forward_en位清零,即该数据项将停止被推送到L2级缓存401,不再会被挑选器2502选择,而将由挑选器1 501选择送往内存402。数据项中存储的是缓存行的数据。
这样,不会让L3推送数据在L3VB缓冲器4032中缓冲的时间过长,导致被占据的L3VB缓冲器4032的数据项无法释放。这样L3VB缓冲器4032的资源紧张,会影响正常的L3级缓存的替换流程。
在一个实施例中,控制单元303被配置为:在第一数据的数量超过预定数量阈值的情况下,拒绝将第一数据从牺牲缓冲器送入第一级高速缓存器,而是将第一数据送入第三存储区,其中第三存储区的访问速度比第二级高速缓存器的访问速度慢。
例如,如果L3VB缓冲器4032的大多数数据项都是设置为forward_en=1时,如果L3响应复用器4036又很忙,会导致L3VB缓冲器4032逐渐变满,从而影响L3级缓存正常的工作。因此,设置一个软件可配的阈值N,当L3VB缓冲器4032中forward_en=1的项数超过N时,挑选器1 501将不管forward_en的情况,将L3VB缓冲器4032中的数据送往内存(第三存储区)402。
这样不会让L3VB缓冲器4032变得过满,而影响其他要正常发送到内存的牺牲缓存行。
在一个实施例中,控制单元303被配置为:在第一级高速缓存器的索引域中不存在空闲的路的情况下,拒绝将第一数据从牺牲缓冲器送入第一级高速缓存器,而是将第一数据送入第三存储区,其中第三存储区的访问速度比第二级高速缓存器的访问速度慢。
即,由于在判断完L3推送数据和L2级缓存401有空闲之后的一段时间内,在这段时间内L3推送数据从L3M存储器4033发送到并被缓冲到L3VB缓冲器4032中,此时L2级缓存401的空间可能已经由于接收了来自内存402的数据或L3响应数据或处理器核-处理器核转移数据而变得不空闲,因此,如果L2级缓存401此时不空闲了,会拒绝接收L3推送数据,而使得将L3推送数据发送到内存402。
接下来,当数据从L3响应复用器4036通过L3响应总线发送到目标L2级缓存401时,L2级缓存401启动查找/插入流水线,将L3推送数据插入L2M存储器4011。并反馈接受(accept)信号给L3VB缓冲器4032。L3VB缓冲器4032接到L2接收该接受(accept)信号后,将更新L3级缓存403内部记录L2级缓存状态的L2目录STM。然后释放L3VB缓冲器4032的对应数据项,推送结束。
在以下情况下,L2级缓存401会拒绝数据推送:
a)L2级缓存401的流水线处于繁忙状态,L3推送数据在L3RB缓冲器4034等待一段时间后,始终无法选择进入L2级缓存401的流水线。L2级缓存401可以发出拒绝(reject)信号。
b)L2级缓存401进行查找时,发现目标索引域中已无空闲位。则不发生替换。结束查找操作,并发出拒绝信号。
当L2级缓存401发出拒绝信号后,对应的L2RB缓冲器4012中的数据项会释放,同时将该拒绝信号发给L3VB缓冲器4032。L3VB缓冲器4032接到拒绝信号后,将该数据项的forward_en清零,转而将该数据发送到内存402。
如此,可以在适当的条件下拒绝接收L3推送数据,以保证正常的缓存替换。
如图5所示,L2级缓存401通过L2级缓存401到L3VB缓存4032的L2响应(Resp)总线发出响应,表示来自L3响应复用器4036的请求是被拒绝(Reject)或者接受(Accept)。
L2响应总线传送的信号包含如下字段或信息:
(1)L3VBId,表明当前L2级缓存401返回的响应是对应L3VB缓冲器4032的哪个数据项;
(2)接受有效(Accept_valid),为1则表示L2级缓存401已经接受,并存入L2级缓存401中,为0表示L2级缓存401拒绝接收;
(3)L2级缓存路信息,表示存在L2级缓存401中的哪个路中,用于在L2级缓存401接受的时候,更新L2级缓存401中的目录信息STM。
L3VB缓冲器4032接收到来自L2级缓存401的响应后:
如果是响应是拒绝(Reject),则将Forward_en改为0。通过L3VB缓冲器4032把该缓存行存到内存402中去。
如果是接受(Accept),则需要修改L3级缓存403的目录STM(L2级缓存401的缓存行在L3级缓存403中的目录信息),标记这个缓存行已经存在L2级缓存401中的哪个索引/路中,然后释放L3VB缓冲器4032的该缓存行所在的数据项。
如此,本公开利用多级缓存系统中的L2级缓存的空闲空间,存储将来可能会被访问的L3牺牲数据,减轻了缓存系统的容量缺失和冲突缺失,提高了缓存的利用率。
注意,上述描述提到用控制单元进行各种控制,包括使得其他装置(例如各个缓冲器)达成一些操作,但是实际上也可以用其他装置中的某个单元(例如L3VB中的挑选器1501和挑选器2 502)来完成这些操作,而这些单元可以统称为控制单元。另外,控制单元或这些单元也可以并非实体单元,而是软件模块,以通过软件指令来完成这项操作。对此不进行限制。
图6示出了根据本公开的实施例的多级高速缓存数据推送方法的流程图。
该多级高速缓存数据推送方法600包括:步骤601,判断在第二级高速缓存器的要被替换的缓存行中是否存在未来可能再次被访问的缓存行;步骤602,判断第一级高速缓存器中是否存在空闲的缓存行;步骤603,在判断在第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,将未来可能再次被访问的缓存行前推到空闲的缓存行中。
如此,在判断了在第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,将未来可能再次被访问的缓存行前推到空闲的缓存行中,从而让未来可能会被引用的数据块依然保留在多级缓存系统中,而不是存入内存或其他级缓存系统中。等将来这个缓存行再被访问,只需要在该第一级高速缓存器中查找即可,降低了访存时延,也提高了第一级缓存的利用率。
在一个实施例中,判断第二级高速缓存器中是否存在未来可能再次被访问的缓存行的步骤601包括如下中的至少一种:
响应于从第一级高速缓存器将第一缓存行替换到第二级高速缓存器,基于指示第一缓存行也被存储在第零级高速缓存器中的标记,判断第一缓存行是未来可能再次被访问的缓存行,其中,第零级高速缓存器的访问速度比第一级高速缓存器快;
响应于从第一级高速缓存器将第一缓存行替换到第二级高速缓存器,如果第一缓存行的最近未被访问时间小于预定年龄阈值,判断第一缓存行是未来可能再次被访问的缓存行,其中第一缓存行的年龄是自第一缓存行上次被访问以来所经历的时间;
响应于对第一级高速缓存器的访问请求命中第二级高速缓存器中的第一缓存行,将第二级高速缓存器中的第一缓存行送入第一级高速缓存器中,并标记第一缓存行的来源为第二级高速缓存器,并且在从第一级高速缓存器将被标记的第一缓存行替换到第二高速缓存器中的情况下,判断第一缓存行是未来可能再次被访问的缓存行;
将对应于一个线程的存入第二级高速缓存器中的缓存行都判断是未来可能再次被访问的缓存行。
也就是说,可以通过几种方式来判断要被替换的一个缓存行是否未来可能再次被访问。
图7示出了根据本公开的另一实施例的多级高速缓存数据推送方法的流程图。
图7中的步骤601-603与图6中的相同,在此不赘述。
在一个实施例中,方法600还可以包括:步骤604,在缓存行从第二级高速缓存器送入第二级高速缓存器的牺牲缓冲器的情况下,将缓存行的热位与缓存行的数据和状态一起存入牺牲缓冲器。
在一个实施例中,判断第一级高速缓存器中是否存在空闲的缓存行的步骤602包括如下中的至少一种:
在缓存行从第二级高速缓存器送入第二级高速缓存器的牺牲缓冲器之后,检测与缓存行处于同一索引域的各个第一级高速缓存器中有多少路是空闲的,如果空闲的路的数量大于预定路阈值,则判断第一级高速缓存器中存在空闲的缓存行;
在每个采样周期,统计各个第一级高速缓存器发送到第二级高速缓存器的请求的数量,如果请求的数量小于预定请求阈值,则判断第一级高速缓存器中存在空闲的缓存行;
各个第一级高速缓存器监控自己的空间占用和忙闲程度中的至少一种,如果空间占用和忙闲程度中的至少一种大于相应的预定程度阈值,则判断第一级高速缓存器中存在空闲的缓存行。
也就是说,可以通过几种方式来判断第一级高速缓存器中是否存在空闲的缓存行。
如此,判断了在第二级高速缓存器中要被替换的缓存行中是否存在未来可能再次被访问的缓存行和第一级高速缓存器中是否存在空闲的缓存行。
在一个实施例中,方法600还包括:步骤605,在判断第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,从第二级高速缓存器的牺牲缓冲器将可能再次被访问的缓存行的第一数据送到响应复用器,其中响应复用器还接收第二数据、第三数据和第四数据中的至少一个,第二数据是响应于对第一级高速缓存器的访问请求命中第二级高速缓存器中的缓存行而要被送入第一级高速缓存器中的缓存行,第三数据是从内存或第三级高速缓存器发送的,以及第四数据是从另一第一级高速缓存器发送的,其中第三级高速缓存器的访问速度比第二级高速缓存器的访问速度慢;步骤606,使得响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入第一级高速缓存器。
图8示出了根据本公开的一个实施例的图7所示的步骤606的具体流程图。
在一个实施例中,使得响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入第一级高速缓存器的步骤606还可以包括:步骤6061,使得响应复用器从接收到的第一数据、第二数据、第三数据和第四数据中选择优先级最高的数据以送入第一级高速缓存器,其中,第一数据的优先级低于第二数据、第三数据和第四数据的优先级。
这样,可以优先保证其他数据来源的数据正常地被发送到第一级高速缓存器,而在其他数据来源的数据不需要发送到第一级高速缓存器的情况下,才将第二级高速缓存器的推送数据发送到第一级高速缓存器以便进一步增加第一级高速缓存器的利用率。
在一个实施例中,使得响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入第一级高速缓存器的步骤606还可以包括:步骤6062,在第一数据被缓冲在牺牲缓冲器中达预定时间的情况下,拒绝将第一数据从牺牲缓冲器送入第一级高速缓存器,而是将第一数据送入第三存储区,其中第三存储区的访问速度比第二级高速缓存器的访问速度慢。
这样,不会让第二级高速缓存器推送数据在牺牲缓冲器中缓冲的时间过长,而导致长久没法访问这些数据。
在一个实施例中,使得响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入第一级高速缓存器的步骤606还可以包括:步骤6063,在第一数据的数量超过预定数量阈值的情况下,拒绝将第一数据从牺牲缓冲器送入第一级高速缓存器,而是将第一数据送入第三存储区,其中第三存储区的访问速度比第二级高速缓存器的访问速度慢。
这样不会让牺牲缓冲器变得过满,而影响其他要正常发送到内存的牺牲缓存行。
在一个实施例中,使得响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入第一级高速缓存器的步骤606还可以包括:步骤6064,在第一级高速缓存器的索引域中不存在空闲的路的情况下,拒绝将第一数据从牺牲缓冲器送入第一级高速缓存器,而是将第一数据送入第三存储区,其中第三存储区的访问速度比第二级高速缓存器的访问速度慢。
如此,可以在做完步骤601和602的判断步骤直到将第一数据送入第一级高速缓存器之前的时间内如果第一级高速缓存器此时不空闲了,会拒绝接收第一数据,而使得将第一数据发送到内存。
如此,可以在如上的适当的条件下拒绝接收第一数据,以保证正常的缓存替换。
另外,虽然图8中描绘了上述步骤6061-6064是顺序执行的,但是,实时本公开不限于此。本公开的实施例可以仅包括上述步骤6061-6064中的一个或多个,且可以同时执行这些步骤中的多个。例如,可以只用步骤6061来作为向第一级高速缓存器发送第一数据的规则,即在第一数据让位于第二到第四数据,从而第一数据可能在牺牲缓冲器中存储,直到其他数据没有了,才可以被推送到第一级高速缓存器,而不考虑第一数据会不会在牺牲缓冲器中等待太久或者缓冲器大小会不会被第一数据填满。或者,可以只用步骤6061和6062来考虑第一数据会不会在牺牲缓冲器中等待太久,或者可以只用步骤6061和6063来考虑缓冲器大小会不会被第一数据填满,或者可以用步骤6061-6063来同时考虑第一数据会不会在牺牲缓冲器中等待太久和缓冲器大小会不会被第一数据填满。又例如,可以只考虑步骤6061和6064来考虑第一级高速缓存器中没有空闲的路则将第一数据送入内存,而不是继续等待直到第一级高速缓存器中有空闲的路。当然,如果采用步骤6061-6064则可以获得较佳效果、即能够实现第一数据让位于其他数据且不会占用牺牲缓冲器太久时间或太多空间,而且在第一级高速缓存器没有空闲的路时就及时替换给内存,不会导致第一数据被缓冲太久而无法被访问的情况。
本公开利用多级缓存系统中的第一级缓存的空闲空间,存储将来可能会被访问的第二级牺牲数据,减轻了缓存系统的容量缺失和冲突缺失,提高了缓存的利用率。
图9示出了适于用来实现本申请实施方式的示例性计算机系统的框图。
计算机系统可以包括处理器(H1);存储器(H2),耦合于处理器(H1),且在其中存储计算机可执行指令,用于在由处理器执行时进行本申请的实施例的各个方法的步骤。
处理器(H1)可以包括但不限于例如一个或者多个处理器或者或微处理器等。
存储器(H2)可以包括但不限于例如,随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、计算机存储介质(例如硬碟、软碟、固态硬盘、可移动碟、CD-ROM、DVD-ROM、蓝光盘等)。
除此之外,该计算机系统还可以包括数据总线(H3)、输入/输出(I/O)总线(H4),显示器(H5)以及输入/输出设备(H6)(例如,键盘、鼠标、扬声器等)等。
处理器(H1)可以通过I/O总线(H4)经由有线或无线网络(未示出)与外部设备(H5、H6等)通信。
存储器(H2)还可以存储至少一个计算机可执行指令,用于在由处理器(H1)运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
在一个实施例中,该至少一个计算机可执行指令也可以被编译为或组成一种软件产品,其中所述一个或多个计算机可执行指令被处理器运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
图10示出了根据本公开的实施例的非暂时性计算机可读存储介质的示意图。
如图10所示,计算机可读存储介质1020上存储有指令,指令例如是计算机可读指令1010。当计算机可读指令1010由处理器运行时,可以执行参照以上附图描述的各个方法。计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。例如,计算机可读存储介质1020可以连接于诸如计算机等的计算设备,接着,在计算设备运行计算机可读存储介质1020上存储的计算机可读指令1010的情况下,可以进行如上所述的各个方法。
判断在第二级高速缓存器的要被的缓存行中是否存在未来可能再次被访问的缓存行判断在第二级高速缓存器的要被的缓存行中是否存在未来可能再次被访问的缓存行当然,上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本申请的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本申请的效果,这种合并和组合而成的实施例也被包括在本申请中,在此不一一描述这种合并和组合。
注意,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
本公开中的步骤流程图以及以上方法描述仅作为例示性的例子并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。方法和/或动作可以彼此互换而不脱离权利要求的范围。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何访问不被解释为将该要素限制为单数。
另外,本文中的各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本申请的概念来结合本文中的各个实施例中相关的部分步骤和部分装置以构思新的实施例,而这些新的实施例也包括在本申请的范围内。
以上描述的方法的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、专用集成电路(ASIC)或处理器。
结合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、硬碟、可移动碟、CD-ROM等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
因此,计算机程序产品可以进行在此给出的操作。例如,这样的计算机程序产品可以是具有有形存储(和/或编码)在其上的指令的计算机可读的有形介质,该指令可由处理器执行以进行在此描述的操作。计算机程序产品可以包括包装的材料。
软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或诸如红外、无线电或微波的无线技术的传输介质从网站、服务器或者其他远程源传输软件。
此外,用于进行在此描述的方法和技术的模块和/或其他适当的手段可以在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可以耦接到服务器以促进用于进行在此描述的方法的手段的传送。或者,在此描述的各种方法可以经由存储部件(例如RAM、ROM、诸如CD或软碟等的物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该设备提供存储部件时获得各种方法。此外,可以利用用于将在此描述的方法和技术提供给设备的任何其他适当的技术。
其他例子和实现方式在本公开和所附权利要求的范围和精神内。例如,由于软件的本质,以上描述的功能可以使用由处理器、硬件、固件、硬连线或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各个位置,包括被分发以便功能的部分在不同的物理位置处实现。而且,如在此使用的,包括在权利要求中使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (20)
1.一种多级高速缓存数据推送系统,包括:
第一级高速缓存器;
第二级高速缓存器,其中所述第二级高速缓存器的访问速度比第一级高速缓存器慢;
控制单元,被配置为:
判断在第二级高速缓存器的要被替换的缓存行中是否存在未来可能再次被访问的缓存行并判断第一级高速缓存器中是否存在空闲的缓存行;
在判断在第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,将所述未来可能再次被访问的缓存行前推到所述空闲的缓存行中。
2.根据权利要求1所述的系统,其中所述控制单元被配置为通过如下步骤中的至少一种来判断第二级高速缓存器中是否存在未来可能再次被访问的缓存行:
响应于从第一级高速缓存器将第一缓存行替换到第二级高速缓存器,基于指示所述第一缓存行也被存储在第零级高速缓存器中的标记,判断所述第一缓存行是未来可能再次被访问的缓存行,其中,所述第零级高速缓存器的访问速度比第一级高速缓存器快;
响应于从第一级高速缓存器将第一缓存行替换到所述第二级高速缓存器,如果所述第一缓存行的最近未被访问时间小于预定年龄阈值,判断所述第一缓存行是未来可能再次被访问的缓存行,其中所述第一缓存行的年龄是自第一所述缓存行上次被访问以来所经历的时间;
响应于对第一级高速缓存器的访问请求命中所述第二级高速缓存器中的第一缓存行,将所述第二级高速缓存器中的第一缓存行送入第一级高速缓存器中,并标记所述第一缓存行的来源为所述第二级高速缓存器,并且在从第一级高速缓存器将被标记的所述第一缓存行替换到所述第二级 高速缓存器中的情况下,判断所述第一缓存行是未来可能再次被访问的缓存行;
将对应于一个线程的存入所述第二级高速缓存器中的缓存行都判断是未来可能再次被访问的缓存行。
3.根据权利要求1-2中任一所述的系统,其中,在所述缓存行从所述第二级高速缓存器送入第二级高速缓存器的牺牲缓冲器的情况下,所述缓存行的热位与所述缓存行的数据和状态一起被存入所述牺牲缓冲器。
4.根据权利要求3所述的系统,其中,所述控制单元通过如下步骤中的至少一种来判断第一级高速缓存器中是否存在空闲的缓存行:
在所述缓存行从所述第二级高速缓存器送入第二级高速缓存器的牺牲缓冲器之后,检测与所述缓存行处于同一索引域的各个第一级高速缓存器中有多少路是空闲的,如果所述空闲的路的数量大于预定路阈值,则判断第一级高速缓存器中存在空闲的缓存行;
在每个采样周期,统计各个第一级高速缓存器发送到第二级高速缓存器的请求的数量,如果所述请求的数量小于预定请求阈值,则判断第一级高速缓存器中存在空闲的缓存行;
各个第一级高速缓存器监控自己的空间占用和忙闲程度中的至少一种,如果所述空间占用和忙闲程度中的至少一种大于相应的预定程度阈值,则判断第一级高速缓存器中存在空闲的缓存行。
5.根据权利要求4所述的系统,其中,所述控制单元被配置为:
在判断第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,从第二级高速缓存器的牺牲缓冲器将所述可能再次被访问的缓存行的第一数据送到响应复用器,其中所述响应复用器还接收第二数据、第三数据和第四数据中的至少一个,所述第二数据是响应于对第一级高速缓存器的访问请求命中所述第二级高速缓存器中的缓存行而要被送入所述第一级高速缓存器中的缓存行,第三数据是从内存或第三级高速缓存器发送的,以及第四数据是从另一第一级高速缓存器发送的,其中所述第三级高速缓存器的访问速度比第二级高速缓存器的访问速度慢;
使得所述响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入所述第一级高速缓存器。
6.根据权利要求5所述的系统,其中,所述控制单元被配置为:使得所述响应复用器从接收到的第一数据、第二数据、第三数据和第四数据中选择优先级最高的数据以送入所述第一级高速缓存器,其中,所述第一数据的优先级低于所述第二数据、第三数据和第四数据的优先级。
7.根据权利要求5所述的系统,其中,所述控制单元被配置为:在所述第一数据被缓冲在牺牲缓冲器中达预定时间的情况下,拒绝将所述第一数据从所述牺牲缓冲器送入所述第一级高速缓存器,而是将所述第一数据送入第三存储区,其中所述第三存储区的访问速度比所述第二级高速缓存器的访问速度慢。
8.根据权利要求5所述的系统,其中,所述控制单元被配置为:在所述第一数据的数量超过预定数量阈值的情况下,拒绝将所述第一数据从所述牺牲缓冲器送入所述第一级高速缓存器,而是将所述第一数据送入第三存储区,其中所述第三存储区的访问速度比所述第二级高速缓存器的访问速度慢。
9.根据权利要求5所述的系统,其中,所述控制单元被配置为:在所述第一级高速缓存器的索引域中不存在空闲的路的情况下,拒绝将所述第一数据从所述牺牲缓冲器送入所述第一级高速缓存器,而是将所述第一数据送入第三存储区,其中所述第三存储区的访问速度比所述第二级高速缓存器的访问速度慢。
10.一种多级高速缓存数据推送方法,包括:
判断在第二级高速缓存器的要被替换的缓存行中是否存在未来可能再次被访问的缓存行;
判断第一级高速缓存器中是否存在空闲的缓存行,其中,所述第二级高速缓存器的访问速度比第一级高速缓存器慢;
在判断在第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,将所述未来可能再次被访问的缓存行前推到所述空闲的缓存行中。
11.根据权利要求10所述的方法,其中所述判断第二级高速缓存器中是否存在未来可能再次被访问的缓存行包括如下中的至少一种:
响应于从第一级高速缓存器将第一缓存行替换到第二级高速缓存器,基于指示所述第一缓存行也被存储在第零级高速缓存器中的标记,判断所述第一缓存行是未来可能再次被访问的缓存行,其中,所述第零级高速缓存器的访问速度比第一级高速缓存器快;
响应于从第一级高速缓存器将第一缓存行替换到所述第二级高速缓存器,如果所述第一缓存行的最近未被访问时间小于预定年龄阈值,判断所述第一缓存行是未来可能再次被访问的缓存行,其中所述第一缓存行的年龄是自第一所述缓存行上次被访问以来所经历的时间;
响应于对第一级高速缓存器的访问请求命中所述第二级高速缓存器中的第一缓存行,将所述第二级高速缓存器中的第一缓存行送入第一级高速缓存器中,并标记所述第一缓存行的来源为所述第二级高速缓存器,并且在从第一级高速缓存器将被标记的所述第一缓存行替换到所述第二级 高速缓存器中的情况下,判断所述第一缓存行是未来可能再次被访问的缓存行;
将对应于一个线程的存入所述第二级高速缓存器中的缓存行都判断是未来可能再次被访问的缓存行。
12.根据权利要求10-11中任一所述的方法,其中,所述方法还包括:在所述缓存行从所述第二级高速缓存器送入第二级高速缓存器的牺牲缓冲器的情况下,将所述缓存行的热位与所述缓存行的数据和状态一起存入所述牺牲缓冲器。
13.根据权利要求12所述的方法,其中,所述判断第一级高速缓存器中是否存在空闲的缓存行包括如下中的至少一种:
在所述缓存行从所述第二级高速缓存器送入第二级高速缓存器的牺牲缓冲器之后,检测与所述缓存行处于同一索引域的各个第一级高速缓存器中有多少路是空闲的,如果所述空闲的路的数量大于预定路阈值,则判断第一级高速缓存器中存在空闲的缓存行;
在每个采样周期,统计各个第一级高速缓存器发送到第二级高速缓存器的请求的数量,如果所述请求的数量小于预定请求阈值,则判断第一级高速缓存器中存在空闲的缓存行;
各个第一级高速缓存器监控自己的空间占用和忙闲程度中的至少一种,如果所述空间占用和忙闲程度中的至少一种大于相应的预定程度阈值,则判断第一级高速缓存器中存在空闲的缓存行。
14.根据权利要求13所述的方法,其中,所述方法还包括:
在判断第二级高速缓存器中存在未来可能再次被访问的缓存行并判断第一级高速缓存器中存在空闲的缓存行的情况下,从第二级高速缓存器的牺牲缓冲器将所述可能再次被访问的缓存行的第一数据送到响应复用器,其中所述响应复用器还接收第二数据、第三数据和第四数据中的至少一个,所述第二数据是响应于对第一级高速缓存器的访问请求命中所述第二级高速缓存器中的缓存行而要被送入所述第一级高速缓存器中的缓存行,第三数据是从内存或第三级高速缓存器发送的,以及第四数据是从另一第一级高速缓存器发送的,其中所述第三级高速缓存器的访问速度比第二级高速缓存器的访问速度慢;
使得所述响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入所述第一级高速缓存器。
15.根据权利要求14所述的方法,其中,所述使得所述响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入所述第一级高速缓存器还包括:使得所述响应复用器从接收到的第一数据、第二数据、第三数据和第四数据中选择优先级最高的数据以送入所述第一级高速缓存器,其中,所述第一数据的优先级低于所述第二数据、第三数据和第四数据的优先级。
16.根据权利要求14所述的方法,其中,所述使得所述响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入所述第一级高速缓存器包括:在所述第一数据被缓冲在牺牲缓冲器中达预定时间的情况下,拒绝将所述第一数据从所述牺牲缓冲器送入所述第一级高速缓存器,而是将所述第一数据送入第三存储区,其中所述第三存储区的访问速度比所述第二级高速缓存器的访问速度慢。
17.根据权利要求14所述的方法,其中,所述使得所述响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入所述第一级高速缓存器包括:在所述第一数据的数量超过预定数量阈值的情况下,拒绝将所述第一数据从所述牺牲缓冲器送入所述第一级高速缓存器,而是将所述第一数据送入第三存储区,其中所述第三存储区的访问速度比所述第二级高速缓存器的访问速度慢。
18.根据权利要求14所述的方法,其中,所述使得所述响应复用器将接收到的第一数据、第二数据、第三数据和第四数据中的至少一种以送入所述第一级高速缓存器包括:在所述第一级高速缓存器的索引域中不存在空闲的路的情况下,拒绝将所述第一数据从所述牺牲缓冲器送入所述第一级高速缓存器,而是将所述第一数据送入第三存储区,其中所述第三存储区的访问速度比所述第二级高速缓存器的访问速度慢。
19.一种多级高速缓存数据推送设备,包括:
处理器;
存储器,存储了计算器可执行指令,其被处理器运行时进行如权利要求10-18中任一所述的方法。
20.一种计算机可读介质,存储有计算机可读指令,其中当所述计算机可读指令由处理器运行时,进行如权利要求10-18中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111101548.1A CN113760787B (zh) | 2021-09-18 | 2021-09-18 | 多级高速缓存数据推送系统、方法、设备和计算机介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111101548.1A CN113760787B (zh) | 2021-09-18 | 2021-09-18 | 多级高速缓存数据推送系统、方法、设备和计算机介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113760787A CN113760787A (zh) | 2021-12-07 |
CN113760787B true CN113760787B (zh) | 2022-08-26 |
Family
ID=78796475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111101548.1A Active CN113760787B (zh) | 2021-09-18 | 2021-09-18 | 多级高速缓存数据推送系统、方法、设备和计算机介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760787B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114217861A (zh) * | 2021-12-06 | 2022-03-22 | 海光信息技术股份有限公司 | 数据处理方法及装置、电子装置和存储介质 |
CN114528230B (zh) * | 2022-04-21 | 2022-12-30 | 飞腾信息技术有限公司 | 缓存数据处理方法、装置及电子设备 |
CN116257463A (zh) * | 2023-01-04 | 2023-06-13 | 格兰菲智能科技有限公司 | 混合存储方法、装置、计算机设备、存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297098A (zh) * | 2021-05-24 | 2021-08-24 | 北京工业大学 | 一种面向高性能的适应预取的智能缓存替换策略 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009000702A1 (en) * | 2007-06-28 | 2008-12-31 | International Business Machines Corporation | Method and apparatus for accessing a cache |
US8327072B2 (en) * | 2008-07-23 | 2012-12-04 | International Business Machines Corporation | Victim cache replacement |
US8484418B2 (en) * | 2010-10-22 | 2013-07-09 | Intel Corporation | Methods and apparatuses for idle-prioritized memory ranks |
JP6451538B2 (ja) * | 2015-07-22 | 2019-01-16 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
CN106909515B (zh) * | 2017-02-11 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 面向混合主存的多核共享末级缓存管理方法及装置 |
EP3572946B1 (en) * | 2017-03-08 | 2022-12-07 | Huawei Technologies Co., Ltd. | Cache replacement method, device, and system |
CN109032964A (zh) * | 2018-07-02 | 2018-12-18 | 京东方科技集团股份有限公司 | 缓存替换方法及其装置、异构多核系统 |
US11010306B2 (en) * | 2018-10-22 | 2021-05-18 | Arm Limited | Apparatus and method for managing a cache hierarchy |
US11157418B2 (en) * | 2020-02-09 | 2021-10-26 | International Business Machines Corporation | Prefetching data elements within a heterogeneous cache |
CN112612727B (zh) * | 2020-12-08 | 2023-07-07 | 成都海光微电子技术有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
-
2021
- 2021-09-18 CN CN202111101548.1A patent/CN113760787B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297098A (zh) * | 2021-05-24 | 2021-08-24 | 北京工业大学 | 一种面向高性能的适应预取的智能缓存替换策略 |
Non-Patent Citations (1)
Title |
---|
一种基于LRU算法改进的缓存方案研究与实现;廖鑫;《电子工程师》;20080715(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113760787A (zh) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113760787B (zh) | 多级高速缓存数据推送系统、方法、设备和计算机介质 | |
US10558577B2 (en) | Managing memory access requests with prefetch for streams | |
US20110072218A1 (en) | Prefetch promotion mechanism to reduce cache pollution | |
US6643747B2 (en) | Processing requests to efficiently access a limited bandwidth storage area | |
US8949544B2 (en) | Bypassing a cache when handling memory requests | |
US8176255B2 (en) | Allocating space in dedicated cache ways | |
US7669009B2 (en) | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches | |
US7073030B2 (en) | Method and apparatus providing non level one information caching using prefetch to increase a hit ratio | |
US10725923B1 (en) | Cache access detection and prediction | |
US10929308B2 (en) | Performing maintenance operations | |
TW201011537A (en) | Apparatus and method for ensuring data coherency within a cache memory hierarchy of a microprocessor | |
JP2007200292A (ja) | エントリの時間経過によるキャッシュ・エントリの所有権喪失 | |
EP2224343A1 (en) | Data processing system | |
US7844777B2 (en) | Cache for a host controller to store command header information | |
US6959363B2 (en) | Cache memory operation | |
US7454580B2 (en) | Data processing system, processor and method of data processing that reduce store queue entry utilization for synchronizing operations | |
JP3463292B2 (ja) | キャッシュ動作要求間の競合に応答して置換用の代替キャッシュ・エントリを選択する方法及びシステム | |
US9996478B1 (en) | No allocate cache policy | |
CN114217861A (zh) | 数据处理方法及装置、电子装置和存储介质 | |
US7610458B2 (en) | Data processing system, processor and method of data processing that support memory access according to diverse memory models | |
US6792498B2 (en) | Memory system with mechanism for assisting a cache memory | |
US8656106B2 (en) | Managing unforced injections of cache lines into a cache utilizing predetermined address ranges | |
US8392660B2 (en) | Cache system including a plurality of processing units | |
JP2014186579A (ja) | キャッシュメモリ、キャッシュメモリ制御装置、および、そのキャッシュメモリ制御方法 | |
US20070101064A1 (en) | Cache controller and method |
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 |