CN115357196A - 动态可扩展的组相联高速缓存方法、装置、设备及介质 - Google Patents
动态可扩展的组相联高速缓存方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115357196A CN115357196A CN202211068093.2A CN202211068093A CN115357196A CN 115357196 A CN115357196 A CN 115357196A CN 202211068093 A CN202211068093 A CN 202211068093A CN 115357196 A CN115357196 A CN 115357196A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- block
- temporary
- group
- 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
- 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/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- 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/061—Improving I/O performance
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种动态可扩展的组相联高速缓存方法、装置、设备以及存储介质,属于数据处理领域。所述方法包括:根据待缓存数据的写入地址,从数据缓存器中确定出第一缓存组;其中,所述数据缓存器还包括至少一个共享缓存块;判断所述第一缓存组对应的所有缓存块中是否有剩余存储空间;若没有剩余存储空间,则从至少一个共享缓存块中筛选出至少一个临时缓存块;其中,所述临时缓存块为未存储数据的共享缓存块;将所述临时缓存块关联至所述第一缓存组,并返回所述临时缓存块的地址信息;根据所述地址信息,将所述待缓存数据写入所述临时缓存块。本申请提高了资源利用率。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种动态可扩展的组相联高速缓存方法、装置、设备以及存储介质。
背景技术
相关技术中,缓存组织结构为组相联结构,即把缓存分成很多个缓存组set,每个缓存组里面有若干个缓存块。每个组里包含的缓存块的数量即为该缓存的相联度。在数据写入时,根据处理器发的访存地址来决定数据应该放在缓存中的哪一组。
但是,程序运行时处理器访问的地址可能不是均匀的分布到各个缓存组。可能某些缓存组里面的缓存块早早的被填满了,到那时仍有大量的数据块需要放到该缓存组,那么将出现频繁的替换操作,即根据替换策略把某个缓存块刷新到下一级存储,在该位置写入新的数据块。而另外的一些缓存组可能迟迟访问不到,里面的缓存块一直是空闲状态。也即是现有技术中存在缓存组资源利用率较低的技术问题。
申请内容
本申请的主要目的在于提供一种动态可扩展的组相联高速缓存方法、装置、设备以及存储介质,旨在解决现有缓存组资源利用率较低的技术问题。
为实现上述目的,本申请提供一种动态可扩展的组相联高速缓存方法,所述方法包括:
根据待缓存数据的写入地址,从数据缓存器中确定出第一缓存组;其中,所述数据缓存器还包括至少一个共享缓存块;
判断所述第一缓存组对应的所有缓存块中是否有剩余存储空间;
若没有剩余存储空间,则从至少一个共享缓存块中筛选出至少一个临时缓存块;其中,所述临时缓存块为未存储数据的共享缓存块;
将所述临时缓存块关联至所述第一缓存组,并返回所述临时缓存块的地址信息;
根据所述地址信息,将所述待缓存数据写入所述临时缓存块。
在一实施例中,所述若没有剩余存储空间,则从至少一个共享缓存块确定出临时缓存块,包括:
若没有剩余存储空间,则依次确定至少一个共享缓存块的数据存储情况;
将首个未存储数据的所述共享缓存块作为所述临时缓存块。
在一实施例中,所述根据所述地址信息,将所述待缓存数据写入所述临时缓存块之后,所述方法还包括:
若所述临时缓存块中写入的数据被取出,则解除所述临时缓存块与所述缓存组之间的关联关系。
在一实施例中,所述方法还包括:
根据接收到的访问请求的访问地址,确定待访问数据在数据缓存器中的第二缓存组;
从所述第二缓存组对应的所有缓存块中搜索所述访问请求对应的待访问数据;
若未命中,则从所述第二缓存组对应的第二临时缓存块中搜索所述待访问数据;
若在第二临时缓存块中命中,则返回所述第二临时缓存块中的存储数据。
在一实施例中,所述若未命中,则从所述第二缓存组对应的第二临时缓存块中搜索所述待访问数据,包括:
若未命中,则判断所述第二缓存组是否关联有所述第二临时缓存块;
若关联有,则从第二临时缓存块中搜索所述待访问数据。
在一实施例中,所述数据缓存器中预置有共享缓存块指示表;
所述判断所述第二缓存组是否关联有所述第二临时缓存块,包括:
查询所述共享缓存块指示表中所述第二缓存组对应的临时缓存状态;
若所述临时缓存状态为有效状态,则确定第二缓存组关联有所述第二临时缓存块;
若所述临时缓存状态为失效状态,则确定第二缓存组没有关联所述第二临时缓存块;
所述从第二临时缓存块中搜索所述待访问数据,包括:
根据所述共享缓存块指示表中所述第二缓存组对应的第二地址信息,从从第二临时缓存块中搜索所述待访问数据。
在一实施例中,所述根据接收到的访问请求的访问地址,确定待访问数据在数据缓存器中的第二缓存组之后,所述方法还包括:
从所述第二缓存组对应的所有缓存块和第二临时缓存块中并行搜索所述访问请求对应的待访问数据;
若命中,则返回命中的所述存储数据。
第二方面,本申请还提供了一种动态可扩展的组相联高速缓存装置,所述装置包括:
缓存组确定模块,用于根据待缓存数据的写入地址,从数据缓存器中确定出第一缓存组;其中,所述数据缓存器还包括至少一个共享缓存块;
空间判断模块,用于判断所述第一缓存组对应的所有缓存块中是否有剩余存储空间;
临时缓存确定模块,用于若没有剩余存储空间,则从至少一个共享缓存块中筛选出临时缓存块;其中,所述临时缓存块为未存储数据的共享缓存块;
缓存关联模块,用于将所述临时缓存块关联至所述第一缓存组,并返回所述临时缓存块的地址信息;
数据写入模块,用于根据所述地址信息,将所述待缓存数据写入所述临时缓存块。
第三方面,本申请还提供了一种数据缓存设备,包括:处理器,存储器以及存储在所述存储器中的数据缓存程序,所述数据缓存程序被所述处理器运行时实现如上第一方面任一项所述动态可扩展的组相联高速缓存方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有数据缓存程序,所述数据缓存程序被处理器执行时实现所述第一方面任一项所述的动态可扩展的组相联高速缓存方法。
本申请实施例提出的一种动态可扩展的组相联高速缓存方法,所述方法包括:根据待缓存数据的写入地址,从数据缓存器中确定出第一缓存组;其中,所述数据缓存器还包括至少一个共享缓存块;判断所述第一缓存组对应的所有缓存块中是否有剩余存储空间;若没有剩余存储空间,则从至少一个共享缓存块中筛选出临时缓存块;其中,所述临时缓存块为未存储数据的共享缓存块;将所述临时缓存块关联至所述第一缓存组,并返回所述临时缓存块的地址信息;根据所述地址信息,将所述待缓存数据写入所述临时缓存块。
由此,本申请中,将数据缓存器中的部分存储空间作为共享缓存块使用,当某一些缓存组被频繁使用导致其包括的缓存块的存储空间均已使用完毕时,可以将至少一个共享缓存块与该缓存组相关联,即将至少一个共享缓存块分配给前述的缓存组使用,从而增大该缓存组内的缓存块数量,扩充其存储空间,从而减少了替换的发生,进而提高了资源利用率。
附图说明
图1为本申请动态可扩展的组相联高速缓存方法所需的数据缓存设备的结构示意图;
图2为本申请动态可扩展的组相联高速缓存方法第一实施例的流程示意图;
图3为本申请动态可扩展的组相联高速缓存方法第二实施例的流程示意图;
图4为本申请动态可扩展的组相联高速缓存方法第三实施例的流程示意图;
图5为本申请动态可扩展的组相联高速缓存方法第四实施例的流程示意图;
图6为本申请动态可扩展的组相联高速缓存方法第五实施例的流程示意图;
图7为本申请动态可扩展的组相联高速缓存装置实施例的功能模块示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
相关技术中,在计算机或芯片中处理器的运行速度往往大于主存的读写速度,为了提高处理器访问主存的速度引入了高速缓存。高速缓存是位于处理器和主存储器DRAM(Dynamic Random Access Memory)之间的容量较小、但速度很高的存储器,通常由SRAM(Static Random Access Memory静态存储器)组成。***中可能有多级缓存。因为缓存容量较小,它存储的数据是主存数据的一个子集,它是利用程序的时间局部性和空间局部性原理来提升存储访问性能的。如果在本级缓存中找到处理器需要的数据则为命中(hit),如果命中则不需要再访问较慢的下一级存储,可以直接从高速缓存中返回数据,因为高速缓存的运行速度比主存快很多所以可以大幅提升性能;如果在本级缓存中没有找到处理器需要数据称作失效(miss)那么需要访问下一级存储取回需要的数据。
其中,缓存和下一级存储交换数据的最小单位为缓存块(block或line),即:缓存和下一级存储是按照缓存块为单位传输数据的。常见的缓存组织结构为组相联结构,即把缓存分成很多个缓存组set,每个缓存组里面有若干个缓存块。每个缓存组里包含的缓存块的数量即为该缓存的相联度。在写入数据时,根据处理器发的访存地址来决定数据应该放在缓存中的哪一缓存组,但是在该组内的哪一个缓存块是不固定的,即:该组的任意一个缓存块都可能放置该数据。比如256组4路缓存结构,包含有256个组,每个组里面有4个缓存块,一个数据块放在缓存中的哪个缓存组是固定的,但在该缓存组中的4个位置却是不固定的。
组相联的缓存中有一种失效为称为冲突失效。即因为一个缓存组包含的缓存块是有限的,如果不同地址的很多个数据块都被映射到同一个缓存组,将有可能导致部分数据块被放弃,下次需要这些数据块时再把这些数据块替换回来,这就导致了冲突失效。提高相联程度可以减少冲突失效。
当前一般实现中的缓存的组数和相联度是固定的,即组数不变,相联度也不变,缓存的容量也不变。但是程序运行时处理器访问的地址可能不是均匀的分布到各个缓存组。可能某些缓存组里面的缓存块早早的被填满了,仍有大量的数据块需要放到该缓存组,那么将出现频繁的替换操作:即根据替换策略把某个缓存块刷新到下一级存储,在该位置写入新的数据块。而另外的一些缓存组可能迟迟访问不到,里面的缓存块一直是空闲状态。如缓存包含1024组,每组有4个缓存块,即4路组相联的缓存。若第0组、第1组全部空闲,第2组全部有有效数据,第3组有3个有效块。此时如果新访问的数据需要放到第2组,将发生缓存冲突失效,需要从下级存储取回数据块,并把第2组的某一个缓存块写到下一级存储,再把新的数据放入该缓存块,此时,虽然其它组有很多空闲位置也没法使用,因为第2组满了所以要替换。
因此,相关技术中缓存块属于哪个组是固定不变的,即使某些组的缓存块是空闲的而某些组出现频繁替换操作,它也无法使用空闲组的缓存块。
为此,本申请提供了一种解决方案,通过根据各个缓存组里面的块的利用情况有针对性的增加某些缓存组里的缓存块的数量,从而可以缓解替换的发生次数,降低失效率提升了命中率从而提升访存的性能。在本申请中,增加某些缓存组里的缓存块的数量通过分配共享缓存块来实现。即当某一些缓存组被频繁使用导致其包括的缓存块的存储空间均已使用完毕时,可以将至少一个共享缓存块与该缓存组相关联,即将至少一个共享缓存块分配给前述的缓存组使用,从而增大该缓存组内的缓存块数量,扩充其存储空间,从而减少了替换的发生,进而提高了资源利用率。
下面结合一些具体实施例进一步阐述本申请的发明构思。
参照图1,图1为本申请实施例方案涉及的硬件运行环境的数据缓存设备的结构示意图。
如图1所示,该数据缓存设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对数据缓存设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作***、数据存储模块、网络通信模块、用户接口模块以及数据缓存程序。
在图1所示的数据缓存设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本申请数据缓存设备中的处理器1001、存储器1005可以设置在数据缓存设备中,数据缓存设备通过处理器1001调用存储器1005中存储的数据缓存程序,并执行本申请实施例提供的动态可扩展的组相联高速缓存方法。
基于上述硬件结构但不限于上述硬件结构,本申请提供一种数据缓存第一实施例。参照图2,图2示出了本申请动态可扩展的组相联高速缓存方法第一实施例的流程示意图。
需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例中,方法包括:
步骤S101、根据待缓存数据的写入地址,从数据缓存器中确定出第一缓存组;其中,数据缓存器还包括至少一个共享缓存块。
具体而言,本实施例中,处理器在处理待缓存数据时会下发一缓存指令,该缓存指令包括有相应的访问地址,即写入地址。该访问地址指向了数据缓存器中的某一个缓存组。基于上述记载,可以理解的是,数据缓存器为高速缓存,是位于处理器和主存储器DRAM(Dynamic Random Access Memory)之间的容量较小、但速度很高的存储器,通常由SRAM(Static Random Access Memory静态存储器)组成。***中可能有多级缓存,此时,本实施例中的数据缓存器可以是一级缓存。此外,基于上述记载,由于程序运行时处理器的写入地址可能不是均匀的分布到各个缓存组。此时,写入地址可能指向的某一些频繁使用的缓存组。
本实施例中,数据缓存器中整个缓存空间由固定存储空间和共享存储空间两部分构成,其中,固定存储空间的架构与现有技术的组相联缓存中的相同,即每个缓存块属于哪个缓存组是固定不变的。而共享存储空间由至少一个共享缓存块组成,共享缓存块为不固定属于某个缓存组的缓存块。
在一示例中,数据缓存的地址位宽为32bit,缓存块位宽为4个字节,那么:Offset字段的位宽为2bit(4字节宽度用2bit表示),index的位宽为8bit(256个组),Tag字段的位宽为22bit。其中,固定存储空间包括256组缓存组,每组2路缓存块。共享存储空间包括128个缓存块。可以理解的,为了简化控制成本,可以是连续2个共享缓存块作为一个单位分配,整个共享存储空间可以分给64个缓存组使用。或者,每个共享缓存块也可以作为一个单位分配,整个共享存储空间可以分给128个缓存组使用。具体的,作为一个单元同时使用的共享缓存块的数量可以由寄存器配置。
固定存储空间和共享存储空间内的缓存块结构是一样的,均包括1bit的有效位V字段,22bit标签Tag字段,32bit数据data字段。
在一些具体实施例方式中,数据缓存器配置有共享存储空间管理模块,其用于负责记录共享存储空间总的大小,分组情况,各个分组的利用情况,以及共享缓存块的分配和回收。
本步骤中,先根据下发的写入地址确定出需要写入数据的缓存组。
步骤S102、判断第一缓存组对应的所有缓存块中是否有剩余存储空间。
步骤S103、若没有剩余存储空间,则从至少一个共享缓存块中筛选出至少一个临时缓存块;其中,临时缓存块为未存储数据的共享缓存块。
步骤S104、将临时缓存块关联至第一缓存组,并返回临时缓存块的地址信息。
具体而言,先判断在固定存储空间中该第一缓存组对应的所有缓存块中是否有空闲块,如果有,则将待缓存数据写入空闲块,此时,数据缓存流程结束。
如果在固定存储空间中该第一缓存组对应的所有缓存块中没有空闲块,则在固定存储空间中,该第一缓存组对应的存储空间已经用完,没有剩余存储空间了。
此时,则可以扩充该第一缓存组对应的存储空间。也即是则从至少一个共享缓存块中筛选出至少一个临时缓存块。可以理解的,临时缓存块为共享缓存块中没有被其他缓存组使用,从而没有存储数据的空白共享缓存块。
在筛选出空白的临时缓存块之后,将临时缓存块关联至第一缓存组,也即是将共享存储空间的该共享缓存块临时分配至该第一缓存组使用。换句话,在存在该关联关系时,该第一缓存组所包括的缓存块由2部分构成:固定存储空间中固定属于它的缓存块和共享存储空间中临时分配给它的缓存块。由此,本实施例中,第一缓存组的存储空间被扩充。
可以理解的,将临时缓存块关联至第一缓存组,也即是在解除该关联关系之前,该临时缓存块可以认为是第一缓存组固定的缓存块。
将临时缓存块关联至第一缓存组,并返回临时缓存块的地址信息,以便于处理器准确确定该临时缓存块的物理位置。
可以理解的,由于临时缓存块可包括连续的2个共享缓存块,此时,返回的地址信息可以是临时缓存块的起始地址,以节约内部资源。
步骤S105、根据地址信息,将待缓存数据写入临时缓存块。
本步骤中,处理器将待缓存数据写入该临时缓存块。
在一示例中,固定存储空间中的第2组缓存组需要写入数据,但是其包括的2路缓存块均有有效数据,此时如果将待写入数据放入第2组,则将会发生冲突失效。此时,可向共享存储空间管理模块发出扩充请求,共享存储空间管理模块接收到该扩充请求后,则从其管理的至少一个共享缓存块中筛选出2个连续空白的共享缓存块作为一个单元分配给第2组使用。此时,第2组以一共包括4个缓存块,也即是2个原有的缓存块和2个临时缓存块,此时,可将待写入数据放入至2个临时缓存块中其中一个。
可见,本实施例中,将数据缓存器中的部分存储空间作为共享缓存块使用,当某一些缓存组被频繁使用导致其包括的缓存块的存储空间均已使用完毕时,可以将至少一个共享缓存块与该缓存组相关联,即将至少一个共享缓存块分配给前述的缓存组使用,从而增大该缓存组内的缓存块数量,扩充其存储空间,从而减少了替换的发生,进而提高了资源利用率。
作为一种实施方式,步骤S103具体包括:
步骤S1031、若没有剩余存储空间,则依次确定至少一个共享缓存块的数据存储情况。
步骤S1032、将首个未存储数据的共享缓存块作为临时缓存块。
具体而言,本实施例中,为了避免出现如果缓存组使用不均匀的情况,本实施例中,共享缓存块会依次确定至少一个共享缓存块的数据存储情况,然后将搜索到的第一个没有分配给固定存储空间的缓存组使用的共享缓存块作为临时缓存块。值得一提的是,第一个没有分配给固定存储空间的缓存组使用的共享缓存块可以历史上分配给了其他的缓存组使用,但是在当前时刻,该共享缓存块并没有与任一缓存组关联。
本实施例中,顺序搜索共享缓存空间还可提高搜索效率。
基于上述实施例,提出本申请动态可扩展的组相联高速缓存方法第二实施例。参照图3,图3示出了申请动态可扩展的组相联高速缓存方法第二实施例的流程示意图。
本实施例中,步骤S105之后,方法还包括:
步骤S106、若临时缓存块中写入的数据被取出,则解除临时缓存块与缓存组之间的关联关系。
本实施例中,若临时缓存块中写入的数据被取出,则该临时数据块重新变为空白缓存块,此时,解除临时缓存块与缓存组之间的关联关系,将该临时缓存块重新变回共享缓存块。从而,若此时其他缓存组请求扩充存储空间时,该临时缓存块可以被重新分配使用。
基于上述实施例,提出本申请的一种数据缓存第三实施例。参照图4,图4示出了申请动态可扩展的组相联高速缓存方法第三实施例的流程示意图。
需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例中,方法包括:
步骤S201、根据接收到的访问请求的访问地址,确定待访问数据在数据缓存器中的第二缓存组;
步骤S202、从第二缓存组对应的所有缓存块中搜索访问请求对应的待访问数据;
步骤S203、若未命中,则从第二缓存组对应的第二临时缓存块中搜索待访问数据;
步骤S204、若在第二临时缓存块中命中,则返回第二临时缓存块中的存储数据。
可以理解的,本实施例中,步骤S201至步骤S204可在步骤S101至步骤S105之后,还可在之前,甚至于还可并行运行,此处并不限制。
具体而言,在处理器需要访问数据时,其仍然下发有相应的访问地址,此时,处理器在数据缓存器中根据该访问地址确定出对应的第二缓存组,然后在该第二缓存组对应的所有缓存块中搜索,以确定是否缓存命中。
具体的,缓存命中的判断方法为:该第二缓存组中无论是固定存储空间中的缓存块还是共享存储空间分配的临时缓存块中的某个缓存块的有效位为1,且缓存块里的标签字段等于访问地址中的标签字段。如果命中缓存块里面的data就是需要的数据。
本实施例中,可以先访问第二缓存组在固定存储空间对应的缓存块,以确定是否缓存命中,然后再访问第二缓存组在共享存储空间对应的临时缓存块以确定是否缓存命中。
在一具体实施方式中,步骤S203,包括:
步骤S2031、若未命中,则判断第二缓存组是否关联有第二临时缓存块;
步骤S2032、若关联有,则从第二临时缓存块中搜索待访问数据。
具体而言,在共享存储空间为该第二缓存组分配有临时存储空间,即临时缓存块时,则才从第二临时缓存块中搜索待访问数据。
如果在共享存储空间没有为该第二缓存组分配有临时存储空间,则缓存失效,此时处理器从下一级存储中读入数据。
且还可以理解的,如果在共享存储空间中也没有命中,则缓存失效,此时处理器从下一级存储中读入数据。
基于上述实施例,提出本申请动态可扩展的组相联高速缓存方法第四实施例。
参阅图5,本实施例中,数据缓存器中预置有共享缓存块指示表。方法包括:
步骤S301、根据接收到的访问请求的访问地址,确定待访问数据在数据缓存器中的第二缓存组;
步骤S302、从第二缓存组对应的所有缓存块中搜索访问请求对应的待访问数据;
步骤S303、若未命中,则查询共享缓存块指示表中第二缓存组对应的临时缓存状态;
步骤S304、若临时缓存状态为有效状态,则确定第二缓存组关联有第二临时缓存块;
步骤S305、若临时缓存状态为失效状态,则确定第二缓存组没有关联第二临时缓存块。
步骤S306、若关联有,根据所述共享缓存块指示表中所述第二缓存组对应的第二地址信息,从第二临时缓存块中搜索所述待访问数据。
步骤S307、若在第二临时缓存块中命中,则返回第二临时缓存块中的存储数据。
可以理解的,本实施例中,步骤S301至步骤S307可在步骤S101至步骤S105之后,还可在之前,甚至于还可并行运行,此处并不限制。
具体而言,本实施例中,共享缓存块指示表是用来指示各个缓存组是否在共享存储空间中有分配缓存块用的。在一示例中,它的条目数和缓存组的组数相同,即256个条目,每个条目按顺序和缓存组对应(第0条目对应组0,第1条目对应组1,依次到第255条目对应组255)。共享缓存块指示表有一bit有效位(V字段),指示该缓存组是否在共享存储空间内有临时缓存块,也即是用于表示其临时缓存状态。其中,有效位为1表示该缓存组在共享存储空间中有分配临时缓存块,即处于有效状态。有效位为0:表示没分配临时缓存块,即处于失效状态。
如果有效位为1,共享缓存块指示表的Baddr字段(因总共128个共享块,所以Baddr位宽为7bit)指示该缓存组分配的2个缓存块在共享存储空间中的起始地址。这样根据Baddr字段就可以从共享空间中找到该组的数据。
可以理解的,在写入数据时,如果某一个缓存组需要扩充空间,则向共享存储空间管理模块发请求,共享存储空间管理模块按顺序从第0组开始搜索第一个没被分配出去的共享缓存块,如果搜索成功则返回分配成功标志以及分配空间的起始地址,如果所有的共享空间都被用完了,则返回请求失败。数据缓存器根据请求结果和得到的地址更新共享缓存块指示表的内容:如果分配成功则把共享空间指示表中该组的有效位置为1,并把Baddr写为请求得到的地址,否则不修改共享空间指示表。
可以理解的是,如果某个缓存块被释放了也需要通知该共享存储空间管理模块,该共享存储空间管理模块判断为该缓存组分配的临时缓存块中的数据块是否全部无效,如果全部无效时则把共享空间指示表中该组的有效位置为0,也即是将该临时缓存块和缓存组解绑。
或者,在本申请第五实施例中,参阅图6,方法包括:
步骤S401、根据接收到的访问请求的访问地址,确定待访问数据在数据缓存器中的第二缓存组;
步骤S402、从第二缓存组对应的所有缓存块和第二临时缓存块中并行搜索访问请求对应的待访问数据。
步骤S403、若命中,则返回命中的存储数据。
也即是本实施例中,为了提升效率,可以并行地从第二缓存组对应的所有缓存块和第二临时缓存块中搜索访问请求对应的待访问数据。
为使得本领域技术人员,更好地理解本申请权利要求的保护范围。以下通过具体的应用场景中的具体实施示例,对本申请权利要求记载的技术方案进行解释说明,可以理解的是,以下示例仅用于解释本申请,而不用于限定本申请权利要求的保护范围。
在一具体示例中,数据缓存的地址位宽为32bit,缓存块位宽为4个字节,那么:Offset字段的位宽为2bit(4字节宽度用2bit表示),index的位宽为8bit(256个组),Tag字段的位宽为22bit。
其存储结构包括:固定存储空间256组每组2路缓存块,和一定数量的共享存储空间,比如128个共享缓存块,连续2共享缓存块作为一个单位分配,整个共享存储空间可以分给64个缓存组。此外,可根据寄存器配置每个缓存组可以有一次机会扩充2个临时缓存块,即该缓存组内的缓存块数量从2变成4个。
其中,固定存储空间和共享存储空间内的缓存块结构是一样的,包括1bit的有效位V字段,22bit的标签Tag字段,32bit的数据data字段。
在读取数据时,首先根据访问地址找到该访问地址对应的缓存组,即地址中index字段的值。
搜索固定存储空间中该缓存组的所有缓存块,如果某个缓存块的valid为1,并且标签内容和要访问地址的标签相同则命中,否则在固定空间中未命中。命中则根据地址中的offset返回需要的数据。
在固定存储空间未命中的情况下,查找共享缓存块指示表中该缓存组(还是index字段指示的)对应的valid位是否有效。如果为1则有效,表示在共享存储空间中有为该缓存组分配空间,如果为0则说明在共享存储空间中没有为该缓存组分配的临时缓存块。
在共享缓存块指示表中该组有效的情况下,根据指示表的Baddr找到共享存储空间中该组临时缓存块的起始地址,并把共享存储空间中该缓存组的所有临时缓存块都取出并判断是否命中。如果命中则根据地址中的offset返回需要的数据。否则此时缓存中不存在需要的数据,即缓存失效,需要从下一级存储器读入数据。
在缓存失效需要从下一级存储器读入数据,并将数据写入缓存时,通过Valid位来判断该缓存组的固定存储空间中是否有空闲的缓存块。如果该缓存组在固定存储空间内有空闲的缓存块,新读入的数据块写入固定存储空间的该空闲位置,并根据offset返回数据。
如果该缓存组在固定存储空间内没有空闲的缓存块,则判断共享缓存块指示表中该缓存组的有效位是否置1。
若是,则共享存储空间中该缓存组有临时缓存块。把数据写入共享存储空间中该缓存组的空闲块,并根据offset返回数据。
若有效位为0,则向共享存储空间管理模块发请求,共享存储空间管理模块按顺序从第0组开始搜索第一个没被分配出去的共享缓存块,如果搜索成功则返回分配成功标志以及分配空间的起始地址,如果所有的共享空间都被用完了,则返回请求失败。数据缓存器根据请求结果和得到的地址更新共享缓存块指示表的内容:如果分配成功则把共享空间指示表中该组的有效位置为1,并把Baddr写为请求得到的地址,否则不修改共享空间指示表。
值得一提的是,如果共享存储空间有空闲的,那么可以分配块给该缓存组。共享存储空间没有空闲的情况下无法分配新的共享缓存块给该缓存组,或者分配给该缓存组的共享空间没有空闲,根据替换策略选择某个块替换(把老的数据块写入下一级存储,并把新的块写入该位置),并根据offset返回数据。
可见,本实施例把传统的组相联高速缓存结构分成了固定存储空间和共享存储空间,从而某个缓存组的固定存储空间被用完之后还可以从共享存储空间中扩充一部分空间,从而增大该缓存组内的缓存块数量,扩充其存储空间,从而减少了替换的发生,进而提高了资源利用率。
基于同一发明构思,参阅图7,本申请还提供了一种动态可扩展的组相联高速缓存装置,装置包括:
缓存组确定模块,用于根据待缓存数据的写入地址,从数据缓存器中确定出第一缓存组;其中,数据缓存器还包括至少一个共享缓存块;
空间判断模块,用于判断第一缓存组对应的所有缓存块中是否有剩余存储空间;
临时缓存确定模块,用于若没有剩余存储空间,则从至少一个共享缓存块中筛选出至少一个临时缓存块;其中,临时缓存块为未存储数据的共享缓存块;
缓存关联模块,用于将临时缓存块关联至第一缓存组,并返回临时缓存块的地址信息;
数据写入模块,用于根据地址信息,将待缓存数据写入临时缓存块。
需要说明的是,本实施例中的关于动态可扩展的组相联高速缓存装置的各实施方式以及其达到的技术效果可参照前述实施例中动态可扩展的组相联高速缓存方法的各种实施方式,这里不再赘述。
此外,本申请实施例还提出一种计算机存储介质,存储介质上存储有数据缓存程序,数据缓存程序被处理器执行时实现如上文的动态可扩展的组相联高速缓存方法的步骤。因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。确定为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种动态可扩展的组相联高速缓存方法,其特征在于,所述方法包括:
根据待缓存数据的写入地址,从数据缓存器中确定出第一缓存组;其中,所述数据缓存器还包括至少一个共享缓存块;
判断所述第一缓存组对应的所有缓存块中是否有剩余存储空间;
若没有剩余存储空间,则从至少一个共享缓存块中筛选出至少一个临时缓存块;其中,所述临时缓存块为未存储数据的共享缓存块;
将所述临时缓存块关联至所述第一缓存组,并返回所述临时缓存块的地址信息;
根据所述地址信息,将所述待缓存数据写入所述临时缓存块。
2.根据权利要求1所述的动态可扩展的组相联高速缓存方法,其特征在于,所述若没有剩余存储空间,则从至少一个共享缓存块中筛选出至少一个临时缓存块,包括:
若没有剩余存储空间,则依次确定至少一个共享缓存块的数据存储情况;
将首个未存储数据的所述共享缓存块作为所述临时缓存块。
3.根据权利要求2所述的动态可扩展的组相联高速缓存方法,其特征在于,所述根据所述地址信息,将所述待缓存数据写入所述临时缓存块之后,所述方法还包括:
若所述临时缓存块中写入的数据被取出,则解除所述临时缓存块与所述缓存组之间的关联关系。
4.根据权利要求1所述的动态可扩展的组相联高速缓存方法,其特征在于,所述方法还包括:
根据接收到的访问请求的访问地址,确定待访问数据在数据缓存器中的第二缓存组;
从所述第二缓存组对应的所有缓存块中搜索所述访问请求对应的待访问数据;
若未命中,则从所述第二缓存组对应的第二临时缓存块中搜索所述待访问数据;
若在第二临时缓存块中命中,则返回所述第二临时缓存块中的存储数据。
5.根据权利要求4所述的动态可扩展的组相联高速缓存方法,其特征在于,所述若未命中,则从所述第二缓存组对应的第二临时缓存块中搜索所述待访问数据,包括:
若未命中,则判断所述第二缓存组是否关联有所述第二临时缓存块;
若关联有,则从第二临时缓存块中搜索所述待访问数据。
6.根据权利要求5所述的动态可扩展的组相联高速缓存方法,其特征在于,所述数据缓存器中预置有共享缓存块指示表;
所述判断所述第二缓存组是否关联有所述第二临时缓存块,包括:
查询所述共享缓存块指示表中所述第二缓存组对应的临时缓存状态;
若所述临时缓存状态为有效状态,则确定第二缓存组关联有所述第二临时缓存块;
若所述临时缓存状态为失效状态,则确定第二缓存组没有关联所述第二临时缓存块;
所述从第二临时缓存块中搜索所述待访问数据,包括:
根据所述共享缓存块指示表中所述第二缓存组对应的第二地址信息,从第二临时缓存块中搜索所述待访问数据。
7.根据权利要求6所述的动态可扩展的组相联高速缓存方法,其特征在于,所述根据接收到的访问请求的访问地址,确定待访问数据在数据缓存器中的第二缓存组之后,所述方法还包括:
从所述第二缓存组对应的所有缓存块和第二临时缓存块中并行搜索所述访问请求对应的待访问数据;
若命中,则返回命中的所述存储数据。
8.一种动态可扩展的组相联高速缓存装置,其特征在于,所述装置包括:
缓存组确定模块,用于根据待缓存数据的写入地址,从数据缓存器中确定出第一缓存组;其中,所述数据缓存器还包括至少一个共享缓存块;
空间判断模块,用于判断所述第一缓存组对应的所有缓存块中是否有剩余存储空间;
临时缓存确定模块,用于若没有剩余存储空间,则从至少一个共享缓存块中筛选出至少一个临时缓存块;其中,所述临时缓存块为未存储数据的共享缓存块;
缓存关联模块,用于将所述临时缓存块关联至所述第一缓存组,并返回所述临时缓存块的地址信息;
数据写入模块,用于根据所述地址信息,将所述待缓存数据写入所述临时缓存块。
9.一种数据缓存设备,其特征在于,包括:处理器,存储器以及存储在所述存储器中的数据缓存程序,所述数据缓存程序被所述处理器运行时实现如权利要求1-7中任一项所述动态可扩展的组相联高速缓存方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据缓存程序,所述数据缓存程序被处理器执行时实现如权利要求1至7任一项所述的动态可扩展的组相联高速缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211068093.2A CN115357196A (zh) | 2022-08-31 | 2022-08-31 | 动态可扩展的组相联高速缓存方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211068093.2A CN115357196A (zh) | 2022-08-31 | 2022-08-31 | 动态可扩展的组相联高速缓存方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115357196A true CN115357196A (zh) | 2022-11-18 |
Family
ID=84005895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211068093.2A Pending CN115357196A (zh) | 2022-08-31 | 2022-08-31 | 动态可扩展的组相联高速缓存方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115357196A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010109A (zh) * | 2023-02-23 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 缓存资源分配方法、装置、电子设备和存储介质 |
CN117149781A (zh) * | 2023-11-01 | 2023-12-01 | 中电科申泰信息科技有限公司 | 一种组相联自适应扩展的缓存架构及其访问处理方法 |
-
2022
- 2022-08-31 CN CN202211068093.2A patent/CN115357196A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010109A (zh) * | 2023-02-23 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 缓存资源分配方法、装置、电子设备和存储介质 |
CN117149781A (zh) * | 2023-11-01 | 2023-12-01 | 中电科申泰信息科技有限公司 | 一种组相联自适应扩展的缓存架构及其访问处理方法 |
CN117149781B (zh) * | 2023-11-01 | 2024-02-13 | 中电科申泰信息科技有限公司 | 一种组相联自适应扩展的缓存架构及其访问处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111602377B (zh) | 高速缓存中资源调整方法、数据访问方法及装置 | |
CN115357196A (zh) | 动态可扩展的组相联高速缓存方法、装置、设备及介质 | |
US9772943B1 (en) | Managing synonyms in virtual-address caches | |
US10929308B2 (en) | Performing maintenance operations | |
CN105740164A (zh) | 支持缓存一致性的多核处理器、读写方法、装置及设备 | |
US7925857B2 (en) | Method for increasing cache directory associativity classes via efficient tag bit reclaimation | |
US10108553B2 (en) | Memory management method and device and memory controller | |
CN115168247B (zh) | 用于并行处理器中动态共享存储空间的方法及相应处理器 | |
WO2024045586A1 (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
US10853262B2 (en) | Memory address translation using stored key entries | |
US7596665B2 (en) | Mechanism for a processor to use locking cache as part of system memory | |
US5953747A (en) | Apparatus and method for serialized set prediction | |
US11829292B1 (en) | Priority-based cache-line fitting in compressed memory systems of processor-based systems | |
US7562204B1 (en) | Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory | |
CN115543532A (zh) | 缺页异常的处理方法、装置、电子设备以及存储介质 | |
CN114546898A (zh) | 一种tlb管理方法、装置、设备及存储介质 | |
US7290107B2 (en) | Direct deposit using locking cache | |
US7237084B2 (en) | Method and program product for avoiding cache congestion by offsetting addresses while allocating memory | |
WO2024045817A1 (zh) | 用于调度simt架构处理器的返回数据的方法及相应处理器 | |
CN113138851B (zh) | 一种数据管理方法、相关装置及*** | |
US20100257319A1 (en) | Cache system, method of controlling cache system, and information processing apparatus | |
US10831673B2 (en) | Memory address translation | |
US5966737A (en) | Apparatus and method for serialized set prediction | |
CN107861819B (zh) | 一种缓存组负载均衡的方法、装置和计算机可读存储介质 | |
US20230236961A1 (en) | Priority-Based Cache-Line Fitting in Compressed Memory Systems of Processor-Based Systems |
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 |