基于Flash的数据缓存方法及装置与流程

文档序号:11829524阅读:406来源:国知局
基于Flash的数据缓存方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种基于Flash的数据缓存方法及装置。



背景技术:

目前,在采用Flash(Flash Memory,闪存)存储连续的大数据时,首先将大数据暂存/缓存在Flash的缓冲块(Cache块)上,然后在Cache块写满数据时,通过Switch交换操作将Cache块的数据存储至数据块(Data块),以实现大数据的快速写入。

由于在连续的大数据的写入过程中,往往需要更新与大数据相关的系统数据(即小数据),进而导致大数据写入过程中回写的产生。例如,逻辑地址为LgBlk5的Cache块有256个页,在采用该Cache块缓存大数据过程中,如果在该Cache块未写满256页比如在缓存至第200页的位置时,需要更新与大数据相关的小数据,此时回写第0页的位置、即小数据的缓存位置。由于Cache块的第0页已经被更新,原Cache块上的数据已非最新数据,Cache块的数据不能直接Switch至Data块,导致后续写入该Cache块的大数据,需要存入Random块中,等到要将Cache块上的数据Merge至Data块时,需将Cache块上未产生回写的缓存页的大数据,搬移至数据块(Data块),会带来大量时间开销。

但是,由于搬移操作的耗时较长,并且在小数据的缓存位置位于缓存块的中间时可能需要数次搬移操作,造成大数据缓存的速度低,进而导致闪存数据存储的效率低。



技术实现要素:

本发明提供一种基于闪存的数据缓存方法及装置,旨在解决现有闪存写入连续的大数据时由于小数据的回写而造成数据存储效率低的技术问题。

为实现上述目的,本发明提供的一种基于闪存的数据缓存方法,所述基于闪存的数据缓存方法包括以下步骤:

在连续的大数据缓存至所述闪存的一级缓存块的过程中,实时检测当前是否存在与所述大数据关联的小数据;

在检测到当前存在与所述大数据关联的小数据时,将所述小数据缓存至所述闪存的二级缓存块;

在所述小数据缓存完成时,继续缓存所述大数据至所述一级缓存块。

优选地,所述在检测到当前存在与所述大数据关联的小数据时,将所述小数据缓存至所述闪存的二级缓存块的步骤包括:

在检测到当前存在与所述大数据关联的小数据时,确定所述二级缓存块中是否存储有与所述大数据关联的小数据;

在所述二级缓存块中存储有与所述大数据关联的小数据时,基于当前的所述小数据更新所述二级缓存块中与所述大数据关联的小数据。

优选地,所述继续缓存所述大数据至所述一级缓存块的步骤之后,所述基于闪存的数据缓存方法还包括:

在所述二级缓存块的数据量超过第一预设容量时,确定所述数据块是否处于空闲状态;

在所述数据块处于空闲状态时,将所述二级缓存块中的数据存储至所述闪存的数据块。

优选地,所述继续缓存所述大数据至所述一级缓存块的步骤之后,所述基于闪存的数据缓存方法还包括:

在所述一级缓存块的数据量超过第二预设容量时,将所述一级缓存块的数据存储至所述闪存的数据块。

优选地,所述小数据至少包括以下之一:所述大数据的格式信息、所述大数据占用扇区的数量、所述大数据的数据量和所述大数据的缓存时间。

此外,为实现上述目的,本发明还提供一种基于闪存的数据缓存装置,所述基于闪存的数据缓存装置包括:

检测模块,用于在连续的大数据缓存至所述闪存的一级缓存块的过程中,实时检测当前是否存在与所述大数据关联的小数据;

第一缓存模块,用于在检测到当前存在与所述大数据关联的小数据时,将所述小数据缓存至所述闪存的二级缓存块;

第二缓存模块,用于在所述小数据缓存完成时,继续缓存所述大数据至所述一级缓存块。

优选地,所述第一缓存模块包括:

确定单元,用于在检测到当前存在与所述大数据关联的小数据时,确定所述二级缓存块中是否存储有与所述大数据关联的小数据;

更新单元,用于在所述二级缓存块中存储有与所述大数据关联的小数据时,基于当前的所述小数据更新所述二级缓存块中与所述大数据关联的小数据。

优选地,所述数据缓存装置还包括:

确定模块,用于在所述二级缓存块的数据量超过第一预设容量时,确定所述数据块是否处于空闲状态;

第一存储模块,用于在所述数据块处于空闲状态时,将所述二级缓存块中的数据存储至所述闪存的数据块。

优选地,所述数据缓存装置还包括:

第二存储模块,用于在所述一级缓存块的数据量超过第二预设容量时,将所述一级缓存块的数据存储至所述闪存的数据块。

优选地,所述小数据至少包括以下之一:所述大数据的格式信息、所述大数据占用扇区的数量、所述大数据的数据量和所述大数据的缓存时间。

本发明通过在连续的大数据缓存至所述闪存的一级缓存块的过程中,实时检测当前是否存在与所述大数据关联的小数据,接着在检测到当前存在与所述大数据关联的小数据时,将所述小数据缓存至所述闪存的二级缓存块,而后在所述小数据缓存完成时,继续缓存所述大数据至所述一级缓存块,实现了将小数据缓存至闪存的二级缓存块后继续缓存大数据,降低了小数据回写时对大数据写入效率的影响,大大提高了采用闪存存储连续大数据的速度以及效率。

附图说明

图1为本发明基于闪存的数据缓存方法第一实施例的流程示意图;

图2为本发明基于闪存的数据缓存方法第二实施例中将所述小数据缓存至所述闪存的二级缓存块步骤的细化流程示意图;

图3为本发明基于闪存的数据缓存方法第三实施例的流程示意图;

图4为本发明基于闪存的数据缓存装置第一实施例的功能模块示意图;

图5为本发明基于闪存的数据缓存装置第二实施例中第一缓存模块的细化功能模块示意图;

图6为本发明基于闪存的数据缓存装置第三实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种基于闪存的数据缓存方法。参照图1,图1为本发明基于闪存的数据缓存方法第一实施例的流程示意图。

在本实施例中,该基于闪存的数据缓存方法包括:

步骤S10,在将连续的大数据缓存至所述闪存的一级缓存块的过程中,实时检测当前是否存在与所述大数据关联的小数据;

其中,小数据包括:所述大数据的格式信息、所述大数据占用扇区的数量、所述大数据的数据量、所述大数据的缓存时间等系统数据。本实施例中,在将连续的大数据缓存至Flash的Cache块的过程中,实时检测是否生成了与该大数据关联的小数据,即实时检测是否生成了该大数据的数据量、格式信息、占用扇区的数量及缓存时间等系统数据,进而确定当前是否存在与所述大数据关联的小数据。

步骤S20,在检测到当前存在与所述大数据关联的小数据时,将所述小数据缓存至所述闪存的二级缓存块;

在检测到当前存在与所述大数据关联的小数据时,即实时检测系统生成了该大数据的数据量、格式信息、占用扇区的数量及缓存时间等系统数据时,将所述小数据缓存至所述闪存的二级缓存块,其中,该二级缓存块为专门用于存储大数据相关的系统数据(小数据)的一级缓存块。

步骤S30,在所述小数据缓存完成时,继续缓存所述大数据至所述一级缓存块。

在所述小数据完成缓存至闪存的二级缓存块时,继续缓存所述大数据至所述一级缓存块。例如,连续的大数据的Cache块的逻辑地址LgBlk5、二级缓存块的逻辑地址为LgBlk100,LgBlk100这个区域缓存的都是小数据或者文件系统的数据,在系统生成了该大数据对应的小数据时,将小数据缓存至该二级缓存块,然后在小数据完成缓存至LgBlk100对应的二级缓存块时,继续缓存连续的大数据至逻辑地址为LgBlk5的Cache块。

进一步地,在一实施例中,在步骤S30之后,该基于闪存的数据缓存方法还包括:在所述一级缓存块的数据量超过第二预设容量时,将所述一级缓存块的数据存储至所述闪存的数据块。

本实施例中,在一级缓存块的数据量超过第二预设容量时,Cache块无法再写入更多的数据即Cache块已写满数据,直接将Cache块与Data块做Switch Merge,即将所述一级缓存块的数据交换至所述闪存的数据块,由于Switch Merge即数据交换的效率远高于Full-Merge(全合并)或搬移,因此能够大大提高闪存数据存储的速度以及效率。

本实施例中,通过在连续的大数据缓存至所述闪存的一级缓存块的过程中,实时检测当前是否存在与所述大数据关联的小数据,接着在检测到当前存在与所述大数据关联的小数据时,将所述小数据缓存至所述闪存的二级缓存块,而后在所述小数据缓存完成时,继续缓存所述大数据至所述一级缓存块,实现了将小数据缓存至闪存的二级缓存块后继续缓存大数据,降低了小数据回写时对大数据写入效率的影响,大大提高了采用闪存存储连续大数据的速度以及效率。

基于第一实施例提出本发明基于闪存的数据缓存方法的第二实施例,参照图2,在本实施例中,步骤S20包括:

步骤S21,在检测到当前存在与所述大数据关联的小数据时,确定所述二级缓存块中是否存储有与所述大数据关联的小数据;

由于在大数据开始写入Cache块时,都会产生大数据相关的系统数据即小数据,若二级缓存块中已存储有与所述小数据相关的小数据,则直接更新二级缓存块中已存储有与所述小数据相关的小数据即可实现小数据的缓存,并能够避免小数据的重复缓存以节约二级缓存块的存储空间。因此,在检测到当前存在与所述大数据关联的小数据时,首先确定所述二级缓存块中是否存储有与所述大数据关联的小数据。

步骤S22,在所述二级缓存块中存储有与所述大数据关联的小数据时,基于当前的所述小数据更新所述二级缓存块中与所述大数据关联的小数据。

本实施例中,在所述二级缓存块中存储有与所述大数据关联的数据时,直接基于当前的与大数据关联的小数据更新所述二级缓存块中与所述大数据关联的小数据,例如,在小数据包括大数据的缓存时间时,直接更新二级缓存块中存储的该大数据的缓存时间,进而能够节约二级缓存块的存储空间。

本实施例中,在检测到当前存在与所述大数据关联的小数据时,确定所述二级缓存块中是否存储有与所述大数据关联的小数据,而后在所述二级缓存块中存储有与所述大数据关联的小数据时,基于当前的所述小数据更新所述二级缓存块中与所述大数据关联的小数据,实现了更新二级缓存块中与大数据关联的数据,进而节约了二级缓存块的存储空间,进一步提高了采用闪存存储连续大数据的速度以及效率。

基于第一实施例提出本发明基于闪存的数据缓存方法的第三实施例,参照图3,在本实施例中,在步骤S30之后,该基于闪存的数据缓存方法还包括:

步骤S40,在所述二级缓存块的数据量超过第一预设容量时,确定所述数据块是否处于空闲状态;

容易理解,Flash的资源是有限的,因此二级缓存块也不可能无限大,本实施例中二级缓存块能够存储的数据量的为第一预设容量或者稍大于第一预设容量,其中,该第一预设容量可以在Flash出厂时设置,也可以由用户进行自行设定,比如第一预设容量可以设置为100页等。在二级缓存块的数据量超过第一预设容量时,需要将二级缓存块中存储的数据存储至数据块,为了提高数据存储的速度与效率,本实施例中在数据块处于空闲状态时,将二级缓存块中存储的数据存储至数据块,因此,需要首先确定数据块是否处于空闲状态。

步骤S50,在所述数据块处于空闲状态时,将所述二级缓存块中的数据存储至所述闪存的数据块。

在数据块处于空闲状态时,利用Flash进行数据传输的Idle(空闲)时间,比如二个大文件(大数据)之间的间隔,将所述二级缓存块中的数据存储至所述闪存的数据块,以实现二级缓存块的空闲回收,保证将二级缓存块的数据更新到Data块上,具体地,根据实际的Cache块的情形进行Merge操作,但是该Merge操作是在Flash数据传输的空闲时进行的,因此不会影响Flash写入大数据的速度及效率。

本实施例中,在所述二级缓存块的数据量超过第一预设容量时,确定所述数据块是否处于空闲状态,而后在所述数据块处于空闲状态时,将所述二级缓存块中的数据存储至所述闪存的数据块,实现了在Flash数据传输的空闲时将二级缓存块中的数据存储至数据块,并不会影响Flash写入大数据的速度及效率,进一步提高了采用闪存存储连续大数据的速度以及效率。

本发明进一步提供一种基于闪存的数据缓存装置。参照图4,图4为本发明基于闪存的数据缓存装置第二实施例的功能模块示意图。

在本实施例中,该基于闪存的数据缓存装置包括:

检测模块10,用于在连续的大数据缓存至所述闪存的一级缓存块的过程中,实时检测当前是否存在与所述大数据关联的小数据;

其中,小数据包括:所述大数据的格式信息、所述大数据占用扇区的数量、所述大数据的数据量、所述大数据的缓存时间等系统数据。本实施例中,在将连续的大数据缓存至Flash的Cache块的过程中,检测模块10实时检测是否生成了与该大数据关联的小数据,即实时检测是否生成了该大数据的数据量、格式信息、占用扇区的数量及缓存时间等系统数据,进而确定当前是否存在与所述大数据关联的小数据。

第一缓存模块20,用于在检测到当前存在与所述大数据关联的小数据时,将所述小数据缓存至所述闪存的二级缓存块;

在检测模块10检测到当前存在与所述大数据关联的小数据时,即实时检测系统生成了该大数据的数据量、格式信息、占用扇区的数量及缓存时间等系统数据时,第一缓存模块20将所述小数据缓存至所述闪存的二级缓存块,其中,该二级缓存块为专门用于存储大数据相关的系统数据(小数据)的一级缓存块。

第二缓存模块30,用于在所述小数据缓存完成时,继续缓存所述大数据至所述一级缓存块。

在所述小数据完成缓存至闪存的二级缓存块时,第二缓存模块30继续缓存所述大数据至所述一级缓存块。例如,连续的大数据的Cache块的逻辑地址LgBlk5、二级缓存块的逻辑地址为LgBlk100,LgBlk100这个区域缓存的都是小数据或者文件系统的数据,在系统生成了该大数据对应的小数据时,将小数据缓存至该二级缓存块,然后在小数据完成缓存至LgBlk100对应的二级缓存块时,继续缓存连续的大数据至逻辑地址为LgBlk5的Cache块。

进一步地,在一实施例中,数据缓存装置还包括:第二存储模块,用于在所述一级缓存块的数据量超过第二预设容量时,将所述一级缓存块的数据存储至所述闪存的数据块。

本实施例中,在一级缓存块的数据量超过第二预设容量时,Cache块无法再写入更多的数据即Cache块已写满数据,第二存储模块直接将Cache块与Data块做Switch Merge,即将所述一级缓存块的数据交换至所述闪存的数据块,由于Switch Merge即数据交换的效率远高于Full-Merge(全合并)或搬移,因此能够大大提高闪存数据存储的速度以及效率。

本实施例中,通过在连续的大数据缓存至所述闪存的一级缓存块的过程中,检测模块10实时检测当前是否存在与所述大数据关联的小数据,接着在检测到当前存在与所述大数据关联的小数据时,第一缓存模块20将所述小数据缓存至所述闪存的二级缓存块,而后在所述小数据缓存完成时,第二缓存模块30继续缓存所述大数据至所述一级缓存块,实现了将小数据缓存至闪存的二级缓存块后继续缓存大数据,降低了小数据回写时对大数据写入效率的影响,大大提高了采用闪存存储连续大数据的速度以及效率。

基于第一实施例提出本发明基于闪存的数据缓存装置的第二实施例,参照图5,在本实施例中,第一缓存模块20包括:

确定单元21,用于在检测到当前存在与所述大数据关联的小数据时,确定所述二级缓存块中是否存储有与所述大数据关联的小数据;

由于在大数据开始写入Cache块时,都会产生大数据相关的系统数据即小数据,若二级缓存块中已存储有与所述小数据相关的小数据,则直接更新二级缓存块中已存储有与所述小数据相关的小数据即可实现小数据的缓存,并能够避免小数据的重复缓存以节约二级缓存块的存储空间。因此,在检测到当前存在与所述大数据关联的小数据时,首先通过确定单元21确定所述二级缓存块中是否存储有与所述大数据关联的小数据。

更新单元22,用于在所述二级缓存块中存储有与所述大数据关联的数据时,基于当前的所述小数据更新所述二级缓存块中与所述大数据关联的数据。

本实施例中,在所述二级缓存块中存储有与所述大数据关联的数据时,更新单元22直接基于当前的与大数据关联的所述小数据更新所述二级缓存块中与所述大数据关联的小数据,例如,在小数据包括大数据的缓存时间时,直接更新二级缓存块中存储的该大数据的缓存时间,进而能够节约二级缓存块的存储空间。

本实施例中,在检测到当前存在与所述大数据关联的小数据时,确定单元21确定所述二级缓存块中是否存储有与所述大数据关联的小数据,而后在所述二级缓存块中存储有与所述大数据关联的小数据时,更新单元22基于当前的所述小数据更新所述二级缓存块中与所述大数据关联的小数据,实现了更新二级缓存块中与大数据关联的数据,进而节约了二级缓存块的存储空间,进一步提高了采用闪存存储连续大数据的速度以及效率。

基于第一实施例提出本发明基于闪存的数据缓存装置的第三实施例,参照图6,在本实施例中,数据缓存装置还包括:

确定模块40,用于在所述二级缓存块的数据量超过第一预设容量时,确定所述数据块是否处于空闲状态;

容易理解,Flash的资源是有限的,因此二级缓存块也不可能无限大,本实施例中二级缓存块能够存储的数据量的为第一预设容量或者稍大于第一预设容量,其中,该第一预设容量可以在Flash出厂时设置,也可以由用户进行自行设定,比如第一预设容量可以设置为100页等。在二级缓存块的数据量超过第一预设容量时,需要将二级缓存块中存储的数据存储至数据块,为了提高数据存储的速度与效率,本实施例中在数据块处于空闲状态时,将二级缓存块中存储的数据存储至数据块,因此,需要首先通过确定模块40确定数据块是否处于空闲状态。

第一存储模块50,用于在所述数据块处于空闲状态时,将所述二级缓存块中的数据存储至所述闪存的数据块。

在数据块处于空闲状态时,第一存储模块50利用Flash进行数据传输的Idle(空闲)时间,比如二个大文件(大数据)之间的间隔,将所述二级缓存块中的数据存储至所述闪存的数据块,以实现二级缓存块的空闲回收,保证将二级缓存块的数据更新到Data块上,具体地,根据实际的Cache块的情形进行Merge操作,但是该Merge操作是在Flash数据传输的空闲时进行的,因此不会影响Flash写入大数据的速度及效率。

本实施例中,在所述二级缓存块的数据量超过第一预设容量时,确定模块40确定所述数据块是否处于空闲状态,而后在所述数据块处于空闲状态时,第一存储模块50将所述二级缓存块中的数据存储至所述闪存的数据块,实现了在Flash数据传输的空闲时将二级缓存块中的数据存储至数据块,并不会影响Flash写入大数据的速度及效率,进一步提高了采用闪存存储连续大数据的速度以及效率。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1