CN101493794A - 一种闪存数据处理方法及装置 - Google Patents

一种闪存数据处理方法及装置 Download PDF

Info

Publication number
CN101493794A
CN101493794A CNA2009100055431A CN200910005543A CN101493794A CN 101493794 A CN101493794 A CN 101493794A CN A2009100055431 A CNA2009100055431 A CN A2009100055431A CN 200910005543 A CN200910005543 A CN 200910005543A CN 101493794 A CN101493794 A CN 101493794A
Authority
CN
China
Prior art keywords
data
page
leaf
data block
presets
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
CNA2009100055431A
Other languages
English (en)
Other versions
CN101493794B (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.)
Chengdu Huawei Technology Co Ltd
Original Assignee
Huawei Symantec Technologies 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 Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN2009100055431A priority Critical patent/CN101493794B/zh
Publication of CN101493794A publication Critical patent/CN101493794A/zh
Application granted granted Critical
Publication of CN101493794B publication Critical patent/CN101493794B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

本发明实施例公开了一种闪存数据处理方法及装置,用于提高随机写入性能。本发明实施例方法包括:根据获取到的目标数据查询待更新的源数据;将所述目标数据写入预置空白数据块的第一数据页中,将所述源数据所在的数据页标注为无效页;将预置的页级逻辑映射表中的所述无效页的表项替换为所述预置空白数据块的第一数据页的表项。本发明实施例还提供了一种闪存数据处理装置。本发明实施例能够有效地提高随机写入性能。

Description

一种闪存数据处理方法及装置
技术领域
本发明涉及数据处理领域,尤其涉及一种闪存数据处理方法及装置。
背景技术
固态硬盘(SSD,Solid State Disk)由控制单元与存储单元组成,其中,存储单元多采用非易失性的闪存(Flash)芯片构成,由于不具有机械转动装置,因而SSD具有抗震能力强,电源开销小等优势,并得到广泛应用。
闪存在物理上由若干个数据块组成,每个数据块又由若干个页组成,现有技术中,对于闪存的管理均基于数据块的管理,即目前闪存的最小管理单位为数据块,例如,当需要改变某一数据块内的一页数据时,会对该数据块进行完全擦除,之后再全部重新写入。
由上述流程可以看出,现有技术中的方案中,在写入某一页数据时,会将该页所在的数据块完全擦除,之后再重新写入该数据块,所以导致更新数据时需要进行大量的数据擦除和写入操作,从而降低了数据随机写入的性能。
发明内容
本发明实施例提供了一种闪存数据处理方法及装置,能够提高数据随机写入的性能。
本发明实施例提供的闪存数据处理方法,包括:根据获取到的目标数据查询待更新的源数据;将所述目标数据写入预置空白数据块的第一数据页中,将所述源数据所在的数据页标注为无效页;将预置的页级逻辑映射表中的所述无效页的表项替换为所述预置空白数据块的第一数据页的表项。
本发明实施例提供的闪存数据处理方法,包括:获取待写入数据的长度信息;根据所述长度信息以及一个数据块所包含的扇区的数目将所述待写入数据拆分为块级数据以及页级数据;按照块写入方式写入所述块级数据,按照页写入方式写入所述页级数据并对预置的页级逻辑映射表进行更新。
本发明实施例提供的闪存数据处理装置,包括:源数据查询单元,用于根据获取到的目标数据查询待更新的源数据;写入单元,用于将所述目标数据写入预置空白数据块的第一数据页中;标注单元,用于所述源数据所在的数据页标注为无效页;替换单元,用于将预置的页级逻辑映射表中的所述无效页的表项替换为所述预置空白数据块的第一数据页的表项。
本发明实施例提供的闪存数据处理装置,包括:长度信息获取单元,用于获取待写入数据的长度信息;数据拆分单元,用于根据所述长度信息以及一个数据块所包含的扇区的数目将所述待写入数据拆分为块级数据以及页级数据;数据写入单元,用于按照块写入方式写入所述块级数据,按照页写入方式写入所述页级数据并对预置的页级逻辑映射表进行更新。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,获取到目标数据之后,将目标数据写入预置空白数据块的第一数据页中,并将源数据所在的数据页标注为无效页,同时还将预置的页级逻辑映射表中的无效页的表项替换为第一数据页的表项,因此,在数据更新的过程中,无需对无效页所在的数据块进行擦除,而直接采用空白数据块中的第一数据页替代该无效页进行数据存储,因此节省了数据更新的操作,从而提高了数据随机写入的性能。
附图说明
图1为本发明实施例中闪存数据处理方法第一实施例流程图;
图2(a)为本发明实施例中闪存数据处理方法第二实施例流程图;
图2(b)为本发明实施例中页级逻辑映射表示意图;
图3为本发明实施例中闪存数据处理方法第三实施例流程图;
图4为本发明实施例中页写入方式示意图;
图5为本发明实施例中块写入方式示意图;
图6为本发明实施例中闪存数据处理装置第一实施例示意图;
图7为本发明实施例中闪存数据处理装置第二实施例示意图。
具体实施方式
本发明实施例提供了一种闪存数据处理方法及装置,用于提高数据随机写入的性能。
请参阅图1,本发明实施例中闪存数据处理方法第一实施例包括:
101、根据获取到的目标数据查询待更新的源数据;
本实施例中,当需要对闪存数据块中某一页的数据进行更新时,首先会获取新的数据,即目标数据,之后再根据该目标数据所需存储的位置查询待更新的源数据。
例如,当用户在操作***中需要替换一个文件时(具体可以为用户粘贴了一个文件名相同的文件,并选择了“覆盖”),则操作***可以从用户粘贴的位置获知该文件在闪存中对应的位置,并且读取原先存储于闪存中该位置的数据,即可获得待更新的源数据。
102、将所述目标数据写入预置空白数据块的第一数据页中,将所述源数据所在的数据页标注为无效页;
当确定了待更新的源数据之后,在预置的空白数据块组中获取一个空白数据块,将目标数据写入该空白数据块的某一个数据页中,记录为第一数据页。
并将源数据所在的数据页标注为无效页,具体的标注方式可以为:在该数据页的标签或属性字段中***无效标志,该无效标志用于指示该数据页无效,即暂时不会对该数据页进行读写操作,需要说明的是,在实际应用中,具体标注无效页的方式还可以有很多种,此处不作限定。
103、将预置的页级逻辑映射表中的所述无效页的表项替换为所述第一数据页的表项。
由于步骤102中将源数据所在的数据页标注为无效页,为保证原先与该数据页有关联的数据页中的数据保持完整,则可以在预置的页级逻辑映射表中将该无效页的表项替换为第一数据页的表项。
本实施例中的页级逻辑映射表中记录有各存储有数据的数据页的逻辑地址,物理地址,以及各数据页之间的关联关系。
本实施例中,将页级逻辑映射表中的无效页的表项替换为第一数据页的表项,即可使得第一数据页中的数据代替无效页中的数据,且原先各数据页之间的关联关系保持不变,即实现了数据的更新。
本实施例中,获取到目标数据之后,将目标数据写入预置空白数据块的第一数据页中,并将源数据所在的数据页标注为无效页,同时还将预置的页级逻辑映射表中的无效页的表项替换为第一数据页的表项,因此,在数据更新的过程中,无需对无效页所在的数据块进行擦除,而直接采用空白数据块中的第一数据页替代该无效页进行数据存储,因此节省了数据更新的操作,从而提高了数据随机写入的性能。
请参阅图2(a),本发明实施例中闪存数据处理方法第二实施例包括:
201、搜索空白数据块,建立页级逻辑映射表;
本实施例中,当***上电时,对各物理数据块进行遍历,查询未记录数据的物理数据块以及已被擦除的物理数据块,将所述未记录数据的物理数据块以及已被擦除的物理数据块作为预置空白数据块。
假设共有3个数据块,分别为X,Y以及Z,其中X中原先已记录有数据且未被擦除,Y和Z中未记录数据,则通过遍历可以查询到Y和Z为空白数据块。
需要说明的是,本实施例中,还可以预先建立页级逻辑映射表,该页级逻辑映射表中记录有各存储有数据的数据页的逻辑地址,物理地址,以及各数据页之间的关联关系,本实施例中的页级逻辑映射表可以采用二叉树,或B+树等数据存储方式以记录数据。
本实施例中以二叉树为例对页级逻辑映射表进行说明,可以理解的是,同样可以为其他类型的数据存储方式:
请参阅图2(b),图中的共包含6个节点,分别为A,B,C,D,E,F,其中每个节点代表一个数据页,每个节点由四部分内容组成,从左到右分别是“左节点标识”,“逻辑地址”,“物理地址”以及“右节点标识”,本实施例中的每个节点可以由16个字节组成,四个部分中每部分占用4个字节。
图2(b)中,若某节点的“左节点标识”或“右节点标识”为“NULL”,则表示该节点没有左节点,或没有右节点。
202、根据获取到的目标数据查询待更新的源数据;
本实施例中,当需要对闪存数据块中某一页的数据进行更新时,首先会获取新的数据,即目标数据,之后再根据该目标数据所需存储的位置查询待更新的源数据。
假设用户希望用目标数据“500”替换源数据“300”,则可确定目标数据为“500”,源数据为“300”。
203、将所述目标数据写入预置空白数据块的第一数据页中,将所述源数据所在的数据页标注为无效页;
当确定了待更新的源数据之后,在预置的空白数据块组中获取一个空白数据块,将目标数据写入该空白数据块的某一个数据页中,记录为第一数据页。
并将源数据所在的数据页标注为无效页,具体的标注方式可以为:在该数据页的标签或属性字段中***无效标志,该无效标志用于指示该数据页无效,即暂时不会对该数据页进行读写操作,需要说明的是,在实际应用中,具体标注无效页的方式还可以有很多种,此处不作限定。
假设源数据“300”存储于数据页由节点E表示(如图2(b)所示),则可知该数据页的逻辑地址为70,物理地址为8,左节点为D,右节点为F,由于该数据页内的源数据“300”已经失效,则将该数据页标注为无效页。
当前的空白数据块为Y和Z,可任意选取一个,例如选取Y为空白数据块以写入数据,则可以将目标数据“500”写入空白数据块Y中的某一个数据页(即第一数据页)内,假设该第一数据页的物理地址为9。
204、将预置的页级逻辑映射表中的所述无效页的表项替换为所述第一数据页的表项;
由于步骤203中将源数据所在的数据页标注为无效页,为保证原先与该数据页有关联的数据页中的数据保持完整,则可以在预置的页级逻辑映射表中将该无效页的表项替换为第一数据页的表项。
具体的替换的方式可以为:查询所述无效页所在的表项,将表项中的物理地址修改为第一数据页的物理地址,保留表项原有的关联信息,该关联信息用于表示该表项与其他表项之间的关联关系。
即,无效页所在的表项为节点E,获取第一数据页的物理地址9,将节点E中的物理地址由8修改为9,并且保持该节点E原先的“左节点标识”以及“右节点标识”,则实现了第一数据页对无效页的替换。
205、判断是否满足预置的更新条件,若是,则执行步骤206,若否,则持续进行判断;
本实施例中,由于步骤203中会将数据块中的某些数据页标注为无效页,则这些无效页暂时不能进行读写操作,为提高存储资源的利用率,在某些情况下需要对这些数据块中的数据进行更新,以消除无效页,具体情况可以包括:
(1)、某一数据块中的无效页的数目达到预置数值:
当某一数据块内的无效页的数目达到某一门限值(该门限值可以根据用户需求进行设定,一般设置为一个大于或等于2的数字)时,可能会使得存储空间减少,则在此情况下可以根据第一数据页中的目标数据对无效页所在的数据块进行更新。
(2)、***处于空闲状态:
当***未进行读写操作,即处于空闲状态时,同样可以利用这段空闲时间根据第一数据页中的目标数据对无效页所在的数据块进行更新。
需要说明的是,上述仅以两个例子对预置的更新条件进行了说明,可以理解的是,在实际应用中,同样可以为其他的预置更新条件,此处不作限定。
206、根据第一数据页中的目标数据对无效页所在的数据块进行更新。
本实施例中,具体的更新过程可以为:
将数据块中除无效页外的其他数据页中的数据保存到缓存;
对数据块进行擦除;
获取第一数据页中的目标数据;
将所述目标数据写入原先的无效页中得到修改页;
将包含目标数据的修改页以及缓存中保存的数据内容写入擦除之后的数据块中;
将预置的页级逻辑映射表中的第一数据页的表项替换为所述修改页的表项。
上述更新流程中,由于闪存的特性,因此最小擦除单位为数据块,为将目标数据重新写入原先的数据页中,则可以先将数据块中其他数据页的内容拷贝至缓存,再重新写入新的数据,从而实现数据块的更新,该数据块更新的过程与现有技术中数据更新的过程类似,此处不再赘述。
当数据更新完之后,修改页(即写入了目标数据的原先的无效页)中即保存有目标数据,此时可以再对页级逻辑映射表进行调整,用修改页的表项替换原先的第一数据页的表项,具体的替换过程与前述替换过程类似,此处不再赘述,替换完成之后,则节点E中的物理地址再次被修改为8。
需要说明的是,由于本实施例中设置了页级逻辑映射表,则可能会占用一定的***资源,为减少资源占用,当***空闲时,或该页级逻辑映射表占用的资源达到预置的门限值时,可以对该页级逻辑映射表进行整理,具体的整理方式可以为:
首先获取属于同一个数据块的待整理的数据页,将该数据块内的有效数据和待整理的数据页中的数据进行合并,具体的合并可以通过COPY_BACK操作实现,可以理解的是,在实际应用中同样可以采用其他类似的操作实现数据合并,此处不作限定。
合并完成后,将合并后的数据拷贝至空白块中,同时在页级逻辑映射表中删除待整理的数据页的表项。
通过上述的整理操作,可以对数据页中的数据以及该数据页所属数据块中的数据进行合并,从而减少了数据页的数量,即减少了页级逻辑映射表中的内容。
需要说明的是,上述的整理方式仅为整理页级逻辑映射表的一个例子,在实际应用中,同样还可以采用其他的整理方式,此处不作限定。
本实施例中,由于在满足预置的更新条件之后,才对无效页所在的数据块进行更新,则能够保证无需在每次数据更新时都对数据块进行擦除,从而节省了数据更新的流程,提高了数据随机写入的性能;
其次,由于本实施例中采用二叉树作为页级逻辑映射表的存储方式,因此能够有效地提高页级逻辑映射表的查询效率;
再次,由于本实施例中可以对页级逻辑映射表进行整理,因此能够有效地减少***资源的占用。
综上所述,本实施例中,由于存在预置的页级逻辑映射表,且该页级逻辑映射表中包含有各数据页的物理地址,逻辑地址,以及各数据页之间的关联关系,所以在对某一数据页的内容进行更新时,只需要在该页级逻辑映射表中对该数据页的物理地址进行替换即可实现数据的更新,而无需擦除该数据页所在的整个数据块,因此本实施例可以利用该页级逻辑映射表以提高数据随机写入的性能。
下面介绍本发明实施例中闪存数据处理方法的另一实施例:
首先,需要说明的是,在现有技术中的闪存数据存储过程中,最小的存储单位为数据页,同样还可以以数据块为单位进行存储,但是现有技术中只建立有数据块之间的逻辑关系表,即块级逻辑映射表,当用户需要多次存储少量数据时,可能会使得每次存储均占用一个数据块,而该数据块的大部分空间可能仍然是空白的,因此会浪费大量的存储空间。
本发明实施例中提供了一种闪存数据处理方法,用以解决上述缺陷,具体请参阅图3,本发明实施例中闪存数据处理方法第三实施例包括:
301、获取待写入数据的长度信息;
当用户需要写入数据时,首先获取待写入数据的长度,该长度的单位可以以扇区为单位,假设一个数据块内包含64个数据页,每个数据页内包含4个扇区。
302、根据长度信息以及一个数据块所包含的扇区的数目将待写入数据拆分为块级数据以及页级数据;
本实施例中,将待写入数据的长度信息转换为对应所需占用的扇区数目L(若待写入数据原先即以扇区为单位计算长度,则无需转换),具体的转换方式此处不作限定;
获取一个数据块所包含的扇区的数目N;
将L与N进行取整运算,根据取整运算的结果B确定块级数据;
将L与N进行取余运算,根据取余运算的结果确定页级数据。
假设上述的L=260,N=64*4=256,则L div N=1,L mod N=4,则B=1,则块级数据为一个完整的空白数据块所能存储的数据,页级数据为4个扇区(即一个数据页)所能存储的数据。
303、按照块写入方式写入块级数据,按照页写入方式写入页级数据并对预置的页级逻辑映射表进行更新。
为便于理解,下面首先介绍本实施例中的预先设置流程:
首先可以建立四张数据表,分别为:
块级逻辑映射表:用于记录数据块的逻辑映射关系,逻辑地址与物理地址一一对应关系;
页级逻辑映射表:用于记录数据页的逻辑映射关系,采用二叉树的方式记录,包括数据页的逻辑地址,物理地址以及各数据页之间的关联关系;
块擦除次数列表:用于记录各数据块的擦除次数;
未擦除块列表:用于记录未被擦除的数据块。
需要说明的是,具体的块级逻辑映射表可以如下表所示:
表1
  块级映射表项   对应的逻辑地址   对应的物理地址
  0   0*n   0x00000000
  1   1*n   0x00000005
  2   2*n   0x80000010
  ...   ...   ...
  N   N*n   0xFFFFFFFF
  N+1   (N+1)*n   0xFFFFFFFF
  ...   ...   ...
上述表1中的每一项由4个字节实现,每一项都标识一个数据块的逻辑地址与物理地址之间的对应关系。
完成上述设置后即可进行数据的写入操作,下面对块级数据写入以及页级数据写入分别进行说明:
(1)块级数据写入,具体如图4所示:
a、从预置的空白数据块中选取B个空白数据块;
***上电时,对各数据块进行遍历即可查询到未写入数据的空白数据块,或者还可以对未擦除块列表中的数据块进行擦除得到空白数据块。
需要说明的是,在对未擦除块列表中的数据块进行擦除之前还可以先通过块擦除次数列表查询每一个数据块被擦除的次数,优先选择被擦除次数少的数据块进行擦除,以使得各数据块被擦除的次数大致相当,从而提高闪存的整体寿命。
b、将块级数据写入B个空白数据块中;
上述确定了需要一个空白数据块以存储数据,则可按顺序读取一部分数据,使得这部分数据刚好可以填充满一个数据块,并将这部分数据存储该数据块中。
c、将B个空白数据块的逻辑地址以及物理地址填入预置的块级逻辑映射表;
当数据填充完成后,该数据块即保存有数据,则将该数据块的逻辑地址以及物理地址填入块级逻辑映射表中,用于指示该数据块中已存有数据。
d、根据B个空白数据块的逻辑地址获取逻辑地址范围;
每个数据块对应一段逻辑地址,则此步骤获取该数据块对应的逻辑地址范围。
e、在预置的页级逻辑映射表中删除逻辑地址在该逻辑地址范围内的表项。
由于该数据块中已存满数据,则无法继续在该数据块所包含的数据页中存储数据,则可以从页级逻辑映射表中删除逻辑地址在该逻辑地址范围内的表项。
(2)块级数据写入,具体如图5所示:
a、从预置的空白数据块中选取一个空白数据块;
***上电时,对各数据块进行遍历即可查询到未写入数据的空白数据块,或者还可以对未擦除块列表中的数据块进行擦除得到空白数据块。
需要说明的是,在对未擦除块列表中的数据块进行擦除之前还可以先通过块擦除次数列表查询每一个数据块被擦除的次数,优先选择被擦除次数少的数据块进行擦除,以使得各数据块被擦除的次数大致相当,从而提高闪存的整体寿命。
b、将页级数据按顺序写入该空白数据块中的数据页;
由上述步骤302可知,写入页级数据共需要4个扇区(即一个数据页)的空间,具体写入页级数据的过程与现有技术中按照数据页为单位写入数据的过程一致,此处不作限定。
c、在预置的页级逻辑映射表中写入该空白数据块中存有该页级数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系;
当页级数据写入完成后,则该数据页即存有数据,则可以在页级逻辑映射表中新增一个节点,用于表示该数据页,具体新增的过程可以为:获取该数据页的逻辑地址以及物理地址,并根据该数据页中存储的数据与其他数据之间的关系确定该数据页的左节点以及右节点,之后形成新的节点***页级逻辑映射表中。
d、在预置的块级逻辑映射表中修改空白数据块的标志,用于指示该空白数据块中存在页级逻辑映射表。
本实施例中,在某一空白数据块中的某数据页内写入数据之后,则仅通过块级逻辑映射表已无法完整读取该数据块的内容,则还需读取该数据块的页级逻辑映射表才能够完整读取该数据块的内容,因此,需要在块级逻辑映射表中对该数据块的物理地址进行调整,具体可以将该数据块的对应的物理地址的最高位修改为1以作标识。
例如表1中表项“2”所示的数据块的物理地址为0x80000010,转化为二进制数为:1000 0000 0000 0000 0000 0000 0000 0001 0000,则其最高位为1,表示该数据块包含有页级逻辑映射表,在读取该数据块的内容时,需要同时读取页级逻辑映射表才能够完整地获取该数据块的内容。
本实施例中,由于设置了页级逻辑映射表,则可能会占用一定的***资源,为减少资源占用,当***空闲时,或该页级逻辑映射表占用的资源达到预置的门限值时,可以对该页级逻辑映射表进行整理,具体的整理方式与前述实施例中的整理方式一致,此处不再赘述。
本实施例中,由于待写入的数据可以被拆分为块级数据以及页级数据,因此能够在一次写入过程中同时分配数据块以及数据页进行数据写入,避免了少量数据占用一个完整数据块的情况,从而节约了存储空间;
其次,本实施例中,可以记录每个数据块被擦除的次数,并优先选择被擦除次数少的数据块进行擦除,以使得各数据块被擦除的次数大致相当,从而提高闪存的整体寿命;
再次,由于本实施例中可以对页级逻辑映射表进行整理,因此能够有效地减少***资源的占用。
综上所述,本实施例中,由于存在预置的页级逻辑映射表,且该页级逻辑映射表中包含有各数据页的物理地址,逻辑地址,以及各数据页之间的关联关系,所以在向空白数据块写入页级数据时,可以在该空白数据块的页级逻辑映射表中相应增加对应的表项,从而使得该空白数据块中可以存储若干个数据页的页级数据,而不会出现每个数据页的数据都需要独立占用一个数据块的情况,因此能够有效地节约存储空间。
上述实施例中介绍了两种闪存数据处理方法均是基于预置的页级逻辑映射表对页级数据(包括闪存中存储的页级数据以及向闪存写入的页级数据)进行管理,因此能够有效地提高闪存数据处理的性能。
下面对本发明实施例中的闪存数据处理装置进行介绍:
请参阅图6,本发明实施例中闪存数据处理装置第一实施例包括:
源数据查询单元601,用于根据获取到的目标数据查询待更新的源数据;
写入单元602,用于将所述目标数据写入预置空白数据块的第一数据页中;
标注单元603,用于所述源数据所在的数据页标注为无效页;
替换单元604,用于将预置的页级逻辑映射表中的所述无效页的表项替换为所述第一数据页的表项。
本实施例中的闪存数据处理装置还可以进一步包括:
更新触发单元605,用于判断是否满足预置的更新条件,若是,则触发更新单元执行相应操作;
更新单元606,用于在所述更新触发单元的触发下,根据所述第一数据页中的目标数据对所述无效页所在的数据块进行更新。
本实施例中的更新触发单元605包括:
第一触发单元6051,用于判断数据块内无效页的数目是否达到预置数值,若是,则触发更新单元执行相应操作;
或,
第二触发单元6052,用于判断当前是否处于空闲状态,若是,则触发更新单元执行相应操作。
本实施例中的更新单元606包括:
数据更新单元6061,用于将所述数据块中除无效页外的其他数据页中的数据保存到缓存,对所述数据块进行擦除,获取所述第一数据页中的目标数据,将包含所述目标数据的修改页以及缓存中保存的数据内容写入所述擦除之后的数据块中;
映射表更新单元6062,用于将预置的页级逻辑映射表中的所述第一数据页的表项替换为所述修改页的表项。
本实施例中的闪存数据处理装置还可以进一步包括:
空白数据块搜索单元607,用于当***上电时,对各物理数据块进行遍历,查询未记录数据的物理数据块以及已被擦除的物理数据块,将所述未记录数据的物理数据块以及已被擦除的物理数据块作为预置空白数据块。
本实施例中的闪存数据处理装置还可以进一步包括:
映射表生成单元608,用于建立页级逻辑映射表,所述页级逻辑映射表中包含各存有数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系。
本实施例中的闪存数据处理装置还可以进一步包括:
映射表整理单元609,用于对所述页级逻辑映射表进行整理。
本实施例中,写入单元602将目标数据写入预置空白数据块的第一数据页中,标注单元603将源数据所在的数据页标注为无效页,替换单元604将预置的页级逻辑映射表中的无效页的表项替换为第一数据页的表项,因此,在数据更新的过程中,无需对无效页所在的数据块进行擦除,而直接采用空白数据块中的第一数据页替代该无效页进行数据存储,因此节省了数据更新的操作,从而提高了数据随机写入的性能。
请参阅图7,本发明实施例中闪存数据处理装置第二实施例包括:
长度信息获取单元701,用于获取待写入数据的长度信息;
数据拆分单元702,用于根据所述长度信息以及一个数据块所包含的扇区的数目将所述待写入数据拆分为块级数据以及页级数据;
数据写入单元703,用于按照块写入方式写入所述块级数据,按照页写入方式写入所述页级数据。
本实施例中的数据写入单元703包括:
块写入单元7031,用于从预置的空白数据块中选取B个空白数据块,将所述块级数据写入所述B个空白数据块中,将所述B个空白数据块的逻辑地址以及物理地址填入预置的块级逻辑映射表,根据所述B个空白数据块的逻辑地址获取逻辑地址范围,在预置的页级逻辑映射表中删除逻辑地址在所述逻辑地址范围内的表项;
页写入单元7032,用于从预置的空白数据块中选取一个空白数据块M,将所述页级数据按顺序写入所述空白数据块M中的数据页,在预置的页级逻辑映射表中写入所述存有数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系,在预置的块级逻辑映射表中修改所述空白数据块M的标志,用于指示所述空白数据块M中存在页级逻辑映射表。
本实施例中,由于待写入的数据可以被数据拆分单元702拆分为块级数据以及页级数据,并且由数据写入单元703中的块写入单元7031以及页写入单元7032分别进行写入,因此能够在一次写入过程中同时分配数据块以及数据页进行数据写入,避免了少量数据占用一个完整数据块的情况,从而节约了存储空间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括如下步骤:
根据获取到的目标数据查询待更新的源数据;
将所述目标数据写入预置空白数据块的第一数据页中,将所述源数据所在的数据页标注为无效页;
将预置的页级逻辑映射表中的所述无效页的表项替换为所述预置空白数据块的第一数据页的表项。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种闪存数据处理方法及装置进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (25)

1、一种闪存数据处理方法,其特征在于,包括:
根据获取到的目标数据查询待更新的源数据;
将所述目标数据写入预置空白数据块的第一数据页中,将所述源数据所在的数据页标注为无效页;
将预置的页级逻辑映射表中的所述无效页的表项替换为所述预置空白数据块的第一数据页的表项。
2、根据权利要求1所述的方法,其特征在于,所述将预置的页级逻辑映射表中的所述无效页的表项替换为所述第一数据页的表项之后包括:
判断是否满足预置的更新条件,若是,则根据所述第一数据页中的目标数据对所述无效页所在的数据块进行更新。
3、根据权利要求2所述的方法,其特征在于,所述判断是否满足预置的更新条件包括:
判断数据块内无效页的数目是否达到预置数值,若是,则确定满足预置的更新条件。
4、根据权利要求2所述的方法,其特征在于,所述判断是否满足预置的更新条件包括:
判断当前是否处于空闲状态,若是,则确定满足预置的更新条件。
5、根据权利要求2或3或4所述的方法,其特征在于,所述根据所述第一数据页中的目标数据对所述无效页所在的数据块进行更新包括:
将所述数据块中除无效页外的其他数据页中的数据保存到缓存;
对所述数据块进行擦除;
获取所述第一数据页中的目标数据;
将所述目标数据写入所述无效页中得到修改页;
将包含所述目标数据的修改页以及缓存中保存的数据内容写入所述擦除之后的数据块中;
将预置的页级逻辑映射表中的所述第一数据页的表项替换为所述修改页的表项。
6、根据权利要求1至4中任一项所述的方法,其特征在于,所述将预置的页级逻辑映射表中的所述无效页的表项替换为所述第一数据页的表项包括:
查询所述无效页所在的表项;
将所述表项中的物理地址修改为所述第一数据页的物理地址;
保留所述表项原有的关联信息,所述关联信息用于表示所述表项与其他表项之间的关联关系。
7、根据权利要求1至4中任一项所述的方法,其特征在于,所述预置空白数据块的获取过程包括:
当***上电时,对各物理数据块进行遍历;
查询未记录数据的物理数据块以及已被擦除的物理数据块;
将所述未记录数据的物理数据块以及已被擦除的物理数据块作为预置空白数据块。
8、根据权利要求1至4中任一项所述的方法,其特征在于,建立所述预置的页级逻辑映射表包括:
获取各存有数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系;
根据所述各存有数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系建立所述页级逻辑映射表。
9、根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
对所述页级逻辑映射表进行整理。
10、根据权利要求9所述的方法,其特征在于,所述对页级逻辑映射表进行整理包括:
确定属于同一数据块的待整理的数据页;
将获取的属于同一数据块的有效数据以及待整理的数据页中的数据进行合并;
将合并后的数据拷贝至空白数据块中,并在所述页级逻辑映射表中删除所述待整理的数据页的表项。
11、一种闪存数据处理方法,其特征在于,包括:
获取待写入数据的长度信息;
根据所述长度信息以及一个数据块所包含的扇区的数目将所述待写入数据拆分为块级数据以及页级数据;
按照块写入方式写入所述块级数据,按照页写入方式写入所述页级数据并对预置的页级逻辑映射表进行更新。
12、根据权利要求11所述的方法,其特征在于,所述根据长度信息以及一个数据块所包含的扇区的数目将所述待写入数据拆分为块级数据以及页级数据包括:
将所述待写入数据的长度信息转换为对应所需占用的扇区数目L;
获取一个数据块所包含的扇区的数目N;
将所述L与N进行取整运算,根据所述取整运算的结果B确定块级数据;
将所述L与N进行取余运算,根据所述取余运算的结果确定页级数据。
13、根据权利要求11所述的方法,其特征在于,所述按照块写入方式写入所述块级数据包括:
从预置的空白数据块中选取所述B个空白数据块;
将所述块级数据写入所述B个空白数据块中;
将所述B个空白数据块的逻辑地址以及物理地址填入预置的块级逻辑映射表。
14、根据权利要求13所述的方法,其特征在于,所述将B个空白数据块的逻辑地址以及物理地址填入预置的块级逻辑映射表之后包括:
根据所述B个空白数据块的逻辑地址获取逻辑地址范围;
在预置的页级逻辑映射表中删除逻辑地址在所述逻辑地址范围内的表项。
15、根据权利要求11所述的方法,其特征在于,所述按照页写入方式写入所述页级数据并对预置的页级逻辑映射表进行更新包括:
从预置的空白数据块中选取一个空白数据块M;
将所述页级数据按顺序写入所述空白数据块M中的数据页;
在预置的页级逻辑映射表中写入所述空白数据块M中的所述页级数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系;
在预置的块级逻辑映射表中修改所述空白数据块M的标志,用于指示所述空白数据块M中存在页级逻辑映射表。
16、根据权利要求12至15中任一项所述的方法,其特征在于,建立所述预置的页级逻辑映射表包括:
获取各存有数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系;
根据所述各存有数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系建立所述页级逻辑映射表。
17、一种闪存数据处理装置,其特征在于,包括:
源数据查询单元,用于根据获取到的目标数据查询待更新的源数据;
写入单元,用于将所述目标数据写入预置空白数据块的第一数据页中;
标注单元,用于所述源数据所在的数据页标注为无效页;
替换单元,用于将预置的页级逻辑映射表中的所述无效页的表项替换为所述预置空白数据块的第一数据页的表项。
18、根据权利要求17所述的装置,其特征在于,所述装置还包括:
更新触发单元,用于判断是否满足预置的更新条件,若是,则触发更新单元执行相应操作;
更新单元,用于在所述更新触发单元的触发下,根据所述第一数据页中的目标数据对所述无效页所在的数据块进行更新。
19、根据权利要求18所述的装置,其特征在于,所述更新触发单元包括:
第一触发单元,用于判断数据块内无效页的数目是否达到预置数值,若是,则触发更新单元执行相应操作;
或,
第二触发单元,用于判断当前是否处于空闲状态,若是,则触发更新单元执行相应操作。
20、根据权利要求17或18或19所述的装置,其特征在于,所述更新单元包括:
数据更新单元,用于将所述数据块中除无效页外的其他数据页中的数据保存到缓存,对所述数据块进行擦除,获取所述第一数据页中的目标数据,将所述目标数据写入所述无效页中得到修改页,将包含所述目标数据的修改页以及缓存中保存的数据内容写入所述擦除之后的数据块中;
映射表更新单元,用于将预置的页级逻辑映射表中的所述第一数据页的表项替换为所述修改页的表项。
21、根据权利要求17或18或19所述的装置,其特征在于,所述装置还包括:
空白数据块搜索单元,用于当***上电时,对各物理数据块进行遍历,查询未记录数据的物理数据块以及已被擦除的物理数据块,将所述未记录数据的物理数据块以及已被擦除的物理数据块作为预置空白数据块。
22、根据权利要求17或18或19所述的装置,其特征在于,所述装置还包括:
映射表生成单元,用于建立页级逻辑映射表,所述页级逻辑映射表中包含各存有数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系。
23、根据权利要求17或18或19所述的装置,其特征在于,所述装置还包括:
映射表整理单元,用于对所述页级逻辑映射表进行整理。
24、一种闪存数据处理装置,其特征在于,包括:
长度信息获取单元,用于获取待写入数据的长度信息;
数据拆分单元,用于根据所述长度信息以及一个数据块所包含的扇区的数目将所述待写入数据拆分为块级数据以及页级数据;
数据写入单元,用于按照块写入方式写入所述块级数据,按照页写入方式写入所述页级数据并对预置的页级逻辑映射表进行更新。
25、根据权利要求24所述的装置,其特征在于,所述数据写入单元包括:
块写入单元,用于从预置的空白数据块中选取B个空白数据块,将所述块级数据写入所述B个空白数据块中,将所述B个空白数据块的逻辑地址以及物理地址填入预置的块级逻辑映射表,根据所述B个空白数据块的逻辑地址获取逻辑地址范围,在预置的页级逻辑映射表中删除逻辑地址在所述逻辑地址范围内的表项;
页写入单元,用于从预置的空白数据块中选取一个空白数据块M,将所述页级数据按顺序写入所述空白数据块M中的数据页,在预置的页级逻辑映射表中写入所述空白数据块M中存有所述页级数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系,在预置的块级逻辑映射表中修改所述空白数据块M的标志,用于指示所述空白数据块M中存在页级逻辑映射表。
CN2009100055431A 2009-01-19 2009-01-19 一种闪存数据处理方法及装置 Active CN101493794B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100055431A CN101493794B (zh) 2009-01-19 2009-01-19 一种闪存数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100055431A CN101493794B (zh) 2009-01-19 2009-01-19 一种闪存数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN101493794A true CN101493794A (zh) 2009-07-29
CN101493794B CN101493794B (zh) 2011-12-21

Family

ID=40924402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100055431A Active CN101493794B (zh) 2009-01-19 2009-01-19 一种闪存数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN101493794B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102779095A (zh) * 2011-05-09 2012-11-14 索尼公司 闪存装置、存储器控制装置、存储器控制方法及存储***
CN102799535A (zh) * 2012-06-29 2012-11-28 记忆科技(深圳)有限公司 固态硬盘的数据处理方法及固态硬盘
CN102841851A (zh) * 2012-07-19 2012-12-26 深圳市江波龙电子有限公司 闪存管理方法和闪存设备
CN103176910A (zh) * 2011-12-26 2013-06-26 群联电子股份有限公司 用于非易失性存储器的数据合并方法、控制器与储存装置
CN103365786A (zh) * 2012-04-01 2013-10-23 国民技术股份有限公司 数据存储方法、装置和***
CN103761193A (zh) * 2013-12-17 2014-04-30 记忆科技(深圳)有限公司 抑制逻辑页碎片产生的方法及***
CN104238962A (zh) * 2014-09-16 2014-12-24 华为技术有限公司 向缓存中写入数据的方法及装置
CN105718383A (zh) * 2014-12-19 2016-06-29 爱思开海力士有限公司 存储***及其操作方法
CN105760776A (zh) * 2016-02-04 2016-07-13 联想(北京)有限公司 一种数据处理方法及电子设备
CN106598504A (zh) * 2016-12-26 2017-04-26 华为机器有限公司 数据存储方法及装置
CN107844431A (zh) * 2017-11-03 2018-03-27 合肥兆芯电子有限公司 映射表更新方法、存储器控制电路单元与存储器存储装置
CN108334457A (zh) * 2018-02-12 2018-07-27 杭州宏杉科技股份有限公司 一种io处理方法及装置
CN111324290A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN111427511A (zh) * 2020-03-10 2020-07-17 青岛小鸟看看科技有限公司 一种数据存储方法及装置
CN112799972A (zh) * 2021-01-27 2021-05-14 成都佰维存储科技有限公司 Ssd映射表的实现方法、装置、可读存储介质及电子设备
CN112988038A (zh) * 2019-12-17 2021-06-18 国民技术股份有限公司 非易失性存储器的数据写入方法、终端和可读存储介质
CN113039529A (zh) * 2018-11-15 2021-06-25 美光科技公司 存储器的地址混淆

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4199519B2 (ja) * 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
CN100470677C (zh) * 2004-07-30 2009-03-18 深圳市朗科科技股份有限公司 提高闪存盘数据写入速度的方法
CN100356347C (zh) * 2006-04-29 2007-12-19 北京飞天诚信科技有限公司 闪存的安全写入方法

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102779095A (zh) * 2011-05-09 2012-11-14 索尼公司 闪存装置、存储器控制装置、存储器控制方法及存储***
CN102779095B (zh) * 2011-05-09 2017-03-01 索尼公司 闪存装置、存储器控制装置、存储器控制方法及存储***
CN103176910A (zh) * 2011-12-26 2013-06-26 群联电子股份有限公司 用于非易失性存储器的数据合并方法、控制器与储存装置
CN103176910B (zh) * 2011-12-26 2015-10-14 群联电子股份有限公司 用于非易失性存储器的数据合并方法、控制器与储存装置
CN103365786A (zh) * 2012-04-01 2013-10-23 国民技术股份有限公司 数据存储方法、装置和***
CN103365786B (zh) * 2012-04-01 2016-12-14 国民技术股份有限公司 数据存储方法、装置和***
CN102799535A (zh) * 2012-06-29 2012-11-28 记忆科技(深圳)有限公司 固态硬盘的数据处理方法及固态硬盘
CN102841851A (zh) * 2012-07-19 2012-12-26 深圳市江波龙电子有限公司 闪存管理方法和闪存设备
CN102841851B (zh) * 2012-07-19 2015-09-09 深圳市江波龙电子有限公司 闪存管理方法和闪存设备
CN103761193B (zh) * 2013-12-17 2016-09-14 记忆科技(深圳)有限公司 抑制逻辑页碎片产生的方法及***
CN103761193A (zh) * 2013-12-17 2014-04-30 记忆科技(深圳)有限公司 抑制逻辑页碎片产生的方法及***
CN104238962A (zh) * 2014-09-16 2014-12-24 华为技术有限公司 向缓存中写入数据的方法及装置
CN104238962B (zh) * 2014-09-16 2018-02-06 华为技术有限公司 向缓存中写入数据的方法及装置
CN105718383B (zh) * 2014-12-19 2020-10-13 爱思开海力士有限公司 存储***及其操作方法
CN105718383A (zh) * 2014-12-19 2016-06-29 爱思开海力士有限公司 存储***及其操作方法
CN105760776A (zh) * 2016-02-04 2016-07-13 联想(北京)有限公司 一种数据处理方法及电子设备
CN106598504A (zh) * 2016-12-26 2017-04-26 华为机器有限公司 数据存储方法及装置
CN107844431A (zh) * 2017-11-03 2018-03-27 合肥兆芯电子有限公司 映射表更新方法、存储器控制电路单元与存储器存储装置
CN108334457A (zh) * 2018-02-12 2018-07-27 杭州宏杉科技股份有限公司 一种io处理方法及装置
CN108334457B (zh) * 2018-02-12 2020-06-30 杭州宏杉科技股份有限公司 一种io处理方法及装置
US11853230B2 (en) 2018-11-15 2023-12-26 Micron Technology, Inc. Address obfuscation for memory
CN113039529A (zh) * 2018-11-15 2021-06-25 美光科技公司 存储器的地址混淆
CN111324290A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN112988038A (zh) * 2019-12-17 2021-06-18 国民技术股份有限公司 非易失性存储器的数据写入方法、终端和可读存储介质
CN111427511B (zh) * 2020-03-10 2023-10-27 青岛小鸟看看科技有限公司 一种数据存储方法及装置
CN111427511A (zh) * 2020-03-10 2020-07-17 青岛小鸟看看科技有限公司 一种数据存储方法及装置
CN112799972A (zh) * 2021-01-27 2021-05-14 成都佰维存储科技有限公司 Ssd映射表的实现方法、装置、可读存储介质及电子设备

Also Published As

Publication number Publication date
CN101493794B (zh) 2011-12-21

Similar Documents

Publication Publication Date Title
CN101493794B (zh) 一种闪存数据处理方法及装置
US10657047B2 (en) Data storage device and method of performing partial garbage collection
CN100419714C (zh) 闪存存取方法、闪存文件***的块替换方法及其管理装置
US8041884B2 (en) Controller for non-volatile memories and methods of operating the memory controller
US10915475B2 (en) Methods and apparatus for variable size logical page management based on hot and cold data
US8291155B2 (en) Data access method, memory controller and memory storage system
CN100424655C (zh) 快闪存储器管理方法
US6675281B1 (en) Distributed mapping scheme for mass storage system
CN100487672C (zh) 用于分割一逻辑块的方法及设备
CN106527969B (zh) 一种寿命均衡的NandFlash存储器读写方法
US20080109589A1 (en) Nonvolatile Storage Device And Data Write Method
CN112882650B (zh) 数据储存装置以及非挥发式存储器控制方法
CN101241471A (zh) 快闪存储器***及其垃圾收集方法
CN101634967B (zh) 用于闪存的区块管理方法、储存***与控制器
US9507523B1 (en) Methods, devices and systems for variable size logical page management in a solid state drive
CN102841851A (zh) 闪存管理方法和闪存设备
CN107239526A (zh) 文件***实现方法、碎片整理方法、操作位置定位方法
CN112612418B (zh) 一种用于大容量NandFlash坏块管理的方法及***
CN103294607A (zh) 一种存储管理方法
CN106354658A (zh) 一种降低混合映射算法中映射表内存资源占用的方法
US8261013B2 (en) Method for even utilization of a plurality of flash memory chips
CN103365786A (zh) 数据存储方法、装置和***
CN112882649B (zh) 数据储存装置以及非挥发式存储器控制方法
JP2009205689A (ja) フラッシュディスク装置
CN102541753B (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
C56 Change in the name or address of the patentee

Owner name: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

Free format text: FORMER NAME: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee after: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.

Address before: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee before: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220908

Address after: No. 1899 Xiyuan Avenue, high tech Zone (West District), Chengdu, Sichuan 610041

Patentee after: Chengdu Huawei Technologies Co.,Ltd.

Address before: 611731 Qingshui River District, Chengdu hi tech Zone, Sichuan, China

Patentee before: HUAWEI DIGITAL TECHNOLOGIES (CHENG DU) Co.,Ltd.