CN115437558A - 存储器系统中的对角页映射 - Google Patents
存储器系统中的对角页映射 Download PDFInfo
- Publication number
- CN115437558A CN115437558A CN202210625327.2A CN202210625327A CN115437558A CN 115437558 A CN115437558 A CN 115437558A CN 202210625327 A CN202210625327 A CN 202210625327A CN 115437558 A CN115437558 A CN 115437558A
- Authority
- CN
- China
- Prior art keywords
- page
- block
- logical unit
- data item
- stripe
- 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.)
- Withdrawn
Links
Images
Classifications
-
- 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
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- 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
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Library & Information Science (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及存储器系统中的对角页映射。接收多个主机数据项,包含第一主机数据项和第二主机数据项。所述第二主机数据项连续地跟在所述第一主机数据项之后。将所述第一主机数据项存储在所述存储器装置的第一逻辑单元的第一页中,其中所述第一页与第一页编号相关联。基于对应于所述存储器装置的每字线页数的偏移值而确定所述第二主机数据项的第二页编号。识别所述存储器装置的第二逻辑单元。将所述第二主机数据项存储在所述第二逻辑单元的第二页中,其中所述第二页由所述第二页编号标识,并且所述第一页和所述第二页与容错条带相关联。
Description
技术领域
本公开的实施例总体上涉及存储器子系统,且更确切地说,涉及存储器子系统中的对角页映射。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
发明内容
在一个方面,本申请提供一种系统,其包括:存储器装置;以及处理装置,其以操作方式与所述存储器装置耦合,用于执行包括以下的操作:接收多个主机数据项,包括第一主机数据项和第二主机数据项,所述第二主机数据项根据所述主机数据项接收到的次序而连续地跟在所述第一主机数据项之后;将所述第一主机数据项存储在所述存储器装置的第一逻辑单元的第一页中,其中所述第一页与第一页编号相关联;确定所述第二主机数据项的第二页编号,其中所述第二页编号基于对应于所述存储器装置的每字线页数的偏移值而确定;识别所述存储器装置的第二逻辑单元;以及将所述第二主机数据项存储在所述第二逻辑单元的第二页中,其中所述第二页由所述第二页编号标识,并且其中所述第一页和所述第二页与容错条带相关联。
在另一方面,本申请提供一种非暂时性计算机可读存储媒体,其包括指令,所述指令在由处理装置执行时使所述处理装置执行包括以下的操作:接收多个主机数据项,包括第一主机数据项和第二主机数据项,所述第二主机数据项根据所述主机数据项接收到的次序而连续地跟在所述第一主机数据项之后;将所述第一主机数据项存储在存储器装置的第一逻辑单元的第一页中,其中所述第一页与第一页编号相关联;确定所述第二主机数据项的第二页编号,其中所述第二页编号基于对应于所述存储器装置的每字线页数的偏移值而确定;识别所述存储器装置的第二逻辑单元;以及将所述第二主机数据项存储在所述第二逻辑单元的第二页中,其中所述第二页由所述第二页编号标识,其中所述第一页和所述第二页与容错条带相关联。
在另一方面,本申请提供一种方法,其包括:接收第一主机数据项;将所述第一主机数据项存储在存储器装置的第一逻辑单元的第一页中,其中所述第一页与容错条带相关联;接收第二主机数据项;基于所述第一页和页偏移,识别所述存储器装置的第二逻辑单元的第二页,其中所述第二页与所述容错条带相关联,并且所述第一页和所述第二页在所述存储器装置的不同字线处;以及将所述第二主机数据项存储在所述存储器装置的所述第二逻辑单元的所述第二页中。
附图说明
将根据下面给出的详细描述和本公开的各种实施例的附图更充分地理解本公开。然而,附图不应被视为将本公开限制为具体实施例,而是仅用于解释和理解。
图1示出根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2示意性地示出根据本公开的实施例的存储器装置的实例布局。
图3A示意性地示出根据本公开的实施例的存储器装置的实例对角页映射。
图3B示意性地示出根据本公开的实施例的跨越存储器装置的多个块的实例对角页映射。
图3C示意性地示出根据本公开的实施例的跨越存储器装置的多个块的实例对角页映射中的实例数据项。
图4示意性地示出根据本公开的实施例的跨越存储器装置的多个块的另一实例对角页映射。
图5是由根据本公开的一些实施例操作的存储器子系统控制器进行的对角页映射的实例方法的流程图。
图6是根据本公开的一些实施例操作的存储器子系统控制器实施对角页映射的实例方法的流程图。
图7是根据本公开的一些实施例操作的存储器子系统控制器跨越多个块实施对角页映射的实例方法的流程图。
图8是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
本公开的各方面是针对将容错条带的数据存储在基于存储器系统中的对角页映射的位置处。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的组合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如,存储数据的存储器装置)的存储器子系统。主机系统可以提供数据以存储在存储器子系统处并且可以请求从存储器子系统检索数据。
存储器子系统可包含高密度非易失性存储器装置,其中希望在没有电力供应到存储器装置的情况下保留数据。非易失性存储器装置的一个实例是与非(NAND)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置为一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面由一组物理块组成。每一块由一组页组成。每一页由一组存储器单元(“单元”)组成。单元为存储信息的电子电路。取决于单元类型,单元可以存储二进制信息的一或多个位,且具有与正存储的位数相关的各种逻辑状态。逻辑状态可由二进制值(例如“0”和“1”)或此类值的组合表示。
存储器装置可由以二维网格布置的位组成。将存储器单元蚀刻到呈列(下文也称为位线)和行(下文也称为字线)的阵列的硅晶片上。字线可指存储器装置的存储器单元的一或多个行。位线和字线的相交点构成存储器单元的地址。在下文中,块是指用于存储数据的存储器装置的单元,并且可包含存储器单元群组、字线群组、字线或单独的存储器单元。一或多个块可分组在一起以形成存储器装置的平面,以便允许在每一平面上进行并行操作。存储器装置可包含执行两个或更多个存储器平面的并行存储器页存取的电路系统。例如,存储器装置可包含用于存储器装置的每一平面的相应存取线驱动器电路和电源电路,以促进两个或更多个存储器平面的页的并行存取,包含不同页类型。
不同的存储器分配方案跟踪不同粒度的存储器,其中常见的存储器分配是针对超级块的,但是其它页集或超级页集可以在超级块以外的不同粒度上分配。超级块是一组数据块,这些数据块跨越以交错方式写入的多个裸片。在一些情况下,超级块跨越存储器装置内的所有(或至少一些)裸片。超级块可含有来自单个裸片的多个数据块,例如每个平面一个数据块。驱动器通常可以基于超级块或其它粒度的超级页来管理数据的擦除和编程。超级页可以是编程到多个裸片的页。超级页可以是存储器的最低可寻址单元。
各种存储器子系统可实施容错冗余方案,例如独立NAND的冗余阵列(RAIN),以用于错误检查和校正。容错冗余方案可将主机数据存储在页群组(本文称为容错条带)中。例如,冗余元数据页可存储在条带的页(例如,奇偶校验页)中,因此使得在条带的一个页失效的情况下能够重建数据。
存储器装置可包含通过字线分组的多个存储器单元阵列。特定字线处的存储器装置的故障可能导致存储于字线处的数据至少部分丢失。此外,导致特定字线的故障的缺陷可能进一步触发接近所述字线的其它字线的故障。因此,缺陷可能导致不同位置处(例如,不同字线处)容错条带的多个数据页丢失。如果相同容错条带的多个数据页位于相同字线或字线附近,则太多主机数据要素可能同时丢失,因此致使不可能基于可用冗余元数据重建丢失的主机数据要素。相应地,在存储器装置发生故障的情形中,在相同字线处或字线附近存储容错条带的数据页可能导致所述容错条带的数据丢失。
此外,不同字线可具有不同的编程时间,而不管这些字线是否有缺陷。例如,编程时间上的这种不一致可能是NAND存储器装置的一个特性。数据通常按字线次序写入块,因此,比其它块花费显著更多时间编程的字线可能会导致块的编程时间高于其它块的编程时间。块编程时间的不一致可能是不可取的,因为一些应用程序可能期望块编程时间一致。
本公开的各方面通过提供在对角条带中存储主机数据项的存储器子系统来解决以上和其它缺陷。例如,对角条带可包含存储器装置的每个逻辑单元上的页,并且每一页可与存储器装置的不同字线相关联。存储器子系统可以在页编号相差偏移值的页的连续逻辑单元上存储连续接收的主机数据项。使每个连续逻辑单元上的每个连续页的页编号以偏移值增加可产生页对角布置,因为条带的每一页的位置可在两个维度中(例如,跨越逻辑单元并跨越字线)改变。对角布置可呈逻辑视图,对角条带的页不一定在存储器装置上对角地布置。例如,偏移值可以是字线中的页数目。通过这种方式,条带的每个主机数据项可以存储在不同字线中。例如,每个逻辑单元可以是裸片。因此,在不同字线处存储条带的每一页可使每一页存储在条带的每一裸片上的不同物理位置处。
例如,如果存储器装置具有四个逻辑单元,那么对角条带可在每个逻辑单元上包含页。如果每个字线含有四个页,那么可以使用4个页的偏移值在对角条带中存储主机数据,其中每个连续逻辑单元上的每个连续主机数据项的页编号增加四。因此,如果逻辑单元编号为0、1、2和3,那么四个数据项在具有四个页的条带中的存储可以通过将四个数据项分别存储在相应逻辑单元0、1、2和3上的页0、4、8和12处来进行。
每个条带可包含最多阈值数目个页。例如,每个条带可在每个逻辑单元上包含页,在此情况下,可以存储在条带中的页数可对应于存储器装置中的逻辑单元的数目。在接收到主机数据项时,每个主机数据项可以存储在条带的页中。当条带全满(例如,主机数据项已经存储在条带的每一页中)时,可以形成新条带,并且主机数据项可以存储在新条带中直到它全满为止,以此类推。每个条带的页可以对角地布置,如上文所描述,并且每个新条带的页编号可以增加1页。因此,例如,相应地,第一条带可对应于逻辑单元0、1、2和3上的页0、4、8和12,第二条带可对应于页1、5、9和13。
存储器装置的页可存储在块中,并且每个块可具有每块存储最多阈值数目个页的容量。每个块可对应于一个逻辑单元,并且多个块可存储在每个逻辑单元上。例如,块A、B、C和D可分别存储在逻辑单元0、1、2和3上。每个块可具有存储16个页的容量。当块A全满时,额外页可以存储在逻辑单元0的第二块上,此块可被称为块E。类似地,逻辑单元1的第二块可以是块F,逻辑单元2的第二块可以是块G,逻辑单元3的第二块可以是块H。块A、B、C和D可形成第一水平超级块,且块E、F、G和H可形成第二水平超级块。因此,对角条带可存储在多个水平超级块上。作为实例,16条带可开始于块A(在页0-15处),第17条带可开始于块E(在页0处)。此外,因为条带对角地布置,所以开始于块A的一些条带可延伸到第二水平超级块上的块F、G和H中的一或多个上。例如,如果偏移值是4,那么开始于块A的页4的条带还可包含块B的页8、块D的页12和块H的页0(分别在字线1、2和3上)。块H的页0在字线0上,因此条带的每一页在不同字线上。
本公开的优点包含但不限于提高对存储器装置上不同裸片上相同位置可能出现的缺陷的容忍度。对角地存储条带,使条带的每个数据项位于每个逻辑单元(例如,裸片)上的不同字线位置,减少了条带的多个页受到每个逻辑单元上相同区域中发生的缺陷或其它异常影响的可能性。例如,字线可能存在阻止存储或检索数据的缺陷。该缺陷可能出现在多个逻辑单元的同一字线上。跨不同字线对角地存储条带可以提高容错技术的有效性,从而减轻此类缺陷的负面影响。如果条带的每一页存储在每个逻辑单元的不同字线上,那么可以使用可以校正条带的一页错误的错误校正技术来容忍每个逻辑单元的同一字线上的缺陷。
本公开的其它优点包含但不限于增加条带编程时间的一致性。一些逻辑单元(例如,裸片)可能具有某些字线,这些字线比其它字线花费更多的时间进行编程。例如,编程时间的这种差异可能是某些NAND存储器装置的一个特性。然而,在一些应用中,需要一致的编程时间。如果每个条带存储在单个字线上,那么存储在较慢字线上的条带的编程时间可能比存储在其它较快字线上的条带更长。如本文所述地跨越字线(例如,对角地)分布每个条带可以减少编程时间的差异,因为每个条带可包含来自较快字线和较慢字线的页。减少差异可以使存储操作具有更一致的时延。
图1示出根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或此类媒体或存储器装置的组合。
存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的组合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1示出耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到…”或“与…耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等连接。
主机系统120可包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110,例如以便将数据写入到存储器子系统110和从存储器子系统110读取数据。
主机系统120可以经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)等。物理主机接口可用以在主机系统120与存储器子系统110之间传输数据。在存储器子系统110通过物理主机接口(例如,PCIe总线)与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1示出存储器子系统110作为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器单元的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来进行位存储。另外,与许多基于快闪的存储器形成对比,交叉点非易失性存储器可进行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器装置130中的每一者可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如,多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC),可每单元存储多个位。在一些实施例中,存储器装置130中的每一者可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC、PLC或此类的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器单元可分组为可指代用于存储数据的存储器装置的逻辑单元的页。对于一些类型的存储器(例如,NAND),页可经分组以形成块。
虽然描述了例如非易失性存储器单元的3D交叉点阵列以及NAND类型快闪存储器(例如,2D NAND、3D NAND)的非易失性存储器组件,但是存储器装置130可以基于任何其它类型的非易失性存储器,例如,只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器,或电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或为简单起见,称为控制器115)可与存储器装置130通信以执行例如在存储器装置130处读取数据、写入数据或擦除数据之类的操作以及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器,或其组合。硬件可包含具有用以执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子系统控制器115可包含处理装置,所述处理装置包含配置成执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所示的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已示出为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
一般来说,存储器子系统控制器115可以从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令以实现对存储器装置130的所需存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115还可包含主机接口电路系统,以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取存储器装置130,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
在一些实施方案中,存储器子系统110可使用条带化方案,根据此方案,数据有效负载(例如,用户数据)使用存储器装置130(例如,NAND型快闪存储器装置)的多个裸片,使得有效负载在裸片子集中分布,同时剩余的一或多个裸片用于存储错误校正信息(例如,奇偶校验位)。因此,使用条带化方案跨越存储器装置的一组裸片分布的一组块在本文中称为“超级块”。
存储器子系统110还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路可从存储器子系统控制器115接收地址并对所述地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130进行媒体管理操作)。在一些实施例中,存储器子系统110为受管理存储器装置,其为具有裸片上的控制逻辑(例如,本地控制器132)和用于相同存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统110包含对角条带管理器113,其管理主机数据在对角条带中的存储。在一些实施方案中,存储器子系统控制器115包含对角条带管理器113的至少一部分。
在一些实施方案中,对角条带管理器113是主机系统110、应用程序或操作系统的一部分。在其它实施例中,本地媒体控制器135包含对角条带管理器113的至少一部分且配置成执行本文所述的功能。
对角条带管理器113可用以实施对角条带布局以在存储器装置130处存储主机数据。在接收到主机数据时,对角条带管理器113可对存储器装置的页进行编程以形成对角条带。对角条带管理器可通过将逻辑地址(例如,主机数据项的地址)映射到页在对角条带中的物理地址(例如,页编号、逻辑单元号和物理块编号)来确定编程哪些页。替代地或另外,对角条带管理器113可将页在“水平”条带(例如,在每个逻辑单元上具有相同页编号的条带)中的物理地址映射到页在对角条带中的物理地址,在此情况下,对角条带管理器113可用于转换页映射组件的输出以产生对角条带。例如,对角条带可包含存储器装置的每个逻辑单元上的页,并且各自可在存储器装置的不同字线上。存储器子系统可在页编号相差偏移值的页的连续逻辑单元上存储连续接收的主机数据项。使每个连续逻辑单元上的每个连续页的页编号以偏移值增加可产生页对角布置,因为条带的每一页的位置可在两个维度中(例如,跨越逻辑单元并跨越字线)改变。对角布置可呈逻辑视图,对角条带的页不一定在存储器装置上对角地布置。例如,偏移值可以是字线中的页数。通过这种方式,条带的每个主机数据项可以存储在不同字线中。因此,在不同字线处存储条带的每一页可使每一页存储在条带的每一逻辑单元(例如,裸片)上的不同物理位置处。
对角地存储条带,使条带的每个数据项位于每个逻辑单元上的不同字线位置处,可使得存储器子系统的容错增加。对角地存储条带可减少条带的多个页受到每个逻辑单元上相同区域中发生的缺陷或其它异常影响的可能性。此外,一些逻辑单元可能具有某些字线,这些字线比其它字线花费更多的时间进行编程。跨越字线对角地分布每个条带可以减少编程时间的差异,因为每个条带可包含来自较快字线和较慢字线的页。关于对角条带管理器113的操作的其它细节在下文描述。
图2示意性地示出根据本公开的实施例的存储器装置的实例布局200。如在本文上文中所提及以及由图2示意性地示出,主机数据可存储在存储器装置上,存储器装置可包含多个逻辑单元(也称为“LUN”或“裸片”)。每一逻辑单元可包含驻留在一个或多个平面上的多个块210。每一块可包含通过相应字线WLn-WLn+k分组的多个页220。每一块可包含多个子块SB0-SB3,并且每一子块可包含多个页。编程和/或擦除操作可同时在两个或更多个页上执行,例如,在每一页驻留在相应平面上的情况下。
多个块可逻辑上组合以形成超级块,所述超级块包含来自每一逻辑单元的每一平面的至少一个块。相对于存储器装置的编程操作可由超级块执行,即,通过在将主机数据写入到一个超级块的页之后将主机数据写入到另一超级块的页。
存储器子系统控制器可通过在将主机数据写入到一个页之后将主机数据循序写入到另一页使得所述页分组为容错条带来以容错方式存储主机数据。每一容错条带可包含特定数目的数据页(即,存储主机数据的页)以及存储待用于错误检测及恢复的元数据的冗余元数据页。如在本文上文中所提及,冗余元数据可由奇偶校验元数据表示,使得可通过执行容错条带的相应数据位页的逐位互斥或(也称为“XOR”)运算来产生容错条带的元数据页的每一位。此冗余方案将在给定容错条带的不超过一个页为错误的情形中提供容错。可通过执行所有剩余数据页和元数据页的逐位互斥或来重建错误的页。
因为上文所描述的容错方案允许每容错条带不超过一个错误页,所以容错条带中可能不存在共享任何给定逻辑单元的单个平面内的一或多个邻近字线的页,这是因为给定字线上一个错误页的存在可指示相同字线上的其它页也是错误的。换句话说,来自逻辑单元的任何给定平面的任何给定字线的不超过一个页可存在于容错条带中。因此,在一些实施方案中,容错条带可包含来自存储器装置的每个逻辑单元或在每个逻辑单元包含多个平面的情况下来自存储器装置的每个逻辑单元的每个平面的页,使得利用容错条带的除一个以外其余所有页来存储主机数据,同时利用剩余页来存储冗余元数据。
图3A示意性地示出根据本公开的实施例的存储器装置的实例对角页映射300A。在图3A的说明性实例中,对角条带由页编号相差4个页的偏移值的页310形成。示出四个逻辑单元302A-D。例如,每个逻辑单元302可以是存储器装置中的裸片。示出四个块306A-D,其中一个块存储在每个逻辑单元302上。块306A命名为“块A”且具有相关联的块#0。块306B命名为“块B”且具有相关联的块#1。块306C命名为“块C”且具有相关联的2号块。块306D命名为“块D”且具有相关联的3号块。示出四个字线314A-314D。每个字线314包含每块306四个页310。因为每个字线具有四个块且存在四个字线,示出了每块306 16个页。每个块306的页编号为页0到页15。字线0的页编号为页0到页3。每个块具有相同页编号,因此特定页可由其页编号和块名称(或块编号)标识。对角条带可以是一组两个或更多个页,其中至少两个页与不同字线相关联。对角条带还可称为容错条带。对角页映射可包含一或多个对角条带。对角页映射还可称为容错页映射。
图3A中所示的对角条带包含四个页310,其中每个页在不同字线314上。页310包含第一页310A(块A的页0)、第二页310B(块B的页4)、第三页310C(块C的页8)和第四页310D(块D的页12)。条带开始于块A的页0,并且条带的每个后续页的页编号增加4个页的偏移值。此外,主机数据项存储在每一页310中。主机数据项#0存储在页310A中,主机数据项#1存储在页310B中,主机数据项#2存储在页310C中,且主机数据项#3存储在页310D中。容错条带的每一页310在不同字线314上。第一页310A在字线#0 314A上,第二页310B在字线#1 314B上,第三页310C在字线#2 314C上,且第四页310D在字线#3 314D上。在图3的说明性实例中,每字线页数是4。因此,可以使用偏移值4或4的整数倍数(例如,8、12、……)将条带的每一页放置在不同字线上。
在图3A的说明性实例中逻辑单元、页、字线和容错条带的数目及偏移值是出于说明目的而选择的,且不具有限制性;其它实施方案可使用各种其它数目的逻辑单元、页和容错条带及其它偏移值。尽管在图3A中未示出,但是每个逻辑单元的页可位于每个逻辑单元的两个或更多个平面上。
在图3A的说明性实例中,容错条带是存储装置中编程的第一条带。条带的页310A、310B、310C、310D可基本上同时编程。条带开始于块A的页0,并继续到第二页,其为块B的页4。因此,块B的页0-3未使用。如果存储器装置需要块的每一页都被编程有数据,那么在编程页4(以及块B的其它页,如果存储器装置需要的话)时可以使用任何合适的数据来编程块B的页0-3。类似地,因为条带的第三页是块C的页8,所以块C的页0-7未使用,并且因为条带的第四页是块D的页12,所以块D的页0-11未使用。在条带页之前的未使用页通常仅出现在逻辑单元302的第一块(例如,块B-D)上,因为随后编程的条带可以使用下一块(例如,块E-H)的每一页,如图3B所示。
图3B示意性地示出根据本公开的实施例的跨越存储器装置的多个块的实例对角页映射300B。在图3B的说明性实例中,示出32个容错条带。每个容错条带包含四个页。在每个容错条带中,连续块中的连续页的页编号以偏移值4增加,但页在不同水平超级块上的情况除外。第一水平超级块由块A-D形成。由块E-H形成的第二水平超级块在下文示出为第一水平超级块。第一水平超级块包含未使用页,如上文关于图3A所描述。然而,在第二水平超级块中,所有页都被使用。类似地,后续水平超级块(例如,包含块I-L的第三水平超级块)的页可被完全使用。
图3B的说明性实例中的每个条带用条带编号标记。因为页偏移值是4,所以每个条带的连续页分隔开4个页的逻辑距离。条带0类似于上文关于图3A所描述的条带。条带0已被编程有从主机接收到的前四个数据项,并且包含块A的页0、块B的页4、块C的页8和块D的页12。条带0的每一页包含所述前四个数据项中的一个。第四到第八主机数据项存储在条带1中,此条带示出为在逻辑上位于条带0下方(但是页的物理布局不必与所示逻辑布局相同)。条带1开始于块A的第二页,此页是块A的页1,并且还包含块B的页5、块C的页9和块D的页13。条带1的每个后续页编号与条带1的先前页编号相差偏移值4。类似地,条带2开始于块A的页2,条带3开始于块A的页3。
在图3B的每个容错条带中,连续块中的连续页的页编号以偏移值4增加,但页在不同水平超级块上的情况除外。如果条带的两个页在不同水平超级块上,那么这两个页之间可存在4个页的逻辑距离(偏移值),但是页编号在第二水平超级块中开始于零,因此第一和第二页的页编号之间的数值差可小于4。
开始于块A的页4的条带4跨越到第二水平超级块上。尽管条带4的第二和第三页容纳在第一水平超级块上,但是第四页不容纳在块B的页8和块C的页12处。如果第四页的页编号通过向(第三块的)页编号12添加偏移值4来确定,那么结果是4+12=16,其大于最高页编号(换句话说,等于每块页数)。因此,条带4的第四页是块H的页0。块H是逻辑单元3(LUN 3)的第二块,并且在图3B中所示的第二水平超级块中,因此条带4的前三个页在第一水平超级块上,条带4的第四页在第二水平超级块上。类似地,条带5-15包含这两个水平超级块上的页。
条带15是在第一水平超级块上开始的最后一个条带。条带16在第二水平超级块上开始于块E的页0。条带16还包含块F上的页4、块G上的页8和块H上的页12。条带17-19容纳在第二水平超级块上。条带20-31跨越到未示出的第三水平超级块上。例如,条带20的第三页在块G的页12处,条带20的第四页在块L的页0(未示出)处,如由来自块G的页12的箭头指示。
在图3B的说明性实例中逻辑单元、页、字线、超级块和容错条带的数目及偏移值是出于说明目的而选择的,且不具有限制性;其它实施方案可使用各种其它数目的逻辑单元、页、字线、超级块和容错条带及其它偏移值。
图3C示意性地示出根据本公开的实施例的跨越存储器装置的多个块的实例对角页映射300C中的实例数据项。图3C的说明性实例示出存储在条带0-31的页中的主机数据项。每个数据项用编号标记并存储在存储器装置的页中。数据项编号可对应于数据项从主机接收到的次序。例如,在块A的页0中示出的数据项0在此实例中是从主机接收到的第一个项。在块B的页4中示出的数据项1、在块C的页8中示出的数据项2和在块D的页12中示出的数据项3分别是接收到的第二、第三和第四数据项。数据项0、1、2和3形成第一条带,其标记为条带0。每个条带包含四个主机数据项,具有四个连续项编号,这指示每个条带的四个主机数据项是连续地从主机接收到的。因为每个条带包含四个数据项,每个条带的第一数据项具有等于条带编号乘以四的项编号。
对角条带管理器113可产生图3C的说明性实例映射310C中所示的对角条带,从而使用偏移值确定每个接收到的数据项的页编号并将每个接收到的数据项存储在由针对数据项确定的页编号标识的页中的不同逻辑单元处。对角条带管理器113可按照某一顺序处理主机数据项,按照所述顺序确定每个主机数据项的页编号并存储每个主机数据项。在对角条带管理器113处理主机数据项时,在特定时间或迭代处理的特定主机数据项在本文中称为“当前数据项”,其中存储了当前数据项的特定页在本文中称为“当前页”。在当前页之前的页在本文中称为“先前页”。
因此,数据项可通过将数据项存储在每个逻辑单元的页中而存储在条带(“当前条带”)的每一页中,使得逻辑单元的每个对应页的页编号与逻辑单元的每个其它页的页编号至少相差偏移值(例如,邻近逻辑单元上的每对页编号至少相差偏移数,其中LUN 0和LUN 1是邻近逻辑单元的实例)。每个数据项与当前条带相关联,当前条带是包含其中存储了所述数据项的页的条带。
存储了每个数据项的页编号基于相对于先前页的偏移而确定。例如,当前页编号可设置为先前页编号加偏移值。当页已存储在存储器装置中的每个逻辑单元中时,当前条带可以关闭。当当前条带关闭时,新条带可以开启。
对角条带管理器113可在逻辑单元的特定块中存储每个数据项。每个块最多可以有预定数目的页(例如,每块页数)的空间。当前条带的第一页的块编号可存储在命名为FirstBlock的变量中。开启新条带并且LUN 0的当前块中没有剩余空闲页时,可以将FirstBlock的值更新为LUN 0(或其它指定的第一逻辑单元)中的下一块编号。“当前块”可与每个逻辑单元相关联。逻辑单元的当前块可具有对应于逻辑单元的第一块(例如,LUN 0的块A)的初始值,并且在逻辑单元的当前块中没有剩余可用页时(例如,当数据项已经存储在逻辑单元的当前块的每一页中时)可更新为对应于逻辑单元的下一块(例如,LUN 0的块E)。逻辑单元的下一块(例如,块E)可与当前块(例如,块A)在不同水平超级块上。因此,在实例映射310C中,块A在包含块A-D的第一超级块上,块E在包含块E-H的第二超级块上。
为了确定条带是否跨越水平超级块,对角条带管理器113可确定当前页编号+偏移是否等于(或大于)每块页数。如果是,那么当前数据项可以存储在逻辑单元的下一块上,并且下一块中的页编号可通过下一页编号=页编号+偏移模每块页数来确定。下一块可在下一水平超级块中。逻辑单元的在块编号b之后的下一块的块编号可通过向块编号b添加逻辑单元的数目来确定。
对角条带管理器113可确定新条带是否在不同块上(例如,在下一水平超级块上)开始,并相应地更新当前页编号和当前块编号。第一条带的第一数据项存储在第一逻辑单元的第一页处。例如,如图3C中所示,条带0的数据项0存储在LUN 0的块A的页0处。每个后续条带的第一页开始于第一逻辑单元的后续页。因此,例如,条带1的数据项4存储在LUN 0的块A的页1处。如果第一逻辑单元的单个块中容纳的数据项过多,那么可以将数据项存储在多个块中。如果第一逻辑单元的每一页都被一个数据项占用,那么下一条带从第一逻辑单元的下一块开始。也就是说,下一块的第一页存储在下一水平超级块中。例如,在数据项60存储在块A的条带15的页15中之后,块A中没有其它空间可用于存储另一数据项。因此,下一条带(条带16)开始于块E,其在图3C中所示的第二水平超级块中。条带16的第一数据项是数据项64,并存储在逻辑单元0中的块E的页0处。条带16的剩余三个数据项分别存储在相应逻辑单元1、2和3的块F、G和H处。
在图3C的说明性实例中逻辑单元、页、字线和容错条带的数目及偏移值是出于说明目的而选择的,且不具有限制性;其它实施方案可使用各种其它数目的逻辑单元、页、字线和容错条带及其它偏移值。
图4示意性地示出根据本公开的实施例的跨越存储器装置的多个块的另一实例对角页映射。图4的说明性实例类似于图3B的说明性实例,但是页偏移值在图4中是8(在图3B中是4)。在图4的说明性实例中,示出6个容错条带。为了清楚起见,图3B中省略了一些页,例如块A的页6-15。
在图4的每个容错条带中,连续块中的连续页的页编号以偏移值8增加,但页在不同水平超级块上的情况除外。如果条带的两个页在不同水平超级块上,那么这两个页之间可存在8个页的逻辑距离(偏移值),但是页编号在第二水平超级块中开始于零,因此第一和第二页的页编号之间的数值差可小于8。
在图4的说明性实例中,每个条带用条带编号标记。因为页偏移值是8,所以每个条带的连续页分隔开8个页的逻辑距离。条带0已被编程有从主机接收到的前四个数据项,并且包含块A的页0、块B的页8、块G的页0中(在第二水平超级块)和块H的页8(在第二水平超级块中)。条带0的每一页包含所述前四个数据项中的一个。第四到第八主机数据项存储在条带1中。条带1开始于块A的第二页,此页是块A的页1,并且还包含块B的页9、块G的页1和块H的页9。还示出另外四个条带,编号为2-5,遵循相同模式。在图4的说明性实例中逻辑单元、页、字线和容错条带的数目及偏移值是出于说明目的而选择的,且不具有限制性;其它实施方案可使用各种其它数目的逻辑单元、页和容错条带及其它偏移值。
图5是由根据本公开的一些实施例操作的存储器子系统控制器进行的对角页映射的实例方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施方案中,方法500由图1的对角条带管理器组件113执行。尽管以特定顺序或次序示出,但除非另外指定,否则过程的次序可以修改。因此,所示实施方案应理解为仅作为实例,并且所示过程可以不同次序执行,一些过程可并行执行。另外,一或多个过程在各种实施例中可以省略。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
在操作510处,处理装置接收多个主机数据项,包含第一主机数据项和第二主机数据项,所述第二主机数据项根据主机数据项接收到的次序而连续地跟在第一主机数据项之后。在操作520处,处理装置将第一主机数据项存储在存储器装置的第一逻辑单元的第一页中,其中第一页与第一页编号相关联。在操作530处,处理装置确定第二主机数据项的第二页编号,其中第二页编号基于对应于存储器装置的每字线页数的偏移值而确定。在操作540处,处理装置识别存储器装置的第二逻辑单元。在操作550处,处理装置将第二主机数据项存储在第二逻辑单元的第二页中,其中第二页由第二页编号标识,并且第一页和第二页与容错条带相关联。
图6是由根据本公开的一些实施例操作的存储器子系统控制器实施对角页映射的实例方法600的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施方案中,方法600由图1的对角条带管理器组件113执行。尽管以特定顺序或次序示出,但除非另外指定,否则过程的次序可以修改。因此,所示实施方案应理解为仅作为实例,并且所示过程可以不同次序执行,一些过程可并行执行。另外,一或多个过程在各种实施例中可以省略。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
在操作602处,处理装置开启存储器装置上的新条带并将表示当前页编号的变量“p”设置为初始值0,将变量“LUN”设置为初始值0。在操作602处,处理装置还将表示当前逻辑单元编号的变量“LUN”设置为0。可视需要使用其它初始值。在操作604处,处理装置从主机系统120接收主机数据项。主机数据项可以是将要存储在存储器装置上的数据。在操作606处,处理装置将接收到的主机数据项存储在由变量LUN标识的逻辑单元的页p处。在操作608处,处理装置通过将LUN的值设置为LUN+1来使LUN递增。在操作610处,处理装置将p的值设置为p+偏移,其中偏移是偏移值(例如,字线中的页数的整数倍数,例如4、8等等)。
在操作612处,处理装置确定LUN是否大于或等于NumLUNs,其中NumLUNs是存储器装置中的LUN数目(例如,4或其它值)。如果LUN小于NumLUNs,那么操作612使处理装置再次执行操作604和后续操作。如果LUN大于或等于NumLUNs,那么操作612使处理装置执行操作614。在操作614处,处理装置关闭当前开放的条带。在操作616处,处理装置确定是否存在更多主机数据可用于读取。如果是,那么操作616使处理装置再次执行操作602和后续操作。如果不存在更多主机数据可用于读取,那么方法600在操作616之后结束。
图7是由根据本公开的一些实施例操作的存储器子系统控制器跨越多个块实施对角页映射的实例方法的流程图700。方法700可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施方案中,方法700由图1的对角条带管理器组件113执行。尽管以特定顺序或次序示出,但除非另外指定,否则过程的次序可以修改。因此,所示实施方案应理解为仅作为实例,并且所示过程可以不同次序执行,一些过程可并行执行。另外,一或多个过程在各种实施例中可以省略。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。
在操作702处,处理装置将变量“FirstBlock”、“LowestPageOfStripe”和“LUN”设置为初始值。FirstBlock指示当前条带的第一页的块编号。例如,图3C的条带0的FirstBlock是0(块A),因为存储数据项0的条带的第一页在块A的页0处。LowestPageOfStripe指示当前条带的第一页的页编号。例如,图3C的条带0的LowestPageOfStripe是0,因为条带的第一页在块A的页0处。FirstBlock的初始值是0(块A),LowestPageOfStripe的初始值是0,且LUN的初始值是0。可视需要使用其它初始值。
在操作704处,处理装置开启新条带。条带可以是与冗余元数据相关联的容错条带。在操作706处,处理装置从主机系统120接收主机数据项。在操作708处,处理装置将表示当前页的变量“p”设置为LowestPageOfStripe的值。在操作710处,处理装置将表示当前块的变量“b”设置为FirstBlock的值。在操作712处,处理装置将接收到的主机数据项存储在逻辑单元LUN的块b的页p处。在操作714处,处理装置将LUN设置为LUN的值+1。
尽管未示出(为了图示清晰),但是如果在执行操作714时数据项已经存储在每个LUN(例如,LUN等于或大于NumLUNs)中的条带的页,那么处理装置可继续执行方法的操作726(例如,不执行操作716-724),因为不需要更新b和p的值。当前条带的每一页在此执行点已经处理。如果存在更多数据项要处理,那么在处理装置接着执行操作708和710时,b和p的值将变成对应于下一条带的第一页。因此,尽管未示出,但是在框714和716之间,处理装置可确定LUN是否等于(或大于)存储器装置中的LUN数目(NumLUNs),如果是,继续执行操作726。
在操作716处,处理装置将p设置为p+偏移以按偏移页数更改当前页,在所述当前页上存储条带中的下一数据项(如果有)。在操作718处,处理装置确定其中要存储另一数据项的LUN的块b中是否存在可用页。例如,操作718确定p是否等于(或大于)每块页数。如果是,处理装置可继续执行操作724。如果否,那么在操作720处,处理装置将b设置为逻辑单元LUN的下一块编号。例如,如果每个LUN都存在块编号(就像图3B的实例中的情况),下一块编号可以是b+NumLUNs。在操作722处,处理装置将p设置为p-每块页数。
在操作724处,处理装置确定数据项是否已经存储在每个LUN中的条带的页中。如果LUN等于或大于NumLUNs,那么数据项已经存储在每个LUN中的条带的页中。如果是,那么当前条带没有要存储的其它数据项。在操作726处,处理装置设置LUN=0,以准备存储另一条带。在操作728处,处理装置递增LowestPageofStread,它表示当前条带的第一页(除非当前块已满)。
在操作730处,处理装置确定LUN的块b中是否存在可用页(换句话说,当前块是否全满)。如果LUN的块b中不存在可用页,那么在操作732处,处理装置将FirstBlock设置为在逻辑单元0的FirstBlock之后的下一块编号。例如,下一块编号可以是FirstBlock+NumLUNs。在操作734处,处理装置将LowestPageOfStripe设置为0,因为页编号在下一块上从零重新开始。否则,如果在操作730处,处理装置确定LUN的块b中存在可用页,那么处理装置不执行操作732和734。
在操作736处,处理装置关闭当前开放的条带。操作736还可存储当前开放的条带的冗余元数据。例如,元数据可以存储在当前条带中的一个页(例如,最后一个页)中。如果元数据存储在每个条带的最后一个页中,那么在操作718和724处,处理装置可确定当仅有一个页可用(例如,LUN=LUN-1)时不存在可用页,并且操作736(或方法700的其它操作)可基于条带的页而产生冗余元数据,并将冗余元数据存储在条带的最后一个页中。在操作736之后,处理装置再次执行操作704。
图8示出计算机系统800的实例机器,所述实例机器内可执行用于使得所述机器执行本文中所论述的方法中的任何一或多种的一组指令。在一些实施例中,计算机系统800可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的对角条带管理器组件113的操作)。在替代实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中进行操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行将由所述机器采取的指定动作的一组指令的任何机器。此外,虽然示出了单个机器,但应认为术语“机器”还包含机器的任何集合,所述机器单独地或共同地执行一组(或多组)指令以执行本文中所论述的方法中的任何一或多种。
实例计算机系统800包含处理装置802、主存储器804(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或RDRAM等)、静态存储器808(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统818,它们经由总线830彼此通信。
处理装置802表示一或多个通用处理装置,例如微处理器、中央处理单元等等。更具体地说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置802还可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。处理装置802配置成执行用于执行本文中所论述的操作和步骤的指令826。计算机系统800可进一步包含网络接口装置812以经由网络820通信。
数据存储系统818可包含机器可读存储媒体824(也称为计算机可读媒体),其上存储有一或多组指令826或体现本文中所描述的方法或功能中的任何一或多种的软件。指令826还可在其由计算机系统800执行期间完全或至少部分地驻存在主存储器804内和/或处理装置802内,主存储器804和处理装置802也构成机器可读存储媒体。机器可读存储媒体824、数据存储系统818和/或主存储器804可对应于图1的存储器子系统110。
在一个实施例中,指令826包含用以实施对应于对角条带管理器组件(例如,图1的对角条带管理器组件113)的功能性的指令。虽然机器可读存储媒体824在实例实施例中展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储所述一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的一组指令且使机器执行本公开的任何一或多种方法的任何媒体。术语“机器可读存储媒体”应相应地被理解为包含(但不限于)固态存储器、光学媒体和磁性媒体。
已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在这里并且通常被认为是引起所要结果的操作的自洽序列。操作为要求对物理量进行物理操纵的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。主要出于常见使用的原因,有时将此些信号称为位、值、要素、符号、字符、项、数字等已证实是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便的标签。本公开可涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于既定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如(但不限于)任何类型的盘(包含软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示并不与任何特定计算机或其它设备在本质上相关。各种通用系统可根据本文中的教示与程序一起使用,或者可证明构造更专用的设备来执行所述方法是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。另外,不参考任何特定编程语言来描述本公开。应了解,可使用多种编程语言来实施本文中所描述的本公开的教示。
本公开可以提供为计算机程序产品或软件,其可以包含在其上存储有指令的机器可读媒体,所述指令可以用于编程计算机系统(或其它电子装置)以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考本公开的特定实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开做出各种修改。因此,说明书和图式应在说明性意义上而非限制性意义上看待。
Claims (20)
1.一种系统,其包括:
存储器装置;以及
处理装置,其以操作方式与所述存储器装置耦合,用于执行包括以下的操作:
接收多个主机数据项,包括第一主机数据项和第二主机数据项,所述第二主机数据项根据所述主机数据项接收到的次序而连续地跟在所述第一主机数据项之后;
将所述第一主机数据项存储在所述存储器装置的第一逻辑单元的第一页中,其中所述第一页与第一页编号相关联;
确定所述第二主机数据项的第二页编号,其中所述第二页编号基于对应于所述存储器装置的每字线页数的偏移值而确定;
识别所述存储器装置的第二逻辑单元;以及
将所述第二主机数据项存储在所述第二逻辑单元的第二页中,其中所述第二页由所述第二页编号标识,并且其中所述第一页和所述第二页与容错条带相关联。
2.根据权利要求1所述的系统,其中所述第二逻辑单元的所述第二页和所述第一逻辑单元的所述第一页与不同字线相关联。
3.根据权利要求1所述的系统,其中所述第一页在所述第一逻辑单元的第一块中,所述第一块与第一块编号相关联,并且确定所述第二主机数据项的所述第二页编号包括:
确定所述第二逻辑单元的第二块编号,
其中所述第二页编号在所述第二逻辑单元的第二块中,且所述第二块由所述第二块编号标识。
4.根据权利要求3所述的系统,其中确定所述第二逻辑单元的所述第二块编号包括:
确定其中要存储所述第二块的所述第二逻辑单元的当前块中是否存在可用页;
响应于确定所述第二逻辑单元的所述当前块中不存在可用页:
将所述第二块编号确定为在所述第二逻辑单元中的所述当前块的当前块编号之后的下一块编号,
确定所述第一页编号和所述偏移值的总和,以及
将所述第二页编号设置为所述总和与所述存储器装置的每块页数之间的差。
5.根据权利要求4所述的系统,其中确定其中要存储所述第二块的所述第二逻辑单元的所述当前块中是否存在可用页是基于所述第一页编号和所述偏移值的总和与所述存储器装置的每块页数的比较。
6.根据权利要求3所述的系统,其中确定所述第二主机数据项的所述第二页编号进一步包括:
确定数据项是否已经存储在所述存储器装置的每个逻辑单元中与所述容错条带相关联的页中;
响应于确定数据项已经存储在所述存储器装置的每个逻辑单元中与所述容错条带相关联的页中:
关闭所述容错条带,
开启所述容错条带,其中所述容错条带与标识其中存储有所述容错条带的第一页的逻辑单元的页的最低页编号相关联,以及
确定所述容错条带的所述最低页编号,
其中所述容错条带的第一页对应于所确定的最低页编号,其中所述第一页编号和所述第二页编号的后续值基于所述容错条带的所述最低页编号而确定。
7.根据权利要求6所述的系统,其中确定所述容错条带的所述最低页编号包括:
确定其中要存储所述第二块的所述第二逻辑单元的当前块中是否存在可用页;
响应于确定其中要存储所述第二块的所述第二逻辑单元的所述当前块中存在可用页,使所述容错条带的所述最低页编号递增;
响应于确定其中要存储所述第二块的所述第二逻辑单元的所述当前块中不存在可用页:
将所述第二块编号确定为在其中存储有所述容错条带的第一页的逻辑单元的当前块编号之后的下一块编号,以及
将所述容错条带的所述最低页编号设置为零。
8.根据权利要求7所述的系统,其中,其中存储有所述容错条带的第一页的所述逻辑单元是所述存储器装置的最低编号逻辑单元。
9.根据权利要求6所述的系统,其中确定数据项是否已经存储在所述存储器装置的每个逻辑单元中与所述容错条带相关联的页中包括比较逻辑单元计数器与所述存储器装置中的逻辑单元数目。
10.根据权利要求1所述的系统,其中所述第一页编号对应于所述第一逻辑单元中的所述第一页的位置,且所述第二页编号对应于所述第二逻辑单元中的所述第二页的位置。
11.根据权利要求1所述的系统,其中所述第二逻辑单元与某一逻辑单元编号相关联,所述逻辑单元编号是根据所述存储器装置中的逻辑单元排序在所述第一逻辑单元的逻辑单元编号之后的下一逻辑单元编号。
12.根据权利要求1所述的系统,其中所述偏移值基于所述存储器装置的每字线页数的倍数。
13.一种非暂时性计算机可读存储媒体,其包括指令,所述指令在由处理装置执行时使所述处理装置执行包括以下的操作:
接收多个主机数据项,包括第一主机数据项和第二主机数据项,所述第二主机数据项根据所述主机数据项接收到的次序而连续地跟在所述第一主机数据项之后;
将所述第一主机数据项存储在存储器装置的第一逻辑单元的第一页中,其中所述第一页与第一页编号相关联;
确定所述第二主机数据项的第二页编号,其中所述第二页编号基于对应于所述存储器装置的每字线页数的偏移值而确定;
识别所述存储器装置的第二逻辑单元;以及
将所述第二主机数据项存储在所述第二逻辑单元的第二页中,其中所述第二页由所述第二页编号标识,其中所述第一页和所述第二页与容错条带相关联。
14.根据权利要求13所述的计算机可读存储媒体,其中所述第二逻辑单元的所述第二页和所述第一逻辑单元的所述第一页在不同字线上。
15.根据权利要求13所述的计算机可读存储媒体,其中所述第一页在所述第一逻辑单元的第一块中,所述第一块与第一块编号相关联,并且确定所述第二主机数据项的所述第二页编号包括:
确定所述第二逻辑单元的第二块编号,
其中所述第二页编号在所述第二逻辑单元的第二块中,且所述第二块由所述第二块编号标识。
16.根据权利要求15所述的计算机可读存储媒体,其中确定所述第二逻辑单元的所述第二块编号包括:
确定其中要存储所述第二块的所述第二逻辑单元的当前块中是否存在可用页;
响应于确定所述第二逻辑单元的所述当前块中不存在可用页:
将所述第二块编号确定为在所述第二逻辑单元中的所述当前块的当前块编号之后的下一块编号,
确定所述第一页编号和所述偏移值的总和,以及
将所述第二页编号设置为所述总和与所述存储器装置的每块页数之间的差。
17.根据权利要求16所述的计算机可读存储媒体,其中确定其中要存储所述第二块的所述第二逻辑单元的所述当前块中是否存在可用页是基于所述第一页编号和所述偏移值的总和与所述存储器装置的每块页数的比较。
18.一种方法,其包括:
接收第一主机数据项;
将所述第一主机数据项存储在存储器装置的第一逻辑单元的第一页中,其中所述第一页与容错条带相关联;
接收第二主机数据项;
基于所述第一页和页偏移,识别所述存储器装置的第二逻辑单元的第二页,其中所述第二页与所述容错条带相关联,并且所述第一页和所述第二页在所述存储器装置的不同字线处;以及
将所述第二主机数据项存储在所述存储器装置的所述第二逻辑单元的所述第二页中。
19.根据权利要求18所述的方法,其中所述页偏移是基于所述存储器装置的字线中的页数。
20.根据权利要求18所述的方法,其中所述第一页与第一页编号相关联,且所述第二页与第二页编号相关联,所述方法进一步包括:
基于所述页偏移和所述第一页编号的总和,确定所述第二页编号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/339,660 | 2021-06-04 | ||
US17/339,660 US11507304B1 (en) | 2021-06-04 | 2021-06-04 | Diagonal page mapping in memory systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437558A true CN115437558A (zh) | 2022-12-06 |
Family
ID=84104677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210625327.2A Withdrawn CN115437558A (zh) | 2021-06-04 | 2022-06-02 | 存储器系统中的对角页映射 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11507304B1 (zh) |
CN (1) | CN115437558A (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11010076B2 (en) * | 2007-03-29 | 2021-05-18 | Violin Systems Llc | Memory system with multiple striping of raid groups and method for performing the same |
US8799572B2 (en) * | 2009-04-20 | 2014-08-05 | Microsoft Corporation | Sliding-window multi-class striping |
US8694849B1 (en) * | 2011-12-19 | 2014-04-08 | Pmc-Sierra Us, Inc. | Shuffler error correction code system and method |
US10628300B2 (en) * | 2017-11-13 | 2020-04-21 | Western Digital Technologies, Inc. | RAID stripe physical placement |
-
2021
- 2021-06-04 US US17/339,660 patent/US11507304B1/en active Active
-
2022
- 2022-06-02 CN CN202210625327.2A patent/CN115437558A/zh not_active Withdrawn
- 2022-10-31 US US17/978,050 patent/US20230049877A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230049877A1 (en) | 2023-02-16 |
US11507304B1 (en) | 2022-11-22 |
US20220391127A1 (en) | 2022-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11630725B2 (en) | Management of parity data in a memory sub-system | |
US11899966B2 (en) | Implementing fault tolerant page stripes on low density memory systems | |
US11775179B2 (en) | Enabling stripe-based operations for error recovery at a memory sub-system | |
US11907066B2 (en) | Managing storage of multiple plane parity data in a memory sub-system | |
US20220319622A1 (en) | Remapping bad blocks in a memory sub-system | |
US11704196B2 (en) | Reduced parity data management | |
US11567665B2 (en) | Data dispersion-based memory management | |
US11507304B1 (en) | Diagonal page mapping in memory systems | |
US11556261B2 (en) | Memory stripe coding management | |
US11709601B2 (en) | Redundancy metadata for multi-plane memory access failure | |
US11860732B2 (en) | Redundancy metadata media management at a memory sub-system | |
US11880600B2 (en) | Consolidating write request in cache memory | |
US11625295B2 (en) | Operating memory device in performance mode | |
US11720273B2 (en) | Codeword error leveling for 3DXP memory devices | |
US20240028259A1 (en) | Buffer allocation for reducing block transit penalty | |
US20230186995A1 (en) | Performing data integrity checks to identify defective wordlines | |
US20220197538A1 (en) | Performing data operations on grouped memory cells | |
US20230395152A1 (en) | Memory cell voltage level selection | |
US20240118971A1 (en) | Temporary parity buffer allocation for zones in a parity group | |
US20240152424A1 (en) | Block failure protection for zone memory system | |
KR20240055821A (ko) | 대규모 코드워드의 rain 보호를 위한 리던던시 메타데이터 방식 | |
CN113126899A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20221206 |
|
WW01 | Invention patent application withdrawn after publication |