对第一读取的读取干扰的系统处理的制作方法

文档序号:23219252发布日期:2020-12-08 15:00阅读:70来源:国知局
对第一读取的读取干扰的系统处理的制作方法

本公开涉及存储器系统,且具体地,涉及当存储器单元处于第一读取条件时解决读取干扰错误。



背景技术:

例如快闪存储器装置的非易失性存储器能支持提升消费电子产品的便携性,并且能在适合于云计算和大容量存储的相对低功率的企业存储系统中使用。在这些领域几乎持续不断发展的需求经常伴随着提高数据存储容量的需求。对更大存储容量的需求又引起对更大存储密度的需求,从而可以维持并优选地降低例如功耗和形状因数的规格。因此,不断需要增加非易失性存储器的存储密度,以便进一步改进此类装置的有用属性。然而,增加存储密度的缺点是,所存储数据越来越容易出现存储和/或读取错误。



技术实现要素:

在所附权利要求的范围内的系统、方法和装置的各种实施方案各自具有若干方面,其中的单个方面并不单独负责本文中所描述的期望属性。在不限制所附权利要求的范围的情况下,描述了一些突出的特征。在考虑此讨论之后,尤其是在阅读了标题为“具体实施方式”的部分之后,将了解如何使用各种实施方案的特征来降低第一读取情形中的误码率。

附图说明

为了可以更详细地理解本公开,可以参考各种实施方案的特征进行更具体的描述,附图中示出其中的一些实施方案。但是,附图仅示出本公开的更相关的特征,因此不应被视为具有限制性,因为描述可承认其它有效特征。

图1是根据一些实施例的数据存储环境的示意图。

图2是根据一些实施例的存储装置的存储控制器中的管理模块的框图。

图3是根据一些实施例的在存储装置的存储介质中的存储器单元阵列。

图4a到4d是示出根据一些实施例的示例存储器单元的阈值电压分布的图。

图5是根据一些实施例的读取数据的方法的流程图,所述方法包含利用针对第一读取条件优化的动态读取用例进行读取。

图6是根据一些实施例的读取错误处理步骤的流程图。

图7是根据一些实施例的读取数据的方法的流程图,所述方法包含进行硬位解码。

根据惯例,图中所示的各种特征可能并非按比例绘制。因此,为了清晰起见,可以任意扩大或减小各种特征的尺寸。此外,图式中的一些图式可能并未描绘给定系统、方法或装置的所有组件。最后,可能贯穿说明书和图式使用相似参考标号来表示相似特征。

具体实施方式

本文描述的各种实施方案包含通过针对第一读取条件优化读取电平来从存储器单元读取数据的系统、方法和/或装置。

为了提供对附图中所示的示例实施方案的透彻理解,本文中描述了许多细节。然而,可以在没有许多具体细节的情况下实践本发明。此外,没有详尽描述众所周知的方法、组件和电路,以免对本文描述的实施方案的更多相关方面产生不必要的混淆。

图1是数据存储环境(即数据存储环境100)的实施方案的图。尽管示出了某些特定特征,但是本领域技术人员将从本公开了解为简洁起见且为免模糊本文公开的示例实施方案的更多相关方面而未示出的各种其它特征。为此,作为非限制性实例,数据存储环境100包含数据处理系统(计算机系统)110和存储装置120。

数据处理系统110通过数据连接101耦合到存储装置120。本领域技术人员将从本公开了解,在各种实施方案中,数据处理系统110包括作为组件的存储装置120。通常,数据处理系统110包含任何合适的计算机装置,例如计算机、笔记本电脑、平板装置、上网本、上网亭、个人数字助理、移动电话、智能电话、游戏装置、计算机服务器或任何其它计算装置。在一些实施方案中,数据处理系统110包含一个或多个处理器、一种或多种类型的存储器、显示器和/或其它用户界面组件,例如键盘、触摸屏显示器、鼠标、触控板、数码相机和/或添加功能的任何数量的补充装置。

存储装置120包含通过数据连接103耦合到存储控制器124的一个或多个存储介质130。本领域技术人员将从本公开了解,在各种实施方案中,存储控制器124和存储介质130包含在相同的装置(例如,存储装置120)中作为其组成组件,而在其它实施例中,存储控制器124和存储介质130是单独的装置或位于单独的装置中。每个存储介质130包含任意数量(即,一个或多个)的存储器装置,包含但不限于非易失性半导体存储器装置,例如快闪存储器。例如,快闪存储器装置可以配置成适合于例如云计算之类的应用的企业存储。另外和/或替代地,快闪存储器装置也可以配置成用于相对较小规模的应用,例如个人快闪驱动器或个人笔记本电脑和平板电脑的硬盘替换。在一些实施方案中,存储介质130包括一个或多个快闪存储器装置。在一些实施方案中,存储介质130包括nand型快闪存储器和/或nor型快闪存储器中的至少一种。

存储介质通常被划分成多个可寻址且可单独选择的块,例如可选部分131。在一些实施方案中,对于快闪存储器,可单独选择的块是快闪存储器装置中的最小可擦除单元。换句话说,每个块包含可同时擦除的最小数量的存储器单元。通常将每个块进一步划分成多个页面,其中每个页面通常是所述块中最小的可单独存取的子块的最小单元的实例。但是,在一些实施方案中(例如,在一些类型的快闪存储器中),可单独存取的数据的最小单元是扇区,所述扇区是页面的子集。也就是说,每个页面包含多个扇区,并且每个扇区是用于将数据写入快闪存储器装置或从快闪存储器装置读取数据的可单独存取的数据的最小单元。

仅出于说明的目的,数据块包含多个页面,通常每个块具有固定数量的页面,并且每个页面包含多个扇区,通常每个页面具有固定数量的扇区。例如,在一些实施方案中,一个块包含64页、128页、256页或另一合适数量的页。块、页面和扇区的相应大小通常是设计选择或最终用户选择的问题,并且在各种企业和消费类装置中通常会有所不同。然而,仅作为实例但非限制性地,在一些企业应用中,页面包含2k(即2048)到16k字节,而扇区包含从256字节到544字节的任何位置。取决于特定的应用,这些范围可以向上或向下扩展,和/或缩小或扩展。在一些实施例中,每个页面存储一个或多个码字,其中码字是由特定装置的编码器和解码器机制分别编码和解码的最小数据单元。

在一些实施方案中,存储控制器124包含管理模块121、错误控制模块125、存储介质接口(i/o)128和主机接口129。主机接口129将存储装置120及其存储控制器124耦合到一个或多个计算机系统110,而存储介质接口128将存储控制器124耦合到存储介质130。本领域技术人员将从本公开了解,存储控制器124包含为简洁起见且为免模糊本文公开的示例实施方案的更多相关特征而未示出的各种其它特征,并且特征的不同布置是可能的。

主机接口129通常包含数据缓冲器(未示出),以缓冲由存储装置120经由数据连接101接收和传输的数据。类似地,存储介质i/o128提供了通过数据连接103到存储介质130的接口。在一些实施方案中,存储介质接口128包含读取和写入电路。

在一些实施方案中,管理模块121包含一个或多个处理器122。然而,本领域技术人员将从本公开了解,在一些实施方案中,处理器122由存储控制器124的功能内且在一些情况下超出存储控制器124的功能的一个或多个组件共享。管理模块121耦合到主机接口129、错误控制模块125和存储介质i/o128,以便协调这些组件的操作。

错误控制模块125耦合在存储介质i/o128与主机接口129之间。在一些实施方案中,提供错误控制模块125以限制无意中引入数据的不可纠正错误的数量。为此,错误控制模块125包含编码器126和解码器127。编码器126对数据进行编码以产生码字,所述码字随后存储在存储介质130中。当从存储介质130中读取编码数据时,解码器127应用解码过程以恢复数据,并在错误控制代码的错误纠正能力之内纠正错误。本领域技术人员将从本公开了解,各种错误控制码具有不同的错误检测和纠正能力,并且出于各种应用而选择了特定代码是出于超出本公开范围之外的原因。

图2示出根据一些实施例的管理模块121的框图。管理模块121通常包含:一个或多个处理器122(在本文中有时称为cpu、处理单元、硬件处理器、处理器、微处理器或微控制器),用于执行存储在存储器206中的模块、程序和/或指令,从而执行处理操作。管理模块121还包含存储器206(在本文中有时称为控制器存储器),以及用于互连这些组件的一个或多个通信总线208。通信总线208可选地包含互连和控制系统组件之间的通信的电路(有时称为芯片组)。管理模块121通过通信总线208耦合到存储介质接口128、错误控制模块125和主机接口129。存储器206包含高速随机存取存储器,例如dram、sram、ddrram或其它随机存取固态存储器装置,并且可以包含非易失性存储器,例如一个或多个磁盘存储装置、光盘存储装置、快闪存储器装置或其它非易失性固态存储装置。存储器206可选地包含远离一个或多个处理器122的一个或多个存储装置。在一些实施例中,存储器206或存储器206内的非易失性存储器装置包括非暂时性计算机可读存储介质。在一些实施例中,存储器206或存储器206的非暂时性计算机可读存储介质存储以下程序、模块和数据结构或其子集或超集:

●命令模块(有时称为接口模块)210,用于接收或存取主机命令,所述主机命令指定要执行的操作以及与存储装置120内的存储介质130的可选部分131相对应的逻辑或物理地址(图1);

●数据读取模块214,用于从存储介质130(例如,非易失性存储器)读取数据;

●数据写入模块216,用于将数据写入存储介质130;

●数据擦除模块218,用于擦除存储介质130中的数据;

●数据解码或恢复模块220,用于解码或恢复码字;数据解码或恢复模块220可选地包含:

○第一读取检测模块222,用于确定存储介质130的可选部分131中的一个或多个存储器单元是否处于第一读取条件;

○读取电平选择模块224,用于根据各种读取条件或读取错误处理过程来选择要施加到存储器单元的读取电压;

○数据前瞻(dla)模块226,用于在读取错误处理期间对一个或多个存储器单元执行dla处理;以及

○纠错码(ecc)模块228,用于在读取错误处理期间对一个或多个存储器单元执行ecc处理;

●数据解码表240,用于存储在读取操作中使用的读取电压值,这些表包含:

○第一读取表242,用于存储一个或多个读取电压值,以在读取处于第一读取条件的存储器单元时使用;

○历史表244,用于存储一个或多个最近使用的读取电压值,从而产生成功的读取操作(例如,历史用例);

○默认值246,用于存储一个或多个读取电压值,以用作读取存储器单元的默认读取电压值;

○动态读取表248,用于存储一个或多个读取电压值,以在动态读取用例期间使用(例如,针对不同条件(例如读取干扰)的不同类型的读取电压偏移)。

在以下讨论中提供了关于上文列出的模块和数据结构的更多信息。上文识别的元件中的每一个可存储在先前提及的存储器装置中的一个或多个中,并对应于用于执行上述功能的指令集。上文识别的模块或程序(即,指令集)无需实施为单独的软件程序、程序或模块,因此这些模块的各种子集可在各种实施例中组合或以其它方式重新布置。在一些实施例中,存储器206可以存储以上识别的模块和数据结构的子集。此外,存储器206可以存储上文未描述的附加模块和数据结构。在一些实施例中,存储在存储器206或存储器206的非暂时性计算机可读存储介质中的程序、模块和数据结构提供用于实施以下描述的任何方法的指令。换句话说,当由一个或多个处理器122执行时,存储在存储器206中的程序或模块使存储装置120执行以下描述的任何方法。尽管图2示出了管理模块121,但是图2更多地旨在作为对可能存在于管理模块中的各种特征的功能描述,而不是本文所描述的实施例的结构示意图。在实践中,并且如本领域普通技术人员所认识到的,可以将分别示出的程序、模块和数据结构进行组合,并且可以将一些程序、模块和数据结构进行分离。

图3描绘了包含存储介质130的可选部分131(图1)的存储器单元阵列的示例块300。在此实例中,存储器单元阵列配置成nand阵列。所描绘的配置是许多可能的配置中的一种,并且本领域技术人员将了解,为简洁起见且为免模糊本文公开的示例实施方案的更多相关方面而未示出的各种其它配置。

在示例阵列中,串302(列)是最小的可读单元,并且通常由32或64个存储器单元组成。取决于应用,串可以包括其它数量的存储器单元(例如,多于64、少于32或在32与64之间)。阵列中的所有串的一端连接到公共源极线306,且另一端连接到位线(例如,bl0)。每个串还包含与存储器单元串联的两个控制晶体管。串和地选择晶体管连接到串选择线(sgd)和地选择线(sgs)。

在示例阵列中,页面304(行)共享同一字线并且是最小的可编程单元。它们通常由至少32,768(32k)、64k或128k个存储器单元组成。根据应用,页面可以包括其它数量的存储器单元(例如,多于128k、少于32k或在32k与128k之间)。通常,页面大小称为2k、4k、8k等。这表示页面大小(以字节为单位)。因此,如果页面大小具有32,768个存储器单元(位),则等于4,096(4k)个字节。

在示例阵列中,块300是由串(列)和页面(行)组成的二维矩阵。块中的总位数可以通过将串数乘以页面数来计算。取决于要执行的存储器操作(例如,读取、编程、擦除),存储介质130的可选部分131包含单个页面、单个串或单个块。

存储器阵列中的存储器单元可以具有包含在图4a到4c的分布之一中的阈值电压vth。图4a示出了单级单元(slc)存储器中的单元分布,其中每个单元由一位编程。图4b示出了2位多级单元(mlc)存储器中的单元分布,其中每个单元由两位编程。图4c示出了3位多级单元(mlc)存储器中的单元分布,其中每个单元由三位编程。对于slc快闪存储器,图3的阵列的每个单元具有根据编程数据的值包含在擦除状态e和编程状态a中的一个中的阈值电压,如图4a所示。对于2位mlc快闪存储器,图3的阵列的每个单元具有包含在擦除状态e和第一到第三编程状态a到c中的任何一个中的阈值电压,如图4b所示。对于3位mlc快闪存储器,图3的阵列的每个单元具有包含在擦除状态e和第一到第七编程状态a到g中的任何一个中的阈值电压,如图4c所示。然而,本文描述的实施例不限于这三种配置。例如,取决于应用,每个单元可以由四个或更多个位(tlc单元)编程,或者阵列中的各种单元可以由不同数量的位编程。

再次参考图3,读取存储器单元(例如308)的状态需要区分所述单元的电压阈值电平,而与串中所有其它单元的电压阈值电平无关。为此,串(例如302)必须连接到感测电路(例如选择线sgd和sgs为高),并且特定的位线(例如bl3)被偏置;因此,电流可以(例如,通过串302)流到(接地的)源极线。然后,未选择的单元(例如,耦合到wl0和wl2至wl7的单元)被置于通过晶体管模式,从而以大于最大阈值电压vth的通过电压偏置其字线。然后,通过施加读取电压(例如,施加到wl1),感测通过单元的串(bl3)的单元电流,并将感测到的电流与固定参考值进行比较以评估对应的二进制代码,来执行实际读取操作。对于mlc单元,所述操作执行不止一次。

图4a到4c示出了用于读取操作的单元电压阈值和对应的读取电压电平(有时也称为参考电压电平)。

例如,在slc存储器单元(图4a)中,有两个阈值电压:e(对于擦除状态:1)和a(对于编程状态:0)。当施加读取电压信号402时,如果电流流过存储器单元,则擦除所述单元(例如,逻辑1)。如果电流没有流过存储器单元,则对所述单元进行编程(例如,逻辑0)。

在两位mlc存储器单元(图4b)中,有四个阈值电压:e(对于擦除状态:1)和a到c(对于三个编程状态:01、00、10)。当施加读取电压信号412时,如果电流流过高于第一阈值的存储器单元,则擦除所述单元(例如,逻辑11)。当施加电压414时,如果电流流过低于第一阈值但高于第二阈值的存储器单元,则所述单元处于第一编程状态(例如,逻辑01)。当施加电压416时,如果电流流过低于第二阈值但高于第三阈值的存储器单元,则所述单元处于第二编程状态(例如,逻辑00),并且如果电流流过低于第三阈值的存储器单元,则所述单元处于第三编程的状态(例如逻辑10)。

在三位mlc存储器单元(图4c)中,有八个阈值电压:e(对于擦除状态:1)和a到g(对于七个编程状态:110、010、011、001、000、100、101)。当施加读取电压信号418时,如果电流流过高于第一阈值的存储器单元,则擦除所述单元(例如,逻辑111)。选择其余的读取电压,使得它们在其余的编程状态的电压阈值之间,如上文关于图4b所描述。

在某些情况下,存储器单元的各种状态可能重叠。例如,如果存储器单元处于第一读取条件,则擦除(e)电压阈值分布可以合并为第一编程状态电压阈值分布(a),如图4d所示。由于读取电压420没有与重叠的电压阈值分布(e和a)充分分开,这可能导致读取错误。换句话说,在表现出图4d中所示的行为的情形中,多个存储器单元在读取电压420的右侧具有擦除电压阈值,并且在读取电压420的左侧具有编程电压阈值。向这些单元施加读取电压420导致与显示正常行为的存储器单元(如图4c所示)相反的结果。这样,对于具有在e和a分布的重叠部分中的电压阈值的存储器单元发生读取错误。

在一些情况下,上述错误可能是称为读取干扰的存储器问题的结果。读取干扰错误可能导致特定单元的读取次数超过阈值次数,这使得附近的单元随时间推移而被编程。如果从一个单元连续进行读取,则所述单元可能不会失败,而周围的单元之一可能会在后续读取时失败。读取干扰问题倾向于影响较低的电压,例如第一编程状态(a)的电压阈值分布。利用读取干扰噪声,可能将已擦除单元的电压推到a阈值之上,以使所述单元在被读取时将像已编程单元一样工作,从而导致读取错误。

还可能由称为第一读取条件(或状态或模式)的条件引起错误。第一次读取条件可能是由于当随后读取时单元处的静电荷泄漏而引起的,这会导致错误。在这些情况下,读取干扰错误称为“第一读取的读取干扰”。换句话说,当存储器单元处于第一读取条件时,此条件可能引起读取干扰错误。第一读取条件可能由多种因素引起,包含初始化事件(例如存储装置中的加电或唤醒事件)、高温(导致存储器单元随时间推移逐渐被编程)和/或两次读取之间的时间量等等。如果未在阈值时间量内读取所述单元,则所述单元将处于第一读取条件的可能性会增加。

解决第一读取问题的一种方法是在尝试读取存储器单元之前将存储器单元置于“第二读取”或正常读取条件(或状态或模式)。例如,存储器控制器可以在读取命令之前发送预处理命令,以将预处理电压施加到块中的多条字线,以便将存储器单元移动到第二读取条件。一旦存储器单元处于第二读取模式条件,错误率将与块的预期或目标错误率一致。如本文所使用,“预处理命令”是指在应用到存储器的实际读取命令之前发送的特定前缀命令。更一般地,所述命令可以被称为指示存在用于将整个读取块(或特定存储器单元)置于第二读取模式的预处理步骤的命令。此步骤可以可选的是读取操作的一部分,在读取本身之前可以使用额外的步骤。此额外的步骤可以对块的整个字线填充施加相当大的电压。如上所述,可以使用预处理前缀命令来实现此额外步骤。

然而,以上述方式将单元移动到第二读取条件可能存在缺点。例如,由于所涉及的高电压,应用预处理命令可能引起附加的读取干扰错误,其将应力施加到存储器单元。重复应用预处理命令实际上可能会将电子加载到永久干扰层中。结果,由于由过去的预处理命令引起的读取干扰增加,从受影响的存储器单元进行将来的读取导致附加地应用预处理命令,这导致甚至更多的读取错误等。因此,在以第一读取模式处理存储器单元时避免使用预处理命令将是合乎需要的,因为这将引起较少的第一读取的读取干扰。

在一些实施例中,不是通过在从单元读取之前将单元移出第一读取模式来对单元进行预处理,而是存储器控制器使单元处于第一读取模式,并且替代地移位(或增加)读取电压以考虑单元的第一读取条件。在一些实施例中,如果控制器确定单元处于第一读取条件,则控制器在采取附加读取错误处理之前,使用针对第一读取条件优化的读取电压来读取单元。另外,在一些实施例中,即使控制器未确定单元处于第一读取条件,但如果初始读取尝试(例如,使用历史0用例的读取)失败,控制器也会使用针对第一读取条件优化的读取电压来读取单元。

图5描绘了方法500的流程图,所述方法从数据存储装置的存储介质中的存储器单元进行读取,并且具体地,当所述存储器单元可能处于第一读取条件或第二读取条件时,对从主机装置接收到的读取命令作出响应。方法500通常由存储装置120或存储系统的存储控制器124或管理模块121例如在数据解码/恢复模块220(图2)的控制下执行,但是替代地,可以由其中嵌入了存储装置的计算机系统(例如,计算机系统110)执行。

从例如计算机系统110(图1)的计算机系统(在本文中替代地称为主机或主机系统)接收(502)读取命令。读取命令例如通过指定逻辑或物理地址来指定要从存储介质130读取的数据。在一些实施例中,控制器响应于读取命令来控制存取和解码指定数据以产生解码数据的过程。关于以下步骤,将更详细地描述存取和解码过程的至少一部分。

响应于读取命令,控制器(例如,第一读取检测模块222)确定(504)与读取命令中指定的数据相对应的一个或多个存储器单元是否处于第一读取条件。在一些实施例中,在接收数据读取命令之前,控制器可以确定第一存储器单元或包含所述存储器单元的存储阵列的可选部分(例如,部分131)是否处于第一读取条件,并基于所述确定设置与存储器单元(或可选部分)相对应的标志。例如,由于初始化事件,例如通电事件或唤醒事件等,控制器可以确定包含存储器单元的存储介质的一部分(例如页面(例如304)、串(例如302)或块(例如300))处于第一读取条件。如果是这样,则控制器为单元、页面、串或块(无论是哪种情况)设置标志,以表示存储器相应部分的第一读取条件。以此方式,当控制器随后接收到与存储器的相应部分相对应的读取命令时,控制器可以通过检查相应标志的状态来确定相应存储器单元是否处于第一读取条件,这比等待读取命令做出所有第一个读取条件确定的一些情形更有效。

在一些实施例中,控制器通过以下步骤来确定存储器单元是否处于第一读取条件:测量在涉及第一存储器单元的先前读取操作之间已经过的时间量、确定测得的时间量是否满足阈值,以及在测得的时间量超过阈值的情况下设置标志。

在一些实施例中,控制器通过以下步骤来确定存储器单元是否处于第一读取条件:对相邻存储器单元(或存储器的相邻部分)已被读取的次数进行计数、确定相邻存储器单元已被读取的次数是否满足阈值,以及在次数超过阈值的情况下设置标志。

在一些实施例中,控制器通过在例如存储器阵列通电或唤醒之类的初始化事件之后自动设置标志来确定存储器单元是否处于第一读取条件。在一些实施例中,控制器可以通过确定自存储器单元最后一次处于第一读取条件以来已经有多长时间来确定存储器单元是否处于第一读取条件。在一些实施例中,控制器通过将环境温度与阈值进行比较来确定存储器单元是否处于第一读取条件。例如,如果环境温度大于阈值,则控制器确定存储器单元处于第一读取条件。

如果与在读取命令中指定的数据相对应的一个或多个存储器单元处于第一读取条件,则控制器利用针对第一读取条件优化的动态读取用例读取(510)存储器单元。在一些实施例中,控制器通过使用针对第一读取条件优化的读取电压来读取处于第一读取条件的存储器单元。换句话说,控制器施加与对处于第一读取条件的存储器单元的读取操作相对应的读取电压(例如,由读取电平选择模块224选择)。在施加读取电压时,控制器通过感测通过存储器单元的电流的电平或电流的缺乏来执行读取操作。基于电流的电平或电流的缺乏,如以上参考图4a到4c所述擦除或编程存储器单元。

在一些实施例中,在接收读取命令之前预先确定针对第一读取条件优化的读取电压值。在一些实施例中,这些预先确定的读取电压电平,有时在本文中称为“第一读取的读取电压”值,存储在表(例如,表242)中。在一些实施例中,在存储器装置的制造过程期间预先配置第一读取的读取电压值。在一些实施例中,基于存储器装置性能、误码率、存储器单元的正常磨损或其它读取性能特征而动态地更新第一读取的读取电压值。在一些实施例中,使用单元电压分布(cvd)过程动态地更新第一读取的读取电压值。

重要的是要注意,控制器在存储器单元处于第一读取条件时执行上述读取操作(参考步骤510),而不是在读取之前试图将存储器单元预处理为第二读取条件。这样,由于应用了易错预处理措施(例如,预处理命令),因此第一读取优化的读取操作不会引起进一步的读取错误。

如果与读取命令中指定的数据相对应的一个或多个存储器单元不处于第一读取条件,则控制器使用不一定针对第一读取条件优化的读取参数来读取(506)一个或多个存储器单元。例如,控制器使用历史用例(例如,来自历史表244的历史0用例)读取存储器单元。更具体地,控制器向存储器单元施加与不处于第一读取模式的单元的读取操作相对应的读取电压电平,并且在施加读取电压的同时感测通过单元的电流电平或电流的缺乏。基于电流的电平或电流的缺乏,如以上参考图4a到4c所述擦除或编程存储器单元。

如果步骤506中的读取尝试导致错误(508),则控制器利用针对第一读取条件优化的动态读取用例读取(510)存储器单元,而不管存储器单元是处于第一读取条件、第二读取条件还是任何其它读取条件。重要的是要注意,此步骤发生在实施任何附加的读取错误处理过程且未预处理单元(例如,使用预处理命令)之前。

如果在步骤506中的读取尝试没有导致错误(508),则对要读取的存储器单元的读取操作完成(590),并且感测到的电流用作确定单元的编程状态(或擦除状态)的基础,如上文参考图4a到4c所描述的。

如果步骤510中的读取尝试导致错误(512),则控制器可选地实施一个或多个附加的读取错误处理(reh)步骤(550),以便读取存储器单元。下文参考图6描述示例reh步骤。这些步骤是可选的,对于执行图5中描述的过程不是必需的。

如果在步骤510中的读取尝试没有导致错误(512),则对要读取的存储器单元的读取操作完成(590),并且感测到的电流用作确定单元的编程状态(或擦除状态)的基础,如上文参考图4a到4c所描述的。

在一些实施例中,控制器不执行步骤506和508。替代地,如果控制器确定存储器单元不处于第一读取条件(步骤504),则方法前进到步骤550。

在一些实施例中,控制器在初始化存储器装置时不执行步骤504。替代地,当初始化存储器装置时,假设由于没有存储器装置的最近使用因此相应存储器单元处于第一读取条件,则控制器在接收到读取命令后立即跳到步骤510。对于这些实施例,控制器在存储器装置初始化时可选地为每个存储器单元(或存储器的可选部分)设置第一读取标志。

图6描绘了可以在例如图5中的步骤550处结合读取操作执行的reh步骤600的流程图。过程600通常由存储装置120或存储系统的存储控制器124或管理模块121例如在数据解码/恢复模块220(图2)的控制下执行,但是替代地可以由嵌入有存储装置的计算机系统(例如,计算机系统110)执行。每个步骤都是可选的,并且可以根据应用更改步骤的顺序。

控制器尝试利用历史用例(例如,来自历史表244)执行读取操作(602)。如果失败(604),则控制器尝试利用默认读取电压值(例如,默认值246)执行读取操作(606)。如果失败(608),则控制器尝试使用drt用例(例如,使用存储在动态读取表248中的值)执行读取操作(610)。如果失败(612),则控制器尝试使用一个或多个默认值以及数据前瞻(dla)过程(例如,使用dla模块226)执行读取操作(614)。如果失败(616),则控制器尝试使用一个或多个drt值以及dla过程(例如,使用dla模块226)执行读取操作(618)。如果失败(620),则控制器尝试通过不可校正的纠错码(ecc)过程(例如,使用ecc模块228)执行读取操作(630)。如果步骤612或620没有失败,则控制器用读取电压更新(680、682)历史表(例如,表244),以便它们可用于随后的读取操作,并且读取过程完成(690)。如果步骤604、608或616没有失败,则读取操作完成(690)。当读取操作完成时,在施加相应读取电压期间感测到的电流或电流的缺乏被用作确定单元的编程状态(或擦除状态)的基础,如上文参考图4a到4c所描述的。

图7描绘了方法700的流程图,所述方法从数据存储装置的存储介质中的存储器单元进行读取,并且具体地,当所述存储器单元可能处于第一读取条件或第二读取条件时,对从主机装置接收到的读取命令作出响应。方法700通常由存储装置120或存储系统的存储控制器124或管理模块121例如在数据解码/恢复模块220(图2)的控制下执行,但是替代地,可以由其中嵌入了存储装置的计算机系统(例如,计算机系统110)执行。

从例如计算机系统110(图1)等计算机系统(在本文中替代地称为主机或主机系统)接收(702)读取命令。读取命令例如通过指定逻辑或物理地址来指定要从存储介质130读取的数据。在一些实施例中,控制器响应于读取命令来控制存取和解码指定数据以产生解码数据的过程。将相对于以下步骤更详细地描述存取和解码过程的至少一部分。

响应于读取命令,控制器尝试使用硬位解码过程来执行读取操作(704)。如果失败(706),则控制器以针对第一读取条件(第一读取的读取电压)优化的一个或多个预先确定的读取电平来读取(708)存储器单元。此步骤类似于图5中的步骤510,并且上文关于所述步骤描述的特征对应于步骤708的特征。如果第一读取优化的读取操作失败(710),则控制器可选地实施一个或多个附加的读取错误处理(reh)步骤(750)以便读取存储器单元。上文参考图6描述了示例reh步骤。这些步骤是可选的,并且对于执行图7中描述的过程不是必需的。在一些实施例中,附加的reh步骤可以包含对流进行ldpc(低密度奇偶校验)编码、bes(位错误扫描)、软位读取和/或跨存储器阵列的xor读取。如果读取操作没有失败(706、710),则读取操作完成(590)。当读取操作完成时,在施加相应读取电压期间感测到的电流或电流的缺乏被用作确定单元的编程状态(或擦除状态)的基础,如上文参考图4a到4c所描述的。

应理解,虽然术语“第一”、“第二”等可在本文中用以描述各种元件,但这些元件不应受这些术语限制。除了短语“第一读取条件”和“第二读取条件”外,术语“第一”、“第二”等仅用于将一个元件与另一元件区分开。例如,第一接触可以被称为第二接触,并且类似地,第二接触可以被称为第一接触,而不改变描述的含义,只要所有出现的“第一接触”被一致地重命名并且所有出现的“第二接触”被一致地重命名。第一接触和第二接触都是接触,但是它们不是同一接触。

短语“第一读取条件”和“第二读取条件”描述了存储器单元的本领域公认的条件,这些条件被标记为“第一读取”(例如,在阈值时间量之后或在存储器装置通电之后第一次读取单元)和“第二读取”(例如,由于在经过阈值时间量之前已经读取了单元或者由于存储器装置已经通电而导致能产生更准确结果的读取操作)。通常,这些短语在不更改元素含义的情况下是不可互换的。

本文所使用的术语仅用于描述特定实施例的目的,且并不希望限制权利要求。如在各种描述的实施例和所附权利要求的描述中所使用的,单数形式“一”、“一个”和“所述”旨在也包含复数形式,除非上下文另有明确说明。还应理解,本文所用的术语“和/或”是指并包含一个或多个相关所列项目的任何和所有可能的组合。应进一步理解,术语“包括”在用于本说明书中时规定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件、和/或其群组的存在或添加。

如本文中所使用,取决于上下文,术语“如果”可被解释为表示“当所陈述的先决条件为真时”或“在所陈述的先决条件为真后”或“响应于确定所陈述的先决条件为真”或“根据确定所陈述的先决条件为真”或“响应于检测到所陈述的先决条件为真”。类似地,短语“如果确定[所陈述的先决条件为真]”或“如果[所陈述的先决条件为真]”或“当[所陈述的先决条件为真]时”可被解释为表示“在确定…后”或“响应于确定”或“根据确定”或“在检测…后”或“响应于检测”,取决于上下文,所陈述的先决条件为真。

出于阐释的目的,已参考具体实施方案描述了前述描述。然而,以上说明性讨论并非旨在穷举或将本发明限制为所公开的精确形式。鉴于以上教示,许多修改和变化都是可能的。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域其它技术人员能够最好地利用本发明以及具有各种修改的各种实施例,以适合于预期的特定用途。

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