Cache映射

Cache映射方式

Cache的数据块叫行,主存的数据块叫块,他们是等长的

  • 直接映射(directmapping):将一个主存块存储到唯一的cache行
  • 全相联映射(fullyassociative mapping):可以将一个主存块存储到任意一个cache行
  • 组相联映射(setassociative mapping):可以将一个主存块存储到唯一的一个cache组中任意一行

1.直接映射

多对一的映射关系,一个主存块只能拷贝到cache的一个特定行上去。

cache的行号i和主存的块号j有如下函数关系:i=j mod 2^c

优点:硬件简单,容易实现

缺点:命中率低, cache的存储空间利用率低

用c位字块地址找到cache对应的行,在比较器中,将主存字块号与此行的标记做比较。若命中,读取字块内地址对应的内容

2.全相联映射

主存的一个块直接拷贝到cache中的任意一块上

优点:命中率较高,cache的存储空间利用率高

缺点:线路复杂,成本高,速度低

在全相联映射方式中,在比较器中比较主存字块标记和cache行标记。若块号命中,读取字块内地址对应的内容

3.组相联映射

组相联映射和全相联映射的折中

将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的,即有如下函数关系:组号:q=j mod u

组间采用直接映射,组内为全相联

硬件较简单,速度较快,命中率较高

用q位组地址找到cache的相应组,然后将主存字块标记和cache组内所有标记进行比较,如果找到了就命中