[go: up one dir, main page]

CN114968838A - 数据压缩方法及闪存设备 - Google Patents

数据压缩方法及闪存设备 Download PDF

Info

Publication number
CN114968838A
CN114968838A CN202210594149.1A CN202210594149A CN114968838A CN 114968838 A CN114968838 A CN 114968838A CN 202210594149 A CN202210594149 A CN 202210594149A CN 114968838 A CN114968838 A CN 114968838A
Authority
CN
China
Prior art keywords
data
space
flash memory
module
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210594149.1A
Other languages
English (en)
Other versions
CN114968838B (zh
Inventor
韩斌
陈祥
黄运新
孟鹏涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Dapu Microelectronics Co Ltd
Original Assignee
Shenzhen Dapu Microelectronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Dapu Microelectronics Co Ltd filed Critical Shenzhen Dapu Microelectronics Co Ltd
Priority to CN202210594149.1A priority Critical patent/CN114968838B/zh
Publication of CN114968838A publication Critical patent/CN114968838A/zh
Application granted granted Critical
Publication of CN114968838B publication Critical patent/CN114968838B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例涉及存储设备应用领域,公开了一种数据压缩方法及闪存设备,该数据压缩方法,通过硬件压缩模块获取主机发送的写命令,将写命令对应的主机数据划分为若干个相同空间的第一数据块,对每一第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,由固件模块将第一命令包括的数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成若干个预设空间的最小单元;固件模块组合若干个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备的闪存介质,本申请能够在闪存设备侧进行数据压缩,从而降低写放大,提升闪存设备的使用寿命。

Description

数据压缩方法及闪存设备
技术领域
本申请涉及存储设备应用领域,特别是涉及一种数据压缩方法及闪存设备。
背景技术
闪存设备,例如:固态硬盘(Solid State Drives,SSD),是采用固态电子存储芯片阵列而制成的硬盘,固态硬盘包括控制单元和存储单元(FLASH存储芯片或DRAM存储芯片)。
固态硬盘主要有两个关键指标:寿命和性能,固态硬盘的寿命主要受Nand擦写次数的影响,一个盘内Nand擦写多少次,与总的写入数据量直接相关。如果相同时间写入的数据量越少,Nand就可以用得越久,盘就可以用的越久。在启动GC后,固态硬盘的性能主要受写放大(WriteAmplifier,WA)的影响,写放大越大,主机写入性能越差。写放大直接受盘内的预留空间(OverProvision,OP)的大小的影响。因此,通常需要对原始数据进行压缩,以减少固态硬盘的数据写入量。
目前,通常由主机的硬件对写入的数据进行压缩,将压缩之后的数据写入到固态硬盘中,但是,这种压缩方式在主机侧完成,不能实质减少固态硬盘的数据写入量,也就无法提高固态硬盘的写性能。
基于此,现有技术亟待改进。
发明内容
本申请实施例提供一种数据压缩方法及闪存设备,能够在闪存设备侧进行数据压缩,从而降低写放大,提高闪存设备的使用寿命。
为解决上述技术问题,本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种数据压缩方法,应用于闪存设备,闪存设备包括硬件压缩模块、固件模块、高速缓存模块以及闪存介质,方法包括:
硬件压缩模块获取主机发送的写命令,其中,写命令对应一个主机数据;
硬件压缩模块将主机数据划分为若干个相同空间的第一数据块;
硬件压缩模块对每一第一数据块进行压缩,得到由若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,其中,第一命令包括数据链,每一第二数据块的空间均小于第一数据块的空间;
固件模块将数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成若干个预设空间的最小单元;
固件模块组合若干个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备的闪存介质。
在一些实施例中,对数据链中的若干个第二数据块进行组合,以生成若干个预设空间的最小单元,包括:
获取当前的第二数据块对应的空间;
若当前的第二数据块的空间等于最小单元的空间,将当前的第二数据块直接作为最小单元;
若当前的第二数据块的空间小于最小单元的空间,则搜索下一个第二数据块,进一步判断当前的第二数据块和下一个第二数据块的空间之和是否小于最小单元的空间,若是,则将两者进行合并以作为当前的第二数据块,以此类推,直至遍历所有的第二数据块;
在遍历所有的第二数据块之后,若存在若干个第二数据块的空间之和等于最小单元的空间,则将合并之后的若干个第二数据块作为最小单元;若不存在若干个第二数据块的空间之和等于最小单元的空间,则补充无效数据,以使若干个第二数据块的空间之和与无效数据的空间之和等于最小单元的空间。
在一些实施例中,方法还包括:
若当前的第二数据块的空间小于最小单元的空间,判断当前的查找长度是否超过预设的查找长度阈值,其中,查找长度为当前的第二数据块与最先开始搜索的第二数据块之间的距离;
若是,则补充无效数据,以使当前的第二数据块的空间与无效数据的空间之和等于最小单元的空间;
若否,则搜索下一个第二数据块。
在一些实施例中,方法还包括:
在对闪存设备启动垃圾回收时,固件模块获取闪存设备的闪存介质中的源物理块;
从源物理块中读取若干个最小单元到高速缓存模块;
根据闪存设备的元数据,确定若干个最小单元中的有效数据的位置和长度;
将若干个最小单元中的有效数据进行合并,以得到合并之后的有效数据;
将合并之后的有效数据写入垃圾回收确定的目标物理块,直至满足垃圾回收退出条件。
在一些实施例中,将若干个最小单元中的有效数据进行合并,以得到合并之后的有效数据,包括:
获取当前的最小单元的有效数据的空间;
搜索下一个最小单元,判断当前的最小单元的有效数据的空间与下一个最小单元的有效数据的空间之和是否等于预设空间,其中,预设空间为一个最小单元的空间;
若是,则合并当前的最小单元的有效数据和下一个最小单元的有效数据,得到一个新的最小单元;
若否,则将当前的最小单元的有效数据和下一个最小单元的有效数据进行合并,并进一步搜索下一个最小单元,以此类推,直至遍历所有的最小单元;
在遍历所有的最小单元之后,若存在若干个最小单元的空间之和等于预设空间,则将合并之后的若干个最小单元作为一个新的最小单元;若不存在若干个最小单元的空间之和等于预设空间,则补充无效数据,以使若干个最小单元的空间之和与无效数据的空间之和等于预设空间。
在一些实施例中,方法还包括:
在将压缩后的主机数据写入到高速缓存模块之后,高速缓存模块向主机返回写成功消息。
在一些实施例中,方法还包括:
在下刷单元写入到闪存介质之后,固件模块将下刷单元对应的最小单元从高速缓存模块中删除。
在一些实施例中,方法还包括:
在接收到主机发送的读命令时,若读命令对应的数据存储于高速缓存模块,则固件模块从高速缓存模块中读取读命令对应的数据;
若读命令对应的数据存储于闪存介质中,则固件模块从闪存介质中读取读命令对应的数据。
在一些实施例中,最小单元的空间与下刷单元的空间成倍数关系,第一数据块的空间等于闪存设备的固件的映射管理粒度;下刷单元的空间与闪存设备的闪存介质的数据页的大小相关。
第二方面,本申请实施例提供一种闪存设备,包括:硬件压缩模块、固件模块、高速缓存模块以及闪存介质,其中,
硬件压缩模块,用于获取主机发送的写命令,其中,写命令对应一个主机数据;以及,将主机数据划分为若干个相同空间的第一数据块,对每一第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,其中,第一命令包括数据链,其中,每一第二数据块的空间均小于第一数据块的空间;
固件模块,用于将数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元;并组合多个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备的闪存介质。
第三方面,本申请实施例还提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使闪存设备能够执行如第一方面的命令处理方法。
本申请实施例的有益效果是:区别于现有技术的情况下,本申请实施例提供的一种数据压缩方法,应用于闪存设备,闪存设备包括硬件压缩模块、固件模块、高速缓存模块以及闪存介质,方法包括:硬件压缩模块获取主机发送的写命令,其中,写命令对应一个主机数据;硬件压缩模块将主机数据划分为若干个相同空间的第一数据块;硬件压缩模块对每一第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,其中,第一命令包括数据链,每一第二数据块的空间均小于第一数据块的空间;固件模块将数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元;固件模块组合多个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备的闪存介质。
通过硬件压缩模块获取主机发送的写命令,将写命令对应的主机数据划分为若干个相同空间的第一数据块,对每一第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,由固件模块将第一命令包括的数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元;固件模块组合多个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备的闪存介质,本申请能够在闪存设备侧进行数据压缩,从而降低写放大,提升闪存设备的使用寿命。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的一种闪存设备的结构示意图;
图2是本申请实施例提供的一种数据压缩方法的流程示意图;
图3是本申请实施例提供的一种对主机的写命令进行处理的示意图;
图4是本申请实施例提供的一种数据压缩的示意图;
图5是本申请实施例提供的一种固件模块的结构示意图;
图6是本申请实施例提供的生成最小单元的流程示意图;
图7是本申请实施例提供的一种组合第二数据块得到最小单元的示意图;
图8是本申请实施例提供的一种补充无效数据的示意图;
图9是本申请实施例提供的一种最小单元组合成下刷单元的示意图;
图10是本申请实施例提供的一种垃圾回收的示意图;
图11是本申请实施例提供的一种垃圾回收的流程示意图;
图12是本申请实施例提供的一种垃圾回收的示意图;
图13是本申请实施例提供的一种垃圾回收过程中的数据整合的示意图;
图14是本申请实施例提供的一种数据压缩方法的整体示意图;
图15是本申请实施例提供的一种数据压缩方法的时序图;
图16是本申请实施例提供的一种闪存设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本申请所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
对本申请进行详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释:
写放大(WriteAmplification,WA),指的是写入闪存的数据量与用户写的数据量的比例。由于垃圾回收(GC)的存在,用户要写入一定的数据,闪存设备为了腾出空间写这些数据,需要额外进行一些数据的搬移,也就是额外的写,导致闪存设备往闪存介质中写入的数据量比实际用户写入闪存设备的数据量多,导致写放大增多。
下面结合说明书附图具体说明本申请的技术方案:
请参阅图1,图1是本申请实施例提供的一种闪存设备的结构示意图;
如图1所示,闪存设备100包括闪存介质110以及与闪存介质110连接的控制器120。其中,闪存设备100通过有线或无线的方式与主机200通信连接,用以实现数据交互。
闪存介质110,作为闪存设备100的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质110得以成为各类便携型数字设备的存储介质的基础。
控制器120,包括数据转换器121、处理器122、缓存器123、闪存控制器124以及接口125。
数据转换器121,分别与处理器122和闪存控制器124连接,数据转换器121用于将二进制数据转换为十六进制数据,以及将十六进制数据转换为二进制数据。具体地,当闪存控制器124向闪存介质110写入数据时,通过数据转换器121将待写入的二进制数据转换为十六进制数据,然后再写入闪存介质110。当闪存控制器124从闪存介质110读取数据时,通过数据转换器121将闪存介质110中存储的十六进制数据转换为二进制数据,然后从二进制数据页寄存器中读取转换后的数据。其中,数据转换器121可以包括二进制数据寄存器和十六进制数据寄存器。二进制数据寄存器可以用于保存由十六进制转换为二进制后的数据,十六进制数据寄存器可以用于保存由二进制转换为十六进制后的数据。
处理器122,分别与数据转换器121、缓存器123、闪存控制器124以及接口125连接,其中,处理器122与数据转换器121、缓存器123、闪存控制器124以及接口125可以通过总线或者其他方式连接,处理器用于运行存储在缓存器123中的非易失性软件程序、指令以及模块,从而实现本申请任一方法实施例。
缓存器123,主要用于缓存主机200发送的读/写指令以及根据主机200发送的读/写指令从闪存介质110获取的读数据或者写数据。
闪存控制器124,与闪存介质110、数据转换器121、处理器122以及缓存器123连接,用于访问后端的闪存介质110,管理闪存介质110的各种参数和数据I/O;或者,用于提供访问的接口和协议,实现对应的SAS/SATA target协议端或者NVMe协议端,获取主机200发出的I/O指令并解码和生成内部私有数据结果等待执行;或者,用于负责闪存转换层(Flashtranslation layer,FTL)的核心处理。
接口125,连接主机200以及数据转换器121、处理器122以及缓存器123,用于接收主机200发送的数据,或者,接收处理器122发送的数据,实现主机200与处理器122之间的数据传输,接口125可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2NVME/SATA协议。
请参阅图2,图2是本申请实施例提供的一种数据压缩方法的流程示意图;
其中,该数据压缩方法,应用于闪存设备,该闪存设备包括硬件压缩模块、固件模块、高速缓存模块以及闪存介质。
如图2所示,该数据压缩方法,包括:
步骤S201:硬件压缩模块获取主机发送的写命令,其中,写命令对应一个主机数据;
具体的,请再参阅图3,图3是本申请实施例提供的一种对主机的写命令进行处理的示意图;
如图3所示,当主机的写命令经过NVMe模块之后,由NVMe模块转换为符合NVMe协议的NVMe命令,再将NVMe命令转发到硬件压缩模块。
步骤S202:硬件压缩模块将主机数据划分为若干个相同空间的第一数据块;
如图3所示,硬件压缩模块包括硬件缓存单元、数据拆分单元、数据压缩单元以及数据输出单元,其中,硬件缓存单元连接数据拆分单元,数据拆分单元连接数据压缩单元,数据压缩单元连接数据输出单元。
其中,硬件缓存单元连接NVMe模块,用于缓存NVMe模块发送的NVMe命令,其中,该NVMe命令包括主机数据。当硬件压缩模块接收到NVMe命令之后,由硬件缓存单元存储该NVMe命令包含的主机数据。
其中,数据拆分单元,连接硬件缓存单元,该数据拆分单元用于对该硬件缓存单元中缓存的主机数据进行拆分,其中,数据拆分单元将主机数据划分为若干个相同空间的第一数据块,即每一个第一数据块的空间大小相等,例如:每一个第一数据块的空间大小均为4KB、8KB、16KB。优选地,本申请实施例中的每一个第一数据块的空间大小均为4KB。
其中,数据压缩单元,连接数据拆分单元,该数据压缩单元用于对数据拆分单元进行拆分之后得到的第一数据块进行压缩,以得到压缩之后的数据。
其中,数据输出单元,连接数据压缩单元,该数据输出单元用于将该数据压缩单元压缩得到的数据进行输出,具体的,将压缩之后的数据信息、主机数据以及原始NVMe命令进行组合,生成第一命令,并将第一命令发送到固件模块。
在本申请实施例中,硬件缓存单元包括存储器,例如:动态随机存取存储器(Dynamic Random Access Memory,DRAM);数据拆分单元包括处理器,例如:微处理器;数据压缩单元包括硬件压缩引擎;数据输出单元包括IO接口。
步骤S203:硬件压缩模块对每一第一数据块进行压缩,得到由若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,其中,第一命令包括数据链,每一第二数据块的空间均小于第一数据块的空间;
具体的,硬件压缩模块中的数据压缩单元对每一第一数据块进行压缩,得到若干个第二数据块,并组合若干个第二数据块,得到由若干个第二数据块组成的数据链。
请再参阅图4,图4是本申请实施例提供的一种数据压缩的示意图;
如图4所示,假设主机的写命令对应的主机数据的空间大小为16KB,将该16KB的主机数据划分为4个4KB的第一数据块,并对每一个4KB的第一数据块进行压缩,得到每一个第一数据块对应的第二数据块,即,每一第一数据块一一对应一个第二数据块,例如:4个KB的第一数据块分别被压缩为1KB、3KB、2KB、3KB的第二数据块,并组合4个第二数据块生成数据链,由数据链生成第一命令,其中,第一命令为新的写命令,第一命令包括数据链。可以理解的是,压缩后的数据长度是由压缩算法决定的,不同的压缩算法或者不同的数据pattern,均可以导致压缩后的数据长度不同。由于进行压缩,因此,每一第二数据块的长度均小于第一数据块的长度,即每一第二数据块的空间均小于第一数据块的空间。
在本申请实施例中,第一命令包括主机数据、原始NVMe命令和压缩后的数据信息的集合,其中,原始NVMe命令即主机的写命令经过NVMe模块之后生成的NVMe命令,该NVMe命令包括开始的逻辑地址(startlba)和数据长度(len);该压缩后的数据信息包括每个4K数据单元压缩后的数据长度。
步骤S204:固件模块将数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元;
具体的,硬件压缩模块在生成第一命令之后,将第一命令发送到固件模块,由固件模块将该数据链写入到高速缓存模块,其中,该高速缓存模块包括闪存设备的高速缓冲存储器(Cache)。
请再参阅图5,图5是本申请实施例提供的一种固件模块的结构示意图;
其中,该固件模块用于连接主机(HOST)和闪存阵列(NAND),实现数据IO的处理。
如图5所示,该固件模块50,连接主机200以及硬件模块60,包括:
前端模块501,即(Front End,FE),用于获取主机命令,以产生IO操作,其中,前端模块还用于负责和主机(Host)的通信协议,主机命令、固态硬盘命令的解析等操作;
闪存算法模块502,即闪存转换层(Flash translation layer,FTL),连接数据处理模块,用于对IO操作进行映射处理,以确定下发的闪存阵列;其中,闪存算法模块(FlashTranslation Layer,FTL)向固态硬盘控制器的后端模块(Back End,BE)发送IO操作,以使固态硬盘控制器的后端模块接收闪存算法模块发送的IO操作;
后端模块503,即(Back End,BE),连接闪存算法模块,用于接收闪存算法模块发送的IO操作,以控制硬件模块对闪存阵列进行读/写/擦操作;
在本申请实施例中,硬件模块60,即(HW Op Nand Mode),指的是操作FLASH闪存的模块,连接后端模块503,由后端模块503进行控制,用于操作FLASH闪存,例如:根据IO操作,向对应的闪存阵列或闪存介质进行操作,即完成数据到FLASH闪存的操作处理,操作包括读操作、写操作或擦操作。
其中,前端模块获取到主机命令后,进行处理以产生IO操作,并依次通过闪存算法模块、后端模块以及硬件模块,以对闪存阵列进行操作。例如:主机读数据时,主机(Host)发送主机命令给闪存设备(device),闪存设备的前端模块(FE)接收到主机命令,进行处理后分发到闪存算法模块(FTL),闪存算法模块收到后,通过逻辑到物理的转化处理,然后将请求NAND读操作发送给后端模块(BE),后端模块接收到读操作之后,将硬件指令发送给硬件模块(HW Op Nand Mode),由硬件模块并行地进行操作NAND处理。
在本申请实施例中,硬件压缩模块发送的第一命令由前端模块进行接收,前端模块将该第一命令转发到闪存算法模块,由闪存算法模块解析出该第一命令中的数据链,并将该数据链写入到高速缓存模块,闪存算法模块在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元。
具体的,对数据链中的若干个第二数据块进行组合,以生成若干个预设空间的最小单元,包括:
获取当前的第二数据块对应的空间;
若当前的第二数据块的空间等于最小单元的空间,将当前的第二数据块直接作为最小单元;
若当前的第二数据块的空间小于最小单元的空间,则搜索下一个第二数据块,进一步判断当前的第二数据块和下一个第二数据块的空间之和是否小于最小单元的空间,若是,则将两者进行合并以作为当前的第二数据块,以此类推,直至遍历所有的第二数据块;
在遍历所有的第二数据块之后,若存在若干个第二数据块的空间之和等于最小单元的空间,则将合并之后的若干个第二数据块作为最小单元;若不存在若干个第二数据块的空间之和等于最小单元的空间,则补充无效数据,以使若干个第二数据块的空间之和与无效数据的空间之和等于最小单元的空间。
请参阅图6,图6是本申请实施例提供的生成最小单元的流程示意图;
如图6所示,该生成最小单元的流程,包括:
步骤S601:获取当前的第一个第二数据块和第二数据块的空间大小S1;
步骤S602:判断S1是否等于最小单元的空间大小;
具体的,若S1=最小单元的空间大小,即当前的第二数据块的空间等于最小单元的空间,将当前的第二数据块直接作为最小单元,结束查找;
若否,即当前的第二数据块的空间小于最小单元的空间,则进入步骤S803;
步骤S603:判断当前的查找长度是否超过预设的查找长度阈值;
具体的,若当前的第二数据块的空间小于最小单元的空间,判断当前的查找长度是否超过预设的查找长度阈值,其中,查找长度为当前的第二数据块与最先开始搜索的第二数据块之间的距离;
若是,则补充无效数据,以使当前的第二数据块的空间与无效数据的空间之和等于最小单元的空间;
若否,则搜索下一个第二数据块。
步骤S604:依次遍历其他第二数据块,并获取当前查找到的第二数据块的大小Sx;
步骤S605:判断S1+Sx是否≤最小单元的空间大小;
具体的,搜索下一个第二数据块,进一步判断当前的第二数据块和下一个第二数据块的空间之和是否小于最小单元的空间,若是,则进入步骤606;若否,则返回步骤S603;
步骤S606:S1和Sx组合成一个新的数据块,其中,S1=S1+Sx;
若S1+Sx≤最小单元的空间大小,则将两者进行合并以作为当前的第二数据块,以此类推,直至遍历所有的第二数据块;
步骤S607:补充无效数据,以构成最小单元的空间大小;
具体的,若当前的查找长度超过预设的查找长度或查找距离,则补充无效数据,以构成最小单元的空间大小,并将补充无效数据之后的数据块作为一个最小单元。
其中,无效数据,即Dummy数据,为固件补充的无效数据,例如:全0x0或者全0xF数据。比如nand需要16KB做一次写,则固件必须传输16KB的数据长度过去。补充无效数据Dummy就是申请一段初始化为全0x0或者0xF的数据来补充拼凑的数据。
在遍历所有的第二数据块之后,若存在若干个第二数据块的空间之和等于最小单元的空间,则将合并之后的若干个第二数据块作为最小单元;若不存在若干个第二数据块的空间之和等于最小单元的空间,则补充无效数据,以使若干个第二数据块的空间之和与无效数据的空间之和等于最小单元的空间。
结束。
请再参阅图7,图7是本申请实施例提供的一种组合第二数据块得到最小单元的示意图;
如图7所示,两个主机的写命令分别对应的主机数据为16KB、8KB,分别拆分成3个4KB的第一数据块和2个4KB的第一数据块,并对每一个第一数据块进行压缩,压缩得到的第二数据块的大小分别为1KB、3KB、2KB、3KB、2KB、1KB,此时,将若干个第二数据块进行组合,以得到最小单元,其中,最小单元的空间大小为预设的,最小单元的空间大小与固件中的映射管理粒度相关,即最小单元的空间大小等于固件中的映射管理粒度,例如:映射管理粒度为4KB、8KB、16KB,则最小单元的空间预设为4KB、8KB或16KB,在此不进行限定。优选地,本申请实施例中的最小单元的预设空间为4KB。
请再参阅图8,图8是本申请实施例提供的一种补充无效数据的示意图;
如图8所示,当若干个第二数据块无法组合得到最小单元的空间大小时,即在数据的拼凑过程中,也可能出现无法拼凑出一个4K的情况,此时会需要补充无效数据(dummy)。比如,所有数据压缩后在Cache内都是3KB,没有任意多个可以组合成一个4KB,那最终的数据需要补充无效数据,以凑成4KB的大小。
步骤S205:固件模块组合若干个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备的闪存介质。
具体的,固件模块将高速缓存模块中的若干个最小单元进行组合,得到若干个下刷单元,并将若干个下刷单元写入到闪存设备的闪存介质。
在本申请实施例中,下刷单元的空间大小大于或等于最小单元的空间大小,并且,下刷单元的空间大小为最小单元的空间大小的整数倍。例如:若下刷单元的空间大小等于最小单元的空间大小,则直接将每一个最小单元作为一个下刷单元写入到闪存介质;若下刷单元的空间大小大于最小单元的空间大小,且下刷单元的空间大小为最小单元的空间大小的整数倍,例如:下刷单元的空间大小=比例系数*最小单元的空间大小,则将比例系数个最小单元进行组合得到一个下刷单元,以此类推,得到若干个下刷单元,并将下刷单元写入到闪存介质。
请再参阅图9,图9是本申请实施例提供的一种最小单元组合成下刷单元的示意图;
如图9所示,两个最小单元均为4KB,两个最小单元组成的数据链的大小为8KB,而一个下刷单元的大小为8KB,则两个最小单元组合构成一个下刷单元。
在本申请实施例中,下刷单元的空间大小与闪存介质的数据页的大小相关。
可以理解的是,在固态硬盘中,由于NAND FLASH的读写原理,不能对已写入的数据在其存储物理位置上直接改写。需要首先以物理块(Block)为单位执行擦除操作,然后才允许对该块包含的数据页(Page)执行写操作,这使得SSD具有非常低效的就地更新操作的关键弱点。为此,SSD系统通常采用异地更新操作,即将数据复制到缓冲区进行更新,更新后存储至新位置,包含原数据的旧位置标记为“垃圾”,须经由垃圾回收(Garbage Collection,GC)才能将一个物理块Block包含的全部物理页Page重新转换为可用空间。
垃圾回收(Garbage Collection,GC),是将NAND FLASH中一个物理块里的有效页的数据复制到另一个空闲块(未被使用的物理块)里,然后把这个物理块完全擦除,其中,当NAND FLASH中任意一个物理页中有数据需要修改时,该物理页会被标识为无效页,该无效页内的数据均成为无效数据,并在其他物理块上申请页空间大小进行数据写入,而未被标记为无效页且已使用的物理页被称为有效页。其中,固态硬盘(Solid State Drives,SSD)的编程/擦除次数(Program/Erase Cycles,PE),简称为擦除次数,决定固态硬盘的寿命。
请参阅图10,图10是本申请实施例提供的一种垃圾回收的示意图;
如图10所示,该垃圾回收的过程是将一个物理块里的有效页的数据复制到另一个空闲块(未被使用的物理块)里,然后把这个物理块完全擦除,例如:将物理块A(BlockA)的有效数据转移到物理块B(BlockB)。可以理解的是,一个物理块(Block)上可能有无效数据和有效数据。通过将一个物理块(Block)中的有效数据读出,写到另一个物理块(Block),从而能够达到释放出整个源物理块的空间的目的。
请再参阅图11,图11是本申请实施例提供的一种垃圾回收的流程示意图;
如图11所示,该垃圾回收的流程,包括:
步骤S111:开始垃圾回收;
步骤S112:选择需要垃圾回收的源物理块;
具体的,在垃圾回收进行之后,闪存设备的垃圾回收模块根据垃圾回收的启动条件选择需要垃圾回收的源物理块,其中,启动条件包括有效数据的比例小于预设比例阈值。
在本申请实施例中,垃圾回收模块属于闪存设备的硬件或固件,在此不进行限定。
步骤S113:从闪存介质中读取若干个最小单元到高速缓存模块中;
步骤S114:根据闪存设备的元数据,确定若干个最小单元中的有效数据的位置和长度;
步骤S115:将若干个最小单元中的有效数据的地址和长度组成一个链表;
可以理解的是,Nand上存储的一个最小单元中,例如最小单元为4KB,在最小单元4KB的空间中,可能是原来多个主机的4K数据压缩后的结果。所以其实是多个主机4K数据对应着一份Nand上的4K数据。比如LBA0,LBA1,LBA2,LBA3最终压缩存在了一个4KB的空间中。
当主机再次写LBA0的时候,LBA0就可能和LBA11,LBA12,LBA13压缩到了另一个4K数据中。所以原来这个4K数据中其实有一部分就是无效数据。如果GC将整个4K都进行搬迁,则也搬走了一部分无效数据,增加了写放大。
需要说明的是,如果GC搬移的每个NAND上的4K数据中都只有一个主机的4K数据还有效,其他数据都因为主机重新写的时候和其他数据压缩到一起了。如果GC直接搬移NAND上的4K数据,则让整个数据写入时候的压缩效果逐渐“退化”。所以,在垃圾回收的过程中,本方案将数据再次进行整合,即读出的每个4K数据中,仅找出有效的数据,将各个4K中的有效数据重新再拼接成一个新的4K,然后再写入到另一个物理块(Block)中,从而减少写放大。
步骤S116:遍历链表拼凑出新的最小单元;
具体的,将若干个最小单元中的有效数据进行合并,以得到合并之后的有效数据,其中,合并之和的有效数据的大小以最小单元的空间大小为粒度;若无法拼凑成最小单元,则补充无效数据,以拼凑成最小单元的空间大小。
需要说明的是,闪存设备的固件中包括元数据,元数据用于维护每个NAND上的4K数据中的有效数据,即元数据用于确定哪些位置的数据是有效数据。
步骤S117:将拼凑得到的最小单元写入目标物理块;
具体的,将拼凑得到的每一个最小单元写入到目标物理块,相当于将合并之后的有效数据写入垃圾回收确定的目标物理块。
请再参阅图12,图12是本申请实施例提供的一种垃圾回收的示意图;
其中,垃圾回收模块包括读数据模块和写数据模块。
具体的,如图12所示,读数据模块用于从闪存介质(NAND)中选择需要垃圾回收的源物理块,写数据模块用于将拼凑得到的最小单元写入闪存介质(NAND)中的目标物理块。
请再参阅图13,图13是本申请实施例提供的一种垃圾回收过程中的数据整合的示意图;
可以理解的是,在垃圾回收的过程中,只需要将源物理块中的有效数据进行搬移,因此,确定源物理块中的若干个最小单元中的有效数据的位置和长度,将若干个最小单元中的有效数据进行组合,从而拼接成一个新的最小单元,如图13所示,最小单元的空间大小为4KB,将有效数据进行组合得到新的最小单元,组合得到的最小单元的空间大小也为4KB。其中,图中红色部分为被重新写过的无效数据,绿色部分为有效数据。GC读出的BlockA中的两个4K,总共有效的实际数据只有3K,则只把这3K数据提取出来,整合到要往BlockB写的buffer中。由此,减少了GC的写入量,也保存了在数据写入时进行压缩的成果。
步骤S118:继续读、写数据过程循环,直至满足垃圾回收退出条件;
步骤S119:结束垃圾回收;
在本申请实施例中,通过专用硬件压缩配合固件逻辑的方案,可以满足SSD的带宽性能需求。并且,通过压缩拼接数据和GC拼接数据算法,降低了闪存设备的写放大,间接提升了闪存设备的使用寿命。并且,由于本申请中的方案是主机完全无感的压缩方案,主机对闪存设备进行正常读写的时候,闪存设备内自动完成了数据的解压和压缩功能,从而提高了闪存设备与主机进行交互的稳定性。
请再参阅图14,图14是本申请实施例提供的一种数据压缩方法的整体示意图;
如图14所示,主机(Host)发送主机命令(HostCmd),主机命令中包括原始数据(Originaldata),即主机数据。当主机的写命令经过NVMe模块之后,由NVMe模块转换为符合NVMe协议的NVMe命令,再将NVMe命令转发到硬件压缩模块(HWCompressEngine)。其中,NVMe模块、硬件压缩模块均属于闪存设备的硬件模块。
其中,硬件压缩模块将主机数据划分为若干个相同空间的第一数据块,并对每一第一数据块进行压缩,得到由若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,其中,第一命令包括数据链,每一第二数据块的空间均小于第一数据块的空间;
其中,固件模块将数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成若干个最小单元,再组合若干个最小单元得到若干个下刷单元(Cacheflushunit),以将该若干个下刷单元写入到闪存设备的闪存介质。
在本申请实施例中,主机命令(HostCmd)包括:主机命令的标识(Cmd ID)、逻辑块地址(Logical Block Address,Lba)以及要读的地址长度(Len),其中,相对于主机而言,逻辑块地址一般是512Byte,4k等等。
请再参阅图15,图15是本申请实施例提供的一种数据压缩方法的时序图;
如图15所示,数据压缩方法的时序,包括:
步骤S151:主机向硬件压缩模块写入数据;
步骤S152:硬件压缩模块对主机写入的数据进行数据压缩,得到压缩后的主机数据;
步骤S153:硬件压缩模块将压缩后的主机数据写入高速缓存模块;
步骤S154:在硬件压缩模块将压缩后的主机数据写入高速缓存模块之后,高速缓存模块向主机返回写成功消息。
其中,该写成功消息是固件模块通过高速缓存模块向主机发送的,或者,该写成功消息直接由高速缓存模块进行发送。
步骤S155:高速缓存模块组合压缩后的数据;
步骤S156:写入闪存;
具体的,固件模块将组合压缩后的数据之后得到的下刷单元写入闪存。
步骤S157:写入闪存成功;
具体的,固件模块向高速缓存模块返回写入闪存成功消息。
步骤S158:删除高速缓存模块中的数据;
具体的,在下刷单元写入到闪存介质之后,固件模块将下刷单元对应的最小单元从高速缓存模块中删除,具体的,当固件模块将下刷单元成功写入到闪存(NAND)之后,通知高速缓存模块,以使高速缓存模块删除其内存中存储的相应数据,其中,高速缓存模块的内存包括高速缓存器。
在一些实施例中,方法还包括:
在接收到主机发送的读命令时,若读命令对应的数据存储于高速缓存模块,则固件模块从高速缓存模块中读取读命令对应的数据;
若读命令对应的数据存储于闪存介质中,则固件模块从闪存介质中读取读命令对应的数据。
在一些实施例中,最小单元的空间与下刷单元的空间成倍数关系,第一数据块的空间等于闪存设备的固件的映射管理粒度;下刷单元的空间与闪存设备的闪存介质的数据页的大小相关。
在本申请实施例中,通过提供的一种数据压缩方法,应用于闪存设备,闪存设备包括硬件压缩模块、固件模块、高速缓存模块以及闪存介质,方法包括:硬件压缩模块获取主机发送的写命令,其中,写命令对应一个主机数据;硬件压缩模块将主机数据划分为若干个相同空间的第一数据块;硬件压缩模块对每一第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,其中,第一命令包括数据链,每一第二数据块的空间均小于第一数据块的空间;固件模块将数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元;固件模块组合多个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备的闪存介质。
通过硬件压缩模块获取主机发送的写命令,将写命令对应的主机数据划分为若干个相同空间的第一数据块,对每一第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,由固件模块将第一命令包括的数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元;固件模块组合多个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备的闪存介质,本申请能够在闪存设备侧进行数据压缩,从而降低写放大,提升闪存设备的使用寿命。
请再参阅图16,图16是本申请实施例提供的一种闪存设备的结构示意图;
如图16所示,该闪存设备160,包括:硬件压缩模块161、高速缓存模块162、固件模块163以及闪存介质164,其中,
硬件压缩模块161,用于获取主机发送的写命令,其中,写命令对应一个主机数据;以及,将主机数据划分为若干个相同空间的第一数据块,对每一第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块163,其中,第一命令包括数据链,其中,每一第二数据块的空间均小于第一数据块的空间。
高速缓存模块162,用于存储硬件压缩模块161写入的数据,或者,存储固件模块163写入的数据,并对数据进行组合。
固件模块163,用于将数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元;并组合多个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备160的闪存介质164。
闪存介质164,用于存储固件模块写入的数据。
在本申请实施例中,通过硬件压缩模块获取主机发送的写命令,将写命令对应的主机数据划分为若干个相同空间的第一数据块,对每一第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将第一命令发送到固件模块,由固件模块将第一命令包括的数据链写入到高速缓存模块,在高速缓存模块中对数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元;固件模块组合多个最小单元,得到若干个下刷单元,并将下刷单元写入到闪存设备的闪存介质,本申请能够在闪存设备侧进行数据压缩,从而降低写放大,提升闪存设备的使用寿命。
本申请实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如上述一个或多个处理器可执行上述任意方法实施例中的数据压缩方法,例如,执行上述任意方法实施例中的数据压缩方法,例如,执行以上描述的各个步骤。
以上所描述的装置或设备实施例仅仅是示意性的,其中作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种数据压缩方法,其特征在于,应用于闪存设备,所述闪存设备包括硬件压缩模块、固件模块、高速缓存模块以及闪存介质,所述方法包括:
所述硬件压缩模块获取主机发送的写命令,其中,所述写命令对应一个主机数据;
所述硬件压缩模块将所述主机数据划分为若干个相同空间的第一数据块;
所述硬件压缩模块对每一所述第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将所述第一命令发送到所述固件模块,其中,所述第一命令包括所述数据链,每一所述第二数据块的空间均小于所述第一数据块的空间;
所述固件模块将所述数据链写入到所述高速缓存模块,在所述高速缓存模块中对所述数据链中的若干个第二数据块进行组合,以生成若干个预设空间的最小单元;
所述固件模块组合若干个所述最小单元,得到若干个下刷单元,并将所述下刷单元写入到所述闪存设备的闪存介质。
2.根据权利要求1所述的方法,其特征在于,所述对所述数据链中的若干个第二数据块进行组合,以生成若干个预设空间的最小单元,包括:
获取当前的第二数据块对应的空间;
若当前的第二数据块的空间等于所述最小单元的空间,将当前的第二数据块直接作为最小单元;
若当前的第二数据块的空间小于所述最小单元的空间,则搜索下一个第二数据块,进一步判断当前的第二数据块和下一个第二数据块的空间之和是否小于所述最小单元的空间,若是,则将两者进行合并以作为当前的第二数据块,以此类推,直至遍历所有的第二数据块;
在遍历所有的第二数据块之后,若存在若干个第二数据块的空间之和等于所述最小单元的空间,则将合并之后的若干个第二数据块作为最小单元;若不存在若干个第二数据块的空间之和等于所述最小单元的空间,则补充无效数据,以使若干个第二数据块的空间之和与无效数据的空间之和等于最小单元的空间。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若当前的第二数据块的空间小于所述最小单元的空间,判断当前的查找长度是否超过预设的查找长度阈值,其中,查找长度为当前的第二数据块与最先开始搜索的第二数据块之间的距离;
若是,则补充无效数据,以使当前的第二数据块的空间与无效数据的空间之和等于所述最小单元的空间;
若否,则搜索下一个第二数据块。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在对所述闪存设备启动垃圾回收时,所述固件模块获取所述闪存设备的闪存介质中的源物理块;
从所述源物理块中读取若干个最小单元到所述高速缓存模块;
根据所述闪存设备的元数据,确定若干个所述最小单元中的有效数据的位置和长度;
将所述若干个最小单元中的有效数据进行合并,以得到合并之后的有效数据;
将所述合并之后的有效数据写入垃圾回收确定的目标物理块,直至满足垃圾回收退出条件。
5.根据权利要求4所述的方法,其特征在于,所述将所述若干个最小单元中的有效数据进行合并,以得到合并之后的有效数据,包括:
获取当前的最小单元的有效数据的空间;
搜索下一个最小单元,判断当前的最小单元的有效数据的空间与下一个最小单元的有效数据的空间之和是否等于预设空间,其中,所述预设空间为一个最小单元的空间;
若是,则合并当前的最小单元的有效数据和下一个最小单元的有效数据,得到一个新的最小单元;
若否,则将当前的最小单元的有效数据和下一个最小单元的有效数据进行合并,并进一步搜索下一个最小单元,以此类推,直至遍历所有的最小单元;
在遍历所有的最小单元之后,若存在若干个最小单元的空间之和等于所述预设空间,则将合并之后的若干个最小单元作为一个新的最小单元;若不存在若干个最小单元的空间之和等于所述预设空间,则补充无效数据,以使若干个最小单元的空间之和与无效数据的空间之和等于所述预设空间。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在将压缩后的主机数据写入到所述高速缓存模块之后,高速缓存模块向所述主机返回写成功消息。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述下刷单元写入到闪存介质之后,固件模块将所述下刷单元对应的最小单元从所述高速缓存模块中删除。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到主机发送的读命令时,若所述读命令对应的数据存储于所述高速缓存模块,则固件模块从所述高速缓存模块中读取所述读命令对应的数据;
若所述读命令对应的数据存储于所述闪存介质中,则固件模块从所述闪存介质中读取所述读命令对应的数据。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述最小单元的空间与所述下刷单元的空间成倍数关系,所述第一数据块的空间等于所述闪存设备的固件的映射管理粒度;所述下刷单元的空间与所述闪存设备的闪存介质的数据页的大小相关。
10.一种闪存设备,其特征在于,包括:硬件压缩模块、固件模块、高速缓存模块以及闪存介质,其中,
所述硬件压缩模块,用于获取主机发送的写命令,其中,所述写命令对应一个主机数据;以及,将所述主机数据划分为若干个相同空间的第一数据块,对每一所述第一数据块进行压缩,得到若干个第二数据块组成的数据链,以生成第一命令,并将所述第一命令发送到所述固件模块,其中,所述第一命令包括所述数据链,其中,每一所述第二数据块的空间均小于所述第一数据块的空间;
所述固件模块,用于将所述数据链写入到所述高速缓存模块,在所述高速缓存模块中对所述数据链中的若干个第二数据块进行组合,以生成多个预设空间的最小单元;并组合多个所述最小单元,得到若干个下刷单元,并将所述下刷单元写入到所述闪存设备的闪存介质。
CN202210594149.1A 2022-05-27 2022-05-27 数据压缩方法及闪存设备 Active CN114968838B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210594149.1A CN114968838B (zh) 2022-05-27 2022-05-27 数据压缩方法及闪存设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210594149.1A CN114968838B (zh) 2022-05-27 2022-05-27 数据压缩方法及闪存设备

Publications (2)

Publication Number Publication Date
CN114968838A true CN114968838A (zh) 2022-08-30
CN114968838B CN114968838B (zh) 2025-07-01

Family

ID=82957381

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210594149.1A Active CN114968838B (zh) 2022-05-27 2022-05-27 数据压缩方法及闪存设备

Country Status (1)

Country Link
CN (1) CN114968838B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115809025A (zh) * 2022-12-22 2023-03-17 中电云数智科技有限公司 一种分布式存储数据压缩方法
CN117472295A (zh) * 2023-12-28 2024-01-30 合肥康芯威存储技术有限公司 一种存储器、数据处理方法、设备及介质
CN119668521A (zh) * 2024-12-12 2025-03-21 平头哥(上海)半导体技术有限公司 存储控制器、存储装置、读取数据和写入数据的方法
TWI902165B (zh) * 2024-03-12 2025-10-21 瑞昱半導體股份有限公司 記憶體操作方法、電子裝置及非暫態電腦可讀取媒體

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE20315712U1 (de) * 2003-10-13 2003-12-11 Carry Computer Eng. Co., Ltd., Hisndien Speichereinrichtung mit optimierter Kompression
CN111563052A (zh) * 2020-04-30 2020-08-21 深圳忆联信息系统有限公司 降低读延时的缓存方法、装置、计算机设备及存储介质
US20210294499A1 (en) * 2020-03-23 2021-09-23 Vmware, Inc. Enhanced data compression in distributed datastores
CN113568573A (zh) * 2021-07-14 2021-10-29 锐掣(杭州)科技有限公司 数据存储方法、数据存储装置、存储介质及产品

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE20315712U1 (de) * 2003-10-13 2003-12-11 Carry Computer Eng. Co., Ltd., Hisndien Speichereinrichtung mit optimierter Kompression
US20210294499A1 (en) * 2020-03-23 2021-09-23 Vmware, Inc. Enhanced data compression in distributed datastores
CN111563052A (zh) * 2020-04-30 2020-08-21 深圳忆联信息系统有限公司 降低读延时的缓存方法、装置、计算机设备及存储介质
CN113568573A (zh) * 2021-07-14 2021-10-29 锐掣(杭州)科技有限公司 数据存储方法、数据存储装置、存储介质及产品

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115809025A (zh) * 2022-12-22 2023-03-17 中电云数智科技有限公司 一种分布式存储数据压缩方法
CN115809025B (zh) * 2022-12-22 2025-12-02 中电云计算技术有限公司 一种分布式存储数据压缩方法
CN117472295A (zh) * 2023-12-28 2024-01-30 合肥康芯威存储技术有限公司 一种存储器、数据处理方法、设备及介质
CN117472295B (zh) * 2023-12-28 2024-03-22 合肥康芯威存储技术有限公司 一种存储器、数据处理方法、设备及介质
TWI902165B (zh) * 2024-03-12 2025-10-21 瑞昱半導體股份有限公司 記憶體操作方法、電子裝置及非暫態電腦可讀取媒體
CN119668521A (zh) * 2024-12-12 2025-03-21 平头哥(上海)半导体技术有限公司 存储控制器、存储装置、读取数据和写入数据的方法

Also Published As

Publication number Publication date
CN114968838B (zh) 2025-07-01

Similar Documents

Publication Publication Date Title
CN114968838B (zh) 数据压缩方法及闪存设备
JP6553566B2 (ja) メモリシステムおよび制御方法
JP5603997B2 (ja) ストレージ装置及びデータ制御方法
TWI679537B (zh) 資料移動方法及儲存控制器
CN103136109B (zh) 一种具有压缩功能的固态存储系统ftl写入及读取方法
US8645614B2 (en) Method and apparatus for managing data of flash memory via address mapping
US11397669B2 (en) Data storage device and non-volatile memory control method
CN108027764B (zh) 可转换的叶的存储器映射
KR102756399B1 (ko) 메모리 디바이스의 조각 모음을 위한 시스템 및 방법
CN112394874B (zh) 一种键值kv的存储方法、装置及存储设备
US10592150B2 (en) Storage apparatus
KR101374065B1 (ko) 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
CN103389942A (zh) 控制装置、存储装置及存储控制方法
CN115756312A (zh) 数据访问系统、数据访问方法和存储介质
CN109815157B (zh) 编程命令处理方法与装置
CN106776361B (zh) 一种面向大规模非易失性存储介质的缓存方法和系统
CN113835617B (zh) 数据处理方法及对应的数据储存装置
CN112148626A (zh) 压缩数据的存储方法及其存储设备
TWI900138B (zh) 記憶體控制器、資料讀取方法及儲存裝置
WO2019148757A1 (zh) 非易失随机访问存储器及其提供方法
CN113093992A (zh) 一种命令的解压方法、系统及固态硬盘
CN114625318B (zh) 应用于固态硬盘的数据写入方法、装置、设备
JP2014225297A (ja) フラッシュメモリモジュール及びストレージ装置
CN116368472A (zh) 数据处理方法及相关设备
CN107077420A (zh) 覆盖擦除块映射

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: China

Address after: 518000 3501, venture capital building, No. 9, Tengfei Road, huanggekeng community, Longcheng street, Longgang District, Shenzhen, Guangdong Province

Applicant after: Shenzhen Dapu Microelectronics Co.,Ltd.

Address before: 518000 room 3501, venture capital building, No. 9, Tengfei Road, Longgang District, Shenzhen, Guangdong Province

Applicant before: SHENZHEN DAPU MICROELECTRONICS Co.,Ltd.

Country or region before: China

GR01 Patent grant
GR01 Patent grant