一种存储器故障单元的替换方法及装置、数据存储系统的制作方法

文档序号:6383011阅读:165来源:国知局
专利名称:一种存储器故障单元的替换方法及装置、数据存储系统的制作方法
一种存储器故障单元的替换方法及装置、数据存储系统技术领域
本发明属于数据处理领域,尤其涉及一种存储器故障单元的替换方法及装置、数 据存储系统。
背景技术
常用的半导体随机存取存储器可以分为动态随机存取存储器DRAM和静态随机存 取存储器SRAM两大类,DRAM具有集成度高、速度快等特点,主要用作系统的内存;SRAM可以 达到更高的速度,不需要定时刷新,但是集成度较低,因此主要用作高速缓存。
DRAM和SRAM都通过电荷来保存信息,例如DRAM是根据晶体管栅极电容是否存有 电荷来表示I或0,SRAM是根据晶体管的导通或截止来表示I或O。它们在外部宇宙射线 或芯片封装材料中放射性元素的影响下,电荷状态可能发生变化,例如从I变成0,导致保 存的信息出现变化。这种现象称为软失效,但是其中的存储单元并未损坏,只是信息发生变 化而已,可以通过重新写入数据将其纠正。此外,芯片工作电压的波动、电磁干扰也会引起 软失效,随着半导体生产工艺的不断改进,DRAM和SRAM的集成度越来越高,工作电压也在 不断降低,因此软失效的几率在不断增加。同时,存储器也会有个别存储单元出现硬失效, 这种故障无法通过重新写入数据进行纠正,从该存储单元中读出来的数据可能一直是1、一 直是O或者不确定。
存储器中保存的是系统运行的代码和数据,如果其中的内容发生变化,会产生意 料不到的结果,甚至可能使得系统运行失常或死机。
为了解决存储单元的失效问题,现有技术中通过采用ECC (Error Check andCorrection,检错纠错)算法,在现有存储器的基础上新增一片校验存储器(例如内存条 上有9个存储器芯片,其中8个是数据存储器,I个是校验存储器),两者共用同一个通道。 每次向存储器写入数据时,将根据ECC算法得到的校验数据也一起写入校验存储器,从存 储器读出数据时,也一起读出校验存储器中的数据,并根据ECC算法检测是否发生了错误。 如果出现了单比特错误,ECC算法可以将其纠正,得到正确的数据。但ECC算法的纠错能力 很有限,一般只能纠正单个比特的错误,如果发生多个比特错误将无法纠正。同时,虽然ECC 算法将读出的单比特错误纠正了,但存储器中的内容仍然是错误的,如果此后再发生一个 比特的失效就无法纠正了。
为此,现有技术为了进一步提高纠错能力,将两个完全相同的存储器组成镜像或 锁步方式,使用两个通道与存储控制器连接。其中镜像方式是将两个存储器的内容组成 一一对应的关系,当检测到其中一个存储器的数据出错时,再从另一个存储器取数据,因此 可以容忍整个存储器失效;锁步方式是将两个存储器通道组合成一个逻辑通道,采用了更 先进的纠错算法,可以容忍单个存储器芯片失效。但是显然,所述镜像方式和锁步方式都要 求使用两组容量、速度完全一样的存储器,增加了系统成本和功耗。发明内容
鉴于上述问题,本发明提供一种存储器故障单元的替换方法及装置和数据存储系 统,旨在解决现有技术中,通过增加校验存储器,采用ECC算法的纠错能力很有限,以及采 用镜像方式或锁步方式增加了系统成本和功耗的技术问题。
第一方面,所述存储器故障单元的替换方法包括根据读取地址读取主存储器中 对应数据;检测所述数据是否正确;若所述数据错误,则在映射表中查找所述读取地址对 应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器,其中 所述映射表保存有主存储器中故障单元地址和替换存储器中对应替换地址的映射关系,所 述替换存储器用于保存主存储器中故障单元所对应的正确数据;若所述数据正确,则将所 述数据直接返回至处理器。
在第一方面的第一种可能的实现方式中,所述根据读取地址读取主存储器中对应 数据,并检测所述数据是否正确步骤之前,还包括根据写入地址将数据写入主存储器中对 应的存储单元,若映射表中存在所述写入地址,将所述数据同时替换存储器中对应的存储 单元。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式 中,若所述数据错误,则在映射表中查找所述读取地址对应的替换地址,从替换存储器中获 取所述替换地址对应的替换数据并返回至处理器步骤,具体包括若所述数据错误且无法 纠正,则在映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地 址对应的替换数据并返回至处理器。
结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,若所述数据 错误但可以纠正,则将纠正后的数据返回至处理器。
结合第一方面第二种可能的实现方式,在第四种可能的实现方式中,若所述数据 错误且无法纠正,则在映射表中查找所述读取地址对应的替换地址,从替换存储器中获取 所述替换地址对应的替换数据并返回至处理器步骤,具体包括若所述数据错误且无法纠 正,同时映射表中存在所述读取地址,则根据读取地址所对应的替换地址,从替换存储器中 获取对应的替换数据并返回至处理器。
结合第一方面第四种可能的实现方式中,在第五种可能的实现方式中,若所述数 据错误且无法纠正,同时映射表中不存在所述读取地址,则分配一个替换存储器的空白地 址与所述读取地址对应,作为新的映射表项写入映射表,并输出重启指令。
结合第一方面第三种可能的实现方式,在第六种可能的实现方式中,所述若所述 数据错误但可以纠正,则将纠正后的数据返回至处理器步骤,具体包括若所述数据错误但 可以纠正,同时映射表中存在所述读取地址,则将纠正后的数据返回至处理器。
结合第一方面地六种可能的实现方式,在第七种可能实现的方式中,若所述数据 错误但可以纠正,同时映射表中不存在所述读取地址,则将纠正后的数据返回至处理器,再 分配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表项写入映射表,并 将纠正后数据写入所述空白地址对应的存储单元。
结合第一方面的第五种或第七种可能的实现方式,在第八中可能的实现方式中, 在写入新的映射表项时若已达到映射表的容量上限,则随机选取一个映射表项替换为所述 新的映射表项;或者,在映射表中按照顺序顺次替换所述新的映射表项;或者,将最近最少 使用的映射表项替换为所述新的映射表项。
结合第一方面第八中可能的实现方式,在第九种可能的实现方式中,在写入新的 映射表项时若已达到映射表的容量上限,则同时向处理器输出中断告警。
第二方面,所述存储器故障单元的替换装置包括读取检测单元,用于根据读取地 址读取主存储器中对应数据,并检测所述数据是否正确;替换数据返回单元,用于当所述读 取检测单元检测到所述数据错误时,映射表中查找所述读取地址对应的替换地址,从替换 存储器中获取所述替换地址对应的替换数据并返回至处理器,其中所述映射表保存有主存 储器中故障单元地址和替换存储器中对应替换地址的映射关系,所述替换存储器用于保存 主存储器中故障单元所对应的正确数据;数据直接返回单元,用于当所述读取检测单元检 测到所述数据正确时,将所述数据直接返回至处理器。
在第二方面的第一种可能的实现方式中,所述装置还包括数据写入单元,用于根 据写入地址将数据写入主存储器中对应的存储单元,若映射表中存在所述写入地址,将所 述数据同时替换存储器中对应的存储单元。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式 中,所述替换数据返回单元包括替换返回模块,用于当所述数据错误且无法纠正时,在映 射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换 数据并返回至处理器;纠正返回模块,用于当所述数据错误但可以纠正时,将纠正后的数据 返回至处理器。
结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,所述替换返 回模块包括替换返回组件,用于当所述数据错误且无法纠正,同时映射表中存在所述读取 地址时,根据读取地址所对应的替换地址,从替换存储器中获取对应的替换数据并返回至 处理器;刷新重启组件,用于当所述数据错误且无法纠正,同时映射表中不存在所述读取地 址时,分配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表项写入映射 表,并输出重启指令。
结合第二方面第二种可能的实现方式,在第四种可能的实现方式中,所述纠正返 回模块包括纠正直接返回组件,用于当所述数据错误但可以纠正,同时映射表中存在所述 读取地址时,将纠正后的数据返回至处理器;纠正刷新写入组件,用于当所述数据错误但可 以纠正,同时映射表中不存在所述读取地址时,分配一个替换存储器的空白地址与所述读 取地址对应,作为新的映射表项写入映射表,并将纠正后数据写入所述空白地址对应的存 储单元。
第三方面,所述数据存储系统包括用于控制读写操作的存储控制器、用于向存储 控制器发送读写指令的处理器,所述存储控制器的第一通道接口连接有主存储器,第二通 道接口连接有替换存储器,所述存储控制器中保存有第一映射表,所述存储控制器还包括 存储器故障单元的替换装置,其中所述第一映射表保存有主存储器中故障单元地址和替换 存储器中对应替换地址的映射关系,所述替换存储器用于保存主存储器中故障单元所对应 的正确数据。
在第三方面的第一种可能的实现方式中,所述替换存储器中还保存有与所述第一 映射表内容相同的第二映射,所述第一映射表刷新时,所述第二映射表同步刷新。在第三方 面的第二种可能的实现方式中,所述存储控制器还连接有映射表存储器,所述映射表存储 器中保存有与所述第一映射表内容相同的第二映射表,所述第一映射表刷新时,所述第二映射表同步刷新。
结合第三方面的第一种、第二种可能的实现方式,在第三方面的第三种可能的实 现方式中,当储控制器所在单板重启时,储控制器将替换存储器或映射表存储器中保存的 第二映射表加载更新到本地的第一映射表中。
结合第三方面以及第三方面的第一种、第二种、第三种可能的实现方式,在第三方 面的第四种可能的实现方式中,所述主存储器为动态随机存取存储器DRAM或静态随机存 取存储器SRAM ;所述替换存储器为DRAM、SRAM或相变存储器PCRAM。
在本发明实施例中,通过增加了一块位于独立通道的小容量替换存储器,该替换 存储器中保存有主存储器中故障单元对应的正确数据,主存储器的故障单元的地址与替换 存储器的对应正确数据的地址作为一个映射表项存储在映射表中,在读取主存储器中的数 据时,若检测到数据有误,可以通过查找映射表,找到故障单元地址对应的替换地址,从替 换存储器中获取所述替换地址对应的替换数据并返回至处理器,因此本发明实施例增加了 一个用于存储故障单元替换数据的替换存储器,能够识别出主存储器的故障单元,即使出 现了多处错误,亦可在替换存储器中获取正确的数据,同时,由于存储单元故障概率很小, 访问替换存储器的概率也很小,因此对系统整体读写性能影响很小,并且替换存储器的容 量也非常小,成本和功耗都很低。


图1是本发明第一实施例提供的一种存储器故障单元的替换方法的流程图2是本发明第二实施例提供的一种存储器故障单元的替换方法的流程图3是本发明第三实施例提供的一种存储器故障单元的替换方法的流程图4是本发明第四实施例提供的一种存储器故障单元的替换装置的结构方框图5是本发明第五实施例提供的一种存储器故障单元的替换装置的结构方框图6是本发明第六实施例提供的一种存储器故障单元的替换装置的结构方框图7是本发明第七实施例提供的一种数据存储系统的结构图8是本发明第七实施例提供的另一种数据存储系统的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
本发明在现有主存储器之外增加了一个小容量的替换存储器,所述替换存储器位 于独立的通道接口连接到存储控制器,所述替换存储器中存储有主存储器中故障单元的对 应的正确数据,主存储器的故障单元的地址与替换存储器的对应正确数据的地址作为一个 映射表项存储在映射表中,通过查找映射表找到故障单元地址对应的替换地址,从替换存 储器中获取所述替换地址对应的替换数据并返回至处理器。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明第一实施例提供的一种存储器故障单元的替换方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。
步骤S101、根据读取地址读取主存储器中对应数据;
步骤S102、检测所述数据是否正确。
当需要读取主存储器的数据时,处理器发出读数据指令,所述读数据指令包括主 存储器中数据的读取地址。在具体实现时,将该读取地址保存在地址寄存器中,供后续查找 映射表;在获取到读取地址对应的数据时,将该数据保存到数据寄存器中,存储控制器中的 检测纠错单元对所述数据进行校验。
步骤S103、若所述数据错误,则在映射表中查找所述读取地址对应的替换地址,从 替换存储器中获取所述替换地址对应的替换数据并返回至处理器,其中所述映射表保存有 主存储器中故障单元地址和替换存储器中对应替换地址的映射关系,所述替换存储器用于 保存主存储器中故障单元所对应的正确数据。
在本发明实施中,映射表保存在存储控制器中,映射表保存有主存储器中故障单 元的地址和替换存储器中对应替换地址的映射关系,每个映射关系作为一个映射表项存 储,作为一种具体实现方式,存储格式如下
主存储器故障单元地址替换存储器替换地址故障单元地址I替换地址I故障单元地址2替换地址2故障单元地址N替换地址N
所述映射表的容量可以事先确定,这与主存储器的容量大小和失效概率有关,通 常主存储器的失效概率很小,因此映射表的容量可以比较小,例如对于IGB容量的主存储 器,其映射表可以选择64、128或256个映射表项。
当检测到所述数据存在错误时,当前读取地址所对应的存储单元可以认为是故障 单元,根据读取地址(亦即映射表中的故障单元地址)在所述映射表中查找对应的替换地 址,替换存储器中所述替换地址对应的替换数据就是所述故障单元对应的正确数据,将该 替换数据返回至处理器,供处理器后续处理即可。
步骤S104、若所述数据正确,则将所述数据直接返回至处理器。
当检测所述数据正确,可以将所述数据返回至处理器,供处理器后续处理即可。
在本发明实施例中,即使故障单元中出现了多处数据错误,只需查找映射表找到 故障单元对应的替换地址,从替换存储器中找到所述替换地址对应的替换数据返回至处理 器即可,该替换数据就是故障单元对应的正确数据。此外,由于主存储器的存储单元失效的 概率很小,所以访问替换存储器基本不会影响系统效率。
实施例二 :
图2示出了本发明第二实施例提供的一种存储器故障单元的替换方法的流程,为 了便于说明仅示出了与本发明实施例相关的部分。
步骤S201、根据写入地址将数据写入主存储器中对应的存储单元,若映射表中存 在所述写入地址,将所述数据同时替换存储器中对应的存储单元。
当需要向主存储器写入数据时,判断所述映射表中存在所述写入地址,若存在,则 将数据同时写入主存储器和替换存储器中对应的存储单元;否则数据只写入主存储器中对 应的存储单元。
所述映射表中存储的是主存储器中的故障单元的地址与替换存储器中对应的替 换地址的映射表项,在需要向主存储器写入数据时,处理器会发出一个写数据指令,所述 写数据指令包括需要向主存储器写入数据的写入地址,查找映射表中是否存在所述写入地 址,步骤S202、根据读取地址读取主存储器中对应数据;
步骤S203、检测所述数据是否正确。
步骤S202-S203与步骤S101-S102相同,此处不再赘述。
步骤S204、若所述数据错误,同时判断所述数据是否可纠正。
在本步骤中,通过预设的校验算法检测数据,主存储器中存储有数据以及所述数 据相应的校验位,在读取数据的同时获取相应的校验位,再对所述数据用校验算法计算,得 到的结果与所述获取的校验位进行比对,即可检测出所述数据是否存在错误以及是否可纠 正。具体的,可以通过输出一个2bit的状态信号error来表示不同的检测状态。如可以设置 当检测出所述数据正确,则error=0 ;当检测出所述数据存在错误并可以纠正,则error=l ; 当检测出所述数据错误但不可纠正,则error=2。
步骤S205、若所述数据错误且不可纠正,则在映射表中查找所述读取地址对应的 替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器。
若通过比对检测位,发现所述数据不可纠正,这里数据能否纠正与校验位的位数 和校验算法有关,比如对于常用的ECC算法,只能发现错误并能纠错一位,当数据出现2位 或者更多位数数据错误,则无法进行纠错。在本步骤中,若出现此种情况,所述数据存在错 误但不可纠正,那么再查找映射表,根据映射表中的映射表项,找到当前读取地址(亦即故 障单元地址)所对应的替换地址,在替换存储器中获取所述替换地址对应的替换数据作为 正确的数据返回至处理器。因此,在本步骤中可以实现对于无法纠错的情况,通过访问替换 存储器亦可得到正确的数据结果。
步骤S206、若所述数据错误但可纠正,将纠正后的数据返回至处理器。
若通过校验算法可以进行错误纠正,则直接将纠正后的数据返回至处理器。由于 访问替换存储器获取正确数据的效率较低,因此在本步骤中,在可以通过校验算法纠正数 据时,就无需访问替换存储器,这样可以进一步提高数据读取效率。
步骤S207、若所述数据正确,则将所述数据直接返回至处理器。
本发明实施例与实施例一不同在于,本实施例为了提高数据读取效率,当检测到 数据出错时还要判断数据错误是否可纠正,若数据可纠正就无需通过查找映射表访问替换 存储器,如此总体上减少了替换存储器的访问次数,提高了数据读取效率;此外还增加了数 据写入步骤,得到一个比较完整的技术方案。
实施例三:
图3示出了本发明第三实施例提供的一种存储器故障单元的替换方法的流程,为 了便于说明仅示出了与本发明实施例相关的部分。
步骤S301、根据写入地址将数据写入主存储器中对应的存储单元,若映射表中存 在所述写入地址,将所述数据同时替换存储器中对应的存储单元;
步骤S302、根据读取地址读取主存储器中对应数据;
步骤S303、检测所述数据是否正确;
步骤S304、若所述数据错误,同时判断所述数据是否可纠正。
步骤S301-S304与步骤S201-S204相同,此处不再赘述。
步骤S305、若所述数据无法纠正,再查找映射表中是否存在所述读取地址。
作为具体实施方式
,本发明实施例可以通过输出一个2bit的状态信号error来表 示不同的检测状态。如可以设置当检测出所述数据正确,则error=0 ;当检测出所述数据存 在错误并可以纠正,贝1J error=l ;当检测出所述数据错误但不可纠正,则error=2。那么在本 步骤中,输出信号eiror = 2,进一步将所述读取地址与映射表中的表项进行比对,即可判 断出映射表中是否存在所述读取地址,具体的,可以通过输出不同的电平信号来表示不同 的判断结果,例如当映射表中存在所述读取地址,可以输出一个高电平的match信号来表 示,当映射表中不存在所述读取地址时,可以输出一个低电平的match信号来表示。
步骤S306、若所述数据错误且无法纠正,同时映射表中存在所述读取地址,则根据 读取地址所对应的替换地址,从替换存储器中获取对应的替换数据并返回至处理器。
作为具体的实施方式,本实施例中当输出的error = 2、match信号为高电平时,SP 可认定所述数据错误且无法纠正,同时映射表中存在所述读取地址,替换存储器中保存有 正确数据,此时根据读取地址所对应的替换地址,获取替换存储器中对应存储单元中的替 换数据,该替换数据作为正确的数据返回至处理器。
步骤S307、若所述数据错误且无法纠正,同时映射表中不存在所述读取地址,则分 配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表项写入映射表,并输 出重启指令。
作为具体的实施方式,本实施例中当输出的error=2、match信号为低电平时,即 可认定所述数据错误且无法纠正,同时映射表中不存在所述读取地址,此时刷新映射表,即 分配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表项写入映射表,并 输出重启指令给处理器,使处理器所在单板重启。
在本实施例中,刷新映射表的目的是为了避免重启之后所述读取地址再次出现 不可纠正的错误,分配一个替换存储器的空白地址与所述读取地址对应,此后每次往该出 错的读取地址执行写操作时,都会同时往替换存储器中所述的空白地址写入一份相同的数 据,从而保证以后不会在该地址出现无法恢复的错误数据。
步骤S308、若所述数据可以纠正,再查找映射表中是否存在所述读取地址。
本步骤与步骤S304区别在于,本步骤中数据可以纠正,同样作为具体实施方式
, 本步骤中,输出信号eir0r=l,进一步将所述读取地址与映射表中的表项进行比对,即可判 断出映射表中是否存在所述读取地址,同样可以通过输出一个高电平的match信号来表示 当映射表中存在所述读取地址,通过输出一个低电平的match信号来表示映射表中不存在 所述读取地址。
步骤S309、若所述数据错误但可以纠正,同时映射表中存在所述读取地址,则将纠 正后的数据返回至处理器。
作为具体的实施方式,本步骤中当输出的error=l、match信号为高电平时,即可 认定所述数据错误但可以纠正,同时映射表中存在所述读取地址,此时直接将纠正后的数 据返回至处理器。
步骤S310、若所述数据错误但可以纠正,同时映射表中不存在所述读取地址,则将 纠正后的数据返回至处理器,再分配一个替换存储器的空白地址与所述读取地址对应,作 为新的映射表项写入映射表,并将纠正后数据写入所述空白地址对应的存储单元。
作为具体的实施方式,本步骤中当输出的error=l、match信号为低电平时,即可 认定所述数据错误但可以纠正,同时映射表中不存在所述读取地址,此时将纠正后的数据 返回至处理器,再刷新映射表,即分配一个替换存储器的空白地址与所述读取地址对应,作 为新的映射表项写入映射表,再纠正后数据写入所述空白地址对应的存储单元。
在本实施中,因为主存储器内的故障单元内的错误是会积累的,例如当前发生的 是可纠正的单比特错误,此后又有一个比特发生变化,这样再次读取该地址的数据时就会 超出校验算法的纠错能力,这里分配一个替换存储器的空白地址,写入所述正确数据,就可 以避免这种故障单元中出现多处错误的情况。
步骤S311、若所述数据正确,则将所述数据直接返回至处理器。
当输出error=。,表明当前检测的数据没有错误,此时可以直接将数据返回至处理 器。
作为优选的,考虑到映射表的容量是有限的,如果主存储器的故障单元不断增加, 可能会超过映射表的容量,当已达到映射表容量上限时,还需写入新的映射表项,比如本实 施例中的步骤S306和S309,此时需要通过某种替换方法来更新映射表项。作为具体的操 作方式,这里可以随机选取一个映射表项替换为所述新的映射表项;或者,在映射表中按照 顺序顺次替换所述新的映射表项(例如映射表容量为N,新增的第N+1个表项覆盖第一个表 项,第N+2个表项覆盖第2个表项等);或者,将最近最少使用的映射表项替换为所述新的映 射表项。显然这只是列举的三种映射表更新方式,本发明实施例包括但不限于此。作为优 选实施方式,还需要向处理器产生中断告警,要求维护人员更换主存储器,避免由于映射表 容量不足造成主存储器的错误无法修复而出现问题。
在本发明实施例中,根据读取数据的状态(包括是否存在错误、存在错误时能否纠 正)以及映射表中是否存在所述读取地址来决定对数据的具体操作。在具体实现时,根据 error信号和match信号的状态来决定数据操作方式。实施例二实现的前提是映射表中存 在所述读取地址,而本实施例针对这种情况提供了 一个更为完整的技术方案。
实施例四
图4示出了本发明第四实施例提供的一种存储器故障单元的替换装置的结构方 框图,为了便于说明仅示出了与本发明实施例相关的部分。
本实施例提供的存储器故障单元的替换装置包括
数据读取单元401,用于根据读取地址读取主存储器中对应数据;
数据检测单元402,用于检测所述数据是否正确;
替换数据返回单元403,用于当所述读取检测单元检测到所述数据错误时,映射表 中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据 并返回至处理器,其中所述映射表保存有主存储器中故障单元地址和替换存储器中对应替换地址的映射关系,所述替换存储器用于保存主存储器中故障单元所对应的正确数据;
数据直接返回单元404,用于当所述读取检测单元检测到所述数据正确时,将所述数据直接返回至处理器。
本实施例中,数据读取单元401接收处理器发出读数据指令,根据其中包含的读取地址获取主存储器中相应数据,控制数据检测单元402对所述数据进行检测,若检测出所述数据有误,则替换数据返回单元403在映射表中查找所述读取地址对应的替换地址, 从替换存储器中获取所述替换地址对应的替换数据并返回至处理器,其中,所述映射表保存有主存储器中故障单元的地址和替换存储器中对应替换地址的映射关系,每个映射关系作为一个映射表项存储;若检测出所述数据正确,则数据直接返回单元404将所述数据返回至处理器,供处理器后续处理。在本发明实施例中,即使故障单元中出现了多处数据错误,只需查找映射表找到故障单元对应的替换地址,从替换存储器中找到所述替换地址对应的替换数据返回至处理器即可,此外,由于主存储器的存储单元失效的概率很小,所以访问替换存储器基本不会影响系统效率。
实施例五
图5示出了本发明第五实施例提供的一种存储器故障单元的替换装置的结构方框图,为了便于说明仅示出了与本发明实施例相关的部分。
本实施例提供的存储器故障单元的替换装置包括
数据写入单元51,用于根据写入地址将数据写入主存储器中对应的存储单元,若映射表中存在所述写入地址,将所述数据同时替换存储器中对应的存储单元。
数据读取单元52,用于根据读取地址读取主存储器中对应数据;
数据检测单元53,用于检测所述数据是否正确;
替换数据返回单元54,用于当所述数据检测单元检测到所述数据错误时,映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器,其中所述映射表保存有主存储器中故障单元地址和替换存储器中对应替换地址的映射关系,所述替换存储器用于保存主存储器中故障单元所对应的正确数据;
数据直接返回单元55,用于当所述数据检测单元检测到所述数据正确时,将所述数据直接返回至处理器。
其中,所述替换数据返回单元54包括
替换返回模块541,用于当所述数据错误且无法纠正时,在映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器;
纠正返回模块542,用于当所述数据错误但可以纠正时,将纠正后的数据返回至处理器。
本实施例中,替换数据返回单元还要根据错误数据是否可纠正做出相应操作。具体的,可以通过输出一个2bit的状态信号eiror来表示不同的检测状态。如可以设置当检测出所述数据正确,则error=0 ;当检测出所述数据存在错误并可以纠正,则error=l ;当检测出所述数据错误但不可纠正,则θπ·0Γ=2。若通过比对检测位,发现所述数据不可纠正, 替换返回模块查找映射表,根据映射表中的映射表项,找到当前读取地址(亦即故障单元地址)所对应的替换地址,在替换存储器中获取所述替换地址对应的替换数据作为正确的数据返回至处理器。若通过校验算法可以进行错误纠正,则纠正返回模块将纠正后的数据返 回至处理器。本实施例为了提高数据读取效率,当检测到数据出错时还要判断数据错误是 否可纠正,若数据可纠正就无需通过查找映射表访问替换存储器,如此总体上减少了替换 存储器的访问次数,提高了数据读取效率。
实施例六:
图6示出了本发明第六实施例提供的一种存储器故障单元的替换装置的结构方 框图,为了便于说明仅示出了与本发明实施例相关的部分。
本发明实施例提供的存储器故障单元的替换装置包括
数据写入单元61,用于根据写入地址将数据写入主存储器中对应的存储单元,若 映射表中存在所述写入地址,将所述数据同时替换存储器中对应的存储单元。
数据读取单元62,用于根据读取地址读取主存储器中对应数据;
数据检测单元63,用于检测所述数据是否正确;
替换数据返回单元64,用于当所述读取检测单元检测到所述数据错误时,映射表 中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据 并返回至处理器,其中所述映射表保存有主存储器中故障单元地址和替换存储器中对应替 换地址的映射关系,所述替换存储器用于保存主存储器中故障单元所对应的正确数据;
数据直接返回单元65,用于当所述读取检测单元检测到所述数据正确时,将所述 数据直接返回至处理器。
其中,所述替换数据返回单元64包括
替换返回模块641,用于当所述数据错误且无法纠正时,在映射表中查找所述读 取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理 器;
纠正返回模块642,用于当所述数据错误但可以纠正时,将纠正后的数据返回至处理器。
所述替换返回模块641包括
替换返回组件6411,用于当所述数据错误且无法纠正,同时映射表中存在所述读 取地址时,根据读取地址所对应的替换地址,从替换存储器中获取对应的替换数据并返回 至处理器;
刷新重启组件6412,用于当所述数据错误且无法纠正,同时映射表中不存在所述 读取地址时,分配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表项写 入映射表,并输出重启指令。
所述纠正返回模块642包括
纠正直接返回组件6421,用于当所述数据错误但可以纠正,同时映射表中存在所 述读取地址时,将纠正后的数据返回至处理器;
纠正刷新写入组件6422,用于当所述数据错误但可以纠正,同时映射表中不存在 所述读取地址时,分配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表 项写入映射表,并将纠正后数据写入所述空白地址对应的存储单元。
本实施例在确定错误数据能否纠正的同时,还要根据所述读取地址是否存在于 映射表中,具体实现时,通过输出信号error和match来标识不同的工作状况,当输出的error=2,match信号为高电平时,即可认定所述数据错误且无法纠正,同时映射表中存在所 述读取地址,替换返回组件根据读取地址所对应的替换地址,从替换存储器中获取对应的 替换数据并返回至处理器;当输出的error = 2、match信号为低电平时,即可认定所述数据 错误且无法纠正,同时映射表中不存在所述读取地址,刷新重启组件刷新映射表,并输出重 启指令给处理器;当输出的error=l、match信号为高电平时,即可认定所述数据错误但可 以纠正,同时映射表中存在所述读取地址,纠正直接返回组件直接将纠正后的数据返回至 处理器;当输出的error =1、match信号为低电平时,即可认定所述数据错误但可以纠正, 同时映射表中不存在所述读取地址,此时将纠正后的数据返回至处理器,再刷新映射表,再 纠正后数据写入所述空白地址对应的存储单元。
作为优选的,考虑到映射表的容量是有限的,如果主存储器的故障单元不断增加, 可能会超过映射表的容量,当已达到映射表容量上限时,还需写入新的映射表项,此时需要 通过某种替换方法来更新映射表项,作为具体的操作方式,这里可以随机选取一个映射表 项来替换所述新的映射表项;或者,在映射表中按照顺序顺次替换所述新的映射表项(例如 映射表容量为N,新增的第N+1个表项覆盖第一个表项,第N+2个表项覆盖第2个表项等); 或者,选取最近最少使用的映射表项来替换所述新的映射表项。显然这只是列举的三种映 射表更新方式,本发明实施例包括但不限于此。作为优选实施方式,还需要向处理器产生中 断告警,要求维护人员更换主存储器,避免由于映射表容量不足造成主存储器的错误无法 修复而出现问题。
由于本实施例中,在数据错误且无法纠正,同时映射表中不存在所述读取地址时, 需要刷新映射表可以避免重启之后所述读取地址再次出现不可纠正的错误;在数据错误但 可以纠正,同时映射表中不存在所述读取地址时,通过刷新映射表可以避免故障单元中出 现多处错误无法纠正的情况。
实施例7
图7示出了本发明第七实施例提供的一种数据存储系统的结构图,为了便于说明 仅不出了与本发明实施例相关的部分。
所述数据存储系统包括所述系统包括用于控制读写操作的存储控制器1、用于 向存储控制器发送读写指令的处理器2,所述存储控制器I的第一通道接口连接有主存储 器3,第二通道接口连接有替换存储器4,所述存储控制器I中保存有第一映射表11,所述存 储控制器I还包括存储器故障单元的替换装置12,其中所述第一映射表11保存有主存储 器3中故障单元地址和替换存储器4中对应正确数据的地址的映射关系,所述替换存储器 4用于保存主存储器中故障单元所对应的正确数据。
本实施例中主存储器3和替换存储器4与存储控制器I采用独立的通道接口,使 得两者互不干扰。处理器2发出数据读取指令时,存储器故障单元替换装置12根据读取 地址读取数据,并通过检测数据是否存在错误、存在错误时是否可纠正、以及当前读取地址 是否在映射表中,来决定不同的操作。存储控制器中存储有映射表。具体的在本实施例 中,通过error信号和match信号来标识不同的工作状况,当error=0,表明所述数据不存 在错误,直接将所述数据返回至处理器;当error=l、match为高电平,表明所述数据错误 但可以纠正,同时映射表中存在所述读取地址,此时直接将纠正后的数据返回至处理器;当 eir0r=l、matCh信号为低电平时,表明所述数据错误但可以纠正,同时映射表中不存在所述读取地址,此时将纠正后的数据返回至处理器,再刷新映射表,将纠正后数据写入所述空白 地址对应的存储单元;当error = 2、match信号为高电平时,表明所述数据错误且无法纠 正,同时映射表中存在所述读取地址,此时根据读取地址所对应的替换地址,从替换存储器 中获取对应的替换数据并返回至处理器;当error = 2、match信号为低电平时,表明所述数 据错误且无法纠正,同时映射表中不存在所述读取地址,此时刷新映射表,并输出重启指令 给处理器,处理器将所在单板重启。因此可以通过检测error信号和match信号不同状态 来执行相应操作。
当处理器2发出写数据指令时,数据写入装置13通过match信号的电平状态来判 断第一映射表中是否存在所述写入地址。当match信号为低电平时,表明第一映射表中不 存在所述写入地址,直接将数据写入所述主存储器中对应的存储单元;当match信号为高 电平时,表明第一映射表中存在所述写入地址,该写入地址对应的存储单元为故障单元,此 时需要将数据同时写入主存储器中所述写入地址对应的存储单元,以及替换存储器中对应 替换地址所对应的存储单元,这样保证故障单元中的数据同步,以便当主存储器出现错误 时可以从替换存储器中得到正确的数据。
作为优选实施方式,所述替换存储器4中还保存有与所述第一映射表内容相同的 第二映射表6,这样在单板复位重启或重新上电时,存储控制器I都会自动将替换存储器4 的第二映射表加载到自身的第一映射表中,然后开始按第一映射表工作。存储控制器I每 次刷新第一映射表时,都要同时更新替换存储器中的第二映射表,保持两者的一致性。如果 用户更换了主存储器3,这里可以通过单板提供的命令将存储控制器I和替换存储器4中的 映射表全部清除,然后重新开始工作。
作为另一种实现方式,如图8所示,所述第二映射表6亦可保存在与存储控制器I 连接的独立的映射表存储器5中,述第一映射表刷新时,所述第二映射表同步刷新。
本实施例中所述的存储器,包括主存储器、替换存储器均可采用DRAM、SRAM,由于 替换存储器的容量要求不高,考虑到成本问题,所述替换存储器和映射表存储器还可以采 用PCRAM,在单板复位重启或重新上电时,PCRAM上的内容都不会丢失,保证单板运行可靠 性。PCRAM还可以像DRAM、SRAM —样按字节修改内容,不用先擦除,读写性能仅比DRAM、SRAM 低一个数量级,PCRAM与DRAM、SRAM通过电荷来保存信息不同,PCRAM是利用材料处于晶态、 非晶态的不同电阻值来保存信息的,不受宇宙射线、放射性元素的影响,因此不会有软失效 问题。
虽然替换存储器采用PCRAM时性能比主存储器低,但是由于替换存储器的容量 很小(例如主存储器容量1GB,替换存储器容量256Byte),处理器访问到这些地址的概 率很低(仅当从主存储器读出的数据有错且不可纠正、match为高电平这种情况才会完 全依赖从替换存储器得到的数据),所以主存储器的平均访问性能并不会降低太多。举 例来说,假设主存储器的访问时间是5ns,访问比例是99. 9%,替换存储器的访问时间是 50ns,访问比例是O. 1%,那么总的平均访问时间是5*99. 9%+50*0. 1%=5. 045ns,性能降低了 (5. 045-5)/5=0. 9%,不至Ij 1%。
综上所述,本发明实施例增加了一块位于独立通道的小容量替换存储器,该替换 存储器中保存有主存储器中故障单元的数据,主存储器的故障单元的地址与替换存储器的 对应存储单元的地址作为一个映射表项存储在映射表中,在读取主存储器中的数据时,若检测到数据有误,可以通过查找映射表,找到故障单元地址对应的替换地址,从替换存储器 中获取所述替换地址对应的替换数据并返回至处理器,因此本发明实施例增加了一个用于 存储故障单元替换数据的替换存储器,能够识别出主存储器的故障单元,即使出现了多处 错误,亦可在替换存储器中获取正确的数据,同时,由于存储单元故障概率根小,访问替换 存储器的概率也很小,因此对系统整体读写性能影响很小,并且替换存储器的容量也非常 小,成本和功耗都很低。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以 通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质 中,所述的存储介质,如R0M/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种存储器故障单元的替换方法,其特征在于,所述方法包括 根据读取地址读取主存储器中对应数据; 检测所述数据是否正确; 若所述数据错误,则在映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器,其中所述映射表保存有主存储器中故障单元地址和替换存储器中对应替换地址的映射关系,所述替换存储器用于保存主存储器中故障单元所对应的正确数据; 若所述数据正确,则将所述数据直接返回至处理器。
2.如权利要求1所述方法,其特征在于,所述根据读取地址读取主存储器中对应数据步骤之前,还包括 根据写入地址将数据写入主存储器中对应的存储单元,若映射表中存在所述写入地址,将所述数据同时替换存储器中对应的存储单元。
3.如权利要求1或2所述方法,其特征在于,所述若所述数据错误,则在映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器包括 若所述数据错误且无法纠正,则在映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器。
4.如权利要求3所述方法,其特征在于,还包括 若所述数据错误但可以纠正,则将纠正后的数据返回至处理器。
5.如权利要求3所述方法,其特征在于,若所述数据错误且无法纠正,则在映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器步骤,具体包括 若所述数据错误且无法纠正,同时映射表中存在所述读取地址,则根据读取地址所对应的替换地址,从替换存储器中获取对应的替换数据并返回至处理器。
6.如权利要求5所述的方法,其特征在于,还包括 若所述数据错误且无法纠正,同时映射表中不存在所述读取地址,则分配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表项写入映射表,并输出重启指令。
7.如权利要求4所述方法,其特征在于,所述若所述数据错误但可以纠正,则将纠正后的数据返回至处理器步骤,具体包括 若所述数据错误但可以纠正,同时映射表中存在所述读取地址,则将纠正后的数据返回至处理器。
8.如权利要求7所述的方法,其特征在于还包括 若所述数据错误但可以纠正,同时映射表中不存在所述读取地址,则将纠正后的数据返回至处理器,再分配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表项写入映射表,并将纠正后数据写入所述空白地址对应的存储单元。
9.如权利要求6或8所述方法,其特征在于,在写入新的映射表项时若已达到映射表的容量上限,则随机选取一个映射表项替换为所述新的映射表项;或者,在映射表中按照顺序顺次替换所述新的映射表项;或者,将最近最少使用的映射表项替换为所述新的映射表项。
10.如权利要求9所述方法,其特征在于,在写入新的映射表项时若已达到映射表的容量上限,则同时向处理器输出中断告警。
11.一种存储器故障单元的替换装置,其特征在于,所述装置包括 数据读取单元,用于根据读取地址读取主存储器中对应数据; 数据检测单元,用于检测所述数据是否正确; 替换数据返回单元,用于当所述读取检测单元检测到所述数据错误时,映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器,其中所述映射表保存有主存储器中故障单元地址和替换存储器中对应替换地址的映射关系,所述替换存储器用于保存主存储器中故障单元所对应的正确数据; 数据直接返回单元,用于当所述读取检测单元检测到所述数据正确时,将所述数据直接返回至处理器。
12.如权利要求11所述装置,其特征在于,所述装置还包括 数据写入单元,用于根据写入地址将数据写入主存储器中对应的存储单元,若映射表中存在所述写入地址,将所述数据同时替换存储器中对应的存储单元。
13.如权利要求11或12所述装置,其特征在于,所述替换数据返回单元包括 替换返回模块,用于当所述数据错误且无法纠正时,在映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器; 纠正返回模块,用于当所述数据错误但可以纠正时,将纠正后的数据返回至处理器。
14.如权利要求13所述装置,其特征在于,所述替换返回模块包括替换返回组件,用于当所述数据错误且无法纠正,同时映射表中存在所述读取地址时,根据读取地址所对应的替换地址,从替换存储器中获取对应的替换数据并返回至处理器;刷新重启组件,用于当所述数据错误且无法纠正,同时映射表中不存在所述读取地址时,分配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表项写入映射表,并输出重启指令。
15.如权利要求13所述装置,其特征在于,所述纠正返回模块包括 纠正直接返回组件,用于当所述数据错误但可以纠正,同时映射表中存在所述读取地址时,将纠正后的数据返回至处理器; 纠正刷新写入组件,用于当所述数据错误但可以纠正,同时映射表中不存在所述读取地址时,分配一个替换存储器的空白地址与所述读取地址对应,作为新的映射表项写入映射表,并将纠正后数据写入所述空白地址对应的存储单元。
16.一种数据存储系统,其特征在于,所述系统包括用于控制读写操作的存储控制器(I)、用于向存储控制器发送读写指令的处理器(2),所述存储控制器(I)的第一通道接口连接有主存储器(3),第二通道接口连接有替换存储器(4),所述存储控制器(I)中保存有第一映射表(11),所述存储控制器(I)还包括如权利要求11-15所述的存储器故障单元的替换装置,其中所述第一映射表(11)保存有主存储器(3)中故障单元地址和替换存储器(4)中对应正确数据的地址的映射关系,所述替换存储器(4)用于保存主存储器中故障单元所对应的正确数据。
17.如权利要求16所述系统,其特征在于,所述替换存储器(4)中还保存有与所述第一映射表内容相同的第二映射表(6 ),所述第一映射表刷新时,所述第二映射表同步刷新。
18.如权利要求16所述系统,其特征在于,所述存储控制器(I)还连接有映射表存储器(5),所述映射表存储器(5)中保存有与所述第一映射表内容相同的第二映射表(6),所述第一映射表刷新时,所述第二映射表同步刷新。
19.如权利要求17或18所述系统,其特征在于,当储控制器(I)所在单板重启时,储控制器(I)将替换存储器(4)或映射表存储器(5)中保存的第二映射表加载更新到本地的第一映射表中。
20.如权利要求16-19任一项所述系统,其特征在于,所述主存储器(3)为动态随机存取存储器DRAM或静态随机存取存储器SRAM ;所述替换存储器(4)为DRAM、SRAM或相变存储器PCRAM。
全文摘要
本发明适用于数据处理领域,提供一种存储器故障单元的替换方法及装置、数据存储系统,其中所述方法包括根据读取地址读取主存储器中对应数据,并检测所述数据是否正确;若所述数据错误,则在映射表中查找所述读取地址对应的替换地址,从替换存储器中获取所述替换地址对应的替换数据并返回至处理器,其中所述映射表保存有主存储器中故障单元地址和替换存储器中对应替换地址的映射关系,所述替换存储器用于保存主存储器中故障单元所对应的正确数据;若所述数据正确,则将所述数据直接返回至处理器。使用本方法即使主存储器存储单元中出现了多处错误,亦可通过映射表获取正确的数据,并且替换存储器的容量也非常小,成本和功耗都很低。
文档编号G06F11/07GK103019873SQ20121050903
公开日2013年4月3日 申请日期2012年12月3日 优先权日2012年12月3日
发明者李延松 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1