一种闪存数据管理方法、装置及存储器
技术领域
本发明实施例涉及存储技术领域,具体涉及一种闪存数据管理方法、装置及存储器。
背景技术
非易失闪存介质(Nor Flash/Nand Flash)是一种很常见的存储芯片,兼有随机存储器(Random Access Memory,RAM)和只读存储器(Read-Only Memory,ROM)的优点,数据掉电不会丢失,是一种可在***进行电擦写的存储器。其内部采用非线性宏单元模式,具有容量大,改写速度快等优点,适用于大量数据的存储,同时它的高集成度和低成本使它成为市场主流。非易失闪存介质是由内部成千上万个存储单元组成的,每个储存单元存储一位数据,多个存储单元构成页,多个页组成块,多个块构成一个存储单元阵列。
EMMC(Embedded Multi Media Card,嵌入式多媒体卡)是MMC协会订立,主要针对手机或平板电脑等产品的内嵌式存储器标准规格,其封装中集成了一个控制器,提供标准接口并管理闪存。目前,EMMC针对Nand Flash的管理架构主要有基于页的管理架构,即以页为单位,在建立的表中记录每个物理页所对应的逻辑地址。由于页的存储容量较小,对于一定存储容量的存储器来说,会包括很多的页,因此管理表的数据量较大。尤其在大数据连续存储的设备中(例如对音频、视频的存储设备),基于页的存储架构会因其数据分割较多,管理表的数据量较大,影响连续数据的存储及输出性能。
发明内容
本发明实施例提供一种闪存数据管理方法、装置及存储器,提高了大数据连续存储以及输出性能。
第一方面,本发明实施例提供了一种闪存数据管理方法,该方法包括:
将数据管理表块划分为指引表块、索引表块、映射表块和子表块;
其中,所述指引表块中存储所述索引表块的物理地址;所述索引表块中存储所述映射表块以及所述子表块的物理地址;所述映射表块中记录每个逻辑块地址对应的物理块地址以及每个物理块的首地址;所述子表块中记录空闲块的物理地址。
进一步地,对所述闪存进行数据写操作,包括:
根据所述子表块中记录的空闲块物理地址找到空闲块;
对所述空闲块进行顺序写操作;
当对所述空闲块写满数据时,将所述空闲块对应的物理地址与所述映射表块中对应的逻辑块的物理地址进行替换。
进一步地,对所述空闲块进行顺序写操作之前,还包括:若所写数据的逻辑起始地址与所述空闲块的首地址不相同,则根据写数据的逻辑起始地址、每个块中包含的页数量以及每个页中包含的数据位对所述空闲块的首地址进行变更并标记。
进一步地,对所述闪存进行数据读取操作,包括:
根据寻址指令查询子表块中是否存在与寻址指令对应的物理块,若存在,则从对应的物理块读取数据,否则,从映射表块中查询与所述寻址指令对应的物理块,并根据物理块的首地址读取数据。
第二方面,本发明实施例还提供了一种闪存数据管理装置,所述装置包括:
划分模块,用于将数据管理表块划分为指引表块、索引表块、映射表块和子表块;
其中,所述指引表块中存储所述索引表块的物理地址;所述索引表块中存储所述映射表块以及所述子表块的物理地址;所述映射表块中记录每个逻辑块地址对应的物理块地址以及每个物理块的首地址;所述子表块中记录空闲块的物理地址。
进一步地,所述装置还包括:
还包括写模块,用于对所述闪存进行数据写操作,所述写模块具体包括:
查找单元,用于根据所述子表块中记录的空闲块物理地址找到空闲块;
写单元,用于对所述空闲块进行顺序写操作;
替换单元,用于当对所述空闲块写满数据时,将所述空闲块对应的物理地址与所述映射表块中对应的逻辑块的物理地址进行替换。
进一步地,所述写模块还包括:标记单元,用于对所述空闲块进行顺序写操作之前,还包括:所写数据的逻辑起始地址若所写数据的逻辑起始地址与所述空闲块的首地址不相同时,则根据写数据的逻辑起始地址、每个块中包含的页数量以及每个页中包含的数据位对所述空闲块的首地址进行变更并标记。
进一步地,所述装置还包括:读取模块,用于对所述闪存进行数据读取操作,所述读取模块具体包括:
寻址单元,用于根据寻址指令查询子表块中是否存在与寻址指令对应的物理块,若不存在,则从映射表块中查询与所述寻址指令对应的物理块;
读取单元,用于根据所述对应的物理块的首地址找到正确的页编号,并开始进行读操作。
第三方面,本发明实施例还提供了一种存储器,包括上述第二方面所述的闪存数据管理装置。
本发明实施例提供的一种闪存数据管理方法,采用基于块的管理架构,以块为最小管理单元,按层级化进行管理,减小了存储在RAM(Random Access Memory,随机存储器)上的管理表容量,实现了减少连续大数据的存储及索引路径,并通过在映射表块中记录每个逻辑块地址对应的物理块的首地址,方便了数据写操作和读取操作,提高了大数据连续存储以及输出性能。
附图说明
图1为本发明实施例一中的一种Nand Flash数据管理架构示意图;
图2为本发明实施例一中的每个块中起始地址示意图;
图3为本发明实施例一中的连续数据写操作的流程示意图;
图4为本发明实施例一中的标记了起始地址的块示意图;
图5为本发明实施例一中的连续数据读操作的流程示意图;
图6为本发明实施例二中的一种闪存数据管理装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种Nand Flash数据管理架构示意图,本实施例可适用于大数据连续存储与输出,例如视频、音频的存储与输出等大数据应用场景。闪存数据管理方法可以由闪存数据管理装置来执行,所述装置可以由软件和/或硬件的方式实现,并可集成到EMMC芯片上。参见图1所示,本实施例提供的闪存数据管理方法具体包括如下步骤:
将数据管理表块划分为指引表块110、索引表块120、映射表块130和子表块140;
其中,指引表块110中存储索引表块120的物理地址;索引表块120中存储映射表块130以及子表块140的物理地址;映射表块130中记录每个逻辑块地址对应的物理块地址以及每个物理块的首地址;子表块140中记录空闲块的物理地址。
对闪存进行数据写操作时,包括:
根据子表块140中记录的空闲块物理地址找到空闲块;
对所述空闲块进行顺序写操作;
当对所述空闲块写满数据时,将所述空闲块对应的物理地址与映射表块130中对应的逻辑块的物理地址进行替换。通常,映射表块130中存储写完数据后的物理块地址,并且,映射表块130保存在RAM上,若映射表块130内的数据量小,则所占RAM内存会减少,通过RAM读数据或者写数据的速度便会提高,进而提高了大数据的连续存储与输出性能。本实施例通过采用以块为最小管理单元的方式,减少了映射表块130中存储的数据量。
具体参见图2所示的每个块中起始地址示意图,每个块是由很多的页page组成的,根据存储容量不同,每个块包含的page数量不同,假设每个块包含256个页,则每个块默认的首地址分别为page0、page256、page512……。
进一步地,对所述空闲块进行顺序写操作之前,还包括:所写数据的逻辑起始地址若所写数据的逻辑起始地址与所述空闲块的首地址不相同,则根据写数据的逻辑起始地址、每个块中包含的页数量以及每个页中包含的数据位对所述空闲块的首地址进行变更并标记。具体为若所写数据的逻辑起始地址不在所述空闲块的page0位置时,将写数据的逻辑起始地址对应的page标记为所写数据的逻辑起始地址。例如,假设每个块包含256个页,每个页包含16个数据位,所写数据的逻辑起始地址为lba=32,以上述图2所示的块为例,可见所写数据的逻辑起始地址lba=32与块的首地址page0(page0中包含的数据位为lba0-lba15)不相同,即不在块的page0位置,此时,则需要根据写数据的逻辑起始地址(lba=32)、每个块中包含的页数量(256)以及每个页中包含的数据位(16)对所述空闲块的首地址进行变更并标记,具体为(32/16)%256=2,则将空闲块的首地址进行变更为page2,并对其进行标记。之后进行数据读取时,只需按照标记的起始地址去读取数据即可,无需经历多次寻址找到目标地址再开始进行读取操作。如此,可以使数据读取操作更加快捷,有利于大数据连续输出。
现有技术中,当所写数据的逻辑起始地址与所述空闲块的首地址不相同时,则依然从所述空闲块的首地址开始写数据,且写到所述写数据的起始地址(例如lba=32对应的起始地址为page2)时继续从头开始顺序写一遍,但是我们并不会读取page0与page1中的数据,而是从page2开始读。显然,对page0与page1的写数据操作是没有意义的但又不得不进行的操作,因此会影响写数据的效率,即影响数据存储效率,尤其当进行大数据存储时,此弊端凸显的更严重。针对此,本实施例进行了改进,即使所写数据的逻辑起始地址与空闲块的首地址不相同时(例如不在page0位置),,则依然从空闲块的首地址开始进行顺序写数据,只是将正确的写数据的起始地址(例如page2)标记为所述空闲块的首地址,并将该标记的首地址与对应的所述块的物理地址一起保存到映射表块130中,后续读取这些数据时,则根据标记的首地址直接读取即可,方便快捷。具体可参见图3所示的连续数据写操作的流程示意图以及图4所示的标记了起始地址的块示意图。
进一步地,对闪存进行数据读取操作,包括:
根据寻址指令查询子表块140中是否存在与寻址指令对应的物理块,若存在,则从对应的物理块读取数据,否则,从映射表块130中查询与所述寻址指令对应的物理块,并根据所述对应的物理块的首地址找到正确的页编号,并开始进行读取操作。具体的是,从标记的首地址开始读取数据。通过在映射表块130中记录每个逻辑块地址对应的物理块地址以及每个物理块的首地址,在数据读取操作时,可根据首地址快速实现对数据的读取,提高了大数据的输出性能。具体可以参见图5所示的连续数据读操作的流程示意图。
本实施例提供的一种闪存数据管理方法,采用基于块的管理架构,以块为最小管理单元,按层级化进行管理,因数据分割减少,使得管理表的数量减少,并减小了存储在RAM上的映射表块容量,实现了减少连续大数据的存储及索引路径,并通过在映射表块中记录每个逻辑块地址对应的物理块的首地址,方便了数据写操作和读取操作,提高了大数据连续存储以及输出性能。
实施例二
图6为本发明实施例二提供的一种闪存数据管理装置的结构示意图,具体参见图6,所述装置包括如下:划分模块510,写模块520和读取模块530;
其中,划分模块510,用于将数据管理表块划分为指引表块、索引表块、映射表块和子表块;其中,所述指引表块中存储所述索引表块的物理地址;所述索引表块中存储所述映射表块以及所述子表块的物理地址;所述映射表块中记录每个逻辑块地址对应的物理块地址以及每个物理块的首地址;所述子表块中记录空闲块的物理地址;写模块520,用于对所述闪存进行数据写操作;读取模块530,用于对所述闪存进行数据读取操作。
进一步地,写模块520具体包括:
查找单元,用于根据所述子表块中记录的空闲块物理地址找到空闲块;
写单元,用于对所述空闲块进行顺序写操作;
替换单元,用于当对所述空闲块写满数据时,将所述空闲块对应的物理地址与所述映射表块中对应的逻辑块的物理地址进行替换。
进一步的,写模块520还包括:标记单元,用于对所述空闲块进行顺序写操作之前,还包括:所写数据的逻辑起始地址若所写数据的逻辑起始地址与所述空闲块的首地址不相同时,则根据写数据的逻辑起始地址、每个块中包含的页数量以及每个页中包含的数据位对所述空闲块的首地址进行变更并标记。
进一步地,读取模块530具体包括:
寻址单元,用于根据寻址指令查询子表块中是否存在与寻址指令对应的物理块,若不存在,则从映射表块中查询与所述寻址指令对应的物理块;
读取单元,用于根据所述对应的物理块的首地址找到正确的页编号,并开始进行读操作。本实施例提供的一种闪存数据管理装置,采用基于块的管理架构,以块为最小管理单元,按层级化进行管理,因数据分割减少,使得管理表的数量减少,并减小了存储在RAM上的映射表块容量,实现了减少连续大数据的存储及索引路径,并通过在映射表块中记录每个逻辑块地址对应的物理块的首地址,方便了数据写操作和读取操作,提高了大数据连续存储以及输出性能。
上述装置可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
本发明实施例三还提供一种存储器,该存储器包括如上述实施例所述的闪存数据管理装置。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。