1. 高速缓存简介
由于处理器的访问速度和内存的访问速度差距越来越大,使得极端及整体系统的性能受到了巨大的影响。高速缓存,也就是Cache位于CPU和主存之间。相比于主存,它的容量要小的多,但是速度也快很多。它的存取速度能与中央处理器相匹配。
根据程序局部性原理,正在使用的主存储器某一单元邻近的那些单元将被用到的可能性很大。因而,当中央处理器存取主存储器某一单元时,计算机硬件就自动地将包括该单元在内的那一组单元内容调入高速缓冲存储器,中央处理器即将存取的主存储器单元很可能就在刚刚调入到高速缓冲存储器的那一组单元内。于是,中央处理器就可以直接对高速缓冲存储器进行存取。在整个处理过程中,如果中央处理器绝大多数存取主存储器的操作能为存取高速缓冲存储器所代替,计算机系统处理速度就能显著提高。
2. 高速缓存的映射方式
根据组的高速缓存行数,高速缓存分为直接映射、全相连映射、组相连映射。
2.1直接映射
使用直接映射缓存,高速缓存中只有一个地方可以存储RAM中的给定数据块。
这意味着CPU只需要查看高速缓存中的一个位置,就可以查看它正在寻找的数据或指令是否存在,如果存在,就会很快找到。直接映射缓存的缺点是,它严重限制了可以存储在高速缓存中的数据或指令,因此缓存命中的次数很少。
2.2全相连映射
也称为完全关联映射,这与直接映射相反。使用关联映射方案,RAM中的任何数据块或指令都可以放在任何高速缓存块中。这意味着CPU必须搜索整个高速缓存,以查看它是否包含要查找的内容,但是缓存命中的几率要高得多。
2.3组相联映射
这两种映射类型之间的折衷是组相联映射(set-associative mapping),它可以将一个RAM块映射到有限数量的不同高速缓存块。
2路相联映射系统允许将RAM块放在高速缓存中两个位置中的一个,相比之下,8路相联映射系统允许将RAM块放在8个高速缓存块中的任意一个。
2路系统的搜索时间是直接映射系统的两倍,因为CPU必须在两个位置而不是一个位置进行搜索,但是缓存命中的几率要大得多。