一种预防故障累加的方法和固态硬盘的制作方法

文档序号:6400360阅读:208来源:国知局
专利名称:一种预防故障累加的方法和固态硬盘的制作方法
技术领域
本发明涉及存储领域,尤其涉及一种预防故障累加的方法和固态硬盘。
背景技术
SSD(Solid State Drive,固态硬盘)是由固态电子存储芯片阵列而制成的硬盘,可以由控制单元和存储单元(Flash芯片)组成。其中,构成SSD的存储介质Nand Flash (与非门快闪存储介质)存在可能造成可纠正故障累加的因素,如Soft Error (数据的软失效)可以导致Nand Flash内存储的电荷很容易受到干扰,可靠性下降。当前对于SSD中提高其可靠性的方法主要是ECC(Error Correcting Code,纠错码)和RAID (Redundant Array of Independent Disks,独立磁盘冗余阵列)两种方法,都可以用于保护Nand Flash中易出错的数据。除此之外,基于LBA(Logic Block Address,逻辑块地址)的Data Scrub (巡检)技术,也可以应用于RAID卡和SSD控制器中。为了防止可纠正故障累加,控制器后台可以隔固定的时间间隔去将每个LBA的数据读出来,如果发生了 ECC不可纠的错误或者较高的故障率,且快超过ECC可纠的范围时,就利用已有的RAID保护或者ECC保护将数据纠正后,再重新写到SSD的新页中,将原有的页标识为坏页,避免再次写入到该页时产生不可纠的故障。其中,ECC保护和RAID保护力度有限,且对于热数据有效,如果冷数据长时间未被搬移,导致两个通道的数据出错超过ECC可纠范围,就会导致数据不可恢复。由于基于LBA的Data Scrub技术可以定期扫描和搬移即将出错的有效数据,可以解决上述冷数据不可恢复的问题,但是通过LBA方式的主机端无法访问到无效页处,而一旦该无效页所在的块长时间未满足GC(Garbage Collection,垃圾回收)条件,该块长中的无效页和有效页就容易受到各种因素的影响而引发错误的增加。这样,基于LBA的Data Scrub技术是存在盲点的,可靠性仍然不足。

发明内容
本发明的实施例提供一种预防故障累加的方法和固态硬盘,能够提高固态硬盘的
可靠性。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,提供一种预防故障累加的方法,包括:获取物理页号的可纠故障率,若所述物理页号的可纠故障率达到阈值,则对所述物理页号的数量进行统计,并根据所述物理页号的数量判断是否要启动巡检,获取所述物理页号所在的芯片范围;若启动巡检,则对所述芯片范围内的物理页号定期下发所述巡检的读物理页号命令;根据所述读物理页号命令获取所述物理页号的数据,并将所述物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取所述物理页号恢复后的数据在第一种可能实现的方式中,结合第一方面,所述将所述物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取所述物理页号恢复后的数据包括:若所述可纠故障率大于所述第二预设阈值,则通过磁盘冗余阵列技术获取恢复后的数据;若所述可纠故障率小于或等于所述第二预设阈值且大于或等于所述第一预设阈值,则通过纠错码对所述物理页号的数据进行纠错来获取恢复后的数据;若所述可纠故障率小于所述第一预设阈值,则通过纠错码对所述物理页号的数据进行纠错来获取恢复后的数据,并丢弃所述恢复后的数据,其中,所述第一预设阈值小于所述第二预设阈值。在第二种可能实现的方式中,结合第一方面或第一方面的第一种可能实现的方式,还包括:当所述可纠故障率大于所述第二预设阈值,或所述可纠故障率小于或等于所述第二预设阈值且大于或等于所述第一预设阈值时,将所述物理页号恢复后的数据写入新的物理页号中,并将恢复前的所述物理页号标记为坏页。在第三种可能实现的方式中,结合第一方面或第一方面的第一种可能实现的方式或第二种可能实现的方式,还包括:获取所述物理页号的可纠故障率,将存在所述可纠故障率的物理页号的数量反馈至主机端,所述主机端根据存在所述可纠故障率的物理页号的数量判断是否要启动巡检,并获取所述物理页号所在的芯片范围。在第四种可能实现的方式中,结合第一方面或第一方面的第一种可能实现的方式至第三种可能实现的方式,所述根据所述物理页号的数量判断是否要启动巡检包括:若所述物理页号的数量与所述芯片范围内总的物理页号的数量的比例值大于第三预设阈值,则由所述寄存器模块或所述主机端启动所述巡检。第二方面,提供一种固态硬盘,所述固态硬盘包括固态硬盘控制器和多组存储单元,所述固态硬盘控制器包括主机接口模块、寄存器模块、检错/纠错模块、闪存控制模块、读模块、写模块和垃圾回收模块,其中:所述检错/纠错模块用于获取物理页号的可纠故障率,若所述物理页号的可纠故障率达到阈值,则所述检错/纠错模块对所述物理页号的数量进行统计,并将所述物理页号的数量发送至寄存器模块,所述寄存器模块根据所述物理页号的数量判断是否要启动巡检,获取所述物理页号所在的芯片范围;若启动巡检,所述寄存器模块对所述芯片范围内的物理页号向读模块定期下发所述巡检的读物理页号命令;所述读模块将所述读物理页号命令下发到闪存控制模块,所述闪存控制模块根据所述读物理页号命令获取所述物理页号的数据,并将所述物理页号的数据发送至所述检错/纠错模块,所述检错/纠错模块将所述物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取所述物理页号恢复后的数据。在第一种可能实现的方式中,结合第二方面,当所述检错/纠错模块将所述物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取所述物理页号恢复后的数据时,所述检错/纠错模块用于:若所述可纠故障率大于所述第二预设阈值,则通过磁盘冗余阵列技术获取恢复后的数据;若所述可纠故障率小于或等于所述第二预设阈值且大于或等于所述第一预设阈值,则通过纠错码对所述物理页号的数据进行纠错来获取恢复后的数据;若所述可纠故障率小于所述第一预设阈值,则通过纠错码对所述物理页号的数据进行纠错来获取恢复后的数据,并丢弃所述恢复后的数据,其中,所述第一预设阈值小于所述第二预设阈值。在第二种可能实现的方式中,结合第二方面或第二方面的第一种可能实现的方式,还包括:当所述可纠故障率大于所述第二预设阈值,或所述可纠故障率小于或等于所述第二预设阈值且大于或等于所述第一预设阈值时,所述检错/纠错模块向垃圾回收模块发送回写请求,所述回写请求包括所述恢复后的数据,所述垃圾回收模块根据所述回写请求向写模块发送写请求,所述写模块将所述物理页号恢复后的数据写入新的物理页号中,并将恢复前的所述物理页号标记为坏页。在第三种可能实现的方式中,结合第二方面或第二方面的第一种可能实现的方式或第二种可能实现的方式,还包括:所述检错/纠错模块获取所述物理页号的可纠故障率,将存在所述可纠故障率的物理页号的数量通过所述寄存器模块反馈至主机端,所述主机端根据存在所述可纠故障率的物理页号的数量判断是否要启动巡检,并获取所述物理页号所在的芯片范围。在第四种可能实现的方式中,结合第二方面或第二方面的第一种可能实现的方式至第三种可能实现的方式,当所述根据所述物理页号的数量判断是否要启动巡检时,所述寄存器模块用于:若所述物理页号的数量与所述芯片范围内总的物理页号的数量的比例值大于第三预设阈值,则由所述寄存器模块或所述主机端启动所述巡检。本发明实施例提供一种预防故障累加的方法和固态硬盘,通过获取物理页号的可纠故障率,若物理页号的可纠故障率达到阈值,则对物理页号的数量进行统计,并根据物理页号的数量判断是否要启动巡检,获取物理页号所在的芯片范围,若启动巡检,则对芯片范围内的物理页号定期下发巡检的读物理页号命令,根据读物理页号命令获取物理页号的数据,并将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据,并将恢复后的数据写入新的物理页号中,将恢复前的物理页号标记为坏页,这样能够提高固态硬盘的可靠性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种多通道固态硬盘控制器应用示意图;图2为本发明实施例提供的一种固态硬盘独立磁盘冗余阵列场景示意图;图3为本发明实施例提供的一种固态硬盘应用示意图;图4为本发明实施例提供的一种预防故障累加的方法流程示意图;图5为本发明又一实施例提供的一种预防故障累加的方法流程示意图;图6为本发明又一实施例提供的一种固态硬盘结构示意图;图7为本发明又一实施例提供的一种固态硬盘结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例中涉及的方法、SSD(Solid State Drive,固态硬盘)01以及实体都是基于PPN(Physical Page Number,物理页号)的Data Scrub (巡检)技术来说明的,应用于SSD控制器011。其中,如图1所示,该SSD可以由SSD控制器011和多组(多个通道)存储单元012构成,每组存储单元包括一个或多个Flash芯片。该SSD控制器可以通过控制器内部的主机接口模块与主机03连接。对于SSD的RAID技术来说,如图2所示,以RAID4为例,假设有8个通道,通道1-7用来保存数据,通道8用来保存校验码,本发明实施例中所涉及到的物理页号PPN可以是某一通道的物理页号,例如可以是通道O的PPNO物理页号。如图3所示,本发明实施例的应用场景主要由主机03、包括SSD控制器011以及多个通道的Flash芯片012组成。主机通过SSD控制器011读写Flash芯片中的数据。其中,在主机03的服务器机框中,里面有一块底板031,底板上安装有CPU0311 (CentralProcessing Unit,中央处理机)、内存0312、南桥0313等芯片,用于对其他扩展卡032进行控制,实现主机的功能。SSD控制器也是一个芯片,如FPGA(Field Programmable GataArray,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,特定用途集成电路)等。可以通过对这个芯片进行编程来完成接收主机的读写请求,并对SSD中的Flash芯片进行各种访问和控制,SSD控制器对应的芯片可以和各个Flash芯片都设置在一个PCB(Printed Circuit Board,印刷电路板)上,通过PCB走线相连,最后呈现的形式是一个硬盘盒。或者也可以将Flash芯片和SSD控制器做成一个扩展卡,通过PCIe (PeripheralComponent Interface Express,总线和接口标准)接口与地板相连。本发明的实施例是对SSD控制器进行了改进,即实现时,需要对SSD控制器进行相应的编程,使之可以预防SSD可纠故障的累加。本发明实施例提供一种预防故障累加的方法,如图4所示,包括:101、固态硬盘获取物理页号的可纠故障率,若物理页号的可纠故障率达到阈值,则对物理页号的数量进行统计,并根据物理页号的数量判断是否要启动巡检,获取物理页号所在的芯片范围。其中,SSD(Solid State Drive,固态硬盘)用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元Flash芯片组成。PPN(Physical Page Number,物理页号)是物理存储器的页号,多个PPN的内存可以构成一个Flash芯片的内存空间。102、若启动巡检,则固态硬盘对芯片范围内的物理页号定期下发巡检的读物理页号命令。103、固态硬盘根据读物理页号命令获取物理页号的数据,并将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据。本发明实施例提供一种预防故障累加的方法,通过获取物理页号的可纠故障率,若物理页号的可纠故障率达到阈值,则对物理页号的数量进行统计,并根据物理页号的数量判断是否要启动巡检,并获取物理页号所在的芯片范围,若启动巡检,则对芯片范围内的物理页号定期下发巡检的读物理页号命令,根据读物理页号命令获取物理页号的数据,并将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据,这样能够提高固态硬盘的可靠性。本发明又一实施例提供一种预防故障累加的方法,如图5所示,包括:201、固态硬盘获取物理页号的可纠故障率,若物理页号的可纠故障率达到阈值,则对物理页号的数量进行统计。具体的,当固态硬盘SSD中存在一个或多个物理页号PPN出现故障,该固态硬盘中SSD控制器的检错/纠错模块可以对该PPN的可纠故障率做出统计,当可纠故障率较高或者可纠故障率达到阈值后,检错/纠错模块可以将可纠故障率发送至固态硬盘中的寄存器模块。例如,物理页号的可纠故障阈值为25bit,当其中一个物理页号的故障值在接近25bit或者到达25bit时,检错/纠错模块就可以将该物理页号信息发送至SSD控制器的寄存器模块。其中,构成SSD的存储介质可以是Nand Flash (与非门快闪存储介质),造成该存储介质可纠正故障累加的因素可以是=Soft EiroH数据的软失效),主要包括单颗粒反转(Single Event Upset)和单颗粒瞬态(Single Event Transent)效应;也可以是Program/Read Disturb (编程/读故障),这是由于SSD中同一个块其他页的编程/读对本页引入的沟道效应,导致Nand Flash中存储的电荷受到干扰,从而引起故障,或者其他的因素等等。这些效应,可以导致Nand Flash内存储的电荷很容易受到干扰,造成SSD可靠性下降。202、固态硬盘根据物理页号的数量判断是否要启动巡检,并获取物理页号所在的芯片范围。示例性的,寄存器模块在接收到检错/纠错模块统计出的物理页号的可纠故障率后,可以通过硬件单独控制的方式来判断是否要启动Data Scrub(巡检)技术,也可以通过软硬件交互控制的方式来判断是否要启动Data Scrub。其中,硬件单独控制的方式可以是寄存器模块根据可纠故障率判断是否要发起Data Scrub,具体可以通过存在故障的PPN的数量与物理页号所在物理芯片范围内所有物理芯片的比例值来进行判断,当该比例到达预设的第三预设阈值时,由寄存器模块发起该物理芯片范围内的Data Scrub,该寄存器模块并获取该物理芯片的地址,即获取所要进行Data Scrub b的PPN范围。而软硬件交互控制的方式可以是寄存器模块将可纠故障率通过SSD控制器中的主机接口模块通知给上层主机端,主机端可以根据存在故障的PPN的数量与物理页号所在物理芯片范围内所有物理芯片的比例来进行判断,当该比例到达预设的比例阈值时,将启动Data Scrub消息反馈至寄存器模块,并获取该物理芯片的地址,即获取所要进行Data Scrub的PPN范围,并将该范围反馈至寄存器模块。在SSD固态硬盘中,可以将整个SSD盘按照物理芯片或者其它的方式进行一定范围的划分,所以所获取的PPN范围可以是按照物理芯片的范围,也可以是其它的范围。而后,通过寄存器模块或者主机端对该范围内存在故障的PPN与该范围内所有PPN的比例来决定是否要发起该范围内的Data Scrub。203、若启动巡检,固态硬盘对芯片范围内的物理页号定期下发巡检的读物理页号命令。具体的,SSD控制器中的寄存器模块在接收到Data Scrub的启动范围后,可以向SSD控制器中的读模块定期下发Data Scrub的读PPN命令,这里的PPN即为上述获取到的物理芯片的范围或者其他的范围。其中,这里的定期可以是3秒或者其它的时间段。该时间段可以根据当前SSD固态硬盘的故障率来进行设置,并且要保证不影响到主机端的带宽。204、固态硬盘将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,而后进入步骤205或206、或207。具体的,读模块在从寄存器模块接收到Data Scrub的读PPN命令后,将该读PPN命令下发到Flash (闪存)控制模块,Flash控制模块读取该PPN的数据,并将读取的数据返回给检错/纠错模块,检错/纠错模块在接收到Flash控制模块返回的PPN数据后,检测得知是Data Scrub的读PPN数据,可以将该PPN数据中的故障率与第一预设阈值和第二预设阈值进行比较。205、若可纠故障率大于第二预设阈值,则固态硬盘通过磁盘冗余阵列技术获取恢复后的数据,而后进入步骤208。示例性的,若检错/纠错模块检测到该PPN的故障率大于第二预设阈值,可以通过RAID (Redundant Array of Independent Disks,独立磁盘冗余阵列)技术获取对该PPN进行纠错,以获取恢复后的正确的PPN数据。其中,第二预设阈值可以是ECC(Eir0rCorrecting Code,纠错码)的纠错阈值,即当该PPN的故障率大于ECC的纠错阈值时,可以通过RAID技术来获取该PPN恢复后的数据。在SSD固态硬盘提高可靠性的方法中,主要是ECC纠错和RAID技术两种。其中,在SSD固态硬盘中,写的最小单位是页,一页的数据处理数据区外,还存在00B(0ut Of Band,冗余区),该冗余区可以用于存放ECC的纠错码,该纠错码可以对该页中的错误进行纠正。如果一页中错误的比特过多超过了 ECC的可纠范围,可以通过RAID技术来获取正确的比特数据。该RAID技术可以让多个Flash芯片工作在同步读写方式下,每次可以同时读写多个Flash芯片,而多个Flash芯片可以按照RAID算法将数据和校验码按条带方式进行保存,当某个Flash芯片不可用时,可以通过条带上其他Flash芯片读取的数据恢复出来,来提高SSD固态硬盘的可靠性。206、若可纠故障率小于或等于第二预设阈值且大于或等于第一预设阈值,则固态硬盘通过纠错码对物理页号的数据进行纠错来获取恢复后的数据,而后进入步骤208。示例性的,假设ECC纠错码的可纠范围是25bit 30bit,当PPN的错误率大于30bit时,即PPN的错误率大于第二预设阈值,可以通过RAID技术获取恢复后的数据;当PPN的错误率小于或等于第二预设阈值,且大于第一预设阈值,可以通过ECC纠错码进行纠错来获取恢复后的数据。其中,第一预设阈值可以是ECC纠错范围内阈值25bit JPiPPN的错误率在25bit 30bit之间时,可以通过ECC纠错码进行纠错。207、若可纠故障率小于第一预设阈值,则固态硬盘通过纠错码对物理页号的数据进行纠错来获取恢复后的数据,并丢弃恢复后的数据,其中,第一预设阈值小于第二预设阈值。示例性的,以步骤206为例,当PPN的故障率小于25bit,可以通过ECC纠错码进行纠错,来获取回复后的数据。这样,检错/纠错模块可以获取该PPN中错误的比特数,由于该错误数未达到临近纠错能力的第一预设阈值,检错/纠错模块丢去该读PPN命令,即丢弃恢复后的数据。208、固态硬盘将物理页号恢复后的数据写入新的物理页号中,并将恢复前的物理页号标记为坏页。示例性的,当可纠故障率大于第二预设阈值,或者可纠故障率小于或等于第二预设阈值且大于或等于第一预设阈值时,检错/纠错模块在获取了 PPN恢复后的数据后,向SSD控制器中的垃圾回收模块发起回写请求,该回写请求中可以包括恢复后的PPN数据,垃圾回收模块在接收到检错/纠错模块的回写请求后,向SSD控制器中的写模块发送写请求,写模块根据该写请求将恢复后的PPN数据写入新的PPN中,并将恢复前的存在故障的PPN标记为坏页。本发明实施例提供一种预防故障累加的方法,通过获取物理页号的可纠故障率,若物理页号的可纠故障率达到阈值,则对物理页号的数量进行统计,并根据物理页号的数量判断是否要启动巡检,并获取物理页号所在的芯片范围,若启动巡检,则对芯片范围内的物理页号定期下发巡检的读物理页号命令,根据读物理页号命令获取物理页号的数据,并将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据,并将恢复后的数据写入新的物理页号中,将恢复前的物理页号标记为坏页,这样能够提高固态硬盘的可靠性。本发明又一实施例提供一种固态硬盘01,如图6所示,固态硬盘01包括固态硬盘控制器011和多组存储单元012,固态硬盘控制器011包括主机接口模块0111、寄存器模块0112、检错/纠错模块0113、闪存控制模块0114、读模块0115、写模块0116和垃圾回收模块0117,包括:检错/纠错模块0113用于获取物理页号的可纠故障率,若所述物理页号的可纠故障率达到阈值,则所述检错/纠错模块0113对所述物理页号的数量进行统计,并将所述物理页号的数量发送至寄存器模块0112,所述寄存器模块0112根据所述物理页号的数量判断是否要启动巡检,获取物理页号所在的芯片范围。若启动巡检,寄存器模块0112对芯片范围内的物理页号向读模块0115定期下发巡检的读物理页号命令。读模块0115将读物理页号命令下发到闪存控制模块0114,闪存控制模块0114根据读物理页号命令获取物理页号的数据,并将物理页号的数据发送至检错/纠错模块0113,检错/纠错模块0113将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据。可选的,当检错/纠错模块0113将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据时,检错/纠错模块0113可以用于:若可纠故障率大于第二预设阈值,则通过磁盘冗余阵列技术获取恢复后的数据;若可纠故障率小于或等于第二预设阈值且大于或等于第一预设阈值,则通过纠错码对物理页号的数据进行纠错来获取恢复后的数据;若可纠故障率小于第一预设阈值,则通过纠错码对物理页号的数据进行纠错来获取恢复后的数据,并丢弃恢复后的数据,其中,第一预设阈值小于第二预设阈值。可选的,还可以包括:当可纠故障率大于第二预设阈值,或可纠故障率小于或等于第二预设阈值且大于或等于第一预设阈值时,检错/纠错模块0113向垃圾回收模块0117发送回写请求,回写请求包括恢复后的数据,垃圾回收模块根据回写请求向写模块0116发送写请求,写模块0116将物理页号恢复后的数据写入新的物理页号中,并将恢复前的物理页号标记为坏页。可选的,还包括:检错/纠错模块0113获取物理页号的可纠故障率,将存在可纠故障率的物理页号的数量通过寄存器模块0112反馈至主机端,主机端根据存在可纠故障率的物理页号的数量判断是否要启动巡检,并获取物理页号所在的芯片范围。可选的,当所述根据所述物理页号的数量判断是否要启动巡检时,寄存器模块0112可以用于:若所述物理页号的数量与所述芯片范围内总的物理页号的数量的比例值大于第三预设阈值,则由所述寄存器模块0112或所述主机端启动所述巡检。本发明实施例提供一种固态硬盘,通过获取物理页号的可纠故障率,若物理页号的可纠故障率达到阈值,则对物理页号的数量进行统计,并根据物理页号的数量判断是否要启动巡检,获取物理页号所在的芯片范围,若启动巡检,则对芯片范围内的物理页号定期下发巡检的读物理页号命令,根据读物理页号命令获取物理页号的数据,并将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据,并将恢复后的数据写入新的物理页号中,将恢复前的物理页号标记为坏页,这样能够提高固态硬盘的可靠性。本发明又一实施例提供一种固态硬盘02,如图7所示,该固态硬盘包括:总线021、处理器022、接收器023、存储器024以及发射器025,其中,存储器024用于存储指令,该处理器022用于执行该指令用于获取物理页号的可纠故障率,若物理页号的可纠故障率达到阈值,则对物理页号的数量进行统计,并根据物理页号的数量判断是否要启动巡检,获取物理页号所在的芯片范围;处理器022用于执行该指令还用于若启动巡检,则对芯片范围内的物理页号定期下发巡检的读物理页号命令;处理器022用于执行该指令还用于根据读物理页号命令获取物理页号的数据,并将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据。在本发明实施例中,可选的,该处理器022执行该指令用于将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据包,可以包括:若可纠故障率大于第二预设阈值,则通过磁盘冗余阵列技术获取恢复后的数据;若可纠故障率小于或等于第二预设阈值且大于或等于第一预设阈值,则通过纠错码对物理页号的数据进行纠错来获取恢复后的数据;若可纠故障率小于第一预设阈值,则通过纠错码对物理页号的数据进行纠错来获取恢复后的数据,并丢弃恢复后的数据,其中,第一预设阈值小于第二预设阈值。在本发明实施例中,可选的,该处理器022执行该指令还可以用于:当可纠故障率大于第二预设阈值,或可纠故障率小于或等于第二预设阈值且大于或等于第一预设阈值时,将物理页号恢复后的数据写入新的物理页号中,并将恢复前的物理页号标记为坏页。在本发明实施例中,可选的,该处理器022执行该指令用于获取物理页号的可纠故障率,将存在可纠故障率的物理页号的数量反馈至主机端,主机端根据存在可纠故障率的物理页号的数量判断是否要启动巡检,并获取物理页号所在的芯片范围。在本发明实施例中,可选的,该处理器022执行该指令用于根据物理页号的数量判断是否要启动巡检,可以包括: 若所述物理页号的数量与所述芯片范围内总的物理页号的数量的比例值大于第三预设阈值,则由所述寄存器模块0112或所述主机端启动所述巡检。本发明实施例提供一种固态硬盘,通过获取物理页号的可纠故障率,若物理页号的可纠故障率达到阈值,则对物理页号的数量进行统计,并根据物理页号的数量判断是否要启动巡检,获取物理页号所在的芯片范围,若启动巡检,则对芯片范围内的物理页号定期下发巡检的读物理页号命令,根据读物理页号命令获取物理页号的数据,并将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据,并将恢复后的数据写入新的物理页号中,将恢复前的物理页号标记为坏页,这样能够提高固态硬盘的可靠性。在本申请所提供的几个实施例中,应该理解到,所揭露方法和固态硬盘,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。另外,在本发明各个实施例中的中,各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。且上述的各单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
权利要求
1.一种预防故障累加的方法,其特征在于,包括: 获取物理页号的可纠故障率,若所述物理页号的可纠故障率达到阈值,则对所述物理页号的数量进行统计,并根据所述物理页号的数量判断是否要启动巡检,获取所述物理页号所在的芯片范围; 若启动巡检,则对所述芯片范围内的物理页号定期下发所述巡检的读物理页号命令; 根据所述读物理页号命令获取所述物理页号的数据,并将所述物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取所述物理页号恢复后的数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取所述物理页号恢复后的数据包括: 若所述可纠故障率大于所述第二预设阈值,则通过磁盘冗余阵列技术获取恢复后的数据; 若所述可纠故障率小于或等于所述第二预设阈值且大于或等于所述第一预设阈值,则通过纠错码对所述物理页号的数据进行纠错来获取恢复后的数据; 若所述可纠故障率小于所述第一预设阈值,则通过纠错码对所述物理页号的数据进行纠错来获取恢复后的数据,并丢弃所述恢复后的数据,其中,所述第一预设阈值小于所述第二预设阈值。
3.根据权利要求1或2所述的方法,其特征在于,还包括: 当所述可纠故障率大于所述第二预设阈值,或所述可纠故障率小于或等于所述第二预设阈值且大于或等于所述第一预设阈值时,将所述物理页号恢复后的数据写入新的物理页号中,并将恢复前的所述物理页号标记为坏页。
4.根据权利要求1至3任意一项所述的方法,其特征在于,还包括: 获取所述物理页号的可纠故障率,将存在所述可纠故障率的物理页号的数量反馈至主机端,所述主机端根据存在所述可纠故障率的物理页号的数量判断是否要启动巡检,并获取所述物理页号所在的芯片范围。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述根据所述物理页号的数量判断是否要启动巡检包括: 若所述物理页号的数量与所述芯片范围内总的物理页号的数量的比例值大于第三预设阈值,则由所述寄存器模块或所述主机端启动所述巡检。
6.一种固态硬盘,其特征在于,所述固态硬盘包括固态硬盘控制器和多组存储单元,所述固态硬盘控制器包括主机接口模块、寄存器模块、检错/纠错模块、闪存控制模块、读模块、写模块和垃圾回收模块,其中: 所述检错/纠错模块用于获取物理页号的可纠故障率,若所述物理页号的可纠故障率达到阈值,则所述检错/纠错模块对所述物理页号的数量进行统计,并将所述物理页号的数量发送至寄存器模块,所述寄存器模块根据所述物理页号的数量判断是否要启动巡检,获取所述物理页号所在的芯片范围; 若启动巡检,所述寄存器模块对所述芯片范围内的物理页号向读模块定期下发所述巡检的读物理页号命令;所述读模块将所述读物理页号命令下发到闪存控制模块,所述闪存控制模块根据所述读物理页号命令获取所述物理页号的数据,并将所述物理页号的数据发送至所述检错/纠错模块,所述检错/纠错模块将所述物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取所述物理页号恢复后的数据。
7.根据权利要求6所述的固态硬盘,其特征在于,当所述检错/纠错模块将所述物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取所述物理页号恢复后的数据时,所述检错/纠错模块用于: 若所述可纠故障率大于所述第二预设阈值,则通过磁盘冗余阵列技术获取恢复后的数据; 若所述可纠故障率小于或等于所述第二预设阈值且大于或等于所述第一预设阈值,则通过纠错码对所述物理页号的数据进行纠错来获取恢复后的数据; 若所述可纠故障率小于所述第一预设阈值,则通过纠错码对所述物理页号的数据进行纠错来获取恢复后的数据,并丢弃所述恢复后的数据,其中,所述第一预设阈值小于所述第二预设阈值。
8.根据权利要求7或8所述的固态硬盘,其特征在于,还包括: 当所述可纠故障率大于所述第二预设阈值,或所述可纠故障率小于或等于所述第二预设阈值且大于或等于所述第一预设阈值时,所述检错/纠错模块向垃圾回收模块发送回写请求,所述回写请求包括所述恢复后的数据,所述垃圾回收模块根据所述回写请求向写模块发送写请求,所述写模块将所述物理页号恢复后的数据写入新的物理页号中,并将恢复前的所述物理页号标记为坏页。
9.根据权利要求6至8任意一项所述的固态硬盘,其特征在于,还包括: 所述检错/纠错模块获取所述物理页号的可纠故障率,将存在所述可纠故障率的物理页号的数量通过所述寄存器模块反馈至主机端,所述主机端根据存在所述可纠故障率的物理页号的数量判断是否要启动巡检,并获取所述物理页号所在的芯片范围。
10.根据权利要求6至9任意一项所述的固态硬盘,其特征在于,当所述根据所述物理页号的数量判断是否要启动巡检时,所述寄存器模块用于: 若所述物理页号的数量与所述芯片范围内总的物理页号的数量的比例值大于第三预设阈值,则由所述寄存器模块或所述主机端启动所述巡检。
全文摘要
本发明实施例提供一种预防故障累加的方法和固态硬盘,涉及存储领域,能够提高固态硬盘的可靠性。其方法为通过获取物理页号的可纠故障率,若物理页号的可纠故障率达到阈值,则对物理页号的数量进行统计,并根据物理页号的数量判断是否要启动巡检,获取物理页号所在的芯片范围,若启动巡检,则对芯片范围内的物理页号定期下发巡检的读物理页号命令,根据读物理页号命令获取物理页号的数据,并将物理页号数据中的可纠故障率与第一预设阈值和第二预设阈值进行比较,根据比较结果获取物理页号恢复后的数据,并将恢复后的数据写入新的物理页号中,将恢复前的物理页号标记为坏页。本发明实施例用于预防固态硬盘可纠故障的累加。
文档编号G06F3/06GK103218274SQ201310082760
公开日2013年7月24日 申请日期2013年3月15日 优先权日2013年3月15日
发明者鲍慧强, 王大勇, 王荣生 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1