缓存算法理论的最新发展水平是什么?


14

最近,我对以下问题感到最感兴趣:在存在不止一种类型的可用内存的情况下,优化内存使用的一般问题,并且在给定内存段的容量和访问它的速度之间要进行权衡。

熟悉的示例是一个程序,该程序决定何时处理器高速缓存,RAM和硬盘驱动器(通过虚拟内存)进行读取 / 写入

我对特殊情况特别感兴趣,在这种特殊情况下,需要加载的数据量(包括程序本身)大大超过了可用最快存储的容量(即,“仅加载所有内容”的简单解决方案不适用)。

我发现一个Wikipedia页面描述了一些常见的缓存算法,这几乎是我想要的。不幸的是,这些有点底层:

  • 仅当您具有多次访问的子例程时,许多(例如LRU或MRU)才有意义。如果我有一个包含大量子例程的程序,其中某些子例程在给定的运行中从未访问过,而其中一些子例程则被访问过一两次,则此策略将永远无法工作,因为它无法在任何内容上建立足够的数据是常用的,不是。
  • 其他的,例如CLOCK,似乎处理实现的特殊性,而不是真正地攻击问题的根源。
  • 我知道有一种策略,其中一个方法是在测试运行期间首先配置程序,然后为操作系统提供配置文件以进行相应的优化。但是,我们仍然必须解决在构建概要文件时提供真正具有代表性的“示例用法”的问题。

我真正想了解的是:当我们抽象出硬件和软件的所有技术,并在纯理论上讲时,是否有可能以某种方式分析算法的结构,从而制定出一种有效的缓存策略来解决以下问题:它基于对算法正在执行的高级理解?


您可能对“访问图”模型感兴趣。
Neal Young

Answers:


2

我不知道一种用于分析任意给定算法以总体上提出高速缓存策略的方法(这听起来很难),但这实际上是个案研究(最好是渐近地)通过分析它们的分而治之结构来确定大多数已知的高速缓存不考虑算法的案例基础。对于FFT,矩阵乘法,排序和其他一些算法,不使用高速缓存的算法是众所周知的。请参阅Wikipedia页面及其参考。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.