闪存存储器的数据重写方法、系统、终端设备及存储介质
文献发布时间:2023-06-19 10:19:37
技术领域
本发明涉及数据存储技术领域,尤其涉及一种闪存存储器的数据重写方法、系统、终端设备及计算机存储介质。
背景技术
时下,使用eMMC(Embedded Multi Media Card,针对手机或平板电脑等产品的内嵌式存储器标准规格)的移动设备,如手机或者平板电脑,通常会由内置Flash(闪存)存储器的设计工作人员针对该Flash存储器的“read disturb(读干扰)”特性进行通用处理,即,对Flash存储器的物理性能进行评估从而为其设定一个进行数据读取会读干扰触发数据重写的次数阈值,如此,只要在检测到Flash存储器针对某一个固定的block(物理块)进行数据读取的次数到了该次数阈值即对该物理块中各physical page(物理页)上编写存储的数据进行搬移重写(将数据搬运到其它物理块并编写在该其它物理块的各物理页上进行存储),以此来防止因为Flash存储器读干扰导致的该物理块上存储的数据不稳定的问题。
然而,由于Flash存储器的类型不同、该Flash存储器使用的温度环境不同,或者该Flash存储器物理块编写数据进行存储的方式不同,都会导致读干扰触发数据重写的数据读取次数相应变化。因此,难以为Flash存储器设定一个适宜的次数阈值,即达到保证数据稳定性的效果又能够避免Flash存储器因为次数阈值设定的太小而频繁令读干扰触发数据重写而需要针对数据进行搬移重写,降低使用寿命。
发明内容
本发明的主要目的在于提供一种闪存存储器的数据重写方法、系统、终端设备及计算机存储介质,旨在解决现有技术难以为Flash存储器设定适宜的次数阈值,来保证数据稳定性和避免Flash存储器因为次数阈值设定的太小而频繁令读干扰触发数据重写降低使用寿命的技术问题。
为实现上述目的,本发明提供一种闪存存储器的数据重写方法,所述闪存存储器的数据重写方法包括:
监测针对闪存存储器的物理块进行数据读取的数据读取次数;
若检测到所述数据读取次数大于或者等于预设的次数阈值,则确定所述物理块的数据出错状态;
根据所述数据出错状态控制所述闪存存储器的读干扰触发数据重写。
进一步地,,所述数据出错状态包括:稳定和已受干扰,所述确定所述物理块的数据出错状态的步骤,包括:
针对所述物理块中的各物理页进行数据读取检查得到各所述物理页的数据出错检查结果;
根据各所述数据出错检查结果确定所述物理块的数据出错状态为稳定或者为已受干扰。
进一步地,各所述物理页的数据出错检测结果为各所述物理页的数据出错量,
所述根据各所述数据出错检查结果确定所述物理块的数据出错状态为稳定或者为已受干扰的步骤,包括:
若各所述物理页的所述数据出错量均小于预设出错量阈值,则确定所述物理块的所述数据出错状态为稳定;或者,
若各所述物理页的所述数据出错量中,任一数据出错量大于或者等于所述预设出错量阈值,则确定所述物理块的所述数据出错状态为已受干扰。
进一步地,所述根据所述数据出错状态控制所述闪存存储器的读干扰触发数据重写的步骤,包括:
若所述物理块的所述数据出错状态为已受干扰,则控制所述闪存存储器的读干扰触发数据重写,以供所述闪存存储器将所述物理块中存写的数据搬移至其它物理块进行存写。
进一步地,所述闪存存储器的数据重写方法,还包括:
根据所述数据出错状态监测针对所述物理块进行数据读取的新的数据读取次数,并根据所述新的数据读取次数判断是否控制所述读干扰触发数据重写。
进一步地,所述根据所述数据出错状态监测针对所述物理块进行数据读取的新的数据读取次数的步骤,包括:
若所述物理块的所述数据出错状态为稳定,则将所述数据读取次数清零以重新监测得到针对所述物理块进行数据读取的新的数据读取次数。
进一步地,所述根据所述新的数据读取次数判断是否控制所述读干扰触发数据重写的步骤,包括:
检测所述新的数据读取次数是否大于或者等于预设的新的次数阈值;
若检测到所述新的数据读取次数小于所述新的次数阈值,则不控制所述读干扰触发数据重写;
若检测到所述新的数据读取次数大于或者等于所述新的次数阈值,则控制所述读干扰触发数据重写;或者,
若检测到所述新的数据读取次数大于或者等于所述新的次数阈值,则再次确定所述物理块的数据出错状态,并根据所述数据出错状态控制所述读干扰触发数据重写。
此外,为实现上述目的,本发明还提供一种闪存存储器的数据重写系统,所述闪存存储器的数据重写系统包括:
监测模块,用于监测针对闪存存储器的物理块进行数据读取的数据读取次数;
确定模块,用于若检测到所述数据读取次数大于或者等于预设的次数阈值,则确定所述物理块的数据出错状态;
重写模块,用于根据所述数据出错状态控制所述闪存存储器的读干扰触发数据重写。
本发明闪存存储器的数据重写系统的各功能模块在运行时实现如上述的闪存存储器的数据重写方法的步骤。
此外,为实现上述目的,本发明还提供一种终端设备,所述终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的闪存存储器的数据重写程序,所述闪存存储器的数据重写程序被所述处理器执行时实现如上述中的闪存存储器的数据重写方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的闪存存储器的数据重写方法的步骤。
本发明提出的闪存存储器的数据重写方法、系统、终端设备以及计算机存储介质,通过监测针对闪存存储器的物理块进行数据读取的数据读取次数;若检测到所述数据读取次数大于或者等于预设的次数阈值,则确定所述物理块的数据出错状态;根据所述数据出错状态控制所述闪存存储器的读干扰触发数据重写。
本发明通过在使用eMMC的移动设备使用内置的闪存存储器(即Flash存储器,为便于表述和理解,后文中均使用该Flash存储器统一代替闪存存储器进行方案阐述)进行数据存储和读取的整个生命周期中,持续不断地监测针对Flash存储器的物理块进行数据读取的数据读取次数,若一旦检测到某一物理块的该数据读取次数大于或者等于预先评估所设定的次数阈值,则首先确定该物理块的数据出错状态,从而根据该数据出错状态来分析控制该Flash存储器的读干扰触发数据重写。
本发明相比于现有技术仅设置一个次数阈值,只要数据读取的次数达到该阈值就触发数据重写的方式,本发明通过在检测到针对物理块进行数据读取的数据读取次数进行监测,在检测到该数据读取次数超过预设的次数阈值时,先确定该物理块的数据出错状态,从而根据该数据出错状态触发数据重写。如此,能够有效的避免Flash存储器即使在物理块中各物理页上存储的数据未被干扰的情况下,因为物理块的数据读取次数达到了阈值而频繁的触发数据重写,造成Flash存储器的不必要磨损,从而,既保证了物理块中各物理页上存储的数据的稳定性,还在极大程度上延长了Flash存储器的使用寿命。
附图说明
图1是本发明实施例方案涉及终端设备的硬件运行的结构示意图;
图2是本发明一种闪存存储器的数据重写方法一实施例的流程示意图;
图3是本发明一种闪存存储器的数据重写系统的模块结构示意图。
本发明目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及终端设备的硬件运行环境的结构示意图。
需要说明的是,图1即可为终端设备的硬件运行环境的结构示意图。本发明实施例终端设备可以是使用eMMC的移动设备,数据存储控制终端,PC,便携计算机等终端设备。
如图1所示,该终端设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是非易失性存储器(如,Flash存储器)、高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及分布式任务的处理程序。其中,操作系统是管理和控制样本终端设备硬件和软件资源的程序,支持分布式任务的处理程序以及其它软件或程序的运行。
在图1所示的终端设备中,用户接口1003主要用于与各个终端进行数据通信;网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;而处理器1001可以用于调用存储器1005中存储的闪存存储器的数据重写程序,并执行以下操作:
监测针对闪存存储器的物理块进行数据读取的数据读取次数;
若检测到所述数据读取次数大于或者等于预设的次数阈值,则确定所述物理块的数据出错状态;
根据所述数据出错状态控制所述闪存存储器的读干扰触发数据重写。
进一步地,所述数据出错状态包括:稳定和已受干扰,处理器1001可以调用存储器1005中存储的闪存存储器的数据重写程序,还执行以下操作:
针对所述物理块中的各物理页进行数据读取检查得到各所述物理页的数据出错检查结果;
根据各所述数据出错检查结果确定所述物理块的数据出错状态为稳定或者为已受干扰。
进一步地,各所述物理页的数据出错检测结果为各所述物理页的数据出错量,处理器1001可以调用存储器1005中存储的闪存存储器的数据重写程序,在执行根据所述温度参数适配所述数据的数据读取配置的步骤之前,还执行以下操作:
若各所述物理页的所述数据出错量均小于预设出错量阈值,则确定所述物理块的所述数据出错状态为稳定;或者,
若各所述物理页的所述数据出错量中,任一数据出错量大于或者等于所述预设出错量阈值,则确定所述物理块的所述数据出错状态为已受干扰。
进一步地,处理器1001可以调用存储器1005中存储的闪存存储器的数据重写程序,还执行以下操作:
若所述物理块的所述数据出错状态为已受干扰,则控制所述闪存存储器的读干扰触发数据重写,以供所述闪存存储器将所述物理块中存写的数据搬移至其它物理块进行存写。
进一步地,处理器1001可以调用存储器1005中存储的闪存存储器的数据重写程序,还执行以下操作:
根据所述数据出错状态监测针对所述物理块进行数据读取的新的数据读取次数,并根据所述新的数据读取次数判断是否控制所述读干扰触发数据重写。
进一步地,处理器1001可以调用存储器1005中存储的闪存存储器的数据重写程序,还执行以下操作:
若所述物理块的所述数据出错状态为稳定,则将所述数据读取次数清零以重新监测得到针对所述物理块进行数据读取的新的数据读取次数。
进一步地,所述数据出错的原因至少包括:数据读取配置错误,处理器1001可以调用存储器1005中存储的闪存存储器的数据重写程序,还执行以下操作:
检测所述新的数据读取次数是否大于或者等于预设的新的次数阈值;
若检测到所述新的数据读取次数小于所述新的次数阈值,则不控制所述读干扰触发数据重写;
若检测到所述新的数据读取次数大于或者等于所述新的次数阈值,则控制所述读干扰触发数据重写;或者,
若检测到所述新的数据读取次数大于或者等于所述新的次数阈值,则再次确定所述物理块的数据出错状态,并根据所述数据出错状态控制所述读干扰触发数据重写。
基于上述的结构,提出本发明闪存存储器的数据重写方法的各个实施例。
请参照图2,图2为本发明闪存存储器的数据重写方法第一实施例的流程示意图。
本发明实施例提供了闪存存储器的数据重写方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例闪存存储器的数据重写方法应用于上述对数据存储进行控制的终端设备中,与该终端设备进行通信连接的固态存储设备,本发明实施例终端设备可以是数据存储介质本身,数据存储控制终端,PC,便携计算机等终端设备,在此不做具体限制。
本实施例闪存存储器的数据重写方法包括:
步骤S100,监测针对闪存存储器的物理块进行数据读取的数据读取次数;
使用eMMC的移动设备在控制内置的Flash存储器读取已经编写存储的数据的过程中,持续不断的监控统计Flash存储器针对该Flash存储器中的物理块进行数据读取的数据读取次数。
需要说明的是,在本实施例中,Flash存储器内置于使用eMMC的移动设备当中,并通过主控与该移动设备进行通信连接,应当理解的是,基于实际应用的不同设计需要,在其他可行的实施方式当中,该Flash存储器和使用eMMC的移动设备之间也可以是其他不同于本实施例所列举的设置关系,例如,Flash存储器通过外接的形式与该移动设备相互通信连接,并且,本实施例中使用eMMC的移动设备也可以为其他类型的终端设备,例如,PC(个人计算机)等终端,本发明闪存存储器的数据重写方法,并不针对该Flash存储器与终端设备之间的设置以及该终端设备的类型等进行具体地限定。
此外,在本实施例中,Flash存储器读取的已经编写存储的数据,具体可以为该Flash存储器编写在该Flash存储器内任意一个片区中任意一个物理块的任意一个物理页上进行存储的数据。
具体地,例如,本实施例中使用eMMC的移动设备具体可以为一个手机终端,从而,该手机终端通过向内置的Flash存储器的主控下发数据读取指令,从而令该主控控制该Flash存储器执行该数据读取指令以从内部某一个片区多个物理块中的物理块a的某一个物理页上,读取该数据读取指令所指向的数据,然后,该手机终端持续的记录Flash存储器从该物理块a中读取数据的数据读取次数d。
进一步地,在一种可行的实施例中,在上述步骤S100之前,本发明闪存存储器的数据重写方法,还可以包括:
步骤S400,检测所述闪存存储器是否读取所述数据;
使用eMMC的移动设备检测是否传递有控制Flash存储器读取或者使用数据的数据读取指令,若检测到传递了该数据读取指令,则确定该Flash存储器当前需要读取该数据读取指令中指向的数据,反之,若未检测到传递该数据读取指令,则可以确定该Flash存储器当前无需读取数据。
需要说明的是,在本实施例中,数据读取指令可以为使用eMMC的移动设备基于用户操作触发并传递至Flash存储器的主控,或者该数据读取指令也可以为该移动设备基于正在运行的应用程序而自动触发后传递至该Flash存储器的主控,并且,该数据读取指令中携带有待读取或者使用的数据标识,从而Flash存储器可以在接收到该数据读取指令之后,根据该数据标识确定当前需要读取或者使用的数据。应当理解的是,基于实际应用的不同设计需要,在其它可行的实时方式当中,该数据读取指令当然也可以采用其它不同于本实施例所列举的方式进行触发,并且该数据读取指令当中的数据标识也可以是任意类型能够起到标识作用的信息,本发明闪存存储器的数据重写方法并不针对该数据读取指令进行具体地限定。
步骤S200,若检测到所述数据读取次数大于或者等于预设的次数阈值,则确定所述物理块的数据出错状态;
需要说明的是,在本实施例中,预设的次数阈值具体可以为Flash存储器的设计开发人员预先针对该Flash存储器的读干扰特性评估所得到的需要针对物理页上存储的数据进行搬运以防止该数据丢失的一个数据读取次数,例如,某一个Flash存储器的设计开发人员在该Flash存储器流向市场之前,针对该Flash存储器的读干扰进行评估,从而设定10万次的数据读取次数作为该Flash存储器的次数阈值,从而,在检测统计到该Flash存储器针对某一个物理块先后进行数据读取的次数等于或者大于10万次之后,Flash存储器就需要将该物理块中各物理页上存储的数据进行搬运以转移到其它物理块的各物理页上重新进行编写存储。应当理解的是,基于实际应用的不同设计需要,不同的Flash存储器可以被评估和设定不同的次数阈值,本发明闪存存储器的数据重写方法,并不针对该次数阈值的评估设定过程以及数值等进行具体地限定。
使用eMMC的移动设备在持续监控统计Flash存储器针对该Flash存储器中的物理块进行数据读取的数据读取次数的过程中,将每一次统计得到的物理块的数据读取次数与预先设定好的次数阈值进行对比,若对比检测到该物理块的数据读取次数大于或者等于该次数阈值时,先确定出该物理块的数据出错状态。
具体地,例如,在本实施例中,使用eMMC的移动设备—手机终端,在持续监控Flash存储器从该物理块a中读取数据的过程中,将每一次记录得到的该Flash存储器从该物理块a中读取数据的数据读取次数d,与预先设定的该Flash存储器的次数阈值—10万次进行对比,若手机终端对比检测到该数据读取次数d正好等于次数阈值—10万次,则手机终端先开始确定该物理块a整体的数据出错状态。
进一步地,在另一种可行的实施例中,使用eMMC的移动设备—手机终端,在持续监控Flash存储器从该物理块a中读取数据的过程中,还可以周期性的每间隔预设时长(例如,每间隔10分钟)后,将记录的该Flash存储器从该物理块a中读取数据的数据读取次数d,与预先设定的该Flash存储器的次数阈值—10万次进行对比。应当理解的是,基于实际应用的不同设计需要,在不同的实施方式当中,该预设时长当然可以被设置为不同的时长,本发明闪存存储器的数据重写方法并不针对该预设时长的具体数值进行限定。
进一步地,使用eMMC的移动设备所确定得到的物理块整体的数据出错状态可以包括但不限于:稳定和已受干扰。在一种可行的实施例中,上述步骤S200中,“确定所述物理块的数据出错状态”的步骤,可以包括:
步骤S201,针对所述物理块中的各物理页进行数据读取检查得到各所述物理页的数据出错检查结果;
使用eMMC的移动设备在检测到物理块的数据读取次数大于或者等于次数阈值之后,随即针对该物理块中的每一个物理页进行数据读取检查,从而得到该每一个物理页各自的数据出错检查结果。
需要说明的是,在本实施例中,使用eMMC的移动设备可以采用现有成熟的任意数据读取检查(又称read check)技术针对物理块中每一个物理页上存储的数据进行数据读取检查得到该每一个物理页的数据出错检查结果,应当理解的是,基于实际应用的不同设计需要,在不同的实施方式当中,移动设备当然可以采用任意不同的数据读取检查方式,来检查得到该物理块中各物理页的数据错处检查结果,本发明闪存存储器的数据重写方法,并不针对该数据读取检查的方式进行具体地限定。
步骤S202,根据各所述数据出错检查结果确定所述物理块的数据出错状态为稳定或者为已受干扰。
使用eMMC的移动设备在执行数据读取检查流程确定物理块中每一个物理页各自的数据出错检查结果之后,若该各个数据出错检查结果中的某一个数据出错检查结果标识对应物理页上存储的数据已受到读干扰,则确定该物理块整体的数据出错状态为已受干扰,反之,若该各个数据出错检查结果中的不存在标识对应物理页上存储的数据已受到读干扰的数据出错检查结果,则确定该物理块整体的数据出错状态仍然为稳定。
进一步地,在一种可行的实施例中,使用eMMC的移动设备采用现有成熟的readcheck技术针对物理块中每一个物理页上存储的数据进行数据读取检查得到该每一个物理页的数据出错检查结果具体可以为:每一个物理页上存储的数据的数据出错量。上述步骤S202,可以包括:
步骤S2021,若各所述物理页的所述数据出错量均小于预设出错量阈值,则确定所述物理块的所述数据出错状态为稳定;
需要说明的是,在本实施例中,使用eMMC的移动设备在检测到物理块的数据读取次数大于或者等于次数阈值之后,执行数据读取检查流程针对该物理块中的每一个物理页进行数据读取检查,从而得到的该每一个物理页各自的数据出错检查结果即为该每一个物理页上各自存储的数据的数据出错(ECC,Error Correcting Code,错误检查和纠正)量(通常以比特位数为单位进行表示)。此外,预设出错量阈值具体可以为该Flash存储器的设计开发人员预先基于Flash存储器自身的物理特性所评估设定、用于确认该Flash存储器物理页上所存储数据是否能够基于数据纠错策略而被准确纠正的最大数据出错量,例如,该最大数据出错量为30比特。应当理解的是,基于实际应用的不同设计需要,不同Flash存储器各自的物理特性不同、且不同的数据纠错策略针对Flash存储器也具备不同的数据纠错性能,因为,在其他可行的实施方式当中,该预设出错量阈值当然也可以设定为其他大小的数值,本发明闪存存储器的数据重写方法,并不针对该预设出错量阈值的数值大小进行具体地限定。
使用eMMC的移动设备在检测到物理块中每一个物理页各自所存储数据的数据出错量之后,逐一检测该多个数据出错量与预设出错量阈值之间的大小,从而,若检测到该多个数据出错量均小于该预设出错量阈值,则确定该物理块整体的数据出错状态仍然为稳定。
具体地,例如,使用eMMC的移动设备—手机终端在对比检测到针对物理块a进行数据读取的数据读取次数d正好等于次数阈值—10万次之后,手机终端先开始针对该物理块a中每一个物理页上存储的数据执行read check流程从而分别确定出该物理块a中每一个物理页各自存储的数据的数据出错量大小,然后,手机终端逐一的检测该每一个物理页的数据出错量是否大于预先设定的最大数据出错量—30比特,从而,在检测到该多个物理页的数据出错量均小于最大数据出错量—30比特的情况下,手机终端随即确定该物理块a整体的数据出错状态为稳定。
步骤S2022,若各所述物理页的所述数据出错量中,任一数据出错量大于或者等于所述预设出错量阈值,则确定所述物理块的所述数据出错状态为已受干扰。
使用eMMC的移动设备在逐一检测多个数据出错量与预设出错量阈值之间大小的过程中,若检测到该多个数据出错量中存在任意一个小于该预设出错量阈值的数据出错量,则确定该物理块整体的数据出错状态为已受干扰。
具体地,例如,使用eMMC的移动设备—手机终端在针对物理块a中每一个物理页各自存储的数据的数据出错量,逐一的检测该每一个物理页的数据出错量是否大于预先设定的最大数据出错量—30比特时,若手机终端检测到该多个物理页的数据出错量中,某一个数据出错量大于或者等于最大数据出错量—30比特,则手机终端随即确定该物理块a整体的数据出错状态为已受干扰。
步骤S300,根据所述数据出错状态控制所述闪存存储器的读干扰触发数据重写。
需要说明的是,在本实施例中,使用eMMC的移动设备仅在确定的物理块的数据出错状态为已受干扰的情况下,才控制Flash存储器的读干扰机制触发数据重写。
进一步地,在一种可行的实施例中,上述步骤S300,可以包括:
步骤S301,若所述物理块的所述数据出错状态为已受干扰,则控制所述闪存存储器的读干扰触发数据重写,以供所述闪存存储器将所述物理块中存写的数据搬移至其它物理块进行存写。
使用eMMC的移动设备在确定得出数据读取次数大于或者等于该次数阈值的物理块的数据出错状态之后,若该物理块的数据出错状态为已受干扰,则移动设备即开始控制Flash存储器的读干扰机制触发数据重写,从而,Flash存储器则将该物理块存储的数据搬运转移至其他物理块重新进行编写存储,从而完成该物理块上存储的数据的数据重写。
具体地,例如,使用eMMC的移动设备—手机终端在确定得到物理块a整体的数据出错状态为已受干扰时,手机终端随即控制Flash存储器的主控启动读干扰机制以触发针对物理块a的数据重写策略,从而,该Flash存储器的主控随即将该物理块a中每一个物理页上存储的数据搬运转移的到其他物理块(物理块b和/或者物理块c)的各物理页上重新进行编写存储,直至该物理块a中全部物理页上存储的数据全部被搬运转移到其他物理块中,如此,即完成针对物理块a的数据重写。
在本实施例中,通过使用eMMC的移动设备在控制内置的Flash存储器读取已经编写存储的数据的过程中,持续不断的监控统计Flash存储器针对该Flash存储器中的物理块进行数据读取的数据读取次数;使用eMMC的移动设备在持续监控统计Flash存储器针对该Flash存储器中的物理块进行数据读取的数据读取次数的过程中,将每一次统计得到的物理块的数据读取次数与预先设定好的次数阈值进行对比,若对比检测到该物理块的数据读取次数大于或者等于该次数阈值时,先确定出该物理块的数据出错状态;使用eMMC的移动设备在确定得出数据读取次数大于或者等于该次数阈值的物理块的数据出错状态之后,若该物理块的数据出错状态为已受干扰,则移动设备即开始控制Flash存储器的读干扰机制触发数据重写,从而,Flash存储器则将该物理块存储的数据搬运转移至其他物理块重新进行编写存储,从而完成该物理块上存储的数据的数据重写。
本发明通过在使用eMMC的移动设备使用内置的闪存存储器(即Flash存储器,为便于表述和理解,后文中均使用该Flash存储器统一代替闪存存储器进行方案阐述)进行数据存储和读取的整个生命周期中,持续不断地监测针对Flash存储器的物理块进行数据读取的数据读取次数,若一旦检测到某一物理块的该数据读取次数大于或者等于预先评估所设定的次数阈值,则首先确定该物理块的数据出错状态,从而根据该数据出错状态来分析控制该Flash存储器的读干扰触发数据重写。
本发明相比于现有技术仅设置一个次数阈值,只要数据读取的次数达到该阈值就触发数据重写的方式,本发明通过在检测到针对物理块进行数据读取的数据读取次数进行监测,在检测到该数据读取次数超过预设的次数阈值时,先确定该物理块的数据出错状态,从而根据该数据出错状态触发数据重写。如此,能够有效的避免Flash存储器即使在物理块中各物理页上存储的数据未被干扰的情况下,因为物理块的数据读取次数达到了阈值而频繁的触发数据重写,造成Flash存储器的不必要磨损,从而,既保证了物理块中各物理页上存储的数据的稳定性,还在极大程度上延长了Flash存储器的使用寿命。
进一步地,基于上述本发明闪存存储器的数据重写方法的第一实施例,提出本发明闪存存储器的数据重写方法的第二实施例,在本发明闪存存储器的数据重写方法的第二实施例中,本发明闪存存储器的数据重写方法,还可以包括:
步骤S500,根据所述数据出错状态监测针对所述物理块进行数据读取的新的数据读取次数,并根据所述新的数据读取次数判断是否控制所述读干扰触发数据重写。
需要说明的是,在本实施例中,使用eMMC的移动设备在确定的物理块的数据出错状态为稳定的情况下,将重新赋予该物理块一个新的数据读取次数,从而基于该新的数据读取次数重复执行上述实施例中针对物理块进行数据重写的过程。
进一步地,在一种可行的实施例中,上述步骤S500中,“根据所述数据出错状态监测针对所述物理块进行数据读取的新的数据读取次数”可以包括:
步骤S501,若所述物理块的所述数据出错状态为稳定,则将所述数据读取次数清零以重新监测得到针对所述物理块进行数据读取的新的数据读取次数。
使用eMMC的移动设备在确定得出数据读取次数大于或者等于该次数阈值的物理块的数据出错状态之后,若该物理块的数据出错状态为稳定,则移动设备将已经记录的该物理块的数据读取次数清零,并重新开始监控统计Flash存储器针对该Flash存储器中的物理块进行数据读取的新的数据读取次数。
具体地,例如,使用eMMC的移动设备—手机终端在确定得到物理块a整体的数据出错状态为稳定时,手机终端随即控制Flash存储器的主控将当前记录的、Flash存储器从该物理块a中读取数据的数据读取次数d清零,并重新在手机终端通过向内置的Flash存储器的主控下发数据读取指令,以令该主控控制该Flash存储器执行该数据读取指令从物理块a的某一个物理页上读取数据时,持续的记录Flash存储器从该物理块a中读取数据的数据读取次数d`。
进一步地,在一种可行的实施例中,上述步骤S500中,“根据所述新的数据读取次数判断是否控制所述读干扰触发数据重写”的步骤,可以包括:
步骤S502,检测所述新的数据读取次数是否大于或者等于预设的新的次数阈值;
使用eMMC的移动设备在持续监控统计Flash存储器针对该Flash存储器中的物理块进行数据读取的新的数据读取次数的过程中,将每一次统计得到的物理块的新的数据读取次数与预先设定好的新的次数阈值进行对比,以检测该新的数据读取次数是否大于或者等于该新的次数阈值。
需要说明的是,在本实施例中,新的次数阈值可以与Flash存储器的设计开发人员,在该Flash存储器流向市场之前,针对该Flash存储器的读干扰进行评估从所设定的该物理块初始的次数阈值—10万次,或者,该新的次数阈值也可以为Flash存储器的设计开发人员,基于在上一次对统计的物理块的数据读取次数进行清零之后重新评估后设定的次数阈值,该重新评估后设定的次数阈值小于初始的次数阈值。
具体地,例如,在本实施例中,使用eMMC的移动设备—手机终端,在重新持续监控Flash存储器从该物理块a中读取数据的过程中,每一次记录得到的该Flash存储器从该物理块a中读取数据的新的数据读取次数d`,与预先设定的该Flash存储器的次数阈值—10万次进行对比,以检测该新的数据读取次数d`是否等于或者大于该次数阈值—10万次。
步骤S503,若检测到所述新的数据读取次数小于所述新的次数阈值,则不控制所述读干扰触发数据重写;
使用eMMC的移动设备在对比检测新的数据读取次数是否大于或者等于新的次数阈值的过程中,若对比检测到该新的数据读取次数小于新的次数阈值,则移动设备不控制Flash存储器的读干扰机制触发数据重写。
具体地,例如,使用eMMC的移动设备—手机终端,在将重新持续监控Flash存储器从该物理块a中读取数据的新的数据读取次数d`,与预先设定的该Flash存储器的次数阈值—10万次进行对比的过程中,若对比检测到该新的数据读取次数d`始终小于该次数阈值—10万次,则手机终端不控制Flash存储器的主控启动读干扰机制以触发针对物理块a的数据重写策略。
步骤S504,若检测到所述新的数据读取次数大于或者等于所述新的次数阈值,则控制所述读干扰触发数据重写;
使用eMMC的移动设备在对比检测新的数据读取次数是否大于或者等于新的次数阈值的过程中,若对比检测到该新的数据读取次数大于或者等于新的次数阈值,则移动设备直接控制Flash存储器的读干扰机制触发数据重写。
具体地,例如,使用eMMC的移动设备—手机终端,在将重新持续监控Flash存储器从该物理块a中读取数据的新的数据读取次数d`,与预先设定的该Flash存储器的次数阈值—10万次进行对比的过程中,若对比检测到该新的数据读取次数d`始终大于或者等于该次数阈值—10万次,则手机终端控制Flash存储器的主控启动读干扰机制以触发针对物理块a的数据重写策略,从而,该Flash存储器的主控随即将该物理块a中每一个物理页上存储的数据搬运转移的到其他物理块(物理块b和/或者物理块c)的各物理页上重新进行编写存储,直至该物理块a中全部物理页上存储的数据全部被搬运转移到其他物理块中,如此,即完成针对物理块a的数据重写。
在另一种可行的实施例中,上述步骤S500中,根据所述新的数据读取次数判断是否控制所述读干扰触发数据重写”的步骤,还可以包括:
步骤S505,若检测到所述新的数据读取次数大于或者等于所述新的次数阈值,则再次确定所述物理块的数据出错状态,并根据所述数据出错状态控制所述读干扰触发数据重写。
使用eMMC的移动设备在对比检测新的数据读取次数是否大于或者等于新的次数阈值的过程中,若对比检测到该新的数据读取次数大于或者等于新的次数阈值,则移动设备重新开始确定该物理块的数据出错状态,然后,移动设备在确定的物理块的数据出错状态为已受干扰的情况下,控制Flash存储器的读干扰机制触发数据重写。
具体地,例如,在本实施例中,使用eMMC的移动设备—手机终端,在将重新持续监控Flash存储器从该物理块a中读取数据的新的数据读取次数d`,与预先设定的该Flash存储器的次数阈值—10万次进行对比的过程中,若对比检测到该新的数据读取次数d`始终大于或者等于该次数阈值—10万次,则手机终端再次针对该物理块a中每一个物理页上存储的数据执行read check流程,从而分别确定出该物理块a中每一个物理页各自存储的数据的数据出错量大小,然后,手机终端逐一的检测该每一个物理页的数据出错量是否大于预先设定的最大数据出错量—30比特,以确定该物理块a整体的数据出错状态为稳定还是已受干扰。
最后,手机终端在再次确定得到物理块a整体的数据出错状态为已受干扰时,控制Flash存储器的主控启动读干扰机制以触发针对物理块a的数据重写策略,从而,该Flash存储器的主控随即将该物理块a中每一个物理页上存储的数据搬运转移的到其他物理块(物理块b和/或者物理块c)的各物理页上重新进行编写存储,直至该物理块a中全部物理页上存储的数据全部被搬运转移到其他物理块中,如此,即完成针对物理块a的数据重写。
需要说明的是,在本实施例中,若使用eMMC的移动设备重新确定的物理块的数据出错状态仍然为稳定,则移动设备将再次执行上述步骤500直至最终完成针对物理块所存储的数据的数据重写,并且,在将该数据搬移重写至新的物理块之后,移动设备又将重复执行上述第一实施例以及第二实施例的各个步骤,并如此循环。
在本实施例中,通过使用eMMC的移动设备在确定的物理块的数据出错状态为稳定的情况下,将重新赋予该物理块一个新的数据读取次数,从而基于该新的数据读取次数重复执行持续不断地监测针对Flash存储器的物理块进行数据读取的数据读取次数,以及,若一旦检测到某一物理块的该数据读取次数大于或者等于预先评估所设定的次数阈值,确定该物理块的数据出错状态,从而根据该数据出错状态来分析控制该Flash存储器的读干扰触发数据重写的过程。
如此,有效的避免Flash存储器即使在物理块中各物理页上存储的数据未被干扰的情况下,因为物理块的数据读取次数达到了阈值而频繁的触发数据重写,造成Flash存储器的不必要磨损,从而,既保证了物理块中各物理页上存储的数据的稳定性,还在极大程度上延长了Flash存储器的使用寿命。
此外,请参照图3,本发明实施例还提出一种闪存存储器的数据重写系统,本发明闪存存储器的数据重写系统包括:
监测模块,用于监测针对闪存存储器的物理块进行数据读取的数据读取次数;
确定模块,用于若检测到所述数据读取次数大于或者等于预设的次数阈值,则确定所述物理块的数据出错状态;
重写模块,用于根据所述数据出错状态控制所述闪存存储器的读干扰触发数据重写。
优选地,所述数据出错状态包括:稳定和已受干扰,所述确定模块,包括:
读取检查单元,用于针对所述物理块中的各物理页进行数据读取检查得到各所述物理页的数据出错检查结果;
确定单元,用于根据各所述数据出错检查结果确定所述物理块的数据出错状态为稳定或者为已受干扰。
优选地,各所述物理页的数据出错检测结果为各所述物理页的数据出错量,所述确定单元,包括:
第一确定子单元,用于若各所述物理页的所述数据出错量均小于预设出错量阈值,则确定所述物理块的所述数据出错状态为稳定;
第二确定子单元,用于若各所述物理页的所述数据出错量中,任一数据出错量大于或者等于所述预设出错量阈值,则确定所述物理块的所述数据出错状态为已受干扰。
优选地,本发明闪存存储器的数据重写系统的重写模块,还用于若所述物理块的所述数据出错状态为已受干扰,则控制所述闪存存储器的读干扰触发数据重写,以供所述闪存存储器将所述物理块中存写的数据搬移至其它物理块进行存写。
优选地,本发明闪存存储器的数据重写系统的重写模块,还用于根据所述数据出错状态监测针对所述物理块进行数据读取的新的数据读取次数,并根据所述新的数据读取次数判断是否控制所述读干扰触发数据重写。
优选地,所述重写模块,包括:
重测单元,用于若所述物理块的所述数据出错状态为稳定,则将所述数据读取次数清零以重新监测得到针对所述物理块进行数据读取的新的数据读取次数。
优选地,所述重写模块,还包括:
检测单元,用于检测所述新的数据读取次数是否大于或者等于预设的新的次数阈值;
第一控制单元,用于若检测到所述新的数据读取次数小于所述新的次数阈值,则不控制所述读干扰触发数据重写;
第二控制单元,用于若检测到所述新的数据读取次数大于或者等于所述新的次数阈值,则控制所述读干扰触发数据重写;
第三控制单元,用于若检测到所述新的数据读取次数大于或者等于所述新的次数阈值,则再次确定所述物理块的数据出错状态,并根据所述数据出错状态控制所述读干扰触发数据重写。
其中,本发明闪存存储器的数据重写系统的各功能模块在运行时所实现的步骤,可参照上述本发明闪存存储器的数据重写方法的各个实施例,此处不再赘述。
此外,本发明实施例还提出一种终端设备,该终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的闪存存储器的数据重写程序,该闪存存储器的数据重写程序被所述处理器执行时实现如上述中的闪存存储器的数据重写方法的步骤。
其中,在所述处理器上运行的闪存存储器的数据重写程序被执行时所实现的步骤可参照本发明闪存存储器的数据重写方法的各个实施例,此处不再赘述。
此外,本发明实施例还提出一种计算机存储介质,应用于计算机,该计算机存储介质可以为非易失性计算机可读计算机存储介质,该计算机存储介质上存储有闪存存储器的数据重写程序,所述闪存存储器的数据重写程序被处理器执行时实现如上所述的闪存存储器的数据重写方法的步骤。
其中,在所述处理器上运行的闪存存储器的数据重写程序被执行时所实现的步骤可参照本发明闪存存储器的数据重写方法的各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机存储介质(如Flash存储器、ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
- 闪存存储器的数据重写方法、系统、终端设备及存储介质
- 存储器的数据读写方法、系统、终端设备以及存储介质