3) 组相联映射
  组相联映射是直接映射和相联映射方法的结合,它综合了直接映射结构简单和相联映射数据替换灵活的优点。在组相联映射的结构中,将Cache分为m组,每组r’行,主存中共有s个数据块,每s/r’个数据块可以分别装入某一相同行号的m个Cache行中。这样,既避免了由于主存块映射固定Cache行引起的Cache命中率低的不足,又减少了标记位的长度降低了比较电路的复杂性。
  图5-6 是一个两路组相联的Cache组织结构。按照每4字节为一Cache行,将64KB的Cache分为2组,每组8K行。16MB的主存储器仍然分成4M块。存储器地址也仍旧分为标记域、行域和字域。除字域仍用2位表示以外,由于Cache分为2路组,每组行数减半,因此行域减为13位,标记域增加到9位。主存中某个固定的数据块将对应组0、组1当中固定的Cache行。这就表示当需要访问主存中某一单元时,先用存储器13位行域在组0和组1中找到Cache行的行号,再将这2行的标记与存储器地址域中的地址相比较,如果找到相同的标记位(如图中组1),则再按照字域值找到相应字节。如果2行的标记和存储器地址域中的地址都不同,表示Cache不命中,则从主存储器中取出字节送往CPU,并将该字节所在的数据块装入行域指示的分别位于2组的Cache行中的一个。到底装入哪一组,要根据Cache组织所采用的替换算法。