CN102981966A - 一种均衡分配Flash存储块的数据存储方法 - Google Patents
一种均衡分配Flash存储块的数据存储方法 Download PDFInfo
- Publication number
- CN102981966A CN102981966A CN2012104436699A CN201210443669A CN102981966A CN 102981966 A CN102981966 A CN 102981966A CN 2012104436699 A CN2012104436699 A CN 2012104436699A CN 201210443669 A CN201210443669 A CN 201210443669A CN 102981966 A CN102981966 A CN 102981966A
- Authority
- CN
- China
- Prior art keywords
- storage block
- storage
- block
- time
- data
- 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.)
- Granted
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种均衡分配Flash存储块的数据存储方法,包括存在数据存储请求时的存储过程,该过程包括下述步骤:根据数据存储请求中的逻辑地址查找相应的逻辑块及存储块,作为存储源存储块;获取当前时间和标志存储源存储块最后一次执行擦除操作的擦除时间,计算两者的时间差;在计算的时间差大于第一设定时间差时,将存储源存储块作为存储目的存储块;在计算的时间差不大于第一设定时间差时,从可用的存储块队列中选择一个低使用频率的存储块作为存储目的存储块,将该存储目的存储块与逻辑块进行映射。应用本发明的方法有效解决了部分存储块过度使用、部分存储块不能充分利用的问题,提高了Flash存储器的使用寿命。
Description
技术领域
本发明涉及数据存储技术,具体地说,是涉及在Flash中存储数据的方法,更具体地说,是涉及均衡分配Flash存储块的数据存储方法。
背景技术
Flash存储器与传统硬盘的I/O操作不同,其读写以位或页为单元,但擦除操作必须以存储块(也即物理块block)为单元。Flash的一个存储块通常容量较大,且存储块的擦除次数有限,例如,norFlash为10万次,nandflash为100万次。在读写存储块的数据时,通常的做法是将存储块的地址作为物理地址,通过逻辑地址与物理地址进行映射来访问存储块。因此,相同类型的数据将会存储在相同物理地址的存储块中。由于不同类型的数据更新速度不同,极容易出现有些存储块读取频率高、有些存储块读取频率低的现象。受存储块擦除次数所限,如果某个或某些存储块读写频率较高,则这类块将被频繁擦除使用而很快耗尽。同时,那些所存储的数据读取频率较低的存储块利用率较低、擦除频率低,从而造成存储块使用严重不均衡,降低了Flash存储器的整体使用寿命。
为提高使用寿命,现有技术有一种方法,是将Flash存储器中的数据保存到内存中,数据的改动大部分在内存中进行,只有在非常有必要时才将数据写入到Flash存储块中,以此减少Flash存储块的擦除次数,进而提高使用寿命。但这种方法存在使用局限性,对于存储及时性较高的情况显得无能为力,比如,存储及时性高、写入频率高的系统注册表数据信息,应用该方法仍无法从根本上解决Flash存储器各存储块使用不均匀导致的使用寿命低的问题。
发明内容
本发明针对现有技术中Flash存储器因各存储块使用不均匀导致的使用寿命低的问题而提供了一种均衡分配Flash存储块的数据存储方法,有效解决了部分存储块过度使用、部分存储块不能充分利用的问题,提高了Flash存储器的使用寿命。
为实现上述发明目的,本发明采用下述技术方案予以实现:
一种均衡分配Flash存储块的数据存储方法,所述方法包括存在数据存储请求时的存储过程,该过程包括下述步骤:
a1、根据数据存储请求中的逻辑地址查找相应的逻辑块及与逻辑块相对应的存储块,作为存储源存储块;
a2、获取当前时间和标志存储源存储块最后一次执行擦除操作的擦除时间,计算两者的时间差,并与第一设定时间差作比较;
a3、在计算的时间差大于第一设定时间差时,将存储源存储块作为存储目的存储块,将要存储的数据写入至存储目的存储块;
a4、在计算的时间差不大于第一设定时间差时,从可用的存储块队列中选择一个低使用频率的存储块作为存储目的存储块,将要存储的数据写入至该存储目的存储块中,同时将该存储目的存储块与步骤a中的逻辑块进行映射。
如上所述的方法, Flash存储器中的每个存储块设置有历史擦除总次数记录,在所述步骤a4中,从可用的存储块队列中选择一个历史擦除总次数比所述存储源存储块的历史擦除总次数少于第一设定擦除次数的存储块作为存储目的存储块。
如上所述的方法,为方便后续的判断和使用,Flash存储器中的每个存储块设置有最近一次块转移之后的擦除次数记录和最后一次执行擦除操作的擦除时间记录,在所述步骤a3中,将要存储的数据写入至存储目的存储块之后,将该存储目的存储块的历史擦除总次数及最近一次块转移之后的擦除次数分别加1,并将其最后一次执行擦除操作的擦除时间更新为当前写入数据的时间;在所述步骤a4中,将要存储的数据写入至存储目的存储块之后,将该存储目的存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置1,并将其最后一次执行擦除操作的擦除时间更新为当前写入数据的时间。
如上所述的方法,为平衡数据存储效率和存储块的使用寿命,在所述步骤a4中,在计算的时间差不大于第一设定时间差时,先判断存储源存储块最近一次块转移之后的擦除次数是否大于第二设定擦除次数;在不大于第二设定擦除次数时,将存储源存储块作为存储目的存储块,在大于第二设定擦除次数时,从可用的存储块队列中选择一个低使用频率的存储块作为存储目的存储块。
如上所述的方法,为实现数据存储效率与存储块使用寿命的进一步平衡,在所述存储源存储块最近一次块转移之后的擦除次数大于设定擦除次数时,首先将该存储源存储块加入到受保护队列,每加入一次受保护队列,其受保护次数加1;然后,判断该存储源存储块受保护次数是否大于设定保护次数;在不大于设定保护次数时,将存储源存储块作为存储目的存储块,在大于设定保护次数时,从可用的存储块队列中选择一个低使用频率的存储块作为存储目的存储块。
如上所述的方法,为方便方法的持续应用,在所述步骤a4之后还包括下述步骤:
a5、在从可用的存储块队列中选择一个低使用频率的存储块作为存储目的存储块之后,将步骤a1中的存储源存储块加入至可用的存储块队列中,并将该存储源存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置0,将其最后一次执行擦除操作的擦除时间更新为当前加入至可用的存储块队列的时间。
如上所述的方法,为进一步对Flash存储块进行均衡分配,所述方法还包括静态存储数据处理过程,该过程包括下述步骤:
b1、获取使用中的一个Flash存储块作为处理源存储块,获取当前时间和标志处理源存储块最后一次执行擦除操作的擦除时间,计算两者的时间差,并与第二设定时间差作比较;
b2、在计算的时间差大于第二设定时间差时,判定处理源存储块中的数据为静态存储数据,从可用的存储块队列中选择一个高使用频率的存储块作为处理目的存储块;
b3、将处理源存储块中的数据写入到处理目的存储块中,并将处理目的存储块与处理源存储块相对应的逻辑块进行映射,同时将处理源存储块加入到可用的存储块队列中。
如上所述的方法,为便于方法的后续使用,在所述步骤b3中,将处理源存储块中的数据写入到处理目的存储块中之后,将该处理目的存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置1,并将其最后一次执行擦除操作的擦除时间更新为当前写入数据的时间;将处理源存储块加入到可用的存储块队列中之后,将该处理源存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置0,将其最后一次执行擦除操作的擦除时间更新为当前加入至可用的存储块队列的时间。
如上所述的方法,为实现数据存储效率与存储块使用寿命的进一步平衡,在所述步骤b1和步骤b2之间还包括步骤b20:将处理源存储块的最近一次块转移之后的擦除次数与第三设定擦除次数作比较;
在所述步骤b2中,在处理源存储块的最近一次块转移之后的擦除次数小于第三设定擦除次数、且计算的时间差大于第二设定时间差时,判定处理源存储块中的数据为静态存储数据。
如上所述的方法,具体的,在所述步骤b2中,从可用的存储块队列中选择一个历史擦除总次数比所述处理源存储块的历史擦除总次数多于第四设定擦除次数的存储块作为处理目的存储块,来存储更新速度相当慢的静态存储数据。
与现有技术相比,本发明的优点和积极效果是:本发明在进行数据存储时,根据存储块最近执行擦除操作的擦除时间判断该存储块的使用频率,在其使用频率较高时,选择一个使用频率较低的存储块来存储数据,通过动态调节存储块的使用频率来平衡多个存储块的擦除次数,进而提高整个Flash存储器的使用寿命。
结合附图阅读本发明的具体实施方式后,本发明的其他特点和优点将变得更加清楚。
附图说明
图1是本发明均衡分配Flash存储块的数据存储方法第一个实施例的流程图;
图2是图1实施例中逻辑地址与存储块之间的映射结构示意图;
图3是本发明均衡分配Flash存储块的数据存储方法第二个实施例中存在数据请求时的存储过程的流程图;
图4是图3实施例中静态存储数据处理过程的流程图。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案作进一步详细的说明。
请参考图1,该图1所示为本发明均衡分配Flash存储块的数据存储方法第一个实施例的流程图。
如图1所示,该实施例存储数据的过程如下:
步骤101:流程开始。
步骤102:请求在Flash存储块上存储数据。
步骤103:根据逻辑地址查找相应的存储块作为存储源存储块。
如图2的逻辑地址与存储块之间的映射结构示意图所示,根据Flash存储器的特点,Flash中的每个存储块(物理块)的地址作为Flash的物理地址,各自一一对应着一个逻辑块,而逻辑块的逻辑地址是用户对Flash存储器进行读写操作时实际使用的地址。在该实施例中,每个逻辑块LB1至LBn的大小是16k,相应的逻辑地址从0x00000000直至0xFFFFFFFF。在这n个逻辑块中,每个逻辑块对应着一个存储块,例如,逻辑块LB1与存储块PB1对应,逻辑块LB2与存储块PB3对应,逻辑块LB3与存储块PBn对应,所有的逻辑块及其与存储块的对应关系以映射表的形式表示。在请求往Flash存储块中存储数据时,用户会根据数据的大小确定逻辑地址空间,然后根据逻辑地址计算逻辑块的范围和个数;再然后,根据逻辑块与物理块的地址映射关系查找到相应的存储块,将该存储块作为存储源存储块。后续的步骤以一个存储源存储块为例,说明如何确定数据实际写入的存储块以均衡存储块的利用率。
步骤104:获取当前时间。
当前时间可以通过读取Flash存储所在系统的系统时间来获得。
步骤105:获取存储源存储块最后一次执行擦除操作的擦除时间。
由于Flash存储器的擦除操作以存储块为单元,每次重新写入数据时,均会将整个存储块擦除,然后再写入新的数据。该实施例为每个存储块设置了擦除时间记录,记录存储块执行擦除操作的时间,且在每次擦除完之后更新该擦除时间,以利用该擦除时间判断存储块的写入频率,进而判定是否需要进行数据存储的转移。
步骤106:计算步骤104获得的当前时间与步骤105获得的存储源存储块最后一次执行擦除操作的擦除时间的时间差,并与第一设定时间差进行比较。
其中,第一设定时间差为用户根据需要而设置的一个值,该值的大小不作限定,可以根据实际情况进行设定。
步骤107:判断步骤106计算的时间差是否大于第一设定时间差。若是,执行步骤108;否则,转至步骤109。
步骤108:如果当前时间与存储源存储块最后一次执行擦除操作的擦除时间之差大于第一设定时间差,说明该存储块最近一段时间之内未执行擦除操作,判定其读写频率在接受的范围之内,可以继续写入数据。因此,直接将该存储源存储块作为存储目的存储块,然后,执行步骤111。
步骤109:若当前时间与存储源存储块最后一次执行擦除操作的擦除时间之差不大于第一设定时间差,说明该存储块在最近一段时间之内执行过至少擦除操作,则判断该存储块的擦除频率较高,也即其所存储的数据是需要经常更新的动态数据。因此,为避免该存储块被频繁擦除而很快达到其使用寿命,此情况下,从可用存储块队列中选择低使用频率的存储块作为存储目的存储块,然后,执行步骤110。
这里,可用存储块队列中的存储块为已经擦除、可以写入数据的一类存储块。而且,在选择低使用频率的存储块时,可以采用下述方法来实现:
为每个存储块设置一个历史擦除总次数记录,用来记录该存储块从开始使用至今所执行的所有擦除次数总和,且该记录在擦除存储块时不会擦除掉。然后,从可用存储块队列中选择一个历史擦除总次数比存储源存储块的历史擦除总次数少于第一设定擦除次数的存储块,用该存储块代替存储源存储块而作为存储目的存储块来使用。其中,第一设定擦除次数也是用户根据需要而设置的一个值,该值的大小不作限定,可以根据实际情况进行设定。
需要说明的是,除了采用上述方法之外,还可以采用其他方法来判断存储块使用频率的高低,例如,计算某一段时间内的擦除次数,进而求得该段时间内的擦除频率,将该局部擦除频率作为整体擦除频率而作为判断存储块使用频率高低的判断依据。本实施例对具体判断方法和过程不作限定。
步骤110:在将新选的、低使用频率的存储块作为存储目的存储块之后,为将待写入的数据正确写入到该存储块中,需要将存储目的存储块与逻辑块重新进行地址映射,并保存该映射关系。这样,在擦除频率允许的情况下,以后每次向指定逻辑地址写入数据时,该数据将直接写入到新的存储目的存储块中。然后,执行步骤111。
步骤111:在确定了存储目的存储块之后,将要存储的数据写入至存储目的存储块中。
该实施例在数据存储过程中,从底层(Flash物理层)出发,有效解决了Flash存储块使用不均衡的问题,避免了某些存储块遭到过度使用,从而大幅提高了Flash存储器的整体使用寿命。
对于Flash存储器存储数据来说,Flash的使用寿命固然重要,需要在存储数据时考虑存储块的擦除寿命和均衡分配。另一方面,其读写效率也是衡量存储器性能的一个重要指标。所以,如何平衡存储块的使用寿命和读写效率,也是需要重点研究和解决的问题。下面将以图3和图4示出的第二个实施例具体描述这种平衡的解决方案。
首先,对该实施例中所应用的Flash存储块的数据结构作一简要说明:为方便存储块的管理,该实施例为Flash中的每个存储块在起始区域设置了头部数据,用来存储存储块的一些记录,包括前面所述的历史擦除总次数记录、最近一次块转移(因数据转移存储而使得存储块从使用状态转移为可用状态、或从可以状态转移为使用状态)之后的擦除次数记录、最后一次执行擦除操作的擦除时间记录,还可以记录该存储块的物理ID及相对应的逻辑块的ID等信息。这些头部数据在存储块擦除过程中不会删除,但是用户可以进行更新修改。
其次,对会发生存储块的转移、也即存在Flash存储块均衡分配、平衡使用寿命和读写效率的时机作简要说明:这种时机有两个,一个是如图1实施例所述的在存在数据存储请求时,该过程中,如果发现请求的逻辑块对应的存储块以前存储的数据可能是动态数据(经常更新写入的数据),则试图寻找一个使用频率较低的存储块来转存数据;另一个时机是通过建立一个静态数据检查进程,在该进程中如果发现静态数据(不经常更新写入的数据),则考虑将该数据转存到使用频率较高的存储块中。下面将分别以图3流程图和图4流程图所示,详细描述该实施例平衡使用寿命和读写效率而进行数据存储的具体过程。
请参考图3示出的存在数据请求时的存储过程的流程图,具体过程如下:
步骤301:在存储数据请求时,查找存储源存储块,获取当前操作时间和存储源存储块最后一次执行擦除操作的擦除时间,计算两个时间差,并与第一设定时间差比较。
该过程与图1实施例的步骤102至步骤106相同,可参考上述相应步骤的内容。
步骤302:判断所计算的时间差是否大于第一设定时间差。若是,转至步骤311;否则,执行步骤303。
步骤303:在所计算的时间差不大于第一设定时间差时,获取存储源存储块最近一次块转移之后的擦除次数,并与第二设定擦除次数作比较。
其中,第二设定擦除次数也是用户根据需要而设置的一个值,该值的大小不作限定,可以根据实际情况进行设定。
步骤304:判断存储源存储块最近一次块转移之后的擦除次数是否大于第二设定擦除次数。若是,执行步骤305;若否,转至步骤311。
设置该步骤的出发点是:在存储源存储块最后一次执行擦除操作的擦除时间不大于第一设定时间差时,说明存储源存储块在最近一定时间段内执行过至少1次擦除操作。如果直接将该存储源存储块认定为擦除频率较高的存储块而进行数据转存的话,由于数据转存需要选择新存储块、进行地址映射、修改存储块头部数据等操作过程,势必会导致数据的读写速度下降,尤其是频繁进行数据转存的话,严重影响读写效率,导致数据存储性能下降。为兼顾数据读写效率和均衡分配利用存储块,在存储源存储块最后一次执行擦除操作的擦除时间不大于第一设定时间差时,再采用其他限制条件作进一步限定。该步骤即是从该角度出发,利用存储源存储块最近一次块转移之后的擦除次数作进一步判定,只有在擦除次数大于第二设定擦除次数时,再判断是否需要进行数据的转移存储。
步骤305:在存储源存储块最近一次块转移之后的擦除次数大于第二设定擦除次数时,将存储源存储块加入到受保护队列,并将受保护次数加1。
在存储源存储块最近一次块转移之后的擦除次数大于第二设定擦除次数时,说明该源存储块最近擦除频率较高,但也可能存在其仅仅是在最近一次块转移之后才有了较高的擦除频率,不能完全代表其擦除频率一定很高。为进一步平衡读写效率和使用寿命,该实施例在存储源存储块最近一次块转移之后的擦除次数大于第二设定擦除次数时,将该存储源存储块作为疑似高擦除频率的存储块,再作进一步保护判断。具体来说,是将该存储块加入到受保护队列,并为其增设一个计时器,没加入一次受保护队列,将受保护次数加1。
步骤306:判断存储源存储块的受保护次数是否大于设定保护次数。若是,执行步骤307;若否,转至步骤311。
步骤307:如果存储源存储块的受保护次数大于设定保护次数,判定该存储块受到了过度使用,需要进行数据转存,将从可用存储块队列中选择低使用频率的存储块作为存储目的存储块。
步骤308:将存储目的存储块与逻辑块重新进行地址映射。
步骤309:将要存储的数据写入至存储目的存储块中。
上述步骤307至步骤309的具体实现过程可参考图1实施例中步骤109至步骤111的描述。
步骤310:更新存储目的存储块的相关记录。然后,转至步骤313。
为了后续使用,在逻辑块重新映射了新的存储目的存储块时,需要更新存储目的存储块的相关记录,也即更新其头部数据中的各记录,具体来说,包括:将该存储目的存储块的历史擦除总次数加1(表示又擦除了1次),将最近一次块转移之后的擦除次数置1(表示执行了块转移,且写入了1次数据,擦除了1次),并将其最后一次执行擦除操作的擦除时间更新为当前写入数据的时间;同时,修改其所对应的逻辑块ID为当前新逻辑块的ID。
而且,在选择新的存储块代替存储源存储块作为存储目的存储块实现数据转存之后,将存储源存储块加入至可用的存储块队列中,以备后续使用;同时,将该存储源存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置0,并将其最后一次执行擦除操作的擦除时间更新为当前加入至可用的存储块队列的时间。
步骤311:该步骤由上述步骤302、304及306转来,具体来说,是在当前时间与存储源存储块的最后一次执行擦除操作的擦除时间之差大于第一设定时间差、或存储源存储块最近一次块转移之后的擦除次数不大于第二设定擦除次数、或存储源存储块的受保护次数不大于设定保护次数时,判定存储源存储块的读写频率在接受的范围之内,可以继续写入数据。因此,将该存储源存储块作为存储目的存储块,将要存储的数据写入至存储目的存储块中。
步骤312:更新存储目的存储块、也即存储源存储块的相关记录。
为了后续使用,在将数据写入到存储源存储块时,也需要更新其头部数据中的记录,具体包括:将该存储块的历史擦除总次数加1(表示又擦除了1次),将其最近一次块转移之后的擦除次数置1,并将其最后一次执行擦除操作的擦除时间更新为当前写入数据的时间。
步骤313:存在数据请求时的存储流程结束。
再请参考图4, 该实施例对静态存储数据进行处理、以兼顾存储器的使用寿命和读写效率的具体流程为:
步骤401:静态存储数据流程开始。
步骤402:从使用的存储块队列中得到一个存储块作为处理源存储块。
步骤403:获取当前时间和处理源存储块最后一次执行擦除操作的擦除时间,计算两者的时间差,并与第二设定时间差作比较。
这里,第二设定时间差与前述第一设定时间差类似,也是用户根据需要而设置的一个值,该值的大小不作限定,可以根据实际情况进行设定。优选的,第二设定时间差为第一设定时间差的100倍。
步骤404:获取处理源存储块的最近一次块转移之后的擦除次数,并与第三设定擦除次数比较。
其中,第三设定擦除次数与前述第一、第二设定擦除次数类似,也是用户根据需要而设置的一个值,该值的大小不作限定,可以根据实际情况进行设定。
步骤405:判断步骤403中所计算的时间差是否大于第二设定时间差,且步骤404中的擦除次数是否小于第三设定擦除次数。若两个判断结果均为是,执行步骤406;否则,判定处理源存储块中所存储的数据不是静态数据,且存储块的使用频率还可以接受,则不需要对该存储块进行数据转存,转至步骤402,继续对下一个存储块进行判断处理。
步骤406:在步骤403中所计算的时间差大于第二设定时间差、且步骤404中的擦除次数小于第三设定擦除次数时,判定处理源存储块中的数据为静态存储数据,因此存在该存储块使用频率不高的可能,需要进行数据转存。
步骤407:在进行转存时,从可用的存储块队列中选择高使用频率的存储块作为处理目的存储块。
具体来说,可以从可用的存储块队列中选择一个历史擦除总次数比处理源存储块的历史擦除总次数多于第四设定擦除次数的存储块作为处理目的存储块。其中,第四设定擦除次数也是用户根据需要而设置的一个值。
而且,在选择这样的存储块时,可以从存储块队列中随机或顺序来选择,选择到满足条件的存储块即作为处理目的存储块;或者,从存储块队列中按照历史擦除总次数由大到小的顺序来选择,这样能保证选择到使用次数最高的存储块来存储静态数据,最大限度减少对这里存储块的在此擦除,以提高其使用寿命。
如图1实施例中选择低使用频率的存储块所述,不局限于采用上述方法来选择高使用频率的存储块,还可以采用判断局部擦除效率的方法进行选择等。
步骤408:将处理源存储块中的数据写入到处理目的存储块中。
步骤409:将处理目的存储块与处理源存储块相对应的逻辑块进行映射,并更新处理目的存储块的相关记录。
映射的原因和方法参见前面所述。而对处理目的存储块的相关记录的更新包括:将该处理目的存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置1,并将其最后一次执行擦除操作的擦除时间更新为当前写入数据的时间;同时,修改其所对应的逻辑块ID为当前新逻辑块的ID。
步骤410:将处理源存储块加入到可用的存储块队列中,并更新处理源存储块的相关记录。
具体来说,是将该处理源存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置0,将其最后一次执行擦除操作的擦除时间更新为当前加入至可用的存储块队列的时间。
步骤411:流程结束。
该实施例在判断是否进行静态数据的转存时,采用了两个判断条件,一个是时间差大于第二设定时间差,另一个是擦除次数小于第三设定擦除次数,但不局限于这两个判断条件,可以仅是其中一个判断条件,或者,采用更多个判断条件,可以根据Flash的使用寿命与读写效率之间的平衡关系合理选择。
以上实施例仅用以说明本发明的技术方案,而非对其进行限制;尽管参照前述实施例对本发明进行了详细的说明,对于本领域的普通技术人员来说,依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明所要求保护的技术方案的精神和范围。
Claims (10)
1.一种均衡分配Flash存储块的数据存储方法,其特征在于,所述方法包括存在数据存储请求时的存储过程,该过程包括下述步骤:
a1、根据数据存储请求中的逻辑地址查找相应的逻辑块及与逻辑块相对应的存储块,作为存储源存储块;
a2、获取当前时间和标志存储源存储块最后一次执行擦除操作的擦除时间,计算两者的时间差,并与第一设定时间差作比较;
a3、在计算的时间差大于第一设定时间差时,将存储源存储块作为存储目的存储块,将要存储的数据写入至存储目的存储块;
a4、在计算的时间差不大于第一设定时间差时,从可用的存储块队列中选择一个低使用频率的存储块作为存储目的存储块,将要存储的数据写入至该存储目的存储块中,同时将该存储目的存储块与步骤a中的逻辑块进行映射。
2.根据权利要求1所述的方法,其特征在于,Flash存储器中的每个存储块设置有历史擦除总次数记录,在所述步骤a4中,从可用的存储块队列中选择一个历史擦除总次数比所述存储源存储块的历史擦除总次数少于第一设定擦除次数的存储块作为存储目的存储块。
3.根据权利要求2所述的方法,其特征在于,Flash存储器中的每个存储块设置有最近一次块转移之后的擦除次数记录和最后一次执行擦除操作的擦除时间记录,在所述步骤a3中,将要存储的数据写入至存储目的存储块之后,将该存储目的存储块的历史擦除总次数及最近一次块转移之后的擦除次数分别加1,并将其最后一次执行擦除操作的擦除时间更新为当前写入数据的时间;在所述步骤a4中,将要存储的数据写入至存储目的存储块之后,将该存储目的存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置1,并将其最后一次执行擦除操作的擦除时间更新为当前写入数据的时间。
4.根据权利要求3所述的方法,其特征在于,在所述步骤a4中,在计算的时间差不大于第一设定时间差时,先判断存储源存储块最近一次块转移之后的擦除次数是否大于第二设定擦除次数;在不大于第二设定擦除次数时,将存储源存储块作为存储目的存储块,在大于第二设定擦除次数时,从可用的存储块队列中选择一个低使用频率的存储块作为存储目的存储块。
5.根据权利要求4所述的方法,其特征在于,在所述存储源存储块最近一次块转移之后的擦除次数大于设定擦除次数时,首先将该存储源存储块加入到受保护队列,每加入一次受保护队列,其受保护次数加1;然后,判断该存储源存储块受保护次数是否大于设定保护次数;在不大于设定保护次数时,将存储源存储块作为存储目的存储块,在大于设定保护次数时,从可用的存储块队列中选择一个低使用频率的存储块作为存储目的存储块。
6.根据权利要求3至5中任一项所述的方法,其特征在于,在所述步骤a4之后还包括下述步骤:
a5、在从可用的存储块队列中选择一个低使用频率的存储块作为存储目的存储块之后,将步骤a1中的存储源存储块加入至可用的存储块队列中,并将该存储源存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置0,将其最后一次执行擦除操作的擦除时间更新为当前加入至可用的存储块队列的时间。
7.根据权利要求3至5中任一项所述的方法,其特征在于,所述方法还包括静态存储数据处理过程,该过程包括下述步骤:
b1、获取使用中的一个Flash存储块作为处理源存储块,获取当前时间和标志处理源存储块最后一次执行擦除操作的擦除时间,计算两者的时间差,并与第二设定时间差作比较;
b2、在计算的时间差大于第二设定时间差时,判定处理源存储块中的数据为静态存储数据,从可用的存储块队列中选择一个高使用频率的存储块作为处理目的存储块;
b3、将处理源存储块中的数据写入到处理目的存储块中,并将处理目的存储块与处理源存储块相对应的逻辑块进行映射,同时将处理源存储块加入到可用的存储块队列中。
8.根据权利要求7所述的方法,其特征在于,在所述步骤b3中,将处理源存储块中的数据写入到处理目的存储块中之后,将该处理目的存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置1,并将其最后一次执行擦除操作的擦除时间更新为当前写入数据的时间;将处理源存储块加入到可用的存储块队列中之后,将该处理源存储块的历史擦除总次数加1,将其最近一次块转移之后的擦除次数置0,将其最后一次执行擦除操作的擦除时间更新为当前加入至可用的存储块队列的时间。
9.根据权利要求7所述的方法,其特征在于,在所述步骤b1和步骤b2之间还包括步骤b20:将处理源存储块的最近一次块转移之后的擦除次数与第三设定擦除次数作比较;
在所述步骤b2中,在处理源存储块的最近一次块转移之后的擦除次数小于第三设定擦除次数、且计算的时间差大于第二设定时间差时,判定处理源存储块中的数据为静态存储数据。
10.根据权利要求7所述的方法,其特征在于,在所述步骤b2中,从可用的存储块队列中选择一个历史擦除总次数比所述处理源存储块的历史擦除总次数多于第四设定擦除次数的存储块作为处理目的存储块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210443669.9A CN102981966B (zh) | 2012-11-09 | 2012-11-09 | 一种均衡分配Flash存储块的数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210443669.9A CN102981966B (zh) | 2012-11-09 | 2012-11-09 | 一种均衡分配Flash存储块的数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102981966A true CN102981966A (zh) | 2013-03-20 |
CN102981966B CN102981966B (zh) | 2016-04-06 |
Family
ID=47856018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210443669.9A Active CN102981966B (zh) | 2012-11-09 | 2012-11-09 | 一种均衡分配Flash存储块的数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102981966B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063186A (zh) * | 2014-06-30 | 2014-09-24 | 成都万维图新信息技术有限公司 | 一种电子设备的数据访问方法 |
CN105045537A (zh) * | 2015-08-04 | 2015-11-11 | 国网浙江兰溪市供电公司 | 电表参数数据的擦写方法、在电表存储设备中搜索电力线参数的方法以及一种电表 |
CN106354718A (zh) * | 2015-07-13 | 2017-01-25 | 中国移动通信集团公司 | 用户识别模块的文件管理方法及装置 |
CN107258000A (zh) * | 2015-03-25 | 2017-10-17 | 英特尔公司 | 用于在存储器设备内执行数据操作的方法和装置 |
WO2018033036A1 (zh) * | 2016-08-19 | 2018-02-22 | 深圳大普微电子科技有限公司 | 固态硬盘和应用于固态硬盘的数据存取方法 |
WO2018214013A1 (zh) * | 2017-05-23 | 2018-11-29 | 深圳大学 | 基于三维闪存的数据写入方法及装置 |
CN111767007A (zh) * | 2019-04-01 | 2020-10-13 | 慧荣科技股份有限公司 | 用于闪存的写入管理机制 |
WO2021233187A1 (zh) * | 2020-05-18 | 2021-11-25 | 中科寒武纪科技股份有限公司 | 一种在存储器中为数据分配存储地址的方法和设备 |
CN114546267A (zh) * | 2022-02-14 | 2022-05-27 | 深圳源创存储科技有限公司 | 一种基于大数据计算的固态硬盘及固态硬盘系统 |
CN114860624A (zh) * | 2022-05-23 | 2022-08-05 | 深圳市芯存科技有限公司 | 一种基于Nandflash芯片的数据擦写方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226504A (zh) * | 2008-01-25 | 2008-07-23 | 炬力集成电路设计有限公司 | 一种防止存储器读损的方法及装置 |
US20100077266A1 (en) * | 2008-04-24 | 2010-03-25 | Shinichi Kanno | Memory system and control method thereof |
US7913032B1 (en) * | 2007-04-25 | 2011-03-22 | Apple Inc. | Initiating memory wear leveling |
-
2012
- 2012-11-09 CN CN201210443669.9A patent/CN102981966B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7913032B1 (en) * | 2007-04-25 | 2011-03-22 | Apple Inc. | Initiating memory wear leveling |
CN101226504A (zh) * | 2008-01-25 | 2008-07-23 | 炬力集成电路设计有限公司 | 一种防止存储器读损的方法及装置 |
US20100077266A1 (en) * | 2008-04-24 | 2010-03-25 | Shinichi Kanno | Memory system and control method thereof |
Non-Patent Citations (1)
Title |
---|
NEAL MIELKE: "Flash EEPROM Threshold Instabilities due to Charge Trapping During Program/Erase Cycling", 《IEEE TRANSACTIONS ON DEVICE AND MATERIALS RELIABILITY》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063186A (zh) * | 2014-06-30 | 2014-09-24 | 成都万维图新信息技术有限公司 | 一种电子设备的数据访问方法 |
CN104063186B (zh) * | 2014-06-30 | 2016-04-06 | 成都万维图新信息技术有限公司 | 一种电子设备的数据访问方法 |
CN107258000A (zh) * | 2015-03-25 | 2017-10-17 | 英特尔公司 | 用于在存储器设备内执行数据操作的方法和装置 |
CN107258000B (zh) * | 2015-03-25 | 2021-12-03 | 英特尔公司 | 用于在存储器设备内执行数据操作的方法和装置 |
CN106354718A (zh) * | 2015-07-13 | 2017-01-25 | 中国移动通信集团公司 | 用户识别模块的文件管理方法及装置 |
CN106354718B (zh) * | 2015-07-13 | 2021-05-25 | 中国移动通信集团公司 | 用户识别模块的文件管理方法及装置 |
CN105045537A (zh) * | 2015-08-04 | 2015-11-11 | 国网浙江兰溪市供电公司 | 电表参数数据的擦写方法、在电表存储设备中搜索电力线参数的方法以及一种电表 |
US10810127B2 (en) | 2016-08-19 | 2020-10-20 | Shenzhen Dapu Microelectronics Co., Ltd. | Solid-state hard disk and data access method for use with solid-state hard disk |
WO2018033036A1 (zh) * | 2016-08-19 | 2018-02-22 | 深圳大普微电子科技有限公司 | 固态硬盘和应用于固态硬盘的数据存取方法 |
WO2018214013A1 (zh) * | 2017-05-23 | 2018-11-29 | 深圳大学 | 基于三维闪存的数据写入方法及装置 |
CN111767007A (zh) * | 2019-04-01 | 2020-10-13 | 慧荣科技股份有限公司 | 用于闪存的写入管理机制 |
CN111767007B (zh) * | 2019-04-01 | 2023-12-22 | 慧荣科技股份有限公司 | 用于闪存的写入管理机制 |
WO2021233187A1 (zh) * | 2020-05-18 | 2021-11-25 | 中科寒武纪科技股份有限公司 | 一种在存储器中为数据分配存储地址的方法和设备 |
CN114546267A (zh) * | 2022-02-14 | 2022-05-27 | 深圳源创存储科技有限公司 | 一种基于大数据计算的固态硬盘及固态硬盘系统 |
CN114860624A (zh) * | 2022-05-23 | 2022-08-05 | 深圳市芯存科技有限公司 | 一种基于Nandflash芯片的数据擦写方法及系统 |
CN114860624B (zh) * | 2022-05-23 | 2023-04-28 | 深圳市芯存科技有限公司 | 一种基于Nandflash芯片的数据擦写方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102981966B (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102981966A (zh) | 一种均衡分配Flash存储块的数据存储方法 | |
CN105074673B (zh) | 用于数据存储系统的基于优先级的垃圾收集 | |
JP5943095B2 (ja) | 複合不揮発性記憶装置のためのデータ移行 | |
CN103092766B (zh) | 一种用于nand flash的均衡损耗实现方法 | |
US8195971B2 (en) | Solid state disk and method of managing power supply thereof and terminal including the same | |
CN102646069B (zh) | 一种延长固态盘使用寿命的方法 | |
CN103559138B (zh) | 固态硬盘及其空间管理方法 | |
CN101382918B (zh) | 一种基于数据交换区的NAND Flash闪存优化管理方法 | |
CN105718206B (zh) | 能够感知raid的闪存转换层及其实现方法 | |
CN102768645B (zh) | 混合缓存的固态硬盘预取方法和固态硬盘ssd | |
CN102737715B (zh) | 用于nor闪存的数据掉电保护方法 | |
US10558395B2 (en) | Memory system including a nonvolatile memory and a volatile memory, and processing method using the memory system | |
CN103425600A (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
CN104899154B (zh) | 基于嵌入式系统混合主存的页面管理方法 | |
CN102572330A (zh) | 一种液晶电视机Flash芯片的数据读取、写入和擦除的方法 | |
CN109582593A (zh) | 一种基于计算的ftl地址映射方法及数据读、写方法 | |
CN101763309A (zh) | 非易失性存储装置、信息记录系统及信息记录方法 | |
CN101719099A (zh) | 减小固态硬盘写入放大的方法及装置 | |
CN102214143A (zh) | 一种多层单元闪存的管理方法、装置及存储设备 | |
CN102981969A (zh) | 重复数据删除的方法及其固态硬盘 | |
CN103309815A (zh) | 一种提高固态盘有效容量和寿命的方法和系统 | |
CN107817945A (zh) | 一种混合内存结构的数据读取方法和系统 | |
US20150205538A1 (en) | Storage apparatus and method for selecting storage area where data is written | |
CN101154447B (zh) | 一种闪存控制方法及闪存 | |
CN102520885B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |