CN100458718C - 一种闪存存储装置及其数据读取和写入方法 - Google Patents
一种闪存存储装置及其数据读取和写入方法 Download PDFInfo
- Publication number
- CN100458718C CN100458718C CNB200610157783XA CN200610157783A CN100458718C CN 100458718 C CN100458718 C CN 100458718C CN B200610157783X A CNB200610157783X A CN B200610157783XA CN 200610157783 A CN200610157783 A CN 200610157783A CN 100458718 C CN100458718 C CN 100458718C
- Authority
- CN
- China
- Prior art keywords
- flash memory
- data
- ecc
- byte
- check code
- 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.)
- Expired - Fee Related
Links
Images
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
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)
- Detection And Correction Of Errors (AREA)
Abstract
本发明公开了一种闪存存储装置及其数据的读取和写入方法,所述闪存存储装置设有多个扇区,所述多个扇区中的N个扇区共享一组ECC编码,所述ECC编码采用N*512+N*16字节的ECC编码架构,所述N为自然数。本发明实施例使ECC(错误侦错修正)的能力也越强,通过应用此架构,既可以提升闪存记忆体存储设备的稳定性,也可以满足同时存取多颗闪存记忆体时的要求。
Description
技术领域
本发明属于闪存存储领域,提出的一种新的ECC架构,可应用在目前市面上所有闪存存储设备上,此方法不再局限于传统ECC编码的储存方式,可以提升错误修正码(ECC)的修正能力,特别是应用于采用多颗且需要同时存取的闪存时,闪存存储设备的容量也不会减少。此方法可以满足闪存在未来如SSD(Solid State Disk)固态硬盘上的应用。
背景技术
由于现阶段众多电子产品都朝小型化、个人化、便携式等方向发展。除此类小型电子装置的存储媒体使用闪存,其它电子装置的存储媒体也已经渐渐的从早期的磁带、磁盘片转变成省电轻巧的闪存所做成的产品。闪存最主要的优点在于省电、具有较小的体积,其可存储的容量也目益增加。目前市场上的USB存储盘、MP3多媒体播放器、PMP个人多媒体播放器与记忆卡等绝大部分都是以闪存作为存储的媒介。也因为闪存有上述的优点,市场的接受度与需求量正快速扩大。
在存储市场上,确保资料在存取过程能够保持其可靠性,是目前存储装置业者相当重要的一环。其最主要的考虑是数据在存取的过程中,有可能因为闪存的本身或是外在的因素造成数据的完整性受影响。于是为了防止在数据存取的过程中有任何的错误数据产生,通常在闪存内部,除了一般数据之外,另外还会有一个备用(Spare)区,存放错误修正码(Error Correction Code;ECC)的编码(如图2所示),如此不仅具有侦错的功能,并且能修复错误的数据资料,此技术被大量的应用在闪存存储装置上,以提升产品的可靠性与稳定性。
闪存的容量目前正以超越摩尔定律的速度,以一年两倍的速度在成长着。早期,闪存半导体技术主要是以单层次单元(Single Level Cell;SLC)为主,其容量的提升是利用半导体制程工艺的进步。但是目前各家闪存厂商已经不像之前只重视制程工艺上的发展。如同硬盘的发展历程一般,各家闪存厂商开始把技术着重在多层次单元(Multiple Level Cell;MLC),将原本一个Cell单元只能表示0与1的技术,提升为00、01、10与11。在未来,甚至可以表示000到111,有八种变化。如此未来容量的提升不会仅靠制程工艺技术上的进步,还可以靠着一些模拟的技术,两方面来增加容量。
但是当利用MLC技术来提升容量时,便会面临一个严峻的问题,因为牵涉到了Multi-Level(多阶层)的问题,所以此时便需要加强数据的可靠性。而且目前市面上的MLC闪存一个单元只有00、01、10以及11四种变化。未来的发展可以预见地,一个单元将可以表示更多种组合,所以需要更强的错误修正能力。
目前市面上的闪存中以一个512字节的扇区(Sector)而言提供16字节的备用(Sparse)空间,用来存放磨平理论(Wearleveling)以及ECC错误修正码。根据Reed-Solomon ECC算法理论,如果备用空间不存放磨平理论所需要的资料,则Reed-Solomon ECC最多可以有6字节的错误修正能力。依照目前MLC的规格,一个扇区(512字节)需要有4字节的错误修正能力,就现阶段而言传统ECC编码存放的方式是足够的。但当要加速闪存存取的效率时,一个扇区的数据是散布在2颗闪存内,因此需要同时存取2颗闪存,所以必须有8字节的错误修正能力,以此类推,若同时存取4颗闪存,则需要有16字节的错误修正能力。由此可知,这是传统ECC存放的方式所无法满足的。
发明内容
本发明实施例的目的在于提供一种闪存存储装置,旨在解决现有的闪存存储装置中当一个扇区的数据散布再多颗闪存中时,需要成倍的增加ECC编码位数的问题。
本发明实施例是这样实现的,一种闪存存储装置,所述闪存存储装置设有多个扇区,所述多个扇区中的N个扇区共享一组ECC编码,所述ECC编码采用N*512+N*16字节的ECC编码架构,所述N为自然数。
本发明实施例的另一目的在于提供一种所述闪存存储装置的数据读取方法,所述方法包括下述步骤:
从第一颗闪存读出第一个字节的数据,从第二颗闪存读出第二个字节的数据,从第X/M颗闪存读出第X个字节的数据,直至长度为N*(512+16)字节的数据读取完毕,所述X和M均为自然数;
将读取的前N*512字节的数据存储至缓冲存储器。
本发明实施例的另一目的在于提供一种所述闪存存储装置的数据读取方法,其特征在于,所述方法包括下述步骤:
将数据的第一个字节写入第一颗闪存,将数据的第二个字节写入第二颗闪存,将数据的第X个字节写入第X%M颗闪存,直至长度为N*512字节的数据写入完毕,所述X和M均为自然数;
将ECC检查码的第一个检查码写入第一颗闪存,将ECC检查码的第二个检查码写入第二颗闪存,将ECC检查码的第X个检查码写入第X%M颗闪存,直至长度为N*16字节的ECC检查码写入闪存。
在本发明实施例中,通过在闪存存储装置设置多个扇区,多个扇区中的N个扇区共享一组ECC编码,该ECC编码采用N*512+N*16字节的ECC编码架构,从而增强了ECC编码的错误修正能力,避免了闪存存储装置中当一个扇区的数据散布再多颗闪存中时,需要成倍的增加ECC编码位数的问题。
附图说明
图1:系统架构图。
图2:传统的ECC编码摆放方式。
图3:N=2改良ECC编码摆放方式。
图4:N=3改良ECC编码摆放方式。
图5:N扇区的示意图。
图6:扇区为2且闪存数目为2的ECC编码摆放方式。
图7:扇区为3且闪存数目为3的ECC编码摆放方式。
图8:N扇区且闪存数目为M时,ECC编码摆放方式。
图9:读取闪存时的流程。
图10:写入闪存时的流程。
【主要组件符号说明】
120:闪存控制器。工作的中心,协调所有的动作。
140:数据总线。DMA控制器将数据由缓冲区搬移到闪存,或是由闪存搬移到缓冲区,而不需要CPU的介入,可以省下系统的资源,增加效能。
150:设定DMA数据搬移的长度。当扇区为N时,DMA数据搬移的长度为N*512字节。
160:闪存。数据存储的空间,为非挥发性永久保存的内存。
165:ECC控制器对闪存的处理动作。读取时,将ECC数据读出判断数据的完整性。写入时,将ECC编码写入闪存中。
170:当DMA控制器将一般数据搬移结束时,闪存控制器通知ECC控制器接手DMA,进行ECC编码的控制。
180:缓冲区。读取或是写入时,数据存放的空间,其大小为系统最大的N*512字节。
85:ECC控制器对缓冲区的处里动作。当读取时,会将闪存内ECC编码的数据读出判断数据的完整性,当侦测缓冲区内数据有错时,会进行错误修正的工作,将数据修正。写入时不动作。
190:ECC控制器。进行ECC编码、侦测以及修正的动作。
具体实施方式
为达成上面的目的和功效,本发明的方法以及流程利用绘图并加以详述。
本发明利用新的ECC编码存放方式,突破传统闪存一个扇区只可以用16字节存放ECC编码的限制,将512字节(扇区大小)+16字节(ECC编码)的架构提升为(N*512+N*16)字节的架构。此架构让N个扇区共享一组ECC编码,增加ECC编码的长度,来提升ECC的错误修正能力。当N=2时,如图3所示,闪存对每一个扇区都提供16字节的Spare区域,所以两个扇区的Spare区域最多可以有32字节。根据Reed-Solomon ECC算法理论,32字节对两个扇区的资料可以提供11字节的错误修正能力。当N=3时,如图4所示,可以有48字节存放ECC编码的空间,可以提供17字节的错误修正能力。所以当N愈大时,可以提供的错误修正能力也越强。当扇区为N时,如图5所示,最多可以提供6*N-□log2N□字节的错误修正能力。依此类推,当N越大时,ECC(错误侦错修正)的能力也越强,此方法也可以满足同时存取多颗闪存时的要求。当N个扇区的数据在M颗闪存读取时,如图9所示,首先ECC控制器清除内部的检查码为0,此一检查码的英文名称为Syndrome Bits。系统然后启动DMA控制器,将数据从闪存中读出,第一个字节由第一颗闪存读出,第二个字节由第二颗闪存读出,依此类推,第X个字节由第X/M颗闪存读出。总共的读取的长度为N*(512+16)字节,但是只有N*512字节会被搬移到缓冲存储器(Buffer),剩余的N*16字节只是检查用的错误修正码,所以不必被搬移到缓冲存储器(Buffer)中。在数据读取的同时ECC控制器内的侦测电路会实时监视数据总线上所有的数据,并及时更新内部的检查码。
当DMA数据读取的动作完成后,ECC控制器检查内部的检查码是否为0,若为0则表示所有传输的数据是正确的,通知闪存控制器,读取动作已经成功。如果结果不为0,则启动内部的修正电路,透过修正电路寻找错误的数据,当找到错误的数据时则加以修复,并将利用找到错误的位置以及正确的数据,修改缓冲区内的数据。如果无法修复,则通知闪存控制器,数据错误而且无法修复。
当N个扇区的资料要写到M颗闪存时,如图10所示,首先ECC控制器清除内部的检查码为0,此一检查码的英文名称为Parity Bits。DMA控制器将缓冲区内(N*512)字节的数据,透过数据总线传送到闪存。数据的第一个字节会被传送到第一颗闪存,数据的第二个字节会被传送到第二颗闪存,依此类推,数据的第X个字节会被传送到第X%M颗闪存。在数据写入的同时,ECC控制器也实时的监视数据总线上的数据并且更新控制器内部的检查码。当DMA将缓冲区内的数据传输完毕时,ECC控制器便将ECC内部的检查码写入闪存。第一个检查码写入第一颗闪存,第二个检查码写入第二颗闪存,依此类推,第X个检查码写入第X%M颗闪存。当ECC将最多(N*16)字节的检查码写入闪存后,便完成了写入的动作。
Claims (9)
1、一种闪存存储装置,所述闪存存储装置设有多个扇区,其特征在于,所述多个扇区中的N个扇区共享一组ECC编码,所述ECC编码采用N*512+N*16字节的ECC编码架构,所述N为自然数。
2、如权利要求1所述的闪存存储装置,其特征在于,所述闪存存储装置包括至少一颗闪存。
3、如权利要求2所述的闪存存储装置,其特征在于,当所述闪存存储装置包括一颗闪存时,所述N*512+N*16字节的ECC编码架构具体为:所述N个扇区的前N*512字节的存储空间为资料存储区,所述N个扇区的后N*16字节的存储空间为ECC编码存储区。
4、如权利要求2所述的闪存存储装置,其特征在于,当所述闪存存储装置包括两颗或两颗以上闪存时,所述N*512+N*16字节的ECC编码架构具体为:资料里的第N字节存储于第N%M颗闪存内,直到所有的资料存储完毕,ECC错误修正码的第N字节存储于第N%M颗闪存内,直到所有的ECC错误修正码存储完毕,所述N和M均为自然数。
5、如权利要求1所述的闪存存储装置,其特征在于,所述闪存存储装置为闪存盘、Solid State Disk、PMP Player、存储卡或MP3 Player。
6、一种如权利要求1所述的闪存存储装置的数据读取方法,其特征在于,所述方法包括下述步骤:
从第一颗闪存读出第一个字节的数据,从第二颗闪存读出第二个字节的数据,从第X/M颗闪存读出第X个字节的数据,直至长度为N*(512+16)字节的数据读取完毕,所述X和M均为自然数;
将读取的前N*512字节的数据存储至缓冲存储器。
7、如权利要求6所述的数据读取方法,其特征在于,所述方法还包括下述步骤:
在从M颗闪存中读取数据之前,ECC控制器清除内部的检查码为0;
在从M颗闪存中读取数据时,ECC控制器内的侦测电路实时监视数据总线上所有的数据,并及时更新内部的检查码;
当从M颗闪存中读取数据完毕后,ECC控制器检查内部的检查码是否为0,若为0则所有传输的数据是正确的,如果结果不为0,则启动内部的修正电路,寻找错误的数据,当找到错误的数据时则加以修复,并将利用找到错误的位置以及正确的数据,修改缓冲存储器中的数据,如果无法修复,则通知闪存控制器,数据错误而且无法修复。
8、一种如权利要求1所述的闪存存储装置的数据写入方法,其特征在于,所述方法包括下述步骤:
将数据的第一个字节写入第一颗闪存,将数据的第二个字节写入第二颗闪存,将数据的第X个字节写入第X%M颗闪存,直至长度为N*512字节的数据写入完毕,所述X和M均为自然数;
将ECC检查码的第一个检查码写入第一颗闪存,将ECC检查码的第二个检查码写入第二颗闪存,将ECC检查码的第X个检查码写入第X%M颗闪存,直至长度为N*16字节的ECC检查码写入闪存。
9、如权利要求8所述的数据写入方法,其特征在于,所述方法还包括下述步骤:
在将数据写入闪存之前,ECC控制器清除内部的检查码为0;
在将数据写入闪存的过程中,ECC控制器实时的监视数据总线上的数据并更新ECC控制器内部的检查码。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610157783XA CN100458718C (zh) | 2006-12-29 | 2006-12-29 | 一种闪存存储装置及其数据读取和写入方法 |
PCT/CN2007/003895 WO2008083557A1 (fr) | 2006-12-29 | 2007-12-29 | Procédé de correction d'erreur de codage pour secteurs multiples |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610157783XA CN100458718C (zh) | 2006-12-29 | 2006-12-29 | 一种闪存存储装置及其数据读取和写入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101000569A CN101000569A (zh) | 2007-07-18 |
CN100458718C true CN100458718C (zh) | 2009-02-04 |
Family
ID=38692551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610157783XA Expired - Fee Related CN100458718C (zh) | 2006-12-29 | 2006-12-29 | 一种闪存存储装置及其数据读取和写入方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN100458718C (zh) |
WO (1) | WO2008083557A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100458718C (zh) * | 2006-12-29 | 2009-02-04 | 福昭科技(深圳)有限公司 | 一种闪存存储装置及其数据读取和写入方法 |
US8234539B2 (en) * | 2007-12-06 | 2012-07-31 | Sandisk Il Ltd. | Correction of errors in a memory array |
CN101246742B (zh) * | 2008-03-25 | 2010-06-16 | 威盛电子股份有限公司 | 电子装置与其数据传输方法 |
CN101752010B (zh) * | 2008-12-01 | 2013-01-09 | 创惟科技股份有限公司 | 闪存控制器及设定闪存的错误修正码容量的方法 |
CN101853212B (zh) * | 2009-03-30 | 2012-11-14 | 芯邦科技(深圳)有限公司 | 数据写入方法、数据读取方法和数据存储器 |
CN101996688B (zh) * | 2009-08-31 | 2013-03-06 | 银灿科技股份有限公司 | 应用可变动错误更正码容量的快闪存储器控制方法 |
JP2013542533A (ja) * | 2010-10-27 | 2013-11-21 | エルエスアイ コーポレーション | フラッシュメモリベースのデータ記憶のための順応ecc技術 |
CN102063342A (zh) * | 2010-12-28 | 2011-05-18 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据的管理方法及系统 |
CN102081970B (zh) * | 2010-12-31 | 2012-12-19 | 成都市华为赛门铁克科技有限公司 | 纠错处理的方法、装置及固态硬盘设备 |
JP6227616B2 (ja) * | 2015-10-23 | 2017-11-08 | ファナック株式会社 | 通信システム |
CN108073473A (zh) * | 2018-01-12 | 2018-05-25 | 江苏华存电子科技有限公司 | 一种闪存坏列表压缩方法 |
CN111863080A (zh) * | 2020-07-08 | 2020-10-30 | 上海威固信息技术股份有限公司 | 一种基于层间差异的3d闪存读性能优化方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08214028A (ja) * | 1995-02-03 | 1996-08-20 | Toshiba Corp | データ形成方法、データ再生方法、データ形成再生方法、データ形成装置、データ再生装置およびディスク |
CN1359103A (zh) * | 2000-12-12 | 2002-07-17 | 株式会社东芝 | 采用纠错码的数据处理方法和采用该方法的设备 |
CN1440033A (zh) * | 2002-02-21 | 2003-09-03 | 三洋电机株式会社 | 数据处理装置 |
CN1834931A (zh) * | 2005-03-17 | 2006-09-20 | 富士通株式会社 | 差错检测和校正装置及其控制方法和控制程序 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5793724A (en) * | 1996-01-22 | 1998-08-11 | Sony Corporation | Optical disk error-correcting code system correlating error correction with sector address |
US6684289B1 (en) * | 2000-11-22 | 2004-01-27 | Sandisk Corporation | Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory |
CN100458980C (zh) * | 2004-06-28 | 2009-02-04 | 浪潮齐鲁软件产业有限公司 | 金融税控数据可靠存储方法 |
WO2007137013A2 (en) * | 2006-05-17 | 2007-11-29 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
CN100458718C (zh) * | 2006-12-29 | 2009-02-04 | 福昭科技(深圳)有限公司 | 一种闪存存储装置及其数据读取和写入方法 |
-
2006
- 2006-12-29 CN CNB200610157783XA patent/CN100458718C/zh not_active Expired - Fee Related
-
2007
- 2007-12-29 WO PCT/CN2007/003895 patent/WO2008083557A1/zh active Search and Examination
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08214028A (ja) * | 1995-02-03 | 1996-08-20 | Toshiba Corp | データ形成方法、データ再生方法、データ形成再生方法、データ形成装置、データ再生装置およびディスク |
CN1359103A (zh) * | 2000-12-12 | 2002-07-17 | 株式会社东芝 | 采用纠错码的数据处理方法和采用该方法的设备 |
CN1440033A (zh) * | 2002-02-21 | 2003-09-03 | 三洋电机株式会社 | 数据处理装置 |
CN1834931A (zh) * | 2005-03-17 | 2006-09-20 | 富士通株式会社 | 差错检测和校正装置及其控制方法和控制程序 |
Also Published As
Publication number | Publication date |
---|---|
WO2008083557A1 (fr) | 2008-07-17 |
CN101000569A (zh) | 2007-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100458718C (zh) | 一种闪存存储装置及其数据读取和写入方法 | |
US8046528B2 (en) | Data writing method for flash memory, and flash memory controller and storage device thereof | |
US8533385B2 (en) | Method for preventing read-disturb happened in non-volatile memory and controller thereof | |
TWI479314B (zh) | 系統資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
TWI435329B (zh) | 快閃記憶體管理方法、快閃記憶體控制器與儲存系統 | |
TWI451249B (zh) | 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置 | |
CN109992202B (zh) | 数据存储设备、其操作方法以及包括其的数据处理系统 | |
CN104699413A (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
CN104423888A (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
TWI498899B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN104765568A (zh) | 数据存储方法、存储器控制电路单元与存储器存储装置 | |
CN103699491A (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
CN105005450A (zh) | 数据写入方法、存储器存储装置及存储器控制电路单元 | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
CN102890645B (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN103631670A (zh) | 存储器储存装置、存储器控制器与数据处理方法 | |
CN102981969A (zh) | 重复数据删除的方法及其固态硬盘 | |
CN104636267A (zh) | 存储器控制方法、存储器存储装置与存储器控制电路单元 | |
CN103678162B (zh) | 系统数据储存方法、存储器控制器与存储器储存装置 | |
CN102567221B (zh) | 数据管理方法、存储器控制器与存储器储存装置 | |
CN105022695A (zh) | 数据存储方法、存储器控制电路单元与存储器存储装置 | |
CN104252317B (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
CN102789813B (zh) | 一种控制存储设备内非最低有效位页使用的方法及装置 | |
CN102999437A (zh) | 数据搬移方法、存储器控制器与存储器储存装置 | |
TWI464585B (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090204 Termination date: 20111229 |