CN114546245A - 利用zns标准实现透明压缩的方法及其设备 - Google Patents

利用zns标准实现透明压缩的方法及其设备 Download PDF

Info

Publication number
CN114546245A
CN114546245A CN202011297534.7A CN202011297534A CN114546245A CN 114546245 A CN114546245 A CN 114546245A CN 202011297534 A CN202011297534 A CN 202011297534A CN 114546245 A CN114546245 A CN 114546245A
Authority
CN
China
Prior art keywords
logical address
data
command
size
index
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.)
Pending
Application number
CN202011297534.7A
Other languages
English (en)
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.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology 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 Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN202011297534.7A priority Critical patent/CN114546245A/zh
Publication of CN114546245A publication Critical patent/CN114546245A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

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

Abstract

提供了利用ZNS标准实现透明压缩的方法及其设备。提供的处理IO命令的方法,包括:获取用于写入数据的第一命令;为所述第一命令要写入的数据分配第一逻辑地址索引与第一大小,所述第一逻辑地址索引与所述第一大小定义了第一逻辑地址空间,所述第一大小是所述第一逻辑地址空间的大小,所述第一大小能容纳未经压缩的所述第一命令要写入的数据;压缩所述第一命令要写入的数据,得到压缩后的数据;在NVM中存储所述压缩后的数据;以及同所述第一逻辑地址索引相关联地记录NVM中存储所述压缩后的数据的地址。

Description

利用ZNS标准实现透明压缩的方法及其设备
技术领域
本申请涉及存储设备,尤其涉及利用ZNS(ZonedNameSpace,存储区域命名空间)提供透明压缩的方法及其存储设备。
背景技术
图1展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small ComputerSystem Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)、XPoint存储器等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe(NVMExpress)、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有指定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。FTL由例如运行在控制部件的CPU中的软件、固件和/或作为ASIC的部分的硬件实现。
图2是FTL的示意图。
存储设备向主机提供逻辑地址空间。主机使用逻辑地址访问存储设备。FTL将主机提供的逻辑地址映射为物理地址。
逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。逻辑地址可寻址的最小单元,被称为例如逻辑块(LogicalBlock)或扇区(sector)(为了简便,如非特别指出,下文中逻辑块与扇区的使用可互换),将寻址了逻辑块的逻辑地址也称为逻辑块地址(LBA,LogicalBlockAddress)。逻辑块具有指定的大小,例如,512B(字节)、2KB、4KB或16KB等。物理地址是用于访问存储设备的NVM的物理存储单元(例如,物理页)的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是存储设备中的重要元数据。通常FTL表的条目记录了存储设备中以逻辑块为单位的地址映射关系。可选地,FTL表的每个条目代表多个逻辑块,以在FTL表的尺寸与存储空间的管理粒度之前权衡,例如,8个逻辑地址连续的逻辑块。
FTL表包括例如多个FTL条目,每个FTL条目对应一个或多个连续的逻辑块,FTL条目的值记录了为该一个或多个连续的逻辑块提供的存储空间的地址(为了清楚,将该存储空间称为NVM数据帧,将该存储空间的地址称为NVM数据帧地址)。
FTL表被存储在例如DRAM 110(也参看图1)或SRAM中。根据访问的逻辑地址,获得对应的FTL条目的索引,并从FTL条目中得到为逻辑块提供存储空间的NVM数据帧。
NVM数据帧地址,是例如访问NVM芯片的物理页的物理地址、访问NVM芯片的多个组合的物理页的物理地址(组合的物理页是例如,位于相同或不同逻辑单元(LUN)的多个平面(Plane)上的物理页)、访问NVM芯片的物理页内的部分数据单元的物理地址。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。
诸如NVMe协议(在https://nvmexpress.org/wp-content/uploads/NVM-Express- 1_4-2019.06.10-Ratified.pdf可获得)定义了主机与存储设备之间交换数据的方式。NVMe组织还在讨论Zone(存储区域)与ZNS(ZonedNameSpace,存储区域命名空间)(在https:// nvmexpress.org/wp-content/uploads/NVM-Express-1.4-Ratified-TPs-1.zip可获得)。Zone是作为单一单元被管理的逻辑块地址(LBA,LogicalBlock Address)的连续范围,ZNS是包括多个Zone的命名空间。一些Zone需要按逻辑地址的顺序被顺序写入。主机确保向Zone提供的IO命令满足要求。
图3A是Zone的示意图。
存储设备提供例如1000GB大小的逻辑地址空间(LBA范围)。逻辑地址空间包括多个(n+1个)Zone,每个Zone占据同其编号对应的逻辑地址空间。主机可将Zone视作存储对象,根据Zone编号与Zone内偏移值得以访问存储设备的指定的逻辑地址空间。Zone占据的逻辑地址空间的大小称为Zone Size(Zone大小)。图3A的例子中,Zone大小是例如512MB。
继续参看图3A,Zone 0包括存储空间(或称逻辑地址范围)(310、320与340)。存储空间310是Zone 0已经被写入的存储空间,存储空间320尚未被写入数据,并且可被写入数据,而由于存储空间对齐等原因,主机可能不会向存储空间340写入数据。将Zone可被写入数据的最大逻辑块数量称为Zone容量(ZoneCapacity),例如由存储空间310与存储空间320所指示的大小。从而Zone容量不大于Zone大小。WP(WritePointer,写指针)指示Zone的存储空间320的起始位置。
向Zone写入数据时,总是写入从WP所指示的位置开始、地址连续的指定大小存储空间。
图3B-图3D展示了向Zone写入数据的示意图。
主机使用两种命令(写命令与追加(Append)命令)向Zone写入数据,图3B展示了写命令,图3C展示了追加命令。
写命令指示向Zone写入数据,写命令指示了写入数据的起始地址,该地址应当同当前WP一致,数据被写入Zone的由当前WP所指示位置开始的连续逻辑地址空间。每个Zone被限制仅同时处理一个写命令,在一个写命令被处理完成后,才能向Zone发出下一个写命令。参看图3B,方格代表Zone的逻辑地址空间,向右的方向是正方向,最左端具有Zone的起始逻辑地址(记为Zone_sLBA),W0、W1与W2各自代表向Zone发出的写命令。写命令W0向Zone写入4KB数据。收到写命令W0时,WP指示Zone的逻辑地址Zone_sLBA,在写命令W0被处理完成后,Zone的从逻辑地址0开始的4KB逻辑地址范围被写入数据,而WP更新为指向逻辑地址Zone_sLBA+4KB(WP0)。接下来,收到写命令W1(待写入数据大小为8KB),在写命令W1被处理完成后,Zone的从逻辑地址Zone_sLBA+4KB开始的8KB逻辑地址范围被写入数据,而WP更新为指向逻辑地址Zone_sLBA+12KB(WP1)。接下来,收到写命令W2(待写入数据大小为16KB),在写命令W2被处理完成后,Zone的从逻辑地址Zone_sLBA+12KB开始的16KB逻辑地址范围被写入数据,而WP更新为指向逻辑地址Zone_sLBA+28KB(WP2)。
追加命令指示向Zone的由当前WP所指示位置开始的连续逻辑地址空间写入数据。每个Zone同时处理的追加命令的数量不被限制。允许主机同时向Zone发出多个追加命令,或者在之前的追加命令未处理完成前,再向Zone发出追加命令。参看图3C,3个追加命令(AP0、AP1与AP2)被并发提供给Zone。作为举例,WP所指示的初始位置为Zone的起始逻辑地址(记为Zone_sLBA)。使用追加命令时,主机不关心追加命令对应数据被写入的逻辑地址,从而追加命令中不指示数据被写入的逻辑地址的具体值,而由存储设备根据处理追加命令时WP的位置来确定服务追加命令的逻辑地址,并在追加命令被处理完成或提交后将确定的逻辑地址返回给主机,以使主机知晓追加命令对应数据在Zone内的存储位置,并且主机可使用该存储位置来取回所写入的数据。参看图3C,存储设备收到3个追加命令(AP0、AP1与AP2),存储设备决定这3个追加命令的处理顺序。作为举例,存储设备决定按AP0、AP1与AP2的顺序处理这3个追加命令。存储设备内部如何处理写命令与追加命令不是本申请所关心的内容。作为举例,存储设备将追加命令AP0对应的数据写入逻辑地址Zone_sLBA开始的4KB连续逻辑地址空间,将追加命令AP1对应的数据写入逻辑地址Zone_sLBA+4KB开始的8KB连续逻辑地址空间,以及将追加命令AP2对应的数据写入逻辑地址Zone_sLBA+12KB开始的16KB连续逻辑地址空间。
无论对于写命令还是追加命令,在将其处理完成或提交后,存储设备将承载写命令或追加命令对应数据的逻辑地址空间的起始地址(记为sLBA)返回给主机。参看图3D,记录了三个命令(写命令或追加命令)处理完成后,主机获得的3个命令对应数据在Zone中的分布。作为举例,Zone的扇区大小为512B,Zone的起始地址为Zone_sLBA。写命令W0(或者追加命令AP0)占据的逻辑地址空间起始地址为Zone_sLBA+0(单位为扇区数),长度为8(单位为扇区数);写命令W1(或者追加命令AP1)占据的逻辑地址空间起始地址为Zone_sLBA+8,长度为16;写命令W2(或者追加命令AP2)占据的逻辑地址空间起始地址为Zone_sLBA+24,长度为32。
可选地,主机记录各写命令/追加命令对应数据的逻辑地址空间的起始地址(记为sLBA)。依然可选地,主机还记录各写命令/追加命令对应数据的长度(或存储数据的逻辑地址空间的长度)。还将写命令/追加命令对应的数据整体称为对象,其属性包括存储对象的逻辑地址空间的起始地址与长度,从而根据对象的属性得以获取对象。
为了从Zone读取数据,主机向存储设备发出读命令,读命令中指示起始地址与长度。存储设备从起始地址开始读出该指定长度的数据提供给主机,作为对读命令的响应。
发明内容
数据能够被压缩。通过压缩数据,存储设备的数据存储密度得以增加。因而希望提供具有数据压缩能力的存储设备。但压缩改变了数据的尺寸,进而为数据的寻址与管理引入了额外的复杂度。希望消除或最小化由压缩引入的复杂度对主机的影响,使主机能够用既有的方式访问存储设备,而存储设备提供对数据的压缩和/或解压缩,并且存储设备对数据的压缩和/或解压缩对主机透明。从而主机无需感知到数据在存储设备内部被压缩和/或解压缩,也无需修改协议,而是用既有的写命令、追加命令和/或读命令访问存储设备。
Zone的引入为实现这一发明目的提供了进一步的支持。为了访问Zone,主机维护写命令/追加命令的对应数据(对象)的起始地址(sLBA)与(未经压缩的)长度,并在读命令中使用起始地址(sLBA)与(未经压缩的)长度从存储设备读取对象。根据本申请实施例的存储设备,不改变向主机提供的写命令、追加命令和/或读命令的语义,而在内部对对象进行压缩/解压缩,并且在NVM上存储压缩后的数据,提高了数据存储密度,又不向主机引入额外的用于访问压缩数据的复杂度。
根据本申请的第一方面,提供了根据本申请第一方面的第一处理IO命令的方法,包括:获取用于写入数据的第一命令;为所述第一命令要写入的数据分配第一逻辑地址索引与第一大小,所述第一逻辑地址索引与所述第一大小定义了第一逻辑地址空间,所述第一大小是所述第一逻辑地址空间的大小,所述第一大小能容纳未经压缩的所述第一命令要写入的数据;压缩所述第一命令要写入的数据,得到压缩后的数据;在NVM中存储所述压缩后的数据;以及同所述第一逻辑地址索引相关联地记录NVM中存储所述压缩后的数据的地址。
根据本申请第一方面的第一处理IO命令的方法,提供了根据本申请第一方面的第二处理IO命令的方法,所述方法还包括:发送所述第一命令的处理结果,在所述第一命令的处理结果中指示所述第一逻辑地址索引。
根据本申请第一方面的第一或第二处理IO命令的方法,提供了根据本申请第三方面的第二处理IO命令的方法,其中根据写指针生成所述第一逻辑地址索引;所述方法还包括:更新所述写指针。
根据本申请第一方面的第三处理IO命令的方法,提供了根据本申请第一方面的第四处理IO命令的方法,其中将所述写指针作为所述第一逻辑地址索引,根据所述压缩后的数据大小更新所述写指针;或者将根据所述写指针生成的键作为所述第一逻辑地址索引,根据所述压缩后的数据大小更新所述写指针。
根据本申请第一方面的第三或第四处理IO命令的方法,提供了根据本申请第一方面的第五处理IO命令的方法,其中若所述第一命令携带了用于第一逻辑地址空间的第一逻辑地址,且第一逻辑地址同所述写指针相同,将所述第一逻辑地址作为第一逻辑地址索引;若所述第一逻辑地址同所述写指针不同,发送所述第一命令的处理结果,在所述第一命令的处理结果中指示所述第一命令存在错误。
根据本申请第一方面的第一至第六处理IO命令的方法之一,提供了根据本申请第一方面的第六处理IO命令的方法,其中所述压缩后的数据包括一个或多个分段,每个分段的大小能被容纳于一个扇区,以及每个分段能被独立地解压缩。
根据本申请第一方面的第一至第七处理IO命令的方法之一,提供了根据本申请第一方面的第六处理IO命令的方法,其中逻辑地址空间的逻辑地址索引与逻辑地址空间的大小是定义逻辑地址空间的不同维度。
根据本申请第一方面的第三至第七处理IO命令的方法之一,提供了根据本申请第一方面的第八处理IO命令的方法,还包括:获取用于写入数据的第二命令;根据更新后的所述写指针为所述第二命令要写入的数据分配第二逻辑地址索引与第二大小,所述第二逻辑地址索引与所述第二大小定义了第二逻辑地址空间,所述第二大小是所述第二逻辑地址空间的大小,所述第二大小能容纳未经压缩的所述第二命令要写入的数据;其中根据更新后的所述写指针生成所述第二逻辑地址索引;其中即使所述第二逻辑地址索引同所述第一逻辑索引的差小于所述第一大小,所述第二逻辑地址空间同所述第一逻辑地址空间也不重叠。
根据本申请第一方面的第八处理IO命令的方法,提供了根据本申请第一方面的第九处理IO命令的方法,还包括:压缩所述第二命令要写入的数据,得到第二压缩后的数据;在NVM中存储所述第二压缩后的数据;同所述第二逻辑地址索引相关联地记录NVM中存储所述第二压缩后的数据的地址;以及根据所述第二压缩后的数据大小,更新所述写指针。
根据本申请第一方面的第一至第九处理IO命令的方法之一,提供了根据本申请第一方面的第十处理IO命令的方法,其中未关联NVM地址的逻辑地址索引,是无效的逻辑地址索引;以及关联到NVM地址的逻辑索引,是有效的逻辑地址索引。
根据本申请第一方面的第十处理IO命令的方法,提供了根据本申请第一方面的第十一处理IO命令的方法,其中累积存储区域的所有有效逻辑地址索引所定义的所有逻辑地址空间的大小的和,得到所述存储区域的存储区域容量。
根据本申请第一方面的第十一处理IO命令的方法,提供了根据本申请第一方面的第十二处理IO命令的方法,其中将所述存储区域的所有可用逻辑地址索引的数量作为所述存储区域的存储区域尺寸。
根据本申请第一方面的第十至第十二处理IO命令的方法之一,提供了根据本申请第一方面的第十三处理IO命令的方法,还包括:获取用于读出数据的第三命令,其中第三命令指示了第三逻辑地址与第三长度;若第三地址是有效的逻辑地址索引,根据第三地址从NVM读出第三压缩后的数据;将所述第三压缩后的数据解压缩得到第三解压缩的数据;将第三数据的从头开始的等于第三长度的部分作为所述第三命令的处理结果。
根据本申请第一方面的第十三处理IO命令的方法,提供了根据本申请第一方面的第十四处理IO命令的方法,还包括:若第三地址不是有效的逻辑地址索引,发送所述第三命令的处理结果,在所述第三命令的处理结果中指示所述第三命令存在错误。
根据本申请第一方面的第十三或第十四处理IO命令的方法,提供了根据本申请第一方面的第十五处理IO命令的方法,还包括:若第三解压缩的数据的大小小于所述第三长度,还根据第三压缩后的数据在NVM的地址读出NVM上在第三压缩后的数据之后的第四压缩后的数据;将所述第四压缩后的数据解压缩得到第四解压缩的数据;重复上述过程,直到读出的所有解压缩的数据的大小的和不小于所述第三长度;将读出的所有解压缩的数据作为整体的从头开始的等于第三长度的部分作为所述第三命令的处理结果。
根据本申请第一方面的第十至第十五处理IO命令的方法之一,提供了根据本申请第一方面的第十六处理IO命令的方法,还包括:获取用于读出数据的第四命令,其中第四命令指示了多个逻辑地址与同所述多个逻辑地址的每个对应的多个长度;若所述多个逻辑地址的第一个逻辑地址是有效的逻辑地址索引,根据第一个逻辑地址从NVM读出压缩后的数据,并解压缩得到同所述第一个逻辑地址对应的第四逻辑地址空间的完整数据;根据所述第四命令指示的所述多个逻辑地址与同所述多个逻辑地址的每个对应的所述多个长度,从所述第一逻辑地址空间的完整数据中获取多段数据,作为所述第四命令的处理结果。
根据本申请的第二方面,提供了根据本申请第二方面的第一处理IO命令的方法,包括:获取用于读出数据的第三命令,其中第三命令指示了第三逻辑地址与第三长度;若第三地址是有效的逻辑地址索引,根据第三地址从NVM读出第三压缩后的数据;将所述第三压缩后的数据解压缩得到第三解压缩的数据;将第三数据的从头开始的等于第三长度的部分作为所述第三命令的处理结果。
根据本申请第二方面的第一处理IO命令的方法,提供了根据本申请第二方面的第二处理IO命令的方法,还包括:若第三地址不是有效的逻辑地址索引,发送所述第三命令的处理结果,在所述第三命令的处理结果中指示所述第三命令存在错误。
根据本申请第二方面的第一或第二处理IO命令的方法,提供了根据本申请第二方面的第三处理IO命令的方法,其中根据第三地址从NVM读出第三压缩后的数据的长度是根据所述第三地址从NVM获取的,或者根据所述第三地址到下一个有效逻辑地址之间的距离确定的。
根据本申请第二方面的第一或第二处理IO命令的方法,提供了根据本申请第二方面的第四处理IO命令的方法,还包括:若第三解压缩的数据的大小小于所述第三长度,还根据第三压缩后的数据在NVM的地址读出NVM上在第三压缩后的数据之后的第四压缩后的数据;将所述第四压缩后的数据解压缩得到第四解压缩的数据;重复上述过程,直到读出的所有解压缩的数据的大小的和不小于所述第三长度;将读出的所有解压缩的数据作为整体的从头开始的等于第三长度的部分作为所述第三命令的处理结果。
根据本申请第二方面的第一至第四处理IO命令的方法之一,提供了根据本申请第二方面的第五处理IO命令的方法,还包括:获取用于读出数据的第四命令,其中第四命令指示了多个逻辑地址与同所述多个逻辑地址的每个对应的多个长度;若所述多个逻辑地址的第一个逻辑地址是有效的逻辑地址索引,根据第一个逻辑地址从NVM读出压缩后的数据,并解压缩得到同所述第一个逻辑地址对应的第四逻辑地址空间的完整数据;根据所述第四命令指示的所述多个逻辑地址与同所述多个逻辑地址的每个对应的所述多个长度,从所述第一逻辑地址空间的完整数据中获取多段数据,作为所述第四命令的处理结果。
根据本申请第二方面的第一至第五处理IO命令的方法之一,提供了根据本申请第二方面的第六处理IO命令的方法,还包括:获取用于读出数据的第五命令,其中第四命令指示了第五逻辑地址与第五长度;若第五地址是有效的逻辑地址索引,根据第五地址从NVM读出第五压缩后的数据;将所述第五压缩后的数据解压缩得到第五解压缩的数据;若第五解压缩的数据的长度小于所述第五长度,还根据第五地址从FTL表中获取同第五地址相邻的下一个有效逻辑地址索引,根据所述下一个有效逻辑地址索引地址从NVM读出第六压缩后的数据;将读出的所有解压缩的数据作为整体的从头开始的等于第五长度的部分作为所述第五命令的处理结果。
根据本申请第二方面的第六处理IO命令的方法,提供了根据本申请第二方面的第七处理IO命令的方法,其中若第五解压缩的数据的长度与第五解压缩的数据的长度的和小于所述第五长度,还继续获取下一个有效逻辑地址索引,根据获取的有效逻辑地址索引地址从NVM读出压缩后的数据,直接读出的所有解压缩的数据的长度和不小于所述第五长度。
根据本申请第二方面的第一至第七处理IO命令的方法之一,提供了根据本申请第二方面的第八处理IO命令的方法,还包括:获取用于写入数据的第一命令;为所述第一命令要写入的数据分配第一逻辑地址索引与第一大小,所述第一逻辑地址索引与所述第一大小定义了第一逻辑地址空间,所述第一大小是所述第一逻辑地址空间的大小,所述第一大小能容纳未经压缩的所述第一命令要写入的数据;压缩所述第一命令要写入的数据,得到压缩后的数据;在NVM中存储所述压缩后的数据;以及同所述第一逻辑地址索引相关联地记录NVM中存储所述压缩后的数据的地址。
根据本申请的第三方面,提供了根据本申请第三方面的第一存储系统,其中所述存储系统包括主机与存储设备;所述主机向所述存储设备发出用于写入数据的命令;所述存储设备执行根据本申请第一方面的处理IO命令的方法之一来处理所述用于写入数据的命令;所述主机获取所述存储设备提供的所述用于写入数据的命令的处理结果,记录所述用于写入数据的命令的处理结果指示的逻辑地址索引作为同所述用于写入数据的命令对应的逻辑地址;以及所述记录主机还同所述用于写入数据的命令对应的数据长度。
根据本申请第三方面的第一存储系统,提供了根据本申请第三方面的第二存储系统,其中所述主机向所述存储设备发出用于读出数据的命令;所述存储设备执行根据本申请第二方面的处理IO命令的方法之一所述的方法来处理所述用于读出数据的命令;所述主机获取所述存储设备提供的所述用于读出数据的命令的处理结果。
根据本申请的第四方面,提供了一种信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现根据本申请第一方面或第二方面提供的处理IO命令的方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了现有技术的存储设备的框图;
图2是FTL的示意图;
图3A是Zone的示意图;
图3B-图3D展示了向Zone写入数据的示意图;
图4A展示了根据本申请实施例提供的透明压缩的示意图;
图4B展示了根据本申请实施例的地址空间映射的示意图;
图5A是现有技术的逻辑地址空间的示意图;
图5B是根据本申请实施例的逻辑地址空间的示意图;
图6A展示根据本申请实施例读出压缩数据的流程图;
图6B展示根据本申请又一实施例读出压缩数据的流程图;以及
图7展示了根据本申请实施例的压缩的ZNS的Zone容量的示意图;
图8展示了根据本申请实施例的提供混合NS的存储设备的示意图;
图9展示了根据本申请实施例使用混合NS的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图4A展示了根据本申请实施例提供的透明压缩的示意图。
在图4A中,以两个命令(CMD1与CMD2)为例,展示了存储设备对命令对应数据进行压缩的过程,图4A的左侧展示的步骤410到418,是处理两个命令所使用的方法。命令CMD1要写入128KB的数据(D1),命令CMD2要写入60KB的数据(D2)。
可以理解地,指示向存储设备写入数据的命令,包括例如写命令与追加命令,写命令中指示了承载写入数据的地址。
响应于收到命令(CMD1与CMD2)(410),对命令要写入的数据进行压缩(412)。对命令CMD1的数据D1压缩得到压缩后的数据(CD1),其大小为16KB,对命令CMD2的数据D2压缩得到压缩后的数据(CD2),其大小为4KB。可以理解的,压缩后的数据大小可能不是逻辑块大小的整数倍(例如,3.7KB),这种情况下,将压缩后的数据以逻辑块大小为边界对齐(例如,逻辑块大小为512字节,为3.7KB的压缩后数据分配8个逻辑块)。在一个例子中,将命令(例如CMD1)对应的数据(例如D1)整体进行压缩,得到的压缩后数据整体能被解压缩,而压缩后数据的部分不能被解压缩。在又一个例子中,将命令对应的数据(例如D1)进行分段压缩,得到一个或多个分段,每个分段的大小能被容纳于1个扇区,且每个分段能被独立解压缩。
对未经压缩的数据(D1与D2)分配逻辑地址空间(414)以容纳数据。对于写命令,分配的逻辑地址空间的起始地址是写命令中指示的地址。对于追加命令,分配的逻辑地址空间的起始地址是例如当前可写入逻辑地址空间的起始地址,或者对于ZNS是例如WP指示的逻辑地址。
根据本申请的实施例,将分配的逻辑地址空间的起始地址称为逻辑地址索引。仅逻辑地址索引将被用于索引FTL表。分配的逻辑地址空间的除起始地址以外的其他地址不被用于索引FTL表。分配的逻辑地址空间由逻辑地址索引与分配的逻辑地址空间大小这两个维度共同定义。仅逻辑地址索引被用于描述命令待写入的数据分配的逻辑地址空间的起始地址,逻辑地址空间的其他逻辑地址不用于描述逻辑地址空间的起始地址。为命令待写入的数据分配的逻辑地址空间的容量仅由分配的逻辑地址空间大小维度定义,从而为相邻两个命令分配的逻辑地址空间各自的逻辑地址索引的差,不代表为在前命令分配的逻辑地址空间的容量。
根据本申请的实施例,为相邻两个命令分配的逻辑地址空间各自的逻辑地址索引的差,代表了在前命令对应的压缩后数据的大小(按逻辑块大小对齐)。可以意识到,根据本申请的实施例,需要在对一个命令的待写入数据获得其压缩后数据大小后才知晓其下一个命令对应的逻辑地址空间索引。
例如,当前可写入逻辑地址空间的起始地址(或对于ZNS的WP,或者作为写命令的CMD1指示的逻辑地址)记为sLBA,为CD1分配从sLBA开始,长度为256个逻辑块(逻辑块大小为512B)的逻辑地址空间。
一般地,将命令要写入的数据(未经压缩)的大小记为DS,将逻辑块大小记为SS,则为未经压缩的待写入数据分配的逻辑地址范围长度是
Figure BDA0002784923830000081
(DS/SS结果向上取整)。从而,根据本申请的实施例,在逻辑地址空间中分布的是未经压缩的写入数据,写入数据在逻辑地址空间中占据的大小对应未经压缩的数据大小。
将对CMD2分配的逻辑地址记为sLBA2,sLBA2=sLBA+32,其中32是CMD1对应的压缩后数据CD1占据的逻辑块数量。而为CMD2分配的逻辑地址空间是从sLBA+32开始,长度为120个逻辑块的逻辑地址空间。
对于追加命令,分配逻辑地址空间后,还需要更新WP。一般地,将命令要写入的数据经压缩后的大小记为CS,将逻辑块大小记为SS,则分配逻辑地址空间后WP的增量为
Figure BDA0002784923830000082
(CS/SS结果向上取整)。WP的增量也代表了为命令分配逻辑地址空间后用于下一命令的逻辑地址索引的增量。
还为压缩后的数据(CD1与CD2)分配用于NVM的物理地址。分配的物理地址范围大小需足以容纳压缩后的数据。例如,在NVM中由sPBA所指示的物理地址为起点,长度为16KB的存储空间被分配来存储压缩后的数据CD1,接下来的4KB存储空间被分配来存储压缩后的数据CD2。所属领域技术人员将意识到,存储压缩后数据的物理存储空间有其他分布方式,例如,位于不同NVM或不同的物理块。以及在FTL表中记录分配的逻辑地址范围的起始地址与对应的物理地址。
将压缩后的数据(CD1与CD2)写入由分配的物理地址指示的NVM(416)。还将步骤414分配的逻辑地址索引返回给主机(418),以向主机告知为命令(CMD1或CMD2)分配的逻辑地址空间。主机可记录这些分配的逻辑地址索引以在接下来使用这些分配的逻辑地址索引取回对应的数据(D1或D2)。还向主机告知命令处理完成。
需要指出的,根据本申请的实施例,数据压缩对主机透明。主机无需额外的处理来访问NVM中经压缩的数据。也无需修改主机所使用的访问存储设备的协议。在主机看来,对应命令CMD1的数据D1被写入逻辑地址sLBA,数据长度为128KB,而对应命令CMD2的数据D2被写入逻辑地址sLBA+32,数据长度为60KB。主机从逻辑地址sLBA开始读出128KB数据,将得到数据D1,而主机从逻辑地址sLBA+32开始读出60KB数据,将得到数据D2。
步骤416不必发生在步骤418之前。存储设备可使用缓存来记录要写入NVM的数据(CD1与CD2),并在数据CD1和/或CD2被写入NVM之前,向主机告知命令(CMD1与CMD2)处理完成。可选地,主机提供额外的刷写(Flush)命令来指示存储设备将缓存的数据(CD1与CD2)写入NVM。
图4B展示了根据本申请实施例的地址空间映射的示意图。
也参看图4A,在处理完命令CMD1与CMD2后,FTL表的条目中记录了同逻辑地址索引sLBA(即sLBA+0)对应的NVM地址(该NVM地址存储了压缩后的数据CD1,大小为16KB),FTL表的条目中还记录了同逻辑地址索引sLBA+32对应的NVM地址(该NVM地址存储了压缩后的数据CD2,大小为4KB)。FTL表的条目中还记录了同逻辑地址索引sLBA+40对应的NVM地址(该NVM地址存储了对应命令CMD3(图4B中未示出)的压缩后的数据CD2)。
图4B的物理地址空间指示在NVM中存储的数据,由物理地址(即NVM地址)寻址。可选地,NVM还提供额外的存储空间来容纳数据的元数据,元数据包括例如所对应数据的逻辑地址、压缩后的数据长度和/或压缩前的数据长度。根据压缩后的数据长度,得以知晓例如从FTL表表项记录的NVM地址开始,多大物理地址范围内的数据属于由同一数据得到的压缩数据。
图4B的逻辑地址空间指示主机向存储设备的逻辑地址索引写入或读出的数据。数据D1在逻辑地址空间中占据128KB大小的地址空间范围,而数据D2在逻辑地址空间中占据60KB大小的地址空间范围。逻辑地址空间的数据D1同物理地址空间的压缩后数据CD1对应,逻辑地址空间的数据D2同物理地址空间的压缩后数据CD2对应,逻辑地址空间的数据D3同物理地址空间的压缩后数据CD3对应。从而,根据本申请的实施例,用户写入存储设备的数据以其原始大小占据逻辑地址空间,而以压缩后的大小占据物理地址空间。
需要指出的,根据本申请实施例,逻辑地址空间同物理地址空间并非一一对应。逻辑地址空间的大小超过了物理地址空间大小。为每个命令对应的数据所分配的逻辑地址空间由逻辑地址空间索引(该逻辑地址空间的起始地址)与该逻辑地址空间的大小这两个维度定义。仅逻辑地址空间索引被用作FTL表的索引,逻辑地址空间的其他逻辑地址不能用作FTL表的索引。可选地,一些实施方式中,FTL表条目在FTL表中的位置暗示了该条目对应的逻辑地址索引,但一些条目因没有对应的逻辑地址空间索引而不被使用或不被填充有效的NVM地址。例如,参看图4B,对应逻辑地址索引sLBA+1到sLBA+31的FTL表条目都不被使用或不被填充有效的NVM地址。
图5A是现有技术的逻辑地址空间的示意图。
图5B是根据本申请实施例的逻辑地址空间的示意图。
通过图5A与图5B对照展示了处理三个命令(CMD1、CMD2与CMD3)后,各命令写入的数据在现有技术的逻辑地址空间与根据本申请实施例的逻辑地址空间中的分布。CMD1指示写入的数据(D1)大小为128KB,CMD2指示写入的数据(D2)大小为60KB,CMD3指示写入的数据(D3)大小为32KB。按CMD1、CMD2与CMD3的顺序处理三个命令,三个命令对应的逻辑地址空间的起始地址分别记为sLBA1、sLBA2与sLBA3。逻辑块大小为512B。整体逻辑地址空间的起始地址为sLBA。
参看图5A,根据现有技术的方式,逻辑地址空间为1维空间,由逻辑地址描述数据在空间中的分布。命令CMD1对应的数据在逻辑地址空间中占据逻辑地址sLBA+0到sLBA+255的范围(256个逻辑块),起始地址sLBA1=sLBA+0,命令CMD2对应的数据在逻辑地址空间中占据逻辑地址sLBA+256到sLBA+315的范围(120个逻辑块),起始地址sLBA2=sLBA+256,命令CMD3对应的数据在逻辑地址空间中占据逻辑地址sLBA+316到sLBA+379的范围(64个逻辑块),起始地址sLBA3=sLBA+316。
参看图5B,对于同样的3个命令(CMD1、CMD2与CMD3),根据本申请的实施例,逻辑地址空间为2维空间,容纳每个命令对应的数据的逻辑地址空间由2个维度表达,一个维度是该逻辑地址空间的逻辑地址索引,另一个维度是该逻辑地址空间的大小。由于逻辑地址索引与逻辑地址空间的大小是2个(正交的)维度,这两个维度不具备可加性,两个维度的数值相加的结果不能用于逻辑地址空间的寻址。命令CMD1对应的数据占据的逻辑地址空间由<逻辑地址索引sLBA+0,大小128KB>表示,命令CMD2对应的数据占据的逻辑地址空间由<逻辑地址索引sLBA+32,大小60KB>表示。在逻辑地址空间中,各命令对应的数据从逻辑地址索引描述的位置开始,向由逻辑地址空间的大小维度所描述的方向延申,而不是向逻辑地址索引维度的下一个元素方向延申。
根据本申请的实施例,逻辑地址空间的逻辑地址索引维度的元素取值无需连续。在图5B的例子中,逻辑地址空间的逻辑地址索引维度的第一个元素为sLBA+0,第二个元素为sLBA+32,第三个元素为sLBA+40。对于诸如sLBA+1至sLBA+31的其他取值,其不是逻辑地址索引维度的元素,不具有对应的逻辑地址空间大小维度,也不能用于读取数据。
在一种实施方式中,逻辑地址空间的逻辑地址索引维度中,相邻元素的数值差(例如,32=sLBA2-sLBA1)代表了该对相邻元素中的前一元素所对应的数据压缩后所占据的逻辑块数量(例如,32代表占据32个逻辑块)。而每个元素的数值是该元素之前的所有元素所对应的数据压缩后所占据的逻辑块数量之和。从而逻辑地址索引的取值可用于索引现有技术的FTL表,现有技术的FTL可用于将根据本申请实施例的逻辑地址索引映射到物理地址。而未被逻辑地址索引使用的取值(诸如sLBA+1至sLBA+31)在FTL表查询不到结果,或被标志为对应诸如“空值”的指定值。
在又一种实施方式中,逻辑地址索引的取值不作为数值,而是作为诸如“键(Key)”的索引,而FTL通过将“键”映射到“值”来得到对应的物理地址。
再次参看图5A与图5B各自的图表,在两种实施方式中,对于处理后的3个命令,主机都记录每个命令(CMD1、CMD2与CMD3)对应的逻辑地址空间起始地址(sLBA1、sLBA2与sLBA3)与数据长度。从而在两种实施方式中,主机实施的操作形式相同(仅起始地址的取值有区别,并且该取值来自于存储设备返回的参数,而无需主机计算),因而根据本申请的实施例,以对主机透明的方式提供了数据压缩,而无需让主机引入额外的操作。
图6A展示根据本申请实施例读出压缩数据的流程图。
主机向存储设备发出读命令来取回已写入存储设备的数据(610)。读命令指示了例如2个参数,所读取数据的起始地址(记为sLBA)与长度。读命令中的起始地址sLBA是主机维护的、从存储设备接收的针对其之前发出的写命令所返回的存储所写入数据的逻辑地址空间的起始地址。根据本申请的实施例,存储设备返回的该起始地址是逻辑地址索引,而主机将其视作逻辑地址空间的起始地址,从而主机无需改变现有技术中对该起始地址的处理方式。
响应于收到读命令,从读命令中提取了起始地址sLBA与长度,存储设备检查该起始地址sLBA是否是有效的逻辑地址索引(615)。例如,通过查找FTL表来识别所获取的sLBA是否是有效的逻辑地址索引。在FTL表中记录了有效的逻辑地址索引。反之,若在FTL表没有记录,或者FTL表指示同该逻辑地址索引对应的物理地址为诸如空值的指定值,则识别出所获取的sLBA不是有效的逻辑地址索引。响应于sLBA不是有效的逻辑地址索引(615),存储设备向主机指示读命令存在错误(618)。
响应于获取的sLBA是有效的逻辑地址索引(615),获取同sLBA对应的在NVM中存储的压缩后的数据(620)。例如,根据sLBA访问FTL表以获取对应的物理地址,并根据物理地址访问NVM以读出数据,读出的数据是压缩后的数据。可选地,为从NVM读出数据,还需要获得压缩后数据的长度,因为根据本申请的实施例,FTL表的各条目对应的物理地址空间具有可变的大小(也参看图4B,压缩数据CD1的大小为16KB,而压缩数据CD2的大小为4KB)。在一个例子中,从物理地址指示的存储区域的指定位置(例如,前部或带外存储区)获取长度信息,该长度信息指示要读取的压缩数据在物理地址空间中的扇区数量。可以理解地,在向NVM写入数据时,也将该长度信息写入NVM。在又一个例子中,在FTL表中搜索在步骤610中获取的逻辑地址索引sLBA之后的下一个有效逻辑地址索引(记为sLBA+a),两个逻辑地址索引的差(a)对应了压缩后数据在物理地址空间中的扇区数量。例如,也参看图5B,CMD1对应的逻辑地址索引为sLBA1,在FTL表中,位于sLBA1之后的下一个有效逻辑地址索引为sLBA2,sLBA2与sLBA1的差32代表了CMD1的对应数据经压缩后在物理地址空间中的扇区数量(32个)。在依然又一个例子中,根据sLBA对应的物理地址开始读出一个或多个扇区的压缩数据,直到识别了(例如,根据结尾标志或者解压缩能够成功)对应未压缩数据的压缩数据已经全部读出。对步骤620获取的压缩数据进行解压缩(625)。
在依然又一个例子中,NVM存储的压缩后数据是分段压缩的,根据sLBA对应的物理地址开始读出一个扇区的压缩数据,对压缩数据进行解压缩(625),比较解压缩后的数据同步骤610中从读命令获取的长度是否一致。若解压缩后的数据小于读命令所指示的长度,则继续从sLBA对应的物理地址的下一位置读出下一个扇区,对该扇区中的压缩数据解压缩(625),并识别累积的解压缩数据长度是否达到从读命令获取的长度。若依然没有达到读命令所指示的要读取数据长度,则重复上述过程从一个或多个其他扇区中读取压缩数据并解压缩(625),直到累积的解压缩数据达到了要读取数据的长度。
需要指出的,读命令所要读取的数据长度(步骤610获取的长度,记为L)可能不同于之前写命令写入的数据长度。例如,也参看图5B,命令CMD1写入的数据长度是128KB,对应的逻辑地址索引为sLBA1。而主机提供的读命令可指示逻辑地址sLBA1,但长度为例如58KB。读命令中指示的要读取数据长度为从读命令指示的起始地址sLBA开始的数据长度。因而,在步骤650,将解压缩后的数据从头开始长度为L(例如,50KB)的数据作为读命令的处理结果提供给主机。
主机提供给存储设备的一些读命令具有不同的格式。例如,读命令不携带长度信息,而是暗示了要读取的数据长度,例如每个读命令要读取具有固定长度的数据。在另一些情况中,读命令指示要读取多份不连续的数据,图6B展示了对此类读命令的处理方式。
图6B展示根据本申请又一实施例读出压缩数据的流程图。
作为举例,读命令680指示从逻辑地址sLBA+0处读取长度为2KB的数据,从逻辑地址sLBA+5处读取长度为2KB的数据,还从逻辑地址sLBA+50处读取3KB数据。每个逻辑块大小为例如512B。
FTL表中记录了逻辑地址索引(sLBA+0与sLBA+32),也记录了各逻辑地址索引对应的NVM的物理地址。在NVM中存储了分别对应这两个逻辑地址索引的经压缩的数据(大小为16KB的压缩数据CD1与大小为4KB的压缩数据CD2)。压缩数据CD1对应的压缩前数据是128KB,在根据本申请实施例的逻辑地址空间中由<sLBA+0,128KB>所代表。
读命令680指示了3个要读取的地址,分别记为<sLBA+0,2KB>(682)、<sLBA+5,2KB>(684)与<sLBA+50,3KB>(686)。根据本申请的实施例,根据读命令680要读取的多个地址中的第一个地址<sLBA+0,2KB>(682),将其指示的地址sLBA+0作为逻辑地址索引,并用其访问FTL表进而获得压缩数据CD1的物理地址。而读命令680要读取的其他地址都不作为逻辑地址索引。
参看图6B,读出压缩数据CD1,并解压缩得到对应逻辑地址空间<sLBA+0,128KB>的数据D1。
将用读命令680要读取的多个地址<sLBA+0,2KB>(682)、<sLBA+5,2KB>(684)与<sLBA+50,3KB>(686),按各地址相对于数据D1在逻辑地址空间的起始地址的相对位置与长度,线性映射到数据D1的逻辑地址空间<sLBA+0,128KB>的逻辑地址空间大小维度。作为举例,三个地址<sLBA+0,2KB>(682)、<sLBA+5,2KB>(684)与<sLBA+50,3KB>(686)在逻辑地址空间大小维度上分别对应从0开始到2KB范围的数据、从2.5KB开始2KB范围的数据,以及从25KB开始3KB范围的数据。从数据D1中获取这些范围的数据,作为读命令680的处理结果提供给主机。
由于进行了压缩,存储设备提供的逻辑地址空间被扩大了。
主机访问遵循NVMe协议的ZNS时,每个Zone为主机提供可被顺序写入的逻辑地址空间,并且主机维护ZNS返回的用于每个命令的逻辑地址空间的起始地址。根据本申请的实施例,无需主机进行额外的操作,以对主机透明的方式向主机提供具有压缩能力的ZNS(简称为压缩的ZNS)。根据本申请的实施例,为提供压缩的ZNS,以根据例如图4A与图4B展示的实施例提供的方式处理主机向压缩的ZNS提供的命令(写命令或追加命令),并将主机返回分配的逻辑地址索引作为用于命令的逻辑地址空间的起始地址。以根据本申请实施例的二维结构的逻辑地址空间作为向主机展示的Zone的逻辑地址空间。但主机无需意识到根据本申请实施例所提供逻辑地址空间具有2个维度,而是采用诸如现有技术的访问1维逻辑地址空间的方式,以起始地址与数据长度来取回写入存储设备的数据。在主机看来,也参看图5B,其向存储设备的从sLBA+0开始、长度为128KB的逻辑地址空间写入了数据D1,向存储设备的从sLBA+32开始、长度为60KB的逻辑地址空间写入了数据D2,向存储设备的从sLBA+40开始、长度为32KB的逻辑地址空间写入了数据D3。虽然,如果主机对存储了数据D1与D2的逻辑地址空间的起始地址求差,会发现两个起始地址仅相距32个逻辑块,并会困惑32个逻辑块为何能容纳128KB数据,但这不影响主机对其写入存储设备的ZNS的各数据的访问。并且主机可以知晓ZNS内的数据是经压缩的。
图7展示了根据本申请实施例的压缩的ZNS的Zone容量的示意图。
根据NVMe协议,ZNS具有包括Zone大小与Zone容量的属性。Zone大小的值代表Zone的逻辑块数量,而Zone容量的值代表Zone为空状态时可用于写入用户数据的逻辑块的最大数量。Zone容量是主机管理Zone的重要参数。例如,主机根据Zone容量或Zone的无效数据量在Zone容量中的占比,确定对Zone的重置或回收的时机,和/或对待回收的Zone的选择。Zone容量也影响了主机对管理Zone的策略的选择。
根据本申请的实施例,存储设备向主机提供的Zone大小是例如其可用的逻辑地址索引数量,而Zone容量是Zone被写满后,分配给各数据的逻辑地址空间的大小(由例如逻辑块数量表示)的和。由于数据被压缩,使得Zone容量的值可以超过Zone大小。
图7展示了根据本申请实施例的Zone。Zone可用的逻辑地址索引数量为m个(分别记为sLBA0、sLBA1、……sLBA(m-1)),其中逻辑地址索引(sLBA0、sLBA32与sLBA40)被分配了逻辑地址空间分别用于容纳数据(D1、D2与D3)。该Zone的Zone大小属性值为m。可选地,可用的逻辑地址索引包括了未被使用的逻辑地址索引。从而对于图7展示的Zone,其可用于索引FTL表的逻辑地址索引数量可以少于m,例如,图7中,逻辑地址索引sLBA+1不可用于索引FTL表,其不是有效的逻辑地址索引。
作为一个例子,用平坦结构的数组容纳ZNS的FTL表,在创建ZNS时通过指定Zone大小m而确定了FTL表中为该被创建的ZNS的每个Zone预留了m个元素来容纳逻辑地址索引(分别对应sLBA0、sLBA1、……sLBA(m-1)),这m个元素被初始化为指定值或空值来表示其尚不是有效的逻辑地址索引。
响应于处理了向该ZNS的某Zone写入数据的命令,在为该命令分配的逻辑地址索引(记为sLBA_i)对应的FTL表元素中记录容纳该命令的压缩后数据的NVM的物理地址。该命令要写入的数据(记为Di)的(未经压缩的)大小记为data_length(sLBA_i)。将数据Di经压缩后得到的压缩数据(记为CDi)的大小记为CSi,将逻辑块大小记为SS,则该Zone的下一个有效的逻辑地址索引为
Figure BDA0002784923830000132
而从sLBA_i+1到
Figure BDA0002784923830000133
范围内的逻辑地址索引都不是有效的逻辑地址索引。对于非有效的逻辑地址索引(例如,sLBA_j),其对应的逻辑地址空间大小为0(data_length(sLBA_j)=0)。从而有该Zone的Zone容量为
Figure BDA0002784923830000131
也等于主机向该Zone写入的所有用户数据所占据的扇区数量。随着该Zone被写入数据,其Zone容量相应增加,直到该Zone被写满,其Zone容量达到最大值并且在Zone被复位(Reset)或回收前不再改变。
由于Zone容量等于主机向该Zone写入的所有用户数据所占据的扇区数量,从而主机维护的该Zone的地址空间的元素(例如,扇区)同存储设备为该Zone提供的逻辑地址空间的逻辑块一一对应。而主机在访问该Zone的读命令中可使用的地址同存储设备的用于该Zone的有效逻辑地址索引一一对应,有效逻辑地址能用于索引FTL表的条目。由Zone容量除以Zone大小,得到Zone的数据压缩率,Zone的数据压缩率可以大于1。
图8展示了根据本申请实施例的提供混合NS的存储设备的示意图。
NVMe协议定义了命名空间(NameSpace)。命名空间可被视作逻辑存储设备。存储设备可以同时提供多个命名空间。
参看图8,存储设备提供了命名空间(NS0与NS1)。命名空间NS0是根据本申请实施例的压缩的ZNS,作为举例,其中包括Zone0与Zone1。命名空间NS1是根据现有技术的命名空间。
作为举例,FTL表是平坦结构的数组,从而FTL表条目的索引是其在内存中的存储位置。FTL表为Zone0与Zone1各提供了m个条目。从而,Zone0与Zone1的Zone大小为m。FTL表为NS1提供n-2m-1个条目,每个条目对应例如4KB大小的逻辑地址空间,从而NS1的容量为4K*(n-2m-1)。
Zone0与Zone1是压缩的,用于Zone0或Zone1的FTL表条目的索引是用于Zone0或Zone1的逻辑地址索引。在图8中,以Zone0为例,由sLBA+0、sLBA+4与sLBA+5索引的FTL表条目记录了有效的NVM地址,因而sLBA+0、sLBA+4与sLBA+5是有效的逻辑地址索引,而诸如sLBA+1到sLBA+3这些逻辑地址索引则不是有效的。对于Zone0,FTL表的每个条目同例如4KB大小的物理存储空间对应。由sLBA+0逻辑地址索引对应的物理地址空间,存储了压缩数据CD1的部分。由于压缩数据CD1大小为16KB,其占用了连续的4个4KB的物理地址空间,这4个物理地址空间对应了sLBA+0到sLBA+3这4个逻辑地址索引(FTL表条目),而压缩数据CD1仅由逻辑地址索引sLBA+0来索引,从而使得sLBA+1到sLBA+3这些逻辑地址索引不可用,通过在对应这些索引的FTL表条目中设置空值或指定值来标记这些逻辑地址索引是不可用的。从而,主机仅能通过逻辑地址索引sLBA+0来访问压缩数据CD1,而不能通过sLBA+1到sLBA+3这些逻辑地址索引来访问压缩数据CD1。
从而在ZNS中,有效的逻辑地址索引对应的压缩数据的大小,也决定了下一个有效的逻辑地址索引在FTL表中的位置。在图8的Zone0中,逻辑地址索引sLBA+0索引了16KB的压缩数据CD1,使得下一个有效的逻辑地址索引是sLBA+4,其索引了4KB的压缩数据CD2,而再下一个有效的逻辑地址索引是sLBA+5,其索引了压缩数据CD3。
在ZNS中,物理地址空间中存储压缩数据,而主机或用户看来,未经压缩的数据在逻辑地址空间容纳。主机用现有技术的方式以逻辑地址空间的起始地址与数据长度得以获得未经压缩的数据。从而虽然NS0中对存储的数据进行了压缩,但主机无需额外的调整来访问经压缩的数据,因而根据本申请实施例的ZNS对主机是透明的。压缩数据CD1对应的逻辑空间容纳了数据D1(大小为128KB)。压缩数据CD2对应的逻辑空间容纳了数据D2(大小为60KB)。压缩数据CD3对应的逻辑空间容纳了数据D3。
作为比较,命名空间NS1的物理地址空间与逻辑地址空间是一一对应的,物理地址空间的4KB区域对应了逻辑地址空间的4KB区域。命名空间NS1的逻辑地址空间由逻辑地址范围定义,也即由FTL表条目的索引定义,从而命名空间NS1的逻辑地址空间从sLBA+2m到sLBA+n延申,用户访问命名空间NS1的逻辑地址空间(例如,sLBA+2m到sLBA+n)将得到同由逻辑地址sLBA+2m到sLBA+n索引的FTL表每个条目所对应的逻辑地址空间的数据。而NS0的逻辑地址空间,则不是从逻辑地址sLBA0到sLBA+2m-1延申,而是由从sLBA+0到sLBA+2m-1的所有有效逻辑地址索引所对应的逻辑地址空间的组合。从而,用户访问命名空间NS0的逻辑地址空间(例如,sLBA0到sLBA+2m-1)将得到容纳数据D1的逻辑地址空间、容纳数据D2的逻辑地址空间、容纳数据D3的逻辑地址空间……以及sLBA+0到sLBA+2m-1的最后一个有效逻辑地址索引对应的逻辑地址空间。因而,作为举例,若命名空间NS0的容量为C0,若主机发出了指示起始地址sLBA0与大小C0的读命令,在处理该命令时,将从作为逻辑地址索引的sLBA+0开始读出数据D1,接下来从FTL表的用于NS0的条目中获取下一个有效逻辑地址索引(sLBA+4),以及获取该有效逻辑地址对应的数据D2,以此类推,直到获得了FTL表的用于NS0的条目中的最后一个有效逻辑地址索引,并获得其对应的数据,所有这些数据的长度和为C0。可以理解地,在根据有效逻辑地址索引sLBA+0获取了数据D1或压缩数据CD1后,根据压缩数据CD1的大小,得以确定FTL表中下一个有效的逻辑地址索引的位置(下一个有效的逻辑地址索引的位置相对于当前有效逻辑地址索引的位置的增量为
Figure BDA0002784923830000141
CS1为压缩数据CD1的大小,SS为逻辑块大小。可选地,从当前的有效逻辑地址索引(例如,sLBA+0)开始遍历FTL表,根据FTL表条目的值也能识别有效逻辑地址索引。
从而,根据本申请的实施例,存储设备同时提供多种不同属性的命名空间,例如,命名空间NS0具有高存储容量或高密度(因为实施了数据压缩)(相对于NS1),而命名空间NS1具有高性能和更好的QoS(服务质量,QualityofService)(相对于NS0)。用户得以根据需求将数据记录在不同的命名空间。
图9展示了根据本申请实施例使用混合NS的示意图。
Zone的创建、使用和回收需要主机管理,主机还需要确保向Zone写入数据是按地址顺序写入的,因为Zone不支持随机写。而一些场景或数据本身需要随机写入,例如,Zone容量。Zone容量是描述Zone的元数据,在根据本申请实施例的Zone被写入数据的过程中,Zone容量可能随数据写入而变化,用随机写的方式能较好的更新诸如Zone容量的等元数据。
参看图9,存储设备提供的命名空间NS0是压缩的ZNS,主机在命名空间NS中创建并使用Zone(记为主机Zone0)。存储设备的命名空间NS1是支持随机写的命名空间,主机将用于主机Zone0的元数据记录在命名空间NS1。从而充分利用命名空间NS0存储密度高,而命名空间NS1性能更好的特点。
也参看图9,根据本申请的实施例还提供了主机Zone 0。主机Zone 0也是压缩的。作为举例,主机管理的主机Zone0被映射到存储设备的两个Zone(Zone0与Zone1)。主机根据应用的需求,所希望的Zone容量可能不同于存储设备提供的Zone容量。主机可将存储设备的2个或更多Zone组合成单一的主机Zone。在单一的主机Zone被创建或回收时,提供该主机Zone的所有存储设备的Zone被一起创建或回收。为提供主机Zone,主机还管理主机Zone到存储设备Zone的映射。在图9的例子中,主机Zone0使用的逻辑地址索引范围是存储设备Zone0与Zone1的可用的逻辑地址索引的全部(sLBA+0到sLBA+2m-1),从而根据访问主机Zone0的逻辑地址索引,确定该逻辑地址索引由存储设备的哪个Zone提供,以及由根据本申请前述实施例的方式用该逻辑地址索引访问存储设备的Zone。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种处理IO命令的方法,包括:
获取用于写入数据的第一命令;
为所述第一命令要写入的数据分配第一逻辑地址索引与第一大小,所述第一逻辑地址索引与所述第一大小定义了第一逻辑地址空间,所述第一大小是所述第一逻辑地址空间的大小,所述第一大小能容纳未经压缩的所述第一命令要写入的数据;
压缩所述第一命令要写入的数据,得到压缩后的数据;
在NVM中存储所述压缩后的数据;以及
同所述第一逻辑地址索引相关联地记录NVM中存储所述压缩后的数据的地址。
2.根据权利要求1所述的方法,其中根据写指针生成所述第一逻辑地址索引;
所述方法还包括:
更新所述写指针。
3.根据权利要求2所述的方法,其中
将所述写指针作为所述第一逻辑地址索引,根据所述压缩后的数据大小更新所述写指针;或者
将根据所述写指针生成的键作为所述第一逻辑地址索引,根据所述压缩后的数据大小更新所述写指针。
4.根据权利要求2或3所述的方法,还包括:
获取用于写入数据的第二命令;
根据更新后的所述写指针为所述第二命令要写入的数据分配第二逻辑地址索引与第二大小,所述第二逻辑地址索引与所述第二大小定义了第二逻辑地址空间,所述第二大小是所述第二逻辑地址空间的大小,所述第二大小能容纳未经压缩的所述第二命令要写入的数据;其中根据更新后的所述写指针生成所述第二逻辑地址索引;其中即使所述第二逻辑地址索引同所述第一逻辑索引的差小于所述第一大小,所述第二逻辑地址空间同所述第一逻辑地址空间也不重叠。
5.根据权利要求4所述的方法,还包括:
压缩所述第二命令要写入的数据,得到第二压缩后的数据;
在NVM中存储所述第二压缩后的数据;
同所述第二逻辑地址索引相关联地记录NVM中存储所述第二压缩后的数据的地址;以及
根据所述第二压缩后的数据大小,更新所述写指针。
6.根据权利要求1-5之一所述的方法,其中
未关联NVM地址的逻辑地址索引,是无效的逻辑地址索引;以及
关联到NVM地址的逻辑索引,是有效的逻辑地址索引;
以及其中累积存储区域的所有有效逻辑地址索引所定义的所有逻辑地址空间的大小的和,得到所述存储区域的存储区域容量。
7.根据权利要求6所述的方法,还包括:
获取用于读出数据的第三命令,其中第三命令指示了第三逻辑地址与第三长度;
若第三地址是有效的逻辑地址索引,根据第三地址从NVM读出第三压缩后的数据;
将所述第三压缩后的数据解压缩得到第三解压缩的数据;
将第三数据的从头开始的等于第三长度的部分作为所述第三命令的处理结果。
8.一种处理IO命令的方法,包括:
获取用于读出数据的第三命令,其中第三命令指示了第三逻辑地址与第三长度;
若第三地址是有效的逻辑地址索引,根据第三地址从NVM读出第三压缩后的数据;
将所述第三压缩后的数据解压缩得到第三解压缩的数据;
将第三数据的从头开始的等于第三长度的部分作为所述第三命令的处理结果。
9.一种存储系统,其中所述存储系统包括主机与存储设备;
所述主机向所述存储设备发出用于写入数据的命令;
所述存储设备执行根据权利要求1-7之一所述的方法来处理所述用于写入数据的命令;
所述主机获取所述存储设备提供的所述用于写入数据的命令的处理结果,记录所述用于写入数据的命令的处理结果指示的逻辑地址索引作为同所述用于写入数据的命令对应的逻辑地址;以及
所述记录主机还同所述用于写入数据的命令对应的数据长度。
10.一种信息处理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现根据权利要求1-8之一所述的方法。
CN202011297534.7A 2020-11-18 2020-11-18 利用zns标准实现透明压缩的方法及其设备 Pending CN114546245A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011297534.7A CN114546245A (zh) 2020-11-18 2020-11-18 利用zns标准实现透明压缩的方法及其设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011297534.7A CN114546245A (zh) 2020-11-18 2020-11-18 利用zns标准实现透明压缩的方法及其设备

Publications (1)

Publication Number Publication Date
CN114546245A true CN114546245A (zh) 2022-05-27

Family

ID=81659906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011297534.7A Pending CN114546245A (zh) 2020-11-18 2020-11-18 利用zns标准实现透明压缩的方法及其设备

Country Status (1)

Country Link
CN (1) CN114546245A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193748A (zh) * 2010-03-18 2011-09-21 株式会社东芝 控制器、数据存储装置以及程序产品
CN103514249A (zh) * 2013-06-20 2014-01-15 易乐天 一种数据自精简方法和系统及存储装置
CN107885456A (zh) * 2016-09-29 2018-04-06 北京忆恒创源科技有限公司 减少io命令访问nvm的冲突
CN109086219A (zh) * 2017-06-14 2018-12-25 北京忆恒创源科技有限公司 去分配命令处理方法及其存储设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193748A (zh) * 2010-03-18 2011-09-21 株式会社东芝 控制器、数据存储装置以及程序产品
CN103514249A (zh) * 2013-06-20 2014-01-15 易乐天 一种数据自精简方法和系统及存储装置
CN107885456A (zh) * 2016-09-29 2018-04-06 北京忆恒创源科技有限公司 减少io命令访问nvm的冲突
CN109086219A (zh) * 2017-06-14 2018-12-25 北京忆恒创源科技有限公司 去分配命令处理方法及其存储设备

Similar Documents

Publication Publication Date Title
JP6553566B2 (ja) メモリシステムおよび制御方法
US10628060B2 (en) Smart storage management based on dynamic logic capacity for the storage
KR102042643B1 (ko) 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리
US8626987B2 (en) Flash memory system and defragmentation method
CN114691020A (zh) 基于zns标准提供数据压缩存储设备及其方法
US9355027B2 (en) Zone-based defragmentation methods and user devices using the same
US20130103893A1 (en) System comprising storage device and related methods of operation
US10657048B2 (en) Garbage collection method for data storage device
CN108614668B (zh) 基于kv模型的数据访问方法与固态存储设备
KR20210028729A (ko) 논리적 대 물리적 테이블 프래그먼트들
CN109976664A (zh) 固态存储设备的日志数据组织
CN108614671B (zh) 基于命名空间的键-数据访问方法与固态存储设备
CN110968527B (zh) Ftl提供的缓存
CN110096452B (zh) 非易失随机访问存储器及其提供方法
CN112148626A (zh) 压缩数据的存储方法及其存储设备
CN112181274A (zh) 提升存储设备性能稳定性的大块的组织方法及其存储设备
CN114546245A (zh) 利用zns标准实现透明压缩的方法及其设备
CN111290974A (zh) 用于存储设备的缓存淘汰方法与存储设备
CN111290975A (zh) 使用统一缓存处理读命令与预读命令的方法及其存储设备
CN110968520B (zh) 基于统一缓存架构的多流存储设备
US11347637B2 (en) Memory system and non-transitory computer readable recording medium
CN108614669B (zh) 解决哈希冲突的键-数据访问方法与固态存储设备
CN109840219B (zh) 大容量固态存储设备的地址转换系统与方法
CN112115065A (zh) 存储设备的统一地址空间
CN112181276A (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