例如,一个主存字块可以与CACHE中的2、4、8个单元建立对应关系,此时被分别称为2、4、8路组相联。它的实现原理简述如下:
首先,把CACHE存储器组织为同等容量的多体结构,例如变为2、4、8个体,若CACHE的总容量不变,则每个体的存储单元数变为原来单体容量的若干分之一,每个CACHE体的一个单元就可以和一个主存字(字块)的内容相对应,对应关系与直接映像类似,仍把主存划分成容量等于每个CACHE体的存储单元数的多个"区段",
相应的把主存地址也划分为访问主存的"区段"( 区段号)和区段内一个字块(区段内偏移)这样两个部分,而在CACHE的标志字段仅保存主存地址的区段号。在进行主存读写时,就可以用完整的主存地址访问主存一个存储单元,并使用主存地址的区段内偏移这一字段为地址访问每个CACHE体的一个单元,此时只需用主存地址的区段号的值同时与每个CACHE体的选中的一个单元的标志字段的内容比较,若与其中任何一个标志字段的内容相同且相应有效位的值为1,则表明存储于这一CACHE体中的这一数据字段的内容即为被读数据,即此次访问CACHE命中;都不同,则表明相应主存单元内容尚未读入CACHE,是不命中。这一方案与直接映像方案的区别表现在哪里呢?主要表现在,每一个主存字块可以从多个(例如2、4、8个,而不再是一个)体中选择其一完成写入CACHE的操作,有了更大程度的选择余地,有利于提高CACHE的命中率。当用主存地址的区段号与CACHE中的标志字段比较时,只与每个体的确定的一个存储单元的标志字段相比较,线路上实现也不会太复杂,确保这一方案简便易行。这一方案与全相联映像方案的类同之处又表现在哪里呢?主要表现在,在把一个主存字写进CACHE时,它可以在CACHE的多个(例如2、4、8)体中进行选择,就是说,一个主存字可以与多个(而不再是CACHE体中的全部字)CACHE单元(由多个CACHE存储体提供)建立随意的对应关系,故这是有限度地随意对应,其目的是尽量简化完成与CACHE中标志字段相比较的线路。当用主存地址的区段号与CACHE中的标志字段比较时,只与每个体的确定的一个存储单元(而不再是全部单元)的标志字段相比较,线路上实现也不会太复杂,确保这一方案简便易行。多路组相联映像是性能最好的一种CACHE组织方式。这一方案如图4.19所示。

图4.19 二路组相联映像方式
|
|