非易失性存储器的管理方法和装置制造方法

文档序号:6620813阅读:137来源:国知局
非易失性存储器的管理方法和装置制造方法
【专利摘要】本发明涉及一种非易失性存储器的管理方法和装置。该非易失性存储器包括复数个物理页,物理页划分为数据页和空闲页,每个物理页包括页头和数据区,该方法包括:通过扫描全部物理页的页头信息在内存中建立数据页查找表和空闲页查找表,设置一个指向空闲页查找表中的一个物理页号的空闲页指针;当进行目标数据页的写操作时,根据空闲页查找表,对空闲页指针指向的物理页号对应的物理页依次进行擦除操作和写操作,将数据页查找表中目标数据页的物理页号与空闲页查找表中空闲页指针指向的空闲页的物理页号互换,配置空闲页指针指向空闲页查找表的另外一个物理页号。本发明可以提高写数据的效率,提高NVM的寿命。
【专利说明】非易失性存储器的管理方法和装置

【技术领域】
[0001] 本发明涉及存储器领域,尤其涉及一种非易失性存储器的管理方法和装置。

【背景技术】
[0002] 在社会高速发展的今天,非易失性存储器(Nonvolatile memory,简称:NVM) 的使用已经随处可见,并跟生活息息相关,常见的NVM有电可擦可编程只读存储器 (Electrically Erasable Programmable Read-Only Memory,简称:EEPR0M)和闪存(Flash Memory,简称:FLASH)。比如,公交、社保、银行、电力、身份识别等各个领域都用到的智能卡 都广泛使用了 NVM。因此,保证NVM中数据高效安全存储就显得尤为重要。智能卡在工作过 程中,如果发生断电或其他不可预知的错误,导致智能卡擦除或者写入数据过程异常终止, 将会使写入数据不正确,这样就严重威胁数据完整性和安全性。因此需要有一种解决方案 来完成数据的断电保护问题。
[0003] 当前,解决断电保护问题一般是采用备份区来完成,S卩,在存储区申请一块备份 区,用户更新数据的流程如下:
[0004] 步骤1、擦除备份区;
[0005] 步骤2、写旧数据到备份区;
[0006] 步骤3、写备份区标识;
[0007] 步骤4、擦除原数据区;
[0008] 步骤5、写新数据到原数据区;
[0009] 步骤6、写备份区清空标识。
[0010] 通过上述这种方法来完成数据安全写入,这样,可以保证数据要么就全部写对,要 么就没有写数据,不会出现其他情况,从而保证了数据的完整性。但是利用这种方法,安全 更新一次数据需要写4次和擦两次,导致写数据的效率较低。而且,每写一次数据就需要写 一次备份区和擦一次备份区,擦写备份区的次数就会很多,将大大减少NVM的寿命。


【发明内容】

[0011] 本发明提供一种非易失性存储器的管理方法和装置,用以实现提高写数据的效 率,提1? NVM的寿命。
[0012] 本发明提供一种非易失性存储器的管理方法,所述非易失性存储器包括复数个物 理页,所述物理页划分为数据页和空闲页,每个物理页包括页头和数据区,所述方法包括:
[0013] 通过扫描全部物理页的页头信息在内存中建立数据页查找表和空闲页查找表,其 中,所述数据页查找表用于建立从所述数据页的逻辑页号到所述数据页的物理页号的映 射,所述空闲页查找表用于存储所述空闲页的物理页号,设置一个指向所述空闲页查找表 中的一个物理页号的空闲页指针;
[0014] 当进行目标数据页的写操作时,根据所述空闲页查找表,对所述空闲页指针指向 的物理页号对应的物理页依次进行擦除操作和写操作,将所述数据页查找表中所述目标数 据页的物理页号与所述空闲页查找表中所述空闲页指针指向的空闲页的物理页号互换,配 置所述空闲页指针指向所述空闲页查找表的另外一个物理页号。
[0015] 本发明还提供一种非易失性存储器的管理装置,所述非易失性存储器包括复数个 物理页,所述物理页划分为数据页和空闲页,每个物理页包括页头和数据区,所述装置包 括:
[0016] 查找表建立模块,用于通过扫描全部物理页的页头信息,在内存中建立数据页查 找表和空闲页查找表,其中,所述数据页查找表用于建立从所述数据页的逻辑页号到所述 数据页的物理页号的映射,所述空闲页查找表用于存储所述空闲页的物理页号;
[0017] 指针设置模块,用于设置一个指向所述空闲页查找表中的一个物理页号的空闲页 指针;
[0018] 第一数据写模块,用于当进行目标数据页的写操作时,根据所述空闲页查找表,对 所述空闲页指针指向的物理页号对应的物理页依次进行擦除操作和写操作,将所述数据页 查找表中所述目标数据页的物理页号与所述空闲页查找表中所述空闲页指针指向的空闲 页的物理页号互换,配置所述空闲页指针指向所述空闲页查找表的另外一个物理页号。
[0019] 在本发明中,执行一次写操作只需要对NVM先后进行一次页擦除操作和一次页写 操作,相对于现有技术中执行一次写操作需要对NVM写4次和擦两次,极大地节省了操作时 间,提高了写数据的效率。由于对NVM的操作次数减少了,提高了 NVM的寿命。

【专利附图】

【附图说明】
[0020] 图1为本发明NVM的管理方法实施例的流程示意图;
[0021] 图2为本发明NVM的管理方法实施例中一个写数据实例的原理示意图;
[0022] 图3为本发明非易失性存储器的管理装置实施例的结构示意图。

【具体实施方式】
[0023] 下面结合说明书附图和【具体实施方式】对本发明作进一步的描述。
[0024] NVM的管理方法第一实施例
[0025] 在本实施例中,该NVM包括复数个物理页,复数个物理页划分为数据页和空闲页, 每个物理页包括页头和数据区。
[0026] 如图1所示,为本发明NVM的管理方法实施例的流程示意图,该方法可以包括如下 步骤:
[0027] 步骤11、通过扫描全部物理页的页头信息在内存中建立数据页查找表和空闲页查 找表;
[0028] 其中,数据页查找表用于建立从数据页的逻辑页号到数据页的物理页号的映射, 空闲页查找表用于存储空闲页的物理页号;可选地,该步骤可以在系统上电时执行;内存 为易失性存储器;需要说明的是,该空闲页可以为写有旧数据的物理页,也可以为空白的物 理页。
[0029] 步骤12、设置一个指向空闲页查找表中的一个物理页号的空闲页指针;
[0030] 步骤13、当进行目标数据页的写操作时,根据空闲页查找表,对空闲页指针指向的 物理页号对应的物理页依次进行擦除操作和写操作,将数据页查找表中目标数据页的物理 页号与空闲页查找表中空闲页指针指向的空闲页的物理页号互换,配置空闲页指针指向空 闲页查找表的另外一个物理页号。
[0031] 在步骤13中,写操作的输入为目标数据页的逻辑页号。写数据时,根据空闲页指 针查找空闲页查找表得到空闲页的物理页号,计算页头,然后根据空闲页的物理页号在NVM 中找到空闲页,先将空闲页中的数据擦除,再将数据和页头写入空闲页中。
[0032] 在步骤13中,在内存中查找空闲页查找表和数据页查找表所花费的时间相对于 在NVM中写数据和擦数据所花费的时间可以忽略不计。
[0033] 在本实施例中,执行一次写操作只需要对NVM先后进行一次页擦除操作和一次页 写操作,相对于现有技术中执行一次写操作需要对NVM写4次和擦两次,极大地节省了操作 时间,提高了写数据的效率。由于对NVM的操作次数减少了,提高了 NVM的寿命。
[0034] 可选地,在步骤11中,数据页查找表的索引是数据页的逻辑页号,在数据页查找 表中存放了与该逻辑页号对应的数据页的物理页号。
[0035] 进一步地,在步骤11中,当执行建立数据页查找表和空闲页查找表时,根据页头 信息判定上次写操作非正常结束时,执行异常处理程序。进一步地,异常处理程序可以包括 如下两种情况:情况1、根据页头信息判定在擦除操作的过程中或者在写操作的过程中掉 电,则将擦除了部分数据的物理页或写入了部分数据的物理页作为空闲页,然后将该空闲 页的物理页号存储到空闲页查找表中,从而保证数据的完整性。
[0036] 情况2、根据页头信息判定在写操作之后掉电,则将保存有新数据的物理页作为数 据页,在数据页查找表中建立该数据页的逻辑页号到该数据页的物理页号的映射,将保存 有旧数据的物理页作为空闲页,将该空闲页的物理页号存储到空闲页查找表中。
[0037] 可选地,在步骤11中,扫描NVM的全部物理页的页头信息时,可以采用顺序扫描的 方式读取全部物理页的页头信息或者采用随机无序扫描的方式读取全部物理页的页头信 息。当采用顺序扫描的方式读取全部物理页的页头信息时,得到的空闲页查找表总是按照 一个固定次序把空闲页的物理页号填入查找表,这样,有些物理页可能总是被先用了写数 据;为了避免这个情况,在步骤12中,为空闲页指针分配一个随机数,使得空闲页指针随机 指向空闲页查找表中的一个物理页号,这样,在步骤13中可以根据该空闲页指针随机地从 空闲页中选取一个物理页写入数据。
[0038] 可选地,当进行目标数据页的写操作时,根据数据页查找表判定目标数据页的物 理页号对应的物理页是空白页,则直接在目标数据页的物理页号对应的物理页中写数据, 直到把所有数据页都写了一次之后,再执行步骤13。其中,空白页表示该物理页从未写入过 数据。
[0039] 可选地,为了节省内存空间,数据页查找表以数据页的逻辑页号为索引存储数据 页的物理页号,通过这种方式建立从数据页的逻辑页号到数据页的物理页号的映射。此时, 在实际实现过程中,也可以将数据页查找表和空闲页查找表合成为一个表,而不必单独放 置在两个内存模块。
[0040] 可选地,在本实施例中,当进行目标数据页的读操作时,根据数据页查找表从目标 数据页的物理页号对应的物理页中读取数据。该步骤的输入为目标数据页的逻辑页号和页 偏移地址。具体地,读操作的输入为目标数据页的逻辑页号和页偏移地址,将目标数据页的 逻辑页号送到数据页查找表,得到目标数据页的物理页号,根据目标数据页的物理页号和 页偏移地址去NVM中读取目标数据页的物理页号对应的数据页中的数据。
[0041] 可选地,当进行目标数据页的写操作或读操作时,如果输入为目标数据页的逻辑 地址,本实施例还可以包括如下步骤:根据目标数据页的逻辑地址计算得到目标数据页的 逻辑页号和页偏移地址。具体地,逻辑页号=(逻辑地址/逻辑页长度)的商的整数部分, 逻辑页长度=物理页长度-物理页页头长度。例如:若物理页长度为256-byte,物理页页 头长度为8-byte,则逻辑页长度为248-byte。
[0042] 可选地,在步骤13中,当空闲页查找表中存储的物理页号对应的物理页中存在空 白页时,可以配置空闲页指针指向一个空白页的物理页号,优选地,配置空闲页指针指向任 意一个空白页的物理页号。当空闲页查找表中没有空白页时,可以配置空闲页指针顺序指 向空闲页查找表的下一个物理页号。
[0043] 下面通过一个具体实例详细说明本实施例的工作过程。
[0044] 如图2所示,为本发明NVM的管理方法实施例中一个写数据实例的原理示意图, NVM包括12个物理页:物理页0-11,其中8个物理页被初始化为数据页,4个物理页被初始 化为空闲页,NVM的选址方式为物理页号+页偏移地址。每个NVM物理页包括页头和数据 区,页头的长度为8字节,数据区的长度等于逻辑页长度。其中,页头包括逻辑页号、空闲标 志、计数位、第一检错码EDC1、预留区RFU和第二检错码EDC2 ;其中,第一检错码EDC1用于 对页头除第二检错码EDC2外的数据进行检错,第二检错码EDC-2用于对数据区的数据进行 检错,计数位用于根据逻辑页号对页写进行计数,即对同一个逻辑页号进行一次写操作,该 计数位进行一次计数,根据计数位可以判定哪个物理页的数据是最新的。例如:计数位采用 32比特顺序计数,计数从0开始,每写入一次逻辑页,该页的计数位加1。如果同一个逻辑 页号对应两个物理页,这两个物理页的计数位必然不同。可以判定出计数位大的物理页的 数据是新的,而计数位小的物理页的数据是旧的。受NVM的物理特性的限制,数据擦写的次 数是有限的。计数位可以保证在NVM寿命以内,计数不会重复。
[0045] 当系统上电时,顺序扫描NVM,在内存中建立数据页查找表和空闲页查找表,其中, 数据页查找表中顺序存储逻辑页0-7对应的物理页号,空闲页查找表中存储空闲页0-3对 应的物理页号。空闲页指针随机指向空闲页1对应的物理页号。例如:通过扫描物理页5 的页头,得到其对应的逻辑页号为〇,在数据页查找表索引为〇的表格内填写物理页号5。 可选地,在扫描NVM中的某一个物理页的页头时,采用第一检错码EDC1对页头进行检错,如 果检查出页头错误,进入异常处理程序,具体为:根据页头信息判定该物理页在擦除数据或 写数据的过程中掉电,则将擦除了部分数据的物理页或写入了部分数据的物理页作为空闲 页,并将该物理页的物理页号存储到空闲页查找表中。当建立数据页查找表时,如果出现 两个物理页号对应一个逻辑页号并且两个物理页号对应的物理页的页头都正确的情况,进 入异常处理程序,具体为:根据这两个物理页号,获取对应的物理页的页头和数据;如果根 据页头中的EDC2判定一个物理页的数据区中的数据错误而另一个物理页的数据区中的数 据正确,则将数据错误的物理页作为空闲页并将该空闲页的物理页号存储到空闲页查找表 中;将数据正确的物理页作为数据页并在数据页查找表中建立该物理页的逻辑页号到物理 页号的映射;如果两个物理页中的数据都正确,根据页头中的计数位可以判定哪个物理页 中的数据是新的,将存储有新数据的物理页作为数据页并在数据页查找表中建立该物理页 的逻辑页号到数据页号的映射,将存储有旧数据的物理页作为空闲页并将该空闲页的物理 页号存储到空闲页查找表中。
[0046] 要进行的写操作为:在逻辑页5中写入3344,该写操作的输入为逻辑地址和数据 3344,具体执行步骤如下:
[0047] 步骤21、根据空闲页查找表,得到空闲页指针指向的空闲页1对应物理页号0,输 出物理页号〇 ;
[0048] 步骤22、根据逻辑地址计算得到逻辑页号5和页偏移地址,根据数据页查找表得 到逻辑页号5对应物理页号7,输出物理页号7 ;
[0049] 步骤23、根据空闲页查找表,找到空闲页指针指向的物理页号0,计算页头;其中, 新的页头中的计数位等于物理页7的页头中的计数位+1 ;
[0050] 步骤24、擦除物理页号0对应的物理页0,根据页偏移地址将数据3344和新的页 头写入物理页0中;
[0051] 步骤25、更新数据页查找表,将逻辑页5对应的物理页号更新为0 ;
[0052] 步骤26、更新空闲页查找表,将空闲页1对应的物理页号更新为7 ;
[0053] 步骤27、分配空闲页指针指向空闲页2对应的物理页号。
[0054] 如果在执行步骤24的写操作或擦除操作的过程中掉电导致物理页0中的数据错 误时,在下次上电建立数据页查找表时,通过物理页〇页头中的EDC1可以判定物理页0中 的数据是错误的,然后,将物理页号〇存储到空闲页查找表中,从而保证数据的完整性。
[0055] 如果在执行完步骤24、执行步骤25之前掉电,即物理页0和7中的数据都是完整 的,但物理页〇中的数据是最新的,在下次上电建立数据页查找表时,会出现两个物理页号 即物理页号〇和7对应一个逻辑页号5的情况,此时,首先通过物理页0和7的页头中的 EDC1和EDC2判定物理页0和7中的数据都是正确的,然后,根据页头中的计数位判定物理 页〇中的数据是最新的,物理页7中的数据是旧的,最后将物理页号7存入空闲页查找表, 将物理页号〇存入数据页查找表中,从而在保证数据完整性的基础上保证数据是最新的。
[0056] 在图2所示示意图中读取逻辑页5的数据时,根据逻辑地址,计算得到逻辑页号5 和页偏移地址,将逻辑页号5送到数据页查找表,得到相应的物理页号7,根据物理页号7和 页偏移地址去NVM中读取物理页7中的数据。
[0057] NVM的管理方法第二实施例
[0058] 与上一实施例的不同之处在于,在本实施例中,空闲页查找表中包括与逻辑页号 一一对应的单向链表,单向链表的每一表项保存逻辑页号和与逻辑页号对应的物理页号, 单向链表中保存的物理页号对应的物理页中的数据的历史从表头到表尾依次递减。也就是 说,单向链表的表头中保存的物理页号对应的物理页中的数据是历史最长的,也就是最旧 的,单向链表的表尾中保存的物理页号对应的物理页中的数据是历史最短的,也就是最新 的。
[0059] 在步骤13中,配置空闲页指针指向所述空闲页查找表的另外一个物理页号时,可 以按照如下步骤执行:在空闲页查找表中寻找与目标数据页的逻辑页号对应的单向链表, 如果与目标数据页的逻辑页号对应的单向链表存在,则将空闲页指针指向目标数据页的逻 辑页号对应的单向链表的表头;如果与目标数据页的逻辑页号对应的单向链表不存在,则 将空闲页指针指向任意单向链表的表头。换句话说,选择保存有最旧数据的物理页写入数 据。
[0060] NVM的管理装置第一实施例
[0061] 在本实施例中,NVM可以包括复数个物理页,复数个物理页划分为数据页和空闲 页,每个物理页包括页头和数据区。
[0062] 如图3所示,为本发明非易失性存储器的管理装置实施例的结构示意图,该装置 可以包括查找表建立模块32、指针设置模块33和第一数据写模块34。
[0063] 其中,查找表建立模块32用于扫描全部物理页的页头信息,在内存中建立数据页 查找表和空闲页查找表,其中,数据页查找表用于建立从数据页的逻辑页号到数据页的物 理页号的映射,空闲页查找表用于存储空闲页的物理页号。可选地,查找表建立模块32可 以在系统上电时进行扫描,因为这两个查找表是在每次上电时根据NVM的页头信息重新建 立的,所以它们存放在易失性存储器的内存里,内存为易失性存储器。指针设置模块33用 于设置一个指向空闲页查找表中的一个物理页号的空闲页指针。第一数据写模块34用于 当进行目标数据页的写操作时,根据空闲页查找表,对空闲页指针指向的物理页号对应的 物理页依次进行擦除操作和写操作,将数据页查找表中目标数据页的物理页号与空闲页查 找表中空闲页指针指向的空闲页的物理页号互换,控制空闲页指针指向空闲页查找表的下 一个物理页号。需要说明的是,该空闲页可以为写有旧数据的物理页,也可以为空白的物理 页。
[0064] 具体地,在第一数据写模块34中,写操作的输入为目标数据页的逻辑页号。第一 数据写模块34在写数据时,根据空闲页指针查找空闲页查找表得到空闲页的物理页号,计 算页头,然后根据空闲页的物理页号在NVM中找到空闲页,先将空闲页中的数据擦除,再将 数据和页头写入空闲页中。。在内存中查找空闲页查找表和数据页查找表所花费的时间相 对于在NVM中写数据和擦数据所花费的时间可以忽略不计。
[0065] 可选地,该装置可以采用软件、硬件电路、或软件和硬件电路相结合的方式实现。
[0066] 本实施例的工作过程如下:当NVM上电时,查找表建立模块32通过扫描全部物理 页的页头信息,在内存中建立数据页查找表和空闲页查找表,指针设置模块33设置一个指 向空闲页查找表中的一个物理页号的空闲页指针。当进行目标数据页的写操作时,第一数 据写模块34根据空闲页查找表,对空闲页指针指向的物理页号对应的物理页依次进行擦 除操作和写操作,将数据页查找表中目标数据页的物理页号与空闲页查找表中空闲页指针 指向的空闲页的物理页号互换,配置空闲页指针指向空闲页查找表的另外一个物理页号。
[0067] 在本实施例中,每写一次数据,只需要第一数据写模块34对NVM先后进行一次页 擦除操作和一次页写操作,相对于现有技术中执行一次写操作需要对NVM写4次和擦两次, 极大地节省了操作时间,提高了写数据的效率。由于对NVM的操作次数减少了,也提高了 NVM的寿命。
[0068] 可选地,数据页查找表的索引是数据页的逻辑页号,在数据页查找表中存放了与 该逻辑页号对应的数据页的物理页号。
[0069] 进一步地,本实施例还可以包括异常处理模块35,与查找表建立模块32连接,用 于根据查找表建立模块32提供的页头信息判定上次写操作非正常结束时,执行异常处理 程序。
[0070] 进一步地,异常处理模块35可以包括第一掉电处理单元351和第二掉电处理单元 352,其中,第一掉电处理单兀351用于根据查找表建立模块35提供的页头信息判定在擦除 操作的过程中或者在写操作的过程中掉电,则将擦除了部分数据的物理页或写入了部分数 据的物理页作为空闲页并将该物理页的物理页号存储到空闲页查找表中,从而保证数据的 完整性;第二掉电处理单元352用于根据查找表建立模块32提供的页头信息判定在写操作 之后掉电,则将保存有新数据的物理页作为数据页,在数据页查找表中建立该数据页的逻 辑页号到该数据页的物理页号的映射,将保存有旧数据的物理页作为空闲页,将该空闲页 的物理页号存储到空闲页查找表中。
[0071] 例如:物理页的页头包括逻辑页号、空闲标志、计数位、第一检错码和第二检错码; 其中,第一检错码用于对页头除第二检错码外的数据进行检错,第二检错码用于对数据区 的数据进行检错,计数位用于根据逻辑页号对页写进行计数。查找表建立模块32扫描页头 后,根据页头中的第一检错码判定页头是否正确,如果页头错误,将该物理页的物理页号发 送给异常处理模块35,异常处理模块35根据页头信息判定该物理页号对应的物理页在写 操作或擦除操作的过程中掉电,则将该将擦除了部分数据或写入了部分数据的物理页作为 空闲页并将该物理页的物理页号存储到空闲页查找表中。当查找表建立模块32建立数据 页查找表时,如果出现两个物理页号对应一个逻辑页号并且两个物理页号对应的物理页的 页头都正确的情况,查找表建立模块32会将两个物理页号提供给异常处理模块35,异常处 理模块35根据这两个物理页号,获取对应的物理页的页头和数据;如果根据页头中的EDC2 判定一个物理页的数据区中的数据错误而另一个物理页的数据区中的数据正确,则异常处 理模块35将数据错误的物理页作为空闲页并将该空闲页的物理页号存储到空闲页查找表 中;将数据正确的物理页作为数据页并在数据页查找表中建立该物理页的逻辑页号到物理 页号的映射;如果两个物理页中的数据都正确,根据页头中的计数位可以判定哪个物理页 中的数据是新的,将存储有新数据的物理页作为数据页并在数据页查找表中建立该物理页 的逻辑页号到数据页号的映射,将存储有旧数据的物理页作为空闲页并将该空闲页的物理 页号存储到空闲页查找表中。
[0072] 可选地,查找表建立模块32扫描全部物理页的页头信息时,可以采用顺序扫描的 方式读取全部物理页的页头信息或者采用随机无序扫描的方式读取全部物理页的页头信 息。当扫描模块31采用顺序扫描的方式读取全部物理页的页头信息时,得到的空闲物理页 查找表总是按照一个固定次序把空闲页的物理页号填入查找表,这样,有些物理页可能总 是被先用来写数据;为了避免这个情况,指针设置模块33可以包括随机数生成单元331和 指针设置单元332,其中,随机数生成单元331用于生成随机数;指针设置单元332用于将 随机数分配给空闲页指针,使得空闲页指针随机指向空闲页查找表中的一个物理页号;这 样,第一数据写模块34可以根据该空闲页指针随机地从空闲页中选取一个物理页写入数 据。
[0073] 可选地,本实施例还可以包括第二数据写模块36,用于当进行目标数据页的写操 作时,根据数据页查找表判定目标数据页为空白页,在目标数据页中写数据,直到把所有数 据页都写了一次之后,再由第一数据写模块34进行写操作。其中,空白页表示该物理页从 未写入过数据。
[0074] 可选地,为了节省内存空间,数据页查找表以数据页的逻辑页号为索引存储数据 页的物理页号,通过这种方式建立从数据页的逻辑页号到数据页的物理页号的映射。可选 地,在实际实现过程中,也可以将数据页查找表和空闲页查找表合成为一个表。
[0075] 可选地,本实施例还可以包括数据读模块37,用于当进行目标数据页的读操作时, 根据数据页查找表从目标数据页中读取数据。
[0076] 可选地,当进行目标数据页的写操作或读操作时,如果输入为目标数据页的逻辑 地址,本实施例还可以包括计算模块38,与第一数据写模块34、第二数据写模块36和数据 读模块37连接,用于根据目标数据页的逻辑地址,计算得到目标数据页的逻辑页号和页偏 移地址。具体地,逻辑页号=(逻辑地址/逻辑页长度)的商的整数部分,逻辑页长度=物 理页长度-物理页页头长度。例如:若物理页长度为256-byte,物理页页头长度为8-byte, 则逻辑页长度为248-byte。
[0077] 最后应说明的是:以上实施例仅用以说明本发明的技术方案而非限制,尽管参照 较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的 技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
【权利要求】
1. 一种非易失性存储器的管理方法,其特征在于,所述非易失性存储器包括复数个物 理页,所述物理页划分为数据页和空闲页,每个物理页包括页头和数据区,所述方法包括: 通过扫描全部物理页的页头信息在内存中建立数据页查找表和空闲页查找表,其中, 所述数据页查找表用于建立从所述数据页的逻辑页号到所述数据页的物理页号的映射,所 述空闲页查找表用于存储所述空闲页的物理页号,设置一个指向所述空闲页查找表中的一 个物理页号的空闲页指针; 当进行目标数据页的写操作时,根据所述空闲页查找表,对所述空闲页指针指向的物 理页号对应的物理页依次进行擦除操作和写操作,将所述数据页查找表中所述目标数据页 的物理页号与所述空闲页查找表中所述空闲页指针指向的空闲页的物理页号互换,配置所 述空闲页指针指向所述空闲页查找表的另外一个物理页号。
2. 根据权利要求1所述的方法,其特征在于,还包括: 执行所述建立数据页查找表和空闲页查找表时,根据所述页头信息判定上次写操作非 正常结束时,执行异常处理程序。
3. 根据权利要求2所述的方法,其特征在于,所述异常处理程序包括: 根据页头信息判定在擦除操作的过程中或者在写操作的过程中掉电,则将擦除了部分 数据的物理页或写入了部分数据的物理页作为空闲页; 根据页头信息判定在写操作之后掉电,则将保存有新数据的物理页作为数据页,将保 存有旧数据的物理页作为空闲页。
4. 根据权利要求1所述的方法,其特征在于,所述空闲页查找表中包括与所述逻辑页 号 对应的单向链表,所述单向链表的每一表项保存逻辑页号和与所述逻辑页号对应的 物理页号,所述单向链表中保存的物理页号对应的物理页中的数据的历史从表头到表尾依 次递减。
5. 根据权利要求4所述的方法,其特征在于,所述配置所述空闲页指针指向所述空闲 页查找表的另外一个物理页号具体为: 在所述空闲页查找表中寻找与所述目标数据页的逻辑页号对应的单向链表,如果与所 述目标数据页的逻辑页号对应的单向链表存在,则将所述空闲页指针指向所述目标数据页 的逻辑页号对应的单向链表的表头;如果与所述目标数据页的逻辑页号对应的单向链表不 存在,则将所述空闲页指针指向任意单向链表的表头。
6. 根据权利要求1所述的方法,其特征在于,所述页头信息包括逻辑页号、空闲标志、 计数位、第一检错码和第二检错码,其中,所述第一检错码用于对所述页头除所述第二检错 码外的数据进行检错,第二检错码用于对所述数据区的数据进行检错。
7. -种非易失性存储器的管理装置,其特征在于,所述非易失性存储器包括复数个物 理页,所述物理页划分为数据页和空闲页,每个物理页包括页头和数据区,所述装置包括: 查找表建立模块,用于通过扫描全部物理页的页头信息,在内存中建立数据页查找表 和空闲页查找表,其中,所述数据页查找表用于建立从所述数据页的逻辑页号到所述数据 页的物理页号的映射,所述空闲页查找表用于存储所述空闲页的物理页号; 指针设置模块,用于设置一个指向所述空闲页查找表中的一个物理页号的空闲页指 针; 第一数据写模块,用于当进行目标数据页的写操作时,根据所述空闲页查找表,对所述 空闲页指针指向的物理页号对应的物理页依次进行擦除操作和写操作,将所述数据页查找 表中所述目标数据页的物理页号与所述空闲页查找表中所述空闲页指针指向的空闲页的 物理页号互换,配置所述空闲页指针指向所述空闲页查找表的另外一个物理页号。
8. 根据权利要求7所述的装置,其特征在于,还包括: 异常处理模块,用于根据所述查找表建立模块提供的页头信息判定上次写操作非正常 结束时,执行异常处理程序。
9. 根据权利要求8所述的装置,其特征在于,所述异常处理模块包括: 第一掉电处理单元,用于根据所述查找表建立模块提供的页头信息判定在擦除操作的 过程中或者在写操作的过程中掉电,则将擦除了部分数据的物理页或写入了部分数据的物 理页作为空闲页; 第二掉电处理单元,用于根据所述查找表建立模块提供的页头信息判定在写操作之后 掉电,则将保存有新数据的物理页作为数据页,将保存有旧数据的物理页作为空闲页。
10. 根据权利要求7所述的装置,其特征在于,所述空闲页查找表中包括与所述逻辑页 号 对应的单向链表,所述单向链表的每一表项保存逻辑页号和与所述逻辑页号对应的 物理页号,所述单向链表中保存的物理页号对应的物理页中的数据的历史从表头到表尾依 次递减。
11. 根据权利要求10所述的装置,其特征在于,所述第一数据写模块用于在所述空闲 页查找表中寻找与所述目标数据页的逻辑页号对应的单向链表,如果与所述目标数据页的 逻辑页号对应的单向链表存在,则将所述空闲页指针指向所述目标数据页的逻辑页号对应 的单向链表的表头;如果与所述目标数据页的逻辑页号对应的单向链表不存在,则将所述 空闲页指针指向任意单向链表的表头。
12. 根据权利要求7所述的装置,其特征在于,所述页头信息包括逻辑页号、空闲标志、 计数位、第一检错码和第二检错码,其中,所述第一检错码用于对所述页头除所述第二检错 码外的数据进行检错,所述第二检错码用于对所述数据区的数据进行检错。
【文档编号】G06F3/06GK104090732SQ201410347172
【公开日】2014年10月8日 申请日期:2014年7月21日 优先权日:2014年7月21日
【发明者】刘忠志 申请人:昆腾微电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1