数据压缩装置及其数据压缩方法与流程

文档序号:15930688发布日期:2018-11-14 01:36阅读:179来源:国知局
本发明是关于一种数据压缩装置及其数据压缩方法。
背景技术
:在已知的压缩技术中,不同的压缩文件之间具有不同的文件大小,将此些不同大小的压缩文件储存于磁盘中会产生储存空间破碎(fragmentation)的问题。举例来说,以压缩文件的大小为100k为例,当磁盘中的剩余储存空间仅包含由70k的储存空间及80k的储存空间形成的不连续储存空间时,虽然总体的剩余储存空间还有150k,但100k的压缩文件并无法储存于破碎的不连续空间中,造成储存空间破碎。再者,在另一些已知的压缩技术中,压缩文件可被分割为多个较小的分割文件后分别储存在零碎的储存空间中,例如将一个38k的压缩文件分割为四个分别为10k、10k、10k及8k的分割文件,并将前述的四个分割文件分别储存在四个10k的储存空间中;然而,在10k的储存空间中储存8k的分割文件也造成2k的储存空间无法被利用,如此也具有储存空间破碎的问题。技术实现要素:有鉴于此,本发明提出一种关于一种数据压缩装置及其数据压缩方法。在一实施例中,一种数据压缩装置包含缓存单元、硬盘及处理单元。缓存单元用以储存待压缩数据。硬盘包含多个实体区块,每一实体区块具有相同的区块大小。处理单元用以压缩待压缩数据以产生压缩数据,并将压缩数据储存于多个实体区块中的一个实体区块,且处理单元比对压缩数据的大小与区块大小,当压缩数据的大小小于区块大小时,处理单元将冗余数据储存于储存压缩数据实体区块,其中冗余数据的大小与压缩数据的大小的总和等于区块大小。在一实施例中,前述储存压缩数据的实体区块包含元数据字段,当压缩数据的大小小于区块大小时,处理单元将冗余数据于实体区块中的储存位置储存于元数据字段中。在一实施例中,前述待压缩数据包含至少一文件的多个数据片段,储存压缩数据的实体区块包含元数据字段,处理单元将压缩数据与数据片段之间的对应关系储存于元数据字段中。在一实施例中,前述待压缩数据包含至少一文件的多个数据片段,处理单元于压缩待压缩数据时比对第一数量的数据片段及第二数量的数据片段于压缩后的大小与区块大小,当第一数量的数据片段于压缩后的大小小于区块大小且第二数量的数据片段于压缩后的大小大于区块大小时,处理单元根据第三数量的数据片段产生压缩数据,第三数量大于第一数量且小于第二数量。在一实施例中,前述压缩数据包含同一文件或不同文件的多个数据片段,处理单元根据同一文件或不同文件的数据片段产生压缩数据。在一实施例中,一种数据压缩方法包含处理单元根据缓存单元中的待压缩数据产生压缩数据,处理单元将压缩数据储存于硬盘的多个实体区块中的一个,硬盘的每一前述实体区块具有相同的区块大小,处理单元比对压缩数据的大小与区块大小,当压缩数据的大小小于区块大小时,处理单元将冗余数据储存于前述储存压缩数据的实体区块,冗余数据的大小与压缩数据的大小的总和等于区块大小。在一实施例中,当压缩数据的大小小于区块大小时,前述处理单元将冗余数据储存于储存压缩数据的实体区块的步骤包含:处理单元将冗余数据于实体区块中的储存位置储存于储存压缩数据的实体区块的一元数据字段中。在一实施例中,前述压缩数据包含至少一文件的多个数据片段,前述处理单元将压缩数据储存于储存压缩数据的实体区块的步骤中,处理单元将压缩数据与数据片段之间的对应关系储存于储存压缩数据的实体区块。在一实施例中,前述处理单元根据待压缩数据产生压缩数据的步骤中,处理单元根据待压缩数据的相同文件的数据片段或不同文件的数据片段产生压缩数据。在一实施例中,前述待压缩数据包含至少一文件的多个数据片段,前述处理单元产生压缩数据的步骤包含处理单元比对第一数量的数据片段以及第二数量的数据片段于压缩后的大小与区块大小;当第一数量的数据片段于压缩后的大小小于区块大小且第二数量的数据片段于压缩后的大小大于区块大小时,处理单元根据第三数量的数据片段产生压缩数据,第三数量大于第一数量且小于第二数量。综上所述,根据本发明的数据压缩装置的实施例,硬盘的每一实体区块具有相同的区块大小,处理单元可根据压缩数据的大小将压缩数据直接储存于一实体区块,或是将压缩数据与冗余数据一并储存于一实体区块,以填满实体区块的储存空间,使硬盘不会有空间破碎的问题。附图说明图1为根据本发明的数据压缩装置的实施例的功能框图。图2为图1的数据压缩装置的第一实施例的功能框图。图3为图1的数据压缩装置的第二实施例的功能框图。符号说明:11处理单元12缓存单元13硬盘131-134实体区块a1-a6数据片段b1-b2数据片段c1-c5数据片段d1-d10数据片段具体实施方式图1为根据本发明的数据压缩装置的实施例的功能框图。请参照图1,数据压缩装置包含处理单元11、缓存单元12及硬盘13。处理单元11连接缓存单元12及硬盘13。缓存单元12用以暂存待压缩数据,缓存单元12可为非永久性存储器(volatilememory)或缓存器(register)。硬盘13包含多个实体区块,图1示例出硬盘13包含四个实体区块131-134,实体区块131-134中的每一实体区块用以储存处理单元11产生的压缩数据。其中,每一实体区块具有相同的区块大小,且每一实体区块对应于一实体地址。举例来说,以区块大小为4k为例,实体区块131-134所对应的实体地址的16进制表示法可分别为“10000”、“10032”、“10064”、“10096”。在一实施方式中,硬盘13可为固态硬盘(solidstatedisk;ssd),固态硬盘的最小实体储存单位为页面(page),实体区块131-134中的每一实体区块涵盖至少一页面,例如可涵盖一个页面,或是涵盖八个页面。若每一页面的大小为4k,则每一实体区块具有4k或32k的区块大小。再者,硬盘13也可为具读写头的传统硬盘,传统硬盘的最小储存单位为扇区(sector),实体区块131-134中的每一实体区块涵盖至少一扇区,例如可涵盖一个扇区,或是涵盖四个扇区。若每一扇区的大小为0.5k,则每一实体区块具有0.5k或2k的区块大小。处理单元11可为中央处理器(cpu)或微处理器(mcu),处理单元11用以执行压缩指令,在执行压缩指令时,处理单元11接收缓存单元12输出的待压缩数据,并将待压缩数据进行压缩,以产生压缩数据。接着,处理单元11比对压缩数据的数据大小与实体区块131-134的区块大小,当比对结果为压缩数据小于实体区块131-134的区块大小时,表示压缩数据无法填满实体区块131-134中的任一者,此时处理单元11将小于实体区块的压缩数据及冗余数据一并储存于实体区块131-134中的一个,以借由冗余数据来填补实体区块中的剩余空间;另一方面,当比对结果为压缩数据的数据大小等于实体区块的区块大小时,表示压缩数据可填满实体区块,实体区块不会包含剩余空间,此时处理单元11直接将压缩数据储存于实体区块131-134中的任一者。举例来说,以前述的区块大小为4k、处理单元11产生的压缩数据为3k且处理单元11将压缩数据储存于实体区块132为例,处理单元11将3k的压缩数据以及1k的冗余数据储存于实体区块132,使实体区块132包含冗余数据及压缩数据而被填满(即,冗余数据与压缩数据的总和大小等于实体区块132的区块大小);以处理单元11产生的压缩数据为4k为例,此时处理单元11直接将4k的压缩数据储存于实体区块132而不将冗余数据储存于实体区块132,使实体区块132包含压缩数据即被填满。在一实施方式中,冗余数据可为任意数值,以冗余数据为数字信号为例,冗余数据的每一位可为逻辑“0”。相较于现有技术,处理单元11将压缩数据储存于实体区块131-134之后,实体区块131-134不会有因压缩数据的大小不一而造成空间破碎的问题,即便处理单元11将两大小不同的压缩数据先后写入相同的实体区块时,也不会有空间破碎的问题。在一实施方式中,缓存单元12中储存的待压缩数据包含至少一文件的多个数据片段,处理单元11可依序根据部分的数据片段分别产生压缩数据。详细而言,处理单元11先扫描一部分的数据片段,并根据前述一部分的数据片段的字符关联性产生压缩数据;接着,处理单元11再扫描另一部分的数据片段,并根据前述另一部分的数据片段的字符关联性产生另一压缩数据。举例来说,如图1所示,以缓存单元12中的待压缩数据包含10个数据片段d1-d10为例,处理单元11可先扫描五个数据片段d1-d5,并根据数据片段d1-d5中的字符关联性产生第一个压缩数据;接着,处理单元11可扫描三个数据片段d6-d8,并根据数据片段d6-d8产生第二个压缩数据;接着,处理单元11可扫描两个数据片段d9-d10,并根据数据片段d9-d10产生第三个压缩数据。基此,相较于处理单元11扫描缓存单元12中的全部数据片段后始产生压缩数据,处理单元11仅扫描部分的数据片段即产生压缩数据可减少全部压缩数据产生的总压缩时间。再者,处理单元11在将每一压缩数据储存于硬盘13时,处理单元11根据一映像表取得与压缩数据对应的实体地址,以将每一压缩数据储存于对应的实体区块。以前述的三个压缩数据分别对应于实体区块131、134、132为例,在第一个压缩数据产生后,处理单元11根据映像表将第一个压缩数据储存于实体地址为“10000”的实体区块131;在第二个压缩数据产生后,处理单元11根据映像表将第二个压缩数据储存于实体地址为“10096”的实体区块134;在第三个压缩数据产生后,处理单元11根据映像表将第三个压缩数据储存于实体地址为“10032”实体区块132。进一步,处理单元11在产生每一压缩数据的过程中,处理单元11可根据区块大小弹性地选择用以压缩的数据片段的数量,并调整前述数量,并在调整后根据适当数量的数据片段来产生压缩数据,使每一压缩数据小于或等于区块大小而不超过区块大小。举例来说,以处理单元11先以为三的第一数量的数据片段进行压缩为例,当处理单元11判断三个数据片段d1-d3于压缩后的大小小于例如前述为4k的区块大小时,例如2k,处理单元11会增加用以压缩的数据片段的数量,处理单元11以大于第一数量例如为六的第二数量的数据片段进行压缩;接着,处理单元11判断六个数据片段d1-d6于压缩后的大小,当六个数据片段d1-d6于压缩后的大小大于区块大小时,处理单元11再以第一数量与第二数量之间的第三数量的数据片段进行压缩,例如处理单元11以五的第三数量的数据片段进行压缩,当处理单元11判断五个数据片段d1-d5于压缩后的大小等于或小于区块大小时,处理单元11即根据数据片段d1-d5产生前述的第一个压缩数据,使第一个压缩数据的大小不超过区块大小。于是,处理单元11再根据前述的调整程序来产生第二个压缩数据及第三个压缩数据,第二个压缩数据及第三个压缩数据的大小也不超过区块大小。在实际操作上,处理单元11在将冗余数据储存于实体区块(例如,实体区块131)时,处理单元11会记录冗余数据于实体区块131中的储存位置(为方便描述,以下将冗余数据于实体区块中的储存位置称为冗余数据信息),例如冗余数据位于实体区块131中的第一位至第四百九十二位。并且,前述的冗余数据信息为对应于压缩数据的元数据,处理单元11可将前述的冗余数据信息记录实体区块131的元数据(metadata)字段中,使处理单元11的解压缩模块或其他装置的解压缩模块在进行解压缩时可根据实体区块131的元数据字段中所记录的冗余数据信息来区分压缩数据与冗余数据。并且,将前述的冗余数据信息储存于与其对应的压缩数据相同的实体区块中则不需再进一步记录与压缩数据对应的冗余数据信息的位置信息,例如,不需记录是储存于内存中的哪一者,或是内存中的哪一地址空间,由同一实体区块即可获得压缩数据及与其对应的冗余数据信息;举例来说,以前述的第一个压缩数据及与其对应的冗余数据信息均储存于实体区块131为例,处理单元11可自实体区块131取得第一个压缩数据,并自实体区块131的元数据字段取得与第一个压缩数据对应的冗余数据信息,如此可节省用来记录与压缩数据对应的冗余数据信息的位置信息的储存空间,且适用于各式具有不同压缩格式的压缩数据。在一实施方式中,于处理单元11扫描一部分的数据片段之后,处理单元11可根据包含较多字符为“0”的数据片段进行压缩,以产生大小较小的压缩数据,此时,当压缩数据的大小小于区块大小时,处理单元11可再将前述的冗余数据信息或其他元数据作为冗余数据来填补不足的数据大小,使压缩数据的大小加上元数据的大小后趋近于区块大小。图2为图1的数据压缩装置的第一实施例的功能框图,请参照图2,在第一实施例中,处理单元11系将来自于相同文件的数据片段压缩于同一压缩数据,也就是将来自于不同文件的数据片段压缩于不同的压缩数据中,换言之,处理单元11在选择适当数量的数据片段进行压缩时会受限于不同数据片段是否来自于相同文件。如图2所示,缓存单元12中暂存有文件a的八个数据片段a1-a8以及不同于文件a的文件b的五个数据片段b1-b5,以数据片段a1-a5于压缩后的大小为4k且数据片段a6-a8于压缩后的大小为2.2k为例,在处理单元11根据数据片段a1-a5产生压缩数据(为方便描述,以下称为第一压缩数据)后,缓存单元12中的待压缩数据包含数据片段a6-a8、b1-b5,此时,即便数据片段a6-a8于压缩后的大小小于4k,处理单元11不将数据片段a6-a8与数据片段b1-b5中的任一者进行压缩,处理单元11系根据数据片段a6-a8产生一压缩数据(以下称为第二压缩数据),并根据数据片段b1-b5产生其他压缩数据。图3为图1的数据压缩装置的第二实施例的功能框图,请参照图3,在第二实施例中,处理单元11将来自于不相同文件的数据片段压缩于同一压缩数据。换言之,处理单元11在选择适当数量的数据片段进行压缩时将不受限于数据片段是否来自于相同文件。如图3所示,缓存单元12暂存的待压缩数据包含来自于文件a的数据片段a1-a6、来自于文件b的数据片段b1、b2以及来自于文件c的数据片段c1-c5。处理单元11在选择适当数量的数据片段时可选择将来自于不同文件的数据片段来进行压缩,以产生对应于不同文件的压缩数据,举例来说,处理单元11可根据数据片段b1、c1-c3、a1-a3产生压缩数据(以下称为第三压缩数据),并根据数据片段c4-c5、b2、a4-a6产生另一压缩数据(以下称为第四压缩数据)。基此,相较于第一实施例,处理单元11可选择的数据片段的弹性较大,如此产生的压缩数据的大小较接近区块大小,可减少硬盘13中冗余数据的整体数量。在一实施方式中,缓存单元12中的待压缩数据来自于硬盘13,处理单元11在执行压缩指令时会读取硬盘13,处理单元11将待压缩数据自硬盘13复制至缓存单元12。再者,缓存单元12为队列,队列具有先进先出(firstinfirstout;fifo)的特性,处理单元11在将待压缩数据存入缓存单元12时需进一步考虑不同文件的数据片段的存入顺序。在第一实施例中,处理单元11先读取硬盘13中的文件a而后读取硬盘13中的文件b,且处理单元11先将数据片段a1-a8储存于缓存单元12而后将数据片段b1-b5储存于缓存单元12(图2示例出数据片段a1-a8、b1-b5于缓存单元12中的顺序性),使缓存单元12根据前述的存入顺序依序输出数据片段a1-a8、b1-b5。于此,处理单元11可根据相同文件的数据片段来产生压缩数据(即,根据数据片段a1-a5产生第一压缩数据,且根据数据片段a6-a8产生第二压缩数据,且根据数据片段b1-b5产生其他压缩数据)。在第二实施例中,处理单元11是依序读取硬盘13中的文件b、文件c、文件a、文件c、文件b及文件a,且处理单元11依序将数据片段b1、c1、c2、c3、a1、a2、a3、c4、c5、b2、a4、a5、a6储存于缓存单元12(如图3所示的每一数据片段于缓存单元12中的顺序性),使缓存单元12根据前述的存入顺序依序输出数据片段b1、c1、c2、c3、a1、a2、a3、c4、c5、b2、a4、a5、a6。于此,处理单元11可根据不同文件的数据片段来产生压缩数据(即,根据数据片段b1、c1-c3、a1-a3产生第三压缩数据,且根据数据片段c4-c5、b2、a4-a6产生第四压缩数据)。基此,处理单元11在第一实施例中不需重复读取文件a及文件b,在第二实施例中则需重复读取文件a及文件b,因此,将相同文件的数据片段压缩于同一压缩数据可减少处理单元11在硬盘13中搜寻及读取文件的耗时。在一实施方式中,处理单元11需记录压缩数据与压缩前的待压缩的文件数据片段之间的对应关系,并且,前述对应关系为压缩数据的另一元数据,处理单元11可进一步将前述的对应关系记录于前述的元数据字段中。在第一实施例中,处理单元11需记录第一压缩数据对应于文件a的数据片段a1-a5,且记录第二压缩数据对应于文件a的数据片段a6-a8,使解压缩模块可根据前述对应关系将第一压缩数据及第二压缩数据还原为文件a;在第二实施例中,处理单元11需记录第三压缩数据对应于数据片段b1、c1-c3、a1-a3,且记录第四压缩数据对应于数据片段c4-c5、b2、a4-a6,使解压缩模块可根据前述对应关系将第三压缩数据及第四压缩数据还原为文件a、b、c。在一实施方式中,缓存单元12的可储存空间有限,在将待压缩数据储存于缓存单元12之前,处理单元11先判断待压缩数据的大小与缓存单元12的可储存空间的大小,当待压缩数据大于缓存单元12的可储存空间时,处理单元11不将待压缩数据自硬盘13复制或搬移至缓存单元12,待处理单元11判断缓存单元12的可储存空间大于或等于待压缩数据的大小之后,处理单元11再将待压缩数据自硬盘13复制或搬移至缓存单元12,以混合使用实时(in-line)压缩技术及不实时(off-line)压缩技术。在一实施方式中,以硬盘13包含前述的文件a为例,处理单元11会将前述的文件a于硬盘13中的储存位置记录于表(table)中,待处理单元11根据文件a产生压缩数据并将压缩数据储存于硬盘13之后,处理单元11会根据压缩数据于硬盘13中的储存位置修改前述表中文件a于硬盘13中的储存位置。举例来说,以文件a于压缩数据产生前储存于实体地址为“20026”、“20032”、“20148”的实体区块为例,待处理单元11根据文件a产生压缩数据并将前述压缩数据储存于实体区块132之后,处理单元11将前述表中对应于文件a的实体地址“20026”、“20032”、“20148”修改为“10032”,使文件a于硬盘13中的位置指向实体地址“10032”。综上所述,根据本发明的数据压缩装置的实施例,硬盘的每一实体区块具有相同的区块大小,处理单元可根据压缩数据的大小将压缩数据直接储存于一实体区块,或是将压缩数据与冗余数据一并储存于一实体区块,以填满实体区块的储存空间,使硬盘不会有空间破碎的问题。虽然本发明已以实施例公开如上,然其并非用以限定本案,任何本领技术人员人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视后附的权利要求书所界定的范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1