700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 实现写入前擦除的方法 装置 计算机设备及存储介质与流程

实现写入前擦除的方法 装置 计算机设备及存储介质与流程

时间:2021-05-17 22:19:36

相关推荐

实现写入前擦除的方法 装置 计算机设备及存储介质与流程

本发明涉及固态硬盘,更具体地说是指实现写入前擦除的方法、装置、计算机设备及存储介质。

背景技术:

由于nandflash的固有特性,在写操作之前需要进行擦除,不能进行复写操作。而最新的sandisknandflash更是要求只有需要写时才能进行擦除操作,不允许nandflash的擦除单元长时间保持擦除状态,或者擦除单元中部分读写单元长期保持擦除状态,擦除单元长时间处于开放状态,现行的ssd实现策略都是在量产时进行全盘擦除,当ssd出厂后,到客户手中实际使用时,才进行写操作。这样势必造成ssd中的擦除单元长期处于擦除状态或者开放状态,严重影响ssd使用寿命。

现有写操作的方法为了保证多并行操作,利用多独立并行可操作单元的并行性能,使用每个独立并行可操作单元的写节点均匀分布的方法,这样做造成的影响是安全关机时每个独立并行可操作单元中被写擦除单元的写入点几乎相同,但是如果开放的擦除单元中写入点靠前,需要进行补仿造的数据,需要补仿造的页数量也很多,因为需要补仿造的页数量太多而不能在安全关机前完成补仿造的,而且会造成写放大增加。

现有smt方案没有考虑nandflash写前擦除的特性,在ft1中会进行全盘擦除操作,在bist过程结束前也会进行一次全盘擦除操作,这样导致nandflash从量产出厂开始到客户实际使用期间长期处于被擦除状态,这样会导致nandflash寿命缩减,ssd使用寿命减少。现行的闪存地址转换层并不记录写入点,由于在写操作时都是从最低位的读写单元开始按顺序进行,未写过的读写单元读出的状态一定是空闲,所以现行闪存地址转换层在初始化时会通过二分法寻找写入点,如图1所示,sandisk3dtlc一共有256个wordline,768个subpage读写单元,二分法查找写入点流程是l=0,m=wl_max/2=128,n=l+m=128,先读取wl128,如果是空闲,则l=n=128,m=m/2=64,n=l-m=64,读取wl64,否则n=l+m=192,读取wl192,以此类推,直至m=0,这时读取wl_n,如果是emptypage读写单元,写入点就是wl_n-1,否则写入点是wl_n。现行ftl并没有考虑sandisk3dtlc颗粒写前擦的特性,所以在ssd读写过程和安全关机过程中不会考虑开放擦除单元和已被擦除的擦除单元问题,这样会导致ssd使用寿命减小。

因此,有必要设计一种新的方法,实现保证ssd的擦除单元不会长时间保持擦除状态,避免造成写放大增加和nandflash寿命缩减以及ssd使用寿命减少的现象发生。

技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供实现写入前擦除的方法、装置、计算机设备及存储介质。

为实现上述目的,本发明采用以下技术方案:实现写入前擦除的方法,所述方法包括:

在smt时向nandflash中写入出厂坏块表和固件;

记录写入点以及相关信息;

根据记录的写入点以及相关信息进行数据的写前擦处理。

其进一步技术方案为:在smt时向nandflash中写入出厂坏块表和固件的步骤,包括以下具体步骤:

进行硬件自检,扫描出厂坏块,下载bist程序,并向擦除单元0\1写入模式;

进行硬件自检,进行全盘读写擦测试,并对测试结果进行统计;

进行硬件自检,检查全盘读写擦测试结果,并上传至主机,检查擦除单元0\1中的模式、擦除norflash中的bist程序,并向norflash写入bootloader,向nandflash写入固件。

其进一步技术方案为:记录写入点以及相关信息的步骤中,所述相关信息包括每个计划正在操作的擦除单元的标志以及最后一次操作的时间。

其进一步技术方案为:根据记录的写入点以及相关信息进行数据的写前擦处理的步骤,包括以下具体步骤:

根据记录的写入点以及相关信息判断擦除单元是否为刚结束擦除的单元;

若是,则使用快速填充命令对该单元进行随机数填充;

若否,则判断记录的写入点是否小于阈值;

若是,则将tlc区域中的数据搬移至slc区域内;

擦除tlc擦除单元;

使用快速填充命令进行随机数填充tlc擦除单元;

若否,则对开放状态的tlc擦除单元填充仿造的数据。

其进一步技术方案为:在安全关机时根据记录的写入点以及相关信息进行数据的写前擦处理的步骤之后,还包括:

在ssd使用过程中,记录每次写操作完成时的时间;

使用中断方式,每隔一段时间获取擦除单元保持开放或处于已擦除状态的时间;

判断获取的时间是否超过设定的阈值;

若否,则返回所述使用中断方式,每隔一段时间获取擦除单元保持开放或处于已擦除状态的时间的步骤;

若是,则返回根据记录的写入点以及相关信息进行数据的写前擦处理的步骤。

其进一步技术方案为:所述判断获取的时间是否超过设定的阈值的步骤中,所述阈值tth采用以下公式计算:其中,tref表示擦除单元保持开放或处于已擦除状态的时间参考阈值,twl表示考虑磨损均衡的参考时间阈值,max表示所有擦除单元中擦写次数最大值,min表示所有擦除单元中擦写次数最小值,kε是表示ssd系统响应能力的常数。

本发明还提供了实现写入前擦除的装置,包括写入单元、记录单元以及写前擦处理单元;

所述写入单元,用于在smt时向nandflash中写入出厂坏块表和固件;

所述记录单元,用于记录写入点以及相关信息;

所述写前擦处理单元,用于根据记录的写入点以及相关信息进行数据的写前擦处理。

其进一步技术方案为:所述写入单元包括模式写入模块、测试模块以及擦除处理模块;

所述模式写入模块,用于进行硬件自检,扫描出厂坏块,下载bist程序,并向擦除单元0\1写入模式;

所述测试模块,用于进行硬件自检,进行全盘读写擦测试,并对测试结果进行统计;

所述擦除处理模块,用于进行硬件自检,检查全盘读写擦测试结果,并上传至主机,检查擦除单元0\1中的模式、擦除norflash中的bist程序,并向norflash写入bootloader,向nandflash写入固件。

本发明还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的实现写入前擦除的方法。

本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述的实现写入前擦除的方法。

本发明与现有技术相比的有益效果是:本发明的实现写入前擦除的方法,通过在smt时向nandflash中写入出厂坏块表和固件,设置写入前擦除的前提要求,不进行全盘擦除操作;在写入数据时记录写入点,安全关机时根据写入点使用快速填充命令、数据搬移到slc区域和填充仿造的数据的写前操作,在ssd使用过程中,通过时间阈值判断执行写前擦操作,实现保证ssd的擦除单元不会长时间保持擦除状态,避免造成写放大增加和nandflash寿命缩减以及ssd使用寿命减少的现象发生。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

图1为现有技术的二分法查找写入点的示意流程图;

图2为本发明一具体实施例提供的实现写入前擦除的方法的示意流程图;

图3为图2具体实施例提供的在smt时向nandflash中写入出厂坏块表和固件的示意流程图;

图4为图2具体实施例提供的根据记录的写入点以及相关信息进行数据的写前擦处理的示意流程图;

图5为图2具体实施例提供的高速缓冲存储器的写操作和高速缓冲存储器的读操作的原理框图;

图6为本发明另一具体实施例提供的实现写入前擦除的方法的示意流程图;

图7为本发明一具体实施例提供的实现写入前擦除的装置的示意性框图;

图8为图7具体实施例提供的写入单元的示意性框图;

图9为图7具体实施例提供的写前擦处理单元的示意性框图;

图10为本发明另一具体实施例提供的实现写入前擦除的装置的示意性框图;

图11是本申请一实施例提供的一种计算机设备的示意性框图。

具体实施方式

为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如图2~11所示的具体实施例,本实施例提供的实现写入前擦除的方法、装置、计算机设备及存储介质,可以运用在ssd固态硬盘进行写操作之前、中途以及之后的处理过程中,实现保证ssd的擦除单元不会长时间保持擦除状态,避免造成写放大增加和nandflash寿命缩减以及ssd使用寿命减少的现象发生。

请参阅图2,图2是一具体实施例提供的实现写入前擦除的方法的示意流程图,如图2所示,实现写入前擦除的方法包括步骤s101至步骤s103:

s101、在smt时向nandflash中写入出厂坏块表和固件。

在本实施例中,smt流程主要包括ft1\bist\ft2三个阶段,每个环节完成的流程均不一致,但是在整个smt过程中只向nandflash中写入出厂坏块表和fw(固件)并保证擦除单元处于关闭状态,不做全盘擦除,保证没有擦除单元处于开放或已擦除的状态,满足写前擦要求,无论是开放还是已擦除的状态,都代表擦除单元已经做好写入准备了,导致nandflash寿命缩减,ssd使用寿命减少,而对smt的写入nandflash的内容进行限定,保证在smt过程中不会出现开放的擦除单元。

s102、记录写入点以及相关信息。

在本实施例中,上述的相关信息包括每个计划正在操作的擦除单元的标志以及最后一次操作的时间。

具体地,利用写入点来判断需要进行写入前擦除的方式。优化ftl算法,使用擦除单元状态表记录每个计划正在操作的擦除单元的标志,每个擦除单元的写入点以及最后一次操作的时间。

s103、根据记录的写入点以及相关信息进行数据的写前擦处理。

在本实施例中,当pc端安全关机时,刚擦除的擦除单元使用快速填充命令进行随机数填充;写入点小于阈值时,将tlc区域中的数据搬移到slc区域,擦除tlc擦除单元,再使用快速填充命令进行随机数填充;写入点大于阈值时,向开放状态的tlc擦除单元填充仿造的数据。

使用3dtlcnandflash作为存储介质的ssd中都会开辟部分tlc区域和slc区域,由于slc擦除单元的回收周期比较高,且开放擦除单元和保持已擦除状态对slc擦除单元的寿命影响可以忽略不计,就不考虑slc擦除单元的写前擦策略,另外,在进行tlc区域写前擦策略时也会利用slc擦除单元的特性,将部分数据暂时存入slc擦除单元,以实现写入前擦除的方案。

请参阅图3,图3是在smt时向nandflash中写入出厂坏块表和固件的示意流程图,如图3所示,s101、在smt时向nandflash中写入出厂坏块表和固件的步骤,包括步骤s1011至s1013:

s1011、进行硬件自检,扫描出厂坏块,下载bist程序,并向擦除单元0\1写入模式;

s1012、进行硬件自检,进行全盘读写擦测试,并对测试结果进行统计;

s1013、进行硬件自检,检查全盘读写擦测试结果,并上传至主机,检查擦除单元0\1中的模式、擦除norflash中的bist程序,并向norflash写入bootloader,向nandflash写入固件。

其中,ft1时进行硬件自检,扫描出厂坏块,下载bist程序,并向擦除单元0\1写入模式;bist时进行硬件自检,进行全盘读写擦测试,并对测试结果进行统计;ft2时进行硬件自检,检查全盘读写擦测试结果,并上传至主机,检查擦除单元0\1中的模式、擦除norflash中的bist程序,并向norflash写入bootloader,向nandflash写入固件。在整个smt过程中只向nandflash中写入出厂坏块表和fw(固件)并保证擦除单元关闭,不做全盘擦除,保证没有擦除单元处于开放或者已擦除状态,满足写前擦要求。

请参阅图4,图4是根据记录的写入点以及相关信息进行数据的写前擦处理的示意流程图,如图4所示,s103、根据记录的写入点以及相关信息进行数据的写前擦处理的步骤,包括步骤s1031至s1037:

s1031、根据记录的写入点以及相关信息判断擦除单元是否为刚结束擦除的单元;

s1032、若是,则使用快速填充命令对该单元进行随机数填充;

s1033、若否,则判断记录的写入点是否小于阈值;

s1034、若是,则将tlc区域中的数据搬移至slc区域内;

s1035、擦除tlc擦除单元;

s1036、使用快速填充命令进行随机数填充tlc擦除单元。

s1037、若否,则对开放状态的tlc擦除单元填充仿造的数据。

如果一个擦除单元长时间没有操作,在擦除单元剩余读写单元中填入仿造的数据,保证擦除单元处于关闭状态;为防止pc安全关机时造成ssd中大量擦除单元保持开放状态或已擦除状态,在关机时间间隔内向开放擦除单元写入仿造的数据。

在本实施例中,ftl在每次写操作完成时都会记录写入点wl_n,用于在安全关机时进行写前擦策略的选择,也就是上述的s102步骤至s103步骤;写前擦策略如下:

如果安全关机时擦除单元刚好擦除过,就使用快速填充数据的命令(06h-addr-30h)向擦除单元中填入随机数,由于快速填充时间在5ms左右,可以满足安全关机的时间要求;如果安全关机时擦除单元中填充了少量数据,写入点wl_n小于阈值wl_th,则将tlc擦除单元中的数据读出填入slc擦除单,既避免了填充的数据被擦除,又可以进行写入前擦除的方案,保证ssd的擦除单元不会长时间保持擦除状态,避免造成写放大增加;如果安全关机时擦除单元中填充了大量数据,写入点wl_n大于等于阈值wl_th,则直接向tlc擦除单元中的空闲的读写单元填入仿造的数据,保证ssd的擦除单元不会长时间保持擦除状态,避免造成写放大增加和nandflash寿命缩减以及ssd使用寿命减少的现象发生。

阈值wl_th用于判断是否向slc擦除单元迁移数据,在数据迁移过程中使用高速缓冲存储器的写操作和高速缓冲存储器的读操作代替正常的写操作和正常的读操作,提高数据迁移速度,高速缓冲存储器的写操作和高速缓冲存储器的读操作的原理如图5所示。sandisk3dtlc的tlc高速缓冲存储器的读操作时间ttlc_r为60us,tlc高速缓冲存储器的写操作时间ttlc_w为678us,slc高速缓冲存储器的写操作操作时间tslc_w为215us,当向slc擦除单元迁移数据的时间和填充tlc擦除单元剩余空闲的读写单元时间相等时就达到临界值,即wl_th*(ttlc_r+tslc_w)=(wl_max-wl_th)*ttlc_w;其中,wl_max为tlc擦除单元中最大的字行数,解该公式可得出阈值wl_th为182。

请参阅图6,图6是另一具体实施例提供的实现写入前擦除的方法的示意流程图,如图6所示,实现写入前擦除的方法包括s201至s206:

s201、在smt时向nandflash中写入出厂坏块表和固件;

s202、记录写入点以及相关信息;

s203、根据记录的写入点以及相关信息进行数据的写前擦处理;

s204、在ssd使用过程中,记录每次写操作完成时的时间;

s205、使用中断方式,每隔一段时间获取擦除单元保持开放或处于已擦除状态的时间;

s206、判断获取的时间是否超过设定的阈值;

若否,则返回s205步骤;

若是,则返回s203步骤。

在ssd正常使用过程中通过时间阈值来实现写前擦保护策略,在安全关机时使用三种写前擦保护策略,在ssd量产和正常使用中实现不出现uncloseblock擦除单元,保证nandflash颗粒寿命足够长,保证ssd使用寿命足够长。

具体地,对于上述的s201、s202、s203步骤,与s101步骤、s102步骤以及s103步骤一致,可以参考前述实施例s101步骤、s102步骤以及s103步骤中的对应过程,在此不再赘述。

对于上述的s203步骤至s205步骤而言,在ssd使用过程中也会存在擦除单元长时间保持开放或者已擦除状态的可能性,所以在每次写操作完成时都记录时间tw,使用中断的方式,每秒都检查擦除单元保持或者已擦除状态时间长度是否超过阈值tth,若超过了,则需要进行写前擦操作,如果阈值tth设定过小会导致频繁触发写前擦策略,无效页增多,nandflash磨损不均衡;若阈值tth设定过大会导致擦除单元长时间保持开放或者已擦除状态,则nandflash使用寿命简短。若当前的状态时安全关机状态,则只需要执行s201步骤至s203步骤,这与上述的实施例一致,若当前的状态是ssd使用过程,则需要执行s201步骤至s206步骤。

综合考虑了块磨损和擦除单元保持开放或已擦除状态时间,在本实施例中,上述的阈值tth采用以下公式计算:

其中,tref表示擦除单元保持开放或处于已擦除状态的时间参考阈值,twl表示考虑磨损均衡的参考时间阈值,max表示所有擦除单元中擦写次数最大值,min表示所有擦除单元中擦写次数最小值,kε是表示ssd系统响应能力的常数。

kε越小,系统平均响应时间越短,磨损越不均衡,当max和min相等时,磨损均衡,a为0,不需要考虑磨损均衡因素;否则同时考虑磨损均衡和写前擦策略,因此,在本实施例中,最优选地,a=0,既实现写前擦目标回收快效率,且保证块磨损均衡。

上述的实现写入前擦除的方法,通过在smt时向nandflash中写入出厂坏块表和固件,设置写入前擦除的前提要求,不进行全盘擦除操作;在写入数据时记录写入点,安全关机时根据写入点使用快速填充命令、数据搬移到slc区域和填充仿造的数据的写前操作,在ssd使用过程中,通过时间阈值判断执行写前擦操作,实现保证ssd的擦除单元不会长时间保持擦除状态,避免造成写放大增加和nandflash寿命缩减以及ssd使用寿命减少的现象发生。

请参阅图7,图7是一具体实施例提供的实现写入前擦除的装置的示意性框图,如图7所示,实现写入前擦除的装置,其包括写入单元101、记录单元102以及写前擦处理单元103。

写入单元101,用于在smt时向nandflash中写入出厂坏块表和固件。

记录单元102,用于记录写入点以及相关信息。

写前擦处理单元103,用于根据记录的写入点以及相关信息进行数据的写前擦处理。

请参阅图8,上述的写入单元101包括模式写入模块1011、测试模块1012以及擦除处理模块1013。

模式写入模块1011,用于进行硬件自检,扫描出厂坏块,下载bist程序,并向擦除单元0\1写入模式。

测试模块1012,用于进行硬件自检,进行全盘读写擦测试,并对测试结果进行统计。

擦除处理模块1013,用于进行硬件自检,检查全盘读写擦测试结果,并上传至主机,检查擦除单元0\1中的模式、擦除norflash中的bist程序,并向norflash写入bootloader,向nandflash写入固件。

请参阅图9,上述的写前擦处理单元103包括状态判断模块1031、快速填充模块1032、写入点判断模块1033、搬移模块1034、擦除模块1035、随机填充模块1036以及仿造填充模块1037。

状态判断模块1031,用于根据记录的写入点以及相关信息判断擦除单元是否为刚结束擦除的单元。

快速填充模块1032,用于若是,则使用快速填充命令对该单元进行随机数填充。

写入点判断模块1033,用于若否,则判断记录的写入点是否小于阈值。

搬移模块1034,用于若是,则将tlc区域中的数据搬移至slc区域内。

擦除模块1035,用于擦除tlc擦除单元。

随机填充模块1036,用于使用快速填充命令进行随机数填充tlc擦除单元。

仿造填充模块1037,用于若否,则对开放状态的tlc擦除单元填充仿造的数据。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的实现写入前擦除的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,请参阅图10,上述的实现写入前擦除的装置包括写入单元201、记录单元202、写前擦处理单元203、时间记录单元204、时间获取单元205以及时间阈值判断单元206。

写入单元201,用于在smt时向nandflash中写入出厂坏块表和固件。

记录单元202,用于记录写入点以及相关信息。

写前擦处理单元203,用于根据记录的写入点以及相关信息进行数据的写前擦处理。

时间记录单元204,在ssd使用过程中,记录每次写操作完成时的时间。

时间获取单元205,使用中断方式,每隔一段时间获取擦除单元保持开放或处于已擦除状态的时间。

时间阈值判断单元206,判断获取的时间是否超过设定的阈值。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的实现写入前擦除的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

上述实现写入前擦除的装置可以实现为一种计算机程序的形式,计算机程序可以在如图11所示的计算机设备上运行。

上述的实现写入前擦除的装置,通过在smt时向nandflash中写入出厂坏块表和固件,设置写入前擦除的前提要求,不进行全盘擦除操作;在写入数据时记录写入点,安全关机时根据写入点使用快速填充命令、数据搬移到slc区域和填充仿造的数据的写前操作,在ssd使用过程中,通过时间阈值判断执行写前擦操作,实现保证ssd的擦除单元不会长时间保持擦除状态,避免造成写放大增加和nandflash寿命缩减以及ssd使用寿命减少的现象发生。

请参阅图8,图8是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备700设备可以是终端或服务器。

参照图8,该计算机设备700包括通过系统总线710连接的处理器720、存储器和网络接口750,其中,存储器可以包括非易失性存储介质730和内存储器740。

该非易失性存储介质730可存储操作系统731和计算机程序732。该计算机程序732被执行时,可使得处理器720执行任意一种实现写入前擦除方法。

该处理器720用于提供计算和控制能力,支撑整个计算机设备700的运行。

该内存储器740为非易失性存储介质730中的计算机程序732的运行提供环境,该计算机程序732被处理器720执行时,可使得处理器720执行任意一种实现写入前擦除方法。

该网络接口750用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备700的限定,具体的计算机设备700可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。其中,所述处理器720用于运行存储在存储器中的程序代码,以实现以下步骤:

在smt时向nandflash中写入出厂坏块表和固件;

记录写入点以及相关信息;

根据记录的写入点以及相关信息进行数据的写前擦处理。

在一实施例中,所述在安全关机时根据记录的写入点以及相关信息进行数据的写前擦处理的步骤之后,还包括:在ssd使用过程中,记录每次写操作完成时的时间;使用中断方式,每隔一段时间获取擦除单元保持开放或处于已擦除状态的时间;判断获取的时间是否超过设定的阈值;若否,则返回所述使用中断方式,每隔一段时间获取擦除单元保持开放或处于已擦除状态的时间的步骤;以及若是,则返回根据记录的写入点以及相关信息进行数据的写前擦处理。

在一实施例中,所述判断获取的时间是否超过设定的阈值中,所述阈值tth采用以下公式计算:其中,tref表示擦除单元保持开放或处于已擦除状态的时间参考阈值,twl表示考虑磨损均衡的参考时间阈值,max表示所有擦除单元中擦写次数最大值,min表示所有擦除单元中擦写次数最小值,kε是表示ssd系统响应能力的常数。

在一实施例中,所述在smt时向nandflash中写入出厂坏块表和固件,包括进行硬件自检,扫描出厂坏块,下载bist程序,并向擦除单元0\1写入模式;进行硬件自检,进行全盘读写擦测试,并对测试结果进行统计;以及进行硬件自检,检查全盘读写擦测试结果,并上传至主机,检查擦除单元0\1中的模式、擦除norflash中的bist程序,并向norflash写入bootloader,向nandflash写入固件。

在一实施例中,所述根据记录的写入点以及相关信息进行数据的写前擦处理,包括:根据记录的写入点以及相关信息判断擦除单元是否为刚结束擦除的单元;若是,则使用快速填充命令对该单元进行随机数填充;若否,则判断记录的写入点是否小于阈值;若是,则将tlc区域中的数据搬移至slc区域内;擦除tlc擦除单元;使用快速填充命令进行随机数填充tlc擦除单元;以及若否,则对开放状态的tlc擦除单元填充仿造的数据。

在一实施例中,所述记录写入点以及相关信息中,所述相关信息包括每个计划正在操作的擦除单元的标志以及最后一次操作的时间。

应当理解,在本申请实施例中,处理器720可以是中央处理单元(centralprocessingunit,cpu),该处理器720还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域技术人员可以理解,图8中示出的计算机设备700结构并不构成对计算机设备700的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

上述的计算机设备,通过在smt时向nandflash中写入出厂坏块表和固件,设置写入前擦除的前提要求,不进行全盘擦除操作;在写入数据时记录写入点,安全关机时根据写入点使用快速填充命令、数据搬移到slc区域和填充仿造的数据的写前操作,在ssd使用过程中,通过时间阈值判断执行写前擦操作,实现保证ssd的擦除单元不会长时间保持擦除状态,避免造成写放大增加和nandflash寿命缩减以及ssd使用寿命减少的现象发生。

另外,还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行前述的实现写入前擦除的方法。

上述的存储介质,通过在smt时向nandflash中写入出厂坏块表和固件,设置写入前擦除的前提要求,不进行全盘擦除操作;在写入数据时记录写入点,安全关机时根据写入点使用快速填充命令、数据搬移到slc区域和填充仿造的数据的写前操作,在ssd使用过程中,通过时间阈值判断执行写前擦操作,实现保证ssd的擦除单元不会长时间保持擦除状态,避免造成写放大增加和nandflash寿命缩减以及ssd使用寿命减少的现象发生。

上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

技术特征:

1.实现写入前擦除的方法,其特征在于,所述方法包括:

在smt时向nandflash中写入出厂坏块表和固件;

记录写入点以及相关信息;

根据记录的写入点以及相关信息进行数据的写前擦处理。

2.根据权利要求1所述的实现写入前擦除的方法,其特征在于,在smt时向nandflash中写入出厂坏块表和固件的步骤,包括以下具体步骤:

进行硬件自检,扫描出厂坏块,下载bist程序,并向擦除单元0\1写入模式;

进行硬件自检,进行全盘读写擦测试,并对测试结果进行统计;

进行硬件自检,检查全盘读写擦测试结果,并上传至主机,检查擦除单元0\1中的模式、擦除norflash中的bist程序,并向norflash写入bootloader,向nandflash写入固件。

3.根据权利要求所1述的实现写入前擦除的方法,其特征在于,记录写入点以及相关信息的步骤中,所述相关信息包括每个计划正在操作的擦除单元的标志以及最后一次操作的时间。

4.根据权利要求1至3任一项所述的实现写入前擦除的方法,其特征在于,根据记录的写入点以及相关信息进行数据的写前擦处理的步骤,包括以下具体步骤:

根据记录的写入点以及相关信息判断擦除单元是否为刚结束擦除的单元;

若是,则使用快速填充命令对该单元进行随机数填充;

若否,则判断记录的写入点是否小于阈值;

若是,则将tlc区域中的数据搬移至slc区域内;

擦除tlc擦除单元;

使用快速填充命令进行随机数填充tlc擦除单元;

若否,则对开放状态的tlc擦除单元填充仿造的数据。

5.根据权利要求1所述的实现写入前擦除的方法,其特征在于,在安全关机时根据记录的写入点以及相关信息进行数据的写前擦处理的步骤之后,还包括:

在ssd使用过程中,记录每次写操作完成时的时间;

使用中断方式,每隔一段时间获取擦除单元保持开放或处于已擦除状态的时间;

判断获取的时间是否超过设定的阈值;

若否,则返回所述使用中断方式,每隔一段时间获取擦除单元保持开放或处于已擦除状态的时间的步骤;

若是,则返回根据记录的写入点以及相关信息进行数据的写前擦处理的步骤。

6.根据权利要求5所述的实现写入前擦除的方法,其特征在于,所述判断获取的时间是否超过设定的阈值的步骤中,所述阈值tth采用以下公式计算:其中,tref表示擦除单元保持开放或处于已擦除状态的时间参考阈值,twl表示考虑磨损均衡的参考时间阈值,max表示所有擦除单元中擦写次数最大值,min表示所有擦除单元中擦写次数最小值,kε是表示ssd系统响应能力的常数。

7.实现写入前擦除的装置,其特征在于,包括写入单元、记录单元以及写前擦处理单元;

所述写入单元,用于在smt时向nandflash中写入出厂坏块表和固件;

所述记录单元,用于记录写入点以及相关信息;

所述写前擦处理单元,用于根据记录的写入点以及相关信息进行数据的写前擦处理。

8.根据权利要求7所述的实现写入前擦除的装置,其特征在于,所述写入单元包括模式写入模块、测试模块以及擦除处理模块;

所述模式写入模块,用于进行硬件自检,扫描出厂坏块,下载bist程序,并向擦除单元0\1写入模式;

所述测试模块,用于进行硬件自检,进行全盘读写擦测试,并对测试结果进行统计;

所述擦除处理模块,用于进行硬件自检,检查全盘读写擦测试结果,并上传至主机,检查擦除单元0\1中的模式、擦除norflash中的bist程序,并向norflash写入bootloader,向nandflash写入固件。

9.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6中任意一项所述的实现写入前擦除的方法。

10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1至6任意一项所述的实现写入前擦除的方法。

技术总结

本发明涉及实现写入前擦除的方法、装置、计算机设备及存储介质,该方法包括在SMT时向NAND Flash中写入出厂坏块表和固件;记录写入点以及相关信息;根据记录的写入点以及相关信息进行数据的写前擦处理。本发明通过在SMT时向NAND Flash中写入出厂坏块表和固件,设置写入前擦除的前提要求,不进行全盘擦除操作;在写入数据时记录写入点,关机时根据写入点使用快速填充命令、数据搬移到SLC区域和填充仿造的数据的写前操作,在SSD使用过程中,通过时间阈值判断执行写前擦操作,实现保证SSD的擦除单元不会长时间保持擦除状态,避免造成写放大增加和NAND flash寿命缩减以及SSD使用寿命减少的现象发生。

技术研发人员:肖锐;方浩俊

受保护的技术使用者:深圳忆联信息系统有限公司

技术研发日:.05.24

技术公布日:.12.03

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。