控制缓存映射的方法及缓存系统 技术领域 本发明涉及缓存系统的缓存映射技术, 特别涉及一种闪存介质作为缓存时控制缓 存映射的方法及一种缓存系统。
背景技术 闪存 (Flash Memory) 介质是一种长寿命的非易失性存储器, 其在断电情况下仍 能保持所存储的数据信息。现有技术中常利用闪存介质作为底层存储介质如硬盘、 硬盘阵 列等传统磁盘存储系统的缓存, 以缓解受底层存储介质输入输出性能不佳所带来的性能约 束。
通常, 利用闪存介质作为缓存时, 在缓存和底层存储介质之间采用的映射策略是 组相联映射。 在组相联映射中, 按照作为映射目标的缓存的大小, 将作为映射源的底层存储 介质划分成多个组, 其中每个组的容量大小等于缓存的大小。根据缓存所包含的目标数据 块的数目及大小, 将底层存储介质的每个组划分成相同数目的区域 ( 即数据块 ), 每个区域 的大小与缓存中的一个目标数据块的大小一致。在底层存储介质的一个组中, 不同的数据 块与缓存中的不同的目标数据块相对应。在底层存储介质的不同组中, 对应位置的数据块 映射到缓存中相同的目标数据块。
图 1 示出了组相联映射的一个示例。该例中, 作为缓存的闪存介质划分成从目标 数据块 0 到目标数据块 3 的 4 个目标数据块, 作为映射源的硬盘包括两个组, 每个组划分成 与缓存的 4 个目标数据块相对应的数据块, 并且硬盘中的每一个数据块的大小与闪存介质 中的每一个目标数据块的大小一致。 该例中, 硬盘与缓存的组相联映射关系为 : 硬盘的第一 组 ( 包括数据块 0- 数据块 3) 中的数据块 0 与第二组 ( 包括数据块 4- 数据块 7) 中的数据 块 4 映射到闪存介质中的目标数据块 0, 硬盘的第一组中的数据块 1 与第二组中的数据块 5 映射到闪存介质中的目标数据块 1, 硬盘的第一组中的数据块 2 与第二组中的数据块 6 映射 到闪存介质中的目标数据块 2, 硬盘的第一组中的数据块 3 与第二组中的数据块 7 映射到闪 存介质中的目标数据块 3。 按照该映射关系, 数据块 0 和数据块 4 中的数据缓存到目标数据 块 0 中, 数据块 1 和数据块 5 中的数据缓存到目标数据块 1 中, 数据块 2 与数据块 6 中的数 据缓存到目标数据块 2 中, 数据块 3 与数据块 7 中的数据缓存到目标数据块 3 中。
但是, 在现有技术中, 缓存与底层存储介质之间的映射关系通常是静态的。 在系统 工作的整个过程中, 底层存储介质中的数据块所映射到的缓存中的目标数据块通常是不变 的。这样, 当闪存介质作为缓存时, 对于系统中局部区域数据访问异常频繁的应用场景, 系 统中频繁访问的数据所映射到的闪存介质的介质区域的擦写次数将过于频繁。 由于闪存介 质的擦写次数是有限的, 这样将导致频繁访问的数据所映射到的闪存介质的介质区域将比 其它的区域更快地达到擦写次数的极限, 进而导致整个闪存介质不可用。
发明内容
考虑到现有技术的上述缺陷, 本发明的实施例提出一种控制缓存映射的方法及一种缓存系统, 在缓存与底层存储介质之间采取动态映射策略以使得系统中频繁访问的数据 并不是静态地映射到缓存上的某一目标数据块, 从而可以优化作为缓存的闪存介质的寿 命。
本发明实施例提供一种控制缓存映射的方法, 其中, 以预定的时间周期更换底层 存储介质中至少一个数据块所映射到所述底层存储介质的缓存中的目标数据块, 其中, 所 述底层存储介质中一个或多个数据块只映射到所述缓存中的一个目标数据块, 所述底层存 储介质的缓存包括闪存介质, 所更换的所述缓存中的目标数据块包括当前所述缓存中具有 最大擦写次数的目标数据块
本发明实施例提供一种控制缓存映射的方法, 其中, 所述方法包括 :
监控底层存储介质的缓存中各目标数据块的擦写次数, 其中, 所述底层存储介质 中一个或多个数据块只映射到所述缓存中的一个目标数据块, 所述底层存储介质的缓存包 括闪存介质 ;
当所述缓存中具有最大擦写次数的目标数据块与具有最小擦写次数的目标数据 块之间的擦写次数之差达到预先设定的擦写阈值时, 更换所述底层存储介质中的至少一个 数据块所映射到的所述缓存中的目标数据块, 所更换的所述缓存中的目标数据块包括当前 所述缓存中具有最大擦写次数的目标数据块 ; 以及 继续监控所述缓存中的各目标数据块在进行所述更换后所产生的擦写次数。
本发明实施例提供一种缓存系统, 包括 : 底层存储介质 ; 闪存介质, 耦合至所述底 层存储介质, 用于作为所述底层存储介质的缓存, 其中所述底层存储介质中的一个或多个 数据块只映射到所述缓存中的一个目标数据块 ; 处理器, 被配置成 : 以预定的时间周期更 换底层存储介质中至少一个数据块所映射到所述底层存储介质的缓存中的目标数据块, 所 更换的所述缓存中的目标数据块包括当前所述缓存中具有最大擦写次数的目标数据块。
本发明实施例提供一种缓存系统, 包括 : 底层存储介质 ; 闪存介质, 耦合至所述底 层存储介质, 用于作为所述底层存储介质的缓存, 其中所述底层存储介质中的一个或多个 数据块只映射到所述缓存中的一个目标数据块 ; 处理器, 被配置成 : 监控所述缓存中各目 标数据块的擦写次数 ; 当所述缓存中具有最大擦写次数的目标数据块与具有最小擦写次数 的目标数据块之间的擦写次数之差达到预先设定的擦写阈值时, 更换所述底层存储介质中 的至少一个数据块所映射到的所述缓存中的目标数据块, 所更换的所述缓存中的目标数据 块包括当前所述缓存中具有最大擦写次数的目标数据块 ; 以及
继续监控所述缓存中的各目标数据块在进行所述更换后所产生的擦写次数。
本发明实施例的方法和装置, 通过更换底层存储介质中包括与当前具有最大擦写 次数的目标数据块所对应的数据块在内的至少一个数据块所映射到的缓存中的目标数据 块, 实现了对充当缓存的闪存介质的使用寿命的优化。
附图说明
本发明的目的、 特点、 特征和优点通过以下结合附图的详细描述将变得显而易见。 图 1 示出了组相联映射的一个示例 ; 图 2 示出了根据本发明实施例一的控制缓存映射的方法的流程示意图 ;6其中 :
102439572 A CN 102439582
说明书3/11 页图 3- 图 5 示出了在利用本发明实施例一的方法控制缓存映射的一个实例中, 不同 切换周期中的映射关系示意图 ;
图 6- 图 11 示出了在利用本发明实施例一的方法控制缓存映射的另一个实例中, 不同切换周期中的映射关系示意图 ;
图 12 示出了根据本发明实施例二的控制缓存映射的方法的流程示意图 ; 以及
图 13- 图 14 示出了在利用本发明实施例二的方法控制缓存映射的一个实例中的 映射关系示意图 ;
图 15 示出了按照本发明实施例的缓存系统。 具体实施方式
本发明的实施例提供一种控制缓存映射的方法及一种缓存系统, 其中, 所述方法 包括 : 以预定的时间周期更换底层存储介质中至少一个数据块所映射到所述底层存储介质 的缓存中的目标数据块, 其中, 所述底层存储介质中一个或多个数据块只映射到所述缓存 中的一个目标数据块, 所述底层存储介质的缓存包括闪存介质, 所更换的所述缓存中的目 标数据块包括当前所述缓存中具有最大擦写次数的目标数据块。 下面将结合附图详细描述本发明的各个实施例。
图 2 示出了根据本发明实施例一的控制缓存映射的方法的流程示意图。本实施 例中, 闪存介质作为缓存, 底层存储介质示例性地为硬盘, 底层存储介质中的一个或多个数 据块只映射到所述缓存中的一个目标数据块。其中, 闪存介质包括固态磁盘即 SSD(solid state disk) 磁盘。
如图 2 所示出的, 该实施例一的控制缓存映射的方法包括如下步骤 :
在步骤 S201, 根据预先设置的切换周期 T, 触发计时器开始计时。
在步骤 S202, 在一个切换循环的每一个切换周期内, 更换硬盘中的至少一个数据 块所映射到的缓存中的目标数据块, 以使得在一个切换循环后, 缓存中的各目标数据块的 擦写次数相接近, 其中, 一个切换循环所包括的切换周期的数目不小于缓存所包含的目标 数据块的数目 N。
图 1、 图 3- 图 5 示出了利用本发明实施例一的方法控制缓存映射的一个具体实例。 该实例中在一个切换循环的每一个切换周期内, 更换硬盘中的每一个数据块所映射到的缓 存中的目标数据块, 使得硬盘中的每一个数据块在一个切换循环的不同切换周期内映射到 缓存中的不同目标数据块, 其中, 一个切换循环包括的切换周期的数目等于缓存所包含的 目标数据块的数目 N。 在该实例中, 示例性但不作为限制地, 缓存具有 4 个目标数据块, 硬盘 包括两个组, 每个组划分成与缓存的 4 个目标数据块相对应的 4 个数据块, 并且硬盘中的每 一个数据块的大小与闪存介质中的每一个目标数据块的大小一致。
如图 1、 图 3- 图 5 所示出的, 本实例采用周期性轮转动态切换策略, 一个切换循环 中包含的切换周期的数目等于缓存中所包含的目标数据块的数目 N, N 为大于 0 的整数。该 例中 N = 4。在本实例中, 每经过一个切换周期, 切换硬盘中的每一个数据块所对应的映射 目标。硬盘中的各数据块在不同的切换周期内所映射到的目标数据块不同。
具体地, 该实例在初始时采用图 1 所示出的映射关系。 如图 1 所示出的, 在该例中, 在初始时, 硬盘与缓存之间的映射关系为 : 硬盘的数据块 0 和数据块 4 映射到缓存的目标数
据块 0, 硬盘的数据块 1 和数据块 5 映射到缓存的目标数据块 1, 硬盘的数据块 2 和数据块 6 映射到缓存的目标数据块 2, 硬盘的数据块 3 和数据块 7 映射到缓存的目标数据块 3。上 述数字为对数据块或目标数据块的编号。
在第一切换周期 ( 简称第一周期 ) 到达时, 分别将闪存介质中各目标数据块中所 缓存的数据迁移至其它的目标数据块中。该例中, 示例性地, 将闪存介质中目标数据块 0 中 当前缓存的有效数据迁移至目标数据块 1, 将目标数据块 1 中当前缓存的有效数据迁移至 目标数据块 2, 将目标数据块 2 中当前缓存的有效数据迁移至目标数据块 3, 将目标数据块 3 中当前缓存的有效数据迁移至目标数据块 0。在缓存中的数据迁移后, 根据目标数据块中 数据的迁移, 相应地更换硬盘中每一个数据块所映射到的目标数据块。 经过该次迁移后, 修 改得到的映射关系如图 3 所示出的。
在第二周期到达时, 同样将闪存介质中目标数据块 0 中当前缓存的有效数据迁移 至目标数据块 1, 将目标数据块 1 中当前缓存的有效数据迁移至目标数据块 2, 将目标数据 块 2 中当前缓存的有效数据迁移至目标数据块 3, 将目标数据块 3 中当前缓存的有效数据迁 移至目标数据块 0。经过该次迁移后, 根据该次迁移修改缓存与硬盘的映射关系, 修改后的 映射关系如图 4 所示出的。 在第三周期到达时, 同样将闪存介质中目标数据块 0 中当前缓存的有效数据迁移 至目标数据块 1, 将目标数据块 1 中当前缓存的有效数据迁移至目标数据块 2, 将目标数据 块 2 中当前缓存的有效数据迁移至目标数据块 3, 将目标数据块 3 中当前缓存的有效数据迁 移至目标数据块 0。经过该次迁移后, 根据该次迁移修改缓存与硬盘的映射关系, 修改后的 映射关系, 修改得到的映射关系如图 5 所示出的。在第四周期到达时, 同样进行上述的迁移 后, 相应地修改映射关系, 修改得到的映射关系如图 1 所示出的, 即回到了在第一周期期间 的映射关系。这样一个切换循环结束。然后, 可以继续下一个切换循环的切换过程。
在本实施例中, 在进行目标数据块中缓存数据的迁移后, 可以通过更新存储在闪 存介质和 / 或内存中的缓存元数据来进行所映射的目标数据块的更换。
在硬盘中局部区域如某一数据块访问频繁的场景下, 在一个切换循环的各切换周 期中, 硬盘中访问频繁的数据块分别映射到闪存介质中不同的目标数据块, 从而使得硬盘 中访问频繁的局域不会静态地一直只映射到某一固定的目标数据块, 从而可以延长及优化 闪存介质的寿命。 并且, 在经过一个如上文所述的轮转切换循环后, 闪存介质中的各目标数 据块的擦除次数接近, 并且接近于平均值, 各目标数据块的擦除次数分布比较均匀, 从而可 以使得闪存介质的寿命最优化。
本实施例中, 在进行映射关系的动态切换时, 按照缓存中目标数据块的编号顺序, 以轮转的方式将所述缓存中每一目标数据块的数据分别迁移至编号与其相邻的目标数据 块中。上述例子只是示例性地, 其它的轮转方式也适用。举例说明, 在到达切换周期时, 可 以按照 : 目标数据块 0 中当前缓存的数据迁移至目标数据块 3, 目标数据块 3 中当前缓存的 数据迁移至目标数据块 2, 目标数据块 2 中当前缓存的数据迁移至目标数据块 1, 目标数据 块 1 中当前缓存的数据迁移至目标数据块 0 的顺序来实现在切换周期到达时, 对缓存中各 目标数据块中缓存的数据的迁移, 然后相应地更换底层存储介质如硬盘中的每一个数据块 所映射到的目标数据块, 硬盘和缓存之间的映射关系相应更换。
当然, 除了上文所述的轮转方式外, 其它的更换所述底层存储介质中的至少一个
数据块所映射到的所述缓存中的目标数据块的方式也适用, 只要能使得在一个切换循环 后, 所述缓存中的各目标数据块的擦写次数相接近就可以了。所述的接近可以是各目标数 据块的擦写次数均接近平均值, 具体地, 可以是各目标数据块的擦写次数的差异小于预定 的擦写次数差异阈值。该差异阈值可以根据需要或具体的应用场景来设置。
采用周期性轮转动态切换策略时, 用户可根据应用场景灵活设置切换周期, 其切 换循环较短, 但是, 每次切换映射目标时, 缓存中的所有有效数据都会迁移, 因而周期性轮 转动态切换策略更适用于小容量的缓存。
图 6- 图 11 示出了利用根据本发明实施例一的方法控制缓存映射的另一实例。在 该例中, 采样周期性排列动态切换映射的策略来更换硬盘中的每一个数据块所映射到的缓 存中的目标数据块, 以使得在一个切换循环后, 缓存中的各目标数据块的擦写次数相接近。 在该例中, 一个切换循环中包含的切换周期的数目等于 N 乘以 (N-1), 其中 N 为缓存中所包 含的目标数据块的数目, N 为大于 0 的整数。示例性地, 该例中 N = 3, 所以该例中一个切换 循环包括 6 个切换周期。
该例中, 闪存介质作为缓存, 底层存储介质示例性地为硬盘, 示例性但不作为限制 地, 缓存具有 3 个目标数据块, 硬盘包括两个组, 每个组划分成与缓存的 3 个目标数据块相 对应的 3 个数据块, 并且硬盘中的每一个数据块的大小与闪存介质中的每一个目标数据块 的大小一致。
在该例中, 在一个切换循环的每一个切换周期内, 将缓存中当前具有最大擦写次 数的目标数据块中缓存的数据与所述缓存中除该具有最大擦写次数之外的其它目标数据 块中、 在当前的切换循环中其内数据进行过最少次数的交换、 并且与在当前的切换循环中 上一个切换周期中与该当前具有最大擦写次数的目标数据块进行交换的目标数据块不同 的任一个目标数据块中缓存的数据相交换, 即数据相互迁移, 并且根据目标数据块中缓存 数据的迁移, 相应地更换所对应的硬盘中的数据块所映射到的目标数据块。 其中, 缓存中各 目标数据块都有 N-1 次机会成为具有最大擦写次数的目标数据块, 也就是说在一个切换循 环中各目标数据块在不同的 N-1 个周期内为最大擦写次数的目标数据块即与访问最频繁 的数据块相对应。
示例性地, 假定在该切换循环开始时, 闪存介质中的目标数据块 0 具有最大的擦 写次数, 这表明硬盘中当前映射到目标数据块 0 的数据块 0 和数据块 3 的访问最频繁。除 了目标数据块 0 的目标数据块是目标数据块 1 和目标数据块 2。如图 6 所示出的, 该例中, 在第一周期到达之前硬盘与缓存之间的映射关系为 : 硬盘的数据块 0 和数据块 3 映射到缓 存的目标数据块 0, 硬盘的数据块 1 和数据块 4 映射到缓存的目标数据块 1, 硬盘的数据块 2 和数据块 5 映射到缓存的目标数据块 2。
该例中, 示例性地, 在第一周期到达时, 将闪存介质中目标数据块 0 中缓存的有效 数据迁移至目标数据块 1, 将目标数据块 1 中当前缓存的有效数据迁移至目标数据块 0。在 缓存中的数据迁移后, 根据目标数据块中数据的迁移, 相应地更换硬盘中数据块 0 和数据 块 3 所映射到的缓存中的目标数据块以及数据块 1 和数据块 4 所映射到的缓存中的目标数 据块。经过该次迁移后, 修改得到的映射关系如图 7 所示出的, 此时访问最频繁的数据块 0 和数据块 3 映射到目标数据块 1。
在第二周期到达时, 将闪存介质中当前具有最大擦写次数的目标数据块 1 中缓存的有效数据迁移至目标数据块 2, 将目标数据块 2 中当前缓存的有效数据迁移至目标数据 块 1, 在缓存中的数据迁移后, 根据目标数据块中数据的迁移, 相应地更换硬盘中数据块 0 和数据块 3 以及数据块 2 和数据块 5 所映射到的缓存中的目标数据块。经过该次迁移后, 修改得到的映射关系如图 8 所示出的。此时, 硬盘中访问最频繁的数据块 0 和数据块 3 映 射到了目标数据块 2。
在第三周期到达时, 将闪存介质中当前具有最大擦写次数的目标数据块 2 中缓存 的有效数据迁移至目标数据块 0, 将目标数据块 0 中当前缓存的有效数据迁移至目标数据 块 2, 在缓存中的数据迁移后, 根据目标数据块中数据的迁移。 经过该次迁移后, 修改得到的 映射关系如图 9 所示出的。此时, 硬盘中访问最频繁的数据块 0 和数据块 3 映射到了目标 数据块 0。
在第四周期到达时, 将闪存介质中当前具有最大擦写次数的目标数据块 0 中缓存 的有效数据迁移至目标数据块 1, 将目标数据块 1 中当前缓存的有效数据迁移至目标数据 块 0, 在缓存中的数据迁移后, 根据目标数据块中数据的迁移。 经过该次迁移后, 修改得到的 映射关系如图 10 所示出的。此时, 硬盘中访问最频繁的数据块 0 和数据块 3 映射到了目标 数据块 1。 在第五周期到达时, 将闪存介质中当前具有最大擦写次数的目标数据块 1 中缓存 的有效数据迁移至目标数据块 2, 将目标数据块 2 中当前缓存的有效数据迁移至目标数据 块 1, 在缓存中的数据迁移后, 根据目标数据块中数据的迁移。 经过该次迁移后, 修改得到的 映射关系如图 11 所示出的。此时, 硬盘中访问最频繁的数据块 0 和数据块 3 映射到了目标 数据块 2。
在第六周期到达时, 将闪存介质中当前具有最大擦写次数的目标数据块 2 中缓存 的有效数据迁移至目标数据块 0, 将目标数据块 0 中当前缓存的有效数据迁移至目标数据 块 2, 在缓存中的数据迁移后, 根据目标数据块中数据的迁移。 经过该次迁移后, 修改得到的 映射关系回到如图 6 所示出的。此时, 一次切换循环结束, 从图 6 开始, 按照图 6- 图 11 的 切换顺序继续进行下一个切换循环。
该例中, 在到达每一个周期时, 当前具有最大擦写次数的目标数据块即当前访问 最频繁的数据块所映射到的目标数据块是按照目标数据块的编号的顺序来选择切换目标 的。在其它实施例中, 当目标数据块的数目超过 3 个时可以按照也可以不按照目标数据块 的编号的顺序来选择切换目标, 只需该切换目标是在当前的切换循环中其内数据与其它目 标数据块进行过最少次数的交换、 并且与在当前切换循环的上一次切换周期中当前具有最 大擦写次数的目标数据块刚进行切换的目标数据块不同的任一个目标数据块。
在本实施例中, 在进行目标数据块中缓存数据的迁移后, 可以通过更新存储在闪 存介质和 / 或内存中的缓存元数据来进行所映射的目标数据块的更换。
在硬盘中局部区域如某一数据块访问频繁的场景下, 在一个切换循环的各切换周 期中, 硬盘中访问频繁的数据块分别映射到闪存介质中不同的目标数据块, 从而使得硬盘 中访问频繁的局域不会一直只映射到某一固定的目标数据块, 从而可以延长及优化闪存介 质的寿命。 并且, 在经过一个如上文所述的周期性排列切换循环后, 闪存介质中的各目标数 据块的擦除次数接近, 并且接近于平均值, 各目标数据块的擦除次数分布比较均匀, 从而可 以使得闪存介质的寿命最优化。 并且, 采用本实施例的周期性排列动态切换映射策略, 每次
切换映射目标时, 仅仅迁移缓存中的两个目标数据块中的有效数据, 不会对性能产生严重 的影响, 可以适用于各种尺寸的缓存。
上文所示出的底层存储介质与缓存之间的各周期性动态映射切换方法, 适用于业 务呈现周期性规律的应用场景, 尤其适用于业务呈现周期性规律且系统访问最为频繁的数 据在硬盘上存储位置固定的场景。
本发明的实施例还提供一种控制缓存映射的方案, 该方案包括 : 监控底层存储介 质的缓存中各目标数据块的擦写次数, 其中, 所述底层存储介质中一个或多个数据块只映 射到所述缓存中的一个目标数据块, 所述底层存储介质的缓存包括闪存介质 ; 当所述缓存 中具有最大擦写次数的目标数据块与具有最小擦写次数的目标数据块之间的擦写次数之 差达到预先设定的擦写阈值时, 更换所述底层存储介质中的至少一个数据块所映射到的所 述缓存中的目标数据块, 所更换的所述缓存中的目标数据块包括当前所述缓存中具有最大 擦写次数的目标数据块 ; 以及继续监控所述缓存中的各目标数据块在进行所述更换后所产 生的擦写次数。
图 12 示出了根据本发明实施例二的控制缓存映射的方法的流程示意图。本实施 例中, 闪存介质作为缓存, 底层存储介质示例性地为硬盘, 示例性但不作为限制地, 缓存具 有 4 个目标数据块, 硬盘包括两个组, 每个组划分成与缓存的 4 个目标数据块相对应的 4 个数据块, 并且硬盘中的每一个数据块的大小与闪存介质中的每一个目标数据块的大小一 致。 如图 12 所示出的, 本实施例的控制缓存映射的方法包括 :
在步骤 S1201 中, 监控缓存中各目标数据块的擦写次数, 并记录。
在步骤 S1202 中, 当缓存中具有最大擦写次数的目标数据块与具有最小擦写次数 的目标数据块之间的擦写次数之差达到预先设定的擦写阈值时, 将具有最大擦写次数的目 标数据块与具有最小擦写次数的目标数据块之间缓存的数据进行交换。
在步骤 S1203 中, 根据对目标数据块所做的交换, 相应地更换底层存储介质中当 前映射至具有最大擦写次数的目标数据块的所有数据块和当前映射至具有最小擦写次数 的目标数据块的所有数据块所映射到的缓存中的目标数据块。具体地, 即将底层存储介质 中当前映射至具有最大擦写次数的目标数据块的所有数据块更换为映射至当前具有最小 擦写次数的目标数据块, 而将底层存储介质中当前映射至具有最小擦写次数的目标数据块 的所有数据块更换为映射至当前具有最大擦写次数的目标数据块。具体地, 可以通过更改 缓存元数据来改变硬盘中的数据块和缓存中的目标数据块的映射关系。
在步骤 S1204 中, 在对硬盘与缓存之间的映射进行上述改变后, 将所记录的所述 缓存的各目标数据块的擦写次数清零。然后回到步骤 S1201, 继续监控并记录在经过上述 映射改变之后所产生的各目标数据块的擦写次数, 并在满足条件时执行步骤 S1203-S1204。 示例性地, 可以利用计数器来记录各目标数据块的擦写次数。 在每次映射改变后, 将计数器 清零, 然后重写计数, 记录映射改变后的产生的擦写次数。
图 1、 图 13- 图 14 示出了利用本发明实施例二的方法来控制缓存映射的一个具体 实例。在该例中, 假定在初始时硬盘与缓存之间采用图 1 所示的映射关系。如图 1 所示出 的, 在初始时, 硬盘与缓存的映射关系为 : 硬盘的数据块 0 和数据块 4 映射到缓存的目标数 据块 0, 硬盘的数据块 1 和数据块 5 映射到缓存的目标数据块 1, 硬盘的数据块 2 和数据块
6 映射到缓存的目标数据块 2, 硬盘的数据块 3 和数据块 7 映射到缓存的目标数据块 3。监 控缓存中各目标数据块的擦写次数。
假定当前目标数据块 0 具有最大的擦写次数, 目标数据块 1 具有最小的擦写次数。 随着数据缓存的进行, 监控并记录各目标数据块的擦写次数。当确定出目标数据块 0 与目 标数据块 1 的擦写次数之差达到擦写阈值 S 时, 将具有最大擦写次数的目标数据块 0 与具 有最小擦写次数的目标数据块 1 之间缓存的数据进行交换, 并相应地将硬盘中当前映射至 目标数据块 0 的所有数据块 ( 该例中为数据块 0 和数据块 4) 更换为映射至目标数据块 1, 而将当前映射至目标数据块 1 的所有数据块 ( 该例中为数据块 1 和数据块 5) 更换为映射 至目标数据块 0。改变后的映射关系如图 13 中所示出的。然后将缓存中的各目标数据块的 擦写次数清零, 并继续监控缓存中的各目标数据块在进行映射改变后所产生的擦写次数。
在该例中在进行上次交换后, 随着数据缓存的进行, 假定目标数据块 3 的擦写次 数变成最小, 目标数据块 2 的擦写次数变成最大, 当目标数据块 2 的擦写次数与目标数据块 3 的擦写次数之差达到擦写阈值 S 时, 将具有最大擦写次数的目标数据块 2 与具有最小擦写 次数的目标数据块 3 之间缓存的数据进行交换, 并相应地将硬盘中当前映射至目标数据块 2 的所有数据块 ( 该例中为数据块 2 和数据块 6) 更换为映射至目标数据块 3, 而将当前映射 至目标数据块 3 的所有数据块 ( 该例中为数据块 3 和数据块 7) 更换为映射至目标数据块 2。改变后的映射关系如图 14 所示。然后, 将缓存中的各目标数据块的擦写次数清零, 并继 续监控缓存中各目标数据块在映射改变后产生的擦写次数, 并在具有最大擦写次数的目标 数据块与具有最小擦写次数的目标数据块之间的擦写次数之差达到预先设定的擦写阈值 S 时, 对硬盘与缓存之间的映射作出上文所示出的类似的更换。 利用本实施例可以保证闪存介质中的目标数据块及擦除块的最大擦写次数和最 小擦写次数的差距可控, 使得各个目标数据块的擦写次数接近平均值。并且通过设置擦写 阈值 S 可以控制闪存介质中目标数据块擦写次数的方差。本实施例尤其适用于业务不呈现 周期性现象或周期性现象不明显的应用场景。
在本发明实施例的实现中, 可以利用替换次数来代替擦写次数, 通过监控并记录 目标数据块的替换次数来进行动态映射切换。 如本领域技术人员所理解的, 在缓存中, 把数 据换出并重新写入其它数据的操作叫做缓存的替换。
在具体应用中, 用户可以根据实际的应用场景, 选择启用上文所示出的各动态映 射策略, 并在不需要的时候关闭动态映射策略。进而, 在选择动态映射策略后, 用户还可根 据实际的需要通过相应的接口模块设置相应的参数, 如切换周期、 切换循环和 / 或擦写阈 值等。在未选择动态切换策略时, 用户可以使用默认的映射策略, 如可以是直接映射、 全相 联映射、 组相联映射等。
本领域技术人员应当理解, 除了上文所示出的切换方法外, 还可以有利用其它的 切换顺序的映射切换方法, 只要该切换方法能使得底层存储介质中访问频繁的数据块中的 数据不是一直只对应某一个固定的缓存目标数据块, 就可以使得作为缓存的闪存介质的某 一目标数据块不是很快地达到使用极限, 从而可以延长闪存介质的寿命。
本领域技术人员应当理解, 当切换方法使得缓存中的各目标数据块的擦写次数相 接近如趋于平均时, 可以最大化闪存介质的寿命。
现在参考图 15, 其示出了按照本发明实施例的缓存系统。
如图 15 所示, 本发明实施例的缓存系统 1500 包括 : 底层存储介质 1510 ; 闪存介 质 1520, 耦合至所述底层存储介质, 用于作为所述底层存储介质的缓存, 其中所述底层存储 介质中的一个或多个数据块只映射到所述缓存中的一个目标数据块 ; 处理器 1530, 被配置 成: 以预定的时间周期更换所述底层存储介质中的至少一个数据块所映射到的所述缓存中 的目标数据块, 所更换的所述缓存中的目标数据块包括当前所述缓存中具有最大擦写次数 的目标数据块。
其中, 缓存系统中所述处理器还可以进一步被配置成 : 在一个切换循环的每一个 切换周期内, 更换所述底层存储介质中的至少一个数据块所映射到的所述缓存中的目标数 据块, 以使得在一个切换循环后, 所述缓存中的各目标数据块的擦写次数相接近, 其中, 一 个切换循环所包括的切换周期的数目不小于所述缓存所包含的目标数据块的数目 N。
其中, 缓存系统中所述处理器还可以进一步被配置成 : 在一个切换循环的每一个 切换周期内, 更换所述底层存储介质中的每一个数据块所映射到的所述缓存中的目标数据 块, 使得所述底层存储介质中的每一个数据块在一个切换循环的不同切换周期内映射到所 述缓存中的不同目标数据块 ; 其中, 一个切换循环包括的切换周期的数目等于所述缓存所 包含的目标数据块的数目。
其中, 缓存系统中所述处理器还可以进一步被配置成 : 在一个切换循环的每一个 切换周期内, 按照所述缓存中目标数据块的编号顺序, 以轮转的方式将所述缓存中每一目 标数据块的数据分别迁移至编号与其相邻的目标数据块中, 并根据目标数据块中数据的迁 移, 相应地更换所述底层存储介质中每一个数据块所映射到的目标数据块。
其中, 缓存系统中所述处理器还可以进一步被配置成 : 在一个切换循环的每一个 切换周期内, 将所述缓存中当前具有最大擦写次数的目标数据块中缓存的数据与所述缓存 中除该具有最大擦写次数之外的其它目标数据块中、 在当前的切换循环中其内数据进行过 最少次数的交换、 并且与在当前的切换循环的上一个切换周期中与该当前具有最大擦写次 数的目标数据块进行交换的目标数据块不同的任一个目标数据块中缓存的数据相交换, 并 且相应地更换所对应的所述底层存储介质中的数据块所映射到的目标数据块 ; 其中, 所述 一个切换循环包含 N 乘以 (N-1) 个切换周期, 在所述一个切换循环中, 所述缓存的各目标数 据块在不同的 N-1 个切换周期内为所述缓存中具有最大擦写次数的目标数据块。
本发明实施例还提供了一种缓存系统, 该存储系统包括 : 底层存储介质 ; 闪存介 质, 耦合至所述底层存储介质, 用于作为所述底层存储介质的缓存, 其中所述底层存储介质 中的一个或多个数据块只映射到所述缓存中的一个目标数据块 ; 处理器, 被配置成 : 监控 所述缓存中各目标数据块的擦写次数 ; 当所述缓存中具有最大擦写次数的目标数据块与具 有最小擦写次数的目标数据块之间的擦写次数之差达到预先设定的擦写阈值时, 更换所述 底层存储介质中的至少一个数据块所映射到的所述缓存中的目标数据块, 所更换的所述缓 存中的目标数据块包括当前所述缓存中具有最大擦写次数的目标数据块 ; 以及继续监控所 述缓存中的各目标数据块在进行所述更换后所产生的擦写次数。
其中, 缓存系统中所述处理器还可以进一步被配置成 : 将所述具有最大擦写次数 的目标数据块与具有最小擦写次数的目标数据块之间缓存的数据进行交换, 并相应地将所 述底层存储介质中当前映射至所述具有最大擦写次数的目标数据块的所有数据块更换为 映射至所述具有最小擦写次数的目标数据块, 而将所述底层存储介质中当前映射至所述具有最小擦写次数的目标数据块的所有数据块更换为映射至所述具有最大擦写次数的目标 数据块。
本领域技术人员应当理解, 可以利用软件、 硬件或者软硬件结合的方式来实现装 置 1500 中处理器的功能。
本发明实施例还提供机器可读存储介质, 其存储有机器可执行指令, 当该机器可 执行指令被执行时使得机器实施以预定的时间周期更换底层存储介质中至少一个数据块 所映射到所述底层存储介质的缓存中的目标数据块, 其中, 所述底层存储介质中一个或多 个数据块只映射到所述缓存中的一个目标数据块, 所述底层存储介质的缓存包括闪存介 质, 所更换的所述缓存中的目标数据块包括当前所述缓存中具有最大擦写次数的目标数据 块。
其中, 该方法还可以包括以下步骤 : 在一个切换循环的每一个切换周期内, 更换所 述底层存储介质中的至少一个数据块所映射到的所述缓存中的目标数据块, 以使得在一个 切换循环后, 所述缓存中的各目标数据块的擦写次数相接近, 其中, 一个切换循环所包括的 切换周期的数目不小于所述缓存所包含的目标数据块的数目 N。
其中, 该方法还可以包括以下步骤 : 在一个切换循环的每一个切换周期内, 更换所 述底层存储介质中的每一个数据块所映射到的所述缓存中的目标数据块, 使得所述底层存 储介质中的每一个数据块在一个切换循环的不同切换周期内映射到所述缓存中的不同目 标数据块 ; 其中, 一个切换循环包括的切换周期的数目等于所述缓存所包含的目标数据块 的数目 N。
其中, 上面所描述的发送步骤还可以进一步包括以下步骤 : 在一个切换循环的每 一个切换周期内, 按照所述缓存中目标数据块的编号顺序, 以轮转的方式将所述缓存中每 一目标数据块的数据分别迁移至编号与其相邻的目标数据块中, 并根据目标数据块中数据 的迁移, 相应地更换所述底层存储介质中每一个数据块所映射到的目标数据块。
其中, 上面所描述的检测步骤还可以进一步包括以下步骤 : 在一个切换循环的每 一个切换周期内, 将所述缓存中当前具有最大擦写次数的目标数据块中缓存的数据与所述 缓存中除该具有最大擦写次数之外的其它目标数据块中、 在当前的切换循环中其内数据进 行过最少次数的交换、 并且与在当前的切换循环的上一个切换周期中与该当前具有最大擦 写次数的目标数据块进行交换的目标数据块不同的任一个目标数据块中缓存的数据相交 换, 并且相应地更换所对应的所述底层存储介质中的数据块所映射到的目标数据块 ; 其中, 所述一个切换循环包含 N 乘以 (N-1) 个切换周期, 在一个切换循环中所述缓存中的各目标 数据块在不同的 N-1 个切换周期内为所述缓存中具有最大擦写次数的目标数据块。
本发明实施例还提供机器可读存储介质, 其存储有机器可执行指令, 其中, 当该机 器可执行指令被执行时使得机器实施监控底层存储介质的缓存中各目标数据块的擦写次 数, 其中, 所述底层存储介质中一个或多个数据块只映射到所述缓存中的一个目标数据块, 所述底层存储介质的缓存包括闪存介质 ; 当所述缓存中具有最大擦写次数的目标数据块与 具有最小擦写次数的目标数据块之间的擦写次数之差达到预先设定的擦写阈值时, 更换所 述底层存储介质中的至少一个数据块所映射到的所述缓存中的目标数据块, 所更换的所述 缓存中的目标数据块包括当前所述缓存中具有最大擦写次数的目标数据块 ; 以及继续监控 所述缓存中的各目标数据块在进行所述更换后所产生的擦写次数。其中, 该方法还可以包括以下步骤 : 将所述具有最大擦写次数的目标数据块与具 有最小擦写次数的目标数据块之间缓存的数据进行交换, 并相应地将所述底层存储介质中 当前映射至所述具有最大擦写次数的目标数据块的所有数据块更换为映射至所述具有最 小擦写次数的目标数据块, 而将所述底层存储介质中当前映射至所述具有最小擦写次数的 目标数据块的所有数据块更换为映射至所述具有最大擦写次数的目标数据块。
本领域技术人员应当理解, 本发明的各个实施例所公开的方法和装置, 可以在不 偏离发明实质的情况下做出各种变形和改变, 这些变形和改变都应当落入在本发明的保护 范围之内。因此, 本发明的保护范围由所附的权利要求书来定义。