CN111708487A - 一种数据存储的方法、装置及计算机存储介质 - Google Patents
一种数据存储的方法、装置及计算机存储介质 Download PDFInfo
- Publication number
- CN111708487A CN111708487A CN202010452056.6A CN202010452056A CN111708487A CN 111708487 A CN111708487 A CN 111708487A CN 202010452056 A CN202010452056 A CN 202010452056A CN 111708487 A CN111708487 A CN 111708487A
- Authority
- CN
- China
- Prior art keywords
- page
- data
- written
- state
- storage area
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000013500 data storage Methods 0.000 title claims abstract description 75
- 230000015654 memory Effects 0.000 claims description 48
- 238000012216 screening Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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
技术领域
本发明涉及数据存储领域,特别是涉及一种数据存储的方法、装置及计算机存储介质。
背景技术
近些年随着物联网技术的飞速发展,对众多嵌入式设备的功耗和尺寸要求越来越高,而信息存储在嵌入式系统中承担重要任务,传统的嵌入式系统信息存储大多依赖于外部的EEPROM,该方法虽然较稳定可靠,但会增加额外的功耗、成本、电路板空间等弊端,于是近些年对应用中存储数据量不高的嵌入式设备,转用微处理器内部的Flash闪存做存储。
但是由于微处理器内部的Flash却存在着存储容量大,每页的擦除次数有限、且只能以片为单元进行擦除操作等特点,如若频繁的更新少量的数据,会大大加快该数据页面的存储寿命耗尽,进而导致设备的损坏。同时在现有技术中对Flash中的页面进行数据更新时,每次更新数据前需要将整个页面的数据读取到RAM中,再执行擦除该数据所在页操作,那么如若在数据更新过程中设备异常断电,则会导致Flash中存储的数据丢失,进而使得用户体验较差,故需要一种可以解决上述问题的技术方案。
发明内容
本发明主要解决的技术问题是提供一种数据存储的方法、装置及计算机存储介质,能够延长存储器的存储寿命。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种数据存储的方法,所述方法应用于数据存储区,所述数据存储区包括多个页面,所述多个页面的状态包括活动状态和接收状态;所述方法包括:
获取待写入数据;
判断处于所述活动状态的第一页面是否写满;
若是,则将所述待写入数据以及所述第一页面中的有效数据写入至处于接收状态的第二页面,并将所述第二页面的状态更新为活动状态。
为解决上述技术问题,本发明采用的另一个技术方案是:提供一种数据存储的装置,所述装置包括耦接的存储器和处理器,其中,
所述存储器包括本地储存,且存储有计算机程序;
所述处理器用于运行所述计算机程序,以执行如上所述的方法。
为解决上述技术问题,本发明采用的又一个技术方案是:提供一种计算机存储介质,所述计算机存储介质存储有能够被处理器运行的计算机程序,所述计算机程序用于实现如上所述的方法。
本发明所提供的技术方案应用于数据存储区,在本发明所提供的技术方案中,数据存储区包括多个页面,多个页面的状态包括活动状态和接收状态,通过获取待写入数据,然后判断处于活动页状态的第一页面是否写满,并在判断得到第一页面写满时,将待写入数据以及第一面中的有效数据写入至处于接收状态的第二页面,并将第二页面的状态更新为活动状态,以便后续数据的写入,可以较好地减少对于存储区同一区域进行频繁的擦除,进而延长了存储区的使用寿命。
附图说明
图1为本发明一种数据存储的方法一实施例中的流程示意图;
图2为本发明一种数据存储的方法另一实施例中的流程示意图;
图3为本发明一种数据存储的方法又一实施例中的流程示意图;
图4为本发明一种数据存储的方法又一实施例中的流程示意图;
图5为本发明一种数据存储的方法再一实施例中的流程示意图;
图6为本发明一种数据存储的方法再一实施例中的流程示意图;
图7为本发明一种数据存储的方法一实施例中的应用场景示意图;
图8为本发明一种数据存储的方法另一实施例中的应用场景示意图;
图9为本发明一种数据存储的方法再一实施例中的应用场景示意图;
图10是本发明一种数据存储的装置一实施例中的结构示意图;
图11是本发明一种计算机存储介质一实施例结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参见图1,图1为本发明一种数据存储的方法一实施例中的流程示意图。
本发明所提供的方法应用于数据存储区。其中,数据存储区至少包括flash存储器中预设的部分存储区。在其他实施例中,数据存储区还可以是指代其他的类型存储器中预设的存储区。
在当前实施例中,当数据存储区是flash存储器中预设的部分存储区时,该存储区具体可指是被预先设置的专门用于存储数据的存储区域。
数据存储区包括多个页面,多个页面的状态包括活动状态和接收状态。当页面处于活动状态时,该页面为用于写入待存储数据的页面,在本发明所提供的技术方案中,将处于活动状态的页面定义为第一页面,第一页面在被写满后且被擦除后可转为第二页面;当页面处于接收状态时,此页面是为暂不可写入数据的页面,在本发明所提供的技术方案中,会将处于接收状态的页面定义为第二页面。进一步地,第二页面可以在处于活动状态的第一页面写满时被直接或间接转换为活动状态的第一页面。
在当前实施例中,本发明所提供的方法包括步骤S110至步骤S130。
S110:获取待写入数据。
其中,待写入数据是用户输入的或者是其他程序输入的等待存储至数据存储区的数据。需要说明的是,在此对于待写入数据的类型不做限定。
当系统中预先设定待写入数据为某特定类型的数据时,那么本发明所提供的方法在步骤S110获取待写入数据之后,还包括:将待写入数据转换为设定类型数据,其中设定类型数据为系统预先设定的可以存储至数据存储区的数据类型。
S120:判断处于活动状态的第一页面是否写满。
获取到待写入数据之后,进一步判断当前处于活动状态的第一页面是否已经写满。若判断得到处于活动状态的第一页面中没有空闲的单元存储区域时,则判断得到该第一页面已经写满,则会执行步骤S130;反之,若判断得到处于活动状态的第一页面中存在空闲的单元存储区域时,则会将步骤S110中所获取的待写入数据写入至该第一页面的空闲单元存储区域处,以完成将待写入数据存储至数据存储区。
进一步地,在一实施例中,当设定了向页面写入数据的方向时,则步骤S120中判断处于活动状态的第一页面是否写满则进一步包括:按照设定的方向或与设定方向相反的方向查询第一页面中是否存在空闲的单元存储区域,以判断处于活动状态的第一页面是否写满;当按照设定的方向查询至第一页面的最后一个单元存储区域,得到该页面没有空闲的单元存储区域时,在判断该第一页面已经写满,对应的会执行步骤S130;反之,则判断该第一页面没有写满,则会将待写入数据写入至最先查询得到的空闲单元存储区域。其中,一个单元存储区域至少包括一个字,每个字包括4个字节。
更进一步地,在另一实施例中,上述步骤S120中判断处于活动状态的第一页面是否写满进一步包括:按照与数据写入方向相同的方向查询第一页面中是否存在空闲的单元存储区域,以判断处于活动状态的第一页面是否写满。
S130:将待写入数据以及第一页面中的有效数据写入至处于接收状态的第二页面,并将第二页面的状态更新为活动状态。
若上述步骤S120中判断得到第一页面写满,则会将待写入数据以及第一页面中的有效数据写入至处于接收状态的第二页面,并将第二页面的状态自接收状态更新为活动状态,以接收待写入数据。其中,有效数据是指第一页面中在时间上最具备时效性的数据。
本发明图1所对应的实施例中所提供的方法,通过获取待写入数据,然后判断处于活动状态的第一页面是否写满,并在判断得到第一页面写满时,将待写入数据以及第一面中的有效数据写入至处于接收状态的第二页面,并将第二页面的状态更新为活动状态,以便后续数据的写入,可以较好地减少对于数据存储区同一区域进行频繁的擦除,即通过对数据存储区进行划分得到多个页面并将对于数据存储区擦除的次数平均划分至各个页面,进而较好地减少整个数据存储区的擦除次数,相比于现有技术中因为数据写满即擦除数据,进而使得对于数据存储区的频繁擦除,本发明所提供的技术方案可以较好地延长数据存储区及存储器的使用寿命。
在一实施例中,在本发明所提供的技术方案中,在获取待写入数据之前,还包括:在非易失性存储器中创建数据存储区,并将数据存储区划分得到多个页面。其中,数据存储区是用户预先在非易失性存储器中创建的预设大小的用于存储数据的存储区域。在此对于数据存储区的大小和位置不做任何限定,具体可以根据实际需求进行设置。
进一步地,页面的状态还包括擦除状态。其中,擦除状态是指已被擦除数据、且页面为空白的页面。故在当前实施例中,页面的状态包括:活动状态、接收状态和擦除状态中的一种,且页面可以由擦除状态转换为接收状态,也可以由接收状态转换为活动状态,并在处于活动状态的第一页面写满时,并完成有效数据转移至第二页面后,处于活动状态的第一页面擦除数据之后即可转为擦除状态。
更进一步的,当页面的状态包括活动状态、接收状态和擦除状态中的一种时,则上述将数据存储区划分得到多个页面进一步包括:将数据存储区划分为至少三个页面。可以理解的是,在其他实施例中,将数据存储区划分为三个以上的页面,具体在此不做限定。
更进一步的,页面包括页眉区域。页眉区域用于存储页面的状态和页面或是整个数据存储区的擦除次数。其中,如上所述,页面的状态包括:活动状态、接收状态和擦除状态中的一种。且不同的页面状态对应不同的设定字符标识。如可以分别选用“01”“02”和“03”标识活动状态、接收状态和擦除状态三种状态。在一实施例中,页面的擦除次数是指该页面被擦除的总次数,以便根据页面的擦除次数判断非易失性存储器的寿命是否被耗尽。在另一实施例中,页面的擦除次数是指数据存储区的擦除总次数,只有当数据存储区所包括的所有页面全部被擦除一次,对应的将页面的擦除次数增加一。在当前实施例中,可以通过记录页面被擦除的次数或记录数据存储区的擦除次数,可以较好地监测数据存储区或存储器的寿命。
进一步地,在创建数据存储区,并将数据存储区划分得到多个页面之后,本发明所提供的方法还包括:在为每个页面设置各自当前状态。其中,若某一页面用于存储有效数据,则页面的状态为活动状态,若页面用于写入处于活动状态的页面中的有效数据,则页面的状态为接收状态,若页面中的数据已被擦除,且页面没有被转为接收状态时,此时页面的状态为擦除状态。需要说明的是,在本发明所提供的技术方案中,在数据存储区中,只会包括一个处于活动状态的第一页面和一个处于接收状态的第二页面,可以包括至少一个处于擦除状态的页面。
进一步地,请参见图2,图2为本发明一种数据存储的方法另一实施例中的流程示意图。在当前实施例中,本发明所提供的方法包括:
S201:获取待写入数据。
S202:判断处于活动状态的第一页面是否写满。
在当前实施例中,步骤S201和步骤S202与上述图1中的步骤S110和步骤S120相同,具体可以参见图1中对应的阐述,在此不再详述。
在当前实施例中,页面的状态还包括擦除状态,如上所述,处于擦除状态的页面在设定的条件下可以转换为接收状态,页面系统的控制下可以再由接收状态转换为活动状态以用于存储有效数据和待写入数据。在步骤将待写入数据以及第一页面中的有效数据写入至处于接收状态的第二页面之前,本发明所提供的方法还包括步骤S203。
S203:将一处于擦除状态的页面转换为接收状态,以作为第二页面。
在判断得到当前处于活动状态的第一页面写满之后,进一步将一个处于擦除状态的页面转换为接收状态,以作为第二页面接收第一页面中的有效数据以及用于写入待写入数据。其中,处于接收状态的页面至少是用于接收第一页面中的有效数据。
在当前实施例中,上述步骤S130中的将待写入数据以及第一页面中的有效数据写入至处于接收状态的第二页面,进一步包括步骤S204至步骤S205。
S204:将第一页面中的有效数据写入至处于接收状态的第二页面。
首先自第一页面中筛选出有效数据,然后将筛选所得的有效数据写入至处于接收状态的第二页面。其中,存储至单元存储区域的数据至少包括虚拟地址和数据字段。每个虚拟地址在本发明所提供的技术方案中具有唯一性,在同一页面中可以分别写入对应同一虚拟地址的不同数据,基于较晚写入的数据的时效性要优于较早写入的数据的时效性,相对的此时则会将较晚写入的数据定义为有效数据。进一步地,关于有效数据的筛选可以参见下文图4及图5所对应的实施例中的阐述内容。
进一步地,在一实施例中,在将第一页面中的有效数据写入至处于接收状态的第二页面之后,本发明所提供的方法还包括:擦除第一页面上的数据,并将第一页面的状态修改为擦除状态。在当前实施例中,在完成将第一页面中的有效数据写入至处于接收状态的第二页面之后,由于此时该第一页面中的有效数据全部被转移至第二页面中,故可以将已经写满的第一页面中的数据擦除掉,并将完成数据擦除的页面的状态修改为擦除状态,以在其他的页面被写满之后被调用为第二页面。
进一步地,在将第一页面中的有效数据写入至处于接收状态的第二页面之后,本发明所提供的方法还包括:将第二页面的状态修改为活动状态,用于写入待写入数据。
S205:在有效数据写入成功后,将待写入数据写入至第二页面,以作为第二页面中的已写入数据。
在当前实施例中,是将有效数据写入至第二页面之后,进一步再将待写入数据写入至第二页面,将第一页面中的有效数据和待写入数据均作为该第二页面的已写入数据。
需要说明的是,在当前实施例中,并不限定步骤S206和步骤擦除第一页面上的数据,并将第一页面的状态修改为擦除状态的先后顺序。
请参见图3,图3为本发明一种数据存储的方法又一实施例中的流程示意图。
进一步地,本发明所提供的技术方案中,每个页面中包括若干单元存储区域。单元存储区域用于存储至少一个已写入数据。对应的,上述步骤判断处于活动状态的第一页面是否写满进一步包括:
S301:按照单元存储区域的第一排序方向检测第一页面是否存在空余的单元存储区域。
在判断处于活动状态的第一页面是否写满时,首先按照单元存储区域的第一排序方向检测第一页面是否存在空余的单元存储区域。其中,第一排序方向是预先设定的将待写入数据写入至第一页面的顺序,空余的单元存储区域是指没有被写入数据的单元存储区域或是可以写入待写入数据的单元存储区域。
更进一步地,当每个单元存储区域中可以写入多组数据时,则步骤S301进一步包括:按照单元存储区域的第一排序方向检测第一页面中是否存在可以写入待写入数据的空余的单元存储区域。在当前实施例,空余的单元存储区域是指可以写入数据的单元存储区域。如,一个单元存储区域中可以写入三组数据时,当检测到某个单元存储区域中只写入了一组数据,则此时判断得到该单元存储区域为可写入数据的空余的单元存储区域,对应的,当经过检测得到当前页面中存在可以写入数据的空余单元存储区域时,则判断得到当前的页面没有写满。更进一步地,在其他实施例中,只有判断得到存在可以容纳待写入数据的存储空间的单元存储区域时,才会判断得到当前页面中存在可以写入数据的空余单元存储区域。
可以理解的是,在其他实施例中,当每个单元存储区域中可以写入多组数据时,步骤S301也可以是按照单元存储区域的第一排序方向检测第一页面中是否存在完全没有写入任何数据的空余的单元存储区域。在当前实施例中,只有检测到单元存储区域中没有写入任何一组数据时,才可以判断该单元存储区域为空余的单元存储区域,对应的,此时才判断该页面没有被写满。反之,当经过检测得到,该页面中存在已经写有数据但是没有写满的单元存储区域,即该页面中不存在完全没有被写入任何数据的单元存储区域,则判断得到该页面的已经被写满。
S302:判断第一页面已写满。
若经过检测得到第一页面中当前不存在空余的单元存储区域,即说明当前第一页面中所有的单元存储区域全部已经被写入数据,此时判断得到第一页面已经写满。在判断的得到第一页面写满之后,进一步将待写入数据以及当前第一页面中的有效数据写入至处于接收状态的第二页面。
S303:否则判断第一页面未写满,并将待写入数据写入至空余的单元存储区域,以作为单元存储区域中的已写入数据。
若在按照单元存储区域的第一排序方向检测得到,第一页面中存在空余的单元存储区域,则判断得到第一页面未写满。对应的此时,则会将待写入数据直接写入在当前第一页面中最先检测所得的空余的单元存储区域中,以作为该单元存储区域中的已写入数据。
进一步地,当每个单元存储区域中可以写入多组数据时,则步骤S303进一步包括:若检测到某一单元存储区域中的各个字没有全部写满数据时,即检测到某个单元存储区域中存在空闲的字时,则将待写入数据写入至最先检测到的空余的单元存储区域中的空余的字处,以作为该单元存储区域中的已写入数据。其中,需要说明的是,在当前实施例中待写入数据所占的存储空间小于或等于一个字。
如若在一实施例中,一个单元存储区域中包括三个字,但是每组待写入数据需要两字的存储空间进行存储时,则会在每个单元存储区域中只写入一组待写入数据,此时该单元存储区域中则会剩余一个字的存储空间,故会向该单元存储空间写入所需存储空间小于或等于一个字的待写入数据。更进一步地,如若在当前实施例中规定每一组待写入数据大小相等,且都是占用两个字的存储空间时,则本发明所提供的方法中,在执行步骤S301时,则按照单元存储区域的第一排序方向检测第一页面是否存在空余的且可用存储空间大于或等于待写入数据的单元存储区域,若没有,则判断当前第一页面写满,反之,则会将待写入数据写入至最先检测到的空余的且可用存储空间大于或等于待写入数据的单元存储区域。
请参见图4,图4为本发明一种数据存储的方法又一实施例的流程示意图。在当前实施例中,上述步骤S205将第一页面中的有效数据写入至处于接收状态的第二页面,进一步包括:
S401:按照单元存储区域的第二排序方向,从第一页面中筛选出最新的已写入数据以作为有效数据。
首先需要说明的是,在本发明所提供的技术方案中,待写入数据和已写入数据均包括虚拟地址以及数据字段,且本发明所提供的技术方案中,每个虚拟地址具有唯一性,且虚拟地址的数量小于或等于每一个页面可以容纳的数据量的设定比例。如在一实施例中,每个页面可以最多容纳512组数据,对应的虚拟地址的数量则小于512,虚拟地址的数量具体可以根据实际的需要进行设置。
在将第一页面中的有效数据写入至处于接收状态的第二页面时,首先要自写满的第一页面中筛选出有效数据。具体地,筛选有效数据是按照页面中单元存储区域的第二排序方向,从第一页面中筛选出最新的已写入数据作为有效数据。其中,最新的已写入数据仅是针对具有相同虚拟地址的数据而言,在当前实施例中,对于虚拟地址相同的已写入数据,是根据时间对于数据有效性的影响,将最新写入即最晚写入的数据确定为有效数据。如当第一页面中,对于同一虚拟地址“0001”自第二排序方向前后有三组对应的数据字段“12FF”、“0033”和“1435”,经过步骤S401对于有效数据的筛选,则会将虚拟地址“0001”及其所对应的数据字段“12FF”作为有效数据。其中,第一排序方向和第二排序方向为相反的方向,第一排序方向为待写入数据写入的方向,第二排序方向为与待写入数据写入方向相反的方向,为用于检测筛选有效数据的方向。如,在一实施例中,向活动页面或者是第二页面写入数据的方向是自页面上方至下方写入时,对应的,第一排序方向为自上而下的方向,第二排序方向则为自下而上的方向。
进一步地,请参见图5,图5为本发明一种数据存储的方法再一实施例中的流程示意图。在当前实施例中,着重阐述的是上述步骤S401按照单元存储区域的第二排序方向,从第一页面中筛选出最新的已写入数据以作为有效数据,进一步包括:
S501:按照第二排序方向,读取第一页面中每个单元存储区域中的已写入数据。
按照第二排序方向,读取第一页面中每个单元存储区域中的已写入数据,以根据读取到的数据中的虚拟地址判断该已写入数据是否是最新的有效数据。进一步地,步骤S501可以理解为按照第二排序方向,读取第一页面中每个单元存储区域中所包括的已写入数据的虚拟地址,以判断虚拟地址是否是第一次出现,进而判断该虚拟地址及其所对应的数据字段是否为有效数据。
进一步地,当每个单元存储区域中包括多个已写入数据时,则会在单元存储区域中按照与数据写入方向相反的方向,依次读取单元存储区域所包括的已写入数据,并判断所读取到的已写入数据的虚拟地址是否为在当前页面中首次读取到的,若是,则判断该虚拟地址当前所对应的已写入数据为有效数据,反之,则判断该已写入数据为无效数据。
S502:若读取的已写入数据中的虚拟地址为第一次出现,则确定已写入数据为最新的已写入数据。
若读取的已写入数据中的虚拟地址为第一次出现,则确定该虚拟地址对应的已写入数据为最新的已写入数据,即判断得到该已写入数据为有效数据,此时会执行下述步骤S402;反之,若通过读取已写入数据判断得到虚拟地址为非第一次出现,则确定该虚拟地址对应的已写入数据为无效数据,对应的,会舍弃该虚拟地址对应的已写入数据。
S402:将有效数据按照第一排序方向写入至第二页面的至少一个单元存储区域中。
若判断得到某一虚拟地址对应的已写入数据为最新已写入数据时,即判断得到该已写入数据为有效数据,则会将该有效数据按照第一排序方向写入至第二页面的至少一个单元存储区域中。
更进一步地,在一实施例中,当确定了第一页面的有效数据之后进一步会将有效数据按照第一排序方向依次写入第二页面中的各个单元存储区域中,即在第二页面靠近页眉部分的单元存储区域写入自第一页面中筛选所得的有效数据;然后再写入待写入数据。其中,用于写入有效数据的单元存储区域的数量是根据筛选所得有效数据的数量确定,具体在此不做限定。
在另一实施例中,当确定了第一页面的有效数据之后,本发明所提供的方法还包括:进一步将所确定的有效数据与待写入数据进行比较,以判断待写入数据的虚拟地址与自第一页面中筛选所得的有效数据的虚拟地址是否相同,若是,则利用待写入数据的数据字段覆盖对应有效数据的数据字段,然后再将有效数据按照第一排序方向写入至第二页面。
更进一步地,在又一实施例中,当确定了第一页面的有效数据之后进一步会将有效数据按照第一排序方向依次写入第二页面中的各个单元存储区域中,然后将待写入数据依次紧跟自第一页面筛选所得的有效数据之后写入。
请参见图6,图6为本发明一种数据存储的方法再一实施例中的流程示意图。在当前实施例中,着重阐述的是自数据存储区读取数据的流程。在一实施例中,当需要自数据存储区中读取数据时,本发明所提供的方法还包括下述步骤S601至步骤S603。
S601:接收到数据读取指令,并获取数据读取指令中的待读取虚拟地址。
首先,在接收到数据读取指令后,获取数据读取指令并解析数据读取指令,以获取数据读取指令中包括的待读取虚拟地址。如上所述,在本发明所提供的技术方案中,待写入数据、已写入数据均包括虚拟地址和数据字段。其中,虚拟地址在本发明所提供的方法中具有唯一性,且同一个虚拟地址在同一个页面中可以对应不同的数据字段,当同一页面中出现两个相同的虚拟地址,则表示是用后面写入的虚拟地址所对应的数据字段更新前面先写入的虚拟地址所对应的数据字段。
S602:按照第二排序方向,在处于活动状态的页面中查找出第一个与待读取虚拟地址匹配的虚拟地址。
在获取到数据读取指令中的待读取虚拟地址之后,会进一步按照第二排序方向,在处于活动状态的页面中查找出第一个与待读取虚拟地址匹配的虚拟地址。其中,第二排序方向为与待写入数据写入方向相反的方向。
可以理解的是,在其他实施例中,也可以设置在读取数据时,按照与写入数据相同的方向进行查询数据,对应的,此时则会查询最晚出现的已写入数据,并将最晚读取到的已写入数据作为最新的有效数据。
S603:读取并输出查找出的虚拟地址对应的数据字段。
在活动状态的页面中查找出第一个与待读取虚拟地址匹配的虚拟地址,并读取查找出的虚拟地址对应的数据字段,并将所读取到的数据字段反馈至目标程序或显示给用户。反之,如若查找不到与虚拟地址匹配的虚拟地址,则会进一步输出查询无结果至程序或将无法读取到虚拟地址对应的数据结果反馈给用户。
请参见图7,图7为本发明一种数据存储的方法一实施例中的应用场景示意图。图7示意的是将新创建的数据存储区中所包括的每个页面第一个单元存储区域作为该页面的页眉,用于记录该页面被擦除的次数和该页面当前的状态。其中,在图7所示意的实施例中,该页面7010为第一页面,页面700中的单元存储区710为该页面700页眉,每个页面700中的每个单元存储区均包括四个字,对于用作页面页眉的单元存储区710来说,单元存储区710中的第一个字711用于标识该页面700的状态,单元存储区710中的第二个至第四个字712用于标识页面700或者是整个数据存储区的擦除次数。页面中的其他单元存储区则是用于存储数据,每个单元存储区的前两个字用于存储虚拟地址,单元存储区的后两个字用于存储数据字段,如图7中的701示意的是虚拟地址,占用两个字,702示意的是数据字段,占用两个字。
进一步地,当每个单元存储区包括一个字时,则第一个字的最高位即第一个字中的第一个字节作为当前页面的状态标记使用,用于记录并标识当前页面的状态,具体地是可以通过预设不同的值表示页面不同的状态,如可以预设“00”来表示页面为活动状态,预设“01”来表示页面当前为接收状态,预设“FF”表示当前页面为擦除状态,第一个字中的第二至第四个字节作为数据存储区中所有页擦除的次数,或者是第一个字中的第二至第四个字节作为该页面所对应的擦除的次数。当第一个字中的第二至第四个字节标记数据存储区中所有页擦除的次数时,可以是在数据存储区的所有页面都擦除一次时,擦除次数递增加一。对应的,在擦除写满的页面时,不会对页面的页面进行擦除,且会对应修改页面中页眉处页面状态标识,同时也会根据页面擦除次数更新擦除次数。
请参见图8,图8为本发明一种数据存储的方法另一实施例中的应用场景示意图,具体示意的是向当前处于活动状态的第一页面800中写入虚拟地址为“0002”,数据字段为“0155”的待写入数据的过程,即示意的是向处于活动状态的页面创建虚拟地址和写入对应虚拟地址的待写入数据的过程,对于新的待写入数据的只需要按照第一排序方向自当前处于活动状态的第一页面查找到空余的单元存储区域,即可将待写入数据写入。在图8所示意的实施例中,第一排序方向为页面上方至下方,图8中用“FF FF FF FF”表示当前单元存储区域为空余的单元存储区域,即该区域没有被存入待写入数据。
请参见图9,图9为本发明一种数据存储的方法再一实施例中的应用场景示意图。图9具体示意了第一页面已写满时,将第一页面内的有效数据转移至第二页面的过程。其中,当获取到待写入数据后,经过检测得到当前第一页面已写满时,此时会将一个新的处于擦除状态的擦除页面的状态转换为接收状态,即将处于擦除状态的页面的状态更改为接收状态,然后将自第一页面筛选所得的有效数据按照第一排序方向写入至第二页面,然后再将待写入数据紧跟有效数据之后写入至第二页面,最后再擦除已经写满的第一页面并将第一页面的状态修改为擦除状态。在图9所示意的实施例中,至少用“FF FF FF FF”标识被擦除数据的单元存储区域,或者是没有写入数据的单元存储区域。当前实施例中,本发明所提供的技术方案,通过将已经写满的第一页面中的有效数据先转移至第二页面,并将待写入数据写入至第二页面,最后再擦除已经写满的第一页面中的数据,可以较好地保证新的写入数据不会被掉电异常导致丢失,也较好地减少整个数据存储区的擦除次数,进而较好地延长了整个数据存储区的寿命。
请参见图10,图10为本发明一种数据存储的装置一实施例中的结构示意图。在当前实施例中,本发明所提供的数据存储的装置1000包括耦接的处理器1001和存储器1002。其中,数据存储的装置1000可以执行图1至图9及其对应的任意一个实施例中所述的数据存储的方法。
其中,存储器1002包括本地储存(图未示),且存储有计算机程序,计算机程序被执行时可以实现图1至图9及其所对应的任意一个实施例中所述的方法。
处理器1001与存储器1002耦接,处理器1001用于运行计算机程序,以执行如上图1至图9及其对应的任意一个实施例中所述的数据存储的方法。
进一步地,在另一实施例中,本发明所提供的数据存储的装置1000还会包括通信电路(图未示),通信电路与处理器1001连接,用于在处理器1001的控制下与外部的终端设备进行数据交互,以获取待写入数据。可以理解的,待写入数据也可以是自数据存储的装置内部获取的。
参见图11,图11为本发明一种计算机存储介质一实施例中结构示意图。该计算机存储介质1100存储有能够被处理器运行的计算机程序1101,该计算机程序1101用于实现如上图1至图9及其对应的任意一个实施例中所描述的数据存储的方法。具体地,上述计算机存储介质1100可以是存储器、个人计算机、服务器、网络设备,或者U盘等其中的一种,具体在此不做任何限定。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据存储的方法,其特征在于,所述方法应用于数据存储区,所述数据存储区包括多个页面,所述多个页面的状态包括活动状态和接收状态;所述方法包括:
获取待写入数据;
判断处于所述活动状态的第一页面是否写满;
若是,则将所述待写入数据以及所述第一页面中的有效数据写入至处于接收状态的第二页面,并将所述第二页面的状态更新为活动状态。
2.根据权利要求1所述的方法,其特征在于,所述将所述待写入数据以及所述第一页面中的有效数据写入至处于接收状态的第二页面,包括:
将所述第一页面中的有效数据写入至处于接收状态的第二页面;
在所述有效数据写入成功后,将所述待写入数据写入至所述第二页面,以作为所述第二页面中的已写入数据。
3.根据权利要求1所述的方法,其特征在于,所述页面的状态还包括擦除状态;在所述将所述待写入数据以及所述第一页面中的有效数据写入至处于接收状态的第二页面之前,所述方法还包括:
将一处于擦除状态的所述页面转换为所述接收状态,以作为所述第二页面;
在将所述第一页面中的有效数据写入至处于接收状态的第二页面之后,所述方法还包括:
擦除所述第一页面上的数据,并将所述第一页面的状态修改为所述擦除状态。
4.根据权利要求3所述的方法,其特征在于,所述页面包括页眉区域,所述页眉区域用于存储所述页面的状态和所述页面的擦除次数;
和/或,在所述获取待写入数据之前,所述方法还包括:
在非易失性存储器中创建所述数据存储区,并将所述数据存储区划分得到多个所述页面;
为每个所述页面设置当前状态,其中,若所述页面用于存储有效数据,则所述页面的状态为所述活动状态,若所述页面用于写入处于所述活动状态的页面中的有效数据,则所述页面的状态为接收状态,若所述页面中的数据已被擦除,则所述页面的状态为擦除状态。
5.根据权利要求1所述的方法,其特征在于,所述页面包括若干单元存储区域;所述单元存储区域用于存储至少一个已写入数据;所述判断处于所述活动状态的第一页面是否写满包括:
按照所述单元存储区域的第一排序方向检测所述第一页面是否存在空余的所述单元存储区域;
若所述第一页面不存在空余的所述单元存储区域,则判断所述第一页面已写满;
否则判断所述第一页面未写满,并将所述待写入数据写入至所述空余的单元存储区域,以作为所述单元存储区域中的已写入数据。
6.根据权利要求5所述的方法,其特征在于,所述将所述第一页面中的有效数据写入至处于接收状态的第二页面,进一步包括:
按照所述单元存储区域的第二排序方向,从所述第一页面中筛选出最新的已写入数据以作为所述有效数据,其中,所述第一排序方向和所述第二排序方向为相反的方向;
将所述有效数据按照所述第一排序方向写入至所述第二页面的至少一个单元存储区域中。
7.根据权利要求6所述的方法,其特征在于,所述已写入数据包括虚拟地址以及数据字段;所述按照所述单元存储区域的第二排序方向,从所述第一页面中筛选出最新的已写入数据以作为所述有效数据,包括:
按照所述第二排序方向,读取所述第一页面中每个所述单元存储区域中的已写入数据;
若读取的所述已写入数据中的虚拟地址为第一次出现,则确定所述已写入数据为最新的已写入数据。
8.根据权利要求6所述的方法,其特征在于,所述已写入数据包括虚拟地址以及数据字段;所述方法还包括:
接收到数据读取指令,并获取所述数据读取指令中的待读取虚拟地址;
按照所述第二排序方向,在处于活动状态的所述页面中查找出第一个与所述待读取虚拟地址匹配的所述虚拟地址;
读取并输出所述查找出的虚拟地址对应的数据字段。
9.一种数据存储的装置,其特征在于,所述装置包括耦接的存储器和处理器,其中,
所述存储器包括本地储存,且存储有计算机程序;
所述处理器用于运行所述计算机程序,以执行权利要求1至8任一项所述的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有能够被处理器运行的计算机程序,所述计算机程序用于实现权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010452056.6A CN111708487A (zh) | 2020-05-26 | 2020-05-26 | 一种数据存储的方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010452056.6A CN111708487A (zh) | 2020-05-26 | 2020-05-26 | 一种数据存储的方法、装置及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111708487A true CN111708487A (zh) | 2020-09-25 |
Family
ID=72538134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010452056.6A Pending CN111708487A (zh) | 2020-05-26 | 2020-05-26 | 一种数据存储的方法、装置及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111708487A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114115743A (zh) * | 2021-11-29 | 2022-03-01 | 苏州迅镭激光科技有限公司 | 一种延长数据存储芯片寿命的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101419841A (zh) * | 2008-12-09 | 2009-04-29 | 苏州大学 | 一种flash存储器擦写方法 |
CN102521146A (zh) * | 2011-11-08 | 2012-06-27 | 福建新大陆通信科技股份有限公司 | 一种flash存储器块细分的数据寻址存储方法 |
CN104820641A (zh) * | 2015-04-16 | 2015-08-05 | 上海冉能自动化科技有限公司 | 减少flash擦除次数的方法 |
CN110554842A (zh) * | 2019-09-06 | 2019-12-10 | 华大半导体有限公司 | 一种使用闪存模拟eeprom的方法 |
-
2020
- 2020-05-26 CN CN202010452056.6A patent/CN111708487A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101419841A (zh) * | 2008-12-09 | 2009-04-29 | 苏州大学 | 一种flash存储器擦写方法 |
CN102521146A (zh) * | 2011-11-08 | 2012-06-27 | 福建新大陆通信科技股份有限公司 | 一种flash存储器块细分的数据寻址存储方法 |
CN104820641A (zh) * | 2015-04-16 | 2015-08-05 | 上海冉能自动化科技有限公司 | 减少flash擦除次数的方法 |
CN110554842A (zh) * | 2019-09-06 | 2019-12-10 | 华大半导体有限公司 | 一种使用闪存模拟eeprom的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114115743A (zh) * | 2021-11-29 | 2022-03-01 | 苏州迅镭激光科技有限公司 | 一种延长数据存储芯片寿命的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100843543B1 (ko) | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 | |
CN109783017B (zh) | 一种存储设备坏块的处理方法、装置及存储设备 | |
US20110099324A1 (en) | Flash memory storage system and flash memory controller and data processing method thereof | |
US20050036390A1 (en) | Non-volatile memory and non-volatile memory data rewriting method | |
US9710340B2 (en) | Replacement of a corrupt driver variable record | |
CN108829342B (zh) | 一种日志存储方法、系统及存储装置 | |
US20130091322A1 (en) | Electronic System and Memory Managing Method Thereof | |
CN113568579B (zh) | 一种存储器、数据存储方法以及数据读取方法 | |
CN112463020A (zh) | 基于Flash的数据存取方法、装置及设备 | |
CN107045423B (zh) | 存储器装置及其数据存取方法 | |
CN112988611A (zh) | 非易失性存储器的数据写入方法、终端和可读存储介质 | |
CN112596668A (zh) | 一种存储器的坏块处理方法及系统 | |
CN108664482B (zh) | Flash存储器及存储文件管理方法 | |
CN111708487A (zh) | 一种数据存储的方法、装置及计算机存储介质 | |
US8762685B2 (en) | Data writing method, memory controller and memory storage apparatus | |
CN1701300B (zh) | 用于分解与一共用逻辑块相关联的物理块的方法和设备 | |
US10007601B2 (en) | Data storage device and operating method for flash memory | |
CN111143238B (zh) | 基于eFlash存储芯片的数据擦写方法及系统 | |
CN112347002A (zh) | flash数据的保存方法、系统、计算机设备及存储介质 | |
CN114327258B (zh) | 一种固态硬盘处理方法、系统、设备及计算机存储介质 | |
US7613894B2 (en) | Power loss recovery in non-volatile memory | |
CN108108118B (zh) | 数据写入方法以及存储控制器 | |
CN113434086B (zh) | 数据存储方法、装置、非易失性存储器件和存储器 | |
CN116225317A (zh) | 用户识别卡的数据读写方法、装置、用户识别卡及介质 | |
US11720276B2 (en) | Memory system and controller for managing write status |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200925 |