CN114077547A - 具有分区命名空间的主机管理的硬件压缩 - Google Patents
具有分区命名空间的主机管理的硬件压缩 Download PDFInfo
- Publication number
- CN114077547A CN114077547A CN202110639618.2A CN202110639618A CN114077547A CN 114077547 A CN114077547 A CN 114077547A CN 202110639618 A CN202110639618 A CN 202110639618A CN 114077547 A CN114077547 A CN 114077547A
- Authority
- CN
- China
- Prior art keywords
- data
- host
- partition
- lba
- storage device
- 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
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/0629—Configuration or reconfiguration of 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- 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
- 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/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明题为“具有分区命名空间的主机管理的硬件压缩”。本公开整体涉及数据存储设备,诸如固态驱动器。数据存储设备包括控制器,该控制器包括压缩引擎。控制器接收用于将数据写入到介质诸如非易失性存储器的ZNS附加命令。压缩引擎将数据从第一数量的逻辑块压缩到第二数量的逻辑块。经压缩数据被编程到介质。经压缩数据具有介质逻辑块地址和主机逻辑块地址,其中介质逻辑块地址是ZNS附加在介质上放置数据的实际LBA,并且主机逻辑块地址是从主机的角度来看存储在介质上的数据的位置。主机生成所存储数据的位置的索引,并且控制器将索引编程到介质中的相关位置。
Description
相关申请的交叉引用
本申请要求2020年8月17日提交的美国临时专利申请序列号63/066,739的权益,该美国临时专利申请以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及存储设备,诸如固态驱动器(SSD)。
相关领域的描述
存储设备诸如SSD可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,SSD可表现出比硬盘驱动器(HDD)更低的延迟,尤其是对于随机读取和写入而言。通常,SSD的控制器接收从主机设备读取或写入数据
到存储器设备的命令。数据被读取和写入到存储器设备中的一个或多个块。每个块与逻辑块地址相关联,使得SSD和/或主机设备知道存储数据的位置。
一个或多个块可通过其相应的逻辑块地址分组在一起以形成分区命名空间(ZNS)架构中的多个分区。在任何特定分区内,来自主机的数据仅可顺序地写入到介质。当在分区内不再存在可写块时,该分区被填满或满载。主机可请求SSD重置被填满或满载分区。当分区被重置时,存储在该分区中的数据被擦除,使得主机可将新数据写入到新擦除的分区。
SSD的控制器保持每个分区的写入指针,指示新主机数据将在哪里附加到该分区。主机可通过ZNS分区附加命令发出写入操作。每当主机使用ZNS分区附加命令将数据附加到分区时,SSD返回被写入数据的第一块的LBA或扇区。所返回的被写入数据的第一块的LBA或扇区指示被编程数据在介质上的位置。主机可使用该信息来管理和跟踪介质上数据的布局。
主机设备可向存储设备发送任何大小的写入命令。因为写入命令可以是任何大小的,所以被写入到存储设备的数据的聚合大小可能快速达到存储设备的存储容量。然而,通过利用压缩算法,被写入到块的数据的大小可小于从主机接收的数据的大小。当前压缩解决方案可能使存储设备硬件和固件复杂化,从而导致成本和生产计划增加,以及压缩可靠性的不确定性。
因此,需要一种新的压缩数据方法。
发明内容
本公开整体涉及数据存储设备,诸如固态驱动器。数据存储设备包括控制器,该控制器包括压缩引擎。控制器接收用于将数据写入到介质诸如非易失性存储器的ZNS分区附加命令。压缩引擎将数据从第一数量的逻辑块压缩到第二数量的逻辑块。经压缩数据被编程到介质。经压缩数据具有介质逻辑块地址和主机逻辑块地址,其中介质逻辑块地址是数据存储设备在介质上放置数据的实际LBA,并且主机逻辑块地址是从主机的角度来看存储在介质上的数据的位置。
在一个实施方案中,数据存储设备包括:非易失性存储单元,其中非易失性存储单元的容量被分成多个分区;以及控制器,控制器耦接到非易失性存储单元。控制器包括压缩引擎。控制器被配置为从主机设备接收用于将数据写入到所述多个分区中的第一分区的一个或多个命令,其中每个命令包括一个或多个数据分块,利用压缩引擎将所述一个或多个数据分块中的一个或多个分块压缩为经压缩数据,其中所述一个或多个分块被压缩为一个或多个粒,并且将经压缩数据写入到第一分区中的第一位置。
在另一实施方案中,数据存储设备包括:非易失性存储单元,其中非易失性存储单元的容量被分成多个分区;以及控制器,控制器耦接到非易失性存储单元。控制器包括压缩引擎。控制器被配置为从主机设备接收将数据写入到多个分区中的第一分区的一个或多个命令,从主机设备接收与所述一个或多个命令相关联的数据,将所接收的数据分组为分块,以压缩比利用压缩引擎将与所述一个或多个命令相关联的数据从分块压缩到整数个粒,将与一个或多个命令相关联的经压缩数据写入到第一分区中的第一位置,记录第一位置,其中第一位置包括介质逻辑块地址(LBA)和主机LBA,并且向主机设备报告主机LBA。
在另一实施方案中,数据存储设备包括:非易失性存储单元,其中非易失性存储单元的容量被分成多个分区。数据存储设备还包括:用于压缩从主机设备接收的数据的装置,其中用于压缩数据的装置耦接到非易失性存储单元;用于将经压缩数据写入到所述多个分区中的至少一个分区中的逻辑块地址(LBA)范围的装置,其中用于写入经压缩数据的装置耦接到非易失性存储单元;以及用于向主机设备报告主机LBA范围的装置,其中主机LBA范围不同于经压缩数据被写入的LBA范围,其中用于报告的装置耦接到非易失性存储单元。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据一个实施方案的存储系统的示意框图。
图2A示出了根据一个实施方案的在存储设备中利用的分区命名空间。
图2B示出了根据一个实施方案的针对图2A的存储设备的分区命名空间的状态图。
图3A示出了根据一个实施方案的常规压缩解决方案。
图3B示出了根据一个实施方案的利用ZNS协议的主机管理的压缩。
图4示出了根据一个实施方案的从分块到多个粒的数据压缩。
图5A示出了根据一个实施方案的线性逻辑块地址范围。
图5B示出了根据另一实施方案的非线性逻辑块地址范围。
图6示出了根据一个实施方案的将标头附加到介质LBA。
图7示出了根据一个实施方案的利用ZNS协议的主机管理的压缩的具体实施。
图8示出了根据一个实施方案的用于将数据写入到非易失性存储器中的位置的方法。
图9示出了根据一个实施方案的用于从非易失性存储器中的位置读取数据的方法。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开整体涉及数据存储设备,诸如固态驱动器。数据存储设备包括控制器,该控制器包括压缩引擎。控制器接收用于将数据写入到介质诸如非易失性存储器的ZNS分区附加命令。压缩引擎将数据从第一数量的逻辑块压缩到第二数量的逻辑块。经压缩数据被编程到介质。经压缩数据具有介质逻辑块地址和主机逻辑块地址,其中介质逻辑块地址是ZNS附加在介质上放置数据的实际LBA,并且主机逻辑块地址是从主机的角度来看存储在介质上的数据的位置。
图1是示出根据本公开的一种或多种技术的存储系统100的示意性框图,其中数据存储设备106可以用作主机设备104的存储设备。例如,主机设备104可以利用包括在数据存储设备106中的非易失性存储器(NVM)110来存储和检索数据。主机设备104包括主机DRAM138。在一些示例中,存储系统100可以包括可作为存储阵列工作的多个数据存储设备,诸如数据存储设备106。例如,存储系统100可以包括多个数据存储设备106,其被配置成共同用作主机设备104的大容量存储设备的廉价/独立磁盘(RAID)冗余阵列。
存储系统100包括主机设备104,该主机设备可以向一个或多个存储设备诸如数据存储设备106存储数据和/或从其检索数据。如图1所示,主机设备104经由接口114与数据存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。
数据存储设备106包括控制器108、NVM 110、电源111、易失性存储器112、接口114和写入缓冲器116。在一些示例中,为了清楚起见,数据存储设备106可以包括图1中未示出的附加部件。例如,数据存储设备106可以包括印刷电路板(PCB),数据存储设备106的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连数据存储设备106的部件的导电迹线等。在一些示例中,数据存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,HDD或SSD)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(PCI)、PCI扩展(PCI-X)、PCIExpress(PCIe)(例如,PCIe x1、x4、x8、x16、PCIe Mini卡、MiniPCI等)。在一些示例中,数据存储设备106可以直接耦接(例如,直接焊接)到主机设备104的母板。
数据存储设备106的接口114可以包括用于与主机设备104交换数据的数据总线和用于与主机设备104交换命令的控制总线中的一者或两者。接口114可以根据任何合适的协议操作。例如,接口114可以根据以下协议中的一个或多个协议来操作:高级技术附件(ATA)(例如,串行ATA(SATA)和并行ATA(PATA))、光纤信道协议(FCP)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、PCI和PCIe、非易失性存储器express(NVMe)、OpenCAPI、GenZ、高速缓存相干接口加速器(CCIX)、开放信道SSD(OCSSD)等。接口114的电连接(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许数据存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
数据存储设备106包括NVM 110,其可以包括多个存储器设备或存储单元。NVM 110可以被配置成存储和/或检索数据。例如,NVM 110的存储单元可以接收数据并且从控制器108接收指示存储单元存储数据的消息。类似地,NVM 110的存储单元可以从控制器108接收指示存储单元检索数据的消息。在一些示例中,存储单元中的每个存储单元可以被称为管芯。在一些示例中,单个物理芯片可以包括多个管芯(即,多个存储单元)。在一些示例中,每个存储单元可以被配置成存储相对大量的数据(例如,128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)。
在一些示例中,NVM 110的每个存储单元可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)、全息存储器设备、以及任何其它类型的非易失性存储器设备。
NVM 110可以包括多个闪存存储器设备或存储单元。闪存存储器设备可以包括基于NAND或NOR的闪存存储器设备,并且可以基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在NAND闪存存储器设备中,闪存存储器设备可以被分成多个块,这些块可以被分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个NAND单元。NAND单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,NAND闪存存储器设备可以是2D或3D设备,并且可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或四级单元(QLC)。控制器108可能以页面等级向NAND闪存存储器设备写入数据以及从NAND闪存存储器设备读取数据,并且以块等级从NAND闪存存储器设备擦除数据。
数据存储设备106包括电源111,其可以向数据存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置成当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。所述一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由所述一个或多个电力存储部件存储的电量可以是所述一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换句话说,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增加。
数据存储设备106还包括易失性存储器112,其可以由控制器108用来存储信息。易失性存储器112可以包括一个或多个易失性存储器设备。在一些示例中,控制器108可以使用易失性存储器112作为高速缓存。例如,控制器108可以将高速缓存的信息存储在易失性存储器112中,直到高速缓存的信息被写入非易失性存储器110。如图1所示,易失性存储器112可以消耗从电源111接收的电力。易失性存储器112的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4等))。
数据存储设备106包括控制器108,其可以管理数据存储设备106的一个或多个操作。控制器108包括压缩引擎120,该压缩引擎可在将数据编程到NVM 110之前利用数据压缩算法来减小由控制器接收的数据的大小。例如,控制器108可以管理从NVM 110读取数据和/或将数据写入该NVM110。在一些实施方案中,当数据存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该NVM 110。在一些实施方案中,当数据存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送至NVM 110之前将与写入命令相关联的数据暂时存储在内部存储器或写入缓冲器116中。
图2A示出了根据一个实施方案的在存储设备200中使用的分区命名空间(ZNS)202视图。存储设备200可将ZNS 202视图呈现给主机设备。图2B示出了根据一个实施方案的存储设备200的ZNS 202的状态图250。存储设备200可以是图1的存储系统100的存储设备106。存储设备200可具有一个或多个ZNS 202,并且每个ZNS 202可具有不同的大小。除该一个或多个分区命名空间202之外,存储设备200还可包括一个或多个常规命名空间。此外,ZNS202可以是用于SAS的分区块命令(ZBC)、用于SATA的分区设备ATA命令集(ZAC)、和/或用于NVMe的分区命名空间。由于可能的逻辑与物理活动之间的关系,主机侧分区活动可与分区驱动器中的介质活动更直接地相关。
在存储设备200中,ZNS 202是可被格式化成逻辑块使得容量被分成多个分区206a-206n(统称为分区206)的NVM的数量。NVM可以是图1的存储单元或NVM 110。分区206中的每个分区包括存储器单元或NVM 204的多个物理块或块(未示出),并且该块中的每个块与多个逻辑块(未示出)相关联。分区206中的每个分区可具有与NVM或NAND器件的一个或多个块的容量对准的尺寸。当控制器208诸如从主机设备(未示出)或主机设备的提交队列接收命令时,控制器208可以从与ZNS 202的所述多个块相关联的所述多个逻辑块读取数据以及将数据写入到所述多个逻辑块。该逻辑块中的每个逻辑块与唯一LBA或扇区相关联。
在一个实施方案中,NVM 204为NAND器件。该NAND器件包括一个或多个管芯。该一个或多个管芯中的每个管芯包括一个或多个平面。该一个或多个平面中的每个平面包括一个或多个块。该一个或多个块中的每个块包括一条或多条字线(例如,256条字线)。该一条或多条字线中的每条字线可以在一个或多个页面中寻址。例如,MLC NAND管芯可使用上页面和下页面来达到整个字线的每个单元中的两个位(例如,每页16KiB)。此外,可以以等于或小于完整页面的粒度访问每个页面。控制器可以用户数据粒度逻辑块地址(LBA)大小512字节频繁地访问NAND。因此,如在下文描述中所提及的,NAND位置等于512字节的粒度。因此,LBA大小为512字节并且MLC NAND的两个页面的页面大小为16KiB,这导致每个字线32个LBA。然而,NAND位置大小不旨在进行限制,并且仅用作示例。
当将数据写入到分区时,在分区206内对应地更新一个或多个逻辑块,以跟踪数据在NVM 204内的位置。数据可一次写入一个分区206,直到分区206变满,或写入多个分区206,使得多个分区206可部分变满。类似地,当将数据写入到特定分区206时,数据可按NAND位置的顺序、逐页或逐字线地一次一块地写入到所述多个块,直到移动到相邻块(即,在移动到第二块之前写入到第一块直到第一块变满),或者可按NAND位置的顺序、逐页或逐字线地一次多块地写入到所述多个块,来以平行的方式部分填充每个块(即,在写入到每个块的第二NAND位置或页面之前写入每个块的第一NAND位置或页面)。每个NAND位置的这种顺序编程是许多NAND块的典型非限制性要求。
当控制器208为每个分区选择将存储数据的块时,控制器208将能够在分区开放时间选择块,或者其可在达到填充该特定块的第一字线的需要时选择块。当利用上述在开始下一块之前完全填充一个块的方法时,这可能更为不同。控制器208可以利用该时间差来在即时的基础上选择更优化的块。哪个块被分配和指派给每个分区及其连续LBA的决定可以针对零个或多个并发分区一直出现在控制器208内。
分区206中的每个分区与分区起始逻辑块地址(ZSLBA)或分区起始扇区相关联。ZSLBA是分区206中的第一可用LBA。例如,第一分区206a与ZaSLBA相关联,第二分区206b与ZbSLBA相关联,第三分区206c与ZcSLBA相关联,第四分区206d与ZdSLBA相关联,并且第n分区206n(即最后一个分区)与ZnSLBA相关联。每个分区206由其ZSLBA标识,并且被配置为接收顺序写入(即,以接收写入命令的顺序来将数据写入NVM 110)。
当将数据写入分区206时,写入指针210被推进或更新以指向或指示分区206中的用于将数据写入的下一个可用块,以便跟踪下一个写入起始点(即,先前写入的完成点等于后续写入的起始点)。因此,写入指针210指示对分区206的后续写入将在何处开始。后续写入命令是“分区附加”命令,其中与该后续写入命令相关联的数据在写入指针210指示为下一个起始点的位置处被附加到分区206。分区206内的LBA的排序列表可被存储用于写入排序。每个分区206可以具有其自身的写入指针210。因此,当接收到写入命令时,分区由其ZSLBA标识,并且写入指针210确定在所识别的分区内数据的写入开始的位置。
图2B示出了针对图2A的ZNS 202的状态图250。在状态图250中,每个分区可处于不同状态,诸如空的、开放的、关闭的、满的、仅读取的、或脱机。当分区为空的时,该分区不含数据(即,分区中的任何块当前均未存储数据),并且写入指针位于ZSLBA处(即,WP=ZSLBA)。例如,当NVM是NAND闪存时,当分区为空时,该分区中的所有块都刚被擦除。一旦向分区调度写入或由主机发出分区开放命令后,空分区将切换到开放和活动分区。分区管理(ZM)命令可用于在分区开放和分区关闭状态(都是活动状态)之间移动分区。如果分区是活动的,则该分区包括可写入的开放块,并且可向主机提供活动状态下的推荐时间的描述。控制器208包括ZM。分区元数据可存储在ZM和/或控制器208中。
术语“写入”包括当用户数据尚未填充所有可用NAND位置时,在块中的0个或更多个NAND位置和/或块中的部分填充NAND位置上编程用户数据。术语“写入”还可包括由于内部驱动器处理需要(因为误比特在开放的块上更快地累积而导致的开放块数据保持问题)而将分区移至满的状态,存储设备200由于资源限制(像太多开放分区要跟踪或者已发现的缺陷状态等等)而关闭或填满分区,或者主机设备因为诸如没有更多数据要发送给驱动器、计算机关闭、主机上的错误处理、用于跟踪的有限主机资源等等问题而关闭分区。
活动分区可以是开放的或关闭的。开放分区是已准备好写入并具有当前已分配资源的空分区或部分填满分区。利用写入命令或分区附加命令从主机设备接收的数据可被编程到当前未填充先前数据的开放的块。已关闭分区是当前未从主机持续不断地接收写入的空分区或部分填满分区。分区从开放状态移动到关闭状态允许控制器208将资源重新分配给其他任务。这些任务可包括但不限于其他开放的分区、其他常规的非分区区域、或其他控制器需要。
在开放分区和关闭分区中,写入指针指向分区中位于ZSLBA和分区的最后LBA的末端之间的某个位置(即,WP>ZSLBA)。活动分区可根据由ZM进行的指定在开放和关闭状态之间切换,或者在将写入调度到分区时进行该切换。另外,ZM可重置活动分区以清除或擦除存储在分区中的数据,使得该分区切换回空状态。一旦活动分区已满,该分区就会切换到满的状态。满的分区是完全填充有数据的分区,并且没有用于写入数据的更多可用扇区或LBA(即,WP=ZSLBA+分区容量(ZCAP))。在满的分区中,写入指针指向该分区的可写入容量的末端。仍可执行满的分区中存储的数据的读取命令。
分区可具有任何总尺寸,诸如256MiB或512MiB。然而,每个分区的一小部分可能无法访问以将数据写入,但仍可被读取,诸如每个分区的存储奇偶数据的部分以及一个或多个被排除的块。例如,如果分区206的总尺寸为512MiB,那么ZCAP可能为470MiB,这是可用于将数据写入的容量,而42MiB不可用于写入数据。分区的分区容量(ZCAP)或可写入容量等于或小于总分区存储大小。存储设备200可在分区重置时确定每个分区的ZCAP。例如,控制器208或ZM可确定每个分区的ZCAP。当分区被重置时,存储设备200可确定该分区的ZCAP。
ZM可重置满的分区,从而调度对存储在该分区中的数据的擦除,使得该分区切换回空分区。在重置满的分区时,尽管该分区可能标记为可供写入的空分区,但该分区的数据可能不被立即清除。但是,在切换到开放和活动分区之前,必须擦除重置的分区。可在ZM重置和ZM开放之间的任何时间擦除分区。在重置分区时,存储设备200可确定重置分区的新ZCAP并更新分区元数据中的可写入ZCAP属性。脱机分区是无法将数据写入的分区。脱机分区可处于满的状态、空状态或处于部分满的状态而不处于活动状态。
由于重置分区会清除存储在分区中的所有数据或调度对存储在分区中的所有数据的擦除,因此消除了对各个块进行垃圾回收的需要,从而改善了存储设备200的整体垃圾回收过程。存储设备200可标记一个或多个块以用于擦除。当将要形成新分区并且存储设备200预计ZM开放时,则可擦除被标记用于擦除的所述一个或多个块。存储设备200还可在擦除块时决定和创建分区的物理支持。因此,一旦新分区被开放并且块被选择用于形成分区,该块将被擦除。此外,每次重置分区时,可选择分区206的LBA和写入指针210的新顺序,从而使分区206能够容忍不按顺序接收命令。可任选地关闭写入指针210,使得命令可被写入为命令指示的任何起始LBA。
重新参考图2A,当主机发送写入命令以向分区206写入数据时,控制器208拉入写入命令并将写入命令标识成对新打开分区206的写入。控制器208选择一组块以存储与新打开分区206的写入命令相关联的数据,并且新打开分区206切换到活动分区206。该写入命令可以是用于写入新数据的命令,或者是将有效数据移动到另一个分区以用于垃圾回收目的的命令。控制器208被配置为从由主机设备填充的提交队列中DMA读取新命令。
在刚切换到活动分区206的空分区206中,将数据指派给分区206和该分区206的始于ZSLBA的一组相关联顺序LBA,因为写入指针210将与ZSLBA相关联的逻辑块指示为第一可用逻辑块。该数据可被写入一个或多个块或针对分区206的物理位置已分配的NAND位置。在将与写入命令相关联的数据写入分区206之后,写入指针210被更新为指向可用于主机写入的下一个LBA(即,第一写入的完成点)。来自该主机写入命令的写入数据被顺序地编程到块中被选择用于分区的物理支持的下一个可用NAND位置中。
例如,控制器208可接收对第三分区206c的第一写入命令,或第一分区附加命令。主机按顺序识别分区206的哪个逻辑块用来写入与第一命令相关联的数据。然后将与第一命令相关联的数据写入第三分区206c中的如由写入指针210所指示的第一或下一个或多个可用LBA,并且写入指针210被推进或更新以指向可用于主机写入的下一个可用LBA(即,WP>0)。如果控制器208接收到对第三分区206c的第二写入命令,或第二分区附加命令,则与第二写入命令相关联的数据被写入第三分区206c中的由写入指针210识别的下一可用LBA。一旦将与第二命令相关联的数据写入第三分区206c,则写入指针210就再次推进或更新以指向可用于主机写入的下一个可用LBA。重置第三分区206c将写入指针210移动回到ZcSLBA(即,WP=0),并且该第三分区206c切换到空分区。
图3A示出了根据一个实施方案的常规压缩解决方案。主机诸如图1的主机设备104向存储设备302诸如图1的数据存储设备106发送写入命令,以在起始LBA处写入多个逻辑块(NLB)。写入命令可能需要多个缓冲器,诸如约4个数据缓冲器,以存储与写入命令相关联的数据。存储设备302的NVMe前端模块304接收NLB和起始LBA位置。在处理写入命令之后,存储设备302将与写入命令相关联的数据和缓冲器移动到硬件(HW)压缩模块306,在其中NLB被压缩。经压缩数据存储在介质308诸如图1的NVM 110中,并且存储在介质308中的经压缩数据的所得LBA被记录在闪存转换层(FTL)映射表310处。在经压缩数据被写入到介质308并且经压缩数据的位置被记录在FTL映射表310中之后,存储设备302向主机返回命令完成响应,指示写入命令已完成。
图3B示出了根据一个实施方案的利用ZNS协议的主机管理的压缩。主机诸如图1的主机设备104向存储设备302诸如图1的数据存储设备106发送写入命令,以在分区的LBA处写入多个逻辑块(NLB)。因为主机可命令将NLB放置到存储设备的存储器中的分区,诸如图1的NVM 110的第一分区,所以主机可具有写入到NVM的数据的记录。存储设备352的NVMe前端模块354接收NLB和分区的目标LBA。在处理写入命令之后,存储设备352将与写入命令相关联的数据和缓冲器移动到HW压缩模块356,在其中NLB被压缩。经压缩数据存储在介质358(诸如图1的NVM110)中。在经压缩数据被写入到介质358之后,存储设备352向主机返回命令完成响应,指示写入命令已完成。此外,将为被编程写入命令分配的LBA返回给主机,从而向主机通知经压缩数据在NVM中的位置。
图4示出了根据一个实施方案的从分块到多个粒的数据压缩。硬件压缩模块诸如图3A至图3B的HW压缩模块306、356对数据分块进行操作。数据分块是逻辑块的2的乘幂的倍数。例如,数据分块可包括约2个、约4个、约8个、约16个、约32个等逻辑块。每个逻辑块可具有约4KB的大小,其中对逻辑块的写入可与每个4KB逻辑块大小对准。此外,约4KB大小的每个逻辑块可被称为粒。根据压缩比,数据分块被压缩至整数个粒。例如,第一数据分块包括约16KB的数据或约4个粒。当最大压缩比为约4:1时,约16KB的数据可压缩至约4KB的数据或约1个粒。然而,4:1压缩可将16KB数据压缩成约1个粒、约2个粒或约3个粒。在一些实施方案中,压缩可以不工作,并且所得的“经压缩”数据大小等于压缩数据之前的数据大小。最大可实现压缩比可受到未压缩分块中粒数量的限制。
例如,在图4中,每个分块402、404、406、408包括4个逻辑块。如果压缩比为约4:1,则从分块尺寸到粒尺寸的逻辑块最大压缩为约4倍。压缩比可通过将分块尺寸除以粒尺寸来确定。例如,如果数据分块包括4个粒,每个粒的大小为4KB,则分块的大小为约16KB。最大可实现压缩比可计算为16KB/4KB或约4:1。第一分块402包括4个逻辑块A-D。在压缩之后,第一分块402的对应粒是包括2个粒的第一经压缩分块410。因此,虽然最大压缩比为4:1,但是对于分块402,压缩仅能够以2:1的比率压缩数据。同样,第二分块404从4个逻辑块或粒压缩到第二经压缩分块412中的3个逻辑块或粒,从而压缩比为4:3,而不是最大值4:1。第三分块406从4个逻辑块或粒压缩到第三经压缩分块414中的1个逻辑块或粒以实现完美压缩。从4个逻辑块或粒到1个逻辑块或粒的压缩可表示完全压缩分块或最佳情况。然而,如果数据根本无法压缩,则分块与相关粒之间的逻辑块数量保持相同。例如,第四分块408包括4个逻辑块或粒。在压缩第四分块408之后,4个逻辑块或粒保留在第四未压缩分块416中,指示与第四分块408相关联的4个逻辑块或粒未压缩。在本文的描述中,出于示例性目的,术语“逻辑块”可互换地称为“粒”。
图5A示出了根据一个实施方案的线性主机逻辑块地址范围。主机中的块序列包括具有逻辑块A-D的第一分块、具有逻辑块E-H的第二分块、具有逻辑块I-L的第三分块和具有逻辑块M-P的第四分块。主机将16个块附加到分区,诸如所述多个分区中的第一分区。当压缩引擎(诸如图1的控制器108的压缩引擎120)接收逻辑块时,压缩引擎相对于压缩比(诸如约4:1)压缩数据。在将所述多个分块的逻辑块压缩到整数个粒之后,经压缩数据被写入到第一分区。如本文所述,主机LBA是指主机用于与驱动器通信的逻辑块地址,并且介质LBA是指ZNS附加命令在NVM内放置数据的数据位置。主机LBA和介质LBA可具有诸如主机LBA=(介质LBA*常数)+经压缩块内的块的偏移(例如,相对于经压缩分块节段开始的粒数)的关系。
在图5A中,当压缩能够实现2:1压缩时,第一分块A-D被压缩到包括逻辑块0和1的第一经压缩分块节段。逻辑块0和1被存储在介质中并被记录为介质LBA 0和介质LBA 1。当第二分块E-H被压缩到第二经压缩分块节段时,由于压缩能够实现4:3压缩,因此得到的介质LBA是介质LBA 2、介质LBA 3和介质LBA 4。然而,由于最大可实现4:1压缩比,所以从主机的角度来看,LBA空间中的下一可用位置是主机LBA 8,因为主机认为第一粒节段利用LBA0-7(即,2个介质LBA乘以完美压缩4等于8个主机LBA)。第二分块在LBA空间的主机视图中利用主机LBA 8至LBA 19,因为主机认为第二粒节段利用12个LBA(即,3个介质LBA乘以完美压缩4等于12个主机LBA)。类似地,当第三分块I-L由于完美压缩比为4:1而被压缩到包括单个介质LBA 5的第三经压缩分块节段时,主机LBA 20-23被报告给主机,如第三分块I-L所使用的,因为主机认为第三粒节段利用4个LBA(即,1个介质LBA乘以完美压缩4等于4个主机LBA),尽管存储在介质中的数据记录有单个介质LBA。当分块不被压缩时,诸如第四分块M-P,所利用的介质LBA的数量与所利用的主机LBA的数量匹配。通过利用线性逻辑块地址范围,存储设备可向设备报告作为压缩比乘以存储设备的实际容量的容量。例如,如果最大压缩比为约4:1,并且存储设备的实际容量为约128GB,则报告的容量可为约512GB,或实际容量的4倍。
当接收到包括要读取的主机LBA的读取请求时,控制器利用主机LBA来读取和解压缩相关LBA。例如,如果主机LBA为22,则驱动器读取并解压缩介质LBA中的LBA 5。通过将主机LBA除以最大压缩比来找到LBA5,其中结果向下舍入。与主机LBA 22相关联的相关块然后被读取并发送到主机。
图5B示出了根据另一实施方案的非线性主机逻辑块地址范围。主机中的块序列包括具有逻辑块A-D的第一分块、具有逻辑块E-H的第二分块、具有逻辑块I-L的第三分块和具有逻辑块M-P的第四分块。主机将16个块附加到分区,诸如所述多个分区中的第一分区。当压缩引擎(诸如图1的控制器108的压缩引擎120)接收逻辑块时,压缩引擎相对于最大压缩比(诸如约4:1)压缩数据。在将所述多个分块的逻辑块压缩到整数个粒之后,经压缩数据被写入到第一分区。如本文所述,主机LBA是指主机用于与驱动器通信的逻辑块地址,并且介质LBA是指ZNS附加命令在NVM内放置数据的数据位置。主机LBA和介质LBA可具有诸如主机LBA=(介质LBA*常数)+经压缩块内的块的偏移(例如,相对于粒节段开始的粒数)的关系。
与图5A的线性逻辑块地址范围不同,图5B容量的主机逻辑块地址范围等于驱动器的容量。此外,代替线性主机逻辑块地址范围,图5B的主机逻辑块地址范围是阶梯式的。例如,当NLB等于4时,每个阶梯的每一行包括4个主机LBA。同样,当NLB等于8时,每个阶梯的每一行包括8个主机LBA。
在以下描述中,NLB等于4。在将经压缩数据附加到介质之后,主机将LBA的位置记录为主机LBA,而介质上的位置为介质LBA。例如,第一分块A-D被压缩并编程到第一介质LBA0和第二介质LBA 1。当主机存储数据的主机LBA时,第一阶梯包括主机LBA 0-3,其对应于在压缩数据之前逻辑块的数量。第二分块E-H从四个逻辑块或粒压缩到三个粒(即,三个逻辑块)并被编程到介质作为介质LBA 2-4。主机逻辑块地址范围的第二阶梯包括主机LBA 2-5,其中第二阶梯的主机LBA 2和主机LBA 3位于第一阶梯的主机LBA 2和主机LBA 3下方。因为第一分块被压缩到两个介质LBA,所以第二分块的主机LBA在第三主机LBA,LBA 2处开始。此外,主机LBA的每个阶梯的开始与介质LBA的每个粒节段的第一粒对应。
图6示出了根据一个实施方案的将标头附加到介质LBA。图6的各方面可类似于图5A至图5B所述的实施方案。在图6中,控制器(诸如图1的控制器108)在主机中的块序列已被附加之后将标头附接到介质LBA。标头包括信息,诸如介质LBA中每个经压缩分块的起始逻辑块。例如,第一分块A-D压缩到两个粒0和1,第二分块E-H压缩到三个粒2-4,第三分块I-L压缩到一个粒5,并且第四分块不压缩。标头包括指向介质LBA 0、介质LBA 2、介质LBA 5和介质LBA 6的指针。介质LBA 0与第一块A对应,介质LBA 2与第五块E对应,介质LBA 5与第九块I对应,并且介质LBA 6与第十三块M对应。
图7示出了根据一个实施方案的利用ZNS协议的主机管理的压缩的具体实施。主机(诸如图1的主机设备104)将一个或多个数据块附加到存储设备(诸如SSD)的一个或多个分区。当控制器(诸如图1的控制器108)接收所述一个或多个块时,压缩引擎(诸如图1的压缩引擎120)将数据从包括第一数量的逻辑块或粒的多个分块压缩到第二数量的逻辑块或粒。在压缩之后,控制器返回由ZNS附加命令返回的写入指针。写入指针对应于主机所看到的LBA的位置。例如,写入指针(wrptr)8可为主机LBA 8。然而,对应的介质LBA可以是介质LBA2。主机可利用写入指针来构建索引块,其中索引块包括表示写入指针的偏移值、数据的大小、以及对应于数据的密钥。主机的索引块作为索引附加到闪存介质(例如,图1的NVM110)的相关分区,其中索引可附接到经压缩数据结构的最后逻辑块(例如,介质LBA 9)。
图8示出了根据一个实施方案的用于将数据写入到非易失性存储器中的位置的方法800。在框802处,存储设备(诸如图1的数据存储设备106)的控制器(诸如图1的控制器108)从主机(诸如图1的主机104)接收一个或多个命令,以将数据写入到多个分区中的第一分区。在框804处,压缩引擎(诸如图1的压缩引擎120)利用最大压缩比来将与写入命令相关联的数据从包括第一数量的逻辑块或粒的第一分块压缩到包括多个粒的第二数量的逻辑块的第一经压缩分块。逻辑块或粒的第一数量可等于或大于逻辑块或粒的第二数量。
此外,压缩引擎可利用最大压缩比,诸如4:1比率。压缩比可确定从逻辑块的第一数量到逻辑块的第二数量的最大可能变化。例如,当压缩比为4:1时,则4个逻辑块可被压缩为1个逻辑块、2个逻辑块、3个逻辑块或不压缩,其中1个逻辑块表明4个逻辑块已相对于最大压缩比被完全压缩。同样,当压缩比为4:1并且8个逻辑块被压缩时,则可能的第二逻辑块的最小量为2个逻辑块。
在框806处,经压缩数据被写入到第一分区。在一个实施方案中,可在经压缩数据之前写入标头。标头可包括指向对应于每个经压缩分块的开始的粒的指针。写入到第一分区的每个粒与介质LBA对应,其中介质LBA表示粒在介质中的位置。在框808处,关于经压缩数据的信息(诸如每个粒的位置)被报告给主机。因为主机使用ZNS附加协议诸如图2A至图2B中所述的ZNS附加命令来操作,所以主机确认经压缩数据的位置为主机LBA。在一个实施方案中,每个分块的主机LBA范围大于经压缩数据的介质LBA范围。例如,主机LBA 22可对应于介质LBA 10。在一个实施方案中,主机LBA范围可以是非线性主机逻辑块存储空间,如图5B所述。在另一实施方案中,主机LBA范围可以是线性主机逻辑块存储空间,如图5A所述。
图9示出了根据一个实施方案的用于从非易失性存储器中的位置读取数据的方法900。在框902处,控制器(诸如图1的控制器108)从主机(诸如图1的主机104)接收对于存储在存储设备的NVM(诸如图1的存储设备106的NVM 110)中的经压缩数据的读取命令。在框904处,控制器确定与读取命令相关联的经压缩数据的位置。读取命令可包括待读取数据的主机LBA,诸如主机LBA 22。控制器可利用主机LBA和压缩引擎的压缩比来确定要读取的介质LBA。例如,主机LBA 22可对应于包括介质LBA10至介质LBA 13的一组粒。此外,控制器可利用附接到经压缩数据的标头来确定每个经压缩分块的起始粒。
在框906处,控制器读取与读取命令相关联的经压缩数据。因为数据被压缩成整数个粒,所以与读取命令相关联的数据可被放置在单独的相邻粒中。例如,与主机LBA 22相关联的数据可在介质LBA 11和介质LBA 12中。在框908处,控制器确定经压缩数据是否需要解压缩。因为压缩引擎可能不压缩数据分块,所以所得的多个粒与分块的逻辑块或粒相同。然而,如果在框908处需要对经压缩数据进行解压缩,则压缩引擎可在框910处对数据进行解压缩。在框912处,与读取命令相关联的经解压缩数据被递送到主机。
通过在压缩和编程数据时利用ZNS协议,存储设备可具有减少的元数据所需存储量、向和从存储介质(诸如NVM)的较高有效吞吐量、访问存储介质的较低功率需求以及增加的存储介质耐久性。
在一个实施方案中,一种数据存储设备包括:非易失性存储单元,其中非易失性存储单元的容量被分成多个分区;以及控制器,控制器耦接到非易失性存储单元。控制器包括压缩引擎。控制器被配置为从主机设备接收用于将数据写入到所述多个分区中的第一分区的一个或多个命令,其中每个命令包括一个或多个数据分块,利用压缩引擎将所述一个或多个数据分块中的一个或多个分块压缩为经压缩数据,其中所述一个或多个分块被压缩为一个或多个粒,并且将经压缩数据写入到第一分区中的第一位置。
控制器被进一步配置为向主机设备报告第一位置,其中向主机设备报告包括为主机设备提供大于经压缩数据的实际LBA范围的每个经压缩数据分块的主机递送逻辑块地址(LBA)范围。控制器被进一步配置为在向主机设备报告之后从主机设备接收索引。逻辑块地址范围是非线性逻辑块存储空间。控制器还被配置为将标头附加到经压缩数据。标头包括指示所述一个或多个分块的位置的元数据。压缩引擎能够以压缩比压缩数据,其中压缩比确定在压缩数据时从逻辑块的第一数量到逻辑块的第二数量的最大变化。
在另一实施方案中,一种数据存储设备包括:非易失性存储单元,其中非易失性存储单元的容量被分成多个分区;以及控制器,控制器耦接到非易失性存储单元。控制器包括压缩引擎。控制器被配置为从主机设备接收将数据写入到多个分区中的第一分区的一个或多个命令,从主机设备接收与所述一个或多个命令相关联的数据,将所接收的数据分组为分块,以压缩比利用压缩引擎将与所述一个或多个命令相关联的数据从分块压缩到整数个粒,将与一个或多个命令相关联的经压缩数据写入到第一分区中的第一位置,记录第一位置,其中第一位置包括介质逻辑块地址(LBA)和主机LBA,并且向主机设备报告主机LBA。
控制器被进一步配置为接收对于存储在第一分区中的经压缩数据的读取命令,确定与读取命令相关联的经压缩数据的第一位置,读取与读取命令相关联的数据,并且将数据递送到主机设备。读取命令包括主机LBA。第一位置的确定利用压缩比将主机LBA转换为介质LBA。介质LBA包括标头。标头存储每个经压缩分块的第一位置。控制器被进一步配置为确定经压缩数据是否将需要被解压缩,以及解压缩被确定需要解压缩的数据。
在另一实施方案中,一种数据存储设备包括:非易失性存储单元,其中非易失性存储单元的容量被分成多个分区。数据存储设备还包括:用于压缩从主机设备接收的数据的装置,其中用于压缩数据的装置耦接到非易失性存储单元;用于将经压缩数据写入到所述多个分区中的至少一个分区中的逻辑块地址(LBA)范围的装置,其中用于写入经压缩数据的装置耦接到非易失性存储单元;以及用于向主机设备报告主机LBA范围的装置,其中主机LBA范围不同于经压缩数据被写入的LBA范围,其中用于报告的装置耦接到非易失性存储单元。
数据存储设备还包括用于从主机设备接收索引并将索引写入到非易失性存储单元的装置。索引包括存储在非易失性存储装置中的经压缩数据的位置和大小。数据存储设备还包括用于将所述一个或多个分区的容量报告为大于所述容量的值的装置。数据存储设备还包括用于解压缩数据的装置,其中用于解压缩数据的装置耦接到非易失性存储单元。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种数据存储设备,包括:
非易失性存储单元,其中所述非易失性存储单元的容量被分成多个分区;和
控制器,所述控制器耦接到所述非易失性存储单元,所述控制器包括压缩引擎,其中所述控制器被配置为:
从主机设备接收用于将数据写入到所述多个分区中的第一分区的一个或多个命令,其中每个命令包括一个或多个数据分块;
利用所述压缩引擎将所述一个或多个数据分块中的一个或多个分块压缩为经压缩数据,其中所述一个或多个分块被压缩为一个或多个粒;以及
将所述经压缩数据写入到所述第一分区中的第一位置。
2.根据权利要求1所述的数据存储设备,其中所述控制器被进一步配置为:
向所述主机设备报告所述第一位置。
3.根据权利要求2所述的数据存储设备,其中向所述主机设备报告包括为所述主机设备提供比所述经压缩数据的实际逻辑块地址(LBA)范围大的每个经压缩数据分块的主机递送LBA范围。
4.根据权利要求3所述的数据存储设备,其中所述逻辑块地址范围是非线性逻辑块存储空间。
5.根据权利要求2所述的数据存储设备,其中所述控制器被进一步配置为在向所述主机设备报告之后从所述主机设备接收索引。
6.根据权利要求1所述的数据存储设备,其中所述控制器还被配置为将标头附加到所述经压缩数据。
7.根据权利要求6所述的数据存储设备,其中所述标头包括指示所述一个或多个分块的位置的元数据。
8.根据权利要求1所述的数据存储设备,其中所述压缩引擎能够以压缩比压缩数据,其中所述压缩比确定在压缩所述数据时从逻辑块的第一数量到逻辑块的第二数量的最大变化。
9.一种数据存储设备,包括:
非易失性存储单元,其中所述非易失性存储单元的容量被分成多个分区;和
控制器,所述控制器耦接到所述非易失性存储单元,所述控制器包括压缩引擎,其中所述控制器被配置为:
从主机设备接收用于将数据写入到多个分区中的第一分区的一个或多个命令;
从所述主机设备接收与所述一个或多个命令相关联的数据;
将所接收的数据分组为分块;
利用具有压缩比的所述压缩引擎来将与所述一个或多个命令相关联的所述数据从分块压缩到整数个粒;
将与一个或多个命令相关联的经压缩数据写入到所述第一分区中的第一位置;
记录所述第一位置,其中所述第一位置包括介质逻辑块地址(LBA)和主机LBA;以及
向所述主机设备报告所述主机LBA。
10.根据权利要求9所述的数据存储设备,其中所述控制器被进一步配置为:
接收对于存储在所述第一分区中的所述经压缩数据的读取命令;
确定与所述读取命令相关联的所述经压缩数据的所述第一位置;
读取与所述读取命令相关联的所述数据;以及
将所述数据递送到所述主机设备。
11.根据权利要求10所述的数据存储设备,其中所述读取命令包括所述主机LBA。
12.根据权利要求10所述的数据存储设备,其中确定所述第一位置利用所述压缩比将所述主机LBA转换为所述介质LBA。
13.根据权利要求12所述的数据存储设备,其中所述介质LBA包括标头。
14.根据权利要求13所述的数据存储设备,其中所述标头存储每个经压缩分块的所述第一位置。
15.根据权利要求9所述的数据存储设备,其中所述控制器被进一步配置为:
确定所述经压缩数据是否将需要被解压缩;以及
解压缩被确定需要解压缩的数据。
16.一种数据存储设备,包括:
非易失性存储单元,其中所述非易失性存储单元的容量被分成多个分区;
用于压缩从主机设备接收的数据的装置,其中用于压缩数据的所述装置耦接到所述非易失性存储单元;
用于将经压缩数据写入到所述多个分区中的至少一个分区中的逻辑块地址(LBA)范围的装置,其中用于写入经压缩数据的所述装置耦接到所述非易失性存储单元;和
用于向所述主机设备报告主机LBA范围的装置,其中所述主机LBA范围不同于写入所述经压缩数据的所述LBA范围,其中用于报告的所述装置耦接到所述非易失性存储单元。
17.根据权利要求16所述的数据存储设备,还包括用于从所述主机设备接收索引并将所述索引写入到所述非易失性存储单元的装置。
18.根据权利要求17所述的数据存储设备,其中所述索引包括存储在所述非易失性存储装置中的所述经压缩数据的位置和大小。
19.根据权利要求16所述的数据存储设备,还包括用于将所述一个或多个分区的容量报告为大于所述容量的值的装置。
20.根据权利要求16所述的数据存储设备,还包括用于解压缩数据的装置,其中用于解压缩数据的所述装置耦接到所述非易失性存储单元。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063066739P | 2020-08-17 | 2020-08-17 | |
US63/066,739 | 2020-08-17 | ||
US17/184,170 | 2021-02-24 | ||
US17/184,170 US11481115B2 (en) | 2020-08-17 | 2021-02-24 | Host-managed hardware compression with zoned namespaces |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114077547A true CN114077547A (zh) | 2022-02-22 |
Family
ID=80000667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110639618.2A Pending CN114077547A (zh) | 2020-08-17 | 2021-06-08 | 具有分区命名空间的主机管理的硬件压缩 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11481115B2 (zh) |
KR (1) | KR102656959B1 (zh) |
CN (1) | CN114077547A (zh) |
DE (1) | DE102021115500A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579051A (zh) * | 2022-02-25 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 识别硬盘读模式的方法以及装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220164146A1 (en) * | 2020-11-25 | 2022-05-26 | Hitachi, Ltd. | Storage system and control method for storage system |
US20240152455A1 (en) * | 2022-11-09 | 2024-05-09 | Lemon Inc. | Techniques for instance storage using segment-based storage |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6443794B2 (ja) * | 2013-08-16 | 2018-12-26 | エルエスアイ コーポレーション | ホストとコントローラとの間でパーティション化された変換レイヤ |
US10073647B2 (en) * | 2015-07-21 | 2018-09-11 | Seagate Technology Llc | Thinly provisioned disk drives with zone provisioning and compression in relation to zone granularity |
KR20200006379A (ko) * | 2018-07-10 | 2020-01-20 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작방법 |
KR102267477B1 (ko) * | 2020-02-20 | 2021-06-22 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
-
2021
- 2021-02-24 US US17/184,170 patent/US11481115B2/en active Active
- 2021-06-08 CN CN202110639618.2A patent/CN114077547A/zh active Pending
- 2021-06-15 DE DE102021115500.2A patent/DE102021115500A1/de active Pending
- 2021-06-24 KR KR1020210082726A patent/KR102656959B1/ko active IP Right Grant
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579051A (zh) * | 2022-02-25 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 识别硬盘读模式的方法以及装置 |
CN114579051B (zh) * | 2022-02-25 | 2024-04-23 | 阿里巴巴(中国)有限公司 | 识别硬盘读模式的方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
US11481115B2 (en) | 2022-10-25 |
KR102656959B1 (ko) | 2024-04-11 |
DE102021115500A1 (de) | 2022-02-17 |
US20220050599A1 (en) | 2022-02-17 |
KR20220022092A (ko) | 2022-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11640266B2 (en) | Rate limit on the transitions of zones to open | |
US11520660B2 (en) | Storage devices hiding parity swapping behavior | |
CN113196226A (zh) | 固态驱动器中的分区命名空间 | |
CN113179658A (zh) | 非顺序分区命名空间 | |
KR102656959B1 (ko) | 존 구획 네임스페이스를 갖는 호스트 관리 하드웨어 압축 | |
CN114730598A (zh) | 利用分区命名空间简缩ssd中的逻辑到物理表指针 | |
US20210374003A1 (en) | ZNS Parity Swapping to DRAM | |
US11520523B2 (en) | Data integrity protection of ZNS needs | |
CN114730290A (zh) | 将变化日志表移动至与分区对准 | |
CN117043753A (zh) | Zns设备中的不同写入优先级 | |
US11960753B2 (en) | Solution for super device imbalance in ZNS SSD | |
US11966618B2 (en) | Purposeful super device imbalance for ZNS SSD efficiency | |
US11537293B2 (en) | Wear leveling methods for zoned namespace solid state drive | |
US11960741B2 (en) | Implied streams | |
US11656984B2 (en) | Keeping zones open with intermediate padding | |
US11853565B2 (en) | Support higher number of active zones in ZNS SSD | |
WO2023101719A1 (en) | Full die recovery in zns ssd | |
WO2023027783A1 (en) | Super block allocation across super device in zns ssd | |
US11409459B2 (en) | Data parking for SSDs with zones | |
WO2023027784A1 (en) | Controlled imbalance in super block allocation in zns ssd |
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 |