对存储在固态存储器中的数据进行解码的制作方法_3

文档序号:8947439阅读:来源:国知局
例如,LLR(X k)可以由解码器312 来使用。通过读取和检测存储在具有与目标存储器位置的属性类似的属性的参考存储器位 置上的已知数据,来生成软决策信息。例如,同一存储器块中的存储器页面很可能具有与这 些已经经历过相同或相似Ρ/Ε循环数、磨损、单元间干涉、页面间干涉、工作或环境温度等 的页面具有相似的属性。作为另一示例,在第一页面和第二页面(可以是相邻页面或者可 以不是相邻页面)内具有相同位置的存储器位置很可能具有相似的属性。
[0050] 软决策信息牛成和应用讨稈
[0051] 图6A-6D是示出了根据本发明的一些实施例的读取所存储的数据的过程的流程 图。图示的过程可以由控制器130和/或数据存储与误差校正模块132来执行。图6Α是 示出了在块602中将已知的训练数据存储在存储器阵列150中的过程600Α的流程图。已 知的训练数据可以存储在一个或多个存储器位置上。例如,已知的训练数据可以存储在存 储器阵列150中的每个块的一个或多个页面中。作为另一示例,已知的训练数据可以存储 在从每N个块中选出的一个或多个页面中,其中N是整数。例如,已知的训练数据可以存储 在从三个相邻块中选出的页面中。
[0052] 图6B是示出了使用根据过程600A存储的已知训练数据或者使用已经被成功解码 的数据来读取所存储的数据的过程600B的流程图。在一个实施例中,过程600B对存储在目 标存储器位置上的数据进行检测以及解码。在块604中,过程600B对参考存储器位置执行 多次读取操作。参考存储器位置可以存储已知的训练数据(例如,其可以根据过程600A来 存储)。在一个实施例中,参考存储器位置可以是存储器页面。在另一实施例中,参考存储 器位置可以是部分页面、页面、页面数、块、块数和类似物或者其任意组合。过程600B对参 考存储器位置执行多次读取操作,从而获得存储在存储器位置上的多个数据模式。例如,过 程600B针对参考存储器页面的存储器单元X。至X m 1获得多次读取值。因为参考数据是已知 的,所以过程600B能够构造类似于表格400的表格。过程600B转换到块606,在块606中 该过程基于已知的训练数据并且基于数据模式来分配概率值。在一个实施例中,过程600B 生成类似于框架500的框架并且将权重分配给框架。根据来自表格的概率值来确定权重。 利用该框架,过程600B能够确定软决策信息,例如LLR。
[0053] 过程600B转换到块608,在块608中,该过程对目标存储器位置执行一个或多个 读取操作。在一个实施例中,在块608中执行一次或多次读取操作之前,能够执行块604和 606中的操作。目标存储器位置可以是存储器页面。在另一实施例中,目标存储器位置可以 是部分页面、页面、页面数、块、块数和类似物或其任意组合。在一个实施例中,目标存储器 位置可以是具有与参考存储器页面的属性类似的属性的存储器页面。在一个实施例中,过 程600B在块608中执行单次读取操作,并且判定该操作是否导致发生读取错误。如果没有 发生错误,则过程600B不执行多次读取。另一方面,如果发生一个或多个错误,则过程600B 对目标存储器位置执行多次读取操作。例如,过程600B能够利用不同的电压阈值来若干次 (例如,三次)地读取目标存储器页面中的每个单元。
[0054] 过程600B转换到块610,其中其基于在块606中分配的概率值来确定所存储的数 据。在一个实施例中,过程600B利用在块606中生成的LLR来对所存储的数据进行检测和 解码。过程600B转换到块612,其中其将存储在目标存储器位置上的用户数据提供给主机 系统110。任选地,在转换到块610之前,过程600B能够判定在读取目标存储器位置的同时 是否发生一个或多个读取错误。任选的对读取错误的检查尤其适用于目标存储器位置被读 取多次的情况。如果没有遇到读取错误,则过程600B能够转换到块612,其中其将存储在目 标存储器位置上的用户数据返回到主机系统110。如果过程600B确定在读取目标存储器 位置期间已经发生了一个或多个读取错误,则过程可以转换到块610。在一些实施例中,过 程600B能够生成并且使用用于生成与执行对存储器位置的单次读取和多次读取对应的软 决策信息的表格。例如,可以生成并且使用类似于表格400的多个表格。
[0055] 图6C是示出了用于执行块612的操作(即,确定存储在目标存储器位置上的数 据)的过程600C的流程图。在块612A中,过程600C通过再次对已经取得的数据应用检测 来确定所存储的数据。例如,在块608中已经读取了存储的数据,并且基于概率值的检测和 /或解码可以再次应用于该数据。另一方面,在块612B中,过程600C、600D可以再次读取存 储在目标存储器位置上的数据,并且将检测和/或解码应用于再次读取的数据。在一个实 施例中,过程600C试图在转换到块612B之前执行块612A中的操作,其中过程再次读取目 标存储器位置。
[0056] 图6D是示出了利用根据过程600A的已知训练数据或者使用已经成功解码的数据 来读取存储数据的过程600D的流程图。在一个实施例中,过程600D对存储在诸如存储器 页面的目标存储器位置上的数据进行检测和解码。在块620中,过程600D读取目标存储器 位置。在块622中,过程600D判定在读取目标存储器位置的同时是否发生一次或多次读取 错误。如果尚未遇到读取错误,则过程600D已经成功地对存储在目标存储器位置上的数据 进行了检测和解码。过程600D转换到块632,在块632中所取得的数据被返回到主机系统 IlO0
[0057] 如果过程600D在块622中遇到一个或多个读取错误,则过程转换到块624和626, 在这些块中执行与图6B的块604和608中执行操作相似的操作。过程600D随后转换到块 628,在该块中,该过程对目标存储器位置执行多次读取操作。在一个实施例中,在过程执行 块624和626的操作的同时,过程600D执行块628的操作。在另一实施例中,在过程执行 块624和626的操作之前,过程600D执行块628的操作。过程600D转换到块630,在该块 中基于在块626中分配的概率值和在块628中确定的多次读取值来确定存储在目标存储器 位置上的数据。在块632中,该过程将取回的数据返回到主机系统。
[0058] 图7是示出了根据本发明的另一实施例的读取所存储的数据的过程700的流程 图。图示的过程可以由控制器130和/或数据存储与误差校正模块132来执行。在一个实 施例中,过程700对存储在诸如存储器页面的存储器位置上的数据进行检测和解码,作为 对多个存储器位置执行读取命令的部分。存储器位置可以是相邻的,例如连续的,或者可以 随机地定位在存储器阵列150中。
[0059] 在块702中,过程700对诸如存储器页面的第一存储器位置执行读取操作。过程 700转换到块704,在该块中该过程对第一存储器位置执行多次读取操作并且确定多个数 据模式。这些操作可以类似于如上所述的块604中执行的那些操作。过程700转换到块 706,在该块中,该过程基于在块704中确定的数据模式来分配概率值。在一个实施例中,在 块704中已经对存储在第一存储器位置上的数据进行成功地检测和解码。在块706中,过程 700能够基于数据模式以及基于成功解码的数据(或已知数据)来分配概率值。在块706 中执行的操作可以类似于如上所述在块606中执行的那些操作。
[0060] 过程700转换到块708,在该块中,该过程利用在块706中分配的概率值来更新先 前确定的概率值。在一个实施例中,过程700能够对多个存储器位置执行读取操作,并且, 每当该过程对所存储的数据进行成功地解码和检测时,该过程都能够更新概率值,例如软 决策数据(例如,LLR)。这样,最新的概率值用于对存储在当前被读取的存储器位置中的数 据进行检测和/或解码。在另一实施例中,过程700在任何适当的时机,例如在对多个存储 器位置进行了成功地检测和解码之后,更新概率值。
[0061] 过程700转换到块710,在该块中,该过程读取第二存储器位置。在一个实施例中, 第二存储器位置是作为第一存储器页面的近邻的第二存储器页面。在另一实施例中,第二 存储器位置是存储器阵列150中的任意位置。利用更新的概率值来对第二存储器位置进行 检测和解码。概率值可以是软决策数据,例如LLR。
[0062] 在一个实施例中,过程700能够将存储在第一存储器位置上的被成功解码和/或 检测的数据作为已知数据。这样,该过程不使用存储在存储器阵列150中的已知训练数据 或者不依赖于从该数据取得的信息。在另一实施例中,除了被成功解码和/或检测的数据 之外或者作为其替代,过程700使用已知的训练数据。
[0063] 结论
[0064] 公开的实施例能够用于估计存储在固态存储器阵列单元中的电荷量,而不需要在 存储器阵列中安装额外的传感器、模数转换器等。增加这样的额外组件与存储器阵列的成 本的增加和容量的降低相关联。对存储器单元执行多次读取操作以及基于读取操作的结果 来计算概率能够提供用于对所存储的数据进行检测和解码的软决策信息。因此,改进了可 靠性,提尚了性能。
[0065] 其他夺铟例
[0066] 本领域的技术人员将理解的是,在一些实施例中,除了 LDPC解码器之外和/或作 为LDPC解码器的替代,可以使用其他适合的解码器
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1