基于存储块修复的闪存存储方法技术

技术编号:8715427 阅读:138 留言:0更新日期:2013-05-17 18:41
一种闪存存储方法,所述方法包括:a)根据待存储数据的大小S以及存储块的存储容量C,将待存储数据划分为L个数据块,其中并初始化参数i=0,j=1;b)根据指针找到闪存中最后存储数据的存储块B(i);c)判断存储块B(i)的下一存储块B(i+1)是否是坏块;d)如果存储块B(i+1)不是坏块,则将L个数据块中的第j块存储到存储块B(i+1)中,令j=j+1,i=i+1,转到步骤g;e)如果存储块B(i+1)是坏块并且能够修复,则修复存储块B(i+1)并将L个数据块中的第j块存储到存储块B(i+1)中,令j=j+1,i=i+1,转到步骤g;f)如果存储块B(i+1)是坏块并且不能够修复,则令i=i+1;g)如果j>L,则结束,否则转到步骤c。

【技术实现步骤摘要】

本专利技术涉及数据存储领域,尤其涉及闪存存储领域,特别涉及一种。
技术介绍
在服务器设备与终端设备之间或计算机设备内部装置之间进行数据传送时,特别需要用到存储设备作为缓冲设备,所述缓冲设备将各装置之间传送的数据进行缓冲,作为缓冲器其中的数据属于临时数据,因此需要经常被擦除并重新写入,因此要求较高擦写速度和较多最大可擦写次数,然而在现有技术中这两者存在矛盾。目前比较常见存储设备有闪存闪存和电可擦写可编程只读存储器(EEPROM),这两种存储设备分别具有以下优缺点:首先,闪存的优点是容量大且价格低;缺点是擦写速度慢,而且必须先擦后写,每次擦除的最小单位为一个BANK,即64KB。而且单位存储空间可擦写次数少,约为10万次;其次,EEPROM的缺点是容量小且价格高;优点是擦写速度快,可单个字节擦写,而且单位存储空间的可擦写次数多,可达到100万次。现有的存储设备在存储数据时,一般至少有两部分数据需要存储:程序部分和用户数据部分。存储设备出厂后,程序部分一般不会再改变,除非进行软件升级,因此一般都会选择闪存作为程序部分的存储设备。而用户数据部分经常会被用户修改,对存储设备的可擦写次数和稳定性有较高的要求。但是,如果为考虑成本而采用闪存存储用户数据,则会存在以下问题:闪存擦写速度慢,而且大部分闪存必须以BANK (64KB)为最小擦除单位,一次擦除要IOOms以上,擦除次数过多的话,势必会影响闪存存储设备的使用寿命,而且,对数据进行存储时,速度也较慢,因此为了考虑成本的因素而选用闪存时,需要解决均匀擦除的问题。另一方面,由于闪存存储器中存储单元内的存储块会出现坏块,并且有些坏块是可以修复的,有些坏块是不可修复的,因此,针对存储块是否是坏块并针对坏块是否能够被修复实现待存储数据的存储是非常必要的。
技术实现思路
为了解决上述问题,本专利技术的一个目的在于提供一种闪存存储方法,所述方法包括:a)根据待存储数据的大小S以及存储块的存储容量C,将待存储数据划分为L个数据块,其中L=「S/C],并初始化参数i = 0,j = I ;b)根据指针找到闪存中最后存储数据的存储块B(i) ;c)判断存储块B(i)的下一存储块B(i+1)是否是坏块;d)如果存储块B(i+1)不是坏块,则将L个数据块中的第j块存储到存储块B (i+1)中,令j = j+l,i = i+1,转到步骤g;e)如果存储块B (i+1)是坏块并且能够修复,则修复存储块B (i+1)并将L个数据块中的第j块存储到存储块B (i+1)中,令j = j+l,i = i+1,转到步骤g;f)如果存储块B (i+1)是坏块并且不能够修复,则令i = i+1 ;g)如果j > L,则结束,否则转到步骤C。根据本专利技术的一个方面,在闪存中存储了待存储数据后,修改指针,使得所述指针指示闪存中最后存储数据的存储块。根据本专利技术的一个方面,其中当在闪存的最后一个存储块中存储数据后,如果还有需要存储的数据,则接着在闪存的第一个存储块中继续存储数据。根据本专利技术的一个方面,其中所述闪存中的存储块的大小为64KB、128KB或256KB。根据本专利技术的一个方面,其中所述方法还包括在步骤a之前接收待存储数据。根据本专利技术的一个方面,其中所述方法中的步骤b具体为,通过最后存储数据块指针找到闪存中最后存储数据的存储块。更具本专利技术的一个方面,其中所述方法中的步骤c具体为,通过存储块B(i)找到其下一存储块B (i+1),然后调用校验单元中的校验程序对所述下一存储块B (i+1)进行校验,判断所述下一存储块是否是坏块。附图说明所包括的附图用于进一步理解本专利技术,其作为说明书的一个组成部分并与说明书一起解释本专利技术的原理,在附图中:图1示出了本专利技术闪存的结构框图;图2示出了本专利技术一实施例的方法流程具体实施例方式下面参照附图进一步描述本专利技术的优选实施例。本专利技术中,所述闪存包括多个存储单元,所述多个存储单元均包括具有相同存储容量的多个存储块,所述多个存储块用于存储待存储数据,其中多个存储单元具有相同的最大可擦写次数。所述多个存储单元具有的块数可以相同也可以不同。本领域技术人员知道,在本申请中待存储数据的大小远远小于闪存的存储容量。附图1示出闪存存储器的结构框图,如附图1所述,闪存存储器包括存储单元、地址单元、校验单元、修复单元。所述多个存储单元包括多个存储块,所述多个存储块用于存储带存储数据,其中闪存中所有存储块顺序排列,并且可随时根据当前存储块的地址找到前一存储块的地址和后一存储块的地址。所述地址单元用于存储首块指针和最后存储数据块指针,其中首块指针指示闪存中存储单元内第一存储块的地址,最后存储数据块指针指示闪存中存储单元内最后存储数据的存储块的地址,所述地址单元还用于存储存储待存储数据过程中用到的参数数据。所述校验单元中存放用于校验存储块是否是坏块的校验程序,在校验存储块过程中处理器可调用校验程序对存储块进行校验以判断存储块是否是坏块以及坏块是否能够被修复。所述修复单元中存放用于修复可修复坏块的修复程序,在修复存储块过程中处理器可调用修复程序对可修复存储块进行修复以使得可修复存储块能够被修复。虽然图1中存储块有固定数量,但是仅仅是示例性的,存储块可根据规格及成本的需要设定为任意数量。其中多个存储单元具有相同的最大可擦写次数,也就是说多个存储单元中的存储块具有相同的最大可擦写次数,当然,在本专利技术中同一存储单元中的存储块具有相同的最大可擦写次数。所述闪存中的所有存储块顺序排列,附图2示出了根据本专利技术一优选实施例的闪存存储方法的流程图,所述方法包括:a)根据待存储数据的大小S以及存储块的存储容量C,将待存储数据划分为L个数据块,其中L=「S/Cr],并初始化参数i = O, j = I ;b)根据指针找到闪存中最后存储数据的存储块B(i) ;c)判断存储块B (i)的下一存储块B (i+1)是否是坏块;d)如果存储块B (i+1)不是坏块,则将L个数据块中的第j块存储到存储块B (i+1)中,令j = j+l,i = i+1,转到步骤g;e)如果存储块B(i+1)是坏块并且能够修复,则修复存储块B (i+1)并将L个数据块中的第j块存储到存储块B (i+1)中,令j = j+l,i = i+1,转到步骤g;f)如果存储块B (i+1)是坏块并且不能够修复,则令i = i+1 ;g)如果j > L,则结束,否则转到步骤C。在本申请中待存储数据的大小小于闪存的存储容量,当然如果带存储数据的大小大于闪存的存储容量,可提示闪存存储容量小于待存储数据以避免无效的存储。所述方法还包括在步骤a之前接收待存储数据。所述方法中的步骤b具体为,通过最后存储数据块指针找到闪存中最后存储数据的存储块。所述方法中的步骤c具体为,通过当前存储块找到其下一存储块,然后由CPU调用校验单元中的校验程序对所述下一存储块进行校验,判断所述下一存储块是否是坏块。所述方法中的步骤e具体为,如果所述下一存储块是坏块,则继续由处理器调用校验单元中的校验程序校验所述下一存储块以判断所述下一存储是否能够被修复,如果所述下一存储块能够被修复则继续由处理器调用修复单元中的修复程序对所述下一存储块进行修复以修复所述下一存储块,修复所述下一存储块后将本文档来自技高网
...

【技术保护点】
一种闪存存储方法,所述方法包括:a)根据待存储数据的大小S以及存储块的存储容量C,将待存储数据划分为L个数据块,其中并初始化参数i=0,j=1;b)根据指针找到闪存中最后存储数据的存储块B(i);c)判断存储块B(i)的下一存储块B(i+1)是否是坏块;d)如果存储块B(i+1)不是坏块,则将L个数据块中的第j块存储到存储块B(i+1)中,令j=j+1,i=i+1,转到步骤g;e)如果存储块B(i+1)是坏块并且能够修复,则修复存储块B(i+1)并将L个数据块中的第j块存储到存储块B(i+1)中,令j=j+1,i=i+1,转到步骤g;f)如果存储块B(i+1)是坏块并且不能够修复,则令i=i+1;g)如果j>L,则结束,否则转到步骤c。FSA00000833617800011.tif

【技术特征摘要】

【专利技术属性】
技术研发人员:王媛媛
申请(专利权)人:苏州懿源宏达知识产权代理有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1