CN112231241B - 一种数据读取方法和装置、计算机可读存储介质 - Google Patents
一种数据读取方法和装置、计算机可读存储介质 Download PDFInfo
- Publication number
- CN112231241B CN112231241B CN201910637085.7A CN201910637085A CN112231241B CN 112231241 B CN112231241 B CN 112231241B CN 201910637085 A CN201910637085 A CN 201910637085A CN 112231241 B CN112231241 B CN 112231241B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- address
- reading
- available
- 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
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/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
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
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
本申请公开了一种数据读取方法和装置、计算机可读存储介质,所述方法包括:接收携带目标存储器中的目标存储地址的读数据请求,将目标存储地址转换为第一缓存地址;从第一缓存中读取对应第一缓存地址的第一数据,第一数据为第二缓存地址;从第二缓存中读取对应第二缓存地址的第二数据,将第二数据与读数据请求进行比对,判断是否命中,第一缓存条目宽度W1小于第二缓存条目宽度W2,第一缓存条目数量K1大于第二缓存条目数量K2,且K1*W1+K2*W2<K1*W2;如果命中,输出第二数据;如果未命中,根据目标存储地址读取目标存储器中的数据并输出。本申请通过设置两个缓存间接映射,节约了缓存的总存储空间,降低了Cache冲突的概率,满足了网络处理器高带宽的需求。
Description
技术领域
本发明实施例涉及但不限于网络通信技术领域,尤指一种数据读取方法和装置、计算机可读存储介质。
背景技术
随着网络设备(路由器、交换机等)中表项容量的增加,网络处理器(NetworkProcessor,NP)芯片内部的静态随机存取存储器(Static Random Access Memory,SRAM)无法满足表项的容量需求,大容量动态随机存取存储器(Dynamic Random Access Memory,DRAM),即DRAM等会被用来存储表项信息。但是,DRAM访问时间较长,又无法满足NP的查表带宽需求。因此,NP内部通常要设置小容量高速缓存(Cache)来吸收部分访问DRAM的流量。
如图1所示,网络处理器应用场景中,中央处理器(Central Processing Unit,CPU)或包处理器(Packet Processor,PP)发起查表操作,该操作会先经过Cache管理模块,如果Cache命中,则直接返回查表结果,否则,再向DRAM发送查表请求。
由于DRAM与Cache在容量上存在巨大差异,DRAM中的数据不可能全部写入Cache,因此必然存在DRAM中多个条目映射到Cache中同一地址的情况。具体的映射方法包括:
(1)直接映射:如图2a所示,DRAM中每个条目在Cache中的位置是唯一的;
(2)全相联映射:如图2b所示,DRAM中每个条目可以映射到Cache中任意一个位置上;
(3)组相联映射:如图2c所示,介于全相联映射和直接映射之间,DRAM中每个条目可以映射到一部分位置。
直接映射中,由于DRAM条目在Cache中位置是唯一确定的,一般不需要替换算法,但是存在多个常用DRAM数据映射到Cache同一地址的情况,当出现该情况时会有频繁的Cache替换操作,导致Cache性能下降。
全相联和组相联映射中,由于DRAM中每个条目可以映射到Cache中多个位置,降低了频繁替换的可能。全相联Cache往往能得到最好的性能,但是,它需要对Cache内所有条目都进行比对,实现复杂度过高。因此,目前普遍采用的是组相联Cache,通常实现中会将DRAM分成K组,每组可映射到Cache中n个条目,由于组之间的Cache空间不可共享,因此,需要的Cache的深度(即条目数量)为K*n。
目前,对于如何节约缓存的存储空间、降低缓存的开销的研究甚少。多数研究只关注了替换策略对Cache性能的影响,而且多数应用仍基于“局部性”原理(即如果一个存储单元正在被访问,那么在近期它很可能还会被再次访问),并不符合网络处理器的流量特征。另有一些方案中使用多级Cache以及混合替换策略等,无法满足网络处理器高带宽的需求。
发明内容
为了解决上述技术问题,本发明实施例提供了一种数据读取方法和装置、计算机可读存储介质,能够节约缓存的总存储空间,降低缓存的开销。
为了达到本发明目的,本发明实施例提供了一种数据读取方法,包括:
接收读数据请求,所述读数据请求携带目标存储器中的目标存储地址,将目标存储地址转换为第一缓存地址;
从第一缓存中读取对应第一缓存地址的第一数据,所述第一数据为第二缓存地址;
从第二缓存中读取对应第二缓存地址的第二数据,将第二数据与读数据请求进行比对,判断是否命中,其中,第一缓存的条目宽度W1小于第二缓存的条目宽度W2,第一缓存的条目数量K1大于第二缓存的条目数量K2,且K1*W1+K2*W2<K1*W2,其中,W1、W2、K1、K2均为大于1的自然数;
如果命中,输出第二数据;如果未命中,根据目标存储地址读取目标存储器中的数据并输出。
在一种示例性实施例中,在所述根据目标存储地址读取目标存储器中的数据之后,所述方法还包括:
检测所述第二缓存中是否有可用的第二缓存地址;
如果有可用的第二缓存地址,则将读取到的目标存储器中的数据存储至所述可用的第二缓存地址位置,并将所述可用的第二缓存地址存储至所述第一缓存地址位置。
在一种示例性实施例中,所述检测所述第二缓存中是否有可用的第二缓存地址,具体为:当所述第二缓存中存在保活权重为0的所述第二数据时,则所述第二缓存中有可用的第二缓存地址;当所述第二缓存中不存在保活权重为0的所述第二数据时,所述第二缓存中没有可用的第二缓存地址。
在一种示例性实施例中,在所述输出第二数据之后,所述方法还包括:将所述第二数据的保活权重增1。
在一种示例性实施例中,在所述检测第二缓存中是否有可用的第二缓存地址之后,所述方法还包括:
如果没有所述可用的第二缓存地址,则判断当前老化位置的所述第二数据的保活权重是否为0;
如果为0,则记录当前老化位置为所述可用的第二缓存地址;
如果不为0,则将当前老化位置的所述第二数据的保活权重减1,并将当前老化位置指向下一个所述第二缓存地址,并循环判断当前老化位置的所述第二数据的保活权重是否为0的步骤,直至出现当前老化位置的所述第二数据的保活权重为0为止。
在一种示例性实施例中,所述第一缓存与所述目标存储器之间的映射方式为组相联映射,将所述目标存储器分为K组,每组可间接映射到所述第一缓存中的n个条目,即第一缓存的条目数量K1=K*n,其中,K、n均为大于1的自然数。
在一种示例性实施例中,所述第二缓存的条目数量K2=K。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如以上任一项所述的数据读取方法的步骤。
本发明实施例还提供了一种数据读取装置,包括处理器及存储器,其中:所述处理器用于执行存储器中存储的程序,以实现如以上任一项所述的数据读取方法的步骤。
本发明实施例还提供了一种数据读取装置,包括地址转换模块、第一缓存、第二缓存和数据查找模块,其中:
地址转换模块,用于接收读数据请求,所述读数据请求中携带目标存储器中的目标存储地址;将目标存储地址转换为第一缓存地址;
第一缓存,用于缓存第二缓存地址;
第二缓存,用于缓存目标存储器中的数据;
数据查找模块,用于从第一缓存中读取对应第一缓存地址的第一数据,所述第一数据为第二缓存地址;从第二缓存中读取对应第二缓存地址的第二数据,将第二数据与读数据请求进行比对,判断是否命中,其中,第一缓存的条目宽度W1小于第二缓存的条目宽度W2,第一缓存的条目数量K1大于第二缓存的条目数量K2,且K1*W1+K2*W2<K1*W2,其中,W1、W2、K1、K2均为大于1的自然数;如果命中,输出第二数据;如果未命中,根据目标存储地址读取目标存储器中的数据并输出。
与现有技术相比,本发明实施例提供的数据读取方法和装置、计算机可读存储介质,通过设置两个缓存:第一缓存和第二缓存,间接映射读取目标存储器中的数据,由于第一缓存中的条目存储的是第二缓存地址,第二缓存中的条目存储的是目标存储器中的数据,第一缓存的条目宽度明显地小于第二缓存的条目宽度,通过设置:K1*W1+K2*W2<K1*W2,有效地节约了缓存的总存储空间,降低了缓存的开销,且与使用一个缓存(条目数量为K2,条目宽度为W2)直接映射相比,只增加了少量的存储空间(由于W1远小于W2,K1*W1也远小于K2*W2),但是有效地提高了Cache的命中率,满足了网络处理器高带宽的需求。
本发明实施例的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例而了解。本发明实施例的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为相关技术中网络处理器访问DRAM的数据流向示意图;
图2a为相关技术中缓存与DRAM之间采用直接映射方式原理示意图;
图2b为相关技术中缓存与DRAM之间采用全相联映射方式原理示意图;
图2c为相关技术中缓存与DRAM之间采用组相联映射方式原理示意图;
图3是本发明实施例的数据读取方法的第一种示例性流程示意图;
图4为本发明实施例的数据读取装置的第一种示例性结构示意图;
图5为本发明实施例的数据读取装置的第二种示例性结构示意图;
图6为本发明实施例的数据读取装置的第三种示例性结构示意图;
图7为本发明实施例的数据读取装置的第四种示例性结构示意图;
图8为本发明实施例的一种缓存查找及缓存更新过程示意图;
图9为本发明实施例的一种老化及保活过程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
如图3所示,本发明实施例提供了一种数据读取方法,包括:
步骤301:接收读数据请求,所述读数据请求携带目标存储器中的目标存储地址,将目标存储地址转换为第一缓存地址;
需要说明的是,将目标存储地址转换为第一缓存地址的方法可以使用现有技术中的地址转换方法,本申请对此并不做限制。
步骤302:从第一缓存中读取对应第一缓存地址的第一数据,所述第一数据为第二缓存地址;
在一种示例性实施例中,所述第一缓存与所述目标存储器之间的映射方式为组相联映射,将所述目标存储器分为K组,每组可间接映射到所述第一缓存中的n个条目,即第一缓存的条目数量K1=K*n,其中,K、n均为大于1的自然数。
步骤303:从第二缓存中读取对应第二缓存地址的第二数据,将第二数据与读数据请求进行比对,判断是否命中,其中,第一缓存的条目宽度W1小于第二缓存的条目宽度W2,第一缓存的条目数量K1大于第二缓存的条目数量K2,且K1*W1+K2*W2<K1*W2,其中,W1、W2、K1、K2均为大于1的自然数,*为乘号;
当使用现有的组相联映射方式时,需要的Cache的条目数量为K1,需要的Cache的条目宽度为W2,即需要的总缓存空间为K1*W2;当使用本申请的间接映射方式时,需要的总缓存空间为K1*W1+K2*W2。由于本申请的第一缓存中的条目存储的是第二缓存地址,第二缓存中的条目存储的是目标存储器中的数据,第一缓存的条目宽度W1明显地小于第二缓存的条目宽度W2,因此,通过使用本申请的间接映射方式,可以轻松满足K1*W1+K2*W2<K1*W2,节约了缓存的总存储空间,降低了缓存的开销。
在一种示例性实施例中,所述第二缓存的条目数量K2=K。
步骤304:如果命中,输出第二数据;
在一种示例性实施例中,在所述输出第二数据之后,所述方法还包括:
将所述第二数据的保活权重增1。
步骤305:如果未命中,根据目标存储地址读取目标存储器中的数据并输出。
在一种示例性实施例中,在所述根据目标存储地址读取目标存储器中的数据之后,所述方法还包括:
检测第二缓存中是否有可用的第二缓存地址;
如果有可用的第二缓存地址,则将读取到的目标存储器中的数据存储至所述可用的第二缓存地址位置,并将所述可用的第二缓存地址存储至所述第一缓存地址位置。
以往的Cache方案中,只要DRAM有数据返回时,就会更新Cache,并发生替换操作。常见的替换策略包括:
(1)最近最少使用(Least Recently Used,LRU):替换最不常用的条目。该方法通常需要通过复杂的双向链表实现,每次访问后,将访问的条目从链表中取出,并插入链表头部,逻辑实现较为复杂;
(2)先进先出(First Input First Output,FIFO):替换最早进入Cache的条目,该方法逻辑实现简单,但是并不一定适合实际的业务模型;
(3)随机(Random):随机选择一个进行替换,即完全不考虑Cache中条目的历史使用情况;
(4)最不经常使用(Least Frequently Used,LFU):记录每个条目最近的使用频率,发生替换时,选择使用频率最低的。
但是,在网络处理器,小带宽流量不更新Cache时性能往往更好。因此本申请实施例中,只有在Cache有可用空间的情况下,才会进行Cache更新操作,降低了小流量条目将大流量条目替换出Cache的可能。
与普通处理器不同,网络处理器访问DRAM的流量不具备“局部性”的特征,即访问某一条目并不代表着该条目会在短时间内被频繁访问。而LRU(包括pLRU(Pseudo LeastRecently Used))、FIFO、Random等替换策略会存在小流量表项写入Cache后,将大流量表项内容“挤出”Cache的可能。因此只有LFU最适合网络处理器的应用场景,但是为了选择使用频率最低的条目,大部分实现中都需要排序,逻辑实现较为复杂。
在一种示例性实施例中,所述检测第二缓存中是否有可用的第二缓存地址,具体为:当第二缓存中存在保活权重为0的第二数据时,则第二缓存中有可用的第二缓存地址;当第二缓存中不存在保活权重为0的第二数据时,第二缓存中没有可用的第二缓存地址。
本申请实施例通过设置保活权重,模拟LFU操作,将大流量条目保留在了缓存中,降低了小流量条目将大流量条目替换出缓存的可能,提高了缓存命中率。
在一种示例性实施例中,在所述检测第二缓存中是否有可用的第二缓存地址之后,所述方法还包括:
如果没有可用的第二缓存地址,则判断当前老化位置的第二数据的保活权重是否为0;
如果为0,则记录当前老化位置为可用的第二缓存地址;
如果不为0,则将当前老化位置的第二数据的保活权重减1,并将当前老化位置指向下一个第二缓存地址,并循环判断当前老化位置的第二数据的保活权重是否为0的步骤,直至出现当前老化位置的第二数据的保活权重为0为止。
本申请实施例通过简单的老化和保活操作,实现可用缓存空间的选择,避免了复杂的排序或比较逻辑。
本申请实施例中,缓存访问操作包括查表操作和更新操作两部分,查表操作的具体步骤包括:
读数据请求到达后,经地址转换处理后,生成访问第一缓存的地址;
从第一缓存中对应位置读取访问第二缓存的地址,根据该地址在第二缓存中读取第二缓存的数据,并与请求进行比对,判断是否命中;
根据是否命中,判断是否需要向DRAM发送读请求。当命中时,不需要向DRAM发送读请求,直接向CPU/PP返回读取的第二缓存中的数据即可,并对第二缓存中相应条目进行保活操作(即将对应位置的保活权重自增1);当不命中时,需要向DRAM发送读请求,并将DRAM响应的结果返回给CPU/PP,DRAM响应返回后,如果第二缓存有可用地址,则进行缓存更新操作,反之则仅返回查表结果不进行缓存更新。
当DRAM响应返回时,如果第二缓存有可用地址,则进行缓存更新操作,具体步骤如下:
在地址转换模块中计算该条目在第一缓存中的地址;
将第二缓存中的可用地址写入第一缓存中计算出的相应位置;
将DRAM响应返回的数据写入第二缓存中的可用地址对应的位置。
为了简化实现,当命中时,对第二缓存中相应条目进行保活操作,即将对应位置的保活权重自增1;当不命中时,进行老化和查找可用空间的操作,具体过程如下:
判断当前第二缓存是否有可用地址,如果有可用地址,则老化过程结束;
如果没有可用地址,则判断当前老化位置指向的第二数据的保活权重是否为0,如果为0,则设置当前老化位置的第二缓存地址为可用地址,老化过程结束,该地址可用于后续的缓存更新;
如果不为0,将当前老化位置的第二数据的保活权重自减1,并将当前老化位置指向第二缓存中的下一地址,并循环判断当前老化位置指向的第二数据的保活权重是否为0的操作,直到出现当前老化位置指向的第二数据的保活权重为0为止。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如以上任一项所述的数据读取方法的步骤。
本发明实施例还提供了一种数据读取装置,包括处理器及存储器,其中:所述处理器用于执行存储器中存储的程序,以实现如以上任一项所述的数据读取方法的步骤。
如图4所示,本发明实施例还提供了一种数据读取装置,包括地址转换模块401、第一缓存402、第二缓存403和数据查找模块404,其中:
地址转换模块401,用于接收读数据请求,所述读数据请求中携带目标存储器中的目标存储地址;将目标存储地址转换为第一缓存地址;
第一缓存402,用于缓存第二缓存地址;
第二缓存403,用于缓存目标存储器中的数据;
数据查找模块404,用于从第一缓存402中读取对应第一缓存地址的第一数据,所述第一数据为第二缓存地址;从第二缓存403中读取对应第二缓存地址的第二数据,将第二数据与读数据请求进行比对,判断是否命中,其中,第一缓存402的条目宽度W1小于第二缓存403的条目宽度W2,第一缓存402的条目数量K1大于第二缓存403的条目数量K2,且K1*W1+K2*W2<K1*W2,其中,W1、W2、K1、K2均为大于1的自然数;如果命中,输出第二数据;如果未命中,根据目标存储地址读取目标存储器中的数据并输出。
需要说明的是,地址转换模块401将目标存储地址转换为第一缓存地址的方法可以使用现有技术中的地址转换方法,本申请对此并不做限制。
在一种示例性实施例中,所述第一缓存402与所述目标存储器之间的映射方式为组相联映射,将所述目标存储器分为K组,每组可间接映射到所述第一缓存402中的n个条目,即第一缓存402的条目数量K1=K*n,其中,K、n均为大于1的自然数。
当使用现有的组相联映射方式时,需要的Cache的条目数量为K1,需要的Cache的条目宽度为W2,即需要的总缓存空间为K1*W2;当使用本申请的间接映射方式时,需要的总缓存空间为K1*W1+K2*W2。由于本申请的第一缓存402中的条目存储的是第二缓存地址,第二缓存403中的条目存储的是目标存储器中的数据,第一缓存402的条目宽度W1明显地小于第二缓存403的条目宽度W2,因此,通过使用本申请的间接映射方式,可以轻松满足K1*W1+K2*W2<K1*W2,节约了缓存的总存储空间,降低了缓存的开销。
在一种示例性实施例中,所述第二缓存403的条目数量K2=K。
在一种示例性实施例中,如图5所示,所述数据读取装置还包括缓存更新模块405,其中:
所述数据查找模块404在根据目标存储地址读取目标存储器中的数据之后,通知缓存更新模块405;
所述缓存更新模块405,用于接收到所述数据查找模块404的通知,检测第二缓存403中是否有可用的第二缓存地址;如果有可用的第二缓存地址,则将读取到的目标存储器中的数据存储至所述可用的第二缓存地址位置,并将所述可用的第二缓存地址存储至所述第一缓存地址位置。
在一种示例性实施例中,所述缓存更新模块405检测所述第二缓存403中是否有可用的第二缓存地址,具体为:当所述第二缓存403中存在保活权重为0的所述第二数据时,则所述第二缓存403中有可用的第二缓存地址;当所述第二缓存403中不存在保活权重为0的所述第二数据时,所述第二缓存403中没有可用的第二缓存地址。
本申请实施例通过设置保活权重,模拟LFU操作,将大流量条目保留在了缓存中,降低了小流量条目将大流量条目替换出缓存的可能,提高了缓存命中率。
以往的Cache方案中,只要DRAM有数据返回时,就会更新Cache,并发生替换操作。但是在网络处理器,小带宽流量不更新Cache时性能往往更好。因此本申请实施例中,只有在Cache有可用空间的情况下,才会进行Cache更新操作,降低了小流量条目将大流量条目替换出Cache的可能。
在一种示例性实施例中,如图6所示,所述数据读取装置还包括老化保活模块406,其中:
所述缓存更新模块405还用于:如果没有可用的第二缓存地址,则通知老化保活模块406;
所述老化保活模块406,用于接收到所述缓存更新模块405的通知,判断当前老化位置的第二数据的保活权重是否为0;
如果为0,则记录当前老化位置为可用的第二缓存地址;
如果不为0,则将当前老化位置的第二数据的保活权重减1,并将当前老化位置指向下一个第二缓存地址,并循环判断当前老化位置的第二数据的保活权重是否为0的步骤,直至出现当前老化位置的第二数据的保活权重为0。
本申请实施例通过简单的老化和保活操作,实现可用缓存空间的选择,避免了复杂的排序或比较逻辑。
在一种示例性实施例中,所述数据查找模块404在输出第二数据之后,还用于:通知所述老化保活模块406;
所述老化保活模块406还用于,接收到所述数据查找模块404的通知,将所述第二数据的保活权重增1。
在另一种示例性实施例中,如图7所示,根据本发明实施例的一种数据读取装置,包括:
(1)地址转换模块:用于将请求转换为访问指针Ram的地址,同时当DRAM响应返回时,也需要相同的操作获得回写指针Ram的地址。例如,可以通过使用截位或CRC计算实现;
(2)指针Ram(即第一缓存):用于存储对应条目在Cache ram中的地址,实现对Cache Ram的间接访问。该指针Ram深度通常为Cache Ram的整数倍,在相同Cache深度下,可以有效降低冲突的概率;
(3)Cache Ram(即第二缓存):用于存储实际的条目数据和地址信息;
(4)数据查找模块(图中未示出):用于根据指针Ram的地址在缓存(包括指针Ram和Cache Ram)或DRAM中查找相应的数据;
(5)老化保活模块:一方面用于记录Cache中每个条目对应的保活权重,另一方面根据当时是否有条目命中和可用Cache空间判断是否需要进行保活和老化操作;
(6)Cache更新模块:当DRAM响应返回时,如果老化保活模块返回有可用Cache空间,则进行Cache更新操作;
(7)输出仲裁模块:在Cache Ram返回(Cache命中)和DRAM返回(Cache不命中)之间仲裁,选择最终返回给CPU/PP的结果。
本方案中Cache访问操作可分为查表操作与更新操作两部分,同时老化操作独立于查表过程进行。如图8所示,查表操作的具体步骤为:
(1)请求地址到达后,经地址转换模块处理后,生成访问指针Ram的地址;
(2)从指针Ram中对应位置读取访问Cache Ram的地址,根据该地址在Cache Ram中读取Cache数据,并与请求进行比对,判断是否命中;
(3)根据Cache是否命中,判断是否需要向DRAM发送读请求。当Cache命中时,不需要向DRAM发送读请求,直接通过输出仲裁模块向CPU/PP返回Cache中的数据即可,并在老化保活模块对Cache中相应条目进行保活操作(即将对应位置自增1);当Cache不命中时,需要向DRAM发送读请求,并将DRAM响应的结果通过输出仲裁模块返回给CPU/PP,DRAM响应返回后,当老化保活模块返回有可用地址时,则进行Cache更新操作,反之则仅返回查表结果不进行Cache更新。
在Cache更新模块中,当DRAM响应返回时,如果老化保活模块返回有可用Cache空间,则进行Cache更新操作,如图8所示,更新操作的具体步骤如下:
(1)通过地址计算模块,计算该条目在指针Ram中的地址;
(2)将Cache Ram可用地址写入计算出的指针Ram中的地址的相应位置;
(3)将读取的DRAM的数据写入Cache Ram可用地址的相应位置。
为了简化实现,在老化保活模块中,当Cache命中时,对相应条目进行保活操作,即将对应位置自增1;当Cache不命中时,进行老化和查找可用空间的操作。如图9所示,老化操作的具体过程如下:
(1)判断当时是否有可用Cache空间,如果有可用地址,则老化过程结束,该地址可用于后续的Cache更新
(2)当不存在可用Cache空间时,首先判断当前位置的保活权重是否为0,若保活权重为0,则老化过程结束,并将该位置作为可用地址保存下来,否则将当前位置的保活权重减1,并将当前老化位置指向下一地址,循环上述判断过程,直至出现保活权重为0为止。
采用本发明实施例提供的数据读取方法和装置、计算机可读存储介质,具有以下优点:
通过间接映射的方式,以较低的开销实现了组相联Cache,降低了Cache冲突的概率;
通过模拟了LFU操作,将大流量条目保留在了Cache中,提高了Cache命中率,满足了网络处理器高带宽的需求;
通过简单的老化和保活操作,实现可用Cache空间的选择,避免了复杂的排序或比较逻辑,有效降低了逻辑复杂度,节约了Cache的资源开销。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种数据读取方法,包括:
接收读数据请求,所述读数据请求携带目标存储器中的目标存储地址,将目标存储地址转换为第一缓存地址;
从第一缓存中读取对应第一缓存地址的第一数据,所述第一数据为第二缓存地址;
从第二缓存中读取对应第二缓存地址的第二数据,将第二数据与读数据请求进行比对,判断是否命中,其中,第一缓存的条目宽度W1小于第二缓存的条目宽度W2,第一缓存的条目数量K1大于第二缓存的条目数量K2,且K1*W1+K2*W2<K1*W2,其中,W1、W2、K1、K2均为大于1的自然数;
如果命中,输出第二数据;如果未命中,根据目标存储地址读取目标存储器中的数据并输出。
2.根据权利要求1所述的方法,其特征在于,在所述根据目标存储地址读取目标存储器中的数据之后,所述方法还包括:
检测所述第二缓存中是否有可用的第二缓存地址;
如果有可用的第二缓存地址,则将读取到的目标存储器中的数据存储至所述可用的第二缓存地址位置,并将所述可用的第二缓存地址存储至所述第一缓存地址位置。
3.根据权利要求2所述的方法,其特征在于,所述检测所述第二缓存中是否有可用的第二缓存地址,具体为:当所述第二缓存中存在保活权重为0的所述第二数据时,则所述第二缓存中有可用的第二缓存地址;当所述第二缓存中不存在保活权重为0的所述第二数据时,所述第二缓存中没有可用的第二缓存地址。
4.根据权利要求3所述的方法,其特征在于,在所述输出第二数据之后,所述方法还包括:将所述第二数据的保活权重增1。
5.根据权利要求3所述的方法,其特征在于,在所述检测第二缓存中是否有可用的第二缓存地址之后,所述方法还包括:
如果没有所述可用的第二缓存地址,则判断当前老化位置的所述第二数据的保活权重是否为0;
如果为0,则记录当前老化位置为所述可用的第二缓存地址;
如果不为0,则将当前老化位置的所述第二数据的保活权重减1,并将当前老化位置指向下一个所述第二缓存地址,并循环判断当前老化位置的所述第二数据的保活权重是否为0的步骤,直至出现当前老化位置的所述第二数据的保活权重为0为止。
6.根据权利要求1至5任一所述的方法,其特征在于,所述第一缓存与所述目标存储器之间的映射方式为组相联映射,将所述目标存储器分为K组,每组可间接映射到所述第一缓存中的n个条目,即第一缓存的条目数量K1=K*n,其中,K、n均为大于1的自然数。
7.根据权利要求6所述的方法,其特征在于,所述第二缓存的条目数量K2=K。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1至权利要求7中任一项所述的数据读取方法的步骤。
9.一种数据读取装置,其特征在于,包括处理器及存储器,其中:所述处理器用于执行存储器中存储的程序,以实现如权利要求1至权利要求7中任一项所述的数据读取方法的步骤。
10.一种数据读取装置,其特征在于,包括地址转换模块、第一缓存、第二缓存和数据查找模块,其中:
地址转换模块,用于接收读数据请求,所述读数据请求中携带目标存储器中的目标存储地址;将目标存储地址转换为第一缓存地址;
第一缓存,用于缓存第二缓存地址;
第二缓存,用于缓存目标存储器中的数据;
数据查找模块,用于从第一缓存中读取对应第一缓存地址的第一数据,所述第一数据为第二缓存地址;从第二缓存中读取对应第二缓存地址的第二数据,将第二数据与读数据请求进行比对,判断是否命中,其中,第一缓存的条目宽度W1小于第二缓存的条目宽度W2,第一缓存的条目数量K1大于第二缓存的条目数量K2,且K1*W1+K2*W2<K1*W2,其中,W1、W2、K1、K2均为大于1的自然数;如果命中,输出第二数据;如果未命中,根据目标存储地址读取目标存储器中的数据并输出。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910637085.7A CN112231241B (zh) | 2019-07-15 | 2019-07-15 | 一种数据读取方法和装置、计算机可读存储介质 |
PCT/CN2020/102123 WO2021008552A1 (zh) | 2019-07-15 | 2020-07-15 | 数据读取方法和装置、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910637085.7A CN112231241B (zh) | 2019-07-15 | 2019-07-15 | 一种数据读取方法和装置、计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112231241A CN112231241A (zh) | 2021-01-15 |
CN112231241B true CN112231241B (zh) | 2023-02-17 |
Family
ID=74111706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910637085.7A Active CN112231241B (zh) | 2019-07-15 | 2019-07-15 | 一种数据读取方法和装置、计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112231241B (zh) |
WO (1) | WO2021008552A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515474A (zh) * | 2021-07-30 | 2021-10-19 | 上海阵量智能科技有限公司 | 数据处理装置、方法、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1729445A (zh) * | 2002-09-16 | 2006-02-01 | 英特尔公司 | 预取计算机系统中的数据 |
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
CN104166634A (zh) * | 2014-08-12 | 2014-11-26 | 华中科技大学 | 一种固态盘系统中的映射表缓存管理方法 |
CN108459826A (zh) * | 2018-02-01 | 2018-08-28 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
CN108958700A (zh) * | 2017-05-22 | 2018-12-07 | 深圳市中兴微电子技术有限公司 | 一种先进先出数据缓存器及缓存数据的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5300407B2 (ja) * | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
WO2014061064A1 (en) * | 2012-10-18 | 2014-04-24 | Hitachi, Ltd. | Cache control apparatus and cache control method |
US10481835B2 (en) * | 2014-10-09 | 2019-11-19 | Netapp, Inc. | Methods and systems for dynamic hashing in caching sub-systems |
US10013362B2 (en) * | 2016-05-13 | 2018-07-03 | Verizon Digital Media Services Inc. | Deterministic multifactor cache replacement |
CN107783916B (zh) * | 2016-08-26 | 2020-01-31 | 深圳大心电子科技有限公司 | 数据传输方法、存储控制器与清单管理电路 |
CN108664213B (zh) * | 2017-03-31 | 2024-01-19 | 北京忆恒创源科技股份有限公司 | 基于分布式缓存的原子写命令处理方法与固态存储设备 |
-
2019
- 2019-07-15 CN CN201910637085.7A patent/CN112231241B/zh active Active
-
2020
- 2020-07-15 WO PCT/CN2020/102123 patent/WO2021008552A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1729445A (zh) * | 2002-09-16 | 2006-02-01 | 英特尔公司 | 预取计算机系统中的数据 |
CN103176752A (zh) * | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
CN104166634A (zh) * | 2014-08-12 | 2014-11-26 | 华中科技大学 | 一种固态盘系统中的映射表缓存管理方法 |
CN108958700A (zh) * | 2017-05-22 | 2018-12-07 | 深圳市中兴微电子技术有限公司 | 一种先进先出数据缓存器及缓存数据的方法 |
CN108459826A (zh) * | 2018-02-01 | 2018-08-28 | 杭州宏杉科技股份有限公司 | 一种处理io请求的方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于时空局部性的层次化查询结果缓存机制;朱亚东等;《中文信息学报》;20160115(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112231241A (zh) | 2021-01-15 |
WO2021008552A1 (zh) | 2021-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628318B2 (en) | Cache sector usage prediction | |
US6282617B1 (en) | Multiple variable cache replacement policy | |
US9176856B2 (en) | Data store and method of allocating data to the data store | |
US7284095B2 (en) | Latency-aware replacement system and method for cache memories | |
US20130205089A1 (en) | Cache Device and Methods Thereof | |
JP2004530995A (ja) | 高速かつ正確なキャッシュウェイの選択 | |
GB2547306A (en) | Profiling cache replacement | |
US11836079B2 (en) | Storage management apparatus, storage management method, processor, and computer system | |
US10423534B2 (en) | Cache memory | |
CN106569959A (zh) | 一种基于ssd的缓存替换方法及系统 | |
KR102482516B1 (ko) | 메모리 어드레스 변환 | |
CN112540939A (zh) | 存储管理装置、存储管理方法、处理器和计算机系统 | |
US6145057A (en) | Precise method and system for selecting an alternative cache entry for replacement in response to a conflict between cache operation requests | |
US6049849A (en) | Imprecise method and system for selecting an alternative cache entry for replacement in response to a conflict between cache operation requests | |
US7472226B1 (en) | Methods involving memory caches | |
CN112231241B (zh) | 一种数据读取方法和装置、计算机可读存储介质 | |
US7587556B2 (en) | Store buffer capable of maintaining associated cache information | |
US9311988B2 (en) | Storage control system and method, and replacing system and method | |
US8051271B2 (en) | Translation of virtual to physical addresses | |
US11334488B2 (en) | Cache management circuits for predictive adjustment of cache control policies based on persistent, history-based cache control information | |
US7526610B1 (en) | Sectored cache memory | |
US7143239B2 (en) | Cache structure and methodology | |
CN113076267B (zh) | 一种基于热点汇集的地址转换方法和数据存储装置 | |
US8117393B2 (en) | Selectively performing lookups for cache lines | |
CN117687936A (zh) | 提高缓存命中率的方法、装置、设备及存储介质 |
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 |