cache容量计算
由此题做出总结,首先我们根据题目已给条件可以得到:
块内大小:1*32/8=4B,即2的2次方,占2位
由于是全相联映射,所以剩余32-2=30位 ,回写法:一位脏位,随即替换策略:不需要位 ,1位有效位,故一共30+2=32位再加上一个块的大小也就是32位=64位
cache一共有(32k*32/8)/(1*32/8)=32k行
所以至少应有64*32k=2048k
直接映射方式:包括标记,cache和块内地址
(1)块内大小32B,即2的5次方
(2)cache:32KB/32B=1KB=10位
32-5-10=17 回写策略:1位脏位, 一位有效位 17+2=19位
一个块大小32*8=256位 256+19=275位
故一行cache275位
8路组相联映射:包括标记,cache组号和块内地址
(1)块内地址:64B占6位
(2)cache组号:32KB/64B/8 占6位
(3)标记:32-6-6=20位 +回写1位脏位+1位有效位为22位
22+64*8=534位
两种cache数据区都是32KB,都有2的9次方行
故一种需要534*2的9次方
那么两种就需要534*2的10次方即534K
直接映射:标记,cache+块内
(1)块内:4*32/8=16B 4位
(2)cache:4K*32/8 / 16B=1K 10位
(3)标记:32-10-4=18位 +1+1=20位
4*32+20=148
cache一共有1k行
148*1k=148k
总结如下:在计算cache容量时,
(1)首先观察它使用的是哪种存储方式,全相联,组相联或是直接映射
(2)之后计算出该种存储方式标记位的字号
(3)根据题目中的写入方式和替换策略算出总共的占位:注意不要忘了有效位,记为A
(4)A+一个块的位数就是一个cache行的位数
(5)乘cache行数即可
寻址的单元个数
这种题主要时判断它是按照什么来编址,字,半字还是字节。再利用容量除以编址方式的字节数即可
比如本题按照字编址,那就是64位,8B 128MB/8B=16M
芯片的最小位置类型题目
交叉编址
交叉编址就是低位编址
(1)首先计算出64K*8位的存储器一共需要4个16K*8位的存储芯片 0 1 2 3
(2)根据地址BFFFH的最小两位11确定其是在第3个芯片上即0003H
同样,交叉编址就是低位编址,并且每次存储周期只能读取一行的数据
有题目可以直接已知4个芯片 0 1 2 3
题目按照字节编址,double类型的变量需要8个字节
由804001AH的最低两位10,可以得到他在第三个芯片上,也就是2号,连着8个字节都是变量的存储空间
即 x x 1 2
3 4 5 6
7 8 x x
所以一共要3个存储周期
总结如下,如果是交叉编址,那么就是给我们一个信息低位编址,我们就要现根据题目给出的主存地址找到他的起始位置,然后再进行之后的操作
其余类型
根据题目所给条件得出一共需要4组芯片,依次计算出每组芯片的起始位置和最终位置,确定题目所求在哪个区间内,我们就可以得出该地址所在芯片的最大最小地址了
磁盘
存取时间
存取时间包括寻道时间+延迟时间+传输时间
延迟时间:60/7200/2=0.004167s=4.167ms
寻道时间:8
传输时间:60/7200/1000=0.0000083s=0.0083ms
相加:12.167+0.0083=12.2ms
存取时间包括寻道时间+延迟时间+传输时间
延迟:0.2ms
寻道:6ms
读取时间:4KB/20MB=0.2ms
传输时间:60/10000/2=3ms
6+3+0.2+0.2=9.4ms