CN112612727A - 一种高速缓存行替换方法、装置及电子设备 - Google Patents
一种高速缓存行替换方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112612727A CN112612727A CN202011424764.5A CN202011424764A CN112612727A CN 112612727 A CN112612727 A CN 112612727A CN 202011424764 A CN202011424764 A CN 202011424764A CN 112612727 A CN112612727 A CN 112612727A
- Authority
- CN
- China
- Prior art keywords
- cache line
- cache
- request
- state
- tag
- 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
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
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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
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
本发明的实施例公开一种高速缓存行替换方法、装置及电子设备,涉及缓存行管理技术领域,能够避免发生L3优先替换掉在cluster中只有一个副本的缓存行而影响缓存的命中率的问题。所述高速缓存行替换方法,包括:接收二级缓存的牺牲请求;获取三级缓存中与第一缓存行地址对应且具有多个副本的第二缓存行;根据预定选择策略从获取的第二缓存行中选择一个缓存行,作为用于替换第一缓存行的目标缓存行;读取目标缓存行信息,并将第一缓存行数据及状态信息写入到目标缓存行中。本发明能提高缓存的命中率,从而降低了系统延迟。
Description
技术领域
本发明涉及缓存行管理技术领域,尤其涉及一种高速缓存行替换方法、装置及电子设备。
背景技术
因为计算机的内存有限,一般所使用的指令及数据存储于硬盘等外设中,等CPU真正需要使用到该指令或数据时,才会将相应的指令及数据般到内存中。因为CPU一般工作在很高的频率,而内存又工作在相对比较低的频率,所以如果CPU每次等到要使用时才从内存中获取相应数据,那么会严重的阻塞处理器核心core的流水线,使CPU性能下降。为了提高core的流水线效率,一般会在core和内存直接增加多级缓存,用以存放那些经常会被使用到的指令或数据。这样,core访问那些经常被使用的数据时,就不用在访问频率相对比较低的内存,从而提高CPU性能。因为缓存的容量有限,只能存放那些经常会被访问的数据,对于那些相对不经常访问的数据,一般只能存放于内存甚至是硬盘等外设中。因此对于core下发的仿存指令,能否在缓存中命中直接影响着CPU的性能。
现有的多级缓存结构中,每个core有一个私有的一级缓存L1(数据缓存和指令缓存),一个私有的二级缓存L2同时存放数据和指令,在同一个cluster中所有core共享一个三级缓存L3。因为每级缓存的容量有限,为了尽量提供各级缓存的命中率,一般在缓存容量满的情况下,采用替换算法将相对不经常被访问的cache line(缓存行)替换出来存到下级缓存,空出来的位置存放最新从下级缓存读上来的数据。如在L2满的情况下,L2将替换出来的cache line存到L3中。同样的,如果此时L3相同index的多个way都满了,也会采用基于年龄的替换算法,替换出来一条cache line。现有技术中,因没有考虑cache line在cluster中是只有一个副本还是有多个副本,统一采用基于年龄的替换算法,常常发生替换掉在cluster中只有一个副本的cache line,而保留有多个副本的cache line,从而降低请求在cluster中的命中率。如果在L3的某个index满的情况下,如果有一条年龄为3,并且为E状态的cache line A,同时有一条年龄为2,并且为S状态的cache line B,替换算法会选择替换cache line A,而保留在cluster中有多个副本的cache line B,这样当core需要再次访问cache line A时,因为在整个cluster中miss了,需要进一步访问低速的内存才能取得相应的数据,而访问内存的延迟往往在毫秒级,严重的影响CPU的性能。
因此急需一种缓存行替换方案,避免发生L3优先替换掉在cluster中只有一个副本的缓存行,而保留在cluster中有多个副本的缓存行,从而影响缓存的命中率的问题。
发明内容
有鉴于此,本发明实施例提供一种高速缓存行替换方法、装置及电子设备,能够避免发生L3优先替换掉在cluster中只有一个副本的缓存行,而保留在cluster中有多个副本的缓存行,从而影响缓存的命中率的问题。
第一方面,本发明实施例提供一种高速缓存行替换方法,用于三级缓存,包括:
接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;
获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行;
根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;
读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。
结合第一方面,在第一方面的第一种可实施方式中,在所述接收二级缓存的牺牲请求之前,还包括:
根据预设的缓存行状态定义,标记标签数据阵列中各个缓存行的状态;所述缓存行状态包括RS;所述RS状态用于表示当前缓存行中包含的数据有效,且在当前缓存系统中,至少有一个缓存行处于S/F/Fe/0/0d状态,并且所述当前缓存行晚于其它处于S/F/Fe/0/0d状态的缓存行得到缓存行副本;
其中,所述获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行,包括:
判断所述牺牲请求在标签数据阵列中是否可以命中;
若所述牺牲请求在标签数据阵列未命中,则继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲;
若所述牺牲请求在标签数据阵列中未命中,且所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行都没有空闲,则继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行;
若所述标签数据阵列中与所述第一缓存行地址对应的缓存行中存在至少一个RS状态的缓存行,则将所述RS状态的缓存行作为所述第二缓存行。
结合第一方面,在第一方面的第二种可实施方式中,所述根据预定选择策略从获取的多个所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行,包括:
选择当前时刻之前预定时长内使用次数最少的第二缓存行,作为所述目标缓存行。
结合第一方面的第一种可实施方式,在第一方面的第三种可实施方式中,在所述判断所述牺牲请求在标签数据阵列中是否可以命中之后,还包括:
若所述牺牲请求在标签数据阵列中命中,则将所述第一缓存行的数据及状态信息写入命中缓存行中。
结合第一方面的第一种可实施方式,在第一方面的第四种可实施方式中,在所述判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲之后,还包括:
若所述标签数据阵列中与所述第一缓存行地址对应的缓存行有空闲,则将所述第一缓存行的数据及状态信息写入到任一与所述第一缓存行地址对应的有空闲的缓存行中。
结合第一方面的第一种可实施方式,在第一方面的第五种可实施方式中,在所述判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行之后,还包括:
若所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行的状态都不是RS状态,则继续判断所述第一缓存行的状态是否为RS状态;
若所述第一缓存行的状态不为RS状态,则选择当前时刻之前预定时长内使用次数最少的缓存行作为第三缓存行;
将所述第一缓存行的数据及状态信息写入所述第三缓存行中。
结合第一方面的第一种可实施方式,在第一方面的第六种可实施方式中,所述标签数据阵列用于存储三级缓存中各个缓存行的有效位、标签位、数据位和状态位;所述标签位用于存储缓存行的物理地址的第N:20位;其中,所述N为所述缓存行的物理地址的最高位。
结合第一方面的第六种可实施方式,在第一方面的第七种可实施方式中,在所述标签数据阵列中,以当前缓存地址的19∶6的位置为索引;
获取所述索引对应的多路缓存中的标签位;
判断获取的所述标签位中是否有所述第一缓存行地址的第N:20位地址;
若是,则判定所述牺牲请求在标签数据阵列中命中;否则,判定所述牺牲请求在标签数据阵列中未命中。
结合第一方面的第七种可实施方式,在第一方面的第八种可实施方式中,在将所述第一缓存行数据及状态信息写入到所述目标缓存行中之后,还包括:
根据寄存器配置以及所述目标缓存行状态信息,将所述目标缓存行丢弃/牺牲到主存储器;
将阴影标签阵列中所述牺牲请求对应的处理器核心core中对应的索引中对应一路的缓存行的状态信息无效。
结合第一方面,在第一方面的第九种可实施方式中,在所述接收二级缓存的牺牲请求之后,所述获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行之前,还包括:
将所述牺牲请求存入第一请求队列中;所述第一请求队列依据先入先出原则仲裁其内的牺牲请求;
当仲裁出所述牺牲请求时,将其存储到牺牲请求队列,同时释放所述第一请求队列中对应的条目;
通过处理器核心接口CI向所述牺牲请求对应的二级缓存发送读数据请求;
接收二级缓存返回的缓存行数据及状态信息。
第二方面,本发明实施例提供一种高速缓存行替换装置,用于三级缓存,包括:
牺牲请求接收模块,用于接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;
副本获取模块,用于获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行;
缓存行选择模块,用于根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;
读写模块,用于读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。
结合第二方面,在第二方面的第一种可实施方式中,所述高速缓存行替换装置,还包括:
状态设置模块,用于根据预设的缓存行状态定义,标记标签数据阵列中各个缓存行的状态;所述缓存行状态包括RS;所述RS状态用于表示当前缓存行中包含的数据有效,且在当前缓存系统中,至少有一个缓存行处于S/F/Fe/0/0d状态,并且所述当前缓存行晚于其它处于S/F/Fe/0/0d状态的缓存行得到缓存行副本;
其中,所述副本获取模块,包括:
命中判断子模块,用于判断所述牺牲请求在标签数据阵列中是否可以命中;
空闲判断子模块,用于在所述命中判断子模块的判断结果为否时,继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲;
第一RS状态判断子模块,用于在所述命中判断子模块的判断结果为否,且所述空闲判断子模块的判断结果为否时,继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行;
第一缓存行确定子模块,用于在所述第一RS状态判断子模块判断出所述标签数据阵列中与所述第一缓存行地址对应的缓存行中存在至少一个RS状态的缓存行时,将所述RS状态的缓存行作为所述第二缓存行。
结合第二方面,在第二方面的第二种可实施方式中,所述缓存行选择模块,还用于选择当前时刻之前预定时长内使用次数最少的第二缓存行,作为所述目标缓存行。
结合第二方面的第一种可实施方式,在第二方面的第三种可实施方式中,所述高速缓存行替换装置,还包括:
第一缓存行写入模块,用于在所述命中判断子模块的判断结果为是时,将所述第一缓存行的数据及状态信息写入命中缓存行中。
结合第二方面的第一种可实施方式,在第二方面的第四种可实施方式中,所述高速缓存行替换装置,还包括:
第二缓存行写入模块,用于在所述空闲判断子模块的判断结果为是时,将所述第一缓存行的数据及状态信息写入到任一与所述第一缓存行地址对应的有空闲的缓存行中。
结合第二方面的第一种可实施方式,在第二方面的第五种可实施方式中,所述高速缓存行替换装置,还包括:
第二RS状态判断子模块,用于在所述第一RS状态判断子模块判断出所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行的状态都不是RS状态时,继续判断所述第一缓存行的状态是否为RS状态;
第二缓存行确定子模块,用于在所述第二RS状态判断子模块的判断结果为否时,选择当前时刻之前预定时长内使用次数最少的缓存行作为第三缓存行;
写入子模块,用于将所述第一缓存行的数据及状态信息写入所述第三缓存行中。
结合第二方面的第一种可实施方式,在第二方面的第六种可实施方式中,所述标签数据阵列用于存储三级缓存中各个缓存行的有效位、标签位、数据位和状态位;所述标签位用于存储缓存行的物理地址的第N:20位;其中,所述N为所述缓存行的物理地址的最高位。
结合第二方面的第六种可实施方式,在第二方面的第七种可实施方式中,所述命中判断子模块,包括:
索引获取单元,用于在所述标签数据阵列中,以当前缓存地址的19∶6的位置为索引;
标签位获取单元,用于获取所述索引对应的多路缓存中的标签位;
命中判断单元,用于判断所述标签位获取单元获取的所述标签位中是否有所述第一缓存行地址的第N:20位地址;若是,则判定所述牺牲请求在标签数据阵列中命中;否则,判定所述牺牲请求在标签数据阵列中未命中。
结合第二方面的第七种可实施方式,在第二方面的第八种可实施方式中,所述高速缓存行替换装置,还包括:
目标缓存行处理模块,用于根据寄存器配置以及所述目标缓存行状态信息,将所述目标缓存行丢弃/牺牲到主存储器;
阴影标签阵列设置模块,用于将阴影标签阵列中所述牺牲请求对应的处理器核心core中对应的索引中对应一路的缓存行的状态信息无效。
结合第二方面,在第二方面的第九种可实施方式中,所述高速缓存行替换装置,还包括:
请求队列写入模块,用于将所述牺牲请求存入第一请求队列中;所述第一请求队列依据先入先出原则仲裁其内的牺牲请求;
牺牲队列写入模块,用于当仲裁出所述牺牲请求时,将其存储到牺牲请求队列,同时释放所述第一请求队列中对应的条目;
数据请求模块,用于通过处理器核心接口CI向所述牺牲请求对应的二级缓存发送读数据请求;
数据接收模块,用于接收二级缓存返回的缓存行数据及状态信息。
第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施方式所述的高速缓存行替换方法。
本发明实施例提供的高速缓存行替换方法、装置及电子设备,对现有的一致性协议中的状态进行了优化,增加了一个冗余共享状态(RS态),并重新定义了原有的共享状态(S态),三级缓存在某个索引的所有路都满的情况下,优先替换掉RS状态的缓存行,在某个索引的所有路都满的情况下,并且所有路中没有RS状态的缓存行时,不将上级缓存替换的RS状态的缓存行存到本级缓存。因对于有多个副本的冗余共享状态(RS状态)的缓存行有选择的进行存储,缓存能够存储更多只有一个副本的缓存行,提高了缓存的利用效率;因会尽量避免替换在缓存系统中只有一个副本的缓存行,因此缓存系统能够存储更多只有一个副本的缓存行,因而提高了缓存的命中率,从而降低了系统延迟。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明高速缓存行替换方法实施例一的流程示意图;
图2为缓存系统结构示意图;
图3为阴影标签阵列结构示意图;
图4为L3标签数据阵列结构示意图;
图5为L3控制器结构示意图;
图6为L2读请求的处理流程示意图;
图7为主存储器侦听请求处理流程示意图;
图8为步骤S102之前包括的方法流程示意图;
图9为本发明高速缓存行替换方法实施例二的流程示意图;
图10为S及RS状态转换示意图;
图11为RS状态升级为0d状态的过程示意图;
图12为步骤S303包括的方法流程示意图;
图13为本发明高速缓存行替换装置实施例一的结构示意图;
图14为本发明高速缓存行替换装置实施例二的结构示意图;
图15为本发明高速缓存行替换装置实施例三的结构示意图;
图16为本发明高速缓存行替换装置实施例四的结构示意图;
图17为本发明高速缓存行替换装置实施例五的结构示意图;
图18为本发明高速缓存行替换装置实施例六的结构示意图;
图19为本发明高速缓存行替换装置实施例七的结构示意图;
图20为本发明高速缓存行替换装置实施例八的结构示意图;
图21本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明高速缓存行替换方法实施例一的流程示意图。参看图1,本发明高速缓存行替换方法实施例,用于三级缓存,包括如下步骤:
S101、接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;
S102、获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行;
本实施例中,将具有与所述第一缓存行地址对应(对应的方式为索引相同)且具有多个副本的第二缓存行作为候选的待替换的缓存行,因为具有多个副本,则将多个副本的第二缓存行替换后,并不会影响第二缓存行的访问效率,因为在缓存系统中,该副本仍然存在。
S103、根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;
本实施例中,作为一可选实施例,本步骤可以为:选择当前时刻之前预定时长内使用次数最少的第二缓存行,作为所述目标缓存行。因为最近常用的缓存行,在后续的缓存行中访问中,更容易被访问到,从而提高了缓存行的访问命中率。
S104、读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。
本发明实施例提供的高速缓存行替换方法,避免了L3优先替换掉在cluster中只有一个副本的缓存行,而保留在cluster中有多个副本的缓存行,从而影响缓存的命中率的问题。本发明实施例提供的高速缓存行替换方法,使缓存优先替换掉在cluster有多个副本的缓存行,在相同index的所有way都是只有一个副本的缓存行的情况下,才基于年龄替换相对不经常访问的缓存行,从而提高缓存的适用效率和缓存的命中率。
图2所示为本实施例提供的方法应用的缓存系统结构示意图,该缓存系统包括:
(1)4个处理器核心;
(2)一个专用的一级数据缓存L1D(Level 1 Data Cache),用于缓存每个处理器核心经常使用到的数据,同时处理接收到的对应L2的侦听请求,以及返回侦听请求的响应到对应的L2;
(3)一个专用的一级指令缓存L1I(Level 1 Instruction Cache),用于缓存每个处理器核心经常使用到的指令,同时处理接收到的对应L2的侦听请求,以及返回侦听请求的响应到对应的L2;
(4)一个专用的指令和数据共享的二级缓存L2,用于存储每个处理器核心L1D/L1I牺牲到L2的数据及指令,以及当L1D/L1I的读缓存请求命中对应的L2时,向L1D/L1I返回读请求对应的缓存行。同时处理收到的L3的侦听请求依据一定的条件向对应的L1D/L1I转发L3的侦听请求,以及向L3返回侦听请求响应。
(5)一个4个处理器核心共享的三级缓存L3。其中,如图2中所示,三级缓存L3可以包括:核心接口CI(Core Interface)、复合接口XI(complex Interface)、L3控制器、阴影标签存储器、L3标签/数据存储器;
5.1)核心接口CI为与4个L2的接口单元,用于接收及响应4个L2的读写缓存请求,并返回响应以及在必要时向对应的L2发送侦听请求及响应;L3从CI接收到L2的读缓存请求后,将请求存储到L3控制器的L2请求队列中,如请求队列已满,则CI不能接收各个L2的请求,并提供反压信号通知L2,L3中的请求队列已满,各个L2不能向L3发送请求,直到反压信号拉低。
5.2)复合接口XI为L3与主存储器的接口单元,用于将L2的读写请求在L3查询数据标签阵列以及其他核心的阴影标签阵列之后,无法满足该请求要求时,将请求发送给主存储器,以及接受主存储器返回的响应,同时接收主存储器的侦听请求及返回侦听响应给主存储器;L3从XI接收到主存储控制器的侦听请求后,将侦听请求存储到L3控制器的侦听请求队列中,如侦听请求队列已满,则XI不能接收主存储控制器的侦听请求,并提供反压信号通知主存储控制器,L3中的侦听请求队列已满,主存储控制器不能再发生侦听请求,直到反压信号拉低。
5.3)L3控制器用于控制L2的读写/牺牲请求以及主存储器的侦听请求访问L3标签/数据存储器存储的标签数据阵列以及访问阴影标签存储器中存储的阴影标签阵列,或控制将侦听请求转发给必要的L2。
5.4)阴影标签存储器:用于存储阴影标签阵列。其中,如图3所示,阴影标签阵列分别存储4个L2中缓存行的地址以及状态位。以core0的阴影标签为例,若L2的物理结构是1024*8,则阴影标签存储器中采用缓存地址的第15:6作为索引,每个索引包含8路缓存,若L2的物理结构是1024*16路的形式,则阴影标签存储器中采用缓存地址的第15:6作为索引,每个索引包含16路缓存;每个对应的索引和way存储着对应L2中对应索引和way中缓存行的地址及状态位。对于其中的任意一个索引条目,其结构如图3所示:有效位表示该缓存行是否有效,标签位用于存储缓存行的物理地址N:16位,其中N为物理地址的最高位,高位N是随着物理地址的bit数可变的,状态位用于标记该缓存行的状态。阴影标签阵列中的状态位共有8种状态,具体包括:I(0000)、S(0001)、F(0101)、Fe(0110)、0(0111)、0d(1000)、RS(1001)和X(1010),其中X为E、M、D状态的集合,此状态只用于阴影标签阵列,图3中的8种状态在后文中再进行详细说明。值得说明的是,若L2的物理结构是每路2048个索引,则阴影标签存储器可能采用缓存物理地址的第16:6位作为索引,索引具体采用物理地址的哪些位,需要根据L2的物理结构确定。此外,对于不同的缓存结构,每个索引条目的标签位也会有所不同,具体地,标签位存储缓存行的物理地址除索引位外的所有位。
5.5)L3标签/数据存储器:用于存储L3标签数据阵列。用于存储缓存行的标签位、数据位、状态位;本实施例中,标签数据阵列的结构如图4所示,索引位数和路的数量是依据L3的物理结构确定的,图4中为表示方便,采用缓存地址的第19:6作为索引,每个索引包含16路缓存,所有相同索引的缓存根据替换算法,可以存入16路中的任意一路。对于其中的任意一个索引条目,包括了:有效位、标签位、数据位、状态位,其中,有效位表示该缓存行是否有效,标签位用于存储缓存行的物理地址N:20位,其中N为物理地址的最高位,数据位用于存储该缓存行完整的64byte数据,状态位用于标记该缓存行的状态,L3标签数据阵列的状态位共有10种状态,具体包括:I(0000)、S(0001)、E(0010)、M(0011)、D(0100)、F(0101)、Fe(0110)、0(0111)、0d(1000)和RS(1001),这10种状态在后文中再进行详细说明。
(6)主存储控制器,用于连接一个或多个L3。当其中一个L3的读缓存请求在其它一个或多个L3中命中时,控制发送侦听请求到对应的L3中,并返回对应的缓存行给对应的L3;当L3的读缓存请求在所有其它L3中都缺失时,控制读请求访问主存储器,并从主存储器取得缓存行后,返回给对应的L3。
(7)主存储器,存储缓存行信息。
图2中的L3控制器如图5所示,主要包括:L2请求队列、请求命中队列、请求缺失队列、牺牲请求队列、侦听请求队列、L2侦听请求队列;各队列的功能定义如下:
L2请求队列:通过接口③接收CI接收到的各个L2的读缓存/牺牲缓存请求。并依据接收到的请求先后顺序以及请求所需资源是否充足将请求仲裁出并通过接口⑥、⑦分别访问L3标签数据阵列、阴影标签阵列。对于读缓存请求,请求从L2请求队列中仲裁出来,需要请求命中队列以及请求缺失队列有空闲,以备L2请求队列查询L3标签数据阵列以及阴影标签阵列后,根据请求在缓存系统中的命中情况,通过接口⑤将请求存入请求命中队列或通过接口⑩将请求存入请求缺失队列做进一步处理。对于牺牲请求,请求从L2请求队列中仲裁出来,需要牺牲队列有空闲,以备L2请求队列将牺牲请求仲裁出来后通过接口⑨将请求存入牺牲请求队列做进一步处理。
请求命中队列,L2请求队列将读缓存请求仲裁出来后,查询L3标签数据阵列和阴影标签阵列后,如果查询结果显示该缓存行在L3标签数据阵列或者阴影标签阵列中命中,则L2请求队列将该读缓存请求通过5发送给请求命中队列做进一步处理。如果该请求是在L3标签数据阵列中命中,则L2请求队列通过接口⑦读出L3标签数据阵列中的缓存行后,将缓存行通过接口⑤发送给请求命中队列。如果该请求是在阴影标签阵列中命中,则请求命中队列在收到请求后,通过接口④发送一个或多个侦听请求到L2侦听请求队列,待收到侦听请求的core返回响应及缓存行后,请求命中队列通过接口②将缓存行发送给请求对应的core。
请求缺失队列,L2请求队列将读缓存请求仲裁出来后,查询L3标签数据阵列和阴影标签阵列后,如果查询结果显示该缓存行在L3标签数据阵列和阴影标签阵列中都缺失,则L2请求队列将该读缓存请求通过接口⑩发送给请求缺失队列。在请求缺失队列中,依据请求进入缺失队列的先后顺序,将请求仲裁出来后,通过接口发送给XI,并发送给主存储控制器。收到XI的响应后,通过接口将请求响应发送给CI,并返回给请求对应的core。
牺牲请求队列,牺牲请求队列通过接口⑨收到牺牲请求后,向对应的core发送读缓存行请求,待对应的core返回缓存行后,依据替换规则将缓存行存入L3标签数据阵列或者发送到主存储器。对应的core返回缓存行后,同时更新对应core的阴影标签阵列。如从core返回的缓存行需要存入L3标签数据阵列,同时L3标签数据阵列中所对应的索引的所有way都满了,则需要替换掉L3标签数据阵列中的一个way,所替换出来的缓存行存入牺牲请求队列中该L2牺牲请求所在条目,待进一步决定是否发生给主存储器。
侦听请求队列,L3控制器从13接收到主存储控制器通过XI发送的侦听请求后,依据收到的请求的先后顺序,将请求总裁出来并访问L3标签数据阵列,阴影标签阵列和牺牲请求队列。如果仲裁出的请求查询阴影标签阵列后,发现请求对应的缓存行在一个或多个core内,则侦听请求队列通过接口⑧发送一个或多个L2侦听请求到L2侦听请求队列。待收到core内侦听请求的响应后,依据L3标签数据阵列以及牺牲请求队列的命中情况,生成侦听请求响应返回给主存储控制器。
L2侦听请求队列,L2侦听请求队列从接口④、⑧收到L2侦听请求后,依据收到L2侦听请求的先后顺序以及所对应的core是否能接收侦听请求将L2侦听请求仲裁出来并发送给对应的core,待收到对应的core的响应后,将响应发送给请求命中队列或侦听请求队列。
如前所述,三级缓存需要首先对二级缓存的读请求进行处理,以获取牺牲请求,图6所示为L2读请求的处理流程,如图6所示,L3对L2的读请求处理流程包括以下步骤A1-A10:
步骤A1:L3从CI接收L2的读缓存请求;
此步骤中,接收读缓存请求后,将所述读缓存请求存储到L3控制器的L2请求队列中,如请求队列已满,则CI不能接收各个L2的请求,并提供反压信号通知L2,L3中的请求队列已满,各个L2不能向L3发送请求,直到反压信号拉低。
步骤A2:请求访问L3标签数据阵列及阴影标签阵列;
此步骤中,L3控制器中的L2请求队列依据收到请求的先后顺序以及对应的请求所需资源是否充足从L2请求队列中仲裁出L2请求,并查询L3标签数据阵列以及阴影标签阵列:
步骤A3:判断所述读缓存请求是否在缓存系统中命中;若是,则执行步骤A6,否则执行步骤A4;
此步骤中,L3控制器查询L3标签数据阵列时,根据请求地址的19:6所对应的索引,读出所有16路的标签位,然后和请求地址的第N:20位进行比较,如读出的所有16路的标签位有和请求地址的第N:20位相同的,则说明该请求命中了对应的路。L3控制器查询阴影标签阵列时,以请求地址的15:6位为索引,读出4个core中对应索引的所有8路的标签位,然后和请求地址的第N:16位进行比较,如4个core中对应索引的所有8路中有一路的地址第N:16位和请求地址的第N:16位相同,则说明该请求命中了对应core中对应索引的对应路。
步骤A4:发送读缓存请求到主存储控制器;
本实施例中,如果L3控制器查询L3标签数据阵列以及阴影标签阵列均缺失,即请求在缓存系统中没有命中,L3控制器则将请求存入请求缺失队列,同时释放请求队列中对应的条目,待请求缺失队列将其仲裁出来后发到主存储器控制器,由主存储控制器侦听其它缓存系统或者访问主存储器后返回数据及状态到请求缺失队列。
步骤A5:接收主存储控制器响应,随后执行步骤A10;
步骤A6:判断是否需要侦听其他L2;
本实施例中,如果L3控制器查询L3标签数据阵列,所述读缓存请求在L3标签数据阵列命中,不需要侦听其他L2,执行步骤A7,L3控制器则将请求存入请求命中队列,同时释放请求队列中对应的条目。
如果L3控制器查询L3标签数据阵列以及阴影标签阵列后,L3标签数据阵列缺失,同时阴影标签阵列指示在其它L2中命中,L3控制器则将请求存入请求命中队列,同时释放请求队列中对应的条目,断定需要侦听其他L2,执行步骤A8。
步骤A7:读出L3标签数据阵列中的缓存行,随后执行步骤A10;
本步骤中,将数据从L3标签/数据阵列中的数据、状态读出。
步骤A8:发送侦听请求到L2;
本步骤中,向阴影标签阵列指示对应的一个或多个L2发送侦听请求。
步骤A9:接收L2的侦听响应,随后执行步骤A10;
此步骤中,待收到L2的侦听响应及数据后,存放至请求命中队列相应的条目中。
步骤A10:发送读缓存响应到请求对应的L2。
本实施例中,请求缺失队列在收到主存储控制器的响应之后,L3将数据返回给对应的L2;或者收到L2的侦听响应及数据后,存放至请求命中队列相应的条目中,之后经由CI将数据、状态返回给相应的L2;或者,将数据从L3标签/数据阵列中的数据、状态读出后,存放至请求命中队列相应的条目中,之后经由CI将数据、状态返回给相应的L2。并更新阴影标签阵列中对应core的对应索引中对应路的信息,同时释放请求缺失队列中对应的条目。
对于有多个缓存系统的GPU系统,在某个缓存系统中缺失的缓存行,有可能在其它缓存系统中命中,为了尽量避免从主存储器中读缓存行而导致延迟增大,本发明实施例中,如前(6)中所述,主存储控制器收到某个缓存系统的读缓存请求的时候,发现该缓存行在其它的一个或多个缓存系统中,主存储控制器会向其中的一个或多个缓存系统发送侦听请求,将缓存行从命中的一个缓存系统读回来,或将其它命中的缓存系统的缓存行无效。图7所示为主存储器侦听请求的处理流程图,具体包括如下步骤B1-B8:
步骤B1:L3接收主存储器的侦听请求;
L3通过XI接收到主存储器的侦听请求之后,存入L3控制器的侦听请求队列中,L3控制器依据侦听请求进入侦听请求队列的先后顺序依次将请求从L3控制器中仲裁出来。
步骤B2:查询L3标签数据阵列以及阴影标签阵列。
本步骤中,L3控制器查询L3标签数据阵列时,根据主存储器的侦听请求地址的19∶6所对应的索引,读出所有16路的标签位,然后和请求地址的第N:20位进行比较,如读出的所有16路的标签位有和请求地址的第N:20为相同的,则说明该请求命中了对应的路。
L3控制器查询阴影标签阵列时,以请求地址的15:6位为索引,读出4个core中对应索引的所有8路的标签位,然后和请求地址的第N:16位进行比较,如4个core中对应索引的所有8路中有一路的地址第N:16位和请求地址的第N:16位相同,则说明该请求命中了对应core中对应索引的对应路。
步骤B3:判断是否需要侦听其他L2;
本实施例中,L3控制器依据查询结果,如果在阴影标签阵列中命中一个或多个core,L3控制器依据侦听请求类型,判断是否需要进一步侦听在阴影标签阵列中命中的core。如果需要侦听阴影标签阵列中命中的core,则执行步骤B4;如果不需要进一步侦听L2,则执行步骤B6;
步骤B4:发送侦听请求到L2;
本实施例中,L3控制器依据阴影标签阵列中各个core的命中状态,选择一个或多个命中的core发送L2侦听请求,并将L2侦听请求发送给L2侦听请求队列。同时根据侦听请求的类型以及阴影标签阵列中命中的状态,选择要求命中的core是否返回数据,若要求命中的core返回数据,则执行步骤B5。
步骤B5:接收对应的core返回的L2侦听响应,继续执行步骤B8;
其中,所述L2侦听相应包括缓存行状态及数据。
步骤B6:判断是否命中L3标签数据阵列,若是,则执行步骤B7;否则,执行步骤B8;
本实施例中,如果不需要进一步侦听L2,则L3控制器依据查询结果判断是否命中L3标签数据阵列,如果命中L3标签数据阵列,则执行步骤B7;若该侦听请求在阴影标签阵列及L3标签数据阵列中都没有命中,则直接执行步骤B8。
步骤B7:读出当前命中的缓存行的数据及状态,并执行步骤B8;
步骤B8:生成侦听响应并发送到主存储控制器;
本实施例中,L3控制器结合查询L3标签数据阵列的状态计算侦听请求的响应的状态,并通过XI向主存储控制器发送侦听请求响应。同时释放侦听请求队列中对应的条目,并更新阴影标签阵列中对应core中对应缓存的状态。
本实施例中,作为一可选实施例,如图8所示,本步骤S102之前,还包括步骤S201-S204:
S201、将所述牺牲请求存入第一请求队列中;所述第一请求队列依据先入先出原则仲裁其内的牺牲请求;
值得说明的是,第一请求队列中还包括L2的读请求,此处不再赘述。
S202、当仲裁出所述牺牲请求时,将其存储到牺牲请求队列,同时释放所述第一请求队列中对应的条目;
S203、通过处理器核心接口CI向所述牺牲请求对应的二级缓存发送读数据请求;
S204、接收二级缓存返回的缓存行数据及状态信息。
图9为本发明高速缓存行替换方法实施例二的流程示意图。参看图9,本发明高速缓存行替换方法实施例,包括如下步骤:
S301、根据预设的缓存行状态定义,标记标签数据阵列中各个缓存行的状态;
本实施例中,L3标签数据阵列缓存行状态包括:RS、I、S、E、M、D、F、Fe、0和0d,其具体定义如下:
RS状态,此状态为新增状态,用于表示当前缓存行中包含的数据有效,且在当前缓存系统中,至少有一个缓存行处于S/F/Fe/0/0d状态,并且所述当前缓存行晚于其它处于S/F/Fe/0/0d状态的缓存行得到缓存行副本;当一个缓存行状态为RS时,其包含的数据并不一定与存储器一致。如果在其他缓存中不存在状态为0/0d的副本时,该缓存行中的数据与存储器一致;如果在其他的缓存中存在状态为0/0d的副本时,缓存行中的数据与存储器不一致。
I状态,表示缓存行无效;
S状态,此状态为修改了一种状态,表示缓存行中包含的数据有效,并处于共享状态。在当前缓存和至少在其他一个缓存中系统可能也具有多个副本。在该缓存行中的数据是当前处理器系统中最新的数据拷贝,而且与存储器中的数据一致。该缓存行为当前缓存系统中最先得到该副本的缓存,在该缓存行之后得到该副本的缓存行为RS状态。
E状态,表示缓存行中包含的数据有效,并且处于独占状态。在所有缓存系统中,只有当前缓存中有该缓存的副本。在该缓存行中的数据是当前处理器系统中最新的数据拷贝,而且与存储器中的数据一致。
M状态,表示缓存行中包含的数据有效,并且处于独占修改状态。在所有缓存系统中,只有当前缓存中有该缓存的副本,并且该缓存行在当前缓存系统中有修改。在该缓存行中的数据是当前处理器系统中最新的数据拷贝,而且与存储器中的数据不一致。
D状态,表示缓存行中包含的数据有效,并且处于独占修改状态,在所有缓存系统中,只有当前缓存中有该缓存的副本,并且该缓存行在其它缓存系统中修改后。在该缓存行中的数据是当前处理器系统中最新的数据拷贝,而且与存储器中的数据不一致。
F状态,表示缓存行中包含的数据有效。在所有缓存系统中,可能有多个副本,而且与存储器中的数据一致,但只有一个副本为F状态,其它副本为S或RS状态。
Fe状态,表示缓存行中包含的数据有效。在所有缓存系统中,可能有多个副本,而且与存储器中的数据一致,但只有一个副本为Fe状态,其它副本为S或RS状态。
0状态,表示在当前缓存行中包含的数据是当前处理器系统最新的数据拷贝,而且与存储器中的数据不一致,而且在其他缓存中可能具有该缓存行的多个副本,其他缓存系统缓存行状态为S或RS状态。
0d状态,被脏占用,表示在当前缓存行中包含的数据是当前处理器系统最新的数据拷贝,而且与存储器中的数据不一致,而且在其他缓存中可能具有该缓存行的副本,其他可能存在该缓存的缓存行状态为S或RS状态。
为了说明S和RS状态,下图10示出了S及RS状态转换的一个例子,如图10所示:
在时间0,缓存行X在所有的L2及L3就为无效状态。
在时间1,core0发送读缓存X请求到L3,,L3控制器查询标签/数据整列以及STM后,发现缓存行在整个cluster中均缺失,于是将读缓存请求发给主存储器后,主存储器从其它cluster中发现有该缓存行,通过侦听后,经L3返回了S状态给core0。此时,core0的状态更新为S;
在时间2,core1发送了读缓存X请求到L3,L3控制器查询标签/数据整列以及STM后,发现缓存行在core0中,于是L3控制器通过CI模块发送侦听请求到core0,core0返回侦听状态及数据给L3控制器后,L3控制器通过CI模块发送读缓存行X的状态及数据给core1。此时,core0的状态保持S状态不变,core1的状态变为RS。
在时间3,core2发送了读缓存X请求到L3,L3控制器查询标签/数据整列以及STM后,发现缓存行在core0中为S状态,在core1中为RS状态,于是L3控制器通过CI模块发送侦听请求到core0,core0返回侦听状态及数据给L3控制器后,L3控制器通过CI模块发送读缓存行X的状态及数据给core3。此时,core0的状态保持S状态不变,core1的状态保持为RS状态不变,core2的状态变为RS。
在时间4,core3发送了读缓存X请求到L3,L3控制器查询标签/数据整列以及STM后,发现缓存行在core0中为S状态,在core1及core2中为RS状态,于是L3控制器通过CI模块发送侦听请求到core0,core0返回侦听状态及数据给L3控制器后,L3控制器通过CI模块发送读缓存行X的状态及数据给core3。此时,core0的状态保持S状态不变,core1及core2的状态保持为RS状态不变,core3的状态变为RS。
缓存系统中,如果同时出现RS状态及S/F/Fe/0/0d中的一种状态时,当S/F/Fe/0/0d状态的缓存行牺牲到主存储器时,RS状态可以升级为S/F/Fe/0/0d状态中的一种。如图11所示,展示出了RS状态升级为0d状态的过程,具体状态变化过程如下:
在时间0,缓存行X在缓存系统中均为无效缺失状态。
在时间1,core0发送读缓存X请求到L3,L3控制器查询标签/数据整列以及STM后,发现缓存行在整个cluster中均缺失,于是将读缓存请求发给主存储器后,主存储器从发现其它cluster中有该缓存行,通过侦听后,经L3返回了E状态给core0。此时,core0的状态更新为E。
在时间2,core0写缓存行X,缓存行更新为M状态。
在时间3,core1发送了读缓存X请求到L3,L3控制器查询标签/数据阵列以及STM后,发现缓存行在core0中,于是L3控制器通过CI模块发送侦听请求到core0,core0返回侦听状态及数据给L3控制器后,L3控制器通过CI模块发送读缓存行X的状态及数据给core1。此时,core0的状态更新为0状态,core0 stm更新为0d状态,core1的状态变为RS。
在时间4,缓存行X对应的索引中8路中都被有效的缓存行占据,core0需要再读一条相同索引的缓存行,core0根据替换算法需要将缓存行X牺牲到L3。此时core0发送牺牲请求到L3,将缓存X牺牲到L3,L3控制器更新L3标签/数据阵列,更新L3的状态为0d。
在时间5,在L3中,缓存行X对应的索引中的16路都被有效的缓存占据,core0/1/2/3需要再牺牲一条相同索引的缓存行到L3,L3根据替换算法需要先将缓存X牺牲到主存储器。此时,L3发送牺牲请求到主存储器,将缓存行X从L3中替换掉,L3控制器查询stm后发现该缓存行在core2中有一个RS状态的副本,于是将缓存行X从L3标签/数据阵列替换掉时,将core2中的副本更新为0d状态。
值得说明的是,图11中示出的是RS状态升级为0d状态的过程,实际上RS状态升级为Fe/F/0状态的过程和图11所示的RS状态升级为0d状态的过程类似,此处不再赘述。
S302、接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;
本实施例中,此步骤与上述方法实施例的步骤S101类似,此处不再赘述。
S303、判断所述牺牲请求在标签数据阵列中是否可以命中;是则执行步骤S304,否则执行步骤S305;
本实施例中,作为一可选实施例,如图12所示,本步骤S303,包括如下步骤:
S3031、在所述标签数据阵列中,以当前缓存地址的19:6的位置为索引;
S3032、获取所述索引对应的多路缓存中的标签位;
S3033、判断获取的所述标签位中是否有所述第一缓存行地址的第N:20位地址,是则执行步骤S2034,否则执行步骤S2035;
S3034、所述牺牲请求在标签数据阵列中命中;
S3035、所述牺牲请求在标签数据阵列中未命中。
本实施例中,对于L2的牺牲请求,L3通过CI接收到请求之后,存入L3控制器的请求队列中,L3控制器依据请求进入请求队列的先后顺序依次将请求从L3控制器中仲裁出来,并存储到牺牲请求队列,同时释放请求队列中对应的条目。然后通过CI向牺牲请求对应的L2中发送读数据请求,同时L3控制器查询L3标签数据阵列,L3控制器查询L3标签数据阵列时,根据地址的19:6同时读出所有16路中有效路的标签位,然后和请求地址的第N:20进行比较。如果任意一路标签位与请求地址标签位相同,则说明该牺牲请求在L3标签数据阵列中命中了该路缓存。
S304、将所述第一缓存行的数据及状态信息写入命中缓存行中;
本实施例中,若在L3标签数据阵列中命中了所述牺牲请求,待L2返回数据后,L3控制器依据L2返回数据及状态,更新L3标签数据阵列中对应缓存行的数据及状态信息,同时将阴影标签阵列中该牺牲请求对应的core中对应的索引中对应路的缓存行状态信息无效,并释放牺牲请求队列中该牺牲请求对应的条目。
S305、判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲;是则执行步骤S306,否则执行步骤S307;
本实施例中,如果L3控制器查询到该L2牺牲请求没有命中L3的标签数据阵列,则L3控制器进一步判断与该L2牺牲请求对应的索引的16路是否有way空闲,即是否有无效的缓存行。
S306、将所述第一缓存行的数据及状态信息写入到任一与所述第一缓存行地址对应的有空闲的缓存行中;
本实施例中,如果有一路或多路缓存行空闲,则L3控制器从所有空闲路中选择一路,并将第一缓存行数据及状态存入到该被选择的路,同时将阴影标签阵列中该牺牲请求对应的core中对应的索引中对应路的缓存行状态信息无效,并释放牺牲请求队列中该牺牲请求对应的条目。
S307、判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行;是则执行步骤S310,否则执行步骤S308;
S308、判断所述第一缓存行的状态是否为RS状态;若是,则执行步骤S314,否则执行步骤S309;
S309、选择当前时刻之前预定时长内使用次数最少的缓存行作为第三缓存行,并执行步骤S311;
S310、将所述RS状态的缓存行作为所述第二缓存行,并执行步骤S312;
S311、将所述第一缓存行的数据及状态信息写入所述第三缓存行中;
本实施例中,如果L3控制器判断出与所述第一缓存行地址对应的所有路中没有RS状态的缓存行,同时该L2牺牲请求对应的第一缓存行不为RS状态,L3控制器依据最近最少被使用的原则,选中一路缓存行作为第三缓存行,并将第一缓存行存储至选中的第三缓存行的位置,同时读出该选中的缓存行,并临时存储到L3控制器中。值得说明的是,类似于现有技术,S311之后,还将第三缓存行丢弃或牺牲到主存储器,此处不再赘述。
S312、根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;
本实施例中,如果该L2牺牲请求在L3标签数据阵列中对应的索引的所有路都没有空闲,则L3控制器进一步判断所有路中是否有RS状态的缓存行,如果有一路或多路RS状态的缓存行,L3控制器依据最近最少被使用的原则,选中一路RS状态的缓存行,并将第一缓存行存储至目标缓存行的位置,同时读出目标缓存行并临时存储到L3控制器中牺牲请求队列中该L2牺牲请求对应的条目中。
S313、读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。
S314、将所述第一缓存行丢弃或者牺牲到主存储器。
本实施例中,如果L3控制器判断出与所述第一缓存行地址对应的所有路中没有RS状态的缓存行,则L3控制器判断该L2牺牲请求对应的第一缓存行是否是RS状态,如果第一缓存行为RS状态,L3控制器依据寄存器配置可以选择将该L2牺牲请求对应的第一缓存行丢弃或者牺牲到主存储器,同时将阴影标签阵列中该牺牲请求对应的core中对应的索引中对应路的缓存行状态信息无效,并释放牺牲请求队列中该牺牲请求对应的条目。
本实施例中,作为一可选实施例,本步骤S313之后,还包括:根据寄存器配置以及所述目标缓存行状态信息,将所述目标缓存行丢弃/牺牲到主存储器;将阴影标签阵列中所述牺牲请求对应的处理器核心core中对应的索引中对应一路的缓存行的状态信息无效,并释放牺牲请求队列中该牺牲请求对应的条目。
本发明提供的高速缓存行替换方法,对现有的一致性协议中的状态进行了优化,增加了一个冗余共享状态(RS态),并重新定义了原有的共享状态(S态),三级缓存在某个索引的所有路都满的情况下,优先替换掉RS状态的缓存行,在某个索引的所有路都满的情况下,并且所有路中没有RS状态的缓存行时,不将上级缓存替换的RS状态的缓存行存到本级缓存。因对于有多个副本的冗余共享状态(RS状态)的缓存行有选择的进行存储,缓存能够存储更多只有一个副本的缓存行,提高了缓存的利用效率;因会尽量避免替换在缓存系统中只有一个副本的缓存行,因此缓存系统能够存储更多只有一个副本的缓存行,因而提高了缓存的命中率,从而降低了系统延迟。
图13为本发明高速缓存行替换装置实施例一的结构示意图。参看图13,本发明高速缓存行替换装置,包括:
牺牲请求接收模块11,用于接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;
副本获取模块12,用于获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行;
缓存行选择模块13,用于根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;作为一可选实施例,缓存行选择模块还用于选择当前时刻之前预定时长内使用次数最少的第二缓存行,作为所述目标缓存行。
读写模块14,用于读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图14为本发明高速缓存行替换装置实施例二的结构示意图。参看图14,本实施例是在前述高速缓存行替换装置实施例一的结构的基础上,还包括:
状态设置模块15,用于根据预设的缓存行状态定义,标记标签数据阵列中各个缓存行的状态;所述缓存行状态包括RS;所述RS状态用于表示当前缓存行中包含的数据有效,且在当前缓存系统中,至少有一个缓存行处于S/F/Fe/0/0d状态,并且所述当前缓存行晚于其它处于S/F/Fe/0/0d状态的缓存行得到缓存行副本;
其中,副本获取模块12,包括:
命中判断子模块121,用于判断所述牺牲请求在标签数据阵列中是否可以命中;
空闲判断子模块122,用于在命中判断子模块121的判断结果为否时,继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲;
第一RS状态判断子模块123,用于在命中判断子模块121的判断结果为否,且空闲判断子模块122的判断结果为否时,继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行;
第一缓存行确定子模块124,用于在第一RS状态判断子模块123判断出所述标签数据阵列中与所述第一缓存行地址对应的缓存行中存在至少一个RS状态的缓存行时,将所述RS状态的缓存行作为所述第二缓存行。
本实施例的装置,可以用于执行图9所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图15为本发明高速缓存行替换装置实施例三的结构示意图。参看图15,本实施例是在前述高速缓存行替换装置实施例二的结构的基础上,所述高速缓存行替换装置,还包括:
第一缓存行写入模块16,用于在命中判断子模块121的判断结果为是时,将所述第一缓存行的数据及状态信息写入命中缓存行中。
本实施例的装置,可以用于执行图9所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图16为本发明高速缓存行替换装置实施例四的结构示意图。参看图16,本实施例是在前述高速缓存行替换装置实施例二的结构的基础上,所述高速缓存行替换装置,还包括:
第二缓存行写入模块17,用于在空闲判断子模块122的判断结果为是时,将所述第一缓存行的数据及状态信息写入到任一与所述第一缓存行地址对应的有空闲的缓存行中。
本实施例的装置,可以用于执行图9所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图17为本发明高速缓存行替换装置实施例五的结构示意图。参看图17,本实施例是在前述高速缓存行替换装置实施例二的结构的基础上,副本获取模块12,还包括:
第二RS状态判断子模块125,用于在第一RS状态判断子模块123判断出所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行的状态都不是RS状态时,继续判断所述第一缓存行的状态是否为RS状态;
第二缓存行确定子模块126,用于在第二RS状态判断子模块125的判断结果为否时,选择当前时刻之前预定时长内使用次数最少的缓存行作为第三缓存行;
写入子模块127,用于将所述第一缓存行的数据及状态信息写入所述第三缓存行中。
本实施例的装置,可以用于执行图9所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图18为本发明高速缓存行替换装置实施例六的结构示意图。参看图18,本实施例是在前述高速缓存行替换装置实施例二的结构的基础上,命中判断子模块121,包括:
索引获取单元1211,用于在所述标签数据阵列中,以当前缓存地址的19∶6的位置为索引;其中,所述标签数据阵列用于存储三级缓存中各个缓存行的有效位、标签位、数据位和状态位;所述标签位用于存储缓存行的物理地址的第N:20位;其中,所述N为所述缓存行的物理地址的最高位;
标签位获取单元1212,用于获取所述索引对应的多路缓存中的标签位;
命中判断单元1213,用于判断标签位获取单元1212获取的所述标签位中是否有所述第一缓存行地址的第N:20位地址;若是,则判定所述牺牲请求在标签数据阵列中命中;否则,判定所述牺牲请求在标签数据阵列中未命中。
本实施例的装置,可以用于执行图9所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图19为本发明高速缓存行替换装置实施例七的结构示意图。参看图19,本实施例是在前述高速缓存行替换装置实施例六的结构的基础上,所述高速缓存行替换装置,还包括:
目标缓存行处理模块18,用于根据寄存器配置以及所述目标缓存行状态信息,将所述目标缓存行丢弃/牺牲到主存储器;
阴影标签阵列设置模块19,用于将阴影标签阵列中所述牺牲请求对应的处理器核心core中对应的索引中对应一路的缓存行的状态信息无效。
图20为本发明高速缓存行替换装置实施例八的结构示意图。参看图20,本实施例是在前述高速缓存行替换装置实施例一的结构的基础上,所述高速缓存行替换装置,还包括:
请求队列写入模块20,用于将所述牺牲请求存入第一请求队列中;所述第一请求队列依据先入先出原则仲裁其内的牺牲请求;
牺牲队列写入模块21,用于当仲裁出所述牺牲请求时,将其存储到牺牲请求队列,同时释放所述第一请求队列中对应的条目;
数据请求模块22,用于通过处理器核心接口CI向所述牺牲请求对应的二级缓存发送读数据请求;
数据接收模块23,用于接收二级缓存返回的缓存行数据及状态信息。
本发明实施例还提供一种电子设备。图21为本发明电子设备一个实施例的结构示意图,可以实现本发明图1或图9所示实施例的流程,如图21所示,上述电子设备可以包括:壳体41、处理器42、存储器43、电路板44和电源电路45,其中,电路板44安置在壳体41围成的空间内部,处理器42和存储器43设置在电路板44上;电源电路45,用于为上述电子设备的各个电路或器件供电;存储器43用于存储可执行程序代码;处理器42通过读取存储器43中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的高速缓存行替换方法。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放模块(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的防护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的防护范围之内。因此,本发明的防护范围应以权利要求的防护范围为准。
Claims (21)
1.一种高速缓存行替换方法,其特征在于,用于三级缓存,包括:
接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;
获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行;
根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;
读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。
2.根据权利要求1所述的高速缓存行替换方法,其特征在于,在所述接收二级缓存的牺牲请求之前,还包括:
根据预设的缓存行状态定义,标记标签数据阵列中各个缓存行的状态;所述缓存行状态包括RS;所述RS状态用于表示当前缓存行中包含的数据有效,且在当前缓存系统中,至少有一个缓存行处于S/F/Fe/0/0d状态,并且所述当前缓存行晚于其它处于S/F/Fe/0/0d状态的缓存行得到缓存行副本;
其中,所述获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行,包括:
判断所述牺牲请求在标签数据阵列中是否可以命中;
若所述牺牲请求在标签数据阵列未命中,则继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲;
若所述牺牲请求在标签数据阵列中未命中,且所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行都没有空闲,则继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行;
若所述标签数据阵列中与所述第一缓存行地址对应的缓存行中存在至少一个RS状态的缓存行,则将所述RS状态的缓存行作为所述第二缓存行。
3.根据权利要求1所述的高速缓存行替换方法,其特征在于,所述根据预定选择策略从获取的多个所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行,包括:
选择当前时刻之前预定时长内使用次数最少的第二缓存行,作为所述目标缓存行。
4.根据权利要求2所述的高速缓存行替换方法,其特征在于,在所述判断所述牺牲请求在标签数据阵列中是否可以命中之后,还包括:
若所述牺牲请求在标签数据阵列中命中,则将所述第一缓存行的数据及状态信息写入命中缓存行中。
5.根据权利要求2所述的高速缓存行替换方法,其特征在于,在所述判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲之后,还包括:
若所述标签数据阵列中与所述第一缓存行地址对应的缓存行有空闲,则将所述第一缓存行的数据及状态信息写入到任一与所述第一缓存行地址对应的有空闲的缓存行中。
6.根据权利要求2所述的高速缓存行替换方法,其特征在于,在所述判断所述标签数据阵列中与所述第一缓存行地址对应的缓存中是否存在RS状态的缓存行之后,还包括:
若所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行的状态都不是RS状态,则继续判断所述第一缓存行的状态是否为RS状态;
若所述第一缓存行的状态不为RS状态,则选择当前时刻之前预定时长内使用次数最少的缓存行作为第三缓存行;
将所述第一缓存行的数据及状态信息写入所述第三缓存行中。
7.根据权利要求2所述的高速缓存行替换方法,其特征在于,所述标签数据阵列用于存储三级缓存中各个缓存行的有效位、标签位、数据位和状态位;所述标签位用于存储缓存行的物理地址的第N:20位;其中,所述N为所述缓存行的物理地址的最高位。
8.根据权利要求7所述的高速缓存行替换方法,其特征在于,所述判断所述牺牲请求在标签数据阵列中是否可以命中,包括:
在所述标签数据阵列中,以当前缓存地址的19:6的位置为索引;
获取所述索引对应的多路缓存中的标签位;
判断获取的所述标签位中是否有所述第一缓存行地址的第N:20位地址;
若是,则判定所述牺牲请求在标签数据阵列中命中;否则,判定所述牺牲请求在标签数据阵列中未命中。
9.根据权利要求8所述的高速缓存行替换方法,其特征在于,在将所述第一缓存行数据及状态信息写入到所述目标缓存行中之后,还包括:
根据寄存器配置以及所述目标缓存行状态信息,将所述目标缓存行丢弃/牺牲到主存储器;
将阴影标签阵列中所述牺牲请求对应的处理器核心core中对应的索引中对应一路的缓存行的状态信息无效。
10.根据权利要求1所述的高速缓存行替换方法,其特征在于,在所述接收二级缓存的牺牲请求之后,所述获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行之前,还包括:
将所述牺牲请求存入第一请求队列中;所述第一请求队列依据先入先出原则仲裁其内的牺牲请求;
当仲裁出所述牺牲请求时,将其存储到牺牲请求队列,同时释放所述第一请求队列中对应的条目;
通过处理器核心接口CI向所述牺牲请求对应的二级缓存发送读数据请求;
接收二级缓存返回的缓存行数据及状态信息。
11.一种高速缓存行替换装置,其特征在于,用于三级缓存,包括:
牺牲请求接收模块,用于接收二级缓存的牺牲请求;所述牺牲请求包括请求替换的第一缓存行地址;
副本获取模块,用于获取所述三级缓存中与所述第一缓存行地址对应且具有多个副本的第二缓存行;
缓存行选择模块,用于根据预定选择策略从获取的所述第二缓存行中选择一个缓存行,作为用于替换所述第一缓存行的目标缓存行;
读写模块,用于读取所述目标缓存行信息,并将所述第一缓存行数据及状态信息写入到所述目标缓存行中。
12.根据权利要求11所述的高速缓存行替换装置,其特征在于,还包括:
状态设置模块,用于根据预设的缓存行状态定义,标记标签数据阵列中各个缓存行的状态;所述缓存行状态包括RS;所述RS状态用于表示当前缓存行中包含的数据有效,且在当前缓存系统中,至少有一个缓存行处于S/F/Fe/0/0d状态,并且所述当前缓存行晚于其它处于S/F/Fe/0/0d状态的缓存行得到缓存行副本;
其中,所述副本获取模块,包括:
命中判断子模块,用于判断所述牺牲请求在标签数据阵列中是否可以命中;
空闲判断子模块,用于在所述命中判断子模块的判断结果为否时,继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行是否有空闲;
第一RS状态判断子模块,用于在所述命中判断子模块的判断结果为否,且所述空闲判断子模块的判断结果为否时,继续判断所述标签数据阵列中与所述第一缓存行地址对应的缓存行中是否存在RS状态的缓存行;
第一缓存行确定子模块,用于在所述第一RS状态判断子模块判断出所述标签数据阵列中与所述第一缓存行地址对应的缓存行中存在至少一个RS状态的缓存行时,将所述RS状态的缓存行作为所述第二缓存行。
13.根据权利要求11所述的高速缓存行替换装置,其特征在于,所述缓存行选择模块,还用于选择当前时刻之前预定时长内使用次数最少的第二缓存行,作为所述目标缓存行。
14.根据权利要求12所述的高速缓存行替换装置,其特征在于,还包括:
第一缓存行写入模块,用于在所述命中判断子模块的判断结果为是时,将所述第一缓存行的数据及状态信息写入命中缓存行中。
15.根据权利要求12所述的高速缓存行替换装置,其特征在于,还包括:
第二缓存行写入模块,用于在空闲判断子模块的判断结果为是时,将所述第一缓存行的数据及状态信息写入到任一与所述第一缓存行地址对应的有空闲的缓存行中。
16.根据权利要求12所述的高速缓存行替换装置,其特征在于,所述副本获取模块,还包括:
第二RS状态判断子模块,用于在所述第一RS状态判断子模块判断出所述标签数据阵列中与所述第一缓存行地址对应的所有缓存行的状态都不是RS状态时,继续判断所述第一缓存行的状态是否为RS状态;
第二缓存行确定子模块,用于在所述第二RS状态判断子模块的判断结果为否时,选择当前时刻之前预定时长内使用次数最少的缓存行作为第三缓存行;
写入子模块,用于将所述第一缓存行的数据及状态信息写入所述第三缓存行中。
17.根据权利要求12所述的高速缓存行替换装置,其特征在于,所述标签数据阵列用于存储三级缓存中各个缓存行的有效位、标签位、数据位和状态位;所述标签位用于存储缓存行的物理地址的第N:20位;其中,所述N为所述缓存行的物理地址的最高位。
18.根据权利要求17所述的高速缓存行替换装置,其特征在于,所述命中判断子模块,包括:
索引获取单元,用于在所述标签数据阵列中,以当前缓存地址的19∶6的位置为索引;
标签位获取单元,用于获取所述索引对应的多路缓存中的标签位;
命中判断单元,用于判断所述标签位获取单元获取的所述标签位中是否有所述第一缓存行地址的第N:20位地址;若是,则判定所述牺牲请求在标签数据阵列中命中;否则,判定所述牺牲请求在标签数据阵列中未命中。
19.根据权利要求18所述的高速缓存行替换装置,其特征在于,还包括:
目标缓存行处理模块,用于根据寄存器配置以及所述目标缓存行状态信息,将所述目标缓存行丢弃/牺牲到主存储器;
阴影标签阵列设置模块,用于将阴影标签阵列中所述牺牲请求对应的处理器核心core中对应的索引中对应一路的缓存行的状态信息无效。
20.根据权利要求11所述的高速缓存行替换装置,其特征在于,还包括:
请求队列写入模块,用于将所述牺牲请求存入第一请求队列中;所述第一请求队列依据先入先出原则仲裁其内的牺牲请求;
牺牲队列写入模块,用于当仲裁出所述牺牲请求时,将其存储到牺牲请求队列,同时释放所述第一请求队列中对应的条目;
数据请求模块,用于通过处理器核心接口Cl向所述牺牲请求对应的二级缓存发送读数据请求;
数据接收模块,用于接收二级缓存返回的缓存行数据及状态信息。
21.一种电子设备,其特征在于,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一权利要求1-10所述的一种高速缓存行替换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011424764.5A CN112612727B (zh) | 2020-12-08 | 2020-12-08 | 一种高速缓存行替换方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011424764.5A CN112612727B (zh) | 2020-12-08 | 2020-12-08 | 一种高速缓存行替换方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612727A true CN112612727A (zh) | 2021-04-06 |
CN112612727B CN112612727B (zh) | 2023-07-07 |
Family
ID=75229309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011424764.5A Active CN112612727B (zh) | 2020-12-08 | 2020-12-08 | 一种高速缓存行替换方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612727B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113741976A (zh) * | 2021-08-25 | 2021-12-03 | 武汉大学 | 缓存颠簸消除方法、装置、设备及存储介质 |
CN113760787A (zh) * | 2021-09-18 | 2021-12-07 | 成都海光微电子技术有限公司 | 多级高速缓存数据推送系统、方法、设备和计算机介质 |
CN114217861A (zh) * | 2021-12-06 | 2022-03-22 | 海光信息技术股份有限公司 | 数据处理方法及装置、电子装置和存储介质 |
CN114860785A (zh) * | 2022-07-08 | 2022-08-05 | 深圳云豹智能有限公司 | 缓存数据处理系统、方法、计算机设备和存储介质 |
WO2022226770A1 (zh) * | 2021-04-27 | 2022-11-03 | 深圳市大疆创新科技有限公司 | 访问缓存行的方法和装置 |
CN116010300A (zh) * | 2023-03-24 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 一种gpu缓存方法及装置、电子设备和存储介质 |
CN116431529A (zh) * | 2023-06-15 | 2023-07-14 | 睿思芯科(深圳)技术有限公司 | 基于l1d-l2缓存的别名处理系统、方法及相关设备 |
CN117806992A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 数据块替换方法、装置、电子设备及存储介质 |
CN117971718A (zh) * | 2024-03-28 | 2024-05-03 | 北京微核芯科技有限公司 | 一种多核处理器的缓存替换方法及其装置 |
Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000066954A (ja) * | 1998-08-21 | 2000-03-03 | Nec Corp | キャッシュメモリのリプレース方法及びこれを用いたキャッシュメモリ |
US6105108A (en) * | 1997-10-24 | 2000-08-15 | Compaq Computer Corporation | Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter |
US6226713B1 (en) * | 1998-01-21 | 2001-05-01 | Sun Microsystems, Inc. | Apparatus and method for queueing structures in a multi-level non-blocking cache subsystem |
CN1851677A (zh) * | 2005-11-25 | 2006-10-25 | 华为技术有限公司 | 嵌入式处理器系统及其数据操作方法 |
CN101162442A (zh) * | 2006-10-09 | 2008-04-16 | 国际商业机器公司 | 支持共享全局一致性状态的处理器、数据处理系统和方法 |
US20100023695A1 (en) * | 2008-07-23 | 2010-01-28 | International Business Machines Corporation | Victim Cache Replacement |
CN101859281A (zh) * | 2009-04-13 | 2010-10-13 | 廖鑫 | 基于集中式目录的嵌入式多核缓存一致性方法 |
CN102880559A (zh) * | 2012-07-31 | 2013-01-16 | 中国人民解放军国防科学技术大学 | 基于应用敏感的微处理器末端高速缓存控制方法及装置 |
CN103246616A (zh) * | 2013-05-24 | 2013-08-14 | 浪潮电子信息产业股份有限公司 | 一种长短周期访问频度的全局共享缓存替换方法 |
CN103294611A (zh) * | 2013-03-22 | 2013-09-11 | 浪潮电子信息产业股份有限公司 | 一种基于有限数据一致性状态的服务器节点数据缓存方法 |
CN104166631A (zh) * | 2014-09-11 | 2014-11-26 | 浪潮(北京)电子信息产业有限公司 | LLC中Cache行的替换方法 |
US20150293854A1 (en) * | 2014-04-15 | 2015-10-15 | Advanced Micro Devices, Inc. | Dynamic remapping of cache lines |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN105094686A (zh) * | 2014-05-09 | 2015-11-25 | 华为技术有限公司 | 数据缓存方法、缓存和计算机系统 |
CN108664415A (zh) * | 2017-03-27 | 2018-10-16 | 三星电子株式会社 | 共享替换策略计算机高速缓存系统和方法 |
CN109040163A (zh) * | 2018-04-25 | 2018-12-18 | 广东工业大学 | 基于k匿名的命名数据网络隐私保护缓存决策方法 |
CN109074320A (zh) * | 2017-03-08 | 2018-12-21 | 华为技术有限公司 | 一种缓存替换方法,装置和系统 |
CN109154911A (zh) * | 2016-06-23 | 2019-01-04 | 超威半导体公司 | 用于监视高速缓存行在不同的高速缓存级下的状态的阴影标签存储器 |
CN109697016A (zh) * | 2017-10-20 | 2019-04-30 | 伊姆西Ip控股有限责任公司 | 用于改进容器的存储性能的方法和装置 |
CN109815168A (zh) * | 2017-11-20 | 2019-05-28 | 三星电子株式会社 | 用于少标记缓冲器实现的系统和方法 |
CN111143244A (zh) * | 2019-12-30 | 2020-05-12 | 海光信息技术有限公司 | 计算机设备的内存访问方法和计算机设备 |
CN111263934A (zh) * | 2017-10-23 | 2020-06-09 | 超威半导体公司 | 至少具有三个缓存级别的缓存层级的混合低级缓存包含策略 |
-
2020
- 2020-12-08 CN CN202011424764.5A patent/CN112612727B/zh active Active
Patent Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105108A (en) * | 1997-10-24 | 2000-08-15 | Compaq Computer Corporation | Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter |
US6226713B1 (en) * | 1998-01-21 | 2001-05-01 | Sun Microsystems, Inc. | Apparatus and method for queueing structures in a multi-level non-blocking cache subsystem |
JP2000066954A (ja) * | 1998-08-21 | 2000-03-03 | Nec Corp | キャッシュメモリのリプレース方法及びこれを用いたキャッシュメモリ |
CN1851677A (zh) * | 2005-11-25 | 2006-10-25 | 华为技术有限公司 | 嵌入式处理器系统及其数据操作方法 |
CN101162442A (zh) * | 2006-10-09 | 2008-04-16 | 国际商业机器公司 | 支持共享全局一致性状态的处理器、数据处理系统和方法 |
US20100023695A1 (en) * | 2008-07-23 | 2010-01-28 | International Business Machines Corporation | Victim Cache Replacement |
CN101859281A (zh) * | 2009-04-13 | 2010-10-13 | 廖鑫 | 基于集中式目录的嵌入式多核缓存一致性方法 |
CN102880559A (zh) * | 2012-07-31 | 2013-01-16 | 中国人民解放军国防科学技术大学 | 基于应用敏感的微处理器末端高速缓存控制方法及装置 |
CN103294611A (zh) * | 2013-03-22 | 2013-09-11 | 浪潮电子信息产业股份有限公司 | 一种基于有限数据一致性状态的服务器节点数据缓存方法 |
CN103246616A (zh) * | 2013-05-24 | 2013-08-14 | 浪潮电子信息产业股份有限公司 | 一种长短周期访问频度的全局共享缓存替换方法 |
US20150293854A1 (en) * | 2014-04-15 | 2015-10-15 | Advanced Micro Devices, Inc. | Dynamic remapping of cache lines |
CN105094686A (zh) * | 2014-05-09 | 2015-11-25 | 华为技术有限公司 | 数据缓存方法、缓存和计算机系统 |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
CN104166631A (zh) * | 2014-09-11 | 2014-11-26 | 浪潮(北京)电子信息产业有限公司 | LLC中Cache行的替换方法 |
CN109154911A (zh) * | 2016-06-23 | 2019-01-04 | 超威半导体公司 | 用于监视高速缓存行在不同的高速缓存级下的状态的阴影标签存储器 |
CN109074320A (zh) * | 2017-03-08 | 2018-12-21 | 华为技术有限公司 | 一种缓存替换方法,装置和系统 |
CN108664415A (zh) * | 2017-03-27 | 2018-10-16 | 三星电子株式会社 | 共享替换策略计算机高速缓存系统和方法 |
CN109697016A (zh) * | 2017-10-20 | 2019-04-30 | 伊姆西Ip控股有限责任公司 | 用于改进容器的存储性能的方法和装置 |
CN111263934A (zh) * | 2017-10-23 | 2020-06-09 | 超威半导体公司 | 至少具有三个缓存级别的缓存层级的混合低级缓存包含策略 |
CN109815168A (zh) * | 2017-11-20 | 2019-05-28 | 三星电子株式会社 | 用于少标记缓冲器实现的系统和方法 |
CN109040163A (zh) * | 2018-04-25 | 2018-12-18 | 广东工业大学 | 基于k匿名的命名数据网络隐私保护缓存决策方法 |
CN111143244A (zh) * | 2019-12-30 | 2020-05-12 | 海光信息技术有限公司 | 计算机设备的内存访问方法和计算机设备 |
Non-Patent Citations (3)
Title |
---|
冯昊;吴承勇;: "CMP体系结构上非包含高速缓存的设计及性能分析", 计算机工程与设计 * |
徐鸿明;孟建熠;严晓浪;葛海通;: "基于高速缓存资源共享的TLB设计方法", 浙江大学学报(工学版) * |
杜慧敏等: "嵌入式GPU中二级高速缓存的设计与实现", 《微电子学与计算机》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022226770A1 (zh) * | 2021-04-27 | 2022-11-03 | 深圳市大疆创新科技有限公司 | 访问缓存行的方法和装置 |
CN113741976B (zh) * | 2021-08-25 | 2024-06-11 | 武汉大学 | 缓存颠簸消除方法、装置、设备及存储介质 |
CN113741976A (zh) * | 2021-08-25 | 2021-12-03 | 武汉大学 | 缓存颠簸消除方法、装置、设备及存储介质 |
CN113760787A (zh) * | 2021-09-18 | 2021-12-07 | 成都海光微电子技术有限公司 | 多级高速缓存数据推送系统、方法、设备和计算机介质 |
CN114217861A (zh) * | 2021-12-06 | 2022-03-22 | 海光信息技术股份有限公司 | 数据处理方法及装置、电子装置和存储介质 |
CN114860785A (zh) * | 2022-07-08 | 2022-08-05 | 深圳云豹智能有限公司 | 缓存数据处理系统、方法、计算机设备和存储介质 |
CN114860785B (zh) * | 2022-07-08 | 2022-09-06 | 深圳云豹智能有限公司 | 缓存数据处理系统、方法、计算机设备和存储介质 |
CN116010300A (zh) * | 2023-03-24 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 一种gpu缓存方法及装置、电子设备和存储介质 |
CN116431529B (zh) * | 2023-06-15 | 2023-08-29 | 睿思芯科(深圳)技术有限公司 | 基于l1d-l2缓存的别名处理系统、方法及相关设备 |
CN116431529A (zh) * | 2023-06-15 | 2023-07-14 | 睿思芯科(深圳)技术有限公司 | 基于l1d-l2缓存的别名处理系统、方法及相关设备 |
CN117806992A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 数据块替换方法、装置、电子设备及存储介质 |
CN117806992B (zh) * | 2024-02-29 | 2024-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | 数据块替换方法、装置、电子设备及存储介质 |
CN117971718A (zh) * | 2024-03-28 | 2024-05-03 | 北京微核芯科技有限公司 | 一种多核处理器的缓存替换方法及其装置 |
CN117971718B (zh) * | 2024-03-28 | 2024-06-28 | 北京微核芯科技有限公司 | 一种多核处理器的缓存替换方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112612727B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112612727B (zh) | 一种高速缓存行替换方法、装置及电子设备 | |
US7290094B2 (en) | Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy | |
US7484042B2 (en) | Data processing system and method for predictively selecting a scope of a prefetch operation | |
US8762651B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
US20080270708A1 (en) | System and Method for Achieving Cache Coherency Within Multiprocessor Computer System | |
US7475196B2 (en) | Processor, data processing system, and method for initializing a memory block in a data processing system having multiple coherency domains | |
CN111742301A (zh) | 通过请求来日志记录对更高级别的缓存的缓存流入量 | |
CN109154912B (zh) | 根据另一个高速缓存中条目的可用性替换高速缓存条目 | |
US8364904B2 (en) | Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer | |
US9830265B2 (en) | Reuse of directory entries for holding state information through use of multiple formats | |
JP2018005395A (ja) | 演算処理装置、情報処理装置および演算処理装置の制御方法 | |
CN107341114B (zh) | 一种目录管理的方法、节点控制器和系统 | |
US6973547B2 (en) | Coherence message prediction mechanism and multiprocessing computer system employing the same | |
US8694732B2 (en) | Enhanced coherency tracking with implementation of region victim hash for region coherence arrays | |
CN116821011B (zh) | 参数确定及数据读写方法、处理器、装置、计算机设备 | |
CN106164874B (zh) | 多核系统中数据访问者目录的访问方法及设备 | |
US8127079B2 (en) | Intelligent cache injection | |
JP3193686B2 (ja) | セクタ化キャッシュ・メモリ | |
US20180052778A1 (en) | Increase cache associativity using hot set detection | |
US8799587B2 (en) | Region coherence array for a mult-processor system having subregions and subregion prefetching | |
US10545875B2 (en) | Tag accelerator for low latency DRAM cache | |
US9053030B2 (en) | Cache memory and control method thereof with cache hit rate | |
CN117971718B (zh) | 一种多核处理器的缓存替换方法及其装置 | |
CN112612726B (zh) | 基于缓存一致性的数据存储方法、装置、处理芯片及服务器 | |
US20230195628A1 (en) | Relaxed invalidation for cache coherence |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230607 Address after: 610041 building 4, No. 171, hele Second Street, high tech Zone, Chengdu, Sichuan Applicant after: CHENGDU HAIGUANG MICROELECTRONICS TECHNOLOGY Co.,Ltd. Address before: 300 000 Tianjin Binhai New Area Tianjin Huayuan Industrial Zone No. 18 Haitai West Road North 2-204 industrial incubation-3-8 Applicant before: Haiguang Information Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |