CN101308702B - 适用于闪存的数据结构及其数据写入方法和数据读取方法 - Google Patents
适用于闪存的数据结构及其数据写入方法和数据读取方法 Download PDFInfo
- Publication number
- CN101308702B CN101308702B CN2007101034715A CN200710103471A CN101308702B CN 101308702 B CN101308702 B CN 101308702B CN 2007101034715 A CN2007101034715 A CN 2007101034715A CN 200710103471 A CN200710103471 A CN 200710103471A CN 101308702 B CN101308702 B CN 101308702B
- Authority
- CN
- China
- Prior art keywords
- data
- information
- section
- flash memory
- redundanat
- 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
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明披露了一种适用于闪存的数据结构、及其数据写入方法及数据读取方法,用以在闪存的一区块(block)的连续地址的第一区段(sector)及第二区段里,分别储存512字节的数据及该数据经过6位错误修正码(ECC)编码所产生的冗余码信息。而此区块的逻辑区块地址信息分为两部分,并分别储存于第一区段及第二区段。
Description
技术领域
本发明涉及一种适用于闪存的数据结构、及其数据写入方法及数据读取方法,特别是涉及可包含6位ECC的冗余码信息的数据结构、及其数据写入方法及数据读取方法。
背景技术
目前,闪存(Flash memory)已是十分普遍的随身数据储存装置。然而,由于偶发性的电子噪声(occasional electrical noise)或在工作周期间,此闪存的材料本身特性无法高速地被存取信息,使得逻辑内存单元储存的0或1信息位出现随机(random)、非重复性(non-repetitive)的信息位排列,而导致错误位发生。为了保护在逻辑内存单元所储存的0或1信息位的正确性,通常会加入一些位作为检查码,以从多个位中找出其中错误,并且将错误的位并予以更正,此种位保护机制称的错误修正码(error control code,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、一逻辑区块地址信息(1ogic block address,LBA)143、一分裂区块逻辑区段地址信息(split block logic sector address,SBLSA)144及一错误控制码(error control code,ECC)的冗余码信息(redundant)145。其中,内存损坏信息141的储存空间为1字节,可包含一损坏区块信息(bad block,BS)及一损坏分页信息(bad page,PS),损坏区块信息用以标示此区块是否为一损坏区块,而损坏分页信息用以标示此分页是否为一损坏分页。错误修正码检查信息142的储存空间为1字节,用以标示是否须进行错误控制码确认。逻辑区块地址信息143的储存空间为2字节。分裂区块逻辑区段地址信息144的储存空间为2字节。冗余码信息145的储存空间为10字节。
现有的闪存大多以4位错误控制码进行编码,所产生的冗余码信息需要10字节的储存空间,因此可储入图1b所示的信息储存结构中。随着数据保护机制越来越受重视,用更高位错误控制码来进行编码是闪存的设计趋势,然而,若使用6位错误控制码进行编码,则产生的冗余码信息需要15字节的储存空间,无法储入图1b所示的信息储存结构中。目前制造商根据现有的闪存结构通常都会为每一闪存配置有一定数量的额外储存空间,但由于这些额外的储存空间有限,无法扩增储存空间。因此,如何使闪存储存还包含统使用有限的储存空间来获取较佳的正确信息位元亦是迫切需要的。
发明内容
因此本发明的目的为提供一适用于闪存的数据结构、及其数据写入方法及数据读取方法,以在有限的内存空间里提供安全性较好的数据保护机制。
根据的上述目的,本发明提供一种数据结构及其数据写入方法,用以在闪存的一区块(block)的连续地址的第一区段(sector)及第二区段里,分别储存512字节的数据及此些数据经过6位错误修正码(ECC)编码所产生的冗余码信息。而此区块的逻辑区块地址信息分为两部分,并分别储存于第一区段及第二区段。
此外,本发明还提供一数据读取方法,适用于一闪存的一区段,该区段包括一数据、一错误修正码检查信息及一冗余码信息,该方法包含下列步骤:根据该冗余码信息对该数据进行一错误修正码译码程序;判断该错误修正码译码程序是否完成,若是,则输出该已经过错误修正码译码程序的数据;若否,则判断该数据中,储存值为一默认值的字节的数目是否高于一阈值,若是,则判定该区段为抹除后(erase)的区段;若否,则根据错误修正码检查信息以判断该区段是发生不可纠正的错误或是该区段为一抹除后的区段。
附图说明
为使本发明的上述和其它目的、特征、优点与实施例能更明显易懂,附图的详细说明如下:
图1a及图1b其显示现有技术的闪存的数据结构的示意图;
图2其显示本发明一实施例的闪存的数据结构的示意图;
图3其显示本发明一实施例的数据写入方法的步骤流程图;
图4其显示本发明一实施例的数据写入方法的步骤流程图;
图5其显示一具有分裂区结构的闪存的示意图;以及
图6其显示本发明的数据结构应用于分裂区架构的操作过程的步骤流程图。
附图符号说明
1:闪存;
11:区块;
12:分页;
13:区段;
131:数据储存区;
132:备用储存区;
14:闪存;
141:内存损坏信息;
142:错误修正码检查信息;
143:逻辑区块地址信息;
144:分裂区块逻辑区段地址信息;
145:冗余码信息;
201,202:区段;
21,23:数据储存区;
22:第一备用储存区;
221:损坏分页信息;
222:错误修正码检查信息;
223:损坏区块信息;
224:第一部分逻辑区块地址信息;
225:冗余码信息;
24:第二备用储存区;
241:损坏分页信息;
242:错误修正码检查讯;
244:第二部分逻辑区块位址信息;
245:冗余码信息;
30~35:步骤流程;
40~46:步骤流程;
5:具有分裂区架构的闪存;
51:第一区块;
52:第二区块;以及
60~65:步骤流程。
具体实施方式
以下详细地讨论目前较佳的实施例。然而应被理解的是,本发明提供许多可适用的发明观念,而这些观念能被体现于很宽广多样的特定具体背景中。所讨论的特定具体的实施例仅是说明使用本发明的特定结构,而且不会限制本发明的范围。
请参阅图2,其显示本发明一实施例的适用于闪存的数据结构的示意图。图中,区段(sector)201及区段202为两个相邻的区段,区段201包含一数据储存区21及一第一备用储存区22,而区段202包含一数据储存区23及一第二备用储存区24。数据储存区21及数据储存区23的储存空间为512字节,而第一备用储存区22及第二备用储存区24的储存空间为16字节。由于使用6位错误控制码进行编码时,所产生的冗余码信息需要15字节的储存空间,因此第一备用储存区22及第二备用储存区24存入冗余码信息后便分别只剩下1字节的空间来储存其余信息,因此,本发明便将此些其余信息分存在相邻的两区段里。
第一备用储存区22用以储存一1位的损坏分页信息221、一1位的错误修正码检查信息222、一1位的损坏区块信息223、一5位的第一部分逻辑区块地址信息224及15字节的冗余码信息225。第二备用储存区22用以储存一1位的损坏分页信息241、一1位的错误修正码检查讯242、一6位的第二部分逻辑区块位址信息244及15字节的冗余码信息245。将第一部分逻辑区块地址信息224及第二部分逻辑区块地址信息244组合便可取得一完整的逻辑区块地址信息。冗余码信息225及冗余码信息245为使用6位错误控制码进行编码所产生的冗余码信息。
请参阅图3,其显示本发明一实施例的数据写入方法的步骤流程图。此方法用于在闪存的一区块写入数据,包含下列步骤:
步骤30:接收储存空间为512字节的第一数据及一第二数据;
步骤31:使用6位错误控制码对第一数据及一第二数据进行编码,以产生15字节的第一冗余码信息及第二冗余码信息;
步骤32:选择两个连续的第一区段及第二区段,并取得包含此两区块的分页及区块的损坏信息,并分别设定两区段的错误修正码检查讯息;
步骤33:将此区块的逻辑区块地址信息分为一5位的第一部份逻辑区块地址信息及一6位的第二逻辑区块地址信息;
步骤34:将第一数据、第一冗余码信息、第一逻辑区块地址信息、分页损坏讯息、区块损坏讯息及错误修正码检查讯息,依照图2所示的区段201的结构,存入第一区段;
步骤35:将第二数据、第二冗余码信息、第二逻辑区块地址信息、分页损坏讯息及错误修正码检查讯息,依照图2所示的区段202的结构,存入第二区段。
自闪存读取数据时,储存数据的区段(sector)包含下列三种状态:
(1)此区段已写入数据,且数据可完成译码,可顺利读出。
(2)此区段已写入数据,但数据无法完成译码,无法顺利读出。
(3)此区段为抹除(erase)后的区段,未写入数据。
一般而言,可通过区段所储存的错误修正码检查讯息来判断此区段是否已写入数据,再使用冗余码信息进行译码来判断此区段所储存的数据是否正常。然而,本发明的数据结构中仅以1位来储存错误修正码检查讯息,位错误现象极有可能发生在储存错误修正码检查讯息的位,因此,仅依赖错误修正码检查讯息容易造成错误判断。而本发明所提出的数据读取方法可减少错误判断的可能性。
请参阅图4,显示本发明一实施例的数据读取方法的步骤流程图,此方法包含:
步骤40:读取一区段所储存的数据及冗余码信息,并根据此冗余码信息对此数据进行ECC译码,以侦错及修正此数据;
步骤41:判断ECC译码是否完成,若是,则执行步骤42,若否,则执行步骤43;其中,在进行ECC译码的过程中,若侦测到的位错误数超过ECC所能修正的位错误数,则视为ECC译码无法完成;
步骤42:输出修正后的数据;
步骤43:估算此数据中,储存值为”0xff”的字节的数目是否超过一默认值,若是,执行步骤44,若否,则执行步骤45;
步骤44:判定此区段为抹除(erase)后的区段;
步骤45:根据此区段所储存的错误修正码检查讯息是否须进行ECC译码,若是,则执行步骤46,若否,则执行步骤44;
步骤46:判定此区块是发生不可纠正的错误。
上述闪存可为多级单元(Multi Level Cell,MLC)及单级单元(Single LevelCell,SLC)两种其中的一个。
请参阅图5,其显示一具有分裂区(split block)结构的闪存的示意图。图中,闪存5为一具有分裂区架构的闪存,其包含第一区块51及第二区块52,其中第二区块52作为一数据缓冲区。当有数据欲写入第一区块51时,此数据会先写入第二区块52,直到第二区块52写满了,第二区块52内的数据才被逐笔写入第一区块51中。由于闪存的特性,使用分裂区架构可使数据写入的速度较快。例如,在图5中,使用还包含要依序在第11分页、第32分页及第2分页写入数据,则在分裂区架构下,第11分页、第32分页及第2分页的写入数据会先储存于第二区块52,直到第二区块52满了,才将第11分页、第32分页及第2分页的写入数据依照分页位置的顺序写入第一区块51。
由于在分裂区架构下,储存在第二区块52的分页数据里必须额外纪录此数据欲储存在第一区块51的位置信息,因此暂储在第二区块52的分页数据不适合以6位错误控制码进行编码。
请续参阅图6,其显示本发明的数据结构应用于分裂区(split block)架构的操作过程的步骤流程图。图中,此操作过程对应图5的闪存5,其包含下列步骤:
步骤60:接收一欲写入第一区块51的数据;
步骤61:使用4位错误控制码对此数据进行编码时,将已编码的数据、所产生的冗余码信息以及欲储存于第一区块51的位置信息及相关参数储存于第二区块52;
步骤62:判断第二区块52是否已经写满,若是,则执行步骤63,若否,则执行步骤60;
步骤63:依序自第二区块52读取一未处理的分页数据,并以根据分页数据中的冗余码信息对已编码数据进行ECC译码,侦错及修正此数据;
步骤64:使用6位错误控制码对此数据进行编码时,将已编码的数据、所产生的冗余码信息以及相关参数以图2所示的数据结构,根据欲储存的位置信息储存于第一区块51;
步骤65:判断是否已处理完第二区块52内的数据,若是,则结束此流程,若否,则执行步骤63。
虽然本发明已以较佳实施例披露如上,然其并非用以限定本发明,本领域的技术人员在不脱离本发明的精神和范围的前提下可作各种的更动与润饰,因此本发明的保护范围以本发明的权利要求为准。
Claims (20)
1.一种闪存装置,包含:
位于一区块的连续地址的第一区段及第二区段;
一第一数据储存区,配置于该第一区段,用以储存一第一数据;
一第二数据储存区,配置于该第二区段,用以储存一第二数据;
一第一备用储存区,配置于该第一区段,用以储存一第一部分逻辑区块地址信息及一第一冗余码信息;以及
一第二备用储存区,配置于该第二区段,用以储存一第二部分逻辑区块位址信息及一第二冗余码信息;
其中,该第一部分逻辑区块地址信息及该第二部分逻辑区块地址信息可组合成该区块的逻辑区块地址信息,而该第一冗余码信息及该第二冗余码信息分别由该第一数据及该第二数据经过6位错误修正码编码所产生。
2.如权利要求1所述的闪存装置,其中该闪存是多级单元及单级单元两种其中的一个。
3.如权利要求1所述的闪存装置,其中该第一备用储存区及该第二备用储存区的储存空间为16字节。
4.如权利要求1所述的闪存装置,其中所述闪存装置中还包含一损坏区块信息,该损坏区块信息配置于该第一区段。
5.如权利要求4所述的闪存装置,其中该损坏区块信息以1位储存。
6.如权利要求1所述的闪存装置,其中该第一冗余码信息及该第二冗余码信息所需的储存空间皆为15字节。
7.如权利要求1所述的闪存装置,其中所述闪存装置中还包含一第一损坏分页信息及一第二损坏分页信息,该第一损坏分页信息配置于该第一区段,而该第二损坏分页信息配置于该第二区段。
8.如权利要求1所述的闪存装置,其中所述闪存装置中还包含一第一错误修正码检查信息及一第二错误修正码检查信息,该第一错误修正码检查信息配置于该第一区段,而该第二错误修正码检查信息配置于该第二区段。
9.如权利要求8所述的闪存装置,其中该第一错误修正码检查信息及一第二错误修正码检查信息分别以1位储存。
10.一种数据写入方法,用以将一第一数据及一第二数据写入一闪存的一区块,该区块是由多个区段所组成,该方法包含:
自该区块中选出地址连续的第一区段及第二区段;
使用一6位错误控制码对该第一数据及该第二数据进行编码,以产生一第一冗余码信息及一第二冗余码信息;
将该区块的逻辑区块地址信息分为一第一逻辑区块地址信息及一第二逻辑区块地址信息;以及
将该第一数据、该第一冗余码信息及该第一逻辑区块地址信息储存于该第一区段,并将该第二数据、该第二冗余码信息及该第二逻辑区块地址信息储存于该第二区段。
11.如权利要求10所述的数据写入方法,其中该闪存是多级单元及单级单元两种其中的一个。
12.如权利要求10所述的数据写入方法,其中储存该第一数据、该第一冗余码信息及该第一逻辑区块地址信息时,还将一损坏区块信息储存于该第一区段。
13.如权利要求12所述的数据写入方法,其中该损坏区块信息以1位储存。
14.如权利要求10所述的数据写入方法,其中该第一冗余码信息及该第二冗余码信息所需的储存空间皆为15字节。
15.如权利要求10所述的数据写入方法,其中储存该第二数据、该第二冗余码信息及该第二逻辑区块地址信息时,还将一第一损坏分页信息及一第二损坏分页信息分别储存于该第一区段及该第二区段。
16.如权利要求10所述的数据写入方法,其中储存该第一数据、该第一冗余码信息及该第一逻辑区块地址信息并储存该第二数据、该第二冗余码信息及该第二逻辑区块地址信息时,还将一第一错误修正码检查信息及一第二错误修正码检查信息分别储存于该第一区段及该第二区段。
17.如权利要求16所述的数据写入方法,其中该第一错误修正码检查信息及一第二错误修正码检查信息分别以1位储存。
18.一种数据读取方法,适用于一闪存的一区段,该区段包括一数据、一错误修正码检查信息及一冗余码信息,该方法包含下列步骤:
(a)根据该冗余码信息对该数据进行一错误修正码译码程序;
(b)判断该错误修正码译码程序是否完成,若是,则输出该已经过错误修正码译码程序的数据,若否,则执行步骤(c);
(c)判断该数据中,储存值为一默认值的字节的数目是否高于一阈值,若是,则判定该区段为抹除后的区段,若否,则执行步骤(d);以及
(d)根据错误修正码检查信息以判断该区段发生不可纠正的错误或是该区段为一抹除后的区段。
19.如权利要求18所述的数据读取方法,该闪存是多级单元及单级单元两种其中的一个。
20.如权利要求18所述的数据读取方法,其中该默认值为「0xff」。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101034715A CN101308702B (zh) | 2007-05-18 | 2007-05-18 | 适用于闪存的数据结构及其数据写入方法和数据读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101034715A CN101308702B (zh) | 2007-05-18 | 2007-05-18 | 适用于闪存的数据结构及其数据写入方法和数据读取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101308702A CN101308702A (zh) | 2008-11-19 |
CN101308702B true CN101308702B (zh) | 2010-06-02 |
Family
ID=40125088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101034715A Active CN101308702B (zh) | 2007-05-18 | 2007-05-18 | 适用于闪存的数据结构及其数据写入方法和数据读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101308702B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510614B2 (en) | 2008-09-11 | 2013-08-13 | Mediatek Inc. | Bad block identification methods |
CN101853212B (zh) * | 2009-03-30 | 2012-11-14 | 芯邦科技(深圳)有限公司 | 数据写入方法、数据读取方法和数据存储器 |
CN101587744B (zh) * | 2009-06-19 | 2011-11-23 | 上海微小卫星工程中心 | 一种大规模flash存储阵列的多层次数据冗余方法 |
TWI566096B (zh) * | 2015-09-11 | 2017-01-11 | 慧榮科技股份有限公司 | 資料儲存系統與其相關方法 |
TWI601148B (zh) * | 2016-05-05 | 2017-10-01 | 慧榮科技股份有限公司 | 損壞資料行的篩選方法與具有損壞資料行總表的資料儲存裝置 |
CN109840163B (zh) * | 2018-12-27 | 2022-05-24 | 西安紫光国芯半导体有限公司 | 一种Nand-Flash错误数据冗余替换方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5936885A (en) * | 1998-02-23 | 1999-08-10 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor memory capable of preventing erroneous inversion of data read from memory transistors |
US6295619B1 (en) * | 1995-12-22 | 2001-09-25 | Intel Corporation | Method and apparatus for error management in a solid state disk drive |
US6665813B1 (en) * | 2000-08-03 | 2003-12-16 | International Business Machines Corporation | Method and apparatus for updateable flash memory design and recovery with minimal redundancy |
CN1495799A (zh) * | 2002-09-12 | 2004-05-12 | ���ǵ�����ʽ���� | 在闪存装置中用于不同操作的专用冗余电路及其操作方法 |
CN1697085A (zh) * | 2004-05-11 | 2005-11-16 | 海力士半导体有限公司 | 与非闪存装置的多输入/输出修复方法及其与非闪存装置 |
-
2007
- 2007-05-18 CN CN2007101034715A patent/CN101308702B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6295619B1 (en) * | 1995-12-22 | 2001-09-25 | Intel Corporation | Method and apparatus for error management in a solid state disk drive |
US5936885A (en) * | 1998-02-23 | 1999-08-10 | Mitsubishi Denki Kabushiki Kaisha | Semiconductor memory capable of preventing erroneous inversion of data read from memory transistors |
US6665813B1 (en) * | 2000-08-03 | 2003-12-16 | International Business Machines Corporation | Method and apparatus for updateable flash memory design and recovery with minimal redundancy |
CN1495799A (zh) * | 2002-09-12 | 2004-05-12 | ���ǵ�����ʽ���� | 在闪存装置中用于不同操作的专用冗余电路及其操作方法 |
CN1697085A (zh) * | 2004-05-11 | 2005-11-16 | 海力士半导体有限公司 | 与非闪存装置的多输入/输出修复方法及其与非闪存装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101308702A (zh) | 2008-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8175012B2 (en) | Decoding/encoding method for booting from a NAND flash and system thereof | |
US8327230B2 (en) | Data structure for flash memory and data reading/writing method thereof | |
US20070300130A1 (en) | Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices | |
US20070271494A1 (en) | Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices | |
CN101308702B (zh) | 适用于闪存的数据结构及其数据写入方法和数据读取方法 | |
US8683147B2 (en) | Data accessing method for flash memory storage device having data perturbation module, and storage system and controller using the same | |
CN101000569A (zh) | 一种对多重扇区进行错误修正编码的方法 | |
CN101308706B (zh) | 适用于闪存的数据写入方法及错误修正编解码方法 | |
CN101567220A (zh) | 闪存的损坏区块辨识方法、储存系统及其控制器 | |
CN103631670A (zh) | 存储器储存装置、存储器控制器与数据处理方法 | |
CN102543196A (zh) | 数据读取方法、存储器储存装置及其控制器 | |
US8463982B2 (en) | Method of storing and accessing error correcting code in NAND flash | |
CN104252317A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
WO2007137013A2 (en) | Error correction coding for multiple-sector pages in flash memory devices | |
CN102063342A (zh) | 一种闪存存储设备数据的管理方法及系统 | |
CN101872318B (zh) | 用于快闪记忆体的资料存取方法及其储存系统与控制器 | |
CN101566969B (zh) | 提升非易失性存储器存储装置的管理效能的方法及控制器 | |
CN112051963A (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
CN102467459B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN111796774B (zh) | 存储器控制方法、存储器存储装置及存储器控制器 | |
US11922023B2 (en) | Read/write method and memory device | |
US10963178B2 (en) | Repetitive data processing method for solid state drive | |
CN108595288A (zh) | 一种闪存资讯纠错方法 | |
CN114077515A (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
CN101287212A (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 |