闪存存储器及其接收数据的方法
技术领域
本发明涉及电子技术领域,具体是闪存存储器及其接收数据的方法。
背景技术
快闪存储器用的存储介质主要是NANDFLASH(是非快闪存储器)、NANDFLASH的构成关系是:多个页(PAGE)组成一个块(BLOCK),多个块组成一个DEVICE(装置),例如三星的MLC FLASH:K9GAG08U0M的构成关系是:每个PAGE是4K byte大小,128个PAGE构成一个BLOCK,写数据的最小单位为PAGE,擦出的最小单位为BLOCK。页上被写入数据后此一整个块必须擦出后才可以重新写数据。
主流的管理快闪存储器的方法是块管理:快闪存储器将HOST(主机)发下来的逻辑数据划分成若干个逻辑数据块,每个逻辑数据块大小和NAND闪存一个(如K9GAG0U0M为4*128=512K byte)或多个物理块能存储的数据相同,每个逻辑块有一个唯一的逻辑地址,这样将逻辑数据和快闪存储器的物理块构成了一一对应关系,通过这个关系,HOST要读取哪段逻辑数据,快闪存储器可以查询此对应关系就可以从存放该逻辑数据的物理块上将逻辑数据读出来给HOST。
FAT文件***是在微软DOS/Windows操作***中广泛使用的一种文件***,一个典型的FAT文件***分区由4个部分组成:①保留区;②FAT表区;③根目录区;④文件数据区。第一个扇区是BPB,即基本输入输出参数块,其上记录每扇区的字节数(512),每簇的扇区数,FAT表的数目,目录项数,总扇区数,FAT表占用的扇区数等文件***的总体信息。然后是FAT表区,出于安全考虑一般存放两个FAT表。根目录区存放位于根目录的文件索引。所有的用户数据存放于文件数据区。
在实际的使用中,HOST发给快闪存储器的资料数据地址不确定,长度不确定。
以拷贝文件为例,HOST先是将待拷贝的文件的文件***数据发送给快闪存储器,会重复几次,然后才是将文件数据发个快闪存储器。文件***数据的长度较小,地址较小,不足以构成一个逻辑数据块。并且位置也大多不是从逻辑数据块的起始位置开始。为了保持整个逻辑数据块的数据放在一起,快闪存储器将会发生数据搬移(COPYBACK),将之前的在相同的逻辑数据块上的数据搬移,写到文件***数据相同的物理块上。因为文件***数据非常频繁,所以此方法耗时极久,效率极低。
为了减少此COPYBACK,目前也已经有一些稍好的方法:用一个缓存物理块连续接收HOST发下来的逻辑数据,不论逻辑地址和长度一并接收,待此缓存块存满,然后将接收到的逻辑数据整理或搬移组织成逻辑数据块和物理块一一对应关系。
但是此种方法用一个物理块作为接收HOST逻辑数据的缓存块,如果是文件***数据和文件数据交替写入,上面的数据仍然是不连续的,最后仍然要花费大量的时间将数据整理搬移构成一个一个数据块的状态。
随着NAND FLASH工艺的发展,NAND FLASH的发展趋势由SLC(SingleLevel Cell,单层单元)到MLC(Multi-Level Cell多层单元)再到TLC(Trinary-Level Cell,三层单元),其单个BLOCK包含的PAGE数越来越多,单个PAGE的容量越来越大,拷贝花费的时间越来越多,效率越来越低。
发明内容
本发明的主要目的是提供一种闪存存储器及其接收数据的方法,省去对逻辑数据的整理搬移的操作,大大提高了存储不连续逻辑数据的效率。
本发明解决其技术问题所采用的技术方案是:
一种闪存存储器,其所述闪存存储器上设置有第一操作模块和第二操作模块,以及所述闪存存储器的随机存储器RAM上设置有第一逻辑映射表和第二逻辑映射表,所述闪存存储器包括:
数据接收模块,用于接收从主机发送的逻辑数据;
算法模块,用于判断所述逻辑数据为大数据还是小数据,如果是大数据,则将所述大数据按照顺序写到第一操作模块,并将该大数据的逻辑地址按照顺序存储到所述第一逻辑映射表,如果是小数据,则将所述小数据按照顺序写到第二操作模块,并将该小数据的逻辑地址按照顺序存储到所述第二逻辑映射表,并将所述逻辑数据的物理地址与该逻辑数据的逻辑地址的对应关系存入所述闪存存储器的NAND闪存中。
优选地,所述算法模块,还用于根据判断的结果所述逻辑数据是大数据,则将指针指向第一操作模块,并在所述第一操作模块上取一个空白页,将所述大数据写到所述空白页上,按照同样过程并按照顺序将所有接收到的大数据按照顺序写到所述第一操作模块上;以及根据判断的结果所述逻辑数据是小数据,则将指针指向第二操作模块,并在所述第二操作模块上取一个空白页,将所述小数据写到所述空白页上,按照同样过程并按照顺序将所有接收到的小数据按照顺序写到所述第二操作模块上。
本发明还提供一种闪存存储器接收数据的方法,所述闪存存储器上设置有第一操作模块和第二操作模块,以及所述闪存存储器的随机存储器(RAM)上设置有第一逻辑映射表和第二逻辑映射表,该方法包括:
S210、接收从主机发送的逻辑数据;
S220、判断所述逻辑数据为大数据还是小数据;
S230、根据所述判断的结果,如果是大数据,则将所述大数据按照顺序写到第一操作模块,并将该大数据的逻辑地址按照顺序存储到所述第一逻辑映射表,如果是小数据,则将所述小数据按照顺序写到第二操作模块,并将该小数据的逻辑地址按照顺序存储到所述第二逻辑映射;
S240、将所述逻辑数据与其逻辑地址的对应关系存入所述闪存存储器的NAND闪存中。
优选地,所述步骤S230具体包括:
根据判断的结果所述逻辑数据是大数据,则将指针指向第一操作模块,并在所述第一操作模块上取一个空白页,将所述大数据写到所述空白页上,按照同样过程并按照顺序将所有接收到的大数据按照顺序写到所述第一操作模块上;以及根据判断的结果所述逻辑数据是小数据,则将指针指向第二操作模块,并在所述第二操作模块上取一个空白页,将所述小数据写到所述空白页上,按照同样过程并按照顺序将所有接收到的小数据按照顺序写到所述第二操作模块上。
实施本发明的技术方案,具有以下有益效果:本发明提供的闪存存储器及其接收数据的方法在闪存存储器中设置两个操作模块做为接收逻辑数据的缓存块,将逻辑数据区分为大数据(如:文件数据)和小数据(如:***数据),分别写到两个不同操作模块,无需将不连续的数据(资料片段)整理搬移成连续的数据块,大大提高了存储不连续逻辑数据的效率。
附图说明
图1为本发明实施例提供的闪存存储器的结构示意图;
图2为本发明实施例提供的方法流程图;
图3为本发明实施例提供的数据处理过程图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供一种闪存存储器,如图1所示,所述闪存存储器上设置有第一操作模块131和第二操作模块132,以及所述闪存存储器的RAM(随机数据存储器)上设置有第一逻辑映射表141和第二逻辑映射表142,所述闪存存储器包括:
数据接收模块110,用于接收从主机发送的逻辑数据;
算法模块120,用于判断所述逻辑数据为大数据还是小数据,如果是大数据,则将所述大数据按照顺序写到第一操作模块131,并将该大数据的逻辑地址按照顺序存储到所述第一逻辑映射表141,如果是小数据,则将所述小数据按照顺序写到第二操作模块132,并将该小数据的逻辑地址按照顺序存储到所述第二逻辑映射表142,并将所述逻辑数据的物理地址与该逻辑数据的逻辑地址的对应关系存入所述闪存存储器的NAND(与非)闪存中。其中,所述大数据与小数据的判断为:主机每次发送逻辑数据时有一个开始操作的扇区地址和操作长度,算法模块120根据主机此次操作的扇区地址和操作长度判断此次操作属于大块数据操作还是小块数据。判断如果资料片段的地址(逻辑数据的扇区地址)小于磁盘容量的2%或者资料片段的扇区长度(逻辑数据的扇区长度)小于或等于8认为是小数据,否则认为是大数据操作。
在更为具体的实施例中,所述算法模块120,还用于根据判断的结果所述逻辑数据是大数据,则将指针指向第一操作模块131,并在所述第一操作模块131上取一个空白页,将所述大数据写到所述空白页上,按照同样过程并按照顺序将所有接收到的大数据按照顺序写到所述第一操作模块131上;以及根据判断的结果所述逻辑数据是小数据,则将指针指向第二操作模块132,并在所述第二操作模块132上取一个空白页,将所述小数据写到所述空白页上,按照同样过程并按照顺序将所有接收到的小数据按照顺序写到所述第二操作模块132上。
在上述实施例中,更为具体的,在所示闪存存储器内部的一段随机数据存储器(RAM)上开辟一段缓存区域:OPCACHE,OPCACHE分为两部分:OPCACHE0(即对应上述的第一逻辑映射表141)和OPCACHE1(即对应上述的第二逻辑映射表142),以及分别用于缓存逻辑数据的OPBLK0(即对应上述的第一操作模块131)和OPBLK(即对应上述的第一操作模块132)1。
如图3所示,主机(HOST)发下来的逻辑数据为资料片段a,经DSEL区分后为小数据,DSEL将指针指向OPBLK0,并在OPBLK0上取的一个空页,假设此是OPBLK0刚开始使用,则OPBLK0的第0个PAGE被DSEL取到,DSEL将资料片段a的数据写到OPBLK0的PAGE0上,然后将资料片段a的逻辑地址A保存到OPCACHE0。资料片段b、资料片段c、资料片段j类同,分别按照该相同的过程存到PAGE1、PAGE2、PAGE3上。
如图3,主机发下来的逻辑数据,算法模块120(DSEL)区分后认为是大数据,DSEL将指针指向OPBLK1,并在OPBLK1上取若干个空页,将资料分成若干个连续的资料片段,如资料片段m、资料片段m+1、资料片段m+2、资料片段m+3。将他们分别存入此几个空页上,同时将此若干个资料片段对应的逻辑地址缓存到OPCACHE1上。
当OPBLK0或者OPBLK1上存满后,OPBLK0和OPBLK1上存储了资料片段的逻辑数据,OPCACHE0和OPCACHE1上缓存了资料片段的逻辑地址。然后将上述逻辑数据写到闪存存储器的TAB模块。
OPCACHE0和OPCACHE1里存放的是逻辑地址,而OPBLK0和OPBLK1上资料片段存入的位置是资料片段的物理地址,将此物理地址与逻辑地址之间的对应关系(或称为LOGMAP)存入NANDFLASH。读取资料的时候通过读LOGMAP并查询LOGMAP即可查取资料片段存放到NANDFLASH(与非闪存)的哪个位置,将其读出即可将资料取出。
上述实施例提供的闪存存储器,在闪存存储器中设置两个操作模块做为接收逻辑数据的缓存块,将逻辑数据区分为大数据(如:文件数据)和小数据(如:***数据),分别写到两个不同操作模块,无需将不连续的数据整理搬移成连续的数据块,大大提高了存储不连续逻辑数据的效率。
本发明实施例还提供一种闪存存储器接收数据的方法,其所述闪存存储器上设置有第一操作模块和第二操作模块,以及所述闪存存储器的外部随机存储器XRAM上设置有第一逻辑映射表和第二逻辑映射表,如图2所示,该方法包括:
S210、接收从主机发送的逻辑数据;
S220、判断所述逻辑数据为大数据还是小数据;
S230、根据所述判断的结果,如果是大数据,则将所述大数据按照顺序写到第一操作模块,并将该大数据的逻辑地址按照顺序存储到所述第一逻辑映射表,如果是小数据,则将所述小数据按照顺序写到第二操作模块,并将该小数据的逻辑地址按照顺序存储到所述第二逻辑映射;
S240、将所述逻辑数据与其逻辑地址的对应关系存入所述闪存存储器的NAND闪存中。
其中:所述步骤S230具体包括:
根据判断的结果所述逻辑数据是大数据,则将指针指向第一操作模块,并在所述第一操作模块上取一个空白页,将所述大数据写到所述空白页上,按照同样过程并按照顺序将所有接收到的大数据按照顺序写到所述第一操作模块上;以及根据判断的结果所述逻辑数据是小数据,则将指针指向第二操作模块,并在所述第二操作模块上取一个空白页,将所述小数据写到所述空白页上,按照同样过程并按照顺序将所有接收到的小数据按照顺序写到所述第二操作模块上。
上述实施例提供的方法,在闪存存储器中设置两个操作模块做为接收逻辑数据的缓存块,将逻辑数据区分为大数据(如:文件数据)和小数据(如:***数据),分别写到两个不同操作模块,无需将不连续的数据整理搬移成连续的数据块,大大提高了存储不连续逻辑数据的效率。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。