用于控制存储器分配的方法和设备与流程

文档序号:13018924阅读:150来源:国知局
用于控制存储器分配的方法和设备与流程
本发明涉及用于控制存储器的存储器块的分配的方法和设备,该存储器被组织成包含多个存储器块组,该多个存储器块组中的每一个包含多个存储器块。此外,本发明涉及用于控制存储器的存储器块的分配的计算机程序。

背景技术:
在包括存储器和处理器的许多电子设备中,存在以下需要:出于一些使用目的,分配存储器的部分,并且随后当对于这些使用目的,不再需要它们时,释放所分配的部分。诸如路由器、交换机和网桥的网络元件是上述类型的电子设备的示例。网络元件接收数据帧,存储并处理所接收的数据帧,以及最后将数据帧转送到将该网络元件连接到其他网络元件的数据传送链路。许多网络元件包括一个或多个这样的存储器,其被组织成包含多个存储器块组,该多个存储器块组中的每一个包含多个存储器块。可以分配单个存储器块,例如用于存储数据帧或数据帧的部分,其正排队等候被处理或转送。控制存储器块的分配的进程从使用存储器的另一个进程接收对分配一个或多个存储器块的请求,并且响应于该请求,返回识别所分配的一个或多个存储器块的一个或多个地址。当不再需要所分配的存储器块时,使用存储器的进程返回识别可以被释放来等待进一步使用的存储器块的一个或多个地址。用于控制存储器块的分配的进程频繁处于使用中,因此,该进程应当使得有效利用高速缓冲存储器。在用于控制存储器分配的典型方法中,然而,情况并非如此,因为指示空闲和所分配的存储器块的位置的指针与存储器块协同被安放,因此,这些指针以分布式方式位于存储器的地址空间中。因此,在连续分配或释放操作中使用的数据项在地址空间中可能相互位于相对很远的地方。因此,典型的是,高速缓冲存储器包含仅被使用一两次的数据,以及在对该数据的下一使用之前,许多其他数据被使用并且被加载到高速缓冲存储器,因此,首先提及的数据可能在其下一使用之前从高速缓冲存储器被退出。作为必然的结果,没有有效利用高速缓冲存储器。

技术实现要素:
下面提供了简化的发明内容,以提供对各个发明实施例的一些方面的基本理解。该发明内容不是本发明的全面概述。其并不意在识别本发明的关键性或决定性元素,也不意在详述本发明的范围。下面的发明内容仅以简化方式提供了本发明的一些构思,作为本发明的示例性实施例的更详细描述的前奏。依据本发明的第一方面,提供了用于控制存储器的新设备,该存储器被组织成包含多个存储器块组,该多个存储器块组中的每一个包含多个存储器块。根据本发明的该设备包括处理器,其被配置成:-维护包含第一数据项的第一数据实体,使得对于存储器块组中的每一个都存在第一数据项,每一个第一数据项指示在与该第一数据项有关的存储器块组中存在多少空闲存储器块,以及-维护第二数据实体,使得对于存储器块组中的每一个都存在第二数据实体,以及每一个第二数据实体包含第二数据项,使得在每一个第二数据实体中的第二数据项的数量是至少在与该第二数据实体有关的存储器块组中的存储器块的数量,以及当与该第二数据实体有关的存储器块组的存储器块中的一个或多个空闲时,该第二数据实体的第二数据项中的一个或多个包含从与该第二数据实体有关的存储器块组的所有存储器块中识别空闲存储器块的指示符。该处理器被进一步配置成响应于接收对分配空闲存储器块的请求,执行下面的动作:-从第一数据实体搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块,-从第二数据实体中选择这样的第二数据实体,其与和所搜索的第一数据项有关的存储器块组有关,-从所选择的第二数据实体选择这样的第二数据项,其携载空闲存储器块的指示符,-至少部分基于(i)指示具有至少一个空闲存储器块的存储器块组的所搜索的第一数据项以及(ii)空闲存储器块的指示符,来形成识别待被分配的空闲存储器块的地址,以及-更新所搜索的第一数据项以与在与所搜索的第一数据项有关的存储器块组中的空闲存储器块的数量已减少一的情况相对应。在根据本发明的有利和示例性实施例的设备中,处理器被进一步配置成响应于接收识别待从分配释放的存储器块的地址,执行下面的动作:-确定包含待被释放的存储器块的存储器块组,-通过将一加到所确定的存储器块组的空闲存储器块的数量,来更新与所确定的存储器块组有关的第一数据项,-确定从所确定的存储器块组的所有存储器块中识别待被释放的存储器块的指示符,-从与所确定的存储器块组有关的第二数据实体确定这样的第二数据项,其不包含是空闲的任何其他存储器块的指示符,以及-将所确定的第二数据项设置成包含从所确定的存储器块组的所有存储器块中识别待被释放的存储器块的指示符。在每个分配和释放操作中使用包含第一数据项的上述第一数据实体。因此,在每一个分配或释放操作,可以以非常高的概率从高速缓冲存储器找到第一数据实体。并且,可以将第二数据实体安排成构成紧凑数据集,因为每一个第二数据项可以是仅几比特的数据元素。因此,在每一个分配或释放操作,同样,可以以良好概率从高速缓冲存储器找到与考虑中的存储器块组有关的第二数据实体。例如,在有例如48个存储器块组,每一个包含例如15个存储器块的情况下,每一个第一数据项可以是四比特,以及同样,每一个第二数据项可以是四比特。在该示例性情况下,第一数据实体的大小是48×4比特,其是24字节,以及每一个第二数据实体的大小是15×4比特,其小于8字节。在高速缓存行是例如32字节的情况下,第一数据实体适合单个高速缓存行,以及四个第二数据实体适合单个高速缓存行。整个数据结构,即第一数据实体和48个第二数据实体,适合仅13个高速缓存行。因此,在分配和释放操作时,高速缓存缺失是极不可能的,因此,可以有效利用高速缓冲存储器。依据本发明的第二方面,提供了用于控制存储器的新方法,所述存储器被组织成包含多个存储器块组,该多个存储器块组中的每一个包含多个存储器块。根据本发明的方法包括:-维护包含第一数据项的第一数据实体,使得对于存储器块组中的每一个都存在第一数据项,每一个第一数据项指示在与该第一数据项有关的存储器块组中存在多少空闲存储器块,以及-维护第二数据实体,使得对于存储器块组中的每一个都存在第二数据实体,以及每一个第二数据实体包含第二数据项,使得在每一个第二数据实体中的第二数据项的数量是至少在与该第二数据实体有关的存储器块组中的存储器块的数量,以及当与该第二数据实体有关的存储器块组的存储器块中的一个或多个空闲时,该第二数据实体的第二数据项中的一个或多个包含从与该第二数据实体有关的存储器块组的存储器块中识别空闲存储器块的指示符。该方法进一步包括响应于接收对分配空闲存储器块的请求,执行下面的动作:-从第一数据实体搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块,-从第二数据实体中选择这样的第二数据实体,其与和所搜索的第一数据项有关的存储器块组有关,-从所选择的第二数据实体选择这样的第二数据项,其携载空闲存储器块的指示符,-至少部分基于(i)指示具有至少一个空闲存储器块的存储器块组的所搜索的第一数据项以及(ii)空闲存储器块的指示符,来形成识别待被分配的空闲存储器块的第一地址,以及-更新所搜索的第一数据项以与在与所搜索的第一数据项有关的存储器块组中的空闲存储器块的数量已减少一的情况相对应。根据本发明的有利和示例性实施例的方法进一步包括响应于接收识别待从分配释放的存储器块的地址,执行下面的动作:-确定包含待被释放的存储器块的存储器块组,-通过将一加到所确定的存储器块组中的空闲存储器块的数量,来更新与所确定的存储器块组有关的第一数据项,-确定从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符,-从与所确定的存储器块组有关的第二数据实体确定这样的第二数据项,其不包含空闲的任何其他存储器块的指示符,以及-将所确定的第二数据项设置成包含从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符。依据本发明的第三方面,提供了用于控制存储器的新计算机程序,所述存储器被组织成包含多个存储器块组,该多个存储器块组中的每一个包含多个存储器块。根据本发明的计算机程序包括计算机可执行指令,其用于控制可编程处理器:-维护包含第一数据项的第一数据实体,使得对于存储器块组中的每一个都存在第一数据项,每一个第一数据项指示在与该第一数据项有关的存储器块组中存在多少空闲存储器块,以及-维护第二数据实体,使得对于存储器块组中的每一个都存在第二数据实体,以及每一个第二数据实体包含第二数据项,使得在每一个第二数据实体中的第二数据项的数量是至少在与该第二数据实体有关的存储器块组中的存储器块的数量,以及当与该第二数据实体有关的存储器块组的存储器块中的一个或多个空闲时,该第二数据实体的第二数据项中的一个或多个包含从与该第二数据实体有关的存储器块组的存储器块中识别空闲存储器块的指示符。该计算机程序进一步包括用于控制可编程处理器响应于接收对分配空闲存储器块的请求,执行下面的动作的计算机可执行指令:-从第一数据实体搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块,-从第二数据实体中选择这样的第二数据实体,其与和所搜索的第一数据项有关的存储器块组有关,-从所选择的第二数据实体选择这样的第二数据项,其携载空闲存储器块的指示符,-至少部分基于(i)指示具有至少一个空闲存储器块的存储器块组的所搜索的第一数据项以及(ii)空闲存储器块的指示符,来形成识别待被分配的空闲存储器块的第一地址,以及-更新所搜索的第一数据项以与在与所搜索的第一数据项有关的存储器块组中的空闲存储器块的数量已减少一的情况相对应。根据本发明的有利和示例性实施例的计算机程序进一步包括用于控制可编程处理器响应于接收识别待从分配释放的存储器块的地址,执行下面的动作的计算机可执行指令:-确定包含待被释放的存储器块的存储器块组,-通过将一加到所确定的存储器块组中的空闲存储器块的数量,来更新与所确定的存储器块组有关的第一数据项,-确定从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符,-从与所确定的存储器块组有关的第二数据实体确定这样的第二数据项,其不包含空闲的任何其他存储器块的指示符,以及-将所确定的第二数据项设置成包含从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符。依据本发明的第四方面,提供了新计算机程序产品。该计算机程序产品包括编码有根据本发明的计算机程序的非易失性计算机可读介质,例如光盘“CD”。在所附从属权利要求中描述了本发明的多个示例性实施例。当结合附图阅读时,从具体示例性实施例的下面描述,将最好理解关于构造和操作方法两者的本发明的各个示例性实施例,以及其另外目的和优势。动词“包括”在本文档中用作既不排除也不要求同样未记载的特征的存在的开放式限制。除非另外明确说明,在从属权利要求中记载的特征是可相互自由组合的。附图说明在下面参考附图更详细说明了本发明的示例性实施例及其优势,在附图中:图1示出根据本发明的示例性实施例的用于控制存储器分配的数据结构的示意图,图2示出根据本发明的示例性实施例的用于控制存储器分配的设备的示意图,以及图3示出根据本发明的示例性实施例的用于控制存储器分配的方法的流程图。具体实施方式图1示出根据本发明的示例性实施例的用于控制存储器分配的数据结构的示意图。存储器被安排成包含多个存储器块组,该多个存储器块组中的每一个包含多个存储器块。存储器块组有时被称为“管线”。在该示例性情况下,存储器具有N+1个存储器块组。数据结构包含第一数据实体101,其包含第一数据项,使得对于存储器块组中的每一个,存在一个第一数据项。因此,在该示例性情况下,在第一数据实体101中存在N+1个第一数据项。每一个第一数据项指示在与该第一数据项有关的存储器块组中的空闲存储器块的数量。在图1中所图示的示例性情况下,在与第一数据项“0”有关的存储器块组中存在三个空闲存储器块,以及在与第一数据项“N”有关的存储器块组中存在四个空闲存储器块。数据结构包括N+1个第二数据实体102、103、……、105,使得对于N+1个存储器块组中的每一个都存在一个第二数据实体。每一个第二数据实体包含第二数据项,使得在每一个第二数据实体中的第二数据项的数量是至少在与该第二数据实体有关的存储器块组中的存储器块的数量。例如,与第一数据项“0”和第二数据实体“0”有关的存储器块组包含M(0)个存储器块,因此,第二数据实体“0”包含至少M(0)个第二数据项,以及相应地,与第一数据项“N”和第二数据实体“N”有关的存储器块组包含M(N)个存储器块,因此,第二数据实体“N”包含至少M(N)个第二数据项。然而,通常有利的是,所有存储器块组包含相同数量的存储器块。当给定存储器块组的存储器块中的一个或多个空闲时,对应第二数据实体的第二数据项中的一个或多个包含从该存储器块组的所有存储器块中识别空闲存储器块的指示符。在图1中所图示的示例性情况下,在与第一数据项“0”有关的存储器块组中存在三个空闲存储器块,以及在与第一数据项“N”有关的存储器块组中存在四个空闲存储器块。第二数据实体102的第二数据项“M(0)-3”、“M(0)-2”和“M(0)-1”分别包含“a”、“b”和“c”,其是这三个空闲存储器块的指示符。对应地,第二数据实体105的第二数据项“M(N)-4”、“M(N)-3”、“M(N)-2”和“M(N)-1”分别包含“h”、“b”、“e”和“c”,其是在与第一数据项“N”有关的存储器块组中的四个空闲存储器块的指示符。当已接收了对分配空闲存储器块的请求时,从第一数据实体101搜索这样的第一数据项,其指示在对应存储器块组中存在至少一个空闲存储器块。该搜索可以是例如从第一数据项“0”开始的线性搜索,但是应当注意的是,这不是唯一可能的选择。对于另一个示例,第一数据实体101可以被安排成逻辑环,使得每一个第一数据项在该逻辑环中具有前继和后继,以及数据结构包含指针131,该指针131从逻辑环指示这样的第一数据项,其与包含先前分配的存储器块的存储器块组有关。该搜索从由指针131指示的第一数据项开始。在图1中,用箭头108图示了逻辑环,其示出了第一数据项“N”的后继是第一数据项“0”。在图1中所图示的示例性情况下,第一数据项“0”指示在与第一数据项“0”有关的存储器块组中存在三个空闲存储器块。接着,从所有第二数据实体中选择这样的第二数据实体,其与和第一数据项“0”有关的存储器块组有关。在图1中所图示的示例性情况下,第二数据实体102与和第一数据项“0”有关的存储器块组有关。从所选择的第二数据实体102,选择这样的第二数据项,其携载空闲存储器块的指示符。在图1中所图示的示例性情况下,每一个第二数据实体被展示为第二数据项的排序列表,以及空闲存储器块的指示符被放置在排序列表的末端。因此,在给定第一数据项是“n”的情况下,可以知道的是,对应第二数据实体的n个最后第二数据项是空闲存储器块的指示符。因此,第一数据项实际上是指向排序列表的指针,使得所指向的第二数据项和在排序列表中连续的第二数据项包含空闲存储器块的指示符。在图1中,用箭头106和107图示了第一数据项的指针说明。在图1中所图示的示例性情况下,可以从第二数据实体102的所有第二数据项中选择由第一数据项“0”指向的第二数据项“M(0)-3”。因此,待被分配的空闲存储器块是由指示符“a”所识别的存储器块。接着,将第一数据项“0”减少一降至2,作为必然的结果,将箭头106转移到指向第二数据实体102的第二数据项“M(0)-2”。应当注意的是,在排序列表中安排第二数据实体,其中空闲存储器块的指示符被放置在排序列表的末端,不是唯一可能的选择。可以根据各种预先确定的原则在第二数据实体中处理空闲存储器块的指示符。例如,每一个第二数据实体可以是排序列表,并且空闲存储器块的指示符可以被放置在该排序列表的始端。对于另一个示例,每一个第二数据实体可以是逻辑环,并且可以存在指向包含空闲存储器块的指示符的那些第二数据项的第一个或最后一个的环指针。至少部分基于(i)指示具有至少一个空闲存储器块的存储器块组的所搜索的第一数据项“0”和(ii)从考虑中的存储器块组的所有存储器块中识别所述空闲存储器块的指示符“a”,来形成识别正被分配的空闲存储器块的地址。地址可以是例如正被分配的存储器块的第一行的地址。有利的是,存储器块组被连续编号,以及在每一个存储器块组内,存储器块被连续编号。在这种情况下,识别空闲存储器块的指示符“a”有利地是该存储器块的编号。为了说明,我们考虑以下特殊情况:每一个存储器块组具有相同数量的存储器块,每一个存储器块具有相同大小,存储器块组位于存储器的地址空间的规则间隔处,以及在每一个存储器块组内,存储器块位于地址空间的规则间隔处。在这种情况下,可以根据公式形成识别正被分配的存储器块的地址Addr1:Addr1=kBG1×SBG+kB1×SB+C,(1)其中kBG1是与所搜索的第一数据实体有关的存储器块组的编号,kB1是正被分配的空闲存储器块的编号,即识别该存储器块的指示符,SBG是两个连续存储器块组的相互对应地址的差,SB是在与所搜索的第一数据实体有关的存储器块组中的两个连续存储器块的相互对应地址的差,以及C是偏移控制参数,在SBG=SB=0的情况下,其是值Addr1。两个连续存储器块组的相互对应地址可以是两个连续存储器块组的第一存储器块的第一行的地址,以及两个连续存储器块的相互对应地址可以是两个连续存储器块的第一行的地址。当在连续存储器块组之间没有间隔时,SBG是存储器块组的地址范围的长度。对应地,当在连续存储器块之间没有间隔时,SB是存储器块的地址范围的长度。当存储器块组从零开始连续编号,并且在每一个存储器块组内,存储器块从零开始连续编号时,公式(1)更易理解。在这种情况下,偏移控制参数C可以是基址,其是存储器块组“0”的存储器块“0”的第一行的地址。数据结构可以进一步包括一个或多个参数132,其指示上述SBG和/或SB和/或基址。在识别正被分配的存储器块的地址已被形成之后,其可以被递送给从之接收了对分配空闲存储器块的请求的进程。该进程可以是例如用于使例如网际协议“IP”数据分组的数据帧排队或出队的进程。当已接收了识别待从分配释放的存储器块的地址时,基于所述地址和关于存储器已如何被组织成存储器块组的信息,来确定包含待被释放的存储器块的存储器块组。在该示例性情况下,我们假设包含待被释放的存储器块的存储器块组是与第一数据项“N”有关的存储器块组。接着,将第一数据项“N”增加一升至5,作为必然结果,将箭头107转移到指向第二数据实体105的第二数据项“M(N)-5”。基于上述地址和关于所确定的存储器块组已如何被组织成存储器块的信息,来确定识别待被释放的存储器块的指示符。该指示符从所确定的存储器块组的所有存储器块中识别该存储器块。接着,对第二数据实体105的适当第二数据项进行更新以包含识别待被释放的存储器块的指示符。第一数据项“N”在其上述更新之前是四,因此,第二数据实体105的第二数据项“M(N)-5”不包含任何其他空闲存储器块的指示符。因此,该第二数据项“M(N)-5”可以用于存储识别待被释放的存储器块的指示符。释放操作通过将第二数据实体105的第二数据项“M(N)-5”设置成包含识别待被释放的存储器块的指示符来完成。为了说明,我们考虑以下特殊情况:每一个存储器块组具有相同数量的存储器块,每一个存储器块具有相同大小,存储器块组位于存储器的地址空间的规则间隔处,以及在每一个存储器块组内,存储器块位于地址空间的规则间隔处。我们进一步假设,存储器块组从零开始连续编号,并且在每一个存储器块组内,存储器块从零开始连续编号。在这种情况下,可以从下面公式获取包含待被释放的存储器块的存储器块组的编号kBG2:的整数部分,(2)其中Addr2是识别待被释放的存储器块的地址,以及“整数部分”是小于或等于考虑中的值的最大整数。例如,3.14的整数部分是3,以及4.999的整数部分是4。SBG是如结合公式(1)的两个连续存储器块组的相互对应地址的差,以及C是与结合公式(1)的相同的偏移控制参数。可以从下面公式获取待被释放的存储器块的编号kB2:其中SB是如结合公式(1)的两个连续存储器块的相互对应地址的差。应当注意的是,本发明的实施例并不限于上述特殊情况,其中每一个存储器块组具有相同数量的存储器块,每一个存储器块具有相同大小,存储器块组位于存储器的地址空间的规则间隔处,以及在每一个存储器块组内,存储器块位于地址空间的规则间隔处。例如,可能的是,存储器被组织成包含两种类型的存储器块组,使得存在具有更大存储器块的连续安放的存储器块组的第一集合以及具有更小存储器块的连续安放的存储器块组的第二集合。在该示例性情况下,可以将上述公式(1)-(3)分别应用到第一和第二存储器块组集,使得通过在每一种情况下将适当值给予偏移控制参数C来实现所需的地址偏移。图2示出根据本发明的示例性实施例的用于控制存储器205的设备的示意图,所述存储器被组织成包含多个存储器块组,多个存储器块组中的每一个包含多个存储器块。该设备可以是,例如但不一定,网际协议“IP”路由器、以太网交换机和/或多协议标签交换“MPLS”交换机。在下面文本中,其首位数字是“1”的参考数字,例如101、102,参考图1。该设备包括被配置成从存储器205读取数据的处理器201。处理器被有利地配置成使用高速缓冲存储器202来加速对存储器205的控制。此外,处理器可以被配置成操作第二和第三级高速缓冲存储器203和204,以对高速缓冲存储器202的有限容量进行补偿。处理器201被进一步配置成:-维护包含第一数据项的第一数据实体101,使得对于存储器块组中的每一个都存在第一数据项,每一个第一数据项指示在与该第一数据项有关的存储器块组中的空闲存储器块的数量,以及-维护第二数据实体102、103、104、......、105,使得对于存储器块组中的每一个都存在第二数据实体,以及每一个第二数据实体包含第二数据项,使得在每一个第二数据实体中的第二数据项的数量是至少在与该第二数据实体有关的存储器块组中的存储器块的数量,以及当与该第二数据实体有关的存储器块组的存储器块中的一个或多个空闲时,该第二数据实体的第二数据项中的一个或多个包含从与该第二数据实体有关的存储器块组的存储器块中识别空闲存储器块的指示符。处理器201被配置成响应于接收对分配空闲存储器块的请求,执行下面的动作:-从第一数据实体101搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块,-从第二数据实体102、103、104、......、105中选择这样的第二数据实体,其与和所搜索的第一数据项有关的存储器块组有关,-从所选择的第二数据实体选择这样的第二数据项,其携载空闲存储器块的指示符,以及-至少部分基于(i)指示具有至少一个空闲存储器块的存储器块组的所搜索的第一数据项以及(ii)空闲存储器块的指示符,来形成识别待被分配的空闲存储器块的地址。在根据本发明的示例性实施例的设备中,处理器201被配置成响应于接收识别待从分配释放的存储器块的地址,执行下面的动作:-确定包含待被释放的存储器块的存储器块组,-通过将一加到所确定的存储器块组的空闲存储器块的数量,来更新与所确定的存储器块组有关的第一数据项,-确定从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符,-从与所确定的存储器块组有关的第二数据实体确定这样的第二数据项,其不包含空闲的任何其他存储器块的指示符,以及-将所确定的第二数据项设置成包含从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符。在根据本发明的示例性实施例的设备中,处理器201被配置成:-将第二数据实体102、103、104、......、105中的每一个维护为属于所涉及的第二数据实体的第二数据项的排序列表,-从所选择的第二数据实体选择自排序列表的末端或始端的第N个第二数据项,以从所选择的第二数据实体选择这样的第二数据项,其携载空闲存储器块的指示符,N是在与所搜索的第一数据项有关的存储器块组中的空闲存储器块的数量。在根据本发明的示例性实施例的设备中,处理器201被配置成执行下面的动作,以从第一数据实体101搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块:-将第一数据实体维护为逻辑环,使得每一个第一数据项在该逻辑环中具有前继和后继,-维护指针,该指针从逻辑环指示这样的第一数据项,其与包含先前分配的存储器块的存储器块组有关,以及-从指针所指示的第一数据项开始,在逻辑环上前进,直到找到这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块。在根据本发明的示例性实施例的设备中,处理器201被配置成执行下面的动作,以从第一数据实体101搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块:-将第一数据实体维护为排序列表,使得每一个第一数据项在该排序列表中具有前继和/或后继,以及-从排序列表的始端开始,在排序列表上前进,直到找到这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块。在根据本发明的示例性实施例的设备中,处理器201被配置成维护连续编号的存储器块组和在每一个存储器块组内的连续编号的存储器块。处理器被配置成根据下面的公式形成识别待被分配的空闲存储器块的地址Addr1:Addr1=kBG1×SBG+kB1×SB+C,其中kBG1是与所搜索的第一数据实体有关的存储器块组的编号,kB1是待被分配的空闲存储器块的编号,SBG是两个连续存储器块组的相互对应地址的差,SB是在与所搜索的第一数据实体有关的存储器块组中的两个连续存储器块的相互对应地址的差,以及C是偏移控制参数,在SBG=SB=0的情况下,其是值Addr1。在根据本发明的示例性实施例的设备中,处理器201被配置成根据下面的公式,确定包含待被释放的存储器块的存储器块组的编号kBG2:的整数部分,其中Addr2是识别待被释放的存储器块的地址。处理器201被配置成根据下面的公式,确定待被释放的存储器块的编号kB2:在根据本发明的示例性实施例的设备中,处理器201被配置成:-维护第一数据实体101,使得第一数据实体包含48个第一数据项,其每一个包含四比特,以及-维护第二数据实体,使得每一个第二数据实体包括15个第二数据项,其每一个包含四比特。在上述示例性情况下,存在48个存储器块组,其每一个包含15个存储器块。每一个第一数据项101可以是四比特,因为在每一个存储器块组中,可以存在从0到15空闲存储器块,以及四比特足以表示从0到15的值。第二数据项102、103、104、......、105中的每一个也可以是四比特。在这种情况下,第一数据实体的大小是48×4比特,其是24字节,以及每一个第二数据实体的大小是15×4比特,其小于8字节。在高速缓存行是例如32字节的情况下,第一数据实体101适合单个高速缓存行,以及四个第二数据实体适合单个高速缓存行。整个数据结构,即第一数据实体和48个第二数据实体,适合仅13个高速缓存行。因此,在分配和释放操作时,高速缓存缺失是极不可能的,因此,可以有效利用高速缓冲存储器202。处理器201可以用一个或多个处理器电路来实现,其每一个可以是:提供有适当软件的可编程处理器电路;专用硬件处理器,诸如专用集成电路“ASIC”;或可配置的硬件处理器,诸如现场可编程门阵列“FPGA”。此外,可能的是,第一处理电路被配置成分配存储器块,以及第二处理电路被配置成从分配释放存储器块。图3示出根据本发明的示例性实施例的用于控制存储器的方法的流程图,所述存储器被组织成包含多个存储器块组,多个存储器块组中的每一个包含多个存储器块。该方法包括下面的动作:-动作301:维护包含第一数据项的第一数据实体,使得对于存储器块组中的每一个都存在第一数据项,每一个第一数据项指示在与该第一数据项有关的存储器块组中的空闲存储器块的数量,以及-动作302:维护第二数据实体,使得对于存储器块组中的每一个都存在第二数据实体,以及每一个第二数据实体包含第二数据项,使得在每一个第二数据实体中的第二数据项的数量是至少在与该第二数据实体有关的存储器块组中的存储器块的数量,以及当与该第二数据实体有关的存储器块组的存储器块中的一个或多个空闲时,该第二数据实体的第二数据项中的一个或多个包含从与该第二数据实体有关的存储器块组的存储器块中识别空闲存储器块的指示符。该方法进一步包括响应于接收对分配空闲存储器块的请求,执行下面的动作:-动作303:从第一数据实体搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块,-动作304:从第二数据实体中选择这样的第二数据实体,其与和所搜索的第一数据项有关的存储器块组有关,-动作305:从所选择的第二数据实体选择这样的第二数据项,其携载空闲存储器块的指示符,以及-动作306:至少部分基于(i)指示具有至少一个空闲存储器块的存储器块组的所搜索的第一数据项以及(ii)空闲存储器块的指示符,来形成识别待被分配的空闲存储器块的第一地址。根据本发明的示例性实施例的方法包括响应于接收识别待从分配释放的存储器块的地址,执行下面的动作:-动作307:确定包含待被释放的存储器块的存储器块组,-动作308:通过将一加到所确定的存储器块组中的空闲存储器块的数量,来更新与所确定的存储器块组有关的第一数据项,-动作309:确定从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符,-动作310:从与所确定的存储器块组有关的第二数据实体确定这样的第二数据项,其不包含空闲的任何其他存储器块的指示符,以及-动作311:将所确定的第二数据项设置成包含从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符。根据本发明的示例性实施例的方法包括:-将第二数据实体中的每一个维护为属于所涉及的第二数据实体的第二数据项的排序列表,-从所选择的第二数据实体选择自排序列表的末端或始端的第N个第二数据项,以从所选择的第二数据实体选择这样的第二数据项,其携载空闲存储器块的指示符,N是在与所搜索的第一数据项有关的存储器块组中的空闲存储器块的数量。根据本发明的示例性实施例的方法包括执行下面的动作,以从第一数据实体搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块:-将第一数据实体维护为逻辑环,使得每一个第一数据项在该逻辑环中具有前继和后继,-维护指针,该指针从逻辑环指示这样的第一数据项,其与包含先前分配的存储器块的存储器块组有关,以及-从指针所指示的第一数据项开始,在逻辑环上前进,直到找到这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块。根据本发明的示例性实施例的方法包括执行下面的动作,以从第一数据实体搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块:-将第一数据实体维护为排序列表,使得每一个第一数据项在该排序列表中具有前继和/或后继,以及-从排序列表的始端开始,在排序列表上前进,直到找到这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块。在根据本发明的示例性实施例的方法中,存储器块组被连续编号,以及在每一个存储器块组内,存储器块被连续编号。根据下面的公式形成识别待被分配的空闲存储器块的地址Addr1:Addr1=kBG1×SBG+kB1×SB+C,其中kBG1是与所搜索的第一数据实体有关的存储器块组的编号,kB1是待被分配的空闲存储器块的编号,SBG是两个连续存储器块组的相互对应地址的差,SB是在与所搜索的第一数据实体有关的存储器块组中的两个连续存储器块的相互对应地址的差,以及C是偏移控制参数,在SBG=SB=0的情况下,其是值Addr1。在根据本发明的示例性实施例的方法中,根据下面的公式,确定包含待被释放的存储器块的存储器块组的编号kBG2:的整数部分,以及根据下面的公式,确定待被释放的存储器块的编号kB2:其中Addr2是识别待被释放的存储器块的第二地址。在根据本发明的示例性实施例的方法中,第一数据实体包含48个第一数据项,其每一个包含四比特,以及每一个第二数据实体包括15个第二数据项,其每一个包含四比特。根据本发明的实施例的计算机程序包括用于控制存储器的软件模块,所述存储器被组织成包含多个存储器块组,多个存储器块组中的每一个包含多个存储器块。所述软件模块包括计算机可执行指令,其用于控制可编程处理器:-维护包含第一数据项的第一数据实体,使得对于存储器块组中的每一个都存在第一数据项,每一个第一数据项指示在与该第一数据项有关的存储器块组中的空闲存储器块的数量,以及-维护第二数据实体,使得对于存储器块组中的每一个都存在第二数据实体,以及每一个第二数据实体包含第二数据项,使得在每一个第二数据实体中的第二数据项的数量是至少在与该第二数据实体有关的存储器块组中的存储器块的数量,以及当与该第二数据实体有关的存储器块组的存储器块中的一个或多个空闲时,该第二数据实体的第二数据项中的一个或多个包含从与该第二数据实体有关的存储器块组的存储器块中识别空闲存储器块的指示符。软件模块进一步包括用于控制可编程处理器响应于接收对分配空闲存储器块的请求,执行下面的动作的计算机可执行指令:-从第一数据实体搜索这样的第一数据项,其指示在与该第一数据项有关的存储器块组中存在一个或多个空闲存储器块,-从第二数据实体中选择这样的第二数据实体,其与和所搜索的第一数据项有关的存储器块组有关,-从所选择的第二数据实体选择这样的第二数据项,其携载空闲存储器块的指示符,以及-至少部分基于(i)指示具有至少一个空闲存储器块的存储器块组的所搜索的第一数据项以及(ii)空闲存储器块的指示符,来形成识别待被分配的空闲存储器块的第一地址。在根据本发明的示例性实施例的计算机程序中,软件模块进一步包括用于控制可编程处理器响应于接收识别待从分配释放的存储器块的地址,执行下面的动作的计算机可执行指令:-确定包含待被释放的存储器块的存储器块组,-通过将一加到所确定的存储器块组中的空闲存储器块的数量,来更新与所确定的存储器块组有关的第一数据项,-确定从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符,-从与所确定的存储器块组有关的第二数据实体确定这样的第二数据项,其不包含空闲的任何其他存储器块的指示符,以及-将所确定的第二数据项设置成包含从所确定的存储器块组的存储器块中识别待被释放的存储器块的指示符。软件模块可以是例如用适当编程语言以及适于该编程语言和可编程处理器的编译器实现的子程序或函数。根据本发明的实施例的计算机程序产品包括编码有根据本发明的实施例的计算机程序的计算机可读介质,例如光盘“CD”。根据本发明的实施例的信号被编码以载送定义根据本发明的实施例的计算机程序的信息。在上面给出的描述中提供的具体示例不应当被解释为限制所附权利要求的范围和/或适用性。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1