cache地址映射-3

cache地址映射-3_第1张图片

1.全相联映射方式
cache地址映射-3_第2张图片

①主存中的任意一块都可以映射到缓存的任意一块。假如拿一个主存的地址给你,那么(1)拿主存地址的字块标记部分与cache所有行的标记同时放到比较器中进行比较;假如命中,那么到该行取数据,(2)否则就老老实实拿着刚才给你的主存地址到主存中去寻找内容。(ps:①因为cache的命中率很高,且cache速度相对主存来说极快,所以上面这样策略可以极大提高效率;②根据书上的求命中率的公式,感觉该段话中(1)(2)是同时进行的,哈哈,如果不钻的话,按照我上面说的去理解就行了)
②缓存容量:额,通过主存地址好像求不出来吧。

主存容量 = 主存存储单元个数 * 存储字长 = 2^m * 2^b *存储字长

2.直接映射方式
cache地址映射-3_第3张图片

①假如给你一个主存地址,首先用c位表示的主存字块行号找到对应的cache行号,(因为每个主存块j只能和一个缓存块相对应,对应的cache行号 i = j mod (2^c) ),然后用地址中主存字块标记部分与cache 对应行的标记进行比较。假如命中,那么到该行取数据,否则就老老实实拿着刚才给你的主存地址到主存中去寻找内容。

②缓存容量 = 缓存存储单元个数 * 存储字长 = 2^c * 2^b * 存储字长

主存容量 = 主存存储单元个数 * 存储字长 = 2^m *2^b *存储字长 = 2^t *2^c *2^b *存储字长

3.组相联映射方式
cache地址映射-3_第4张图片

①假如给你一个主存地址,首先用主存地址中的主存字块标记找到与之对应的cache组,然后用该主存字块标记与对应cache组中所有的字块的标记进行比较;假如命中,那么到该组的命中行取数据,否则就老老实实拿着刚才给你的主存地址到主存中去寻找内容。

②缓存容量 = 缓存存储单元个数 * 存储字长 = 2^q * 每组字块数 * 2^b * 存储字长

主存容量 = 主存存储单元个数 * 存储字长 = 2^m * 2^b *存储字长 = 2^s * 2^q * 2^b *存储字长

你可能感兴趣的:(计算机组成)