排序数组元素以优化数组修改的计算机系统及方法技术方案

技术编号:2882479 阅读:154 留言:0更新日期:2012-04-11 18:40
对一个数组数据结构应用一个排序算法,以根据那些数组元素有可能被修改的预计频率排列这些元素。具有较高修改频率的数组元素被放在接近该数组尾部的地方,减少由于修改这些元素造成的其它通常必须被更新的的数组元素的数目,对于那些具有较低的修改可能性的数组元素,保留了需要更新更多数组元素的修改。对于一个给定的页,适于内存压缩的排序算法,以倒序方式排列页中的块,这是因为接近一页的开始的数据的修改的概率要高于接近一页的尾部的数据。(*该技术在2018年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术总的来说涉及计算机与数据处理系统中实现的数组数据结构,特别是涉及在诸如存储器压缩的应用中对数据结构的操作。数组是一种常见的数据结构,在计算机或其它数据处理系统中用来存储数据。在数组数据结构中通常把多个数组元素放到一个列表中,通过一个唯一的索引访问每个数组元素。例如,许多计算机存储器系统都以数组来管理,各个存储器单元或一组存储器单元都可被作为数组元素,每一元素都有对之索引的唯一的一个存储器地址。使用数组数据结构的最主要的优点是它能随机访问,比如能通过指向元素的指针或索引快速访问每一元素。但其缺点是很难有一种高效的方法对改变整个数组大小的修改进行处理。特别是人们希望能对任一数据结构进行紧致存放,只利用所必须的存储器空间。所以,一旦数组被修改,如删除或增加元素,或者是对支持可变大小的数组元素的数组进行修改,改变元素的大小,跟在被修改元素后的每一个元素通常也要修改或移动其在内存的位置。但是移动数组元素是一个费时的内存传输操作,从而降低存储器系统的效率。另外,每一个数组元素可以用未使用过的存储单元来“填充”,因此可以在不影响数组中随后元素的起始元素地址的情况下,允许元素“变大”或“缩小”。但是这种技术会由于数组中存在尚未使用的存储器而极其浪费。而且这种技术既无法适应数组元素的删除与增加,也无法对溢出了可用填充的较大的数组元素进行修改。数组一个重要的应用是存储器压缩,这种应用需要高存储密度及快速的存储器传送操作。在一些存储器压缩应用中,数据页被安排成块的数组,然后把块压缩成帧,以减少内存占用量,在对压缩的数据进行修改后,再次对它们进行压缩。不论帧中的数据何时被修改,帧必须重新压缩,这通常改变了帧大小及/或帧中存储的信息量。该页中跟在重新压缩的帧之后的每一帧也通常被更新,例如移动或重压缩,从而优化该页的压缩。当存储在靠近一页的开始的帧中的数据被修改时,通常该页中绝大部分或所有帧都被更新,这对该存储器系统中的总的性能有很显著的影响。因此减小修改数组中的元素所引起的性能降低是一个实际的问题,特别是在存储器压缩或其它类似应用中。本专利技术解决现有技术中在提供维护数组的方式方面有关的这些以及其它问题,该数组通常由一种排序算法对其元素进行排序,该算法至少部分依赖于那些元素有可能被修改的所预测的频率。具有较高修改频率的数组元素放在靠近数组尾部的地方,以便响应对这些元素的修改将通常需要更新的数组元素数减至最小。对于那些具有较小修改可能性的数组元素,保留了需要更新较多数组元素的数组元素修改。这样,响应任一数组元素的修改需要更新的数组元素的平均数目,对于该数组在整体上减少了,从而减少了数组修改的整体性能影响。本专利技术还不限于此,它的一个特殊的有益的应用是在存储器压缩领域,这是因为邻近内存逻辑页开始位置的数据要比邻近该页末端位置的数据改变得频繁。对于一个给定页将数据块以倒序排列,无论一个数据块何时被修改,必须要被更新的块的平均数减至最小。突出本专利技术特征的这些以及其它优点与特点在随后的提出,并作为其中的一部分。但为了更好地理解本专利技术及其通过其应用所带来的优点及其特色,将参照附图及说明来描述本专利技术,其中描述了本专利技术的实施例。附图说明图1为描述一个数组中对元素进行各种修改时的框图。图2为一个计算机系统的框图,它与本专利技术的原则相一致。图3是图2中计算机系统的内存映象框图。图4是描述图2计算机系统的内存逻辑页的框图。图5是描述图1中计算机系统的一个建立表的项与一个逻辑块数组之间的映射框图。图6是显示对图5中逻辑块数组进行了一种示例的数据修改后所得的结果的框图。本专利技术示意性实施例通常是通过对数值元素进行排序来操作的,这种排序是根据预测的数组元素被修改的有关频率进行的,它允许修改数组元素,这种修改影响到数组尾部的后续元素,从而减少了由于修改数组中的任一给定元素而影响到的数组元素的平均数。特别是最好经常维护在连续内存空间的数组元素,在元素之间很少或几乎没有未使用的空间。从而减小数组占用的存储量。应该可以理解,一个数组的连续存储空间在一定程度上可以是非连续的,即逻辑存储位置可以被映射到固定大小的分区上,比如在随后结合所示意的实施例所讨论的压缩数据分区所示出的。对可以影响随后数组元素的数组元素修改操作一般包括删除数组元素及增加新的数组元素。而且,对于支持可变长数组元素的数组来说,另一种修改操作还包括改变数组元素的大小。例如在图1中,一个数组5有元素A-F,它们存储在连续的存储空间中。如果比如从该数组中删除元素C,该数组的后续元素D-F必须向左移动或移位,或在内存中“向下移动”,从而能保持存储空间连续。如数组5′所示。比如如果增加元素C的大小,元素D-F必须向右移动或移位,或在内存中“向上移动”,从而保证元素C不会溢出到元素D中。如数组5″所示。同样的,如果在元素C后增加一个新元素G,元素D-F必须向右移动或移位,以便腾出空间给新元素。如数组5″′所示。本专利技术的示意性实施例能根据修改的增加频率使用静态或动态排序算法安排数组元素。静态排序算法通常被硬编码进数组处理程序代码中,因此可以以与所选定的排序算法相一致的一种预定方式存储或修改数组元素。当使用一种静态算法时,数组元素的修改频率将通过一种已知的关系或实验测试决定。另一方面,动态排序算法在数组操作过程中不仅要确定一种可行的排序算法,还要实现这种算法。比如,在数据库系统中,一个或多个数据库中记录的修改历史被实时监视,从而允许对影响记录的未来操作的各种记录或记录类型进行衡量,或者作为例行维护函数,有可能允许记录在内存中重排序。在下面讨论的实施例中,数组元素表示为压缩数据块,这些数据块排列成表示为内存逻辑页的一个列表或数组形式。可以用于这一方面的一个可行的计算机系统在Hovis等人申请的美国专利申请(专利申请号为S/N 08/324,050,1994年10月17日提交)中公开,作为参考结合在本申请中。还可以选择使用其它的计算机与存储器系统,以及与其共同使用的其它存储器管理控制器与压缩引擎(compression engine)等。在许多计算机系统(包括上述所提的系统)中已发现,靠近内存逻辑页开头的数据要比靠近逻辑页末尾的数据更可能被修改。比如,在一些使用4KB逻辑页的内存系统中已发现第1个KB,即最开头的2个512字节的逻辑块的修改频率大约是最后一个KB的修改频率的2倍。这有可能发生,因为比如内存分配操作不需要整页内存,或需要多页内存但在页中间结束,通常在一页的开头开始分配内存。在下面讨论的实施例中,逻辑页安排成逻辑块数组,该数组在内存中使用内存压缩算法以压缩格式存储,压缩算法将逻辑块压缩成多个固定大小的帧,如512字节。无论块中的数据何时被修改,通常是由于从高速缓存的回写操作,包含该块的帧会被更新,如重新压缩。而且,如果在任一帧中块的大小的改变超过所允许的填充,具有被修改的块的帧之后至少有一帧通常是全部帧,也要被更新。在另一实施例中,帧可有可变的大小,由此随后的帧有可能不需要再压缩,但有可能只需要根据帧大小的修改而移动。在下面讨论的实施例中,使用静态排序算法,它把逻辑页中数据的逻辑块以倒序排列。因此把最后的逻辑块放在数组开头,第一个逻辑块放在最后。所以,相对于具有较少修改频率的一页中的最本文档来自技高网...

【技术保护点】
一个在一个计算机系统中存储数据的方法,该系统的存储器被分割成多个页,每页包括以多个块存储的数据,该方法包括以下步骤:(a)以压缩格式将数据存储到该存储器中,并且每页中的块以倒序排列;(b)修改存储器中在选定页中选定块中存储的数据,包 括更新该选定块,以及如果有的话,更新该选定页中随后排列的至少一个随后的块的步骤。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:RE约翰森
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

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

1