1. cache 简介
1.1 为什么需要 cache
计算机发展过程中,cpu 的性能已经远大于 memory 的访问性能,因此存储的访问大大限制了 cpu 的工作速度。而 cpu 在工作中具有局部性(·时间局部性:最近访问的内容很可能在短期内被再次访问;·空间局部性:地址相邻的内容很可能在想近的时间被用到。)因此引入 cache 可以很大程度上提高 cpu 的工作效率。
cache 是微体系结构的概念,是内存的映像,cache 的内容是内存内容的子集。一定程度上,cache没有功能上的意义,其存在意义是为了性能,降低访存延迟;cache没有独立的编址空间,处理器访问cache和访问存储器使用相同的地址,但是访问寄存器不一样,寄存器有单独的编址空间。
理解为 -> 学生在很大的图书馆看书,每次拿的书大多数都是位置上差不多的书,看完一本再去拿另一本的方法,不如每次都将要拿的书和它附近的书一块都放到桌子上,这样更加节省时间。
学生->cpu、桌子->cache、图书馆->大而慢的存储空间
1.2 系统中的 cache
Cache 在计算机科学中有广泛的应用,主要用于提高计算机系统的性能和效率。下面是一些常见的应用场景:
-
CPU 缓存:CPU 内部有多级缓存(L1、L2、L3),用于存储最经常访问的数据和指令。通过将数据和指令缓存到高速缓存中,可以减少从主存中读取数据的次数,从而提高 CPU 的访问速度。
-
Web 缓存:Web 缓存是存储在 Web 服务器和客户端之间的中间层。当客户端请求访问一个网页时,Web 缓存可以将其存储在缓存服务器中。当下次有相同的请求时,缓存服务器可以直接返回缓存的网页,而不需要再次向原始服务器请求,从而减少网络传输时间和服务器负担。
-
数据库缓存:数据库缓存是将经常使用的数据存储在高速缓存中,以提高数据库的查询性能。当查询请求到达时,数据库可以首先检查缓存中是否存在相应的数据,如果存在,则直接返回缓存的数据,而不需要再次查询数据库。这样可以减少数据库的访问时间和负载。
-
编译器缓存:在编译过程中,编译器会将经常使用的中间代码或已编译的代码存储在缓存中,以便在后续的编译过程中重复使用。这样可以减少重复编译的时间和资源消耗。
-
文件系统缓存:操作系统会将经常访问的文件数据缓存到内存中,以提高文件的读取速度。当下次有相同的读取请求

本文详细介绍了计算机系统中cache的作用、工作原理,包括数据如何放置、查找、替换策略以及维护缓存一致性的方法,如总线监听一致性协议和MOESI协议。通过实例阐述了不同类型的缓存应用和它们如何提高系统性能。

8057

被折叠的 条评论
为什么被折叠?



