NandFlash存储器的访问方法

文档序号:6487025阅读:368来源:国知局
Nand Flash存储器的访问方法
【专利摘要】本发明涉及视频数据的存储,公开了一种Nand?Flash存储器的访问方法。本发明中,将Nand?Flash存储器划分成独立的数据块,通过为每个数据块分配在整个Nand?Flash存储器空间中唯一的全局编号,该编号随着视频数据的写入不断增加,实现对所述Nand?Flash存储器的循环写入,保证可以完全均衡地使用各个存储块,使得各个数据块具有完全一致的使用率,从而使得Nand?Flash存储介质的使用寿命大大提高,同时能够更高效地利用存储空间和更高效地进行视频数据的访问。
【专利说明】Nand Flash存储器的访问方法
【技术领域】
[0001]本发明涉及视频数据的存储,特别涉及Nand Flash存储器的访问方法。
【背景技术】
[0002]车载视频监控近几年得到了快速的发展和应用。由于车辆在行驶过程中的震动,导致采用传统的硬盘存储技术的监控产品面临很大的问题。为了进行抗震,许多公司都发明了各种各样的硬盘减震技术,但是应用的效果一般,损坏率都比较高,使用成本高。随着电子技术的迅猛发展,基于Nand Flash的存储技术得到了广泛的应用,比如SD卡,USB磁盘等等。基于Nand Flash介质的存储体容量越来越大,价格越来越低,而且Nand Flash介质存储体的天然抗震特性,使得应用到车载监控领域进行视频类数据的存储是一个必然的趋势。但由于Nand Flash介质每个数据块写入次数有限,大大影响了在车载领域的推广。
[0003]由于车载监控应用的特点,对存储技术有一些特殊的需求:
[0004](I)由于应用条件比较恶劣,电压不稳定或者任意情况下断电,在这种情况下,数据不能丢失,特别是存储系统不能不可用。
[0005](2)由于视频数据在丢失一些情况下依然可用,那么要求该文件系统应该在磁盘出现很多坏块的情况下依然可用,必须具有一定的容错能力。
[0006](3)视频数据量都非常巨大,如何能在海量数据里具有快速的数据读写能力。
[0007]面对上述需求,通用的文件系统是不能胜任的,因为会很快地导致一些关键的数据块出现损坏和掉电导致的损坏,从而导致文件系统不可用。也存在一些专门针对NandFlash介质的文件存储系统,比如JFFS2、YAFFS2、TrueFFS,LogFS等等,但这些技术方案,适合于可靠性要求高的数据的存储,应用于视频这类可靠性要求不是很高的数据类型,存在存储效率明显偏低的问题。

【发明内容】

[0008]本发明的目的在于提供一种Nand Flash存储系统及访问方法,使得Nand Flash存储介质的读与次数大大提闻,从而更闻效地利用存储空间。
[0009]为解决上述技术问题,本发明的实施方式提供了一种Nand Flash存储器的访问方法,包含以下步骤:
[0010]将Nand Flash存储器划分成独立的数据块;
[0011]为每个数据块分配在整个Nand Flash存储器中唯一的全局编号,该编号随着视频数据的写入不断增加;
[0012]在需要存储视频数据时,将所述视频数据循环写入所述数据块中;每次写入所述视频数据时,将所述视频数据写入已经使用的数据块中编号最大的数据块的后面一个数据块中;
[0013]在需要读取视频数据时,根据全局编号建立全局分级索引,查找定位所述数据块,并从所述数据块中读取视频数据。[0014]本发明实施方式相对于现有技术而言,将Nand Flash存储器划分成独立的数据块,通过为每个数据块分配在整个Nand Flash存储器中唯一的全局编号,该编号不断增加,实现对所述Nand Flash存储器的循环写入,保证可以完全均衡地使用各个存储块,使得各个数据块完全一致的使用率,从而使得Nand Flash存储介质的读写次数大大提高,更高效地利用存储空间和更高效地进行视频数据的访问。
[0015]另外,在将所述视频数据循环写入所述数据块中的步骤中,还包含以下子步骤:
[0016]将写入位置和开始位置存放在内存中;
[0017]在进行视频数据写入时,直接根据内存中存放的写入位置将所述视频数据写入相应数据块中;如果发生写入位置覆盖开始位置,那么将开始位置向后移动一个数据块;
[0018]在所述根据全局编号建立全局分级索引,查找定位所述数据块,并从所述数据块中读取视频数据的步骤中,还包含以下子步骤:
[0019]根据全局编号和物理位置建立索引,将该索引存放在内存中;
[0020]在进行视频数据读取时,直接根据内存中存放的索引查找欲读取的数据块,并读取相应数据块中的视频数据。
[0021]通过直接使用内存中存放写入位置、开始位置和全局编号和物理位置的索引可以完成对Nand Flash存储器的高效访问,使本发明具有很小的内存使用率。
[0022]另外,在所述将所述视频数据循环写入所述数据块中的步骤中,包含以下子步骤:
[0023]将头信息、视频数据、尾信息依次写入所述数据块中;
[0024]其中,所述头信息和尾信息相同,包含全局编号globalblockno。
[0025]在存储视频数据时,通过依次写入头信息、视频数据、尾信息,在读取数据时可以通过比较头信息和尾信息是否相同来判断在写入一个数据块的过程中是否发生异常现象,从而保证正确可靠的写入与读取。
[0026]另外,所述头信息和尾信息还包含用户数据userdata,用于根据用户自定义的标签进行数据的查找定位,便于根据用户自定义的标签对视频数据进行查找定位。
[0027]另外,所述头信息和尾信息还包含校验值CrC32Value,用于存储每个数据块的校验信息,从而可以判断该数据块的完整性;
[0028]在所述将所述视频数据循环写入所述数据块中的步骤中,包含以下子步骤:
[0029]对每个数据块进行循环冗余CRC校验,得到校验值;
[0030]将所述校验值存储到所述头信息和尾信息中;
[0031]在根据全局编号和物理位置建立索引,查找定位所述数据块,并从所述数据块中读取视频数据的步骤中,包含以下子步骤:
[0032]判断所述数据块的头信息和尾信息是否相同,所述头信息中的校验值是否正确;
[0033]如果两个判断结果均为是,则说明所述数据块中的数据正确,从所述数据块中读取视频数据;
[0034]如果两个判断结果之一为否,则说明所述数据块中的数据不正确,返回所述数据块异常的提示。
[0035]通过对每个数据块进行独立地校验,进行数据的容错,互不影响,因此使本发明具有极强的容错性,任意一段数据存储的损坏,都不会导致存储不可用,系统的关键元信息是分布式地存储到整个存储中,不存在哪一块是关键块的问题,大大降低了数据丢失的风险。
[0036]另外,在所述将Nand Flash存储器划分成独立的数据块的步骤之后,还包含以下步骤:
[0037]将数据块进行群组划分;
[0038]在进行视频数据的读写访问时,采用分层的树结构对需访问的数据块进行定位。
[0039]通过采用分层的树结构这种分级目录管理方式,使得在读取视频数据时,可以逐渐进行向下探索,非常迅速地找到欲读取的数据块,实现快速访问。
[0040]另外,所述Nand Flash存储器有两个或者两个以上,按照分配全局唯一编号的方式,将这些Nand Flash存储器联合起来,组成一个虚拟的存储器,再进行数据的读写访问。可以扩展存储空间,提供更好的服务,使本发明具有出色的可伸缩性,并且支持大型flash存储体。
【专利附图】

【附图说明】
[0041]图1是根据本发明第一实施方式的Nand Flash存储器的访问方法的流程图;
[0042]图2是根据本发明第一实施方式的Nand Flash存储器的访问方法的Nand Flash存储器中数据块的群组划分树结构示意图。
【具体实施方式】
[0043]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
[0044]本发明的第一实施方式涉及一种Nand Flash存储器的访问方法,该方法将将NandFlash存储器划分成独立的数据块;为每个数据块分配在整个Nand Flash存储器中唯一的全局编号,该编号随着视频数据的写入不断增加;在需要存储视频数据时,将所述视频数据循环写入所述数据块中;每次写入所述视频数据时,将所述视频数据写入已经使用的数据块中编号最大的数据块的后面一个数据块中;在需要读取视频数据时,根据全局编号建立全局分级索引,查找定位相对应的数据块,并从数据块中读取视频数据。本实施方式将Nand Flash存储器划分成独立的数据块,通过为每个数据块分配在整个Nand Flash存储器中唯一的全局编号,实现对所述Nand Flash存储器的循环写入,保证可以完全均衡地使用各个存储块,使得各个数据块完全一致的使用率,从而使得Nand Flash存储介质的读写次数大大提高,更高效地利用存储空间和更高效地进行视频数据的访问。
[0045]本实施方式的流程如图1所示,具体步骤如下:
[0046]步骤101,将Nand Flash存储器划分成独立的数据块,也就是说,将一块NandFlash存储划分成独立的小块进行管理,比如说,将一个容量为32千兆字节(GB)的安全数码卡(Secure Digital Memory Card,简称“SD卡”)划分成一定大小的数据块进行管理,t:匕如每个数据块的大小为32千字节(Kbytes)。
[0047]步骤102,为每个数据块分配在整个Nand Flash存储器中唯一的全局编号,该编号随着视频数据的写入不断增加。可以在每个数据块中分配尽量大的存储空间,比如64位bit,用于存储该编号,以免溢出。
[0048]为了高效地进行数据的写入和读出定位,可以将数据块再进一步进行群组的划分,即步骤103,在进行视频数据的读写访问时,采用分层的树结构对需访问的数据块进行定位。通过采用分层的树结构这种分级目录管理方式,使得在读取视频数据时,可以逐渐进行向下探索,非常迅速地找到欲读取的数据块,实现快速访问。比如上述提到的32GB的SD卡,可以进行如下群组划分,如图2所示,第O级将32G划分为64个512M,第I级将每个512M划分为32个16M,第2级将每个16M划分为8个2M,第3级(即data层)将2M划分为64个32K。在进行数据定位时,根据上述分层的树结构,对于一个32G的文件系统,最多只需要64+32+8+64=168次数据查找工作即可完成数据的定位工作,具有闪电般的工作速度。
[0049]步骤104,在需要存储视频数据时,将所述视频数据循环写入所述数据块中;每次写入所述视频数据时,将所述视频数据写入已经使用的数据块中编号最大的数据块的后面一个数据块中;具体地说,将头信息、视频数据、尾信息依次写入数据块中;其中,头信息和尾信息相同,包含全局编号globalblockno。在存储视频数据时,通过依次写入头信息、视频数据、尾信息,由于写入的时候,依照的是一个从开始到结束的顺序,这在Nand Flash上是一个合理的假设,在读取数据时可以通过比较头信息和尾信息是否相同来判断在写入一个数据块的过程中是否发生异常现象,从而保证正确可靠的写入与读取。此外,为了尽可能使Nand Flash存储器得到充分利用,每次写入视频数据时,写入数据的大小与划分的数据块大小相同或者尽量相同。
[0050]米用全局编号globalblockno策略,对Nand Flash存储器进行循环写入。为每次写入分配一个新的编号,该新的编号为目前整个存储器中已经使用的最大编号加I ;其中,如果存储器是未使用的存储器,那么编号从I开始;将编号中最小编号对应的数据块作为Nand Flash存储器中视频数据开始存放的位置;将最大编号加I作为当前写入数据的写入位置;发生循环写入时,会出现最新写入位置覆盖最小编号数据块的情况,也就是说,如果已经发生循环写入,那么覆盖最小编号对应的数据块,写入位置和开始位置会同时移动。。
[0051]步骤105,在需要读取视频数据时,根据全局编号建立全局分级索引,查找定位相对应的数据块,并从数据块中读取视频数据。由于采用了分层的树结构对数据块进行分级目录管理,因此在读取视频数据时,可以逐渐进行向下探索,非常迅速地找到欲读取的数据块,实现快速访问。
[0052]此外,由于采用了循环写入的策略,基本上使用两个指针,即写入位置和开始位置,即可完成系统的高效写入,使本实施方式具有很小的内存使用率,也就是说,将开始位置、写入位置存放在内存中;在进行视频数据写入时,直接根据内存中存放的写入位置将所述视频数据写入相应数据块中;如果发生写入位置覆盖开始位置,那么将开始位置向后移动一个数据块;在进行视频数据读取时,根据全局编号和物理位置建立索引,将该索引存放在内存中;直接根据内存中存放的索引查找欲读取的数据块,并读取相应数据块中的视频数据。另外,由于采用循环写入的方法,大编号以后的数据块自动成为垃圾,不用特殊的管理,这种管理新旧数据块的方法,可以提高数据访问速度。
[0053]经实践证明,将本实施方式的存储方案应用到数千个视频监控设备的前端存储方案中,没有发生过一次由于存储而导致的问题,取得了非常大的成功。而且,存储介质在接受每天24小时不断写入的情况下,由于采用了完全平均一致的写入平衡策略,在简单性,适用性,和可靠性上都取得了很好的效果。此外,快速定位方法保证了存储系统初始化非常快速;读取的时候,采用分级目录,可以逐渐进行向下探索,非常迅速。
[0054]本发明的第二实施方式涉及一种Nand Flash存储器的访问方法。第二实施方式在第一实施方式基础上做了进一步改进,主要改进之处在于:在本发明第二实施方式中,头信息和尾信息还包含用户数据userdata,用于根据用户自定义的标签进行数据的查找定位,便于根据用户自定义的标签对视频数据进行查找定位。比如说,时间标签,可以根据时间来对视频数据进行查找,实现对数据的快速访问。
[0055]本发明的第三实施方式涉及一种Nand Flash存储器的访问方法。第三实施方式在第一实施方式或第二实施方式基础上做了进一步改进,主要改进之处在于:在本发明第三实施方式中,头信息和尾信息还包含校验值crC32Value,用于存储每个数据块的校验信息;通过对每个数据块进行独立地校验,进行数据的容错,互不影响,因此使本发明具有极强的容错性,任意一段数据存储的损坏,都不会导致存储不可用,系统的关键元信息是分布式地存储到整个存储中,不存在哪一块是关键块的问题,大大降低了数据丢失的风险。
[0056]具体地说,在将视频数循环写入数据块中时,对每个数据块进行循环冗余CRC校验,得到校验值;将校验值存储到头信息和尾信息中。
[0057]在根据全局编号和物理位置建立索引,查找定位数据块,并从数据块中读取视频数据时,判断数据块的头信息和尾信息是否相同,头信息中的校验值是否正确;如果两个判断结果均为是,则说明数据块中的数据正确,从数据块中读取视频数据;如果两个判断结果之一为否,则说明数据块中的数据不正确,返回数据块异常的提示。
[0058]举例来说,头信息和尾信息可以采用如下数据结构:
[0059]
struct ATOMBLOCKHDR
{
unsigned longdwI IeaderVersion;
unsigned longmagicdatablock; //'RECB'
unsigned —i nt64 global blockno; // 数据块全局唯一的编号
unsigned —ini 64 userdata;
unsigned lory datasizelnThisBlock; //——写满的 unsigned 1ru crc32value;
t.[0060] 而数据写入的结构顺序为:AT0MBL0CKHDR+实际数据【32K - sizeof(AT0MBL0CKHDR)】 +AT0MBL0CKHDR。整个存储方案是采用支持原子写入的数据块组成,每块都有自己的元信息可供使用,互不影响,具有很好的容错能力的方法。
[0061 ] 本发明的第四实施方式涉及一种Nand Flash存储器的访问方法。第四实施方式在第一实施方式、第二实施方式或第三实施方式基础上做了进一步改进,主要改进之处在于:在本发明第四实施方式中,Nand Flash存储器可以有两个或者两个以上,按照分配全局唯一编号的方式,将这些Nand Flash存储器联合起来,组成一个虚拟的存储器,进行数据的读写访问。可以扩展存储空间,提供更好的服务,使本发明具有出色的可伸缩性,并且支持大型flash存储体。
[0062]上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
[0063]本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
【权利要求】
1.一种Nand Flash存储器的访问方法,其特征在于,包含以下步骤: 将Nand Flash存储器划分成独立的数据块; 为每个数据块分配在整个Nand Flash存储器中唯一的全局编号,该编号随着视频数据的写入不断增加; 在需要存储视频数据时,将所述视频数据循环写入所述数据块中;每次写入所述视频数据时,将所述视频数据写入已经使用的数据块中编号最大的数据块的后面一个数据块中; 在需要读取视频数据时,根据全局编号建立全局分级索引,查找定位所述数据块,并从所述数据块中读取视频数据。
2.根据权利要求1所述的NandFlash存储器的访问方法,其特征在于,在将所述视频数据循环写入所述数据块中的步骤中,包含以下子步骤: 为每次写入分配一个新的编号,所述新的编号为目前整个存储器中已经使用的最大编号加I ;其中,如果所述存储器是未使用的存储器,那么编号从I开始; 将所述编号中最小编号对应的数据块作为所述Nand Flash存储器中视频数据开始存放的位置; 将最大编号加I作为当前写入数据的写入位置; 如果已经发生循环写入,那么覆盖最小编号对应的数据块,写入位置和开始位置会同时移动。
3.根据权利要求2所述的NandFlash存储器的访问方法,其特征在于,在将所述视频数据循环写入所述数据块中的 步骤中,还包含以下子步骤: 将写入位置和开始位置存放在内存中; 在进行视频数据写入时,直接根据内存中存放的写入位置将所述视频数据写入相应数据块中;如果发生写入位置覆盖开始位置,那么将开始位置向后移动一个数据块; 在所述根据全局编号建立全局分级索引,查找定位所述数据块,并从所述数据块中读取视频数据的步骤中,还包含以下子步骤: 根据全局编号和物理位置建立索引,将该索引存放在内存中; 在进行视频数据读取时,直接根据内存中存放的索引查找欲读取的数据块,并读取相应数据块中的视频数据。
4.根据权利要求1所述的NandFlash存储器的访问方法,其特征在于,在将所述视频数据循环写入所述数据块中的步骤中,包含以下子步骤: 将头信息、视频数据、尾信息依次写入所述数据块中; 其中,所述头信息和尾信息相同,包含全局编号globalblockno。
5.根据权利要求4所述的NandFlash存储器的访问方法,其特征在于,所述头信息和尾信息还包含用户数据userdata,用于根据用户自定义的标签进行数据的查找定位。
6.根据权利要求4所述的NandFlash存储器的访问方法,其特征在于, 所述头信息和尾信息还包含校验值crC32Value,用于存储每个数据块的校验信息; 在所述将所述视频循环写入所述数据块中的步骤中,包含以下子步骤: 对每个数据块进行循环冗余CRC校验,得到校验值; 将所述校验值存储到所述头信息和尾信息中;在根据全局编号和物理位置建立索引,查找定位所述数据块,并从所述数据块中读取视频数据的步骤中,包含以下子步骤: 判断所述数据块的头信息和尾信息是否相同,所述头信息中的校验值是否正确; 如果两个判断结果均为是,则说明所述数据块中的数据正确,从所述数据块中读取视频数据; 如果两个判断结果之一为否,则说明所述数据块中的数据不正确,返回所述数据块异常的提示。
7.根据权利要求1所述的NandFlash存储器的访问方法,其特征在于,在所述将NandFlash存储器划分成独立的数据块的步骤之后,还包含以下步骤: 将数据块进行群组划分; 在进行视频数据的读写访问时,采用分层的树结构对需访问的数据块进行定位。
8.根据权利要求1所述的NandFlash存储器的访问方法,其特征在于,所述NandFlash存储器有两个或者两个以上,按照分配全局唯一编号的方式,将这些Nand Flash存储器联合起来,组成一个虚拟的存储器,再进行数据的读写访问。
9.根据权利要求1所述的NandFlash存储器的访问方法,其特征在于,在所述将所述视频数据循环写入所述数据块中的步骤中,每次写入所述视频数据时,写入数据的大小与所述划分的数据块大小相同·。
【文档编号】G06F11/07GK103544124SQ201210246402
【公开日】2014年1月29日 申请日期:2012年7月16日 优先权日:2012年7月16日
【发明者】户现锋 申请人:上海塞尚通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1