《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.7 n路组相联高速缓存的总结...

本节书摘来自异步社区《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》一书中的第2章,第2.7节,作者:【美】Curt Schimmel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.7 n路组相联高速缓存的总结

正如现在所看到的那样,从直接映射到全相联的所有高速缓存组织结构都遵循着相同的组成原则:每一种组织结构都有一种用于选择搜索行的算法,每一种组织结构都有一种替换算法,每一种组织结构都可以使用写直通或者写回策略,而主要的区别则在于每一组内行数的不同。在各种组成结构的一端是直接映射高速缓存,它每组只有一行。对于这种类型的高速缓存来说,以散列算法得到相同索引的所有地址必须在高速缓存中竞争一个可以保存它们的位置。直接映射高速缓存的替换策略相当简单,因为唯一的候选替换行就是散列算法索引的那一行。在各种组成结构的另一端是全相联高速缓存,它只有包括高速缓存内所有行的一个组。这种类型的高速缓存不需要散列计算,因为在每次查找操作期间都必须检查所有的行。在组比较大的高速缓存中使用LRU替换并不实用,这让随机替换成为常见的方法。

随着组的大小从单路组相联或直接映射高速缓存到全相联高速缓存逐渐增大,目标是减少多个地址散列到相同组时出现的高速缓存颠簸现象。增加组的大小可以使那些其地址产生相同索引的更多数据同时保存到高速缓存中。于是,增加组的大小有可能提高命中率和系统性能。组变大的缺点是增加了硬件成本和复杂性,因为必须并行比较被索引组内所有行的标记。实际情况是,除了最小的高速缓存之外,对所有的高速缓存来说,都要避免使用组太大的高速缓存。

你可能感兴趣的:(《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.7 n路组相联高速缓存的总结...)