组相联是直接映象和全相联的一种折衷 组相联=直接映象+全相联 主存块号 块号 Cache 第0组 234567 }第1组 01234567891 第2组 }第3組组 12 13 15
组相联是直接映象和全相联的一种折衷
◆组的选择常采用位选择算法 若主存第块映象到第k组,则 k=imod(G)(为 Cache的组数) 设G=29,则当表示为二进制数时,k实际 上就是的低g位: 主存块地址: k位 ◆上述的j和k通常称为索引
◆ 上述的j 和k 通常称为索引 ◆ 组的选择常采用位选择算法 若主存第i 块映象到第k 组,则: k=i mod(G) (G为Cache的组数) 设G=2 g,则当表示为二进制数时,k 实际 上就是i 的低 g 位: g 位 主存块地址 i: k
◆n路组相联:每组中有m个块(n=M/G) n称为相联度。 相联度越高, Cache空间的利用率就越高, 块冲突概率就越低,失效率也就越低 (路数) G(组数) 全相联 / 直接映象 1 / 组相联 1<n<W 1<G<M 相联度一定是越大越好? ◆绝大多数计算机的 Cache:n≤4
相联度一定是越大越好? ◆ 绝大多数计算机的Cache: n ≤4 ◆ n 路组相联:每组中有n 个块( n=M /G ) n 称为相联度。 相联度越高,Cache空间的利用率就越高, 块冲突概率就越低,失效率也就越低。 全相联 直接映象 组相联 n (路数) G (组数) M 1 M 1 1<n<M 1<G<M
522查找方法 1.如何确定 Cache中是否有所要访问的块? 若有的话如何确定其位置?
5.2.2 查找方法 1. 如何确定Cache中是否有所要访问的块? 若有的话如何确定其位置?
◆目录表的结构 Cache目录表的结构 目录表 (标识存储器) 数据存储器 共 有 项 共有Ⅲ块 Cache 目录表项:有效位标识tag 访存地址 tag Inde
◆ 目录表的结构