了解了上面两种方式的原理以及优缺点,我们来看系统中经常使用的一个映射方式:组相联映射。这种方式是直接映射和相联映射方法的结合,它综合了直接映射结构简单和相联映射数据替换灵活的优点,利用这些优点改善了二者的不足。下面我们就来仔细分析一下组相联映射的具体映射方法。
  在组相联映射的结构中,将Cache分为m组,每组r’行,主存中共有s个数据块,每s/r’个数据块可以分别装入某一相同行号的m个Cache行中。这样说也许有点抽象,可以通过下面的例子来了解。这样,既避免了由于主存块映射固定Cache行引起的Cache命中率低的不足,又减少了标记位的长度降低了比较电路的复杂性。我们还可以发现,当m为1时,其实就是直接映射,当r’为1时,就是相联映射。换句话说,前两种方式都是组相联映射的特例。


     图5-6 两路组相联的Cache组织

  从前面的分析我们也可以看出,Cache分的组数不适合过多,否则并行比较带来很大麻烦。实际系统中一般采用两路组相联或者四路,基本不采用更多组的方法。