CN113434086A - 数据存储方法、装置、非易失性存储器件和存储器 - Google Patents

数据存储方法、装置、非易失性存储器件和存储器 Download PDF

Info

Publication number
CN113434086A
CN113434086A CN202110714469.1A CN202110714469A CN113434086A CN 113434086 A CN113434086 A CN 113434086A CN 202110714469 A CN202110714469 A CN 202110714469A CN 113434086 A CN113434086 A CN 113434086A
Authority
CN
China
Prior art keywords
data
written
target
storage
storage unit
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
CN202110714469.1A
Other languages
English (en)
Other versions
CN113434086B (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.)
Nanjing Yingruichuang Electronic Technology Co Ltd
Original Assignee
Nanjing Yingruichuang Electronic Technology 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 Nanjing Yingruichuang Electronic Technology Co Ltd filed Critical Nanjing Yingruichuang Electronic Technology Co Ltd
Priority to CN202110714469.1A priority Critical patent/CN113434086B/zh
Publication of CN113434086A publication Critical patent/CN113434086A/zh
Application granted granted Critical
Publication of CN113434086B publication Critical patent/CN113434086B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请涉及一种数据存储方法、装置、非易失性存储器件和存储器。所述方法包括:获取待写入数据;判断目标存储块是否写满;当所述目标存储块未写满时,将所述待写入数据写入所述目标存储块的未写入数据的存储单元;当所述目标存储块写满时,擦除所述目标存储块中存储的数据,并将所述待写入数据写入所述目标存储块的存储单元。本方法能够通过直接在未写入数据的存储单元上写入新的数据,直至存储块写满,才进行擦除,避免存储块在更新数据时频繁地擦除和写入,从而延长存储块的使用寿命。

Description

数据存储方法、装置、非易失性存储器件和存储器
技术领域
本申请涉及数据存储技术领域,特别是涉及一种数据存储方法、装置、非易失性存储器件和存储器。
背景技术
近年来,非易失性存储器技术得到了快速发展。常用的非易失性存储器如Flash(闪存),EEPROM(Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器),它们中的存储单元所能支持的擦写次数是有限的。比如EEPROM一般为10万次,Flash为1万次。而对于应用来说,存在需要频繁更新某些数据的需求,这就让存储这些需频繁更新数据的存储单元成为了整个非易失性存储器使用寿命的瓶颈。
传统技术中,是在写入时计算数据的冗余校验位,并且伴随数据一起写入;在读出时,用冗余校验位来纠错和检错。当读出时,发生无法纠正的校验错误时,就换一块存储区域。
然而,目前的数据存储方法对于非易失性存储器来说,写数据的过程分为擦除和编程两个动作。虽然编程动作可以以一个字为单位进行,但擦除动作只能以存储块为单位进行,这就导致了采用传统技术的话,当存储块中的一个字的存储单元损坏后,整个存储块都不能使用了。
发明内容
基于此,有必要针对上述背景技术中的数据存储方法需要频繁地擦除和写入的问题,提供一种能够无需擦除原数据,而是在空白位置直接写入的数据存储方法、装置、非易失性存储器件和存储器。
为了实现上述目的,一方面,本申请提供了一种数据存储方法,所述方法包括:
获取待写入数据;
判断目标存储块是否写满;
当所述目标存储块未写满时,将所述待写入数据写入所述目标存储块的未写入数据的存储单元;
当所述目标存储块写满时,擦除所述目标存储块中存储的数据,并将所述待写入数据写入所述目标存储块的存储单元。
在其中一个实施例中,所述目标存储块包括至少一个存储单元,所述将所述待写入数据写入所述目标存储块的未写入数据的存储单元,包括:
读取所述目标存储块的所述存储单元中的数据是否存在与所述待写入数据对应的目标数据;
当存在时,则将所述目标数据的第一数据标识标记为旧数据,并将所述待写入数据写入所述存储单元后,将写入的所述待写入数据的所述第一数据标识标记为新数据。
在其中一个实施例中,所述读取所述目标存储块的所述存储单元中的数据是否存在与所述待写入数据对应的目标数据之后,所述方法还包括:
当不存在时,将所述待写入数据写入所述存储单元,并将写入的所述待写入数据的所述第一数据标识标记为新数据。
在其中一个实施例中,所述将所述目标数据的第一数据标识标记为旧数据,包括:
判断所述目标数据的第一数据标识是否为旧数据;
若所述第一数据标识是旧数据,则将所述待写入数据写入所述存储单元后,将写入的所述待写入数据的所述第一数据标识标记为新数据;
若所述第一数据标识不是旧数据,则继续将所述目标数据的第一数据标识标记为旧数据,并将所述待写入数据写入所述存储单元后,将写入的所述待写入数据的所述第一数据标识标记为新数据。
在其中一个实施例中,所述将写入的所述待写入数据的所述第一数据标识标记为新数据之后,包括:
将写入的所述待写入数据的第二数据标识标记为有效,且修改所述目标数据的第二数据标识为无效。
在其中一个实施例中,所述将所述目标数据的第一数据标识标记为旧数据之前,所述方法还包括:
当存在至少两个所述目标数据,且其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据时,则将第一数据标识为旧数据的所述目标数据的第二数据标识标记为无效;
所述将所述目标数据的第一数据标识标记为旧数据,并将所述待写入数据写入所述存储单元后,将写入的所述待写入数据的所述第一数据标识标记为新数据之后,包括:
将写入的所述待写入数据的第二数据标识标记为有效,且修改第一数据标识为新数据的所述目标数据的第二数据标识为无效。
在其中一个实施例中,所述获取待写入数据之前,所述方法还包括:
对目标存储块未写入数据的存储单元进行冗余校验,以检查所述存储单元中的数据是否存在错误。
在其中一个实施例中,所述当所述目标存储块未写满时,将所述待写入数据写入所述目标存储块的未写入数据的存储单元,包括:
将所述待写入数据写入冗余校验正确的所述存储单元。
本申请还提供了一种数据存储装置,所述数据存储装置包括:
获取模块,用于获取待写入数据;
判断模块,用于判断目标存储块是否写满;
存储模块,当所述目标存储块未写满时,所述存储模块用于将所述待写入数据写入所述目标存储块的未写入数据的存储单元;当所述目标存储块写满时,所述存储模块用于擦除所述目标存储块中存储的数据,并将所述待写入数据写入所述目标存储块的存储单元。
本申请还提供了一种非易失性存储器件,所述非易失性存储器件存储有计算机程序,其特征在于,所述计算机程序被处理器执行时可实现如上述任一实施例中所述的数据存储方法。
本申请还提供了一种存储器,所述存储器存储有计算机程序,其特征在于,所述计算机程序被处理器执行时可实现如上述任一实施例中所述的数据存储方法。
上述数据存储方法、装置、非易失性存储器件和存储器,通过直接在未写入数据的存储单元上写入新的数据,直至存储块写满,才进行擦除,减少了每个存储单元的擦除次数,避免存储块在更新数据时频繁地擦除和写入,从而延长存储块的使用寿命。
附图说明
图1为本申请其中一个实施例提供的数据存储方法的应用环境图;
图2为本申请其中一个实施例提供的数据存储方法的流程示意图;
图3为本申请其中一个实施例中步骤S206的流程示意图;
图4为本申请其中一个实施例中步骤S304的流程示意图;
图5为本申请其中一个实施例中步骤S304之后的流程示意图;
图6为本申请其中一个实施例中步骤S304之前的流程示意图;
图7为本申请另一个实施例中步骤S304之前的流程示意图;
图8为本申请另一个实施例提供的数据存储方法的流程示意图;
图9为本申请其中一个实施例中步骤S202之前的流程示意图;
图10为本申请其中一个实施例中步骤S206之前的流程示意图;
图11为本申请其中一个实施例中提供的数据存储装置的结构示意图。
具体实施方式
为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的首选实施例。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本申请的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
本申请提供的数据存储方法,可以应用于如图1所示的应用环境中。该应用环境包括终端1。其中,终端1可以包括但不仅限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
请参阅图2,本申请提供了一种数据存储方法,包括如下步骤:
S202:获取待写入数据。
具体地,终端因为自身系统框架的支持或者一些后台服务的设置,其可以获取待写入数据。
S204:判断目标存储块是否写满。
块存储,通过将数据拆分成块,并单独存储各个存储块,且每个存储块可以具有唯一标识符,因此能够将较小的数据存放在方便的位置。通过使用存储块存储数据,能够提高存储空间的利用效率,同时能够实现故障隔离。
具体地,可以定义终端中的所有存储块为目标存储块,遍历所有的目标存储块,并一一确定其是否写满。
S206:当目标存储块未写满时,将待写入数据写入目标存储块的未写入数据的存储单元。
具体地,终端遍历所有的目标存储块,并一一确定其是否写满;一经寻找到一个未写满的目标存储块时,则寻找该未写满的目标存储块中未写入数据的存储单元,并将待写入数据写入未写入数据的存储单元。通过上述写入数据的方式,数据存储方法在存储数据时,若目标存储块尚未写满,则无需擦除原数据,而可以在目标存储块的空白位置中直接写入,使得擦除动作不再只能以块为单位进行,减少了擦除动作的频率。
S208:当目标存储块写满时,擦除目标存储块中存储的数据,并将待写入数据写入目标存储块的存储单元。
上述实施例提供的数据存储方法,通过直接在未写入数据的存储单元上写入新的数据,直至存储块写满,才进行擦除,减少了每个存储单元的擦除次数,避免存储块在更新数据时频繁地擦除和写入,从而延长存储块的使用寿命。
目前的数据存储方法,对于写入数据过程中的意外掉电造成数据的改写和丢失,是借助于外部设备来处理的。比如,外部设备在写Flash后,在再读一下,如果读回值与之前写入值不一致的话,就再写一遍。这种数据存储方法的问题在于要求此外部设备在写数据的过程中不能也意外掉电,如果外部设备也与Flash一起意外掉电的话,那么在下次上电正常工作后,无法知道错误发生前原来的数据或者发生错误时要写入的数据,这样这个数据就丢失了。
为了解决上述技术问题,本申请还提供一个实施例,请参阅图3,该实施例中,目标存储块包括至少一个存储单元;在此基础上,步骤S206可以包括如下步骤:
S302:读取目标存储块的存储单元中的数据是否存在与待写入数据对应的目标数据。
其中,目标数据可以是目标存储块的存储单元中在写入待写入数据之前最后写入的数据。
可选地,终端可以遍历目标存储块上的所有存储单元并读取目标存储块的存储单元中的数据,直至找到存储有与待写入数据对应目标数据的存储单元。
S304:当存在时,则将目标数据的第一数据标识标记为旧数据,并将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
具体地,第一数据标识可以用于标记数据为新数据或旧数据。
当存在存储单元上存储有与待写入数据对应的目标数据时,这表明该目标存储块上存储有数据,此时则需要将目标存储块上最后存储的数据标记为旧数据,然后再写入新的待写入数据,并标记为新数据。
上述实施例中提供的数据存储方法,没有直接擦除原本存储的数据,而是将其标记为旧数据,即在写入新的待写入数据时,目标存储块上还保留有原本存储的数据,那么如果此时断电,目标存储块上原本存储的数据就不会丢失,避免了由于意外掉电造成的数据丢失问题,从而实现了数据的可靠存储。
请继续参阅图3,在其中一个实施例中,步骤S302之后,还可以包括如下步骤:
S306:当不存在时,将待写入数据写入存储单元,并将写入的待写入数据的第一数据标识标记为新数据。
当目标存储块上没有任何一个存储单元存储有与待写入数据对应的目标数据时,这表明该目标存储块上没有存储过任何数据,此时只需将待写入数据直接写入一个空白的存储单元,并标记为新数据。
具体地,当目标存储块上没有任何一个存储单元存储有与待写入数据对应的目标数据时,这可以对应第一次向目标存储块写入数据的情况。
上述实施例提供的数据存储方法,当目标存储块上不存在目标数据,即该目标存储块尚未被写入任何数据,此时可以在目标存储块的空白位置中直接写入,实现数据的可靠存储。
请参阅图4,图4为本申请其中一个实施例提供的数据存储方法的步骤S304中,将目标数据的第一数据标识标记为旧数据的流程示意图,具体的,步骤S304可以包括如下步骤:
S402:判断目标数据的第一数据标识是否为旧数据。
S404:若第一数据标识是旧数据,则将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
当目标存储块的存储单元中的数据存在与待写入数据对应的目标数据时,若判断结果为该目标数据的第一数据标识是旧数据,此时可以不对目标数据作任何操作,直接将待写入数据写入存储单元,并将写入的待写入数据的第一数据标识标记为新数据。
S406:若第一数据标识不是旧数据,则继续将目标数据的第一数据标识标记为旧数据,并将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
当目标存储块的存储单元中的数据存在与待写入数据对应的目标数据时,若判断结果为该目标数据的第一数据标识不是旧数据,此时需要先将目标数据标记为旧数据,再将待写入数据写入存储单元。
可选地,上述实施例中提供的数据存储方法,可以对应应用于以下场景:终端在写入新的待写入数据之前断电。若终端在写入新的待写入数据之前断电,通过数据存储方法,即使断电,目标存储块上仍然保留有旧的数据,避免发生新的待写入数据由于断电未能写入,而旧的数据也没能保留的情况。
为了应对更多意外断电的场景,保证断电时数据不会丢失,本申请还提供另一个实施例。请参阅图5,该实施例涉及的是数据上还具有第二数据标识的情况,在上述实施例中,在步骤S304之后,数据存储方法还可以包括如下步骤:
S502:将写入的待写入数据的第二数据标识标记为有效,且修改目标数据的第二数据标识为无效。
具体地,第二数据标识可以用于标记数据为有效或无效。
请参阅图6,在其中一个实施例中,步骤S304之前,数据存储方法还可以包括如下步骤:
S602:当存在至少两个目标数据,且其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据时,则将第一数据标识为旧数据的目标数据的第二数据标识标记为无效。
具体地,可以通过将第一数据标识为旧数据的目标数据的第二数据标识标记为无效,对目标存储块上新写入的数据和旧的数据进行区分。
请参阅图7,在上述实施例的基础上,步骤S304之后,数据存储方法还可以包括如下步骤:
S702:将写入的待写入数据的第二数据标识标记为有效,且修改第一数据标识为新数据的目标数据的第二数据标识为无效。
上述实施例涉及的是当存在至少两个目标数据,其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据时,则可以先将第一数据标识为旧数据的目标数据标记为无效,即表示这一目标数据为无效数据;此时还存在一个第一数据标识为新数据的目标数据,将该目标数据的第一数据标识标记为旧数据,然后将待写入数据写入存储单元,并将写入的待写入数据的第二数据标识标记为有效;最后,把该目标数据标记的第二数据标识修改为无效,至此,数据存储方法完成了一次数据更新,目标存储块上只有一个数据的第一数据标识为新数据,且第二数据标识标记为有效。
上述实施例中提供的数据存储方法,没有直接擦除原本存储的数据,而是将其标记为旧数据,即在写入新的待写入数据时,目标存储块上还保留有原本存储的数据;若终端在待写入数据已写入存储单元时断电,由于目标存储块上新写入的待写入数据及旧数据都还存在,且第二数据标识可以对其进行区分,目标存储块上原本存储的数据就不会丢失,避免了由于意外掉电造成的数据丢失问题,从而实现了数据的可靠存储。
具体地,在其中一个实施例中,当存在至少两个目标数据,其中一个目标数据的第一数据标识为新数据(此时这个目标数据的第一数据标识为新数据,且第二数据标识标记为有效),剩余的目标数据的第一数据标识为旧数据(此时这个目标数据的第一数据标识为旧数据,且第二数据标识标记为有效)时,则可以先将第一数据标识为旧数据,且第二数据标识标记为有效的目标数据标记为无效,即表示这一目标数据为无效数据;此时还存在一个第一数据标识为新数据,且第二数据标识标记为有效的目标数据,将该目标数据的第一数据标识标记为旧数据,然后将待写入数据写入存储单元,并将写入的待写入数据的第二数据标识标记为有效;最后,把该目标数据标记的第二数据标识修改为无效,至此,数据存储方法完成了一次数据更新,目标存储块上只有一个数据的第一数据标识为新数据,且第二数据标识标记为有效。
可选地,上述实施例中提供的数据存储方法,可以对应应用于以下场景:终端写入新的待写入数据,并将新的待写入数据的第一数据标识标记为新数据,且将目标数据的第一数据标识改为旧数据之后断电。若此时断电,通过数据存储方法,即使断电,目标存储块上仍然保留有旧的数据,且能够通过第二数据标识判断出最近的旧的数据,避免发生新的待写入数据由于断电未能写入,旧的数据没能保留,同时还无法区分出最近的旧的数据的情况。
可选地,在其中一个实施例中,终端也可以先遍历目标存储块上的所有存储单元并读取目标存储块的存储单元中的数据,直至找到存储有与待写入数据对应目标数据,且该目标数据的第二数据标识为有效的存储单元。
请参阅图8,在其中一个实施例中,本申请提供的数据存储方法可以如图8所示,该实施例涉及的是数据上具有第二数据标识的情况,数据存储方法可以包括如下步骤:
S801:获取待写入数据。
S802:判断目标存储块是否写满。
步骤S802之后,数据存储方法可以包括如下步骤:
S803:当目标存储块写满时,擦除目标存储块中存储的数据,并将待写入数据写入目标存储块的存储单元。
步骤S802之后,数据存储方法还可以包括如下步骤:
S804:当目标存储块未写满时,读取目标存储块的存储单元中的数据是否存在与待写入数据对应的目标数据。
具体地,在步骤S804中,通过读取目标存储块的存储单元中的数据是否存在与待写入数据对应的目标数据,判断目标存储块的存储单元中是否已经存储有数据。
步骤S804之后,数据存储方法可以包括如下步骤:
S805:当不存在与待写入数据对应的目标数据时,将待写入数据写入存储单元,并将写入的待写入数据的第一数据标识标记为新数据。
具体地,当目标存储块上没有任何一个存储单元存储有与待写入数据对应的目标数据时,这表明该目标存储块上没有存储过任何数据,此时只需将待写入数据直接写入一个空白的存储单元,并标记为新数据。
步骤S804之后,数据存储方法还可以包括如下步骤:
S806:当目标存储块的存储单元中的数据存在与待写入数据对应的目标数据时,获取目标存储块的存储单元中存在几个与待写入数据对应的目标数据的数量。
当存在存储单元上存储有与待写入数据对应的目标数据时,这表明该目标存储块上存储有数据,此时需要对存储单元上原本存储的数据进行进一步地判断。
为了应对更多意外断电的场景,保证断电时数据不会丢失,步骤S806之后,若仅存在一个目标数据,则数据存储方法可以包括如下步骤:
S807:判断目标数据的第一数据标识是否为旧数据。
步骤S807之后,数据存储方法可以包括如下步骤:
S808:若第一数据标识不是旧数据,则继续将目标数据的第一数据标识标记为旧数据,并将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
步骤S807之后,数据存储方法可以包括如下步骤:
S809:若第一数据标识是旧数据,则将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
步骤S806之后,若存在至少两个目标数据,且其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据时,则数据存储方法可以包括如下步骤:
S810:将第一数据标识为旧数据的目标数据的第二数据标识标记为无效。
下面对存在两个第二数据标识为有效的目标数据,且其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据的情况进行更详细的说明:
在其中一个实施例中,读取到目标存储块的存储单元中存在两个与待写入数据对应的目标数据,且其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据;此时数据存储方法可以包括如下步骤:
将第一数据标识为旧数据的目标数据的第二数据标识标记为无效;
将第一数据标识为新数据的目标数据的第一数据标识改为旧数据,并将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
具体地,将第一数据标识为旧数据的目标数据的第二数据标识标记为无效之后,数据存储方法的执行步骤和仅存在一个目标数据,且仅存在的该目标数据的第一数据标识不是旧数据这种情况相似。
请参阅图9,在其中一个实施例中,步骤S202之前,还可以包括如下步骤:
S902:对目标存储块未写入数据的存储单元进行冗余校验,以检查存储单元中的数据是否存在错误。
可选地,对目标存储块未写入数据的存储单元进行冗余校验的方式可以包括但不仅限于校验和、LRC(Longitudinal Redundancy Check,纵向冗余校验)、CRC(CyclicRedundancy Check,循环冗余校验)或ECC(Error Correcting Code,错误纠正码)校验等方式中的任意一种,本申请对于对目标存储块未写入数据的存储单元进行冗余校验的方式并不做限定;具体的,在其中一个实施例中,对目标存储块未写入数据的存储单元进行冗余校验的方式可以包括ECC校验。
在上述实施例的基础上,待写入数据或目标数据均可以包括以下字段:第一数据标识,第二数据标识,数据识别号,数据值及冗余校验位;其中,可以规定每一个数据具有一个唯一的数据识别号,且该数据识别号非全1;此时,冗余校验位可以是对数据识别号及数据值计算冗余校验的结果。
在其中一个实施例中,存储单元可以为40BIT(Binary digit,比特)的Flash存储单元,它可以包括1BIT的数据有效标记,1BIT的数据新旧标记,8BIT的数据识别号,24BIT的数据值和6BIT的冗余校验位;由于Flash擦除后为0,写入时只能把1变为0的特性,则可以规定第一数据标识1表示数据为新数据,0表示数据为旧数据;可以规定第二数据标识1表示数据有效,0表示数据无效;且可以规定每个数据均具有一个唯一的数据识别号,并且此数据识别号非全1;此时,6BIT的冗余校验位是对8BIT的数据标识号和24BIT的数据值计算冗余校验的结果。
请参阅图10,在其中一个实施例中,步骤S206之前,还可以包括如下步骤:
S1002:将待写入数据写入冗余校验正确的存储单元。
上述实施例中提供的数据存储方法,在写入数据之前,先进行冗余校验,能够纠正及检测比特错误,使得数据存储更加稳定。
应该理解的是,虽然图2-10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-10中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
请参阅图11,本申请还提供一种数据存储装置10,包括获取模块101、判断模块102及存储模块103。
具体地,获取模块101用于获取待写入数据;判断模块102用于判断目标存储块是否写满,当目标存储块未写满时,存储模块103用于将待写入数据写入目标存储块的未写入数据的存储单元,当目标存储块写满时,存储模块103用于擦除目标存储块中存储的数据,并将待写入数据写入目标存储块的存储单元。
上述数据存储装置,通过直接在未写入数据的存储单元上写入新的数据,直至存储块写满,才进行擦除,避免存储块在更新数据时频繁地擦除和写入,从而延长存储块的使用寿命。
在其中一个实施例中,存储模块103还可以用于读取目标存储块的存储单元中的数据是否存在与待写入数据对应的目标数据。
可选地,当存在与待写入数据对应的目标数据时,存储模块103还可以用于将目标数据的第一数据标识标记为旧数据,并将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
可选地,当不存在与待写入数据对应的目标数据时,存储模块103还可以用于将待写入数据写入存储单元,并将写入的待写入数据的第一数据标识标记为新数据。
上述实施例中提供的数据存储装置,当目标存储块上不存在目标数据,即该目标存储块尚未被写入任何数据,此时可以在目标存储块的空白位置中直接写入,实现数据的可靠存储。
在其中一个实施例中,存储模块103还可以用于判断目标数据的第一数据标识是否为旧数据。
可选地,若第一数据标识是旧数据,此时存储模块103还可以用于将待写入数据写入存储单元;在待写入数据写入存储单元后,存储模块103还可以用于将写入的待写入数据的第一数据标识标记为新数据。
可选地,若第一数据标识不是旧数据,此时存储模块103还可以用于将目标数据的第一数据标识标记为旧数据;在待写入数据写入存储单元后,存储模块103还可以用于将写入的待写入数据的第一数据标识标记为新数据。
上述实施例中提供的数据存储装置,可以对应应用于以下场景:终端在写入新的待写入数据之前断电。若终端在写入新的待写入数据之前断电,通过数据存储方法,即使断电,目标存储块上仍然保留有旧的数据,避免发生新的待写入数据由于断电未能写入,而旧的数据也没能保留的情况。
为了应对更多意外断电的场景,保证断电时数据不会丢失,本申请还提供另一个实施例。该实施例涉及的是数据上还具有第二数据标识的情况,在上述实施例中,存储模块103还可以用于将写入的待写入数据的第二数据标识标记为有效,且修改目标数据的第二数据标识为无效。
在其中一个实施例中,可以存在至少两个目标数据;具体地,在上述实施例的基础上,当其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据时,此时存储模块103还可以用于将第一数据标识为旧数据的目标数据的第二数据标识标记为无效。
上述实施例中提供的数据存储装置,可以通过将第一数据标识为旧数据的目标数据的第二数据标识标记为无效,对目标存储块上新写入的数据和旧的数据进行区分。
在其中一个实施例中,存储模块103还可以用于在将目标数据的第一数据标识标记为旧数据,待写入数据被写入存储单元且待写入数据的第一数据标识标记为新数据之后,将写入的待写入数据的第二数据标识标记为有效,且修改第一数据标识为新数据的目标数据的第二数据标识为无效。
上述实施例中提供的数据存储装置,没有直接擦除原本存储的数据,而是将其标记为旧数据,即在写入新的待写入数据时,目标存储块上还保留有原本存储的数据;若终端在待写入数据已写入存储单元时断电,由于目标存储块上新写入的待写入数据及旧数据都还存在,且第二数据标识可以对其进行区分,目标存储块上原本存储的数据就不会丢失,避免了由于意外掉电造成的数据丢失问题,从而实现了数据的可靠存储。
在其中一个实施例中,数据存储装置还包括冗余校验模块。
具体地,冗余校验模块可以用于对目标存储块未写入数据的存储单元进行冗余校验,以检查存储单元中的数据是否存在错误。
在其中一个实施例中,冗余校验模块可以与存储模块103相连接;在上述实施例的基础上,存储模块103还可以用于将待写入数据写入冗余校验正确的存储单元。
具体地,冗余校验正确的存储单元可以为经冗余校验模块检查后,未发现有数据存在错误的存储单元。
关于数据存储装置的具体限定可以参见上文中对于数据存储方法的限定,在此不再赘述。上述数据存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请还提供一种非易失性存储器件,非易失性存储器件存储有计算机程序,计算机程序被处理器执行时可以实现如下步骤:
获取待写入数据;
判断目标存储块是否写满;
当目标存储块未写满时,将待写入数据写入目标存储块的未写入数据的存储单元;
当目标存储块写满时,擦除目标存储块中存储的数据,并将待写入数据写入目标存储块的存储单元。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
读取目标存储块的存储单元中的数据是否存在与待写入数据对应的目标数据;
当存在时,则将目标数据的第一数据标识标记为旧数据,并将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
当不存在时,将待写入数据写入存储单元,并将写入的待写入数据的第一数据标识标记为新数据。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
判断目标数据的第一数据标识是否为旧数据;
若第一数据标识是旧数据,则将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据;
若第一数据标识不是旧数据,则继续将目标数据的第一数据标识标记为旧数据,并将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
将写入的待写入数据的第二数据标识标记为有效,且修改目标数据的第二数据标识为无效。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
当存在至少两个目标数据,且其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据时,则将第一数据标识为旧数据的目标数据的第二数据标识标记为无效。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
将写入的待写入数据的第二数据标识标记为有效,且修改第一数据标识为新数据的目标数据的第二数据标识为无效。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
对目标存储块未写入数据的存储单元进行冗余校验,以检查存储单元中的数据是否存在错误。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
将待写入数据写入冗余校验正确的存储单元。
本申请还提供一种存储器,存储器存储有计算机程序,计算机程序被处理器执行时可以实现如下步骤:
获取待写入数据;
判断目标存储块是否写满;
当目标存储块未写满时,将待写入数据写入目标存储块的未写入数据的存储单元;
当目标存储块写满时,擦除目标存储块中存储的数据,并将待写入数据写入目标存储块的存储单元。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
读取目标存储块的存储单元中的数据是否存在与待写入数据对应的目标数据;
当存在时,则将目标数据的第一数据标识标记为旧数据,并将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
当不存在时,将待写入数据写入存储单元,并将写入的待写入数据的第一数据标识标记为新数据。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
判断目标数据的第一数据标识是否为旧数据;
若第一数据标识是旧数据,则将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据;
若第一数据标识不是旧数据,则继续将目标数据的第一数据标识标记为旧数据,并将待写入数据写入存储单元后,将写入的待写入数据的第一数据标识标记为新数据。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
将写入的待写入数据的第二数据标识标记为有效,且修改目标数据的第二数据标识为无效。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
当存在至少两个目标数据,且其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据时,则将第一数据标识为旧数据的目标数据的第二数据标识标记为无效。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
将写入的待写入数据的第二数据标识标记为有效,且修改第一数据标识为新数据的目标数据的第二数据标识为无效。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
对目标存储块未写入数据的存储单元进行冗余校验,以检查存储单元中的数据是否存在错误。
在其中一个实施例中,计算机程序被处理器执行时还可以实现如下步骤:
将待写入数据写入冗余校验正确的存储单元。
本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种数据存储方法,其特征在于,所述方法包括:
获取待写入数据;
判断目标存储块是否写满;
当所述目标存储块未写满时,将所述待写入数据写入所述目标存储块的未写入数据的存储单元;
当所述目标存储块写满时,擦除所述目标存储块中存储的数据,并将所述待写入数据写入所述目标存储块的存储单元。
2.根据权利要求1所述的方法,其特征在于,所述目标存储块包括至少一个存储单元,所述将所述待写入数据写入所述目标存储块的未写入数据的存储单元,包括:
读取所述目标存储块的所述存储单元中的数据是否存在与所述待写入数据对应的目标数据;
当存在时,则将所述目标数据的第一数据标识标记为旧数据,并将所述待写入数据写入所述存储单元后,将写入的所述待写入数据的所述第一数据标识标记为新数据。
3.根据权利要求2所述的方法,其特征在于,所述读取所述目标存储块的所述存储单元中的数据是否存在与所述待写入数据对应的目标数据之后,所述方法还包括:
当不存在时,将所述待写入数据写入所述存储单元,并将写入的所述待写入数据的所述第一数据标识标记为新数据。
4.根据权利要求2所述的方法,其特征在于,所述将所述目标数据的第一数据标识标记为旧数据,包括:
判断所述目标数据的第一数据标识是否为旧数据;
若所述第一数据标识是旧数据,则将所述待写入数据写入所述存储单元后,将写入的所述待写入数据的所述第一数据标识标记为新数据;
若所述第一数据标识不是旧数据,则继续将所述目标数据的第一数据标识标记为旧数据,并将所述待写入数据写入所述存储单元后,将写入的所述待写入数据的所述第一数据标识标记为新数据。
5.根据权利要求2至4中任意一项所述的方法,其特征在于,所述将写入的所述待写入数据的所述第一数据标识标记为新数据之后,包括:
将写入的所述待写入数据的第二数据标识标记为有效,且修改所述目标数据的第二数据标识为无效。
6.根据权利要求2至4中任意一项所述的方法,其特征在于,所述将所述目标数据的第一数据标识标记为旧数据之前,所述方法还包括:
当存在至少两个所述目标数据,且其中一个目标数据的第一数据标识为新数据,剩余的目标数据的第一数据标识为旧数据时,则将第一数据标识为旧数据的所述目标数据的第二数据标识标记为无效;
所述将所述目标数据的第一数据标识标记为旧数据,并将所述待写入数据写入所述存储单元后,将写入的所述待写入数据的所述第一数据标识标记为新数据之后,包括:
将写入的所述待写入数据的第二数据标识标记为有效,且修改第一数据标识为新数据的所述目标数据的第二数据标识为无效。
7.根据权利要求1所述的方法,其特征在于,所述获取待写入数据之前,所述方法还包括:
对目标存储块未写入数据的存储单元进行冗余校验,以检查所述存储单元中的数据是否存在错误;
所述当所述目标存储块未写满时,将所述待写入数据写入所述目标存储块的未写入数据的存储单元,包括:
将所述待写入数据写入冗余校验正确的所述存储单元。
8.一种数据存储装置,其特征在于,所述数据存储装置包括:
获取模块,用于获取待写入数据;
判断模块,用于判断目标存储块是否写满;
存储模块,当所述目标存储块未写满时,所述存储模块用于将所述待写入数据写入所述目标存储块的未写入数据的存储单元;当所述目标存储块写满时,所述存储模块用于擦除所述目标存储块中存储的数据,并将所述待写入数据写入所述目标存储块的存储单元。
9.一种非易失性存储器件,所述非易失性存储器件存储有计算机程序,其特征在于,所述计算机程序被处理器执行时可实现如权利要求1至7中任意一项所述的数据存储方法。
10.一种存储器,所述存储器存储有计算机程序,其特征在于,所述计算机程序被处理器执行时可实现如权利要求1至7中任意一项所述的数据存储方法。
CN202110714469.1A 2021-06-25 2021-06-25 数据存储方法、装置、非易失性存储器件和存储器 Active CN113434086B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110714469.1A CN113434086B (zh) 2021-06-25 2021-06-25 数据存储方法、装置、非易失性存储器件和存储器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110714469.1A CN113434086B (zh) 2021-06-25 2021-06-25 数据存储方法、装置、非易失性存储器件和存储器

Publications (2)

Publication Number Publication Date
CN113434086A true CN113434086A (zh) 2021-09-24
CN113434086B CN113434086B (zh) 2024-02-02

Family

ID=77755277

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110714469.1A Active CN113434086B (zh) 2021-06-25 2021-06-25 数据存储方法、装置、非易失性存储器件和存储器

Country Status (1)

Country Link
CN (1) CN113434086B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113641596A (zh) * 2021-10-18 2021-11-12 北京壁仞科技开发有限公司 缓存管理方法、缓存管理装置、处理器

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020069313A1 (en) * 2000-12-04 2002-06-06 Kabushiki Kaisha Toshiba Controller for controlling nonvolatile memory unit
US20050013154A1 (en) * 2002-10-02 2005-01-20 Toshiyuki Honda Non-volatile storage device control method
US20070150689A1 (en) * 2005-12-22 2007-06-28 Pandit Anil K Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
CN101477483A (zh) * 2008-12-31 2009-07-08 成都市华为赛门铁克科技有限公司 一种基于非易失性存储介质的快照处理方法及装置
US20100088482A1 (en) * 2008-10-02 2010-04-08 Torsten Hinz Process and Method for Erase Strategy in Solid State Disks
US20150161036A1 (en) * 2013-12-09 2015-06-11 International Business Machines Corporation Programming non-volatile memory using a relaxed dwell time
CN106776362A (zh) * 2015-11-24 2017-05-31 中芯国际集成电路制造(上海)有限公司 存储器的控制方法及装置
CN107256197A (zh) * 2017-05-18 2017-10-17 深圳市晟碟半导体有限公司 一种数据存储方法、存储装置及智能终端
CN107422987A (zh) * 2017-06-05 2017-12-01 青岛海信宽带多媒体技术有限公司 一种在非易失性存储器中存储数据的方法及装置
CN107797765A (zh) * 2017-09-26 2018-03-13 昆明理工大学 一种延长电可擦除存储元件使用寿命的方法
CN110069218A (zh) * 2019-04-22 2019-07-30 珠海全志科技股份有限公司 冷热数据分离方法、装置、计算机设备及存储介质
CN112181303A (zh) * 2020-09-29 2021-01-05 广东艾科技术股份有限公司 数据存储方法、装置、计算机设备和存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020069313A1 (en) * 2000-12-04 2002-06-06 Kabushiki Kaisha Toshiba Controller for controlling nonvolatile memory unit
US20050013154A1 (en) * 2002-10-02 2005-01-20 Toshiyuki Honda Non-volatile storage device control method
US20070150689A1 (en) * 2005-12-22 2007-06-28 Pandit Anil K Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US20100088482A1 (en) * 2008-10-02 2010-04-08 Torsten Hinz Process and Method for Erase Strategy in Solid State Disks
CN101477483A (zh) * 2008-12-31 2009-07-08 成都市华为赛门铁克科技有限公司 一种基于非易失性存储介质的快照处理方法及装置
US20150161036A1 (en) * 2013-12-09 2015-06-11 International Business Machines Corporation Programming non-volatile memory using a relaxed dwell time
CN106776362A (zh) * 2015-11-24 2017-05-31 中芯国际集成电路制造(上海)有限公司 存储器的控制方法及装置
CN107256197A (zh) * 2017-05-18 2017-10-17 深圳市晟碟半导体有限公司 一种数据存储方法、存储装置及智能终端
CN107422987A (zh) * 2017-06-05 2017-12-01 青岛海信宽带多媒体技术有限公司 一种在非易失性存储器中存储数据的方法及装置
CN107797765A (zh) * 2017-09-26 2018-03-13 昆明理工大学 一种延长电可擦除存储元件使用寿命的方法
CN110069218A (zh) * 2019-04-22 2019-07-30 珠海全志科技股份有限公司 冷热数据分离方法、装置、计算机设备及存储介质
CN112181303A (zh) * 2020-09-29 2021-01-05 广东艾科技术股份有限公司 数据存储方法、装置、计算机设备和存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113641596A (zh) * 2021-10-18 2021-11-12 北京壁仞科技开发有限公司 缓存管理方法、缓存管理装置、处理器

Also Published As

Publication number Publication date
CN113434086B (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
US10552311B2 (en) Recovery for non-volatile memory after power loss
KR100870392B1 (ko) 시스템 및 데이터 저장 방법
JP4560408B2 (ja) 不揮発性記憶装置の制御方法
JP4950886B2 (ja) 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法
JP5142685B2 (ja) メモリシステム
JPH09330273A (ja) メモリカードおよびメモリカードにおける誤り訂正方法
JP2009512022A (ja) フラッシュメモリの管理
JP4570891B2 (ja) 記憶装置
US8201053B2 (en) Dynamic electronic correction code feedback to extend memory device lifetime
CN109582216B (zh) 数据储存装置与存储器装置的数据处理方法
JP2002351685A (ja) 不揮発性メモリのデータ更新方法及び制御装置
CN107239411B (zh) 一种车载控制器内存管理方法及系统
JP4158526B2 (ja) メモリカード及びメモリへのデータ書き込み方法
CN113434086B (zh) 数据存储方法、装置、非易失性存储器件和存储器
JP3981268B2 (ja) 不揮発性メモリ及びそのデータ更新方法
JP2005222202A (ja) 不揮発性記憶装置のデータ保護方法
JPH08203292A (ja) 不揮発性メモリ
CN111258498B (zh) 一种flash存储器管理方法
CN111124742B (zh) Flash数据校验方法及Flash控制器、存储介质、设备
US6950349B2 (en) Nonvolatile semiconductor memory having partial data rewriting function
CN110908825B (zh) 一种数据读取方法、装置、存储设备及存储介质
JP4239754B2 (ja) 不揮発メモリシステム
US20060143369A1 (en) Nonvolatile memory and card reader provided with the same
CN112540882A (zh) 闪存设备检测系统及闪存设备检测方法
CN110795275A (zh) 基于异常掉电过程中的异常块识别方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant