遇到这个问题和解决方案说:"32位地址位,64字节线意味着我们有6位用于线中不在标签中的字地址,在高速缓存中的32,768字节64字节线是512条线,这意味着我们有12位地址用于高速缓存索引,写回意味着我们需要一个脏位,并且我们总是需要一个有效位。所以每条线都有64*8=512数据位,32-6- 12=14标记位,和2个标志位:数据/总位数=512/(512+14+2)=512/528。“
当我试图解决这个问题时,我总共得到了32kB/64byte=512行,即2^9=512。此外,64字节的缓存线大小为1 word=4字节,即64/4=16字/线,即2^4。据我所知,缓存中的总位数由缓存中的条目/线的总数给出*(标记地址+数据)->29^9*((32-9-4+2)+16*32)。因此,每个高速缓存线的数据位的量是512 (16字*32位/字),并且标签是32-9-4+2=21 (9是用于直接映射高速缓存的高速缓存索引,4是寻址每个字,2是有效位和脏位),答案应该是512/533,而不是512/528。
对,是这样?
发布于 2020-01-05 00:47:05
512行=9位,而不是他们声称的12位,所以你在这一点上是对的。
然而,他们是对的,64字节行为块偏移量提供了6位-尽管这是一个字节偏移量,而不是他们所说的字。
因此,32-6-9=17个标记位,然后加上2表示脏和有效。
仅供参考,上面的问题中没有任何指示从字节到字的转换。虽然每行将有16 x 32位字(即每行64字节)是真的,但这是不相关的:除非另有说明,否则我们应该假设32位地址是字节地址。)(对于字(而不是字节)可寻址的机器,以字节为单位说明高速缓存大小是不寻常的;32位机器也是可字寻址的-一些教学体系结构,如LC-3,是可字寻址的,然而,它们是16位的;其他字可寻址机器的大小很奇怪,比如12位、18位或36位字-尽管这些是日期之前的缓存!)
https://stackoverflow.com/questions/59589502
复制相似问题