掌桥专利:专业的专利平台
掌桥专利
首页

一种flash磨损均衡方法、装置、设备及存储介质

文献发布时间:2023-06-19 10:29:05


一种flash磨损均衡方法、装置、设备及存储介质

技术领域

本发明涉及计算机系统及存储技术领域,尤其是涉及一种flash磨损均衡方法、装置、设备及存储介质。

背景技术

Flash存储器的固有缺陷主要有价格仍然较高、读写速度不平衡、先擦后写特性、使用寿命受擦除次数限制。

为了减少上述固有缺陷对其性能的影响,Flash存储器需要有效的管理方式支持。目前存在两种Flash存储器的管理方式。一种是通过FTL(Flash Translation Layer)提供块设备访问接口;一种是采用专用Flash存储器文件系统,如True FFS、SMXFFS等。第二种管理方式虽然可以有效的提高Flash存储器各方面的性能,并可以有效降低能耗,但是开发测试Flash存储器专用文件系统花费较大。因此,通过FTL管理Flash存储器的方式得到了更广泛的应用。

基于NAND Flash的存储设备通常由三部分组成:接口控制器、闪存转换层(FTL)、NAND闪存阵列。闪存转换层(FTL)的主要功能包括地址映射、磨损均衡、垃圾回收、坏块管理、掉电保护及ECC校验等。Flash存储器转换层实现对Flash存储器的管理时,最基本和关键的是地址映射策略。地址映射是指从文件系统发出的虚拟逻辑地址到Flash存储器中真实物理地址之间的映射关系。

现在嵌入式开发使用的存储器时逐渐都直接使用Flash,原因是Flash价格便宜,空间大,内置,直接使用不需要再加其他存储外设。但如果直接用操作EEPROM的方式来使用Flash会带来一些问题,主要分为两类:a.使用寿命,b.读写速度。EEPROM可以单字节读写,而FLASH只能按整个sector(页)擦除,同时最小读写单位不一定可以细化到单字节(比如有的是四字节),另外EEPROM一般有100万次的读写寿命,而FLASH只有10万次;对FLASH进行普通操作写入一个字节时,需要先读出整个sector到RAM,再将需要写入的字节写入RAM指定位置,再将整个sector回写,这种做法是大部分Flash读写驱动的做法。可以看出这种做法既效率低(擦写步骤多,浪费RAM),同时影响FLASH寿命。

FLASH的寿命是按照sector来分的,当对同一个bit位置擦写(0变1,或1变0都算一次)到达一定次数后(理论10万次),这个区域将不能再写入(1变0),一个bit坏了将影响整个sector(这里可能不同的设备有不同的结果)。

Flash采取异地更新的策略,更新的数据会被放到别的物理页上,而不是覆盖原来的数据。包含新版本数据的页被称为有效页,新版本数据被称为有效数据。包含旧版本数据的页被称为无效页,或称为脏页,脏页经过擦除操作后成为空闲页,才可以重新写入数据。因为Flash是以块为单位执行擦除的,因此需要将脏页所在块上的所有物理页都擦除,在擦除之前需要检查此块上是否存在有效页,如果存在就必须先转移到其他块上。因为每个Flash块的擦除次数有限,一般是在10万次到100万次之间,只要有块的擦除次数达到了上限,Flash数据存储的性能将下降。所以必须想办法,使擦除操作平均作用在每个Flash块上,这种方法就是磨损均衡(wear-leveling)算法。

目前,随着云计算、大数据、物联网等技术产业的快速发展,数据流量增长速率正在不断加快,数据中心承载的压力也越来越大。现在常用的均衡算法均不能公平的对Flash块的擦除次数进行记录。

发明内容

本发明的目的在于提供一种flash磨损均衡方法、装置、设备及存储介质,正是弥补这个磨损均衡算法的缺点,在不影响系统运行的情况下,实时读取Flash块的擦写次数,通过分析每个Flash块的擦除次数,可以在线对FLASH块的擦除次数链表进行修正,完成对Flash数据块的磨损均衡调整,可以更精确的控制每一个Flash块的擦除次数,从而延长Flash的使用寿命。

第一方面,本发明提供的一种flash磨损均衡方法,包括:

发起磨损均衡调整命令;

从NAND Flash存储阵列的磨损均衡区域中读取flash块擦除次数链表;

根据flash块擦除次数链表中每个flash块的擦除次数,调整各个flash块在flash块擦除次数链表中的顺序;

将调整后的flash块擦除次数链表写入NAND Flash存储阵列的磨损均衡区域。

进一步的,在发起磨损均衡调整请求的步骤之后,还包括:

通知应用程序停止向NAND Flash存储阵列发起写入数据。

进一步的,将调整后的flash块擦除次数链表写入NAND Flash存储阵列的磨损均衡区域的步骤之后,还包括:

通知应用程序可以向NAND Flash存储阵列发起写入数据。

进一步的,发起磨损均衡调整命令的步骤之前,包括:

读取NAND Flash存储阵列的磨损均衡工作区域的标志数据,并在寄存器记录标志数据;

根据寄存器记录的标志数据,通知FTL控制模块磨损均衡区域的当前工作区域。

进一步的,将调整后的flash块擦除次数链表写入NAND Flash存储阵列的磨损均衡区域的步骤之后,还包括:

更改寄存器中的标志数据,并通知FTL控制模块根据调整后的flash块擦除次数链表进行读写操作。

进一步的,从NAND Flash存储阵列的磨损均衡区域中读取flash块擦除次数链表的步骤之前,还包括:

解析出磨损均衡调整命令中的通用读写操作命令;

将通用读写操作命令缓存至RAM。

进一步的,将调整后的flash块擦除次数链表写入NAND Flash存储阵列的磨损均衡区域的步骤之后,还包括:

读取RAM中的通用读写操作命令;

将通用读写操作命令发送至通用读写模块。

第二方面,本发明还提供了一种flash磨损均衡装置,包括:

命令模块,用于发起磨损均衡调整命令;

读取模块,用于从NAND Flash存储阵列的磨损均衡区域中读取flash块擦除次数链表;

调整模块,用于根据flash块擦除次数链表中每个flash块的擦除次数,调整各个flash块在flash块擦除次数链表中的顺序;

写入模块,用于将调整后的flash块擦除次数链表写入NAND Flash存储阵列的磨损均衡区域。

第三方面,本发明还提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述flash磨损均衡方法的步骤。

第四方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行所述flash磨损均衡方法。

本发明提供的一种flash磨损均衡方法,正是弥补这个磨损均衡算法的缺点,在不影响系统运行的情况下,实时读取Flash块的擦写次数,通过分析每个Flash块的擦除次数,可以在线对FLASH块的擦除次数链表进行修正,完成对Flash数据块的磨损均衡调整,可以更精确的控制每一个Flash块的擦除次数,从而延长Flash的使用寿命。

相应地,本发明实施例提供的一种flash磨损均衡装置、设备及存储介质,也同样具有上述技术效果。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的flash磨损均衡方法流程框图;

图2为本发明实施例提供的磨损均衡实时调整装置的结构框图;

图3为本发明实施例提供的FLASH块擦除次数链表记录格式图;

图4为本发明实施例提供的FLASH块擦除次数链表记录第一种情形图;

图5为本发明实施例提供的FLASH块擦除次数链表记录第二种情形图;

图6为本发明实施例提供的FLASH块擦除次数链表经过修正后的记录情形图;

图7为本发明实施例提供的电子设备的模块组图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

请参阅图1,本发明提供的一种flash磨损均衡方法,包括:

读取NAND Flash存储阵列的磨损均衡工作区域的标志数据,并在寄存器记录标志数据;

根据寄存器记录的标志数据,通知FTL控制模块磨损均衡区域的当前工作区域;

发起磨损均衡调整命令;

通知应用程序停止向NAND Flash存储阵列发起写入数据;

解析出磨损均衡调整命令中的通用读写操作命令;

将通用读写操作命令缓存至RAM;

从NAND Flash存储阵列的磨损均衡区域中读取flash块擦除次数链表;

根据flash块擦除次数链表中每个flash块的擦除次数,调整各个flash块在flash块擦除次数链表中的顺序;

将调整后的flash块擦除次数链表写入NAND Flash存储阵列的磨损均衡区域;

通知应用程序可以向NAND Flash存储阵列发起写入数据;

更改寄存器中的标志数据,并通知FTL控制模块根据调整后的flash块擦除次数链表进行读写操作;

读取RAM中的通用读写操作命令;

将通用读写操作命令发送至通用读写模块。

另外,本发明还提供了一种flash磨损均衡装置,包括:

命令模块,用于发起磨损均衡调整命令;

读取模块,用于从NAND Flash存储阵列的磨损均衡区域中读取flash块擦除次数链表;

调整模块,用于根据flash块擦除次数链表中每个flash块的擦除次数,调整各个flash块在flash块擦除次数链表中的顺序;

写入模块,用于将调整后的flash块擦除次数链表写入NAND Flash存储阵列的磨损均衡区域。

综上,该flash磨损均衡方法及装置,正是弥补这个磨损均衡算法的缺点,在不影响系统运行的情况下,实时读取Flash块的擦写次数,通过分析每个Flash块的擦除次数,可以在线对FLASH块的擦除次数链表进行修正,完成对Flash数据块的磨损均衡调整,可以更精确的控制每一个Flash块的擦除次数,从而延长Flash的使用寿命。

另外,为了进一步的对本实施例进行说明,做出如下说明:

NAND Flash闪存阵列分为地址映射表区域,数据区域和磨损均衡区域。地址映射表区域负责存储虚拟逻辑地址到Flash存储器中真实物理地址之间的映射关系;数据区域负责存储数据部分;磨损均衡区域负责Flash块的擦除次数的记录,磨损均衡工作区域标志负责记录当前的磨损均衡工作区域,FLASH块擦除次数是按照链表的形式进行记录的,链表是按照从少到多的方式进行记录的。

在线实时调整磨损均衡的方法和装置如图2所示,软件部分包括操作系统,各应用程序,Flash驱动程序,磨损均衡调整程序等;硬件部分包括存储控制器和NAND Flash存储阵列。

在对Flash块进行磨损均衡调整时,在不影响系统运行的情况下,操作系统发起磨损均衡调整命令,并停止对Flash的写操作(读操作可以继续进行),实时读取Flash块的擦写次数,通过分析每个Flash块的擦除次数,可以在线对FLASH块的擦除次数链表进行修正,完成对Flash数据块的磨损均衡调整。具体操作过程,各模块的功能如下:

操作系统:本实施例对操作系统不做限制,如常见的Linux,Windows操作系统等等。需具备以下功能:

若接收到磨损均衡调整程序发送来的磨损均衡调整请求后,通知运行中的应用程序停止向NAND Flash存储阵列发起写入数据(读操作可以继续进行)。

操作系统收到各应用程序的反馈标志后,便通知Flash驱动程序模块除磨损调整读写操作外,不再发起其他程序发起的写NAND Flash存储阵列操作,只会发起读NANDFlash存储阵列操作;之后便向硬件部分发起开始磨损均衡调整命令。

收到磨损调整程序发送来的Flash磨损均衡调整完毕标志后,便通知各个应用程序可以对NAND Flash存储阵列进行读写操作。

应用程序:本实施例对应用程序不做限制,本实施例支持各种应用程序。

磨损均衡调整程序:负责对Flash的磨损均衡进行调整,需具备以下功能:

如果需要对Flash的磨损均衡进行调整,便向操作系统发起Flash的磨损均衡调整请求。

收到操作系统的可以进行磨损均衡调整的确认标志后,便读取NAND存储阵列的磨损均衡区域的数据。

根据读取的NAND存储阵列的磨损均衡区域的数据提取出各Flash块的擦除次数,并根据擦除次数,重新调整各Flash块在链表中的顺序,直到调整完毕。

对Flash的磨损均衡调整完毕后,便向Flash驱动程序发起写操作,将调整完毕的磨损均衡写入到NAND Flash存储阵列中去。之后通知操作系统Flash的磨损均衡调整完毕,向硬件部分发起Flash的磨损均衡调整结束命令。

Flash驱动程序:负责对NAND Flash存储阵列发起读写操作。

接收控制模块:接收控制模块接收到读写命令后,提取有效的读写操作后,发送给命令解析模块。

命令解析模块:负责对命令的解析,需具备以下功能:

收到的Flash读写命令如果是通用的读写操作,则将读写命令发往通用读写操作模块;如果是磨损均衡调整命令,则读写命令发往磨损均衡调整操作模块。

收到Flash的磨损均衡调整命令后,如果解析出的读写命令是通用的读写操作,则将解析出的命令缓存到RAM缓存模块中去。

收到Flash的磨损均衡调整结束命令后,首先读取RAM缓存模块中的命令,并发往通用读写模块。

通用读写模块:负责对Flash的通用读写控制。

磨损均衡调整模块:负责对Flash的磨损均衡调整,具备以下功能:

系统上电后,首先读取磨损均衡工作区域标志区域的数据,并在寄存器模块记录磨损均衡的当前工作区域。

根据寄存器记录的磨损均衡记录信息,判断磨损均衡区域的当前工作区域,假设当前工作区域为磨损均衡区域A。并通知FTL控制模块磨损均衡区域的当前工作区域。

收到磨损均衡调整命令后,便发起对磨损均衡的当前工作区域的读操作,直到读取完毕。

收到磨损均衡调整结束命令后,将从磨损均衡调整程序接收到的磨损均衡调整完毕的数据写入到另一块磨损均衡区域。直到写入完毕。

磨损均衡调整完毕的数据写入完毕后,便更改寄存器和磨损均衡工作区域标志,并通知FTL控制模块根据最新的Flash磨损均衡进行读写操作。

FTL控制模块:包括地址映射模块,磨损均衡模块,垃圾回收模块和坏块管理模块。本实施例对应用程序不做限制。

调度控制模块:负责接收FTL控制模块和磨损均衡调整模块的请求,并进行调度后发往接口驱动模块。

接口驱动模块:负责对NAND Flash存储阵列进行读写操作。

NAND Flash存储阵列:存储阵列设备。

寄存器模块:记录磨损均衡当前工作区域。

发送控制模块:从接口驱动模块接收到的数据发给磨损均衡调整程序。

另外,磨损均衡区域负责Flash块的擦除次数的记录,磨损均衡工作区域标志负责记录当前的磨损均衡工作区域,FLASH块擦除次数是按照链表的形式进行记录的,链表是按照从少到多的方式进行记录的。具体记录格式如图3所示;

现在常用的均衡算法均不能公平的对Flash块的擦除次数进行记录,FLASH经过一段时间的使用,FLASH块擦除次数链表记录情况如图4所示,并不能精确的根据每个FLASH块的擦除次数插入到相应的链表位置中去,比如FLASH_50经过一段时间后的擦除次数是502,则需要插入到FLASH_85跟FLASH_65之间,如图5所示;

从常规的链接中可以看出,FLASH_65比FLASH_35的擦除次数多,反而FLASH_65排在FLASH_35的前面,常规磨损均衡技术为节省资源,通常采用近似的记录方式,本实施例正是弥补这个磨损均衡算法的缺点,在不影响系统运行的情况下,实时读取Flash块的擦写次数,通过分析每个Flash块的擦除次数,可以在线对FLASH块的擦除次数链表进行修正,完成对Flash数据块的磨损均衡调整,可以更精确的控制每一个Flash块的擦除次数,从而延长Flash的使用寿命。

经过本实施例调整后,链接关系如图6所示,FLASH_65和FLASH_35调换了位置,经过本实施例的调整,比常规磨损均衡技术,大大提高了FLASH的寿命。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

本发明实施例提供的一种电子设备,如图7所示,电子设备800包括存储器801、处理器802,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例提供的方法的步骤。

如图7所示,电子设备还包括:总线803和通信接口804,处理器802、通信接口804和存储器801通过总线803连接;处理器802用于执行存储器801中存储的可执行模块,例如计算机程序。

其中,存储器801可能包含高速随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口804(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。

总线803可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器801用于存储程序,所述处理器802在接收到执行指令后,执行所述程序,前述本发明任一实施例揭示的过程定义的装置所执行的方法可以应用于处理器802中,或者由处理器802实现。

处理器802可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器802中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器802可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器801,处理器802读取存储器801中的信息,结合其硬件完成上述方法的步骤。

对应于上述方法,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有机器可运行指令,所述计算机可运行指令在被处理器调用和运行时,所述计算机可运行指令促使所述处理器运行上述方法的步骤。

本发明实施例所提供的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

又例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,再例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

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

另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种flash磨损均衡方法、装置、设备及存储介质
  • 一种Nand Flash磨损均衡方法、装置及存储器
技术分类

06120112568885