动态多级解码的制作方法

文档序号:18009292发布日期:2019-06-25 23:47阅读:167来源:国知局
动态多级解码的制作方法

由于在制造时引入的存储器单元的变化或者由于存储器单元老化时的行为变化,闪存可能将数据错误引入存储在其中的数据。可以采用纠错代码来纠正读取操作期间的数据错误。例如,低密度奇偶校验检查(ldpc)代码可以提供强大的纠错能力。然而,ldpc算法代码会给读取操作增加不必要的延迟。



技术实现要素:

根据本主题技术的方面,提供了一种机器实现的方法,包括:基于先前的解码数据确定多个读取电平电压的序列,并且执行多级解码操作,以使用确定的多个读取电平电压的序列对从多个存储器单元读取的原始数据进行解码。在完成多级解码操作时从多级解码操作返回解码数据,并且基于多级解码操作的结果更新先前的解码数据。

根据本主题技术的方面,提供了一种数据存储系统,包括非易失性存储器设备和控制器。控制器被配置为基于先前的解码数据确定多个读取电平电压的序列,并且执行多级解码操作,以使用确定的多个读取电平电压的序列对从多个存储器单元读取的原始数据进行解码。多级解码操作的每个级包括执行一个或多个解码操作,以使用来自对应于该级的多个读取电平电压的序列中的各自读取电平电压来解码从多个存储器单元读取的原始数据。多级解码操作的各个级被顺序地执行,直到其中一个级中的一个或多个解码操作中的一个成功地解码从多个存储器单元读取的原始数据。在完成多级解码操作时从多级解码操作返回解码数据,并且基于多级解码操作的结果更新先前的解码数据。

根据本主题技术的方面,处理器可读介质由可执行指令编码,这些可执行指令在由处理器执行时执行方法。该方法包括基于先前的解码数据确定多个读取电平电压的序列,并且执行多级解码操作,以使用确定的多个读取电平电压的序列对从多个存储器单元读取的原始数据进行解码。通过递增对应于用于读取成功解码的原始数据的多个读取电平电压的读取电平电压的计数器值,在完成多级解码操作时从多级解码操作返回解码数据,并且基于多级解码操作的结果更新先前的解码数据。基于计数器值确定多个读取电平电压的序列。

根据本主题技术的方面,提供了一种数据存储系统,其包括非易失性存储器和用于基于先前的解码数据确定多个读取电平电压的序列的装置。该数据存储系统还包括用于使用确定的多个读取电平电压的序列执行多级解码操作以解码从多个存储器单元读取的原始数据的装置和用于在完成多级解码操作时返回多级解码操作的解码数据的装置。该数据存储系统还包括用于基于多级解码操作的结果更新先前的解码数据的装置。

应当理解,本公开的其他配置对于本领域技术人员而言将从以下详细描述变得显而易见,其中通过图示的方式示出以及描述了本公开的各种配置。如将认识到的,本公开能够具有其他和不同的配置,并且其若干细节能够在各种其他方面进行修改,所有这些都不脱离本公开的范围。因此,附图和详细描述本质上被认为是例示性的而不是限制性的。

附图说明

图1是示出根据本主题技术的方面的数据存储系统的示例性部件的框图。

图2示出了示例性图表,其图示了根据本主题技术的方面的多级单元闪存中的四种可能的单元编程分布。

图3示出了根据本主题技术的方面的多级解码操作的流程图。

图4示出了根据本主题技术的方面的用于调整多级解码操作的过程的流程图。

具体实施方式

以下列出的详细描述旨在作为本公开的各种配置的描述,并且不旨在表示可以实践本公开的仅有的配置。附图并入本文并构成详细描述的一部分。本详细描述包括具体细节以便提供本公开的彻底理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实践本公开。在一些情况下,结构和部件以框图形式示出,以避免模糊本公开的概念。为了便于理解,相同的部件标有相同的元件编号。

ldpc解码可以利用多级解码操作来解码从诸如nand闪存的非易失性存储器中的一组存储器单元读取的原始数据。可以使用来自不同的读取电平电压的序列的各自读取电平电压从存储器单元读取在解码操作的每个级中处理的原始数据。每个级可执行原始数据上的硬解码操作和/或原始数据上的一个或多个软解码操作。多级解码操作可在序列中一次执行一个级,直到从存储器单元读取的原始数据成功解码。

同一块、一组块、管芯、或一批管芯中的存储器单元可以共用共同的特征,这些特征导致在从块、块组、管芯或一批管芯读取数据时所经历的读取错误的相似性。读取在类似的寿命级从存储器单元读取数据时经历的错误也可能有相似之处。本主题技术利用这些相似性来通过跟踪先前解码操作成功解码从存储器单元读取的原始数据的级和各自读取电平电压,来改善多级解码操作。基于可以缩短多级解码操作的先前成功的解码操作,可以使用读取电平电压的序列来恢复在其他类似位置的存储器单元中经历的读取错误。如下面更详细讨论的,本主题技术通过基于先前的解码数据确定读取电平电压的序列来修改多级解码操作,该先前解码数据指示哪些读取电平电压用于在先前的读取操作中成功解码原始数据。基于先前成功的读取操作对序列中的读取电平电压排序允许在序列中较早地对具有较高成功解码可能性的读取电平电压排序,同时推动读取电平电压,其在序列中稍后成功解码的可能性较低。这样,随着存储器单元老化或操作条件改变,基于先前的读取操作来优化读取电平电压的序列。

图1是示出根据本主题技术的方面的数据存储系统100的示例性部件的框图。数据存储系统100包括控制器102、低密度奇偶校验检查(ldpc)引擎104、存储介质106、以及闪存设备阵列108。如图1中所示,数据存储系统100可以经由主机接口112连接到主机设备110。

控制器102可包括若干内部部件,诸如一个或多个处理器103、只读存储器、闪存部件接口(例如,多路复用器,用于管理沿着与闪存设备阵列108的连接的指令和数据传输)、i/o界面、纠错电路等。控制器102的处理器103可以监视和控制数据存储控制器102中的部件的操作。处理器103和/或控制器102可以是多核处理器、通用微处理器、微控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、可编程逻辑设备(pld)、控制器、状态机、门控逻辑、分立硬件部件或前述的组合。控制器102的一个或多个元件可以集成到单个芯片中。在其他方面,这些元件可以在两个或多个分立组件中实现。

控制器102可被配置为执行代码或指令,以执行本文描述的操作和功能。例如,控制器102可被配置为执行用于管理请求流和地址映射的操作,以及执行计算和生成命令。一个或多个指令序列可存储为控制器102内的存储器上的固件。一个或多个指令序列可以是从存储介质106、闪存设备阵列108读取和存储的或从主机设备110(例如,经由主机接口112)接收的软件。存储介质106和闪存设备阵列108表示机器或计算机可读媒体的示例,其上可以存储可由控制器102执行的指令/代码。机器或计算机可读媒体通常可指用于向控制器102提供指令的任何有形和非暂时性介质或媒体,包括易失性媒体(诸如用于存储媒体102、或用于控制器102内的缓冲器的动态存储器)和非易失性媒体(诸如电子媒体、光学媒体和磁性媒体)。本文描述的操作和功能也可以使用例如逻辑电路或硬件和软件/固件的组合以硬件实现。

在一些方面,存储介质106表示用于临时地存储数据和信息的易失性存储器,这些数据和信息用于管理数据存储系统100。根据本公开的方面,存储介质106是随机存取存储器(ram)诸如双数据速率(ddr)的ram。还可使用其他类型的ram来实现存储介质106。存储介质106可以利用单个ram模块或多个ram模块实现。虽然存储介质106示出为不同于控制器102,但是应当理解,存储介质106可结合到控制器102中而不脱离本公开的范围。另选地,存储介质106可以是非易失性存储器,诸如磁盘、闪存、外围ssd等。

主机接口112被配置为联接到主机设备110,以从主机设备110接收数据并向其发送数据。主机接口112可包括用于将主机设备110可操作地联接到控制器102的电气和物理连接。主机接口112被配置为在主机设备110与控制器102之间传送数据、地址和控制信号。这样,控制器102被配置为响应于来自主机设备110的写入命令,将从主机设备102接收的数据存储在闪存设备阵列108中,以及响应于主机设备110的读取命令,读取存储在闪存设备阵列108中的数据,以及经由主机接口112将读取数据传送到主机设备110。

主机设备110表示被配置为联接到数据存储系统110并将数据存储在存储系统100中的任何设备。主机设备110可以是计算系统,诸如个人计算机、服务器、工作站、膝上型计算机、pda、智能电话等。另选地,主机设备110可以是电子设备,诸如数字相机、数字音频播放器、数字视频录像机等。

如图1中进一步示出,主机设备110和数据存储系统100可经由总线114彼此通信。总线114和接口112可使用合适的接口标准,包括但不限于串行高级技术附件(sata)、高级技术附件(ata)、小型计算机系统接口(scsi)、扩展pci(pci-x)、光纤通道、串行附接scsi(sas)、安全数字(sd)、嵌入式多媒体卡(emmc)、通用闪存(ufs)和外围部件互连express(pcie)。

数据存储系统100可包括内部系统总线115。系统总线115可包括控制总线、地址总线和数据总线的组合,并且将控制器102的部件(例如,处理器和/或其存储器)与数据存储系统100的其他部件连接,包括存储ldpc引擎104、存储介质106、闪存设备阵列108和主机接口112。数据可以在系统总线115上方的各种部件之间传输。系统总线115可驻留在控制器102的部分外部和部分内部中。

主机设备110和数据存储系统100可以经由有线或无线连接彼此通信,并且可以彼此本地或远程。根据一个或多个其他方面,数据存储系统100(或主机接口112)包括无线收发器,以将主机设备110和数据存储系统100彼此进行无线通信。

控制器102可被配置为从主机设备110的存储接口模块116(例如,设备驱动器)接收数据和/或存储访问命令。由存储接口模块116传送的存储访问命令可以包括由主机设备110发出的读取和写入命令。读取和写入命令可以指定用于访问存储在数据存储系统100中的数据的逻辑地址(例如,逻辑块地址或lba)。控制器102可以响应于从存储接口模块116接收的命令在闪存设备阵列108中执行命令。

闪存设备阵列108可包括多个闪存设备118。闪存设备118表示用于存储数据的非易失性存储器设备。根据本主题技术的方面,闪存设备118包括例如nand闪存。每个闪存设备118可包括单个闪存芯片或管芯,或者可包括多个闪存芯片或管芯。例如,在闪存设备阵列108内,一些闪存设备118可包括一个闪存管芯,而其他闪存设备可包括多于一个的闪存管芯。闪存设备118不限于任何特定容量或配置。例如,物理块的数量、每个物理块的物理页面的数量、每个物理页面的扇区的数量、以及扇区的大小可以在本主题技术的范围内变化。

闪存设备阵列108可以布置在多个通道中,每个通道具有一个或多个闪存设备118。闪存设备118可包括一个或多个闪存接口(未示出)。每个闪存接口经由各自通道将控制器102连接到闪存设备中的一个。可以使用联接在闪存接口中的一个与对应的闪存设备之间的一条或多条物理i/o总线来实现每个通道(未示出)。每个通道允许对应的闪存接口向对应的闪存设备发送读取、写入和/或擦除命令。每个闪存接口可包括寄存器(例如,先进先出(fifo)寄存器),该寄存器从控制器102排队进行读取、写入和/或擦除命令,以用于对应的闪存设备。尽管如上所使用的术语“通道”指的是联接在闪存接口与各自闪存设备之间的总线,但术语“通道”也可以指通过总线(例如,系统总线115)可寻址的各自闪存设备。

闪存设备118可具有标准接口规范。该标准确保来自多个制造商的芯片可互换使用(至少在很大程度上)。闪存设备118的接口可用于访问内部寄存器120和内部闪存控制器122。在一些方面,寄存器120可包括地址、命令和/或数据寄存器,该地址、命令和/或数据寄存器在内部检索并且输出到nand存储器单元阵列124和来自nand存储器单元阵列124的必要数据。举例来说,存储器单元阵列124可以包括单电平单元(slc)存储器、多电平单元(mlc)存储器、三电平单元(tlc)存储器设备等。在某些方面,该闪存设备阵列108可以包括一个或多个混合存储器设备,其可以以slc、mlc或tlc模式中的一个或多个模式运行。本主题技术中还设想了其他类型的闪存,诸如3dnand闪存。

数据寄存器(例如,寄存器120的数据寄存器)可包括存储在存储器单元阵列124中的数据,或者从存储器单元阵列124中提取之后的数据,并且可还用于临时数据存储和/或像缓冲器一样工作。地址寄存器可以存储将从中提取数据到主机设备110的存储器地址或者将数据发送和存储到的地址。在一些方面,包括命令寄存器以控制奇偶校验、中断控制等。在一些方面,经由控制寄存器可访问内部闪存控制器122,以控制闪存设备118的一般行为。内部闪存控制器122和/或控制寄存器可控制停止位数、字长、接收器时钟源,并且可还控制切换寻址模式、寻呼控制、协处理器控制等。

ldpc引擎104表示被配置为编码和/或解码从闪存设备阵列108中存储和/或读取的代码字的一个或多个部件。ldpc引擎104可包括编码器和解码器。解码器可包括硬解码器和软决策ecc解码器。ldpc引擎104可以在将解码数据发送到主机之前将从主机设备100接收的数据编码成代码字并解码从闪存阵列118读取的代码字。在一些具体实施中,ldpc引擎104可包括一个或多个存储器设备和/或用于执行纠错的一个或多个处理单元(例如,使用ldpc或涡轮代码)。ldpc引擎104可还包括软信息模块,其确定和/或维持用于编码和解码操作的软度量输入。虽然ldpc引擎104示出为不同于控制器102,但是应当理解,ldpc引擎104可结合到控制器102中而不脱离本公开的范围。

图2示出了示例性图表,其图示了根据本主题技术的方面的多电平单元(mlc)闪存中的四种可能的单元编程分布。如图所示,mlcnand单元可以被编程为四种不同状态或编程电平l0、l1、l2和l3中的一种,每个单元产生两个逻辑位信息:最高有效位(msb)和最低有效位(lsb)。当存储器单元被读取或被编程时,这两个位可构成存储器块中的字线的对应msb和lsb页面。编程电平l0和l1可对应于lsb逻辑位值“1”,并且编程电平l2和l3可对应于lsb逻辑位值“0”。虽然在图2中未示出,但编程电平l0和l3可以对应于msb逻辑位值“1”,并且编程电平l1和l2可对应于msb逻辑位值“0”。

为了从存储器单元读取原始数据,将读取电平电压施加到存储器单元和具有等于或低于所施加的读取电平电压的阈值电压(vt)的存储器单元,并且因此,接通或导通被认为是低于读取电平电压的编程分布的一部分和具有高于读取电平电压的阈值电压的那些存储器单元,并且因此,不要接通或导通被认为是在高于读取电平电压的编程分布中。例如,图2示出了可以施加到一组存储器单元的读取电平电压c,以确定哪些单元被编程为对应于lsb逻辑位值“1”的l0或l1编程电平或对应于lsb逻辑位值“0”的l2或l3编程电平。

随着闪存的循环(即,重复地编程和擦除),其物理质量会发生变化。例如,分别在编程和擦除操作期间,在浮栅上重复放置和移除电子可能导致一些电子被捕集在设备的浮栅中。这些存储器单元的阈值电压最终可能具有与预期值不同(更高或更低)的值,从而导致该单元编程分布最终开始重叠,并且在读取数据时导致读取错误。

为了确定存储器单元实际被编程到观察到的推定编程电平(即,读取原始数据)的概率,可以启动多个读取操作以作为多级解码操作的一部分。例如,可以在第一级中的读取电平电压c、第二级中的读取电平电压ll、第三级中的读取电平rr等读取存储器单元。如果原始数据的硬解码失败,则为读取电平电压序列设置多个编程区域,这些编程区域可用于对从存储器单元读取的原始数据值进行分类以进行软解码。

在第一级的多级解码操作中,可以定义两个编程区域。第一编程区域包括具有等于或低于读取电平电压c的编程值的单元,第二编程区域包括具有高于读取电平电压c的编程值的单元。在多级解码操作的第二级中,可以通过将使用读取电平电压c读取的原始数据与使用读取电平电压ll读取的原始数据进行聚合来定义三个编程区域。更具体地,第一编程区域可包括具有等于或低于读取电平电压ll的编程值的单元,第二编程区域可以包括具有高于读取电平电压ll以及等于或低于读取电平电压c的编程值的单元,并且第三编程区域可以包括具有高于读取电平电压c的编程值的单元。多级解码操作中的每个后续级将使用对应于该级的读取电平电压读取的原始数据与在前级中读取的原始数据进行聚合,以定义与不同读取电平电压之间的编程值范围对应的附加编程区域。本主题技术不限于图2中表示的读取电平电压的数量或图2中所示的用于在多级解码操作的各自级中应用读取电平电压的读取顺序。另外,类似的读取电平电压序列可用于读取l0与l1编程电平之间以及l2与l3编程电平之间的区域中的msb位值。

根据本主题技术的方面,可以将置信度值分配给各自编程区域或“区间”以用于软解码操作。置信度值可包括对数似然比(llr)。在低密度奇偶校验(ldpc)应用中,二进制llr可包括位在“0”或“1”的概率之间的比率的对数。正llr可指示从存储器单元读取的信号可能是0位,并且负llr可以指示从存储器单元读取的信号可能是1位。在一些示例中,具有指定的llr等于5的位值可能比具有指定的llr等于第二预先确定值(例如,二进制“1”)的位值更可能是第一预先确定值(例如,二进制“0”)。具有指定的llr等于零的位值可同样可能是预先确定值。llr还可以由具有一组组分值的非二进制置信度向量表示。

如上文所介绍的,多级解码过程的每个级定义编程区域集或区间。每个编程区域集或区间具有置信度值集(例如,llr值),其对应于该集的各自编程区域或区间。这些置信度值可被称为解码信息,并且可以存储在各自表或在每个级中执行软解码操作时检索的其他数据结构中。

根据各种具体实施,当执行解码操作时,ldpc引擎104可针对每个解码级使用不同的解码信息集和解码信息集的不同排序。此外,可以基于存储器设备的各自块的老化来使用不同的解码信息集。例如,块的老化可以基于与该块相关联的编程/擦除周期的数量,并且对于每个预先确定范围的编程/擦除周期(和/或每个读取电平电压),可以存在不同组的解码信息集。根据本主题技术的方面,每个解码集可使用多解码信息集(例如,三个),其中使用各自解码信息集执行单独的软解码操作。

图3示出了根据本主题技术的方面的多级解码操作的流程图。可以响应于从主机系统110接收的读取命令或响应于由控制器102执行的内部数据管理操作来启动多级解码操作。在启动多级解码操作时,根据读取电平电压的序列(块300)设置闪存设备118的读取电平电压,从该闪存设备读取所请求的数据。最初,可以将读取电平电压设置为c读取电平电压。可以通过利用与读取电平电压c对应的值对闪存设备中的寄存器进行编程来设置读取电平电压。

在设置读取电平电压的情况下,使用设置的读取电平电压从一组存储器单元读取原始数据,并且将原始数据传递到ldpc引擎104中的硬解码器,以对原始数据执行硬解码操作(块305)。如果硬解码操作成功解码原始数据(块310),则将解码数据返回到请求过程(块315)。如果硬解码操作不成功,则选择软解码信息(块320),并且将原始数据与软解码信息一起传递到ldpc引擎104中的软决策解码器,以使用原始数据和选定的软解码信息(块325)执行软解码操作。

如果软解码操作成功解码原始数据(块330),则将解码数据返回到请求过程(块315)。如果软解码操作不成功,该过程确定另一软步骤或软解码操作是否保留在多级解码操作的当前级(块335)中。根据本主题技术的方面,多级解码操作的每个级可包括硬解码操作和多达多个软解码操作。每个软解码操作使用对应于当前级的各自软解码信息集。可以基于不同的条件和假设使用测试或模拟数据来确定或计算每个软解码信息集。如果使用第一软解码信息集软解码操作不成功,则可使用相同的原始数据但使用第二组选定的软解码信息集(块320)来重复该软解码操作。可以重复该软解码操作循环,直到原始数据被成功解码或者与当前级相关联的所有软解码信息集已经用于软解码尝试。根据本主题技术的方面,每个级可以具有三个软解码信息集,用于尝试对原始数据进行软解码。然而,可以使用针对每个级的多于或少于三个软解码信息集来实现本主题技术。

如果当前级不再有软步骤或软解码操作(块335),则该操作确定另一级是否保留在多级解码操作中(块340)。例如,多级解码操作可以包括与图2中所示的与七个读取电平电压的序列对应的多达七个级。如果另一级保持在该操作中,则设置序列中的下一个读取电平电压(块300),并重复上述级操作。重复该硬和软解码操作循环,直到原始数据被成功地解码并返回到请求过程(块315)或者每个级中的所有硬和软解码操作都不成功。如果解码不成功,则将读取错误返回到请求过程(块345)。

图4示出了根据本主题技术的方面的多级解码操作的动态调整的流程图。类似于上面关于图3描述的过程,可以响应于从主机系统110接收的读取命令或响应于由控制器102执行的内部数据管理操作来启动图4中所示的操作。

根据本主题技术的方面,基于先前的解码数据(块400)确定读取电平电压的序列。先前的解码数据包含关于哪些级和对应的读取电平电压在先前的解码操作期间解码从闪存设备118读取的原始数据成功的信息。先前的解码数据可包括分别对应于读取电平电压的计数器阵列,每个计数器包含指示使用各自读取电平电压成功执行的解码操作的数量的计数器值。例如,计数器阵列可以包括对应于图2中所示的七个读取电平电压的七个计数器(例如,c、ll、rr、l、r、lll、rrr)。图2中所示的读取顺序序列表示在数据存储设备100的寿命开始时使用的默认读取电平电压序列或一些其他初始化级。

为了确定读取电平电压的序列,控制器102可以根据阵列最大值到最小值中的计数器值对计数器阵列进行分类或排序。该分类的计数器阵列指示读取电平电压的顺序,根据该读取电平电压,读取电平电压在解码操作中更成功。例如,读取电平电压l可以具有最高的对应计数器值,随后是读取电平电压rr、c、ll、r、lll和rrr。因此,所确定的读取电平电压序列将是l、rr、c、ll、r、lll和rrr,其随后在上面参考图2描述的多级解码操作中应用(块405)。当对计数器阵列进行分类时,包含相同计数器值的计数器可以保留相对于彼此的相同顺序,如在默认的读取电平电压序列中那样。

在完成多级解码操作时,更新先前的解码数据,以反映成功地解码原始数据的解码级的读取电平电压(块410)。例如,计数器阵列中与成功解码级中使用的读取电平电压对应的计数器递增为一。

响应于每个读取命令或涉及读取数据的管理操作,基于有序计数器阵列对计数器阵列进行分类或排序并确定读取电平电压的序列可以在控制器102上施加大的处理负荷并且对数据存储设备100的性能具有最小的影响。根据本主题技术的方面,可以在完成自上次确定以来的预先确定数量的读取操作之后执行读取电平电压序列的确定。例如,可以在每完成256次读取操作之后确定序列(块415)。如果自序列最后确定以来的读取操作的数量不满足读取计数阈值256,则使用最后确定的读取电平电压序列来执行多状态解码操作(块415)。使用256个读取操作作为读取计数阈值,以确定何时执行确定允许计数器阵列包括用于阵列的每个元件的一个字节的数据。本主题技术不限于作为读取计数阈值的该数量的读取操作,并且可以使用可以被选择或编程的其他数字来实现,以平衡用于该后台操作的处理器负载与用于由控制器102执行的其他操作的处理器负载。

可以为闪存设备阵列108维持计数器阵列。另选地,可以为各个块、块组、管芯、管芯组或单个闪存设备118维持计数器阵列。维持单独的计数器阵列,并确定对应块、块组、管芯、管芯组、闪存设备118等的读取电平电压序列允许读取电平电压的序列在执行读取操作时更好地与每个块、块组、管芯、管芯组或闪存设备118的特征和条件对准。

在上面讨论的示例中,所确定的读取电平电压序列可以包括取决于用于确定序列的先前解码数据的读取电平电压的任何顺序。本主题技术不限于该配置。根据本主题技术的其他方面,可能的读取电平电压序列可以限制读取电平电压组或预先确定序列的不同顺序,而不是各个读取电平电压的不同顺序。例如,计数器阵列可以包括两个计数器:一个对应于读取电平电压r、rr和rrr组,第二个对应于读取电平电压l、ll和lll组。在该配置下,用于多状态解码操作的所确定的读取电平电压序列可以在该序列中首先使用r、rr和rrr读取电平电压或者基于先前解码数据中的计数器值首先使用l、ll和lll读取电平之间切换。在本主题技术中设想了其他分组以及分组内的命令。

根据本主题技术的方面,可以使用所确定的读取电平电压序列来执行图3中表示的多级解码操作。然而,可以根据所确定的读取电平电压序列以其他方式修改多级解码操作。例如,可以仅使用所确定的读取电平电压序列来执行硬解码操作,而可以以默认顺序执行软解码操作。该配置减少了维持和存储软解码操作的解码信息集的数量。在每个硬解码操作之前读取的原始数据可以被缓冲以用于稍后的软解码操作,以避免必须使用已经在操作中使用的读取电平电压来重新读取数据。例如,如果初始硬解码操作在解码原始数据时都不成功,则在使用c、ll、rr、l、r、lll和rrr的默认序列进行硬和软解码操作的多状态操作之前使用序列l、rr、c、ll、r、lll和rrr可以对使用读取电压电平l和rr读取的原始数据执行硬解码操作。当多级解码操作到达对应于早期硬解码操作中的一个(例如,l和rr)的级时,该操作将直接进行到软解码操作循环,因为先前尝试过使用以l和rr读取电平读取的原始数据的硬解码。从先前的硬解码操作缓冲的原始数据可以用于这些级中的软解码操作,而无需重新读取原始数据。

当闪存设备老化和/或操作条件改变时,上述读取电平电压的序列的动态调整提供了序列的自动调整。调整读取电平电压的序列可能潜在地减少了在成功解码从闪存设备读取的原始数据之前必须执行的多级解码操作的级数。

根据本主题技术的方面,提供了一种机器实现的方法,包括:基于先前的解码数据确定多个读取电平电压的序列,并且执行多级解码操作,以使用确定的多个读取电平电压的序列对从多个存储器单元读取的原始数据进行解码。该方法还包括在完成多级解码操作时从多级解码操作返回解码数据,以及基于多级解码操作的结果更新先前的解码数据。

多级解码操作的每个级可以包括执行一个或多个解码操作,以使用来自对应于该级的多个读取电平电压的序列中的各自读取电平电压来解码从多个存储器单元读取的原始数据。多级解码操作的各个级可以被顺序地执行,直到其中一个级中的一个或多个解码操作中的一个成功地解码从多个存储器单元读取的原始数据。

更新先前的解码数据可以包括递增与用于读取成功解码的原始数据的多个读取电平电压的读取电平电压对应的计数器值。基于计数器值可以确定多个读取电平电压的序列。先前的解码数据可以包括与多个读取电平电压对应的多个各自计数器的计数器值。确定多个读取电平电压的序列可包括根据各个计数器的计数器值对多个读取电平电压进行排序。

确定多个读取电平电压的序列可以包括从多个预定序列中选择序列。多个读取电平电压的序列可以在完成多个读取请求之后确定,因为该序列是最后确定的。多个存储器单元是管芯上的多个块的块的一部分,以及可以为块、包括块的块组或管芯维持各自先前的解码数据。

根据本主题技术的方面,提供了一种数据存储系统,包括非易失性存储器设备和控制器。控制器可以被配置为基于先前的解码数据确定多个读取电平电压的序列,并且执行多级解码操作,以使用确定的多个读取电平电压的序列对从多个存储器单元读取的原始数据进行解码。多级解码操作的每个级可以包括执行一个或多个解码操作,以使用来自对应于该级的多个读取电平电压的序列中的各自读取电平电压来解码从多个存储器单元读取的原始数据。多级解码操作的各个级可以被顺序地执行,直到其中一个级中的一个或多个解码操作中的一个成功地解码从多个存储器单元读取的原始数据。控制器还可以被配置为在完成多级解码操作时从多级解码操作返回解码数据,以及基于多级解码操作的结果更新先前的解码数据。

更新先前的解码数据可以包括递增与用于读取成功解码的原始数据的多个读取电平电压的读取电平电压对应的计数器值。基于计数器值可以确定多个读取电平电压的序列。先前的解码数据可以包括与多个读取电平电压对应的多个各自计数器的计数器值。确定多个读取电平电压的序列可以包括根据各个计数器的计数器值对多个读取电平电压进行排序。

确定多个读取电平电压的序列可以包括从多个预定序列中选择序列。多个读取电平电压的序列可以在完成多个读取请求之后确定,因为该序列是最后确定的。

多个存储器单元可以是管芯上的多个块的块的一部分。可以为块、包括块的块组或管芯维持各自先前的解码数据。

根据本主题技术的方面,提供了一种编码有可执行指令的处理器可读介质,这些可执行指令在由处理器执行时执行方法。该方法包括基于先前的解码数据确定多个读取电平电压的序列,并且执行多级解码操作,以使用确定的多个读取电平电压的序列对从多个存储器单元读取的原始数据进行解码。该方法还包括在完成多级解码操作时从多级解码操作返回解码数据,并且通过递增对应于用于读取成功解码的原始数据的多个读取电平电压的读取电平电压的计数器值,基于多级解码操作的结果更新先前的解码数据,其中基于计数器值确定多个读取电平电压的序列。

多级解码操作的每个级可以包括执行一个或多个解码操作,以使用来自对应于该级的多个读取电平电压的序列中的各自读取电平电压来解码从多个存储器单元读取的原始数据。多级解码操作的各个级可以被顺序地执行,直到其中一个级中的一个或多个解码操作中的一个成功地解码从多个存储器单元读取的原始数据。

先前的解码数据可以包括与多个读取电平电压对应的多个各自计数器的计数器值。确定多个读取电平电压的序列可以包括根据各个计数器的计数器值对多个读取电平电压进行排序。确定多个读取电平电压的序列可以包括从多个预定序列中选择序列。多个读取电平电压的序列可以在完成多个读取请求之后确定,因为该序列是最后确定的。

多个存储器单元可以是管芯上的多个块的块的一部分。可以为块、包括块的块组或管芯维持各自先前的解码数据。

根据本主题技术的方面,提供了一种包括非易失性存储器的数据存储系统,以及用于基于先前的解码数据确定多个读取电平电压的序列的装置,以及用于使用确定的多个读取电平电压的序列执行多级解码操作以解码从多个存储器单元读取的原始数据的装置。该数据存储系统还包括用于在完成多级解码操作时从多级解码操作返回解码数据的装置以及用于基于多级解码操作的结果更新先前的解码数据的装置。

多级解码操作的每个级可以包括执行一个或多个解码操作,以使用来自对应于该级的多个读取电平电压的序列中的各自读取电平电压来解码从多个存储器单元读取的原始数据。多级解码操作的各个级可以被顺序地执行,直到其中一个级中的一个或多个解码操作中的一个成功地解码从多个存储器单元读取的原始数据。

更新先前的解码数据可以包括递增与用于读取成功解码的原始数据的多个读取电平电压的读取电平电压对应的计数器值。基于计数器值可以确定多个读取电平电压的序列。先前的解码数据可以包括与多个读取电平电压对应的多个各自计数器的计数器值。确定多个读取电平电压的序列可以包括根据各个计数器的计数器值对多个读取电平电压进行排序。确定多个读取电平电压的序列可以包括从多个预定序列中选择序列。

许多上述特征和应用可以实现为软件或固件过程,其被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的指令集。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器核或其他处理单元)执行时,它们使处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于cd-rom、闪存驱动器、ram芯片、硬盘驱动器、eprom等。计算机可读介质不包括通过无线或有线连接传递的载波和电子信号。

术语“软件”是指在适当时包括驻留在只读存储器或其他形式的存储器中的固件,其可以被读入存储器以供处理器处理。而且,在一些具体实施中,本主题公开的多个软件方面可以实现为较大程序的子部分,同时保留本主题公开的不同软件方面。在一些具体实施中,多个软件方面也可被实现为单独的程序。最后,共同实现本文描述的软件方面的单独程序的任何组合都在本主题公开的范围内。在一些具体实施中,当安装以在一个或多个电子系统上操作时,软件程序定义执行和执行软件程序的操作的一个或多个特定机器实现。

计算机程序(也称为程序、软件、软件应用、脚本、或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且可以以任何形式部署,包括作为独立程序或作为模块、部件、子例程、对象或适用于计算环境的其他单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中、存储在专用于所讨论的程序的单个文件中、或存储在多个协调文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。可以部署计算机程序以在一个计算机上或在位于一个站点上或分布在多个站点上并通过通信网络互连的多个计算机上执行。

应当理解,本文描述的例示性块、模块、元件、部件、方法和算法可以实现为电子硬件、计算机软件或二者的组合。为了说明硬件和软件的这种可互换性,上面已经在功能方面对各种例示性的块、模块、元件、部件、方法和算法进行了总体描述。将此功能性实施为硬件还是软件取决于特定应用和强加于整个系统的设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能。在不脱离本公开的范围的情况下,各种部件和块可以不同地布置(例如,以不同的顺序布置,或以不同的方式划分)。

应当理解,所公开的过程中的步骤的特定顺序或分级结构被呈现为一些示例性方法的图示。基于设计偏好和/或其他考虑,应当理解,可以重新排列该过程中的步骤的特定顺序或分级结构。例如,在一些具体实施中,可以同时执行一些步骤。因此,所附方法权利要求以样本顺序呈现各个步骤的元件,并且不旨在限制所呈现的特定顺序或分级结构。

提供先前的描述是为了使本领域的技术人员能够实践本文中所描述的各种方面。先前的描述提供了本公开的各种示例,并且本公开不限于这些示例。对于本领域的技术人员而言,对这些方面的各种修改是显而易见的,并且本文定义的一般原理可以应用于其他方面。因此,本权利要求不旨在限制本文所示的方面,而是与符合语言权利要求的全部范围相一致,其中除非特别说明,对单数元件的引用并非旨在表示“一个且仅一个”,而是“一个或多个”。除非另外特别说明,否则术语“一些”是指一个或多个。男性代词(例如,他的)包括女性和中性(例如,她和它的),反之亦然。标题和副标题(如果有的话)仅用于方便起见,并且不限制本主题公开。

谓词“被配置为”、“可操作地”和“被编程为”并不意味着对象的任何特定的有形或无形修改,而是旨在可互换地使用。例如,配置成监视和控制操作或部件的处理器还可以表示处理器被编程为监视和控制操作,或者处理器可操作以监视和控制操作。同样,被配置为执行代码的处理器可以被理解为被编程为执行代码或可操作以执行代码的处理器。

短语“与…通信”和“联接”表示与经由本文中命名或未命名的一个或多个部件(例如,存储器卡读取器)直接通信或间接通信。

短语诸如“方面”并不暗示此类方面对于本公开是必要的,或者此类方面适用于本公开的所有配置。涉及一个方面的公开内容可适用于所有配置或一个或多个配置。一个方面可提供一个或多个示例。短语诸如方面可以指代一个或多个方面,反之亦然。短语诸如“具体实施”并不暗示此类具体实施对于本公开是必要的,或者此类具体实施适用于本公开的所有配置。涉及一个具体实施的公开内容可适用于所有方面或一个或多个方面。一个具体实施可提供一个或多个示例。短语诸如“具体实施”可以指代一个或多个具体实施,反之亦然。短语诸如“配置”并不暗示此类配置对于本公开是必要的,或者此类配置适用于本公开的所有配置。涉及一个配置的公开内容可适用于所有配置或一个或多个配置。一个配置可提供一个或多个示例。短语诸如“配置”可以指代一个或多个配置,反之亦然。

本文所用的词“示例性”是指“用作示例或图示”。本文中描述为“示例性”的任何方面或设计不必被解释为比其他方面或设计更优选或更具优势。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1