首页> 中国专利> 一种Nand Flash磨损均衡方法、装置及存储器

一种Nand Flash磨损均衡方法、装置及存储器

摘要

本发明公开了一种Nand Flash磨损均衡方法、装置及存储器,该方法包括根据Nand Flash中每个block的擦除次数计算每个block的擦除优先级P;其中,Nand Flash中包括静态block和动态block;对擦除优先级P进行动态排序,获取动态排序位置;按照动态排序位置对block进行擦除;本发明通过根据block的擦除次数计算block的擦除优先级P,可以获取每个block进行擦除的优先级,通过对擦除优先级P进行动态排序,可以将每个block进行擦除的顺序排列出来,从而能够按照该顺序进行擦除,使Nand Flash完成了全局均衡,进而增加了使用寿命,提高了用户体验。

著录项

  • 公开/公告号CN106775474A

    专利类型发明专利

  • 公开/公告日2017-05-31

    原文格式PDF

  • 申请/专利权人 郑州云海信息技术有限公司;

    申请/专利号CN201611168870.5

  • 发明设计人 王杰华;刘冬好;郑静;

    申请日2016-12-16

  • 分类号G06F3/06(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人罗满

  • 地址 450018 河南省郑州市郑东新区心怡路278号16层1601室

  • 入库时间 2023-06-19 02:17:44

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-10

    授权

    授权

  • 2019-12-20

    专利申请权的转移 IPC(主分类):G06F3/06 登记生效日:20191203 变更前: 变更后: 申请日:20161216

    专利申请权、专利权的转移

  • 2017-06-23

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20161216

    实质审查的生效

  • 2017-05-31

    公开

    公开

说明书

技术领域

本发明涉及计算机系统及存储领域,特别涉及一种Nand Flash磨损均衡方法、装置及存储器。

背景技术

随着现代社会科技的发展,计算机已经广泛应用于各种领域,随之而来的是各种围绕计算机系统的存储器在飞速发展。Nand Flash是一种新型的非易失存储器件,具有速度快,体积小,存储密度大,功耗低等特点,以它为存储介质的固态硬盘(SSD)已经得到广泛应用。

一个SSD由很多个独立的Nand Flash芯片组成,每个Nand Flash由多个target构成,每个target由多个LUN组成,每个LUN包含多个block,每个block包含多个page。

现有技术中,Nand Flash除了上述提到的优点以外,本身有一些固有的缺陷:第一,Nand Flash的写入是out-of-place,即写入操作不能在本地更新,必须写入到新的空白页,同时旧的数据所在页会被标记为无效,等待擦除后才能重新使用;第二,Nand Flash的读写操作是以物理页(page)为单位,而擦除是以物理块(block)为单位,并且擦除操作所用时间远远大于读写操作所用时间;第三,Nand Flash的擦除次数有限制,根据介质材料的不同,通常在几千次到十万次之间。

正是由于上述原因,Nand Flash需要设计磨损均衡算法,保证所有block的擦写次数均衡,防止出现某个block擦写次数过大,导致整个Nand Flash失效的情况。磨损均衡操作可以大致分为两大类,a)动态磨损均衡,当写入的数据发生更改,新的数据会写入到新的位置,旧的数据会被标记成无效,等待垃圾回收擦除;b)静态磨损均衡,当写入的数据长时间没有发生改变,该数据所在block无法被垃圾回收,需要强制把该block数据进行搬移和擦除。

如今所说的磨损均衡,是指动态磨损均衡,但如果对长时间没有读写操作的静态数据没有进行静态磨损均衡操作,就会导致频繁读写数据所在的动态block的擦除次数与静态数据所在静态block的擦除次数相差太大,没有实现Nand Flash擦除次数的整体均衡,从而影响Nand Flash寿命。因此,对Nand Flash做包含静态均衡在内的全局均衡,成为增加Nand Flash使用寿命的重要因素。

发明内容

本发明的目的是提供一种Nand Flash磨损均衡方法、装置及存储器,以对NandFlash进行包含静态均衡在内的全局均衡,增加Nand Flash的使用寿命,提高用户体验。

为解决上述技术问题,本发明提供一种Nand Flash磨损均衡方法,该方法包括:

根据所述Nand Flash中每个block的擦除次数计算每个所述block的擦除优先级P;其中,所述Nand Flash中包括静态block和动态block;

对所述擦除优先级P进行动态排序,获取动态排序位置;

按照所述动态排序位置对所述block进行擦除。

可选的,通过所述block的擦除次数和所述block所在LUN的平均擦除次数的差值,计算每个所述block的擦除次数距离;

通过所述擦除次数距离的绝对值加1除以预先设置的擦除优先级的个数后与所述擦除次数距离相乘,计算出每个所述block的擦除次数权重;

将所述擦除次数权重、所述block的有效页个数和基础擦除优先级相加,得到每个所述block的所述擦除优先级P。

可选的,对所述擦除优先级P进行动态排序,获取动态排序位置,包括:

将所述擦除优先级P与所述block所在LUN的平均擦除次数的和与预先设置的擦除优先级的个数求余,获取所述擦除优先级P的动态排序位置。

可选的,对所述擦除优先级P进行动态排序,获取动态排序位置之后,还包括:

将所述擦除优先级P的排序位置作为索引位置添加到对应的擦除优先级双向链表的末尾;

按照所述擦除优先级双向链表对所述block进行擦除。

此外,本发明还提供了一种Nand Flash磨损均衡装置,该装置包括:

计算模块,用于根据所述Nand Flash中每个block的擦除次数计算每个所述block的擦除优先级P;其中,所述Nand Flash中包括静态block和动态block;

排序模块,用于对所述擦除优先级P进行动态排序,获取动态排序位置;

擦除模块,用于按照所述动态排序位置对所述block进行擦除。

可选的,所述计算模块,包括:

距离计算单元,用于通过所述block的擦除次数和所述block所在LUN的平均擦除次数的差值,计算每个所述block的擦除次数距离;

权重计算单元,用于通过所述擦除次数距离的绝对值加1除以预先设置的擦除优先级的个数后与所述擦除次数距离相乘,计算出每个所述block的擦除次数权重;

擦除优先级计算单元,用于将所述擦除次数权重、所述block的有效页个数和基础擦除优先级相加,得到每个所述block的所述擦除优先级P。

可选的,所述排序模块,包括:

位置计算单元,用于将所述擦除优先级P与所述block所在LUN的平均擦除次数的和与预先设置的擦除优先级的个数求余,获取所述擦除优先级P的动态排序位置。

可选的,所述排序模块,还包括:

添加单元,用于将所述擦除优先级P的排序位置作为索引位置添加到对应的擦除优先级双向链表的末尾。

本发明还提供了一种存储器,包括:

处理器,用于根据所述Nand Flash中每个block的擦除次数计算每个所述block的擦除优先级P;其中,所述Nand Flash中包括静态block和动态block;对所述擦除优先级P进行动态排序;按照所述动态排序位置对所述block进行擦除。

可选的,所述存储器具体为Nand Flash。

本发明所提供的一种Nand Flash磨损均衡方法,包括根据所述Nand Flash中每个block的擦除次数计算每个所述block的擦除优先级P;其中,所述Nand Flash中包括静态block和动态block;对所述擦除优先级P进行动态排序;按照所述动态排序位置对所述block进行擦除;

可见,本发明通过根据Nand Flash中每个block的擦除次数计算每个block的擦除优先级P,可以获取Nand Flash中每个block进行擦除的优先级,通过对所述擦除优先级P进行动态排序,可以将每个block进行擦除的顺序排列出来,从而能够按照该顺序对每个block进行擦除,使得Nand Flash进行的全局均衡包含了对动态block的动态均衡和对静态block的静态均衡,进而增加了Nand Flash的使用寿命,提高了用户体验。此外,本发明还提供了一种Nand Flash磨损均衡装置及存储器,同样具有上述有益效果。

附图说明

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

图1为本发明实施例所提供的一种Nand Flash磨损均衡方法的流程图;

图2为本发明实施例所提供的另一种Nand Flash磨损均衡方法的流程图;

图3为本发明实施例所提供的另一种Nand Flash磨损均衡方法的擦除优先级双向链表的示意图;

图4为本发明实施例所提供的一种Nand Flash磨损均衡装置的结构图。

具体实施方式

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

请参考图1,图1为本发明实施例所提供的一种Nand Flash磨损均衡方法的流程图。该方法可以包括:

步骤101:根据所述Nand Flash中每个block的擦除次数计算每个所述block的擦除优先级P;其中,所述Nand Flash中包括静态block和动态block。

可以理解的是,静态block可以为长时间没有读写操作的静态数据所在的block;动态block频繁读写的数据所在的block。根据Nand Flash中每个block的擦除次数计算每个block的擦除优先级P可以是在使用本方法开始时,对Nand Flash中每个block计算每个block的擦除优先级P,然后再计算进行擦除操作后的block的擦除优先级P。

需要说明的是,对于计算block的擦除优先级P的方式,可以是只考虑block的擦除次数,如根据block的擦除次数计算该block的擦除次数距离,也就是计算该block的擦除次数和该block所在LUN的平均擦除次数的差值,将该block的擦除次数距离的绝对值作为该block的擦除优先级P;也可以是考虑block的擦除次数和该block的有效页个数,如根据block的擦除次数计算该block的擦除次数距离,再计算该block的擦除次数权重,将擦除次数权重、该block的有效页个数和基础擦除优先级相加的和作为该block的擦除优先级P。本实施例对此不受任何限制。

步骤102:对所述擦除优先级P进行动态排序,获取动态排序位置。

其中,动态排序对于只考虑block的擦除次数的block的擦除优先级P计算方式,可以是将计算出的擦除优先级P的绝对值按照由小到大的顺序排列,每计算出一个擦除优先级P便将其绝对值加入到此排列队伍中;也可以是建立优先级双向链表,将计算出的擦除优先级P的绝对值添加到对应优先级双向链表的末尾。

动态排序对于考虑block的擦除次数和该block的有效页个数的block的擦除优先级P计算方式,可以是将计算出的block的擦除优先级P与block所在LUN的平均擦除次数的结果与预先设置的擦除优先级的个数求余,对于求余的结果按照由小到大的顺序排列,每计算出一个block的求余结果变将其加入到此排列队伍中;或者根据预先设置的擦除优先级的个数建立该个数的优先级双向链表,将计算出的求余结果添加到对应优先级双向链表的末尾。只要可以将擦除优先级P根据实用场景或用户需求进行动态排序,对于动态排序的方式本实施例不做任何限制。

可以理解的是,对擦除优先级P直接进行排列时,每计算出一个新的擦除优先级P可以导致原本的排列队伍需要进行重新排列,使得处理器需要一直进行排列,增加了处理器的运算量。因此,可以建立优先级双向链表,使每个擦除优先级P添加到对应优先级双向链表的末尾,能够减少处理器的排序过程,增加本方法的运算速度。

步骤103:按照所述动态排序位置对所述block进行擦除。

其中,按照动态排序位置对所述block进行擦除可以为按照排列队伍的顺序对对应的block进行擦除,也可以为按照优先级双向链表的顺序对对应的block进行擦除。本实施例对此不受任何限制。

本实施例中,本发明实施例通过根据Nand Flash中每个block的擦除次数计算每个block的擦除优先级P,可以获取Nand Flash中每个block进行擦除的优先级,通过对所述擦除优先级P进行动态排序,可以将每个block进行擦除的顺序排列出来,从而能够按照该顺序对每个block进行擦除,使得Nand Flash进行的全局均衡包含了对动态block的动态均衡和对静态block的静态均衡,进而增加了Nand Flash的使用寿命,提高了用户体验。

请参考图2、图3,图2为本发明实施例所提供的另一种Nand Flash磨损均衡方法的流程图;图3为本发明实施例所提供的另一种Nand Flash磨损均衡方法的擦除优先级双向链表的示意图。该方法可以包括:

步骤201:通过所述block的擦除次数和所述block所在LUN的平均擦除次数的差值,计算每个所述block的擦除次数距离。

其中,block的擦除次数距离也就是该block的擦除次数与该block所在LUN的平均擦除次数的距离。

例如,一个block的擦除次数为EC,该block所在LUN中所有block的平均擦除次数为AVREC,该block的擦除次数距离EC_DISTANCE的计算可以为:EC_DISTANCE=EC–AVREC,它的绝对值记作ABS(EC_DISTANCE)。EC_DISTANCE可以描述该block的擦除次数EC与该block所在LUN的平均擦除次数AVREC的差值,如果EC_DISTANCE为负数且ABS(EC_DISTANCE)数值较大,说明该block很有可能是一个长时间没有读写的静态数据块。

步骤202:通过所述擦除次数距离的绝对值加1除以预先设置的擦除优先级的个数后与所述擦除次数距离相乘,计算出每个所述block的擦除次数权重。

其中,预先设置的擦除优先级的个数可以为本实施例中擦除优先级双向链表的个数,对于擦除优先级的个数的具体数值的设置可以根据实用场景和用户需求设置,本实施例对此不做任何限制。

需要说明的是,对于本实施例提供的方法来说,可以将擦除优先级的个数设置为block中物理页个数的两倍,使本实施例提供的方法达到最优效果,当然设置成block中物理页个数的其他整数倍或设置成其他数值,也可以达到本实施例的目的,本实施例对此不受任何限制。

例如,上述block包含N个物理页,block的擦除次数权重EC_WEIGHT的计算可以为:EC_WEIGHT=(ABS(EC_DISTANCE)+1)/(2*N)*EC_DISTANCE。EC_WEIGHT可以描述该block擦除次数在优先级计算中的权重,如果EC_WEIGHT为负数且其绝对值较大,说明该block很有可能是一个长时间没有读写的静态数据块,需要加大其在优先级计算中的权重。

步骤203:将所述擦除次数权重、所述block的有效页个数和基础擦除优先级相加,得到每个所述block的所述擦除优先级P。

其中,基础擦除优先级可以为block中的物理页的数值。

例如,上述block包含N个物理页,有效页个数为VPC,记录N为基础优先级PRIORITY_BASE,该block的擦除优先级P的计算可以为:P=VPC+EC_WEIGHT+PRIORITY_BASE。P可以描述该block经过全局磨损均衡算法计算得到结果,综合考虑了有效页个数VPC和擦除次数权重EC_WEIGHT,如果P为负数,说明该block很有可能是一个长时间没有读写的静态数据块,需要优先处理。

可以理解的是,步骤201至步骤203为block的擦除优先级P计算过程,在具体实施中只需要在本方法开始时对每个block进行擦除优先级P的计算,之后只需对进行擦除后的block进行擦除优先级P的计算,并不需要每擦除一个block便对全部block进行擦除优先级P的计算。

步骤204:将所述擦除优先级P与所述block所在LUN的平均擦除次数的和与预先设置的擦除优先级的个数求余,获取所述擦除优先级P的动态排序位置。

需要说明的是,对于本实施例来说,因为建立了擦除优先级的个数的擦除优先级双向链表,所以擦除优先级P的动态排序位置也就可以为擦除优先级P的索引位置。

例如,上述block的擦除优先级P的索引位置INDEX的计算为:INDEX=(P+AVREC)%(2*N)。其中,INDEX的数值可以为0到2*N-1之间。

步骤205:将所述擦除优先级P的排序位置作为索引位置添加到对应的擦除优先级双向链表的末尾。

需要说明的是,擦除优先级双向链表的结构可以如图3所示,每个擦除优先级可以对应一个双向链表,同一擦除优先级的block通过双向链表连接在一起。

步骤206:按照所述擦除优先级双向链表对所述block进行擦除。

可以理解的是,擦除模块需要对block进行擦除时,可以通过查找擦除优先级双向链表的按索引位置由小到大的顺序对对应的block进行擦除。

本实施例中,本发明实施例通过计算block的擦除次数权重的过程计算block的擦除优先级P,进一步考虑了block中的有效页个数,可以更加准确获取Nand Flash中每个block进行擦除的优先级,通过使用擦除优先级双向链表,可以将每个block进行擦除的顺序更加方便排列出来,从而能够按照该顺序对每个block进行擦除,使得Nand Flash进行的全局均衡包含了对动态block的动态均衡和对静态block的静态均衡,进而增加了NandFlash的使用寿命,提高了用户体验。

请参考图4,图4为本发明实施例所提供的一种Nand Flash磨损均衡装置的结构图。该装置可以包括:

计算模块100,用于根据所述Nand Flash中每个block的擦除次数计算每个所述block的擦除优先级P;其中,所述Nand Flash中包括静态block和动态block;

排序模块200,用于对所述擦除优先级P进行动态排序,获取动态排序位置;

擦除模块300,用于按照所述动态排序位置对所述block进行擦除。

可选的,所述计算模块100,包括:

距离计算单元,用于通过所述block的擦除次数和所述block所在LUN的平均擦除次数的差值,计算每个所述block的擦除次数距离;

权重计算单元,用于通过所述擦除次数距离的绝对值加1除以预先设置的擦除优先级的个数后与所述擦除次数距离相乘,计算出每个所述block的擦除次数权重;

擦除优先级计算单元,用于将所述擦除次数权重、所述block的有效页个数和基础擦除优先级相加,得到每个所述block的所述擦除优先级P。

可选的,所述排序模块200,包括:

位置计算单元,用于将所述擦除优先级P与所述block所在LUN的平均擦除次数的和与预先设置的擦除优先级的个数求余,获取所述擦除优先级P的动态排序位置。

可选的,所述排序模块200,还包括:

添加单元,用于将所述擦除优先级P的排序位置作为索引位置添加到对应的擦除优先级双向链表的末尾。

本实施例中,本发明实施例通过计算模块100根据Nand Flash中每个block的擦除次数计算每个block的擦除优先级P,可以获取Nand Flash中每个block进行擦除的优先级,通过排序模块200对所述擦除优先级P进行动态排序,可以将每个block进行擦除的顺序排列出来,从而能够通过擦除模块300按照该顺序对每个block进行擦除,使得Nand Flash进行的全局均衡包含了对动态block的动态均衡和对静态block的静态均衡,进而增加了NandFlash的使用寿命,提高了用户体验。

此外,本发明实施例还提供了一种存储器,包括:

处理器,用于根据所述Nand Flash中每个block的擦除次数计算每个所述block的擦除优先级P;其中,所述Nand Flash中包括静态block和动态block;对所述擦除优先级P进行动态排序;按照所述动态排序位置对所述block进行擦除。

其中,所述存储器具体为Nand Flash。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置和存储器而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的Nand Flash磨损均衡方法、装置及存储器进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号