CN1480953A - 在内存中存放校验码的方法及装置 - Google Patents

在内存中存放校验码的方法及装置 Download PDF

Info

Publication number
CN1480953A
CN1480953A CNA021346852A CN02134685A CN1480953A CN 1480953 A CN1480953 A CN 1480953A CN A021346852 A CNA021346852 A CN A021346852A CN 02134685 A CN02134685 A CN 02134685A CN 1480953 A CN1480953 A CN 1480953A
Authority
CN
China
Prior art keywords
check code
byte
flash memory
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.)
Granted
Application number
CNA021346852A
Other languages
English (en)
Other versions
CN100364013C (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.)
Hongfujin Precision Industry Shenzhen Co Ltd
Hon Hai Precision Industry Co Ltd
Original Assignee
Hongfujin Precision Industry Shenzhen Co Ltd
Hon Hai Precision Industry Co Ltd
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 Hongfujin Precision Industry Shenzhen Co Ltd, Hon Hai Precision Industry Co Ltd filed Critical Hongfujin Precision Industry Shenzhen Co Ltd
Priority to CNB021346852A priority Critical patent/CN100364013C/zh
Publication of CN1480953A publication Critical patent/CN1480953A/zh
Application granted granted Critical
Publication of CN100364013C publication Critical patent/CN100364013C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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作为内部存储器,可为微处理器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,擦除该字节后,写2CRC数值以完成冗余校验码的生成(步骤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的低电压状态。
CNB021346852A 2002-09-07 2002-09-07 在闪存中存放校验码的方法及装置 Expired - Fee Related CN100364013C (zh)

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 true CN1480953A (zh) 2004-03-10
CN100364013C 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)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100382049C (zh) * 2004-10-18 2008-04-16 三星电子株式会社 用于闪速存储器的数据处理设备和方法
WO2008145070A1 (en) * 2007-05-30 2008-12-04 Memoright Memoritech (Shenzhen) Co., Ltd Flash memory data read/write processing method
WO2009033397A1 (fr) * 2007-09-07 2009-03-19 Artek Microelectronics Co., Ltd. Procédé pour accéder à des données dans une mémoire flash et contrôleur d'accès à des données
US7613982B2 (en) 2004-11-16 2009-11-03 Samsung Electronics Co., Ltd. Data processing apparatus and method for flash memory
CN101256521B (zh) * 2007-03-01 2010-12-01 创惟科技股份有限公司 提高闪存资料存取可靠性的方法
CN101425342B (zh) * 2008-10-29 2010-12-08 四川和芯微电子股份有限公司 针对NAND Flash冗余码的存取方法
CN101441453B (zh) * 2008-12-22 2010-12-22 奇瑞汽车股份有限公司 一种用于混合动力汽车整车控制软件的实时校验方法
US7948805B2 (en) 2007-09-10 2011-05-24 Hynix Semiconductor Inc. Method of programming a multi level cell
CN101388249B (zh) * 2007-09-10 2011-09-21 海力士半导体有限公司 非易失性存储器件和对其中的多级单元进行编程的方法
CN103562873A (zh) * 2011-06-28 2014-02-05 国际商业机器公司 用于混合系统的统一的自适应ras
CN105528183A (zh) * 2016-01-26 2016-04-27 华为技术有限公司 一种存储数据的方法及存储设备
CN105868119A (zh) * 2015-02-10 2016-08-17 丰田自动车株式会社 微机装置
CN106776108A (zh) * 2016-12-06 2017-05-31 郑州云海信息技术有限公司 一种解决存储磁盘容错的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
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
KR100280637B1 (ko) * 1997-11-24 2001-02-01 윤종용 고정된플래시롬의데이터갱신이가능한컴퓨터시스템및그제어방법

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100382049C (zh) * 2004-10-18 2008-04-16 三星电子株式会社 用于闪速存储器的数据处理设备和方法
US7519764B2 (en) 2004-10-18 2009-04-14 Samsung Electronics Co., Ltd. Apparatus and method for detecting data validity in flash memory
US7613982B2 (en) 2004-11-16 2009-11-03 Samsung Electronics Co., Ltd. Data processing apparatus and method for flash memory
CN101256521B (zh) * 2007-03-01 2010-12-01 创惟科技股份有限公司 提高闪存资料存取可靠性的方法
WO2008145070A1 (en) * 2007-05-30 2008-12-04 Memoright Memoritech (Shenzhen) Co., Ltd Flash memory data read/write processing method
WO2009033397A1 (fr) * 2007-09-07 2009-03-19 Artek Microelectronics Co., Ltd. Procédé pour accéder à des données dans une mémoire flash et contrôleur d'accès à des données
US8234541B2 (en) 2007-09-07 2012-07-31 Artek Microelectronics Co., Ltd. Method and controller for data access in a flash memory
US7948805B2 (en) 2007-09-10 2011-05-24 Hynix Semiconductor Inc. Method of programming a multi level cell
CN101388249B (zh) * 2007-09-10 2011-09-21 海力士半导体有限公司 非易失性存储器件和对其中的多级单元进行编程的方法
CN101425342B (zh) * 2008-10-29 2010-12-08 四川和芯微电子股份有限公司 针对NAND Flash冗余码的存取方法
CN101441453B (zh) * 2008-12-22 2010-12-22 奇瑞汽车股份有限公司 一种用于混合动力汽车整车控制软件的实时校验方法
CN103562873A (zh) * 2011-06-28 2014-02-05 国际商业机器公司 用于混合系统的统一的自适应ras
CN103562873B (zh) * 2011-06-28 2016-10-26 国际商业机器公司 用于在计算机系统中处理数据的方法和系统
CN105868119A (zh) * 2015-02-10 2016-08-17 丰田自动车株式会社 微机装置
CN105868119B (zh) * 2015-02-10 2018-11-06 丰田自动车株式会社 微机装置
CN105528183A (zh) * 2016-01-26 2016-04-27 华为技术有限公司 一种存储数据的方法及存储设备
CN105528183B (zh) * 2016-01-26 2019-01-18 华为技术有限公司 一种存储数据的方法及存储设备
CN106776108A (zh) * 2016-12-06 2017-05-31 郑州云海信息技术有限公司 一种解决存储磁盘容错的方法

Also Published As

Publication number Publication date
CN100364013C (zh) 2008-01-23

Similar Documents

Publication Publication Date Title
CN1078364C (zh) 存储器管理方法
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
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
US6839823B1 (en) Increased reliability of data stored on flash memory in applications sensitive to power-loss
US7734862B2 (en) Block management for mass storage
US5987478A (en) Virtual small block file manager for flash memory array
US6381176B1 (en) Method of driving remapping in flash memory and flash memory architecture suitable therefor
US8219781B2 (en) Method for managing a memory apparatus, and associated memory apparatus thereof
US7680977B2 (en) Page and block management algorithm for NAND flash
US7571275B2 (en) Flash real-time operating system for small embedded applications
CN100364013C (zh) 在闪存中存放校验码的方法及装置
JPH06506547A (ja) メモリ内の情報を更新するための方法および装置と、該方法および装置のメモリカードへの利用
WO1997012324A1 (en) Memory management
WO2005059966A2 (en) Rotational use of memory to minimize write cycles
US7062630B2 (en) Storing device for writing data onto a plurality of installed storing mediums, storing control method for the storing device, and program thereof
CN102981969A (zh) 重复数据删除的方法及其固态硬盘
CN106802837A (zh) 一种更新错误检测和纠正ecc码的方法及装置
US20070162707A1 (en) Information recording medium data processing apparatus and data recording method
JP4329937B2 (ja) パーシスタントメモリに書き込む際のエラーを検出する方法および装置
US20130080690A1 (en) Method to emulate eeprom using flash memory
CN103389943A (zh) 控制装置、存储装置及存储控制方法
KR100479170B1 (ko) 메모리 억세스 제어장치 및 방법
US8751770B2 (en) Semiconductor recording apparatus and semiconductor recording system
CN115509466B (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
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