闪存管理方法、装置、计算机设备和存储介质与流程

文档序号:17286791发布日期:2019-04-03 03:37阅读:244来源:国知局
本发明涉及存储
技术领域
:,特别是涉及一种闪存管理方法、装置、计算机设备和存储介质。
背景技术
::目前,随着flash堆叠技术的迅猛发展,ssd和其它基于闪存的存储设备的容量不断大幅增加。ssd从主流的128gb,发展到现在的512gb,上tb只是时间问题。容量和带宽的变大固然是可喜的技术进步,但是也暴露ssd内部对内存需求变大的问题。在传统技术中,ssd和其它闪存存储设备内部有一大块内存用于存放nandflashblocks相关的表,以供ftl算法管理,如块有效页个数表、擦除次数表等等。它们占用的内存大小与blocks的总数成正比,当存储设备的容量越大,包含的blocks总数越大,这些表占用的内存就越大。技术实现要素:基于此,有必要针对上述技术问题,提供一种可以降低内存占有的闪存管理方法、装置、计算机设备和存储介质。一种闪存管理方法,所述方法包括:获取闪存管理请求;根据所述闪存管理请求,建立初始的superblock的信息;根据所述superblock的信息,建立buckets序列;填充所述buckets序列中的superblock内的无效block。在其中一个实施例中,所述根据所述闪存管理请求,建立初始的superblock的信息的步骤包括:获取每个die的工作状态;将并行的每个die下的相同编号的block组成superblock。在其中一个实施例中,在根据所述闪存管理请求,建立初始的superblock的信息的步骤之后还包括:判断所述superblock的信息是否丢失;当所述superblock的信息丢失时,获取blocktimestamp信息;根据所述获取的blocktimestamp信息建立superblock。在其中一个实施例中,所述根据所述superblock的信息,建立buckets序列的步骤包括:初始化buckets序列中的buckets元素;将含有相同block数的superblock串联起来,建立buckets序列。在其中一个实施例中,所述填充所述buckets序列中的superblock内的无效block的步骤包括:判断所述superblock中的block是否为无效block;若所述block为无效block,则用其他superblock中的有效block替换所述无效block。一种闪存管理装置,所述闪存管理装置装置包括:第一获取模块,所述第一获取模块用于获取闪存管理请求;初始化模块,所述初始化模块用于根据所述闪存管理请求,建立初始的superblock的信息;第一建立模块,所述第一建立模块用于根据所述superblock的信息,建立buckets序列;序列填充模块,所述序列填充模块用于填充所述buckets序列中的superblock内的无效block。在其中一个实施例中,所述初始化模块还用于:获取每个die的工作状态;将并行的每个die下的相同编号的block组成superblock。在其中一个实施例中,所述闪存管理装置还包括:判断模块,所述判断模块用于判断所述superblock的信息是否丢失;第二获取模块,所述第二获取模块用于当所述superblock的信息丢失时,获取blocktimestamp信息;第二建立模块,所述第二建立模块用于根据所述获取的blocktimestamp信息建立superblock。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。上述闪存管理方法、装置、计算机设备和存储介质,首先通过获取闪存管理请求;然后根据所述闪存管理请求,建立初始的superblock的信息;接着根据所述superblock的信息,建立buckets序列;最后,填充所述buckets序列中的superblock内的无效block。本发明通过特定的逻辑把并行dies下的blocks组成一个个superblock,管理表的描述对象扩大为superblock,从而成倍地降低内存的占用。附图说明图1为一个实施例中闪存管理方法的流程示意图;图2为一个实施例中根据闪存管理请求,建立初始的superblock的信息的步骤的流程示意图;图3为另一个实施例中闪存管理方法的流程示意图;图4为一个实施例中根据superblock的信息,建立buckets序列的步骤的流程示意图;图5为一个实施例中填充buckets序列中的superblock内的无效block的步骤的流程示意图;图6为一个实施例中桶序列示意图;图7为一个实施例中闪存管理装置的结构框图;图8为另一个实施例中闪存管理装置的结构框图;图9为一个实施例中计算机设备的内部结构图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。为了更清晰说明本发明的内容,首先,阐述整个发明的总体构思。一个block内部有效页的个数,称之为validpagecount,简写为vpc,占2b内存,所有blockvpc就形成vpctable,以512gssd为例,配置为单die32gb--3kblocks,并行16个dies为例,则整张vpctable大小为2b*3k*16=96kb。每个block都有个p/ecycle的概念,一般而言,blockp/ecycle次数slc>mlc>tlc。一个tlcblock在ldpc纠错算法下,其p/ecycle次数大概在3000次左右。当一个block擦除次数接近这个上限值时,block内的数据就变得不稳定,容易出现uecc(uncorrectedeccerror,不可纠正的错误),导致数据丢失。所以ftl算法内需要保存每个block的p/ecycle次数,作为wl(wearleveling,磨损均衡)的依据。一个block的p/ecycle次数用2b表示,所以整张p/ecycletable的大小也为96kb。nandflash有个特性称之为readdisturb。当读flash某个页时,其实是对该页执行了加电压操作(读数据)。大量对页的读操作,会导致该页内cells的电子流失,进而发生数据错误。同时加电压对相邻页也有影响。因此,ftl算法有个功能需求,需要记录每个block执行过的读操作次数。当读次数达到阈值时,需要检查其内部储存的数据的正确性,如果错误的bit数达到警戒线时,就需要把该block上的数据搬到其它block上。我们用2b表示block的读次数,所以这张记录每个block读次数的表的大小也为96kb。ftl算法需要区分每个block的写入顺序,用于辨别新老数据。如主机写入数据x到blocka,过段时间又复写数据x到blockb,通过一个4b的word来存储时间戳,通过这个时间戳我们就能辨别。每个block都要记录时间戳,这样形成一张大小为4b*3k*16=192kb的表。综上所述,ftl用于管理与block相关的表信息如下:总计480kb,这是不小的内存开销,特别是在内存资源有限的嵌入式闪存设备里,如emmc、tf卡等,由此可见,在传统技术中的内存开销很大,造成了资源的浪费。在一个实施例中,如图1所示,提供了一种闪存管理方法,该方法包括:步骤102,获取闪存管理请求;步骤104,根据闪存管理请求,建立初始的superblock的信息;步骤106,根据superblock的信息,建立buckets序列;步骤108,填充buckets序列中的superblock内的无效block。具体地,为了保证闪存存储设备带宽的最大化,需要让每个并行die都处于工作状态,即每个die下都有block在执行命令。本专利中描述的算法,基于这个技术前提,将并行dies下的blocks通过特定的规则绑定成一个个superblocks。组成superblock的规则如下:1)基本规则:各die下相同编号的block组成一个superblock。2)调整规则:如果某个block是坏块的话,需要拿其它block替换。做替换用的block称之为victimedblock。前面提及的管理表的描述对象扩大为superblock后,其内存占用如下表:在本实施例中,首先,获取闪存管理请求。然后,根据闪存管理请求,建立初始的superblock的信息。接着,根据superblock的信息,建立buckets序列。最后,填充buckets序列中的superblock内的无效block。通过上述表格数据,可以看出本实施例实现了通过特定的逻辑把并行dies下的blocks组成一个个superblock,将管理表的描述对象扩大为superblock,内存占用空间从480k降低到126k,成倍地降低内存的占用。在其中一个具体的实施例中,参考图2,提供了一种闪存管理方法,其中根据闪存管理请求,建立初始的superblock的信息的步骤包括:步骤202,获取每个die的工作状态;步骤204,将并行的每个die下的相同编号的block组成superblock。具体地,建立初始的superblock的信息。这一步适用基本规则,当某个block为坏块时,将其位置赋值为invalid16,表示无效,部分程序代码如下:在其中一个具体的实施例中,参考图3,提供了一种闪存管理方法,其中在根据闪存管理请求,建立初始的superblock的信息的步骤之后还包括:步骤302,判断superblock的信息是否丢失;步骤304,当superblock的信息丢失时,获取blocktimestamp信息;步骤306,根据获取的blocktimestamp信息建立superblock。具体地,当盘存在数据且不能丢失的时候,需要根据获取的blocktimestamp信息来建立superblocks,可以理解的是,该superblocks可能与出厂时建立的superblocks有出入。此外,此步骤不是必须的,只有当superblocks信息丢失或者盘存在有用数据才会执行该步骤。在其中一个具体的实施例中,参考图4,提供了一种闪存管理方法,其中根据superblock的信息,建立buckets序列的步骤包括:步骤402,初始化buckets序列中的buckets元素;步骤404,将含有相同block数的superblock串联起来,建立buckets序列。具体地,按照同一block编号下,各die下非bb的个数,来建立桶序列(0~bank_cnt),如图6所示,部分程序如下:初始化桶元素:fori<-bank_blk_cnttobank_blk_cnt+bank_cntblk_node[i]=i;/*pointtoself*/建立桶序列,将含有相同block数的superblock串联在一起:在其中一个具体的实施例中,参考图5,提供了一种闪存管理方法,其中填充buckets序列中的superblock内的无效block的步骤包括:步骤502,判断superblock中的block是否为无效block;步骤504,若block为无效block,则用其他superblock中的有效block替换无效block。具体地,此步目标是用其它superblock填充superblock内无效block,用来替换的block称之为victimedblock。为了提高效率,整体的方案是拿有效block数少的superblocks去填充有效block多的。部分程序代码如下:应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。在一个实施例中,如图7所示,提供了一种闪存管理装置700,该装置包括:第一获取模块701,用于获取闪存管理请求;初始化模块702,用于根据闪存管理请求,建立初始的superblock的信息;第一建立模块703,用于根据superblock的信息,建立buckets序列;序列填充模块704,用于填充buckets序列中的superblock内的无效block。在一个实施例中,该初始化模块702还用于:获取每个die的工作状态;将并行的每个die下的相同编号的block组成superblock。在一个实施例中,如图8所示,提供了一种闪存管理装置700,该闪存管理装置700还包括:判断模块705,用于判断superblock的信息是否丢失;第二获取模块706,用于当superblock的信息丢失时,获取blocktimestamp信息;第二建立模块707,用于根据获取的blocktimestamp信息建立superblock。在一个实施例中,该第一建立模块703还用于:初始化buckets序列中的buckets元素;将含有相同block数的superblock串联起来,建立buckets序列。在一个实施例中,该序列填充模块704还用于:判断superblock中的block是否为无效block;若block为无效block,则用其他superblock中的有效block替换无效block。关于闪存管理装置700的具体限定可以参见上文中对于闪存管理方法的限定,在此不再赘述。在一个实施例中,提供了一种计算机设备,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种闪存管理方法。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1