读取闪存中区的数据的方法及相关的记忆装置

申请号 CN201310298245.2 申请日 2013-07-16 公开(公告)号 CN103544073A 公开(公告)日 2014-01-29
申请人 慧荣科技股份有限公司; 发明人 杨宗杰; 刘振宇;
摘要 本 发明 公开了一种记忆装置、记忆装置的 控制器 和读取一闪存中一区 块 的数据的方法,其中该区块包含有多个数据页以及至少一校验页,每一个数据页包含有用来储存数据及其相关的行校验码的多个区段,该校验页的每一个区段则分别用来储存一列校验码,该方法包含有:读取该多个数据页中一特定数据页的数据;对该特定数据页的数据进行译码;以及当该特定数据页中有一特定区段译码失败时,循序读取该多个数据页以及该校验页中所有数据页的原始数据内容,并依据该多个数据页以及该校验页中对应于该特定区段的多个区段中的部分数据来对该特定区段进行错误更正。本发明的方法可以让数据有更高的机率完成更正及译码操作。
权利要求

1.一种读取一闪存中一区的数据的方法,其特征在于,该区块包含有多个数据页以及至少一校验页,每一个数据页包含有多个区段,该多个数据页的每一个区段是用来储存数据及其相关的行校验码,而该至少一校验页的每一个区段则分别用来储存一列校验码,且该列校验码是依据该多个数据页中每一个数据页的一区段的内容所产生,该方法包含有:读取该多个数据页中一特定数据页的数据;
对该特定数据页的数据进行译码;以及
当该特定数据页中有一特定区段译码失败时,循序读取该多个数据页以及该至少一校验页中所有数据页的原始数据内容,并依据该多个数据页以及该至少一校验页中对应于该特定区段的多个区段中的部分数据来对该特定区段进行错误更正。
2.如权利要求1所述的方法,其特征在于,还包括:
于该特定区段进行错误更正之后,对该特定区段的更正后数据进行译码。
3.如权利要求1所述的方法,其特征在于,循序读取该多个数据页以及该至少一校验页中所有数据页的原始数据内容,并依据该多个数据页以及该至少一校验页中对应于该特定区段的多个区段中的部分数据来对该特定区段进行错误更正的步骤包含有:
对该多个数据页中对应于该特定区段的该多个区段进行译码,其中若是区段译码成功,则产生相对应的译码后数据;
将译码失败的该特定区段及其原始数据内容纪录于一储存单元中;
对该多个区段的该译码后数据或是该原始数据内容,以及该至少一校验页中对应于该特定区段的一列校验码进行译码,以产生一译码结果;以及
使用该译码结果以对该特定区段进行错误更正。
4.如权利要求3所述的方法,其特征在于,该储存单元中所储存的该特定区段的该原始数据内容为一软信息,该软信息包含有该原始数据内容的比特值可靠度信息,且使用该译码结果以对该特定区段进行错误更正的步骤包含有:
当该译码结果指出该特定区段的一特定比特没有错误时,将该特定比特所对应的比特值可靠度信息设为最高等级。
5.如权利要求3所述的方法,其特征在于,该储存单元中所储存的该特定区段的该原始数据内容为一软信息,该软信息包含有该原始数据内容的比特值可靠度信息,且使用该译码结果以对该特定区段进行错误更正的步骤包含有:
当该译码结果指出该特定区段的一特定比特具有错误,且该特定比特的错误可以更正时,更正该特定比特的数值,并将所对应的比特值可靠度信息设为最高等级。
6.如权利要求3所述的方法,其特征在于,对该多个数据页中对应于该特定区段的该多个区段进行译码的步骤包含有:
使用一第一译码方式来对该多个数据页中对应于该特定区段的该多个区段进行译码;
以及
对该多个区段的译码后数据或是原始数据内容,以及该至少一校验页中对应于该特定区段的该列校验码进行译码的步骤包含有:
使用异于该第一译码方式的一第二译码方式来对该多个区段的译码后数据或是原始数据内容,以及该至少一校验页中对应于该特定区段的该列校验码进行译码。
7.如权利要求6所述的方法,其特征在于,该第一译码方式为一软译码方式,而该第二译码方式为一硬译码方式。
8.如权利要求6所述的方法,其特征在于,该第一译码方式为一低密度校验码译码方式,而该第二译码方式为一波西-曹杜立-霍权汉译码方式。
9.一种记忆装置,其特征在于包含有:
一闪存,其中该闪存包含多个区块,该多个区块中任一区块所包含有多个数据页以及至少一校验页,每一个数据页包含有多个区段,该多个数据页的每一个区段是用来储存数据及其相关的行校验码,而该至少一校验页的每一个区段则分别用来储存一列校验码,且该列校验码是依据该多个数据页中每一个数据页的一区段的内容所产生;以及一控制器,用来读取该多个数据页中一特定数据页的数据,对该特定数据页的数据进行译码,以及当该特定数据页中有一特定区段译码失败时,该控制器循序读取该多个数据页以及该至少一校验页中所有数据页的原始数据内容,并依据该多个数据页以及该至少一校验页中对应于该特定区段的多个区段中的部分数据来对该特定区段进行错误更正。
10.如权利要求9所述的记忆装置,其特征在于,于该特定区段进行错误更正之后,该控制器对该特定区段的更正后数据进行译码。
11.如权利要求9所述的记忆装置,其特征在于,该控制器对该多个数据页中对应于该特定区段的该多个区段进行译码,其中若是区段译码成功,则产生相对应的译码后数据;该控制器将译码失败的该特定区段及其原始数据内容纪录于一储存单元中;该控制器对该多个区段的该译码后数据或是该原始数据内容,以及该至少一校验页中对应于该特定区段的一列校验码进行译码,以产生一译码结果;以及该控制器使用该译码结果以对该特定区段进行错误更正。
12.如权利要求11所述的记忆装置,其特征在于,该储存单元中所储存的该特定区段的该原始数据内容为一软信息,该软信息包含有该原始数据内容的比特值可靠度信息,且当该译码结果指出该特定区段的一特定比特没有错误时,该控制器将该特定比特所对应的可靠度设为最高等级。
13.如权利要求11所述的记忆装置,其特征在于,该储存单元中所储存的该特定区段的该原始数据内容为一软信息,该软信息包含有该原始数据内容的比特值可靠度信息,且当该译码结果指出该特定区段的一特定比特具有错误,且该特定比特的错误可以更正时,该控制器更正该特定比特的数值,并将所对应的可靠度设为最高等级。
14.如权利要求11所述的记忆装置,其特征在于,该控制器使用一第一译码方式来对该多个数据页中对应于该特定区段的该多个区段进行译码;以及该控制器使用异于该第一译码方式的一第二译码方式来对该多个区段的译码后数据或是原始数据内容,以及该至少一校验页中对应于该特定区段的该列校验码进行译码。
15.如权利要求14所述的记忆装置,其特征在于,该第一译码方式为一软译码方式,而该第二译码方式为一硬译码方式。
16.如权利要求14所述的记忆装置,其特征在于,该第一译码方式为一低密度校验码译码方式,而该第二译码方式为一波西-曹杜立-霍权汉译码方式。
17.一种记忆装置的控制器,其特征在于,该控制器是用来存取一闪存,其中该闪存包含多个区块,该多个区块中任一区块所包含有多个数据页以及至少一校验页,每一个数据页包含有多个区段,该多个数据页的每一个区段是用来储存数据及其相关的行校验码,而该至少一校验页的每一个区段则分别用来储存一列校验码,且该列校验码是依据该多个数据页中每一个数据页的一区段的内容所产生;该控制器包含有:
一只读存储器,用来储存一程序代码;
微处理器,用来执行该程序代码以控制对该闪存的存取以及管理该多个区块;以及一错误更正码单元;
其中当该错误更正码单元对一特定数据页的数据进行译码,且该特定数据页中有一特定区段译码失败时,该错误更正码单元循序读取该多个数据页以及该至少一校验页中所有数据页的原始数据内容,并依据该多个数据页以及该至少一校验页中对应于该特定区段的多个区段中的部分数据来对该特定区段进行错误更正。
18.如权利要求17所述的控制器,其特征在于,于该特定区段进行错误更正之后,该错误更正码单元对该特定区段的更正后数据进行译码。
19.如权利要求17所述的控制器,其特征在于,该错误更正码单元对该多个数据页中对应于该特定区段的该多个区段进行译码,其中若是区段译码成功,则产生相对应的译码后数据;该错误更正码单元将译码失败的该特定区段及其原始数据内容纪录于一储存单元中;该错误更正码单元对该多个区段的该译码后数据或是该原始数据内容,以及该至少一校验页中对应于该特定区段的一列校验码进行译码,以产生一译码结果;以及该错误更正码单元使用该译码结果以对该特定区段进行错误更正。
20.如权利要求19所述的控制器,其特征在于,该储存单元中所储存的该特定区段的该原始数据内容为一软信息,该软信息包含有该原始数据内容的比特值可靠度信息,且当该译码结果指出该特定区段的一特定比特没有错误时,该错误更正码单元将该特定比特所对应的可靠度设为最高等级。
21.如权利要求19所述的控制器,其特征在于,该储存单元中所储存的该特定区段的该原始数据内容为一软信息,该软信息包含有该原始数据内容的比特值可靠度信息,且当该译码结果指出该特定区段的一特定比特具有错误,且该特定比特的错误可以更正时,该错误更正码单元更正该特定比特的数值,并将所对应的可靠度设为最高等级。
22.如权利要求19所述的控制器,其特征在于,该错误更正码单元包含一第一译码器以及一第二译码器,该第一译码器使用一第一译码方式来对该多个数据页中对应于该特定区段的该多个区段进行译码;以及该第二译码器使用异于该第一译码方式的一第二译码方式来对该多个区段的译码后数据或是原始数据内容,以及该至少一校验页中对应于该特定区段的该列校验码进行译码。
23.如权利要求22所述的控制器,其特征在于,该第一译码方式为一软译码方式,而该第二译码方式为一硬译码方式。
24.如权利要求22所述的控制器,其特征在于,该第一译码方式为一低密度校验码译码方式,而该第二译码方式为一波西-曹杜立-霍权汉译码方式。

说明书全文

读取闪存中区的数据的方法及相关的记忆装置

技术领域

[0001] 本发明涉及闪存(Flash Memory),尤指一种读取一闪存中一区块的数据的方法及相关的记忆装置。

背景技术

[0002] 闪存可通过电子式的抹除(erase)与写入/程序化(program)以进行数据储存,并且广泛地应用于记忆卡(memory card)、固态硬盘(solid-state drive)与可携式多媒体播放器等等。由于闪存为非挥发性(non-volatile)记忆体,因此,不需要额外电来维持闪存所储存的信息,此外,闪存可提供快速的数据读取与较佳的抗震能力,而这些特性也说明了闪存为何会如此普及的原因。
[0003] 闪存可区分为NOR型闪存与NAND型闪存。对于NAND型闪存来说,其具有较短的抹除及写入时间且每一记忆体单元需要较少的芯片面积,因而相较于NOR型闪存,NAND型闪存会允许较高的储存密度以及较低的每一储存比特的成本。一般来说,闪存以记忆体单元数组的方式来储存数据,而记忆体单元是由一浮动闸极晶体管(floating-gate transistor)来加以实作,且每一记忆体单元可通过适当地控制浮动闸极晶体管的浮动闸极上的电荷个数来设定导通该浮动闸极晶体管所实作的该记忆体单元的所需临界电压,进而储存单一个比特的信息或者一个比特以上的信息,如此一来,当一或多个预定控制闸极电压施加于浮动闸极晶体管的控制闸极之上,则浮动闸极晶体管的导通状态便会指示出浮动闸极晶体管中所储存的一或多个二进制数(binary digit)。
[0004] 然而,由于某些因素,闪存单元中原本储存的电荷的个数可能会受到影响/扰乱,举例来说,闪存中所存在的干扰可能来自于写入干扰(write/program disturbance)、读取干扰(read disturbance)及/或保持干扰(retention disturbance)。以具有各自储存一个比特以上的信息的记忆体单元的NAND型闪存为例,一个物理记忆体分页(physical page)会包含多个逻辑记忆体分页(logical page),且每一逻辑记忆体分页采用一或多个控制闸极电压来进行读取。举例来说,对于一个用以储存3个比特的信息的闪存单元来说,该闪存单元会具有分别对应不同电荷个数(亦即不同临界电压)的8种状态(亦即电荷位准)的其中之一,然而,由于写入/抹除次数(program/erase count,P/E count)及/或数据保留时间(retention time)的缘故,闪存单元中的记忆体单元的临界电压分布(threshold voltage distribution)便会有所改变,因此,使用原本的控制闸极电压设定(亦即临界电压设定)来读取记忆体单元中所储存的信息可能会因为改变后的临界变压分布而无法正确地获得所储存的信息。
[0005] 上述有关于闪存单元中的记忆体单元的临界电压分布改变或偏移通常会造成数据读取上的错误,而此一问题可以通过使用错误更正码(Error Correction Code,ECC)来获得改善。然而,当闪存单元重复写入读取多次时,闪存单元中噪声发生的情况便不再是高斯噪声分布,而是发生较强噪声(亦即,记忆体单元的临界电压分布改变或偏移较大)的机率会高过于发生较低噪声(亦即,记忆体单元的临界电压分布改变或偏移较小)的机率,因此,由于闪存单元在重复写入读取多次时会很容易有较强噪声的产生,故也会需要较多比特的错误更正码来更正错误数据,因而造成了闪存容量的浪费。

发明内容

[0006] 因此,本发明的目的之一在于提出一种读取一闪存中一区块的数据的方法与相关的记忆装置,其中该闪存中的数据是经由一种特殊编码方法所产生,以解决现有技术的问题。
[0007] 依据本发明一实施例,公开一种读取一闪存中一区块的数据的方法,其中该区块包含有多个数据页以及至少一校验页,每一个数据页包含有多个区段,该多个数据页的每一个区段是用来储存数据及其相关的行校验码,而该至少一校验页的每一个区段则分别用来储存一列校验码,且该列校验码是依据该多个数据页中每一个数据页的一区段的内容所产生,该方法包含有:读取该多个数据页中一特定数据页的数据;对该特定数据页的数据进行译码;以及当该特定数据页中有一特定区段译码失败时,循序读取该多个数据页以及该至少一校验页中所有数据页的原始数据内容,并依据该多个数据页以及该至少一校验页中对应于该特定区段的多个区段中的部分数据来对该特定区段进行错误更正。
[0008] 依据本发明另一实施例,一种记忆装置包含有一闪存以及一控制器,其中该闪存包含多个区块,该多个区块中任一区块所包含有多个数据页以及至少一校验页,每一个数据页包含有多个区段,该多个数据页的每一个区段是用来储存数据及其相关的行校验码,而该至少一校验页的每一个区段则分别用来储存一列校验码,且该列校验码是依据该多个数据页中每一个数据页的一区段的内容所产生;该控制器,用来读取该多个数据页中一特定数据页的数据,对该特定数据页的数据进行译码,以及当该特定数据页中有一特定区段译码失败时,该控制器循序读取该多个数据页以及该至少一校验页中所有数据页的原始数据内容,并依据该多个数据页以及该至少一校验页中对应于该特定区段的多个区段中的部分数据来对该特定区段进行错误更正。
[0009] 依据本发明另一实施例,揭露一种记忆装置的控制器,该控制器是用来存取一闪存,其中该闪存包含多个区块,该多个区块中任一区块所包含有多个数据页以及至少一校验页,每一个数据页包含有多个区段,该多个数据页的每一个区段是用来储存数据及其相关的行校验码,而该至少一校验页的每一个区段则分别用来储存一列校验码,且该列校验码是依据该多个数据页中每一个数据页的一区段的内容所产生;该控制器包含有一只读存储器、一微处理器以及一错误更正码单元。该只读存储器用来储存一程序代码;该微处理器用来执行该程序代码以控制对该闪存的存取以及管理该多个区块;其中当该错误更正码单元对一特定数据页的数据进行译码,且该特定数据页中有一特定区段译码失败时,该错误更正码单元循序读取该多个数据页以及该至少一校验页中所有数据页的原始数据内容,并依据该多个数据页以及该至少一校验页中对应于该特定区段的多个区段中的部分数据来对该特定区段进行错误更正。附图说明
[0010] 图1为依据本发明一实施例的一种记忆装置的示意图。
[0011] 图2为图1所示的闪存的一区块的示意图。
[0012] 图3为产生图2所示的列校验码CP_D01与CP_D02的示意图。
[0013] 图4A与4B为依据本发明一实施例的读取一闪存中一区块的数据的方法的流程图
[0014] 其中,附图标记说明如下:
[0015] 100 记忆装置
[0016] 110 记忆体控制器
[0017] 112 微处理器
[0018] 112C 程序代码
[0019] 112M 只读存储器
[0020] 114 控制逻辑
[0021] 116 缓冲存储器
[0022] 118 接口逻辑
[0023] 120 闪存
[0024] 130 错误更正码单元
[0025] 132 第一编码器
[0026] 134 第二编码器
[0027] 136 第一译码器
[0028] 13 第二译码器

具体实施方式

[0029] 请参考图1,图1为依据本发明一实施例的一种记忆装置100的示意图,其中本实施例的记忆装置100尤其为可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡)。记忆装置100包含有一闪存(Flash Memory)120以及一控制器,该控制器可为一记忆体控制器110,且用来存取闪存120。依据本实施例,记忆体控制器110包含一微处理器112、一只读存储器(Read Only Memory,ROM)112M、一控制逻辑114、一缓冲存储器116、与一接口逻辑118。只读存储器是用来储存一程序代码112C,而微处理器112则用来执行程序代码
112C以控制对闪存120的存取(Access)。此外,控制逻辑114包含有一错误更正码(Error Correcting Code,ECC)单元130,且错误更正码单元130包含有一第一编码器132、一第二编码器134、一第一译码器136以及一第二译码器138,其中第一编码器132、第二编码器
134、第一译码器136以及第二译码器138中有部分的电路可以是共有的,亦或是彼此之间为独立的电路。
[0030] 在典型状况下,闪存120包含多个区块(Block),而该控制器(例如:通过微处理器112执行程序代码112C的记忆体控制器110)对闪存120进行复制、抹除、合并数据等运作。
其中以区块为单位来进行抹除。另外,一区块可记录特定数量的数据页(Page),其中该控制器(例如:通过微处理器112执行程序代码112C的记忆体控制器110)对闪存120进行写入数据的运作是以数据页为单位来进行写入。
[0031] 实作上,通过微处理器112执行程序代码112C的记忆体控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存120的存取运作(尤其是对至少一区块或至少一数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置(Host Device)沟通。
[0032] 请参考图2,图2为闪存120的一区块200的示意图,于图2中,区块200包含有192个数据页P0~P191,其中数据页P0~P189是用来作为储存数据及其行校验码(row parity)之用,而数据页P190、P191则是作为校验页,用来储存数据页P0~P189的列校验码(column parity)。详细来说,当记忆体控制器110需要将数据写入至闪存120的一区块
200时,记忆体控制器110中的第一编码器132会使用一第一编码方式来将数据逐页写入至区块200中的数据页P0~P189中,而该第一编码方式可以为一低密度校验码(Low Density Parity Check,LDPC)编码方式,或是任何其它适合的编码方式,亦即,记忆体控制器110使用该第一编码方式来将欲写入的数据进行编码以产生数据及其行校验码(Data0_0与RP0_0、…、Data0_n与RP0_n、…、Data189_n与RP189_n),并将其逐页写入至数据页P0~P189中,其中一组数据及其行校验码(例如Data0_0与RP0_0)构成一个码字(codeword),亦即作为数据页中的一个区段(sector)。
[0033] 等到数据页P0~P189全部写入完成后,记忆体控制器110中的第二编码器134会使用一第二编码方式来产生数据页P0~P189的列校验码,并将所产生的列校验码写入至校验页P190、P191中,其中该第二编码方式可以为一波西-曹杜立-霍权汉(Bose-Chaudhuri-Hocquenghem,BCH)编码方式,或是任何其它适合的编码方式。详细来说,请参考图3,图3为产生图2所示的列校验码CP_D01与CP_D02的示意图。如图3所示,第二编码器134是以比特为列编码单位,先将数据页P0~P189的第一个比特b0_0~b189_0进行编码以产生列校验码CP_D01与CP_D02中的两个比特b190_0与b191_0,接着,将数据页P0~P189的第二个比特b0_1~b189_1进行编码以产生列校验码CP_D01与CP_D02中的两个比特b190_1与b191_1,接着再将数据页P0~P189的第三个比特b0_2~b189_2进行编码以产生列校验码CP_D01与CP_D02中的两个比特b190_2与b191_2,…以此类推,记忆体控制器110便可产生列校验码CP_D01(b190_0、b190_1、…)与CP_D02(b191_0、b191_1、…),并将其写入至校验页P190、P191中。
[0034] 需注意的是,虽然图3所示的编码方式是以“比特”为编码单位,然而,此并非作为本发明的限制。于本发明的其它实施例中,编码方式亦可以使用“字节(byte)”或是其它的比特数量为编码单位,以使用“字节”为编码单位来举例说明,记忆体控制器110将数据页P0~P189的第一个字节进行编码以产生列校验码CP_D01与CP_D02中的两个字节,接着将数据页P0~P189的第二个字节进行编码以产生列校验码CP_D01与CP_D02中的另两个字节、…以此类推。这些设计上的改变均应隶属于本发明的范畴。
[0035] 此外,需注意的是上述第2、3图仅为一范例说明,而并非作为本发明的限制,在本发明的其它实施例中,区块200所包含的数据页与校验页的数量可以改变,校验页的位置也可有所改变,举例来说,区块200中的数据页P95与P191可以被用来作为校验页,且校验页P95用来储存数据页P0~P94的列校验码,而校验页P191用来储存数据页P96~P190的列校验码。这些设计上的变化均应隶属于本发明的范畴。
[0036] 接着,请参考图4A与4B,图4A与4B为依据本发明一实施例读取一闪存中一区块的数据的方法的流程图。在以下的说明中,是以图2所示的区块200为例,且以数据页P2作为记忆体控制器110所欲读取的数据页。参考第1~4图,流程叙述如下:
[0037] 在步骤400中,流程开始。在步骤402,记忆体控制器110依据一指令来读取区块200中一特定数据页的数据,亦即读取数据页P2中的数据。在本实施例中,记忆体控制器
110所读取的数据页P2的数据为软信息(soft information),举例来说,针对数据页P2的第一个比特b2_0,记忆体控制器110会读取相对应的记忆体单元多次(例如7次)以产生一比特序列,而此比特序列则用来作为数据页P2的第一个比特b2_0的软信息,其包含了比特值的可靠度信息(亦即,该比特序列是用来表示为逻辑“1”的可能性以及为逻辑“0”的可能性)。举例来说,假设第一个比特b2_0的软信息为“1111111”,则表示第一个比特b2_0有最高的可能性是逻辑“1”;假设第一个比特b2_0的软信息为“0000000”,则表示第一个比特b2_0有最高的可能性是逻辑“0”,请注意到,可靠度信息的意义不以此为限。由于“软信息”的意义与其表示方式应为本领域中具有通常知识者所熟知,故在此不再赘述。
[0038] 接着,在步骤404,第一译码器136对所读出的数据页P2的数据进行译码。于本实施例中,第一译码器136是对所读出的数据页P2的数据进行LDPC译码,亦即使用每一个区段中的数据与其行校验码(例如Data2_0与RP2_0)来译码出正确的数据(亦即,数据Data2_0中的错误可以依据行校验码RP2_0来进行更正)。若是第一译码器136译码成功,表示数据页P2中的所有区段中数据的错误均可以被更正,因此第一译码器136便会产生译码后数据至缓冲存储器116以进行后续处理,而流程则进入406以结束流程;若是第一译码器136译码失败,则表示数据页P2中至少有一个区段中的数据可能错误的比特数过多,而无法依据其行校验码来进行更正,此时流程进入步骤408。
[0039] 在步骤408中,记忆体控制器110循序读取区块200中的所有数据页P0~P191,且第一译码器136循序对数据页P0~P189中的数据进行LDPC译码。
[0040] 在步骤410中,针对数据页P0~P189中的每一个数据页的每一个区段,若是译码成功,则流程进入步骤412以将译码后的数据储存至缓冲存储器116中;若是译码失败,则流程进入步骤414,记忆体控制器110重新读取译码失败的区段的原始数据,并将此原始数据(软信息)与区段位置储存至缓冲存储器116中的一错误记录表格中。举例来说,假设数据页P0与数据页P2的第一个区段发生了译码失败的情形,则此时记忆体控制器会重新读取数据页P0与P2第一个区段的原始数据(亦即图2所示的Data0_0、RP0_0、Data2_0与RP2_0),并将此原始数据储存于缓冲存储器116中,且在缓冲存储器116的该错误记录表格中记录数据页P0与P2第一个区段有译码错误的情形。
[0041] 接着,在步骤416中,第二译码器138对缓冲存储器116中所储存的数据页P0~P189中每一个数据页的每一个区段的译码后数据(于步骤412产生)或是原始数据(于步骤414产生)以及校验页P190与P191中的列校验码来进行译码(于本实施例中,是使用BCH译码方式)。详细来说,参考图3,假设参考错误记录表格后,发现区块200中只有数据页P0与P2的第一个区段无法使用第一译码器136来译码成功,则此时第二译码器138首先会对数据页P0~P189与校验页P190~P191中的第一个比特(亦即b0_0、b1_0、b2_0、…、b191_0)进行译码,并产生一译码结果,其中该译码结果是用来指出数据页P0~P189中的第一个比特是否有错误发生。接着,判断该译码结果是否指出有错误比特发生(步骤418),若是该译码结果指出没有错误比特发生,则流程进入步骤420以将数据页P0与P2中的第一个比特b0_0与b2_0的原始数据(储存于缓冲存储器116)的可靠度信息设为最高等级(亦即b0_0与b2_0有很强的可能性是逻辑“1”或“0”,例如将第一个比特b0_0与b2_0的原始数据均设为“1111111”或是“0000000”);若是该译码结果指出数据页P0或P2中有错误比特发生,则流程进入步骤422以判断数据页P0或P2中的第一个比特b0_0或b2_0的原始数据是否可以修正,若是可以修正,则流程进入步骤424以更正数据页P0或P2中的第一个比特b0_0与b2_0的原始数据的错误,并将其可靠度信息设为最高等级;若是不可以修正,则流程进入步骤426以维持数据页P0或P2中的第一个比特b0_0与b2_0的原始数据。
[0042] 同理,针对数据页P0~P189与校验页P190~P191中的第二个比特(亦即b0_1、b1_1、b2_1、…、b191_1),第二译码器138会对这些第二个比特进行译码以产生一译码结果,之后在经由步骤418~426来决定是否将数据页P0与P2中的第二个比特b0_1与b2_1的原始数据进行修正或维持原有的值。以此类推,第二译码器138持续对数据页P0~P189与校验页P190~P191中的数据进行译码,等到完成数据页P0~P189与校验页P190~P191中最后一个比特的译码之后,缓冲存储器116中所储存的数据页P0与P2中的第一个区段数据已得到需要的修正,此时,第一译码器136可再次对缓冲存储器116中所储存的数据页P0与P2中的第一个区段数据来进行LDPC译码,以得到译码后的数据。请注意到,类似于编码时可用比特、字节或以其它比特数目进行编码,译码时亦可用比特、字节或其它比特数目进行译码,上述的实施例以单一比特进行译码,熟悉此项技艺者在本发明的教导之下当得利用其它比特数目进行译码,此亦为本发明的范畴。
[0043] 此外,上述图4A与4B的流程仅为一范例说明,而并非作为本发明的限制。在本发明的一实施例中,记忆体控制器110可以将区块200中所有数据页P0~P189的数据均进行LDPC译码,并将所有译码失败的区段均储存在缓冲存储器116中,此外,记忆体控制器110使用校验页P190~P191中的所有列较验码来对区块200中所有的数据进行BCH译码,以将储存缓冲存储器116中的所有译码失败区段的原始数据进行更正;另外,在本发明的一实施例中,记忆体控制器110可以仅针对需要译码的特定区段的相对应区段进行LDPC译码即可,亦即假设使用者只需要数据页P2第一个区段的数据,且此区段无法被LDPC译码,则记忆体控制器110可以仅对数据页P0~P189中的第一个区段的数据进行LDPC译码,并将译码失败的区段储存在缓冲存储器116中,之后再用使用校验页P190~P191中第一个区段的列较验码来对数据页P0~P189中的第一个区段的数据进行BCH译码。上述设计上的变化均应隶属于本发明的范畴。
[0044] 此外,在本发明的另一实施例中,上述使用第一译码器136与第二译码器138来进行译码的过程可以多次重复操作(iteration),亦即第一译码器136对数据页P0~P189的第一个区段进行LDPC译码,之后第二译码器138使用校验页P190~P191对数据页P0~P189进行BCH译码以更正部分的错误,之后第一译码器136再对数据页P0~P189的第一个区段进行LDPC译码以产生更多的译码后数据,接着第二译码器138再使用校验页P190~P191对数据页P0~P189进行BCH译码以更正其余的错误…以此类推。如此一来,便可以使得比特错误较多的区段可以有更高的机率被更正回来。
[0045] 简要归纳本发明,本发明的闪存区块中有部分的数据页是用来作为储存列校验码的校验页,且当所欲读取的一特定数据页中的数据无法依据行校验码来完成译码/更正时,记忆体控制器会循序读取其它数据页以及校验页的内容,并使用列校验码来更正该特定数据页的部分内容,以使得该特定数据页后续可以有更高的机率来完成译码。
[0046] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
QQ群二维码
意见反馈