基于闪存的数据存储方法、装置以及闪存芯片与流程

文档序号:11275951阅读:587来源:国知局
基于闪存的数据存储方法、装置以及闪存芯片与流程

【技术领域】

本发明涉及存储技术领域,尤其涉及基于闪存的数据存储方法、装置以及闪存芯片。



背景技术:

非易失性存储器,诸如固态硬盘(solidstatedrives,ssd),由于其非易失存储特性和高速读写性能,近年来被广泛应用。

ssd在数据存储过程中,其映射算法通常根据物理块的使用次数来存储数据,将数据平均地存储至各个物理块中,以保证每个物理块的使用次数和频率是接近的。

发明人在实现本发明的过程中,发现相关技术存在以下问题:根据上述方法进行数据存储的过程中,没有考虑数据的重要程度,导致一些重要的数据存储在健康状态较差的物理块中,从而导致重要数据容易出现丢失或者破坏。



技术实现要素:

本发明要解决的技术问题是提供基于闪存的数据存储方法、装置以及闪存芯片,解决重要数据容易出现丢失或者破坏的问题。

本发明实施例的一个方面,提供一种基于闪存的数据存储方法,所述闪存包含多个物理块,所述方法包括:获取各空闲的所述物理块的健康状态;确定待存储数据的重要等级;根据所述待存储数据的重要等级,以及所述物理块的健康状态,将所述待存储数据存储至对应的物理块中。

可选地,所述物理块的健康状态具体是根据所述物理块最近一次被访问时的r/b信号等待时长来确定的。

可选地,所述物理块最近一次被访问包括:读操作或者写操作。

可选地,所述确定待存储数据的重要等级包括:根据所述待存储数据的数据类型确定所述待存储数据的重要等级;或者,根据所述待存储数据的用户标识确定所述待存储数据的重要等级。

可选地,所述确定各空闲的所述物理块的健康状态之前,所述方法还包括:接收待存储数据对应的数据存储请求,所述数据存储请求包含至少一个逻辑号;根据所述数据存储请求,搜寻空闲的物理块;

所述根据所述待存储数据的重要等级,以及所述物理块的健康状态,将所述待存储数据存储至对应的物理块中之后,所述方法还包括:

将所述待存储数据所存储的物理块,以及所述待存储数据对应的数据存储请求所包含的逻辑号,建立映射。

本发明实施例的另一方面,提供一种基于闪存的数据存储装置,所述闪存包含多个物理块,所述装置包括:获取模块,用于获取各空闲的所述物理块的健康状态;确定模块,用于确定待存储数据的重要等级;存储模块,用于根据所述待存储数据的重要等级,以及所述物理块的健康状态,将所述待存储数据存储至对应的物理块中。

可选地,所述物理块的健康状态具体是根据所述物理块最近一次被访问时的r/b信号等待时长来确定的。

可选地,所述物理块最近一次被访问包括:读操作或者写操作。

可选地,所述确定模块具体用于:根据所述待存储数据的数据类型确定所述待存储数据的重要等级;或者,根据所述待存储数据的用户标识确定所述待存储数据的重要等级。

可选地,所述装置还包括:接收模块,用于接收待存储数据对应的数据存储请求,所述数据存储请求包含至少一个逻辑号;搜寻模块,用于根据所述数据存储请求,搜寻空闲的物理块;建立模块,用于将所述待存储数据所存储的物理块,以及所述待存储数据对应的数据存储请求所包含的逻辑号,建立映射。

本发明实施例的又一方面,提供一种闪存芯片,所述闪存芯片包括:控制器;以及与所述控制器通信连接的存储器;其中,所述存储器存储有可被所述控制器执行的指令,所述指令被所述控制器执行,以使所述控制器能够执行如上所述的方法。

在本发明实施例中,通过获取空闲物理块的健康状态和待存储数据的重要等级,然后根据待存储数据的重要等级,以及物理块的健康状态来存储所述待存储数据。该实施方式能够将重要的数据存储至健康状态好的物理块中,提升了重要数据存储时的安全性。

【附图说明】

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是本发明本发明实施例提供的一种闪存设备的内部结构示意图;

图2是本发明实施例提供的一种基于闪存的数据存储方法的流程示意图;

图3是本发明实施例提供的一种基于闪存的数据存储方法中确定物理块的健康状态的方法的流程示意图;

图4是本发明实施例提供的一种基于闪存的数据存储方法中一种fat文件系统的逻辑示意图;

图5是本发明另一实施例提供的一种基于闪存的数据存储方法的流程示意图;

图6是本发明实施例提供的一种基于闪存的数据存储装置的结构示意图;

图7是本发明另一实施例提供的一种基于闪存的数据存储装置的结构示意图;

图8是本发明实施例提供的一种闪存芯片的结构示意图。

【具体实施方式】

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

目前,闪存设备主要由闪存介质和闪存控制器两部分构成,如图1所示,图1是本发明实施例提供的一种闪存设备的内部结构示意图。

闪存操作以页(page)为读写单元,以物理块(block)为擦除单元,设备内部的介质访问提供了通道、颗粒封装、颗粒闪存片等多个级别的并行。设备内部以多通道方式组织闪存颗粒封装,每个通道上可连接多个颗粒封装,多颗粒封装之间共享传输通道,但可独立执行指令。每个颗粒封装内部包含两个或多个颗粒,每个颗粒可被独立选中执行指令。颗粒内部可分为多个片,每个片含有一个页大小的寄存器缓存,用于暂存读写数据。

闪存控制器主要负责地址映射、垃圾回收和磨损均衡。闪存通过异地更新的方式缓解闪存单元写前擦除的延迟,由于闪存单元的擦除次数有限,闪存控制器通过磨损均衡算法来平衡设备内部物理块之间的擦除次数,同时垃圾回收算法尽量选择擦除效率高的物理块回收以控制写放大。

可以理解的是,上述闪存设备的闪存控制器能够将数据平均地存储到各个不同的物理块中,从整体上提高了闪存设备的健康状态。然而,在数据存储过程中,没有考虑数据的重要性,导致一些重要的数据(比如文件系统数据)被分配到健康状态差的物理块中,致使重要数据丢失。由于一些数据本身的价值远远比闪存设备本身的成本更高,因此,提高对数据本身的保护会更经济有效。

基于此,请参阅图2,图2是本发明实施例提供的一种基于闪存的数据存储方法的流程示意图。该闪存可具体是u盘(usb存盘,usbflashdisk)和ssd等设备,闪存可具体由闪存控制器和闪存介质组成,闪存控制器的功能可具体由控制芯片实现,闪存介质的功能可具体由存储芯片实现,存储芯片为flash芯片,flash类型的芯片可具体为nandflash芯片等。如图2所述,该方法包括:

s101、获取各空闲的所述物理块的健康状态。

该物理块即闪存介质上的存储数据的物理区域,物理块是数据在磁盘上的存储单位,是上层软件中操作文件时使用的最小操作单元。物理块由扇区组成,从硬件设备上读取一个物理块,实际是从硬件设备读取一个或多个扇区。物理块对应逻辑块,逻辑块与文件相对应。在本实施例中,预先确定每一物理块的健康状态,当有数据存储请求时,获取空闲物理块的健康状态。

物理块的健康状态一定程度上能够反映执行本方法的闪存设备的使用寿命的长短,以及闪存设备读数据/写数据时的工作性能。

其中,如图3所示,确定物理块的健康状态的具体过程包括:

s11、获取所述物理块的历史访问次数;

s12、当所述历史访问次数为大于或者等于预设次数时,获取所述物理块最近一次被访问时的r/b信号等待时长;

s13、根据所述r/b信号等待时长确定所述物理块的健康状态。

在本实施例中,每个物理块都有相应的区域记录历史访问次数。当历史访问次数大于或者等于预设次数时,检查r/b信号等待时长,根据该时长的长短来判断该物理块的健康状态,当该等待时长比较长时,说明物理块的健康状态比较差,当该等待时长比较短时,说明物理块的健康状态比较好。当物理块的历史访问次数较少,则说明该物理块比较新,其r/b信号等待时长之间的区别比较小,可以直接使用第一次访问该物理块时的r/b信号等待时长,以减少计算步骤。

其中,该r/b信号即表示“就绪/忙”,r/b的输出能够显示闪存芯片的状态,r/b处于低电平时,表示有编程、擦除或随机读操作正在进行,操作完成后,r/b会自动返回高电平。通过r/b信号可以判断编程、擦除或随机读操作是否完成,如果是“忙”,表示编程、擦除或随机读操作正在进行中,如果是“就绪”,表示操作完成。

其中,检查r/b信号等待时长,即检查物理块最近一次被访问时的r/b信号等待时长。

其中,最近一次的r/b信号等待时长包括:所述物理块被写入数据时的最近一次的r/b信号等待时长;或者,所述物理块被读取数据时的最近一次的r/b信号等待时长。也即是说,当该物理块最近一次的操作是读取数据,则检查读取数据过程中的r/b信号等待时长,当该物理块最近一次的操作是写入数据,则检查写入数据过程中的r/b信号等待时长。

其中,根据r/b信号等待时长确定物理块的健康状态,由于r/b信号等待时长越长,表示操作时间更长,随着闪存芯片写操作次数的增加,r/b信号等待时长就会增加,因此,物理块的健康状态就会变差。相反地,r/b信号等待时长越短,物理块的健康状态就会越好。

在本实施例中,可以结合一些数据(比如总容量、文件系统所占用的存储空间、系统开销占用的存储空间以及用户习惯等),根据获取的r/b信号等待时长,确定物理块的具体健康状态,并记录该r/b信号等待时长与物理块的具体健康状态的对应关系。例如,r/b信号等待时长为10个cpu时钟周期,其对应的物理块的健康状态为第一级别,r/b信号等待时长为7个cpu时钟周期,其对应的物理块的健康状态为第二级别,r/b信号等待时长为4个cpu时钟周期,其对应的物理块的健康状态为第三级别,等。其中,第一级别表示物理块的r/b信号等待时长大于物理块的初始r/b信号等待时长并且多余的时长在第一预设范围内,第二级别表示物理块的r/b信号等待时长大于物理块的初始r/b信号等待时长并且多余的时长在第二预设范围内,第三级别表示物理块的r/b信号等待时长大于物理块的初始r/b信号等待时长并且多余的时长在第三预设范围内。其中,第一预设范围的时长大于第二预设范围的时长,第二预设范围的时长大于第三预设范围的时长。

需要说明的是,由于是获取所述物理块最近一次被访问时的r/b信号等待时长,并用最近一次的r/b信号等待时长来判断物理块的健康状态,因此,该物理块的健康状态的确定结果是一个动态更新的过程,根据物理块的使用次数以及最近一次的r/b信号等待时长,动态的更新其健康状态。

s102、确定待存储数据的重要等级。

在本实施例中,执行本方法的闪存设备可以主动的识别待存储数据的数据类型,从而根据数据类型确定该待存储数据的重要等级。比如,该待存储数据属于文件系统的元数据时,默认该待存储数据是重要数据。其中,文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于nandflash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。例如,nand闪存的存储文件系统,按其结构主要分为基于块设备的常规文件系统和日志结构的文件系统,基于块设备的文件系统是磁盘存储器最常用的文件系统,比如fat文件系统和ext2文件系统;日志结构的文件系统包括jffs2、yaffs、cffs等。

在本实施例中,执行本方法的闪存设备还可以根据待存储数据的用户标识来确定待存储数据的重要等级。在这里,只有当用户对待存储数据的重要等级进行自定义标注后,在进行数据存储时,闪存设备才能够根据用户标注的标识判断数据的重要程度,该过程是一个被动的确定待存储数据重要等级的过程。

需要说明的是,除了上述两种方法确定待存储数据的等级之外,还可以通过其他方法来确定待存储数据的重要等级。

s103、根据所述待存储数据的重要等级,以及所述物理块的健康状态,将所述待存储数据存储至对应的物理块中。

在本实施例中,确定待存储数据的重要等级,以及空闲物理块的健康状态之后,将最重要的待存储数据写入健康状态最好的空闲物理块中,将次重要的待存储数据写入健康状态较好的空闲物理块中。待存储数据的重要等级与物理块的健康状态之间的对应关系,可以预先设定好,例如,一级重要的待存储数据对应健康状态最好的物理块,二级重要的待存储数据对应健康状态较好的物理块,三级重要的待存储数据对应健康状态一般的物理块,四级重要的待存储数据对应健康状态较差的物理块,其中,一级重要、二级重要、三级重要以及四级重要是按照数据的重要程度从高到低排序的。在确定待存储数据的重要等级后,根据其重要等级自动的查找其对应的物理块。

下面以常用的文件系统fat来举例,如图4所示,其中,超级块、块描述、位表、结点表等数据为元数据,数据块是用于存储真实的数据。由于元数据的访问效率对于整个文件系统的性能有重要的影响,并且它的损坏会导致数据访问失败,因此,元数据是重要数据,相应地,将元数据存储至健康状态好的物理块中。进一步地,经过预定时间后,当检测到该元数据所存储的物理块的健康状态变差了时,可以调整该元数据所存储的物理块,将元数据匹配到其他健康状态好的物理块中。

本发明实施例提供了一种基于闪存的数据存储方法,该方法通过获取空闲物理块的健康状态和待存储数据的重要等级,然后根据待存储数据的重要等级,以及物理块的健康状态来存储所述待存储数据。该实施方式能够将重要的数据存储至健康状态好的物理块中,提升了重要数据存储时的安全性。

请参阅图5,图5是本发明另一实施例提供的一种基于闪存的数据存储方法的流程示意图。如图5所示,该方法包括:

s201、接收待存储数据对应的数据存储请求,所述数据存储请求包含至少一个逻辑号;

s202、根据所述数据存储请求,搜寻空闲的物理块;

s203、获取各空闲的所述物理块的健康状态;

s204、确定待存储数据的重要等级;

s205、根据所述待存储数据的重要等级,以及所述物理块的健康状态,将所述待存储数据存储至对应的物理块中;

s206、将所述待存储数据所存储的物理块,以及所述待存储数据对应的数据存储请求所包含的逻辑号,建立映射。

本实施例与上述实施例的主要区别在于,在根据待存储数据的重要等级,以及物理块的健康状态完成数据存储之后,还根据该存储结果,建立物理块与待存储数据的逻辑号之间的映射。该映射可以用于,当有读数据请求时,可以根据读数据请求携带的逻辑号,并结合物理块与逻辑号之间的映射关系,找到该逻辑号所对应的物理块,然后读取该物理块中的数据。

需要说明的是,在上述读取数据过程中,也可以根据读数据过程中的r/b信号等待时长来更新物理块的健康状态,当物理块健康状态更新,并且数据存储的位置变化了,相应地,对所述映射表进行更新。

其中,所述逻辑号即逻辑块对应的编号。具体文件系统管理的是一个逻辑空间,该逻辑空间即类似于一个大的数组,数组中每个元素就是文件系统操作的基本单位,也即是逻辑块,一般逻辑块从0开始编号,而且,逻辑块是连续的,与逻辑块对应的即物理块。

本发明实施例提供了一种基于闪存的数据存储方法,该方法通过获取空闲物理块的健康状态和待存储数据的重要等级,然后根据待存储数据的重要等级,以及物理块的健康状态来存储所述待存储数据,并且根据存储结果建立相应的映射。一方面,该实施方式能够将重要的数据存储至健康状态好的物理块中,提升了重要数据存储时的安全性,另一方面,读数据时是根据映射关系来获取相应的数据,由于数据存储结合了物理块的健康状态,一定程度上使数据读取的速度更快。

请参阅图6,图6是本发明实施例提供的一种基于闪存的数据存储装置的结构示意图。如图6所示,该装置30包括:获取模块33、确定模块34以及存储模块35。

其中,获取模块33,用于获取各空闲的所述物理块的健康状态;确定模块34,用于确定待存储数据的重要等级;存储模块35,用于根据所述待存储数据的重要等级,以及所述物理块的健康状态,将所述待存储数据存储至对应的物理块中。

在本实施例中,获取模块33和确定模块34分别连接存储模块,获取模块33将获取的各空闲物理块的健康状态发送至存储模块35,确定模块34将确定的待存储数据的重要等级发送至存储模块35,存储模块35根据物理块的健康状态和待存储数据的重要等级来存储待存储数据。

其中,所述物理块的健康状态具体是根据所述物理块最近一次被访问时的r/b信号等待时长来确定的。

其中,所述物理块最近一次被访问包括:读操作或者写操作。

在一些实施例中,请参阅图7,图7与图6的主要区别在于,所述装置30还包括:接收模块31、搜寻模块32以及建立模块36。

其中,接收模块31,用于接收待存储数据对应的数据存储请求,所述数据存储请求包含至少一个逻辑号;搜寻模块32,用于根据所述数据存储请求,搜寻空闲的物理块;建立模块36,用于将所述待存储数据所存储的物理块,以及所述待存储数据对应的数据存储请求所包含的逻辑号,建立映射。

需要说明的是,本发明实施例中的基于闪存的数据存储装置中的各个模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容同样适用于基于闪存的数据存储装置。本发明实施例中的各个模块能作为单独的硬件或软件来实现,并且可以根据需要使用单独的硬件或软件来实现各个单元的功能的组合。

本发明实施例提供了一种基于闪存的数据存储装置,该装置通过获取空闲物理块的健康状态和待存储数据的重要等级,然后根据待存储数据的重要等级,以及物理块的健康状态来存储所述待存储数据,并且根据存储结果建立相应的映射表。一方面,该实施方式能够将重要的数据存储至健康状态好的物理块中,提升了重要数据存储时的安全性,另一方面,读数据时是根据映射表来获取相应的数据,由于数据存储结合了物理块的健康状态,一定程度上使数据读取的速度更快。

请参阅图8,图8是本发明实施例提供的一种闪存芯片的结构示意图。如图8所示,该闪存芯片40包括:控制器41和存储器42,控制器41和存储器42之间电性连接。

存储器42作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于闪存的数据存储方法对应的程序指令/模块(例如,附图6所示的获取模块33、确定模块34以及存储模块35)。控制器41通过运行存储在存储器42中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例基于闪存的数据存储方法。

存储器42可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据基于闪存的数据存储装置的使用所创建的数据等。

所述一个或者多个模块存储在所述存储器42中,当被所述一个或者多个控制器41执行时,执行上述任意方法实施例中基于闪存的数据存储方法,例如,执行以上描述的图2中的方法步骤s101至步骤s103,图3中的方法步骤s11至步骤s13,图5中的方法步骤s201至步骤s206,图6中的模块33-35,图7中的模块31-36的功能。

上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。

本发明实施例提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被电子设备执行上述任意方法实施例中基于闪存的数据存储方法,例如,执行以上描述的图2中的方法步骤s101至步骤s103,图3中的方法步骤s11至步骤s13,图5中的方法步骤s201至步骤s206,图6中的模块33-35,图7中的模块31-36的功能。

本发明实施例提供了一种计算机程序产品,包括存储在非易失性计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任意方法实施例中基于闪存的数据存储方法,例如,执行以上描述的图2中的方法步骤s101至步骤s103,图3中的方法步骤s11至步骤s13,图5中的方法步骤s201至步骤s206,图6中的模块33-35,图7中的模块31-36的功能。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1