CN107526691A - 一种缓存管理方法及装置 - Google Patents
一种缓存管理方法及装置 Download PDFInfo
- Publication number
- CN107526691A CN107526691A CN201610454789.7A CN201610454789A CN107526691A CN 107526691 A CN107526691 A CN 107526691A CN 201610454789 A CN201610454789 A CN 201610454789A CN 107526691 A CN107526691 A CN 107526691A
- Authority
- CN
- China
- Prior art keywords
- memory block
- message
- memory
- block
- address
- 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
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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/0893—Caches characterised by their organisation or structure
-
- 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
-
- 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/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
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
本发明公开了一种缓存管理方法,包括:为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表征所述报文的存储地址映射关系;为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表表征存储所述报文的第一存储块地址映射关系。本发明同时还公开了一种缓存管理装置。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种缓存管理方法及装置。
背景技术
使用缓存(例如静态随机存取存储器(SRAM,Static Random Access Memory)/动态随机存取存储器(DRAM,Dynamic Random Access Memory)等)时,都需要对缓存进行管理,简单的如先入先出队列(FIFO,First Input First Output),复杂的如各种链表。
而对缓存管理时面临着两个问题:一个问题是随着缓存容量的增加,管理缓存所需的资源就会增加;另一个问题是为了降低管理缓存所消耗的资源,通常会将缓存管理的粒度增大,这样就牺牲了缓存的利用率。
因此,如何能节省缓存管理的资源,同时又能兼顾缓存的利用率是目前亟待解决的问题。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种缓存管理方法及装置。
本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种缓存管理方法,包括:
为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;
基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表征所述报文的存储地址映射关系;
为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;
利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表征存储所述报文的第一存储块地址映射关系。
上述方案中,为接收到的报文分配至少一个第一存储块之前,所述方法还包括:
对所述报文进行长度统计,得到第一信息,所述第一信息表征所述报文的长度信息;
相应地,根据所述第一信息,为接收到的报文分配至少一个第一存储块。
上述方案中,对所述报文进行长度统计之前,所述方法还包括:
依据所述报文的类型,确定所述报文所属的第一队列;
将所述报文加入至所述第一队列。
上述方案中,为接收到的报文分配至少一个第一存储块时,一个第一存储块的N个存储单元占用完毕后,再占用下一个第一存储块。
上述方案中,为分配的每个第一存储块,确定其所属的第二存储块时,一个第二存储块的M个第一存储块均被注册后,再申请下一个第二存储块作为当前存储块所属的第二存储块。
本发明实施例还提供了一种缓存管理装置,包括:
分配单元,用于为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;
第一生成单元,用于基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表征所述报文的存储地址映射关系;
第一确定单元,用于为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;
第二生成单元,用于利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表表征存储所述报文的第一存储块地址映射关系。
上述方案中,所述装置还包括:
统计单元,用于对所述报文进行长度统计,得到第一信息,所述第一信息表征所述报文的长度信息;
相应地,所述分配单元,根据所述第一信息,为接收到的报文分配至少一个第一存储块。
上述方案中,所述装置还包括:
第二确定单元,用于依据所述报文的类型,确定所述报文所属的第一队列;以及将所述报文加入至所述第一队列。
上述方案中,所述分配单元,用于为接收到的报文分配至少一个第一存储块时,一个第一存储块的N个存储单元占用完毕后,再占用下一个第一存储块。
上述方案中,所述第一确定单元,用于为分配的每个第一存储块,确定其所属的第二存储块时,一个第二存储块的M个第一存储块均被注册后,再申请下一个第二存储块作为当前存储块所属的第二存储块。
本发明实施例提供的缓存管理方法及装置,为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表征所述报文的存储地址映射关系;为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表征存储所述报文的第一存储块地址映射关系,引入了虚拟存储块(第二存储块),如此,可以有效地节省缓存管理资源。
同时,由于采用第一映射关系表及第二映射关系表,与现有的采用一层CHUNK的方式相比,第一块中存储单元的数量明显减少,同时还能实现与其相同的功能,如此,可以有效地提高缓存的使用效率。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1A-B为相关技术中一种缓存管理方法示意图;
图2A-B为相关技术中另一种缓存管理方法示意图;
图3为本发明实施例一缓存管理方法流程示意图;
图4为本发明实施例二缓存管理的方式示意图;
图5为本发明实施例三缓存管理装置结构示意图。
具体实施方式
下面结合附图及实施例对本发明再作进一步详细的描述。
目前,管理缓存通常的做法是将缓存的存储空间划分成小的存储单元,并对每个存储单元进行编址,通过对编址后的地址进行管理,从而间接实现对缓存的管理。举个例子来说,如图1A所示,将一个大小为1GB的缓存按照128B的存储单元进行划分,则可以得到8M个存储单元,那么就可以使用23比特(bit)对8M个存储单元进行编址以便对缓存进行管理,对应的地址范围为23’h000000~23’h7FFFFF,如图1B所示。
那么,就需要184Mbit(23bit x 8M)的地址存储资源。而地址一般存储在SRAM中,基于目前比较通用的器件制作工艺(28nm的工艺(晶体管的尺寸大约为28nm))下,184Mbit的SRAM需要占用大约50mm2的面积,所以说还是占用了相当大的面积,消耗了比较大的资源。
为了解决传统缓存管理方案消耗过多资源的问题,有人提出了一种块(CHUNK)方案。其基本思想是:将多个存储单元组成一个大的存储单元,链表管理以大的存储单元为单位来管理缓存。举个例子来说,如图2A所示,将图1A所示的N个小存储单元组成一个大的存储块(CHUNK),比如将原来的64个小存储单元(每个小存储单元为128B)组成一个CHUNK,此时每个小存储单元的地址为:存储单元地址={Chunk_AddrX,6'd0}+offset。这样,如图2B所示,CHUNK的数量为128K,那么管理CHUNK所需要的SRAM资源为2.25Mbit(18bit x 128K)。
从上面的描述中可以看出,CHUNK方案有效地降低了链表的资源。但是,很多情况下CHUNK内的小存储单元不能共享,导致了使用CHUNK方案时,存在一定的缓存空间浪费,降低了缓存的使用效率。
为了解决CHUNK方案中存储空间浪费的问题,最简单的方法是将CHUNK内的小存储单元数量减少。举个例子来说,如果将每个CHUNK包含64个小存储单元,改为每个CHUNK包含8个小存储单元,这样管理链表的资源虽然增加到了20Mbit,但是利用率却提升了8倍。但是,这种缩减CHUNK内存储单元数量的方法会面临两个问题,一是管理链表的资源会相应增加,二是随着CHUNK内存储单元数量的减少,使用CHUNK组成的链表应对RAM访问延时的能力会越来越低,例如在使用当前CHUNK时,会去获取当前CHUNK后面的CHUNK节点,如果在当前CHUNK内的存储单元已经使用完毕,但是后面的CHUNK节点尚未获取到,此时链表的操作就要停止,从而影响链表操作的效率。
因此,如何能节省缓存管理的资源,同时又能兼顾缓存的利用率是目前亟待解决的问题。
基于此,在本发明的各种实施例中:为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表表征所述报文的存储地址映射关系;为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表表征存储所述报文的第一存储块地址映射关系。
实施例一
本发明实施例提供一种缓存管理方法,如图3所示,该方法包括以下步骤:
步骤301:为接收到的报文分配至少一个第一存储块,以存储所述报文;
这里,所述第一存储块包含N个存储单元;N为大于等于2的整数。
实际应用时,如图4所示,本发明实施例中,对于一个缓存,采用两层CHUNK的方式来管理,即将CHUNK划分成两层,内层CHUNK(第一存储块)由小的存储单元构成,外层CHUNK(第二存储块)由内层CHUNK组成。
其中,需要根据缓存的大小、以及管理的粒度大小来确定每个内层CHUNK所包含的存储单元的个数。换句话说,根据缓存的大小、以及管理的粒度大小来确定N的取值。
所述管理的粒度大小是指:缓存所划分的最小存储单元。举个例子来说,假设内存大小为1GB,按照每128B为单位划分存储单元,则可以得到8M个存储单元,此时所述管理的粒度可以理解为128B的存储单元。
在为接收到的报文分配至少一个第一存储块时,一个第一存储块的N个存储单元占用完毕后,再占用下一个第一存储块。通俗点讲,为报文分配内层CHUNK时,根据地址链表,先申请一个内层CHUNK,一个内层CHUNK包含N个存储单元,即对应N个存储地址,当这N个存储地址使用完毕后,才能再去申请另一个内层CHUNK。
需要说明的是:属于同一个队列的两个报文可以共用一个内层CHUNK,而不同队列的两个报文是不能共用一个内层CHUNK的,不然会造成读取的混乱。
实际应用时,需要基于所述报文的长度来为所述报文分配第一存储块。
基于此,在一实施例中,对所述报文进行长度统计之前,该方法还可以包括:
对所述报文进行长度统计,得到第一信息,所述第一信息表征所述报文的长度信息;
相应地,根据所述第一信息,为接收到的报文分配至少一个第一存储块。
另外,实际应用时,一般报文的存储是基于队列来实现的,换句话说,每个队列维护一个地址链表,以便清楚区分各队列。
其中,根据需要确定报文所对应的队列。
基于此,在一实施例中,对所述报文进行长度统计之前,该方法还可以包括:
依据所述报文的类型,确定所述报文所属的第一队列;
将所述报文加入至所述第一队列。
步骤302:基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;
这里,所述第一映射关系表征所述报文的存储地址映射关系。
所述报文所占据的存储单元在第一存储块中的位置,可以理解为:所述报文所占据的存储单元是第一存储块中的第几个存储单元。可以使用偏移量(offset)来表达。举个例子来说,假设第一存储块中总共有8个存储单元,所述报文所占据的存储单元是第一存储块中的第4个存储单元,则对应的offset为4,采用第一存储块地址并结合offset,即可得到所述报文的第一映射关系。
步骤303:为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;
这里,M为大于等于2的整数。
与确定N的取值方式类似,实际应用时,需要根据缓存的大小、以及管理的粒度大小来确定每个外层CHUNK(第二存储块)所包含的内层CHUNK(第一存储块的个数)。换句话说,根据缓存的大小、以及管理的粒度大小来确定M的取值。
而且,为分配的每个第一存储块,确定其所属的第二存储块时,一个第二存储块的M个第一存储块均被注册后,再申请下一个第二存储块作为当前存储块所属的第二存储块。通俗点讲,每个外层CHUNK注册有M个内层CHUNK后,后续被申请到的内层CHUNK就要新申请一个外层CHUNK,并在新申请的外层CHUNK中注册,以实现通过外层CHUNK地址即可查找到对应内层CHUNK地址。
步骤304:利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系。
这里,所述第二映射关系表征存储所述报文的第一存储块地址映射关系。
本发明实施例提供的缓存管理方法,为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表征所述报文的存储地址映射关系;为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表征存储所述报文的第一存储块地址映射关系,引入了虚拟存储块(第二存储块),如此,可以有效地节省缓存管理资源。
同时,由于采用第一映射关系表及第二映射关系表,与现有的采用一层CHUNK的方式相比,第一块中存储单元的数量明显减少,同时还能实现与其相同的功能,如此,可以有效地提高缓存的使用效率。
另外,对于第二存储块,获取下一个第二存储块节点的时间可以延长至N*M个存储操作周期,使用链表应对RAM访问的时延会增加,如此,能有效地提高链表操作效率。
实施例二
在实施例一的基础上,本实施例以缓存大小为1GB,缓存按照128B的存储单元划分,即管理的粒度大小为128B。
依据换存储的大小以及缓存管理的粒度大小来确定每个内层CHUNK所包含的存储单元的个数为8,同时确定每个外层CHUNK包含8个内层CHUNK。如图4所示。
当一个报文加入队列后,根据报文的长度信息,先申请一个内层CHUNK,内层CHUNK包含了八个地址,分别是Addr 0~7,直到这八个地址使用完毕后才会再申请另一个内层CHUNK,并以申请的内层CHUNK和报文所占据的存储单元在内层CHUNK中的第几个存储单元(偏移量(offset))为信息来注册,即生成第一映射关系表。
同时,每申请一个内层CHUNK,都要去内层到外层CHUNK表中注册一下,即生成第二映射关系表,以便可以通过外层CHUNK地址来查到该内层CHUNK地址。内层CHUNK注册时,以外层CHUNK地址和该内层CHUNK是外层CHUNK的第几个内层CHUNK为信息来注册。内层到外层CHUNK注册的这张表,可以称作内层外层映射表。
第一个被申请到的内层CHUNK,同时会申请一个外层CHUNK用于注册,每个外层CHUNK注册有8个内层CHUNK后,后续被申请到的内层CHUNK就要新申请一个外层CHUNK,并在新申请的外层CHUNK中注册。所以外层CHUNK中注册了8个内层CHUNK,相当于64个存储单元,外层CHUNK获取其下一个CHUNK节点的时间可以延长到64个存储操作周期。
从上面的描述中可以看出,外层CHUNK并不是真实存在的物理CHUNK,可以理解为虚拟CHUNK,所以本发明实施例提供的方案可以理解为是一种虚拟CHUNK的方案。
本发明实施例提供的方案,采用两层CHUNK的方式,管理CHUNK所需要的SRAM资源可以明显减少,可以有效地节省缓存管理资源。同时,每个内层CHUNK包含8个存储单元,而每个外层CHUNK包含8个内层CHUNK,相当于64个存储单元,如此,与现有的采用一层CHUNK的方式相比,第一块中存储单元的数量明显减少,同时还能实现与其相同的功能,如此,可以有效地提高缓存的使用效率。
另外,外层CHUNK获取其下一个CHUNK节点的时间可以延长到64个存储操作周期,如此,有效地提高了链表的操作效率。
综上所述,与现有的技术方案相比,采用本发明实施例提供的方案,可以在存储空间利用率和链表管理资源以及链表操作效率之间取得很好的折中效果。
实施例三
为实现本发明实施例提供的方法,本实施例提供一种缓存管理装置,如图5所示,该装置包括:
分配单元51,用于为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;
第一生成单元52,用于基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表征所述报文的存储地址映射关系;
第一确定单元53,用于为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;
第二生成单元54,用于利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表表征存储所述报文的第一存储块地址映射关系。
其中,实际应用时,如图4所示,本发明实施例中,对于一个缓存,采用两层CHUNK的方式来管理,即将CHUNK划分成两层,内层CHUNK(第一存储块)由小的存储单元构成,外层CHUNK(第二存储块)由内层CHUNK组成。
这里,需要根据缓存的大小、以及管理的粒度大小来确定每个内层CHUNK所包含的存储单元的个数。换句话说,根据缓存的大小、以及管理的粒度大小来确定N的取值。
所述管理的粒度大小是指:缓存所划分的最小存储单元。举个例子来说,假设内存大小为1GB,按照每128B为单位划分存储单元,则可以得到8M个存储单元,此时所述管理的粒度可以理解为128B的存储单元。
在为接收到的报文分配至少一个第一存储块时,所述分配单元51一个第一存储块的N个存储单元占用完毕后,再占用下一个第一存储块。通俗点讲,为报文分配内层CHUNK时,根据地址链表,先申请一个内层CHUNK,一个内层CHUNK包含N个存储单元,即对应N个存储地址,当这N个存储地址使用完毕后,才能再去申请另一个内层CHUNK。
需要说明的是:属于同一个队列的两个报文可以共用一个内层CHUNK,而不同队列的两个报文是不能共用一个内层CHUNK的,不然会造成读取的混乱。
实际应用时,需要基于所述报文的长度来为所述报文分配第一存储块。
基于此,在一实施例中,该装置还可以包括:
统计单元,用于对所述报文进行长度统计,得到第一信息,所述第一信息表征所述报文的长度信息;
相应地,所述分配单元51,根据所述第一信息,为接收到的报文分配至少一个第一存储块。
另外,实际应用时,一般报文的存储是基于队列来实现的,换句话说,每个队列维护一个地址链表,以便清楚区分各队列。
其中,根据需要确定报文所对应的队列。
基于此,在一实施例中,该装置还可以包括:
第二确定单元,用于依据所述报文的类型,确定所述报文所属的第一队列;以及将所述报文加入至所述第一队列。
所述报文所占据的存储单元在第一存储块中的位置,可以理解为:所述报文所占据的存储单元是第一存储块中的第几个存储单元。可以使用偏移量(offset)来表达。举个例子来说,假设第一存储块中总共有8个存储单元,所述报文所占据的存储单元是第一存储块中的第4个存储单元,则对应的offset为4,采用第一存储块地址并结合offset,即可得到所述报文的第一映射关系。
与确定N的取值方式类似,实际应用时,需要根据缓存的大小、以及管理的粒度大小来确定每个外层CHUNK(第二存储块)所包含的内层CHUNK(第一存储块的个数)。换句话说,根据缓存的大小、以及管理的粒度大小来确定M的取值。
而且,为分配的每个第一存储块,确定其所属的第二存储块时,一个第二存储块的M个第一存储块均被注册后,所述第一确定单元53再申请下一个第二存储块作为当前存储块所属的第二存储块。通俗点讲,每个外层CHUNK注册有M个内层CHUNK后,后续被申请到的内层CHUNK就要新申请一个外层CHUNK,并在新申请的外层CHUNK中注册,以实现通过外层CHUNK地址即可查找到对应内层CHUNK地址。
实际应用时,所述分配单元51、第一生成单元52、第一确定单元、第二生成单元、统计单元以及第二确定单元可由缓存管理装置中的中央处理器(CPU,Central ProcessingUnit)、微处理器(MCU,Micro Control Unit)、数字信号处理器(DSP,Digital SignalProcessor)或可编程逻辑阵列(FPGA,Field-Programmable Gate Array)实现。
本发明实施例提供的缓存管理装置,所述分配单元51为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;所述第一生成单元52基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表征所述报文的存储地址映射关系;所述第一确定单元53为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;所述第二生成单元54利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表征存储所述报文的第一存储块地址映射关系,引入了虚拟存储块(第二存储块),如此,可以有效地节省缓存管理资源。
同时,由于采用第一映射关系表及第二映射关系表,与现有的采用一层CHUNK的方式相比,第一块中存储单元的数量明显减少,同时还能实现与其相同的功能,如此,可以有效地提高缓存的使用效率。
另外,对于第二存储块,获取下一个第二存储块节点的时间可以延长至N*M个存储操作周期,使用链表应对RAM访问的时延会增加,如此,能有效地提高链表操作效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种缓存管理方法,其特征在于,所述方法包括:
为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;
基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表征所述报文的存储地址映射关系;
为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;
利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表征存储所述报文的第一存储块地址映射关系。
2.根据权利要求1所述的方法,其特征在于,为接收到的报文分配至少一个第一存储块之前,所述方法还包括:
对所述报文进行长度统计,得到第一信息,所述第一信息表征所述报文的长度信息;
相应地,根据所述第一信息,为接收到的报文分配至少一个第一存储块。
3.根据权利要求2所述的方法,其特征在于,对所述报文进行长度统计之前,所述方法还包括:
依据所述报文的类型,确定所述报文所属的第一队列;
将所述报文加入至所述第一队列。
4.根据权利要求1所述的方法,其特征在于,为接收到的报文分配至少一个第一存储块时,一个第一存储块的N个存储单元占用完毕后,再占用下一个第一存储块。
5.根据权利要求1所述的方法,其特征在于,为分配的每个第一存储块,确定其所属的第二存储块时,一个第二存储块的M个第一存储块均被注册后,再申请下一个第二存储块作为当前存储块所属的第二存储块。
6.一种缓存管理装置,其特征在于,所述装置包括:
分配单元,用于为接收到的报文分配至少一个第一存储块,以存储所述报文;所述第一存储块包含N个存储单元;N为大于等于2的整数;
第一生成单元,用于基于分配的第一存储块地址以及报文所占据的存储单元在第一存储块中的位置,生成第一映射关系表;所述第一映射关系表征所述报文的存储地址映射关系;
第一确定单元,用于为分配的每个第一存储块,确定其所属的第二存储块;所述第二存储块包含M个第一存储块;M为大于等于2的整数;
第二生成单元,用于利用所述的第二存储块的地址及第一存储块在第二存储块中的位置,生成第二映射关系表;所述第二映射关系表表征存储所述报文的第一存储块地址映射关系。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
统计单元,用于对所述报文进行长度统计,得到第一信息,所述第一信息表征所述报文的长度信息;
相应地,所述分配单元,根据所述第一信息,为接收到的报文分配至少一个第一存储块。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二确定单元,用于依据所述报文的类型,确定所述报文所属的第一队列;以及将所述报文加入至所述第一队列。
9.根据权利要求6所述的装置,其特征在于,所述分配单元,用于为接收到的报文分配至少一个第一存储块时,一个第一存储块的N个存储单元占用完毕后,再占用下一个第一存储块。
10.根据权利要求9所述的装置,其特征在于,所述第一确定单元,用于为分配的每个第一存储块,确定其所属的第二存储块时,一个第二存储块的M个第一存储块均被注册后,再申请下一个第二存储块作为当前存储块所属的第二存储块。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610454789.7A CN107526691B (zh) | 2016-06-21 | 2016-06-21 | 一种缓存管理方法及装置 |
PCT/CN2017/081404 WO2017219749A1 (zh) | 2016-06-21 | 2017-04-21 | 一种缓存管理方法、装置及计算机存储介质 |
EP17814487.9A EP3474147B1 (en) | 2016-06-21 | 2017-04-21 | Cache management method and device, and computer storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610454789.7A CN107526691B (zh) | 2016-06-21 | 2016-06-21 | 一种缓存管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107526691A true CN107526691A (zh) | 2017-12-29 |
CN107526691B CN107526691B (zh) | 2020-06-02 |
Family
ID=60735424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610454789.7A Active CN107526691B (zh) | 2016-06-21 | 2016-06-21 | 一种缓存管理方法及装置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3474147B1 (zh) |
CN (1) | CN107526691B (zh) |
WO (1) | WO2017219749A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598669A (zh) * | 2022-03-07 | 2022-06-07 | 潍柴动力股份有限公司 | 一种报文的存储方法、装置及设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6992620B2 (ja) * | 2018-03-14 | 2022-01-13 | 日本電信電話株式会社 | 光信号送信器 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0392895A2 (en) * | 1989-04-13 | 1990-10-17 | Sundisk Corporation | Flash EEprom system |
US5513336A (en) * | 1992-06-04 | 1996-04-30 | Emc Corporation | System and method for determining when and what position in cache memory to store data elements utilizing least and last accessed data replacement method |
CN1717664A (zh) * | 2002-11-26 | 2006-01-04 | 先进微装置公司 | 包含用于支持每周期多次存取的高速缓存存储器的微处理器 |
CN101009541A (zh) * | 2006-01-23 | 2007-08-01 | 华为技术有限公司 | 正交频分多址系统的干扰协调方法与装置 |
CN101162441A (zh) * | 2007-11-09 | 2008-04-16 | 华为技术有限公司 | 数据的存取装置和方法 |
CN101504670A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 数据操作方法、系统、客户端和数据服务器 |
CN101997918A (zh) * | 2010-11-11 | 2011-03-30 | 清华大学 | 异构san环境中的海量存储资源按需分配的实现方法 |
CN102360342A (zh) * | 2011-10-11 | 2012-02-22 | 中国人民解放军国防科学技术大学 | 海量影像数据快速存储显示固态硬盘 |
CN102411543A (zh) * | 2011-11-21 | 2012-04-11 | 华为技术有限公司 | 缓存地址的处理方法和装置 |
CN102968381A (zh) * | 2012-11-19 | 2013-03-13 | 浪潮电子信息产业股份有限公司 | 一种利用固态硬盘提高快照性能的方法 |
CN102968382A (zh) * | 2012-12-06 | 2013-03-13 | 华为技术有限公司 | 一种空闲存储单元的查找方法及装置 |
CN103379156A (zh) * | 2012-04-24 | 2013-10-30 | 深圳市腾讯计算机系统有限公司 | 实现存储空间动态均衡的方法、系统和装置 |
CN103731368A (zh) * | 2012-10-12 | 2014-04-16 | 中兴通讯股份有限公司 | 一种处理报文的方法和装置 |
US20140325142A1 (en) * | 2013-04-29 | 2014-10-30 | International Business Machines Corporation | Input/Output De-Duplication Based on Variable-Size Chunks |
WO2015034954A1 (en) * | 2013-09-03 | 2015-03-12 | Sandisk Technologies Inc. | Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses |
CN104461390A (zh) * | 2014-12-05 | 2015-03-25 | 华为技术有限公司 | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 |
CN104572498A (zh) * | 2014-12-26 | 2015-04-29 | 曙光信息产业(北京)有限公司 | 报文的缓存管理方法和装置 |
US9092486B2 (en) * | 2014-01-02 | 2015-07-28 | Advanced Micro Devices, Inc. | Extensible I/O activity logs |
US20150261798A1 (en) * | 2013-11-21 | 2015-09-17 | Upthere, Inc. | Maintaining and using a cache of child-to-parent mappings in a content-addressable storage system |
CN104956309A (zh) * | 2013-01-25 | 2015-09-30 | 株式会社日立制作所 | 存储系统及数据管理方法 |
-
2016
- 2016-06-21 CN CN201610454789.7A patent/CN107526691B/zh active Active
-
2017
- 2017-04-21 EP EP17814487.9A patent/EP3474147B1/en active Active
- 2017-04-21 WO PCT/CN2017/081404 patent/WO2017219749A1/zh unknown
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0392895A2 (en) * | 1989-04-13 | 1990-10-17 | Sundisk Corporation | Flash EEprom system |
US5513336A (en) * | 1992-06-04 | 1996-04-30 | Emc Corporation | System and method for determining when and what position in cache memory to store data elements utilizing least and last accessed data replacement method |
CN1717664A (zh) * | 2002-11-26 | 2006-01-04 | 先进微装置公司 | 包含用于支持每周期多次存取的高速缓存存储器的微处理器 |
CN101009541A (zh) * | 2006-01-23 | 2007-08-01 | 华为技术有限公司 | 正交频分多址系统的干扰协调方法与装置 |
CN101162441A (zh) * | 2007-11-09 | 2008-04-16 | 华为技术有限公司 | 数据的存取装置和方法 |
CN101504670A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 数据操作方法、系统、客户端和数据服务器 |
CN101997918A (zh) * | 2010-11-11 | 2011-03-30 | 清华大学 | 异构san环境中的海量存储资源按需分配的实现方法 |
CN102360342A (zh) * | 2011-10-11 | 2012-02-22 | 中国人民解放军国防科学技术大学 | 海量影像数据快速存储显示固态硬盘 |
CN102411543A (zh) * | 2011-11-21 | 2012-04-11 | 华为技术有限公司 | 缓存地址的处理方法和装置 |
CN103379156A (zh) * | 2012-04-24 | 2013-10-30 | 深圳市腾讯计算机系统有限公司 | 实现存储空间动态均衡的方法、系统和装置 |
CN103731368A (zh) * | 2012-10-12 | 2014-04-16 | 中兴通讯股份有限公司 | 一种处理报文的方法和装置 |
CN102968381A (zh) * | 2012-11-19 | 2013-03-13 | 浪潮电子信息产业股份有限公司 | 一种利用固态硬盘提高快照性能的方法 |
CN102968382A (zh) * | 2012-12-06 | 2013-03-13 | 华为技术有限公司 | 一种空闲存储单元的查找方法及装置 |
CN104956309A (zh) * | 2013-01-25 | 2015-09-30 | 株式会社日立制作所 | 存储系统及数据管理方法 |
US20140325142A1 (en) * | 2013-04-29 | 2014-10-30 | International Business Machines Corporation | Input/Output De-Duplication Based on Variable-Size Chunks |
WO2015034954A1 (en) * | 2013-09-03 | 2015-03-12 | Sandisk Technologies Inc. | Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses |
US20150261798A1 (en) * | 2013-11-21 | 2015-09-17 | Upthere, Inc. | Maintaining and using a cache of child-to-parent mappings in a content-addressable storage system |
US9092486B2 (en) * | 2014-01-02 | 2015-07-28 | Advanced Micro Devices, Inc. | Extensible I/O activity logs |
CN104461390A (zh) * | 2014-12-05 | 2015-03-25 | 华为技术有限公司 | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 |
CN104572498A (zh) * | 2014-12-26 | 2015-04-29 | 曙光信息产业(北京)有限公司 | 报文的缓存管理方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598669A (zh) * | 2022-03-07 | 2022-06-07 | 潍柴动力股份有限公司 | 一种报文的存储方法、装置及设备 |
CN114598669B (zh) * | 2022-03-07 | 2024-03-19 | 潍柴动力股份有限公司 | 一种报文的存储方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3474147A4 (en) | 2019-07-03 |
WO2017219749A1 (zh) | 2017-12-28 |
EP3474147A1 (en) | 2019-04-24 |
EP3474147B1 (en) | 2020-12-02 |
CN107526691B (zh) | 2020-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678172B (zh) | 一种本地数据缓存管理方法及装置 | |
CN117971715A (zh) | 多处理器系统中的中继一致存储器管理 | |
CN105094751B (zh) | 一种用于流式数据并行处理的内存管理方法 | |
KR101974491B1 (ko) | 축출 시스템, 축출 방법 및 컴퓨터 판독가능 매체 | |
US11363339B2 (en) | Scalable light-weight protocols for wire-speed packet ordering | |
JP2013513884A (ja) | 高速仮想メモリシステムでデータを保存するためのシステムおよび方法 | |
CN108647155B (zh) | 一种基于深度学习的多级cache共享的方法和装置 | |
CN105892955A (zh) | 一种管理存储系统的方法及设备 | |
CN109408411A (zh) | 基于数据访问次数的GPGPU的L1 Cache管理方法 | |
WO2021194616A1 (en) | Load balancing for memory channel controllers | |
CN106209681B (zh) | 一种队列管理方法和装置 | |
CN117093371B (zh) | 缓存资源分配方法、装置、电子设备和存储介质 | |
US20110320722A1 (en) | Management of multipurpose command queues in a multilevel cache hierarchy | |
CN108351838A (zh) | 使用聚合存储器管理单元(mmu)提供存储器管理功能 | |
CN107526691A (zh) | 一种缓存管理方法及装置 | |
CN106126434B (zh) | 中央处理器的缓存区的缓存行的替换方法及其装置 | |
Hur et al. | Adaptive linear address map for bank interleaving in DRAMs | |
CN101341471B (zh) | 动态高速缓存管理的设备和方法 | |
Sakakibara et al. | Accelerating blockchain transfer system using FPGA-based NIC | |
Kim et al. | Quantifying the performance and energy efficiency of advanced cache indexing for gpgpu computing | |
US20210255793A1 (en) | System and method for managing conversion of low-locality data into high-locality data | |
US10339052B2 (en) | Massive access request for out-of-core textures by a parallel processor with limited memory | |
Sivaramakrishnan et al. | Next generation SPARC processor cache hierarchy | |
US11775431B2 (en) | Cache memory with randomized eviction | |
US8307165B1 (en) | Sorting requests to the DRAM for high page locality |
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 |