一种数据存储方法、存储设备及存储***
技术领域
本发明涉及数据存储技术领域,尤其涉及一种数据存储方法、存储设备及存储***。
背景技术
目前许多存储设备上进行数据存储时经常会使用到FAT(File AllocationTable,文件配置表)***进行管理,参考图1,FAT***包括***引导扇区DBR、文件分配表FAT、文件目录表FDT,其中***引导扇区DBR记录着***的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、簇的大小等重要参数;文件分类表FAT用于记录每个文件所在的所占的簇形成的指针链表,在FAT16中每项占两字节,FAT32中每项占4字节,每项代表磁盘上的一个族,每一项的值是某个单向链中的一个指针,一般每个分区有两个相同的FAT表;文件目录表FDT记录文件名、起始FAT项指针、类型、创建时间、修改时间等。
现有的FAT文件***数据写入方式为:先创建需要写入文件的FDT、确定文件名字、起始FAT项指针、类型(是文件还是目录)、创建时间、修改时间、访问时间等信息,之后将用户数据分段写入目标设备(例如U盘,由于USB2.0每条命令最多只能接收64K的数据,所以需要分段),在连续多段数据后(对于USB2.0,16段共1MB数据),主机会写入一个4K的FDT更新数据,修改文件对应的修改时间,然后继续传下一段数据,当所有对应的用户数据全部写入后,统一更新文件对应的FAT表格,文件写入完成。由于在大数据写入过程中,用户数据和文件***表格都会穿插存储到NAND FLASH中,导致用户数据不能连续的存储到NAND FLASH的物理块中,影响连续写入的速度,虽然NAND FLASH可以使用Cache Program的方式加速,但如果中间***文件***数据则Cache Program会被打断,导致写入速度降低。参考图2,文件***的大部分数据都是相同逻辑地址的覆盖,导致NAND FLASH物理块中会出现很多无效的物理页,后期物理块回收的效率变低。
发明内容
本发明的目的在于针对上述现有技术中的数据存储时因为文件目录表频繁写入带来的用户数据写入速度变慢的问题,提出一种数据存储方法、存储设备及存储***,能够有效提高用户数据的写入速度。
一种数据存储方法,包括:
在静态随机存储器内建立高速缓冲存储模块;
接收主机发送的数据,并获取所述数据的写入地址和数据长度;
根据所述数据的写入地址和数据长度,判断所述数据为用户数据还是***表格数据;
如果所述数据为用户数据,则将所述用户数据写入NAND FLASH存储器中;
如果所述数据为***表格数据,则将所述***表格数据缓存至所述高速缓冲存储模块中。
进一步地,所述高速缓冲存储模块的空间大小为4KB。
进一步地,根据所述数据的写入地址和数据长度,判断所述数据为用户数据还是***表格数据,包括:
判断所述写入地址与上一次数据的写入地址是否连续;
如果所述写入地址与上一次数据的写入地址连续,则确定所述数据为用户数据;
如果所述写入地址与上一次数据的写入地址不连续,则检测所述数据长度是否为4KB,如果所述数据长度不是4KB,则确定所述数据为用户数据,如果所述数据长度为4KB,则确定所述数据为***表格数据。
进一步地,将所述***表格数据缓存至所述高速缓冲存储模块中,包括:
检测所述高速缓冲存储模块是否为空;
如果为空,则将所述***表格数据缓存至所述高速缓冲存储模块中;
如果不为空,则判断所述高速缓冲存储模块中数据的地址和当前待写入的***表格数据的地址是否相同,如果相同,则将所述***表格数据写入至所述高速缓冲存储模块中,如果不相同,则将所述高速缓冲存储模块中的数据写入NAND FLASH存储器中,再将所述***表格数据写入所述高速缓冲存储模块中。
一种数据存储设备,包括主控单元和NAND FLASH存储器,所述主控单元包括静态随机存储器,所述NAND FLASH存储器存储多条指令,所述主控单元用于读取所述指令并执行:
在静态随机存储器内建立高速缓冲存储模块;
接收主机发送的数据,并获取所述数据的写入地址和数据长度;
根据所述数据的写入地址和数据长度,判断所述数据为用户数据还是***表格数据;
如果所述数据为用户数据,则将所述用户数据写入NAND FLASH存储器中;
如果所述数据为***表格数据,则将所述***表格数据缓存至所述高速缓冲存储模块中。
进一步地,所述高速缓冲存储模块的空间大小为4KB。
进一步地,所述主控单元接收主机发送的数据,并获取所述数据的写入地址和数据长度之后,还用于执行:
判断所述写入地址与上一次数据的写入地址是否连续;
如果所述写入地址与上一次数据的写入地址连续,则确定所述数据为用户数据;
如果所述写入地址与上一次数据的写入地址不连续,则检测所述数据长度是否为4KB,如果所述数据长度不是4KB,则确定所述数据为用户数据,如果所述数据长度为4KB,则确定所述数据为***表格数据。
进一步地,如果所述数据为***表格数据,所述主控单元还用于执行:
检测所述高速缓冲存储模块是否为空;
如果为空,则将所述***表格数据缓存至所述高速缓冲存储模块中;
如果不为空,则判断所述高速缓冲存储模块中数据的地址和当前待写入的***表格数据的地址是否相同,如果相同,则将所述***表格数据写入至所述高速缓冲存储模块中,如果不相同,则将所述高速缓冲存储模块中的数据写入NAND FLASH存储器中,再将所述***表格数据写入所述高速缓冲存储模块中。
一种数据存储***,包括上述的数据存储设备,还包括主机,所述主机与所述数据存储设备连接。
进一步地,所述数据存储设备为U盘或SD卡。
本发明提供的数据存储方法、存储设备及存储***,至少包括如下有益效果:
在静态随机存储器内增加4KB的高速缓冲存储模块,当FAT文件***写入大数据时将4KB的***表格数据(FDT)缓存起来,一方面可以减少NAND FLASH写入数据,延长NANDFLASH的使用寿命,另一方面能够在一定程度上降低***表格数据写入的频率,提高用户数据的写入速度。
附图说明
图1为FAT文件***结构示意图。
图2为采用现有的方式写入数据的数据结构示意图。
图3为本发明提供的数据存储方法一种实施例的步骤图。
图4为本发明提供的数据存储方法中判断数据类型和缓存***表格数据的流程图。
图5为本发明提供的数据存储设备一种实施例的结构示意图。
图6为本发明提供的数据存储***一种实施例的结构示意图
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例一
参考图3,本实施例提供一种数据存储方法,包括:
步骤S101,在静态随机存储器内建立高速缓冲存储模块;
步骤S102,接收主机发送的数据,并获取所述数据的写入地址和数据长度;
步骤S103,根据所述数据的写入地址和数据长度,判断所述数据为用户数据还是***表格数据;
步骤S104,如果所述数据为用户数据,则将所述用户数据写入NAND FLASH存储器中;
步骤S105,如果所述数据为***表格数据,则将所述***表格数据缓存至所述高速缓冲存储模块中。
具体地,执行步骤S101,在静态随机存储器(SRAM)中建立高速缓冲存储(Cache)模块,该高速缓冲存储模块的空间大小为4KB。
进一步地,执行步骤S102,接收主机发送的数据,获取该数据的写入地址和数据长度,该写入地址和数据长度用于判断该数据的类型(用户数据还是***表格数据)。
进一步地,执行步骤S103,参考图4,判断所述数据为用户数据还是***表格数据,包括:
判断所述写入地址与上一次数据的写入地址是否连续;
如果所述写入地址与上一次数据的写入地址连续,则确定所述数据为用户数据;
如果所述写入地址与上一次数据的写入地址不连续,则检测所述数据长度是否为4KB,如果所述数据长度不是4KB,则确定所述数据为用户数据,如果所述数据长度为4KB,则确定所述数据为***表格数据。
进一步地,执行步骤S104,当确定数据为用数据之后,直接将用户数据写入NANDFLASH存储器中。
进一步地,执行步骤S105,当确定数据为***表格数据之后,检测高速缓冲存储模块是否为空,如果为空,则将所述***表格数据缓存至所述高速缓冲存储模块中;如果不为空,则判断高速缓冲存储模块中数据的地址和当前待写入的***表格数据的地址是否相同,如果相同,则将所述***表格数据写入至所述高速缓冲存储模块中,如果不相同,则将所述高速缓冲存储模块中的数据写入NAND FLASH存储器中,再将所述***表格数据写入所述高速缓冲存储模块中。
本实施例中所述的***表格数据为FDT表格。
本实施例提供的数据存储方法,在静态随机存储器内增加4KB的高速缓冲存储模块,当FAT文件***写入大数据时将4KB的***表格数据(FDT)缓存起来,一方面可以减少NAND FLASH写入数据,延长NAND FLASH的使用寿命,另一方面能够在一定程度上降低***表格数据写入的频率,提高用户数据的写入速度。
实施例二
参考图5,本实施例提供一种数据存储设备,包括主控单元201和NAND FLASH存储器202,主控单元201包括静态随机存储器203,NAND FLASH存储器202存储多条指令,主控单元201用于读取所述指令并执行:
在静态随机存储器203内建立高速缓冲存储模块2031;
接收主机发送的数据,并获取所述数据的写入地址和数据长度;
根据所述数据的写入地址和数据长度,判断所述数据为用户数据还是***表格数据;
如果所述数据为用户数据,则将所述用户数据写入NAND FLASH存储器202中;
如果所述数据为***表格数据,则将所述***表格数据缓存至高速缓冲存储模块2031中。
进一步地,在静态随机存储器(SRAM)203中建立的高速缓冲存储(Cache)模块2031的空间大小为4KB。
进一步地,主控单元201接收主机发送的数据,获取该数据的写入地址和数据长度之后,还用于执行:
判断所述写入地址与上一次数据的写入地址是否连续;
如果所述写入地址与上一次数据的写入地址连续,则确定所述数据为用户数据;
如果所述写入地址与上一次数据的写入地址不连续,则检测所述数据长度是否为4KB,如果所述数据长度不是4KB,则确定所述数据为用户数据,如果所述数据长度为4KB,则确定所述数据为***表格数据。
主控单元201确定数据为用数据之后,直接将用户数据写入NAND FLASH存储器202中。
进一步地,当确定数据为***表格数据之后,主控单元201还用于执行:
检测高速缓冲存储模块2031是否为空;
如果为空,则将所述***表格数据缓存至高速缓冲存储模块2031中;
如果不为空,则判断高速缓冲存储模块2031中数据的地址和当前待写入的***表格数据的地址是否相同,如果相同,则将所述***表格数据写入至高速缓冲存储模块2031中,如果不相同,则将高速缓冲存储模块2031中的数据写入NAND FLASH存储器202中,再将所述***表格数据写入高速缓冲存储模块2031中。
本实施例中所述的***表格数据为FDT表格。
本实施例提供的数据存储设备,在静态随机存储器内增加4KB的高速缓冲存储模块,当FAT文件***写入大数据时将4KB的***表格数据(FDT)缓存起来,一方面可以减少NAND FLASH写入数据,延长NAND FLASH的使用寿命,另一方面能够在一定程度上降低***表格数据写入的频率,提高用户数据的写入速度。
实施例三
参考图6,本实施例提供一种数据存储***,包括数据存储设备301,还包括主机302,主机302与数据存储设备301连接。
数据存储设备301的具体工作原理请参考实施例二,在此不再赘述。
进一步地,数据存储设备包括但不限于U盘、SD卡等存储设备。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。