使用非易失随机读写存储芯片动态管理文件存储区的方法

文档序号:9865135阅读:378来源:国知局
使用非易失随机读写存储芯片动态管理文件存储区的方法
【技术领域】
[0001]本发明涉及存储领域,尤其涉及一种使用非易失随机读写存储芯片动态管理存储区的方法及利用MRAM存储小文件的存储结构。
【背景技术】
[0002]现在计算机、智能手机、平板电脑中,用户数据、文件被存在硬盘,或者NAND闪存芯片中以及由NAND闪存组成的固态硬盘里。NAND和固态硬盘取代传统的机械硬盘又是一个产业发展的大趋势。
[0003]硬盘和固态硬盘内的NAND闪存都是整块读写的块设备(block device),最小可读取的单元叫页(page),最小可擦除的单元叫块(block),一个块往往由很多页组成,块擦除后里面的页可以进行单独的写入操作。
[0004]NAND闪存的一个问题是NAND具有有限的寿命。里面的每一个页经过一定次数的擦写以后,就会永久失效不能继续使用。目前的产业发展趋势是NAND的容量和数据密度增长非常快,但却是以降低寿命为代价。可擦写次数从最初的10万次降低到目前的3000次左右。
[0005]如图1所示,手机与计算机的文件操作方式如下:
[0006](I)应用软件向操作系统发出打开、关闭、读、写文件指令;
[0007](2)操作系统中的文件系统部分把读、写文件的指令转化为读、写存储块的指令;
[0008](3)NAND驱动与管理软件接受读写存储块区的指令,进行缓存、写均衡等优化,向芯片发出读page,写block等指令。
[0009]在手机中,NAND驱动与管理软件通常作为与操作系统紧密相关的软件模块,在主机芯片上运行;在计算机中,NAND驱动与管理软件通常在固态硬盘的主控芯片上运行。
[0010]文件系统是操作系统软件中的一个重要部分,负责解决文件的存储问题。它会把文件划分成一个个的块,一般每一个块和NAND闪存中的一个页对应。每当一个新文件创建,文件系统会分配给它一个块,当一个块写满后,再分配一个新的块。由于系统中很多文件都在增长,一个文件中的不同的块常常地址不连续,这就是文件的碎片化。并且,一个文件删除后,释放出的空闲块会被新的文件占用。所以,随着产品的使用,文件的碎片化会越来越严重。
[0011 ]随着当代技术的发展,NAND闪存的密度越来越大。于此同时,页和块的尺寸也变得越来越大。页从几年前的512字节(byte)变成了今天的16Kbyte;块从几年前的16Kbyte变成了今天的8192Kbyte。
[0012]而一个计算机系统中相当数量的文件是小文件,从10-20字节,到几百个字节。小文件中最典型的例子就是文件夹目录。在大部分文件系统中,目录也是作为一个单独的文件存储的。大部分目录文件都很小,而且被修改的几率非常高。不适合存储在block device里。
[0013]计算机文件系统中文件的最小存储单元,一般和NAND的页一样大。因此NAND越来越不适于存储这样的小文件。为存储一个20字节的文件,要占用16Kbyte的空间,存储空间的利用率非常低。为修改这样一个20字节的小文件,甚至可能要对8192Kbyte的数据进行擦除重写,极大地加重了系统的负担。
[0014]—种方法是利用MRAM保存小文件,MRAM是一种新的内存和存储技术,可以像RAM—样快速随机读写,还可以像NAND闪存一样在断电后永久保留数据。不像NAND,MRAM可以无限多次地擦写。但预计未来相当长一段时间内,MRAM的容量比NAND低,成本比NAND高。
[0015]MRAM中设置小文件存储区,用于保存小文件,把小文件存储区分成多个存储区,每个存储区由同样大小的块组成,多个存储区的块的容量依次增大。
[0016]这种方法存储小文件采用的块的容量,小于块存储设备的块的容量,因而能够提高存储空间的利用率。在修改文件时,首先需要擦除的块较小,能够降低系统的负担;其次修改操作是在MRAM中完成,而不是在硬盘或NAND中完成,在MRAM中操作要比在硬盘或NAND中快得多,整个系统的性能会因此提升。另外减少了对NAND的写入,延长了系统寿命。
[0017]但这种方法也存在不足之处,每个存储区的总块数是固定的,缺乏灵活性。

【发明内容】

[0018]有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种使用非易失随机读写存储芯片动态管理文件存储区的方法,当一个子存储区的存储块用完或空闲存储块的数量少于设定值时,征用相邻的子存储区的存储空间,根据应用环境能够动态调整子存储区中存储块的数量,从而能够提高存储空间的利用率。
[0019]本发明提供一种使用非易失随机读写存储芯片动态管理文件存储区的方法,非易失随机读写存储芯片包括文件存储区、文件目录区以及管理区,文件存储区由N个地址连续并且相连接的子存储区组成,每个子存储区由相同大小的存储块组成,文件目录区记录每个文件对应的子存储区以及子存储区中的存储块信息,管理区存储子存储区的信息;第i+1个子存储区与第i个子存储区的存储块的容量的比为不等于I的整数比,其中i为子存储区序号,I < i SN,动态管理文件存储区的方法包括以下步骤:
[0020](I)第i个子存储区需要动态调整时,征用第i+Ι个子存储区中与第i个子存储区相邻的连续多个存储块,条件是第i+Ι个子存储区存在,或者征用第1-Ι个子存储区中与第i个子存储区相邻的连续多个存储块,条件是第1-Ι个子存储区存在;
[0021](2)当征用第i+Ι个子存储区中的存储块时,如果第i+Ι个子存储区与第i个子存储区的存储块的容量的比为m: η,其中m、n为整数,m在η,检查m*k个存储块中的每一个存储块,其中k为整数,如果存储块中已存储数据,将数据移至第i+Ι个子存储区中m*k个存储块之外的空闲存储块中;同时更新文件目录区中的相应文件对应的子存储区以及子存储区中的存储块信息;更新管理区中相应的子存储区的信息,第i+Ι个子存储区的m*k个存储块,作为第i个子存储区中的n*k个存储块使用;
[0022](3)当征用第1-Ι个子存储区中的存储块时,如果第1-Ι个子存储区与第i个子存储区的存储块的容量的比为g: h,其中g、h为整数,g在h,检查所述g* I个存储块中的每一个存储块,其中I为整数,如果存储块中已存储数据,将数据移至所述第1-Ι个子存储区中所述g*I个存储块之外的空闲存储块中;同时更新所述文件目录区中的相应文件对应的子存储区以及子存储区中的存储块信息;更新所述管理区中相应的子存储区的信息,所述第1-Ι个子存储区的所述g* I个存储块,作为所述第i个子存储区中的h* I个存储块使用。
[0023]动态调整子存储区的存储块的数量,可以灵活地调整各个子存储区的空间,使得在任何应用环境下,都可以得到最优的配置,提高存储效率。
[0024]进一步地,步骤(2)检查m*k个存储块中的每一个存储块,如果存储块中已存储数据,将数据移至第i + Ι个子存储区中m*k个存储块之外的空闲存储块中的方法包括以下步骤:
[0025](21)等待存储块中的数据对应的文件读写操作完成后,锁定文件;
[0026](22)将存储块中的数据拷贝到第i +1个子存储区中m*k存储块之外的一个空闲存储块中;
[0027](23)更新文件目录区中文件对应的子存储区以
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1