[算法]问一个Cache容量计算的问题

tocligg 2016-04-25 09:36:57
假定主存地址为32位,按字节编址,主存和Cache之间采用直接映射方式,主存块大小为4个字,每字32位,采用回写(Write Back)方式,则能存放4K字数据的Cache的总容量的位数至少是()

A.146k B.147K C.148K D.158K

【参考答案】 B

【考查知识点】Cache 和主存的映射方式。直接映射方式地址映象规则: 主存储器中一块只能映象到Cache的一个特定的块中。(1) 主存与缓存分成相同大小的数据块。(2) 主存容量应是缓存容量的整数倍,将主存空间按缓存的容量分成区,主存中每一区的块数与缓存的总块数相等。(3) 主存中某区的一块存入缓存时只能存入缓存中块号相同的位置。
-----------------------
这个Cache的位数,是指Cache分组的组数/块数,还是别的什么?
请问这个答案B是怎么算出来的呢?
谢谢。
...全文
2995 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
~秋枫吹散 2019-12-02
  • 打赏
  • 举报
回复
选B。有4k字,每个块大小为4个字,所以需要1k个块,1k近似等于1024=2^8,所以索引位需要8位。标记域tag有32-8-2(每个块大小为4=2^2)-2(每个字4=2^2个字节)=18位,还需要加1位有效位,从而得总Cache大小为1k*(4*32+18+1)=147k=147K.
xuyeabcd 2019-01-05
  • 打赏
  • 举报
回复
就是选B,147Kib。有4KiB数据,即4*2^10=2^12个字,块大小为4个字即2^2,则2^12÷2^2=2^10个块。标记域tag有32—10—4=18位,还需要加1位有效位,从而得总Cache大小为2^10*(4*32+18+1)=2^10*147=147Kib(同时也约是147÷8=18.4KiB大小)。这是我们计组书上的题。
ccyy- 2016-07-09
  • 打赏
  • 举报
回复
标准答案应该是C。我看到一个解释: cache一共需要4K*32bit/32*4bit=1K块 cache的容量等于1K*(32*4+主存标记位18位+有效位1位+写回位1位)=148K
ccyy- 2016-07-09
  • 打赏
  • 举报
回复
LZ现在知道了吗?我也很想知道。。。(⊙v⊙)
tocligg 2016-04-27
  • 打赏
  • 举报
回复
自己顶一下!
tocligg 2016-04-26
  • 打赏
  • 举报
回复
自己顶一下,求回答!

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧