CN102541675B - 提升错误更正能力的方法、记忆装置及其控制器 - Google Patents
提升错误更正能力的方法、记忆装置及其控制器 Download PDFInfo
- Publication number
- CN102541675B CN102541675B CN201010602769.2A CN201010602769A CN102541675B CN 102541675 B CN102541675 B CN 102541675B CN 201010602769 A CN201010602769 A CN 201010602769A CN 102541675 B CN102541675 B CN 102541675B
- Authority
- CN
- China
- Prior art keywords
- error correction
- data
- parity check
- encoder
- decoder
- 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)
- Detection And Correction Of Errors (AREA)
Abstract
本发明提供一种不需要增加错误更正码引擎的一基础错误更正位数就能提升一记忆装置的控制器的错误更正能力的方法,该方法包含有:依据一错误更正倍率,分别取得数据中欲进行编/译码的多个部分,其中该多个部分为欲进行编/译码的部分数据;以及针对该数据中欲进行编/译码的该多个部分,分别进行对应于该错误更正倍率的编/译码,以产生对应于一预定错误更正位数的编/译码数据,其中该预定错误更正位数对该基础错误更正位数的比例等于该错误更正倍率。本发明另提供相关的记忆装置及其控制器。依据本发明所实现的错误更正妥善利用上述剩余的储存空间,不会造成浪费,在不大幅增加芯片面积及相关成本能达到兼顾运作效能与系统资源使用控管的目标。
Description
技术领域
本发明涉及关于闪存(Flash Memory)控制芯片的错误更正,更具体地说,涉及一种不需要增加错误更正码引擎(Error Correction Code Engine,ECC Engine)的一基础错误更正位数就能提升一记忆装置的控制器的错误更正能力的方法以及相关的记忆装置及其控制器。
背景技术
近年来由于闪存的技术不断地发展,各种可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡)或具备闪存的固态硬盘(Solid State Drive,SSD)被广泛地实施在诸多应用中。因此,这些可携式记忆装置中的闪存的访问控制遂成为相当热门的议题。
以常用的NAND型闪存而言,其主要可区分为单阶细胞(Single LevelCell,SLC)与多阶细胞(Multiple Level Cell,MLC)两大类的闪存。单阶细胞闪存中的每个被当作记忆单元的晶体管只有两种电荷值,分别用来表示逻辑值0与逻辑值1。另外,多阶细胞闪存中的每个被当作记忆单元的晶体管的储存能力则被充分利用,采用较高的电压来驱动,以透过不同级别的电压在一个晶体管中记录两组(或以上)位信息(例如:00、01、11、10);理论上,多阶细胞闪存的记录密度可以达到单阶细胞闪存的记录密度的两倍,这对于曾经在发展过程中遇到瓶颈的NAND型闪存的相关产业而言,是非常好的消息。
相较于单阶细胞闪存,由于多阶细胞闪存的价格较便宜,并且在有限的空间里可提供较大的容量,故多阶细胞闪存很快地成为市面上的可携式记忆装置竞相采用的主流。然而,多阶细胞闪存的不稳定性所导致的问题也一一浮现。针对这诸多问题,虽然相关技术中提供了一些解决方式,却总是无法兼顾运作效能与系统资源使用控管。于是,不论采取哪个解决方式,往往会有对应的副作用。
尤其是,依据相关技术所实现的错误更正通常并未用完闪存的所有的储存空间,其中剩余的储存空间不能用来储存数据,实在相当浪费。请注意,相关技术中未能用完闪存的所有的储存空间的典型原因是,一旦增加错误更正码引擎(Error Correction Code Engine,ECC Engine)的基础错误更正位数,错误更正码引擎的成本会大幅地增加;例如,针对1024字节数据(可简称为1K数据)将基础错误更正位数由24位提升至36位,会造成错误更正码引擎的芯片面积大增,约增加为1.5倍。因此,需要一种新颖的方法来加强控管闪存的数据存取,以兼顾运作效能与系统资源使用控管。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述错误更正无法利用剩余的存储空间易造成浪费的缺陷,提供一种提升错误更正能力的方法以及相关的记忆装置及其控制器,以解决上述问题。
本发明的另一目的在于提供一种提升错误更正能力的方法以及相关的记忆装置及其控制器,以妥善利用上述剩余的储存空间。
本发明解决其技术问题所采用的技术方案之一是:提供一种提升错误更正能力的方法,该方法应用于一记忆装置的控制器,该方法不需要增加一基础错误更正位数就能提升该控制器的错误更正能力,该方法包含有:依据一错误更正倍率,分别取得数据中欲进行编/译码的多个部分,其中该多个部分为欲进行编/译码的部分数据(Partial Data);以及针对该数据中欲进行编/译码的该多个部分,分别进行对应于该错误更正倍率的编/译码,以产生对应于一预定错误更正位数的编/译码数据,其中该预定错误更正位数对该基础错误更正位数的比例等于该错误更正倍率。
上述本发明所述的方法,其中该些部分的数量等于该错误更正倍率。
上述本发明所述的方法,其中在进行编码的状况下,该编/译码数据为编码数据,以及针对该数据中欲进行编/译码的该多个部分分别进行对应于该错误更正倍率的编/译码以产生对应于该预定错误更正位数的编/译码数据的步骤另包含有:
针对该些部分,分别产生多个奇偶校验码,其中该些奇偶校验码的数量等于该些部分的数量,且该编码数据包含该些部分以及该些奇偶校验码。
上述本发明所述的方法,其中每一奇偶校验码的位数等于该基础错误更正位数。
上述本发明所述的方法,其中在进行译码的状况下,该编/译码数据为译码数据,以及针对该数据中欲进行编/译码的该多个部分分别进行对应于该错误更正倍率的编/译码以产生对应于该预定错误更正位数的编/译码数据的步骤另包含有:
针对该些部分,分别依据附加于该些部分的多个奇偶校验码进行错误更正,其中该些奇偶校验码的数量等于该些部分的数量。
上述本发明所述的方法,其中该些部分的数据量彼此相等。
上述本发明所述的方法,其中该些部分彼此不重迭。
本发明解决其技术问题所采用的技术方案之二是:提供上述方法的同时,也对应地提供一种记忆装置,其错误更正能力在不需要增加一基础错误更正位数的状况下就能提升,该记忆装置包含有:一闪存(Flash Memory),该闪存包含多个区块;以及一控制器,用来存取(Access)该闪存以及管理该多个区块。该控制器的错误更正码引擎(Error Correction Code Engine,ECC Engine)通过利用该控制器中的微处理器及/或控制逻辑来实施,以及该控制器依据一错误更正倍率,分别取得数据中欲进行编/译码的多个部分,而该多个部分为欲进行编/译码的部分数据。另外,针对该数据中欲进行编/译码的该多个部分,该错误更正码引擎分别进行对应于该错误更正倍率的编/译码,以产生对应于一预定错误更正位数的编/译码数据,其中该预定错误更正位数对该基础错误更正位数的比例等于该错误更正倍率。
上述本发明所述的记忆装置,其中该些部分的数量等于该错误更正倍率。
上述本发明所述的记忆装置,其中在进行编码的状况下,该编/译码数据为编码数据,以及该错误更正码引擎包含有:
一奇偶校验码计算模块,用来针对该些部分,分别产生多个奇偶校验码,其中该些奇偶校验码的数量等于该些部分的数量,且该编码数据包含该些部分以及该些奇偶校验码。
上述本发明所述的记忆装置,其中每一奇偶校验码的位数等于该基础错误更正位数。
上述本发明所述的记忆装置,其中在进行译码的状况下,该编/译码数据为译码数据,以及该错误更正码引擎包含有:
多个症状计算单元,用来针对该些部分,分别依据附加于该些部分的多个奇偶校验码进行错误更正的症状计算,其中该些奇偶校验码的数量等于该些部分的数量。
上述本发明所述的记忆装置,其中在进行译码的状况下,该错误更正码引擎另包含有:
一更正器,用来针对该些部分,分别依据该些症状计算的计算结果进行错误更正。
上述本发明所述的记忆装置,其中该些部分的数据量彼此相等。
上述本发明所述的记忆装置,其中该些部分彼此不重迭。
本发明解决其技术问题所采用的技术方案之三是:提供上述方法的同时,也对应地提供一种记忆装置的控制器,其错误更正能力在不需要增加一基础错误更正位数的状况下就能提升,该控制器用来存取该记忆装置中之一闪存,该闪存包含多个区块,该控制器包含有:一只读存储器(Read OnlyMemory,ROM),用来储存一程序代码;以及一微处理器,用来执行该程序代码以控制对该闪存的存取以及管理该多个区块。该控制器的错误更正码引擎通过利用该控制器中的控制逻辑及/或执行该程序代码的该微处理器来实施,以及该控制器依据一错误更正倍率,分别取得数据中欲进行编/译码的多个部分,而该多个部分为欲进行编/译码的部分数据。另外,针对该数据中欲进行编/译码的该多个部分,该错误更正码引擎分别进行对应于该错误更正倍率的编/译码,以产生对应于一预定错误更正位数的编/译码数据,其中该预定错误更正位数对该基础错误更正位数的比例等于该错误更正倍率。
上述本发明所述的控制器,其中该些部分的数量等于该错误更正倍率。
上述本发明所述的控制器,其中在进行编码的状况下,该编/译码数据为编码数据,以及该错误更正码引擎包含有:
一奇偶校验码计算模块,用来针对该些部分,分别产生多个奇偶校验码,其中该些奇偶校验码的数量等于该些部分的数量,且该编码数据包含该些部分以及该些奇偶校验码。
上述本发明所述的控制器,其中每一奇偶校验码的位数等于该基础错误更正位数。
上述本发明所述的控制器,其中在进行译码的状况下,该编/译码数据为译码数据,以及该错误更正码引擎包含有:
多个症状计算单元,用来针对该些部分,分别依据附加于该些部分的多个奇偶校验码进行错误更正的症状计算,其中该些奇偶校验码的数量等于该些部分的数量。
上述本发明所述的控制器,其中在进行译码的状况下,该错误更正码引擎另包含有:
一更正器,用来针对该些部分,分别依据该些症状计算的计算结果进行错误更正。
上述本发明所述的控制器,其中该些部分的数据量彼此相等。
上述本发明所述的控制器,其中该些部分彼此不重迭。
本发明解决其技术问题所采用的技术方案之四是:也提供一种提升错误更正能力的方法,该方法应用于一记忆装置的控制器,该方法包含有:将一笔数据规划为多笔部分数据;以及利用一错误更正码引擎对该多笔部分数据进行编码以分别产生对应于该多笔数据的多个奇偶校验码;其中该笔数据的长度依据该记忆装置的最小错误更正单位而定。尤其是,该多笔部分数据彼此重迭。
实施本发明的技术方案,具有以下有益效果:依据本发明所实现的错误更正可妥善利用上述剩余的储存空间,不会造成浪费。
相较于相关技术,本发明不需要增加错误更正码引擎的基础错误更正位数、不需要大幅增加错误更正码引擎的复杂度就能提升记忆装置的控制器的错误更正能力。因此,本发明在不大幅地增加芯片面积及相关成本的状况下就能达到兼顾运作效能与系统资源使用控管的目标。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1A为依据本发明一第一实施例的一种记忆装置的示意图;
图1B为依据本发明一实施例的一种编码器及其可存取的多个缓冲器的示意图;
图1C绘示图1B所示的奇偶校验码(Parity Code)计算模块在一实施例中的实施细节;
图1D为依据本发明一实施例的一种译码器及其可存取的多个缓冲器的示意图;
图2为依据本发明一实施例的一种提升错误更正能力的方法的流程图;
图3A至图3C绘示图2所示的方法在不同的实施例中的实施细节;
图4绘示图2所示的方法在一实施例中的实施细节;
图5绘示图2所示的方法在另一实施例中的实施细节。
【主要组件符号说明】
具体实施方式
请参考图1A,图1A为依据本发明一第一实施例的一种记忆装置100的示意图,其中本实施例的记忆装置100尤其为可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡)或固态硬盘(SSD,Solid State Drive)等。记忆装置100包含有:一闪存(Flash Memory)120;以及一控制器,用来存取(Access)闪存120,其中该控制器例如一内存控制器110,并且记忆装置100(尤其是指该控制器诸如内存控制器110)的错误更正能力在不需要增加该控制器中的错误更正码引擎(Error Correction Code Engine,ECCEngine)的一基础错误更正位数的状况下就能提升。依据本实施例,内存控制器110包含一微处理器112、一只读存储器(Read Only Memory,ROM)112M、一控制逻辑114、至少一缓冲存储器116、与一接口逻辑118。只读存储器用来储存一程序代码112C,而微处理器112则用来执行程序代码112C以控制对闪存120的存取。请注意,程序代码112C也得储存在缓冲存储器116或任何形式的内存内。另外,本实施例的控制逻辑114包含至少一编/译码组合电路1142。
在典型状况下,闪存120包含多个区块(Block),而该控制器(例如:透过微处理器112执行程序代码112C的内存控制器110)对闪存120进行抹除数据的运作以区块为单位来进行抹除。另外,一区块可记录特定数量的页(Page),其中该控制器对闪存120进行写入数据的运作以页为单位来进行写入。
实作上,透过微处理器112执行程序代码112C的内存控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存120的存取运作(尤其是对至少一区块或至少一页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置(Host Device)沟通。
依据本实施例,记忆装置100为一种不需要增加错误更正码引擎的一基础错误更正位数就能提升错误更正能力的记忆装置。实作上,上述的错误更正码引擎可通过利用控制逻辑114中的编/译码组合电路1142来实施。这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的不同的变化例,上述的错误更正码引擎可通过利用控制逻辑114及/或执行程序代码112C的微处理器112来实施。例如:该错误更正码引擎为控制逻辑114的一部分,且由控制逻辑114中的逻辑电路所构成。又例如:程序代码112C包含某些程序模块/单元,且该错误更正码引擎通过利用执行该些程序模块/单元的微处理器112来实施。又例如:该错误更正码引擎通过利用控制逻辑114及执行程序代码112C的微处理器112来实施,其中程序代码112C包含某些程序模块/单元,且该错误更正码引擎的一部分通过利用执行该些程序模块/单元的微处理器112来实施,而该错误更正码引擎的另一部分由控制逻辑114中的逻辑电路所构成。
在本实施例中,上述的控制器可依据一错误更正倍率,分别取得数据DM中欲进行编/译码的多个部分,其中该多个部分为欲进行编/译码的部分数据(Partial Data),而下标M可为正整数。广义而言,数据DM可代表原始数据,或代表欲进行编/译码的部分数据所构成的集合。例如:在M=1的状况下,数据DM就是原始数据D1(1)。又例如:在M>1的状况下,数据DM就是部分数据DM(m)所构成的集合,其中m可代表1到M的正整数。如此,在M>1的状况下,上述的控制器可依据该错误更正倍率,分别取得数据DM中欲进行编/译码的M个部分,其中该M个部分为欲进行编/译码的部分数据DM(m)诸如部分数据DM(1)、DM(2)、...、与DM(M);也就是,该M个部分包含部分数据DM(1)、DM(2)、...、与DM(M)。另外,针对数据DM中欲进行编/译码的该M个部分诸如部分数据DM(1)、DM(2)、...、与DM(M),上述的错误更正码引擎分别进行对应于该错误更正倍率的编/译码,以产生对应于一预定错误更正位数的编/译码数据,其中该预定错误更正位数对该基础错误更正位数的比例等于该错误更正倍率。
图1B为依据本发明一实施例的一种编码器114E及其可存取的多个缓冲器B(1)、B(2)、...、与B(M-1)的示意图,其中编码器114E为上述的错误更正码引擎的一部分。例如:该些缓冲器B(1)、B(2)、...、与B(M-1)可分别为缓冲存储器116中的多个缓冲区域。又例如:上述的至少一缓冲存储器116包含多个缓冲存储器,可分别用来实施该些缓冲器B(1)、B(2)、...、与B(M-1)。
如图1B所示,编码器114E包含至少一奇偶校验码(Parity Code)计算模块210与一多任务器220。在此,该些部分诸如部分数据DM(1)、DM(2)、...、与DM(M)的数量M等于该错误更正倍率。在该控制器进行编码的状况下,上述的编/译码数据为编码数据,而奇偶校验码计算模块210可针对该些部分,分别产生(或计算)M个奇偶校验码(Parity Code)PM(1)、PM(2)、...、与PM(M),且多任务器220则依据上述的错误更正码引擎的控制讯号C1多任务选择数据位或奇偶校验码PM(m),以供进一步利用。如此,奇偶校验码PM(1)、PM(2)、...、与PM(M)的数量M等于该些部分诸如部分数据DM(1)、DM(2)、...、与DM(M)的数量,且该编码数据包含该些部分诸如部分数据DM(1)、DM(2)、...、与DM(M)以及奇偶校验码PM(1)、PM(2)、...、与PM(M)。依据本实施例,每一奇偶校验码的位数可等于上述的基础错误更正位数。
实作上,通过利用该些缓冲器B(1)、B(2)、...、与B(M-1),编码器114E可暂时地储存对应于前(M-1)个部分诸如部分数据DM(1)、DM(2)、...、与DM(M-1)的奇偶校验码PM(1)、PM(2)、...、与PM(M-1)。另外,编码器114E可将数据DM(其包含部分数据DM(1)、DM(2)、...、与DM(M))写入闪存120,并于对应于第M个部分诸如部分数据DM(M)的奇偶校验码PM(M)产生时,将全部的奇偶校验码PM(1)、PM(2)、...、与PM(M)循序地附加于数据DM之后,使奇偶校验码PM(1)、PM(2)、...、与PM(M)一并被写入闪存120。
请注意,依据线性区块码(Linear Block Code)的相关原理当中有关变形线性码(Modified Linear Code)的缩短(Shortening)的定义,一个(n,k)码可以变成一个(n-1,k-1)码,其中针对(n,k)码而言,k为数据DM在编码前的原始长度,而n指对数据DM进行编码后(例如依BCH的编码方式)所产生的编码字长度(即包含数据DM及其奇偶校验码PM的总长度)。另外,基于此定义的延伸,一个(n,k)码可以变成一个(n-s,k-s)码,请注意到,对于(n,k)码与(n-s,k-s)码,两组编码字中的奇偶校验码PM的总长度相同(均为n-k),这代表两组编码字的错误控制能力(例如错误更正位数)仍然相同。举例来说,当一笔1024字节(Byte)的数据依照一特定的编码方式编码,而产生出1066字节的编码字,该编码字中数据长度为1024字节,而奇偶校验码的长度为42字节,该42字节的奇偶校验码可对该笔1024字节的数据提供24位的错误更正能力。而另一笔512字节的数据依照上述的特定编码方式编码,可产生出554字节的编码字,该编码字中数据长度为512字节,而奇偶校验码的长度为42字节,该42字节的奇偶校验码仍可对该笔512字节的数据提供24位的错误更正能力。因此,若将一笔1024字节的数据切割为两笔512字节的数据再利用相同的编码方式编码,则可获得分别具有24位的错误更正能力的两组编码字,相对地,依相同编码方式对1024字节的数据进行编码仅能得到一组具有24位错误更正能力的编码字。总的来说,将数据切割再进行编码,将获得相当于两倍的错误更正能力。
图1C绘示图1B所示的奇偶校验码计算模块210在一实施例中的实施细节。在此,奇偶校验码计算模块210具有:至少N个缓存器G(1)、G(2)、...、与G(N)(均简称为“G”),分别用来暂存信息;至少N个调整单元g(1)、g(2)、...、与g(N)(均简称为“g”),分别用来依据各自的输入参数调整其所在路径的信息;至少N个算术(Arithmetic)单元A(1)、A(2)、...、与A(N)(均标示为“+”),分别用来进行减法或加法运算;以及至少3个切换单元W(1)、W(2)、与W(3)(均简称为“W”),分别用来切换计算路径或输入/输出路径。各个组件当中凡有输入标示为“-”者(例如算术单元A(1)与A(2)以及切换单元W(3)),表示该输入需改变正负号。
图1D为依据本发明一实施例的一种译码器114D及其可存取的多个缓冲器B(1)、B(2)、...、与B(M)的示意图,其中译码器114D为上述的错误更正码引擎的一部分。例如:该些缓冲器B(1)、B(2)、...、与B(M)可分别为缓冲存储器116中的多个缓冲区域。又例如:上述的至少一缓冲存储器116包含多个缓冲存储器,可分别用来实施该些缓冲器B(1)、B(2)、...、与B(M)。
如图1D所示,译码器114D包含一侦测器230、一多任务器240、与一更正器250,其中侦测器230包含M个症状计算(Syndrome Computation)单元230-1、230-2、...、与230-M,而更正器250包含一锁钥方程式求解器(Key Equation Solver)252与一秦式搜寻(Chien Search)单元254,且秦式搜寻单元254中设置有错误位置储存器254S。在该控制器进行译码的状况下,上述的编/译码数据为译码数据。译码器114D从闪存120所读取的数据DM的M个部分诸如部分数据DM(1)、DM(2)、...、与DM(M)可分别暂时地储存于缓冲器B(1)、B(2)、...、与B(M),以便在有需要时进行错误更正。针对缓冲器B(1)、B(2)、...、与B(M)中的该些部分诸如部分数据DM(1)、DM(2)、...、与DM(M),症状计算单元230-1、230-2、...、230-M分别依据对应于该些部分的多个奇偶校验码,诸如上述的M个奇偶校验码PM(1)、PM(2)、...、与PM(M),进行错误更正的症状计算,而多任务器240则可依据上述的错误更正码引擎的控制讯号C2多任务选择该些症状计算的计算结果SD(1)、SD(2)、...、与SD(M)中的任一个,以供进一步利用。另外,更正器250针对该些部分,分别依据该些症状计算的计算结果进行错误更正。尤其是,锁钥方程式求解器252可依据计算结果SD(1)、SD(2)、...、与SD(M)求解锁钥方程式,而秦式搜寻单元254则可进行秦式搜寻以找出数据DM的错误位置(若错误存在),并将错误位置储存于错误位置储存器254S。于是,更正器250可依据储存于错误位置储存器254S的错误位置,对缓冲器B(1)、B(2)、...、与B(M)中的该些部分诸如部分数据DM(1)、DM(2)、...、与DM(M)进行错误更正。
依据本实施例的一变化例,侦测器230可通过利用编码器114E的至少一部分来实施。例如:该控制器可利用编码器114E针对缓冲器B(1)、B(2)、...、与B(M)中的该些部分诸如部分数据DM(1)、DM(2)、...、与DM(M)进行相关计算诸如奇偶校验码计算,来核对对应于该些部分的M个奇偶校验码PM(1)、PM(2)、...、与PM(M)是否有误及/或找出数据DM的错误位置(若错误存在)。于是,更正器250可依据于本变化例所找出的错误位置,对缓冲器B(1)、B(2)、...、与B(M)中的该些部分诸如部分数据DM(1)、DM(2)、...、与DM(M)进行错误更正。本变化例与前述各个实施例/变化例相仿之处不再重复赘述。
请注意,由于数据DM之中发生错误的位置是随机的,故在需要时,使用奇偶校验码PM(1)、PM(2)、...、与PM(M)的错误更正效果通常可以达到使用奇偶校验码PM(1)、PM(2)、...、与PM(M)中的任一个的错误更正效果的M倍。例如:若针对1024字节数据(以下简称1K数据)的基础错误更正位数为24位,则在M=1的状况下,针对数据DM诸如原始数据D1(1)仅仅产生1个奇偶校验码P1(1),使用奇偶校验码P1(1)的错误更正效果可达每1K数据24位。在M>1的状况下,数据DM被切割为多个部分,并针对部分数据DM(1)、DM(2)、...、与DM(M)产生了M个奇偶校验码PM(1)、PM(2)、...、与PM(M),各个奇偶校验码PM(1)、PM(2)、...、与PM(M)对于各个部分数据DM(1)、DM(2)、...、与DM(M)分别具有24位的错误更正能力。整体来说,使用奇偶校验码PM(1)、PM(2)、...、与PM(M)对数据DM进行保护时,错误更正效果可达每1K数据/(24*M)位。因此,本发明在不需要大幅增加奇偶校验码计算模块210的硬件复杂度就能大幅提升该控制器的错误更正能力,如此一来,即可避免相关技术中错误更正码引擎的芯片面积大增的问题。
图2为依据本发明一实施例的一种提升错误更正能力的方法910的流程图。该方法可应用于在图1A至图1D所示的各个实施例及相关的变化例中的任一个当中的记忆装置100,尤其是上述的控制器(例如:透过微处理器112执行程序代码112C的内存控制器110),其中该方法不需要增加错误更正码引擎的一基础错误更正位数就能提升该控制器的错误更正能力。另外,该方法可通过利用在图1A至图1D所示的各个实施例及相关的变化例中的任一个当中的记忆装置100来实施,尤其是通过利用上述的控制器来实施。该方法说明如下:
在步骤912中,上述的控制器依据该错误更正倍率,分别取得数据DM中欲进行编/译码的多个部分诸如上述的M个部分,其中该M个部分为欲进行编/译码的部分数据DM(m)诸如部分数据DM(1)、DM(2)、...、与DM(M)。尤其是,该些部分的数量M等于该错误更正倍率。另外,该些部分诸如部分数据DM(1)、DM(2)、...、与DM(M)的数据量彼此相等,且该些部分可彼此不重迭。这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的某些变化例,该些部分诸如部分数据DM(1)、DM(2)、...、与DM(M)的数据量可以不必全部相等。依据本实施例的某些的变化例,该些部分中的至少两者可彼此重迭。请注意到,数据DM的长度得依闪存120的最小错误更正保护单位(也可简称为最小错误更正单位)而定。例如某厂商规范其所提供的某型号的闪存的最小错误更正保护单位为1024字节,且规范闪存控制器最少需对该最小错误更正保护单位提供24位的错误保护;此状况下,该资料DM的长度则可定为1024字节。
在步骤914中,针对数据DM中欲进行编/译码的该M个部分诸如部分数据DM(1)、DM(2)、...、与DM(M),上述的错误更正码引擎分别进行对应于该错误更正倍率(例如:错误更正倍率M)的编/译码,以产生对应于上述的预定错误更正位数诸如预定错误更正位数ECBP的编/译码数据。尤其是,预定错误更正位数ECBP对上述的基础错误更正位数诸如基础错误更正位数ECBB的比例等于错误更正倍率M,而此关系可表示如下:
ECBP/ECBB=M。
例如:上述的错误更正码引擎的基础错误更正位数ECBB的可能值包含集合{24,28,36,40,48,60},这表示在不同的真实模式MRE(24)、MRE(28)、MRE(36)、MRE(40)、MRE(48)、或MRE(60)下,针对1K数据的基础错误更正位数可分别为24位、28位、36位、40位、48位、或60位。
依据本实施例,预定错误更正位数ECBP的可能值包含集合{(24*M),(28*M),(36*M),(40*M),(48*M),(60*M)},这表示在分别对应于错误更正倍率M的不同的虚拟模式MPS(24,M)、MPS(28,M)、MPS(36,M)、MPS(40,M)、MPS(48,M)、或MPS(60,M)下,针对1K数据的预定错误更正位数可依序分别为(24*M)位、(28*M)位、(36*M)位、(40*M)位、(48*M)位、或(60*M)位。尤其是,本实施例的错误更正倍率M为可调。例如:在M=2的状况下,预定错误更正位数ECBP的可能值包含集合{48,56,72,80,96,120},这表示在不同的虚拟模式MPS(24,2)、MPS(28,2)、MPS(36,2)、MPS(40,2)、MPS(48,2)、或MPS(60,2)下,针对1K数据之预定错误更正位数可分别为48位、56位、72位、80位、96位、或120位。又例如:在M=4的状况下,预定错误更正位数ECBP的可能值包含集合{96,112,144,160,192,240},这表示在不同的虚拟模式MPS(24,4)、MPS(28,4)、MPS(36,4)、MPS(40,4)、MPS(48,4)、或MPS(60,4)下,针对1K数据的预定错误更正位数可分别为96位、112位、144位、160位、192位、或240位。
如此,通过利用图2所示的方法,在图1A至图1D所示的各个实施例及相关的变化例中的任一个当中的记忆装置100(尤其是上述的控制器及其内的错误更正码引擎)可支持多组虚拟模式MPS(24,M)、MPS(28,M)、MPS(36,M)、MPS(40,M)、MPS(48,M)、与MPS(60,M),诸如本实施例中的第一组虚拟模式MPS(24,2)、MPS(28,2)、MPS(36,2)、MPS(40,2)、MPS(48,2)、与MPS(60,2)以及第二组虚拟模式MPS(24,4)、MPS(28,4)、MPS(36,4)、MPS(40,4)、MPS(48,4)、或MPS(60,4)。另外,通过利用内存控制器110所提供的各组虚拟模式,本发明就可以妥善利用上述剩余的储存空间,甚至将上述剩余的储存空间用尽。
图3A至图3C绘示图2所示的方法在不同的实施例中的实施细节。图3A绘示对应于一真实模式(例如:真实模式MRE(24)、MRE(28)、MRE(36)、MRE(40)、MRE(48)、与MRE(60)中的任一个)的原始数据D1(1)以及相关的奇偶校验码P1(1)的写入顺序。另外,图3B绘示对应于一虚拟模式(例如:虚拟模式MPS(24,2)、MPS(28,2)、MPS(36,2)、MPS(40,2)、MPS(48,2)、与MPS(60,2)中的任一个)的部分数据D2(1)与D2(2)以及相关的奇偶校验码P2(1)与P2(2)的写入顺序。请一并参照图1B、1C、3A。当内存控制器110欲产生示于图3B的部分数据D2(1)与D2(2)以及相关的奇偶校验码P2(1)与P2(2)时,微处理器112将缓冲存储器116中的原始数据D1(1)输入错误更正码引擎中的编码器114E。在微处理器112的指示下,编码器114E先利用控制讯号C1切换多任务器220使部分数据D2(1)输出至闪存120。此时,部分数据D2(1)也循序输入奇偶校验码计算模块210,待部分数据D2(1)全部输入奇偶校验码计算模块210时,微处理器112指示奇偶校验码计算模块210将N个缓存器G(1)、G(2)、...、与G(N)中所存的数值储存至缓冲器B(1),该些数值即为对应于部分数据D2(1)的奇偶校验码P2(1)。之后,奇偶校验码计算模块210重置(reset)N个缓存器G(1)、G(2)、...、与G(N)中所存的数值,再循序接收部分数据D2(2),对部分数据D2(2)进行奇偶校验码计算,而微处理器112也指示编码器114E切换多任务器220使部分数据D2(2)输出至闪存120。待部分数据D2(2)全部输入奇偶校验码计算模块210时,微处理器112指示奇偶校验码计算模块210将N个缓存器G(1)、G(2)、...、与G(N)中所存的数值储存至缓冲器B(2),该些数值即为对应于部分数据D2(2)的奇偶校验码P2(2)。待部分数据D1(2)、D2(2)均自编码器114E输出,而奇偶校验码P2(1)、P2(2)也计算完成,则微处理器112指示编码器114E切换多任务器220,将奇偶校验码P2(1)、P2(2)输出至闪存120。则可完成如图3B所示的部分数据D2(1)与D2(2)以及相关的奇偶校验码P2(1)与P2(2)。请注意到,微处理器112得就上述运作为直接指示,也得指示错误更正码引擎就特定的编码模式(例如第一组虚拟模式MPS(24,2)、MPS(28,2)等模式)进行编码,而由错误更正码引擎直接指示各相关模块,完成该特定的编码模式,以减轻微处理器的负担。
此外,图3C绘示对应于另一虚拟模式(例如:虚拟模式MPS(24,4)、MPS(28,4)、MPS(36,4)、MPS(40,4)、MPS(48,4)、与MPS(60,4)中的任一个)的部分数据D4(1)、D4(2)、D4(3)、与D4(4)以及相关的奇偶校验码P4(1)、P4(2)、P4(3)、与P4(4)的写入顺序。为了简明起见,这些实施例中与前述各个实施例/变化例相仿之处不再重复赘述。
图4绘示图2所示的方法在一实施例中的实施细节,其中本实施例为图3B所示实施例的变化例。上述的编码器114E先将部分数据D2(1)与相关的奇偶校验码P2(1)写入闪存120,在将部分数据D2(2)与相关的奇偶校验码P2(2)写入闪存120。另外,译码器114D可配合上述的写入顺序来进行译码,其中本实施例的控制器在进行译码时可以节省一些缓冲储存空间。本实施例与前述各个实施例/变化例相仿之处不再重复赘述。
图5绘示图2所示的方法在另一实施例中的实施细节,其中本实施例为图3B或图3C所示实施例的变化例。图5绘示对应于另一虚拟模式(例如:虚拟模式MPS(24,3)、MPS(28,3)、MPS(36,3)、MPS(40,3)、MPS(48,3)、与MPS(60,3)中的任一个)的部分数据D3(1)、D3(2)、与D3(3)以及相关的奇偶校验码P3(1)、P3(2)、与P3(3)的写入顺序。本实施例与前述各个实施例/变化例相仿之处不再重复赘述。
本发明的好处之一是,依据本发明所实现的错误更正可妥善利用上述剩余的储存空间,不会造成浪费。相较于相关技术,本发明不需要增加错误更正码引擎的基础错误更正位数、不需要大幅增加错误更正码引擎的复杂度就能提升记忆装置的控制器的错误更正能力。因此,本发明在不大幅地增加芯片面积及相关成本的状况下就能达到兼顾运作效能与系统资源使用控管的目标。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (19)
1.一种提升错误更正能力的方法,该方法应用于一记忆装置的控制器,该方法不需要增加一基础错误更正位数就能提升该控制器的错误更正能力,其特征在于,该方法包含有:
依据一错误更正倍率,分别取得数据中欲进行编/译码的多个部分,其中该多个部分为欲进行编/译码的部分数据;以及
针对该数据中欲进行编/译码的该多个部分,分别进行对应于该错误更正倍率的编/译码,以产生对应于一预定错误更正位数的编/译码数据,其中该预定错误更正位数对该基础错误更正位数的比例等于该错误更正倍率;
该些部分的数量等于该错误更正倍率;
该记忆装置支持多种编码模式;
该控制器包括微处理器、缓冲存储器及编码器,该缓冲存储器包括M个缓冲器,该编码器进一步包括至少一奇偶校验码计算模块及一多任务器,该奇偶校验码计算模块具有N个缓存器;
在特定的编码模式下针对该数据中欲进行编/译码的该多个部分,分别进行对应于该错误更正倍率的编/译码,以产生对应于一预定错误更正位数的编/译码数据的步骤另包含有:
S1、微处理器将缓冲存储器中的第一部分数据输入编码器,编码器接收微处理器的控制讯号,切换多任务器使第一部分数据输入闪存及奇偶校验计算模块;
S2、待第一部分数据全部输入奇偶校验计算模块时,微处理器指示奇偶校验计算模块将计算及存储于N个缓存器的第一奇偶校验码暂存于缓冲器;
S3、奇偶校验码计算模块重置N个缓存器中的数值,并循序接收第二部分数据,对第二部分数据进行奇偶校验码计算,同时微处理器指示编码器切换多任务器使第二部分数据输出至闪存;
S4、待第二部分数据全部输入奇偶校验计算模块时,微处理器指示奇偶校验计算模块将计算及存储于N个缓存器的第二奇偶校验码暂存于缓冲器;
S5、待第一部分数据及第二部分数据均自编码器输出至闪存时,微处理器指示编码器切换多任务器,将第一奇偶校验码及第二奇偶校验码输出至闪存。
2.根据权利要求1所述的方法,其特征在于,其中每一奇偶校验码的位数等于该基础错误更正位数。
3.根据权利要求1所述的方法,其特征在于,其中在进行译码的状况下,该编/译码数据为译码数据,以及针对该数据中欲进行编/译码的该多个部分分别进行对应于该错误更正倍率的编/译码以产生对应于该预定错误更正位数的编/译码数据的步骤另包含有:
针对该些部分,分别依据附加于该些部分的多个奇偶校验码进行错误更正,其中该些奇偶校验码的数量等于该些部分的数量。
4.根据权利要求1所述的方法,其特征在于,其中该些部分的数据量彼此相等。
5.根据权利要求1所述的方法,其特征在于,其中该些部分彼此不重迭。
6.一种记忆装置,其错误更正能力在不需要增加一基础错误更正位数的状况下就能提升,其特征在于,该记忆装置包含有:
一闪存,该闪存包含多个区块;以及
一控制器,用来存取该闪存以及管理该多个区块,其中该控制器的错误更正码引擎通过利用该控制器中的微处理器及/或控制逻辑来实施,以及该控制器依据一错误更正倍率,分别取得数据中欲进行编/译码的多个部分,而该多个部分为欲进行编/译码的部分数据;
其中针对该数据中欲进行编/译码的该多个部分,该错误更正码引擎分别进行对应于该错误更正倍率的编/译码,以产生对应于一预定错误更正位数的编/译码数据,其中该预定错误更正位数对该基础错误更正位数的比例等于该错误更正倍率;
该错误更正码引擎包含有一个奇偶校验码计算模块,用来针对这些部分,分别产生多个奇偶校验码,其中该些奇偶校验码的数量等于该些部分的数量;
该记忆装置支持多种编码模式;
该控制器还包括缓冲存储器及编码器,该缓冲存储器包括M个缓冲器,该编码器进一步包括至少一奇偶校验码计算模块及一多任务器,该奇偶校验码计算模块具有N个缓存器。
7.根据权利要求6所述的记忆装置,其特征在于,其中该些部分的数量等于该错误更正倍率。
8.根据权利要求7所述的记忆装置,其特征在于,其中每一奇偶校验码的位数等于该基础错误更正位数。
9.根据权利要求7所述的记忆装置,其特征在于,其中在进行译码的状况下,该编/译码数据为译码数据,以及该错误更正码引擎包含有:
多个症状计算单元,用来针对该些部分,分别依据附加于该些部分的多个奇偶校验码进行错误更正的症状计算,其中该些奇偶校验码的数量等于该些部分的数量。
10.根据权利要求9所述的记忆装置,其特征在于,其中在进行译码的状况下,该错误更正码引擎另包含有:
一更正器,用来针对该些部分,分别依据该些症状计算的计算结果进行错误更正。
11.根据权利要求6所述的记忆装置,其特征在于,其中该些部分的数据量彼此相等。
12.根据权利要求6所述的记忆装置,其特征在于,其中该些部分彼此不重迭。
13.一种记忆装置的控制器,其错误更正能力在不需要增加一基础错误更正位数的状况下就能提升,该控制器用来存取该记忆装置中的一闪存,该闪存包含多个区块,其特征在于,该控制器包含有:
用于依据一错误更正倍率,分别取得数据中欲进行编/译码的多个部分的装置,而该多个部分为欲进行编/译码的部分数据;
以及用于针对该数据中欲进行编/译码的该多个部分,分别进行对应于该错误更正倍率的编/译码,以产生对应于一预定错误更正位数的编/译码数据的错误更正码引擎,其中该预定错误更正位数对该基础错误更正位数的比例等于该错误更正倍率;
该错误更正码引擎包含有一个奇偶校验码计算模块,用来针对这些部分,分别产生多个奇偶校验码,其中该些奇偶校验码的数量等于该些部分的数量;
该记忆装置支持多种编码模式;
该控制器还包括缓冲存储器及编码器,该缓冲存储器包括M个缓冲器,该编码器进一步包括至少一奇偶校验码计算模块及一多任务器,该奇偶校验码计算模块具有N个缓存器。
14.根据权利要求13所述的控制器,其特征在于,其中该些部分的数量等于该错误更正倍率。
15.根据权利要求13所述的控制器,其特征在于,其中每一奇偶校验码的位数等于该基础错误更正位数。
16.根据权利要求14所述的控制器,其特征在于,其中在进行译码的状况下,该编/译码数据为译码数据,以及该错误更正码引擎包含有:
多个症状计算单元,用来针对该些部分,分别依据附加于该些部分的多个奇偶校验码进行错误更正的症状计算,其中该些奇偶校验码的数量等于该些部分的数量。
17.根据权利要求16所述的控制器,其特征在于,其中在进行译码的状况下,该错误更正码引擎另包含有:
一更正器,用来针对该些部分,分别依据该些症状计算的计算结果进行错误更正。
18.根据权利要求13所述的控制器,其特征在于,其中该些部分的数据量彼此相等。
19.根据权利要求13所述的控制器,其特征在于,其中该些部分彼此不重迭。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010602769.2A CN102541675B (zh) | 2010-12-23 | 2010-12-23 | 提升错误更正能力的方法、记忆装置及其控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010602769.2A CN102541675B (zh) | 2010-12-23 | 2010-12-23 | 提升错误更正能力的方法、记忆装置及其控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102541675A CN102541675A (zh) | 2012-07-04 |
CN102541675B true CN102541675B (zh) | 2015-03-11 |
Family
ID=46348628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010602769.2A Active CN102541675B (zh) | 2010-12-23 | 2010-12-23 | 提升错误更正能力的方法、记忆装置及其控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102541675B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391389B (zh) * | 2013-08-05 | 2020-11-24 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法以及记忆装置与控制器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809042A (en) * | 1995-04-13 | 1998-09-15 | International Business Machines Corporation | Interleave type error correction method and apparatus |
CN1491486A (zh) * | 2001-02-16 | 2004-04-21 | 汤姆森许可贸易公司 | 用于解码纠错码的方法和设备 |
CN101080874A (zh) * | 2004-12-15 | 2007-11-28 | 日本电气株式会社 | 纠错编码装置以及在其中使用的纠错编码方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7900118B2 (en) * | 2007-02-12 | 2011-03-01 | Phison Electronics Corp. | Flash memory system and method for controlling the same |
US20090070655A1 (en) * | 2007-09-11 | 2009-03-12 | Silicon Motion, Inc. | Method for Generating an ECC Code for a Memory Device |
KR101503058B1 (ko) * | 2008-02-26 | 2015-03-18 | 삼성전자주식회사 | 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서의 채널 부호화/복호화 방법 및 장치 |
CN101572125B (zh) * | 2008-04-30 | 2013-02-27 | 扬智科技股份有限公司 | 错误更正电路及其方法 |
-
2010
- 2010-12-23 CN CN201010602769.2A patent/CN102541675B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809042A (en) * | 1995-04-13 | 1998-09-15 | International Business Machines Corporation | Interleave type error correction method and apparatus |
CN1491486A (zh) * | 2001-02-16 | 2004-04-21 | 汤姆森许可贸易公司 | 用于解码纠错码的方法和设备 |
CN101080874A (zh) * | 2004-12-15 | 2007-11-28 | 日本电气株式会社 | 纠错编码装置以及在其中使用的纠错编码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102541675A (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544073B (zh) | 读取闪存中区块的数据的方法及相关的记忆装置 | |
US8782329B2 (en) | Method for performing data shaping, and associated memory device and controller thereof | |
US8612667B2 (en) | Method for performing data pattern management regarding data accessed by a controller of a flash memory, and associated memory device and controller thereof | |
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 | |
TW201314449A (zh) | 儲存資料之系統及方法 | |
CN102543196B (zh) | 数据读取方法、存储器储存装置及其控制器 | |
US9507658B2 (en) | Data reading method, memory storage device and memory controlling circuit unit | |
CN101572125A (zh) | 错误更正电路及其方法 | |
TWI656442B (zh) | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 | |
TWI474329B (zh) | 提昇錯誤更正能力之方法以及記憶裝置及控制器 | |
CN113485867A (zh) | 于记忆装置中进行数据管理的方法、记忆装置及其控制器 | |
CN102236585A (zh) | 提升错误更正能力的方法以及相关的记忆装置及其控制器 | |
CN103995785A (zh) | 信息处理方法和系统 | |
CN104733051A (zh) | 奇偶校验码的解码方法、存储器储存装置及控制电路单元 | |
CN109783005A (zh) | 控制记忆装置的方法、记忆装置、及其控制器和电子装置 | |
US11709733B2 (en) | Metadata-assisted encoding and decoding for a memory sub-system | |
TWI698742B (zh) | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 | |
CN102541675B (zh) | 提升错误更正能力的方法、记忆装置及其控制器 | |
US10860243B2 (en) | Per cursor logical unit number sequencing | |
US20210042224A1 (en) | Layer interleaving in multi-layered memory | |
CN105938728B (zh) | 用于近似平衡码的编码器和解码器设计 | |
WO2019147473A1 (en) | Storing critical data at a memory system | |
US11632137B2 (en) | Early decoding termination for a memory sub-system | |
US11372719B1 (en) | Memory system | |
KR102085690B1 (ko) | 오류 정정 기능을 구비한 플래시 메모리 저장 장치 및 그 구동 방법 |
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 |