CN102236585B - 提升错误更正能力的方法以及相关的记忆装置及其控制器 - Google Patents
提升错误更正能力的方法以及相关的记忆装置及其控制器 Download PDFInfo
- Publication number
- CN102236585B CN102236585B CN201010151517.2A CN201010151517A CN102236585B CN 102236585 B CN102236585 B CN 102236585B CN 201010151517 A CN201010151517 A CN 201010151517A CN 102236585 B CN102236585 B CN 102236585B
- Authority
- CN
- China
- Prior art keywords
- parity check
- check code
- row
- code
- error correction
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及一种提升错误更正能力的方法以及相关的记忆装置及其控制器,该方法包含有:针对一数据位元阵列的复数列,分别计算复数个第一奇偶校验码;针对该数据位元阵列的复数行所形成的复数组,分别计算复数个第二奇偶校验码,其中该些组中的每一组包含该些行中的两行或更多行,且该些组彼此不重叠;以及进行对应于该些第一、第二奇偶校验码的编/解码。本发明另提供相关的记忆装置及其控制器。本发明不需要增加错误更正码引擎编/解码位数就能提升记忆装置的控制器的错误更正能力,且所实现的错误更正可妥善利用剩余的储存空间,不会造成浪费。因此,本发明在不增加芯片面积及相关成本的状况下就能达到兼顾运作效能与系统资源使用控管的目标。
Description
技术领域
本发明涉及闪存(Flash Memory)控制芯片的错误更正技术领域,更具体地说,涉及一种不需要增加错误更正码引擎(Error Correction Code Engine,ECC Engine)编/解码位数就能提升一记忆装置的控制器的错误更正能力的方法以及相关的记忆装置及其控制器。
背景技术
近年来由于闪存的技术不断地发展,各种可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡)被广泛地实施于诸多应用中。因此,这些可携式记忆装置中的闪存的存取控制遂成为相当热门的议题。
以常用的NAND型闪存而言,其主要可区分为单阶细胞(Single LevelCell,SLC)与多阶细胞(Multiple Level Cell,MLC)两大类的闪存。单阶细胞闪存中的每个被当作记忆单元的晶体管只有两种电荷值,分别用来表示逻辑值0与逻辑值1。另外,多阶细胞闪存中的每个被当作记忆单元的晶体管的储存能力则被充分利用,采用较高的电压来驱动,以透过不同级别的电压在一个晶体管中记录两组位信息(例如:00、01、11、10);理论上,多阶细胞闪存的记录密度可以达到单阶细胞闪存的记录密度的两倍以上,这对于曾经在发展过程中遇到瓶颈的NAND型闪存的相关产业而言,是非常好的消息。
相较于单阶细胞闪存,由于多阶细胞闪存的价格较便宜,并且在有限的空间里可提供较大的容量,故多阶细胞闪存很快地成为市面上的可携式记忆装置竞相采用的主流。然而,多阶细胞闪存的不稳定性所导致的问题也一一浮现。针对这诸多问题,虽然相关技术中提供了一些解决方式,却总是无法兼顾运作效能与系统资源使用控管。于是,不论采取哪个解决方式,往往会 有对应的副作用。
尤其是,依据相关技术所实现的错误更正通常并未用完闪存的所有的储存空间,其中剩余的储存空间不能用来储存数据,实在相当浪费。请注意,相关技术中未能用完闪存的所有的储存空间的典型原因是,一旦增加错误更正码引擎(Error Correction Code Engine,ECC Engine)编/解码位数,错误更正码引擎的成本会大幅地增加;例如,针对1K数据将编/解码位数由24位提升至36位,会造成错误更正码引擎的芯片面积大增,约增加为1.5倍。因此,需要一种新颖的方法来加强控管闪存的数据存取,以兼顾运作效能与系统资源使用控管。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种提升错误更正能力的方法以及相关的记忆装置及其控制器,以解决上述问题,同时,可妥善利用上述剩余的储存空间。
本发明解决其技术问题所采用的技术方案之一是:构造一种提升错误更正能力的方法,该方法应用于一记忆装置的控制器,该方法不需要增加错误更正码引擎(Error Correction Code Engine,ECC Engine)编/解码位数就能提升该控制器的错误更正能力,该方法包含有:针对一数据位元阵列的复数列,分别计算复数个第一奇偶校验码(Parity Code);针对该数据位元阵列的复数行所形成的复数组,分别计算复数个第二奇偶校验码,其中该些组中的每一组包含该些行中的两行或更多行,且该些组彼此不重叠;以及进行对应于该些第一、第二奇偶校验码的编/解码。
本发明所述的方法,其中针对该数据位元阵列的该些列分别计算该些第一奇偶校验码的步骤另包含有:
针对该些列中的每一列,计算一第一奇偶校验码;
其中针对该数据位元阵列的该些行所形成的该些组分别计算该些第二奇偶校验码的步骤另包含有:
针对该些组中的每一组,计算一第二奇偶校验码。
本发明所述的方法,其中该些组各自的行数彼此相等。
本发明所述的方法,其中每一组的数据位元的数量等于每一列的数据位元的数量。
本发明所述的方法,其中每一列的字节(Byte)的数量等于每一组的行的数量;以及该些列的数量等于该些组的数量。
本发明所述的方法,其中每一列具有1024字节的数据,且该些列的数量等于8;每一组具有该些行中的1024行,且该些组的数量等于8;以及每一第一奇偶校验码具有42字节,且每一第二奇偶校验码具有14字节。
本发明所述的方法,其中该数据位元阵列以及该些第一、第二奇偶校验码储存于该记忆装置中的一闪存(Flash Memory)。
本发明所述的方法,其中进行对应于该些第一、第二奇偶校验码的编/解码的步骤更包含:
当利用该些第一奇偶校验码中的一第一奇偶校验码针对相对应的一列进行解码时,若侦测到该列具有无法更正的错误,则利用该些第二奇偶校验码中的至少一第二奇偶校验码进行解码,以更正该无法更正的错误。
本发明解决其技术问题所采用的技术方案之二是:构造一种记忆装置,其错误更正能力在不需要增加错误更正码引擎编/解码位数的状况下就能提升,该记忆装置包含有:一闪存(Flash Memory),该闪存包含复数个区块;以及一控制器,用来存取(Access)该闪存以及管理该复数个区块。该控制器的错误更正码引擎通过利用该控制器中的微处理器及/或控制逻辑来实施,以及该错误更正码引擎包含有:一第一奇偶校验码计算模块;以及复数个第二奇偶校验码计算模块。该第一奇偶校验码计算模块用来针对一数据位元阵列的复数列,分别计算复数个第一奇偶校验码。另外,该些第二奇偶校验码计算模块用来针对该数据位元阵列的复数行所形成的复数组,分别计算复数个第二奇偶校验码,其中该些组中的每一组包含该些行中的两行或更多行,且该些组彼此不重叠。此外,该错误更正码引擎用来进行对应于该些第一、第二奇偶校验码的编/解码。
本发明所述的记忆装置,其中该第一奇偶校验码计算模块针对该些列中 的每一列,计算一第一奇偶校验码;以及每一第二奇偶校验码计算模块针对该些组中的一组,计算一第二奇偶校验码。
本发明所述的记忆装置,其中该些组各自的行数彼此相等。
本发明所述的记忆装置,其中每一组的数据位元的数量等于每一列的数据位元的数量。
本发明所述的记忆装置,其中每一列的字节(Byte)的数量等于每一组的行的数量;以及该些列的数量等于该些组的数量。
本发明所述的记忆装置,其中每一列具有1024字节的数据,且该些列的数量等于8;每一组具有该些行中的1024行,且该些组的数量等于8;以及每一第一奇偶校验码具有42字节,且每一第二奇偶校验码具有14字节。
本发明所述的记忆装置,其中在该错误更正码引擎用来进行对应于该些第一、第二奇偶校验码的编码的状况下,该控制器将该数据位元阵列以及该些第一、第二奇偶校验码储存于该闪存。
本发明所述的记忆装置,其中在该错误更正码引擎用来进行对应于该些第一、第二奇偶校验码的解码的状况下,该数据位元阵列读取自该闪存,并且该错误更正码引擎依据透过计算所取得的该些第一、第二奇偶校验码以及读取自该闪存的第一、第二奇偶校验码进行错误侦测或错误更正。
本发明所述的记忆装置,其中当利用该些第一奇偶校验码中的一第一奇偶校验码针对相对应的一列进行解码时,若侦测到该列具有无法更正的错误,则该错误更正码引擎利用该些第二奇偶校验码中的至少一第二奇偶校验码进行解码,以更正该无法更正的错误。
本发明解决其技术问题所采用的技术方案之三是:构造一种记忆装置的控制器,其错误更正能力在不需要增加错误更正码引擎编/解码位数的状况下就能提升,该控制器用来存取该记忆装置中的一闪存,该闪存包含复数个区块,该控制器包含有:一只读存储器(Read Only Memory,ROM),用来储存一程序代码;以及一微处理器,用来执行该程序代码以控制对该闪存的存取以及管理该复数个区块。该控制器的错误更正码引擎通过利用该控制器中的控制逻辑及/或执行该程序代码的该微处理器来实施,以及该错误更正码 引擎包含有:一第一奇偶校验码计算模块;以及复数个第二奇偶校验码计算模块。该第一奇偶校验码计算模块用来针对一数据位元阵列的复数列,分别计算复数个第一奇偶校验码。另外,该些第二奇偶校验码计算模块用来针对该数据位元阵列的复数行所形成的复数组,分别计算复数个第二奇偶校验码,其中该些组中的每一组包含该些行中的两行或更多行,且该些组彼此不重叠。此外,该错误更正码引擎用来进行对应于该些第一、第二奇偶校验码的编/解码。
本发明所述的控制器,其中该第一奇偶校验码计算模块针对该些列中的每一列,计算一第一奇偶校验码;以及每一第二奇偶校验码计算模块针对该些组中的一组,计算一第二奇偶校验码。
本发明所述的控制器,其中该些组各自的行数彼此相等。
本发明所述的控制器,其中每一组的数据位元的数量等于每一列的数据位元的数量。
本发明所述的控制器,其中每一列的字节(Byte)的数量等于每一组的行的数量;以及该些列的数量等于该些组的数量。
本发明所述的控制器,其中每一列具有1024字节的数据,且该些列的数量等于8;每一组具有该些行中的1024行,且该些组的数量等于8;以及每一第一奇偶校验码具有42字节,且每一第二奇偶校验码具有14字节。
本发明所述的控制器,其中在该错误更正码引擎用来进行对应于该些第一、第二奇偶校验码的编码的状况下,该控制器将该数据位元阵列以及该些第一、第二奇偶校验码储存于该闪存。
本发明所述的控制器,其中在该错误更正码引擎用来进行对应于该些第一、第二奇偶校验码的解码的状况下,该数据位元阵列读取自该闪存,并且该错误更正码引擎依据透过计算所取得的该些第一、第二奇偶校验码以及读取自该闪存的第一、第二奇偶校验码进行错误侦测或错误更正。
本发明所述的控制器,其中当利用该些第一奇偶校验码中的一第一奇偶校验码针对相对应的一列进行解码时,若侦测到该列具有无法更正的错误,则该错误更正码引擎利用该些第二奇偶校验码中的至少一第二奇偶校验码进 行解码,以更正该无法更正的错误。
实施本发明的升错误更正能力的方法以及相关的记忆装置及其控制器,具有以下有益效果:不需要增加错误更正码引擎编/解码位数就能提升记忆装置的控制器的错误更正能力,且所实现的错误更正可妥善利用剩余的储存空间,不会造成浪费。因此,本发明在不增加芯片面积及相关成本的状况下就能达到兼顾运作效能与系统资源使用控管的目标。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为依据本发明一第一实施例的一种记忆装置的示意图;
图2为图1所示的存储器控制器中的错误更正码引擎(Error CorrectionCode Engine,ECC Engine)的功能方块图;
图3为依据本发明一实施例的一种提升错误更正能力的方法的流程图;
图4为图3所示的方法所涉及的数据位元阵列以及第一、第二奇偶校验码(Parity Code)的示意图;
图5绘示于一实施例中图4所示的第二奇偶校验码如何对应于其所属的组中的数据位元的排列顺序,其中本实施例为图4所示实施例的一特例;
图6绘示另一实施例中图4所示的第二奇偶校验码如何对应于其所属的组中的数据位元的排列顺序,其中本实施例为图5所示实施例的变化例;
图7绘示图2所示的第一奇偶校验码计算模块于图5所示实施例中的实施细节;
图8绘示图2所示的第二奇偶校验码计算模块于图5所示实施例中的实施细节;
图9绘示图2所示的错误更正码引擎于图3所示实施例中关于解码的实施细节;
图10绘示图3所示的方法于一实施例中关于解码的实施细节。
【主要组件符号说明】
100 | 记忆装置 |
110 | 存储器控制器 |
112 | 微处理器 |
112C | 程序代码 |
112M | 只读存储器 |
114 | 控制逻辑 |
116 | 缓冲存储器 |
118 | 接口逻辑 |
120 | 闪存 |
200 | 错误更正码引擎 |
210 | 第一奇偶校验码计算模块 |
220-1,220-2,...,220-N | 第二奇偶校验码计算模块 |
230,240 | 多工选择单元 |
250 | 错误侦测/错误更正模块 |
510-1,510-2,...,510-1024 | 数据位元的排列顺序 |
{610-1,620-1}, {610-2,620-2},..., {610-512,620-512} | 数据位元的排列顺序 |
910 | 提升错误更正能力的方法 |
912,914,916,922,924,926, 930,932,934 | 步骤 |
920 | 工作流程 |
A1(1),A1(2),...,A1(336), A2(1),A2(2),...,A2(112) | 算术单元 |
G1(1),G1(2),...,G1(336), G2(1),G2(2),...,G2(112) | 缓存器 |
g1(1),g1(2),...,g1(336), g2(1),g2(2),...,g2(112) | 调整单元 |
P1(1),P1(2),...,P1(M),P1(m) | 第一奇偶校验码 |
P2(1),P2(2),...,P2(N),P2(n) | 第二奇偶校验码 |
R(1),R(2),...,R(M),R(m) | 数据位元阵列的各列 |
S(1),S(2),...,S(N),S(n) | 数据位元阵列的各行所形成的各组 |
W1(1),W1(2),W1(3), W2(1),W2(2),W2(3) | 切换单元 |
具体实施方式
请参考图1,图1为依据本发明一第一实施例的一种记忆装置100的示意图,其中本实施例的记忆装置100尤其为可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡)。记忆装置100包含有:一闪存(FlashMemory)120;以及一控制器,用来存取(Access)闪存120,其中该控制器例如一存储器控制器110,并且记忆装置100(尤其是该控制器诸如存储器控制器110)的错误更正能力在不需要增加错误更正码引擎(Error CorrectionCode Engine,ECC Engine)编/解码位数的状况下就能提升。依据本实施例,存储器控制器110包含一微处理器112、一只读存储器(Read Only Memory,ROM)112M、一控制逻辑114、一缓冲存储器116、与一接口逻辑118。只读存储器用来储存一程序代码112C,而微处理器112则用来执行程序代码112C以控制对闪存120的存取。请注意,程序代码112C亦得储存在缓冲存储器116或任何形式的存储器内。
于典型状况下,闪存120包含复数个区块(Block),而该控制器(例如:透过微处理器112执行程序代码112C的存储器控制器110)对闪存120进行抹除数据的运作以区块为单位来进行抹除。另外,一区块可记录特定数量的页(Page),其中该控制器对闪存120进行写入数据的运作以页为单位来进行写入。
实作上,透过微处理器112执行程序代码112C的存储器控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存120的存取运作(尤其是对至少一区块或至少一页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置 (Host Device)沟通。
依据本实施例,记忆装置100为一种不需要增加错误更正码引擎(ErrorCorrection Code Engine,ECC Engine)编/解码位数就能提升错误更正能力的记忆装置。实作上,存储器控制器110的错误更正码引擎可通过利用控制逻辑114及/或执行程序代码112C的微处理器112来实施。例如:该错误更正码引擎为控制逻辑114的一部分,且由控制逻辑114中的逻辑电路所构成。又例如:程序代码112C包含某些程序模块/单元,且该错误更正码引擎通过利用执行该些程序模块/单元的微处理器112来实施。又例如:该错误更正码引擎通过利用控制逻辑114及执行程序代码112C的微处理器112来实施,其中程序代码112C包含某些程序模块/单元,且该错误更正码引擎的一部分通过利用执行该些程序模块/单元的微处理器112来实施,而该错误更正码引擎的另一部分由控制逻辑114中的逻辑电路所构成。
图2为上述的错误更正码引擎的功能方块图。如图2所示,错误更正码引擎200包含有:一第一奇偶校验码(Parity Code)计算模块210;N个第二奇偶校验码计算模块220-1、220-2、...、与220-N,其中N代表大于1的正整数;以及多工选择单元230与240。第一奇偶校验码计算模块210针对一数据位元阵列的复数列(例如M列),分别计算M个第一奇偶校验码P1(1)、P1(2)、...、与P1(M),其中M代表大于1的正整数。另外,第二奇偶校验码计算模块220-1、220-2、...、与220-N用来针对该数据位元阵列的复数行所形成的复数组(例如N组),分别计算N个第二奇偶校验码P2(1)、P2(2)、...、与P2(N),其中该些组中的每一组包含该些行中的两行或更多行,且该些组彼此不重叠(例如X行数据形成N组,其中X>2N)。此外,多工选择单元230用来选择其一输入作为输出,且多工选择单元240用来选择其一输入作为输出,而错误更正码引擎200则用来进行对应于该些第一、第二奇偶校验码的编/解码。相关细节请参考图3与图4进一步说明。
图3为依据本发明一实施例的一种提升错误更正能力的方法910的流程图,而图4则为图3所示的方法910所涉及的数据位元阵列以及第一、第二奇偶校验码的示意图,其可表示将数据储存于闪存120的数据位元阵列。该 方法可应用于图1所示的记忆装置100,尤其是上述的控制器(例如:透过微处理器112执行程序代码112C的存储器控制器110),其中该方法不需要增加错误更正码引擎编/解码位数就能提升该控制器的错误更正能力。另外,该方法可通过利用图1所示的记忆装置100来实施,尤其是通过利用上述的控制器来实施。该方法说明如下:
于步骤912中,第一奇偶校验码计算模块210针对一数据位元阵列的复数列(例如该M列),分别计算M个第一奇偶校验码P1(1)、P1(2)、...、与P1(M)。尤其是,第一奇偶校验码计算模块210针对该M列中的每一列R(m),计算一第一奇偶校验码P1(m),其中m由1变化至M。
于步骤914中,第二奇偶校验码计算模块220-1、220-2、...、与220-N用来针对该数据位元阵列的复数行所形成的复数组(例如该N组),分别计算N个第二奇偶校验码P2(1)、P2(2)、...、与P2(N),其中该些组中的每一组包含该些行中的两行或更多行,且该些组彼此不重叠。尤其是,每一第二奇偶校验码计算模块220-n对该些组中的一组S(n),计算一第二奇偶校验码P2(n),其中n由1变化至N。请注意,由于每一组包含该些行中的两行或更多行,而非单一行,故通过在存储器控制器110设计的初预先决定该N个第二奇偶校验码P2(1)、P2(2)、...、与P2(N)各自对应多少行,本发明就可以妥善利用上述剩余的储存空间,甚至将上述剩余的储存空间用尽。另外,本发明提供相当大的弹性,让每一组包含该些行中的两行或更多行,故本发明在不需要增加错误更正码引擎编/解码位数的状况下就能提升记忆装置的控制器的错误更正能力。
于步骤916中,错误更正码引擎200用来进行对应于该些第一、第二奇偶校验码的编/解码。依据本实施例,该数据位元阵列以及该些第一、第二奇偶校验码储存于闪存120。例如:在错误更正码引擎200用来进行对应于该些第一、第二奇偶校验码的编码的状况下(于将数据写入闪存120时),存储器控制器110将该数据位元阵列以及该些第一、第二奇偶校验码储存于闪存120。又例如:在错误更正码引擎200用来进行对应于该些第一、第二奇偶校验码的解码的状况下(于将数据读出闪存120时),该数据位元阵列读取 自闪存120,并且错误更正码引擎200依据透过计算(即步骤912与914的计算)所取得的该些第一、第二奇偶校验码以及读取自闪存120的第一、第二奇偶校验码(即储存于闪存120的版本)进行错误侦测或错误更正。
依据本实施例,该些组S(1)、S(2)、...、与S(N)各自的行数可彼此相等。这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的某些变化例,该些组S(1)、S(2)、...、与S(N)各自的行数可不尽相同或彼此不相等。
另外,本实施例中的每一组S(n)的数据位元的数量等于每一列R(m)的数据位元的数量。这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的某些变化例,每一组S(n)的数据位元的数量不必然等于每一列R(m)的数据位元的数量。
此外,本实施例中的每一列R(m)的字节(Byte)的数量等于每一组S(n)的行的数量。尤其是,该些列R(1)、R(2)、...、与R(M)的数量等于该些组S(1)、S(2)、...、与S(N)的数量;即M=N。这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的某些变化例,每一列R(m)的字节的数量不必然等于每一组S(n)的行的数量。依据本实施例的某些变化例,该些列R(1)、R(2)、...、与R(M)的数量不必然等于该些组S(1)、S(2)、...、与S(N)的数量;即M=N不一定成立。
依据一实施例,尤其是图4所示实施例的一特例,每一列R(m)具有1024字节的数据,且该些列R(1)、R(2)、...、与R(M)的数量等于8(即M=8)。另外,每一组S(n)具有该些行中的1024行,且该些组S(1)、S(2)、...、与S(N)的数量等于8(即N=8)。此外,每一第一奇偶校验码P1(m)具有42字节,且每一第二奇偶校验码P2(n)具有14字节。
实作上,第二奇偶校验码P2(n)可对应于其所属的组S(n)中的数据位元的某个或某些部分的排列顺序。例如:第二奇偶校验码P2(n)可对应于图5左半部所示的排列顺序510-1、510-2、...、与510-1024,其中第二奇偶校验码P2(n)在”将该组S(n)的数据位元视同按照排列顺序510-1、510-2、...、与510-1024排成同一行”的状况下(如图5右半部所示)所计算而得。这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的一变化例,第二奇偶校验 码P2(n)可对应于图6左半部所示的排列顺序{610-1,620-1}、{610-2,620-2}、...、与{610-512,620-512},其中第二奇偶校验码P2(n)在“将该组S(n)的数据位元视同按照排列顺序{610-1,620-1}、{610-2,620-2}、...、与{610-512,620-512}排成同一行”的状况下(如图6右半部所示)所计算而得。依据本实施例的其它变化例,该些排列顺序可加以变化。例如:该些排列顺序可变化为水平方向;又例如:该些排列顺序可变化为通过该组S(n)中的全部数据位元的任意路径的顺序。
请参阅图7与图8,图7绘示图2所示的第一奇偶校验码计算模块210于图5所示实施例中的实施细节,而图8则绘示图2所示的第二奇偶校验码计算模块220-n(n由1变化至N)于图5所示实施例中的实施细节。请注意,图7与图8所示的实施细节亦可应用于图5所示实施例的各个变化例,例如图6所示实施例或上述针对该些排列顺序予以变化的变化例。另外,于步骤916中,不论在错误更正码引擎200用来进行编码或解码的状况下,图7与图8所示的实施细节均可应用于图2所示的错误更正码引擎200。
在此,第一奇偶校验码计算模块210具有:至少336个缓存器G1(1)、G1(2)、...、与G1(336)(均简称为“G”),分别用来暂存信息;至少336个调整单元g1(1)、g1(2)、...、与g1(336)(均简称为“g”),分别用来依据各自的输入参数调整其所在路径的信息;至少336个算术(Arithmetic)单元A1(1)、A1(2)、...、与A1(336)(均标示为“+”),分别用来进行减法或加法运算;以及至少3个切换单元W1(1)、W1(2)、与W1(3)(均简称为“W”),分别用来切换计算路径或输入/输出路径。各个组件当中凡有输入标示为“-”者(例如算术单元A1(1)与A1(2)以及切换单元W1(3)),表示该输入需改变正负号。
另外,每一第二奇偶校验码计算模块220-n具有:至少112个缓存器G2(1)、G2(2)、...、与G2(112)(均简称为“G”),分别用来暂存信息;至少112个调整单元g2(1)、g2(2)、...、与g2(112)(均简称为“g”),分别用来依据各自的输入参数调整其所在路径的信息;至少112个算术单元A2(1)、A2(2)、...、与A2(112)(均标示为“+”),分别用来进行减法或加法运算;以及至少3个切换单元W2(1)、W2(2)、与W2(3)(均简称为“W”),分别用来切换计算路径或 输入/输出路径。各个组件当中凡有输入标示为“-”者(例如算术单元A2(1)与A2(2)以及切换单元W2(3)),表示该输入需改变正负号。输入第二奇偶校验码计算模块220-n的数据位元可依第5、6图所示的顺序或其它顺序进行输入。
图9绘示图2所示的错误更正码引擎200于图3所示实施例中关于解码(步骤916)的实施细节。如图9所示,错误更正码引擎200另包含:一错误侦测/错误更正模块250,用来依据透过计算所取得的该些第一、第二奇偶校验码(例如P1(m)与P2(n))以及读取自闪存120的第一、第二奇偶校验码(例如P’1(m)与P’2(n))进行错误侦测或错误更正。
实作上,错误侦测/错误更正模块250对透过计算所取得的该些第一、第二奇偶校验码(例如P1(m)与P2(n))以及读取自闪存120的第一、第二奇偶校验码(例如P’1(m)与P’2(n))分别进行互斥或(Exclusive-or,XOR)运算,以进行错误侦测。尤其是,错误侦测/错误更正模块250对第一奇偶校验码P1(m)的各个位与第一奇偶校验码P’1(m)的各个位分别进行互斥或运算,其中m由1变化至M。相仿地,错误侦测/错误更正模块250对第二奇偶校验码P2(n)的各个位与第二奇偶校验码P’2(n)的各个位分别进行互斥或运算,其中n由1变化至N。当互斥或运算的结果全为零时,则错误侦测/错误更正模块250判断读取自闪存120的数据位元阵列没有错误,这表示存储器控制器110可将读取自闪存120的数据位元阵列送出(例如传送至该主装置)以供进一步利用;否则,错误侦测/错误更正模块250进行错误更正,然后存储器控制器110才可将更正后的数据位元阵列送出(例如传送至该主装置)以供进一步利用。
请注意,于本实施例中,图2所示的架构与图9所示的架构之间的切换可利用切换电路(例如一些切换单元W)来实现。另外,为了简明起见,关于解码的其它实施细节于图9所示的架构中并未绘示,其中这些实施细节诸如症状计算器(Syndrome Calculator)、关键方程式求解器(Key Equation Solver,KES)等均为熟习此领域的人士所知悉,故于图9所示的架构中予以省略。
图10绘示图3所示的方法于一实施例中关于解码的实施细节,其中本实 施例为图3所示实施例的一变化例。在该些列R(1)、R(2)、...、与R(M)中的某一(或某些)列有无法更正的错误的状况下,错误更正码引擎200执行图10所示的工作流程920。尤其是,当利用该些第一奇偶校验码中的一第一奇偶校验码针对相对应的一列进行解码时,若侦测到该列具有某一(些)无法更正的错误,则错误更正码引擎200利用该些第二奇偶校验码中的至少一部分(即至少一第二奇偶校验码诸如一个或多个第二奇偶校验码)针对相对应的(各)组进行解码,以更正该(些)无法更正的错误。例如:该列(例如图4的第一列R(1))具有8K数据,且在针对该列进行解码的过程中,错误更正码引擎200针对8K数据能够更正的错误位数的上限为24位。如此,当8K数据当中有26位的错误时,单单利用该第一奇偶校验码针对该列进行解码就不足以更正所有的错误位。然而,图4的第一列R(1)中26个错误位可能分别散布在各组(依垂直方向划分)之中,例如,4个错误位散布在图4的第一列R(1)与第一组S(1)重叠之处,22个错误位散布在图4的第一列R(1)与第二组S(2)重叠之处。此时,错误更正码引擎200可利用该些第二奇偶校验码协助进行错误更正。例如,利用第一组S(1)数据相对应的第二奇偶校验码P2(1)进行更正,如此一来,则可更正散布在图4的第一列R(1)与第一组S(1)重叠之处的4个错误位,使得第一列R(1)错误位数小于24位,再利用该第一奇偶校验码来更正剩下的错误位。在另一实施例中,若利用第一组S(1)数据相对应的第二奇偶校验码P2(1)进行更正之后,仍无法使第一列R(1)错误位数小于或等于24位,则第一组S(1)数据相对应的第二奇偶校验码P2(2)进行更正,以此类推。因此,本发明不需要增加错误更正码引擎编/解码位数,就能通过利用该些第二奇偶校验码中的至少一部分针对相对应的(各)组进行解码,来提升错误更正能力。工作流程920说明如下:
于步骤922中,错误更正码引擎200检查迭代次数(Iteration Number)是否达到上限,其中该上限于存储器控制器110设计之初就预先决定,而迭代次数的初始值可为零(或某一常数)。在一实施例中,迭代次数可代表利用第一/第二奇偶校验码进行更正的次数。当侦测到迭代次数达到上限时,则进入步骤924;否则,进入步骤926。
于步骤924中,错误更正码引擎200回报解码错误。于执行步骤924之后,结束工作流程920。
于步骤926中,错误更正码引擎200利用该些第二奇偶校验码中的至少一部分进行错误更正,例如,错误更正码引擎200进行对应于一组或数组(即该些组S(1)、S(2)、...、与S(N)中的一组或数组)的运算以进行错误更正,尤其是依据该些第二奇偶校验码中的至少一部分进行错误更正。
于步骤930中,错误更正码引擎200检查原本有错误的列是否已完全被更正。当侦测到原本有错误的列已完全被更正时,则结束工作流程920;否则,进入步骤932。
于步骤932中,错误更正码引擎200进行对应于该列(或该些列;即该些列R(1)、R(2)、...、与R(M)中的一列或数列)的运算以进行错误更正,尤其是依据该些第一奇偶校验码中的至少一部分进行错误更正。
于步骤934中,错误更正码引擎200检查原本有错误的列是否仍有无法更正的错误。当侦测到原本有错误的列仍有无法更正的错误时,则重新进入步骤922,其中迭代次数对应地增加;否则,结束工作流程920。
本发明的好处之一是,依据本发明所实现的错误更正可妥善利用上述剩余的储存空间,不会造成浪费。相较于相关技术,本发明不需要增加错误更正码引擎编/解码位数就能提升记忆装置的控制器的错误更正能力。因此,本发明在不增加芯片面积及相关成本的状况下就能达到兼顾运作效能与系统资源使用控管的目标。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (8)
1.一种提升错误更正能力的方法,该方法应用于一记忆装置的控制器,该方法不需要增加错误更正码引擎编/解码位元数就能提升该控制器的错误更正能力,其特征在于,该方法包含有:
针对一数据位元阵列的复数列,分别计算复数个第一奇偶校验码;针对该数据位元阵列的复数行所形成的复数组,分别计算复数个第二奇偶校验码,其中所述复数组中的每一组包含所述复数行中的两行或多行,且所述复数组彼此不重叠;以及
进行对应于所述复数个第一奇偶校验码、所述复数个第二奇偶校验码的编/解码;
其中针对该数据位元阵列的所述复数列分别计算所述复数个第一奇偶校验码的步骤另包含有:
针对所述复数列中的每一列,计算一第一奇偶校验码;
针对该数据位元阵列的所述复数行所形成的复数组分别计算所述复数个第二奇偶校验码的步骤另包含有:
针对所述复数组中的每一组,计算一第二奇偶校验码;
该方法还包含有:
错误更正码引擎通过错误侦测/错误更正模块计算所述复数个第一奇偶校验码、所述复数个第二奇偶校验码,读取闪存的第一奇偶校验码、第二奇偶校验码,将第一奇偶校验码的各个位与读取之闪存的第一奇偶校验码的各个位分别进行互斥或运算,以及将第二奇偶校验码的各个位与读取之闪存的第二奇偶校验码的各个位分别进行互斥或运算;如互斥或运算的结果全为零,则错误侦测/错误更正模块判断读取自闪存的数据位元阵列没有错误,否则,错误侦测/错误更正模块执行错误更正;
错误侦测/错误更正模块执行的错误更正操作包括:
在利用所述复数个第一奇偶校验码中的一第一奇偶校验码针对相对应的一列进行解码时,如该列错误位数超过错误更正码引擎能够更正的错误位数的上限,则利用所述复数个第二奇偶校验码协助进行错误更正,通过所述复数个第二奇偶校验码中的至少一第二奇偶校验码针对相对应的组进行解码,以更正该列的所有错误位。
2.根据权利要求1所述的方法,其特征在于,其中所述复数组各自的行数彼此相等。
3.根据权利要求2所述的方法,其特征在于,其中每一组的数据位元的数量等于每一列的数据位元的数量。
4.根据权利要求3所述的方法,其特征在于,其中每一列的字节的数量等于每一组的行的数量;以及所述复数列的数量等于所述复数组的数量。
5.根据权利要求4所述的方法,其特征在于,其中每一列具有1024字节的数据,且所述复数列的数量等于8;每一组具有所述复数行中的1024行,且所述复数组的数量等于8;以及每一第一奇偶校验码具有42字节,每一第二奇偶校验码具有14字节。
6.根据权利要求1所述的方法,其特征在于,其中该数据位元阵列以及所述复数个第一奇偶校验码、所述复数个第二奇偶校验码存储于该记忆装置中的一闪存。
7.一种记忆装置,其错误更正能力在不需要增加错误更正码引擎编/解码位元数就能提升,其特征在于,该记忆装置包含有:
一闪存,该闪存包含复数个区块;以及
一控制器,用来存取该闪存以及管理该复数个区块,其中该控制器的错误更正码引擎通过利用该控制器中的微处理器及/或控制逻辑来实施,以及该错误更正码引擎包含有:
一第一奇偶校验码计算模块,用来针对一数据位元阵列的复数列,分别计算复数个第一奇偶校验码;以及
复数个第二奇偶校验码计算模块,用来针对该数据位元阵列的复数行所形成的复数组,分别计算复数个第二奇偶校验码,其中所述复数组中的每一组包含所述复数行中的两行或多行,且所述复数组彼此不重叠;
该错误更正码引擎用于利用所述复数个第一奇偶校验码中的一第一奇偶校验码针对相对应的一列进行解码时,如该列错误位数超过错误更正码引擎能够更正的错误位数的上限,则利用所述复数个第二奇偶校验码协助进行错误更正,通过所述复数个第二奇偶校验码中的至少一第二奇偶校验码针对相对应的组进行解码,以更正该列的所有错误位;
该错误更正码引擎还包含一错误侦测/错误更正模块,用于依据透过计算取得的所述复数个第一奇偶校验码及所述复数个第二奇偶校验码,以及读取自闪存的第一奇偶校验码及读取之闪存的第二奇偶校验码进行错误侦测或错误更正。
8.一种记忆装置的控制器,其错误更正能力在不需要增加错误更正码引擎编/解码位数的状况下就能提升,该控制器用来存取该记忆装置中的一闪存,该闪存包含复数个区块,其特征在于,该控制器包含有:
一只读存储器,用来存储一程序代码;以及
一微处理器,用来执行该程序代码以控制对该闪存的存取以及管理该复数个区块;
其中该控制器的错误更正码引擎通过利用该控制器中的控制逻辑及/或执行该程序代码的该微处理器来实施,以及该错误更正码引擎包含有:
一第一奇偶校验码计算模块,用来针对一数据位元阵列的复数列,分别计算复数个第一奇偶校验码;以及
复数个第二奇偶校验码计算模块,用来针对该数据位元阵列的复数行所形成的复数组,分别计算复数个第二奇偶校验码,其中所述复数组中的每一组包含所述复数行中的两行或多行,且所述复数组彼此不重叠;
该错误更正码引擎用于利用所述复数个第一奇偶校验码中的一第一奇偶校验码针对相对应的一列进行解码时,如该列错误位数超过错误更正码引擎能够更正的错误位数的上限,则利用所述复数个第二奇偶校验码协助进行错误更正,通过所述复数个第二奇偶校验码中的至少一第二奇偶校验码针对相对应的组进行解码,以更正该列的所有错误位;
该错误更正码引擎包含一错误侦测/错误更正模块,用于依据透过计算取得的所述复数个第一奇偶校验码及所述复数个第二奇偶校验码,以及读取自闪存的第一奇偶校验码及读取之闪存的第二奇偶校验码进行错误侦测或错误更正。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010151517.2A CN102236585B (zh) | 2010-04-20 | 2010-04-20 | 提升错误更正能力的方法以及相关的记忆装置及其控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010151517.2A CN102236585B (zh) | 2010-04-20 | 2010-04-20 | 提升错误更正能力的方法以及相关的记忆装置及其控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102236585A CN102236585A (zh) | 2011-11-09 |
CN102236585B true CN102236585B (zh) | 2015-06-03 |
Family
ID=44887255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010151517.2A Active CN102236585B (zh) | 2010-04-20 | 2010-04-20 | 提升错误更正能力的方法以及相关的记忆装置及其控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102236585B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104756092A (zh) * | 2012-10-19 | 2015-07-01 | 富士通株式会社 | 记录再生装置、错误订正方法以及控制装置 |
US9852811B2 (en) * | 2014-11-13 | 2017-12-26 | Macronix International Co., Ltd. | Device and method for detecting controller signal errors in flash memory |
US10019314B2 (en) | 2016-04-27 | 2018-07-10 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
CN107391026B (zh) | 2016-04-27 | 2020-06-02 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
CN111679787B (zh) | 2016-04-27 | 2023-07-18 | 慧荣科技股份有限公司 | 闪存装置、闪存控制器及闪存存储管理方法 |
US10133664B2 (en) | 2016-04-27 | 2018-11-20 | Silicon Motion Inc. | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
US10289487B2 (en) | 2016-04-27 | 2019-05-14 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
TWI602188B (zh) * | 2017-01-03 | 2017-10-11 | 慧榮科技股份有限公司 | 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器 |
US10312944B2 (en) * | 2017-03-17 | 2019-06-04 | Micron Technology, Inc. | Error correction code (ECC) operations in memory for providing redundant error correction |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4336612A (en) * | 1978-01-17 | 1982-06-22 | Mitsubishi Denki Kabushiki Kaisha | Error correction encoding and decoding system |
US5107505A (en) * | 1988-07-07 | 1992-04-21 | Schlumberger Industries | Circuit of encoding and formatting data for rotating head recorders |
US5459850A (en) * | 1993-02-19 | 1995-10-17 | Conner Peripherals, Inc. | Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks |
US5986933A (en) * | 1996-12-17 | 1999-11-16 | Kabushiki Kaisha Toshiba | Semiconductor memory device having variable number of selected cell pages and subcell arrays |
CN1663130A (zh) * | 2002-06-21 | 2005-08-31 | 汤姆森特许公司 | 前向纠错的方法 |
-
2010
- 2010-04-20 CN CN201010151517.2A patent/CN102236585B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4336612A (en) * | 1978-01-17 | 1982-06-22 | Mitsubishi Denki Kabushiki Kaisha | Error correction encoding and decoding system |
US5107505A (en) * | 1988-07-07 | 1992-04-21 | Schlumberger Industries | Circuit of encoding and formatting data for rotating head recorders |
US5459850A (en) * | 1993-02-19 | 1995-10-17 | Conner Peripherals, Inc. | Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks |
US5986933A (en) * | 1996-12-17 | 1999-11-16 | Kabushiki Kaisha Toshiba | Semiconductor memory device having variable number of selected cell pages and subcell arrays |
CN1663130A (zh) * | 2002-06-21 | 2005-08-31 | 汤姆森特许公司 | 前向纠错的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102236585A (zh) | 2011-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102236585B (zh) | 提升错误更正能力的方法以及相关的记忆装置及其控制器 | |
US11500722B2 (en) | Flash memory apparatus and storage management method for flash memory | |
US9996285B2 (en) | Cyclically interleaved XOR array for error recovery | |
US8560916B2 (en) | Method for enhancing error correction capability of a controller of a memory device without increasing an error correction code engine encoding/decoding bit count, and associated memory device and controller thereof | |
US20190252035A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US20120005409A1 (en) | Method for performing data shaping, and associated memory device and controller thereof | |
US20130227374A1 (en) | Erasure correction using single error detection parity | |
CN101889267B (zh) | 存储器阵列中的差错校正 | |
CN102543196B (zh) | 数据读取方法、存储器储存装置及其控制器 | |
CN103544073A (zh) | 读取闪存中区块的数据的方法及相关的记忆装置 | |
US11294589B2 (en) | Method for performing access control in a memory device, associated memory device and controller thereof | |
CN106297883B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN105023613B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN104733051B (zh) | 奇偶校验码的解码方法、存储器储存装置及控制电路单元 | |
CN105468292A (zh) | 数据存取方法、存储器储存装置及存储器控制电路单元 | |
CN103631670A (zh) | 存储器储存装置、存储器控制器与数据处理方法 | |
CN109783005B (zh) | 控制记忆装置的方法、记忆装置、及其控制器和电子装置 | |
US11036579B2 (en) | Decoder for memory system and method thereof | |
CN101256521B (zh) | 提高闪存资料存取可靠性的方法 | |
CN109901784B (zh) | 数据存取方法、存储器控制电路单元以及存储器储存装置 | |
CN104252317A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
CN102141944B (zh) | 用来减少无法更正的错误的方法以及记忆装置及其控制器 | |
CN105575440A (zh) | 错误处理方法、存储器储存装置及存储器控制电路单元 | |
CN104298571B (zh) | 数据保护方法、存储器储存装置与存储器控制器 | |
US9436547B2 (en) | Data storing method, memory control circuit unit and memory storage device |
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 |