CN112612728A - 缓存管理方法及装置、设备 - Google Patents
缓存管理方法及装置、设备 Download PDFInfo
- Publication number
- CN112612728A CN112612728A CN202011498787.0A CN202011498787A CN112612728A CN 112612728 A CN112612728 A CN 112612728A CN 202011498787 A CN202011498787 A CN 202011498787A CN 112612728 A CN112612728 A CN 112612728A
- Authority
- CN
- China
- Prior art keywords
- sampling
- cache
- instruction
- request
- level cache
- 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.)
- Granted
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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
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
技术领域
本申请实施例涉及集成电路领域,具体涉及缓存管理方法及装置、设备。
背景技术
在计算设备中,利用缓存存储需要经常访问的数据及地址是一种有效提高计算设备运行速度的方法。对缓存中数据进行管理,使缓存中数据为更频繁被用到的数据,是缓存管理中的重要目标。
目前存在多种可以用于管理缓存的缓存算法,这些缓存算法通常也被称为缓存替换算法或缓存替换策略,也可以称为替换算法。。
但是,仅依靠现有的缓存算法难以对缓存进行准确的管理。
申请内容
有鉴于此,本申请实施例中提供一种缓存管理方法,包括:
从向上级缓存发送的多个取指请求中进行采样;
根据所述采样的结果确定采样取指请求,所述采样取指请求包括所述采样得到的取指请求的取指地址;
发送所述采样取指请求至管理下级缓存的替换算法,以更新所述下级缓存中存储内容的被踢出优先级;
其中,所述上级缓存优先于所述下级缓存被读取。
可选的,所述从向上级缓存发送的多个取指请求中进行采样包括以下至少一种采样方式:
每隔第一预设数量的取指请求,进行所述采样;
每隔第二预设数量时钟周期,进行所述采样;
记录第三预设数量的历史取指请求,若新的取指请求与所述记录的历史取指请求相同,则进行所述采样。
可选的,所述根据所述采样的结果确定采样取指请求包括:
对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求,所述预设的条件用于指示被采样的取指请求被访问的频繁程度。
可选的,所述根据所述采样的结果确定采样取指请求包括:对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求;所述预设条件包括以下至少一种:
所述采样的结果中取指地址不同于此前第四预设数量的采样的结果中取指地址;
所述采样的结果中取指地址命中指令缓存;
所述采样的结果中取指请求译码后的指令命中微指令缓存;
所述采样的结果中取指请求处于微指令缓存取指模式。
可选的,所述发送所述采样取指请求至管理下级缓存的替换算法,包括:通过下级缓存中替换算法的专用接口,将所述采样取指请求发送至管理下级缓存的替换算法。
可选的,所述发送所述采样取指请求至管理下级缓存的替换算法,包括:复用上级缓存与下级缓存之间的请求接口,在所述请求接口空闲时,发送所述采样取指请求至管理下级缓存的替换算法。
可选的,从向上级缓存发送的多个取指请求中进行采样之前还包括:确定所述上级缓存与下级缓存为包含关系,所述包含关系指所述上级缓存中存储内容均包含于所述下级缓存中。
可选的,所述缓存管理方法还包括:在发送所述采样取指请求至管理下级缓存的替换算法后:
当所述采样取指请求命中下级缓存时,返回命中的缓存块至上级缓存;
当所述采样取指请求在下级缓存缺失时,继续请求所述采样取指请求的指向的内容,将继续请求过程中命中的存储内容存储至所述下级缓存,并且将继续请求时命中的缓存块返回至上级缓存。
可选的,所述根据所述采样的结果确定采样取指请求包括:确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据所述采样得到的;所述返回命中的缓存块至上级缓存包括返回带有来源标识的缓存块至所述上级缓存;所述返回继续请求时命中的存储内容中包括返回携带有来源标识的存储内容至所述上级缓存;所述方法还包括:根据所述来源标识丢弃所述上级缓存接收到的所述命中的缓存块或所述存储内容。
可选的,所述根据所述采样的结果确定采样取指请求包括:确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据采样得到的;发送所述采样取指请求至管理下级缓存的替换算法后,还包括根据来源标识确定是否继续执行以下至少一种:
当所述采样取指请求缺失时,继续请求所述采样取指请求的指向的内容;
当所述采样取指请求命中时,或者所述继续请求过程中命中时,返回命中的内容至上级缓存。
本申请实施例还提供一种缓存管理装置,包括:
采样单元,适于从向上级缓存发送的多个取指请求中进行采样;
采样取指请求确定单元,适于根据所述采样的结果确定采样取指请求,所述采样取指请求包括所述采样得到的取指请求的取指地址;
缓存管理更新单元,适于发送所述采样取指请求至管理下级缓存的替换算法,以更新所述下级缓存中存储内容的被踢出优先级;
其中,所述上级缓存优先于所述下级缓存被读取。
可选的,所述采样单元包括以下至少一种采样子单元:
第一采样子单元,适于每隔第一预设数量的取指请求,进行所述采样;
第二采样子单元,适于每隔第二预设数量时钟周期,进行所述采样;
第三采样子单元,适于记录第三预设数量的历史取指请求,若新的取指请求与所述记录的历史取指请求相同,则进行所述采样。
可选的,所述采样取指请求确定单元适于对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求,所述预设的条件用于指示被采样的取指请求被访问的频繁程度。
可选的,所述采样取指请求确定单元适于对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求,所述预设条件包括以下至少一种:
所述采样的结果中取指地址不同于此前第四预设数量的采样的结果中取指地址;
所述采样的结果中取指地址命中指令缓存;
所述采样的结果中取指请求译码后的指令命中微指令缓存;
所述采样的结果中取指请求处于微指令缓存取指模式。
可选的,所述缓存管理更新单元,适于通过下级缓存中替换算法的专用接口,将所述采样取指请求发送至管理下级缓存的替换算法。
可选的,所述缓存管理更新单元,适于复用上级缓存与下级缓存之间的请求接口,在所述请求接口空闲时,发送所述采样取指请求至管理下级缓存的替换算法。
可选的,所述缓存管理装置还包括:包含关系确定单元,适于在从向上级缓存发送的多个取指请求中进行采样之前,确定所述上级缓存与下级缓存为包含关系,所述包含关系指所述上级缓存中存储内容均包含于所述下级缓存中。
可选的,所述缓存管理装置,还包括:
缺失处理单元,适于当所述采样取指请求在下级缓存缺失时,继续请求所述采样取指请求的指向的内容,将命中的存储内容存储至所述下级缓存;
返回单元,适于当所述采样取指请求命中下级缓存时,返回命中的缓存块至上级缓存,或者当下级缓存缺失时,返回继续请求时命中的存储内容至上级缓存。
可选的,所述缓存管理更新单元包括来源标识单元,适于确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据所述采样得到的;所述返回单元适于返回带有来源标识的缓存块至所述上级缓存;所述缓存管理装置还包括:丢弃单元,适于根据所述来源标识丢弃所述上级缓存接收到的缓存块。
可选的,所述缓存管理更新单元包括来源标识单元,适于确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据所述采样得到的;所述缓存管理装置还包括继续执行判断单元,适于根据来源标识确定是否继续执行以下至少一种:当所述采样取指请求缺失时,请求所述采样取指请求的指向的内容;当所述采样取指请求命中时,或者所述继续请求过程中命中时,返回命中的内容至上级缓存。
本申请实施例还提供一种处理器,所述处理器包括前述的缓存管理装置。
本申请实施例还提供一种计算设备,所述计算设备包括所述的处理器。
本申请实施例还提供另一种计算设备,所述计算设备包括采样逻辑,所述采样逻辑适于从向上级缓存发送的多个取指请求中进行采样;根据所述采样的结果确定采样取指请求,所述采样取指请求包括所述采样得到的取指请求的取指地址;发送所述采样取指请求至管理下级缓存的替换算法,以更新所述下级缓存中存储内容的被踢出优先级;其中,所述上级缓存和所述下级缓存是所述计算设备的缓存,所述上级缓存优先于所述下级缓存被读取。
可选的,所述上级缓存包括指令缓存,所述采样逻辑位于所述指令缓存。
可选的,所述计算设备包括分支预测单元,所述采样逻辑位于所述分支预测单元。
本申请实施例还提供一种计算机设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行权利要求所述的缓存管理方法。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行前述的缓存管理方法中信息提取方法。
本申请实施例中的技术方案,通过对向上级缓存发送的多个取指请求进行采样,确定采样取指请求,并将采样取指请求发送至下级缓存,可以使得管理下级缓存的替换算法在更新所述下级缓存中存储内容的被踢出优先级时顾及到已命中了上级缓存的取指请求,从而避免在上级缓存中存储内容与下级缓存中存储内容相关联的场景下,因多次忽略对上级缓存的命中指令踢出下级缓存的存储内容对上级缓存带来的影响。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为一种计算设备的存储结构的示意图;
图2为一种存储器所在计算设备的部分硬件抽象示意框图;
图3为本申请实施例中一种缓存管理方法的流程图;
图4为一种处理器的部分简化框图;
图5为本申请实施例中一种处理器的部分简化框图;
图6为本申请实施例中另一种缓存管理方法的流程图;
图7为本申请实施例中一种缓存管理装置的结构示意图;
图8本申请实施例中一种采样取指请求确定单元的结构示意图;
图9为本申请实施例中另一种缓存管理装置的结构示意图;
图10为本申请实施例中另一种缓存管理装置的结构示意图;
图11为本申请实施例中另一种缓存管理装置的结构示意图;
图12为本申请实施例中另一种缓存管理装置的结构示意图;
图13为计算机系统体系架构的一种框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如背景技术中所述,在计算设备中,利用缓存存储需要经常访问的数据及地址是一种有效提高计算设备运行速度的方法。
这里的计算设备并不限于计算机系统,也可以是诸如手持式装置和具有嵌入式应用的其他装置;手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码相机、个人数字助理(PDA)或手持式PC(personal computer,个人计算机)。具有嵌入式应用的其他装置可包括网络计算机(Net PC)、机顶盒、服务器、宽域网(WAN)交换机、或可执行至少一个本申请公开实施例的一个或更多个指令的任何其他系统。
图1是一种计算设备的存储结构示意图。在计算设备中,寄存器11是中央处理器(CPU,Central Processing Unit)内的寄存器,的读写速度最快,缓存(cache)12的读写速度次之,主存储器13的读写速度最慢。在目前的一种技术实现中,寄存器11的读写速度与主存储器13相差近百倍。若直接从主存储器13读取数据,则需要等待较长的时间,造成资源浪费。
由于主存储器13容量较大,若将其做成速度更高的存储器,成本较高。一种解决方式即是如图中所示,在寄存器11和主存储器13之间设读写速度大幅度高于主存储器13的缓存12,当需要从主存储器中读取(load)数据时,首先查找对应地址的数据是否已在缓存12中,其中,缓存12也被称作高速缓存。
在具体实现中,缓存可以是多级的,不同的CPU或CPU中处理核(Core)可以共用缓存,或者可以为每个CPU或CPU中的处理核心设置其私有缓存。
图2是一种存储器所在计算设备的部分硬件抽象示意框图。图2中示出了两个一级缓存(L1 cache)21,分别位于两个的CPU24中,两个CPU24共享一个二级缓存(L2 cache)22,两个CPU24位于同一CPU簇(cluster)25中,虽然图中未示出,但多个CPU簇25可以共享一个三级缓存(L3 cache)23,并且通过总线26与主存储器27进行交互。
可以理解的是,上述缓存中一级缓存、二级缓存、三级缓存中的级别数量和不同级别缓存的位置仅为举例,并非对本申请实施例的限制。
在一种现有的技术实现中,CPU内寄存器的读写速度可以小于1ns;缓存中一级缓存的读写速度可以为1ns,二级缓存的读写速度可以为3ns,三级缓存的读写速度可以为12ns;主存储器的读写速度可以为65ns。
上述读写速度仅为举例。通过该例可以理解的是,缓存可以包括不同级别,上级缓存的读写速度大于下级缓存的读写速度,上级缓存和下级缓存为相对概念。例如前例中一级缓存为二级缓存的上级缓存,二级缓存为一级缓存的下级缓存。二级缓存为三级缓存的上级缓存,三级缓存为二级缓存的下级缓存。对上级缓存的读写速度更快,优先读取上级缓存中的数据,在缺失(miss)时再读取下级缓存,有利于提升资源利用率,并提升处理效率。
如前文所述,缓存的容量有限,如何管理缓存中存储的数据或指令,提升缓存中数据或指令的命中率,是本技术领域的重要问题。
一种可以用于对缓存进行管理的算法是背景技术中所述的替换算法,也即缓存替换策略(Cache replacement policies),通过替换算法管理缓存中数据被踢出优先级,首先踢出缓存中被踢出优先级最高的缓存块,对缓存中数据进行更新。本领域技术人员可以实现的各种替换算法均可以作为该处的替换算法的具体实现方式,例如,近期最少使用(LRU,Least recently used)算法、最近最多使用算法(MRU,Mostly recently used)、LRU插入策略(LIP,LRU Insertion Policy)、重新引用间隔预测算法(RRIP,Re-ReferenceInterval Prediction)等。
以下以近期最少使用算法是为例进行说明。近期最少使用算法的核心思想是:如果存储内容最近被访问过,那么将来被访问的几率也更高,属于一种时间维度的优化算法。一种实现方式是,将存储内容按照访问时间设置被踢出优先级,新加入的存储内容的被踢出优先级低于旧的存储内容,并且被访问过的存储内容的被踢出优先级低于未被访问过的存储内容。在LRU管理下的存储空间达到上限时,将被踢出优先级最高的存储内容踢出。
在具体实现中,可以利用LRU算法对下级缓存进行管理。例如,LRU算法可以对二级缓存进行管理。存储内容可以是数据或指令。对缓存进行管理的最小颗粒度可以是缓存块(Cache Block)。
可以理解的是,对下级缓存进行管理的LRU算法指符合上述LRU算法思想的算法。其具体实现可以是基于上述思想进行优化过的算法。以下继续以LRU算法为例进行说明。
如前文所述,对上级缓存的访问优先级更高,若在读取上级缓存时已命中,则该次读取结束,不会继续访问下级缓存。在利用LRU算法对下级缓存进行管理时,该次由于命中结束的读取不会被体现。但是在一些应用场景中,下级缓存中存储的内容与上级缓存中存储内容存在关联性,由于多次忽略对上级缓存的命中指令而踢出的存储内容可能会影响上级缓存中的存储内容,从而引发错误。这种错误在存储内容为指令时影响更大。因为数据缓存缺失的开销可以被乱序执行处理器在一定程度上掩盖,而若指令缓存缺失,则必然会导致流水线阻塞,如果需要冲刷流水线的话,开销会更大。
以上级缓存为一级缓存,下级缓存为二级缓存为例。二级缓存的LRU算法更新并不是基于程序的真实访问,而是基于一级缓存缺失的部分访问,会加剧上述问题。比如,一段指令循环执行,访问很频繁,但是一级缓存可以全部命中,这时候二级缓存完全看不到这段指令的访问(无法命中),那么在二级缓存的LRU算法中,这段指令所对应的CacheBlock就无法得到“被踢出的优先级调低”的机会,而同组的其他CacheBlock命中时,会逐渐的把这段指令所对应的CacheBlock被替换的优先级提高,直到变为最高并最终被替换出二级缓存。
如前所述,这种错误在存储内容为指令时影响更大。解决上述问题的一种实现方式是在管理下级缓存的LRU算法中采取偏向存储指令的Cache Block(也即指令CacheBlock)的策略。例如,每次在指令CacheBlock在二级缓存命中时,其“被踢出的优先级调低”时,调低的幅度更大。或者,例如指令CacheBlock和数据CacheBlock有同样的“被踢出优先级”时,选择踢出数据CacheBlock。但是这种在替换算法上的改进,解决不了根本问题,即二级缓存的替换算法更新是基于一级缓存缺失的部分访问,极端情况下,一级缓存如果全部命中,二级缓存最终还是会把指令CacheBlock踢出。依然可能会引发前述的错误。
虽然上述以LRU算法为例进行说明,可以理解的是,采用其它替换算法进行缓存的管理时,会出现类似的问题。
本申请实施例提供一种缓存管理方法,结合参考图3,具体可以包括如下步骤:
步骤S31,从向上级缓存发送的多个取指请求中进行采样;
步骤S32,根据所述采样的结果确定采样取指请求,所述采样取指请求包括所述采样得到的取指请求的取指地址;
步骤S33,发送所述采样取指请求至管理下级缓存的替换算法,以更新所述下级缓存中存储内容的被踢出优先级;
其中,所述上级缓存优先于所述下级缓存被读取。存储内容的踢出,以缓存块为单位,本申请中也称作缓存块的踢出。
在本申请实施例中,通过对向上级缓存发送的多个取指请求进行采样,确定采样取指请求,并将采样取指请求发送至下级缓存,可以使得管理下级缓存的替换算法在更新所述下级缓存中存储内容的被踢出优先级时顾及已命中了上级缓存的取指请求,从而避免在上级缓存中存储内容与下级缓存中存储内容相关联的场景下,因多次忽略对上级缓存的命中指令踢出下级缓存的存储内容对上级缓存带来的影响。
本申请中实施例可以用于使用流水线技术的处理器核。现代处理器一般采用流水线技术并行处理指令,以加速指令处理效率;在处理分支指令时,为避免等待分支指令执行结果而决定分支方向的情况,大多数现代处理器均采用分支预测(Branch Prediction)技术。
图4为一种处理器的部分简化框图,图4所示的处理器包含使用流水线技术的处理器核。在图4所示的实例中,一级缓存分为指令缓存42和数据缓存45,二级缓存44是指令和数据共享的。分支预测单元41产生取指请求,从指令缓存42中取出指令,送给后续的译码、发射、执行、访存、提交单元43,如果是访存指令,还需要访问数据缓存45。二级缓存44与指令缓存42、数据缓存45相连。指令缓存42、数据缓存45分别和二级缓存44之间有双向的请求接口,指令缓存42及数据缓存45中任一个或两个访问缺失时,会向二级缓存44发出请求;二级缓存44若需处理缓存一致性,也可以向指令缓存42及数据缓存45中任一个或两个发送请求。指令缓存42和二级缓存44之间有单向的数据通路,因为指令缓存42是只读的,不需要向二级缓存44写回数据;数据缓存45和二级缓存44之间有双向的数据通路,因为数据缓存45是可读可写的,可以将数据缓存45中的改写过的数据写回二级缓存44。
其中,译码、发射、执行、访存、提交单元43为简化描述,并非对其结构的限制。其具体可以包括译码单元、发射单元、执行单元、访存单元、提交单元等。另外,同样可以理解的是,图4仅为处理器的部分简化示意框图,并非对硬件实现的约束。
在具体实施中,上级缓存和下级缓存的关系可以是多样的,例如可以是包含(Inclusive)关系,互斥(Exclusive)关系,非包含非互斥(Non-Inclusive Non-Exclusive)关系。Inclusive指在上级指令缓存和上级数据缓存中有的CacheBlock在下级缓存中必然也有;Exclusive指在上级指令缓存和上级数据缓存中有的CacheBlock在下级缓存中必然没有;Non-InclusiveNon-Exclusive是介于两者之间的一种关系。
其中,包含关系通常可以通过如下方式维护:CacheBlock被取入一级指令或数据缓存时,同时也写入二级缓存;CacheBlock被从二级缓存中踢出时,同时也从一级指令或数据缓存中踢出。
在上述三种关系中,包含关系中上级缓存和下级缓存中存储的数据关系最密切,若管理下级缓存的算法忽略已命中了上级缓存的取指请求,而将下级缓存中数据踢出,对上级缓存的影响最大。
例如,为了维持Inclusive的关系:CacheBlock被从二级缓存中踢出时,需要将其对应的CacheBlock从一级缓存中踢出。进一步的,为了硬件支持自修改指令(Self-modify-code),若该被踢出的Cache Block已被取指入流水线,则需要冲刷流水线重新开始取指,资源浪费较大。
当上级缓存和下级缓存为其余两种关系时,特别是为Exclusive关系时,下级缓存中CacheBlock的踢出操作,对上级缓存的影响较小。在具体实施中,可以先确定所述上级缓存与下级缓存为包含关系,然后再执行如图3中所示的步骤。如此,有利于节省资源。
在具体实施中,上级缓存可以是图4中的指令缓存42,从向上级缓存发送的多个取指请求中进行采样可以是对分支预测单元41输出的取指请求进行采样。具体的,若在分支预测单元41向指令缓存42发送取指指令的接口存在指令队列,则可以在该指令队列的入口或者出口进行采样。
可以理解的是,从向上级缓存发送的多个取指请求中进行采样也可以是对其它处理器结构中的取指请求进行采样,例如可以对不采用分支预测技术的处理器中取指请求进行采样,或者对指令缓存和数据缓存一体的一级缓存接收的取指请求进行采样等,或者其它更多的采样方式,在此均不做限制。
结合参考图5,图5是本申请实施例中一种本申请实施例中一种处理器的部分简化框图。在具体实施中,从多个取指请求中进行采样可以由采样逻辑51实现。在具体的硬件实现方面,采样逻辑51可以在分支预测单元41中实现,或者也可以与指令缓存42中实现。
在具体实施中,从向上级缓存发送的多个取指请求中进行采样的时间,可以以多种方式确定,以下分别进行说明。
在本申请一实施例中,可以每隔第一预设数量的取指请求,进行所述采样。第一预设数量的具体数值可以通过对处理器的性能评估确定。若第一预设数量设置的过大,则管理下级缓存中的替换算法无法及时更新下级缓存中存储内容的被踢出优先级,若第一预设数量设置的过小,则过多的采样给下级缓存,造成下级缓存的带宽和功耗的浪费。进一步的,第一预设数量可以取64、128等数值。
在本申请又一实施例中,可以每隔第二预设数量时钟周期,进行采样。与第一预设数量类似,第二预设数量的具体数值也可以通过对处理器的性能评估确定,设置过大或过小的影响也与第一预设数量类似。第一预设数量可以去64、128等数值。第二预设数量也可以是64、128等数值。
在本申请另一实施例中,可以记录第三预设数量的历史取指请求,若新的取指请求与所述记录的取指请求相同,则进行采样。由于对历史取指请求记录的数量越多,硬件开销越大。另外,若第三预设数量过小,则采样过少,则会导致对向上级缓存发送的多个取指请求的采样频率过低。故第三预设数量可以基于对实施效果和硬件开销的权衡(trade-off)结果确定。例如,第三预设数量可以取16、32等值。
以第三预设数量取16为例,可以记录16个最近发生的取指请求。已发生过的取指请求即历史取指请求,故记录16个最近发生的取指请求,也即16个最近发生的历史取指请求。当新的取指请求与已存储的16个历史取指请求中任意一个相同时,可以对该新的取指请求进行采样。通过记录历史取指请求的方式,与记录的历史取指请求相同的新的取指请求触发进行采样,可以避免取指请求循环执行时重复忽略同一指令对上级缓存的命中,进而避免将指令踢出下级缓存的存储内容对上级缓存带来的影响。
在具体实施中,上述各采样方式可以单独使用或者并用,在此不做限制。
在具体实施中,采样取指请求是取指请求,由于其并非根据处理器处理流程产生的原始的取指请求,将其称作采样取指请求。采样取指请求是根据采样的结果确定的,采样的结果中可以仅包括被采样的取指请求的取指地址。采样的结果也可以包括被采样的取指请求的其它信息,例如取指模式等内容。采样取指请求可以与被采样的取指请求一致。或者,采样取指请求可以至少包括与被采样的取指请求的取指地址,另外包括其他指示性的信息,例如后文中的取指模式、来源标识等。
在具体实施中,可以对采样得到的结果,也即采样的结果进行判断,基于符合预设条件的采样的结果确定所述采样取指请求。
进一步的,在具体实施中,采样的结果也可以包括被采样的取指请求,通过采样的结果可以判断被采样的取指请求是否命中微指令缓存;或者,采样的结果中也可以包括取指请求所处的取指模式。
在具体实施中,预设的条件可以用于判断采样对应的取指请求的被访问频繁程度。被访问的频繁程度较低的取指请求对下级缓存的更新影响较小,通过判断被采样的取指请求的被访问频繁程度,依据对被访问的频繁程度高的取指请求的采样的结果确定采样取指请求,可以避免对下级缓存资源的过多占用。判断取指请求的被访问的频繁程度的方式可以是多样的,
在本申请一实施例中,可以判断被采样的取指请求译码后的指令是否命中微指令缓存,判断是否符合预设的条件。若被采样的取指请求译码后的指令命中微指令缓存,则该取指请求被访问的频繁程度较高,判断为符合预设的条件,可以依据对该取指请求的采样的结果生成采样取指请求。
微指令缓存(Op Cache)与指令缓存是并列的关系,也是也是一种通过物理地址查找的缓存,存储的是译码后的指令,可能出现命中/缺失的情况。通常,微指令缓存的容量要比指令缓存小,存储的是最频繁被使用的指令。如果被采样的指令在微指令缓存中缺失,则说明被采样的取指请求中的取指地址可能并不是最频繁被使用的,可以丢弃该采样的结果。
在本申请另一实施例中,可以通过判断被采样的取指请求对应的取指模式,确定是否满足预设的条件。若被采样的取指请求在被采样时处于指令缓存取指模式,则判断为不满足预设的条件;否则,则判断为符合预设的条件。例如,若被采样的取指请求在被采样时处于微指令缓存取指模式,则可以依据该采样的结果确定采样取指请求。
如前文所述,微指令缓存的容量要比指令缓存小,存储的是最频繁被使用的指令。在一些处理器中,从指令缓存中取指与从微指令缓存中取指属于不同的模式。微指令缓存命中/缺失是针对单个取指地址的,通常连续多个地址都命中微指令缓存,会进入微指令缓存取指模式。故若被采样的取指请求处于微指令缓存取指模式,则说明其被频繁访问;若被采样的取指请求处于指令缓存取指模式,则说明其被访问的不够频繁,可以丢弃该采样的结果。
在具体实施中,可以设置预设条件筛选出满足一定范围内不重复的采样的结果。例如,可以设置第四预设数量,若采样的结果中取指地址与此前第四预设数量的采样的结果中取指地址重复,则判断为不符合预设条件,可以丢弃该采样的结果;若采样的结果中取指地址与此前第四预设数量的采样的结果中取指地址不重复,则判断为符合预设条件,可以基于采样的结果生成采样取指请求。
与第三预设数量的确定类似,第四预设数量可以通过性能评估和硬件开销平衡确定。例如,第四预设数量具体可以取4或8。以第四预设数量取4为例,可以记录4个最近采样的结果。当新的采样的结果中的取值地址与已存储的4个采样的结果中取指地址中任意一个相同时,则丢弃该采样的结果。通过保存第四预设数量的采样的结果,可以避免频繁的向下级缓存的发送取指地址重复的采样取指请求。
在具体实施中,预设条件可以包括对被采样的取指请求本身是否命中的判断,若被采样的取指请求命中指令缓存,则判断为符合预设条件,若被采样的取指请求在指令缓存中缺失,则判断为不符合预设条件,丢弃该次采样的结果。被采样的取指请求在指令缓存中缺失,则该被采样的取指请求本身即会被送到下级缓存,此时若基于该次采样的结果得到采样取指请求,则下级缓存会收到重复的取指请求,造成下级缓存的带宽和功耗的浪费。
在具体实施中,上述预设条件可以单独使用或者并用,在此不做限制。
在具体实施中,发送所述采样取指请求至管理下级缓存的替换算法可以以多种方式实现。
在本申请一实施例中,可以通过下级缓存中替换算法的专用接口,将所述采样取指请求发送至管理下级缓存的替换算法。该专用接口可以是在现有处理器的硬件基础上新建的接口。
例如,继续结合参考图5,在一种具体实现中,该专用接口可以直接连接采样逻辑51和二级缓存44中替换算法。通过该专用接口,可以直接将采样逻辑51生成的采样取指请求发送至二级缓存44中的替换算法。
在本申请另一实施例中,可以复用上级缓存与下级缓存之间的请求接口,在所述请求接口空闲时,发送所述采样取指请求至管理下级缓存的近期最少使用算法。
例如,结合参考图5,采样逻辑51可以位于指令缓存42中,可以通过指令缓存42和二级缓存44之间的请求接口,在该请求接口空闲时,发送采样取指请求至管理下级缓存的替换算法。
通过复用的方式发送采样取指请求,可以节省硬件资源。若请求接口一直繁忙,在下一个采样取指请求产生时,上一个采样取指请求仍未发送,则可以更新采样取指请求。
结合参考图3和图6,在具体实施中,步骤S33,发送所述采样取指请求至管理下级缓存的替换算法后,还可以包括如下步骤:
步骤S61,判断采样取指请求是否命中下级缓存,若是,则可以执行步骤S62,若否,可以执行步骤S63;
步骤S62,返回命中的缓存块至上级缓存;
步骤S63,继续请求所述采样取指请求的指向的内容,继续请求可以是向下级缓存的更下一级缓存进行请求;
步骤S64,将继续请求过程中命中的存储内容存储至所述下级缓存,并且返回继续请求时命中的存储内容至上级缓存;向上级缓存返回时,可以由下级缓存将存储内容向上级缓存返回,该存储内容此时为下级缓存的缓存块。
如前文所述,上级缓存和下级缓存是相对概念。在下级缓存未命中时,可以向下级缓存的更下一级缓存请求数据。更下一级缓存是相对于未命中的下级缓存的下级缓存。例如,结合参考图2,其中,上级缓存可以是一级缓存21,下级缓存可以是二级缓存22。步骤S63中继续请求所述采样取指请求的指向的内容可以是继续向三级缓23存请求,若在三级缓存23命中,则可以将命中的缓存块中内容存储至二级缓存22。若各级缓存均缺失,也可以向缓存的更下一级存储器进行请求,例如向内存请求,若命中则可以将采样取指请求指向的存储内容返回。
另外,结合参考图4,在具体实施中,上级缓存还可以是指令缓存42,相应的,下级缓存可以是二级缓存44。在虚拟取指指令在二级缓存44命中后,可以返回该命中的缓存块至指令缓存42。设置该步骤可以使得本申请实施例中流程与现有的处理器有更好的兼容性。
在具体实施中,若采样取指请求命中下级缓存,下级缓存也可以不返回命中的缓存块。类似的,若在下级缓存中缺失,也可以不继续请求。在继续请求中得到采样取指请求指向的内容时,也可以不向下级缓存返回。在继续请求中得到采样取指请求指向的内容并向下级缓存返回后,下级缓存也可以返回或者不返回相应的缓存块至上级缓存,下级缓存也可以丢弃或存储继续请求返回的内容。上级缓存在接收到返回的缓存块后,也可以丢弃或者不丢弃接收到的缓存块。
在具体实施中,根据所述采样的结果确定采样取指请求,可以包括确定所述采样取指请求中的来源标识,该来源标识指示所述采样取指请求为根据采样得到的。来源标识可以设置于取指请求中类型(type)域中,可以新增一个类别来附带该标识。
在下级缓存返回命中的缓存块时,同样可以携带该来源标识,上级缓存可以根据该来源标识丢弃采样取指请求返回的缓存块中内容。结合参考图4,当上级缓存时42时,具体可以是由指令缓存42丢弃。
由于采样取指请求是在取指请求采样后生成的,采样取指请求命中的内容与被采样的取指请求命中的内容是重合的,丢弃采样取指请求返回的内容并不会影响正常运行,并节省资源。
在具体实施中,可以根据来源指示确定是否执行以下至少一种流程:在下级缓存缺失时是否继续请求所述采样取指请求的指向的内容;以及是否返回当所述采样取指请求命中时命中的缓存块,或者采样取指请求在下级缓存缺失,但在所述继续请求过程中命中的存储内容。具体的,在根据来源标识确定一个取指请求为采样取指请求时,可以不继续向再下一级的缓存请求该采样取指请求指向的内容,或者可以请求后不再向上级缓存返回命中的缓存块。
如前文所述,采样取指请求命中的内容与被采样的取指请求命中的内容是重合的。在根据来源标识确定一个取指请求为采样取指请求时,不继续向再下一级的缓存请求,并不影响正常运行,并且可以节省资源。若继续请求,则对原运行流程改变较少,逻辑更简单。
本领域技术人员可以理解的是,本申请中的“在具体实施中”“一实施例中”“例如”等描述意指结合该实施例或示例描述的具体特征、结构或者特点包括于本申请的至少一种实施例或示例中。而且,描述的具体特征、结构或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本申请中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
另外,前述实施例中的流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在本申请实施例中,通过对向上级缓存发送的多个取指请求进行采样,确定采样取指请求,并将采样取指请求发送至下级缓存,可以使得管理下级缓存的替换算法在更新所述下级缓存中存储内容的被踢出优先级时顾及已命中了上级缓存的取指请求,从而避免在上级缓存中存储内容与下级缓存中存储内容相关联的场景下,因多次忽略对上级缓存的命中指令踢出下级缓存的存储内容对上级缓存带来的影响。
本申请实施例还提供一种缓存管理装置,结合参考图7,缓存管理装置可以包括:
采样单元71,适于从向上级缓存发送的多个取指请求中进行采样;
采样取指请求确定单元72,适于根据所述采样的结果确定采样取指请求,所述采样取指请求可以包括所述采样得到的取指请求的取指地址;
缓存管理更新单元73,适于发送所述采样取指请求至管理下级缓存的替换算法,以更新所述下级缓存中存储内容的被踢出优先级;
其中,所述上级缓存优先于所述下级缓存被读取。
结合参考图7和图8,在具体实施中,图7中所述采样单元71可以包括以下至少一种采样子单元:
第一采样子单元81,适于每隔第一预设数量的取指请求,进行所述采样;
第二采样子单元82,适于每隔第二预设数量时钟周期,进行所述采样;
第三采样子单元83,适于记录第三预设数量的历史取指请求,若新的取指请求与所述记录的历史取指请求相同,则进行所述采样。
继续参考图7,在具体实施中,所述采样取指请求确定单元72适于对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求,所述预设的条件用于指示被采样的取指请求被访问的频繁程度。
在具体实施中,所述采样取指请求确定单元72适于对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求,所述预设条件可以包括以下至少一种:
所述采样的结果中取指地址不同于此前第四预设数量的采样的结果中取指地址;
所述采样的结果中取指地址命中指令缓存;
所述采样的结果中取指请求译码后的指令命中微指令缓存;
所述采样的结果中取指请求处于微指令缓存取指模式。
在具体实施中,所述缓存管理更新单元73,适于通过下级缓存中替换算法的专用接口,将所述采样取指请求发送至管理下级缓存的替换算法。
在具体实施中,所述缓存管理更新单元73,适于复用上级缓存与下级缓存之间的请求接口,在所述请求接口空闲时,发送所述采样取指请求至管理下级缓存的替换算法。
在具体实施中,结合参考图7和图9,所述缓存管理装置还可以包括:包含关系确定单元91,适于在从向上级缓存发送的多个取指请求中进行采样之前,确定所述上级缓存与下级缓存为包含关系,所述包含关系指所述上级缓存中存储内容均包含于所述下级缓存中。图9中其它单元的具体实现方式请参见已在图7中进行的描述,在此不再赘述。
在具体实施中,结合参考图10和图7,所述缓存管理装置还可以包括:
缺失处理单元102,适于当所述采样取指请求在下级缓存缺失时,继续请求所述采样取指请求的指向的内容,并且将继续请求时命中的存储内容存储至下级缓存。
返回单元101,适于当所述采样取指请求命中下级缓存时,返回命中的缓存块至上级缓存,或者当下级缓存缺失时,返回继续请求时命中的存储内容至上级缓存。
图10中其它单元的具体实现方式请参见已在图7中进行的描述,在此不再赘述。
结合参考图10和图11,在具体实施中,所述缓存管理更新单元可以包括来源标识单111,适于确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据所述采样得到的;进一步的,所述返回单元101返回的缓存块可以是带有来源标识的内容,也即,缺失处理单元102可以返回带有来源标识的缓存块或存储内容至所述上级缓存;所述缓存管理装置还可以包括:丢弃单元112,适于根据所述来源标识丢弃所述上级缓存接收到的的缓存块或存储内容。图11中其它单元的具体实现方式请参见已在图10中进行的描述,在此不再赘述。
结合参考图12,在具体实施中,所述缓存管理更新单元可以包括来源标识单111,适于确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据所述采样得到的;所述缓存管理装置还可以包括继续执行判断单元121,适于根据来源标识确定是否继续请求执行以下至少一种:当所述采样取指请求缺失时,继续请求所述采样取指请求的指向的内容;当所述采样取指请求命中时,或者所述继续请求过程中命中时,返回命中的内容至上级缓存。图12中其它单元的具体实现方式请参见已在图11中进行的描述,在此不再赘述。
本申请实施例中的内存管理装置与内存管理方法相对应,其原理、名词解释、有益效果以及具体实现方式可以参考本申请实施例中的内存管理方法,在此不再赘述。
本申请实施例中的电子自动化设计中电路分析装置以及电子自动化设计中信息提取装置所描述的各个单元,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机程序。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。
并且,所述的各个功能模块可以集成在一个处理部件中,也可以是各个模块单独物理存在,也可以两个或两个以上功能模块集成在一个部件中。
本申请实施例中的缓存管理装置,通过对向上级缓存发送的多个取指请求进行采样,确定采样取指请求,并将采样取指请求发送至下级缓存,可以使得管理下级缓存的替换算法在更新所述下级缓存中存储内容的被踢出优先级时顾及到已命中了上级缓存的取指请求,从而避免在上级缓存中存储内容与下级缓存中存储内容相关联的场景下,因多次忽略对上级缓存的命中指令踢出下级缓存的存储内容对上级缓存带来的影响。
本申请实施例还提供一种处理器,所述处理器可以包括前述的缓存管理装置。
结合参考图5,前述的缓存管理装置可以是采样逻辑51的具体实施方式。也即,图中的采样逻辑51可以包括缓存管理装置。可以理解的是,采样逻辑51可以位于分支预测单元41,或者指令缓存42。
本申请实施例还提供一种计算设备,所述计算设备包括前文所述的处理器。
如前文所述,计算设备并不限于计算机系统。以下以计算机系统为例对计算设备进行说明,但并非对计算设备的限制。
结合参考图13,作为本申请实施例公开内容的一个可选示例,图13示例性的示出了计算机系统体系架构的一种框图;应该说明的是,该框图是为便于理解本申请实施例公开内容而示出,本申请实施例中的计算机系统并不限于图13所示架构。
参考图13,计算机系统可包括:处理器131,与处理器131耦合的内存132,与处理器耦合的南桥133。
处理器131可包括CISC(复杂指令集计算机)微处理器、RISC(精简指令集计算机)微处理器、VLIW(超长指令字)微处理器、实现指令集的组合的处理器或诸如数字信号处理器的任何其它处理器装置。
处理器131可集成用于执行至少一个指令的至少一个处理器核130,处理器核130表示任何类型的体系结构的处理器核,如RISC处理器核、CISC处理器核、VLIM处理器核或混合处理器核等。处理器核130可以以任何适合的方式实现,在处理器131集成多个处理器核130的情况下,处理器核可在体系结构和/或指令集方面是同构或异构的;在一种可选实现中,一些处理器核可以是有序的,而其它处理器核可以是无序的,在另一种可选实现中,两个或更多个处理器核可执行相同指令集,而其它处理器核可执行该指令集的子集或不同指令集。
当处理器核130的数量为多个时,多个处理器核130可以各自拥有其私有缓存,或者也可以共享缓存。本具体实施中,每个处理器核均可以包括本申请实施例中的采样逻辑。作为一种可选示例,处理器131内可集成内存控制器等部件,并对外提供内存接口等;处理器131可通过内存接口耦合到内存132。同时,处理器131可耦合到处理器总线,并通过处理器总线耦合到南桥133。
作为一种可选示例,南桥133可以集成与计算机系统其它组件相通信的总线接口14,从而通过南桥133实现处理器131与计算机系统1中大部分其他组件的信号传递;计算机系统的组件可根据实际情况增设和调整,此处不进行逐一说明;
在一个可选示例中,南桥133所集成的总线接口134包括但不限于:存储器(如硬盘)总线接口、USB总线接口、网络控制器总线接口、PCIE总线接口等。
需要说明的是,图1示例框图中处理器和南桥的耦合结构是基本的,但处理器和南桥的具体细化结构可视具体使用情况设置、调整和/或扩展,并不固定。
在其他的计算机系统体系结构中,例如在分设南桥和北桥的计算机系统体系结构中,内存控制也可能由北桥提供,如北桥主要负责显卡、内存与处理器之间的信号传递,并且向上耦合处理器,向下耦合南桥;南桥主要负责硬盘、外设以及各种对带宽要求较低的IO(输入输出)接口与内存、处理器之间的信号传递。
上述所述是处理器与南桥式的计算机体系结构,在计算机体系结构的其他示例中,也可能通过SoC(System on Chip,片上系统)实现计算机体系结构;示例性的,SoC可集成处理器、内存控制器、以及IO接口等,并且SoC可通过与外部的内存、IO设备、网卡等其他组件相耦合,实现在单个主要芯片上搭建计算机体系结构。
另外,上述所述的处理器并不限于CPU(Central Processing Unit,中央处理器),还可以是加速器(例如,图形加速器或数字信号处理单元)、GPU(Graphics ProcessingUnit,图形处理器)、现场可编程门阵列或任何其它具有指令执行功能的处理器。上述虽然是以单处理器进行的示例说明,但在实际情况下,计算机体系结构可能存在多个处理器,每一处理器具有至少一个处理器核。
本申请实施例还提供另一种计算设备,所述计算设备可以包括采样逻辑,所述采样逻辑适于从向上级缓存发送的多个取指请求中进行采样;根据所述采样的结果确定采样取指请求,所述采样取指请求可以包括所述采样得到的取指请求的取指地址;发送所述采样取指请求至管理下级缓存的替换算法,以更新所述下级缓存中存储内容的被踢出优先级;其中,所述上级缓存和所述下级缓存是所述计算设备的缓存,所述上级缓存优先于所述下级缓存被读取。
在具体实施中,采样逻辑可以用于实现前文所述的内存管理方法,其具体实现方式、有益效果参见前文所述,在此不再赘述。
本申请实施例中的计算设备的硬件实现可以结合参考图13以及对应的文字描述部分,在此不再赘述。
在具体实施中,计算设备中处理器的结构可以参见图5以及对应的文字描述部分,在此不再赘述。
本申请实施例还提供另一种计算设备,可以包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行权利要求所述的缓存管理方法。
所述计算机设备包括但不限于:服务器、台式机、智能手机、笔记本电脑、平板电脑、智能手环、智能手表、其它智能设备或其中任意一种或多种的多个设备通信连接构成的分布式处理系统。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行前述的缓存管理方法中信息提取方法。
即,上述本申请实施例中的缓存管理方法可被实现为可存储在记录介质中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的缓存管理方法。
与现有技术相比,在本申请实施例中,通过对向上级缓存发送的多个取指请求进行采样,确定采样取指请求,并将采样取指请求发送至下级缓存,可以使得管理下级缓存的替换算法在更新所述下级缓存中存储内容的被踢出优先级时顾及到已命中了上级缓存的取指请求,从而避免在上级缓存中存储内容与下级缓存中存储内容相关联的场景下,因多次忽略对上级缓存的命中指令踢出下级缓存的存储内容对上级缓存带来的影响。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请实施例的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (27)
1.一种缓存管理方法,其特征在于,包括:
从向上级缓存发送的多个取指请求中进行采样;
根据所述采样的结果确定采样取指请求,所述采样取指请求包括所述采样得到的取指请求的取指地址;
发送所述采样取指请求至管理下级缓存的替换算法,以更新所述下级缓存中存储内容的被踢出优先级;
其中,所述上级缓存优先于所述下级缓存被读取。
2.根据权利要求1所述的缓存管理方法,其特征在于,所述从向上级缓存发送的多个取指请求中进行采样包括以下至少一种采样方式:
每隔第一预设数量的取指请求,进行所述采样;
每隔第二预设数量时钟周期,进行所述采样;
记录第三预设数量的历史取指请求,若新的取指请求与所述记录的历史取指请求相同,则进行所述采样。
3.根据权利要求1所述的缓存管理方法,其特征在于,所述根据所述采样的结果确定采样取指请求包括:
对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求,所述预设的条件用于指示被采样的取指请求被访问的频繁程度。
4.根据权利要求1所述的缓存管理方法,其特征在于,所述根据所述采样的结果确定采样取指请求包括:对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求;所述预设条件包括以下至少一种:
所述采样的结果中取指地址不同于此前第四预设数量的采样的结果中取指地址;
所述采样的结果中取指地址命中指令缓存;
所述采样的结果中取指请求译码后的指令命中微指令缓存;
所述采样的结果中取指请求处于微指令缓存取指模式。
5.根据权利要求1所述的缓存管理方法,其特征在于,所述发送所述采样取指请求至管理下级缓存的替换算法,包括:通过下级缓存中替换算法的专用接口,将所述采样取指请求发送至管理下级缓存的替换算法。
6.根据权利要求1所述的缓存管理方法,其特征在于,所述发送所述采样取指请求至管理下级缓存的替换算法,包括:复用上级缓存与下级缓存之间的请求接口,在所述请求接口空闲时,发送所述采样取指请求至管理下级缓存的替换算法。
7.根据权利要求1所述的缓存管理方法,其特征在于,从向上级缓存发送的多个取指请求中进行采样之前还包括:确定所述上级缓存与下级缓存为包含关系,所述包含关系指所述上级缓存中存储内容均包含于所述下级缓存中。
8.根据权利要求1所述的缓存管理方法,其特征在于,发送所述采样取指请求至管理下级缓存的替换算法后,还包括:
当所述采样取指请求命中下级缓存时,返回命中的缓存块至上级缓存;
当所述采样取指请求在下级缓存缺失时,继续请求所述采样取指请求的指向的内容,将继续请求过程中命中的存储内容存储至所述下级缓存,并且返回继续请求时命中的存储内容至上级缓存。
9.根据权利要求8所述的缓存管理方法,其特征在于,所述根据所述采样的结果确定采样取指请求包括:确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据所述采样得到的;所述返回命中的缓存块至上级缓存包括返回带有来源标识的缓存块至所述上级缓存;所述返回继续请求时命中的存储内容中包括返回携带有来源标识的存储内容至所述上级缓存;所述缓存管理方法还包括:根据所述来源标识丢弃所述上级缓存接收到的所述缓存块或所述存储内容。
10.根据权利要求1所述的缓存管理方法,其特征在于,所述根据所述采样的结果确定采样取指请求包括:确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据采样得到的;发送所述采样取指请求至管理下级缓存的替换算法后,还包括根据来源标识确定是否继续执行以下至少一种:
当所述采样取指请求缺失时,继续请求所述采样取指请求的指向的内容;
当所述采样取指请求命中时,或者所述继续请求过程中命中时,返回命中的内容至上级缓存。
11.一种缓存管理装置,其特征在于,包括:
采样单元,适于从向上级缓存发送的多个取指请求中进行采样;
采样取指请求确定单元,适于根据所述采样的结果确定采样取指请求,所述采样取指请求包括所述采样得到的取指请求的取指地址;
缓存管理更新单元,适于发送所述采样取指请求至管理下级缓存的替换算法,以更新所述下级缓存中存储内容的被踢出优先级;
其中,所述上级缓存优先于所述下级缓存被读取。
12.根据权利要求11所述的缓存管理装置,其特征在于,所述采样单元包括以下至少一种采样子单元:
第一采样子单元,适于每隔第一预设数量的取指请求,进行所述采样;
第二采样子单元,适于每隔第二预设数量时钟周期,进行所述采样;
第三采样子单元,适于记录第三预设数量的历史取指请求,若新的取指请求与所述记录的历史取指请求相同,则进行所述采样。
13.根据权利要求11所述的缓存管理装置,其特征在于,所述采样取指请求确定单元适于对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求,所述预设的条件用于指示被采样的取指请求被访问的频繁程度。
14.根据权利要求11所述的缓存管理装置,其特征在于,所述采样取指请求确定单元适于对所述采样的结果进行判断,基于符合预设条件的所述采样的结果确定所述采样取指请求,所述预设条件包括以下至少一种:
所述采样的结果中取指地址不同于此前第四预设数量的采样的结果中取指地址;
所述采样的结果中取指地址命中指令缓存;
所述采样的结果中取指请求译码后的指令命中微指令缓存;
所述采样的结果中取指请求处于微指令缓存取指模式。
15.根据权利要求11所述的缓存管理装置,其特征在于,所述缓存管理更新单元,适于通过下级缓存中替换算法的专用接口,将所述采样取指请求发送至管理下级缓存的替换算法。
16.根据权利要求11所述的缓存管理装置,其特征在于,所述缓存管理更新单元,适于复用上级缓存与下级缓存之间的请求接口,在所述请求接口空闲时,发送所述采样取指请求至管理下级缓存的替换算法。
17.根据权利要求11所述的缓存管理装置,其特征在于,还包括:包含关系确定单元,适于在从向上级缓存发送的多个取指请求中进行采样之前,确定所述上级缓存与下级缓存为包含关系,所述包含关系指所述上级缓存中存储内容均包含于所述下级缓存中。
18.根据权利要求11所述的缓存管理装置,其特征在于,还包括:缺失处理单元,适于当所述采样取指请求在下级缓存缺失时,继续请求所述采样取指请求的指向的缓存块,将命中的存储内容存储至所述下级缓存;
返回单元,适于当所述采样取指请求命中下级缓存时,返回命中的缓存块至上级缓存,或者当下级缓存缺失时,返回继续请求时命中的存储内容至上级缓。
19.根据权利要求18所述的缓存管理装置,其特征在于,所述缓存管理更新单元包括来源标识单元,适于确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据所述采样得到的;所述返回继续请求时命中的存储内容中包括返回携带有来源标识的存储内容至所述上级缓存;所述返回单元适于返回带有来源标识的缓存块或存储内容至所述上级缓存;所述缓存管理装置还包括:丢弃单元,适于根据所述来源标识丢弃所述上级缓存接收到的缓存块或存储内容。
20.根据权利要求11所述的缓存管理装置,其特征在于,所述缓存管理更新单元包括来源标识单元,适于确定所述采样取指请求中的来源标识,所述来源标识指示所述采样取指请求为根据所述采样得到的;所述缓存管理装置还包括继续执行判断单元,适于根据来源标识确定是否继续执行以下至少一种:当所述采样取指请求缺失时,继续请求所述采样取指请求的指向的内容;当所述采样取指请求命中时,或者所述继续请求过程中命中时,返回命中的内容至上级缓存。
21.一种处理器,所述处理器包括如权利要求11至20任一项所述的缓存管理装置。
22.一种计算设备,其特征在于,所述计算设备包括如权利要求21所述的处理器。
23.一种计算设备,其特征在于,所述计算设备包括采样逻辑,所述采样逻辑适于从向上级缓存发送的多个取指请求中进行采样;根据所述采样的结果确定采样取指请求,所述采样取指请求包括所述采样得到的取指请求的取指地址;发送所述采样取指请求至管理下级缓存的替换算法,以更新所述下级缓存中存储内容的被踢出优先级;其中,所述上级缓存和所述下级缓存是所述计算设备的缓存,所述上级缓存优先于所述下级缓存被读取。
24.根据权利要求23所述的计算设备,其特征在于,所述上级缓存包括指令缓存,所述采样逻辑位于所述指令缓存。
25.根据权利要求23所述的计算设备,其特征在于,所述计算设备包括分支预测单元,所述采样逻辑位于所述分支预测单元。
26.一种计算机设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序时执行权利要求1至10中任一项所述的缓存管理方法。
27.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序运行时执行权利要求1至10中任一项所述的缓存管理方法中信息提取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011498787.0A CN112612728B (zh) | 2020-12-17 | 2020-12-17 | 缓存管理方法及装置、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011498787.0A CN112612728B (zh) | 2020-12-17 | 2020-12-17 | 缓存管理方法及装置、设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612728A true CN112612728A (zh) | 2021-04-06 |
CN112612728B CN112612728B (zh) | 2022-11-11 |
Family
ID=75240901
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011498787.0A Active CN112612728B (zh) | 2020-12-17 | 2020-12-17 | 缓存管理方法及装置、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612728B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201219A (zh) * | 2021-12-21 | 2022-03-18 | 海光信息技术股份有限公司 | 指令调度方法、指令调度装置、处理器及存储介质 |
CN117271391A (zh) * | 2023-06-20 | 2023-12-22 | 海光信息技术股份有限公司 | 缓存结构和电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6349365B1 (en) * | 1999-10-08 | 2002-02-19 | Advanced Micro Devices, Inc. | User-prioritized cache replacement |
CN1804816A (zh) * | 2004-12-29 | 2006-07-19 | 英特尔公司 | 用于程序员控制的超高速缓冲存储器线回收策略的方法 |
CN102841865A (zh) * | 2011-06-24 | 2012-12-26 | 上海芯豪微电子有限公司 | 高性能缓存系统和方法 |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
CN103870394A (zh) * | 2012-12-13 | 2014-06-18 | Arm有限公司 | 基于保留优先级的缓存替换策略 |
CN104756090A (zh) * | 2012-11-27 | 2015-07-01 | 英特尔公司 | 提供扩展的缓存替换状态信息 |
US20160092373A1 (en) * | 2014-09-25 | 2016-03-31 | Intel Corporation | Instruction and logic for adaptive dataset priorities in processor caches |
CN107479860A (zh) * | 2016-06-07 | 2017-12-15 | 华为技术有限公司 | 一种处理器芯片以及指令缓存的预取方法 |
CN110806900A (zh) * | 2019-04-30 | 2020-02-18 | 海光信息技术有限公司 | 一种访存指令处理方法及处理器 |
-
2020
- 2020-12-17 CN CN202011498787.0A patent/CN112612728B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6349365B1 (en) * | 1999-10-08 | 2002-02-19 | Advanced Micro Devices, Inc. | User-prioritized cache replacement |
CN1804816A (zh) * | 2004-12-29 | 2006-07-19 | 英特尔公司 | 用于程序员控制的超高速缓冲存储器线回收策略的方法 |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
CN102841865A (zh) * | 2011-06-24 | 2012-12-26 | 上海芯豪微电子有限公司 | 高性能缓存系统和方法 |
CN104756090A (zh) * | 2012-11-27 | 2015-07-01 | 英特尔公司 | 提供扩展的缓存替换状态信息 |
CN103870394A (zh) * | 2012-12-13 | 2014-06-18 | Arm有限公司 | 基于保留优先级的缓存替换策略 |
US20160092373A1 (en) * | 2014-09-25 | 2016-03-31 | Intel Corporation | Instruction and logic for adaptive dataset priorities in processor caches |
CN107479860A (zh) * | 2016-06-07 | 2017-12-15 | 华为技术有限公司 | 一种处理器芯片以及指令缓存的预取方法 |
CN110806900A (zh) * | 2019-04-30 | 2020-02-18 | 海光信息技术有限公司 | 一种访存指令处理方法及处理器 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201219A (zh) * | 2021-12-21 | 2022-03-18 | 海光信息技术股份有限公司 | 指令调度方法、指令调度装置、处理器及存储介质 |
CN117271391A (zh) * | 2023-06-20 | 2023-12-22 | 海光信息技术股份有限公司 | 缓存结构和电子设备 |
CN117271391B (zh) * | 2023-06-20 | 2024-04-16 | 海光信息技术股份有限公司 | 缓存结构和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112612728B (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110275841B (zh) | 访问请求处理方法、装置、计算机设备和存储介质 | |
US9009414B2 (en) | Prefetch address hit prediction to reduce memory access latency | |
US6678795B1 (en) | Method and apparatus for memory prefetching based on intra-page usage history | |
US8423715B2 (en) | Memory management among levels of cache in a memory hierarchy | |
US8683136B2 (en) | Apparatus and method for improving data prefetching efficiency using history based prefetching | |
EP2097809B1 (en) | Methods and apparatus for low-complexity instruction prefetch system | |
KR20110025188A (ko) | 스토어 할당 캐시 미스에서 에러 복구를 위한 스토어 버퍼 사용 | |
JP2013504815A (ja) | データストリームのためのストアアウェアプリフェッチ | |
US20150143045A1 (en) | Cache control apparatus and method | |
US10489296B2 (en) | Quality of cache management in a computer | |
US20210182214A1 (en) | Prefetch level demotion | |
CN112612728B (zh) | 缓存管理方法及装置、设备 | |
CN110806900B (zh) | 一种访存指令处理方法及处理器 | |
US8880847B2 (en) | Multistream prefetch buffer | |
US11249762B2 (en) | Apparatus and method for handling incorrect branch direction predictions | |
CN116909943B (zh) | 一种缓存访问方法、装置、存储介质及电子设备 | |
CN112559389A (zh) | 存储控制装置、处理装置、计算机系统和存储控制方法 | |
CN114925001A (zh) | 处理器、页表预取方法、电子设备 | |
CN118245186A (zh) | 缓存管理方法、缓存管理装置、处理器和电子装置 | |
CN118245218A (zh) | 缓存管理方法、缓存管理装置、处理器和电子装置 | |
US20220171712A1 (en) | L1d to l2 eviction | |
US10372902B2 (en) | Control flow integrity | |
US9983874B2 (en) | Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling | |
US11449428B2 (en) | Enhanced read-ahead capability for storage devices | |
JP2003510685A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |