CN114730598A - 利用分区命名空间简缩ssd中的逻辑到物理表指针 - Google Patents
利用分区命名空间简缩ssd中的逻辑到物理表指针 Download PDFInfo
- Publication number
- CN114730598A CN114730598A CN202080081458.8A CN202080081458A CN114730598A CN 114730598 A CN114730598 A CN 114730598A CN 202080081458 A CN202080081458 A CN 202080081458A CN 114730598 A CN114730598 A CN 114730598A
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- logical
- volatile memory
- erase block
- 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/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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
Abstract
本公开整体涉及操作存储设备的方法。该存储设备包括控制器、随机存取存储器(RAM)和NVM单元,其中该NVM单元中包括多个分区。该RAM单元包括多个分区的逻辑到物理地址(L2P)表。该L2P表包括与逻辑块地址(LBA)和数据存储在NVM中的物理位置相关联的指针。该L2P表包括每擦除块或分区一个指针。当接收到读取NVM内的数据的命令时,该控制器读取L2P表以确定LBA和数据的相关联指针。然后,该控制器可确定数据存储在哪个分区或擦除块中,并且计算字线、页面和页面地址的各种偏移以找到数据在NVM中的确切位置。
Description
相关申请的交叉引用
本申请要求2020年4月28日提交的美国申请号16/861,068的优先权,该申请全文以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及存储设备,诸如固态驱动器(SSD)。
相关领域的描述
存储设备诸如SSD可用于需要相对低延迟和高容量存储的应用中的计算机中。例如,SSD可表现出比硬盘驱动器(HDD)更低的延迟,尤其是对于随机读取和写入而言。通常,SSD的控制器接收将数据从主机设备读取或写入到存储器设备的命令。数据被读取并写入存储器设备中的一个或多个擦除块。当接收到写入命令时,与写入命令相关联的数据具有逻辑块地址(LBA)。存储在SSD的易失性存储器中的逻辑到物理地址(L2P)表将数据的一个或多个LBA关联到当写入数据时数据存储在SSD中的物理地址。诸如在垃圾回收操作期间每当从SSD擦除数据以指向标记值(例如,“空值”)时,就更新L2P表。
为了将数据的LBA关联到数据存储在SSD中的物理地址,L2P表包括指向或标识存储器设备中的每个位置、或指向指示数据无效的标记值的指针。因为数据按顺序写入存储器设备,所以对数据的任何修改需要读取-修改-写入过程,该过程可能是耗时且繁重的过程。在读取-修改-写入过程中,数据在约4KiB或8KiB区段中被读取,然后在约512B区段中被修改。所修改的数据按顺序写入存储器单元中的可用位置。尽管可擦除对应于所修改的数据的先前数据,但L2P表包括指向现有数据的物理位置的指针。由于存储设备通常包括非常有限量的易失性存储器,因此可用易失性存储器的大部分可与存储L2P表绑定。
因此,需要一种改进存储设备中的数据存储的新方法。
发明内容
本公开整体涉及操作存储设备的方法。该存储设备包括控制器、随机存取存储器(RAM)和NVM单元,其中该NVM单元中包括多个分区。该RAM单元包括多个分区的逻辑到物理地址(L2P)表。该L2P表包括与逻辑块地址(LBA)和数据存储在NVM中的物理位置相关联的指针。该L2P表包括每擦除块或分区一个指针。当接收到读取NVM内的数据的命令时,该控制器读取L2P表以确定LBA和数据的相关联指针。然后,该控制器可确定数据存储在哪个分区或擦除块中,并且计算字线、页面和页面地址的各种偏移以找到数据在NVM中的确切位置。
在一个实施方案中,存储设备包括非易失性存储单元,其中该非易失性存储单元的容量被分成多个分区。该非易失性存储单元包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括易失性存储器单元,其中该易失性存储器单元存储第一逻辑到物理地址表,并且第一逻辑到物理地址表将数据的逻辑块地址关联到数据存储在非易失性存储单元中的物理地址。该存储设备还包括控制器,该控制器耦接到非易失性存储单元和易失性存储器单元,其中该控制器被配置为:接收读取存储在非易失性存储单元中的第一数据的第一读取命令;并且读取第一逻辑到物理表中与第一数据相关联的第一指针以确定第一数据存储在多个分区中的第一分区的第一擦除块中。该控制器被进一步配置为:确定第一擦除块内的页面和字线偏移以找到第一数据,并且读取第一数据。
在另一个实施方案中,存储设备包括非易失性存储单元,其中该非易失性存储单元的容量被分成多个分区。该非易失性存储单元包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。这些擦除块中的每个擦除块包括多条字线和多个页面。该存储设备还包括易失性存储器单元,其中该易失性存储器单元存储第一逻辑到物理地址表,并且第一逻辑到物理地址表将数据的逻辑块地址关联到数据存储在非易失性存储单元中的物理地址。该存储设备还包括控制器,该控制器耦接到非易失性存储单元和易失性存储器单元,其中该控制器被配置为:将与一个或多个第一命令相关联的第一数据写入多个分区中的第一分区中的第一擦除块;并且更新存储在易失性存储器单元中的第一逻辑到物理地址表,其中更新第一逻辑到物理表包括将指针关联到第一分区和第一数据。该控制器被进一步配置为:接收读取第一数据的读取命令;标识第一数据的第一逻辑块地址;读取与第一分区相关联的指针以确定第一数据存储在第一分区内;计算擦除块的偏移以确定第一数据存储在第一擦除块中;并且计算第一擦除块内的页面和字线的偏移以找到第一数据。
在另一个实施方案中,存储设备包括非易失性存储单元,其中该非易失性存储单元的容量被分成多个分区。该非易失性存储单元包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括易失性存储器单元,其中该易失性存储器单元存储第一逻辑到物理地址表,并且第一逻辑到物理地址表将数据的逻辑块地址关联到数据存储在非易失性存储单元中的物理地址。该存储设备还包括:用于接收读取存储在非易失性存储单元中的第一数据的第一读取命令的装置;用于标识第一数据的第一逻辑块地址的装置;以及用于读取第一逻辑到物理表中与第一分区相关联的指针以确定第一数据存储在多个分区中的第一分区内的装置。该存储设备还包括:用于计算擦除块偏移以确定第一数据存储在第一分区的第一擦除块中的装置;以及用于计算第一擦除块内的页面和字线偏移以找到第一数据的装置。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据一个实施方案的存储系统的示意框图。
图2A示出了根据一个实施方案的在存储设备中利用的分区命名空间。
图2B示出了根据一个实施方案的图2A的存储设备的分区命名空间的状态图。
图3A是根据一个实施方案的分区的擦除块。
图3B示出了根据一个实施方案的包括一个或多个擦除块的分区。
图4是示出根据另一个实施方案的存储系统的示意框图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开整体涉及操作存储设备的方法。该存储设备包括控制器、随机存取存储器(RAM)和NVM单元,其中该NVM单元中包括多个分区。该RAM单元包括多个分区的逻辑到物理地址(L2P)表。该L2P表包括与逻辑块地址(LBA)和数据存储在NVM中的物理位置相关联的指针。该L2P表包括每擦除块或分区一个指针。当接收到读取NVM内的数据的命令时,该控制器读取L2P表以确定LBA和数据的相关联指针。然后,该控制器可确定数据存储在哪个分区或擦除块中,并且计算字线、页面和页面地址的各种偏移以找到数据在NVM中的确切位置。
图1是示出根据本公开的一种或多种技术的存储系统100的示意性框图,其中存储设备106可以用作主机设备104的存储设备。例如,主机设备104可利用包括在存储设备106中的存储单元110诸如非易失性存储器来存储和检索数据。例如,存储单元110可以是任何类型的非易失性存储器,诸如MRAM、NAND、NOR或HDD。在以下描述中,出于简化和示例性目的,存储单元110作为非易失性存储器(NVM)110进行参考。主机设备104包括主机DRAM 138。在一些示例中,存储系统100可以包括可作为存储阵列操作的多个存储设备,诸如存储设备106。例如,存储系统100可以包括多个存储设备106,其被配置作为共同用作主机设备104的大容量存储设备的廉价/独立磁盘(RAID)冗余阵列。
存储系统100包括主机设备104,该主机设备可以向一个或多个存储设备诸如存储设备106存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。
该存储设备106包括控制器108、非易失性存储器110(NVM 110)、电源111、易失性存储器112和接口114。控制器108包括分区管理120和缓冲区(未示出)。在一些示例中,为了清楚起见,存储设备106可以包括图1中未示出的附加部件。例如,存储设备106可以包括印刷电路板(PCB),存储设备106的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连存储设备106的部件等的导电迹线。在一些示例中,存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.5"数据存储设备(例如,HDD或SSD)、2.5"数据存储设备、1.8"数据存储设备、外围部件互连(PCI)、PCI扩展(PCI-X)、PCI Express(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、非易失性存储器标准(NVMe)、OpenCAPI、GenZ、高速缓存相干接口加速器(CCIX)、计算快速链接(CXL)、开放信道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闪存存储器设备擦除数据。
存储设备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、DDR5、LPDDR5等))。
各种类型的易失性存储器可与不同的接入特性一起使用。例如,DRAM 112可被布置用于较长突发访问以允许相同访问总线的改进带宽(BW)。另选地,DRAM 112可与较小访问一起使用,使得随机小访问可具有更好的时延。控制器108包括另外的任选SRAM和/或嵌入式MRAM(未示出)。嵌入式MRAM(未示出)是可在另一个实施方案中使用的另一个另选存储器。类似地,可出于不同的设计目的优化对MRAM(未示出)的访问,但SSD控制器108中嵌入式MRAM(未示出)的数量可能是成本敏感的。因此,有多少数据和哪些数据进入高级非易失性存储器和高级易失性存储器的选择将取决于系统权衡。
存储设备106包括控制器108,其可以管理存储设备106的一个或多个操作。例如,控制器108可以经由切换模式(TM)总线128管理从NVM110读取数据和/或将数据写入该NVM。控制器108可包括分区管理(ZM)120,以管理对分区的读取和写入,以及出于垃圾回收目的重定位有效数据往来于分区。分区元数据122可存储在分区管理器120或控制器108中。在一些实施方案中,当存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该NVM 110。在一些实施方案中,当存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送至NVM110之前将与写入命令相关联的数据暂时存储在缓冲区中。
图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)。由于可能的逻辑与物理活动之间的关系,主机侧分区活动可与分区驱动器中的介质活动更直接地相关。
在存储设备200中,ZNS 202是可被格式化成逻辑块使得容量被分成多个分区206a-206n(统称为分区206)的NVM的数量。NVM可以是图1的存储单元或NVM 110。分区206中的每个分区包括存储器单元或NVM 204的多个物理块或擦除块(未示出),并且该擦除块中的每个擦除块与多个逻辑块(未示出)相关联。分区206中的每个分区可具有与NVM或NAND器件的一个或多个擦除块的容量对准的尺寸。当控制器208从诸如主机设备(未示出)或主机设备的提交队列接收到命令时,控制器208可以从与ZNS 202的多个擦除块(EB)相关联的多个逻辑块读取数据以及将数据写入该多个逻辑块。该逻辑块中的每个逻辑块与唯一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 EB的典型非限制性要求。
当控制器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=0)处。一旦向分区调度写入或由主机发出分区开放命令后,空分区将切换到开放和活动分区。分区管理(ZM)命令可用于在分区开放和分区关闭状态(都是活动状态)之间移动分区。如果分区是活动的,则该分区包括可写入的开放块,并且可向主机提供活动状态下的推荐时间的描述。控制器208包括ZM。分区元数据可存储在ZM和/或控制器208中。
术语“写入”包括当用户数据尚未填充所有可用NAND位置时,在擦除块中的0个或更多个NAND位置和/或擦除块中的部分填充NAND位置上编程用户数据。术语“写入”还可包括由于内部驱动器处理需要而将分区移动至满的(因为错误位在开放的擦除块上更快地累积而导致的开放块数据保持问题),存储设备200由于资源限制(像太多开放分区要跟踪或者已发现的缺陷状态等等)而关闭或填充分区,或者主机设备因为诸如没有更多数据要发送给驱动器、计算机关闭、主机上的错误处理、用于跟踪的有限主机资源等等问题而关闭分区。
活动分区可以是开放的或关闭的。开放分区是已准备好写入并具有当前已分配资源的空分区或部分填满分区。利用写入命令或分区附加命令从主机设备接收的数据可被编程到当前未填充先前数据的开放的擦除块。已关闭分区是当前未从主机持续不断地接收写入的空分区或部分填满分区。分区从开放状态移动到关闭状态允许控制器308将资源重新分配给其他任务。这些任务可包括但不限于其他开放的分区、其他常规的非分区区域、或其他控制器需要。
在开放分区和关闭分区中,写入指针指向分区中位于ZSLBA和分区的最后LBA的末端之间的某个位置(即,WP>0)。活动分区可根据由ZM进行的指定在开放和关闭状态之间切换,或者在将写入调度到分区时进行该切换。另外,ZM可重置活动分区以清除或擦除存储在分区中的数据,使得该分区切换回空分区。一旦活动分区已满,该分区就会切换到满的状态。满的分区是完全填充有数据的分区,并且不具有用于写入数据的更多可用扇区或LBA(即,WP=分区容量(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选择一组EB以存储与新打开分区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示出了根据一个实施方案的分区的擦除块300。图3A为TLC存储器中的擦除块300的示例。未列出的其他类型的存储器单元可适用于实施方案,如上所讨论。擦除块300包括多条字线,诸如WL0 310、WL1 320、WL2 330和WLn 340。字母“n”表示适用于擦除块300内的最后一条字线的值。例如,擦除块300可包括256条字线。然而,擦除块300可包括多于256条字线或少于256条字线。
此外,每条字线包含多个页面,其中数字对应于存储器单元的类型。例如,SLC存储器具有每字线1个页面,MLC存储器具有每字线2个页面,TLC存储器具有每字线3个页面等等。在图3A中,擦除块300是TLC存储器,并且每条字线包括上页(诸如UP1 322)、中页(诸如MP1 324)和下页(诸如LP1 476),如WL1 470所示。每个页面诸如UP1 322包括可用于数据存储的四个NAND位置或四个时隙(例如,页面地址),诸如UP1 322的95、96、97和98。在以下描述中,包括256条字线的TLC存储器擦除块将用作示例;然而,这种示例仅是为了解释目的,并非旨在进行限制。
时隙可认为是数据码字、页面地址或页面偏移,其中数据码字大小为4,096B+错误检测码(EDC)+纠错码(ECC)。EDC可具有8B大小,并且ECC可具有128B大小。因此,数据码字大小为4,232B。如果NAND页面为17,000B,则四个数据码字(即,16,928B)可适合NAND页面。时隙是按页面地址到达任何数据码字的偏移。例如,上页UP1 322的第二数据码字96具有时隙偏移。然而,第二数据码字96可被寻址为上页UP1 322的第二时隙96。因此,出于示例性目的,在整个描述中,时隙可与数据码字互换使用。
由于原始主机数据的大小为4,096B或4KiB的事实,并且由于EDC和ECC部分是任选的并且大小可变的事实,用于到达每个码字的偏移可在本文中称为4KiB。然而,通常应理解,在本文讨论的示例中,4KiB的大小实际上为4,232B。在另外的示例中,NAND页面的大小可称为16KiB,但NAND页面更准确地描述为4,232B数据码字中的四个数据码字加上一些未使用空间。在该示例中,未使用空间是16,928B和17,000B之间的区域。
数据以一条或多条字线的大小(即,48KiB的倍数)按顺序写入非易失性存储单元的每个4,232B(即,4KiB)NAND位置。例如,数据按顺序写入上页UP1 322、中页MP1 324和下页LP1 326的每个4KiB NAND位置。此外,数据从字线按顺序写入字线,使得数据在将数据写入WL1 320之前写入WL0 310。如上所讨论,数据可在移动到下一可用擦除块之前写入自顶到底的擦除块(即,WL0到WL1到WL2等),或者数据可在写入每个擦除块中的下一可用字线(例如,WL1)之前写入每个擦除块中的一条字线(例如,WL0)。小于字线大小的写入命令保存在控制器缓冲区区域诸如专用于保存飞行中数据(即,不写入NAND的主机数据和/或奇偶校验数据)的临时SRAM位置中,直到写入命令的聚合大小等于或大于字线大小。
在一个实施方案中,数据的部分写入可以是‘模糊’写入或编程。部分写入可以是数据的第一遍编程。数据的第二遍编程可以是‘精细’写入,其中数据可从存储设备读取。例如,第一数据可‘模糊’写入WL1 320,第二数据‘模糊’写入WL2 330,然后第一数据精细重新写入WL1 320。数据可写入NAND位置或时隙,或者从NAND位置或大小为约4KiB至约16KiB的时隙读取。然而,擦除数据在擦除块级别进行,其中擦除块可包括256条字线、768个页面或3,072个NAND位置或3,072个时隙。在利用ZNS的存储设备中,仅当分区内的每个擦除块都被擦除时,才可擦除分区内的擦除块。换句话讲,擦除分区中的数据在分区级别进行。
图3B示出了根据一个实施方案的包括图3A的一个或多个擦除块300的分区350。分区350可以是图3A的ZNS 202的分区206。分区350可以是图1的耦接到控制器108的NVM 110的分区。存储设备(诸如图1的存储设备106)耦接到存储器设备(诸如图1的NVM 110),该存储器设备包括多个分区,每个分区包括多个管芯370。尽管在分区350中示出了32个管芯370,但可包括任何数量的管芯。每个管芯370(诸如D0 370a)包括一对平面360,诸如P0360a和P1 360b,并且每个平面360包括图3A的多个擦除块300,诸如EB0 300a。
通过从32个管芯370中的31个管芯的每个平面360中选择用于用户数据存储的擦除块300并将对应于擦除块300的逻辑块地址指派或关联到分区350来形成分区350。在一个实施方案中,分区350可包含待用于用户数据的31个管芯370、380b和待用于奇偶校验数据的1个管芯380a。例如,RAID 4利用1个管芯用于奇偶校验数据。在另一个实施方案中,分区350可包含待用于用户数据的30个管芯370和待用于奇偶校验数据的2个管芯380a、380b。例如,RAID 6利用2个管芯用于奇偶校验数据。此类实施方案并非旨在进行限制性或不进行限制,而是分区350的可能配置的示例。此外,可存在未列出或未描述的其他实施方案。
另外,存储用户数据的每个擦除块的一条字线的奇偶校验数据(例如,30或31个管芯的每个平面的每个擦除块的字线60)可存储在用户数据未存储在奇偶校验字线(例如,字线60)中的任何擦除块的对应奇偶校验字线(例如,字线60)中。在这种实施方案中,奇偶校验字线可存储在分区350内的多个不同擦除块或平面或管芯中。此外,当编程到非易失性存储单元时,代替管芯的两个平面,管芯的单个平面可被编程到非易失性存储单元。此外,虽然用于存储奇偶校验数据的管芯380a被示出为分区350内的最后一个管芯380a,但任何管芯370、380a、380b可用于存储奇偶校验数据。
在分区350内,奇偶校验管芯380a被划分用于管芯故障保护的奇偶校验或奇偶校验数据的存储。奇偶校验管芯380a可存储作为标准奇偶校验数据的p奇偶校验数据,或者可存储大小与p奇偶校验数据相同的q奇偶校验数据。然而,q奇偶校验数据是使用高斯数字在存储在每个EB的特定字线上的主机数据上计算的。奇偶校验数据包括可防止一个或多个管芯故障和/或一个或多个平面故障的擦除编码。擦除编码还可为平面损失故障提供一定量的保护。
在编码理论中,擦除码是在位擦除(而不是位错误)的假设下的前向纠错(FEC)码,该FEC码将k个符号的消息转换成n个符号的更长消息(码字),使得原始消息可从n个符号的子集恢复。各种擦除码类别的示例是旋风码(tornado code)、喷泉(即,无速率擦除)码(fountain code)、奇偶校验和Reed-Solomon码。例如,Reed-Solomon码是一组ECC,其中这些码能够检测和校正多个符号错误。
在一个实施方案中,由ECC解码器用来校正错误的纠错信息可以是指由编码器生成用于纠错码的冗余和/或经编码位。在各种实施方案中,纠错码可以是各种类型的纠错码中的一种,诸如块码、卷积码、Bose-Chaudhuri-Hocquenghem(BCH)码、低密度奇偶校验(LDPC)码、汉明码、Reed-Solomon码、涡轮码(turbo code)等。ECC也可包括EDC,其中EDC可以是标记值、逻辑地址、循环冗余码(CRC)或将遵循ECC解码的任何其他ECC误校正校验。误校正检验检测ECC是否已将值校正为无效结果。需要误校正校验是因为存在ECC解码为不正确的值、但码字内的EDC具有已知结果或值来检测这些误校正的情况。
此外,数据从第一分区中的擦除块按顺序写入擦除块,使得数据在将数据写入EB1300b之前写入EB0 300a。数据也从分区按顺序写入分区,使得数据在将数据写入第二分区之前从第一分区写入。分区350可具有任何可写入容量(ZCAP),诸如256MiB或512MiB,如上所讨论。多个分区中的每个分区(诸如分区350)具有相同的分区容量。当诸如图1的数据存储设备106的设备利用ZNS时,数据以分区容量大小被擦除。换句话讲,除非整个分区被擦除或移动到分区空状态(即,分区空),否则无法擦除单独的擦除块,如图2B所述。然而,如果数据存储设备106包括具有部分ZNS能力的非易失性存储单元,则数据在非易失性存储单元的具有ZNS能力的部分中以分区容量大小从数据存储设备106中擦除。数据可以擦除块大小从无ZNS能力的非易失性存储单元擦除。
此外,数据存储在NVM(诸如图1的NVM 110)的支持ZNS的部分中的位置被记录在第一逻辑到物理(L2P)表中作为易失性存储器单元(诸如易失性存储器单元112)中的LBA。数据存储在NVM(诸如图1的NVM 110)的不支持ZNS的部分中的位置被记录在第二L2P表中作为易失性存储器单元(诸如易失性存储器单元112)中的LBA。易失性存储器单元112可以是DRAM单元。此外,NVM 110包括与易失性存储器单元112的第一L2P表匹配的第一L2P表和与易失性存储器单元112的第二L2P表匹配的第二L2P表。更新NVM 110中的L2P表以匹配易失性存储器单元112的L2P表。
L2P表包括指向数据在NVM 110内的每个物理位置的指针。参考图3A,在常规或非ZNS存储设备中,指针与每个NAND位置或每个时隙(诸如MP1 324的时隙99、时隙100、时隙101和时隙102)相关联。数据的物理位置映射在逻辑阵列中,使得指针地址阵列包括从管芯映射到NAND位置的位置。在擦除块中,指针总数如下计算:256个WL*3个页面/WL*4个时隙/页面*1个指针/时隙=3,072个指针。在容量包括62个擦除块的第一分区内,可存在190,464个指针(即,3,072个指针/擦除块*62个擦除块=190,464个指针)。每个指针包括利用DRAM112和NVM 110的可用存储的一定量的数据。
通过合并指针,DRAM 112中的更多存储器可以是可用的,因为DRAM 112能够存储较小的L2P表。例如,在常规或非ZNS存储设备中,上页(诸如UP1 322)包括与4个时隙或4个NAND位置相关联的4个指针。相反,在利用ZNS的存储设备中,如果指针仅与MP1 324中的第一NAND位置或第一时隙99相关联,则页面的指针数量减少了3,减少至1。通过利用指向页面的第一时隙或第一NAND位置的指针,指针与页面的起始相关联。为了访问MP1 324中的第二、第三或第四时隙或第二、第三或第四NAND位置,计算并利用偏移。例如,MP1 324的第二时隙或第二NAND位置100在偏移为1的情况下利用指向MP1 324的第一时隙或第一NAND位置时隙99的指针。MP1 324的第三时隙或第三NAND位置100在偏移为2的情况下利用指向MP1324的第一时隙或第一NAND位置时隙99的指针。MP1 324的第四时隙或第四NAND位置100在偏移为3的情况下利用指向MP1 324的第一时隙或第一NAND位置时隙99的指针。
此外,当由于接收到诸如读取存储在第四时隙102中的数据的第一读取命令而搜索NAND位置或时隙时,控制器108利用L2P表来找到与待读取的数据的物理地址相关联的相关LBA的位置。由于指针合并到每个页面,因此指针可引用UP1 322的时隙95、MP1 324的时隙99或LP1 326的时隙103。当控制器108搜索与时隙102相关联的LBA时,控制器108将确定针对MP1 324的时隙99的指针太低并且针对LP1 326的时隙103的指针太高。因此,控制器108确定待读取的数据的LBA在时隙99和时隙103之间(例如,在MP1 324内)。然后,控制器108利用与MP1 324的时隙99相关联的指针并且结合NAND位置时隙偏移3来获得与针对存储在MP1 324的第四时隙102中的数据的第一读取命令相关联的目标LBA。
指针可进一步合并以结合字线的页面。例如,上页(诸如UP1 322、中页(诸如MP1324)和下页(诸如326LP1)各自包括因如先前所述合并NAND时隙产生的指向页面的第一时隙或第一NAND位置(即,页面的起始)的指针。各自与页面相关联的三个指针可合并为指向字线的起始(诸如UP1 322的时隙95)的一个指针。为了引用中页,在页面偏移为1的情况下利用与上页相关联的指针。同样,为了引用下页,在页面偏移为2的情况下利用与上页相关联的指针。因此,每条字线将具有可用于在字线的页面中的任一个页面中和页面的NAND位置或时隙中的任一者中读取数据的一个指针。
此外,当由于接收到诸如读取存储在中页MP1 324的第四时隙102中的数据的第一读取命令而搜索字线的页面时,控制器108利用L2P表来找到与待读取的数据的物理地址相关联的相关LBA的位置。由于指针合并到每条字线,因此指针可引用WL0 310、WL1 320、WL2330或WLn 340。当控制器108搜索关联在WL1 320内的LBA时,控制器108将确定针对WL1 320的指针太低并且针对WL2 330的指针太高。因此,控制器108确定待读取的数据的LBA在WL1320和WL2 330之间(例如,在WL1 320内)。然后,控制器108执行如上文所讨论的相同过程以首先确定数据存储在哪个页面中,然后通过计算各种偏移确定数据存储在哪个时隙或NAND位置中。然后,控制器108利用与WL1 320相关联的指针并且结合页面偏移1和时隙或NAND位置偏移3来获得与在中页MP1 324的第四时隙102中的第一读取命令相关联的目标LBA。
指针可再进一步合并以结合擦除块的字线。例如,WL0 310、WL1 320、WL2 330和WLn 340各自包括因如先前所述合并页面产生的指向字线的第一时隙或第一NAND位置(即,字线的起始)的指针。各自与字线相关联的指针可合并为指向擦除块的起始(诸如擦除块300的WL0 310)的一个指针。此外,为了引用第二字线WL1 320,在字线偏移为1的情况下利用与擦除块相关联的指针。同样,为了引用第三字线WL2 330,在字线偏移为2的情况下利用与擦除块相关联的指针。因此,每个擦除块将具有可用于在擦除块的字线中的任一个字线中读取数据的一个指针。
当由于接收到诸如读取存储在擦除块300的第三WL2 330中的数据的第一读取命令而搜索擦除块的字线时,控制器108利用L2P表来找到与待读取的数据的物理地址相关联的相关LBA的位置。图3A的擦除块300可以是图3B的擦除块300a-300n中的任一个擦除块。由于指针合并到每个擦除块,因此指针可引用擦除块EB0 300a或另一个擦除块,诸如图3B的擦除块EB1 300b。
如果第一擦除块EB0 300a是第一分区350的第一擦除块并且第二擦除块EB1 300b是第一分区350的第二擦除块,则控制器108将确定针对第一擦除块EB0 300a的指针太低并且针对第二擦除块EB1 300b的指针太高。因此,控制器108确定待读取的数据的LBA在第一擦除块EB0 300a和第二擦除块EB1 300b之间(例如,在第一擦除块EB0 300a内)。然后,控制器108执行如上文所讨论的相同过程以首先确定数据存储在哪个字线中,然后确定数据存储在哪个页面中,并且然后通过计算各种偏移确定数据存储在哪个时隙或NAND位置中。控制器108利用与第一擦除块EB0 300a相关联的指针并且结合字线偏移2和适当的页面和时隙或NAND位置偏移来获得与针对第三字线WL2 330的第一读取命令相关联的目标LBA。
在一个实施方案中,如果分区的每个擦除块在平面中具有相同的地址(即,分区的每个管芯的每个平面的第三擦除块),则指针还可进一步合并以结合分区的擦除块。例如,第一擦除块300a、第二擦除块300b、第三擦除块300c和第四擦除块300n各自包括因如先前所述合并字线产生的指向擦除块的第一时隙或第一NAND位置(即,擦除块的起始)的指针。在一些实施方案中,各自与擦除块相关联的指针可合并为指向分区(诸如第一分区350和第二分区(未示出))的第一物理位置或起始物理位置(即,分区的第一擦除块、或分区的第一擦除块的第一NAND位置或第一时隙)的一个指针。换句话讲,由于分区包括一系列顺序LBA,因此每个分区可与指向或指示分区内的第一或起始物理位置的一个指针相关联。此外,为了引用第二擦除块EB1 300b,在擦除块偏移为1的情况下利用与擦除块相关联的指针。同样,为了引用第三擦除块EB2 300c,在擦除块偏移为2的情况下利用与擦除块相关联的指针。
当由于接收到诸如读取存储在第一分区350的第二擦除块EB1 300b中的数据的第一读取命令而搜索分区的擦除块时,控制器108利用L2P表来找到与待读取的数据的物理地址相关联的相关LBA的位置。由于指针合并到每个分区,因此指针可引用第一分区的第一或起始物理地址、第二分区的第一或起始物理地址等等。当控制器108搜索与第二擦除块EB1300b相关联的LBA时,控制器108将确定针对第一分区的第一或起始物理地址的指针太低并且针对第二分区的第一或起始物理地址的指针太高。因此,控制器108确定待读取的数据的LBA在第一分区和第二分区之间(例如,在第一分区350内)。
然后,控制器108执行如上文所讨论的相同过程以首先确定数据存储在哪个擦除块中,然后确定数据存储在哪个字线中,然后确定数据存储在哪个页面中,并且然后通过计算各种偏移确定数据存储在哪个时隙或NAND位置中。控制器108利用与第一分区350相关联的指针并且结合擦除块偏移1和适当的字线、页面和时隙或NAND位置偏移来获得与针对第一分区350的第二擦除块EB1 300b的第一读取命令相关联的目标LBA。因此,每个分区将具有可用于在分区的擦除块中的任一个擦除块中读取数据的一个指针。
通过将指针合并在针对ZNS配置的第一L2P表中,针对分区的指针的量可从包括62个擦除块的每分区约190,464个指针的值减少至远小于约190,464个指针的值。第一L2P表可关联每分区一个指针,使得第一分区的第一或起始物理地址与第一指针相关联,第二分区的第一或起始物理地址与第二指针相关联等等。可找到每个分区内的数据,从而计算各种偏移。通过减少第一L2P表中的指针量,更多存储空间可用于存储其他数据而不是存储指针。此外,控制器108利用逻辑控制来基于指针和各种偏移确定数据的位置。
图4是示出根据另一个实施方案的存储系统400的示意框图。主机402可以是图1的主机104,SSD 406可以是图1的存储设备106,控制器408可以是图1的控制器108,第一RAM或易失性存储器410(即,第一RAM1存储器)诸如DRAM可以是图1的易失性存储器112,并且NVM404可以是图1的非易失性存储器110。在以下描述中,出于简化和示例性目的,第一易失性存储器112可作为DRAM存储器进行参考。
NVM 404包括ZNS区段440和非ZNS区段448。ZNS区段440可包括任何数量的分区,诸如第一分区442、第二分区444和第n分区446。ZNS区段440可包括不同大小或容量的分区。例如,第一分区442、第二分区444和第三分区446可具有第一大小或容量,而第四分区460、第五分区462和第六分区464具有不同于第一大小或容量的第二大小或容量。DRAM 410包括一个或多个第一ZNS L2P表(所示的第一ZNS L2P表420)和一个或多个非ZNS L2P表428。第一ZNS L2P表420包括指向每个分区的第一或起始物理地址的指针,使得指针与每个分区起始LBA(ZSLBA)相关联。ZSLBA可以是Z0SLBA 422、Z1SLBA 424或ZNSLBA 426,其中“N”为整数。DRAM 410还可包括一个或多个第二ZNS L2P表(所示的第二L2P表430)。第二ZNS L2P表430包括指向每个分区内的每个擦除块的指针,如下文进一步讨论。L2P表中的分区可以是任何顺序,使得第二分区在第一分区之前列出。
此外,NVM 404包括一个或多个ZNS L2P表(未示出)和一个或多个非ZNS L2P表(未示出)。周期性地更新NVM 404中的L2P表以匹配易失性存储器单元112的L2P表420、428、430。在一个实施方案中,控制器408可访问驻留在NVM 404中的L2P表的区段,而不是驻留在DRAM 410中的L2P表420、428、430。
DRAM 410可具有有限的数据存储空间,因为DRAM 410小于NVM 404。DRAM 410和NVM 404的数据存储空间可包括ZNS L2P表和ZNS区段、非ZNS L2P表和非ZNS区段、或ZNSL2P表、ZNS区段、非ZNS L2P表和非ZNS区段两者。如果DRAM 410或NVM 404的数据存储空间包括ZNS L2P表和ZNS区段440,则控制器408可合并每个ZNS L2P表中的指针(即,指向第一分区442的第一或起始物理地址的第一指针452、指向第二分区444的第一或起始物理地址的第二指针454和指向第n分区446的第一或起始物理地址的第n指针456)。然而,非ZNS L2P表被配置为在不具有ZNS的常规设置中操作。
在包括第一ZNS L2P表420和第二非ZNS L2P表428两者的DRAM 410中,第一ZNSL2P表420可包括所有分区减去三个分区,其中将在三个分区中的擦除块与第二非ZNS L2P表428相关联。第二非ZNS L2P表428可仅为DRAM 410容量的约1%,具有4K L页面大小。如果DRAM 410包括仅第二非ZNS L2P表428诸如常规易失性存储器操作,则容量可受到128K L页面大小的限制。列出的先前值并非旨在进行限制,而是提供可能的实施方案的示例。
DRAM 410可包括一个或多个ZNS L2P表,使得每个ZNS L2P表可以是指不同大小的分区。例如,第一ZNS L2P表420可以是指包括来自每个管芯的每个平面的两个擦除块的分区,而第二ZNS L2P表430可以是指包括来自每个管芯的每个平面的一个擦除块的分区。在一个实施方案中,指针指向每个分区的第一或起始物理地址。在另一个实施方案中,指针指向分区的每个擦除块。例如,在第一ZNS L2P表420中,指针452指向第一分区442的第一或起始物理地址,指针454表420指向第二分区444的第一或起始物理地址,并且指针456指向第n分区456的第一或起始物理地址。然而,在第二L2P表430中,指针472指向N+1分区460的第二擦除块EB1,并且指针474指向N+M分区464的第n擦除块EBN,其中“M”为整数。在其中指针指向分区的每个擦除块的实施方案中,仍然计算各种页面和时隙偏移,如上所讨论。
在一个实施方案中,DRAM 410包括第一ZNS L2P表420和第二非ZNS L2P表428两者。与一个或多个第一命令相关联的到NVM 404的第一写入数据由控制器接收,以将数据写入第一分区442的第一擦除块EB0的第三字线的第四页面的第四时隙或第四NAND位置。数据的物理位置存储为第一ZNS L2P表420中的LBA。由于LBA存储在第一ZNS L2P表420中,因此与第一分区442相关联的第一指针452与第一写入数据的位置相关联。
然而,当控制器接收到与到NVM 404的第一写入数据相关联的第一读取命令时,第一写入数据可由第一指针452引用到第一分区442,其中第一擦除块EB0的擦除块偏移为0,如上所述。第一写入数据可进一步由第一指针452引用到第一擦除块EB0,其中第三字线的字线偏移为2,如上所述。第一写入数据可由第一指针452引用到第三字线,其中第三页面的页面偏移为2,如上所述。第一写入数据可进一步由第一指针452引用到第三页面,其中第三页面的第四时隙或第四NAND位置的时隙或NAND位置偏移为3。
如果控制器接收到将第一数据写入NVM 404的一个或多个命令以将第一数据写入非ZNS区段内的第一擦除块的第三字线的第三页面的第四时隙或第四NAND位置,则在非ZNSL2P表428中存在针对数据的每个子位置的指针(例如,针对与第一写入数据相关联的每个NAND位置或时隙的指针或指向擦除块内的4K或8K数据大小的指针)。
为了在利用ZNS的存储设备的LBA存储在ZNS L2P表中的DRAM中节省空间,可将指针合并到每个子区段的第一值,诸如第一分区、第一擦除块、第一字线、第一页面和第一NAND位置或第一时隙。各种偏移可与和第一值相关联的指针一起使用,以确定数据存储在ZNS中的位置。指针的合并减少了专用于DRAM中的指针数据的存储器的量,这减少了对较大DRAM单元的需要或者允许其他数据存储在DRAM中。
在一个实施方案中,存储设备包括非易失性存储单元,其中该非易失性存储单元的容量被分成多个分区。该非易失性存储单元包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括易失性存储器单元,其中该易失性存储器单元存储第一逻辑到物理地址表,并且第一逻辑到物理地址表将数据的逻辑块地址关联到数据存储在非易失性存储单元中的物理地址。该存储设备还包括控制器,该控制器耦接到非易失性存储单元和易失性存储器单元,其中该控制器被配置为:接收读取存储在非易失性存储单元中的第一数据的第一读取命令;并且读取第一逻辑到物理表中与第一数据相关联的第一指针以确定第一数据存储在多个分区中的第一分区的第一擦除块中。该控制器被进一步配置为:确定第一擦除块内的页面和字线偏移以找到第一数据,并且读取第一数据。
易失性存储器单元存储第二逻辑到物理表。第一逻辑到物理表用于多个分区,并且第二逻辑到物理表用于非分区命名空间。控制器被配置为跟踪哪些擦除块在每个分区内。第一逻辑到物理表包括针对每个分区内的每个擦除块的指针。确定第一擦除块内的页面和字线偏移包括按页面大小和按字线大小扫描存储在第一逻辑到物理表中的逻辑块地址。每个分区的数据按顺序写入分区的每个擦除块。
在另一个实施方案中,存储设备包括非易失性存储单元,其中该非易失性存储单元的容量被分成多个分区。非易失性存储单元包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。这些擦除块中的每个擦除块包括多条字线和多个页面。该存储设备还包括易失性存储器单元,其中该易失性存储器单元存储第一逻辑到物理地址表,并且第一逻辑到物理地址表将数据的逻辑块地址关联到数据存储在非易失性存储单元中的物理地址。该存储设备还包括控制器,该控制器耦接到非易失性存储单元和易失性存储器单元,其中该控制器被配置为:将与一个或多个第一命令相关联的第一数据写入多个分区中的第一分区中的第一擦除块;并且更新存储在易失性存储器单元中的第一逻辑到物理地址表,其中更新第一逻辑到物理表包括将指针关联到第一分区和第一数据。该控制器被进一步配置为:接收读取第一数据的读取命令;标识第一数据的第一逻辑块地址;读取与第一分区相关联的指针以确定第一数据存储在第一分区内;计算擦除块的偏移以确定第一数据存储在第一擦除块中;并且计算第一擦除块内的页面和字线的偏移以找到第一数据。
控制器被进一步配置为:按顺序将与一个或多个第二命令相关联的第二数据写入第一分区中的第二擦除块;更新存储在易失性存储器单元中的第一逻辑到物理地址表,其中更新逻辑到物理表包括将指针关联到第一分区和第二数据;并且标识第二数据的第二逻辑块地址。控制器还被配置为:读取与第一分区相关联的指针以确定第二数据存储在第一分区内;计算擦除块的偏移以确定第二数据存储在第二擦除块中;并且计算第二擦除块内的页面和字线偏移以找到第二数据。第一逻辑到物理表存储每分区一个指针。每个指针指向或指示每个分区的第一或起始物理地址。非易失性存储器还包括非分区命名空间。易失性存储器单元存储用于非分区命名空间的第二逻辑到物理地址表。计算擦除块偏移包括按擦除块大小扫描存储在第一逻辑到物理表中的逻辑块地址,并且其中计算第一擦除块内的页面和字线偏移包括按页面大小和按字线大小扫描存储在第一逻辑到物理表中的逻辑块地址。易失性存储器单元存储第三逻辑到物理表。第一逻辑到物理表包括针对第一分区和具有第一容量的一个或多个第一分区的指针,并且第三逻辑到物理表包括针对具有不同于第一容量的第二容量的一个或多个第二分区的指针。
在另一个实施方案中,存储设备包括非易失性存储单元,其中该非易失性存储单元的容量被分成多个分区。该非易失性存储单元包括多个管芯,并且该多个管芯中的每个管芯包括多个擦除块。该存储设备还包括易失性存储器单元,其中该易失性存储器单元存储第一逻辑到物理地址表,并且第一逻辑到物理地址表将数据的逻辑块地址关联到数据存储在非易失性存储单元中的物理地址。该存储设备还包括:用于接收读取存储在非易失性存储单元中的第一数据的第一读取命令的装置;用于标识第一数据的第一逻辑块地址的装置;以及用于读取第一逻辑到物理表中与第一分区相关联的指针以确定第一数据存储在多个分区中的第一分区内的装置。该存储设备还包括:用于计算擦除块偏移以确定第一数据存储在第一分区的第一擦除块中的装置;以及用于计算第一擦除块内的页面和字线偏移以找到第一数据的装置。
用于计算擦除块偏移的装置被配置为按擦除块大小扫描存储在第一逻辑到物理表中的逻辑块地址。用于计算页面和字线偏移的装置被配置为按页面大小和按字线大小扫描存储在第一逻辑到物理表中的逻辑块地址。数据按顺序写入每个分区。与第一分区相关联的指针指向或指示第一分区的第一或起始物理地址。非易失性存储器还包括非分区命名空间。易失性存储器单元存储用于非分区命名空间的第二逻辑到物理地址表。控制器被配置为跟踪哪些擦除块在每个分区内以及有多少逻辑块地址在每个擦除块内。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种存储设备,包括:
非易失性存储单元,其中所述非易失性存储单元的容量被分成多个分区,并且其中所述非易失性存储单元包括多个管芯,所述多个管芯中的每个管芯包括多个擦除块;
易失性存储器单元,其中所述易失性存储器单元存储第一逻辑到物理地址表,所述第一逻辑到物理地址表将数据的逻辑块地址关联到所述数据存储在所述非易失性存储单元中的物理地址;和
控制器,所述控制器耦接到所述非易失性存储单元和所述易失性存储器单元,其中所述控制器被配置为:
接收读取存储在所述非易失性存储单元中的第一数据的第一读取命令;
读取所述第一逻辑到物理表中与所述第一数据相关联的第一指针以确定所述第一数据存储在所述多个分区中的第一分区的第一擦除块中;
确定所述第一擦除块内的页面和字线偏移以找到所述第一数据;以及
读取所述第一数据。
2.根据权利要求1所述的存储设备,其中所述易失性存储器单元存储第二逻辑到物理表。
3.根据权利要求2所述的存储设备,其中所述第一逻辑到物理表用于所述多个分区,并且所述第二逻辑到物理表用于非分区命名空间。
4.根据权利要求1所述的存储设备,其中所述控制器被配置为跟踪哪些擦除块在每个分区内。
5.根据权利要求1所述的存储设备,其中所述第一逻辑到物理表包括针对每个分区内的每个擦除块的指针。
6.根据权利要求1所述的存储设备,其中确定所述第一擦除块内的所述页面和字线偏移包括按页面大小和按字线大小扫描存储在所述第一逻辑到物理表中的所述逻辑块地址。
7.根据权利要求1所述的存储设备,其中每个分区的数据按顺序写入所述分区的每个擦除块。
8.一种存储设备,包括:
非易失性存储单元,其中所述非易失性存储单元的容量被分成多个分区,并且其中所述非易失性存储单元包括多个管芯,所述多个管芯中的每个管芯包括多个擦除块,并且所述擦除块中的每个擦除块包括多条字线和多个页面;
易失性存储器单元,其中所述易失性存储器单元存储第一逻辑到物理地址表,所述第一逻辑到物理地址表将数据的逻辑块地址关联到所述数据存储在所述非易失性存储单元中的物理地址;和
控制器,所述控制器耦接到所述非易失性存储单元和所述易失性存储器单元,其中所述控制器被配置为:
将与一个或多个第一命令相关联的第一数据写入所述多个分区中的第一分区中的第一擦除块;
更新存储在所述易失性存储器单元中的所述第一逻辑到物理地址表,其中更新所述第一逻辑到物理表包括将指针关联到所述第一分区和所述第一数据;
接收读取所述第一数据的读取命令;
标识所述第一数据的第一逻辑块地址;
读取与所述第一分区相关联的所述指针以确定所述第一数据存储在所述第一分区内;
计算擦除块偏移以确定所述第一数据存储在所述第一擦除块中;以及
计算所述第一擦除块内的页面和字线偏移以找到所述第一数据。
9.根据权利要求8所述的存储设备,其中所述控制器被进一步配置为:
按顺序将与一个或多个第二命令相关联的第二数据写入所述第一分区中的第二擦除块;
更新存储在所述易失性存储器单元中的所述第一逻辑到物理地址表,其中更新所述逻辑到物理表包括将所述指针关联到所述第一分区和所述第二数据;
标识所述第二数据的第二逻辑块地址;
读取与所述第一分区相关联的所述指针以确定所述第二数据存储在所述第一分区内;
计算擦除块偏移以确定所述第二数据存储在所述第二擦除块中;以及
计算所述第二擦除块内的页面和字线偏移以找到所述第二数据。
10.根据权利要求8所述的存储设备,其中所述第一逻辑到物理表存储每分区一个指针,并且其中每个指针指向或指示每个分区的第一或起始物理地址。
11.根据权利要求8所述的存储设备,其中所述非易失性存储器还包括非分区命名空间,并且其中所述易失性存储器单元存储用于所述非分区命名空间的第二逻辑到物理地址表。
12.根据权利要求8所述的存储设备,其中计算所述擦除块偏移包括按擦除块大小扫描存储在所述第一逻辑到物理表中的所述逻辑块地址,并且其中计算所述第一擦除块内的所述页面和字线偏移包括按页面大小和按字线大小扫描存储在所述第一逻辑到物理表中的所述逻辑块地址。
13.根据权利要求8所述的存储设备,其中所述易失性存储器单元存储第三逻辑到物理表。
14.根据权利要求13所述的存储设备,其中所述第一逻辑到物理表包括针对所述第一分区和具有第一容量的一个或多个第一分区的指针,并且所述第三逻辑到物理表包括针对具有不同于所述第一容量的第二容量的一个或多个第二分区的指针。
15.一种存储设备,所述存储设备包括:
非易失性存储单元,其中所述非易失性存储单元的容量被分成多个分区,并且其中所述非易失性存储单元包括多个管芯,所述多个管芯中的每个管芯包括多个擦除块;
易失性存储器单元,其中所述易失性存储器单元存储第一逻辑到物理地址表,所述第一逻辑到物理地址表将数据的逻辑块地址关联到所述数据存储在所述非易失性存储单元中的物理地址;
用于接收读取存储在所述非易失性存储单元中的第一数据的第一读取命令的装置;
用于标识所述第一数据的第一逻辑块地址的装置;
用于读取所述第一逻辑到物理表中与所述多个分区中的第一分区相关联的指针以确定所述第一数据存储在所述多个分区中的第一分区内的装置;
用于计算擦除块偏移以确定所述第一数据存储在所述第一分区的第一擦除块中的装置;以及
用于计算所述第一擦除块内的页面和字线偏移以找到所述第一数据的装置。
16.根据权利要求15所述的存储设备,其中所述用于计算所述擦除块偏移的装置被配置为按擦除块大小扫描存储在所述第一逻辑到物理表中的所述逻辑块地址。
17.根据权利要求15所述的存储设备,其中所述用于计算所述页面和字线偏移的装置被配置为按页面大小和按字线大小扫描存储在所述第一逻辑到物理表中的所述逻辑块地址。
18.根据权利要求15所述的存储设备,其中与所述第一分区相关联的所述指针指向或指示所述第一分区的第一或起始物理地址。
19.根据权利要求15所述的存储设备,其中所述非易失性存储器还包括非分区命名空间,并且其中所述易失性存储器单元存储用于所述非分区命名空间的第二逻辑到物理地址表。
20.根据权利要求15所述的存储设备,其中所述控制器被配置为跟踪哪些擦除块在每个分区内以及有多少逻辑块地址在每个擦除块内。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/861,068 US11200162B2 (en) | 2020-04-28 | 2020-04-28 | Condensing logical to physical table pointers in SSDs utilizing zoned namespaces |
US16/861,068 | 2020-04-28 | ||
PCT/US2020/065159 WO2021221727A1 (en) | 2020-04-28 | 2020-12-15 | Condensing logical to physical table pointers in ssds utilizing zoned namespaces |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114730598A true CN114730598A (zh) | 2022-07-08 |
Family
ID=78222318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080081458.8A Pending CN114730598A (zh) | 2020-04-28 | 2020-12-15 | 利用分区命名空间简缩ssd中的逻辑到物理表指针 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11200162B2 (zh) |
CN (1) | CN114730598A (zh) |
DE (1) | DE112020005180T5 (zh) |
WO (1) | WO2021221727A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117075810A (zh) * | 2023-08-18 | 2023-11-17 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的数据管理方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220058224A (ko) * | 2020-10-30 | 2022-05-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법 |
KR20220060372A (ko) * | 2020-11-04 | 2022-05-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US20220318157A1 (en) * | 2021-04-01 | 2022-10-06 | Silicon Motion, Inc. | Control method of flash memory controller and associated flash memory controller and storage device |
US20220382668A1 (en) * | 2021-05-28 | 2022-12-01 | Advantest Corporation | Systems and methods for concurrent and automated testing of zoned namespace solid state drives |
TWI813362B (zh) * | 2022-06-30 | 2023-08-21 | 群聯電子股份有限公司 | 部分抹除管理方法、記憶體儲存裝置及記憶體控制電路單元 |
CN115273274A (zh) * | 2022-07-28 | 2022-11-01 | 中国第一汽车股份有限公司 | 数据记录方法、装置、电子设备及存储介质 |
US11921641B1 (en) | 2022-08-31 | 2024-03-05 | Western Digital Technologies, Inc. | Address translation for zoned namespace nonvolatile memory using a compacted logical-to-physical table |
CN117406933B (zh) * | 2023-12-12 | 2024-03-29 | 深圳大普微电子股份有限公司 | 固态硬盘数据处理方法、装置、电子设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005106673A1 (ja) | 2004-04-28 | 2005-11-10 | Matsushita Electric Industrial Co., Ltd. | 不揮発性記憶装置及びデータ書込み方法 |
US8219776B2 (en) * | 2009-09-23 | 2012-07-10 | Lsi Corporation | Logical-to-physical address translation for solid state disks |
US8612666B2 (en) * | 2009-06-30 | 2013-12-17 | Intel Corporation | Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory |
KR101861545B1 (ko) | 2012-01-02 | 2018-05-29 | 삼성전자주식회사 | 저장 장치의 데이터 관리 방법 |
US10133625B2 (en) | 2015-08-11 | 2018-11-20 | Western Digital Technologies, Inc. | Storing parity data separate from protected data |
CN111984441B (zh) * | 2019-05-21 | 2023-09-22 | 慧荣科技股份有限公司 | 瞬间断电回复处理方法及装置以及计算机可读取存储介质 |
-
2020
- 2020-04-28 US US16/861,068 patent/US11200162B2/en active Active
- 2020-12-15 CN CN202080081458.8A patent/CN114730598A/zh active Pending
- 2020-12-15 DE DE112020005180.3T patent/DE112020005180T5/de active Pending
- 2020-12-15 WO PCT/US2020/065159 patent/WO2021221727A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117075810A (zh) * | 2023-08-18 | 2023-11-17 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的数据管理方法 |
Also Published As
Publication number | Publication date |
---|---|
DE112020005180T5 (de) | 2022-09-22 |
US20210334203A1 (en) | 2021-10-28 |
WO2021221727A1 (en) | 2021-11-04 |
US11200162B2 (en) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11200162B2 (en) | Condensing logical to physical table pointers in SSDs utilizing zoned namespaces | |
US11640266B2 (en) | Rate limit on the transitions of zones to open | |
KR101405741B1 (ko) | 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작 | |
US11055176B1 (en) | Storage devices hiding parity swapping behavior | |
US20090327591A1 (en) | Slc-mlc combination flash storage device | |
US11500727B2 (en) | ZNS parity swapping to DRAM | |
US11520523B2 (en) | Data integrity protection of ZNS needs | |
US11436153B2 (en) | Moving change log tables to align to zones | |
US11537510B2 (en) | Storage devices having minimum write sizes of data | |
US11847337B2 (en) | Data parking for ZNS devices | |
US11656984B2 (en) | Keeping zones open with intermediate padding | |
US11294598B2 (en) | Storage devices having minimum write sizes of data | |
KR102656959B1 (ko) | 존 구획 네임스페이스를 갖는 호스트 관리 하드웨어 압축 | |
WO2023101719A1 (en) | Full die recovery in zns ssd | |
US20210333996A1 (en) | Data Parking for SSDs with Streams | |
US11561717B2 (en) | Data integrity protection of SSDs utilizing streams | |
CN116897341A (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 |