用于平衡多个存储器缓冲区大小的系统及其方法技术方案

技术编号:2859475 阅读:290 留言:0更新日期:2012-04-11 18:40
一种用于平衡多个存储器缓冲区大小的系统包括分区为多个子组的存储器,每一个子组都包含相似大小的缓冲区。该系统进一步包括存储器管理器,该存储器管理器通过存储和访问缓冲区窃用历史队列中的缓冲区窃用历史记录来管理对缓冲区空间的请求。

【技术实现步骤摘要】

一般来说,本专利技术涉及计算机系统存储器管理系统的领域,具体来说,涉及可变大小存储器分区和分配。
技术介绍
在过去的几十年中,计算机越来越普及,并显著地渗透到生活的主流中。随着消费者越来越多地使用,消费者的信赖程度越来越强,从而加强了对此信息门户提供多样化的功能的需求。随着消费者寻求更快的信息访问,对信息的满意度的周期时间不断地缩短。当今,在典型的实现方式中,信息以位和字节的形式存储在设备的存储器中,并用存储器管理技术进行检索。随着对信息的需求在较短的时间持续扩大,对存储器管理的需求在重要性方面越来越强。在典型的现有存储器管理方案中,存储器被分区为叫做“缓冲区”的离散的区域,以供使用。所要求的信息从诸如硬盘、软盘、磁带及其他非易失性存储器之类的辅助存储器中检索。在检索数据之后,由于性能原因,在被覆盖之前的一段时间内,它存储或“缓存”在存储器缓冲区中。让最流行的数据缓存在常驻存储器中或存储器缓冲区中,可以使发出请求的应用程序持续地使用数据。此外,与更快的但是比较昂贵的高速缓存或常驻存储器相比,将数据保留在存储器缓冲区或常驻存储器中减少甚至消除了辅助存储器输入/输出(I/O)操作和涉及辅助存储器I/O的时间损失。存储器分区的一种方法是使用虚拟存储器管理器(VMM),它们将存储器分为叫做“页面”的基本块。在典型的VMM中,这些页面大小相同,单个的页面用缓冲区进行缓存。VMM选择了静态页面大小,以便于管理,这就导致大小对于文件系统或磁盘设备要求不一定是最佳。在典型的VMM实现方式中,多个页面可以存储在单一的缓冲区内。当被检索的数据的大小不能均匀地在一个或许多VMM页面之中分开和存储时,就会产生问题。这种情况可能导致奇数的只是部分地填充的利用整个静态页面存储器分配的页面。当奇数页要求使用更多的缓冲区时,或者如果页面的数量不能均匀地在缓冲区大小之中分开和存储,从而使存储器分配效率更加低时,问题变得更加严重。缓冲区可以以各种大小进行管理,相似大小的缓冲区可以分到组和子组中。对特定大小的缓冲区的请求可以从该相同大小的一组缓冲区来得到满足。如果没有满足请求的大小的缓冲区,必须进行其他操作,以将较大的缓冲区分离或将较小的缓冲区加入到适当大小的缓冲区中。分离或联合缓冲区的其他开销具有其自己的设计选择集。其中,破碎和联合和分离缓冲区的损失以及对组成用户的影响是最重要的事。由于这些原因,良好的设计选择试图确保,存储器缓冲区请求可以主要在与请求大小相同的缓冲区的子组内进行满足。当发出请求的应用程序要求从辅助存储器中提供更多数据而所有缓冲区都在使用中时,就要作出关键的缓冲决策。对于需求的新数据,应该使用哪一个缓冲区,通常,哪一个缓冲区应该用新数据来覆盖?主流存储器管理理论将这种情况叫做更换策略。这种覆盖缓存或存储器缓冲区存储的数据的过程在当前技术中叫做“缓冲区窃用”。存在不同的决策算法,并从所使用的更换方法的类型中取它们的名称。例如,有多个常用的算法,如“最近最少使用的”(LRU)、“最不常用的”(LFU),以及“最近使用的”(MRU)。具体来说,请看LRU算法,如其名称所暗示的,当需求新的缓冲区时,为替换所选择的缓冲区是在最长的时段没有被访问的其中一个。虽然LRU、LFU和MRU这些技术单独使用或组合起来使用对于判断窃用哪一个缓冲区很有用,以便最小化重新读取替换的数据的必要性,但是,这些技术不是没有缺点。一个缺点是,不管选择的标准是什么,缓冲区窃用的目标是将重新读取替换的数据的必要性降低到最低程度。例如,被窃用的并且其数据被写入到辅助存储器的缓冲区实际上可以立即由应用程序重新访问,这样就会产生新的缓冲区窃用并从辅助存储器中重新读取以前高速缓存数据。相应地,需要判断存储器缓冲区中的一些东西已经扔出了多长时间,以优化给定组中的缓冲区和缓冲区大小,以便最小化重新访问或从辅助存储器将数据重新读取回存储器缓冲区的次数。此外,单独使用LRU、LFU、MRU不会有助于缓冲区大小判断和分配。例如,常常基于太少的信息丢弃或窃用页面,如LRU,其中,所使用的决策信息是从最后一次访问以来最大的时间间隔。系统不能在不消耗大量的有价值的系统资源的情况下区别具有很少的访问的缓冲区与没有访问的缓冲区而将使用的很少访问的缓冲区保留在存储器中。提供不同大小的缓冲区并将这些各种大小的缓冲区分到子组中的存储器管理系统必须平衡对一样大小的缓冲区的需求和对不同大小的缓冲区的需求。最佳平衡算法将只窃用在不久的将来不会再次使用的缓冲区。这可能意味着,可能需要在适当大小的缓冲区的子组内窃用就足够了,或从较大的缓冲区中窃用并分离,或从较小的缓冲区窃用并组合。因此,有必要克服如上文所讨论的现有技术所存在的缺点,并提供优化窃用事件和分配各种大小的缓冲区存储器的系统和方法。
技术实现思路
根据本专利技术,提供了通过窃用历史平衡多个存储器缓冲区大小的系统和方法。系统包括分区为多个子组的存储器,每一个子组都包含一个或多个相似大小的缓冲区。系统进一步包括具有存储器管理器的控制器。存储器管理器用于响应接收对将接收到的数据存储在存储器中的请求,标识缓冲区;通过将标识的缓冲区的高速缓存数据存储在辅助存储器中来窃用标识的缓冲区;创建缓冲区窃用历史记录。缓冲区窃用历史记录包括用于标识高速缓存数据的辅助存储器的唯一标识符,并响应接收到随后的对缓冲区的请求以存储第二个接收到的数据,使用缓冲区窃用历史记录来标识对高速缓存数据的任何重新访问。此外,第二个接收到的数据包括高速缓存数据,并使用缓冲区窃用历史记录以平衡缓冲区子组之间分区的存储器。附图说明附图(其中,相同的参考数字在各个单独的视图中表示完全相同或功能上相似的元素)与下面的详细描述一起,包括在说明书中并构成说明书的一部分,用于进一步显示各种实施例并说明根据本专利技术的各种原理和所有优点。下面将通过附图中显示的示范性实施例(但不作出限制)来对本专利技术进行描述,其中,相同的参考符号表示相似的元素,其中图1是根据本专利技术的平衡多个存储器缓冲区大小的系统的电子方框图。图2显示了根据本专利技术的图1的用于平衡多个存储器缓冲区大小的系统内使用的缓冲区窃用历史队列。图3到5是显示根据本专利技术的图1的用于平衡多个存储器缓冲区大小的系统的操作的各种实施例的流程图。图6是根据本专利技术的示范性实施例的使用图1的缓冲区的计算机处理节点的方框图。具体实施例方式根据需要,这里说明了本专利技术的详细实施例;然而,应该理解,所说明的实施例只是本专利技术的示范,本专利技术可以以各种形式来实现。因此,这里所说明的特定结构和功能细节不应解释为限制性的,而是作为权利要求的基础,并作为告诉精通本技术的人员在任何适当详细的结构中应用本专利技术的典型的基础。此外,这里所使用的术语和句子不是限制性的;而是提供对本专利技术的可理解的说明。这里所使用的术语“a”或“an”被定义为一个或多个。这里所使用的术语“多个”被定义为两个或更多。这里所使用的术语“另一个”被定义为至少第二个或更多。这里所使用的术语“包括和/或具有”被定义为包括(即,公开语言)。这里所使用的术语“耦合”,被定义为连接,虽然不一定是直接的,也不一定是机械的。这里所使用的术语“程序”、“软件应用程序”,被定义为计算机系统上执行而设计的指令序列。程序、计算机程序或软件本文档来自技高网
...

【技术保护点】
一种用于在多个存储器缓冲区大小管理可变大小存储器分区的方法,该方法包括:接收对于给定大小的存储器缓冲区的第一请求以在其中存储接收到的数据;通过以下操作窃用存储器缓冲区:将在存储器缓冲区中高速缓存数据的至少一部分存储到 辅助存储器中;以及将接收到的数据存储在以前存储了高速缓存数据的存储器缓冲区中;创建缓冲区窃用历史记录,其中,缓冲区窃用历史记录包括用于标识高速缓存数据在辅助存储器中的位置的唯一标识符,其中,缓冲区窃用历史记录用于判断随后的对 窃用存储器缓冲区的请求是否为重新访问以前写入到辅助存储器中的高速缓存数据。

【技术特征摘要】
US 2004-3-23 10/807,5521.一种用于在多个存储器缓冲区大小管理可变大小存储器分区的方法,该方法包括接收对于给定大小的存储器缓冲区的第一请求以在其中存储接收到的数据;通过以下操作窃用存储器缓冲区将在存储器缓冲区中高速缓存数据的至少一部分存储到辅助存储器中;以及将接收到的数据存储在以前存储了高速缓存数据的存储器缓冲区中;创建缓冲区窃用历史记录,其中,缓冲区窃用历史记录包括用于标识高速缓存数据在辅助存储器中的位置的唯一标识符,其中,缓冲区窃用历史记录用于判断随后的对窃用存储器缓冲区的请求是否为重新访问以前写入到辅助存储器中的高速缓存数据。2.根据权利要求1所述的方法,其中,创建缓冲区窃用历史记录的过程包括创建具有与存储器缓冲区的窃用顺序关联的序列号的缓冲区窃用缓冲区。3.根据权利要求1所述的方法,进一步包括接收对存储器缓冲区的第二请求以存储其他接收到的数据;以及使用缓冲区窃用历史记录重新访问辅助存储器内的高速缓存数据的部分。4.根据权利要求1所述的方法,进一步包括将存储器缓冲区分区为组内具有相似大小缓冲区的至少一个子组。5.根据权利要求4所述的方法,其中,创建缓冲区窃用历史记录的过程包括创建具有与具有相似大小的缓冲区的子组中的存储器缓冲区的窃用顺序关联的序列号的缓冲区窃用缓冲区。6.根据权利要求5所述的方法,其中,将存储器缓冲区分区为组内具有相似大小缓冲区的至少一个子组的过程包括基于缓冲区窃用历史将存储器缓冲区分区。7.根据权利要求6所述的方法,其中,将存储器缓冲区分区的过程进一步包括,对于每一个子组,通过以下操作计算子组的优先级为窃用的并从子组重新访问的所有缓冲区累积平均差值;判断子组中的重新访问的重要性;通过比较每一个子组的优先级来标识存储器缓冲区,其中,存储器缓冲区位于具有最小优先级的子组内。8.根据权利要求1所述的方法,进一步包括将缓冲区窃用历史记录添加到缓冲区窃用历史队列中,其中,缓冲区窃用历史队列包括零个或多个缓冲区窃用历史记录。9.一种平衡多个存储器缓冲区大小的方法,包括建立包括一个或多个缓冲区窃用历史记录的缓冲区窃用历史队列,其中,一个或多个缓冲区窃用历史记录中的每一个记录都包括标识辅助存储器位置中存储的一个或多个高速缓存数据的唯一标识符;接收在缓冲区中存储数据的请求;将接收到的请求与一个或多个缓冲区窃用历史记录中的每一个记录的每一个唯一标识符进行比较;以及当请求中的数据匹配缓冲区窃用历史记录的其中一个唯一标识符时,从辅助存储器重新访问高速缓存数据。10.根据权利要求9所述的方法,其中,缓冲区窃用历史记录进一步包括序列号,该方法进一步包括计算缓冲区窃用历史记录的序列号和对应的缓冲区大小子组的当前序列号之间的差值;将差值与对应的缓冲区大小子组进行比较;以及当对应的缓冲区大小子组至少等于差值时,重新访问高速缓存数据的对应的缓冲区大小子组。11.根据权利要求10所述的方法,进一步包括当对应的缓冲区大小子组小于差值时,从辅助存储器重新读取高速缓存数据。12.根据权利要求11所述的方法,其中,差值包括在以前的缓冲区窃用和当前请求的重新访问之间,从对应的缓冲区大小子组窃用的缓冲区数量。13.根据权利要求11所述的方法,进一步包括对于多个子组中的每一个子组,其中,每一个子组都包括多个相似大小的缓冲区,通过以下操作计算子组的优先级为窃用的并从子组重新访问的所有缓冲区累积平均差值;判断子组中的重新访问的重要性;以及通过比较每一个子组的优先级,响应对缓冲区的请求,标识缓冲区窃用目标,其中,缓冲区窃用目标是具有最小优先级的缓冲区。14.一种平衡多个存储器缓冲区大小的系统,包括多个子组内提供的多个缓冲区,其中,子组包含一个或多个相似大小的缓冲区,缓冲区窃用历史队列包括多个缓冲区窃用历史记录;以及控制器包括存储器管理器,其中,存储器管理器用于接收对于缓冲区的第一请求以在存储器中存储接收到的数据;从多个缓冲区的一个中标识缓冲区,其中,缓冲区包含高速缓存数据;通过以下操作窃用缓冲区将高速缓存数据存储到辅助存储位置;以及将接收到的数据存储在缓冲区中;创建缓冲区窃用历史记录,其中,缓冲区窃用历史记录包括用于标识高速缓存数据在辅助存储器中的位置的唯一标识符,其中,缓冲区窃用历史...

【专利技术属性】
技术研发人员:戴维J克拉夫特布赖恩P狄克逊尤里L沃罗布维詹姆斯C威列
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1