直接映射缓存中的集数

3
如果我有9位地址,直接映射高速缓存中有多少组? 如果我有10位地址,直接映射高速缓存中有多少组?
是否有一个通用的公式来回答这个问题? enter image description here
3个回答

3
对于直接映射,每个地址只映射到高速缓存中的一个位置,因此直接映射高速缓存中集合的数量就是高速缓存的大小。
标记位为0位,您没有提供足够的信息来确定索引或位移位。
假设您使用字寻址,并且您指的是索引+标记有9位或10位:
9位 -> 2^9个集合
10位 -> 2^10个集合

好的,我该如何分离标签、索引和字节偏移量? - Chris Dargis
单词有多大,缓存有多大? - Anthony Blake
我认为这就是我的问题所在,没有指定任何内容。 - Chris Dargis
或者,如果它只有1KB的缓存,每个单词是32位,那么每个字节偏移量就有2位,因此会有2^8个集合。 - Anthony Blake
假设大小为1024,位0-1是字节偏移量,位2-4是索引,位5-9是标记? - Chris Dargis
显示剩余8条评论

0

如果是直接映射,则块的数量将等于1。

现在,您可以通过(高速缓存大小)/(块数)来获取集合的数量

这里的块数为1,因此集合的数量为高速缓存大小。


0

好的,对于(a),首先画出8列 -- 这些将是您在缓存中的集合。

对于每个地址,检查地址(仅高位 -- 忽略最低两位)是否在由第2-4位组成的列底部。如果该列中没有写入任何内容,或者第2-10位不匹配,则为未命中。如果第2-10位与您当前在该列底部写入的值匹配,则为命中,因为您在缓存中有该地址。无论是命中还是未命中,都要划掉该列中的当前值,并在那里写入新地址。

希望这能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接