掌桥专利:专业的专利平台
掌桥专利
首页

用于数据存储装置的软错误检测及纠正

文献发布时间:2023-06-19 16:11:11



技术领域

本公开大体上涉及用于检测及纠正数据存储装置中的软错误的系统、方法及非暂时性处理器可读媒体。

背景技术

在固态硬盘(SSD)中,硬错误可发生于非易失性存储器装置(例如NAND闪存装置)中。硬错误的实例包含(但不限于)编程错误、由用非最佳阈值读取引起的错误、由滞留/读取干扰应力引起的错误等。为了解决此类硬错误,SSD的控制器(例如纠错码(ECC)编码器)可使用一或多个纠错码(ECC)来编码编程到非易失性存储器装置的数据。控制器(例如ECC解码器)可解码从非易失性存储器装置读取的编码数据以纠正硬错误。

另一方面,软错误是可发生于除非易失性存储器装置之外的SSD的组件中的错误。软错误可由电离辐射(例如中子、α粒子等)引起,辐射与硅相互作用且引起电荷沉积/收集、电流尖峰、单粒子翻转(SEU)、单粒子瞬态(SET)等。容易发生软错误的SSD组件的实例包含(但不限于)静态随机存取存储器(SRAM)、DRAM、半导体装置的数字逻辑(例如触发器、锁存器、组合逻辑、专用集成电路(ASIC))等。尽管软错误没有硬错误那样频繁发生,但系统可靠性会受软错误影响。例如,软错误会影响SSD的控制器,从而引起装置卡住、堵住或甚至数据损坏。

发明内容

在一些布置中,系统、方法及非暂时性计算机可读媒体涉及:使用从主机接收的输入数据产生第一签名;使用至少所述输入数据产生码字;在通过数据路径处理所述输入数据之后确定所述输入数据的有效性;及响应于确定所述输入数据有效而将码字写入到非易失性存储器。

在一些布置中,系统、方法及非暂时性计算机可读媒体涉及:从非易失性存储器读取码字;解码所述码字以获得至少输入数据;在通过数据路径处理所述输入数据之后使用第一签名确定所述输入数据的有效性;及响应于使用所述第一签名确定所述输入数据有效而将所述输入数据发送到主机。

附图说明

图1是说明根据一些实施方案的包含非易失性存储装置及主机的实例系统的框图。

图2是说明根据一些实施方案的实例软错误检测结构的框图。

图3是说明根据一些实施方案的使用图2的软错误检测结构写入数据的实例方法的流程图。

图4是说明根据一些实施方案的使用图2的软错误检测结构读取数据的实例方法的流程图。

图5是说明根据一些实施方案的用于产生签名的实例机制的框图。

图6是说明根据一些实施方案的实施单个CRC签名的实例软错误检测结构的框图。

图7是说明根据一些实施方案的使用实施单个CRC签名的图6的软错误检测结构写入数据的实例方法的流程图。

图8是说明根据一些实施方案的使用实施单个CRC签名的图6的软错误检测结构读取数据的实例方法的流程图。

图9是说明根据一些实施方案的使用实施单个CRC签名的图6的软错误检测结构写入及读取数据的实例方法的流程图。

图10是说明根据一些实施方案的实施两个CRC签名的实例软错误检测结构的框图。

图11是说明根据一些实施方案的使用实施两个CRC签名的图10的软错误检测结构写入数据的实例方法的流程图。

图12是说明根据一些实施方案的使用实施两个CRC签名的图10的软错误检测结构读取数据的实例方法的流程图。

图13是说明根据一些实施方案的使用实施两个CRC签名的图10的软错误检测结构写入及读取数据的实例方法的流程图。

图14是说明根据一些实施方案的实例软错误检测结构的框图。

图15是说明根据一些实施方案的使用图14的软错误检测结构写入数据的实例方法的流程图。

图16是说明根据一些实施方案的使用图15的软错误检测结构读取数据的实例方法的流程图。

图17是说明根据一些实施方案的使用本文中所公开的软错误检测结构写入数据的实例方法的流程图。

图18是说明根据一些实施方案的使用本文中所公开的软错误检测结构读取数据的实例方法的流程图。

具体实施方式

申请人认识到,某些电子组件(例如SRAM、DRAM、触发器、锁存器、组合逻辑、ASIC等)容易发生软错误,因此,主机接口与非易失性存储器之间的数据路径上的SSD的组件易受软错误影响。例如,软错误可发生于包含(但不限于)以下的SSD的组件处:控制器(其包含ASIC、控制器存储器(例如SRAM或另一类型的易失性存储器装置)、触发器等)及缓冲器/高速缓存(其包含DRAM、SRAM或另一类型的易失性存储器装置)。

本文中所公开的布置涉及用于检测及纠正存储装置中的软错误以提高到/来自主机接口的完整数据流的可靠性的系统、方法及非暂时性处理器可读媒体。在一些布置中,软错误在存储装置的数据路径上实时检测及纠正而不增加非易失性存储器装置(例如NAND闪存装置)的任何开销,同时允许在其中将数据写入到NAND闪存装置的任何写入操作之前检测及纠正软错误。可实现对NAND存储器控制器的数据路径保护及NAND存储区域利用的联合优化。本文中所公开的软错误检测及纠正机构还允许共享软错误检测及ECC错误修复的功能性且因此减少写入到非易失性存储器的冗余数据。

为了辅助说明本发明实施方案,图1展示根据一些实施方案的包含耦合到主机101的非易失性存储装置100的系统的框图。在一些实例中,主机101可为由用户操作的用户装置。主机101可包含操作系统(OS),其经配置以提供文件系统及使用文件系统的应用程序。文件系统通过合适有线或无线通信链路、总线或网络与非易失性存储装置100(例如非易失性存储装置100的控制器110)通信以管理非易失性存储装置100中数据的存储。在这方面,主机101的文件系统使用到通信链路或网络的合适接口将数据发送到非易失性存储装置100及从非易失性存储装置100接收数据。

在一些实例中,非易失性存储装置100位于数据中心(为简洁起见,未展示)中。数据中心可包含一或多个平台或机架单元,其中每一者支持一或多个存储装置(例如(但不限于)非易失性存储装置100)。在一些实施方案中,主机101及非易失性存储装置100一起形成存储节点,其中主机101充当节点控制器。存储节点的实例是Kioxia Kumoscale存储节点。平台内的一或多个存储节点连接到架顶式(TOR)交换机(每一存储节点经由一或多个网络连接(例如以太网、光纤通道或InfiniBand)连接到TOR),且可经由TOR交换机或另一合适平台内通信机制彼此通信。在一些实施方案中,非易失性存储装置100可为连接到TOR交换机的网络附加存储装置(例如以太网SSD),其中主机101也连接到TOR交换机且能够经由TOR交换机与存储装置100通信。在一些实施方案中,至少一个路由器可促进不同平台、机架或机柜中的存储节点中的不同非易失性存储装置之间经由合适网络结构通信。非易失性存储装置100的实例包含非易失性装置,例如(但不限于)固态硬盘(SSD)、以太网附加SSD、非易失性双列直插存储器模块(NVDIMM)、通用闪存(UFS)、安全数字(SD)装置等。

非易失性存储装置100包含至少一控制器110及存储器阵列130。为简洁起见,非易失性存储装置100的其它组件未展示。存储器阵列130包含NAND闪存装置135。NAND闪存装置135中的每一者包含一或多个个别NAND闪存裸片,其是能够在没电情况下保存数据的非易失性存储器(NVM)。因此,NAND闪存装置135指代闪存装置100内的多个NAND闪存装置或裸片。NAND闪存装置135中的每一者包含一或多个裸片,其中每一者具有一或多个平面。每一平面具有多个块,且每一块具有多个页。

尽管NAND闪存装置135展示为存储器阵列130的实例,但用于实施存储器阵列130的非易失性存储器技术的其它实例包含(但不限于)电池备援动态随机存取存储器(DRAM)、磁性随机存取存储器(MRAM)、相变存储器(PCM)、铁电RAM(FeRAM)等。

控制器110的实例包含(但不限于)SSD控制器(例如客户端SSD控制器、数据中心SSD控制器、企业SSD控制器等)、UFS控制器或SD控制器等。

控制器110可组合多个NAND闪存装置135中的原始数据存储,使得所述NAND闪存装置135用作单个存储装置。控制器110可包含微控制器、缓冲器、纠错系统、闪存转译层(FTL)、主机接口及闪存接口模块。例如,如所展示,控制器110包含主机接口105、数据路径112、纠错系统120、闪存接口118、DRAM 114及SRAM 116。尽管展示为控制器的一部分,但在一些实施方案中,DRAM 114或SRAM 116中的一或多者可完全或部分在控制器110外部。控制器110的其它组件未展示。此类功能可以硬件、软件及固件或其任何组合实施。在一些布置中,控制器110的软件/固件可存储于存储器阵列130或任何其它合适计算机可读存储媒体中。

控制器110包含用于执行本文中所描述的功能以及其它功能的合适处理及存储器能力(例如一或多个中央处理单元(CPU))。如所描述,控制器110管理NAND闪存装置135的各种特征,其包含(但不限于)I/O处置、读取、写入/编程、擦除、监测、记录、错误处置、废弃项目收集、损耗均衡、逻辑到物理地址映射、数据保护(加密/解密、循环冗余校验(CRC))、ECC、数据加扰及其类似者。因此,控制器110提供对NAND闪存装置135的可见性。

主机101经由符合存储接口标准的主机接口105连接到非易失性存储装置100(例如控制器110)。针对主机接口105实施的通信接口标准的实例包含例如(但不限于)串行高级技术附件(SATA)、串行附加SCSI(SAS)、外围组件互连高速(PCIe)等的标准。主机接口105(例如命令解析器)可经由通信接口从主机101接收命令(例如写入命令、读取命令、修剪/取消映射/解除分配命令等)及其相关联数据,且处理关于相关联数据的命令。

例如,关于写入操作,主机接口105从主机101接收写入命令及待写入数据。主机接口105解析命令且经由数据路径112(例如写入数据路径126)将数据提供到闪存接口118。沿着写入数据路径126,纠错系统120(例如编码器122)编码数据且沿写入数据路径126的剩余者将经编码数据提供到闪存接口118。闪存接口118将经编码数据编程到存储器阵列130。

关于读取操作,闪存接口118从存储器阵列130读取数据(对应于包含于来自主机101的读取命令中的逻辑地址)且经由数据路径112(例如读取数据路径128)将数据提供到主机接口105。沿着读取数据路径128,纠错系统120(例如解码器124)解码数据且沿读取数据路径128的剩余者将经解码数据提供到主机接口105。主机接口105将数据提供到主机101。

纠错系统120可包含或否则实施一或多个ECC编码器(称为编码器122)及一或多个ECC解码器(称为解码器124)。编码器122经配置以使用至少一个合适ECC编码编程到存储器阵列130(例如,编程到NAND闪存装置135)的数据(例如输入有效负载)。解码器124经配置以解码经编码数据以纠正与读取操作有关的编程错误、由用非最佳阈值读取引起的错误、由滞留/读取干扰应力引起的错误等。为了实现低复杂性处理,纠错系统120在控制器110的硬件及/或固件上实施。

数据路径112(例如写入数据路径126及读取数据路径128)可为在控制器110上或由控制器110实施的物理或虚拟/软件通道或总线。数据路径112可在主机接口105与闪存接口118之间载送数据。数据路径112可包含一或多个触发器及半导体装置上的其它组件。尽管展示为主机接口105与闪存接口118之间的连续路径,但数据路径可通过在DRAM 114及/或SRAM 116中暂时分级或缓冲数据来时间分割。

如所展示,数据可在缓冲存储器中暂时缓冲,作为其通过数据路径112的部分。此类缓冲存储器包含(例如)DRAM 114及SRAM 116,其两者是易失性存储器。例如,沿着写入数据路径126,由编码器122编码的数据可在提供到编码器122之前暂时存储(缓冲或高速缓存)于DRAM 114或SRAM 116中的一或多者中。因而,DRAM 114或SRAM 116中的一或多者对应于写入缓冲器。沿着读取数据路径128,在解码器124处解码的数据可在提供到主机接口105之前存储(缓冲或高速缓存)于DRAM 114或SRAM 116中的一或多者中。因而,DRAM 114或SRAM 116中的一或多者对应于读取缓冲器。

在一些实例中,SRAM 116是在控制器110本地或可操作地耦合到控制器110的存储器装置。例如,SRAM 116可为位于控制器110的芯片上的片上SRAM存储器。在一些实例中,DRAM 114可使用控制器110外部的存储装置100的存储器装置实施。例如,DRAM 114可为位于除控制器110的芯片之外的芯片上的DRAM。在一些实施方案中,缓冲存储器可使用在控制器110内部及外部(例如在控制器110的芯片上及芯片外)的存储器装置实施。例如,缓冲存储器可使用内部SRAM 116及外部DRAM 114两者实施。在此实例中,控制器110包含使用单个地址空间内的存储器地址的内部处理器及控制内部SRAM 116及外部DRAM 114两者、基于效率选择将数据放置于内部SRAM 116还是外部DRAM 114上的存储器控制器。换句话说,内部SRAM 116及外部DRAM 114像单个存储器一样被寻址。在其它实施方案中,内部SRAM 116或外部DRAM 114中的一者用于缓冲数据。DRAM 114及SRAM 116用于说明属于控制器110或耦合到控制器110的外部及内部缓冲存储器。可使用其它类型的缓冲存储器,易失性或非易失性。

闪存接口118可包含或可操作地耦合到一或多个非易失性存储器通道控制器(未展示),其也称为闪存控制器。存储器阵列130包含一或多个非易失性(非暂时性)NAND闪存装置135,其中每一者可包含通过闪存总线(例如存储器通道)耦合到非易失性存储器通道控制器的多组裸片。通道控制器包含调度程序逻辑(例如调度程序),其控制关于存储器阵列130的存储器命令/操作(例如写入命令、读取命令、废弃项目收集、修剪/取消映射/解除分配命令等)的调度。例如,通道控制器从闪存接口118的闪存接口层取得存储器命令且在个别存储器通道上调度命令,从而执行存储器总线控制信令及数据传送到存储器裸片且检查命令成功或失败的存储器裸片状态。

尽管非易失性存储器装置(例如NAND闪存装置135)在本文中作为实例呈现,但所公开的方案可在通过接口连接到主机101的任何存储系统或装置上实施,其中此系统暂时或永久存储数据供主机101以后检索。

辐射(例如中子、α粒子等)可引起在半导体装置中发生软错误。尽管软错误通常没有硬错误那么频繁,但软错误可由于位意外改变其逻辑值而损害数据纠正及控制器功能性。通常,存在两种类型的软错误。芯片级软错误由粒子撞击硅裸片或存储器单元的芯片引起。系统级软错误由在处理数据时(例如当其在总线上时)影响数据的噪声现象引起。在控制器110内,一旦软错误引入到数据中,则可能难以确定正确数据。

鉴于数据路径112包含或耦合到组件(例如DRAM 114、SRAM 116、触发器、总线及半导体装置上的其它组件),本文中所公开的布置通过改进沿数据路径112发生的软错误的检测及纠正来提高非易失性存储装置100的可靠性。

通常,控制器110添加额外编码到数据(除由纠错系统120提供的ECC保护之外)以检测及纠正软错误。此额外编码的实例包含端到端错误检测(E3D)编码。当采用E3D编码时,响应于主机接口105接收从主机101写入的数据(称为用户数据或信息位)且在数据进入数据路径112之前,E3D签名使用E3D编码产生。签名作为元数据附加到数据。一旦附加,则签名及用户数据被视为用户数据且被相应处置。即,在写入操作期间,用户数据及其附加E3D签名两者沿写入数据路径126传送,由编码器122编码,且经由闪存接口118编程到存储器阵列130。换句话说,通常,编码器112产生用户数据及其附加E3D签名两者而非仅用户数据的冗余位。将包含用户数据、E3D签名及冗余位的码字编程到存储器阵列130。

响应于从主机接收用于相同数据的读取命令,闪存接口118从存储器阵列130读取码字。闪存接口118经由读取数据路径128将码字提供到解码器124。解码器124解码码字且纠正任何硬错误。包含用户数据及其附加E3D签名的经解码数据沿读取数据路径128的剩余者传送到主机接口105。就在将经解码数据提供到主机101之前,检查E3D签名以验证用户数据。响应于在E3D验证期间检测到错误,将读取错误指示提供到主机101。响应于接收读取错误指示,主机101可尝试执行另一读取操作。

此类常规方案无法充分解决控制器110中的软错误。软错误的影响取决于控制器110内发生软错误的位置。在一个实例中,在读取或写入操作期间,在编码器122与闪存接口118之间、接口118与解码器124之间、闪存接口118处及存储器阵列130处发生的错误可由纠错系统120处置。特定来说,在编码器122与闪存接口118之间、接口118与解码器124之间及闪存接口118处发生的软错误可通过纠错系统120处的ECC编码及解码来检测及修复,如同在存储器阵列130中发生的错误。假设纠错系统120如期运行,当主机101接收数据时,此类错误不应存在。

在另一实例中,在读取操作期间,软错误可在数据由解码器124解码及修复之后且在数据到达主机接口105之前沿读取数据路径128发生。常规E3D方案可检测到此错误且将读取错误指示提供到主机101。鉴于存储到存储器阵列130的数据是正确的且软错误发生于读取操作期间,主机101可重读数据且期望正确数据。此类软错误同样可发生于垃圾收集操作期间,其中存储器块内的有效存储器页首先被读取,接着在擦除原始存储器块之前写回到不同、新擦除的存储器块,因此释放由所述块中的无效存储器页占用的空间。在常规系统中,一旦错误经编码且写入到存储器阵列130,则废弃项目收集中的此错误变成恒定错误。即使常规E3D方案可检测到此类错误且将读取错误指示提供到主机101,但由主机101重读数据将再次产生错误。在这方面,错误永远无法修复。

在又一实例中,在写入操作期间,软错误可在数据由编码器122编码之前沿写入数据路径126发生。鉴于软错误发生于ECC保护之前,编码器122编码具有软错误的错误数据,且纠错系统120无法修复此软错误。经编码错误数据写入到存储器阵列130。在后续读取操作期间,即使常规E3D方案可检测到错误,但后续重读操作将获得相同错误。因此,常规方案不足以修复此类软错误。此类软错误同样可发生于废弃项目收集操作期间,其中存储器块中的有效存储器页被正确读取,但接着将与软错误一起写入的数据编码到新擦除的存储器块中。

本文中所公开的布置解决常规软错误保护方案的缺陷。在这方面,图2是说明根据一些实施方案的实例软错误检测结构200的框图。图3是说明根据一些实施方案的使用软错误检测结构200写入数据的实例方法300的流程图。参考图1到3,软错误检测结构200说明在主机101与存储器阵列130之间通过其来处理及保护数据的实例机制。方法300由控制器110在写入操作中执行。

在305,控制器110(例如主机接口105)从主机101接收待写入的用户数据210。用户数据210也可称为信息位。在310,响应于在主机接口105处接收用户数据210,控制器110使用用户数据210产生签名D1 220。签名D1 220也可称为端到端(E2E)错误保护签名。在一些实例中,D1 220使用主机接口105产生。

在315,控制器110通过数据路径112(写入数据路径126)处理用户数据210。例如,用户数据210可暂时存储于写入缓冲器中(例如在DRAM 114或SRAM 116中的一或多者中),且可经由写入数据路径126的总线/通道传送,直到数据到达纠错系统120。纠错系统120(编码器122)经由写入数据路径126接收用户数据210及D1 220。

在320,控制器110(例如编码器122)使用用户数据210(无D1 220)产生签名D2230,作为编码过程的部分。在325,编码器122将D2 230附加到用户数据210(无D1 220)。此外,在330,使用一或多个合适ECC,编码器112使用用户数据210(输入有效负载)及其附加D2230(冗余位)(无D1 220)产生码字。此码字由系统码形成,系统码通过用户数据210嵌入于输出码字中的事实来识别。其中一种形式包含用户数据210与冗余位D2 230级联。由系统码形成的此码字能够直接存取及验证用户数据210,而不必像非系统码的情况一样显式解码码字。

在335,控制器110(例如编码器122)确定用户数据210是否使用D1 220验证。在一些实例中,335在编码用户数据210且产生码字之后执行。使用D1 220验证用户数据210对应于确定在主机接口105与编码器122之间在沿写入数据路径126处理用户数据210时没有软错误发生。另一方面,使用D1 220验证用户数据210失败对应于检测到在主机接口105与编码器122之间在沿写入数据路径126处理用户数据210时至少一个软错误发生。响应于基于D1 220确定用户数据210的副本未被验证(335:否),控制器110在350通过主机接口105将写入错误指示发送到主机101。主机101可尝试通过使用另一写入命令再次将用户数据210发送到主机接口105来重写用户数据210。

响应于基于D1 220确定用户数据210的副本被验证(相同于在305从主机接收的内容)(335:是),控制器110在340将码字写入到非易失性存储器(例如存储器阵列130)。例如,编码器122将码字提供到闪存接口118,同时调度将码字写入到NAND闪存装置135中的一或多者的写入操作。在345,控制器110在335:是之后或340之后从存储器移除D1 220。在这方面,在335:是之后,D1 220不存储于存储器阵列130中。因此,存储于存储器阵列130中的内容是从用户数据210及D2 230产生的码字,且码字不基于D1 220产生。

图4是说明根据一些实施方案的使用软错误检测结构200读取数据的实例方法400的流程图。参考图1到4,方法400由控制器110在读取操作中执行。

在405,控制器110(例如闪存接口118)响应于从主机101接收的读取命令而从非易失性存储器(例如存储器阵列130)读取码字。在410,控制器110(例如纠错系统120)使用ECC解码码字且修复错误。例如,解码器124可使用由编码器122在编码过程中使用的一或多个ECC解码码字以修复用户数据210及其附加D2 230中的任何错误。在使用ECC执行错误检测及纠正之后,可识别用户数据210及D2 230。

在使用ECC执行错误检测及纠正之后,控制器110在415使用用户数据210(无D2230)产生D1 220。在417,将D1 220附加到用户数据210(无D2 230)。在415产生D1 220的机制可相同于在310产生D1 220的机制。

在420,控制器110(例如纠错系统120)基于D2 230确定解码是否成功。在一些实例中,420在使用ECC检测及修复错误(在410)之后且在产生Dl 220之后执行。鉴于D2 230使用无D1 220的用户数据210产生,此验证过程不涉及D1 220。鉴于D2 230的实例是CRC冗余位,解码器124可使用CRC冗余位确定解码是否成功。响应于基于D2 230确定解码不成功(420:否),控制器110(闪存接口118)可在450执行其中再次从存储器阵列130中的相同物理地址读取相同码字的读取重试操作,且方法400返回到405。

另一方面,响应于基于D2 230确定解码成功(420:是),控制器110(解码器124)在425移除D2。在430,控制器110通过数据路径112(读取数据路径128)处理用户数据210。例如,用户数据210可暂时存储于读取缓冲器中(例如在DRAM 114或SRAM 116中的一或多者中),且可经由读取数据路径128的总线/通道传送,直到数据到达主机接口105。主机接口105经由读取数据路径128接收用户数据210及D1 220。

在435,控制器110确定用户数据210是否使用D1 220验证。使用D1 220验证用户数据210对应于确定在主机接口105与解码器124之间在沿读取数据路径128处理用户数据210时没有软错误发生。另一方面,使用D1 220验证用户数据210失败对应于检测到在主机接口105与解码器124之间在沿读取数据路径128处理用户数据210时至少一个软错误发生。响应于基于D1 220确定用户数据210未被验证(435:否),控制器110在445通过主机接口105将读取错误指示发送到主机101。响应于基于D1 220确定用户数据210被验证(相同于在305从主机接收的内容)(435:是),控制器110在440通过主机接口105将用户数据210发送回主机101。

在其中以块为单位擦除数据的废弃项目收集中,待擦除块可含有具有有效数据的页。因此,在废弃项目收集中,有效数据从待擦除块的一或多个页读取且接着写入到另一新擦除块上的一或多个页。换句话说,废弃项目收集包含读取操作及写入操作。

与废弃项目收集有关的读取操作可包含405到425及450。例如,可在405从非易失性存储器读取码字,其中码字对应于移动到另一块的有效数据。在410,使用ECC解码码字且修复错误。在415,使用用户数据210产生D1 220。在320,基于D2 230评估用户数据210。响应于使用D2 230确定用户数据210有效(420:是),在425移除D2。另一方面,响应于使用D2 230确定用户数据210无效(420:否),在450从非易失性存储器重读码字。

与废弃项目收集有关的写入操作同样可包含320到345。写入操作在读取操作之后。例如,在320,可使用用户数据210(无D1 220)产生D2 230。在325,将D2 230附加到用户数据210(无D1 220)。在330,通过编码用户数据210及D2 230(无D1 220)来产生码字。在335,使用在415产生的D1评估用户数据210。响应于使用D1 220确定用户数据210有效(335:是),在340将码字写入到非易失性存储器中的另一块中。另一方面,响应于使用D1 220确定用户数据210无效(335:否),从非易失性存储器重读码字,而非将任何写入错误指示发送到主机101。

因此,鉴于软错误被实时检测,软错误在写入操作及废弃项目收集操作中写入到存储器阵列130之前被检测。响应于检测到软错误,控制器110请求主机101重发用户数据210。

图5是说明根据一些实施方案的用于产生签名及冗余位的实例机制的框图。参考图1到5,图5说明用于产生签名D1 220及冗余位D2 230的实例机制。

编码器122可编码输入位520以产生存储于存储器阵列130中的码字。当采用系统码时,输入位520包含输入有效负载525(其对应于用户数据210的信息位)及附加到输入有效负载525的D2 230。在一些实例中,输入有效负载525包含由主机101引入用于RAID或擦除编码的信息位及冗余位。D2 230的实例是系统ECC位及额外CRC位。鉴于ECC+CRC编码可被视为外编码过程,D2 230的位也可称为“外奇偶校验位”。D 230也可称为由编码器122产生的冗余位。ECC位用于解码及纠错过程,而CRC位用于验证解码及纠错过程是否成功,因为ECC解码可能错误解码码字。例如,解码器124可使用一些冗余位修复错误且使用一些其它冗余位通过CRC验证成功解码过程。ECC码的实例包含(但不限于)博斯-乔赫里-霍克文黑姆(BCH)及低密度奇偶校验(LDPC)码。

控制器110可使用用户数据210产生D1 220。用户数据210的信息位可分成多个(N个)输入有效负载,称为输入有效负载A 510a、输入有效负载510b、…及输入有效负载N510n。输入有效负载510a到510n中的每一者的大小取决于主机101的数据粒度。

在一些布置中,主机101可在多个帧中发送用户数据210,每一帧的大小与输入有效负载510a到510n中的每一者的大小相当。例如,主机101的数据粒度是512个字节。为了传送具有4096个字节的大小的用户数据210,用户数据210的8个帧(例如N=8)从主机101传送到主机接口105。控制器110可确定每一帧(例如输入有效负载510a到510n中的每一者)的签名(例如具有2个字节的大小)。因此,D1 220包含多个签名,其中每一者使用用户数据210的帧(例如输入有效负载510a到510n中的一者)产生。在此实例中,D1 220具有16个字节的大小。D1 220的实例是CRC冗余位。

纠错系统120(例如编码器122及/或解码器124)及/或所采用的ECC的数据粒度可不同于主机101的数据粒度。例如,编码器122及解码器124可基于4096个字节的帧大小(或单位)来编码及解码数据。在其中用户数据210具有4096个字节的大小的实例中,编码器112可产生用户数据210的所有位的D2 230(例如具有8个字节)。因此,用于产生D1 220及D2230的算法由于主机101的数据粒度(帧大小)可不同于纠错系统120及/或ECC的数据粒度(帧大小)而不同。如所展示,D1 220的大小及D2 230的大小不同。D2 230的实例是LDPC冗余位及CRC校验位。

码率由码字的信息内容(称为有效负载,例如输入有效负载525)与码字的总大小之比界定。例如,对于含有k个信息位及r个冗余位的码字,码率R

较低码率(更多冗余位)对应于较高纠错能力。鉴于D1 220未存储于存储器阵列130中,本文中所公开的布置提高ECC纠错能力。此允许编码器122产生更多ECC冗余位用于纠错,因此降低实际码率。

在一些布置中,D1可与纠错系统120共享,使得D1可用作软错误检测及ECC解码确认两者的签名。在此类布置中,编码器122可无需在D2中包含CRC位。

在一些实施方案中,从主机101接收的原始用户数据210可通过函数F,其输出不同于原始用户数据210的函数输出数据。换句话说,函数F修改原始用户数据210。函数输出数据通过写入数据路径126,在编码器122处编码,存储(作为码字)于存储器阵列130中,从存储器阵列130读取(作为码字),由解码器124解码,及通过读取数据路径128。在将用户数据210提供到主机101之前,函数输出数据通过反函数F

在涉及函数F的情况中,在一些布置中,主机接口105使用从主机101接收的原始用户数据210产生D1 220或620。因此,为了执行用户数据210的验证(例如,在335、435、730及825),恢复原始用户数据210以对原始用户数据210执行验证。为此,输出函数数据通过反函数F

在这方面,图6是说明根据一些实施方案的使用单个CRC签名的实例软错误检测结构600的框图。图7是说明根据一些实施方案的使用软错误检测结构600写入数据的实例方法700的流程图。参考图1到7,软错误检测结构600说明在主机101与存储器阵列130之间通过其来处理及保护数据的实例机制。方法700由控制器110在写入操作中执行。

在705,控制器110(例如主机接口105)从主机101接收待写入的原始用户数据210。原始用户数据210也可称为信息位。在710,控制器110响应于在主机接口105处接收原始用户数据210而使用原始用户数据210产生签名E2E 620。E2E 620可为用于错误保护的ECC签名,例如CRC冗余位。在一些实例中,E2E 620使用主机接口105产生。在715,将E2E 620附加到原始用户数据。

在720,控制器110(例如主机接口105)使用函数F及密钥确定函数输出数据。例如,原始用户数据210及其附加E2E 620可通过函数F,函数F基于密钥输出函数输出数据。函数输出数据包含用户数据”610及E2E”630。用户数据”610不同于原始用户数据210,且E2E”630不同于E2E 620。函数F的实例包含(但不限于)加密函数、加扰函数等。

在725,控制器110通过数据路径112(写入数据路径126)处理函数输出数据(包含用户数据”610及E2E”630)。例如,函数输出数据可暂时存储于写入缓冲器中(例如在DRAM114或SRAM 116中的一或多者中),且可经由写入数据路径126的总线/通道传送,直到函数输出数据到达纠错系统120。纠错系统120(编码器122)经由写入数据路径126接收函数输出数据。

在730,使用一或多个合适ECC,编码器112使用函数输出数据(输入有效负载)产生码字,在一些实例中,作为710的编码过程的一部分,编码器112使用函数输出数据产生签名(表示为ECC 640)。签名ECC 640可为CRC冗余位。在一些实例中,签名ECC 640作为码字的一部分附加到经编码函数输出数据(包含用户数据”610及E2E”630)。

在735,控制器110(例如编码器122)确定原始用户数据210是否使用E2E 620验证。在一些实例中,735在编码函数输出数据且产生码字之后执行。特定来说,在735,使函数输出数据的副本通过反函数F

响应于基于F

图8是说明根据一些实施方案的使用使用单个CRC签名的软错误检测结构600读取数据的实例方法800的流程图。参考图1到8,方法800由控制器110在读取操作中执行。

在805,响应于从主机101接收的读取命令,控制器110(例如闪存接口118)从非易失性存储器(例如存储器阵列130)读取码字。码字包含经编码函数输出(包含用户数据”610及E2E”630)及其附加ECC 640。在810,控制器110(例如纠错系统120)使用ECC解码码字且修复错误。例如,解码器124可使用由编码器122在编码过程中使用的一或多个ECC来解码码字以修复函数输出数据中的任何错误。在使用ECC执行错误检测及纠正之后,可识别函数输出数据(包含用户数据”610及E2E”630)。

在使用ECC执行错误检测及纠正之后,在815,控制器110(例如纠错系统120)基于签名ECC 640确定解码是否成功。在一些实例中,815在使用ECC检测及修复错误(在810)之后执行。此验证过程涉及在730产生的签名ECC 640。解码器124可使用签名ECC 640的CRC冗余位确定解码是否成功。响应于基于ECC 640确定解码不成功(815:否),在840,控制器110(闪存接口118)可执行其中再次从存储器阵列130中的相同物理地址读取相同码字的读取重试操作,且方法800返回到805。

另一方面,响应于基于ECC 640确定解码成功(815:是),控制器110(例如解码器124)在820确定原始用户数据210是否使用E2E 620验证。在一些实例中,820在成功解码函数输出数据之后执行。换句话说,经解码函数输出数据(包含用户数据”610及E2E”630)通过反函数F

另一方面,响应于基于F

在830,控制器110(例如解码器124)确定原始用户数据210是否使用E2E 620验证。例如,函数输出数据的副本通过反函数F

图9是说明根据一些实施方案的使用使用单个CRC签名的图6的软错误检测结构600写入及读取数据的实例方法900的流程图。参考图1到9,方法900是方法700及800的特定实施方案。方法700、800及900提供永久软错误保护(用于在框901内表示的部分内的组件/元件内传送的用户数据210)及E2E软错误保护(用于在框902内表示的部分内的组件/元件内传送的用户数据210)。鉴于仅将单个CRC添加到用户数据210,方法700、800及900提高码率。另外,软错误可在写入到闪存(在写入操作及废弃项目收集期间)且变成恒定错误之前被检测到。

如图9中所展示,在写入过程中,从主机101接收用户数据或UD(例如用户数据210)。在905,执行CRC过程以产生签名E2E(例如E2E 620)。将E2E附加到UD。在910,将UD及其附加E2E输入到函数F中以使用密钥产生函数输出。函数F的函数输出表示为F(UD+E2E),其对应于包含用户数据”610及E2E”630的函数输出。函数输出如本文中所描述那样沿数据路径移动,直到其到达纠错系统120(例如编码器122),纠错系统120在915使用F(UD+E2E)作为输入来执行编码过程以编码F(UD+E2E)且产生ECC签名(例如ECC 640)。F(UD+E2E)的副本在920使用相同密钥运行通过反函数F

在读取过程中,码字在940从NVM读取且在945解码。在根据ECC修复错误之后,确定F(UD+E2E)。在950,F(UD+E2E)使用相同密钥运行通过反函数F

在废弃项目收集过程中,F(UD+E2E)将在被读取之后写入到不同、新擦除的块。因此,响应于在955通过检查,F(UD+E2E)将在915编码。接着,如所描述那样执行块920、930、935。如所展示,永久软错误保护901防止软错误(例如,在废弃项目收集过程中)一直发生到初始写入点可变得(永久)传播,因为对UD执行每一废弃项目收集过程。

图10是说明根据一些实施方案的使用两个CRC签名的实例软错误检测结构1000的框图。图11是说明根据一些实施方案的使用软错误检测结构1000写入数据的实例方法1100的流程图。参考图1到11,软错误检测结构1000说明在主机101与存储器阵列130之间通过其来处理及保护数据的实例机制。方法1100由控制器110在写入操作中执行。

在1105,控制器110(例如主机接口105)从主机101接收待写入的原始用户数据210。原始用户数据210也可称为信息位。在1110,控制器110响应于在主机接口105处接收原始用户数据210而使用原始用户数据210产生签名E2E 1020。E2E 1020可为用于错误保护的ECC签名,例如CRC冗余位。在一些实例中,E2E 1020使用主机接口105产生。签名E2E 1020是第一E2E签名。在1115,将E2E 620附加到原始用户数据。

在1120,控制器110(例如主机接口105)使用函数F及密钥确定函数输出数据。例如,原始用户数据210及其附加E2E 1020可通过函数F,函数F基于密钥输出函数输出数据。函数输出数据包含用户数据”1010及E2E”1030。用户数据”1010不同于原始用户数据210,且E2E”1030不同于E2E 1020。函数F的实例包含(但不限于)加密函数、加扰函数等。

在1125,控制器110使用函数输出数据(包含用户数据”1010及E2E”1030)产生签名E2E(2)1040。E2E(2)1040可为用于错误保护的ECC签名,例如CRC冗余位。在一些实例中,E2E(2)1040使用主机接口105产生。签名E2E(2)1030是第二E2E签名。在1130,将E2E(2)1040附加到函数输出数据。

在1135,控制器110通过数据路径112(写入数据路径126)处理函数输出数据(包含用户数据”1010及E2E”1030)及其附加E2E(2)1040。例如,函数输出数据及其附加E2E(2)1040可暂时存储于写入缓冲器中(例如,在DRAM 114或SRAM 116中的一或多者中),且可经由写入数据路径126的总线/通道传送,直到函数输出数据及其附加E2E(2)1040到达纠错系统120。纠错系统120(编码器122)经由写入数据路径126接收函数输出数据及其附加E2E(2)1040。

在1140,使用一或多个合适ECC,编码器112使用函数输出数据及其附加E2E(2)1040(输入有效负载)产生码字。在一些实例中,作为1140的编码过程的一部分,编码器112使用函数输出数据及其附加E2E(2)1040产生签名(表示为ECC 1050)。签名ECC 1050可为CRC冗余位。在一些实例中,签名ECC 1050作为码字的一部分附加到经编码函数输出数据(包含用户数据”610及E2E”630)及其附加E2E(2)1040。

在1145,控制器110(例如编码器122)确定函数输出数据是否使用E2E(2)1040验证。在一些实例中,1145在编码函数输出数据及其附加E2E(2)1040且产生码字之后执行。特定来说,在1145,使用签名E2E(2)1040验证函数输出数据(包含用户数据”1010及E2E”1030)的副本。验证函数输出数据对应于确定在主机接口105与编码器122之间在沿写入数据路径126处理函数输出数据时没有软错误发生。另一方面,验证函数输出数据失败对应于检测到在主机接口105与编码器122之间在沿写入数据路径126处理函数输出数据时至少一个软错误发生。响应于确定函数输出数据的副本未被验证(1145:否),控制器110在1155通过主机接口105将写入错误指示发送到主机101。主机101可尝试通过使用另一写入命令再次将用户数据210发送到主机接口105来重写用户数据210。

响应于确定函数输出数据的副本被验证(1145:是),控制器110在1150将码字写入到非易失性存储器(例如存储器阵列130)。码字包含经编码函数输出(包含用户数据”1010及E2E”1030)及其附加签名E2E(2)1040及ECC 1050。例如,编码器122将码字提供到闪存接口118,同时调度将码字写入到NAND闪存装置135中的一或多者的写入操作。在此方面,函数输出数据、E2E(2)1040及ECC 1050在1145:是之后作为码字的一部分存储于存储器阵列130中。

图12是说明根据一些实施方案的使用使用两个CRC签名的软错误检测结构1000读取数据的实例方法1200的流程图。参考图1到12,方法1200由控制器110在读取操作中执行。

在1205,控制器110(例如闪存接口118)响应于从主机101接收的读取命令而从非易失性存储器(例如存储器阵列130)读取码字。码字包含经编码函数输出(包含用户数据”1210、E2E”1030)、E2E(2)1040及ECC 1050。在1210,控制器110(例如纠错系统120)使用ECC解码码字且修复错误。例如,解码器124可使用由编码器122在编码过程中使用的一或多个ECC来解码码字以修复函数输出数据中的任何错误。在使用ECC执行错误检测及纠正之后,可识别函数输出数据(包含用户数据”1010及E2E”1030)及其附加E2E(2)1040。

在使用ECC执行错误检测及纠正之后,在1215,控制器110(例如纠错系统120)基于签名ECC 1050确定解码是否成功。在一些实例中,1050在使用ECC检测及修复错误(在1210)之后执行。此验证过程涉及在1140产生的签名ECC 1050。解码器124可使用签名ECC 1050的CRC冗余位确定解码是否成功。响应于基于ECC 1050确定解码不成功(1215:否),在1240,控制器110(闪存接口118)可执行其中再次从存储器阵列130中的相同物理地址读取相同码字的读取重试操作,且方法1200返回到1205。

另一方面,响应于基于ECC 1050确定解码成功(1215:是),控制器110(例如解码器124)在1220确定函数输出数据(包含用户数据”1210、E2E”1030)是否使用E2E(2)1050验证。在一些实例中,1220在成功解码函数输出数据及其附加E2E(2)1040之后执行。函数输出数据使用签名E2E(2)1040验证。响应于确定函数输出数据的副本未被验证(1220:否),在1240,控制器110(闪存接口118)可执行其中再次从存储器阵列130中的相同物理地址读取相同码字的读取重试操作,且方法800返回到1205。

另一方面,响应于确定函数输出数据的副本被验证(1220:是),控制器110(解码器124)在1225通过数据路径112(读取数据路径128)处理函数输出数据。例如,函数输出数据可暂时存储于读取缓冲器中(例如,在DRAM 114或SRAM 116中的一或多者中),且可经由读取数据路径128的总线/通道传送,直到数据到达主机接口105。主机接口105经由读取数据路径128接收函数输出数据。

在1230,控制器110(例如解码器124)使用E2E 1020确定原始用户数据210是否被验证。例如,使函数输出数据的副本通过反函数F

图13是说明根据一些实施方案的使用使用两个CRC签名的图7的软错误检测结构1000写入及读取数据的实例方法1300的流程图。参考图1到13,方法1300是方法1100及1200的特定实施方案。方法1100、1200及1300提供永久软错误保护(用于在框1301内表示的部分内的组件/元件内传送的用户数据210)及E2E软错误保护(用于在框1302内表示的部分内的组件/元件内传送的用户数据210)。鉴于反函数F

如图13中所展示,在写入过程中,从主机101接收用户数据或UD(例如用户数据210)。在1305,对UD执行第一CRC过程(CRC1)以产生签名E2E(例如E2E 1020)。将E2E附加到UD。在1310,将UD及其附加E2E输入到函数F中以使用密钥产生函数输出。函数F的函数输出表示为F(UD+E2E),其对应于包含用户数据”1010及E2E”1030的函数输出。在1315,对UD执行第二CRC过程(CRC2)以产生签名E2E(2)(例如E2E(2)1040)。将E2E(2)附加到函数输出F(UD+E2E)。

函数输出及其附加E2E(2)沿本文中所描述的数据路径移动,直到其到达纠错系统120(例如编码器122),纠错系统120在1320使用F(UD+E2E)及其附加E2E(2)作为输入来执行编码过程以编码F(UD+E2E)及其附加E2E(2)且产生ECC签名(例如ECC 1050)。在1325,使用E2E(2)签名验证F(UD+E2E)的副本。响应于确定F(UD+E2E)无效(失败),使写入错误返回到主机101。响应于确定F(UD+E2E)有效(通过),在1330使经编码F(UD+E2E)、E2E(2)及ECC签名作为码字写入到NVM(例如存储器阵列120)。写入过程结束。

在读取过程中,码字在1335从NVM读取且在1340解码。在根据ECC修复错误之后,确定F(UD+E2E)及其附加E2E(2)。在1345,使用E2E(2)签名验证其附加F(UD+E2E)。响应于确定F(UD+E2E)无效(失败),从NVM重读码字。响应于确定F(UD+E2E)有效(通过),F(UD+E2E)继续通过数据路径,直到其到达主机接口105。接着,在1350,F(UD+E2E)使用相同密钥运行通过反函数F

在废弃项目收集过程中,F(UD+E2E)将被写入到不同、新擦除的块。因此,响应于在1345通过检查,F(UD+E2E)将在1320编码。接着,如所描述那样执行块1325及1330。如所展示,永久软错误保护1301防止软错误(例如在废弃项目收集过程中)一直发生到初始写入点可变得(永久)传播,因为对UD执行每一废弃项目收集过程。

鉴于某些类型的存储器(例如缓冲存储器(例如SRAM 116、DRAM 114等))对软错误敏感,通常将专用ECC添加到存储器(例如,通过在存储器写入期间编码用户数据及在存储器读取期间解码用户数据)以保护存储器免受软错误。在一些情况中,ECC存储器可维持存储器系统免受单个位错误,使得从每一码字读取的数据始终相同于已写入的数据,即使实际存储位中的一者已翻转到错误状态。然而,大多数非ECC存储器无法检测错误,尽管支持奇偶校验的一些非ECC存储器允许检测无法纠正。应注意,存储器本身的额外ECC逻辑增加存储器区域且损害合成时序收敛,因此限制存储器存取频率。

如图1中所展示,DRAM 114及SRAM 116沿数据路径114定位于主机接口105与纠错系统120之间。为了减少软错误的数目,可在数据路径112的末端处添加ECC以减少或消除SRAM 116及DRAM 114中的软错误。

在这方面,图14是说明根据一些实施方案的实例软错误检测结构1400的框图。图15是说明根据一些实施方案的使用软错误检测结构1400写入数据的实例方法1500的流程图。参考图1到15,软错误检测结构1400说明在主机101与存储器阵列150之间通过其来处理及保护数据的实例机制。方法1500由控制器110在写入操作中执行。

在1505,控制器110(例如主机接口105)从主机101接收待写入的用户数据210。用户数据210也可称为信息位。在1510,控制器110响应于在主机接口105处接收用户数据210而使用用户数据210产生签名D3 1420。在一些实例中,D3 1420在通过数据路径112处理用户数据210之前使用主机接口105产生。D3 1420的实例包含使用单错误纠正及双错误检测(SECDED)汉明码产生的冗余位。SECDED汉明码是允许纠正单个位错误及检测双位错误的ECC。

在1515,控制器110通过数据路径112(写入数据路径126)处理用户数据210。例如,用户数据210可暂时存储于写入缓冲器中(例如,在DRAM 114或SRAM 116中的一或多者中),且可经由写入数据路径126的总线/通道传送,直到数据到达纠错系统120。

在纠错系统120(编码器122)经由写入数据路径126接收用户数据210之前,控制器110确定用户数据210是否使用D3 1420验证。使用D3 1420验证用户数据210对应于确定在主机接口105与编码器122之间在沿写入数据路径126处理用户数据210(例如,在缓冲存储器中,例如(但不限于)DRAM 114及SRAM 116)时没有软错误发生。另一方面,使用D3 1420验证用户数据210失败对应于检测到在主机接口105与编码器122之间在沿写入数据路径126处理用户数据210时至少一个软错误发生。响应于基于D3 1420确定用户数据210未被验证(1520:否),控制器110可在1525使用D3 1420纠正软错误(例如通过SECED,如果错误是单个位错误),且方法1500继续到1530。在其中错误是两个或更多个位的情况中,控制器110通过主机接口105将写入错误指示发送到主机101。主机101可尝试通过使用另一写入命令再次将用户数据210发送到主机接口105来重写用户数据210。

响应于基于D3 1420确定用户数据210被验证(相同于在1505从主机接收的内容)(1520:是),在1530,控制器110(例如编码器122)使用用户数据210产生签名D2 230,作为编码过程的部分。在1535,编码器122将D2 230附加到用户数据210。此外,在1540,使用一或多个合适ECC,编码器112使用用户数据210(输入有效负载)及其附加D2 230(冗余位)产生码字。在1545,控制器110将码字写入到非易失性存储器(例如存储器阵列130)。例如,编码器122将码字提供到闪存接口118,同时调度将码字写入到NAND闪存装置135中的一或多者的写入操作。D3 1420不存储于存储器阵列130中。因此,存储于存储器阵列130中的内容是从用户数据210及D2 230产生的码字。

图16是说明根据一些实施方案的使用软错误检测结构1400读取数据的实例方法1600的流程图。参考图1到16,方法1600由控制器110在读取操作中执行。

在1605,控制器110(例如闪存接口118)响应于从主机101接收的读取命令而从非易失性存储器(例如存储器阵列130)读取码字。在1610,控制器110(例如纠错系统120)使用ECC解码码字且修复错误。例如,解码器124可使用由编码器122在编码过程中使用的一或多个ECC来解码码字以修复用户数据210及其附加D2 230中的任何错误。在使用ECC执行错误检测及纠正之后,可识别用户数据210及D2 230。

在1620,控制器110(例如纠错系统120)基于D2 230确定解码是否成功。在一些实例中,1620在使用ECC检测及修复错误(在1610)之后执行。鉴于D2 230的实例是CRC冗余位,解码器124可使用CRC冗余位确定解码是否成功。响应于基于D2 230确定解码不成功(1620:否),在1655,控制器110(闪存接口118)可执行其中再次从存储器阵列130中的相同物理地址读取相同码字的读取重试操作,且方法1600返回到1605。另一方面,响应于基于D2 230确定解码成功(1620:是),控制器110(解码器124)在1625移除D2。

在1630,控制器110响应于D2 230从用户数据210移除而使用用户数据210产生签名D3 1420。如所描述,D3 1420的实例包含使用SECDED汉明码产生的冗余位。在一些实例中,在1630产生的D3 1420及在1510产生的D3 1420可为相同冗余位集或不同冗余位集。在进一步实例中,在1630产生的D3 1420及在1510产生的D3 1420可使用不同类型的ECC码(例如不同类型的SECDED码)或使用不同算法产生。

在1635,控制器110通过数据路径112(读取数据路径128)处理用户数据210。例如,用户数据210可暂时存储于读取缓冲器中(例如,在DRAM 116或SRAM 116中的一或多者中),且可经由读取数据路径128的总线/通道传送,直到数据到达主机接口105。

在主机接口105经由读取数据路径128接收用户数据210之前,在1640,控制器110(例如主机接口105)确定用户数据210是否使用D3 1420验证。使用D3 141420验证用户数据210对应于确定在主机接口105与解码器124之间在沿读取数据路径128处理用户数据210时没有软错误发生。另一方面,使用D1 1420验证用户数据210失败对应于检测到在主机接口105与解码器124之间在沿读取数据路径128处理用户数据210时至少一个软错误发生。响应于基于D3 1420确定用户数据210未被验证(1640:否),控制器110可在1650使用D3 1420纠正软错误(例如,通过SECED,如果错误是单个位错误),且方法1600继续到1645。在其中错误是两个或更多个位的情况中,控制器110通过主机接口105将读取错误指示发送到主机101。

响应于基于D3 1420确定用户数据210被验证(相同于在1505从主机接收的内容)(1640:是),控制器110在1645通过主机接口105将用户数据210发送回主机101。

因此,在关于图14到16公开的机制中,D3 1420(例如SECDED冗余)不存储到存储器阵列150。因此,码率不变。此外,如果检测到单个位软错误,那么控制器110可实时纠正错误且无需请求主机101重发数据。无需对DRAM 114或SRAM 116进行专门保护。

尽管用户数据在本文中用于指代原始数据,但是所公开的过程可使用输入数据实施。输入数据的实例包含(但不限于)从主机接收的用户数据、内部控制器数据(例如来自内部过程的数据,例如数据刷新,其中将已长时间存储于存储器阵列120中且可能遭受保留错误的数据读取及写入到新页/块)、废弃项目收集中涉及的数据(例如,将来自有效页的数据读取及写入到新擦除块)等。

图17是说明根据一些实施方案的使用本文中所公开的软错误检测结构(例如200、600、1000、1400)写入数据的实例方法1500的流程图。方法300、700、1100及1500是方法1700的特定实施方案。在1710,控制器110使用从主机101接收的输入数据210产生第一签名。在1720,控制器110使用至少输入数据产生码字。在1730,控制器110在通过数据路径112处理输入数据之后确定输入数据的有效性。在1740,响应于确定输入数据有效,控制器110将码字写入到非易失性存储器(例如存储器阵列130)。

图18是说明根据一些实施方案的使用本文中所公开的软错误检测结构(例如200、600、1000、1400)读取数据的实例方法1800的流程图。方法400、800、1200及1600是方法1800的特定实施方案。在1810,控制器110从非易失性存储器(例如存储器阵列130)读取码字。在1820,控制器110解码码字以获得至少输入数据。在1830,控制器110在通过数据路径112处理输入数据之后使用第一签名确定输入数据的有效性。在1840,响应于使用第一签名确定输入数据有效,将输入数据发送到主机101。

因此,在本文中所公开的布置中,开销未因检测及纠正编程到存储器阵列130的数据上的软错误而增加。本文中所描述的写入流程的实例可在写入流程及/或废弃项目收集期间检测及纠正任何软错误,因此防止具有软错误的任何数据写入到存储器阵列130。可通过优化E2E错误检测及ECC的奇偶校验数据的利用来提高ECC纠错能力。数据路径中专用于每一存储器的ECC也可减少。此外,可实现数据路径保护及NAND存储区域利用的联合优化。

提供以上描述来使所属领域的技术人员能够实践本文中所描述的各个方面。所属领域的技术人员将易于明白这些方面的各种修改,且本文中所界定的一般原理可应用于其它方面。因此,权利要求书不希望受限于本文中所展示的方面,而是被给予与书面权利要求书一致的全范围,其中以单数参考的元件不希望意味着“有且仅有一个”(除非明确如此说明),而是意味着“一或多个”。除非另外明确说明,术语“一些”指代一或多个。所属领域的一般技术人员已知或以后将知道的以上描述中所描述的各个方面的元件的所有结构及功能等效物以引用方式明确并入本文中且希望由权利要求书涵盖。此外,本文中所公开的任何内容均不希望用于公开,无论此公开内容是否在权利要求书中明确叙述。任何权利要求元件均不应被解释为构件加功能,除非元件使用短语“用于…的构件”明确叙述。

应理解,所公开的过程中步骤的特定顺序或层次是说明性方法的实例。基于设计偏好,应理解,过程中步骤的特定顺序或层次可重新布置,同时仍在以上描述的范围内。所附方法权利要求依取样顺序呈现各个步骤的元件,且不意味着受限于所呈现的特定顺序或层次。

提供所公开实施方案的以上描述来使所属领域的技术人员能够制造或使用所公开标的物。所属领域的技术人员将易于明白这些实施方案的各种修改,且在不脱离以上描述的精神或范围的情况下,本文中所界定的一般原理可应用于其它实施方案。因此,以上描述不希望受限于本文中所展示的实施方案,而是被给予与本文中所公开的原理及新颖特征一致的最广范围。

所说明及描述的各种实例仅作为实例供于说明权利要求书的各种特征。然而,关于任何给定实例所展示及描述的特征不一定受限于相关联实例,而是可与所展示及描述的其它实例一起使用或组合。此外,权利要求书不希望受任何一个实例限制。

上述方法描述及过程流程图仅作为说明性实例提供且不希望要求或暗示各种实例的步骤必须依所呈现的顺序执行。所属领域的技术人员将了解,前述实例中的步骤顺序可依任何顺序执行。例如“之后”、“接着”、“下一”等的词语不希望限制步骤顺序;这些词语仅用于引导读者了解方法的描述。此外,以单数参考的任何权利要求元件(例如使用冠词“一(a/an)”或“所述”)不应被解释为将元件限制为单数。

结合本文中所公开的实例描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚说明硬件及软件的此可互换性,各种说明性组件、块、模块、电路及步骤已在上文大体上根据其功能性描述。此功能性实施为硬件还是软件取决于特定应用及强加于整个系统上的设计约束。技术人员可针对每一特定应用依不同方式实施所描述功能性,但此类实施决定不应被解译为导致脱离本公开的范围。

用于实施结合本文中所公开的实例描述的各种说明性逻辑、逻辑块、模块及电路的硬件可使用经设计以执行本文中所描述的功能的通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、分立门或晶体管逻辑、分立硬件组件或其任何组合实施或执行。通用处理器可为微处理器,但在替代方案中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如DSP及微处理器的组合、多个微处理器、与DSP核结合的一或多个微处理器或任何其它此配置。替代地,一些步骤或方法可由特定于给定功能的电路系统执行。

在一些示范性实例中,所描述功能可以硬件、软件、固件或其任何组合实施。如果以软件实施,那么功能可作为一或多个指令或代码存储于非暂时性计算机可读存储媒体或非暂时性处理器可读存储媒体上。本文中所公开的方法或算法的步骤可体现于可驻留于非暂时性计算机可读或处理器可读存储媒体上的处理器可执行软件模块中。非暂时性计算机可读或处理器可读存储媒体可为可由计算机或处理器存取的任何存储媒体。通过实例但不限于,此类非暂时性计算机可读或处理器可读存储媒体可包含RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁存储装置或可用于以指令或数据结构的形式存储期望程序码且可由计算机存取的任何其它媒体。本文中所使用的磁盘及光盘包含压缩光盘(CD)、激光盘、光盘、数字多功能光盘(DVD)、软盘及蓝光光盘,其中磁盘通常磁性复制数据,而光盘使用激光光学复制数据。上述的组合也包含于非暂时性计算机可读及处理器可读媒体的范围内。另外,方法或算法的操作可作为代码及/或指令的一者或任何组合或集驻留于可并入到计算机程序产品中的非暂时性处理器可读存储媒体及/或计算机可读存储媒体上。

提供所公开实例的以上描述来使所属领域的技术人员能够制造或使用本公开。所属领域的技术人员将易于明白这些实例的各种修改,且在不脱离本公开的精神或范围的情况下,本文中所界定的一般原理可应用于一些实例。因此,本公开不希望受限于本文中所展示的实例,而是被给予与所附权利要求书及本文中所公开的原理及新颖特征一致的最广范围。

相关技术
  • 用于数据存储装置的软错误检测及纠正
  • 用于数据存储系统中的错误检测和纠正的方法和装置
技术分类

06120114736879