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



这是一个基于直接映射缓存的问题,所以我假设在这里也可以问。

这是我正在研究的问题:
问题: "高速工作站具有64位字和64位地址,地址分辨率为字节级。假设直接映射的缓存有8192个64字节行,下面每个缓存的地址字段中有多少位?1)字节2)索引3)标签?"

首先,我定义了这个问题中的术语,并使用了其他堆栈溢出直接映射缓存问题和我关于缓存的其他问题作为参考(请纠正我,如果我的任何定义是错误的)

  • 64位字-处理器可以一次处理64位
  • 64位地址w字节级寻址- RAM中有2^64个内存位置,每个内存位置存储一个字节。
  • 缓存是高速的,并且被划分为缓存线
  • 直接映射缓存是指RAM内存块被映射到一条缓存线上(不确定这个
  • 的意义)。

现在将直接映射缓存作为参考

  1. Byte -因为一个字节行是由64个字节组成的,你需要6位来识别该字节行中的单个字节
  2. 索引-因为有8192行字节行,你至少需要10位来识别每一行

现在这里是我卡住的部分。另一个帖子说"所有其他的位都是TAG位",而这个讲座帖子说"每行都有一个标签,表示这行被复制的地址"。我猜M是指内存。

所以这里,所有其他的位都是64 - 6 - 10 = 48位。但是,您难道不需要TAG中的所有64位来指示缓存中的数据来自RAM中的哪个内存位置吗?有人能解释一下我的困惑吗?

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

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

  • Byte -一个字节行有64个字节。一个字有64位或8字节长。因此,一个字节行可以容纳8个字。因为您需要确定要处理哪个字(处理器一次处理一个字),因此您将需要3位来处理这个
  • Index -您需要确定该地址所指向的缓存行。感谢@Leeor的评论,你将需要13位来做到这一点,因为有8192个缓存行
  • 标签-其余的位用于标签。即64 - 3 - 13 = 48位

最新更新