CN105304142A - 解码方法、存储器存储装置及存储器控制电路单元 - Google Patents
解码方法、存储器存储装置及存储器控制电路单元 Download PDFInfo
- Publication number
- CN105304142A CN105304142A CN201410279151.5A CN201410279151A CN105304142A CN 105304142 A CN105304142 A CN 105304142A CN 201410279151 A CN201410279151 A CN 201410279151A CN 105304142 A CN105304142 A CN 105304142A
- Authority
- CN
- China
- Prior art keywords
- bits
- those
- bit
- information
- control circuit
- 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.)
- Granted
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种解码方法、存储器存储装置及存储器控制电路单元。所述解码方法包括:发送读取指令序列,其用以读取多个存储单元以取得多个第一比特;判断所述第一比特是否具有第一错误;若所述第一比特具有所述第一错误,对所述第一比特执行第一迭代解码程序以取得多个第二比特,并且记录所述第一迭代解码程序的第一比特翻转信息;判断所述第二比特是否具有第二错误;若所述第二比特具有所述第二错误,根据所述第一比特翻转信息对所述第二比特执行第二迭代解码程序以取得多个第三比特。
Description
技术领域
本发明是有关于一种解码方法,且特别是有关于一种用于可复写式非易失性存储器模块的解码方法、存储器存储装置及存储器控制电路单元。
背景技术
数码相机、移动电话与MP3播放器在这几年来的成长十分迅速,使得消费者对存储媒体的需求也急速增加。由于可复写式非易失性存储器模块(例如,快闪存储器)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内装于上述所举例的各种可携式多媒体装置中。
一般来说,为了确保数据的完整性,欲写入至可复写式非易失性存储器模块的数据会被编码。编码过的数据才会被写入至可复写式非易失性存储器模块。从可复写式非易失性存储器模块中读取出的数据则会经过对应的解码程序。在众多的解码算法中,比特翻转(bitflipping)解码算法是运算复杂度较低的。但是,比特翻转解码算法的解码成功率也相对较低。
发明内容
本发明提供一种解码方法、存储器存储装置及存储器控制电路单元,可使用运算复杂度较低的解码算法,并且可提升解码成功率。
本发明的一范例实施例提供一种解码方法,其用于可复写式非易失性存储器模块,所述可复写式非易失性存储器模块包括多个存储单元,所述解码方法包括:发送读取指令序列,其中所述读取指令序列用以读取所述存储单元以取得多个第一比特;判断所述第一比特是否具有至少一第一错误;若所述第一比特具有所述第一错误,对所述第一比特执行第一迭代解码程序以取得多个第二比特,并且记录所述第一迭代解码程序的第一比特翻转信息;判断所述第二比特是否具有至少一第二错误;若所述第二比特具有所述第二错误,根据所述第一比特翻转信息对所述第二比特执行第二迭代解码程序以取得多个第三比特;以及若所述第二比特不具有所述第二错误,输出所述第二比特。
在本发明的一范例实施例中,所述的第一比特翻转信息包括一错误索引信息,并且错误索引信息用以指示所述第一比特中被翻转或未被翻转的至少一第一比特。
在本发明的一范例实施例中,所述的判断所述第二比特是否具有所述第二错误的步骤包括:对所述第二比特执行一奇偶校验(paritycheck)程序以取得多个校验子(syndrome),其中每一所述第二比特是对应至所述校验子的至少其中之一;以及根据所述校验子判断所述第二比特是否具有所述第二错误。
在本发明的一范例实施例中,所述的根据第一比特翻转信息对所述第二比特执行第二迭代解码程序以取得所述第三比特的步骤包括:根据第一比特翻转信息取得所述第二比特的一校验权重信息;以及根据校验权重信息来翻转所述第二比特的至少其中之一。
在本发明的一范例实施例中,所述的根据第一比特翻转信息取得所述第二比特的校验权重信息的步骤包括:对第一比特翻转信息执行一缩放(scaling)操作以产生一参考信息;以及将参考信息与所述第二比特的一预设校验权重信息相加以取得所述第二比特的校验权重信息。
在本发明的一范例实施例中,所述的对第一比特翻转信息执行缩放操作以产生参考信息的步骤包括:将第一比特翻转信息与一缩放参数相乘,其中缩放参数的值与一总迭代次数为负相关(negativecorrelation)。
在本发明的一范例实施例中,所述的缩放参数的值还与一奇偶校验矩阵的一行权重(columnweight)为负相关。
在本发明的一范例实施例中,所述的解码方法还包括:记录第二迭代解码程序的一第二比特翻转信息;判断所述第三比特是否具有至少一第三错误;若所述第三比特具有所述第三错误,根据第二比特翻转信息对所述第三比特执行一第三迭代解码程序以取得多个第四比特,其中第二比特翻转信息与第一比特翻转信息不同;以及若所述第三比特不具有所述第三错误,输出所述第三比特。
在本发明的一范例实施例中,所述的解码方法是使用一低密度奇偶校验算法来编码与解码。
本发明的一范例实施例提供一种存储器存储装置,其包括连接接口单元、可复写式非易失性存储器模块及存储器控制电路单元。连接接口单元用以电性连接至一主机系统。可复写式非易失性存储器模块包括多个存储单元。存储器控制电路单元电性连接至连接接口单元与可复写式非易失性存储器模块,并且用以发送一读取指令序列,其中读取指令序列用以读取所述存储单元以取得多个第一比特。存储器控制电路单元还用以判断所述第一比特是否具有至少一第一错误。若所述第一比特具有所述第一错误,存储器控制电路单元还用以对所述第一比特执行一第一迭代解码程序以取得多个第二比特,并且记录第一迭代解码程序的一第一比特翻转信息。存储器控制电路单元还用以判断所述第二比特是否具有至少一第二错误。若所述第二比特具有所述第二错误,存储器控制电路单元还用以根据第一比特翻转信息对所述第二比特执行一第二迭代解码程序以取得多个第三比特。若所述第二比特不具有所述第二错误,存储器控制电路单元还用以输出所述第二比特。
在本发明的一范例实施例中,所述的第一比特翻转信息包括一错误索引信息,并且错误索引信息用以指示所述第一比特中被翻转或未被翻转的至少一第一比特。
在本发明的一范例实施例中,所述的存储器控制电路单元判断所述第二比特是否具有所述第二错误的操作包括:存储器控制电路单元对所述第二比特执行一奇偶校验程序以取得多个校验子,其中每一所述第二比特是对应至所述校验子的至少其中之一,存储器控制电路单元根据所述校验子判断所述第二比特是否具有所述第二错误。
在本发明的一范例实施例中,所述的存储器控制电路单元根据第一比特翻转信息对所述第二比特执行第二迭代解码程序以取得所述第三比特的操作包括:存储器控制电路单元根据第一比特翻转信息取得所述第二比特的一校验权重信息;以及存储器控制电路单元根据校验权重信息来翻转所述第二比特的至少其中之一。
在本发明的一范例实施例中,所述的存储器控制电路单元根据第一比特翻转信息取得所述第二比特的校验权重信息的操作包括:存储器控制电路单元对第一比特翻转信息执行一缩放操作以产生一参考信息;以及存储器控制电路单元将参考信息与所述第二比特的一预设校验权重信息相加以取得所述第二比特的校验权重信息。
在本发明的一范例实施例中,所述的存储器控制电路单元对第一比特翻转信息执行缩放操作以产生参考信息的操作包括:存储器控制电路单元将第一比特翻转信息与一缩放参数相乘,其中缩放参数的值与一总迭代次数为负相关。
在本发明的一范例实施例中,所述的缩放参数的值还与一奇偶校验矩阵的一行权重为负相关。
在本发明的一范例实施例中,所述的存储器控制电路单元还用以记录第二迭代解码程序的一第二比特翻转信息。存储器控制电路单元还用以判断所述第三比特是否具有至少一第三错误。若所述第三比特具有所述第三错误,存储器控制电路单元还用以根据第二比特翻转信息对所述第三比特执行一第三迭代解码程序以取得多个第四比特,其中第二比特翻转信息与第一比特翻转信息不同。若所述第三比特不具有所述第三错误,存储器控制电路单元还用以输出所述第三比特。
在本发明的一范例实施例中,所述的存储器控制电路单元是使用一低密度奇偶校验算法来编码与解码。
本发明的一范例实施例提供一种存储器控制电路单元,其用于控制一可复写式非易失性存储器模块,其中可复写式非易失性存储器模块包括多个存储单元,存储器控制电路单元包括主机接口、存储器接口、存储器管理电路及错误检测与校正电路。主机接口用以电性连接至一主机系统。存储器接口用以电性连接至可复写式非易失性存储器模块。存储器管理电路电性连接至主机接口与存储器接口,并且用以发送一读取指令序列,其中读取指令序列用以读取所述存储单元以取得多个第一比特。错误检测与校正电路电性连接至存储器管理电路,并且用以判断所述第一比特是否具有至少一第一错误。若所述第一比特具有所述第一错误,错误检测与校正电路还用以对所述第一比特执行一第一迭代解码程序以取得多个第二比特,并且记录第一迭代解码程序的一第一比特翻转信息。错误检测与校正电路还用以判断所述第二比特是否具有至少一第二错误。若所述第二比特具有所述第二错误,错误检测与校正电路还用以根据第一比特翻转信息对所述第二比特执行一第二迭代解码程序以取得多个第三比特。若所述第二比特不具有所述第二错误,错误检测与校正电路还用以输出所述第二比特。
在本发明的一范例实施例中,所述的第一比特翻转信息包括一错误索引信息,并且错误索引信息用以指示所述第一比特中被翻转或未被翻转的至少一第一比特。
在本发明的一范例实施例中,所述的错误检测与校正电路判断所述第二比特是否具有所述第二错误的操作包括:错误检测与校正电路对所述第二比特执行一奇偶校验程序以取得多个校验子,其中每一所述第二比特是对应至所述校验子的至少其中之一;以及错误检测与校正电路根据所述校验子判断所述第二比特是否具有所述第二错误。
在本发明的一范例实施例中,所述的错误检测与校正电路根据第一比特翻转信息对所述第二比特执行第二迭代解码程序以取得所述第三比特的操作包括:错误检测与校正电路根据第一比特翻转信息取得所述第二比特的一校验权重信息;以及错误检测与校正电路根据校验权重信息来翻转所述第二比特的至少其中之一。
在本发明的一范例实施例中,所述的错误检测与校正电路根据第一比特翻转信息取得所述第二比特的校验权重信息的操作包括:错误检测与校正电路对第一比特翻转信息执行一缩放操作以产生一参考信息;以及错误检测与校正电路将参考信息与所述第二比特的一预设校验权重信息相加以取得所述第二比特的校验权重信息。
在本发明的一范例实施例中,所述的错误检测与校正电路对第一比特翻转信息执行缩放操作以产生参考信息的操作包括:错误检测与校正电路将第一比特翻转信息与一缩放参数相乘,其中缩放参数的值与一总迭代次数为负相关。
在本发明的一范例实施例中,所述的缩放参数的值还与一奇偶校验矩阵的一行权重为负相关。
在本发明的一范例实施例中,所述的错误检测与校正电路还用以记录第二迭代解码程序的一第二比特翻转信息。错误检测与校正电路还用以判断所述第三比特是否具有至少一第三错误。若所述第三比特具有所述第三错误,错误检测与校正电路还用以根据第二比特翻转信息对所述第三比特执行一第三迭代解码程序以取得多个第四比特,其中第二比特翻转信息与第一比特翻转信息不同。若所述第三比特不具有所述第三错误,错误检测与校正电路还用以输出所述第三比特。
在本发明的一范例实施例中,所述的错误检测与校正电路是使用一低密度奇偶校验算法来编码与解码。
基于上述,在本发明的一范例实施例中,每一次执行的迭代解码程序都会参考过去的比特翻转信息。藉此,即使所使用的解码算法的运算复杂度较低,解码效率也能被提升。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据本发明的一范例实施例所示出的主机系统与存储器存储装置的范例示意图;
图2是根据本发明的一范例实施例所示出的电脑、输入/输出装置与存储器存储装置的范例示意图;
图3是根据本发明的一范例实施例所示出的主机系统与存储器存储装置的范例示意图;
图4是示出图1所示的存储器存储装置的概要方块图;
图5是根据本发明的一范例实施例所示出的可复写式非易失性存储器模块的概要方块图;
图6是根据本发明的一范例实施例所示出的存储单元阵列的范例示意图;
图7是根据本发明的一范例实施例所示出的管理可复写式非易失性存储器模块的范例示意图;
图8是根据本发明的一范例实施例所示出的存储器控制电路单元的概要方块图;
图9是根据本发明的一范例实施例所示出的奇偶校验矩阵的范例示意图;
图10是根据本发明的一范例实施例所示出的SLC型快闪存储器模块的临界电压分布的范例示意图;
图11是根据本发明的一范例实施例所示出的矩阵相乘的范例示意图;
图12是根据本发明的一范例实施例所示出的第一迭代解码程序的范例示意图;
图13是根据本发明的一范例实施例所示出的第二迭代解码程序的范例示意图;
图14是根据本发明的一范例实施例所示出的另一次矩阵相乘的范例示意图;
图15是根据本发明的一范例实施例所示出的错误检测与校正电路的概要方块图;
图16是根据本发明的一范例实施例所示出的解码方法的流程图。
附图标记说明:
1000:主机系统;
1100:电脑;
1102:微处理器;
1104:随机存取存储器;
1106:输入/输出装置;
1108:系统总线;
1110:数据传输接口;
1202:鼠标;
1204:键盘;
1206:显示器;
1208:打印机;
1212:U盘;
1214:记忆卡;
1216:固态硬盘;
1310:数码相机;
1312:SD卡;
1314:MMC卡;
1316:记忆棒;
1318:CF卡;
1320:嵌入式存储器;
100:存储器存储装置;
102:连接接口单元;
104:存储器控制电路单元;
106:可复写式非易失性存储器模块;
2202:存储单元阵列;
2204:字符线控制电路;
2206:比特线控制电路;
2208:行解码器;
2210:数据输入/输出缓冲器;
2212:控制电路;
702:存储单元;
704:比特线;
706:字符线;
708:共用电源线;
712、714:晶体管;
400(0)~400(N):实体程序化单元;
202:存储器管理电路;
204:主机接口;
206:存储器接口;
208:错误检测与校正电路;
210:缓冲存储器;
212:电源管理电路;
900:奇偶校验矩阵;
1010、1020:分布;
1030:重叠区域;
1101、1301、1401:码字;
1105、1302、1402:校验向量;
1501:缓冲电路;
1502:逻辑运算电路;
1503:比特翻转解码电路;
S1601、S1602、S1603、S1604、S1605、S1606、S1607:解码方法各步骤。
具体实施方式
一般而言,存储器存储装置(也称,存储系统)包括可复写式非易失性存储器模块与控制器(也称,控制电路)。通常存储器存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储器存储装置或从存储器存储装置中读取。
图1是根据本发明的一范例实施例所示出的主机系统与存储器存储装置的范例示意图。图2是根据本发明的一范例实施例所示出的电脑、输入/输出装置与存储器存储装置的范例示意图。
请参照图1,主机系统1000一般包括电脑1100与输入/输出(input/output,简称I/O)装置1106。电脑1100包括微处理器1102、随机存取存储器(randomaccessmemory,简称RAM)1104、系统总线1108与数据传输接口1110。输入/输出装置1106包括如图2的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图2所示的装置非限制输入/输出装置1106,输入/输出装置1106可还包括其他装置。
在一范例实施例中,存储器100是通过数据传输接口1110与主机系统1000的其他元件电性连接。通过微处理器1102、随机存取存储器1104与输入/输出装置1106的运作可将数据写入至存储器存储装置100或从存储器存储装置100中读取数据。例如,存储器存储装置100可以是如图2所示的U盘1212、记忆卡1214或固态硬盘(SolidStateDrive,简称SSD)1216等的可复写式非易失性存储器存储装置。
图3是根据本发明的一范例实施例所示出的主机系统与存储器存储装置的范例示意图。
一般而言,主机系统1000为可实质地与存储器100配合以存储数据的任意系统。虽然在本范例实施例中,主机系统1000是以电脑系统来作说明,然而,另一范例实施例中,主机系统1000可以是数码相机、摄影机、通信装置、音频播放器或视频播放器等系统。例如,在主机系统为数码相机(摄影机)1310时,可复写式非易失性存储器存储装置则为其所使用的SD卡1312、MMC卡1314、记忆棒(memorystick)1316、CF卡1318或嵌入式存储器1320(如图3所示)。嵌入式存储器1320包括嵌入式多媒体卡(EmbeddedMMC,简称eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接于主机系统的基板上。
图4是示出图1所示的存储器存储装置的概要方块图。
请参照图4,存储器存储装置100包括连接接口单元102、存储器控制电路单元104与可复写式非易失性存储器模块106。
在本范例实施例中,连接接口单元102是相容于串行高级技术附件(SerialAdvancedTechnologyAttachment,简称SATA)标准。然而,必须了解的是,本发明不限于此,连接接口单元102也可以是符合并行高级技术附件(ParallelAdvancedTechnologyAttachment,简称PATA)标准、电气和电子工程师协会(InstituteofElectricalandElectronicEngineers,简称IEEE)1394标准、高速外设部件互连接口(PeripheralComponentInterconnectExpress,简称PCIExpress)标准、通用串行总线(UniversalSerialBus,简称USB)标准、安全数码(SecureDigital,简称SD)接口标准、超高速一代(UltraHighSpeed-I,简称UHS-I)接口标准、超高速二代(UltraHighSpeed-II,简称UHS-II)接口标准、记忆棒(MemoryStick,简称MS)接口标准、多媒体存储卡(MultiMediaCard,简称MMC)接口标准、嵌入式多媒体存储卡(EmbeddedMultimediaCard,简称eMMC)接口标准、通用快闪存储器(UniversalFlashStorage,简称UFS)接口标准、小型快闪(CompactFlash,简称CF)接口标准、整合式驱动电子接口(IntegratedDeviceElectronics,简称IDE)标准或其他适合的标准。连接接口单元102可与存储器控制电路单元104封装在一个芯片中,或者连接接口单元102是布设于一包含存储器控制电路单元104的芯片外。
存储器控制电路单元104用以执行以硬件形式或固件形式实作的多个逻辑闸或控制指令,并且根据主机系统1000的指令在可复写式非易失性存储器模块106中进行数据的写入、读取与抹除等运作。
可复写式非易失性存储器模块106是电性连接至存储器控制电路单元104,并且用以存储主机系统1000所写入的数据。可复写式非易失性存储器模块106可以是单阶存储单元(SingleLevelCell,简称SLC)NAND型快闪存储器模块、多阶存储单元(MultiLevelCell,简称MLC)NAND型快闪存储器模块(即,一个存储单元中可存储2个比特数据的快闪存储器模块)、复数阶存储单元(TripleLevelCell,简称TLC)NAND型快闪存储器模块(即,一个存储单元中可存储3个比特数据的快闪存储器模块)、其他快闪存储器模块或其他具有相同特性的存储器模块。
图5是根据本发明的一范例实施例所示出的可复写式非易失性存储器模块的概要方块图。图6是根据本发明的一范例实施例所示出的存储单元阵列的范例示意图。
请参照图5,可复写式非易失性存储器模块106包括存储单元阵列2202、字符线控制电路2204、比特线控制电路2206、行解码器(columndecoder)2208、数据输入/输出缓冲器2210与控制电路2212。
在本范例实施例中,存储单元阵列2202可包括用以存储数据的多个存储单元702、多个选择栅源极(selectgatedrain,简称SGD)晶体管712与多个选择栅源极(selectgatesource,简称SGS)晶体管714、以及连接此些存储单元的多条比特线704、多条字符线706、与共用源极线708(如图6所示)。存储单元702是以阵列方式(或立体堆叠的方式)配置在比特线704与字符线706的交叉点上。当从存储器控制电路单元104接收到写入指令或读取指令时,控制电路2212会控制字符线控制电路2204、比特线控制电路2206、行解码器2208、数据输入/输出缓冲器2210来写入数据至存储单元阵列2202或从存储单元阵列2202中读取数据,其中字符线控制电路2204用以控制施加至字符线706的电压,比特线控制电路2206用以控制施加至比特线704的电压,行解码器2208依据指令中的列位址以选择对应的比特线,并且数据输入/输出缓冲器2210用以暂存数据。
可复写式非易失性存储器模块106中的每一个存储单元是以临界电压的改变来存储一或多个比特。具体来说,每一个存储单元的控制栅极(controlgate)与通道之间有一个电荷捕捉层。通过施加一写入电压至控制闸极,可以改变电荷补捉层的电子量,因而改变了存储单元的临界电压。此改变临界电压的程序也称为“把数据写入至存储单元”或”程序化存储单元”。随着临界电压的改变,存储单元阵列2202的每一个存储单元具有多个存储状态。并且通过读取电压可以判断存储单元是属于哪一个存储状态,藉此取得存储单元所存储的一或多个比特。
图7是根据本发明的一范例实施例所示出的管理可复写式非易失性存储器模块的范例示意图。
请参照图7,可复写式非易失性存储器模块106的存储单元702会构成多个实体程序化单元400(0)~400(N),并且此些实体程序化单元会构成多个实体抹除单元。具体来说,同一条字符线上的存储单元会组成一或多个实体程序化单元。若每一个存储单元可存储2个以上的比特,则同一条字符线上的实体程序化单元可被分类为下实体程序化单元与上实体程序化单元。例如,每一存储单元的LSB是属于下实体程序化单元,并且每一存储单元的MSB是属于上实体程序化单元。一般来说,在MLCNAND型快闪存储器中,下实体程序化单元的写入速度会大于上实体程序化单元的写入速度,或下实体程序化单元的可靠度是高于上实体程序化单元的可靠度。在此范例实施例中,实体程序化单元为程序化的最小单元。即,实体程序化单元为写入数据的最小单元。例如,实体程序化单元为实体页面或是实体扇(sector)。若实体程序化单元为实体页面,则每一个实体程序化单元通常包括数据比特区与冗余比特区。数据比特区包含多个实体扇,用以存储使用者的数据,而冗余比特区用以存储系统的数据(例如,错误更正码)。在本范例实施例中,每一个数据比特区包含32个实体扇,且一个实体扇的大小为512字节(byte,简称B)。然而,在其他范例实施例中,数据比特区中也可包含8个、16个或数目更多或更少的实体扇,本发明并不限制实体扇的大小以及个数。另一方面,实体抹除单元为抹除的最小单位。也即,每一实体抹除单元含有最小数目之一并被抹除的存储单元。例如,实体抹除单元为实体区块。
图8是根据本发明的一范例实施例所示出的存储器控制电路单元的概要方块图。
请参照图8,存储器控制电路单元104包括存储器管理电路202、主机接口204、存储器接口206及错误检测与校正电路208。
存储器管理电路202用以控制存储器控制电路单元104的整体运作。具体来说,存储器管理电路202具有多个控制指令,并且在存储器存储装置100运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。以下说明存储器管理电路202的操作时,等同于说明存储器控制电路单元104的操作,以下并不再赘述。
在本范例实施例中,存储器管理电路202的控制指令是以固件形式来实作。例如,存储器管理电路202具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制指令是被烧录至此只读存储器中。当存储器存储装置100运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。
在另一范例实施例中,存储器管理电路202的控制指令也可以程序码形式存储于可复写式非易失性存储器模块106的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路202具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(bootcode),并且当存储器控制电路单元104被致能时,微处理器单元会先执行此开机码来将存储于可复写式非易失性存储器模块106中的控制指令载入至存储器管理电路202的随机存取存储器中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。
此外,在另一范例实施例中,存储器管理电路202的控制指令也可以一硬件形式来实作。例如,存储器管理电路202包括微控制器、存储器管理单元、存储器写入单元、存储器读取单元、存储器抹除单元与数据处理单元。存储器管理单元、存储器写入单元、存储器读取单元、存储器抹除单元与数据处理单元是电性连接至微控制器。其中,存储器管理单元用以管理可复写式非易失性存储器模块106的实体抹除单元;存储器写入单元用以对可复写式非易失性存储器模块106下达写入指令以将数据写入至可复写式非易失性存储器模块106中;存储器读取单元用以对可复写式非易失性存储器模块106下达读取指令以从可复写式非易失性存储器模块106中读取数据;存储器抹除单元用以对可复写式非易失性存储器模块106下达抹除指令以将数据从可复写式非易失性存储器模块106中抹除;而数据处理单元用以处理欲写入至可复写式非易失性存储器模块106的数据以及从可复写式非易失性存储器模块106中读取的数据。
主机接口204是电性连接至存储器管理电路202并且用以接收与识别主机系统1000所传送的指令与数据。也就是说,主机系统1000所传送的指令与数据会通过主机接口204来传送至存储器管理电路202。在本范例实施例中,主机接口204是相容于SATA标准。然而,必须了解的是本发明不限于此,主机接口204也可以是相容于PATA标准、IEEE1394标准、PCIExpress标准、USB标准、SD标准、UHS-I标准、UHS-II标准、MS标准、MMC标准、eMMC标准、UFS标准、CF标准、IDE标准或其他适合的数据传输标准。
存储器接口206是电性连接至存储器管理电路202并且用以存取可复写式非易失性存储器模块106。也就是说,欲写入至可复写式非易失性存储器模块106的数据会经由存储器接口206转换为可复写式非易失性存储器模块106所能接受的格式。
错误检测与校正电路208是电性连接至存储器管理电路202并且用以执行错误检测与校正程序以确保数据的正确性。具体来说,当存储器管理电路202从主机系统1000中接收到写入指令时,错误检测与校正电路208会为对应此写入指令的数据产生对应的错误更正码(errorcorrectingcode,简称ECC)及/或错误检测码(errordetectingcode,简称EDC),并且存储器管理电路202会将对应此写入指令的数据与对应的错误更正码或错误检测码写入至可复写式非易失性存储器模块106中。之后,当存储器管理电路202从可复写式非易失性存储器模块106中读取数据时会同时读取此数据对应的错误更正码或错误检测码,并且错误检测与校正电路208会依据此错误更正码或错误检测码对所读取的数据执行错误检测与校正程序。
在一范例实施例中,存储器控制电路单元104还包括缓冲存储器210与电源管理电路212。
缓冲存储器210是电性连接至存储器管理电路202并且用以暂存来自于主机系统1000的数据与指令或来自于可复写式非易失性存储器模块106的数据。
电源管理电路212是电性连接至存储器管理电路202并且用以控制存储器存储装置100的电源。
在此范例实施例中,错误检测与校正电路208所使用的是低密度奇偶校验校正码(lowdensityparitycode,简称LDPC)。然而,在另一范例实施例中,错误检测与校正电路208所使用的也可以是BCH码、回旋码(convolutionalcode)、涡轮码(turbocode),但不限于此。
在此范例实施例中,错误检测与校正电路208会根据一个低密度奇偶校验算法来编码与解码。在低密度奇偶校验校正码中,是用一个奇偶校验矩阵来定义有效的码字。以下将奇偶校验矩阵标记为矩阵H,并且一码字标记为CW。依照以下方程式(1),若奇偶校验矩阵H与码字CW的相乘是零向量,表示码字CW为有效的码字。其中运算子表示模2(mod2)的矩阵相乘。换言之,矩阵H的零空间(nullspace)便包含了所有的有效码字。然而,本发明并不限制码字CW的内容。例如,码字CW也可以包括用任意算法所产生的错误更正码或是错误检测码。
其中矩阵H的维度是k-乘-n(k-by-n),码字CW的维度是1-乘-n。k与n为正整数。码字CW中包括了信息比特与奇偶比特,即码字CW可以表示成[MP],其中向量M是由信息比特所组成,向量P是由奇偶比特所组成。向量M的维度是1-乘-(n-k),而向量P的维度是1-乘-k。以下将信息比特与奇偶比特统称为数据比特。换言之,码字CW中具有n个数据比特,其中信息比特的长度为(n-k)比特,并且奇偶比特的长度是k比特,即码字CW的码率(coderate)为(n-k)/n。
一般来说在编码时会使用一个产生矩阵(以下标记为G),使得对于任意的向量M都可满足以下方程式(2)。其中产生矩阵G的维度是(n-k)-乘-n。
由方程式(2)所产生的码字CW为有效的码字。因此可将方程式(2)代入方程式(1),藉此得到以下方程式(3)。
由于向量M可以是任意的向量,因此以下方程式(4)必定会满足。也就是说,在决定奇偶校验矩阵H以后,对应的产生矩阵G也可被决定。
在解码一个码字CW时,会先对码字中的数据比特执行一个奇偶校验程序,例如将奇偶校验矩阵H与码字CW相乘以产生一个向量(以下标记为S,如以下方程式(5)所示)。若向量S是零向量,则可直接输出码字CW。若向量S不是零向量,则表示码字CW不是有效的码字。
向量S的维度是k-乘-1,其中每一个元素也称为校验子(syndrome)。若码字CW不是有效的码字,则错误检测与校正电路208会执行一个解码程序,以尝试更正码字CW中的错误比特。在一范例实施例中,错误检测与校正电路208所执行的解码程序为一迭代(iteration)解码程序。也就是说,解码的程序会不断的重复执行,直到成功的解出码字或执行次数到达一预定门槛值为止。
图9是根据本发明的一范例实施例所示出的奇偶校验矩阵的范例示意图。
请参照图9,奇偶校验矩阵900的维度是8-乘-9,但本发明并不限制正整数k与n为多少。奇偶校验矩阵900的每一列(row)也代表了一限制(constraint)。以奇偶校验矩阵900的第一列为例,若某一个码字是有效码字(validcodeword),则将此码字中第3、5、7与第8个比特做模2(modulo-2)的加法之后,会得到比特“0”。本领域技术人员应能理解如何用奇偶校验矩阵900来编码,在此便不再赘述。此外,奇偶校验矩阵900仅为一个范例矩阵,而非用以限制本发明。
当存储器管理电路202要将多个比特写入至可复写式非易失性存储器模块106时,错误检测与校正电路208会对每(n-k)个欲被写入的比特(即,信息比特)都产生对应的k个奇偶比特。接下来,存储器管理电路202会把这n个比特作为一个码字写入至可复写式非易失性存储器模块106。
图10是根据本发明的一范例实施例所示出的SLC型快闪存储器模块的临界电压分布的范例示意图。
请参照图10,横轴代表存储单元的临界电压,而纵轴代表存储单元个数。例如,图10是表示一个实体程序化单元中各个存储单元的临界电压。在此假设当某一个存储单元的临界电压是落在分布1010时,此存储单元所存储的是比特“1”;相反地,若某一个存储单元的临界电压是落在分布1020时,此存储单元所存储的是比特“0”。值得一提的是,本范例实施例是以SLC型快闪存储器模块为例,因此临界电压的分布有两种可能。然而,在其他范例实施例中,临界电压的分布可能四种、八种或其他任意个可能,而读取电压可以在任意两个分布之间。此外,本发明也不限制每一个分布所代表的比特。
当要从可复写式非易失性存储器模块106读取数据时,存储器管理电路202会发送一读取指令序列至可复写式非易失性存储器模块106。此读取指令序列包括一或多个指令或程序码,并且用以指示读取一个实体程序化单元中的多个存储单元以取得多个比特(也称为第一比特)。例如,根据读取电压1001来读取一个实体程序化单元中的多个存储单元。若某一个存储单元的临界电压小于此读取电压,则此存储单元会导通,并且存储器管理电路202会读到比特“1”。相反地,若某一个存储单元的临界电压大于此读取电压,则此存储单元不会导通,并且存储器管理电路202会读到比特“0”。
值得注意的是,分布1010与分布1020包含一个重叠区域1030。重叠区域1030表示有一些存储单元中所存储的应该是比特“1”(属于分布1010),但其临界电压大于读取电压1001;或者,有一些存储单元中所存储的应该是比特“0”(属于分布1020),但其临界电压小于读取电压1001。换言之,所读取的比特中,有部分的比特会有错误。在另一范例实施例中,也可以从一个存储单元中读取出多个比特,本发明不加以限制。此外,一次的读取也可以是读取一个实体扇中的多个存储单元或者任意数量的存储单元,本发明不加以限制。
错误检测与校正电路208会判断这些第一比特是否具有一或多个错误(也称为第一错误)。例如,在本范例实施例中,错误检测与校正电路208会对这些第一比特执行奇偶校验程序以取得多个校验子(syndrome),其中每一个第一比特是对应至这些校验子的至少其中之一。换言之,这些校验子可以组成上述向量S。在一范例实施例中,上述向量S也称为校验向量。错误检测与校正电路208会根据校验向量S中的多个校验子判断这些第一比特是否具有一或多个第一错误。例如,若校验向量S中的每一个校验子都是“0”,错误检测与校正电路208会判定这些第一比特不具有第一错误,并且判定由这些第一比特组成的码字是有效码字;若校验向量S中的一或多个校验子是“1”,则错误检测与校正电路208会判定这些第一比特具有一或多个第一错误,并且判定由这些第一比特所组成的码字不是有效码字。
图11是根据本发明的一范例实施例所示出的矩阵相乘的范例示意图。
请参照图11,奇偶校验矩阵900与码字1101相乘的结果是校验向量1105。码字1101中的每一个第一比特是对应到校验向量1105中的至少一个校验子。举例来说,码字1101中的第一个第一比特V0(对应至奇偶校验矩阵900中的第一行)是对应到校验子S1、S4及S7;第一比特V1(对应至奇偶校验矩阵900中的第二行)是对应到校验子S2、S3及S6,以此类推。若第一比特V0发生了错误,则校验子S1、S4及S7可能会是“1”。若第一比特V1发生了错误,则校验子S2、S3及S6可能会是“1”,以此类推。
若码字1101中的这些第一比特没有错误,则表示解码成功,错误检测与校正电路208会输出码字1101中的这些第一比特。若这些第一比特具有一或多个第一错误,错误检测与校正电路208会对这些第一比特执行一迭代解码程序(也称为第一迭代解码程序)以取得多个解码比特(也称为第二比特)。
在第一迭代解码程序中,错误检测与校正电路208会根据上述校验子来取得这些第一比特的校验权重信息。例如,错误检测与校正电路208会根据每一个第一比特所对应的校验子来取得这些第一比特的校验权重信息。例如,错误检测与校正电路208可以将对应至同一个第一比特的校验子相加以取得此第一比特的校验权重信息。如图11所示,第一比特V0的校验权重信息等于校验子S1、S4及S7的相加;第一比特V1的校验权重信息等于校验子S2、S3及S6的相加,以此类推。值得注意的是,在此对校验子S0~S7所做的加法是一般的加法,而不是模2的加法。换言之,错误检测与校正电路208可以通过以下方程式(6)来取得第一比特的校验权重信息。
f1=ST×H…(6)
其中,向量f1即可用来表示每一个第一比特的校验权重信息。
错误检测与校正电路208也可以将每一个校验子乘上一个权重,并且累加校验子与权重相乘的结果以取得校验权重信息。例如,第一比特V0的校验权重信息会等于W1S1+W4S4+W7S7,其中权重W1、W4及W7为实数。对应于每一个校验子的权重可以相同也可以不同。在本范例实施例中,对应于每一个校验子的权重都是“1”。在另一范例实施例中,错误检测与校正电路208可以根据一个校验子是“1”或“0”来决定对应于此校验子的权重。例如,若一个校验子是“1”,则对应于此校验子的权重是“1”;若一个校验子是“0”,则对应于此校验子的权重是“-1”。或者,错误检测与校正电路208也可以根据校验子对应的第一比特的个数来决定权重。例如,校验子S0是对应到4个第一比特,而校验子S1是对应到3个第一比特。因此,错误检测与校正电路208可以将权重W0设定的比权重W1还要小(或者大)。本发明并不限制如何设定每一个校验子的权重。在另一范例实施例中,错误检测与校正电路208也可以把校验子S0~S7的至少其中之一当作一个函数的输入,并且把此函数的输出当作校验权重信息。此函数可以是线性函数、多项式函数、指数函数或是其他非线性函数,本发明不加以限制。
错误检测与校正电路208会根据这些第一比特的校验权重信息来翻转(flip)这些第一比特的至少其中之一。例如,错误检测与校正电路208会将某一个或多个第一比特从“1”翻转成“0”或者从“0”翻转成“1”。在一范例实施例中,上述翻转比特的操作也称为比特翻转(bitflipping)。具体而言,错误检测与校正电路208会判断码字1101中的每一个第一比特的校验权重信息是否符合一权重条件。例如,错误检测与校正电路208会判断每一个第一比特的校验权重信息的值是否大于一门槛值。若某一个第一比特的校验权重信息的值大于此门槛值,则错误检测与校正电路208会判定此第一比特的校验权重信息符合权重条件,并且翻转此第一比特。在一范例实施例中,在每一次的迭代解码程序中,一个码字中最多只会有一个比特被翻转。例如,此被翻转的比特的校验权重信息的值会大于其他没有被翻转的比特的校验权重信息的值。然而,在另一范例实施例中,每一次的迭代解码程序中,一个码字中可以有多个比特被翻转或是没有任何比特被翻转。
图12是根据本发明的一范例实施例所示出的第一迭代解码程序的范例示意图。
请参照图12,假设码字1101中的第一比特V0~V8分别是“1”、“0”、“0”、“1”、“0”、“0”、“0”、“0”及“0”,校验向量1105中的校验子S0~S7分别是“0”、“1”、“1”、“0”、“0”、“1”、“0”及“1”,并且校验向量1105中每一个校验子对应的权重都是“1”。根据方程式(6),错误检测与校正电路208会取得向量f1,其用以表示第一比特V0~V8的校验权重信息分别是“2”、“1”、“2”、“2”、“1”、“2”、“1”、“1”及“1”。错误检测与校正电路208可以将门槛值设为“2”,并且校验权重信息大于或等于“2”的第一比特V0、V2、V3及V5会被翻转。然后,第一迭代解码程序会输出多个第二比特。例如,这些第二比特分别是“0”、“0”、“1”、“0”、“0”、“1”、“0”、“0”及“0”。换言之,这些第二比特包括被翻转的多个第一比特与没有被翻转的多个第一比特。
另一方面,错误检测与校正电路208会记录第一迭代解码程序的比特翻转信息(也称为第一比特翻转信息)。在本范例实施例中,第一比特翻转信息包括一错误索引信息,并且此错误索引信息用以指示这些第一比特中被翻转的一或多个第一比特或是第一比特中没有被翻转的一或多个第一比特。例如,此错误索引信息可以是以向量e来表示。例如,在图12的范例实施例中,向量e中的多个错误索引比特分别是“1”、“0”、“1”、“1”、“0”、“1”、“0”、“0”、“0”,其用以表示第一比特V0、V2、V3及V5在第一迭代解码程序中被翻转。
在取得这些第二比特之后,错误检测与校正电路208会判断这些第二比特是否仍具有错误(也称为第二错误)。例如,错误检测与校正电路208会对这些第二比特执行奇偶校验程序以取得多个校验子,其中每一个第二比特是对应至这些校验子的至少其中之一。错误检测与校正电路208会根据这些校验子判断这些第二比特是否具有一或多个第二错误。在此,判断这些第二比特是否具有错误的操作类似于上述判断第一比特是否具有错误的操作,故在此不重复赘述。
若这些第二比特不具有错误,则表示解码成功,错误检测与校正电路208会输出这些第二比特。若这些第二比特具有一或多个第二错误,错误检测与校正电路208会根据所记录的第一比特翻转信息对这些第二比特执行另一迭代解码程序(也称为第二迭代解码程序)以取得多个解码比特(也称为第三比特)。例如,错误检测与校正电路208会根据第一比特翻转信息取得这些第二比特的校验权重信息,并且根据第二比特的校验权重信息来翻转这些第二比特的至少其中之一。
在本范例实施例中,错误检测与校正电路208会对第一比特翻转信息执行缩放(scaling)操作以产生参考信息。在此提及的缩放操作,是指将第一比特翻转信息中的一或多个值放大或缩小。例如,在缩放操作中,错误检测与校正电路208会将第一比特翻转信息与一缩放参数相乘以产生参考信息。此外,在另一范例实施例中,缩放操作还可以包括任意的逻辑运算,本发明不加以限制。然后,错误检测与校正电路208会将参考信息与这些第二比特的一预设校验权重信息相加以取得这些第二比特的校验权重信息。上述操作也可以利用以下方程式(7)来表示。
f2=ST×H+α×e…(7)
其中,α是缩放参数,α的值可以是任意的整数或正整数。向量f2即可用来表示这些第二比特的校验权重信息。
图13是根据本发明的一范例实施例所示出的第二迭代解码程序的范例示意图。
请参照图13,码字1301是由第一迭代解码程序产生的多个第二比特组成。将码字1301与奇偶校验矩阵900相乘可取得校验向量1302。校验向量1302中每一个校验子对应的权重都是“1”。假设α=1,且第一比特翻转信息中的多个错误索引比特分别是“1”、“0”、“1”、“1”、“0”、“1”、“0”、“0”及“0”,则根据方程式(7),错误检测与校正电路208会取得这些第二比特的预设校验权重信息与向量f2。其中,这些第二比特的预设校验权重信息分别是“0”、“1”、“1”、“0”、“1”、“1”、“1”、“1”及“1”,并且这些第二比特的校验权重信息分别是“1”、“1”、“2”、“1”、“1”、“2”、“1”、“1”及“1”。错误检测与校正电路208可以将门槛值设为“2”,并且校验权重信息大于或等于“2”的第二比特(即,码字1301中的第3个与第5个比特)会被翻转。然后,第二迭代解码程序会输出多个第三比特。例如,这些第三比特分别是“0”、“0”、“1”、“0”、“0”、“1”、“0”、“0”及“0”。
错误检测与校正电路208会记录第二迭代解码程序的比特翻转信息(也称为第二比特翻转信息)。其中,由于每一次的迭代解码程序都可能有一或多个比特被翻转,因此第二比特翻转信息会与第一比特翻转信息不同。例如,对应于在第二迭代解码程序中被翻转的第二比特,错误检测与校正电路208会翻转向量e中的第3与第6个比特,而取得更新后的向量e。例如,更新后的向量e中的多个错误索引比特分别是“1”、“0”、“0”、“1”、“0”、“0”、“0”、“0”及“0”。也就是说,第二比特翻转信息可以包括更新后的向量e。通过第二比特翻转信息,错误检测与校正电路208可以得知在第一迭代解码与第二迭代解码中,码字中的各个比特被翻转的状态。此外,在另一范例实施例中,第一比特翻转信息与第二比特翻转信息也可以是以其他的形式来呈现,本发明不加以限制。
错误检测与校正电路208会判断这些第三比特是否仍具有错误(也称为第三错误)。若这些第三比特仍具有一或多个第三错误,则错误检测与校正电路208会根据第二比特翻转信息对这些第三比特执行另一迭代解码程序(也称为第三迭代解码程序)以取得多个解码比特(也称为第四比特),并重复执行上述操作。反之,若这些第三比特不具有错误,则表示解码成功,错误检测与校正电路208会输出这些第三比特。
图14是根据本发明的一范例实施例所示出的另一次矩阵相乘的范例示意图。
请参照图14,码字1401是由第二迭代解码程序产生的多个第三比特组成。将码字1401与奇偶校验矩阵900相乘可取得校验向量1402。由于校验向量1402中的每一个校验子都是“0”,因此错误检测与校正电路208判定码字1401中不具有任何错误,并且错误检测与校正电路208会输出码字1401中的这些第三比特。
换言之,在每一次的迭代解码程序中,错误检测与校正电路208会与被翻转的比特有关的记录比特翻转信息。在下一次的迭代解码程序中,错误检测与校正电路208会读取此比特翻转信息,以更加精确的找到码字中需要被翻转的比特。藉此,可以减少在多次的迭代解码程序中重复翻转码字中同一个比特的机率,提升解码效率。例如,以图11至图13的范例实施例为例,经过二次的迭代解码程序就取得有效码字。相对地,若没有参考比特翻转信息,则可能会解码失败。
值得一提的是,虽然在上述范例实施例中都是以比特翻转解码算法作为范例,然而,在另一范例实施例中,也可以是以任意的解码算法来取代比特翻转解码算法,本发明不加以限制。另外,在图12的范例实施例中,由于还没有任何比特被翻转过,因此可设定比特翻转信息为一个初始值。例如,设定向量e为一零向量。藉此,错误检测与校正电路208可将图12中的这些第一比特的校验权重信息视为第一比特的预设校验权重信息,并且根据方程式(7)来取得这些第一比特的校验权重信息。然而,在另一范例实施例中,比特翻转信息的初始值也可以设定为任意值,本发明不加以限制。
图15是根据本发明的一范例实施例所示出的错误检测与校正电路的概要方块图。
请参照图15,在本范例实施例中,错误检测与校正电路208包括缓冲电路1501、逻辑运算电路1502及比特翻转解码电路1503。
缓冲电路1501用以存储比特翻转信息。在执行迭代解码程序时,缓冲电路1501可将比特翻转信息传送至逻辑运算电路1502。逻辑运算电路1502用以对比特翻转信息执行缩放操作,并输出参考信息至比特翻转解码电路1503。在本范例实施例中,逻辑运算电路1502是乘法电路。然而,在另一范例实施例中,逻辑运算电路1502还可以包括任意的逻辑运算电路。比特翻转解码电路1503用以接收参考信息,并且据以执行上述迭代解码程序。此外,在另一范例实施例中,错误检测与校正电路208还可以包括任意的电路,本发明不加以限制。
值得一提的是,缩放参数α的值可以是不变的或者是随着总迭代次数的增加而改变的。例如,在一范例实施例中,缩放参数α的值是与一总迭代次数相关,例如是成负相关(negativecorrelation)或正相关(positivecorrelation),以下的范例实施例以负相关来说明。在图11至13的范例实施例中,错误检测与校正电路208执行过两次迭代解码程序,因此总迭代次数是两次。在另一范例实施例中,若执行过三次以上的迭代解码程序,则第三迭代解码程序所使用的缩放参数α的值可能会大于第二迭代解码程序所使用的缩放参数α的值。或者,若执行过三十次以上的迭代解码程序,则第三十次的迭代解码程序所使用的缩放参数α的值可能会大于第二十次的迭代解码程序所使用的缩放参数α的值。
在一范例实施例中,缩放参数α的值则是与奇偶校验矩阵的行权重(columnweight)相关,以下的范例实施例以负相关来说明。例如,若奇偶校验矩阵的每一个行的行权重都相同(例如,在图9的范例实施例中,奇偶校验矩阵900的每一个行的行权重都是“3”),则可根据以下方程式(8)来取得缩放参数α。
α=2δ-γ+m…(8)
其中,δ是目前的迭代解码程序使用的门槛值(例如,上述第一迭代解码程序与第二跌代解码程序的门槛值都是“2”),γ是所使用的奇偶校验矩阵的行权重,并且m是缩放参数的调整因子。若m的值减小,在下一次的迭代解码程序中有较大的机率会翻转到码字中曾经被翻转过的比特,因此可减少再次翻转同一个比特的机率;若m的值增加,则在下一次的迭代解码程序中有较小的机率会翻转到码字中已经被翻转过的比特,因此可增加码字的收敛速度。
在一范例实施例中,随着总迭代次数的增加,在每一次的迭代解码程序中所使用的各个参数也可能改变。例如,在一范例实施例中,若一次的迭代解码程序中,没有任何一个比特需要被翻转,则在下一次的迭代解码程序中,所使用的门槛值会减“1”。或者,多次的迭代解码程序也可以使用相同的一或多个参数。例如,在连续的三次迭代解码程序中,都使用相同的门槛值δ与缩放参数α。例如,在一范例实施例中,在开始解码之后,门槛值δ是“5”且缩放参数α是“4”的迭代解码程序会先被执行。若在三次迭代解码程序中,都有符合翻转条件(例如,校验权重信息大于或等于门槛值)的比特,则在第四次的迭代解码程序中,门槛值δ仍然是“5”,但缩放参数α被改变成“4”,以此类推。在前三次的迭代解码程序中,若某一次(例如,第二次)的迭代解码程序中没有任一个比特需要被翻转,则在下一次(例如,第三次)的迭代解码程序中,门槛值δ被改变为“4”,且缩放参数α被改变成“3”,以此类推。
另外,若奇偶校验矩阵不具有相同的行权重,则可根据以下方程式(9)来取得缩放参数α。
α=2δ-m…(9)
在一范例实施例中,根据所使用的奇偶校验矩阵是否具有相同的行权重,上述方程式(8)与方程式(9)可以被选择性的用来决定缩放参数α。此外,在另一范例实施例中,缩放参数α也可以根据其他的算法或通过查表而获得,本发明不加以限制。
在一范例实施例中,若一个码字被判定为无效的码字,则错误检测与校正电路208会判断总迭代次数是否达到一预设次数。若总迭代次数尚未达到预设次数,错误检测与校正电路208会执行下一次的迭代解码程序。若总迭代次数已达到预设次数,则错误检测与校正电路208会判定解码失败,并且停止解码。在一范例实施例中,若判定解码失败,则存储器管理电路202可考虑使用相同或相异的读取电压来再次读取可复写式非易失性存储器模块106以获得新的码字,并且错误检测与校正电路208会重新对此新的码字进行解码。
图16是根据本发明的一范例实施例所示出的解码方法的流程图。
请参照图16,在步骤S1601中,发送一读取指令序列,其中所述读取指令序列用以读取多个存储单元以取得多个第一比特。在步骤S1602中,判断所述第一比特是否具有至少一第一错误。若所述第一比特不具有所述第一错误,在步骤S1603中,输出所述第一比特。若所述第一比特具有所述第一错误,在步骤S1604中,对所述第一比特执行第一迭代解码程序以取得多个第二比特,并且记录所述第一迭代解码程序的第一比特翻转信息。在步骤S1605中,判断所述第二比特是否具有至少一第二错误。若所述第二比特不具有所述第二错误,在步骤S1606中,输出所述第二比特。若所述第二比特具有所述第二错误,在步骤S1607中,根据所述第一比特翻转信息对所述第二比特执行第二迭代解码程序以取得多个第三比特。在本范例实施例中,此解码方法是使用密度奇偶校验算法来编码与解码。然而,在另一范例实施例中,此解码方法也可以是使用BCH码、回旋码(convolutionalcode)、涡轮码(turbocode)或其他算法,本发明不加以限制。
然而,图16中各步骤已详细说明如上,在此便不再赘述。值得注意的是,图16中各步骤可以实作为多个程序码或是电路,本发明并不在此限。此外,图16的方法可以搭配以上实施例使用,也可以单独使用,本发明并不在此限。
综上所述,在本发明的一范例实施例中,所述解码方法、存储器存储装置及存储器控制电路单元会参考过去的比特翻转信息来执行迭代解码程序。藉此,即使所使用的解码算法的运算复杂度较低,解码成功的机率也能被提升。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (27)
1.一种解码方法,其特征在于,用于一可复写式非易失性存储器模块,该可复写式非易失性存储器模块包括多个存储单元,该解码方法包括:
发送读取指令序列,其中该读取指令序列用以读取该些存储单元以取得多个第一比特;
判断该些第一比特是否具有至少一第一错误;
若该些第一比特具有该至少一第一错误,对该些第一比特执行第一迭代解码程序以取得多个第二比特,并且记录该第一迭代解码程序的第一比特翻转信息;
判断该些第二比特是否具有至少一第二错误;
若该些第二比特具有该至少一第二错误,根据该第一比特翻转信息对该些第二比特执行第二迭代解码程序以取得多个第三比特;以及
若该些第二比特不具有该至少一第二错误,输出该些第二比特。
2.根据权利要求1所述的解码方法,其特征在于,该第一比特翻转信息包括错误索引信息,并且该错误索引信息用以指示该些第一比特中被翻转或未被翻转的至少一第一比特。
3.根据权利要求1所述的解码方法,其特征在于,判断该些第二比特是否具有该至少一第二错误的步骤包括:
对该些第二比特执行奇偶校验程序以取得多个校验子,其中每一该些第二比特是对应至该些校验子的至少其中之一;以及
根据该些校验子判断该些第二比特是否具有该至少一第二错误。
4.根据权利要求1所述的解码方法,其特征在于,根据该第一比特翻转信息对该些第二比特执行该第二迭代解码程序以取得该些第三比特的步骤包括:
根据该第一比特翻转信息取得该些第二比特的校验权重信息;以及
根据该校验权重信息来翻转该些第二比特的至少其中之一。
5.根据权利要求4所述的解码方法,其特征在于,根据该第一比特翻转信息取得该些第二比特的该校验权重信息的步骤包括:
对该第一比特翻转信息执行缩放(scaling)操作以产生参考信息;以及
将该参考信息与该些第二比特的预设校验权重信息相加以取得该些第二比特的该校验权重信息。
6.根据权利要求5所述的解码方法,其特征在于,对该第一比特翻转信息执行该缩放操作以产生该参考信息的步骤包括:
将该第一比特翻转信息与缩放参数相乘,其中该缩放参数的值与总迭代次数为负相关。
7.根据权利要求6所述的解码方法,其特征在于,该缩放参数的值还与奇偶校验矩阵的行权重为负相关。
8.根据权利要求1所述的解码方法,其特征在于,还包括:
记录该第二迭代解码程序的第二比特翻转信息;
判断该些第三比特是否具有至少一第三错误;
若该些第三比特具有该至少第三错误,根据该第二比特翻转信息对该些第三比特执行第三迭代解码程序以取得多个第四比特,其中该第二比特翻转信息与该第一比特翻转信息不同;以及
若该些第三比特不具有该至少一第三错误,输出该些第三比特。
9.根据权利要求1所述的解码方法,其特征在于,该解码方法是使用低密度奇偶校验算法来编码与解码。
10.一种存储器存储装置,其特征在于,包括:
连接接口单元,用以电性连接至主机系统;
可复写式非易失性存储器模块,包括多个存储单元;以及
存储器控制电路单元,电性连接至该连接接口单元与该可复写式非易失性存储器模块;
其中该存储器控制电路单元用以发送读取指令序列,其中该读取指令序列用以读取该些存储单元以取得多个第一比特;
该存储器控制电路单元还用以判断该些第一比特是否具有至少一第一错误;
若该些第一比特具有该至少一第一错误,该存储器控制电路单元还用以对该些第一比特执行第一迭代解码程序以取得多个第二比特,并且记录该第一迭代解码程序的第一比特翻转信息;
该存储器控制电路单元还用以判断该些第二比特是否具有至少一第二错误;
若该些第二比特具有该至少一第二错误,该存储器控制电路单元还用以根据该第一比特翻转信息对该些第二比特执行第二迭代解码程序以取得多个第三比特;
若该些第二比特不具有该至少一第二错误,该存储器控制电路单元还用以输出该些第二比特。
11.根据权利要求10所述的存储器存储装置,其特征在于,该第一比特翻转信息包括错误索引信息,并且该错误索引信息用以指示该些第一比特中被翻转或未被翻转的至少一第一比特。
12.根据权利要求10所述的存储器存储装置,其特征在于,该存储器控制电路单元判断该些第二比特是否具有该至少一第二错误的操作包括:
该存储器控制电路单元对该些第二比特执行奇偶校验程序以取得多个校验子,其中每一该些第二比特是对应至该些校验子的至少其中之一;
该存储器控制电路单元根据该些校验子判断该些第二比特是否具有该至少一第二错误。
13.根据权利要求10所述的存储器存储装置,其特征在于,该存储器控制电路单元根据该第一比特翻转信息对该些第二比特执行该第二迭代解码程序以取得该些第三比特的操作包括:
该存储器控制电路单元根据该第一比特翻转信息取得该些第二比特的校验权重信息;
该存储器控制电路单元根据该校验权重信息来翻转该些第二比特的至少其中之一。
14.根据权利要求13所述的存储器存储装置,其特征在于,该存储器控制电路单元根据该第一比特翻转信息取得该些第二比特的该校验权重信息的操作包括:
该存储器控制电路单元对该第一比特翻转信息执行缩放操作以产生参考信息;
该存储器控制电路单元将该参考信息与该些第二比特的预设校验权重信息相加以取得该些第二比特的该校验权重信息。
15.根据权利要求14所述的存储器存储装置,其特征在于,该存储器控制电路单元对该第一比特翻转信息执行该缩放操作以产生该参考信息的操作包括:
该存储器控制电路单元将该第一比特翻转信息与缩放参数相乘,其中该缩放参数的值与总迭代次数为负相关。
16.根据权利要求15所述的存储器存储装置,其特征在于,该缩放参数的值还与奇偶校验矩阵的行权重为负相关。
17.根据权利要求10所述的存储器存储装置,其特征在于,该存储器控制电路单元还用以记录该第二迭代解码程序的第二比特翻转信息,
该存储器控制电路单元还用以判断该些第三比特是否具有至少一第三错误,
若该些第三比特具有该至少一第三错误,该存储器控制电路单元还用以根据该第二比特翻转信息对该些第三比特执行第三迭代解码程序以取得多个第四比特,其中该第二比特翻转信息与该第一比特翻转信息不同;以及
若该些第三比特不具有该至少一第三错误,该存储器控制电路单元还用以输出该些第三比特。
18.根据权利要求10所述的存储器存储装置,其特征在于,该存储器控制电路单元是使用低密度奇偶校验算法来编码与解码。
19.一种存储器控制电路单元,用于控制可复写式非易失性存储器模块,其中该可复写式非易失性存储器模块包括多个存储单元,该存储器控制电路单元包括:
主机接口,用以电性连接至主机系统;
存储器接口,用以电性连接至该可复写式非易失性存储器模块;
存储器管理电路,电性连接至该主机接口与该存储器接口,并且用以发送读取指令序列,其中该读取指令序列用以读取该些存储单元以取得多个第一比特;以及
错误检测与校正电路,电性连接至该存储器管理电路,并且用以判断该些第一比特是否具有至少一第一错误;
若该些第一比特具有该至少一第一错误,该错误检测与校正电路还用以对该些第一比特执行第一迭代解码程序以取得多个第二比特,并且记录该第一迭代解码程序的第一比特翻转信息;
该错误检测与校正电路还用以判断该些第二比特是否具有至少一第二错误;
若该些第二比特具有该至少一第二错误,该错误检测与校正电路还用以根据该第一比特翻转信息对该些第二比特执行第二迭代解码程序以取得多个第三比特;
若该些第二比特不具有该至少一第二错误,该错误检测与校正电路还用以输出该些第二比特。
20.根据权利要求19所述的存储器控制电路单元,其特征在于,该第一比特翻转信息包括错误索引信息,并且该错误索引信息用以指示该些第一比特中被翻转或未被翻转的至少一第一比特。
21.根据权利要求19所述的存储器控制电路单元,其特征在于,该错误检测与校正电路判断该些第二比特是否具有该至少一第二错误的操作包括:
该错误检测与校正电路对该些第二比特执行奇偶校验程序以取得多个校验子,其中每一该些第二比特是对应至该些校验子的至少其中之一;
该错误检测与校正电路根据该些校验子判断该些第二比特是否具有该至少一第二错误。
22.根据权利要求19所述的存储器控制电路单元,其特征在于,该错误检测与校正电路根据该第一比特翻转信息对该些第二比特执行该第二迭代解码程序以取得该些第三比特的操作包括:
该错误检测与校正电路根据该第一比特翻转信息取得该些第二比特的校验权重信息;
该错误检测与校正电路根据该校验权重信息来翻转该些第二比特的至少其中之一。
23.根据权利要求22所述的存储器控制电路单元,其特征在于,该错误检测与校正电路根据该第一比特翻转信息取得该些第二比特的该校验权重信息的操作包括:
该错误检测与校正电路对该第一比特翻转信息执行缩放操作以产生参考信息;
该错误检测与校正电路将该参考信息与该些第二比特的预设校验权重信息相加以取得该些第二比特的该校验权重信息。
24.根据权利要求23所述的存储器控制电路单元,其特征在于,该错误检测与校正电路对该第一比特翻转信息执行该缩放操作以产生该参考信息的操作包括:
该错误检测与校正电路将该第一比特翻转信息与缩放参数相乘,其中该缩放参数的值与总迭代次数为负相关。
25.根据权利要求24所述的存储器控制电路单元,其特征在于,该缩放参数的值还与奇偶校验矩阵的行权重为负相关。
26.根据权利要求19所述的存储器控制电路单元,其特征在于,该错误检测与校正电路还用以记录该第二迭代解码程序的第二比特翻转信息;
该错误检测与校正电路还用以判断该些第三比特是否具有至少一第三错误;
若该些第三比特具有该至少一第三错误,该错误检测与校正电路还用以根据该第二比特翻转信息对该些第三比特执行第三迭代解码程序以取得多个第四比特,其中该第二比特翻转信息与该第一比特翻转信息不同;以及
若该些第三比特不具有该至少一第三错误,该错误检测与校正电路还用以输出该些第三比特。
27.根据权利要求19所述的存储器控制电路单元,其特征在于,该错误检测与校正电路是使用低密度奇偶校验算法来编码与解码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410279151.5A CN105304142B (zh) | 2014-06-20 | 2014-06-20 | 解码方法、存储器存储装置及存储器控制电路单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410279151.5A CN105304142B (zh) | 2014-06-20 | 2014-06-20 | 解码方法、存储器存储装置及存储器控制电路单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105304142A true CN105304142A (zh) | 2016-02-03 |
CN105304142B CN105304142B (zh) | 2019-01-11 |
Family
ID=55201292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410279151.5A Active CN105304142B (zh) | 2014-06-20 | 2014-06-20 | 解码方法、存储器存储装置及存储器控制电路单元 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105304142B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107634764A (zh) * | 2016-07-19 | 2018-01-26 | 三星电子株式会社 | 使用低密度奇偶校验码的解码器及存储控制器 |
CN108270517A (zh) * | 2016-12-30 | 2018-07-10 | 慧荣科技股份有限公司 | 用以解码接收信息的解码方法与相关解码装置 |
CN108270518A (zh) * | 2016-12-30 | 2018-07-10 | 慧荣科技股份有限公司 | 用以解码接收息的解码方法与相关解码装置 |
CN109508252A (zh) * | 2017-09-15 | 2019-03-22 | 群联电子股份有限公司 | 数据编码方法、存储器控制电路单元与存储器存储装置 |
CN110391815A (zh) * | 2018-04-18 | 2019-10-29 | 深圳大心电子科技有限公司 | 解码方法及储存控制器 |
CN111262689A (zh) * | 2018-12-03 | 2020-06-09 | 华邦电子股份有限公司 | 更新存储在非易失性存储器的加密金钥的装置及其方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070011601A1 (en) * | 2005-05-19 | 2007-01-11 | Stmicroelectronics S.R.L. | ECC for single 4-bits symbol correction of 32 symbols words with 22 maximum row weight matrix |
CN101018060A (zh) * | 2007-01-05 | 2007-08-15 | 东南大学 | 低密度校验码的并行加权比特翻转解码方法 |
CN102932006A (zh) * | 2012-11-19 | 2013-02-13 | 电子科技大学 | 基于平均幅度的低密度奇偶校验码加权比特翻转解码方法 |
US20130097475A1 (en) * | 2011-10-17 | 2013-04-18 | Lsi Corporation | LDPC Decoder With Targeted Symbol Flipping |
-
2014
- 2014-06-20 CN CN201410279151.5A patent/CN105304142B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070011601A1 (en) * | 2005-05-19 | 2007-01-11 | Stmicroelectronics S.R.L. | ECC for single 4-bits symbol correction of 32 symbols words with 22 maximum row weight matrix |
CN101018060A (zh) * | 2007-01-05 | 2007-08-15 | 东南大学 | 低密度校验码的并行加权比特翻转解码方法 |
US20130097475A1 (en) * | 2011-10-17 | 2013-04-18 | Lsi Corporation | LDPC Decoder With Targeted Symbol Flipping |
CN102932006A (zh) * | 2012-11-19 | 2013-02-13 | 电子科技大学 | 基于平均幅度的低密度奇偶校验码加权比特翻转解码方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107634764A (zh) * | 2016-07-19 | 2018-01-26 | 三星电子株式会社 | 使用低密度奇偶校验码的解码器及存储控制器 |
CN108270517A (zh) * | 2016-12-30 | 2018-07-10 | 慧荣科技股份有限公司 | 用以解码接收信息的解码方法与相关解码装置 |
CN108270518A (zh) * | 2016-12-30 | 2018-07-10 | 慧荣科技股份有限公司 | 用以解码接收息的解码方法与相关解码装置 |
CN108270518B (zh) * | 2016-12-30 | 2021-01-26 | 慧荣科技股份有限公司 | 用以解码接收信息的解码方法与相关解码装置 |
US10917113B2 (en) | 2016-12-30 | 2021-02-09 | Silicon Motion, Inc. | Decoding method and related apparatus |
CN112865920A (zh) * | 2016-12-30 | 2021-05-28 | 慧荣科技股份有限公司 | 用以解码接收信息的解码方法与相关解码装置 |
CN108270517B (zh) * | 2016-12-30 | 2021-07-27 | 慧荣科技股份有限公司 | 用以解码接收信息的解码方法与相关解码装置 |
CN109508252A (zh) * | 2017-09-15 | 2019-03-22 | 群联电子股份有限公司 | 数据编码方法、存储器控制电路单元与存储器存储装置 |
CN110391815A (zh) * | 2018-04-18 | 2019-10-29 | 深圳大心电子科技有限公司 | 解码方法及储存控制器 |
CN110391815B (zh) * | 2018-04-18 | 2023-08-18 | 深圳大心电子科技有限公司 | 解码方法及储存控制器 |
CN111262689A (zh) * | 2018-12-03 | 2020-06-09 | 华邦电子股份有限公司 | 更新存储在非易失性存储器的加密金钥的装置及其方法 |
CN111262689B (zh) * | 2018-12-03 | 2022-11-08 | 华邦电子股份有限公司 | 更新存储在非易失性存储器的加密金钥的装置及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105304142B (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190252035A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
US9529666B2 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
US10103748B2 (en) | Decoding method, memory control circuit unit and memory storage device | |
KR20180010448A (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
CN105304142A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN106297883B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN105468292A (zh) | 数据存取方法、存储器储存装置及存储器控制电路单元 | |
CN104601178A (zh) | 解码方法、解码电路、存储器存储装置与控制电路单元 | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
CN105653199A (zh) | 数据读取方法、存储器存储装置及存储器控制电路单元 | |
CN105022674A (zh) | 解码方法、存储器存储装置、存储器控制电路单元 | |
CN104572334A (zh) | 解码方法、存储器存储装置与存储器控制电路单元 | |
KR20160113001A (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
CN105023613A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN104733051A (zh) | 奇偶校验码的解码方法、存储器储存装置及控制电路单元 | |
CN104424045A (zh) | 解码方法、存储器储存装置与非易失性存储器模块 | |
KR20180022175A (ko) | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 | |
TWI691962B (zh) | 解碼方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN109901784B (zh) | 数据存取方法、存储器控制电路单元以及存储器储存装置 | |
US11190217B2 (en) | Data writing method, memory controlling circuit unit and memory storage device | |
CN104778975A (zh) | 译码方法、存储器存储装置、存储器控制电路单元 | |
CN105304143B (zh) | 解码方法、存储器控制电路单元及存储器存储装置 | |
CN109697134B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |