CN113838510A - 快速的经由控制器复制 - Google Patents
快速的经由控制器复制 Download PDFInfo
- Publication number
- CN113838510A CN113838510A CN202110376138.1A CN202110376138A CN113838510A CN 113838510 A CN113838510 A CN 113838510A CN 202110376138 A CN202110376138 A CN 202110376138A CN 113838510 A CN113838510 A CN 113838510A
- Authority
- CN
- China
- Prior art keywords
- data
- controller
- encoding
- metadata
- memory
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/024—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in decoders
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/23—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
- H03M13/235—Encoding of convolutional codes, e.g. methods or arrangements for parallel or block-wise encoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
Abstract
一种用于快速的经由控制器复制的装置、控制器和存储数据的系统,其中修改和后续编码仅影响与所复制数据相关联的元数据的小部分。通过仅修改和重新编码元数据的此小部分,所复制数据的奇偶校验数据的小部分需要更新。在其中待复制的读取数据(例如,来自NAND的SLC部分)中不存在错误的实施例中,解码、修改和编码可并行地进行。因为修改如此小数目的元数据位,在一些实施例中,可预先确定和组合(例如,通过XOR)奇偶校验位的所有可能的码字来更新元数据奇偶校验位。
Description
技术领域
本公开的实施例大体涉及在NAND阵列内复制数据,且更明确地说涉及对复制的数据进行编码。
背景技术
在固态驱动器(SSD)中,将数据从一个位置复制到另一位置是用于数据折叠、垃圾收集、读取整理和类似操作的常见操作。为了实行复制,SSD通常采用不经过控制器从NAND中的一个位置复制到另一位置的芯片上复制,或将数据复制到SSD控制器并写入到新位置的经由控制器复制(copy through controller,CTC)。
在CTC中,通常对数据进行解码、编辑、重新编码,且接着复制回到NAND。CTC是复杂且昂贵(即,在时间和功率方面)的操作。对于许多CTC操作而言,正复制的主机数据保持未编辑;仅修改与正复制的主机数据相关联的元数据。然而,在先前方法中,尽管仅操纵总数据的小部分,但解码和重新编码所有数据(即,主机数据和元数据),唯一好处是数据的移动。因为如此少的数据被有用地重新编码(即,元数据),所以解码和重新编码所有数据浪费了原本可用于更有价值的操作的有价值的时间和处理资源。
需要系统和方法来解决先前方法的缺点,以便更高效地以相比于先前方法使用较少时间和功率的方式解码和编码数据。
发明内容
本公开大体上涉及用于CTC数据复制操作的方法和系统,其中修改和后续编码仅影响与所复制数据相关联的元数据的小部分。通过仅修改和重新编码元数据的此小部分,所复制数据的奇偶校验数据的小部分需要更新。在其中待复制的读取数据(例如,来自NAND的SLC部分)中不存在错误的实施例中,解码、修改和编码可并行地进行。因为修改如此小数目的元数据位,在一些实施例中,可预先确定和组合(例如,通过XOR)奇偶校验位的所有可能的码字来更新元数据奇偶校验位。
在一个实施例中,公开一种数据存储装置,其包含一个或多个存储器装置以及被配置成执行一种用于编码数据的方法的控制器。在实施例中,所述方法包含从所述一个或多个存储器装置接收数据,所述数据包括奇偶校验矩阵数据和所存储数据;修改奇偶校验矩阵数据的对应于与所述数据相关联的元数据的部分;以及用经修改的奇偶校验矩阵数据编码所存储数据。
在另一实施例中,公开一种用于数据存储装置的控制器,其包含到一个或多个存储器装置的I/O,以及被配置成执行一种用于编码数据的方法的处理器。在实施例中,所述方法包含接收移动数据的一部分的请求,数据的所述部分包括数据及包括第一变量和最后变量的元数据;检索数据的所述部分;修改最后变量;以及将数据的所述部分写入到所述一个或多个存储器装置。
在另一实施例中,公开一种用于存储数据的系统,所述系统包含一个或多个存储器构件,以及被配置成实行一种用于编码数据的方法的控制器构件。在实施例中,所述方法包含从所述一个或多个存储器构件读取数据区段,其中所述数据区段包括元数据和数据,所述元数据包括开端和末端;修改元数据的与元数据的末端邻接的部分;以及将数据区段写入到所述一个或多个存储器构件。
附图说明
为了可以详细地理解本公开的上述特征,可以参考实施例了解上文简短概述的本公开的更具体描述,其中一些实施例在附图中示出。然而,应注意,附图只是示出本公开的典型实施例,且因此不应视为限制本公开的范围,因为本公开可以承认其它同等有效的实施例存在。
图1描绘根据本公开的一种或多种技术的示意性框图,其示出具有可充当用于主机装置的存储装置的存储装置的存储系统。
图2描绘根据所公开的实施例的曲线图,其示出计算元数据的奇偶校验位的级联效应。
图3描绘根据所公开的实施例的曲线图,其描述相对于时间的重新编码过程。
图4描绘根据所公开的实施例的曲线图,其示出计算元数据的已改变部分的奇偶校验位。
图5描绘根据所公开的实施例的曲线图,其描述相对于时间的改进的重新编码过程。
图6描绘根据所公开的实施例的曲线图,其描述相对于时间的机会性重新编码过程。
图7描绘根据所公开的实施例的曲线图,其描述相对于时间的利用并行操作的改进的重新编码过程。
图8描绘根据所公开的实施例的编码数据的方法。
为了便于理解,在可能的情况下已经使用相同的参考标号来表示图中共有的相同元件。预期一个实施例中公开的元件可有利地在其它实施例上利用而不需特定叙述。
具体实施方式
在下文中,参考本公开的实施例。然而,应理解,本公开不限于具体描述的实施例。实际上,预期以下特征和元件(不管是否与不同实施例有关)的任何组合以实施和实践本公开。此外,尽管本公开的实施例可实现优于其它可能的解决方案和/或优于现有技术的优点,但特定优点是否是由给定实施例实现并不限制本公开。因此,以下方面、特征、实施例及优点仅为说明性的且不认为是所附权利要求书的元件或限制,除非明确地叙述于权利要求中。同样,对“本公开”的提及不应解释为本文中所公开的任何发明性主题的一般化,且不应认为是所附权利要求书的要素或限制,除非明确地叙述于权利要求中。
本公开大体上涉及方法和系统,使得在CTC数据复制操作中修改和后续编码仅影响与所复制数据相关联的元数据的小部分。通过仅修改和重新编码元数据的此小部分,所复制数据的奇偶校验数据的小部分需要更新。在其中待复制的读取数据(例如,来自NAND的SLC部分)中不存在错误的实施例中,解码、修改和编码可并行地进行。因为修改如此小数目的元数据位,在一些实施例中,可预先确定和组合(例如,通过XOR)奇偶校验位的所有可能的码字来更新元数据奇偶校验位。
图1是示出根据本公开的一种或多种技术的存储系统100的示意性框图,其中数据存储装置106可以充当用于主机装置104的存储装置。举例来说,主机装置104可利用包含在数据存储装置106中的非易失性存储器(NVM)110来存储和检索数据。主机装置104包括主机DRAM 138。在一些实例中,存储系统100可以包含可以作为存储阵列操作的多个存储装置,例如数据存储装置106。举例来说,存储系统100可以包含被配置为廉价/独立磁盘冗余阵列(RAID)的多个数据存储装置106,其共同充当用于主机装置104的大容量存储装置。
存储系统100包含主机装置104,所述主机装置可以将数据存储到一个或多个存储装置和/或从一个或多个存储装置检索数据,所述存储装置例如数据存储装置106。如图1中所示出,主机装置104可以经由接口114与数据存储装置106通信。主机装置104可以包括广泛范围的装置中的任一种,包含计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、所谓的“智能”平板、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、视频流式传输装置,及类似物。
数据存储装置106包含控制器108、NVM110、电力供应111、易失性存储器112、接口114,和写入缓冲器116。在一些实例中,数据存储装置106可以包含图1中为清晰起见未示出的额外组件。举例来说,数据存储装置106可以包含印刷电路板(PCB),数据存储装置106的组件以机械方式附接到所述印刷电路板且所述印刷电路板包含电互连数据存储装置106的组件的导电迹线或类似物。在一些实例中,数据存储装置106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些实例标准形状因数包含(但不限于)3.5”数据存储装置(例如,HDD或SSD)、2.5”数据存储装置、1.8”数据存储装置、外围组件互连(PCI)、PCI扩展(PCI-X)、PCI高速(PCIe)(例如,PCIe x1、x4、x8、x16、PCIe微型卡、MiniPCI等)。在一些实例中,数据存储装置106可以直接耦合(例如,直接焊接)到主机装置104的母板。
数据存储装置106的接口114可以包含用于与主机装置104交换数据的数据总线和用于与主机装置104交换命令的控制总线中的一个或两个。接口114可以根据任何合适的协议操作。举例来说,接口114可以根据以下协议中的一个或多个操作:高级技术附接(ATA)(例如,串行ATA(SATA)和并行ATA(PATA))、光纤通道协议(FCP)、小型计算机系统接口(SCSI)、串联附接SCSI(SAS)、PCI和PCIe、非易失性存储器高速(NVMe)、OpenCAPI、GenZ、高速缓冲存储器相干接口加速器(CCIX)、开放通道SSD(OCSSD),或类似物。接口114的电连接(例如,数据总线、控制总线或这两者)电连接到控制器108,从而提供主机装置104与控制器108之间的电连接,允许在主机装置104与控制器108之间交换数据。在一些实例中,接口114的电连接还可以准许数据存储装置106从主机装置104接收电力。举例来说,如图1中所示出,电力供应111可以经由接口114从主机装置104接收电力。
数据存储装置106包含NVM 110,其可以包含多个存储器装置或存储器单元。NVM110可以被配置成存储和/或检索数据。举例来说,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还包含可供控制器108使用以存储信息的易失性存储器112。易失性存储器112可包含一个或多个易失性存储器装置。在一些实例中,控制器108可以使用易失性存储器112作为高速缓冲存储器。举例来说,控制器108可以将高速缓存的信息存储于易失性存储器112中直到高速缓存的信息被写入到非易失性存储器110为止。如图1中所示出,易失性存储器112可以消耗从电力供应111接收的电力。易失性存储器112的实例包含(但不限于)随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM),和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4及类似物))。
数据存储装置106包含可以管理数据存储装置106的一个或多个操作的控制器108。举例来说,控制器108可以管理从NVM 110的数据读取和/或对其的数据写入。在一些实施例中,当数据存储装置106从主机装置104接收到写入命令时,控制器108可以起始数据存储命令以将数据存储到NVM 110且监视数据存储命令的进展。控制器108可以确定存储系统100的至少一个操作特性,且将所述至少一个操作特性存储到NVM 110。在一些实施例中,当数据存储装置106从主机装置104接收到写入命令时,控制器108在将与写入命令相关联的数据发送到NVM 110之前将所述数据临时存储于内部存储器或写入缓冲器116中。
数据存储装置106包含低密度奇偶检验码(LDPC)编码器118和LDPC解码器120。LDPC编码器118和LDPC解码器120可各自包含内部存储器以保存包含多个错误校正码(ECC)的若干矩阵,其中LDPC编码器118和LDPC解码器120的内部存储器是相同的。LDPC编码器118和LDPC解码器120的内部存储器的所述一个或多个矩阵可以允许在矩阵之间快速切换以避免归因于用以在矩阵之间切换的时间而造成任何固件(FW)干预或性能损失。在本文的描述中,LDPC编码器118可处理编码操作,且LDPC解码器120可处理解码操作。
图2是示出根据所公开的实施例的计算元数据的奇偶校验位的级联效应的曲线图。每一点表示一个数据位,例如主机数据(例如,用户数据)、元数据和奇偶校验数据。主机数据可以是来自主机(例如,图1的主机104)的任何数据,其被编程到例如图1的数据存储装置106等数据存储装置的NVM(例如,图1NVM 110)中的一个或多个快闪管理单元(FMU)。所述一个或多个FMU中的每一个可为约4,096B的物理内存。所述一个或多个FMU中的每一个可进一步分段成逻辑块地址(LBA),其中每一LBA可为约512B的物理内存。此外,数据存储装置的快闪转译层(FTL)可逻辑上存储所述多个LBA中的每一个和/或所述多个FMU中的每一个的物理位置以便容易地访问数据存储装置中的相关存储器位置。在一些实施例中,主机数据可被编程到MRAM。列出的存储器位置并不希望是限制性的,而是提供可能的实施例的实例。每一FMU还可包含元数据和奇偶校验数据。
控制器针对被编程到NVM的每一FMU生成元数据,例如固件标头、加扰晶种、循环冗余检查(CRC)和FTL管理信息。在本文的描述中,出于示例性目的,FMU可被描述为码字。相比于主机数据,元数据的大小可显著较小,例如每4KB主机数据约几十个字节。此外,当主机数据和元数据传递到控制器(例如,图1的控制器108)时,主机数据和元数据可通过奇偶校验引擎(例如异或(XOR)引擎)以生成奇偶校验数据。奇偶校验数据可用于校正相关联的发生故障的码字,其中发生故障的码字包含一个或多个位的错误。奇偶校验数据可利用对角或半对角奇偶校验矩阵来编码,例如图2中所示出的对角奇偶校验矩阵。在对角或半对角奇偶校验矩阵中,每一组奇偶校验等式取决于先前组的奇偶校验等式。举例来说,通过改变连接到顶部变量的位(例如,顶部位202)每一后续奇偶校验位受影响。每一受影响的奇偶校验位由位的黑体轮廓示出。列出的矩阵并不希望是限制性的,而是提供可能的实施例的实例。在一个实施例中,第一矩阵或H矩阵可用于解码,且第二矩阵或G矩阵可用于编码。因为H矩阵比G矩阵更稀疏,所以H矩阵的操纵可能更可行。因此,LDPC码可被设计成逐列地对H矩阵操作,使得LDPC码可从H矩阵的最后列开始改变所述一个或多个列,而不是如先前方法中那样从H矩阵的第一列和第一列之后的所有/大多数列开始作出改变。通过仅从H矩阵的最后列开始作出改变,对码字的改变可降到最少。
快闪管理操作的常见实例为折叠、垃圾收集和内存整理。列出的快闪管理操作并不希望是限制性的,而是提供可能的实施例的实例。折叠可包含将数据写入到SLC存储器,将一个或多个SLC数据复制到控制器,以及将所述一个或多个SLC数据编程到MLC存储器、TLC存储器或QLC存储器。垃圾收集可包含将相关数据(例如,当前数据)从NAND的块写入到控制器,解除分配相关块,以及将相关数据编程到NAND的另一块。垃圾收集可释放NAND中被过时的数据利用的空间且恢复可用的存储器空间。内存整理可包含在控制器处解码来自NAND块的数据,利用错误校正码(ECC)校正经解码数据的任何位错误,编码经校正数据,以及将经编码数据编程到NAND的相关块。
为了将数据从NAND阵列中的一个位置(例如第一裸片的第一擦除块)复制到NAND阵列中的另一位置(例如第二裸片的第一擦除块),在快闪管理操作期间,数据可在编程到NAND阵列中的另一位置之前传递到控制器。换句话说,快闪管理操作可被称为经由控制器复制(CTC)。在另一实施例中,数据可从包含SLC、MLC、TLC和QLC的第一类型的存储器单元复制到包含SLC、MLC、TLC和QLC的第二类型的存储器单元。预期存储器单元的其它迭代,且所述其它迭代可适用于所公开的实施例。当经由控制器将数据从NAND阵列中的一个位置复制到NAND阵列中的另一位置时,可校正位错误,且位错误不会传播到被编程到NAND阵列中的另一位置的所复制数据。
图3是描述根据所公开的实施例的相对于时间的重新编码过程的曲线图。在时间A处,开始存储装置的控制器的快闪管理操作。相关一个或多个码字从NAND的一个或多个块传递到控制器。所述一个或多个码字由控制器的解码器解码。
在时间B处,成功地解码所述一个或多个码字,且控制器开始编辑所述一个或多个码字。编辑所述一个或多个码字可包含垃圾收集操作、内存整理等。编辑操作可能影响元数据,而不影响主机数据。此外,每一码字中的元数据的位置可以是固定的。
在成功地编辑所述一个或多个码字之后,在时间C处将所述多个奇偶校验数据重新编码到所述码字。当将所述多个奇偶校验数据编码到所述一个或多个码字时,利用例如图2中所示出的对角奇偶校验矩阵等对角或半对角奇偶校验矩阵来编码所述一个或多个码字的每一组奇偶校验数据。在对角或半对角奇偶校验矩阵中,每一组奇偶校验等式取决于先前组的奇偶校验等式。
图4是示出根据所公开的实施例的计算元数据的已改变部分的奇偶校验位的曲线图。图4的方面可类似于图2中描述的实施例。LDPC码的方面可被设计成包含快速编码区段以对应于最后奇偶校验变量被连接的相同等式。举例来说,快速编码区段可能受图4中示出的元数据的位置影响。
LDPC码可编辑元数据的最后位,使得对奇偶校验位矩阵的改变降到最少。因此,当重新编码所述一个或多个码字时,矩阵中的大多数奇偶校验位不变,且可仅需要重新编码矩阵中的已改变的奇偶校验位。举例来说,因为奇偶校验等式连接到最后奇偶校验变量,所以当编辑元数据时大多数奇偶校验位可不变。奇偶校验数据的经修改部分可包含奇偶校验数据的拖尾部分。在图4中,具有黑体轮廓的奇偶校验位可以是所述多个奇偶校验位中需要重新计算的仅有的奇偶校验位。此外,编码过程可仅编码所存储数据的与奇偶校验数据的拖尾部分相关的部分。由于具有较少已改变的奇偶校验位,编辑过程和编码过程可以较快。
图5是描述根据所公开的实施例的相对于时间的改进的重新编码过程的曲线图。图4的方面可适用于图5中描述的实施例。此外,流程1可表示图3中描述的实施例。流程2可表示图4中描述的实施例。
关于流程2,在时间A处,开始存储装置的控制器的快闪管理操作。相关一个或多个码字从NAND的一个或多个块传递到控制器。在一个实施例中,所述一个或多个块来自SLC存储器。所述一个或多个码字由控制器的解码器解码。
关于流程2,在时间B处,成功地解码所述一个或多个码字,且控制器开始编辑所述一个或多个码字。编辑所述一个或多个码字可包含垃圾收集操作、内存整理等。编辑操作可能影响元数据,而不影响主机数据。此外,每一码字中的元数据的位置可以是固定的。因为LDPC码的快速编码区段影响与最后奇偶校验变量相关的奇偶校验等式,所以所述一个或多个码字的编辑过程在时间C处结束,流程2编辑过程在流程1编辑过程之前结束,其中流程1编辑过程在时间C'处完成。
关于流程2,在时间C处,编码所存储数据的与奇偶校验数据的拖尾部分相关的部分。因为大部分奇偶校验位保持不变,所以编码过程可仅影响已改变或经更新的奇偶校验位。由于待编码的奇偶校验位很少,编码过程在时间D处结束。在各种实施例中,已编码的一个或多个码字可被编程到SLC存储器、MLC存储器、TLC存储器或QLC存储器。在一个实施例中,编码时间可缩短约50%到约75%。在流程2在时间D处结束时,流程1仍在编码所述多个奇偶校验位。因此,流程2的增益可以是时间D和时间E之间的时间。
图6是描述根据所公开的实施例的相对于时间的机会性重新编码过程的曲线图。图4的方面可适用于图6中描述的实施例。此外,流程1可表示图3中描述的实施例。流程2描述快闪管理操作(例如折叠)的机会性重新编码过程。
在时间A处,开始存储装置的控制器的快闪管理操作。相关一个或多个码字从NAND的一个或多个块传递到控制器。在一个实施例中,所述一个或多个块来自SLC存储器。参看流程1,所述一个或多个码字由控制器的解码器解码。参看流程2,当解码所述一个或多个码字时,控制器与解码并行地执行编辑过程和编码过程。因为到SLC存储器的编程通常展示很少或零翻转位计数(FBC),所以到SLC存储器的编程通常不会导致错误。因此,可能不需要数据的解码。
因此,可在时间A处同时开始机会性编辑和编码过程(其中首先编辑数据且然后编码数据)和解码过程。如果在流程1的解码过程期间发现错误或翻转位,则停止机会性流程2,且继续流程1过程。在流程2期间,LDPC码可编辑元数据的最后位,使得对奇偶校验位的改变降到最少。因此,当重新编码所述一个或多个码字时,大多数奇偶校验位不变,且可仅需要重新编码已改变的奇偶校验位。在流程1的解码过程期间通过利用机会性并行编辑和编码过程未发现错误的情况下的潜在时间增益是从约时间B到约时间D的时间。在一个实施例中,可避免编码操作时延,因为编码操作与解码操作并行地执行。
图7是描述根据所公开的实施例的相对于时间的利用并行解码和编码操作的改进的重新编码过程的曲线图。图4的方面可适用于图7中描述的实施例。此外,流程1可表示图3中描述的实施例。流程2描述快闪管理操作的并行编码和解码过程。
关于流程2,在时间A处,开始存储装置的控制器的快闪管理操作。相关一个或多个码字从NAND的一个或多个块传递到控制器。在一个实施例中,所述一个或多个块来自SLC存储器。LDPC码可编辑元数据的最后位,使得对奇偶校验位的改变降到最少。因此,当重新编码所述一个或多个码字时,矩阵中的大多数奇偶校验位不变,且可仅需要重新编码已改变的奇偶校验位。当控制器解码所述一个或多个码字时,控制器利用LDPC的线性特性来组合两个或更多个LDPC码字以形成合法码字。控制器可生成所述多个合法码字的子组,其中每一合法码字可表示单个位改变。举例来说,如果8个位改变,则控制器可生成8个合法码字的子组,其中每一合法码字反映改变的8个位中的一个。8个合法码字的子组可各自为编码奇偶校验候选者。使用奇偶校验矩阵数据的多个型式来计算所述多个合法码字的子组中的每一个。
关于流程2,在时间B处,所述一个或多个码字的解码和所述多个码字的子组的生成均完成。在时间B处,组合经解码的码字与编码奇偶校验候选者中的每一个。在一个实施例中,可选择和组合两个或更多个奇偶校验候选者。举例来说,在8个编码奇偶校验候选者的情况下,存在组合的经解码码字和编码奇偶校验候选者的约256个组合。在约256个组合中,包含反映相对于原始数据的改变的系数1的所述一个或多个编码奇偶校验候选者归因于LDPC的线性特性而使用XOR函数与原始经解码奇偶校验数据组合。所得XOR奇偶校验数据是相关部分(即,经编辑数据位)的经编码奇偶校验数据。通过利用并行解码和编码操作产生的潜在时间增益为从约时间C到约时间D的时间。在一个实施例中,可避免编码操作时延,因为编码操作与解码操作并行地执行。
图8是根据所公开的实施例的编码数据的方法。在框802处,例如图1的控制器108等控制器接收将数据从第一类型的存储器单元移动到第二类型的存储器单元的请求。在一个实施例中,第一类型的存储器单元可以是SLC存储器、MLC存储器、TLC存储器、TLC存储器等中的任一个。第二类型的存储器可以是SLC存储器、MLC存储器、TLC存储器、TLC存储器等中的任一个。
在框804处,控制器从所述一个或多个存储器装置接收数据,其中所述一个或存储器装置可以是SLC存储器、MLC存储器、TLC存储器、TLC存储器等。当控制器接收数据时,控制器通过在框806处检查所接收数据中的错误而开始解码过程。
在框808处,控制器用经更新数据修改奇偶校验矩阵数据的一部分。在一个实施例中,奇偶校验矩阵数据的已修改部分是奇偶校验数据的拖尾部分。在框810处,控制器用已修改的奇偶校验矩阵数据编码所存储数据。
在一个实施例中,奇偶校验矩阵数据的已修改部分通过图5中描述的过程来编码。在另一实施例中,可在控制器正通过图6中描述的过程解码数据的同时完成奇偶校验矩阵数据的编辑和编码。在又一实施例中,可在图7中描述的过程未发现错误时并行地完成奇偶校验矩阵数据的解码和编码。当并行地解码和编码奇偶校验矩阵数据时,针对经修改的奇偶校验矩阵数据中改变的每一位计算奇偶校验矩阵数据的多个型式。控制器选择所述多个型式的奇偶校验矩阵数据型式中的至少一个,且用所述多个检查矩阵数据型式中的选定的一个来更新奇偶校验矩阵数据。奇偶校验矩阵数据的更新可包含将奇偶校验矩阵数据与奇偶校验矩阵数据的所述多个型式中的选定的一个进行XOR。在一个实施例中,奇偶校验矩阵数据的选定型式包含所述多个型式的奇偶校验矩阵数据的两个或更多个型式。
通过利用编辑过程实施更灵活的经由控制器复制,存储装置可改进性能,实现操作期间的更大功率节省,以及降低固件复杂性。
在一个实施例中,公开一种数据存储装置,其包含一个或多个存储器装置以及被配置成执行一种用于编码数据的方法的控制器。在实施例中,所述方法包含从所述一个或多个存储器装置接收数据,所述数据包括奇偶校验矩阵数据和所存储数据;修改奇偶校验矩阵数据的对应于与所述数据相关联的元数据的部分;以及用经修改的奇偶校验矩阵数据编码所存储数据。
包含修改奇偶校验数据的所述部分的所述方法包含修改奇偶校验数据的拖尾部分。包含编码所存储数据的所述方法包含仅编码所存储数据的与奇偶校验数据的拖尾部分相关的部分。所述方法进一步包含接收将数据从所述一个或多个存储器装置的第一类型的存储器单元移动到所述一个或多个存储器装置的第二类型的存储器单元的请求,检查所述数据中的错误,以及当未发现错误时并行地解码和编码数据。第一类型的存储器单元是单层单元(SLC)、多层单元(MLC)、三层单元(TLC)和四层单元(QLC)中的一个。第二类型的存储器单元是单层单元(SLC)、多层单元(MLC)、三层单元(TLC)和四层单元(QLC)中的一个。包含修改奇偶校验矩阵数据的所述方法包含计算奇偶校验矩阵数据的多个型式,选择所述多个型式中的至少一个,以及用所述多个型式中的选定的一个来更新奇偶校验矩阵数据。所述多个中的每一个表示具有经修改的不同单个位的奇偶校验矩阵数据的型式。
在另一实施例中,公开一种用于数据存储装置的控制器,其包含到一个或多个存储器装置的I/O,以及被配置成执行一种用于编码数据的方法的处理器。在实施例中,所述方法包含接收移动数据的一部分的请求,数据的所述部分包括数据及包括第一变量和最后变量的元数据;检索数据的所述部分;修改最后变量;以及将数据的所述部分写入到所述一个或多个存储器装置。
所述方法进一步包含用经修改的最后变量编码数据。第一变量和最后变量包含奇偶校验位。所述方法进一步包含生成包括表示经修改的最后变量的至少两个变型的多个码字的最后变量的码字的基底,以及基于所述修改最后变量挑选所述至少两个变型中的至少两个。所述方法进一步包含组合所述至少两个变型。包含所述组合的所述方法包含使用异或函数进行组合。所述方法进一步包含对数据的所述部分进行错误检查,以及在未发现错误后并行地执行编码和解码的至少一部分。所述方法进一步包含从所述一个或多个存储器装置的单层单元检索数据的所述部分。
在另一实施例中,公开一种用于存储数据的系统,所述系统包含一个或多个存储器构件,以及被配置成实行一种用于编码数据的方法的控制器构件。在实施例中,所述方法包含从所述一个或多个存储器构件读取数据区段,其中所述数据区段包括元数据和数据,所述元数据包括开端和末端;修改元数据的与元数据的末端邻接的部分;以及将数据区段写入到所述一个或多个存储器构件。
所述方法进一步包含用元数据的经修改部分编码数据区段的数据。所述方法进一步包含在从所述一个或多个存储器构件的至少一个单层单元读取后解码数据区段,以及与解码并行地用元数据的经修改部分编码所述数据区段。所述方法进一步包含生成多个码字,所述多个码字中的每一个对应于元数据的所述部分的一位经修改型式;编辑数据区段的数据;从所述编辑确定所述多个码字的子组;以及组合所述多个码字的子组。所述修改包含组合所述多个码字的子组。
虽然前述内容是针对本公开的实施例,但可以设计出本公开的其它及另外实施例而这些实施例不脱离本公开的基本范围,且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种数据存储装置,其包括:
一个或多个存储器装置;以及
控制器,其被配置成执行一种用于编码数据的方法,所述方法包括:
从所述一个或多个存储器装置接收数据,所述数据包括奇偶校验矩阵数据和所存储数据;
修改所述奇偶校验矩阵数据的对应于与所述数据相关联的元数据的部分;以及
用经修改的奇偶校验矩阵数据编码所述所存储数据。
2.根据权利要求1所述的数据存储装置,其中所述修改所述奇偶校验数据的所述部分包括修改所述奇偶校验数据的拖尾部分。
3.根据权利要求2所述的数据存储装置,其中所述编码所述所存储数据包括仅编码所述所存储数据的与所述奇偶校验数据的所述拖尾部分相关的部分。
4.根据权利要求1所述的数据存储装置,所述方法进一步包括:
接收将所述数据从所述一个或多个存储器装置的第一类型的存储器单元移动到所述一个或多个存储器装置的第二类型的存储器单元的请求;
检查所述数据中的错误;以及
在未发现错误时并行地解码和编码所述数据。
5.根据权利要求4所述的数据存储装置,所述方法进一步包括其中所述第一类型的存储器单元是单层单元(SLC)、多层单元(MLC)、三层单元(TLC)和四层单元(QLC)中的一个。
6.根据权利要求5所述的数据存储装置,其中所述第二类型的存储器单元是单层单元(SLC)、多层单元(MLC)、三层单元(TLC)和四层单元(QLC)中的一个。
7.根据权利要求2所述的数据存储装置,其中修改所述奇偶校验矩阵数据包括:
计算所述奇偶校验矩阵数据的多个型式;
选择所述多个型式中的至少一个;以及
用所述多个型式中的选定的一个更新所述奇偶校验矩阵数据。
8.根据权利要求7所述的数据存储装置,其中所述多个中的每一个表示具有经修改的不同单个位的所述奇偶校验矩阵数据的型式。
9.一种用于数据存储装置的控制器,其包括:
到一个或多个存储器装置的I/O;以及
处理器,其被配置成执行一种用于编码数据的方法,所述方法包括:
接收移动数据的一部分的请求,数据的所述部分包括数据及包括第一变量和最后变量的元数据;
检索数据的所述部分;
修改所述最后变量;以及
将数据的所述部分写入到所述一个或多个存储器装置。
10.根据权利要求9所述的控制器,所述方法进一步包括用经修改的最后变量编码所述数据。
11.根据权利要求10所述的控制器,其中所述第一变量和最后变量包括奇偶校验位。
12.根据权利要求9所述的控制器,所述方法进一步包括:
生成包括表示所述经修改的最后变量的至少两个变型的多个码字的所述最后变量的码字的基底;以及
基于所述最后变量的所述修改挑选所述至少两个变型中的至少两个。
13.根据权利要求12所述的控制器,所述方法进一步包括组合所述至少两个变型。
14.根据权利要求13所述的控制器,其中所述组合包括使用异或函数进行组合。
15.根据权利要求9所述的控制器,所述方法进一步包括对数据的所述部分进行错误检查,以及在未发现错误后并行地执行编码和解码的至少一部分。
16.根据权利要求15所述的控制器,所述方法进一步包括从所述一个或多个存储器装置的单层单元检索数据的所述部分。
17.一种用于存储数据的系统,其包括:
一个或多个存储器构件;以及
控制器构件,其被配置成实行一种用于编码数据的方法,所述方法包括:
从所述一个或多个存储器构件读取数据区段,其中所述数据区段包括元数据和数据,所述元数据包括开端和末端;
修改所述元数据的与所述元数据的所述末端邻接的部分;以及
将所述数据区段写入到所述一个或多个存储器构件。
18.根据权利要求17所述的系统,所述方法进一步包括用所述元数据的经修改部分编码所述数据区段的所述数据。
19.根据权利要求17所述的系统,所述方法进一步包括:
在从所述一个或多个存储器构件的至少一个单层单元读取后解码所述数据区段;以及
与所述解码并行地用所述元数据的所述经修改部分编码所述数据区段。
20.根据权利要求17所述的系统,所述方法进一步包括:
生成多个码字,所述多个码字中的每一个对应于所述元数据的所述部分的一位经修改型式;
编辑所述数据区段的所述数据;
从所述编辑确定所述多个码字的子组;以及
组合所述多个码字的所述子组;
其中所述修改包括用所述多个码字的经组合的子组替换所述元数据的所述部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/910,905 US11177012B1 (en) | 2020-06-24 | 2020-06-24 | Fast copy through controller |
US16/910,905 | 2020-06-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113838510A true CN113838510A (zh) | 2021-12-24 |
Family
ID=78524084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110376138.1A Pending CN113838510A (zh) | 2020-06-24 | 2021-04-08 | 快速的经由控制器复制 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11177012B1 (zh) |
CN (1) | CN113838510A (zh) |
DE (1) | DE102021106721A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230046030A1 (en) * | 2021-08-10 | 2023-02-16 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for data resizing for computational storage |
US11636008B2 (en) * | 2021-09-01 | 2023-04-25 | Micron Technology, Inc. | Tracking host-provided metadata in a memory sub-system |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101650130B1 (ko) * | 2010-05-14 | 2016-08-24 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법 |
US20140310534A1 (en) * | 2013-04-15 | 2014-10-16 | Apple Inc. | Data scrambling in memory devices using combined sequences |
US9509342B2 (en) * | 2014-06-02 | 2016-11-29 | Sandisk Technologies Llc | Error correcting code decoder |
US10567006B2 (en) * | 2016-08-05 | 2020-02-18 | Sandisk Technologies Llc | Data relocation |
KR20200093362A (ko) * | 2019-01-28 | 2020-08-05 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
-
2020
- 2020-06-24 US US16/910,905 patent/US11177012B1/en active Active
-
2021
- 2021-03-18 DE DE102021106721.9A patent/DE102021106721A1/de active Pending
- 2021-04-08 CN CN202110376138.1A patent/CN113838510A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102021106721A1 (de) | 2021-12-30 |
US11177012B1 (en) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6053078B2 (ja) | 物理ページ、論理ページ、およびコードワードの対応 | |
US11861195B2 (en) | TLC data programming with hybrid parity | |
US20230208448A1 (en) | Variable Length ECC Code According to Value Length in NVMe Key Value Pair Devices | |
US20230082008A1 (en) | Parity protection in non-volatile memory | |
CN113838510A (zh) | 快速的经由控制器复制 | |
US20240086282A1 (en) | Multi-layer code rate architecture for copyback between partitions with different code rates | |
CN109240949B (zh) | 数据存储装置及其操作方法 | |
US11537510B2 (en) | Storage devices having minimum write sizes of data | |
US11569844B2 (en) | Optimizations for variable sector size in storage device namespaces | |
KR20220033975A (ko) | CbA 기술을 사용한 재배치 흐름 | |
KR20200104791A (ko) | Ssd에서의 결함 보호를 위한 메모리 다이 레이아웃 | |
US11609855B2 (en) | Bit masking valid sectors for write-back coalescing | |
US11847050B2 (en) | Nonvolatile memory, memory system, and control method of nonvolatile memory | |
US11294598B2 (en) | Storage devices having minimum write sizes of data | |
US11733876B2 (en) | Content aware decoding in KV devices | |
KR102593374B1 (ko) | Qlc 데이터 프로그래밍 | |
US11755407B2 (en) | Multi-rate ECC parity for fast SLC read | |
US11487611B2 (en) | LDPC encoding for memory cells with arbitrary number of levels | |
US11914468B1 (en) | NVMe boot partition error correction code enhancement | |
US11726911B2 (en) | NVMe persistent memory region quick copy | |
US11126545B2 (en) | Memory system and operating method thereof | |
US20240143337A1 (en) | Data Storage With Optimized Boot Files Loading | |
US20230186995A1 (en) | Performing data integrity checks to identify defective wordlines | |
CN115437558A (zh) | 存储器系统中的对角页映射 | |
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 |