存储器装置及访问其数据的方法和存储器系统与流程

未命名 10-18 阅读:99 评论:0


1.本发明构思的示例性实施例涉及数据编码和解码,更具体地,涉及使用广义低密度奇偶校验码对数据进行编码和解码以存储在存储器装置上。


背景技术:

2.低密度奇偶校验(ldpc)码和涡轮乘积码(tpc)二者都以其优越的纠错能力和其低编码/解码复杂度而闻名。通过广义ldpc(gldpc)码可实现甚至更好的纠错能力,其中,相比于“普通”ldpc码中的单奇偶校验,泰纳(tanner)图中的本地校验节点被允许是任意的。
3.在编码理论中,汉明码(hamming code)是用奇偶校验位对数据进行编码的线性纠错码。例如,hamming(7,4)码通过添加三个奇偶校验位将四位数据编码为七位。基于汉明码的gldpc码提供了高原始误码率(rber)覆盖和低编码解码复杂度的完美组合。由于典型的错误底限(error floor),这些码的高rber覆盖仅在大约10-8
的中等目标误帧率(fer)下才能实现。这里,术语“错误底限”表示低于特定fer值时难以降低fer的情况。虽然中等fer对于一些应用是足够的,但是对于非易失性存储器(诸如,nand闪存)而言情况并非如此,在非易失性存储器中,通常需要大约10-11
的非常低的fer。因此,无法使用基于汉明码的gldpc码对数据进行编码以存储在nand闪存上。


技术实现要素:

4.根据公开的示例性实施例,提供了一种处理主机的请求以访问存储在存储器装置中的数据的方法。所述方法包括:响应于所述请求而从存储器装置读取数据;将迭代解码器应用于读取的数据;在确定迭代解码器在振荡时执行纠错;以及将纠正后的数据输出到主机。纠错包括:确定第一数据中的解码器尝试纠正的行的总数;估计所述总数之中在所述尝试之后继续具有错误的第一可见错误行;估计所述总数之中在所述尝试之后不再具有错误的残余错误行;通过根据置换对所述残余错误行的索引进行置换来确定解码器的第二数据中继续具有错误的第二可见错误行;从第二可见错误行确定第一数据中是否存在零个或更多个第一隐藏错误行,其中,每个隐藏错误行具有错误并且是有效的汉明码字;使用第一可见错误行和确定数量的第一隐藏错误行来纠正第一数据。
5.根据公开的示例性实施例,提供了一种包括存储器装置和控制器的存储器系统。控制器被配置为从存储器装置读取数据。控制器包括迭代解码器。控制器被配置为:将迭代解码器应用于读取的数据并确定迭代解码器是否在振荡。控制器被配置为:当确定迭代解码器在振荡时,确定第一数据中的解码器尝试纠正的行的总数,估计所述总数之中在所述尝试之后不再具有错误的残余错误行,通过根据置换对所述残余错误行的索引进行置换来确定解码器的第二数据中继续具有错误的第二可见错误行,从第二可见错误行确定第一数据中是否存在零个或更多个第一隐藏错误行,以及使用第一可见错误行和确定数量的第一隐藏错误行来纠正第一数据。每个隐藏错误行具有错误并且是有效的汉明码字。
6.根据公开的示例性实施例,提供了包括存储器阵列、迭代解码器和逻辑电路的存
储器装置,逻辑电路被配置为应用迭代解码器对从存储器阵列读取的数据进行解码。逻辑电路被配置为:当迭代解码器在解码期间在两个状态之间重复改变时,确定第一数据中的解码器尝试纠正的行的总数,估计所述总数之中在所述尝试之后不再具有错误的残余错误行,通过根据置换对所述残余错误行的索引进行置换来确定解码器的第二数据中继续具有错误的第二可见错误行,并且使用第一可见错误行来纠正第一数据。
7.根据公开的示例性实施例,提供了纠正存储在存储器装置中的数据的方法。所述方法包括:将迭代解码器应用于数据;确定第一数据中的解码器尝试纠正的行的总数;估计所述总数之中在所述尝试之后继续具有错误的第一可见错误行;估计所述总数之中在所述尝试之后不再具有错误的残余错误行;通过根据置换对所述残余错误行的索引进行置换来确定解码器的第二数据中继续具有错误的第二可见错误行;使用第一可见错误行来纠正第一数据。
附图说明
8.通过参照附图详细描述本发明构思的示例性实施例,本发明构思将变得更清楚,在附图中:
9.图1是示出根据本发明构思的示例性实施例的存储器系统的框图;
10.图2a是根据发明构思的示例性实施例的图1的控制器和存储器装置的框图;
11.图2b是示出根据本发明构思的示例性实施例的存储器系统的框图;
12.图3示出基于扩展汉明码的gldpc码;
13.图4示出线相交属性;
14.图5示出伪错误的示例;
15.图6示出伪错误中的不同类型的行;
16.图7示出根据本公开的实施例的检测和纠正伪错误;
17.图8示出根据本公开的实施例的可用于图7的方法中的确定隐藏错误行的位置的方法;
18.图9示出根据本公开的实施例的使用可见错误行和隐藏错误行的估计位置来纠正数据的方法;
19.图10示出根据本公开的实施例的使用可见错误行和隐藏错误行的估计位置来纠正数据的另一方法;
20.图11a和图11b示出根据本公开的实施例的用于推断错误所在的坐标的步骤;
21.图12是示出根据发明构思的示例性实施例的固态驱动系统的框图;
22.图13是根据发明构思的示例性实施例的应用了存储装置的系统的框图;
23.图14是根据发明构思的示例性实施例的应用了存储器装置的数据中心的框图。
具体实施方式
24.在下文中,将结合附图描述发明构思的示例性实施例。下面,提供诸如详细配置和结构的细节以帮助读者理解发明构思的实施例。因此,在不脱离发明构思的实施例的情况下,在此描述的实施例可被各种改变或修改。
25.除了在具体实施方式中描述或在附图中示出的组件之外,附图或以下具体实施方
式中的模块还可与其他模块连接。模块或组件之间的每种连接可以是通过通信的连接,或者可以是物理连接。
26.图1是示出根据发明构思的示例性实施例的存储器系统的框图。
27.参照图1,存储器系统包括主机控制器110和存储器控制器120(例如,固态硬盘(ssd)控制器)。
28.主机控制器110控制存储器控制器120的读取操作和写入操作,并且可对应于例如中央处理器(cpu)。在主机控制器110的控制下,存储器控制器120在执行写入操作时存储数据,并且在执行读取操作时输出所存储的数据。存储器控制器120包括主机接口121和访问控制器(或称为,控制器)125。主机接口121和访问控制器125可经由内部总线127彼此连接。访问控制器125被配置为与非易失性存储器装置(nvm)(或称为,存储器装置)126接口连接。在一个示例性实施例中,非易失性存储器装置126由闪存装置实现。在一个可选实施例中,非易失性存储器装置126被替换为易失性存储器,但是为了易于讨论,在此被描述为非易失性的。
29.主机接口121可经由并行at附件(pata)总线和串行at附件(sata)总线中的任何一个与主机(例如,参见图12中的4100)连接。主机接口121可根据主机的协议提供与访问控制器125的接口。主机接口121可使用通用串行总线(usb)、小型计算机系统接口(scsi)、pci快速、ata、并行ata(pata)、串行ata(sata)、串行附接scsi(sas)、通用闪存(ufs)或非易失性存储器快速(nvme)与主机通信。主机接口121可执行磁盘仿真功能,该硬盘仿真功能使得主机能够将控制器125识别为硬盘驱动器(hdd)。在一个示例性实施例中,访问控制器125被配置为使用双倍数据速率(ddr)协议与非易失性存储器126或动态随机存取存储器(dram)接口连接。
30.访问控制器125被配置为将数据写入存储器装置126并且从存储器装置126读取数据。存储器装置126可包括一个或多个非易失性存储器装置。
31.主机控制器110通过主机接口121与存储器控制器120交换信号。访问控制器125在执行写入操作时控制数据将被存储在存储器装置126内的对存储器的访问操作,并且在执行读取操作时控制存储在存储器装置126内的数据将被输出的对存储器的访问操作。在执行写入操作时,存储器装置126存储数据,并且在执行读取操作时,存储器装置126输出所存储的数据。访问控制器125和存储器装置126通过数据通道130彼此通信。虽然在图1中仅示出单个存储器装置126,但是发明构思不限于此。例如,访问控制器125可跨多个通道与多个存储器装置通信,或者跨单个通道与多个存储器装置通信。
32.图2a是根据发明构思的示例性实施例的图1的访问控制器125和存储器装置126的框图。读取操作和写入操作响应于命令cmd、地址addr被执行。读取操作从存储器装置126读取数据data,写入操作将数据data写入存储器装置126。可从主机接收命令cmd、地址addr和待写入的数据data,可将读取的数据data输出到主机。
33.参照图2a,存储器装置126包括存储器阵列210,并且可包括页缓冲器211。访问控制器125包括总线接口202(例如,总线控制器或总线接口电路)、缓冲器204和写入/读取(w/r)控制器220。写入/读取控制器220包括纠错码(ecc)编码器222(例如,编码电路或计算机程序)和ecc解码器228(例如,解码电路或计算机程序)。在一个示例性实施例中,ecc编码器222使用基于汉明码的gldpc码对数据进行编码。在一个示例性实施例中,ecc解码器228被
配置为对gldpc码或码字进行解码以恢复数据。ecc解码器228的解码可以是迭代的,使得其对第一视图(例如,第一数字矩阵)中的输入数据执行第一解码,对第一视图执行置换以生成第二视图(例如,第二数字矩阵),对第二视图执行第二解码,并且以这种方式继续特定次数的迭代,直到所有错误已被纠正为止或直到一定次数的迭代为止。虽然图2a示出ecc解码器228位于控制器125中,但是在可选实施例中,ecc解码器228位于存储器装置126内。
34.图2b是示出根据发明构思的另一实施例的存储器系统的框图。图2b类似于图1,但是图2b还包括连接到存储器控制器120的加速器128。例如,加速器128可由现场可编程门阵列(fpga)实现。加速器128包括上面针对图2a论述的ecc编码器222和ecc解码器228。加速器128可通过存储器控制器120从存储器装置126接收读取的数据。加速器128的ecc解码器228可被配置为对gldpc码或码字进行解码以恢复读取的数据。加速器128可通过存储器控制器120将解码后的读取的数据发送到主机控制器110。加速器128可通过存储器控制器120从主机控制器110接收写入的数据。加速器128的ecc编码器222可被配置为使用基于汉明码的gldpc码对写入的数据进行编码。加速器128可通过存储器控制器120将编码后的写入的数据发送到存储器装置126。
35.在此,术语[n,k,d]码表示长度为n、维度为k和最小汉明距离为d的线性二进制码。此外,术语[n,k]码是针对一些d的[n,k,d]码。
[0036]
汉明码
[0037]
汉明码ham是由m x(2
m-1)奇偶校验矩阵定义的[2
m-1,2
m-m-1,3]码,m x(2
m-1)奇偶校验矩阵的2
m-1列都是长度为m的非零二进制向量,其中,m是某个正整数。
[0038]
扩展汉明码
[0039]
扩展汉明码eham是通过将奇偶校验位与汉明码ham的所有码字邻接而获得的[2m,2
m-m-1,4]码。
[0040]
缩短
[0041]
如果c是[n,k]码并且则通过关于i缩短c而获得的码是通过以下操作所获得的:首先对于所有i∈i,仅取c的其中ci=0的码字(c1,...,cn),然后从i删除所有坐标(它们都是零坐标)。得到的码具有长度n-|i|和至少k-|i|的维度。如果i是系统编码中的信息部分的子集,则维度等于k-|i|。
[0042]
缩短eh码
[0043]
如果c是通过关于某个子集i缩短eham而获得的,则c是缩短eh码。
[0044]
eh-gldpc码
[0045]
对于正整数n≤2m和n,假设c
rows
是长度为n的某个固定缩短eh码,并且假设π是n
×
n矩阵的坐标的置换。eh-gldpc码被定义为满足以下条件的所有n
×
n二进制矩阵m的集合:
[0046]
1、m的所有行都是c
rows

[0047]
2、πm的所有行都是c
rows
,其中,πm是在(i

,j

)=π(i,j)时其第(i

,j

)条目是m
i,i
的矩阵。
[0048]
以上条件1和2表示同一矩阵m的两个不同的“视图”:在第一视图(在下文中,被称为“j
1”)中是指m本身,而在第二视图(在下文中,被称为“j
2”)中是指置换版本πm。
[0049]
图3示出eh-gldpc码的定义。eh-gldpc码的解码通常在以下调度中迭代地执行:解
码j1中的行

应用π

解码j2中的行

应用π-1
→……
。该迭代处理通常继续,直到j1和j2两者中的所有行都确实是缩短eh码字为止,或者直到达到预定义的最大迭代次数为止。假设置换π满足前面定义的属性1。该属性确保相关tanner图的围长至少为8,因此码的最小距离至少为16。
[0050]
属性1(线相交属性)
[0051]
通过对行应用置换π而获得的索引集与每行最多相交一次。这里,对于一些i∈{1,...,n},行代表形式为{(i,1),(i,2),...,(i,n)}的一组索引。当且仅当逆置换π-1
具有线相交属性时,可验证π具有线相交属性。此外,该属性要求n≥n。图4中示出线相交属性,其示出j1中的行被π置换为对角线,并且该线与每个j2行(水平线)最多相交一次。
[0052]
伪错误
[0053]
某种类型的错误(在下文中,被称为“伪错误”)是eh-gldpc码中的错误底限的原因。伪错误可被认为是近码字(near-codeword)/陷阱集(trapping set)的特殊情况,即,仅违反非常少量的局部约束的低权重错误。它们的特殊之处在于它们导致j1与j2之间的振荡。
[0054]
图5是由于伪错误引起的解码器振荡的示例。解码器228的输入是由图5中最左边的16个点的图案定义的矩阵。这里,每个点表示n
×
n矩阵中的“1”,并且为了展示方便,这些点被对齐。例如,在实际输入图案中,允许任意行置换。顶行的4个点形成缩短eh码字,而三个三点行中的每一行可完成为权重4的缩短eh码字(即,完成为权重4的扩展汉明码字的“1”不落在缩短索引中)。解码器的输入还可包括在“硬”位(“hard”bit)之上的软可靠性信息(诸如,对数似然比(llr))。利用以上输入,解码器228不能纠正第一行原因在于第一行已经是缩短eh码字,将第二权重3行至第四权重3行纠正为最接近的权重4码字(例如,通过将0位翻转为1),并将第五权重1行至第七权重1行纠正为全零码字。在解码器228的动作之后,剩余的图案将是图中标题“j
2”下方的4
×
4顶部图案,其由13个x(表示来自输入图案的未触及的(untouched)“1”)和3个o(表示通过解码j2创建的“1”)组成。假设对j1的解码器动作之后出现的

中的三个“1”被映射回j2中的三个单独的行,然后我们回到j2中的原始情况,并且显然解码器228将如上所述通过在j1与j2之间振荡来继续。
[0055]
根据定义,伪错误是导致解码器振荡的错误图案(例如,在j1)。在此考虑后解码图案在ji(i=1,2)仅具有权重4的行的伪错误。如图6中所示的ji(i=1,2)的预解码伪错误可被划分为hi个隐藏错误行、可见错误行和残余错误行ρi。ni表示在ji的解码器动作之后包括错误的行的总数。j1的隐藏错误行hi是缩短eh码字,因此对于ji的解码器是“不可见的”。在一个实施例中,隐藏错误行hi是具有4位错误的数据,是有效的缩短eh码字,并且解码器不能检测到有效的缩短eh码字中的错误。存在n
i-个可见错误行,即解码器228作用于ji但是在解码之后具有剩余错误的行。存在ρi个残余错误行,即解码器228适当地作用于ji并纠正所有错误的行。
[0056]
在一个实施例中,考虑具有两个属性的伪错误:i)在可见错误行中,仅存在失误纠正(例如,由解码器228翻转的所有位不应当被翻转);以及ii)所有可见错误(失误)纠正通过π或π-1
(取决于i分别等于1还是2)被映射到没有“x”的行,其中x标记在解码之前和之后都存在的错误。
[0057]
图7示出根据本公开的实施例的检测和纠正伪错误的方法。
[0058]
图7的方法包括确定迭代解码器是否振荡(步骤701)。在一个实施例中,当图2a或
图2b的解码器228(例如,迭代解码器)在相同的两个状态之间重复地改变时,迭代解码器被确定为正在振荡。例如,如果解码器228达到第一状态(在该第一状态中,解码器228已经翻转了第一数据的第一行中的第一位置、第三位置和第五位置的位)、继续到第二状态(在该第二状态中,解码器228已经翻转了第二数据的第一列中的第二位置、第四位置和第七位置的位)、返回到第一状态等,则解码器228可被认为是正在振荡。例如,图2a的w/r控制器220或访问控制器125可确定图2a的解码器228是否正在振荡,或者图2b的加速器228可确定图2b的解码器228是否正在振荡。如果解码器228没有在振荡并且所有gldpc约束被满足,则解码器228的输出可以是没有任何错误的纠正后的数据(步骤700)。如果解码器228没有在振荡并且所有gldpc约束不被满足,则数据不能被纠正,并且该方法可退出。假设在振荡期间,解码器228在第一视图j1中记录其已经纠正的位及其在所操作的数据行内的位置(例如,第一记录信息),并且解码器228在第二视图j2中记录其已经纠正的位及其在所操作的数据行内的位置(例如,第二记录信息)。位的位置可指示位所在的行以及在该行内所在的列。例如,记录信息可临时存储在缓冲器204中。第一记录信息可指示解码器228尝试纠正第一视图j1的多少行,并且第二记录信息可指示解码器228尝试纠正第二视图j2的多少行。
[0059]
图7的方法包括选择由迭代解码器(例如,228)操作的第一数据(例如,j1)内的隐藏错误行的第一数量(例如,h1)(步骤702)。选择的隐藏错误行的第一数量是一猜测。例如,如果该猜测假设仅存在1个隐藏错误行,但实际上存在2个隐藏错误行,则该猜测将最终是错误的猜测。因此,图7的方法最初可在第一次迭代中将h1设置为0,然后如果第一次猜测是错误的,则在第二次迭代中将h1设置为1。例如,第一数量的选择可由ecc解码器228执行。
[0060]
图7的方法还包括选择第一数据内的可见错误行的第一数量(例如,k1)和残余错误行的数量及其位置(步骤703)。可见错误行的第一数量基于解码器228尝试纠正的数据的行数。例如,如图6中的j1下方所示,如果第一记录信息指示6行中的位被解码器翻转,则k1可以是1、2、3、4或5。选择的可见错误行的第一数量是一猜测。例如,如果该猜测假设仅存在1个可见错误行,但实际上存在3个可见错误行,则该猜测将最终是错误的猜测。因此,图7的方法最初可在第一次迭代中将k1设置为1,然后如果第一次猜测是错误的,则在第二次迭代中将k1设置为2,然后如果第二次猜测是错误的,则在第三次迭代中将k1设置为3,等。第一数据内的残余错误行的数量(例如,ρ1)基于选择的可见错误行的数量和解码器尝试纠正的数据行的数量。例如,可通过从纠正的行的总数量减去选择的可见错误行的第一数量来计算残余错误行的第一数量。例如,如果从6个纠正的行之中将3个可见错误行选择为第二行至第四行的位置,则将确定存在第五行至第七行的位置的3个残余错误行。例如,可由ecc解码器228执行选择可见错误行的第一数量和残余错误行的数量及其位置。
[0061]
选择隐藏错误行的数量、选择可见错误行的数量及其位置以及选择残余错误行的数量及其位置可被称为选择用于扫描的参数。
[0062]
图7的方法还包括通过根据置换(例如,π)对所选残余行的纠正的位的索引进行置换,确定由迭代解码器操作的第二数据(例如,j2)内的可见错误行的第二数量及其位置(例如,索引),以及确定第二数据内的残余错误的第二数量及其在第二数据内的位置(步骤704)。对第一数据j1进行操作的迭代解码器生成第二数据j2。所选残余行的触及位(touched bit)(即,解码器在尝试纠正它们时翻转的位)的索引或位置存储在第一记录信息中,其中,该第一记录信息是迭代解码器228在其尝试纠正输入数据时振荡的同时对j1操作的正常操
作期间创建的。例如,如图6中所示,根据置换,被选择为残余错误行的j1的第五行至第七行中的触及位映射到j2的第三行和第四行。置换导致第一矩阵中的数字被重新排序,因此它们在第二矩阵中具有不同的位置。例如,由于置换,第一残余行的触及位在j1中的第五行和第一列中,但却在j2中的第三行和第四列中。例如,可由ecc解码器228执行确定第二数据内的可见错误行的第二数量及其位置的操作。
[0063]
图7的方法还包括使用第二数据的可见错误行确定第一数据内的第一隐藏错误行的位置(步骤706)。可另外使用第一数据的可见错误行来确定第一隐藏错误行的位置。可由ecc解码器228执行使用第二数据的可见错误行确定第一数据内的第一隐藏错误行的位置的操作。
[0064]
图7的方法还包括使用第一可见错误行的位置和第一隐藏错误行的位置来纠正第一数据(步骤707)。当没有发现隐藏错误行时,可仅使用第一可见错误行的位置来纠正第一数据。
[0065]
图8示出实现步骤706以确定第一隐藏错误行的位置的方法。例如,图8的方法可由位于访问控制器125中或位于加速器128中的ecc解码器228执行。
[0066]
图8的方法包括当已经确定存在隐藏错误行时,使用第一数据的可见错误行将第二数据中的可见错误行完成为一个或多个权重3向量(步骤801的左侧)。例如,如图6中所示,第二可见错误行包括示出为正方形的两个纠正位,并且其他位中的一个可被翻转以将权重2向量转换为权重3向量。在与j1的可见错误行之一的π图像相交的位置翻转第三位。
[0067]
图8的方法还包括使用汉明解码器翻转每个权重3向量的第一位以生成权重4向量(左侧步骤802)。在一个实施例中,汉明解码器是缩短的扩展汉明解码器或被配置为对缩短的扩展汉明码字进行解码。
[0068]
如果不存在隐藏错误行,则步骤801包括使用第一数据的第一可见错误行将第二数据中的可见错误行完成为权重4向量(参见801的右侧)。然后,在步骤802中验证权重4向量是否是有效码字(参见802的右侧)。
[0069]
图8的方法还包括使用逆置换将第一位中的每个映射到第一数据中的第二位,以生成第一隐藏错误行的行索引的预测(步骤803)。
[0070]
图8的方法还包括针对剩余可见错误行中的每个重复步骤801至803(步骤804)。
[0071]
图8的方法还包括根据彼此一致的预测来确定隐藏错误行的位置(步骤805)。例如,如果从第二数据的一个可见错误行得到的预测指示隐藏错误行位于图6中的j1的第一行和第二行中,并且从第二数据的另一可见错误行得到的预测指示第一行和第三行,则可推断隐藏错误行位于第一行。
[0072]
如上所述,图7的步骤707使用第一可见错误行的位置和第一隐藏错误行的位置纠正第一数据。图9和图10示出实现使用隐藏错误行和可见错误行的估计位置来纠正第一数据的步骤707的方法。
[0073]
图9的方法包括将第一数据中的每个识别的隐藏错误行和可见错误行的llr设置为0(步骤901)。
[0074]
图9的方法还包括将第一数据中的每个剩余行(即,第一数据的除可见错误行和隐藏错误行之外的剩余行)的llr的幅度增大到具有更高幅度的值(步骤902)。例如,如果剩余行中的第一行的llr是-0.5,并且剩余行中的第二行的llr是-0.4,则二者可被设置为-1。例
如,如果剩余行中的第三行的llr是+0.2并且剩余行中的第二行的llr是+0.3,则二者可被设置为+1。因此,llr基本上增大到最大值并且符号被保持。例如,如果llr支持最大负值-1和最大正值+1,则如果llr为负,则给予llr最大负值,如果llr为正,则给予llr最大正值。请注意,最大负值-1和最大正值+1的使用仅是示例,因为可使用各种其他值。剩余行可包括先前识别的残余错误行。
[0075]
图9的方法还包括将第一数据和llr(即,可见错误行、隐藏错误行和剩余行的llr)应用于迭代解码器以纠正第一数据(步骤903)。
[0076]
图10示出根据本公开的实施例的纠正数据的方法。
[0077]
图10的方法包括基于第一隐藏错误行的数量(例如,h1)、第一可见错误行的数量、对第一可见错误行进行的纠正的数量、第二可见错误行的数量和对第二可见错误行进行的纠正的数量来确定第二数据内的隐藏错误行的第二数量(例如,h2)(步骤1001)。可通过假设隐藏错误行包括4个错误、解码器将可见错误行完成为缩短的扩展汉明码字并且使用以下等式1,来计算隐藏错误行的第二数量(例如,h2)。
[0078][0079]
如图6中所示,侧l可对应于j1,并且侧可对应于j2。由于对j1中的3个可见错误行k1中的每个进行了1个纠正j,并且选择了具有4个错误的一个隐藏行(即,隐藏错误行)h1,并且3个可见错误行中的每个完成为权重4的码字,因此等式1的左侧简化为13个错误。例如,4h1+3
×
(4-1)=13。由于j2包括两个可见错误行,其中第一可见错误行具有1个纠正,并且第二可见错误行具有2个纠正,因此等式1的右侧简化为4h2+5。例如,4h2+1
×
(4-1)+1
×
(4-2)=4h2+5。由于4h2+5=13,因此h2随后被确定为2。等式1假设j1中的错误数量等于j2中的错误数量。
[0080]
图10的方法包括选择第二数据的行中的一行以对应于第二数据的隐藏行中的一行(步骤1002)。选择的行可不包括j2中解码器起作用的行。
[0081]
图10的方法还包括选择第一数据的具有3个已知坐标的可见错误行(步骤1003)。该选择还可包括选择权重4码字(即,不再是隐藏错误行)。该选择可根据以下各项来执行:(1)解码器翻转位的先前动作和振荡错误的位位置、(2)在图8的步骤的过程中找到并且被映射回第一数据的坐标、以及(3)如果第二隐藏错误行的数量h2等于2,则与第二数据中的选择的扫描行相交。3个已知坐标是第一数据的已被确定为具有错误的行内的3个位的位置。
[0082]
图10的方法还包括使用汉明解码器从每个所选可见错误行的3个已知坐标推断出第四坐标(步骤1004)。汉明解码器可基于缩短的扩展汉明码对3个已知坐标执行解码以推断出第四坐标。
[0083]
图10的方法还包括确定第四坐标是否全部映射到第二数据中的同一行(步骤1005)。如果第四坐标没有全部映射到同一行,则该方法丢弃行的选择,并且如果第二隐藏错误行的数量h2等于2并且不是所有行都被扫描,则恢复到步骤1002以选择另一行,或者如果h2《2、或如果h2=2并且所有行都被扫描,则恢复到图7的步骤702。如果第四坐标全部映射到同一行,则该行是对第二隐藏错误行的位置的潜在估计。
[0084]
图10的方法还包括验证潜在估计是否是有效估计(步骤1006)。如果第四坐标全部映射到第二数据中的同一行,则验证可包括确定同一行中的得到的四个坐标是否定义权重4的汉明码字。否则,该方法丢弃行的选择,并且如果h2=2并且不是所有行都被扫描,则恢复到步骤1002以选择另一行,或者如果h2《2、或h2=2并且所有行都被扫描,则恢复到图7的步骤702。所述验证还可包括:如果h2=2,则检查第二数据的扫描行与第一数据的置换后的可见错误行(或与隐藏错误行)的相交是否定义第二数据的扫描行中的有效的权重4汉明码字。否则,该方法丢弃行的选择,并且如果h2=2并且不是所有行都被扫描,则恢复到步骤1002以选择另一行,或者如果h2《2、或h2=2并且所有行都被扫描,则恢复到图7的步骤702。
[0085]
如果验证得出潜在估计是有效估计的结论,则图10的方法然后使用从潜在估计推断出的坐标来纠正第一数据(步骤1007)。每个推断出的坐标可指示第一数据内的给定行的位置和给定行内的位位置。例如,在图6中,如果行是顺序的,从第一行开始,并且示出每行的前4位,则在左侧将存在行索引为1且位位置为1至4的4个推断出的坐标、行索引为2且位位置为1至3的3个推断出的坐标、行索引为3且位位置为1至3的3个推断出的坐标、以及行索引为4且位位置为1至3的3个推断出的坐标。然后通过翻转第一数据内具有这些位位置的位来执行数据的纠正。然而,图6不需要示出顺序的行或顺序的位。例如,示出的第一行可对应于第一数据内的第10行,并且示出的第二行可对应于第一数据内的第19行。例如,第一行中的第一x可对应于第10行中的具有第100位位置的位,第一行中的第二x可对应于第10行中的具有第112位位置的位,第二行中的第一x可对应于第19行中的具有第50位位置的位,第二行中的第二x可对应于第19行中的具有第62位位置的位,等。
[0086]
图11a和图11b示出图10的用于在给定的一组扫描参数已被选择之后推断错误所在的坐标的步骤。
[0087]
在图11a中,观察到j1的单个隐藏行的4个x(用“?”标记)被映射到j2的4个x行(用“?”标记)中的每个中的单个x。在符号方面,有时会说j1的隐藏错误行与j2的全部4个x行相交。
[0088]
在一般情况下,如果的x行的数量大于4,则需要个相交选项上的附加扫描,并且在下文中考虑扫描命中正确选项的情况。还要注意,由于和二者根据扫描参数的当前值已被计算,因此假设在这个阶段是已知的。
[0089]
在m个选项上的扫描的每个示例中,在h
l
=1的情况下,对于侧的个可见错误行中的每个,存在来自j
l
的隐藏错误行的0或1个x。在h
l
=0的情况下,清楚的是,因为没有j
l
的隐藏错误行,在侧的每个可见错误行中存在来自j
l
的隐藏错误行的0个x。这包括在更一般的情况下,其中侧的每个可见错误行具有来自j
l
的可见错误行的0或1个x。因此,除非另外说明,否则假设h
l
=1。
[0090]
注意,的个可见错误行中的所有不是来自j
l
的隐藏错误行的x都来自于j
l
的k
l
个可见错误行,并且通过假设,在已知坐标中,每个这样的行与的每个可见错误行最多相交一次。
[0091]
在下文中,在中,可同时恢复来自j
l
的可见错误行的x以及j
l
的隐藏错误行(如果
存在)的标识。此外,可以以几种不同的方式重建一些未知数,并且检查同一未知数的结果值是否相同将用作筛选失误假设的标准。
[0092]
可见错误行在中固定,并且假设解码器在该行中翻转了坐标。例如,在图6中,存在具有的一个可见错误行,以及具有个翻转的一个行。在的行中,权重4的缩短eh字恰好具有以下“1”:i)来自j
l
的隐藏错误行的多达一个x:如果h
l
=1,则假设这样的x,并且对上述m个选项的扫描的当前值意味着的可见错误行确实与j
l
的隐藏错误行相交(例如,mh∈{0,1}被写入为来自j
l
的隐藏错误行的x的数量)、ii)恰好个以及iii)恰好来自j
l
的可见错误行的个x,每个这样的x来自j
l
的不同行。
[0093]
然后,该算法可如下对的所有可见错误行运行:
[0094]
对于每个这样的行,算法在j
l
的k
l
个可见错误行中的ma个行的选择上运行
[0095]

对于上述扫描中的每个选择,如果不是所有ma个选择行都与的固定行相交,则丢弃该选项。
[0096]

否则,如果mh=0,则检查由ma个相交行+m

个口获得的4个坐标是否形成缩短eh码字。如果不是,则丢弃该选择并进行到下一选择。如果它们确实形成码字,则将其保持为来自j
l
的可见错误行的ma个x的假设。
[0097]

否则,如果mh=1,则将总共3=ma+m

个坐标完成为权重4的缩短eh码字。如果在缩短内不存在这样的完成,则丢弃该选择并进行到下一选择。如果存在选项,则将其保持为来自j
l
的隐藏错误行的x的潜在估计。
[0098]

如果丢弃一些行的所有选项,则向上移动到最后扫描的变量(从我们认为固定的那些变量开始),丢弃其当前值并进行到下一值。
[0099]

如果多于一行具有mh=1,则验证得到的对j
l
的隐藏行的估计一致。
[0100]
否则,向上移动到最后扫描的变量,丢弃其当前值并进行到下一值。
[0101]
通常且很有可能,以上处理将不会仅筛选出正确解。此外,如果外部扫描的固定参数之一是不正确的,则通常将筛选出所有解,并且将清楚的是解码器必须进行到下一假设。
[0102]
例如,在图6中,j2中有2个可见错误行,j1中有3个可见错误行。对于具有2个

的j2行,扫描来自j1的单个可见错误行的个选择,并且将由该j1行与j2行的相交得到的x和2个

完成为权重4的缩短eh码字(如果可能的话)。这导致j2行上的一个附加x。类似地,对于具有单个

的可见j2行,扫描来自j1的两个可见错误行的个选择,并且再次将来自从j1映射的2个x和单个

的3个结果坐标完成为来自权重4码字的第四坐标。如果来自两行的两个完成被映射到j1的同一行,则保留该选项。在图11b中描绘了该阶段之后的情况。在j1中用*标记的x是j1的隐藏行中的x的估计,在j2中用#标记的x是j1的可见错误行中的x的估计。
[0103]
如上所述,在该阶段,唯一未知的x(如果有的话)是侧的个隐藏错误行的那些x。例如,在图11b中,唯一未知的x是j2的两个隐藏错误行中的那些x。此外,因为解码器具有
针对该行的假设,所以侧j
l
的多达1个隐藏错误行不再被隐藏。现在有两种不同的选项继续进行:1)由于j
l
中不再存在任何隐藏错误行,所以对于仅在一侧存在隐藏错误行的情况,可通过更简单的方法来求解剩余的伪错误、以及2)类似于上述方法,可直接求解剩余的伪错误。
[0104]
第二选项
[0105]
如果则没有什么需要求解,并且整个图案是已知的。如果则与上述类似地执行工作,以便找到的单个隐藏错误行,并因此找到所有丢失的x

。在一个实施例中,可通过将j
l
的行中的已知坐标的三元组完成为权重4码字来找到的隐藏错误行。这些完成需要被映射到的同一行(验证),其然后是估计的隐藏错误行。
[0106]
考虑如图11b中所示的情况。令row1、row2为中隐藏行的索引。
[0107]
扫描假设,row1=1,...,n,排除解码器作用的行
[0108]
对于与row1相交并且具有来自以下的总共3个已知坐标的j
l
的每个可见错误行:1、解码器的翻转(图11a中的o);2、已经通过算法找到的x(对于不再隐藏的错误行,图11b中用#标记的x以及用*标记的x);3、与row1相交,寻找完成为权重4码字的第四坐标。
[0109]

如果不存在这样的码字,则丢弃对row1的选择并进行到下一选项。
[0110]

否则,验证来自j
l
的所有相关行的第四坐标被映射到的同一行。
[0111]

如果是这种情况,则的该行是对row2的估计,但是仍然需要进一步的验证:
[0112]

将来自row1和row2的估计的在j
l
中找到的所有x映射回通过构造,那些x被映射到row1和row2。验证这两行确实都是缩短eh码的权重4码字。例如,在图11b中,验证j2中的两个x行(用?标记)中的每个确实是权重4码字
[0113]

如果是这种情况,则所有丢失的x都是已知的,因此整个伪错误和伪错误解码是完成的。解码器可输出伪错误。
[0114]

否则,丢弃row1的当前选择并进行到下一选项。
[0115]

如果不是来自相关行的所有第四坐标都映射到同一行,则丢弃对row1的选择并进行到下一选项。
[0116]
第一选项
[0117]
在一些情况下,仅考虑允许仅在一侧具有隐藏错误行的伪错误就足够。例如,如前一部分所述,这种情况可能出现在两侧具有隐藏行的情况下的伪错误解码的中间阶段。作为另一示例,当修改一些解码器参数时,可确保实际上所有伪错误仅在一侧具有隐藏错误行,代价是略微降低rber覆盖。
[0118]
假设所有隐藏错误行仅出现在一侧。在这种情况下,我们首先扫描可能包括隐藏行的侧j
l
(l∈{0,1})的两个选项。通过假设,侧没有隐藏错误行。这意味着的解码器恰好在以下行中起作用:这些行包括j
l
的解码器的输出处的伪错误的置换图。参考解码器作用的作为可见错误行的行,建议采取以下行动:
[0119]

对于j
l
的每行,寻找其与所有可见错误行的交点
[0120]

如果对于一些行存在少于4个交点,则丢弃该行
[0121]

否则,如果存在m≥4个交点,则检查总共m个交点中的4个索引的选择,并且
对于每个这样的选择,检查它是否是缩短eh码的码字
[0122]

如果不是,则丢弃该选项。否则,将该选项保存为当前j
l
行的伪错误的潜在部分
[0123]

在该阶段,通常存在j
l
的其中存在至少一个保存的码字的少量r行。这些行包括j
l
的所有可见错误行。
[0124]

我们现在可在侧j
l
的伪错误的假设r个行上运行,通常在范围r=1,...,6内。
[0125]

对于r的每个选择,我们可在选择我们的r行中的r个候选行的所有选项上运行。
[0126]

对于r个行的每个选择,我们现在可从r个行中的每个行对权重4码字的所有可能的选择运行。
[0127]

在每个扫描示例,我们对侧j
l
的伪错误具有如下假设(仅考虑可见行):r个权重4码字位于r个行。
[0128]

我们可将该图案映射到查看它正好导致的解码器对实际伪错误的动作。如果这样做,则j
l
中的r
×
4图案是伪错误的候选。
[0129]
可选地,可将的所有可见错误行的输出llr设置为零,将中的不是可见错误行的所有行的输出llr的幅度设置为它们的最大可能值,并且进行eh-gldpc解码迭代。注意,当我们进行eh-gldpc解码迭代时,第一步是将输出llr从侧映射到侧j
l
。具体地,在j
l
的每一行中,零llr精确地标记其与的可见错误行的交点,并且它们现在是该行的最低llr。
[0130]
返回参照图2a或图2b,在可选实施例中,用于执行上述纠错的控制器125的逻辑和ecc解码器228位于存储器装置126中。存储器装置126可包括逻辑电路,逻辑电路被配置为将存储在其中的ecc解码器228应用于来自存储器装置126内的非易失性存储器阵列的数据,并且确定ecc解码器228是否正在振荡。如上文所讨论的,ecc解码器228可在尝试纠正读取的数据时在两个状态之间振荡。当确定解码器228正在两种状态之间振荡时,逻辑电路可确定解码器尝试纠正的第一数据中的行的总数,估计总数之中在尝试之后不再具有错误的残余错误行,通过根据置换对残余错误行的索引进行置换来确定解码器的第二数据中继续具有错误的第二可见错误行,从第二可见错误行确定第一数据中是否存在零个或更多个第一隐藏错误行,以及使用第一可见错误行和确定数量的第一隐藏错误行来纠正第一数据。逻辑电路可将纠错后的数据输出到控制器125。控制器125可响应于接收到来自主机的读取请求而将读取数据的指令提供给逻辑电路。逻辑电路可在响应于接收到该指令读取数据之后执行上述解码和纠错。
[0131]
上述方法可有形地实现在一个或多个计算机可读介质(即,程序存储装置,诸如,硬盘、磁性软盘、ram、rom、cd rom、闪存等)上,并且可由包括合适架构的任何装置或机器(诸如,具有处理器、存储器和输入/输出接口的通用数字计算机)执行。
[0132]
图12是示出根据发明构思的示例性实施例的固态驱动系统的框图。参照图12,固态驱动(ssd)系统4000包括主机4100和ssd 4200。主机4100包括主机接口4111、主机控制器4120和dram 4130。
[0133]
主机4100可将数据写入ssd 4200或从ssd 4200读取数据。主机控制器4120可经由主机接口4111将信号sgl(诸如,命令、地址、控制信号等)发送到ssd 4200。dram 4130可以是主机4100的主存储器。
[0134]
ssd 4200可以经由主机接口4211与主机4100交换信号sgl,并且可经由电源连接器4221被供电。ssd 4200可包括多个非易失性存储器(nvm_1)4201至(nvm_n)420n、ssd控制器4210和辅助电源4220。这里,非易失性存储器4201至420n可由nand闪存实现。ssd控制器4210可由图1、图2a或图2b的控制器125实现。存储器装置4201至420n中的每个可由图1、图2a或图2b的存储器装置126实现。
[0135]
多个非易失性存储器4201至420n可用作ssd 4200的存储介质。多个非易失性存储器4201至420n可经由多个通道ch1至chn与ssd控制器4210连接。一个通道可与一个或多个非易失性存储器连接。通道ch1至chn中的每个可对应于图1中描绘的数据通道130。与一个通道连接的非易失性存储器可与同一数据总线连接。
[0136]
ssd控制器4210可经由主机接口4211与主机4100交换信号sgl。在此,信号sgl可包括命令(例如,cmd)、地址(例如,addr)、数据等。ssd控制器4210可被配置为根据主机4100的命令将数据写入相应的非易失性存储器或从相应的非易失性存储器读出数据。
[0137]
辅助电源4220可经由电源连接器4221与主机4100连接。辅助电源4220可通过来自主机4100的电力pwr充电。辅助电源4220可放置在ssd 4200内部或ssd 4200外部。例如,辅助电源4220可放置在主板上以向ssd 4200供应辅助电力。
[0138]
虽然上面已经描述了关于图6至图11b的实施例,其中初始步骤从j1开始,然后后续包括关于j2的步骤,但是发明构思不限于此。例如,应用于j1的初始步骤可替代地应用于j2,然后关于j2的后续步骤将被关于j1的相应步骤替换。
[0139]
图13是根据实施例的应用了存储装置的系统1000的示图。图13的系统1000基本上可以是移动系统(诸如,便携式通信终端(例如,移动电话)、智能电话、平板个人计算机(pc)、可穿戴装置、医疗保健装置或物联网(iot)装置)。然而,图13的系统1000不必限于移动系统,并且可以是pc、膝上型计算机、服务器、媒体播放器或汽车装置(例如,导航装置)。
[0140]
参照图13,系统1000可包括主处理器1100、存储器(例如,1200a和1200b)和存储装置(例如,1300a和1300b)。此外,系统1000可包括图像拍摄装置1410、用户输入装置1420、传感器1430、通信装置1440、显示器1450、扬声器1460、电源装置1470和连接接口1480中的至少一个。
[0141]
主处理器1100可控制系统1000的所有操作,更具体地,可控制包括在系统1000中的其他组件的操作。主处理器1100可被实现为通用处理器、专用处理器或应用处理器。
[0142]
主处理器1100可包括至少一个cpu核1110,并且还包括控制器1120,控制器1120被配置为控制存储器1200a和1200b和/或存储装置1300a和1300b。在一些实施例中,主处理器1100还可包括加速器1130,加速器1130是用于高速数据操作(诸如,人工智能(ai)数据操作)的专用电路。加速器1130可包括图形处理器(gpu)、神经处理器(npu)和/或数据处理器(dpu),并且可被实现为与主处理器1100的其他组件物理上分离的芯片。加速器1130可包括与图2b中示出的加速器12类似的ecc编码器222和ecc解码器228。
[0143]
存储装置1300a和1300b可用作被配置为无论是否被供电都存储数据的非易失性存储装置,并且具有比存储器1200a和1200b大的存储容量。存储装置1300a和1300b可分别包括存储控制器(strg ctrl)1310a和1310b以及被配置为经由存储控制器1310a和1310b的控制来存储数据的nvm(非易失性存储器)1320a和1320b。尽管nvm 1320a和1320b可包括具有二维(2d)或三维(3d)结构的v-nand结构的闪存,但是nvm 1320a和1320b可包括其他类型
的nvm(诸如,pram和/或rram)。
[0144]
存储装置1300a和1300b可与主处理器1100物理上分离并且包括在系统1000中,或者可与主处理器1100实现在同一封装件中。此外,存储装置1300a和1300b可具有各种类型的固态装置(ssd)或存储卡,并且可通过接口(诸如下面将描述的连接接口1480)与系统1000的其他组件可移除地结合。存储装置1300a和1300b可以是应用了标准协议(诸如,通用闪存(ufs)、嵌入式多媒体卡(emmc)或非易失性存储器快速(nvme))的装置,但不限于此。
[0145]
图像拍摄装置1410可拍摄静止图像或运动图像。图像拍摄装置1410可包括相机、摄像机和/或网络摄像头。
[0146]
用户输入装置1420可接收由系统1000的用户输入的各种类型的数据,并且包括触摸板、键区、键盘、鼠标和/或麦克风。
[0147]
传感器1430可检测可从系统1000外部获得的各种类型的物理量,并将检测到的物理量转换为电信号。传感器1430可包括温度传感器、压力传感器、照度传感器、位置传感器、加速度传感器、生物传感器和/或陀螺仪传感器。
[0148]
通信装置1440可根据各种通信协议在系统1000外部的其他装置之间发送和接收信号。通信装置1440可包括天线、收发机和/或调制解调器。
[0149]
显示器1450和扬声器1460可用作被配置为分别向系统1000的用户输出视觉信息和听觉信息的输出装置。
[0150]
电源装置1470可适当地转换从嵌入在系统1000中的电池(未示出)和/或外部电源供应的电力,并将转换后的电力供应给系统1000的每个组件。
[0151]
连接接口1480可提供系统1000与外部装置之间的连接,外部装置连接到系统1000并且能够向系统1000发送数据和从系统1000接收数据。连接接口1480可通过使用各种接口方案(诸如,高级技术附件(ata)、串行ata(sata)、外部sata(e-sata)、小型计算机系统接口(scsi)、串行附接scsi(sas)、外围组件互连(pci)、pci快速(pcie)、nvme、ieee 1394、通用串行总线(usb)接口、安全数字(sd)卡接口、多媒体卡(mmc)接口、emmc接口、ufs接口、嵌入式ufs(eufs)接口和紧凑型闪存(cf)卡接口)来实现。
[0152]
图14是根据实施例的应用了存储器装置的数据中心3000的示图。
[0153]
参照图14,数据中心3000可以是收集各种类型的数据并提供服务的设施,并且被称为数据存储中心。数据中心3000可以是用于操作搜索引擎和数据库的系统,并且可以是公司(诸如,银行)或政府机构所使用的计算系统。数据中心3000可包括应用服务器3100至3100n和存储服务器3200至3200m。根据实施例,可不同地选择应用服务器3100至3100n的数量和存储服务器3200至3200m的数量。应用服务器3100至3100n的数量可与存储服务器3200至3200m的数量不同。存储服务器3200至3200m中的每个可包括上面关于图2b讨论的加速器128。
[0154]
应用服务器3100至3100n可通过网络3300与存储服务器3200至3200m通信。网络3300可通过使用光纤信道(fc)或以太网来实现。在这种情况下,fc可以是用于相对高速数据传输的介质,并且使用具有高性能和高可用性的光开关。根据网络3300的访问方法,存储服务器3200至3200m可被设置为文件存储、块存储或对象存储。
[0155]
在一个实施例中,网络3300可以是存储专用网络(诸如,存储区域网络(san))。例如,san可以是fc-san,其使用fc网络并且根据fc协议(fcp)来实现。作为另一示例,san可以
是互联网协议(ip)-san,其使用传输控制协议(tcp)/ip网络并且根据tcp/ip上的scsi或互联网scsi(iscsi)协议来实现。在另一实施例中,网络3300可以是通用网络(诸如,tcp/ip网络)。例如,网络3300可根据诸如以太网上的fc(fcoe)、网络附加存储(nas)和结构上的nvme(nvme-of)的协议来实现。
[0156]
在下文中,将主要描述应用服务器3100和存储服务器3200。应用服务器3100的描述可应用于另一应用服务器3100n,并且存储服务器3200的描述可应用于另一存储服务器3200m。
[0157]
应用服务器3100可通过网络3300将用户或客户端请求存储的数据存储在存储服务器3200至3200m中的一个中。此外,应用服务器3100可通过网络3300从存储服务器3200至3200m中的一个获得用户或客户端请求读取的数据。例如,应用服务器3100可被实现为网络服务器或数据库管理系统(dbms)。
[0158]
应用服务器3100可通过网络3300访问包括在另一应用服务器3100n中的存储器3120n或存储装置3150n。可选地,应用服务器3100可通过网络3300访问包括在存储服务器3200至3200m中的存储器3220至3220m或存储装置3250至3250m。因此,应用服务器3100可对存储在应用服务器3100至3100n和/或存储服务器3200至3200m中的数据执行各种操作。例如,应用服务器3100可执行用于在应用服务器3100至3100n和/或存储服务器3200至3200m之间移动或复制数据的指令。在这种情况下,数据可直接或可将数据从存储服务器3200至3200m的存储装置3250至3250m通过存储服务器3200至3200m的存储器3220至3220m或直接移动到应用服务器3100至3100n的存储器3120至3120n。通过网络3300移动的数据可以是为了安全或隐私而加密的数据。此外,应用服务器3100还可包括开关3130和网络接口卡(nic)3140。
[0159]
现在将以存储服务器3200为例进行描述。接口3254可提供处理器3210和控制器(ctrl)3251之间的物理连接以及网络接口卡(nic)3240和控制器3251之间的物理连接。例如,可使用直接附加存储(das)方案来实现接口3254,其中存储装置3250与专用电缆直接连接。例如,接口3254可通过使用各种接口方案(诸如,ata、sata、e-sata、scsi、sas、pci、pcie、nvme、ieee 1394、usb接口、sd卡接口、mmc接口、emmc接口、ufs接口、eufs接口和/或cf卡接口)来实现。
[0160]
存储服务器3200还可包括开关3230和nic(网络接口卡)3240。开关3230可经由处理器3210的控制来选择性地将处理器3210连接到存储装置3250,或者选择性地将nic3240连接到存储装置3250。
[0161]
在一个实施例中,nic 3240可包括网络接口卡和网络适配器。nic 3240可通过有线接口、无线接口、蓝牙接口或光接口连接到网络3300。nic 3240可包括内部存储器、数字信号处理器(dsp)和主机总线接口,并且通过主机总线接口连接到处理器3210和/或开关3230。主机总线接口可被实现为接口3254的上述示例之一。在一个实施例中,nic 3240可与处理器3210、开关3230和存储装置3250中的至少一个集成。
[0162]
在存储服务器3200至3200m或应用服务器3100至3100n中,处理器可将命令发送到存储装置3150至3150n和3250至3250m或存储器3120至3120n和3220至3220m,并编程或读取数据。在这种情况下,数据可以是通过ecc引擎纠正了错误的数据。数据可以是对其执行数据总线倒置(dbi)操作或数据掩蔽(dm)操作的数据,并且可包括循环冗余码(crc)信息。数
据可以是为了安全或隐私而加密的数据。
[0163]
存储装置3150至3150n和3250至3250m可响应于从处理器接收的读取命令将控制信号和命令/地址信号发送到nand闪存装置3252至3252m。因此,当从nand闪存装置3252至3252m读取数据时,可输入读取使能(re)信号作为数据输出控制信号,并且因此,可将数据输出到dq总线。可使用re信号来生成数据选通信号dqs。取决于写入使能(we)信号的上升沿或下降沿,命令和地址信号可锁存在页缓冲器中。
[0164]
控制器3251可控制存储装置3250的所有操作。在一个实施例中,控制器3251可包括sram。在一个实施例中,控制器3251可包括图2a的ecc编码器222和ecc解码器228。在另一实施例中,控制器3251可连接到如图2b中示出的加速器128。控制器3251可响应于写入命令将数据写入nand闪存装置3252,或者响应于读取命令从nand闪存装置3252读取数据。例如,可从存储服务器3200的处理器3210、另一存储服务器3200m的处理器3210m或应用服务器3100和3100n的处理器3110和3110n提供写入命令和/或读取命令。dram3253可临时存储(或缓冲)将要写入nand闪存装置3252的数据或从nand闪存装置3252读取的数据。此外,dram 3253可存储元数据。这里,元数据可以是用户数据或由控制器3251生成的用于管理nand闪存装置3252的数据。存储装置3250可包括用于安全或隐私的安全元件(se)。
[0165]
尽管已经结合本发明构思的示例性实施例描述了本发明构思,但是本领域技术人员将理解,在实质上不脱离本发明构思的原理的情况下,可对这些实施例进行各种修改。

技术特征:
1.一种处理主机的请求以访问存储在存储器装置中的数据的方法,所述方法包括:响应于所述请求而从存储器装置读取数据;将迭代解码器应用于读取的数据;在确定迭代解码器在振荡时,确定第一数据中的迭代解码器尝试纠正的行的总数;估计所述总数之中在所述尝试之后继续具有错误的第一可见错误行;估计所述总数之中在所述尝试之后不再具有错误的残余错误行;通过根据置换对所述残余错误行的索引进行置换来确定迭代解码器的第二数据中继续具有错误的第二可见错误行;从第二可见错误行确定第一数据中是否存在零个或更多个第一隐藏错误行,其中,每个隐藏错误行具有错误并且是有效的汉明码字;使用第一可见错误行和确定数量的第一隐藏错误行来纠正第一数据;以及将纠正后的数据输出到主机。2.根据权利要求1所述的方法,还包括:当确定迭代解码器没有在振荡并且所述迭代解码器的所有约束被满足时,将迭代解码器的输出提供给主机。3.根据权利要求1所述的方法,其中,当迭代解码器尝试纠正所述读取的数据中的第一数量的错误以生成第一数据并且迭代解码器尝试纠正第二数据中的第二数量的错误以恢复包括第一数量的错误的第一数据时,迭代解码器被确定为在振荡。4.根据权利要求1所述的方法,其中,使用第一可见错误行和确定数量的第一隐藏错误行来纠正第一数据的步骤包括:将第一数据的被确定为第一可见错误行的行的对数似然比设置为0;将第一数据的被确定为隐藏错误行的行的对数似然比设置为0;将第一数据的除第一可见错误行和所述隐藏错误行之外的剩余行的对数似然比的幅度增大到具有更高幅度的值;以及将第一数据和第一可见错误行、所述隐藏错误行和所述剩余行的对数似然比应用于迭代解码器。5.根据权利要求1所述的方法,其中,从第二可见错误行确定第一数据中是否存在零个或更多个第一隐藏错误行的步骤包括:使用第一可见错误行将第二可见错误行中的每个完成为权重3向量;应用汉明解码器翻转所述权重3向量的第一位以生成权重4向量;使用所述置换的逆将所述第一位映射到第一数据中的第二位,以生成所述零个或更多个隐藏错误行的行索引的预测;以及根据彼此一致的所述预测来确定所述零个或更多个第一隐藏错误行的位置。6.根据权利要求1至5中的任一项所述的方法,纠正的步骤包括:基于第一隐藏错误行的总数、第一可见错误行的总数、由迭代解码器对第一可见错误行尝试的纠正的总数以及由迭代解码器对第二可见错误行尝试的纠正的总数,确定第二数据中的第二隐藏错误行的数量。7.根据权利要求6所述的方法,纠正的步骤还包括:选择第二数据的行中的一行来表示第二隐藏错误行中的第一行;
选择第一数据中的具有3个已知坐标的第一可见错误行;针对选择的第一可见错误行中的每个,对所述3个已知坐标使用汉明解码器来推断出第4坐标;以及使用推断出的坐标来纠正第一数据。8.根据权利要求7所述的方法,纠正的步骤还包括:翻转第一数据的具有所述推断出的坐标的位。9.根据权利要求8所述的方法,其中,仅当第4坐标被映射到第二数据中的同一行时,才在所述纠正中使用所述推断出的坐标。10.根据权利要求1至5中的任一项所述的方法,其中,迭代解码器被配置为:对基于汉明码的广义低密度奇偶校验码进行解码。11.根据权利要求10所述的方法,其中,汉明码是缩短的扩展汉明码。12.一种存储器系统,包括:非易失性存储器;以及控制器,被配置为从非易失性存储器读取数据,其中,控制器包括迭代解码器,其中,控制器被配置为:将迭代解码器应用于读取的数据并确定迭代解码器是否在振荡,并且其中,控制器被配置为:当确定迭代解码器在振荡时,确定第一数据中的迭代解码器尝试纠正以生成第二数据的行的总数,估计所述总数之中在所述尝试之后继续具有错误的第一可见错误行,估计所述总数之中在所述尝试之后不再具有错误的残余错误行,通过根据置换对所述残余错误行的索引进行置换来确定第二数据中继续具有错误的第二可见错误行,从第二可见错误行确定第一数据中是否存在零个或更多个第一隐藏错误行,以及使用第一可见错误行和确定数量的第一隐藏错误行来纠正第一数据,其中,每个隐藏错误行具有错误并且是有效的汉明码字。13.根据权利要求12所述的存储器系统,其中,控制器响应于来自主机的请求而读取数据并且将纠正后的数据输出到主机。14.根据权利要求12所述的存储器系统,其中,当迭代解码器尝试纠正所述读取的数据中的第一数量的错误以生成第一数据,迭代解码器置换第一数据以生成第二数据,并且迭代解码器尝试纠正第二数据中的第二数量的错误以恢复包括第一数量的错误的第一数据时,迭代解码器被确定为在振荡。15.根据权利要求12所述的存储器系统,其中,纠正第一数据的处理通过以下操作来执行:将第一数据的被确定为第一可见错误行的行的对数似然比设置为0,将第一数据的被确定为隐藏错误行的行的对数似然比设置为0,将第一数据的除第一可见错误行和所述隐藏错误行之外的剩余行的对数似然比的幅度增大为具有更高幅度的值,以及将第一数据和第一可见错误行、所述隐藏错误行和所述剩余行的对数似然比应用于迭代解码器。16.根据权利要求12至15中的任一项所述的存储器系统,其中,迭代解码器被配置为:对基于汉明码的广义低密度奇偶校验码进行解码。17.根据权利要求16所述的存储器系统,其中,汉明码是缩短的扩展汉明码。18.一种非易失性存储器装置,包括:
非易失性存储器阵列;迭代解码器;以及逻辑电路,被配置为应用迭代解码器对从非易失性存储器阵列读取的数据进行解码,并且其中,逻辑电路被配置为:当迭代解码器在解码期间在两个状态之间重复改变时,确定第一数据中的迭代解码器尝试纠正以生成第二数据的行的总数,估计所述总数之中在所述尝试之后继续具有错误的第一可见错误行,并且使用第一可见错误行来纠正第一数据。19.根据权利要求18所述的非易失性存储器装置,其中,当迭代解码器尝试纠正所述读取的数据中的第一数量的错误以生成第一数据、置换第一数据以生成第二数据、以及尝试纠正第二数据中的第二数量的错误以恢复包括第一数量的错误的第一数据时,迭代解码器在两个状态之间重复地改变。20.根据权利要求18所述的非易失性存储器装置,其中,纠正第一数据的处理通过以下操作来执行:将第一数据的被确定为第一可见错误行的行的对数似然比设置为0,将第一数据的除第一可见错误行之外的剩余行的对数似然比的幅度增大为具有更高幅度的值,以及将第一数据和第一可见错误行和所述剩余行的对数似然比应用于迭代解码器。

技术总结
公开了存储器装置及访问其数据的方法和存储器系统。纠正存储在存储器装置中的数据的方法包括:将迭代解码器应用于数据;确定第一数据中的解码器尝试纠正的行的总数;估计所述总数之中在所述尝试之后继续具有错误的第一可见错误行;估计所述总数之中在所述尝试之后不再具有错误的残余错误行;通过根据置换对所述残余错误行的索引进行置换来确定解码器的第二数据中继续具有错误的第二可见错误行;从第二可见错误行确定第一数据中是否存在零个或更多个第一隐藏错误行,其中,每个隐藏错误行具有错误并且是有效的汉明码字;以及使用第一可见错误行和确定数量的第一隐藏错误行来纠正第一数据。纠正第一数据。纠正第一数据。


技术研发人员:阿里尔
受保护的技术使用者:三星电子株式会社
技术研发日:2022.10.13
技术公布日:2023/10/11
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐