文章
86
粉丝
39
获赞
1
访问
9.4k
1、数据区容量为32KB,主存块大小为64B,则块内偏移需要6位,
组数为32KB/64B/8 = 64组,则组号需要6位,因此tag需要32-12 = 20位
LRU进行替换时,只对组内Cache行进行置换,则LRU需要3位,由于采用直写策略,不需要修改位
2、起始地址0080 00C0H的块内偏移为0,组号是3,由于共有64组,每读取64B的数据,会miss,则共有1024 * 4B / 64B = 64个Cache块
来存储数组s的数据,而循环中每次都会对同一个位置访问两次,因此访问内存的次数为2048次,每个Cache块缺失一次
则缺失次数为64次
3、先找到0001 0003H地址的组号为0,根据组号在Cache中找到对应的组,将tag=00010H与组内的8个Cache行保存的tag进行比较,
找到匹配项,如果有匹配且有效位为1的Cache行,更新LRU位,根据块内偏移为3,返回对应数据。
如果没有匹配或者有效位为0,需要访问主存,如果此时组内还没有满,则直接读入Cache中,更新LRU位和有效位
如果已经满了,则需要进行置换,根据LRU算法选出一个行,进行置换
登录后发布评论
暂无评论,来抢沙发