Caching 直接映射缓存的地址字段中有多少位?

Caching 直接映射缓存的地址字段中有多少位?,caching,system,cpu,computer-architecture,cpu-cache,Caching,System,Cpu,Computer Architecture,Cpu Cache,这是一个基于的问题,所以我假设在这里也可以提问 以下是我正在解决的问题: 问题:“高速工作站有64位字和64位地址,地址分辨率为字节级。假设直接映射缓存有8192条64字节线,那么缓存的以下地址字段中各有多少位?1)字节2)索引3)标记?” 首先,我定义了此问题中的术语,并将另一个堆栈溢出直接映射缓存问题和上的另一个问题用作参考(如果我的任何定义错误,请更正) 64位字-处理器一次可以处理64位 64位地址和字节级寻址-RAM中有2^64个内存位置,每个内存位置存储一个字节。 是高速的,并且被

这是一个基于的问题,所以我假设在这里也可以提问

以下是我正在解决的问题:
问题:“高速工作站有64位字和64位地址,地址分辨率为字节级。假设直接映射缓存有8192条64字节线,那么缓存的以下地址字段中各有多少位?1)字节2)索引3)标记?”

首先,我定义了此问题中的术语,并将另一个堆栈溢出直接映射缓存问题和上的另一个问题用作参考(如果我的任何定义错误,请更正)

  • 64位字-处理器一次可以处理64位
  • 64位地址和字节级寻址-RAM中有2^64个内存位置,每个内存位置存储一个字节。
  • 是高速的,并且被划分为缓存线
  • 是将RAM内存块映射到一条缓存线的位置(不确定其重要性)
现在正在作为参考工作

  • 字节-因为字节行由64个字节组成,所以需要6位来标识该字节行中的单个字节
  • 索引-因为有8192行字节行,所以至少需要10位来标识每行
  • 这里是我被卡住的部分。另一个说“所有其他位都是标记位”。而这节课说“每行都有一个标记,表示从M中复制的行的地址”。我猜M表示RAM

    在这里,所有其他的位都是64-6-10=48位。但是你不需要标记中的所有64位来指示缓存中的数据来自RAM中的哪个内存位置吗?有人能澄清一下我这里的困惑吗?

    看了这段视频后,我就明白了。(强烈推荐这段视频)
    如果有任何错误,请纠正我

    该地址总共有64位。现在,对于缓存地址的不同组件

    • 字节-字节行中有64个字节。一个字的长度为64位或8字节。因此,一个字节行可以容纳8个字。因为您需要确定要处理的字(处理器一次处理一个字),所以需要3位
    • 索引-您需要标识地址所指的缓存线。由于@Leeor的注释,您需要13位才能完成此操作,因为有8192条缓存线
    • 标记-其余的位用于标记。即64-3-13=48位

    8192=2^13,而不是10。这两种描述都是相同的,因为完整的64位表示确切的地址,但不需要存储较低的6+13,您已经使用索引来决定要访问哪个集合,并且您将使用字节偏移量来决定要使用行的哪一部分,因此它是多余的。@Lee或者您可以查看我的答案吗?