• 计算机组成原理——存储系统の选择题整理


    存储器概述

    1、存储器存取周期是指()
    A、存储器的读出时间
    B、存储器的写入时间
    C、存储器进行连续读或写操作所允许的最短时间间隔
    D、存储器进行一次读或写操作所需的平均时间

    解析:选C
    存取周期是存储器进行连续读或写操作所允许的最短时间间隔
    存取时间是存储器进行一次读或写操作所需的平均时间

    2、设机器字长为32位,一个容量为16MB的存储器,CPU按半字寻址,其可寻址的单元数是()
    A、224
    B、223
    C、222
    D、221

    解析:选B
    32位是4B,因为CPU按半字寻址,因此每个寻址单元的长度是4/2=2B,16MB=24 * 220=224B。因此寻址单元数是224/2=223

    3、设机器字长为64位,存储容量为128MB,若按字编址,它可寻址的单元个数是()
    A、16MB
    B、16M
    C、32M
    D、32MB

    解析:选B
    因为按字寻址,所以64位 => 8B,128MB/8B=16M

    4、在多级存储体系中,“Cache-主存”结构的作用是解决()问题
    A、主存容量不足
    B、主存与辅存速度不匹配
    C、辅存与CPU速度不匹配
    D、主存与CPU速度不匹配

    解析:选D
    “Cache-主存”结构,拥有Cache的速度和主存的容量,而Cache只能与主存和CPU进行相应的存取操作,不能直接与辅存进行操作,因此“Cache-主存”结构与辅存无关,利用该结构可以将主存的速度提高,因此是解决主存与CPU速度不匹配的问题。

    5、下列关于多级存储系统说法中正确的是()
    a.多级存储系统是为了降低存储成本
    b.虚拟存储器中主存和辅存之间的数据调动对任何程序员是透明的
    c.CPU只能与Cache直接交换信息,CPU与主存交换信息也需要经过Cache
    A、仅a
    B、仅a和b
    C、a、b和c
    D、仅b

    解析:选A
    多级存储系统是将一些常用的数据放在离CPU近的地方,不常用的放在外存/辅存中,这样既可以保证计算机的运行效率,又可以使得尽可能便宜的扩大存储容量,降低了存储成本。
    虚拟存储器中主存和辅存之间的数据调动是通过操作系统的相关指令来实现的,只对应用程序员透明。其他的程序员需要操控数据调用,因此不能透明。
    CPU可以和Cache以及内存直接进行交换信息。
    在这里插入图片描述


    主存储器

    1、某一SRAM芯片,其容量为1024*8位,除电源和接地端外,该芯片的引脚的最小数目为()
    A、21
    B、22
    C、23
    D、24

    解析:选A
    容量为1024*8位,因此数据线为8根,地址线为10根(1024=210),除了电源和接地线,还需要片选线(1根),读写数据线(可以合用1根,可以读写分开用2根)。因此最小数目为10+8+1+1=20根,但题目中没有20的选项,因此采用读写数据线分开,即10+8+1+2=21根。

    2、某存储器容量为32K*16位,则()
    A、地址线为16根,数据线为32根
    B、地址线为32根,数据线为16根
    C、地址线为15根,数据线为16根
    D、地址线为15根,数据线为32根

    解析:选C
    32K =>25 * 210=215,所以地址线为15根
    16位,所以数据线为16根

    3、下列()是动态半导体存储器的特点
    a.在工作中存储器内容会发生改变
    b.每隔一段时间,需要根据原存内容重新写入一遍
    c.一次完整的刷新过程需要占用两个存储周期
    d.一次完整的刷新过程只需要占用一个存储周期
    A、a、c
    B、b、c
    C、b、d
    D、只有c

    解析:选C
    动态半导体存储器(DRAM),利用电容存储电荷的特性记录信息,由于电容会放电,电荷会流失,因此需要每隔一段时间,根据原存内容重新写入一遍,写入的内容不会发生改变。
    动态半导体存储器的刷新是不经过CPU的,利用RAM内部自带的刷新放大器,将内容存入刷新放大器,需要一个存取周期,然后取出来的时候就不需要了,因为刷新放大器本身就在RAM上,并不需要访问其他的部件,因此只需要一个存取周期。

    4、机器采用四体低位交叉存储器,现分别执行下述操作:①读取6个连续地址单元中存放的存储字,重复80次;②读取8个连续地址单元中存放的存储字,重复60次,则①、②所花费的时间之比()
    A、1:1
    B、2:1
    C、4:3
    D、3:4

    解析:选C
    因为机器采用四体低位交叉存储器,因此读取的时候可以连续读4个而不用考虑是否已经恢复的问题,当读完第四个的时候,第一个恢复完成。
    对于第①种情况,1-4位存放可以不用考虑是否恢复,当访问完第四位后,第一部分的数据已经恢复好了,因此第5个可以直接存放,第六个也可以直接存放,当访存放第六个后,需要进行第二次,重新存放第一部分,但此时第一部分还没有恢复好,因此需要等待2个存放时间,即第一次连续存放开始到第二次连续存放开始,中间间隔8个存放,因此所需时间为8t *80
    对于第②种情况,1-4位存放可以不用考虑是否恢复,当访问完第四位后,第一部分的数据已经恢复好了,因此第5个可以直接存放,且5-8都可以直接存放,等第八个存放结束后,可以直接进行第二次连续存放,因此第一次连续存放开始到第二次连续存放开始,中间间隔8个存放,因此所需时间为8t *60
    即8t *80:8t *60=4:3
    在这里插入图片描述

    5、下列说法中,正确的是()
    a.高位多体交叉存储器能很好的满足程序的局部性原理
    b.高位四体交叉存储器可能在一个存储周期内连续访问4个模块
    c.双端口存储器可以同时访问同一区间、同一单元
    d.双端口存储器当两个端口的地址码相同时,必然会发生冲突
    A、a、c
    B、b、c
    C、b、c和d
    D、c、d

    解析:选
    高位交叉存储器在单个存储器中的字是连续存放的,不满足局部性原理,而地位交叉存储器在单个存储器中的字是不连续存放的,因此满足局部性原理。在这里插入图片描述
    高位四体交叉存储器可能在一个存储周期内连续访问4个模块,但是概率比较低,只要存储周期够大,访问恢复时间够短就可以实现。
    双端口存储器具有两套独立的读写口,各自具有独立的地址寄存器和译码电路,所以可以在同一时间访问同一区间、同一单元,且它们的访问是互不干扰的,因此不会发生冲突。

    6、某容量为256MB的存储器由若干4M*8位的DRAM芯片构成,该DRAM芯片的地址引脚和数据引脚总数是()
    A、19
    B、22
    C、30
    D、36

    解析:选
    4M =>222,因此需要22根地址线,因为DRAM采用地址复用技术,因此只需要原来地址线的一半,即地址信号分行、列两次发送,因此需要11根地址线。
    8位,因此需要8根数据线
    即11+8=19根

    7、某计算机主存按字节编址,由4个64M*8位的DRAM芯片采用交叉编制方式构成,并与宽度为32位的存储器总线相连,主存每次最多读写32位数据。若double型变量x的主存地址为804001AH,则读取x需要的存储周期数是()
    A、1
    B、2
    C、3
    D、4

    解析:选C
    double类型是64位,每次最多读写32位,如果不考虑恢复时间,则需要两个存储周期,但是每读完一次需要一定的恢复时间,因此需要的存储周期一定大于2,且恢复时间一般小于存储周期,因此2<=x<=4,因此选3个存储周期。


    主存储器与CPU的连接

    1、80386DX是32位系统,以4B为编址单位,当在该系统中用8KB(8K*8位)的存储芯片构造32KB的存储体系时,应完成存储器的()设计
    A、位扩展
    B、字扩展
    C、字位扩展
    D、字位均不扩展

    解析:选A
    以4B为编址单位,扩展到32KB,因此需要32KB/4B=8K,即8K *4B,其中4B=32bit,即将8位扩展到32位,因此需要进行位扩展。

    2、某计算机字长为16位,存储器容量为256KB,CPU按字寻址,其寻址范围是()
    A、0~219-1
    B、0~220-1
    C、0~218-1
    D、0~217-1

    解析:选D
    因为CPU按字寻址,所以16位 => 2B
    256KB/2B=128K=217,所以寻址范围是0~217-1

    3、地址总线A0(高位)~ A15(低位),用4K*4位的芯片存储器组成16KB存储器,则产生片选信号的译码器的输入地址线应该是()
    A、A2A3
    B、A0A1
    C、A12A13
    D、A14A15

    解析:选A
    16KB/4K=4B,因此需要进行字位扩展,分成4组,每组1B,即每组两片,共需要8片。4K=212
    地址总线低位用来连接存储器,高位用来作为产生片选信号的译码器的输入地址线。,因此需要A15 - A 4作为连接存储器的地址线,因为进行字扩展时分成四组,因此需要两根地址线,即A 2和A 3

    4、若内存地址区间为4000H~43FFH,每个存储单元可存储16位二进制数,该内存区域用4片存储器芯片构成,构成该内存所用的存储器芯片的容量是()
    A、512* 16 bit
    B、256* 8 bit
    C、256* 16 bit
    D、1024* 8 bit

    解析:选C
    内存地址区间为4000H~43FFH,所以存储单元个数为210,且每个存储单元可存储16位二进制数,因此该存储空间为210 * 16bit。
    对于A,512* 16 bit=29 * 16bit,只需要2片存储器进行字扩展即可。
    对于B,256* 8 bit=28 * 8bit,需要进行字位扩展,分为4组,每组2片,一共需要8片存储器.
    对于C,256* 16 bit=28 16bit,需要4片存储器进行字扩展。
    对于D,1024
    8 bit=210 * 8bit,需要2片存储器进行位扩展

    5、某计算机存储器按字节编址,主存地址空间大小为64MB,现用4M*8位的RAM芯片组成32MB的主存储器,则存储器地址寄存器MAR的位数至少是()
    A、22位
    B、23
    C、25位
    D、26

    解析:选D
    主存地址空间大小为64MB,即226*1B ,因此需要地址线26位,即MAR的位数为26位。
    在计算机内存储器地址寄存器MAR的位数由主存地址空间大小决定,与存储器的大小无关。

    6、某存储器容量为64KB,按字节编址,地址4000H~5FFFH为ROM区,其余为RAM区。若采用8K*4位的SRAM芯片进行设计,则需要该芯片的数量是()
    A、7
    B、8
    C、14
    D、16

    解析:选C
    地址4000H~5FFFH为ROM区,因此ROM区大小为213B,即8KB,因此RAM区的大小为64-8=56KB。56KB/8K=71B,因此需要由7组,每组2片(1B=8bit=24bit)SRAM构成。故7*2=14片。


    外部存储器

    1、下列关于磁盘的说法中,错误的是()
    A、本质上,U盘(闪存)是一种只读存储器
    B、RAID技术可以提高磁盘的磁记录密度和磁盘利用率
    C、未格式化的硬盘容量要大于格式化后的实际容量
    D、计算磁盘的存取时间,“寻道时间”和“旋转等待时间”常取其平均值

    解析:选B
    对于A,U盘是在E2PROM的基础上发展起来的,因此属于只读存储器。
    对于B,RAID(独立冗余磁盘阵列),是指将多个独立的物理磁盘组成一个独立的逻辑盘,不会影响磁盘记录密度,也不会提高磁盘利用率。但是提高了传输率
    对于C,格式化后的磁盘只能存储规定格式的数据,有部分磁盘不能再存储数据,存储的容量要小于未格式化的磁盘。
    对于D,在没有给出某一操作具体的“寻道时间”和“旋转等待时间”时,计算磁盘的存取时间,常取其平均值

    2、下列关于磁盘存储器的叙述中,错误的是()
    A、磁盘的格式化容量比非格式化容量小
    B、扇区中包含数据、地址和校验信息
    C、磁盘存储器的最小读写单位为1字节
    D、磁盘存储器由磁盘控制器、磁盘驱动器和盘片组成

    解析:选C
    对于A,格式化后的磁盘只能存储规定格式的数据,有部分磁盘不能再存储数据,存储的容量要小于未格式化的磁盘。
    对于B,扇区中包含数据、地址和校验信息
    对于C,磁盘存储器的最小读写单位是一个扇区,按块存取。
    对于D,磁盘存储器由磁盘控制器、磁盘驱动器和盘片组成


    高速缓冲器

    1、某32位计算机的Cache容量为16KB,Cache行的大小为16B,若主存与Cache地址映射像采用直接映射方式,则主存地址为0x1234E8F8的单元装入Cache的地址是()
    A、00010001001101
    B、01000100011010
    C、10100011111000
    D、11010011101000

    解析:选C
    16KB => 214,表示Cache地址长度为14,直接映射,低位是块内地址(14位),将0x1234E8F8写成二进制为:0001 0010 0011 0100 1110 1000 1111 1000
    在这里插入图片描述
    在这里插入图片描述

    2、有效容量为128KB的Cache,每块16B,采用8路组相联,字节地址为1234567H的单元调入该Cache,则其Tag应该是()
    A、1234H
    B、2468H
    C、048DH
    D、12345H

    解析:选C
    每块16B=24 =>块内地址为4位。总容量为128KB,每块16B,采用8路组相联,因此每一组大小为16B*8,一共有128KB/(16B *8)组=210组,因此组号字段为10位。
    在这里插入图片描述

    3、设有8页的逻辑空间,每页有1024B,它们被映射到32块的物理存储区中,则按字节编址逻辑地址有效位是(),物理地址至少是()
    A、10,12
    B、10,15
    C、13,15
    D、13,12

    解析:选C
    对于逻辑地址,8页=23 =>3位。每页有1024=210 =>10位,因此是3+10=13位
    对于物理地址,32块=25 =>5位,块内地址和页内地址一样,因此也是1024=210 =>10位,故5+10=15位。

    4、假设主存地址位数为32位,按字节编址,主存和Cache之间采用全相联映射方式,主存块大小为1个字,每字32位,采用回写(write back)方式和随机替换策略,则能存放32K字数的Cache的总容量至少应有()位
    A、1536K
    B、1568K
    C、2016K
    D、2048K

    解析:选D
    主存块大小为1个字,每字32位=4B=22,因此块内地址为2位。因为采用全相联映射方式,因此只有块内地址和标志,因此Tag=32-2=30位。因为采用回写法,因此有1位修改位,因为采用随即替换策略,所以不需要替换控制位,因此是32bit(数据位)+30bit(Tag位)+1bit(修改位)+1bit(有效位)=64bit。因此Cache的总容量为:32K *64bit=2028K bit。

    5、计算机的Cache共有16块,采用二路组相联映射方式(即每组2块)。每个主存块大小为32B,按字节编址,主存129号单元所在主存块应装入的Cache组号是()
    A、0
    B、2
    C、4
    D、6

    解析:选C
    因为计算机的Cache共有16块,采用二路组相联映射方式(即每组2块),因此共有16/2=8组,每组有两片。因此按模8映射到Cache中,即0、8、16……映射到第0组中,每个主存块大小为32B,因此129号映射到第4块,4%8=4,所以Cache组号为4.

    6、假设某计算机按字编址,Cache有4行,Cache和主存之间交换的块大小为1个字。若Cache的内容初始为空,采用二路组相联映射方式和LRU替换策略,则访问的主存地址依次是0,4,8,2,0,6,8,6,4,8时,命中Cache的次数是()
    A、1
    B、2
    C、3
    D、4

    解析:选C
    因为Cache有4行,采用二路组相联映射方式,因此有2组,每组有两个块。LRU是最近未被使用替换策略。主存地址与4取余,0,4,8都是放在第0组,2,6放在第二组。置换过程如下:
    在这里插入图片描述

    7、有如下C语言程序段:

    for(k=0;k<1000;k++)
    	a[k]=a[k]+32;
    
    • 1
    • 2

    若数组a和变量k均为int型,int型数据占4B,数据Cache采用直接映射方式,数据区大小为1KB,块大小为16B,该程序执行前Cache为空,则该程序段执行过程中访问数组a的Cache缺失率为()
    A、1.25%
    B、2.5%
    C、12.5%
    D、25%

    解析:选C
    因为块大小为16B,int型数据占4B,因此一个块可以放4个int型数据,在k=0时,a[0]=a[0]+32,先执行右边a[0]+32,在Cache中寻找a[0],没有找到,因此去内存中找,找到了,并采用直接映射的方式写到Cache中,因为一个块可以放4个int型数据,因此此次写入将a[0],a[1],a[2],a[3]四个数据都写到Cache中了,然后在执行左边的a[0]赋值操作,从Cache中找到了,命中。当k=1时,先执行右边a[1]+32,从Cache中找a[1]找到了,再执行左边,给a[1]赋值,从Cache中找a[1],也找到了,k=2,k=3时同理,当k=4时,先执行右边没找到a[4],此时操作同k=0时的操作,因此以4次循环为一个周期,每个周期会缺失1次,命中7次,一共访问Cache8次,因此缺失率为12.5%,因为正好进行1000次,是4的倍数,因此访问数组a的Cache缺失率为就是每个周期的缺失率,即12.5%

    8、若计算机主存地址为32位,按字节编址,Cache数据区大小为32KB,主存块大小为32B,采用直接映射方式和回写(write back)策略,则Cache行的位数至少是()
    A、275
    B、274
    C、258
    D、257

    解析:选A
    Cache数据区大小为32KB,主存块大小为32B,所以一共有1K个Cache行,因此组号长度为10位,块内地址长度为32=25,5位,因此tag=32-10-5=17位,因为采用回写(write back)策略,因此需要有1位修改位,故:32B(数据位)+17bit(tag位)+1(有效位)+1bit(修改位)=32*8+17+1+1=275位


    虚拟存储器

    1、虚拟存储器的常用管理方式有段式、页式、段页式,对于它们在与主存交换信息时的单位,以下表述正确的是()
    A、段式采用“页”
    B、页式采用“块”
    C、段页式采用“段”和“页”
    D、页式和段式均采用“页”

    解析:选D
    页式虚拟存储对程序分页,采用页进行交互;
    段页式先分段,再分页,采用页与主存进行交换信息

    2、在虚拟存储器中,当程序正在执行时,由()完成地址映射
    A、程序员
    B、编译器
    C、装入地址
    D、操作系统

    解析:选D
    虚拟存储中,地址映射是由操作系统完成的,但是需要一些硬件部分基础的支持,如快表、地址映射系统等。

    3、假定编译器将赋值语句“x=x+3;”转换为指令“add xaddr,3”,其中xaddr是x对应的存储单元地址。若执行该指令的计算机采用页式虚拟存储管理方式,并配有相应的TLB,且Cache使用直写方式,则完成该指令功能需要访问主存的次数至少是()
    A、0
    B、1
    C、2
    D、3

    解析:选B
    上述指令包括三个步骤:取数、运算、写回。
    如果xaddr已经在Cache中,则不需要访问主存,因此在取数阶段,可能访问主存次数为0。
    运算利用的是CPU内部的算术逻辑单元,不需要主存的参与,该阶段也不需要访问主存。
    因为Cache采用的是直写方式,因此在写回操作时,不仅要写到Cache中,还要写到内存中,因此此阶段至少要访问一次内存。
    综上,至少需要访问内存:0+0+1=1次

  • 相关阅读:
    为金融而生的区块链Injective(INJ)
    20220726汇承科技的蓝牙模块HC-05的AT命令测试
    keychron矮轴无线机械键盘简直就是yyds
    基于Java毕业设计迎新管理系统演示录像2020源码+系统+mysql+lw文档+部署软件
    火遍全网的Hutool,如何使用Builder模式构建线程池
    在定义C++, C通用接口函数时让C++接口支持默认参数
    【用unity实现100个游戏之16】Unity程序化生成随机2D地牢游戏2(附项目源码)
    MySQL学习笔记27
    分类预测 | Matlab实现SSA-SVM多特征分类预测
    策略模式【Java设计模式】
  • 原文地址:https://blog.csdn.net/qq_45741986/article/details/126123084