CN101901169B - 扫描装置及方法 - Google Patents

扫描装置及方法 Download PDF

Info

Publication number
CN101901169B
CN101901169B CN201010134310.4A CN201010134310A CN101901169B CN 101901169 B CN101901169 B CN 101901169B CN 201010134310 A CN201010134310 A CN 201010134310A CN 101901169 B CN101901169 B CN 101901169B
Authority
CN
China
Prior art keywords
scanning
wrong number
data
grade
ecc
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.)
Active
Application number
CN201010134310.4A
Other languages
English (en)
Other versions
CN101901169A (zh
Inventor
杨继涛
柯乔
李欣
张琴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Huawei Technology Co Ltd
Original Assignee
Huawei Symantec Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN201010134310.4A priority Critical patent/CN101901169B/zh
Publication of CN101901169A publication Critical patent/CN101901169A/zh
Application granted granted Critical
Publication of CN101901169B publication Critical patent/CN101901169B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明实施例公开了一种扫描装置及方法,所述方法包括:接收数据处理系统的扫描数据请求,启动对存储设备的扫描;确定扫描中出现的错误数,根据所述错误数确定所述错误数对应的扫描等级;根据所述错误数对应的扫描等级,输出对于不同错误数的扫描结果。本发明实施例还提供一种扫描装置。本发明实施例可以减少错误数在存储阵列单元中的累积,改善数据存储的可靠性。

Description

扫描装置及方法
技术领域
本发明涉及存储设备,更具体的讲,涉及一种扫描装置及方法。
背景技术
固态硬盘(Solid State Disk,SSD),是由控制单元和固态存储阵列单元,例如与非闪存(Nand Flash)组成的硬盘,固态硬盘没有普通硬盘机械结构,具有低功耗、无噪声、抗震动、低热量、传输速度快等优点。
Flash写操作的基本单位是页,如Nand Flash包括2KB/4KB/8KB等,NANDFlash制造工艺决定了对NAND Flash进行数据读、写等操作可能发生随机位翻转事件。对于这种事件,通常在Flash芯片外部设计的ECC(Error Checking& Correction)中可以对数据提供有效的保护。数据写入Nand Flash前首先经过编码运算得到ECC校验值,ECC校验值和与数据一起写入Nand Flash;当数据从Flash读出时,ECC校验值和数据一起经过译码运算检验并纠正错误。
发明人在研究中发现,当数据送到数据处理系统后,结束整个读操作有可能产生错误数累积的问题:由于Nand Flash中存放的数据是纠正前出现错误的数据,而读、写操作和数据存储都有可能再次引起数据错误,因此,存储阵列单元中的盘片使用到后期,错误数会累计增多,可能导致错误数超过ECC可纠正范围,数据就不能再恢复,给使用者造成损失。
发明内容
有鉴于此,本发明实施例旨在提供一种更为可靠的数据错误处理机制,以提高存储设备的可靠性。本发明实施例提供的一种扫描方法,包括:
接收数据处理系统的扫描数据请求,启动对存储设备的扫描;确定扫描中出现的错误数,根据所述错误数确定所述错误数对应的扫描等级;根据所述错误数对应的扫描等级,输出对于不同错误数的扫描结果,其中,所述根据错误数对应的扫描等级,输出对于不同错误数的扫描结果,包括:如果所述错误数在第一扫描等级,对所述错误数进行纠正,将纠正的数据发送至所述数据处理系统端,或将所述纠正的数据发送至缓冲存储器;如果所述错误数在第二扫描等级,则选择新的存储空间中至少一页,向所述至少一页中写入经过纠正的数据;如果错误数在第三扫描等级,则查找新的存储空间,选择至少一个新的存储空间,启动写数据单元向所述新的存储空间中所有页写入所述错误数所属块中的数据。本发明实施例提供的一种扫描装置,用于对存储阵列单元数据进行扫描,扫描装置包括:接口控制单元,用于接收数据处理系统的扫描数据请求,启动对存储设备的扫描;扫描单元,用于确定扫描数据请求中所请求数据出现的错误数,并确定所述错误数对应的扫描等级;扫描结果输出单元,用于根据所述错误数对应的扫描等级,输出对于不同错误数的扫描结果;所述扫描结果输出单元包括:读数据单元,用于当所述扫描单元确定扫描等级为第一扫描等级时,对所述错误数进行纠正,将纠正的数据发送至所述数据处理系统端,或将所述纠正的数据发送至缓冲存储器;回写控制单元,用于当所述扫描单元确定扫描等级为第二扫描等级时,根据第二扫描等级输出扫描结果;坏块处理单元,用于当所述扫描单元确定扫描等级为第三扫描等级时,选择至少一个新的存储空间,启动写数据单元向所述新的存储空间中所有页写入所述错误数所属块中的数据;回写控制单元,具体用于在第二扫描等级时,选择新的存储空间中的至少一页,控制写数据单元向所述至少一页写入纠正后的数据。
本发明实施例提供的扫描装置及方法,可以及时对存储设备中的错误数进行扫描并输出对应的扫描结果,以避免错误数在存储阵列单元中累积超出了ECC纠正单元的纠正范围,从而减少了这种错误数超过ECC纠正单元的纠正范围后对存储设备的读写性能和数据存储的可靠性带来的不良影响。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例存储设备的扫描流程图;
图2为本发明实施例所配置的扫描等级;
图3为三个扫描等级对应的扫描流程图;
图4为本发明实施例提供的扫描装置的模块图;
图5为本发明实施例扫描装置;
图6为本发明实施例的扫描装置的模块图;
具体实施方式
以下参照附图对本发明进行更加明确的描述,附图中显示本发明的实施例。然而,本发明可以按照许多不同的形式实现并且不应解释为这里阐述的实施例的限制。
如图1所示,为本发明一个实施方式所公开的扫描方法流程示意图。扫描方法包括步骤:
步骤S1,接收数据处理系统扫描数据的请求,启动对存储设备的扫描;
步骤S2,确定扫描中出现的错误数,根据所述错误数确定所述错误数对应的扫描等级;
需要说明的是,步骤S2中,所述根据错误数确定错误数对应的扫描等级是根据查询ECC记录单元里记录的扫描中出现的错误数的比特数。
步骤S3,根据所述错误数对应的扫描等级,输出对于不同错误数的扫描结果。
其中,接收数据处理系统扫描数据的请求之前的步骤还可以包括:
步骤S0,配置所述不同错误数对应的扫描等级;
在本实施方式中,步骤S1启动对存储设备的扫描后,首先ECC检错单元对从存储阵列单元中读出的数据、及ECC校验值进行检错运算,确定从存储阵列单元中读出的数据是否出现错误数;当所述数据出现错误数,则在ECC记录单元里记录错误数的比特数;
步骤S1中,启动对存储设备的扫描后;首先对数据进行ECC编码,将所述数据和ECC编码生成的ECC校验值写入存储阵列单元的至少一页,并扫描所述数据中出现的错误数,记录所述数据中出现的错误数后,根据所述ECC校验值,对扫描中出现的错误数进行纠正。
步骤S1中,可以通过ECC记录单元记录所述数据中出现的错误数,另外,对所述扫描中出现的错误数进行纠正也可以与记录所述数据中出现的错误数同步处理,此处不做限定。
步骤S2中,确定扫描中出现的错误数对应的扫描等级需要查询ECC记录单元里的错误数的比特数的记录,从而确定错误数对应的扫描等级。
本发明实施例中,扫描中采用的ECC校验值可以使用里德所罗门码,汉明码,循环编码等方式。采用不同的ECC校验值方式可以有不同的纠正范围,如汉明码具有纠正1比特错误数,发现2比特错误数的能力,在一个实施方式中,汉明码用于Nand flash的ECC校验值,该Nand flash可以具有512个字节的页面大小,且每个页面可以具有16个字节的备用区,将每一个页面的512个字节分成四个组,每一组包括128比特数据字节,汉明码在每组中编码128比特数据字节,并为该组产生20个代码比特。每一页面的总编码开销是可以是80个代码位,该80个代码位可保留在该页面的备用区中。Nand flash并不局限于512个字节长度,也可以是1KB或2KB。BCH(Bose、Ray-Chaudhuri与Hocquenghem)主要用于单层单元(Single Layer Cell,SLC)和多层单元(Multi-Level Cell,MLC)中,BCH纠正单比特是比特,里德所罗门码纠正单位是多个比特的组合,通常以字节为单位,根据应用需要可以配置BCH或里德所罗门码的可纠正范围。如果错误数累积过多,则有可能超出存储设备的ECC纠正单元的纠正范围。
例如,存储设备中纠正算法的纠正范围为每512字节,可纠正16比特错误,而所读出的数据中,每512字节中只有15比特错误,则数据可被纠正,如果不能纠正,则错误数超出ECC纠正单元的纠正范围。本实施例中,根据扫描等级,对错误数进行处理前,如果确定扫描中出现的错误数比特数是0,则说明读取的数据未出现错误数,此时,将数据直接传送至数据处理系统,结束扫描数据。
本发明实施例提供的扫描方法,可以及时对存储设备中的错误数进行扫描并输出对应的扫描结果,以避免错误数在存储阵列单元中累积超出了ECC纠正单元的纠正范围,从而减少了这种错误数超过ECC纠正单元的纠正范围后对存储设备的读写性能和数据存储的可靠性带来的不良影响。
如图2所示,为了更清楚地阐述本发明,本发明实施例以纠正范围为12比特、3个扫描等级为例来进行说明。
具体地说,启动对存储设备的扫描前可以配置不同错误数对应的扫描等级,所述扫描等级可根据需要灵活设置不同的扫描等级;
扫描等级可以包括:
第一扫描等级,表示当错误数比特数为第一门限范围内的某个数值,例如,0~4(比特)之间,包括错误数比特数为1和4的情况;则对所述错误数进行纠正后直接传送经过纠正的数据至数据处理系统。
第二扫描等级,表示当错误数的比特数为位于第二门限范围,例如,5~8(比特)之间,包括错误数比特数为5和8的情况;回写经过ECC纠正错误后的数据;
第三扫描等级,表示当错误数的比特数位于第三门限范围,例如9~12(比特)之间,包括错误数比特数为9和12的情况;
第三扫描等级时,错误数比特数接近ECC可纠正上限,存放数据的数据块被列为怀疑对象,即可以标示该数据块为不可用数据块,不可用数据块用于表示在扫描过程中,尚未确定该数据块是否是坏块,在这种情况下,需要查找至少一个新数据块,并将错误数所属的不可用数据块中的所有数据搬移到该新数据块中;
FAIL,表示错误数比特数超过ECC纠正范围,此时数据中的错误数不能恢复,本发明实施方式经过上述三个扫描等级的扫描可有效完成对错误数的预处理,可有效减少错误数超过ECC可纠正范围的情况。
本发明实施例提供的三个扫描等级的扫描方法,可以及时对存储设备中的错误数进行扫描并输出对应的扫描结果,以避免错误数在存储阵列单元中累积超出了ECC纠正单元的纠正范围,从而减少了这种错误数超过ECC纠正单元的纠正范围后对存储设备的读写性能和数据存储的可靠性带来的不良影响。
需要说明的是,以上列举的三个扫描等级的扫描方法仅是出于说明的目的,而不是对本发明的限制,本发明实施例可以包括其中的一个或多个扫描等级,或包括更多扫描等级,本发明实施例在实际应用中对错误数对应的扫描等级的确定依据可以包括以下几个因素:不同类型Nand Flash的误码率,用户在实际应用中对存储设备的可靠性的要求。
图3示出了第一扫描等级对应的扫描结果;
步骤S20,查询错误数,确定错误数对应的扫描等级;
其中,确定错误数对应的扫描等级需要对从存储阵列单元中读出的数据、及ECC校验值进行检错运算,并确定从存储阵列单元中读出的数据是否出现错误数;当所述数据出现错误数,则在ECC记录单元里记录错误数比特数;通过查询错误数比特数确定扫描中出现的错误数的扫描等级。
步骤S30中,当确定错误数对应的扫描等级是第一扫描等级时,说明扫描数据出现的错误数比特数在1~4之间,此时错误数比特数较少,可暂时不处理扫描数据中的正确数据,根据第一扫描等级输出扫描结果,本发明实施例中,步骤S30包括:
步骤S301,对扫描中出现的错误数进行纠正;
在这种情况下,需要对扫描数据中出现的错误数进行纠正,并将纠正后的数据发送至数据处理系统。
本实施例中,读取每一数据字节时,将该数据字节所属页面作为产生ECC值的页面,对从存储阵列单元中读出的数据及ECC校验值进行检错运算,确定从存储阵列单元中读出的数据及ECC校验值是否出现错误数,所述检错是通过将所述存储在页面的ECC校验值与所述通过ECC编码运算产生的校验值进行比较。ECC纠正单元在控制单元控制下,经过相关运算,搜索到每一错误数的位置,并纠正每一错误数,通过ECC记录单元记录错误数比特数。
步骤S302,记录出现错误数的数据块的物理地址。
在对存储设备的正常读写操作中,频繁出现的错误数主要是在第一扫描等级对应的错误数范围内,因此在本发明实施例中,当第二扫描等级和第三扫描等级对应的扫描结果输出后,并不会对存储阵列单元的盘片性能造成较大影响。
如图3示出了第二扫描等级对应的扫描结果;
步骤S20,查询错误数,确定所述错误数对应的扫描等级;
其中,首先对从存储阵列单元中读出的数据、及ECC校验值进行检错运算,确定从存储阵列单元中读出的数据是否出现错误数;当所述数据出现错误数,则在ECC记录单元里记录错误数比特数;查询错误数是根据ECC记录单元里记录的扫描中出现的错误数比特数。
步骤S31,确定所述错误数对应的扫描等级为第二扫描等级时,根据第二扫描等级输出扫描结果;
本发明实施例中,步骤S31包括:
步骤S311,在存储单元中找一个新的存储空间,并读取错误数所属页的所有数据;
步骤S312,对扫描中出现的错误数纠正;
步骤S313,回写经过纠正后的数据到查找到的新的存储空间。
本实施例中,写操作数据长度必须是页的整数倍,读操作的基本单比特通常要比写操作小,读操作的最小长度就是ECC编解码操作的基本数据长度。读操作过程中出现ECC可以纠正的错误,需要将所述错误数所属页的所有数据都读出来再进行回写,具体的,经过ECC检错和纠正后再经过重新编码写入到Nand Flash中新的存储空间。
图3示出了第三扫描等级对应的扫描结果:
步骤S20,查询错误数,确定所述错误数对应的扫描等级;
其中,首先从存储阵列单元中读出数据、根据ECC校验值进行检错运算,确定从存储阵列单元中读出的数据是否出现错误数;当所述数据出现错误数,则在ECC记录单元里记录错误数比特数;查询错误数所属扫描等级是根据ECC记录单元里记录的扫描中出现的错误数比特数。
步骤S32,确定出错误数对应的扫描等级为第三扫描等级时,根据第三扫描等级输出扫描结果;
本发明实施例中,步骤S32包括:
步骤S321,启动坏块读操作;
具体的,首先查找至少一个新数据块;将错误数所属页所属的数据块的有效数据都搬移到所述新数据块中,并标示所述错误数所属页所属块为不可用数据块,然后结束对错误数所属页所属的数据块的其他页的扫描。其中,不可用数据块表示该数据块暂时不可用,需要进行坏块扫描;
步骤S322,启动坏块写操作;
此时应根据错误数所属页的块的地址等信息,通过标注逻辑地址、块号或其他对应标记等方式,建立其与错误数所属页所属块之间的对应关系,以便于将暂存块的数据复制到新数据块的对应页中。可选的,根据SSFDC协议可以将存储单元分成若干个区(Zone),每个区由若干个数据块构成,并且每个区都有设置至少一个空白存储块,用于将要保留的数据复制到该数据块中。
步骤S323,当系统空闲时,对不可用数据块进行坏块扫描操作;
在本实施方式中,系统空闲时是指存储设备未检测到来自数据处理系统的读取和写入数据操作的期间,或者在存储设备加电后直到进行来自数据处理系统的数据读取和写入操作的期间。坏块扫描操作用于检测坏块,坏块主要包括生产过程中产生固有的坏块和存储设备使用过程中出现的使用坏块,例如,如果某个数据块的首页的冗余区的第6个位标记等于0x00,则扫描可获知该数据块为坏块,所述坏块扫描和坏块标记可以由数据处理系统的软件或存储设备中的固件处理,每个坏块在坏块记录表具有对应的物理地址,如果经过坏块扫描,扫描出某个不可用数据块非坏块,则将不可用数据块作为可使用的数据块。通过擦除操作将坏块中的所有比特设置为逻辑“1”。当然,为了保证有效数据的安全性,对擦除坏块的操作必须在将要保留的数据全部复制到新数据块中之后进行优选的,对存储阵列单元存储设备的存储芯片进行格式化时,一般的,要预留一定数量的块,存储设备实际被格式化的存储容量会扣除这些数量的数据块所占的容量。所以查找新的存储空间时可以找到一个以上的经过坏块扫描后回收使用的不可用数据块,并且这些数据块可以根据存储空间大小及对存储单元的管理而灵活分配。坏块扫描的操作与回写控制操作不同在于,在回写控制操作中,回写控制单元需要通过写数据单元回写当前错误的页的数据到新查找到的存储空间,例如,某个页中;而坏块扫描中,坏块处理单元需要将错误数所属页所属数据块的所有有效数据都搬移到新的数据块中。
当上述步骤S3中,确定到所述错误数的错误状态为:Fail:说明错误数超过ECC纠正单元的纠正范围,此时数据不能纠正,需要停止对存储设备的读取操作,对于错误数超过ECC纠正单元的纠正范围的此种情况,在本发明实施例上,通过三个扫描等级的扫描结果,可以及时对错误数进行扫描,并输出对应的扫描结果,以避免错误数在存储阵列单元中累积超出了ECC纠正单元的纠正范围,从而减少了这种错误数超过ECC纠正单元的纠正范围后对存储设备的读写性能和数据存储的可靠性带来的不良影响。
本实施例中,对于上述扫描处理,例如第一扫描等级中对于错误数较少的数据段,可以不做特殊处理,这样不会影响到存储设备的盘片性能,直到对于错误数到达某个等级后才启动回写操作,可以避免错误数在存储设备中累积到达或超过存储设备的ECC纠正范围,从而可以有效提高存储设备的可靠性。
本领域的技术人员可以理解的是,以上列举的三个扫描等级的方式仅是出于说明的目的,而不是对本发明的限制,本发明实施例可以包括其中的一个或多个扫描等级,或包括更多扫描等级的处理方式,本发明在实际应用中对错误数对应的扫描等级的确定依据包括以下几个因素:不同类型Nand Flash的误码率,用户在实际应用中对存储设备的可靠性的要求。
图4示出了根据本发明的一个实施方式的扫描装置,包括:
接口控制单元10,用于接收数据处理系统的扫描数据请求,启动对存储设备的扫描;
扫描单元20,用于确定所述扫描数据请求中所请求数据出现的错误数,根据所述错误数确定所述错误数对应的扫描等级;
扫描结果输出单元30,用于根据所述错误数对应的扫描等级,输出对于不同错误数的扫描结果。
具体的,接口控制单元10响应于数据处理系统的请求,根据数据处理系统的请求启动对存储设备的扫描;例如,本实施例中,接口控制单元10可被配置为控制各种类型接口的方式与Nor闪速存储器、Nand闪速存储器、等按照外围组件互联,国际组织标准或/和通用串行总线彼此通信。
本发明实施例中,扫描单元20可以通过查询ECC检错并纠正错误的同时所记录下的错误数比特数,确定出错误数对应的扫描等级。
本发明实施例提供的扫描装置,可以及时对存储设备中的错误数进行扫描并输出对应的扫描结果,以避免错误数在存储阵列单元中累积超出了ECC纠正单元的纠正范围,从而减少了这种错误数超过ECC纠正单元的纠正范围后对存储设备的读写性能和数据存储的可靠性带来的不良影响。
如图5所示是本发明一个实施方式的扫描装置;
其中,本发明实施例中,在初始时间,需要配置单元21设置扫描单元20的参数,所述参数可以包括:ECC校验值、数据段长度值、物理页长度值、每数据块中物理页数等。
在本发明实施例中,扫描装置包括:扫描结果输出单元30、扫描单元20、接口控制单元10、配置单元21;
其中,配置单元21,用于预先设定不同错误数对应的扫描等级,以便于当扫描单元20和扫描结果输出单元30启动后,扫描单元20用于确定数据中出现的错误数,并确定所述错误数对应的扫描等级。
具体的,当接口控制单元10接收数据处理系统发送的扫描数据请求之前,配置单元21预先设定所述不同错误数的扫描等级,配置单元21可以通过固化软件的方式设定在数据处理系统上或设定在存储设备中,以便于扫描结果输出单元30可以采用分不同扫描等级处理的方式输出不同的扫描结果,例如,错误数对应的扫描等级为第一扫描等级,或第二扫描等级,不同的扫描等级需要输出对应的扫描结果,各扫描等级的判别标准可以通过软件动态配置或通过固化软件功能配置等,例如,第一扫描等级,表示当错误数比特数为第一门限范围;第二扫描等级,表示当错误数比特数为比特第二门限范围;第三扫描等级,表示错误数比特数为比特第三门限范围。
接口控制单元10通过选择器连接缓冲存储器,缓冲存储器被配置为以512个字节为一个扇区单位大小来描述本实施例,但是可以理解,其他单位大小的扇区也可以被采用。缓冲存储器可以是易失性存储器,如SDRAM、SRAM、DRAM等,用于对存储设备进行据写入和读出时,用于暂时保存数据。所述缓冲存储器可以被配置为用于临时存储数据的单个寄存器或双寄存器的模式。
本领域的技术人员可以理解的是,以上列举的三个扫描等级的方式仅是出于说明的目的,而不是对本发明的限制,本发明实施例可以包括其中的一个或多个扫描等级,或包括更多扫描等级的处理方式,本发明在实际应用中对错误数对应的扫描等级的确定依据包括以下几个因素:不同类型Nand Flash的误码率,用户在实际应用中对存储设备的可靠性的要求。
如图6所示,图6示出了扫描装置的模块图;
当接口控制单元10接收到数据处理系统发送的扫描数据请求之后,启动对存储设备的扫描;当所述扫描数据请求通过接口控制单元10转发于扫描单元20后;扫描单元20用于确定数据中出现的错误数,并确定所述错误数对应的扫描等级。
扫描单元20包括:
ECC编码单元201、ECC检错单元202、ECC纠正单元203、ECC记录单元204;
其中,ECC编码单元201,用于对数据进行ECC编码,并将所述数据和ECC编码生成的ECC校验值写入存储阵列单元的至少一页;
ECC检错单元202,用于根据所述ECC校验值扫描所述数据中出现的错误数;
ECC纠正单元203,用于当扫描所述数据中出现错误数时,对所述出现的错误数进行纠正;
ECC记录单元204,用于当扫描所述数据中出现错误数时,记录所述扫描数据中出现的错误数。
查询单元205,用于查询ECC记录单元204中记录的错误数,确定所述错误数对应的扫描等级。
本发明实施例中,对于写入操作而言,首先,扫描单元20向存储设备中的存储阵列单元或某一个存储单元发送第一个命令把所述存储单元的地址指向数据处理系统配置的地址,扫描单元20在写入数据的同时,ECC编码单元201在扫描单元20的控制下,对数据进行ECC编码,ECC编码单元201对数据进行ECC编码时,例如,可以对数据进行ECC编码,并将所述数据和ECC编码生成的ECC校验值写入存储阵列单元的至少一页;然后,在扫描单元20控制下,ECC编码单元201对每个数据段进行ECC编码运算,产生ECC校验值并添加在数据段后。当扫描单元20将数据分为多个512比特的基本单元被写入存储阵列单元中的某个存储单元时,所有ECC校验值存储在RAM中,其中,ECC编码可以采用汉明编码或里德所罗门编码等编码规则,在此不做限定。此时,扫描单元20会发送改写地址命令,将RAM中的ECC校验值发送到所述存储阵列单元的某个存储单元的备用区中。当扫描单元20开始扫描时,ECC检错单元202在扫描单元20的控制下,对从存储阵列单元中读出的数据、及ECC校验值进行检错运算,并确定从存储阵列单元中某个存储单元读出的数据及ECC校验值是否出现错误数,所述ECC检错是通过确定错误数所属行的地址,行中的符号位置,以及包含出现错误数误数的符号的纠正值。进一步的,ECC纠正单元203在扫描单元20的控制下,经过相关运算,搜索到每一错误数的位置,并纠正每一错误数,通过ECC记录单元204记录所述错误数,查询单元205通过查询上述ECC记录单元204可以获取记录错误数的比特数,以便于扫描单元20确定所述错误数对应的扫描等级。最后,如果确认纠正成功,则所述ECC纠正单元203将已纠正数据提供给所属选择器,用于将纠正的数据传输给所述缓冲存储器。
本领域的技术人员可以理解,对于纠正错误数范围不同的存储设备,本发明实施例的扫描等级可以灵活配置,并不局限于设定的扫描等级对应的特定的错误数。
在本发明实施例中,扫描结果输出单元30用于根据扫描单元20确定的所述错误数对应的扫描等级,输出对于不同错误数的扫描结果。
扫描结果输出单元30包括读数据单元311、写数据单元312、回写控制单元302、坏块处理单元303,其中:
读数据单元311,用于当所述扫描单元确定扫描等级为第一扫描等级时,将所述纠正的数据发送至所述数据处理系统端,或将所述纠正的数据发送至缓冲存储器;
具体的,当ECC检错单元202对从存储阵列单元中读出的数据、及ECC校验值进行检错运算后,读数据单元311用于确定ECC错误表204中查询到的错误数比特数在配置单元的级别是第一扫描等级时,通过ECC纠正单元203对所述错误数进行纠正。
写数据单元312,用于在回写控制单元302的控制下,向所述存储阵列单元中的至少一个页中写入数据;
回写控制单元302,用于当扫描单元确定扫描等级为第二扫描等级时,控制所述写数据单元312,并根据第二扫描等级输出扫描结果;
本发明实施例中,回写控制单元302具体用于当所述扫描单元确定错误数为第二扫描等级时,选择新的存储空间中的至少一页,回写控制单元控制所述写数据单元向所述至少一页写入述纠正数据。
具体的,回写控制单元302控制所述读数据单元311读出对应整个页的数据,选择新的存储空间中至少一页,通过写数据单元312向所述新的存储空间中的至少一页写入纠正数据,将纠正的数据发送至数据处理系统;或将所述纠正的数据发送至缓冲存储器。坏块处理单元303,用于当所述扫描单元20确定扫描等级为第三扫描等级时,根据第二扫描等级输出扫描结果。
本发明实施例中,坏块处理单元303用于当扫描单元确定所述错误数为第三扫描等级时,选择至少一个新的存储空间,启动所述写数据单元312向所述新的存储空间中所有页写入所述错误数所属块中的数据,并判断所述错误数所属数据块是否为坏块,如所述错误数所属数据块为坏块,坏块处理单元标记所述错误数所属数据块为坏块。
具体的,坏块处理单元303用于在所述存储空间中查找至少一个新数据块,再通过所述读数据单元311读出所述错误数所属页所属数据块的有效数据后,将所述错误数所属页所属数据块的有效数据都搬移到所述新数据块中,将所述错误数所属页所属数据块标示为不可用数据块,表示该数据块未经过坏块扫描操作,暂时为不可用状态。第三扫描等级中,当通过写数据单元312向至少一个新数据块中所有页写入所述错误数所属页所属数据块中的数据后,若存储设备空闲,可以进一步确定所述错误数所属页所属数据块是否为坏块,如所述错误数所属页所属数据块为坏块,坏块处理单元303则标记所述错误数所属页所属数据块为坏块。
本发明实施例提供的扫描装置,可以及时对存储设备中的错误数进行扫描并输出对应的扫描结果,以避免错误数在存储阵列单元中累积超出了ECC纠正单元的纠正范围,从而减少了这种错误数超过ECC纠正单元的纠正范围后对存储设备的读写性能和数据存储的可靠性带来的不良影响。
需要说明的是,以上列举的扫描装置的模块图的功能按照三个扫描等级的方式,仅是出于说明的目的,而不是对本发明扫描装置的限制,本发明实施例的扫描装置可以包括其中的一个或多个扫描等级,或包括更多扫描等级,本发明实施例在实际应用中对错误数对应的扫描等级的确定依据可以包括以下几个因素:不同类型Nand Flash的误码率,用户在实际应用中对存储设备的可靠性的要求等。
本发明实施例中,扫描装置位于的存储设备通过外设接口连接于主处理器,;在一个实施方式中,多个存储单元串联连接形成存储阵列单元,存储单元优选为NAND Flash,存储设备可以是固态硬盘和闪速存储器等。例如,如果存储设备是Nand闪速存储器或Nor闪速存储器,则存储设备可分别使用Nand闪速存储器或Nor闪速存储器接口模式与存储阵列进行通信。本发明实施例的存储设备也可以是相比特可改变存储器或其他的非易失性存储器。本发明实施例的扫描装置可应用在电子设备,如记忆卡、多媒体卡、便携式多媒体控制器或移动电话中,以及应用固态硬盘的军事、工控、视频监控、网络监控、网络终端、电力、医疗、导航设备等领域。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储单元中,如ROM/RAM、磁碟、光盘等,包括若干指令周以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (7)

1.一种扫描装置,其特征在于,包括:
接口控制单元,用于接收数据处理系统的扫描数据请求,启动对存储设备的扫描;
扫描单元,用于确定扫描数据请求中所请求数据出现的错误数,并确定所述错误数对应的扫描等级;
扫描结果输出单元,用于根据所述错误数对应的扫描等级,输出对于不同错误数的扫描结果;
所述扫描结果输出单元包括:
读数据单元,用于当所述扫描单元确定扫描等级为第一扫描等级时,对所述错误数进行纠正,将纠正的数据发送至所述数据处理系统端,或将所述纠正的数据发送至缓冲存储器;
回写控制单元,用于当所述扫描单元确定扫描等级为第二扫描等级时,根据第二扫描等级输出扫描结果;
坏块处理单元,用于当所述扫描单元确定扫描等级为第三扫描等级时,选择至少一个新的存储空间,启动写数据单元向所述新的存储空间中所有页写入所述错误数所属块中的数据;
回写控制单元,具体用于在第二扫描等级时,选择新的存储空间中的至少一页,控制写数据单元向所述至少一页写入纠正后的数据。
2.如权利要求1所述的扫描装置,其特征在于,还包括配置单元,用于预设不同错误数对应的扫描等级;
所述预设的扫描等级包括:
第一扫描等级,表示错误数为扫描装置可纠正错误数的第一门限范围;
第二扫描等级,表示错误数为扫描装置可纠正错误数的第二门限范围;
第三扫描等级,表示错误数为扫描装置可纠正错误数的第三门限范围。
3.如权利要求1所述的扫描装置,其特征在于,所述扫描单元,包括:
ECC编码单元,用于对扫描数据请求中所请求数据进行ECC编码,并将所述数据和ECC编码生成的ECC校验值写入存储阵列单元的至少一页;
ECC检错单元,用于根据所述ECC校验值扫描所述数据中出现的错误数;
ECC纠正单元,用于当扫描所述数据中出现错误数时,对所述出现的错误数进行纠正;
ECC记录单元,用于当扫描所述数据中出现错误数时,记录扫描数据中出现的错误数;
查询单元,用于查询ECC记录单元中记录的错误数,确定所述错误数对应的扫描等级。
4.如权利要求3所述的扫描装置,其特征在于,所述坏块处理单元具体用于当扫描单元确定所述错误数为第三扫描等级时,选择至少一个新的存储空间,启动所述写数据单元向所述新的存储空间中所有页写入所述错误数所属块中的数据,判断所述错误数所属数据块是否为坏块,如所述错误数所属数据块为坏块,坏块处理单元标记所述错误数所属数据块为坏块。
5.一种扫描方法,其特征在于,包括:
接收数据处理系统的扫描数据请求,启动对存储设备的扫描;确定扫描中出现的错误数,根据所述错误数确定所述错误数对应的扫描等级;根据所述错误数对应的扫描等级,输出对于不同错误数的扫描结果,
其中,所述根据错误数对应的扫描等级,输出对于不同错误数的扫描结果,包括:
如果所述错误数在第一扫描等级,对所述错误数进行纠正,将纠正的数据发送至所述数据处理系统端,或将所述纠正的数据发送至缓冲存储器;
如果所述错误数在第二扫描等级,则选择新的存储空间中至少一页,向所述至少一页中写入经过纠正的数据;
如果错误数在第三扫描等级,则查找新的存储空间,选择至少一个新的存储空间,启动写数据单元向所述新的存储空间中所有页写入所述错误数所属块中的数据。
6.如权利要求5所述的方法,其特征在于,所述接收数据处理系统扫描数据请求之前还包括:预设所述错误数对应的扫描等级;
所述预设的扫描等级包括:
第一扫描等级,表示错误数为扫描装置可纠正错误数的第一门限范围;
第二扫描等级,表示错误数为扫描装置可纠正错误数的第二门限范围;
第三扫描等级,表示错误数为扫描装置可纠正错误数的第三门限范围。
7.如权利要求5所述的方法,其特征在于,所述确定扫描中出现的错误数,根据所述错误数确定所述错误数对应的扫描等级包括:对数据进行ECC编码,将所述数据和ECC编码生成的ECC校验值写入存储阵列单元的至少一页,根据所述ECC校验值,对扫描中出现的错误数进行纠正,并记录所述扫描中出现的错误数;当扫描中出现错误数时,查询所述错误数,并确定所述错误数对应的扫描等级。
CN201010134310.4A 2010-03-23 2010-03-23 扫描装置及方法 Active CN101901169B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010134310.4A CN101901169B (zh) 2010-03-23 2010-03-23 扫描装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010134310.4A CN101901169B (zh) 2010-03-23 2010-03-23 扫描装置及方法

Publications (2)

Publication Number Publication Date
CN101901169A CN101901169A (zh) 2010-12-01
CN101901169B true CN101901169B (zh) 2013-08-28

Family

ID=43226720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010134310.4A Active CN101901169B (zh) 2010-03-23 2010-03-23 扫描装置及方法

Country Status (1)

Country Link
CN (1) CN101901169B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567336B (zh) * 2010-12-15 2014-04-30 深圳市硅格半导体有限公司 一种Flash数据搜索方法及装置
CN102929740A (zh) * 2012-10-25 2013-02-13 北京星网锐捷网络技术有限公司 检测存储设备坏块的方法和装置
CN103218274B (zh) * 2013-03-15 2016-12-28 华为技术有限公司 一种预防故障累加的方法和固态硬盘
CN104133731A (zh) * 2014-08-06 2014-11-05 曙光信息产业(北京)有限公司 数据校正方法和系统
CN104750577B (zh) * 2015-04-13 2017-09-29 中国人民解放军国防科学技术大学 面向片上大容量缓冲存储器的任意多位容错方法及装置
US10284232B2 (en) * 2015-10-28 2019-05-07 Pure Storage, Inc. Dynamic error processing in a storage device
TWI633428B (zh) * 2017-09-28 2018-08-21 慧榮科技股份有限公司 資料儲存裝置與記憶體裝置之資料處理方法
CN109375869A (zh) * 2018-09-17 2019-02-22 至誉科技(武汉)有限公司 实现数据可靠读写的方法以及系统、存储介质
CN109284201A (zh) * 2018-09-17 2019-01-29 至誉科技(武汉)有限公司 温度均衡数据恢复方法以及系统、存储介质
CN109388343B (zh) * 2018-09-26 2020-08-28 深圳市德明利技术股份有限公司 一种数据存储方法及存储器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1175311A (zh) * 1994-12-27 1998-03-04 英特尔公司 用于快速eeprom存贮器阵列的错误管理处理
CN1815615A (zh) * 2004-12-07 2006-08-09 三星电子株式会社 用于确定在光媒体上的缺陷区域的器件和方法
CN101527171A (zh) * 2009-04-17 2009-09-09 成都市华为赛门铁克科技有限公司 一种多通道并行纠错的闪存控制方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1175311A (zh) * 1994-12-27 1998-03-04 英特尔公司 用于快速eeprom存贮器阵列的错误管理处理
CN1815615A (zh) * 2004-12-07 2006-08-09 三星电子株式会社 用于确定在光媒体上的缺陷区域的器件和方法
CN101527171A (zh) * 2009-04-17 2009-09-09 成都市华为赛门铁克科技有限公司 一种多通道并行纠错的闪存控制方法和装置

Also Published As

Publication number Publication date
CN101901169A (zh) 2010-12-01

Similar Documents

Publication Publication Date Title
CN101901169B (zh) 扫描装置及方法
US10732847B2 (en) Optimistic read operation
CN106796490B (zh) 用于存储器管理的硬件自动化
CN101427323B (zh) 读取非易失性计算机存储器的系统和方法
US8977813B2 (en) Implementing RAID in solid state memory
CN102077176B (zh) 存储器系统的回拷优化
KR101623119B1 (ko) 솔리드 스테이트 드라이브의 에러 제어 방법
TWI521528B (zh) 記憶體儲存裝置、其記憶體控制器與資料處理方法
US10002042B2 (en) Systems and methods of detecting errors during read operations and skipping word line portions
KR101491943B1 (ko) 트랜잭션 로그 복구
CN101889267B (zh) 存储器阵列中的差错校正
TWI436211B (zh) 區塊管理方法、記憶體控制器與記憶體儲存裝置
MX2012010944A (es) Detección de distribución de paridad no regulada vía etiqueta de metadatos.
US8327218B2 (en) Storage device with improved read/write speed and corresponding data process method
CN114730598A (zh) 利用分区命名空间简缩ssd中的逻辑到物理表指针
US20120215962A1 (en) Partitioning pages of an electronic memory
CN101908376B (zh) 非挥发性存储装置及其控制方法
CN103631670A (zh) 存储器储存装置、存储器控制器与数据处理方法
US20160103730A1 (en) Non-volatile memory devices and controllers
CN103106148B (zh) 区块管理方法、存储器控制器与存储器存储装置
CN113094307B (zh) 映射信息管理方法、存储器存储装置及存储器控制器
US10922025B2 (en) Nonvolatile memory bad row management
US9436547B2 (en) Data storing method, memory control circuit unit and memory storage device
KR20140101626A (ko) 솔리드 스테이트 드라이브의 데이터 처리 방법
CN101996685B (zh) 存储器管理数据的差错控制方法及差错控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Applicant after: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.

Address before: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Applicant before: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES Co.,Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD. TO: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220927

Address after: No. 1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan 610041

Patentee after: Chengdu Huawei Technologies Co.,Ltd.

Address before: 611731 Qingshui River District, Chengdu hi tech Zone, Sichuan, China

Patentee before: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.

TR01 Transfer of patent right