组相连映射求租号
某计算机的cache采用四路组相联映射,已知cache容量为4kb,主存容量为1mb,每个字块32?
我把b当做Byte来算。4kb/32b=128个cacheline。共4组cacheset。组地址2位,组内块号7位。其实这问题本身就有问题,cache的访问是通过Tag和index,blockoffset来得到。
什么是是组相联映射?概括性一点的?
组相联映射是直接映射和相联映射方法的结合,它综合了直接映射结构简单和相联映射数据替换灵活的优点。在组相联映射的结构中,将Cache分为m组,每组r’行,主存中共有s个数据块,每s/r’个数据块可以分别装入某一相同行号的m个Cache行中。这样,既避免了由于主存块映射固定Cache行引起的Cache命中率低的不足,又减少了标记位的长度降低了比较电路的复杂性。
某cache有64行,采用4路组相联映射方式,主存有4K个块,每块128个字。则,主存地址多少位?
cache有64行,所以cache有64块则2^c=64,c=6由四路组相联得2^r=4,r=2组地址q=c-r=4每块128字,2^b=128,字块内地址b=7主存容量4K*128=2^19字主存字块标记为19-q-b=8
Cache组相联映射到底应该怎么算法?
我先确认你的题目细节:block = 1B,就是1个字节。(主存交换大小)cache4行,因为是二路组关联,所以每行2个block。因此cache一共4*2B = 8字节。cache一共2个字,这种题目没法做的,因为你是字编址!!所谓我认为你的题目是有问题的!下面假设交换大小是1W来做!!!!!!(或者字节编址)4行,索引号需要2位;表示为00,01,10,11访问:0: 就是00,所以存放在第00行,缺失4:就是100,也存放在00行,和0一行,缺失,但是lru标记在08:就是1000,存放在00行(看最后2位),因为lru标记,所以把0地址内容冲掉,lru在42:就是10,存放在10行,缺失0:存放在00行,吧4冲掉,lru标记在8,缺失6:110 ,存放在10行,缺失8:1000,命中,lru标记在06:110,命中4:100,缺失,吧0冲掉,lru在88:1000,命中,lru到4
有一主存/Cache层次的存储器,其主要容量1Mb?
如果按字节编址,内存地址 1MB=2^20B,有20位,可分为1MB/16B=2^16块Cache总容量为64KB,可分为64KB/16B=2^12块(行)Cache的行长就是数据块大小16B=2^4B,所以块内地址有4位采用二路组相联映射,2^12行变为2^11(组)* 2(列),有2^11组,则组号字段有11位标志段Tag位数=20-11-4=5位即 标志段+组号段+块内地址段=5+11+4在主存的 10161H/16B=1016H=6+1*16+1*16^3=4118块10161H=0001 0000 0001 0110 0001B,对应上面的字段位数,可知组号为 000 0001 0110=2+4+16=22组,所以被映射到Cache的22组或者用 4118 mod 2^11 = 22组
主存与Cache间组相联映射计算?
32位按字编址(四字节),2GB/4B=512M=2^29,那么主存地址29位。cache:256KB/(4*16B)=4k=2^12 组地址为12位块内地址:16=2^4 ,块内地址4位主存标记=29-12-4=13 位4567H=0100 0101 0110 0111后四位是块内地址 前12位是组地址映射到Cache为 0100 0101 0110= 456H 组