CN114616552B - 缓存存储器和分配写操作的方法 - Google Patents
缓存存储器和分配写操作的方法Info
- Publication number
- CN114616552B CN114616552B CN201980101851.6A CN201980101851A CN114616552B CN 114616552 B CN114616552 B CN 114616552B CN 201980101851 A CN201980101851 A CN 201980101851A CN 114616552 B CN114616552 B CN 114616552B
- Authority
- CN
- China
- Prior art keywords
- write operation
- operation stream
- stream
- historical
- target
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
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
本申请实施例公开了缓存存储器和分配写操作的方法,涉及存储技术领域,能够减小对SW采用静态的策略控制写分配或写不分配造成的缓存性能下降的影响。该缓存存储器包括:探测器,用于从接收的写操作中探测到目标写操作流,目标写操作流中所包含的多个写操作的地址具有规律性,目标写操作流是指对全修改缓存行进行的写操作;寄存器,用于存储至少一个历史写操作流的信息,至少一个历史写操作流用于指示目标写操作流之前的写操作流;仲裁器,用于根据历史写操作流的信息确定是否为目标写操作流分配缓存行。本申请实施例用于确定是否为写操作流分配缓存行。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种缓存存储器和分配写操作的方法。
背景技术
随着处理器设计和工艺节点的快速发展,为了减少处理器不必要的主存访问,缓存中需要存放最近常使用到的指令或数据,让处理器绝大多数的访问均在缓存完成。其中,处理器发送给缓存的写操作要写入的数据未在缓存中存储时,认为缓存发生缺失,这种情况下对写操作有两种分配策略:写分配和写不分配。写分配是在缓存发生缺失时,将写操作要写入的数据写入缓存中;写不分配是在缓存发生缺失时,不将写操作要写入的数据写入缓存中,而是直接写入主存中。
如果处理器运行程序过程中,多个写操作的地址具有规律性,例如多个写操作的地址递增或递减,那么对于这多个写操作组成的写操作流(streaming write,SW)来说,是否为该SW分配缓存行,以将该SW的数据写入缓存中,目前的方案有:如图1所示为缓存存储器的一种结构图,通过SW探测器检测到多个写操作的地址具有规律性时,预测后续接收到的多个写操作的地址也具有规律性,后续接收到的这多个写操作即为SW,则SW检测器为该后续接收到的多个写操作添加标签。当寄存器配置开关检测到添加有标签的SW时,根据预置的策略确定是否为该SW分配缓存行。该预置的策略例如可以是:由程序员人为去设置寄存器配置开关的打开或关闭。当寄存器配置开关打开时,可以为添加有标签的SW分配缓存行,当寄存器配置开关关闭时,不为添加有标签的SW分配缓存行。
换句话说,目前的方案是通过寄存器配置开关预置的策略控制一次性为后续接收到的多个写操作按照同样的预置策略确定是否分配缓存行。但是这种策略只有一种,是固定不变的,且SW写入缓存的数据由于其重用性和数据量等特性都不可预知,若将该SW的数据写分配到缓存中,如果缓存需释放缓存空间时,可能会将常用到的数据从缓存中剔除,导致缓存性能下降。而且当SW的数据采用写分配被写入缓存但是不再使用时,也容易造成缓存污染,导致缓存性能下降;若将写SW的数据采用写不分配不写到缓存中,如果该SW的数据需要重用时又会导致缓存缺失,同样会造成缓存性能下降。
发明内容
本申请实施例提供一种缓存存储器,能够减小对SW采用静态的策略控制写分配或写不分配造成的缓存性能下降的影响。
为达到上述目的,本申请实施例采用如下技术方案:
第一方面,提供一种缓存存储器,包括:探测器,用于从接收的写操作中探测到目标写操作流,目标写操作流中所包含的多个连续的写操作的地址具有规律性;寄存器,用于存储至少一个历史写操作流的信息,至少一个历史写操作流用于指示目标写操作流之前的写操作流;仲裁器,用于根据历史写操作流的信息确定是否为目标写操作流分配缓存行。
本申请通过在寄存器中记录历史写操作流的信息,当接收到目标写操作流时,是否对目标写操作流执行写分配,可以根据历史写操作流的信息进行判定。由于历史写操作流的信息是随着程序或用例不断变化的,不同目标写操作流到来的时间点不同,其历史写操作流的信息也可能不同,因此,这种根据历史写操作流的信息确定是否为目标写操作流分配缓存,可实现根据动态变化的历史写操作流的信息确定是否为目标写操作流分配缓存行,或者说可实现根据动态变化的程序特性确定是否为目标写操作流分配缓存行,可提升缓存性能。
在一种可能的设计中,探测器具体用于:在接收到的写操作中探测到d个连续的写操作的地址具有规律性时,将从第d+1个写操作开始的m个写操作所组成的写操作流作为目标写操作流,d和m均为大于1的正整数。换句话说,当接收到写操作中探测到d个连续的写操作的地址具有规律性时,预测后续从第d+1个写操作开始接收到的m个写操作所组成的写操作流的地址也具有规律性,因此,可以将从第d+1个写操作开始的m个写操作所组成的写操作流作为目标写操作流,以确定是否为目标写操作流分配缓存行。
在一种可能的设计中,至少一个历史写操作流的信息包括至少一个历史写操作流的平均长度和至少一个历史写操作流的重用信息;仲裁器,用于根据至少一个历史写操作流的平均长度和至少一个历史写操作流的重用信息确定是否为目标写操作流分配缓存行。其中,利用平均长度可判断最近程序运行时的写操作流的长度情况,进而可根据平均长度判断最近写入缓存的写操作流的长度情况,进而可预测缓存剩余的空间情况,因此,至少一个历史写操作流的平均长度可以作为确定是否对目标写操作流分配缓存行的一个指标;利用重用信息可判断最近程序运行时对历史写操作流分配的缓存行的重用情况,从而可判断如果为目标写操作流分配缓存行时的重用情况,因此,至少一个历史写操作流的重用信息可以作为确定是否对目标写操作流分配缓存行的一个指标。其中,至少一个历史写操作流的平均长度是至少一个历史写操作流的长度的平均值;至少一个历史写操作流的重用信息是为至少一个历史写操作流分配的缓存行中被重用的缓存行的比例。
在一种可能的设计中,仲裁器包括随机概率发生器和计算器;随机概率发生器,用于随机生成概率值;计算器,用于根据至少一个历史写操作流的平均长度、至少一个历史写操作流的重用信息和概率值确定是否为目标写操作流分配缓存行。
在一种可能的设计中,计算器具体用于:若至少一个历史写操作流的平均长度小于长度阈值,且概率值小于历史写操作流的重用信息,则确定为目标写操作流分配缓存行。在本申请中,概率值虽然是随机抽取的,也即是当目标写操作流到来时,目标写操作流是否写分配是随机决定的,但是重用信息会控制目标写操作流分配的概率。当重用信息较高时,随机抽取的概率值小于重用信息的几率增大。也就是说,当历史写操作流的平均长度较低,缓存中剩余空间可能较大;且重用信息较高时,为目标写操作流分配缓存的概率越高,目标写操作流若写分配到缓存中,目标写操作流被重用的比例越高。
在一种可能的设计中,计算器具体用于:若至少一个历史写操作流的平均长度小于长度阈值,且概率值大于或等于历史写操作流的重用信息,则确定不为目标写操作流分配缓存行。即当历史写操作流的平均长度较低,缓存中剩余空间虽然可能较大,但是概率值大于或等于历史写操作流的重用信息,因此,认为历史写操作流写分配到缓存中时,被重用的比例较低,因此,可以确定不为目标写操作流分配缓存行。
在一种可能的设计中,计算器具体用于:若至少一个历史写操作流的平均长度大于长度阈值,则确定不为目标写操作流分配缓存行。即当至少一个历史写操作流的平均长度大于长度阈值时,认为历史写操作流的平均长度较高,写分配到缓存中时,缓存中剩余空间可能较小,且目标写操作流的长度也可能较大,因此,可以确定不为目标写操作流分配缓存行。
在一种可能的设计中,缓存存储器还包括清除器;清除器,用于在探测器未探测到写操作流的时间超过时间阈值时,指示寄存器清除至少一个历史写操作流的信息。这是由于距离相当长时间还未接收到一个写操作流时,可能意味着程序的变化,需要对下一段程序重新记录历史写操作流的信息。
在一种可能的设计中,目标写操作流中所包含的多个写操作的地址具有规律性是指多个写操作的地址递增或递减。
第二方面,提供一种分配写操作的方法,包括:从接收到的写操作中探测到目标写操作流,目标写操作流中所包含的多个连续的写操作的地址具有规律性;根据至少一个历史写操作流的信息确定是否为目标写操作流分配缓存行,至少一个历史写操作流用于指示目标写操作流之前的写操作流。该写分配处理方法达到的有益效果可以参见上述对缓存存储器描述的有益效果。
在一种可能的设计中,从接收到的写操作中探测到目标写操作流包括:在接收到的写操作中探测到d个连续的写操作的地址具有规律性时,将从第d+1个写操作开始的m个写操作所组成的写操作流作为目标写操作流,d和m均为大于1的正整数。
在一种可能的设计中,至少一个历史写操作流的信息包括至少一个历史写操作流的平均长度和至少一个历史写操作流的重用信息;根据至少一个历史写操作流的信息确定是否为目标写操作流分配缓存行包括:根据至少一个历史写操作流的平均长度和至少一个历史写操作流的重用信息确定是否为目标写操作流分配缓存行。其中,至少一个历史写操作流的平均长度是至少一个历史写操作流的长度的平均值;至少一个历史写操作流的重用信息是为至少一个历史写操作流分配的缓存行中被重用的缓存行的比例。
在一种可能的设计中,根据至少一个历史写操作流的平均长度和至少一个历史写操作流的重用信息确定是否为目标写操作流分配缓存行包括:随机生成概率值;根据至少一个历史写操作流的平均长度、至少一个历史写操作流的重用信息和概率值确定是否为目标写操作流分配缓存行。
在一种可能的设计中,根据至少一个历史写操作流的平均长度、至少一个历史写操作流的重用信息和概率值确定是否为目标写操作流分配缓存行包括:若至少一个历史写操作流的平均长度小于长度阈值,且概率值小于历史写操作流的重用信息,则确定为目标写操作流分配缓存行。
在一种可能的设计中,根据至少一个历史写操作流的平均长度、至少一个历史写操作流的重用信息和概率值确定是否为目标写操作流分配缓存行包括:若至少一个历史写操作流的平均长度小于长度阈值,且概率值大于或等于历史写操作流的重用信息,则确定不为目标写操作流分配缓存行。
在一种可能的设计中,根据至少一个历史写操作流的平均长度、至少一个历史写操作流的重用信息和概率值确定是否为目标写操作流分配缓存行包括:若至少一个历史写操作流的平均长度大于长度阈值,则确定不为目标写操作流分配缓存行。
在一种可能的设计中,该方法还包括:在未探测到写操作流的时间超过时间阈值时,清除至少一个历史写操作流的信息。
在一种可能的设计中,目标写操作流中所包含的多个写操作的地址具有规律性是指多个写操作的地址递增或递减。
第三方面,提供一种处理装置,该处理装置包括上述第一方面或第一方面的任一种可能的设计中的缓存存储器以及处理器。
第四方面,提供一种芯片,该芯片包括上述第一方面或第一方面的任一种可能的设计中的缓存存储器,或该芯片包括上述第三方面提供的处理装置。
第五方面,提供一种设备,该设备包括上述第一方面或第一方面的任一种可能的设计中的缓存存储器,或该设备包括上述第三方面提供的处理装置,或该设备包括上述第四方面提供的芯片。
附图说明
图1为一种缓存存储器的结构示意图;
图2为本申请实施例提供的一种处理装置的结构示意图;
图3为本申请实施例提供的一种缓存存储器的结构示意图;
图4为本申请实施例提供的一种缓存存储器的结构示意图;
图5为本申请实施例提供的一种仲裁器的结构示意图;
图6为本申请实施例提供的一种缓存存储器的结构示意图;
图7为本申请实施例提供的一种清除器的结构示意图;
图8为本申请实施例提供的一种训练器的结构示意图;
图9为本申请实施例提供的一种分配写操作的方法的流程示意图。
具体实施方式
为了便于理解,示例的给出了部分与本申请实施例相关概念的说明以供参考。如下所示:
缓存(cache):缓存的设计主要是利用了局域性原理,即程序不会均匀的访问所有的代码和数据,而是常常重复使用最近使用过的数据和指令。高速缓存即是将程序最近常使用到的指令或数据放入缓存中,将不常使用的指令或数据从缓存中剔除,从而让处理器绝大多数访问均在缓存层完成。缓存通常可分为一级缓存(L1 cache)、二级缓存(L2cache)和三级缓存(L3 cache),通常,将L3 cache称为最后一级缓存(Last Level Cache,LLC)。
缓存行(cache line):关于缓存行存在数据粒度和物理粒度两个概念,1、数据粒度:cache line是cache和内存交换数据的最小单位,也可以理解为是cache中的最小缓存单位。cache line一般由有效位(valid)、标签(tag)和数据三部分组成,其中,有效位用来标记该缓存行中的数据是否有效,标签用于指示该缓存行对应的内存的地址。2、物理粒度:指物理缓存中最小的存储单元,该存储单元对应于上述数据粒度的缓存行。
全修改缓存行(fully modified cache line):数据粒度概念,针对某个缓存行,如果该缓存行中所有的数据均会被修改(通常由处理器进行修改),则该缓存行称为全修改缓存行,否则,称为非全修改缓存行。比如,针对一个64byte的缓存行,如果该64byte的缓存行中的数据都会被修改,则该64byte的缓存行为全修改缓存行。对于全修改缓存行,若采用写分配策略,不用访问主存即可将写操作的数据写入缓存,可节省主存带宽。
写操作流(streaming write/store):也可以称为写操作序列流,写操作流包含多个连续的写操作,每个写操作指示对缓存行中所有的数据进行修改,即修改的是全修改缓存行;如果不是对缓存行中所有的数据进行修改,比如对缓存行中部分数据进行修改,则不能称作写操作。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请实施例中,“示例的”一词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中,“的(of)”,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例提出一种缓存存储器,可以应用于对写操作流进行自适应的写分配处理的应用场景中,即采用动态的分配策略,以提高缓存性能。
如图2所示,本申请实施例提供了一种处理装置20,该处理装置20的硬件结构可以包括多个处理器21、多个处理器21对应的专用缓存22、多个处理器21共用的LLC 23以及主存储器24。处理器21用于运行主存储器24中的指令以及处理软件中的数据等。专用缓存22可被对应的处理器所访问,专用缓存包括L1缓存和L2缓存等;LLC 23可被多个处理器21共同访问。主存储器24是计算机类的设备中重要的部件之一,它是与处理器21进行沟通的桥梁。处理装置20中所有程序的运行都是在主存储器24中进行的,其作用是用于暂时存放处理器21中的运算数据,以及与硬盘等外部存储器交换的数据。
本申请实施例提供一种缓存存储器,通过对处理装置20中的缓存中的硬件结构进行更新,例如对LLC中的硬件结构进行更新,使得该缓存存储器可以实现:在检测到目标写操作流时,可以根据历史写操作流的信息判断是否为目标写操作流分配缓存行。由于历史写操作流的信息随着历史写操作流的变化而变化,历史写操作流随着程序的变化而变化,因此,每次目标写操作流到来时,可以根据当前的历史写操作流的信息动态确定是否为目标写操作流分配缓存行,使得是否为目标写操作流分配缓存行随着历史写操作流的信息变化,从而使得是否写分配符合当前的程序变化,提升缓存性能,减少缓存污染。
下面对本申请实施例涉及到的硬件模块进行介绍,以缓存存储器包括在LLC 23中为例。本申请实施例虽然以缓存存储器包括在LLC23中为例进行说明,可以理解的是,缓存存储器还可以包括在L1缓存或者L2缓存中,本申请不做限定。
如图3所示,该LLC 23包含的硬件模块可以包括探测器(detector)231、寄存器232以及仲裁器(arbitrator)233。探测器231的一端与寄存器的232的一端连接,寄存器232的另一端与仲裁器233连接。
探测器231,用于从处理器21接收的写操作中探测到目标写操作流,目标写操作流中所包含的多个写操作的地址具有规律性,目标写操作流是指对全修改缓存行进行的写操作;
其中,多个写操作的地址具有规律性也可以理解为多个写操作的地址满足预设规律。
寄存器232,用于存储至少一个历史写操作流的信息,至少一个历史写操作流用于指示所述目标写操作流之前的写操作流;历史写操作流的信息用于指示处理器对历史写操作流进行读写访问时的特征信息;
仲裁器233,用于根据历史写操作流的信息确定是否为目标写操作流分配缓存行,其中,这里分配的缓存行是指缓存中物理的缓存行,即缓存中的存储单元。
缓存存储器还可以包括用于存储的读写控制器。当仲裁器233确定为目标写操作流分配缓存行这一结果时,可以将该结果发送给读写控制器,由读写控制器根据缓存空间分配缓存行。当仲裁器233确定不为目标写操作流分配缓存行这一结果时,即直接将目标写操作流的数据发送给主存储器24。当主存储器24接收到缓存存储器发送的数据时,将数据写入主存储器24中。
因此,本申请提供的缓存存储器,通过在寄存器中记录历史写操作流的信息,历史写操作流的信息可以根据历史运行的程序而变化。由于不同目标写操作流到来的时间点不同,其历史写操作流的信息也可能不同,因此仲裁器可以根据当前的历史写操作流的信息确定是否为目标写操作流分配缓存行,这样就实现了根据动态变化的历史写操作流的信息确定是否为目标写操作流分配缓存行,或者说可实现根据动态变化的程序特性确定是否为目标写操作流分配缓存行,可提升缓存性能。
下面对上述硬件模块进一步进行介绍。
探测器231:在一些实施例中,探测器231可以用于:在接收到的写操作中探测到d个连续的写操作的地址具有规律性时,将从第d+1个写操作开始的m个写操作所组成的写操作流作为目标写操作流,d和m均为大于1的正整数。
在一些实施例中,若探测器231确定接收到的写操作中d个连续的写操作的地址具有规律性,则为后续接收到的m个写操作添加标签。
具体来说,如果探测器231根据LLC 23接收到的多个写操作对应的地址,监测到一定地址规律的写操作时,例如,地址规律呈现等差数列形式时(例如可以是写操作的地址递增或者递减),探测器231预测后续可能还会继续有一定地址规律的写操作下发,探测器231可以对后续继续接收到的写操作打上SW标签。本申请实施例中,将后续接收到的打上SW标签的写操作组成的写操作流作为目标写操作流。示例性的,当探测器231监测到d个连续的写操作(S0,S1,…,Sd-1)的地址呈现一定的地址规律时,探测器231可以从Sd开始(包括Sd)的m个写操作打上SW标签,即给Sd,Sd+1,…,Sn都打上SW标签,n-d=m,Sd,Sd+1,…,Sn即为目标写操作流。
在一些实施例中,探测器231还可以用于向寄存器232发送第一指示,第一指示用于指示探测器231探测到目标写操作流。
寄存器232:如图4所示,寄存器232中可以维护有SW表(SW table),该SW table中记录有在目标写操作流之前接收到的至少一个历史写操作流信息。
在一些实施例中,至少一个历史写操作流的信息包括至少一个历史写操作流的平均长度avg_L和至少一个历史写操作流的重用信息P;寄存器232可以根据接收到的第一指示,读取历史写操作流的信息中的至少一个历史写操作流的平均长度和至少一个历史写操作流的重用信息输出给仲裁器233,仲裁器233可以用于根据至少一个历史写操作流的平均长度和至少一个历史写操作流的重用信息确定是否为目标写操作流分配缓存行。
在一些实施例中,至少一个历史写操作流的平均长度是至少一个历史写操作流的长度的平均值;即至少一个历史写操作流的平均长度可以理解为在探测器231探测到目标写操作流之前,探测到的带SW标签的写操作数量与探测到的写操作流数量的比值;
至少一个历史写操作流的重用信息是为至少一个历史写操作流分配的缓存行中被重用的缓存行的比例。
在一些实施例中,仲裁器233判断是否为目标写操作流分配缓存行时,可以根据SWtable中的avg_L和P等是否满足条件,确定是否为目标写操作流分配缓存行。如何确定是否为目标写操作流分配缓存行将在后文中对仲裁器233的阐述中介绍。下面先对SW table的各表项进行说明。
SW table除avg_L以及P以外,SW table中还可以包括一些用于辅助寄存器232计算得到avg_L以及P的一些表项,以及其他的一些表项。
在一个实施例中,SW table的表项可以如表1所示:
表1
1)指示SW序列寻址的指示(index)。每个index的值以及对应的表项的值为一条table条目。在一些实施例中,index的组成可以包括:表征发送SW的中央处理单元CPU(处理器)的指示,或者说表征SW源头的指示,记为scr[rs];表征已接收到的SW的地址区间的指示,记为addr[ra];表征已接收到的SW的数值的指示,或者说表征已接收到的SW的数值的ZV属性(zero value),即写操作的值是否为0。按照这种组成,index可以以二进制表示,例如index占用13bits,其中2bits表示scr[rs],10bits表示addr[ra],1bit表示ZV属性。SWtable中可以有多个不同的index。不同的index对应的程序类型不同。当新的目标写操作流到来时,可根据index查询得到目标写操作流对应的table条目中的信息。
2)目标写操作流是否正在发送的指示(SW)。也可以说,SW table中的SW表项表示当前是否有符合index表项中的一个index值,且带有SW标签的目标写操作流正在发送。当探测器231监测到目标写操作流正在发送时,如果目标写操作流符合index表项中的一个index值,会触发SW table中该index值对应的SW的值呈上升沿。例如将SW的值由0置为1,当该目标写操作流接收结束时,SW的值呈下降沿,例如将SW的值由1置为0,处于接收目标写操作流的过程中时,SW的值可以一直为1。
3)从上一次清零历史写操作流的信息开始接收到的写操作流数量(num)。即num表示从上次清零SW table的某些表项的值开始,到目前为止接收到多少个写操作流,包括具有规律性地址的写操作流数量和不具有规律性地址的写操作流数量。
4)从上一次清零历史写操作流的信息开始所有写分配的写操作流总共分配的缓存行中被重用的缓存行数量(reuse_p),即分配的缓存行中有多少缓存行被重用。该重用可以是对缓存行的写操作或者读操作。
5)从上一次清零历史写操作流的信息开始所有写分配的写操作流总共分配的缓存行数量(alloc_p),即上一次清零历史写操作流的信息开始,所有写分配的写操作流总共向缓存中写入了多少条缓存行。
6)从上一次清零历史写操作流的信息开始接收到的带SW标签的写操作数量(total_L)。该项的统计与带SW标签的写操作是否分配到缓存无关。这样,avg_L=total_L/num。
7)为当前正在接收的目标写操作流已分配的缓存行数量的指示(anum_L)。当新的目标写操作流到来时该指示的值可以清零,每为正在接收的目标写操作流分配一条缓存行,该指示的值可以加1。
8)可为目标写操作流分配的最大缓存行数量(amax_L),即可为目标写操作流允许分配到缓存的缓存行数量的最大值。
9)距离上次接收到目标写操作流的第一时间间隔(T)。T也可以表示固定的时间间隔计数,即每隔固定时间间隔接收到一个目标写操作流。
10)清零历史写操作流的信息中的至少一项的第二时间间隔(th_T)。
11)长度阈值th_L,用于判断是否为目标写操作流分配缓存行。长度阈值th_L可以包括第一长度阈值th1_L和第二长度阈值th2_L,th1_L<th2_L。th_L可以理解为是否为目标写操作流分配缓存行的低长度阈值,th2_L可以理解为是否为目标写操作流分配缓存行的高长度阈值。
需要说明的是,上述表项可以在每个table条目中都有一个单独的值,即对应于每个index,都有一个单独的表项组合,或者说域段组合,例如每个index对应的第一时间间隔均不相同;或者,上述表项也可以由所有table条目共用一个单独的值,也即是对应于所有的index,共用同一个域段值,此时,该表项不对index中的属性进行区分,例如每个index对应的th1_L的值或者amax_L的值均相同。
随着目标写操作流的接收,该SW table也需要相应地更新,该更新的动作可以发生在探测器231识别到目标写操作流时、探测器231识别到接收完目标写操作流时、LLC为目标写操作流分配缓存行完成时以及LLC为目标写操作流分配缓存行的过程中。
示例性的,探测器231识别到目标写操作流时,探测器231可以将正在有具有规律性地址的目标写操作流正在发送的第一指示发送给寄存器232,并将目标写操作流表征源的src[rs]、表征访问的地址范围的addr[ra]以及目标写操作流将要写入的数据的ZV属性通知给寄存器232。当寄存器232确定目标写操作流表征源的src[rs]、表征访问的地址范围的addr[ra]以及目标写操作流的数值的ZV属性与某一第一index指示的src[rs]、addr[ra]以及ZV属性匹配时,寄存器41更新该index对应的table条目中的历史信息。更新的表项包括:将表项SW的值更新为具有规律性地址的SW正在发送的指示,例如将上述SW table中的表项SW的值由0置为1。例如具体可以是探测器231在为目标写操作流的第一个写操作打上SW标签时,寄存器232接收到探测器231的第一指示,于是将表项SW的值置为1。此外,num的值也需要加1;当探测器231每为目标写操作流的写操作打上一个SW标签时,寄存器41将在SW table中的total_L的值相应加1。而且,寄存器41这时也可以将第一index对应的table条目中avg_L、th1_L、th1_L、amax_L以及P的值读取出来发送给仲裁器233。可以理解的,T的值也相应变化。
当探测器231识别到接收完目标写操作流带SW标签的写操作时,SW table中avg_L的值也随着接收完目标写操作流时num的值和total_L的值相应变化。
在为目标写操作流分配缓存行的过程中,LLC为目标写操作流每分配一个缓存行,SW table可更新SW table中为目标写操作流已分配的缓存行数量的指示anum_L,即对上述SW table中的anum_L的值实时进行更新。示例性的,开始接收目标写操作流的写操作时,该anum_L的初始值为0,LLC为目标写操作流分配第一个缓存行时,anum_L的值为1,此后每为目标写操作流分配一个缓存行,anum_L的值加1。
在为目标写操作流分配缓存行完成时,可以在当前的alloc_p的基础上加上目标写操作流对应的anum_L的值,即更新alloc_p的值。在目标写操作流的写操作的数据缓存结束后,随着目标写操作流写入LLC的数据的重用情况(包括写操作或者读操作),SW table中的重用信息P也需要实时更新。
仲裁器233:如图4所示,仲裁器233可以包括计算器2331以及随机概率发生器2332;
随机概率发生器2332,用于随机生成概率值P';
在一些实施例中,随机概率发生器可以被用于判断随机生成的概率值和重用信息P的大小,并生成第二指示,第二指示用于指示概率值是否小于重用信息P;
计算器2331,用于根据至少一个历史写操作流的平均长度avg_L、至少一个历史写操作流的重用信息P和概率值P'确定是否为所述目标写操作流分配缓存行。
在一些实施例中,计算器2331可以根据至少一个历史写操作流的平均长度avg_L以及第二指示生成第三指示,第三指示用于指示为目标写操作流是否分配缓存行。
在一些实施例中,计算器2331用于确定是否为目标写操作流分配缓存行的原理可以为:
若至少一个历史写操作流的平均长度avg_L小于长度阈值th_T,且所述概率值P'小于所述历史写操作流的重用信息P,则确定为所述目标写操作流分配缓存行。即第二指示用于指示概率值小于重用信息P,第三指示用于指示为目标写操作流分配缓存行;
若至少一个历史写操作流的平均长度avg_L小于长度阈值th_T,且概率值P'大于或等于所述历史写操作流的重用信息P,则确定不为所述目标写操作流分配缓存行。即第二指示用于指示概率值P'大于或等于重用信息P,第三指示用于指示不为目标写操作流分配缓存行;
若至少一个历史写操作流的平均长度avg_L大于长度阈值th_T,则确定不为目标写操作流分配缓存行。即第三指示用于指示不为目标写操作流分配缓存行。由此,随着程序的变化,SW table中的表项的值也会相应变化,平均长度avg_L和长度阈值th_T也会相应变化,且概率值P'和重用信息P会控制目标写操作流分配的概率,可使得目标写操作流是否写分配随着程序的变化而变化,可以解决一种固定的写分配机制无法适应程序行为变化的问题。
具体来说,在一些实施例中,可以将写操作流称为一个序列时,序列的长度分为3种长度区间,短序列区间、长序列区间,和介于短序列区间和长序列区间的中等长度区间,区间之间的大小为:短序列区间<中等长度区间<长序列区间。上文中已经提到,长度阈值th_L可以包括第一长度阈值th1_L和第二长度阈值th2_L,th1_L<th2_L,因此是否写分配存在以下多种情况:
若avg_L<th1_L,则可以认为从上次清零历史写操作流的信息到在接收到目标写操作流之前的写操作流的长度较小,或者说都属于短序列区间,缓存中还可能剩余较多的缓存空间。但是目标写操作流也有可能属于长序列区间,也有可能缓存中的剩余缓存空间不够为目标写操作流分配缓存上,因此,在一些实施例中,若avg_L<th1_L,则可以以一定的概率,即以P'和P确定是否为目标写操作流分配缓存行;即随机概率发生器2332随机抽取的概率值P'小于P时,确定为目标写操作流分配缓存行,当该P'大于或等于P时,确定不为目标写操作流分配缓存行;
若th1_L≤avg_L<th2_L,可以认为从上次清零历史写操作流的信息到在接收到目标写操作流之前的写操作流的长度都处于中等长度区间,那么目标写操作流也很有可能属于中等长度区间,也有可能属于长序列区间,这时,缓存中的剩余缓存空间也可能不够目标写操作流分配缓存行,在一些实施例中,仍然可以以P'和P确定是否为目标写操作流分配缓存行,这里是否分配的实现可以参见上述avg_L<th1_L的情况中的描述;
若avg_L≥th2_L,可以认为从上次清零历史信息到在接收到目标写操作流之前的写操作流的长度都处于长序列区间,那么目标写操作流为长序列的概率较大,因此缓存中剩余的缓存空间可能不够为目标写操作流分配缓存行,这时,仲裁器233确定不为目标写操作流分配缓存行。
在本申请实施例中,概率值虽然是随机抽取的,也即是当目标写操作流到来时,目标写操作流是否写分配是随机决定的,但是重用信息会控制目标写操作流分配的概率。当历史信息中的重用信息较低时,说明以前接收到的写操作流基本没有被重用,因此推测此时的目标写操作流大概率也不会再被访问,也即是倾向于不分配到缓存。本申请通过比较随机抽取的概率值和重用信息实现,重用信息越小,随机抽取的概率值大于或等于重用信息的几率增大,那么目标写操作流分配进缓存的概率就越低。类似的,当重用信息较高时,随机抽取的概率值小于重用信息的几率增大,目标写操作流分配进缓存的概率也就越高。换句话说,某一个特定程序(通过index识别)的重用特性在某一段时间内(由于历史信息定期清除)基本是一致的(局域性原理),本申请可以根据这个程序的历史重用情况推测将来的重用情况,当目标写操作流符合某一历史重用高的index时,将目标写操作流大概率分配到缓存,而目标写操作流也会大概率再被使用到,因此,本申请实施例可为重用信息高的程序提高缓存命中率。
基于以上原理,在一些实施例中,本申请实施例中的仲裁器233内部的硬件电路结构可以如图5所示。即仲裁器233中的计算器2331可以包括多个数值比较器以及多个逻辑门器件。参考图5,计算器2331可以包括数值比较器A、数值比较器B、数值比较器C、二输入与门D、二输入与门E、三输入与门F、二输入或门G以及非门H;仲裁器233中的随机概率发生器2332可以包括随机概率发生器I和数值比较器J。
示例性的,以仲裁器233确定输出分配缓存行的指示为二进制数“1”为例:
当avg_L<th1_L时,数值比较器A输出“1”;当随机概率发生器I产生的概率值P'<重用信息P时,数值比较器J输出“1”;这时,二输入与门D输出二进制“1”;二输入或门G输出“1”,即仲裁器233输出分配缓存行的指示;
当avg_L≥th1_L时,数值比较器A输出“0”,非门H输出“1”;当avg_L<th2_L时(th1_L≤avg_L<th2_L),数值比较器B也输出“1”,那么二输入与门E输出“1”;如果随机概率发生器I产生的概率值P'<重用信息P时,数值比较器J输出“1”;如果已为目标写操作流分配的缓存行数量anum_L<最大缓存行数量amax_L,数值比较器C输出“1”,那么三输入与门F就输出“1”,二输入或门G输出“1”,即仲裁器233输出分配缓存行的指示。
可以理解的是,如果avg_L<th1_L不成立,且avg_L<th2_L也不成立,二输入与门D输出“0”,三输入与门F也输出“0”,二输入或门G输出“0”,即仲裁器233输出不分配缓存行的指示。这种情况就相当于上文avg_L≥th2_L的情况。
在本申请实施例中,上文中已经提到历史信息的清零,因此,如图6所示,LLC 23包含的硬件模块还可以包括清除器(sweeper)234以及训练器(training unit)235。
清除器234,用于定时清空/复位SW table中的某些表项的历史信息,可防止历史写操作流的信息的积累对程序行为特性变化的检测产生负面影响。
在一些实施例中,清除器234用于在探测器231未探测到写操作流的时间超过时间阈值时,指示所述寄存器232清除所述至少一个历史写操作流的信息。
在一些实施例中,清除器234用于在探测器231未探测到写操作流的时间超过时间阈值时,清除器234向寄存器232发送第四指示,第四指示用于指示清除至少一个历史写操作流的信息(或者说至少一个表项的值)。
即,如果清除器234从探测器231获知,探测器231距离最后一次接收到写操作流的时间相隔第二时间间隔th_T(时间阈值)还未接收到下一个写操作流,那么清除器234可以清空/复位SW table中某些index对应的历史写操作流的信息。
在一些实施例中,如图7所示,清除器234中可以设置有数值比较器K,当清除器234从寄存器232中的SW table读取到第一时间间隔T大于或等于第二时间间隔th_T,说明距离上次接收到SW的时间间隔大于或等于清零历史信息中的至少一项的时间间隔,清除器234可以向寄存器232发送清除SW table中某些index对应的历史写操作流的信息的第四指示。这是由于距离相当长时间才接收到一个写操作流,可能意味着程序的变化,需要对下一段程序重新记录SW table中的信息。
其中,清空/复位的历史写操作流的信息可以包括上述num、reuse_p、alloc_p、P、total_L、avg_L以及anum_L中的一项或多项。
由于存在对于SW table的清除动作,上述至少一个历史写操作流的平均长度也可以理解为:从上一次清零历史写操作流的信息开始接收到的至少一个历史写操作流的长度的平均值;
至少一个历史写操作流的重用信息也可以理解为:从上一次清零历史写操作流的信息开始,为至少一个历史写操作流分配的缓存行中被重用的缓存行的比例。
训练器235,用于训练用于SW table中用于进行判断是否分配缓存行的阈值参数,并将该阈值参数逐渐收敛。
在一些实施例中,训练器235,用于根据最近一次清零历史写操作流的信息时,历史写操作流的信息中的重用信息的值,和最近一次的前一次清零历史写操作流的信息时,历史写操作流的信息中的重用信息的值,生成调整信息;
训练器235,还用于向寄存器232发送调整信息;
寄存器232,还用于根据调整信息更新当前的历史写操作流的信息。
在一些实施例中,训练器235可以根据最近一次清零历史写操作流的信息时,历史写操作流的信息中的第一重用信息P_now,和最近一次的前一次清零历史写操作流的信息时,历史写操作流的信息中的的第二重用信息P_pre,生成调整信息。
也就是说,训练器235用于可以根据每次清除历史写操作流的信息时的重用信息来适应性调整SW table中的阈值参数。
其中,调整的表项包括如下项中的一项或多项:
th1_L、th2_L、amax_L以及th_T。
在一些实施例中,若P_now≥P_pre,且最近一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值大于或等于前一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值,则将当前的历史写操作流的信息中的至少一项的值累加预设值;
若P_now≥P_pre,且最近一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值小于前一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值,则将当前的历史写操作流的信息中的中的至少一项的值减去预设值;
若P_now<P_pre,且最近一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值大于或等于前一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值,则将当前的历史写操作流的信息中的中的至少一项的值减去预设值;
若P_now<P_pre,且最近一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值小于前一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值,则将当前的历史写操作流的信息中的中的至少一项的值累加预设值。
需要说明的是,如果需要调整历史写操作流的信息中的多项时,多项对应的预设值可以相同,也可以不相同。
示例性的,若P_now≥P_pre,说明缓存行被重用的比例增加了,那么可推断上一次对于历史写操作流的信息的调整方向可行,这时,如果最近一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值th_now大于或等于前一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值th_pre,那么可将当前历史写操作流的信息中的至少一项的值th_now继续累加预设值dth,得到更新后的的历史写操作流的信息的值th_next,即阈值调整的方向为:th_next=th_now+dth;
若P_now≥P_pre,说明缓存行被重用的比例增加了,那么可推断上一次对于历史写操作流的信息的调整方向可行,这时,如果最近一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值th_now小于前一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值th_pre,那么可将当前历史写操作流的信息中的至少一项的值th_now减去预设值dth,得到更新后的历史写操作流的信息的值th_next,即阈值调整的方向为:th_next=th_now-dth;
若P_now<P_pre,说明缓存行被重用的比例减少了,那么可推断上一次对于历史写操作流的信息的调整方向不可行,这时,如果最近一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值th_now大于或等于前一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值th_pre,那么可将当前历史写操作流的信息中的至少一项的值th_now减去预设值dth,得到更新后的历史写操作流的信息的值th_next,即阈值调整的方向为:th_next=th_now-dth;
若P_now<P_pre,说明缓存行被重用的比例减少了,那么可推断上一次对于历史写操作流的信息的调整方向不可行,这时,如果最近一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值th_now小于前一次清零历史写操作流的信息时,历史写操作流的信息中的至少一项的值th_pre,那么可将当前历史写操作流的信息中的至少一项的值th_now累加预设值dth,得到更新后的历史写操作流的信息的值th_next,即阈值调整的方向为:th_next=th_now+dth。
基于上述介绍的训练器235的原理,在一些实施例中,训练器235内部的硬件电路结构可以参考图8,在图8中,训练器235包括的逻辑门器件可以有:数值比较器K、二输入与门L、触发器M、选择器N、数值计算器O以及触发器P。
示例性的,以清除器234输出清除历史信息的指示为二进制数“1”为例:
当清除器234输出的“1”输入到二输入与门L时,如果P_now<P_pre,数值比较器K输出“1”,那么二输入与门L输出“1”,即向触发器P的CLK管脚输入上升沿。触发器的CLK管脚检测到有上升沿的信号时,将触发器P的D管脚的值导入到Q管脚输出给选择器N。由于触发器P的D管脚与触发器P的接,示上一次调整方向的反向,即输出反向调整的信号,那么触发器P的D管脚接收到反向调整的信号时,Q管脚就将反向调整的信号输出给选择器N。选择器N选择与上一次调整方向的调整值反向的调整值(例如上一次选择的+dth,这次选择-dth),并输出给数值计算器O。数值计算器Q在上一次调整的历史写操作流的信息的基础上加上这次选择的调整值(+dth或-dth),输出这次调整后的历史写操作流的信息th_next给触发器P的管脚D,触发器P的管脚D将调整后的历史写操作流的信息th_next(图8中的th1_L、th2_L、amax_L以及th_T)输出给寄存器232,以便寄存器232根据调整后的历史信息th_next更新SW table。
其中,在图8中,th1L_init表示人工设定的th1_L的初始值,th2L_init表示人工设定的th2_L的初始值,amax_init表示可为SW序列分配的最大缓存行数量amax_L的初始值,th_T_init表示th_T的初始值。
由此,本申请还可以自适应的调整历史写操作流的信息中的参数阈值,这样可基于程序行为的历史特性信息,预测程序将来的行为特性,可以解决无法自适应根据需要选择分配策略的问题。
需要说明的是,本申请对于数值之间比较大小的临界值,即数值相等的情况不进行限定,即该数值相等的情况可以在大于的情况中,也可以在小于的情况中,本申请实施例仅进行了举例描述。
由此,通过本申请实施例提供的写分配处理装置,每次有新的目标写操作流到来时,均会根据此时的历史写操作流的信息决定是否将该目标写操作流分配到缓存中,由于不同目标写操作流到来的时间点不同,其历史写操作流的信息也不同,因此,其选择的分配策略也会不同,从而实现了动态选择分配策略。即能够根据程序行为特征的动态分析,实时判断程序行为特征,动态选择分配策略,解决了静态分配机制无法适应程序行为变化的问题。
再者,本申请在缓存中添加的硬件模块为专用的硬件电路,可实现历史写操作流的信息搜索、分配策略决策以及历史写操作流的信息更新等过程,且用于分配策略决策的参数阈值在初次人工设置后,可由硬件电路自动训练优化,即,分配策略的动态选择均是由硬件自动完成,无需软件人员添加指示。
此外,本申请的分配策略中,是根据历史信息中的重用信息以及平均长度等信息,自适应的判断是否写到缓存中,将重用性高、序列长度较小的目标写操作流写到缓存中,且,历史写操作流的信息是根据index指示的SW来源、操作地址以及数据值进行分配的,从而可精确匹配当前接收到的目标写操作流对应的重用信息以及平均长度等信息。
应用本申请实施例提供的缓存存储器,本申请实施例还提供一种写分配处理方法,如图9所示,该方法包括:
901、从接收到的写操作中探测到目标写操作流,目标写操作流中所包含的多个连续的写操作的地址具有规律性。
步骤901的实现可以是上述缓存存储器中的探测器231执行的。即,在接收到的写操作中探测到d个连续的写操作的地址具有规律性时,将从第d+1个写操作开始的m个写操作所组成的写操作流作为目标写操作流,d和m均为大于1的正整数。
步骤901的具体实现方式可以参见上述装置实施例中对探测器231的描述。
902、根据至少一个历史写操作流的信息确定是否为目标写操作流分配缓存行,至少一个历史写操作流用于指示目标写操作流之前的写操作流。
历史写操作流的信息可以参加上述实施例中的介绍,例如历史写操作流的信息包括至少一个历史写操作流的平均长度以及至少一个历史写操作流的重用信息。在一些实施例中,历史写操作流的信息包括的内容可以参见表1。
在一些实施例中,步骤902的实现可以是:根据至少一个历史写操作流的平均长度、至少一个历史写操作流的重用信息以及随机抽取的概率值确定是否为目标写操作流分配缓存行。其具体实现可以参见上述实施例中对寄存器232以及仲裁器233的介绍。
在一些实施例中,本申请的方式步骤还可以包括:
903、在未探测到写操作流的时间超过时间阈值时,清除至少一个历史写操作流的信息。
步骤903的具体实现可以参见上述实施例对清除器234的介绍。
904、装置根据最近一次清零历史写操作流的信息时,历史写操作流的信息中的重用信息的值,和最近一次的前一次清零历史写操作流的信息时,历史写操作流的信息中的重用信息的值,更新当前的历史写操作流的信息。
步骤904的具体实现可以参见上述实施例对训练器235的介绍。
由此,本申请方法实施例达到的有益效果可以参见上述实施例对缓存存储器的有益效果,此处不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (16)
1.一种缓存存储器,其特征在于,包括:
探测器,用于从接收的写操作中探测到目标写操作流,所述目标写操作流中所包含的多个连续的写操作的地址具有规律性;
寄存器,用于存储至少一个历史写操作流的信息,所述至少一个历史写操作流用于指示所述目标写操作流之前的写操作流,所述至少一个历史写操作流的信息包括所述至少一个历史写操作流的平均长度和所述至少一个历史写操作流的重用信息,所述至少一个历史写操作流的平均长度是所述至少一个历史写操作流的长度的平均值,所述至少一个历史写操作流的重用信息是为所述至少一个历史写操作流分配的缓存行中被重用的缓存行的比例;
仲裁器,用于根据所述至少一个历史写操作流的平均长度和所述至少一个历史写操作流的重用信息确定是否为所述目标写操作流分配缓存行。
2.根据权利要求1所述的缓存存储器,其特征在于,所述探测器具体用于:
在接收到的所述写操作中探测到d个连续的写操作的地址具有规律性时,将从第d+1个写操作开始的m个写操作所组成的写操作流作为所述目标写操作流,d和m均为大于1的正整数。
3.根据权利要求1所述的缓存存储器,其特征在于,所述仲裁器包括随机概率发生器和计算器;
所述随机概率发生器,用于随机生成概率值;
所述计算器,用于根据所述至少一个历史写操作流的平均长度、所述至少一个历史写操作流的重用信息和所述概率值确定是否为所述目标写操作流分配缓存行。
4.根据权利要求3所述的缓存存储器,其特征在于,所述计算器具体用于:
若所述至少一个历史写操作流的平均长度小于长度阈值,且所述概率值小于所述历史写操作流的重用信息,则确定为所述目标写操作流分配缓存行。
5.根据权利要求3所述的缓存存储器,其特征在于,所述计算器具体用于:
若所述至少一个历史写操作流的平均长度小于长度阈值,且所述概率值大于或等于所述历史写操作流的重用信息,则确定不为所述目标写操作流分配缓存行。
6.根据权利要求3所述的缓存存储器,其特征在于,所述计算器具体用于:
若所述至少一个历史写操作流的平均长度大于长度阈值,则确定不为所述目标写操作流分配缓存行。
7.根据权利要求1-6任一项所述的缓存存储器,其特征在于,所述缓存存储器还包括清除器;
所述清除器,用于在所述探测器未探测到写操作流的时间超过时间阈值时,指示所述寄存器清除所述至少一个历史写操作流的信息。
8.根据权利要求1-6任一项所述的缓存存储器,其特征在于,所述目标写操作流中所包含的多个写操作的地址具有规律性是指所述多个写操作的地址递增或递减。
9.一种分配写操作的方法,其特征在于,包括:
从接收到的写操作中探测到目标写操作流,所述目标写操作流中所包含的多个连续的写操作的地址具有规律性;
根据至少一个历史写操作流的平均长度和所述至少一个历史写操作流的重用信息确定是否为所述目标写操作流分配缓存行,所述至少一个历史写操作流用于指示所述目标写操作流之前的写操作流,所述至少一个历史写操作流的信息包括所述至少一个历史写操作流的平均长度和所述至少一个历史写操作流的重用信息,所述至少一个历史写操作流的平均长度是所述至少一个历史写操作流的长度的平均值,所述至少一个历史写操作流的重用信息是为所述至少一个历史写操作流分配的缓存行中被重用的缓存行的比例。
10.根据权利要求9所述的方法,其特征在于,所述从接收到的写操作中探测到目标写操作流包括:
在接收到的所述写操作中探测到d个连续的写操作的地址具有规律性时,将从第d+1个写操作开始的m个写操作所组成的写操作流作为所述目标写操作流,d和m均为大于1的正整数。
11.根据权利要求9所述的方法,其特征在于,所述根据所述至少一个历史写操作流的平均长度和所述至少一个历史写操作流的重用信息确定是否为所述目标写操作流分配缓存行包括:
随机生成概率值;
根据所述至少一个历史写操作流的平均长度、所述至少一个历史写操作流的重用信息和所述概率值确定是否为所述目标写操作流分配缓存行。
12.根据权利要求11所述的方法,其特征在于,所述根据所述至少一个历史写操作流的平均长度、所述至少一个历史写操作流的重用信息和所述概率值确定是否为所述目标写操作流分配缓存行包括:
若所述至少一个历史写操作流的平均长度小于长度阈值,且所述概率值小于所述历史写操作流的重用信息,则确定为所述目标写操作流分配缓存行。
13.根据权利要求11所述的方法,其特征在于,所述根据所述至少一个历史写操作流的平均长度、所述至少一个历史写操作流的重用信息和所述概率值确定是否为所述目标写操作流分配缓存行包括:
若所述至少一个历史写操作流的平均长度小于长度阈值,且所述概率值大于或等于所述历史写操作流的重用信息,则确定不为所述目标写操作流分配缓存行。
14.根据权利要求11所述的方法,其特征在于,所述根据所述至少一个历史写操作流的平均长度、所述至少一个历史写操作流的重用信息和所述概率值确定是否为所述目标写操作流分配缓存行包括:
若所述至少一个历史写操作流的平均长度大于长度阈值,则确定不为所述目标写操作流分配缓存行。
15.根据权利要求9-14任一项所述的方法,其特征在于,所述方法还包括:
在未探测到写操作流的时间超过时间阈值时,清除所述至少一个历史写操作流的信息。
16.根据权利要求9-14任一项所述的方法,其特征在于,所述目标写操作流中所包含的多个写操作的地址具有规律性是指所述多个写操作的地址递增或递减。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/CN2019/122226 WO2021103020A1 (zh) | 2019-11-29 | 2019-11-29 | 缓存存储器和分配写操作的方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN114616552A CN114616552A (zh) | 2022-06-10 |
| CN114616552B true CN114616552B (zh) | 2025-08-22 |
Family
ID=76129904
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201980101851.6A Active CN114616552B (zh) | 2019-11-29 | 2019-11-29 | 缓存存储器和分配写操作的方法 |
Country Status (2)
| Country | Link |
|---|---|
| CN (1) | CN114616552B (zh) |
| WO (1) | WO2021103020A1 (zh) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN105159884A (zh) * | 2015-09-23 | 2015-12-16 | 百度在线网络技术(北京)有限公司 | 行业词典的建立方法和装置及行业识别方法和装置 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8904115B2 (en) * | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
| CN102012872B (zh) * | 2010-11-24 | 2012-05-02 | 烽火通信科技股份有限公司 | 一种用于嵌入式系统的二级缓存控制方法及装置 |
| CN102053929A (zh) * | 2010-12-17 | 2011-05-11 | 天津曙光计算机产业有限公司 | 一种基于Linux系统DM层的IO缓存操作方法和系统 |
| US8543766B2 (en) * | 2011-06-10 | 2013-09-24 | Freescale Semiconductor, Inc. | Writing data to system memory in a data processing system in which cache line states are tracked |
| CN103076992B (zh) * | 2012-12-27 | 2016-09-28 | 杭州华为数字技术有限公司 | 一种内存数据缓冲方法及装置 |
| GB2526849B (en) * | 2014-06-05 | 2021-04-14 | Advanced Risc Mach Ltd | Dynamic cache allocation policy adaptation in a data processing apparatus |
| US9684602B2 (en) * | 2015-03-11 | 2017-06-20 | Kabushiki Kaisha Toshiba | Memory access control device, cache memory and semiconductor device |
| US20170255569A1 (en) * | 2016-03-01 | 2017-09-07 | Qualcomm Incorporated | Write-allocation for a cache based on execute permissions |
-
2019
- 2019-11-29 CN CN201980101851.6A patent/CN114616552B/zh active Active
- 2019-11-29 WO PCT/CN2019/122226 patent/WO2021103020A1/zh not_active Ceased
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN105159884A (zh) * | 2015-09-23 | 2015-12-16 | 百度在线网络技术(北京)有限公司 | 行业词典的建立方法和装置及行业识别方法和装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2021103020A1 (zh) | 2021-06-03 |
| CN114616552A (zh) | 2022-06-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8271729B2 (en) | Read and write aware cache storing cache lines in a read-often portion and a write-often portion | |
| CN104809076B (zh) | Cache的管理方法及装置 | |
| US9471497B2 (en) | Methods for combining access history and sequentiality for intelligent prefetching and devices thereof | |
| JP6166616B2 (ja) | 情報処理方法、情報処理装置及びプログラム | |
| CN109032964A (zh) | 缓存替换方法及其装置、异构多核系统 | |
| KR101056460B1 (ko) | 캐쉬 제어기 및 캐쉬 블록 교체 방법 | |
| CN111382089B (zh) | 用于专用最末级高速缓存器的旁路预测器 | |
| US10712945B2 (en) | Deduplication processing method, and storage device | |
| US6393522B1 (en) | Method and apparatus for cache memory management | |
| CN118502925B (zh) | GPU cache的访问方法、装置 | |
| JP2008502069A (ja) | メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法 | |
| CN114600091B (zh) | 基于重用距离的高速缓存管理 | |
| US9218292B2 (en) | Least-recently-used (LRU) to first-dirty-member distance-maintaining cache cleaning scheduler | |
| CN114616552B (zh) | 缓存存储器和分配写操作的方法 | |
| CN111221468B (zh) | 存储块数据删除方法、装置、电子设备及云存储系统 | |
| CN119396335A (zh) | 一种固态硬盘存储磨损均衡的控制方法和装置 | |
| US20140082286A1 (en) | Prefetching Method and Apparatus | |
| WO2017121300A1 (en) | Caching structure for nested preemption | |
| CN108108312A (zh) | 一种高速缓存清理方法及处理器 | |
| CN120066989B (zh) | 一种数据预取方法、装置、设备、介质及产品 | |
| CN113778693B (zh) | 缓存操作方法、缓存操作装置、电子设备及处理器 | |
| CN120371195A (zh) | 存储空间控制方法及装置 | |
| CN119861973A (zh) | 缓存全局冲刷指令的执行方法、装置、终端设备及介质 | |
| Archa et al. | Integrating Tree PLRU Replacement Policies and Bypass Techniques in a 4-Way Set Associative Cache Controllers | |
| WO2025231479A1 (en) | Hardware data prefetchers for processors |
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 |