Caching 如何在缓存块的标记字段中查找位数

Caching 如何在缓存块的标记字段中查找位数,caching,computer-science,Caching,Computer Science,我在课堂上有这个问题 主存有2048个字节。总缓存大小为64个字节,其中共有8个块。每个缓存块的标记字段有多少位 我该如何着手解决这个问题?我已经查看了所有的堆栈溢出,我能找到的所有答案都涉及到使用我没有的信息,或者使用课堂上从未教过的方法,比如使用对数 计算每个地址的大小(以m位为单位)。如果主内存有2048个字节,那么我们有2048=2^m个唯一地址。这可以计算为log2(2048)=每个地址11位。(2^11=2048) 根据块中的字节数计算位偏移量n。64字节/8块=每个块8字节。2^

我在课堂上有这个问题

主存有2048个字节。总缓存大小为64个字节,其中共有8个块。每个缓存块的标记字段有多少位

我该如何着手解决这个问题?我已经查看了所有的堆栈溢出,我能找到的所有答案都涉及到使用我没有的信息,或者使用课堂上从未教过的方法,比如使用对数

  • 计算每个地址的大小(以m位为单位)。如果主内存有2048个字节,那么我们有2048=2^m个唯一地址。这可以计算为log2(2048)=每个地址11位。(2^11=2048)

  • 根据块中的字节数计算位偏移量n。64字节/8块=每个块8字节。2^n=8,或log2(8)。因此n=3,块偏移量为3位

  • 计算集合索引s。因为我们没有被告知其他情况,所以假设这是一个直接映射的缓存。这意味着我们有8套,每套1块。2^s=8,或log2(8)=3。所以s=3

  • 最后,我们知道标签位的数量是T=m-s-n。因此,当m=11,s=3,n=3时,T=11-6=5

  • 总共有5个标记位。

    除非你能在头脑中计算出2^m=2048,否则你必须使用对数。我试着用两种方式显示每个计算结果,这样你就可以看到发生了什么。当计算log2(2048)时,这与2^m=2048相同

    如果我的假设是我们在同一个班级,请查看CSAPP手册中的6.4