一种具有磨损均衡意识的固态硬盘垃圾回收的方法与流程

文档序号:18641876发布日期:2019-09-11 23:30阅读:267来源:国知局
本发明涉及数据存储领域,尤其涉及一种具有磨损均衡意识的固态硬盘垃圾回收的方法。
背景技术
::近十多年来,随着大数据、云计算等互联网行业的蓬勃发展,全球已全面进入数字化信息时代,人们所触及之处都会产生数据,数据量呈现着爆发式的增长。目前研究显示90%的数据都是在近几年内产生,并且每年仍然以50%的速率持续增长。随着数据量的不断增长,对存储的需求也在快速增长。机械硬盘作为现代信息储存的三大支柱之一,由于其本身机械结构和存储方式,在读写速率、功耗、发热等方面无法得到有效的改善,使得机械硬盘的i/o性能与计算机整体i/o性能差距逐渐增大,现已成为制约计算机整体性能提升的重要瓶颈。半导体行业的蓬勃发展,推出了新的存储设备:固态硬盘(solidstatedriver,ssd)。ssd是由控制芯片和存储芯片组成,采用半导体作为存储芯片的介质,无需任何机械装置,不存在需要寻道,降低了i/o请求访问延迟,提高底层带宽,同时以功耗低、抗震防摔、体积小等优点逐渐取代机械硬盘。ssd的工作方式是基于nandflash的物理特性,nandflash的存储方式不同于硬盘的磁介质存储,如有限的擦除次数,异地更新,以及最小写入单位是页,最小擦除单位是块等。为屏蔽nandflash的物理特性,部分研究人员在ssd中引入了闪存转换层的概念(flashtranslatelayer,ftl),ftl负责将ssd模拟成传统机械硬盘的形式,文件系统无需关心底层nandflash型号,以便现有的文件系统能够直接对ssd进行操作。目前现有ftl算法中执行效率最高的是页级映射算法,同时在页级映射算法的基础上相关研究人员进一步提出了改进算法,基于需求的页级映射算法(称为dftl),dftl解决了页级映射表容量过大的问题。dftl将所有的映射信息都存放到nandflash中,称为gmt(globalmappingtable);并在内存中缓存了文件系统最近所访问的部分记录,称为cmt(cachemappingtable)。由于dftl中采用的是“异地更新”机制,当文件系统对nandflash中的数据进行更新时,dftl并不是直接在原数据上进行覆盖,而是将新数据写入到新的物理页中,将源数据标记为无效数据,但无效数据并没有被真实删除,仍然占据nandflash的物理空间。dftl算法长时间运行后,nandflash中的无效数据会越来越多,即可用的真实物理空间越少。因此,怎样才能快速回收nandflash的物理空间,并且能够延长nandflash的使用寿命,是目前急需解决的关键技术。故,针对现有技术的缺陷,实有必要提出一种技术方案以解决现有技术存在的技术问题。技术实现要素:有鉴于此,确有必要提供一种具有磨损均衡意识的固态硬盘垃圾回收的方法,从而能够快速回收nandflash的可用物理空间,同时能够兼顾到nandflash的磨损均衡,使得nandflash能够达到最大使用寿命。为了克服现有技术存在的技术缺陷,本发明的技术方案如下:一种具有磨损均衡意识的固态硬盘垃圾回收的方法,包括以下步骤:步骤s1:在同批次nandflash中随机挑选一片进行破坏性实验,记录每个物理块的p/e次数,生成rect表;步骤s2:从rect中挑选p/e次数最多的物理块作为下次写入的物理块;步骤s3:内存中维护一张ivpt表,记录每个物理块的无效页个数;步骤s4:ssd是否为空闲状态,是则跳转步骤s5,否则跳转步骤s6;步骤s5:在rect中寻找coldblock和hotblock,交换各自有效页,跳转步骤s4;步骤s6:若满足垃圾回收条件,从ivpt中选取无效页最多的物理块作为牺牲对象,将有效页搬移到新的物理块中,跳转步骤s4。作为优选的技术方案,其挑选的nandflash具有完全的随机性,且保证是在同一批次中挑选。作为优选的技术方案,挑选出来的nandflash用作于严格的写、读、擦循环流程,直到测试的物理块报废为止,记录此刻的p/e次数,统计所有物理块的p/e次数,并生成一张rect表。作为优选的技术方案,所述的rect表由数组实现,数组下标表示物理块编号,下标中的值为该物理块的剩余p/e次数等其他信息。作为优选的技术方案,所述的rect表常驻在sram中。作为优选的技术方案,搜索rect中的最大值,将该值的下标取出来,如果rect中有多个最大值,优先选取第一次遇到最大值的下标,作为下一次要写入的物理块。作为优选的技术方案,所述的ivpt表由数组实现,数组下标表示物理块编号,下标中的值为该物理块中无效页的个数。作为优选的技术方案,所述的ivpt表常驻在sram中。作为优选的技术方案,搜索ivpt中的最大值,将该值的下标取出来,如果ivpt中有多个最大值,优先选取第一次遇到最大值的下标,作为垃圾回收的牺牲对象。作为优选的技术方案,coldblock是指写满数据后长期未被更新的物理块;hotblock是指更新频繁的物理块。作为优选的技术方案,colodblock具体表现为rect中p/e次数最多,hotblock具体表现为rect中p/e次数最少。作为优选的技术方案,当ssd处于空闲状态下,判断coldbolck和hotblock中的所有有效页,并将其进行交换。作为优选的技术方案,满足垃圾回收条件时,从ivpt中挑选出无效页最多的物理块,并将该物理块中的所有有效物理页搬移到rect中p/e次数最多的物理块中,搬移完毕后,擦除该物理块。与现有技术相比,本发明通过挑选无效页数量最多的物理块作为垃圾回收对象,能够有效降低垃圾回收所带来的性能消耗;同时挑选p/e次数最多的物理块作为垃圾回收块中有效数据搬移的对象,兼顾了动态磨损均衡,并使用静态磨损均衡来完成冷热数据交换,从而提高了整个系统的性能并延长了固态硬盘的使用寿命。附图说明图1是本发明具有磨损均衡意识的固态硬盘垃圾回收结构图;图2是本发明固态硬盘垃圾回收rmt与gmt有效数据匹配示意图;图3是本发明固态硬盘垃圾回收ivpt更新示意图;图4是本发明固态硬盘垃圾回收rect数据结构示意图;图5是本发明固态硬盘主动垃圾回收处理流程图;图6是本发明固态硬盘被动垃圾回收处理流程图。图7是本发明具有磨损均衡意识的固态硬盘垃圾回收的方法的流程图。如下具体实施例将结合上述附图进一步说明本发明。具体实施方式以下将结合附图对本发明提供的技术方案作进一步说明。参见图7,所示为本发明具有磨损均衡意识的固态硬盘垃圾回收的方法的流程图,包括以下步骤:步骤s1:在同批次nandflash中随机挑选一片进行破坏性实验,记录每个物理块的p/e次数,生成rect表;步骤s2:从rect中挑选p/e次数最多的物理块作为下次写入的物理块;步骤s3:内存中维护一张ivpt表,记录每个物理块的无效页个数;步骤s4:ssd是否为空闲状态,是则跳转步骤s5,否则跳转步骤s6;步骤s5:在rect中寻找coldblock和hotblock,交换各自有效页,跳转步骤s4;步骤s6:若满足垃圾回收条件,从ivpt中选取无效页最多的物理块作为牺牲对象,将有效页搬移到新的物理块中,跳转步骤s4;其中,所述的rect表由数组实现,数组下标表示物理块编号,下标中的值为该物理块的剩余p/e次数等其他信息;所述的ivpt表由数组实现,数组下标表示物理块编号,下标中的值为该物理块中无效页的个数;coldblock为写满数据后长期未被更新的物理块,具体表现为rect中p/e次数最多;hotblock为更新频繁的物理块,具体表现为rect中p/e次数最少。参见图1,所示为本发明固态硬盘垃圾回收所需的模块以及数据结构。在一种优选实施方式中,所述的模块分为垃圾回收模块以及磨损均衡模块。其中,垃圾回收模块包括主动垃圾回收模块和被动垃圾回收模块;磨损均衡模块包括静态磨损均衡模块和动态磨损均衡模块。在一种优选实施方式中,所述的数据结构分别为一级缓存(cmt)、全局转换目录(gtd)、全局映射表(gmt)、反向映射表(rmt)、无效页数量表(ivpt)以及剩余擦除次数数量表(rect)。在一种优选实施方式中,本发明中的cmt与dftl中cmt所述一致,是记录文件系统最近访问的逻辑地址到物理地址的映射。在一种优选实施方式中,本发明中的gmt与dftl中gmt所述一致,是记录所有逻辑地址到物理地址的映射。在一种优选实施方式中,本发明中的gtd与dftl中gtd所述一致,是记录所有gmt在nandflash中的物理地址。在一种优选实施方式中,由于一个物理页无法存储所有逻辑地址到物理地址的映射,因此在nandflash中会保存多张gmt,保存gmt的物理块称为gmtblock。在一种优选实施方式中,gmt由数组实现,数组下标表示逻辑页地址编号,下标的值表示物理页地址。其中,单张gmt的容量设计为一个物理页的大小,物理页暂定大小为16kb,单张gmt可保存4096条映射记录。在一种优选实施方式中,文件系统下发写请求时,如果对同一逻辑页写入了n次,nandflash会写入n个物理页,只有第n次写入的数据才是有效数据,其余之前n-1次数据都为无效数据。而在进行垃圾回收时,是需要判断一个物理块中哪些物理页是有效的,哪些物理页是无效的,为解决此问题,本算法中引入了rmt的概念。在一种优选实施方式中,rmt在sram中只维护一份,rmt中的数据为物理地址到逻辑地址之间的映射。在一种优选实施方式中,rmt以数组的形式实现,数组下标表示物理页地址,下标中的值表示逻辑页地址。其中,当前的物理块写到最大物理页-1时,将sram中的rmt写入到该物理块的最后一个物理页中。在一种优选实施方式中,不同物理块中的rmt之间没有任何关系,每个物理块中的rmt只与当前的物理块相关联。在一种优选实施方式中,如何判断当前物理块中的物理页数据是否有效,则需要进行如下判断:如果rmt的逻辑页(物理地址映射)在cmt或者gmt中的映射与rmt的物理地址相等,那么说明该物理页为有效数据,反之该物理页为无效数据。gmt中的物理地址值需要排除0xffffffff,因为0xffffffff表示映射信息不存在,即没有向该逻辑页写入过任何数据。在一种优选实施方式中,cmt中保存的是最新的映射信息,如果cmt中存在映射单元,则无需判断gmt。如果cmt中不存在该映射单元,再到gmt中判断。进一步的,由于本算法是基于页级映射算法,即一个物理块中的物理页可以映射到任何逻辑页上,因此最多可能会涉及n张gmt。在判断一个物理块中的所有物理页是否有效时,可能需要加载n张gmt。若一个物理块中有四个物理页写入了数据,其中物理页0映射到逻辑页0,物理页1映射到逻辑页2048,物理页2映射到逻辑页4096,物理页3映射到逻辑页0。假设sram中已经缓存了gmt[0],在判断物理页0时,无需加载。判断物理页1,需加载gmt[1]。判断物理页2,需加载gmt[2],依次类推。具体一个实施案例可参考图2。图2演示了一个简单示例,从空盘开始写入数据,写入四个逻辑页,编号分别为0、1、2、3。要写入的物理块地址为x,其对应rmt为rmt[x],rmt[x]的内容如图2(a)所示,其中v表示有效数据,对应的gmt如图2(b)所示。当文件系统重写逻辑页0、1、2、3之后,rmt[x]的内容如图2(c)所示,gmt[0]如图2(d)所示。对于物理页0来说,进行如下判定:rmt[x]中的物理页0的映射为逻辑页0,而gmt[0]逻辑页为0的映射为物理页4,因为物理页4≠物理页0,说明物理页0属于无效数据,图2(c)中物理页为0用叉号进行标记。rmt[x]的物理页4的映射为逻辑页0,gmt[0]逻辑页为0的映射为物理页4,因为物理页4==物理页4,说明物理页4中的数据为有效数据,图2(c)中物理页为4用v进行标记。在一种优选实施方式中,ivpt在sram中只维护一份,ivpt中的数据为物理块中无效页的数量。在一种优选实施方式中,ivpt以数组的形式实现,数组下标表示物理块编号,下标的值表示物理块中无效页数量。在一种优选实施方式中,文件系统每写入一个逻辑页,都需要判断当前写入的逻辑页是否发生了映射更新,即判断是否让某个物理块中物理页的数据无效。进一步的,在写入数据前,需要判断当前逻辑页是否和某个物理页建立映射关系:具体判断步骤参见图3。步骤s310,首先搜索一级缓存cmt,寻找是否有对应的映射信息。步骤s320,如果存在映射关系,则跳转到步骤s360;如果不存在映射信息,则跳转到s330。步骤s330,计算当前逻辑页对应的gmt,到对应的gmt中寻找对应的映射信息。步骤s340,在对应gmt中寻找到逻辑地址映射的映射信息。步骤s350,如果逻辑地址映射到的不是oxfffffff的,oxfffffff表示映射信息不存在,说明之前已经对该逻辑页写入过数据,则跳转到步骤s360。步骤s360,更新ivpt中对应物理块下标的值+1。在一种优选实施方式中,ivpt为垃圾回收提供服务,当ftl需要执行垃圾回收操作的时候,首先从ivpt中选取无效页最多的物理块作为回收对象,如果ivpt中有多个最大值,选取第一次遇到的最大值下标所表示的物理块作为回收对象,从而一次性可以腾出尽可能多的物理空间,同时让下一次的垃圾回收操作尽可能往后延迟。闪存制造商在生产nandflash的时候由于晶圆设计工艺等问题,导致nandflash在出厂的时候可能会存在一定的坏块,或是其中的某些物理块的编程/擦除次数较高,而其他一些物理块的编程/擦除次数要少于这些物理块。现如今的垃圾回收算法都是基于所有物理块都是统一的编程擦除次数,因此到nandflash使用后期,会有更多的物理块成为坏块。ftl会将坏块进行屏蔽,造成用户的真实物理空间永久性减少,且由于物理空间的减少,会频繁触发垃圾回收操作,使得ssd性能下降严重。在一种优选实施方式中,在nandflash贴片之前,选择同一批次同一型号的一片nandflash,所选的nandflash具有完全随机性,且同一批次同一型号的nandflash制作工艺基本一致。对这片nandflash进行擦、写、读循环破坏性测试,直到所有物理块均成为坏块为止,记录并统计所有物理块的编程/擦除次数,将数据生成一张rect表,合理利用每个物理块的擦除次数,使得所有物理块基本在同一时刻成为坏块,最大限度延长nandflash的使用寿命。在一种优选实施方式中,rect在sram中只维护一份,rect中的数据为物理块的剩余擦除次数。在一种优选实施方式中,rect由坏块(badblock)信息、空块(emptyblock)信息,以及剩余擦除次数(remainerasecount)构成。在一种优选实施方式中,rect以数组的形式实现,数组下标表示物理块编号,下标的值如图4所示。其中,最高位(bit15)表示当前物理块是否为坏块,1表示坏块,0表示可用块,主要是将坏块进行屏蔽。次高位(bit14)表示是否为空块,0表示空块,1表示数据块。bit0~bit13表示剩余擦除次数。在一种优选实施方式中,当向某个物理块第一个页写入数据时,将empty域从0更新为1。在一种优选实施方式中,当擦除某个物理块时,将empty域从1更新为0,并其将remainerasecount域减1。进一步的,bad域,表示此物理块为坏块,不能用于存储任何数据,包括用户数据以及映射表。empty域表示该物理块为空块,可以用于存储数据。remainerasecount域,用于磨损均衡,在选择空块时,优先选择剩余擦除次数最大的物理块。在一种优选实施方式中,nandflash中不仅存在着数据块和索引块,还包括未写入任何数据的空块以及不能使用的坏块,垃圾回收系统需要对各类物理块进行管理。执行完垃圾回收操作后,需要更新相应的索引表信息。将擦除后的空块加入到空块池中,即更新rect中的empty域为0,相应的remainerasecount域减1;更新搬移的有效页逻辑地址到物理地址的映射信息;更新ivpt中擦除后的物理块无效页数量为0。在启动垃圾回收之前,需要综合多方面的因素:何时启动垃圾回收、如何选取回收块以及垃圾回收的方法。(1)何时启动垃圾回收。垃圾回收选取的时机大致分为两种:一、使用被动垃圾回收,ftl需预先设置开启垃圾回收的阈值,若nandflash中可用空白物理块的数量低于该阈值时,开启被动垃圾回收。阈值设置不能过小,垃圾回收本身也需要一定数量的空白块来存放回收块中的有效数据,否则垃圾回收可能导致数据丢失。二、使用主动垃圾回收,当ssd系统处于空闲状态下,此时没有任何i/o请求,可以主动开启垃圾回收操作。(2)垃圾回收的方法。如果一个物理块中只包含有效页,垃圾回收尽量不考虑这些块,因为垃圾回收需要释放无效页所占据的物理空间。所以垃圾回收的对象有两种:一、物理块中所有的物理页均为无效页;二、物理块中一部分是有效页,另外一部分是无效页。如果物理块中没有任何有效数据,垃圾回收只需将此块擦除即可。如果物理块中包含部分有效页,需要将有效页搬移到其他空白块中,然后将该物理块执行擦除操作。在一种优选实施方式中,垃圾回收系统包括主动垃圾回收策略和被动垃圾回收策略。当ssd系统长时间未收到文件系统任何请求而处于空闲状态下,开启主动垃圾回收策略;当ssd中剩余可用物理块低于系统设置的阈值时,开启被动垃圾回收策略。(1)主动垃圾回收策略:本算法中主动垃圾回收策略主要是执行静态磨损均衡操作,当ssd系统长期处于空闲状态下,ftl执行静态磨损均衡,具体流程可参见图5。在一种优选实施方式中,静态磨损均衡的操作流程为:搜索rect寻找coldblock,coldblock是指写满数据后长期未被垃圾回收的物理块,表现为rect值的最高位为0,次高位为1,其余位合起来表示的值较大;搜索erct寻找hotblock,hotblock表现为最高位和次高位为0,其余位合起来表示的值较小;计算出hotblock与coldblock剩余擦除次数的差值,若差值大于所设阈值,开启静态磨损均衡,将coldblock中的有效数据和hotblock中的有效数据进行交换。(2)被动垃圾回收策略:本文中地址映射算法是基于页级映射的,因此在垃圾回收中只有部分合并。当空块池中的空块数量少于系统所设定的阈值时,启动被动垃圾回收,来获得一定数量的空块,部分合并的对象分为两种:数据块和索引块,具体流程可参见图6。回收数据块:在ivpt中寻找无效页最多的物理块,且此物理块不能是索引块,只能是数据块,将此物理块作为部分合并的对象。读出此物理块最后一个页的rmt,若读rmt出错,则需要根据当前物理块重建rmt。根据rmt信息与映射信息进行匹配判断当前物理页是否为有效数据,若为有效数据则搬移到新的物理块中,否则直接跳过继续判断下一个物理页,一直判断到物理块的最后一个物理页或者搬移有效页次数已经达到有效页数量为止。搬移数据时需要更新rect,且同步更新映射信息到cmt中,部分合并完成后更新ivpt。回收索引块:当剩余gmtblocks低于一定阈值时,需要对gmtblocks进行部分合并。从rect表中寻找一个空块,选择gmtblocks中无效页最多的物理块作为部分合并的对象。读出此物理块最后一个页的rmt,若读rmt出错,则需要根据当前物理块重建rmt。将rmt中的映射信息与gtd中所记录的映射信息进行匹配,若匹配一致,则当前物理页为有效数据,将数据搬移到新的物理块中;否则直接跳过继续判断下一个物理页,一直判断到物理块的最后一个物理页或者搬移有效页次数已经达到有效页数量为止。搬移数据时需要更新rect,且同步更新映射信息到gtd中,部分合并完成后更新ivpt。以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1