CN115617709A - 缓存管理方法及装置、缓存装置、电子装置和介质 - Google Patents
缓存管理方法及装置、缓存装置、电子装置和介质 Download PDFInfo
- Publication number
- CN115617709A CN115617709A CN202211183443.XA CN202211183443A CN115617709A CN 115617709 A CN115617709 A CN 115617709A CN 202211183443 A CN202211183443 A CN 202211183443A CN 115617709 A CN115617709 A CN 115617709A
- Authority
- CN
- China
- Prior art keywords
- memory bank
- cache
- bank
- cache line
- memory
- 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.)
- Pending
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
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
一种缓存管理方法、缓存装置、缓存管理装置、电子装置和计算机可读存储介质。缓存管理方法用于多个处理器核共享的共享缓存,缓存管理方法包括:对每个处理器核分配各自的近存储体和远存储体;对每个处理器核的访存请求,优先访问对应的近存储体,再访问对应的远存储体。该方法将共享缓存分为近存储体和远存储体,降低由于共享缓存的尺寸而增加的物理延迟所带来的延迟,提高性能。
Description
技术领域
本公开的实施例涉及一种缓存管理方法、缓存装置、缓存管理装置、电子装置和计算机可读存储介质。
背景技术
在多核处理器设计中,访存操作是影响性能的一大因素,为提升处理器性能,当前多采用高速缓存(cache)技术来降低延迟,提升性能。然而,由于芯片尺寸的限制,处理器核内的高速缓存的容量有限,只能满足一部分访存操作的需要,进而人们提出了在核外增加容量较大的高速缓存,作为多个处理核之间共享的存储单元,即共享缓存,由此来降低访存延迟,提升性能。
发明内容
本公开至少一个实施例提供一种缓存管理方法,用于多个处理器核共享的共享缓存,缓存管理方法包括:对每个处理器核分配各自的近存储体和远存储体;对每个处理器核的访存请求,优先访问对应的近存储体,再访问对应的远存储体。
本公开至少一个实施例还提供一种缓存装置,包括:用于多个处理器核共享的共享缓存,共享缓存包括多个存储体,缓存管理单元,配置为对每个处理器核分配各自的近存储体和远存储体,且使得对每个处理器核的访存请求优先访问对应的近存储体,再访问对应的远存储体。
本公开至少一个实施例还提供一种缓存管理装置,包括:处理器;以及存储器,存储有计算机可执行指令,计算机可执行指令在被处理器执行时实现本公开至少一个实施例提供的缓存管理方法。
本公开至少一个实施例还提供一种电子装置,包括缓存和本公开至少一个实施例提供的缓存装置以及多个处理器核。
本公开至少一个实施例还提供一种计算机可读存储介质,用于非瞬时性地存储计算机可执行指令,计算机可执行指令在被处理器执行时实现本公开至少一个实施例提供的缓存管理方法。
本公开的实施例提供的缓存管理方法将共享缓存分为近存储体和远存储体,可以降低由于共享缓存的尺寸而增加的物理延迟所带来的延迟,提高性能。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种多核处理器体系的结构示意图;
图2示出了直接相联、全相联和组相联中内存和缓存的映射关系的示意图;
图3示出了缓存的组相联的组织形式和寻址方式的示意图;
图4示出了本公开至少一个实施例提供的一种缓存管理方法的示意性流程图;
图5示出了一个实施例涉及的私有缓存与共享缓存中的近存储体和远存储体的映射关系的示意图;
图6示出了图4中步骤S402的一个示例的示意性流程图;
图7示出了图4中步骤S402的另一示例的示意性流程图;
图8A示出了一种针对读请求的缓存管理方法的流程示意图;
图8B示出了一种针对写回请求的缓存管理方法的流程示意图;
图8C示出了一种缓存行迁移的示例的示意框图;
图9A示出了本公开至少一实施例提供的一种缓存装置的示意框图;
图9B示出了本公开至少一实施例提供的一种缓存装置的结构示意图;
图10示出了根据本公开实施例的缓存管理装置的示意图;
图11示出了根据本公开实施例的电子装置的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1示出了一种多核处理器体系,该体系为集中式共享存储器体系,处理核core0、core1、core2和core3具有各自的专用缓存(私有缓存),具有一级或多级共享缓存(通常是最后一级缓存(LLC)),并且共享同一主存以及输入/输出(I/O)。每个处理核的专用缓存可以包括一级缓存(L1 cache)或二级缓存(L2 cache)等。
例如,通常缓存的容量很小,缓存保存的内容只是主存内容的一个子集,且缓存与主存的数据交换是以块为单位的。为了把主存中的数据缓存到缓存中,必须应用某种函数把主存地址定位到缓存中,这称为地址映射。在将主存中的数据按这种映射关系缓存到缓存中后,中央处理器(central processing unit,CPU)执行程序时,会将程序中的主存地址变换成缓存地址。缓存的地址映射方式通常有直接映射、全相联和组相联映射。
虽然缓存的容量相较于主存来说较小,但是速度相较于主存来说却快的多,因此缓存的主要功能是用来存储近期处理器可能需要频繁访问到的数据。这样处理器便可以直接到缓存中进行数据读取,而无需频繁地访问速度较慢的主存,以此来提高处理器对主存的访问速度。缓存的基本单位是缓存块或缓存行(cache line)。与缓存分成多个缓存行类似,主存中存储的数据也进行了类似划分。主存中的划分出来的数据块称为主存块。通常,一个主存块的大小可以为4KB,一个缓存行的大小也可以为4KB。可以理解的是,实际应用中,还可以将主存块和缓存行的大小设置为其他值,仅需保证主存块的大小与缓存行的大小相同即可。
主存和缓存之间具有一定映射关系,该映射关系可以是直接相联、全相联和组相联。在直接相联、全相联和组相联中,主存和缓存的映射关系原理如图2所示。将主存和缓存都分为大小一样的块。假设主存有32项,缓存有8项。在直接相联方式中,每个主存块只能放到缓存中的一个缓存行的位置上。假设要把主存的第12号块放到缓存中,因为缓存只有8项,所以只能放在第(12mod 8=4)项上,其他地方都不能放;由此可知第4、12、20、28号主存块都对应到缓存的第4项上,如果冲突了就只能替换。直接相联方式所需的硬件简单但效率低,如图2的(a)所示。在全相联方式中,每个主存块都可以放到缓存的任一位置上,这样第4、12、20、28号主存块可以同时放入缓存中。全相联方式所需的硬件复杂但效率高,如图2的(b)所示。组相联是直接相联和全相联的折中。以两路(way)组相联为例,缓存中第0、2、4、6号位置为一路(这里称为第0路),第1、3、5、7号位置为另一路(这里称为第1路),每路4个块。对于主存的第12号块,因为12除以4余数为0,所以既可以把第12号块放到缓存的第0路的第0号位置(即缓存的第0号位置),也可以放到第1路的第0号位置(即缓存的第1号位置),如图2的(c)所示。
图2的(c)中缓存的组相联的组织形式和寻址方式可以采用图3的示例进行进一步说明。如图3所示,缓存被组织为缓存行数组的形式。一列缓存行组成同一路,多列缓存行中相同位置的多个缓存行组成一个组(set),因此同一组的缓存行在不同的路中,即通过不同路被范围。通过要读取的数据或指令的物理地址获取数据或指令在缓存中的位置,每个物理地址(例如根据系统的规格可以包括多个位,例如32位)被分为三部分:
·索引(Index),用于选择缓存中的组,同一组中的所有缓存行通过索引来选择;
·标签(tag),用于选择一组中特定的缓存行,将物理地址的标签与每个缓存行的标签进行比较,如果匹配,则缓存命中(cache hit),从而选择此缓存行,否则缓存缺失(cache miss);
·偏移量(offset),用于在缓存行中选择相应的地址,其表示物理地址在缓存行中的第一个字节,对应的数据或指令从此字节的位置读取。
缓存的工作原理要求它尽量保存最新或最常用的数据,当从主存向缓存传送一个缓存行,而缓存中可用位置已经被占满时,就会产生缓存数据的替换问题。解决这个问题就涉及到缓存系统的数据替换机制。简单来说,缓存系统的数据替换机制包括两步:
第一,在缓存中筛选出对应用访问来说“不重要”的数据;
第二,将这些数据从缓存中删除,为新来的数据腾出空间,对于具有脏(dirty)属性的数据,还需要写回到主存中。
已有的替换算法可以包括LRU(Least Recently Used)、LFU(Least FrequentlyUsed)、MRU(Most Recently Used)、NRU(Not Recent Used)、SRRIP(Static RRIP)等。
缓存包括大量存储单元(cell),每个存储单元用于存储一个数据位(bit),这些存储单元在物理上被排列成阵列,且通过字线和位线访问每个存储单元。每个缓存中的全部存储单元会被划分、组织为多个子阵列以便于访问,每个子阵列被称为存储体(bank)。例如,可以为每个存储体提供输入缓冲和输出缓冲以便于进行访问(读、写等);例如不同的存储体还可以被同时并行访问。例如,对于上述组相联的情形,同一路中的多个缓存行可以物理上位于不同的存储体中。
对于多核处理器而言,当只有单核工作时,可以使用私有缓存以及共享缓存的所有资源,当单核的访存操作访问共享缓存时,若地址映射到远端的共享缓存,则额外的物理延迟会降低大容量带来的性能提升,降低单核的性能。同样地,在多核工作时,可以使用私有缓存以及部分共享缓存的资源,如果每个核对共享缓存的访存操作都映射到远端的物理区域(例如存储体),这些额外的物理延迟同样也会降低多核的性能。随着高性能的要求提升,核外的高速缓存的容量则要求更大,同样也意味着共享缓存的面积更大。当尺寸增加到一定程度后,引入的额外的物理延迟会抵消一部分高速缓存带来的性能提升。
本公开至少一个实施例提供一种缓存管理方法,用于多个处理器核共享的共享缓存,该缓存管理方法包括:对每个处理器核分配各自的近存储体和远存储体;对每个处理器核的访存请求,优先访问对应的近存储体,再访问对应的远存储体。
本公开上述实施例提供的缓存管理方法将共享缓存分为近存储体和远存储体,降低由于共享缓存的尺寸而增加的物理延迟所带来的延迟,提高性能。
本公开至少一实施例还提供对应于上述缓存管理方法的缓存装置、缓存管理装置、电子装置和计算机可读存储介质。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图4示出了本公开至少一个实施例提供的一种缓存管理方法的示意性流程图。该缓存管理方法用于多个处理器核共享的共享缓存,共享缓存包括多个存储体。
如图4所示,该缓存管理方法包括如下的步骤S401~S402。
步骤S401:对每个处理器核分配各自的近存储体和远存储体。
步骤S402:对每个处理器核的访存请求,优先访问对应的近存储体,再访问对应的远存储体。
例如,处理器核对于对应的近存储体的访问延迟小于对于对应的远存储体的访问延迟。需要说明的是,这里的“近”和“远”是针对每个处理器核而言的,因此,缓存中的一个存储体对于一个处理器核为近存储体(或远存储体)未必对于另一个处理器核仍然是近存储体(或远存储体)。
图5示出了一个实施例涉及的私有缓存与共享缓存中的近存储体和远存储体的映射关系的示意图。
如图5所示,共享缓存包括多个存储体(近存储体0、远存储体0、远存储体1等)。私有缓存和共享缓存都具有“路-组(way-set)结构”,并且私有缓存中的缓存行和共享缓存中的存储体中的缓存行具有相同的大小。例如,某个处理器核的私有缓存中的同一个组中某一路中的缓存行可以对应于共享缓存中的不同存储体中不同组中某一路中的缓存行。例如,私有缓存中同一组且同一路中的第一缓存行可以对应于近存储体0中的缓存行以及远存储体0中的缓存行。又例如,私有缓存中同一组且同一路中的第二缓存行可以对应于近存储体0中的缓存行以及远存储体1中的缓存行。本公开的实施例不限于上述示例性的对应关系。
例如,对于每个处理器核的访存请求,都优先访问近存储体,再访问远存储体。在单个处理器核工作的情况下,可以访问近存储体和远存储体。在多个处理器核工作的情况下,每个处理器核主要访问各自的近存储体。
对于单个处理器核的访存请求,访存的延迟最少,不依赖于地址的映射关系,有限保证处理器核的所有访存都集中在近存储体。对于多个处理器核的访存也都集中在物理位置最近的近存储体。无论是单个处理器核还是多个处理器核,都可以降低延迟,提升性能。
图6示出了图4中步骤S402的一个示例的示意性流程图。
如图6所示,针对作为访存请求的读请求,步骤S402的一个示例可以包括如下的步骤S601~S602。
步骤S601:根据读请求的物理地址对对应的近存储体进行操作。
例如,在本公开的一些实施例中,步骤S601可以包括:在读请求在对应的近存储体中命中的情况下,将近存储体中的数据返回给处理器核。
例如,在本公开的一些实施例中,步骤S601还可以包括:在读请求在对应的近存储体中命中的情况下,无效对应的近存储体中的副本,更新共享缓存的目录。
例如,处理器核发出读请求到共享缓存中,根据此读请求的物理地址的索引信息对应到一个近存储体,访问该近存储体并通过物理地址的标签(tag)信息进行查找操作,将物理地址的标签与近存储体中的每个缓存行的标签进行比较,如果匹配,则缓存命中,从而选择此缓存行,将此缓存行里的数据返回给处理器核,同时无效掉近存储体中的副本,再更新共享缓存中的目录。这样做的优点是,由于近存储体的资源有限,可以让出近存储体中的存储位置,用来存储其它数据。
步骤S602:在读请求在近存储体中未命中的情况下,根据读请求的物理地址将读请求路由到对应的远存储体,并对对应的远存储体进行操作。
例如,如果物理地址的标签与近存储体中的所有缓存行的标签均不匹配,则缓存未命中,此时通过物理地址的索引信息对应到一个远存储体,访问该远存储体并通过物理地址的标签信息进行查找操作,并且标记access_farBank_flag(访问远存储体标志)。
例如,在本公开的一些实施例中,步骤S602可以包括:在读请求在对应的远存储体中命中的情况下,将对应的远存储体中的数据返回给处理器核。
例如,在本公开的一些实施例中,步骤S602还可以包括:保留远存储体中的副本,增加数据对应的缓存行在对应的远存储体中存储的老化信息,更新共享缓存的目录。
例如,在读请求在近存储体中未命中而访问远存储体时,同样需要通过物理地址的标签信息进行查找操作。将物理地址的标签与远存储体中的每个缓存行的标签进行比较,如果匹配,则缓存命中,从而选择此缓存行,将此缓存行里的数据返回给处理器核,并且保留远存储体中的副本,增加此缓存行在远存储体中存储的老化(age)信息,更新共享缓存的目录。这里保留副本的原因是,此远存储体同样也可能作为其它处理器核的近存储体,其它处理器核对此远存储体具有优先使用权。当访问此远存储体时,不对其存储信息进行干扰,保持此远存储体作为某个处理器核的近存储体的存储信息。
例如,本公开的实施例提供的缓存管理方法还可以包括步骤S603:在读请求在对应的近存储体和对应的远存储体中均未命中的情况下,通过查看共享缓存的目录对其它处理器核进行操作。
例如,在本公开的一些实施例中,步骤S603可以包括:在其它处理器核中存在需要查找的数据的情况下,将其它处理器核中的数据返回给发出读请求的处理器核,更新共享缓存中的目录;在其它处理器核中不存在需要查找的数据的情况下,将读请求发送到内存以获取需要查找的数据。
例如,在读请求在对应的近存储体和对应的远存储体中均未命中的情况下,可以通过查看共享缓存中的目录,判断是否有别的处理器核存在该读请求所请求的数据。如果其它处理器核中存在所请求的数据,则可以通过处理器核到处理器核的转移(core tocore transfer)方式将数据返回给发出读请求的处理器核,更新共享缓存中的目录。如果其它处理器核中也没有所请求的数据,则需要将读请求发送到内存中以获取所请求的数据。
图7示出了图4中步骤S402的另一示例的示意性流程图。
如图7所示,针对访存请求中的写回请求,步骤S402的另一示例可以包括如下的步骤S701~S702。
步骤S701:根据写回请求的物理地址对对应的近存储体进行操作。
例如,在本公开的一些实施例中,步骤S701可以包括:在写回请求在对应的近存储体中命中的情况下,更新对应的近存储体中存储的状态;在写回请求在对应的近存储体中未命中的情况下,通过替换算法将第一牺牲缓存行设置在对应的近存储体中。
例如,处理器核发出写回请求到共享缓存中,根据此写回请求的物理地址的索引信息对应到一个近存储体,访问该近存储体并通过物理地址的标签信息进行查找操作,将物理地址的标签与近存储体中的每个缓存行的标签进行比较,如果匹配,则缓存命中,此缓存行被称为第一牺牲缓存行(victimcacheline),决定哪个缓存行被牺牲是由替换算法来控制的。在写回请求在对应的近存储体中命中的情况下,说明近存储体中已经存在了第一牺牲缓存行,因此只需要更新近存储体中存储的状态。在未命中的情况下,需要通过替换算法将此第一牺牲缓存行设置在对应的近存储体中。
例如,在本公开的一些实施例中,通过替换算法将第一牺牲缓存行存储在对应的近存储体中可以包括:在对应的近存储体中存在空闲的缓存行存储第一牺牲缓存行的情况下,将第一牺牲缓存行存储在对应的近存储体中,更新共享缓存的目录;在对应的近存储体中没有空闲的缓存行存储第一牺牲缓存行的情况下,对应的近存储体产生一个第二牺牲缓存行,对第二牺牲缓存行进行迁移操作,标记指示写回远存储体的标志,将第二牺牲缓存行和第二牺牲缓存行对应的老化信息一起发送给对应的远存储体,更新共享缓存的目录。
例如,在对应的近存储体中存在空闲的缓存行存储第一牺牲缓存行时,直接将第一牺牲缓存行设置在近存储体中,并更新共享缓存的目录。在对应的近存储体中没有空闲的缓存行存储第一牺牲缓存行时,则在近存储体中产生一个第二牺牲缓存行,将第一牺牲缓存行设置在第二牺牲缓存行处,并对第二牺牲缓存行进行共享缓存内部的迁移(migrate),需标记victim_far_flag信号(写回远存储体标志),将第二牺牲缓存行和其对应的老化信息一并发送给远存储体,同时更新之前处理器核产生的写回操作所引起的目录的更新。需要说明的是替换算法的参数对于最近最少使用算法(LRU)为老化信息,对于最不经常使用算法(LFU)为使用频率信息。在本公开的实施例中,以老化信息为例,本公开对此不作限制。
步骤S702:在对应的近存储体产生缓存行的迁移操作的情况下,根据对应的近存储体的第一牺牲缓存行的地址信息对对应的远存储体进行操作。
例如,在本公开的一些实施例中,步骤S702可以包括:在写回请求在对应的远存储体中命中的情况下,更新对应的远存储体中的缓存行的状态;在写回请求在对应的远存储体中未命中的情况下,根据替换算法判断是否将在对应的远存储体中选择一个第三牺牲缓存行写回到内存中。
例如,根据近存储体的写回请求的物理地址的索引信息对应到一个远存储体,访问该远存储体并通过物理地址的标签信息进行查找操作,将物理地址的标签与远存储体中的每个缓存行的标签进行比较,如果匹配,则缓存命中,说明远存储体中已经存在了第二牺牲缓存行,因此只需要更新远存储体中存储的状态。在未命中的情况下,需要通过替换算法判断是否要在对应的远存储体中产生一个第三牺牲缓存行写回到内存中。
例如,在本公开的一些实施例中,根据替换算法判断是否将在对应的远存储体中选择一个第三牺牲缓存行写回到内存中可以包括:在替换算法显示对应的远存储体中存在空闲的缓存行可供使用的情况下,将第二牺牲缓存行存储到对应的远存储体中;在替换算法显示对应的远存储体中没有空闲的缓存行可供使用的情况下,将第二牺牲缓存行或者第三牺牲缓存行写回到内存中。
例如,在对应的远存储体中存在空闲的缓存行存储第二牺牲缓存行时,直接将第二牺牲缓存行设置在远存储体中。在对应的远存储体中没有空闲的缓存行存储第二牺牲缓存行时,则在远存储体中产生一个第三牺牲缓存行,并判断是将第二牺牲缓存行写入内存还是将第三牺牲缓存行写入内存。判断将哪个牺牲缓存行写入内存可以采用如下三种方式,本公开的实施例不限于以下三种方式。
方式一:对于LRU替换算法,比较第二牺牲缓存行的老化值与第三牺牲缓存行的老化值,优先选择将第二牺牲缓存行和第三牺牲缓存行中老化值较大的缓存行写回到内存中,如果第二牺牲缓存行的老化值与第三牺牲缓存行的老化值相等,则将第二牺牲缓存行写回到内存中。
方式二:通过寄存器配置优先写回第二牺牲缓存行或者优先写回第三牺牲缓存行。
方式三:查看共享缓存的目录,在其它处理器核对应的近存储体中存在第二牺牲缓存行的情况下,将其它处理核对应的近存储体中的第二牺牲缓存行写回到内存中。
图8A示出了一种针对读请求的缓存管理方法的流程示意图。
如图8A所示,首先处理器核发出读请求,根据读请求的物理地址优先访问对应的近存储体,判断读请求是否在对应的近存储体中命中。如果命中,无效对应的近存储体中的副本,将近存储体中的数据返回给处理器核,然后更新共享缓存的目录。如果未命中,则将access_farBank_flag设置为1,将读请求发送到对应的远存储体中。接着判断读请求是否在对应的远存储体中命中,如果命中,则保留远存储体中的副本,增加缓存行在远存储体中存储的老化(age)信息,将对应的远存储体中的数据返回给处理器核,然后更新共享缓存的目录。如果未命中,通过查看共享缓存的目录判断读请求是否在其它处理器核中命中。如果命中,则通过处理器核到处理器核的转移方式将数据返回给发出读请求的处理器核,然后更新共享缓存中的目录。如果未命中,则将读请求发送到内存(系统存储器的示例)中以获取所请求的数据。
图8B示出了一种针对写回请求的缓存管理方法的流程示意图。
如图8B所示,首先处理器核发出写回请求到对应的近存储体,判断写回请求是否在对应的近存储体中命中。如果命中,则更新共享缓存的目录,如果未命中,则通过替换算法将第一牺牲缓存行设置在对应的近存储体中,判断是否生成第二牺牲缓存行。如果在对应的近存储体中存在空闲的缓存行存储第一牺牲缓存行,则不生成第二牺牲缓存行,更新共享缓存的目录。如果在对应的近存储体中没有空闲的缓存行存储第一牺牲缓存行,则生成一个第二牺牲缓存行,然后将第二牺牲缓存行迁移到对应的远存储体中,将写回请求路由到对应的远存储体中。然后判断第二牺牲缓存行是否在对应的远存储体中命中,如果命中,完成写回请求,如果未命中,根据替换算法判断是否将在对应的远存储体中生成一个第三牺牲缓存行。如果对应的远存储体中存在空闲的缓存行可供使用,则不生成第三牺牲缓存行,判断是否将第二牺牲缓存行写回到内存中,如果是,则将第二牺牲缓存行写回到内存中,如果否,则将第二牺牲缓存行设置在对应的远存储体中。如果对应的远存储体中没有空闲的缓存行可供使用,则生成第三牺牲缓存行,将第二牺牲缓存行设置在对应的远存储体中,并将第三牺牲缓存行写回到内存中。
图8C示出了一种缓存行迁移的示例的示意框图。
如图8C所示,初始状态下,存在4个处理器核(Core0、Core1、Core2、Core3),Core3中有副本D,共享缓存包括4个存储体(存储体0、存储体1、存储体2、存储体3),存储体0中有副本A,存储体1中有副本B,存储体2中有副本C,存储体3中有副本F。存储体0是Core0的近存储体,是Core1/2/3的远存储体;存储体1是Core1的近存储体,是Core0/2/3的远存储体;存储体2是Core2的近存储体,是Core0/1/3的远存储体;存储体3是Core3的近存储体,是Core0/1/2的远存储体。
首先,Core0从对应的近存储体(存储体0)中读取数据,Core1从对应的远存储体(存储体2)中读取数据,Core2从其它处理器核(Core3)中读取数据,Core3从内存中读取数据。经过上述读取操作后,存储体0中的副本A迁移到Core0中,存储体2中的副本C迁移到Core1中且存储体2保留副本C,Core3中的副本D迁移到Core2中且Core3保留副本D,内存中的副本E迁移到Core3中。然后,Core0、Core1、Core3分别生成写回请求,经过写回操作后,Core0中的牺牲缓存行(副本A)写回到存储体0中。Core1中的牺牲缓存行(副本C)写回到存储体1中,存储体1中的牺牲缓存行(副本B)迁移到Core1对应的远存储体(存储体2)中,存储体2中的牺牲缓存行(副本C)写回到内存中。Core3对应的近存储体(存储体3)中的牺牲缓存行F迁移到对应的远存储体(存储体0)中,牺牲缓存行F从存储体0写回到内存中。
图9A示出了本公开至少一实施例提供的一种缓存装置900的示意框图,该缓存装置可以用于执行图4所示的缓存管理方法。
如图9A所示,缓存装置900包括用于多个处理器核共享的共享缓存901和缓存管理单元902,缓存管理单元902包括近存储体接收组件903、远存储体接收组件904、近存储体流水控制组件905、远存储体流水控制组件906、近存储体返回结果组件907和远存储体返回结果组件908。这里,共享缓存901包括多个存储体。
缓存管理单元902被配置为对每个处理器核分配各自的近存储体和远存储体,且使得对每个处理器核的访存请求优先访问对应的近存储体,再访问对应的远存储体。
例如,处理器核对于对应的近存储体的访问延迟小于对于对应的远存储体的访问延迟。
近存储体接收组件903被配置为接收发送到对应的近存储体的访存请求。
远存储体接收组件904被配置为接收发送到对应的远存储体的访存请求。
近存储体流水控制组件905被配置为判断对应的近存储体接收到的访存请求的处理方式和是否在对应的近存储体中命中,以及执行对于对应的近存储体的替换算法。
远存储体流水控制组件906被配置为判断对应的远存储体接收到的访存请求的处理方式和是否在对应的远存储体中命中,以及执行对于对应的远存储体的替换算法。
近存储体返回结果组件907被配置为将处理器核需要的结果返回给处理器核。
远存储体返回结果组件908被配置为将处理器核需要的结果返回给处理器核。
该缓存装置900和图4所示的缓存管理方法的技术效果相同,在此不再赘述。
图9B示出了本公开至少一实施例提供的一种缓存装置910的结构示意图。
如图9B所示,近存储体接收组件911接收处理器发送到近存储体的访存请求,近存储体接收组件911将访存请求发送到近存储体流水控制组件912,近存储体流水控制组件912和近存储体存储组件913、近存储体返回结果组件914、远存储体接收组件915连接。近存储体结果返回组件914负责将结果返回给处理器。远存储体接收组件915从近存储体流水控制组件912接收访存请求,并将访存请求发送到远存储体流水控制组件916。远存储体流水控制组件916和远存储体存储组件917、远存储体返回结果组件918、内存919连接。远存储体返回结果组件918可以从内存919读取数据,其负责将结果返回给处理器。
需要说明的是,近存储体接收组件和远存储体接收组件可以采用队列(queue)或FIFO(First In First Out,先入先出)队列等硬件实现方式,本公开对此不作限制。近存储体存储组件以及远存储体存储组件用于存储缓存行信息,其可以是静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等形式,本公开对此不作限制。内存可以是片上存储,也可以是片外存储,本公开对此不作限制。
例如,缓存装置可以采用硬件、软件、固件以及它们的任意可行的组合实现,本公开对此不作限制。
本公开至少一实施例还提供了一种缓存管理装置,包括:存储器,用于非暂时性存储计算机可执行指令;以及处理器,用于运行计算机可执行指令,其中,计算机可执行指令被处理器运行时执行本公开至少一实施例提供的缓存管理方法。
图10示出了根据本公开实施例的缓存管理装置1000的示意图。如图10所示,根据本公开实施例的缓存管理装置1000可以包括处理装置1001以及存储器1002,其可以通过总线1003进行互连。
处理装置1001可以根据存储在存储器1002中的程序或代码执行各种动作和处理。具体地,处理装置1001可以是一种集成电路芯片,具有信号的处理能力。例如,上述处理装置可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中公开的各种方法、步骤、流程及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是X86架构或者是ARM架构等。
存储器1002存储有计算机可执行指令,其中,计算机可执行指令在被处理装置1001执行时实现本公开至少一实施例提供的缓存管理方法。存储器1002可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、增强型同步动态随机存取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接主存总线随机存取存储器(DRRAM)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开的至少一个实施例还提供一种电子装置,包括缓存和本公开至少一个实施例提供的缓存装置以及多个处理器核。在一个实施例中,该电子装置例如是中央处理器,该处理器例如是单核或多核处理器。在一个实施例中,该电子装置为计算机系统,该计算机系统包括一个或多个处理器,
图11示出了根据本公开实施例的电子装置1100的示意图。如图11所示,根据本公开实施例的电子装置1100可以包括缓存装置900、缓存1101以及多个Core1102。
本公开至少一实施例提供一种计算机可读存储介质,用于非瞬时性地存储计算机可执行指令,该计算机可执行指令在被处理器执行时实现本公开至少一实施例提供的缓存管理方法。
类似地,本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开实施例的缓存管理方法。
上述缓存装置、缓存管理装置、电子装置以及存储介质的技术效果与图4所示的缓存管理方法的技术效果相同,在此不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (21)
1.一种缓存管理方法,用于多个处理器核共享的共享缓存,所述缓存管理方法包括:
对每个所述处理器核分配各自的近存储体和远存储体;
对每个所述处理器核的访存请求,优先访问所述对应的近存储体,再访问所述对应的远存储体。
2.根据权利要求1所述的缓存管理方法,其中,对每个所述处理器核优先访问所述对应的近存储体,再访问所述对应的远存储体,包括:
根据所述访存请求中的读请求的物理地址对所述对应的近存储体进行操作;
在所述读请求在所述近存储体中未命中的情况下,根据所述读请求的物理地址将所述读请求路由到所述对应的远存储体,并对所述对应的远存储体进行操作。
3.根据权利要求2所述的缓存管理方法,还包括:
在所述读请求在所述对应的近存储体和所述对应的远存储体中均未命中的情况下,通过查看所述共享缓存的目录对其它处理器核进行操作。
4.根据权利要求2所述的缓存管理方法,其中,根据所述访存请求中的读请求的物理地址对所述对应的近存储体进行操作,包括:
在所述读请求在所述对应的近存储体中命中的情况下,将所述近存储体中的数据返回给所述处理器核。
5.根据权利要求2所述的缓存管理方法,其中,根据所述访存请求中的读请求的物理地址对所述对应的近存储体进行操作,包括:
在所述读请求在所述对应的近存储体中命中的情况下,无效所述对应的近存储体中的副本,更新所述共享缓存的目录。
6.根据权利要求2所述的缓存管理方法,其中,对所述对应的远存储体进行操作,包括:
在所述读请求在所述对应的远存储体中命中的情况下,将所述对应的远存储体中的数据返回给所述处理器核。
7.根据权利要求6所述的缓存管理方法,其中,对所述对应的远存储体进行操作,还包括:
保留所述远存储体中的副本,增加所述数据对应的缓存行在所述对应的远存储体中存储的老化信息,更新所述共享缓存的目录。
8.根据权利要求3所述的缓存管理方法,其中,通过查看所述共享缓存的目录对其它处理器核进行操作,包括:
在所述其它处理器核中存在需要查找的数据的情况下,将所述其它处理器核中的数据返回给发出所述读请求的处理器核,更新所述共享缓存中的目录;
在所述其它处理器核中不存在所述需要查找的数据的情况下,将所述读请求发送到内存以获取所述需要查找的数据。
9.根据权利要求1所述的缓存管理方法,其中,对每个所述处理器核优先访问所述对应的近存储体,再访问所述对应的远存储体,包括:
根据所述访存请求中的写回请求的物理地址对所述对应的近存储体进行操作;
在所述对应的近存储体产生缓存行的迁移操作的情况下,根据所述对应的近存储体的第一牺牲缓存行的地址信息对所述对应的远存储体进行操作。
10.根据权利要求9所述的缓存管理方法,其中,根据所述访存请求中的写回请求的物理地址对所述对应的近存储体进行操作,包括:
在所述写回请求在所述对应的近存储体中命中的情况下,更新所述对应的近存储体中存储的状态;
在所述写回请求在所述对应的近存储体中未命中的情况下,通过替换算法将所述第一牺牲缓存行设置在所述对应的近存储体中。
11.根据权利要求10所述的缓存管理方法,其中,通过替换算法将所述第一牺牲缓存行存储在所述对应的近存储体中,包括:
在所述对应的近存储体中存在空闲的缓存行存储所述第一牺牲缓存行的情况下,将所述第一牺牲缓存行存储在所述对应的近存储体中,更新所述共享缓存的目录;
在所述对应的近存储体中没有空闲的缓存行存储所述第一牺牲缓存行的情况下,所述对应的近存储体产生一个第二牺牲缓存行,对所述第二牺牲缓存行进行迁移操作,标记指示写回远存储体的标志,将所述第二牺牲缓存行和所述第二牺牲缓存行对应的老化信息一起发送给所述对应的远存储体,更新所述共享缓存的目录。
12.根据权利要求11所述的缓存管理方法,其中,根据所述对应的近存储体的所述第一牺牲缓存行的地址信息对所述对应的远存储体进行操作,包括:
在所述写回请求在所述对应的远存储体中命中的情况下,更新所述对应的远存储体中的缓存行的状态;
在所述写回请求在所述对应的远存储体中未命中的情况下,根据替换算法判断是否将在所述对应的远存储体中选择一个第三牺牲缓存行写回到内存中。
13.根据权利要求12所述的缓存管理方法,其中,根据替换算法判断是否将在所述对应的远存储体中选择一个第三牺牲缓存行写回到内存中,包括:
在所述替换算法显示所述对应的远存储体中存在空闲的缓存行可供使用的情况下,将所述第二牺牲缓存行存储到所述对应的远存储体中;
在所述替换算法显示所述对应的远存储体中没有空闲的缓存行可供使用的情况下,将所述第二牺牲缓存行或者所述第三牺牲缓存行写回到所述内存中。
14.根据权利要求13所述的缓存管理方法,其中,将所述第二牺牲缓存行或者所述第三牺牲缓存行写回到所述内存中,包括:
比较所述第二牺牲缓存行的老化值与所述第三牺牲缓存行的老化值;
将所述第二牺牲缓存行和所述第三牺牲缓存行中老化值较大的缓存行写回到所述内存中;或者
在所述第二牺牲缓存行的老化值与所述第三牺牲缓存行的老化值相等的情况下,将所述第二牺牲缓存行写回到所述内存中。
15.根据权利要求13所述的缓存管理方法,其中,将所述第二牺牲缓存行或者所述第三牺牲缓存行写回到所述内存中,包括:
通过寄存器配置优先写回所述第二牺牲缓存行或者优先写回所述第三牺牲缓存行。
16.根据权利要求13所述的缓存管理方法,其中,将所述第二牺牲缓存行或者所述第三牺牲缓存行写回到所述内存中,包括:
查看所述共享缓存的目录,在其它处理器核对应的近存储体中存在所述第二牺牲缓存行的情况下,将所述其它处理核对应的近存储体中的所述第二牺牲缓存行写回到所述内存中。
17.一种缓存装置,包括:
用于多个处理器核共享的共享缓存,所述共享缓存包括多个存储体,
缓存管理单元,配置为对每个处理器核分配各自的近存储体和远存储体,且使得对每个处理器核的访存请求优先访问对应的近存储体,再访问对应的远存储体。
18.根据权利要求17所述的缓存装置,其中,所述缓存管理单元包括:
近存储体接收组件,配置为接收发送到所述对应的近存储体的访存请求;
远存储体接收组件,配置为接收发送到所述对应的远存储体的访存请求;
近存储体流水控制组件,配置为判断所述对应的近存储体接收到的访存请求的处理方式和是否在所述对应的近存储体中命中,以及执行对于所述对应的近存储体的替换算法;
远存储体流水控制组件,配置为判断所述对应的远存储体接收到的访存请求的处理方式和是否在所述对应的远存储体中命中,以及执行对于所述对应的远存储体的替换算法;
近存储体返回结果组件,将所述处理器核需要的结果返回给所述处理器核;
远存储体返回结果组件,将所述处理器核需要的结果返回给所述处理器核。
19.一种缓存管理装置,包括:
处理器;以及
存储器,存储有计算机可执行指令,
其中,所述计算机可执行指令在被所述处理器执行时实现根据权利要求1-16中任一项所述的缓存管理方法。
20.一种电子装置,包括缓存和权利要求17所述的缓存装置以及多个处理器核。
21.一种计算机可读存储介质,用于非瞬时性地存储计算机可执行指令,
其中,所述计算机可执行指令在被处理器执行时实现根据权利要求1-16中任一项所述的缓存管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211183443.XA CN115617709A (zh) | 2022-09-27 | 2022-09-27 | 缓存管理方法及装置、缓存装置、电子装置和介质 |
PCT/CN2023/078664 WO2024066195A1 (zh) | 2022-09-27 | 2023-02-28 | 缓存管理方法及装置、缓存装置、电子装置和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211183443.XA CN115617709A (zh) | 2022-09-27 | 2022-09-27 | 缓存管理方法及装置、缓存装置、电子装置和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115617709A true CN115617709A (zh) | 2023-01-17 |
Family
ID=84859739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211183443.XA Pending CN115617709A (zh) | 2022-09-27 | 2022-09-27 | 缓存管理方法及装置、缓存装置、电子装置和介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115617709A (zh) |
WO (1) | WO2024066195A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093511A (zh) * | 2023-09-04 | 2023-11-21 | 海光云芯集成电路设计(上海)有限公司 | 访存控制方法、访存控制装置、芯片及电子设备 |
WO2024066195A1 (zh) * | 2022-09-27 | 2024-04-04 | 海光信息技术股份有限公司 | 缓存管理方法及装置、缓存装置、电子装置和介质 |
CN117851278A (zh) * | 2024-03-08 | 2024-04-09 | 上海芯联芯智能科技有限公司 | 一种共享静态随机存取存储器的方法及中央处理器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013048493A1 (en) * | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
CN105095109B (zh) * | 2014-05-21 | 2018-07-20 | 华为技术有限公司 | 缓存访问方法、缓存访问路由器和计算机系统 |
US20150370707A1 (en) * | 2014-06-24 | 2015-12-24 | Qualcomm Incorporated | Disunited shared-information and private-information caches |
CN104699631B (zh) * | 2015-03-26 | 2018-02-02 | 中国人民解放军国防科学技术大学 | Gpdsp中多层次协同与共享的存储装置和访存方法 |
CN115617709A (zh) * | 2022-09-27 | 2023-01-17 | 海光信息技术股份有限公司 | 缓存管理方法及装置、缓存装置、电子装置和介质 |
-
2022
- 2022-09-27 CN CN202211183443.XA patent/CN115617709A/zh active Pending
-
2023
- 2023-02-28 WO PCT/CN2023/078664 patent/WO2024066195A1/zh unknown
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024066195A1 (zh) * | 2022-09-27 | 2024-04-04 | 海光信息技术股份有限公司 | 缓存管理方法及装置、缓存装置、电子装置和介质 |
CN117093511A (zh) * | 2023-09-04 | 2023-11-21 | 海光云芯集成电路设计(上海)有限公司 | 访存控制方法、访存控制装置、芯片及电子设备 |
CN117093511B (zh) * | 2023-09-04 | 2024-05-10 | 海光云芯集成电路设计(上海)有限公司 | 访存控制方法、访存控制装置、芯片及电子设备 |
CN117851278A (zh) * | 2024-03-08 | 2024-04-09 | 上海芯联芯智能科技有限公司 | 一种共享静态随机存取存储器的方法及中央处理器 |
Also Published As
Publication number | Publication date |
---|---|
WO2024066195A1 (zh) | 2024-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5689679A (en) | Memory system and method for selective multi-level caching using a cache level code | |
CN115617709A (zh) | 缓存管理方法及装置、缓存装置、电子装置和介质 | |
EP3486786B1 (en) | System and methods for efficient virtually-tagged cache implementation | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
US6560681B1 (en) | Split sparse directory for a distributed shared memory multiprocessor system | |
JP6088951B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
JP6027562B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
US11803482B2 (en) | Process dedicated in-memory translation lookaside buffers (TLBs) (mTLBs) for augmenting memory management unit (MMU) TLB for translating virtual addresses (VAs) to physical addresses (PAs) in a processor-based system | |
EP2866148B1 (en) | Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device | |
US11126573B1 (en) | Systems and methods for managing variable size load units | |
JPH10293720A (ja) | コンピュータシステムにおけるキャッシュ・コヒーレンシー機構および主メモリに保持されている項目に関してキャッシュの内容のコヒーレンシー状態を変更する方法 | |
US7356650B1 (en) | Cache apparatus and method for accesses lacking locality | |
US20110167223A1 (en) | Buffer memory device, memory system, and data reading method | |
CN114217861A (zh) | 数据处理方法及装置、电子装置和存储介质 | |
EP3411798B1 (en) | Cache and method | |
US7219197B2 (en) | Cache memory, processor and cache control method | |
KR102252377B1 (ko) | 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법 | |
US6311253B1 (en) | Methods for caching cache tags | |
US20220398198A1 (en) | Tags and data for caches | |
CN115098410A (zh) | 处理器、用于处理器的数据处理方法及电子设备 | |
US7143239B2 (en) | Cache structure and methodology | |
CN117331853B (zh) | 缓存处理方法、装置、电子设备及介质 | |
CN117331854B (zh) | 缓存处理方法、装置、电子设备及介质 | |
EP4116829A1 (en) | Systems and methods for managing variable size load units | |
US11397691B2 (en) | Latency hiding for caches |
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 |