CN101826368B - 数据扫描方法和扫描装置 - Google Patents
数据扫描方法和扫描装置 Download PDFInfo
- Publication number
- CN101826368B CN101826368B CN 200910130398 CN200910130398A CN101826368B CN 101826368 B CN101826368 B CN 101826368B CN 200910130398 CN200910130398 CN 200910130398 CN 200910130398 A CN200910130398 A CN 200910130398A CN 101826368 B CN101826368 B CN 101826368B
- Authority
- CN
- China
- Prior art keywords
- data
- data segment
- scanning
- physical block
- physical
- 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
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
公开了数据扫描方法,包括:将基准数据写入存储介质;从存储介质中读取数据;将读取的数据与基准数据比较,确定存储介质的数据段中出现的错误数;和在错误数超出容忍值时,对存储介质进行标记。其中,读取数据以及确定数据段中的错误数的操作采用流水线方式进行。还公开了数据扫描装置。本发明仅需较低的软硬件花费,可有效减少扫描时间,同时具有灵活配置的特点,可自由设定基准数据和错误容忍值,扫描结果可以用于各种ECC。
Description
技术领域
本申请涉及半导体存储领域,特别涉及数据扫描方法和扫描装置。
背景技术
目前能纠正多个位/字节的ECC模块在诸如闪存介质之类的能够允许数据错误的存储介质中得到了广泛的应用。但是,由于ECC能够纠正的错误能力有限。因此,要保证ECC模块正常工作,需要确保物理块中不存在错误个数超过ECC纠错能力的数据段,否则需要将存在错误个数超过ECC纠错能力的数据段的物理块(简称坏块)找出来做标记以避免使用这样的坏块。需要先将这类存储介质中错误个数超过ECC纠错能力的物理块(简称坏块)找出来做标记以避免使用这些坏块,这一过程称为“扫描”(或“数据扫描”)。在一些情况下,例如,如果ECC模块的纠错范围改变、或者存储介质中有坏块但是没有坏块标记,必须对存储介质进行扫描,找出坏块并做标记。
目前对这类存储介质进行扫描的方式主要有:(1)PC端软件发送命令先将数据写入存储介质然后再读取数据,PC端软件统计各数据段的错误个数。该方式由于受到PC机端软件处理速度的限制,因而扫描效率不高;(2)ECC模块对一段数据生成校验码,将要写入的原始数据和校验码一起写入存储介质中,从存储介质读出数据时将原始数据和校验码都读出,ECC模块判断读出的数据和写入的数据之间是否存在差异。如果有差异,ECC模块需要花费一定的时间计算读写差异的个数(即错误数)。在错误个数超过设定的容忍值时启动标记程序,将物理块标记成坏块。该方式的扫描依赖于ECC模块处理速度,在错误较多情况下速度较低。
发明内容
本申请公开的一些方面提出了数据扫描方法和扫描装置,以提高对诸如闪存介质之类的能够允许数据错误的存储介质进行扫描的速度和效率。
根据本申请公开的一个方面,提出数据扫描方法,包括:将基准数据写入存储介质;从存储介质中读取数据;将已读取的数据与基准数据比较,确定存储介质的数据段中的错误数;和在所述错误数超出容忍值时,对存储介质进行标记。其中,所述读取数据和确定数据段中的错误数的操作采用流水线的方式进行。
在上述的数据扫描方法中,将读取的至少一数据与基准数据比较以统计错误数的步骤包括:当已读取的数据段中的错误数超出容忍值时,结束对该数据段所属的物理块的扫描,对该物理块进行标记;若物理块中各数据段的错误数均未超出所述容忍值时,进行下一物理块的扫描。
根据本申请公开的另一方面,提供了数据扫描装置,包括控制模块,配置扫描信息,并将所述配置的扫描信息设置于配置模块中,所述扫描信息包括预设的基准数据和容忍值;读写模块,根据所述控制模块的控制,将所述配置模块中的基准数据写入存储介质中,和从所述存储介质读取数据;计数模块,比较当前读取的数据与基准数据以确定所读取数据中的错误数;比较模块,判断错误数是否大于所述容忍值,将判断结果通知所述控制模块;和标记模块,根据所述控制模块的控制,将错误数超过所述容忍值的物理块标记为坏块。其中,读写模块与计数模块采用流水线结构。
根据上述公开的一些方面,不需要使用ECC模块,仅需较低的软硬件花费,就可有效减少对存储介质进行全面扫描的时间。此外,上述公开的一些方面还具有灵活配置的特点,可自由设定基准数据和错误容忍值。通过扫描,一般只要在一个物理块中发现一个数据段超出错误容忍值,则这个物理块就不可使用。换言之,经过上述实施方式中的扫描后,没有标记的物理块都可以使用ECC来纠错了。因此,扫描结果可以适用于各种ECC。
附图说明
图1是根据本申请公开的数据扫描流程一实施方式的示意图;
图2是图1所示的对物理块的扫描过程的一实施例的示意图;
图3是根据本申请公开的数据扫描装置的一实施方式的构成示意图;
图4是图3所示数据扫描装置的详细构成的实施例的示意图;
图5是本申请公开的一字节中错误个数计数器的一种电路结构的示意图;
图6是本申请公开的一字节中错误个数计数器的另一种电路结构的示意图;
图7是将图5所示的比较电路采用多级(四级)流水线实现的结构;
图8是将图6所示的比较电路采用多级(四级)流水线实现的结构;
图9是本申请公开的基准数据生成方式一例的示意图。
具体实施方式
以下以闪存介质为例,参照图1说明本申请公开的一个实施方式的数据扫描方法。该方法包括:
步骤S1,将基准数据写入闪存介质。基准数据是根据闪存介质特性或经验预设的数据。对闪存介质的扫描就是通过将从闪存介质读取的数据与基准数据比较来进行的。
步骤S2,从闪存介质中读取至少一数据。闪存介质输入/输出数据宽度目前主要有8bit位和16bit位两种类型。以下将以8bit位宽为例来说明,16bit位宽的情况与此类似。
步骤S3,将读取的至少一数据与基准数据比较,统计错误数。在本实施方式中,读取数据的操作与比较和统计错误数的操作采用流水线的方式。这样,该比较和统计错误数的操作可以在读取下一数据的时钟周期中进行。错误数可以是指闪存介质中的一数据段范围内出现错误的个数。可以以错误字节数、错误位数、错误字数、错误双字数来表示。
步骤S4,对错误数超出容忍值的闪存介质进行标记。容忍值是预设的闪存介质一数据段长度内容许出现的最大错误数。在一个实例中,如果闪存介质中一数据段的错误数超出该容忍值,则认为闪存介质的该数据段所在的物理块不可使用。容忍值取值为整数,例如,容忍值取值为0时,只要发现当前扫描的数据段出现错误就将该数据段所属的物理块标记为坏块。
对不同的闪存介质以及不同的扫描要求,基准数据可以根据经验而设置得不同。另外,可以通过多种基准数据进行多次扫描,在经过多次扫描后,在每一次扫描中判断均未超过容许值的数据段才可判断为可用的。
为适于将扫描结果用于ECC对闪存介质的纠错,本实施方式以数据段为单位对闪存介质进行扫描。以NAND Flash为例,将闪存介质划分为多个物理块(Block),一个物理块包括多个物理页(Page)。不同的闪存介质的物理页长度可能不同,目前主要有2KB、4KB和8KB等长度。
这样,可预设数据段长度值。数据段长度可根据相应ECC模块的特性确定,可以是ECC模块保护的数据长度加ECC产生的校验码数据长度。
在这种情况下,容忍值可以设为数据段中容许出现的最大错误数。如果闪存介质中某一数据段中的错误数超出该容忍值,则认为该数据段所在的物理块不可使用。容忍值为整数,一般取值范围为0到所使用的ECC最大纠错个数。
在预设了容忍值、基准数据、数据段长度、一物理页中数据段个数以及一物理块中物理页个数等扫描信息后,可以按照上述步骤S1-S4逐一扫描物理块中的各数据段,分别对各数据段中发现的错误统计错误数。一旦发现有数据段中的错误个数超出容忍值,则马上结束对该物理块扫描,对该物理块进行标记;若扫描完一物理块的各物理页中的所有数据段后,各数据段中的错误个数都未超出容忍值,则进行下一物理块的扫描,直到对整个闪存介质所有物理块全部完成扫描。
为便于扫描和统计,可设置一错误数变量用于记录将读取的数据与基准数据比较所发现的错误数,该错误数变量取值为整数,初始值为0,每发现一错误就将错误数加1。此外,还可设置一数据计数变量用于记录扫描过程中从当前数据段中读取的数据计数,该数据计数变量取值为整数,初始值为0,每读取一数据就将数据计数加1。
参照图1和图2以对闪存介质中物理块的扫描过程为例来进一步详细说明本实施方式。
在步骤S1,预设容忍值、数据段长度和基准数据,将基准数据写入闪存介质,对物理页数计数器清零(步骤S11)。
在步骤S2,从闪存介质中读取至少一数据的过程包括:步骤S21,向闪存介质发送读数据命令,准备读取数据,数据段数计数清零;步骤S22,将错误数清零,数据计数清零,以开始对物理页中一数据段的扫描;步骤S23,从闪存介质的一物理页读取数据,在以一字节为单位读取数据的情况下,每读取一数据就将数据计数加一。
在步骤S3,将读取的当前数据与基准数据比较并统计错误数。同上,在本例中,读取数据的操作与比较和统计错误数的操作采用流水线的方式。这样,该数据比较和统计错误数操作可以在读取下一数据的时钟周期中进行,具体包括:在步骤S31,在读取下一数据的同时,将基准数据与已读取的数据比较,发现不一致则统计错误数;在步骤S32,判断错误数是否超出容忍值,若错误数超出容忍值则进行步骤S41,结束对该物理块的扫描,将该物理块标记为坏块;否则进行步骤S33,判断当前数据段是否扫描结束,即判断数据计数是否达到数据段长度。若当前数据段扫描未结束,则回到步骤S23读取下一数据继续比较;否则进行步骤S34,判断当前物理页中的所有数据段是否扫描结束,若未结束则回到步骤S22开始对物理页中下一数据段的扫描;否则进行步骤S35,判断当前物理块中的所有物理页是否扫描结束,若未结束则返回步骤S21,开始对下一物理页的扫描;否则执行步骤S36,确定当前物理块中没有发现错误数超过容忍值的数据段,对当前物理块的扫描结束。
在步骤S4,对错误数超出容忍值的闪存介质进行标记可包括:结束对该物理块的扫描,将该物理块标记为坏块(S41)。
重复采用上述方式逐一扫描各物理块,直到完成闪存介质所有物理块的扫描。此外,根据实际需要和闪存介质特性,还可以对物理块进行多次扫描,如对同一个物理块采用不同的基准数据重复多次扫描,以提高扫描的准确性。
在上例中,还可以采用其它方式实现统计错误数、判断数据段是否结束以及判断物理页、物理块是否结束。例如数据计数器记录一物理页中读取的数据个数,数据计数器的计数等于数据段长度的整数倍时认为当前数据段的扫描结束。或者记录一物理块中读取的数据个数,该数据个数等于数据段长度倍数时认为数据段结束,该数据个数等于物理页数据长度的时候认为物理页结束,等等。
采用上述实施方式,由于读取数据的操作与比较和统计错误数的操作采用流水线的方式。这样,除数据读写的时间外,统计错误数与读取下一数据的过程同步处理,即在当前数据读取操作完成后的一到数个时钟周期内(一般取决于流水线级数)会统计出错误个数,所以不需要额外花费时间统计错误数。而且,在一数据段读完前,若错误数超过容忍值即可停止对该物理块的扫描,从而可省去读取该数据段的剩余数据的时间。与此相对照,ECC方式在读完一个包括基本数据和校验码数据的数据段后,才判断是否有错误,如果需要知道错误个数,则ECC需要花费一定的时间计算错误个数(花费的时间由ECC模块特性决定,一般是数百个到数千个时钟周期之间)。因此,在没有错误的情况下两者效率接近,在闪存介质出错较多的情况下,本实施方式扫描闪存介质的效率要明显高于采用ECC方式的效率。
在上述实施方式中,将基准数据与读取的数据比较并统计错误数可以采用以下方式进行。即,通过将基准数据与读取的数据比较,统计从闪存介质中读取的数据与基准数据不一致的位或字节的个数。该不一致的位个数称为错误位数,不一致的字节个数则称为错误字节数。错误位数和错误字节数统称错误数,因为扫描的结果是为了给ECC使用,所以选择使用统计不同字节数还是不同位数是由选用的ECC特性所决定。
在统计错误位数时,可以将一字节的基准数据和一字节读取数据先按照由高位至低位的顺序两两异或,然后累加8个1位的异或结果得到闪存介质的一字节中的错误位数。
统计错误字节数是将一字节的基准数据和一字节的读取数据按照由高位至低位的顺序两两异或,得到8个1位的异或结果,将该8个1位数求或,确定该字节是否有错误,从而统计错误字节数。
每完成一字节的基准数据与读取数据比较,将得到的这一字节中的错误数与当前错误数的值相加,用相加结果作为新的错误数。
基准数据可以按如下方式设置。由于基准数据需要保证对闪存介质中的每一位都能够写“0”和写“1”,一般可以用软件配置生成比较有规律的基准数据。基准数据的配置方式可以采用固定值,也可以采用累加、交错、随机等方式。如果采用固定值、累加、交错等方式配置基准数据,可以通过寄存器设置方式生成基准数据;而采用随机方式配置基准数据,产生的基准数据是没有规律的随机数,需要将基准数据放到扫描装置的RAM中的特定地址,并设置相应的基准数据寄存器,由数据扫描装置自动按顺序从RAM中取基准数据放到基准数据寄存器中。
参照图3说明根据本发明的数据扫描装置的一种实施方式,该数据扫描装置1可作为一个独立的功能模块设置于存储设备的控制器中。通过数据扫描装置1,可以采用软件与硬件结合的方式实现对闪存介质的扫描。
如图3所示,数据扫描装置1可包括:配置模块10、读写模块20、比较模块30、计数模块40、控制模块50以及坏块标记模块60。
数据扫描装置1可以执行图1所示的数据扫描方法。具体地,在闪存设备接入主机时,主机中的软件或闪存设备控制器中的固件可根据闪存特性和扫描要求配置扫描参数,包括基准数据、容忍值、数据段长度值、物理页长度值、每物理块中物理页数、扫描模式等,将这些参数写入配置模块10内相应的寄存器地址中。从而完成配置模块10的设定。读写模块20根据配置模块10中的设定,将基准数据写入闪存介质的物理块中。控制模块50根据配置模块10的设定,启动对物理块的数据扫描,由读写模块20从闪存介质中读取至少一数据。比较模块30比较错误个数是否大于错误容忍值,并判定数据段、物理页、物理块的扫描是否结束。计数模块40比较基准数据与读取数据中的差异,统计有差异的位的个数或者字节数、统计一个数据段中的错误个数、统计读取的数据数、当前页数、当前数据段数。读写模块20与计数模块40采用流水线方式的硬件结构。控制模块50负责在扫描过程中监控计数模块40中错误个数是否大于容忍值,根据数据段、物理页、物理块扫描结束情况控制扫描程序跳转至结束或进行下一数据段或物理页的扫描,清除计数模块40中的各计数器,在出现错误个数大于容忍值时启动标记模块60对该物理块进行坏块标记。
由图4所示配置模块10包括错误容忍值寄存器11,物理块地址寄存器12,数据段长度寄存器13,扫描启动寄存器14,每页中数据段数寄存器15,每物理块中物理页数寄存器16和基准数据寄存器17。
配置模块10还可包括基准数据生成单元18,可根据基准数据寄存器17中的配置,生成相应的基准数据。后文将对此进行说明。
物理块地址寄存器12主要在读数据前闪存设备控制器向闪存介质的地址寄存器发送页地址的时候使用。例如,一般对闪存读操作时会发送命令00+(4/5字节地址)+命令10。该地址是根据物理块地址寄存器12中的物理块地址(基地址)+偏移地址确定的。
扫描启动寄存器14的作用是,在扫描参数设置完成以后,主机中的软件可设置该寄存器以通知扫描装置中的硬件开始扫描工作。在该寄存器设定以后,数据扫描装置1中的硬件启动扫描状态。当一物理块扫描完成后,扫描装置以硬件中断或者设置扫描完成寄存器(未示出)的方式通知闪存设备中的固件以进行下一物理块的扫描。
比较模块30可包括错误数比较单元31,数据数比较单元32,数据段数比较单元33和物理页数比较单元34。计数模块40可包括一字节中错误个数计数器41,数据段中错误个数计数器42,数据数计数器43,数据段数计数器44,以及物理页数计数器45。
以下结合图2至图4说明上述数据扫描装置对闪存介质一物理块的扫描过程。
步骤S11,由例如接入了闪存设备的主机中的软件或闪存设备控制器中的固件根据闪存介质的特性配置扫描参数,完成配置模块10的各寄存器的设置,并对物理页数计数器45清零。
步骤S12,读写模块20将基准数据写入要被扫描的闪存介质中。
步骤S21,读写模块20向闪存介质发送读数据命令,准备以物理页为单位读取数据,并对数据段数计数器44清零。
步骤S22,根据物理块地址寄存器记录的物理块起始地址,开始对物理页中一数据段的扫描。控制模块50将一字节中错误个数计数器41、数据段错误个数计数器42、数据数计数器43清零。
步骤S23,读写模块20根据控制模块50的控制,从闪存介质中读取数据,每读取例如一字节的数据,数据数计数器43中的数据计数加1。
步骤S31,在读写模块20读完一数据后的下一时钟周期,读写模块20开始读下一数据,同时,计数模块中的一字节中错误个数计数器41将基准数据寄存器17中的数据与读写模块20读取的数据比较并统计错误个数,该统计的错误个数输入至数据段错误个数计数器42中并与其中的数值相加,得到新的结果仍然保留在错误个数计数器42中。
步骤S32,错误数比较单元31将数据段中错误个数计数器42的计数与错误容忍值11比较,若错误数未超过容忍值,则执行步骤S33;若错误数超过容忍值,则通知控制模块50,控制模块50将结束对该物理块的扫描,并启动标记模块60将该物理块标记成坏块。例如,可以利用坏块记录表中记录的每个块的状态选项(如0x00表示该块是坏块,0xff表示该块为数据块等,它们是自定义的标记)来记录坏块的信息。这个过程可以由主机中的软件或闪存设备控制器中的固件处理,这样更灵活。
此后,可以通过读写模块20将坏块标记写入闪存介质中(步骤S41)。
步骤S33,数据数比较单元32对数据数计数器43与数据段长度寄存器13中的数据段长度预设值比较,判断一数据段扫描是否结束。若判断为结束,则控制模块50将控制执行步骤S34,且数据段数计数器加1;否则进行步骤S23,读写模块20读取下一数据,对该数据处理仍按步骤S31至S33进行。
步骤S34,数据段数比较单元33对数据段数计数器44与每页中数据段数寄存器15中的数据段数预设值比较,判断一物理页扫描是否结束。若判断为结束,则控制模块50将控制执行步骤S35,且物理页数计数器45加1;否则执行步骤S22。
步骤S35,物理页数比较单元34将物理页数计数器45与每物理块中物理页数寄存器16中的页数预设值比较,判断一物理块扫描是否结束。若判断为结束,则控制模块50将控制执行步骤S36,否则执行步骤S21。
步骤S36,控制模块50判断在当前物理块中没有发现错误数超过预设容忍值的数据段,从而控制对当前物理块的扫描结束。
每扫描一物理块最多可以发现一个坏块地址。将物理块标记成坏块的方法可以有多种,例如可以是每发现一坏块就向闪存中写一次,也可以是在所有扫描完成之后再集中写到闪存中。
目前闪存介质中主要使用有BCH、RS和Hamming三种不同的ECC纠错方式,其中Hamming ECC具有纠正1位错误、发现2位错误的能力,纠错能力不强,主要用于SLC Flash中;BCH纠错单位是位,RS纠错单位为多个位的组合,通常是以字节为单位,根据应用需要可以配置BCH和RS的最大可纠错能力。
以下将说明根据本发明的统计一字节中错误个数的一些示例性结构,用于实现上述基准数据与读取的数据段的比较,统计不一致的位或字节的个数。
图5示出了一字节中错误个数计数器41的一种电路结构,可实现将读取的一字节的数据与基准数据寄存器17中的基准数据相比较,得到读取的数据与基准数据不一致的字节的个数。
如图5所示,该电路包括8个异或门X1~X8。基准数据Comparand[0]~Comparand[7]与读取的数据的各位Data[0]~Data[7]分别被8个异或门X1~X8做异或运算后,结果被输入两个四输入或门O1和O2,或门O1和O2的输出输入一个两输入或门O3进行或运算。运算的结果输入一加法电路ADD1,加法电路ADD1输出到D触发器D1,由D1输出比较结果。上述电路可将一字节的基准数据和一字节的读取数据按照从高位到低位的顺序分别异或,得到8个异或结果(即8个1位数据),然后对这8个1位数据求或运算,得到的一位数的结果即为错误字节数。如上所述,该错误字节数输入至数据段错误个数计数器42中并与其中的数相加。
图6所示一字节中错误个数计数器41的另一种电路结构,可实现将一字节的数据与基准数据寄存器17中的基准数据相比较,得到读取的数据与基准数据不一致的位的个数。
如图6所示,该电路包括8个异或门X1~X8。基准数据Comparand[0]~Comparand[7]与读取的数据的各位Data[0]~Data[7]分别被8个异或门X1~X8做异或运算后两两输入第一级加法器ADD2~ADD5,经过求和运算后再分别输入第二级加法电路ADD6和ADD7。加法电路ADD6和ADD7的输出再由第三级加法电路ADD8求和,之后通过加法电路ADD9将结果输出到D触发器D1,由D1输出比较结果。上述电路将一字节的基准数据和一字节读取数据按照高低位的顺序分别异或,然后对这8个1位数据求和运算,得到的4位数(0000~1000)的值(0~8)即为1字节中的错误位数。如上所述,该错误位数输入至数据段错误个数计数器42中并与其中的数相加。
图5和图6的两种电路可以在当前数据的读取完成后的下一个时钟周期统计出当前数据段中已读取的数据中错误的个数,统计结果输出到比较模块30。由比较模块30对统计出的错误数与容忍值进行比较。在错误数超出容忍值的时候可以快速中止对该物理块的扫描。
图7和图8是分别与图5和图6功能对应相同,但采用多级(四级)流水线的情况。
本实施方式所需硬件资源很少,在芯片管脚比较充足的方案下(如FPGA方式实现)可以实现多通道错误比较(一般可以不低于8通道),可大大提高处理效率。
图9示出了配置模块10中基准数据生成单元18的示意图。如图所示,利用该基准数据生成单元18,可根据扫描需要从固定值、累加器、多路选择器、存储器(RAM)等方式中选择一种作为基准数据输出方式。如选用固定值方式,则一数据段中每个字节的数据都相同;如选用累加器输出则表明数据段中两相邻的数据的差值相同;如选用多路选择输出表明一数据段中数据采用周期循环数据,如0x55,0x5a,0xa5,0xaa,0x55,0x5a,0xa5,0xaa…(如对闪存介质进行第一轮扫描时,对每个字节都写入0x55,对每一个物理块按前文所述的方式进行扫描,标记出坏块。然后,将闪存介质擦除,对闪存介质进行第二轮扫描,每个字节都写入0x5a,对未标记为坏块的物理块进行扫描,以将新发现的坏块标记出来)。选用存储器(RAM)方式不仅可以输出有规律的基准数据(包括前面几种方式),还可以输出无规律的基准数据。如果各数据段间、物理页间或者物理块间的基准数据均不相同,且存储器的容量小于一个物理块的容量,则需要在扫描过程中不断更新基准数据到存储器。
以上所述仅为本申请公开的发明的优选实施方式,并非因此限制本发明的专利范围。在本申请的权利要求书所限定的范围内,可以对本申请公开的内容进行各种等效结构或等效流程的变换。
Claims (10)
1.数据扫描方法,包括:
将基准数据写入存储介质;
从存储介质中读取数据;
将读取的数据与所述基准数据比较,确定所述存储介质的数据段中的错误数;和
在所述错误数超出容忍值时,对所述存储介质进行标记,
其中,所述读取数据和确定数据段中的错误数的操作采用流水线的方式进行,
其中所述将读取的数据与所述基准数据比较以统计错误数的步骤包括:
对所述数据段进行预定次数的扫描,判断所述数据段中的错误数是否超过所述容忍值,如是则结束对所述数据段所属的物理块的扫描;和
判断所述物理块中每个数据段在预定次数的扫描中的错误数是否均未超过所述容忍值,如是则不对该物理块做坏块标记。
2.如权利要求1所述的数据扫描方法,还包括
预设所述数据段的长度,并设置数据计数变量以记录从当前数据段中读取的数据计数,
其中,判断所述数据段中的错误数是否超过所述容忍值的步骤包括:
如果所述数据段中的错误数未超过所述容忍值,且所述数据计数变量的值达到预设的数据段长度,则判断所述数据段可用。
3.如权利要求2所述的数据扫描方法,还包括
预设物理页中的数据段数,并设置数据段数计数变量以记录当前读取的物理页中的数据段数,
其中,判断所述物理块中每个数据段的错误数是否均未超过所述容忍值的步骤包括:
如果判断所述物理块中的数据段可用,且该数据段计数变量的值达到所述数据段数,则判断该可用数据段所属的物理页可用。
4.如权利要求3所述的数据扫描方法,还包括
预设所述物理块中的物理页数,并设置物理页数计数变量以记录当前读取的物理块中的物理页数,
其中,判断所述物理块中每个数据段的错误数是否均未超过所述容忍值,如是则不对该物理块做坏块标记的步骤还包括:
判断在所述物理块的扫描过程中所述物理页数计数变量的值是否达到预设的物理页数,若所述物理页数计数变量的值达到预设的物理页数,则不对该物理块做坏块标记。
5.如权利要求1至5任意一项所述的数据扫描方法,其中确定所述存储介质的数据段中的错误数是指对一个数据段内的基准数据和读取的数据中不一致的错误位数、错误字节数、错误字数、或错误双字数求和。
6.数据扫描装置,包括,
控制模块,根据设置于配置模块中的扫描信息,控制数据扫描操作,所述扫描信息包括预设的基准数据和容忍值;
读写模块,根据所述控制模块的控制,将所述配置模块中的基准数据写入存储介质中,和从所述存储介质读取数据;
计数模块,比较当前读取的数据与基准数据以确定所读取数据中的错误数;
比较模块,判断所述存储介质的数据段中的错误数是否大于所述容忍值,将判断结果通知所述控制模块;和
标记模块,根据所述控制模块的控制,将错误数超过所述容忍值的物理块标记为坏块,
其中,所述读写模块与计数模块采用流水线结构,
所述比较模块包括错误数比较单元,所述控制模块对所述数据段进行预定次数的扫描,所述错误数比较单元判断所述数据段中的错误个数是否超过所述容忍值,如是则结束对所述数据段所属的物理块的扫描;和判断所述物理块中每个数据段在预定次数的扫描中的错误数是否均未超过所述容忍值,如是则所述标记模块不对该物理块做坏块标记。
7.如权利要求6所述的数据扫描装置,其中在所述配置模块中存储有以下扫描参数:
容忍值,表示一个数据段中最多可以出现的错误个数;
数据段长度,表示一个数据段包含的数据个数;
每页中数据段数,表示一个物理页包含的数据段个数;
每块中物理页数,表示一个物理块中包含的物理页数;和
物理块地址,表示物理块的起始地址。
8.如权利要求6所述的数据扫描装置,所述配置模块还包括基准数据生成单元,按照以下方式之一生成基准数据:固定值方式、累加器方式、多路选择器方式、存储器方式。
9.如权利要求6、7或8所述的数据扫描装置,其中所述比较模块包括:
数据数比较单元,判断数据数是否等于数据段长度;
数据段比较单元,判断数据段数是否等于物理页中数据段数;和
物理页比较单元,判断物理页数是否等于物理块中的物理页数。
10.如权利要求6、7或8所述的数据扫描装置,其中所述计数模块包括:
一字节中错误个数计数器,比较读取数据与基准数据,对一字节数据中的错误数进行计数;
数据段中错误个数计数器,对一数据段中的错误数进行计数;
数据数计数器,对一个数据段范围内已读取的数据个数进行计数;
数据段数计数器,对一个物理页中已读取的数据段数进行计数;和
物理页数计数器,对一物理块中已读取的物理页数进行计数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910130398 CN101826368B (zh) | 2009-04-08 | 2009-04-08 | 数据扫描方法和扫描装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910130398 CN101826368B (zh) | 2009-04-08 | 2009-04-08 | 数据扫描方法和扫描装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101826368A CN101826368A (zh) | 2010-09-08 |
CN101826368B true CN101826368B (zh) | 2013-04-17 |
Family
ID=42690230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910130398 Active CN101826368B (zh) | 2009-04-08 | 2009-04-08 | 数据扫描方法和扫描装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101826368B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270506B (zh) * | 2011-06-28 | 2016-12-28 | 上海华虹宏力半导体制造有限公司 | 一种闪存的编程/擦除方法 |
CN103218274B (zh) * | 2013-03-15 | 2016-12-28 | 华为技术有限公司 | 一种预防故障累加的方法和固态硬盘 |
CN104091617B (zh) * | 2014-06-17 | 2017-05-03 | 深圳市江波龙电子有限公司 | 一种闪存存储设备检测的方法及装置 |
CN105006253B (zh) * | 2015-08-11 | 2018-10-16 | 上海华虹宏力半导体制造有限公司 | 一种闪存芯片数据保留性检查方法及系统 |
CN105607961B (zh) * | 2015-12-17 | 2019-03-08 | 北京兆易创新科技股份有限公司 | 一种扫描错误位的方法 |
WO2017107160A1 (zh) * | 2015-12-25 | 2017-06-29 | 研祥智能科技股份有限公司 | 基于异构混合内存的nvm坏块识别处理及纠错方法和系统 |
CN107391300B (zh) * | 2017-07-26 | 2020-07-14 | 湖南国科微电子股份有限公司 | 一种提高闪存数据存储可靠性的方法及系统 |
CN109189603A (zh) * | 2018-07-20 | 2019-01-11 | 江苏华存电子科技有限公司 | 一种用于动态随机存取存储器使用raid做纠错校验的方法 |
CN109032524A (zh) * | 2018-07-26 | 2018-12-18 | 浪潮电子信息产业股份有限公司 | 一种坏块标记的方法以及相关装置 |
CN112162935B (zh) * | 2020-09-30 | 2021-06-08 | 深圳市时创意电子有限公司 | 存储芯片的数据处理方法、装置、计算机设备及存储介质 |
CN112397136B (zh) * | 2021-01-21 | 2021-05-14 | 武汉精鸿电子技术有限公司 | 一种半导体存储器测试软件的参数测试方法和装置 |
CN113709390B (zh) * | 2021-08-25 | 2022-06-10 | 豪威芯仑传感器(上海)有限公司 | 一种扫描器电路及图像传感器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1427420A (zh) * | 2001-12-20 | 2003-07-02 | 华为技术有限公司 | Ram高速测试控制电路及其测试方法 |
CN101246443A (zh) * | 2007-02-12 | 2008-08-20 | 国际商业机器公司 | 用于恢复存储器故障的方法和系统 |
CN101359512A (zh) * | 2008-09-02 | 2009-02-04 | 中兴通讯股份有限公司 | 一种外部存储器的检测方法和装置 |
-
2009
- 2009-04-08 CN CN 200910130398 patent/CN101826368B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1427420A (zh) * | 2001-12-20 | 2003-07-02 | 华为技术有限公司 | Ram高速测试控制电路及其测试方法 |
CN101246443A (zh) * | 2007-02-12 | 2008-08-20 | 国际商业机器公司 | 用于恢复存储器故障的方法和系统 |
CN101359512A (zh) * | 2008-09-02 | 2009-02-04 | 中兴通讯股份有限公司 | 一种外部存储器的检测方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101826368A (zh) | 2010-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101826368B (zh) | 数据扫描方法和扫描装置 | |
JP5523562B2 (ja) | ストレージデバイス内のエラーデータを追跡するシステムおよび方法 | |
JP5649663B2 (ja) | ビット値の格納されているカウントを使用してデータの誤りを訂正するシステムおよび方法 | |
US7334179B2 (en) | Method and system for detecting and correcting errors while accessing memory devices in microprocessor systems | |
US8473815B2 (en) | Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data | |
EP2811392B1 (en) | Method and device for reducing read delay | |
US9223648B2 (en) | Memory storage device, memory controller thereof, and method for processing data thereof | |
TWI661427B (zh) | 記憶體管理方法以及儲存控制器 | |
CN101889267B (zh) | 存储器阵列中的差错校正 | |
US20080049522A1 (en) | Content addressable memory entry coding for error detection and correction | |
CN102236585B (zh) | 提升错误更正能力的方法以及相关的记忆装置及其控制器 | |
CN101901169B (zh) | 扫描装置及方法 | |
US8332727B2 (en) | Error correction circuit, flash memory system including the error correction circuit, and operating method of the error correction circuit | |
TWI651726B (zh) | 解碼方法以及儲存控制器 | |
US8276042B2 (en) | Determining sector status in a memory device | |
WO2008027759A1 (en) | Allowable bit errors per sector in memory devices | |
CN101882472A (zh) | 具可变动错误校正码机制的快闪储存装置及其控制方法 | |
KR101497545B1 (ko) | 프리 페이지 검출 방법 및 장치와 이를 이용한 에러 정정 코드 디코딩 방법 및 장치 | |
CN101488369A (zh) | Bch码控制器接口电路 | |
CN113742123A (zh) | 内存故障信息记录方法及设备 | |
CN101178943A (zh) | 存储器及其读取错误检测方法 | |
CN203882621U (zh) | 一种存储装置 | |
CN101630535B (zh) | 数据处理电路及方法 | |
KR100246184B1 (ko) | 리드-솔로몬 에러 정정 코드를 이용한 프레쉬 메모리 시스템의 운영 방법 | |
CN104637542A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |