维护M个LRU队列.
请求在Cache中命中时,根据请求被访问的次数计算出它应该处于的LRU队列中(例如,当计算函数为Log2(accesscount),当请求被访问2^i时,该请求则被放于第i条LRU队列中).
CacheMiss时,从第一条非空的LRU队列中替换出一个块并将其置于Qout队列中.Qout队列用于记录从缓存中替换出去的请求且只记录块的地址指针和访问次数.
每个缓存中的块有一个有效时间,每次处理请求时,检查各个队列中的第一个块的有效时间,如果超出,则将该块降至前一级LRU链中并重置块有效时间.
伪代码如下:

* YuanyuanZhou and James F. Philbin, The Multi-Queue Replacement Algorithm for SecondLevel Buffer Cache, Proceedings of the 2001 USENIX Annual TechnicalConference

本文详细介绍了如何维护多个LRU队列,包括请求命中时的计算逻辑、CacheMiss时的替换策略以及块有效时间的检查与调整。通过伪代码展示了实现过程。
9468

被折叠的 条评论
为什么被折叠?



