闪存错误控制电路及其方法与流程

文档序号:11690981阅读:210来源:国知局
闪存错误控制电路及其方法与流程

本发明涉及一种闪存错误控制电路及其方法,尤其是涉及一种应用多核心做解码平行化计算与应用数据再利用概念的闪存错误控制电路及其方法。



背景技术:

闪存随着覆写次数的增加,位错误率会上升,因此需要有错误更正解码的技术来更正数据的错误。错误更正的技术一般分为硬式解码(hard-decisiondecode)与软式解码(soft-decisiondecode)。硬式解码单纯利用数据所对应的错误更正码来进行错误检查与更正。而软式解码更利用了数据的错误率信息来对数据内容进行适应性修正,再以错误更正码来进行错误检查与更正。

硬式解码的好处是快速、算法简单,然而硬式解码的错误更正能力极为有限,以1024字节的数据搭配80字节检查码的bch码为例,仅能提供最多45位的错误更正能力。相对地,软式解码的好处是具有相对于硬式解码而言更高的错误更正能力,然而软式解码的算法复杂,且所花费的时间远长于硬式解码。

因此,如何提供一个兼顾效率与错误更正能力的错误更正技术,是个有待克服的课题。



技术实现要素:

本发明所要解决的技术问题在于,针对现有技术的不足提供一种闪存数据的错误修正方法与实作此方法的闪存错误控制电路。

本发明所要解决的技术问题是通过如下技术方案实现的:

依据本发明一实施例的闪存数据的错误修正方法,包括:读取一储存数据与对应该储存数据的一检查码。以储存数据与检查码决定第一待解码信息。以一第一算法对第一待解码信息进行错误修正,以产生一输出数据。判断以该第一算法执行的错误修正是否成功。当该第一算法执行的错误修正成功,输出该已解码数据。当错误修正不成功,依据一错误率信息,以一第二算法修正该第一待解码信息以得到一第二待解码信息,并对该第二待解码信息进行错误修正,以产生该输出数据。

依据本发明一实施例的闪存控制电路,第一算法与第二算法所使用的错误更正码可为bch码或rs码。

依据本发明一实施例的闪存错误控制电路,包括主储存媒介与多个处理单元。每个处理单元包括高速缓存与多个处理核心。每个处理核心均电性连接该主储存媒介与该高速缓存,用来从该主储存媒介取得一待解码信息,并执行一第一算法依据该待解码信息,并行计算该待解码信息的所有特征值,将多个所述特征值储存于高速缓存中,再执行一第一算法依据多个所述特征值计算关于该待解码信息的一错误位置多项式,将该错误位置多项式的多个系数储存于该高速缓存中,以该错误位置多项式的多个所述系数用秦式搜寻法(chiensearch)以对该待解码信息进行解码。

换句话说,本发明提供一种闪存数据的错误修正方法,包括:从一闪存读取一储存数据与对应该储存数据的一检查码;依据该储存数据与该检查码,取得对应的多笔第一待解码信息;以及运行一软件以执行下列步骤:以一第一算法,平行地对多笔所述第一待解码信息进行错误修正,以产生多笔输出数据;判断多笔输出数据以该第一算法执行的错误修正是否成功;当任一第一待解码信息以该第一算法执行的错误修正成功,输出该输出数据;以及当任一第一待解码信息错误修正不成功,依据一错误率信息,以一第二算法修正该第一待解码信息以得到一第二待解码信息,并对该第二待解码信息进行错误修正,以产生该输出数据。

优选的,于以该第一算法,平行地对多笔所述第一待解码信息进行错误修正,以产生多笔输出数据的步骤中,对每一该第一待解码信息,执行的步骤包括:计算关于该第一待解码信息的所有特征值;依据多个所述特征值对该第一待解码信息进行一关键方程式运算;以及对执行该关键方程式的结果执行一秦氏搜寻法以判断是否产生该输出数据。

优选的,于以该第二算法对该第二待解码信息进行错误修正的步骤中,重复使用多个所述特征值。

优选的,所述的方法更包括:判断以该第二算法执行的错误修正是否成功;当该第二算法执行的错误修正成功,输出该输出数据;以及当错误修正不成功,依据该错误率信息,以一第三算法修正该第一待解码信息以得到一第三待解码信息,并对该第三待解码信息进行错误修正,以产生该输出数据。

优选的,该第三算法的复杂度高于该第二算法的复杂度。

优选的,该错误率信息从该闪存取得。

优选的,当错误修正不成功时,所述的方法更包括传送一错误信息报告给该闪存控制器,使该闪存控制器依据该错误信息报告对储存该储存数据的区块进行配置。

优选的,于以该第一算法,平行地对多笔所述第一待解码信息进行错误修正,以产生多笔输出数据的步骤中,对每一该第一待解码信息执行的步骤包括:计算关于该第一待解码信息的所有特征值;以该第一算法依据多个所述特征值计算关于该第一待解码信息的一错误位置多项式;以及用秦式搜寻法对该第一待解码信息进行解码以得到该输出数据。

优选的,于计算该特征值的步骤中,调用一乘法函数,迭代计算出多次方场元素;其中于错误位置多项式的步骤中,调用该乘法函数去计算任意两个场元素的乘法;其中于秦式搜寻法的步骤中,调用该乘法函数,迭代计算出多次方场元素;解码中所有步骤的有限场乘法使用一宏乘法函数进行计算,而非使用查表方式。

优选的,于以该第一算法,平行地对多笔所述第一待解码信息进行错误修正,以产生多笔输出数据的步骤中,以多个处理单元对多笔第一待解码信息平行地执行该第一算法,以对多笔所述第一待解码信息进行错误修正。

本发明还提供一种闪存错误控制电路,包括:一主储存媒介;以及多个处理单元,每一该处理单元包括:一高速缓存;以及多个处理核心,电性连接该主储存媒介与该高速缓存,用来从该主储存媒介取得一待解码信息,并运行一软件程序以执行下列步骤:计算关于该待解码信息的所有特征值,将多个所述特征值储存于该高速缓存中;执行一第一算法依据该高速缓存中的多个所述特征值计算关于该待解码信息的一错误位置多项式,将该错误位置多项式的多个系数储存于该高速缓存中;以及以该错误位置多项式的多个所述系数用秦式搜寻法以对该待解码信息进行解码。

优选的,每一该处理单元的处理核心调用一宏乘法函数去进行场元素的乘法。

优选的,每一该处理单元的所有处理核心更判断对该待解码信息的解码是否成功,当解码失败时,处理核心更依据一错误率信息修正该待解码信息以得到一第二待解码信息,并执行一第二算法依据该高速缓存中的多个所述特征值计算关于该第二待解码信息的一第一多项式,将该第一多项式的多个系数储存于该高速缓存中,以该第一多项式的多个所述系数用秦式搜寻法以对该待解码信息进行解码。

优选的,该主储存媒介储存有从一闪存取得的多笔待解码信息。

优选的,当该闪存错误控制电路运行时,多个所述处理单元的每一处理单元分别平行处理多笔所述待解码信息其中之一。

优选的,多个所述处理单元对主储存媒介的数据存取为异步的传输。

依据本发明的方法,在错误检查流程中先单独依据错误更正码执行硬式解码(hard-decisiondecode),在硬式解码无法解码的状况下才进一步利用错误率信息执行软式解码(soft-decisiondecode)。从而在提高解码成功率的基础上,降低了平均解码时间。

而依据本发明的电路,实现了多处理单元多核心平行多任务解码。并减少了对于主储存媒介(globalmemory)的存取次数,从而降低了处理单元等待主储存媒介回传数据的时间,提高了处理的效率。多个处理单元可以同时平行处理多个待解码信息。单一个处理单元也包含多个处理核心,可以平行处理解码运算。

以上的关于本公开内容的说明及以下的实施方式的说明用来示范与解释本发明的精神与原理,并且提供本发明的专利申请范围更进一步的解释。

附图说明

图1a为依据本发明一实施例的闪存错误控制电路架构示意图;

图1b为依据本发明一实施例的闪存错误控制电路运作示意图;

图2为依据本发明一实施例的闪存数据的错误修正方法流程图。

【附图标记说明】

1000闪存错误控制电路

1100~1800处理单元

1110高速缓存

1120~1190处理核心

cw1~cwn待解码信息

a1~a2t场元素

s1~s2t特征值

sr1~srn搜寻结果

f0~ft错误位置多项式系数

mem主储存媒介

s110~s140、s210~s250步骤

具体实施方式

以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使本领域技术人员了解本发明的技术内容并加以实施,且根据本说明书所公开的内容、保护范围及附图,本领域技术人员可轻易地理解本发明相关的目的及优点。以下的实施例为进一步详细说明本发明的观点,并非以任何观点限制本发明的保护范围。

请参照图1a,其为依据本发明一实施例的闪存错误控制电路架构示意图。如图1a所示,依据本发明一实施例的闪存错误控制电路1000,包括主储存媒介mem与多个处理单元1100至1800。每个处理单元包括高速缓存与处理核心。以处理单元1100为例,处理单元1100具有高速缓存1110与多个处理核心1120至1190。处理核心1120至1190均电性连接主储存媒介mem与高速缓存1110。以下以处理单元1100的处理流程为例,其他的处理单元与处理单元1100以相同或相似的流程,平行地对所取得的数据进行处理,因此不再赘述。

当闪存的数据与对应的检查码被撷取之后,数据与检查码被以码字(codeword)的形式储存在主储存媒介mem。具体来说,主储存媒介mem中储存有多个码字(后称第一待解码信息)。于本发明中的主储存媒介mem例如是挥发性储存媒介或是非挥发性储存媒介,本发明不加以限制。

处理单元1100的处理核心1120至1190用来从主储存媒介mem取得一笔第一待解码信息。当取得第一待解码信息后,处理核心1120至1190以第一线程分别计算关于第一待解码信息的所有特征值其中的一部份,并将所有特征值都储存于高速缓存1110。接着处理核心1120至1190以第二线程执行第一算法依据储存在高速缓存1110中的特征值决定关于第一待解码信息的错误位置多项式,并将错误位置多项式的多个系数再次储存于高速缓存1110。接着处理核心1120至1190以第三线程用秦式搜寻法(chiensearch)检查错误位置多项式以对第一待解码信息进行解码。解码成功后,处理核心1120至1190将关于第一待解码信息的解码结果回存至主储存媒介mem,处理单元1100会再由主储存媒介mem取得下一笔第一待解码信息进行处理。

具体来说,在解码的过程中,处理单元1100的处理核心1120至1190仅一开始对主储存媒介mem要求第一待解码信息与多个有限场元素(finitefieldelements,ffe),并在解码成功后,将解码结果储存到主储存媒介mem。因此八个处理单元针对八笔第一待解码信息,一共只对主储存媒介mem进行了16次的数据收发。在解码的过程中,处理核心1120至1190仅仅对高速缓存1110进行数据存取。借此,得以实现多核心多处理单元平行地对闪存的数据进行错误检查与更正的技术效果。此外,各处理单元对于主储存媒介mem的存取为异步的存取。具体来说,也就是每个处理单元可以个别依照需求来对主储存媒介mem进行存取。

于一实施例中,在计算特征值时,处理核心1120首先由主储存媒介mem取得一个基本场元素a,处理核心1130由主储存媒介mem取得二次方场元素a2…处理核心1190由主储存媒介mem取得八次方场元素a8。接着处理核心1120调用一个宏乘法函数,产生一个二次方场元素a2,依序迭代计算得到一次方基本场元素a乃至于n-1次方场元素an-1,依据这些场元素,处理核心1120可以计算出待解码信息的一个特征值。同理,处理核心1130利用a2可以迭代出二次方场元素a2乃至2(n-1)次方场元素a2(n-1),依据这些场元素,处理核心1130可以计算出另一个特征值,依此类推,各个处理核心都进行相应的运算。并且所有的特征值都存在高速缓存1110中。并且依据这些特征值,处理核心1120至1190计算错误位置多项式。因此,相较于现有以查表方式得到特征值的方式,本实施例提出的方法不用占用大量的内存空间,而可以用处理核心1120至1190搭配高速缓存1110而完成。

具体来说,请参照图1b,其为依据本发明一实施例的闪存错误控制电路运作示意图。如图1b所示,多笔待解码信息cw1至cwn储存在主储存媒介mem中。处理单元1100的处理核心1120将待解码信息cw1至cwk依序加载至高速缓存1110(步骤110),当一笔待解码信息cwi完成错误修正才会加载下一笔信息,以及节省高速缓存的空间。每个处理核心会利用数个场元素各计算出一部份的特征值,并将特征植写入高速缓存1110(步骤120)。处理核心1120至1190运行第一线程产生特征值s1,s2,…,s2t。接着八个处理核心一起运行第二线程,依照所得到的特征值来决定错误位置多项式,并将各次系数(f0,f1,...,ft)写入高速缓存1110(步骤130)。处理核心1120至1190再一起运行第三线程来以秦式搜寻法的搜寻结果sr1至srn来决定解码是否成功(步骤140)。当解码成功则将解得的码字写回主储存媒介mem。具体来说,第一线程至第三线程,均为同一软件程序(kernel)的不同功能函数。而任一处理核心1120至1190例如为多核心中央处理器的一个核心(core),或是多核心图像处理器的一个核心(core)。因此第一处理单元1100解码时,不再需要持续的与主储存媒介mem沟通,从而得以实现真正的实时(real-time)分布式解码。

此外,处理核心1120至1190更检查解码是否成功。具体来说,在以秦式搜寻法完成整个待解码信息的错误搜寻后,处理核心1120至1190将错误位个数与错误位置多项式的最高次项进行比对,以决定解码是否成功。当解码成功时如上述将解码结果回存至主储存媒介mem。另一方面,当解码失败时,表示当前待解码信息无法解码,也就是说以第一算法(硬式解码)无法完全地更正待解码信息中的错误位数据。于一实施例中,当错误检查不成功时,表示闪存有部分储存区块的位错误率过高,因此处理单元1100传送错误报告给闪存控制器。从而使闪存控制器依据错误报告针对相应的区块进行配置与管理。

此时,处理单元1100改采用第二算法来进行解码。具体来说,处理单元1100更向主储存媒介mem取得关于待解码信息的错误率信息。处理核心1120至1190依照错误率信息,将高速缓存1110中储存的第一待解码信息修正为第二待解码信息。具体来说,将第一待解码信息中,错误率高的一个或多个位的位值转换。若原本的位值为0,则转换为1,若原本的位值为1,则转换为0。换句话说,在第二算法中,是默认第一待解码信息中有部分位的位值是错的,先将之进行位值转换后,再开始进行前述解码的流程。其流程于此不再赘述。

于一实施例中,处理单元1100执行第二算法时不再重新决定特征值。于此实施例中,由于处理核心1120至1190执行第一算法时决定的特征值已经储存在高速缓存1110中,因此第二算法重复利用储存在高速缓存1110中的多个特征值。利用多个所述特征值去计算出关于第二待解码信息的特征值。如此可以节省许多重复的计算。

综上所述,依据本发明一实施例的闪存数据的错误修正方法请参照图2,其为依据本发明一实施例的闪存数据的错误修正方法流程图。如步骤210所示,闪存错误控制电路1000读取储存数据与对应储存数据的检查码。如步骤220所示,闪存错误控制电路1000以第一算法,使用多核心处理单元对储存数据及对应该数据的检查码进行平行化解码,以产生输出数据。具体来说,此步骤就是执行硬式解码(hard-decisiondecode)。如步骤230所示,闪存错误控制电路1000判断以第一算法执行的错误修正是否成功。当错误修正成功时,如步骤240所示,闪存错误控制电路1000将解码结果输出为输出数据。当错误修正失败时,如步骤250所示,闪存错误控制电路1000依据错误率信息,以第二算法修正储存数据及检查码以得到第二待解码信息,并对第二待解码信息进行错误修正,以产生更正结果作为输出数据。换句话说,当硬式解码失败时,则进行第二算法,也就是软式解码(soft-decisiondecode)。

于一实施例中,当闪存控制检查电路1000以第二算法产生解码结果时,闪存错误控制电路1000会再次的判断第二算法执行的错误修正是否成功。如果第二算法执行的错误修正也失败,则闪存错误控制电路1000换用复杂度比第二算法更高、错误更正能力比第二算法更好的第三算法来进行软式解码。具体来说,若闪存错误控制电路1000存有多种软式解码的算法,则可以一一使用,直到成功地完成正确解码,或是直到所有算法都无法成功修正错误信息。

综上所述,依据本发明的闪存错误控制电路及其方法,先以硬式解码的方式对闪存的数据进行错误修正。当硬式解码失败才以软式解码进行错误修正。因此当数据的位错误率低的时候,本发明所提出的电路与方法具有相当于硬式解码的效率。而当数据的位错误率高的时候,所述电路与方法具有相当于软式解码的错误更正能力。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1