CN101308706B - 适用于闪存的数据写入方法及错误修正编解码方法 - Google Patents

适用于闪存的数据写入方法及错误修正编解码方法 Download PDF

Info

Publication number
CN101308706B
CN101308706B CN200710103472XA CN200710103472A CN101308706B CN 101308706 B CN101308706 B CN 101308706B CN 200710103472X A CN200710103472X A CN 200710103472XA CN 200710103472 A CN200710103472 A CN 200710103472A CN 101308706 B CN101308706 B CN 101308706B
Authority
CN
China
Prior art keywords
data
code
information
flash memory
block
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
CN200710103472XA
Other languages
English (en)
Other versions
CN101308706A (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.)
Realtek Semiconductor Corp
Original Assignee
Realtek Semiconductor Corp
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 Realtek Semiconductor Corp filed Critical Realtek Semiconductor Corp
Priority to CN200710103472XA priority Critical patent/CN101308706B/zh
Publication of CN101308706A publication Critical patent/CN101308706A/zh
Application granted granted Critical
Publication of CN101308706B publication Critical patent/CN101308706B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)

Abstract

本发明披露一种适用于闪存的数据写入方法及其错误修正编解码方法。在此数据写入方法的一实施例中,使用一6位错误修正码对一数据进行编码,其中该6位错误修正码采用由加洛瓦场GF(29)所产生的里德所罗门码(Reed-Solomon code),藉此以产生一存储空间较小的冗余码信息。而在错误修正编解码方法的一实施例中,是以一与数据存储区及参数信息存储区的多个位皆为「0xff」的状态相关的抹除判断值来提高数据存储的安全性。

Description

适用于闪存的数据写入方法及错误修正编解码方法
技术领域
本发明有关于一种适用于闪存的数据写入方法及其错误修正编解码方法,特别是关于可兼顾提高数据安全性及减少冗余码的存储空间的数据写入方法及其错误修正编解码方法。 
背景技术
目前,闪存(Flash memory)已是十分普遍的随身数据存储装置。然而,由于偶发性的电子噪声(occasional electrical noise)或在工作周期间,此闪存的材料本身特性无法高速地被存取信息,使得逻辑存储器细胞存储的0或1信息位出现随机(random)、非重复性(non-repetitive)的信息位排列,而导致错误位发生。为了保护在逻辑存储器细胞所存储的0或1信息位的正确性,通常会加入一些位作为检查码,以从多个位中找出其中错误,并且将错误的位并予以更正,此种位保护机制称之为错误修正码(error correctingcode,ECC)检查。 
请参阅图1A及图1B其显示现有技艺的闪存的数据结构的示意图。图1A中,闪存1包含多个区块(block)11,且每一区块11包含多个分页(Page)12,而每一分页至少包含一区段(sector,亦称之为mini Page)13,区段13至少一数据存储区(data area)131及一备用存储区(space area)132。因标准的整合电子式驱动接口(Integrated Device Electronic,IDE-ATA)接口的传输最小单位为512字节(byte),因此数据存储区的存储空间一般为512字节,而备用存储区的存储空间为16字节。 
请续参阅图1B,其显示现有技艺的备用存储区132的信息存储结构的示意图。图中,备用存储区132包含一存储器损坏信息141、一错误修正码检查信息142、一逻辑区块地址信息(logic block address,LBA)143、一分离区块逻辑区段地址信息(split blockl ogic sector address,SBLSA)144及一错误修正码(error correct code,ECC)的冗余码信息(redundant)145。
上述提及的错误修正码大致可分为两类:一是区块码(Block Code)及另一是回旋码(Convolution Code)。所谓的区块码是将数据分成一个固定大小的区块来传送,其编码方法是对原始数据增加上冗余码信息,然后解码端在根据冗余码信息来作校正错误的动作。其中,区块码最常使用循环码分别为里德所罗门码(Reed-Solomon Code,RS)以及BCH(Bose ChaudhuriHocquengham)码。里德所罗门码的编解码均在有限场(Finite Field)GF(2m)中,m是正整数,有限场亦称为加洛瓦场(Galois Field,GF)。在此,里德所罗门码的编解码技术为此技术领域的工作者所熟知,在此不再赘述。 
当闪存以4位错误修正码进行编码,且所采用的里德所罗门码在GF(210)上时,产生的冗余码信息需要的存储空间为80位(10字节),即80=2×4×10。因此,在图1B所示的备用存储区132中,10字节保留为冗余码信息145的存储空间,其余6字节用以存储其它信息,存储器损坏信息141的存储空间为1字节,可包含一损坏区块信息(bad block,BS)及一损坏分页信息(badpage,PS),损坏区块信息用以标示此区块是否为一损坏区块,而损坏分页信息用以标示此分页是否为一损坏分页。错误修正码检查信息142的存储空间为1字节,用以标示是否须进行错误修正码确认。逻辑区块地址信息143的存储空间为2字节。分离区块逻辑区段地址信息144的存储空间为2字节。 
随着数据保护机制越来越受重视,用更高位错误修正码来进行编码是闪存的设计趋势,然而,若使用更高位错误修正码进行编码,例如6位错误修正码,且所采用的里德所罗门码在GF(210)上时,则产生的冗余码信息需要120位(15字节)的存储空间,120=2×6×10,而无法储入图1B所示的信息存储结构中。目前制造商根据现有的闪存结构通常都会为每一闪存配置有一定数量的额外存储空间,但由于这些额外的存储空间有限,无法扩增存储空间。因此,如何使闪存存储系统使用有限的存储空间来获取较佳的正确信息位亦是迫切需要的。 
在现有技艺中,在信息存储结构里存储错误修正码检查信息142来标示此区段已写入数据或此区段为抹除后的区段。然而,存储错误修正码检查信息142需要一额外的空间,且位错误现象亦有可能发生在存储错误修正码检查信息的位,而造成解码过程的误判。因此,如何避免在闪存的区段进行解码时产生误判亦是迫切需要的。 
发明内容
因此本发明的目的为提供一适用于闪存的数据写入方法及其错误修正编解码方法,以在有限的存储器空间里提供安全性较好的数据保护机制。 
根据上述目的,本发明提供一种数据写入方法,用以将一数据写入一闪存的一区块的一区段,该区块由多个区段所组成,该数据包括多个字节数据(bytes),每一字节数据包含8个位,该方法包含:取得该区块的逻辑区块地址信息及一存储器损坏信息;调整该数据为多个编码组,每一编码组由9个位所组成;使用一6位错误修正码对该些编码组进行编码,以产生一冗余码信息,其中,该6位错误修正码采用由加洛瓦场GF(29)所产生的里德所罗门码(Reed-Solomon code);将该数据、该逻辑区块地址信息、该存储器损坏信息及该冗余码信息存储于该区段。 
藉由降低RS码的编解碼复杂度以减少冗余码的存储空间,而提高错误修正码的位数以提高数据安全性。 
此外,本发明更提供一适用于闪存的错误修正编码方法,用以对该闪存的一区块的一区段内所存储的数据进行编码,该区段包括一数据存储区、一参数信息存储区及一冗余码信息存储区,该编码方法包含:提供一抹除判断值,其与该数据存储区及该参数信息存储区的多个位皆为「0xff」的状态相关;取得欲存储于该数据存储区的一数据,使用该错误修正码对该数据进行编码,以产生一第二冗余码信息;将该第二冗余码信息与该抹除判断值进行一异或(XOR)逻辑运算,以产生一第三冗余码信息;将该数据及该第三冗余码信息分别存储于该数据存储区及该冗余码信息存储区。 
再者,本发明再提供一适用于闪存的错误修正编码方法,用以对该闪存的一区块的一区段内所存储的数据进行解码,该区段包括一数据存储区、一参数信息存储区及一冗余码信息存储区,该数据存储区存储一数据,该冗余码信息存储区存储一第一冗余码信息,该错误修正解码方法包含:提供一抹除判断数值,其与该数据存储区及该参数信息存储区的多个位皆为「0xff」的状态相关;对将该第一冗余码信息与该抹除判断数值进行一异或(XOR)逻辑运算,以产生一第三冗余码信息;将该数据及该第三冗余码信息分别存储在该数据存储区及该冗余码信息存储区。 
附图说明
为让本发明的上述和其它目的、特征、优点与实施例能更明显易懂,附图的详细说明如下: 
图1A及图1B其显示现有技艺的闪存的数据结构的示意图; 
图2示出了本发明一实施例的数据写入方法的步骤流程图; 
图3示出了本发明一实施例的闪存的区段的数据存储结构的示意图; 
图4A示出了本发明一实施例的错误修正编码方法的步骤流程图; 
图4B示出了本发明的抹除判断值的计算方法的步骤流程图;以及 
图5示出了本发明一实施例的错误修正解码方法的步骤流程图。 
附图符号说明 
1:闪存; 
11:区块; 
12:分页; 
13:区段; 
131:数据存储区; 
132:备用存储区; 
14:闪存; 
141:存储器损坏信息; 
142:错误修正码检查信息; 
143:逻辑区块地址信息; 
144:分离区块逻辑区段地址信息; 
145:冗余码信息; 
21-24:步骤流程; 
30:区段; 
301:数据存储区; 
302:前504个字节数据; 
303:其余的8个字节数据; 
304:备用存储区; 
305:参数信息存储区; 
306:冗余码信息存储区; 
312,313:调整后的数据; 
318:高位的位;
319:编码组; 
41-44:步骤流程; 
451-453:步骤流程;以及 
51-53:步骤流程。 
具体实施方式
以下详细地讨论目前较佳的实施例。然而应被理解的是,本发明提供许多可适用的发明观念,而这些观念能被体现在很宽广多样的特定具体背景中。所讨论的特定具体的实施例仅是说明使用本发明的特定结构,而且不会限制本发明的范围。 
请参阅图2及图3,图2示出了本发明一实施例的数据写入方法的步骤流程图,而图3示出了本发明一实施例的闪存的区段的数据存储结构的示意图。此方法用以将一数据写入一闪存的一区块的一区段,如图3所示,区段30包括一数据存储区301及一备用存储区304,数据存储区301的存储空间为512字节,而备用存区304的存储空间为16字节,每一字节数据309包含8个位,此方法包含下列步骤: 
步骤21:取得包含此区段的区块的逻辑区块地址信息及一存储器损坏信息; 
步骤22:将数据存储区301所存储的数据调整为多个编码组319,每一编码组319由9个位所组成;其中,前504个字节的数据302调整为448个编码组,如图3所示的数据312,而数据存储区301中其余的8个字节数据303则分别在高位318加入一位值为1的位,以形成8个编码组,如图3所示的数据313; 
步骤23:使用一6位错误修正码对数据312及数据313所包含的编码组进行编码,以产生一冗余码信息,其中此6位错误修正码采用由加洛瓦场GF(29)所产生的里德所罗门码(Reed-Solomon code);其中,此冗余码信息所需的存储空间为108位,亦即,108=2×6×9; 
步骤24:将数据存储在数据存储区301中,而将逻辑区块地址信息、存储器损坏信息及冗余码信息存储在备用存区303中。 
在此实施例中,备用存区303包含参数信息存储区305及冗余码信息存储区306,参数信息存储区305包括2字节而冗余码信息存储区306包括14 字节,冗余码信息存储区306用以存储冗余码信息,而参数信息存储区305中的10位用以存储逻辑区块地址信息,5位用以存储存储器损坏信息,而1位可用以存储分离区块逻辑区段地址信息或存储其它信息。 
此外,如为了加强数据安全性,在进行步骤32的调整动作时,亦可将存储在区域305的数据一起调整,并在进行步骤33的编码动作时,与数据312及数据313一起编码。 
对闪存的区段进行解码时,存储数据的区段包含下列三种状态: 
(1)此区段已写入数据,且数据可完成解码,可读出正确数据。 
(2)此区段已写入数据,然数据无法完成解码,无法顺利读出数据。 
(3)此区段为抹除(erase)后的区段,未写入数据。 
由于经过抹除后的存储器存储器储的数据全为「0xff」,若是以错误修正码对全为「0xff」的数据进行解码,则会发生解码错误,而容易造成状态(2)及状态(3)的误判。当区段被判断为状态(2)时,系统会将其视为坏轨,之后不再使用此区段来。在没有多余的空间可存储一用以标示状态(2)或状态(3)的数据的情况下,本发明提出一种错误修正编码方法,可不需存储多余的标示数据并避免状态(2)或状态(3)的误判。 
请参阅图4A,其显示本发明一实施例的错误修正编码方法的步骤流程图。此方法用以对闪存的一区块的一区段内所存储的数据进行编码,如图3所示,此区段包括一数据存储区301、一参数信息存储区305及一冗余码信息存储区306,此方法包含下列步骤: 
步骤41:提供一抹除判断值,其与该数据存储区及该参数信息存储区的多个位皆为「0xff」的状态相关; 
步骤42:取得欲存储在数据存储区301的一数据,使用上述的错误修正码对此数据进行编码,以产生一第二冗余码信息; 
步骤43:将第二冗余码信息与此抹除判断值进行一异或(XOR)逻辑运算,以产生一第三冗余码信息;以及 
步骤44:将数据及第三冗余码信息分别存储在数据存储区301及冗余码信息存储区306。 
请续参阅图4B,其绘示本发明的抹除判断值的计算方法的实施例。图中,此计算方法对应于图3,此计算方法包含下列步骤: 
步骤451:提供一与数据存储区301及参数信息存储区305的存储空间 大小相同的多个字节,并将此些字节设定为「0xff」; 
步骤452:使用一错误修正码(ECC)对此些字节进行编码,以产生一第一冗余码信息; 
步骤453:计算此第一冗余码信息的一补码(complement),以此补码作为此抹除判断值。 
在此计算方法中,抹除判断值仅与错误修正码、数据存储区及参数信息存储区的存储空间相关,因此,若上述条件不变的话,抹除判断值可先预先计算好,而执行错误修正编码方法时便使用此预先算好的抹除判断值来编码。若上述条件会变动的话,则每次进行错误修正编码方法时便执行步骤451到步骤453,以计算抹除判断值。 
如果要从闪存的一区块读取数据,必须先对区块内的数据进行错误修正码解码程序,方能确定数据的正确性。如果此区块为一抹除区块,则区块内的数据皆为「0xff」,若以此数据进行错误修正码解码程序,会造成解码失败,造成上述状态(2)或状态(3)的误判。以下便是本发明所提出可避免此种情况的方法。 
请参阅图5,其显示本发明一实施例的错误修正解码方法的步骤流程图。此方法用以对闪存的一区块的一区段内所存储的数据进行解码,如图3所示,区段3包括一数据存储区301、一参数信息存储区305及一冗余码信息存储区306,数据存储区301存储一数据,而冗余码信息存储区306存储一第四冗余码信息。此方法包含下列步骤: 
步骤51:提供一抹除判断数值,其与数据存储区301及参数信息存储区305的多个位皆为「0xff」的状态相关; 
步骤52:对将第四冗余码信息与抹除判断数值进行一异或(XOR)逻辑运算,以产生一第五冗余码信息;以及 
步骤53:根据第五冗余码信息对存储在数据存储区301的数据进行一错误修正码解码程序。 
其中,抹除判断数值可使用图4B所示的计算方法来计算出。在此计算方法中,抹除判断值仅与错误修正码、数据存储区及参数信息存储区的存储空间相关,因此,若上述条件不变的话,抹除判断值可先预先计算好,而执行错误修正解码方法时便使用此预先算好的抹除判断值来编码。若上述条件会变动的话,则每次进行错误修正解码方法时便执行步骤451到步骤453,以 计算抹除判断值。 
在上述解码过程中,若数据存储区301及参数信息存储区305里存储的是真正经过编码的数据以其编码所产生的冗余码信息,由于编码时这些数据已经与抹除判断数值进行过一次XOR运算,因此在步骤52时再经过一次XOR运算会得到原始的已编码的数据以其编码所产生的冗余码信息,其可完成步骤53所执行的一错误修正码解码程序。 
若在解码时,数据存储区301及参数信息存储区305里存储的全是「0xff」,经过步骤52处理后,经处理的数据存储区301及参数信息存储区305里的数据便可完成错误修正码解码程序,且解码出来的数据全为「0xff」,固可以判断此区段为抹除后的区段。藉由上述错误修正编解码方法,参数信息存储区305中便不需再存储一错误修正码检查信息,可减少所需的存储空间。 
上述闪存可为多级单元(Multi Level Cell,MLC)及单级单元(SingleLevel Cell,SLC)两种其中之一。 
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟习此技艺者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰,因此本发明的保护范围当视本发明申请专利范围所界定者为准。

Claims (4)

1.一种数据写入方法,用以将一数据写入一闪存的一区块的一区段,该数据包括多个字节数据,每一字节数据包含8个位,该数据写入方法包含:
取得该区块的逻辑区块地址信息及一存储器损坏信息;
调整该数据为多个编码组,每一编码组由9个位所组成;
使用一6位错误修正码对该些编码组进行编码,以产生一冗余码信息,
其中,该6位错误修正码采用由加洛瓦场GF(29)所产生的里德所罗门码;
将该数据、该逻辑区块地址信息、该存储器损坏信息及该冗余码信息存储于该区段;
其中,该数据包括512字节数据,并且该调整的步骤是将该数据的前504个字节数据分为448个编码组,而其余8个字节数据分别在高位加入一位值为1的位,以形成8个编码组。
2.如权利要求1所述的数据写入方法,其中,该闪存是多级单元及单级单元两种其中之一。
3.如权利要求1所述的数据写入方法,其中,该调整的步骤更包含将该逻辑区块地址信息及该存储器损坏信息与该数据一起调整。
4.如权利要求1所述的数据写入方法,其中,该冗余码信息所需的存储空间为108位。
CN200710103472XA 2007-05-18 2007-05-18 适用于闪存的数据写入方法及错误修正编解码方法 Active CN101308706B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200710103472XA CN101308706B (zh) 2007-05-18 2007-05-18 适用于闪存的数据写入方法及错误修正编解码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200710103472XA CN101308706B (zh) 2007-05-18 2007-05-18 适用于闪存的数据写入方法及错误修正编解码方法

Publications (2)

Publication Number Publication Date
CN101308706A CN101308706A (zh) 2008-11-19
CN101308706B true CN101308706B (zh) 2012-01-04

Family

ID=40125090

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710103472XA Active CN101308706B (zh) 2007-05-18 2007-05-18 适用于闪存的数据写入方法及错误修正编解码方法

Country Status (1)

Country Link
CN (1) CN101308706B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11611359B2 (en) 2015-05-29 2023-03-21 SK Hynix Inc. Data storage device
US11177835B2 (en) 2015-09-25 2021-11-16 SK Hynix Inc. Data storage device
US11515897B2 (en) 2015-05-29 2022-11-29 SK Hynix Inc. Data storage device
US10396827B2 (en) 2015-09-25 2019-08-27 SK Hynix Inc. Data storage device
KR102347418B1 (ko) * 2015-09-25 2022-01-06 에스케이하이닉스 주식회사 데이터 처리 장치 및 그것의 동작 방법
KR102285940B1 (ko) 2015-05-29 2021-08-05 에스케이하이닉스 주식회사 데이터 처리 회로, 데이터 처리 회로를 포함하는 데이터 저장 장치 및 그것의 동작 방법
CN107562563B (zh) * 2016-07-01 2021-06-15 龙芯中科技术股份有限公司 Nand Flash控制方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951708A (en) * 1995-05-30 1999-09-14 Mitsubishi Denki Kabushiki Kaisha Error correction coding and decoding method, and circuit using said method
CN1518696A (zh) * 2001-06-21 2004-08-04 皇家菲利浦电子有限公司 存储器错误处理方法与电路配置
CN1849750A (zh) * 2004-01-15 2006-10-18 桑德布里奇技术公司 里得-所罗门编码和解码方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951708A (en) * 1995-05-30 1999-09-14 Mitsubishi Denki Kabushiki Kaisha Error correction coding and decoding method, and circuit using said method
CN1518696A (zh) * 2001-06-21 2004-08-04 皇家菲利浦电子有限公司 存储器错误处理方法与电路配置
CN1849750A (zh) * 2004-01-15 2006-10-18 桑德布里奇技术公司 里得-所罗门编码和解码方法

Also Published As

Publication number Publication date
CN101308706A (zh) 2008-11-19

Similar Documents

Publication Publication Date Title
CN102656566B (zh) 固态存储系统中的数据管理
US8239725B2 (en) Data storage with an outer block code and a stream-based inner code
CN101308706B (zh) 适用于闪存的数据写入方法及错误修正编解码方法
TWI527037B (zh) 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
TWI407446B (zh) 記憶體裝置內錯誤更正的動態資料儲存系統及方法
TWI385666B (zh) 適用於快閃記憶體之資料結構、及其資料寫入方法及資料讀取方法
US8055983B2 (en) Data writing method for flash memory and error correction encoding/decoding method thereof
CN102394114B (zh) 具有自适应纠错能力的bch码纠错方法
CN102760099B (zh) 数据写入方法、存储器控制器与存储器储存装置
CN100458718C (zh) 一种闪存存储装置及其数据读取和写入方法
CN102099793A (zh) 根据固态存储器的擦除计数进行误差校正的方法和装置
TW201346923A (zh) 使用單一錯誤偵測奇偶校驗的抹除修正
WO2009156870A1 (en) Method and apparatus for error correction
CN109857584B (zh) 于记忆装置进行访问控制的方法、记忆装置和其控制器
CN103631670A (zh) 存储器储存装置、存储器控制器与数据处理方法
CN101308702B (zh) 适用于闪存的数据结构及其数据写入方法和数据读取方法
US8463982B2 (en) Method of storing and accessing error correcting code in NAND flash
CN104252317B (zh) 数据写入方法、存储器控制器与存储器存储装置
TW202016940A (zh) 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置
CN102063342A (zh) 一种闪存存储设备数据的管理方法及系统
CN109426582A (zh) 用于存储装置为错误处置进行数据处理的方法及控制器
CN112051963B (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
CN102591737A (zh) 数据写入与读取方法、存储器控制器与存储器储存装置
CN113094307B (zh) 映射信息管理方法、存储器存储装置及存储器控制器
CN101566969A (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