存储器模块的错误检查与校正系统以及方法

文档序号:6362653阅读:482来源:国知局
专利名称:存储器模块的错误检查与校正系统以及方法
技术领域
本发明涉及错误检查与校正(error checking and correcting, ECC)技术,特别是涉及适用于存储器模块的错误检查与校正系统及方法。
背景技术
错误检查与校正(error checking and correcting, ECC)技术或错误校正码 (error correction code)检查是一种可用于存储器模块上的数据检查与除错的技术,用来检查传送到存储器模块的数据是否正确并可用于校正数据的错误。当数据出现错误时, 错误校正码检查能自行更正错误,或要求系统重新传送数据。这样可确保系统正常运作而不会因数据错误而导致死机。所传输的数据于传输端传送前经常事先被编码为错误校正码 (可包含数据讯息、冗余信息及同位数据)。当接收端收到错误校正码数据时,即使数据于传输过程中遭受损毁而产生随机错误,亦可藉解码错误校正码而回复正确的数据。同样的, 数据储存系统亦经常在储存数据前将所储存的数据编码为错误校正码。当数据于储存过程中遭受损毁而产生随机错误时,亦可藉解码错误校正码而回复正确的数据。常见的错误校正码如 BCH 码(Bose, Ray-Chaudhuri, and Hocquenghem code)及 RS 码(Reed-Solomon code)。BCH码常用于快闪存储器数据的储存,而RS码常用于光盘数据的储存。一般而言,为了提升整体效能,系统的控制器可能会采用多个通道结构例如多个快闪存储器芯片来帮助运算,其中每个通道各自配有一个错误校正模块以对其传输数据进行自动错误校正。然而,一般的错误校正模块仅具有有限能力的自动错误校正能力,例如 数据容错数量为6位的错误校正码只能对错误的位数目为小于或等于6位的错误进行校正,若错误的位数目大于6位时,错误校正模块不仅无法校正错误,甚至可能会使数据发生的错误增加。因此,为了提供更好的错误校正效能,可对每个通道配上一个具有较高数据容错数量的错误校正模块来进行错误校正。然而,具有较高数据容错数量的错误校正模块通常较占面积且成本较高,不仅会增加硬件成本及复杂度,也不适合大量使用。

发明内容
本发明的一实施例提供了一种存储器模块的错误检查与校正(Error Checking and Correcting, ECC)方法,该存储器模块包括至少一存储器单元,上述方法包括以下流程步骤接收来自该存储器单元的一输入数据;通过一第一校正模块对该输入数据执行一第一错误校正操作,并产生一解码结果,其中该解码结果用以表示是否解码失败;以及依据该解码结果,决定是否启动一第二校正模块对该输入数据执行一第二错误校正操作。其中,该第一校正模块以及该第二校正模块分别采用一第一方法以及一第二方法且该第一方法是以一第一容错数量的错误校正码进行错误校正,该第二方法是以一第二容错数量的错误校正码进行错误校正,且该第二容错数量大于该第一容错数量。本发明的另一实施例提供了一种存储器模块的错误检查与校正系统,其中该存储器模块包括多个存储器单元。存储器模块的错误检查与校正系统至少包括多个第一校正模块、一第二校正模块、以及一仲裁模块。所述第一校正模块对应耦接至所述存储器单元,其中每一所述第一校正模块对应所述存储器单元的其中一个且用以接收该对应存储器单元的一输入数据并对该输入数据执行一第一错误校正操作,并产生一解码结果。第二校正模块用以于被启动时执行一第二错误校正操作,其中该第一校正模块是以一第一容错数量的错误校正码进行错误校正,该第二校正模块是以一第二容错数量的错误校正码进行错误校正且该第二容错数量大于该第一容错数量。仲裁模块耦接于所述第一校正模块以及该第二校正模块之间,其中该仲裁模块依据所述第一校正模块产生的所述解码结果决定是否启动该第二校正模块。其中该仲裁模块于所述解码结果的任一个表示解码失败时,启动该第二校正模块以对该输入数据执行该第二错误校正操作。关于本发明其他附加的特征与优点,本领域的技术人员,在不脱离本发明的精神和范围的前提下,可根据本发明的实施方法中所揭示的数据处理方法做些许的更动与润饰而得到。


图1显示依据本发明实施例的存储器模块的错误检查与校正(ECC)系统的示意图。图2是根据本发明一实施例所述的存储器模块的错误检查与校正方法。图3是显示依据本发明另一实施例的存储器模块的错误检查与校正系统的示意图。图4为依据本发明一实施例的已编码数据示意图。图5为依据本发明一实施例的错误校正码编码器的区块图。图6为依据本发明一实施例的错误校正码解码器的区块图。附图符号说明100、100’ 存储器模块的错误检查与校正系统;110 第一校正模块;120 仲裁模块;130 第二校正模块;140 储存单元;141 讯息数据储存单元;142 冗余数据储存单元;
143 同位数据储存单元;150 编码器;152 第一编码单元;154 第二编码单元;160 第一解码器;162 第一错误检测单元;164 第一错误校正单元;170 第二解码器;172 第二错误检测单元;
174 第二错误校正单元;200、200, 存储器模块;210,211-218 存储器单元;S202-S212 步骤;400 已编码数据;500 错误校正码编码器;502 第一编码单元;504 第二编码单元;600 错误校正码解码器;602 症状码计算单元;604 错误多项式计算单元;606 秦式搜寻单元;608 控制电路;610 第二错误检测单元。
具体实施例方式下面所叙述的是实施本发明的范例,以下范例是结合

,且若未特别指出, 则在不同附图中所使用到的相同标号用以指示相同或类似的元件。然而,以下实施例仅为实施本发明的代表范例,并非代表实施本发明的所有方式,本发明的保护范围是以本发明的权利要求为准。图1显示依据本发明实施例的存储器模块的错误检查与校正(ECC)系统的示意图。如图1所示,存储器模块的错误检查与校正系统100用以对一存储器模块200进行错误检查与校正,其中存储器模块200包括一个或多个存储器单元210。于一实施例中,每一存储器单元210可为一块独立的快闪存储器芯片。需提醒的是,于本发明中,每个存储器单元210又称为一个通道(channel)。也就是说,本发明于一实施例是以一块快闪存储器芯片为一个通道的单位,则存储器模块200由多个快闪存储器芯片构成,但本发明并不限于此。存储器模块的错误检查与校正系统100至少包括一第一校正模块(error correction module) 110、一仲裁模块(arbitrator) 120、一第二校正模块130以及一储存单元140,其中第一校正模块110耦接至存储器模块200中的存储器单元210且用以接收/读取存储器单元210的一输入数据并对此输入数据执行一第一错误校正操作产生一解码结果。其中,第一校正模块110采用一第一方法且第一方法是以一第一容错数量的错误校正码进行错误校正。举例来说,第一校正模块110是以一容错数量为6位的错误校正码进行错误校正,亦即,第一错误校正操作可用以自动检查并校正6个位以下的错误。解码结果用以表示解码是否成功或失败,也就是说第一校正模块110是否可自动更正所有的错误。当第一校正模块110利用第一容错数量的错误校正码对输入数据执行第一错误校正操作时,若可自动校正所有的错误(亦即错误的位长度低于第一容错数量),解码结果将表示解码成功(decode sucess),而若无法自动校正所有的错误时,解码结果将表示解码失败(decode fail)。储存单元140用以储存错误校正操作时所需的各项数据,例如储存原始讯息数据、 冗余数据以及同位数据(parity data)。需提醒的是,第一校正模块110执行第一错误校正操作时只会针对所储存的讯息数据以及所储存的冗余数据进行错误校正。之后,存储器单元210的第一校正模块110所产生的解码结果将会被送至仲裁模块120进行仲裁。仲裁模块120耦接于第一校正模块110以及第二校正模块130之间,其中,仲裁模块120依据第一校正模块110产生的解码结果决定是否启动或关闭第二校正模块130。当解码结果表示解码成功时,表示所有错误都已自动校正,仲裁模块120便关闭第二校正模块130。当解码结果表示解码失败时,表示仍有一些错误无法自动校正,仲裁模块 120便启动第二校正模块130。第二校正模块130用以于被仲裁模块120启动时执行一第二错误校正操作。其中,第二校正模块130采用一第二方法且第二方法是以一第二容错数量的错误校正码进行错误校正且第二容错数量大于第一容错数量。举例来说,于一实施例中,第一校正模块110是以一容错数量为6位的错误校正码进行错误校正,而第二校正模块 130是以一容错数量为36位的错误校正码进行错误校正,因此,第一错误校正操作可用以自动检查并校正6个位以下的错误,而第二错误校正操作可用以自动检查并校正36个位以下的错误。由于发生超过6位错误的机率非常低,因此第二校正模块130不会频繁地被启动,可提升错误检查与校正操作的效能的同时也节省了第二校正模块130所消耗的电力。另外,第一校正模块110可还包括一编码器150以及一第一解码器160,编码器 150用以产生错误校正码编码,第一解码器160用以执行第一错误校正操作。编码器150包括一第一编码单元152以及一第二编码单元154,其中编码器150可于数据写入操作时接收欲写入至存储器单元210的一数据,再分别通过第一编码法以及第二编码法,依据该数据产生相应对应于第一方法以及第二方法的一第一同位数据(parity data)以及一第二同位数据,再依据该数据、第一同位数据以及第二同位数据,产生一编码数据,最后将该编码数据写入至存储器单元210。举例来说,第一编码单元152可产生容错数量为6位的错误校正码对应的同位数据,而第二编码单元巧4可产生容错数量为36位的错误校正码对应的同位数据。关于编码器150的细节及运作请参见以下图5的说明。第一解码器160可还包括一第一错误检测单元162以及一第一错误校正单元164。 第一错误检测单元162可于数据读取操作时,对输入数据进行一错误检测操作,产生一检错结果,其中检错结果用以表示输入数据是否有错误。第一错误校正单元164耦接至第一错误检测单元162,用以于检错结果表示输入数据有错误时,执行第一错误校正操作并产生相应的解码结果至仲裁模块120。关于第一解码器160的细节及运作请参见以下图6的说明。类似地,第二校正模块130耦接于仲裁模块120,其中第二校正模块130是于接收到来自仲裁模块120的一启动讯号才启动,当被启动时,第二校正模块130可用以执行第二错误校正操作。仲裁模块120是于检测到第一校正模块110所产生的解码结果表示解码失败时产生此启动讯号,以启动第二校正模块130执行第二错误校正操作。第二校正模块130 可还包括一第二解码器170,其可还包括一第二错误检测单元172以及一第二错误校正单元174。第二错误检测单元172可于数据读取操作时,对输入数据进行一错误检测操作,产生一检错结果,其中检错结果用以表示输入数据是否有错误。第二错误校正单元174耦接至第二错误检测单元172,用以执行第二错误校正操作以进行错误校正。举例来说,而第二校正模块130是以一容错数量为36位的错误校正码进行错误校正,因此,第二错误校正单元174是使用此容错数量为36位的错误校正码来进行第二错误校正操作以自动检查并校正36个位以下的错误。由于第二校正模块130只会在第一校正模块110解码失败时才会启动,说明此前第一校正模块110已经检测到输入数据的确有错误发生,因此在本发明另一实施例中,第二校正模块130可以省略第二错误检测单元172,当第一校正模块110所产生的解码结果表示解码失败时,直接由第二错误校正单元174进行错误校正。第二错误校正单元174的校正对象可以是原始的输入数据,也可以是经由第一错误校正单元164校正后的数据。储存单元140耦接至第一校正模块110,第二校正模块130及存储器模块200,储存单元140接收并储存自存储器单元210读取的输入数据,供第一校正模块110与第二校正模块130读取以进行错误校正;储存单元140还接收并储存第一校正模块110在解码成功时输出的校正后数据,或第一校正模块110在解码失败时第二校正模块130输出的校正后数据,以供主机(未绘示)读取。储存单元140在本发明一实施例中,储存单元140进一步包括讯息数据储存单元141,冗余数据储存单元142,以及同位数据(parity data)储存单元143,分别用以储存讯息数据,冗余数据以及同位数据。其中同位数据储存单元143储存的同位数据包括应于第一方法以及第二方法的一第一同位数据(parity data)以及一第二同位数据。在本发明一实施例中,储存单元140可以以一静态随机存取存储器(SRAM)实现。图2是根据本发明一实施例所述的存储器模块的错误检查与校正方法。依据本发明的存储器模块的错误检查与校正方法可适用于图1所示的存储器模块的错误检查与校正100上,用以对存储器模块200的存储器单元210进行自动错误检查与校正操作。于本实施例中,存储器模块200中至少包括一存储器单元210且存储器单元210为一块快闪存储器芯片。首先,如步骤S202,第一校正模块110通过第一解码器160接收来自存储器单元 210的一输入数据。接着,如步骤S204,通过一第一校正模块110对输入数据执行一第一错误校正操作,并产生一解码结果,其中解码结果用以表示是否解码失败。具体来说,第一校正模块110内的第一解码器160通过一第一错误检测单元162对输入数据进行一错误检测操作,产生一检错结果。其中,检错结果用以表示此输入数据是否有错误。若否,则流程结束。若是,第一解码器160执行一第一错误校正操作。举例而言,第一校正模块110是以一第一容错数量例如容错数量为6位的错误校正码进行错误校正。当第一校正模块110利用第一容错数量的错误校正码对输入数据执行第一错误校正操作时,若可自动校正所有的错误,解码结果将表示解码成功,而若无法自动校正所有的错误时,解码结果将表示解码失败。接着,如步骤S206,仲裁模块120将依据解码结果,决定是否通过第二校正模块 130对输入数据执行一第二错误校正操作。其中,第二校正模块130是以一第二容错数量的错误校正码进行错误校正且第二容错数量大于第一校正模块110所使用的第一容错数量, 例如第一容错数量为6位,第二容错数量为36/60位。当解码结果表示解码成功时(步骤 S206的否),表示所有错误均已被第一校正模块110自动校正,因此无需启动第二层的第二校正模块130,仲裁模块120决定不启动第二校正模块130。也就是说,仲裁模块120于解码结果表示解码成功时,不会通过第二校正模块130执行第二错误校正操作。反之,当解码结果表示解码失败时(步骤S206的是),表示有些错误无法被第一校正模块110自动校正,仲裁模块120将启动第二校正模块130,以通过第二校正模块130对输入数据执行第二错误校正操作(步骤S208)。由于目前存储器模块中发生较少位以下的错误的情形约占了所有可能错误概率的90%以上,因此本发明的第一层错误校正所执行的第一错误校正操作可花很少时间来进行错误校正,可以解决大约所有的错误。即便少数的较多位的错误的情形发生时,也可通过本发明的第二层错误校正所执行的第二错误校正操作来更正所有的错误,更能确保数据的正确性。于一些实施例中,当存储器模块200的多个存储器单元210的解码结果均表示解码失败时,仲裁模块120可更进一步决定所述解码失败的存储器单元210的第二错误校正操作的执行顺序。假设同时有多个存储器单元210都解码失败时,仲裁单元120会以一既定仲裁规则例如轮询仲裁(Round-Robin arbitration)的方式来服务所述解码失败的存储器单元210。举例来说,仲裁单元120会依序从存储器单元0至存储器单元7进行轮询来决定。于一些实施例中,每个存储器单元可包括一个优先权,优先权愈高者将优先被执行,且已服务过的优先权将变为最低,而次一个顺位的存储器单元的优先权将变为最高,以便于下次进行服务。举例来说,若存储器单元0与存储器单元1同时需要启动第二层错误校正时,因轮询顺序为先询问存储器单元0接着才询问存储器单元1,因此存储器单元0将会优先执行第二层错误校正,且存储器单元0的优先权将会设为最低,而存储器单元1的优先权将会设为最高,因此,存储器单元1将会接着执行。图3显示依据本发明另一实施例的存储器模块的错误检查与校正系统的示意图。 如图3所示,存储器模块的错误检查与校正系统100 ’用以对存储器模块200,进行错误检查与校正,其中存储器模块200’包括多个存储器单元211-218。于本实施例中,每一存储器单元211-218可为一块快闪存储器芯片,存储器模块200’由多块快闪存储器芯片构成。存储器模块的错误检查与校正系统100’至少包括多个第一校正模块110、一仲裁模块120、以及一第二校正模块130,其中每个第一校正模块110耦接至存储器模块的存储器单元211-218 中的其中一个对应存储器单元且用以接收/读取其对应存储器单元的一输入数据并对此输入数据执行一第一错误校正操作产生一解码结果。其中第一校正模块110是以一第一容错数量例如容错数量为6位的错误校正码进行错误校正。类似地,当第一校正模块110利用第一容错数量的错误校正码对输入数据执行第一错误校正操作时,若可自动校正所有的错误(亦即错误的位长度低于第一容错数量),解码结果将表示解码成功,而若无法自动校正所有的错误时,解码结果将表示解码失败。每个存储器单元211-218对应的第一校正模块110的解码结果均会被送至仲裁模块120进行仲裁。仲裁模块120耦接于所有第一校正模块110以及第二校正模块130之间, 其中,仲裁模块120依据所有第一校正模块110产生的解码结果决定是否启动或关闭第二校正模块130。当所有解码结果均表示解码成功时,表示所有错误都已自动校正,无须启动第二层错误校正,仲裁模块120便关闭第二校正模块130。当解码结果的任一个表示解码失败时,表示仍有一些错误无法自动校正,仲裁模块120便启动第二校正模块130。举例来说, 假设有八个存储器单元共同耦接至仲裁单元120时,只要八个存储器单元中的任一个的第一错误校正检查的解码结果表示解码失败时,便会启动第二层错误校正。第二校正模块130 用以于被仲裁模块120启动时执行一第二错误校正操作。其中,第二校正模块130是以一第二容错数量的错误校正码进行第二错误校正操作且第二容错数量大于第一容错数量。举例来说,于一实施例中,第一校正模块110是以一容错数量为6位的错误校正码进行第一错误校正操作,因此第一错误校正操作最多可纠正IOM字节中发生的6位的错误,而第二校正模块130是以一容错数量为36/60位的错误校正码进行第二错误校正操作第二层错误校正,因此第二错误校正操作最多可纠正IOM字节中的36/60位的错误。举例来说,于一实施例中,当第一存储器单元(例如存储器单元211)的解码结果以及第二存储器单元(例如存储器单元21 的解码结果均表示解码失败时,仲裁模块 120可依照一既定轮询顺序以一轮询方式依序利用第二校正模块130对第一存储器单元以及第二存储器单元执行第二错误校正操作。于另一实施例中,第一存储器单元以及第二存储器单元可分别包括一优先权数据,并且第一存储器单元以及第二存储器单元是依据所述优先权依序执行该第二错误校正操作。仲裁模块120可依照每个存储器单元210对应的优先权数据由高到低依序利用第二校正模块130对对应的存储器单元执行第二错误校正操作。于一些实施例中,由于一般情形只会发生较少位(例如4位)以下的错误,所以第二层错误校正很少会启用,因此可配置专门的寄存器以供使用者根据实际需求来选择只允许启用第一层错误校正而不允许启动第二层错误校正以进一步节省电力,或者两层错误校正都允许启用(前述实施方式即两层错误校正均允许启用的情形)。于一些实施例中,可进一步提供一种以上的不同错误校正能力的第三错误校正单元,再依据实际需求,通过专门的寄存器来设定仅启用第一层错误校正、仅启用第二层错误校正的第二错误校正单元或第三错误校正单元或同时启用第一层错误校正以及第二层错误校正以进一步增加其错误校正能力。此外,因为本案有可能用到两层错误校正,因此于执行数据写入操作时,第一校正模块110中的编码器150必须同时产生对应两层错误校正的同位数据。编码器150可接收一欲写入数据,并利用编码器150中的第一编码单元152以及第二编码单元IM分别产生一第一同位数据以及一第二同位数据,再依据欲写入数据、第一同位数据以及第二同位数据,产生一已编码数据(encoded data),最后再将所产生的已编码数据写入至对应的存储器单元。举例来说,主机(未绘示)欲写入的数据会寄存至一动态随机存取存储器DRAM(未绘示)中,从DRAM所读出的IOM字节的讯息数据将储存在存储器单元例如NAND型快闪存储器的数据区域(data area),同位数据将储存在存储器单元的备份区域(spare area)以供后续数据读出操作时使用。图4为依据本发明一实施例的已编码数据示意图。如图4所示,已编码数据400至少包括三个部分,亦即原始讯息数据、第一同位数据以及第二同位数据,其中,第一同位数据以及第二同位数据的数据长度取决于所使用的错误校正码的容错数量。于一些实施例中,原始讯息数据也可还包含对应于错误校正的冗余信息。在本发明一实施例中,错误校正码的编码方法以BCH码(Bose-Chaudhuri-Hocquenham,BCH)为例,错误校正码的长度是根据容错数量在伽罗瓦域(Galois Feild)GF(2m)中决定,例如,当m = 14, 则IOM字节的原始讯信息数据(message data)需要11字节的同位数据(parity data), 以自动检查并校正6个位以下的错误。再举例而言,如果原始讯息数据包括冗余数据,该冗余数据可以是对错误校正来说的一些冗余信息,则IOM字节的原始讯信息数据(message data)+16字节的冗余数据(redundant data)需要11字节的同位数据(parity data),则上述错误校正码的容错数量也是6位。再举例而言,如果错误校正码的容错数量也是36位, 则IOM字节的原始讯信息数据(message data)需要63字节的同位数据(parity data); 如果错误校正码的容错数量也是60位,则10 字节的原始讯信息数据(message data)需要105字节的同位数据(parity data)。在一实施例中,第一同位数据以及第二同位数据均储存于储存单元140的同位数据储存单元143中。以下列举一些实施例,用以辅助说明依据本发明的错误校正码编码器与错误校正码解码器细节,但本发明并不限于此。于以下实施例中是以错误校正码为BCH码 (Bose-Chaudhuri-Hocquenham,BCH)为例进行说明,但本发明并不限于此。举例来说, 错误校正码的编码演算法包括汉明码(Hamming code)、里德所罗门码(Reed-Solomon code)、里德米勒码(Reed-Muller code)、二次元格雷码(Binary Golay code)、回旋码 (convolutional code)、及涡轮码(turbo code)等等,均适用于本发明。图5为依据本发明一实施例的错误校正码编码器500的区块图。于本实施例中, 错误校正码编码器500包括一第一编码单元502以及一第二编码单元504。其中,错误校正码编码器500可为图1中的编码器150,其中,第一编码单元502对应第一编码单元152,第二编码单元504对应第二编码单元154。如前述,于执行数据写入操作时,错误校正码编码器500必须同时产生对应两层错误校正的同位数据。如图5所示,于执行数据写入操作时, DMA控制器(DMA controller)首先从DRAM(未绘示)中取出一原始讯息数据,之后,取出的原始讯息数据先储存于储存单元(该储存单元可以是对应于图1中的储存单元140,也可以是其它储存单元)中并送至错误校正码编码器500中的第一编码单元502与第二编码单元 504中分别算出对应于容错数量为6位错误校正码与容错数量为36位错误校正码的第一同位数据以及第二同位数据,再将算出的两个同位数据连同存入储存单元的原始讯息数据通过存储器控制器例如进阶型快闪存储器控制器(Advanced Nand Flash Controller)写入特定的存储器单元。于一些实施例中,错误校正码编码器500也可依据欲写入的原始讯息数据、第一同位数据以及第二同位数据,产生一已编码数据(如图4所示),之后再将所产生的已编码数据写入至对应的存储器单元。图6为依据本发明一实施例的错误校正码解码器600的区块图。于本实施例中, 错误校正码解码器600包括症状码(syndrome)计算单元602 (SCBlock)、错误多项式计算单元604 (KES)、秦式搜寻单元606 (CSEE)、以及控制电路608 (Main Control)。其中,错误校正码解码器600可为图1中的第一解码器160或第二解码器170。举例来说,若错误校正码解码器600为图1中的第一解码器160时,症状码计算单元602对应于第一错误检测单元 162,而错误多项式计算单元604、秦式搜寻单元606、以及控制电路608对应于第一错误校正单元164。于将数据从存储器单元取出的数据读取操作中,所取出的为编码后的错误校正码,因此在数据使用前必须先解码错误校正码,以还原为原始数据。当错误校正码解码器 600收到错误校正码(例如BCH码)时,错误校正码解码器600自该错误校正码取出其所包含的讯息及同位数据。首先,症状码计算单元602依据错误校正码的同位数据计算多个症状码S1, S2,... , &。错误校正码解码器600检查是否症状码S1, S2,... ,Sk皆为零。若症状码S1, S2, . . . , Sk为零,表示错误校正码没有发生错误,因此不需进一步的校正。反之,若症状码S1, S2,...,&有其中之一不为零,表示错误校正码有错误发生,因此必须对错误校正码进行校正。于是,症状码计算单元602产生一表示有错误发生的检测结果ECC ERR至错误多项式计算单元604,使其开始执行一错误校正操作。接着,错误多项式计算单元604依据所计算出的症状码Si,S2,. . .,SK计算出一错误多项式(error location polynomial) 的多个系数,并判断该错误多项式的根个数,例如错误多项式的系数不为0的最高次幂为多少次幂,则错误多项式计算单元604会判断该错误位置多项式具有多少个根。秦式搜寻单元606用以进行一秦式搜寻(Chien search)找出该错误多项式的多个根,以确定错误发生的位的位置,以供进行错误校正。由于错误多项式的根指示错误校正码中发生错误的位的位置,因此错误校正码解码器600的控制电路608便可依据错误多项式的根校正错误校正码,例如,校正即是对发生错误的位取反,从而得到一校正后数据。控制电路608将持续检查症状码Si,S2,. . .,SK是否为零,并于所述症状码Si,S2,. . .,SK皆为零时停止错误多项式计算单元604对错误多项式的系数的计算,并停止秦式搜寻单元606对错误多项式的根的搜寻。假设错误校正码解码器600为第一校正模块110中的第一解码器160时,可进一步于执行前述错误校正操作之后,依据秦式搜寻单元606所找出的错误多项式的根的数目是否等于错误多项式计算单元604所确定的错误多项式的根的数目来判断解码是否成功。 若秦式搜寻单元606所找出的错误多项式的根的数目等于错误多项式计算单元604所确定的根的数目,则表示校正成功。反之,若不相等,表示校正失败,因此便产生一解码结果 decode_fail至仲裁模块120,表示第一层的错误校正操作校正失败。仲裁模块120接收到此解码结果deCOde_fail表示第一层的错误校正操作校正失败之后,便启动第二错误校正码解码器130来进行第二层的错误校正操作。在某些实际应用中,为了提高校正精度,即便秦式搜寻单元606所找出的错误多项式的根的数目等于错误多项式计算单元604所确定的根的数目,即不产生deCOde_fail讯号时,也不能确定校正一定成功,在本发明另一实施例中,当错误校正码解码器600为第一解码器160时,错误校正码解码器600进一步包括一第二错误检测单元610,耦接第一错误校正单元164 (包括图6的错误多项式计算单元604、 秦式搜寻单元606、以及控制电路608),其对第一错误校正单元164输出的校正后数据再进行一第二错误检测操作,产生该解码结果,其中该解码结果用以表示第一错误校正单元164 输出的校正后数据是否有错误。若无错误,则表示校正成功,则控制电路608将校正后数据储存至储存单元140以供主机host (未绘示)读取。若有错误,则表示校正失败,第二错误检测单元610将该解码结果至仲裁模块120,表示第一层的错误校正操作校正失败。在本实施例中,第二错误检测单元610是对第一错误校正单元164输出的校正后数据进行检错,而非对原始的输入数据进行检错,此外,其是将第二错误检测单元610的检错结果作为解码结果送至仲裁模块120,并非将deCOde_fail信号作为解码结果送至仲裁模块120。综上所述,依据本发明的存储器模块的错误检查及校正系统提供两层错误校正结构,两层错误校正各自具有不同的数据容错能力(例如第一层错误校正最多可纠正IK字节中发生的6位的错误,而第二层错误校正最多可纠正IK字节中的36/60位的错误),其中存储器模块中每个存储器单元有自己的具有较小容错数量的第一层错误校正,而多个存储器单元共用一个具有较大容错数量的第二层错误校正,可在保持系统效能的要求下有效减少硬件成本。此外,本发明的仲裁模块可依据共用的各个存储器单元的第一层错误校正错误操作校正是否出错来选择性启动第二层错误校正,由于发生较小位的错误的机率占大多数,且只有在发现第一层错误校正操作校正出错时才会启动第二层错误校正,因此可提供更佳的错误校正效能。再者,依据本发明的存储器模块的错误校正系统可通过一配置寄存器来选择开启/关闭第二层错误校正功能,提高使用上的弹性应用。本发明的方法,或特定型态或其部份,可以以程序码的型态包含于实体媒体,如软盘、光盘片、硬盘、或是任何其他机器可读取(如计算机可读取)储存媒体,其中,当程序码被机器,如计算机载入且执行时,此机器变成用以参与本发明的装置。本发明的方法与装置也可以以程序码型态通过一些传送媒体,如电线或电缆、光纤、或是任何传输型态进行传送,其中,当程序码被机器,如计算机接收、载入且执行时,此机器变成用以参与本发明的装置。当在一般用途处理器实作时,程序码结合处理器提供一操作类似于应用特定逻辑电路的独特装置。本发明虽以各种实施例揭示如上,然而其仅为范例参考而非用以限定本发明的范围,本领域的技术人员,在不脱离本发明的精神和范围的前提下,当可做若干的更动与润饰。因此上述实施例并非用以限定本发明的范围,本发明的保护范围是以本发明的权利要求为准。
权利要求
1.一种存储器模块的错误检查与校正方法,该存储器模块包括至少一存储器单元,包括下列步骤接收来自该存储器单元的一输入数据;通过一第一校正模块对该输入数据执行一第一错误校正操作,并产生一解码结果,其中该解码结果用以表示是否解码失败;以及依据该解码结果,决定是否启动一第二校正模块对该输入数据执行一第二错误校正操作,其中该第一校正模块以及该第二校正模块分别采用一第一方法以及一第二方法且该第一方法是以一第一容错数量的错误校正码进行错误校正,该第二方法是以一第二容错数量的错误校正码进行错误校正,且该第二容错数量大于该第一容错数量。
2.如权利要求1所述的存储器模块的错误检查与校正方法,还包括下列步骤通过一错误检测单元对该输入数据进行一错误检测操作,产生一检错结果,其中该检错结果用以表示该输入数据是否有错误;以及于该检错结果表示该输入数据有错误时,通过该第一校正模块对该输入数据执行该第一错误校正操作。
3.如权利要求1所述的存储器模块的错误检查与校正方法,其中该依据该解码结果, 决定是否启动该第二校正模块对该输入数据执行该第二错误校正操作的步骤还包括当该解码结果表示解码成功时,不启动该第二校正模块执行该第二错误校正操作;以及当该解码结果表示解码失败时,启动该第二校正模块对该输入数据执行该第二错误校正操作。
4.如权利要求1所述的存储器模块的错误检查与校正方法,其中该至少一存储器单元包括一第一存储器单元以及一第二存储器单元,且该依据该解码结果,决定是否启动该第二校正模块对该输入数据执行该第二错误校正操作的步骤还包括于该第一存储器单元以及该第二存储器单元的其中任一个的该解码结果表示解码失败时,启动该第二校正模块执行该第二错误校正操作。
5.如权利要求4所述的存储器模块的错误检查与校正方法,其中当该第一存储器单元的该解码结果以及该第二存储器单元的该解码结果均表示解码失败时,该第一存储器单元以及该第二存储器单元是以一轮询方式依序通过该第二校正模块执行该第二错误校正操作。
6.如权利要求4所述的存储器模块的错误检查与校正方法,其中该第一存储器单元以及该第二存储器单元分别包括一优先权,并且该第一存储器单元以及该第二存储器单元依据所述优先权依序通过该第二校正模块执行该第二错误校正操作。
7.如权利要求1所述的存储器模块的错误检查与校正方法,还包括 接收欲写入至该存储器单元的一数据;分别通过一第一编码法以及一第二编码法,依据该数据产生相应对应于该第一方法以及该第二方法的一第一同位数据以及一第二同位数据;依据该数据、该第一同位数据以及该第二同位数据,产生一编码数据;以及将该编码数据写入至该存储器单元。
8.如权利要求1所述的存储器模块的错误检查与校正方法,还包括提供一寄存器,用以设定是否允许启动该第二校正模块执行该第二错误校正操作。
9.如权利要求1所述的存储器模块的错误检查与校正方法,其中该存储器单元为一快闪存储器芯片。
10.一种存储器模块的错误检查与校正系统,其中该存储器模块包括多个存储器单元, 包括多个第一校正模块对应耦接至所述存储器单元,每一所述第一校正模块对应所述存储器单元的其中一个且用以接收该对应存储器单元的一输入数据并对该输入数据执行一第一错误校正操作,并产生一解码结果;一第二校正模块,用以于被启动时执行一第二错误校正操作,其中该第一校正模块是以一第一容错数量的错误校正码进行错误校正,该第二校正模块是以一第二容错数量的错误校正码进行错误校正且该第二容错数量大于该第一容错数量;以及一仲裁模块,耦接于所述第一校正模块以及该第二校正模块之间,其中该仲裁模块是依据所述第一校正模块产生的所述解码结果决定是否启动该第二校正模块,其中该仲裁模块是于所述解码结果的任一个表示解码失败时,启动该第二校正模块以对该输入数据执行该第二错误校正操作。
11.如权利要求10所述的存储器模块的错误检查与校正系统,其中该第一校正模块还包括一第一错误检测单元,用以于一数据读取操作时,对该输入数据进行一第一错误检测操作,产生一第一检错结果,其中该第一检错结果用以表示该输入数据是否有错误;以及一第一错误校正单元,耦接至该第一错误检测单元,用以于该第一检错结果表示该输入数据有错误时,执行该第一错误校正操作,并产生该解码结果至该仲裁器。
12.如权利要求10所述的存储器模块的错误检查与校正系统,其中该第一校正模块还包括一第一错误检测单元,用以于一数据读取操作时,对该输入数据进行一第一错误检测操作,产生一检错结果,其中该检错结果用以表示该输入数据是否有错误;以及一第一错误校正单元,耦接至该第一错误检测单元,用以于该检错结果表示该输入数据有错误时,执行该第一错误校正操作,并输出一校正后数据;以及一第二错误检测单元,耦接至该第一错误校正单元,对该校正后数据再进行一第二错误检测操作,产生该解码结果至该仲裁器。
13.如权利要求10所述的存储器模块的错误检查与校正系统,其中该第一校正模块还包括一编码器,其具有一第一编码单元及一第二编码单元,用以于一数据写入操作时,接收欲写入至一存储器单元的一数据,其中该第一编码单元以及该第二编码单元依据该数据分别产生相应对应于该第一容错数量的错误校正码以及该第二容错数量的错误校正码的一第一同位数据以及一第二同位数据,该编码器依据该数据、该第一同位数据以及该第二同位数据,产生一已编码数据,并将该已编码数据写入至该存储器单元。
14.如权利要求10所述的存储器模块的错误检查与校正系统,其中该第二校正模块还包括一第二错误校正单元,用以于所述解码结果的任一个表示解码失败时时,执行该第二错误校正操作。
15.如权利要求14所述的存储器模块的错误检查与校正系统,其中该第二校正模块还包括一第二错误检测单元,耦接至该第二错误校正单元,用以于一数据读取操作时,对该输入数据进行一第二错误检测操作,产生一第二检错结果,其中该第二检错结果用以表示该输入数据是否有错误。
16.如权利要求10所述的存储器模块的错误检查与校正系统,其中所述存储器单元至少包括一第一存储器单元以及一第二存储器单元且当该第一存储器单元的该解码结果以及该第二存储器单元的该解码结果均表示解码失败时,该仲裁器是以一轮询方式依序对该第一存储器单元以及该第二存储器单元执行该第二错误校正操作。
17.如权利要求16所述的存储器模块的错误检查与校正系统,其中该第一存储器单元以及该第二存储器单元分别包括一优先权,并且该仲裁器依据所述优先权依序对该第一存储器单元以及该第二存储器单元执行该第二错误校正操作。
18.如权利要求10所述的存储器模块的错误检查与校正系统,还包括一寄存器,用以设定是否允许启动该第二校正模块执行该第二错误校正操作。
19.如权利要求10所述的存储器模块的错误检查与校正系统,其中所述存储器单元分别为一快闪存储器芯片,该存储器模块由多个快闪存储器芯片构成。
全文摘要
本发明提供了一种存储器模块的错误检查与校正系统以及方法。对于该存储器模块的错误检查与校正方法,该存储器模块包括至少一存储器单元,该方法包括以下流程步骤接收来自该存储器单元的一输入数据;通过一第一校正模块对该输入数据执行一第一错误校正操作并产生一解码结果,其中该解码结果用以表示是否解码失败;以及依据该解码结果,决定是否启动一第二校正模块对该输入数据执行一第二错误校正操作。其中,该第一校正模块以及该第二校正模块分别采用一第一方法以及一第二方法且该第一方法是以一第一容错数量的错误校正码进行错误校正,该第二方法是以一第二容错数量的错误校正码进行错误校正,且该第二容错数量大于该第一容错数量。
文档编号G06F11/10GK102567134SQ20121000392
公开日2012年7月11日 申请日期2012年1月6日 优先权日2012年1月6日
发明者沈力, 王为, 董一鸣, 钟戟 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1