一种固态盘静态磨损均衡方法及装置与流程

文档序号:17473513发布日期:2019-04-20 05:58阅读:275来源:国知局
一种固态盘静态磨损均衡方法及装置与流程

本发明涉及闪存固态盘存储领域,具体涉及一种固态盘静态磨损均衡方法及装置。



背景技术:

闪存固态盘内部主要分为前端和后端两部分,如图1所示。固态盘的前端主要包含主机接口逻辑(hostinterfacelogic)、dram缓存单元、闪存芯片控制器(flashchipcontroller)、闪存转换层(flashtranslationlayer)等模块。

主机接口逻辑实现了固态盘与主机之间进行通信的协议,例如传统的ahci协议和支持多队列的nvme协议等。dram缓存单元用来缓存应用程序数据和闪存管理所需要的数据结构等。闪存芯片控制器负责将指令和数据发送到后端闪存芯片中,或者将数据从后端闪存芯片中读出。闪存转换层负责处理固态盘的i/o请求,并实现了一系列面向后端闪存的管理算法,如地址映射、垃圾回收、磨损均衡、坏块管理等。

固态盘后端呈层次式结构,如图1所示。这种层次式结构使得固态盘可以通过通道级、芯片级、晶圆级、分组级并行性并行执行访问固态盘的i/o请求。

固态盘后端的通道(channel)通过闪存芯片控制器与固态盘前端相连接。每个通道可以独立工作,不同通道可以完全并发的进行命令、地址、数据的传输。

每个通道上连接了多个闪存芯片(chip)。连接在同一通道上的闪存芯片可以相互独立工作,但是需要共享所连接的通道进行命令、地址、数据的传输。

每个闪存芯片内部集成了多个晶圆(die)。同一闪存芯片内的每个晶圆拥有独立的r/b工作状态信号线,可以相互独立的执行闪存读写指令,但是需要共享闪存芯片与通道之间进行信息传输的接口电路。

每个晶圆内部集成了多个分组(plane)。同一晶圆内的多个分组可以并行的将数据从各自的目标页中读取到寄存器中,或者将各自寄存器中的数据并行的写入到目标页中。但是这种多分组读(multi-planeread)和多分组写(multi-planewrite)操作不仅要求并行执行的请求具有相同的读/写类型,还要求目标地址具有相同的块内偏移。

每个分组内部包含了多个块(block),每个块内包含了多个页(page)。页是闪存芯片的最小读写单位,块是闪存芯片的最小擦除单元。闪存芯片中每个页在被写入数据后,在其所在块被擦除之前不能被写入新的数据。闪存芯片内的每个块的可擦除次数是一定的,当达到最大可擦除次数后会被标记为坏块并结束其使用寿命。

磨损均衡是固态盘闪存转换层中一种可延长固态盘整体使用寿命的数据管理方法。磨损均衡通过均匀分布固态盘中每个块的擦除次数防止部分块提前达到最大可擦除次数,是提升固态盘使用寿命的主要技术之一。固态盘磨损均衡分为两大类,即动态磨损均衡和静态磨损均衡。动态磨损均衡总是将新数据写入到磨损次数最少的可用块中,从而避免对磨损较严重块的擦除。动态磨损均衡不会在固态盘内部产生额外的数据迁移开销,但是会导致冷数据占据的块长时间不被擦除,最终导致冷数据块与其它块之间的磨损不均衡问题不断加重。

静态磨损均衡将磨损次数较少的块中的冷数据定期迁移到擦除次数最多的块中,从而降低磨损最严重的块被再次擦除的机率。静态磨损均衡可以达到更好的全盘磨损均衡效果,但是会在固态盘内引入了大量的数据迁移操作,对固态盘的整体性能产生影响。

固态盘静态磨损可以达到更好的全盘磨损均衡效果,但是会在固态盘内引入了大量的数据迁移操作,对固态盘的整体性能产生影响。



技术实现要素:

本发明要解决的技术问题是:针对现有技术的上述问题,提供一种固态盘静态磨损均衡方法及装置,本发明从减少数据迁移量和提升数据迁移效率两个方面降低静态磨损均衡过程中的数据迁移开销,能够减少冷数据迁移量,提高冷数据迁移效率,在数据迁移总量一定的情况下快速高效的完成数据迁移的任务。

为了解决上述技术问题,本发明采用的技术方案为:

一种固态盘静态磨损均衡方法,其特征在于实施步骤包括:

1)在固态盘中基于轮询原则指定一个域作为热数据放置域,其余域则作为冷热数据放置域,所述域为将固态盘中空间进行逻辑划分的单位;

2)接收针对固态盘的i/o请求;

3)判断i/o请求的类型是否为写,如果为写则跳转执行步骤4);否则跳转执行步骤3);

4)根据i/o请求的地址映射信息获取物理地址,读取并返回数据,结束并退出;

5)针对i/o请求中的数据页进行识别分类为热数据和冷数据,将热数据写入热数据放置域中,将冷数据写入冷数据放置域中;

6)检测获取热数据放置域内所有闪存块的磨损次数,根据各个闪存块的磨损次数确定热数据放置域的状态为磨损均衡状态、次磨损均衡状态、磨损极度不平衡状态之一,如果处于磨损均衡状态或者次磨损均衡状态则跳转执行步骤2);如果处于磨损极度不平衡状态则跳转执行步骤7);

7)对热数据放置域内的闪存块进行冷数据迁移操作;

8)对热数据放置域内的低磨损块进行加速磨损,使得热数据放置域从极度磨损不均衡状态再次回到磨损均衡状态;跳转执行步骤1)。

可选地,步骤5)中针对i/o请求中的数据页进行识别分类为热数据和冷数据具体是指将i/o请求中的数据页中更新更频繁的前1/r部分的数据页作为热数据,其余部分数据页作为冷数据,其中r为将固态盘中空间进行逻辑划分为域的数量。

可选地,步骤6)的详细步骤包括:检测获取热数据放置域内所有闪存块的磨损次数x中的最小值a,如果热数据放置域内所有闪存块的磨损次数x均满足axa+t,则判定热数据放置域处于磨损均衡状态,热数据放置域可以继续接收写请求,并对热数据放置域内任意块进行垃圾回收,跳转执行步骤2);如果热数据放置域内任意闪存块的磨损次数x大于a+t,则判定热数据放置域处于次磨损均衡状态,热数据放置域可以继续接收写请求,并对热数据放置域内磨损次数达到a+t+m次的闪存块采取保护机制禁止垃圾回收操作进行擦除,跳转执行步骤2);如果热数据放置域内磨损次数x大于a+t+m/2以上的闪存块超过热数据放置域内闪存块总数的一半时,则判定热数据放置域处于磨损极度不平衡状态,跳转执行步骤7);其中,t为预设的域内最大可容许的磨损差异度,m为不同域之间的最大磨损次数差。

可选地,热数据放置域内所有闪存块的磨损次数按照其擦除次数分别记录在相应链表中,每个链表标记为blist(i),其中i表示这个链表中块的擦除次数;一个磨损次数为n的闪存块在被垃圾回收并擦除后,则从块链表blist(n)移动到块链表blist(n+1)中。

可选地,所述热数据放置域内磨损次数x大于a+t+m/2以上的闪存块超过热数据放置域内闪存块总数的一半具体是指链表blist(a+m+t/2)到链表blist(a+m+t)中闪存块的总数达到该热数据放置域内闪存块总数的一半;其中,t为预设的域内最大可容许的磨损差异度,m为不同域之间的最大磨损次数差。

可选地,步骤7)的详细步骤包括:

7.1)在blist(a)链表到blist(a+m-1)链表中选择属于同一个晶圆但不同分组的多个块同时作为数据迁移的源闪存块scb;在每个分组中设置两个空闲闪存块分别作为数据迁移的串行写入目标闪存块stb和并行写入目标闪存块ptb;

7.2)在源闪存块scb中寻找可以并行读取的有效页,将这些有效页通过multi-planeread指令读出后,再调用multi-planewrite指令写入到各自对应的并行写入目标闪存块ptb中;对于剩下的有效页则每次从各分组的源闪存块scb中读出一个有效页,然后将这些有效页利用multi-planewrite指令写入到并行写入目标闪存块ptb中;当一个分组中的源闪存块scb中有效数据都迁移完毕的时候,将转换为用串行写入目标闪存块stb接收剩余分组中的有效页,在串行写入目标闪存块stb接收有效页时,数据迁移操作转化为完全串行的读取和写入方式进行;

7.3)在完成对blist(a)链表到blist(a+m-1)链表中有效数据的迁移后,将这些闪存块擦除并分别上移到blist(a+1)链表到blist(a+m)链表中,此时热数据放置域中所有块的最低磨损次数由a变为a+1,其中热数据放置域内所有闪存块的磨损次数x中的最小值。

可选地,步骤8)中对热数据放置域内的低磨损块进行加速磨损的详细步骤包括:继续使用热数据对blist(a+1)链表到blist(a+m-1)链表中的闪存块进行填充,热数据写入的顺序为先写blist(a+1)链表中的闪存块、再写blist(a+2)链表中的闪存块,随着热数据放置域内的可用块总数的减少,垃圾回收操作被触发;在垃圾回收的过程中,优先对blist(a+1)链表中的块进行垃圾回收,在垃圾回收过程中,选择将被回收块中的有效页迁移到blist(a+m+t/2)链表中的块,如果blist(a+m+t/2)中无可用空闲闪存块,则从blist(a+m+t/2+1)链表进行寻找;当完成对blist(a+1)链表中闪存块的垃圾回收和磨损后,这些闪存块从blist(a+1)链表上移到blist(a+2)链表中,此时热数据放置域内所有块进一步规整到blist(a+2)链表到blist(a+m+t)链表中;继续利用热数据从blist(a+2)链表中的块开始向该域中写入热数据,直到blist(a+1)链表到blist(a+m-1)链表中的块都被清空之后,完成对该热数据放置域的静态磨损均衡过程,在此过程中热数据放置域内所有块的最大磨损差异度从m+t减少到t次,该热数据放置域从极度磨损不均衡状态再次回到磨损均衡状态。

本发明还提供一种固态盘静态磨损均衡装置,固态盘和设于固态盘中的控制设备,其特征在于,所述控制设备被编程以执行本发明前述固态盘静态磨损均衡方法的步骤。

和现有技术相比,本发明具有下述优点:本发明基于热数据轮转放置的静态磨损均衡策略,从减少数据迁移量和提升数据迁移效率两个方面降低静态磨损均衡过程中的数据迁移开销,将固态盘空间划分为多个域采用轮转的方式进行静态磨损均衡,在对一个域进行静态磨损均衡时,将负载中的热数据集中写入到该域中,以利用热数据提升低磨损块中冷数据的聚合度,减少冷数据迁移量,利用闪存的内部并行性提高静态磨损均衡过程中的冷数据迁移效率,在数据迁移总量一定的情况下快速高效的完成数据迁移的任务,利用热数据加速磨损低磨损块,提升此过程中对低磨损块垃圾回收的效率,进一步减少静态磨损均衡过程中的数据迁移量。

附图说明

图1为现有闪存固态盘内部结构示意图。

图2为本发明实施例方法的基本流程示意图。

图3为本发明实施例中基于域的固态盘内部空间划分示意图。

图4为本发明实施例中磨损均衡状态变化及块磨损次数变化过程。

图5为本发明实施例中数据迁移时的并(串)行写入目标闪存块。

图6为本发明实施例中热数据放置域内的冷数据迁移流程图。

具体实施方式

如图2所示,本实施例固态盘静态磨损均衡方法的实施步骤包括:

1)在固态盘中基于轮询原则指定一个域(region)作为热数据放置域,其余域则作为冷热数据放置域,域为将固态盘中空间进行逻辑划分的单位;如图3所示,本实施例中将固态盘中空间进行逻辑划分为region0~region3一共四个域,基于轮询原则指定一个域(region)作为热数据放置域时,第一次指定region0为热数据放置域,下一次则指定region1为热数据放置域,依次类推完成针对region0~region3的一轮操作,实现域间的一轮静态磨损均衡。

2)接收针对固态盘的i/o请求;

3)判断i/o请求的类型是否为写,如果为写则跳转执行步骤4);否则跳转执行步骤3);

4)根据i/o请求的地址映射信息获取物理地址,读取并返回数据,结束并退出;

5)针对i/o请求中的数据页进行识别分类为热数据和冷数据,将热数据写入热数据放置域中,将冷数据写入冷数据放置域中;

6)检测获取热数据放置域内所有闪存块的磨损次数,根据各个闪存块的磨损次数确定热数据放置域的状态为磨损均衡状态、次磨损均衡状态、磨损极度不平衡状态之一,如果处于磨损均衡状态或者次磨损均衡状态则跳转执行步骤2);如果处于磨损极度不平衡状态则跳转执行步骤7);

7)对热数据放置域内的闪存块进行冷数据迁移操作;

8)对热数据放置域内的低磨损块进行加速磨损,使得热数据放置域从极度磨损不均衡状态再次回到磨损均衡状态;跳转执行步骤1)。

本实施例中,热数据集中写入可以利用热数据更新频率高的特性,提升热数据放置域内低磨损块中冷数据的聚合度。此外,还可以在加速磨损低磨损块时提升垃圾回收效率,减少数据迁移量。

针对i/o请求中的数据页进行识别分类为热数据和冷数据可以利用传统方法来进行区分,本实施例中热数据是由负载的写请求量和域的数量决定的,步骤5)中针对i/o请求中的数据页进行识别分类为热数据和冷数据具体是指将i/o请求中的数据页中更新更频繁(一段时间内写请求量更多)的前1/r部分的数据页作为热数据,其余部分数据页作为冷数据,其中r为将固态盘中空间进行逻辑划分为域的数量。

本实施例中,步骤6)的详细步骤包括:检测获取热数据放置域内所有闪存块的磨损次数x中的最小值a,如果热数据放置域内所有闪存块的磨损次数x均满足axa+t,则判定热数据放置域处于磨损均衡状态,热数据放置域可以继续接收写请求,并对热数据放置域内任意块进行垃圾回收,跳转执行步骤2);如果热数据放置域内任意闪存块的磨损次数x大于a+t,则判定热数据放置域处于次磨损均衡状态,热数据放置域可以继续接收写请求,并对热数据放置域内磨损次数达到a+t+m次的闪存块采取保护机制禁止垃圾回收操作进行擦除,跳转执行步骤2);如果热数据放置域内磨损次数x大于a+t+m/2以上的闪存块超过热数据放置域内闪存块总数的一半时,则判定热数据放置域处于磨损极度不平衡状态,跳转执行步骤7);其中,t为预设的域内最大可容许的磨损差异度,m为不同域之间的最大磨损次数差。

本实施例中,引入磨损差异度作为评估热数据放置域磨损状态的主要标准。热数据放置域的磨损差异度是指该域内所有块磨损次数的最大差异值。域内磨损差异度可以将热数据放置域内的块擦除次数分布控制在一个特定的范围内,以保证域内任意两个块的磨损度不会相差过大,使域内各块处于近似磨损均衡的效果。各域间同样使用粗粒度的磨损差异度控制策略,使域间各块处于近似磨损均衡的效果,从而达到固态盘全盘磨损均衡的效果。本实施例中设定热数据放置域内最大可容许的磨损差异度为t,不同域之间的最大磨损次数差为m,即:固态盘内各域间的最大磨损次数可以最多相差m次。图4所示为热数据放置域磨损均衡状态变化及磨损次数变化过程,且每一轮静态磨损均衡之间磨损次数最多相差m次。热数据放置域根据其内部块的擦除次数分布情况,在磨损均衡、次磨损均衡、极度不均衡三种状态间循环变化。

如图2所示,假设热数据放置域内所有块的磨损次数的最小值为a,则当域内每个块的磨损次数x满足a<=x<=a+t时,该域处于磨损均衡状态。此时,该域可以继续接收写请求,并对域内任意块进行垃圾回收。如果热数据放置域内有块的磨损次数超过a+t次,则该域进入次磨损均衡状态。此时,该域可以继续接收写请求。但需要对磨损次数达到a+t+m次的块采取保护机制,禁止垃圾回收操作再次对这些块进行擦除。如果热数据放置域内擦除次数达到a+t+m/2次以上的块达到该域内闪存块总数的一半时,这个域进入磨损极度不平衡状态。对处于极度不平衡状态的域触发冷数据迁移操作。

本实施例中,热数据放置域内所有闪存块的磨损次数按照其擦除次数分别记录在相应链表中,每个链表标记为blist(i),其中i表示这个链表中块的擦除次数;一个磨损次数为n的闪存块在被垃圾回收并擦除后,则从块链表blist(n)移动到块链表blist(n+1)中。

本实施例中,热数据放置域内磨损次数x大于a+t+m/2以上的闪存块超过热数据放置域内闪存块总数的一半具体是指链表blist(a+m+t/2)到链表blist(a+m+t)中闪存块的总数达到该热数据放置域内闪存块总数的一半;其中,t为预设的域内最大可容许的磨损差异度,m为不同域之间的最大磨损次数差。

本实施例中,步骤7)的详细步骤包括:

7.1)在blist(a)链表到blist(a+m-1)链表中选择属于同一个晶圆但不同分组的多个块同时作为数据迁移的源闪存块scb(sourceblock);在每个分组中设置两个空闲闪存块分别作为数据迁移的串行写入目标闪存块stb(serialtargetblock)和并行写入目标闪存块ptb(paralleltargetblock),如图5所示,其中源闪存块0(scb0)和源闪存块1(scb1)为属于同一个晶圆但不同分组(一个属于分组plane0、另一个属于分组plane1)的多个块同时作为数据迁移的源闪存块scb;分组plane0中的并行写入目标块0(ptb0)中page0~page1为有效页、其余页为空白页,串行写入目标块0(stb0)中page0~page3为有效页、其余页为空白页;分组plane1中的并行写入目标块1(ptb1)中page0~page1为有效页、其余页为空白页,串行写入目标块1(stb1)中page0~page2为有效页、其余页为空白页;

7.2)在源闪存块scb中寻找可以并行读取的有效页,将这些有效页通过multi-planeread指令读出后,再调用multi-planewrite指令写入到各自对应的并行写入目标闪存块ptb中;对于剩下的有效页则每次从各分组的源闪存块scb中读出一个有效页,然后将这些有效页利用multi-planewrite指令写入到并行写入目标闪存块ptb中;当一个分组中的源闪存块scb中有效数据都迁移完毕的时候,将转换为用串行写入目标闪存块stb接收剩余分组中的有效页,在串行写入目标闪存块stb接收有效页时,数据迁移操作转化为完全串行的读取和写入方式进行;如图5和图6所示,以完成scb0、scb1迁移为例,如果scb0、scb1存在可以并行读取的有效页,则从scb0、scb1并行读取的有效页,然后并行写入ptb0、ptb1中;否则,如果scb0、scb1都存在有效页成立,则从scb0、scb1中串行读取,然后再并行写入ptb0、ptb1中;如果scb0、scb1都存在有效页不能成立,则从scb0、scb1中串行读取,然后再串行写入ptb0、ptb1中,从而完成scb0、scb1的迁移;

7.3)在完成对blist(a)链表到blist(a+m-1)链表中有效数据的迁移后,将这些闪存块擦除并分别上移到blist(a+1)链表到blist(a+m)链表中,此时热数据放置域中所有块的最低磨损次数由a变为a+1,其中热数据放置域内所有闪存块的磨损次数x中的最小值。

在冷数据迁移过程中,利用闪存的内部并行性提高静态磨损均衡过程中的数据迁移效率,在数据迁移总量一定的情况下快速高效的完成数据迁移的任务。每个域的基本组成单元为晶圆,以便于利用闪存芯片的mult-plane高级指令实现静态磨损均衡过程中数据的并行迁移。每个域可以包含多个不同通道上不同芯片内的晶圆,因此不会对固态盘内部通道级和芯片级并行性的利用产生影响。在完成冷数据迁移操作后,对该域内低磨损块进行加速磨损。通过加速磨损过程,该域内所有块的磨损差异度从m+t逐渐减小到t次,该域从极度磨损不均衡状态再次回到磨损均衡状态。在当前热数据放置域重新恢复到磨损均衡状态后,将下一个域作为新的热数据放置域,并开始对下一个域中闪存块的磨损次数分布进行规整。在每一次完整的状态变换过程中,该域内最低磨损次数将会被提升m次。参见图4,当所有域内的最低块擦除次数都被提升m次之后,表明完成了一次完整的热数据轮转过程,并重新开始下一轮的热数据轮转放置。在每一轮热数据轮转放置开始时,将第一个域作为热数据放置域,并将识别的热数据不断写入到该域中。随着更新频率极高的热数据不断写入,该域中多数块的擦除次数会逐步增加,并最终到达blist(a+m+t)链表中。此时,对这些磨损最为严重的闪存块采取保护机制,禁止垃圾回收操作再次对这些块进行擦除。继续将热数据注入到该区域中,直到blist(a+m+t/2)链表到blist(a+m+t)链表中闪存块的总数达到该域内闪存块总数的一半时,这个域进入磨损极度不平衡状态,开始触发冷数据迁移操作。

本实施例中,步骤8)中对热数据放置域内的低磨损块进行加速磨损的详细步骤包括:继续使用热数据对blist(a+1)链表到blist(a+m-1)链表中的闪存块进行填充,热数据写入的顺序为先写blist(a+1)链表中的闪存块、再写blist(a+2)链表中的闪存块,随着热数据放置域内的可用块总数的减少,垃圾回收操作被触发;在垃圾回收的过程中,优先对blist(a+1)链表中的块进行垃圾回收(以加速对低擦除次数块的磨损),在垃圾回收过程中,选择将被回收块中的有效页迁移到blist(a+m+t/2)链表中的块,如果blist(a+m+t/2)中无可用空闲闪存块,则从blist(a+m+t/2+1)链表进行寻找;当完成对blist(a+1)链表中闪存块的垃圾回收和磨损后,这些闪存块从blist(a+1)链表上移到blist(a+2)链表中,此时热数据放置域内所有块进一步规整到blist(a+2)链表到blist(a+m+t)链表中;继续利用热数据从blist(a+2)链表中的块开始向该域中写入热数据,直到blist(a+1)链表到blist(a+m-1)链表中的块都被清空之后,完成对该热数据放置域的静态磨损均衡过程,在此过程中热数据放置域内所有块的最大磨损差异度从m+t减少到t次,该热数据放置域从极度磨损不均衡状态再次回到磨损均衡状态。

此外,本实施例还提供一种固态盘静态磨损均衡装置,固态盘和设于固态盘中的控制设备,该控制设备被编程以执行本实施例前述固态盘静态磨损均衡方法的步骤。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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