“成本单位同样需要保持一致。缓存无关模型为块传输建立自己的递推,Work–Depth 模型分别建立总工作和关键路径递推;串行时间的解不会自动替代这些资源。精确指数算法中按参数下降量写出的 $T…”
形式陈述
理想缓存
它沿用外存模型的缓存
递归矩阵转置提供一种典型构造:代码不断把矩形切半,分析则寻找子问题能装入缓存的尺度,并计算该尺度以下的块复用。算法不读取缓存参数,复杂度证明仍明确使用它们。
直觉
缓存无关算法让递归在许多尺度上同时产生局部块。分析者事后针对任意实际
例子与边界
递归转置的状态演化
设输入是按行存储的
在满足 tall-cache 条件
相比之下,朴素逐列读取行主序矩阵时,相邻访问相隔一整行;矩阵足够大时,每次读取都可能落到已经被逐出的块。两种方法的 CPU 工作量同为
与显式分块的区别
Cache-aware 分块会根据
模型与硬件
全相联允许块放入任意缓存位置,最优替换则按整个访问序列选择最有利的淘汰策略;这是分析成本的模型假设。实际硬件的组相联会把块限制在特定组内,可能产生冲突缺失;实际缺失分类需要声明对照缓存和替换策略。TLB、预取、脏块写回、递归基础阈值和并行伪共享也会影响运行时间。理想缓存界刻画数据传输的结构,具体性能还取决于这些实现因素。
对满足相应正则条件的缓存无关算法,两级传输界可以推广到多级存储分析。每一级代入自己的容量和块大小,便可比较同一访问程序在不同层级的代价。
推论与应用
该模型允许用同一份递归布局或访问程序同时分析 L1、末级缓存和外存层级。缓存无关搜索树、van Emde Boas 布局与递归矩阵算法由此共享“代码无参数、界仍含参数”的接口,相应复杂度界使用各自证明中的容量、布局与替换假设。
参考资料
- Matteo Frigo, Charles E. Leiserson, Harald Prokop, and Sridhar Ramachandran, “Cache-Oblivious Algorithms”, ACM Transactions on Algorithms 8(1), 2012,§3 的矩阵转置与 §6 的多级模型分析;初版发表于 FOCS 1999。
- Harald Prokop, Cache-Oblivious Algorithms, MIT thesis, 1999.