直接映射缓存的地址字段中有多少位?
How many bits are in the address field for a directly mapped cache?
这是一个基于 Direct Mapped Cache 的问题,所以我假设也可以在这里提问。
这是我正在处理的问题:
问题:“一个高速工作站有 64 位字和 64 位地址,地址解析在字节级别。假设直接映射缓存有 8192 个 64 字节行,有多少位在缓存的以下每个地址字段?1)字节 2)索引 3)标记?
首先我定义了这个问题中的术语,并使用了另一个Stack Overflow Direct Mapped Cache问题和我在上的另一个问题作为参考(如果我的定义有任何错误请指正)
- 64 位字 - 处理器一次可以处理 64 位
- 64 位地址 w 字节级寻址 - RAM 中有 2^64 个内存位置,每个内存位置存储一个字节。
- Cache 是高速并且被划分成高速缓存行
- Directly Mapped Cache是RAM内存块映射到一个缓存行的地方(不确定这个
的意义
正在处理 Direct Mapped Cache 作为参考
- 字节 - 因为字节行由 64 个字节组成,所以您需要 6 位来标识该字节行中的单个字节
- Index-因为有8192"rows"字节行,所以至少需要10位来标识每一行
现在是我卡住的部分。另一个 post said "All the other bits are TAG bits." while this lecture post 说 "Each line has a tag that indicates the address in M from which the line has been copied"。我猜 M 是 RAM 的意思。
所以在这里,所有其他位都是 64 - 6 - 10 = 48 位。但是,您不需要 TAG 中的所有 64 位来指示缓存中的数据来自 RAM 中的哪个内存位置吗?有人可以澄清我在这里的困惑吗?
看完这个 Caching Video,我明白了。 (强烈推荐这个视频)
如有不妥请指正
地址总共有64位。现在针对不同组件的缓存地址
- Byte - 一个字节行有 64 个字节。一个字有 64 位或 8 个字节长。因此一个字节行可以容纳 8 个字。因为您需要确定要处理的单词(处理器一次处理一个单词),所以您将需要 3 位
- 索引 - 您需要确定该地址指向哪个缓存行。感谢@Leeor 的评论,你将需要 13 位来执行此操作,因为有 8192 个缓存行
- 标签 - 其余位用于标签。即 64 - 3 - 13 = 48 位
这是一个基于 Direct Mapped Cache 的问题,所以我假设也可以在这里提问。
这是我正在处理的问题:
问题:“一个高速工作站有 64 位字和 64 位地址,地址解析在字节级别。假设直接映射缓存有 8192 个 64 字节行,有多少位在缓存的以下每个地址字段?1)字节 2)索引 3)标记?
首先我定义了这个问题中的术语,并使用了另一个Stack Overflow Direct Mapped Cache问题和我在
- 64 位字 - 处理器一次可以处理 64 位
- 64 位地址 w 字节级寻址 - RAM 中有 2^64 个内存位置,每个内存位置存储一个字节。
- Cache 是高速并且被划分成高速缓存行
- Directly Mapped Cache是RAM内存块映射到一个缓存行的地方(不确定这个 的意义
正在处理 Direct Mapped Cache 作为参考
- 字节 - 因为字节行由 64 个字节组成,所以您需要 6 位来标识该字节行中的单个字节
- Index-因为有8192"rows"字节行,所以至少需要10位来标识每一行
现在是我卡住的部分。另一个 post said "All the other bits are TAG bits." while this lecture post 说 "Each line has a tag that indicates the address in M from which the line has been copied"。我猜 M 是 RAM 的意思。
所以在这里,所有其他位都是 64 - 6 - 10 = 48 位。但是,您不需要 TAG 中的所有 64 位来指示缓存中的数据来自 RAM 中的哪个内存位置吗?有人可以澄清我在这里的困惑吗?
看完这个 Caching Video,我明白了。 (强烈推荐这个视频)
如有不妥请指正
地址总共有64位。现在针对不同组件的缓存地址
- Byte - 一个字节行有 64 个字节。一个字有 64 位或 8 个字节长。因此一个字节行可以容纳 8 个字。因为您需要确定要处理的单词(处理器一次处理一个单词),所以您将需要 3 位
- 索引 - 您需要确定该地址指向哪个缓存行。感谢@Leeor 的评论,你将需要 13 位来执行此操作,因为有 8192 个缓存行
- 标签 - 其余位用于标签。即 64 - 3 - 13 = 48 位