一种大规模FLASH存储阵列的多层次数据冗余方法.pdf

上传人:62****3 文档编号:859389 上传时间:2018-03-15 格式:PDF 页数:15 大小:722.26KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910053399.9

申请日:

2009.06.19

公开号:

CN101587744A

公开日:

2009.11.25

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

G11C16/02; G11C16/06; G11C29/24

主分类号:

G11C16/02

申请人:

上海微小卫星工程中心

发明人:

杨 凯; 李华旺; 常 亮

地址:

200050上海市长宁区长宁路865号

优先权:

专利代理机构:

上海天翔知识产权代理有限公司

代理人:

刘粉宝

PDF下载: PDF下载
内容摘要

本发明提供一种大规模FLASH存储阵列的多层次数据冗余方法,将大规模FLASH存储阵列的存储单元分为页级、FLASH芯片级、FLASH芯片组级三个层次,根据所划分的层次以及所需的容错等级选择不同的冗余编码存入大规模FLASH存储阵列中预留的数据冗余空间中;当出现错误时,利用数据冗余空间中的冗余编码即时纠正错误;与现有技术相比,针对大规模FLASH阵列应用,在不同的层次采取不同的冗余策略,极大地提高了数据存储的可靠性,充分利用硬件的并行运算能力,极大地减少了加入数据冗余校验位而引起的IO性能下降,缩短了损坏数据重建的时间代价,并且系统的可靠性和冗余策略可由用户根据实际情况确定,配置灵活、方便,实现本发明的目的。

权利要求书

1、  一种大规模FLASH存储阵列的多层次数据冗余方法,其特征在于,将大规模FLASH存储阵列的存储单元分为页级、FLASH芯片级、FLASH芯片组级三个层次,根据所划分的层次以及所需的容错等级选择不同的冗余编码存入大规模FLASH存储阵列中预留的数据冗余空间中;当出现错误时,利用数据冗余空间中的冗余编码即时纠正错误。

2、
  如权利要求1所述的多层次数据冗余方法,其特征在于,对于大规模FLASH存储阵列中页级的存储单元,所述冗余编码采用汉明(HAMMING)码或者RS(Reed-Solomon)码,冗余编码存入大规模FLASH存储阵列中预留的数据冗余空间中,当页级存储单元中的数据出现错误个数时,利用冗余编码即时纠正错误。

3、
  如权利要求2所述的多层次数据冗余方法,其特征在于,当页级存储单元中的数据出现的错误超出纠错范围,则利用FLASH芯片级的冗余编码纠错。

4、
  如权利要求1所述的多层次数据冗余方法,其特征在于,对于大规模FLASH存储阵列中FLASH芯片级的存储单元,将N块FLASH芯片作为一组并行操作,有效存储空间为N-2块FLASH芯片的容量,其余的FLASH芯片容量作为数据冗余空间;将每组FLASH芯片中的数据产生两组不相关的奇偶校验码与Reed-Solomon码相结合作为冗余编码,所述冗余编码分别存储在每组FLASH芯片的数据冗余空间中;当发生小于等于两个的FLASH芯片级故障时,通过所述冗余编码从仍能正常工作的其余N-2块FLASH芯片可完整恢复数据。

5、
  如权利要求4所述的多层次数据冗余方法,其特征在于,所述冗余编码的存储位置按一定的策略分布在每组FLASH芯片内的每个FLASH芯片中。

6、
  如权利要求4所述的多层次数据冗余方法,其特征在于,根据可靠性以及系统存取速度的需求,每组FLASH芯片内用于存储数据的FLASH芯片数量可以大于N-2块以增加并行度和容量。

7、
  如权利要求1所述的多层次数据冗余方法,其特征在于,对于大规模FLASH存储阵列中FLASH芯片组级的存储单元,所述冗余编码采用将各个FLASH芯片组中相应位置的FLASH芯片中的每个比特进行奇偶运算得到的奇偶校验码,额外增加一个FLASH芯片组作为数据冗余空间,并将所述冗余编码存入额外增加的FLASH芯片组中;当存储数据的FLASH芯片组发生大于两个FLASH芯片乃至整组FLASH芯片损坏时,可通过所述冗余编码利用其它FLASH芯片组的FLASH芯片完整恢复数据。

8、
  如权利要求7所述的多层次数据冗余方法,其特征在于,考虑到对FLASH芯片组读写性能的影响,对存储所述奇偶校验码的校验位的FLASH芯片组的IO独立控制。

9、
  如权利要求8所述的多层次数据冗余方法,其特征在于,由于存储所述奇偶校验码的校验位的FLASH芯片组的读写比较频繁,在较大规模应用以及长寿命应用时应当适当增加备份组。

10、
  如权利要求7所述的多层次数据冗余方法,其特征在于,在数据写入时,应当先给出地址,在数据写入缓存的同时读出将要覆盖的数据以及校验码,之后在写入数据的同时写入三者运算所产生的新校验位。

说明书

一种大规模FLASH存储阵列的多层次数据冗余方法
技术领域
本发明涉及一种FLASH存储器的数据可靠存储方法,特别涉及一种适用于大规模FLASH存储阵列数据可靠存储的多层次数据冗余方法。
背景技术
随着科学技术的进步,FLASH存储器逐步成为目前性能价格比最高的固态非易失存储器。在一些领域,比如在航天工程中,存在着许多有可能在短时间内产生大量数据的任务,比如照相机,各种实时传感器等等;由于与地面接收站的交互时间窗口所限,这些数据必须先存储下来等待回传地面,与此同时,由于空间环境非常恶劣,大温差、宇宙射线等很多因素都有可能导致数据的损坏或丢失,这就对存储器的容量和可靠性提出了很高的要求。
一般情况下,由于FLASH存储器的应用规模较小,而且应用环境较好,因此对于FLASH存储器的可靠性要求不是很高。为了降低成本,FLASH存储器厂商并不保证出厂的FLASH芯片内部存储区域完全可用,而是存在着一定比例的坏块,在出厂时这些坏块被厂家标记出来,在使用中也有可能产生新的坏块,这些新产生的坏块需要用户自行管理。在可靠性方面,厂家一般在FLASH存储器内部提供了一定数量的冗余空间以存储一定数量的校验码。所以现有的有关FLASH存储器及其控制器的研究重点大多放在小规模应用时的坏块管理以及合适的校验码的研究或者大规模应用时利用并行性和流水线技术提高存取速率等方面,而对大规模应用时的数据可靠存储策略关注不够。
中国专利公开号为CN101320592A的专利公开了一种大容量FLASH固存控制器,解决了坏块管理问题以及FLASH芯片页内数据的校验与纠错问题,但对于因块损坏或者FLASH芯片损坏而导致的数据丢失问题并没有涉及。
再比如,西安电子科技大学的李超在2007年3月《火控雷达技术》第36卷发表的“高速大容量FLASH存储系统设计”一文中,对各个FLASH芯片进行页内循环校验编码并将编码结果存入页内预留的冗余区,同时对同一组的16块FLASH芯片进行奇偶校验编码并将编码结果存入同一组的第17块FLASH芯片,这种数据冗余方式在一定程度上加强了数据存储的可靠性,但是由于是并行操作,所以若同组内有两个及以上的FLASH相应位置的块发生损坏或者有两个及以上的FLASHFLASH芯片发生损坏时,这种方案就无能为力了。
发明内容
本发明的目的在于提供一种大规模FLASH存储阵列的多层次数据冗余方法,克服现有技术的不足,针对FLASH存储器的大规模、高可靠的应用需求,实现数据的高可靠存储。
本发明所解决的技术问题可以采用以下技术方案来实现:
一种大规模FLASH存储阵列的多层次数据冗余方法,其特征在于,将大规模FLASH存储阵列的存储单元分为页级、FLASH芯片级、FLASH芯片组级三个层次,根据所划分的层次以及所需的容错等级选择不同的冗余编码存入大规模FLASH存储阵列中预留的数据冗余空间中;当出现错误时,利用数据冗余空间中的冗余编码即时纠正错误。
在本发明的一个实施例中,对于大规模FLASH存储阵列中页级的存储单元,所述冗余编码采用汉明(HAMMING)码或者RS(Reed-Solomon)码,冗余编码存入大规模FLASH存储阵列中预留的数据冗余空间中,当页级存储单元中的数据出现错误个数时,利用冗余编码即时纠正错误。
进一步,当页级存储单元中的数据出现的错误超出纠错范围,则利用FLASH芯片级的冗余编码纠错。
在本发明的一个实施例中,对于大规模FLASH存储阵列中FLASH芯片级的存储单元,将N块FLASH芯片作为一组并行操作,有效存储空间为N-2块FLASH芯片的容量,其余的FLASH芯片容量作为数据冗余空间;将每组FLASH芯片中的数据产生两组不相关的奇偶校验码与Reed-Solomon码相结合作为冗余编码,所述冗余编码分别存储在每组FLASH芯片的数据冗余空间中;当发生小于等于两个的FLASH芯片级故障时,通过所述冗余编码从仍能正常工作的其余N-2块FLASH芯片可完整恢复数据。
进一步,所述冗余编码的存储位置按一定的策略分布在每组FLASH芯片内的每个FLASH芯片中。
进一步,根据可靠性以及系统存取速度的需求,每组FLASH芯片内用于存储数据的FLASH芯片数量可以大于N-2块以增加并行度和容量。
在本发明的一个实施例中,对于大规模FLASH存储阵列中FLASH芯片组级的存储单元,所述冗余编码采用将各个FLASH芯片组中相应位置的FLASH芯片中的每个比特进行奇偶运算得到的奇偶校验码,额外增加一个FLASH芯片组作为数据冗余空间,并将所述冗余编码存入额外增加的FLASH芯片组中;当存储数据的FLASH芯片组发生大于两个FLASH芯片乃至整组FLASH芯片损坏时,可通过所述冗余编码利用其它FLASH芯片组的FLASH芯片完整恢复数据。
在本发明的一个实施例中,考虑到对FLASH芯片组读写性能的影响,对存储所述奇偶校验码的校验位的FLASH芯片组的IO独立控制。
进一步,由于存储所述奇偶校验码的校验位的FLASH芯片组的读写比较频繁,在较大规模应用以及长寿命应用时应当适当增加备份组。
在本发明的一个实施例中,在数据写入时,应当先给出地址,在数据写入缓存的同时读出将要覆盖的数据以及校验码,之后在写入数据的同时写入三者运算所产生的新校验位。
本发明的一种大规模FLASH存储阵列的多层次数据冗余方法,与现有技术相比,针对大规模FLASH阵列应用,在不同的层次采取不同的冗余策略,极大地提高了数据存储的可靠性,充分利用硬件的并行运算能力,极大地减少了加入数据冗余校验位而引起的IO性能下降,缩短了损坏数据重建的时间代价,并且系统的可靠性和冗余策略可由用户根据实际情况确定,配置灵活、方便,实现本发明的目的。
附图说明
图1为本发明的整体方案框图;
图2为本发明的各级分层结构及数据冗余策略示意图;
图3为本发明的页级数据冗余编码设计RS(255,249)编码方案数据划分示意图;
图4为本发明的页级数据冗余编码设计RS(255,249)编码器示意图;
图5为本发明的FLASH芯片组级数据冗余编码过程示意图;
图6为本发明的FLASH芯片级数据冗余编码过程示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
如图1所示,一种大规模FLASH存储阵列的整体方案框图,整个大规模FLASH存储阵列采用可灵活配置的高性能FPGA控制,针对应用的不同需求可采取不同的方案。
如果数据的分组大小为块(Block)级或以上,则可在FPGA外部配置一块RAM作为数据缓存。在数据分组写入RAM之前,先将其地址写入。在数据分组写入RAM的同时将该地址的数据以及相应位置的校验数据从FLASH存储阵列中读入RAM,之后将数据分组写入该地址,与此同时运算产生新的校验数据并写入校验FLASH芯片组。
如果数据的分组大小为页(Page)级,则无需配置外部数据缓存,利用FPGA内部提供的RAM作为缓存即可。对数据的操作与上类似,这种情况适用于大规模数据的顺序连续写入。这是由于FLASH存储阵列的读写单元与擦除单元并不匹配:读写的最小单元为页,而擦除的最小单元为块。此时可以在FPGA中开辟一个大小为块的缓存区暂存校验数据,当写满一个块的缓冲区时再将数据写入相应的校验FLASH芯片。
本发明的一种大规模FLASH存储阵列的多层次数据冗余方法,将大规模FLASH存储阵列的存储单元分为页级、FLASH芯片级、FLASH芯片组级三个层次,根据所划分的层次以及所需的容错等级选择不同的冗余编码存入大规模FLASH存储阵列中预留的数据冗余空间中;当出现错误时,利用数据冗余空间中的冗余编码即时纠正错误。
如图2所示,本发明的各级分层结构及数据冗余策略从顶层向底层逐步说明如下:整个FLASH存储阵列以N个FLASH芯片为一组,组的数量和N的大小根据系统规模的需求而定。各组共享数据及控制总线,在同一时刻只能有一个组工作,组内的N个FLASH芯片并行操作,冗余编码采用奇偶校验码,用于整个阵列的奇偶校验的FLASH芯片组的数据及控制接口被独立出来,可以与其它FLASH芯片组并行操作。当有数据需要写入存储阵列时,需要先读出该数据要写入的地址的原数据以及相应位置的校验数据以用来运算产生新的校验数据,具体操作方式前文已分析。
FLASH存储阵列中每个组有N块FLASHFLASH芯片,其中N-2块FLASH芯片的容量用来存储数据,两块FLASH芯片的容量用来存储冗余的校验数据。存储方式按照输入数据分组的大小将每个FLASH芯片分为大小均等的条(最小单位是页),将数据组写入其中的四块FLASH芯片,与此同时计算得出两组不相关的校验数据写入其余的两个FLASH芯片。校验数据写入的FLASH芯片按照图2所示的方式轮换。两组校验数据的产生分别采用奇偶校验码和Reed-Solomon码作为冗余编码。如果可靠性要求较低,则每个FLASH芯片组可以使用超过N-2块FLASH芯片作为数据存储芯,这样可以增加并行度以提高存储阵列的读写速度同时增加系统容量。
每个FLASHFLASH芯片根据容量由数量不等的块(Block)组成,每个块由64页(Page)组成,每一页由2048Byte的数据存储区和64Byte的冗余存储区组成。根据可靠性以及性能需求,对2048Byte的数据可以采用HAMMING码编码方案或者RS(Reed-Solomon)作为冗余编码;实施时,首先将2048Byte的数据划分成合适大小的块,然后对每一块进行编码,产生的校验数据存入64Byte的冗余数据区即可。
实施例
下面给出一个具体的例子进一步说明本发明方法的原理。其中,页级存储单元的冗余编码采取Reed-Solomon码,FLASH芯片级存储单元的冗余编码采用奇偶校验码与Reed-Solomon码相结合,FLASH芯片组级存储单元的冗余编码采用奇偶校验码。每个组有6块FLASH芯片,其中4块FLASH芯片的容量用于存储数据,其余两块FLASH芯片的容量用于作为存储校验数据的数据冗余空间。原始数据分组为以4个块为单位,外接一块RAM作为数据缓存和地址命令寄存器。
如图3、图4所示,FLASH存储阵列页级数据冗余编码方案,可以纠正3个Byte的数据错误,冗余编码可以采用汉明(HAMMING)码或者RS(Reed-Solomon)码。
如图3所示,将2048Byte的数据划分成每249Byte一组,共9组,其中第9组为56Byte,不足249Byte,在运算过程中全部补0或1即可。每组数据经运算后将产生6Byte的冗余校验数据,共计54Byte,而页内数据冗余空间为64Byte,完全够用;当页级存储单元中的数据出现错误个数时,利用冗余编码即时纠正错误。
图4为FLASH存储阵列页级数据冗余编码的RS(255,249)编码器示意图,g为RS编码生成多项式系数。在前249个时钟周期,开关SW1闭合,开关SW2向下闭合,输入在直接输出的同时被送入编码器进行运算;在后6个时钟周期,开关SW1断开,开关SW2向上闭合,输出编码器运算结果,即输出移位寄存器的余项。至此,数据完成各级冗余编码,最终送入各FLASHFLASH芯片存放。
当页级存储单元中的数据出现的错误超出纠错范围,则利用FLASH芯片级的冗余编码纠错。
如图5所示,FLASH存储阵列FLASH芯片级数据冗余编码过程示意图,采用奇偶校验码与Reed-Solomon码相结合作为冗余编码,其中模块E为奇偶校验计算单元,主要进行异或运算;模块F为Reed-Solomon编码计算单元,F中的系数g为RS编码的生成多项式系数;模块G对过来的数据D0到D3进行页级数据冗余编码后将编码后的数据以及模块E、F分别产生的校验数据P1、P2以轮换的方式(如图2所示)放入数据FLASH芯片组的6块FLASH芯片中。
N块FLASH芯片作为一组并行操作,有效存储空间为N-2块FLASH芯片的容量,其余的FLASH芯片容量作为数据冗余空间,在本实施例中,每个组有6块FLASH芯片,其中4块FLASH芯片的容量用于存储数据,其余两块FLASH芯片的容量用于作为存储校验数据的数据冗余空间;将每组FLASH芯片中的数据产生两组不相关的校验码作为冗余编码,所述冗余编码分别存储在每组FLASH芯片的数据冗余空间中;当发生小于等于两个的FLASH芯片级故障时,通过所述冗余编码从仍能正常工作的其余FLASH芯片可完整恢复数据。
所述冗余编码的存储位置按一定的策略分布在每组FLASH芯片内的每个FLASH芯片中。
根据可靠性以及系统存取速度的需求,每组FLASH芯片内用于存储数据的FLASH芯片数量可以大于N-2块以增加并行度和容量。
如图6所示,FLASH存储阵列FLASH芯片组级数据冗余编码过程示意图,采用奇偶校验码作为冗余编码,其中模块A为奇偶校验计算单元,将各个FLASH芯片组中相应位置的FLASH芯片中的每个比特进行奇偶运算得到的奇偶校验码;B为外接RAM;C为图6所代表的整个模块,即FLASH芯片级冗余编码模块;C-1为C的逆模块,即FLASH芯片级冗余解码模块。
额外增加一个FLASH芯片组作为数据冗余空间,并将所述冗余编码存入额外增加的FLASH芯片组中;在新数据Dnew′被写入RAM之前,先将其所要存储的地址写入RAM中的地址寄存器,之后在Dnew′写入的同时将此地址所存放的旧数据Dold以及校验FLASH芯片组中相应的旧的校验数据Pold读出,经过模块C-1运算后写入RAM,接下来将新来的数据Dnew′经过模块C后写入指定的位置,与此同时,RAM中的三份数据运算得到新的校验数据经过模块C后写入校验FLASH芯片组,如此循环进行操作。
当存储数据的FLASH芯片组发生大于两个FLASH芯片乃至整组FLASH芯片损坏时,可通过所述冗余编码利用其它FLASH芯片组的FLASH芯片完整恢复数据。
考虑到对FLASH芯片组读写性能的影响,对存储所述奇偶校验码的校验位的FLASH芯片组的IO独立控制;由于存储所述奇偶校验码的校验位的FLASH芯片组的读写比较频繁,在较大规模应用以及长寿命应用时应当适当增加备份组。
在数据写入时,应当先给出地址,在数据写入缓存的同时读出将要覆盖的数据以及校验码,之后在写入数据的同时写入三者运算所产生的新校验位。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内,本发明要求保护范围由所附的权利要求书及其等效物界定。

一种大规模FLASH存储阵列的多层次数据冗余方法.pdf_第1页
第1页 / 共15页
一种大规模FLASH存储阵列的多层次数据冗余方法.pdf_第2页
第2页 / 共15页
一种大规模FLASH存储阵列的多层次数据冗余方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种大规模FLASH存储阵列的多层次数据冗余方法.pdf》由会员分享,可在线阅读,更多相关《一种大规模FLASH存储阵列的多层次数据冗余方法.pdf(15页珍藏版)》请在专利查询网上搜索。

本发明提供一种大规模FLASH存储阵列的多层次数据冗余方法,将大规模FLASH存储阵列的存储单元分为页级、FLASH芯片级、FLASH芯片组级三个层次,根据所划分的层次以及所需的容错等级选择不同的冗余编码存入大规模FLASH存储阵列中预留的数据冗余空间中;当出现错误时,利用数据冗余空间中的冗余编码即时纠正错误;与现有技术相比,针对大规模FLASH阵列应用,在不同的层次采取不同的冗余策略,极大地提高。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 信息存储


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1