CN101154447B - 一种闪存控制方法及闪存 - Google Patents
一种闪存控制方法及闪存 Download PDFInfo
- Publication number
- CN101154447B CN101154447B CN2006101134545A CN200610113454A CN101154447B CN 101154447 B CN101154447 B CN 101154447B CN 2006101134545 A CN2006101134545 A CN 2006101134545A CN 200610113454 A CN200610113454 A CN 200610113454A CN 101154447 B CN101154447 B CN 101154447B
- Authority
- CN
- China
- Prior art keywords
- physical block
- information
- record
- page
- write
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及USB移动存储领域,尤其涉及一种闪存控制方法及闪存,用以解决现有技术中存在FLASH上电处理速度缓慢的问题。在本发明中,FLASH预留物理块,并利用预留的物理块记录未完成的擦除或写操作的信息;FLASH在每一次上电时,根据预留的物理块记录的信息进行数据的恢复和处理。采用本发明方法,减少了FLASH在每一次上电后为了恢复处理数据而进行的工作量,从而提高FLASH的上电处理速度。
Description
技术领域
本发明涉及USB(Universal Serial Bus,通用串行总线)移动存储领域,尤其涉及一种闪存控制方法及闪存。
背景技术
在计算机技术快速发展的今天,用户时常需要进行大量数据的转移和存储。移动存储类设备的适时出现迎合了广大用户的需求,以优盘为代表的移动存储类设备得到广泛的应用。所谓移动存储类产品是基于USB接口的,采用FLASH(闪存)介质的存储产品。按照惯例,我们把一个FLASH称为一个Zone,一个Zone包含多个块,一个块包含多个页,下面假设一个Zone包含M块,一个块包含N页。页又分为两个区,数据区和冗余区。数据区主要用来存放有效数据;冗余区主要存放除了必须的该页所属块对应的逻辑块号和有效数据的ECC(Error Checking and Correcting,错误检查和纠正)校验,还可以存放块完成标志甚至厂商产品信息等等,不一而论。对FLASH的访问操作包括FLASH基于块的读、写和擦除。对FLASH基于块的写的过程包括原数据块保留数据转移的过程、新数据写的过程和原数据块擦除的过程;对FLASH基于块的擦除的过程就是将块中所有逻辑位置为1的过程。FLASH中数据的访问操作是通过读文件目录表和文件分配表而实现的。
相比较软盘,FLASH具有方便、快捷、安全可靠等优点,但是它也有其不足之处。比如在FLASH基于块的写的过程中发生了人为的或外界不可抗力等因素造成非法掉电,那么文件目录表和文件分配表中的信息就有可能发生混乱,造成数据的不可访问,从而导致数据的丢失。在基于FLASH的块的擦除的过程中发生了人为的或外界不可抗力等因素造成非法掉电,块部分未被擦除,再使用该块就会导致错误。所以必须有这样一种方法,该方法能够对块进行标记,在掉电后重新上电能够根据标记辨别出未完成操作的块,从而进行块的数据的恢复。
为了解决这个问题,目前普遍使用的一种方案是在要访问的块的每一页的冗余区标注一些信息来表示该页是否操作完毕。当进行FLASH的写操作时,首先根据要写的逻辑块找到对应的物理块,如果没有找到对应的物理块,则寻找一个空的物理块,将此次操作要写入的数据写入该块中,同时将对应页中的冗余区中写入对应的逻辑块号,完成后再将该块中未被使用的页的冗余区中也写入对应的逻辑块号,在映射表中建立该逻辑块和该寻找到的物理块的映射关系;如果找到对应的物理块,则先寻找一个新的空的物理块,将原来逻辑块对应的物理块中的数据拷贝到新块的对应页中,并在完成拷贝的页中的冗余区中写入对应的逻辑块号,然后将此次操作要写入的数据写入新块中,并在完成写入的页中的冗余区中写入对应的逻辑块号,完成后再将新块的未被使用的页的冗余区中也写入对应的逻辑块号,在映射表中建立该逻辑块和该寻找到的物理块的映射关系,最后擦除原物理块,将映射表中该逻辑块和原物理块的映射关系删除。
这样无论在哪一步发生异常掉电,原数据都不会丢失。比如,当在从原物理块拷贝数据到新物理块时发生掉电,则新物理块的部分页的冗余区内的标记不是对应的逻辑块号,上电后,遍历该物理块的所有页,一旦发现块内某一页冗余区内的标记不是对应的逻辑块号,则表明数据没有完全转移到新物理块,直接擦除新块,保证该新块在以后的正确使用,而原物理块的数据也得到了保护。当原物理块内的数据完全拷贝到新物理块内,在擦除原物理块时掉电,则上电后会发现原物理块的部分页的逻辑位为1,部分页的冗余区标记为对应的逻辑块号,则直接擦除该块,并更新映射表,由于原物理块要保留的数据已经完全拷贝到新物理块中,所以数据得到保护。对于基于FLASH的块擦除,同样的原理可以保证擦除的过程中掉电后重新上电后,能够完成块擦除工作,使块能够重新被使用。
这种对操作块标注信息表明操作是否完成的方法虽然能够保证数据不会丢失,但其也有不足之处:该方法在判断某一物理块是否是操作未完成的块时,需要读取块中页的冗余区直到发现符合块操作未完成条件的页。根据上面的假设,一个FLASH包含M个块,一个块包含N个页,则每个块平均查找次数为(N+1)/2。而在上电后为了完成数据恢复,需要遍历整个FLASH,所以每次上电后的平均查找次数为M*(N+1)/2,最多可达M*N次。该方法的进一步提高是只判断最后一页的冗余区的标志,但是只判断最后一页还不能判断该块是未完成操作的块还是空块。所以必须判断第一页和最后一页。这样要找到所有未完成操作的块需要查找的次数最多为2*M。而且在这种情况下即使使用一页也必须把N个页的冗余区写标志,这样的话,工作量就会增加,速度就会变慢。可见,在现有技术中,在FLASH中恢复处理数据的方法使得每次上电后FLASH进行的查找工作量非常巨大,从而导致FLASH的上电处理速度缓慢。
发明内容
本发明提供一种闪存控制方法及闪存,用以解决现有技术中存在FLASH由于在每一次上电时需要进行大量的查找和在冗余区写入标志的工作而导致的上电处理速度缓慢的问题。
为了解决上述技术问题,本发明提供了一种闪存控制方法,包括以下步骤:
闪存预留物理块,在所述预留的物理块中记录未完成的擦除或写操作的标识信息;所述在预留的物理块中记录未完成的擦除或写操作的标识信息,包括:在预留的物理块中寻找一个空白未完成信息记录页,在该页中记录该操作的标识信息;
闪存在每一次上电时,根据所述预留的物理块记录的信息进行数据的恢复和处理;
或者,闪存预留物理块,令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写操作的标识信息,所述浮动块是指闪存寻找到的,用来记录未完成的擦除或写操作的标识信息的物理块;所述在所述浮动块中记录未完成的擦除或写操作的标识信息包括:在该浮动块中寻找一个空白未完成信息记录页,在该页中记录该操作的标识信息;
闪存在每一次上电时,根据所述浮动块记录的信息进行数据的恢复和处理。
进一步地,上述方法还可具有以下特点:对于擦除操作,所述数据的恢复和处理包括:根据所述预留的物理块记录的信息擦除未完成的擦除操作对应的物理块,在映射表中将该物理块和其对应的逻辑块的映射关系删除。
进一步地,上述方法还可具有以下特点:所述擦除操作包括:当接收到擦除操作指令时,闪存根据该操作指令中的逻辑块号查找映射表,找到该逻辑块对应的物理块,利用所述预留的物理块记录标识该操作未完成的信息,然后擦除该逻辑块对应的物理块,在映射表中将该逻辑块和其对应的物理块的映射关系删除,利用所述预留的物理块记录标识该操作已完成的信息。
进一步地,上述方法还可具有以下特点:对于写操作,所述数据的恢复和处理包括:
根据所述预留的物理块记录的信息擦除未完成的写操作对应的新物理块;并且
查找映射表,当存在一个逻辑块对应两个物理块时,擦除所述逻辑块对应的原物理块,在映射表中将所述逻辑块和所述原物理块的映射关系删除,并将该逻辑块对应的新物理块标识为其原物理块。
进一步地,上述方法还可具有以下特点:所述写操作包括:当接收到写操作指令时,闪存根据该操作指令中的逻辑块号查找映射表,如果该逻辑块没有对应的原物理块,则直接寻找新物理块,利用所述预留的物理块记录标识该操作未完成的信息,并根据该操作指令在新物理块中写入数据,在映射表中建立该逻辑块和该新物理块的映射关系,利用所述预留的物理块记录标识该操作已完成的信息;
如果找到原物理块,则闪存寻找新物理块,利用所述预留的物理块记录标识该操作未完成的信息,将原物理块中的数据拷贝到该新物理块中,根据该操作指令在新物理块中写入数据,在映射表中建立该逻辑块和该新物理块的映射关系,利用所述预留的物理块记录标识该操作已完成的信息,然后擦除原物理块,更新映射表。
进一步地,上述方法还可具有以下特点:所述利用所述预留的物理块记录标识该操作已完成的信息包括:在该未完成信息记录页相应的完成信息记录页中写入数据;
所述根据所述预留的物理块记录的信息进行数据的恢复和处理包括:扫描所述预留的物理块,通过判断是否存在未完成信息记录页非空而其相应的完成信息记录页为空的情况来获知未完成的擦除或写操作,并根据该未完成信息记录页中记录的该操作的标识信息进行数据的恢复和处理,然后在该未完成信息记录页相应的完成信息记录页中写入数据。
进一步地,上述方法还可具有以下特点:当所述预留的物理块中的未完成信息记录页写满后,闪存寻找一个空的物理块,将所述预留的物理块中记录的未完成的擦除或写操作的信息拷贝到该寻找到的物理块的未完成信息记录页中,然后擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块;
闪存在每一次上电时,如果存在该寻找到的物理块,则擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
进一步地,上述方法还可具有以下特点:闪存预留两个或两个以上物理块来记录未完成的擦除或写操作的信息,当其中一个预留的物理块的未完成信息记录页写满后,将该未完成信息记录页写满的物理块中所述未完成的擦除或写操作的信息拷贝到另一个预留的物理块的未完成信息记录页中,擦除该未完成信息记录页写满的物理块;
闪存在每一次上电时,根据所述预留的两个或两个以上物理块记录的信息进行数据的恢复和处理。
进一步地,上述方法还可具有以下特点:
所述根据所述浮动块记录的信息进行数据的恢复和处理包括:根据所述预留的物理块中最后一个写有数据的页中保存的浮动块的标识信息找到相应的浮动块,通过判断该浮动块中是否存在未完成信息记录页非空而其相应的完成信息记录页为空的情况来获知未完成的擦除或写操作,并根据该未完成信息记录页中记录的该操作的标识信息进行数据的恢复和处理,然后在该未完成信息记录页相应的完成信息记录页中写入数据。
进一步地,上述方法还可具有以下特点:当所述浮动块中的未完成信息记录页写满后,闪存寻找一个空的物理块作为当前浮动块,将原浮动块中记录的未完成的擦除或写操作的标识信息拷贝到当前浮动块的未完成信息记录页中,将当前浮动块的标识信息顺序写入预留的物理块中的一个空白页,然后擦除所述原浮动块。
进一步地,上述方法还可具有以下特点:当所述预留的物理块写满时,闪存寻找一个空的物理块,将所述当前浮动块的标识信息写入该寻找到的物理块,然后擦除所述预留的物理块,将所述当前浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块;
闪存在每一次上电时,如果存在该寻找到的物理块,则擦除所述预留的物理块,将该寻找到的物理块中保存的所述当前浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
进一步地,上述方法还可具有以下特点:闪存预留两个或两个以上物理块来指向记录未完成的擦除或写操作的标识信息的浮动块,当其中一个预留的物理块写满后,将所述当前浮动块的标识信息写入另一个预留的物理块的起始页,擦除该写满的预留物理块;
闪存在每一次上电时,对预留的各个物理块中最后一个写有数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。
本发明还提供了一种闪存,包括操作模块,所述闪存还包括标识模块、恢复处理模块、用于保存映射表的存储单元,其中:
所述标识模块,用于预留物理块,在所述预留的物理块中记录未完成的擦除或写操作的标识信息;所述在预留的物理块中记录未完成的擦除或写操作的标识信息,包括:在预留的物理块中寻找一个空白未完成信息记录页,在该页中记录该操作的标识信息;
所述恢复处理模块在闪存每一次上电时,根据所述预留的物理块记录的信息进行数据的恢复和处理。
或者,所述标识模块,用于预留物理块,令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写操作的标识信息;所述浮动块是指闪存寻找到的,用来记录未完成的擦除或写操作的标识信息的物理块;所述在所述浮动块中记录未完成的擦除或写操作的标识信息包括:在开始擦除或写操作时,闪存根据所述预留的物理块中最后一个写有数据的页中保存的浮动块的标识信息找到相应的浮动块,在该浮动块中寻找一个空白未完成信息记录页,在该页中记录该操作的标识信息;在该擦除或写操作完成后,闪存在该未完成信息记录页相应的完成信息记录页中写入数据;
所述恢复处理模块在闪存每一次上电时,根据所述浮动块记录的信息进行数据的恢复和处理。
进一步地,上述闪存还可具有以下特点:所述闪存还包括存储单元,用于保存映射表;
所述恢复处理模块包括第一恢复处理单元和第二恢复处理单元,其中:
所述第一恢复处理单元根据所述预留的物理块记录的信息擦除所述操作模块未完成的擦除操作对应的物理块,在所述存储单元保存的映射表中将该物理块和其对应的逻辑块的映射关系删除;
所述第二恢复处理单元根据所述预留的物理块记录的信息擦除所述操作模块未完成的写操作对应的新物理块;并查找所述映射表,当存在一个逻辑块对应两个物理块时,擦除所述逻辑块对应的原物理块,在所述映射表中将该原物理块和其对应的逻辑块的映射关系删除,并将该逻辑块对应的新物理块标识为其原物理块。
进一步地,上述闪存还可具有以下特点:所述操作模块在开始写操作时,通知所述标识模块,所述标识模块利用所述预留的物理块记录标识该操作未完成的信息;
所述操作模块在所述映射表中建立该操作对应的逻辑块和其对应的新物理块的映射关系后,通知所述标识模块,所述标识模块利用所述预留的物理块记录标识该操作已完成的信息。
进一步地,上述闪存还可具有以下特点:所述闪存还包括第一控制模块,其中:
所述标识模块在所述预留的物理块中记录未完成的擦除或写操作的标识信息,并在将所述预留的物理块中的未完成信息记录页写满后,通知所述第一控制模块,所述第一控制模块寻找一个空的物理块,将所述预留的物理块中记录的未完成的擦除或写操作的信息拷贝到该寻找到的物理块的未完成信息记录页中,然后擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块;
所述恢复处理模块在闪存每一次上电时,先判断是否存在该寻找到的物理块,如果是,则擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
进一步地,上述闪存还可具有以下特点:所述闪存还包括第二控制模块,其中:
所述标识模块预留两个或两个以上物理块来记录未完成的擦除或写操作的标识信息,并在将其中一个预留的物理块的未完成信息记录页写满后,通知所述第二控制模块,所述第二控制模块将该未完成信息记录页写满的物理块中所述未完成的擦除或写操作的信息拷贝到另一个预留的物理块的未完成信息记录页中,擦除该未完成信息记录页写满的物理块;
所述恢复处理模块在闪存每一次上电时,根据所述预留的两个或两个以上物理块记录的信息进行数据的恢复和处理。
进一步地,上述闪存还可具有以下特点:所述闪存还包括第三控制模块,其中:
所述标识模块令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写操作的标识信息,并在将所述浮动块中的未完成信息记录页写满后,通知所述第三控制模块,所述第三控制模块寻找一个空的物理块作为当前浮动块,将原浮动块中记录的未完成的擦除或写操作的标识信息拷贝到当前浮动块的未完成信息记录页中,将当前浮动块的标识信息顺序写入预留的物理块中的一个空白页,然后擦除所述原浮动块。
进一步地,上述闪存还可具有以下特点:所述闪存还包括第四控制模块,其中:
所述标识模块令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写操作的标识信息,并在将所述预留的物理块写满时,通知所述第四控制模块,所述第四控制模块寻找一个空的物理块,将所述当前浮动块的标识信息写入该寻找到的物理块,然后擦除所述预留的物理块,将所述当前浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块;
所述恢复处理模块在闪存每一次上电时,判断是否存在该寻找到的物理块,如果是则擦除所述预留的物理块,将该寻找到的物理块中保存的所述当前浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
进一步地,上述闪存还可具有以下特点:所述闪存还包括第五控制模块,其中:
所述标识模块预留两个或两个以上物理块来指向记录未完成的擦除或写操作的标识信息的浮动块,所述标识模块在将其中一个预留的物理块写满后,通知所述第五控制模块,所述第五控制模块将所述当前浮动块的标识信息写入另一个预留的物理块的起始页,擦除该写满的预留物理块;
所述恢复处理模块在闪存每一次上电时,对预留的各个物理块中最后一个写有数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。
本发明有益效果如下:
在本发明中:闪存预留物理块,并利用预留的物理块记录未完成的擦除或写操作的信息;闪存在每一次上电时,只需要根据预留的物理块记录的信息进行数据的恢复和处理即可,不需要在每一次上电时需要进行大量的查找和在冗余区写入标志的工作,减少了FLASH在每一次上电后为了恢复处理数据而进行的工作量,从而提高FLASH的上电处理速度。
图1为本发明实施例一中FLASH的写操作流程图;
图2a为本发明实施例一中一个实例中写操作流程中原物理块和新物理块的状态示意图;
图2b为上述实例中写操作流程结束后原物理块和新物理块的状态示意图;
附图说明
图3为本发明实施例一中FLASH的擦除操作流程图;
图4为本发明实施例一中FLASH恢复处理数据的流程图;
图5为本发明实施例二中FLASH标识未完成的擦除或写操作的流程图;
图6为本发明实施例二中FLASH标识已完成的擦除或写操作的流程图;
图7为本发明实施例二中FLASH恢复处理数据的流程图;
图8为本发明一个实施例中的FLASH的装置框图;
图9为对应本发明实施例一中第一种对固定块进行擦除的方法的闪存的装置框图;
图10为对应本发明实施例二的闪存的装置框图。
本发明的核心思想是:FLASH预留物理块,并利用预留的物理块记录未完成的擦除或写操作的信息;
FLASH在每一次上电时,根据预留的物理块记录的信息进行数据的恢复和处理。
下面结合附图和实施例对本发明做进一步地描述。
具体实施方式
实施例一
在本实施例中,FLASH预留物理块,在预留的物理块中记录未完成的擦除或写操作的标识信息,下面称FLASH预留来记录未完成的擦除或写操作的标识信息的物理块为固定块,方便描述。将该固定块的块号写入FLASH在上电后自动执行的位置,则FLASH在上电时,会该位置保存的块号扫描该固定块。
关于记录未完成写操作的标识信息:
本实施例中,利用预留的固定块中的未完成信息记录页和其相应的完成信息记录页来标识未完成的擦除或写操作,该未完成信息记录页和其相应的完成信息记录页可以根据需要设定,例如以2*n页作为未完成信息记录页而2*n+1页作为其相应的完成信息记录页,或者以2*n+1页作为未完成信息记录页而2*n+1页作为其相应的完成信息记录页,或者以n页作为未完成信息记录页而N/2+n页作为其相应的完成信息记录页等。下面以2*n页作为未完成信息记录页而2*n+1页作为其相应的完成信息记录页为例进行说明,其中n取值从0到N/2。而为了能够实现数据的恢复,本实施例中对FLASH基于块的写的过程包括原数据块的数据转移的过程、新数据写的过程和原数据块擦除的过程,包括原数据块的数据转移的过程是由于如果不对原数据块的数据进行转移,一旦发生非法掉电,则无法对数据进行恢复。因此,当FLASH接收到一个写操作指令时,进行如图1所示的以下步骤:
步骤S101,解析该操作指令,得到该操作指令中的逻辑块L的块号;
步骤S102,根据该逻辑块L的块号查找映射表,如果找到该逻辑块L对应的物理块X,则进行步骤S103;否则,进行步骤109;
在这里根据该逻辑块L在映射表中查找到的与其对应的物理块X即该逻辑块L对应的原物理块,以下称为原物理块X。
步骤S103,寻找一个空的物理块Y,以下称为新物理块Y,在固定块中寻找相邻的两个空页2*n和2*n+1,在第2*n页中写入该操作的标识信息;
在本步骤中,该操作的标识信息包括:新物理块Y的块号以及标识该操作属性的信息(即标识该操作为写操作的信息);
步骤S104,把原物理块X中的数据拷贝到新物理块Y的对应页中;
步骤S105,将写操作指令中要写入的数据写到新物理块Y中;
步骤S106,在映射表中建立逻辑块L和新物理块Y的映射关系;
此时,在映射表中,逻辑块L与原物理块X以及新物理块Y都存在映射关系,如果FLASH在这种情况下发生非法掉电,则在重新上电时,FLASH可以查找并发现这种情况,并根据查找结果恢复处理数据。在具体实现时,可以通过标志位或者存放块号的地址来区分原物理块和新物理块。
步骤S107,在固定块的2*n+1页中写入数据;
该数据可以是新物理块Y的块号,也可以是原物理块X的块号或者其他数据,只要令2*n+1页非空即可,在此不对写入2*n+1页的数据进行具体限定。
步骤S108,擦除原物理块X,更新映射表,即在映射表中将逻辑块L和原物理块X的映射关系删除,并将新物理块Y标识为逻辑块L的原物理块,结束;
如果在映射表中是通过标志位来区分原物理块和新物理块的,则将新物理块Y标识为逻辑块L的原物理块包括:根据标志位删除原物理块X的块号,并设置标志位标识新物理块Y的为原物理块;
如果在映射表中是通过存放块号的地址来区分原物理块和新物理块的,则将新物理块Y标识为逻辑块L的原物理块包括:将存放原物理块的块号的地址中存放的块号删除,并将存放新物理块的块号的地址中存放的块号迁移到存放原物理块的块号的地址中。
步骤S109,寻找新物理块Y,在固定块中寻找相邻的两个空页2*n和2*n+1,在第2*n页中写入新物理块Y的块号;
步骤S110,将写操作指令中要写入的数据写到新物理块Y中;
步骤S111,在映射表中建立逻辑块L和新物理块Y的映射关系;
在本实施例中,认为此时完成写操作。
步骤S112,在固定块的2*n+1页中写入数据。
在一个写操作的实例中,逻辑块L存在对应的原物理块X,图2a和图2b示出了该原物理块X和新物理块Y在该写操作过程中的变化,其中:
如图2a所示,原物理块X中页0到页5有数据,FLASH在寻找到新物理块Y后,将页0到页5中的数据拷贝到新物理块Y中,此时,原物理块X和新物理块Y中页0到页5都有数据;
然后,FLASH将写操作指令中的新数据写到新物理块Y的页6到页10中,然后擦除原物理块X,此时,如图2b所示原物理块X成为空物理块,可以被再次使用,而新物理块Y中则包括了原物理块X中的数据和新写入的数据。
关于记录未完成的擦除操作的标识信息:
当FLASH接收到一个擦除操作指令时,进行如图3所示的以下步骤:
步骤S201,解析该操作指令,得到该操作指令中的逻辑块L’的块号;
步骤S202,根据该逻辑块L’的块号查找映射表,找到该逻辑块L’对应的物理块X’;
步骤S203,在固定块中寻找相邻的两个空页2*n和2*n+1,在第2*n页中写入该操作的标识信息;
在本步骤中,该操作的标识信息包括:物理块X’的块号以及标识该操作属性的信息(即标识该操作为擦除操作的信息);
步骤S204,擦除物理块X’,在映射表中将逻辑块L’和物理块X’的映射关系删除;
在本步骤中,具体删除逻辑块L’和物理块X’的映射关系的方法为删除逻辑块L’和物理块X’的块号。
步骤S205,在固定块的2*n+1页中写入数据。
在本实施例中,如果FLASH在擦除或写操作的过程中发生非法掉电,则应当保证该擦除或写操作涉及的各个物理块在重新上电之后的正常访问操作,并且对于存在对应的原物理块X的写操作来说,FLASH在重新上电时需要保护原物理块X中的数据。因此,在重新上电时,FLASH进行的恢复处理数据的流程,如图4所示,包括以下步骤:
步骤S301,FLASH扫描其预留的固定块,查找是否存在2*n页非空但2*n+1页为空的情况,如果是,进行步骤S302,否则进行步骤S305;
步骤S302,根据2*n页记录的标识该操作属性的信息判断该未完成的操作是否擦除操作,如果是,进行步骤S303,否则,该操作为写操作,进行步骤S304;
步骤S303,擦除该2*n页记录的该擦除操作对应的物理块X’,在2*n+1页中写入数据,在映射表中将该物理块和其对应的逻辑块的映射关系删除,返回步骤S301;
步骤S304,擦除该2*n页记录的该写操作对应的新物理块Y,在2*n+1页中写入数据,返回步骤S301;
在该预留的固定块中,可能存在多个2*n页非空但2*n+1页为空的情况,例如,第4页非空但第5页为空且第8页非空但第9页为空,此时,在查找到第4页非空但第5页为空时,根据第4页中保存的信息获知该操作为写操作,则擦除4页中记录的块号对应的物理块,并在第5页中写入数据,继续查找,查找到第8页非空但第9页为空时,根据第8页中保存信息获知该操作为擦除操作,则擦除8页中记录的块号对应的物理块,并在第9页中写入数据,在映射表中将该物理块和其对应的逻辑块的映射关系删除,并继续查找,查找不到2*n页非空但2*n+1页为空的情况了,则进行步骤S305。
可以想见,对于逻辑块L没有对应的原物理块X的情况,通过步骤S304则可以保证新物理块Y可以正常的被再次使用,而且,由于并没有在映射表中写入逻辑块L和新物理块Y的映射关系,因此,对于逻辑块L没有对应的原物理块X的情况,通过步骤S304即恢复处理完成。
而对于逻辑块L存在对应的原物理块X的情况,当预留的固定块中不存在多个2*n页非空但2*n+1页为空的情况时,还可能没有完成擦除物理块X’或者更新映射表的步骤,因此,还需要查找映射表并根据查找结果做进一步地处理。
步骤S305,查找映射表,查找是否存在一个逻辑块对应两个物理块的情况,如果是,进行步骤S306,否则,直接结束。
在本步骤中,查找到的一个逻辑块对应两个物理块,表示FLASH已经在映射表中建立逻辑块L和新物理块Y的映射关系,即将开始或者已经开始擦除原物理块X,在没有完成擦除或者没有在映射表中将逻辑块L和原物理块X的映射关系删除时就非法掉电的情况。因此,当重新上电后查找到一个逻辑块对应两个物理块时,根据该映射表中保存的原物理块X的块号擦除原物理块X,并删除逻辑块L和原物理块X的映射关系,将新物理块标识为该逻辑块的原物理块。
步骤S306,擦除该逻辑块对应的原物理块,在映射表中将逻辑块和原物理块的映射关系删除,并将新物理块标识为该逻辑块的原物理块,返回步骤S305。
在上述流程中,FLASH先扫描固定块再查找映射表,这仅是FLASH恢复处理数据的一种顺序,扫描固定块和查找映射表分别是针对在不同阶段掉电的操作进行的恢复处理,并没有一定的先后顺序,在具体实现时,FLASH还可以同时扫描固定块和查找映射表,或者先查找映射表再扫描固定块。
通过上述在FLASH中恢复处理数据的流程,以逻辑块L存在对应的原物理块X的情况为例,不论FLASH进行到写操作访问的哪个环节发生非法掉电,都可以保护原物理块X中的数据,并且在重新上电后,可以保证写操作涉及的各个物理块的正常访问操作。具体的分析如下:
1、在预留块2*n页中标识该访问操作之前发生非法掉电;
由于在这种情况下,FLASH没有在预留块中标识该访问操作,而映射表中也只存在逻辑块L和原物理块X的映射关系,所以在本实施例中,FLASH在重新上电后,不会对该访问操作涉及的物理块进行处理。而在非法掉电前,原物理块X中的数据没有被破坏,新物理块Y中也没有数据,逻辑块L的映射关系也正常,不需要进行数据恢复。
2、在预留块2*n页中标识该访问操作之后,在预留块2*n+1页中写入数据之前发生非法掉电;
在本实施例中,在这种情况下,FLASH在重新上电后,会判断出存在2*n页非空但2*n+1页为空的情况,根据2*n页中保存的新物理块Y的块号找到该新物理块Y,擦除新物理块Y中的数据,并在预留块2*n+1页中写入数据。而在非法掉电前,原物理块X中的数据没有被破坏,可以正常地被再次使用;新物理块Y中已经拷贝入了原物理块X中的部分或者全部数据或者已经拷贝入了原物理块X中的全部数据且写入了一部分写操作指令指示的数据,因此,擦除新物理块Y中的数据可以保证新物理块Y的正常再次使用,而在预留块2*n+1页中写入数据标识该访问操作已经完成,不需要在下一次重新上电时再次进行数据的恢复处理。
3、在预留块2*n+1页中写入数据之后,将新物理块标识为该逻辑块的原物理块之前发生非法掉电。
在这种情况下,FLASH在重新上电后,会查找到在映射表中,逻辑块L对应两个物理块,则FLASH会擦除该逻辑块对应的原物理块X,在映射表中将逻辑块L和原物理块X的映射关系删除,并将新物理块Y标识为逻辑块L的原物理块。而在非法掉电前,FLASH已经将原物理块X的数据拷贝到了新物理块Y,且已经将写操作指令指示的数据写入了新物理块Y,并且即将开始或者已经开始擦除原物理块X,因此,原物理块X可能已经被破坏,而新物理块Y中有完整的原物理块X的数据和写操作指令指示的数据。所以,在这里擦除原物理块X,在映射表中将逻辑块L和原物理块X的映射关系删除,并将新物理块Y标识为逻辑块L的原物理块,既保护了数据又使得原物理块X可以正常地再次被使用。
在本实施例中,预留固定块来标识未完成的擦除或写操作,而当该固定块的2*n页写满后,需要擦除该固定块才能重新利用它来标识未完成的擦除或写操作,但是,由于在该固定块的2*n页写满时,可能该该固定块的2*n+1页并没有写满,即,存在还未完成的擦除或写操作,因此,在擦除该固定块时,必须将还未完成的擦除或写操作标识转移到别的物理块中,在本实施例中,提供两种在固定块的2*n页写满后的操作流程:
1、当该固定块的2*n页写满后,FLASH寻找一个空的物理块T,将该固定块中未完成的擦除或写操作的标识拷贝到该寻找的物理块的偶数页中,并将该物理块T的块号写入FLASH在上电后自动执行的位置,即此时,该位置中同时存在该固定块和物理块T的块号;然后,擦除固定块,将未完成的擦除或写操作的标识拷贝回该固定块的偶数页中,并删除FLASH在上电后自动执行的位置中物理块T的块号,擦除物理块T。
FLASH在上电时,根据标识或者存放的地址判断其上电后自动执行的位置中是否保存有物理块T的块号;如果有,则擦除固定块,将未完成的擦除或写操作的标识拷贝回该固定块的偶数页中,删除FLASH在上电后自动执行的位置中物理块T的块号,擦除物理块T,然后扫描固定块;否则直接扫描该固定块。
可见,如果FLASH在将该固定块中未完成的擦除或写操作的标识拷贝到该寻找到的物理块中之后,将未完成的擦除或写操作的标识拷贝回该固定块之前非正常掉电,FLASH仍然可以对未完成的擦除或写操作进行正确的恢复处理,保证未完成的擦除或写操作涉及的物理块可以正常的被再次访问。
2、在FLASH上电后自动执行的位置中写入两个固定块的地址,以下称为第一固定块和第二固定块。当第一固定块的2*n页写满后,FLASH将第一固定块中未完成的擦除或写操作的标识拷贝到第二固定块中,擦除第一固定块。
FLASH在上电时,对两个固定块中未完成的擦除或写操作都进行恢复处理,可见,如果不是在该数据转移过程中出现的非正常掉电,则该两个固定块中只有一个固定块中有数据,而如果在将第一固定块中未完成擦除或写操作的标识拷贝到第二固定块中之后,完全擦除第一固定块之前掉电,则两个固定块中都有数据,FLASH会对两个固定块中未完成的擦除或写操作都进行恢复处理,其中的部分或者全部操作会进行两次恢复处理,但保证了证未完成的擦除或写操作涉及的物理块可以正常的被再次访问。
当然,在具体实施时,FLASH可以预留两个或两个以上的固定块来标识未完成的擦除或写操作,当其中一个固定块的偶数页写满后,将该固定块中未完成擦除或写操作的标识拷贝到另一个固定块的偶数页中,擦除原固定块;
FLASH在重新上电时,对预留的两个或两个以上固定块中未完成的擦除或写操作都进行恢复处理。
在本实施例中,是将固定块的2*n页写满之后再进行擦除,这是为了减少擦除固定块的次数,提高其使用寿命。在具体实施中,也可以周期性地对固定块进行擦除,或者,在每一个操作完成后,就擦除固定块,令固定块中标识的,都是未完成的擦除或写操作。
在本实施例中,如果FLASH基于块的写操作或者擦除过程中出现非法掉电,则重新上电后扫描预留块来遍历未完成操作的物理块。遍历未完成操作的物理块最多需要查找的次数为N。以目前普遍使用的方案为例,一块FLASH包括1024个块,即M=1024;一个块包含256页,即N=256。这样,现有技术中遍历未完成操作的物理块所需查找的次数最多为2*M=2*4*256=8*N次,是本实施例技术方案最多需要查找的次数的8倍。由于本实施例中还需要查找映射表,会相应的增加一些查找次数,但是,映射表中记录的是当前存在的逻辑块和物理块的映射关系,该映射关系的数量相对来说是很小的。并且,在本实施例中,当恢复处理完一个操作时,只需要在第2*n+1页中写入数据,而不像现有技术需要在该操作涉及的物理块的N个页的冗余区都写入标志,因此,本实施例技术方案使得FLASH上电时恢复处理数据的效率和速度都得到了很大的提高。
实施例二
实施例一的方案很好的解决了提高查找未完成操作块的效率和速度的问题,但是由于预留的是固定块来标识未完成的擦除或写操作,而当该固定块被写满后,必须擦除后才能继续使用。反复的对该固定块进行写和擦除操作会容易导致该固定块变成坏块,从而导致该块不能读写,而这是使用者不愿看到的。
为了解决这个问题,我们在实施例一方案的基础上,做了一些改进。即,在本实施例中,FLASH预留固定块,但不是利用该固定块直接标识未完成的擦除或写操作,而是保存真正用来标识未完成的擦除或写操作的物理块的块号,即令预留的物理块指向真正用来标识未完成的擦除或写操作的物理块。由于该真正用来标识未完成的擦除或写操作的物理块不是固定的物理块,为了方便描述,以下将其称为浮动块,本实施例中,在浮动块中标识未完成的擦除或写操作的方法和实施例一中在固定块中标识未完成的擦除或写操作的方法相同,即利用浮动块中的2*n页作为未完成信息记录页而2*n+1页作为其相应的完成信息记录页,其中n取值从0到N/2。
在本实施例中,当FLASH要标识未完成的擦除或写操作时,FLASH进行如图5所示的以下步骤:
步骤S401,查找预留的固定块中是否存在数据,如果是,进行步骤S402;否则进行步骤S409;
步骤S402,找到该固定块中最后一个写有数据的页P,根据页P中保存的块号找到浮动块Z;
该浮动块Z为当前真正用来标识未完成的擦除或写操作的物理块。
步骤S403,在浮动块Z中寻找是否存在相邻的两个空页2*n和2*n+1,如果是,进行步骤S404;否则进行步骤S405;
如果不存在相邻的两个空页2*n和2*n+1,即表示浮动块Z已经写满。
步骤S404,在浮动块Z中相邻的两个空页中的2*n页中写入该操作的标识信息,结束;
步骤S405,寻找一个空的浮动块Z’作为当前浮动块,将原浮动块Z中空的2*n+1页相应的非空的2*n页拷贝到浮动块Z’中;
步骤S406,在浮动块Z’中寻找相邻的两个空页2*n和2*n+1,在2*n页中写入该操作的标识信息;
步骤S407,判断固定块是否写满,即页P是否为该固定块的最后一页,如果是,进行步骤S408;否则,进行步骤S409;
步骤S408,擦除固定块,将浮动块Z’的块号写入固定块的起始页,即第0页,结束;
步骤S409,将浮动块Z’的块号写入固定块的页P+1,结束;
步骤S410,寻找一个空的浮动块Z”作为当前浮动块,将浮动块Z”的块号写入固定块的起始页中;
步骤S411,在浮动块Z”中寻找相邻的两个空页2*n和2*n+1,并在2*n页中写入该操作的标识信息。
可见,在上述流程中,如果固定块写满,则直接对固定块进行擦除,这样做有一个问题是,如果在擦除了固定块之后,将浮动块的块号写入固定块的第0页之前非正常掉电,则无法对FLASH进行正确的数据恢复和处理,因此,在本实施例中,提供以下两种方法避免该问题:
1、当固定块写满时,FLASH寻找一个空的物理块,将当前浮动块的标识信息写入该寻找到的物理块,然后擦除固定块,将当前浮动块的标识信息写入固定块的起始页,擦除该寻找到的物理块。
FLASH在重新上电时,如果存在该寻找到的物理块,则擦除固定块,将该寻找到的物理块中保存的当前浮动块的标识信息写入固定块的起始页,擦除该寻找到的物理块,然后扫描固定块,否则直接扫描固定块。
2、FLASH预留两个或两个以上固定块来指向标识未完成的擦除或写操作的浮动块,当其中一个固定块写满后,将当前浮动块的标识信息写入另一个固定块的起始页,擦除该写满的固定块;
FLASH在重新上电时,对预留的两个或两个以上固定块中最后一个写有数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。
在本实施例中,当FLASH要标识已完成的擦除或写操作时,FLASH进行如图6所示的以下步骤:
步骤S501,找到该固定块中最后一个写有数据的页P,根据页P中保存的块号找到浮动块;
步骤S502,在该浮动块中标识该擦除或写操作未完的2*n页相应的2*n+1页中写入数据。
在本实施例中,如果FLASH在擦除或写操作的过程中发生非法掉电,则如果写操作存在对应的原物理块X时,FLASH需要保护原物理块X中的数据,并且,应当保证该擦除或写操作涉及的各个物理块在重新上电之后的正常访问操作。因此,在重新上电时,FLASH进行的恢复处理数据的流程,如图7所示,包括以下步骤:
步骤S601,FLASH扫描其预留的固定块,判断是否存在写有数据的页,如果是,进行步骤S602,否则进行步骤S605;
步骤S602,找到该固定块中最后一个写有数据的页P,根据页P中保存的块号找到浮动块;
步骤S603,FLASH扫描该浮动块,查找是否存在2*n页非空但2*n+1页为空的情况,如果是,进行步骤S604,否则进行步骤S605;
步骤S604,根据2*n页记录的标识该操作属性的信息判断该未完成的操作是否擦除操作,如果是,进行步骤S605,否则,该操作为写操作,进行步骤S606;
步骤S605,擦除该2*n页记录的该擦除操作对应的物理块X’,在2*n+1页中写入数据,在映射表中将该物理块和其对应的逻辑块的映射关系删除,返回步骤S603;
步骤S606,擦除该2*n页记录的该写操作对应的新物理块Y,在2*n+1页中写入数据,返回步骤S603;
步骤S607,查找映射表,查找是否存在一个逻辑块对应两个物理块的情况,如果是,进行步骤S608,否则,直接结束。
步骤S608,擦除该逻辑块对应的原物理块,在映射表中将逻辑块和原物理块的映射关系删除,并将新物理块标识为该逻辑块的原物理块,返回步骤S607。
在上述流程中,FLASH先扫描固定块再查找映射表,这仅是FLASH恢复处理数据的一种顺序,扫描固定块和查找映射表分别是针对在不同阶段掉电的操作进行的恢复处理,并没有一定的先后顺序,在具体实现时,FLASH还可以同时扫描固定块和查找映射表,或者先查找映射表再扫描固定块。
由于在本实施例中,FLASH预留固定块来指向标识未完成的擦除或写操作的浮动块,而浮动块才是真正用来标识未完成的擦除或写操作的物理块,并且在每写满一个浮动块后,才寻找另一个浮动块来标识未完成的擦除或写操作并擦除之前的浮动块。固定块中的每一页能够指向一个浮动块,一个浮动块可以标识N/2个未完成的擦除或写操作,而固定块也是在写满后才进行擦除,因此,固定块可以在标识N*N/2个未完成的擦除或写操作后才需要擦除一次,该固定块其变成坏块的几率是实施例一中该固定块其变成坏块的几率的1/N。
另外,由于真正用来标识未完成的擦除或写操作的物理块不是固定块,因此避免了对某一特定块的反复操作,实现了块的写平衡。
本发明一个实施例中的FLASH,如图8所示,包括存储单元101、标识模块102、操作模块103和恢复处理模块104,其中:
存储单元101用于保存映射表;
标识模块102预留固定块,并利用固定块记录操作模块103未完成的擦除或写操作的信息;
恢复处理模块104在闪存每一次上电时,根据固定块记录的信息进行数据的恢复和处理。
恢复处理模块104包括第一恢复处理单元105和第二恢复处理单元106,其中:
第一恢复处理单元105根据固定块记录的信息擦除操作模块103未完成的擦除操作对应的物理块,在存储单元101保存的映射表中将该物理块和其对应的逻辑块的映射关系删除;
第二恢复处理单元106根据固定块记录的信息擦除操作模块103未完成的写操作对应的新物理块;并查找映射表,当存在一个逻辑块对应两个物理块时,擦除该逻辑块对应的原物理块,在映射表中将该原物理块和其对应的逻辑块的映射关系删除,并将该逻辑块对应的新物理块标识为其原物理块。
在本发明中,操作模块103在开始擦除操作时,通知标识模块102,标识模块102利用固定块记录标识该操作未完成的信息;操作模块103在完成擦除操作时,通知标识模块102,标识模块102利用固定块记录标识该操作已完成的信息。
操作模块103在开始写操作时,通知标识模块102,标识模块102利用固定块记录标识该操作未完成的信息;操作模块103在映射表中建立该操作对应的逻辑块和其对应的新物理块的映射关系后,通知标识模块102,标识模块102利用固定块记录标识该操作已完成的信息。
标识模块102可以在固定块中记录未完成的擦除或写操作的标识信息;也可以令固定块指向浮动块,在浮动块中记录未完成的擦除或写操作的标识信息。
对应实施例一中第一种对固定块进行擦除的方法,FLASH中还可以如图9所示,包括第一控制模块107,其中:
标识模块102在固定块中记录未完成的擦除或写操作的标识信息,并在将固定块中的未完成信息记录页写满后,通知第一控制模块107,第一控制模块107寻找一个空的物理块,将固定块中记录的未完成的擦除或写操作的信息拷贝到该寻找到的物理块的未完成信息记录页中,然后擦除固定块,将未完成的擦除或写操作的信息拷贝回固定块的未完成信息记录页中,擦除该寻找到的物理块;
恢复处理模块104在闪存每一次上电时,先判断是否存在该寻找到的物理块,如果是,则擦除固定块,将未完成的擦除或写操作的信息拷贝回固定块的未完成信息记录页中,擦除该寻找到的物理块,然后扫描固定块,否则直接扫描固定块。
对应实施例一中第二种对固定块进行擦除的方法,FLASH中还可以包括第二控制模块,第二控制模块在FLASH中的连接关系和第一控制模块在FLASH中的连接关系相同,其中:
标识模块102预留两个或两个以上固定块来记录未完成的擦除或写操作的标识信息,并在将其中一个固定块的未完成信息记录页写满后,通知第二控制模块,第二控制模块将该未完成信息记录页写满的物理块中未完成的擦除或写操作的信息拷贝到另一个固定块的未完成信息记录页中,擦除该未完成信息记录页写满的物理块;
恢复处理模块104在闪存每一次上电时,根据预留的两个或两个以上固定块记录的信息进行数据的恢复和处理。
对应于实施例二,标识模块102令固定块指向浮动块,在浮动块中记录未完成的擦除或写操作的标识信息,由于在浮动块中的未完成信息记录页被写满后,需要对浮动块进行擦除,又由于在固定块被写满后,需要对固定块进行擦除,因此,对应实施例二中第一种对固定块进行擦除的方法,FLASH如图10所示,还包括第三控制模块108和第四控制模块109,其中:
标识模块102在将浮动块中的未完成信息记录页写满后,通知第三控制模块108,第三控制模块108寻找一个空的物理块作为当前浮动块,将原浮动块中记录的未完成的擦除或写操作的标识信息拷贝到当前浮动块的未完成信息记录页中,将当前浮动块的标识信息顺序写入固定块中的一个空白页,然后擦除原浮动块;
标识模块102在将固定块写满时,通知第四控制模块109,第四控制模块109寻找一个空的物理块,将当前浮动块的标识信息写入该寻找到的物理块,然后擦除固定块,将当前浮动块的标识信息写入固定块的起始页,擦除该寻找到的物理块;
恢复处理模块104在闪存每一次上电时,判断是否存在该寻找到的物理块,如果是则擦除固定块,将该寻找到的物理块中保存的当前浮动块的标识信息写入固定块的起始页,擦除该寻找到的物理块,然后扫描固定块,否则直接扫描固定块。
对应实施例二中第二种对固定块进行擦除的方法,FLASH可以不包括第四控制模块109而包括第五控制模块,其中:
标识模块102预留两个或两个以上固定块来指向记录未完成的擦除或写操作的标识信息的浮动块,标识模块102在将其中一个预留的固定块写满后,通知第五控制模块,第五控制模块将当前浮动块的标识信息写入另一个预留的固定块的起始页,擦除该写满的预留固定块;
恢复处理模块104在FLASH每一次上电时,对预留的各个固定块中最后一个写有数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (20)
1.一种闪存控制方法,其特征在于,包括以下步骤:
闪存预留物理块,在预留的物理块中记录未完成的擦除或写操作的标识信息;所述在预留的物理块中记录未完成的擦除或写操作的标识信息,包括:在预留的物理块中寻找一个空白未完成信息记录页,在该页中记录该操作的标识信息;
闪存在每一次上电时,根据所述预留的物理块记录的信息进行数据的恢复和处理;
或者,闪存预留物理块,令预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写操作的标识信息,所述浮动块是指闪存寻找到的,用来记录未完成的擦除或写操作的标识信息的物理块;所述在所述浮动块中记录未完成的擦除或写操作的标识信息包括:在该浮动块中寻找一个空白未完成信息记录页,在该页中记录该操作的标识信息;
闪存在每一次上电时,根据所述浮动块记录的信息进行数据的恢复和处理。
2.如权利要求1所述的方法,其特征在于,对于擦除操作,所述数据的恢复和处理包括:根据所述预留的物理块记录的信息擦除未完成的擦除操作对应的物理块,在映射表中将该物理块和其对应的逻辑块的映射关系删除。
3.如权利要求2所述的方法,其特征在于,所述擦除操作包括:当接收到擦除操作指令时,闪存根据该操作指令中的逻辑块号查找映射表,找到该逻辑块对应的物理块,利用所述预留的物理块记录标识该操作未完成的信息,然后擦除该逻辑块对应的物理块,在映射表中将该逻辑块和其对应的物理块的映射关系删除,利用所述预留的物理块记录标识该操作已完成的信息。
4.如权利要求1所述的方法,其特征在于,对于写操作,所述数据的恢复和处理包括:
根据所述预留的物理块记录的信息擦除未完成的写操作对应的新物理块;并且
查找映射表,当存在一个逻辑块对应两个物理块时,擦除所述逻辑块对应的原物理块,在映射表中将所述逻辑块和所述原物理块的映射关系删除,并将该逻辑块对应的新物理块标识为其原物理块。
5.如权利要求1所述的方法,其特征在于,所述写操作包括:当接收到写操作指令时,闪存根据该操作指令中的逻辑块号查找映射表,如果该逻辑块没有对应的原物理块,则直接寻找新物理块,利用所述预留的物理块记录标识该操作未完成的信息,并根据该操作指令在新物理块中写入数据,在映射表中建立该逻辑块和该新物理块的映射关系,利用所述预留的物理块记录标识该操作已完成的信息;
如果找到原物理块,则闪存寻找新物理块,利用所述预留的物理块记录标识该操作未完成的信息,将原物理块中的数据拷贝到该新物理块中,根据该操作指令在新物理块中写入数据,在映射表中建立该逻辑块和该新物理块的映射关系,利用所述预留的物理块记录标识该操作已完成的信息,然后擦除原物理块,更新映射表。
6.如权利要求3或5所述的方法,其特征在于,利用预留的物理块记录标识该操作已完成的信息包括:在该未完成信息记录页相应的完成信息记录页中写入数据;
所述根据所述预留的物理块记录的信息进行数据的恢复和处理包括:扫描所述预留的物理块,通过判断是否存在未完成信息记录页非空而其相应的完成信息记录页为空的情况来获知未完成的擦除或写操作,并根据该未完成信息记录页中记录的该操作的标识信息进行数据的恢复和处理,然后在该未完成信息记录页相应的完成信息记录页中写入数据。
7.如权利要求6所述的方法,其特征在于,当所述预留的物理块中的未完成信息记录页写满后,闪存寻找一个空的物理块,将所述预留的物理块中记录的未完成的擦除或写操作的信息拷贝到该寻找到的物理块的未完成信息记录页中,然后擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块;
闪存在每一次上电时,如果存在该寻找到的物理块,则擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
8.如权利要求6所述的方法,其特征在于,闪存预留两个或两个以上物理块来记录未完成的擦除或写操作的信息,当其中一个预留的物理块的未完成信息记录页写满后,将该未完成信息记录页写满的物理块中所述未完成的擦除或写操作的信息拷贝到另一个预留的物理块的未完成信息记录页中,擦除该未完成信息记录页写满的物理块;
闪存在每一次上电时,根据所述预留的两个或两个以上物理块记录的信息进行数据的恢复和处理。
9.如权利要求1所述的方法,其特征在于,所述根据所述浮动块记录的信息进行数据的恢复和处理包括:根据所述预留的物理块中最后一个写有数据的页中保存的浮动块的标识信息找到相应的浮动块,通过判断该浮动块中是否存在未完成信息记录页非空而其相应的完成信息记录页为空的情况来获知未完成的擦除或写操作,并根据该未完成信息记录页中记录的该操作的标识信息进行数据的恢复和处理,然后在该未完成信息记录页相应的完成信息记录页中写入数据。
10.如权利要求9所述的方法,其特征在于,当所述浮动块中的未完成信息记录页写满后,闪存寻找一个空的物理块作为当前浮动块,将原浮动块中记录的未完成的擦除或写操作的标识信息拷贝到当前浮动块的未完成信息记录页中,将当前浮动块的标识信息顺序写入预留的物理块中的一个空白页,然后擦除所述原浮动块。
11.如权利要求10所述的方法,其特征在于,当所述预留的物理块写满时,闪存寻找一个空的物理块,将所述当前浮动块的标识信息写入该寻找到的物理块,然后擦除所述预留的物理块,将所述当前浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块;
闪存在每一次上电时,如果存在该寻找到的物理块,则擦除所述预留的物理块,将该寻找到的物理块中保存的所述当前浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
12.如权利要求10所述的方法,其特征在于,闪存预留两个或两个以上物理块来指向记录未完成的擦除或写操作的标识信息的浮动块,当其中一个预留的物理块写满后,将所述当前浮动块的标识信息写入另一个预留的物理块的起始页,擦除该写满的预留物理块;
闪存在每一次上电时,对预留的各个物理块中最后一个写有数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。
13.一种闪存,包括操作模块,其特征在于,所述闪存还包括标识模块、恢复处理模块,其中:
所述标识模块,用于预留物理块,在所述预留的物理块中记录未完成的擦除或写操作的标识信息;所述在预留的物理块中记录未完成的擦除或写操作的标识信息,包括:在预留的物理块中寻找一个空白未完成信息记录页,在该页中记录该操作的标识信息;
所述恢复处理模块,用于在闪存每一次上电时,根据所述预留的物理块记录的信息进行数据的恢复和处理。
或者,所述标识模块,用于预留物理块,令预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写操作的标识信息;所述浮动块是指闪存寻找到的,用来记录未完成的擦除或写操作的标识信息的物理块;所述在所述浮动块中记录未完成的擦除或写操作的标识信息包括:在该浮动块中寻找一个空白未完成信息记录页,在该页中记录该操作的标识信息;
所述恢复处理模块,用于在闪存每一次上电时,根据所述浮动块记录的信息进行数据的恢复和处理。
14.如权利要求13所述的闪存,其特征在于,所述闪存还包括存储单元,用于保存映射表;
所述恢复处理模块包括第一恢复处理单元和第二恢复处理单元,其中:
所述第一恢复处理单元根据所述预留的物理块记录的信息擦除所述操作模块未完成的擦除操作对应的物理块,在所述存储单元保存的映射表中将该物理块和其对应的逻辑块的映射关系删除;
所述第二恢复处理单元根据所述预留的物理块记录的信息擦除所述操作模块未完成的写操作对应的新物理块;并查找所述映射表,当存在一个逻辑块对应两个物理块时,擦除所述逻辑块对应的原物理块,在所述映射表中将该原物理块和其对应的逻辑块的映射关系删除,并将该逻辑块对应的新物理块标识为其原物理块。
15.如权利要求13所述的闪存,其特征在于,所述操作模块在开始写操作时,通知所述标识模块,所述标识模块利用所述预留的物理块记录标识该操作未完成的信息;
所述操作模块在所述映射表中建立该操作对应的逻辑块和其对应的新物理块的映射关系后,通知所述标识模块,所述标识模块利用所述预留的物理块记录标识该操作已完成的信息。
16.如权利要求13所述的闪存,其特征在于,所述闪存还包括第一控制模块,其中:
所述标识模块在所述预留的物理块中记录未完成的擦除或写操作的标识信息,并在将所述预留的物理块中的未完成信息记录页写满后,通知所述第一控制模块,所述第一控制模块寻找一个空的物理块,将所述预留的物理块中记录的未完成的擦除或写操作的信息拷贝到该寻找到的物理块的未完成信息记录页中,然后擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块;
所述恢复处理模块在闪存每一次上电时,先判断是否存在该寻找到的物理块,如果是,则擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
17.如权利要求16所述的闪存,其特征在于,所述闪存还包括第二控制模块,其中:
所述标识模块预留两个或两个以上物理块来记录未完成的擦除或写操作的标识信息,并在将其中一个预留的物理块的未完成信息记录页写满后,通知所述第二控制模块,所述第二控制模块将该未完成信息记录页写满的物理块中所述未完成的擦除或写操作的信息拷贝到另一个预留的物理块的未完成信息记录页中,擦除该未完成信息记录页写满的物理块;
所述恢复处理模块在闪存每一次上电时,根据所述预留的两个或两个以上物理块记录的信息进行数据的恢复和处理。
18.如权利要求13所述的闪存,其特征在于,所述闪存还包括第三控制模块,其中:
所述标识模块令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写操作的标识信息,并在将所述浮动块中的未完成信息记录页写满后,通知所述第三控制模块,所述第三控制模块寻找一个空的物理块作为当前浮动块,将原浮动块中记录的未完成的擦除或写操作的标识信息拷贝到当前浮动块的未完成信息记录页中,将当前浮动块的标识信息顺序写入预留的物理块中的一个空白页,然后擦除所述原浮动块。
19.如权利要求13或18所述的闪存,其特征在于,所述闪存还包括第四控制模块,其中:
所述标识模块令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写操作的标识信息,并在将所述预留的物理块写满时,通知所述第四控制模块,所述第四控制模块寻找一个空的物理块,将所述当前浮动块的标识信息写入该寻找到的物理块,然后擦除所述预留的物理块,将所述当前浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块;
所述恢复处理模块在闪存每一次上电时,判断是否存在该寻找到的物理块,如果是则擦除所述预留的物理块,将该寻找到的物理块中保存的所述当前浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
20.如权利要求13或18所述的闪存,其特征在于,所述闪存还包括第五控制模块,其中:
所述标识模块预留两个或两个以上物理块来指向记录未完成的擦除或写操作的标识信息的浮动块,所述标识模块在将其中一个预留的物理块写满后,通知所述第五控制模块,所述第五控制模块将所述当前浮动块的标识信息写入另一个预留的物理块的起始页,擦除该写满的预留物理块;
所述恢复处理模块在闪存每一次上电时,对预留的各个物理块中最后一个写有数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101134545A CN101154447B (zh) | 2006-09-28 | 2006-09-28 | 一种闪存控制方法及闪存 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101134545A CN101154447B (zh) | 2006-09-28 | 2006-09-28 | 一种闪存控制方法及闪存 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101154447A CN101154447A (zh) | 2008-04-02 |
CN101154447B true CN101154447B (zh) | 2010-08-18 |
Family
ID=39256031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101134545A Expired - Fee Related CN101154447B (zh) | 2006-09-28 | 2006-09-28 | 一种闪存控制方法及闪存 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101154447B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104575605B (zh) * | 2013-10-29 | 2018-01-09 | 晶豪科技股份有限公司 | 存储器装置及使用非易失性存储器对系统进行开机的方法 |
CN104809037B (zh) * | 2015-05-13 | 2018-04-13 | 深圳芯邦科技股份有限公司 | eMMC基于特殊页的快速启动方法及装置 |
CN107168647B (zh) * | 2017-04-17 | 2020-10-23 | 武汉永力科技股份有限公司 | Flash数据读写方法及系统 |
CN108415851B (zh) * | 2018-01-18 | 2021-02-12 | 珠海全志科技股份有限公司 | 一种提升闪存设备启动速度的方法与装置 |
CN108681509B (zh) * | 2018-04-20 | 2022-04-08 | 江苏华存电子科技有限公司 | 一种快速建立闪存映射表的方法 |
CN109766216A (zh) * | 2018-12-20 | 2019-05-17 | 成都旋极历通信息技术有限公司 | 一种基于flash的数据掉电位置的恢复方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5965736A (en) * | 1996-01-16 | 1999-10-12 | Lumigen, Inc. | Compositions and methods for generating red chemiluminescence |
KR20030040817A (ko) * | 2001-11-16 | 2003-05-23 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
CN1567256A (zh) * | 2003-06-20 | 2005-01-19 | 深圳市朗科科技有限公司 | 闪存介质中数据保护方法 |
CN1186728C (zh) * | 2001-07-03 | 2005-01-26 | 联想(北京)有限公司 | 闪存文件的管理方法 |
CN1831786A (zh) * | 2005-12-14 | 2006-09-13 | 兆日科技(深圳)有限公司 | 闪速存储器数据完整性保护方法 |
-
2006
- 2006-09-28 CN CN2006101134545A patent/CN101154447B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5965736A (en) * | 1996-01-16 | 1999-10-12 | Lumigen, Inc. | Compositions and methods for generating red chemiluminescence |
CN1186728C (zh) * | 2001-07-03 | 2005-01-26 | 联想(北京)有限公司 | 闪存文件的管理方法 |
KR20030040817A (ko) * | 2001-11-16 | 2003-05-23 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
CN1567256A (zh) * | 2003-06-20 | 2005-01-19 | 深圳市朗科科技有限公司 | 闪存介质中数据保护方法 |
CN1831786A (zh) * | 2005-12-14 | 2006-09-13 | 兆日科技(深圳)有限公司 | 闪速存储器数据完整性保护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101154447A (zh) | 2008-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100843543B1 (ko) | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 | |
CN107391774B (zh) | 基于重复数据删除的日志文件系统的垃圾回收方法 | |
US7515500B2 (en) | Memory device performance enhancement through pre-erase mechanism | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
CN101354681B (zh) | 存储器系统、非易失性存储器的磨损均衡方法及装置 | |
CN103270500B (zh) | 事务日志恢复 | |
CN103577574B (zh) | 一种基于nand flash的高可靠线性文件系统 | |
CN102511044B (zh) | 一种数据删除方法及装置 | |
TWI408551B (zh) | 快閃記憶體儲存系統及其控制器與資料處理方法 | |
US8166233B2 (en) | Garbage collection for solid state disks | |
CN102576332B (zh) | 用于电力中断管理的方法和包含电力中断管理的存储器系统 | |
CN105760113B (zh) | 基于nand闪存的高速存储设备及文件管理方法 | |
CN101231617B (zh) | 闪存设备的数据处理方法 | |
CN101154447B (zh) | 一种闪存控制方法及闪存 | |
CN104699413B (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
CN105718206B (zh) | 能够感知raid的闪存转换层及其实现方法 | |
WO2007058617A1 (en) | A controller for non-volatile memories, and methods of operating the memory controller | |
CN101763309A (zh) | 非易失性存储装置、信息记录系统及信息记录方法 | |
CN101763295A (zh) | 一种数据备份、备份项擦除及数据恢复方法和装置 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN104166627B (zh) | 一种基于单片机的nand‑flash写操作方法 | |
CN103593255B (zh) | 数据管理方法、记忆存储存储器与记忆存储控制器 | |
CN109840218A (zh) | 有效数据管理方法以及存储控制器 | |
US20070005929A1 (en) | Method, system, and article of manufacture for sector mapping in a flash device | |
CN112527197A (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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee after: BEIJING WATCHDATA Co.,Ltd. Address before: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee before: BEIJING WATCH DATA SYSTEM Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100818 Termination date: 20210928 |