CN100364013C - 在闪存中存放校验码的方法及装置 - Google Patents
在闪存中存放校验码的方法及装置 Download PDFInfo
- Publication number
- CN100364013C CN100364013C CNB021346852A CN02134685A CN100364013C CN 100364013 C CN100364013 C CN 100364013C CN B021346852 A CNB021346852 A CN B021346852A CN 02134685 A CN02134685 A CN 02134685A CN 100364013 C CN100364013 C CN 100364013C
- Authority
- CN
- China
- Prior art keywords
- check code
- flash memory
- byte
- data
- microprocessor
- 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
Landscapes
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种在闪存中存放校验码的方法及装置,该装置包括有一微处理器及一闪存。闪存在逻辑上被划分为多数个数据块,每一数据块包含一校验码区,该校验码区包括有多数个字节来存储冗余校验码。微处理器可对闪存进行读写操作,生成被存储数据的冗余校验码并将其存储于相应校验码区。通过上述方法及装置,可减少对校验码字节的擦除次数。
Description
【技术领域】
本发明涉及一种在闪存中存放校验码的方法及装置,尤指一种可有效减少对冗余校验码字节擦除次数的方法及装置。
【背景技术】
众所周知,对于一存储系统而言,有二个因素非常重要:快速读写数据的能力及可靠存取数据的能力。为便于存取,存储系统在逻辑上可被格式化为多数个逻辑区,一逻辑区可被进一步划分为多数个数据块,直至多数个字节,一字节通常包括有8个字位。所述字节、字位可以是存储器中的物理单元,也可以是逻辑区中的逻辑单元。一种被广泛用于确保数据存取可靠性的方法是:对被存储数据进行冗余校验码校验,每次向存储系统写入数据时,按特定方法生成相关数据(可以是几个字节,或者是大量数据)的冗余校验码;将其存储在一个或多数个字节中,该字节的位置是预先定义好的;当读出数据时相应的冗余校验码一同被读出,生成新冗余校验码与的相对比来完成校验。
上述存储系统可以是使用半导体、磁、光作为存储介质的存储器产品,这里尤指可擦写半导体只读存储器,包括有闪存、EEPROM(ElectricallyErasable Programmable Read Only Memory)等。闪存全称快闪只读存储器(Flash Read Only Memory),或闪存(Flash Memory)。这些存储器都能在断电情况下保存数据,并根据输入数据更新存储器。但闪存与EEPROM又有所不同。当存储器中的数据需要更新时,EEPROM需要在高于工作电压下进行擦除,这通常需要另一种装置来完成;而闪存可在正常工作电压下进行擦除。EEPROM只允许每次擦除一个字节;而闪存可对数据块进行擦除。但即使是闪存,也存在有擦除次数限制、擦除速度较慢及出现坏道的类问题,例如闪存在连续擦除100,000次左右就会完全损坏。
针对上述情况,在闪存类存储器中存储冗余校验码的缺点就显得尤其明显,因为每进行一次存储,即使只更新了一个字节,就需要将相应的校验码字节擦除,再写入新生成的冗余校验码。目前,通常的做法有二种:不考虑上述情况,完全依赖闪存自身的物理性质,如较多的擦除次数、较快的擦除速度;或为相关数据设置多数个校验码字节,相当于将原先对一个校验码字节的擦除次数分摊至多数个字节。
随着互联网及便携设备的普及,提高了对存储容量、数据交换的要求。从网上下载的大量软件、信息、音乐等,使得存储器所存储的数据需要时常更新,也使得对校验码字节的擦除次数显著增加。并且,现有技术没有充分利用闪存类存储器的存储特点,即闪存的字位可由1被改写为0,可由0被擦除为1。所谓改写,为字位由代表1的高电压状态变为代表0的低电压状态;所谓擦除,为字位被恢复为代表1的高电压状态,即可被改写状态。假设一闪存字节包括有8个字位,其值的二进制表示为11110101,将该值变为10100101时,无需擦除,因为对应字位可由1被改写为0;而将该值变为11111010时,由于对应字位无法由0被改写为1,才需要先将该字节擦除为11111111,再改写为11111010。
综上所述,充分利用闪存类存储器的存储特点,提供一种可有效减少对校验码字节的擦除次数的方法及装置十分必要。
【发明内容】
本发明的主要目的在于提供一种在闪存中存放校验码的方法及装置,其可利用闪存类存储器的存储特点,减少对校验码字节的擦除次数。
为达上述发明目的,本发明提供一种在闪存中存放校验码的方法,其使用一微处理器来完成冗余校验码的生成及存储操作,包括有如下步骤:(a)将闪存在逻辑上划分为多数个数据块,每一数据块包含一校验码区,该校验码区包括有多数个字节来存储冗余校验码;(b)微处理器读取一数据块的数据并计算每一字节相加的和的补码;(c)微处理器分别将校验码区的各字节数据与上述补码相加,再将和数与该字节数据按位相与;(d)若相与结果与对应和数相同,则微处理器将该和数存储于该字节中,作为新冗余校验码;(e)若无一相与结果与对应和数相同,则微处理器在校验码区随机选取一字节,将该字节数据与上述补码相加,擦除该字节后,将和数存储于该字节中,作为新冗余校验码。由上述方法所生成的冗余校验码完全符合该冗余校验码的校验要求,即将数据块与校验码区按字节相加求和,其结果为空。
为达上述发明目的,本发明还提供一种在闪存中存放校验码的装置,其包括有:一闪存,其在逻辑上被划分为多数个数据块,每一数据块包含一校验码区,该校验码区包括有多数个字节来存储冗余校验码;一微处理器,系可对上述闪存进行读写操作,生成被存储数据的冗余校验码并将其存储于相应校验码区。其中,微处理器读取一数据块的数据并计算每一字节相加的和的补码;分别将校验码区的各字节数据与上述补码相加求和,再将和数与该字节数据按位相与;若相与结果与对应和数相同,则将和数存储于该字节中,作为新冗余校验码;若无一相与结果与对应和数相同,则在校验码区随机选取一字节,将该字节数据与上述补码相加求和,擦除该字节后,将和数存储于该字节中,作为新冗余校验码。这是可行的,因为由上述装置所提供的冗余校验码完全符合该冗余校验码的校验要求,即将数据块与校验码区按字节相加求和,其结果为空。
通过上述方法及装置,可减少对校验码字节的擦除次数。
【附图说明】
图1为本发明在闪存中存放校验码的装置的硬件架构图。
图2为本发明在闪存中存放校验码的存储空间示意图。
图3为本发明为存储于闪存中的数据生成冗余校验码的示意图。
图4为本发明在闪存中存放校验码的方法流程图。
【具体实施方式】
参阅图1所示,为本发明在闪存中存放校验码的装置的硬件架构图。该在闪存中存放校验码的装置包括有微处理器10、系统总线20、随机存储器30及闪存40。其中,微处理器10可管理数据的输入/输出操作,具有执行加法运算及按位相与的能力。系统总线20可以为各种适当类型的数据/控制总线,微处理器10通过该系统总线20向随机存储器30及闪存40发送控制信号并与随机存储器30及闪存40进行数据传输。随机存储器30作为内部存储器,可为微处理器10提供运行程序、暂存数据的工作空间,一般可被划分为程序区、数据区及系统区(图中未画出)。闪存40作为外部存储器,可不断更新并保存大量数据,例如系统信息、软件程序、用户个人数据等。微处理器10可从闪存40中读取所需数据,将其传输到随机存储器30中;或通过系统总线从外部数据源(图中未画出)接收数据并将其存储于闪存40中。
参阅图2所示,为本发明在闪存中存放校验码的存储空间示意图。该方法在逻辑上将存储器划分为多数个数据块,每一数据块进一步被划分多数个字节。所述存储器是指作为外部存储器的闪存40,如此,闪存40被划分为多数个数据块41,每一数据块41包含一校验码区42,该校验码区42包括有多数个字节来存储冗余校验码,每一冗余校验码仅占一字节。
在读数据操作中,微处理器10从闪存40中读取所需数据块41的数据并暂存在随机存储器30中,所读取数据包含了校验码区42的数据。在输出所读取数据之前,微处理器10将对所读取数据进行冗余校验码校验,即将所取数据逐字节相加求和,若和数为0,则代表所取数据通过数据完整性校验,数据读取正确。若和数不为0,则代表在读数据操作中数据读取有误。此时可使用现有的错误恢复方法进行修正或简单回传出错信息并要求重新读取所需数据块的数据。
在写数据操作中,微处理器10将数据写入指定数据块41中,为维持被存储数据完整性,冗余校验码必须重新生成。按照本实施例所提供的方法,可在相应的校验码区42中逐字节寻找适当字节并生成新冗余校验码改写该字节,或先将其擦除再写入新冗余校验码。
参阅图3所示,为本发明为存储于闪存中的数据生成冗余校验码的示意图。如上所述,数据块41可被进一步划分为多数个字节,假设数据块41包括有40个字节,分别被标记为字节60至字节100。数据块41包含其校验码区42,校验码区42包括有多数个字节,分别被标记为字节91至字节100。为生成新冗余校验码52,将数据区41的数据逐字节相加得和数50,求该和数50的补码51,在校验码区42中找到可被改写的字节9x(具体步骤将在下面详述),可被改写的字节9x与补码51的和即为新冗余校验码52。
参阅图4所示,为本发明在闪存中存放校验码的方法流程图。首先对本图所用的助记符说明如下:
本发明将数据存储器定义为包括有多数个数据块,每一数据块包含一校验码区,该校验码区包括有多数个字节来存储冗余校验码。
A区,代表一数据块,例如在第二图中为数据块41;
B区,代表一数据块中的校验码区,例如在第二图中为校验码区42;
SUM,代表一数据块的数据逐字节相加的和;
CRC′,代表SUM的补码;
CRC,代表一数据块的数据的冗余校验码;
i,代表一校验码区的开始字节至末端字节范围的地址;
B[i],代表B区中一字节的数据。
首先,微处理器10将数据写入闪存40,开始生成相应的冗余校验码。例如A区的数据被改写,先将A区的数据逐字节相加求和得SUM,再求SUM的补码CRC′(步骤S1)。i代表B区的地址范围,初始值为B区开始字节的地址。将CRC′与B[i]的和作为新冗余校验码CRC(步骤S2)。将CRC与该B[i]按位相与,所谓按位相与是指将二个字节的对应位置的字位分别进行与操作,一典型字节会包括有8个字位。并判断按位相与的结果是否与CRC相等(步骤S3)。若相等,则表示B[i]数据可被改写,i代表该可被改写的字节。将CRC写入该字节以完成冗余校验码的生成(步骤S7)。若不等,则将i加1,即将i指向B区中下一字节(步骤S4)。判断i是否超出B区的边界,即i的值是否大于B区的末端字节地址(步骤S5)。若判断结果为真,则表示B区中已经无可被改写的字节。在B区中随机选取一字节,将CRC′与该字节的和作为新CRC,擦除该字节后,写入CRC数值以完成冗余校验码的生成(步骤S6)。若判断结果为否,则回到步骤S2,重新生成CRC,继续寻找可被改写的字节。
Claims (11)
1.一种在闪存中存放校验码的方法,其使用一微处理器来完成冗余校验码的生成及存储操作,其特征在于,包括有如下步骤:
(a)将一闪存在逻辑上划分为多数个数据块,每一数据块包含一校验码区,该校验码区包括有多数个字节用于存储冗余校验码;
(b)微处理器读取一数据块的数据并计算每一字节相加的和的补码;
(c)微处理器分别将校验码区的各字节数据与上述补码相加,再将和数与该字节资料按位相与;
(d)若相与结果与对应和数相同,则微处理器将该和数存储于该字节中,作为新冗余校验码;
(e)若无一相与结果与对应和数相同,则微处理器在校验码区随机选取一字节,将该字节数据与上述补码相加,擦除该字节后,将和数存储于该字节中,作为新冗余校验码。
2.如权利要求1所述的在闪存中存放校验码的方法,其特征在于,其中微处理器可对上述闪存进行读写操作。
3.如权利要求1所述的在闪存中存放校验码的方法,其特征在于,其中微处理器可进行加法运算及按位相与。
4.如权利要求1所述的在闪存中存放校验码的方法,其特征在于,其中擦除为将上述闪存字节重新变为可改写状态。
5.如权利要求4所述的在闪存中存放校验码的方法,其特征在于,其中可改写状态为字位可由1被改写为0,即由代表1的高电压状态变为代表0的低电压状态。
6.一种在闪存中存放校验码的装置,其可减少对校验码字节的擦除次数,该装置包括有一闪存及一微处理器,其特征在于:
闪存在逻辑上被划分为多数个数据块,每一数据块包含一校验码区,该校验码区包括有多数个字节用于存储冗余校验码;
微处理器用以对该闪存进行读写操作,其读取一数据块的数据并计算每一字节相加的和的补码,在校验码区选取一字节数据与该补码相加以生成新冗余校验码。
7.如权利要求6所述的在闪存中存放校验码的装置,其特征在于,其中微处理器可分别将校验码区的各字节数据与上述新冗余校验码按位相与。
8.如权利要求7所述的在闪存中存放校验码的装置,其特征在于,其中微处理器可将该新冗余校验码存储于所选取的字节中。
9.如权利要求7所述的在闪存中存放校验码的装置,其特征在于,其中微处理器可先擦除所选取的字节,再把该新冗余校验码存储于该字节中。
10.如权利要求9所述的在闪存中存放校验码的装置,其特征在于,其中擦除为将上述闪存字节重新变为可改写状态。
11.如权利要求10所述的在闪存中存放校验码的装置,其特征在于,其中可改写状态为字位可由1被改写为0,即由代表1的高电压状态变为代表0的低电压状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021346852A CN100364013C (zh) | 2002-09-07 | 2002-09-07 | 在闪存中存放校验码的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021346852A CN100364013C (zh) | 2002-09-07 | 2002-09-07 | 在闪存中存放校验码的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1480953A CN1480953A (zh) | 2004-03-10 |
CN100364013C true CN100364013C (zh) | 2008-01-23 |
Family
ID=34145912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021346852A Expired - Fee Related CN100364013C (zh) | 2002-09-07 | 2002-09-07 | 在闪存中存放校验码的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100364013C (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100631765B1 (ko) * | 2004-10-18 | 2006-10-09 | 삼성전자주식회사 | 플래시 메모리의 데이터 처리 장치 및 방법 |
KR100643288B1 (ko) | 2004-11-16 | 2006-11-10 | 삼성전자주식회사 | 플래시 메모리의 데이터 처리 장치 및 방법 |
CN101256521B (zh) * | 2007-03-01 | 2010-12-01 | 创惟科技股份有限公司 | 提高闪存资料存取可靠性的方法 |
CN100468576C (zh) * | 2007-05-30 | 2009-03-11 | 忆正存储技术(深圳)有限公司 | 闪存数据读写处理方法 |
CN101140809A (zh) * | 2007-09-07 | 2008-03-12 | 炬力集成电路设计有限公司 | 支持流水线纠错码和可配置操作的flash控制器及其控制方法 |
KR100938044B1 (ko) * | 2007-09-10 | 2010-01-21 | 주식회사 하이닉스반도체 | 불휘발성 메모리 장치 및 그 멀티 레벨 셀 프로그램 방법 |
US7813188B2 (en) | 2007-09-10 | 2010-10-12 | Hynix Semiconductor Inc. | Non-volatile memory device and a method of programming a multi level cell in the same |
CN101425342B (zh) * | 2008-10-29 | 2010-12-08 | 四川和芯微电子股份有限公司 | 针对NAND Flash冗余码的存取方法 |
CN101441453B (zh) * | 2008-12-22 | 2010-12-22 | 奇瑞汽车股份有限公司 | 一种用于混合动力汽车整车控制软件的实时校验方法 |
US8788871B2 (en) * | 2011-06-28 | 2014-07-22 | International Business Machines Corporation | Unified, workload-optimized, adaptive RAS for hybrid systems |
JP6217664B2 (ja) * | 2015-02-10 | 2017-10-25 | トヨタ自動車株式会社 | マイコン装置 |
CN105528183B (zh) * | 2016-01-26 | 2019-01-18 | 华为技术有限公司 | 一种存储数据的方法及存储设备 |
CN106776108A (zh) * | 2016-12-06 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种解决存储磁盘容错的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734815A (en) * | 1996-08-22 | 1998-03-31 | Emc Corporation | Method and apparatus for efficient cyclical redundancy check (CRC) maintenance for sub-sector writes |
US6233681B1 (en) * | 1997-11-24 | 2001-05-15 | Samsung Electronics Co. Ltd. | Computer system and a control method of the same for in-system reprogramming of a fixed flash ROM when access to the fixed flash ROM is not possible |
-
2002
- 2002-09-07 CN CNB021346852A patent/CN100364013C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734815A (en) * | 1996-08-22 | 1998-03-31 | Emc Corporation | Method and apparatus for efficient cyclical redundancy check (CRC) maintenance for sub-sector writes |
US6233681B1 (en) * | 1997-11-24 | 2001-05-15 | Samsung Electronics Co. Ltd. | Computer system and a control method of the same for in-system reprogramming of a fixed flash ROM when access to the fixed flash ROM is not possible |
Also Published As
Publication number | Publication date |
---|---|
CN1480953A (zh) | 2004-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6839823B1 (en) | Increased reliability of data stored on flash memory in applications sensitive to power-loss | |
US6449625B1 (en) | Use of a two-way stack approach to optimize flash memory management for embedded database systems | |
US7562202B2 (en) | Systems, methods, computer readable medium and apparatus for memory management using NVRAM | |
CN110806985B (zh) | 用来管理一记忆装置的方法以及其相关的记忆装置 | |
EP2003569B1 (en) | Flash memory controller | |
US8041883B2 (en) | Restoring storage devices based on flash memories and related circuit, system, and method | |
US6381176B1 (en) | Method of driving remapping in flash memory and flash memory architecture suitable therefor | |
US6865658B2 (en) | Nonvolatile data management system using data segments and link information | |
CN100364013C (zh) | 在闪存中存放校验码的方法及装置 | |
KR100870392B1 (ko) | 시스템 및 데이터 저장 방법 | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
JPH06506547A (ja) | メモリ内の情報を更新するための方法および装置と、該方法および装置のメモリカードへの利用 | |
WO1997012324A1 (en) | Memory management | |
US6839798B1 (en) | Flash memory capable of storing frequently rewritten data | |
WO1999044113A9 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US10712970B2 (en) | Flash memory controller and associated accessing method and electronic device | |
CN112596668A (zh) | 一种存储器的坏块处理方法及系统 | |
US20070005929A1 (en) | Method, system, and article of manufacture for sector mapping in a flash device | |
JP4329937B2 (ja) | パーシスタントメモリに書き込む際のエラーを検出する方法および装置 | |
WO2024103600A1 (zh) | 一种数据管理方法、装置及电子设备和非易失性可读存储介质 | |
US20130080690A1 (en) | Method to emulate eeprom using flash memory | |
CN103389943A (zh) | 控制装置、存储装置及存储控制方法 | |
CN111258498B (zh) | 一种flash存储器管理方法 | |
JP4060245B2 (ja) | メモリ管理装置およびこれを備えたicカード | |
US8751770B2 (en) | Semiconductor recording apparatus and semiconductor recording system |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080123 Termination date: 20140907 |
|
EXPY | Termination of patent right or utility model |