缓存管理方法、缓存管理装置、处理器转让专利

申请号 : CN202111208215.9

文献号 : CN113641596B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 不公告发明人

申请人 : 北京壁仞科技开发有限公司上海壁仞智能科技有限公司

摘要 :

一种缓存管理方法、缓存管理装置、处理器。该缓存管理方法包括:提供包括第二数量的多个标签项的标签块表,并将主存中的多个主存块按映射规则与多个标签项进行映射,其中,多个标签项中的每个标签项用于标记标签项是否被来自主存中的任一主存块占用,以及在标签项被占用时指示用于缓存任一主存块的关联缓存块;提供包括第一数量的多个状态项的状态块表,其中,多个状态项与多个缓存块一一对应,多个状态项中的每个状态项用于指示对应的缓存块的状态,状态包括缓存块是否被标签块表中的一个标签项标记为关联缓存块。该缓存管理方法可以动态关联缓存标签和缓存块,减少缓存替换过程中的暂停现象,降低访问延时,提升系统性能。

权利要求 :

1.一种缓存管理方法,用于管理缓存,其特征在于,所述缓存包括第一数量的多个缓存块,每个缓存块用于对主存中的至少一个主存块提供缓存功能,所述方法包括:

提供包括第二数量的多个标签项的标签块表,并将所述主存中的多个主存块按映射规则与所述多个标签项进行映射,其中,所述多个标签项中的每个标签项用于标记所述标签项是否被来自所述主存中的任一主存块占用,以及在所述标签项被占用时指示与所述标签项相关联的用于缓存所述任一主存块的关联缓存块;

提供包括所述第一数量的多个状态项的状态块表,其中,所述多个状态项与所述多个缓存块一一对应,所述多个状态项中的每个状态项用于指示对应的缓存块的状态,所述状态包括所述缓存块是否被所述标签块表中的一个标签项标记为关联缓存块,其中,所述第二数量小于或等于所述第一数量,所述多个缓存块与多个索引值一一对应,所述标签项包括地址信息、访问信息和关联索引信息,所述地址信息用于指示所述标签项的关联缓存块中存储的主存块的地址,所述访问信息用于表示所述标签项的缓存替换优先级,所述关联索引信息用于在所述标签项被占用时指示与所述标签项相关联的关联缓存块的索引值;

所述状态项包括关联关系指示信息和状态指示信息,所述关联关系指示信息用于指示所述状态项对应的缓存块是否被所述标签块表中的一个标签项标记为关联缓存块,所述状态指示信息用于指示所述状态项对应的缓存块是否处于空闲状态。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于在缓存读取未命中时,接收到将所述主存中的目标主存块写入所述缓存的写入请求,确定目标标签项;

更新所述目标标签项,使得更新后的所述目标标签项指示所述目标标签项已被占用以及指示与所述目标标签项相关联的用于缓存所述目标主存块的关联缓存块;

更新所述状态块表;

将所述目标主存块的内容写入与所述目标标签项相关联的关联缓存块。

3.根据权利要求2所述的方法,其中,响应于所述写入请求进行缓存替换,所述标签项包括访问信息,所述访问信息用于表示所述标签项的缓存替换优先级,确定所述目标标签项,包括:基于所述写入请求和所述映射规则,确定多个备选标签项;

根据所述多个备选标签项的访问信息,将所述多个备选标签项中替换优先级最高的备选标签项确定为所述目标标签项。

4.根据权利要求2所述的方法,其中,所述多个缓存块至少包括第一缓存块和第二缓存块,所述目标标签项的关联缓存块为所述第一缓存块,更新所述目标标签项,包括:

从所述多个缓存块中选择一个缓存块作为所述第二缓存块,其中,所述第二缓存块处于空闲状态且未被标记为关联缓存块;

将所述目标标签项与所述第二缓存块相关联,以将所述目标标签项的关联缓存块从所述第一缓存块更新为所述第二缓存块。

5.根据权利要求4所述的方法,其中,所述状态项包括关联关系指示信息和状态指示信息,所述关联关系指示信息用于指示所述状态项对应的缓存块是否被所述标签块表中的一个标签项标记为关联缓存块,所述状态指示信息用于指示所述状态项对应的缓存块是否处于空闲状态,从所述多个缓存块中选择一个缓存块作为所述第二缓存块,包括:遍历所述多个缓存块,确定至少一个备选缓存块,其中,每个备选缓存块对应的状态项中的状态指示信息指示所述备选缓存块处于空闲状态,且所述备选缓存块对应的状态项中的关联关系指示信息指示所述备选缓存块未被标记为关联缓存块;

从所述至少一个备选缓存块中选择一个备选缓存块作为所述第二缓存块。

6.根据权利要求5所述的方法,其中,所述多个缓存块与多个索引值一一对应,从所述至少一个备选缓存块中选择一个备选缓存块作为所述第二缓存块,包括:根据所述至少一个备选缓存块分别对应的至少一个索引值,从所述至少一个备选缓存块中选择索引值最小或最大的备选缓存块作为所述第二缓存块;或者随机选择一个备选缓存块作为所述第二缓存块。

7.根据权利要求5所述的方法,其特征在于,所述方法还包括:响应于所述第一缓存块对应的状态项中的状态指示信息指示所述第一缓存块还有待执行的至少一个请求,所述第一缓存块继续执行所述至少一个请求,并在所述第一缓存块执行完所述至少一个请求后,设置所述第一缓存块的状态指示信息为处于空闲状态。

8.根据权利要求4所述的方法,其中,所述多个缓存块与多个索引值一一对应,所述标签项包括关联索引信息,所述关联索引信息用于在所述标签项被占用时指示与所述标签项相关联的关联缓存块的索引值,将所述目标标签项与所述第二缓存块相关联,包括:

确定所述第二缓存块对应的索引值;

将所述目标标签项的关联索引信息由所述第一缓存块对应的索引值更新为所述第二缓存块对应的索引值。

9.根据权利要求4所述的方法,其中,更新所述状态块表,包括:更新所述第一缓存块的状态项,使得所述第一缓存块的状态项指示所述第一缓存块未被所述标签块表中的一个标签项标记为关联缓存块;

更新所述第二缓存块的状态项,使得所述第二缓存块的状态项指示所述第二缓存块被所述标签块表中的一个标签项标记为关联缓存块。

10.根据权利要求2所述的方法,其中,响应于所述写入请求不进行缓存替换,确定所述目标标签项,包括:基于所述写入请求和所述映射规则,确定多个备选标签项;

将所述多个备选标签项中未被占用的一个备选标签项确定为所述目标标签项。

11.根据权利要求2所述的方法,其中,所述多个缓存块至少包括第三缓存块,更新所述目标标签项,包括:从所述多个缓存块中选择一个缓存块作为所述第三缓存块,其中,所述第三缓存块处于空闲状态且未被标记为关联缓存块;

将所述目标标签项与所述第三缓存块相关联,以将所述目标标签项的关联缓存块更新为所述第三缓存块。

12.根据权利要求11所述的方法,其中,更新所述状态块表,包括:更新所述第三缓存块的状态项,使得所述第三缓存块的状态项指示所述第三缓存块被所述标签块表中的一个标签项标记为关联缓存块。

13.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于在缓存读取命中时,确定读取请求对应的目标标签项;

确定所述目标标签项指示的与所述目标标签项相关联的目标关联缓存块;

读取所述目标关联缓存块中存储的数据。

14.根据权利要求13所述的方法,其中,所述多个缓存块与多个索引值一一对应,所述标签项包括关联索引信息,所述关联索引信息用于指示与所述标签项相关联的关联缓存块的索引值,确定所述目标标签项指示的与所述目标标签项相关联的目标关联缓存块,包括:确定所述目标标签项的关联索引信息指示的关联缓存块的索引值;

依据所述索引值确定所述目标关联缓存块。

15.一种缓存管理装置,用于管理缓存,其特征在于,所述缓存包括第一数量的多个缓存块,每个缓存块用于对主存中的至少一个主存块提供缓存功能,所述缓存管理装置包括:

标签块表,其中,所述标签块表包括第二数量的多个标签项的标签块表,所述多个标签项与主存中的多个主存块按映射规则映射,每个标签项用于标记所述标签项是否被来自所述主存中的任一主存块占用,以及在所述标签项被占用时指示与所述标签项相关联的用于缓存所述任一主存块的关联缓存块;

状态块表,其中,所述状态块表包括所述第一数量的多个状态项,所述多个状态项与所述多个缓存块一一对应,每个状态项用于指示对应的缓存块的状态,所述状态包括所述缓存块是否被所述标签块表中的一个标签项标记为关联缓存块,其中,所述第二数量小于或等于所述第一数量,所述多个缓存块与多个索引值一一对应,所述标签项包括地址信息、访问信息和关联索引信息,所述地址信息用于指示所述标签项的关联缓存块中存储的主存块的地址,所述访问信息用于表示所述标签项的缓存替换优先级,所述关联索引信息用于在所述标签项被占用时指示与所述标签项相关联的关联缓存块的索引值;

所述状态项包括关联关系指示信息和状态指示信息,所述关联关系指示信息用于指示所述状态项对应的缓存块是否被所述标签块表中的一个标签项标记为关联缓存块,所述状态指示信息用于指示所述状态项对应的缓存块是否处于空闲状态。

16.一种处理器,其特征在于,包括:

如权利要求15所述的缓存管理装置;以及

所述缓存。

说明书 :

缓存管理方法、缓存管理装置、处理器

技术领域

[0001] 本公开的实施例涉及一种缓存管理方法、缓存管理装置、处理器。

背景技术

[0002] 处理器的工作速度远高于内存,如果处理器直接访问内存读写数据,则需要等待一定的时间周期,因此访问内存的过程中通常采用高速缓冲存储装置(Cache)来提高系统效率以及处理器访问内存的速度。通常,处理器优先从Cache中查找数据,例如,若应用程序或软件请求的数据在Cache中存在,则称为缓存命中(Cache hit),反之称为缓存未命中(Cache miss)。

发明内容

[0003] 本公开至少一实施例提供一种缓存管理方法,用于管理缓存,其中,所述缓存包括第一数量的多个缓存块,每个缓存块用于对主存中的至少一个主存块提供缓存功能,所述方法包括:提供包括第二数量的多个标签项的标签块表,并将所述主存中的多个主存块按映射规则与所述多个标签项进行映射,其中,所述多个标签项中的每个标签项用于标记所述标签项是否被来自所述主存中的任一主存块占用,以及在所述标签项被占用时指示与所述标签项相关联的用于缓存所述任一主存块的关联缓存块;提供包括所述第一数量的多个状态项的状态块表,其中,所述多个状态项与所述多个缓存块一一对应,所述多个状态项中的每个状态项用于指示对应的缓存块的状态,所述状态包括所述缓存块是否被所述标签块表中的一个标签项标记为关联缓存块。
[0004] 例如,在本公开至少一实施例提供的缓存管理方法中,所述第二数量小于或等于所述第一数量。
[0005] 例如,本公开至少一实施例提供的缓存管理方法还包括:响应于在缓存读取未命中时,接收到将所述主存中的目标主存块写入所述缓存的写入请求,确定目标标签项;更新所述目标标签项,使得更新后的所述目标标签项指示所述目标标签项已被占用以及指示与所述目标标签项相关联的用于缓存所述目标主存块的关联缓存块;更新所述状态块表;将所述目标主存块的内容写入与所述目标标签项相关联的关联缓存块。
[0006] 例如,在本公开至少一实施例提供的缓存管理方法中,所述标签项包括访问信息,所述访问信息用于表示所述标签项的缓存替换优先级,所述写入请求指示进行缓存替换,确定所述目标标签项,包括:基于所述写入请求和所述映射规则,确定多个备选标签项;根据所述多个备选标签项的访问信息,将所述多个备选标签项中替换优先级最高的备选标签项确定为所述目标标签项。
[0007] 例如,在本公开至少一实施例提供的缓存管理方法中,所述多个缓存块至少包括第一缓存块和第二缓存块,所述目标标签项的关联缓存块为所述第一缓存块,更新所述目标标签项,包括:从所述多个缓存块中选择一个缓存块作为所述第二缓存块,其中,所述第二缓存块处于空闲状态且未被标记为关联缓存块;将所述目标标签项与所述第二缓存块相关联,以将所述目标标签项的关联缓存块从所述第一缓存块更新为所述第二缓存块。
[0008] 例如,在本公开至少一实施例提供的缓存管理方法中,所述状态项包括关联关系指示信息和状态指示信息,所述关联关系指示信息用于指示所述状态项对应的缓存块是否被所述标签块表中的一个标签项标记为关联缓存块,所述状态指示信息用于指示所述状态项对应的缓存块是否处于空闲状态,从所述多个缓存块中选择一个缓存块作为所述第二缓存块,包括:遍历所述多个缓存块,确定至少一个备选缓存块,其中,每个备选缓存块对应的状态项中的状态指示信息指示所述备选缓存块处于空闲状态,且所述备选缓存块对应的状态项中的关联关系指示信息指示所述备选缓存块未被标记为关联缓存块;从所述至少一个备选缓存块中选择一个备选缓存块作为所述第二缓存块。
[0009] 例如,在本公开至少一实施例提供的缓存管理方法中,所述多个缓存块与多个索引值一一对应,从所述至少一个备选缓存块中选择一个备选缓存块作为所述第二缓存块,包括:根据所述至少一个备选缓存块分别对应的至少一个索引值,从所述至少一个备选缓存块中选择索引值最小或最大的备选缓存块作为所述第二缓存块;或者随机选择一个备选缓存块作为所述第二缓存块。
[0010] 例如,本公开至少一实施例提供的缓存管理方法还包括:响应于所述第一缓存块对应的状态项中的状态指示信息指示所述第一缓存块还有待执行的至少一个请求,所述第一缓存块继续执行所述至少一个请求,并在所述第一缓存块执行完所述至少一个请求后,设置所述第一缓存块的状态指示信息为处于空闲状态。
[0011] 例如,在本公开至少一实施例提供的缓存管理方法中,所述多个缓存块与多个索引值一一对应,所述标签项包括关联索引信息,所述关联索引信息用于在所述标签项被占用时指示与所述标签项相关联的关联缓存块的索引值,将所述目标标签项与所述第二缓存块相关联,包括:确定所述第二缓存块对应的索引值;将所述目标标签项的关联索引信息由所述第一缓存块对应的索引值更新为所述第二缓存块对应的索引值。
[0012] 例如,在本公开至少一实施例提供的缓存管理方法中,基于更新后的所述目标标签项,更新所述状态块表,包括:更新所述第一缓存块的状态项,使得所述第一缓存块的状态项指示所述第一缓存块未被所述标签块表中的一个标签项标记为关联缓存块;设置所述第二缓存块的状态项,使得所述第二缓存块的状态项指示所述第二缓存块被所述标签块表中的一个标签项标记为关联缓存块。
[0013] 例如,在本公开至少一实施例提供的缓存管理方法中,所述写入请求指示不进行缓存替换,确定所述目标标签项,包括:基于所述写入请求和所述映射规则,确定多个备选标签项;将所述多个备选标签项中未被占用的一个备选标签项确定为所述目标标签项。
[0014] 例如,在本公开至少一实施例提供的缓存管理方法中,所述多个缓存块至少包括第三缓存块,更新所述目标标签项,包括:从所述多个缓存块中选择一个缓存块作为所述第三缓存块,其中,所述第三缓存块处于空闲状态且未被标记为关联缓存块;将所述目标标签项与所述第三缓存块相关联,以将所述目标标签项的关联缓存块更新为所述第三缓存块。
[0015] 例如,在本公开至少一实施例提供的缓存管理方法中,更新所述状态块表,包括:更新所述第三缓存块的状态项,使得所述第三缓存块的状态项指示所述第三缓存块被所述标签块表中的一个标签项标记为关联缓存块。
[0016] 例如,本公开至少一实施例提供的缓存管理方法还包括:响应于接收到指示缓存读取命中的读取请求,确定所述读取请求对应的目标标签项;确定所述目标标签项指示的与所述目标标签项相关联的目标关联缓存块;读取所述目标关联缓存块中存储的数据,将所述数据作为读取数据。
[0017] 例如,在本公开至少一实施例提供的缓存管理方法中,所述多个缓存块与多个索引值一一对应,所述标签项包括关联索引信息,所述关联索引信息用于指示与所述标签项相关联的关联缓存块的索引值,确定所述目标标签项指示的与所述目标标签项相关联的目标关联缓存块,包括:确定所述目标标签项的关联索引信息指示的关联缓存块的索引值;依据所述索引值确定所述目标关联缓存块。
[0018] 例如,在本公开至少一实施例提供的缓存管理方法中,所述多个缓存块与多个索引值一一对应,所述标签项包括地址信息、访问信息和关联索引信息,所述地址信息用于指示所述标签项的关联缓存块中存储的主存块的地址,所述访问信息用于表示所述标签项的缓存替换优先级,所述关联索引信息用于在所述标签项被占用时指示与所述标签项相关联的关联缓存块的索引值;所述状态项包括关联关系指示信息和状态指示信息,所述关联关系指示信息用于指示所述状态项对应的缓存块是否被所述标签块表中的一个标签项标记为关联缓存块,所述状态指示信息用于指示所述状态项对应的缓存块是否处于空闲状态。
[0019] 本公开至少一实施例还提供一种缓存管理装置,用于管理缓存,其中,所述缓存包括第一数量的多个缓存块,每个缓存块用于对主存中的一个主存块提供缓存功能,所述缓存管理装置包括:标签块表,其中,所述标签块表包括第二数量的多个标签项的标签块表,所述多个标签项与主存中的多个主存块按映射规则映射,每个标签项用于标记所述标签项是否被来自所述主存中的任一主存块占用,以及在所述标签项被占用时指示用于缓存所述任一主存块的关联缓存块;状态块表,其中,所述状态块表包括所述第一数量的多个状态项,所述多个状态项与所述多个缓存块一一对应,每个状态项用于指示对应的缓存块的状态,所述状态包括所述缓存块是否被所述标签块表中的一个标签项标记为关联缓存块。
[0020] 本公开至少一实施例还提供一种处理器,包括:如本公开任一实施例所述的缓存管理装置;以及所述缓存。

附图说明

[0021] 为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
[0022] 图1示出了一种缓存映射示意图;
[0023] 图2A为本公开至少一实施例提供的一种缓存管理方法的示意性流程图;
[0024] 图2B为本公开至少一实施例提供的标签块表的示意图;
[0025] 图2C为本公开至少一实施例提供的状态块表的示意图;
[0026] 图3为本公开至少一实施例提供的缓存写入过程的示意性流程图;
[0027] 图4为本公开至少一实施例提供的缓存替换过程的示意性流程图;
[0028] 图5为本公开至少一实施例提供的缓存读取过程的示意性流程图;
[0029] 图6为本公开至少一实施例提供的一种缓存管理装置的示意性框图;
[0030] 图7A为本公开至少一实施例提供的一种缓存管理装置的示意性框图;
[0031] 图7B为本公开至少一实施例提供的一种缓存管理装置的示意性框图;
[0032] 图8为本公开至少一实施例提供的一种处理器的示意性框图;以及
[0033] 图9为本公开至少一实施例提供的一种电子设备的示意性框图。

具体实施方式

[0034] 为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0035] 除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
[0036] 为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
[0037] 计算机通常包括主存(main memory)和缓存(Cache),与缓存相比,处理器(单核CPU或多核CPU的处理内核)对于主存的访问速度相对较慢,因此可以利用缓存弥补主存访问速度慢的缺陷,提高内存访问速度。缓存通常集成在处理器中。
[0038] 缓存的容量一般很小,缓存保存的内容只是主存内容的一个子集,且缓存与主存的数据交换是以块为单位的。虽然缓存的容量相较于主存来说较小,但是速度相较于主存来说却快的多,因此缓存的主要功能是用来存储近期处理器可能需要频繁访问到的数据。这样,处理器便可以直接到缓存中进行数据读取,而无需频繁地访问速度较慢的主存,以此来提高处理器对内存的访问速度。缓存的基本单位是Cache Line,可称之为缓存块或缓存行。与缓存分成多个缓存块类似,主存中存储的数据也进行了类似划分,例如,主存中的划分出来的每个数据块称为主存块。通常,一个主存块的大小可以为4KB (kilobyte),一个缓存块的大小也可以为4KB。可以理解的是,实际应用中,还可以将主存块和缓存块的大小设置为其他值,仅需保证主存块的大小与缓存块的大小相同即可。
[0039] 为了把主存中的数据缓存到缓存中,必须应用某种映射规则把主存地址定位到缓存中,这称为地址映射。在将主存中的数据按这种映射关系缓存到缓存中后,处理器执行程序时,会将程序中的主存地址变换成缓存地址。缓存的地址映射方式通常有直接映射、全相联和组相联映射等。
[0040] 在直接相连的映射方式下,主存中的一个主存块只能映射到缓存的某一特定的缓存块,换一种表达方式,主存中的一个主存放置到缓存中唯一的位置上。例如,假设主存有16个主存块,且16个主存块以数字0至15进行顺序编号,缓存有4个块,则主存的第0块、第4块、第8块和第12块只能映射到缓存的第0块;而主存的第1块、第5块、第9块和第13块只能映射到缓存的第1块,以此类推。直接映射是最简单的地址映射方式,它的硬件简单,成本低,地址变换速度快。但是这种方式不够灵活,缓存的存储空间得不到充分利用。由于每个主存块只能存放在缓存中的一个固定位置,因此容易产生冲突,使缓存效率下降。
[0041] 在全相联方式中,每个主存块都可以放到缓存的任一位置上,这样主存的第0块、第4块、第8块和第12块可以同时放入缓存中。全相联方式所需的硬件复杂但效率高。
[0042] 组相联是直接相联和全相联的折中。在组相联映射方式中,将主存和缓存都分成多个组,主存中一个组(set)内的主存块的数量与缓存中组的数量相同。主存中的各块与缓存的组号之间有固定的映射关系,但可自由映射到对应缓存组中的任何一块。换一种表达方式,在这种映射方式下,主存块存放到哪个组是固定的,至于存到该组中的哪一块则是灵活的。例如,主存分为256组,每组8块,缓存分为8组,每组2块。主存中的第0块、第8块、第16块等均映射于缓存的第0组,但可映射到缓存中属于第0组的第0块或第1块;主存的第1块、第9块、第17块等均映射于缓存的第1组,但可映射到缓存中属于第1组的第2块或第3块。在采用组相联映射方式的缓存中,每组内可以有2、4、8或16块,相应的,可以分别被称为2路组相联缓存、4路组相联缓存、8路组相联缓存或16路组相联缓存。
[0043] 缓存结构包括两个重要的组成部分:缓存标签表和缓存块,缓存标签表中包括多个缓存标签,一个缓存标签与一个缓存块按照前述的直接相连、组相连或全相连中的映射关系进行映射,也即每个缓存标签与一个缓存块具有一对一的固定映射关系或静态映射关系。例如,每个缓存标签包括虚拟地址(Virtual Address,简称VA)、访问信息(age count)和参考信息(reference count/ref_cnt)。例如,虚拟地址表示与该缓存标签具有映射关系的缓存块中缓存的主存块的虚拟地址,通过虚拟地址判断是否发生缓存命中或缓存未命中;访问信息表示该缓存标签或与该缓存标签具有一对一映射关系的缓存块的缓存替换优先级,例如,访问信息的数值越大,表示该缓存块的替换优先级越高,在发生缓存替换时,替换优先级越高的缓存块被越优先替换;参考信息用于指示该缓存块的待处理请求的数量,例如,在缓存命中后对命中的缓存块可以执行读取请求或写入请求,由于读取请求或写入请求的执行是有延时的,所以还未执行的请求会用参考信息来记录。例如,参考信息ref_cnt=11时表示该缓存块还有11个待处理的请求,参考信息ref_cnt=0时表示该缓存块处于空闲状态,没有待处理的请求需要执行。
[0044] 图1示出了一种缓存映射示意图。如图1所示,由缓存标签表可以看出,缓存采用组相连映射方式,缓存被划分成多个缓存组(set):set0、set1...,每个set包括4个缓存标签,分别对应4路缓存块,每个缓存标签包括虚拟地址(Virtual Address,简称VA)、访问信息(age_cnt)和参考信息(ref_cnt),缓存标签表中一个set的4个缓存标签(Cache tag)与四个缓存块(Cache line)具有一对一的固定/静态映射关系。例如,如图1所示,set0中的第3路(way2)缓存标签与缓存区中的第3个缓存块(index=2)具有一对一的固定映射关系;set1中的第3路(way2)缓存标签与缓存区中的第6个缓存块(index=2)具有一对一的固定映射关系。
[0045] 当发生缓存未命中且各缓存组中没有空闲的对应的缓存块用于写入数据时,会发生缓存替换。此时根据缓存替换策略(例如,Least Recently Used(LRU),最近最久未使用策略),选择缓存替换优先级最高且处于空闲状态的缓存块进行替换。但是,如果缓存替换替换优先级最高的缓存块不处于空闲状态,也即该缓存块还有未执行完的请求,那么缓存替换操作会被挂起,在一些场景中,这种挂起导致的延迟可能需要花费数百个周期,从而导致巨大的性能损失。
[0046] 本公开至少一实施例提供一种缓存管理方法、缓存管理装置、电子设备和非瞬时性计算机可读存储介质。该缓存管理方法包括:提供包括第二数量的多个标签项的标签块表,并将主存中的多个主存块按映射规则与多个标签项进行映射,其中,多个标签项中的每个标签项用于标记标签项是否被来自主存中的任一主存块占用,以及在标签项被占用时指示用于缓存任一主存块的关联缓存块;提供包括第一数量的多个状态项的状态块表,其中,多个状态项与多个缓存块一一对应,多个状态项中的每个状态项用于指示对应的缓存块的状态,状态包括缓存块是否被标签块表中的一个标签项标记为关联缓存块。
[0047] 该缓存管理方法解除了缓存块和缓存标签表的固定或静态映射关系,实现了动态关联缓存标签和缓存块,减少缓存替换过程中由于待替换的缓存块仍有未执行完的请求导致缓存替换操作被挂起的现象,降低由于暂停现象导致的访问延时,提升系统性能。
[0048] 本公开实施例的缓存管理方法可以用于处理器的一级缓存,也可以用于二级缓存等,对此不作限制,可以用于单核的CPU中,亦可以用于多核CPU中。
[0049] 下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
[0050] 图2A为本公开至少一实施例提供的一种缓存管理方法的示意性流程图。
[0051] 例如,该缓存管理方法用于管理缓存,例如,缓存包括第一数量的多个缓存块,每个缓存块用于对主存中的一个或多个主存块提供缓存功能,每个缓存块在一个时刻只为一个主存块提供缓存功能。关于主存块和缓存块的相关内容可以参考前述介绍,这里不再赘述。
[0052] 例如,如图2A所示,本公开实施例提供的缓存管理方法包括步骤S10至S20。
[0053] 在步骤S10,提供包括第二数量的多个标签项的标签块表,并将主存中的多个主存块按映射规则与多个标签项进行映射。
[0054] 例如,多个标签项中的每个标签项用于标记标签项是否被来自主存中的任一主存块占用,以及在标签项被占用时指示用于缓存任一主存块的关联缓存块。
[0055] 在步骤S20,提供包括第一数量的多个状态项的状态块表。例如,多个状态项与多个缓存块一一对应,多个状态项中的每个状态项用于指示对应的缓存块的状态,状态包括缓存块是否被标签块表中的一个标签项标记为关联缓存块。
[0056] 例如,标签项被主存块占用是指该标签项已与一个存储有该主存块的内容的缓存块相关联,该标签项不能再与其他缓存块建立关联关系。也就是说,每个标签项在同一时刻仅与一个缓存块建立关联关系,但在不同时刻可以和不同缓存块建立关联关系。
[0057] 例如,第一数量的多个缓存块可以理解为构成一个缓存池,在需要缓存主存块的内容时,从缓存池中挑选一个满足条件的缓存块与一个标签项相关联,这里将该被挑选出的标签项称为第一标签项,将第一标签项标记为已被占用且与该缓存块相关联;之后,当需要缓存另一个主存块时,再次从缓存池中挑选一个满足条件的缓存块与一个标签项建立新的关联关系,这里将该被挑选出的标签项称为第二标签项,将第二标签项标记为已被占用且与该新挑选的缓存块相关联,例如,第一标签项可以与第二标签项是同一个标签项,也可以是不同的标签项。
[0058] 在本公开至少一实施例提供的缓存管理方法中,由标签块表中的标签项标记标签项是否被任一主存块占用,以及在标签项被占用时记录用于缓存任一主存块的关联缓存块,也就是当有缓存主存块内容的需求时,由标签项记录用于缓存主存块的关联缓存块,从而将关联缓存块与标签项建立暂时的映射关系,并由对应的状态项记录关联缓存块的状态。此时,缓存标签不再固定或静态地与一个缓存块相关联,而是根据缓存主存块的需求进行动态调整,通过标签项和状态项可以在缓存使用过程中动态调整标签项和缓存块的映射关系,从而减少暂停现象,降低等待延迟,提高缓存资源利用率,提升系统性能。
[0059] 由于缓存块与标签项不再是固定或静态的关联关系,因此第二数量可以小于或等于第一数量,也即缓存块的数量还可以大于标签项的数量,从而在建立关联关系的过程中关联缓存块的可选择性更大,进一步降低等待延迟。
[0060] 图2B为本公开至少一实施例提供的标签块表的示意图,图2C为本公开至少一实施例提供的状态块表的示意图。
[0061] 如图2C所示,多个缓存块与多个索引值一一对应,每个缓存块都被标记唯一的索引值,例如,索引值可以为0、1、2、3......。
[0062] 如图2B所示,一个标签项包括地址信息、访问信息和关联索引信息,地址信息用于记录该标签项的关联缓存块中存储的主存块的地址,若该标签项没有关联缓存块,则地址信息可以为空;访问信息用于表示标签项的缓存替换优先级,例如,访问信息的数值越大,表示缓存替换优先级越高;关联索引信息用于在标签项被占用时记录与标签项相关联的关联缓存块的索引值。也就是说,标签块表将图1所示的一个缓存标签中的参考信息替换为关联索引信息,以利用关联索引信息动态记录标签项当前关联的关联缓存块的索引值。虽然图2B示出了分组相连的示例,且图中示出了2个标签组,但是本公开的实施例不限于分组相连,也可以是全相连或直接相连,并且在分组相连的情况下,可以包括2个标签组、4个标签组、8个标签组等。
[0063] 如图2C所示,多个状态项和多个缓存块一一对应,一个状态项包括关联关系指示信息和状态指示信息。关联关系指示信息用于指示状态项对应的缓存块是否被标签块表中的一个标签项标记为关联缓存块。
[0064] 例如,关联关系指示信息为第一值(例如0)时表示该状态项对应的缓存块未被任何标签项标记为关联缓存块;关联关系指示信息为第二值(例如1)时表示该状态项对应的缓存块已与一个标签项相关联,属于该标签项的关联缓存块。
[0065] 例如,状态指示信息用于指示状态项对应的缓存块是否处于空闲状态。例如,状态指示信息可以用参考信息表示,也即状态指示信息记录该状态项对应的缓存块还未执行的请求的数量,若数量为0,也即状态指示信息为0,表示该缓存块处于空闲状态,若该数量不为0,也即状态指示信息不为0,表示该缓存块还有未执行完的请求。例如,状态指示信息还可以用第三值和第四值表示,当状态指示信息为第三值时表示状态项对应的缓存块处于空闲状态,当状态指示信息为第四值时表示状态项对应的缓存块不处于空闲状态。
[0066] 需要说明的是,关联索引信息、关联关系指示信息和状态指示信息还可以用其他表示形式表示,例如字符串、标识符等任意形式,本公开不限于上述实施例提供的采用数值表示的形式;并且,图2B及图2C仅是标签块表和状态块表的一种示意性描述,标签块表和状态块表还可以包括更多或其他参数,本公开对此不作限制。
[0067] 例如,当内存控制器接收到处理器发送的访存请求时,首先通过使用访存请求中包括的要访问的目标地址在标签块表中进行查询,确定访存请求中的目标地址(即,待访问的主存块的地址)是否命中,以确定待访问的数据是否存储于缓存中。当确定访存请求中的目标地址命中时,也即发生缓存命中,内存控制器可以直接从缓存中获取待访问的数据,以缩短访问延时。当内存控制器确定访存请求中的目标地址没有命中时,也即发生缓存未命中,内存控制器才从主存中获取待访问的数据,并将从主存块中获取的数据写入缓存。由于写入数据的时候以块为单位,因此会将获取的数据所在整个内存块写入到缓存中。
[0068] 下面具体说明本公开至少一实施例提供的缓存管理方法的缓存写入、缓存读取的执行过程。
[0069] 图3为本公开至少一实施例提供的缓存写入过程的示意性流程图。如图3所示,本公开实施例提供的缓存管理方法还包括步骤S30至S60。
[0070] 步骤S30,响应于在缓存读取未命中时,接收到将主存中的目标主存块写入缓存的写入请求,确定目标标签项。
[0071] 步骤S40,更新目标标签项,使得更新后的目标标签项指示目标标签项已被占用以及指示缓存目标主存块的关联缓存块。
[0072] 步骤S50,更新状态块表。
[0073] 步骤S60,将目标主存块的内容写入与目标标签项相关联的关联缓存块。
[0074] 例如,当发生缓存未命中时,也即应用程序或软件请求的数据在缓存中不存在,需要从主存中读取该数据所在的目标主存块并将数据写入缓存。
[0075] 由于此时标签项和缓存块是动态关联关系,则根据是否存在未被占用的标签项判断是否需要进行缓存替换。如图2B所示,以缓存映射方式为组相连为例,预先将多个标签项划分成多个标签组,按照组相连的映射规则与主存建立映射关系。当发生缓存未命中时,从主存中读取包括待获取的目标数据的目标主存块,根据目标主存块的块地址,确定目标主存块对应的标签组,若标签组中不存在未被占用的标签项,则按照缓存替换策略,从标签组中选择一个标签项作为目标标签项进行缓存替换;若标签组中存在未被占用的标签项,则按照缓存写入策略从标签组中选择一个未被占用的标签项作为目标标签项进行缓存写入。
[0076] 下面分别描述本公开至少一实施例提供的缓存管理方法中的进行缓存替换的缓存写入过程和不进行缓存替换的缓存写入过程。
[0077] 例如,标签项包括访问信息,访问信息用于表示标签项的缓存替换优先级,关于访问信息的介绍可以参考如前所述的内容,当然,访问信息的变更策略可以根据需要进行设置,本公开对此不作限制。
[0078] 例如,在写入请求指示进行缓存替换时,步骤S30可以包括:基于写入请求和映射规则,确定多个备选标签项;根据多个备选标签项的访问信息,将多个备选标签项中替换优先级最高的备选标签项确定为目标标签项。
[0079] 例如,在映射规则指示缓存结构为组相连时,根据写入请求和映射规则确定目标主存块对应的标签组,将该标签组包括的多个标签项作为备选标签项,将多个备选标签项中替换优先级最高的备选标签项作为目标标签项以执行缓存替换。
[0080] 例如,在映射规则指示缓存结构为全相连时,将标签块表中包括的所有标签项都作为备选标签项,将备选标签项中替换优先级最高的备选标签项作为目标标签项以执行缓存替换。
[0081] 例如,在映射规则指示缓存结构为直接相连时,标签块表中包括的一项标签项作为备选标签项,在该情形中,如果该备选标签项被占用则需要执行缓存替换。
[0082] 确定目标标签项之后,在步骤S40更新标签块表,在步骤S50更新状态块表。当然需要说明的是,步骤S40和步骤S50可以并行执行,也可以先执行步骤S50再执行步骤S40,本公开对步骤S40和步骤S50的执行顺序不作限制。
[0083] 例如,多个缓存块至少包括第一缓存块和第二缓存块,目标标签项的关联缓存块为第一缓存块,也就是说,目标标签项在执行缓存替换前与第一缓存块相关联。
[0084] 例如,步骤S40可以包括:从多个缓存块中选择一个缓存块作为第二缓存块,其中,第二缓存块处于空闲状态且未被标记为关联缓存块;将目标标签项与第二缓存块相关联,以将目标标签项的关联缓存块从第一缓存块更新为第二缓存块。
[0085] 例如,如图2C所示,状态项包括关联关系指示信息和状态指示信息,从多个缓存块中选择一个缓存块作为第二缓存块,可以包括:遍历多个缓存块,确定至少一个备选缓存块,其中,每个备选缓存块对应的状态项中的状态指示信息指示备选缓存块处于空闲状态,且备选缓存块对应的状态项中的关联关系指示信息指示备选缓存块未被标记为关联缓存块;从至少一个备选缓存块中选择一个备选缓存块作为第二缓存块。
[0086] 例如,如图2C所示,多个缓存块与多个索引值一一对应,从至少一个备选缓存块中选择一个备选缓存块作为第二缓存块,包括:根据至少一个备选缓存块分别对应的至少一个索引值,从至少一个备选缓存块中选择索引值最小或最大的备选缓存块作为第二缓存块;或者随机选择一个备选缓存块作为第二缓存块。
[0087] 例如,如图2B所示,标签项包括关联索引信息,将目标标签项与第二缓存块相关联,包括:确定第二缓存块对应的索引值;将目标标签项的关联索引信息由第一缓存块对应的索引值更新为第二缓存块对应的索引值。
[0088] 例如,响应于第一缓存块对应的状态项中的状态指示信息指示第一缓存块还有待执行的至少一个请求,第一缓存块继续执行至少一个请求,并在第一缓存块执行完至少一个请求后,设置第一缓存块的状态指示信息为处于空闲状态。也就是说,第一缓存块在与目标标签项解除关联关系后,仍可以继续执行未执行完的请求,在请求执行完后,设置第一缓存块的状态指示信息为处于空闲状态,从而第一缓存块可以重新被其他标签项标记为关联缓存块。
[0089] 例如,如图2B所示,标签项还包括地址信息和访问信息,步骤S40还可以包括:将目标主存块的地址写入目标标签项的地址信息,例如,目标主存块的地址可以是物理地址也可以是虚拟地址,从而在后续执行缓存读取时,可以根据地址信息判断是否发生缓存命中;根据缓存替换算法更新目标标签项的访问信息,这里,本公开对访问信息的更新算法不做限制。优选的,目标标签项的地址信息可以记录目标主存块的虚拟地址。
[0090] 例如,步骤S50可以包括:解除目标标签项与第一缓存块的关联关系;更新第二缓存块的状态项,使得第二缓存块的状态项指示第二缓存块被标签块表中的一个标签项标记为关联缓存块。
[0091] 例如,解除目标标签项与第一缓存块的关联关系时,可以更新第一缓存块对应的状态项中的关联关系指示信息,使得更新后的关联关系指示信息指示第一缓存块未被标记为关联缓存块。
[0092] 例如,设置第二缓存块的状态项时,可以更新第二缓存块对应的状态项中的关联关系指示信息,使得更新后的关联关系指示信息指示第二缓存块已被标记为关联缓存块。
[0093] 最后,在步骤S60,将目标主存块的内容写入目标标签项的关联缓存块,完成缓存写入操作。
[0094] 图4为本公开至少一实施例提供的缓存替换过程的示意性流程图。下面结合图4、图2B和图2C,具体说明步骤S30‑S60的执行过程。
[0095] 例如,如图4所示,多个缓存块的索引值依次为0、1、2......、12、…28、…76…等。
[0096] 例如,标签块表中的访问信息由数值表示,访问信息的数值越大,表示缓存替换优先级越高,例如,对于set0,缓存替换优先级最高的为2路标签项,发生缓存替换时该标签项最先被替换。例如,关联索引信息的数值表示标签项的关联缓存块的索引值,例如,set0中的2路标签项的关联缓存块为索引值为4的缓存块。
[0097] 例如,状态块表中的状态指示信息的数值表示该状态项对应的缓存块上还未执行的请求的数量。例如,索引值为4的缓存块的状态指示信息为8,表示该缓存块还有8个待执行的请求,索引值为5和7的缓存块的状态指示信息为0,表示这两个缓存块处于空闲状态。例如,关联关系指示信息为1时表示该状态项对应的缓存块是否被标记为关联缓存块。例如,索引值为4的缓存块的关联关系指示信息为1,表示该缓存块已被标记为一个标签项的关联缓存块,索引值为5和7的缓存块的关联关系指示信息为0,表示这两个缓存块未被标记为关联缓存块。
[0098] 例如,根据状态块表中的关联关系指示信息和状态指示信息,每个缓存块可以存在四种状态:
[0099] 关联关系指示信息为0,状态指示信息也为0,表示该缓存块处于空闲状态且未被标记为关联缓存块,可以与标签项建立关联关系;
[0100] 关联关系指示信息为1,状态指示信息为0,表示该缓存块已被标记为关联缓存块,但该缓存块没有需要执行的请求,也即处于空闲状态;
[0101] 关联关系指示信息为1,状态指示信息为大于0,表示该缓存块已被标记为关联缓存块,且该缓存块还有未执行完的请求;
[0102] 关联关系指示信息为0,状态指示信息为大于0,表示该缓存块已被解除关联关系,不再属于关联缓存块,但该缓存块还有未执行完的请求。
[0103] 例如,当发生缓存未命中时,接收到将主存中的目标主存块写入缓存的写入请求,首先在步骤S30,映射规则指示缓存结构为组相连,写入请求指示目标主存块可写入set0,将set0中的4个标签项作为备选标签项,从中选择缓存替换优先级最高的标签项,也即将2路标签项作为目标标签项。目标标签项当前的关联缓存块为索引值为4的缓存块,也即第一缓存块为索引值为4的缓存块,由于第一缓存块的状态指示信息为8,表示第一缓存块处于非空闲状态,此时第一缓存块中的内容不能被替换。
[0104] 之后,在步骤S40,遍历多个缓存块,从多个缓存块中选择关联关系指示信息为0且状态指示信息也为0的缓存块作为备选缓存块,例如,备选缓存块包括索引值为5和7的缓存块,随机选择一个备选缓存块作为第二缓存块,例如,将索引值为7的缓存块作为第二缓存块,将目标标签项的关联索引信息由第一缓存块对应的索引值4更新为所述第二缓存块对应的索引值7。
[0105] 之后,在步骤S50,将第一缓存块的状态项中的关联关系指示信息更新为0,将第二缓存块的状态项中的关联关系指示信息更新为1(图4未示出)。例如,将索引值为4的状态项中的关联关系指示信息由1更新为0,将索引值为7的状态项中的关联关系指示信息由0更新为1。
[0106] 之后,在步骤S60,将目标主存块的内容写入索引值为7的缓存块,完成写入操作。
[0107] 同时,第一缓存块中的8个未执行请求继续执行,直到8个请求都执行完毕,第一缓存块的关联关系指示信息更新为0,第一缓存块可以重新与其他标签项建立关联关系。
[0108] 在上述过程中,当发生缓存替换操作时,可以动态调整目标标签项的关联缓存块,使得目标标签项与处于空闲状态且未与任何标签项相关联的缓存块建立关联关系,并且将目标主存块的内容写入关联缓存块,从而可以立即执行缓存写入操作,而不需等待目标标签项的当前关联缓存块的请求执行完毕再写入缓存块,从而减少系统计算流水线的暂停现象,降低系统访问延迟,提高系统性能。
[0109] 例如,在写入请求指示不进行缓存替换时,例如,此时仍有空闲的标签项可以使用,步骤S30可以包括:基于写入请求和映射规则,确定多个备选标签项;将多个备选标签项中未被占用的一个备选标签项确定为目标标签项。关于备选标签项的内容可以参考缓存替换操作的相关描述,这里不再赘述。
[0110] 例如,多个缓存块还包括第三缓存块,步骤S40可以包括:从多个缓存块中选择一个缓存块作为第三缓存块,其中,第三缓存块处于空闲状态且未被标记为关联缓存块;将目标标签项与第三缓存块相关联,以将目标标签项的关联缓存块更新为第三缓存块。关于此时步骤S40的具体执行过程可以参考参考缓存替换操作的相关描述,这里不再赘述。
[0111] 例如,步骤S50可以包括:设置第三缓存块的状态项,使得第三缓存块的状态项指示第三缓存块被标签块表中的一个标签项标记为关联缓存块。例如,设置第三缓存块的状态项时,可以更新第三缓存块对应的状态项中的关联关系指示信息,使得更新后的关联关系指示信息指示第三缓存块已被标记为关联缓存块。
[0112] 例如,在步骤S60,将目标主存块的内容写入第三缓存块。
[0113] 当发生缓存命中时,执行数据读取操作。
[0114] 图5为本公开至少一实施例提供的缓存读取过程的示意性流程图。如图5所示,本公开实施例提供的缓存管理方法还包括步骤S70至S90。
[0115] 在步骤S70,响应于缓存读取命中,确定读取请求对应的目标标签项。
[0116] 在步骤S80,确定目标标签项中与目标标签项相关联的目标关联缓存块。
[0117] 在步骤S90,读取目标关联缓存块中存储的数据。
[0118] 例如,将存储的数据作为读取数据。
[0119] 例如,当接收到缓存读取请求时,将读取请求中的目标主存块的地址与标签块表中标签项的地址信息进行比对,如果标签块表中存在该地址,则判断读取的数据被命中,也即发生缓存命中,之后执行步骤S70‑S90;如果标签块表中不存在该地址,则确定发生缓存未命中,根据前述的步骤S30‑S60执行缓存写入操作。
[0120] 例如,确定所述目标标签项中标记的目标关联缓存块,可以包括:确定目标标签项的关联索引信息记录的关联缓存块的索引值;依据索引值确定目标关联缓存块。
[0121] 例如,当发生缓存命中时,也即在标签块表中查询到读取请求中待访问的数据的块地址时,将命中的标签项作为目标标签项,根据目标标签项的关联索引信息中的数值确定目标标签项的关联缓存块的索引值,从而确定目标关联缓存块,之后,读取目标关联缓存块中存储的数据作为读取数据,完成缓存读取过程。
[0122] 与上述的缓存管理方法相对应,本公开至少一实施例还提供一种缓存管理装置,图6为本公开至少一实施例提供的一种缓存管理装置的示意性框图。
[0123] 例如,如图6所示,缓存管理装置600包括:标签块表601和状态块表602。
[0124] 例如,标签块表包括第二数量的多个标签项的标签块表,多个标签项与主存中的多个主存块按映射规则映射,每个标签项用于标记标签项是否被来自主存中的任一主存块占用,以及在标签项被占用时记录用于缓存任一主存块的关联缓存块。
[0125] 例如,状态块表包括第一数量的多个状态项,多个状态项与多个缓存块一一对应,每个状态项用于记录对应的缓存块的状态,状态包括缓存块是否被标签块表中的一个标签项标记为关联缓存块。
[0126] 关于标签块表和状态块表的相关内容可以参考上述缓存管理方法的实施例中图2A所示的步骤S10、步骤S20、图2B‑图2C的相关描述,在此不再赘述。
[0127] 图7A为本公开至少一实施例提供的一种缓存管理装置的示意性框图。如图7A所示,缓存管理装置600还可以包括写入执行单元603,写入执行单元配置为执行缓存写入操作。
[0128] 写入执行单元603包括第一确定子单元6031、第一更新子单元6032、第二更新子单元6033和数据写入子单元6034。
[0129] 第一确定子单元6031配置为响应于在缓存未命中时,接收到将主存中的目标主存块写入缓存的写入请求,确定目标标签项。
[0130] 第一更新子单元6032配置为更新目标标签项,使得更新后的目标标签项指示目标标签项已被占用以及指示缓存目标主存块的关联缓存块。
[0131] 第二更新子单元6033配置为基于更新后的目标标签项,更新状态块表。
[0132] 数据写入子单元6034将目标主存块的内容写入目标标签项的关联缓存块。
[0133] 例如,第一确定子单元6031、第一更新子单元6032、第二更新子单元6033和数据写入子单元6034包括存储在存储器中的代码和程序;处理器可以执行该代码和程序以实现如上的第一确定子单元6031、第一更新子单元6032、第二更新子单元6033和数据写入子单元6034的一些功能或全部功能。例如,第一确定子单元6031、第一更新子单元6032、第二更新子单元6033和数据写入子单元6034可以是专用硬件器件、一个电路板或多个电路板的组合,用于实现如上的功能。
[0134] 需要说明的是,第一确定子单元6031用于实现图3所示的步骤S30,第一更新子单元6032用于实现图3所示的步骤S40,第二更新子单元6033用于实现图3所示的步骤S50,数据写入子单元6034用于实现图3所示的步骤S60。从而关于第一确定子单元6031的具体说明可以参考上述缓存管理方法的实施例中图3所示的步骤S30的相关描述,关于第一更新子单元6032的具体说明可以参考上述缓存管理方法的实施例中图3所示的步骤S40的相关描述,关于第二更新子单元6033的具体说明可以参考上述缓存管理方法的实施例中图3所示的步骤S50的相关描述,关于数据写入子单元6034的具体说明可以参考上述缓存管理方法的实施例中图3所示的步骤S60的相关描述。此外,缓存管理装置可以实现与前述缓存管理方法相似的技术效果,在此不再赘述。
[0135] 图7B为本公开至少一实施例提供的一种缓存管理装置的示意性框图。如图7B所示,缓存管理装置600还可以包括读取执行单元604,读取执行单元604配置为执行缓存读取操作。
[0136] 读取执行单元604包括第二确定子单元6041、关联缓存块确定子单元6042和数据读取子单元6043。
[0137] 第二确定子单元6041配置为响应于接收到指示缓存读取命中的读取请求,确定读取请求对应的目标标签项。
[0138] 关联缓存块确定子单元6042配置为确定目标标签项中标记的目标关联缓存块。
[0139] 数据读取子单元6043配置为读取目标关联缓存块中存储的数据,将数据作为读取数据。
[0140] 例如,第二确定子单元6041、关联缓存块确定子单元6042和数据读取子单元6043包括存储在存储器中的代码和程序;处理器可以执行该代码和程序以实现如上所述的第二确定子单元6041、关联缓存块确定子单元6042和数据读取子单元6043的一些功能或全部功能。例如,第二确定子单元6041、关联缓存块确定子单元6042和数据读取子单元6043可以是专用硬件器件、一个电路板或多个电路板的组合,用于实现如上所述的功能。
[0141] 需要说明的是,第二确定子单元6041用于实现图5所示的步骤S70,关联缓存块确定子单元6042用于实现图5所示的步骤S80,数据读取子单元6043用于实现图3所示的步骤S90。从而关于第二确定子单元6041的具体说明可以参考上述缓存管理方法的实施例中图5所示的步骤S70的相关描述,关于关联缓存块确定子单元6042的具体说明可以参考上述缓存管理方法的实施例中图5所示的步骤S80的相关描述,关于数据读取子单元6043的具体说明可以参考上述缓存管理方法的实施例中图5所示的步骤S90的相关描述。此外,缓存管理装置可以实现与前述缓存管理方法相似的技术效果,在此不再赘述。
[0142] 图8为本公开至少一实施例提供的处理器的示意性结构图。
[0143] 如图8所示,该处理器700包括如本公开任一实施例所述的缓存管理装置701以及缓存702。关于缓存管理装置701的结构、功能、技术效果如前所述,这里不再赘述。
[0144] 例如,该缓存映射方式可以为组相连、全相连、直接相连等架构,关于缓存架构的具体内容这里不再赘述。
[0145] 例如,缓存管理装置701的结构、功能、技术效果可以参考缓存管理装置600的相关内容,这里不再赘述。
[0146] 通过缓存管理装置701对缓存块和标签项进行动态关联,减少缓存替换过程中由于待替换的缓存块仍有未执行完的请求导致缓存替换操作被暂停的现象,降低由于暂停现象导致的延时,提升系统性能。
[0147] 图9为本公开一些实施例提供的另一种电子设备的示意框图。该电子设备800例如适于用来实施本公开实施例提供的缓存管理方法。电子设备800可以是终端设备等。需要注意的是,图9示出的电子设备800仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
[0148] 如图9所示,电子设备800可以包括处理装置(例如中央处理器)810,其可以根据存储在只读存储器(ROM)820中的程序或者从存储装置880加载到随机访问存储器(RAM)830中的程序而执行各种适当的动作和处理。
[0149] 在RAM830中,还存储有电子设备800操作所需的各种程序和数据。处理装置810、ROM820以及RAM830通过总线840彼此相连。输入/输出(I/O)接口850也连接至总线840。
[0150] 通常,以下装置可以连接至I/O接口850:输入装置860,例如输入装置860可以包括触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等;输出装置870,例如输出装置870可以包括液晶显示器(LCD)、扬声器、振动器等;存储装置880,例如存储装置880可以包括磁带、硬盘等;以及通信装置890。通信装置890可以允许电子设备800与其他电子设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的电子设备800,但应理解的是,并不要求实施或具备所有示出的装置,电子设备800可以替代地实施或具备更多或更少的装置。
[0151] 例如,根据本公开的实施例,处理装置810可以执行上述缓存管理方法,可以实现本公开实施例提供的缓存管理方法中限定的功能。
[0152] 对于本公开,还有以下几点需要说明:
[0153] (1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
[0154] (2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
[0155] 以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。