CN1635579A - 闪存介质中的数据操作方法 - Google Patents
闪存介质中的数据操作方法 Download PDFInfo
- Publication number
- CN1635579A CN1635579A CN 200310117716 CN200310117716A CN1635579A CN 1635579 A CN1635579 A CN 1635579A CN 200310117716 CN200310117716 CN 200310117716 CN 200310117716 A CN200310117716 A CN 200310117716A CN 1635579 A CN1635579 A CN 1635579A
- Authority
- CN
- China
- Prior art keywords
- data
- new
- piece
- scratch pad
- pad block
- 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
- 238000011017 operating method Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 138
- 238000003860 storage Methods 0.000 claims description 219
- 230000008569 process Effects 0.000 claims description 76
- 230000007246 mechanism Effects 0.000 claims description 13
- 238000004140 cleaning Methods 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims description 9
- 238000012216 screening Methods 0.000 claims description 7
- 230000002123 temporal effect Effects 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000012360 testing method Methods 0.000 claims description 4
- 230000009471 action Effects 0.000 claims description 3
- 230000000875 corresponding effect Effects 0.000 description 49
- 238000005520 cutting process Methods 0.000 description 7
- 238000011084 recovery Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000003556 assay Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000007634 remodeling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种在闪存介质中的数据操作方法,包括:根据当前写指令中指定地址所指定的存储块,确定与该写数据指令相关的新存储块;对所述新存储块进行写数据操作;判断后续指令是否与所述新存储块相关,如果相关,则执行该相关的指令,直到对所述新存储块相关的指令都已执行完;和将所述新存储块中的内容作为与该存储块相关的所述写数据指令操作的最终结果。使用本发明的方法进行数据操作,能够大大简化大多数种类的闪存介质的数据操作指令执行过程,显著提高数据操作效率、节省操作时间,还可保证操作过程中的数据安全,减少对闪存介质频繁操作而引起的损耗,延长闪存介质使用寿命。
Description
技术领域
本发明涉及半导体存储领域,具体地说涉及闪存介质数据操作方法,用于将将对某一存储区域内进行操作的的数据操作指令统一进行处理。
背景技术
目前,采用闪存介质进行数据存储的移动存储装置已获得广泛使用。但由于闪存介质本身特性及其现有的数据操作方法所存在的缺陷,使得这类移动存储装置的操作速度较低。而且,在某些类型的闪存介质中,或在某些数据操作的特殊情况下,数据操作速度会大幅降低,给用户使用造成了诸多不便。
在现有技术中,闪存介质的存储空间(简称闪存介质)一般划分为多个存储块(Block,即物理块),每个存储块由多个页(Page)构成,每个页包括若干字节的数据存储区和若干字节的冗余区。在冗余区中,还设置有校验码区域,用于存放校验码。根据现有技术规范,每一个存储块中都保存有该块的逻辑地址,该地址通常保存在存储块的第一页中。该逻辑地址与对照表中的地址信息具有对应关系,是查找和定位存储块的依据。根据数据操作指令中的指定地址,通过地址变换可得出相应的指定逻辑地址,根据该指定逻辑地址查找对照表,找出与指定逻辑地址相应的逻辑地址,再找出该逻辑地址对应的物理地址,就可以从闪存介质中找到指定的存储块。
当操作系统依据用户操作,通过某个具体的写数据指令向闪存介质中写入数据时,根据闪存介质特殊的读写特性,一方面必须将写数据指令中的指定地址所指向的存储块10(以下称为原块)中要保留的数据由原块“搬迁”到另一个存储块20(以下称为新块)的对应页中,另一方面还要将写数据指令要求写入原块10的新数据写入新块20的对应页中,然后将原块擦除,以新块20替代原块10。
在上述方法中,上述要保留的数据是指原块10记录的原始数据中不被要写入的新数据覆盖的那些页中的数据。要保留的数据和要写入的新数据共同组成写数据指令得到的结果数据。上述数据的写入和搬迁通常是以页为单位进行,而擦除则以块为单位进行。
但是,根据现有数据存取技术,一个写数据操作指令只向闪存空间中的某一个存储区发出;上述存储区是位于存储块内的一段连续的存储空间,可以是一个或多个连续的页。每个写数据指令至少向某存储块中写入一页数据,但不会超出该块的容量。然而,实际上在大多数操作系统中,写数据操作指令是按照物理地址顺序向下进行的,很多情况下会出现一组连续的写数据指令。这些写指令向同一存储块或某个范围内的一些存储块发出,按照该块或该范围内的物理地址顺序依次写入新数据,直至写完该块的最后一页。而依据前述的现有闪存介质读写技术,在执行每个写数据指令时,只要指定的存储块中存在数据,都需要进行一次数据搬迁。这将造成对某一块内或某一范围内的数据连续、重复多次搬迁,从而大大影响指令执行速度,并且频繁的读写操作将损耗闪存介质,缩短其寿命。
另外,在上述现有技术中,从闪存介质读取数据需要通过读文件分配表、目录区等来获得闪存介质内数据文件的信息。如果在将需要保留的数据进行上述搬迁的过程中,发生意外或用户误操作等情况造成非法断电,会使这个搬迁过程意外中断。在断电时刻对要保留的数据的搬迁工作尚未完成,这部分数据的逻辑地址在文件分配表、目录区等内并没有及时地更新,将可能产生参与搬迁的存储块重复、存储块中的数据错漏,变为无效数据。这样,含有这部分数据的文件成为无效文件,造成数据文件丢失。因此其数据安全性较差。
再有,在数据搬迁工作完成后,要对原块10进行擦除操作,使其为“空”;擦除操作是将原块10中的所有位设置为逻辑“1”。经过擦除操作的块称为“空块”,其内部所有位都为逻辑“1”。如果在擦除过程中闪存介质突然断电,可能存在该块中一部分位已经为逻辑“1”,而仍有部分位仍为逻辑“0”的情况。这时,若再向该块写入新数据就会出错。
在某些闪存介质产品中,设置了缓存(简称CACHE)机制及其相应编程指令。利用该机制,可将闪存介质中的某一个存储块视为数据暂存器,采用虚编程(CACHE PROGRAM)将数据写入其中进行易失性的暂存,如果此时闪存介质停止供电,该块中数据将丢失,该块还可写入新的数据;当然,也可以将该存储块作为正常的存储块,采用实编程(PAGE PROGRAM)操作,向该块中写入数据进行永久性非易失存储。经实编程操作后的数据,与普通的闪存介质中一样永久存储,即使闪存介质停止供电也不会丢失。
发明内容
本发明的目的在于提出一种在闪存介质中的数据操作方法,以解决闪存介质的现有数据操作技术的操作速度和效率低、损耗大以及数据安全性差等缺点。
为达到上述目的,本发明提供一种闪存介质中的数据操作方法,其特征在于,所述方法包括步骤:
1)根据针对原块的当前写指令中的指定地址,确定与该写指令相关的新块:
2)对所述新块执行写指令操作;
3)对新块执行与新块相关的后续写指令;和
4)用新块取代原块。
上述方法步骤1)包括步骤:判断是否存在与所述写指令的指定地址对应的新块;如不存在新块,或已有新块存在,但与本次写数据指令不相关,则建立新块;或者如果已存在与当前写数据指令相关的新块,则确定该新块为当前写数据指令要写入的块。
其中,所述建立新块的过程包括:
对空块标记与所述当前写指令的指定地址对应的逻辑地址、块号或其他对应标记,与所述原块建立对应关系;所述空块是在接收写指令后或在接收写指令前在存储空间中找出的;或对原块进行擦除操作后,将该被擦除的原块作为空块;或在对存储介质进行格式化时,预留一定数量的块作为不可用块,构成所述空块。
上述方法中步骤2)对所述新块执行写指令操作的包括以下情况:直接对新块执行写指令,将新数据写入新块;或者利用所述移动存储装置的易失存储器作为暂存器,取其中一个存储块与新块建立对应关系,对该暂存块执行写指令,将数据写入暂存块,再由暂存块复制到新块对应页中;或者对于具有虚编程和实编程机制的存储介质,取其中一个空块与新块建立对应关系或镜像关系,对该暂存块执行虚编程操作,将数据虚编程写入暂存块,再对新块执行实编程操作,将数据由暂存块实编程写入到新块对应页中。
上述暂存块将数据复制到新块对应页的操作可以是在暂存块累计执行多个写指令后统一执行的。
上述方法中步骤3)中,判断后续写指令与新块是否相关的方法包括:判断新块最后一页是否已执行写指令操作,如果新块最后一页已执行写操作,则后续写指令与所述新块无关,执行步骤4);或者判断后续写指令的指定地址与新块的逻辑地址、块号或其他对应标记是否相同或对应;对于与新块相关的后续写指令,采用与当前指令相同的步骤执行;
上述方法进一步包括对所述与当前写指令无关的新块或暂存块进行清理的过程,该过程包括:在所有已有的新块或暂存块中筛选出应进行清理的新块或暂存块;和对所述筛选出的新块或暂存块进行清理;所述清理操作通过数据搬迁过程实现。
所述筛选采用如下方式进行:
计时方式:比较所有新块或暂存块等候相关写数据指令的时长,将等候最久的新块或暂存块筛选出来;或
优先级方式:根据等待时长、相关指令的优先级、相关文件的优先级,筛选出优先级最低或最高的新块或暂存块;或
物理地址方式:根据所述新块或暂存块在闪存介质的物理地址,将最远最少使用的新块或暂存块筛选出来;或
指令计数方式:根据所述新块或暂存块执行的指令数目,将执行指令数目符合预定标准的新块或暂存块筛选出来;
在上述方式中,被筛选的所述新块或暂存块数量为一个或多个。
上述方法中步骤4)中新块取代原块可通过数据搬迁过程实现;所述原块中的要保留的数据可直接搬迁到新块中,也可搬迁到暂存块中,与所述暂存块中的新数据共同组成有效数据,再由暂存块复制到新块对应页中,或由暂存块一次性同时写入到与所述暂存块镜像的新块的对应页中。
上述方法中进一步包括:从所述指定新块或暂存块接收到最后一个写操作指令起计时;判断计时是否到达预定时长;如果计时没有到达预定时长,则持续计时,否则判断是否有所述新块或暂存块;如果存在所述新块或暂存块,则对所存在的新块或暂存块进行筛选及清理操作,否则持续计时;和当所述移动存储装置停止工作时,停止计时。
上述方法还包括:在对所述新块进行写数据操作时,至少向其中一页加注标注信息;在闪存介质上电后,对任一个存储块,检查其标注信息,如果标注信息与预定信息不符,将该存储块擦除,保留另一个存储块;如果标注信息符合预定信息则保留该存储块,擦除另一个存储块;
查找对照表,如果发现两个具有相同逻辑地址的存储块,且各块所有页的标注信息是一致的,则选择一个数据正确的存储块予以保留,擦除另一个存储块;
检查闪存介质的所有空块中是否还有部分未完全擦除的数据,如果有则对该空块再次进行擦除。
当存在两个数据完整的存储块时,采用校验码对两个数据完整的存储块进行检验,选择其中一个数据正确的予以保留,所述利用校验码对数据检验的方法包括:在向存储块写入或暂存数据过程中,每对一页进行数据操作时,对要写入的数据计算出校验码,将其保存在该页冗余区中;根据页内数据存储区保存的数据,采用相同的算法计算出校验值,将该值与该页冗余区中保存的校验码比较;和如果两者不相同,说明该页内数据存储区保存的数据与要写入的数据不同,该页内的数据不正确,其所属的存储块数据不正确。
根据本发明的在闪存介质中的数据操作方法,所述闪存介质包括多个存储块,每个所述存储块由多个页构成,每个页包括数据存储区和冗余区,所述数据操作执行至少一条数据操作指令,所述方法包括:根据当前写指令中指定地址所指定的存储块,确定与该写数据指令相关的新存储块;对所述新存储块进行写数据操作;判断后续指令是否与所述新存储块相关,如果相关,则执行该相关的指令,直到对所述新存储块相关的指令都已执行完;和将所述新存储块中的内容作为与该存储块相关的所述写数据指令操作的最终结果。
使用本发明的方法进行数据操作,能够大大简化大多数种类的闪存介质的数据操作指令执行过程,明显提高数据操作指令执行效率、节省操作时间,还可保证操作过程中的数据安全,减少对闪存介质频繁操作而引起的损耗,延长闪存介质使用寿命。并且在数据操作过程中,无论是人为的非法操作或是意外断电等情况,都不会造成闪存介质中有效数据的丢失。此外,还可避免存储块没有被完全擦除以致再次读写出错的情况,在提高数据操作速度的前提下提高了数据安全性及系统稳定性。
以下参照附图对本发明的具体实施方式的具体而详细的说明将会使本领域普通技术人员理解本发明的思想。
附图的简要说明
图1示意性地说明了现有闪存介质中存储块和页的组织结构;
图2是实施本发明方法的原块、新块和暂存块的示意图;
图3是采用本发明第一实施方式执行写数据指令的主流程示意图;
图4是本发明第一实施方式中数据搬迁过程的流程示意图;
图5是本发明第一实施方式中暂存块清理过程的流程示意图;
图6是采用本发明第二实施方式执行写数据指令的主流程示意图;
图7是本发明第二实施方式中数据搬迁过程的流程示意图;
图8是本发明第一实施方式中监控过程的流程示意图。
具体实施方式
根据本发明的第一实施方式,在普通闪存介质产品中,利用移动存储装置的暂存器机制,将对某一块的多个写数据指令进行统一处理,以实现数据操作的提速。
根据该实施例,采用移动存储装置的易失存储器作为暂存器,在暂存器的存储空间中开辟与原块10容量相等的暂存块30,用于在指令执行过程中暂存写指令中的新数据。
在该第一实施方式的一个实施例中,可以对整个暂存器设置暂存块存在标志,标明暂存器中是否存在暂存了新数据的暂存块。暂存块存在标志的设置方法可以是:当首次在暂存器中开辟一存储块来暂存新数据时,将该标志设为“存在”;其后使用更多存储块时都维持该标志值为“存在”;当最后一个用于暂存指令数据的存储块被释放时,将该暂存块存在标志设为“不存在”。例如,设置标志初始值为0,表示没有暂存块,非零的标志值表示有暂存块;每增设一个暂存块,向该标志值加1;每使用完毕一个暂存块,将其释放时就将该标志值减1。当然,也可以采用其他规则方式,只要控制器可以根据该值判断暂存器中是否有暂存块即可。
在另一个实施例中,也可不采用上述对整个暂存器设置暂存块存在标志的方法,而是对单个暂存块设置暂存标志,用于标明暂存块的使用情况。具体做法是:每在暂存器中开辟一个存储块用于暂存新数据时,都对该块设置一暂存标志;通过读取某存储块的标志的值,控制器可了解该块是否用于暂存新数据;通过读取暂存器中所有存储块的标志的值,可知该暂存器中是否存在暂存了新数据的暂存块。当某个暂存块使用完毕后,释放该暂存块时应同时将其标志改为“不暂存”的值。
上述两种标志都可存储在暂存器、闪存介质或其他存储器中,其取值可以是数值、字符及数值与字符组合或布尔值。
在闪存介质中采用本发明的数据操作方法时,如图2所示,数据操作可以在位于闪存介质中的存储块10和20、以及位于暂存器中的暂存块30之间进行。其中存储块10为原块,是写数据指令中的指定地址所指向的存储块。存储块20是在存储空间中找出的空块(以下简称为新块),该块用与原块10相同的逻辑地址、块号或其他对应标记作为其标记。通过这些标记,该存储块20与原块10建立起对应关系。当一个写数据指令是指向原块10时,其指定的逻辑地址、块号等标记也会与该存储块20相符,即存储块20也与向原块10写数据的写数据指令有关。在对原块10的一组写数据指令统一处理完毕后,这一组指令要写入的新数据和原块中要保留的数据都将写入新块20中。而暂存块30是根据写数据指令,在暂存器中开辟的与存储块10、20容量相同的存储块,用于将要写入原块10中的新数据暂存在其中。该存储块30也通过逻辑地址、块号等标记与原块10建立对应关系,也与对原块10的写数据指令有关。
图3示出了使用本发明的数据操作方法在本实施方式中对单个写数据指令的执行过程。具体步骤为:
所述移动存储装置接收到发自操作系统的写数据指令(步骤301)后,移动存储装置的控制器根据所述指令中的指定地址找出要写入数据的存储块,即原块10(步骤302)。
接下来执行步骤303,移动存储装置的控制器依据暂存块存在标志判断暂存器中是否已有暂存块30:
如果暂存器中没有暂存块,说明暂存器中没有暂存任何要写入原块的新数据。此时应根据原块10的地址、容量等信息,在暂存器中开辟一个与原块10容量相等的空暂存块30,通过标注逻辑地址、块号或其他对应标记等方式,建立暂存块30与原块10之间的对应关系,接着修改暂存块存在标志为“存在”(步骤306)。
接下来,移动存储装置的控制器在闪存介质中,根据现有的闪存介质操作规范,查找出一个空块,标注逻辑地址、块号等标记,使其成为新块20(步骤308)。
另一方面,如果暂存器中已有暂存块,说明在本次写操作之前的写操作过程中,有某些新数据已经暂存在暂存块中,但还未完成搬迁处理;该暂存块可能与本次写指令指向的原块10对应,也可能与本次写数据指令无关。
此时应进一步检查该暂存块,判断是否与本次写数据指令相关(步骤304):
如果确定该暂存块与本次写数据指令有关,此时应向该暂存块30对应页中写入本次写数据指令要写入原块10的新数据(步骤307);
如果通过对比判断,确定该暂存块与本次写数据指令无关,应对该块进行清理并将暂存块存在标志设置为“不存在”(步骤305),该暂存块清理做法详述在后。对该块清理完毕后,再执行步骤306,在暂存器中开辟新的暂存块30,接着在闪存介质中找出一个新块20(步骤308)。
在上述步骤完成后,将写数据指令要求写入的新数据写入与该指令有关的暂存块30的对应页中,并记录该页在该暂存块30中的页偏移量或页号(步骤309)。
写完本次写数据指令要写入的新数据后,应检查是否已对暂存块30的最后一个页执行了写数据操作(步骤310)。
如果写数据操作尚未进行到暂存块30的最后一页,说明对原块10的该组相关写操作指令尚未结束,可能还有接着对原块10进行写操作的指令。此时应等待下一写数据指令的下达(步骤311),本次写数据指令执行完毕,结束主流程;
如果暂存块30已写完最后一页,说明对原块10的一组相关写数据操作都已执行完毕,这一组相关指令中的新数据已经全部保存在暂存块30中。此时应将暂存块30中的新数据以及原块10中的要转移的数据共同组成有效数据,调用数据搬迁过程,将上述有效数据迁入在步骤308找出的新块20中,取代原块10(步骤312)。数据搬迁过程详述在后。
在上述步骤完成后,还应将暂存块存在标志改为“不存在”(步骤313)。
本实施方式的单个写数据指令执行主流程结束。
在上述主流程的步骤305中,对与当前指令无关的单个暂存块进行清理操作,其清理操作实际是调用数据搬迁过程来进行。与步骤312处调用数据搬迁过程不同的是,步骤305处要进行数据搬迁的暂存块,其数据暂存操作尚未进行到最后一页;而步骤312处的暂存块,尽管其中可能有部分页的有效数据区未暂存数据,但暂存操作已经进行到最后一页。实际上,这两种操作都是将暂存块的内容转换为与其相关的指令所期望得到的有效数据。
数据搬迁过程如图4所示,具体过程为:
步骤401,将暂存块30中的新数据复制到新块20的对应页中;
步骤402,根据主流程步骤309中记录的新数据所在页的页号或偏移量,与新块所有页的页号或偏移量相比较,得出非新数据所在的页号或偏移量,将原块中这些页中的数据,即要保留的数据复制到新块20的对应页;在步骤402完成后,新块20的所有页都写入了有效数据,该有效数据由来自原块10的要保留的数据与来自暂存块30的新数据共同组成;将原块10中要保留的数据复制到新块20的对应页中;
步骤403,对原块10进行擦除操作,使原块所有位全为逻辑“1”,成为空块;
步骤404,释放暂存块,将暂存块存在标志设置为“不存在”;
步骤405,更新对照表中新块20的对应地址信息,即将对照表中对应存储块20的逻辑地址修改为本组指向原块10的写数据指令所指定的逻辑地址(也就是原块10的逻辑地址)。
数据搬迁过程结束。
上述将原块10的要保留的数据与来自暂存块30的新数据搬迁到新块的操作过程中,各步骤之间是顺序执行的。在实际操作中,上述各步骤的执行次序与时机可进行适当调整。例如,可将步骤401与步骤402对调,或将步骤403与步骤404同时进行。当然,为了保证有效数据的安全性,对擦除原块的操作必须在将要保留的数据全部复制到新块中之后进行,而释放暂存块的操作必须在将新数据全部复制到新块中之后进行。
并且,根据暂存器、闪存介质与控制器的具体性能,以及移动存储装置的具体工作原理不同,原块中要保留的数据的搬迁可有两种途径:一种是由原块10直接搬迁至新块20,另一种是在向暂存块30写入新数据的过程中,由原块10搬迁至暂存块30进行暂存,在数据搬迁过程中再与新数据一起,将整块数据搬迁至新块20。
仍参照图3。在上述主流程中,要求同一时刻暂存区中最多只能存在一个暂存了数据的暂存块,如果通过对逻辑地址、块号等标记的对比判断(主流程步骤304),发现该暂存块与当前写数据指令无关,则无论该暂存块是否写完最后一页,都调用暂存块清理过程对该暂存块进行清理操作(步骤305),方可根据当前写数据指令建立新的暂存块。如果用户在多个不同文件(对应多个存储块)之间来回穿插进行操作,则有可能造成每个存储块都无法对一组操作指令进行统一处理,仍然只根据一个操作指令进行数据搬迁操作,因此仅在一定程度上提高了数据操作速度,为此,可对上述写数据指令执行流程进行改进,以允许同一时刻闪存空间中存在多个暂存了数据的暂存块,这些暂存块分别对应不同的原块,并分别与向这些原块写数据的指令有关。
这样,主流程的步骤304可改进为:在经过步骤303判断,已知存在暂存块的情况下,检查所有暂存块的逻辑地址、块号等标记,如果能够找出一个暂存块与当前写数据指令有关,则执行步骤307,将写数据指令中的数据写入该暂存块对应页中;如果所有暂存块的逻辑地址或块号等标记都与当前指令所指定的不符,说明所有暂存块中,没有一个暂存块与当前指令有关。此时应进行步骤306,在暂存器中开辟一个空存储块作为暂存块,暂存当前写数据指令中的新数据。
虽然理论上暂存器中几乎所有存储块都可作为暂存块来暂存新数据,但在本实施方式中,过多的暂存块将导致查找速度的降低和数据安全性降低。由此需要采取暂存块的清理过程来保证暂存块的数目在合理范围内。所述清理过程应发生在经步骤304确定所有暂存块中没有一个与当前写数据指令有关的情况下、并且应该在步骤306建立一个空存储块作为新的暂存块之前。
具体清理过程如图5所示;
步骤501,在暂存器内所有暂存块30中筛选出一个应进行清理的暂存块;
步骤502,调用前述对暂存块的搬迁过程,将该暂存块中的所有新数据搬迁到新块中,用新块代替原块;
允许多个暂存块情况下的暂存块清理过程结束。
在上述清理过程的步骤501的筛选过程可采用多种淘汰机制或筛选机制,采用多种算法来实现。例如,可采用计时的方式,比较所有暂存块等候有关写数据指令的时长,将等候最久的暂存块筛选出来;也可采用优先级的方式,根据等待时长、有关指令的优先级、有关文件的优先级等因素,筛选出优先级最低或最高的暂存块;还可考虑暂存块对应在闪存介质的物理地址,将最远最少使用的暂存块筛选出来,等等。当然,也可一次筛选多个暂存块进行清理。本领域普通技术人员可以理解,对暂存块的筛选机制可以根据实际情况进行替换,不局限在本说明书揭示的范围内。对筛选机制的举例说明不构成对本发明的限定。
在采用本实施方式的数据操作方法进行读数据操作时,如果读数据指令要求读取的存储块正处在一组写操作指令统一执行的过程中,即该存储块存在一个对应的暂存块,该暂存块中已经暂存了写数据指令要向该存储块写入的新数据,则此时可以调用暂存块清理程序,将读数据指令指向的存储块中要保留的数据转移入新块中,与该暂存块中暂存的新数据共同组成所述一组写操作指令要得到的结果数据,以该新块替代读数据指令指向的存储块,使读数据指令读取存有新数据的新块。
也可以将该读数据指令分步骤执行:
第一步,将与指定的存储块相对应的暂存块中的所有新数据读取出来;
第二步,根据暂存块中读出的新数据所在的页与指定存储块的所有页进行比较,将指定存储块中不被新数据覆盖的那些页中的数据(即要保留的数据)读取出来;
第三步,将第一步与第二步读出的数据共同组成有效数据,返回给操作系统。
上述第一步与第二步的执行顺序可以对调。
另外,为方便对多个暂存块进行组织,以及在多个暂存块中查找与指令有关的暂存块,可建立并维护一张暂存块信息表。该暂存块信息表中罗列所有暂存块的逻辑地址或块号,进一步还可罗列这些逻辑地址对应的物理地址;该表为空与否则可作为暂存块存在标志,该表为空表示暂存器中不存在任何暂存块。通过读取该表信息,就可以判断是否存在暂存块,并且可查找与当前指令对应的暂存块,还可进一步找到该暂存块对应的物理地址,直接从暂存器中定位该暂存块。当然,不采用该暂存块信息表,也可以直接在暂存器中查找所有暂存块。
在前文对背景技术的描述中已介绍过,在某些闪存介质产品中设置了缓存(简称CACHE)机制。本实施例可利用该机制进行如下改进:
将闪存空间中的某一个存储块视为暂存块,采用虚编程(CACHE PROGRAM)将数据写入其中进行易失性的暂存;根据闪存介质产品的缓存机制,可在该暂存块与新块之间建立镜像关系,使暂存块与新块一一对应。指令执行主流程与上述实施例中的主流程类似,向闪存空间中的暂存块写入新数据时,采用虚编程操作,以较高速率写入;而数据搬迁过程中,可对暂存块多个页同时进行实编程操作,将多个页中的新数据一次性同时写入与之镜像的新块20的对应页中。暂存块的清理过程与上述清理过程类似。
上述实施例利用闪存空间及移动存储装置控制器中的暂存块,将欲写入原块10中的新数据暂存在暂存块30中,再统一搬迁到新块20中,整个写数据过程需要占用三个存储块之多。并且由于暂存块中的新数据是易失性存储,如果在暂存块中暂存的新数据还未完全搬迁至新块前,移动存储装置发生突然断电现象,则暂存的新数据很有可能丢失。
因此,根据本发明思想,提出另一实施方案,不使用暂存块而直接将新数据写入新块中进行非易失存储。
现在根据图2说明本发明的闪存介质数据操作方法的另一个具体实施方式。在该实施方式中,可以对某一块的多个写数据指令进行统一处理。然而,本领域普通技术人员可以理解,这种具体实施方式并不是对本发明的限定。
当采用本实施方式的数据操作方法时,如图2所示,数据操作在位于闪存介质中的存储块10和20之间进行。其中存储块10为原块,是数据操作指令中的指定地址所指向的存储块。存储块20(以下简称新块)是在闪存介质中找出的空块,其标记有与原块10相符的逻辑地址、块号或其他对应标记。通过这些标记,该新块20与原块10建立起对应关系。当一个写数据指令是指向原块10时,其指定的逻辑地址、块号等标记也会与该新块20相符,即新块20也与向原块10写数据的写数据指令有关。与前一实施方式相似地,本实施方式对整个闪存空间设置新块信息表,以信息表为空与否来表明闪存空间中是否存在写入了新数据的新块。
图6示出了使用本发明第二实施方式的数据操作方法,对一组写数据指令执行的主流程。
如图6所示,所述移动存储装置接收到发自操作系统的写数据指令(步骤601)后,移动存储装置的控制器根据所述指令中的指定地址寻找要写入数据的存储块,即原块10(步骤602)。
接下来执行步骤603,移动存储装置的控制器根据新块信息表为空与否判断闪存介质中是否存在存储了数据的新块20。
如果不存在新块20,应根据原块10的容量等信息,在闪存介质中找出一个空块20,标注与原块10相同的逻辑地址、块号或其它对应标记,以建立与原块10之间的对应关系。该空块20将作为新块,存储一组写数据指令中要写入原块10的新数据。将该新块有关信息录入新块信息表中,此时新块信息表变为非空(步骤606)。
另一方面,如果闪存介质中已有新块存在,说明在本次写操作之前的写操作过程中,有某些新数据已经存储在新块中,但还未完成数据搬迁处理。这些新块中,可能有某个新块与本次写数据指向的原块10对应,也可能全部与本次写数据指令无关。
此时应进一步在新块信息表中查找是否有与本次写数据指令相关的新块(步骤604)。
如果通过查找新块信息表,确定某新块20与本次写数据指令有关,此时应根据将本次写数据指令要写入原块10的新数据写入到新块20的对应页中(步骤607)。
如果通过对比判断,断定所有新块与本次写数据指令无关,应筛选出一个或多个无关的新块并对其进行清理,同时删除新块信息表中对应这些新块的信息(步骤605),新块清理做法详述在后。对无关的部分新块清理完毕后,执行步骤606,在闪存空间中找出一个空块作为对应本次写数据指令的新块,将其信息录入新块信息表,准备存储新数据。
在上述步骤完成后,将写数据指令要求写入的新数据写入与本次指令有关的新块20的对应页中,并记录该页在该新块20中的页偏移量或页号(步骤608)。
在写完本次写数据指令要写入的新数据后,检查是否已对新块20的最后一页进行写操作(步骤609)。
如果写操作尚未进行到暂存块20的最后一页,说明对原块的该组相关写操作指令尚未结束,可能还有接着对原块10进行写操作的指令。此时应等待下一写数据指令的下达(步骤610),本次写数据指令执行完毕,结束主流程。
如果已对新块20的最后一页进行写操作,说明对原块10的一组相关写数据操作都已执行完毕,这一组相关指令中的新数据已经全部保存在新块20中,接下来的写操作指令一般是指向下一个存储块。此时应调用数据搬迁过程,将原块10中要保留的数据写入新块20中,以新块20取代原块10(步骤611)。在上述步骤完成后,还应从新块信息表中删除有关该新块的信息。
本实施方式的单个写数据指令执行的主流程结束。
在上述主流程步骤605中,对与当前指令无关的新块进行清理操作实际是调用数据搬迁过程进行的。与步骤611处调用数据搬迁过程不同的是,步骤605处要进行数据搬迁的新块,其写操作尚未进行到最后一页;而步骤611处的新块,尽管其中可能有部分页的有效数据区未暂存数据,但写操作已经进行到最后一页。与第一实施方式同理,这两种操作都是将暂存块的内容转换为与其相关的指令所期望得到的有效数据。
数据搬迁过程如图7所示,具体过程为:
步骤701,根据主流程步骤608中记录的新数据所在页的页号或偏移量,与新块20所有页的页号或偏移量相比较,得出非新数据所在的页号或偏移量,将原块中这些页中的数据(即要保留的数据)复制到新块20的对应页。在步骤701完成后,新块20的所有页都写入了有效数据,该有效数据由来自原块10的要保留的数据与指令写入的新数据共同组成。
步骤702,对原块10进行擦除操作,使原块所有位全为逻辑“1”,成为空块;
步骤703,更新对照表中新块20的对应地址信息,即将对照表中对应新块20的逻辑地址修改为本组指向原块10的写数据指令所指定的逻辑地址(也就是原块10的逻辑地址);
数据搬迁流程结束。
通过上述两个实施方案的描述,本发明的数据操作方法可在绝大多数闪存介质中实现数据操作的提速。以下为使本发明的方案更为安全高效,将结合上述两个实施方案提出一些辅助及改进措施。
根据上述两个实施方式的说明,在移动存储装置执行写数据指令过程中,如果需要使用一个空块作为新块,就临时在闪存空间的多个存储块中找出一个未使用的空块;这样做需要经常进行对大规模存储块的查找,速度和效率低。
根据本发明的一改进方案,在执行写操作指令前,预先在每一个闪存空间或闪存区域(ZONE)中找出一个可用的空块作预备。当需要使用新块时,不需临时查找空块,而是取出该预备的空块,标记逻辑地址、块号或其他对应标记,使其成为新块20,与原块10建立对应关系,再将新数据写入新块20里。
根据现有的移动存储装置原理,在对于每一片闪存芯片进行格式化时,要预留一定数量的块作为不可用块,包括坏块及控制器保留块等。实际被格式化的存储容量会扣除这些不可用块。所以总可以找到一个以上的好的不可用块做为空块,并且这些空块可以视闪存空间容量大小及对存储单元的管理灵活分配。例如,可以将整个闪存的容量分为M等分,在每个1/M容量的存储区域里预留一定数量的不可用块。
在数据搬迁过程中,参见图7,每当原块10被擦除成为空块(步骤703),都可将该空块作为预留的空块,以备下次作为新块20使用,节省查找新块的时间。
该改进方法适用于普通闪存芯片产品和设置了cache机制的闪存芯片产品,可适用于采用暂存器或不使用暂存器的本发明的具体实施方法。
以第一实施方式为例,参照图3的写数据指令执行主流程,在对移动存储装置的实际应用过程中,用户可能长时间中断写操作而进行其他操作,此时移动存储装置的闪存介质中,很可能尚有一个暂存块未进行数据搬迁操作。也就是说,已经有多个写数据操作指令欲对某个原块写数据,但这些指令尚未指向原块最后一页,这些指令中的新数据都暂存在对应暂存块中,指令执行主流程长时间处在等待下一指令的状态(步骤610)。这段时间如果发生用户非法操作或闪存介质突然断电,那么暂存块中暂存的一批新数据将因断电而丢失。为避免类似情况产生,根据本发明的一优选方案,提供一监控过程,在闪存介质进行数据操作过程中,持续监控写数据指令下达的时间间隔,一旦发现某个暂存块等待写指令过长时间,监控过程将调用暂存块清理过程对该暂存块进行清理,将其中的暂存数据迁移到新块20中。
该监控过程针对某个原块的具体监控流程如图8所示,具体做法为:
步骤801,自原块接收到最后一个写操作指令起计时;
步骤802,判断计时是否到达预定时长;如果没有,则持续计时;
步骤803,如果计时到达预定时长,判断闪存介质中是否有暂存块;如果没有,则持续计时;
步骤804,如果闪存介质中有暂存块,则调用暂存块清理过程,对暂存块进行筛选及清理操作;
步骤805,如果移动存储装置停止工作,则停止计时,退出监控过程;否则持续计时。
该监控过程同样可以应用于上述的第二实施方式中,即监控闪存空间中新块的等待时长,对等待时间超过一预定值的暂存块进行数据搬迁处理,使新块20取代原块10。
在上述监控过程中,不仅可采用计时,还可采用其他方式检测写数据指令下达情况;上述监控过程也可嵌入写数据指令执行主流程的步骤中执行。
由于本发明的数据操作方法是对一组写数据指令进行统一处理,当数据从暂存状态或从暂存块中搬迁到新块的过程中,仍然可能如同背景技术中所描述的,在数据搬迁时因非法断电而丢失原有和新写入的数据。
在上述第一实施方式中,因非法断电而丢失数据的情况仅可能发生在对暂存块进行数据搬迁的过程中。现在结合图4说明在对暂存块进行数据搬迁过程中,非法断电可能造成数据损坏的情况。
如在步骤401开始后直至步骤402开始前发生断电,则原块中要保留的数据可能仅有部分复制到新块中,暂存块经断电后丢失所有数据。再次上电后,闪存介质中不存在具有相同逻辑地址的多个存储块,不会造成数据丢失。
如果在步骤402进行过程中发生断电,可能数据搬迁操作过程尚未完成,暂存块中部分页的新数据已经搬迁到新块20中,剩余部分页中暂存的新数据将丢失。再次上电后,闪存空间中会存在两个具有相同逻辑地址的存储块,其中一个存储块的数据完好,另一个数据不全。由于逻辑地址相同而造成无法准确定位存储块,该存储块对应的数据文件就被损坏。
如果在步骤402完成后、步骤403开始之前发生断电,此时暂存块30及原块10中的数据已经全部搬迁到新块20中,不会因断电而丢失。闪存空间中会存在两个具有相同逻辑地址的存储块,这两个存储块中的数据都完整。但是,其中一个块中的数据是写数据操作之前的,另一个块中的数据是经写数据操作更新的。由于逻辑地址相同而造成无法准确定位存储块,该存储块对应的数据文件就被损坏。
如果在步骤403进行过程中发生断电,原块可能只擦除了一部分,尚余部分页仍有数据。文件系统会将其视为空块,再次向该存储块写入新数据时就会出错。
如果在步骤403完成后发生断电,由于对存储块的数据操作已经完成,不会造成数据的丢失或错漏情况。更新对照表的过程若因非法断电而中断,在再次上电后,仍可重新进行。
针对上述异常断电可能造成的数据丢失以及存储块逻辑地址相同的现象,在本发明的一优选实施方式中,提出了保护有效数据的措施。
在使用本发明的数据操作方法过程中,对暂存块进行数据搬迁操作即执行步骤402时,每向新块20写入一页新数据,就向该页加标注信息。该标注信息由系统预定义或用户定义的标注信息规则确定,其内容可以是写数据指令指向的原块10的逻辑地址,或者可以是具有一定变化规律或固定不变的符号,也可以是执行数据操作的页的页号以及数值、字符或数值和字符的组合。如此可保证对暂存块的数据搬迁操作完成后,新块20中的每一页都加注了标注信息。如果在对暂存块的数据搬迁操作过程中发生断电,新块20中必然有部分页加注了标注信息,而剩余部分页未加注标注信息。通过对新块20的所有页标注信息进行检查,就可判断新块20中数据完整与否。
结合上述对暂存块进行数据搬迁过程中发生非法断电可能造成数据损坏的情况,采用本发明的上述方案所提出的保护有效数据的措施后,对数据的恢复操作措施原理如下:
1)断电如果发生在步骤401进行之前,或在原块10被擦除(步骤403)完成之后,由于数据读写操作尚未开始或已经完成,不需进行数据恢复操作。
2)在步骤402进行过程中如果发生断电,则在闪存介质重新上电后,查找对照表将发现两个具有相同逻辑地址的存储块。根据前述分析,其中一个存储块中的数据可能有错漏。对任一个存储块,检查其所有页的标注信息,如果并非所有页标注信息都一致,说明该存储块内的数据有错漏,将该存储块擦除,保留另一个存储块;如果所有页标注信息一致则保留该存储块,擦除另一个存储块。
3)在步骤402完成后、步骤403开始前如果发生断电,闪存介质重新上电后,查找对照表将发现两个具有相同逻辑地址的存储块。根据前述分析,这两个存储块中的数据都是完整的,各自所有页的标注信息也必然是一致的。此时可选择一个数据正确的存储块予以保留,擦除另一个存储块。
4)在步骤403进行过程中如果发生断电,则闪存介质重新上电后,应对闪存介质中的所有空块进行检查,检查是否某些空块中还有部分未完全擦除的数据,如果有则对该空块再次进行擦除。
5)如果步骤403完成之后发生断电,则闪存介质重新上电后,移动存储装置的控制器将重新生成对照表,不需进行数据的恢复操作。
以下是当移动存储装置因非法断电造成操作中断后,再次加电时的具体数据恢复流程:
所述移动存储装置再次上电后,或再次进行数据操作前,控制器读取所述移动存储装置的存储空间中所有存储块的冗余区信息,根据读到的信息建立对照表;建立对照表的操作可采用现有技术进行。在对所有存储块进行读取操作、建立对照表的过程中,若发现存储空间中有两个存储块10和20具有相同的逻辑地址,则中断建立对照表的步骤,转到对这两个存储块进行数据恢复操作。
在逻辑地址相同的两个存储块10和20内,可能有一个含有不完整的数据信息。此时检验找到的其中一个存储块(例如10)的所有页标注的信息是否符合预定义的标注信息。
只要某一页标注信息与预定义标注信息不符就说明该存储块在中断前的数据操作中使用过,该块数据不完整,将其擦除,否则采用同样方法检查另一个存储块20所有页的标注信息。
如果通过对另一个存储块20的所有页标注信息进行检查,若所有的标注信息与预定义的标注信息不相符,说明该存储块内数据不完整,将存储块20擦除。
如果第二个存储块内所有页的标注信息也正确,说明两个存储块内的数据都是完整的。但两个存储块内部数据存储区保存的数据可能不同,需要分别对两个存储块通过校验码来检验数据是否正确。此时,根据存储块20中每页存储的数据计算校验值,并与该页冗余区内存储的校验码比较;如果发现某页校验码不符,说明该存储块检验结果不正确,则擦除存储块20。
如果存储块20内所有页的检验结果都正确,则对存储块10进行相同的校验码检查;如发现存储块10内校验码有不符则擦除存储块10;否则说明两个存储块内的数据都是正确的,可以擦除其中任一个,此处擦除存储块20。
通过该做法,排除了对存储块数据操作中断可能造成的存储块数据错误、丢失或重复情况,然后判断此时对照表建立完毕与否;如果没有完毕,则重新进行建立对照表的步骤,直到不再发现逻辑地址相同的存储块,对照表建立完毕为止,数据恢复流程结束。
对于那些未完全擦除的空块,还需单独进行清理,空块清理过程如下:
首先找出首页冗余区所有位为逻辑“1”的存储块,再检查该存储块所有页的所有位是否全为逻辑“1”,如果不全为逻辑“1”,则对该存储块执行擦除操作。
对于前述第二实施方式而言,发生断电的时机和可能产生的后果与第一实施方式不同,但数据保护措施和数据恢复措施原理类似。下面参照图7详细分析如下:
1’)断电如果发生在将要保留的数据复制从原块10复制到新块20之前(步骤701进行之前),或在原块10被擦除之后(步骤703完成之后),由于数据读写操作尚未开始或已经完成,不需进行数据恢复操作。
2’)如果在步骤701开始后直至步骤702进行时发生断电,从以上描述可知新块20中只有部分页迁入数据并且加注了标注信息。再次上电后,查找对照表将发现两个具有相同逻辑地址的存储块。对任一个存储块,检查其所有页的标注信息,如果并非所有页标注信息都一致,说明该存储块内的数据有错漏,将该存储块擦除,保留另一个存储块;如果所有页标注信息一致则保留该存储块,擦除另一个存储块。
3’)如果在步骤702完成之后,步骤703进行之前发生断电,此时新块20已经保存了有效数据,并且所有页都加注了标注信息。而原块10中的数据尚未开始擦除,两个存储块各自的所有页标注信息都一致,但两个存储块内部数据存储区保存的数据不同。闪存介质重新上电后,查找对照表将发现两个具有相同逻辑地址的存储块。根据前述分析,这两个存储块中的数据都是完整的,各自所有页的标注信息也必然是一致的。此时可选择一个数据正确的存储块予以保留,擦除另一个存储块。选择过程在后文中予以说明。
4’)如果在步骤703进行过程中发生断电,此时原块10可能已有部分页被擦除;闪存介质重新上电后,应对闪存介质中的所有空块进行检查,检查是否有空块中尚余部分未完全擦除的数据,如果有则对该空块再次进行擦除。
上述数据恢复措施中,可能需要在两个数据完整的存储块中选择一个数据正确的予以保留,该选择可以采用校验码进行。利用校验码对数据的检验方法是:在向存储块写入或暂存数据过程中,每对一页进行数据操作时,控制器根据现有技术已知的算法对要写入的数据计算出校验码,将其保存在该页冗余区中。在使用校验码对数据进行检验时,根据页内数据存储区保存的数据,采用相同的算法计算出校验值,将该值与该页冗余区中的保存的校验码比较,如果两者不相同,说明该页内数据存储区保存的数据与要写入的数据不同,该页内的数据有错。具体恢复及空块清理流程与前一实施例类似。
以上是对本发明示例性地说明,本领域普通技术人员可以理解,可对本发明的数据操作方法进行改进。例如,将闪存介质中多个存储块或某范围内的存储块组成一个区域,则可利用本发明思想对该区域的一组数据操作指令进行统一处理。如果规定对存储块的操作都以页的顺序或块内地址顺序进行,则可简化新数据与要保留的数据组成有效数据的过程,简化对存储块的页加注标注信息以及对标注信息的检查过程,还可使具体流程安排更加灵活。
另外,本发明中对暂存块的选择、设置和具体操作流程不是唯一的;本发明中涉及的表格及标志设置、计时/计数、页内标注信息设置、存储块内偏移量或页号的记录以及数据校验等具体方法都不是唯一的。这些信息可存储在移动存储装置的控制器、闪存空间或其它地方。此外,搜寻存储块的途径、存储块的筛选也可采用各种已知的技术。
本发明的精髓是在对存储块进行数据操作时,将对一个或多个存储块进行数据操作的指令统一进行处理,将多个数据操作指令涉及的数据组织好再统一进行数据的迁移操作。从而很好地解决了现有技术缺陷,实现了本发明的目的。
不偏离本发明思想的对本发明技术方案的各种改型将落入本发明权利要求所限定的范围中。
Claims (11)
1.闪存介质中的数据操作方法,其特征在于,所述方法包括步骤:
1)根据针对原块的当前写指令中的指定地址,确定与该写指令相关的新块;
2)对所述新块执行写指令操作;
3)对新块执行与新块相关的后续写指令;和
4)用新块取代原块。
2.根据权利要求1所述的方法,其特征在于,所述步骤1)包括:
判断是否存在与所述写指令的指定地址对应的新块;
如不存在新块,或已有新块存在,但与本次写数据指令不相关,则建立新块;或者
如果已存在与当前写数据指令相关的新块,则确定该新块为当前写数据指令要写入的块。
3.根据权利要求2所述的方法,其特征在于,所述建立新块的过程包括:
对空块标记与所述当前写指令的指定地址对应的逻辑地址、块号或其他对应标记,与所述原块建立对应关系;所述空块是在接收写指令后或在接收写指令前在存储空间中找出的;
或对原块进行擦除操作后,将该被擦除的原块作为空块;
或在对存储介质进行格式化时,预留一定数量的块作为不可用块,构成所述空块。
4.根据权利要求1所述的方法,其特征在于,所述步骤2)对所述新块执行写指令操作的包括以下情况:
直接对新块执行写指令,将新数据写入新块;
或者利用所述移动存储装置的易失存储器作为暂存器,取其中一个存储块与新块建立对应关系,对该暂存块执行写指令,将数据写入暂存块,再由暂存块复制到新块对应页中;
或者对于具有虚编程和实编程机制的存储介质,取其中一个空块与新块建立对应关系或镜像关系,对该暂存块执行虚编程操作,将数据虚编程写入暂存块,再对新块执行实编程操作,将数据由暂存块实编程写入到新块对应页中;
上述暂存块将数据复制到新块对应页的操作可以是在暂存块累计执行多个写指令后统一执行的。
5.根据权利要求1所述的方法,其特征在于所述步骤3)中,判断后续写指令与新块是否相关的方法包括:
判断新块最后一页是否已执行写指令操作,如果新块最后一页已执行写操作,则后续写指令与所述新块无关,执行步骤4);
或者判断后续写指令的指定地址与新块的逻辑地址、块号或其他对应标记是否相同或对应;
对于与新块相关的后续写指令,采用与当前指令相同的步骤执行。
6.根据权利要求1所述的方法,其特征在于,进一步包括对所述与当前写指令无关的新块或暂存块进行清理的过程,该过程包括:
在所有已有的新块或暂存块中筛选出应进行清理的新块或暂存块;和
对所述筛选出的新块或暂存块进行清理;
所述清理操作通过数据搬迁过程实现。
7.根据权利要求6所述的方法,其特征在于,所述筛选采用如下方式进行:
计时方式:比较所有新块或暂存块等候相关写数据指令的时长,将等候最久的新块或暂存块筛选出来;或
优先级方式:根据等待时长、相关指令的优先级、相关文件的优先级,筛选出优先级最低或最高的新块或暂存块;或
物理地址方式:根据所述新块或暂存块在闪存介质的物理地址,将最远最少使用的新块或暂存块筛选出来;或
指令计数方式:根据所述新块或暂存块执行的指令数目,将执行指令数目符合预定标准的新块或暂存块筛选出来;
在上述方式中,被筛选的所述新块或暂存块数量为一个或多个。
8.根据权利要求1所述的方法,其特征在于,所述步骤4)中新块取代原块可通过数据搬迁过程实现;所述原块中的要保留的数据可直接搬迁到新块中,也可搬迁到暂存块中,与所述暂存块中的新数据共同组成有效数据,再由暂存块复制到新块对应页中,或由暂存块一次性同时写入到与所述暂存块镜像的新块的对应页中。
9、根据权利要求1至8任一项所述的方法,其特征在于,进一步包括:
从所述指定新块或暂存块接收到最后一个写操作指令起计时;
判断计时是否到达预定时长;
如果计时没有到达预定时长,则持续计时,否则判断是否有所述新块或暂存块;
如果存在所述新块或暂存块,则对所存在的新块或暂存块进行筛选及清理操作,否则持续计时;和
当所述移动存储装置停止工作时,停止计时。
10.根据权利要求1至9任一项所述的方法,其特征在于,进一步包括:
在对所述新块进行写数据操作时,至少向其中一页加注标注信息;
在闪存介质上电后,
对任一个存储块,检查其标注信息,如果标注信息与预定信息不符,将该存储块擦除,保留另一个存储块;如果标注信息符合预定信息则保留该存储块,擦除另一个存储块;
查找对照表,如果发现两个具有相同逻辑地址的存储块,且各块所有页的标注信息是一致的,则选择一个数据正确的存储块予以保留,擦除另一个存储块;
检查闪存介质的所有空块中是否还有部分未完全擦除的数据,如果有则对该空块再次进行擦除。
11.根据权利要求10所述的方法,其特征在于,当存在两个数据完整的存储块时,采用校验码对两个数据完整的存储块进行检验,选择其中一个数据正确的予以保留,所述利用校验码对数据检验的方法包括:
在向存储块写入或暂存数据过程中,每对一页进行数据操作时,对要写入的数据计算出校验码,将其保存在该页冗余区中;
根据页内数据存储区保存的数据,采用相同的算法计算出校验值,将该值与该页冗余区中保存的校验码比较;和
如果两者不相同,说明该页内数据存储区保存的数据与要写入的数据不同,该页内的数据不正确,其所属的存储块数据不正确。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101177161A CN100538900C (zh) | 2003-12-31 | 2003-12-31 | 闪存介质中的数据操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101177161A CN100538900C (zh) | 2003-12-31 | 2003-12-31 | 闪存介质中的数据操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1635579A true CN1635579A (zh) | 2005-07-06 |
CN100538900C CN100538900C (zh) | 2009-09-09 |
Family
ID=34843698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101177161A Expired - Lifetime CN100538900C (zh) | 2003-12-31 | 2003-12-31 | 闪存介质中的数据操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100538900C (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102237130A (zh) * | 2010-04-20 | 2011-11-09 | 深圳市江波龙电子有限公司 | 一种寻找多层单元闪存中最低有效位页的方法及系统 |
CN101595461B (zh) * | 2007-01-31 | 2012-07-04 | 微软公司 | 延长闪存驱动器使用寿命 |
CN103116552A (zh) * | 2013-03-18 | 2013-05-22 | 华为技术有限公司 | 用于在分布式存储系统中分配存储空间的方法和装置 |
CN103268290A (zh) * | 2013-01-04 | 2013-08-28 | 苏州懿源宏达知识产权代理有限公司 | 基于优先级锁定的闪存存储方法 |
CN103456360A (zh) * | 2013-09-13 | 2013-12-18 | 北京昆腾微电子有限公司 | 非易失性存储器的管理方法和装置 |
CN106126469A (zh) * | 2016-08-17 | 2016-11-16 | 中国海洋石油总公司 | 一种深水立管一体式数据采集装置及其数据存储方法 |
CN110825658A (zh) * | 2018-08-14 | 2020-02-21 | 慧荣科技股份有限公司 | 闪存控制器及方法 |
-
2003
- 2003-12-31 CN CNB2003101177161A patent/CN100538900C/zh not_active Expired - Lifetime
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101595461B (zh) * | 2007-01-31 | 2012-07-04 | 微软公司 | 延长闪存驱动器使用寿命 |
CN102237130A (zh) * | 2010-04-20 | 2011-11-09 | 深圳市江波龙电子有限公司 | 一种寻找多层单元闪存中最低有效位页的方法及系统 |
CN102237130B (zh) * | 2010-04-20 | 2014-01-29 | 深圳市江波龙电子有限公司 | 一种寻找多层单元闪存中最低有效位页的方法及系统 |
CN103268290A (zh) * | 2013-01-04 | 2013-08-28 | 苏州懿源宏达知识产权代理有限公司 | 基于优先级锁定的闪存存储方法 |
CN103268290B (zh) * | 2013-01-04 | 2016-02-17 | 深圳爱淘城网络科技股份有限公司 | 基于优先级锁定的闪存存储方法 |
CN103116552A (zh) * | 2013-03-18 | 2013-05-22 | 华为技术有限公司 | 用于在分布式存储系统中分配存储空间的方法和装置 |
CN103116552B (zh) * | 2013-03-18 | 2017-03-15 | 华为技术有限公司 | 用于在分布式存储系统中分配存储空间的方法和装置 |
CN103456360A (zh) * | 2013-09-13 | 2013-12-18 | 北京昆腾微电子有限公司 | 非易失性存储器的管理方法和装置 |
CN103456360B (zh) * | 2013-09-13 | 2016-08-17 | 昆腾微电子股份有限公司 | 非易失性存储器的管理方法和装置 |
CN106126469A (zh) * | 2016-08-17 | 2016-11-16 | 中国海洋石油总公司 | 一种深水立管一体式数据采集装置及其数据存储方法 |
CN110825658A (zh) * | 2018-08-14 | 2020-02-21 | 慧荣科技股份有限公司 | 闪存控制器及方法 |
CN110825658B (zh) * | 2018-08-14 | 2023-06-20 | 慧荣科技股份有限公司 | 闪存控制器及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100538900C (zh) | 2009-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1149479C (zh) | 一个实时系统的数据管理系统 | |
CN1315057C (zh) | 重映射闪速存储器的方法 | |
CN1276358C (zh) | 用于存储设备的地址转换单元 | |
CN1696888A (zh) | 记录介质、主机设备及数据处理方法 | |
CN1256732C (zh) | 快闪存储器及其控制方法 | |
CN1297900C (zh) | 数据存储设备、主机设备、数据记录系统及数据管理方法 | |
CN1129848C (zh) | 对非易失性存储器中的文件进行连续重写的方法 | |
CN1291320C (zh) | 保存大容量存储系统的所选数据的快照 | |
JP4182993B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
CN101051286A (zh) | 存储系统 | |
CN1517947A (zh) | 非易失性存储器 | |
CN1906596A (zh) | 文件记录装置 | |
CN101046759A (zh) | 远程复制系统以及远程复制控制方法 | |
CN1690973A (zh) | 远程复制方法及远程复制系统 | |
CN1648876A (zh) | 闪速存储器的数据管理设备和方法 | |
CN1773470A (zh) | 库系统、虚拟库装置、缓存器恢复方法及可机读记录介质 | |
CN1701389A (zh) | 维持非易失性存储系统中的平均擦除计数 | |
CN101078999A (zh) | 一种实现数据备份和恢复的方法及系统 | |
CN1701308A (zh) | 维护非易失性存储系统中的擦除计数 | |
CN1629815A (zh) | 具有多数个存储系统的数据处理系统 | |
CN101042681A (zh) | 一种数据透明保护的安全读写系统和方法 | |
CN1908907A (zh) | 改善资料写入效率的方法以及实施此方法的子系统与系统 | |
CN1975684A (zh) | 一种支持边服务边恢复的分布式实时数据库故障恢复方法 | |
CN1761949A (zh) | 垃圾收集系统 | |
CN1538456A (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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20090909 |
|
CX01 | Expiry of patent term |