高速缓存器的无效数据区的利记博彩app

文档序号:9547126阅读:487来源:国知局
高速缓存器的无效数据区的利记博彩app
【技术领域】
[0001]本公开涉及用于缓存的系统及方法,尤其是提供高速缓存器的用于处理无效数据的区域。
【背景技术】
[0002]当向诸如闪存或硬盘驱动器的底层存储器读或写数据时,高速缓存器通常可以用于快速存取。一旦从主机接收写操作,高速缓存器可以更新已存储的数据块以跟踪数据块是否已经被更改(即,数据块是有效的还是无效的)。有时,高速缓存器可以经由写操作向高速缓存器中的另一个条目写入新数据,并且延迟回收或删除旧的缓存条目。这是因为在高速缓存器等待底层存储器更新的同时,回收或删除旧的缓存条目会导致执行速度下降。利用这样的延迟,高速缓存器可以完成处理写操作并尽快向主机交回控制权。

【发明内容】

[0003]本公开的实施例涉及利用无效数据区的高速缓存器、方法和系统。
[0004]在一个实施例中,本公开涉及高速缓存器。高速缓存器可以包括日志和无效数据区。日志可以被配置为跟踪存储在高速缓存器中的数据块。无效数据区可以被配置为跟踪与日志中所跟踪的数据块相关的无效数据块,其中无效数据区在与日志分离的高速缓存器的区域。
[0005]在一个实施例中,本公开涉及一种无效高速缓存器中的块的方法。该方法可以包括确定跟踪与接收的写操作相关的存储地址的日志块,其中日志块存储在高速缓存器的日志中。该方法还可以包括基于已确定的日志块并进一步基于无效记录确定已映射的日志块,其中已映射的日志块和无效记录存储在高速缓存器的无效数据区。该方法还包括确定写操作是否未完成(outstanding)。如果写操作未完成,则该方法可以包括汇总未完成的写操作并基于已汇总的写操作执行单一的写操作。如果写操作已完成,则该方法可以包括执行接收的写操作。
[0006]在一个实施例中,本公开涉及一种恢复高速缓存器的方法。该方法可以包括基于高速缓存器的日志确定高速缓存器的初始重构。对于高速缓存器的无效数据区中的无效记录中每个已映射的日志块,该方法可以包括基于已映射的日志块确定日志中跟踪的相应的数据块是否是有效的。如果相应的数据块被确定为无效,该方法可以包括从高速缓存器的初始重构(initialreconstruct1n)中回收相应的数据块。
[0007]这里所描述的实施例可以包括其他方面。例如,日志可以被配置为跟踪数据块的元数据,其中元数据可以包括对应于数据块的存储地址,并且无效数据区可以被配置为跟踪与无效数据块相关的元数据,其中相关的元数据可以包括对应于无效数据块的存储地址。日志可以被配置为利用日志块跟踪数据块,其中日志块(journal block)可以被配置为存储数据块的元数据,并且无效数据区可以被配置为利用无效记录和已映射的日志块跟踪与无效数据块相关的元数据,其中已映射的日志块可以被配置为存储无效数据块的相关元数据,并且其中无效记录可以被配置为存储已映射的日志块。日志中跟踪的元数据可以进一步包括存储在每个日志块中的元数据的集合的索引,并且无效数据区中跟踪的元数据可以进一步包括每个已映射的日志块中存储的元数据的集合的索引。高速缓存器可以被配置为基于与日志块相关的相应的日志块编号确定与无效数据区中的无效记录相关的无效记录编号。高速缓存器可以被配置为基于与日志块相关的相应的日志块编号确定与无效区中的已映射的日志块相关的已映射的日志块编号。可以选择日志中跟踪的索引以具有与无效数据区中跟踪的索引相同的值。与日志中跟踪的存储地址相比较,无效数据区中跟踪的存储地址可以被截短,并且可以基于正在被缓存的底层存储器设备的存储尺寸或基于根据底层存储器设备中的块的存储地址确定的偏移量来确定所述截短。确定已映射的日志块可以包括通过确定无效记录编号来确定已映射的日志块的已映射的日志块编号,无效记录编号通过用与已确定的日志块相关的日志块编号除以无效数据区中无效记录的量并计算相除的结果的上限函数(ceiling funct1n)来确定,其中无效记录编号识别无效记录,以及通过利用无效记录的量计算日志块编号的模操作来确定已映射的日志块编号。确定写操作是否未完成可以包括从对应于无效记录的in-RAM数据结构检索字段。汇总未完成的写操作可以包括对随后的写操作排序,识别在相同数据块上操作的写操作,以及基于在相同数据块上操作的写操作确定单一的写操作。无效数据区可以是与日志分离的高速缓存器的区域。高速缓存器可以是内容局部性高速缓存器(content locality cache),并且日志可以跟踪内容局部性高速缓存器中的相关数据块和独立数据块中的至少一个。确定初始重构可以包括恢复数据块和描述数据块的元数据,其中从日志恢复被恢复的数据块和元数据。确定日志中跟踪的相应的数据块是否有效可以包括比较描述日志中跟踪的相应的数据块的元数据和描述已映射的日志块中跟踪的相应的数据块的元数据。比较元数据可以包括比较日志中跟踪的相应的数据块的第一存储地址及第一索引与已映射的日志块中跟踪的第二存储地址及第二索引。
【附图说明】
[0008]参考结合附图的下面的详细描述,可以更全面地了解本公开的多种目的、特征和优点,附图中相同的数字标示类似的元素。附图仅用于示例的目的,不意在限制本发明,本发明的范围由所附的权利要求限定。
[0009]图1示出了根据本公开的一些实施例的包括高速缓存器的示例性系统。
[0010]图2A-2B示出了根据本公开的一些实施例的高速缓存器的示例性方块图。
[0011]图3A-3B示出了根据本公开的一些实施例的日志与无效数据区之间的示例映射。
[0012]图4示出了根据跟公开的一些实施例的利用无效数据区的无效的示例方法。
[0013]图5示出了根据本公开的一些实施例的用于高速缓存器恢复的示例方法。
【具体实施方式】
[0014]本公开涉及利用高速缓存器的无效数据区的方法和系统。在一些实施例中,高速缓存器可以包括日志区和无效数据区。日志区可以是基于记录的日志以在需要高速缓存器恢复的情形下频繁跟踪缓存更新和缓存操作。无效数据区可以存储正被从高速缓存器删除或回收的用于缓存块的无效记录。无效数据区通常可以跟踪关于已无效的被高速缓存的数据块的信息,例如当缓存被暂停或者被中断时。无效数据区可以伴随日志区并占用高速缓存器的单独区域。此外,无效数据区的一些实施例可以存储元数据的子集,该子集对应于通常存储在日志中的元数据的整个集合。
[0015]图1示出了根据本公开的一些实施例的包括高速缓存器104的示例性系统100。系统100包括主机102、高速缓存器104和存储器106a-106c。主机102向高速缓存器104发送读取和写入请求。高速缓存器104处理该请求以从底层存储器106a-106c读取数据以及向底层存储器106a-106c写入数据。例如,为处理读取请求,高速缓存器104可以确定对应于所请求的存储地址的数据是否存储在高速缓存器中。如果所请求的存储地址被缓存,该情形有时可以被称为“读取命中”。如果所请求的存储地址未被缓存,该情形可以被称为“读取未命中”。一旦读取命中,高速缓存器104可以直接从高速缓存器104更快地返回所请求的数据。相反,一旦“读取未命中”,高速缓存器104可以从较低速的存储器106a-106c读取所请求的数据。
[0016]相似地,为处理写入请求,高速缓存器104可以确定所请求的存储地址是否已经存储在高速缓存器中。如果所请求的存储地址被缓存,该情形有时可以被称为“写入命中”。如果所请求的存储地址未被缓存,该情形可以被称为“写入未命中”。
[0017]图2A示出了根据本公开的一些实施例的高速缓存器104的示例性方块图。在一些实施例中,高速缓存器104可以包括超级块202、参考数据区204、日志206、无效数据区208和热启动区210。日志206可以包括日志块212。日志块212可以包括元数据214和数据 216。
[0018]高速缓存器104可以利用基于日志的方法提供持续性(persistence),从而如果存在需要时,高速缓存器104可以被恢复。日志206的一些实施例可以被细分为日志块212。例如,日志块212可以具有大约256kB的尺寸。根据高速缓存器104的整个尺寸,也可以使用其他尺寸。如果日志块212具有大约256kB的尺寸,则元数据214可以达到4kB的尺寸并且数据216可以使用大约252kB。同前述,根据日志206和高速缓存器104的需要,也可以使用其他尺寸。
[0019]数据216可以包括与日志206中跟踪的缓存块相关的内容。元数据214的示例可以包括存储地址(例如,逻辑块地址(LBA))、缓存块类型、偏移量和错误校验的哈希值。缓存块类型的示例可以包括跟踪缓存块是独立块还是关联块。独立块和/或关联块可以与内容局部性高速缓存器(content locality cache) 一起使用。在一些实施例中,高速缓存器104可以基于缓存块(内容局部)的内容的相似性来缓存。关联块可以跟踪基线参考块之间的变化或增量(deltas)。该内容局部性高速缓存器还可以确定缓存块最近最后如何被使用(时间局部)或者利用相似的存储地址(空间局部)识别缓存块。独立块可以是基于时间局部和/或空间局部而非内容局部被高速缓存器的块。偏移量可以识别存储器块内感兴趣的具体存储器块或感兴趣的具体存储器位置。例如,偏移量可以与数据216的指针相似,该指针指示感兴趣的具体数据。
[0020]因为元数据214和数据216可以组合为单一的日志块212,日志写入可以以组块或批进行,并且数据和元数据写入可以组合为单一的写操作。因此,单一日志块212中的元数据214和数据216的存储比将元数据214和数据216分别写入不同位置可以减少大约50%的写操作。
[0021]在一些实施例中,日志206可以是循环日志。也就是说,高速缓存器104通常可以连续向日志206写入,并且一旦达到日志206的尾部,下一次写操作可以回到起始点以开始下一次循环。对应于写入命中已缓存的数据的元数据和
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1