CN115421964A - 一种非对齐数据错误处理方法、控制部件及存储设备 - Google Patents
一种非对齐数据错误处理方法、控制部件及存储设备 Download PDFInfo
- Publication number
- CN115421964A CN115421964A CN202211083184.3A CN202211083184A CN115421964A CN 115421964 A CN115421964 A CN 115421964A CN 202211083184 A CN202211083184 A CN 202211083184A CN 115421964 A CN115421964 A CN 115421964A
- Authority
- CN
- China
- Prior art keywords
- data
- error
- sector
- scrambling
- descrambling
- 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
- 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/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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
- 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/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开一种非对齐数据错误处理方法、控制部件及存储设备。所述方法包括:响应于非对齐写存储命令,基于所述非对齐写存储命令获取待写入数据;从NAND读出待合并数据,并验证是否正确;若正确,则使用第一扰码方式对待合并数据和待写入数据的合并数据进行处理;若存在错误,则使用不同于第一扰码方式的第二扰码方式对待合并数据和待写入数据的合并数据进行处理,并标记读出错误数据的扇区。采用本申请技术方案,对主机未读取的地址,隐藏了所发现的非对齐数据错误,并且保证在处理非对齐写命令时即使发生了读出数据错误,对非对齐写命令的处理也能正常完成,相对提高了存储设备的可靠性。
Description
技术领域
本发明涉及存储器技术领域,尤其涉及一种非对齐数据错误处理方法、控制部件及存储设备。
背景技术
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。FTL由例如运行在控制部件的CPU中的软件、固件和/或作为ASIC的部分的硬件实现。
图1是FTL的示意图,存储设备向主机提供逻辑地址空间。主机使用逻辑地址访问存储设备。FTL将主机提供的逻辑地址映射为物理地址。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。逻辑地址可寻址的最小单元,被称为例如逻辑块(Logical Block)或扇区(sector)(为了简便,如非特别指出,下文中逻辑块与扇区的使用可互换),将寻址了逻辑块的逻辑地址也称为逻辑块地址(LBA,Logical Block Address)。逻辑块具有指定的大小,例如,512B(字节)、2KB、4KB或16KB等。物理地址是用于访问存储设备的NVM的物理存储单元(例如,物理页)的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是存储设备中的重要元数据。通常FTL表的条目记录了存储设备中以逻辑块为单位的地址映射关系。可选地,FTL表的每个条目代表一个或多个逻辑块,以在FTL表的尺寸与存储空间的管理粒度之前权衡,例如,8个逻辑地址连续的逻辑块。FTL表包括例如多个FTL条目,每个FTL条目对应一个或多个连续的逻辑块,FTL条目的值记录了为该一个或多个连续的逻辑块提供的存储空间的地址(为了清楚,将该存储空间称为NVM数据帧,将该存储空间的地址称为NVM数据帧地址)。NVM数据帧地址具有例如4KB大小,或容纳4KB用户数据。
FTL表被存储在例如DRAM或SRAM中。根据访问的逻辑地址,获得对应的FTL条目的索引,并从FTL条目中得到为逻辑块提供存储空间的NVM数据帧。NVM数据帧地址,是例如访问NVM芯片的物理页的物理地址、访问NVM芯片的多个组合的物理页的物理地址(组合的物理页是例如,位于相同或不同逻辑单元(LUN)的多个平面(Plane)上的物理页)、访问NVM芯片的物理页内的部分数据单元的物理地址。一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。
在SSD系统中,4KB数据映射(NVM数据帧大小为4KB,FTL表的每个条目映射到一个NVM数据帧)是最常用的做法。但是,由于要支持512B sector(扇区)size,总是要处理非4KB对齐的命令。在主机提供的存储命令中描述的扇区大小为512B时,一些被访问的扇区的逻辑地址不是同4KB对齐,将这种存储命令称为非4KB对齐的存储命令或非对齐存储命令。
现在处理非4KB对齐存储命令(以写命令为例)的做法流程如图2所示,具体包括:
a.对于要访问的扇区,获取其所属的4KB对齐的逻辑地址La;
b.根据逻辑地址La查询FTL表获取NVM数据帧地址,从对应的NVM数据帧读取4KB数据(也称为预读数据);
c.将要写入的扇区合并到所读出的4KB数据;
d.分配NVM数据帧,将合并后的4KB数据写入分配的NVM数据帧。
现有技术中存在的技术问题在于,在处理非对齐存储命令时,从NVM数据帧读出的数据可能存在错误,这种错误的识别,是通过错误校正译码(ECC,Error CorrectionCodes)失败或其他容错手段校验失败而获知的。然而,当前用户所提供的是例如写命令,因而读出数据中的错误不应向用户报告,也无需向用户报告;存在错误的数据也可能是无效数据,而无需向用户报告错误;用户将来可能会重写存在错误的数据,其中的错误也随之不复存在。在合并了从NVM数据帧读出的预读数据与用户的非对齐存储命令要写入的数据后,向新的NVM数据帧写入的数据中,写入数据被重新编码,从而消除了错误校正码或其他容错手段所能识别的错误(即,这些数据在形式上符合例如错误校正码的要求,但其内容已经不同于正确的数据)。这导致新的数据帧中,部分扇区的数据的内容是正确的,而部分扇区的数据的内容是错误的(并且这些内容错误的数据无法通过错误校正译码识别)。
图3展示了上述技术问题的例子。NVM数据帧包括例如8个扇区(每个扇区大小为512B)。非对齐存储命令(其所属的4KB对齐的逻辑地址为La)新写入的数据位于扇区1,而扇区0与扇区2-7来自逻辑地址La所对应的旧NVM数据帧,并且从旧NVM数据帧读出数据过程中,扇区2的数据被识别出存在错误。将非对齐存储命令要写入的数据与从旧NVM数据帧读出的数据合并,再写入新分配的NVM数据帧(图3的NVM数据帧)。对于存在错误的扇区2,用一些数据填充。填充数据是例如随机数、指定的数据、或者错误校正单元输出的数据,无论如何获得填充数据,其都已不能代表在旧NVM数据帧中存储的用户所期待的数据。
然而,在向新分配的NVM数据帧写入数据(扇区0到扇区7)时,重新对数据进行编码(例如,错误校正编码),并导致再次读出扇区2时,所读出的数据能通过错误校正译码过程,而不会被识别为错误。这种情况下,若用户恰好要读出位于扇区2的数据,由于存储设备无法识别出扇区2的数据存在错误,将向用户提供错误的数据。对于存储设备而言,这是不可接受的。
发明内容
本发明提供了一种非对齐数据错误处理方法,用于数据写入阶段对非对齐数据出错的处理,包括:
响应于非对齐写存储命令,基于所述非对齐写存储命令获取待写入数据;
从NAND读出待合并数据,并验证所述待合并数据是否正确;
若从NAND读出的待合并数据正确,则使用第一扰码方式对待合并数据和待写入数据的合并数据进行处理;
若从NAND读出的待合并数据存在错误,则使用不同于第一扰码方式的第二扰码方式对待合并数据和待写入数据的合并数据进行处理,并标记读出错误数据的扇区。
如上所述的一种非对齐数据错误处理方法,其中,所述标记读出错误数据的扇区包括:
将指示待合并数据所在错误扇区的位图记录在与该待合并数据关联的元数据中;
所述使用不同于第一扰码方式的第二扰码方式对待合并数据和待写入数据的合并数据进行处理,并标记读出错误数据的扇区之后,还包括:
将待合并数据与元数据进行错误矫正编码并生成校验数据,将待合并数据、元数据与校验数据一并写入NAND中。
如上所述的一种非对齐数据错误处理方法,其中,若非对齐写存储命令指示向NAND的第一扇区写入待写入数据,则从NAND的所有扇区中读出待合并数据;
从所述待合并数据中识别出现错误的第二扇区;
从NAND中读出的待合并数据与非对齐写存储命令的待写入数据合并,通过随机数或指定数据模式填充出现错误的第二扇区。
如上所述的一种非对齐数据错误处理方法,其中,第一扰码方式和第二扰码方式是两个不同的函数、或者是用于加扰操作的不同的随机数种子、或不同的随机数种子计算方式。
如上所述的一种非对齐数据错误处理方法,其中,用NVM数据帧的物理地址P作为第一扰码方式的随机化种子,用NVM数据帧的物理地址P+1作为第二扰码方式的随机化种子。
本发明还提供一种非对齐数据错误处理方法,用于数据读取阶段对非对齐数据出错的处理,包括:
响应于数据读取命令或垃圾回收操作,从NAND读出NVM数据帧,对NVM数据帧进行LDPC解码;
使用第一扰码方式解扰LDPC解码得到的正确解码数据;
若解扰成功,则解扰得到的数据为正确数据;
若解扰失败,则使用第二扰码方式解扰LDPC解码得到的正确解码数据;
若解扰成功,则从解扰得到的数据中获取存在错误扇区的位图,识别对应的错误扇区。
如上所述的一种非对齐数据错误处理方法,其中,响应于主机的数据读取命令,从NVM读出NVM数据帧,对NVM数据帧做错误校验译码,得到加扰的数据帧与随机数种子,使用第一解扰方式进行解扰,若解扰成功则发送给用户或继续进行垃圾回收,若解扰失败则使用第二解扰方式进行解扰,若解扰成功,则通过标记哪些扇区存在错误的位图识别出错误扇区,若要读取的数据来自错误扇区,则向用户报告错误或用其他容错机制再尝试恢复数据;若用户要读取的数据来自正确扇区,则向用户提供要读取的数据,而无需报告错误。
如上所述的一种非对齐数据错误处理方法,其中,在进行垃圾回收操作时,若识别出数据帧中包含错误扇区,将数据帧的有效数据再写入NVM时,对于包含错误扇区的数据帧,用第二加扰方式加扰,对于不包含错误扇区的数据帧,用第一加扰方式加扰。
本发明还提供一种控制部件,所述控制部件用于在数据写入时,执行上述任一项所述的一种非对齐数据错误处理方法。
本发明还提供一种存储设备,包括上述控制部件,以及存储芯片;非对齐数据错误出现在所述存储芯片上,由所述控制部件对所述存储芯片上的非对齐数据错误执行非对齐数据错误处理方法。
本发明实现的有益效果如下:
(1)对主机未读取的地址,隐藏了所发现的非对齐数据错误,并且保证在处理非对齐写命令时即使发生了读出数据错误,对非对齐写命令的处理也能正常完成,相对提高了存储设备的可靠性;
(2)对已发现的数据错误用第二扰码做标记,不影响读命令处理流程,在存在错误数据的情况下对其他地址的正常数据读不增加处理开销;
(3)对用第二扰码标注了错误的数据,正常读命令流程中用解扰硬件能发现,但在错误识别阶段无需固件介入。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为背景技术提供的FTL的示意图;
图2为背景技术提供的处理非4KB对齐存储命令的方法流程图;
图3为背景技术提供的处理非4KB对齐存储命令的NVM数据帧的构成示意图;
图4为本申请实施例提供的数据写入或读取过程中数据的变化情况示意图;
图5为本申请实施例提供的一种非对齐数据错误处理方法流程图;
图6为针对非对齐数据出错的处理方法示意图;
图7为对读出的NVM数据帧经LDPC译码的处理流程图;
图8为处理非对齐数据部分出错的流程示意图;
图9为根据本申请又一实施例的数据写入过程与读出过程的示意图;
图10为根据本申请再一实施例的数据写入过程与读出过程的示意图;
图11为根据本申请依然又一实施例的数据写入过程与读出过程的示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图4是数据写入或读取过程中数据的变化情况示意图。
在向存储设备写入数据时,数据先要经过控制器的扰码随机化加扰,可以采用存储设备对数据进行随机化加扰的方式。在从存储设备读出数据时,对经随机化加扰的数据用实施相反运算的随机化解扰,得到随机化加扰前的数据。
可选地,在随机化加扰时,使用指定的随机数种子,例如用户提供自定义种子格式和产生方式,或者用同逻辑地址或物理地址相关的随机化种子。对加扰后的数据进行ECC(Error Correcting Code,错误校正编码),例如LDPC(Low Density Parity Check Code,低密度奇偶校验)编码得到校验数据,接下来将加扰后的数据与校验数据一同写入NAND(计算机闪存设备)。
另外,从NAND读取数据时,先进行LDPC解码,再利用之前写入数据时使用的种子进行反扰码(也就是随机化解扰)操作,得到原始数据。
实施例一
图5是本申请实施例一提供的一种非对齐数据错误处理方法流程图,用于数据写入阶段对非对齐数据出错的处理,具体包括:
步骤510、响应于非对齐写存储命令,获取命令中待写入数据,并从NAND读出待合并数据;
步骤520、判断从NAND读出的待合并数据是否正确,如果正确,则执行步骤530,如果不正确,则执行步骤540;
步骤530、若从NAND读出的待合并数据正确,则使用第一扰码方式对待合并数据和待写入数据的合并数据进行处理;
步骤540、若从NAND读出的待合并数据存在错误,则使用第二扰码方式对待合并数据和待写入数据的合并数据进行处理,并标记读出错误数据的扇区。
图6为本申请实施例提供的一种针对非对齐数据出错的处理示意图。
在处理非对齐写存储命令时,若从NAND读出的待合并数据存在错误,则使用随机化加扰方式处理待合并数据和写存储命令中的写入数据的合并,在不影响正常读数据流程的情况下,标记读出数据中的错误。
具体地,本实施例通过设置多种随机化加扰方式处理合并数据,具体包括:
设置默认扰码格式,若在处理非对齐命令时从NAND读出的待合并数据存在错误,则用不同于默认扰码格式的其他扰码格式处理合并后的数据,然后将指示待合并数据所在错误扇区的位图记录在与该待合并数据关联的元数据中,将待合并数据与元数据进行错误矫正编码并生成校验数据,将待合并数据、元数据与校验数据一并写入NAND中。
例如,图6中设置默认扰码格式为扰码格式1,记为f1(x),其中x是例如4KB的待合并数据。处理非对齐命令的情况下,如果从NAND读出的待合并数据存在错误,用不同于默认扰码格式(扰码格式1)的扰码格式2(记为f2(x))处理合并后的数据,并将指示4KB待合并数据中哪个扇区存在错误的位图(sector bitmap)记录在与待合并数据关联的元数据中,将待合并数据与元数据进行错误校正编码(例如LDPC)生成校验数据,并将待合并数据、元数据与校验数据一并写入NAND。由此写入NAND中的数据既包括使用默认扰码格式1处理后的正确数据,又包括使用扰码格式2处理后的非对齐错误数据,由于正确数据和错误数据是使用不同扰码格式处理的结果,所以在后续数据读取时存储设备能够使用不同扰码格式对应的解扰方式轻易识别出错误数据,相对提高了存储设备的可靠性。
这里扰码格式1和扰码格式2可以认为是两个不同的函数或者用于加扰操作的不同的随机化种子或不同的随机化种子计算方式。作为举例,在一个例子中,用NVM数据帧的物理地址P作为扰码格式1的随机化种子,而用P+1作为扰码格式2的随机化种子。通过设置不同的扰码格式,使得用一种扰码格式加扰后的NVM数据帧,仅能用相同的扰码才能正确解扰,若用其他扰码进行解扰则会识别出存在错误。
本发明利用两种扰码格式对非对齐的错误数据进行处理,将其重新写入NAND,并且对每个扇区(sector)记录标记,既不影响正常的数据解码,也能够在该非对齐数据被检测到错误时,准确地定位到具体扇区。使用两种不同的数据加扰方式来分别加扰正常数据与已经识别出的存在错误的数据,通过不同于默认的第一加扰方式的第二加扰方式来标注存在错误的数据,由此能够在数据读取时存储设备即使能够通过错误校正译码,但仍能识别出数据错误,还无需报告数据错误,提升用户体验和性能。
实施例二
图7是通过实施例一中图6所示的针对非对齐数据出错的处理方法对NAND处理后,对读出的NVM数据帧经LDPC译码的处理流程。
具体地,在读出NVM数据帧时,对NVM先后进行LDPC译码和用扰码格式1解扰,具体包括如下步骤:
步骤710、对NVM数据帧进行LDPC解码,若解码成功,则执行步骤720,否则执行步骤760;
步骤720、使用扰码格式1解扰LDPC解码得到的数据,若解扰成功,则执行步骤730,若解扰失败,则执行步骤740;
步骤730、解扰得到的数据为正确数据,返回正确数据;
步骤740、进一步使用扰码格式2解扰LDPC解码得到的数据,若解扰成功,则执行步骤750,若解扰失败,则执行步骤760;
步骤750、从解扰得到的数据中获取存在错误扇区的位图,识别对应的错误扇区;
步骤760、返回错误状态;
其中步骤710中若LDPC解码正确,如果步骤720中用扰码格式1解扰出现错误,则代表了两种可能的原因:(1)NVM数据帧中存在LDPC不可检测错误;(2)NVM数据帧不是用扰码格式1加扰。根据本申请的实施例,在此情况下,步骤740进一步用扰码格式2再次解扰LDPC译码后的数据帧,若解扰成功,则说明用扰码格式1解扰出现错误的原因是第(2)种;若解扰失败,则说明用扰码格式1解扰出现错误的原因是第(1)种。对于第(1)种原因,需要用诸如RAID重建等其他容错机制来恢复错误数据。对于第(2)种原因,则表明在数据帧中存在之前在处理非对齐写命令时识别出的错误扇区。进而通过例如指示4KB数据帧中哪个扇区存在错误的位图来识别错误扇区。
其中步骤710中若LDPC解码失败或步骤740中在使用扰码格式2解扰失败,则表明NVM数据帧中存在LDPC不可检测错误,或者其他原因导致的错误,对此通过其他错误处理机制进行后续处理,并返回错误状态。另外被标注错误的数据,如果后续又被正确数据更新,其加扰方式要改回默认扰码格式。
本实施例的核心点在于处理非对齐数据部分出错的流程,遇到扰码错误后,会换成扰码格式2重读,增加另一种格式是重点,并把存在错误扇区的位图写入元数据,确认数据状态,如果数据状态正确且所需扇区数据也正常,就返回正确的数据。否则,返回错误状态。
具体地,图8是处理非对齐数据部分出错的流程示意图。在读出MVM数据帧后,先用扰码格式1解扰,判断解扰得到的数据是否正确,如果正确,则返回正确数据,如果解扰得到的数据不正确,则再判断扰码是否错误,若扰码没有错误,则可能是其他错误,返回错误状态,若是扰码错误,则获取扰码种子,并与扰码格式2进行对比读,判断是否能够匹配扰码格式2,如果不能匹配,则返回错误状态,如果能够匹配扰码格式2,则判断所需扇区数据是否也正确,如果正确,则返回正确数据,否则返回错误状态。
本发明在用两种不同的扰码方式加扰后的数据,需要使用与加扰方式对应的解扰方式才能成功解扰,从而依据用一种解扰方式能否成功解扰,来识别数据是被用哪种方式加扰,进而识别出是否存在数据错误,特别适用于处理非对齐写存储命令。
实施例三
图9是根据本申请又一实施例的数据写入过程与读出过程的示意图。图9中左侧展示了数据写入过程,右侧展示了数据读出过程。
(一)数据写入过程可响应于主机发出的非对齐写命令而发生。响应于收到非对齐写命令,例如要向扇区1写入新数据,作为响应,从对应的NVM数据帧读出数据(包括例如8个扇区,扇区0-扇区7)。若读出的数据和待写入数据的合并数据中不存在错误,用第一解扰方式(即扰码格式1)对合并数据加扰,若合并数据存在错误,用第二解扰方式(即扰码格式2)对合并数据加扰。作为举例,第一加扰方式与第二加扰方式所使用的随机数种子的生成方式不同。对加扰后的数据帧连同所使用的随机数种子进行错误校验编码(例如,BCH或者LDPC)生成校验数据,将加扰的数据帧与校验数据一同写入NVM。将这里写入NVM的数据称为NVM数据帧。
具体地,通过错误校正译码成功但用扰码格式1解扰失败,识别出扇区2的数据存在错误。从NVM数据帧读出的数据与非对齐写命令要写入的新数据合并,合并数据的扇区2中也记录有数据,由于其存在错误,数据的内容已不被关心,可通过随机数或指定数据模式填充扇区2。响应于在扇区2中存在错误(并且要写入的新数据位于扇区1,不会覆盖扇区2),还通过位图标记扇区2存在错误。位图是例如8比特数据,其每比特代表NVM数据帧中的对应扇区是否存在错误。
其中,可以为每个扇区分别设置种子,在数据读取时能够识别不同的扇区,或者为整个NVM数据帧的各扇区设置单一种子,减小存储空间并且方便种子维护。
(二)数据读出过程可响应于主机的读命令而发生,也可响应于存储设备内部的例如垃圾回收操作而发生。
响应于主机的读命令,从NVM读出前面写入的NVM数据帧,对NVM数据帧做错误校验译码。译码得到的结果是加扰的数据帧与随机数种子。此时由于并不知晓加扰的数据帧是否存在错误扇区,采用统一的流程进行处理,即先用第一解扰方式(对应于第一加扰方式,为第一加扰方式的逆过程)进行解扰。若解扰成功,表明得到的数据帧是正确的,继而可发送给用户或继续进行垃圾回收。若解扰失败,表明得到的数据帧可能包含错误扇区,也可能是出现了其他错误(例如,LDPC不可检测错误)。此时,采用第二解扰方式(对应于第二加扰方式,为第二加扰方式的逆过程)。若用第二解扰方式成功,表明数据帧中因包含错误扇区,而在之前写入时特意使用了第二加扰方式,对此情况,通过标记哪些扇区存在错误的位图识别出错误扇区。若用户要读取的数据来自错误扇区,则向用户报告错误或用其他容错机制再尝试恢复数据。若用户要读取的数据来自正确扇区,则向用户提供要读取的数据,而无需报告错误。在进行例如垃圾回收操作的情况下,若识别出数据帧中包含错误扇区,将数据帧的有效数据再写入NVM时,对于包含错误扇区的数据帧,依然用第二加扰方式加扰,对于不包含错误扇区的数据帧,用第一加扰方式加扰。
实施例四
图10是根据本申请再一实施例的数据写入过程与读出过程的示意图。
在图10的例子中,NVM数据帧包括4个扇区(记为扇区0、扇区1、扇区2与扇区3),每个扇区的大小是例如1KB。在数据加扰中,为每个扇区分别加扰。加扰时,扇区0-3所使用的种子分别记为种子0、种子1、种子2与种子3。种子0-3可以相同或不同。可选地,种子0-3各自是其对应扇区的物理地址的函数。通过为每个扇区提供对应的种子,可以不使用位图来标记NVM数据帧中存在错误的扇区,而仅由为扇区使用的种子来标记存在错误的扇区。
参看图10,响应于收到非对齐写命令,要向扇区1写入新数据。作为响应,从对应的NVM数据帧读出数据。通过错误校正译码,根据第一解扰方式失败而第二解扰方式成功,识别出扇区2的数据存在错误。从NVM数据帧读出的扇区0-3与非对齐写命令要写入的新数据,合并数据的扇区2中也记录有数据,由于其存在错误,数据的内容已不被关心,可通过随机数或指定数据模式填充扇区2。
对合并数据的每个扇区,依据其是否存在错误,选择加扰方式。响应于在扇区2中存在错误(并且要写入的新数据位于扇区1,不会覆盖扇区2),用对应第二加扰方式的种子2’(而不是种子2)来对扇区2加扰,而对扇区0、1与3,用对应第一加扰方式的种子0、种子1与种子3加扰。随机数种子0、1与3可以相同或不同,但随机数种子2与种子2’必须不同。
作为举例,第一加扰方式与第二加扰方式所使用的随机数种子的生成方式不同。依然作为举例,在第一加扰方式中,使用一种比特序列对扇区的数据进行计算,而在第二加扰方式中,使用另一种不同的比特序列对扇区的数据进行计算。从而,两种加扰方式加扰后的数据在解扰时可被区分。用第一解扰方式仅能成功解扰用第一加扰方式得到的数据,用第二解扰方式仅能成功解扰用第二加扰方式得到的数据,而不能互换。
对加扰后的数据帧连同所使用的随机数种子进行错误校验编码(例如,BCH或者LDPC)生成校验数据,将加扰的数据帧与校验数据一同写入NVM。
响应于从NVM读出前面写入的NVM数据帧,对NVM数据帧做错误校验译码。译码得到的结果是加扰的各扇区与对应的随机数种子。对于每个扇区,先用第一解扰方式(对应于第一加扰方式,为第一加扰方式的逆过程)进行解扰。若解扰成功,表明得到的扇区是正确的。若解扰失败,表明得到的是错误扇区,也可能是出现了其他错误(例如,存在LDPC不可检测错误)。此时,采用第二解扰方式(对应于第二加扰方式,为第二加扰方式的逆过程)。若用第二解扰方式成功,表明因该扇区存在错误,而在之前写入时特意使用了第二加扰方式,从而识别出错误扇区。
返回参看图10的数据写入过程,可选地,若非对齐写入命令要更新扇区1,而为进行合并而读出的NVM数据帧中的扇区1存在错误(例如,对扇区1用第二解扰方式解扰成功),其他扇区没有错误。这种情况下,由于非对齐写入命令所更新的扇区1覆盖了存在错误的扇区1,更新后的扇区1不存在错误。因此,在对各扇区加扰时,用第一加扰方式对包括扇区1的各扇区加扰。
实施例五
图11是根据本申请依然又一实施例的数据写入过程与读出过程的示意图。
在图11的例子中,NVM数据帧包括4个扇区(记为扇区0、扇区1、扇区2与扇区3)。在数据写入过程中,对数据进行错误校验编码,但可以不进行加扰,或者说加扰与否在该实施例中不做限定。
在错误校验编码中,以数据帧整体或各扇区为单位进行。对于正常数据,用第一方式进行错误校验编码,对于存在错误的数据,用第二方式进行错误校验编码。作为举例,在用BCH编码时,两种方式使用的生成矩阵不同。在译码时,错误比特数在错误校验编码的纠错能力范围内时,用第一方式编码的数据,仅能用与第一方式对应的译码方式译码,用第二方式编码的数据,仅能用与第二方式对应的译码方式译码。当错误比特数超出错误校验编码的纠错能力范围时,无论用哪种方式都无法成功译码。当因NVM存储介质劣化等原因,导致NVM数据帧中的错误比特数增加,超出错误校验编码的纠错能力时,而不大可能出现一种方式能译码成功而另一种方式译码失败的情况。基于这样的分析,根据图10的实施例中,用第二方式进行错误校正译码来标识一个或多个扇区存在数据错误。
参看图11,响应于收到非对齐写命令,要向扇区1写入新数据。作为响应,从对应的NVM数据帧读出数据。通过错误校正译码(用第一方式错误校正译码失败,用第二方式错误校正译码成功),识别出扇区2的数据存在错误。从NVM数据帧读出的数据与非对齐写命令要写入的新数据合并。
响应于在扇区2中存在错误(并且要写入的新数据位于扇区1,不会覆盖扇区2),还通过位图或其他标记方式来标记扇区2存在错误。
若合并数据中不存在错误,用第一方式对合并数据进行错误校正编码。若合并数据存在错误,用第二方式对合并数据进行错误校正编码,并写入NVM。将这里写入NVM的数据称为NVM数据帧。
响应于从NVM读出前面写入的NVM数据帧,对NVM数据帧做错误校验译码。此时由于并不知晓加扰的数据帧是否存在错误,采用统一的流程进行处理,即先用第一方式错误校正译码(对应于第一方式的错误校正编码)。若译码成功,表明得到的数据帧是正确的。若译码失败,表明得到的数据帧可能包含错误,也可能是出现了其他错误(例如,错误比特数过多,超出错误校正译码的纠错能力)。此时,采用第二方式错误校正译码(对应于第二方式的错误校正编码)。若用第二方式错误校正译码成功,表明数据帧中因包含错误,而在之前写入时特意使用第二方式错误校正编码。对此情况,通过标记哪些扇区存在错误的位图识别出错误扇区。若用第二方式错误校正译码依然失败,表明读出的NVM数据帧中错误比特过程,超出错误校正译码的纠错能力。相应地,报告错误作为对读命令的响应。
综上所述,采用本发明提供的针对非对齐数据出错的处理方法,使用两种不同的扰码方式来分别加扰正常数据与已经识别出的存在错误的数据,由此能够在数据读取时存储设备即使能够通过错误校正译码,但仍能识别出数据错误,隐藏了所发现的非对齐数据错误,并且保证在处理非对齐写命令时即使发生了读出数据错误,对非对齐写命令的处理也能正常完成,相对提高了存储设备的可靠性。
实施例六
本发明实施例六提供一种控制部件,所述控制部件用于在数据写入时,执行实施例一至五所述的一种非对齐数据错误处理方法。
实施例七
本发明实施例七还提供一种存储设备,所述存储设备包括所述控制部件,以及存储芯片,非对齐数据错误出现在存储芯片上,由控制部件对存储芯片上的非对齐数据错误执行实施例一至五所述的非对齐数据错误处理方法。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (10)
1.一种非对齐数据错误处理方法,用于数据写入阶段对非对齐数据出错的处理,其特征在于,包括:
响应于非对齐写存储命令,基于所述非对齐写存储命令获取待写入数据;
从NAND读出待合并数据,并验证所述待合并数据是否正确;
若从NAND读出的待合并数据正确,则使用第一扰码方式对待合并数据和待写入数据的合并数据进行处理;
若从NAND读出的待合并数据存在错误,则使用不同于第一扰码方式的第二扰码方式对待合并数据和待写入数据的合并数据进行处理,并标记读出错误数据的扇区。
2.如权利要求1所述的一种非对齐数据错误处理方法,其特征在于,所述标记读出错误数据的扇区包括:
将指示待合并数据所在错误扇区的位图记录在与该待合并数据关联的元数据中;
所述使用不同于第一扰码方式的第二扰码方式对待合并数据和待写入数据的合并数据进行处理,并标记读出错误数据的扇区之后,还包括:
将待合并数据与元数据进行错误矫正编码并生成校验数据,将待合并数据、元数据与校验数据一并写入NAND中。
3.如权利要求1所述的一种非对齐数据错误处理方法,其特征在于,若非对齐写存储命令指示向NAND的第一扇区写入待写入数据,则从NAND的所有扇区中读出待合并数据;
从所述待合并数据中识别出现错误的第二扇区;
从NAND中读出的待合并数据与非对齐写存储命令的待写入数据合并,通过随机数或指定数据模式填充出现错误的第二扇区。
4.如权利要求1所述的一种非对齐数据错误处理方法,其特征在于,第一扰码方式和第二扰码方式是两个不同的函数、或者是用于加扰操作的不同的随机数种子、或不同的随机数种子计算方式。
5.如权利要求4所述的一种非对齐数据错误处理方法,其特征在于,用NVM数据帧的物理地址P作为第一扰码方式的随机化种子,用NVM数据帧的物理地址P+1作为第二扰码方式的随机化种子。
6.一种非对齐数据错误处理方法,用于数据读取阶段对非对齐数据出错的处理,其特征在于,包括:
响应于数据读取命令或垃圾回收操作,从NAND读出NVM数据帧,对NVM数据帧进行LDPC解码;
使用第一扰码方式解扰LDPC解码得到的正确解码数据;
若解扰成功,则解扰得到的数据为正确数据;
若解扰失败,则使用第二扰码方式解扰LDPC解码得到的正确解码数据;
若解扰成功,则从解扰得到的数据中获取存在错误扇区的位图,识别对应的错误扇区。
7.如权利要求6所述的一种非对齐数据错误处理方法,其特征在于,响应于主机的数据读取命令,从NVM读出NVM数据帧,对NVM数据帧做错误校验译码,得到加扰的数据帧与随机数种子,使用第一解扰方式进行解扰,若解扰成功则发送给用户或继续进行垃圾回收,若解扰失败则使用第二解扰方式进行解扰,若解扰成功,则通过标记哪些扇区存在错误的位图识别出错误扇区,若要读取的数据来自错误扇区,则向用户报告错误或用其他容错机制再尝试恢复数据;若用户要读取的数据来自正确扇区,则向用户提供要读取的数据,而无需报告错误。
8.如权利要求6所述的一种非对齐数据错误处理方法,其特征在于,在进行垃圾回收操作时,若识别出数据帧中包含错误扇区,将数据帧的有效数据再写入NVM时,对于包含错误扇区的数据帧,用第二加扰方式加扰,对于不包含错误扇区的数据帧,用第一加扰方式加扰。
9.一种控制部件,其特征在于,所述控制部件用于在数据写入时,执行如权利要求1-5或6-8任一项所述的一种非对齐数据错误处理方法。
10.一种存储设备,其特征在于,包括:如权利要求9所述的控制部件,以及存储芯片;非对齐数据错误出现在所述存储芯片上,由所述控制部件对所述存储芯片上的非对齐数据错误执行非对齐数据错误处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211083184.3A CN115421964A (zh) | 2022-09-06 | 2022-09-06 | 一种非对齐数据错误处理方法、控制部件及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211083184.3A CN115421964A (zh) | 2022-09-06 | 2022-09-06 | 一种非对齐数据错误处理方法、控制部件及存储设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115421964A true CN115421964A (zh) | 2022-12-02 |
Family
ID=84202803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211083184.3A Pending CN115421964A (zh) | 2022-09-06 | 2022-09-06 | 一种非对齐数据错误处理方法、控制部件及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115421964A (zh) |
-
2022
- 2022-09-06 CN CN202211083184.3A patent/CN115421964A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10339005B2 (en) | Stripe mapping in memory | |
US8448018B2 (en) | Stripe-based memory operation | |
US7315976B2 (en) | Method for using CRC as metadata to protect against drive anomaly errors in a storage array | |
US9430329B2 (en) | Data integrity management in a data storage device | |
US7536627B2 (en) | Storing downloadable firmware on bulk media | |
US7546515B2 (en) | Method of storing downloadable firmware on bulk media | |
US9377960B2 (en) | System and method of using stripes for recovering data in a flash storage system | |
US8347138B2 (en) | Redundant data distribution in a flash storage device | |
US10474527B1 (en) | Host-assisted error recovery | |
US5581690A (en) | Method and apparatus for preventing the use of corrupt data in a multiple disk raid organized storage system | |
US20060156059A1 (en) | Method and apparatus for reconstructing data in object-based storage arrays | |
JP2011504270A (ja) | フォールトトレラント不揮発性集積回路メモリ | |
US20180157428A1 (en) | Data protection of flash storage devices during power loss | |
US11874741B2 (en) | Data recovery method in storage medium, data recovery system, and related device | |
US10552243B2 (en) | Corrupt logical block addressing recovery scheme | |
CN107808686B (zh) | 读出错测试方法与装置 | |
CN115421964A (zh) | 一种非对齐数据错误处理方法、控制部件及存储设备 | |
CN112230855A (zh) | 固态硬盘及其读写方法 | |
CN112579329A (zh) | 快速处理uecc的方法及其存储设备 | |
US11550710B2 (en) | Data processing method and memory controller utilizing the same | |
CN114860500A (zh) | Nvm的故障注入方法及其存储设备 | |
CN112948288A (zh) | 使用经修饰地址空间的存储设备 | |
CN117409845A (zh) | 分组管理方法、存储器存储装置及存储器控制器 | |
CN117632579A (zh) | 存储器控制方法和存储器存储装置 | |
WO2010150283A2 (en) | Disk storage performance using digital memory and data compression |
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 |