CN101231891A - 差错控制的方法和存储器系统 - Google Patents
差错控制的方法和存储器系统 Download PDFInfo
- Publication number
- CN101231891A CN101231891A CNA2008100019286A CN200810001928A CN101231891A CN 101231891 A CN101231891 A CN 101231891A CN A2008100019286 A CNA2008100019286 A CN A2008100019286A CN 200810001928 A CN200810001928 A CN 200810001928A CN 101231891 A CN101231891 A CN 101231891A
- Authority
- CN
- China
- Prior art keywords
- row
- storer
- data
- sign indicating
- indicating number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
Abstract
本发明涉及一种差错控制的方法和存储器系统。更具体地,涉及一种双层差错控制协议检测子行层上的差错,并且利用整行码字校正差错。这使系统能读取小段的编码数据,并且在接受它之前检查差错,在检测到差错的情况下,将读取整个码字以便纠错。
Description
技术领域
本申请通常涉及计算机存储器系统的差错控制编码方法,更具体地是涉及仍保持高水平可靠性的情况下,以小于一行的段来访问差错控制编码数据。这种操作模式将被称作子行访问(subline access),其名称来源于计算机存储器系统,其中高速缓存的行(line)具有固定尺寸,即对于IBM系统来说是128字节。考虑这种数据访问模式的一个动机是增加效率;例如允许更多的并行访问,来降低冲突、时延以及节电,虽然根据该应用还可能有许多其它原因来考虑这种选择。
背景技术
代码保护数据免于出错。图1图示了计算机存储器中的数据行,其中阴影部分代表数据,而有空格部分代表冗余符号。为了论述的目的,数据行被拆分成数据子行(sublines),并且在数据子行之中分布冗余符号。当从存储器中读取数据行时,组合的冗余符号被用来提供检错/纠错能力,从而保护数据的完整性。
当读取码字的一部分时,理所应当地认为小段数据仍然应当利用某些检错/纠错能力来得以保护。例如,如图2中所示,该问题的一种普通″解决方案″是使每个子行本身具有整个码字(按照最坏情况)所需的足够纠错能力。这当然会起作用,并且也提供了子行访问间的最大独立性/同时性,在某些情况下其可能变得很重要,但是通常造成需要较大开销的过度浪费。
图3中,图示了DIMM(双列直插式存储器模块)10,其包括并行操作的19个DRAM(动态随机存取存储器)设备,16个储存数据的DRAM设备d1-d16、以及3个存储冗余符号的冗余DRAM设备r1-r3。该图中的每个DRAM设备有总共八个连接到存储器集线器芯片12的I/O(输入/输出)管脚,其通过快速通信通道18与处理器芯片16的存储器控制器14通信,并且每次访问DRAM导致读取或写入在最少八个连续传送期间通过该八个I/O管脚发送的信息。本领域技术人员会认识到以上所述的是最小突发8×8 DRAM设备。图4中可看到以上引用的DRAM设备的传输模式的图示。显然在读操作期间,十六个这种DRAM将提供总共128字节(对于其它情况,利用相似符号还缩写成128B),其为通常在国际商用机器公司(IBM)制造的PowerPC(R)微处理器上提供的高速缓存行。图3中所示的三个DRAM r1-r3被用于存储冗余符号,以便保护存储在其它十六个DRAM中的信息的完整性。
可以如下使用按GF(256)构成的标准[19,16]缩短的里德-索罗蒙(Reed-Solomon)码。通过其八个I/O通道将一个(字节)符号分配给每个单独DRAM传送。所述码被应用于并行的十九个DRAM,以及单独地应用于八个传送中的每一个。图5中图示了该编码方案。本领域熟知这种[19,16]缩短的里德-索罗蒙码具有四个符号的最小距离,因此能够校正任何一种芯片,并且同时能完全检测双芯片差错的存在。
现在假设期望访问64B(64字节)而不是128B的粒度的DIMM中的信息。由于目前PowerPC(R)微处理器中最常见的高速缓存行是128B,也可以说期望进行64B子行访问。参看图6,其中类似参考标记表示图1中所示的存储器系统的类似部件。由于这些DRAM设备具有最小突发长度8,实现这个的自然方式是将提供数据的16个DRAM设备划分成两组,此处指定为组1和组2。在组1中,存储器芯片被指定为c1,1-c1,9,而在组2中存储器芯片被指定为c2,1-c2,10。这两个组与存储器集线器芯片12a通信,该存储器集线器芯片12a接着与存储器控制器16通信。值得注意的是,在DRAM设备的DDR3(双数据速率3)产生中,允许的最小突发长度也是8。这说明所述限制事实是从基本技术参数中启示。
由于专用于冗余度的DRAM设备数目是奇数(在该例子中是三个),无法在两个组间平均分布。在该例子中,组1保留一个冗余DRAM,而组2被分配了两个冗余DRAM。现在,分析利用在每一组上独立应用的缩短的里德-索罗蒙码所获得的可靠性等级。对于组2,可针对DRAM组(如上所述针对所讨论的第一种设置)的每个传送采用[10,8]缩短的里德-索罗蒙码。这使得系统能够校正由该组而引起的任何差错。另一方面,对于组1,只能使用[9,8]缩短的里德-索罗蒙码。本领域熟知,该代码只能检测单个符号差错,因此组1的DRAM设备的可靠性特征是单一芯片差错可被检测到,然而并未被校正。值得注意的是,因为可能有多达两个误差,通过采用两个(而不是一个)DRAM传送对组1使用[18,16]代码不会产生校正单一芯片差错的预期效果,而[18,16]代码只能校正多达一个差错(也就是说,如果期望纠错100%的话)。在DRAM突发的较大部分上应用的较长码具有类似的不便。
以上说明了在有些情况下访问存储器中的较少量数据导致有效可靠性的损失。在访问128B粒度的情况下,存在单芯片纠错和双检错,然而在访问64B粒度的情况下,简单应用独立码导致所述组之一不能校正全部单芯片差错。这不是选择了冗余芯片的总数为奇数的模拟结果。如果选择了总共四个芯片,则易于发现具有128B访问粒度的系统能够进行双芯片纠错,然而64B访问粒度(每组中有两个冗余芯片)将只能进行单芯片纠错。
上述现象随着期望访问的单元变得更小而进一步恶化。再次使用提供了总共四个附加冗余芯片的例子,如果期望访问的单元是32B,则每个32B组只配给一个芯片,并且只得到单芯片检错。
通过以上讨论,经常有这样的情况,即选择访问足够大的行中的信息以使得可靠性不是问题,其反过来会伴随大量缺点。例如,在可以支持并行请求的存储器中,由于较大的行导致存储器中更多资源处于忙状态,原则上可支持的这种请求较少。其它缺点包括,由于存储器中大量资源的启动所导致的增加功耗,和/或增加了连接存储器与使用其的系统的通信信道的使用。近期在处理器芯片中增加更多处理内核的趋势使连接处理器芯片与其存储器子系统的总线负担过大,并且在有些情况下该结果导致用较小访问粒度设计存储器的趋势,其具有以上提到的可靠性缺陷。
以上所做的描述解释了本发明的动机,其中公开了利用特殊的差错控制码和读/写算法加强的存储器来改进上述问题。为了最大化本发明的范围,还公开了在有些情况下产生改进冗余度/可靠性折衷的新颖的差错控制方法。本发明包含了从本申请的码中通常可能期望得到的最优特性的详细说明。利用术语″行/子行″来描述本发明,其中子行是期望的(较小的)公共访问粒度,行是纠错阶段所使用的访问粒度。所利用的差错控制编码技术的一般方面是应用两层编码结构,其中子行的第一层允许可靠的子行访问校正和检测最多为指定阈值的可能差错,然后第二层允许进一步校正所发现的差错。注意到,当前被称作子行的以后可能被称作微处理器中的行,并且所谓的行将需要不同的术语;例如,″行块″。
注意到,在相关的硬盘驱动器存储技术领域中,已经有采用差错控制的大量发明。下面列出并且讨论已知的发明。
由Arvind M.Patel所著的、转让给IBM的美国专利No.4,525,838″Multibyte Error Correcting System Involving A Two-Level CodeStructure″中公开了一种方法,其中利用码的第一层保护小数据块,然后利用共享的、码的第二层保护多个此类小数据块。本发明的引用动机在于常规编码技术在从其结构的代数角度考虑时对码的块长度进行限制。例如,当被用来构成码的伽罗瓦域具有基数q时,已知里德-索罗蒙码具有最大的块长度q-1,并且双倍扩展里德-索罗蒙码只给该块长度增加2。在Patel的存储器应用中,典型应用q=256,在有些情况下会导致不期望的限制。
在由Cox等人所著的、转让给IBM的美国专利No.5,946,328″Method and Means for Efficient Error Detection and Correction inLong Byte Strings Using Integrated Interleaved Reed-SolomonCodewords″中公开了一种方法,其中用多个交错的码字组成的块是这样的,所述码字之一是通过其它码字的特定逻辑和构成。所指出的过程声称进一步增强了存储数据的可靠性,在由Patel专利4,525,838获得的可靠度等级之上。注意到,检错/纠错过程被应用于存储数据块。这是由于本发明的主要动机不提供对数据块的码字的单独访问,而是提供块的集成交织(integrated interleaving),其比由Patel提供的更加高效。
在由Cox等人所著的、被转让给IBM的美国专利6,275,965″Method and Apparatus for Efficient Error Detection and Correctionin Long Byte Strings Using Generalized,Integrated InterleavingReed-Solomon Codewords″中,当自身冗余度不能胜任纠错时,先前的专利5,946,328进一步补充了块内多码字的能力(其得益于共享冗余度)。
在由Asano等人所著的、被转让给IBM的美国专利6,903,887″Multiple Level(ML),Integrated Sector Format(ISF),ErrorCorrection Code(ECC)Encoding and Decoding Processes for DataStorage or Communication Devices and Systems″中,一个扇区中集成交织的想法进一步延伸到多层码,来覆盖集成扇区。注意到本专利中开始生效的术语变化,先前专利中被称作块(block)、现在被识别为扇区(sector)连同其冗余检验字节,并且现在把一组扇区称为块。利用新的术语,本发明的一个显著方面是访问本存储设备存储器的基本单位是扇区(通常512字节),而不是共享冗余度所应用的扇区块,其不同于前面所引用的发明。该特征产生了将单独扇区写到存储设备的问题,其中主要引用的问题是这种单独扇区写操作需要被放在读取参与该整个块的其它扇区的读操作之前,之后是将全部块编码以及写回到存储设备中。这被称作″读-修改-写″(RMW)问题,并且被强调为可能降低硬盘性能的不期望的问题。Asano等人所著的专利通过其多层编码解决了该问题,从而在有些情况下较高层保护被禁用,但是较低层编码(例如,由先前专利讨论的扇区内的编码)保持了某个水平的可靠性。Asano等人所著的专利的另一个方面是,为块计算的冗余检验字节仅利用扇区层上的检验字节的某些累加和(与扇区的实际数据内容相反)来计算,其被称为关键特征,其通过避免校验计算期间提供全部扇区数据而提供高性能的驱动性能。
应当看到,本发明的优选实施例与用作计算机系统中的存储设备的第一主要层的存储器有关,虽然存储器也适用于微处理器高速缓存及其他设置。同样地,不同考虑具有同样本质。除那些已经声明的以外,在本发明的一个方面,编码技术使存储器具有执行高效读-修改-写操作的能力。在本发明的另一方面,公开了具有所希望性质的新颖的差错控制编码技术,其具有第二层码的最小距离可以超过的第一层码的最小距离两倍(码的最小距离是一个技术术语,其通常被用于描述代码的纠错能力的一个重要方面),并且付出最小可能的理论成本,就分配冗余资源而言。在本发明的第三方面,在普通系统操作期间采用子行访问,而在众所周知的″存储器刷擦(memory scrubbing)″的进程期间采用行访问,从而后台系统进程周期性地扫描存储器以读取并且回写内容,从而防止存储器中的差错积累。
发明内容
根据本发明,提供了双层差错控制协议,其中通过专有冗余度在子行层上检测差错,并且利用整行的总冗余度校正差错。例如,系统通常可读取编码数据的小段,并且在接受其之前仅检查差错,在检测到差错的情况下,将读取整个码字以便纠错。例如,在差错非常少并且持续差错被记录以及通常在有限时间内被服务的情况下,这对存储器系统更有意义。在另一个类似例子中,当仅在接收到全部码字之后解码数据时,当检测到小段数据中的差错时,系统可进入具有较长延迟的更″警惕″模式;以及在一段时间内未检测到差错之后,恢复到更″主动″状态以便按子行模式读出数据。这对具有独特的″好″和″坏″状态以及强时间相关的通信链路更有意义。
主要关心的一个问题是实现了″本地″和″全局″差错控制能力与码的总开销(冗余度)之间更好权衡。为简单起见,关注随机差错与保证纠错,因此关注最小(Hamming)距离与代数结构。
附图说明
通过以下结合附图对本发明的最优方案进行的详细说明可以更好地理解上述和其它目的、方面和优点,其中:
图1的存储器芯片图示出了数据行和检错/纠错码字;
图2是为了检错/纠错数据的每个子行,利用足够多码字将数据行分割成子行的图示;
图3是由十六个数据DRAM设备和三个冗余DRAM设备组成的存储器系统的模块图;
图4是在访问期间×8、突发8的DRAM的输出示意图;
图5是并行DRAM设备的传输模式的示意图(只示出一部分);
图6是图1中所示的存储器系统的模块图,其中DRAM设备被分成两组;以及
图7是说明将DRAM设备组织成两组、子行1和2的定位以及组1和2中的每一个的冗余符号位置的模块图。
具体实施方式
为了描述本发明的最优实施例,将基于上述背景技术部分中的讨论,保持假设利用离散DRAM设备建立存储器系统,封装成DIMM,并且其中每个DRAM是一个x8、突发8设备。如上所述,对于图3中所示的设计,来自DIMM的读操作产生128B的数据供应,但是未包含存储的冗余度。现在假定希望以64B粒度访问消息。为实现这一点,将采用图6中的交替DIMM结构,其中可以在任意规定时间访问DRAM设备的两个独立组,并且其中组1具有一个附加冗余芯片,而组2具有两个附加冗余芯片。在该例子中,行长度为128B,而期望的子行长度为64B。一般说来,如果读取或存储存储器中子行的数据的请求可以利用较少数量的(相对于对包含该子行的较长的行的请求)资源来实现,则可以说所述存储器拥有子行访问。通常,存储器或用于访问它的机制需要被明确设计,以便允许这种子行访问。在该例子中,通过该特殊的DIMM结构(连同其分割总线一起),在子行读取期间而不是在行读取期间激活大约一半DRAM设备,因而实际上该存储器具有子行访问。注意到,如果乐于支付额外总线的代价,则在利用DRAM设备建立存储器中获得相当小的访问粒度是可能的。
取代利用两个独立代码(各自应用于组1和组2),将采用如图7所示的、其奇偶校验矩阵可被写成H=[H1,dH1,rH2,dH2,r]的差错校正码,其中α表示GF(256)的基本元素。图7中还指明,为组1和2的码字的符号所做的分配,以及将传送冗余信息的符号的选择。有时根据诸部分是否与组1或组2有关、以及该部分是否与分配给数据的码字中的符号或冗余校验符号有关,来引用诸部分是方便的。图7中示出了该划分。
熟悉差错控制码理论的读者会认识到上述矩阵以非系统形式存在,其中不能立即从矩阵结构中看出:给定希望存入存储器中的信息,如何选择冗余符号,使得标准奇偶校验公式Hc=0成立。为了有利于讨论,码字c有时会被写成(c1,1c1,2c1,3,...c1,9,c2,1c2,2c2,3,...c2,9,c2,10),其中标记使得何时一个符号属于组1或组2清楚。此外,假定c1,9是组1的冗余符号,而(c2,9,c2,10)是组2的冗余符号。
从等式Hc=0中明显得知,利用
组1的冗余符号可以立即从相关信息符号中计算出。
考虑到该冗余符号的值完全由该组的用户数据符号确定,可以说该冗余符号是专有的。该计算之后,可以如下计算c2,9和c2,10。令b表示除了c的最后两个元素(即,除去c2,9和c2,10)的所有元素。因为我们知道了两个组的信息符号以及第一个组的冗余符号,所以此时完全得知b的值。可以容易地知道
以上所述表示了三个线性方程,但是第一个是无用的,0=0。可以检验其它两个等式具有唯一解,利用众所周知的技术可以容易地获得所述解。由于这两个冗余符号的值原则上取决于两组中的每个用户数据符号,所以称其为共享的冗余符号。这完成了有关给定一对8B数据块如何计算三个冗余符号的讨论。
码是一组全部具有相同长度的符号向量。属于码的符号向量被称作码字。当读取来自一个组(但不是任何其他)的全部符号时,所得到的向量被称作次要码(minor code)的码字(假定得到的数据和冗余度没有差错)。不同组可能与不同的次要码有关。实际上,在该例子中,由于两个次要码的块长度明显地不同(其中之一具有块长度9,另一个具有块长度10),所以所述两个次要码是不同的。为了简便起见,与一行中的全部子行相关的次要码的整体称作为″第一层码″。类似地,如果读取全部组的全部符号,则所得到向量是″第二层码″的有效码字。该码显然由整个奇偶校验矩阵H来定义。我们还说第一层码(给每一子行)提供了本地保护,而第二层码给整行提供全局保护。
能够显示任意一个次要码具有最小距离2,而全部码具有最小距离3。因此,当将该码应用于所讨论的存储器存储问题时,当得到两个组中的任一个(但不是另一个)时,能够进行单芯片检错,而当得到两个组时,能够进行单芯片纠错。
上述发现启发了下列子行读操作的两层协议:
a)只读相应组的信息,
b)通过利用第一层码检查组中的差错存在,以及
c)如果发现差错,读取其余码字,并且利用第二层码尝试校正差错。
根据其出现频率,可以分类存储器中的差错。作为存储器某些部分(例如I/O信号驱动器)永久物理损坏的结果的差错有如此高的出现频率,以致系统可以识别它,并且采取适当操作将其从系统中移除。实现它的一种技术将受影响的(被差错控制码校正的)数据复制到备用DRAM芯片。另一种技术只是通过外部干预简单地替换出现故障的DIMM。
作为以上所述的结果,在正常系统操作期间差错是很少的。由于这一点,本发明所公开的两层协议导致绝大多数读取利用子行操作成功地提供服务,所述子行操作是本发明声明的目标之一。作为例示,图5示出了该存储器可以服务于不同地址处的两个并行读操作的事实。
存储器系统有时利用一种被称作″存储器刷擦″的技术来增强,该技术定期地扫描存储器、读取存储内容并且如果在存储器总发现差错时校正(以及回写校正数据)。这样做是防止系统中的差错积累。本发明的一方面是,刷擦不是利用子行操作,而是利用行操作。具体地说,相对于第二层码的冗余度来解释整行以测试差错,这在第二层差错控制码的纠错能力远远优于可用的第一层码的检错能力的例子中是有利的。例如,双重差错可能存在于子行中,第一层码不能检测它、但是利用第二层冗余度可以检测及校正它。
可用于该存储器的另一策略是不仅进行检错,而且利用第一层码尝试某种程度纠错(如硬盘存储技术应用中的一些现有技术所实现的)。例如,扩展汉明码可被用作第一层码,以便利用第一层码进行单比特差错校正,同时检测双比特差错,但是依赖于第二层码来校正双比特差错。
现在关注执行写操作的问题。此处的基本问题是改变任何一组中的即使一个符号也可以影响两个组中的冗余符号。结果,写操作比读操作更加复杂。然而,当考虑读操作与写操作的数量的典型比率时,仍可通过本发明而改善整个系统操作。
首先讨论对存储器执行读-修改-写(RMW)的操作,因为这是理解写入问题的基础,并且还具有独立的兴趣。为此,假如请求对第二组(具有两个冗余校验的)执行RMW。在这种情况下,无论怎样都无需改变第一组。
RMW请求之前的存储器的内容被表示成(c1,1c1,2...c1,8c1,9c2,1c2,2...c2,8c2,9 c2,10)。RMW请求之后存储器的内容被表示成(c1,1c1,2...c1,8c1,9a2,1a2,2...a2,8a2,9a2,10)。我们的任务是仅通过已知的、读操作期间得到的(c2,1c2,2...c2,8c2,9c2,10),以及(a2,1a2,2...a2,8),即将被存储在存储器中的新数据,来选择(a2,9a2,10),。下式对旧数据成立:
期望下式对新数据成立:
注意到两个等式中第二个括号中的表达式是完全一样的。从该等式中,可以得到公式:
该公式表示了三个线性方程,但是第一个是平凡的,0=0。其它两个等式可被容易地求出a2,9和a2,10,其为旧符号c2,9、c2,10的新数值。注意到,这些符号是共享冗余度的事实不意味着为了更新它们需得到参与它们计算的全部数据符号。这是由于某些符号(在这种情况下组1的)不改变其值,并且可以利用上面描述技术来避免其取回。
注意到,在原理上可能简单地发送″差动更新″
给存储器设备并且使存储器设备在内部计算冗余符号的新数值(如果存储器被构造成能够做这项工作的话)。在这个条件下,不需要物理传送(c2,9,c2,10)到一个单独位置来计算新冗余符号值。虽然这一事实看起来是琐碎的,但是支持这些一般操作类型的基本存储器技术改进可能对支持类似本发明中所描述的差错处理模式说来是重要的(当讨论对组2的操作时将做更详细的描述)。
另一个值得注意的地方是如果事先知道差分(c2,1-a2,1,...c2,8-a2,8)的值,并且如果存储器被配备成执行上述的微分更新的话,则不必物理传送旧值c2,1、...、c2,8到存储器设备外部。将所述差发送给存储器并且指出更新应当是微分的事实会具有预期效果。
在有些情况下,可以构成伽罗瓦域(Galois Field),使得″+″操作只不过是逻辑XOR操作。因而,上述的微分更新会特别容易地完成;允许通过接收比特模式并且将所接收的比特模式与所选择的数据内容进行XOR操作来更新其信息内容的存储器应当被称作XOR更新存储器。
这证明了对组2的RMW操作可严格地利用子行操作来执行。
现在讨论如何对组1进行RMW操作。在这种情况下,改变来自组1的八个数据符号中的任何一个需要不仅更新组1的冗余符号,而且还要更新组2的冗余符号。利用前面那样的类似标记,RMW请求之后的存储器的内容被表示成(a1,1a1,2...a1,8a1,9c2,1c2,2...a2,9a2,10)。在这种情况下,下面等式通过(a1,9、a2,9、a2,10)的适当选择必须被满足
实现这一点有两种方式。第一种方式是简单地读取c2,1、c2,2、...、c2,8并且按标准方式编码,因为现在可能已访问了希望存入存储器中的用户信息的全部16B。在根据本发明的新方法中,利用如下事实
仅利用组1中的存储器内容的新旧值之差,可以反置左乘第一个向量的3×3矩阵来求出冗余符号所需的微分更新。因而,事实上根本不需要取回c2,1,c2,2,...c2,8。从第二组中取回c2,9和c2,10(除了从第一组中取回全部信息以外)实际上就足够了(这种取回模式被本节开始时所描述的特殊DIMM配置所允许)。在写入期间更新共享的冗余符号的这种技术通常可被扩展,并且在后续讨论中将被称作微分写入。关键特性是,数值上没有改变的存储数据不必为了更新共享冗余度而被读出。此外,XOR更新存储器设备的可用性会更利于组2中的冗余符号和/或实际新数据以及组1的冗余符号的更新。
这完成了有关如何进行组1和2中的子行RMW操作的讨论。至于写操作,如果不知道存储器内容的旧值(为编码讨论的目的,其将“写”有效转换成“RMW”),然后在一种实现中,每个子行写需要放在从存储器读出子行之前。因而,写操作有效地变成RMW,并且当使用如上所述微分RMW技术时,将写称作微分写。
用于以子行读出和写入存储器(然而保持高水平可靠性)的方法可被扩展成比如上所述明显更通用的情况。尤其是,共享冗余符号组的数量可比2大。在提供的例子中,组1中的冗余符号被称作是专有的,其数值通过仅知道组1的内容就可被单独设置,组2中的冗余符号被称作是共享的,这是因为任一组中的变化需要被反映在这些冗余符号的变化中以保持一个有效的整体码字。
一般地说,在两个或更多组的通用差错控制编码方案中,如果组内容完全由存储在相关组中的用户数据的内容来确定的话,则组中的冗余符号被称作是专有的,否则是共享的。注意到,共享标记不意味着共享符号只能在从存储器中读出影响这些共享符号的全部信息时被解释。为了进一步说明这一点,注意到组2中的共享符号可以连同组2中的其余符号一起被读出,并且结果是具有最小距离2的码,其足以进行单符号差错检测;然而不必读出两个组的全部信息以便共享符号有效地用于检错。
通常,可以有被分配共享符号的许多组。例如,在对称情况下,全部组可以具有相同数量冗余符号,并且其全部可被指定为共享的。在这种情况下,写操作也变成对称的,其中任意组的变化通常导致全部共享冗余符号都需要更新。
下面提出将微分RMW技术扩展到多个组(其为微分写技术的基础)。在本部分中挑选奇偶校验矩阵作为差错控制码,其被导出并进一步证明,读者可参考结构1和定理6。
对于奇偶校验矩阵Hb,选择了里德-索罗蒙(Reed-Solomon)码。这保证了参考上述结构1和定理6所描述的码Ca和Cb是最大距离可分的,如在一个单独部分中所示的,其转化成整体双层编码结构的某种期望的最优特性。选择Hb为里德-索罗蒙码带有约束n必须小于q,其中n是存储在一行中的数据符号加上冗余符号(第一层码和第二层码两者)的总数,q是用于构成所述码的伽罗瓦域的基数。可被存储在该存储器上的信息总数于是将取决于期望的可靠性参数da、db和期望的组数量M,以及需要被存储在任意指定组中的用户数据的数量,将用k(以伽罗瓦域符号为单位计数)表示,除了最后一组,如我们将看到的。
上述结构不规定码字的哪个坐标如何属于数据而不是冗余度;实际上其甚至允许不同的次要码块长度。假定最后组(用M标记)不包含任何用户数据,而是包含全部共享冗余符号;相应地将其称作共享冗余度组。相应地,第M组的块长度需要被调整,使得其等于db-1。至于第一个M-1组,在每个组内总块长度将等于da+k-1,其中如上所述,k是期望存储在每一组中的用户数据符号的数量。
为了描述微分RMW技术,写成
其中Hba (1)表示Hba的第一个da+k-1列,而Hba (M)表示Hba的最后da-1列。现在假定向量c被存储在存储器上(c表示行的内容以及其第一和第二层冗余校验)。首先假定c没有任何差错,因而奇偶校验公式Hc=0成立。假定没有任何一般性损失的情况下,期望更新第一组的内容。为此目的,分割成
c=[c1 c2,...M-1 cM]T
其中c的划分符合为Hb定义的划分。新存储器内容被表示成
[a1c2,...M-1aM]T
其中a1表示来自第一次要码(其本身包括用有效第一层码补充的第一组中的用户数据的新内容)(或同等次要码)的冗余校验符号的新码字。注意到,这种第一层码检查符号的计算对于差错控制编码领域中的技术人员来说是一种简单练习。前面,aM表示共享冗余校验符号的新值;其为需要计算的值。
如前面例子所述,由于上述两个向量是码H的有效码字,下式必须被满足:
此外,第M组的次要码奇偶校验公式表示
由此,容易知道
左侧矩阵是具有(db-1)×(db-1)维的方形矩阵。通过结构的选择,可以表明矩阵是可逆的,由此存在aM的唯一选择并且通过这种方式可被计算。注意到,为了执行上述计算,不必知道表明关键微分RMW特性的c2,...M-1。如此导出用公式表示aM被称为微分RMW公式。当M明显较大时,通过读出和写入子行而非整行,上述过程可能产生(例如)显著的能源节省。通过如先前描述将其转换成RMW得到写操作。注意到,在上述结构中,第M组还可以相对于其余组被隔离地读入,并且可检测差错,最多为指定的最小距离da。
这是允许处理可能在共享冗余度组中出现的差错的重要特性。怀着这个目的,针对这种规定的子行RMW操作可被概括如下:
1)读取包含将被修改子行的组。
2)读取共享冗余度组。
3)确定以上读取的两个组中的任意一个是否存在差错。如果存在差错,读取整行(连同其第一和第二层冗余度一起)并且校正差错。更新该子行并且回存整行。
4)如果没有差错,利用微分RMW公式计算共享冗余度组的新值,并且修改存储器中的子行和共享冗余度组。
假定拥有共享冗余符号的特殊组利用允许多个并行读/写操作的存储器被物理实现。为简单起见,假定存储实际(非冗余)信息的存储器仅允许每组一个读或写操作。则,原则上(假定共享冗余度存储器有充分高水平的并行性),可于任意给定时间对不同组执行多个写入,所述假定的并行能力支持对共享冗余符号的更新。此外,由于专有冗余度不受写操作影响,可以对不执行写入的组执行多个读取。
注意到,在接下来的部分中,先前公布的双层编码结构仅在受约束的情况下满足某种期望的最优特性。因此,本发明公开了新的差错控制码(例如由以上结构1证实的)以及其应用于子行访问的当前问题。同样在结构2中,证明了一种技术,其在某些实例中对于结构1所不能产生任何码的参数选择允许获得最优码;尤其是解决了规定结构1中的字段长度必须足够大的约束。
描述差错控制码的一种普遍接受的方式是给出其奇偶校验矩阵H。这是由于这种矩阵准确地标识哪个向量是码的有效码字;即,如果线性方程Hc=0成立的话,向量c是有效码字。在解释本发明时,注意到,指定的差错控制码原则上准许多个奇偶校验矩阵作为其有效码字的表征。尤其是,矩阵的任何指定行乘以公因数、或将矩阵H的一行加到另一行无论怎样都不改变作为码的有效码字的向量组。当一个矩阵H′可以通过一个或多个行相乘和/或行相加而从另一个矩阵H中获得时,则称这两个校验矩阵等价。
根据本发明,将通过差错控制码的校验矩阵的一种特殊形式公开新颖的差错控制码,认识到相同码可用等价校验矩阵来描述。码的这种替代表示不代表实质背离本发明。描述中将用到的一个概念是最大距离可分(Maximum Distance Separable,MDS)码,其为差错控制编码领域中所熟知的技术术语。最大距离可分码是一种在指定冗余校验符号数量的情况下获得最大可能码最小距离的意义上的最优码。众所周知任何里德-索罗蒙码都是最大距离可分的。
还注意到,两层编码结构的本应用不必被限制于存储问题。特别的,通信系统也可以受益于这种结构,例如数据流的高速传输可通过仅对当前称作子行(即可能是传输总线的一部分)的执行局部检错,然后对次级、较慢模式执行纠错而获得。以上会有如下好处:在大部分关联的操作(假定相对干净的关联)期间,采用较低复杂度和低时延编码结构,而仅在特殊情况下借助于更复杂和费时的过程。
差错控制码的一般结构
令C为大小q的字母上的长度n的码(不必是线性的)。C的维数为k=logq|C|,而C的冗余度为n-k。C的最小(Hamming)距离为 称C为[n,k]码,或[n,k,d]码,作为其基本参数的方便参考。C的每个码字包括n个符号。令其由1,2,...n索引。表示成[n]={1,2,...n}。假定Ii[n],i=1,...M,令M次要码、Ci=C(Ii),i=1,...M,被定义为C在Ii中的坐标上的投影。令ni=|Ii|,并且表示为 使得 则上述定义表示 当且仅当有c=(c1,...cn)∈C,使得对于所有 用di表示Ci的最小距离。有时,称C的码字为行,而Ci的码字为子行。因而Ci也会被称作子行码。在本节中,如果没有″T″下标(其代表转置)标记的话,假定所有向量都是行向量。这样,向量a是一个行向量,而向量aT是一个列向量(即向量a的转置形式)。这种约定不同于本说明的先前部分中所采用的约定。
给出以上定义,问题是为什么不用一层编码?
证明.考虑下列试验。取C的一个码字,从IM的I2,...dM-1的I1,d2-1索引的那些符号中,除去d1-1个符号。对于所有i来说,只要|Ii,∪j<iIj|≥di-1成立,这就可能。现在,根据定义,自I1的d1-1个清除可以利用C1来校正,此后自I2的d2-1个清除利用C2来校正,等等,直到所有清除被校正。利用单界(Singleton bound),必须有∑i(di-1)≤r。最后,注意到,如果条件|Ii,∪j<iIj|≥di-1不能对全部i满足,则可尝试重新标记Ii,并且只要一个起作用就得到相同的不等式。
定理中的信息是除非次要码具有相当显著的重叠,最小距离的总和将由利用不相交次要码(依据Ii的不相交)所能实现的来约束。一个自然的问题是是否通过采用次要码间的中等重叠,可在次要码的最小距离获得足够多,使得子行访问无需使用双层编码方案而节省资源。
用公式表示该问题。假定所有次要码具有相同的长度ni=n1,以及相同的最小距离di=d1。不失一般性,假定∪iIi=[n]。在定理1的体系中,存在d1≤r/M+1。已知如果具有足够重叠,可能仅仅由d1≤r+1来约束。取决于想的到多大的d1,应该知道这对于n1意味着什么。
定理2.如果d1>r/m+1,其中m∈{2,3,...M},则
证明.考虑定理1的证明中所做的试验,其中从由Ii,∪j<iIj索引的坐标中除去min{d1-1,|Ii,∪j<iIj|}个符号。这种清除模式可以利用C1,C2,...CM来成功地解码。通常这意味着,
为便于表示,定义 ∪j<iIj。令 以及m′=|A|,则得到
因此,
定理2的结果可被如以下推论改述。
推论1.如果d1>r/M+1,则
定理2的原则是重叠不起作用。假定r/m+1<d1≤r/(m-1)+1。则忽略整数影响,定理2的下界由编码m-1个不相交次要码获得,每个具有冗余度(假定字段长度足够大)。则通过复制m-1个中的任何一个M-m+1次,得到M个次要码。
可选解释如下。再次,假定r/m+1<d1≤r/(m-1)+1。得到
换言之(推论1中也明显得知),
由此可见,对于给出的行长度(n)和全冗余度(r),存在子行码长度(n1)和子行最小距离(d1)之间的折衷。折衷是这样的,使得至少在约束中,子行(即,d1-1)的″有效冗余度″按最大比例增长到n1。即,要得到两倍的有效冗余度,子行码必须有至少两倍长度。这意味着始终同样可以对不相交集利用单独编码的次要码进行计算。
本节的结论是,经济的子行访问对于码的单″层″来说是相当无希望的,按照自然解决方案的需要不会导致至少相同的开销损失。
这激发了改变模式的需要,即使用双层编码方案,其中总开销通过减少到刚好够检错并且必要时使某些全局冗余度被所有纠错的子行共享来降低。由于差错是罕有的(如其在存储器系统中),所以大部分时间里(当没有检测到差错时),子行访问是可能的,其会具有先前所概况的好处。
对冗余度距离折衷的约束
在一个双层编码设置中,对r,d,与di,i=1,...M之间的折衷感兴趣。为简单起见,假定对于所有i,di=d1,并且所有次要码是不相交的。得到以下定理。
定理3.如果d≤maxini+1,则
r≥d-1+M(d1-1).(1)
证明.由于d≤maxini+1,在定理1的证明中所描述的过程中,取而代之可以在最后一步中除去d-1个符号。
上述约束可归纳。
定理4.
证明.类似于定理3的证明,但是注意到,通常可以在某些(M-(d-1)/n1-1)子行码中的每个中的除去(d1-1)个符号,在某些其它(d-1)/n1」子行码中的每个中的除去n1个符号,以及在其余子行码中选择(d1-1)或((d-1)mod n1)个符号。
当不受限于在其上定义码的字母的长度时,定理3和定理4是相关约束。然而,当字母长度较小时,其它约束变得重要,例如,以下给出球状填充型约束。
假定C可校正多达t个差错,并且每个子行码Ci可校正ti个差错。为简单起见,假定对于所有i,ti=t1。
定理5.有
其中
为具有半径t的GF(q)n中的Hamming球的体积,PM(i)为其分量全部小于或等于t1的i的M-方式排序的整数划分的集。
证明.围绕C的任何码字的专用区域至少为半径t的Hamming球,加上某些距离码字大于t的汉明距离处的额外区域,但是由于子行码的纠错能力,其必须不算任何其他码字附近的相似域。
码结构
如果在其上定义的字段长度足够大,结果可以相当容易地获得(1)。一个这种结构如下所示。顺便告之,应当始终要求∪iIi=[n],使得共享冗余度也被次要码保护。并且不失一般性,假定Ii={∑j<inj+1,...∑j≤inj}。每当论及奇偶校验矩阵时,除非另作说明,假定具有全部行秩。
结构1.令Ca和CbCa分别是长度n,以及最小距离da和db的线性码。令Ha为Ca的奇偶校验矩阵,以及
为Cb的奇偶校验矩阵。如果写成
其中H(1) a包含第一n1列,H(2) a包含下一个n2列等等,则C由以下奇偶校验矩阵构成:
定理6.对于结构1,所有次要码具有至少为da的最小距离,并且C具有至少为db的最小距离。
证明.从H的形式看出,显然所有Ci,i=1,...M,为Ca的缩短版本子码。显然C为Ca的子码。
推论2.如果Ca和Cb两个都是MDS码,并且对于所有i,ni≥da,则由结构1给出的码实现等式(1)的约束。
证明.对于所有j,
因此,对于所有i,d=db,di=da,并且
d=r+1-(M-1)(d1-1).
为了实现(1)的约束,结构1要求长度n以及最小距离d的线性MDS码的存在,其意味着字段的长度q不能小于n很多。对于里德-索罗蒙码(及其单和双倍扩展),需要q≥n-1。
如果没有非常大的字段长度,可设法做类似的事情。一种非常相关的码类被称为集成交织(integrated interleaving),随后将描述。不失一般性,假定对于所有i,ni=n1。假定GF(q)上具有两个n1长度线性码CaCb,分别具有维数ka>kb,以及最小距离da<db。如果Ha为Ca的奇偶校验矩阵,Hb为Cb的奇偶校验矩阵,而且
则C的奇偶校验矩阵可被写成
其中I为M×M单位矩阵,M<q,表示直积(Kronecker product),以及
其中α为GF(q)中的原根,并且1≤B<M。
可以表明C为具有最小距离d=min{(B+1)da,db}的[Mn1,(M-B)ka+Bkb]码。如果依照(1)检查这些参数,可得知当且仅当Ca和Cb两者都是MDS,B=1,并且d=db时,集成交织将利用等式实现(1)的约束。尤其,如果期望d>2da,则集成交织在不能实现(1)的约束这个意义上不是最优的。
实质上,要形成C的码本,集成交织将M个Ca的码字并排放在一起,然后通过要求较短码字的某种加权求和必须处于Cb中,从码本中删除所有这样(较长)的码字。值得注意的是,进行删除使得始终存在具有权重(B+1)da的码字。更准确地说,如果γΓ*=0,并且c a∈Ca,则γc a是C的码字。注意到,γΓ*=0,当且仅当γ是[M,M-B]RS码(由奇偶校验矩阵Γ定义的)中的码字。因此,C具有权重(B+1)d1的至少 码字,其中Ada是Ca中的最小权重码字数量。
要知道为什么也许能做得更好,首先考虑最简单的情况,其中M=2,B=1。在这种情况下,集成交织结构的奇偶校验矩阵是
显然,如果c 1,c 2∈Ca具有相同的Hba出错位组(Hba-syndrome),则(c 1,-c 2)∈C。尤其,这允许Ca中的最小权重码字配对。直观上,宁愿保持那些(c 1,c 2)对,使得当c 1具有低权重时,则c 2具有较大权重,或至少是类似的权重。由观察可知,取而代之,构造C要遵照以下奇偶性检验约束:
其中Q是满秩方阵。Q允许配对处于Cb的不同陪集(coset)中的Ca的码字,而不是相同的陪集中的那些码字。在某种意义上,其“扰乱”了陪集关联,使得可以期望具有类似于turbo码上具有的交错器的″频谱稀释″(spectrum thinning)作用。
通常,如下构造。
结构2.令Ca和CbCa是长度n1的GF(q)上的线性码,以及最小距离分别是da和db。令Ha为Ca的奇偶校验矩阵,以及
是Cb的奇偶校验矩阵。构造的码C由以下奇偶校验矩阵给出:
其中Qi,i=1,...M-1是满秩方阵。
定理7.对于结构2,有
min{db,2da}≤d≤db,
di=da,i,
r=rb+(M-1)ra.
证明.要给出对d的约束,首先注意到,对于所有i,
是Cb的奇偶校验矩阵。现在,如果C的非零码字仅在一个次要码中具有权重,则其权重必须至少是db。如果C的非零码字在m>1个次要码中有权重,则其权重必须至少是mda。另一方面,由于之后全部是0的Cb的任何最小权重码字是C中的码字,C的最小距离不能大于db。
为表明对于所有i,di=da,对于所有i,Ci=Ca足以。显然,CiCi。注意到,相应于qrbHb-出错位组,GF(q)n1被分成Cb的qrb陪集。有此看出,其相应Hb出错位组始于ra个零的那些陪集形成了Ca的集划分。以上的观察示出相应于任何Hba出错位组,在Ca中存在(相等数量的)码字。结果,对于所有c∈Ca,,以及i≠j,存在c’∈Ca,使得 (假定Q0为一致性的单位矩阵)。因此,C中存在一种码字,其到第i个次要码的投影是c,到第j个次要码的是-c’,到所有其它次要码的是零,其意味着c∈Ci.
有关r的要求直接遵循所述结构。
推论3.结构2实现(1),当且仅当d=db,并且Ca和Cb都是MDS码。
尤其,如果5,则只要Ca和Cb是MDS,结构2就可实现(1)。回忆在这种情况下,集成交织(B=1)也可实现。
尤其是,如果db>2da,则d≥2da(在这种情况下,注意到对于集成交织d=2da)。但是结构2怎样接近界限不是很清楚。作为出发点,以下定理对当且仅当结构2可实现d>2da时给出条件。
定理8.对于结构2,如果d>2da,则
其中Ada是Ca中的最小加权码字的数量,ra和rb分别是Ca和Cb的冗余度。
证明.令Q0为(rb-ra)×(rb-ra)单位矩阵。令 注意到,对于所有i≠j,Si∩Sj=,对于一些c 1,c 2∈Ca,wt(c 1)=wt(c 2)=da,假设 为真,并且0≤i<j<M,则
其中每个0是全部为零n1行向量会是具有权重2da的C中的码字。通过定理7还应当注意,db>2da。这样,Ca的全部最小权重码字是Cb中的可校正差错模式,所以一定具有不同的Hb出错位组,并且由此不同的Hba出错位组。因此, 由于Qi的矩阵是满秩的,所以对于所有i,有 然后,定理的要求源于事实
辅助定理1.GF(q)上的n×n满秩矩阵的数量是
定理9.对于结构2,存在Qi,i=0,...M-1,使得d>2da,如果db>2da,并且下式成立:
其中Ada是Ca中的最小权重码字的数量,并且ρ=rb-ra。
证明.为清楚起见,首先考虑M=2情况。由于仅存在Q1,去掉下标表示成Q=Q1。令S为Ca的全部最小加权码字的Hba出错位组的集,即 则当且仅当S∩SQT=成立,d>2da。令S′S表示第一个非零元素为1的出错位组的集。则由于码的线性,当且仅当S∩S′QT=,S∩SQT=成立。对于所有s∈S′和s∈S,令Ωs′,s={Q∶s′QT=s}。如果|∪s′∈S′,s∈SΩs′,s|严格少于满秩ρ×ρ矩阵的数量,则完成。注意到 和 并且对于所有s,s′,|Ωs′,s|=qρ(ρ-1),所以根据辅助定理1和联合界限,期望Q存在的充分条件是
其等价于
对于M>2,令 i=0,...M-1,(如前面的证明中一样,假定Q0是单位矩阵)。令S′i表示第一个非零元素为1的Si的子集。则对于所有i≠j,当且仅当S′i∩Sj=时,得到d>2da,其等价于对于所有i,S′i∩∪j<iSj=成立。对于所有s′∈S′和s∈∪j<iSj,令 表示成
则当且仅当QiΩ(i),i=1,...,M-1时,d>2da。令Γρ为满秩的GF(q)上的全部ρ×ρ矩阵的集。现在,假定根据一种″贪婪(Greedy)″算法选择Qi’,其中成功地选定Q1∈Γρ\Ω(1),Q2∈Γρ\Ω(2),...QM-1∈Γρ\Ω(M-1).如果对于所有i,|Γρ\Ω(i)|>0成立,则该算法成功,如果|Γρ\Ω(M-1)|>0则确保它,由于对于所有j<i,显然Ω(j)Ω(i)成立,利用联合界限,得到
将上述表达式设定为正,得出期望Qi存在的充分条件,完成证明。
注意到,以上证明利用概率法也可以实现,即将Qi看作随机矩阵,并且期望某些出错位组集当中的重叠量较小,因此至少一个这样矩阵的存在使得相应出错位组集可能不相交。定理9的结果可通过某些矩阵的复式计数略微改进,应用联合界限于
推论4.对于结构2,存在Qi,i=1,...M-1,使得d>2da,如果db>2da,下式成立
其中Ai是Ca中的最小权重码字的数量,并且ρ=rb-ra。
证明.注意到,对于所有0≠a∈GF(q)和i=0,...M-2,存在至少|S′|对(s′,s),s′∈S′,s∈∪j<M-1Sj,使得 即,对于每个s′∈S′和 因此,当求助于定理9的证明中最终导出的联合界限时,存在(q-1)(M-1)矩阵,每个被计数|S′|次。然后通过将(q-1)(M-1)(|S′|-1)的校正项加到表达式(3)并且表示要求的结果,完成。
下面考虑一些例子。假定M=2,并且Ca是GF(8)上的[7,6,2]码。定理8和定理9的界限意味着要得到d>4,让ρ≥3是必要的,并且ρ>3是充分的。通过计算机搜索,发现了对于ρ=3,获得d=5。易于验证在这种情况下,(1)的界限利用等式获得。这产生了GF(8)上的[14,9,5]码。该码的奇偶校验矩阵如下:
其中
Ha=[1 1 1 1 1 1 1],
并且α是GF(8),α3+α+1=0中的原根。
另一个例子,令M=2,并且Ca是GF(8)上的[6,5,2]码。此处示出利用ρ=4实现d=6的码。其为GF(8)上的[12,6,6]码,并且该码的奇偶校验矩阵如下:
其中
Ha=[1 1 1 1 1 1],
并且α是GF(8),α3+α+1=0中的原根。
注意到,对于相同的长度和距离参数,结构1会要求所示的两个例子码有较大的字段长度。
关于本节中的码结构的几点进一步的说明。
1)考虑利用RS码的、结构1的特例。令n=Mn1和 其中α是GF(q),q>n中的原根。则结构1给出的码也适合结构2,其中所有Qi具有对角形式。
由于其示出了结构1和结构2之间的关系,所以很有趣。此外,这样的码利用解码任意类码的算法可被解码。
2)集成交织中,设计参数B应于″突发子块″的数量。如果突发差错有意义,则用下列方式,结构2可容易被扩展,在这种情况下C被下面的奇偶校验矩阵定义。
其中
2)定理9是非建设性的。其为系统地寻找结构2的良好Qi的未解决的问题。
4)可以看到结构2适合通用链接(GC)码的结构,或通用差错位置(GEL)码的结构,这两个被证明是等价的。因此,原则上有关这两类码的大部分通用结果可被应用于结构2中。仍然有通用结果不提供的情况。例如,这些码的解码算法通常仅解码达到最小距离下限的一半。以,当最小距离较高时(以d>2da为例),还不清楚如何利用所述事实。同时,在这些结构中,思路是利用较小的、较简单的码建立较长的、较强的码。这样,较小码是否利于子行访问没有意义。在该情况下,局部检错和全局差错校正的思路会对如何使用这些码,尤其如何解码有影响。
类似结合结构2的动机所做的讨论,基本思想是关于对应于Ca中的Cb陪集的出错位组得到正确的设计约束。
5)结构2可能对构成称之为Almost-MDS(AMDS)码有用。如果码的冗余度等于其最小距离,则其为Almost-MDS。对于指定字段长度和最小距离,已经找到最大可能码长度的上下界限。在结构2中,如果M=2,da=2,Ca和Cb都是MDS,并且d=da,则C将为AMDS码。例如,注意到,先前示出的GF(8)上的[14,9,5]码为AMDS,并且其可用4步延长以获得[18,13,5]码,其奇偶校验矩阵如下:
H18,13,5=[H|H′],
其中H为码的奇偶校验矩阵,并且
解码
解码基本上是子行访问的两个步骤。
1.如果检测到差错,则在Ci中检错,
2.在C中进行差错校正。
第一步通常是简单的。一种直接方式是检查所接收的子行的出错位组是否在相应次要码中为零。这种检查的复杂度非常易于管理的。对于第二步骤,强力约束的距离解码将包括针对长度n以及权重小于d/2的所有差错模式的表格查阅。由于复杂度的原因,这可能是不实际的。此外,注意到,由于码的子行结构,可能有可容易地校正的差错模式,但是其权重为d/2或更高。例如,如果每个次要码具有最小距离3,则每个子行中最多包括一个差错的任何差错模式可被容易地通过在其相应次要码中解码子行而校正。另一方面,这种差错模式可具有高达M的权重,无论码字中的子行的数量是否为d。
上述问题可通过利用解码算法部分地解决,所述解码算法利用码的子行结构。因此,考虑已被提出的两种结构。此处,假定Ca和Cb是利用简单解码算法而较好构造的码(例如RS码、汉明码等等)。
对于结构1,第二解码步骤可通过解码Cb而不是C中接收的字而被简化。这可能导致一些性能损失(由于其确实没有利用次要码),但是可能具有复杂度优势。另一个选择是使用类似于如下所述的算法(针对结构2的码)。
现在,考虑结构2。首先,观察如何解码非常特定的。令C为前面部分中所构造的GF(8)上的[14,9,5]码。令c为传输的/存储的码字,其错误地接收/读出为r=c+e。或者,分别表示第一和最后7个符号,写成(r 1,r 2)=(c 1,c 2)+(e 1,e 2)。如果wt(e)≤2,则以下解码算法保证能校正所有差错。下文中,所有解码是限定距离解码。
1.令 令
2.如果R是空的,
(a)如果s 1+s 2QT=0,输出 返回。
(b)如果s 1+s 2QT≠0,
3.如果|R|=1,
4.如果R={1,2},则
(a)令 ,i=1,2对于j=1,...7,计算t j=(tj,1tj,2,tj,3):=s 2-ε2 h j,其中h j为Hba TQT的第j行。
(b)找到j*,使得 。令 。如果没有这样的j*存在,则声明解码失败。
上述算法的主要部分可通用于结构2的所有码。该算法如下给出,并且承受类同于集成交织模式所使用的解码算法。在该算法中,″出错位组约束″是指对于所有c=(c 0,...c M-1)∈C,得到 ,其中 是子行i的Hba出错位组的事实。
1.解码Ca中的每个子行。如果子行i的解码失败,将针对子行i校正的差错的数量记录为τi.τi=∞。
2.如果存在不止一个i,使得τi=∞,则声明解码失败。
3.如果正好有一个i,使得τi=∞,则假定所有其它子行被正确解码,利用出错位组约束求出子行i的Hba出错,并且在Cb的相应陪集中解码r i。如果成功,则返回。否则,声明解码失败。
4.如果对于所有i,有τi<∞,则检测出错位组约束是否满足。如果如此,则从子行解码器接受输出,并返回。否则,将{τi}分类成{τij}1≤j≤M,使得 。对于j=1至M,假定子行ij的Hba出错位组被清除,并且利用出错位组约束求出它。假定该Hba出错位组针对子行ij,在相应陪集中解码r ij;如果成功,断开并返回。如果上述过程对于所有j都失败,则声明解码失败。
定理10.令ti表示子行i中发生的差错的数量,i=1,...M。令Ea={i∶ti≥da/2}。上述算法校正全部差错模式,使得
1.Ea=,或
2.Ea={i},ti<db/2,并且
证明.如果Ea=,则全部子行将被校正,并且成功地解码。如果Ea={i}并且τi=∞,则全部子行除了第i行都将被正确地解码。子行i的Hba出错位组因而被正确推论出,由于ti<db/2,将校正ti个差错。最后,对于所有i,如果Ea={i}但是τi<∞,假如当假定子行j的Hba出错位组被清除时,解码算法错校(miscorrects)接收的字为不同于原始的码字。通过该方式所述算法起作用,这仅当τi≤τj=tj时发生。令τ′j表示当在Cb的陪集中被解码时,子行j在最后步骤中被错校时发现的″差错″的数量。注意到,正确码字与错校的输出之间的汉明距离最多为
这是一种矛盾。
注意适当修改上述算法也可以被用来解码结构1的码。
最后,注意到,取决于码所被应用的系统的要求,本节开始时的两步解码原理可以这种方式通用,即在第一步中,代替单纯检错,执行差错校正与差错检测的组合。例如,可以单独使用次要码来校正取回的子行,最多为一定(较小)数量的差错,如果在子行中检测到多于该数量的差错,才启动所述行码进行进一步差错校正。这种修改的解码原理通常将牺牲一些可靠性,以为了较少求助于解码整行。取决于具体的系统环境,这可以是一种合理做法。
虽然根据单个优选实施例描述了本发明,然而本领域技术人员会认识到,可以通过所附权利要求书的宗旨和范围内的修改实施本发明。例如,虽然根据使用动态随机存取存储器(DRAM)设备的存储器描述了本发明,然而本领域技术人员会认识到,利用其它不同的存储器技术也可实施本发明。另外,发明的简要说明在连同和/或数据的每行内存储的冗余符号的环境中,但是这对于本发明的实施来说不是必要的。一些或全部冗余符号可能存储在不同于存储数据的子行的存储器的专用存储器中。例如,可利用静态随机存取存储器(SRAM)技术存储共享冗余度。此外,本发明不局限于应用于主存储器,而是可被更有利地应用于包括在具有一个或多个处理器内核的处理器芯片上的存储介质中。
Claims (18)
1.一种用于存储器允许子行访问的差错控制方法,包括步骤:
将存储器中的一个数据行分成多个数据子行;
将码的第一层加到所述多个数据子行中的每一个,所述码的第一层为所述多个数据子行中的每一个提供局部保护;
将码的第二层加到所述数据行,所述码的第二层为所述多个数据子行提供全局保护;
取回一个或多个数据子行,其中所访问的数据子行可位于不同的数据行,并且多个子行可被并行取回;
利用所述第一层码检测数据子行中的差错;以及
利用所述第二层码校正数据子行中的差错。
2.如权利要求1所述的存储器的差错控制方法,其中检测差错的步骤还包含利用所述第一层码校正差错的步骤,以及其中利用所述第二层码校正差错的步骤被限制为校正尚未利用所述第一层码校正的那些差错。
3.如权利要求1所述的存储器的差错控制方法,进一步包括步骤:
计算数据行的一个子行与其它子行所共享的、由所述数据子行的内容变化引起的更新后的冗余信息,所述计算基于所述子行的新旧值之差;
如果需要,计算子行专有的更新后的冗余信息;以及
将所有更新后的冗余信息和所述数据子行的新内容写入存储器中。
4.如权利要求1所述的存储器的差错控制方法,进一步包括在与所述多个数据子行相同存储器位置上存储所述共享的冗余信息的步骤。
5.如权利要求1所述的存储器的差错控制方法,进一步包括将所述共享的冗余信息存储在与所述多个数据子行不同的存储器位置中的步骤。
6.如权利要求1所述的存储器的差错控制方法,其中所述共享的冗余信息能够独立于存储器中的任何其他信息被访问。
7.如权利要求1所述的存储器的差错控制方法,进一步包括存储器刷擦方法,包括步骤:
读取具有相关冗余信息的整行;
利用第一和第二层差错控制码来检测和校正差错;以及
回存整行及其相关冗余信息。
9.如权利要求8所述的存储器的差错控制码的方法,其中选择所述矩阵Ha (1),...Ha (M)和Hba,使得由
11.如权利要求1所述的存储器的差错控制方法,其中每个数据子行的局部保护利用具有最小距离dlocal的码获得,数据子行的全局保护利用具有最小距离dglobal的码获得,并且所述最小距离dglobal大于最小距离dlocal的两倍大。
12.一种具有多个数据行的存储器系统,每个数据行由利用第一和第二层码保护的数据子行组成,包括:
访问装置,用于从存储器中读取一个或多个子行数据连同每个被访问的数据子行的冗余信息,其中被访问的数据子行可以处于不同的数据行,以及多个子行可被并行访问;
检错装置,用于检测从存储器中读出的数据子行中是否存在差错,以及响应于所述检错装置所检测到差错、用于读取所述数据行中的附加数据子行连同共享冗余信息的装置;以及
差错校正装置,用于试图利用专有和共享冗余信息以及读出的行的值校正由所述检测装置检测到的差错,并且报告任何检测到的差错以及所述差错是否可被校正。
13.如权利要求12所述的存储器系统,进一步包括存储器子行写入装置,子行写入导致改变存储器中的该子行的内容以及更新共享冗余信息,从而无需读出其它存储器子行就可以实现所述共享冗余信息的更新。
14.如权利要求12所述的存储器系统,进一步包括存储器子行读-修改-写操作装置,子行读-修改-写操作导致读出及写入存储器中的子行并且额外地更新共享冗余信息,从而所述共享冗余信息的更新无需读出其它存储器子行就可实现。
15.如权利要求12所述的存储器系统,其中所述共享冗余被存储在不同于存储所述数据子行的存储器的专用存储器中。
16.如权力要求15所述的存储器系统,其中所述专用存储器利用静态随机存取存储器(SRAM)技术构成。
17.如权力要求12所述的存储器系统,其中所述存储器利用动态随机存取存储器(DRAM)器件构成。
18.如权利要求12所述的存储器系统,其中所述存储器被用作存储介质,用于具有至少一个处理器内核的处理器芯片。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/619,929 US7895502B2 (en) | 2007-01-04 | 2007-01-04 | Error control coding methods for memories with subline accesses |
US11/619,929 | 2007-01-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101231891A true CN101231891A (zh) | 2008-07-30 |
Family
ID=39595313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100019286A Pending CN101231891A (zh) | 2007-01-04 | 2008-01-03 | 差错控制的方法和存储器系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7895502B2 (zh) |
CN (1) | CN101231891A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786656A (zh) * | 2016-02-17 | 2016-07-20 | 中科院成都信息技术股份有限公司 | 基于随机矩阵的独立磁盘冗余阵列容灾存储方法 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102006016499B4 (de) * | 2006-04-07 | 2014-11-13 | Qimonda Ag | Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur |
US8627167B1 (en) | 2007-01-08 | 2014-01-07 | Marvell International Ltd. | Methods and apparatus for providing multi-layered coding for memory devices |
US7904782B2 (en) * | 2007-03-09 | 2011-03-08 | Microsoft Corporation | Multiple protection group codes having maximally recoverable property |
US7930611B2 (en) * | 2007-03-09 | 2011-04-19 | Microsoft Corporation | Erasure-resilient codes having multiple protection groups |
US7996710B2 (en) * | 2007-04-25 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Defect management for a semiconductor memory system |
US8468416B2 (en) * | 2007-06-26 | 2013-06-18 | International Business Machines Corporation | Combined group ECC protection and subgroup parity protection |
US8041989B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for providing a high fault tolerant memory system |
US8041990B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for error correction and detection in a memory system |
US8239731B1 (en) | 2007-07-06 | 2012-08-07 | Marvell International Ltd. | Methods and apparatus for providing multilevel coset coding and probabilistic error correction |
US8281216B2 (en) * | 2009-03-31 | 2012-10-02 | Motorola Solutions, Inc. | Method for assigning and utilizing forward error correcting (FEC) codes |
WO2011121490A1 (en) | 2010-03-30 | 2011-10-06 | International Business Machines Corporation | Two -level bch codes for solid state storage devices |
US8484529B2 (en) | 2010-06-24 | 2013-07-09 | International Business Machines Corporation | Error correction and detection in a redundant memory system |
US8898511B2 (en) | 2010-06-24 | 2014-11-25 | International Business Machines Corporation | Homogeneous recovery in a redundant memory system |
US8631271B2 (en) | 2010-06-24 | 2014-01-14 | International Business Machines Corporation | Heterogeneous recovery in a redundant memory system |
US8549378B2 (en) | 2010-06-24 | 2013-10-01 | International Business Machines Corporation | RAIM system using decoding of virtual ECC |
US8539303B2 (en) * | 2010-12-20 | 2013-09-17 | Intel Corporation | Low overhead error correcting code protection for stored information |
US8522122B2 (en) | 2011-01-29 | 2013-08-27 | International Business Machines Corporation | Correcting memory device and memory channel failures in the presence of known memory device failures |
US9218243B2 (en) * | 2011-06-06 | 2015-12-22 | Rambus Inc. | Memory system for error detection and correction coverage |
US8745472B2 (en) * | 2012-09-01 | 2014-06-03 | Texas Instruments Incorporated | Memory with segmented error correction codes |
US9898365B2 (en) | 2013-07-31 | 2018-02-20 | Hewlett Packard Enterprise Development Lp | Global error correction |
US20160147598A1 (en) * | 2013-07-31 | 2016-05-26 | Hewlett-Packard Development Company, L.P. | Operating a memory unit |
WO2015016877A1 (en) * | 2013-07-31 | 2015-02-05 | Hewlett-Packard Development Company, L.P. | Memory unit |
CN107306140B (zh) * | 2016-04-25 | 2020-12-01 | 华为技术有限公司 | 一种gel码字结构编码和译码的方法、装置及相关设备 |
US10509603B2 (en) * | 2016-07-29 | 2019-12-17 | Western Digital Technologies, Inc. | Hierarchical variable code rate error correction coding |
US10079613B2 (en) * | 2016-11-18 | 2018-09-18 | SK Hynix Inc. | Data mapping scheme for generalized product codes |
US20180358989A1 (en) * | 2017-06-09 | 2018-12-13 | Western Digital Technologies, Inc. | Non-volatile Storage Systems With Application-Aware Error-Correcting Codes |
US11204826B2 (en) * | 2018-09-28 | 2021-12-21 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory error detection and correction |
CN110097159B (zh) * | 2019-04-29 | 2022-09-23 | 绍兴聚量数据技术有限公司 | 一种基于汉明码的qr码安全认证方法及系统 |
US11438015B2 (en) * | 2020-07-10 | 2022-09-06 | Taiwan Semiconductor Manufacturing Company, Ltd. | Two-level error correcting code with sharing of check-bits |
US11886295B2 (en) | 2022-01-31 | 2024-01-30 | Pure Storage, Inc. | Intra-block error correction |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4951284A (en) * | 1988-12-14 | 1990-08-21 | International Business Machines Corporation | Method and means for correcting random and burst errors |
US6275965B1 (en) * | 1997-11-17 | 2001-08-14 | International Business Machines Corporation | Method and apparatus for efficient error detection and correction in long byte strings using generalized, integrated, interleaved reed-solomon codewords |
US6990151B2 (en) * | 2001-03-05 | 2006-01-24 | Intervideo, Inc. | Systems and methods for enhanced error concealment in a video decoder |
US6903887B2 (en) | 2002-01-03 | 2005-06-07 | International Business Machines Corporation | Multiple level (ML), integrated sector format (ISF), error correction code (ECC) encoding and decoding processes for data storage or communication devices and systems |
US7409623B2 (en) * | 2004-11-04 | 2008-08-05 | Sigmatel, Inc. | System and method of reading non-volatile computer memory |
US7512864B2 (en) * | 2005-09-30 | 2009-03-31 | Josef Zeevi | System and method of accessing non-volatile computer memory |
US7810017B2 (en) * | 2006-03-20 | 2010-10-05 | Micron Technology, Inc. | Variable sector-count ECC |
US7739576B2 (en) * | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
-
2007
- 2007-01-04 US US11/619,929 patent/US7895502B2/en not_active Expired - Fee Related
-
2008
- 2008-01-03 CN CNA2008100019286A patent/CN101231891A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786656A (zh) * | 2016-02-17 | 2016-07-20 | 中科院成都信息技术股份有限公司 | 基于随机矩阵的独立磁盘冗余阵列容灾存储方法 |
Also Published As
Publication number | Publication date |
---|---|
US20080168329A1 (en) | 2008-07-10 |
US7895502B2 (en) | 2011-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101231891A (zh) | 差错控制的方法和存储器系统 | |
US8856619B1 (en) | Storing data across groups of storage nodes | |
EP3014451B1 (en) | Locally generated simple erasure codes | |
JP5298393B2 (ja) | 並列リードソロモンraid(rs−raid)アーキテクチャ、デバイス、および方法 | |
CN101217060B (zh) | 用于识别故障存储器元件的系统和方法 | |
US7900118B2 (en) | Flash memory system and method for controlling the same | |
US6557123B1 (en) | Data redundancy methods and apparatus | |
US7644348B2 (en) | Method and apparatus for error detection and correction | |
JP2738687B2 (ja) | 誤り訂正システムおよび方法 | |
US9063869B2 (en) | Method and system for storing and rebuilding data | |
EP1450260A2 (en) | Data redundancy method and apparatus | |
US20080155191A1 (en) | Systems and methods for providing heterogeneous storage systems | |
WO2020047707A1 (zh) | 分布式存储系统的数据编码、解码及修复方法 | |
US20030140300A1 (en) | (146,130) error correction code utilizing address information | |
CN104881370B (zh) | 协同使用纠删码和纠错码的可靠闪存存储系统构建方法 | |
Goel et al. | RAID triple parity | |
CN102893262A (zh) | 使用校验子分析的故障总线通道检测 | |
CN105378690A (zh) | 存储器节点差错校正 | |
US11314594B2 (en) | Method, device and computer program product for recovering data | |
CN105556477A (zh) | 在多端口存储器配置中与主机处理器的存储器模块通信 | |
CN101488369B (zh) | Bch码控制器接口电路 | |
CN101794623A (zh) | 存储设备的纠错装置及方法 | |
US8484536B1 (en) | Techniques for data storage, access, and maintenance | |
CN101308706A (zh) | 适用于闪存的数据写入方法及错误修正编解码方法 | |
CN109739777B (zh) | 本地与分布式协同设计的可靠闪存存储方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20080730 |