缓存与实时系统 WCET
更新时间:2026-10-01。通用计算爱缓存,但实时系统最关心最坏值,缓存恰恰让最坏情况难以证明。
本文要回答的问题
- 抢占如何通过缓存制造额外延迟?
- 怎样让缓存行为对 WCET 可分析?
一、不确定性来源
任务被抢占后,恢复时缓存可能已被其它任务替换,需要重新加载,形成缓存相关抢占延迟 CRPD;抢占点不同、替换内容不同,最坏值变化大。平均命中率对可调度性证明毫无用处。
二、可分析手段
- 静态 must/may 分析界定一定命中/可能缺失的行。
- cache locking:把关键代码/数据锁在缓存。
- 缓存分区:任务独占切片,消除相互 evict。
- 实时核常采用简单、路数小、策略确定的缓存。
三、常见坑
- 用平均性能做实时可调度性判断。
- 忽略抢占导致的重灌。
- 使用不可分析的复杂替换/哈希缓存。
小结
缓存引入抢占重灌等不确定性,实时系统靠静态分析、锁定与分区把行为变确定,复杂缓存对认证反而是负担。下一篇 缓存与虚拟化/虚拟机。
总结
缓存改善的是平均性能,却让最坏执行时间(WCET)难以证明:任务被抢占后恢复时,缓存可能已被其他任务替换、必须重新加载,形成随抢占点变化的缓存相关抢占延迟 CRPD,所以平均命中率对可调度性证明毫无价值;实时系统要用静态 must/may 分析、cache locking 和缓存分区把行为锁定为确定值,并刻意采用简单、路数小、策略可分析的缓存。实时领域里"可证明的慢"优于"平均的快"——难以分析的复杂缓存本身就是认证负担。