【发布时间】:2011-11-23 01:44:33
【问题描述】:
如果我有 9 个地址位,那么直接映射缓存中有多少组? 如果我有 10 个地址位,那么直接映射缓存中有多少组?
这个问题有通用公式吗?
【问题讨论】:
标签: caching
如果我有 9 个地址位,那么直接映射缓存中有多少组? 如果我有 10 个地址位,那么直接映射缓存中有多少组?
这个问题有通用公式吗?
【问题讨论】:
标签: caching
对于直接映射,每个地址只映射到缓存中的一个位置,因此直接映射缓存中的集合数就是缓存的大小。
标签将有 0 位,并且您没有提供足够的信息来确定索引或位移位。
假设您使用的是字寻址,并且您的意思是索引 + 标记有 9 位或 10 位:
9 位 -> 2^9 组
10 位 -> 2^10 组
【讨论】:
好的,对于 (a),首先为自己画 8 列——这些将是你在缓存中的集合。
对于每个地址,检查地址(仅高位 - 忽略最低两位)是否位于由位 2-4 编号的列的底部。如果该列中没有写入任何内容,或者 2-10 位不匹配,则它是未命中的。如果位 2-10 与您当前在该列底部写入的内容相匹配 - 这是一个成功,因为您在缓存中有该地址。无论是命中还是未命中,都将列中的当前值划掉,并在此处写入新地址。
希望对您有所帮助。
【讨论】:
在直接映射的情况下,块数将等于 1。
现在您可以通过(缓存大小)/(块数)获取集合数
这里是(缓存大小)/1 = 缓存大小。
【讨论】: