| 1.下面有关程序计数器PC的叙述中,错误的是( )。 A.PC是用户不可见的寄存器
B.PC的值由CPU在执行指令过程中进行修改
C.转移指令时,PC的值总是修改为转移目标指令的地址
D.PC的位数一般和存储器地址寄存器MAR的位数一样
|
简要分析:
计算机的工作过程就是周而复始执行指令的过程,指令在主存中连续存放。一般情况下,指令被顺序执行,只有遇到转移指令(如,无条件转移、条件分支、调用和返回等指令)才可能改变指令执行的顺序。
选项A和选项B::指令执行的顺序由程序计数器PC的值来控制。PC中存放了下一步将要执行的指令在内存的地址。CPU在执行指令时,根据指令规定的目标地址计算方式和指令执行的结果标志(如,进位标志CF、符号标志SF等),对PC进行修改,用户无法直接修改PC的值,因而是用户不可见的寄存器。
选项C:当执行到转移指令时,有两种情况:(1) 如果是无条件转移或调用、返回等指令,则PC的值直接修改为目标指令地址;(2)如果是条件转移(分支)指令,则必须根据前面指令或当前指令执行的结果标志,确定是把转移目标地址还是把下条指令地址送到PC。所以转移指令时,PC的值并不总是直接修改为转移目标指令的地址;当顺序执行(非转移指令)时,通过对PC加“1”来使PC指向下一条顺序执行的指令,这里的“1”是指一条指令的长度。即当前指令占用的内存单元个数,不是加1。现代计算机一般都采用字节编址方式,所以,实际上PC应该加上当前指令的字节个数。
选项D:PC和MAR都是用来存放内存单元地址的。每次取指令时,PC的值先要被送到MAR,然后访问存储器,所以,它们的位数应该相同。
综上所述,错误的应该是C。
|
2.下面有关指令周期的叙述中,错误的是(
)。
A.指令周期的第一个子周期一定是取指子周期
B.所有指令的执行子周期一样长
C.在有间接寻址方式的指令周期中,至少访问两次内存
D.在一条指令执行结束、取下条指令之前查询是否有中断发生
|
简要分析:
选项A:一条指令从读取到执行完成所花的全部时间被称为指令周期。一个指令周期中要完成多个步骤的操作,包括取指令、指令译码、(计算操作数地址)、取操作数、运算、送结果等。因此,第一个子周期一定是取指令子周期,指令只有先取到CPU,才能进一步得到执行。
选项B:每条指令完成的操作不同,有的指令只要把一个寄存器的内容送到另一个寄存器,有的要进行简单的加/减法运算,还有的是复杂的乘/除法运算,这些操作所花的时间相差很大,所以,不是所有指令的执行子周期都一样长。
选项C:间接寻址方式的指令地址码给出的是操作数地址的地址,因而,要取得操作数,需要访问两次内存,第一次根据地址码到内存取操作数地址,第二次根据操作数地址到内存取操作数。当然,在有Cache的系统中,数据可能在Cache中取到,此时就无需访问内存。
选项D:现代计算机系统都具有中断功能,在具有中断功能的系统中,除了指令本身要求的操作以外,每条指令执行结束、取下条指令之前,还要检测有没有中断请求。
综上所述,错误的应该是B。
|
3.下面是有关数据通路设计中取指令操作涉及到的部件的叙述,错误的是(
)。
A.取指令操作涉及到指令存储器和指令地址寄存器(即:PC)两个状态单元
B.取指令操作要用到一个加法器,用于计算下条指令地址
C.单周期数据通路中,取指令操作一定要用一个指令寄存器来存放取出的指令
D.PC在单周期数据通路中不需写控制信号,而多周期数据通路中需要写控制信号
|
简要分析:
选项A:取指令过程完成两件事:根据PC的值从指令存储器中取出指令;将PC的值增量以指向下条指令。因此,涉及到指令存储器和PC两个状态单元;
选项B:因为要通过增量来计算下条指令的地址,所以要用到一个加法器
选项C:单周期数据通路中,每个时钟执行一条指令,所以,在整个指令执行过程(从取指令到开始写结果前)中,都是由组合逻辑单元进行处理,中间不能有状态单元。如果中间用一个指令寄存器IR来存储取出的指令,那么,IR只能在下一个时钟到来时才能写当前指令,这显然无法使单周期数据通路正常执行指令。
选项D:单周期数据通路时,每个时钟周期执行一条指令,所以PC在每个周期改变一次,总是在时钟到来时,把上个周期得到的值写入PC,从而在本周期取出新的指令执行。所以,用一个时钟信号就能正确控制PC进行值的改变了。而多周期数据通路中,每个指令由多个时钟组成,PC的值并不是每个时钟到来时都要改变,所以,时钟到来时PC的值是否改变还要由一个写控制信号来控制。只有写控制信号PCWrite有效时,才能改变PC的值。
综上所述,选项C是错误的。
|
4.下面是有关MIPS系统的lw/sw指令数据通路设计的叙述:
①. lw/sw指令数据通路中要有一个符号扩展部件
②. lw/sw指令数据通路中,ALU的控制信号一定为“Add”(即:ALU做加法)
③. 寄存器堆的写控制信号在lw指令执行时为“1”,在sw指令执行时为“0”
④. 数据存储器的写使能信号在lw指令执行时为“0”,在sw指令执行时为“1”
以上叙述中,正确的有( )。
A. ①和②和③
B.①和②和④
C.②和③和④
D.全部
|
简要分析:
叙述①和②:lw/sw指令都是访存指令,其存储地址由指令给出的一个寄存器中的基址加上指令给出的一个偏移量形成。偏移量的位数只有16位,而运算器ALU是32位的,所以,必须将16位数扩展为32位。偏移量是相对于基址的一个相对位置,可以在基址的前面(偏移量为负数),也可以在基址的后面(偏移量为正数),所以,偏移量是有符号数,必须用“符号扩展”方式进行扩展,才能保持数值不变。因此,lw/sw指令数据通路中要有一个符号扩展部件。因为是基址加上偏移量,所以ALU的控制信号一定为“Add”(即:ALU做加法);
叙述③和④:lw指令的功能是从数据存储器取数到寄存器堆,sw指令则相反。所以,lw指令执行时,数据存储器写控制信号为“0”,寄存器堆写控制信号为“1”;sw指令执行时,数据存储器写控制信号为“1”,寄存器堆写控制信号为“0”。
综上所述,四个叙述都是正确的。
|
5.下面是有关中断响应的叙述,错误的是(
)
A.每条指令结束后,都会转到一个中断响应子周期
B.在中断响应周期,CPU首先通过设置中断允许触发器来关中断
C.中断响应过程中,CPU把返回地址送到堆栈或特殊寄存器保存
D.中断响应过程中,CPU把取得的中断服务程序的入口地址送PC
|
简要分析:
选项A:中断响应的条件有三个:(1)CPU处于开中断状态(中断允许触发器EINT置“1”状态);(2)至少有一个未被屏蔽的中断请求发生;(3)一条指令执行结束。所以,虽然每条指令结束时,都会查询有无中断请求,但不是每个指令周期都包含一个中断响应子周期。一定是同时满足以上三个条件时,才会响应中断。此时,CPU自动执行一条隐指令,进入中断响应机器周期,选项B、C、D:在中断响应机器周期中,CPU完成关中断、保护断点(返回地址)到堆栈或特殊寄存器(如MIPS中的EPC)、取中断向量(中断服务程序入口地址)到PC三个操作。
所以,错误的是A
|
6.以下情况中,( )不需要通过外部中断请求线通知CPU。(多选题)
A.溢出
B.除数为0
C.DMA传送结束
D.键盘缓冲满
|
简要分析:
选项A和B中给出的“溢出”和“除数为0”都是一种程序性中断,在执行特定的指令时发生的,不需要通过外部中断请求线进行中断请求。
选项C和D中给出的“DMA传送结束”和“键盘缓冲满”都是由外部设备向CPU请求中断处理的I/O中断事件,需要通过外部中断请求线进行中断请求。
所以,答案应该是A和B。
|
|