在 CPU 需要读写指令和数据时,送出的是指令和数据的主存地址,为了从 Cache 存储器中读写信息,必须采用某种方法把主存地址转换为 Cache 存储器的地址,称为地址映象。
地址映射方式有全相联映象方式、直接映象方式,组相联映象方式和段相联映象四种。
(1) 全相联映象方式: 将主存中的一个块直接拷贝到 Cache 中任意一块上, Cache 的数据块大小与主存的数据块存储的数据量大小相等。
优点:主存的块调入 Cache 中的位置不受限制,所以冲突率最低,空间利用率高
缺点:无法从主存地址中直接获得 Cache 的块号,地址变换复杂,速度较慢。
——————————————————————
(2) 直接映象方式: 是一个主存块只能直接拷贝到 Cache 的一个固定的位置上去,
优点:地址变换很简单,访问速度快,硬件简单。
缺点:不同区的相同块号不能同时放进 Cache,即便 Cache 内有空闲块,所以冲突率最大。出现大量空闲块,很少使用
——————————————————————
(3)组相联方式: 是前两种方式的折衷,是将主存中的区和 Cache 中的块再分成组。主存的每个区和 Cache 的大小一样,将主存中每个区和 Cache 中再分为同样组数。这里规定主存中的组和缓存中的组采取直接映像方式,即主存中任何区的 0 组只能放存放到 Cache 中的 0 组, 1 组只能存放到 Cache 中 1 组,而每个组内的块采取全相连映像方式。即主存一组内的块可任意存到 Cache 相应组号内的任意块中。既具备了直接映像方式的简单和速度快的优点,同时也很好的降低了冲突率。即冲突率比直接映像方式低,但比全相联映象方式高。
优点:
块的冲突概率比较低
块的利用率大幅度提高
块失效率明显降低
缺点:实现难度和造价要比直接映象方式高
——————————————————————
(4)段相联映象
组间全相联,组内直接映象。
减少相联目录表的容量,降低成本,提高地址变换速度
————————————————————————