CN103325425B - 存储器控制器 - Google Patents

存储器控制器 Download PDF

Info

Publication number
CN103325425B
CN103325425B CN201310222605.0A CN201310222605A CN103325425B CN 103325425 B CN103325425 B CN 103325425B CN 201310222605 A CN201310222605 A CN 201310222605A CN 103325425 B CN103325425 B CN 103325425B
Authority
CN
China
Prior art keywords
matrix
reference vector
parity
decision
gencrator
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
Application number
CN201310222605.0A
Other languages
English (en)
Other versions
CN103325425A (zh
Inventor
钟明翰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Labs Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN103325425A publication Critical patent/CN103325425A/zh
Application granted granted Critical
Publication of CN103325425B publication Critical patent/CN103325425B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Abstract

一种存储器控制器,此存储器控制器包括存储器接口与编码器模块。存储器接口用以连接存储器芯片。编码器模块耦接至存储器接口,此编码器模块包括共享存储器以及奇偶产生器模块。奇偶产生器模块耦接共享存储器,用以自共享存储器中读取至少一基准向量,决定至少一基准向量的维度,根据至少一基准向量产生生成矩阵,通过生成矩阵将原始数据转换为码字,并通过存储器接口将码字储存在存储器芯片。

Description

存储器控制器
技术领域
本发明涉及一种电子电路,特别是涉及一种存储器控制器。
背景技术
随着数据存取技术的发展,错误更正码对于数据存取时的完整性与合法性具有极高的重要性。一般来说,使用低密度奇偶校验码(LowDensityParityCheckCode,LDPC)技术来对欲传输的数据进行编/解码并提供错误更正码的方式已普遍应用于通讯领域。
然而,对于将LDPC的编/解码技术应用于存储器的数据存取方面,却始终没有可同时兼顾数据存取效率与节省硬体体积的技术方案。
发明内容
有鉴于此,本发明提供一种存储器控制器,可减少所需的存储器的电路面积,并提升编码与解码效率。
本发明提出一种存储器控制器,此存储器控制器包括存储器接口及编码器模块。存储器接口用以连接存储器芯片。编码器模块耦接至存储器接口,此编码器模块包括共享存储器以及奇偶产生器模块。奇偶产生器模块耦接共享存储器,用以自共享存储器中读取至少一基准向量,决定至少一基准向量的维度。该奇偶产生器模块根据决定维度后的基准向量产生生成矩阵(generationmatrix),并通过生成矩阵将原始数据转换为码字,并通过该存储器接口储存码字至存储器芯片。
本发明还提出一种存储器控制器,此存储器控制器包括存储器接口及解码器模块。存储器接口用以连接存储器芯片。解码器模块耦接至存储器接口,此解码器模块包括内部存储器、位节点处理器以及校验模块。内部存储器用以储存来自存储器接口的码字对应的一决策比矩阵。位节点处理器耦接内部存储器,用以自内部存储器读取决策比矩阵。校验模块耦接内部存储器与位节点处理器,用以通过一校验矩阵对来自位节点处理器的决策比矩阵进行一迭代运算,以更新储存于内部存储器的决策比矩阵,并根据迭代运算的运算结果产生一修正矩阵,其中位节点处理器还根据修正矩阵修正自内部存储器读取的更新后的决策比矩阵,且校验模块根据修正后的决策比矩阵决定是否重复进行迭代运算,若校验模块决定不重复进行迭代运算,则校验模块根据修正后的决策比矩阵产生一已解码数据。
基于上述,本发明实施例的存储器控制器中的编码器模块可适应性地调整生成矩阵的维度,并且通过使用单一的存储器来达到节省存储器的功效。另外,本发明实施例的存储器控制器中的解码器模块则可在每一次的迭代运算之后判断是否需要再次进行另一次的迭代运算,藉此,即使尚未达到预设的迭代次数,只要迭代运算的结果符合使用上的需求,即可终止迭代运算,从而提升解码效率。
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并结合附图详细说明如下。
附图说明
图1为根据本发明一实施例所绘示的存储器控制器的示意图。
图2为根据本发明一实施例所绘示的编码器模块的示意图。
图3为根据本发明一实施例所绘示的奇偶产生器的示意图。
图4为根据本发明一实施例所绘示的解码器模块的示意图。
附图符号说明
10:存储器控制器
11:存储器芯片
12:主机系统
102:存储器接口
104:主机接口
106:编码器模块
108:解码器模块
22:共享存储器
24:奇偶产生器模块
242_1-242-n:奇偶产生器
244:整合输出电路
2442:整合电路
2444:多工器
32:控制电路
322:移位控制电路
3222:基准向量寄存电路
3224:移位多工器
324:矩阵寄存电路
34:运算电路
342_1-342_p:子运算电路
36:寄存电路
41:多工器
42:内部存储器
44:位节点处理器
46:校验模块
462:排列替换处理器
464:校验节点处理器
466:决策电路
468:早期终止电路
具体实施方式
图1为根据本发明一实施例所绘示的存储器控制器的示意图。请参照图1,存储器控制器10包括存储器接口102、主机接口104、编码器模块106以及解码器模块108。存储器接口102连接存储器芯片11,主机接口104连接主机系统12。存储器芯片11可以是任何类型的非易失性存储器(non-volatilememory,NVM),例如快闪存储器或是其他存储器或储存媒体。在其他实施例中,存储器芯片11可以是任何类型的易失性存储器。编码器模块106的输出端耦接至存储器接口102,而编码器模块106的输入端耦接至主机接口104,用以执行编码功能。解码器模块108的输入端耦接至存储器接口102,而解码器模块108的输出端耦接至主机接口104,用以执行解码功能。
举例来说,当主机系统12欲将一原始数据(rawdata)写入至存储器芯片11时,主机系统12会先将此原始数据传送至主机接口104,以通过主机接口104将此原始数据传送至编码器模块106。然后,编码器模块106可对来自主机接口104的原始数据进行编码,并产生一码字(codeword)。其中,此码字包括此原始数据与相关纠错信息。接着,存储器控制器10可通过存储器接口102将此码字写入至存储器芯片11。此外,当主机系统12欲自存储器芯片11中读取一指定数据时,主机系统12可通过主机接口104发送一读取指令至存储器控制器10。接着,存储器控制器10可根据此读取指令通过存储器接口102自存储器芯片11中取出相对应的码字,并由解码器模块108对所取出的码字进行解码,从而将解码后的所述指定数据通过主机接口104传送至主机系统12。
在本实施例中,编码器模块106与解码器模块108可同时或择一设置于存储器控制器10中。例如,当存储器控制器10只需要编码功能时,存储器控制器10可以配置编码器模块106而移除解码器模块108。在另一实施例中,当存储器控制器10只需要解码功能时,存储器控制器10可以配置解码器模块108而移除编码器模块106。而当存储器控制器10需要兼具编码与解码功能时,则存储器控制器10可以同时包含编码器模块106与解码器模块108。
在本实施例中,编码器模块106与解码器模块108所提供的编/解码功能可包括低密度奇偶校验码(LowDensityParityCheckCode,LDPC)等各种编码格式的编/解码功能。举例来说,编码器模块106可对欲储存的原始数据执行如下计算式(1)的运算来产生编码后的码字。
v=cG计算式(1)
其中,c代表来自该主机接口的原始数据,G代表生成矩阵(generationmatrix),v代表编码后的码字。特别是,生成矩阵G的行(row)数会等于原始数据c的列(column)数(即,原始数据c的位数),以符合计算式(1)的运算规则。举例来说,假设编码器模块106一次可处理(即,编码)的原始数据c的位数为K位,则原始数据c可以用1×K矩阵(matrix)表示。生成矩阵G可以用K×L矩阵表示,且K与L均为正整数。此外,由于生成矩阵G的列数为L,表示编码器模块106产生的码字v具有L个位,因此输出的码字v可以用1×L矩阵表示。举例来说,若原始数据c具有3个位(即,1×3矩阵),且生成矩阵G为3×6矩阵,则编码器模块106可以通过执行计算式(1)的运算来获得6位的码字v(即,1×6矩阵)。也就是说,可由计算式(1)的生成矩阵G运算产生包括原始数据c与校验码(ErrorCorrectionCode,ECC)的码字v。其中校验码可用于对原始数据c的合法性或完整性进行验证。此外,原始数据c、生成矩阵G以及码字v中的所有元素(element)或位皆是以二进制(即,0或1)来表示。在一实施例中,上述计算式(1)中的元素相乘可利用与门(ANDgate)来实施,而元素相加则可利用异或门(exclusiveORgete,或XORgate)来实施。
在本实施例中,生成矩阵G为系统循环矩阵(Systematic-Circulantmatrix)。亦即,生成矩阵G可以用如下计算式(2)的通用形式表示。
G=[I|P]计算式(2)
其中,I为单位矩阵(Identitymatrix),且P为奇偶矩阵(paritymatrix)。
举例来说,假设原始数据c=[110],生成矩阵 G = 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 , 则编码器模块106可产生码字v=[110101],其中码字v中前3个位(即,[110])与原始数据c相同,码字v中后3个位(即,[101])为对应于原始数据c的校验码,而可作为对原始数据的验证之用。此外,如计算式(2)所示,生成矩阵G由单位矩阵I以及奇偶矩阵P形成。本实施例中的单位矩阵I为 1 0 0 0 1 0 0 0 1 , 奇偶矩阵P为 1 1 0 0 1 1 1 0 1 . 其中,奇偶矩阵P是由三个1×3的列矩阵形成,此三个1×3的列矩阵分别为[110]、[011]以及[101]。如前所述,生成矩阵G为系统循环矩阵,因此第一个1×3的列矩阵向右循环移位一个矩阵元素后,即为第二个1×3的列矩阵。类似的,第二个1×3的列矩阵向右右循环移位一个矩阵元素后,即为第三个1×3的列矩阵。第三个1×3的列矩阵向右循环移位一个矩阵元素后,即为第一个1×3的列矩阵。根据此特性,在储存奇偶矩阵P时,仅需储存其中一个列矩阵(此列矩阵称之为基准向量)以节省存储空间。若需要奇偶矩阵P其余的列矩阵时,可将储存的基准向量进行适当的向右循环移位一个矩阵元素后而可得之。
图2为根据本发明一实施例说明图1所绘示的编码器模块106的示意图。请参照图2,编码器模块106包括共享存储器22以及奇偶产生器模块24。共享存储器22例如是快闪存储器、随机存取存储器等各种存储器或储存媒体。共享存储器22可储存有用以产生上述生成矩阵G(或奇偶矩阵P)的一个或多个基准向量。举例来说,假设储存于共享存储器22中的多个基准向量的维度皆为1×3,表示这些基准向量分别由3个矩阵元素或位(0或1)组成,并可以用1×3矩阵来表示。此外,当储存于共享存储器22中的基准向量的数量多于一个时,所有基准向量的维度可以相同也可以不相同,本发明不对其限制。
奇偶产生器模块24耦接共享存储器22,并且用以自共享存储器22中读取出一个或多个基准向量。奇偶产生器模块24可先决定此一个或多个基准向量的维度,并根据决定维度后的基准向量产生一生成矩阵G。奇偶产生器模块24可包括n个奇偶产生器242_1-242_n与整合输出电路244。奇偶产生器242_1-242_n分别耦接至共享存储器22。在一实施例中,奇偶产生器模块24不调整基准向量的维度,而直接根据读取自共享存储器22中的基准向量产生生成矩阵G(或奇偶矩阵P)。在另一实施例中,奇偶产生器模块24可调整读取自共享存储器22中的基准向量的维度,并根据调整维度后的基准向量产生生成矩阵G(或奇偶矩阵P)。上述对基准向量的维度的调整较佳为降低基准向量的维度。整合输出电路244可根据原始数据c与来自奇偶产生器242_1-242-n的一个或多个已编码数据生成对应的码字v。特别要说明的是,奇偶产生器242_1-242_n的数量可以视实际产品的设计需求/规格而定。对前述“已编码数据”,图3将会详细阐述。此外,各奇偶产生器242_1-242_n需要的基准向量均储存于共享存储器22中,而非将上述的基准向量分别储存在不同的存储器中。当奇偶产生器242_1-242_n的数量多于一个(即,n>1,且n为正整数)时,奇偶产生器242_1-242_n会依序并轮流自共享存储器22中读取所需的基准向量,从而通过使用单一存储器来节省存储器在芯片中的电路面积。
一般而言,在编码过程中,储存于编码装置的维度(或,位数)皆是固定的,导致对应的生成矩阵G的维度也是固定的,在实务操作上缺乏弹性。然而,在本实施例中,在奇偶产生器模块24从共享存储器22中读取出所需的一个或多个基准向量之后,奇偶产生器模块24还可以适应性地调整此一个或多个基准向量的维度,从而产生符合不同需求的生成矩阵G。例如,假设储存于共享存储器22中的所有基准向量的维度是1×4,在奇偶产生器模块24取出所需的基准向量之后,奇偶产生器模块24可将此基准向量的维度进行调整,例如,降低为1×3,并根据降低后的基准向量产生对应的生成矩阵G。在一实施例中,当需要快速的储存数据时,可使奇偶产生器模块24降低基准向量的维度。藉此以较低维度的生成矩阵G(相较于调整维度前的生成矩阵G),而可加速数据编码过程。在另一实施例中,当需要精确的储存数据时,可使奇偶产生器模块24不调整基准向量的维度,以较高维度的生成矩阵G(相较于降低维度后的生成矩阵G),而可提高储存数据的精确度。
在奇偶产生器模块24产生生成矩阵G之后,奇偶产生器模块24可通过此生成矩阵G将来自主机接口104的原始数据c转换为码字v,并输出码字v至存储器接口102,从而将码字v写入至存储器芯片11。在一实施例中,生成矩阵G中的奇偶矩阵P可被划分为一个或多个以矩阵形式呈现的列,且此一个或多个以矩阵形式呈现的列可分别包括一个或多个如前述 1 1 0 0 1 1 1 0 1 的子矩阵。为了说明方便,以下统一将每一个“以矩阵形式呈现的列”称为子矩阵列(submatrixcolumn)。例如,根据上述计算式(2),生成矩阵G还可以用以下计算式(3)形式表示。
G=[I|第一子矩阵列第二子矩阵列…第n子矩阵列]计算式(3)
其中,每一个子矩阵列的行(row)数皆与奇偶矩阵P的行数相等,每一个子矩阵列的列(column)数皆与子矩阵(形如前述 1 1 0 0 1 1 1 0 1 )的列数相等,第一子矩阵列至第n子矩阵列中所有的列的总和会与奇偶矩阵P的列数相等,并且n的数量可以视奇偶产生器242_1-242_n的数量而定。例如,n的数量与奇偶产生器242_1-242-n的数量相等。奇偶产生器242_1-242_n中的每一个根据所读取和调整后的一个或多个基准向量产生对应奇偶矩阵P中的一个子矩阵列(submatrixcolumn),再根据原始数据c与该子矩阵列相乘,生成一个“已编码数据”。藉此,奇偶产生器模块24中的每一个奇偶产生器可分别负责对于奇偶矩阵P中的一个子矩阵列的运算,从而达到分担运算量与加快运算速度的功效。
以两个奇偶产生器为例,假设奇偶产生器模块24包括奇偶产生器242_1与奇偶产生器242_2,原始数据c具有12个位(即,原始数据c的维度为1×12),且生成矩阵G的维度为12×18,其中,单位矩阵I的维度为12×12,而奇偶矩阵P的维度为12×6。此时,可将奇偶矩阵P划分为两个子矩阵列,例如,奇偶矩阵P=[第一子矩阵列第二子矩阵列],并将奇偶矩阵P中的第一子矩阵列与第二子矩阵列分别划分为4个维度为3×3的子矩阵,例如,奇偶矩阵接着,在奇偶产生器模块22进行计算式(1)的运算时,奇偶产生器242_1可对原始数据c与奇偶矩阵P中的第一子矩阵列进行二进制的乘法与加法运算,以产生第一已编码数据,并且奇偶产生器242_2可分别对原始数据c与奇偶矩阵P中的第二子矩阵列进行二进制的乘法与加法运算,以产生第二已编码数据。
在本实施例中,由于奇偶产生器242_1-242_n的电路结构本质上是相同的,因此以下将以奇偶产生器242_1作为范例进行说明,而当奇偶产生器242_1-242_n的数量大于1时,其余的奇偶产生器242_2-242_n可依此类推。举例来说,图3为根据本发明一实施例说明图2所绘示的奇偶产生器242_1的示意图。请参照图3,奇偶产生器242_1包括控制电路32、运算电路34以及寄存电路36。控制电路32耦接共享存储器22,用以自共享存储器22读取一个或多个基准向量(以下统一将奇偶产生器242_1读取的基准向量称为第一基准向量),并决定此一个或多个第一基准向量的维度。接着,控制电路32可根据决定维度后的一个或多个第一基准向量而产生生成矩阵G中奇偶矩阵P的一个子矩阵列(例如,上述奇偶矩阵P中的第一子矩阵列)或子矩阵列中的一个子矩阵。特别是,在本实施例中,控制电路32产生的子矩阵列的行数会与原始数据c中的位c[1]、c[2]、…、c[k]的数量相等,而由控制电路32产生的子矩阵列亦具有k个行(row)。
图3所示位c[1]~c[k]表示原始数据c的部份或是全部位。例如,若原始数据c具有k个位,则位c[1]~c[k]分别表示原始数据c的第一个位至第k个位。又例如,若原始数据c具有2k个位,则位c[1]~c[k]分别表示原始数据c的第一个位至第k个位(第一子数据),或是分别表示原始数据c的第k+1个位至第2k个位(第二子数据)。也就是说,在原始数据c的位数量大于k的情况下,原始数据c可以被分为多个子数据(每个子数据的位数量均不大于k)。这些子数据依序输入奇偶产生器242_1-242_n,以便原始数据c可以分批进行运算而完成计算式(1)。
在本实施例中,控制电路32可包括移位控制电路322以及矩阵寄存电路324。移位控制电路322耦接共享存储器22,用以自共享存储器22读取上述一个或多个第一基准向量。特别是,移位控制电路322可根据一控制讯号CS决定此一个或多个第一基准向量的维度,并对决定维度后的此一个或多个第一基准向量进行至少一次的移位(shift)操作,以产生对应的子矩阵列。
举例来说,假设移位控制电路322从共享存储器22取得一个第一基准向量,且图3所示位c[1]~c[k]为12个位。在决定此第一基准向量的维度之后,移位控制电路322会根据此第一基准向量进行11次的移位操作,以产生具有12个行的子矩阵列(或子矩阵)。以[a1a2a3]作为此第一基准向量的范例,控制电路32对[a1a2a3]进行11次的位移操作(例如向右位移)会依序产生[a3a1a2]、[a2a3a1]、[a1a2a3]、[a3a1a2]、[a2a3a1]、[a1a2a3]、[a3a1a2]、[a2a3a1]、[a1a2a3]、[a3a1a2]、[a2a3a1],因而获得相对应的子矩阵列(或子矩阵列中的子矩阵)为 a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 .
然而,在另一实施例中,移位控制电路322也可以从共享存储器22取得多个第一基准向量。以取得4个第一基准向量为例,在移位控制电路322决定所取得的4个第一基准向量的维度之后,假设此4个第一基准向量分别为[a1a2a3]、[b1b2b3]、[c1c2c3]、[d1d2d3],此时移位控制电路322可对此4个第一基准向量分别进行2次的移位操作,以产生4个3×3子矩阵,进而获得由此四个子矩阵组成的具有12个行(即,维度为12×3)的子矩阵列,例如, a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 b 1 b 2 b 3 b 3 b 1 b 2 b 2 b 3 b 1 c 1 c 2 c 3 c 3 c 1 c 2 c 2 c 3 c 1 d 1 d 2 d 3 d 3 d 1 d 2 d 2 d 3 d 1 .
详细而言,移位控制电路322可包括基准向量寄存电路3222与移位多工器3224。基准向量寄存电路3222耦接共享存储器22与矩阵寄存电路324,并且具有位储存区域bs_1、bs_2、…、bs_p,其中位储存区域bs_1-bs_p分别用以储存来自共享存储器22的第一基准向量的各个位。例如,若所取得的第一基准向量具有4个位,则此4个位可依序储存于移位控制电路322的位储存区域bs_1-bs_4。
移位多工器3224可接收控制讯号CS,并根据控制讯号CS从储存于基准向量寄存电路3222中的第一基准向量中选择性读取一特定位,以决定第一基准向量的维度,并执行对应的移位操作。举例来说,如图3所示,基准向量寄存电路3222具有一输入端与多个输出端,其中这些输出端分别用以输出位储存区域bs_1-bs_p中储存的位。基准向量寄存电路3222可以进行向右移位操作,例如将位储存区域bs_1的内容传递至位储存区域bs_2,其余位储存区域bs_2~bs_p的向右移位操作依此类推。移位多工器3224具有输入端I1-Ip与输出端O,输入端I1-Ip分别耦接基准向量寄存电路3222的各输出端,并且输出端O耦接基准向量寄存电路3222的输入端。在每一次的移位操作中,移位多工器3224可根据控制讯号CS而通过输入端I1-Ip的其中之一从位储存区域bs_1-bs_p中选择读取一个特定位,并通过输出端O将取得的特定位回馈(feedback)至基准向量寄存电路3222的位储存区域bs_1,以对此储存于基准向量寄存电路3222的第一基准向量进行一次的移位操作,并将移位操作的结果作为所产生的子矩阵列的一个行。
例如,当移位多工器3224根据控制讯号CS将输入端I2与输出端O导通时,移位多工器3224可取得储存于位储存区域bs_2中的特定位(即,第一基准向量的第2个位),并通过输出端O将取得的特定位回馈至基准向量寄存电路3222的输入端。而在基准向量寄存电路3222通过其输入端接收到原先储存于位储存区域bs_2中的特定位之后,基准向量寄存电路3222会将原先储存于位储存区域bs_1的位写入至位储存区域bs_2,并将接收到的特定位写入至位储存区域bs_1,从而完成一次的移位操作并输出储存于位储存区域bs_1-bs_2中的位。
藉此,假设原本的第一基准向量的维度是1×4,但移位控制电路322欲产生具有3个列的子矩阵列,此时移位多工器3224可通过读取第一基准向量的第3个位,并将此第3个位回馈至基准向量寄存电路3222的输入端。因此,移位控制电路322可以同时达到将第一基准向量的维度调整为1×3以及对储存于基准向量寄存电路3222中的第一基准向量进行移位操作的功能。
矩阵寄存电路324耦接移位控制电路322与运算电路34,用以储存控制电路322产生的子矩阵列。详细而言,矩阵寄存电路324具有矩阵储存区域ms_1-ms_p,其分别用以接收并储存来自位储存区域bs_1-bs_p的位。接续上述范例,在每完成一次移位操作后,矩阵储存区域ms_1-ms_3可分别储存来自位储存区域bs_1-bs_3的位数据。在完成多次移位操作后,矩阵储存区域ms_1-ms_3便分别记录了欲进行运算的子矩阵列中的各个列。例如,矩阵储存区域ms_1储存了欲进行运算的子矩阵列 a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 中的第一个列(即, a 1 a 3 a 2 a 1 a 3 a 2 a 1 a 3 a 2 a 1 a 3 a 2 ),矩阵储存区域ms_2储存了第二个列(即, a 2 a 1 a 3 a 2 a 1 a 3 a 2 a 1 a 3 a 2 a 1 a 3 ),而矩阵储存区域ms_3储存了第三个列(即, a 3 a 2 a 1 a 3 a 2 a 1 a 3 a 2 a 1 a 3 a 2 a 1 )。又例如,矩阵储存区域ms_1储存了欲进行运算的子矩阵列 a 1 a 2 a 3 a 3 a 1 a 2 a 2 a 3 a 1 b 1 b 2 b 3 b 3 b 1 b 2 b 2 b 3 b 1 c 1 c 2 c 3 c 3 c 1 c 2 c 2 c 3 c 1 d 1 d 2 d 3 d 3 d 1 d 2 d 2 d 3 d 1 中的第一个列(即, a 1 a 3 a 2 b 1 b 3 b 2 c 1 c 3 c 2 d 1 d 3 d 2 ),矩阵储存区域ms_2储存了第二个列(即, a 2 a 1 a 3 b 2 b 1 b 3 c 2 c 1 c 3 d 2 d 1 d 3 ),而矩阵储存区域ms_3储存了第三个列(即, a 3 a 2 a 1 b 3 b 2 b 1 c 3 c 2 c 1 d 3 d 2 d 1 )。
运算电路34耦接控制电路32,用以通过控制电路32产生的各个列(例如,上述第一至第三个列)将位c[1]~c[k]转换为一已编码数据(例如,上述第一已编码数据)。举例来说,运算电路34包括子运算电路342_1、342_2、…、342_p,其中子运算电路342_1-342_p分别包括多个与门以及多个异或门(其基本架构类似于图3的子运算电路342_1),以通过矩阵储存区域ms_1-ms_p中储存的各个列对位c[1]~c[k]进行运算,以产生已编码数据中的各个位。
寄存电路36耦接运算电路34,用以储存运算电路34产生的已编码数据(即,第一已编码数据)。例如,寄存电路36可包括寄存区rs_1、rs_2、…、rs_p,而可分别储存子运算电路342_1-342_p输出的第一已编码数据的各个位。在另一实施例中,如果原始数据为c[1]~c[2k],运算电路34第一次运算处理c[1]~c[k]可得到一第一部分编码数据,该第一部分编码数据储存在上述的寄存电路36中。此外,储存在寄存电路36中的该第一部分编码数据会被回授到运算电路34,与第二次运算处理c[k+1]~c[2k]得到第二部分编码数据相加,而可得到完整的第一已编码数据并储存于寄存电路36中。根据图3中的电路架构,假设原始数据c为c[1:k],本实施例不需每产生子矩阵列中的一个行就对c[1:k]的任一单一位执行一次二位的乘法与加法运算,而是在控制电路32产生出完整的子矩阵列或子矩阵列的多个行之后,才通过此完整的子矩阵列或子矩阵列的多个行同时对c[1:k]的各个位进行二位的乘法与加法运算,从而大幅提升编码效率。
请再次参照图2,整合输出电路244可根据原始数据c与来自奇偶产生器242_1-242-n的一个或多个已编码数据产生对应的码字v。举例来说,整合输出电路244可包括整合电路2442与多工器2444。接续上述奇偶矩阵的范例,整合电路2442可将来自奇偶产生器242_1与奇偶产生器242_2的第一已编码数据与第二已编码数据进行整合,并将整合后的已编码数据作为原始数据的校验码输出至多工器2444。多工器2444可接收来自主机接口12的原始数据c以及排序后的第一与第二已编码数据(即,原始数据的校验码),并将其依序输出以产生码字v。当原始数据输入至编码器模块106进行编码时,多工器2444可以选择将来自主机接口12的原始数据c输出作为码字v中的前部。在奇偶产生器242_1-242-n完成编码后,多工器2444可以选择将整合电路2442所输出的校验码作为码字v中的后部。具体而言,结合如前的计算式(3)和计算式(1),得到以下计算式(4):
v=cG
=c[I|P]
=c[I|第一子矩阵列第二子矩阵列…第n子矩阵列]
=c|[c×第一子矩阵列c×第二子矩阵列…c×第n子矩阵列]
计算式(4)
以两个奇偶产生器(242_1与242_2)产生第一和第二已编码数据为例,计算式(4)为v=c|[c×第一子矩阵列c×第二子矩阵列],即奇偶产生器242_1产生的第一已编码数据为前述计算式(4)中的“c×第一子矩阵列”,奇偶产生器242_2产生的第二已编码数据为前述计算式(4)中的“c×第二子矩阵列”。
请再次参照图1,在解码方面,解码器模块108可通过校验矩阵H来对来自存储器接口102的码字进行解码,其中校验矩阵H符合HG=0(即零矩阵)的运算规则。特别是,由于在将码字v从存储器芯片11中取出的过程中可能会有杂讯干扰,因此一般会利用码字v对应的决策比矩阵来作为对码字进行解码的依据。换言之,码字v对应的决策比矩阵可辅助判断码字v编码前的原始数据c,并降低因读取时产生的杂讯对于解码造成的误差。举例来说,假设来自存储器接口102的码字具有9个位,则其对应的决策比矩阵例如是以 γ 1 γ 2 γ 3 γ 4 γ 5 γ 6 γ 7 γ 8 γ 9 表示,其中γ1至γ9分别为此码字v的第1个位至第9个位的决策比。所述决策比可以相关于位为0的机率与位为1的机率二者的比值。所述决策比可以依据设计需求而决定。例如,在本实施例中,假设通过存储器接口102从存储器芯片11读取码字v中第一个位为0的机率为Pr(0),而相同码字v中相同第一个位为1的机率为Pr(1),则码字v中所述第一个位的决策比可以定义为Pr(0)除以Pr(1)再取log(即log[Pr(0)/Pr(1)],亦称为log-likelihoodratio)。例如,γ1=log(此码字中的第1个位为0的机率/此码字中的第1个位为1的机率),其余γ2至γ9以此类推。
图4为根据本发明一实施例所绘示的解码器模块的示意图。请参照图4,解码器模块108可包括多工器41、内部存储器42、位节点(bitnode)处理器44以及校验模块46。内部存储器42可以通过多工器41接收并储存来自存储器接口102的码字v所对应的决策比矩阵。位节点处理器44的输入端耦接内部存储器42的输出端,以便自内部存储器42读取数据(例如决策比矩阵)。换言之,在本实施例中,位节点处理器44可以取出储存于内部存储器42的决策比矩阵,然后将此决策比矩阵传输至校验模块46以进行后续运算。校验模块46的第一输出端通过多工器41耦接内部存储器42的输入端,而校验模块46的输入端耦接至位节点处理器44的输出端。校验模块46可以通过校验矩阵H对来自位节点处理器44的决策比矩阵进行迭代(iterative)运算,以更新储存于内部存储器42的决策比矩阵,并根据迭代运算的运算结果产生一修正矩阵。
在本实施例中,每一次的迭代运算可包含对于决策比矩阵的排列替换与更新操作,并且每一次的迭代运算可包括同步执行的多个周期操作,其中每一个周期操作是针对决策比矩阵的一个行。举例来说,校验模块46可包括排列替换(permute)处理器462以及校验节点(checknode)处理器464。排列替换处理器462的输入端耦接位节点处理器44的输出端,用以根据校验矩阵H将来自位节点处理器44的决策比矩阵进行一排列替换。举例来说,排列替换处理器462可以行为单位对决策比矩阵γ的第一行至第三行中的元素进行排列替换。假设储存在内部存储器42中决策比矩阵γ的初始值为 γ 1 γ 2 γ 3 γ 4 γ 5 γ 6 γ 7 γ 8 γ 9 , 校验矩阵 H = 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 · · · . 在读取初始值的操作中,位节点处理器44不处理从内部存储器42读取的决策比矩阵γ的初始值,而将此初始值传送给排列替换处理器462。根据校验矩阵H的第一子矩阵 1 0 0 0 1 0 0 0 1 , 排列替换处理器462将决策比矩阵γ的初始值的第一行[γ1  γ2  γ3]调整为[γ1  γ2  γ3]。根据校验矩阵H的第二子矩阵 0 1 0 0 0 1 1 0 0 , 排列替换处理器462将决策比矩阵γ的初始值的第二行[γ4  γ5  γ6]调整为[γ5  γ6  γ4]。根据校验矩阵H的第三子矩阵 0 0 1 1 0 0 0 1 0 , 排列替换处理器462将决策比矩阵γ的初始值的第三行[γ7  γ8  γ9]调整为[γ9  γ7  γ8]。因此,经过排列替换处理器462以行为单位的排列替换之后,决策比矩阵γ会被转换为γ',并且
γ ′ = γ 1 γ 2 γ 3 γ 5 γ 6 γ 4 γ 9 γ 7 γ 8 .
校验节点处理器464的输入端耦接排列替换处理器462的输出端,校验节点处理器464的第一输出端通过多工器41耦接至内部存储器42的输入端,以及校验节点处理器464的第二输出端耦接至位节点处理器44的第二输入端。校验节点处理器464可以根据经排列替换的决策比矩阵γ'更新储存于内部存储器42的决策比矩阵,并产生前述修正矩阵给位节点处理器44。在本实施例中,校验节点处理器464包括3个校验节点处理模块。在排列替换处理器462产生经排列替换的决策比矩阵γ'之后,校验节点处理器464的第一校验节点处理模块负责对γ'的第一个列中的元素(即, γ 1 γ 5 γ 9 )进行更新操作,校验节点处理器464的第二校验节点处理模块负责对γ'的第二个列中的元素(即, γ 2 γ 6 γ 7 )进行更新操作,并且校验节点处理器464的第三校验节点处理模块负责对γ'的第三个列中的元素(即, γ 3 γ 4 γ 8 )进行更新操作。
详细来看,在迭代运算的第一周期操作中,第一校验节点处理模块可将γ1减去一修正值λ00而产生ρ00,第二校验节点处理模块可将γ2减去一修正值λ01而产生ρ01,而第三校验节点处理模块可将γ3减去一修正值λ02而产生ρ02。特别是,在第一次的迭代运算中,由于修正值λ00、λ01与λ02皆是初始值(例如为零),故ρ001001,ρ012012,且ρ023023。在产生ρ00、ρ01与ρ02之后,校验节点处理器464将储存于内部存储器42的决策比矩阵γ中的γ1、γ2与γ3分别更新为ρ00、ρ01与ρ02
在迭代运算的第二周期操作中,第一校验节点处理模块可将γ5减去修正值λ11而产生ρ11,第二校验节点处理模块可将γ6减去修正值λ12而产生ρ12,而第三校验节点处理模块可将γ4减去修正值λ10而产生ρ10。同样地,由于此次为第一次的迭代运算,因此修正值λ11、λ12与λ10皆是初始值(例如为零),并且ρ115115,ρ126126,且ρ104104。在产生ρ11、ρ12与ρ10之后,校验节点处理器464将储存于内部存储器42的决策比矩阵γ中的γ5、γ6与γ4分别更新为ρ11、ρ12与ρ10
在迭代运算的第三周期操作中,第一校验节点处理模块可将γ9减去修正值λ22而产生ρ22,第二校验节点处理模块可将γ7减去修正值λ20而产生ρ20,而第三校验节点处理模块可将γ8减去修正值λ21而产生ρ21。同样地,由于此次为第一次的迭代运算,因此修正值λ22、λ20与λ21皆是初始值(例如为零),并且ρ229229,ρ207207,且ρ218218。在产生ρ22、ρ20与ρ21之后,校验节点处理器464将储存于内部存储器42的决策比矩阵γ中的γ9、γ7与γ8分别更新为ρ22、ρ20与ρ21
值得一提的是,由于校验节点处理器464可以不经过位节点处理器44直接将其产生的决策比矩阵写入内部存储器42中,因此位节点处理器44并不需要具有额外的储存空间来储存校验节点处理器464产生的决策比矩阵,从而减少建构位节点处理器44的设置成本。
在完成迭代操作中的三个周期操作之后,校验节点处理器464可根据更新后的决策比矩阵ρ产生修正矩阵λ。在本实施例中,修正矩阵λ中某个元素,例如是根据在更新后的决策比矩阵中,同一列中除了自己本身位置之外的其他各个元素取绝对值后的最小的元素来决定。例如,假设更新后的决策比矩阵 ρ = ρ 00 ρ 01 ρ 02 ρ 10 ρ 11 ρ 12 ρ 20 ρ 21 ρ 22 = - 6 5 1 1 2 2 2 3 2 , 则校验节点处理器464产生的修正矩阵λ例如是 λ 00 λ 01 λ 02 λ 10 λ 11 λ 12 λ 20 λ 21 λ 22 = 1 2 2 2 3 1 1 2 1 , 其中λ00=min(|ρ10|,|ρ20|),λ10=min(|ρ00|,|ρ20|),λ20=min(|ρ00|,|ρ10|),λ01=min(|ρ11|,|ρ21|),λ11=min(|ρ01|,|ρ21|),λ21=min(|ρ01|,|ρ11|),λ02=min(|ρ12|,|ρ22|),λ12=min(|ρ02|,|ρ22|),并且λ22=min(|ρ02|,|ρ12|)。
在校验节点处理器464产生修正矩阵λ之后,校验节点处理器464会将修正矩阵λ传送给位节点处理器44。然后,位节点处理器44可根据此修正矩阵λ修正自内部存储器42读取的更新后的决策比矩阵ρ。举例来说,位节点处理器44可自内部存储器42中读取更新后的决策比矩阵ρ,并将更新后的决策比矩阵ρ加上修正矩阵λ,从而产生修正后的决策比矩阵γ,其中 γ = ρ + λ = ρ 00 + λ 00 ρ 01 + λ 01 ρ 02 + λ 02 ρ 10 + λ 10 ρ 11 + λ 11 ρ 12 + ρ 12 ρ 20 + λ 20 ρ 21 + λ 21 ρ 22 + λ 22 . 假设原始的决策比矩阵 γ = - 6 5 1 2 1 2 3 2 2 , 更新后的决策比矩阵 ρ = - 6 5 1 1 2 2 2 3 2 , 并且修正矩阵 λ = 1 2 2 2 3 1 1 2 1 , 则经修正矩阵修正后的决策比矩阵 γ = - 5 7 3 3 5 3 3 5 3 .
此外,校验模块46还可以根据经位节点处理器44修正后的决策比矩阵γ决定是否重复进行另一次的迭代运算。若校验模块46决定不重复进行另一次的迭代运算,则校验模块46可根据修正后的决策比矩阵γ产生一已解码数据,并将此已解码数据传送至主机接口104。举例来说,校验模块46还包括决策电路466以及早期终止电路468。决策电路466耦接排列替换处理器462,用以对由位节点处理器44修正后的决策比矩阵进行一硬决策(harddecision),以取得一决策矩阵X。例如,将修正后的决策比矩阵γ中小于零的元素转换为1,并将修正后的决策比矩阵γ中大于零的元素转换为0,以获得决策矩阵X。接续上述范例,假设修正后的决策比矩阵 γ = - 5 7 3 3 5 3 3 5 3 , 则经过决策电路466的硬决策之后,决策电路466可产生维度为1×9的决策矩阵X=[100000000]。
早期终止电路468耦接决策电路466,用以运算并判断决策矩阵X是否符合HXT=0的运算规则。若决策矩阵X符合此运算规则,则早期终止电路468决定校验模块46不重复进行另一次的迭代运算,并且校验模块46以决策矩阵X作为已解码数据而传送至主机接口104。此外,若早期终止电路468判断决策矩阵X不符合HXT=0的运算规则,则校验模块46根据经位节点处理器44修正后的决策比矩阵γ重复进行另一次的迭代运算。特别是,在本实施例中,只有第一次进行迭代运算时,校验节点处理器464是以零作为修正矩阵λ的初始值。在第二次之后的迭代运算中,校验节点处理器464皆以前一次的迭代运算取得的修正矩阵λ去修正位节点处理器44所提供的决策比矩阵γ而获得决策比矩阵ρ(即ρ=γ-λ),并且在完成另一次的迭代运算之后再次更新修正矩阵λ。
综上所述,本发明实施例的存储器控制器中的编码器模块可适应性地调整生成矩阵的维度,并且通过使用单一的存储器来达到节省存储器的功效。另外,本发明实施例的存储器控制器中的解码器模块则可在每一次的迭代运算之后判断是否需要再次进行另一次的迭代运算,藉此,即使尚未达到预设的迭代次数,只要迭代运算的结果符合使用上的需求,即可提前终止迭代运算,从而提升解码效率。
虽然本发明已以实施例揭示如上,然其并非用以限定本发明,本领域的技术人员在不脱离本发明的精神和范围的前提下,可作些许的更动与润饰,故本发明的保护范围是以本发明的权利要求为准。

Claims (16)

1.一种存储器控制器,包括:
一存储器接口,用以连接至少一存储器芯片;以及
一编码器模块,耦接至该存储器接口,该编码器模块包括:
一共享存储器;以及
一奇偶产生器模块,耦接该共享存储器,用以自该共享存储器中读取至少一基准向量,决定该至少一基准向量的维度,该奇偶产生器模块根据决定维度后的该至少一基准向量产生一生成矩阵,并通过该生成矩阵将一原始数据转换为一码字,并通过该存储器接口将该码字储存在该存储器芯片。
2.如权利要求1所述的存储器控制器,其中该奇偶产生器模块包括至少一奇偶产生器,并且该至少一奇偶产生器分别耦接该共享存储器,
其中当该奇偶产生器的数量大于一时,该些奇偶产生器依序轮流自该共享存储器中读取该至少一基准向量。
3.如权利要求1所述的存储器控制器,其中该奇偶产生器模块包括至少一奇偶产生器与一整合输出电路,
其中每一所述奇偶产生器包括:
一控制电路,耦接该共享存储器,用以自该共享存储器读取该至少一基准向量中的至少一第一基准向量,决定该至少一第一基准向量的维度,并根据决定维度后的该至少一第一基准向量产生该生成矩阵中的一子矩阵列;
一运算电路,耦接该控制电路,用以通过该子矩阵列将该原始数据转换为一已编码数据;以及
一寄存电路,耦接该运算电路,用以储存该已编码数据或该运算电路根据该原始数据产生的一部份编码数据,
其中该整合输出电路用以根据该原始数据与来自该至少一奇偶产生器的至少一该已编码数据输出该码字。
4.如权利要求3所述的存储器控制器,其中该控制电路包括:
一移位控制电路,耦接该共享存储器,用以自该共享存储器读取该至少一第一基准向量,根据一控制讯号决定该至少一第一基准向量的维度,并对决定维度后的该至少一第一基准向量进行一移位操作,以产生该子矩阵列;以及
一矩阵寄存电路,耦接该移位控制电路与该运算电路,用以储存该子矩阵列。
5.如权利要求4所述的存储器控制器,其中该移位控制电路包括:
一基准向量寄存电路,耦接该共享存储器与该矩阵寄存电路,用以储存来自该共享存储器的该至少一第一基准向量;以及
一移位多工器,该移位多工器的多个输入端耦接该基准向量寄存电路的多个输出端,并且该移位多工器的一输出端耦接该基准向量寄存电路的一输入端,
其中该移位多工器根据该控制讯号通过该移位多工器的该些输入端的其中之一从该至少一第一基准向量中选择性读取一特定位,以决定该至少一第一基准向量的维度,并通过该移位多工器的该输出端将该至少一特定位回馈至该基准向量寄存电路,以对决定维度后的该至少一第一基准向量进行该移位操作。
6.如权利要求1所述的存储器控制器,其中该奇偶产生器模块执行v=cG的运算,其中c代表该原始数据,G代表该生成矩阵,并且v代表该码字。
7.一种存储器控制器,包括:
一存储器接口,用以连接一存储器芯片;
一解码器模块,耦接至该存储器接口,该解码器模块包括:
一内部存储器,用以储存来自该存储器接口的一码字所对应的一决策比矩阵;
一位节点处理器,耦接该内部存储器,用以自该内部存储器读取该决策比矩阵;以及
一校验模块,耦接该内部存储器与该位节点处理器,用以通过一校验矩阵对来自该位节点处理器的该决策比矩阵进行一迭代运算,以更新储存于该内部存储器的该决策比矩阵,并根据该迭代运算的运算结果产生一修正矩阵,
其中该位节点处理器更根据该修正矩阵修正自该内部存储器读取的更新后的决策比矩阵,且该校验模块根据修正后的决策比矩阵决定是否重复进行该迭代运算,若该校验模块决定不重复进行该迭代运算,则该校验模块根据修正后的决策比矩阵产生一已解码数据。
8.如权利要求7所述的存储器控制器,其中该校验模块包括:
一排列替换处理器,耦接该位节点处理器,用以根据该校验矩阵将来自该位节点处理器的该决策比矩阵进行一排列替换;
一校验节点处理器,耦接该排列替换处理器、该内部存储器以及该位节点处理器,用以根据经排列替换的决策比矩阵更新储存于该内部存储器的该决策比矩阵,并产生该修正矩阵。
9.如权利要求7所述的存储器控制器,其中该校验模块包括:
一决策电路,耦接该位节点处理器,用以对经该位节点处理器修正后的决策比矩阵进行一硬决策,以取得一决策矩阵;以及
一早期终止电路,耦接该决策电路,用以判断该决策矩阵是否符合HXT=0的运算规则,其中H代表该校验矩阵,并且X代表该决策矩阵,
其中当该决策矩阵符合该运算规则时,该早期终止电路决定该校验模块不重复进行该迭代运算,并且该校验模块以该决策矩阵作为该已解码数据而传送至主机接口。
10.如权利要求7所述的存储器控制器,其中该码字符合v=cG的运算规则,并且该校验矩阵符合HG=0的运算规则,其中c代表一原始数据,G代表一生成矩阵,v代表该码字,并且H代表该校验矩阵。
11.如权利要求7所述的存储器控制器,还包括:
一编码器模块,耦接至该存储器接口,其中该编码器模块包括:
一共享存储器;以及
一奇偶产生器模块,耦接该共享存储器,用以自该共享存储器中读取至少一基准向量,决定该至少一基准向量的维度,该奇偶产生器模块根据决定维度后的该至少一基准向量产生一生成矩阵,并通过该生成矩阵将一原始数据转换为一码字,并通过该存储器接口将该码字储存在该存储器芯片。
12.如权利要求11所述的存储器控制器,其中该奇偶产生器模块包括至少一奇偶产生器,并且该至少一奇偶产生器分别耦接该共享存储器,
其中当该奇偶产生器的数量大于一时,该些奇偶产生器依序轮流自该共享存储器中读取该至少一基准向量。
13.如权利要求11所述的存储器控制器,其中该奇偶产生器模块包括至少一奇偶产生器与一整合输出电路,其中每一所述奇偶产生器包括:
一控制电路,耦接该共享存储器,用以自该共享存储器读取该至少一基准向量中的至少一第一基准向量,决定该至少一第一基准向量的维度,并根据决定维度后的该至少一第一基准向量产生该生成矩阵中的一子矩阵列;
一运算电路,耦接该控制电路,用以通过该子矩阵列将该原始数据转换为一已编码数据;以及
一寄存电路,耦接该运算电路,用以储存该已编码数据或该运算电路根据该原始数据产生的一部份编码数据,
其中该整合输出电路用以根据该原始数据与来自该至少一奇偶产生器的至少一该已编码数据输出该码字。
14.如权利要求13所述的存储器控制器,其中该控制电路包括:
一移位控制电路,耦接该共享存储器,用以自该共享存储器读取该至少一第一基准向量,根据一控制讯号决定该至少一第一基准向量的维度,并对决定维度后的该至少一第一基准向量进行一移位操作,以产生该子矩阵列;以及
一矩阵寄存电路,耦接该移位控制电路与该运算电路,用以储存该子矩阵列。
15.如权利要求14所述的存储器控制器,其中该移位控制电路包括:
一基准向量寄存电路,耦接该共享存储器与该矩阵寄存电路,用以储存来自该共享存储器的该至少一第一基准向量;以及
一移位多工器,该移位多工器的多个输入端耦接该基准向量寄存电路的多个输出端,并且该移位多工器的一输出端耦接该基准向量寄存电路的一输入端,
其中该移位多工器根据该控制讯号通过该移位多工器的该些输入端的其中之一从该至少一第一基准向量中选择性读取一特定位,以决定该至少一第一基准向量的维度,并通过该移位多工器的该输出端将该至少一特定位回馈至该基准向量寄存电路,以对决定维度后的该至少一第一基准向量进行该移位操作。
16.如权利要求11所述的存储器控制器,其中该奇偶产生器模块执行v=cG的运算,其中c代表该原始数据,G代表该生成矩阵,并且v代表该码字。
CN201310222605.0A 2012-06-07 2013-06-06 存储器控制器 Active CN103325425B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261656554P 2012-06-07 2012-06-07
US61/656,554 2012-06-07

Publications (2)

Publication Number Publication Date
CN103325425A CN103325425A (zh) 2013-09-25
CN103325425B true CN103325425B (zh) 2016-03-16

Family

ID=49194117

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310222605.0A Active CN103325425B (zh) 2012-06-07 2013-06-06 存储器控制器

Country Status (3)

Country Link
US (1) US9116825B2 (zh)
CN (1) CN103325425B (zh)
TW (1) TWI520501B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015104841A1 (de) 2015-03-30 2016-10-06 Infineon Technologies Ag Chip und Verfahren zum Detektieren einer Veränderung eines gespeicherten Datenvektors
US20160335294A1 (en) * 2015-05-15 2016-11-17 Bjorn J. Gruenwald System and Method for Organizing Data
TWI625620B (zh) * 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法
TWI677878B (zh) * 2018-10-12 2019-11-21 慧榮科技股份有限公司 編碼器及相關的編碼方法與快閃記憶體控制器
KR20210045875A (ko) * 2019-10-17 2021-04-27 에스케이하이닉스 주식회사 복수의 에러 정정 레벨들을 위한 패리티 생성 로직, 이를 포함하는 메모리 컨트로러 및 메모리 모듈, 및 패리티 생성 방법
US11182159B2 (en) 2020-02-26 2021-11-23 Google Llc Vector reductions using shared scratchpad memory
TWI744960B (zh) * 2020-06-22 2021-11-01 旺宏電子股份有限公司 記憶體控制器及記憶體裝置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101106381A (zh) * 2007-08-09 2008-01-16 上海交通大学 分层的低密度校验码译码器及译码处理方法
US7773032B2 (en) * 2006-05-10 2010-08-10 Research Foundation Of The City University Of New York Methods and applications utilizing signal source memory space compression and signal processor computational time compression

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101492595B1 (ko) * 2007-05-21 2015-02-11 라모트 앳 텔-아비브 유니버시티 리미티드 메모리 효율적인 ldpc 디코딩
US7933847B2 (en) * 2007-10-17 2011-04-26 Microsoft Corporation Limited-memory quasi-newton optimization algorithm for L1-regularized objectives
US8015438B2 (en) * 2007-11-29 2011-09-06 Qimonda Ag Memory circuit
JP2010218634A (ja) * 2009-03-17 2010-09-30 Toshiba Corp 誤り検出訂正器、メモリコントローラおよび半導体記憶装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7773032B2 (en) * 2006-05-10 2010-08-10 Research Foundation Of The City University Of New York Methods and applications utilizing signal source memory space compression and signal processor computational time compression
CN101106381A (zh) * 2007-08-09 2008-01-16 上海交通大学 分层的低密度校验码译码器及译码处理方法

Also Published As

Publication number Publication date
TWI520501B (zh) 2016-02-01
US20130332797A1 (en) 2013-12-12
CN103325425A (zh) 2013-09-25
US9116825B2 (en) 2015-08-25
TW201351892A (zh) 2013-12-16

Similar Documents

Publication Publication Date Title
CN103325425B (zh) 存储器控制器
KR101753498B1 (ko) 신뢰도 데이터 업데이트
CN113032178B (zh) 存储器控制器及快闪存储器的存取方法
CN111726121B (zh) 错误校正解码器和具有该错误校正解码器的存储器系统
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
US11184026B2 (en) Super-HPC error correction code
KR20140075434A (ko) 메모리 컨트롤러 및 그 동작방법
CN104303155A (zh) 用于组合错误译码与调制方案的设备及方法
US20180152203A1 (en) Error correction circuits and memory controllers including the same
CN111756385A (zh) 错误校正解码器
KR20200122064A (ko) 오류 정정 회로 및 이를 포함하는 메모리 컨트롤러
CN105164646A (zh) 具有早期解码终止检测的解码器
US9336085B2 (en) Memory system and memory controller
KR20210001927A (ko) 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법
CN106708649B (zh) 解码方法、存储器储存装置及存储器控制电路单元
CN101931415B (zh) 编码装置及方法、译码装置及方法和纠错系统
CN110971240B (zh) 解码器设计方法与存储控制器
US11876535B1 (en) Memory controller and method for controlling data in decoding pipeline
US20230195358A1 (en) Separation of Parity Columns in Bit-Flip Decoding of Low-Density Parity-Check Codes with Pipelining and Column Parallelism
CN107959502A (zh) 一种ldpc编码方法
CN107959501B (zh) 一种ldpc编码器
CN117631962A (zh) 存储器控制器及快闪存储器的存取方法
CN102568607A (zh) 一种优化的bch解码器
CN117335814A (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
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200624

Address after: Chinese Taiwan New Taipei City

Patentee after: VIA LABS Inc.

Address before: Chinese Taiwan New Taipei City

Patentee before: Via Technologies, Inc.

TR01 Transfer of patent right