一种闪存数据处理方法及装置的制作方法

文档序号:6480646阅读:168来源:国知局
专利名称:一种闪存数据处理方法及装置的制作方法
技术领域
本发明涉及数据处理领域,尤其涉及一种闪存数据处理方法及装置。
背景技术
固态硬盘(SSD, Solid State Disk)由控制单元与存储单元组成,其中, 存储单元多采用非易失性的闪存(Flash)芯片构成,由于不具有机械转动装 置,因而SSD具有抗震能力强,电源开销小等优势,并得到广泛应用。
闪存在物理上由若干个数据块组成,每个数据块又由若干个页组成,现 有技术中,对于闪存的管理均基于数据块的管理,即目前闪存的最小管理单 位为数据块,例如,当需要改变某一数据块内的一页数据时,会对该数据块 进行完全擦除,之后再全部重新写入。
由上述流程可以看出,现有技术中的方案中,在写入某一页数据时,会 将该页所在的数据块完全擦除,之后再重新写入该数据块,所以导致更新数 据时需要进行大量的数据擦除和写入操作,从而降低了数据随机写入的性能。

发明内容
本发明实施例提供了 一种闪存数据处理方法及装置,能够提高数据随机 写入的性能。
本发明实施例提供的闪存数据处理方法,包括4艮据获取到的目标数据 查询待更新的源数据;将所述目标数据写入预置空白数据块的第一数据页中, 将所述源数据所在的数据页标注为无效页;将预置的页级逻辑映射表中的所 述无效页的表项替换为所述预置空白数据块的第 一数据页的表项。
本发明实施例提供的闪存数据处理方法,包括获取待写入数据的长度 信息;4艮据所述长度信息以及一个数据块所包含的扇区的数目将所述待写入 数据拆分为块级数据以及页级数据;按照块写入方式写入所述块级数据,按 照页写入方式写入所述页级数据并对预置的页级逻辑映射表进行更新。
本发明实施例提供的闪存数据处理装置,包括源数据查询单元,用于 根据获取到的目标数据查询待更新的源数据;写入单元,用于将所述目标数 据写入预置空白数据块的第一数据页中;标注单元,用于所述源数据所在的
8数据页标注为无效页;替换单元,用于将预置的页级逻辑映射表中的所述无 效页的表项替换为所述预置空白数据块的第 一数据页的表项。
本发明实施例提供的闪存数据处理装置,包括长度信息获取单元,用 于获取待写入数据的长度信息;数据拆分单元,用于根据所述长度信息以及 一个数据块所包含的扇区的数目将所述待写入数据拆分为块级数据以及页级
数据;数据写入单元,用于按照块写入方式写入所述块级数据,按照页写入
方式写入所述页级数据并对预置的页级逻辑映射表进行更新。
从以上^^支术方案可以看出,本发明实施例具有以下优点
本发明实施例中,获取到目标数据之后,将目标数据写入预置空白数据 块的第一数据页中,并将源数据所在的数据页标注为无效页,同时还将预置 的页级逻辑映射表中的无效页的表项替换为第一数据页的表项,因此,在数 据更新的过程中,无需对无效页所在的数据块进行擦除,而直接采用空白数 据块中的第一数据页替代该无效页进行数据存储,因此节省了数据更新的操 作,从而提高了数据随机写入的性能。


图1为本发明实施例中闪存数据处理方法第一实施例流程图; 图2 (a)为本发明实施例中闪存数据处理方法第二实施例流程图; 图2 (b)为本发明实施例中页级逻辑映射表示意图; 图3为本发明实施例中闪存数据处理方法第三实施例流程图; 图4为本发明实施例中页写入方式示意图; 图5为本发明实施例中块写入方式示意图; 图6为本发明实施例中闪存数据处理装置第一实施例示意图; 图7为本发明实施例中闪存数据处理装置第二实施例示意图。
具体实施例方式
本发明实施例提供了 一种闪存数据处理方法及装置,用于提高数据随机 写入的性能。
请参阅图1,本发明实施例中闪存数据处理方法第一实施例包括
101、根据获取到的目标数据查询待更新的源数据;
本实施例中,当需要对闪存数据块中某一页的数据进行更新时,首先会
9获取新的数据,即目标数据,之后再根据该目标数据所需存储的位置查询待 更新的源数据。
例如,当用户在操作系统中需要替换一个文件时(具体可以为用户粘贴 了一个文件名相同的文件,并选择了 "覆盖"),则操作系统可以从用户粘贴 的位置获知该文件在闪存中对应的位置,并且读取原先存储于闪存中该位置 的数据,即可获得待更新的源数据。
102、将所述目标数据写入预置空白数据块的第一数据页中,将所述源数
据所在的数据页标注为无效页;
当确定了待更新的源数据之后,在预置的空白数据块组中获取一个空白 数据块,将目标数据写入该空白数据块的某一个数据页中,记录为第一数据 页。
并将源数据所在的数据页标注为无效页,具体的标注方式可以为在该 数据页的标签或属性字段中插入无效标志,该无效标志用于指示该数据页无 效,即暂时不会对该数据页进行读写操作,需要说明的是,在实际应用中, 具体标注无效页的方式还可以有^f艮多种,此处不作限定。
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",源lt据为"300"。
203、 将所述目标数据写入预置空白数据块的第一数据页中,将所述源数据所在的数据页标注为无效页;
当确定了待更新的源数据之后,在预置的空白数据块组中获取一个空白 数据块,将目标数据写入该空白数据块的某一个数据页中,记录为第一数据 页。
并将源数据所在的数据页标注为无效页,具体的标注方式可以为在该 数据页的标签或属性字^R中插入无效标志,该无效标志用于指示该数据页无 效,即暂时不会对该数据页进行读写操作,需要说明的是,在实际应用中, 具体标注无效页的方式还可以有很多种,此处不作限定。
假设源数据"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、根据第一数据页中的目标数据对无效页所在的数据块进行更新。
本实施例中,具体的更新过程可以为
将数据块中除无效页外的其他数据页中的数据保存到緩存;
对数据块进行擦除;
获取第 一数据页中的目标数据;
将所述目标数据写入原先的无效页中得到修改页;
将包含目标数据的修改页以及緩存中保存的数据内容写入擦除之后的数 据块中;
将预置的页级逻辑映射表中的第 一数据页的表项替换为所述修改页的表项。
上述更新流程中,由于闪存的特性,因此最小擦除单位为数据块,为将 目标数据重新写入原先的数据页中,则可以先将数据块中其他数据页的内容 拷贝至缓存,再重新写入新的数据,从而实现数据块的更新,该数据块更新 的过程与现有技术中数据更新的过程类似,此处不再赘述。
当数据更新完之后,修改页(即写入了目标数据的原先的无效页)中即 保存有目标数据,此时可以再对页级逻辑映射表进行调整,用修改页的表项
替换原先的第一数据页的表项,具体的替换过程与前述替换过程类似,此处
13不再赘述,替换完成之后,则节点E中的物理地址再次被修改为8。
需要说明的是,由于本实施例中设置了页级逻辑映射表,则可能会占用 一定的系统资源,为减少资源占用,当系统空闲时,或该页级逻辑映射表占 用的资源达到预置的门限值时,可以对该页级逻辑映射表进行整理,具体的
整理方式可以为
首先获取属于同一个数据块的待整理的数据页,将该数据块内的有效数 据和待整理的数据页中的数据进行合并,具体的合并可以通过COPY_BACK 操作实现,可以理解的是,在实际应用中同样可以釆用其他类似的操作实现 数据合并,此处不作限定。
合并完成后,将合并后的数据拷贝至空白块中,同时在页级逻辑映射表 中删除待整理的数据页的表项。
通过上述的整理操作,可以对数据页中的数据以及该数据页所属数据块 中的数据进行合并,从而减少了数据页的数量,即减少了页级逻辑映射表中 的内容。
需要说明的是,上述的整理方式仅为整理页级逻辑映射表的一个例子, 在实际应用中,同样还可以采用其他的整理方式,此处不作限定。
本实施例中,由于在满足预置的更新条件之后,才对无效页所在的数据 块进行更新,则能够保证无需在每次数据更新时都对数据块进行擦除,从而 节省了数据更新的流程,提高了数据随机写入的性能;
其次,由于本实施例中采用二叉树作为页级逻辑映射表的存储方式,因 此能够有效地提高页级逻辑映射表的查询效率;
再次,由于本实施例中可以对页级逻辑映射表进行整理,因此能够有效 地减少系统资源的占用。
综上所述,本实施例中,由于存在预置的页级逻辑映射表,且该页级逻 辑映射表中包含有各数据页的物理地址,逻辑地址,以及各数据页之间的关 联关系,所以在对某一数据页的内容进行更新时,只需要在该页级逻辑映射 表中对该数据页的物理地址进行替换即可实现数据的更新,而无需擦除该数 据页所在的整个数据块,因此本实施例可以利用该页级逻辑映射表以提高数 据随机写入的性能。
14下面介绍本发明实施例中闪存数据处理方法的另 一实施例
首先,需要说明的是,在现有技术中的闪存数据存储过程中,最小的存 储单位为数据页,同样还可以以数据块为单位进行存储,但是现有技术中只
建立有数据块之间的逻辑关系表,即块级逻辑映射表,当用户需要多次存储 少量数据时,可能会使得每次存储均占用一个数据块,而该数据块的大部分 空间可能仍然是空白的,因此会浪费大量的存储空间。
本发明实施例中提供了一种闪存数据处理方法,用以解决上述缺陷,具
体请参阅图3,本发明实施例中闪存数据处理方法第三实施例包括
301、 获取待写入数据的长度信息;
当用户需要写入数据时,首先获取待写入数据的长度,该长度的单位可 以以扇区为单位,假设一个数据块内包含64个数据页,每个数据页内包含4 个扇区。
302、 根据长度信息以及一个数据块所包含的扇区的数目将待写入数据拆 分为块级数据以及页级数据;
本实施例中,将待写入数据的长度信息转换为对应所需占用的扇区数目L (若待写入数据原先即以扇区为单位计算长度,则无需转换),具体的转换方
式此处不作限定;
获取一个数据块所包含的扇区的数目N;
将L与N进行取整运算,根据取整运算的结果B确定块级数据; 将L与N进行取余运算,根据取余运算的结果确定页级数据。 々支i殳上述的I^260, N=64*4=256,则LdivN二l, LmodN=4,则B二1, 则块级数据为一个完整的空白数据块所能存储的数据,页级数据为4个扇区 (即一个数据页)所能存储的数据。
303、 按照块写入方式写入块级数据,按照页写入方式写入页级数据并对 预置的页级逻辑映射表进行更新。
为便于理解,下面首先介绍本实施例中的预先设置流程 首先可以建立四张数据表,分別为
块级逻辑映射表用于记录数据块的逻辑映射关系,逻辑地址与物理地 址——对应关系;页级逻辑映射表用于记录数据页的逻辑映射关系,采用二叉树的方式
记录,包括数据页的逻辑地址,物理地址以及各数据页之间的关联关系;
块擦除次数列表用于记录各数据块的擦除次数;
未擦除块列表用于记录未被擦除的数据块。
需要说明的是,具体的块级逻辑映射表可以如下表所示
表1
块级映射表项对应的逻辑地址对应的物理i也址
00*n0x00000糊
1l*n0x00000005
22*n0x80000010
……
NN*nOxFFFFFFFF
N+l(N+l)*nOxFFFFFFFF
……
上述表1中的每一项由4个字节实现,每一项都标识一个数据块的逻辑 地址与物理地址之间的对应关系。
完成上述设置后即可进行数据的写入操作,下面对块级数据写入以及页 级数据写入分别进行说明
(1 )块级数据写入,具体如图4所示
a、 从预置的空白数据块中选取B个空白数据块;
系统上电时,对各数据块进行遍历即可查询到未写入数据的空白数据块, 或者还可以对未擦除块列表中的数据块进行擦除得到空白数据块。
需要说明的是,在对未擦除块列表中的数据块进行擦除之前还可以先通 过块擦除次数列表查询每一个数据块被擦除的次数,优先选择被擦除次数少 的数据块进行擦除,以使得各数据块被擦除的次数大致相当,从而提高闪存 的整体寿命。
b、 将块级数据写入B个空白数据块中;
上述确定了需要一个空白数据块以存储数据,则可按顺序读取一部分数 据,使得这部分数据刚好可以填充满一个数据块,并将这部分数据存储该数 据块中。
c、 将B个空白数据块的逻辑地址以及物理地址填入预置的块级逻辑映射
表;当数据填充完成后,该数据块即保存有数据,则将该数据块的逻辑地址 以及物理地址填入块级逻辑映射表中,用于指示该数据块中已存有数据。
d、 冲艮据B个空白数据块的逻辑地址获取逻辑地址范围; 每个数据块对应一段逻辑地址,则此步骤获取该数据块对应的逻辑地址范围。
e、 在预置的页级逻辑映射表中删除逻辑地址在该逻辑地址范围内的表项。
由于该数据块中已存满数据,则无法继续在该数据块所包含的数据页中 表项。
(2 )块级数据写入,具体如图5所示
a、 从预置的空白数据块中选取一个空白数据块;
系统上电时,对各数据块进行遍历即可查询到未写入数据的空白数据块, 或者还可以对未擦除块列表中的数据块进行擦除得到空白数据块。
需要说明的是,在对未擦除块列表中的数据块进行擦除之前还可以先通 过块擦除次数列表查询每一个数据块被擦除的次数,优先选择被擦除次数少 的数据块进行擦除,以使得各数据块被擦除的次数大致相当,从而提高闪存 的整体寿命。
b、 将页级数据按顺序写入该空白数据块中的数据页;
由上述步骤302可知,写入页级数据共需要4个扇区(即一个数据页) 的空间,具体写入页级数据的过程与现有技术中按照数据页为单位写入数据 的过程一致,此处不作限定。
c、 在预置的页级逻辑映射表中写入该空白数据块中存有该页级数据的数 据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系;
当页级数据写入完成后,则该数据页即存有数据,则可以在页级逻辑映 射表中新增一个节点,用于表示该数据页,具体新增的过程可以为获取该 数据页的逻辑地址以及物理地址,并根据该数据页中存储的数据与其他数据 之间的关系确定该数据页的左节点以及右节点,之后形成新的节点插入页级 逻辑映射表中。
17d、在预置的块级逻辑映射表中修改空白数据块的标志,用于指示该空白 数据块中存在页级逻辑映射表。
本实施例中,在某一空白数据块中的某数据页内写入数据之后,则仅通 过块级逻辑映射表已无法完整读取该数据块的内容,则还需读取该数据块的 页级逻辑映射表才能够完整读取该数据块的内容,因此,需要在块级逻辑映 射表中对该数据块的物理地址进行调整,具体可以将该数据块的对应的物理 地址的最高位修改为1以作标识。
例如表1中表项"2"所示的数据块的物理地址为0x80000010,转化为二
表示该数据块包含有页级逻辑映射表,在读取该数据块的内容时,需要同时 读取页级逻辑映射表才能够完整地获取该数据块的内容。
本实施例中,由于设置了页级逻辑映射表,则可能会占用一定的系统资 源,为减少资源占用,当系统空闲时,或该页级逻辑映射表占用的资源达到 预置的门限值时,可以对该页级逻辑映射表进行整理,具体的整理方式与前 述实施例中的整理方式一致,此处不再赘述。
本实施例中,由于待写入的数据可以被拆分为块级数据以及页级数据, 因此能够在一次写入过程中同时分配数据块以及数据页进行数据写入,避免 了少量数据占用 一个完整数据块的情况,从而节约了存储空间;
其次,本实施例中,可以记录每个数据块被擦除的次数,并优先选择被 擦除次数少的数据块进行擦除,以使得各数据块被擦除的次数大致相当,从 而提高闪存的整体寿命;
再次,由于本实施例中可以对页级逻辑映射表进行整理,因此能够有效 地减少系统资源的占用。
综上所述,本实施例中,由于存在预置的页级逻辑映射表,且该页级逻 辑映射表中包含有各数据页的物理地址,逻辑地址,以及各数据页之间的关 联关系,所以在向空白数据块写入页级数据时,可以在该空白数据块的页级 逻辑映射表中相应增加对应的表项,从而使得该空白数据块中可以存储若干 个数据页的页级数据,而不会出现每个数据页的数据都需要独立占用 一个数 据块的情况,因此能够有效地节约存储空间。上述实施例中介绍了两种闪存数据处理方法均是基于预置的页级逻辑映 射表对页级数据(包括闪存中存储的页级数据以及向闪存写入的页级数据) 进行管理,因此能够有效地l^高闪存数据处理的性能。
下面对本发明实施例中的闪存数据处理装置进行介绍 请参阅图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分别进行写入,因此能够在一次写入过程中同时分配数据块以及数 据页进行数据写入,避免了少量数据占用一个完整数据块的情况,从而节约 了存储空间。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤 是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机 可读存储介质中,该程序在执行时,包括如下步骤
根据获取到的目标数据查询待更新的源数据;
将所述目标数据写入预置空白数据块的第一数据页中,将所述源数据所 在的数据页标注为无效页;
将预置的页级逻辑映射表中的所述无效页的表项替换为所述预置空白数 据块的第 一数据页的表项。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种闪存数据处理方法及装置进行了详细介绍, 对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式
及 应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明 的限制。
2权利要求
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、 根据权利要求ll所述的方法,其特征在于,所述按照块写入方式写 入所述块级数据包括从预置的空白数据块中选取所述B个空白数据块; 将所述块级数据写入所述B个空白数据块中;将所述B个空白数据块的逻辑地址以及物理地址填入预置的块级逻辑映 射表。
14、 根据权利要求13所述的方法,其特征在于,所述将B个空白数据块 的逻辑地址以及物理地址填入预置的块级逻辑映射表之后包括根据所述B个空白数据块的逻辑地址获取逻辑地址范围; 在预置的页级逻辑映射表中删除逻辑地址在所述逻辑地址范围内的表项。
15、 根据权利要求ll所述的方法,其特征在于,所述按照页写入方式写 入所述页级数据并对预置的页级逻辑映射表进行更新包括从预置的空白数据块中选取一个空白数据块M; 将所述页级数据按顺序写入所述空白数据块M中的数据页; 在预置的页级逻辑映射表中写入所述空白数据块M中的所述页级数据的 数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系; 在预置的块级逻辑映射表中修改所述空白数据块M的标志,用于指示所述空白数据块M中存在页级逻辑映射表。
16、 根据权利要求12至15中任一项所述的方法,其特征在于,建立所 述预置的页级逻辑映射表包括获取各存有数据的数据页的逻辑地址,物理地址以及该数据页与其他数据页之间的关联关系;#4居所述各存有数据的数据页的逻辑地址,物理地址以及该^:据页与其 他数据页之间的关联关系建立所述页级逻辑映射表。
17、 一种闪存数据处理装置,其特征在于,包括 源数据查询单元,用于根据获取到的目标数据查询待更新的源数据; 写入单元,用于将所述目标数据写入预置空白数据块的第 一数据页中; 标注单元,用于所述源lt据所在的it据页标注为无效页;替换单元,用于将预置的页级逻辑映射表中的所述无效页的表项替换为 所述预置空白数据块的第 一数据页的表项。
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中存在页级逻辑映射表。
全文摘要
本发明实施例公开了一种闪存数据处理方法及装置,用于提高随机写入性能。本发明实施例方法包括根据获取到的目标数据查询待更新的源数据;将所述目标数据写入预置空白数据块的第一数据页中,将所述源数据所在的数据页标注为无效页;将预置的页级逻辑映射表中的所述无效页的表项替换为所述预置空白数据块的第一数据页的表项。本发明实施例还提供了一种闪存数据处理装置。本发明实施例能够有效地提高随机写入性能。
文档编号G06F12/06GK101493794SQ20091000554
公开日2009年7月29日 申请日期2009年1月19日 优先权日2009年1月19日
发明者张宗全 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1