假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量

博客围绕主存和cache采用直接映射方式的题目展开,计算能存放32K字数据的cache总容量,解析了行号、块内地址、标志位等概念,探讨了cache行号和块内地址不记录的原因,还提及直写和回写方式对计算的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5单选(1分)
假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量至少应有( )位。

得分/总分

A.
1568K

B.
1600K

C.
1504K

D.
1536K

正确答案:D你没选择任何选项
这个是mooc解析,加粗的是我添加的
解析: D、cache共有32K字/1字=32K行,故行号占15位(k==2^10
,32 ==2^5);每个主存块为1字=32位=4B(即2 ^2),故块内地址占2位。因此,标志占32-15-2=15位。(假定主存地址位数为32位) 直接映射方式无需考虑替换算法,故没有替换信息;直写方式无需修改位(dirty bit)。因而cache总容量为32K×(1+15+32)=1536K位。
32K行 1是有效位 标志占15位 后面这个32应该是数据的32bit吧, (那行号占15位和块内地址占2位不用算嘛,不用,因为只有有效位 , 标志,数据 才是写在cache上的)
我的理解是这样的, 标记, cache行号,块内地址 组合起来形成了主存地址的映射,而cache里面肯定还有一大段地方是用来放数据的,不是说一个cache行对应一个主存块嘛

我又不知道了 这个数据的32bit 指的是 ,因为
假定主存地址位数为32位
所以是32bit呢
还是因为:
主存块大小为1个字,每字32位
一块有32bit 所以写32bit呢

我感觉是因为
主存块大小为1个字,每字32位
所以 这样写的

书上的这个7位 7位,也就是说这两个东西是对应的. 我之前还以为整个主存地址和这个上面的标记是对应的呢,我错了. 应该是这两个7位的是对应的
这里数据就是题目说的 数据的32bit了.
然后其实这个cache行号和块内地址并不是物理存在的,他们是个计算过程的中间变量,真正要写在cache上的东西只有那个标记(当然还有那些数据和有效位)

在这里插入图片描述
为什么cache行号和块内地址不用记录呢?
在这里插入图片描述
我猜一下
在书本的描述中,命不命中,只要对比标记位就行了, 因为去查cache,是因为一个命令,比如说要查一个内存,那我先不去内存里看,我先去cache里看,这个时候,命令是提供给我这个地址的,那我可以根据这个地址的低b位知道块内地址,中间c位知道cache行,高t位知道标记位,这些我都是知道的,那为什么标记位还要存呢? 因为我通过一个地址知道的标记位要去和cache里存着的去比一比,如果一样的话,就是命中了,所以标记位还是存的

这种题目,从应试的角度来说,如果说回写,就要多一个dirty bit ,所以算的时候要多一个1bit 就比如题目的式子就变成32K×(1+15+32 +1)
直写(Write Throght)就是不用多这个bit . 多理解我也不去理解了,还是从应试的角度来

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值