直接映射的缓存示例

验证方式

我一直对主题Direct Mapped Cache感到困惑,我一直在寻找一个很好的解释示例,这让我比以往更加困惑。

例如:我有

  • 2048字节内存
  • 64字节大缓存
  • 具有直接映射缓存的8字节缓存行如何确定“ LINE”,“ TAG”和“ Byte offset”?


  • 我相信寻址位的总数是11位,因为2048 = 2 ^ 11

  • 2048/64 = 2 ^ 5 = 32个块(0到31)(需要5位)(标签)

  • 64/8 = 8 = 2 ^ 3 = 3位用于索引

  • 8个字节的缓存行= 2 ^ 3,这意味着我需要3位的字节偏移量

所以地址是这样的:5代表标签,3代表索引,3代表字节偏移

我能正确解决这个问题吗?

Hari Krishnan |

我能正确找到吗?

说明

1)主存储器大小为2048字节= 2 11因此,您需要11个位来寻址一个字节(如果您的字长为1个字节)[字=将通过该地址访问的最小单个单元]

2)您可以通过这样做来计算直接映射中的标记位(主要内存大小/现金大小)。但是我将解释更多有关标签位的信息。

在这里,现金行的大小(始终与主内存块的大小相同)为8个字节。2 3个字节。因此,您需要3位来代表Cashe行中的一个字节。现在您的地址中还有8位(11-3)。

现在存在于该高速缓存行的总数目为(cashe大小/行大小)= 2 6 /2 3 = 2 3

因此,您有3位代表所需字节所在的行。

现在剩余位数为5(8-3)。

这5位可用于表示标签。:)

3)3位用于索引。如果您尝试标记将一行表示为索引所需的位数。是的,你是对的。

4)3位将用于与高速缓存行一起访问字节。(8 = 2 3

所以,

11位的总地址长度= 5个标记位+ 3位代表一行+ 3位代表一个字节(字)

希望现在没有混乱。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Redis缓存与直接使用内存

来自分类Dev

BitmapFun示例存在缓存问题

来自分类Dev

具有16个单字块的直接映射缓存与具有8个二字块的直接映射缓存有何不同

来自分类Dev

Hibernate二级缓存示例

来自分类Dev

缓存友好代码示例

来自分类Dev

喷雾缓存的任何示例或教程

来自分类Dev

下面的示例如何清除缓存的不同对象的缓存

来自分类Dev

Clojure中的数组映射示例

来自分类Dev

Hystrix请求缓存的示例

来自分类Dev

如何直接映射/扩展对象以流式传输?

来自分类Dev

缓存大小和设置关联映射

来自分类Dev

同步内存LRU缓存映射

来自分类Dev

直接映射的缓存和完全关联的缓存之间的区别

来自分类Dev

缓存与 直接从Laravel中的数据库查询

来自分类Dev

未在Unicode代码点中映射的名称的示例

来自分类Dev

使用缓存。映射技术

来自分类Dev

MIPS阵列直接映射缓存

来自分类Dev

Laravel缓存标签的实际用法示例

来自分类Dev

直接提供者联合身份的GAE Python示例

来自分类Dev

直接映射指令高速缓存VS使用LRU替换的完全关联指令高速缓存

来自分类Dev

直接将ConfigurationSection映射到正确的类型

来自分类Dev

缓存大小和设置关联映射

来自分类Dev

直接映射的缓存如何工作

来自分类Dev

监视页面缓存/内存映射文件的访问

来自分类Dev

使用缓存。映射技术

来自分类Dev

Hibernate + Ehcache更新不会直接刷新缓存

来自分类Dev

缓存到内存的映射

来自分类Dev

如何计算完整关联映射缓存的标签?

来自分类Dev

nativescript 图像缓存模块无法按示例工作