CN115857811A - 一种数据处理方法、装置、固态硬盘及可读存储介质 - Google Patents
一种数据处理方法、装置、固态硬盘及可读存储介质 Download PDFInfo
- Publication number
- CN115857811A CN115857811A CN202211572933.9A CN202211572933A CN115857811A CN 115857811 A CN115857811 A CN 115857811A CN 202211572933 A CN202211572933 A CN 202211572933A CN 115857811 A CN115857811 A CN 115857811A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- block
- flash memory
- virtual data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及存储领域并公开了一种数据处理方法、装置、固态硬盘及可读存储介质,该方法包括:确定闭合固态硬盘中目标开放块后,在目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据;若找到目标虚拟数据,则将目标虚拟数据,通过闪存内迁移的方式,填充至目标开放块;在目标开放块被填满后,确定目标开放块为目标闭合块。在本申请中,在闪存分组内查找到合适的目标虚拟数据,并利用闪存分组内块之间的数据迁移功能,对开放块进行数据填充,从而完成块闭合处理,由于处理过程中,不涉及内存构建虚拟数据,也不涉及纠错引擎,因而不消耗固态硬盘系统总线带宽,不会影响有效数据的写入效率,且处理过程不会带来额外功耗开销。
Description
技术领域
本申请涉及存储技术领域,特别是涉及一种数据处理方法、装置、固态硬盘及可读存储介质。
背景技术
闪存(NAND Flash)是固态硬盘(SSD)的主要存储介质。在闪存(NAND Flash)中一个块(Block)分为闭合状态和开放状态,其中闭合状态是指一个块的所有子线(WordLine)或者页(Page)完全被写入(Program/Write)数据,否则称之为开放状态。当处于开放状态的块,一般称该块为开放块(OpenBlock),反之称之为闭合块(ClosedBlock)。
对于开放块上已写入数据的子线(WordLine)或者页(Page),其原始错误比特率(RBER)相对于闭合块上已写入数据的子线(WordLine)或者页(Page)要高很多,存在超过SSD主控纠错能力而导致数据错误的风险。对此现象的处理方法,称之为块(Block)闭合处理:当一定条件下(如固态硬盘需要掉电时,或者不再有其他数据作为填写数据源时),必须对开放块的剩余子线(WordLine)或者页(Page)填写虚拟数据(Dummy Data),从而使开放块变成闭合状态。
现有的块闭合处理技术和普通写数据一样,在固态硬盘内存(DRAM或者SRAM)构建虚拟数据(Dummy Data),然后进行通过纠错引擎加入纠错冗余后,写入到闪存。这种写入方法(数据传输路径)不仅消耗固态硬盘系统总线带宽,影响有效数据的写入效率,而且由于需要纠错引擎,处理过程带来额外功耗开销。
综上所述,如何有效地改善块闭合处理等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供一种数据处理方法、装置、固态硬盘及可读存储介质,在闪存分组内查找到合适的目标虚拟数据,并利用闪存分组(Plane)内块之间的数据迁移功能,将开放块进行数据填充,从而完成块闭合处理,由于该块闭合处理过程中,不消耗固态硬盘系统总线带宽,不会影响有效数据的写入效率,而且不需要纠错引擎,处理过程不会带来额外功耗开销。
为解决上述技术问题,本申请提供如下技术方案:
一种数据处理方法,包括:
确定闭合固态硬盘中目标开放块后,在所述目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据;
若找到所述目标虚拟数据,则将所述目标虚拟数据,通过闪存内迁移的方式,填充至所述目标开放块;
在所述目标开放块被填满后,确定所述目标开放块为目标闭合块。
优选地,在所述目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据,包括:
在所述闪存分组内的预置虚拟数据和/或无效数据中,查找符合数据离散性要求的目标数据;
将所述目标数据确定为所述目标虚拟数据。
优选地,在所述闪存分组内的预置虚拟数据中,查找符合数据离散性要求的目标数据,包括:
获取所述目标开放块中待填充的目标标识号;
在所述预置虚拟数据中,查找标识号与所述目标标识号一致的目标预置虚拟数据;其中,所述标识号为实现数据离散性要求的扰码因子,所述标识号为线号或页号;
将所述目标预置虚拟数据确定为所述目标数据。
优选地,初始化所述固态硬盘,还包括:
确定所述固态硬盘的目标块为预置区域后,生成虚拟数据;
将所述虚拟数据写入至所述目标块的预置区域,以完成虚拟数据预置处理。
优选地,在所述闪存分组内的无效数据中,查找符合数据离散性要求的目标数据,包括:
获取所述目标开放块中待填充的目标标识号;
在所述无效数据中,查找标识号与所述获取的目标标识号一致的目标无效数据;其中,所述标识号为线号或页号;
将所述无效数据确定为所述目标数据。
优选地,在所述闪存分组内的预置虚拟数据和/或无效数据中,查找符合数据离散性要求的目标数据,包括:
在所述预置虚拟数据中查找所述目标数据;
若未查找到所述目标数据,则在所述无效数据中查找所述目标数据。
优选地,若未找到所述目标虚拟数据,包括:
在所述固态硬盘的内存中构建所述目标虚拟数据;
在利用纠错引擎对所述目标虚拟数据进行纠错处理之后,将所述目标虚拟数据写入所述目标开放块。
本申请还提供如下技术方案:一种数据处理装置,包括:
数据查找模块,用于确定闭合固态硬盘中目标开放块后,在所述目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据;
数据迁移模块,用于若找到所述目标虚拟数据,则将所述目标虚拟数据,通过闪存内迁移的方式,迁移至所述目标开放块;
块闭合确定模块,用于在所述目标开放块被填满后,确定所述目标开放块为目标闭合块。
本申请还提供如下技术方案:一种固态硬盘,包括:
闪存阵列,用于存储数据,所述数据包括用户数据和系统数据,所述系统数据包括计算机程序对应数据;
固态硬盘主控,用于执行所述计算机程序时实现如上述数据处理方法的步骤。
本申请还提供如下技术方案:一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。
应用本申请实施例所提供的方法,确定闭合固态硬盘中目标开放块后,在目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据;若找到目标虚拟数据,则将目标虚拟数据,通过闪存内迁移的方式,填充至目标开放块;在目标开放块被填满后,确定目标开放块为目标闭合块。
当明确要闭合目标硬盘中的目标开放块之后,首先是从目标开放块所属的闪存分组中查找符合数据离散性要求的目标虚拟数据。在找到该目标虚拟数据的情况下,将该目标虚拟数据作为数据源,结合闪存分组(Plane)内块之间的数据迁移功能,对目标开放块进行数据填充,当目标开放块填满之后,即可完成对目标开放块的块闭合处理。即,在闪存分组内查找到合适的目标虚拟数据,并利用闪存分组(Plane)内块之间的数据迁移功能,对开放块进行数据填充,从而完成块闭合处理,由于在该块闭合处理过程中,不涉及内存构建虚拟数据,也不涉及纠错引擎,因而不消耗固态硬盘系统总线带宽,不会影响有效数据的写入效率,且处理过程不会带来额外功耗开销。
相应地,本申请实施例还提供了与上述数据处理方法相对应的数据处理装置、固态硬盘和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种数据处理方法的实施流程图;
图2为一种固态硬盘组成结构示意图;
图3为一种闪存基本结构示意图;
图4为本申请实施例中一种虚拟数据填充示意图;
图5为本申请实施例中一种数据处理方法的具体实时示意图;
图6为本申请实施例中一种预置虚拟数据存放示意图;
图7为本申请实施例中一种闪存特性示意图;
图8为本申请实施例中一种复用无效数据的示意图;
图9为本申请实施例中一种典型的闭合块的数据状态分布示意图;
图10为本申请实施例中一种虚拟数据流向示意图;
图11为本申请实施例中基于预置虚拟数据实现的数据处理方法的具体实施示意图;
图12为本申请实施例中基于无效数据实现的数据处理方法的具体实施示意图;
图13为本申请实施例中一种虚拟数据预置流程示意图;
图14为本申请实施例中一种块闭合处理流程图;
图15为本申请实施例中一种数据处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例中一种数据处理方法的流程图,该方法包括以下步骤:
S101、确定闭合固态硬盘中目标开放块后,在目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据。
在固态硬盘需要掉电时,或者不再有其他数据作为填写数据源时,确定闭合固态硬盘中的目标开放块。
该目标开放块可以为任意一块能够被用户使用的数据块。
明确需要闭合的目标开放块之后,进一步即为填充该目标开放块寻找数据源。
需要注意的是,虽然虚拟数据(Dummy Data)本身是没有任何用处的,其作用就是为填满块(Block),但是对数据格式(Data Pattern)仍然需要满足闪存要求:数据离散性要求,数据离散性要求在固态硬盘技术转化为Scramble技术,即对数据进行加扰后来满足离散性,加扰的因子包括子线号(WL Number)或者页号(Page Number)相关,从而使不同子线或者页的数据具有不同的离散性。故而不能用单一的数据源,需要判断源数据是否满足要求,比如写入一个块的子线或者页数据时,利用子线或者页号作为扰码因子,那么写入到该块的所有子线或者页内数据满足离散性要求,如果将该块内数据填充到另一个块的对应的子线或者页号内,那么目标的块内的子线或者页仍然可以满足数据离散性要求。
因而,在寻找填充目标开放块的数据源时,需要寻找满足数据离散性要求的目标虚拟数据。在本申请实施例中,为了改善块闭合处理,在寻找填充目标开放块的数据源时,优先考虑在目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据。为了能够在同组内找到目标虚拟数据,可以提前在闪存中预先存放数据以便作为数据源使用,也可以将闪存内已有的数据(如用户写入的数据)作为数据源使用。
为便于本领域技术人员更好地理解固态硬盘的结构,以及块、分组等相关概念,请参考图2,图2为一种固态硬盘组成结构示意图,固态硬盘包括:
固态硬盘主控(SSD Controller):作为控制运算单元,管理SSD内部系统;
闪存阵列:作为存储单元,存储数据(用户数据和系统数据),一般呈现多个闪存通道(Channel,简写CH),一个通道独立连接一组NAND Flash,如图示CH0/CH1······CHx。其中,闪存(NAND Flash),其特性是写入之前,必须进行擦除,且每个闪存擦除次数有限;
动态随机存储器(DDR,DRAM):作为缓存,算法表存储单元;
连接器是连接主机(PC或者服务器),其他外围单元(外设,串口,传感器,电源芯片等)。
请参考图3,图3为一种闪存基本结构示意图,一个闪存(封装Chip)由多个裸片(Die)组成,每个裸片由多个分组(Plane)组成,每个分组由多个块(Block)组成,每个块由多个字线(WordLine)组成,每个字线由1~N个页(Page)组成。其中,老类型的闪存无字线,块由多个页组成。块是擦除的基本单位。页或者字线是读写的基本单位。当一个存储页或者字线被写入数据后,只有在进行了块擦除后才可进行新的写入操作。
请参考图3,图3为本申请实施例中一种块状态示意图。一个块(Block)分为闭合状态和开放状态,其中闭合状态是指一个块的所有子线(WordLine)或者页(Page)完全被写入(Program/Write)数据,否则称之为开放状态。当处于开放状态的块,一般称该块之为开放块(OpenBlock),反之称之为闭合块(ClosedBlock)
S102、若找到目标虚拟数据,则将目标虚拟数据,通过闪存内迁移的方式,填充至目标开放块。
在查找到目标虚拟数据的情况下,由于所查找到的目标虚拟数据是存放于与目标开放块同一组的其他数据块中的。加之,请参见图4,图4为本申请实施例中一种虚拟数据迁移示意图。在闪存功能存在一种闪存分组(Plane)内块之间的数据迁移功能,一种典型的迁移操作,是将分组(Plane)内一个块的数据,填充到另一个块内,其填充的最小颗粒度是子线或者页操作,这种填充是在闪存内进行的。
因而,在查找到了目标虚拟数据的情况下,可以直接将该目标虚拟数据填充至目标开放块,从而对目标开放块进行填充。
S103、在目标开放块被填满后,确定目标开放块为目标闭合块。
基于开放块与闭合块的划分概念可知,当目标开放块被填满之后,便可明确该目标块已闭合,为了便于区别,在本申请中,将未闭合之前称之为目标开放块,在闭合之后,将其称之为目标闭合块,但二者实质对应的是同一个块的不同数据状态。
在本申请中的一种具体实施方式中,若未找到目标虚拟数据,则可在内存中构建出目标虚拟数据,从而完成块闭合处理。具体的实现包括:
步骤一、在固态硬盘的内存中构建目标虚拟数据;
步骤二、在利用纠错引擎对目标虚拟数据进行纠错处理之后,将目标虚拟数据写入目标开放块。
为便于描述,下面将上述两个步骤结合起来进行说明。
请参考图5,图5为本申请实施例中一种数据处理方法的具体实时示意图。在固态硬盘内存(DRAM或者SRAM)构建目标虚拟数据(Dummy Data),然后进行通过主控纠错引擎加入纠错冗余后,写入到闪存,直到该块写满为止。
应用本申请实施例所提供的方法,确定闭合固态硬盘中目标开放块后,在目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据;若找到目标虚拟数据,则将目标虚拟数据,通过闪存内迁移的方式,填充至目标开放块;在目标开放块被填满后,确定目标开放块为目标闭合块。
当明确要闭合目标硬盘中的目标开放块之后,首先是从目标开放块所属的闪存分组中查找符合数据离散性要求的目标虚拟数据。在找到该目标虚拟数据的情况下,将该目标虚拟数据作为数据源,结合闪存分组(Plane)内块之间的数据迁移功能,对目标开放块进行数据填充,当目标开放块填满之后,即可完成对目标开放块的块闭合处理。即,在闪存分组内查找到合适的目标虚拟数据,并利用闪存分组(Plane)内块之间的数据迁移功能,对开放块进行数据填充,从而完成块闭合处理,由于在该块闭合处理过程中,不涉及内存构建虚拟数据,也不涉及纠错引擎,因而不消耗固态硬盘系统总线带宽,不会影响有效数据的写入效率,且处理过程不会带来额外功耗开销。
需要说明的是,基于上述实施例,本申请实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
在本申请中的一种具体实施方式中,上述步骤S103在目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据,包括:
步骤一、在闪存分组内的预置虚拟数据和/或无效数据中,查找符合数据离散性要求的目标数据;
步骤二、将目标数据确定为目标虚拟数据。
为便于描述,下面将上述两个步骤结合起来进行说明。
在本申请中,可以单独提前预置虚拟数据从而作为块闭合处理的数据源,也可以单独将闪存内所存在无效数据作为块闭合处理的数据源,当然也可以将这两种方式结合起来。
无论是从预置虚拟数据中,还是从无效数据中查找到了符合数据离散性要求的目标数据,都可以将其确定为目标虚拟数据,以便进一步将目标虚拟数据作为填充目标开放块的数据源。
下面针对不同的数据源查找出目标数据进行详细说明:
方式1:在闪存分组内的预置虚拟数据中,查找符合数据离散性要求的目标数据,包括:
步骤1、获取目标开放块中待填充的目标标识号;
步骤2、在预置虚拟数据中,查找标识号与目标标识号一致的目标预置虚拟数据;其中,标识号为实现数据离散性要求的扰码因子,标识号为线号或页号;
步骤3、将目标预置虚拟数据确定为目标数据。
为便于描述,下面将上述3个步骤结合起来进行说明。
由于数据离散性要求在固态硬盘技术转化为Scramble技术,加扰的因子包括子线号(WL Number)或者页号(Page Number)相关,从而使不同子线或者页的数据具有不同的离散性。故而在寻找合适的数据源时,需基于目标开放块中待填充的目标标识号进行寻找。具体的,可先获取到目标开放块中待填充的目标标识号。具体的,对于具体如何获取到该目标标识号,可以参照相关查找/获取方式,在此不再一一赘述。
需要注意的是,该目标标识号可以为1个也可以为2个及2个以上,当目标标识号的数量大于1时,可以对应连续空间也可以对应非连续空间。即,未填写数据的页或者子线均可对应该目标标识号。
可以对应每一个分组的每个子线号或页号均有对应的预置虚拟数据,也可以仅有一部分子线号或页号对应有预置虚拟数据。每一个预置虚拟数据具有其对应的子线号或页号,因而,通过查找与目标标识号一致的标识号对应的预置虚拟数据,可以获得该目标预置虚拟数据。然后,将目标预置虚拟数据确定为目标数据。该目标数据即为用于填充目标开放块的数据。
在本申请中的一种具体实施方式中,为了避免预置虚拟数据占用固态硬盘的可用存储空间,还可利用闲置空间来存储预置虚拟数据。具体的,可初始化固态硬盘具体执行以下步骤:
步骤①、确定固态硬盘的目标块为预置区域后,生成虚拟数据;
步骤②、将虚拟数据写入至目标块的预置区域,以完成虚拟数据预置处理。
具体的,可将存放固件代码所对应的目标块为预置区域。即在目标块存放了固件代码之后,其剩余空间可以存放预置的虚拟数据。当然,目标块还可以为其他特定的块,在此不再一一列举。
在固态硬盘中,一般会有一个特定区域作为固件代码(FW Img)存放区域,为了保障存放的安全性,会存放多个备份,即会在每个闪存的分组(Plane)选择一个块均存放。固件代码一般都不大,其大小不会填满整个块,那么该块的剩余区域不再作为其他用途,会存在较多的闲置子线或者页。在本申请实施例中,即利用这些闲置的子线和页,作为特定区存放预置虚拟数据,如此,则不会额外消耗闪存块。
具体的,请参考图6,图6为本申请实施例中一种预置虚拟数据存放示意图。在固态硬盘初始化,在每个Plane的Block0(闪存特性,每个Block0均为可用块)存放固件代码区域之外,开辟存放预置虚拟数据区域,即填写Dummy Data至这些子线或者页。
方式2:在闪存分组内的无效数据中,查找符合数据离散性要求的目标数据,包括:
步骤1、获取目标开放块中待填充的目标标识号;
步骤2、在无效数据中,查找标识号与获取的目标标识号一致的目标无效数据;其中,标识号为线号或页号;
步骤3、将无效数据确定为目标数据。
为便于描述,下面将上述3个步骤结合起来进行说明。
请参考图7,图7为本申请实施例中一种闪存特性示意图。图示闪存特性:块(Block)是擦除后才能写入,这个特性会造成:当主机更新数据后,在块上的之前旧数据成为无效数据(Invalid Data)。
请参考图8,图8为本申请实施例中一种复用无效数据的示意图。在固态硬盘使用过程,会天然的产生无效数据(Invalid Data),这些数据是老的用户数据,在主机视角认为是不存在的或者已经被覆盖的,在固态硬盘内部已经被标识为无效进行追踪管理。而这些数据的格式符合离散性的要求的,利用这种无效数据作为虚拟数据(Dummy Data)源,不需要进行预置操作。但这些数据是随机分布在固态硬盘,当作为虚拟数据(Dummy Data)源,需要进行搜索对比,如符合条件(比如子线或者页号等于要填写虚拟数据的子线或者页号)就可以作为源。
方式3:在闪存分组内的预置虚拟数据和/或无效数据中,查找符合数据离散性要求的目标数据,包括:
步骤1、在预置虚拟数据中查找目标数据;
步骤2、若未查找到目标数据,则在无效数据中查找目标数据。
为便于描述,下面将上述2个步骤结合起来进行说明。
在实际应用时,可将上述方式1与方式2结合起来进行使用,从而产生方式3。请参考图9,图9为本申请实施例中一种典型的闭合块的数据状态分布示意图,即会包含有效数据子线和无效数据子线,分布具有随机性,取决主机数据更新的情况。也就是说,在上述方式2中,无效数据的存放位置并非是固定的,寻找满足数据离散性要求的目标无效数据时,相较于方式1中,存放位置固定的预置虚拟数据更慢,因而可以优先采用方式1的方式,从预置虚拟数据中查找目标数据。在预置虚拟数据中无法找到该目标数据时,再从无效数据中查找目标数据。当然,若在闪存中均无法找到目标虚拟数据,则需内存构建目标虚拟数据。
为便于本领域技术人员更好地理解和实施本申请实施例所提供的数据处理方法,下面结合相关技术以及本申请技术方案的构思以及具体实施,对该数据处理方法进行详细说明。
为解决开放块闭合处理所对应的问题,在相关方案中,并不直接对开放块(OpenBlock)进行闭合处理,而是监测开放块的原始错误比特率,当达到阈值时,将开放块内的数据搬移到新的块(即进行GC操作),但是,这种方法存在以下两个问题:
1.存在失控的场景,当掉电后长期静置后,上电之后开放块往往大于纠错能力,而导致数据丢失。
2.增加GC操作,必然引发写放大,增加块(Block)擦写次数,从而减少固态硬盘的总体寿命。
也就是说,开放块的闭合处理问题,仍然存在。具体的,虚拟数据(Dummy Data)本身是没有任何用处的,其作用就是为填满块(Block),但每次都需要对虚拟数据进行ECC编码后写入,不仅消耗固态硬盘系统总线带宽,影响用户数据的写入效率,而且由于需要纠错引擎,写入过程存在功耗较大开销。
基于上述实施例的描述可知,本申请实施例所提供的数据处理方法,可以减少对虚拟数据进行重复纠错编码操作(纠错编码带来较高功耗);减少虚拟数据在固态硬盘内总线的传输(每次都是从内存到控制器,然后控制器到闪存)。
具体的,在本申请中,可以一次性预置虚拟数据到特定区域,作为后续块闭合处理的源数据,可减少虚拟数据的纠错编码操作的次数,因为每次需要写的无效数据都是一样的,从而减低了系统功耗。
利用已经被标识为无效数据的区域,作为后续块闭合处理的源数据。即利用已有数据,同样达到减少虚拟数据的纠错编码操作的次数,从而减低了系统功耗。
当需要进行块闭合处理时,选择特定数据处理路径。缩短虚拟数据填充传输路径,从而减少系统总线开销。
与现有技术对比,可知现有技术每次进行块闭合处理,数据都是从内存(DDR或者SRAM)开始,通过固态硬盘主控(SSD Controller)的纠错编码后,在从主控写入到目标块。
请参考图10,图10为本申请实施例中一种虚拟数据流向示意图。即通过在闪存上选择特定区域作为数据源,然后通过闪存内部数据迁移的办法,完成对目标块的闭合处理。
本申请实施例所提供的数据处理方法,其核心思想:虽然虚拟数据(Dummy Data)本身是没有任何用处的,其作用就是为填满块(Block),但是对数据格式(Data Pattern)仍然需要满足闪存要求:数据离散性要求,数据离散性要求在固态硬盘技术转化为Scramble技术,即对数据进行加扰后来满足离散性,加扰的因子包括子线号(WL Number)或者页号(Page Number)相关,从而使不同子线或者页的数据具有不同的离散性。故而不能用单一的数据源,需要判断源数据是否满足要求,比如写入一个块的子线或者页数据时,利用子线或者页号作为扰码因子,那么写入到该块的所有子线或者页内数据满足离散性要求,如果将该块内数据填充到另一个块的对应的子线或者页号内,那么目标的块内的子线或者页仍然可以满足数据离散性要求。
本申请中,新增了2个源数据,其一为特定区域内预置虚拟数据,其二为同组内的无效数据。
第1种数据源的实现,请参考图11,图11为本申请实施例中基于预置虚拟数据实现的数据处理方法的具体实施示意图,具体可分三步:
第一步:初始化时将虚拟数据一次性写入特定区域(所有Plane的Block0)
第二步:在同一个Plane(同一个分组内可共用同一份虚拟数据),寻找和目标子线或者页相同子线号或者页号的预设数据区,作为虚拟数据源。
第三步:将虚拟数据通过闪存内部数据迁移到目标块(OpenBlock)内,完成块闭合处理。
第2种数据源的实现,请参考图12,图12为本申请实施例中基于无效数据实现的数据处理方法的具体实施示意图,分两步
第一步:在同一个Plane,寻找和目标子线或者页相同子线号或者页号的无效数据,作为虚拟数据源。
第二步:将虚拟数据通过闪存内部数据迁移到目标块(OpenBlock)内,完成块闭合处理。
整体设计控制流程—实施方法,包括:
预设区的初始化:由于预设区的子线或者页数是块减去代码区占用的子线或者页数,故而当对开放块进行闭合处理时,会发现没有满足条件(相同子线或者页号)的子线或者页,同样地,对应已经被标识为无效数据的区域也可能不满足条件(相同子线或者页号)的子线或者页,如果上述2个区域都没有,必然需要用到现有技术:从内存(DDR)获取虚拟数据来填写对应的子线或者页。
实施时,以预设区作为第一优先源,以已经被标识为无效数据的区域作为第二优先源,第一,二优先源均无法满足需求时,在内存生成虚拟数据作为数据源。
具体地,一种实施方案如图13,图13为本申请实施例中一种虚拟数据预置流程示意图,包括:
S01:获得存放代码区的分组以及块信息,把其剩余的子线或者页作为预设区,并记录预设区最小的子线或页号为N,块最大的子线或者页号位M。
S02:在内存构建虚拟数据(Dummy Data),并按照预设区子线或者页号(N~M)顺序,依次写入虚拟数据到对应子线或者页上
图14,图14为本申请实施例中一种块闭合处理流程图,包括:
S1:获得需要处理的开放块的分组(Plane)以及需要处理的子线或者页号信息,获得分组信息的目的是为在相同分组里面去找对应的源块,而子线或者页号作为处理的对象集。
S2:从最小子线或者页号开始处理,提取需要操作的最小子线或者页号,作为当前操作的子线或页号。
S3:如前文描述,设计的闪存内部填充操作是在不同块的相同子线或者页号内进行。当前操作的子线或页号是否落在预设区内的范围内,由于预设区的子线是N到块的最大子线号或者页号(其中N-1个子线或者页被用作代码存放区域),故而首先判断当前操作的子线或页号是否大于预设区的最小子线或者页号(N)。如果是,则进行S4。如果否,则进行S9。
S4:将预设区所在块做源数据块。
S5:给开放块所在分组(Plane),发送闪存内部填充命令,将源块对应的子线或者页内的数据填充到当前操作的子线或者页号。
S6:判断当前操作的子线或页号是不是最后的子线或者页号,如果是则进入S8的结束操作。否则标识当前操作的子线或者页号填写完成,进入S2,继续提取需要操作的子线或者页。
S9:由于预设区内没有满足的子线或者页作为源数据,故而从无效数据区进行判断,先获得该分组内所有无效数据子线或者页号,进入S10。
S10:在该分组内所有无效数据子线或者页号进行搜索,其判断条件是否有等于当前操作的子线或者页号,如果是,则进入S11;否则进入S12。
S11:由于搜索到了对应子线或者页,故而将对应的块作为源数据块,然后进入S5
S12:由于没有搜索到对应子线或者页,只能在内存(DDR/SRAM)内构建虚拟数据(Dummy Data)来填写对应的子线,进入S13。
S13:进行一次从内存(DDR/SRAM)取数据写到闪存对应子线或者页的操作,然后进入S6来判断是否完成闭合操作。
本申请通过改善闭合块处理方法,即设定不同的数据源和数据传输路径,达到大多数情况下虚拟数据(Dummy Data)的填写,并不在内存和主控之间、主控内部以及主控和闪存之间进行数据传输,从而减少了系统总线负担,降低了系统功耗。
相应于上面的方法实施例,本申请实施例还提供了一种数据处理装置,下文描述的数据处理装置与上文描述的数据处理方法可相互对应参照。
参见图15所示,该装置包括以下模块:
数据查找模块101,用于确定闭合固态硬盘中目标开放块后,在目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据;
数据迁移模块102,用于若找到目标虚拟数据,则将目标虚拟数据,通过闪存内迁移的方式,填充至目标开放块;
块闭合确定模块103,用于在目标开放块被填满后,确定目标开放块为目标闭合块。
应用本申请实施例所提供的装置,确定闭合固态硬盘中目标开放块后,在目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据;若找到目标虚拟数据,则将目标虚拟数据,通过闪存内迁移的方式,填充至目标开放块;在目标开放块被填满后,确定目标开放块为目标闭合块。
当明确要闭合目标硬盘中的目标开放块之后,首先是从目标开放块所属的闪存分组中查找符合数据离散性要求的目标虚拟数据。在找到该目标虚拟数据的情况下,将该目标虚拟数据作为数据源,结合闪存分组(Plane)内块之间的数据迁移功能,对目标开放块进行数据填充,当目标开放块填满之后,即可完成对目标开放块的块闭合处理。即,在闪存分组内查找到合适的目标虚拟数据,并利用闪存分组(Plane)内块之间的数据迁移功能,对开放块进行数据填充,从而完成块闭合处理,由于在该块闭合处理过程中,不涉及内存构建虚拟数据,也不涉及纠错引擎,因而不消耗固态硬盘系统总线带宽,不会影响有效数据的写入效率,且处理过程不会带来额外功耗开销。
在本申请的一种具体实施方式中,数据查找模块101,具体用于在闪存分组内的预置虚拟数据和/或无效数据中,查找符合数据离散性要求的目标数据;
将目标数据确定为目标虚拟数据。
在本申请的一种具体实施方式中,数据查找模块101,具体用于获取目标开放块中待填充的目标标识号;
在预置虚拟数据中,查找标识号与目标标识号一致的目标预置虚拟数据;
其中,标识号为实现数据离散性要求的扰码因子,标识号为线号或页号;
将目标预置虚拟数据确定为目标数据。
在本申请的一种具体实施方式中,初始化模块,用于初始化固态硬盘,并在确定固态硬盘的目标块为预置区域后,生成虚拟数据;
将虚拟数据写入至目标块的预置区域,以完成虚拟数据预置处理。
在本申请的一种具体实施方式中,数据查找模块101,具体用于获取目标开放块中待填充的目标标识号;
在无效数据中,查找标识号与获取的目标标识号一致的目标无效数据;其中,标识号为线号或页号;
将无效数据确定为目标数据。
在本申请的一种具体实施方式中,数据查找模块101,具体用于在预置虚拟数据中查找目标数据;
若未查找到目标数据,则在无效数据中查找目标数据。
在本申请的一种具体实施方式中,数据构建模块,用于若未找到目标虚拟数据,则在固态硬盘的内存中构建目标虚拟数据;
在利用纠错引擎对目标虚拟数据进行纠错处理之后,将目标虚拟数据写入目标开放块。
相应于上面的方法实施例,本申请实施例还提供了一种固态硬盘,下文描述的一种固态硬盘与上文描述的一种数据处理方法可相互对应参照。
该固态硬盘包括:
闪存(NAND Flash)阵列,用于存储数据,数据包括用户数据和系统数据,系统数据包括计算机程序对应数据;
固态硬盘主控,用于执行计算机程序时实现如上述实施例所描述的数据处理方法的步骤。
相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种数据处理方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的数据处理方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
确定闭合固态硬盘中目标开放块后,在所述目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据;
若找到所述目标虚拟数据,则将所述目标虚拟数据,通过闪存内迁移的方式,填充至所述目标开放块;
在所述目标开放块被填满后,确定所述目标开放块为目标闭合块。
2.根据权利要求1所述的数据处理方法,其特征在于,在所述目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据,包括:
在所述闪存分组内的预置虚拟数据和/或无效数据中,查找符合数据离散性要求的目标数据;
将所述目标数据确定为所述目标虚拟数据。
3.根据权利要求2所述的数据处理方法,其特征在于,在所述闪存分组内的预置虚拟数据中,查找符合数据离散性要求的目标数据,包括:
获取所述目标开放块中待填充的目标标识号;
在所述预置虚拟数据中,查找标识号与所述目标标识号一致的目标预置虚拟数据;其中,所述标识号为实现数据离散性要求的扰码因子,所述标识号为线号或页号;
将所述目标预置虚拟数据确定为所述目标数据。
4.根据权利要求2所述的数据处理方法,其特征在于,初始化所述固态硬盘,还包括:
确定所述固态硬盘的目标块为预置区域后,生成虚拟数据;
将所述虚拟数据写入至所述目标块的预置区域,以完成虚拟数据预置处理。
5.根据权利要求2所述的数据处理方法,其特征在于,在所述闪存分组内的无效数据中,查找符合数据离散性要求的目标数据,包括:
获取所述目标开放块中待填充的目标标识号;
在所述无效数据中,查找标识号与所述获取的目标标识号一致的目标无效数据;其中,所述标识号为线号或页号;
将所述无效数据确定为所述目标数据。
6.根据权利要求2所述的数据处理方法,其特征在于,在所述闪存分组内的预置虚拟数据和/或无效数据中,查找符合数据离散性要求的目标数据,包括:
在所述预置虚拟数据中查找所述目标数据;
若未查找到所述目标数据,则在所述无效数据中查找所述目标数据。
7.根据权利要求1至6任一项所述的数据处理方法,其特征在于,若未找到所述目标虚拟数据,包括:
在所述固态硬盘的内存中构建所述目标虚拟数据;
在利用纠错引擎对所述目标虚拟数据进行纠错处理之后,将所述目标虚拟数据写入所述目标开放块。
8.一种数据处理装置,其特征在于,包括:
数据查找模块,用于确定闭合固态硬盘中目标开放块后,在所述目标开放块所属的闪存分组中,查找符合数据离散性要求的目标虚拟数据;
数据迁移模块,用于若找到所述目标虚拟数据,则将所述目标虚拟数据,通过闪存内迁移的方式,迁移至所述目标开放块;
块闭合确定模块,用于在所述目标开放块被填满后,确定所述目标开放块为目标闭合块。
9.一种固态硬盘,其特征在于,包括:
闪存阵列,用于存储数据,所述数据包括用户数据和系统数据,所述系统数据包括计算机程序对应数据;
固态硬盘主控,用于执行所述计算机程序时实现如权利要求1至7任一项所述数据处理方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211572933.9A CN115857811A (zh) | 2022-12-08 | 2022-12-08 | 一种数据处理方法、装置、固态硬盘及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211572933.9A CN115857811A (zh) | 2022-12-08 | 2022-12-08 | 一种数据处理方法、装置、固态硬盘及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115857811A true CN115857811A (zh) | 2023-03-28 |
Family
ID=85671155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211572933.9A Pending CN115857811A (zh) | 2022-12-08 | 2022-12-08 | 一种数据处理方法、装置、固态硬盘及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115857811A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591036A (zh) * | 2024-01-18 | 2024-02-23 | 四川云海芯科微电子科技有限公司 | 基于固件与芯片微内核的占位数据补齐方法及系统 |
-
2022
- 2022-12-08 CN CN202211572933.9A patent/CN115857811A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117591036A (zh) * | 2024-01-18 | 2024-02-23 | 四川云海芯科微电子科技有限公司 | 基于固件与芯片微内核的占位数据补齐方法及系统 |
CN117591036B (zh) * | 2024-01-18 | 2024-03-19 | 四川云海芯科微电子科技有限公司 | 基于固件与芯片微内核的占位数据补齐方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148525B (zh) | 实现更快且经过调节的装置初始化时间 | |
CN112765006B (zh) | 固态硬盘日志生成方法及其固态硬盘 | |
US12001413B2 (en) | Key-value storage device and operating method thereof | |
KR101447786B1 (ko) | 파워 인터럽트 관리 | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
CN107908571B (zh) | 一种数据写入方法、闪存装置及存储设备 | |
KR101566849B1 (ko) | 메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기 | |
KR101561546B1 (ko) | 메모리 장치 관리 방법, 그 관련 메모리 장치 및 그 관련 제어기 | |
JP2001350665A (ja) | ブロックアラインメント機能付き半導体記憶装置 | |
WO1999030239A1 (fr) | Memoire et procede d'acces | |
CN110389712B (zh) | 数据写入方法及其装置、固态硬盘和计算机可读存储介质 | |
CN111857572B (zh) | Tlc固态硬盘的数据写入方法、装置、设备及存储介质 | |
KR20130010343A (ko) | 플래시 메모리 장치 | |
US7657697B2 (en) | Method of controlling a semiconductor memory device applied to a memory card | |
CN107943710B (zh) | 存储器管理方法及使用所述方法的存储控制器 | |
US20240311262A1 (en) | Method and apparatus for processing storage medium failure and solid state drive | |
CN110688256A (zh) | 一种元数据上电恢复方法、装置、电子设备及存储介质 | |
CN115857811A (zh) | 一种数据处理方法、装置、固态硬盘及可读存储介质 | |
CN113590505B (zh) | 地址映射方法、固态硬盘控制器及固态硬盘 | |
KR20220126024A (ko) | 호스트 장치 및 스토리지 장치 사이의 시간 동기화 방법 및 이를 수행하는 시스템 | |
CN114995770B (zh) | 一种数据处理方法、装置、设备、系统及可读存储介质 | |
CN112148203B (zh) | 存储器管理方法、装置、电子设备及存储介质 | |
CN111897489B (zh) | 数据写入方法、装置、设备及计算机可读存储介质 | |
US20200363981A1 (en) | Time indicator of super block operations | |
CN108062203B (zh) | 一种闪存数据管理方法、装置及存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |