页面框架特定的缓存管理策略何时有用?

时间:2013-06-07 20:38:14

标签: linux-kernel paging cpu-cache

我正在阅读O'Reilly Linux内核书籍,在分页章节中指出的一点是,Pentium缓存允许操作系统将不同的缓存管理策略与每个页面帧相关联。所以我认为可能存在这样的情况:程序具有非常小的空间/时间局部性,并且存储器访问是随机/不频繁的,因此高速缓存命中的概率低于某种阈值。

我想知道这种机制今天是否真的在实践中使用?或者它是否更像是一个必要的功能,当缓存相当小而不像现在这样高效?对于嵌入式系统来说,只要系统调用是必要的,就可以看到它对于嵌入式系统很有用,我还缺少其他应用程序吗?

1 个答案:

答案 0 :(得分:1)

广泛使用多个缓存管理策略,无论是使用MTRR分配整个区域(固定/动态,如英特尔PRM中所述),MMIO区域,还是通过特殊指令(例如流加载/存储,非临时预取,等等..)。无论您是尝试将外部I / O设备映射到虚拟内存(并且不希望CPU缓存影响其一致性),或者您是否想要更好地定义一个写入区域,用例也会有很大差异。某些数据库的完整性管理,或者只是希望普通回写以最大化缓存层次结构容量和替换效率(这意味着性能)。 这些用法经常重叠(特别是在运行多个应用程序时),因此非常需要灵活性,正如您所说的那样 - 您不希望具有很少或没有空间/时间局部性的数据来​​摧毁您一直使用的其他行。

顺便说一句,在可预见的未来(使用任何已知技术),缓存永远不会变得足够大,因为增加它们需要您将它们远离核心定位并支付延迟。因此,缓存管理仍然是,并将持续很长一段时间,这是性能关键系统和应用程序最重要的事情之一