CN106708649B - 解码方法、存储器储存装置及存储器控制电路单元 - Google Patents
解码方法、存储器储存装置及存储器控制电路单元 Download PDFInfo
- Publication number
- CN106708649B CN106708649B CN201510776089.5A CN201510776089A CN106708649B CN 106708649 B CN106708649 B CN 106708649B CN 201510776089 A CN201510776089 A CN 201510776089A CN 106708649 B CN106708649 B CN 106708649B
- Authority
- CN
- China
- Prior art keywords
- group
- offset
- submatrix
- critical value
- memorizer
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种解码方法、存储器储存装置及存储器控制电路单元。所述方法包括:决定偏移临界值以及对应的检查矩阵,其中检查矩阵包括至少一子矩阵群组,子矩阵群组中的每一个子矩阵具有预设维度,偏移临界值小于对应于预设维度的预设维度值;从可复写式非易失性存储器模块接收回应数据并执行对应的迭代解码程序。在迭代解码程序中,一个数据集合中的多个预设群组会被移动以获得多个第一偏移群组,而每一个第一偏移群组相对于预设群组中的一对应群组的偏移量皆不超过偏移临界值。藉此,可更有效率地产生迭代解码程序中使用的解码参考数据。
Description
技术领域
本发明是有关于一种解码技术,且特别是有关于一种解码方法、存储器储存装置及存储器控制电路单元。
背景技术
数码相机、移动电话与MP3播放器在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于可复写式非易失性存储器模块(例如,快闪存储器)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。
一般来说,为了避免从存储器装置中读取出来的数据发生错误,欲储存在存储器装置中的数据会被编码然后再被储存。当欲读取此数据时,整个编码数据会被读取出来并且被解码。藉此,可通过解码程序来更正可能存在的错误。然而,在一般的解码电路中,虽然可以利用矩阵加法来取代矩阵乘法等机制来提升解码速度,但是为了实现符合特定标准的解码操作,解码电路中所配置的选择器/移位暂存器的数量难以调整。
发明内容
本发明提供一种解码方法、存储器储存装置及存储器控制电路单元,可提升解码效率和/或减少所需的选择器/移位暂存器的数量。
本发明的一范例实施例提供一种解码方法,其用于可复写式非易失性存储器模块,所述解码方法包括:决定偏移临界值以及对应于所述偏移临界值的检查矩阵,其中所述检查矩阵包括至少一子矩阵群组,其中所述子矩阵群组中的每一个子矩阵具有预设维度,其中所述偏移临界值小于对应于所述预设维度的预设维度值,其中所述子矩阵群组包括第一子矩阵群组;发送读取指令序列,其中所述读取指令序列指示读取所述可复写式非易失性存储器模块的实体单元;接收对应于所述读取指令序列的回应数据;以及对所述回应数据执行迭代解码程序,其中所述迭代解码程序包括:产生对应于所述回应数据的数据集合,其中所述数据集合包括多个预设群组;根据属于所述第一子矩阵群组的多个子矩阵来移动所述预设群组以获得多个第一偏移群组,其中所述第一偏移群组中的每一个偏移群组相对于所述预设群组中的一对应群组的偏移量皆不超过所述偏移临界值;以及根据所述第一偏移群组产生解码参考数据。
在本发明的一范例实施例中,所述子矩阵群组还包括第二子矩阵群组,其中所述迭代解码程序还包括:根据属于所述第二子矩阵群组的多个子矩阵来移动所述第一偏移群组以获得多个第二偏移群组,其中所述第二偏移群组中的每一个偏移群组相对于所述第一偏移群组中的一对应群组的偏移量皆不超过所述偏移临界值;以及根据所述第二偏移群组产生所述解码参考数据。
在本发明的一范例实施例中,所述解码参考数据为对应于低密度奇偶检查码的奇偶检查程序的校验子集合。
在本发明的一范例实施例中,所述解码参考数据为对应于比特翻转演算法的校验权重集合。
在本发明的一范例实施例中,所述解码参考数据为对应于低密度奇偶检查码的最小值-总和演算法的最小值集合。
在本发明的一范例实施例中,所述偏移临界值负相关于所述检查矩阵的行(column)权重值,其中所述行权重值对应于所述检查矩阵中的一个行所包含的元素1的数目。
在本发明的一范例实施例中,所述偏移临界值等于或大于将所述预设维度值除以所述行权重值而获得的最小临界值。
本发明的另一范例实施例提供一种存储器储存装置,其包括连接接口单元、可复写式非易失性存储器模块及存储器控制电路单元。所述连接接口单元用以电性连接至主机系统。所述存储器控制电路单元电性连接至所述连接接口单元与所述可复写式非易失性存储器模块,其中所述存储器控制电路单元用以决定偏移临界值以及对应于所述偏移临界值的检查矩阵,其中所述检查矩阵包括至少一子矩阵群组,其中所述至少一子矩阵群组中的每一个子矩阵具有预设维度,其中所述偏移临界值小于对应于所述预设维度的预设维度值,其中所述至少一子矩阵群组包括第一子矩阵群组,其中所述存储器控制电路单元还用以发送一读取指令序列,其中所述读取指令序列指示读取所述可复写式非易失性存储器模块的实体单元,其中所述存储器控制电路单元还用以接收对应于所述读取指令序列的回应数据,其中所述存储器控制电路单元还用以对所述回应数据执行迭代解码程序,其中所述迭代解码程序包括:产生对应于所述回应数据的数据集合,其中所述数据集合包括多个预设群组;根据属于所述第一子矩阵群组的多个子矩阵来移动所述预设群组以获得多个第一偏移群组,其中所述第一偏移群组中的每一个偏移群组相对于所述预设群组中的一对应群组的偏移量皆不超过所述偏移临界值;以及根据所述第一偏移群组产生解码参考数据。
在本发明的一范例实施例中,所述子矩阵群组还包括第二子矩阵群组,其中所述迭代解码程序还包括:根据属于所述第二子矩阵群组的多个子矩阵来移动所述第一偏移群组以获得多个第二偏移群组,其中所述第二偏移群组中的每一个偏移群组相对于所述第一偏移群组中的一对应群组的偏移量皆不超过所述偏移临界值;以及根据所述第二偏移群组产生所述解码参考数据。
在本发明的一范例实施例中,所述解码参考数据为对应于低密度奇偶检查码的奇偶检查程序的校验子集合。
在本发明的一范例实施例中,所述解码参考数据为对应于比特翻转演算法的校验权重集合。
在本发明的一范例实施例中,所述解码参考数据为对应于低密度奇偶检查码的最小值-总和演算法的最小值集合。
在本发明的一范例实施例中,所述偏移临界值负相关于所述检查矩阵的行权重值,其中所述行权重值对应于所述检查矩阵中的一个行所包含的元素1的数目。
在本发明的一范例实施例中,所述偏移临界值等于或大于将所述预设维度值除以所述行权重值而获得的最小临界值。
本发明的另一范例实施例提供一种存储器控制电路单元,其用于控制可复写式非易失性存储器模块,所述存储器控制电路单元包括主机接口、存储器接口、错误检查与校正电路及存储器管理电路。所述主机接口用以电性连接至主机系统。所述存储器接口用以电性连接至所述可复写式非易失性存储器模块。所述存储器管理电路电性连接至所述主机接口、所述存储器接口及所述错误检查与校正电路。其中所述存储器管理电路用以决定偏移临界值以及对应于所述偏移临界值的检查矩阵,其中所述检查矩阵包括至少一子矩阵群组,其中所述子矩阵群组中的每一个子矩阵具有预设维度,其中所述偏移临界值小于对应于所述预设维度的预设维度值,其中所述至少一子矩阵群组包括第一子矩阵群组,其中所述存储器管理电路还用以发送读取指令序列,其中所述读取指令序列指示读取所述可复写式非易失性存储器模块的实体单元,其中所述存储器管理电路还用以接收对应于所述读取指令序列的回应数据,其中所述错误检查与校正电路用以对所述回应数据执行迭代解码程序,其中所述迭代解码程序包括:产生对应于所述回应数据的数据集合,其中所述数据集合包括多个预设群组;根据属于所述第一子矩阵群组的多个子矩阵来移动所述预设群组以获得多个第一偏移群组,其中所述第一偏移群组中的每一个偏移群组相对于所述预设群组中的一对应群组的偏移量皆不超过所述偏移临界值;以及根据所述第一偏移群组产生解码参考数据。
在本发明的一范例实施例中,所述子矩阵群组还包括第二子矩阵群组,其中所述迭代解码程序还包括:根据属于所述第二子矩阵群组的多个子矩阵来移动所述第一偏移群组以获得多个第二偏移群组,其中所述第二偏移群组中的每一个偏移群组相对于所述第一偏移群组中的一对应群组的偏移量皆不超过所述偏移临界值;以及根据所述第二偏移群组产生所述解码参考数据。
在本发明的一范例实施例中,所述解码参考数据为对应于低密度奇偶检查码的奇偶检查程序的校验子集合。
在本发明的一范例实施例中,所述解码参考数据为对应于比特翻转演算法的校验权重集合。
在本发明的一范例实施例中,所述解码参考数据为对应于低密度奇偶检查码的最小值-总和演算法的最小值集合。
在本发明的一范例实施例中,所述偏移临界值负相关于所述检查矩阵的行权重值,其中所述行权重值对应于所述检查矩阵中的一个行所包含的元素1的数目。
在本发明的一范例实施例中,所述偏移临界值等于或大于将所述预设维度值除以所述行权重值而获得的最小临界值。
在本发明的一范例实施例中,所述错误检查与校正电路包括至少一第一暂存电路、移位电路、至少一第二暂存电路及至少一操作电路。所述第一暂存电路用以暂存所述预设群组中的目标群组。所述移位电路电性连接至所述第一暂存电路,其中所述移位电路用以移动所述目标群组并且输出所述第一偏移群组中对应于所述目标群组的偏移目标群组。所述第二暂存电路电性连接至所述移位电路并且用以暂存所述偏移目标群组。所述操作电路电性连接至所述第二暂存电路,其中所述操作电路用以对所述偏移目标群组执行逻辑操作并且产生所述解码参考数据。
基于上述,在决定偏移临界值与相对应的奇偶检查矩阵后,在迭代解码程序中,一个数据集合中的群组会对应于奇偶检查矩阵而被执行群组移动并且对应的偏移量会被限制于不超过所设定的偏移临界值。藉此,在本发明的一范例实施例中,可减少错误检查与校正电路中所需配置的选择器/移位暂存器的数量。此外,在本发明的一范例实施例中,根据偏移群组来产生解码参考数据也可提升迭代解码程序中某些阶段的执行效率。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据本发明的一范例实施例所示出的主机系统、存储器储存装置及输入/输出(I/O)装置的示意图;
图2是根据本发明的另一范例实施例所示出的主机系统、存储器储存装置及I/O装置的示意图;
图3是根据本发明的另一范例实施例所示出的主机系统与存储器储存装置的示意图;
图4是根据本发明的一范例实施例所示出的存储器储存装置的概要方块图;
图5是根据本发明的一范例实施例所示出的存储器控制电路单元的概要方块图;
图6是根据本发明的一范例实施例所示出的低密度奇偶检查码的置信传播(belief propagation)的示意图;
图7是根据本发明的一范例实施例所示出的奇耦检查矩阵的示意图;
图8是根据本发明的一范例实施例所示出的奇偶检查程序的示意图;
图9是根据本发明的一范例实施例所示出的获得对应于奇偶检查程序的校验子集合的示意图;
图10与图11是根据本发明的另一范例实施例所示出的获得对应于比特翻转演算法的校验权重集合的示意图;
图12与图13是根据本发明的另一范例实施例所示出的获得对应于最小值-总和演算法的最小值集合的示意图;
图14是根据本发明的一范例实施例所示出的群组移动的示意图;
图15A与图15B是根据本发明的一范例实施例所示出的阶层式移位器架构的示意图;
图16A与图16B是根据本发明的一范例实施例所示出的筒式移位器(BarrelShifter)架构的示意图;
图17是根据本发明的另一范例实施例所示出的简化(reduced)移位器架构的示意图;
图18是根据本发明的一范例实施例所示出的解码方法的流程图;
图19是根据本发明的一范例实施例所示出的错误检查与校正电路的概要方块图。
附图标记说明:
10:存储器储存装置;
11:主机系统;
110:系统总线;
111:处理器;
112:随机存取存储器;
113:只读存储器;
114:数据传输接口;
12:输入/输出(I/O)装置;
20:主机板;
201:U盘;
202:存储卡;
203:固态硬盘;
204:无线存储器储存装置;
205:全球定位系统模块;
206:网路接口卡;
207:无线传输装置;
208:键盘;
209:屏幕;
210:喇叭;
32:SD卡;
33:CF卡;
34:嵌入式储存装置;
341:嵌入式多媒体卡;
342:嵌入式多芯片封装储存装置;
402:连接接口单元;
404:存储器控制电路单元;
406:可复写式非易失性存储器模块;
502:存储器管理电路;
504:主机接口;
506:存储器接口;
508:错误检查与校正电路;
510:缓冲存储器;
512:电源管理电路;
601(1)~601(k):奇偶节点;
602(1)~602(n):信息节点;
610:置信传播图;
700、800、1200:奇偶检查矩阵;
810、910、920:码字;
820:校验子集合;
830、840、1210、1220、1230:子矩阵群组;
831~833、841~843:子矩阵;
911~913、921~923:偏移群组;
1001:校验权重集合;
1002、1003、1101~1108:向量;
1201:最小值集合;
1301~1303、1703:选择器;
1311~1313、1701、1702:暂存器;
1401~1403:移位暂存器;
S1801、S1802、S1803、S1804、S18041、S18042、S18043:步骤;
1901_1~1901_3、1903_1~1903_3:暂存电路;
1902:移位电路;
1904_1~1904_3:操作电路。
具体实施方式
一般而言,存储器储存装置(也称,存储器储存系统)包括可复写式非易失性存储器模块(rewritable non-volatile memory module)与控制器(也称,控制电路)。通常存储器储存装置是与主机系统一起使用,以使主机系统可将数据写入至存储器储存装置或从存储器储存装置中读取数据。
图1是根据本发明的一范例实施例所示出的主机系统、存储器储存装置及输入/输出(I/O)装置的示意图。图2是根据本发明的另一范例实施例所示出的主机系统、存储器储存装置及I/O装置的示意图。
请参照图1与图2,主机系统11一般包括处理器111、随机存取存储器(randomaccess memory,简称为:RAM)112、只读存储器(read only memory,简称为:ROM)113及数据传输接口114。处理器111、随机存取存储器112、只读存储器113及数据传输接口114皆电性连接至系统总线(system bus)110。
在本范例实施例中,主机系统11是通过数据传输接口114与存储器储存装置10电性连接。例如,主机系统11可经由数据传输接口114将数据储存至存储器储存装置10或从存储器储存装置10中读取数据。此外,主机系统11是通过系统总线110与I/O装置12电性连接。例如,主机系统11可经由系统总线110将输出信号传送至I/O装置12或从I/O装置12接收输入信号。
在本范例实施例中,处理器111、随机存取存储器112、只读存储器113及数据传输接口114可设置在主机系统11的主机板20上。数据传输接口114的数目可以是一或多个。通过数据传输接口114,主机板20可以经由有线或无线方式电性连接至存储器储存装置10。存储器储存装置10可例如是U盘201、存储卡202、固态硬盘(Solid State Drive,简称为:SSD)203或无线存储器储存装置204。无线存储器储存装置204可例如是近距离无线通信(NearField Communication,简称为:NFC)存储器储存装置、无线保真(WiFi)存储器储存装置、蓝牙(Bluetooth)存储器储存装置或低功耗蓝牙存储器储存装置(例如,iBeacon)等以各式无线通信技术为基础的存储器储存装置。此外,主机板20也可以通过系统总线110电性连接至全球定位系统(Global Positioning System,简称为:GPS)模块205、网路接口卡206、无线传输装置207、键盘208、屏幕209、喇叭210等各式I/O装置。例如,在一范例实施例中,主机板20可通过无线传输装置207存取无线存储器储存装置204。
在一范例实施例中,所提及的主机系统为可实质地与存储器储存装置配合以储存数据的任意系统。虽然在上述范例实施例中,主机系统是以电脑系统来作说明,然而,图3是根据本发明的另一范例实施例所示出的主机系统与存储器储存装置的示意图。请参照图3,在另一范例实施例中,主机系统31也可以是数码相机、摄影机、通信装置、音频播放器、视频播放器或平板电脑等系统,而存储器储存装置30可为其所使用的SD卡32、CF卡33或嵌入式储存装置34等各式非易失性存储器储存装置。嵌入式储存装置34包括嵌入式多媒体卡(embedded MMC,简称为:eMMC)341和/或嵌入式多芯片封装储存装置(embedded MultiChip Package,简称为:eMCP)342等各类型将存储器模块直接电性连接于主机系统的基板上的嵌入式储存装置。
图4是根据本发明的一范例实施例所示出的存储器储存装置的概要方块图。
请参照图4,存储器储存装置10包括连接接口单元402、存储器控制电路单元404与可复写式非易失性存储器模块406。
在本范例实施例中,连接接口单元402是兼容于串行高级技术附件(SerialAdvanced Technology Attachment,简称为:SATA)标准。然而,必须了解的是,本发明不限于此,连接接口单元402也可以是符合并行高级技术附件(Parallel Advanced TechnologyAttachment,简称为:PATA)标准、电气和电子工程师协会(Institute of Electrical andElectronic Engineers,简称为:IEEE)1394标准、外部设备互连(Peripheral ComponentInterconnect Express,简称为:PCI Express)标准、通用串行总线(Universal SerialBus,简称为:USB)标准、安全数位(Secure Digital,简称为:SD)接口标准、超高速一代(Ultra High Speed-I,简称为:UHS-I)接口标准、超高速二代(Ultra High Speed-II,简称为:UHS-II)接口标准、记忆棒(Memory Stick,简称为:MS)接口标准、多芯片封装(Multi-Chip Package)接口标准、多媒体储存卡(Multi Media Card,简称为:MMC)接口标准、崁入式多媒体储存卡(Embedded Multimedia Card,简称为:eMMC)接口标准、通用快闪存储器(Universal Flash Storage,简称为:UFS)接口标准、嵌入式多芯片封装(embedded MultiChip Package,简称为:eMCP)接口标准、小型快闪(Compact Flash,简称为:CF)接口标准、整合式驱动电子接口(Integrated Device Electronics,简称为:IDE)标准或其他适合的标准。连接接口单元402可与存储器控制电路单元404封装在一个芯片中,或者连接接口单元402是布设于一包含存储器控制电路单元404的芯片外。
存储器控制电路单元404用以执行以硬件形式或固件形式操作的多个逻辑闸或控制指令并且根据主机系统11的指令在可复写式非易失性存储器模块406中进行数据的写入、读取与抹除等运作。
可复写式非易失性存储器模块406是电性连接至存储器控制电路单元404并且用以储存主机系统11所写入的数据。可复写式非易失性存储器模块406可以是单层单元(Single Level Cell,简称为:SLC)NAND型快闪存储器模块(即,一个存储单元中可储存1个比特的快闪存储器模块)、多层单元(Multi Level Cell,简称为:MLC)NAND型快闪存储器模块(即,一个存储单元中可储存2个比特的快闪存储器模块)、三层单元(Triple LevelCell,简称为:TLC)NAND型快闪存储器模块(即,一个存储单元中可储存3个比特的快闪存储器模块)、其他快闪存储器模块或其他具有相同特性的存储器模块。
图5是根据本发明的一范例实施例所示出的存储器控制电路单元的概要方块图。
请参照图5,存储器控制电路单元404包括存储器管理电路502、主机接口504、存储器接口506及错误检查与校正电路508。
存储器管理电路502用以控制存储器控制电路单元404的整体运作。具体来说,存储器管理电路502具有多个控制指令,并且在存储器储存装置10运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。以下说明存储器管理电路502的操作时,等同于说明存储器控制电路单元404的操作。
在本范例实施例中,存储器管理电路502的控制指令是以固件形式来操作。例如,存储器管理电路502具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制指令是被烧录至此只读存储器中。当存储器储存装置10运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。
在另一范例实施例中,存储器管理电路502的控制指令也可以程序码形式储存于可复写式非易失性存储器模块406的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路502具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(boot code),并且当存储器控制电路单元404被致能时,微处理器单元会先执行此开机码来将储存于可复写式非易失性存储器模块406中的控制指令载入至存储器管理电路502的随机存取存储器中。后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。
此外,在另一范例实施例中,存储器管理电路502的控制指令也可以一硬件形式来操作。例如,存储器管理电路502包括微控制器、存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路。存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路是电性连接至微控制器。其中,存储单元管理电路用以管理可复写式非易失性存储器模块406的实体抹除单元;存储器写入电路用以对可复写式非易失性存储器模块406下达写入指令序列以将数据写入至可复写式非易失性存储器模块406中;存储器读取电路用以对可复写式非易失性存储器模块406下达读取指令序列以从可复写式非易失性存储器模块406中读取数据;存储器抹除电路用以对可复写式非易失性存储器模块406下达抹除指令序列以将数据从可复写式非易失性存储器模块406中抹除;而数据处理电路用以处理欲写入至可复写式非易失性存储器模块406的数据以及从可复写式非易失性存储器模块406中读取的数据。写入指令序列、读取指令序列及抹除指令序列可各别包括一或多个程序码或指令码并且用以指示可复写式非易失性存储器模块406执行相对应的写入、读取及抹除等操作。
主机接口504是电性连接至存储器管理电路502并且用以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机接口504来传送至存储器管理电路502。在本范例实施例中,主机接口504是兼容于SATA标准。然而,必须了解的是本发明不限于此,主机接口504也可以是兼容于PATA标准、IEEE 1394标准、PCIExpress标准、USB标准、SD标准、UHS-I标准、UHS-II标准、MS标准、MMC标准、eMMC标准、UFS标准、CF标准、IDE标准或其他适合的数据传输标准。
存储器接口506是电性连接至存储器管理电路502并且用以存取可复写式非易失性存储器模块406。也就是说,欲写入至可复写式非易失性存储器模块406的数据会经由存储器接口506转换为可复写式非易失性存储器模块406所能接受的格式。具体来说,若存储器管理电路502要存取可复写式非易失性存储器模块406,存储器接口506会传送对应的指令序列。例如,这些指令序列可包括指示写入数据的写入指令序列、指示读取数据的读取指令序列、指示抹除数据的抹除指令序列、以及用以指示各种存储器操作(例如,改变读取电压准位或执行垃圾回收程序等等)的相对应的指令序列,在此不一一赘述。这些指令序列例如是由存储器管理电路502产生并且通过存储器接口506传送至可复写式非易失性存储器模块406。这些指令序列可包括一或多个信号,或是在总线上的数据。这些信号或数据可包括指令码或程序码。例如,在读取指令序列中,会包括读取的辨识码、存储器地址等信息。
错误检查与校正电路508是电性连接至存储器管理电路502并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当存储器管理电路502从主机系统11中接收到写入指令时,错误检查与校正电路508会为对应此写入指令的数据产生对应的错误更正码(error correcting code,简称为:ECC)和/或错误检查码(error detecting code,简称为:EDC),并且存储器管理电路502会将对应此写入指令的数据与对应的错误更正码和/或错误检查码写入至可复写式非易失性存储器模块406中。后,当存储器管理电路502从可复写式非易失性存储器模块406中读取数据时会同时读取此数据对应的错误更正码和/或错误检查码,并且错误检查与校正电路508会依据此错误更正码和/或错误检查码对所读取的数据执行错误检查与校正程序。
在本范例实施例中,错误检查与校正电路508所使用的是低密度奇偶检查码(lowdensity parity code,简称为:LDPC)。然而,在另一范例实施例中,错误检查与校正电路508所使用的也可以是BCH码、回旋码(convolutional code)、涡轮码(turbo code)、比特翻转(bit flipping)等编/解码演算法。
在一范例实施例中,存储器控制电路单元404还包括缓冲存储器510与电源管理电路512。缓冲存储器510是电性连接至存储器管理电路502并且用以暂存来自于主机系统11的数据与指令或来自于可复写式非易失性存储器模块406的数据。电源管理电路512是电性连接至存储器管理电路502并且用以控制存储器储存装置10的电源。
在本范例实施例中,存储器管理电路502会配置逻辑单元来映射至可复写式非易失性存储器模块406中的实体单元。例如,在本范例实施例中,主机系统11是通过逻辑地址来存取可复写式非易失性存储器模块406中的数据,因此,每一个逻辑单元是指一个逻辑地址。然而,在另一范例实施例中,每一个逻辑单元也可以是指一个逻辑扇、一个逻辑页或者由多个连续的逻辑地址组成。每一个逻辑单元是映射至一或多个实体单元。在本范例实施例中,一个实体单元是指一个实体区块。然而,在另一范例实施例中,一个实体单元也可以是一个实体地址、一个实体扇、一个实体页或者是由多个连续的实体地址组成,本发明不加以限制。
存储器管理电路502会将逻辑单元与实体单元间的映射关系记录于一逻辑-实体映射表。当主机系统11欲从存储器储存装置10读取数据或写入数据至存储器储存装置10时,存储器管理电路502可根据此逻辑-实体映射表来执行对于存储器储存装置10的数据存取。
在本范例实施例中,错误检查与校正电路508会根据低密度奇偶检查码来编码与解码。在低密度奇偶检查码中,是用一个检查矩阵(也称为奇偶检查矩阵)来定义有效的码字。以下将奇偶检查矩阵标记为矩阵H,并且一码字标记为CW。依照以下方程式(1),若奇偶检查矩阵H与码字CW的相乘是零向量,表示码字CW为有效的码字。其中运算子表示模2(mod 2)的矩阵相乘。换言,矩阵H的零空间(null space)便包含了所有的有效码字(validcodeword)。然而,本发明并不限制码字CW的内容。例如,码字CW也可以包括用任意演算法所产生的错误更正码或是错误检查码。
其中矩阵H的维度是k-乘-n(k-by-n),码字CW的维度是1-乘-n。k与n为正整数。码字CW中包括了信息位与奇偶位,即码字CW可以表示成[M P],其中向量M是由信息位所组成,向量P是由奇偶位所组成。向量M的维度是1-乘-(n-k),而向量P的维度是1-乘-k。以下将信息位与奇偶位统称为数据位。换言,码字CW中具有n个数据位,其中信息位的长度为(n-k)比特,并且奇偶位的长度是k比特,即码字CW的码率(code rate)为(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中存在至少一个错误并且码字CW不是有效的码字。
向量S的维度是k-乘-1,其中每一个元素也称为校验子(syndrome)。向量S也称为校验子向量(或校验子集合)。若码字CW不是有效的码字,则错误检查与校正电路508会执行一个解码程序,以尝试更正码字CW中的错误。
图6是根据本发明的一范例实施例所示出的低密度奇偶检查码的置信传播(belief propagation)的示意图。
请参照图6,一般来说,奇耦检查矩阵H可以表示为置信传播图610,其中包括奇偶节点601(1)~601(k)与信息节点602(1)~602(n)。每一个奇偶节点601(1)~601(k)是对应到一个校验子,而每一个信息节点602(1)~602(n)是对应一个数据位。数据位与校验子间的对应关系(即,信息节点602(1)~602(n)与奇偶节点601(1)~601(k)间的连结关系)是根据奇偶检查矩阵H所产生。具体来说,若奇耦检查矩阵H中第i列(row)第j行(column)的元素为1,则第i个奇偶节点601(i)便会连接到第j个信息节点602(j),其中i与j为正整数。
当存储器管理电路502从可复写式非易失性存储器模块106中读取n个数据位(形成一个码字)时,存储器管理电路502(或错误检查与校正电路508)也会取得每一个数据位的可靠度信息(也称为通道可靠度信息)。此可靠度信息是用以表示对应的数据位被解码为比特“1”或是“0”的机率(或称信心度)。例如,在图610中,信息节点602(1)~602(n)会接收到对应的可靠度信息L1~Ln。其中,信息节点602(1)会接收第1个数据位的可靠度信息L1,而信息节点602(j)会接收第j个数据位的可靠度信息Lj。
错误检查与校正电路508会根据图610的结构与通道可靠度信息L1~Ln来执行解码程序。在本范例实施例中,错误检查与校正电路508所执行的解码程序为一迭代解码(iterative decoding)程序。在迭代解码程序中,信息节点602(1)~602(n)会计算出可靠度信息给奇偶节点601(1)~601(k),并且奇偶节点601(1)~601(k)也会计算出可靠度信息给信息节点602(1)~602(n)。计算出来的可靠度信息会沿着这些图610中的边(edge)来传送。例如,奇偶节点601(i)传送给信息节点602(j)的是可靠度信息Li→j,而信息节点602(j)传送给奇偶节点601(i)是可靠度信息Lj→i。这些可靠度信息是用来表示一个节点认为某一个数据位被解码为“1”或是“0”的机率(或上述信心度)有多少。举例来说,可靠度信息Lj→i表示信息节点602(j)认为第j个数据位被解码为“1”或是“0”的信心度(可为正或是负),而可靠度信息Li→j表示奇偶节点601(i)认为第j个数据位被解码为“1”或是“0”的信心度。而信息节点602(1)~602(n)与奇偶节点601(1)~601(k)会根据输入的可靠度信息来计算输出的可靠度信息,其近似于计算一个数据位被解码为“1”或是“0”的条件机率。因此,上述传送可靠度信息的过程又被称为置信传播。
当采用不同的演算法,信息节点602(1)~602(n)和/或奇偶节点601(1)~601(k)会计算出不同的可靠度信息。例如,错误检查与校正电路508可以采用总和-乘积演算法(Sum-Product Algorithm)、最小值-总和演算法(Min-Sum Algorithm)、或是比特翻转(bit-flipping Algorithm),本发明并不限制采用何种演算法。
在本范例实施例中,迭代解码程序中的迭代(iteration)会不断的重复执行,以更新至少部分数据位的可靠度信息,直到成功地获得有效码字或执行迭代的次数到达一预定门槛值为止。例如,在迭代解码程序的每一次迭代中,信息节点602(1)~602(n)会传递可靠度信息给奇偶节点601(1)~601(k),并且奇偶节点601(1)~601(k)会传递可靠度信息给信息节点602(1)~602(n)。
在每一次迭代过后,错误检查与校正电路508会根据目前的可靠度信息计算出每一个数据位应该被解码为二进制“1”或是“0”并且对这些计算出的数据位进行验证。例如,错误检查与校正电路508会执行奇偶检查程序以验证计算出的数据位。在奇偶检查程序中,错误检查与校正电路508会将数据位所形成的码字与相对应的奇偶检查矩阵相乘,藉此判断该码字是否为有效的码字。若所产生的码字为有效的码字,表示解码成功,并且迭代解码程序会停止。若所产生的码字不是有效的码字,则会进行下一次的迭代。此外,若迭代解码程序中的迭代次数超过一个预设值,则迭代解码也会停止,表示解码失败。
图7是根据本发明的一范例实施例所示出的奇耦检查矩阵的示意图。
请参照图7,奇偶检查矩阵700的维度是6-乘-9,但本发明并不限制正整数k与n为多少。奇偶检查矩阵700的每一列(row)也代表了一个限制(constraint)。以奇偶检查矩阵700的第一列为例,若某一个码字是有效码字,则将此码字中第2、6及7个比特做模2(modulo-2)的加法后,会得到二进制“0”。在此领域有通常知识者应能理解如何用奇偶检查矩阵700来编码,在此便不再赘述。此外,奇偶检查矩阵700仅为一个范例矩阵,而非用以限制本发明。
当存储器管理电路502要将多个比特写入至可复写式非易失性存储器模块406时,错误检查与校正电路508会对每(n-k)个欲被写入的比特(即,信息位)都产生对应的k个比特(即,奇偶位)。存储器管理电路502会把这n个比特(即,数据位)作为一个码字写入至可复写式非易失性存储器模块406。
存储器管理电路502会接收来自主机系统11的一读取指令。根据此读取指令,存储器管理电路502会发送一读取指令序列至可复写式非易失性存储器模块406。此读取指令序列会指示可复写式非易失性存储器模块406读取至少一实体单元。根据此读取指令序列,可复写式非易失性存储器模块406会执行相对应的读取操作(例如,施予读取电压至某一实体单元以读取至少一存储单元所储存的数据)并回传一回应数据给存储器管理电路502。存储器管理电路502会接收来自可复写式非易失性存储器模块406的回应数据,并且错误检查与校正电路508会对此回应数据执行一迭代解码程序。
在本范例实施例中,存储器管理电路502会决定一个偏移临界值。根据所决定的偏移临界值,存储器管理电路502会决定一个检查矩阵(例如,图7中的奇偶检查矩阵700)。错误检查与校正电路508会根据此检查矩阵来执行上述编码与解码程序。相关的编码与解码程序已详述于上,在此便不赘述。
在本范例实施例中,所决定的检查矩阵会包括多个子矩阵。此些子矩阵会被分组为至少一个子矩阵群组。每一个子矩阵会具有一个预设维度。特别是,所决定的偏移临界值会小于对应于此预设维度的一个预设维度值。例如,若每一个子矩阵的预设维度皆为3-乘-3,则对应于此预设维度的预设维度值为“3”。
在迭代解码程序中,错误检查与校正电路508会产生对应于所接收的回应数据的一个数据集合。此数据集合会包括多个群组。错误检查与校正电路508会根据所决定的偏移临界值与所决定的检查矩阵中不同的子矩阵群组来移动(shift)此些数据集合中的群组以获得多个偏移群组,使得数据集合中的每一个群组对应于每一次的移动(以下也称为群组移动)的一偏移量都不会超过所决定的偏移临界值。值得一提的是,在此提及的群组移动是指以群组为单位来移动各个群组中的比特。例如,假设某一个群组包括依序排列的元素“A1”、“A2”及“A3”,则在对于此群组执行位移量为“1”(即,offset=1)的群组移动后,此群组中的元素排列顺序改变为元素“A3”、“A1”及“A2”;而依序排列的元素“A3”、“A1”及“A2”可视为相对于依序排列的元素“A3”、“A1”及“A2”的偏移群组,并且依序排列的元素“A3”、“A1”及“A2”相对于依序排列的元素“A3”、“A1”及“A2”的偏移量为“1”。然后,错误检查与校正电路508会根据此些偏移群组来产生解码参考数据。此解码参考数据会在迭代解码程序中被使用。
在一范例实施例中,所产生的解码参考数据是对应于一个奇偶检查程序的校验子集合(也称为校验子向量)并且可被用来验证某一码字是否为有效码字(或,解码是否成功)。在一范例实施例中,所产生的解码参考数据是对应于一个比特翻转演算法的校验权重集合(也称为校验权重向量)并且可被用来决定要被翻转的数据位。在一范例实施例中,所产生的解码参考数据则是对应于一个最小值-总和演算法的最小值集合(也称为最小值向量)并且可被用来决定至少部分数据位的可靠度信息。以下基于多个范例实施例来说明如何在迭代解码程序中对数据集合执行移动群组并产生相对应的解码参考数据。
图8是根据本发明的一范例实施例所示出的奇偶检查程序的示意图。在本范例实施例中,数据集合与解码参考数据皆是用于低密度奇偶检查码的奇偶检查程序。例如,数据集合是指奇偶检查程序中待验证的码字,而解码参考数据则是奇偶检查程序中产生的校验子集合。
请参照图8,存储器管理电路502会决定一个偏移临界值。在本范例实施例中,所决定的偏移临界值为“2”。对应于所决定的偏移临界值,存储器管理电路502会决定一个奇偶检查矩阵800。奇偶检查矩阵800会被用来执行储存数据时的编码与读取数据时的解码。
在本范例实施例中,奇偶检查矩阵800包括子矩阵群组830与840。子矩阵群组830与840分别包括以列(row)方向排列的子矩阵831~833以及841~843。子矩阵831~833以及841~843中的每一者皆为一个方阵,并且子矩阵831~833以及841~843中的每一者皆具有一个预设维度。例如,子矩阵831~833以及841~843中的每一者的预设维度皆为3-乘-3,并且对应于此预设维度的预设维度值为“3”。存储器管理电路502会限制所决定的奇偶检查矩阵800中,对应于子矩阵831~833以及841~843中的每一者的预设维度的预设维度值(即,“3”)大于事先决定的偏移临界值(即,“2”)。然而,对应于不同的偏移临界值,所决定的奇偶检查矩阵也可以不同,只要满足所决定的奇偶检查矩阵中各个子矩阵的预设维度值大于事先决定的偏移临界值即可。例如,在另一范例实施例中,奇偶检查矩阵中的子矩阵群组的数目可以是更多或更少、每一个子矩阵群组中的子矩阵的数目可以是更多或更少,并且每一个子矩阵的预设维度可以是更大或更小。
在本范例实施例中,在存储器管理电路502发送上述读取指令序列并接收对应于此读取指令序列的回应数据后,错误检查与校正电路508会对此回应数据执行迭代解码程序。在迭代解码程序的某一迭代中,码字810会被决定并且在对应的奇偶检查程序中被验证是否为有效码字。
具体而言,在对于码字810的奇偶检查程序中,错误检查与校正电路508会获得奇偶检查矩阵800与码字810的矩阵相乘的结果并将此结果作为校验子集合820。例如,对应于奇偶检查矩阵800的第一列中的多个元素1的位置,对码字810中的比特A2、B3及C1执行模2加法可获得校验子集合820中的校验子S1;对应于奇偶检查矩阵800的第二列中的多个元素1的位置,对码字810中的比特A3、B1及C2执行模2加法可获得校验子集合820中的校验子S2;对应于奇偶检查矩阵800的第四列中的多个元素1的位置,对码字810中的比特A3、B1及C2执行模2加法可获得校验子集合820中的校验子S4。以此类推,校验子集合820中的校验子S1~S6会被获得。然后,错误检查与校正电路508会根据校验子集合820是否为零向量(即,校验子S1~S6皆为“0”)来判断码字810中是否存在错误。例如,若校验子S1~S6皆为“0”,则错误检查与校正电路508会判定码字810中不存在任何错误(即,码字810为有效码字)并且根据码字810输出解码数据;然而,若校验子S1~S6的至少其中一为“1”,则错误检查与校正电路508会判定码字810中存在错误。若错误检查与校正电路508判定码字810中存在错误且已执行的迭代的次数尚未达到预定门槛值,则错误检查与校正电路508会对于码字810执行下一次迭代并且再次执行一个奇偶检查程序来对产生的码字进行验证。此外,在一范例实施例中,也可以搭配改变读取电压准位来再次读取相同的实体单元或改变解码方式等机制来加强解码效率,在此便不赘述。
在本范例实施例中,错误检查与校正电路508并不会真正地执行如图8所示出的矩阵相乘。取而代的是,错误检查与校正电路508会对应于奇偶检查矩阵800中的子矩阵群组830与840来对码字810执行群组移动以及矩阵加法来获得校验子集合820。原因在于,在多数的情况下,执行矩阵加法相对于执行矩阵乘法具有运算复杂度较低和/或运算速度较快的优势。换言,错误检查与校正电路508会以层(layer)为单位来逐渐产生校验子集合820。例如,子矩阵群组830为第一层并且用以计算校验子集合820中的校验子S1~S3;子矩阵群组840为第二层并且用以计算校验子集合820中的校验子S4~S6。
在本范例实施例中,对应于奇偶检查矩阵800中每一个子矩阵的预设维度,错误检查与校正电路508会将码字810中的比特分组为多个群组(以下也称为预设群组)。例如,对应于子矩阵的预设维度为3-乘3,码字810中的比特A1、A2、A3被分组至同一个预设群组(以下也称为第一预设群组),码字810中的比特B1、B2、B3被分组至同一个预设群组(以下也称为第二预设群组),并且码字810中的比特C1、C2、C3被分组至同一个预设群组(以下也称为第三预设群组)。在对应的群组移动中,码字810中的每一个比特皆是以其所属的群组作为一个统一移动单位。换言,属于同一个群组的多个比特对应于一次的群组移动偏移量会相同,而属于不同群组的多个比特对应于一次的群组移动的偏移量可能相同或不同。例如,在对应于某一个层的群组移动中,同属于第一预设群组的比特A1、A2及A3的偏移量相同,但分别属于第一预设群组与第二预设群组的比特A1与B1的偏移量可能相同或不同。
图9是根据本发明的一范例实施例所示出的获得对应于奇偶检查程序的校验子集合的示意图。
请参照图8与图9,对应于子矩阵群组830(即,第一层)的群组移动会先被执行。例如,对应于子矩阵群组830中元素1的位置,码字810中的比特A1、A2、A3会被移动为比特A2、A3、A1,码字810中的比特B1、B2、B3会被移动为比特B3、B1、B2,并且码字810中的比特C1、C2、C3不被移动。因此,图9中包含依序排列的比特A2、A3、A1、B3、B1、B2、C1、C2、C3的码字910会被获得。
在本范例实施例中,码字910中的比特A2、A3、A1被视为属于对应于第一预设群组的偏移群组911,码字910中的比特B3、B1、B2被视为属于对应于第二预设群组的偏移群组912,并且码字910中的比特C1、C2、C3被视为属于对应于第三预设群组的偏移群组913。其中,偏移群组911相对于第一预设群组的偏移量为“1”(即,offset=1),偏移群组912相对于第二预设群组的偏移量为“2”(即,offset=2),并且偏移群组913相对于第三预设群组的偏移量为“0”(即,offset=0)。然后,错误检查与校正电路508会根据偏移群组911~913来产生校验子集合820中的一部分校验子。例如,错误检查与校正电路508会对偏移群组911~913执行矩阵加法以获得校验子向量1020中的校验子S1~S3。
在获得偏移群组911~913后,对应于子矩阵群组840(即,第二层)的群组移动会被执行。例如,对应于子矩阵群组840中元素1的位置,偏移群组911中的比特A2、A3、A1会被移动为比特A3、A1、A2,偏移群组912中的比特B3、B1、B2会被移动为比特B1、B2、B3,并且偏移群组913中的比特C1、C2、C3会被移动为比特C2、C3、C1。因此,图9中包含依序排列的比特A3、A1、A2、B1、B2、B3、C2、C3、C1的码字920会被获得。
在本范例实施例中,码字920中的比特A3、A1、A2被视为属于对应于偏移群组911的偏移群组921,码字920中的比特B1、B2、B3被视为属于对应于偏移群组912的偏移群组922,并且码字920中的比特C2、C3、C1被视为属于对应于偏移群组913的偏移群组923。其中,偏移群组921相对于偏移群组911的偏移量为“1”(即,offset=1),偏移群组922相对于偏移群组912的偏移量为“1”(即,offset=1),并且偏移群组923相对于偏移群组913的偏移量为“1”(即,offset=1)。然后,错误检查与校正电路508会根据偏移群组921~923来产生校验子集合820中的另一部分的校验子。例如,错误检查与校正电路508会对偏移群组921~923执行矩阵加法以获得校验子集合820中的校验子S4~S6。
存储器管理电路502(或,错误检查与校正电路508)会限制对应于每一个子矩阵群组(即,层)所执行的群组移动的偏移量皆不超过所决定的偏移临界值。例如,在图8与图9的范例实施例中,偏移临界值被设定为“2”,因此,偏移群组911~913中的每一者相对于其在码字810中的一个对应群组的偏移量皆不超过“2”;而偏移群组921~923分别相对于偏移群组911~913的偏移量也不超过“2”。例如,在执行对应于子矩阵群组830(即,第一层)的群组移动而产生偏移群组911~913的操作中,码字810中每一个比特的偏移量可以是“0”、“1”或“2”,视其所属的群组而定;而在执行对应于子矩阵群组840(即,第二层)的群组移动而产生偏移群组921~923的操作中,码字920中每一个比特的偏移量也可以是“0”、“1”或“2”,视其所属的群组而定。此外,在图8与图9的另一范例实施例中,若偏移临界值被设定为“1”,则在后续每一次的群组移动中每一个偏移群组中的比特的偏移量皆不超过“1”。
在一范例实施例中,若奇偶检查程序中产生的校验子集合不是零向量(例如,图8中校验子S1~S6的至少其中一为“1”),表示当前验证的码字中存在错误。因此,一个比特翻转演算法可以被用来快速地决定要翻转(flip)码字中的哪一个比特,例如,将某一个比特的值从“0”改变为“1”或者从“1”改变为“0”,以尝试更正码字中的错误。在比特翻转演算法中,需要计算对应于校验子集合的一个校验权重(syndrome weight)集合并且码字中的至少一个比特会基于此校验权重集合而被翻转。在一范例实施例中,通过对数据集合中的多个群组执行群组移动来获得相对应的解码参考数据,则可降低计算校验权重集合的运算复杂度和/或提高运算速度。然而,在另一范例实施例中,若判定当前验证码字中存在错误,其他的解码演算法也可以被用来更正码字中的错误。
图10与图11是根据本发明的另一范例实施例所示出的获得对应于比特翻转演算法的校验权重集合的示意图。在本范例实施例中,数据集合与解码参考数据皆是用于比特翻转演算法。例如,数据集合是指比特翻转演算法中待更新的校验权重集合,而解码参考数据则是比特翻转演算法中更新后的校验权重集合。
请参照图10,在获得校验子集合820后,在比特翻转演算法中,一个校验权重集合1001会被决定。例如,校验权重集合1001会包括依序排列的校验权重EA1、EA2、EA3、EB1、EB2、EB3、EC1、EC2及EC3。其中,校验权重EA1、EA2、EA3、EB1、EB2、EB3、EC1、EC2及EC3分别对应于码字810中的比特A1、A2、A3、B1、B2、B3、C1、C2及C3。校验权重集合1001可用来表示码字810中每一个比特对于码字810中的错误的参与程度。例如,根据奇偶检查矩阵800,比特A1参与了校验子S3与S5的计算,故可根据校验子S3与S5来计算对应于比特A1的校验权重EA1。例如,可将校验子S3与S5相加以获得校验权重EA1。又例如,根据奇偶检查矩阵800,比特A2参与了校验子S1与S6的计算,故可根据校验子S1与S6来计算对应于比特A2的校验权重EA2。例如,可将校验子S1与S6相加以获得校验权重EA2。特别是,在此用来计算校验权重的加法是指一般加法,并非模2加法。例如,若校验子S3与S5皆为“1”,则将校验子S3与S5相加可获得校验权重EA1为“2”。以此类推,根据奇偶检查矩阵800与校验子集合820,校验权重集合1001可被获得。
在比特翻转演算法中,若码字中的某一个比特所对应的校验权重很大,表示此比特有较大的机率为错误比特,因此翻转此比特有较高的机率可以更正错误。反,若码字中的某一个比特所对应的校验权重很小,则表示此比特为错误比特的机率不高,因此翻转此比特可以更正错误的机率也不高。一般来说,根据奇偶检查矩阵800与校验子集合820来获得校验权重集合1001的操作可以等效于将向量1002加上向量1003来获得校验权重集合1001。其中,向量1002中的元素仅包括校验子S1~S3,而向量1003中的元素则仅包括校验子S4~S6。校验子S1~S3在向量1002中的位置是根据奇偶检查矩阵800来决定,并且校验子S4~S6在向量1003中的位置也是根据奇偶检查矩阵800来决定。
在本范例实施例中,错误检查与校正电路508同样是以层为单位来逐渐产生校验权重集合1001。例如,子矩阵群组830为第一层并且用以执行校验权重集合的第一更新操作;子矩阵群组840为第二层并且用以执行校验权重集合的第二更新操作。在本范例实施例中,错误检查与校正电路508会将向量1001中的多个校验权重分组为多个预设群组。例如,校验权重EA1、EA2、EA3属于第一预设群组,校验权重EB1、EB2、EB3属于第二预设群组,并且校验权重EC1、EC2、EC3属于第三预设群组。
请参照图11,对应于子矩阵群组830(即,第一层)的群组移动会先被执行。例如,对应于子矩阵群组830中元素1的位置,属于第一预设群组的校验权重EA1、EA2、EA3会被移动为校验权重EA2、EA3、EA1,属于第二预设群组的校验权重EB1、EB2、EB3会被移动为比特EB3、EB1、EB2,而属于第三预设群组的校验权重EC1、EC2、EC3不被移动。因此,图11中包含依序排列的校验权重EA2、EA3、EA1、EB3、EB1、EB2、EC1、EC2、EC3的向量1101会被获得。例如,向量1101中的校验权重EA2、EA3、EA1属于相对于第一预设群组的一个偏移群组;向量1101中的校验权重EB3、EB1、EB2属于相对于第二预设群组的一个偏移群组;并且向量1101中的校验权重EC1、EC2、EC3属于相对于第三预设群组的一个偏移群组。
然后,错误检查与校正电路508会利用向量1103与1104来产生向量1102。其中,向量1101~1103中所有元素的排序皆一致,如图11所示。此外,向量1103中所有元素的初始值皆被设为“0”。在本范例实施例中,产生向量1102的操作也可视为将向量1103更新为向量1102的操作。例如,在将向量1103更新为向量1102的操作中,向量1103中的校验权重EA2、EA3、EA1会被分别加上向量1104中的校验子S1、S2、S3以获得向量1102中更新后的校验权重EA2、EA3、EA1;向量1103中的EB3、EB1、EB2会分别被加上向量1104中的校验子S1、S2、S3来获得向量1102中更新后的校验权重EB3、EB1、EB2;并且向量1103中的EC1、EC2、EC3也会分别被加上向量1104中的校验子S1、S2、S3来获得向量1102中更新后的校验权重EC1、EC2、EC3。
在获得向量1102后,对应于子矩阵群组840(即,第二层)的群组移动会被执行。例如,对应于子矩阵群组840中元素1的位置,向量1102中的校验权重EA2、EA3、EA1会被移动为校验权重EA3、EA1、EA2,向量1102中的校验权重EB3、EB1、EB2会被移动为校验权重EB1、EB2、EB3,并且向量1102中的校验权重EC1、EC2、EC3会被移动为校验权重EC2、EC3、EC1。因此,图11中包含依序排列的校验权重EA3、EA1、EA2、EB1、EB2、EB3、EC2、EC3、EC1的向量1105会被获得。
然后,错误检查与校正电路508会利用向量1107与向量1108来产生向量1106。其中,向量1105~1107中所有元素的排序皆一致,如图11所示。此外,产生向量1106的操作也可视为将向量1107更新为向量1106的操作。例如,在将向量1107更新为向量1106的操作中,向量1107中的校验权重EA3、EA1、EA2会分别被加上向量1108中的校验子S4、S5、S6来获得向量1106中更新后的校验权重EA3、EA1、EA2;向量1107中的EB1、EB2、EB3会分别被加上向量1108中的校验子S4、S5、S6来获得向量1106中更新后的校验权重EB1、EB2、EB3;并且向量1107中的EC2、EC3、EC1也会分别被加上向量1108中的校验子S4、S5、S6来获得向量1106中更新后的校验权重EC2、EC3、EC1。所产生的向量1106即包含了对应于图10的码字810中每一个比特的校验权重。换言,利用图11的范例实施例中依序更新向量1102与1106的操作来取代图10中将向量1102加上1003的操作,可提升在比特翻转演算法中计算校验权重集合的效率。
在一范例实施例中,若错误检查与校正电路508是采用总和-乘积演算法来更新迭代解码程序中使用的可靠度信息,则通过对数据集合中的多个群组执行群组移动来获得相对应的解码参考数据的操作,同样可用于降低执行最小值-总和演算法的运算复杂度和/或提高运算速度。
图12与图13是根据本发明的另一范例实施例所示出的获得对应于最小值-总和演算法的最小值集合的示意图。在本范例实施例中,数据集合与解码参考数据皆是用于最小值-总和演算法。例如,数据集合是指待解码的码字,而解码参考数据则是最小值-总和演算法中产生的最小值集合。
请参照图12,在采用最小值-总和演算法的迭代解码程序中,错误检查与校正电路508会根据奇偶检查矩阵800来对码字810中的不同比特进行多次比较以产生最小值集合1201。例如,最小值集合1201包括最小值m1~m6。其中,最小值m1是取码字810中的比特A2、B3及C1的最小者;最小值m2是取码字810中的比特A3、B1及C2的最小者;最小值m3是取码字810中的比特A1、B2及C3的最小者;最小值m4是取码字810中的比特A3、B1及C2的最小者;最小值m5是取码字810中的比特A1、B2及C3的最小者;最小值m6是取码字810中的比特A2、B3及C1的最小者。
在本范例实施例中,错误检查与校正电路508同样会以层为单位来逐渐产生最小值集合1201。例如,子矩阵群组830为第一层并且用以计算最小值集合1201中的校验子m1~m3;子矩阵群组840为第二层并且用以计算最小值集合1201中的校验子m4~m6。在本范例实施例中,错误检查与校正电路508会将码字810中的比特分组为多个预设群组。例如,码字810中的比特A1、A2、A3属于第一预设群组,码字810中的比特B1、B2、B3属于第二预设群组,并且码字810中的比特C1、C2、C3属于第三预设群组。
请参照图13,对应于子矩阵群组830(即,第一层)的群组移动会先被执行。例如,对应于子矩阵群组830中元素1的位置,码字810中的比特A1、A2、A3会被移动为比特A2、A3、A1,码字810中的比特B1、B2、B3会被移动为比特B3、B1、B2,而码字810中的比特C1、C2、C3不被移动。因此,图13中包含依序排列的比特A2、A3、A1、B3、B1、B2、C1、C2、C3的码字910会被获得。例如,码字910中的比特A2、A3、A1属于相对于第一预设群组的偏移群组911;码字910中的比特B3、B1、B2属于相对于第二预设群组的偏移群组912;并且码字910中的比特C1、C2、C3属于相对于第三预设群组的偏移群组913。
然后,错误检查与校正电路508会对偏移群组911~913中位于的特定位置的比特取最小值以产生最小值集合1201中的校验子m1~m3。例如,错误检查与校正电路508会对偏移群组911~913中位于每一个群组中第一个位置的比特A2、B3、C1取最小值作为m1;对偏移群组911~913中位于每一个群组中第二个位置的比特A3、B1、C2取最小值作为m2;并且对偏移群组911~913中位于每一个群组中第三个位置的比特A1、B2、C3取最小值作为m3。
在获得偏移群组911~913后,对应于子矩阵群组840(即,第二层)的群组移动会被执行。例如,对应于子矩阵群组840中元素1的位置,偏移群组911中的比特A2、A3、A1会被移动为比特A3、A1、A2,偏移群组912中的比特B3、B1、B2会被移动为比特B1、B2、B3,并且偏移群组913中的比特C1、C2、C3会被移动为比特C2、C3、C1。因此,图13中包含比特A3、A1、A2、B1、B2、B3、C2、C3、C1的码字920会被获得。例如,码字920中的比特A3、A1、A2被视为属于对应于偏移群组911的偏移群组921,码字920中的比特B1、B2、B3被视为属于对应于偏移群组912的偏移群组922,并且码字920中的比特C2、C3、C1被视为属于对应于偏移群组913的偏移群组923。
然后,错误检查与校正电路508会对偏移群组921~923中位于特定位置的比特取最小值以产生最小值集合1201中的校验子m4~m6。例如,错误检查与校正电路508会对偏移群组921~923中位于每一个群组中第一个位置的比特A3、B1、C2取最小值作为m4;对偏移群组921~923中位于每一个群组中第二个位置的比特A1、B2、C3取最小值作为m5;并且对偏移群组921~923中位于每一个群组中第三个位置的比特A2、B3、C1取最小值作为m6。藉此,可获得最小值-总和演算法中使用的最小值集合1201并可提升计算效率。
综上所述,在上述多个范例实施例中,即使所提及的操作分别是应用于迭代解码程序中的不同阶段和/或对应于不同的解码演算法,但是对于预设临界值的设定、奇偶检查矩阵的设定、数据集合中群组的设定,以及数据集合对于每一个层的群组移动的操作都是相同或相似的。换言,对应于迭代解码程序中的不同阶段和/或不同的解码演算法,只要对应地决定要将什么数据作为数据集合以及根据移动后的群组要执行何种操作来产生解码参考数据则可。
在一范例实施例中,所决定的偏移临界值会负相关(negatively correlated)于相对应采用的奇偶检查矩阵的行权重值(column weight)。其中,奇偶检查矩阵的行权重值对应于奇偶检查矩阵中的某一个行所包含的元素1的数目。例如,若偏移临界值越大,则对应采用的奇偶检查矩阵的某一个行所包含的元素1的数目可能越小;若偏移临界值越小,则对应采用的奇偶检查矩阵的某一个行所包含的元素1的数目可能越多。在一范例实施例中,奇偶检查矩阵的行权重值是对应于奇偶检查矩阵中的包含最多的元素1的行所包含的元素1的数目。例如,在某一奇偶检查矩阵中,某一个行包含二个元素1,而另一个行包含三个元素1,则此奇偶检查矩阵的行权重值可被决定为“3”。
在一范例实施例中,所决定的偏移临界值会等于或大于将奇偶检查矩阵的预设维度值除以其行权重值而获得的最小临界值。例如,所决定的偏移临界值会符合以下方程式(6)。
其中,X为偏移临界值,P_SIZE为奇偶检查矩阵的预设维度值,并且COL_WT为奇偶检查矩阵的行权重值。
图14是根据本发明的一范例实施例所示出的群组移动的示意图。
请参照图14,假设奇偶检查矩阵1200包括子矩阵群组1210、1220及1230。每一个子矩阵群组1210、1220及1230包括5个子矩阵。图12中的一个方框代表一个子矩阵。每一个子矩阵的预设维度为256-乘-256。在图14中,每一个子矩阵(即,方框)中的数值是指数据集合中的一个群组对应于某一个层而需要被移动的偏移量。例如,子矩阵群组1210中的第一至第五个子矩阵中标示的数值41、234、227、210及17表示对应于奇偶检查矩阵1200的第一层,数据集合中的多个群组分别需要被移动的偏移量为41、234、227、210及17;子矩阵群组1220中的第一至第五个子矩阵中标示的数值73、222、12、207及182表示对应于奇偶检查矩阵1200的第二层,数据集合中的多个群组分别需要被移动的偏移量为73、222、12、207及182;子矩阵群组1230中的第一至第五个子矩阵中标示的数值210、23、154、133及13表示对应于奇偶检查矩阵1200的第三层,数据集合中的多个群组分别需要被移动的偏移量为210、23、154、133及13。
在图14的一范例实施例中,存储器管理电路502可以选择“85.3”至“255”间的任一正整数来作为欲使用的偏移临界值,并且采用行权重值为“3”的奇偶检查矩阵1200。例如,行权重值“3”是将偏移临界值代入上述方程式(6)来决定。存储器管理电路502(或,错误检查与校正电路508)会限制每一个子矩阵(即,方框)中的数值皆不超过所决定的偏移临界值。
此外,从图14中可以看出,在执行数据集合对应于奇偶检查矩阵1200的第一层的群组移动后,将数据集合中的多个偏移群组进一步分别移动32、244、41、253及165即可达到数据集合中对应于奇偶检查矩阵1200的第二层的偏移量。类似地,在执行数据集合对应于奇偶检查矩阵1200的第二层的群组移动后,将数据集合中的多个偏移群组进一步分别移动137、57、142、182及87即可达到数据集合对应于奇偶检查矩阵1200的第三层的偏移量;在执行数据集合对应于奇偶检查矩阵1200的第三层的比特移动后,将数据集合中的多个偏移群组进一步分别移动87、211、73、77及4即可回复为数据集合对应于奇偶检查矩阵1200的第一层的偏移量。
在一范例实施例中,至少一个选择器会被配置在错误检查与校正电路508中,以执行数据集合的群组移动。例如,根据图12的一个范例实施例,对应于奇偶检查矩阵1200的第一层,错误检查与校正电路508中的多个选择器合作移动一数据集合中的多个预设群组成为分别符合偏移量41、234、227、210及17的多个第一偏移群组;对应于奇偶检查矩阵1200的第二层,此些选择器合作移动此些第一偏移群组成为分别符合偏移量73、222、12、207及182的多个第二偏疑群组;然后,对应于奇偶检查矩阵1200的第三层,此些选择器合作移动此些第二偏移群组成为分别符合偏移量210、23、154、133及13的另外的多个偏疑群组。
在一范例实施例中,决定偏移临界值并且限制每一次执行群组移动的偏移量都不超过此偏移临界值是用以减少需要配置的选择器的数目。例如,若采用一般的阶层式移位器(stage shifter)架构,则对应于预设维度为256-乘-256的奇偶检查矩阵1200,至少需要设置8个选择器;然而,根据图12的一范例实施例中,通过限制每一次执行群组移动的偏移量都不超过所设定的偏移临界值,则采用一般的阶层式移位器架构可能仅需要在错误检查与校正电路508中配置7个或更少的选择器。此外,在某些移位器架构中,选择器也可以用移位暂存器来取代。
图15A与图15B是根据本发明的一范例实施例所示出的阶层式移位器架构的示意图。为了简化,在此以移动包含8个比特的数据集合作为范例。然而,在另一范例实施例中,欲执行群组移动的数据集合可以包含更多或更少的比特。
请参照图13A,若没有限制每一次执行群组移动的偏移量,则为了支援最大偏移量为8(例如,将码字01234567移动为码字70123456),至少需要在错误检查与校正电路508中配置3个选择器1301、1302及1303。然而,请参照图13B,若根据本发明的一范例实施例来限制最大偏移量为3(例如,将码字01234567移动为码字34567012),则只需要在错误检查与校正电路508中配置2个选择器1301与1302。此外,暂存器1311、1312及1313用以储存各阶段中待处理的比特。
图16A与图16B是根据本发明的一范例实施例所示出的筒式移位器(BarrelShifter)架构的示意图。
请参照图16A,若没有限制每一次执行群组移动的偏移量,则对应于5个输入X0~X4,至少需要在错误检查与校正电路508中配置3个移位暂存器1401、1402及1403。然而,请参照图16B,若根据本发明的一范例实施例来利用偏移临界值限制每一次执行群组移动的偏移量,则可能只需要在错误检查与校正电路508中配置2个移位暂存器1401与1402。此外,Y0~Y4为执行群组移动后的输出位。
图17是根据本发明的另一范例实施例所示出的简化(reduced)移位器架构的示意图。
请参照图17,在根据偏移临界值来限制每一次执行群组移动的偏移量的条件下,暂存器1701中的比特X5不会被读取,藉此完成群组移动的选择器1703的数量也可以减少。此外,暂存器1702用以储存输出的比特。
图18是根据本发明的一范例实施例所示出的解码方法的流程图。
请参照图18,在步骤S1801中,决定偏移临界值以及对应于所述偏移临界值的检查矩阵,其中所述检查矩阵包括至少一子矩阵群组,其中所述子矩阵群组中的每一个子矩阵具有预设维度,其中所述偏移临界值小于对应于所述预设维度的预设维度值,其中所述子矩阵群组包括第一子矩阵群组。在步骤S1802中,发送读取指令序列,其中所述读取指令序列指示读取所述可复写式非易失性存储器模块的实体单元。在步骤S1803中,接收对应于所述读取指令序列的回应数据。在步骤S1804中,对所述回应数据执行迭代解码程序。步骤S1804的迭代解码程序至少包括步骤S18041~S18043。在步骤S18041中,产生对应于所述回应数据的数据集合,其中所述数据集合包括多个预设群组。在步骤S18042中,根据属于所述第一子矩阵群组的多个子矩阵来移动所述预设群组以获得多个第一偏移群组,其中所述第一偏移群组中的每一个偏移群组相对于所述预设群组中的一对应群组的偏移量皆不超过所述偏移临界值。在步骤S18043中,根据所述第一偏移群组产生解码参考数据。
然而,图18中各步骤已详细说明如上,在此便不再赘述。值得注意的是,图18中各步骤可以操作为多个程序码或是电路,本发明不加以限制。此外,图18的方法可以搭配以上范例实施例使用,也可以单独使用,本发明不加以限制。
图19是根据本发明的一范例实施例所示出的错误检查与校正电路的概要方块图。
请参照图19,在本范例实施例中,错误检查与校正电路508至少包括暂存电路1901_1~1901_3、移位电路1902、暂存电路1903_1~1903_3及操作电路1904_1~1904_3。暂存电路1901_1~1901_3用以暂存数据集合中待执行群组移动的群组。移位电路1902电性连接至暂存电路1901_1~1901_3并且用以执行群组移动。暂存电路1903_1~1903_3电性连接至移位电路1902并且用以暂存移动后的群组。操作电路1904_1~1904_3电性连接至暂存电路1903_1~1903_3并且用以执行预设的逻辑操作以产生解码参考数据。以下搭配图9的范例实施例来对图19中的各电路区块进行说明。
在对应于奇偶检查矩阵的第一层的群组移动中,数据集合的多个预设群组中的一个特定群组(以下也称为目标群组)中的比特数据(例如,比特“A1”、“A2”、“A3”)会先分别被暂存在暂存电路1901_1~1901_3中并且输出给移位电路1902。移位电路1902会对接收到的比特数据(例如,比特“A1”、“A2”、“A3”)执行对应的群组移动并且将经由群组移动而获得的偏移群组(以下也称为偏移目标群组)(例如,比特“A2”、“A3”、“A1”)分别输出给暂存电路1903_1~1903_3。暂存电路1903_1~1903_3所暂存的偏移目标群组中的比特数据(例如,比特“A2”、“A3”、“A1”)会被分别输出给操作电路1904_1~1904_3。依此类推,在对应于第一层的群组移动中,数据集合中的比特数据会以一个目标群组为单位依序地输出给移位电路1902进行群组移动并且以一个偏移目标群组为单位依序地输出给操作电路1904_1~1904_3进行预设的逻辑操作。例如,操作电路1904_1会对接收到的比特A2、B3及C1执行模2加法以获得校验子集合中的校验子S1;操作电路1904_2会对接收到的比特A3、B1及C3执行模2加法以获得校验子集合中的校验子S2;并且操作电路1904_1会对接收到的比特A1、B2及C3执行模2加法以获得校验子集合中的校验子S3。后续对应于奇偶检查矩阵顶顶顶顶第二层的群组移动以及对移动后的群组执行模2加法也可通过图19所示的电路架构来完成,在此便不赘述。
在不同的范例实施例中,对于应用于迭代解码程序中的不同阶段个/或对应于不同的解码演算法所使用的数据集合,图19所示的电路架构也可以实现相对应的群组移动以及执行相对应的逻辑操作以产生解码参考数据。
在图19的另一范例实施例中,暂存电路1901_1~1901_3也可以合并为一个暂存电路,暂存电路1903_1~1903_3也可以合并为一个暂存电路,并且操作电路1904_1~1904_3也可以合并为一个操作电路。此外,图19所示出的错误检查与校正电路508仅为一个范例,在图19的另一范例实施例中,错误检查与校正电路508还可以包括用以执行其他操作的电路元件。
综上所述,在本发明的一范例实施例中,偏移临界值与相对应的奇偶检查矩阵会被决定。尔后,在迭代解码程序中,一个数据集合中的群组会对应于奇偶检查矩阵而被执行群组移动并且对应的偏移量会被限制于不超过所设定的偏移临界值。藉此,在本发明的一范例实施例中,可减少错误检查与校正电路中所需配置的选择器/移位暂存器的数量。此外,在本发明的一范例实施例中,根据偏移群组来产生解码参考数据也可提升迭代解码程序中某些阶段的执行效率。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (22)
1.一种解码方法,用于可复写式非易失性存储器模块,其特征在于,所述解码方法包括:
决定偏移临界值以及对应于所述偏移临界值的检查矩阵,其中所述检查矩阵包括至少一子矩阵群组,其中所述至少一子矩阵群组中的每一个子矩阵具有预设维度,其中所述偏移临界值小于对应于所述预设维度的预设维度值,其中所述至少一子矩阵群组包括第一子矩阵群组;
发送读取指令序列,其中所述读取指令序列指示读取所述可复写式非易失性存储器模块的实体单元;
接收对应于所述读取指令序列的回应数据;以及
对所述回应数据执行迭代解码程序,
其中所述迭代解码程序包括:
产生对应于所述回应数据的数据集合,其中所述数据集合包括多个预设群组;
根据属于所述第一子矩阵群组的多个子矩阵来移动该些预设群组以获得多个第一偏移群组,其中该些第一偏移群组中的每一个偏移群组相对于该些预设群组中的对应群组的偏移量皆不超过所述偏移临界值;以及
根据该些第一偏移群组产生解码参考数据。
2.根据权利要求1所述的解码方法,其特征在于,所述至少一子矩阵群组还包括第二子矩阵群组,
其中所述迭代解码程序还包括:
根据属于所述第二子矩阵群组的多个子矩阵来移动该些第一偏移群组以获得多个第二偏移群组,其中该些第二偏移群组中的每一个偏移群组相对于该些第一偏移群组中的对应群组的偏移量皆不超过所述偏移临界值;以及
根据该些第二偏移群组产生所述解码参考数据。
3.根据权利要求1所述的解码方法,其特征在于,所述解码参考数据为对应于低密度奇偶检查码的奇偶检查程序的校验子集合。
4.根据权利要求1所述的解码方法,其特征在于,所述解码参考数据为对应于比特翻转演算法的校验权重集合。
5.根据权利要求1所述的解码方法,其特征在于,所述解码参考数据为对应于低密度奇偶检查码的最小值-总和演算法的最小值集合。
6.根据权利要求1所述的解码方法,其特征在于,所述偏移临界值负相关于所述检查矩阵的行权重值,
其中所述行权重值对应于所述检查矩阵中的一个行所包含的元素1的数目。
7.根据权利要求6所述的解码方法,其特征在于,所述偏移临界值等于或大于将所述预设维度值除以所述行权重值而获得的最小临界值。
8.一种存储器储存装置,其特征在于,包括:
连接接口单元,用以电性连接至主机系统;
可复写式非易失性存储器模块;以及
存储器控制电路单元,电性连接至所述连接接口单元与所述可复写式非易失性存储器模块,
其中所述存储器控制电路单元用以决定偏移临界值以及对应于所述偏移临界值的检查矩阵,其中所述检查矩阵包括至少一子矩阵群组,其中所述至少一子矩阵群组中的每一个子矩阵具有预设维度,其中所述偏移临界值小于对应于所述预设维度的预设维度值,其中所述至少一子矩阵群组包括第一子矩阵群组,
其中所述存储器控制电路单元还用以发送读取指令序列,其中所述读取指令序列指示读取所述可复写式非易失性存储器模块的实体单元,
其中所述存储器控制电路单元还用以接收对应于所述读取指令序列的回应数据,
其中所述存储器控制电路单元还用以对所述回应数据执行迭代解码程序,其中所述迭代解码程序包括:
产生对应于所述回应数据的数据集合,其中所述数据集合包括多个预设群组;
根据属于所述第一子矩阵群组的多个子矩阵来移动该些预设群组以获得多个第一偏移群组,其中该些第一偏移群组中的每一个偏移群组相对于该些预设群组中的对应群组的偏移量皆不超过所述偏移临界值;以及
根据该些第一偏移群组产生解码参考数据。
9.根据权利要求8所述的存储器储存装置,其特征在于,所述至少一子矩阵群组还包括第二子矩阵群组,
其中所述迭代解码程序还包括:
根据属于所述第二子矩阵群组的多个子矩阵来移动该些第一偏移群组以获得多个第二偏移群组,其中该些第二偏移群组中的每一个偏移群组相对于该些第一偏移群组中的对应群组的偏移量皆不超过所述偏移临界值;以及
根据该些第二偏移群组产生所述解码参考数据。
10.根据权利要求8所述的存储器储存装置,其特征在于,所述解码参考数据为对应于低密度奇偶检查码的奇偶检查程序的校验子集合。
11.根据权利要求8所述的存储器储存装置,其特征在于,其中所述解码参考数据为对应于比特翻转演算法的校验权重集合。
12.根据权利要求8所述的存储器储存装置,其特征在于,所述解码参考数据为对应于低密度奇偶检查码的最小值-总和演算法的最小值集合。
13.根据权利要求8所述的存储器储存装置,其特征在于,所述偏移临界值负相关于所述检查矩阵的行权重值,
其中所述行权重值对应于所述检查矩阵中的一个行所包含的元素1的数目。
14.根据权利要求13所述的存储器储存装置,其特征在于,所述偏移临界值等于或大于将所述预设维度值除以所述行权重值而获得的最小临界值。
15.一种存储器控制电路单元,用于控制可复写式非易失性存储器模块,其特征在于,所述存储器控制电路单元包括:
主机接口,用以电性连接至主机系统;
存储器接口,用以电性连接至所述可复写式非易失性存储器模块;
错误检查与校正电路;以及
存储器管理电路,电性连接至所述主机接口、所述存储器接口及所述错误检查与校正电路,
其中所述存储器管理电路用以决定偏移临界值以及对应于所述偏移临界值的检查矩阵,其中所述检查矩阵包括至少一子矩阵群组,其中所述至少一子矩阵群组中的每一个子矩阵具有预设维度,其中所述偏移临界值小于对应于所述预设维度的预设维度值,其中所述至少一子矩阵群组包括第一子矩阵群组,
其中所述存储器管理电路还用以发送读取指令序列,其中所述读取指令序列指示读取所述可复写式非易失性存储器模块的实体单元,
其中所述存储器管理电路还用以接收对应于所述读取指令序列的回应数据,
其中所述错误检查与校正电路用以对所述回应数据执行迭代解码程序,其中所述迭代解码程序包括:
产生对应于所述回应数据的数据集合,其中所述数据集合包括多个预设群组;
根据属于所述第一子矩阵群组的多个子矩阵来移动该些预设群组以获得多个第一偏移群组,其中该些第一偏移群组中的每一个偏移群组相对于该些预设群组中的对应群组的偏移量皆不超过所述偏移临界值;以及
根据该些第一偏移群组产生解码参考数据。
16.根据权利要求15所述的存储器控制电路单元,其特征在于,所述至少一子矩阵群组还包括第二子矩阵群组,
其中所述迭代解码程序还包括:
根据属于所述第二子矩阵群组的多个子矩阵来移动该些第一偏移群组以获得多个第二偏移群组,其中该些第二偏移群组中的每一个偏移群组相对于该些第一偏移群组中的对应群组的偏移量皆不超过所述偏移临界值;以及
根据该些第二偏移群组产生所述解码参考数据。
17.根据权利要求15所述的存储器控制电路单元,其特征在于,所述解码参考数据为对应于低密度奇偶检查码的奇偶检查程序的校验子集合。
18.根据权利要求15所述的存储器控制电路单元,其特征在于,所述解码参考数据为对应于比特翻转演算法的校验权重集合。
19.根据权利要求15所述的存储器控制电路单元,其特征在于,所述解码参考数据为对应于低密度奇偶检查码的最小值-总和演算法的最小值集合。
20.根据权利要求15所述的存储器控制电路单元,其特征在于,所述偏移临界值负相关于所述检查矩阵的行权重值,
其中所述行权重值对应于所述检查矩阵中的一个行所包含的元素1的数目。
21.根据权利要求20所述的存储器储存装置,其特征在于,所述偏移临界值等于或大于将所述预设维度值除以所述行权重值而获得的最小临界值。
22.根据权利要求15所述的存储器控制电路单元,其特征在于,所述错误检查与校正电路包括:
至少一第一暂存电路,用以暂存该些预设群组中的目标群组;
移位电路,电性连接至所述至少一第一暂存电路,其中所述移位电路用以移动所述目标群组并且输出该些第一偏移群组中对应于所述目标群组的偏移目标群组;
至少一第二暂存电路,电性连接至所述移位电路并且用以暂存所述偏移目标群组;以及
至少一操作电路,电性连接至所述至少一第二暂存电路,其中所述至少一操作电路用以对所述偏移目标群组执行逻辑操作并且产生所述解码参考数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510776089.5A CN106708649B (zh) | 2015-11-13 | 2015-11-13 | 解码方法、存储器储存装置及存储器控制电路单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510776089.5A CN106708649B (zh) | 2015-11-13 | 2015-11-13 | 解码方法、存储器储存装置及存储器控制电路单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708649A CN106708649A (zh) | 2017-05-24 |
CN106708649B true CN106708649B (zh) | 2019-08-06 |
Family
ID=58931295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510776089.5A Active CN106708649B (zh) | 2015-11-13 | 2015-11-13 | 解码方法、存储器储存装置及存储器控制电路单元 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708649B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111489776B (zh) * | 2019-01-28 | 2022-04-22 | 深圳大心电子科技有限公司 | 数据读取方法、存储控制器与存储装置 |
CN113591424B (zh) * | 2020-04-30 | 2024-05-28 | 创意电子股份有限公司 | 电路信号偏移的调整装置以及调整方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101931418A (zh) * | 2009-06-19 | 2010-12-29 | 三菱电机株式会社 | 解码方法以及解码装置 |
CN104851458A (zh) * | 2014-02-18 | 2015-08-19 | 群联电子股份有限公司 | 解码方法、存储器存储装置与存储器控制电路单元 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8608074B2 (en) * | 2011-12-20 | 2013-12-17 | Seiko Epson Corporation | Method and apparatus for locating and decoding machine-readable symbols |
-
2015
- 2015-11-13 CN CN201510776089.5A patent/CN106708649B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101931418A (zh) * | 2009-06-19 | 2010-12-29 | 三菱电机株式会社 | 解码方法以及解码装置 |
CN104851458A (zh) * | 2014-02-18 | 2015-08-19 | 群联电子股份有限公司 | 解码方法、存储器存储装置与存储器控制电路单元 |
Non-Patent Citations (1)
Title |
---|
多宽度SIMD结构DSP向量存储器的设计与实现;黄远广;《中国优秀硕士学位论文全文数据库》;20140415;全文 |
Also Published As
Publication number | Publication date |
---|---|
CN106708649A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106169312B (zh) | 用于快闪存储的广义乘积码 | |
US9673840B2 (en) | Turbo product codes for NAND flash | |
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 | |
KR102257050B1 (ko) | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US20150293811A1 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
CN110415753B (zh) | 错误校正电路及操作该错误校正电路的方法 | |
US10445002B2 (en) | Data accessing method, memory controlling circuit unit and memory storage device | |
TWI573147B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US10522234B2 (en) | Bit tagging method, memory control circuit unit and memory storage device | |
KR20160090054A (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
CN110673979A (zh) | 存储器控制器及其操作方法 | |
CN112039532A (zh) | 错误校正解码器及具有错误校正解码器的存储器系统 | |
CN105304142B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN107608818A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
KR20180018069A (ko) | 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 | |
CN106681856A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN105304143B (zh) | 解码方法、存储器控制电路单元及存储器存储装置 | |
CN106708649B (zh) | 解码方法、存储器储存装置及存储器控制电路单元 | |
US11190217B2 (en) | Data writing method, memory controlling circuit unit and memory storage device | |
CN106158046B (zh) | 用于turbo乘积码的误校正避免 | |
CN109901784A (zh) | 数据存取方法、存储器控制电路单元以及存储器储存装置 | |
CN110277999B (zh) | Ldpc解码装置、包括其的存储器系统及其方法 | |
CN110971240A (zh) | 解码器设计方法与存储控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20190404 Address after: Room 609, 6th Floor, Taibang Science and Technology Building, Nanshan District, Shenzhen City, Guangdong Province Applicant after: Shenzhen Da Xin Electronic Technology Co., Ltd. Address before: No. 1 Qunyi Road, Zhunan Town, Miaoli County, Taiwan, China (Guangyuan Science and Technology Park) Applicant before: Big heart electronic Limited by Share Ltd |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |