CN117311638A - 缓存管理方法、缓存管理装置、处理器 - Google Patents
缓存管理方法、缓存管理装置、处理器 Download PDFInfo
- Publication number
- CN117311638A CN117311638A CN202311332742.XA CN202311332742A CN117311638A CN 117311638 A CN117311638 A CN 117311638A CN 202311332742 A CN202311332742 A CN 202311332742A CN 117311638 A CN117311638 A CN 117311638A
- Authority
- CN
- China
- Prior art keywords
- cache
- block
- cache block
- tag
- released
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 92
- 230000004044 response Effects 0.000 claims abstract description 24
- 238000013507 mapping Methods 0.000 claims description 51
- 238000000034 method Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 11
- 230000000903 blocking effect Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 4
- 239000000725 suspension Substances 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 101150055297 SET1 gene Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种缓存管理方法、缓存管理装置、处理器。该缓存管理方法包括:记录缓存中当前可用的空闲缓存块的第一数值;响应于第一数值小于设定阈值,主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块。该缓存管理方法通过主动释放缓存块,保证缓存在工作时尽可能有足够多的空闲缓存块可以使用,能够有效减少缓存阻塞,提升系统性能。该缓存管理方法和缓存的正常执行步骤还可以并行进行,不会影响缓存的执行流程。
Description
技术领域
本公开的实施例涉及一种缓存管理方法、缓存管理装置、处理器。
背景技术
处理器的工作速度远高于内存,如果处理器直接访问内存读写数据,则需要等待一定的时间周期,因此,访问内存的过程中通常采用高速缓冲存储装置(Cache)来提高系统效率以及处理器访问内存的速度。通常,处理器优先从缓存中读写数据。例如,若应用程序或软件请求的数据在缓存中存在,则称为缓存命中(Cache hit),反之称为缓存未命中(Cache miss,又可称为缓存缺失)。
发明内容
本公开至少一实施例提供一种缓存管理方法,所述方法包括:记录所述缓存中当前可用的空闲缓存块的第一数值;响应于所述第一数值小于设定阈值,主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块。
例如,在本公开至少一实施例提供的缓存管理方法还包括:响应于存在对应于所述释放缓存块的未完成请求,在所述未完成请求被完成之后,将所述释放缓存块转变为空闲缓存块。
例如,在本公开至少一实施例提供的缓存管理方法还包括:响应于所述释放缓存块为脏缓存块,在将所述释放缓存块中存储的数据写回主存之后,将所述释放缓存块转变为空闲缓存块。
例如,在本公开至少一实施例提供的缓存管理方法还包括:将所述释放缓存块放入空闲缓存块组合中以备用,并且将所述第一数值递增1。
例如,在本公开至少一实施例提供的缓存管理方法中,所述主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块,包括:在所述缓存的多个组中所选择的第一组中与多个通道对应的多个缓存块中选择至少一被占用的忙碌缓存块主动释放,以得到所述释放缓存块。
例如,在本公开至少一实施例提供的缓存管理方法还包括:在所述缓存的多个组中有效的组中选择得到所述第一组。
例如,在本公开至少一实施例提供的缓存管理方法中,在所述缓存的多个组中选择的第一组中与多个通道对应的多个缓存块中选择至少一被占用的忙碌缓存块主动释放,以得到所述释放缓存块,包括:在所述第一组中根据缓存替换算法选择所述至少一被占用的忙碌缓存块主动释放,以得到所述释放缓存块。
例如,在本公开至少一实施例提供的缓存管理方法还包括:将所述缓存中与所述释放缓存块对应的标签项释放以得到被释放标签项。
例如,在本公开至少一实施例提供的缓存管理方法中,所述缓存包括多个标签项与多个缓存块,所述多个标签项与所述多个缓存块之间具有动态映射关系,并且每项被占用的缓存块与一项被占用的标签项绑定。
例如,在本公开至少一实施例提供的缓存管理方法中,所述缓存还包括多个状态项,所述多个状态项与所述多个缓存块一一对应,所述多个状态项中的每个状态项用于指示对应的缓存块的状态,所述状态包括所述缓存块是否被一个标签项标记为关联缓存块。
例如,在本公开至少一实施例提供的缓存管理方法中,所述将所述缓存中与所述释放缓存块对应的标签项释放以得到所述被释放标签项,包括:在将所述释放缓存块释放之前,将所述释放缓存块与对应的标签项解绑,然后再将所述对应的标签项释放以得到所述被释放标签项。
例如,在本公开至少一实施例提供的缓存管理方法还包括:将所述被释放标签项与选择的一项空闲缓存块绑定,以用于响应于对于所述缓存的请求。
本公开至少一实施例还提供一种缓存管理装置,所述缓存管理装置包括:第一寄存器,配置为记录所述缓存中当前可用的空闲缓存块的第一数值;选择处理单元,配置为响应于所述第一数值小于设定阈值,主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块。
本公开至少一实施例还提供一种处理器,所述处理器包括:本公开任一实施例的缓存管理装置;以及上述缓存。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种缓存映射示意图;
图2A为本公开至少一实施例提供的一种缓存管理方法的示意性流程图;
图2B为本公开至少一实施例提供的一种缓存管理方法的示意性流程图;
图2C为本公开至少一实施例提供的一种缓存管理方法的示意性流程图;
图2D为本公开至少一实施例提供的一种缓存的整体工作流程示意图;
图3A为本公开至少一实施例提供的标签块表的示意图;
图3B为本公开至少一实施例提供的状态块表的示意图;
图4为本公开至少一实施例提供的缓存写入过程的示意性流程图;
图5为本公开至少一实施例提供的缓存替换过程的示意性流程图;
图6为本公开至少一实施例提供的缓存读取过程的示意性流程图;
图7A为本公开至少一实施例提供的一种缓存管理装置的示意性框图;
图7B为本公开至少一实施例提供的一种缓存管理装置的示意性框图;
图8为本公开至少一实施例提供的一种处理器的示意性框图;以及
图9为本公开至少一实施例提供的一种电子设备的示意性框图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
计算机通常包括主存(Main Memory)(亦可简称“内存”)和缓存(Cache),与缓存相比,处理器(例如,单核CPU、多核CPU或GPU的处理内核)对于主存的访问速度相对较慢,因此可以利用缓存弥补主存访问速度慢的缺陷,提高内存访问速度。例如,一级缓存或二级缓存通常集成在处理器中。
缓存的容量一般很小,缓存保存的内容只是主存内容的一个子集,且缓存与主存的数据交换是以块为单位的。虽然缓存的容量相较于主存来说较小,但是速度相较于主存来说却快的多,因此缓存的主要功能是用来存储近期处理器可能需要频繁访问到的数据。这样,处理器便可以直接到缓存中进行数据读取,而无需频繁地访问速度较慢的主存,以此来提高处理器对内存的访问速度。缓存的基本单位是Cache Line,可称之为缓存块或缓存行。与缓存分成多个缓存块类似,主存中存储的数据也进行了类似划分,例如,主存中的划分出来的每个数据块称为主存块。通常,一个主存块的大小可以为4KB(Kilobyte),一个缓存块的大小也可以为4KB。可以理解的是,实际应用中,还可以将主存块和缓存块的大小设置为其他值,仅需保证主存块的大小与缓存块的大小相同即可。
为了把主存中的数据缓存到缓存中,必须应用某种映射规则把主存地址定位到缓存中,这称为地址映射。在将主存中的数据按这种映射关系缓存到缓存中后,处理器执行程序时,会将程序中的主存地址变换成缓存地址。缓存的地址映射方式通常有直接映射、全相联和组相联映射等。
在直接相联的映射方式下,主存中的一个主存块只能映射到缓存的某一特定的缓存块,换一种表达方式,主存中的一个主存放置到缓存中唯一的位置上。例如,假设主存有16个主存块,且16个主存块以数字0至15进行顺序编号,缓存有4个块,则主存的第0块、第4块、第8块和第12块只能映射到缓存的第0块;而主存的第1块、第5块、第9块和第13块只能映射到缓存的第1块,以此类推。直接映射是最简单的地址映射方式,它的硬件简单,成本低,地址变换速度快。但是这种方式不够灵活,缓存的存储空间得不到充分利用。由于每个主存块只能存放在缓存中的一个固定位置,因此容易产生冲突,使缓存效率下降。
在全相联方式中,每个主存块都可以放到缓存的任一位置上,这样主存的第0块、第4块、第8块和第12块可以同时放入缓存中。全相联方式所需的硬件复杂但效率高。
组相联是直接相联和全相联的折中。在组相联映射方式中,将主存和缓存都分成多个组,主存中一个组(set)内的主存块的数量与缓存中组的数量相同。主存中的各块与缓存的组号之间有固定的映射关系,但可自由映射到对应缓存组中的任何一块。换一种表达方式,在这种映射方式下,主存块存放到哪个组是固定的,至于存到该组中的哪一块则是灵活的。例如,主存分为256组,每组8块,缓存分为8组,每组2块。主存中的第0块、第8块、第16块等均映射于缓存的第0组,但可映射到缓存中属于第0组的第0块或第1块;主存的第1块、第9块、第17块等均映射于缓存的第1组,但可映射到缓存中属于第1组的第2块或第3块。在采用组相联映射方式的缓存中,每组内可以有2、4、8或16块,相应的,可以分别被称为2路(way)组相联缓存、4路组相联缓存、8路组相联缓存或16路组相联缓存,每一路对应于一读写通道。
例如,缓存结构可以包括缓存标签表和缓存块表,缓存标签表包括多个标签项,缓存块表包括多个缓存块,例如,一个标签项与一个缓存块按照前述的直接相联、组相联或全相联中的映射关系进行映射,也即每个标签项与一个缓存块具有一对一的固定映射关系或静态映射关系。例如,每个标签项包括但不限于虚拟地址(Virtual Address,VA)、有效位(valid bit)、脏位(dirty bit)、访问信息(age count/age_cnt)和参考信息(referencecount/ref_cnt)。例如,虚拟地址表示与该标签项具有映射关系的缓存块中缓存的主存块的虚拟地址,通过虚拟地址判断是否发生缓存命中或缓存未命中;有效位(valid bit)用于指示该缓存块中的数据是否有效;脏位(dirty bit)用于指示该缓存块中的数据是否被修改过,从而可以通过脏位来判断该缓存块是否为脏缓存块;访问信息表示该标签项或与该标签项具有一对一映射关系的缓存块的缓存替换优先级,例如,访问信息的数值越大,表示该缓存块的替换优先级越高,在发生缓存替换时,替换优先级越高的缓存块被越优先替换;参考信息用于指示该缓存块的待处理请求的数量,例如,在缓存命中后对命中的缓存块可以执行读取请求或写入请求,由于读取请求或写入请求的执行是有延时的,所以还未执行的请求会用参考信息来记录。例如,参考信息ref_cnt=11时表示该缓存块还有11个待处理的请求,参考信息ref_cnt=0时表示该缓存块处于空闲状态,没有待处理的请求需要执行。
图1示出了一种缓存映射示意图。如图1所示,由标签项表可以看出,缓存采用组相联映射方式,缓存被划分成多个缓存组(set):set0、set1...,每个set包括4个标签项,分别对应4路(way)缓存块,每个标签项包括虚拟地址(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)具有一对一的固定映射关系。
当发生缓存未命中且各缓存组中没有空闲的对应的缓存块用于写入数据时,会发生缓存替换。此时根据缓存替换算法(例如,Least Recently Used(LRU,最近最久未使用算法)等),选择缓存替换优先级最高且处于空闲状态的缓存块进行替换。但是,如果缓存替换优先级最高的缓存块不处于空闲状态,也即该缓存块还有未执行完的请求,那么缓存替换操作会被挂起,在一些场景中,这种挂起导致的延迟可能需要花费数百个周期,从而导致巨大的性能损失。
在组相联的映射方式下,一个缓存组(set)内只能有少量固定数目的通道(way)。如果请求指向某个缓存组,请求只能使用当前缓存组中的通道,当一个组内所有的标签项都被占用,后续的未命中请求需要替换原有的通道。由于标签项被占用后不会主动释放,因此经常需要进行替换操作,阻塞缓存的后续请求。如果请求连续指向一个缓存组,阻塞现象会更加严重,影响系统性能。
本公开至少一实施例提供一种缓存管理方法、缓存管理装置、电子设备和非瞬时性计算机可读存储介质。该缓存管理方法包括:记录缓存中当前可用的空闲缓存块的第一数值;响应于第一数值小于设定阈值,主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块。
该缓存管理方法通过主动释放缓存块,从而保证缓存在工作时尽可能有足够多的空闲缓存块可以使用,这能够有效减少缓存阻塞,提升系统性能。同时,例如,该缓存管理方法和缓存的正常执行步骤还可以并行进行,不会影响缓存的执行流程。
本公开上述实施例的缓存管理方法可以用于处理器的一级缓存,也可以用于二级缓存等,对此不作限制,可以用于单核或多核的CPU中,亦可以用于GPU中。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
图2A为本公开至少一实施例提供的一种缓存管理方法的示意性流程图。
如图2A所示,本公开至少一实施例提供的缓存管理方法包括步骤S100至S200。
步骤S100,记录缓存中当前可用的空闲缓存块的第一数值。
例如,可以使用专用的缓存块计数器或寄存器获取缓存中当前可用的空闲缓存块的总数,例如,将缓存块计数器的初始值可以设为0,遍历缓存中所有的缓存块,每遇到一个空闲缓存块,缓存块计数器就对应加1;又例如,该缓存块计数器的初始值也可以设置为缓存块的总数,当缓存块每被占用1个,则该缓存块计数器就对应地减1,由此通过缓存块的总数减去缓存块计数器的当前值就可以获得可用的空闲缓存块的总数。
例如,为每个缓存块设置一个状态指示信息,用于指示缓存块处于空闲状态还是忙碌(busy)状态。例如,状态指示信息可以用参考信息表示,也即状态指示信息记录该状态项对应的缓存块还未执行的请求的数量,若数量为0,也即状态指示信息为0,表示该缓存块处于空闲状态,若该数量不为0,也即状态指示信息不为0,表示该缓存块还有未执行完的请求,处于忙碌状态。例如,状态指示信息还可以用0和1表示,当状态指示信息为0时表示状态项对应的缓存块处于空闲状态,当状态指示信息为1时表示状态项对应的缓存块处于忙碌状态。
步骤S200,响应于第一数值小于设定阈值,主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块。
在本公开中,“释放缓存块”表示所选中的将要被释放的缓存块,在满足一定条件后,释放缓存块将被释放从而转换为空闲缓存块。例如,当缓存中当前可用的空闲缓存块的总数小于设定阈值时,说明可用的空闲缓存块不足,此时启动主动释放缓存块的流程,保证缓存在工作时尽可能有足够多的空闲缓存块可以使用,降低缓存阻塞概率。需要说明的是,阈值的大小可以根据实际需要灵活配置(例如根据系统中运行任务来确定),以最大化缓存的使用效率,本公开的实施例对此不作限制。
图2B为本公开至少一实施例提供的一种缓存管理方法的示意性流程图。
如图2B所示,本公开至少一实施例提供的一种缓存管理方法相对于图2A所示的步骤之外,还包括步骤S300至S600。
步骤S300,将缓存中与释放缓存块对应的标签项释放以得到被释放标签项。
之后,被释放的标签项可以用于别的请求,由此改善了缓存的资源利用效率。
步骤S400,响应于存在对应于释放缓存块的未完成请求,在未完成请求被完成之后,将释放缓存块转变为空闲缓存块。
例如,响应于释放缓存块对应的状态指示信息指示释放缓存块还有未完成的至少一个请求,使用释放缓存块继续执行该至少一个请求,并在释放缓存块执行完该至少一个请求后,设置释放缓存块的状态指示信息为处于空闲状态。也就是说,缓存块在被释放后,仍可以继续执行未执行完的请求,在请求执行完后,设置释放缓存块的状态指示信息为处于空闲状态,由此可以将释放缓存块转换为空闲缓存块,可以使缓存中有更多的空闲缓存块。
步骤S500,响应于释放缓存块为脏缓存块,在将释放缓存块中存储的数据写回主存之后,将释放缓存块转变为空闲缓存块。
例如,脏缓存块中存储的是被修改过的数据且该数据还未同步到主存。当用户执行了修改操作后,缓存块中的数据与对应主存中的数据不一致,这个缓存块就被标记为脏缓存块。例如,为缓存块设置一个脏位(dirty bit),用于指示缓存块中的数据是否被修改过,从而可以通过脏位来判断缓存块是否为脏缓存块。例如,响应于释放缓存块的脏位(dirty bit)指示释放缓存块为脏缓存块,将释放缓存块中存储的数据写回主存之后,设置释放缓存块的状态指示信息为处于空闲状态,由此可以将释放缓存块转换为空闲缓存块,以使缓存中有更多的空闲缓存块。
上述步骤300、400和500没有先后顺序,例如,可以先执行步骤500,后执行步骤400和300,也可以并行进行这些步骤。
步骤S600,将释放缓存块放入空闲缓存块组合(pool)中以备用,并且将第一数值递增1。
例如,对于使用专用的缓存块计数器计算缓存中当前可用的空闲缓存块的总数的情形,每将一个释放缓存块转换为空闲缓存块并放入空闲缓存块组合中,缓存块计数器就对应加1;对于使用缓存块计数器记录被使用的缓存块的总数的情形,每将一个释放缓存块转换为空闲缓存块并放入空闲缓存块组合中,缓存块计数器就对应减1(相当于第一数值递增1)。例如,当空闲缓存块足够多时,即缓存块计数器的计数值大于等于阈值时,则可以停止该流程。
需要说明的是,本公开实施例中的缓存映射方式可以是全相联、直接相联或组相联,本公开的实施例对此不作限制。并且,在缓存采用组相联的实施例的情况下,可以包括多个组,本公开对组的个数不作限制。
以缓存映射方式为组相联的情况为例,首先在多个组中选择可用的一组,例如在所有有效(valid)组中选择一组,然后在该组中选择某一通道(way)。缓存的每个组可以具有有效标志(位)以记录该组是否有效,只有有效的组才是可用的。
例如,在步骤S200中,可以包括:响应于第一数值小于设定阈值,可以在缓存的多个组中所选择的第一组中与多个通道(way)对应的多个缓存块中选择至少一被占用的忙碌缓存块主动释放,以得到释放缓存块。例如,如果请求指向组set0,可以在该组中选择way0~way1中任一个对应的缓存块主动释放,得到释放缓存块。
例如,在第一组中根据缓存替换算法选择至少一被占用的忙碌缓存块主动释放,以得到释放缓存块。例如,缓存替换算法选择缓存替换优先级最高的缓存块进行主动释放。例如,缓存替换算法可以是最近最久未使用算法(Least Recently Used,LRU)、最少使用算法(Least Frequently Used,LFU)、随机替换算法(Random Replacement,RR)或先进先出算法(First In First Out,FIFO)等,本公开的实施例对此不作限制。例如,如果请求指向组set0,在该组中way2的缓存替换优先级最高,则选择way2对应的缓存块主动释放。
例如,在步骤S200中,还可以包括在缓存的多个组中有效的组中选择得到第一组。例如,还可以为每个缓存块设置一个有效位(valid bit),用于指示缓存块中的数据是否有效,通常有效的组指的是其中所有的通道都有效的组。
根据本公开另一实施例,缓存包括多个标签项与多个缓存块,多个标签项与多个缓存块之间具有动态映射关系,并且每项被占用的缓存块与一项被占用的标签项绑定。多个标签项与多个缓存块之间具有动态映射关系表示标签项与缓存块之间不具有一一对应的固定映射关系(静态映射关系),由此在缓存的运行中,一个标签项可以先后与不同的缓存块绑定,一个缓存块也可以先后与不同的标签项绑定。在动态映射的情形中,标签项的总数与缓存块的总数也可以不同,例如缓存块的数量大于标签项的数量。
例如,每个标签项用于标记标签项是否被来自主存中的任一主存块占用,以及在标签项被占用时指示用于缓存任一主存块的关联缓存块。
例如,多个状态项与多个缓存块一一对应,多个状态项中的每个状态项用于指示对应的缓存块的状态,状态包括缓存块是否被一个标签项标记为关联缓存块。
例如,标签项被主存块占用是指该标签项已与一个存储有该主存块的内容的缓存块相关联(绑定),此时该标签项不能再与其他缓存块建立关联关系。也就是说,每个标签项在同一时刻仅与一个缓存块建立关联关系,但在不同时刻可以和不同缓存块建立关联关系。
在缓存块和标签项动态映射的情况下,例如,在步骤S300中,可以包括在将释放缓存块进行释放之前,将释放缓存块与对应的标签项解绑,然后再将对应的标签项释放以得到被释放标签项。例如,被释放标签项可以供后续新的缓存请求使用。
在缓存块和标签项动态映射的情况下,本公开一实施例的缓存管理方法还包括将被释放标签项与选择的一项空闲缓存块绑定,以用于响应于对于缓存的请求。
例如,第一数值的多个空闲缓存块可以理解为构成一个空闲缓存块组合(pool),在需要缓存主存块的内容时,从空闲缓存块组合中挑选一个满足条件的空闲缓存块与一个标签项相关联,这里将该被挑选出的标签项称为第一标签项,将第一标签项标记为已被占用且与该挑选出的缓存块相关联,二者一起用于响应于对于缓存的请求;之后,当需要缓存另一个主存块时,再次从空闲缓存块组合中挑选一个满足条件的空闲缓存块与一个标签项建立新的关联关系,这里将该被挑选出的标签项称为第二标签项,将第二标签项标记为已被占用且与该新挑选的缓存块相关联。例如,第一标签项可以与第二标签项是不同的标签项,或者在不同的时间点,二者可以是同一个标签项。
图2C为本公开至少一实施例提供的一种缓存管理方法的示意性流程图。
如图2C所示,本公开至少一实施例提供的缓存管理方法包括步骤S1000至S1010。
步骤S1000:记录缓存中当前可用的空闲缓存块的第一数值。
步骤S1001:判断第一数值是否小于设定阈值。
步骤S1002:在缓存的多个组中有效的组中选择得到第一组。
步骤S1003:在第一组中根据缓存替换算法选择所述至少一被占用的忙碌缓存块主动释放,以得到释放缓存块。
步骤S1004:将释放缓存块与对应的标签项解绑。
步骤S1005:将缓存中与释放缓存块对应的标签项释放以得到被释放标签项。
步骤S1006:判断释放缓存块是否为脏缓存块。
步骤S1007:将释放缓存块中存储的数据写回主存。
步骤S1008:判断是否存在对应于释放缓存块的未完成请求。
步骤S1009:完成未完成请求。
步骤S1010:将释放缓存块转变为空闲缓存块,并将第一数值递增1。
图2D为本公开至少一实施例提供的一种缓存的整体工作流程示意图,该工作流程包括步骤S1至S9。
步骤S1:缓存控制器接收到处理器发送的访存请求。例如,该访存请求包括要访问的目标地址。
步骤S2:缓存命中或未命中检查。例如,通过使用访存请求中包括的要访问的目标地址在多个标签项中进行查询,确定访存请求中的目标地址(即,待访问的主存块的地址)是否命中,以确定待访问的数据是否存储于缓存中。
步骤S3:根据缓存命中或未命中检查结果,得到缓存控制信息。例如,如果缓存命中,则可以对访存请求进行处理;如果缓存未命中,则需要对缓存进行填充,即,从内存中将被访问信息读入缓存中,然后可以对访存请求进行处理。
步骤S4:根据缓存控制信息,更新标签项状态。
步骤S5:查询缓存中当前可用的空闲缓存块的第一数值;响应于第一数值小于设定阈值,例如缓存控制器主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块。
如上所述,第一数值用于得到当前可用的空闲缓存块的数量,该第一数值例如可以称为水印值(watermark)。
步骤S6:在将释放缓存块释放之前,将释放缓存块与对应的标签项解绑,然后再将对应的标签项释放以得到被释放标签项。
步骤S7:将释放缓存块放入空闲缓存块组合中以备用,并且将第一数值递增1。
步骤S8:根据缓存控制信息,将被释放标签项与选择的一项空闲缓存块绑定,以用于响应于后续对于缓存的请求。
步骤S9:由缓存控制信息决定是否需要对缓存进行读或写。
当确定访存请求中的目标地址命中时,也即发生缓存命中,缓存控制器可以直接从缓存存储中获取待访问的数据,以缩短访问延时。当缓存控制器确定访存请求中的目标地址没有命中时,也即发生缓存未命中,缓存控制器才从主存中获取待访问的数据,并将从主存块中获取的数据写入缓存存储。由于写入数据的时候以块为单位,因此会将获取的数据所在整个内存块写入到缓存存储中。
在本公开至少一实施例提供的缓存管理方法中,还提供状态块表,该状态块表包括多个状态项,例如,多个状态项与多个缓存块一一对应,多个状态项中的每个状态项用于指示对应的缓存块的状态,缓存块的状态包括缓存块是否被标签块表中的一个标签项标记为关联缓存块。在该实施例中,由标签块表中的标签项标记标签项是否被任一主存块占用,以及在标签项被占用时记录用于缓存任一主存块的关联缓存块,也就是当有缓存主存块内容的需求时,由标签项记录用于缓存主存块的关联缓存块,从而将关联缓存块与标签项建立暂时的映射关系,并由对应的状态项记录关联缓存块的状态。此时,标签项不再固定或静态地与一个缓存块相关联,而是根据缓存主存块的需求进行动态调整,通过标签项和状态项可以在缓存使用过程中动态调整标签项和缓存块的映射关系,从而减少暂停现象,降低等待延迟,提高缓存资源利用率,提升系统性能。
由于缓存块与标签项不再是固定或静态的关联关系,因此缓存块的数量还可以大于标签项的数量,从而在建立关联关系的过程中关联缓存块的可选择性更大,进一步降低等待延迟。
图3A为本公开至少一实施例提供的标签块表的示意图,图3B为本公开至少一实施例提供的状态块表的示意图。
如图3B所示,多个缓存块与多个索引值一一对应,每个缓存块都被标记唯一的索引值,例如,索引值可以为0、1、2、3......。
如图3A所示,一个标签项包括地址信息、访问信息和关联索引信息,地址信息用于记录该标签项的关联缓存块中存储的主存块的地址,若该标签项没有关联缓存块,则地址信息可以为空;访问信息用于表示标签项的缓存替换优先级,例如,访问信息的数值越大,表示缓存替换优先级越高;关联索引信息用于在标签项被占用时记录与标签项相关联的关联缓存块的索引值。也就是说,标签块表将图1所示的一个标签项中的参考信息替换为关联索引信息,以利用关联索引信息动态记录标签项当前关联的关联缓存块的索引值。
虽然图3A示出了组相联的示例且图中示出了2个标签组,但是本公开的实施例不限于组相联,也可以是全相联或直接相联,并且在组相联的情况下,可以包括2个标签组、4个标签组、8个标签组等。
如图3B所示,状态块表的多个状态项和多个缓存块一一对应,每个状态项包括关联关系指示信息和状态指示信息。关联关系指示信息用于指示状态项对应的缓存块是否被标签块表中的一个标签项标记为关联缓存块。
例如,关联关系指示信息为第一值(例如0)时表示该状态项对应的缓存块未被任何标签项标记为关联缓存块;关联关系指示信息为第二值(例如1)时表示该状态项对应的缓存块已与一个标签项相关联,属于该标签项的关联缓存块。
例如,状态指示信息用于指示状态项对应的缓存块是否处于空闲状态。例如,状态指示信息可以用参考信息表示,也即状态指示信息记录该状态项对应的缓存块还未执行的请求的数量,若数量为0,也即状态指示信息为0,表示该缓存块处于空闲状态,若该数量不为0,也即状态指示信息不为0,表示该缓存块还有未执行完的请求。例如,状态指示信息还可以用第三值和第四值表示,当状态指示信息为第三值时表示状态项对应的缓存块处于空闲状态,当状态指示信息为第四值时表示状态项对应的缓存块不处于空闲状态。
需要说明的是,关联索引信息、关联关系指示信息和状态指示信息还可以用其他表示形式表示,例如字符串、标识符等任意形式,本公开不限于上述实施例提供的采用数值表示的形式;并且,图3A及图3B仅是标签块表和状态块表的一种示意性描述,标签块表和状态块表还可以包括更多或其他参数,本公开的实施例对此不作限制。
例如,当内存控制器接收到处理器发送的访存请求时,首先通过使用访存请求中包括的要访问的目标地址在标签块表中进行查询,确定访存请求中的目标地址(即,待访问的主存块的地址)是否命中,以确定待访问的数据是否存储于缓存中。当确定访存请求中的目标地址命中时,也即发生缓存命中,内存控制器可以直接从缓存中获取待访问的数据,以缩短访问延时。当内存控制器确定访存请求中的目标地址没有命中时,也即发生缓存未命中,内存控制器才从主存中获取待访问的数据,并将从主存块中获取的数据写入缓存。由于写入数据的时候以块为单位,因此会将获取的数据所在整个内存块写入到缓存中。
下面结合图4具体说明上述动态映射的情形下,本公开至少一实施例提供的缓存管理方法的缓存写入、缓存读取的执行过程。
图4为本公开至少一实施例提供的缓存写入过程的示意性流程图。如图4所示,本公开实施例提供的缓存管理方法还包括步骤S30至S60。
步骤S30,响应于在缓存读取未命中时,接收到将主存中的目标主存块写入缓存的写入请求,确定目标标签项。
步骤S40,更新目标标签项,使得更新后的目标标签项指示目标标签项已被占用以及指示缓存目标主存块的关联缓存块。
步骤S50,更新状态块表。
步骤S60,将目标主存块的内容写入与目标标签项相关联的关联缓存块。
例如,当发生缓存未命中时,也即应用程序或软件请求的数据在缓存中不存在,需要从主存中读取该数据所在的目标主存块并将数据写入缓存。
由于此时标签项和缓存块是动态关联关系,则根据是否存在未被占用的标签项判断是否需要进行缓存替换。如图3A所示,以缓存映射方式为组相联为例,预先将多个标签项划分成多个标签组,按照组相联的映射规则与主存建立映射关系。当发生缓存未命中时,从主存中读取包括待获取的目标数据的目标主存块,根据目标主存块的块地址,确定目标主存块对应的标签组,若标签组中不存在未被占用的标签项,则按照缓存替换策略,从标签组中选择一个标签项作为目标标签项进行缓存替换;若标签组中存在未被占用的标签项,则按照缓存写入策略从标签组中选择一个未被占用的标签项作为目标标签项进行缓存写入。
下面分别描述本公开至少一实施例提供的缓存管理方法中的进行缓存替换的缓存写入过程和不进行缓存替换的缓存写入过程。
例如,标签项包括访问信息,访问信息用于表示标签项的缓存替换优先级,关于访问信息的介绍可以参考如前所述的内容,当然,访问信息的变更策略可以根据需要进行设置,本公开对此不作限制。
例如,在写入请求指示进行缓存替换时,步骤S30可以包括:基于写入请求和映射规则,确定多个备选标签项;根据多个备选标签项的访问信息,将多个备选标签项中替换优先级最高的备选标签项确定为目标标签项。
例如,在映射规则指示缓存结构为组相联时,根据写入请求和映射规则确定目标主存块对应的标签组,将该标签组包括的多个标签项作为备选标签项,将多个备选标签项中替换优先级最高的备选标签项作为目标标签项以执行缓存替换。
例如,在映射规则指示缓存结构为全相联时,将标签块表中包括的所有标签项都作为备选标签项,将备选标签项中替换优先级最高的备选标签项作为目标标签项以执行缓存替换。
例如,在映射规则指示缓存结构为直接相联时,标签块表中包括的一项标签项作为备选标签项,在该情形中,如果该备选标签项被占用则需要执行缓存替换。
确定目标标签项之后,在步骤S40更新标签块表,在步骤S50更新状态块表。当然需要说明的是,步骤S40和步骤S50可以并行执行,也可以先执行步骤S50再执行步骤S40,本公开对步骤S40和步骤S50的执行顺序不作限制。
例如,多个缓存块至少包括第一缓存块和第二缓存块,目标标签项的关联缓存块为第一缓存块,也就是说,目标标签项在执行缓存替换前与第一缓存块相关联。
例如,步骤S40可以包括:从多个缓存块中选择一个缓存块作为第二缓存块,其中,第二缓存块处于空闲状态且未被标记为关联缓存块;将目标标签项与第二缓存块相关联,以将目标标签项的关联缓存块从第一缓存块更新为第二缓存块。
例如,如图3B所示,状态项包括关联关系指示信息和状态指示信息,从多个缓存块中选择一个缓存块作为第二缓存块,可以包括:遍历多个缓存块,确定至少一个备选缓存块,其中,每个备选缓存块对应的状态项中的状态指示信息指示备选缓存块处于空闲状态,且备选缓存块对应的状态项中的关联关系指示信息指示备选缓存块未被标记为关联缓存块;从至少一个备选缓存块中选择一个备选缓存块作为第二缓存块。
例如,如图3B所示,多个缓存块与多个索引值一一对应,从至少一个备选缓存块中选择一个备选缓存块作为第二缓存块,包括:根据至少一个备选缓存块分别对应的至少一个索引值,从至少一个备选缓存块中选择索引值最小或最大的备选缓存块作为第二缓存块;或者随机选择一个备选缓存块作为第二缓存块。
例如,如图3B所示,标签项包括关联索引信息,将目标标签项与第二缓存块相关联,包括:确定第二缓存块对应的索引值;将目标标签项的关联索引信息由第一缓存块对应的索引值更新为第二缓存块对应的索引值。
例如,响应于第一缓存块对应的状态项中的状态指示信息指示第一缓存块还有待执行的至少一个请求,第一缓存块继续执行至少一个请求,并在第一缓存块执行完至少一个请求后,设置第一缓存块的状态指示信息为处于空闲状态。也就是说,第一缓存块在与目标标签项解除关联关系后,仍可以继续执行未执行完的请求,在请求执行完后,设置第一缓存块的状态指示信息为处于空闲状态,从而第一缓存块可以重新被其他标签项标记为关联缓存块。
例如,如图3A所示,标签项还包括地址信息和访问信息,步骤S40还可以包括:将目标主存块的地址写入目标标签项的地址信息,例如,目标主存块的地址可以是物理地址也可以是虚拟地址,从而在后续执行缓存读取时,可以根据地址信息判断是否发生缓存命中;根据缓存替换算法更新目标标签项的访问信息,这里,本公开的实施例对访问信息的更新算法不做限制。优选的,目标标签项的地址信息可以记录目标主存块的虚拟地址。
例如,步骤S50可以包括:解除目标标签项与第一缓存块的关联关系;更新第二缓存块的状态项,使得第二缓存块的状态项指示第二缓存块被标签块表中的一个标签项标记为关联缓存块。
例如,解除目标标签项与第一缓存块的关联关系时,可以更新第一缓存块对应的状态项中的关联关系指示信息,使得更新后的关联关系指示信息指示第一缓存块未被标记为关联缓存块。
例如,设置第二缓存块的状态项时,可以更新第二缓存块对应的状态项中的关联关系指示信息,使得更新后的关联关系指示信息指示第二缓存块已被标记为关联缓存块。
最后,在步骤S60,将目标主存块的内容写入目标标签项的关联缓存块,完成缓存写入操作。
图5为本公开至少一实施例提供的缓存替换过程的示意性流程图。下面结合图5、图3A和图3B,具体说明步骤S30-S60的执行过程。
例如,如图5所示,多个缓存块的索引值依次为0、1、2......、12、......、28、......76......等。
例如,标签块表中的访问信息由数值表示,访问信息的数值越大,表示缓存替换优先级越高,例如,对于组set0,缓存替换优先级最高的为2路标签项,发生缓存替换时该标签项最先被替换。例如,关联索引信息的数值表示标签项的关联缓存块的索引值,例如,组set0中的2路标签项的关联缓存块为索引值为4的缓存块。
例如,状态块表中的状态指示信息的数值表示该状态项对应的缓存块上还未执行的请求的数量。例如,索引值为4的缓存块的状态指示信息为8,表示该缓存块还有8个待执行的请求,索引值为5和7的缓存块的状态指示信息为0,表示这两个缓存块处于空闲状态。例如,关联关系指示信息为1时表示该状态项对应的缓存块是否被标记为关联缓存块。例如,索引值为4的缓存块的关联关系指示信息为1,表示该缓存块已被标记为一个标签项的关联缓存块,索引值为5和7的缓存块的关联关系指示信息为0,表示这两个缓存块未被标记为关联缓存块。
例如,根据状态块表中的关联关系指示信息和状态指示信息,每个缓存块可以存在四种状态:
关联关系指示信息为0,状态指示信息也为0,表示该缓存块处于空闲状态且未被标记为关联缓存块,可以与标签项建立关联关系;
关联关系指示信息为1,状态指示信息为0,表示该缓存块已被标记为关联缓存块,但该缓存块没有需要执行的请求,也即处于空闲状态;
关联关系指示信息为1,状态指示信息为大于0,表示该缓存块已被标记为关联缓存块,且该缓存块还有未执行完的请求;
关联关系指示信息为0,状态指示信息为大于0,表示该缓存块已被解除关联关系,不再属于关联缓存块,但该缓存块还有未执行完的请求。
例如,当发生缓存未命中时,接收到将主存中的目标主存块写入缓存的写入请求,首先在步骤S30,映射规则指示缓存结构为组相联,写入请求指示目标主存块可写入组set0,将组set0中的4个标签项作为备选标签项,从中选择缓存替换优先级最高的标签项,也即将2路标签项作为目标标签项。目标标签项当前的关联缓存块为索引值为4的缓存块,也即第一缓存块为索引值为4的缓存块,由于第一缓存块的状态指示信息为8,表示第一缓存块处于非空闲状态,此时第一缓存块中的内容不能被替换。
之后,在步骤S40,遍历多个缓存块,从多个缓存块中选择关联关系指示信息为0且状态指示信息也为0的缓存块作为备选缓存块,例如,备选缓存块包括索引值为5和7的缓存块,随机选择一个备选缓存块作为第二缓存块,例如,将索引值为7的缓存块作为第二缓存块,将目标标签项的关联索引信息由第一缓存块对应的索引值4更新为所述第二缓存块对应的索引值7。
之后,在步骤S50,将第一缓存块的状态项中的关联关系指示信息更新为0,将第二缓存块的状态项中的关联关系指示信息更新为1(图5未示出)。例如,将索引值为4的状态项中的关联关系指示信息由1更新为0,将索引值为7的状态项中的关联关系指示信息由0更新为1。
之后,在步骤S60,将目标主存块的内容写入索引值为7的缓存块,完成写入操作。
同时,第一缓存块中的8个未执行请求继续执行,直到8个请求都执行完毕,第一缓存块的关联关系指示信息更新为0,第一缓存块可以重新与其他标签项建立关联关系。
在上述过程中,当发生缓存替换操作时,可以动态调整目标标签项的关联缓存块,使得目标标签项与处于空闲状态且未与任何标签项相关联的缓存块建立关联关系,并且将目标主存块的内容写入关联缓存块,从而可以立即执行缓存写入操作,而不需等待目标标签项的当前关联缓存块的请求执行完毕再写入缓存块,从而减少系统计算流水线的暂停现象,降低系统访问延迟,提高系统性能。
例如,在写入请求指示不进行缓存替换时,例如,此时仍有空闲的标签项可以使用,步骤S30可以包括:基于写入请求和映射规则,确定多个备选标签项;将多个备选标签项中未被占用的一个备选标签项确定为目标标签项。关于备选标签项的内容可以参考缓存替换操作的相关描述,这里不再赘述。
例如,多个缓存块还包括第三缓存块,步骤S40可以包括:从多个缓存块中选择一个缓存块作为第三缓存块,其中,第三缓存块处于空闲状态且未被标记为关联缓存块;将目标标签项与第三缓存块相关联,以将目标标签项的关联缓存块更新为第三缓存块。关于此时步骤S40的具体执行过程可以参考参考缓存替换操作的相关描述,这里不再赘述。
例如,步骤S50可以包括:设置第三缓存块的状态项,使得第三缓存块的状态项指示第三缓存块被标签块表中的一个标签项标记为关联缓存块。例如,设置第三缓存块的状态项时,可以更新第三缓存块对应的状态项中的关联关系指示信息,使得更新后的关联关系指示信息指示第三缓存块已被标记为关联缓存块。
例如,在步骤S60,将目标主存块的内容写入第三缓存块。
当发生缓存命中时,执行数据读取操作。
图6为本公开至少一实施例提供的缓存读取过程的示意性流程图。如图6所示,本公开实施例提供的缓存管理方法还包括步骤S70至S90。
在步骤S70,响应于缓存读取命中,确定读取请求对应的目标标签项。
在步骤S80,确定目标标签项中与目标标签项相关联的目标关联缓存块。
在步骤S90,读取目标关联缓存块中存储的数据。
例如,将存储的数据作为读取数据。
例如,当接收到缓存读取请求时,将读取请求中的目标主存块的地址与标签块表中标签项的地址信息进行比对,如果标签块表中存在该地址,则判断读取的数据被命中,也即发生缓存命中,之后执行步骤S70-S90;如果标签块表中不存在该地址,则确定发生缓存未命中,根据前述的步骤S30-S60执行缓存写入操作。
例如,确定所述目标标签项中标记的目标关联缓存块,可以包括:确定目标标签项的关联索引信息记录的关联缓存块的索引值;依据索引值确定目标关联缓存块。
例如,当发生缓存命中时,也即在标签块表中查询到读取请求中待访问的数据的块地址时,将命中的标签项作为目标标签项,根据目标标签项的关联索引信息中的数值确定目标标签项的关联缓存块的索引值,从而确定目标关联缓存块,之后,读取目标关联缓存块中存储的数据作为读取数据,完成缓存读取过程。
与上述的缓存管理方法相对应,本公开至少一实施例还提供一种缓存管理装置,图7A为本公开至少一实施例提供的一种缓存管理装置的示意性框图。
例如,如图7A所示,缓存管理装置700包括第一寄存器701和选择处理单元702。
例如,第一寄存器701配置为记录所述缓存中当前可用的空闲缓存块的第一数值。例如,第一寄存器701可以为实现上述缓存管理方法而特别提供的寄存器,但是也可以是复用已有的某个寄存器,例如,使用某个寄存器中尚未被使用的部分,例如某个寄存器为32位,其中低16位被系统分配用于记录某一信息,而高16位处于空闲状态,则可以使用这高16位用于实现上述第一寄存器。
例如,选择处理单元702,配置为响应于所述第一数值小于设定阈值,主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块。
关于第一寄存器701和选择处理单元702的相关内容可以参考上述缓存管理方法的实施例中图2A所示的步骤S100、步骤S200的相关描述,在此不再赘述。
图7B为本公开至少一实施例提供的一种缓存管理装置的示意性框图。如图7B所示,缓存管理装置700还可以包括标签释放单元703,第一转变单元704和第二转变单元705。
标签释放单元703配置为将缓存中与释放缓存块对应的标签项释放以得到被释放标签项。
第一转变单元704配置为响应于存在对应于释放缓存块的未完成请求,在未完成请求被完成之后,将释放缓存块转变为空闲缓存块。
第二转变单元705配置为响应于释放缓存块为脏缓存块,在将释放缓存块中存储的数据写回主存之后,将释放缓存块转变为空闲缓存块。
转移单元706配置为将释放缓存块放入空闲缓存块组合(pool)中以备用,并且将第一数量值递增1。
需要说明的是,标签释放单元703用于实现图2B所示的步骤S30,第一转变单元704用于实现图2B所示的步骤S40,第二转变单元705用于实现图2B所示的步骤S50,转移单元706用于实现图2B所示的步骤S60。从而关于标签释放单元703的具体说明可以参考上述缓存管理方法的实施例中图2B所示的步骤S30的相关描述,关于第一转变单元704的具体说明可以参考上述缓存管理方法的实施例中图2B所示的步骤S40的相关描述,关于第二转变单元705的具体说明可以参考上述缓存管理方法的实施例中图2B所示的步骤S50的相关描述,关于转移单元706的具体说明可以参考上述缓存管理方法的实施例中图2B所示的步骤S60的相关描述。此外,缓存管理装置可以实现与前述缓存管理方法相似的技术效果,在此不再赘述。
上述图7A、图7B所示的各种单元例如可以通过软件、硬件、固件或它们的任意组合实现。
图8为本公开至少一实施例提供的处理器的示意性结构图。
如图8所示,该处理器800包括如本公开任一实施例所述的缓存管理装置801以及缓存802。关于缓存管理装置801的结构、功能、技术效果如前所述,这里不再赘述。例如,该处理器可以是单核或多核中央处理器(CPU)、图像处理器(GPU)、AI加速器等。
例如,该缓存映射方式可以为组相联,例如还可以为全相联、直接相联等架构,关于缓存架构的具体内容这里不再赘述。
例如,缓存管理装置801的结构、功能、技术效果可以参考缓存管理装置700的相关内容,这里不再赘述。
通过缓存管理装置801对缓存块和标签项进行动态关联,减少缓存替换过程中由于待替换的缓存块仍有未执行完的请求导致缓存替换操作被暂停的现象,降低由于暂停现象导致的延时,提升系统性能。
图9为本公开一些实施例提供的另一种电子设备的示意框图。该电子设备900例如适于用来实施本公开实施例提供的缓存管理方法。电子设备900可以是终端设备等。需要注意的是,图9示出的电子设备900仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图9所示,电子设备900可以包括处理装置(例如中央处理器)910,其可以根据存储在只读存储器(ROM)920中的程序或者从存储装置980加载到随机访问存储器(RAM)930中的程序而执行各种适当的动作和处理。
在RAM930中,还存储有电子设备900操作所需的各种程序和数据。处理装置910、ROM920以及RAM930通过总线940彼此相连。输入和/或输出(I/O)接口950也连接至总线940。
通常,以下装置可以连接至I/O接口950:输入装置960,例如输入装置960可以包括触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等;输出装置970,例如输出装置970可以包括液晶显示器(LCD)、扬声器、振动器等;存储装置980,例如存储装置980可以包括磁带、硬盘等;以及通信装置990。通信装置990可以允许电子设备900与其他电子设备进行无线或有线通信以交换数据。虽然图9示出了具有各种装置的电子设备900,但应理解的是,并不要求实施或具备所有示出的装置,电子设备900可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,处理装置910可以执行上述缓存管理方法,可以实现本公开实施例提供的缓存管理方法中限定的功能。
本公开的实施例提供一种缓存管理方法以及实现该缓存管理方法的缓存管理装置,在至少一实施例中,缓存管理方法以及实现该缓存管理方法的缓存管理装置具有以下一项或多项有益效果:
(1)本公开的至少一实施例提供的缓存管理方法通过主动释放缓存块,保证缓存在工作时尽可能有足够多的空闲缓存块可以使用,能够有效减少缓存阻塞,提升系统性能。同时,该缓存管理方法和缓存的正常执行步骤可以并行进行,不会影响缓存的执行流程。
(2)本公开的至少一实施例提供的缓存管理方法采用组相联的缓存映射方式,在降低未命中率的同时降低了延迟和设计代价。
(3)本公开的至少一实施例提供的缓存管理方法采用缓存块和标签项动态映射的方式,将缓存块和标签项作为两个相互独立的部分使用,每个标签项可以绑定到任意一个空闲的缓存块,减少缓存替换过程中的暂停现象,降低访问延时,提升系统性能。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种用于缓存的管理方法,包括:
记录所述缓存中当前可用的空闲缓存块的第一数值;
响应于所述第一数值小于设定阈值,主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块。
2.根据权利要求1所述的管理方法,还包括:
响应于存在对应于所述释放缓存块的未完成请求,在所述未完成请求被完成之后,将所述释放缓存块转变为空闲缓存块。
3.根据权利要求1所述的管理方法,还包括:
响应于所述释放缓存块为脏缓存块,在将所述释放缓存块中存储的数据写回主存之后,将所述释放缓存块转变为空闲缓存块。
4.根据权利要求2或3所述的管理方法,还包括:
将所述释放缓存块放入空闲缓存块组合中以备用,并且将所述第一数值递增1。
5.根据权利要求1所述的管理方法,其中,所述主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块,包括:
在所述缓存的多个组中所选择的第一组中与多个通道对应的多个缓存块中选择至少一被占用的忙碌缓存块主动释放,以得到所述释放缓存块。
6.根据权利要求5所述的管理方法,还包括:
在所述缓存的多个组中有效的组中选择得到所述第一组。
7.根据权利要求5所述的管理方法,其中,在所述缓存的多个组中选择的第一组中与多个通道对应的多个缓存块中选择至少一被占用的忙碌缓存块主动释放,以得到所述释放缓存块,包括:
在所述第一组中根据缓存替换算法选择所述至少一被占用的忙碌缓存块主动释放,以得到所述释放缓存块。
8.根据权利要求1-3任一所述的管理方法,还包括:
将所述缓存中与所述释放缓存块对应的标签项释放以得到被释放标签项。
9.根据权利要求8所述的管理方法,其中,所述缓存包括多个标签项与多个缓存块,所述多个标签项与所述多个缓存块之间具有动态映射关系,并且每项被占用的缓存块与一项被占用的标签项绑定。
10.根据权利要求9所述的管理方法,其中,所述缓存还包括多个状态项,所述多个状态项与所述多个缓存块一一对应,所述多个状态项中的每个状态项用于指示对应的缓存块的状态,所述状态包括所述缓存块是否被一个标签项标记为关联缓存块。
11.根据权利要求9所述的管理方法,其中,所述将所述缓存中与所述释放缓存块对应的标签项释放以得到所述被释放标签项,包括:
在将所述释放缓存块释放之前,将所述释放缓存块与对应的标签项解绑,然后再将所述对应的标签项释放以得到所述被释放标签项。
12.根据权利要求8所述的管理方法,还包括:
将所述被释放标签项与选择的一项空闲缓存块绑定,以用于响应于对于所述缓存的请求。
13.一种缓存管理装置,
第一寄存器,配置为记录所述缓存中当前可用的空闲缓存块的第一数值;
选择处理单元,配置为响应于所述第一数值小于设定阈值,主动选择释放至少一被占用的忙碌缓存块以得到释放缓存块。
14.一种处理器,包括:
如权利要求13所述的缓存管理装置;以及
所述缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311332742.XA CN117311638A (zh) | 2023-10-13 | 2023-10-13 | 缓存管理方法、缓存管理装置、处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311332742.XA CN117311638A (zh) | 2023-10-13 | 2023-10-13 | 缓存管理方法、缓存管理装置、处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117311638A true CN117311638A (zh) | 2023-12-29 |
Family
ID=89237057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311332742.XA Pending CN117311638A (zh) | 2023-10-13 | 2023-10-13 | 缓存管理方法、缓存管理装置、处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117311638A (zh) |
-
2023
- 2023-10-13 CN CN202311332742.XA patent/CN117311638A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113641596B (zh) | 缓存管理方法、缓存管理装置、处理器 | |
CN105740164B (zh) | 支持缓存一致性的多核处理器、读写方法、装置及设备 | |
US5349656A (en) | Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information | |
JP6613375B2 (ja) | プロファイリングキャッシュ置換 | |
US5535361A (en) | Cache block replacement scheme based on directory control bit set/reset and hit/miss basis in a multiheading multiprocessor environment | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
JP2017515242A (ja) | メモリ管理方法およびデバイス | |
US6502168B1 (en) | Cache having virtual cache controller queues | |
WO2005121966A2 (en) | Cache coherency maintenance for dma, task termination and synchronisation operations | |
US8656119B2 (en) | Storage system, control program and storage system control method | |
CN110413211B (zh) | 存储管理方法、电子设备以及计算机可读介质 | |
US20050240731A1 (en) | Managing a multi-way associative cache | |
US7702875B1 (en) | System and method for memory compression | |
US20110167223A1 (en) | Buffer memory device, memory system, and data reading method | |
CN109478164B (zh) | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 | |
US7502901B2 (en) | Memory replacement mechanism in semiconductor device | |
JP3964821B2 (ja) | プロセッサ、キャッシュシステム及びキャッシュメモリ | |
US7120776B2 (en) | Method and apparatus for efficient runtime memory access in a database | |
CN117311638A (zh) | 缓存管理方法、缓存管理装置、处理器 | |
US20070101064A1 (en) | Cache controller and method | |
US8812782B2 (en) | Memory management system and memory management method | |
KR102400977B1 (ko) | 프로세서를 통한 페이지 폴트 처리 방법 | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ | |
CN113778693B (zh) | 缓存操作方法、缓存操作装置、电子设备及处理器 | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
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 |