一种内容感知型计算机缓存管理系统及方法与流程

文档序号:16263140发布日期:2018-12-14 21:44阅读:179来源:国知局
一种内容感知型计算机缓存管理系统及方法与流程

本发明涉及计算机缓存系统优化的技术领域,具体涉及一种内容感知型计算机缓存管理系统及方法。

背景技术

缓存(cache)机制是利用数据访问的时间局部性和空间局部性来提高计算机整体性能的重要途径。在计算机中,缓存机制在硬件层(cpu与内存间的各级缓存、磁盘缓存)、系统层(文件系统的buffercache、块层的bcache)和应用层(应用系统内部缓存)中都大量使用。缓存作为速度差异设备的中间“桥梁”,对其数据的有效组织和管理将影响到各层设备的性能。例如,对文件系统cache的有效管理,将影响内存管理系统和文件系统的性能。

现代计算机系统设计中,存储系统的设计,特别是缓存的设计是一项重要的工作,而缓存设计的重点是如何对缓存内数据进行有效的组织和缓存替换算法的选择。最近最少使用算法(leastrecentlyusedalgorithm,lru)基于其实现简单、开销小和效果较好等优点,在过去的几十年里其在缓存替换算法中一直占据着首要地位。然而,传统的基于lru算法的缓存系统中,基于地址的映射无法感知缓存数据块内容,对地址不同但内容相同的数据块的缓存,导致缓存系统的空间浪费。

因此,为了有效利用缓存空间资源,提高缓存空间使用率和缓存命中率,需要一种内容感知型计算机缓存管理系统及方法,感知并删除缓存中内容相同的冗余数据块,提高缓存利用率,扩大缓存数据块映射数量,提升缓存系统命中率,减少下层存储设备的访问。



技术实现要素:

本发明的目的是为了解决现有技术中的上述缺陷,提供一种内容感知型计算机缓存管理系统及方法,感知缓存数据块内容,避免存储源地址相同但内容相同的数据块,提高缓存利用率和命中率,减少下层存储设备访问。

根据公开的实施例,本发明的第一方面公开了一种内容感知型计算机缓存管理系统,该缓存管理系统包括:元数据管理模块和数据块管理模块。其中元数据管理模块包括:源地址映射索引单元、源地址管理单元、指纹索引单元、唯一数据块缓存地址管理单元,上述各单元顺序连接,其中,

所述的源地址映射索引单元,负责请求到达缓存管理系统时,利用散列表映射,快速判断在源地址管理中是否存在请求源地址节点;

所述的源地址管理单元,通过双向链表把数据块源地址在缓存中按lru次序进行组织排列,其按访问次序记录了给定数量范围内的数据块源地址和指纹信息,当新的访问请求到达时按照lru算法规则对排列顺序进行调整;

所述的指纹索引单元,对去重后唯一数据块指纹进行索引,写请求数据块到达时候,将计算后的指纹散列至指纹索引单元中,判断当前写入数据块是否在缓存管理系统中已存储,若是,则只增加索引而不进行冗余存储;

所述的唯一数据块缓存地址管理单元,对所述的源地址管理单元中存储的数据块进行索引,通过lru算法按照数据块访问顺序对数据块进行组织记录,以方便进行缓存数据块剔除时,快速发现存在在缓存中适合剔除的数据。缓存数据块经过数据去重后源地址与数据块变为多对一的映射关系,唯一数据块缓存地址管理单元的lru队列,与源地址管理中的lru队列保持相对一致的关系。

所述的数据块管理模块,该模块负载数据块的统一存储。

进一步地,所述的源地址映射索引单元中数据组织形式如下:

以散列表的形式组织源地址到源地址管理链表的映射关系,上层读写请求到达缓存管理系统后,以o(1)的时间复杂度判断请求源地址是否存在于源地址管理链表中。

进一步地,所述的源地址管理单元中数据组织形式如下:

以双向链表的形式管理源地址节点,节点中存放源地址、源地址对应数据块指纹和指向前后源地址节点的指针信息,当请求源地址通过源地址映射索引映射至某一节点时,即源地址命中,根据lru算法,将命中源地址节点移动至链表首部mru位置,以维护链表的lru特性,当源地址未命中时,构建包含请求源地址信息的新的链表节点至链表首部lru位置。

进一步地,所述的指纹索引单元中数据组织形式如下:

以散列表的形式组织数据块指纹到唯一数据块缓存地址链表节点的映射关系,同时每个指纹节点记录当前指纹被多少源地址索引的计数信息,当请求源地址通过源地址映射索引映射在源地址管理链表中命中某一节点时,把源地址管理链表节点获取的数据块指纹信息,映射至指纹索引单元中,查找对应唯一数据块地址链表节点信息,并判断该链表节点是否存在。

根据公开的实施例,本发明的第二方面公开了一种内容感知型计算机缓存管理方法,所述的缓存管理方法包括:读请求步骤和写请求步骤,其中,

所述的读请求步骤过程如下:

s1、缓存管理系统收到上层系统请求读写请求,判断请求源地址在源地址映射索引单元中是否命中,若源地址命中,转至步骤s2,若源地址未命中,转至步骤s5;

s2、若源地址命中,将源地址管理链表节点中存储的指纹映射至指纹索引单元中,判断指纹是否命中;

s3、若指纹索引命中,通过指纹索引单元中节点获取请求数据块存储位置,若指纹索引不命中,从下层设备中将请求数据块读入缓存中;

s4、从下层存储设备中读取数据块时,需要判断当前缓存空间是否已满,若当前缓存管理系统已满,需要剔除数据块,具体执行如下:选取唯一数据块缓存地址管理单元中链表尾部节点,该节点指向最久未访问数据块,删除该节点和对应数据块,将指纹索引单元中指向该节点的指针置为空;

当向缓存系统写入新的非重复唯一数据块,且缓存系统存储数据块已达到存储上限时,需要执行数据块剔除操作。不同于常规缓存系统中,在源地址管理中基于源地址lru替换算法查找替换数据块。本发明提出的内容感知型缓存中,由于不同源地址的相同数据块只存储一份,因此源地址与数据块存在多对一的关系,并通过指纹索引连接关联。为减少计算,同时避免源地址管理链表中历史源地址的无效查找。本发明提出将唯一数据块缓存地址管理单元的链表与源地址管理链表保持lru相对统一的关系,当需要执行剔除数据块操作时,直接在唯一数据块源地址管理链表尾部获取数据块地址并执行数据块删除操作,然后更新元数据信息即可。

s5、若读请求到达缓存系统,请求源地址在源地址映射索引未命中,即缓存中未存储请求数据块,此时需要将数据块从下层存储设备中读入缓存,对数据块存储前,首先计算该数据块指纹,并映射至指纹索引单元中,若指纹命中且对应数据块存储在缓存中,则增加对应数据块指纹索引计数,同时在源地址管理链表首部增加新的节点,记录请求源地址和指纹信息,并将唯一数据块缓存地址管理单元的链表中指向与请求数据块内容相同数据块地址的节点移动至链表首部mru位置;

所述的读请求步骤过程如下:

r1、写请求到达缓存管理系统时,首先计算写入数据块指纹,然后判断当前写入数据块源地址是否已缓存;

r2、若源地址已缓存,判断指纹是否相同,相同则不需要进行写操作,将源地址管理单元的链表和唯一数据块缓存地址管理单元的链表中对应节点移动至链表首部mru位置;

r3、若当前写入数据块源地址已缓存,但新写入的数据块指纹与旧指纹不同或当前写入数据块源地址未缓存,则需要判断与当前写入的新数据块内容相同的数据块是否已在缓存中存储,若已存储,则减少久数据块的指纹索引,增加与当前写入的新数据块内容相同的数据块的指纹索引计数,并更新源地址管理链表和唯一数据块缓存地址管理单元的链表中节点信息;

r4、当请求写入数据块源地址在缓存中命中,但对应数据块为已被剔除的数据块,此时与请求从下层存储设备中读入数据块操作相同。

进一步地,所述的步骤s3中,若源地址命中,且指纹索引命中,但对应数据块已被剔除缓存,则从下层存储设备中读取数据块至缓存,若此时缓存已满,则剔除最近最久未访问的数据块及其元数据信息;数据块从下层存储设备读入后,在唯一数据块缓存地址管理单元的链表首部mru位置,创建新的节点,记录该数据块在数据块管理模块中的地址信息,在指纹索引单元映射恢复对唯一数据块缓存地址管理单元的链表中节点的索引。

进一步地,计算请求写入数据块指纹信息,并判断请求源地址在源地址管理链表中是否命中的执行算法如下:

将数据块指纹信息映射至指纹索引单元中,若对应指纹信息已存在且对应数据块在缓存中,则当前写入数据块为冗余数据块,增加指纹索引中对应指纹索引计数,并将源地址管理链表和唯一数据块缓存地址管理单元的链表中更新对应节点至链表首部mru位置,使新访问的源地址及其数据块在源地址管理链表和唯一数据块缓存地址管理单元的链表中保持相对同步关系;若对应指纹信息存在,但指纹对应数据块已替换出缓存,则需要将新的数据块写入缓存,并重新恢复元数据映射关系,并更新相关链表信息;若写入数据块时缓存已达到存储上限,需要执行数据块剔除操作。

进一步地,插入新数据块的执行算法如下:

新数据块写入缓存管理系统前,需要判源地址管理链表中节点数量是否已达到用户设定上限,若已达到,需要剔除最近最久未访问的源地址节点,即源地址管理链表尾部节点;然后,将节点内指纹信息映射至指纹索引中,减少对应指纹的索引计数;如果指纹索引单元计数减为零,则删除指纹索引单元中该指纹信息,唯一数据块缓存地址管理单元中对应节点信息和数据块管理模块中对应数据块。

进一步地,剔除数据块并更新元数据信息的执行算法如下:

新数据块写入缓存前,数据块管理模块存储的数据块已满,需要从唯一数据块缓存地址管理单元的链表中选取尾部节点,并删除该节点所指数据块;然后,从链表删除该尾部节点,保留指纹索引单元中该数据块的指纹信息,将指纹索引单元中指向唯一数据块缓存地址管理单元的链表尾部节点的指纹置为空。

本发明相对于现有技术具有如下的优点及效果:

(1)本发明改变传统基于lru替换算法的缓存管理机制,通过计算、存储和检索数据块指纹信息,在写入新的数据块时,判断与新数据块相同内容的数据块是否在缓存中已存在,若存在则不需要进行冗余存储,使缓存系统具有内容感知能力。

(2)本发明通过提示缓存系统的内容感知能力,提高缓存利用率,扩大缓存映射数据块数量,提高缓存命中率,减少下层存储设备访问。

(3)本发明通过保留替换出缓存系统数据块的指纹信息,在数据块再次请求时候,可以快速激活映射到该数据块的所有源地址信息,从而提高缓存读命中。

(4)本发明通过设定源地址上限阀值,通过lru算法,可及时地删除数据块已被替换出缓存系统,同时删除长期未访问的无效源地址信息,避免过多无效源地址信息浪费缓存空间。

附图说明

图1是本发明公开的一种内容感知型计算机缓存管理系统及方法的结构框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例

缓存机制是利用数据访问的时间局部性和空间局部性来提高计算机整体性能的重要途径。在计算机中,缓存机制在硬件层、系统层和应用层中都大量使用。本实施例提出的一种内容感知型计算机缓存管理系统及方法,可应用于各级缓存中。当数据块进入缓存系统时,计算数据块指纹感知与当前数据块内容相同的数据块是否已缓存,若已缓存,则只增加源地址映射关系,以避免缓冲中不同源地址但内容相同的数据块存储。提升缓存系统的映射数量,提高缓存命中率,减少下层存储设备的访问。

如图1所示,本实施例公开了一种内容感知型计算机缓存管理系统,该系统包括:元数据管理模块和数据块管理模块。其中元数据管理模块包括:源地址映射索引单元、源地址管理单元、指纹索引单元,唯一数据块缓存地址管理单元,上述各单元顺序连接,其中,

所述的源地址映射索引单元,负责请求到达缓存管理系统时,利用散列表映射,快速判断在源地址管理中是否存在请求源地址节点;

所述的源地址管理单元,通过双向链表把数据块源地址在缓存中按lru次序进行组织排列,其按访问次序记录了给定数量范围内的数据块源地址和指纹信息,当新的访问请求到达时按照lru算法规则对排列顺序进行调整;

所述的指纹索引单元,对去重后唯一数据块指纹进行索引,写请求数据块到达时候,将计算后的指纹散列至指纹索引单元中,判断当前写入数据块是否在缓存管理系统中已存储,若是,则只增加索引而不进行冗余存储;

所述的唯一数据块缓存地址管理单元,对所述的源地址管理单元中存储的数据块进行索引,通过lru算法按照数据块访问顺序对数据块进行组织记录,以方便进行缓存数据块剔除时,快速发现存在在缓存中适合剔除的数据。缓存数据块经过数据去重后源地址与数据块变为多对一的映射关系,唯一数据块缓存地址管理单元的lru队列,与源地址管理中的lru队列保持相对一致的关系。

所述的数据块管理模块,该模块负载数据块的统一存储。

在具体的实施方式中,所述的源地址映射索引单元,通过哈希表,记录源地址到源地址管理链表节点的映射关系,上层请求到达时,以o(1)的时间复杂度判断请求源地址是否存在于源地址管理链表中。

在具体的实施方式中,所述的源地址管理单元,由双向链表实现,以lru替换算法根据源地址请求访问时间对源地址节点进行组织,其中链表节点中记录了源地址和该源地址对应数据块指纹信息。

在具体的实施方式中,所述的指纹索引单元,通过哈希表,记录数据块指纹到唯一数据块缓存地址管理单元的链表节点信息。主要作用一方面是通过源地址管理单元、指纹索引单元和唯一数据块缓存地址管理单元构建源地址到指纹,再从指纹到数据块的映射关系,方便读请求时获取据数据块。另一方面,向缓存管理系统写入新的数据块时,通过指纹索引,判断当前写入数据块是否已存在于缓存中,使缓存管理系统具有内容感知能力,避免不同源地址但内容相同的数据块缓存。

在具体的实施方式中,所述的唯一数据块缓存地址管理单元,由双向链表实现,以lru替换算法数据块访问时间对数据块在缓存中的存储地址进行组织,该链表节点与源地址管理的链表节点保持相对统一的关系,该唯一数据块缓存地址管理单元的作用一方面是通过其读取数据块信息,另一方面在数据块剔除时,可直接从链表尾部发现要剔除数据块位子。

基于上述内容感知型计算机缓存管理系统的具体工作流程如下:

读请求步骤:

s1、缓存管理系统收到上层系统请求读写请求,判断请求源地址在源地址映射索引单元中是否命中,若源地址命中,转至步骤s2,若源地址未命中,转至步骤s5;

s2、若源地址命中,将源地址管理链表节点中存储的指纹映射至指纹索引单元中,判断指纹是否命中;

s3、若指纹索引命中,通过指纹索引单元中节点可获取请求数据块存储位置,若指纹索引不命中,从下层设备中将请求数据块读入缓存中;

s4、从下层存储设备中读取数据块时,需要判断当前缓存空间是否已满,

若当前缓存管理系统已满,需要剔除数据块,具体执行如下:选取唯一数据块缓存地址管理单元中链表尾部节点,该节点指向最久未访问数据块,删除该节点和对应数据块,将指纹索引单元中指向该节点的指针置为空;

所述的步骤s3中,若源地址命中,且指纹索引命中,但对应数据块已被剔除缓存。需要从下层存储设备中读取数据块至缓存,若此时缓存已满,需要剔除最近最久未访问的数据块及其元数据信息。数据块从下层存储设备读入后,在唯一数据块缓存地址管理单元的链表首部mru位置,创建新的节点,记录该数据块在数据块管理模块中的地址信息。在指纹索引单元映射恢复对唯一数据块缓存地址管理单元的链表中节点的索引。

s5、若读请求到达缓存系统,请求源地址在源地址映射索引未命中,即缓存中未存储请求数据块,此时需要将数据块从下层存储设备中读入缓存,对数据块存储前,首先计算该数据块指纹,并映射至指纹索引单元中,若指纹命中且对应数据块存储在缓存中,说明当前数据块为重复冗余数据块,不需要进行二次存储,仅增加对应数据块指纹索引计数即可。同时在源地址管理链表首部增加新的节点,记录请求源地址和指纹信息。并将唯一数据块缓存地址管理单元的链表中指向与请求数据块内容相同数据块地址的节点移动至链表首部mru位置。

写请求步骤:

r1、写请求到达缓存管理系统时,首先计算写入数据块指纹,然后判断当前写入数据块源地址是否已缓存。

r2、若源地址已缓存,判断指纹是否相同,相同则不需要进行写操作,将源地址管理单元的链表和唯一数据块缓存地址管理单元的链表中对应节点移动至链表首部mru位置即可。

r3、若当前写入数据块源地址已缓存,但新写入的数据块指纹与旧指纹不同或当前写入数据块源地址未缓存,则需要判断与当前写入的新数据块内容相同的数据块是否已在缓存中存储,若已存储,则减少久数据块的指纹索引,增加与当前写入的新数据块内容相同的数据块的指纹索引计数,并更新源地址管理链表和唯一数据块缓存地址管理单元的链表中节点信息。

r4、当请求写入数据块源地址在缓存中命中,但对应数据块为已被剔除的数据块,此时与请求从下层存储设备中读入数据块操作相同;

写操作写入新的数据块或增加新的源地址映射时,与读请求增加新的数据块和映射相同,都需要判断当前数据块空间和源地址映射是否已达到上限,若是需要执行剔除操作,则更新对应元数据信息。

通过上述步骤,本实施例公开的一种内容感知型计算机缓存管理方法,可有效的感知缓存数据块内容,避免源地址不同但内容相同的数据块的存储,从而提高缓存利用率,扩大缓存中数据块映射数量,提高缓存命中率,减少下层缓存设备访问,提高系统整体性能。

综上所述,该缓存系统改变了传统基于lru替换算法的缓存元数据组织,使缓存系统具有内容感知能力,有效删除了缓存中相同内容的冗余数据块,避免了源地址不同但内容相同的数据块的存储,提高了缓存利用率,扩大了缓存数据块映射数量,提高了缓存命中率,从而提高系统的整体性能。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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