假设主存容量为512KB;cache容量为1KB;每个块大小为16字节。存储器按字节寻址
- 计算主存的块数和cache的块数
- 主存块数 = 主存容量 / 块大小 = 512KB / 16B = 32K块
- cache块数 = cache容量 / 块大小 = 1KB / 16B = 64块
- 设计cache的存储结构
- 由于每个块大小为16字节,可以使用4路组相联的方式实现cache
- 每路16块,总共64块
- 每个块包含:16字节数据 + 2位标志位 + 4位标记位
- 计算主存地址和cache地址的对应关系
- 主存地址 = 块号 * 块大小 + 偏移量
- cache地址 = 组号 * 每组块数 * 块大小 + 块内偏移量
- 实现cache中的读写操作
- 读操作:
- 检查cache中是否有目标块
- 如果有,直接返回cache中的数据
- 如果没有,从主存中读取目标块,并将其存储到cache中对应的组的空闲块中,同时更新标志位和标记位
- 写操作:
- 检查cache中是否有目标块
- 如果有,直接在cache中修改数据
- 如果没有,从主存中读取目标块,并将其存储到cache中对应的组的空闲块中,同时更新标志位和标记位,然后再在cache中修改数据
- 实现cache中的替换策略
- 当cache中所有块都已满时,需要使用替换策略
- 采用LRU(最近最少使用)策略,将最久未使用的块替换出
原文地址: https://www.cveoy.top/t/topic/e99G 著作权归作者所有。请勿转载和采集!