1,一个采用直接映射方式的32KB缓存,假设块长为8个32位的字,且CPU访问缓存命中,
则主存地址为ABCDEFH的单元在缓存的第(H)块内。
转换:
ABCDEF(16)=1010 1011 1100 1101 1110 1111(2)
求出字块位数:
8个32位的字:(8*32bit)/(8bit/B)=32B;2的5次方等于32B。
寻址空间为2的5次方。块内地址占主存地址后面5位!
求出缓存块数:
32KB/32B=1k=2的10次方。缓存地址占块内地址前面10位!
开始分割:1010 1011 1100 1101 1110 1111【红色为缓存地址。蓝色为块内地址】
取出红色的部分:100 1101 111→0010 0110 1111【黑色为补上的0】
转换为16进制:26FH
2,一个四路组相连的缓存,容量为16KB,假设块长为4个32位的字,
则地址为FEDCBAH的主存单元映射到缓存的第()【10进制表示】组内。
与上面同样道理。(所以就不废话啦-)
FEDCBA(16)=1111 1110 1101 1100 1011 1010(2)
块内地址位数:(4*32bit)/(8bit/B)=16B;16等于2的4次方,块内地址4位;
但是,组相连需要提出n位地址放在主存地址里面用来选择组号!
4=2的2次方;提取出2位;
缓存块数:16KB/16B=1k;10-2=8;缓存地址占块内地址前面8位!
(1100 1011)(2)=(128+64+8+2+1=203)(10)
缓存地址:203;
OK!