CN101794623B - 存储设备的纠错装置及方法 - Google Patents
存储设备的纠错装置及方法 Download PDFInfo
- Publication number
- CN101794623B CN101794623B CN 200910302821 CN200910302821A CN101794623B CN 101794623 B CN101794623 B CN 101794623B CN 200910302821 CN200910302821 CN 200910302821 CN 200910302821 A CN200910302821 A CN 200910302821A CN 101794623 B CN101794623 B CN 101794623B
- Authority
- CN
- China
- Prior art keywords
- error correction
- data
- memory device
- correction circuit
- misdata
- 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)
- Detection And Correction Of Errors (AREA)
Abstract
本发明揭示了存储设备纠错领域的一种存储设备的纠错装置及方法。所述存储设备的纠错装置包括:至少一个编解码模块,由存储控制器控制对读取的存储设备的数据进行数据解码,并发出解码完成信号以及解码数据;仲裁管理器,接收所述编解码模块发出的解码完成信号以及解码数据,判断读取的存储设备的数据以及其所附加的校验码是否有错,有错则发送纠错请求信号;纠错电路,接收所述仲裁管理器分配的纠错请求信号和解码数据启动纠错,计算错误数据个数和错误数据位置;所述纠错电路设置有多个,其中所述纠错电路的数量少于存储设备中通道的数量。所述存储设备的纠错方法,通过对纠错电路进行灵活分配,使得纠错电路的设置可以减少,提升纠错电路的使用效率。
Description
技术领域
本发明涉及到存储设备纠错领域,特别涉及到一种存储设备的纠错装置及方法。
背景技术
NAND型闪存在大容量存储设备里得到了更为广泛的应用,例如固态磁盘驱动器SSD(solid state drive)。在此类大容量高速存储设备中,为了提高产品的性能,都会使用多通道技术,把通用NAND型闪存的接口数据宽度从8位扩展至更高的数据位宽,比如32位、64位或者更高。在使用多通道技术时,一般一个通道需要配置一个ECC(Error ControlCoding,错误控制编码)电路。而随着NAND型闪存工艺和技术的进步,对ECC纠错能力的要求也进一步增加,这样ECC电路的规模也随着成倍地增长。
通常每个通道都按照完整的扇区结构进行数据传输,就是某一扇区的数据对应一个通道进行传输,使得每个NAND型闪存内的数据都是以扇区为单位传输,可有效避免错误分布不均的风险;同时,NAND型闪存的纠错需求也是以一个完整的数据区块(扇区)为单位。因此,要求每个通道独立对应一个ECC电路进行纠错。而随着NAND型闪存工艺和技术的进步,对ECC电路纠错能力的要求也进一步增加,所述一个通道对应一个ECC电路的方式,使得ECC电路占用了过多的资源,不利于减少设备体积;事实上,由于多个通道同时发生错误的几率不高,使得ECC纠错电路的使用效率不高。
发明内容
本发明的目的之一为提供一种用于存储设备纠错的装置及方法,根据出错情况分配纠错电路,提升了纠错电路的使用效率。
本发明提出一种存储设备的纠错装置,应用于设置多通道的存储设备中,所述存储设备可以是一个存储设备或多个存储设备的阵列;所述存储设备包括存储控制器和存储模块;所述纠错装置包括:
至少一编解码模块,由存储控制器控制对读取的存储设备的数据进行数据解码,并发出解码完成信号以及解码数据;
仲裁管理器,接收所述编解码模块发出的解码完成信号以及解码数据,判断读取的存储设备的数据以及其所附加的校验码是否有错,如有错,则发送纠错请求信号;
纠错电路,接收所述仲裁管理器发送的纠错请求信号和仲裁管理器分配过来的解码数据启动纠错,计算错误数据个数和错误数据位置;所述纠错电路设置有多个,其中所述纠错电路的数量少于存储设备中通道的数量。
上述仲裁管理器包括:
计数模块,统计所述纠错请求信号的数量;
判断模块,与所述计数模块连接,在解码完成后判断所述统计的数量是否大于纠错电路的数量;
分配模块,根据所述判断模块的判断控制对纠错请求信号的分配及处理。
上述仲裁管理器进一步包括:
输入输出模块,与纠错电路连接,输出所述纠错电路计算出的错误数据个数和错误数据位置。
本发明还提出一种存储设备的纠错方法,应用于多通道的存储设备中,所述存储设备包括存储控制器和编解码模块;所述纠错方法包括步骤:
由存储控制器控制编解码模块对读取的存储设备数据进行数据解码,并等待所述编解码模块发出解码完成信号以及解码数据;
接收所述解码完成信号以及解码数据,判断读取的存储设备的数据以及其所附加的校验码是否有错;
根据所述判断产生纠错请求信号;
根据所述纠错请求信号,利用少于所述通道数量的纠错电路,计算错误数据个数和错误数据位置。
上述根据所述判断产生纠错请求信号的步骤后包括步骤:
统计所述纠错请求信号的数量,在解码完成后判断所述统计的数量是否大于纠错电路的数量;如是,进行下一步骤;如否,将所有纠错请求信号分别发送给纠错电路;
将纠错请求信号分批发送给纠错电路。
上述根据所述纠错请求信号,利用少于所述通道数量的纠错电路,计算错误数据个数和错误数据位置的步骤包括步骤:
将纠错请求信号与纠错电路一一对应进行错误数据个数和错误数据位置计算。
上述将纠错请求信号分批发送给纠错电路的步骤包括步骤:
将等于或少于纠错电路数量的纠错请求信号发送给纠错电路;
判断剩下的纠错请求信号数量是否大于纠错电路的数量;如是,返回上一步骤;如否,将剩下的所有纠错请求信号分别发送给纠错电路。
本发明所述存储设备的纠错装置及方法,根据需要对纠错电路进行灵活使用,减少了纠错电路的数量,提升了纠错电路的使用效率。
附图说明
图1是本发明第一实施例所述存储设备的纠错装置的结构示意图;
图2是本发明第二实施例所述存储设备的纠错装置的结构示意图;
图3是本发明第三实施例所述存储设备的纠错方法的步骤流程示意图;
图4是本发明第四实施例所述存储设备的纠错方法的步骤流程示意图;
图5是本发明第四实施例所述分批处理的步骤流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
参照图1,本发明提出第一实施例的一种用于存储设备的纠错装置,应用于多通道的一个或多个存储设备中,所述存储设备包括存储控制器11及存储模块12,原始数据将会被存储在存储模块12的相应位置,所述一个或多个存储设备的每个通道内是按照完整的扇区结构进行存储,多个扇区数据平均分布在各个通道内。
写入数据至存储模块12的时候,所述编解码模块31根据一定的算法对所述数据计算后产生检验码,存储控制器11将所述数据和校验码作为整体写入存储模块12。为确保数据完整性,在存储模块12的每一个页面上都包括额外的存储空间,作为冗余区,用于存储校验码及其它类似磨损评级或逻辑块到物理块映射之类的信息。在存储设备的一个通道上,当向存储模块12中写入数据时,第一个时钟写入第一字节数据至存储模块12,下一个时钟写入下一个字节数据至存储模块12,直至数据传送到一个或数个完整的扇区大小。在写入数据的同时,编解码模块31开始工作,直至所有数据写入完毕后,存储控制器11等待编解码模块31产生编码完成信号和输出校验码,然后将此校验码也写入存储模块12中的冗余区。
读数据的时候,存储控制器11读取多个通道上的存储模块12的数据送到缓存模块14,同时把读取的数据送到对应的编解码模块31,直至所有的读取的存储设备的数据以及其所附加的校验码都读取完毕,此时各个通道的编解码模块31会产生各自的解码完成信号和解码数据,从解码数据可以判定所述读取的存储设备的数据以及其所附加的校验码是否有错。
其中,判断编解码模块31解码数据出错是以位为单位,判断计算出的解码数据是否为全0,从而可以确认读取的存储设备的数据以及其所附加的校验码是否出错。
所述缓存模块14可由缓存控制器13控制,且其可以是RAM(随机存取存储器)、DRAM(动态随机存储器)、SRAM(静态随机存储器)或SDRAM(同步动态随机存取存储器)等,可以用于存储应用程序或系统程序,也可以用于存储由电脑主机或存储设备传输的数据。在本发明中,所述缓存模块14用来临时存储所述存储控制器11写入的可能包含有错误的数据,所述写入数据为写入存储模块12的原始数据,校验码可以根据应用需要写到或不写到缓存模块14中。
所述存储设备的纠错装置包括:
至少一编解码模块31,由存储控制器11控制对读取的存储设备数据进行数据解码,并发出解码完成信号以及解码数据。
仲裁管理器20,连接所述编解码模块31并接收所述编解码模块31发出的解码完成信号以及解码数据。此时所述存储控制器11判断读取的存储设备的数据以及其所附加的校验码是否有错,如该通道中读取的存储设备的数据及其所附加的校验码有错,则仲裁管理器20将发送纠错请求信号至纠错电路30,对纠错电路30进行分配;同时,如本领域技术人员所知,所述纠错请求信号可以由存储控制器11产生并由仲裁管理器20转发至纠错电路30,也可以由仲裁管理器20产生并发送至纠错电路30。
纠错电路30,连接所述仲裁管理器20,接收所述仲裁管理器20分配的相应通道的纠错请求信号和解码数据并启动纠错功能,根据所述仲裁管理器20分配的解码数据计算解码数据的最小多项式、校正因子、错误数据位置多项式及错误数据位置。所述纠错电路30设置有多个,其中所述纠错电路30的数量少于所述存储设备中通道的数量。
所述编解码模块31与存储设备的存储控制器11连接,所述存储控制器11从存储设备中读取数据至该编解码模块31,进行解码操作,在一次解码完成后生成解码完成信号以及解码数据。所述存储控制器11等待解码完成信号,然后读取解码数据,并根据所述解码数据判断此通道上读取的存储设备的数据以及附加的校验码是否出错,如出错,则所述存储控制器11产生纠错请求信号并发送至仲裁管理器20。
所述仲裁管理器20与所述编解码模块31连接,所述仲裁管理器20接收编解码模块31所发出的解码完成信号以及解码数据,接收所述存储控制器11产生的纠错请求信号;所述纠错请求信号可以是电平的输入;如无纠错请求,继续进行数据读取或者其他操作。在一次读取完成后,对所述纠错请求信号统一分配处理,纠错电路30纠错完毕后,撤销该次纠错的相应的纠错请求信号,所述撤销该次纠错的纠错请求信号是将电平信号的输入状态进行改变。
在本实施例的一实施方式中,存储设备的数据读取和写入在物理上是以页(Page)为单位,而在存储设备的文件系统中是以扇区(Sector,512字节)为单位,一个页大小为扇区的整数倍加上一定的冗余区。存储设备的纠错是以一个完整的数据区块为单位的,例如8bit/512Byte,表示每512个字节的数据区块最多能进行8位数据错误校正,超过8位的错误将会导致纠错失败。因此存储控制器11至少需要在读取完一个完整的扇区单位的数据以及其冗余区所附加的校验码后,才会产生纠错请求信号。
该纠错电路30设置的数量在本发明中设置少于所述通道的数量,是由于在绝大多数情况下,超过纠错电路30个数的通道数据同时发生错误的可能性很小,即使在纠错电路30数量少于通道的数量的情况下,也可确保所述纠错电路30足够分配给所述存储设备的通道。在存储控制器11需要对解码数据进行纠错时,所述仲裁管理器20根据所统计的所述存储控制器11产生的纠错请求信号数量,灵活分配纠错电路30进行纠错处理,纠错电路30设置的数量可根据实际需要进行设定。由于每一条纠错请求信号的处理需要占用一个纠错电路30,在极少数的情况下,当纠错请求信号多于所述纠错电路30数量时,必须分批进行处理,每个纠错电路30必须按一定顺序处理一个或多个纠错请求。
所述存储控制器11根据缓存模块14中错误数据所在扇区的基地址和纠错电路30输出的错误数据位置,通过所述基地址加上所述错误数据位置从而计算出错误数据在所述缓存模块14的实际地址,并通过读取所述实际地址的数据对所述错误数据进行校正,然后写回校正后的数据至所述错误数据在所述缓存模块14的实际地址。所述校正包含校验码的校正,但是如果只针对原始数据的校正,校验码可以不写入缓存模块14,校验码的校正过程可以省略。
本实施例所述存储设备的纠错装置,通过设置仲裁管理器20,对纠错电路30进行灵活使用,使得纠错电路30的设置可以根据编解码模块31的实际数量而定,从而减少纠错电路30在存储设备中所需要占用的资源;并提升纠错电路30的使用效率。所述编解码模块31和纠错电路30两个模块组成的ECC电路,其中纠错电路30的规模在ECC电路中的比重在70%以上;而在整个系统中,ECC电路又是很大的部分。本发明所提出的一种用于存储设备纠错的装置,在几乎不损失性能的基础上,很显著地减少电路面积。例如,在Toshiba 4xnm闪存中要求24bit/1024Byte的纠错能力,该ECC电路大概需要100K逻辑等效门,闪存控制器本身约为20K的逻辑等效门。如果使用8个编解码模块12和8个纠错电路30,在通用的结构中就大概需要820K的逻辑等效门。而使用本技术,如果8个通道编解码模块31动态共享4个纠错电路30,总共约为550K逻辑等效门,节约了30%左右的面积。
参照图2,本发明第二实施例提出一种存储设备的纠错装置。在本实施例的一实施方式中,上述仲裁管理器20包括计数模块204、判断模块201和分配模块203;所述计数模块204,通过与编解码模块31连接接收存储控制器11产生的纠错请求信号。当所述存储控制器11发出纠错请求信号时,该计数模块204自动统计所述纠错请求信号的数量;存储控制器11每次发送的纠错请求信号用于纠错电路30进行一次的纠错,所述判断模块201,与所述计数模块204连接,在解码完成后判断计数模块204累加纠错请求信号的数量是否大于纠错电路30的数量;所述分配模块203,根据所述判断模块201的判断控制对所述数个纠错电路30的分配及处理等。所述分配模块203对所述数个纠错电路30的分配及处理是根据所述判断模块201判断某个纠错电路30是忙碌/空闲来进行处理的,当某个纠错电路30完成纠错后则所述存储控制器11撤销相应的纠错请求信号,释放该纠错电路30,设定该纠错电路30为空闲状态,对于所述仲裁管理器20接收的纠错请求信号,所述分配模块203是根据先来先处理,忙则等待的方式在所述仲裁管理器20的控制下分配所述纠错电路30。
本实施例的一实施方式中上述仲裁管理器20进一步包括输入输出模块202,与纠错电路30连接,输出所述纠错电路30计算出的错误数据个数和错误数据位置。
所述判断模块201,在判断出纠错请求信号的数量大于纠错电路30的数量时,通过所述分配模块203,将等于或少于纠错电路30数量的纠错请求信号发送给对应的纠错电路30,并且通过所述分配模块203将各个纠错电路30设定为忙状态;暂时先不对其余的所述解码数据行纠错处理,并循环此操作直到纠错请求信号的数量等于或少于纠错电路30的数量;此时,将所有纠错请求信号分别发送给已经空闲的纠错电路30;如此,可以使得纠错请求信号与纠错电路30一一对应进行纠错,而纠错电路30可以充分利用。如果所述判断模块201,在判断出纠错请求信号的数量小于或等于所述纠错电路30的数量时,则直接将所有纠错请求信号分别发送给已经空闲的纠错电路30。
本实施例的一实施方式中,上述缓存控制器13与存储控制器11和缓存模块14连接。上述纠错装置通过使用存储设备的缓存控制器13,接收存储控制器11传送的数据并存储至缓存模块14中,或从缓存模块14中读取数据送至存储控制器11;所述缓存模块14可以在存储设备进行数据存储或者读取时,用于暂存数据。所述缓存模块14作为数据传输的缓冲区域,可根据所述纠错电路30传送的所述错误数据个数和错误数据位置,校正数据的错误。
上述缓存控制器13同时与上述仲裁管理器20连接,上述仲裁管理器20通过控制上述输入输出模块202,可以将纠错电路30计算取得的错误数据个数和错误数据位置发送给缓存控制器13,所述错误校正是存储控制器11根据存储在缓存模块14中错误数据地址及其原始数据进行处理。
所述缓存控制器13利用当前扇区的基地址和纠错电路30计算的错误数据位置,经过其二者相加计算出错误数据在缓存模块14中的实际地址。然后从缓存模块14的该实际地址中读出所述实际地址中存储的数据,对此错误数据进行校正后,写回校正后的数据至所述缓存模块14中的实际地址。
本实施例的一实施方式中,以闪存为例,对上述存储设备的纠错装置在闪存存储设备中的纠错处理,进行详细说明。上述的存储控制器11在此以闪存控制器为例。
本实施例的闪存存储设备包括若干闪存存储模块、闪存控制器、与闪存存储模块连接的若干个编解码模块31和与闪存控制器连接的若干个纠错电路30,对闪存存储模块进行控制;还包括进行暂存数据的缓存模块14,以及控制缓存模块14的缓存控制器13等。
本实施例的编解码模块31,设置数量少于通道个数,与所述闪存控制器相连接。闪存控制器在闪存中读取数据时,在所述编解码模块31解码完毕后读取所述解码数据,根据所述解码数据判断读取的存储设备的数据以及其所附加的校验码是否有错,如是,则发出相应的纠错请求信号。
上述仲裁管理器20,与所有编解码模块31连接,检测并接收所述编解码模块31发出的解码完成信号以及解码数据。并分配和启动相应的纠错电路30进行错误数据个数和错误数据位置计算。
其中,在利用各通道读取一定量的数据后,由上述仲裁管理器20的计数模块204,统计出纠错请求信号的数量。
然后,再通过上述判断模块201判断所述纠错请求信号的数量是否大于纠错电路30的数量;如是,则通过分配模块203将所述纠错请求信号分批发送给所述纠错电路30进行错误数据个数和错误数据位置计算,每次发送的纠错请求信号等于或少于所述纠错电路30的数量,并且在每次发送后将所述纠错电路30设定为忙状态,直到所述分配模块203获知通过输入输出模块202发送的该纠错电路30上的错误数据个数和错误数据位置已经发送到缓存模块14,所述分配模块203释放所述纠错电路30;如否,则通过分配模块203将所有纠错请求信号发送给所述纠错电路30进行错误数据个数和错误数据位置计算。使得一条纠错请求信号可以对应一个纠错电路30,进行错误数据个数和错误数据位置计算。
上述纠错电路30,可以根据纠错请求信号及解码数据计算错误数据个数和错误数据位置。再由上述输入输出模块202,将该错误数据位置发送给缓存控制器13,根据所述错误数据位置进行相应的错误校正。本实施例的一实施方式中,上述编解码模块31中的编解码算法可以利用BCH(Bose、Ray-Chaudhuri and Hocquenghem)码或者RS(Reed-Solomon,理德-所罗门)码进行,通过生成多项式计算,产生校验码。
上述仲裁管理器20接收编解码模块31发出的解码完成信号以及解码数据,根据所述存储控制器11发送的纠错请求信号,分配上述纠错电路30于存储控制器11,计算解码数据的错误产生位置。
上述纠错电路30,可以先根据解码数据进行错误数据位置多项式的计算。再根据上述计算结果使用搜索错误数据位置运算,取得该扇区数据的错误数据位置。然后,将错误数据个数和错误数据位置通过输入输出模块202发送给缓存控制器13,所述缓存控制器13进行错误校正。
本实施例上述存储设备可以包括但不限于NAND、NOR型闪存存储设备;或者CF卡、SM卡、SD、MMC卡;以及记忆棒等;所述纠错算法可以使用但不限于BCH算法等。
本实施例上述存储设备的纠错装置,通过仲裁管理器20对纠错请求信号数量的计算和判断,确定调用所述纠错电路30的方式,使得纠错处理能够顺利进行,从而有效利用纠错电路30进行纠错。
参照图3,本发明提出第三实施例的一种存储设备的纠错方法,应用于设置多通道的存储设备中,所述存储设备包括存储控制器和编解码模块;所述纠错方法包括步骤:
S10、由存储控制器控制对读取的存储设备数据进行数据解码,并发出解码完成信号以及解码数据;
S11、接收所述解码完成信号以及解码数据,判断读取的存储设备的数据及其附加的校验码是否有错;
如是,进行步骤S100,产生纠错请求信号;如否,结束;
S12、根据所述纠错请求信号,利用少于所述通道数量个数的纠错电路,计算出错误数据个数和错误数据位置。
如步骤S10所述,存储设备中数据的纠错处理,通常也可以在读取所述存储设备的数据时进行;存储控制器控制编解码模块对读取的数据进行解码,等待解码完成信号,并将解码数据保存在编解码模块。
如步骤S11所述,仲裁管理器在接收所述解码完成信号以及解码数据后,再判断读取的存储设备的数据以及其所附加的校验码是否有错;如有错,接收存储控制器产生纠错请求信号;如无错,则无需进行纠错,存储控制器继续读取存储设备中数据或其他操作。若根据BCH算法,所述判断读取的存储设备的数据以及其所附加的校验码是否有错的方式是,读数据时,判断编解码模块输出的解码数据是否全0。
如步骤S100所述,在上述步骤S11判断中,如判定有错,将由存储控制器产生纠错请求信号。所述仲裁管理器接收所述纠错请求信号并分配相应纠错电路进行处理。
由于采用了多通道技术,读取数据可以是多个通道同时进行,因此可能出现多个通道数据错误并发的状况,需要对所述纠错电路进行分配,使得纠错处理有序地进行。而且,由于通常存储设备的数据读写操作在物理上是以页(Page)为单位,而在存储设备的文件系统中是以扇区(Sector,512字节)为单位,因此至少需要在读取完一个完整扇区的数据后对产生的纠错请求信号进行处理。
如步骤S12所述,本实施例所述纠错电路的数量少于存储控制器通道的数量。通过分配有限的纠错电路对所述纠错请求信号进行处理。每一条纠错请求信号的处理需要使用一个纠错电路,由于纠错电路数量的限制,当纠错请求信号超过纠错电路数量时,需要分批进行处理。
本实施例所述存储设备的纠错方法,通过灵活使用少于通道数量的纠错电路,提升了所述纠错电路的使用效率。
参照图4,本发明第四实施例提出一种存储设备的纠错方法,在本实施例的一实施方式中,上述步骤S100后还包括步骤:
S110、统计所述纠错请求信号的数量,在解码完成后判断统计的纠错请求信号的数量是否大于纠错电路的数量;如是,进行步骤S111;如否,进行步骤S112;
S111、将纠错请求信号分批发送给纠错电路,纠错处理完毕后,将相应纠错请求信号撤销;
S112、将所有纠错请求信号分别发送给纠错电路。
本实施例的一实施方式中,上述步骤S12包括步骤:
S120、将纠错请求信号与纠错电路一一对应进行错误数据个数和错误数据位置计算。
本实施例一实施方式中的存储设备的纠错方法,以在闪存存储设备中进行纠错处理为例,对所述存储设备的纠错方法进行详细说明。
该闪存存储设备包括若干闪存存储模块,以及与闪存存储模块连接的闪存控制器(即上述存储控制器),对闪存存储模块进行控制;还包括用于暂存数据的缓存模块,以及控制缓存模块的缓存控制器等。
本实施例在闪存中读取数据时,从存储模块中读取数据,同时对读取的数据进行数据解码;在解码完毕时,检测读取的存储设备的数据以及其附加的验证码是否出现错误,如有错,则通过存储控制器产生纠错请求信号;如无错,可进行下一步的其他操作,所述存储控制器继续读取数据至编解码模块进行解码操作。
如步骤S110所述,可以将所接收到的纠错请求信号,分配给能够处理的相应纠错电路,进行错误数据个数和错误数据位置计算。
当利用各通道读取一定量的数据后,统计出纠错请求信号的数量。所述一定量的数据扇区大小。
然后,再判断所述纠错请求信号的数量是否大于纠错电路的数量;如是,进行步骤S111,如否,进行步骤S112。
如步骤S111所述,将所述纠错请求信号分批发送给所述纠错电路进行错误数据个数和错误数据位置计算。
参照图5,在本实施例的一实施方式中,上述步骤S111还可以包括步骤:
步骤S1111,将等于或少于纠错电路数量的纠错请求信号发送给纠错电路;
步骤S1112,判断剩下的纠错请求信号数量是否大于纠错电路的数量;如是,在纠错电路将步骤S1111中发送的纠错请求信号处理完成后,再返回步骤S1111;如否,进行步骤S1113
步骤S1113,上述步骤S1111和S1112可以连续循环,直到纠错请求信号的数量等于或少于纠错电路的数量;此时,将所有纠错请求信号分别发送给纠错电路。
如步骤S112所述,将所有纠错请求信号发送给所述纠错电路进行错误数据个数和错误数据位置计算。
如步骤S120所述,经过上述处理,使得一纠错请求信号可以对应一纠错电路,进行错误数据个数和错误数据位置计算。
本实施例的一实施方式中,在步骤S120后还可以包括步骤:
输出所述纠错电路计算出的错误数据个数和错误数据位置;以及,存储控制器根据错误数据位置在缓存模块中进行错误校正。
上述纠错方法,在利用纠错电路根据纠错请求信号对数据进行错误数据个数和错误数据位置计算后,再将所述纠错电路计算出的错误数据个数和错误数据位置输出,发送给缓存控制器;然后,使用所述缓存控制器寻找所述错误数据地址;所述存储控制器根据错误数据在缓存中的实际地址进行相应的错误校正。
本实施例的一实施方式中,上述解码可以利用BCH(Bose、Ray-Chaudhuri andHocquenghem)码或者RS(Reed-Solomon,理德-所罗门)码进行,通过生成多项式计算,产生校正因子。
所述存储编解码模块根据所述解码数据判断读取的存储设备的数据以及其所附加的校验码是否有错,如果有错,将纠错请求信号发送至仲裁管理器。所述仲裁管理器可以分配上述纠错电路,计算每一个错误数据产生的位置。
通过使用上述纠错电路,根据校正因子进行错误数据个数和错误数据位置多项式的计算。再利用上述计算结果使用搜索错误数据位置运算,取得各错误数据在缓存模块中的错误数据位置。然后,使用仲裁管理器的输入输出模块将错误数据个数和错误数据位置发送给缓存控制器,通过所述存储控制器将缓存模块中的错误数据读出后,对错误数据进行校正后写回缓存模块。
本实施例所述存储设备可以包括但不限于NAND、NOR型闪存存储设备;或者CF卡、SM卡、SD、MMC卡;以及记忆棒等;所述纠错算法可以使用但不限于BCH算法等。
本实施例上述存储设备的纠错方法,通过对纠错请求信号数量的统计和判断,确定调用所述纠错电路的方式,使得纠错处理能够顺利进行,从而有效利用纠错电路进行纠错处理。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种存储设备的纠错装置,应用于多通道的存储设备中,所述存储设备包括用于读取存储设备数据的存储控制器和至少一个存储模块;其特征在于,所述装置包括:
至少一个编解码模块,由存储控制器控制对读取的存储设备的数据进行数据解码,并发出解码完成信号以及解码数据;
仲裁管理器,接收所述编解码模块发出的解码完成信号以及解码数据,判断读取的存储设备的数据以及其所附加的校验码是否有错,如有错,则发送纠错请求信号;
纠错电路,接收所述仲裁管理器发送的纠错请求信号和仲裁管理器分配过来的解码数据启动纠错,计算错误数据个数和错误数据位置;所述纠错电路设置有多个,其中所述纠错电路的数量少于存储设备中通道的数量;
所述仲裁管理器判断读取的存储设备的数据以及其所附加的校验码是否有错的方式是,读数据时,判断编解码模块输出的解码数据是否全0。
2.根据权利要求1所述的存储设备的纠错装置,其特征在于,所述仲裁管理器包括:
计数模块,统计所述纠错请求信号的数量;
判断模块,与所述计数模块连接,在解码完成后判断所述统计的数量是否大于纠错电路的数量;
分配模块,根据所述判断模块的判断控制对纠错请求信号的分配及处理。
3.根据权利要求2所述的存储设备的纠错装置,其特征在于,所述仲裁管理器进一步包括:
输入输出模块,与纠错电路连接,输出所述纠错电路计算出的错误数据个数和错误数据位置。
4.一种存储设备的纠错方法,应用于设置多通道的存储设备中,所述存储设备包括存储控制器和编解码模块;其特征在于,所述纠错方法包括步骤:
由存储控制器控制编解码模块对读取的存储设备数据进行数据解码,并等待所述编解码模块发出解码完成信号以及解码数据;
接收所述解码完成信号以及解码数据,判断读取的存储设备的数据以及其所附加的校验码是否有错;
如有错,根据所述判断产生纠错请求信号;
根据所述纠错请求信号,利用少于所述通道数量的纠错电路,计算错误数据个数和错误数据位置;
所述判断读取的存储设备的数据以及其所附加的校验码是否有错的方式是,读数据时,判断编解码模块输出的解码数据是否全0。
5.根据权利要求4所述的存储设备的纠错方法,其特征在于,根据所述判断产生纠错请求信号的步骤后包括步骤:
统计所述纠错请求信号的数量,在解码完成后判断所述统计的数量是否大于纠错电路的数量;如是,进行下一步骤;如否,将所有纠错请求信号分别发送给纠错电路;
将纠错请求信号分批发送给纠错电路。
6.根据权利要求5所述的存储设备的纠错方法,其特征在于,根据所述纠错请求信号,利用少于所述通道数量的纠错电路,计算错误数据个数和错误数据位置的步骤包括步骤:
将纠错请求信号与纠错电路一一对应进行错误数据个数和错误数据位置计算。
7.根据权利要求5所述的存储设备的纠错方法,其特征在于,将纠错请求信号分批发送给纠错电路的步骤包括步骤:
将等于或少于纠错电路数量的纠错请求信号发送给纠错电路;
判断剩下的纠错请求信号数量是否大于纠错电路的数量;如是,返回上一步骤;如否,将剩下的所有纠错请求信号分别发送给纠错电路。
8.根据权利要求6所述的存储设备的纠错方法,其特征在于,将纠错请求信号与纠错电路一一对应进行错误数据个数和错误数据位置计算的步骤后还包括步骤:
输出所述纠错电路计算出的错误数据个数和错误数据位置。
9.根据权利要求8所述的存储设备的纠错方法,其特征在于,所述输出所述纠错电路计算出的错误数据个数和错误数据位置的步骤后还包括步骤:
根据错误数据所在扇区的基地址和错误数据位置,计算出错误数据在存储控制器的地址进行错误校正。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910302821 CN101794623B (zh) | 2009-06-01 | 2009-06-01 | 存储设备的纠错装置及方法 |
HK11100416.3A HK1146328A1 (en) | 2009-06-01 | 2011-01-14 | Error correction device and its method for storage equipment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910302821 CN101794623B (zh) | 2009-06-01 | 2009-06-01 | 存储设备的纠错装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101794623A CN101794623A (zh) | 2010-08-04 |
CN101794623B true CN101794623B (zh) | 2013-11-06 |
Family
ID=42587243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910302821 Active CN101794623B (zh) | 2009-06-01 | 2009-06-01 | 存储设备的纠错装置及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101794623B (zh) |
HK (1) | HK1146328A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129873B (zh) * | 2011-03-29 | 2012-07-04 | 西安交通大学 | 提高计算机末级高速缓存可靠性的数据压缩装置及其方法 |
CN102323913B (zh) * | 2011-09-01 | 2014-08-20 | 记忆科技(深圳)有限公司 | 固态硬盘的数据读出方法及系统 |
CN102930902A (zh) * | 2012-07-27 | 2013-02-13 | 北京航空航天大学 | 一种同时纠正固定错误与随机错误的纠错编码算法 |
CN104298572B (zh) * | 2013-07-19 | 2018-01-26 | 杨凤兰 | 一种纠错方法、纠错装置、主控制器和纠错系统 |
CN104810059B (zh) * | 2014-01-23 | 2018-04-13 | 群联电子股份有限公司 | 错误处理方法、存储器储存装置与存储器控制电路单元 |
JP6200381B2 (ja) * | 2014-06-11 | 2017-09-20 | ファナック株式会社 | 監視対象の稼働状況に応じた誤り訂正機能を有する制御装置 |
CN110968449A (zh) * | 2018-09-28 | 2020-04-07 | 方一信息科技(上海)有限公司 | 用于多通道闪存控制器的bch ecc纠错资源共享系统及方法 |
CN115632665B (zh) * | 2022-12-20 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种存储校验的系统和服务器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499532A (zh) * | 2002-10-28 | 2004-05-26 | 非易失性存储器系统内纠错码的混合实现 | |
CN101067972A (zh) * | 2007-04-23 | 2007-11-07 | 北京芯技佳易微电子科技有限公司 | 一种存储器检错纠错编码电路及利用其读写数据的方法 |
CN101211667A (zh) * | 2006-12-29 | 2008-07-02 | 三星电子株式会社 | 降低误纠概率的纠错电路和方法和包括该电路的存储设备 |
-
2009
- 2009-06-01 CN CN 200910302821 patent/CN101794623B/zh active Active
-
2011
- 2011-01-14 HK HK11100416.3A patent/HK1146328A1/xx unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499532A (zh) * | 2002-10-28 | 2004-05-26 | 非易失性存储器系统内纠错码的混合实现 | |
CN101211667A (zh) * | 2006-12-29 | 2008-07-02 | 三星电子株式会社 | 降低误纠概率的纠错电路和方法和包括该电路的存储设备 |
CN101067972A (zh) * | 2007-04-23 | 2007-11-07 | 北京芯技佳易微电子科技有限公司 | 一种存储器检错纠错编码电路及利用其读写数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
HK1146328A1 (en) | 2011-05-20 |
CN101794623A (zh) | 2010-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101794623B (zh) | 存储设备的纠错装置及方法 | |
US9569129B2 (en) | Controller to manage NAND memories | |
US4672537A (en) | Data error detection and device controller failure detection in an input/output system | |
JP2001249854A (ja) | メモリ設計のための共有式誤り訂正 | |
US20030140300A1 (en) | (146,130) error correction code utilizing address information | |
WO2007136447A2 (en) | Non-volatile memory error correction system and method | |
CN1106560A (zh) | 容错存储器系统 | |
JPH03198135A (ja) | 障害余裕性メモリ・システム及び障害余裕性メモリ・システムの作動方法 | |
CN114286989B (zh) | 一种固态硬盘混合读写的实现方法以及装置 | |
EP0242595B1 (en) | Error detection using variable field parity checking | |
US9252810B2 (en) | Memory system and method of controlling memory system | |
US20230236934A1 (en) | Instant write scheme with dram submodules | |
JP2011242884A (ja) | メモリシステム及びそのデータ転送方法 | |
US11106533B2 (en) | Memory systems and writing methods of the memory systems | |
US20240330109A1 (en) | Storage class memory, data processing method, and processor system | |
CN115729746A (zh) | 一种基于crc和ecc存储数据保护方法 | |
US20160147598A1 (en) | Operating a memory unit | |
CN115827308A (zh) | 一种固态硬盘数据纠错方法及一种固态硬盘 | |
CN111796774B (zh) | 存储器控制方法、存储器存储装置及存储器控制器 | |
CN111680000B (zh) | 现场可编程逻辑门阵列的配置系统和方法 | |
US11030061B2 (en) | Single and double chip spare | |
US20180276068A1 (en) | Error correction code in memory | |
CN117632579B (zh) | 存储器控制方法和存储器存储装置 | |
CN101996685B (zh) | 存储器管理数据的差错控制方法及差错控制器 | |
US11604586B2 (en) | Data protection method, with disk array tags, memory storage device and memory control circuit unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1146328 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1146328 Country of ref document: HK |