本节书摘来自异步社区《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》一书中的第2章,第2.5节,作者:【美】Curt Schimmel著,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.5 n路组相联高速缓存
组内的行数并没有理论上的限制;在当今的计算机中,4路乃至更多路的组相联高速缓存也并非鲜见。例如,Motorola 68040和88200、Intel 80486和i860 XP以及TI SuperSPARC的数据高速缓存都是4路组相联高速缓存。因为在组内并没有索引机制,所以也不要求组的大小一定是2的幂。在这一点上的案例就是TI SuperSPARC的指令高速缓存,它是5路组相联高速缓存。
用于这些高速缓存的散列算法和双路组相联高速缓存所采用的散列算法是相同系列的:使用取模散列函数(modulo hashing function),该函数采用的位数等于组数以2为底的对数值。
每组两行以上的高速缓存往往并不使用严格的LRU替换,因为这样做需要的状态信息太多。常常代之以使用历史信息有限的伪LRU算法。除了68040之外,所有提到过的处理器都采用了这种技术。68040的设计人员选择省略了伪LRU算法所需的额外状态信息,而是采用了一种伪随机替换(pseudorandom replacement)策略。