1.本发明涉及存储技术领域,特别涉及一种存储器及其控制方法与存储系统。
背景技术:2.当今在固态硬盘消费级市场,固态硬盘价格已经逐渐逼近传统机械硬盘的价格。为了更进一步的减小固态硬盘的成本,当前消费级固态硬盘已经逐渐由原来的外置动态随机存取存储器(dynamic random access memory,dram)的架构设计演变为不外置dram的架构设计。这样设计的好处是,整个固态硬盘可以节省掉一个甚至多个dram的价格,进而进一步降低固态硬盘成本。
3.闪存映射表是记录逻辑地址和物理地址间对应关系的映射表,可以用于管理写入逻辑地址的数据存在闪存的哪个物理位置。因此,闪存映射表的管理影响了存储器的读写性能。尤其在异常掉电的情况下,上电后如何恢复闪存映射表是亟待解决的一个问题。
技术实现要素:4.本发明的目的在于提供一种存储器及其控制方法与存储系统,在存储器发生异常掉电后,能快速且可控地恢复映射表中的所有映射关系。
5.为解决上述技术问题,本发明是通过以下技术方案实现的:
6.本发明提供一种存储器的控制方法,包括以下步骤:
7.对存储器写入数据,并根据被写入数据的逻辑地址和物理地址的映射关系,在所述存储器的缓存区形成动态映射表;
8.在所述存储器的闪存区建立一级映射表,并根据所述缓存区的存储余量是否充足,将部分所述动态映射表的地址映射信息转移至所述一级映射表中;
9.在所述缓存区中建立二级映射表,并将所述一级映射表的物理地址和逻辑地址的映射关系配对存储在所述二级映射表中;
10.根据所述二级映射表、所述动态映射表和所述闪存区中存储单元的有效数据数量,获取快照信息并将所述快照信息存储在所述缓存区中;
11.当所述二级映射表被更新时,将所述快照信息转移至所述闪存区;以及
12.当所述存储器出现异常状态,根据所述快照信息恢复所述存储器的数据。
13.在本发明一实施例中,形成所述一级映射表的步骤包括:
14.根据所述缓存区的动态缓存单元的数量,预设下刷阈值,其中所述动态缓存单元中存储所述动态映射表;以及
15.当所述动态缓存单元的数量小于所述下刷阈值,将部分所述动态映射表的地址映射信息转移至所述闪存区中,形成所述一级映射表。
16.在本发明一实施例中,形成所述一级映射表的步骤还包括:
17.当所述动态缓存单元的数量小于所述下刷阈值后,在所述缓存区设置下刷标志;
18.将所述被写入数据的所述动态映射表存储在所述动态缓存单元中;以及
19.根据所述下刷标志,将所述动态映射表的地址映射信息转移至所述闪存区,并形成所述一级映射表。
20.在本发明一实施例中,在形成所述一级映射表后,清除所述缓存区中信息被转移的所述动态映射表,并释放对应的所述动态缓存单元的存储空间。
21.在本发明一实施例中,获取所述有效数据个数的步骤包括:
22.在形成所述动态映射表时,根据所述动态映射表中的物理地址获取所述存储区对应的存储单元;以及
23.增加所述存储单元的有效数据的数量。
24.在本发明一实施例中,获取所述有效数据个数的步骤包括:
25.从所述闪存区读出存储数据时,保持所述存储数据对应的所述存储单元的有效数据数量不变;以及
26.当编辑所述存储数据时,若所述存储数据从第一存储单元被读出,且所述存储数据在被编辑后写入了第二存储单元,则增加所述第二存储单元的有效数据数量,并减少所述第一存储单元的有效数据数量,其中,所述第一存储单元和所述第二存储单元位于所述闪存区。
27.在本发明一实施例中,从所述存储单元读出数据的步骤包括:
28.当被读出数据的地址映射信息位于所述缓存区,根据所述动态映射表,获取所述被读出数据的物理地址;
29.当被读出数据的地址映射信息位于所述闪存区,根据所述二级映射表获取对应的所述一级映射表的物理地址;以及
30.根据所述一级映射表获取所述被读出数据的物理地址。
31.在本发明一实施例中,恢复所述存储器的数据的步骤包括:
32.将所述闪存区的所述快照信息转移至所述缓存区中的对应位置;以及当所述存储单元的有效数据的个数为零,释放所述存储单元的存储空间。
33.本发明提供了一种存储系统,包括:
34.动态映射表生成单元,用于对存储器的闪存区写入数据,并根据被写入数据的逻辑地址和物理地址的映射关系,形成动态映射表于所述存储器的缓存区;
35.一级映射表生成单元,用于在闪存区建立一级映射表,并根据缓存区的存储余量是否充足,将部分动态映射表的地址映射信息转移至一级映射表中;
36.二级映射表生成单元,用于根据所述一级映射表的物理地址和逻辑地址的映射关系,形成二级映射表并将所述二级映射表存储在所述缓存区中;
37.快照信息生成单元,用于根据所述闪存区中每个存储单元的有效数据个数、所述二级映射表、所述动态映射表和所述闪存区中存储单元的有效数据数量,获取快照信息并将所述快照信息存储在所述缓存区中;
38.快照信息转移单元,每当所述二级映射表被更新,将所述快照信息转移至所述闪存区;以及
39.上电数据恢复单元,当所述存储器发生异常掉电,根据所述快照信息恢复所述存储器的数据。
40.本发明提供了一种存储器,所述存储器上存储有计算机程序,所述计算机程序被
处理器执行时实现如上所述的存储器的控制方法。
41.如上所述,本发明提供了一种存储器及其控制方法与存储系统,能够有序地管理存储在读写数据时的被读写数据的地址映射信息,且当存储器发生异常掉电时,存储器能够快速且可控地恢复映射表中的所有映射关系,恢复过程快速,且数据没有遗漏。本发明提供的存储器的控制方法,能够提升数据在存储和调用修改后数据地址的准确性,避免因数据地址映射信息的缺失,造成数据被无效存储,既能提升存储器的有效存储空间,还能提升存储器在有效存储空间中的使用效率。本发明提供的存储器的控制方法,在异常掉电后对存储器进行上电恢复,可以快速且直接地将数据恢复在对应位置,上电后的数据恢复效率高。
42.当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
43.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
44.图1为存储器的结构示意图。
45.图2为本发明所述存储器的控制方法的流程图。
46.图3为步骤s10的流程图。
47.图4为步骤s20的流程图。
48.图5为步骤s40的流程图。
49.图6为步骤s41的流程图。
50.图7为数据的调取结构示意图。
51.图8为步骤s50的流程图。
52.图9为步骤s60的流程图。
53.图10为快照存储单元的结构示意图。
54.图11为本发明所述存储系统的结构示意图。
55.图中:1、存储器;2、主机;10、闪存区;11、数据存储单元;12、一级映射存储单元;13、快照存储单元;131、二级映射表存储模块;132、动态映射表存储模块;133、有效数据个数存储模块;20、缓存区;21、数据缓存单元;22、动态缓存单元;23、二级映射缓存单元;24、快照缓存单元;100、存储系统;101、动态映射表生成单元;102、一级映射表生成单元;103、二级映射表生成单元;104、快照信息生成单元;105、快照信息转移单元;106、上电数据恢复单元。
具体实施方式
56.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
57.存储设备可以用来存储程序和各种数据信息的记忆部件,与主机系统一起使用,可使主机系统将数据写入至存储设备中或是从存储设备中读取数据。以闪存作为存储介质的存储设备相较于传统的磁盘来讲,不具有重复覆写的特点。只有先对闪存进行擦除操作才能写入数据,且写入操作是按照物理页面(page)为单位进行,擦除操作以物理区块(block)为单位进行。因此主机系统写入指定逻辑地址的数据,并不是存放在闪存的固定位置。而在无外置dram,即dram-less的存储设备方案中,缓存资源比外置dram的存储设备方案更加有限。在异常掉电的情况下,dram-less的存储设备上电恢复能力有限。在dram-less的存储设备方案中预防异常掉电和上电恢复时,对存储资源的占用,会直接影响存储设备的性能。
58.请参阅图1所示,本发明提供了一种存储器1,存储器1可以与主机2电性连接,从而使主机2可以从存储器1中读出数据或写入数据。具体的,存储器1和主机2可以通过数据传输接口或是串行总线等方式电性连接。在本实施例中,存储器1可以是存储卡或固态硬盘(solid state drive,ssd)等非易失性存储设备。其中存储卡例如是嵌入式多媒体卡(embeddedmulti media card,emmc)。主机2为可实质地与存储器1配合以储存数据的任意设备。在本实施例中,主机2可以是计算机。在本发明的其他实施例中,主机2也可以是数字相机、摄影机、通信装置、音频播放器或视频播放器等设备。例如,在主机2为数字相机时,非易失性存储器储存装置则为其所使用的安全数码卡(secure digital memory card,sd卡)、多媒体卡(multi-media card,mmc卡)、cf卡或嵌入式储存装置。嵌入式储存装置例如为emmc卡,且嵌入式储存装置可以电性连接在主机2的基板上。
59.请参阅图1所示,在本发明一实施例中,存储器1包括闪存区10和缓存区20,闪存区10为非易失性存储装置,例如sm卡、cf卡、mmc卡、sd卡、记忆棒、xd卡和微硬盘等等。其中,闪存区10可以是nand闪存,也可以是nor闪存。缓存区20可以是一种高速缓冲存储装置,缓存区20电性连接于主机2,当主机2需要调取数据时,可以先从缓存区20中调取数据。当主机2需要调取的数据信息不能在缓存区20中直接寻求到时,再从闪存区10中调取所需的数据。
60.请参阅图1所示,在本发明一实施例中,闪存区10包括数据存储单元11、快照存储单元13和一级映射存储单元12。其中,闪存区10包括多个数据存储单元11(图中未示出)。闪存区10具有物理区块(block)。物理区块可属于同一个存储器晶粒(die)或者属于不同的存储器晶粒。物理区块具有多个物理页面(page)。在例如nand闪存中,多个晶体管组成的阵列形成了nand闪存。相邻的晶体管之间串行连接,形成串(string)。每个晶体管的控制极连接字线。按照每串晶体管的排列顺序,每串晶体管中处于末端的晶体管漏极来连接位线,处于首端的晶体管源极连接至源线。在本实施例中,位于同一字线上的晶体管是处于同一物理页面中的,而共处于同一衬底结构上的晶体管阵列是位于同一物理区块中的。其中属于同一个物理区块物理页面可被独立地写入且被同时地抹除。在应用存储器1时,每一物理区块和物理页面的物理地址可能存在偏移调用,因此需要存储逻辑地址和物理地址的映射关系,以便于根据调用的逻辑地址,找到对应的物理区块或是物理页面。
61.请参阅图1和图2所示,主机2每向存储器1内写入数据,被写入数据具有逻辑地址,也具有实际存储的物理地址,逻辑地址和物理地址之间的映射关系被存储在缓存区20中。缓存区20中的数据在发生异常掉电后就会出现丢失。因此本发明提供了一种存储器的控制方法,用于对存储器1中逻辑地址和物理地址之间映射关系进行管理。在对存储器1进行控
制管理前,可以对存储器1进行配置。
62.请参阅图1所示,在本发明一实施例中,存储器1包括闪存区10和缓存区20,且缓存区20和闪存区10之间可以通过接口或线束实现电性连接,以交换数据。其中,闪存区10包括数据存储单元11、一级映射存储单元12、快照存储单元13和一级映射存储单元12。其中闪存区10中的数据存储单元11有多个,且数据存储单元11为闪存区10的最小擦除单元,具体的,数据存储单元11可以是存储器1中的物理区块(block)。数据存储单元11中包括多个数据存储页面(page)。主机2向闪存区10写入数据时,数据被写入数据存储单元11中的数据存储页面。当闪存区10擦除数据时,整个数据存储单元11中全部数据存储页面的存储信息被同步地擦除。其中,快照存储单元13和一级映射存储单元12也可以是存储器1中的物理区块(block)。具体的,在存储器1中的多个物理区块中,根据物理地址划分出专门用于存放掉电恢复相关数据的物理区块,形成快照存储单元13和一级映射存储单元12。快照存储单元13、一级映射存储单元12和一级映射存储单元12的数量可以根据存储的数据量决定,在本发明中,不限定快照存储单元13和一级映射存储单元12的数量。
63.请参阅图1所示,在本发明一实施例中,缓存区20包括数据缓存单元21、动态缓存单元22、二级映射缓存单元23和快照缓存单元24。其中,数据缓存单元21用于存储可被主机2直接调用的缓存储信息。动态缓存单元22用于存储被写入数据的逻辑地址和物理地址的映射关系。其中被写入数据指的是主机2写入数据存储单元11中的主机数据。二级映射缓存单元23与一级映射缓存块14对应,用于存储一级映射缓存块14的逻辑地址和物理地址之间的映射关系。快照缓存单元24用于存储掉电恢复相关数据。
64.请参阅图1和图2所示,本发明提供了一种存储器的控制方法,且存储器的控制方法包括步骤s10。
65.步骤s10、对存储器写入数据,并根据被写入数据的逻辑地址和物理地址的映射关系,在存储器的缓存区形成动态映射表。
66.请参阅图1至图3所示,在本发明一实施例中,在步骤s10中,主机2对存储器1写入主机数据后,数据的逻辑地址和数据实际存储的物理地址是不同的,因此在被写入数据的物理地址和逻辑地址之间建立映射关系,并将映射关系记录和存储,以便于后续开发人员或使用人员等用逻辑地址调用出正确的数据。其中,主机数据可以存储在数据存储单元11。具体的,步骤s10包括步骤s11~步骤s14。
67.步骤s11、向数据存储单元内写入主机数据。
68.步骤s12、建立动态映射表,将主机数据的地址映射信息存储在动态映射表中。
69.步骤s13、申请空白的动态缓存单元,并将动态映射表存储在申请的动态缓存单元中。
70.步骤s14、判断缓存区中空白的动态缓存单元数量是否低于下刷阈值,若不低于下刷阈值,执行步骤30,若低于下刷阈值,执行步骤s20。
71.请参阅图1至图4所示,在本发明一实施例中,在步骤s11中,主机2对数据存储单元11写入主机数据。主机数据的逻辑地址和实际的物理地址之间是不一致的。因此在步骤s12中,写入主机数据后,将主机数据的逻辑地址和实际的物理地址对应,建立动态映射表。再于步骤s13中,将动态映射表存储在缓存区20中,以满足数据的频繁调用。具体的,将动态映射表存储在动态缓存单元22中。在步骤s14中,判断缓存区20中是否具有足够的动态缓存单
元22。具体的,根据动态缓存单元22的数量设置下刷阈值。在本实施例中,下刷阈值例如为动态缓存单元22总数的例如1/5~1/4。具体的,缓存区20中,动态缓存单元22的总数为例如2000个,则可以将下刷阈值设置为例如400个。当动态缓存单元22的数量小于等于例如400个时,则认为当前的动态缓存单元22存储空间不足,在当前的动态映射表存储完成后,执行步骤s20,清理出足够使用的动态缓存空间,以保证数据的地址地址映射信息不会丢失,能够被完整储存。当动态缓存单元22的数量大于例如400个时,则认为当前的动态缓存单元22存储空间充足,执行步骤s30。其中,在执行步骤s20前,可以在缓存区20设置下刷标志,先将被写入数据的动态映射表存储完整,再进行部分动态映射表中地址映射信息的转移,形成一级映射表。从而保证当前的被写入数据的相关信息是被完整存储的。具体的,本发明所述存储器的控制方法包括步骤s20。
72.步骤s20、在闪存区建立一级映射表,并根据缓存区的存储余量是否充足,将部分动态映射表的地址映射信息转移至一级映射表中。
73.请参阅图1和图4所示,在本发明一实施例中,在步骤s12和步骤s13中,当动态缓存单元22的数量小于等于下刷阈值时,则认为当前的动态缓存单元22对应的存储空间不足。先为当前被写入的主机数据对应的动态映射表申请空白的动态缓存单元22,再判断是否要将动态映射表中的信息进行转移。在本实施例中,主机2每向存储器1写入一次主机数据,就建立一次动态映射表。因此缓存区20中设置专门用于存储动态映射表的动态缓存单元22,以区分动态映射表和其余缓存数据。当动态缓存单元22的存储余量不足时,执行步骤s20,根据部分动态映射表的地址映射信息,形成一级映射表并将一级映射表存储在闪存区10中。在当前的动态映射表存储进动态缓存单元22后,认为动态缓存单元22的存储余量已经不足,因此随机释放部分动态缓存单元22的存储空间。具体的,步骤s20包括步骤s21~步骤s30。
74.步骤s21、在一级映射存储单元中建立多个一级映射表。
75.步骤s22、随机选取部分动态缓存单元,并获取动态缓存单元中动态映射表的地址映射信息。
76.步骤s23、将动态映射表中的地址映射信息转移至一级映射表中,并清除对应的动态映射表。
77.步骤s24、空白的动态缓存单元的数量是否低于下刷阈值。
78.请参阅图1和图4所示,在本发明一实施例中,一级映射存储单元12可以是闪存区10的物理区块,在步骤s21中,在一级映射存储单元12中设置多个空白的一级映射表。再于步骤s22中,从已经被写的动态缓存单元22中选取部分动态缓存单元22,预备释放。其中,当前写入的主机数据对应的动态缓存单元22也可以被选中用于释放。在步骤s23中,对于被选中预备释放的动态缓存单元22,将动态缓存单元22中动态映射表的地址映射信息转移至一级映射单元14的一级映射表中存储。动态映射表的地址映射信息被转移后,可以对动态映射表进行清除,以便于下一次动态映射表的建立。其中,动态映射表可以包括主机数据的逻辑地址和主机数据的物理地址,以及主机数据写入的时间等等。
79.请参阅图1和图4所示,在本发明一实施例中,在步骤s22和步骤s23中,主机数据的大小不同,动态映射表所占用的动态缓存单元22的个数也不同,因此在将地址映射信息从缓存区20转移至闪存区10中时,以每个主机数据对应的动态映射表为最小释放单位,释放
动态缓存单元22。例如,两类主机数据的体量为例如16kb和例如256kb。而闪存区10中,一个数据存储页面的大小为例如8kb,一个数据存储单元11的大小为例如32kb。则16kb的主机数据可以使用两个数据存储页面,其逻辑地址和物理地址的映射关系可以建立例如2个动态映射表,而例如2个动态映射表可以占据例如2个动态缓存单元22。在释放动态缓存单元22时,应同时选中这2个动态缓存单元22。同理,例如256kb的主机数据可以存储在例如8个数据存储单元11中,其逻辑地址和物理地址的映射关系可以建立例如16个动态映射表,而例如16个动态映射表可以占据例如16个动态缓存单元22。在释放动态缓存单元22时,也应同时选中这16个动态缓存单元22。
80.请参阅图1和图4所示,在本发明一实施例中,在步骤s22和步骤s23中,释放动态缓存单元22可以随机选取,在本发明的其他实施例中,也可以根据已写入主机数据所占用动态映射表的数量,从小到大依次释放动态缓存单元22。其中,释放的部分动态缓存单元22以下刷阈值为基准。具体的,在步骤s24中,每释放部分动态缓存单元22,判断空白的动态缓存单元22的数量是否低于下刷阈值。若是空白的动态缓存单元22的数量仍旧小于下刷阈值,则继续释放动态缓存单元22。若是空白的动态缓存单元22的数量大于等于下刷阈值,则认为当前已具有足够存储空间的动态缓存单元22,停止释放动态缓存单元22。并在步骤s30中,在一级映射表的逻辑地址和物理地址间建立映射关系,并根据这种映射关系,在二级映射缓存单元23建立二级映射表。具体的,本发明所述存储器的控制方法包括步骤s30。
81.步骤s30、在缓存区中建立二级映射表,并将一级映射表的物理地址和逻辑地址的映射关系配对存储在二级映射表中。
82.请参阅图1、图4和图5所示,在本发明一实施例中,在步骤s30中,当被调用数据的地址映射信息在缓存区20时,主机2可根据动态缓存单元22中的动态映射表直接调取对应数据的地址映射信息,再根据地址映射信息的物理地址从数据存储单元11中调取出所需数据。当被调用数据的地址映射信息在闪存区10时,先从二级映射缓存单元23中找到二级映射表,再根据二级映射表中的地址映射信息,在一级映射存储单元12中找出一级映射表。根据一级映射表调取对应数据的地址映射信息,根据地址映射信息的物理地址从数据存储单元11中调取出所需数据。如图5所示,在本实施例中,动态缓存单元22可以存储例如n个动态映射表,一级映射存储单元12可以存储例如n个一级映射表。其中,n为大于等于1的自然数,本发明不限定n的具体数值。
83.请参阅图1、图2和图5所示,在本发明一实施例中,一级映射表位于闪存区10中,能够在异常掉电的情况下不被丢失。而二级映射表和动态映射表存储在缓存区20中,当发生异常掉电,上电后二级映射表和动态映射表是难以被恢复的。因此,本发明所述存储器的控制方法包括步骤s40。且步骤s40包括步骤s41和步骤s42。
84.步骤s40、根据二级映射表、动态映射表和闪存区中存储单元的有效数据数量,获取快照信息并将快照信息存储在缓存区中。
85.步骤s41、获取闪存区中每个数据存储单元的有效数据个数,并存储在快照缓存单元中。
86.步骤s42、获取二级映射表、动态映射表中的地址映射信息,并存储在快照缓存单元中。
87.请参阅图1、图2和图5所示,在本发明一实施例中,在步骤s41中,根据已记录的地
址映射信息确认闪存区10中每个存储单元的有效数据个数。具体的,根据动态映射表和一级映射表中的逻辑地址和物理地址的映射关系,找到物理地址对应的数据存储单元11。每找到数据存储单元11一次,就在对应的数据存储单元11下计数一次。遍历动态映射表和一级映射表后,将每个数据存储单元11的有效数据个数计数且记录,以便于断电后恢复数据时,对恢复数据进行校对和处理。其中,当已经存储在数据存储单元11中的数据被调出时,根据被调出的物理地址或逻辑地址,从一级映射存储单元12和动态缓存单元22中找到与被调出数据对应的一级映射表或动态映射表。再根据被调出数据的更改,调整一级映射表、动态映射表和二级映射表。具体的,步骤s41包括步骤s411~步骤s416。
88.步骤s411、修改被调出数据后,再次将被调出数据写入闪存区。
89.步骤s412、被调出数据更改后的大小是否发生变化。
90.步骤s413、读出被调出数据对应的一级映射表或动态映射表,并修改被调出数据的逻辑地址对应的物理地址。
91.步骤s414、将一级映射表或动态映射表存储至原先的存储位置。
92.步骤s415、清除一级映射表或动态映射表中与被调出数据对应的映射关系配对。
93.请参阅图1和图2,以及图5和图6所示,在本发明一实施例中,在步骤s411中,主机2处理好被调出数据后,将被调出数据重新存入数据存储单元11中。在步骤s412中,当被调出数据在主机2处理后,并没有发生数据大小的改变,则存储进数据存储单元11的占用空间也是一致的。因此为减少存储器1的工作负担,在步骤s413中,在原动态映射表或原一级映射表的基础上修改被调出数据逻辑地址对应的物理地址。在步骤s414中,将被修改后的一级映射表和动态映射表重新存储在原先的存储位置,并对应修改快照信息。在步骤s412中,当被调出数据在主机2处理后,数据大小发生改变,则存储进数据存储单元11的占用空间大可能出现改变。因此,在步骤s415中,将被调出数据对应的一级映射表中的映射关系配对删除,或是删除被调出数据对应的动态映射表。以重新写入被调出数据,即返回步骤s10,执行步骤s10至步骤s40。其中,当数据从数据存储单元11中被调出,则对应的数据存储单元11的有效数据的个数减去1。
94.请参阅图1和图2所示,在本发明一实施例中,本发明所述存储器的控制方法包括步骤s50。
95.步骤s50、当二级映射表被更新时,将快照信息转移至闪存区。
96.请参阅图1和图2,以及图7和图8所示,在本发明一实施例中,在步骤s20中,当部分动态缓存单元22被释放,则会伴随着部分地址映射信息从缓存区20被转移至闪存区10中,以及缓存区20中二级映射表的更新。在本实施例中,二级映射表中的逻辑地址和物理地址的映射关系可以按照建立顺序排列。在本发明中,步骤50包括步骤s51~步骤s54。
97.步骤s51、判断二级映射表中的地址映射信息是否被更新,若二级映射表中的地址映射信息被更新,则执行步骤s52和步骤s53,若二级映射表中的地址映射信息未被更新,则执行步骤s53。
98.步骤s52、将快照缓存单元中的快照信息转移至快照存储单元中。
99.步骤s53、清除快照缓存单元中的快照信息。
100.请参阅图1和图2,以及图7和图8所示,在本发明一实施例中,二级映射表中例如有n条逻辑地址和物理地址的映射关系配对。其中n为大于等于1的自然数。在本实施例中,每
个一级映射表可以存储单条地址映射信息,也可以存储多条地址映射信息。每当部分动态缓存单元22动态映射表被释放,一级映射存储单元13中的一级映射表就会增加。而随着一级映射表的地址映射信息的增加,二级映射表也会被更新。因此在步骤s51中,判断二级映射表中的地址映射信息是否被更新。其中,二级映射表的更新可以是地址映射信息的增加和删减,也可以是地址映射信息的更改。在步骤s52中,当二级映射表被更新,就将缓存区20中的快照信息转移至快闪存区10中存储。具体的,将快照信息从快照缓存单元24转移至快照存储单元13中存储。在步骤s53中,将已被转移的快照信息清除,以便于下一批快照信息的存储。其中,当前被写入的主机数据对应的地址映射信息,可以是存储在动态缓存表中,也可以是存储在动态缓存表后被转移至一级映射表中。并且,若当前的主机数据写入后,发生二级映射表的更新。当前主机数据的地址映射信息可以是存储动态缓存表中,也可以是存储在一级映射表中。每当快照信息转移至闪存区10时,当前被写入的主机数据的地址映射信息也会被转移至闪存区10中。若此时发生掉电,最新写入的数据信息也能在上电后被完整恢复。
101.请参阅图1和图2所示,在本发明一实施例中,当存储器1发生异常掉电,再次上电后,对存储器1中的数据信息要进行恢复。存储在数据存储单元11中的数据具有不易失特性,在上电后还能够被找回。但存储在缓存区20中的存储数据则会随着掉电完全丢失,难以找回。因此,本发明所述存储器的控制方法包括步骤s60。
102.步骤s60、当存储器出现异常状态,根据快照信息恢复存储器的数据。
103.请参阅图1、图2和图9所示,在本发明一实施例中,在步骤s60中,当存储器1出现异常状态,例如发生异常掉电后,需要恢复存储器1内存储的数据,并恢复缓存区20中的部分数据,以便于主机2进行数据调取。具体的,步骤s60包括步骤s61~步骤s63。
104.步骤s61、在闪存区中查找最新的快照信息。
105.步骤s62、将快照信息中的内容转移到缓存区的相应位置。
106.步骤s63、根据快照信息中各存储单元的有效数据个数,释放存储单元的空间。
107.请参阅图1和图2以及图9和图10所示,在本发明一实施例中,在对存储器1重新上电后,在步骤s61中,在闪存区10的快照存储单元13中找出更新时间最近的快照信息。其中,关于快照信息的存储,快照信息被存储在存储器1的固定物理地址,快照存储单元13可以是地址固定的,以便于上电时被准确调取。具体的,快照存储单元13包括二级映射表存储模块131、动态映射表存储模块132和有效数据个数存储模块133。二级映射表存储在二级映射表存储模块131中,动态映射表存储在动态映射表存储模块132中,各数据存储单元11中的有效数据个数可以存储在有效数据个数存储模块133中。关于快照信息的更新,下一批快照信息被转移至快照存储单元13中,与上一批快照信息按转移的顺序排列存储在快照存储单元13中。
108.请参阅图1和图2以及图9和图10所示,在本发明一实施例中,在步骤s62中,将快照信息中的内容转移至缓存区20的相应位置。具体的,将二级映射表存储模块131的数据转移至二级映射缓存单元23,将动态映射表存储模块132中的数据转移至动态缓存单元22。其中,从有效数据个数存储模块133提取出各个存储单元的有效数据个数。在步骤s63中,在恢复缓存区20的数据后,将有效数据个数为0的数据存储单元11释放,以消除无效数据,提升存储器1的读写性能。
109.请参阅图1、图2和图9所示,在本发明一实施例中,在上电恢复存储器1后,可以清除快照存储单元13中的存储信息,以释放存储器1的存储空间,提升存储器1的读写性能。在本发明的其他实施例中,也可以保留快照存储单元13中的存储信息,继续执行步骤s10至步骤s50。在不同掉电周期的快照信息,可以由下一周期的快照信息覆盖上一周期的快照信息,以应付上电恢复还未完成时的连续掉电。在同一掉电周期中的快照信息,按照快照信息转移至闪存区10的时间顺序排列存储。
110.请参阅图1和图11所示,本发明还提供了一种存储系统100,存储系统100可以是一种基于闪存的数据存储设备。例如ssd、嵌入式ssd(essd)、通用闪速存储器(ufs)、mmc、嵌入式mmc(emmc)或受管理的nand,但是本发明构思不限于这些示例。存储系统100可以包括如本发明所述的一种存储器1,且能执行如本发明所述的一种存储器的控制方法。具体的,存储系统100包括动态映射表生成单元101、一级映射表生成单元102、二级映射表生成单元103、快照信息生成单元104、快照信息转移单元105和上电数据恢复单元106。其中,动态映射表生成单元101可以对存储器1的闪存区10写入数据,并根据被写入数据的逻辑地址和物理地址的映射关系,形成动态映射表于存储器1的缓存区20。一级映射表生成单元102可以根据部分动态映射表的地址映射信息,形成一级映射表并将一级映射表存储在闪存区10中。二级映射表生成单元103可以根据一级映射表的物理地址和逻辑地址的映射关系,形成二级映射表并将二级映射表存储在缓存区20中。快照信息生成单元104可以根据闪存区10中每个存储单元的有效数据个数、二级映射表和动态映射表,形成快照信息。快照信息转移单元105可以在二级映射表被更新时,将快照信息从缓存区20转移至闪存区10。上电数据恢复单元106可以在存储器1出现异常状态,例如发生异常掉电时,根据快照信息恢复存储器1的数据。其中,存储系统100可以以主机2电性连接,以实现数据交换。
111.本发明提供了一种存储器及其控制方法、存储系统,能够在主机对存储器的闪存区写入数据时,对被写入数据的逻辑地址和物理地址的映射关系进行管理,并具有应对异常掉电后的上电数据恢复能力。具体的,存储器的闪存区被写入数据后,根据被写入数据的逻辑地址和物理地址的映射关系,形成动态映射表,并将动态映射表存储在存储器的缓存区中。再根据当前缓存区空白的动态缓存单元的存储空间是否足够,判断是否将部分动态映射表的信息转移至闪存区中。具体的,若当前缓存区空白的动态缓存单元的存储空间不足,在闪存区中建立一级映射表,并将部分动态映射表中的地址映射信息转移至一级映射表中,并释放对应动态缓存单元的存储空间。再根据建立的一级映射表的逻辑地址和物理地址的映射关系,在缓存区中建立二级映射表。完成当前被写入数据的存储后,获取闪存区中每个存储单元的有效数据个数,再根据闪存区中每个存储单元的有效数据个数、二级映射表和动态映射表,形成快照信息。快照信息被存储在缓存区中,每当二级映射表被更新,将快照信息转移至闪存区。当存储器发生异常掉电,可以根据快照信息恢复存储器的数据。
112.以上公开的本发明实施例只是用于帮助阐述本发明。实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。