提高内存数据健壮性的存取方法和装置的制作方法

文档序号:6578352阅读:260来源:国知局
专利名称:提高内存数据健壮性的存取方法和装置的制作方法
技术领域
本发明是关于内存数据的存取,特别是关于一种提高内存数据健壮性的 存取方法和装置。
背景技术
内存是相对于外存而言的,外存通常用来存放需要永久保存的大量的数
据,而内存则存放一些临时的或者少量的数据,供中央处理器(Central Pro cess Unit, CPU)调用。如今,内存广泛应用于各种设备中,比如计算机、 电器、路由器内的网络处理器等。内存中存放的数据往往是上述设备中比较 核心和重要的数据,以网络处理器来说,各种转发表项和需要处理的报文内 容都存储在网络处理器的内存中,其中包括一些核心转发表项,如路由表、 访问控制列表(Access Control List, ACL )表等。因此,如果网络处理 器内存数据不可靠轻则导致报文数据错误,重则导致业务中断。 现有内存的失效故障可以分为硬失效和软失效两种情况 硬失效是指存储器硬件失效故障、晶体管门电路损坏等。防止硬失效的 措施有通过不断提高生产工艺及材料来降低硬失效概率;硬件上釆取备份 冗余设计。
软失效是指对内存进行数据写入时内存发生错误,导致最终写入到内存 中的数据与原数据不相等。软失效发生时内存并没有造成物理损坏,通过重 写可以恢复。软失效随机发生、没有规律可言,其原因通常是来自封装材料 中放射性物质(如钍、铀等)释放的阿尔发粒子或高能中子等。对于防护软 失效的方法可从工艺及系统设计上考虑,其中防护软失效的系统设计方法有
5对内存中数据接口增加奇偶校验;对内存中数据接口增加错误检査与纠正 (Error Check and Correct, ECC)校验。
带有奇偶校验的内存是在每一字节(8位)外又额外增加了一位用来进行 错误检测。比如一个字节中存储了某一数值(1、 0、 1、 0、 1、 0、 1、 1), 把每一位加起来(1+0 + 1+0 + 1 + 0 + 1 + 1=5),若其结果是奇数,对于偶 校验,校验位就定义为l,反之则为0;对于奇校验,则相反。当CPU读取存 储的数据时,它会再次相加前8位中存储的数据,计算结果是否与校验位相 一致。当CPU发现二者不同时就试图纠正这些错误。但是,带奇偶校验的内 存查到某个数据位有错误时,却不能确定在哪一个位,也就不能修正错误, 所以带有奇偶校验的内存的主要功能仅仅是"发现错误"。
针对上述奇偶校验的不足,ECC技术被广泛应用于防护内存的软失效。它 使用非线性的ECC校验码对内存数据进行校验,具体来说,它是以8位数据、 5位ECC码为基准,随后每增加一倍数据只需另增加一位ECC码即可。例如, 一个8位的数据产生的ECC码要占用5位的空间,而一个16位数据ECC码只 需在原来基础上再增加一位,也就是6位;而32位的数据则只需再在原来基 础增加一位,即7位的ECC码即可,如此类推。该ECC技术可纠正单bit错 误,同时发现2bit的错误,部分发现2bit以上错误。
但是,上述ECC技术应用于内存中还是存在了以下的缺陷随着如今各种 数据量的大量增加,仅能纠正单bit的ECC已经不能完全满足实际需求了, 比如使用了 ECC的网络处理器,其内存软失效仍然时有发生,从而导致业务 中断,因此内存数据的健壮性需要进一步提高。

发明内容
针对上述缺陷,本发明实施例的目的在于提供一种提高内存数据健壮性 的方法和装置,用于解决现有技术中使用了 ECC技术的内存,其软失效仍时常发生,已不能完全满足实际需求的问题。
为了实现上述目的,本发明实施例提供了一种提高内存数据健壮性的存
储方法,该方法包括将待写入数据交织成M+N的矩阵数据块,对所述矩阵数 据块进行交织检查与纠正(Interweave Check and Correct, ICC)处理得到 校验比特;将所述待写入数据写入内存;将所述校验比特进行存储。
为了实现上述目的,本发明实施例提供了一种提高内存数据健壮性的读 取方法,该方法包括获取内存中的数据,将所述数据交织成M承N的矩阵数据 块,对所述矩阵数据块进行交织检查与纠正ICC处理得到校验比特;当所述校 验比特和所述数据存储时得到的校验比特相同,则读取所述数据。
为了实现上述目的,本发明实施例还提供了 一种提高内存数据健壮性的 装置,包括中央处理器CPU和内存,还包括数据交织模块和交织检查与纠正IC C模块,所述数据交织模块用于在CPU对内存进行数据写入和数据读取时,将 所述数据交织成M4N的矩阵数据块;所述ICC模块用于对所述矩阵数据块进行I CC处理。
为了实现上述目的,本发明实施例还提供了一种提高内存数据健壮性的 网络处理器,包括接口单元、CPU和内存,接口单元和CPU相连,还包括数据 交织模块和ICC模块,其中,数据交织模块用于在CPU对内存进行数据写入和 数据读取时,将所述数据交织成1^N的矩阵数据块;ICC模块用于在CPU对内 存进行数据写入和数据读取时,对矩阵数据块进行ICC处理。
本发明实施例将ICC技术应用于内存数据的存取中,由于ICC技术除了可 以绝对纠出lbit错误外,还有很大概率纠出2bit错误及一定概率纠出2bit以 上的错误,同时其能检出的错误位数也比ECC技术多。因此应用了ICC技术的 内存,其纠错能力和检错能力都有了大幅度提高,能够极大地提高内存数据 的健壮性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面 描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种提高内存数据健壮性的装置的结构示
意图2为本发明实施例提供的一种ICC检测原理图3为本发明实施例二提供的一种提高内存数据健壮性装置的结构图; 图4为本发明实施例三提供的一种提高内存数据健壮性装置的结构图; 图5为本发明实施例提供的一种网络处理器的结构图6为本发明实施例提出的一种提高内存数据健壮性的存储方法流程图; 图7为本发明实施例提出的一种提高内存数据健壮性的读取方法流程图。
具体实施例方式
为了使本发明的目的、技术方案和优点更加清楚明白,下面结合具体实 施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方 式及其说明用于解释本发明,但并不作为对本发明的限定。
实施例一
如图1所示为本发明实施例提供的一种提高内存数据健壮性的装置的结 构示意图,该装置包括中央处理器101、 ICC模块102、内存103和数据交织 模块104,其连接关系如图1所示,需要指出的是,虽然图1中数据交织模块 104被表示成两个独立的模块,但由于其完成的功能是相同的,所以实际上其 也可以仅是一个独立模块,图1如此表示只是为了更清楚地说明中央处理器 101在对内存103进行写入和读取时的工作流程。
在本实施例中,中央处理器101在对内存103进行写入和读取时的工作流程分别为
数据写入时,中央处理器101将待写入的数据送至数据交织模块104;
数据交织模块104将该数据交织成M*N的矩阵数据块;然后ICC模块102对 上述矩阵数据块进行校验得到校验比特,接着再通过数据交织模块104将矩 阵数据块还原成待写入数据,并将该待写入数据和校验比特一起写入内存。 需要指出的是,当校验比特也写入内存时,其存放在内存中的一个校验存储 区,当然本实施例中校验比特也可存入一个单独的校验存储器内。
数据读取时,其过程是上述写入过程的逆过程,不同的是,还包括将读出 过程中产生的校验比特和写入过程中产生的校验比特进行比对的过程,即对 数据进行校验的过程。我们知道中央处理器101在对内存103进行数据写入 和读取时,是以bit形式进行的,即通过"1 " 、 "0 "来代表数据信息, 如果某一数据位发生错误出现跳变时,就会使其中存储的相应数据发生改变 而导致应用程序发生错误。为了防止数据在写入和读取过程中发生错误,需 要对该数据进行校验。
下面对本发明实施例的核心部分ICC模块102进行说明,如图2所示为 本发明实施例提供的一种ICC检测原理图。ICC技术是数字信号传输中主要用 来检测连续多bit数据错误的一种校验技术,在中央处理器101向内存103 写入数据时,ICC模块102对经过数据交织模块104处理后得到的矩阵数据块 进行ICC运算,即分别对该矩阵数据块的各行各列计算其奇偶校验位,如图2 所示,本发明实施例中M二8, N=10,且采用奇偶校验中的偶校验。通过上述校 验后,ICC模块得到两组校验比特行校验比特和列校验比特,其中行校验比 特为10111111,而列校验比特为1010001000。当中央处理器101需要从内存 103中读取上述写入的数据时,再次通过数据交织模块104将其交织成8*10 的矩阵数据块,然后ICC模块102再次计算该矩阵数据块的行校验比特和列 检验比特,通过分别比对两次行校验比特和列校验比特来确定是否有数据发 生跳变。当上述数据中有l位bit发生跳变,比如跳变发生在(M, N) = (3, 4) 时,中央处理器101在读取数据时所得到的行校验比特和列校验比特会相应 变为10011111和1011001000,通过比对校验比特,ICC模块102会发现行校 验比特的第3位和列校验比特的第4位发生了变化,从而可以确定(3, 4) 位上数据发生了变化。此时,ICC模块102会启动纠错算法对该数据位上的数 据进行修正。由此可见,应用了 ICC技术的内存可以绝对纠出lbit的错误。
当上述数据中有2位bit发生跳变时,若该两位bit不在同一行及同一 列,比如(3, 4)和(2, 5)上的数据发生了跳变,则相应的行校验比特和 列校验比特会变为11011111和1011101000,通过和最初的校验比特相比较, 很容易就能确定(3, 4)和(2, 5)上的数据发生了跳变,从而可以对其进 行纠正。但是,若该2位发生跳变的比特出现在同一行或者同一列,比如(3, 4)和(3, 5)两位数据发生跳变,此时行校验比特保持不变,只能通过列校 验比特发现第4列和第5列上有数据发生了变化,但由于不能确定其行数, 因此不能对其进行纠错。经过分析可以知道,ICC技术纠出2位bit错误的概 率由交织矩阵的长(M)和宽(N)决定,纠出2bit错误的概率为卜(M+N-2) / (丽-1),即上述数据块中,该概率为1- (8+10-2) / (8*10-1) =79.7%。 而当M和N为64bit时,此概率可高达96. 9%。
当上述数据中有3位或3位以上bit发生跳变时,其原理同上述2位bi t跳变,若该跳变不发生在同一行和同一列,则ICC模块不但可以检出该错误, 而且还能纠出该错误,否则只能检出该些错误。当然,这里也不排除某些既 不能纠出也不能检出的错误,比如(3, 4) 、 (3, 5) 、 (4, 4) 、 (4, 5) 上的数据发生跳变时,此时行校验比特和列校验比特均不会发生变化,从而 也就无法检出错误。
需要指出的是本实施中的工CC模块102可以是一软件模块,也可以是一 个协处理器,还可以是一个专用芯片。
由上述可知,本发明实施例的装置虽然也不能检出所有错误,但其纠检错能力相对于现有应用了 ECC技术的内存而言已有了极大的提高,内存数据
的健壮性有了较大的提高,可以满足在现有数据量下内存读写的正常工作。 实施例二
如图3所示为本发明实施例二提供的一种提高内存数据健壮性的装置的 结构示意图,该装置包括中央处理器301、 ICC模块302、内存303和数据交 织模块304,其作用和实施例一中相类似,在次不再赘述。
和实施例一所不同的是,本实施例中各个部分的连接关系有所不同中央 处理器301和内存303之间除了依次通过数据交织模块304、内存303和数据 交织模块304相连外,还存在一通道直接相连,另外ICC模块302和内存30 3之间也存在一通道直接相连。这种连接方式导致本发明实施例在中央处理器 301在对内存303进行写入和读取时的工作流程分别为
数据写入时,中央处理器301将待写入的数据复制一份,其中一份直接 写入内存303,而另一份则送至数据交织模块304;数据交织模块304将该数 据交织成M*N的矩阵数据块;然后ICC模块302对上述矩阵数据块进行校验 得到校验比特,并将该校验比特存入内存中的校验存储区,当然本实施例中 也可将该校验比特存入一独立的校验存储器。
数据读取时,数据交织模块304先将上述写入内存中的数据交织成M*N 的矩阵数据块,ICC模块302再对该矩阵数据块进行校验得到一校验比特,然 后将该校验比特和上述写入数据时得到的校验比特相比对,如果相同,数据 交织模块304则将该矩阵数据块进行还原并被中央处理器301所读取。
如图4所示为本发明实施例提供的另一种提高内存数据健壮性的装置, 该装置包括中央处理器310、数据交织模块320、 ICC模块330、内存340和 校验存储器350,其连接关系如图中所示。中央处理器310、数据交织模块3 20、内存340和校验存储器350的作用和实施例一相类似,在此不再赘述。
在本实施例中ICC模块330又包括交织运算子模块331、比较子模块332、纠错子模块333和中断子模块334。交织运算子模块331用于在中央处理 器310向内存340写入和读取数据时,对数据交织模块320交织得到的矩阵 数据块运行交织算法计算出校验比特,该校验比特包括实施例一中所述的行 校验比特和列校验比特。
比较子模块332将数据读取时计算得到的校验比特和数据写入时计算得 到的校验比特相比较,从而判断数据是否发生错误,若无错误发生,数据直 接经过数据交织模块320还原后被中央处理器310所读取;若有错误发生, 比较子模块332则告知纠错子模块333进行纠错处理。
纠错子模块333当比较子模块332的比较结果为不相同时,对某些错误 进行纠错,纠错后的数据直接经过数据交织模块320还原后被中央处理器31 0所读取;若出现纠错子模块333不能纠正的错误,则由中断子模块334产生 一不可屏蔽的中断信号,通知中央处理器310出现错误。此时中央处理器31 0可以选择结束该次数据读取操作,或者重新进行数据的写入和读取操作。
本实施例中关于ICC模块的具体纠检错原理和实施例一中的相类似,在 此不再赘述。另外本实施中的ICC模块330可以是一软件模块,也可以是一 个协处理器,还可以是一个专用芯片。
需要指出的是,上述实施例一至实施例三中的数据交织模块只是一功能 模块,在实际中,其可以由中央处理器予以实现,或者将其功能整合到ICC 模块予以实现。
上述实施例一至实施例三所提供的提高内存数据健壮性的装置可以应用 于绝大多数包含内存的系统中,比如路由器的网络处理器、计算机内存、电 器的控制处理器等。下面以网络处理器为例来说明本发明实施例的工作过程
实施例四
如图5所示为本发明实施例提供的一网络处理器的结构图,该网络处理 器包括了接口单元401、中央处理器402、 ICC模块403、内存404、校验存储 器405和数据交织模块406,其连接关系如图所示。接口单元401是网络处理器的输入输出接口,其用于接收需要转发的报
文并送至中央处理器402,以及接收中央处理器402的转发数据和转发命令。 中央处理器402、 ICC模块403、内存404、校验存储器405和数据交织 模块406的作用和实施例一及实施例二中相类似,在此不再赘述。
以下对该网络处理器的一次报文转发的工作流程加以说明假设接口单 元401接收到一来自链路1,需要转发到链路2的报文,接口单元401会将该 报文送至中央处理器402;中央处理器402则先将该报文数据交织成M*N的矩 阵数据块,ICC模块403对上述矩阵数据块进行ICC处理得到校验比特,并将 该校验比特存入校验存储器405,同时,数据交织模块406将矩阵数据块还原 成后存至内存404。
中央处理器402通过路由査询得知上述报文的转发路由后,再读取内存4 04中的该报文(读取过程为上述写入过程的逆过程,只是添加了校验比特的 对比过程);最后,该报文在中央处理器402的控制下经过接口单元401被 转发至链路2。
添加了 ICC处理模块的网络处理器,其数据的健壮性和可靠性较现有技 术有了进一步的提高,从而减少了网络业务中断故障的出现。 实施例五
如图6所示为本发明实施例提出的一种提高内存数据健壮性的存储方法 流程图,该方法包括
S101:将待写入数据交织成1^N的矩阵数据块,对所述矩阵数据块进行 交织检查与纠正ICC处理得到校验比特。这里的ICC处理是指分别对矩阵数 据块的各行和各列进行奇偶校验,得到校验比特,该校验比特包括行校验比 特和列校验比特,至于其具体算法可以参见图2。
S102:将待写入数据写入内存。这里有两种方式将待写入数据写入内存 其一是直接将待写入数据写入内存;其二是对步骤SIOI中经过ICC处理后的 矩阵数据块进行数据还原,然后将还原后的数据写入内存。S103:将校验比特进行存储。该校验比特可以存储在一个独立的校验存 储器内,或是存储在内存中的一校验存储区。
作为本发明的一个实施例,步骤S101中ICC处理方法包括:分别对所述矩 阵数据块的各行和各列进行奇偶校验,得到校验比特,所述校验比特包括行 校验比特和列校验比特。
实施例六
如图7所示为本发明实施例提出的一种提高内存数据健壮性的读取方法 流程图,该方法包括
获取内存中的数据,将所述数据交织成M柳的矩阵数据块,对所述矩阵数 据块进行交织检查与纠正ICC处理得到校验比特;
当所述校验比特和所述数据存储时得到的校验比特相同,则读取所述数

S201:获取内存中的数据,将所述数据交织成M*N的矩阵数据块,对所 述矩阵数据块进行交织检查与纠正ICC处理得到校验比特。这里的ICC处理 是指别对矩阵数据块的各行和各列进行奇偶校验,该校验比特包括行校验比 特和列校验比特,至于其具体算法可以参见图2。
S202:当所述校验比特和所述数据存储时得到的校验比特相同,则读取 所述数据。这里所说的校验比特相同包括行校验比特和列校验比特分别相同
作为本发明的一个实施例,如果上述校验比特不相同,则启动ICC纠错 算法纠正错误。若该纠错算法未能纠正错误,则产生一不可屏蔽的中断信号, 通知CPU出现错误。此时CPU可以选择结束该次数据读取操作,或者重新进 行数据的写入和读取操作。
本发明实施例将ICC技术应用于内存数据的存取中,由于ICC技术除了 可以绝对纠出lbit错误外,还有很大概率纠出2bit错误及一定概率纠出2b it以上的错误,同时其能检出的错误位数也比ECC技术多。因此应用了ICC技术的内存,其纠错能力和检错能力都有了大幅度提高,能够极大地提高内 存数据的健壮性。
以上所述的具体实施方式
,对本发明的目的、技术方案和有益效果进行 了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式
而 已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做 的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1. 一种提高内存数据健壮性的存储方法,其特征在于该方法包括将待写入数据交织成M*N的矩阵数据块,对所述矩阵数据块进行交织检查与纠正ICC处理得到校验比特;将所述待写入数据写入内存;将所述校验比特进行存储。
2. 如权利要求1所述的提高内存数据健壮性的存储方法,其特征在于,将 所述待写入数据写入内存具体包括对所述矩阵数据块进行ICC处理得到校 验比特后,再将所述矩阵数据块还原成所述待写入数据并写入内存。
3. 如权利要求l所述的一种提高内存数据健壮性的存储方法,其特征在 于,将所述校验比特进行存储包括将所述校验比特写入一校验存储器或内 存中的一校验存储区。
4. 如权利要求1至3中任意一项所述的提高内存数据健壮性的存储方法, 其特征在于,所述ICC处理方法包括:分别对所述矩阵数据块的各行和各列进 行奇偶校验,得到校验比特,所述校验比特包括行校验比特和列校验比特。
5. —种提高内存数据健壮性的读取方法,其特征在于该方法包括 获取内存中的数据,将所述数据交织成M举N的矩阵数据块,对所述矩阵数据块进行交织检查与纠正ICC处理得到校验比特;当所述校验比特和所述数据存储时得到的校验比特相同,则读取所述数据。
6. 如权利要求5所述的一种提高内存数据健壮性的读取方法,其特征在 于,当所述校验比特和所述数据存储时得到的校验比特不相同,则启动ICC纠 错算法纠正错误。
7. 如权利要求6所述的一种提高内存数据健壮性的读取方法,其特征在 于,若启动所述ICC纠错算法后未能纠正错误,则产生一中断信号,通知出现 错误。
8. 如权利要求5至7中任意一项所述的一种提高内存数据健壮性的读取方 法,其特征在于,所述ICC处理包括:分别对所述矩阵数据块的各行和各列进 行奇偶校验,得到校验比特,所述校验比特包括行校验比特和列校验比特;所述校验比特和所述数据存储时得到的校验比特相同包括行校验比特 和列校验比特分别相同。
9. 一种提高内存数据健壮性的装置,包括中央处理器CPU和内存,其特征 在于,还包括数据交织模块和交织检查与纠正ICC模块,所述数据交织模块用于在CPU对内存进行数据写入和数据读取时,将所述 数据交织成M+N的矩阵数据块;所述ICC模块用于对所述矩阵数据块进行ICC处理。
10. 如权利要求9所述的提高内存数据健壮性的装置,其特征在于,所 述ICC模块包括交织运算子模块和比较子模块,所述交织运算子模块用于运行交织算法计算出所述矩阵数据块的校验比 特,所述校验比特包括行校验比特和列校验比特;所述比较子模块用于将数据读取时由所述交织运算子模块计算得到的校 验比特和数据写入时由所述交织运算子模块计算得到的校验比特相比较。
11. 如权利要求10所述的提高内存数据健壮性的装置,其特征在于,所述 ICC模块还包括一纠错子模块,所述纠错子模块用于在所述比较子模块的比较结果为不相同时,启动纠 错算法纠正错误。
12. 如权利要求10所述的提高内存数据健壮性的装置,其特征在于,所述 ICC模块还包括一 中断子模块,所述中断子模块用于在所述纠错子模块不能纠 正错误时产生一中断信号,通知所述CPU出现错误。
13. —种提高内存数据健壮性的网络处理器,包括接口单元、CPU和内存, 所述接口单元和所述CPU相连,其特征在于,还包括数据交织模块和ICC模块,所述数据交织模块用于在CPU对内存进行数据写入和数据读取时,将所述数据交织成M冰N的矩阵数据块;所述ICC模块用于在CPU对内存进行数据写入和数据读取时,对所述矩阵数据块进行icc处理。
全文摘要
本发明实施例提供一种提高内存数据健壮性的存取方法和装置,该存储方法包括将待写入数据交织成M*N的矩阵数据块,对所述矩阵数据块进行交织检查与纠正ICC处理得到校验比特;将所述待写入数据写入内存;将所述校验比特进行存储。本发明实施例将ICC技术应用于内存数据的存取中,由于ICC技术除了可以绝对纠出1bit错误外,还有很大概率纠出2bit错误及一定概率纠出2bit以上的错误,同时其能检出的错误位数也比ECC技术多。因此应用了ICC技术的内存,其纠错能力和检错能力都有了大幅度提高,能够极大地提高内存数据的健壮性。
文档编号G06F12/06GK101546291SQ20091014081
公开日2009年9月30日 申请日期2009年5月12日 优先权日2009年5月12日
发明者皓 徐 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1