一种用于SSD的数据压缩方法与流程

文档序号:28736922发布日期:2022-02-07 20:11阅读:292来源:国知局
一种用于ssd的数据压缩方法
技术领域
:1.本发明涉及ssd数据压缩的
技术领域
:,特别涉及一种用于ssd的数据压缩方法。
背景技术
::2.除了多媒体(multi-media)的数据外,大多储存于ssd的数据皆可压缩,且压缩比例超过三成,多出来的空间不但可以储存新的资料,也可使ssd效能变好。但数据压缩后的大小不固定,且需要额外的空间纪录压缩的相关信息,造成压缩算法太过复杂,所以目前大多ssd皆无内建数据压缩技术。技术实现要素:3.针对现有技术中存在的不足之处,本发明的目的是提供一种用于ssd的数据压缩方法,可有效降低算法的复杂度,缩短ssd读写的处理时间,并大幅降低写入放大比,以提升效能及延长ssd寿命。为了实现根据本发明的上述目的和其他优点,提供了一种用于ssd的数据压缩方法,包括以下步骤:4.s1、将4kb倍数大小的数据输入进行压缩;5.s2、通过将步骤s1中数据分成多个4kb单元数据,且按顺序分别对4kb单元数据进行压缩;6.s3、将第一个4kb单元数据进行压缩后,通过与第二个4kb单元数据压缩后的大小进行相加,如果相加之后的数据大小未超过4kb,继续等待下一个4kb单元数据压缩之后的大小进行相加;7.s4、在步骤s3中,当多个4kb单元数据压缩后相加后与下一个4kb单元数据压缩后的数据相加的大小超过4kb,则将之前的多个4kb单元数据压缩进行存储,之后的4kb单元数据重复步骤s3;8.s5、通过步骤s1压缩后的数据写入nandflash存储器中,且将nandflash存储器的实体地址存放于逻辑到实体地址映像表格中;9.s6、将所述ssd中预留4byte~16byte的存储空间;10.s7、将压缩前数据的lba写入步骤s3中的预留的存储空间,并且将数据是否压缩的信息同时存入;11.s8、通过主机读取数据时,利用数据的lba比对fwmeta内的lba,以确定需要的数据是在解压缩后的第几个4kb。12.优选的,所述步骤s1中的数据大小为8kb、12kb及16kb,将8kb、12kb及16kb的数据均压缩成4kb,且将压缩后的数据长度相加。13.优选的,所述步骤s1中当数据的大小不满足8kb、12kb及16kb,则该数据不进行压缩。14.优选的,所述步骤s4中,当压缩后的数据大小相加不满4kb时,将该压缩后的数据补充到4kb进行压缩存储。15.优选的,所述步骤s4中,每个4kb单元数据之间设置有一个时间模块,当被压缩后的4kb单元数据超过间隔时间没有压缩数据进入,则将该4kb单元数据不进行压缩直接存储。16.优选的,还包括所述ssd接收来自控制器的写请求,所述写请求中携带有待写数据;所述固态硬盘对所述待写数据进行压缩得到压缩数据;通过ssd存储压缩数据;和所述固态硬盘向所述控制器发送第一反馈信息,所述第一反馈信息指示所述压缩数据存储后所述固态硬盘的剩余容量。17.优选的,所述固态硬盘为所述待写入数据分配空白逻辑块,所述空白逻辑块为具有空闲逻辑地址的逻辑块,每个逻辑块对应于所述固态硬盘的逻辑容量段;所述固态硬盘将分配的空白逻辑块转换为有效逻辑块,所述有效逻辑块是其逻辑地址被有效数据占用的逻辑块;和通过ssd查询ssd中剩余的空白逻辑块数量;和所述ssd向所述控制器发送第一反馈信息,包括:所述ssd向所述控制器发送所述第一反馈信息,所述第一反馈信息包括所述剩余空白逻辑块的数量和/或所述剩余容量,所述剩余容量是基于所述余空白逻辑块的数量确定的块。18.本发明与现有技术相比,其有益效果是:19.(1)通过压缩8kb、12kb及16kb大小的数据,超过该数据大小的数据不进行压缩,使得数据压缩后仍然是以4kb为最小单位,避免压缩后资料大小不同,增加处理的复杂度。20.(2)使ssd的逻辑到实体地址映像表格(l2ptable)完全不用增大,可节省储存空间。21.(3)结合ssd原本的架构,使用本发明的压缩方法,不须大幅修改原本ssd的作法。附图说明22.图1为根据本发明的用于ssd的数据压缩方法的结构示意图。具体实施方式23.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。24.参照图1,一种用于ssd的数据压缩方法,包括:s1、将4kb倍数大小的数据输入进行压缩;25.s2、通过将步骤s1中数据分成多个4kb单元数据,且按顺序分别对4kb单元数据进行压缩;26.s3、将第一个4kb单元数据进行压缩后,通过与第二个4kb单元数据压缩后的大小进行相加,如果相加之后的数据大小未超过4kb,继续等待下一个4kb单元数据压缩之后的大小进行相加;27.s4、在步骤s3中,当多个4kb单元数据压缩后相加后与下一个4kb单元数据压缩后的数据相加的大小超过4kb,则将之前的多个4kb单元数据压缩进行存储,之后的4kb单元数据重复步骤s3;28.s5、通过步骤s1压缩后的数据写入nandflash存储器中,且将nandflash存储器的实体地址存放于逻辑到实体地址映像表格中;29.s6、将所述ssd中预留4byte~16byte的存储空间;30.s7、将压缩前数据的lba写入步骤s3中的预留的存储空间,并且将数据是否压缩的信息同时存入;31.s8、通过主机读取数据时,利用数据的lba比对fwmeta内的lba,以确定需要的数据是在解压缩后的第几个4kb。32.进一步的,所述步骤s1中的数据大小为8kb、12kb及16kb,将8kb、12kb及16kb的数据均压缩成4kb,且将压缩后的数据长度相加。33.进一步的,所述步骤s1中当数据的大小不满足8kb、12kb及16kb,则该数据不进行压缩。34.进一步的,所述步骤s4中,当压缩后的数据大小相加不满4kb时,将该压缩后的数据补充到4kb进行压缩存储。35.进一步的,所述步骤s4中,每个4kb单元数据之间设置有一个时间模块,当被压缩后的4kb单元数据超过间隔时间没有压缩数据进入,则将该4kb单元数据不进行压缩直接存储。36.进一步的,还包括所述ssd接收来自控制器的写请求,所述写请求中携带有待写数据;所述固态硬盘对所述待写数据进行压缩得到压缩数据;通过ssd存储压缩数据;和所述固态硬盘向所述控制器发送第一反馈信息,所述第一反馈信息指示所述压缩数据存储后所述固态硬盘的剩余容量,所述固态硬盘为所述待写入数据分配空白逻辑块,所述空白逻辑块为具有空闲逻辑地址的逻辑块,每个逻辑块对应于所述固态硬盘的逻辑容量段;所述固态硬盘将分配的空白逻辑块转换为有效逻辑块,所述有效逻辑块是其逻辑地址被有效数据占用的逻辑块;和通过ssd查询ssd中剩余的空白逻辑块数量;和所述ssd向所述控制器发送第一反馈信息,包括:所述ssd向所述控制器发送所述第一反馈信息,所述第一反馈信息包括所述剩余空白逻辑块的数量和/或所述剩余容量,所述剩余容量是基于所述剩余空白逻辑块的数量确定的块0,所述固态硬盘从控制器接收写请求,所述写请求中携带有待写数据。所述固态硬盘对所述待写数据进行压缩,得到压缩后的数据。应当理解,ssd可以根据逻辑块对待写数据进行压缩,即通过压缩得到的压缩块的数量取决于逻辑块地址(logicalblockaddress,lba)的数量。)分配给要写入的数据。此外,ssd可以使用固定长度压缩或可变长度压缩。该方法还包括:所述固态硬盘存储所述压缩数据;所述固态硬盘向所述控制器发送第一反馈信息,所述第一反馈信息指示所述压缩数据存储后所述固态硬盘的剩余容量。应当理解,第一反馈信息可以多种方式指示剩余容量,例如,直接指示方式或间接指示方式。例如,直接指示的方式可以是:ssd直接向控制器报告ssd的剩余容量;间接指示方式可以是:ssd向控制器上报ssd剩余容量的变化,控制器还可以根据ssd剩余容量的变化确定ssd剩余容量。通过ssd存储压缩数据;所述固态硬盘向所述控制器发送第一反馈信息,所述第一反馈信息指示所述压缩数据存储后所述固态硬盘的剩余容量。应当理解,第一反馈信息可以多种方式指示剩余容量,例如,直接指示方式或间接指示方式。例如,直接指示的方式可以是:ssd直接向控制器报告ssd的剩余容量;间接指示方式可以是:ssd向控制器上报ssd剩余容量的变化,控制器还可以根据ssd剩余容量的变化确定ssd剩余容量。通过ssd存储压缩数据;所述固态硬盘向所述控制器发送第一反馈信息,所述第一反馈信息指示所述压缩数据存储后所述固态硬盘的剩余容量。应当理解,第一反馈信息可以多种方式指示剩余容量,例如,直接指示方式或间接指示方式。例如,直接指示的方式可以是:ssd直接向控制器报告ssd的剩余容量;间接指示方式可以是:ssd向控制器上报ssd剩余容量的变化,控制器还可以根据ssd剩余容量的变化确定ssd剩余容量。所述固态硬盘向所述控制器发送第一反馈信息,所述第一反馈信息指示所述压缩数据存储后所述固态硬盘的剩余容量。应当理解,第一反馈信息可以多种方式指示剩余容量,例如,直接指示方式或间接指示方式。例如,直接指示的方式可以是:ssd直接向控制器报告ssd的剩余容量;间接指示方式可以是:ssd向控制器上报ssd剩余容量的变化,控制器还可以根据ssd剩余容量的变化确定ssd剩余容量。所述固态硬盘向所述控制器发送第一反馈信息,所述第一反馈信息指示所述压缩数据存储后所述固态硬盘的剩余容量。应当理解,第一反馈信息可以多种方式指示剩余容量,例如,直接指示方式或间接指示方式。例如,直接指示的方式可以是:ssd直接向控制器报告ssd的剩余容量;间接指示方式可以是:ssd向控制器上报ssd剩余容量的变化,控制器还可以根据ssd剩余容量的变化确定ssd剩余容量。其中,第一反馈信息指示存储压缩数据后ssd的剩余容量。应当理解,第一反馈信息可以多种方式指示剩余容量,例如,直接指示方式或间接指示方式。例如,直接指示的方式可以是:ssd直接向控制器报告ssd的剩余容量;间接指示方式可以是:ssd向控制器上报ssd剩余容量的变化,控制器还可以根据ssd剩余容量的变化确定ssd剩余容量。其中,第一反馈信息指示存储压缩数据后ssd的剩余容量。应当理解,第一反馈信息可以多种方式指示剩余容量,例如,直接指示方式或间接指示方式。例如,直接指示的方式可以是:ssd直接向控制器报告ssd的剩余容量;间接指示方式可以是:ssd向控制器上报ssd剩余容量的变化,控制器还可以根据ssd剩余容量的变化确定ssd剩余容量。第一反馈信息可以多种方式指示剩余容量,例如,直接指示方式或间接指示方式。例如,直接指示的方式可以是:ssd直接向控制器报告ssd的剩余容量;间接指示方式可以是:ssd向控制器上报ssd剩余容量的变化,控制器还可以根据ssd剩余容量的变化确定ssd剩余容量。第一反馈信息可以多种方式指示剩余容量,例如,直接指示方式或间接指示方式。例如,直接指示的方式可以是:ssd直接向控制器报告ssd的剩余容量;间接指示方式可以是:ssd向控制器上报ssd剩余容量的变化,控制器还可以根据ssd剩余容量的变化确定ssd剩余容量。37.这里说明的设备数量和处理规模是用来简化本发明的说明的,对本发明的应用、修改和变化对本领域的技术人员来说是显而易见的。38.尽管本发明的实施方案已公开如上,但其并不仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1