如何在给定字地址的缓存中找到标记位

Posted

技术标签:

【中文标题】如何在给定字地址的缓存中找到标记位【英文标题】:How to find tag bit in cache given word address 【发布时间】:2022-01-16 09:06:49 【问题描述】:

缓存对于提供高性能内存层次结构很重要 到处理器。下面是 32 位内存地址引用的列表, 以单词地址的形式给出。

3、180、43、2、191、88、190、14、181、44、186、253

对于这些引用中的每一个,确定二进制地址、标签、 和索引给定一个带有两个字块的直接映射缓存和一个 总大小为 8 个块。还要列出每个引用是命中还是 错过,假设缓存最初是空的。

答案是:

我理解是从32位内存地址值中找到tag、index、offset值并在缓存表中使用,但是我不太明白内存地址是作为一个word给出的.例如,单词地址 3 是否实际上意味着 0000 0000 0000 0000 0000 0000 0000 0011?给定一个字地址,怎么能被认为是下图中的 32 位地址呢?

【问题讨论】:

【参考方案1】:

对于字地址 3 (0000 0000 0000 0000 0000 0000 0000 0011),偏移量为 1,索引为 001,标记为 0000 0000 0000 0000 0000 0000 0000。

块中的 2 个字 = 1 位 用于偏移 (2^1)。 缓存中的 8 个块 = 3 位用于索引 (2^3)。 32 - 4 = 28 位标记。

【讨论】:

以上是关于如何在给定字地址的缓存中找到标记位的主要内容,如果未能解决你的问题,请参考以下文章

缓存的内存地址值包含哪些信息?

如何检查给定地址是 32 位还是 64 位?

如何在给定的数字集中找到位置的最主要位?

存储系统

高德地图怎么标点 怎样标点高德地图

Scintilla:如何在给定特定字符位置的情况下找到字节位置