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

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上的东西只有那个标记(当然还有那些数据和有效位)

假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量_第1张图片
为什么cache行号和块内地址不用记录呢?

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

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

你可能感兴趣的:(计算机系统原理)