Caching 缓存理论

Caching 缓存理论,caching,theory,Caching,Theory,是否有统一的缓存理论? 也就是说,用于构造缓存和/或优化缓存的定理和算法的集合 这个问题是故意的宽泛,因为我所寻找的结果也是宽泛的。 最大可实现加速比的公式,缓存算法的指标,诸如此类的东西。 大学水平的教科书可能是理想的。如果你可以假设缓存命中要比缓存未命中快得多,你会发现,即使你只有缓存未命中,使用缓存仍然比不使用缓存快得多 请参见下面的数学公式: Number of hits = NumRequests - #CacheMisses AverageTime = ((NumRequests-

是否有统一的缓存理论? 也就是说,用于构造缓存和/或优化缓存的定理和算法的集合

这个问题是故意的宽泛,因为我所寻找的结果也是宽泛的。 最大可实现加速比的公式,缓存算法的指标,诸如此类的东西。
大学水平的教科书可能是理想的。

如果你可以假设缓存命中要比缓存未命中快得多,你会发现,即使你只有缓存未命中,使用缓存仍然比不使用缓存快得多

请参见下面的数学公式:

Number of hits = NumRequests - #CacheMisses

AverageTime = ((NumRequests-#CacheMisses) * TimePerHit + #CacheMisses * TimePerMiss)/NumRequests
如果我们假设NumRequests是无穷大(这是一个极限问题,不要害怕微积分),我们可以看到:

AverageTime = Infinity*TimePerHit/Infinity - #CacheMisses*TimePerHit/Infinity + #CacheMisses*TimePerMiss/Infinity
带有#CacheMisses的两个项都变为零,但整个方程解析为:

AverageTime = TimePerHit

当然,这适用于请求数量无限的情况,但您可以看到,这将通过使用缓存轻松提高系统的速度。

现实世界中的绝大多数缓存都涉及利用“80-20规则”或。请参见下文了解其外观

这在应用程序中表现为:

  • 运行时的大部分时间都花在同一段代码中(使CPU上的代码缓存有效)
  • 通常,当访问变量时,很快就会再次访问它(使CPU上的数据缓存有效)
  • 当浏览器查找一次网站的主机名时,它将在不久的将来非常频繁地访问它(使DNS缓存有效)
因此,我想说的是“缓存理论”只是使用了一些额外的资源,这些资源通常“罕见”但“快速”,以补偿您将要做的最活跃的重复的事情


你这样做的原因是试图根据上面高度倾斜的图表来“平衡”你做“慢”操作的次数。

我和学校的一位教授谈过,他向我指出, 这似乎是我正在寻找的主题

缓存算法和页面替换算法之间存在大量重叠。我可能会编辑这些主题的维基百科页面,以澄清它们之间的联系
你对这门学科有了更多的了解。

你的计算看起来很好。不幸的是,这意味着假设缓存未命中的数量是恒定的,这似乎不太可能。正确的数字应该是:命中概率*TimePerHit+(1-命中概率)*timepermissis我知道数学有点不确定;这是我在去年秋天参加的一门课上必须学习的一个证明,我只是试着从那里回忆起来。但是,说到你的观点,因为我有CacheHits和cachemiss,这是一个比率,所以这不是和使用命中概率相同吗?不完全一样。假设存在恒定的非零缓存未命中概率,如果执行无限次试验,将有无限多个未命中。如果缓存足够大,可以容纳所有请求的数据,那么您的公式是正确的。那么,失误的数量有一个恒定的上限。是的,我同意福格的观点。我基本上是说,使用缓存给系统带来的开销可以忽略不计。随着请求数量不断增加,开销基本上为零。