现代计算机中缓存的实现有很多不同点,比较重要的点有:
- 缓存大小 (cache size)
- 缓存行大小 (cache line size)
- 缓存集大小 (set size)
- 是否写分配 (write-allocate)
- 替换策略 (replacement policy)
- 虚拟寻址还是物理寻址 (look-up by virtual or physical address)
- 缓存行标记方法,是虚拟地质,物理地质,还是其他信息 (how the lines are tagged, by virtual or physical address or other information)
- 直写还是回写 (write-through or write back)
前5点会影响缓存的性能,并且操作系统在维护缓存一致性时基本不考虑(缓存集大小除外)这些因素。有时操作系统必须将缓存集大小考虑在内(见3.2.2, 4.2.2,4.2.6)。后3点,6-8,也会影响缓存性能,同时他们也会影响操作系统的设计。操作系统需要根据这些因素制定明确的缓存策略,也就是决定在什么时候如何清空缓存,以便运行其上的应用程序可以完全不用考虑缓存的存在。
下面的章节介绍了4类缓存架构并描述了操作系统应该在什么条件下清空缓存。讲到的缓存架构中,他们的不同之处包括虚拟寻址还是物理寻址,以及各类中是直写还是回写。
摘要自:Unix Systems for Modern Architectures – Symmetric Multiprocessing and Caching for Kernel Programmers by Curt Schimmel: Chapter 2.12 “How Cache Architecture Differ”