如何计算不同缓存的标签,索引和偏移量位数?


20

特别:

1)具有4096个块/行的直接映射缓存,其中每个块具有8个32位字。假设一个32位地址,那么标记和索引字段需要多少位?

2)与1)相同的问题,但需要完全关联的缓存吗?

如果我错了,请纠正我,是吗?

标签位=地址位长度-索引指数-偏移指数?

[由于2 ^ 3 = 8,偏移量= 3还是2 ^ 5 = 32是5?


关于标签,索引和一些解释偏移cs.stackexchange.com/questions/33818/...
冉G.

Answers:


20

所陈述的问题不是很容易回答。一个已被定义为32位。我们需要知道系统是“字节可寻址”(您可以访问8位数据块)还是“字可寻址”(最小可访问块是32位),甚至是“半字可寻址”(您可以访问的最小数据块是16位。)您需要知道这一点,才能知道地址的最低位告诉您什么。

然后,您将自下而上地工作。假设系统是字节可寻址的。

然后,每个高速缓存包含8个字*(4个字节/字)= 32 = 2 5个字节,因此偏移量为5位。

直接映射的缓存的索引是缓存中的块数(在这种情况下为12位,因为2 12 = 4096。)

如前所述,标签就是剩下的所有位。

随着高速缓存变得更具关联性,但保持相同的大小,索引位和标记位将减少。


是的,它是字节可寻址的,但是我看过的问题并没有具体说明
compski

3

您的标记位公式正确。

偏移量是三位还是五位取决于处理器使用字节(八位位组)寻址还是字寻址。在DSP之外,几乎所有最新的处理器都使用字节寻址,因此可以安全地假定字节寻址(和5个偏移位)。


我不知道有什么区别,是的,这是字节寻址
compski 2013年

1
在1970年代中期之前,我们可以合理地假设“字”是最小可寻址数据单元的大小。这对维基百科页面上表中的字是有趣的(如果你喜欢之类的话,(这是我做的)。)
流浪逻辑

1

我正在学习计算机系统主题的期末考试,我用了一段时间的Google搜索后发现了这个问题。问题的这一部分令人困惑:“其中每个块都有8个32位字”。一个字是4字节(或32位),因此问题只需要是“ ...,其中每个块有8个字”

答案是-每个块是32个字节(8个字),因此我们需要5个偏移量位来确定每个块中的哪个字节-直接映射=>组数=块数= 4096 =>我们需要12个索引位确定哪一套

=>标记位= 32-12-5 = 15

对于完全关联,集合数为1 =>无索引位=>标记位= 32-0-5 = 27


1

完全关联的缓存中没有索引位。索引位用于唯一地标识该块属于哪个集合。在完全关联的高速缓存中,所有块本质上都是同一集合的一部分。


-1

完全关联映射中的索引为0 b / s,就像您说set = 1,所以index =以2为底的对数的日志= 0设置offset =以字节为基础2的块大小的对数,因此使用8 = 2 ^ 3或32 = 2 ^ 5标签= 32-0-5 = 27,直接索引= 2 ^ 12 = 12偏移量= 0位标签= 32-12-0 = 20


我发现这很难读。请使用一些标点符号。
David Richerby
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.