CN101526921B - 写入数据的方法及装置 - Google Patents
写入数据的方法及装置 Download PDFInfo
- Publication number
- CN101526921B CN101526921B CN200810247055.7A CN200810247055A CN101526921B CN 101526921 B CN101526921 B CN 101526921B CN 200810247055 A CN200810247055 A CN 200810247055A CN 101526921 B CN101526921 B CN 101526921B
- Authority
- CN
- China
- Prior art keywords
- storage block
- data
- block
- empty
- random
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种写入数据的方法及装置,涉及数据存储领域,解决了现有技术中存储器中某些存储块容易出现受损程度较严重的问题。在本发明中接收到写入新数据的指令;定位需要修改的数据所在的数据存储块;从所有的存储块中随机选出一个存储块;判断所述随机选出的存储块是否为空存储块;如果是,将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;如果否,则先将所述随机选出的存储块进行处理成空存储块,然后将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;将定位到的数据存储块擦除为空存储块。本发明的实施例主要应用在向存储器执行各种操作时的场景。
Description
技术领域
本发明涉及数据存储领域,尤其涉及一种写入数据的方法及装置。
背景技术
闪存属于存储器类型的一种,因为其具有可移动性、及保存在闪存上的数据即便是在断电情况下仍不会丢失的优点而得到迅速的发展。在闪存中,写Flash操作只能把Flash中数据从“1”变到“0”(Bit);擦除操作可以把“0”变为“1”,但是擦除操作只能针对整个“存储块”为单位进行的。例如:一个存储块的大小一般为256字节到1024字节。
用户在需要修改存储器中某个存储块的数据时,一般是在空存储块中写入需要修改的数据。在现有技术中,通常采用按照一定的顺序在一些空存储块中找出一个空存储块的方法,然后再将修改后的数据写入到该空存储块中并擦除修改前的数据存储块里的数据。但是每一个存储块可以被写入和擦除的次数都是有限的,特别是当用户频繁的修改某些数据或者当空存储块个数不多时,很容易出现对序号排在较前的空存储块频繁地执行写入或者擦除操作的情况,久而久之就会使这些空存储块的受损程度增加,使用寿命降低,甚至可能因此无法再次使用该存储块,导致存储器失效。
发明内容
本发明的实施例提供一种写入数据的方法及装置。以便提高该存储器中存储块能够使用的次数。
为达到上述目的,本发明的实施例采用如下技术方案:
一种写入数据的方法,包括:
接收到写入新数据的指令;
定位需要修改的数据所在的数据存储块;
从所有的存储块中随机选出一个存储块;
判断所述随机选出的存储块是否为空存储块;
如果是,将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;
如果否,则先将所述随机选出的存储块进行处理成空存储块,然后将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;
擦除定位到的数据存储块内存储的数据,使该数据存储块为空存储块。
一种写入数据的装置,包括:
接收模块,用于接收到写入新数据的指令;
定位模块,用于定位需要修改的数据所在的数据存储块;
选出模块,用于从所有的存储块中随机选出一个存储块;
判断模块,用于判断所述随机选出的存储块是否为空存储块;
写入模块,用于当判断模块判断是时,将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;
所述写入模块还用于当判断模块判断否时,先将所述随机选出的存储块进行处理成空存储块,然后将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;
擦除模块,用于擦除所述定位到的数据存储块内存储的数据,使该数据存储块为空存储块。
本发明实施例提供的数据写入的方法及装置具有如下有益效果:通过采用随机选取存储块的技术方案,取得了使存储器中存储块使用的受损程度能够到达平衡,并降低了单个存储块受损程度的有益效果。同时提高了存储器中存储块的可使用次数,也相当于延长了该存储器的使用寿命。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1提供的空存储块的结构示意图;
图2是本发明实施例1提供的有记录的空存储块的结构示意图;
图3是本发明实施例1提供的数据存储块的结构示意图;
图4是本发明实施例1写入数据的方法的流程图;
图5是本发明实施例2一种优选的写入数据的方法的流程图;
图6是本发明实施例3写入数据的装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例具体描述当对写入数据的方法,如图4所示,该方法包括如下步骤:
为了阐述方便,在下列实施例中假设闪存存储区的地址为:
0x00000000~0x00007800,共0x78个存储块,每块0x100个字节。每个块的首字节用来标记该存储块的逻辑块号。根据存储块首字节的取值不同,本实施例中把存储块分为2种类型的存储块:
空存储块:首字节是0xFF的存储块。如果空存储块的其他所有字节的值都是0xFF,这样的空存储块随时可以写入数据,如图1所示;否则需要先将其他字节擦除为0xFF。特别地,把不能直接写入数据的空存储块称为“有记录的空存储块”,如图2所示。
数据存储块:如图3所示,首字节的值的范围在0x01~0x78以内的存储块。数据存储块中首字节之外的区域中的数据都被认为是有效的数据。
101,接收到写入新数据的指令。
102,定位需要修改的数据所在的数据存储块。
找某个逻辑块号为X的数据存储块的具体操作为令一个指针P=0x00000000,判断P所指向的字节的值是否为X。如果是,则该数据存储块为所找的数据存储块。如果不是,P=P+0x100继续查找。由于每个存储块的大小为0x100个字节,所以P总是指向存储块的首字节。
103,从所有的存储块中随机选出一个存储块。
在本实施例中,从所有存储块中随机选择一个存储块为生成一个不大于所有存储块总数的随机数,将该随机数作为物理块号定位存储块的地址。
假设存储块的个数为B就是说这个随机数的范围可以是B,也可以是与B相关的一个函数f(B)。比如B=10,则在本实施例中可以产生一个1~10以内的随机整数C。(1<=C<=10),也可以产生一个1~5*10以内的随机整数。具体的,本实施例中采取的是第一种方法,即产生一个1~B之间的随机数C。
具体的操作为在内存开辟一个局部变量N3=0,然后令一个指针P从0x00000000开始,到0x00007800结束,P的步长是0x100,令P=P+0x100,使N3=N3+1;当N3=C的时候,P所对应的存储块即为所需的随机选出的存储块。
104,判断所述随机选出的存储块是否为空存储块,如果是,执行步骤105,
如果否,则将所述随机选出的存储块先进行处理成空存储块,然后再执行步骤105。
具体的判断该存储块是否为空存储块,即判断该存储块的首字节是否是0xFF,如果是,则说明该存储块是空存储块,则可以直接执行步骤105,;判断所述随机选出的存储块不是空存储块,即判断该空存储块的首字节在0x01~0x78范围内,则需要将所述随机选出的存储块进行处理,具体包括:从当前随机选出的存储块向后或者向前依次查找,找到一个空存储块,将所述空存储块作为一个临时的空存储块,然后将随机选出的存储块的数据写入该空存储块中,再将所述随机选出的存储块擦除为空存储块。其中,在将随机选出的存储块的数据写入该空存储块中,先写入数据存储块的数据区数据,然后再写入块号。如果在写入过程中发生掉电,导致写入数据不全,则所述空存储块处于“有记录的空存储块”状态,不会错误地变成可用的数据存储块。相应的,在将随机选出的存储块的数据写入该空存储块之前,还需要判断所述空存储块的状态。如果所述空存储块处于“有记录的空存储块”状态,即不能直接写入数据,则先将所述空存储块擦除为可以写入数据的空存储块,再写入数据。
105,将步骤102中的数据存储块的数据与新数据结合,写入所述随机选出的存储块中。
在本步骤中,将步骤102中的数据存储块的数据与新数据结合,写入所述空存储块中为:先将步骤102中的数据存储块的数据读入内存,将所述数据存储块的逻辑块号不变,将数据区的数据修改为新数据,即将数据存储块的数据和新数据结合生成更新数据。
在将更新数据写入空存储块时,优选的,先写入更新数据再写入逻辑块号。避免在写入过程中发生掉电,导致写入数据不全,使所述空存储块处于“有记录的空存储块”状态。并且该有记录的空存储块也不会错误地变成可用的数据存储块。同样,相应的,在步骤105即在写入空存储块之前,还需要判断所述空存储块的状态。如果该空存储块处于“有记录的空存储块”状态,则先将所述空存储块擦除为可以直接写入数据的空存储块,再写入数据。
106,擦除定位到的数据存储块成为空存储块。
在本步骤中,具体的操作为将该数据存储块的所有字节变为0xFF。
107,结束流程。
在现有技术中,由于是按顺序在存储器的空存储块中查找空存储块,所以容易因为对某些存储块过度执行擦除和写入操作而导致存储块受损,甚至不能使用。本实施例所提供的方案,通过采用随机数对查找到存储块执行写入操作的技术方案,克服了现有技术中因为部分存储块的受损过度,导致存储器容量变小的技术问题,进而取得了使存储器中各个存储块的受损程度得到了均衡,并提高存储器中存储块可使用次数的有益效果。
实施例2
本实施例具体描述一种优选的写入数据的方法,如图5所示,该方法包括:
为了阐述方便,在下列实施例中假设闪存存储区的地址为:
0x00000000~0x00007800,共0x78个存储块,每块0x100个字节。每个块的首字节用来标记该存储块的逻辑块号。根据存储块首字节的取值不同,本实施例中把存储块分为2种类型的存储块:
空存储块:首字节是0xFF的存储块。如果空存储块的其他所有字节的值都是0xFF,这样的空存储块随时可以写入数据,如图1所示;否则需要先将其他字节擦除为0xFF。特别地,把不能直接写入数据的空存储块称为“有记录的空存储块”,如图2所示。
数据存储块:如图3所示,首字节的值的范围在0x01~0x78以内的存储块。数据存储块中首字节之外的区域中的数据都被认为是有效的数据。
201,接收到写入新数据的指令。
202,定位需要修改的数据所在的数据存储块。
203,从所有的存储块中随机选出一个存储块。
在本实施例中,从所有存储块中随机选择一个存储块为生成一个不大于所有存储块总数的随机数,利用该随机数作为物理块号定位存储块的地址。
假设存储块的个数为B,如果B=10,在本实施例中可以产生一个1~10以内的随机整数C(1<=C<=10),即产生一个1~B之间的随机数C。
令一个指针P从0x00000000开始,到0x00007800结束,P的步长是0x100,即P=C*0x100,P所对应的存储块即为所需的随机选出的存储块。
204,判断所述随机选出的存储块是否为步骤202的数据存储块,如果是,则返回执行步骤203;如果否,则执行步骤205。
具体的在本步骤中判断该随机选出的存储块是否与步骤202的数据存储块的首字节相同,如果相同,则说明该随机选出的存储块为步骤202的数据存储块,此时,需要重新从所有存储块中随机选出一个存储块,即再次执行步骤203。
205,判断该随机选出的存储块是否为空存储块,如果是,直接执行步骤206,
如果否,则将该随机选出的存储块进行处理,然后再执行步骤206。
判定所述随机选出的存储块不是空存储块后,即将所述随机选出的存储块进行处理具体包括从当前随机选出的存储块向后或者向前依次查找,找到一个空存储块,作为临时的空存储块,然后将所述随机选出的存储块的数据写入所述临时的空存储块中,在将随机选出的存储块的数据写入所述临时的空存储块之前,需要先判断还需要判断所述空存储块的状态,如果该空存储块处于“有记录的空存储块”状态,则先将所述空存储块擦除为可以直接写入数据的空存储块,再写入数据。然后再将所述随机选出的存储块擦除为空存储块。
206,将步骤202的数据存储块的数据与新数据结合,再写入该随机选出的存储块中。
将步骤202中的数据存储块的数据与新数据结合,再写入该随机选出的存储块中为:先将步骤202中的数据存储块的数据读入内存,在内存中,逻辑块号不变,将数据区的数据修改为新数据,然后再将所述数据存储块的数据和新数据结合为更新数据,在写入空存储块时,先写入更新数据再写入逻辑块号。
在将更新数据写入空存储块时,优选的,先写入更新数据再写入逻辑块号。避免在写入过程中发生掉电,导致写入数据不全,使所述空存储块处于“有记录的空存储块”状态。并且该有记录的空存储块也不会错误地变成可用的数据存储块。同样,相应的,在步骤105即在写入空存储块之前,还需要判断所述空存储块的状态。如果该空存储块处于“有记录的空存储块”状态,则先将所述空存储块擦除为可以直接写入数据的空存储块,再写入数据。
207,将步骤202中的数据存储块擦除为空存储块。
208,结束流程。
在本实施例中,步骤204-206还可以为以下步骤:
204’,判断所述随机选出的存储块是否为步骤202的数据存储块,如果是,则选择步骤202的数据存储块的下一个存储块;如果否,则执行步骤205’。
在本步骤中判断所述数据存储块为步骤202的数据存储块后还可以选择步骤202的数据存储块的上一个存储块。
205’,判断该存储块是否为空存储块,如果是,直接执行步骤206’;如果否,则将该存储块进行处理,然后再执行步骤206’。
判定所述随机选出的存储块不是空存储块后,将所述随机选出的存储块进行处理具体包括从当前随机选出的存储块向后或者向前依次查找,找到一个临时的空存储块,然后将所述随机选出的存储块的数据写入所述临时的空存储块中,再将所述随机选出的存储块擦除为空存储块。另外,在将随机选出的存储块的数据写入所述临时的空存储块之前,需要先判断还需要判断所述空存储块的状态,如果该空存储块处于“有记录的空存储块”状态,则先将所述空存储块擦除为可以直接写入数据的空存储块,再写入数据。
206’,将步骤202的数据存储块的数据与新数据结合,再写入该存储块中。
本实施例提供的写入数据的方法及装置,与现有技术中按顺序在存储器的存储块中选取空存储块相比,采用了随机在存储器的存储块中选取存储块的技术方案,克服了现有技术中容易出现对序号排在较前的空存储块频繁地执行写入或者擦除操作的情况,进而达到了可使各个存储块的受损程度得到平衡,降低单个存储块的受损程度的技术效果。在提供了存储器中存储块可使用次数的同时,也相当于延长了该存储器的使用寿命。
实施例3
本实施例公开一种写入数据的装置,如图6所示,该装置包括:接收模块61,定位模块62,选出模块63,判断模块64,第一判断模块67,第一清除模块68,写入模块65,擦除模块66。
接收模块61用于接收到写入新数据的指令;定位模块62用于定位需要修改的数据所在的数据存储块;选出模块63用于从所有的存储块中随机选出一个存储块;判断模块64用于判断所述随机选出的存储块是否为空存储块;写入模块65用于当判断模块64判断是时,将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;第一判断模块67用于当判断模块64判断所述空存储块为是时,判断所述空存储块是否为有记录的空存储块;第一清除模块68用于当第一判断模块判断67是时,擦除所述有记录的空存储块中存储的数据,使该存储块成为空存储块。
所述写入模块65还用于当判断模块64判断否时,先将所述随机选出的存储块进行处理成空存储块,然后将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;擦除模块66用于擦除定位到的数据存储块内存储的数据,使该数据存储块为空存储块。
在本实施例中定位模块62定位的数据存储块的数据包括逻辑块号和数据区数据,则写入模块65包括:读取单元651,更新单元652,写入单元653。
读取单元651,用于将所述数据存储块的数据读入内存中;更新单元652,用于在内存中将所述数据中的数据区数据与新数据结合为更新数据;写入单元653,用于将所述更新数据与逻辑块号写入空存储块中,并且写入模块65是先将更新数据写入空存储块中后,再将逻辑块号写入空存储块。
进一步地,本实施例中写入模块65还包括:第一选出单元654,第一写入单元655,第一擦除单元656,第一判断单元657,第一清除单元658。
第一选出单元654用于按照预设的规则选出一个临时的空存储块;第一写入单元655用于将所述随机选出的存储块中的数据写入所述临时的空存储块中;第一擦除单元656用于将所述随机选出的存储块擦除为空存储块;第一判断单元657用于判断所述临时的空存储块是否为有记录的空存储块;第一清除单元658用于当所述第一判断单元判断是时,将所述有记录的空存储块擦除为空存储块。
并且,在本施例中,第一选出单元654包括:相邻选出子单元6541。相邻选出子单元6541用于从所述随机选出的存储块开始,向后依次查找,直到找到一个空存储块并将所述空存储块作为临时的空存储块;或者相邻选出子单元6541用于从所述随机选出的存储块开始,向前依次查找,直到找到一个空存储块并将所述空存储块作为临时的空存储块。
本实施例中,选出模块63包括:生成单元631,定位单元632,第二判断单元633,重选单元634。
生成单元631用于生成一个不大于所有存储块总数的随机数;定位单元632用于将该随机数作为物理块号定位一个存储块的地址,选择所述存储块;第二判断单元633用于判断随机选出的存储块是否为需要修改的数据所在的数据存储块;重选单元634用于当判断单元判断是时,从所有的存储块中重新随机选择一个存储块,或重选单元634用于选择当前随机选出的存储块的下一个存储块,或重选单元634用于选择当前随机选出的存储块的上一个存储块。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台设备(可以是笔记本电脑,也可以上闪存等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (18)
1.一种写入数据的方法,其特征在于,包括:
接收到写入新数据的指令;
定位需要修改的数据所在的数据存储块;
从所有的存储块中随机选出一个存储块;
判断所述随机选出的存储块是否为空存储块;
如果是,将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;
如果否,则先将所述随机选出的存储块进行处理成空存储块,然后将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;
将定位到的数据存储块擦除为空存储块。
2.根据权利要求1所述的写入数据的方法,其特征在于,所述数据存储块的数据包括逻辑块号和数据区数据,则将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入空存储块中包括:
将所述数据存储块的数据读入内存中;
在内存中将所述数据中的数据区数据与新数据结合为更新数据;
将所述更新数据与逻辑块号写入空存储块中。
3.根据权利要求2所述的写入数据的方法,其特征在于,所述将所述更新数据与逻辑块号写入空存储块中为:
先将更新数据写入空存储块中,再将逻辑块号写入空存储块。
4.根据权利要求1所述的写入数据的方法,其特征在于,所述将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块,在将所述更新数据写入所述空存储块之前还包括:
判断所述空存储块是否为有记录的空存储块;
如果是,则擦除所述有记录的空存储块为空存储块;
如果否,则直接执行将所述更新数据写入所述空存储块。
5.根据权利要求1所述的写入数据的方法,其特征在于,所述从所有的存储块中随机选出一个存储块包括:
生成一个不大于所有存储块总数的随机数,将所述随机数作为物理块号定位一个存储块的地址,选择所述存储块。
6.根据权利要求1所述的写入数据的方法,其特征在于,所述将所述随机选出的存储块进行处理成空存储块包括:
按照预设的规则选出一个临时的空存储块;
将所述随机选出的存储块中的数据写入所述临时的空存储块中;
将所述随机选出的存储块擦除为空存储块。
7.根据权利要求6所述的写入数据的方法,其特征在于,所述将所述随机选出的存储块中的数据写入所述临时的空存储块中之前,该方法还包括:
判断所述临时的空存储块是否为有记录的空存储块;
如果是,则将所述有记录的空存储块擦除为空存储块;
如果否,则直接执行将所述随机选出的存储块中的数据写入所述临时的空存储块中。
8.根据权利要求7所述的写入数据的方法,其特征在于,所述按照预设的规则选出一个临时的空存储块为:
从所述随机选出的存储块开始,向后依次查找,直到找到一个空存储块并将所述空存储块作为临时的空存储块;或者
从所述随机选出的存储块开始,向前依次查找,直到找到一个空存储块并将所述空存储块作为临时的空存储块。
9.根据权利要求1所述的写入数据的方法,其特征在于,从所有的存储块中随机选出一个存储块还包括:
判断随机选出的存储块是否为需要修改的数据所在的数据存储块;
如果是,则从所有的存储块中重新随机选择一个存储块,或
选择当前随机选出的存储块的下一个存储块,或
选择当前随机选出的存储块的上一个存储块;
如果否,则执行步骤判断所述随机选出的存储块是否为空存储块。
10.一种写入数据的装置,其特征在于,包括:
接收模块,用于接收到写入新数据的指令;
定位模块,用于定位需要修改的数据所在的数据存储块;
选出模块,用于从所有的存储块中随机选出一个存储块;
判断模块,用于判断所述随机选出的存储块是否为空存储块;
写入模块,用于当判断模块判断是时,将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;
所述写入模块还用于当判断模块判断否时,先将所述随机选出的存储块进行处理成空存储块,然后将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;
擦除模块,用于将定位到的数据存储块擦除为空存储块。
11.根据权利要求10所述的写入数据的装置,其特征在于,所述定位模块定位的数据存储块的数据包括逻辑块号和数据区数据,则写入模块包括:
读取单元,用于将所述数据存储块的数据读入内存中;
更新单元,用于在内存中将所述数据中的数据区数据与新数据结合为更新数据;
写入单元,用于将所述更新数据与逻辑块号写入空存储块中。
12.根据权利要求11所述的写入数据的装置,其特征在于,所述写入单元先将更新数据写入空存储块中,再将逻辑块号写入空存储块。
13.根据权利要求10所述的写入数据的装置,其特征在于,该装置还包括:
第一判断模块,用于判断所述空存储块是否为有记录的空存储块;
第一清除模块,用于当第一判断模块判断是时,擦除所述有记录的空存储块为空存储块。
14.根据权利要求10所述的写入数据的装置,其特征在于,所述选出模块包括:
生成单元,用于生成一个不大于所有存储块总数的随机数;
定位单元,用于将所述随机数作为物理块号定位一个存储块的地址,选择所述存储块。
15.根据权利要求10所述的写入数据的装置,其特征在于,所述写入模块还包括:
第一选出单元,用于按照预设的规则选出一个临时的空存储块;
第一写入单元,用于将所述随机选出的存储块中的数据写入所述临时的空存储块中;
第一擦除单元,用于将所述随机选出的存储块擦除为空存储块。
16.根据权利要求15所述的写入数据的装置,其特征在于,所述写入模块还包括:
第一判断单元,判断所述临时的空存储块是否为有记录的空存储块;
第一清除单元,用于当所述第一判断单元判断是时,将所述有记录的空存储块擦除为空存储块。
17.根据权利要求15所述的写入数据的装置,其特征在于,所述第一选出单元包括:
相邻选出子单元,用于从所述随机选出的存储块开始,向后依次查找,直到找到一个空存储块并将所述空存储块作为临时的空存储块;或者
所述相邻选出子单元,用于从所述随机选出的存储块开始,向前依次查找,直到找到一个空存储块并将所述空存储块作为临时的空存储块。
18.根据权利要求10所述的写入数据的装置,其特征在于,选出模块还包括:
第二判断单元,用于判断随机选出的存储块是否为需要修改的数据所在的数据存储块;
重选单元,用于当所述第二判断单元判断是时,从所有的存储块中重新随机选择一个存储块,或
所述重选单元,用于选择当前随机选出的存储块的下一个存储块,或
所述重选单元,用于选择当前随机选出的存储块的上一个存储块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810247055.7A CN101526921B (zh) | 2008-12-31 | 2008-12-31 | 写入数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810247055.7A CN101526921B (zh) | 2008-12-31 | 2008-12-31 | 写入数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101526921A CN101526921A (zh) | 2009-09-09 |
CN101526921B true CN101526921B (zh) | 2014-07-30 |
Family
ID=41094791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810247055.7A Expired - Fee Related CN101526921B (zh) | 2008-12-31 | 2008-12-31 | 写入数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101526921B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699623B (zh) * | 2015-02-12 | 2018-09-11 | 北京天诚盛业科技有限公司 | 加快Flash写操作的方法及装置 |
CN106776362B (zh) * | 2015-11-24 | 2019-12-03 | 中芯国际集成电路制造(上海)有限公司 | 存储器的控制方法及装置 |
US10013335B2 (en) * | 2015-12-21 | 2018-07-03 | Intel Corporation | Data flow analysis in processor trace logs using compiler-type information method and apparatus |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1362708A (zh) * | 2001-01-02 | 2002-08-07 | 吴秀林 | 一种闪存芯片的读写方法 |
CN1851672A (zh) * | 2006-04-05 | 2006-10-25 | 北京飞天诚信科技有限公司 | 一种闪存的安全读写方法 |
EP1430386B1 (en) * | 2001-09-28 | 2007-01-24 | Lexar Media, Inc. | Method of writing data to non-volatile memory |
CN100356347C (zh) * | 2006-04-29 | 2007-12-19 | 北京飞天诚信科技有限公司 | 闪存的安全写入方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008181203A (ja) * | 2007-01-23 | 2008-08-07 | Sony Corp | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
-
2008
- 2008-12-31 CN CN200810247055.7A patent/CN101526921B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1362708A (zh) * | 2001-01-02 | 2002-08-07 | 吴秀林 | 一种闪存芯片的读写方法 |
EP1430386B1 (en) * | 2001-09-28 | 2007-01-24 | Lexar Media, Inc. | Method of writing data to non-volatile memory |
CN1851672A (zh) * | 2006-04-05 | 2006-10-25 | 北京飞天诚信科技有限公司 | 一种闪存的安全读写方法 |
CN100356347C (zh) * | 2006-04-29 | 2007-12-19 | 北京飞天诚信科技有限公司 | 闪存的安全写入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101526921A (zh) | 2009-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4832521B2 (ja) | フラッシュメモリメディアにおけるデータ管理方法 | |
KR101257989B1 (ko) | 인덱스 페이지 복구 | |
KR100843133B1 (ko) | 플래시 메모리에서 매핑 정보 재구성을 위한 장치 및 방법 | |
US8423710B1 (en) | Sequential writes to flash memory | |
US8103820B2 (en) | Wear leveling method and controller using the same | |
US8621139B2 (en) | Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same | |
KR100526190B1 (ko) | 플래시 메모리의 재사상 방법 | |
CN101354681B (zh) | 存储器系统、非易失性存储器的磨损均衡方法及装置 | |
US8065469B2 (en) | Static wear leveling | |
US8041883B2 (en) | Restoring storage devices based on flash memories and related circuit, system, and method | |
US20080098195A1 (en) | Memory system including flash memory and mapping table management method | |
JP2008112445A (ja) | 不揮発性メモリを管理する装置及び方法 | |
JP2006221636A (ja) | Run単位アドレスマッピングテーブル及びそれの構成方法 | |
US20130054878A1 (en) | Solid state drive and wear-leveling control method thereof | |
TWI421683B (zh) | 資料管理方法、記憶體控制器與記憶體儲存裝置 | |
US7187583B2 (en) | Method for reducing data error when flash memory storage device using copy back command | |
TWI540428B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
CN108763102A (zh) | 一种固态硬盘的垃圾回收方法及装置 | |
CN115129262A (zh) | 一种固态硬盘垃圾回收方法、装置、设备及介质 | |
JP2007220107A (ja) | 不揮発性メモリのマッピング情報管理装置及び方法 | |
CN101526921B (zh) | 写入数据的方法及装置 | |
US20100287331A1 (en) | Electronic device and method for recording power-on time thereof | |
CN113741799B (zh) | 存储器装置 | |
JP2008084184A (ja) | メモリコントローラ | |
JP2007220274A (ja) | 不揮発性メモリ、そのためのデータ有効性を判断する装置及び方法 |
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: 20140730 |
|
CF01 | Termination of patent right due to non-payment of annual fee |