一种基于Flash存储器的倒序编程实现方法及装置转让专利

申请号 : CN202010858452.9

文献号 : CN111966298B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 曾庆聪张如宏杨晓生

申请人 : 深圳三地一芯电子有限责任公司

摘要 :

本发明公开了一种基于Flash存储器的倒序编程实现方法及装置,该方法包括:检测到数据写入指令,获取数据写入状态;判断数据写入状态是否为倒序写入;若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表。本发明实施例提高了基于块管理算法的nand flash存储设备的随机写入性能,特别针对倒序连续写入数据可以做到和顺序写入的性能完全一样,减少nand flash存储设备的写入限制,提高nand flash存储设备写入效率。

权利要求 :

1.一种基于Flash存储器的倒序编程实现方法,其特征在于,所述方法包括:检测到数据写入指令,获取数据写入状态;

判断数据写入状态是否为倒序写入;

若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表;

所述判断数据写入状态的是否为倒序写入后,还包括:若是数据写入状态顺序写入,则将数据写入地址映射顺序物理块,并将数据与地址映射顺序物理块的映射关系保存至块映射表;

所述若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表,包括:若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,判断倒序物理块是否写完;

若数据已写完,则将数据与地址映射倒序物理块的映射关系保存至块映射表;

若数据未写完,则继续检测数据写入状态是否倒序写入,直至倒序物理块的数据写完,并将数据与地址映射倒序物理块的映射关系保存至块映射表;

所述若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表,包括:若数据写入状态是倒序写入,则获取地址映射为倒序的倒序物理块,将数据写入倒序物理块;

读取倒序物理块的数据,按照顺序映射至顺序物理块,将顺序物理块保存在块映射表。

2.根据权利要求1所述的基于Flash存储器的倒序编程实现方法,其特征在于,所述若数据写入状态是倒序写入,则获取地址映射为倒序的倒序物理块,将数据写入倒序物理块,包括:

若数据写入状态是倒序写入,则从空闲块队列中取出空闲块,将空闲块标记为地址映射为倒序的倒序物理块,将数据写入倒序物理块。

3.根据权利要求2所述的基于Flash存储器的倒序编程实现方法,其特征在于,所述读取倒序物理块的数据,按照顺序映射至顺序物理块,将顺序物理块保存在块映射表,包括:从空闲队列中取出一个空闲块标记为地址映射为顺序的顺序物理块;

读取倒序物理块的数据,按照顺序映射至顺序物理块;

将顺序物理块保存在块映射表。

4.根据权利要求3所述的基于Flash存储器的倒序编程实现方法,其特征在于,所述读取倒序物理块的数据,按照顺序映射至顺序物理块,具体包括:读取倒序物理块的数据,按照顺序映射至顺序物理块;

将倒序物理块放入空闲块队列。

5.一种基于Flash存储器的倒序编程实现装置,其特征在于,所述装置包括至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑4任一项所述的基于Flash存储器的倒序编程实现方法。

6.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1‑4任一项所述的基于Flash存储器的倒序编程实现方法。

说明书 :

一种基于Flash存储器的倒序编程实现方法及装置

技术领域

[0001] 本发明涉及半导体器件技术领域,尤其涉及一种基于Flash存储器的倒序编程实现方法及装置。

背景技术

[0002] Nand Flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand‑flash存储器具有容量较大,改写速
度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用。
[0003] Nand Flash存储器的管理算法目前主流实现方法为块管理和页管理算法。一个存储器有若干个物理块,一个物理块内设置有若干个物理页。一个物理页内有若干个物理分
区。现有技术中在Nand Flash存储器编程时,只能按照地址从大到小顺序在在物理块中写
入数据,若是写数据时,其中某一物理块采用倒序写入数据,则无法正确读取数据,为用户
Nand Flash存储器编程带来了不便。
[0004] 因此,现有技术还有待于改进和发展。

发明内容

[0005] 鉴于上述现有技术的不足,本发明的目的在于提供一种基于Flash存储器的倒序编程实现方法及装置,旨在解决现有技术中Nand Flash存储器编程时,只能按照地址从大
到小顺序在在物理块中写入数据,若是写数据时,其中某一物理块采用倒序写入数据,则无
法正确读取数据的技术问题。
[0006] 本发明的技术方案如下:
[0007] 一种基于Flash存储器的倒序编程实现方法,所述方法包括:
[0008] 检测到数据写入指令,获取数据写入状态;
[0009] 判断数据写入状态是否为倒序写入;
[0010] 若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表。
[0011] 进一步地,所述判断数据写入状态的是否为倒序写入后,还包括:
[0012] 若是数据写入状态顺序写入,则将数据定入地址映射顺序物理块,并将数据与地址映射顺序物理块的映射关系保存至块映射表。
[0013] 进一步优选地,所述数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表,包括:
[0014] 若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,判断倒序物理块是否写完;
[0015] 若数据已写完,则将数据与地址映射倒序物理块的映射关系保存至块映射表;
[0016] 若数据未写完,则继续检测数据写入状态是否倒序写入,直至倒序物理块的数据写完,并将数据与地址映射倒序物理块的映射关系保存至块映射表。
[0017] 进一步优选地,所述若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表,包括:
[0018] 若数据写入状态是倒序写入,则获取地址映射为倒序的倒序物理块,将数据写入倒序物理块;
[0019] 读取倒序物理块的数据,按照顺序映射至顺序物理块,将顺序物理块保存在块映射表。
[0020] 优选地,所述若数据写入状态是倒序写入,则获取地址映射为倒序的倒序物理块,将数据写入倒序物理块,包括:
[0021] 若数据写入状态是倒序写入,则从空闲块队列中取出空闲块,将空闲块标记为地址映射为倒序的倒序物理块,将数据写入倒序物理块。
[0022] 进一步地,所述读取倒序物理块的数据,按照顺序映射至顺序物理块,将顺序物理块保存在块映射表,包括:
[0023] 从空闲队列中取出一个空闲块标记为地址映射为顺序的顺序物理块;
[0024] 读取倒序物理块的数据,按照顺序映射至顺序物理块;
[0025] 将顺序物理块保存在块映射表。
[0026] 进一步地,所述读取倒序物理块的数据,按照顺序映射至顺序物理块,具体包括:
[0027] 读取倒序物理块的数据,按照顺序映射至顺序物理块;
[0028] 将倒序物理块放入空闲块队列。
[0029] 本发明的另一实施例提供了一种基于Flash存储器的倒序编程实现装置,所述装置包括至少一个处理器;以及,
[0030] 与所述至少一个处理器通信连接的存储器;其中,
[0031] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的基于Flash存储器的倒序编程实
现方法。
[0032] 本发明的另一实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器
执行时,可使得所述一个或多个处理器执行上述的基于Flash存储器的倒序编程实现方法。
[0033] 本发明的另一种实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所
述程序指令被处理器执行时,使所述处理器执行上述的基于Flash存储器的倒序编程实现
方法。
[0034] 有益效果:本发明实施例提高了基于块管理算法的nand flash存储设备的随机写入性能,特别针对倒序连续写入数据可以做到和顺序写入的性能完全一样,减少nand 
flash存储设备的写入限制,提高nand flash存储设备写入效率。

附图说明

[0035] 下面将结合附图及实施例对本发明作进一步说明,附图中:
[0036] 图1为本发明一种基于Flash存储器的倒序编程实现方法较佳实施例的流程图;
[0037] 图2为本发明一种基于Flash存储器的倒序编程实现方法较佳实施例的地址映射示意图;
[0038] 图3为本发明一种基于Flash存储器的倒序编程实现装置的较佳实施例的硬件结构示意图。

具体实施方式

[0039] 为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下
结合附图对本发明实施例进行介绍。
[0040] 本发明实施例提供了一种基于Flash存储器的倒序编程实现方法。请参阅图1,图1为本发明一种基于Flash存储器的倒序编程实现方法较佳实施例的流程图。如图1所示,其
包括步骤:
[0041] 步骤S100、检测到数据写入指令,获取数据写入状态;
[0042] 步骤S200、判断数据写入状态是否为倒序写入,如果是,则执行步骤S300,如果否,则执行步骤S400;
[0043] 步骤S300、将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表;
[0044] 步骤S400、将数据定入地址映射顺序物理块,并将数据与地址映射顺序物理块的映射关系保存至块映射表。
[0045] 具体实施时,本发明实施例应用于闪存擦除设备。具体的是应用于闪存FTL(Flash Translation Layer)管理算法。以型号为MT29F4G08BxB为例,一个NAND FLASH结构是由若
干4096个块组成,一个块由64页组成,一页由4个向量组成。
[0046] 如图2所示给出了一种基于Flash存储器的倒序编程实现方法较佳实施例的地址映射示意图,一个逻辑地址存在N个地址,一个逻辑地址包括M+1个逻辑块,每个逻辑块中有
100个数据块,物理块与逻辑块的映射关系可自行设置。例如逻辑块0可对应物理块2,逻辑
块1对应物理块0,在写入数据的时候可以先写逻辑块0,从而实现先处理物理块2的内容。
[0047] 在检测到闪存的数据写入指令,检测数据写入状态,若数据写入状态为倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块
映射表。
[0048] 若数据写入状态为顺序写入,则将数据写入地址映射为顺序的顺序物理块,将数据与地址映射顺序物理块的映射关系保存至块映射表。从而实现数据顺序和倒序均可写
入,提高闪存设备的写入效率。
[0049] 进一步地,若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表,包括:
[0050] 若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,判断倒序物理块是否写完;
[0051] 若数据已写完,则将数据与地址映射倒序物理块的映射关系保存至块映射表;
[0052] 若数据未写完,则继续检测数据写入状态是否倒序写入,直至倒序物理块的数据写完,并将数据与地址映射倒序物理块的映射关系保存至块映射表。
[0053] 具体实施时,在数据写入时,数据写入地址映射物理块,判断倒序物理块是否写完,数据写完,则将数据与地址映射倒序物理块的映射关系保存至块映射表,未写完的时候
继续检测数据写入状态是否倒序写入,直至倒序物理块的数据写完,并将数据与地址映射
倒序物理块的映射关系保存至块映射表。
[0054] 进一步地,若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射倒序物理块的映射关系保存至块映射表,包括:
[0055] 若数据写入状态是倒序写入,则获取地址映射为倒序的倒序物理块,将数据写入倒序物理块;
[0056] 读取倒序物理块的数据,按照顺序映射至顺序物理块,将顺序物理块保存在块映射表。
[0057] 具体实施时,若数据写入状态是倒序写入,获取地址映射为倒序的倒序物理块,将数据写入倒序物理块,倒序物理块写完后,将倒序物理块的数据读出,按照顺序映射写入顺
序物理块,顺序物理块保存到块映射表中。
[0058] 进一步地,若数据写入状态是倒序写入,则获取地址映射为倒序的倒序物理块,将数据写入倒序物理块,包括:
[0059] 若数据写入状态是倒序写入,则从空闲块队列中取出空闲块,将空闲块标记为地址映射为倒序的倒序物理块,将数据写入倒序物理块。
[0060] 具体实施时,若数据写入状态是倒序写入,从空闲块队列中取出空闲块,标记为地址映射为倒序的物理块;将数据写入倒序物理块。
[0061] 进一步地,读取倒序物理块的数据,按照顺序映射至顺序物理块,将顺序物理块保存在块映射表,包括:
[0062] 从空闲队列中取出一个空闲块标记为地址映射为顺序的顺序物理块;
[0063] 读取倒序物理块的数据,按照顺序映射至顺序物理块;
[0064] 将顺序物理块保存在块映射表。
[0065] 具体实施时,获取空闲队列中取出一个空闲块标记为地址映射为顺序的顺序物理块;将倒序物理块的数据读出后,按照顺序映射写入顺序物理块;将顺序物理块保存至块映
射表中。
[0066] 进一步地,读取倒序物理块的数据,按照顺序映射至顺序物理块,具体包括:
[0067] 读取倒序物理块的数据,按照顺序映射至顺序物理块;
[0068] 将倒序物理块放入空闲块队列。
[0069] 具体实施时,从空闲块队列中获取空闲块;将空闲块进行标记;将标记的后的物理块记为地址映射为倒序的倒序物理块。在倒序物理埠中按倒序进行数据写入;获取空闲队
列中取出一个空闲块标记为地址映射为顺序的顺序物理块;将倒序物理块的数据读出后,
按照顺序映射写入顺序物理块;将倒序物理块放入空闲块队列中;将顺序物理块保存至块
映射表中。
[0070] 由以上方法实施例可知,本发明实施例提供了一种基于Flash存储器的倒序编程实现方法,通过检测到数据写入指令,获取数据写入状态;判断数据写入状态是否为倒序写
入;若数据写入状态是倒序写入,则将数据写入地址映射倒序物理块,并将数据与地址映射
倒序物理块的映射关系保存至块映射表。本发明实施例提高了基于块管理算法的nand 
flash存储设备的随机写入性能,特别针对倒序连续写入数据可以做到和顺序写入的性能
完全一样,减少nand flash存储设备的写入限制,提高nand flash存储设备写入效率。
[0071] 需要说明的是,上述各步骤之间并不必然存在一定的先后顺序,本领域普通技术人员,根据本发明实施例的描述可以理解,不同实施例中,上述各步骤可以有不同的执行顺
序,亦即,可以并行执行,变可以交换执行等等。
[0072] 本发明另一实施例提供一种基于Flash存储器的倒序编程实现装置,如图3所示,装置10包括:
[0073] 一个或多个处理器110以及存储器120,图3中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图3中以通过总线连接为例。
[0074] 处理器110用于完成,装置10的各种控制逻辑,其可以为通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、单片机、ARM(Acorn RISC 
Machine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的
任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可
以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处
理器结合DSP核、或任何其它这种配置。
[0075] 存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于Flash存储器的倒序编
程实现方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程
序、指令以及单元,从而执行装置10的各种功能应用以及数据处理,即实现上述方法实施例
中的基于Flash存储器的倒序编程实现方法。
[0076] 存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储根据装置10使用所创建的数据等。
此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一
个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可
选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至装置10。
上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0077] 一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,执行上述任意方法实施例中的基于Flash存储器的倒序编程实现方法,例如,执行以上描述的
图1中的方法步骤S100至步骤S400。
[0078] 本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描
述的图1中的方法步骤S100至步骤S400。
[0079] 作为示例,非易失性存储介质能够包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦ROM(EEPROM)或闪速存储器。易失性存储器能够包括作为外部高速
缓存存储器的随机存取存储器(RAM)。通过说明并非限制,RAM可以以诸如同步RAM(SRAM)、
动态RAM、(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM
(ESDRAM)、Synchlink DRAM(SLDRAM)以及直接Rambus(兰巴斯)RAM(DRRAM)之类的许多形式
得到。本文中所描述的操作环境的所公开的存储器组件或存储器旨在包括这些和/或任何
其他适合类型的存储器中的一个或多个。
[0080] 本发明的另一种实施例提供了一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被
处理器执行时,使处理器执行上述方法实施例的基于Flash存储器的倒序编程实现方法。例
如,执行以上描述的图1中的方法步骤S100至步骤S400。
[0081] 以上所描述的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以
位于一个地方,或者也可以分布到多个网络单元上。可以根据实际需要选择其中的部分或
者全部模块来实现本实施例方案的目的。
[0082] 通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术
方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机
软件产品可以存在于计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以
使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者
实施例的某些部分的方法。
[0083] 除了其他之外,诸如"能够'、"能"、"可能"或"可以"之类的条件语言除非另外具体地陈述或者在如所使用的上下文内以其他方式理解,否则一般地旨在传达特定实施方式能
包括(然而其他实施方式不包括)特定特征、元件和/或操作。因此,这样的条件语言一般地
还旨在暗示特征、元件和/或操作对于一个或多个实施方式无论如何都是需要的或者一个
或多个实施方式必须包括用于在有或没有输入或提示的情况下判定这些特征、元件和/或
操作是否被包括或者将在任何特定实施方式中被执行的逻辑。
[0084] 已经在本文中在本说明书和附图中描述的内容包括能够提供基于Flash存储器的倒序编程实现方法及装置的示例。当然,不能够出于描述本公开的各种特征的目的来描述
元件和/或方法的每个可以想象的组合,但是可以认识到,所公开的特征的许多另外的组合
和置换是可能的。因此,显而易见的是,在不脱离本公开的范围或精神的情况下能够对本公
开做出各种修改。此外,或在替代方案中,本公开的其他实施例从对本说明书和附图的考虑
以及如本文中所呈现的本公开的实践中可能是显而易见的。意图是,本说明书和附图中所
提出的示例在所有方面被认为是说明性的而非限制性的。尽管在本文中采用了特定术语,
但是它们在通用和描述性意义上被使用并且不用于限制的目的。