直接映射的缓存示例

验证方式

我一直对主题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条评论
登录后参与评论

相关文章

来自分类Dev

MIPS阵列直接映射缓存

来自分类Dev

直接映射的缓存如何工作

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Hystrix请求缓存的示例

来自分类Dev

缓存友好代码示例

来自分类Dev

使用缓存。映射技术

来自分类Dev

使用缓存。映射技术

来自分类Dev

缓存到内存的映射

来自分类Dev

BitmapFun示例存在缓存问题

来自分类Dev

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

来自分类常见问题

Redis缓存与直接使用内存

来自分类Dev

Clojure中的数组映射示例

来自分类Dev

同步内存LRU缓存映射

来自分类Dev

Hibernate二级缓存示例

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

缓存大小和设置关联映射

来自分类Dev

缓存大小和设置关联映射

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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