SLC block的搬移实现方法、装置、计算机设备及存储介质
文献发布时间:2023-06-19 10:27:30
技术领域
本发明涉及固态硬盘技术领域,特别是涉及一种SLC block的搬移实现方法、装置、计算机设备及存储介质。
背景技术
目前,NAND Flash闪存芯片分为SLC(单层单元)MLC(多层单元)以及TLC(三层单元)NAND闪存。其中,SLC传统上,每个储存单元内储存1个信息位,称为单阶储存单元(Single-Level Cell,SLC)。SLC闪存的优点是传输速度更快,功率消耗更低和储存单元的寿命更长,成本也就更高。一般情况下,SLC多数用于企业级的固态硬盘中,由于企业对于数据的安全性要求更高,需要保存更长时间。
在现有TLC固态硬盘实现中,会将部分TLC block转换为SLC block,通过这部分SLC block提高写入性能。TLC block转换为SLC block会导致容量降低到原有的1/3,因此SLC block的数量不会很多,其大小会有一定限制,在较大有效数据量写入时,SLC block的大小会出现不足情况,此时数据会写入TLC区域,导致性能降低。在实际平台进行性能测试时,由于测试数据会夹杂操作系统数据写入,导致SLC block回收较为困难,SLC block无法回收导致SLC区域利用率降低,导致整体测试性能降低。
发明内容
基于此,有必要针对上述技术问题,提供一种SLC block的搬移实现方法、装置、计算机设备及存储介质。
一种SLC block的搬移实现方法,所述方法包括:
获取SLC block搬移请求;
根据所述SLC block搬移请求,针对每个SLC block建立一个用于显示当前SLCblock中有效数据存放位置的数据位图;
通过所述数据位图记录当前SLC block内部有效数据的分布情况;
当SLC剩余空闲空间不足时,根据所述数据位图查询定位所述SLC中存放有效数据block对应的位置信息;
根据查询结果搬移SLC block中存放的有效数据,以提高SLC的空间利用率。
在其中一个实施例中,在所述当SLC剩余空闲空间不足时,根据所述数据位图查询定位所述SLC中存放有效数据block对应的位置信息的步骤之后还包括:
判断SLC block中存放的有效数据是否低于预设的阈值;
若所述block中存放的有效数据低于预设的阈值,则将所述block中存放的数据进行搬移。
在其中一个实施例中,所述针对每个SLC block建立一个用于显示当前SLC block中有效数据存放位置的数据位图的步骤具体包括:
针对SLC block建立一个显示有效数据存放位置的Valid_Data_Bitmap;
每个SLC block均存在一个对应Valid_Data_Bitmap,block中的每一个page对应到Valid_Data_Bitmap中的一个比特位;
其中,比特位为1则表示对应page数据有效,比特位为0则表示对应page数据无效。
在其中一个实施例中,所述根据查询结果搬移SLC block中存放的有效数据,以提高SLC的空间利用率的步骤还包括:
在数据位图中查询比特位为1的数据所存放的位置信息,并根据所述位置信息将SLC block中对应位置的数据进行搬移。
一种SLC block的搬移实现装置,所述装置包括:
获取模块,所述获取模块用于获取SLC block搬移请求;
位图生成模块,所述位图生成模块用于根据所述SLC block搬移请求,针对每个SLC block建立一个用于显示当前SLC block中有效数据存放位置的数据位图;
位图记录模块,所述位图记录模块用于通过所述数据位图记录当前SLC block内部有效数据的分布情况;
位置查询模块,所述位置查询模块用于当SLC剩余空闲空间不足时,根据所述数据位图查询定位所述SLC中存放有效数据block对应的位置信息;
数据搬移模块,所述数据搬移模块用于根据查询结果搬移SLC block中存放的有效数据,以提高SLC的空间利用率。
在其中一个实施例中,所述装置还包括判断模块,所述判断模块用于:
判断SLC block中存放的有效数据是否低于预设的阈值;
若所述block中存放的有效数据低于预设的阈值,则将所述block中存放的数据进行搬移。
在其中一个实施例中,所述位图生成模块还用于:
针对SLC block建立一个显示有效数据存放位置的Valid_Data_Bitmap;
每个SLC block均存在一个对应Valid_Data_Bitmap,block中的每一个page对应到Valid_Data_Bitmap中的一个比特位;
其中,比特位为1则表示对应page数据有效,比特位为0则表示对应page数据无效。
在其中一个实施例中,所述数据搬移模块还用于:
在数据位图中查询比特位为1的数据所存放的位置信息,并根据所述位置信息将SLC block中对应位置的数据进行搬移。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
上述SLC block的搬移实现方法、装置、计算机设备及存储介质,通过获取SLCblock搬移请求;根据所述SLC block搬移请求,针对每个SLC block建立一个用于显示当前SLC block中有效数据存放位置的数据位图;通过所述数据位图记录当前SLC block内部有效数据的分布情况;当SLC剩余空闲空间不足时,根据所述数据位图查询定位所述SLC中存放有效数据block对应的位置信息;根据查询结果搬移SLC block中存放的有效数据,以提高SLC的空间利用率。本发明针对每个SLC block生成一个对应的数据位图用于记录SLCblock内部有效数据的分布情况,当SLC block有效数据量较低时,主动搬移清空该block,加速了在主机进行数据写入时SLC block的回收效率,提高了主机数据写入SLC CACHE的概率,提高了写性能。
附图说明
图1为传统技术中RAID实现方式的原理示意图;
图2为本发明中RAID实现方式的原理示意图;
图3为一个实施例中SLC block的搬移实现方法的流程示意图;
图4为另一个实施例中SLC block的搬移实现方法的流程示意图;
图5为一个实施例中SLC block的搬移实现装置的结构框图;
图6为另一个实施例中SLC block的搬移实现装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
目前,在现有TLC固态硬盘实现中,会将部分TLC block转换为SLC block,通过这部分SLC block提高写入性能。TLC block转换为SLC block会导致容量降低到原有的1/3,因此SLC block的数量不会很多,其大小会有一定限制,在较大有效数据量写入时,SLCblock的大小会出现不足情况,此时数据会写入TLC区域,导致性能降低。在实际平台进行性能测试时,由于测试数据会夹杂操作系统数据写入,导致SLC block回收较为困难,SLCblock无法回收导致SLC区域利用率降低,导致整体测试性能降低。
基于此,本发明提供一种SLC block的搬移实现方法,通过选择较低有效数据的SLC block以及快速的搬移实现算法,在测试期间可以快速的回收SLC block,提高了SLC区域的空间利用率,加速整体的写入性能。
在一个实施例中,如图1所示,提供了一种SLC block的搬移实现方法,该方法包括:
步骤102,获取SLC block搬移请求;
步骤104,根据SLC block搬移请求,针对每个SLC block建立一个用于显示当前SLC block中有效数据存放位置的数据位图;
步骤106,通过数据位图记录当前SLC block内部有效数据的分布情况;
步骤108,当SLC剩余空闲空间不足时,根据数据位图查询定位SLC中存放有效数据block对应的位置信息;
步骤110,根据查询结果搬移SLC block中存放的有效数据,以提高SLC的空间利用率。
在本实施例中,提供了一种SLC block的搬移实现方法,当SLC free block不足时,主动搬移有效数据低于阈值的block,以提高SLC区域的空间利用率,具体的实现过程可参考图3所示。
首先,获取SLC block搬移请求。接着,根据该SLC block搬移请求,针对每个SLCblock建立一个用于显示当前SLC block中有效数据存放位置的数据位图。具体地,可通过该数据位图记录当前SLC block内部有效数据的分布情况,数据位图中不同位置对应SLCblock中不同的page。
接着,当SLC剩余空闲空间不足时,根据数据位图查询定位SLC中存放有效数据block对应的位置信息。最后,根据查询结果搬移SLC block中存放的有效数据,以提高SLC的空间利用率。
在其中一个实施例中,在当SLC剩余空闲空间不足时,根据数据位图查询定位SLC中存放有效数据block对应的位置信息的步骤之后还包括:判断SLC block中存放的有效数据是否低于预设的阈值;若block中存放的有效数据低于预设的阈值,则将block中存放的数据进行搬移。
具体地,在测试过程写入数据后,SLC block只有部分block擦除后可以使用,当SLC可以使用的block少于一定的阈值时,则开始检查SLC block的有效数据,搬移有效数据低于阈值的block。
在上述实施例中,通过获取SLC block搬移请求;根据所述SLC block搬移请求,针对每个SLC block建立一个用于显示当前SLC block中有效数据存放位置的数据位图;通过所述数据位图记录当前SLC block内部有效数据的分布情况;当SLC剩余空闲空间不足时,根据所述数据位图查询定位所述SLC中存放有效数据block对应的位置信息;根据查询结果搬移SLC block中存放的有效数据,以提高SLC的空间利用率。本方案针对每个SLC block生成一个对应的数据位图用于记录SLC block内部有效数据的分布情况,当SLC block有效数据量较低时,主动搬移清空该block,加速了在主机进行数据写入时SLC block的回收效率,提高了主机数据写入SLC CACHE的概率,提高了写性能。
在一个实施例中,如图2所示,提供了一种SLC block的搬移实现方法,该方法中针对每个SLC block建立一个用于显示当前SLC block中有效数据存放位置的数据位图的步骤具体包括:
步骤202,针对SLC block建立一个显示有效数据存放位置的数据位图Valid_Data_Bitmap;
步骤204,每个SLC block均存在一个对应Valid_Data_Bitmap,block中的每一个page对应到Valid_Data_Bitmap中的一个比特位;比特位为1则表示对应page数据有效,比特位为0则表示对应page数据无效;
步骤206,在数据位图中查询比特位为1的数据所存放的位置信息,并根据位置信息将SLC block中对应位置的数据进行搬移。
在传统TLC SSD带SLC CACHE的实现中,SLC CACHE数据的清空通常在host空闲时进行。这就导致了在主机写入时,SLC block即使只包含少量的有效数据,也不能被及时的搬移擦除后使用。
在本实施例中提供了一种在主机写入时根据SLC block的状态搬移清理SLCblock的方法。具体地,当SLC剩余空闲空间较少时,触发该快速搬移SLC block的功能,会快速清理SLC区域有效数据较少的SLC block,供host数据写入。
快速的SLC block搬移方法的实现方式可参考图4所示:针对SLC block,建立一个显示其有效数据存放位置的表Valid_Data_Bitmap,每个SLC block均存在一个对应Valid_Data_Bitmap表,block中的每一个page对应到Valid_Data_Bitmap中的一个比特位,比特位为1则表示该page数据有效,为0则表示无效。通过该数据位图可以快速的定位SLC block的有效数位置,快速的搬移SLC block的数据,减少对host数据写入性能的影响。
在本实施例中,通过Valid_Data_Bitmap加速搬移效率,保证搬移SLC数据时降低对主机写入性能的影响。
应该理解的是,虽然图1-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种SLC block的搬移实现装置500,该装置包括:
获取模块501,用于获取SLC block搬移请求;
位图生成模块502,用于根据所述SLC block搬移请求,针对每个SLC block建立一个用于显示当前SLC block中有效数据存放位置的数据位图;
位图记录模块503,用于通过所述数据位图记录当前SLC block内部有效数据的分布情况;
位置查询模块504,用于当SLC剩余空闲空间不足时,根据所述数据位图查询定位所述SLC中存放有效数据block对应的位置信息;
数据搬移模块505,用于根据查询结果搬移SLC block中存放的有效数据,以提高SLC的空间利用率。
在一个实施例中,如图6所示,提供了一种SLC block的搬移实现装置500,该装置包括判断模块506,用于:
判断SLC block中存放的有效数据是否低于预设的阈值;
若所述block中存放的有效数据低于预设的阈值,则将所述block中存放的数据进行搬移。
在一个实施例中,位图生成模块502还用于:
针对SLC block建立一个显示有效数据存放位置的数据位图Valid_Data_Bitmap;
每个SLC block均存在一个对应Valid_Data_Bitmap,block中的每一个page对应到Valid_Data_Bitmap中的一个比特位;
其中,比特位为1则表示对应page数据有效,比特位为0则表示对应page数据无效。
在一个实施例中,数据搬移模块505还用于:
在数据位图中查询比特位为1的数据所存放的位置信息,并根据所述位置信息将SLC block中对应位置的数据进行搬移。
关于SLC block的搬移实现装置的具体限定可以参见上文中对于SLC block的搬移实现方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图7所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种SLC block的搬移实现方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- SLC block的搬移实现方法、装置、计算机设备及存储介质
- SLC写性能提升方法、装置、计算机设备及存储介质