## 8. 定长指令字格式的处理器中,如何读取指令?
答:定长指令字格式是一种规整型指令集格式,所有指令都有相同的长度,所以,指令的读取非常简单。每次都可以按照确定的字节个数从指令存储器中读出指令。
## 9. 定长指令字格式的处理器中,下一条指令地址如何计算?
答:定长指令字格式是一种规整型指令集格式,所有指令都有相同的长度。现代计算机大多以字节编址,因此,在计算下条指令的地址时,只要将 PC 中的当前指令地址加上指令的字节数就行了。例如,MIPS 处理器的指令字都是 32 位,因此每条 MIPS 指令占 4 个内存单元。只要将 PC 的值加 4 就可以得到下条指令的地址。
## 10. 变长指令字格式的处理器中,如何读取指令?
答:变长指令字格式是一种不规整型指令集格式,指令有长有短,每条指令所包含的字节个数不同。因此,在取当前指令时,可以每次按最长的指令长度来取。例如,如果最长指令长度为 6,则每次取 6 字节,然后根据指令中特定位的规定,对指令中的各字段进行划分,确定指令包含的操作码字段、寄存器编码字段、立即数字段、直接地址字段或跳转目标地址字段等。因为总是按最长指令字读取,所以每条指令总是包含在读出的若干字节中。
## 11. 变长指令字格式的处理器中,下一条指令地址如何计算?
答:变长指令字格式是一种不规整型指令集格式,指令有长有短,每条指令所含的字节数不同,因此,在计算下条指令的地址时,应将当前指令地址(PC 的内容)加上当前指令的字节数。例如,x86 处理器的指令字是变长的,每条指令从一字节到多字节不等。因此,下一条指令的地址通过一个专门的 PC 增量器来进行计算,这个 PC 增量器能根据指令中相关字段的值,确定 PC 应该加几。
<!-- page: 129 -->
12. 从处理器设计的角度,你认为定长指令字好还是变长指令字好?
答:从处理器设计的角度来看,定长指令字格式比变长指令字格式要好。特别是在取指令操作和计算下一条指令地址方面,定长指令字可大大简化处理器中取指令部件的设计。
13. CPU的主频越高,运算速度就越快吗?
答:CPU中的执行部件(定点运算部件、浮点运算部件)的每一步动作都要有相应的控制信号进行控制,这些控制信号何时发出、作用时间多长,都要有相应的时钟定时信号进行同步,CPU的主频就是同步时钟信号的频率。
直观上来看,主频越高,每一步的动作就越快,CPU的运算速度也就越快。例如,若两台机器的CPI(假定 $\mathrm{CPI} = 2$ )和ISA都一样,则主频为 $500\mathrm{MHz}$ 的机器在一秒钟内执行10亿条指令,而主频为 $1\mathrm{GHz}$ 的机器在一秒钟内执行20亿条指令。显然,主频越高,指令执行速度就越快。
主频是反映 CPU 性能的重要指标,但是,它只是反映了一个侧面,不是绝对的。对于具有不同 ISA 和不同 CPI 的两台计算机,就不能简单地根据主频来衡量运算速度。例如,对于非流水线处理器,如果将一条指令所包含的操作步骤分得很多,使每一步操作所用时间很短,定时用的时钟周期就很短,因而主频就很高。但是,此时 CPI 变大了,使得执行一条指令所用的时间并没有缩短。
14. CPU中控制器的功能是什么?
答:CPU中控制器主要用来产生各条指令执行所需的控制信号。有两大类控制信号:CPU内部控制信号和发送到系统总线上的控制信号。
15. 数据通路的功能是什么?
答:CPU的基本功能就是执行指令,指令的执行过程就是数据在数据通路中流动的过程。数据在流动过程中,要经过一些执行部件进行相应的处理,处理后的数据要送到存储部件保存。简而言之,数据通路的功能就是通过对数据进行处理、存储和传输来完成指令的执行。
16. 数据通路是如何进行数据处理、数据传送、数据存储的?
答:数据通路中的功能部件包括两种不同的逻辑单元:进行数据处理的组合逻辑单元(称为操作元件)和进行数据存储的时序逻辑单元(称为状态单元)。组合逻辑单元的输出只取决于当前的输入,也就是说,输入一旦改变,在一定的线路延迟后,输出就跟着变化,因而它只能完成一定的数据处理功能,不能存储数据,只有将处理后的新数据送到一个状态单元才能保存下来。所以,所有的数据处理单元都必须将处理后的输出结果写到状态单元中,而在处理前又必须从状态单元接受输入。因此,数据流动的起点是状态单元,经过一些组合逻辑部件,最终又流到状态单元保存。功能部件之间的输入/输出信息通过连线进行传送。
17. 数据通路中流动的信息有哪些?
答:指令的执行过程就是数据通路中信息的流动过程。因此,要理解数据通路中流动的信息类型,就必须先考查指令的执行过程。因为每条指令的功能不同,所以其执行过程也不一样。但总体来说,指令执行过程中涉及的基本操作包括:取指令并送指令寄存器、计算下一条指令地址、下一条指令地址送PC、读取寄存器中的数据到ALU输入端、指令中的立即数送扩展器或ALU输入端、在ALU中进行运算(包括计算内存单元地址)、读取内存中的数据到寄存器、将寄存器中的数据写到内存、ALU输出的数据写到寄存器等。因此,在数
<!-- page: 130 -->
据通路中流动的信息包括:PC 的值、指令、指令中的立即数、指令中的寄存器编号、寄存器中的操作数、ALU 运算的结果、内存单元中的操作数等。
## 18. 控制信号是如何控制数据的流动的?
答:指令的执行过程就是数据通路中信息的流动过程。数据通路中信息的流动受控制信号的控制。当前指令被取到指令寄存器(IR)后,指令的操作码部分被送到指令译码器进行译码,指令译码输出信号和其他信号一起组合后生成控制信号。所以不同的指令得到不同的控制信号,以规定数据通路完成不同的信息流动过程。在数据通路中,各个功能部件中都有一些控制点,这些控制点接受不同的控制信号,就使得功能部件完成不同的操作。例如,ALU 的操作控制点接受 Add、Sub、And、Or 等不同的操作信号,控制 ALU 完成加、减、与、或等不同的操作。Load/Store 指令译码后把“Add”信号送到 ALU 控制点,控制 ALU 进行加法运算来计算内存单元的地址。再如,有些状态单元的写入操作由一个“写控制信号”来控制,如果某条指令不需要把信息写入寄存器或内存单元,那么这条指令对应的译码信号就使这个“写控制信号”无效,从而控制不写入任何信息。
## 19. 如何保证一条指令执行过程中的操作按序执行?
答:对于每条指令来说,其执行过程应该是有序的。例如,对于运算类指令,其操作数一定要先取出来才能进行运算,运算结果一定是在最后才能写到目的寄存器。对于 Load/Store 型指令一定是先取出源寄存器的值,并先对立即数进行符号扩展,然后才能把它们送到 ALU 相加,计算出内存单元的地址,随后再访问内存单元取数或存数。因而,必须有一个机制来控制一条指令的有序执行,那么如何控制呢?主要是通过将指令执行的每一步按序送到相应的组合逻辑处理部件和存储信息的状态元件。在每个时钟周期中,组合逻辑部件在相应的控制信号的控制下进行数据处理、数据传送,而在时钟有效信号到达时状态单元保存中间结果。这样,经过若干时钟周期,一条指令就在数据通路中执行完成了。
## 20. 多路选择器的作用与工作原理是什么?
答:多路选择器也称为数据选择器或多路复用器。它的作用就是在多个输入中选择其中的一个作为输出。因此,它有多个输入端、一个输出端和一个控制端。控制端的控制信号位数由输入端的个数确定。2 选 1 时,控制信号有 1 位,根据控制信号为 0 还是 1,决定输入端 1 还是输入端 2 作为输出。3 选 1 或 4 选 1 时,控制信号有 2 位,根据控制信号为 00、01、10 还是 11,决定输入端 1、输入端 2、输入端 3 或输入端 4 作为输出。
## 21. 加法器(Adder)和ALU的差别是什么?
答:加法器只能实现两个输入的相加运算,而ALU可以实现多种算术逻辑运算。可以用门电路直接实现加法器,也可以通过对ALU的操作控制端固定设置为“加”操作来实现加法器。在数据通路中有些地方只需做加法运算,如指令地址计算时,这时就不需要用ALU,只要用一个加法器即可实现。
## 22. 指令存储器和数据存储器的差别是什么?
答:指令存储器和数据存储器的功能不一样,指令存储器专门用来存放指令,而数据存储器专门存放数据。所以,从指令执行过程来看,指令存储器只在取每条指令时执行读操作,每个指令周期都一样,而数据存储器只有在执行访存指令时才被访问,而且不仅可能有读操作,也可能有写操作。指令存储器的读地址由 PC 提供,而数据存储器的读地址和写地址都由 ALU 的输出端提供,因为数据的地址需要通过基址和偏移量在 ALU 中相加得到。
<!-- page: 131 -->
数据存储器的写操作需要一个写控制信号(即写使能信号 Write Enable)进行控制。现代计算机中,CPU 内的一级 cache 采用数据 cache 和代码 cache 分离的方式,所以,指令存储器实际上是处理器中的代码 cache,数据存储器实际上是处理器中的数据 cache。
## 23. 如何确定 CPU 的时钟周期?
答:在一个边沿触发的同步数字系统中,一个状态量的改变总是在时钟的上升沿或下降沿发生,称上升沿或下降沿的到来为时钟有效信号到达。一个状态量的改变必须满足三个条件:①新写入的数据已经生成并稳定在状态单元的输入端;②写使能信号有效;③时钟有效信号到达。在前面两个条件都满足的情况下,一旦时钟有效信号到达,则输入数据开始写入状态单元,经过一定的延迟后,状态单元的输出变为新输入的数据。所以要能使电路正确工作,必须使新写入的数据在时钟有效信号到达前稳定在输入端。即时钟周期必须足够长,使得在状态单元之间进行数据处理的组合逻辑电路有足够的时间来得到新的数据。因此,应将所有相邻状态单元之间的组合逻辑电路中最长的延时作为基准来确定时钟周期,以保证在一个时钟周期内所有的组合电路能完成必要的数据处理工作,在下个时钟到来后,数据能存储在状态单元中。
## 24. 如何确定单周期数据通路的时钟周期长度?
答:单周期数据通路指每条指令的执行在一个时钟周期内完成,即 $\mathrm{CPI} = 1$ 。因此,在单周期数据通路中,每当一个时钟有效边沿到来时,开始一条指令的执行,所有指令都要求在一个时钟周期内能够完成,下个时钟有效边沿到来时,上个时钟周期完成的指令的结果被写到目的寄存器或存储器,同时上个时钟周期内计算出的指令的地址被打入PC,一段时间(Click-to-Q)延迟后,PC的值被送到指令存储器,开始取下条指令并执行。所以,单周期数据通路的时钟周期的长度应该以最复杂的指令所需的执行时间为准来确定,以保证所有指令都能在一个时钟周期内完成。
因为单周期数据通路中指令的执行结果总是在下个时钟到来时才被写到状态单元,所以,整个指令执行过程都是在组合逻辑电路中进行的,没有中间结果的保存。以 MIPS 中复杂的 lw 指令为例,一个时钟的宽度应该包括:PC 的锁存时间(PC's Clock-to-Q)、取指时间(instruction memory access time)、寄存器堆存取时间(register file access time)、ALU 运算延时(ALU delay)、数据存储器存取时间(data memory access time)、寄存器堆建立时间(register file setup time)和时钟偏移(clock skew)。
## 25. 单周期数据通路中,控制信号何时发出?
答:单周期数据通路中,每条指令在一个周期内完成,所有控制信号同时产生,在指令取出后,指令操作码字段及相关的控制字段送到控制逻辑,由控制逻辑统一得到各个控制信号,每个控制信号被送到相应的控制点,一直作用在数据通路中,直到下一条指令执行过程中产生新的控制信号。例如,假定作用在 ALU 上的控制信号 ALUCtrl 为 001 时,ALU 做加法:为 010 时,做减法:为 011 时,做与操作……那么执行加法指令 Add 时,操作信号 ALUCtrl 一直以 001 作用在 ALU 的操作控制端上,若下一条为减法指令 Sub,则该指令被取出译码后从控制逻辑送出的 ALUCtrl 信号的取值变就为 010,在执行减法过程中,操作信号 ALUCtrl 一直以 010 作用在 ALU 的操作控制端上。
## 26. 如何确定多周期数据通路的时钟周期长度?
答:多周期数据通路通过把指令的执行分成多个阶段来实现,即 $\mathrm{CPI} \geqslant 1$ 。规定每个阶
<!-- page: 132 -->
段在一个时钟周期内完成,时钟周期以最复杂的阶段所花时间为准,阶段的划分原则是:将一条指令的执行过程尽量分成大致相等的若干阶段。这样,可以使得时钟周期尽量短。
在多周期数据通路中,一条指令的执行由多个时钟周期来控制。不同的指令所含的时钟周期数不同。复杂指令所含的时钟周期数多于简单指令的时钟周期数。
27. 多周期数据通路中,控制信号何时发出?
答:多周期数据通路中,每条指令的执行分成若干阶段完成,每来一个时钟,就进入到下一个阶段。因为在数据通路中每个不同的阶段将完成不同的功能,所以控制信号在每个时钟到来的时候改变其值。因此,和单周期数据通路不同,同一个控制信号的取值在一个指令周期中可能改变多次。
28. 为什么很少有机器采用单周期数据通路?
答:因为单周期数据通路以最复杂指令所需时间为准来设计时钟周期,每条指令的执行时间都一样,所以,机器采用单周期数据通路是极大的浪费。
29. 单周期处理器的基本设计步骤是什么?
答:处理器的设计是相当复杂的过程,设计者必须在集成电路技术、指令集体系结构、计算机性能评价等方面具有丰富的知识和相当的经验。但不管有多复杂,其基本步骤可以归纳为:①分析每条指令的功能,并用某种形式化方法(如 RTL)来表示;②根据指令的功能给出所需的元件,并考虑如何互连,这个各部件互连后的电路就是数据通路;③确定每个元件所需的控制信号的取值;④汇总所有指令所涉及的控制信号,生成一张反映指令与控制信号之间关系的表;⑤根据关系表得到每个控制信号的逻辑表达式,据此设计控制器电路。
30. 控制器有哪两种实现方式?各有何优缺点?
答:有两种实现方式:①用组合逻辑电路和状态寄存器实现硬连线路控制器;②用微程序设计方式实现微程序控制器。硬连线路控制器的优点是速度快,适合于实现简单或规整的指令系统。但它是一个多输入/多输出的巨大的逻辑网络,对于复杂的指令系统来说,其结构庞杂,实现困难,修改、维护不易,灵活性差。微程序控制器的特点是具有规整性、可维性和灵活性,但速度慢。为了结合两种方式的优点,很多处理器采用两者结合的方式来实现。例如,486 之后的 80x86 系统都综合使用硬布线来处理简单指令,用微程序方式(微码)实现复杂指令。
31. 如何实现硬连线路控制器?
答:用组合逻辑电路和状态寄存器实现硬连线路控制器,也称为基于有限状态机方式。其基本思想是:将所有指令执行的每个阶段(一个时钟周期内)所包含的控制信号的取值作为一个状态,每来一个时钟,则进入下一个阶段对应的状态,每个状态对应一组控制信号。
这样,每条指令的执行过程就由有限状态机的每个状态中包含的控制信号来控制。因此,控制器的设计,也就是考虑怎样使得控制器每来一个时钟就从当前状态进入到下一状态,状态的改变又使得控制信号的值发生改变。有限状态机控制器通常由一个组合逻辑电路模块和一个状态寄存器组成。状态寄存器如何变化是由当前状态和当前指令决定的,而组合逻辑控制模块可以由一个 ROM 或一个 PLA 实现。
32. 微程序控制器设计的基本思想是什么?
答:仿照程序设计的方法编制每个机器指令对应的微程序,每个微程序由若干微指令
<!-- page: 133 -->
构成,各微指令包含若干微命令。所有指令对应的微程序放在只读存储器中。当执行到某条指令时,取出对应的微程序中的各条微指令,译码产生对应的微命令(控制信号),送到机器相应的地方,控制其动作。
## 33. 有哪几种微指令格式设计风格?
微指令格式设计有两种风格:一种是水平型微指令,面向内部控制逻辑的描述,包括不译法(直接控制法)、字段直接编码(译)法等。字段直接编码法的基本思想是把能同时执行的微命令尽量多地安排在一条微指令中。通常把能同时执行的微命令称为相容微命令。这种微指令格式的微程序短,微命令并行性高,适合于较高速度的场合。但缺点是微指令长,编码空间利用率较低,并且编制较为困难。另一种是垂直型微指令,面向算法描述,也称为最小(或最短、垂直)编码(译)法,其基本思想是借鉴指令编码的思想,使得一条微指令只控制一、二个微命令。这种风格的微指令短,编码效率高,格式与机器指令类似,故编制容易。其缺点是微程序长,一条微指令只能控制一、二个微命令,无并行,因而速度慢。
## 34. 如何找到指令对应的第一条微指令?
答:控存中存放着所有指令对应的微程序,因而控存中有成百上千条微指令。每一条指令执行时,必须找到这条指令对应微程序所包含的微指令序列中的第一条微指令,然后按一定的顺序执行这个微指令序列,每个时钟执行一条微指令。那么,如何找到对应的第一条微指令呢?通常一条指令的执行总是从取指令开始,在取出指令之后进行指令译码,可以用ROM或PLA来实现一个调度表,其入口为指令译码结果,而输出为每条指令对应的微指令序列的首条微指令在控存中的地址。根据这个地址到控存中取出第一条微指令执行即可。
## 35. 如何控制微指令的执行顺序?
在找到指令对应的首条微指令后,就可以按照一定的顺序来执行指令对应的微指令序列。那么,如何控制处理器按照正确的顺序执行微指令序列呢?这就是微指令定序器的实现问题。有两种方式来确定下条微指令地址:增量法(计数器法)和断定法(下址字段法)。
(1)增量法(计数器法)的基本思想是,借鉴指令定序器的实现思路,用一个专门的计数器(通常称为微程序计数器( $\mu \mathrm{PC}$ ),对应于程序计数器(PC))来指定下一条需执行的微指令地址。在微指令序列的执行过程中,大部分情况下每条微指令的后续微指令都是确定的,即总是顺序地执行一条确定的后续微指令,这样,只要在编制微程序时就把后续微指令存放在控存的后续相邻单元中,就可以按照计数器指定的顺序执行,每执行完一条微指令,微程序计数器( $\mu \mathrm{PC}$ )就顺序增量一次;对于少数几个需要根据不同的指令操作码或操作数的不同寻址方式进行选择的情况,可以用一个调度表或在微程序中插入跳转微指令(分支微指令)来实现。
(2)断定法(下址字段法)的基本思想是,在每条微指令中,增加一个字段,用以指出下一条要执行的微指令的地址,在遇到多个后续微指令(即有分支)的情况时,采用一个调度表或相应的地址修改逻辑来实现多分支。
## 36. 中断(interrupt)和异常(exception)的区别是什么?
答:有关中断和异常的概念,很多教科书或资料中都有不同的定义。有些作者或体系结构并不区分它们,把它们统称为中断,例如,PowerPC体系结构用异常来指代意外事件,用中断表示指令执行时控制流的改变。在MIPS系统和一些经典的国外教科书中,“异常”
<!-- page: 134 -->
和“中断”的概念是有区别的,根据来自处理器内部还是外部来区分。把执行指令过程中由指令本身引起的来自处理器内部的特殊事件称为“异常”,把来自处理器外部的由外部设备通过“中断请求”信号向CPU申请的事件称为“中断”。
37. 除了有外设或他机向 CPU 发中断请求要求中断 CPU 外,还有哪些情况会中断 CPU 正在运行的程序,转到其他相应的处理过程去执行?
答:以下 4 种情况发生时,会中断 CPU 正在运行的程序,转到其他相应的处理过程去执行。
(1)在程序执行过程中,若外设完成任务或发生某些特殊事件(如打印机缺纸、定时采样计数时间到、键盘缓冲满等),会向 CPU 发中断请求,要求 CPU 对这些情况进行处理。处理完后,回到原被中断程序的断点处继续执行。这种情况称为 I/O 中断或外部中断,特指由 CPU 外部的设备向 CPU 发的中断请求。
(2)在执行某条指令时,可能发生一些特殊的“异常事件”,如缺页、溢出、除数为 0、非法操作码等,使当前指令无法继续执行。此时也要求 CPU 中止原程序的执行,转到处理相应情况的程序去执行,处理完后,再回到发生异常的指令继续执行。这种情况称为失效或故障 (fault),是由正在执行的指令产生的。
(3)还有一类是人为设定的事件,在程序中事先设定一条特殊的指令,通过执行这条特殊指令,自动中止正在执行的原程序,转到一个特定的内核管理程序去执行,执行完后,回到那条特殊指令后面的一条指令开始执行,这被称为自愿中断或自陷 (trap)。这些特殊指令称为“访管指令”(访问管理程序)或“自陷指令”(自动掉入陷阱),如 80x86 中的指令“INT n”。
(4)还有一种情况,既不是外部设备发出,也不是指令本身产生,是在执行指令过程中发生了硬件故障,如存储器数据校验故障等,使 CPU 无法继续执行指令。这类异常是随机发生的,对引起异常的指令的确切位置无法确定,出现这类严重错误时,原程序无法继续执行,只好终止,而由中断服务程序重新启动操作系统。因此这种情况被称为终止 (abort)。
综上所述,上述 4 种中断源(异常事件)分为两大类。第一种称为外部中断(有时简称为中断,interrupt),后面三种称为内部异常(也称为内部中断、程序性中断或软中断),包括故障、自陷和终止三类。内部异常是在执行特定的指令时发生的,不需要通过外部中断请求线进行中断请求。
38. 为什么在设计处理器时必须考虑异常和中断的情况?
答:异常和中断是 CPU 在执行指令过程中,指令自身或外部设备发生的一些特殊事件,这些特殊事件使得当前指令不能继续执行下去,或者,需要 CPU 停下当前程序的执行,去处理外部中断事件。因此,在数据通路中必须要考虑相应的检测线路,能够发现这种特殊的异常事件,并且还要考虑相应的控制转换电路,能够完成关中断、保护断点和转中断处理程序执行等功能。通常把这种控制转换电路的执行过程称为“中断隐指令”的执行过程,在这个执行过程中实现了对“内部异常”或“外部中断”的响应。
5.5 单项选择题
1. 机器主频的倒数(一个节拍)等于( )。
A. CPU 时钟周期
B. 主板时钟周期
C. 指令周期
D. 存储周期
<!-- page: 135 -->
2. CPU中控制器的功能是( )。
A. 产生时序信号
B. 控制从主存取出一条指令
C. 完成指令操作码译码
D. 完成指令操作码译码,并产生操作控制信号
3. 冯·诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU依据( )来区分它们。
A. 指令和数据的表示形式不同
B. 指令和数据的寻址方式不同
C. 指令和数据的访问时点不同
D. 指令和数据的地址形式不同
4. 下列寄存器中,对汇编语言程序员不透明的是( )。
A. 存储器地址寄存器(MAR)
B. 程序计数器(PC)
C. 存储器数据寄存器(MDR)
D. 指令寄存器(IR)
5. 下列有关 CPU 中部分部件的功能的描述中,错误的是( )。
A. 控制单元用于对指令操作码译码并生成控制信号
B. PC 称为程序计数器,用于存放将要执行的指令的地址
C. 通过将 PC 按当前指令长度增量,可实现指令的按序执行
D. IR 称为指令寄存器,用来存放当前指令的操作码
6. 执行完当前指令后,PC 中存放的是后继指令的地址,因此 PC 的位数和( )的位数相同。
A. 指令寄存器(IR)
B. 指令译码器(ID)
C. 主存地址寄存器(MAR)
D. 程序状态字寄存器(PSWR)
7. 通常情况下,下列( )部件不包含在中央处理器(CPU)芯片中。
A. ALU
B. 控制器
C. 通用寄存器
D. DRAM
8. 下列有关程序计数器(PC)的叙述中,错误的是( )。
A. 每条指令执行后,PC 的值都会被改变
B. 指令顺序执行时,PC 的值总是自动加 1
C. 调用指令执行后,PC 的值一定是被调用过程的入口地址
D. 无条件跳转指令执行后,PC 的值一定是跳转目标地址
9. CPU 取出一条指令并执行所用的时间被称为( )。
A. 时钟周期
B. CPU 周期
C. 机器周期
D. 指令周期
10. 下列有关指令周期的叙述中,错误的是( )。
A. 指令周期的第一个阶段一定是取指令阶段
B. 乘法指令和加法指令的指令周期总是一样长
C. 一个指令周期由若干机器周期或时钟周期组成
D. 单周期 CPU 中的指令周期就是一个时钟周期
11. 下列有关 CPU 时钟信号的叙述中,错误的是( )。
A. 处理器总是每来一个时钟信号就开始执行一条新的指令
B. 边沿触发指状态单元总在时钟上升沿或下降沿开始改变状态
C. 时钟周期以相邻状态单元之间最长组合逻辑延迟为基准确定
<!-- page: 136 -->
D. 每个时钟周期称为一个节拍,机器的主频就是时钟周期的倒数
12. 下列有关数据通路的叙述中,错误的是( )。
A. 数据通路由若干操作元件和状态元件连接而成
B. 数据通路的功能由控制部件送出的控制信号决定
C. ALU 属于操作元件,用于执行各类算术和逻辑运算
D. 通用寄存器属于状态元件,但不包含在数据通路中
13. 下列有关取指令操作部件的叙述中,错误的是( )。
A. 取指令操作的时延主要由存储器的取数时间决定
B. 取指令操作可以和下条指令地址的计算操作同时进行
C. 单周期数据通路中需用一个指令寄存器存放取出的指令
D. PC 在单周期数据通路中不需要“写使能”控制信号
14. 下列有关多周期数据通路和单周期数据通路比较的叙述中,错误的是( )。
A. 单周期处理器的 CPI 总比多周期处理器的 CPI 大
B. 单周期处理器的时钟周期比多周期处理器的时钟周期长
C. 在一条指令执行过程中,单周期处理器中的每个控制信号取值一直不变,而多周期处理器中的控制信号可能会发生改变
D. 在一条指令执行过程中,单周期数据通路中的每个部件只能被使用一次,而在多周期中同一个部件可使用多次
15. 下面是有关 MIPS 架构的 R 型指令数据通路设计的叙述:
① 在 R 型指令数据通路中,一定会有一个具有读口和写口的通用寄存器组
② 在 R 型指令数据通路中,一定有一个 ALU 用于对寄存器读出数据进行运算
③ 在 R 型指令数据通路中,一定存在一条路径使 ALU 输出被送到某个寄存器
④ 执行 R 型指令时,通用寄存器堆的“写使能”控制信号一定为“1” 以上叙述中,正确的有( )。
A. ①、②、③
B. ①、②、④
C. ②、③、④
D. 全部
16. 下面是有关 MIPS 架构的 $\mathrm{lw} / \mathrm{sw}$ 指令数据通路设计的叙述:
① 在 $\mathrm{lw} / \mathrm{sw}$ 指令数据通路中,一定有一个符号扩展部件用于偏移量的扩展
② 在 $\mathrm{lw} / \mathrm{sw}$ 指令数据通路中,ALU 的控制信号一定为“addu”(即 ALU 做加法)
③ 寄存器堆的“写使能”信号在 $\mathrm{lw}$ 指令执行时为“1”,在 $\mathrm{sw}$ 指令执行时为“0”
④ 数据存储器的“写使能”信号在 $\mathrm{lw}$ 指令执行时为“0”,在 $\mathrm{sw}$ 指令执行时为“1” 以上叙述中,正确的有( )。
A. ①、②、③
B. ①、②、④
C. ②、③、④
D. 全部
17. 下面是有关 MIPS 架构的 beq 指令的单周期数据通路设计的叙述:
① 在 beq 指令的执行过程中,ALU 的两个输入都来自寄存器堆
② 在 beq 指令数据通路中,ALU 的控制信号一定为“subu”(即 ALU 做减法)
③ 在 beq 指令数据通路中,一定有一个加法器用于计算跳转目标地址
④ 在 beq 指令的执行过程中,数据不会流经符号扩展部件 以上叙述中,正确的有( )。
A. ①、②、③
B. ①、②、④
C. ②、③、④
D. 全部
<!-- page: 137 -->
18. 某计算机指令集中包含有 R-R 型运算指令、取数指令 Load、存数指令 Store、分支指令 Branch 和跳转指令 Jump。若采用单周期数据通路实现该指令系统,各主要功能部件的操作时间为:指令存储器和数据存储器都是 3ns;ALU 和加法器都是 2ns;寄存器堆的读和写都是 1ns。在不考虑多路复用器、控制单元、PC、符号扩展单元和传输线路等延迟的情况下,该计算机时钟周期至少为( )。
A. 6ns
B. 8ns
C. 10ns
D. 12ns
19. 下列有关微指令格式的描述中,错误的是( )。
A. 相对于直接控制法(不译法),字段直接编码法的控存利用率更高
B. 相对于字段直接编码法,直接控制法(不译法)的执行速度更快
C. 相对于断定法(下址字段法),采用计数器法的微指令格式更短
D. 相对于水平型微指令,一条垂直型微指令中包含的微命令更多
20. 下列有关指令和微指令之间关系的描述中,正确的是( )。
A. 一条指令的功能通过执行一条微指令来实现
B. 一条指令的功能通过执行一个微程序来实现
C. 一条微指令的功能通过执行一条指令来实现
D. 一条微指令的功能通过执行一个微程序来实现
21. 相对于微程序控制器,硬布线控制器的特点是( )。
A. 指令执行速度慢,指令功能的修改和扩展容易
B. 指令执行速度慢,指令功能的修改和扩展难
C. 指令执行速度快,指令功能的修改和扩展容易
D. 指令执行速度快,指令功能的修改和扩展难
22. 以下有关“自陷”异常的叙述中,错误的是( )。
A. “自陷”是人为预先设定的一种特定处理事件
B. 由“访管指令”或“自陷指令”的执行进入“自陷”
C. 一定是出现了某种异常情况才会发生“自陷”
D. “自陷”发生后 CPU 将进入操作系统内核程序执行
【参考答案】
1. A
2. D
3. C
4. B
5. D
6. C
7. D
8. B
9. D
10. B
11. A
12. D
13. C
14. A
15. D
16. D
17. A
18. C
19. D
20. B
21. D
22. C
【部分题目的答案解析】
第4题
某个寄存器对于汇编语言程序员来说是透明的,含义是指汇编语言程序员在使用汇编指令编写程序时,无法感知到这个寄存器的存在,显然,汇编程序员无须知道 MAR、MDR 和 IR 是否存在,更无须了解这些寄存器和程序是什么关系,但是,汇编程序员肯定知道指令会如何改变程序计数器 PC 的内容,可以使用跳转指令来改变程序计数器的顺序增量方式,因此,PC 对汇编程序员来说不是透明的。答案是选项 B。
第8题
每条指令执行结束后(对于循环执行的指令,在完成所有次数的循环执行后,称为指令
<!-- page: 138 -->
执行结束),总是要执行新的指令,否则程序就无法完成执行。因此,每条指令执行后程序计数器(PC)的内容一定会改变。如何改变PC的内容呢,主要看指令是顺序执行还是跳转执行,若是顺序执行,则PC的值总是自动加上当前执行指令的长度,通常用“1”表示,这里的“1”是指一条指令的长度,所以,选项B的说法是错误的。
调用指令和无条件跳转指令都是无条件跳转到跳转目标地址执行,调用指令的跳转目标地址就是被调用过程的首地址,因此,PC的值都要改变为跳转目标地址。
综上所述,答案为选项B。