第一部分
1.下列哪种存储器属于易失性存储器(A)
A.Cache
B.EPROM
C.Flash Memory
D.DVD
解析:RAM都属于易失性存储器,而ROM都是非易失性存储器,因此该题可以转化为判断下列哪一种存储器是RAM。高速缓存cache一定是RAM,而EPROM一定是ROM,闪存和DVD也是ROM,由此得到问题答案。
2.下列半导体存储器需要刷新的是(B)
A.SRAM
B.DRAM
C.EPROM
D.Flash Memory
解析:DRAM是唯一需要不断刷新的存储器。
3.存储器是计算机系统的记忆设备,它主要用来(C)
A.存放数据
B.存放程序
C.存放数据和程序
D.存放微程序
解析:存储器的作用就是用于存放数据和程序。微程序放在特定的存储器,即控制存储器中,因此D选项以偏概全。
4.某计算机存储器按照字节编址,主存地址空间的大小为64MB,用4M*8的RAM扩展成64MB的主存储器,请问存储器地址寄存器有多少位(D)
A.22位
B.23位
C.25位
D.26位
解析:存储器地址寄存器用于保存一个内存单元的地址。由于主存空间大小为64MB,而64M=2^26,因此存储器地址寄存器至少有26位。
5.一个容量为4K×16位的存储器,其地址线和数据线的总和是(C)
A.20
B.24
C.28
D.30
解析:由题可知存储器中存储单元的总数为4K,每个单元的数据为16位,因此地址线的位数为log2(4K)=12位,而数据线的位数为16位,所以总位数等于两者之和等于28位。注意!此题需要与上一题区分开:存储器地址寄存器的位数等于内存中的总字节数的2对数,而地址线的位数等于内存中的总字数的2对数。
6.一个具有24位地址和8位字长的存储器,如果存储器由4M×1位的RAM芯片组成,则需要多少片这样的芯片(D)
A.48
B.24
C.8
D.32
解析:由于地址为24位,因此字的总数为2pow(24)个,而每个字为8位,因此总位数=2pow(27)位。一个4M×1位的RAM芯片共有2pow(22)位,因此需要32片这样的RAM芯片才能组成所需要的更大容量的芯片。
7.可以用作Cache的存储器芯片是(C)
A.RAM
B.DDR
C.SRAM
D.SDRM
解析:SRAM是Cache芯片的载体,而DRAM是内存的主要载体。直接用RAM概括显然不如SRAM准确。
第二部分(Cache相关)
例题1:某直接映射的高速缓存为128B,每块为4个字(1个字32位),主存容量4096B,写出缓存地址和主存地址。
解析:
①由于Cache的每个块有4个字,且每个字32位,因此每个Cache块为128位=16B;
②由于Cache的容量为128B,因此Cache中的行数=128B/16B=8(行),因此需要需要3位表示区内行号;
③由于每块为16B,因此需要4位来表示块内地址;
④由于主存容量为4096B,且每一个块为16B,一个区有8个块,因此共有4096/(16*8)=32个区,所以需要5位表示区号。
综上所述,缓存地址为“3位块号+4位块内地址”,主存地址为“5位区号+3位区内块号+4位块内地址”。
例题2:某直接映射高速缓存有8块,每块为16B,则字节为191的地址应该对应Cache中的哪一块?
解析:根据直接映射的原理可知,内存单元191在主存中的块数为191整除16=11(块),因此对应Cache中的块数为11%8=3(块)。
例题3:假设某Cache有64块,每块为16个字节,则内存中地址为1200的单元应该对应Cache中的哪一块?
解析:在主存中1200单元所对应的块号=1200//(表示整除)16=75(块),而第75块主存数据映射到Cache中的行数=75%64=11(行),由此得解。
例题4:主存和cache之间采用直接映射,块大小为16B。cache的数据区容量为64KB,主存地址为32位,按字节编址。如果考虑有效位和标记位在内,计算cache的容量大小(C)
A.64KB
B.64K×16b(tag)+64K×8b
C.4K×(1+16)b+64K×8b
D.4K×16b+64K×8b+1b(V有效位)
解析:
①在不作特殊说明的情况下Cache的容量大小就默认为数据区的容量大小,但是此处考虑了相联存储器的部分。
②由于每一个块大小为16B,因此块内地址为4位。
③由于Cache的数据区容量为64KB,因此一共有64KB/16B=4K(块),因此区内块号需要用12位进行表示。
④由于主存地址为32位,因此剩余32-4-12=16位用于作标记位,也就是区号。
⑤由于Cache中一共有4K个块,每个块有16位标记位和1位有效位因此Cache的总容量为64KB+4K×(1+16)b=64K×8b+4K×(1+16)b。
例题5:假设主存按照字节编址,Cache共有64行,采用直接映射方式,主存块的大小为32字节,所有的编号从0开始,问2593号单元所在的主存块在Cache中的对应行是(B)
A.1
B.17
C.34
D.63
解析:由于一个块为32个字节,因此2593号单元在主存中的块号=2593//(整除)32=81,而主存中第81块映射到Cache中的行数=81%64=17,由此得解。
例题6:某直接映射的高速缓存为128B,每块为4个字,即4*32位(16B),主存容量为4096B,请写出缓存地址和主存地址构成。
解析:由于每块为16个字节,因此块内地址需要4位进行表示;由于高速缓存为128B,而每个块为16B,因此缓存中的块号需要log2(128B/16B)=3位进行表示;由于主存容量为4096B而缓存容量为128B,因此需要将主存分为4096/128B=32个区,所以需要5位表示区号。综上所述,缓存地址形式为“3位块号+4位块内地址”的形式,而主存地址的形式为“5位区号+3位块号+4位块内地址”。
第三部分(虚拟存储器相关)
例题1:虚拟存储器中的页表有快表和慢表之分,下面关于页表的叙述中正确的是(D)
A.快表和慢表都存储在主存中,但是快表比慢表容量小
B.快表采用了优化的搜索算法,因此查找速度快
C.快表比慢表的命中率高,因此快表可以得到更多的搜索结果
D.快表采用快速存储器部件组成,按照查找内容访问,因此比慢表查询速度快
解析:
A选项:快表的容量比慢表小正确;慢表存储在主存中,而快表存储在特有的快速存储器TLB中,而TLB不在主存中,因此A选项错误。
B选项:快表比慢表查找速度更快,其原因是快表存储在快速存储器中而不是算法上的原因,因此B选项错误。
C选项:快表的命中率一般比慢表低且容量比慢表小,因此慢表才可以获得更多的搜索结果,因此C选项错误。 D选项:解释同B选项,因此D选项正确。
例题2:下面的叙述中错误的是(C)
A.TLB就是快表,即转换后援缓冲器
B.快表中存放着当前进程中常用页表项
C.快表命中时,在第一层缓存中一定会命中
D.快表也是一种页表项的高速缓存,一定在CPU中
解析:可以认为转换后援缓冲器TLB就是快表,因此A选项正确;快表对于页表相当于Cache对于内存,用于存放常用的页表项,因此B选项正确;页表可以视为一种高速缓存并存放在CPU中,因此D选项正确;当快表命中时说明页表项存放在快表中,也就是对应的页表在内存中,但是不代表页表中的数据同时也在Cache中,因此C选项错误。
例题3:某页式虚拟存储器中,页大小为4KB,虚存大小为4GB,物理内存的块的大小为4MB,则对应的虚页号位数为(B)
A.12
B.20
C.28
D.32
解析:假设为32位的计算机,则由题目条件可知,由于页大小为4KB,因此页内偏移地址为log2(4K)=12位,从而用32位中剩下的20位表示虚页号,即虚页号有20位。