一种闪存控制方法及闪存的制作方法

文档序号:6774836阅读:102来源:国知局
专利名称:一种闪存控制方法及闪存的制作方法
技术领域
本发明涉及USB (Universal Serial Bus,通用串行总线)移动存储领域, 尤其涉及一种闪存控制方法及闪存。
背景技术
在计算机技术快速发展的今天,用户时常需要进行大量数据的转移和存 储。移动存储类设备的适时出现迎合了广大用户的需求,以优盘为代表的移动 存储类设备得到广泛的应用。所谓移动存储类产品是基于USB接口的,采用 FLASH(闪存)介质的存储产品。按照惯例,我们把一个FLASH称为一个Zone, 一个Zone包含多个块, 一个块包含多个页,下面4叚设一个Zone包含M块, 一个块包含N页。页又分为两个区,数据区和冗余区。数据区主要用来存放有 效数据;冗余区主要存放除了必须的该页所属块对应的逻辑块号和有效数据的 ECC (Error Checking and Correcting,错误检查和纠正)校验,还可以存放块 完成标志甚至厂商产品信息等等,不一而论。对FLASH的访问操作包括FLASH 基于块的读、写和擦除。对FLASH基于块的写的过程包括原数据块保留数据 转移的过程、新数据写的过程和原数据块擦除的过程;对FLASH基于块的擦 除的过程就是将块中所有逻辑位置为1的过程。FLASH中数据的访问操作是 通过读文件目录表和文件分配表而实现的。相比较软盘,FLASH具有方便、快捷、安全可靠等优点,但是它也有其 不足之处。比如在FLASH基于块的写的过程中发生了人为的或外界不可抗力 等因素造成非法掉电,那么文件目录表和文件分配表中的信息就有可能发生混 乱,造成数据的不可访问,从而导致数据的丢失。在基于FLASH的块的擦除 的过程中发生了人为的或外界不可抗力等因素造成非法掉电,块部分未被擦
除,再使用该块就会导致错误。所以必须有这样一种方法,该方法能够对块进 行标记,在掉点后重新上电能够根据标记辨别出未完成操作的块,从而进行块 的数据的恢复。为了解决这个问题,目前普遍使用的一种方案是在要访问的块的每一页的冗余区标注一些信息来表示该页是否操作完毕。当进行FLASH的写操作时, 首先根据要写的逻辑块找到对应的物理块,如果没有找到对应的物理块,则寻 找一个空的物理块,将此次操作要写入的数据写入该块中,同时将对应页中的 冗余区中写入对应的逻辑块号,完成后再将该块中未净皮使用的页的冗余区中也 写入对应的逻辑块号,在映射表中建立该逻辑块和该寻找到的物理块的映射关 系;如果找到对应的物理块,则先寻找一个新的空的物理块,将原来逻辑块对 应的物理块中的数据拷贝到新块的对应页中,并在完成拷贝的页中的冗余区中 写入对应的逻辑块号,然后将此次操作要写入的数据写入新块中,并在完成写 入的页中的冗余区中写入对应的逻辑块号,完成后再将新块的未被使用的页的 冗余区中也写入对应的逻辑块号,在映射表中建立该逻辑块和该寻找到的物理 块的映射关系,最后擦除原物理块,将映射表中该逻辑块和原物理块的映射关 系删除。这样无论在哪一步发生异常掉电,原数据都不会丢失。比如,当在从原物 理块拷贝数据到新物理块时发生掉电,则新物理块的部分页的冗余区内的标记 不是对应的逻辑块号,上电后,遍历该物理块的所有页, 一旦发现块内某一页 冗余区内的标记不是对应的逻辑块号,则表明数据没有完全转移到新物理块, 直接擦除新块,保证该新块在以后的正确使用,而原物理块的数据也得到了保 护。当原物理块内的数据完全拷贝到新物理块内,在擦除原物理块时掉电,则 上电后会发现原物理块的部分页的逻辑位为1,部分页的冗余区标记为对应的 逻辑块号,则直接擦除该块,并更新映射表,由于原物理块要保留的数据已经 完全拷贝到新物理块中,所以数据得到保护。对于基于FLASH的块擦除,同 样的原理可以保证擦除的过程中掉电后重新上电后,能够完成块擦除工作,使
块能够重新被使用。这种对操作块标注信息表明操作是否完成的方法虽然能够保证数据不会丢失,但其也有不足之处该方法在判断某一物理块是否是操作未完成的块时, 需要读取块中页的冗余区直到发现符合块操作未完成条件的页。根据上面的假 i殳, 一个FLASH包含M个块, 一个块包含N个页,则每个块平均查找次数为 (N+l)/2。而在上电后为了完成数据恢复,需要遍历整个FLASH,所以每次上 电后的平均查找次数为M*(N+l)/2,最多可达N^N次。该方法的进一步提高 是只判断最后 一 页的冗余区的标志,但是只判断最后一 页还不能判断该块是未 完成操作的块还是空块。所以必须判断第一页和最后一页。这样要找到所有未 完成操作的块需要查找的次数最多为2*M。而且在这种情况下即使使用一页也 必须把N个页的冗余区写标志,这样的话,工作量就会增加,速度就会变慢。 可见,在现有技术中,在FLASH中恢复处理数据的方法使得每次上电后FLASH 进行的查找工作量非常巨大,从而导致FLASH的上电处理速度緩慢。发明内容本发明提供一种闪存控制方法及闪存,用以解决现有^J支术中存在FLASH 由于在每一次上电时需要进行大量的查找和在冗余区写入标志的工作而导致的上电处理速度緩慢的问题。为了解决上述4支术问题,本发明提供了一种闪存控制方法,包括以下步骤 闪存预留物理块,并利用所述预留的物理块记录未完成的擦除或写操作的信息;闪存在每一次上电时,才艮据所述预留的物理块记录的信息进行数据的恢复 和处理。进一步地,上述方法还可具有以下特点所述利用所述预留的物理块记录 未完成的擦除或写搡作的信息包括在所述预留的物理块中记录未完成的擦除或写操作的标识信息;或者
令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写 操作的标识信息,所述浮动块是指闪存寻找到的,用来记录未完成的擦除或写 操作的标识信息的物理块。进一步地,上述方法还可具有以下特点对于擦除操作,所述数据的恢复 和处理包括根据所述预留的物理块记录的信息擦除未完成的擦除操作对应的 物理块,在映射表中将该物理块和其对应的逻辑块的映射关系删除。进一步地,上述方法还可具有以下特点所述擦除操作包括当接收到擦 除操作指令时,闪存根据该操作指令中的逻辑块号查找映射表,找到该逻辑块 对应的物理块,利用所述预留的物理块记录标识该操作未完成的信息,然后擦 除该逻辑块对应的物理块,在映射表中将该逻辑块和其对应的物理块的映射关 系删除,利用所述预留的物理块记录标识该操作已完成的信息。进一步地,上述方法还可具有以下特点对于写操作,所述数据的恢复和 处理包括才艮据所述预留的物理块记录的信息擦除未完成的写操作对应的新物理块;并且查找映射表,当存在一个逻辑块对应两个物理块时,擦除所述逻辑块对应 的原物理块,在映射表中将所述逻辑块和所述原物理块的映射关系删除,并将 该逻辑块对应的新物理块标识为其原物理块。进一步地,上述方法还可具有以下特点所述写操作包括当接收到写操 作指令时,闪存根据该操作指令中的逻辑块号查找映射表,如果该逻辑块没有 对应的原物理块,则直接寻找新物理块,利用所述预留的物理块记录标识该操 作未完成的信息,并根据该操作指令在新物理块中写入数据,在映射表中建立 该逻辑块和该新物理块的映射关系,利用所述预留的物理块记录标识该操作已 完成的信息;如果找到原物理块,则闪存寻找新物理块,利用所述预留的物理块记录标 识该操作未完成的信息,将原物理块中的数据拷贝到该新物理块中,根据该操
作指令在新物理块中写入数据,在映射表中建立该逻辑块和该新物理块的映射 关系,利用所述预留的物理块记录标识该才喿作已完成的信息,然后擦除原物理 块,更新映射表。进一步地,上述方法还可具有以下特点所述利用所迷预留的物理块记录 标识该操作未完成的信息包括在所述预留的物理块中寻找一个空白未完成信 息记录页,在该页中记录该操作的标识信息;所述利用所述预留的物理块记录标识该操作已完成的信息包括在该未完 成信息记录页相应的完成信息记录页中写入数据;所述才艮据所述预留的物理块记录的信息进行数据的恢复和处理包括扫描 所述预留的物理块,通过判断是否存在未完成信息记录页非空而其相应的完成 信息记录页为空的情况来获知未完成的擦除或写操作,并根据该未完成信息记 录页中记录的该操作的标识信息进行数据的恢复和处理,然后在该未完成信息 记录页相应的完成信息记录页中写入数据。进一步地,上述方法还可具有以下特点当所述预留的物理块中的未完成 信息记录页写满后,闪存寻找一个空的物理块,将所述预留的物理块中记录的 未完成的擦除或写操作的信息拷贝到该寻找到的物理块的未完成信息记录页 中,然后擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回 所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块;闪存在每一次上电时,如果存在该寻找到的物理块,则擦除所述预留的物 理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成 信息记录页中,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直 接扫描所述预留的物理块。进一步地,上述方法还可具有以下特点闪存预留两个或两个以上物理块 来记录未完成的擦除或写操作的信息,当其中一个预留的物理块的未完成信息 记录页写满后,将该未完成信息记录页写满的物理块中所述未完成的擦除或写 操作的信息拷贝到另一个预留的物理块的未完成信息记录页中,擦除该未完成 信息记录页写满的物理块;闪存在每一次上电时,根据所述预留的两个或两个以上物理块记录的信息 进行数据的恢复和处理。进一步地,上述方法还可具有以下特点所述在所述浮动块中记录未完成 的擦除或写操作的标识信息包括在开始擦除或写操作时,闪存根据所述预留的物理块中最后一个写有数据 的页中保存的浮动块的标识信息找到相应的浮动块,在该浮动块中寻找一个空 白未完成信息记录页,在该页中记录该操作的标识信息;在该擦除或写操作完 成后,闪存在该未完成信息记录页相应的完成信息记录页中写入数据;所述才艮据所述预留的物理块记录的信息进行数据的恢复和处理包括根据 所述预留的物理块中最后一个写有数据的页中保存的浮动块的标识信息找到 相应的浮动块,通过判断该浮动块中是否存在未完成信息记录页非空而其相应 的完成信息记录页为空的情况来获知未完成的擦除或写操作,并根据该未完成 信息记录页中记录的该操作的标识信息进行数据的恢复和处理,然后在该未完 成信息记录页相应的完成信息记录页中写入数据。进一步地,上述方法还可具有以下特点当所述浮动块中的未完成信息记 录页写满后,闪存寻找一个空的物理块作为当前浮动块,将原浮动块中记录的 未完成的擦除或写操作的标识信息拷贝到当前浮动块的未完成信息记录页中, 将当前浮动块的标识信息顺序写入预留的物理块中的一个空白页,然后擦除所 述原浮动块。进一步地,上述方法还可具有以下特点当所述预留的物理块写满时,闪 存寻找一个空的物理块,将所述当前浮动块的标识信息写入该寻找到的物理 块,然后擦除所述预留的物理块,将所述当前浮动块的标识信息写入所述预留 的物理块的起始页,擦除该寻找到的物理块;闪存在每一次上电时,如果存在该寻找到的物理块,则擦除所述预留的物 理块,将该寻找到的物理块中保存的所述当前浮动块的标识信息写入所述预留 的物理块的起始页,擦除该寻找到的物理块,然后扫描所迷预留的物理块,否 则直接扫描所述预留的物理块。进一步地,上述方法还可具有以下特点闪存预留两个或两个以上物理块 来指向记录未完成的擦除或写操作的标识信息的浮动块,当其中一个预留的物 理块写满后,将所述当前浮动块的标识信息写入另一个预留的物理块的起始 页,擦除该写满的预留物理块;闪存在每一次上电时,对预留的各个物理块中最后一个写有数据的页指向 的浮动块中未完成的擦除或写操作都进行恢复处理。本发明还提供了一种闪存,包括操作模块,所述闪存还包括标识模块、恢 复处理才莫块,其中所述标识才莫块预留物理块,并利用所述预留的物理块记录所述操作模块未 完成的擦除或写操作的信息;所述恢复处理才莫块在闪存每一次上电时,才艮据所述预留的物理块记录的信 息进行数据的恢复和处理。进一步地,上述闪存还可具有以下特点所述闪存还包括存储单元,用于 保存映射表;所述恢复处理模块包括第 一恢复处理单元和第二恢复处理单元,其中 所述第一恢复处理单元根据所述预留的物理块记录的信息擦除所述操作 模块未完成的擦除操作对应的物理块,在所述存储单元保存的映射表中将该物 理块和其对应的逻辑块的映射关系删除;所述第二恢复处理单元根据所述预留的物理块记录的信息擦除所述操作 模块未完成的写才乘作对应的新物理块;并查找所述映射表,当存在一个逻辑块 对应两个物理块时,擦除所述逻辑块对应的原物理块,在所述映射表中将该原 物理块和其对应的逻辑块的映射关系删除,并将该逻辑块对应的新物理块标识为其原物理块。进一步地,上述闪存还可具有以下特点所述操作模块在开始写操作时,
通知所述标识才莫块,所述标识模块利用所述预留的物理块记录标识该搡作未完成的信息;所述操作模块在所述映射表中建立该操作对应的逻辑块和其对应的新物 理块的映射关系后,通知所述标识;漠块,所述标识4莫块利用所述预留的物理块 记录标识该才喿作已完成的信息。进一步地,上述闪存还可具有以下特点所述标识模块在所述预留的物理 块中记录未完成的擦除或写操作的标识信息;或者令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写 操作的标识信息。进一步地,上述闪存还可具有以下特点所述闪存还包括第一控制模块, 其中所述标识模块在所述预留的物理块中记录未完成的擦除或写操作的标识 信息,并在将所述预留的物理块中的未完成信息记录页写满后,通知所述第一 控制模块,所述第一控制模块寻找一个空的物理块,将所述预留的物理块中记 录的未完成的擦除或写操作的信息拷贝到该寻找到的物理块的未完成信息记 录页中,然后擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷 贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块;所述恢复处理才莫块在闪存每一次上电时,先判断是否存在该寻找到的物理 块,如果是,则擦除所述预留的物理块,将所述未完成的擦除或写操作的信息 拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块,然 后扫描所述预留的物理块,否则直接扫描所述预留的物理块。进一步地,上述闪存还可具有以下特点所述闪存还包括第二控制模块, 其中所述标识模块预留两个或两个以上物理块来记录未完成的擦除或写操作 的标识信息,并在将其中一个预留的物理块的未完成信息记录页写满后,通知 所述第二控制才莫块,所述第二控制模块将该未完成信息记录页写满的物理块中
所述未完成的擦除或写操作的信息拷贝到另一个预留的物理块的未完成信息记录页中,擦除该未完成信息记录页写满的物理块;所述恢复处理4莫块在闪存每一次上电时,根据所述预留的两个或两个以上 物理块记录的信息进4于数据的恢复和处理。进一步地,上述闪存还可具有以下特点所述闪存还包括第三控制模块,其中所述标识模块令所述预留的物理块指向浮动块,在所述浮动块中记录未完 成的擦除或写操作的标识信息,并在将所述浮动块中的未完成信息记录页写满 后,通知所述第三控制模块,所述第三控制模块寻找一个空的物理块作为当前 浮动块,将原浮动块中记录的未完成的擦除或写操作的标识信息拷贝到当前浮 动块的未完成信息记录页中,将当前浮动块的标识信息顺序写入预留的物理块 中的一个空白页,然后擦除所述原浮动块。进一步地,上述闪存还可具有以下特点所述闪存还包括第四控制模块, 其中所述标识模块令所述预留的物理块指向浮动块,在所述浮动块中记录未完 成的擦除或写操作的标识信息,并在将所述预留的物理块写满时,通知所述第 四控制模块,所述第四控制模块寻找一个空的物理块,将所述当前浮动块的标 识信息写入该寻找到的物理块,然后擦除所述预留的物理块,将所述当前浮动 块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块;所述恢复处理模块在闪存每一次上电时,判断是否存在该寻找到的物理 块,如果是则擦除所述预留的物理块,将该寻找到的物理块中保存的所述当前 浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块, 然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。进一步地,上述闪存还可具有以下特点所述闪存还包括第五控制模块, 其中所述标识模块预留两个或两个以上物理块来指向记录未完成的擦除或写 操作的标识信息的浮动块,所述标识模块在将其中 一个预留的固定块写满后, 通知所述第五控制模块,所述第五控制模块将所述当前浮动块的标识信息写入另一个预留的物理块的起始页,擦除该写满的预留物理块;所述恢复处理模块在闪存每一次上电时,对预留的各个物理块中最后一个写有数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。 本发明有益效果如下在本发明中闪存预留物理块,并利用预留的物理块记录未完成的擦除或 写操作的信息;闪存在每一次上电时,只需要才艮据预留的物理块记录的信息进 行数据的恢复和处理即可,不需要在每一次上电时需要进行大量的查找和在冗 余区写入标志的工作,减少了 FLASH在每一次上电后为了恢复处理数据而进 行的工作量,从而提高FLASH的上电处理速度。


图1为本发明实施例一中FLASH的写操作流程图; 图2a为本发明实施例一中一个实例中写操作流程中原物理块和新物理块 的状态示意图;图2b为上述实例中写操作流程结束后原物理块和新物理块的状态示意图; 图3为本发明实施例一中FLASH的擦除操作流程图; 图4为本发明实施例一中FLASH恢复处理数据的流程图; 图5为本发明实施例二中FLASH标识未完成的擦除或写操作的流程图; 图6为本发明实施例二中FLASH标识已完成的擦除或写操作的流程图; 图7为本发明实施例二中FLASH恢复处理数据的流程图; 图8为本发明一个实施例中的FLASH的装置框图; 图9为对应本发明实施例一中第一种对固定块进行擦除的方法的闪存的装 置框图;图IO为对应本发明实施例二的闪存的装置框图。 具体实施方式
本发明的核心思想是FLASH预留物理块,并利用预留的物理块记录未 完成的擦除或写操作的信息;FLASH在每一次上电时,根据预留的物理块记录的信息进行数据的恢复 和处理。下面结合附图和实施例对本发明做进一步地描述。 实施例一在本实施例中,FLASH预留物理块,在预留的物理块中记录未完成的擦 除或写操作的标识信息,下面称FLASH预留来记录未完成的擦除或写操作的 标识信息的物理块为固定块,方《更描述。将该固定块的块号写入FLASH在上 电后自动执行的位置,则FLASH在上电时,会该位置保存的块号扫描该固定 块。关于记录未完成写操作的标识信息本实施例中,利用预留的固定块中的未完成信息记录页和其相应的完成信 息记录页来标识未完成的擦除或写操作,该未完成信息记录页和其相应的完成 信息记录页可以根据需要设定,例如以2*n页作为未完成信息记录页而2*n+l 页作为其相应的完成信息记录页,或者以2*n+l页作为未完成信息记录页而 2*n+l页作为其相应的完成信息记录页,或者以n页作为未完成信息记录页而 N/2+n页作为其相应的完成信息记录页等。下面以2*n页作为未完成信息记录 页而2*n+l页作为其相应的完成信息记录页为例进行说明,其中n取值从O到 N/2。而为了能够实现数据的恢复,本实施例中对FLASH基于块的写的过程包 括原数据块的数据转移的过程、新数据写的过程和原数据块擦除的过程,包括 原数据块的数据转移的过程是由于如果不对原数据块的数据进行转移, 一旦发 生非法掉电,则无法对数据进行恢复。因此,当FLASH接收到一个写操作指 令时,进行如图1所示的以下步骤 步骤SlOl,解析该操作指令,得到该搡作指令中的逻辑块L的块号; 步骤S102,根据该逻辑块L的块号查找映射表,如果找到该逻辑块L对应的物理块X,则进行步骤S103;否则,进行步骤109;在这里根据该逻辑块L在映射表中查找到的与其对应的物理块X即该逻辑块L对应的原物理块,以下称为原物理块X。步骤S103,寻找一个空的物理块Y,以下称为新物理块Y,在固定块中寻找相邻的两个空页2*11和2*n+l,在第2*n页中写入该操作的标识信息;在本步骤中,该操作的标识信息包括新物理块Y的块号以及标识该操作属性的信息(即标识该操作为写操作的信息);步骤S104,把原物理块X中的数据拷贝到新物理块Y的对应页中; 步骤S105,将写操作指令中要写入的数据写到新物理块Y中; 步骤S106,在映射表中建立逻辑块L和新物理块Y的映射关系; 此时,在映射表中,逻辑块L与原物理块X以及新物理块Y都存在映射关系,如果FLASH在这种情况下发生非法掉电,则在重新上电时,FLASH可以查找并发现这种情况,并根据查找结果恢复处理数据。在具体实现时,可以通过标志位或者存放块号的地址来区分原物理块和新物理块。 步骤S107,在固定块的2*11+1页中写入数据;该数据可以是新物理块Y的块号,也可以是原物理块X的块号或者其他 数据,只要令2*11+1页非空即可,在此不对写入2*11+1页的数据进行具体限定。步骤S108,擦除原物理块X,更新映射表,即在映射表中将逻辑块L和 原物理块X的映射关系删除,并将新物理块Y标识为逻辑块L的原物理块, 结束;如果在映射表中是通过标志位来区分原物理块和新物理块的,则将新物理 块Y标识为逻辑块L的原物理块包括根据标志位删除原物理块X的块号, 并设置标志位标识新物理块Y的为原物理块;
将新物理块Y标识为逻辑块L的原物理块包括将存放原物理块的块号的地 址中存放的块号删除,并将存放新物理块的块号的地址中存放的块号迁移到存 放原物理块的块号的地址中。步骤S109,寻找新物理块Y,在固定块中寻找相邻的两个空页2*n和 2*n+l,在第2^页中写入新物理块Y的块号;步骤S110,将写操作指令中要写入的数据写到新物理块Y中;步骤Sill,在映射表中建立逻辑块L和新物理块Y的映射关系;在本实施例中,认为此时完成写操作。步骤S112,在固定块的2*11+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*11和2*11+1,在第2*11页中 写入该操作的标识信息;在本步骤中,该操作的标识信息包括物理块X,的块号以及标识该操作属 性的信息(即标识该操作为擦除操作的信息);
步骤S204,擦除物理块X,,在映射表中将逻辑块L,和物理块X,的映射关系删除;在本步骤中,具体删除逻辑块L,和物理块X,的映射关系的方法为删除逻辑 块L,和物理块X,的块号。步骤S205,在固定块的2*11+1页中写入数据。在本实施例中,如果FLASH在擦除或写操作的过程中发生非法掉电,则应 当保证该擦除或写操作涉及的各个物理块在重新上电之后的正常访问操作,并 且对于存在对应的原物理块X的写操作来说,FLASH在重新上电时需要保护 原物理块X中的数据。因此,在重新上电时,FLASH进行的恢复处理数据的 流程,如图4所示,包括以下步骤步骤S301 , FLASH扫描其预留的固定块,查找是否存在2*n页非空但2*n+l 页为空的情况,如果是,进行步骤S302,否则进行步骤S305;步骤S302,才艮据2*n页记录的标识该操作属性的信息判断该未完成的操作 是否擦除操作,如果是,进行步骤S303,否则,该操作为写操作,进行步骤 S304;步骤S303,擦除该2t页记录的该擦除操作对应的物理块X,,在2*11+1页 中写入数据,在映射表中将该物理块和其对应的逻辑块的映射关系删除,返回 步骤S301;步骤S304,擦除该2、页记录的该写操作对应的新物理块Y,在2*11+1页 中写入数据,返回步骤S301;在该预留的固定块中,可能存在多个2^页非空但2^+l页为空的情况, 例如,第4页非空但第5页为空且第8页非空但第9页为空,此时,在查找到 第4页非空但第5页为空时,根据第4页中保存的信息获知该操作为写操作, 则擦除4页中记录的块号对应的物理块,并在第5页中写入数据,继续查找, 查找到第8页非空但第9页为空时,根据第8页中保存信息获知该操作为擦除 操作,则擦除8页中记录的块号对应的物理块,并在第9页中写入数据,在映
射表中将该物理块和其对应的逻辑块的映射关系删除,并继续查找,奎找不到2*11页非空但2*11+1页为空的情况了,则进行步骤S305。可以想见,对于逻辑块L没有对应的原物理块X的情况,通过步骤S304 则可以保证新物理块Y可以正常的被再次使用,而且,由于并没有在映射表中 写入逻辑块L和新物理块Y的映射关系,因此,对于逻辑块L没有对应的原 物理块X的情况,通过步骤S304即恢复处理完成。而对于逻辑块L存在对应的原物理块X的情况,当预留的固定块中不存在 多个2气页非空但2*11+1页为空的情况时,还可能没有完成擦除物理块X,或 者更新映射表的步骤,因此,还需要查找映射表并根据查找结果做进一步地处 理。步骤S305,查找映射表,查找是否存在一个逻辑块对应两个物理块的情况, 如果是,进行步骤S306,否则,直接结束。在本步骤中,查找到的一个逻辑块对应两个物理块,表示FLASH已经在 映射表中建立逻辑块L和新物理块Y的映射关系,即将开始或者已经开始擦 除原物理块X,在没有完成擦除或者没有在映射表中将逻辑块L和原物理块X 的映射关系删除时就非法掉电的情况。因此,当重新上电后查找到一个逻辑块 对应两个物理块时,根据该映射表中保存的原物理块X的块号擦除原物理块 X,并删除逻辑块L和原物理块X的映射关系,将新物理块标识为该逻辑块的 原物理块。步骤S306,擦除该逻辑块对应的原物理块,在映射表中将逻辑块和原物理 块的映射关系删除,并将新物理块标识为该逻辑块的原物理块,返回步骤S305。在上述流程中,FLASH先扫描固定块再查找映射表,这仅是FLASH恢复 处理数据的 一种顺序,扫描固定块和查找映射表分别是针对在不同阶段掉电的 操作进行的恢复处理,并没有一定的先后顺序,在具体实现时,FLASH还可 以同时扫描固定块和查找映射表,或者先查找映射表再扫描固定块。通过上述在FLASH中恢复处理数据的流程,以逻辑块L存在对应的原物理 进行到写操作访问的哪个环节发生非法掉电, 都可以保护原物理块X中的数据,并且在重新上电后,可以保证写操作涉及的 各个物理块的正常访问操作。具体的分析如下1、在预留块2*11页中标识该访问操作之前发生非法掉电;由于在这种情况下,FLASH没有在预留块中标识该访问操作,而映射表中 也只存在逻辑块L和原物理块X的映射关系,所以在本实施例中,FLASH在 重新上电后,不会对该访问操作涉及的物理块进行处理。而在非法掉电前,原 物理块X中的数据没有净皮石皮坏,新物理块Y中也没有数据,逻辑块L的映射 关系也正常,不需要进行数据恢复。2 、在预留块2*n页中标识该访问操作之后,在预留块2*n+1页中写入数据 之前发生非法掉电;在本实施例中,在这种情况下,FLASH在重新上电后,会判断出存在2气 页非空但2t+l页为空的情况,根据2*n页中保存的新物理块Y的块号找到该 新物理块Y,擦除新物理块Y中的数据,并在预留块2*11+1页中写入数据。而 在非法掉电前,原物理块X中的数据没有被破坏,可以正常地被再次使用;新 物理块Y中已经拷贝入了原物理块X中的部分或者全部数据或者已经拷贝入 了原物理块X中的全部数据且写入了一部分写操作指令指示的数据,因此,擦 除新物理块Y中的数据可以保证新物理块Y的正常再次使用,而在预留块 2*n+l页中写入数据标识该访问操作已经完成,不需要在下一次重新上电时再 次进行数据的恢复处理。3、在预留块2*11+1页中写入数据之后,将新物理块标识为该逻辑块的原物 理块之前发生非法掉电。在这种情况下,FLASH在重新上电后,会查找到在映射表中,逻辑块L对 应两个物理块,则FLASH会擦除该逻辑块对应的原物理块X,在映射表中将 逻辑块L和原物理块X的映射关系删除,并将新物理块Y标识为逻辑块L的 原物理块。而在非法掉电前,FLASH已经将原物理块X的数据拷贝到了新物
理块Y,且已经将写搡作指令指示的数据写入了新物理块Y,并且即将开始或 者已经开始擦除原物理块X,因此,原物理块X可能已经被破坏,而新物理块 Y中有完整的原物理块X的数据和写操作指令指示的数据。所以,在这里擦除 原物理块X,在映射表中将逻辑块L和原物理块X的映射关系删除,并将新物 理块Y标识为逻辑块L的原物理块,既保护了数据又4吏得原物理块X可以正 常地再次被使用。在本实施例中,预留固定块来标识未完成的擦除或写操作,而当该固定块 的2*n页写满后,需要擦除该固定块才能重新利用它来标识未完成的擦除或写 操作,但是,由于在该固定块的2*11页写满时,可能该该固定块的2*n+l页并 没有写满,即,存在还未完成的擦除或写操作,因此,在擦除该固定块时,必 须将还未完成的擦除或写操作标识转移到别的物理块中,在本实施例中,提供 两种在固定块的2*n页写满后的操作流程1、当该固定块的2*11页写满后,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*!1页写满之后再进行擦除,这是为了减少擦除固定块的次数,提高其使用寿命。在具体实施中,也可以周期性地对固定 块进行擦除,或者,在每一个操作完成后,就擦除固定块,令固定块中标识的, 都是未完成的擦除或写操作。在本实施例中,如果FLASH基于块的写操作或者擦除过程中出现非法掉 电,则重新上电后扫描预留块来遍历未完成操作的物理块。遍历未完成操作的 物理块最多需要查找的次数为N。以目前普遍使用的方案为例, 一块FLASH 包括1024个块,即M-1024; —个块包含256页,即N=256。这样,现有技术 中遍历未完成操作的物理块所需查找的次数最多为2*]\4=2*4*256=8*1^次,是 本实施例技术方案最多需要查找的次数的8倍。由于本实施例中还需要查找映 射表,会相应的增加一些查找次数,但是,映射表中记录的是当前存在的逻辑 块和物理块的映射关系,该映射关系的数量相对来说是很小的。并且,在本实施例中,当恢复处理完一个操作时,只需要在第2*n+l页中写入数据,而不像 现有技术需要在该操作涉及的物理块的N个页的冗余区都写入标志,因此,本 实施例技术方案使得FLASH上电时恢复处理数据的效率和速度都得到了很大 的提高。实施例二实施例一的方案很好的解决了提高查找未完成操作块的效率和速度的问 题,但是由于预留的是固定块来标识未完成的擦除或写操作,而当该固定块被 写满后,必须擦除后才能继续使用。反复的对该固定块进行写和擦除操作会容 易导致该固定块变成坏块,从而导致该块不能读写,而这是^f吏用者不愿看到的。为了解决这个问题,我们在实施例一方案的^f出上,做了一些改进。即, 在本实施例中,FLASH预留固定块,但不是利用该固定块直接标识未完成的 擦除或写操作,而是保存真正用来标识未完成的擦除或写操作的物理块的块 号,即令预留的物理块指向真正用来标识未完成的擦除或写操作的物理块。由 于该真正用来标识未完成的擦除或写操作的物理块不是固定的物理块,为了方 便描述,以下将其称为浮动块,本实施例中,在浮动块中标识未完成的擦除或 写操作的方法和实施例一中在固定块中标识未完成的擦除或写操作的方法相 同,即利用浮动块中的2^页作为未完成信息记录页而2t+l页作为其相应的 完成信息记录页,其中n取值从0到N/2。在本实施例中,当FLASH要标识未完成的擦除或写操作时,FLASH进行 如图5所示的以下步骤步骤S401,查找预留的固定块中是否存在数据,如果是,进行步骤S402; 否则进行步骤S409;步骤S402,找到该固定块中最后一个写有数据的页P,根据页P中保存的 块号找到浮动块Z;
该浮动块z为当前真正用来标识未完成的擦除或写操作的物理块。 步骤S403,在浮动块Z中寻找是否存在相邻的两个空页2^和2气+1,如果是,进行步骤S404;否则进行步骤S405;如果不存在相邻的两个空页2*11和2*11+1,即表示浮动块Z已经写满。 步骤S404,在浮动块Z中相邻的两个空页中的2*n页中写入该操作的标识j言息,结束;步骤S405,寻找一个空的浮动块Z,作为当前浮动块,将原浮动块Z中空 的2*11+1页相应的非空的2t页拷贝到浮动块Z'中;步骤S406,在浮动块Z,中寻找相邻的两个空页2、和2^+l,在2*11页中 写入该操作的标识信息;步骤S407,判断固定块是否写满,即页P是否为该固定块的最后一页, 如果是,进行步骤S408;否则,进行步骤S409;步骤S408,擦除固定块,将浮动块Z,的块号写入固定块的起始页,即第O 页,结束;步骤S409,将浮动块Z,的块号写入固定块的页P+1,结束;步骤S410,寻找一个空的浮动块Z"作为当前浮动块,将浮动块Z"的块号 写入固定块的起始页中;步骤S411,在浮动块Z"中寻找相邻的两个空页2^和2^+l,并在2*11 页中写入该操作的标识信息。可见,在上述流程中,如果固定块写满,则直接对固定块进行擦除,这样 做有一个问题是,如果在擦除了固定块之后,将浮动块的块号写入固定块的第 0页之前非正常掉电,则无法对FLASH进行正确的数据恢复和处理,因此, 在本实施例中,提供以下两种方法避免该问题1、当固定块写满时,FLASH寻找一个空的物理块,将当前浮动块的标识 信息写入该寻找到的物理块,然后擦除固定块,将当前浮动块的标识信息写入 固定块的起始页,擦除该寻找到的物理块。2
FLASH在重新上电时,如果存在该寻找到的物理块,则擦除固定块,将 该寻找到的物理块中保存的当前浮动块的标识信息写入固定块的起始页,擦除 该寻找到的物理块,然后扫描固定块,否则直接扫描固定块。2、 FLASH预留两个或两个以上固定块来指向标识未完成的擦除或写净乘作 的浮动块,当其中一个固定块写满后,将当前浮动块的标识信息写入另一个固 定块的起始页,擦除该写满的固定块;FLASH在重新上电时,对预留的两个或两个以上固定块中最后一个写有 数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。在本实施例中,当FLASH要标识已完成的擦除或写操作时,FLASH进行 如图6所示的以下步骤步骤S501,找到该固定块中最后一个写有数据的页P,才艮据页P中保存的 块号找到浮动块;步骤S502,在该浮动块中标识该擦除或写操作未完的2*n页相应的2*n+l 页中写入数据。在本实施例中,如果FLASH在擦除或写操作的过程中发生非法掉电,则如 果写操作存在对应的原物理块X时,FLASH需要保护原物理块X中的数据, 并且,应当保证该擦除或写操作涉及的各个物理块在重新上电之后的正常访问 操作。因此,在重新上电时,FLASH进行的恢复处理数据的流程,如图7所 示,包括以下步骤步骤S601, FLASH扫描其预留的固定块,判断是否存在写有数据的页,如 果是,进行步骤S602,否则进行步骤S605;步骤S602,找到该固定块中最后一个写有数据的页P, 4艮据页P中保存的 块号找到浮动块;步骤S603, FLASH扫描该浮动块,查找是否存在2*n页非空但2*n+l页为 空的情况,如果是,进行步骤S604,否则进行步骤S605;步骤S604,根据2*n页记录的标识该操作属性的信息判断该未完成的操作 是否擦除操作,如果是,进行步骤S605,否则,该搡作为写搡作,进行歩骤 S606;步骤S605,擦除该2、页记录的该擦除操作对应的物理块X,,在2+n+l页 中写入数据,在映射表中将该物理块和其对应的逻辑块的映射关系删除,返回 步骤S603;步骤S606,擦除该2气页记录的该写操作对应的新物理块Y,在2*11+1页 中写入数据,返回步骤S603;步骤S607,查找映射表,查找是否存在一个逻辑块对应两个物理块的情况, 如果是,进行步骤S608,否则,直接结束。步骤S608,擦除该逻辑块对应的原物理块,在映射表中将逻辑块和原物理 块的映射关系删除,并将新物理块标识为该逻辑块的原物理块,返回步骤S607。在上述流程中,FLASH先扫描固定块再查找映射表,这仅是FLASH恢复 处理数据的一种顺序,扫描固定块和查找映射表分别是针对在不同阶段掉电的 操作进行的恢复处理,并没有一定的先后顺序,在具体实现时,FLASH还可 以同时扫描固定块和查找映射表,或者先查找映射表再扫描固定块。由于在本实施例中,FLASH预留固定块来指向标识未完成的擦除或写操 作的浮动块,而浮动块才是真正用来标识未完成的擦除或写操作的物理块,并 且在每写满一个浮动块后,才寻找另一个浮动块来标识未完成的擦除或写操作 并擦除之前的浮动块。固定块中的每一页能够指向一个浮动块, 一个浮动块可 以标识N/2个未完成的擦除或写操作,而固定块也是在写满后才进行擦除,因 此,固定块可以在标识!S^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在闪存每一次上电时,判断是否存在该寻找到的物理块, 如果是则擦除固定块,将该寻找到的物理块中保存的当前浮动块的标识信息写 入固定块的起始页,4察除该寻找到的物理块,然后扫描固定块,否则直接扫描 固定块。对应实施例二中第二种对固定块进行擦除的方法,FLASH可以不包括第 四控制模块109而包括第五控制模块,其中标识模块102预留两个或两个以上固定块来指向记录未完成的擦除或写操 作的标识信息的浮动块,标识模块102在将其中一个预留的固定块写满后,通 知第五控制模块,第五控制模块将当前浮动块的标识信息写入另一个预留的固 定块的起始页,擦除该写满的预留固定块;恢复处理模块104在FLASH每一次上电时,对预留的各个固定块中最后 一个写有数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种闪存控制方法,其特征在于,包括以下步骤闪存预留物理块,并利用所述预留的物理块记录未完成的擦除或写操作的信息;闪存在每一次上电时,根据所述预留的物理块记录的信息进行数据的恢复和处理。
2、 如权利要求1所述的方法,其特征在于,所述利用所述预留的物理块 记录未完成的擦除或写操作的信息包括在所述预留的物理块中记录未完成的擦除或写操作的标识信息;或者 令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写操作的标识信息,所述浮动块是指闪存寻找到的,用来记录未完成的擦除或写操作的标识信息的物理块。
3、 如权利要求1所述的方法,其特征在于,对于擦除操作,所述数据的 恢复和处理包括根据所述预留的物理块记录的信息擦除未完成的擦除操作对 应的物理块,在映射表中将该物理块和其对应的逻辑块的映射关系删除。
4、 如权利要求3所述的方法,其特征在于,所述擦除操作包括当接收 到擦除操作指令时,闪存根据该操作指令中的逻辑块号查找映射表,找到该逻 辑块对应的物理块,利用所述预留的物理块记录标识该操作未完成的信息,然 后擦除该逻辑块对应的物理块,在映射表中将该逻辑块和其对应的物理块的映 射关系删除,利用所述预留的物理块记录标识该操作已完成的信息。
5、 如权利要求1所述的方法,其特征在于,对于写操作,所述数据的恢 复和处理包括根据所述预留的物理块记录的信息擦除未完成的写操作对应的新物理块;并且查找映射表,当存在一个逻辑块对应两个物理块时,擦除所述逻辑块对应 的原物理块,在映射表中将所述逻辑块和所述原物理块的映射关系删除,并将 该逻辑块对应的新物理块标识为其原物理块。
6、 如权利要求5所述的方法,其特征在于,所述写操作包括当接收到 写操作指令时,闪存根据该操作指令中的逻辑块号查找映射表,如果该逻辑块 没有对应的原物理块,则直^"寻找新物理块,利用所述预留的物理块记录标识 该操作未完成的信息,并4艮据该操作指令在新物理块中写入数据,在映射表中 建立该逻辑块和该新物理块的映射关系,利用所述预留的物理块记录标识该操 作已完成的信息;如果找到原物理块,则闪存寻找新物理块,利用所述预留的物理块记录标 识该操作未完成的信息,将原物理块中的数据拷贝到该新物理块中,根据该操 作指令在新物理块中写入数据,在映射表中建立该逻辑块和该新物理块的映射 关系,利用所述预留的物理块记录标识该操作已完成的信息,然后擦除原物理 块,更新映射表。
7、 如权利要求4或6所述的方法,其特征在于,所述利用所述预留的物 理块记录标识该操作未完成的信息包括在所述预留的物理块中寻找一个空白 未完成信息记录页,在该页中记录该操作的标识信息;所述利用所述预留的物理块记录标识该才乘作已完成的信息包括在该未完 成信息记录页相应的完成信息记录页中写入数据;所述根据所述预留的物理块记录的信息进行数据的恢复和处理包括扫描 所述预留的物理块,通过判断是否存在未完成信息记录页非空而其相应的完成 信息记录页为空的情况来获知未完成的擦除或写操作,并根据该未完成信息记 录页中记录的该^l作的标识信息进行数据的恢复和处理,然后在该未完成信息 记录页相应的完成信息记录页中写入数据。
8、 如权利要求7所述的方法,其特征在于,当所述预留的物理块中的未 完成信息记录页写满后,闪存寻找一个空的物理块,将所述预留的物理块中记 录的未完成的擦除或写操作的信息拷贝到该寻找到的物理块的未完成信息记 录页中,然后擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块;闪存在每一次上电时,如果存在该寻找到的物理块,则擦除所述预留的物 理块,将所述未完成的擦除或写操作的信息拷贝回所述预留的物理块的未完成 信息记录页中,擦除该寻找到的物理块,然后扫描所述预留的物理块,否则直 接扫描所述预留的物理块。
9、 如权利要求7所述的方法,其特征在于,闪存预留两个或两个以上物 理块来记录未完成的擦除或写操作的信息,当其中一个预留的物理块的未完成 信息记录页写满后,将该未完成信息记录页写满的物理块中所述未完成的擦除 或写操作的信息拷贝到另 一个预留的物理块的未完成信息记录页中,擦除该未 完成信息记录页写满的物理块;闪存在每一次上电时,才艮据所述预留的两个或两个以上物理块记录的信息 进行数据的恢复和处理。
10、 如权利要求2所述的方法,其特征在于,所述在所迷浮动块中记录未 完成的擦除或写操作的标识信息包括在开始擦除或写操作时,闪存根据所述预留的物理块中最后一个写有数据 的页中保存的浮动块的标识信息找到相应的浮动块,在该浮动块中寻找一个空 白未完成信息记录页,在该页中记录该操作的标识信息;在该擦除或写操作完 成后,闪存在该未完成信息记录页相应的完成信息记录页中写入数据;所述根据所述预留的物理块记录的信息进行^t据的恢复和处理包括根据 所述预留的物理块中最后一个写有数据的页中保存的浮动块的标识信息找到 相应的浮动块,通过判断该浮动块中是否存在未完成信息记录页非空而其相应 的完成信息记录页为空的情况来获知未完成的擦除或写操作,并才艮据该未完成 信息记录页中记录的该操作的标识信息进行数据的恢复和处理,然后在该未完 成信息记录页相应的完成信息记录页中写入数据。
11、 如权利要求10所述的方法,其特征在于,当所述浮动块中的未完成 信息记录页写满后,闪存寻找一个空的物理块作为当前浮动块,将原浮动块中 记录的未完成的擦除或写操作的标识信息拷贝到当前浮动块的未完成信息记 录页中,将当前浮动块的标识信息顺序写入预留的物理块中的一个空白页,然 后擦除所述原浮动块。
12、 如^l利要求11所述的方法,其特征在于,当所述预留的物理块写满 时,闪存寻找一个空的物理块,将所述当前浮动块的标识信息写入该寻找到的 物理块,然后^^除所迷预留的物理块,将所述当前浮动块的标识信息写入所述 预留的物理块的起始页,擦除该寻找到的物理块;闪存在每一次上电时,如果存在该寻找到的物理块,则擦除所述预留的物 理块,将该寻找到的物理块中保存的所述当前浮动块的标识信息写入所述预留 的物理块的起始页,擦除该寻找到的物理块,然后扫描所述预留的物理块,否 则直接扫描所述预留的物理块。
13、 如权利要求11所述的方法,其特征在于,闪存预留两个或两个以上 物理块来指向记录未完成的擦除或写操作的标识信息的浮动块,当其中一个预 留的物理块写满后,将所述当前浮动块的标识信息写入另一个预留的物理块的 起始页,擦除该写满的预留物理块;闪存在每一次上电时,对预留的各个物理块中最后一个写有数据的页指向 的浮动块中未完成的擦除或写操作都进行恢复处理。
14、 一种闪存,包括操作模块,其特征在于,所述闪存还包括标识模块、 恢复处理模块,其中所述标识模块预留物理块,并利用所述预留的物理块记录所述操作模块未 完成的擦除或写操作的信息;所述恢复处理模块在闪存每一次上电时,4艮据所述预留的物理块记录的信 息进行lt据的恢复和处理。
15、 如权利要求14所述的闪存,其特征在于,所述闪存还包括存储单元, 用于保存映射表;所述恢复处理模块包括第 一恢复处理单元和第二恢复处理单元,其中 所述第一恢复处理单元根据所述预留的物理块记录的信息擦除所速搡作 模块未完成的擦除操作对应的物理块,在所述存储单元保存的映射表中将该物理块和其对应的逻辑块的映射关系删除;所述第二恢复处理单元根据所述预留的物理块记录的信息擦除所述操作 模块未完成的写操作对应的新物理块;并查找所述映射表,当存在一个逻辑块 对应两个物理块时,擦除所述逻辑块对应的原物理块,在所述映射表中将该原 物理块和其对应的逻辑块的映射关系删除,并将该逻辑块对应的新物理块标识 为其原物理块。
16、 如权利要求14所述的闪存,其特征在于,所述操作模块在开始写操 作时,通知所述标识才莫块,所述标识才莫块利用所述预留的物理块记录标识该操 作未完成的信息;所述操作模块在所述映射表中建立该操作对应的逻辑块和其对应的新物 理块的映射关系后,通知所述标识才莫块,所述标识才莫块利用所述预留的物理块 记录标识该才喿作已完成的信息。
17、 如权利要求14所述的闪存,其特征在于,所述标识模块在所述预留 的物理块中记录未完成的擦除或写操作的标识信息;或者令所述预留的物理块指向浮动块,在所述浮动块中记录未完成的擦除或写 操作的标识信息。
18、 如权利要求17所述的闪存,其特征在于,所述闪存还包括第一控制 模块,其中所述标识模块在所述预留的物理块中记录未完成的擦除或写操作的标识 信息,并在将所述预留的物理块中的未完成信息记录页写满后,通知所述第一 控制才莫块,所述第一控制4莫块寻找一个空的物理块,将所述预留的物理块中记 录的未完成的擦除或写操作的信息拷贝到该寻找到的物理块的未完成信息记录页中,然后擦除所述预留的物理块,将所述未完成的擦除或写操作的信息拷 贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块;所述恢复处理模块在闪存每一次上电时,先判断是否存在该寻找到的物理 块,如果是,则擦除所述预留的物理块,将所述未完成的擦除或写操作的信息 拷贝回所述预留的物理块的未完成信息记录页中,擦除该寻找到的物理块,然 后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
19、 如权利要求17所述的闪存,其特征在于,所述闪存还包括第二控制 模块,其中所述标识^t块预留两个或两个以上物理块来记录未完成的擦除或写操作 的标识信息,并在将其中一个预留的物理块的未完成信息记录页写满后,通知 所述第二控制模块,所述第二控制模块将该未完成信息记录页写满的物理块中 所述未完成的擦除或写操作的信息拷贝到另一个预留的物理块的未完成信息 记录页中,^^除该未完成信息记录页写满的物理块;所述恢复处理模块在闪存每一次上电时,根据所述预留的两个或两个以上 物理块记录的信息进行数据的恢复和处理。
20、 如权利要求17所迷的闪存,其特征在于,所述闪存还包括第三控制 模块,其中所述标识才莫块令所述预留的物理块指向浮动块,在所述浮动块中记录未完 成的擦除或写操作的标识信息,并在将所述浮动块中的未完成信息记录页写满 后,通知所述第三控制模块,所述第三控制模块寻找一个空的物理块作为当前 浮动块,将原浮动块中记录的未完成的擦除或写操作的标识信息拷贝到当前浮 动块的未完成信息记录页中,将当前浮动块的标识信息顺序写入预留的物理块 中的一个空白页,然后擦除所述原浮动块。
21、 如权利要求17或20所述的闪存,其特征在于,所述闪存还包括第四 控制模块,其中所述标识模块令所述预留的物理块指向浮动块,在所述浮动块中记录未完 成的擦除或写^Mt的标识信息,并在将所述预留的物理块写满时,通知所述第 四控制模块,所述第四控制模块寻找一个空的物理块,将所述当前浮动块的标识信息写入该寻找到的物理块,然后擦除所述预留的物理块,将所述当前浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块;所述恢复处理模块在闪存每一次上电时,判断是否存在该寻找到的物理 块,如果是则擦除所述预留的物理块,将该寻找到的物理块中保存的所述当前 浮动块的标识信息写入所述预留的物理块的起始页,擦除该寻找到的物理块, 然后扫描所述预留的物理块,否则直接扫描所述预留的物理块。
22、如权利要求17或20所述的闪存,其特征在于,所述闪存还包括第五 控制模块,其中所述标识模块预留两个或两个以上物理块来指向记录未完成的擦除或写 操作的标识信息的浮动块,所述标识模块在将其中 一个预留的固定块写满后, 通知所述第五控制才莫块,所述第五控制才莫块将所述当前浮动块的标识信息写入 另一个预留的物理块的起始页,擦除该写满的预留物理块;所述恢复处理才莫块在闪存每一次上电时,对预留的各个物理块中最后一个 写有数据的页指向的浮动块中未完成的擦除或写操作都进行恢复处理。
全文摘要
本发明涉及USB移动存储领域,尤其涉及一种闪存控制方法及闪存,用以解决现有技术中存在FLASH上电处理速度缓慢的问题。在本发明中,FLASH预留物理块,并利用预留的物理块记录未完成的擦除或写操作的信息;FLASH在每一次上电时,根据预留的物理块记录的信息进行数据的恢复和处理。采用本发明方法,减少了FLASH在每一次上电后为了恢复处理数据而进行的工作量,从而提高FLASH的上电处理速度。
文档编号G11C16/06GK101154447SQ20061011345
公开日2008年4月2日 申请日期2006年9月28日 优先权日2006年9月28日
发明者李文峰, 陈益峰 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1