CN113094292B - 数据存储装置以及非挥发式存储器控制方法 - Google Patents
数据存储装置以及非挥发式存储器控制方法 Download PDFInfo
- Publication number
- CN113094292B CN113094292B CN202010022952.9A CN202010022952A CN113094292B CN 113094292 B CN113094292 B CN 113094292B CN 202010022952 A CN202010022952 A CN 202010022952A CN 113094292 B CN113094292 B CN 113094292B
- Authority
- CN
- China
- Prior art keywords
- data
- key
- compressed
- key value
- value
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/70—Details relating to dynamic memory management
- G06F2212/702—Conservative garbage collection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
钥值存储架构的数据压缩技术。控制器对一非挥发式存储器进行垃圾回收而释出存储空间时,收集并压缩有效的多笔钥值数据以产生一压缩数据,将该压缩数据以一钥值格式编排为一压缩钥值数据,且将该压缩钥值数据程序化至该非挥发式存储器。上述多笔钥值数据各自也是呈上述钥值格式。压缩算法的版本也可载明于该压缩钥值数据中。旧算法解压缩的钥值数据可在垃圾回收时以新算法压缩,实现压缩算法的平滑升级。
Description
技术领域
本发明有关于非挥发式存储器的控制,其中特别关于钥值存储(key-valuestorage)架构的数据压缩(data compression)以及压缩算法升级。
背景技术
非挥发式存储器有多种形式─例如,闪存(flash memory)、磁阻式随机存取存储器(Magnetoresistive RAM)、铁电随机存取存储器(Ferroelectric RAM)、电阻式随机存取存储器(Resistive RAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM,STT-RAM)…等,用于长时间数据保存,可做为存储媒体实现一数据存储装置。
非挥发式存储器有其特殊的存储特性,其操作以及管理需特殊设计。
发明内容
本案特别应用于钥值存储(key-value storage)架构,且在对非挥发式存储器进行垃圾回收(garbage collection)释出存储空间时实现数据压缩(data compression)。本案更提出压缩算法平滑升级方式。
根据本案一种实施方式实现的一数据存储装置包括一非挥发式存储器以及耦接该非挥发式存储器的一控制器。该控制器对该非挥发式存储器进行垃圾回收而释出存储空间时,收集并压缩有效的多笔钥值数据以产生一压缩数据,将该压缩数据以一钥值格式编排为一第一压缩钥值数据,且将该第一压缩钥值数据程序化至该非挥发式存储器。上述多笔钥值数据各自也是呈上述钥值格式。
一种实施方式中,上述钥值格式包括一记号字段。该第一压缩钥值数据的上述记号字段填一压缩卷标。上述多笔钥值数据各自的上述记号字段填一非压缩标签。
一种实施方式中,上述钥值格式更包括一前缀字段、一钥字段、以及一值字段。该第一压缩钥值数据的上述钥字段填一虚置钥。该第一压缩钥值数据的该值字段填有该压缩数据。
一种实施方式中,该控制器收集上述多笔钥值数据组成一特约格式数据,以压缩产生该压缩数据。该特约格式数据更包括一位置信息,指向该特约格式数据内各个钥值数据。
一种实施方式中,该控制器更维护一映射信息转换层,管理钥至该非挥发式存储器的映射。该第一压缩钥值数据存储于该非挥发式存储器的一第一物理地址。该控制器更新该映射信息转换层,令上述多笔钥值数据的多笔钥都是映射到该第一物理地址。
一种实施方式中,上述多笔钥包括一目标钥。响应以该目标钥为凭证的读取要求,该控制器经该映射信息转换层映射该目标钥至该非挥发式存储器的该第一物理地址,取得该第一压缩钥值数据,辨识出该第一压缩钥值数据中上述记号字段的该压缩卷标,继而对该第一压缩钥值数据所载的该压缩数据解压缩,获得该特约格式数据,以自该特约格式数据取得对应该目标钥的一目标值。
一种实施方式中,该控制器根据该特约格式数据的该位置信息,自该特约格式数据寻得所载的上述多笔钥值数据,取得上述多笔钥与该目标钥比对,根据匹配者寻得该目标值。
一种实施方式中,该映射信息转换层更为上述多笔钥各自记录一索引;该控制器根据该目标钥的上述索引查询该特约格式数据的该位置信息,据以自该特约格式数据取得对应该目标钥的一目标钥值数据,并自该目标钥值数据取得该目标值。
一种实施方式中,该映射信息转换层更为上述多笔钥各自记录一长度数值,为该压缩数据的长度。该控制器根据非零值的该长度数值判断该目标钥的读取涉及解压缩。
一种实施方式中,该第一压缩钥值数据的该值字段更标注一第一压缩算法。
一种实施方式中,根据该第一压缩钥值数据的该值字段标注的该第一压缩算法解压缩所得的一来源钥值数据,因应该第一压缩算法至一第二压缩算法的升级,与其他来源钥值数据组合、再以该第二压缩算法压缩、并依照该钥值格式编排为一第二压缩钥值数据,程序化至该非挥发式存储器的一第二物理地址,实现垃圾回收。该第二压缩钥值数据的上述值字段是标注该第二压缩算法。
以上存储器控制器对非挥发式存储器的操作也可以由其他结构实现。本案更可以前述概念实现非挥发式存储器的控制方法。
下文特举实施例,并配合所附图示,详细说明本发明内容。
附图说明
图1图解闪存一区块Blk的结构;
图2根据本案一种实施方式图解一钥值格式200;
图3图解钥(key)至闪存空间的映射(mapping);
图4图解本案以具备数据压缩功能的垃圾回收程序的一种实施方式;
图5为方块图,根据本案一种实施方式图解一数据存储系统500;
图6为流程图,根据本案一种实施方式图解垃圾回收压缩程序;
图7为流程图,根据本案一种实施方式图解如何响应用户以钥(Key)取值(Value);
图8根据本案一种实施方式图解包含压缩数据ValueC的一压缩钥值数据800;且
图9A以及图9B为流程图,图解一种垃圾回收技术,其中实现压缩算法的平滑升级。
附图标记
200~钥值格式;
202~前缀字段;
204~钥字段;
206~值字段;
208~记号字段;
400~特约格式数据;
402~压缩钥值数据;
500~数据存储系统;
502~主机;
504~数据存储装置;
506~钥值应用程序编程接口;
508~钥值装置驱动器;
510~固态硬盘(SSD)控制器;
512~闪存;
800~压缩钥值数据;
802~压缩版本;
804~值;
Area0~闪存空间;
BlkD~目的区块;
Blk、Blk0、Blk1以及Blk2~区块;
BlkS~来源区块;
Dummy_key~虚置钥;
key0、Key1~钥;
KV1、KV2、KV3以及KV4~钥值数据;
Mark1~记号;
MarkC~压缩记号;
Prefix1~前缀;
PrefixC~压缩前缀;
S602…S612、S702…S712、S902…S920~步骤;
S1…S4以及kvs~组成位置信息;
Value1~值;
ValueC~压缩数据。
具体实施方式
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照权利要求书界定之。
非挥发式存储器可以是闪存(Flash Memory)、磁阻式随机存取存储器(Magnetoresistive RAM)、铁电随机存取存储器(Ferroelectric RAM)、电阻式存储器(Resistive RAM,RRAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM,STT-RAM)…等,提供长时间数据保存的存储媒体。以下特别以闪存为例进行讨论。
现今数据存储装置常以闪存为存储媒体,实现存储卡(Memory Card)、通用串行总线闪存装置(USB Flash Device)、固态硬盘(SSD)…等产品。有一种应用是采多芯片封装、将闪存与其控制器包装在一起─称为嵌入式闪存模块(如eMMC)。
以闪存为存储媒体的数据存储装置可应用于多种电子装置中。所述电子装置包括智能型手机、穿戴装置、平板计算机、虚拟现实设备…等。电子装置的运算模块可视为一主机(Host),操作所使用的数据存储装置,以存取其中闪存。
以闪存为存储媒体的数据存储装置也可用于建构数据中心。例如,服务器可操作固态硬盘(SSD)阵列形成数据中心。服务器即可视为一主机,操作所链接的固态硬盘,以存取其中闪存。
闪存有其特殊的存储特性,以下叙述之。
闪存的物理空间是划分为多个区块(Blocks)配置使用。图1图解闪存一区块Blk的结构。一区块Blk包括多个页面(Pages),例如,页面0…页面255。各页面包括多个区段(Sectors),例如32个区段,每一区段可存储512B长度的用户数据。一种实施方式根据页面编号─由低编号至高编号─循序使用一区块的存储空间。或者,某些实施方式使用的是多信道技术,将不同信道存取的区块视为一个超级区块(Super Block),将不同信道之间的页面视为超级页面(Super Page)。多信道技术可根据超级页面编号─由低编号至高编号─循序使用一超级区块的存储空间。多信道架构可提升数据吞吐量。以下例子,都可利用在多信道技术中。
特别是,闪存的数据更新并非覆写至旧数据的存储空间。新版本的数据须写入空白处。旧空间的内容无效。由于闪存的存储空间需抹除(Erase,例如,以区块为单位)方能再次使用,备用空间逐渐消耗。备用空间不足时(如,闲置区块数量低于阀值),垃圾回收(Garbage Collection)需求产生。一区块留存的零星有效数据经垃圾回收集中到其他空间。徒留无效数据的区块释出,抹除后即可再使用。备用空间可由垃圾回收补足,确保闪存的正常使用。
本案提出一种技术,应用于钥值(Key-Value)架构的数据存储装置。在钥值架构中,一笔钥值(Key-Value)数据是由一特定的钥(Key)以及对应值(Responding Value)所组成。钥作为钥值数据KV的代表,钥的长度较佳为固定的,例如:32Bytes。每一特定的钥对应至一个对应值,对应值的长度较佳为非固定的。主机可输出写入命令以将钥以及对应值写入至采用钥值架构的数据存储装置,例如:KV SSD。之后主机可输出读取命令以自数据存储装置读取钥(Key)的对应值。
图2根据本案一种实施方式图解钥值架构中记录数据所采用的钥值格式200,包括前缀字段(Prefix)202、钥字段(Key)204、值字段(Value)206、以及记号字段(Mark)208。前缀字段202可为固定长度,例如16个字节(16Bytes)。前缀字段202的内容为钥值格式200的长度值,或是钥值格式200的格式代码等。钥字段204用以记录钥值数据KV中的钥,值字段206用以记录钥值数据KV中的对应值。记号字段208可为固定长度,例如1个字节(1Byte)。
图3图解钥(Key)至闪存空间的映射(Mapping)信息。钥值(Key-Value)架构的数据存储装置或主机中需建立闪存转换层(Flash Translation Layer,简称FTL),可用以记录每笔钥值数据KV与闪存的物理地址及相关信息的映射关连性(又称为映射信息),并将映射关连性记录至钥值映射表中。钥值映射表较佳以钥(Key)为索引,内容则记录映射信息,映射信息较佳包括:起始区块(Starting Blk)编号以及偏移量(Offset)。以钥值数据KV的密钥key0为例,映射信息指向闪存空间Area0。闪存空间Area0的起始区块为Blk1,偏移量为16个区段(sectors)或4096Bytes,且横跨区块Blk1以及Blk2。
钥值(Key-Value)架构的数据存储装置可启动垃圾回收(Garbage Collection)程序,将有效的数据复制至一个新的物理地址,以回收原数据所在的一个区块(或一个超级区块)的闪存空间。本案在垃圾回收程序中加入数据压缩(Data Compression)的功能,且数据压缩后的格式仍旧遵循前述钥值格式200。藉垃圾回收程序引入的压缩功能无需改变垃圾回收程序的启动逻辑,也无需改变钥值映射表的记录方式。数据压缩的方式不限,例如采用Snappy算法进行数据压缩。以下以图4举例说明本案数据压缩,更以图5图解本案硬件架构。
图5为数据存储系统500的方块图,数据存储系统500包括主机502以及数据存储装置504,数据存储装置504较佳为KV SSD。主机502上建立钥值应用程序编程接口(Key-ValueApplication Programming Interface)506与用户沟通,钥值应用程序编程接口506的应用程序命令传输至钥值装置驱动器(Key-Value Device Driver)508,钥值装置驱动器508再依据应用程序命令以驱动数据存储装置504。数据存储装置504主要包括SSD控制器510以及闪存512,SSD控制器510依据钥值装置驱动器508的主机命令来操作闪存512。当未收到主机命令时,数据存储装置504置于闲置状态,SSD控制器510可利用此闲置状态来启动本案具备数据压缩功能的垃圾回收程序,或以技术性说法,在背景模式下启动本案具备数据压缩功能的垃圾回收程序。
图4图解本案具备数据压缩功能的垃圾回收程序的一种实施方式,并参考图6本案具备数据压缩功能的垃圾回收程序的流程图。步骤S602:读取N笔钥值数据KV。例如,SSD控制器510从闪存512的来源区块中读出四笔(N=4)有效的钥值数据KV1~KV4,各自对应一组钥以及对应值,采用的是前述钥值格式200。例如,钥值数据KV1包括前缀Prefix1、钥Key1、值Value1以及记号Mark1。同样地,遵循钥值格式200,钥值数据KV2载有钥Key2以及值Value2,钥值数据KV3载有钥Key3以及值Value3,且钥值数据KV4载有钥Key4以及值Value4。其中,钥值数据KV1~KV4的钥值较佳为连续的,亦可为非连续的。
步骤S604:以N笔钥值数据组成一特约格式数据,其中,特约格式数据400包括N笔钥值数据以及额外信息。SSD控制器510在四笔钥值数据KV1、KV2、KV3以及KV4之后附加额外信息以组合成特约格式数据400,额外信息包括信息S1~S4以及信息kvs,都是固定长度。信息kvs标示特约格式数据400对应的钥值数据KV的数量,例如:4。信息S1~S4分别记录每笔钥值数据KV的起始地址,例如:信息S1标示钥值数据KV1起始地址,指向特约格式数据400起始地址。信息S2较佳为特约格式数据400起始地址起算的偏移量,偏移量的值可由下列方程式计算产生,其中,len(KV1)为计算标的KV1的长度值:
len(Prefix1)+len(Key1)+len(Value1)+len(Mark1)
S3较佳为特约格式数据400起始地址起算的偏移量,偏移量的值可由下列方程式计算产生:
len(KV1)+len(KV2)
S4较佳为特约格式数据400起始地址起算的偏移量,偏移量的值可由下列方程式计算产生:
len(KV1)+len(KV2)+len(KV3)
步骤S606:对特约格式数据400进行数据压缩以取得压缩数据ValueC。例如,SSD控制器510将特约格式数据400压缩为压缩数据ValueC。
步骤S608:依照钥值格式200编排压缩数据ValueC以组成压缩钥值数据。例如,SSD控制器510将压缩数据ValueC编排成符合钥值格式200的压缩钥值数据402。压缩钥值数据402包括压缩前缀PrefixC、虚置钥Dummy_key、压缩数据ValueC、以及压缩记号MarkC。压缩前缀PrefixC的长度为16Bytes,功能与前缀字段202的内容相同,可记录压缩钥值数据402的长度值,或是压缩钥值数据402的格式代码等。虚置钥Dummy_key的长度为32Bytes,其值可为默认值或任意值。压缩记号MarkC的长度为1byte,功能与记号字段208相同,此时则记录压缩卷标,与钥值数据KV1~KV4的记号Mark的所记录的非压缩卷标有所区别。
步骤S610:存储压缩钥值数据402至一个物理地址。例如,SSD控制器510将压缩钥值数据402程序化至闪存512的目的区块的一个物理地址。
步骤S612:将N笔钥值数据的映射信息更新成上述物理地址。例如,SSD控制器510将钥值数据KV1~KV4的映射信息皆记录成上述物理地址,都指向压缩钥值数据402的起始地址。
在一种实施方式中,映射信息更包括钥值数据的长度值,在此实施方式中,步骤S612除了将钥值数据KV1~KV4的映射信息更新成上述物理地址之外,更将钥值数据KV1~KV4的长度值更新成压缩钥值数据402的长度值。
由于映射信息已更新,SSD控制器510将以更新后的映射信息来响应主机的读取命令。图7为流程图,图解本案钥值架构的数据存储装置如何响应主机的数据读取命令的一种实施方式。
步骤S702:根据数据读取命令以及映射信息取得目标钥(Key)所对应的目标起始地址。例如,接到以钥Key4为目标钥的数据读取命令时(如,get(Key4)命令),SSD控制器510依据钥值映射表取得钥Key4对应的目标起始地址,此目标起始地址即为压缩钥值数据402的起始地址。
步骤S704:读取目标起始地址以获得目标钥值数据。例如,SSD控制器510从目标起始地址开始读取钥值格式200,包括前缀字段202、钥字段204、值字段206、以及记号字段208。以读取目标为压缩内容为例,步骤S704可以是开始读取压缩钥值数据402,包括读取压缩钥值数据402的压缩前缀PrefixC、虚置钥Dummy_key、压缩数据ValueC、以及压缩记号MarkC。
步骤S706:判断目标钥值数据是否需要解压缩,如果是则执行步骤S708,如果否则执行步骤S712。例如,SSD控制器510可依据记号字段208的值或压缩记号MarkC来判断目标钥值数据是否需要解压缩。
步骤S708:对目标钥值数据执行解压缩以获得特约格式数据。例如,SSD控制器510对压缩钥值数据402执行解压缩以取得特约格式数据400,特约格式数据400包括四段钥值数据KV1~KV4以及额外信息,额外信息包括信息S1~S4以及信息kvs。
步骤S710:自特约格式数据取出目标钥的目标对应值,并输出目标对应值。例如,SSD控制器510可依序读取特约格式数据中的钥值数据KV1~KV4,再依据钥Key4以读取钥值数据KV4的对应值Value4,最后,回传对应值Value4至主机。另外,SSD控制器510可先读取信息S1~S4,再依据信息S4取得钥值数据KV4的起始地址,再读取钥Key4的对应值Value4,最后,回传对应值Value4至主机。
步骤S712:自钥值数据KV取出目标钥的目标对应值,并输出目标对应值。例如,SSD控制器510读取钥值格式200中的对应值Value4,最后,回传对应值Value4至主机。
一种实施方式更令钥值映射表以钥值为索引(Key_Index)来管理映射信息。例如,SSD控制器510将钥Key4视为索引Key_Index为4,直接查询特约格式数据400中信息S4内容,寻得特约格式数据400所载的第四段钥值数据KV4,成功以钥Key4取得对应值Value4。
一种实施方式更令钥值映射表除了记录映射信息之外,更记录压缩数据ValueC的长度值ValueC_length。例如,16KB的特约格式数据400压缩为8KB的压缩数据ValueC。钥值映射表记录四笔钥Key1~Key4的长度值ValueC_length都是8KB。接到读取钥Key4的读取要求时(如,get(Key4)命令),钥值映射表记录目标钥Key4的目标对应值的长度值ValueC_length为8KB,长度值ValueC_length为非零,所以,SSD控制器510无须判读记号MarkC即知道要对特约格式数据400进行解压缩,以取得目标钥Key4的对应值Value4。此时,记号MarkC的压缩标志可以单纯只应付非预期掉电的复电程序(SPOR),用于映射表重建。
一种实施方式更将压缩算法的版本信息附加在压缩数据ValueC前/后。图8根据本案一种实施方式图解包含压缩数据ValueC的一压缩钥值数据800。遵循钥值格式200,压缩版本802以及压缩数据ValueC组合成值(Value)804。之后压缩算法若升级,垃圾回收的动作包括:自压缩版本802辨识出乃旧版本压缩算法;以旧版本算法解压缩,取得待垃圾回收的来源钥值数据,与其他来源钥值数据组合、再以新版本的压缩算法压缩、并依照该钥值格式200编排为另一压缩钥值数据,程序化至该闪存的闲置空间(垃圾回收目的地),实现垃圾回收。写入目的地的压缩钥值数据的压缩版本字段(802)会注明为新版本压缩算法。如此一来,无须因为压缩算法升级而额外解压缩、压缩数据统一压缩方式。背景模式的垃圾回收即可平滑统一压缩算法版本。随着使用年限,背景发生的垃圾回收会将所有的压缩内容统一为新版本的压缩算法。
一种实施方式中,压缩版本802可更细分包括信息compress_type以及compress_version。信息compress_type为算法类别(例如,Snappy或其他)。信息compress_version显示是该算法类别的第几代演进。
图9A以及图9B为流程图,图解一种垃圾回收技术,其中实现压缩算法的平滑升级。
参阅图9A,步骤S902自来源区块取得一段钥值数据。步骤S904判断该段钥值数据是否为压缩内容。若为压缩内容,流程进行步骤S906,根据所注明算法版本解压缩,得多段钥值数据。若非压缩内容,则略去解压缩步骤。步骤S908辨识出有效的钥值数据。步骤S910判断是否收集到N笔有效钥值数据。若否,继续自来源区块取钥值数据。若是,流程进入图9B,步骤S912将收集到的N笔钥值数据以特约格式(如400)排列。步骤S914以更新的压缩算法进行压缩,得压缩数据。步骤S916依照钥值格式200将压缩数据编排为压缩钥值数据800,其中压缩版本802注明为新的压缩算法。步骤S918将符合压缩钥值数据800程序化。步骤S920更新闪存转换层(FTL)。
以上控制器对闪存的操作设计也可以由其他结构实现。凡是根据前述概念操作闪存实现以钥取值技术、并在垃圾回收时执行压缩、甚至能平滑升级压缩算法者,都属于本案欲保护范围。本案更可以前述概念实现非挥发式存储器的控制方法。
虽然本发明已以较佳实施例公开如上,然其并非用以限定本发明,任何本领域的技术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视后附的权利要求书所界定者为准。
Claims (18)
1.一种数据存储装置,其特征在于,包括:
一非挥发式存储器;以及
一控制器,耦接该非挥发式存储器,并且,对该非挥发式存储器进行垃圾回收而释出存储空间时,收集并压缩有效的多笔钥值数据以产生一压缩数据,将该压缩数据以一钥值格式编排为一第一压缩钥值数据,且将该第一压缩钥值数据程序化至该非挥发式存储器,
其中:
上述多笔钥值数据各自也是呈上述钥值格式;
上述钥值格式包括一记号字段;
该第一压缩钥值数据的上述记号字段填一压缩卷标;
上述多笔钥值数据各自的上述记号字段填一非压缩标签;
上述钥值格式更包括一前缀字段、一钥字段、以及一值字段;
该第一压缩钥值数据的上述钥字段填一虚置钥;且
该第一压缩钥值数据的该值字段填有该压缩数据。
2.如权利要求1所述的数据存储装置,其特征在于:
该控制器收集上述多笔钥值数据组成一特约格式数据,以压缩产生该压缩数据;且
该特约格式数据更包括一位置信息,指向该特约格式数据内各个钥值数据。
3.如权利要求2所述的数据存储装置,其特征在于:
该控制器更维护一映射信息转换层,管理钥至该非挥发式存储器的映射;
该第一压缩钥值数据存储于该非挥发式存储器的一第一物理地址;且
该控制器更新该映射信息转换层,令上述多笔钥值数据的多笔钥都是映射到该第一物理地址。
4.如权利要求3所述的数据存储装置,其特征在于:
上述多笔钥包括一目标钥;
响应以该目标钥为凭证的读取要求,该控制器经该映射信息转换层映射该目标钥至该非挥发式存储器的该第一物理地址,取得该第一压缩钥值数据,辨识出该第一压缩钥值数据中上述记号字段的该压缩卷标,继而对该第一压缩钥值数据所载的该压缩数据解压缩,获得该特约格式数据,以自该特约格式数据取得对应该目标钥的一目标值。
5.如权利要求4所述的数据存储装置,其特征在于:
该控制器根据该特约格式数据的该位置信息,自该特约格式数据寻得所载的上述多笔钥值数据,取得上述多笔钥与该目标钥比对,根据匹配者寻得该目标值。
6.如权利要求4所述的数据存储装置,其特征在于:
该映射信息转换层更为上述多笔钥各自记录一索引;
该控制器根据该目标钥的上述索引查询该特约格式数据的该位置信息,据以自该特约格式数据取得对应该目标钥的一目标钥值数据,并自该目标钥值数据取得该目标值。
7.如权利要求4所述的数据存储装置,其特征在于:
该映射信息转换层更为上述多笔钥各自记录一长度数值,为该压缩数据的长度;且
该控制器根据非零值的该长度数值判断该目标钥的读取涉及解压缩。
8.如权利要求1所述的数据存储装置,其特征在于:
该第一压缩钥值数据的该值字段更标注一第一压缩算法。
9.如权利要求8所述的数据存储装置,其特征在于:
根据该第一压缩钥值数据的该值字段标注的该第一压缩算法解压缩所得的一来源钥值数据,因应该第一压缩算法至一第二压缩算法的升级,与其他来源钥值数据组合、再以该第二压缩算法压缩、并依照该钥值格式编排为一第二压缩钥值数据,程序化至该非挥发式存储器的一第二物理地址,实现垃圾回收;且
该第二压缩钥值数据的上述值字段是标注该第二压缩算法。
10.一种非挥发式存储器控制方法,其特征在于,包括:
对一非挥发式存储器进行垃圾回收而释出存储空间时,收集并压缩有效的多笔钥值数据以产生一压缩数据,将该压缩数据以一钥值格式编排为一第一压缩钥值数据,且将该第一压缩钥值数据程序化至该非挥发式存储器;且
令上述多笔钥值数据各自也是呈上述钥值格式;
其中:
上述钥值格式包括一记号字段;
该第一压缩钥值数据的上述记号字段填一压缩卷标;
上述多笔钥值数据各自的上述记号字段填一非压缩标签;
上述钥值格式更包括一前缀字段、一钥字段、以及一值字段;
该第一压缩钥值数据的上述钥字段填一虚置钥;且
该第一压缩钥值数据的该值字段填有该压缩数据。
11.如权利要求10所述的非挥发式存储器控制方法,其特征在于,更包括:
收集上述多笔钥值数据组成一特约格式数据,以压缩产生该压缩数据,
其中,该特约格式数据更包括一位置信息,指向该特约格式数据内各个钥值数据。
12.如权利要求11所述的非挥发式存储器控制方法,其特征在于,更包括:
维护一映射信息转换层,管理钥至该非挥发式存储器的映射;且
相应该第一压缩钥值数据存储于该非挥发式存储器的一第一物理地址,更新该映射信息转换层,令上述多笔钥值数据的多笔钥都是映射到该第一物理地址。
13.如权利要求12所述的非挥发式存储器控制方法,其特征在于,上述多笔钥包括一目标钥,且:
响应以该目标钥为凭证的读取要求,经该映射信息转换层映射该目标钥至该非挥发式存储器的该第一物理地址,取得该第一压缩钥值数据,辨识出该第一压缩钥值数据中上述记号字段的该压缩卷标,继而对该第一压缩钥值数据所载的该压缩数据解压缩,获得该特约格式数据,以自该特约格式数据取得对应该目标钥的一目标值。
14.如权利要求13所述的非挥发式存储器控制方法,其特征在于,更包括:
根据该特约格式数据的该位置信息,自该特约格式数据寻得所载的上述多笔钥值数据,取得上述多笔钥与该目标钥比对,根据匹配者寻得该目标值。
15.如权利要求13所述的非挥发式存储器控制方法,其特征在于,更包括:
以该映射信息转换层为上述多笔钥各自记录一索引;且
根据该目标钥的上述索引查询该特约格式数据的该位置信息,据以自该特约格式数据取得对应该目标钥的一目标钥值数据,并自该目标钥值数据取得该目标值。
16.如权利要求13所述的非挥发式存储器控制方法,其特征在于,更包括:
以该映射信息转换层为上述多笔钥各自记录一长度数值,标示该压缩数据的长度;且
根据非零值的该长度数值判断该目标钥的读取涉及解压缩。
17.如权利要求10所述的非挥发式存储器控制方法,其特征在于:
该第一压缩钥值数据的该值字段更标注一第一压缩算法。
18.如权利要求17所述的非挥发式存储器控制方法,其特征在于:
根据该第一压缩钥值数据的该值字段标注的该第一压缩算法解压缩所得的一来源钥值数据,因应该第一压缩算法至一第二压缩算法的升级,与其他来源钥值数据组合、再以该第二压缩算法压缩、并依照该钥值格式编排为一第二压缩钥值数据,程序化至该非挥发式存储器的一第二物理地址,实现垃圾回收;且
该第二压缩钥值数据的上述值字段是标注该第二压缩算法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010022952.9A CN113094292B (zh) | 2020-01-09 | 2020-01-09 | 数据存储装置以及非挥发式存储器控制方法 |
US17/133,910 US11520698B2 (en) | 2020-01-09 | 2020-12-24 | Data storage device in a key-value storage architecture with data compression, and non-volatile memory control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010022952.9A CN113094292B (zh) | 2020-01-09 | 2020-01-09 | 数据存储装置以及非挥发式存储器控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113094292A CN113094292A (zh) | 2021-07-09 |
CN113094292B true CN113094292B (zh) | 2022-12-02 |
Family
ID=76664081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010022952.9A Active CN113094292B (zh) | 2020-01-09 | 2020-01-09 | 数据存储装置以及非挥发式存储器控制方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11520698B2 (zh) |
CN (1) | CN113094292B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12039798B2 (en) * | 2021-11-01 | 2024-07-16 | Salesforce, Inc. | Processing forms using artificial intelligence models |
CN114415966B (zh) * | 2022-01-25 | 2022-08-12 | 武汉麓谷科技有限公司 | 一种kv ssd存储引擎的构建方法 |
CN114416752B (zh) * | 2022-03-31 | 2022-07-15 | 南京得瑞芯存科技有限公司 | Kv ssd的数据处理方法及装置 |
US11853564B1 (en) * | 2022-06-17 | 2023-12-26 | Western Digital Technologies, Inc. | Key value data storage device with improved utilization for short key value pairs |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202138A (zh) * | 2015-06-01 | 2016-12-07 | 三星电子株式会社 | 用于自主空间压缩的存储设备和方法 |
CN106649636A (zh) * | 2016-12-08 | 2017-05-10 | 北京锐安科技有限公司 | 一种基于移动终端的人员流动性分析方法及装置 |
CN109697025A (zh) * | 2017-10-20 | 2019-04-30 | 株式会社日立制作所 | 存储装置、数据管理方法和数据管理程序的存储介质 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1492260A (en) * | 1974-10-29 | 1977-11-16 | Int Computers Ltd | Data processing systems |
US8169825B1 (en) | 2008-09-02 | 2012-05-01 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells subjected to long retention periods |
WO2012029256A1 (en) | 2010-08-31 | 2012-03-08 | Nec Corporation | Storage system |
CN101956606A (zh) | 2010-09-05 | 2011-01-26 | 张显荣 | 辐流式涡轮发动机 |
US8527544B1 (en) * | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US9870232B2 (en) * | 2012-05-29 | 2018-01-16 | Fujitsu Limited | Extensible method and system for storage metadata |
CN103516369B (zh) * | 2013-06-20 | 2016-12-28 | 易乐天 | 一种自适应数据压缩和解压缩的方法和系统及存储装置 |
CN104008134B (zh) * | 2014-05-06 | 2017-02-15 | 武汉邮电科学研究院 | 基于HBase的高效存储方法及系统 |
US9772939B2 (en) | 2015-01-05 | 2017-09-26 | International Business Machines Corporation | Heat-based key-value slot organization for flash-optimized data placement in multi-tiered storage systems |
US10360233B2 (en) * | 2015-11-19 | 2019-07-23 | Oracle International Corporation | In-memory key-value store for a multi-model database |
US11030156B2 (en) * | 2015-12-28 | 2021-06-08 | Sandisk Technologies Llc | Key-value store with partial data access |
US10496283B2 (en) * | 2016-01-22 | 2019-12-03 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
KR20180010442A (ko) * | 2016-07-21 | 2018-01-31 | 주식회사 시공미디어 | 온라인 저작 서비스가 수행되는 사용자 단말 및 이의 문서 저장 방법 |
US10521399B1 (en) | 2016-08-07 | 2019-12-31 | .Infinidat Ltd | Compression control based on compression ratio estimation |
CN106649530B (zh) * | 2016-10-21 | 2020-12-15 | 北京卡拉卡尔科技股份有限公司 | 云详单查询管理系统及方法 |
TWI630540B (zh) | 2017-07-13 | 2018-07-21 | 慧榮科技股份有限公司 | 資料儲存裝置及非揮發式記憶體操作方法 |
US10768993B2 (en) | 2017-09-29 | 2020-09-08 | Nicira, Inc. | Adaptive, performance-oriented, and compression-assisted encryption scheme |
JP6550448B2 (ja) * | 2017-12-18 | 2019-07-24 | ヤフー株式会社 | データ管理装置、データ管理方法、およびプログラム |
US10783073B2 (en) * | 2018-02-23 | 2020-09-22 | International Business Machines Corporation | Chronologically ordered out-of-place update key-value storage system |
CN108446363B (zh) * | 2018-03-13 | 2021-05-25 | 北京奇安信科技有限公司 | 一种kv引擎的数据处理方法及装置 |
CN108667725B (zh) * | 2018-04-25 | 2021-06-11 | 哈尔滨电气股份有限公司 | 一种基于多种接入及边缘计算的工业软网关以及实现方法 |
US10445022B1 (en) * | 2018-04-26 | 2019-10-15 | Alibaba Group Holding Limited | Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices |
US10732884B1 (en) | 2019-03-28 | 2020-08-04 | International Business Machines Corporation | Implementing redundant array of independent disks (RAID) arrays having compressed data stored therein |
-
2020
- 2020-01-09 CN CN202010022952.9A patent/CN113094292B/zh active Active
- 2020-12-24 US US17/133,910 patent/US11520698B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202138A (zh) * | 2015-06-01 | 2016-12-07 | 三星电子株式会社 | 用于自主空间压缩的存储设备和方法 |
CN106649636A (zh) * | 2016-12-08 | 2017-05-10 | 北京锐安科技有限公司 | 一种基于移动终端的人员流动性分析方法及装置 |
CN109697025A (zh) * | 2017-10-20 | 2019-04-30 | 株式会社日立制作所 | 存储装置、数据管理方法和数据管理程序的存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11520698B2 (en) | 2022-12-06 |
CN113094292A (zh) | 2021-07-09 |
US20210216448A1 (en) | 2021-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113094292B (zh) | 数据存储装置以及非挥发式存储器控制方法 | |
US10055171B2 (en) | Compression and formatting of data for data storage systems | |
US8799614B2 (en) | Storing compressed data | |
US7529905B2 (en) | Method of storing transformed units of data in a memory system having fixed sized storage blocks | |
TWI829251B (zh) | 管理記憶裝置之方法與相關的記憶裝置 | |
TWI421684B (zh) | 可再程式化非揮發性記憶體系統以及操作ㄧ非揮發性記憶體系統之方法 | |
CN101233481B (zh) | 通过逻辑地址空间且以直接数据文件为基础操作的介接系统 | |
US7814262B2 (en) | Memory system storing transformed units of data in fixed sized storage blocks | |
US8812816B2 (en) | Garbage collection schemes for index block | |
CN1329841C (zh) | 建立和恢复图像文件的方法和系统 | |
US8381018B2 (en) | Method for data recovery for flash devices | |
US20130114339A1 (en) | Storage apparatus and data control method | |
US20140101369A1 (en) | Methods, devices and systems for physical-to-logical mapping in solid state drives | |
CN101916228A (zh) | 带有数据压缩功能的闪存转换层及实现方法 | |
JPH11203191A (ja) | 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体 | |
WO2014152043A1 (en) | Multiple stream compression and formatting of data for data storage systems | |
CN111125033B (zh) | 一种基于全闪存阵列的空间回收方法及系统 | |
KR101348255B1 (ko) | 고정된 크기의 저장 블록을 가진 메모리 시스템에서데이터의 변환된 유닛의 저장 | |
CN111966281B (zh) | 数据储存装置与数据处理方法 | |
JP2009503740A (ja) | データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け | |
US20210173561A1 (en) | Self-formatting data storage device | |
JP2005322209A (ja) | シリコン記憶媒体制御方法およびシリコン記憶媒体 | |
TWI758944B (zh) | 資料處理方法及對應之資料儲存裝置 | |
CN113448492B (zh) | 数据存储系统以及非挥发式存储器控制方法 | |
US20050251632A1 (en) | Silicon storage media, controller and access method thereof |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |