用于通过数据反演来提高数据存储的设备和方法

xiaoxiao2020-10-23  14

用于通过数据反演来提高数据存储的设备和方法
【技术领域】
[0001] 本公开涉及一种用于通过数据反演来提高数据存储的设备和方法。
【背景技术】
[0002] 如果将会提供改进的多位校正的概念,则这将会是非常有益的。
[0003] 增加内存的可靠性变得越来越重要,并且减少新出现类型内存中的功耗也变得越 来越重要。
[0004] 许多类型的内存(例如,MRAM(磁阻随机存取存储器)、R-RAM(电阻随机存取存储 器))针对永久错误和过错表现出不对称行为。例如,许多内存通常表现出比卡1内存错误 多的卡〇内存错误。其它内存通常表现出比卡〇内存错误多的卡1内存错误。
[0005] 例如,针对用于写1或0的功耗,闪存是不对称的。换句话说,与当0被写到内存 中时相比,当1被写到内存中时,功耗不同。在R-RAM中,错误是单向的,主要地,发生卡零 错误,而非卡一错误。此外,关于MRAM,主要发生卡0错误,而非卡1错误。
[0006] 如果将会提供改进的数据存储的概念,则这将会是非常有益的。

【发明内容】

[0007] 提供一种包括处理单元和内存的设备。处理单元被构造为通过采用线性纠错码来 对多个位进行编码以获得多个编码位,其中所述多个编码位中的每一个具有位值,其中线 性纠错码具有至少3的码距,并且其中所述多个编码位形成线性纠错码的第一码字。另外, 处理单元被构造为根据编码位的子集确定指示编码位的子集是否应该被反演的反演决定, 其中所述子集包括所述多个编码位中的至少三个编码位。当反演决定指示编码位的子集不 应该被反演时,处理单元被构造为将第一码字的位存储在内存中作为存储字,其中存储在 内存中的第一码字的位包括具有第一预定义位值的指示位。并且当反演决定指示编码位的 子集应该被反演时,处理单元被构造为通过经由改变编码位的子集的每个编码位的位值反 演编码位的子集的每个编码位来修改线性纠错码的第一码字以获得线性纠错码的第二码 字,并且被构造为将第二码字的位存储在内存中作为存储字,其中第二码字的位包括指示 位,指示位被反演,以使得指示位具有不同于第一预定义位值的第二预定义位值。
[0008] 提供一种方法。所述方法包括:使用编码器通过采用线性纠错码来对多个位进行 编码以获得多个编码位,其中所述多个编码位中的每一个具有位值,其中线性纠错码具有 至少3的码距,并且其中所述多个编码位形成线性纠错码的第一码字,使用处理单元根据 编码位的子集确定指示编码位的子集是否应该被反演的反演决定,其中所述子集包括所述 多个编码位中的至少三个编码位,当反演决定指示编码位的子集不应该被反演时,将第一 码字的位存储在内存中作为存储字,其中存储在内存中的第一码字的位包括具有第一预定 义位值的指示位,并且当反演决定指示编码位的子集应该被反演时,通过经由改变编码位 的子集的每个编码位的位值反演编码位的子集的每个编码位来修改线性纠错码的第一码 字以获得线性纠错码的第二码字,并且将第二码字的位存储在内存中作为存储字,其中第 二码字的位包括指示位,指示位被反演,以使得指示位具有不同于第一预定义位值的第二 预定义位值。
[0009] 提供一种包括处理单元和内存的设备。处理单元被构造为对多个位进行编码以获 得多个编码位,并且处理单元还被构造为确定反演决定。当反演决定指示编码位的子集不 应该被反演时,处理单元被构造为将第一码字的位存储在内存中作为存储字。当反演决定 指示编码位的子集应该被反演时,处理单元被构造为反演编码位的子集的每个编码位以获 得第二码字并且将第二码字存储在内存中。
[0010] 提供一种设备。所述设备包括处理单元和内存。处理单元被构造为通过采用线 性纠错码来对多个位进行编码以获得多个编码位,其中所述多个编码位中的每一个具有位 值,其中纠错码具有至少3的码距,并且其中所述多个编码位形成线性纠错码的第一码字。 此外,处理单元被构造为根据编码位的子集确定指示编码位的子集是否应该被反演的反演 决定,其中确定编码位的子集,从而如果子集的所有位被反演,则纠错码的第一码字被变换 成纠错码的第二码字,并且其中所述子集包括所述多个编码位中的所有编码位或者包括所 述多个编码位中的至少三个编码位,并且其中编码位的子集的编码位是指示位,其中指示 位的位值等于第一预定义位值。当反演决定指示编码位的子集不应该被反演时,处理单元 被构造为将第一码字的位存储在内存中作为存储字,其中存储在内存中的第一码字的位包 括具有第一预定义位值的指示位。当反演决定指示编码位的子集应该被反演时,处理单元 被构造为通过经由改变编码位的子集的每个编码位的位值反演编码位的子集的每个编码 位来修改线性纠错码的第一码字以获得线性纠错码的第二码字,并且被构造为将第二码字 存储在内存中作为存储字,其中第二码字包括指示位,指示位被反演,以使得指示位的位值 等于不同于第一预定义位值的第二预定义位值。
[0011] 此外,提供另一实施例。所述设备包括处理单元和内存。在这种另一实施例中,处 理单元被构造为由具有常数值的1位bf1;...>4补充将要被存储在可寻址内存中的地址a的 净荷数据位Xp???du,其中1彡1。
[0012]处理单元被构造为利用校正至少1位错误的线性码C将具有常数值的位bf^...>4 和净荷数据位Xp…,xn编码为码字ci,…,cm, Xi,…,xn,其中Ci,…,cm是当从地址 位获得的位未被用于形成码字时从...>&,Xl,…,xn确定的校验位,并且利用校正至少1位错误的线性码〇将位&;^...>;^,,11,~,11^ 1,~,415编码为码字(31,~,(3111>;^,...>;^,,1 1,~ ,xn,Ai,…,Ak,其中q,…,cm是当从地址位ai,…,aj?获得的位Ai,…,Ak被用于编码时从 匕;^,..>1,,叉1,一,叉11,八 1,一,八15确定的校验位,并且八1,一,八15 = ;^1,一,&1)由函数€:0,11: -l〇,l}k从地址位确定。
[0013] 此外,处理单元被构造为定义将要被直接地或反演地存储的位q,…,cm, ,bf\,Xi,…,xn的位的K个组Yi,…,Yk,以使得定义的位&;^,...>;^的子集被唯一地分配给这 些组中的每一组,其中K彡1。
[0014] 另外,处理单元被构造为选择组Yi,…,Yk的位的哪个组被以反演或非反演方式存 储在内存中。
[0015] 处理单元被构造为在地址a将位q,…,cm, Xp…,xn写到内存中,其中属 于反演地写到内存中的位的组的位在写入之前被反演,并且不属于其位被反演的组的位被 以非反演方式写到内存中, 此外,处理单元被构造为读出在地址a存储在内存中的位。
[0016] 如果从地址位获得的位未被用于形成码字,则处理单元被构造为基于纠错码C校 正至少在已直接地或反演地存储常数值bfvbf\的位位置从内存读出的位,所述从内存读 出的位可能由于错误而不同于写到相同地址的值。
[0017] 如果从地址位获得的位被用于形成码字,则处理单元被构造为基于纠错码C校正 至少在已直接地或反演地存储常数值bf^.^bfi的位位置通过使用从可能错误的地址位获 得的也可能错误的位…,^?从内存读出的可能错误的值。
[0018] 处理单元被构造为从通过使用唯一地分配给各位组的代码C校正的读出的常数 值确定位组是已被直接地写到内存中还是已被反演地写到内存中以及哪个位组已被直接 地或反演地写到内存中。
[0019] 处理单元被构造为反演已在前一步骤中被确定为其位已在写入期间被反演的位 组的位组的读出并且校正的位。
[0020] 在实施例中,k= 1和%,…,Ak) = (&1,…,ar)适用。
[0021] 根据实施例,k=LAi=fh,…,ar) =ai+a2 +…+ar适用并且八丨是地址位 ai,…,aj?的奇偶性。
[0022] 此外,提供这样的另一实施例:直接地或反演地将形成校正至少1位错误的线性 码C的码字的位的子集直接地或反演地写到内存基元的内存中,以及从直接地或反演地存 储的从内存可能错误地读出的位读取和恢复写到内存中的位。所述设备包括处理单元和内 存。
[0023] 在这种另一实施例中,处理单元被构造为定义能够被直接地或反演地写到内存中 的利用校正至少1位错误的线性码C编码的位的子集的数量K,其中K多1。
[0024] 处理单元被构造为提供将要在地址a= ,…,a,被存储为校正至少1位错误的线 性系统码的码字的子字的n个净荷数据位Xl,…,xn,r多2, 处理单元被构造为形成代码C的信息位Ul,…,uN,其中如果地址a未被用于形成代码C的码字,则由1个定义的二进制值bf1;补充数据位xi,…,xn,以使得 u" …,uN =bf" …,bf\,Xi,…,xn N= 1 +n适用,并且如果地址a被用于形成代码C的码字,则由1个定义的二进制值 匕匕...>;^补充数据位xi,…,xn和从地址位ai,…,a1?获得的位Ai,…,Ak,以使得 屮,…,% =bf\,…,bf\,Xi,…,xn,A!,…,Ak N= 1 +n+k适用,其中A!,…,Ak =f(a" …,ar) 是由函数f从r个地址位ai,…,aj?的值唯一地确定的二进制值,1彡1和1彡k彡r, 其中如果地址位未被用于错误检测或错误校正,则处理单元被构造为形成代码C的码 字y,…,yp,其中c是具有系统形式的生成矩阵G和H矩阵H的线性系统码,其中 y=Yi,---.yp= (u1; ???,%)G* = 〇!,???,〇",,bfj, ???,bf1;x1; ???,xn 适用并且Cl,…,cmm是校验位,生成矩阵G是(N,P)矩阵并且H矩阵H= (h,…,hP) 是([P-N],P)矩阵,以使得H矩阵的所有列两两不同并且不等于0,并且m=P-N和N =n+ 1适用, 其中处理单元被构造为确定位yi,…,yp =Cl,…,cm,bf\,…,bfi,Xp…,K个子集 Y「{yi,i,...,yi,qJ,...,YK _ {yK,i,...,yK,qiJ, 以使得位...>4的子集被唯一地分配给每个子集Yi,…,Yk, 以使得如果
的二进制值,则
是代码C的码字,当k= 1,…,K并且j= 1,…,P时,如果yj是子集Yk的元素,则yf& = 1,并且如果7』不是子集Yk 的元素,则= 0,以使得
适用并且H是代码C的H矩阵, 其中处理单元被构造为定义位的组Yl,…,Yk中的哪一组被直接地或反演地写到内存 中, 其中处理单元被构造为形成将要被写到内存中的?位屯,…,dP,其中对于1,…P,当yi 属于其位被反演地写到内存中的组时,屯=并且当yi不属于其位被反演地写到内存中 的任何组时,屯= yi, 其中处理单元被构造为在地址a将位屯,…,dP写到内存中, 其中处理单元被构造为创建地址a并且读出源自写在地址a的值屯,…,dP的存储在地 址a的由于可能的错误导致的可能错误的值_
其中处理单元被构造为定义将要在错误值的情况下通过使用代码C校正的将要由代 码C校正的L个位位置匕,…,匕,1彡P并且{ki,…,kj£ {1,…,P},其中已直接地或反 演地存储位位置属于将要被校正的位位置, 其中处理单元被构造为确定基于代码C校正可由代码C校正的错误的定义的L个位位 置匕,…,匕的二进制校正值
其中处理单元被构造为至少在已直接地或反演地存储值的位位置形成校正
其中op是唯一可逆布尔运算, 其中处理单元被构造为基于已知的插入值通过使用代码C校正的各读出 值确定位的哪个组Yi,…,Yk已被直接地或反演地存储, 其中处理单元被构造为在属于其位已被直接地写到内存中的位的组的情况下输出
并且在y#属于已在写到内存期间被反演地写到内存中的位的组的情 况下输出位
,其中"〇P"是二进制唯一可逆布尔运算, 其中如果地址位被用于错误检测和错误校正,则处理单元被构造为形成代码C的码字y=yi,…,yP,其中C是具有系统形式的生成矩阵G和H矩阵H的线性系统码,其中 y=y" …,yP =(屮,…,%) ?G= =Ci,…,cm,bf\,…,bf\,Xi,…,xn,Ai,…,Ak 适用,生成矩阵G是(N,P)矩阵并且H矩阵H= (hi,…,hP)是([P-N],P)矩阵,以使 得H矩阵的所有列两两不同并且不等于0,并且P=n+l+m+k,并且q,…,cm是校验 位,(N通过P代替) 其中处理单元被构造为确定位yi,…,yn+1,yn+1+k+1,...,yp =Cl,…,Cm,bf\,…,…,Xn 的K个子集Yi= {y1;1,…,yi,ql},…,YK= {yK;1,…,yK,qK}, 以使得位bfv.^bfv的每个位仅属于子集Yi,…,Yk之一,并且以使得如果yg是位y:,…,yP的二进制值,则yf,..., 4是代码c的码字,对于k= 1,…,K并且对于j= 1,…,P, 适用: 如果h是子集Yk的元素,则= 1,并且如果&不是子集Yk的元素,则= 〇,以使
适用并且H是代码C的H矩阵, 其中处理单元被构造为定义位的哪一组Yl,…,Yk被直接地或反演地写到内存中, 其中处理单元被构造为形成将要被写到内存中的P-Ididi,…,cU#,其中i= 1,…,m+n+ 1, iyi属于其位被直接地写到内存中的组时,I= yi,并且 当yi属于其位被反演地写到内存中的组时,I=i, 其中处理单元被构造为在地址a将位屯,…,dm+n+1写到内存中, 其中处理单元被构造为创建地址a并且读出源自写在地址a的值屯,…,dn+1,dn+k+1,… ,dP的存储在地址a的由于可能的错误导致的可能错误的值
其中处理单元被构造为定义在错误值的情况下通过使用代码C校正的将要由代码C校 正的L个位位置1^,…,kL,L彡P-k并且{ki,…,kj£ {1,…,n+ 1,n+ 1 +k+ 1,P}, 其中已直接地或反演地存储位位置属于将要被校正的位位置, 其中处理单元被构造为确定针对可由代码C校正的错误的定义的L个位位置&,…,匕 的二进制校正值
其中处理单元被构造为至少在已直接地或反演地存储值bfp^bfi的位位置形成校正
其中"〇P"是二进制清楚地可逆的运算, 其中处理单元被构造为基于已知的插入值bfibfi和读出并且通过使用代码C校正 的对应正确值确定位的哪个组t,…,Yk的位已被直接地或反演地存储, 其中处理单元被构造为在属于其位已被直接地写到内存中的位的组的情况下输出
并且 在y%属于已在写到内存期间被反演地写到内存中的位的组的情况下输出位
其中"op"是二进制唯一可逆布尔运算。
[0025] 根据另一实施例,提供一种用于将位存储在内存中的设备,其中所述位被利用线 性纠错码C编码,线性纠错码C具有至少3的码距,其中确定利用线性纠错码C编码的位的 子集是被直接写到内存中还是被以逐位反演方式写到内存中,并且其中代码C包括H矩阵 H,其中所述设备包括处理单元和内存。直接地或反演地写到内存中的位的子集包括至少一 个二进制常数值,所述至少一个二进制常数值与用于编码的净荷数据位一起形成线性码C 的码字。处理单元被构造为当位的各子集的位被直接地写到内存中时将该二进制常数值作 为二进制值bf写到内存中。处理单元被构造为当位的各子集的位被反演地写到内存中时 将该二进制常数值作为反演值P写到内存中。
[0026]处理单元被构造为当直接地或反演地写到内存中的位的子集被反演时将代码C的码字转换成相同代码的码字,并且形成代码的H矩阵,从而与直接地或反演地写到内存 中的位的子集对应的H矩阵的列的每个分量的一的数量是偶数。
[0027]此外,处理单元被构造为当从内存读出时通过使用线性纠错码C来校正从内存读 出的可能错误的位,其中当位的各子集已被直接地写到内存中时至少校正在已写入常数二 进制值bf的位位置的位,或者当位的各子集已被反演地写到内存中时至少校正在已写入 常数二进制值的位位置的位。
[0028]另外,处理单元被构造为在读出之后当已在已存储常数值bf或反演常数值的 位位置读出的校正值等于@时反演已被直接地或反演地写到内存中的位的子集的位,并 且当这个值等于bf时不反演。
[0029]根据另一实施例,提供一种方法。所述方法包括: 通过采用线性纠错码来对多个位进行编码以获得多个编码位,其中所述多个编码位中 的每一个具有位值,其中纠错码具有至少3的码距,并且其中所述多个编码位形成线性纠 错码的第一码字。
[0030]根据编码位的子集确定指示编码位的子集是否应该被反演的反演决定,其中确定 编码位的子集,从而如果子集的所有位被反演,则纠错码的第一码字被变换成纠错码的第 二码字,并且其中所述子集包括所述多个编码位中的所有编码位或者包括所述多个编码位 中的至少三个编码位,并且其中编码位的子集的编码位是指示位,其中指示位的位值等于 第一预定义位值, 当反演决定指示编码位的子集不应该被反演时,将第一码字的位存储在内存中作为存 储字,其中存储在内存中的第一码字的位包括具有第一预定义位值的指示位。
[0031]当反演决定指示编码位的子集应该被反演时,通过经由改变编码位的子集的每个 编码位的位值反演编码位的子集的每个编码位来修改线性纠错码的第一码字以获得线性 纠错码的第二码字,并且将第二码字存储在内存中作为存储字,其中第二码字包括指示位, 指示位被反演,以使得指示位的位值等于不同于第一预定义位值的第二预定义位值。
[0032]实施例基于发现:数据反演可被用于数据存储。根据实施例,数据反演允许掩蔽永 久错误。当内存相对较新时,当误码率相对较高时,这尤其有用。
[0033]如果卡0错误发生在数据位置,如果将要被存储在这个位置的位是0,则不发生错 误。但如果将要被存储的位是1,则发生错误。如果将要被存储的位是1,则对于反演数据, 将要被存储在这个位置的位是〇,并且如果该位被反演地存储,则不发生错误。
[0034]根据实施例,如果存在几个卡住错误,则分别反演或不反演数据字中的数据的不 同组是非常有用的。通过如此操作,存储数据能够通过反演数据的组而适应于发生的错误。 [0035]此外,例如,如果存储1需要比存储零多的能量,则数据反演允许减少功耗,反之 亦然。
[0036]例如,如果擦除状态由1表示,则对于写0,可能需要比写1多得多的能量。或者, 例如,如果数据字中的〇的数量大于1的数量,则在存储之前反演数据是有用的。
[0037]根据实施例,如果数据被以成组方式反演,则能够实现更好的适应。
[0038] 根据实施例,数据反演被用于减小误码率。如果错误单向地发生,例如,将要被存 储的1例如通过卡0错误而被改变为0,则等于0的位将不会被改变为错误状态。
[0039] 如果数据字中的1的数量大于0的数量,则当存在比卡1错误多的卡0错误时,在 存储之前反演数据是有用的。然后,在反演之后,〇的数量大于1的数量,并且可能的错误的 数量减少。
[0040] 如果数据被以成组方式反演,则能够实现更好的适应。
[0041] 根据实施例,"固定位"被添加到数据位。数据位和固定位被共同地用作纠错线性 码C的信息位,并且从信息位(即,数据位和固定位)确定校验位。
[0042] 根据实施例,选择代码C,从而如果字w是码字,则反演码字歹也是码字。在实施 例中,码字被直接地或反演地存储。
[0043] 根据实施例,如果发生错误位,则也使用纠错码C校正固定位。在校正之后,校正 的固定位指示存储在内存中的数据是否将要被反演。根据实施例,固定位由相同的线性码 C校正,数据位和校验位也由相同的线性码C校正。
[0044] 在实施例中,码字的位的组或子集被反演。指示组被反演或不被反演的固定位被 分派给每个子组。所有这些固定位是用于确定校验位的信息位的一部分。
[0045] 根据实施例,选择子组,从而子组的位的反演将代码C的码字变换成C的码字。
[0046] 在一些实施例中,地址位是码字的一部分,但不被存储,并且地址位不被反演。
[0047] 根据实施例,固定位(反演标记位)是由线性码执行的错误校正的一部分。
[0048] 在一些实施例中,位的子组被反演。
[0049] 根据实施例,选择代码,从而子组的位的反演将码字变换成码字。
[0050] 在一些实施例中,地址被包括在校验位的确定中,但不被反演。
[0051] 在使用附图详细地描述实施例之前,应该指出,相同或在功能上等同的元件在附 图中被给予相同的标号,并且省略对具有相同标号的元件的重复描述。因此,为具有相同标 号的元件提供的描述是可相互交换的。
【附图说明】
[0052] 图1表示根据实施例的设备, 图2表示根据另一实施例的设备, 图3表示根据另一实施例的设备, 图4表示根据另一实施例的设备, 图5表不根据另一实施例的设备,和 图6表示根据另一实施例的设备。
【具体实施方式】
[0053] 提供一种包括处理单元和内存的设备。处理单元被构造为对多个位进行编码以获 得多个编码位,处理单元被构造为确定反演决定。当反演决定指示编码位的子集不应该被 反演时,处理单元被构造为将第一码字的位存储在内存中作为存储字。当反演决定指示编 码位的子集应该被反演时,处理单元被构造为反演第一码字的编码位的子集的每个编码位 以获得第二码字并且将第二码字存储在内存中。
[0054] 图1表示根据实施例的设备。所述设备包括处理单元120和内存110。处理单元 120被构造为通过采用线性纠错码来对多个位进行编码以获得多个编码位,其中所述多个 编码位中的每一个具有位值,其中纠错码具有至少3的码距,并且其中所述多个编码位形 成线性纠错码的第一码字。此外,处理单元120被构造为根据编码位的子集确定指示编码 位的子集是否应该被反演的反演决定,其中确定编码位的子集,从而如果子集的所有位被 反演,则纠错 码的第一码字被变换成纠错码的第二码字,并且其中所述子集包括所述多个 编码位中的所有编码位或者包括所述多个编码位中的至少三个编码位,并且其中编码位的 子集的编码位是指示位,其中指示位的位值等于第一预定义位值。当反演决定指示编码位 的子集不应该被反演时,处理单元120被构造为将第一码字的位存储在内存110中作为存 储字,其中存储在内存110中的第一码字的位包括具有第一预定义位值的指示位。当反演 决定指示编码位的子集应该被反演时,处理单元120被构造为通过经由改变编码位的子集 的每个编码位的位值反演编码位的子集的每个编码位来修改线性纠错码的第一码字以获 得线性纠错码的第二码字,并且被构造为将第二码字存储在内存110中作为存储字,其中 第二码字包括指示位,指示位被反演,以使得指示位的位值等于不同于第一预定义位值的 第二预定义位值。
[0055] 如上所述,所述多个编码位形成线性纠错码的第一码字。这意味着:所述多个所有 编码位的编码位形成纠错码的第一码字。
[0056] 在实施例中,所述处理单元可例如被构造为产生决定信号作为反演决定,其中决 定信号可例如指示编码位的子集是否应该被反演。
[0057] 根据实施例,所述设备可以是电路。
[0058] 在实施例中,所述编码位的子集包括所述多个编码位中的所有编码位。
[0059] 根据实施例,所述编码位的子集不包括所述多个编码位中的所有编码位。
[0060] 在实施例中,纠错码是线性纠错码C,其中第一预定义值是第一常数二进制值bf, 其中第二预定义值是第二常数二进制值其中处理单元120被构造为从内存110读取 存储字,并且其中处理单元120被构造为在读出存储字之后当已从内存110中的已存储指 示位的位位置读出的位值等于第二常数二进制值@时反演已被直接地或反演地写到内存 110中的位的子集的位,并且被构造为当已从内存110中的已存储指示位的位位置读出的 位值等于第一常数二进制值bf?时不反演。
[0061] 根据实施例,纠错码是线性纠错码C,其中第一预定义值是第一常数二进制值bf, 其中第二预定义值是第二常数二进制值¥,并且并且其中处理单元120被构造为从内存 110读出存储字,其中处理单元120被构造为在存储字的一个或多个位错误的情况下通过 使用线性纠错码C来校正所述一个或多个位,其中如果至少已被存储在已写入指示位的位 位置的位是错误的,则校正所述位,并且其中在读出存储字之后并且在校正所述一个或多 个位之后,处理单元120被构造为当已从内存110中的已存储指示位的位位置读出的位值 等于第二常数二进制值@时反演已被直接地或反演地写到内存110中的位的子集的位,并 且被构造为当已从内存110中的已存储指示位的位位置读出的位值等于第一常数二进制 值bf?时不反演。
[0062] 在实施例中,所述线性纠错码C包括奇偶校验矩阵H,并且其中奇偶校验矩阵H的 列的每个分量的一的数量是偶数。
[0063] 根据实施例,所述内存110是寄存器或寄存器阵列或可寻址内存110。
[0064] 在实施例中,所述内存是可寻址内存,并且处理单元120被构造为通过采用线性 纠错码并且通过使用地址位来对所述多个位进行编码以获得所述多个编码位。
[0065] 根据实施例,所述处理单元120被构造为根据编码位的子集的零的数量或编码位 的子集的一的数量确定反演决定。
[0066] 在实施例中,当在将写值写到内存中之后、在随后从内存读出写值以获得读值之 后并且在比较写值和读值之后未发生错误时,处理单元被构造为确定反演决定以使得反演 决定指示编码位的子集不应该被反演。
[0067] 在实施例中,当在将写值写到内存中之后、在随后从内存读出写值以获得读值之 后并且在比较写值和读值之后至多发生T个错误并且其中T小于能够由线性纠错码校正的 错误的数量时,处理单元被构造为确定反演决定以使得反演决定指示编码位的子集不应该 被反演。
[0068] 在实施例中,当在将位的子集的反演写值写到内存110中之后、在随后从内存110 读出写入的反演写值以获得读值之后并且在比较写入的反演写值和读值之后至多发生与 在直接写入和读出的值和写入的值的比较之后发生的错误一样多的错误时,处理单元120 被构造为确定反演决定以使得反演决定指示编码位的子集应该被反演。
[0069] 根据实施例,当在将位的子集的反演写值写到内存110中之后、在随后从内存110 读出写入的反演写值以获得读值之后并且在比较写入的反演写值和读值之后至多发生T 个错误并且其中T小于能够由代码C校正的错误的数量时,处理单元120被构造为确定反 演决定以使得反演决定指示编码位的子集应该被反演。
[0070] 在实施例中,所述内存110是闪存110。
[0071] 根据另一实施例,所述内存110是M-RAM或者其中内存110是R-RAM。
[0072] 在实施例中,所述纠错码包括生成矩阵,并且其中处理单元120被构造为通过将 具有其系统形式的生成矩阵用于编码来对所述多个位进行编码。
[0073] 根据另一实施例,所述代码C是汉明(Hamming)码或截短汉明码。
[0074] 在实施例中,所述纠错码是Hsiao码或截短Hsiao码。
[0075] 根据另一实施例,所述代码C是BCH码或截短BCH码。
[0076] 此外,提供另一实施例。在这种另一实施例中,处理单元120被构造为由具有常数 值的1位充将要被存储在可寻址内存110中的地址a的净荷数据位xu…,xn, 其中1彡1。
[0077] 处理单元120被构造为利用校正至少1位错误的线性码C将具有常数值的位 和净荷数据位x丨,…,xn编码为码字c丨,…,cm, x1;…,xn,其中q,…,cm 是当从地址位获得的位未被包括用于形成码字时从Xp…,xn确定的校验位,并 且利用校正至少1位错误的线性码C将位,Xp…,xn,Ai,…,Ak编码为码字ci,… ,cm, ,Xp…,xn,A:,…,Ak,其中q,…,cm是当从地址位a:,…,获得的位A:,…,Ak 被用于编码时从…,xn,Ai,…,Ak确定的校验位,并且Ai,…,Ak =fh,…,ar) 由函数f: {0,1K- {0,l}k从地址位唯一地确定。
[0078] 此外,处理单元120被构造为定义将要被直接地或反演地存储的位q,…,cm, ,bf\,Xi,…,xn的位的K个组Yi,…,Yk,以使得定义的位&;^,...>;^的子集被唯一地分派给这 些组中的每一组,其中K彡1。
[0079] 处理单元120被构造为确定位的组Yi,…,Yk,从而如果组Y」,j= 1,…,K的所有 位被反演,则线性码C的第一码字被变换成线性码C的第二码字,并且其中处理单元被构造 为选择组t,…,Yk的位的哪个组被以反演或非反演方式存储在内存中。
[0080] 处理单元120被构造为在地址a将位q,…,cm, Xp…,xn写到内存中,其 中属于反演地写到内存110中的位的组的位在写入之前被反演,并且不属于其位被反演的 组的位被以非反演方式写到内存110中。
[0081] 此外,处理单元120被构造为读出在地址a存储在内存110中的位。
[0082] 如果从地址位获得的位未被用于形成码字,则处理单元120被构造为基于纠错码 C校正至少在已直接地或反演地存储常数值bfIbf4勺位位置从内存110读出的位,所述 从内存110读出的位可能由于错误而不同于写到相同地址的值。
[0083] 如果从地址位获得的位被用于形成码字,则处理单元120被构造为基于纠错码C 校正至少在已直接地或反演地存储常数值位位置通过使用从可能错误的地址 位获得的也可能错误的位/^,…,/^?从内存110读出的可能错误的值。
[0084] 处理单元120被构造为从通过使用唯一地分派给各位组的代码C校正的读出的常 数值确定位组是已被直接地写到内存中还是已被反演地写到内存中以及哪个位组已被直 接地或反演地写到内存中。
[0085] 处理单元120被构造为反演已在前一步骤中被确定为其位已在写入期间被反演 的位组的位组的读出并且校正的位。
[0086] 在实施例中,k=r和%,…,Ak) =h,…,ar)适用。
[0087] 根据实施例,k=LAi=fh,…,ar) =ai+a2 +…+ar适用并且六丨是地址位 ai,…,aj?的奇偶性。
[0088] 此外,提供这样的另一实施例:直接地或反演地将形成校正至少1位错误的线性 码C的码字的位的子集直接地或反演地写到内存基元的内存110中,以及从直接地或反演 地存储的从内存110可能错误地读出的位读取和恢复写到内存110中的位。在这种另一实 施例中,处理单元120被构造为定义能够被直接地或反演地写到内存110中的利用校正至 少1位错误的线性码C编码的位的子集的数量K,其中K多1。
[0089] 处理单元120被构造为提供将要在地址a=ai,…,a1?被存储为校正至少1位错误 的线性系统码的码字的子字的n个净荷数据位Xl,…,xn,r多2, 处理单元120被构造为形成代码C的信息位Ul,…,uN,其中如果地址a未被用于形成 代码C的码字,则由1个定义的二进制值bf1; ...>4补充数据位xi,…,xn,以使得 u" …,uN =bf" …,bf\,Xi,…,xn N= 1 +n适用,并且如果地址a被用于形成代码C的码字,则由1个定义的二进制值 匕4...>;^补充数据位xi,…,xn和从地址位ai,…,a1?获得的位Ai,…,Ak,以使得 屮,…,% =bf\,…,bf\,Xi,…,xn,A!,…,Ak N= 1 +n+k适用,其中A!,…,Ak =f(a" …,ar) 是由函数f从r个地址位ai,…,aj?的值唯一地确定的二进制值,1彡1和1彡k彡r, 其中,如果地址位未被用于错误检测或错误校正。则处理单元120被构造为形成代码C的码字y,…,yP,其中C是具有系统形式的生成矩阵G和H矩阵H的线性系统码,其中 y=y" ...,yP = (u" ...,uN)G? =c" …,cm,bf" …,bf\,x" …,xn 适用并且Cl,…,cmm是校验位,生成矩阵G是(N,P)矩阵并且H矩阵H= (hi,…,hP) 是([P-N],P)矩阵,以使得H矩阵的所有列两两不同并且不等于0,并且m=P-N和N =n+l和P=n+m+l适用, 其中处理单元120被构造为确定位yi,…,yN =Cl,…,cm,bf\,…,bfV,Xp…,K个 子集Y! - {丫以,…,yuJr.'YK - {yu,…,5^'成}, 以使得位...+4的子集被清楚地分配给每个子集Yi,…,Yk, 以使得如果
是位yi,…,yP的二进制值,则
是代码C的码字,当k= 1,…,K并且j= 1,…,P时,如果yj是子集Yk的元素,则yf6 = 1,并且如果7』不是子集Yk 的元素,则= 0,以使得
适用并且H是代码C的H矩阵, 其中处理单元120被构造为定义位的组t,…,Yk中的哪一组被直接地或反演地写到内 存110中, 其中处理单元120被构造为形成将要被写到内存110中的?位(11,…,dP,其中对于1,…P,当yi属于其位被反演地写到内存110中的组时,di= ,并且当yi不属于其位被反演地 写到内存110中的任何组时,屯=yi, 其中处理单元120被构造为在地址a将位屯,…,dP写到内存110中, 其中处理单元120被构造为创建地址a并且读出源自写在地址a的值屯,…,dP的存储 在地址a的由于可能的错误导致的可能错误的值
其中处理单元120被构造为定义将要在错误值的情况下通过使用代码C校正的将要由 代码C校正的L个位位置匕,…,I1彡P并且,…,kjGU,…,P},其中已直接地或 反演地存储位位置属于将要被校正的位位置, 其中处理单元120被构造为确定基于代码C校正可由代码C校正的错误的定义的L个 位位置h,…,匕的二进制校正值
其中处理单元120被构造为至少在已直接地或反演地存储值bf1;...的位位置形成 校正位
,其中op是唯一可逆布尔运算, 其中处理单元120被构造为基于已知的插入值通过使用代码C校正的各 读出值确定位的哪个组Yi,…,Yk已被直接地或反演地存储, 其中处理单元120被构造为在}/~属于其位已被直接地写到内存110中的位的组的情 况下输出位
并且在属于已在写到内存no期间被反演地写到内存no 中的位的组的情况下输出位.
,其中"op"是二进制唯一可逆布尔运算, 其中如果地址位被用于错误检测和错误校正,则处理单元120被构造为形成代码C的 码字y=yi,…,yP,其中C是具有系统形式的生成矩阵G和H矩阵H的线性系统码,其中y=y" …,yP = (U" …,%) ?G= =Ci,…,cm,bf" …,bf\,Xi,…,xn,A" …,Ak 适用,生成矩阵G是(N,P)矩阵并且H矩阵H= (hi,…,hP)是([P-N],P)矩阵,以使 得H矩阵的所有列两两不同并且不等于0,并且P=n+ 1 +m+k,N=n+ 1 +k成立, 并且q,…,cm是校验位, 其中处理单元120被构造为确定位又1,…,yn+1,yn+1+k+1,...,yP =q,…,cm,bf\,…,bfd,… 以使得位bf\,的每个位仅属于子集Yi,…,Yk之一,并且以使得如果
是位 y:,…,yP的二进制值,则
是代码c的码字,对于k= 1,…,K并且对于j= 1,…,P, 适用: 如果h是子集Yk的元素,则4 = 1,并且如果h不是子集Yk的元素,则4 = 0,以使 得
适用并且H是代码C的H矩阵, 其中处理单元120被构造为定义位的组t,…,Yk中的哪一组被直接地或反演地写到内 存110中, 其中处理单元120被构造为形成将要被写到内存110中的P-Ididi,…,(!_+",其中i= 1,…,m+n+ 1, 当yi属于其位被直接地写到内存110中的组时,di=yi,并且 当yi属于其位被反演地写到内存110中的组时,cU=X, 其中处理单元120被构造为在地址a将位屯,…,dm+n+1写到内存110中, 其中处理单元120被构造为创建地址a并且读出源自写在地址a的值屯,… ,dn+1,dn+k+1,…,dP的存储在地址a的由于可能的错误导致的可能错误的值
其中处理单元120被构造为定义在错误值的情况下通过使用代码C校正的L个位位置 &,…,kyL彡P-K,其中已直接地或反演地存储bf1;..%bf^位位置属于将要被校正的位 位置, 其中处理单元120被构造为确定针对可由代码C校正的错误的定义的L个位位置h,…,h的二进制校正值
其中处理单元120被构造为至少在已直接地或反演地存储值bf1;...的位位置形成 校正位
,其中"〇P"是二进制唯一可逆运算, 其中处理单元120被构造为基于已知的插入值...>4和读出并且通过使用代码C校 正的对应正确值确定位的哪个组t,…,Yk的位已被直接地或反演地存储, 其中处理单元120被构造为在属于其位已被直接地写到内存11〇中的位的组的情 况下输出位
并且在属于已在写到内存110期间被反演地写到内存110 中的位的组的情况下输出位
,其中"op"是二位可逆唯一布尔运算。
[0090] 根据另一实施例,提供一种用于将位存储在内存110中的设备,其中所述位被利 用线性纠错码C编码,线性纠错码C具有至少3的码距,其中确定利用线性纠错码C编码 的位的子集是被直接写到内存中还是被以逐位反演方式写到内存中,并且其中代码C包括 H矩阵H,其中所述设备包括处理单元120和内存110。直接地或反演地写到内存110中的 位的子集包括至少一个二进制常数值,所述至少一个二进制常数值与用于编码的净荷数据 位一起形成线性码C的码字。处理单元120被构造为当位的各子集的位被直接地写到内存 110中时将该二进制常数值作为二进制值bf写到内存110中。处理单元120被构造为当 位的各子集的位被反演地写到内存110中时将该二进制常数值作为反演值@写到内存110 中。
[0091] 处理单元120被构造为当直接地或反演地写到内存110中的位的子集被反演时将 代码C的码字转换成相同代码的码字,并且形成代码的H矩阵,从而与直接地或反演地写到 内存110中的位的子集对应的H矩阵的列的每个分量的一的数量是偶数。
[0092] 此外,处理单元120被构造为当从内存110读出时通过使用线性纠错码C来校正 从内存110读出的可能错误的位,其中当位的各子集已被直接地写到内存110中时至少校 正在已写入常数二进制值bf的位位置的位,或者当位的各子集已被反演地写到内存110中 时至少校正在已写入常数二进制值0的位位置的位。
[0093] 另外,处理单元120被构造为在读出之后当已在已存储常数值bf或反演常数值 @的位位置读出的校正值等于P时反演已被直接地或反演地写到内存110中的位的子集 的位,并且当这个值等于bf时不反演。
[0094] 根据另一实施例,提供一种方法。所述方法包括: 通过采用线性纠错码来对多个位进行编码以获得多个编码位,其中所述多个编码位中 的每一个具有位值,其中纠错码具有至少3的码距,并且其中所述多个编码位形成线性纠 错码的第一码字。
[0095] 根据编码位的子集确定指示编码位的子集是否应该被反演的反演决定,其中确定 编码位的子集,从而如果子集的所有位被反演,则纠错码的第一码字被变换成纠错码的第 二码字,并且其中所述子集包括所述多个编码位中的所有编码位或者包括所述多个编码位 中的至少三个编码位,并且其中编码位的子集的编码位是指示位,其中指示位的位值等于 第一预定义位值。
[0096]当反演决定指示编码位的子集不应该被反演时,将第一码字的位存储在内存中作 为存储字,其中存储在内存中的第一码字的位包括具有第一预定义位值的指示位。并且: 当反演决定指示编码位的子集应该被反演时,通过经由改变编码位的子集的每个编码 位的位值反演编码位的子集的每个编码位来修改线性纠错码的第一码字以获得线性纠错 码的第二码字,并且将第二码字存储在内存中作为存储字,其中第二码字包括指示位,指示 位被反演,以使得指示位的位值等于不同于第一预定义位值的第二预定义位值。
[0097] 在下面,描述实施例的基本原理。
[0098] 实施例涉及将数据写到内存中以及从内存读取数据。实施例允许以有效的方式直 接地或反演地将应该存储的位的子集或组写到内存中,并且还允许当从内存读取它们时以 它们的原始形式恢复它们。
[0099] 位的子集或组是被直接地写到内存中还是被反演地写到内存中可例如由子集的 位的值确定,或者可例如由内存的针对错误或能耗的特性确定,或者可例如由其它特性确 定。
[0100] 例如,对于与具有值1的内存错误相比更多地表现出具有值0的永久内存错误的 内存,能够有益地直接地将待存储的位写到内存中(因为它们具有比一多的零),因为随后 与值1被写到这种内存基元中的概率相比,其中位卡0的表现出永久内存错误的值0将会 被写到内存基元中的概率将会更高。由此,永久内存错误导致错误行为的概率能够减小。
[0101] 也可暂时直接地将位写到内存中并且随后反演地将位写到内存中,并且随后决定 已发生较少错误的变型。
[0102] 许多非易失性存储器概念(诸如,经典浮栅存储器(例如,EEPR0M=电可擦除可编 程只读存储器、闪存)或电荷捕获存储器(例如,M0N0S、纳米点))以及新的存储器概念(诸 如,MRAM=磁阻随机存取存储器、R-RAM、PCRAM或CBRAM(导电桥接随机存取存储器))已针 对基元的可靠性或者针对写入期间的电流消耗内在地给出优选值。例如,经典浮栅表现出 本领域技术人员公知的不稳定位,其中不稳定位指示当利用低截止电压对状态进行编程时 的数据损坏。在读取或写入期间的电流消耗显著取决于待编程/待读取的数据模式。与利 用高截止电压的读取相比,利用低截止电压的基元的读取固有地需要显著更大的电流。当 编程时,情况可能是相反的。例如,当热载流子编程时,仅必须利用高截止电压进入状态的 基元需要编程电流。对于电荷捕获概念,情况是类似的。同样地,对于表现出磁各向异性能 的能量不对称性的新的内存(例如,MRAM),与具有较低能量的状态相比,较高能量状态在 数据存储方面更加危险。然而,实施例可不仅被用于非易失性存储器,还能够被用于例如永 久错误或针对SRAM或DRAM内的特定状态更加频繁地发生的错误。
[0103] 如果在写入第一二进制值h期间的能耗高于在写入第二二进制值132=^1期间的 能耗,则将会可根据待写入的位是包括更多值h还是更多值b2直接地或反演地将数据写到 内存中。以这种方式,可写入至多与值b2的数量相同的数量的值!^,以使得能耗减少。
[0104] 基于值h的数量或基于位的组的位的子集的位匕的数量,能够决定该组的位是被 反演地写到内存中还是被直接地写到内存中。通过如此操作,能够减少用于确定位的子集 是被直接地写到内存中还是被反演地写到内存中的工作。
[0105] 在实施例中,将要被存储的位应该例如通过使用具有生成矩阵G和H矩阵或奇偶 校验矩阵H的线性纠错码C而被编码,其中指示将要在哪里存储位的地址位可被用于编码, 但不需要被用于编码。例如,可有益地利用具有系统形式的生成矩阵G执行编码,其中G矩 阵包括单位矩阵作为子矩阵,其中H矩阵在一些实施例中可表现出系统形式并且在其它实 施例中可表现出非系统形式。为了当从内存读出位时检查位的子集的位是被直接地写到内 存中还是被反演地写到内存中,由常数二进制值补充位(位可例如稍后再次被存储)。这 里,补充的常数二进制值被用于形成线性码的各码字。
[0106] 形成直接地或反演地写到内存中的位的子集,从而当能够被反演地或直接地写到 内存中的位的子集的位被反演时,已由非反演位形成的代码C的码字被转变为代码C的另 一码字。
[0107] 这个特征有 益地允许基于纠错码C执行从内存读出的位的校正并且可执行错误 位的校正,而不必为了从内存读出的位的校正而知道来自读出的位的子集的位是已被直接 地写到内存中还是已被反演地写到内存中。
[0108] 当从内存读出数据时,然后,在通过使用在已直接地或反演地写入具有常数值的 位的位位置的校正位校正数据之后,能够发现位的子集或组的位是已被直接地写到内存中 还是已被反演地写到内存中。
[0109] 本领域技术人员已知的线性纠错码被用作纠错码。这种代码的例子是汉明码、 Hsiao码、BCH码等。频繁地,使用截短码(诸如,截短汉明码、截短Hsiao码或截短BCH码), 以使代码适应于必要的将要被存储的数据的位宽度。能够通过删除各H矩阵的不与校验位 对应的列来从未截短码获得截短码。
[0110] 为了更好的理解使用的术语和实施例的描述,将在下面简要地描述代码的几个基 本术语。
[0111] 线性码C包括生成矩阵或G矩阵G和H矩阵H。如果C是(Q,N)码,则码字包括Q 位,其中码字由y=yi,…,yQ指定,并且存在N个信息位,被称为u=Ui,一,%,其中Q>N 适用。
[0112] G矩阵是具有N行和Q列的(N,Q)矩阵,H矩阵是(m,Q)矩阵,其中m=Q-N适 用。从信息位u,根据关系y=u?G确定码字y。
[0113] 如果代码C是系统码,则生成矩阵G具有形式 G= (PN,m,IN),m=Q-N, 其中IN是N维单位矩阵,并且PN,m是奇偶矩阵。
[0114] 分派的H矩阵可被定义为 H = (L,磧麗), 其中Im是m维单位矩阵,并且是奇偶矩阵的转置,其中行和列交换。如果N、Q、m的值不被具体地提及,或者如果从上下文知道这些值,则简单地写成G= (P,I)和H= (I,PT)。
[0115] 已知具有系统形式的G矩阵和H矩阵也被用作G= (I,P)和H= (PT,I),这具有 这样的效果:校验位被布置在码字内的信息位的左侧,或者校验位被布置在码字内的信息 位的右侧。
[0116] G矩阵的N个行是代码C的码字。
[0117] 在系统码C中, y=y" …,yQ =(屮,…,un) ?G=q,…,cm,u" …,% 适用,其中Ci,…,CwUi,一,% ?P是码字yi,…,校验位。信息位1^,…,uN是码 字的未修改部分,其中校验位被添加到信息位。由于错误,码字y=y:,…,yQ能够被损坏为 不同字
其中具有e= %???,
的 e 被称为错误向量,并且其中" + "指示按照分量加法模2或X0R运算。
[0118] 字y'的错误校验子s是 s=H?y', 其中s=Sl,…,sm包括m个分量。如果y*是代码C的码字,则字y*的错误校验子正 好等于〇。
[0119] 如果y是码字并且如果y'是由错误导致的错误字并且其中y+y' =e,则下面的 等式适用, H? (y,)=H? (0 +y')=H?(y+y')=H?e 并且字y'的错误校验子仅取决于错误向量e,y'通过错误向量e而不同于码字y。
[0120] 如果存在i位错误,则错误向量e的正好i位等于1,并且所有其它分量等于0。如 果例如错误向量e的正好一个分量等于1,则在e的分量等于1的位中存在1位错误。
[0121] 如果代码C是1位纠错码,则所有1位错误的错误校验子两两不同并且不同于0, 并且特定1位错误随后被唯一地分配给这些错误校验子中的每一个。实现为解码器电路的 解码器随后从应用于它的输入的错误校验子确定哪个位位置将要被反演/校正。
[0122] 如果代码C是2位纠错码,则所有2位错误和所有1位错误的错误校验子两两不 同并且也不同于0,并且确定的2位错误或1位错误被唯一地分配给这些错误校验子中的每 一个。实现为解码器电路的解码器随后从应用于它的输入的错误校验子确定哪个位位置被 反演/校正。各陈述适用于3位纠错码、4位纠错码、…等。
[0123] 错误校验子可例如由校验子产生器确定,校验子产生器例如通过使用X0R门针对 字w=Wi,…,^^实现关系s(w) =H?w。
[0124]如果y=yi,…,yjPv=Vi,…,vQ是代码C的码字,贝ijy+v也是代码C的码字。
[0125]另外,下面的情况适用: 如果y=y:,…,yQ是代码C的码字并且w=Wi,…,wQ是具有错误校验子s(w) =H?W的字,则字w+y的错误校验子等于字W的错误校验子s(W),因为 H?(y+w) =H?y+H?w=s(w) 适用,并且因为当码字通过与字的按照分量加法而被相加模2时字的错误校验子不改 变。将码字y=y:,…,yQ与字w=Wi,…,wQ相加意味着:w的这些分量被反演,其中y的 分量等于1。
[0126]如果具体地讲
<是代码C的码字,则对于y=yi,…,yQ,
同样是代码C的码字,并且当w的所有分量被反演时,字w=Wl,…,%的校验子s(w)不改 变。
[0127]如果M是其位被直接地或反演地写到内存中的纠错码C的码字y=yi,…,yQ的位 的子集,则当字
1是代码C的 码字时,它是有益的。
[0128] 如果属于集合M的码字yi,…,yQ的位被反演,则所获得的字
_也是码字。独立于无论是原始码字yi,…,化还是在属于集合M的位中反演的码字被写到内存中,在两种情况下,代码C的码字都被写到内存中。当读出存 储的可能错误的码字:
'时,能够基于由y'或(y+y)'形成的 错误校验子执行利用代码C的读出的位的校正,而不必知道是y还是在属于集合M的位中 反演的码字y+yM已被写到内存中,因为错误校验子仅取决于发生的错误,例如,仅取决于 发生的错误向量e,而不取决于哪个码字已被写到内存中。可例如有益地:在已写入常数二 进制值bf\,…,bf\的位位置读出的值能够在读出之后被校正,并且在利用代码C的校正之 后,能够随后基于这些已经校正的值确定码字y是已被直接地存储还是已被存储在属于M的位中。
[0129] 此外,有益地,常数二进制值被利用相同代码C(诸如,存储的净荷数据位)校正, 其中校验位的数量通常不通过这个校正而增加。如果
,是代码C的码字,则当地址位未 被用于编码时,位的子集M能够包括码字y=yi,…,yQ的所有位。
[0130] 能够容易地确定码字能够被反演的位吣的组并且i= 1,2,…,其中在I的位中 反演的码字也是代码C的码字。
[0131] 能够容易地确定在子集的位中反演的代码C的码字也是代码C的码字的位的组或 子集,因为等于1的代码C的任意码字的位的子集形成这种子集。
[0132] 由于能够针对每个码字确定这种位的子集,所以存在多个合适的位的子集。
[0133] 现在将描述特定实施例。
[0134] 在第一实施例中,作为纠错码C的例子,将会考虑具有N= 11个信息位的长度Q= 15的1位纠错(15,11)汉明码。
[0135] 考虑的代码C的H矩阵是
变量 …
从左到右对应于公式(1)的H矩阵 的列。
[0136] 由于H矩阵的四行中的每一行包括8个一并且8是偶数,所以
?是代码C的码 字,并且在所有它的15位中以按照分量方式反演的码字也是代码C的码字。
[0137] 选择包括码字的所有位的K= 1和子集札=M= {yi,…,y15}。
[0138]提供10个净荷数据位Xi,…,x1(l,净荷数据位Xi,…,x1(l由常数二进制值bf^卜充 为11个信息位 u-u1; ???,un -bf1;x1; ???,x10 在实施例中,常数二进制值被定义为bf\ = 0。代码C包括四个校验位(^,…,c4。编码 位yi,…,yis通过使用代码C的G矩阵G而被确定为yi,…,y15 =Ci,…,c4,bfpXi,…,x1(l = (bf1>Xl,…,x1(l) *G。由此,G矩阵是矩阵G= (111,?11,5),其中111是11维单位矩阵,对于 Pll,5
适用,并且
适用。
[0139] 编码器根据在公式(3)中定义的关系从信息位bf1>Xl,…,x1(l形成校验位Cl,… ,c4。例如,可利用X0R门或通过使用常见合成工具实现编码器。K= 1适用,并且仅存在将 要被反演的一个子集Yi= {yi,…,y15}。
[0140]由于i
.是代码C的码字,因此对于
也是代码C的 码字,因为具有Q= 15的所有位yi,…,yQ属于Y
[0141] 作为特定码字,现在将会考虑由数据位Xpx2,…,x1(l = 1,0, 1,1,0, 1,1,1,1,1和 常数二进制值bf\ = 0形成的码字。根据公式(3),q= 1,c2 = 0,c3 = 1和c4 = 0,以使 得各码字是 y!,…,y15 = 1,0, 1,0, 0, 1,0, 1,1,0, 1,1,1,1,1 该码字具有10个一和5个零。考虑这样的例子:有益地将尽可能多的零写到内存中。 存储值〇可较少地损坏为存储值1,反之亦然,这能够是MRAM中的情况。写值0也可需要比 写值1少的能量,这能够是闪存中的情况。永久错误也可存在于内存中的一个或几个位置。 因此,卡0错误可存在于位yQ =y15的位置。如果字1,0, 1,0, 0, 1,0, 1,1,0, 1,1,1,1,1被 示例性地写到内存中(这能够是当写到闪存中时的情况),并且如果写入的值被与读出的 值比较,则能够看出,在y15的位置,存在卡〇错误,因为当y15 = 1已被写到内存中时,替代 于写入的值1,读出值0。然而,如果决定例如\的位(在这种情况下,所有位)被反演地 写到内存中,则
在地址a被写到内存中,并且第15位中的可能的卡0错误没有影响。如果不存在另外 的错误并且如果在地址a执行读出
则例如通过确定读出的字的错误校验子s=H? (1,0, 1,1,1,0, 0, 1,0, 0, 0, 0, 0) = 0 能够看出, 代码C的码字已被读出,并且不需要错误校正。
[0142] 能够从值0^ = 1推断,字已被反演地写到内存中。为了恢复原始字,所有读出的 位0^.., |^5将要被反演,以使得
适用。
[0143] 如果例如存在将读出的值从1损坏为0的错误,则这个错误随后由相同代码C 校正为1,该代码C也如以下更详细所述校正其它位中的错误。
[0144] 有益地,用于错误校正的工作较少。仅需要具有常数值的一个另外的位指示码字 的位是已被直接地写到内存中还是已被间接地(反演地)写到内存中。
[0145] 由此,内存能够例如是寄存器、寄存器阵列、RAM、M-RAM或闪存。
[0146] 现在将使用可寻址内存作为例子参照图2讨论写到内存。
[0147] 在图2中,具有n= 10的数据位&,…,xn和传送常数值(例如,值0)的位匕"被 提供给编码器Cod11的输入,实现编码器Cod11,从而编码器Cod11根据在编码器Cod 11 的 15 位宽输出输出的y= 丫丨,…,y15 =q,…,c4,bf^,Xi,…,x1(l = (bf^,Xp…,x1(l) ?G 形成具有Q= 15的码字y=yi,…,yQ。
[0148] 这里,假设以其系统形式给出代码C。编码器11的输出被提供给具有第一 15位宽 输入的X0R电路12。此外,X0R电路12包括第二1位宽输入,二进制反演信号Inv被应用 于第二1位宽输入。另外,X0R电路12包括15位宽输出,该15位宽输出传送值屯,…,d15 并且连接到内存Mem13的15位宽数据输入。
[0149] 在图2中,X0R电路12可例如包括15个X0R门,其中15个X0R门中的每一个具 有两个输入和一个输出,其中这些X0R门中的每一个的第一输入连接到编码器Cod11的 15个二进制输出线之一,而15个X0R门中的每一个的第二输入连接到传送反演信号Inv的 X0R电路12的第二输入。
[0150] 如果Inv= 0,则屯,…,d15 =yj,…,y15适用,而如果Inv= 1,则d" …,d15 =yf ,…,适用,以使得根据反演信号,由编码器输出的位被直接地(未修改/不修改)或反 演地写到内存中。
[0151] 当写数据时,内存Mem13被提供写地址a,并且应用于内存Mem13的数据输入的 数据被存储在地址a。
[0152] 当应用读地址a'时,并且当读取数据时,存储在读地址a'的数据被读取。如果写 地址a等于读地址a'(S卩,当a=a'时),则将会在数据输出输出值。写在地址a 的数据屯,…,d15和从相同地址a读出的数据可能由于错误而不同。
[0153] 从从内存Mem13读出的值,具有s=(Sps2,s3,s4)的错误校验子S=H? (rfj,,,,,tf15)和
适用。错误校验子S= (Sl,s2,s3,s4)由实现公式(4)的校验子产生器Syn(图2中未 示出)确定。例如,可通过使用合成工具来执行实现公式(4)。从公式(4)能够读出,如表 1中所示,校验子被以唯一可逆方式分配给待校正的位中的每一个。
[0154]表1:
[0155]如果具有反演为屯,…,d15 = 0, 1,0, 1,1,0, 1,0,0, 1,0,0,0,0,0 的75 =bf\ = 0 的码字71,一,715 = 1,〇,1,〇,〇,1,〇,1,1,〇,1,1,1,1,1已被写到内存此11113中,并且如 果读出的位
,则根据公式(4), Si= 0、s2 = 0、s3 = 0和84 = 0适用,并且读出的值不被校正。由于= 1和常数值 bf\ = 0已被直接地或反演地存储在第五位中,所以读出的字将会被按照分量反演,以使得
[0156] 如果位4被错误地损坏为 〇,则= 0,1,0,1,0,0,1,0,0,1,0,0,0,0,0 被 从内存Mem13读出,并且校验子产生器根据方程(4)确定错误校验子S= (1,1,1,1)。根 据表1中的最后一行,值
> 校正值1确定输出的 校正字0, 1,0, 1,1,0, 0, 0, 1,0, 0, 0, 1,0, 0, 0, 0, 0被反演,以使得由电路输出
1,0, 1,0,0, 1, 1,0, 1, 1,0, 1, 1, 1, 1, 1〇
[0157] 在下面,将会考虑数据位中的错误。如果例如值错误地等于1,则字 =0,1,0,1,1,0,1,0,0,1,0,0,0,0,1将会被从内存此11113读出。校验子产生器根据公式 (4)形成错误校验子s= (0,1,1,1),由解码器将待校正的位分配给错误校验子s= (0, 1,1,1),以使得根据
并且以使得校正字是 dl" = 〇, 1,〇, 1,1,〇, 1,〇, 〇, 〇, 1,〇, 〇, 〇, 〇, 〇。
[0158] 由于= 1适用,所以字将要被反演,以使得
适用,并且由电路输出适当地校正的字。
[0159] 图3表示用于读出可能错误的数据、用于校正错误数据并且在数据在写 入之前已被反演的情况下用于反演数据的根据实施例的设备。
[0160] 像图2中一样,该设备包括内存Mem13,数据屯,…,d15已被写到内存Mem13中。
[0161] 在图3中,假设内存是可寻址内存,在写入期间创建写地址a,并且在读取期间创 建读地址a'。这里,写地址a能够与读地址a'相同。一些实施例包括内存Mem13的另外 的控制信号,诸如用于写和读的使能信号。
[0162] 在一些实施例中,内存Mem13可以是寄存器,该寄存器可例如包括15个内存元 件。内存元件可例如是触发器或锁存器。
[0163] 当创建读取地址a'时,在内存Mem13的15个数据输出输出可能错误的位d' = 可假设:a' =a适用并且在写地址a写到内存Mem13中的数据被从相同读地 址a读出。读出的位可例如不同于写入的位屯,…,d15,因为读出的位能够由于内 存错误或由于数据线上的错误而是错误的。
[0164]读出到内存Mem13的数据输出上的位(3^,,,,{/15被提供给校验子产生器Synd21 的15位宽输入并且还被提供给X0R电路23的15位宽第一输入。实现校验子产生器Synd21,从而所述校验子产生器Synd21根据公式(4)形成错误校验子s=Sps2,s3,s4。在校验 子产生器Synd21的4位宽输出提供所述错误校验子,其中所述输出连接到解码器Dec22 的4位宽输入。解码器Dec22在它的15位宽输出输出校正信号e=ei,…,e15。构造解码器 Dec22,从而它根据表1形成校正信号。X0R电路23例如包括15个X0R门X0&,…,X0R15, 其中15个X0R门中的每一个具有两个输入和一个输出。
[0165] 对于i= 1,…,15,值〇^-被提供给X0R电路23的X0R门XORi的第一输入,并且值 61被提供给X0R门XORi的第二输入,以使得在X0R门XORi的输出输出值
由 于已选择bf\ = 0,所以传送值I
也X0R电路23的X0R门X0R5的输出被直接地提 供给可例如包括15个X0R门,…,1〇/?15的X0R电路26的第一 1位宽输入,其中15 个X0R门中的每一个具有二进制输出和两个二进制输入。
[0166] X0R电路23的15位宽输出连接到X0R电路26的第二15位宽输入。
[0167] 对于i= 1,…,15,值df被提供给X0R门义的第一输入,而X0R门XORi的输 出连接到这个门的第二输入,所述输出传送信号
。因此,如果(15^ = 1,则校正值 dr,? ? ?,d15c〇r被反演,并且如果d5咖=〇,贝ij校正值dr,? ? ?,d15c〇r不被反演。校验子产生 器Synd21、解码器Dec22和X0R电路23形成校正器24,如图3中所示。
[0168] 如果由校正器24独立于是y=yi,…,y15还是
已被写到内存中执行从 内存Mem13读出的值d'= 的校正,则这是有益的。此外,有益地,能够被用于决 定数据是已被直接地写到内存Mem13中还是已被反演地写到内存Mem13中的常数二进制 值被用于由线性码C执行的从内存Mem13读出的可能错误的位的校正,以使得校 正不需要另外的位(例如,另外的校验位)。
[0169] 根据图3的施例,解码器Decl5产生二进制校正值e=ei,…,e15,以使得在表示的 情况下,如果位是错误的并且如果错误可由代码C校正,则校正所有15位$5。
[0170] 然而,根据一些实施例,仅位的一部分被校正,例如与数据位对应的位和与常数二 进制值应的位 在一些实施例中,仅校正分配给数据位的值的一部分。
[0171]图3表示&4被设置为bf1= 0的情况。也可将bf\设置为bf1= 1。然后,传送 应用于X0R电路26的第一输入的值(^^的数据线将要被反演。
[0172] 图4表示采用错误检测器FE31的实施例。
[0173] 与图3的电路部分对应的电路部分由与图3相同的标号指示,并且将不会被再次 描述。
[0174] 在图4中,传送错误校验子s=Sps2,s3, 84的校验子产生器Synd21的输出连接 到解码器Dec22的输入并且另外连接到错误检测器FE31的4位宽输入,错误检测器FE 31在它的输出输出q位宽错误信号E,其中1。
[0175] 可实现错误检测器FE31,从而如果校验子8是8辛0,则错误检测器FE31输出 1位宽错误信号E= 1,并且以使得如果校验子8是8 = 0,则错误检测器FE31输出E= 0。 然后,错误检测器FE31能够由具有4个输入和一个输出的0R门实现。
[0176] 在实施例中,q= 2。在这种实施例中,当s= 0时,输出E=低,&) = 0,0;当 s等于代码C的H矩阵的一个列时,输出E= 1,0;并且当s辛0并且不等于H矩阵的一 个列时,输出E= 0,1。
[0177] 如果E= 1,0,则检测到可由代码C校正的错误。如果E= 0,1,则检测到不可 由代码C校正的错误。如果E= 0,0,这意味着不存在可检测到的错误。
[0178] 根据一些实施例,可实现错误检测器FE31,从而q= 2适用,并且例如E= 0,0 和E= 1,1指示不存在错误,并且E= 0,1或E= 1,0指示存在错误。
[0179] 在下面,将解释另外的实施例,其中代码C具有8个数据位Xl,…,&和6个校验位 Ci, ??? ,C6c
[0180] 定义:形成能够被直接地或反演地写到内存Mem13中的位的K= 2个子集YpY2。 8个数据位Xp 由两个常数二进制值bf 补充以形成10个信息位1^,…,u1(l,以使 得 Ui, ***,u10 -bf1;bf2,x1; ???,x8〇
[0181] 考虑的代码C的H矩阵可例如被定义为
从左到右的变量
分别对应于从左到 右的H矩阵(5)的列,以使得(^对应于第一列,c2对应于第二列等。
[0182] 这个实施例的代码C是截短Hsiao码。H矩阵的所有列两两不同并且每个列具有 奇数个一,因为每个列具有一个或三个一。
[0183] 由于H矩阵的每一行包括偶数个一,所以
,是代码C的代码向量,并且因此,如 果y=yi,…,y16是代码C的码字,则
也是代码C的码字,因为 线性码的两个码字的按照分量X0R合也是这个代码的码字。
[0184] 作为例子,集合Yi={cpc2,c3,c4,c5,c6,bfi,x4}被选择为直接地或反演地写到内 存中的位的第一子集Yi,并且集合Y2={bf2,Xpx2,x3,x5,x6,x7,x8}被选择为第二子集。
[0185] 相应地,H矩阵的第1至第7和第 12列被分配给集合1。在这些列中的每一列的 分量中,存在2个一,以使得H矩阵的这些列的按照分量模2和等于0,其中 hi+h2 +h3 +h4 +h5 +h6 +h7 +h12 = 0, 其中 H? (1,1,1,1,1,1,1,0, 0, 0, 0, 1,0, 0, 0, 0)T = 0 适用,并且其中(1,1,1,1,1,1,l,〇, 〇,〇,〇, 1,〇,〇,〇,〇,)是码字。
[0186] H矩阵的第8至第11和第13至第16列被分配给集合1。在这些列中的每一列 的分量中,存在4个一,以使得H矩阵的这些列的按照分量模2合等于0,其中 hsh9 +h10 +hn +h13 +h14 +h15 +h16 - 0, 其中 H? (0, 0, 0, 0, 0, 0, 0, 1,1,1,1,0, 1,1,1,1)T = 0 适用,并且其中1,1,1,l,〇, 1,1,1,1,)也是考虑的代码的码字。
[0187] 集合YJPY2是分离的并且它们的并集包括码字的所有16个分量。
[0188] 这里,也可选择能够被直接地或反演地写到内存Mem13中的位的第三子集Y3。这 种集合y3可包括码字的所有位。已从内存读出的校正值c/f和dgv确定哪些位的子集已被 反演地写到内存Mem13中并且哪些位的子集已被直接地写到内存Mem13中。
[0189] 在这种实施例中,存在直接地、以部分反演方式或以完全反演方式将码字71,~ ,y16写到内存中的四个不同选择。假设心和78被设置为常数二进制值y7 =bf\ = 0,y8 = bf2 = 0〇
[0190] 可将字
写到内存中。
[0191]因为如果q,。2,。3,。4,。5,。6,〇,〇,Xl,X2,X3,X4,X5,X6,X7,X8疋代码C的码子,则与到 内存中的值屯,…,d16是代码C的码字,而不管哪些位的子集已被反演,所以能够通过使用 代码C来校正从内存读出的可能错误的值df,...,而不必知道哪些位组已被直接地写到 内存中并且哪些位组已被反演地写到内存中。
[0192] 特别地,读出的值dK能够被校正为dff, ,其中
0指示没有位组的位已被反演,
,0指示位组1的位已被反 演
指示位组¥2的位已被反演,,1指示位组Y3 =YiU¥2的 位匕骰反演。
[0193] 现在将参照下面的实施例讨论一个方面。考虑具有4个校验位(Cl,c2,c3,c4)、6个 数据位(Xpx2,x3,x4,x5,x6)和两个常数二进制值(bfpbf2)和一个H矩阵H的1位纠错码 C,其中
并且其中变量 ……
对应于H矩阵(6)H的列。
[0194] 如果y=y:,…,y12 =Ci,…,c4,bfpbf2,Xi,…,x6是代码C的码字,则H矩阵的第 三列和第四列的一的数量是奇数并J
不是码字。定义:位的两个子集YJPY2 能够被直接地或反演地写到内存中。这里
,不必是代码C的代码向量。
[0195] 子集1可例如被定义为 Yi={cnc2,c3,c4,bf\,xj并且子集丫2可例如被定义为 Y2_ {c3,c4,bf2,x3,x4,x5,x6} 〇
[0196] 集合YJPY2不是分离的,因为它们具有共同的位cjPc4。
[0197] 下面的情况适用:如果y=yi,…,y12是代码C的码字,则通过反演属于Yi的位从 y获得的字也是码字。
[0198] 同样地,下面的情况适用:如果y=yi,…,y12是代码C的码字,贝ij通过反演属于Y2 的位从y获得的字也是码字。
[0199] 在下面,考虑这样的情况:码字y* = 1,0, 1,1,1,1,1,1,0, 1,0, 1将要被直接地或 反演地存储在内存中,例如存储在地址a。假设:在测试中,已例如确定第12位y*12具有卡0 错误。然后,替代于码字y* = 1,〇, 1,1,1,1,1,1,〇, 1,〇, 1 =Ci,c2,c3,c4,bfi,bf2,Xi,x2,x3, x4,x5,x6,石马子
能够被存储在内存中,该码字在子集1的位中被反演并且其在第12位中的值等于0。通过 如此操作,在这个位位置的卡〇错误没有影响。
[0200] 如果不发生另外的错误,则当在地址a读取时,将会读出字rfi,.,., = 100010101010。由于是代码c的码字,所以
并且
I的值指示子集y2的位已被反演,以使得
=101111110101 适用。通过将在子集1的位中反演的位写到内存中并且通过基于常数二进制值反转 执行的反演,能够容忍(卡0)错误而没有影响。
[0201] 这里,可如已经所述,错误已通过测试而被检测。
[0202] 根据实施例,码字yi,…,yQ被直接地写到内存中,并且随后,各值被读出并且与写 入的值比较以确定是否发生了错误以及在哪里发生了错误。
[0203] 如果存在错误检测器,则能够如下继续进行: 如果在将码字yi,…,化写在地址a之后当在地址a读出时错误检测器未指示错误,则 没有新的字将会被写在地址a。如果错误检测器指示错误,则在1的位中反演的字在地址 a被写到内存中。如果当在该地址读出时错误检测器现在未指示错误,则没有另外的字被写 到内存中。如果当读出存储在地址a的字时错误检测器指示错误,则在¥2的位中反演的字 被写到内存中。如果当在该地址读出时错误检测器现在未指示错误,则没有另外的字被写 到内存中。这种情况持续,直至在读出期间未指示错误或者直至不存在反演位的另外的子 集Yk。
[0204] 另外,可实现下面的过程: 在地址a,码字yi,…,yQ或在子集Yi的位中反演的码字被写到内存中,并且当错误检测 器指示一定数量的错误时当可由代码C校正所述数量的错误时,保持这个写入的字。
[0205] 也可在错误检测器指示未超过错误的某个数量时保持写到内存中的位。如果代码 C是2位纠错码,则当错误检测器指示至多1位错误时能够保持写到内存中的位,因为随后 仍然能够校正另一随机错误。
[0206] 对于错误处理,有益地,存在具有k> 1的几个不同子集¥:,…,Yk,其位能够被分 别直接地或反演地写到内存中,这允许良好地适应于不同的可能的永久错误。
[0207] 在下面,将会讨论另外的实施例。
[0208] 具有在地址a=ai,….,a5被直接地或反演地存储在内存中的5个校验位(^,…,c5 和8个净荷数据位Xl,…,^和常数二进制值bf:的截短汉明码将会被视为代码C。在这种 实施例中,地址位ai,….,a5被用于编码。
[0209] 代码的H矩阵H是
其中H矩阵的列被称为匕,…,h14。
对应于从左到右的H矩阵(7)的各列。具有其系统形式的对应G矩阵G是G- (P14,5,I14), 其中114是14维单位矩阵,并且P14,5具有形式
当通过采用数据被写到内存中的内存地址的地址位叫,….,a5写到内存时,代码C的码 字被定义为

适用,并且其中叫,….,&5被称为写地址。
[0210] 定义位的集合
,以使得这个集合 的位能够被直接地或反演地写到内存中。&4被设置为常数值bf\ = 1。
[0211] 如果
是代码C的码字,
也是代码C的码字。
[0212] 在地址a=ai,…?,a5,当位被直接地存储时,位
被写到内存中, 或者在地址a,位
被写到内存中。
[0213] 然后,当在读地址a'从内存读取时,当a=a'并且不存在错误时,对于i= 1,…,14,读出位
,a:,…,85形成代码C的码字。
[0214] 如果能够由代码C校正的错误存在于位!
,…,&5的 错误被校正为
并且基于值确定数据是已被直接地写到内存中 还是已被反演地写到内存中。例如,如果df= 1,则数据已被直接地写到内存中,并且如 果df= 〇,则数据已被反演地写到内存中。地址位中的错误未被校正。当可由代码c检 测到错误时,检测它们。
[0215]如果例如1位错误存在于地址位&1中,则关联的错误校验子是[1,0, 0, 1,0]T。由 于H矩阵的列h,…,h14都不等于[1,0, 0, 1,0]T,所以不执行位琳…,之一的校正,并且 错误被指示为不可校正错误。通过如此操作,能够例如检测到:读地址和写地址不匹配,并 且不同之处在于可由代码C校正的错误。
[0216]图5显示这样的实施例:地址位a=叫,….,a5如何被用于对待存储的数据进行 编码。图5的电路包括具有9位宽第一输入、5位宽第二输入和14位宽输出的编码器Cod 41。此外,图5的电路包括具有14位宽第一输入和1位宽第二输入和14位宽输出的反演 电路42。另外,图5的电路包括具有14个数据输入、14个数据输出和用于写地址和读地址 的5位宽地址输入的可寻址内存Mem43。
[0217] 例如,8个净荷数据位Xl,…,x8将要被存储。净荷数据位由传送常数二进制值的 位bfi补充,其中,这里,常数值是例如bfi= 1。
[0218] 位bfi,Xi,…,乂8被应用于编码器Cod41的9位宽第一输入,而写地址的位a:,… .,%被应用于编码器Cod41的5位宽第二输入。
[0219] 构造编码器Cod41,从而编码器Cod41在它的14个输出输出码字 q,…,CybA=Lx!,…,x8,ai,…,a5的位Ci,…,CybA=Lx!,…,x8,其中根据
形成码字, 其中G是考虑的代码的生成矩阵。
[0220] 假设:以其系统形式提供代码C。
[0221] 编码器Cod41的14位宽输出被引导至X0R电路42的第一 14位宽输入,反演信 号Inv被应用于X0R电路42的第二1位宽输入。
[0222] 传送值屯,…,d14的X0R电路12的14位宽输出连接到内存Mem43的14位宽数 据输入。
[0223] 这里,X0R电路42包括分别具有两个输入和一个输出的14个X0R门,其中这些X0R 门的第一输入分别连接到编码器Cod41的14个二进制输出线之一,而这些X0R门的第二 输入分别连接到传送反演信号Irw的X0R电路42的第二输入。
[0224]对于Inv= 0,屯,…,d14 =c!,…,c5, 1,x!,…,x8适用,而对于Inv= 1,则
:适用,以使得根据反演信号,由编码器输出的位被直接地 (即,未修改地)或反演地写到内存中。
[0225] 这里,根据实施例,实现编码器,从而当
是代码C的码字时,则
也是代码C的码字。
[0226] 在实施例中,当写数据时,内存Mem43被提供写地址a,并且应用于它的数据输入 的数据被存储在地址a= 。写地址的位ai,….,a5是代码的信息位1^,…,u14 = bf"x!,…,x8,a" …,a5的一部分。
[0227]当读取数据时,当应用读地址a'时,从内存读取存储在读地址a' =Sf,…,$的 数据。
[0228] 如果写地址a和读地址a'匹配(即,当a=a'时),则将会在数据输出输出值 叫…,$5。写在地址a的数据屯,…,d15和从相同地址a读出的数据巧,巧5可能由于错 误而不同。如果未发生错误,则读出的值指示数据是已被直接地写到内存中还是已被反 演地写到内存中。如果发生可由代码校正的错误,则当错误可由代码C校正时,能够根据从 内存读出并且基于(16_校正的数据检测到数据是已被反演地写到内存中还是已被直接地 写到内存中。
[0229] 作为图5的设备的补充,图6描述用于读出可能错误的位、用于校正错误 位并且在位在写到内存中之前已被反演的情况下用于反演位的根据实施例的设备。如已经 参照图5所解释,地址位ai,…,a5已被用于形成代码C的码字。位di,…,d14被写到内存Mem43 中。
[0230] 读地址a'被提供给内存Mem43,并且可能错误的位
被读取。在内 存Mem43的14个二进制数据输出上输出可能错误的彳 1
>可假设:a=a'适 用并且写在写地址a的位被从相同地址a' =a读出。由于读出的位d'能够例如由于永久或 非永久或瞬态内存错误而是错误的,所以读出的位不必等于写入的位屯,…,d14。
[0231] 如果不存在错误,则 是代码C的码字。
[0232]如果(d',a')不是该代码的码字,则错误存在于内存Mem43中或者当确定地址时 已发生错误。
[0233] 在内存43的数据输出上输出的位0^,,,, 同时被提供给校验子产生器Synd51 的14位宽第一输入,读地址a'的位3^被提供给校验子产生器Synd51的5位宽第二 输入。校验子产生器Synd51在它的5位宽输出上输出5位宽错误校验子s= (Sl,…,s5)。 这里,构造校验子产生器Synd51,从而校验子产生器Synd51根据,
形成错误校验子s, 其中可例如使用公式(7)的H矩阵H。读取地址a'被用于校验子形成。
[0234] 校验子产生器Synd51的5位宽输出连接到解码器Dec52的5位宽输入, 可例如实现解码器Dec52,从而校验子产生器Synd51形成包括用于从内存读出的位 '的校正位e6,e7,…,e14的校正向量e= (e6,e7,…,e14)。
[0235]
当校验位也将要被校正时,校正器还可另外形成校正信号ei,…,e5。
[0236] 另外,校正器还可形成用于地址位3^的校正位,其中用于地址位的不同于0 的校正信号指示存在地址错误,并且在错误地址a'读出的位将不会被进一步使用。
[0237] 在图6中,X0R电路53可例如包括9个X0R门X0R6,…,X0R14,其中九个X0R门中的 每一个具有两个输入和一个输出(九个个体X0R门未被不出在图6中)。对于i= 6,…,14, 值被提供给X0R门XORi的第一输入,并且值ei被提供给第二输入,以使得在第iX0R门 XORi的输出输出值
校验子产生器Synd51、解码器Dec52和X0R电路53可 被视为一起形成校正器54的电路部分。校正器54还可包括错误检测器FE57,如图6中所 不〇
[0238] X0R电路53的最低有效输出(g卩,传送值d6eOT的X0R门X0R6的输出)被提供给 反演器55的输入,反演器55在它的输出输出值
>X0R电路53的8个更高有效 输出(即,传送值的X0R门X0R7,…,X0R14的输出)连接到反演电路54的第一 8 位宽输入,在图6中,反演电路54包括分别具有两个输入和一个输出的8个X0R门火 ,…,A0/?^,而反演电路54的第二1位宽输入连接到反演器55的输出。
[0239] 对于i= 7,…,14,值#'被应用于X0R门火的第一输入,而由反演器55输出 的值
'被提供给第二输入。XOR门火1CWJ在它的输出输出值y+f气
[0240] 图6显示存储常数二进制值bf\和净荷数据位xi,…,x8的位位置被校正。
[0241] 另外的位(例如,校验位)也可被校正,或者仅净荷数据位的子集也可被校正。
[0242] 在图6中示出的实施例中,存在错误检测器FE57,其5位宽输入连接到校验子产 生器51的输出并且错误检测器FE57在它的q位宽输出输出错误信号E,其中q彡1适用。
[0243] 已示出:对于实施例,具有r= 5的写地址a的位ai,…,和读地址的位 <,…, 3;被用于编码和解码,以使得例如根据
从信息位确定校验 位。
[0244] 也可由具有t〈r的函数f: 1K- {0, 1} 1从地址位&1,…,ar获得位,其中 确定所述获得的位,
形成线性码C的信息位。因此,例如,可以t= 1,并且根据
定义的心是 地址位的奇偶性。
[0245] 现在将针对BCH码讨论实施例的另一方面。
[0246] 能够校正1位和2位错误的(15, 7)BCH码C的H矩阵是(参见Lin,S.和Costello, D.ErrorControlCoding,PrenticeHall, 1983,页码 149)H矩阵H
变量y:,…,y15被分配给从左到右的H矩阵的列。
[0247] 由于这个BCH码C的H矩阵的每一行包括6、8或12个一,因此偶数个一
《1 是代码C的码字,并且可形成能够被直接地或反演地写到内存中作为位屯,…,d15的所有位 的集合= {y:,…,y15}。由于公式(10)的H矩阵具有8行,所以BCH码具有8个校验位 和7个信息位。如果y15 = 6^被选择为常数值,则能够存储6个净荷数据位。在从内存 读出可能错误的位$(,,,, 之后,1位和2位错误能够由BCH码校正。如果例如是错误 的,则即使另外的位是错误的,#5也将会被校正为正确的值dff。
[0248] 实施例可实现另一方面:为了识别直接地或反演地写到内存中的位的集合Yi,使 用具有t> 1的t常数值匕4,...汕&。在根据纠错码(:校正从内存读出的值
,…之后,能够从与常数值bf\,. . .,bft对应的校正位决定位组Yi的位是否将要被反演。通 过如此操作,能够增加关于t的位是否将要被反演的语句的可靠性。
[0249] 例如,t= 3,并且代码C可以是具有码距5的2位纠错码。对于子集^的常数二 进制值bfn,bfi2,bfi3,能够应用bfn=bfi2 =bfi3= 0。在1位错误或2位错误的情况下, 不能发生这样的情况,即并非在已直接地或反演地存储常数二进制值的位位置的所有位
'是相同的,因为所有1位和所有2位错误由代码C校正。由此,有益地,^的 位是已被直接地写到内存中还是已被反演地写到内存中的决定尤其可靠。
[0250] 在下面,描述实施例的随后的方法步骤,其中地址位未被用于编码: 提供待存储的数据位并且由常数二进制值补充数据位。
[0251] 利用纠错码C对数据位和常数二进制值进行编码。
[0252] 通过下述步骤形成待存储的位: 确定待存储的位的子集的位是否将要被反演 当位的子集的位将要被反演时,反演子集的位 当位的子集的位将不会被反演时,不反演子集的位 4.将待存储的位写到内存中。
[0253] 5.从内存读取存储的可能错误的位。
[0254] 6.通过使用纠错码C来校正读取的可能错误的位,其中如果发生的错误可由代码 C校正,则已存储常数二进制值的位位置和已存储数据位的至少一个位位置被校正。
[0255] 7.反演或不反演存储位的值,其中基于在已存储常数值的位位置的校正位决定位 的子集是将要被反演还是将不会被反演。
[0256] 在下面,描述另一实施例的随后的方法步骤,其中地址位被用于编码: 提供待存储的数据位并且由常数二进制值补充数据位。
[0257] 利用纠错码C对数据位、常数二进制值和写地址的地址位进行编码。
[0258] 通过下述步骤形成待存储的位,其中地址位不属于待存储的位, 确定待存储的位的子集的位是否将要被反演 当位的子集的位将要被反演时,反演子集的位 当位的子集的位将不会被反演时,不反演子集的位 4.在用于编码的写地址将待存储的位写到内存中。
[0259] 5.在读地址从内存读取存储的可能错误的位。
[0260] 6.通过使用纠错码C考虑到读地址校正读取的可能错误的位,其中如果发生的错 误可由代码C校正,则已存储常数二进制值的位位置和已存储数据位的至少一个位位置被 校正。
[0261] 7.反演或不反演存储位的值,其中基于在已存储常数值的位位置的校正位决定位 的子集是将要被反演还是将不会被反演。
[0262] 在下面,总结实施例: 根据实施例,提供一种用于将位存储在内存中的方法,其中所述位被利用线性纠错码C编码,线性纠错码C具有至少3的码距,其中确定利用线性纠错码C编码的位的子集是被直 接地写到内存中还是被以逐位反演方式写到内存中,并且其中代码C包括H矩阵H,其中: 直接地或反演地写到内存中的位的子集包括至少一个二进制常数值,所述至少一个二 进制常数值与用于编码的净荷数据位一起形成线性码C的码字,其中当位的各子集的位被 直接地写到内存中时将该二进制常数值作为二进制值bf写到内存中,并且其中当位的各 子集的位被反演地写到内存中时将该二进制常数值bf作为反演值写到内存中, 其中当直接地或反演地写到内存中的位的子集被反演时,代码C的码字被转换成相同 代码的码字,并且形成代码的H矩阵,从而与直接地或反演地写到内存中的位的子集对应 的H矩阵的列的每个分量的一的数量是偶数, 2. 当从内存读出时,通过使用线性纠错码C来校正从内存读出的可能错误的位,其中 当位的各子集已被直接地写到内存中时至少校正在已写入常数二进制值bf的位位置的 位,或者当位的各子集已被反演地写到内存中时至少校正在已写入常数二进制值的位 位置的位,并且 3. 在读出之后当已在已存储常数值bf或反演常数值@的位位置读出的校正值等于 P时反演已被直接地或反演地写到内存中的位的子集的位,并且当这个值等于bf时不反 演。
[0263] 根据实施例,内存是寄存器。
[0264] 根据另一实施例,内存是寄存器阵列。
[0265] 根据另一实施例,内存是可寻址内存。
[0266] 在实施例中,通过使用地址位来对利用纠错码C编码的位进行编码。
[0267] 根据实施例,直接地或反演地写到内存中的位的子集的位的子集中的零的数量或 一的数量确定子集是被直接地写到内存中还是被反演地写到内存中。
[0268] 在实施例中,当在直接写入、随后的读出以及写入的值和读出的值的比较之后未 发生错误时,位 的子集被直接地写到内存中。
[0269] 根据实施例,当在直接写入、随后的读出以及写入的值和读出的值的比较之后至 多发生T个错误并且其中T小于能够由代码C校正的错误的数量时,位的子集被直接地写 到内存中。
[0270] 在实施例中,当在反演写入、随后的读出以及写入的值和读出的值的比较之后至 多发生与在直接写入和读出的值和写入的值的比较之后发生的错误一样多的错误时,位的 子集被反演地写到内存中。
[0271] 根据实施例,当在反演写入、随后的读出以及写入的值和读出的值的比较之后至 多发生T个错误并且其中T小于能够由代码C校正的错误的数量时,位的子集被反演地写 到内存中。
[0272] 此外,根据另一实施例,提供另一方法。所述方法包括: 由具有常数值的1位bf^.^bfi补充将要被存储在可寻址内存中的地址a的净荷数据 位Xi,…,xn,其中1彡1。
[0273] 利用校正至少1位错误的线性码C将具有常数值的位...>4和净荷数据位 Xp…,xn编码为码字c i,…,cm, Xp…,xn,其中Ci,…,cm是当从地址位获得的位未 被用于形成码字时从...>4Xl,…,xn确定的校验位,并且利用校正至少1位错误的线性 码C将位,Xi,…,xn,A:,…,Ak编码为码字q,…,cm, ,Xi,…,xn,A:,…,Ak, 其中q,…,cm是当从地址位ai,…,aj?获得的位Ai,…,Ak被用于编码时从bfXp??? ^^,…,Ak确定的校验位,并且Ai,…,Ak = ,…,ar)由函数f: {0,lK- {0,l}k从 地址位唯一地确定。
[0274] 定义将要被直接地或反演地存储的位q,…,cm, Xp…,位的K个组 t,…,Yk,以使得定义的位bf^bfV的子集被唯一地分配给这些组中的每一组,其中K彡1, 选择组t,…,Yk的位的哪个组被以反演或非反演方式存储在内存中。
[0275] 在地址a将位q,…,cm, Xp…,xn写到内存中,其中属于反演地写到内存 中的位的组的位在写入之前被反演,并且不属于其位被反演的组的位被直接地(即,以非 反演方式)写到内存中。
[0276] 读出在地址a存储在内存中的位。
[0277] 如果从地址位获得的位未被用于形成码字,则在8继续,并且如果从地址位获得 的位被用于形成码字,则在10继续。
[0278] 基于纠错码C校正至少在已直接地或反演地存储常数值...>4的位位置从内 存读出的位,所述从内存读出的位可能由于错误而不同于写到相同地址的值。
[0279] 在11继续。
[0280] 基于纠错码C校正至少在已直接地或反演地存储常数值...>4的位位置通过 使用从可能错误的地址位获得的也可能错误的位/f,…,从内存读出的可能错误的 值。
[0281] 从通过使用唯一地分派给各位组的代码C校正的读出的常数值确定位组是已被 直接地写到内存中还是已被反演地写到内存中以及哪个位组已被直接地或反演地写到内 存中。
[0282] 反演已在前一步骤中被确定为其位已在写入期间被反演的位组的位组的读出并 且校正的位。
[0283] 方法的结束 另外,根据另一实施例,提供这样的方法:直接地或反演地将形成校正至少1位错误的 线性码C的码字的位的子集直接地或反演地写到内存基元的内存中,以及从直接地或反演 地存储的从内存可能错误地读出的位读取和恢复写到内存中的位,其中所述方法包括下述 步骤: 定义能够被直接地或反演地写到内存中的利用校正至少1位错误的线性码C编码的位 的子集的数量K,其中K多1。
[0284] 提供将要在地址a= ,…,a,被存储为校正至少1位错误的线性系统码的码字的 子字的n个净荷数据位Xp…,xn,r多2。
[0285] 形成代码C的信息位Ul,…,uN,其中如果地址a未被用于形成代码C的码字,则由 1个定义的二进制值bf\,...>;^补充数据位x^…,xn,以使得 u" …,uN =bf" …,bf\,Xi,…,xn N= 1 +n适用,并且如果地址a被用于形成代码C的码字,则由1个定义的二进制值 匕4...>;^补充数据位xi,…,xn和从地址位ai,…,a1?获得的位Ai,…,Ak,以使得 屮,…,% =bf\,…,bf\,Xi,…,xn,A!,…,Ak N= 1 +n+k适用,其中A!,…,Ak =f(a" …,ar) 是由函数f从r个地址位ai,…,aj?的值唯一地确定的二进制值,1彡1和1彡k彡r。
[0286] 4.如果地址a未被用于错误检测或错误校正,则继续执行该方法的步骤5,并且如 果该地址被用于错误检测或错误校正,则继续执行该方法的步骤16。
[0287] 5.形成代码C的码字yi,…,yP,其中C是具有系统形式的生成矩阵G和H矩阵H 的线性系统码,其中 y=Yi,---.yp= (u1; ???,%)G* =〇!,???,〇",,bfj, ???,bf1;x1; ???,xn 适用并且Cl,…,cmm是校验位,生成矩阵G是(N,P)矩阵并且H矩阵H=(h,…,hP) 是([P-N],P)矩阵,以使得H矩阵的所有列两两不同并且不等于0,并且P=n+m+ 1, m=P-N,N=n+l和m=P-N适用。
[0288] 6?确定位y!,…,yP =q,…,cm,bf\,…,bf\,Xi,…,叉"的K个子集Y! = {y1;1,… )Yl,qj) *** )Yk- (Yk, 1) *** )Yk,qK^ 以使得下面的情况适用: 具有其第一预定义值的一个位或多个位bf1,...,bf1被--对应分派给每个子集Y。… ,Yk〇
[0289] 如果yfn乂是位yi,…,yP的二进制值,则yffen!4是代码C的码字,对于j= 1,…,P并且对于具有K彡q彡1的每个子集Yq,下面的情况适用:如果y」是子集Yq的元 素,则= 1,并且如果乃不是子集Yq的元素,则% = 0。
[0290] 7.定义位的组t,…,Yk中的哪一组被直接地或反演地写到内存中。
[0291] 8.形成将要被写到内存中的卩位屯,…,dP,其中对于1,…,P,下面的情况适用: iyi属于其位被反演地写到内存中的组时,I=X。
[0292] 当yi不属于其位被反演地写到内存中的任何组时,di=yi。
[0293] 9.在地址a将位屯,…,dP写到内存中。
[0294] 读取: 10.创建地址a并且读出源自写在地址a的值屯,…,dp的存储在地址a的由于可能的 错误导致的可能错误的值,…,
[0295] 11.定义将要在错误值的情况下通过使用代码C校正的将要由代码C校正的L个 位位置&,…,h,L彡P并且%,…,kjG{1,…,P},其中已直接地或反演地存储bUA 的位位置属于将要被校正的位位置。
[0296] 12.确定基于代码C校正可由代码C校正的错误的定义的L个位位置&,…,匕的 二进制校正值%fn\。
[0297] 13.至少在已直接地或反演地存储值bf^.^bfi的位位置形成校正位 ,其中op是唯一可逆布尔运算。
[0298]
14.基于已知的插入值bf^.^bfjP通过使用代码C校正的各读出值确定位的哪个 组Yi,…,Yk已被直接地或反演地存储。
[0299] 15.如果属于其位已被直接地写到内存中的位的组,则输出位:
,并且如果!属于已在写到内存期间被反演地写到内存中的位的组,则输出位
,其中"〇P"是二进制唯一可逆布尔运算,并且该方法结束。
[0300] 16.形成代码C的码字y=yi,…,yP,其中C是具有系统形式的生成矩阵G和H矩 阵H的线性系统码,其中 y=y" …,yP = (U" …,%) ?G==Ci,…,cm,bf" …,bf\,Xi,…,xn,A" …,Ak 适用,生成矩阵G是(N,P)矩阵并且H矩阵H= (hi,…,hP)是([P-N],P)矩阵,以使 得H矩阵的所有列两两不同并且不等于0,并且P=n+l+m+k,N=n+l+k,并且 q,…,(^是m=P-N个校验位。
[0301] 17?确定位丫!,…,yn+1+m= q,…,c^bfi,…,bf^Xi,…^的仄个子集Yi= {y1;1,… ,yi,qJ,…,yk = {yK,i,…,yK,qiJ,以使得下面的情况适用: 具有其第一预定义值的一个位或多个位bf1,...,bf1被--对应分派给每个子集Y。… ,Yk〇
[0302] 如果y,是位yi,…,yP的二进制值,则y,是代码c的码字,对于j= 1,…,P并且对于具有K彡q彡1的每个子集Yq,下面的情况适用:如果是子集Yq的元 素,则Z= 1,并且如果g不是子集^的元素,则Y= 0。
[0303] 18.定义位的哪一组1,…,Yk被直接地或反演地写到内存中。
[0304] 19.形成将要被写到内存中的P-让位屯,…,cU+n,其中对于i= 1,…,m+n+ 1,下面的情况适用: 当yi属于其位被直接地写到内存中的组时,di=yi, 当yi属于其位被反演地写到内存中的组时,cU=g, 20. 在地址a将位屯,…,dm+n+1写到内存中。
[0305] 读取: 21. 创建地址a并且读出源自写在地址a的值屯,…,dn+m+1的存储在地址a的由于可能 的错误导致的可能错误的值
[0306] 22.定义将要在错误值的情况下通过使用代码C校正的将要由代码C校正的L个 位位置,…,kL,L彡P-k并且{k^,…,kj£ {1,? ? ?,n+m+ 1 },其中已直接地或 反演地存储位位置属于将要被校正的位位置。
[0307] 23.确定可由代码C校正的错误的定义的L个位位置匕,…,匕的二进制校正值
[0308] 24.至少在已直接地或反演地存储值bfibf\的位位置形成校正位
,其中"op"是二进制唯一可逆运算。
[0309] 25.基于已知的插入值bf1;和读出并且通过使用代码C校正的对应值确定位 的哪个组t,…,Yk的位已被直接地或反演地存储。
[0310] 26.如果属于其位已被直接地写到内存中的位的组,则输出位
属于已在写到内存期间被反演地写到内存中的位的组,则输出
=,其中"〇P"是二进制唯一可逆布尔运算,并且该方法结束。
[0311] 根据实施例,内存是闪存。
[0312] 根据另一实施例,内存是M-RAM。
[0313] 根据另一实施例,内存是R-RAM。
[0314] 在实施例中,具有其系统形式的代码C的生成矩阵用于编码。
[0315] 根据另一实施例,代码C是汉明码或截短汉明码。
[0316] 在另一实施例中,代码C是Hsiao码或截短Hsiao码。
[0317] 根据另一实施例,代码C是BCH码或截短BCH码。
[0318] 在另一实施例中,k=r和%,…,Ak) =h,…,ar)适用。
[0319] 根据另一实施例,k= 1和Ai= ,…,ar) =ai+a2 +…+ar适用并且A!是 地址位ai,…,aj勺奇偶性。
[0320] 根据第一方面,一种设备包括:处理单元;和内存,其中所述处理单元被构造为通 过采用线性纠错码来对多个位进行编码以获得多个编码位,其中所述多个编码位中的每一 个具有位值,其中线性纠错码具有至少3的码距,并且其中所述多个编码位形成线性纠错 码的第一码字,其中处理单元被构造为根据编码位的子集确定指示编码位的子集是否应该 被反演的反演决定,其中确定编码位的子集,从而如果子集的所有位被反演,则线性纠错码 的第一码字被变换成纠错码的第二码字,并且其中所述子集包括所述多个编码位中的所有 编码位或者包括所述多个编码位中的至少三个编码位,并且其中编码位的子集的编码位是 指示位,其中指示位的位值等于第一预定义位值,其中当反演决定指示编码位的子集不应 该被反演时,处理单元被构造为将第一码字的位存储在内存中作为存储字,其中存储在内 存中的第一码字的位包括具有第一预定义位值的指示位,并且其中当反演决定指示编码位 的子集应该被反演时,处理单元被构造为通过经由改变编码位的子集的每个编码位的位值 反演编码位的子集的每个编码位来修改线性纠错码的第一码字以获得线性纠错码的第二 码字,并且被构造为将第二码字存储在内存中作为存储字,其中第二码字包括指示位,指示 位被反演,以使得指示位的位值等于不同于第一预定义位值的第二预定义位值。
[0321] 根据第二方面,当返回参照第一方面时,所述设备是电路。
[0322] 根据第三方面,当返回参照第一方面时,所述编码位的子集包括所述多个编码位 中的所有编码位。
[0323] 根据第四方面,当返回参照第一方面时,所述编码位的子集不包括所述多个编码 位中的所有编码位。
[0324] 根据第五方面,当返回参照第一方面时,所述第一预定义值是第一常数二进制值 bf,其中第二预定义值是第二常数二进制值p,并且其中处理单元被构造为从内存读取存 储字,并且其中处理单元被构造为在读出存储字之后当已从内存中的已存储指示位的位位 置读出的位值等于第二常数二进制值时反演已被直接地或反演地写到内存中的位的子 集的位,并且被构造为当已从内存中的已存储指示位的位位置读出的位值等于第一常数二 进制值bf时不反演。
[0325] 根据第六方面,当返回参照第一方面时,所述第一预定义值是第一常数二进制值 bf,其中第二预定义值是第二常数二进制值p,并且其中处理单元被构造为从内存读出存 储字,其中处理单元被构造为在存储字的一个或多个位错误的情况下通过使用线性纠错码 来校正所述一个或多个位,其中如果至少已被存储在已写入指示位的位位置的位是错误 的,则校正所述位,并且其中在读出存储字之后并且在校正所述一个或多个位之后,处理单 元被构造为当已从内存中的已存储指示位的位位置读出的位值等于第二常数二进制值 时反演已被直接地或反演地写到内存中的位的子集的位,并且被构造为当已从内存中的已 存储指示位的位位置读出的位值等于第一常数二进制值bf?时不反演。
[0326] 根据第七方面,当返回参照第一方面时,所述线性纠错码包括奇偶校验矩阵H,并 且其中奇偶校验矩阵H的列的每个分量的一的数量是偶数。
[0327] 根据第八第六方面,当返回参照第一方面时,所述内存是寄存器或寄存器阵列或 可寻址内存。
[0328] 根据第九方面,当返回参照第一方面时,所述内存是可寻址内存,并且其中处理单 元被构造为通过采用线性纠错码并且通过使用地址位来对所述多个位进行编码以获得所 述多个编码位。
[0329] 根据第十方面,当返回参照第一方面时,所述处理单元被构造为根据编码位的子 集的零的数量或编码位的子集的一的数量确定反演决定。
[0330] 根据第十一方面,当返回参照第一方面时,当在将写值写到内存中之后、在随后从 内存读出写值以获得读值之后并且在比较写入的写值和读取的写值之后未发生错误时,处 理单元被构造为确定反演决定以使得反演决定指示编码位的子集不应该被反演。
[0331] 根据第十二方面,当返回参照第一方面时,当在将写值写到内存中之后、在随后从 内存读出写值以获得读值之后并且在比较写入的写值和读取的写值之后至多发生T个错 误并且其中T小于能够由线性纠错码校正的错误的数量时,处理单元被构造为确定反演决 定以使得反演决定指示编码位的子集不应该被反演。
[0332] 根据第十三方面,当返回参照第一方面时,当在将位的子集的反演写值写到内存 中之后、在随后从内存读出写入的反演写值以获得读值之后并且在比较写入的反演写值和 读取的反演写值之后至多发生与在直接写入和读出的值和写入的未反演值的比较之后发 生的错误一样多的错误时,处理单元被构造为确定反演决定以使得反演决定指示编码位的 子集应该被反演。
[0333] 根据第十四方面,当返回参照第一方面时,当在将位的子集的反演写值写到内存 中之后、在随后从内存读出写入的反演写值以获得读取的反演写值之后并且在比较写入的 反演写值和读值之后至多发生T个错误并且其中T小于能够由线性纠错码校正的错误的数 量时,处理单元被构造为确定反演决定以使得反演决定指示编码位的子集应该被反演。
[0334] 根据第十五方面,当返回参照第一方面时,所述内存是闪存,内存是磁性随机存取 存储器(M-RAM)或者内存是电阻随机存取存储器(R-RAM)。
[0335] 根据第十六方面,当返回参照第一方面时,所述线性纠错码包括生成矩阵,并且处 理单元被构造为通过将具有其系统形式的生成矩阵用于编码来对所述多个位进行编码。
[0336] 根据第十七方面,当返回参照第一方面时,所述线性纠错码是汉明码或截短汉明 码。
[0337] 根据第十八方面,当返回参照第一方面时,所述线性纠错码是Hsiao码或截短 Hsiao石马。
[0338] 根据第十九方面,当返回参照第一方面时,所述线性纠错码是BCH码或截短BCH 码。
[0339] 根据第二十方面,当返回参照第一方面时,所述处理单元被构造为根据编码位的 另一子集确定指示所述编码位的另一子集是否应该被反演的另一反演决定。
[0340] 根据第二十一方面,一种设备包括:处理单元;和内存,其中处理单元被构造为由 具有常数值的1位bf1;...>4补充将要被存储在内存中的地址a的净荷数据位Xl,…,xn, 其中1多1,其中处理单元被构造为利用校正至少1位错误的线性码C将具有常数值的位 和净荷数据位x丨,…,xn编码为码字c丨,…,cm, x1;…,xn,其中q,…,cm 是当从地址位获得的位未被包括用于形成码字时从Xp…,xn确定的校验位,并 且利用校正至少1位错误的线性纠错码C将位bf^.^bfV,,Xl,…,xn,&,…,Ak编码为码字 Ci,…,cm, ,Xi,…,xn,Ai,…,Ak,其中Ci,…,cm是当从地址位ai,…,ar获得的位 A:,…,Ak被用于编码时从bfXp…,xn,Ai,…,Ak确定的校验位,并且Ai,…,Ak = f(ai,???,、)由函数f: {0,1厂一{0,l}k从地址位唯一地确定,其中处理单元被构造为定 义将要被直接地或反演地存储的位Cl,…,cm,bf1; ...>&,Xl,…,xn的位的K个组Yi,…,Yk,以 使得定义的位bf1;的子集被唯一地分派给这些组中的每一组,其中K彡1,其中处理单 元被构造为确定位的组Yi,…,Yk,从而如果组Yj,j= 1,…,K的所有位被反演,则线性纠 错码C的第一码字被变换成线性纠错码C的第二码字,并且其中处理单元被构造为选择组 Yi,…,Yk的位的哪个组被以反演或非反演方式存储在内存中,其中处理单元被构造为在地 址a将位q,…,cm, Xp…,xn写到内存中,其中属于反演地写到内存中的位的组的 位在写入之前被反演,并且不属于其位被反演的组的位被以非反演方式写到内存中,其中 处理单元被构造为读出在地址a存储在内存中的位,其中如果从地址位获得的位未被用于 形成码字,则处理单元被构造为基于线性纠错码C校正至少在已直接地或反演地存储常数 值bUA的位位置从内存读出的位,所述从内存读出的位可能由于错误而不同于写到相 同地址的值,其中如果从地址位获得的位被用于形成码字,则处理单元被构造为基于线性 纠错码C校正至少在已直接地或反演地存储常数值的位位置通过使用从可能错 误的地址位获得的也可能错误的位从内存读出的可能错误的值,其中处理单元 被构造为从通过使用唯一地分派给各位组的线性纠错码C校正的读出的常数值确定位组 是已被直接地写到内存中还是已被反演地写到内存中以及哪个位组已被直接地或反演地 写到内存中,并且其中处理单元被构造为反演已在前一步骤中被确定为其位已在写入期间 被反演的位组的位组的读出并且校正的位。
[0341] 根据第二十二方面,当返回参照第二^^一方面时,k= 1和%,…,Ak) = (&1,… ,aj适用。
[0342] 根据第二十三方面,当返回参照第二^^一方面时,k= 1和六丨=f(ai,…,ar) =ai +a2 +…+aj?适用并且其是地址位81,…,aj?的奇偶性。
[0343] 根据第二十四方面,一种用于将位存储在内存中的设备,其中所述位被利用线性 纠错码C编码,线性纠错码C具有至少3的码距,其中确定利用线性纠错码C编码的位的 子集是被直接写到内存中还是被以逐位反演方式写到内存中,并且其中线性纠错码C包括 H矩阵H,所述设备包括:处理单元;和内存,其中直接地或反演地写到内存中的位的子集包 括至少一个二进制常数值,所述至少一个二进制常数值与用于编码的数据位一起形成线性 纠错码C的码字,其中处理单元被构造为当位的各子集的位被直接地写到内存中时将该二 进制常数值作为二进制值bf写到内存中,并且其中处理单元被构造为当位的各子集的位 被反演地写到内存中时将该二进制常数值作为反演值<&/写到内存中,其中处理单元被构 造为当直接地或反演地写到内存中的位的子集被反演时将线性纠错码C的码字转换成相 同代码的码字,并且形成线性纠错码C的H矩阵,从而与直接地或反演地写到内存中的位的 子集对应的H矩阵的列的每个分量的一的数量是偶数,其中处理单元被构造为当从内存读 出时通过使用线性纠错码C来校正从内存读出的可能错误的位,其中当位的各子集已被直 接地写到内存中时至少校正在已写入常数二进制值bf的位位置的位,或者当位的各子集 已被反演地写到内存中时至少校正在已写入常数二进制值的位位置的位,并且其中处 理单元被构造为在读出之后当已在已存储常数值bf或反演常数值P的位位置读出的校正 值等于时反演已被直接地或反演地写到内存中的位的子集的位,并且当这个值等于bf 时不反演。
[0344] 根据第二十五方面,一种方法包括:使用编码器通过采用线性纠错码来对多个位 进行编码以获得多个编码位,其中所述多个编码位中的每一个具有位值,其中线性纠错码 具有至少 3的码距,并且其中所述多个编码位形成线性纠错码的第一码字,使用处理单元 根据编码位的子集确定指示编码位的子集是否应该被反演的反演决定,其中确定编码位的 子集,从而如果子集的所有位被反演,则线性纠错码的第一码字被变换成纠错码的第二码 字,并且其中所述子集包括所述多个编码位中的所有编码位或者包括所述多个编码位中的 至少三个编码位,并且其中编码位的子集的编码位是指示位,其中指示位的位值等于第一 预定义位值,当反演决定指示编码位的子集不应该被反演时,将第一码字的位存储在内存 中作为存储字,其中存储在内存中的第一码字的位包括具有第一预定义位值的指示位,并 且当反演决定指示编码位的子集应该被反演时,通过经由改变编码位的子集的每个编码位 的位值反演编码位的子集的每个编码位来修改线性纠错码的第一码字以获得线性纠错码 的第二码字,并且将第二码字存储在内存中作为存储字,其中第二码字包括指示位,指示位 被反演,以使得指示位的位值等于不同于第一预定义位值的第二预定义位值。
[0345] 根据第二十六方面,一种方法包括:由具有常数值的1位bf1;补充将要被 存储在可寻址内存中的地址a的净荷数据位Xl,…,xn,其中1彡1,利用校正至少1位 错误的线性纠错码C将具有常数值的位和净荷数据位Xl,…,xn编码为码字 Ci,…,cm, Xi,…,xn,其中Ci,…,cm是当从地址位获得的位未被用于形成码字时从 Xp…,xn确定的校验位,并且利用校正至少1位错误的线性纠错码C将位bfi... ,Xi,…,xn,A:,…,Ak编码为码字c:,…,cm, ,X。…,xn,A:,…,Ak,其中q,…,cm 是当从地址位ai,…,获得的位六1,…,Ak被用于编码时从bfXp…丄乂,…,Ak 确定的校验位,并且Ai,…,Ak = ,…,aj由函数f: {0,lK- {0,1}*^地址位清楚 地确定,使用处理单元定义将要被直接地或反演地存储的位q,…,cm,bf^.^bfV,Xp…,义"的 位的K个组A,…,Yk,以使得定义的位子集被唯一地分派给这些组中的每一组, 其中K多1,并且从而如果位的组的位被反演,则线性纠错码C的第一码字被变换成线性纠 错码C的第二码字,使用处理单元选择组t,…,Yk的位的哪个组被以反演或非反演方式存 储在内存中,使用处理单元在地址a将位q,…,cm, Xp…,xn写到内存中,其中属 于反演地写到内存中的位的组的位在写入之前被反演,并且不属于其位被反演的组的位被 直接地(即,以非反演方式)写到内存中,使用处理单元读出在地址a存储在内存中的位, 如果从地址位获得的位未被用于形成码字,则在h)继续,并且如果从地址位获得的位被用 于形成码字,则在j)继续,使用处理单元基于线性纠错码C校正至少在已直接地或反演地 存储常数值bfv...>4的位位置从内存读出的位,所述从内存读出的位可能由于错误而不同 于写到相同地址的值,在k)继续,使用处理单元基于线性纠错码C校正至少在已直接地或 反演地存储常数值的位位置通过使用从可能错误的地址位获得的也可能错误的 位<4,…,从内存读出的可能错误的值,使用处理单元从通过使用唯一地分派给各位组 的线性纠错码C校正的读出的常数值确定位组是已被直接地写到内存中还是已被反演地 写到内存中以及哪个位组已被直接地或反演地写到内存中,并且使用处理单元反演已在前 一步骤中被确定为其位已在写入期间被反演的位组的位组的读出并且校正的位。
[0346] 根据第二十七方面,一种用于直接地或反演地将形成校正至少1位错误的线性纠 错码C的码字的位的子集直接地或反演地写到内存基元的内存中以及用于从直接地或反 演地存储的从内存可能错误地读出的位读取和恢复写到内存中的位的方法包括:使用处理 单元定义能够被直接地或反演地写到内存中的利用校正至少1位错误的线性纠错码C编码 的位的子集的数量K,其中K多1,使用处理单元提供将要在地址a= ,…,a,被存储为校 正至少1位错误的线性系统码的码字的子字的n个净荷数据位Xl,…,xn,r彡2,使用处理 单元形成线性纠错码C的信息位Ul,…,uN,其中如果地址a未被用于形成线性纠错码C的 码字,贝U由1个定义的二进制值补充数据位,以使得知…,% =bf\,… ,bf\,Xl,…,xn,N= 1 +n适用,并且如果地址a被用于形成线性纠错码C的码字,则由1个定 义的二进制值&;^,...>;^补充数据位Xi,…,xn和从地址位ai,…,a1?获得的位Ai,…,Ak,以使 得~,…,uN =bf\,…,bf^Xi,…,,…,Ak,N= 1 +n+k适用,其中A!,…,Ak = ,… ,aj是由函数f从r个地址位ai,…,aj?的值唯一地确定的二进制值,1彡1和1彡k彡r,d)如果地址a未被用于错误检测或错误校正,则继续执行该方法的步骤e),并且如果该地 址被用于错误检测或错误校正,则继续执行该方法的步骤P),e)使用处理单元形成线性纠 错码C的码字yi,…,yP,其中C是具有系统形式的生成矩阵G和H矩阵H的线性系统码,其 中7 = 71,...,7?=(知...,%)6.=(31,...,。111,匕;^,...,匕;^,叉 1,...,叉11适用并且(31,...,。111111 是校验位,生成矩阵G是(N,P)矩阵并且H矩阵H= (h,…,hP)是([P-N],P)矩阵,以使 得H矩阵的所有列两两不同并且不等于0,并且P=n+m+l,m=P-N,N=n+ 1和 m=P-N适用,f)使用处理单元确定位y:,…,yP =q,…,cm,bf\,…,bf\,Xi,…,K 个子集¥1={71,1,~,71, (11},~义={71^1,"%71^},以使得下面的情况适用 :具有其第一预 定义值的一个位或多个位&;^,...);^被--对应分派给每个子集Yi,…,Yk, 如果yf,…是 位yi,…,yP的二进制值,则4是线性纠错码c的码字,对于j= 1,…,P并且对于具 有K彡q彡1的每个子集Yq,下面的情况适用:如果yj是子集Yq的元素,则,$= 1,并且 如果不是子集?,的元素,则= 0,g)使用处理单元定义位的组\,…,Yk中的哪一组 被直接地或反演地写到内存中,h)使用处理单元形成将要被写到内存中的P位屯,…,dP,其 中对于1,…,P,下面的情况适用:当yi属于其位被反演地写到内存中的组时,七=5,iyi 不属于其位被反演地写到内存中的任何组时,屯=yp使用处理单元在地址a将位屯,…,dP 写到内存中,读取:使用处理单元创建地址a并且读出源自写在地址a的值屯,…,dP的存 储在地址a的由于可能的错误导致的可能错误的值rff,…,0^,使用处理单元定义将要 在错误值的情况下通过使用线性纠错码C校正的将要由线性纠错码C校正的L个位位置 h,…,匕,L彡P并且%,…,kjG{1,…,P},其中已直接地或反演地存储 位位置属于将要被校正的位位置,使用处理单元确定基于线性纠错码C校正可由线性纠错 码C校正的错误的定义的L个位位置&,…,匕的二进制校正值,…,,使用处理单元至 少在已直接地或反演地存储值的位位置形成校正位
其中op是 唯一可逆布尔运算,使用处理单元基于已知的插入值bfV..、bf^P通过使用代码C校正的各 读出值确定位的哪个组t,…,Yk已被直接地或反演地存储,如果y#属于其位已被直接地 写到内存中的位的组,则输出位
并且如果1/~属于已在写到内存期间被 反演地写到内存中的位的组,则输出位
_其中"op"是二进制唯一可逆布 尔运算,并且该方法结束,使用处理单元形成线性纠错码C的码字y=yi,…,yP,其中C是 具有系统形式的生成矩阵G和H矩阵H的线性系统码,其中y=yi,…,yP= (Ul,…,uN) ? G=Cl,…,cm,bf\,…,bf\,Xl,…,xn,Ai,…,Ak适用,生成矩阵G是(N,P)矩阵并且H矩阵H =(h,…,hP)是([P-N],P)矩阵,以使得H矩阵的所有列两两不同并且不等于0,并且P =n+l+m+k,N=n+l+k,并且q,…,(^是!!! =P-N个校验位,使用处理单元确定 位71,一;+1+" 1=。1,一,。"1汕4一汕4叉1,一,叉11的1(个子集¥ 1={71,1,一,71,(11},~,¥ 1?= {y>u,…,yK,qIJ,以使得下面的情况适用:具有其第一预定义值的一个位或多个位bf^.^bfi 被一一对应分派给每个子集Yi,…,Yk,如果yfn 是位yi,…,yp的二进制值,则 是线性纠错码C的码字,对于j= 1,…,P并且对于具有K彡q彡1的每个子集Yq,下面 的情况适用:如果g是子集Yq的元素,则g= 1,并且如果%不是子集\的元素,则% = 〇,使用处理单元定义位的哪一组\,…,Yk被直接地或反演地写到内存中,使用处理单元形 成将要被写到内存中的P_Ididi,…,(4+1+11,其中对于i= 1,…,m+n+ 1,下面的情况 适用:当yi属于其位被直接地写到内存中的组时,di=ypiyi属于其位被反演地写到内 存中的组时,屯=彡纟,使用处理单元在地址a将位屯,…,写到内存中,读取:使用处 理单元创建地址a并且读出源自写在地址a的值屯,…,dn+m+1的存储在地址a的由于可能 的错误导致的可能错误的值rff,…,,使用处理单元定义将要在错误值的情况下通 过使用线性纠错码C校正的将要由线性纠错码C校正的L个位位置匕,…,K,L彡P-k 并且{1^,…,kJGU,???,n+m+ 1 },其中已直接地或反演地存储匕;^,...>;^的位位置 属于将要被校正的位位置,使用处理单元确定可由线性纠错码C校正的错误的定义的L个 位位置h,…,匕的二进制校正值,…# ,使用处理单元至少在已直接地或反演地存储值 的位位置形成校正位
,其中"〇P"是二进制唯一可逆运算,使用处 理单元基于已知的插入值bf\,和读出并且通过使用代码C校正的对应值确定位的哪 个组t,…,Yk的位已被直接地或反演地存储,如果)/&属于其位已被直接地写到内存中的 位的组,则输出位
并且如果属于已在写到内存期间被反演地写到内 存中的位的组,则输出位
其中"0P"是二进制唯一可逆布尔运算,并且该 方法结束。
[0347] 虽然已在设备的情况下描述一些方面,但清楚的是,这些方面也代表对应方法的 描述,其中块或装置对应于方法步骤或方法步骤的特征。类似地,在方法步骤的情况下描述 的各方面也代表对应设备的对应单元或项或特征的描述。
[0348] 本发明的分解信号能够被存储在数字存储介质上,或者能够在传输介质(诸如, 无线传输介质或有线传输介质(诸如,互联网))上传输。
[0349] 根据某些实现要求,实施例的实施例能够被实现于硬件或软件。能够使用存储 有以电子方式可读的控制信号的数字存储介质(例如,软盘、DVD、CD、ROM、PROM、EPR0M、 EEPR0M或闪存)执行实现方式,所述以电子方式可读的控制信号与可编程计算机系统协作 (或能够与可编程计算机系统协作)从而执行各方法。
[0350] 根据实施例的一些实施例包括具有以电子方式可读的控制信号的非暂态数据载 体,所述以电子方式可读的控制信号能够与可编程计算机系统协作,从而执行这里描述的 方法之一。
[0351] 通常,本发明的实施例能够被实现为具有程序代码的计算机程序产品,当计算机 程序产品在计算机上运行时,程序代码用于执行方法之一。程序代码可例如被存储在机器 可读载体上。
[0352] 其它实施例包括存储在机器可读载体上的用于执行这里描述的方法之一的计算 机程序。
[0353] 换句话说,本发明的方法的实施例因此是一种具有程序代码的计算机程序,当计 算机程序在计算机上运行时,所述程序代码用于执行这里描述的方法之一。
[0354] 本发明的方法的另一实施例因此是一种数据载体(或数字存储介质或计算机可 读介质),所述数据载体包括记录在它上面的用于执行这里描述的方法之一的计算机程序。
[0355] 本发明的方法的另一实施例因此是一种数据流或信号的序列,所述数据流或信号 的序列代表用于执行这里描述的方法之一的计算机程序。数据流或信号的序列可例如被构 造为经数据通信连接(例如,经互联网)被传送。
[0356] 另一实施例包括一种处理装置(例如,计算机或可编程逻辑器件),所述处理装置 被构造为或适应于执行这里描述的方法之一。
[0357] 另一实施例包括一种计算机,所述计算机已在它上面安装用于执行这里描述的方 法之一的计算机程序。
[0358] 在一些实施例中,可编程逻辑器件(例如,现场可编程门阵列)可被用于执行这里 描述的方法的一些或全部功能。在一些实施例中,现场可编程门阵列可与微处理器协作以 便执行这里描述的方法之一。通常,这些方法由任何硬件设备执行。
[0359] 尽管已根据几个有益的实施例描述本公开,但存在落在本公开的范围内的改变、 排列和等同物。还应该注意的是,存在许多替代的实现这些方法的方式和本发明的构成。因 此,下面的所附权利要求应该被解释为包括落在本发明的真正精神和范围内的所有这种修 改、排列和等同物。
[0360] 上述实施例仅用于说明本发明的原理。应该理解,这里描述的装置和细节的修改 和变化将会对于本领域技术人员而言是清楚的。因此,应该仅由即将发生的专利权利要求 的范围限制,而非由作为这里的实施例的描述和解释提供的特定细节限制。
[0361] 虽然每个要求仅引用一个权利要求,但本公开也包括权利要求的任何想得到的组 合。
【主权项】
1. 一种设备,包括: 处理单元;和 内存, 其中所述处理单元被构造为通过采用线性纠错码来对多个位进行编码以获得多个编 码位,其中所述多个编码位中的每一个具有位值,其中线性纠错码具有至少3的码距,并且 其中所述多个编码位形成线性纠错码的第一码字, 其中处理单元被构造为根据编码位的子集确定指示编码位的子集是否应该被反演的 反演决定,其中所述子集包括所述多个编码位中的至少三个编码位, 其中当反演决定指示编码位的子集不应该被反演时,处理单元被构造为将第一码字的 位存储在内存中作为存储字,其中存储在内存中的第一码字的位包括具有第一预定义位值 的指示位,并且 其中当反演决定指示编码位的子集应该被反演时,处理单元被构造为通过经由改变编 码位的子集的每个编码位的位值反演编码位的子集的每个编码位来修改线性纠错码的第 一码字以获得线性纠错码的第二码字,并且被构造为将第二码字的位存储在内存中作为存 储字,其中第二码字的位包括指示位,所述指示位被反演,以使得所述指示位具有不同于第 一预定义位值的第二预定义位值。2. 如权利要求1所述的设备,其中所述设备是电路。3. 如权利要求1所述的设备,其中所述编码位的子集包括所述多个编码位中的所有编 码位。4. 如权利要求1所述的设备,其中所述编码位的子集不包括所述多个编码位中的所有 编码位。5. 如权利要求1所述的设备,其中所述第一预定义值是第一常数二进制值bf, 其中第二预定义值是第二常数二进制值,并且 其中处理单元被构造为从内存读取存储字,并且其中处理单元被构造为在读出存储字 之后当已从内存中的已存储指示位的位位置读出的位值等于第二常数二进制值0时反演 已被直接地或反演地写到内存中的位的子集的位,并且被构造为当已从内存中的已存储指 示位的位位置读出的位值等于第一常数二进制值bf时不反演。6. 如权利要求1所述的设备,其中所述第一预定义值是第一常数二进制值bf, 其中第二预定义值是第二常数二进制值ξ?, 并且其中处理单元被构造为从内存读出存储字,其中处理单元被构造为在存储字的一 个或多个位错误的情况下通过使用线性纠错码来校正所述一个或多个位,其中如果至少已 被存储在已写入指示位的位位置的位是错误的,则校正所述位, 并且其中在读出存储字之后并且在校正所述一个或多个位之后,处理单元被构造为当 已从内存中的已存储指示位的位位置读出的位值等于第二常数二进制值^时反演已被直 接地或反演地写到内存中的位的子集的位,并且被构造为当已从内存中的已存储指示位的 位位置读出的位值等于第一常数二进制值bf时不反演。7. 如权利要求6所述的设备,其中所述线性纠错码包括奇偶校验矩阵H,并且其中奇偶 校验矩阵H的列的每个分量的一的数量是偶数。8. 如权利要求1所述的设备,其中所述内存是寄存器或寄存器阵列或可寻址内存。9. 如权利要求1所述的设备,其中所述内存是可寻址内存,并且其中处理单元被构造 为通过采用线性纠错码并且通过使用地址位来对所述多个位进行编码以获得所述多个编 码位。10. 如权利要求1所述的设备,其中所述处理单元被构造为根据编码位的子集的零的 数量或编码位的子集的一的数量确定反演决定。11. 如权利要求1所述的设备,其中,当在将写值写到内存中之后、在随后从内存读出 写值以获得读值之后并且在比较写入的写值和读取的写值之后未发生错误时,处理单元被 构造为确定反演决定以使得反演决定指示编码位的子集不应该被反演。12. 如权利要求1所述的设备,其中,当在将写值写到内存中之后、在随后从内存读出 写值以获得读值之后并且在比较写入的写值和读取的写值之后至多发生T个错误并且其 中T小于能够由线性纠错码校正的错误的数量时,处理单元被构造为确定反演决定以使得 反演决定指示编码位的子集不应该被反演。13. 如权利要求1所述的设备,其中,当在将位的子集的反演写值写到内存中之后、在 随后从内存读出写入的反演写值以获得读值之后并且在比较写入的反演写值和读取的反 演写值之后至多发生与在直接写入和读出的值和写入的未反演值的比较之后发生的错误 一样多的错误时,处理单元被构造为确定反演决定以使得反演决定指示编码位的子集应该 被反演。14. 如权利要求1所述的设备,其中,当在将位的子集的反演写值写到内存中之后、在 随后从内存读出写入的反演写值以获得读取的反演写值之后并且在比较写入的反演写值 和读值之后至多发生T个错误并且其中T小于能够由线性纠错码校正的错误的数量时,处 理单元被构造为确定反演决定以使得反演决定指示编码位的子集应该被反演。15. 如权利要求1所述的设备,其中所述内存是闪存,其中内存是磁性随机存取存储器 (M-RAM)或者其中内存是电阻随机存取存储器(R-RAM)。16. 如权利要求1所述的设备,其中所述线性纠错码包括生成矩阵,并且 其中处理单元被构造为通过将具有其系统形式的生成矩阵用于编码来对所述多个位 进行编码。17. 如权利要求1所述的设备,其中所述线性纠错码是汉明码或截短汉明码,或者 其中线性纠错码是Hsiao码或截短Hsiao码,或者 其中线性纠错码是BCH码或截短BCH码。18. 如权利要求1所述的设备,其中所述处理单元被构造为根据编码位的另一子集确 定指示所述编码位的另一子集是否应该被反演的另一反演决定。19. 一种用于将位存储在内存中的设备,其中所述位被利用线性纠错码C编码,线性纠 错码C具有至少3的码距,其中确定利用线性纠错码C编码的位的子集是被直接写到内存 中还是被以逐位反演方式写到内存中,并且其中线性纠错码C包括H矩阵其中所述设备 包括: 处理单元;和 内存, 其中直接地或反演地写到内存中的位的子集包括至少一个二进制常数值,所述至少一 个二进制常数值与用于编码的数据位一起形成线性纠错码C的码字, 其中处理单元被构造为当位的各子集的位被直接地写到内存中时将该二进制常数值 作为二进制值bf写到内存中,并且 其中处理单元被构造为当位的各子集的位被反演地写到内存中时将该二进制常数值 作为反演值^写到内存中,并且 其中处理单元被构造为当直接地或反演地写到内存中的位的子集被反演时将线性纠 错码C的码字转换成相同代码的码字,并且形成线性纠错码C的H矩阵,从而与直接地或反 演地写到内存中的位的子集对应的H矩阵的列的每个分量的一的数量是偶数, 其中处理单元被构造为当从内存读出时通过使用线性纠错码C来校正从内存读出的 可能错误的位,其中当位的各子集已被直接地写到内存中时至少校正在已写入常数二进制 值bf的位位置的那位,或者当位的各子集已被反演地写到内存中时至少校正在已写入常 数二进制值的位位置的那位,并且 其中处理单元被构造为在读出之后当已在已存储常数值bf或反演常数值&的位位置 读出的校正值等于P时反演已被直接地或反演地写到内存中的位的子集的位,并且当这 个值等于bf时不反演。20. -种方法,包括: 使用编码器通过采用线性纠错码来对多个位进行编码以获得多个编码位,其中所述多 个编码位中的每一个具有位值,其中线性纠错码具有至少3的码距,并且其中所述多个编 码位形成线性纠错码的第一码字, 使用处理单元根据编码位的子集确定指示编码位的子集是否应该被反演的反演决定, 其中所述子集包括所述多个编码位中的至少三个编码位, 当反演决定指示编码位的子集不应该被反演时,将第一码字的位存储在内存中作为存 储字,其中存储在内存中的第一码字的位包括具有第一预定义位值的指示位,并且 当反演决定指示编码位的子集应该被反演时,通过经由改变编码位的子集的每个编码 位的位值反演编码位的子集的每个编码位来修改线性纠错码的第一码字以获得线性纠错 码的第二码字,并且将第二码字的位存储在内存中作为存储字,其中第二码字的位包括指 示位,指示位被反演,以使得指示位具有不同于第一预定义位值的第二预定义位值。
【专利摘要】本发明涉及用于通过数据反演来提高数据存储的设备和方法。一种设备包括处理单元和内存。处理单元被构造为对多个位进行编码以获得多个编码位,处理单元被构造为确定反演决定。当反演决定指示编码位的子集不应该被反演时,处理单元被构造为将第一码字的位存储在内存中作为存储字。当反演决定指示编码位的子集应该被反演时,处理单元被构造为反演编码位的子集的每个编码位以获得第二码字并且将第二码字存储在内存中。
【IPC分类】G11C29/42
【公开号】CN104900271
【申请号】CN201510042539
【发明人】M.格泽尔, K.霍夫曼, T.柯恩
【申请人】英飞凌科技股份有限公司
【公开日】2015年9月9日
【申请日】2015年1月28日
【公告号】DE102015201384A1, US20150212877

最新回复(0)