① 存储器有16位地址,所以容量为64K个存储单元,每存储单元占8位。因此需要的芯片数为:(64K
/ 1K)×(8 / 4)= 64×2 = 128(片)。
② 存储器能存放64K字节的信息。存储器在字方向上扩展了64=26倍,因而片选逻辑需要6位地址。存储器共16位地址,而芯片共有1K=1024=210个单元,所以芯片内地址位数为10位,
剩下16 -10=6位地址正好用于片选逻辑。
4.用64K×1位的DRAM芯片构成256K×8位的存储器,要求:
①计算所需芯片数
②采用异步刷新方式,如每单元刷新间隔不超过2ms,则刷新信号周期是多少?
③如采用集中刷新方式,存储器刷新一遍最少用多少读/写周期?
参考答案:
① 该存储器所需芯片数:(256K / 64K)×(8 / 1)=
32(片)。
② DRAM芯片的容量为64K×1位,假定芯片内部只有一个位平面,则存储阵列的结构为256×256,则存储器刷新一遍至少需要256次刷新操作。若采用异步刷新方式,则相邻两次刷新的时间]间隔为2ms/256≈7.8μs,所以,刷新信号周期应为7.8μs。
③ 在与②同样的假定条件下,若采用集中刷新方式,则存储器刷新一遍最少用256个读/写周期。
注1:DRAM芯片的内部结构可从手册中查出。如不知芯片的内部结构,按惯例可将芯片按n×n的结构处理,本例是64 K×1的芯片,则存储器刷新一遍需要256次刷新操作。
注2:若由四个128×128的矩阵构成,则刷新时4个存储矩阵同时对128个记忆单元进行操作。整个存储器刷新一遍只需要128次刷新操作。
① 找到一个访存地址序列,能使Cache2的失靶率比Cache1的失靶率低但失靶所花的总时钟数比Cache1多。
② 找到一个访存地址序列,使得Cache2的失靶率比Cache1的失靶率还高。
(假定采用字地址)
参考答案:
① 要能使Cache2的失靶率比Cache1的失靶率低但失靶所花的总时钟数比Cache1多,则至少Cache1的失靶次数为4,而Cache2的失靶次数为3,这样使Cache1失靶所花总的时钟数为32,少于Cache2的总时钟数33。字地址序列0,
1,4,8使得Cache1的失靶次数为4,Cache2的失靶次数为3。
② 要使Cache2的失靶率比Cache1的失靶率还高,则必要找一个地址序列使得在Cache2中替换后又被访问到,而在Cache1中不被替换出来。地址序列0,1,16,1,16使得在Cache1中失靶3次,而在Cache2中失靶4次。
① 页大小16KB,所以页内地址位数为:14位;逻辑地址36位,所以,虚页号位数为:36-14=22,虚页数为222个。因此每个进程的页表项数为222个。物理地址32位,所以实页号位数为:32-14=18。因此,每个页表项的位数为:1+1+2+2+18=24位。所以每个进程的页表大小为:24x222=24x4Mb=12MB。
② TLB中总的表项数为256项,采用2路组相联,所以共有128组。虚拟页号14位中低7位用来表示组号,高7位用来作为标记和每组中的标记进行比较,判断是否TLB命中。所以,TLB中每个页表项的位数比主存中页表项的位数多了7位的标志位,故:TLB中每个页表项的位数为24+7=31位。整个快表的大小为256x31=7936位=992字节。