cache结构
cache数据存取地址的组成:
- 字内偏移(一般为2位)(在老师讲的内容中似乎没有涉及到)
- 地址索引,长度为 l o g 2 ( c a c h e 中 的 块 数 ) log_2(cache中的块数) log2(cache中的块数),对于某个主存中的块地址,直接映射事它对应于cache的块号就是(块地址)mod(cache中的块数)
- 查块中字位置的字段,长度自然是 l o g 2 ( 每 块 中 字 的 个 数 ) log_2(每块中字的个数) log2(每块中字的个数),即为块内偏移
- 标记位:多个地址可能映射到同一个cache块中,所以需要标记位确定具体的地址
应当注意的是,cache的块数量可以计算得出,公式为:
块数量 = 数据长度/块大小/字大小
cache数据部分的结构:
- 1位有效位,确定cache是否被使用
- 地址标记,确定cache中的数据是否是需要的数据(因为索引命中不意味着cache一定命中)
- 数据部分
值得注意的是,之前的索引项蕴含在顺序排列的cache数据块中,cache的简单存取过程就是获取索引->判定有效位与标记位->决定存取数据
cache结构示意图:
例子:
可以看到,计算tag信息的时候,是对tag+块索引+行内偏移