CN115794682A - 缓存替换方法及装置、电子设备、存储介质 - Google Patents
缓存替换方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN115794682A CN115794682A CN202211504367.8A CN202211504367A CN115794682A CN 115794682 A CN115794682 A CN 115794682A CN 202211504367 A CN202211504367 A CN 202211504367A CN 115794682 A CN115794682 A CN 115794682A
- Authority
- CN
- China
- Prior art keywords
- cache
- thread
- target
- cache line
- determining
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种缓存替换方法及装置、电子设备、存储介质;所述方法包括:当电子设备访问数据时缓存发生缓存缺失,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行;将从下一级存储器中读取的所述数据填充到所述目标缓存行,所述下一级存储器为缓存或者内存。所述方法能够根据缓存行对应的线程的重要程度确定待替换的缓存行,提升了用户体验。
Description
技术领域
本申请实施例涉及缓存控制技术领域,涉及但不限于一种缓存替换方法及装置、电子设备、存储介质。
背景技术
在最新的ARM处理器中,一级缓存L1 cache和二级缓存L2 cache都属于CPU独占的,其中最新的ARM微架构中出现2个相邻CPU共享二级缓存L2 cache的情况,三级缓存L3cache为整个CPU子系统CPUSS所共享。由于三级缓存L3 cache是被所有CPU所共享的。所以一旦L3 cache发生缺失miss,即数据没有被缓存到L3 cache中,就需要从下一级的存储器中读出相应的数据内容到L3 cache中。由于cache的大小有限,当L3 cache全部缓存了有效数据的话,需要采用一种策略从L3 cache中查找到一个cache line,并将其替换掉。当前的缓存替换策略,包括基于最近最少使用LRU的替换策略、随机替换策略等。
以安卓系统的手持终端为例,应用被分为与用户交互的前台应用(top-app),被切换出去的后台应用(background)。当前台应用跟后台应用同时发生大量的数据读写操作时。基于LRU或者基于随机的cache替换策略并没有考虑到前台应用或者后台应用跟用户体验之间的关联性。即现有的cache替换策略没有考虑到在不同应用场景中cache替换策略需要做一些资源倾斜,以满足软件或者场景的需求,造成用户体验不好。
发明内容
有鉴于此,本申请实施例提供的缓存替换方法及装置、电子设备、存储介质,能够根据缓存行对应的线程的重要程度确定待替换的缓存行,提升了用户体验。本申请实施例提供的缓存替换方法及装置、电子设备、存储介质是这样实现的:
第一方面,本申请实施例提供的缓存替换方法,包括:当电子设备访问数据时缓存发生缓存缺失,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行;将从下一级存储器中读取的所述数据填充到所述目标缓存行,所述下一级存储器为缓存或者内存。
第二方面,本申请实施例提供的缓存替换装置,包括:缓存行确定模块,用于若电子设备访问数据时缓存发生缓存缺失,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行;缓存行替换模块,用于将从下一级存储器中读取的所述数据填充到所述目标缓存行,所述下一级存储器为缓存或者内存。
第三方面,本申请实施例提供的电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本申请实施例第一方面提供的方法。
第四方面,本申请实施例提供的计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本申请实施例第一方面提供的方法。
本申请实施例所提供的缓存替换方法、装置、电子设备和计算机可读存储介质,能够根据缓存行对应的线程的重要程度确定待替换的缓存行,提升了用户体验,从而解决背景技术中所提出的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1为本申请实施例提供的一种电子设备的结构示意图;
图2为本申请实施例提供的一种缓存替换方法的流程示意图;
图3为本申请实施例提供的另一种缓存替换方法的流程示意图;
图4为本申请实施例提供的再一种缓存替换方法的流程示意图;
图5为本申请实施例提供的一种获取目标缓存访问信息的方法的流程示意图;
图6为本申请实施例提供的一种确定缓存空间阈值的方法流程示意图;
图7为本申请实施例提供的一种缓存替换方法的总体流程示意图;
图8为本申请实施例提供的一种缓存替换装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
图1为本申请实施例提供的一种电子设备的结构示意图。如图1所示,电子设备100至少可以包括处理器110、缓存120、内存控制器130以及内存140。处理器110是电子设备100的核心,处理器110可以调用电子设备100中不同的软件程序实现不同的功能。例如,处理器110能够实现对缓存120以及内存140的访问。可以理解的是,处理器110可以是中央处理器(central processing unit,CPU)。除了CPU外,处理器还可以是其他特定集成电路(application specific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。实际应用中,电子设备还可以包括多个处理器。为了描述方便,本申请实施例以一个处理器为例进行示例。另外,处理器可以是单核处理器,也可以是多核处理器。在多核处理器架构中,处理器中可以包括多个处理器核。例如,如图1所示,处理器110中可以包括一个或多个CPU核150。可以理解的是,CPU核150只是处理器核的一种示例。在本申请实施例中不对处理器的数量以及一个处理器中处理器核的数量进行限定。
缓存120是电子设备100中位于处理器110与内存140之间的临时存储器。由于缓存120的速率较快,因此,缓存120用于与CPU核108进行高速数据交换。缓存120用于缓存内存140中的部分数据以及将要写入内存140的数据。当处理器110访问数据时,处理器110会先在缓存120中查找,当缓存120中没有处理器110所需访问的数据时,处理器110才访问内存140,从而加快了处理器110的访问速率。具体的,缓存120可以包括缓存控制器160以及存储介质170。缓存控制器160是缓存120中的控制电路,能够对存储介质170进行访问。
例如,缓存控制器160可以根据处理器110发送的读操作指令向处理器105返回存储介质170中缓存的数据。缓存控制器160还可以根据处理器110的写操作指令将待写入的数据缓存于缓存120的存储介质170中。并且,缓存控制器160还可以对存储介质170中缓存的数据进行管理。本领域人员可以知道,缓存120可以集成在处理器110中。在多核处理器系统中,每个CPU核108都可以包含一个缓存120。
通常,缓存120由静态随机存取存储器(Static Random Access Memory,SRAM)组成。然而,SRAM存储单元越来越难减小,因此,采用SRAM做缓存时其缓存容量受限。并且,SRAM还存在静态漏电等问题。因此,随着存储技术的发展,越来越多的非易失性存储介质被作为缓存。例如,存储介质170可以包括相变随机存取存储器(phase-change randomaccess memory,PCM)、阻变随机存取存储器(resistive random access memory,RRAM)以及自旋扭矩传输随机存取存储器(spin torque transfer RAMs,STT-RAM)等。
内存控制器130是电子设备100内部控制内存140并且使内存140与处理器110(例如CPU)之间交换数据的重要组成部分。实际应用中,一种情况下,内存控制器130可以位于北桥芯片内部。在另一种情况下,可以将内存控制器115集成在处理器110中,具体的,内存控制器130可以集成在处理器110的基板上。可以理解的是,当内存控制器130位于北桥芯片内部时,内存控制器需要通过北桥芯片与处理器交换数据,导致数据的延迟较大。当内存控制器130集成在处理器110中时,内存控制115可以直接与处理器交换数据。
如图1所示,内存控制器130可以通过内存总线(例如,双倍速率DDR总线)连接内存140。可以理解的是,实际应用中,内存控制器130还可以通过PCI高速总线、桌面管理接口(DMI)总线等其他类型的总线与内存140通信。
内存140用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。内存140又可以被称为主存。内存140具有访问速度快的优点。在传统的电子设备架构中,通常采用动态随机存取存储器(dynamic random access memory,DRAM)作为内存140。随着非易失性存储器(non-volatile memory,NVM)技术的发展,相变存储器(phase-change random access memory,PCM),阻变存储器(resistive randomaccessmemory,RRAM)、磁性存储器(magnetic random access memory,MRAM)或铁电式存储器(ferroelectric random access memory,FRAM)等新型NVM也逐渐被作为内存使用。在本申请实施例中不对内存140的具体存储介质类型进行限定。
由于缓存120的缓存空间一般较小,因此,缓存120在数据访问过程中,需要根据访问情况不断更新其缓存内容,以满足不断变化的访问需求。具体来说,当数据访问命中缓存时,则可以直接访问缓存中的数据,而无需进行缓存线(Cache line)的替换更新。当数据访问未命中缓存时,缓存控制器160需要从当前缓存的缓存行(Cache line)中确定一待替换的Cache line,采用从内存中读取的新的地址的Cache line来替换所述待替换的Cacheline。
本领域技术人员可以知道,Cache line是缓存控制器(Cache Controller)106的最小操作单位。换一种表达方式,当缓存控制器160将缓存120中的数据写入内存时,缓存控制器160会按照Cache line为单位将一行line数据写到内存中。当缓存控制器160从内存中读数据时,也是以Cache line为单位来读数据的。为了描述方便,在本申请实施例中,一个Cache line可以表示一个Cache line的数据。本申请实施例中的“替换Cache line”是指用从内存或者下一级缓存中读出的一个Cache line的数据来替换当前级Cache中的一个Cache line的数据。
现有技术中大部分的缓存替换方法的目标是优化缓存命中率,也就是说,现有技术中主要是基于提高缓存命中率来选择待替换的cache line。然而,在不同应的用场景中cache替换策略需要做一些资源倾斜,以满足软件或者场景的需求,因此采用现有技术中的缓存替换方法给用户的体验不好。
有鉴于此,本申请实施例提供一种缓存替换方法,该方法可以应用于图1所示的电子设备,该电子设备在实施的过程中可以为各种类型的具有信息处理能力的设备。例如,所述电子设备可以包括个人计算机、笔记本电脑、掌上电脑或服务器等;该电子设备还可以为移动终端,例如所述移动终端可以包括手机、车载电脑、平板电脑或投影仪等。该方法所实现的功能可以通过电子设备中的处理器调用程序代码来实现。
图2为本申请实施例提供的一种缓存替换方法的流程示意图,该方法可以由缓存120中的缓存控制器160来执行,该方法能够根据缓存行对应的线程的重要程度确定待替换的缓存行,提升了用户体验。如图2所示,该方法可以包括以下步骤101至步骤102:
步骤101,当电子设备访问数据时缓存发生缓存缺失,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行。
需要说明的是,当电子设备访问数据时会优先从缓存中读取,当数据访问未命中缓存即发生缓存缺失Cache miss时,需要从当前缓存的缓存行Cache line中确定一待替换的Cache line即目标缓存行,用于将从内存中或者下一级缓存中读取的新的数据的Cacheline来替换所述目标缓存行。在选择目标缓存行时,可以根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行。示例性的,可以将对应的线程的重要程度低的缓存行确定为目标缓存行。
其中,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行的方式很多,例如可以设置各个缓存行对应的重要程度参数,该重要程度参数用于表示缓存行对应的线程的重要程度大小,根据重要程度参数可以确定目标缓存行,还可以预设有缓存行与重要程度的对应关系,根据对应关系和缓存行可以确定目标缓存行,本申请实施例对根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行的方式不做限定。
在一些实施例中,电子设备可以设置与各个缓存行对应的标识信息,该标识信息用于表示各个缓存行对应的线程的重要程度高低,以便于确定目标缓存行。
本申请实施例中,每个所述缓存行预设有标识信息,所述标识信息用于指示所述缓存行对应的线程的重要程度,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行可以包括:确定所述标识信息为第一预设标识的缓存行为目标缓存行,所述第一预设标识指示所述缓存行对应的线程的重要程度最低。
需要说明的是,若每个缓存行都预设有对应的标识信息,在确定目标缓存行时可以根据标识信息确定对应的线程的重要程度最低的缓存行作为目标缓存行。通过确定对应的线程的重要程度最低的缓存行作为目标缓存行能够保障重要线程的访问速度,提升用户感受。
其中,缓存行预设标识信息的方式很多,例如可以将缓存行未使用的标记位作为CT标志位,若缓存未使用标记位,也可以新增一个CT标志位,该CT标志位用于表示该缓存行对应的线程是否关键critical,若CT标志位为0,则表明该缓存行对应的线程为非关键线程,若CT标志位为1,则表明该缓存行对应的线程为关键线程,为了不影响关键线程的缓存使用,可以选择CT标志位=0的缓存行作为目标缓存行。
示例性的,可以在电子设备的三级缓存L3 cache的tag标志位上添加一位标志位,称之为CT标志位,用于表示这个缓存行cache line最近是否因为关键线程访问而发起的分配alloc替换。
步骤102:将从下一级存储器中读取的所述数据填充到所述目标缓存行,所述下一级存储器为缓存或者内存。
需要说明的是,将从下一级存储器中读取的所述数据填充到所述目标缓存行的方式包括两种情况,若目标缓存行目前的状态为没有存储数据或者存储的数据无效等状态,可以将读取的所述数据直接存储到所述目标缓存行,若所述目标缓存行目前存储有有效数据,需要先将所述有效数据存储到下一级存储器中,再将读取的所述数据存储到目标缓存行。本申请实施例对将从下一级存储器中读取的所述数据填充到所述目标缓存行的方式不做限定。
在一些实施例中,在确定目标缓存行之前,还需要确定当前访问的线程为关键线程,在确定当前访问的线程为关键线程后,才采用本申请所述提供的替换策略,若当前访问的线程为非关键线程,可以采用别的替换策略,以节约功耗。
图3为本申请实施例提供的另一种缓存替换方法的流程示意图,如图3所示,所述电子设备通过目标线程访问数据,所述缓存替换方法可以包括步骤201-步骤203:
步骤201:当电子设备通过目标线程访问数据时缓存发生缓存缺失,确定所述目标线程的线程级别为关键线程,所述线程级别包括关键线程和非关键线程。
步骤202:根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行。
步骤203:将从下一级存储器中读取的所述数据填充到所述目标缓存行,所述下一级存储器为缓存或者内存。
需要说明的是,步骤202和步骤203的内容可以参考前述实施例中步骤101和102的介绍,这里不再赘述。
在步骤201中,当电子设备通过目标线程访问缓存发生缓存缺失时,可以首先确定目标线程的线程级别为关键线程,再继续后面的步骤。其中,确定目标线程的线程级别的方式很多,比如可以通过预设判断条件或者预设线程名单等方式来确定,预设判断条件可以是根据线程的应用属性来确定。
示例性的,可以根据线程所属的任务的应用属性确定是否为关键线程,当一个任务被切换到前台时,操作系统可以将该任务对应的线程标记为关键线程;当一个任务被切换到后台时,操作系统可以将该任务对应的线程标记为非关键线程。即,可以基于任务的应用属性,将系统中的任务分为两类:关键线程与非关键线程。
可以理解的是,若目标线程的线程级别为非关键线程,可以采用其他的替换策略确定目标线程,也可以直接选择非关键线程对应的缓存行作为目标缓存行,本申请实施例对目标线程为非关键线程时的替换策略不做限定。
进一步的,每个所述缓存行预设有标识信息,所述标识信息用于指示所述缓存行对应的线程的重要程度,在所述将从下一级存储器中读取的所述数据填充到所述目标缓存行之后,所述方法还可以包括:将所述目标缓存行的标识信息从第二预设标识更新为第三预设标识,所述第二预设标识所指示的所述重要程度低于所述第三预设标识所指示的所述重要程度。
需要说明的是,在将关键线程对应的数据存储到目标缓存行以后,需要更新该目标缓存行对应的标识信息,因为目标缓存目前存储的是关键线程对应的数据了,需要将标识信息更新为代表对应的线程的重要程度更高的标识信息。
在一些实施例中,在确定所述目标线程为关键线程之后,还需要获取所述缓存中允许所述关键线程对应的缓存行占用的空间大小,以及当前所述缓存中所述关键线程对应的缓存行所占用的空间大小,判断他们的大小关系得到判断结果,根据所述判断结果以及所述缓存中各个缓存行对应的线程的重要程度确定所述目标缓存行,以实现在保证关键线程运行的前提下也确保非关键线程的正常使用。
图4为本申请实施例提供的再一种缓存替换方法的流程示意图,如图4所示,所述缓存替换方法可以包括步骤301-步骤303;
步骤301:当电子设备通过目标线程访问数据时缓存发生缓存缺失,确定所述目标线程的线程级别为关键线程,所述线程级别包括关键线程和非关键线程。
步骤302:获取缓存空间阈值,所述缓存空间阈值用于指示所述缓存中允许所述关键线程对应的缓存行占用的空间大小。
步骤303:确定所述缓存中的目标空间大小是否超过所述缓存空间阈值,得到判断结果,所述目标空间大小为当前所述缓存中所述关键线程对应的缓存行所占用的空间大小。
步骤304:根据所述判断结果以及所述缓存中各个缓存行对应的线程的重要程度确定所述目标缓存行。
步骤305:将从下一级存储器中读取的所述数据填充到所述目标缓存行,所述下一级存储器为缓存或者内存。
需要说明的是,步骤301和步骤305的内容可以参考前述实施例中步骤201和步骤102的内容,这里不再赘述。
在步骤302中,所述缓存空间阈值用于指示所述缓存中允许所述关键线程对应的缓存行占用的空间大小。为了保证关键线程的使用效果,可以将关键线程访问的数据尽可能的存储在缓存中,但是也需要保持后台应用不至于被饿死,因此需要在关键线程存储的数据超过一定阈值即缓存空间阈值时,保证一定数据的Cache line可以分配给非关键线程访问。其中,获取缓存空间阈值的方式可以是读取电子设备预存的缓存空间阈值或者是其他方式,本申请实施例对获取缓存空间阈值的方式不做限定。
在步骤303中,需要确定所述缓存中的目标空间大小是否超过所述缓存空间阈值,得到判断结果,其中所述目标空间大小为当前所述缓存中所述关键线程对应的缓存行所占用的空间大小。其中,确定所述缓存中的目标空间大小是否超过所述缓存空间阈值的方式很多,例如可以将所述目标空间大小与所述缓存空间阈值求差值,本申请实施例对确定所述缓存中的目标空间大小是否超过所述缓存空间阈值的方式不做限定。
在步骤304中,在获取判断结果后,可以根据所述判断结果以及所述缓存中各个缓存行对应的线程的重要程度确定所述目标缓存行。本申请对根据所述判断结果以及所述缓存中各个缓存行对应的线程的重要程度确定所述目标缓存行的方式不做限定。
示例性的,所述根据所述判断结果以及所述缓存中各个缓存行对应的线程的重要程度确定所述目标缓存行,可以包括:若所述判断结果为所述目标空间大小未超过所述缓存空间阈值,则确定所述标识信息为第二预设标识的缓存行为目标缓存行;若所述判断结果为所述目标空间大小超过所述缓存空间阈值,则确定所述标识信息为第三预设标识的缓存行为目标缓存行,所述第二预设标识所指示的所述重要程度低于所述第三预设标识所指示的所述重要程度。
需要说明的是,在交互式设备上,需要尽可能的保证关键线程例如前台应用的资源调度,而数据读取的延迟及带宽属于资源调度的一部分。缓存中的缓存行对应的标识信息至少包括两种,一种为第二预设标识,用于标识与非关键线程对应的缓存行,另一种为第三预设标识,用于标识与关键线程对应的缓存行。为了保证关键线程的缓存使用,在确定目标缓存行时应尽量分配非关键线程对应的缓存行。示例性的,标识信息可以为CT标记,缓存中包括CT标记为1的缓存行,表示该缓存行对应关键线程,重要程度高,还包括CT标记为0的缓存行,表示缓存行对应非关键线程,重要程度低。当目标线程被标记为关键线程时,可以将缓存中CT标记为0的缓存行确定为目标缓存行,但是也要保证目标空间大小未超过所述缓存空间阈值。
若目标空间大小未超过所述缓存空间阈值,则确定CT标记为0的缓存行为目标缓存行,若目标空间大小超过所述缓存空间阈值,则确定CT标记为1的缓存行为目标缓存行。
采用上述方式,实现了有限度的资源倾斜给关键线程,在保证关键线程运行的前提下也确保非关键线程的正常使用。
进一步的,在所述将从下一级存储器中读取的所述数据填充到所述目标缓存行之后,所述方法还可以包括:若所述判断结果为所述目标空间大小未超过所述缓存空间阈值,更新所述目标缓存行的标识信息为所述第三预设标识。
需要说明的是,若所述判断结果为所述目标空间大小未超过所述缓存空间阈值,则确定所述标识信息为第二预设标识的缓存行为目标缓存行,在所述将从下一级存储器中读取的所述数据填充到所述目标缓存行之后,就需要将目标缓存行对应的标识信息更新为第一预设标识,即提升了目标缓存行对应的重要程度,在后面的缓存替换中不再优先替换。
在一些实施例中,缓存空间阈值可以根据经验值设定,也可以根据关键线程的使用状态动态设定,本申请实施例对缓存空间阈值的确定方式不做限定。以下以一种根据关键线程的使用状态动态设定缓存空间阈值的方式进行介绍。
本申请实施例在所述获取缓存空间阈值之前,所述方法还包括:通过所述电子设备的性能监视单元采集的第一缓存访问信息和第二缓存访问信息确定目标缓存访问信息,所述第一缓存访问信息为执行所述目标线程过程中对应的缓存访问信息,所述第二缓存访问信息为结束所述目标线程后对应的缓存访问信息,所述目标缓存访问信息为所述目标线程访问所述缓存时的访问次数、命中次数和缺失次数中的至少一种;根据所述目标缓存访问信息,确定所述缓存空间阈值。
需要说明的是,由于每一个CPU上都存在性能监视单元PMU,基于性能监视单元PMU可以进一步细化CPU在此过程中的硬件行为,其中包含了一级缓存L1 cache的命中hit/缺失miss统计,二级缓存L2 cache的命中hit/缺失miss统计,三级缓存L3 cache的命中hit/缺失miss统计等,可以基于这些信息计算与目标线程对应的目标缓存访问信息。
图5为本申请实施例提供的一种获取目标缓存访问信息的方法的流程示意图,如图5所示,获取目标缓存访问信息的步骤可以包括:
步骤401:线程a被唤醒到CPU X上开始运行;
步骤402:获取当前CPU X上的PMU信息;
步骤403:运行一段时间后,线程a从CPU X上退出;
步骤404:获取当前CPU X上的PMU信息,与步骤402中获取的PMU信息做差值,获得线程a对应的目标缓存访问信息;
步骤405:线程a进入休眠状态;
步骤406:线程a终结。
如图5所示,由于每一个CPU都只有一个性能监视单元PMU,我们可以在CPU上任务进行进程切换的时候进行当前任务的PMU的性能监视单元数据的结算。基于这样的策略,我们可以统计出来系统中每一个任务的PMU统计的行为信息,其中包含了二级缓存L2Cache的访问accss/命中hit/缺失miss信息,三级缓存L3 Cache的访问access/命中hit/缺失miss信息等。在图5中,通过获取执行所述目标线程过程中对应的缓存访问信息和结束所述目标线程后对应的缓存访问信息,就可以得到目标线程对应的目标缓存访问信息。将目标线程对应的目标缓存访问信息进行存储,在下一次目标线程再成为关键线程时,可以使用对应的目标缓存访问信息。
进一步的,所述目标缓存访问信息可以包括所述访问次数和所述缺失次数,所述根据所述目标缓存访问信息,确定所述缓存空间阈值,可以包括:若所述访问次数超过预设访问阈值、且所述缺失次数超过预设缺失阈值,确定所述缓存空间阈值为预设缓存空间大小与预设空间增量大小之和。
图6为本申请实施例提供的一种确定缓存空间阈值的方法流程示意图,如图6所示,所述确定缓存空间阈值的方法包括:步骤501:获取关键线程的PMU统计信息,即目标缓存访问信息;步骤502:判断单位时间内访问次数是否超过预设访问阈值;步骤503:若是,则判断单位时间内缺失次数超过预设缺失阈值;步骤504:若是,则将分配给关键线程的缓存空间阈值增加10%,且不超过系统规定的最大值。
需要说明的是,基于关键线程的历史PMU统计信息可以动态调整缓存空间阈值的大小。目标线程为关键线程时,若关键线程的访问次数较多,且缓存缺失cache miss较高时,在缓存行cache line替换时,尽可能去替换非关键线程对应的缓存行,即由关键线程发起分配alloc的缓存行cache line,这样可以使得关键线程访问的数据尽可能的存储在缓存中。缓存空间阈值可以基于PMU统计信息调整,可以设置算法进行动态调整,但是其最大值不能超过系统预定义的g_ct_max_size最大值。
可以理解的是,上述方法可以完全基于硬件实现,通过PMU统计信息给不同类型的线程分配不同的缓存的空间大小,实现了缓存cache的使用上向部分关键任务进程倾斜的资源分配策略。
本申请实施例提供的技术方案,可以在缓存例如三级缓存的cache替换策略上更加倾向于关键线程例如前台线程,保证关键线程的数据访问延迟与速度,提升了用户的交互式的体验感受。此外,本申请实施例提供的技术方案利用现有硬件模块,只需要在缓存例如三级缓存L3 cache的标志位tag上增加一个CT标志位,就可以在交互式设备上实现资源倾斜的缓存替换策略,便于实施。
在一些实施例中,每个所述缓存行预设有标识信息,所述标识信息用于指示所述缓存行对应的线程的重要程度,所述方法还可以包括:若所述目标线程的线程级别从关键线程切换为非关键线程,更新所述缓存中全部缓存行或者部分缓存行对应的标识信息为第一预设标识,所述部分缓存行为所述目标线程对应的缓存行,所述第一预设标识指示所述缓存行对应的线程的重要程度最低。
需要说明的是,电子设备中各个任务和线程的状态是会发生变化的,缓存行对应的标识信息是代表的当前对应的线程的重要程度,若目标线程的状态发生变化,例如从前台切换到后台,系统就认为目标线程已经为非关键线程了,那么需要将目标线程对应的缓存行的标识信息进行更新,设置为重要程度最低时对应的标识信息,还有一种方式是将缓存中所有缓存行对应的标识信息进行更新,设置为重要程度最低时对应的标识信息,即在新的任务开始后进行重新的跟踪和更新。上述方式实现了动态更新缓存行的标识信息,即缓存行的重要程度,能够帮助确定与当前使用状态匹配的目标缓存行。
下面将说明本申请实施例在一个实际的应用场景中的示例性应用。
图7为本申请实施例提供的一种缓存替换方法的总体流程示意图。如图7所示,该方法包括如下步骤601至步骤607:
步骤601,线程A执行时访问数据,发起加载load/存储store操作,一级缓存L1/二级缓存L2发生缓存缺失cache miss,同时在三级缓存L3也发生缓存缺失cache miss,需要从下一级存储器中读取数据,并在三级缓存L3选取一个缓存行cache line进行替换。
步骤602:判断线程A是否为关键线程,若为关键线程则执行603,其中判断关键线程可以在任务切换时,基于是否为关键线程,来设置某个系统寄存器的值,来告诉CPU当前执行任务为关键线程。如果是非关键线程,直接选择一条CT标志位为0的缓存行替换。
步骤603:若线程A为关键线程,则判断关键线程占有的三级缓存空间L3 cachesize是否超过阈值L3 CT size,如果已经超过。则选取一个CT标志位为1的cache line进行替换,否则选取CT标志位为0的line进行替换。
步骤604:将被替换的这条cache line的CT标志位设置为1。
步骤605:在前台任务发生切换时,将前台任务对应的线程在三级缓存L3 cahce中缓存行cache line的CT标志位都置为0。
可以理解的是,采用上述方案能够保证关键线程的数据访问延迟与速度,提升了用户的交互式的体验感受。
应该理解的是,虽然图1-图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-图7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
基于前述的实施例,本申请实施例提供一种缓存替换装置,该装置所包括的各模块、以及各模块所包括的各单元,可以通过处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图8为本申请实施例提供的一种缓存替换装置的结构示意图,如图8所示,所述缓存替换装置700包括缓存行确定模块701和缓存行替换模块702,其中:缓存行确定模块701,用于若电子设备访问数据时缓存发生缓存缺失,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行;缓存行替换模块702,用于将从下一级存储器中读取的所述数据填充到所述目标缓存行,所述下一级存储器为缓存或者内存。
在本申请实施例中,能够根据缓存行对应的线程的重要程度确定待替换的缓存行,提升了用户体验。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中图8所示的缓存替换装置对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。也可以采用软件和硬件结合的形式实现。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的缓存替换方法中的步骤。
上述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(readonly memory,ROM)、可擦式可编程只读存储器(erasable programmable read onlymemory,EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、射频(radio frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本说明书操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(localarea network,LAN)或广域网(wide area network,WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法实施例提供的缓存替换方法中的步骤。
这里需要指出的是:以上存储介质和程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个模块或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的模块可以是、或也可以不是物理上分开的,作为模块显示的部件可以是、或也可以不是物理模块;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部模块来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能模块可以全部集成在一个处理单元中,也可以是各模块分别单独作为一个单元,也可以两个或两个以上模块集成在一个单元中;上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种缓存替换方法,其特征在于,所述方法包括:
当电子设备访问数据时缓存发生缓存缺失,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行;
将从下一级存储器中读取的所述数据填充到所述目标缓存行,所述下一级存储器为缓存或者内存。
2.根据权利要求1所述的方法,其特征在于,每个所述缓存行预设有标识信息,所述标识信息用于指示所述缓存行对应的线程的重要程度,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行,包括:
确定所述标识信息为第一预设标识的缓存行为目标缓存行,所述第一预设标识指示所述缓存行对应的线程的重要程度最低。
3.根据权利要求1所述的方法,其特征在于,所述电子设备通过目标线程访问数据,在根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行之前,还包括:
确定所述目标线程的线程级别为关键线程,其中,所述线程级别包括关键线程和非关键线程。
4.根据权利要求3所述的方法,其特征在于,在所述确定所述目标线程的线程级别为关键线程之后,还包括:
获取缓存空间阈值,所述缓存空间阈值用于指示所述缓存中允许所述关键线程对应的缓存行占用的空间大小;
确定所述缓存中的目标空间大小是否超过所述缓存空间阈值,得到判断结果,所述目标空间大小为当前所述缓存中所述关键线程对应的缓存行所占用的空间大小;
所述根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行,包括:
根据所述判断结果以及所述缓存中各个缓存行对应的线程的重要程度确定所述目标缓存行。
5.根据权利要求4所述方法,其特征在于,所述根据所述判断结果以及所述缓存中各个缓存行对应的线程的重要程度确定所述目标缓存行,包括:
若所述判断结果为所述目标空间大小未超过所述缓存空间阈值,则确定所述标识信息为第二预设标识的缓存行为目标缓存行;
若所述判断结果为所述目标空间大小超过所述缓存空间阈值,则确定所述标识信息为第三预设标识的缓存行为目标缓存行,所述第二预设标识所指示的所述重要程度低于所述第三预设标识所指示的所述重要程度。
6.根据权利要求4所述的方法,其特征在于,在所述获取缓存空间阈值之前,所述方法还包括:
通过所述电子设备的性能监视单元采集的第一缓存访问信息和第二缓存访问信息确定目标缓存访问信息,所述第一缓存访问信息为执行所述目标线程过程中对应的缓存访问信息,所述第二缓存访问信息为结束所述目标线程后对应的缓存访问信息,所述目标缓存访问信息为所述目标线程访问所述缓存时的访问次数、命中次数和缺失次数中的至少一种;
根据所述目标缓存访问信息,确定所述缓存空间阈值。
7.根据权利要求6所述的方法,其特征在于,所述目标缓存访问信息包括所述访问次数和所述缺失次数,所述根据所述目标缓存访问信息,确定所述缓存空间阈值,包括:
若所述访问次数超过预设访问阈值、且所述缺失次数超过预设缺失阈值,确定所述缓存空间阈值为预设缓存空间大小与预设空间增量大小之和。
8.根据权利要求3所述的方法,其特征在于,每个所述缓存行预设有标识信息,所述标识信息用于指示所述缓存行对应的线程的重要程度,在所述将从下一级存储器中读取的所述数据填充到所述目标缓存行之后,所述方法还包括:
将所述目标缓存行的标识信息从第二预设标识更新为第三预设标识,所述第二预设标识所指示的所述重要程度低于所述第三预设标识所指示的所述重要程度。
9.根据权利要求5所述的方法,其特征在于,在所述将从下一级存储器中读取的所述数据填充到所述目标缓存行之后,所述方法还包括:
若所述判断结果为所述目标空间大小未超过所述缓存空间阈值,更新所述目标缓存行的标识信息为所述第三预设标识。
10.根据权利要求3所述的方法,其特征在于,每个所述缓存行预设有标识信息,所述标识信息用于指示所述缓存行对应的线程的重要程度,所述方法还包括:
若所述目标线程的线程级别从关键线程切换为非关键线程,更新所述缓存中全部缓存行或者部分缓存行对应的标识信息为第一预设标识,所述部分缓存行为所述目标线程对应的缓存行,所述第一预设标识指示所述缓存行对应的线程的重要程度最低。
11.一种缓存替换装置,其特征在于,所述装置包括:
缓存行确定模块,用于若电子设备访问数据时缓存发生缓存缺失,根据所述缓存中各个缓存行对应的线程的重要程度确定目标缓存行;
缓存行替换模块,用于将从下一级存储器中读取的所述数据填充到所述目标缓存行,所述下一级存储器为缓存或者内存。
12.一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至10中任一项所述缓存替换方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至10中任一项所述缓存替换方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211504367.8A CN115794682A (zh) | 2022-11-28 | 2022-11-28 | 缓存替换方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211504367.8A CN115794682A (zh) | 2022-11-28 | 2022-11-28 | 缓存替换方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794682A true CN115794682A (zh) | 2023-03-14 |
Family
ID=85442406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211504367.8A Pending CN115794682A (zh) | 2022-11-28 | 2022-11-28 | 缓存替换方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794682A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010300A (zh) * | 2023-03-24 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 一种gpu缓存方法及装置、电子设备和存储介质 |
CN117130663A (zh) * | 2023-09-19 | 2023-11-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
CN117806992A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 数据块替换方法、装置、电子设备及存储介质 |
-
2022
- 2022-11-28 CN CN202211504367.8A patent/CN115794682A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010300A (zh) * | 2023-03-24 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 一种gpu缓存方法及装置、电子设备和存储介质 |
CN117130663A (zh) * | 2023-09-19 | 2023-11-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
CN117806992A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 数据块替换方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086792B2 (en) | Cache replacing method and apparatus, heterogeneous multi-core system and cache managing method | |
US9798655B2 (en) | Managing a cache on storage devices supporting compression | |
TWI684099B (zh) | 剖析快取替代 | |
CN103927277B (zh) | Cpu和gpu共享片上高速缓存的方法及装置 | |
US9098417B2 (en) | Partitioning caches for sub-entities in computing devices | |
US8443144B2 (en) | Storage device reducing a memory management load and computing system using the storage device | |
CN115794682A (zh) | 缓存替换方法及装置、电子设备、存储介质 | |
EP2478441B1 (en) | Read and write aware cache | |
CN107408079B (zh) | 带有一致单元的多级别系统存储器的存储器控制器 | |
US11210020B2 (en) | Methods and systems for accessing a memory | |
US20180300258A1 (en) | Access rank aware cache replacement policy | |
CN107430554B (zh) | 通过使用数据的可压缩性作为高速缓存插入的标准来提高存储高速缓存性能 | |
US10496550B2 (en) | Multi-port shared cache apparatus | |
CN108701003A (zh) | 用于对远程节点的许多存储操作的原子写入的结构弹性支持 | |
KR20150057798A (ko) | 캐시 제어 장치 및 방법 | |
CN107562645B (zh) | 一种内存页管理方法及计算设备 | |
US20180150393A1 (en) | Cache memory device and electronic system including the same | |
US20180095884A1 (en) | Mass storage cache in non volatile level of multi-level system memory | |
US10417128B2 (en) | Memory coherence in a multi-core, multi-level, heterogeneous computer architecture implementing hardware-managed and software managed caches | |
CN113342265B (zh) | 缓存管理方法、装置、处理器及计算机装置 | |
US9792228B2 (en) | Enhancing lifetime of non-volatile cache by injecting random replacement policy | |
KR20210025344A (ko) | 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템, 그것의 데이터 관리 방법 | |
US20190042415A1 (en) | Storage model for a computer system having persistent system memory | |
US9552295B2 (en) | Performance and energy efficiency while using large pages | |
US11928061B2 (en) | Cache management method and apparatus |
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 |