一种基于固态硬盘的读缓存管理方法及装置的制造方法_3

文档序号:8258371阅读:来源:国知局
]S204、判断命中的数据块的状态是否为已存储状态,若为是,执行S205,若为否,执行 S206。
[0114]S205、从命中的数据块中返回数据。
[0115]S206、从下级存储介质中返回数据。
[0116]S207、根据缓存替换算法选择一个淘汰数据块。根据缓存替换算法从第一队列中选择一个淘汰数据块,缓存替换算法包括LRU、LIRS或ARC等,本发明不作限制。
[0117]S208、删除第二队列中读请求对应的命中数据块。
[0118]S209、将命中数据块插入第一队列中。
[0119]S210、判断淘汰数据块是否为已存储状态,若为是,执行S211,若为否,执行S212。
[0120]S211、淘汰数据块的身份标识是否在第三队列中,若为是,执行S212,若为否,执行S213o
[0121]S212、从第一队列中删除淘汰数据块,并从SSD中删除淘汰数据块。
[0122]S213、从第一队列中删除淘汰数据块,并将淘汰数据块插入到第二队列中。
[0123]S214、从下级缓存介质中确定读请求对应的目标数据块,将目标数据块插入第一队列中;其中,目标数据块为未存储状态。
[0124]S215、计算第二队列中的待处理数据块的空闲时间。
[0125]S216、当待处理数据块持续未访问的时间大于待处理数据块的空闲时间时,将待处理数据块从第二队列中删除。
[0126]S217、获取待处理数据块的身份标识,并将待处理数据块的身份标识插入到第三队列中。
[0127]S218、根据预设的选择策略选择第一队列中未存储状态的数据块,将该数据库写入SSD中,并设置为已存储状态。
[0128]具体的将所述首个未存储状态的数据块写入所述SSD中,并在写入操作完成后将该数据块设置为已存储状态;或者
[0129]确定所述第一队列中前K位的未存储状态的数据块;其中K为大于O的整数;
[0130]将所述K个数据块中访问量最大的数据块写入所述SSD,并在写入完成后将所述访问量最大的数据块分别设置为已存储状态。
[0131 ] 实施本发明的实施例,针对SSD擦写次数存在限制的缺点,与现有的缓存替换算法结合,将第一队列中淘汰出来的数据块插入到设置的第二队列中,并没有直接从SSD中直接删除,增加淘汰数据块在SSD中停留时间,从而提高SSD的读命中率,同时当SDD未命中时,将元数据写入第一队列中,又可以减少SDD写入量,延长了 SSD的使用寿命。
[0132]参见图3,为本发明实施例提供的一种基于SSD的读缓存管理方法的实例示意图,在本发明实施例中,在初始状态时,第一队列中包含数据块a、数据块b、数据块C、数据块d、数据块e、数据块f、数据块g和数据块h,其中,数据块a、数据块d和数据块g未已存储状态,数据块b、数据块C、数据块e、数据块f和数据块h为未存储状态;第二队列中包含数据块1、数据块j、数据块k和数据块1,缓存替换算法为LRU,缓存管理接收到读请求时,根据读请求的命中结果执行的处理过程如下:
[0133]读缓存管理装置首次接收到读请求,读请求命中第一队列中的数据块C,数据块c为未存储装置,读缓存管理装置根据数据块c中的元数据,查询到下级缓存介质中的数据块,根据读请求对查询到的数据块进行写操作。
[0134]读缓存管理装置再次接收到读请求,读请求命中第二队列中的数据块i,将数据块i从第二队列中删除,第一队列为满队列,读缓存管理装置根据LRU算法从第一队列中确定淘汰数据块,图中淘汰数据块为数据块h,数据块h为未存储装置,读缓存管理装置将数据块h直接从第一队列和SSD中删除,删除操作后,第一队列中有空闲位置,读缓存管理装置将数据块i插入到第一队列中。
[0135]读缓存管理装置第三次接收到读请求,读请求未命中第一队列和第二队列,读缓存管理装置根据LRU算法从第一队列中确定淘汰数据块,淘汰数据块为数据块g,读缓存管理装置将数据块g从第一队列中删除,并将数据块g插入到第二队列中,删除数据块g后,读缓存管理装置将读请求对应的目标数据块,目标数据块为数据块,将数据块m插入到第一队列中,数据块m为未缓存状态。
[0136]当第二队列中的数据块被淘汰时,读缓存管理装置根据缓存更新策略将数据块写入第一队列中,例如,将第一队列中首个未存储状态的数据块m写入到SSD中。
[0137]参见图4,为本发明实施例提供的一种基于SSD的读缓存管理装置的结构示意图,用于实现本发明实施例的基于SSD的读缓存管理方法,在本发明实施例中,所述装置包括:判断模块10、删除模块11、插入模块12和确定模块13。
[0138]判断模块10,用于接收读请求,并判断所述读请求是否命中所述第一队列和所述第二队列;
[0139]第一删除模块11,用于若二者均未命中,若二者均未命中,根据缓存替换算法选择并删除所述第一队列中的淘汰数据块;
[0140]第一插入模块12,用于若所述淘汰数据块为已存储状态,将所述淘汰数据块插入所述第二队列中;
[0141]确定模块13,用于从下级存储介质中确定所述读请求对应的目标数据块,将所述目标数据块插入所述第一队列中;其中,所述目标数据块为未存储状态。
[0142]实施本发明的实施例,针对SSD擦写次数存在限制的缺点,与现有的缓存替换算法结合,将第一队列中淘汰出来的数据块插入到设置的第二队列中,并没有直接从SSD中直接删除,增加淘汰数据块在SSD中停留时间,从而提高SSD的读命中率,同时当SDD未命中时,将元数据写入第一队列中,又可以减少SDD写入量,延长了 SSD的使用寿命。
[0143]进一步的,在本发明的一些实施例中,缓存管理装置还包括:第二删除模块14,用于若所述淘汰数据块为未存储状态,将所述淘汰数据块从第一队列中删除,并从所述SSD中删除。
[0144]可选的,在本发明的一些实施例中,读缓存管理装置还包括:第三删除模块15和第二插入模块16。
[0145]第二删除模块15,用于若所述读请求未命中所述第一队列但命中所述第二队列,删除所述第二队列中所述读请求对应的命中数据块。
[0146]第二插入模块16,用于将所述命中数据块插入所述第一队列中。
[0147]可选的,在本发明的一些实施例中,读缓存管理装置还包括:计算模块17、第三删除模块18和第三插入模块19。
[0148]计算模块17,用于计算所述所述第二队列中的待处理数据块的空闲时间;其中,所述待处理数据块为所述第二队列中的数据块的任意一个。
[0149]第三删除模块18,用于当所述待处理数据块持续未访问的时间大于所述待处理数据块的空闲时间时,将所述待处理数据块从所述第二队列中删除。
[0150]第三插入模块19,用于获取所述待处理数据块的身份标识,并将所述待处理数据块的身份标识插入到第三队列中。
[0151]可选的,在本发明的一些实施例中,计算模块17包括:统计单元171和计算单元172。
[0152]统计单元171,用于统计所述待处理数据块在所述第一队列中的命中次数M和所述第二队列中的命中次数N ;
[0153]计算单元172,用于根据所述命中次数M和所述命中次数N计算所述待处理数据块的空闲时间。
[0154]可选的,在本发明的一些实施例中,第一插入模块用于获取所述淘汰数据块的身份信息;
[0155]若所述淘汰数据块的身份信息不在所述第三队列中,将所述淘汰数据块插入所述第二队列中;
[0156]若所述淘汰数据块的身份信息在所述第三队列中,判断所述淘汰数据块的淘汰时长是否大于预设时间阈值,若为是,将所述淘汰数据块插入所述第二队列中。
[0157]可选的,在本发明的一些实施例中,读缓存管理装置还包括:写入模块20。
[0158]写入模块19,用于搜索所述第一队列中首个未存储状态的数据块;
[0159]将所述首个未存储状态的数据块写入所述SSD中,并在写入操作完成后将该数据块设置为已存储状态;或者
[0160]确定所述第一队列中前K位的未存储状态的数据块;其中K为大于O的整数;
[0161]将所述K个数据块中访问量最大的数据块写入所述SSD,并在写入完成后将所述访问量最大的数据块设置为已存储状态。
[0162]本发明实施例和方法实施例一基于同一构思,其带来的技术效果也相同,具体过程请参照方法实施例一的描述,此处不再赘述。
[0163]参见图5,为本发明实施例提供的一种基于SSD的读缓存管理装置的另一结构示意图,用于实现本发明实施例的基于SSD的读缓存管理方法,读缓存管理装置I包括包括处理器61、存储器62和通信接口 63,读缓存管理装置I中的处理器61的数量可以是一个或多个,图5以一个处理器为例。本发明的一些实施例中,处理器61、存储器62和通信接口63可通过总线或其他方式连接,图5中以总线连接为例。
[0164]其中,存储器62中存储一组程序代码,且处理器61用于调用存储器62中存储的程序代码,用于执行以下操作:
[0165]接收读请求,并判断所述读请求是否命中所述第一队列和所述第二队列;
[0166]若二者均未命中,根据缓存替换算法选择并删除所述第一队列中的淘汰数据块;
[0167]若所述淘汰数据块为已存储状态,将所述淘汰数据块插入所述第二队列中;
[0168]从下级存储介质中确定所述读请求对应的目标数据块,将所述目标数据块插入所述第一队列中;其中,所述目标数据块为未存储状态。
[0169]进一步的,在本发明的一些实施例中,处理器61还用于执行:
[0170]若所述淘汰数据块为未存储状态,将所述淘汰数据块从第一队列中删除,并从所述SSD中删除。
[
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1