一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种存储器及其控制方法与控制系统与流程

2022-11-30 21:59:02 来源:中国专利 TAG:


1.本发明涉及存储技术领域,特别涉及一种存储器及其控制方法与控制系统。


背景技术:

2.快闪存储器(flash memory)具有不易失特性,在存储设备掉电恢复后,闪存内的存储数据不会发生丢失。地址映射表是记录逻辑地址和物理地址间对应关系的映射表,可以用于管理写入存储设备的数据存储在设备的哪个物理位置。地址映射表存储在存储设备的缓存中,在存储设备出现异常状态后,地址映射表中的数据容易丢失。


技术实现要素:

3.本发明的目的在于提供一种存储器及其控制方法与控制系统,能够在存储器的异常状态下快速恢复存储数据。
4.为解决上述技术问题,本发明是通过以下技术方案实现的:本发明提供了一种存储器的控制方法,包括以下步骤:将用户数据写入所述存储器的数据存储模块,并根据所述数据存储模块的调用顺序和块编码,在所述存储器的闪存区建立块使用日志表;根据所述用户数据的地址映射信息,在所述存储器的缓存区建立地址映射表;根据被调用的数据存储模块,在所述缓存区建立位映射表,所述位映射表包括与被调用的所述数据存储模块对应的所述地址映射表的位置信息;设置下刷阈值,当所述缓存区的映射表存储余量小于所述下刷阈值时,将部分所述地址映射表转移至所述闪存区,并更新所述位映射表;将更新后的所述位映射表转移到所述闪存区;以及当所述存储器出现异常状态,根据所述闪存区的所述位映射表和所述块使用日志表,恢复所述缓存区的地址映射数据。
5.在本发明一实施例中,建立所述块使用日志表的步骤包括:判断被调用的所述数据存储模块是否为新块,当被调用的所述数据存储模块为新块时,在所述缓存区建立所述块使用日志表;将所述数据存储模块的块编码和调用顺序记录在所述块使用日志表中;以及完成所述用户数据的写入后,每当所述存储器调用新的所述数据存储模块,将所述块使用日志表转移至所述闪存区。
6.在本发明一实施例中,建立所述地址映射表的步骤包括:在所述缓存区建立二级映射表,所述二级映射表包括被写入数据的地址映射信息;以及在所述缓存区建立一级映射表,所述一级映射表包括所述二级映射表的地址映射信息,其中所述一级映射表和所述二级映射表同步更新。
7.在本发明一实施例中,转移所述地址映射表的步骤包括:
判断所述缓存区分配给所述位映射表和所述二级映射表的映射表存储余量是否小于所述下刷阈值;以及当任一所述映射表存储余量小于所述下刷阈值,将所述二级映射表从缓存区转移至所述闪存区。
8.在本发明一实施例中,建立所述位映射表的步骤包括:获取所述数据存储模块的块编码;在所述缓存区建立所述位映射表,所述位映射表包括多个比特数据位,且所述比特数据位与所述数据存储模块的存储单元对应;以及根据所述存储单元的所述二级映射表的位置信息,为所述比特数据位赋值。
9.在本发明一实施例中,为所述比特数据位赋值的步骤包括:预设闪存标记数值和缓存标记数值;当所述存储单元的二级表映射信息处于所述缓存区,则将所述比特数据位的数值设置为所述缓存标记数值;以及当所述存储单元的二级表映射信息处于所述闪存区,则将所述比特数据位的数值设置为所述闪存标记数值。
10.在本发明一实施例中,转移所述地址映射表的步骤包括:将位于所述缓存区的部分所述二级映射表转移至所述闪存区;根据转移后所述二级映射表更新所述一级映射表;以及将更新后的所述一级映射表转移至所述闪存区。
11.在本发明一实施例中,更新所述位映射表的步骤包括:获取被转移的部分所述二级映射表对应的所述存储单元;以及将所述存储单元对应的所述比特数据位从缓存标记数值更改为闪存标记数值。
12.在本发明一实施例中,恢复所述地址映射数据的步骤包括:获取位于所述闪存区的所述位映射表;获取所述位映射表中比特数据位为缓存标记数值的存储单元;以及读取所述存储单元的存储数据,并根据所述存储数据的地址映射信息,在所述缓存区重建所述二级映射表。
13.在本发明一实施例中,恢复所述地址映射数据的步骤还包括:对比所述位映射表和所述块使用日志表,获取所述块使用日志表多出的遗漏数据存储模块;读取所述遗漏数据存储模块,并根据所述遗漏数据存储模块的地址映射信息,在所述缓存区重建所述二级映射表;以及根据所述遗漏数据存储模块,在所述缓存区重建所述位映射表。
14.本发明提供了一种存储器的控制系统,包括:日志表生成模块,用于在将用户数据写入所述存储器的数据存储模块时,根据所述数据存储模块的调用顺序和块编码,在所述存储器的闪存区建立块使用日志表;地址映射表生成模块,用于根据所述用户数据的地址映射信息,在所述存储器的缓存区建立地址映射表;位映射表生成模块,用于根据被调用的所述数据存储模块,在所述缓存区建立位
映射表,所述位映射表包括所述地址映射表的位置信息;数据下刷模块,用于设置下刷阈值,当所述缓存区的映射表存储余量小于所述下刷阈值时,将部分所述地址映射表转移至所述闪存区,并更新所述位映射表;数据转移模块,用于将更新后的所述位映射表转移到所述闪存区;以及数据恢复模块,用于在所述存储器出现异常状态时,根据所述闪存区的所述位映射表和所述块使用日志表,恢复所述缓存区的地址映射数据。
15.本发明提供了一种存储器,所述存储器中存储有控制指令,所述控制指令被处理器执行时实现如上所述存储器的控制方法的步骤。
16.如上所述,本发明提供的一种存储器及其控制方法与控制系统,能够按照约定的映射表下刷机制合理的将映射表往表块更新,当存储器出现异常状态时,可以恢复映射表数据。根据本发明提供的存储器的控制方法,在数据日常存储时,缓存区的冗余数据少,对用户数据的存储调用影响小,在数据异常恢复时,能够快速恢复异常状态前的缓存区状态,且恢复过程中读取的数据量小,数据恢复速度快。根据本发明提供的存储器的控制方法,在异常状态的数据恢复过程中,能够避免数据出现遗漏,恢复准确度高。
17.当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
18.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本发明一实施例中地址映射表的结构示意图。
20.图2为本发明一实施例中存储器的结构示意图。
21.图3为本发明所述存储器的控制方法的流程图。
22.图4为本发明一实施例中数据存储模块的结构示意图。
23.图5为本发明一实施例中位映射表初被建立的示意图。
24.图6为本发明一实施例中步骤s30的流程图。
25.图7为本发明一实施例中步骤s304的流程图。
26.图8为本发明一实施例中位映射表设置比特数据数值的示意图。
27.图9为本发明一实施例中位映射表设置比特数据数值的示意图。
28.图10为本发明一实施例中位映射表更新比特数据数值的示意图。
29.图11为本发明一实施例中位映射表转移后的示意图。
30.图12为本发明一实施例中步骤s40的流程图。
31.图13为本发明一实施例中步骤s60的流程图。
32.图14为块使用日志表和位映射表的对比示意图。
33.图15为本发明所述存储器的控制系统的结构示意图。
34.图16为一种电子设备的结构原理框图。
35.图17为一种计算机可读存储介质的结构原理框图。
36.图中:100、存储器;200、主机;300、控制系统;301、日志表生成模块;302、地址映射
表生成模块;303、位映射表生成模块;304、数据下刷模块;305、数据转移模块;306、数据恢复模块;400、处理器;500、计算机指令;501、计算机可读存储介质;1、闪存区;11、数据存储模块;111、数据存储页;12、表存储模块;121、一级表存储单元;122、二级表存储单元;123、位表存储单元;124、日志表存储单元;2、缓存区;21、数据缓存单元;22、一级表缓存单元;23、二级表缓存单元;24、位表缓存单元;3、二级映射表;4、一级映射表;5、位映射表;51、起始标志;52、终止标志;6、块使用日志表。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
38.存储设备是可以用来存储程序和各种数据信息的记忆部件,与主机系统一起使用,可使主机系统将数据写入至存储设备中或是从存储设备中读取数据。以闪存作为存储介质的存储设备相较于传统的磁盘来讲,不具有重复覆写的特点。只有先对闪存进行擦除操作才能写入数据,且写入操作是按照物理页面(page)为单位进行,擦除操作以物理区块(block)为单位进行。因此主机系统写入指定逻辑地址的数据,并不是存放在闪存的固定位置。在存储器的存储方案中,在写入数据的逻辑地址和物理地址间建立映射关系,形成地址映射表。为便于数据的及时调用,在存储设备的存储方案中,地址映射表的数据都存储在缓存中。当存储设备出现异常状态,例如发生异常掉电状态,缓存中的数据丢失。而则 映射表丢失后,若要对数据进行恢复,读取数据的时间会极大程度地拖慢开机时间和存储效率,严重影响存储设备的存储性能。因此本发明提出一种存储器及其控制方法与控制系统,能够解决上述问题。
39.请参阅图1所示,本发明提供了一种存储器100,存储器100可以与主机200电性连接。其中主机200可以是计算机或是处理器等设备。主机200向存储器100传输多个用户数据,例如用户数据a、用户数据a 1和用户数据a 2。在本实施例中,存储器100包括闪存区1和缓存区2,其中闪存区1可以是nand闪存,缓存区2可以是静态随机存取存储器(static random access memory,sram)。用户数据被写入闪存区1中,并在用户数据的逻辑地址和物理地址间建立地址映射关系。其中,缓存区2包括一级映射表4和二级映射表3,用户数据的地址映射关系被存储在二级映射表3中,二级映射表3包括多条用户数据的地址映射信息,例如用户数据a的地址映射信息a、用户数据a 1的地址映射信息a 1和用户数据a 2的地址映射信息a 2。
40.请参阅图1所示,在本发明一实施例中,在二级映射表3的映射数据逻辑地址和物理地址间建立映射关系,并将形成的映射数据存储在一级映射表4中。其中,以及一级映射表4包括二级映射表3的地址映射关系,在本实施例中,主机200在读取或编辑用户数据时,主机200先从缓存区2的一级映射表4中调用对应的二级映射表3的地址映射信息,例如调用了地址映射信息b,则根据一级映射表4从二级映射表3中调用对应的地址映射关系,例如地址映射信息a。根据地址映射信息a,则可以调用对对应的用户数据a。其中,一级映射表4中的地址映射关系可以追寻到一个或多个二级映射表3的映射关系。
41.请参阅图1和图2所示,在本发明一实施例中,闪存区1包括数据存储模块11和表存储模块12。其中,数据存储模块11可用于存储用户数据以及系统数据,表存储模块12可用于存储存储器100的映射表数据。其中,表存储模块12包括一级表存储单元121、二级表存储单元122、位表存储单元123和日志表存储单元124。缓存区2包括数据缓存单元21、一级表缓存单元22、二级表缓存单元23和位表缓存单元24。其中,数据缓存单元21可用于存储用户数据。一级表存储单元121和一级表缓存单元22用于存储一级表。二级表存储单元122和二级表缓存单元23可用于存储二级表。位表存储单元123和位表缓存单元24可用于存储位映射表5。其中,位映射表5包括数据存储模块11的调用信息,例如包括被调用的数据存储模块11的编码信息,并可以具体到数据存储模块11中每个存储单元的对应编码,从而存储能够反映每个存储单元二级映射表3位置信息的数据。日志表存储单元124可用于存储数据存储模块11的调用信息。
42.请参阅图1至图3所示,本发明提供了一种存储器的控制方法,所述控制方法基于存储器100。其中,所述控制方法包括步骤s10。
43.步骤s10、将数据写入存储器的数据存储模块,并根据数据存储模块的调用顺序和块编码,在存储器的闪存区建立块使用日志表。
44.请参阅图1至图4所示,在本发明一实施例中,将数据写入存储器100时,数据被存储在闪存区1中,具体的,存储在闪存区1的数据存储模块11中。在本实施例中,数据存储模块11可以是物理区块(block),闪存区1包括多个数据存储模块11(图中未显示)。其中,数据存储模块11包括多个数据存储页111,其中数据存储页111可以是物理页面(page)。在本实施例中,数据存储模块11的大小可以是例如128kb,数据存储页111的大小可以是例如32kb。其中,数据存储页111包括多个存储单元,且每个存储单元可以是例如4kb。在步骤s10中,将数据写入数据存储模块11中。其中,多个数据存储模块11中,数据被随机写入其中一个或多个数据存储模块11中。多个数据存储模块11具有位移的块编码,以区分不同的物理区块。多个数据存储页111也具有唯一的页编码。在数据存储模块11中,用户数据按顺序被写入数据存储页111中,并且按顺序写入数据存储页111的存储单元中,填满当前的数据存储页111后,再按照数据存储页111的编码顺序写下一页。
45.请参阅图2至图5和图14所示,在本发明一实施例中,在调用数据存储模块11时,记录被调用的数据存储模块11的块编码,并记录当前数据写入过程中多个数据存储模块11的调用顺序,形成块使用日志表6。其中,块使用日志表6包括多个日志信息。每条日志信息包括调用的数据存储模块11的块编码、调用顺序和调用时间等等。在本实施例中,在建立块使用日志表6时,块使用日志表6的日志信息被存储在缓存区2。每重新分配一个新的数据存储模块11时,将缓存区2的块使用日志表6转移至闪存区1中,具体的,转移至日志表存储单元124中。每重新分配一个新的数据存储模块11时,将转移一次块使用日志表6,以预防异常掉电等问题的发生。在用户数据写入数据存储模块11后,具有物理地址,因此在用户数据的逻辑地址和物理地址之间建立映射关系,获得用户数据的地址映射信息。本发明还包括步骤s20。
46.步骤s20、在存储器的缓存区建立一级映射表和二级映射表,其中二级映射表包括被写入数据的地址映射信息,一级映射表包括二级映射表的地址映射信息。
47.请参阅图1至图3所示,在本发明一实施例中,在步骤s20中,在缓存区2建立二级映
射表3,其中,二级映射表3包括被写入数据的地址映射信息。其中,缓存区2的二级映射表3可以存储例如1~3个数据存储模块11的地址映射信息。具体的,缓存区2可以存储例如2个数据存储模块11的地址映射信息。在本实施例中,在二级表缓存单元23中,二级映射表3内包括多条二级表映射信息。其中,每条二级表映射信息对应数据存储页111中一个存储单元的地址映射信息。在步骤s20中,缓存区2有多个缓存单元,二级表缓存单元23可以是缓存区2中任一预设体量的缓存单元的集合,而不是确定物理地址的缓存位置,以适应存储器100的数据频繁读写和编辑。
48.请参阅图1至图3所示,在本发明一实施例中,在步骤s20中,二级映射表3中的每个映射信息在被建立完成后,也具有对应物理地址和逻辑地址。因此在步骤s20中,建立一级映射表4以记录二级映射表3的地址映射信息。因此,用户数据、二级表映射信息和一级表映射信息具有对应关系。在调用用户数据时,主机200先从一级映射表4中找到对应的二级表映射信息,再从二级表映射信息中找到用户数据逻辑地址对应的物理地址,从而根据物理地址从数据存储模块11中找到对应的用户数据。其中,一级映射表4被存储在一级表缓存单元22中。为保证能准确找一级映射表4,一级表缓存单元22可以是缓存区2中预设位置的缓存单元的集合。即,一级表缓存单元22的物理地址是固定的。不论是一级表缓存单元22还是二级表缓存单元21,当存储器100发生异常状态,例如发生异常掉电,一级映射表4和二级映射表3就会随之丢失。因此本发明还包括步骤s30和步骤s40。
49.步骤s30、根据被调用的数据存储模块,在缓存区建立位映射表,位映射表包括与被调用的数据存储模块对应的二级映射表的位置信息。
50.请参阅图1至图3以及图5所示,在本发明一实施例中,在步骤s30中,在数据写入闪存区1时,需要调用数据存储模块11去存储写入的数据。在本实施例中,在缓存区2建立位映射表5。其中,位映射表5包括被调用数据存储模块11的编码信息、与被调用的数据存储模块11中存储单元对应的多个比特数据,以及位映射表5的起始位置和结束位置。如图4所示,在本实施例中,位映射表5包括例如64个比特数据。其中,每个比特数据可以是例如1和例如0。且每个比特数据对应着数据存储页111中的一个存储单元。在本实施例中,存储单元可以是例如4kb。则1个比特数据对应例如4kb的存储单元,因此位映射表5可以是例如8byte。在本实施例中,位映射表5中可以存储例如2个数据存储模块11的数据信息。其中,用户数据、存储单元、存储单元对应的比特数据以及用户数据对应的二级映射表3之间是相互对应的,并可形成数据查询恢复的索引链。
51.请参阅图1至图3以及图5和图6所示,在本发明一实施例中,在位映射表5中,每个比特数据可以是缓存标记数值,也可以是闪存标记数值。其中,当位映射表5中某一比特数据为闪存标记数值,则表示着这一比特数据所对应的存储单元的二级表映射信息是处于闪存区1中的。当位映射表5中某一比特数据为缓存标记数值,则表示着这一比特数据所对应的二级映射信息或二级映射表3是处于缓存区2中的。在本实施例中,缓存标记数值例如为1,闪存标记数据例如为0。在本实施例中,步骤s30包括步骤s301至步骤s304。
52.步骤s301、当闪存区调用了新的数据存储模块,获取新的数据存储模块的编码信息。
53.步骤s302、在缓存区建立与新的数据存储模块对应的位映射表,并记录所管理的数据存储模块的编码信息。
54.步骤s303、在建立的位映射表中,根据位映射表所管理块的第一个存储单元设置起始标志,根据位映射表所管理块的最后一个存储单元设置终止标志。
55.步骤s304、根据存储单元对应的二级映射表的存储位置,设置位映射表中比特数据的数值。
56.请参阅图1至图3以及图5至图7所示,在本发明一实施例中,在步骤s301中,在存储器100中,每个数据存储模块11都具有唯一的编码信息,可用于区分不同的数据存储模块11。在本实施例中,每调用新的数据存储模块11,获取新调用的数据存储模块11的编码信息。在步骤s302中,在缓存区2中建立与被调用的数据存储模块11对应的位映射表5,其中,确保每个数据存储模块11的存储单元在位映射表5中都有对应的比特数据。如图5所示,位映射表5例如可以管理2个数据存储模块11,且例如为数据存储模块h2和数据存储模块h7。在位映射表5中,每个数据存储模块11包括例如32个比特数据。每个比特数据对应数据存储模块11中的一个存储单元。其中,存储单元和比特数据为一一对应关系。在步骤s303中,在位映射表5中设置起始标志51和终止标志52。在本实施例中,图5例如为刚建立位映射表5,还未设置比特数据时的位映射表5的示意图。此时,在第1行第1个表单位设置起始标志51和终止标志52。若是写入了例如3个存储单元对应的比特数据,则终止标志52可以设置在第1行第3个表单位。在本发明提供的存储方案中,为应对异常掉电等存储器异常状态的发生,每个存储单元对应的二级映射表3会被转移至闪存区1中。因此,在步骤s304中,可以根据存储单元的比特数据的数值来表明存储单元对应的二级映射表3是存储在闪存区1中还是存储在缓存区2中。具体的,步骤s304包括步骤s3041至步骤s3043。
57.步骤s3041、当存储单元对应的二级映射表被建立在缓存区中,将存储单元对应的比特数据设置为缓存标记数值。
58.步骤s3042、当存储单元对应的二级映射表被转移至闪存区中,将存储单元对应的比特数据设置为闪存标记数值。
59.步骤s3043、当用户数据对应的物理地址被更新,将旧的物理地址对应的存储单元的比特数据清空。
60.请参阅图1至图3以及图5至图8所示,在本发明一实施例中,在步骤s3041中,用户数据被写入数据存储模块11中时,被写入存储单元的二级映射表3被存储在缓存区2中。在本实施例中,在建立存储单元对应的二级映射表3或二级表映射信息后,如图8所示,例如调用了16个存储单元,此时位映射表5中前两行的比特数据被设置为缓存标记数值,例如1。而位映射表5中的其余表单位仍旧为默认数值。其中,比特数据的默认数值也可以是0。此时,终止标志52对应第2行第8个表单位设置。
61.请参阅图1至图3以及图9至图11所示,在本发明一实施例中,在步骤s3042中,在本发明提供的控制方法中,当缓存区2中提供给二级映射表3和位映射表5中的映射表存储余量不足,则将部分存储单元对应的二级映射表3转移至闪存区1中。此时,根据转移的二级映射表3更新位映射表5。如图9所示,此时位映射表5中比特数据已经调用至第6行第8个表单位,虚线框内的比特数据均已被设置为1,这部分表单位对应的存储单元的二级映射表3仍位于缓存区2中。当虚线框内对应的部分或全部存储单元的二级映射表3被转移至闪存区1中,首先虚线框内的部分或全部比特数据更新为闪存标记数值,如图10所示,例如前4行的比特数据被更新为0。再转移位映射表5的全部内容至闪存区1中,释放出位映射表5中的表
单位。如图11所示,此时数据存储模块h2对应的表单位空出,可在调用新的数据存储模块11时,例如数据存储模块h9时,用于建立与数据存储模块h9对应的位映射表5。在步骤s3043中,当数据被编辑后,用户数据的旧的物理地址失效,则对应新的物理地址更新位映射表5中的比特数据。而旧的物理地址对应的比特数据则被清空,具体的,恢复为默认数值,例如0。
62.步骤s40、设置下刷阈值,当缓存区的映射表存储余量小于下刷阈值时,将部分二级映射表转移至闪存区,并更新位映射表和一级映射表的映射信息。
63.请参阅图1至图3和图12所示,在本发明一实施例中,将数据写入数据存储模块11时,每个存储单元对应产生二级映射表3或二级映射表3中的二级映射信息。其中,映射表存储余量包括缓存区2分配给位映射表5和二级映射表3的存储余量。具体的,在当前数据的二级映射表3于缓存区2建立时,判断当前缓存区2分配给位映射表5和二级映射表3的存储余量是否不足。当分配给二级映射表3的存储余量不足,则将部分二级映射表3转移至闪存区1,以预防设备的突发异常情况。当分配给位映射表5的存储余量不足,则将缓存区2中的二级映射表3转移至闪存区1中,以预防位映射表5中的信息丢失。在将二级映射表3转移至闪存区1后,更新对应的一级映射表4和位映射表5。其中,步骤s40包括步骤s401至步骤s405。
64.步骤s401、依次获取被调用存储单元的二级表映射信息,并将二级表映射信息存储在缓存区的二级映射表中。
65.步骤s402、判断缓存区预留给二级映射表和位映射表的映射表存储余量是否小于下刷阈值,当任一所述映射表存储余量小于下刷阈值,则执行步骤s403,当二级映射表的存储余量大于等于下刷阈值,则返回步骤s401。
66.步骤s403、将二级映射表中的部分二级表映射信息转移至闪存区。
67.步骤s404、更新一级映射表和位映射表。
68.步骤s405、判断用户数据是否写完,当用户数据已被写完,则结束步骤s40,当用户数据未被写完,则返回步骤s401。
69.请参阅图1至图3和图12所示,在本发明一实施例中,在步骤s401中,依次获取被调用存储单元的二级表映射信息,并将二级表映射信息存储在缓存区2的二级映射表3中。其中,每建立一条二级表映射信息,则对应的执行一次步骤s402。在步骤s402中,判断缓存区2中预留给二级映射表3和位映射表5的存储余量。在本实施例中,步骤s402可以对二级表缓存单元23和位表缓存单元24的存储余量进行判断。其中,可以将下刷阈值设置为二级表缓存单元23大小的例如1/4~1/3,以及位表缓存单元24的例如1/4~1/3。在本实施例中,二级表缓存单元23例如可以存储2个数据存储模块11的二级表映射信息,下刷阈值可以设置为例如1/2个数据存储模块11的二级表映射信息。在本实施例中,在步骤s402中,分别对二级缓存单元23和位表缓存单元24进行存储余量的判断,任一存储余量小于下刷阈值,即可执行步骤s403。
70.请参阅图1至图3和图12所示,在本发明一实施例中,在步骤s403中,将缓存区2中的部分二级映射表3中转移至闪存区1中。在本实施例中,转移部分二级映射表3,可以优先转移写入顺序靠前的部分二级映射表3,以利于转移位映射表5的数据并设置位映射表5的起始标志51。在本发明的其他实施例中,也可以随机选取部分二级表映射表3转移至闪存区1中,刚写入的二级表映射信息也可以作为被转移的对象。其中,例如转移二级映射表3存储
总量的1/2的二级表映射信息至闪存区1中。当部分二级映射表3被转移后,一级映射表4的物理地址和逻辑地址的对应关系应发生改变,因此根据转移后二级映射表3的物理地址更新一级映射表4的一级表映射信息。当部分二级映射表3被转移后,位映射表5中,对应的存储单元的二级表映射信息可能被转移至闪存区1中。因此在步骤s404中,判断存储单元的二级表映射信息是否位于缓存区2,若是仍被存储在缓存区2中,则不更新存储单元对应的比特数据。若是被转移至闪存区1中,则将位映射表5中存储单元对应的比特数据数值更改为闪存标记数值。每写入一条二级表映射信息,则更新一级映射表4和位映射表5。每转移一条二级表映射信息,则更新一级映射表4和位映射表5。
71.请参阅图1至图3和图12所示,在本发明一实施例中,在步骤s402中,当缓存区2中预留给二级映射表3和位映射表5的映射表存储余量大于等于下刷阈值,则不用对二级映射表3执行下刷操作,返回步骤s401中,按照顺序获取下一个存储单元的二级表映射信息。在步骤s404中,更新一级映射表4和位映射表5后,执行步骤s405,判断用户数据是否写完。若是未写完,则返回步骤s401中,按照顺序获取下一个存储单元的二级表映射信息。为应对异常状态的发生,本发明所述存储器的控制方法还包括步骤s50。
72.步骤s50、将更新后的位映射表和一级映射表转移到闪存区中。
73.请参阅图1至图3以及图5和图12所示,在本发明一实施例中,在步骤s50中,每当二级映射表3被转移至闪存区1中,则执行步骤s50,将更新后的位映射表5和一级映射表4转移至闪存区1中。在本实施例中,在转移过程中,可以将一级映射表4转移至闪存区1中。其中,二级映射表3下刷至闪存区1后,更新一级映射表4和位映射表5,再转移一级映射表4和位映射表5。在本实施例中,转移一级映射表4时,保留缓存区2中一级映射表4中的映射信息,可以将转移至闪存区1中的一级映射表4用作备份。在位映射表5转移时,将位映射表5中的数据全部转移至闪存区1中,并更新位映射表5的起始标志51和终止标志52。
74.请参阅图1至图5和图14所示,在本发明一实施例中,当存储器100出现异常状态,例如发生异常掉电,则可以根据位映射表5和块使用日志表6对存储器100进行数据恢复。具体的,本发明所述存储器的控制方法包括步骤s60。
75.步骤s60、当存储器出现异常状态,根据位映射表和块使用日志表,读取闪存区的存储数据,将异常状态前位于缓存区的二级映射表恢复到缓存区中。
76.请参阅图1至图5和图14所示,在本发明一实施例中,在步骤s60中,当存储器100出现异常状态时,块使用日志表6记录了当前被调用的完整数据存储模块11,而位映射表5记录的可能是部分数据存储模块11,在异常状态发生时位于缓存区2的位映射表5所记录的比特数据很可能丢失,即不是最新的位映射表5。因此步骤s60包括步骤s601至步骤s604。
77.步骤s601、获取闪存区中的位映射表。
78.步骤s602、获取比特数据为缓存标记数值的存储单元,并在缓存区中重建对应存储单元的二级映射表。
79.步骤s603、对比位映射表和块使用日志表,获取块使用日志表中未被位映射表记录的遗漏数据存储模块。
80.步骤s604、读取遗漏数据存储模块,并在缓存区重建遗漏数据存储模块的二级映射表。
81.请参阅图1至图3和图13所示,在本发明一实施例中,出现异常状态后,以异常掉电
circuit,asic)。需要说明的是,上述的存储器100中的计算机程序可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质501中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
85.请参阅图17所示,本发明还提出一种计算机可读存储介质501,所述计算机可读存储介质501存储有计算机指令500,所述计算机指令500用于使所述计算机执行上述的存储器的控制方法。计算机可读存储介质501可以是,电子介质、磁介质、光介质、电磁介质、红外介质或半导体系统或传播介质。计算机可读存储介质501还可以包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(ram)、只读存储器(rom)、硬磁盘和光盘。光盘可以包括光盘-只读存储器(cd-rom)、光盘-读/写(cd-rw)和dvd。
86.以上公开的本发明实施例只是用于帮助阐述本发明。实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献