计算机组成原理判断题题库_计算机组成原理大题

计算机组成原理判断题题库_计算机组成原理大题2020年408真题计算机组成原理篇一、单项选择题第01~40小题,每小题2分,共80分。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。12.下列给出的部件中,其位数(宽度)一定与机器字长相同的是(

2020年408真题计算机组成原理篇   一、单项选择题   第01~40小题,每小题2分,共80分。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。   12.   下列给出的部件中,其位数(宽度)一定与机器字长相同的是( )。   Ⅰ. ALU   Ⅱ. 指令寄存器   Ⅲ. 通用寄存器   IV. 浮点寄存器   A. 仅Ⅰ、Ⅱ   B. 仅Ⅰ、Ⅲ   C. 仅Ⅱ、Ⅲ   D. 仅Ⅱ、Ⅲ、IV   解答:   机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。因为计算机中数的表示有定点数和浮点数之分,定点数又有定点整数和定点小数之分,这里所说的整数运算即定点整数运算。机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通路的宽度。   机器字长反映了计算机的运算精度,即字长越长,数的表示范围也越大,精度也越高。机器的字长也会影响机器的运算速度。倘若CPU字长较短,又要运算位数较多的数据,那么需要经过两次或多次的运算才能完成,这样势必影响整机的运行速度。   机器字长与主存储器字长通常是相同的,但也可以不同。不同的情况下,一般是主存储器字长小于机器字长,例如机器字长是32位,主存储器字长可以是32位,也可以是16位,当然,两者都会影响CPU的工作效率。   Ⅰ. ALU(算术逻辑单):ALU是执行算术和逻辑操作的核心部件。它通常是根据机器字长设计的,能够处理与机器字长相同位数的数据。因此,ALU的位数一定与机器字长相同。正确。   Ⅱ. 指令寄存器:指令寄存器用于存储当前执行的指令。其位数(宽度)可能比机器字长更小,因为指令可能只需要较少的位数来表示。错误。   Ⅲ. 通用寄存器:通用寄存器是用于存储临时数据和计算结果的寄存器。这些寄存器通常与机器字长相匹配,以便能够存储和处理与机器字长相同位数的数据。正确。   IV. 浮点寄存器:浮点寄存器用于存储浮点数数据。其位数可以与机器字长相同,也可以不同,取决于计算机体系结构的设计。错误。   综上,Ⅰ和Ⅲ的位数一定与机器字长相同。   本题选B。   13.   已知带符号整数用补码表示,float型数据用IEEE754标准表示,假定变量x的类型只可能是int或float,当x的机器数为CH时,x的值可能是( )。   A.
-7×2^{27}   B.
-2^{16}   C.
2^{17}   D.
25×2^{27}   解答:   若x为float,float型数据用IEEE754标准表示,则   CH =
\underbrace{1}_S \underbrace{10010000}_E \underbrace{000 0000 0000 0000 0000 0000}_M {\rm B} ,其中
E=10010000{\rm B}=2^7+2^4=144
x=(-1)^S\times 1.M\times 2^{E-127}=(-1)^1\times 1.0\times 2^{144-127}=-2^{17} 。   A、B、C、D中没有符合该结果的选项。   若x为int,int为32位带符号整数,用补码表示,则   [x]补=CH=1100 1000 0000 0000 0000 0000 0000 0000B,   [x]原=1011 1000 0000 0000 0000 0000 0000 0000B=
-7×2^{27} 。   A符合该结果。   本题选A。   举一反三   已知带符号整数用补码表示,float型数据用IEEE754标准表示,假定变量x的类型只可能是int或float,当x的机器数为CH时,x的值可能是( )。   A.
-7×2^{27}   B.
-2^{16}   C.
2^{17}   D.
25×2^{27}   参考答案:B   14.   在按字节编址采用小端方式的32位计算机中,按边界对齐方式为以下C语言结构型变量a分配存储空间。   若a的首地址为2020FE00H,a的成员变量x2的机器数为H,则其中34H所在的存储单的地址是( )。   A. 2020FE03H   B. 2020FE04H   C. 2020FE05H   D. 2020FE06H   解答:   考点一:编址单位   若按字节编址,则一个数据类型占的地址单数等于其字节数。   考点二:边界对齐   以字节为单位的边界对齐,也称字节对齐,数据在存储时需要被放置在内存地址的倍数上,比如数据类型的大小为4个字节,那么它需要被存放在地址是4的倍数的位置上。数据按边界对齐存储是一种优化技术,通过调整数据在内存中的存储位置,可以提高计算机系统的性能和效率。   边界对齐后,结构体大小为其大小最大成员变量大小的整数倍。   根据边界对齐的定义,变量a的首地址为2020FE00H,从首地址开始,按顺序从低地址到高地址依次放入x1和x2这个成员变量,模拟过程如下:
计算机组成原理判断题题库_计算机组成原理大题
计算机组成原理判断题题库_计算机组成原理大题   考点三:大端方式和小端方式   大端方式(Big Endian):数据低位保存在高地址中,数据高位保存在低地址中。大端序和人的书写顺序一致。   小端方式(Little Endian):数据低位保存在低地址中,数据高位保存在高地址中。   在32位计算机中,按字节编址,根据小端方式和按边界对齐的定义,给出变量a的内存布局如下:
计算机组成原理判断题题库_计算机组成原理大题
计算机组成原理判断题题库_计算机组成原理大题   所以34H所在存储单的地址为2020FE06H。   本题选D。   15.   下列关于TLB和Cache的叙述中,错误的是( )。   A. 命中率都与程序局部性有关   B. 缺失后都需要去访问主存   C. 缺失处理都可以由硬件实现   D. 都由DRAM存储器组成   解答:   TLB是页表的缓存,Cache是主存的缓存,都是基于局部性原理设计的。A正确。   TLB和Cache缓存的都是主存中的信息,区别在于TLB缓存的是虚页号和页框号,用于加速虚拟地址到物理地址的转换的高速缓存,Cache缓存的是主存块,用于存储最近访问的数据副本,以提高数据的访问速度和效率。两者缺失后都需要去访问主存。B正确。   Cache缺失,CPU会处理该缺失,该处理通常由硬件实现。TLB缺失后,如果目标页在内存中,TLB失效表明缺少该地址转换。在这种情况下,CPU可以将(最后一级)页表中的地址转换加载到TLB中,并重新访问来处理失效。如果目标页不在内存中,那么TLB缺失意味着真正的缺页。在这种情况下,产生缺页中断,缺页中断通常由硬件实现。C正确。   Cache通常由SRAM组成;TLB通常由相联存储器组成,也可由SRAM组成。Cache和SRAM都是高速缓存,对数据访问的效率要求极高。相比DRAM,SRAM能够提供更快的访问速度和更低的访问延迟。DRAM需要不断刷新,性能偏低,不适合组成TLB和Cache。D错误。   本题选D。   16.   某计算机采用16位定长指令字格式,操作码位数和寻址方式位数固定,指令系统有48条指令,支持直接、间接、立即、相对4种寻址方式。单地址指令中,直接寻址方式的可寻址范围是( )。   A. 0~255   B. 0~1023   C. -128~127   D. -512~511   解答:   48条指令需要
\lceil \log 48\rceil = 6 位操作码字段,4种寻址方式需要
\lceil \log 4\rceil = 2 位寻址特征位,该计算机采用16位定长指令字格式,剩余16-6-2=8位作为地址码,地址为无符号整数,所以直接寻址范围为
0\sim 2^8-1 ,即0~255。   本题选A。   17.   下列给出的处理器类型中,理想情况下,CPI为1的是( )。   Ⅰ. 单周期CPU   Ⅱ. 多周期CPU   Ⅲ. 基本流水线CPU   Ⅳ. 超标量流水线CPU   A. 仅Ⅰ、Ⅱ   B. 仅Ⅰ、Ⅲ   C. 仅Ⅱ、Ⅳ   D. 仅Ⅲ、Ⅳ   解答:   单周期CPU中所有指令的指令周期为一个时钟周期,CPI为1。I正确。   多周期CPU中所有指令的指令周期为多个时钟周期,CPI大于1。II错误。   对于基本流水线CPU,让每个时钟周期流出一条指令,CPI为1。III正确。   对于超标量流水线CPU,每个时钟周期内并发执行多条独立指令,每个时钟周期流出多条指令,CPI小于1。IV错误。   综上,I和III正确。   本题选B。   18.   下列关于“自陷”(Trap,也称陷阱)的叙述中,错误的是( )。   A. 自陷是通过陷阱指令预先设定的一类外部中断事件   B. 自陷可用于实现程序调试时的断点设置和单步跟踪   C. 自陷发生后CPU将转去执行操作系统内核相应程序   D. 自陷处理完成后返回到陷阱指令的下一条指令执行   解答:   自陷是一种内部异常。A错误。   在程序中设置断点后,当执行到断点位置时,会触发一个陷阱事件,也就是自陷。自陷事件会触发处理器转去执行与调试器相关的代码,该代码可以处理断点停止、收集调试信息以及支持其他调试功能。B正确。   自陷最重要的用途是在用户程序和系统内核之间提供一个程序接口,该接口被称为系统调用。当自陷事件发生时,CPU将转去执行操作系统内核相应的程序。C正确。   当自陷事件发生时,处理器暂停当前的执行流程,保存当前的上下文状态,然后传递控制给操作系统内核相应的处理程序。操作系统内核会处理相应的事件。处理完成后,处理器会从保存的上下文状态中恢复,继续执行下一条指令。D正确。   本题选A。   19.   QPI总线是一种点对点全I同步串行总线,总线上的设备可同时接收和发送信息,每个方向可同时传输20位信息(16位数据+4位校验位),每个QPI数据包有80位信息,分2个时钟周期传送,每个时钟周期传递2次。因此,QPI总线带宽为:每秒传送次数×2B×2。若QPI时钟频率为2.4GHz,则总线带宽为( )。   A. 4.8GB/s   B. 9.6GB/s   C. 19.2GB/s   D. 38.4GB/s   解答:   因为QPI时钟频率为2.4GHz,每个时钟周期传送2次,所以每秒传送次数=时钟频率x2=2.4GHz×2=4.8G/s。QPI总线带宽=每秒传送次数×2B×2=4.8G/s×2B×2=19.2GB/s。题中已给出总线带宽公式,降低了难度。公式中的“×2B”是因为每次传输16位数据,“×2”是因为采用点对点全双工总线,两个方向可同时传输信息。   本题选C。   20.   下列事件中,属于外部中断事件的是( )。   Ⅰ. 访存时缺页   Ⅱ. 定时器到时   Ⅲ. 网络数据包到达   A. 仅Ⅰ、Ⅱ   B. 仅Ⅰ、Ⅲ   C. 仅Ⅱ、Ⅲ   D. Ⅰ、Ⅱ和Ⅲ   解答:   访存时缺页属于内部异常,I错误。   定时器到时描述的是时钟中断,属于外部中断,II正确。   网络数据包到达描述的是CPU执行指令以外的事件,属于外部中断,III正确。   综上,II和III属于外部中断事件。   本题选C。   21.   外部中断包括不可屏蔽中断(NMI)和可屏蔽中断,下列关于外部中断的叙述中,错误的是( )。   A. CPU处于关中断状态时,也能响应NMI请求   B. 一旦可屏蔽中断请求信号有效,CPU将立即响应   C. 不可屏蔽中断的优先级比可屏蔽中断的优先级高   D. 可通过中断屏蔽字改变可屏蔽中断的处理优先级   解答:   由CPU内部产生的异常称为内中断,内中断都是不可屏蔽中断。通过中断请求线INTR和,   NML从CPU外部发出的中断请求为外中断,通过INTR信号线发出的外中断是可屏蔽中断,而通过NMI信号线发出的是不可屏蔽中断。   不可屏蔽中断不受中断标志位的影响,即使在关中断的情况下也会被响应。A正确。   CPU响应中断需要满足3个条件:①中断源有中断请求;②CPU允许中断及开中断;一条指令执行完毕,且没有更紧迫的任务。B错误。   不可屏蔽中断的处理优先级最高,任何时候只要发生不可屏蔽中断,都要中止现行程序的执行,转到不可屏蔽中断处理程序执行。C正确。   可通过中断屏蔽字改变可屏蔽中断的处理优先级。D正确。   本题选B。   22.   若设备采用周期挪用DMA方式进行输入和输出,每次DMA传送的数据块大小为512字节,相应的I/O接口中有一个32位数数据缓冲寄存器。对于数据输入过程,下列叙述中,错误的是( )。   A. 每准备好32位数据,DMA控制器就发出一次总线请求   B. 相对于CPU,DMA控制器的总线使用权的优先级更高   C. 在整个数据块的传送过程中,CPU不可以访问主存储器   D. 数据块传送结束时,会产生“DMA传送结束”中断请求   解答:   在周期挪用DMA方式下,DMA控制器会周期性地请求总线来传输数据。每当准备好32位的数据时,DMA控制器会发出一次总线请求,A正确。   相对于CPU,DMA控制器的总线使用权的优先级通常是更高的。DMA控制器的主要任务是管理数据传输,它可以直接访问主存储器并进行数据的输入和输出。为了实现高效的数据传输,DMA控制器通常具有比CPU更高的总线优先级。B正确。   周期挪用法由DMA控制器挪用一个或几个主存周期来访问主存,传送完一个数据字后立即释放总线。周期挪用DMA方式是一种单字传送方式,每个字传送完后CPU可以访问主存。C错误。   当DMA传输完成整个数据块时,它会生成一个中断请求信号,通知CPU传输已经完成。D正确。   本题选C。   二、综合应用题   第41~47小题,共70分。   43.   (13分)   有实现x×y的两个C语言函数如下:   假定某计算机M中ALU只能进行加减运算和逻辑运算。请回答下列问题。   (1) 若M的指令系统中没有乘法指令,但有加法、减法和移位等指令,则在M上也能实现上述两个函数中的乘法运算,为什么?   (2) 若M的指令系统中有乘法指令,则基于ALU、移位器、寄存器以及相应控制逻辑实现乘法指令时,控制逻辑的作用是什么?   (3) 针对以下三种情况:①没有乘法指令;②有使用ALU和移位器实现的乘法指令;③有使用阵列乘法器实现的乘法指令,函数umul()在哪种情况下执行时间最长?哪种情况下执行的时间最短?说明理由。   (4) n位整数乘法指令可保存2n位乘积,当仅取低n位作为乘积时,其结果可能会发生溢出。当n=32、x=
2^{31}-1 、y=2时,带符号整数乘法指令和无符号整数乘法指令得到的x×y的2n位乘积分别是什么(用十六进制表示)?此时函数umul()和imul()的返回结果是否溢出?对于无符号整数乘法运算,当仅取乘积的低位作为乘法结果时,如何用2n位乘积进行溢出判断?   解答:   (1) 乘法运算可以通过加法和移位来实现。编译器可以将乘法运算转换为一个循环代码段,   在循环代码段中通过比较、加法和移位等指令实现乘法运算。例如Booth乘法。   (2) 控制逻辑的作用是控制循环次数,控制加法和移位操作。   C语言整型用补码表示,通常采用Booth乘法。   Booth乘法对乘数从低位开始判断,根据两个数据位的情况决定进行加法、减法还是仅仅移位操作。判断的两个数据位为当前位及其右边的位(初始时需要增加一个辅助位0),移位操作是向右移动。其中booth算法在操作时,需要遵循一个操作表:   
\begin{array}{|c|c|c|}\hline Y_n&Y_{n+1}&\text{操作}\\\hline 0&0&+0\text{,右移一位}\\\hline 0&1&+[X]_{\text{补}}\text{,右移一位}\\\hline 1&0&+[-X]_{\text{补}}\text{,右移一位}\\\hline 1&1&+0\text{,右移一位}\\\hline \end{array}   具体步骤如下:被乘数X与乘数Y均以补码的形式参加乘法运算,运算结果是积的补码。部分积和被乘数X采用双符号位,乘数Y采用单符号位。初始部分积为0。运算前,在乘数Y的补码末位添加一位附加位
Y_{n+1} ,初始值为0。根据
Y_nY_{n+1} 的值,按照上表进行累加右移操作,右移时遵循补码的移位规则。累加n+1次,右移n次,最后一次不右移。   这个过程累加n+1次,右移n次,所以控制逻辑的作用是控制循环次数,还需要根据操作表控制加法和移位操作。   (3) ①的执行时间最长,③的执行时间最短。   对于①,需要使用其他指令和算法来模拟乘法操作。常见的方法是通过编写(软件)程序使用加法、位移和逻辑操作来实现乘法功能。这种方法通常需要多条指令和多个时钟周期来完成乘法运算,因此会比硬件乘法指令的执行时间更长。②和③都是硬件乘法指令,所以①的执行时间最长。   对于②和③,都只需用一条乘法指令实现乘法操作。   对于③,阵列乘法器是专门用于执行乘法操作的硬件电路,可以在一个时钟周期内完成乘法运算。由于其硬件实现的特性,阵列乘法器通常是执行乘法操作最高效的方式。所以③的执行时间最短。   对于②,ALU和位移器实现的乘法指令通常需要多个时钟周期来完成乘法运算。它通过将乘法操作划分为一系列的加法、位移和逻辑操作来实现。尽管比情况①中的方法更高效,但仍然需要多个时钟周期来执行,因此相对于情况③中的阵列乘法器,执行时间较长。   (4) 第一问。当n=32、x=
2^{31}-1 、y=2时,64位的[x]补=0000 0000 0000 0000 0000 0000 0000 0000 0111 1111 1111 1111 1111 1111 1111 11111B,y=2,x×y相当于对x进行算术左移1位,得到[x×y]补=0000 0000 0000 0000 0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 11110B=00000000FFFFFFFEH。   第二问。此时函数umul()不溢出,imul()的返回结果溢出,因为umul()的返回值类型为unsigned,默认为unsigned int,为32位无符号整型,可以表示32个数值位,结果恰有32个有效数值位,所以其返回结果不溢出。然而imul()返回值类型为int,为32位有符号整型,最高位为符号位,可以表示31个数值位,结果有32个有效数值位,所以其返回结果溢出。   第三问。对于无符号整数乘法运算,当仅取乘积的低位作为乘法结果时,对于2n位乘积,若乘积高n位全为0,即乘积高n位不存在有效数值位,则无溢出,否则溢出。   44.   (10分)   假定主存地址为32位,按字节编址,指令Cache和数据Cache与主存之间均采用8路组相联映射方式,直写(WriteThrough)写策略和LRU替换算法,主存块大小为64B,数据区容量各为32KB。开始时Cache均为空。请回答下列问题。   (1) Cache每一行中标记(Tag)、LRU位各占几位?是否有修改位?   (2) 有如下C语言程序段:   若数组s及其变量k均为int型,int型数据占4B,变量k分配在寄存器中,数组s在主存中的起始地址为008000C0H,则该程序段执行过程中,访问数组s的数据Cache缺失次数为多少?   (3) 若CPU最先开始的访问操作是读取主存单00010003H中的指令,简要说明从Cache中访问该指令的过程,包括Cache缺失处理过程。   解答:   (1) Cache采用8路组相联映射方式,组相联映射格式为
\begin{array}{|c|c|c|}\hline \text{主存字块标记}&\text{组号}&\text{块内地址}\\\hline \end{array}。主存块大小为64B=
2^6B,按字节编址,主存地址低6位为块内地址,数据区容量各为32KB,行数为32KB/64B=
2^9,采用8路组相联,组数为
2^9/8=2^6,主存地址中间6位为Cache组号,主存地址为32位,主存地址中高32-6-6=20位为标记,8路组相联LRU位占
\log 8=3 位,采用直写方式,故没有修改位。   (2) 因为数组s的起始地址008000C0H=
\rm\underbrace{0000 0000 1000 0000 0000}_{\text{主存字块标记}}\underbrace{000011}_{\text{组号}}\underbrace{000000}_{\text{块内地址}}B ,块内地址为000000B=0,所以s位于一个主存块开始处,需要访问1024个数组素,每个数组素类型为int,占4B,主存块大小为64B,1024个数组素占1024×4B/64B=64个主存块。执行程序段过程中,观察s[k]=2*s[k],每个数组素都需要读、写各1次,主存块大小为64B,每访问一个主存块(包含64B/4B=16个数组素)产生一次Cache缺失,每个主存块会访问16×(1+1)=32次。总共需要访问64个主存块,产生64×1=64次Cache缺失。所以该程序段执行过程中,访问数组s的数据Cache缺失次数为64。   (3)   00010003H=
\rm\underbrace{00000000000000010000}_{\text{主存字块标记}}\underbrace{000000}_{\text{组号}}\underbrace{000011}_{\text{块内地址}}B ,根据主存地址划分可知,组索引为0,故该地址所在主存块被映射到指令Cache组0;因为Cache初始为空,所有Cache行的有效位均为0,所以Cache访问缺失。此时,将该主存块取出后存入指令Cache组0的某一行,并将主存地址高20位(00010H)填入该行标记字段,设置有效位,修改LRU位,最后根据块内地址000011B从该行中取出相应内容。   注:实际上,在现代计算机中,访问cache未命中,无需要再访问一次Cache,因为再访问一次Cache相比直接将到的数据直接送入CPU开销更大。   根据袁春风《计算机组成与系统结构(第2版)》7.6.2 Cache 的基本工作原理,带 Cache 的 CPU 访存操作过程如下:
计算机组成原理判断题题库_计算机组成原理大题
计算机组成原理判断题题库_计算机组成原理大题   问题 Cpu访问cache未命中,是否还需要访问一次cache? ?   参考知友的的所有回答和袁春风《计算机组成与系统结构》,在现代计算机体系结构中,Cache未命中后无需再次访问Cache。但根据官方答案,无论数据是否存放到 Cache 中,CPU 都是先访问 Cache, 只有当 Cache 中找不到数据时,才会去访问内存,并把内存中的数据读⼊到 Cache 中,CPU 再从 Cache 读取数据。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/18265.html

(0)
上一篇 2024年 9月 16日 下午1:02
下一篇 2024年 9月 16日 下午1:06

相关推荐

关注微信