写入数据的方法及装置制造方法及图纸

技术编号:4382372 阅读:164 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种写入数据的方法及装置,涉及数据存储领域,解决了现有技术中存储器中某些存储块容易出现受损程度较严重的问题。在本发明专利技术中接收到写入新数据的指令;定位需要修改的数据所在的数据存储块;从所有的存储块中随机选出一个存储块;判断所述随机选出的存储块是否为空存储块;如果是,将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;如果否,则先将所述随机选出的存储块进行处理成空存储块,然后将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;将定位到的数据存储块擦除为空存储块。本发明专利技术的实施例主要应用在向存储器执行各种操作时的场景。

【技术实现步骤摘要】

本专利技术涉及数据存储领域,尤其涉及一种写入数据的方法及装置
技术介绍
闪存属于存储器类型的一种,因为其具有可移动性、及保存在闪存上的数据即便是在断电情况下仍不会丢失的优点而得到迅速的发展。在闪存中,写Flash 操作只能把Flash中数据从T变到"0" (Bit);擦除操作可以把"0"变为T, 但是擦除操作只能针对整个"存储块,,为单位进行的。例如 一个存储块的大 小一般为256字节到1024字节。用户在需要修 文存储器中某个存储块的数据时, 一般是在空存储块中写入 需要修改的数据。在现有技术中,通常采用按照一定的顺序在一些空存储块中 找出一个空存储块的方法,然后再将修改后的数据写入到该空存储块中并擦除 修改前的数据存储块里的数据。但是每一个存储块可以被写入和擦除的次数都 是有限的,特别是当用户频繁的修改某些数据或者当空存储块个数不多时,^艮 容易出现对序号排在较前的空存储块频繁地执行写入或者擦除操作的情况,久 而久之就会使这些空存储块的受损程度增加,使用寿命降低,甚至可能因此无 法再次使用该存储块,导致存储器失效。
技术实现思路
本专利技术的实施例提供一种写入数据的方法及装置。以便提高该存储器中存 储块能够使用的次数。为达到上述目的,本专利技术的实施例采用如下技术方案 一种写入数据的方法,包括 接收到写入新数据的指令; 定位需要修改的数据所在的数据存储块; 从所有的存储块中随机选出 一个存储块; 判断所述随机选出的存储块是否为空存储块;如果是,将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;如果否,则先将所述随机选出的存储块进行处理成空存储块,然后将所述 数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;擦除定位到的数据存储块内存储的数据,使该数据存储块为空存储块。一种写入数据的装置,包括接收模块,用于接收到写入新数据的指令;定位模块,用于定位需要修改的数据所在的数据存储块;选出模块,用于从所有的存储块中随机选出一个存储块;判断模块,用于判断所述随机选出的存储块是否为空存储块;写入模块,用于当判断模块判断是时,将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;所述写入模块还用于当判断模块判断否时,先将所述随机选出的存储块进行处理成空存储块,然后将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中;擦除模块,用于擦除所述定位到的数据存储块内存储的数据,使该数据存 储块为空存储块。本专利技术实施例提供的数据写入的方法及装置具有如下有益效果通过釆用 随机选取存储块的技术方案,取得了使存储器中存储块使用的受损程度能够到 达平衡,并降低了单个存储块受损程度的有益效果。同时提高了存储器中存储 块的可使用次数,也相当于延长了该存储器的使用寿命。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述 中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付 出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例1提供的空存储块的结构示意图2是本专利技术实施例1提供的有记录的空存储块的结构示意图3是本专利技术实施例l提供的数据存储块的结构示意图4是本专利技术实施例1写入数据的方法的流程图5是本专利技术实施例2 —种优选的写入数据的方法的流程图6是本专利技术实施例3写入数据的装置的框图。具体实施例方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是 全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造 性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。实施例l本实施例具体描述当对写入数据的方法,如图4所示,该方法包括如下步骤为了阐述方便,在下列实施例中假设闪存存储区的地址为 0x00000000-0x00007800,共0x78个存储块,每块0x100个字节。每个块的首 字节用来标记该存储块的逻辑块号。根据存储块首字节的取值不同,本实施例 中把存储块分为2种类型的存储块空存储块首字节是OxFF的存储块。如果空存储块的其他所有字节的值都是 OxFF,这样的空存储块随时可以写入数据,如图l所示;否则需要先将其他字 节擦除为0xFF。特别地,把不能直接写入数据的空存储块称为"有记录的空存 储块",如图2所示。数据存储块如图3所示,首字节的值的范围在0x01 0x78以内的存储块。数 据存储块中首字节之外的区域中的数据都被认为是有效的数据。8101, 接收到写入新数据的指令。102,定位需要修改的数据所在的数据存储块。找某个逻辑块号为X的数据存储块的具体操作为令一个指针P = 0x00000000,判断P所指向的字节的值是否为X。如果是,则该数据存储块为 所找的数据存储块。如果不是,P=P+0xl00继续查找。由于每个存储块的大小 为0x100个字节,所以P总是指向存储块的首字节。103,从所有的存储块中随机选出一个存储块。在本实施例中,从所有存储块中随机选择一个存储块为生成一个不大于所 有存储块总数的随机数,将该随机数作为物理块号定位存储块的地址。假设存储块的个数为B就是说这个随机数的范围可以是B,也可以是与B 相关的一个函数f(B)。比如B-IO,则在本实施例中可以产生一个1~10以内的 随机整数C。 (1<=C<=10),也可以产生一个1~5*10以内的随机整数。具体的, 本实施例中采取的是第一种方法,即产生一个l B之间的随机数C。具体的操作为在内存开辟一个局部变量N3 = 0,然后令一个指针P从 0x00000000开始,到0x00007800结束,P的步长是0x100,令P-P+0x100,使 N3=N3+1;当N3二C的时候,P所对应的存储块即为所需的随机选出的存储块。104,判断所述随机选出的存储块是否为空存储块,如果是,执行步骤105,如果否,则将所述随机选出的存储块先进行处理成空存储块,然后再执行 步骤105。具体的判断该存储块是否为空存储块,即判断该存储块的首字节是否是 OxFF,如果是,则说明该存储块是空存储块,则可以直接执行步骤105,; 判断所述随机选出的存储块不是空存储块,即判断该空存储块的首字节在 0x01-0x78范围内,则需要将所述随机选出的存储块进行处理,具体包括 从当前随机选出的存储块向后或者向前依次查找,找到一个空存储块,将所述 空存储块作为一个临时的空存储块,然后将随机选出的存储块的数据写入该空 存储块中,再将所述随机选出的存储块擦除为空存储块。其中,在将随机选出 的存储块的数据写入该空存储块中,先写入数据存储块的数据区数据,然后再写入块号。如果在写入过程中发生掉电,导致写入数据不全,则所述空存储块 处于"有记录的空存储块"状态,不会错误地变成可用的数据存储块。相应的, 在将随机选出的存储块的数据写入该空存储块之前,还需要判断所述空存储块 的状态。如果所述空存储块处于"有记录的空存储块"状态,即不能直接写入 数据,则先将所述空存储块擦除为可以写入数据本文档来自技高网...

【技术保护点】
一种写入数据的方法,其特征在于,包括: 接收到写入新数据的指令; 定位需要修改的数据所在的数据存储块; 从所有的存储块中随机选出一个存储块; 判断所述随机选出的存储块是否为空存储块; 如果是,将所述数据存储块的 数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中; 如果否,则先将所述随机选出的存储块进行处理成空存储块,然后将所述数据存储块的数据与新数据结合为更新数据,将所述更新数据写入所述空存储块中; 将定位到的数据存储块擦除 为空存储块。

【技术特征摘要】

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:北京飞天诚信科技有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1