mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
26584 字
72 分钟
中央处理器

第六章:中央处理器#

本章整理计算机中的核心硬件部件:中央处理器。中央处理器是整个计算机系统的控制枢纽与运算中心,主要负责解释并执行机器级指令,以驱动各种底层硬件部件协同运行。

要理解中央处理器的底层设计,我们可以围绕一条主线和两个核心问题展开:

  • 基本主线:一条机器指令进入中央处理器后,硬件电路如何一步步将其解释并执行完毕?
  • 核心问题:中央处理器是由负责数据流动的数据通路和负责发送控制信号的控制器组成的。如何设计数据通路?控制器如何根据当前时序产生正确的控制信号?

6.1 中央处理器概述#

6.1.1 中央处理器功能#

中央处理器在物理上主要完成以下五类基本控制与加工工作:

  • 指令控制:控制程序的执行顺序,包括自动取指令、分析指令以及执行指令。
  • 操作控制:一条指令的执行往往需要多个微操作。中央处理器必须产生对应的操作控制信号,并将它们送往不同的硬件部件。
  • 时间控制:严格控制各种操作发生的先后顺序和持续时间,以确保时序正确。
  • 数据加工:通过算术逻辑单元对数据进行算术逻辑运算。
  • 中断处理:负责对系统运行过程中的异常情况或外部请求进行应急响应与处理。

中央处理器执行每一条指令,在物理上都遵循以下基础逻辑流:

取指令 → 分析指令(译码) → 取操作数 → 执行运算 → 写回结果 → 检查中断并转向下一条指令

6.1.2 中央处理器组成#

从系统架构层面来看,中央处理器主要由运算器、控制器和内部寄存器组三部分组成:

flowchart BT DataPath[数据通路: 寄存器组、ALU、移位器] --> Ctrl[操作控制信号驱动] CtrlGen[控制器: 译码电路、时序逻辑] --> Ctrl PSW[状态标志反馈] --> CtrlGen

1. 运算器电路#

运算器主要负责数据的物理加工。其核心部件包括:

  • 算术逻辑单元:负责执行加、减、与、或、异或等核心算术逻辑运算。
  • 暂存寄存器:用于暂存从主存或通用寄存器读出的数据,防止在单总线结构下产生数据冲突。
  • 状态标志寄存器:通常称为程序状态字寄存器。用于保存当前指令执行后的各种运行状态,例如:
    • Z 标志:结果是否为 0。
    • N 标志:结果是否为负数。
    • C 标志:运算时最高位是否产生进位或借位。
    • V 标志:有符号数运算是否产生溢出。 这些标志是控制器执行后续条件转移指令的物理依据。

2. 控制器电路#

控制器是控制整机运行的决策机构,主要负责产生各种操作控制信号。控制器通过译码器识别指令的功能,并结合时序信号,在指定的节拍发送控制使能信号,打开或关闭相应的数据通路闸门。

控制器核心寄存器物理记忆法
  • 程序计数器(PC):用于指明下一条待执行指令在主存中的物理地址。具有自增功能。
  • 指令寄存器(IR):用于保存当前正在执行的指令二进制代码。其操作码字段会直接送往指令译码器。
  • 存储器地址寄存器(MAR):用于保存当前中央处理器所访问的主存单元的物理地址。
  • 存储器数据寄存器(MDR):用于暂存中央处理器与主存之间交互的数据。

6.2 指令周期#

6.2.1 指令执行的一般流程与指令周期#

在中央处理器中,时序单位从大到小依次划分为:指令周期机器周期时钟周期

  • 时钟周期:又称节拍。是中央处理器中最小、最基础的时间单位。由系统主频的倒数决定。
  • 机器周期:又称存取周期。通常把访问一次主存所需的最短时间定义为一个机器周期。一个机器周期通常包含若干个时钟周期。
  • 指令周期:是指中央处理器从主存中取出一条指令并执行完毕所需的全部时间。一个指令周期通常包含若干个机器周期。

1 指令周期=机器周期=(m×时钟周期)1 \text{ 指令周期} = \sum \text{机器周期} = \sum \left( m \times \text{时钟周期} \right)

6.2.2 指令周期的基本概念与机器阶段划分#

根据指令在不同阶段的处理特征,一个完整的指令周期可以划分为以下四个主要机器阶段,不是所有指令都需要经历所有阶段:

  • 取指周期:从主存中取出指令存入指令寄存器,并使程序计数器指向下一条指令。这是所有指令共同经历的阶段。
  • 间址周期:当指令采用间接寻址时,需要通过此阶段访问主存以获取操作数的真实有效地址。
  • 执行周期:根据指令的功能,取出操作数并送入算术逻辑单元进行物理运算,最后写回结果。
  • 中断周期:如果在执行周期末尾检测到中断请求,且满足中断响应条件,中央处理器将进入中断响应周期,保存程序断点并转入中断服务。

6.3 数据通路及指令操作流程#

数据通路是指数据在中央处理器内部流动所经过的物理路径(包括总线、多路选择器、三态门等)。其物理结构的设计直接决定了控制器的微操作安排。

6.3.1 数据通路模型与定时#

分析数据通路时,需要同时关注“数据从哪里来、经过哪里、写到哪里”以及“这些传送动作在哪个时钟节拍发生”。前者决定硬件连线,后者决定控制信号序列。

6.3.2 单总线结构的数据通路#

在单总线结构中,所有通用寄存器的输入端、输出端以及算术逻辑单元的接口都连接在同一条公共的内部总线上。由于同一时刻总线上只能有一个部件输出数据,算术逻辑单元的两个输入端不能同时从总线上获取数据,因此必须在算术逻辑单元的输入端和输出端分别配置暂存寄存器(如暂存器 Y 和暂存器 Z)。

单总线结构指令周期的 RTL 微操作节拍设计(考点大题)

设控制信号命名规则:XoX_o 表示将寄存器 XX 的内容输出到总线;XiX_i 表示将总线上的内容写入寄存器 XXGG 为连接两条总线的控制开关门信号(如存在双总线时)。下面推导单总线结构下取指和典型指令的微操作节拍。

1. 公共取指周期微操作#

  • 第一节拍(T0):将当前指令物理地址送入地址寄存器。 PCMAR     控制信号:PCo,MARiPC \rightarrow MAR \quad \implies \text{ 控制信号:} PC_o, MAR_i
  • 第二节拍(T1):启动主存读命令,同时程序计数器自动累加(设按字节编址,双字长指令占 4 字节)。 M[MAR]MDR,PC+4PC     控制信号:Read,PC自增控制M[MAR] \rightarrow MDR, \quad PC + 4 \rightarrow PC \quad \implies \text{ 控制信号:} Read, PC \text{自增控制}
  • 第三节拍(T2):将从主存读出的指令代码送入指令寄存器,并送往译码器。 MDRIR     控制信号:MDRo,IRiMDR \rightarrow IR \quad \implies \text{ 控制信号:} MDR_o, IR_i

2. 执行加法指令:ADD R1, R2#

该指令的功能为:(R1)+(R2)R1(R1) + (R2) \rightarrow R1。在单总线结构下需要 3 个执行节拍:

  • 第四节拍(T3):将寄存器 R1 中的被加数读出并暂存到暂存器 Y 中。 R1Y     控制信号:R1o,YiR1 \rightarrow Y \quad \implies \text{ 控制信号:} R1_o, Y_i
  • 第五节拍(T4):将寄存器 R2 中的操作数读出送上总线,与暂存器 Y 中的值同时输入算术逻辑单元进行加法运算,结果暂存到输出暂存器 Z 中。 (Y)+R2Z     控制信号:R2o,ALU加法控制,Zi(Y) + R2 \rightarrow Z \quad \implies \text{ 控制信号:} R2_o, ALU \text{加法控制}, Z_i
  • 第六节拍(T5):将暂存器 Z 中的运算结果写回寄存器 R1。 ZR1     控制信号:Zo,R1iZ \rightarrow R1 \quad \implies \text{ 控制信号:} Z_o, R1_i

3. 执行取数指令:LOAD R1, (R2)#

该指令的功能为:将寄存器 R2 指向的内存单元的数据加载到 R1。

  • 第四节拍(T3):将 R2 中的有效地址送入主存地址寄存器。 R2MAR     控制信号:R2o,MARiR2 \rightarrow MAR \quad \implies \text{ 控制信号:} R2_o, MAR_i
  • 第五节拍(T4):启动主存读命令,等待主存将数据读入数据暂存器。 M[MAR]MDR     控制信号:ReadM[MAR] \rightarrow MDR \quad \implies \text{ 控制信号:} Read
  • 第六节拍(T5):将数据暂存器中的内容写入通用寄存器 R1。 MDRR1     控制信号:MDRo,R1iMDR \rightarrow R1 \quad \implies \text{ 控制信号:} MDR_o, R1_i

6.3.3 专用通路结构的数据通路#

专用数据通路通过多路选择器或三态缓冲门,在有频繁数据传送需要的部件之间建立直接连接。其特点是:

  • 可以支持多个寄存器在同一时钟周期内并行读写,无需共享总线分步排队。
  • 算术逻辑单元的两个输入可以直接从寄存器堆的两个独立读端口获取。
  • 性能高,但硬件连线非常复杂,控制信号数量庞大。这是现代精简指令集中央处理器和流水线设计的物理基础。

6.3.4 补充:MIPS 指令的单周期数据通路执行流程#

单周期数据通路是指中央处理器在一个时钟周期内完成一条指令的全部执行步骤。因此,时钟周期必须由执行时间最长的那条指令(通常为加载字指令)来决定。本节用于理解数据通路控制信号;若课程明确“不考模拟 MIPS32”,复习时可作为低优先级补充内容。

下面给出五类典型 MIPS 指令在单周期数据通路中的控制信号取值,这是选择与综合大题的关键考点:

指令类型与格式RegDstALUSrcMemToRegRegWriteMemReadMemWriteBranchJumpALUOp
add $rd, $rs, $rt1 (写rd)0 (选rt)0 (选ALU)10000R型功能
lw $rt, offset($rs)0 (写rt)1 (选立即数)1 (选主存)11000加法
sw $rt, offset($rs)X (无所谓)1 (选立即数)X (无所谓)00100加法
beq $rs, $rt, labelX (无所谓)0 (选rt)X (无所谓)00010减法
j targetX (无所谓)X (无所谓)X (无所谓)000X1X
MIPS 单周期控制信号的物理含义解释
  • RegDst:选择写入的通用寄存器编号来源。为 1 时选择指令的第 15 到 11 位(rd 字段),为 0 时选择指令的第 20 到 16 位(rt 字段)。
  • ALUSrc:选择算术逻辑单元的第二个输入源。为 0 时选择寄存器堆输出的数据,为 1 时选择经过符号扩展后的 16 位立即数。
  • MemToReg:选择写入寄存器堆的数据来源。为 1 时选择从主存读取的数据,为 0 时选择算术逻辑单元运算得到的结果。
  • ALUOp:控制算术逻辑单元执行的运算类型。对于 lw/sw 指令,需要使用加法计算有效地址;对于 beq 指令,需要使用减法比较两个寄存器内容是否相等。

6.4 时序与控制#

6.4.1 中央处理器的时序与控制方式#

控制器安排微操作发生的时序主要有以下三种控制方式:

  • 同步控制方式:由统一的系统时钟时序信号进行控制。每个微操作都在固定的时钟节拍内发生。设计简单,但对快速微操作会存在时间浪费。
  • 异步控制方式:没有统一的全局时钟节拍。各部件之间采用“应答/握手”信号进行协调,前一个微操作完成产生的回答信号直接作为下一个微操作的启动信号。速度快,但控制逻辑非常复杂。
  • 联合控制方式:大部分操作采用同步控制,而对难以确定时间的复杂操作(如主存读写、I/O 传输)采用异步等待控制。

6.5 硬布线控制器#

6.5.1 硬布线控制器设计原理#

硬布线控制器是用逻辑门电路组成的组合逻辑网络来直接产生微操作控制信号。其产生的每一个控制信号,在数学上都可以表示为输入信号的布尔函数:

控制信号=f(指令操作码译码信号,时钟节拍信号,状态标志信号,中断请求信号)\text{控制信号} = f(\text{指令操作码译码信号}, \text{时钟节拍信号}, \text{状态标志信号}, \text{中断请求信号})

设计步骤#

  1. 写出微操作流程:写出每一条机器指令在每一个时钟节拍内对应的微操作。
  2. 列出微操作控制信号清单:统计在所有指令的所有执行节拍中,每个控制信号在什么条件下需要使能。
  3. 推导布尔逻辑表达式:将使能条件整理为与或非逻辑公式。例如,寄存器 R1 的输出控制信号 R1oR1_o 在执行取指阶段不需要,而在 ADD R1, R2 的 T3 节拍、SUB R1, R3 的 T3 节拍以及 MOV R1, R4 的 T3 节拍下都需要输出: R1o=ADDT3+SUBT3+MOVT3R1_o = \text{ADD} \cdot T_3 + \text{SUB} \cdot T_3 + \text{MOV} \cdot T_3
  4. 电路化实现:利用门电路、译码器和触发器搭建物理组合逻辑网络。
硬布线控制器的优缺点简答考点
  • 优点:由于控制信号是通过门电路直接物理延迟产生的,速度极快,CPI 接近 1。这是精简指令集微处理器的首选控制器设计。
  • 缺点:控制逻辑非常庞杂、不规整,一旦电路流片完成,要想修改或增加新指令非常困难,必须重新设计和布线。

6.6 微程序控制器#

微程序控制器是为了克服硬布线控制器结构混乱、不易修改的缺点而设计的,其核心思想是用存储程序的原理来实现微操作信号的产生

6.6.1 微程序控制的基本概念#

  • 微命令:控制硬件部件工作的最基本的控制信号(如 PCoPC_o, MARiMAR_i)。
  • 微操作:微命令驱动下部件执行的物理操作。微命令与微操作是一一对应的
  • 微指令:在一个时钟节拍内,中央处理器需要并行发出的一组微命令的集合。微指令通常保存在特殊的存储器中。
  • 微程序:若干条微指令按顺序排列构成的序列。一条机器指令对应一个微程序
  • 控制存储器:位于中央处理器内部的只读存储器,专门用于存放所有机器指令对应的微程序。通常用 CM 表示。
机器指令 (如 ADD) → 对应一个微程序 → 由多条微指令组成 → 每条微指令包含多个微命令

6.6.2 微程序控制器组成原理#

flowchart BT CM[控制存储器 CM] --> uIR[微指令寄存器 uIR] uIR -->|顺序控制字段| uMAR[微地址寄存器 uMAR] IR[指令寄存器操作码] -->|微地址形成部件| uMAR uMAR --> CM uIR -->|操作控制字段| Ctrl[控制信号输出]
  • 控制存储器(CM):保存微程序。
  • 微地址寄存器(uMAR):存放下一条要取出的微指令在控制存储器中的物理地址。
  • 微指令寄存器(uIR):存放当前正在执行的微指令。它由两部分组成:
    • 操作控制字段:直接产生或译码产生微操作控制信号。
    • 顺序控制字段:用于确定下一条微指令的物理地址。
  • 微地址形成部件:用于根据机器指令的操作码,生成该指令对应微程序的入口物理地址。

6.6.3 微指令及其编码方法#

微指令操作控制字段的设计需要决定如何用较短的二进制位数来表示丰富的微命令:

1. 直接表示法#

  • 设计:每一位代表一个微命令。
  • 特点:不需要任何译码,速度极快,并行能力最强;但会导致微指令字长过长,控制存储器容量激增。

2. 字段直接编码法(考点大题)#

  • 设计:将互斥性(即在同一节拍内绝不可能同时使能)的微命令划分在同一个字段中。每个字段单独进行译码。
  • 互斥性划分规则:若一个字段有 kk 位,经过译码后最多可以产生 2k12^k - 1 个有效的微命令,其中留出一个编码状态(通常为全 0)表示该字段不产生任何微命令。
  • 特点:大幅压缩了微指令的字长,但由于引入了解码器延迟,控制信号的产生速度略慢。

3. 混合编码法#

将上述两种方式结合,常用且关键的微命令采用直接表示法以追求速度,其他次要微命令采用字段直接编码法以节省容量。

6.6.4 微程序控制器设计:微指令字长与 CM 容量计算例题#

微指令字长与控制存储器(CM)容量计算(高权重考点大题)

题目描述: 某微程序控制器中,共需产生 48 个微命令。采用字段直接编码法,划分为 6 个互斥字段,每个字段包含的微命令数分别为:8 个、6 个、12 个、5 个、7 个和 4 个。微程序中还有 3 种下地址寻址方式,控制存储器共需容纳 1024 条微指令。

  1. 计算操作控制字段至少需要多少位?
  2. 计算顺序控制字段中的下地址字段需要多少位?
  3. 计算该微控制器的微指令字长至少是多少位?
  4. 该控制存储器(CM)的容量是多少位?

解题分析与步骤

1) 计算操作控制字段位数: 每个互斥字段的位数 xx 必须满足:2x(微命令数+1)2^x \ge (\text{微命令数} + 1)(因为需要预留一个”不发命令”的状态)。

  • 第 1 字段(8 个命令):2x18+1=9    x1=42^{x_1} \ge 8 + 1 = 9 \implies x_1 = 4 位(可表示 16 种状态)。
  • 第 2 字段(6 个命令):2x26+1=7    x2=32^{x_2} \ge 6 + 1 = 7 \implies x_2 = 3 位。
  • 第 3 字段(12 个命令):2x312+1=13    x3=42^{x_3} \ge 12 + 1 = 13 \implies x_3 = 4 位。
  • 第 4 字段(5 个命令):2x45+1=6    x4=32^{x_4} \ge 5 + 1 = 6 \implies x_4 = 3 位。
  • 第 5 字段(7 个命令):2x57+1=8    x5=32^{x_5} \ge 7 + 1 = 8 \implies x_5 = 3 位(注意 23=882^3 = 8 \ge 8,刚好够用)。
  • 第 6 字段(4 个命令):2x64+1=5    x6=32^{x_6} \ge 4 + 1 = 5 \implies x_6 = 3 位。

将各字段相加,得到操作控制字段的总位数为: 操作控制字段=4+3+4+3+3+3=20 位\text{操作控制字段} = 4 + 3 + 4 + 3 + 3 + 3 = 20 \text{ 位}

2) 计算下地址字段位数: 控制存储器共有 1024 条微指令,因此微地址的物理寻址范围为 1024: 1024=2101024 = 2^{10} 故下地址字段需要 10 位

3) 计算微指令字长: 微指令字长由操作控制字段、下地址字段以及寻址控制字段共同组成:

  • 寻址控制字段:共有 3 种下地址寻址方式,由于 21=2<34=222^1 = 2 < 3 \le 4 = 2^2,故需要 2 位微指令字长=20 (操作控制)+10 (下地址)+2 (寻址控制)=32 位\text{微指令字长} = 20 \text{ (操作控制)} + 10 \text{ (下地址)} + 2 \text{ (寻址控制)} = 32 \text{ 位}

4) 计算控制存储器(CM)容量: 控制存储器有 1024 行,每行宽度为 32 位: 容量=1024×32 位=32 Kbit (或计为 32768 位)\text{容量} = 1024 \times 32 \text{ 位} = 32 \text{ Kbit} \text{ (或计为 32768 位)}


6.7 异常与中断处理过程#

异常和中断是打破中央处理器原有顺序执行流程,转去处理紧急特殊事件的硬件处理机制。

6.7.1 异常与中断的精确区别#

  • 异常:是指源自中央处理器内部的异常事件。异常与当前正在执行的指令高度相关,例如:执行除数为 0 指令、浮点运算溢出、检测到非法操作码、缺页异常。
  • 中断:是指源自中央处理器外部的事件,与当前指令没有任何直接关系。例如:外设输入/输出请求、键盘按下、定时器时钟中断。

6.7.2 中断周期与中断响应全流程#

当中断请求发生且中央处理器允许中断时,中央处理器会在**当前指令执行周期结束之后(即指令之间)**进行检测并响应,而非当前指令执行内部的某个时钟节拍。

中断周期的主要硬件流程#

  1. 关中断:将程序状态字中的中断允许标志置为 0,防止新的中断打断当前处理。
  2. 保存断点:将当前的程序计数器 PC 内容保存到物理堆栈或特定的异常保存寄存器中。
  3. 寻址入口:转去执行中断服务程序。中央处理器通常通过硬件产生一个中断类型号,然后通过中断向量表查询并获取该中断服务程序的起始物理地址,最终将其送入 PC。
异常与中断的透明性分析

缺页异常通常对应用程序员是透明的(即程序员无法感知,由系统自动完成页面换入);而普通中断对应用程序也是透明的,其保存和恢复现场全部由操作系统内核接管。


6.8 本章易错点警示与重点回顾#

在备考和做题时,务必注意防范以下几个理解陷阱:

PC 与普通数据访存地址的区分

在本课程常见的数据通路模型中,程序计数器 PC 主要用于指出下一条待取指令的地址。普通数据访存的有效地址通常由通用寄存器、指令地址字段或 ALU 计算结果提供,再送入 MAR;不要把取指阶段的 PC 与执行阶段的数据地址来源混为一谈。

微程序控制存储器与主存的物理区别
  • 主存储器:位于中央处理器外部,用于存放用户的机器指令程序和数据,由程序员编写,可读可写。
  • 控制存储器:位于中央处理器内部的控制器中,用于存放微程序,由芯片设计厂商固化好,对普通程序员完全透明。
硬布线与微程序控制器的设计本质

硬布线控制器是用硬件组合门电路直接产生控制使能信号,属于硬联线设计;微程序控制器则是通过读取只读存储器中的微指令,将其送入微指令寄存器进行译码产生控制信号,属于存储程序设计。


6.9 历年真题与易错题集#

一、选择题#

Q1 (计组 2019 秋 18 级测试 选择题)#

题干:冯·诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU区分它们的依据是______。

A. 指令操作码的译码结果 B. 指令和数据的寻址方式 C. 指令周期的不同阶段 D. 指令和数据所在的存储单元

答案:C

答案:C

解析

  • A [错误]:指令操作码的译码发生在取指之后的译码阶段,此时 CPU 已经将该二进制代码作为指令取出了,因此译码结果不能作为区分指令和数据的依据。
  • B [错误]:寻址方式是指令中用于指明操作数地址或下一条指令地址的方法,它不能用于在从存储器取出信息时区分该信息是指令还是数据。
  • C [正确]:在冯·诺依曼计算机中,指令和数据存放在同一存储器中。CPU 区分它们的依据是指令周期的不同阶段,在取指阶段从存储器中取出的二进制代码被视为指令,在执行阶段从存储器中取出的二进制代码被视为数据。
  • D [错误]:在冯·诺依曼结构中,指令和数据可以混合存放在同一个存储器中,并且可以占用相邻的存储单元,因此 CPU 无法仅仅根据信息所在的存储单元地址来区分它是指令还是数据。

Q2 (计组 2019 秋 18 级测试 选择题)#

题干:相对于微程序控制器,硬布线控制器的特点是______。

A. 指令执行速度慢,指令的修改和扩展容易 B. 指令执行速度慢,指令的修改和扩展难 C. 指令执行速度快,指令的修改和扩展容易 D. 指令执行速度快,指令的修改和扩展难

答案:D

答案:D

解析

  • A [错误]:硬布线控制器的指令执行速度快,且指令的修改和扩展极其困难。
  • B [错误]:硬布线控制器的指令执行速度快,而不是慢。
  • C [错误]:硬布线控制器的指令修改和扩展十分困难,需要重新设计电路并重新物理布线。
  • D [正确]:硬布线控制器利用组合逻辑电路直接产生控制信号,不需要访存获取微指令,因而执行速度极快;但由于其电路结构规整性差,一旦设计完成,要修改或扩展指令就非常困难。

Q3 (计组 2019 秋 18 级测试 选择题)#

题干:指令译码器进行译码的是______。

A. 整条指令 B. 指令的操作码字段 C. 指令的地址码字段 D. 指令的操作数字段

答案:B

答案:B

解析

  • A [错误]:整条指令包含操作码字段和地址码字段,指令译码器仅对其中的操作码字段进行译码,而地址码字段则送往地址生成逻辑或寄存器选择逻辑,不需要译码器进行操作码译码。
  • B [正确]:指令译码器的核心功能是对指令的操作码字段进行译码,识别当前指令的功能类型,从而控制产生相应的操作控制信号。
  • C [错误]:指令的地址码字段用于指出操作数的地址或寻址方式,通常由寻址控制逻辑进行解析,而不是由指令译码器进行译码。
  • D [错误]:操作数字段如果存在于指令中,也是直接送往执行部件或作为地址,不需要经过指令译码器译码。

Q4 (计组 2019 秋 18 级测试 选择题)#

题干:微程序存储在______中。

A. 主存 B. 接口 C. 控制存储器 D. 磁盘

答案:C

答案:C

解析

  • A [错误]:主存用于存放当前正在运行的用户程序 and 数据,CPU通过总线访问主存,微程序不存放在主存中。
  • B [错误]:接口是用于连接外设与系统总线的通道,不存放微程序。
  • C [正确]:微程序是由微指令组成的序列,每一条机器指令对应一个微程序。微程序通常存放在 CPU 内部的控制存储器中,物理上常用只读存储器实现。
  • D [错误]:磁盘是外存储器,用于长期保存文件和数据,CPU 无法直接在执行机器指令时从磁盘读取微程序。

Q5 (计组 2019 秋 18 级测试 选择题)#

题干:中断响应发生的时间是______。

A. 一条机器指令执行开始 B. 一条机器指令执行中间 C. 一条机器指令执行之末 D. 一条机器指令执行的任何时刻

答案:C

答案:C

解析

  • A [错误]:在机器指令开始执行时,CPU 尚未完成当前指令的操作,此时不能响应中断。
  • B [错误]:如果允许在指令执行中间打断并响应中断,会导致 CPU 内部临时状态保存极其复杂,且很难恢复断点,因此除了极为特殊的异常(如缺页)外,中断不在指令执行中间响应。
  • C [正确]:为了保证程序状态的完整性与断点保存的精确性,CPU 只能在当前执行的一条机器指令执行之末(即指令周期的最后一个时钟节拍)去检测中断源并响应中断。
  • D [错误]:CPU 响应中断的时机受到严格限制,并不是在指令执行的任何时刻都可以响应的。

Q6 (2020-2021 第 2 学期 A 选择题)#

题干:下列关于 CPU 存取速度的比较中,正确的是______。

A. Cache > 内存 > 寄存器 B. Cache > 寄存器 > 内存 C. 寄存器 > Cache > 内存 D. 寄存器 > 内存 > Cache

答案:C

答案:C

解析

  • A [错误]:寄存器是 CPU 内部最快的存储部件,存取速度远快于 Cache 和内存。
  • B [错误]:寄存器的存取速度快于 Cache,顺序排列错误。
  • C [正确]:寄存器直接集成在 CPU 内部,访问延迟通常在 1 个时钟周期以内,速度最快;Cache 采用快速的静态随机存储器芯片制作,速度次之;外部内存(主存)通常采用动态随机存储器芯片,速度最慢。
  • D [错误]:内存的速度远慢于 Cache,顺序排列错误。

Q7 (2020-2021 第 2 学期 A 选择题)#

题干:一个 mm 段流水线稳定时的 CPU 吞吐能力,与 mm 个并行部件的 CPU 的吞吐能力相比______。

A. 具有同等水平的吞吐能力 B. 不具备同等水平的吞吐能力 C. 吞吐能力大于前者的吞吐能力 D. 吞吐能力小于前者的吞吐能力

答案:A

答案:A

解析

  • A [正确]:在理想满载且无流水线冲突的情况下,m 段流水线在稳定时每个时钟周期流出一条指令。而含有 m 个完全并行部件的 CPU,如果其协同机制是每 m 个周期同时流出 m 条指令,平均下来也是每个时钟周期流出 1 条。因此两者的吞吐能力具有同等水平。
  • B [错误]:两者在理想状态下具有同等水平的吞吐能力。
  • C [错误]:流水线满载时的极限吞吐率不可能大于并行部件协同工作的总吞吐率。
  • D [错误]:流水线的吞吐能力没有小于并行部件的吞吐能力。

Q8 (2020-2021 第 2 学期 A 选择题)#

题干:某计算机的指令流水线由 4 个功能段组成,指令流经各功能段之间的时间(忽略各功能段之间的缓存时间)分别为 90ns、80ns、70ns 和 60ns,则该计算机的 CPU 时钟周期至少为______。

A. 90ns B. 80ns C. 70ns D. 60ns

答案:A

答案:A

解析

  • A [正确]:流水线的时钟周期必须大于或等于各子过程(功能段)中所需时间最长的那个子过程的时间。因为如果时钟周期小于最长功能段的执行时间,该功能段将无法在一个时钟周期内完成其工作。本题中各功能段的最长时间为 90ns,因此该流水线的时钟周期至少为 90ns。
  • B [错误]:如果时钟周期设为 80ns,那么耗时 90ns 的功能段无法在一个时钟周期内完成。
  • C [错误]:70ns 小于最慢段的 90ns,无法满足流水线正常工作的时序要求。
  • D [错误]:60ns 是最短功能段的执行时间,远小于 90ns,如果作为时钟周期,最慢段将无法工作。

Q9 (2020-2021 第二学期 B 选择题)#

题干:计算机操作的最小单位时间是______。

A. 时钟周期 B. 指令周期 C. CPU 周期 D. 执行周期

答案:A

答案:A

解析

  • A [正确]:时钟周期是计算机操作的最小单位时间,也是 CPU 硬件逻辑工作的最基本时间单位。
  • B [错误]:指令周期是取出并执行一条指令所需的全部时间,通常由若干个机器周期组成。
  • C [错误]:CPU 周期又称机器周期,通常由多个时钟周期组成,是完成一个基本操作所需的时间。
  • D [错误]:执行周期是指令周期中用于执行指令操作的阶段,通常包含多个时钟周期。

Q10 (2020-2021 第二学期 B 选择题)#

题干:MIPS 指令集没有______类指令。

A. I 型指令 B. R 型指令 C. J 型指令 D. M 型指令

答案:D

答案:D

解析

  • A [错误]:I 型指令是立即数型指令,是 MIPS 指令集的三大基本指令格式之一。
  • B [错误]:R 型指令是寄存器型指令,是 MIPS 指令集的三大基本指令格式之一。
  • C [错误]:J 型指令是无条件跳转型指令,是 MIPS 指令集的三大基本指令格式之一。
  • D [正确]:MIPS 指令集只包含 R 型、I 型和 J 型三类指令,不存在 M 型指令。

Q11 (2020-2021 第二学期 B 选择题)#

题干:下列选项中,能引起外部中断的事件是______。

A. 键盘输入 B. 除数为 0 C. 浮点运算下溢 D. 访存缺页

答案:A

答案:A

解析

  • A [正确]:键盘输入属于外部设备发出的中断请求,是由 CPU 外部事件引起的,属于外部中断。
  • B [错误]:除数为 0 属于 CPU 内部在执行指令时发生的算术出错,是内部异常。
  • C [错误]:浮点运算下溢属于 CPU 内部在执行浮点指令时发生的数据溢出异常,是内部异常。
  • D [错误]:访存缺页属于 CPU 内部访存时由于目标页面不在主存中而引起的异常,是内部异常。

Q12 (2022-2023-2 考试 选择题)#

题干:直接寻址的无条件转移指令的功能是将指令中的地址码送入______。

A. 程序计数器 PC B. 累加器 ACC C. 指令寄存器 IR D. 地址寄存器 MAR

答案:A

答案:A

解析

  • A [正确]:PC 用于存放下一条将要执行的指令的地址。无条件转移指令用于强行改变程序执行顺序,因此直接寻址下的目标转移地址需要直接送入 PC。
  • B [错误]:累加器主要用于存放操作数或算术逻辑运算结果,与保存程序跳转地址无关。
  • C [错误]:指令寄存器用于存放当前正在执行的指令,而不是转移目标地址。
  • D [错误]:存储器地址寄存器用于存放 CPU 将要访问的内存单元物理地址,转移指令的目标地址需送入 PC 来控制后续取指。

Q13 (2022-2023-2 考试 选择题)#

题干:某计算机的控制器采用微程序控制方式,微指令的操作控制字段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7、3、10、5 和 8 个微命令,则操作控制字段至少有______。

A. 5 位 B. 6 位 C. 16 位 D. 32 位

答案:C

答案:C

解析

  • A [错误]:5 位不能满足全部互斥类微命令的编码需求,例如仅包含 10 个微命令的互斥类就需要 4 位。
  • B [错误]:若采用字段直接编码法,每个互斥类中除了微命令之外,都需要额外预留一个状态表示不发出任何微命令(即全 0 状态)。因此五个互斥类所需位数计算如下:
    • 第一类包含 7 个微命令,需满足 2x17+1=82^{x_1} \ge 7 + 1 = 8,得 x1=3x_1 = 3
    • 第二类包含 3 个微命令,需满足 2x23+1=42^{x_2} \ge 3 + 1 = 4,得 x2=2x_2 = 2
    • 第三类包含 10 个微命令,需满足 2x310+1=112^{x_3} \ge 10 + 1 = 11,得 x3=4x_3 = 4
    • 第四类包含 5 个微命令,需满足 2x45+1=62^{x_4} \ge 5 + 1 = 6,得 x4=3x_4 = 3
    • 第五类包含 8 个微命令,需满足 2x58+1=92^{x_5} \ge 8 + 1 = 9,得 x5=4x_5 = 4。 总位数为 3+2+4+3+4=163 + 2 + 4 + 3 + 4 = 16 位,6 位远不能满足要求。
  • C [正确]:根据字段直接编码法,各互斥类分别需要 3、2、4、3 和 4 位,操作控制字段总位数至少为 3+2+4+3+4=163 + 2 + 4 + 3 + 4 = 16 位。
  • D [错误]:32 位不是本题计算得出的最小位数,如果是直接表示法,33 个微命令在不划分互斥类且不考虑编码的情况下可能需要更多位数。

Q14 (2022-2023-2 考试 选择题)#

题干:某计算机的指令流水线由 4 个功能段组成,指令流经各功能段之间的时间分别为 95ns、80ns、70ns 和 60ns,则该计算机的 CPU 时钟周期至少是______。

A. 95ns B. 80ns C. 70ns D. 60ns

答案:A

答案:A

解析

  • A [正确]:流水线时钟周期受限于执行时间最长的流水段。该流水线中最慢的功能段耗时 95ns,因此 CPU 时钟周期至少需要 95ns,才能保证该功能段能在单个时钟周期内顺利完成。
  • B [错误]:若时钟周期为 80ns,则耗时 95ns 的最慢功能段无法在单个时钟周期内完成微操作。
  • C [错误]:70ns 小于最慢功能段的执行时间 95ns,无法保证流水线各阶段的正常运行。
  • D [错误]:60ns 是最短功能段的执行时间,若时钟周期为 60ns,前三个功能段均无法正常完成工作。

Q15 (2022-2023-2 考试 选择题)#

题干:下列关于缺页处理的叙述中,错误的是______。

A. 缺页是在地址转换时 CPU 检测到的一种异常 B. 缺页处理由操作系统提供的缺页处理程序来完成 C. 缺页处理程序根据页故障地址从外存读入所缺失的页 D. 缺页处理完成后回到发生缺页的指令的下一条指令执行

答案:D

答案:D

解析

  • A [错误]:缺页是在 CPU 进行虚实地址转换时,发现页表项的存在位为 0(即页面不在内存中)而检测到的一种内部异常,该叙述正确。
  • B [错误]:缺页处理属于操作系统的硬件中断/异常处理机制,是由操作系统提供的专门缺页处理程序来完成的,该叙述正确。
  • C [错误]:当缺页发生时,缺页处理程序会读取导致页故障的虚拟地址,并将该地址对应的物理页框从磁盘外存中调入主存,该叙述正确。
  • D [正确]:缺页属于一种故障型的异常,处理完毕后,CPU 必须重新执行当前发生缺页的那条访存指令本身(因为之前访存失败了,需要重新访存读取数据),而不是执行下一条指令。因此该叙述错误。

Q16 (南阳理工学院 C 卷 选择题)#

题干:算术逻辑单元(ALU)的核心功能部件是______。

A. 累加寄存器 B. 移位器 C. 加法器 D. 指令寄存器

答案:C

答案:C

解析

  • A [错误]:累加寄存器是 CPU 内部用于存放操作数和运算结果的暂存寄存器,属于寄存器组,不是 ALU 的运算核心。
  • B [错误]:移位器用于实现数据的左移和右移,虽然是 ALU 的组成部分,但它不是最核心的功能部件。
  • C [正确]:算术加法是所有复杂算术运算(如乘法、除法)和减法运算的基础。在逻辑电路中,加法器是整个算术逻辑单元中最核心的执行部件。
  • D [错误]:指令寄存器用于存放当前正在执行的机器指令,属于控制器部件,不属于 ALU 运算部件。

Q17 (南阳理工学院 C 卷 选择题)#

题干:下列指令中不属于程序控制指令的是______。

A. 无条件转移指令 B. 条件转移指令 C. 中断隐指令 D. 循环指令

答案:C

答案:C

解析

  • A [错误]:无条件转移指令能够显式地改变程序的控制流,强制跳转到目标地址执行,属于程序控制指令。
  • B [错误]:条件转移指令根据特定的状态条件决定是否发生控制流跳转,属于程序控制指令。
  • C [正确]:中断隐指令是 CPU 硬件在响应中断时自动执行的一系列操作,它并不是一条可以在指令集中由程序员显式编写执行的机器指令,因此不属于传统程序控制指令.
  • D [错误]:循环指令用于实现程序段的循环跳转控制,属于程序控制指令。

Q18 (南阳理工学院 C 卷 选择题)#

题干:条件转移指令执行时所依据的条件来自于______。

A. 指令寄存器 B. 标志寄存器 C. 程序计数器 D. 地址寄存器

答案:B

答案:B

解析

  • A [错误]:指令寄存器用于存放当前正在执行的指令编码,不保存运算结果的状态标志。
  • B [正确]:条件转移指令所依据的转移条件(如结果为 0、结果为负、溢出等)是先前算术逻辑运算中产生的标志位,这些标志位保存在标志寄存器中。
  • C [错误]:程序计数器用于指向下一条将要执行的指令地址,不保存条件状态信息。
  • D [错误]:地址寄存器保存的是当前 CPU 读写内存的物理单元地址,与转移条件的判断无关。

Q19 (南阳理工学院 C 卷 选择题)#

题干:微程序控制器属于______的一部分。

A. 主存 B. 外存 C. CPU D. 高速缓存

答案:C

答案:C

解析

  • A [错误]:主存是外部物理存储器,用于存放当前正在执行的程序和数据,微程序控制器是处理芯片内的核心逻辑控制器件,不属于主存。
  • B [错误]:外存是外部辅助存储设备,不属于芯片内部的微程序控制器。
  • C [正确]:微程序控制器是用来控制机器指令执行的 CPU 控制部件,集成在处理芯片内部,是 CPU 的一个核心子系统。
  • D [错误]:高速缓存是位于主存与 CPU 寄存器之间的高速存储部件,不是微程序控制器。

Q20 (2020-2021 第二学期 B 选择题)#

题干:已知字类型数组 A[4] 的首地址为 A,那么 A[3] 的存储地址是______。

A. A B. A + 4 C. A + 8 D. A + 12

答案:D

答案:D

解析

  • A [错误]:A 地址对应的是数组首元素 A[0] 的存储地址。
  • B [错误]:A + 4 对应的是数组第二个元素 A[1] 的存储地址。
  • C [错误]:A + 8 对应的是数组第三个元素 A[2] 的存储地址。
  • D [正确]:在按字节编址的存储器中,一个“字”类型的数据占用 4 字节的存储空间。因此数组下标为 3 的元素 A[3] 的偏移字节数为 3×4=123 \times 4 = 12 字节,其存储地址为 A+12A + 12

二、填空题与判断题#

Q21 (计组 2019 秋 18 级测试 填空题)#

题干:当前的 CPU 通常由运算器、控制器、______构成。

解析

为了减少中央处理器访问外部慢速主存的开销,现代微处理器通常将高速缓冲存储器 Cache 直接集成在芯片内部。因此现代 CPU 主要由运算器、控制器和 Cache 组成。

答案:Cache。


Q22 (2020-2021 第 2 学期 A 填空题)#

题干:机器指令是由______码和地址码两部分组成。

解析

一条机器指令在结构上主要分为指明“做什么操作”的操作码以及指明“对谁操作/数据在哪里”的地址码两部分。

答案:操作。


Q23 (南阳理工学院 C 卷 填空题)#

题干:CPU 主要由运算器和______组成。

解析

中央处理器主要由负责数据运算与加工的物理数据通路部件——运算器,以及负责按时序产生操作控制信号的决策部件——控制器组成。

答案:控制器。


Q24 (南阳理工学院 C 卷 填空题)#

题干:算术逻辑单元的功能包括算术运算与______运算。

解析

算术逻辑单元 ALU 支持加、减等算术运算,同时也支持与、或、非、异或等逻辑运算。

答案:逻辑。


Q25 (2022-2023-2 考试 判断题)#

题干:RISC 普遍采用微程序控制器。( )

解析

RISC 指令系统结构简单、格式规整、执行时间多为一个周期,因此普遍采用硬件电路直接产生的硬布线控制器(组合逻辑控制器)以获得最高速度;而微程序控制器常用于复杂的 CISC 指令集系统。

答案:错。


Q26 (2022-2023-2 考试 判断题)#

题干:指令采用不同寻址方式的目的是缩短指令字长,扩大寻址空间,提高编程灵活性。( )

解析

指令系统设计时引入寻址方式,可以用较短的指令地址码字段结合基址、变址等方式指向极广阔的主存范围,从而达到缩短字长、扩大寻址空间并使编程支持循环和重定位的目的。

答案:对。


Q27 (2022-2023-2 考试 判断题)#

题干:主存在 CPU 外,控制存储器在 CPU 内。( )

解析

主存是存放用户指令和数据的系统随机存储器,通常位于芯片外部的主板插槽上;而控制存储器 CM 是微程序控制器中用来存放微程序的只读存储器,集成在中央处理器内部。

答案:对。


Q28 (2022-2023-2 考试 判断题)#

题干:在冯·诺依曼结构计算机中,程序的功能都通过中央处理器执行指令实现的。( )

解析

冯·诺依曼结构的核心就是存储程序并自动控制,程序的功能被分解成一条条机器指令保存在主存中,由 CPU 按逻辑顺序取出并执行。

答案:对。


Q29 (南阳理工学院 C 卷 判断题)#

题干:取指操作是控制器固有的功能,不需要在操作码的控制下完成。( )

解析

公共取指周期是所有机器指令共有且必须经历的首要时序阶段,由时序电路自动控制。此时 CPU 还没有取出指令,无法对操作码进行译码,因此该操作不需要受当前指令操作码的控制。

答案:对。


Q30 (2022-2023-2 考试 判断题)#

题干:在 I/O 接口中,采用统一编址方式时,CPU 不能用访存指令访问 I/O 端口。( )

解析

统一编址方式是指将 I/O 端口地址划归主存物理地址空间的一部分,CPU 访问 I/O 端口就和访问普通主存单元完全一致,因此必须使用访存指令(如加载/存储指令)来进行访问。

答案:错。


Q31 (2022-2023-2 考试 判断题)#

题干:双端口存储器可以同时访问同一区间、同一单元。( )

解析

双端口存储器具有两套相互独立的读写控制线路,允许在同一时刻物理访问主存。只要两个端口不是同时对同一个单元进行写入操作,就允许同时访问。若两个端口同时对同一个单元写入,或者一个写入一个读取,则会发生写入冲突,必须由控制或仲裁逻辑(如 BUSY 信号)进行限制。因此,在没有写入冲突(或存在仲裁机制)的情况下,该说法是正确的。

答案:对。


Q32 (2022-2023-2 考试 判断题)#

题干:半导体 RAM 信息可读可写,且断电后仍能保持记忆。( )

解析

半导体随机存取存储器 RAM 属于易失性存储器,虽然信息可读可写,但在断电后其内部保存的数据会立即消失。

答案:错。


Q33 (2022-2023-2 考试 判断题)#

题干:采用变形补码进行加减运算可以避免溢出。( )

解析

采用双符号位的变形补码只能起到检测溢出的作用(运算后符号位为 01 代表正溢出,10 代表负溢出),而不能物理上阻止或避免溢出的发生。

答案:错。


三、简答题与综合分析题#

Q34 (计组 2019 秋 18 级测试 简答题)#

题干:画出指令周期的流程图。

解析

一个完整的指令周期主要包含四个基本的工作阶段。当 CPU 处于取指周期时,从主存取出指令并自动累加 PC;如果有间址寻址,则通过间址周期获取操作数的有效地址;执行周期取出操作数并送入 ALU 运算写回;若在执行周期末尾检测到中断请求且允许中断,则进入中断周期保存断点。

答案: 指令周期流程图设计如下:

开始
┌─────┴─────┐
│ 取指周期 │ ───> 从主存获取指令,PC 自增
└─────┬─────┘
┌─────┴─────┐
│ 间址周期 │ ───> (可选) 若采用间接寻址,通过访存获取有效地址
└─────┬─────┘
┌─────┴─────┐
│ 执行周期 │ ───> 取出操作数,ALU 运算并写回结果
└─────┬─────┘
┌─────┴─────┐
│ 中断周期 │ ───> (可选) 若检测到中断请求,关中断并保存断点
└─────┬─────┘
结束

Q35 (计组 2019 秋 18 级测试 简答题)#

题干:简述硬布线和微程序控制器的区别。

解析

这是考查 CPU 控制部件两种核心实现方案的技术对比。

  • 硬布线控制器:控制信号是由逻辑门电路和触发器搭建的庞大组合时序电路直接产生。其最大优点是执行速度极快;其缺点是电路结构非常不规整,后期修改指令或增加新指令非常困难。
  • 微程序控制器:控制信号是以微指令的形式固化在只读控制存储器 CM 中,通过读取微程序来产生。其优点是结构清晰规整,通过修改微程序可轻易扩展新指令;其缺点是每次执行需要读取 CM,增加了存取延迟,执行速度较慢。

答案: 硬布线与微程序控制器核心区别汇总如下:

对比维度硬布线控制器微程序控制器
工作原理由门电路直接根据当前时序与状态生成通过读取控制存储器 CM 中的微指令解释执行
指令执行速度极快,延迟小,CPI 接近 1较慢,每次读取微指令需要耗费时钟节拍
设计规整度不规整,布线非常复杂混乱结构极规整,易于系统调试与模块化设计
可扩展性难,流片完成后无法修改硬件布线易,只需向控制存储器增写或修改微程序
典型适用场景精简指令集(RISC)微处理器复杂指令集(CISC)处理器

Q36 (2020-2021 第 2 学期 A 简答题)#

题干:请简述影响流水线的三种相关。

解析

指令流水线在重叠执行指令时,由于指令间的关联以及硬件资源限制,会引发流水线冲突。

  • 结构相关:又称资源相关,是指多条指令在同一时钟周期内争用同一个功能硬件部件引发的冲突。
  • 数据相关:后继指令需要用到前驱指令尚未写回的运算结果,导致数据无法及时读取的冲突。
  • 控制相关:遇到转移、分支、函数调用或中断指令改变 PC 值时,流水线已经提前取入的后继指令失效引起的冲突。

答案: 影响指令流水线的三种相关如下:

  1. 结构相关:多条指令在同一周期内争用相同资源(例如单总线结构下同时访问主存取指令与读写操作数)。
  2. 数据相关:后继指令的输入依赖前驱指令的输出(例如 add $t0, $t1, $t2 后紧跟 sub $t3, $t0, $t4,需等待 $t0 写入)。
  3. 控制相关:由于分支转移、跳转或中断等引起程序执行方向改变,使得流水线中已预取的指令无效。

Q37 (2020-2021 第 2 学期 A 简答题)#

题干:已知寄存器 $s0 = 0x10000000,采用汇编指令实现以下功能:

  1. 将地址为 0x10000000 的字数据读入到寄存器 $t0
  2. 将地址为 0x10000000 的无符号字节数据读入到寄存器 $t0

解析

  • 读取字数据(32位数据)在 MIPS 中使用字加载指令 lw
  • 读取无符号字节数据(8位数据且不进行符号扩展)在 MIPS 中使用无符号字节加载指令 lbu

答案

  1. lw $t0, 0($s0)
  2. lbu $t0, 0($s0)

Q38 (2020-2021 第 2 学期 A 简答题)#

题干:写出下表 MIPS 汇编指令对应的 C 语言语句;假设寄存器 $a0$a1$a2 对应 C 语言中的变量 efg,整型数组 A 的起始地址放在 $s0

汇编指令(指令序列)C 语言语句
add $a0, $a1, $a2
add $a0, $a0, $a2
addi $a0, $a0, 1
sub $a0, $0, $a0
add $a0, $a0, 1
lw $s0, 4($s0)

解析

  • add $a0, $a1, $a2$a0 = $a1 + $a2,对应 C 语言 e = f + g;
  • add $a0, $a0, $a2$a0 = $a0 + $a2,对应 C 语言 e = e + g;
  • addi $a0, $a0, 1$a0 = $a0 + 1,对应 C 语言 e = e + 1;(或 e++;)。
  • sub $a0, $0, $a0 使 $a0 = 0 - $a0 = -e,紧跟 add $a0, $a0, 1 使 $a0 = -e + 1 = 1 - e,对应 C 语言 e = 1 - e;
  • lw $s0, 4($s0) 从以 $s0 为首地址的数组偏移 4 字节(1 个整型元素宽度)处读取一个字,即读取出 A[1] 的值并写入到寄存器 $s0。若只描述寄存器效果,应写作“寄存器 $s0 得到 A[1] 的值”,不要把 $s0 当作 C 语言变量名。

答案: C 语言语句填写如下:

  • e = f + g;
  • e = e + g;
  • e = e + 1;
  • e = 1 - e;
  • 寄存器 $s0 得到 A[1] 的值。

Q39 (南阳理工学院 C 卷 综合设计题)#

题干:某机有 80 条指令,平均每条指令由 5 条微指令组成(包括取指微指令),其中有一条取指微指令为所有指令公用的。已知微指令长度为 32 位,请估算控制存储器 CM 容量。

解析

  • 控制存储器用于存放全部微程序。每条指令都有其专属的微指令序列,同时它们共享公共的取指操作。
  • 本题中,每条指令包含 5 条微指令,其中包括 1 条公共的取指微指令。因此,每条指令专用的微指令条数为:51=45 - 1 = 4 条。
  • 80 条指令的专用微指令总和为:80×4=32080 \times 4 = 320 条。
  • 加上公共的那 1 条取指微指令,CM 中存放的微指令总条数为:320+1=321320 + 1 = 321 条。
  • 每条微指令字长为 32 位,故 CM 总物理容量至少为:321×32=10272321 \times 32 = 10272 位。

答案

  1. 每条指令专用的微指令条数为:51=45 - 1 = 4 条。
  2. 控制存储器内存储微指令的总条数为:80×4+1=32180 \times 4 + 1 = 321 条。
  3. 控制存储器 CM 估算容量为:321×32 位=10272 位321 \times 32 \text{ 位} = 10272 \text{ 位}

Q40 (2022-2023-2 考试 综合设计题)#

题干:某 CPU 数据通路如下图所示,其中 AC 为累加器,状态寄存器保存指令执行过程中的状态。abcd 为 4 个特殊寄存器(PC、AR/MAR、IR 和 DR/MDR 中的某一个)。

CPU数据通路

  1. 根据 CPU 的功能和结构,说明图中 abcd 4 个寄存器分别对应哪个寄存器?
  2. 简述 LDA address 的数据通路(功能为将主存 address 单元的内容送入 AC 中)。

解析

  1. 数据通路分析:
    • 寄存器 a 连在主存数据端口与累加器 AC 之间,负责暂存读出/写入主存的数据,故为 DR / MDR
    • 寄存器 b 的输出引脚连接在主存地址输入端上,负责提供物理访存地址,故为 AR / MAR
    • 寄存器 c 从数据总线获取数据,并向控制部件(译码器)提供输入,故为 IR
    • 寄存器 d 发出地址,且与 PC 自增电路相连,故为 PC
  2. LDA address 执行时:
    • 取指阶段:通过 PC 给 MAR 地址,读出指令送 MDR,再送 IR 译码,PC 自增指向下一条指令。
    • 执行阶段:将指令寄存器 IR 中的地址字段送入 MAR,主存读出该地址处的操作数送 MDR,最后写入累加器 AC。

答案

  1. 寄存器对应关系如下:
    • aDR / MDR (数据寄存器)
    • bAR / MAR (地址寄存器)
    • cIR (指令寄存器)
    • dPC (程序计数器)
  2. LDA address 指令的物理数据通路步骤:
    • 取指阶段
      1. PC → AR:当前指令地址通过内部总线送至地址寄存器。
      2. M[AR] → DR:启动主存读使能,取出指令放入数据寄存器。
      3. DR → IR:将当前取出的指令送入指令寄存器。
      4. PC + 1 → PC:程序计数器自动完成累加。
    • 执行阶段: 5. IR(address) → AR:指令中的操作数地址字段 address 被送入地址寄存器。 6. M[AR] → DR:启动主存读使能,将主存该单元内的数据读出并送入数据寄存器。 7. DR → AC:将数据寄存器中的数据送入累加器 AC 中,操作完成。

Q41 (计组 2019 秋 18 级测试 综合设计题)#

题干:如下图所示为双总线结构机器的数据通路:

双总线数据通路

其中,IR 为指令寄存器,PC 为程序计数器(具有自增功能),M 为主存(受 R/W 信号控制),AR 为地址寄存器,DR 为数据缓冲寄存器,ALU 有加、减控制信号决定完成何种操作,控制信号 G 控制一个门电路,连接在 A、B 双总线之间。 写出 SUB R1, R0 指令(该指令完成 (R1) - (R0) -> R1 的功能操作)的指令周期流程图,假设该指令的地址已放入 PC 中,并列出相应的微操作控制信号序列。

解析

  • 取指阶段:将 PC 经门电路 G 送入 AR(控制信号 PCo, G, ARi);发出读命令从主存读出指令到 DR(控制信号 Read, DRi);最后将 DR 内容通过门电路 G 送入 IR 译码(控制信号 DRo, G, IRi)。
  • 执行阶段:将操作数 R1 通过门电路 G 送入暂存器 X(控制信号 R1o, G, Xi);将操作数 R0 通过门电路 G 送入暂存器 Y(控制信号 R0o, G, Yi);最后调用 ALU 减法控制并打开 ALU 输出门将结果送上总线,由控制信号写回 R1(控制信号 ALUsub, G, R1i)。

答案SUB R1, R0 的指令周期流程图与对应的微操作控制信号序列如下:

阶段步骤物理微操作功能相应的微操作控制信号序列
取指周期1(PC) → ARPCo, G, ARi
2M → DR, (PC) + 1 → PCRead, DRi
3DR → IRDRo, G, IRi
执行周期4(R1) → XR1o, G, Xi
5(R0) → YR0o, G, Yi
6(X) - (Y) → R1ALUsub, G, R1i

习题6:课后习题详解#

以下按题目顺序给出题干与详细答案解析。

习题截图1 习题截图2 习题截图3 习题截图4


习题6.1 解释下列名词#

题干:

解释下列名词:指令周期、数据通路、机器周期、时钟周期、同步控制、异步控制、单周期处理器、多周期处理器、时序发生器、硬布线控制器、微命令、微操作、公操作、相容性微命令、互斥性微命令、微指令、微程序、取指微程序、微指令周期、微程序控制器、控制存储器、水平型微指令、垂直型微指令、指令异常、故障异常、自陷异常、中断响应程序。

解析

  1. 指令周期:CPU 从主存取出一条指令、分析指令并完成该指令功能所经历的全部时间。一个指令周期通常包括取指、译码、取数、执行、访存、写回、中断检测等阶段,具体阶段取决于指令类型和处理器实现方式。
  2. 数据通路:CPU 内部由寄存器、ALU、多路选择器、总线、存储器接口等部件及其互连组成的数据传送和运算路径。控制器通过控制信号决定数据在数据通路中的流向和操作。
  3. 机器周期:CPU 完成一个相对独立基本操作所需的时间段,又称 CPU 周期。例如取指周期、间址周期、执行周期、访存周期等都可以看成机器周期。一个指令周期可由一个或多个机器周期组成。
  4. 时钟周期:处理器时钟信号相邻有效沿之间的时间间隔,是同步时序系统中最基本的时间单位。时钟周期的倒数是时钟频率。
  5. 同步控制:所有微操作都由统一时钟节拍控制,在规定的时钟边沿或节拍内完成。它实现简单、易于设计,但必须按最慢操作确定时钟周期。
  6. 异步控制:各操作之间不依赖统一时钟节拍,而通过”请求—应答”等握手机制协调。它可适应不同操作延迟,但控制逻辑复杂。
  7. 单周期处理器:每条机器指令都在一个时钟周期内完成的处理器。其 CPI 为 1,但时钟周期必须足够长,以适应最慢指令的最长数据通路延迟。
  8. 多周期处理器:一条机器指令被分成多个步骤,在多个较短时钟周期内完成。不同指令可占用不同周期数,硬件部件可以在不同周期复用。
  9. 时序发生器:产生机器周期信号、节拍信号、时钟脉冲等时序信号的电路,用于协调 CPU 内部各微操作的先后关系。
  10. 硬布线控制器:用组合逻辑电路和时序逻辑电路直接产生控制信号的控制器。它速度快,但设计和修改复杂。
  11. 微命令:控制器发出的、控制某个微操作执行的控制信号。例如 PCoutPC_{out}MARinMAR_{in}、MemRead、RegWrite 等。
  12. 微操作:CPU 内部在一个节拍或微周期内完成的基本操作。例如 PCMARPC \to MARM[MAR]MDRM[MAR] \to MDRR1+R2R3R1 + R2 \to R3
  13. 公操作:多条指令执行过程中共同需要的操作。例如取指操作通常是所有机器指令共有的公操作。
  14. 相容性微命令:可以在同一微周期内同时发出的微命令。例如两个操作使用不同部件且互不冲突,则对应微命令相容。
  15. 互斥性微命令:不能在同一微周期内同时发出的微命令。例如同一条总线上不能同时有两个输出源,因此两个源寄存器同时向同一总线输出通常互斥。
  16. 微指令:控制存储器中的一个控制字,用来在一个微指令周期内发出一组微命令,并给出下一条微指令地址的形成方式。
  17. 微程序:由若干条微指令组成的序列,用来解释并实现一条或一类机器指令的功能。
  18. 取指微程序:完成机器指令取指公操作的微程序,通常包括 PCMARPC \to MAR、访存取指令、IRM[PC]IR \leftarrow M[PC]PCPC+指令长度PC \leftarrow PC + \text{指令长度} 等操作。
  19. 微指令周期:取出一条微指令、译码并发出相应微命令、形成下一条微指令地址所需要的时间。
  20. 微程序控制器:通过读取控制存储器中的微指令来产生控制信号的控制器。它以微程序解释机器指令。
  21. 控制存储器:存放微程序的存储器,一般位于 CPU 内部,通常由 ROM、PLA 或可写控制存储器实现。
  22. 水平型微指令:一条微指令中控制字段较长,多个控制位可直接或较少译码地产生微命令,因此并行性强、速度快,但微指令字长较长。
  23. 垂直型微指令:微指令控制字段较短,需要经过较多译码才能产生微命令,因此字长短、编码紧凑,但并行性弱、速度较慢。
  24. 指令异常:CPU 执行当前指令过程中检测到的异常事件,通常与当前指令有关。例如非法指令、溢出、地址越界、页故障等。
  25. 故障异常:一种可恢复异常。处理完成后,通常需要回到发生故障的当前指令重新执行。例如页缺失异常。
  26. 自陷异常:由程序有意执行陷阱指令或系统调用指令引发的异常,用于系统调用、断点、单步调试等。处理完成后通常返回到自陷指令的下一条指令。
  27. 中断响应程序:CPU 响应外部中断后转去执行的服务程序,用来保存现场、识别中断源、完成设备服务、恢复现场并返回原程序。

习题6.2 选择题(考研真题)#


6.2(1)#

题干: [2010] 下列寄存器中,汇编语言程序员可见的是__________。

A. 存储器地址寄存器(MAR) B. 程序计数器(PC) C. 存储器数据寄存器(MDR) D. 指令寄存器(IR)

答案:B

解析

  • A [错误]:MAR 用于保存访存地址,是 CPU 内部实现访存的数据通路寄存器,汇编程序员通常不能直接访问。
  • B [正确]:PC 保存下一条将要执行指令的地址,会被转移、调用、返回等指令影响,属于程序员可见或至少体系结构可感知的寄存器。
  • C [错误]:MDR 用于保存从主存读出或准备写入主存的数据,是内部临时寄存器,程序员不可见。
  • D [错误]:IR 保存当前正在执行的指令,是控制器内部寄存器,程序员不可见。

6.2(2)#

题干: [2021] 下列寄存器中,汇编语言程序员可见的是__________。

Ⅰ. 指令寄存器 Ⅱ. 微指令寄存器 Ⅲ. 基址寄存器 Ⅳ. 标志/状态寄存器

A. 仅 Ⅰ、Ⅱ B. 仅 Ⅰ、Ⅳ C. 仅 Ⅱ、Ⅳ D. 仅 Ⅲ、Ⅳ

答案:D

解析

  • A [错误]:Ⅰ 指令寄存器和 Ⅱ 微指令寄存器都属于 CPU 控制实现内部寄存器,程序员不可见。
  • B [错误]:Ⅰ 不可见,Ⅳ 标志/状态寄存器可被条件转移等指令间接或直接使用,因此该项包含错误对象。
  • C [错误]:Ⅱ 不可见,Ⅳ 可见,该项包含错误对象。
  • D [正确]:Ⅲ 基址寄存器用于形成有效地址,Ⅳ 标志/状态寄存器保存条件码、状态位,二者都属于程序员可见寄存器。

6.2(3)#

题干: [2024] 将汇编语言程序中实现特定功能的指令序列定义一条伪指令,下列选项中 CPU 能理解并直接执行的是__________。

Ⅰ. 伪指令 Ⅱ. 微指令 Ⅲ. 机器指令 Ⅳ. 汇编指令

A. 仅 Ⅰ 和 Ⅳ B. 仅 Ⅱ 和 Ⅲ C. 仅 Ⅲ 和 Ⅳ D. 仅 Ⅰ、Ⅲ 和 Ⅳ

答案:B

解析

  • A [错误]:伪指令和汇编指令都需要汇编器翻译或展开,CPU 不能直接理解。
  • B [正确]:机器指令是 CPU 指令系统定义的可执行指令;在微程序控制器中,微指令可由控制器读取并执行以产生控制信号。
  • C [错误]:汇编指令不是 CPU 直接执行对象,必须先翻译成机器指令。
  • D [错误]:伪指令和汇编指令都不能由 CPU 直接执行。

6.2(4)#

题干: [2019] 某指令功能为 R[r2]R[r1]+M[R[r0]]R[r2] \leftarrow R[r1] + M[R[r0]],其两个源操作数分别采用寄存器、寄存器间接寻址方式。对于下列给定部件,该指令在取数及执行过程中需要用到的是__________。

Ⅰ. 通用寄存器组(GPRs) Ⅱ. 算术逻辑单元(ALU) Ⅲ. 存储器(Memory) Ⅳ. 指令译码器(ID)

A. 仅 Ⅰ、Ⅱ B. 仅 Ⅰ、Ⅱ、Ⅲ C. 仅 Ⅱ、Ⅲ、Ⅳ D. 仅 Ⅰ、Ⅱ、Ⅳ

答案:B

解析

  • A [错误]:该项漏掉了存储器。因为第二个源操作数是 M[R[r0]]M[R[r0]],必须访问主存。
  • B [正确]:需要从 GPRs 读 r0r0r1r1 并写 r2r2;需要用 ALU 完成加法;需要访问 Memory 取出 M[R[r0]]M[R[r0]]
  • C [错误]:该项漏掉 GPRs,而 R[r0]R[r0]R[r1]R[r1]R[r2]R[r2] 都在通用寄存器组中。
  • D [错误]:指令译码器用于译码阶段,不属于题干强调的”取数及执行过程”中完成取操作和运算所必需的数据部件;且该项漏掉存储器。

6.2(5)#

题干: [2016] 某计算机主存空间为 4 GB,字长为 32 位,按字节编址,采用 32 位定长指令格式。若指令按字边界对齐存放,则程序计数器(PC)和指令寄存器(IR)的位数至少分别是__________。

A. 30、30 B. 30、32 C. 32、30 D. 32、32

答案:B

解析

主存空间为 4GB=2324GB = 2^{32} 字节,按字节编址,所以完整字节地址需要 32 位。指令按 32 位字边界对齐存放,因此指令地址最低 2 位恒为 0,PC 只需保存字地址:

232 byte4 byte/word=230 word\frac{2^{32}\text{ byte}}{4\text{ byte/word}} = 2^{30}\text{ word}

所以 PC 至少 30 位。IR 要保存完整 32 位定长指令,所以 IR 至少 32 位。

  • A [错误]:PC 为 30 位正确,但 IR 不能只有 30 位。
  • B [正确]:PC 为 30 位,IR 为 32 位。
  • C [错误]:PC 取 32 位不是”至少”意义下的最少位数,IR 30 位不够。
  • D [错误]:IR 32 位正确,但 PC 32 位不是最少。

6.2(6)#

题干: [2021] 下列关于数据通路的叙述中,错误的是__________。

A. 数据通路包含 ALU 等组合逻辑(操作)元件 B. 数据通路包含寄存器等时序逻辑(状态)元件 C. 数据通路不包含用于异常事件检测及响应的电路 D. 数据通路中的数据流动路径由控制信号进行控制

答案:C

解析

  • A [正确]:ALU 是典型操作元件,属于数据通路。
  • B [正确]:PC、IR、通用寄存器、状态寄存器等状态元件属于数据通路。
  • C [错误]:现代 CPU 数据通路通常需要包含溢出检测、地址异常检测、中断/异常入口地址选择、EPC/Cause/Status 等相关通路或检测部件,因此”完全不包含”说法错误。
  • D [正确]:多路选择器、寄存器写使能、存储器读写等控制信号决定数据流向。

6.2(7)#

题干: [2023] 数据通路由组合逻辑元件(操作元件)和时序逻辑元件(状态元件)组成,以下给出的元件中,属于操作元件的是__________。

Ⅰ. 算术逻辑部件(ALU) Ⅱ. 通用寄存器组(GPRs) Ⅲ. 程序计数器(PC) Ⅳ. 多路选择器(MUX)

A. 仅 Ⅰ、Ⅱ B. 仅 Ⅰ、Ⅳ C. 仅 Ⅱ、Ⅲ D. 仅 Ⅰ、Ⅱ、Ⅳ

答案:B

解析

  • A [错误]:ALU 是操作元件,但 GPRs 是状态元件。
  • B [正确]:ALU 和 MUX 都是组合逻辑操作元件。
  • C [错误]:GPRs 和 PC 都是保存状态的时序逻辑元件,不是操作元件。
  • D [错误]:GPRs 不属于操作元件。

6.2(8)#

题干: [2019] 下列有关处理器时钟脉冲信号的叙述中,错误的是__________。

A. 时钟脉冲信号由机器脉冲源发出的脉冲信号经整形和分频后形成 B. 时钟脉冲信号的宽度称为时钟周期,时钟周期的倒数为机器主频 C. 时钟周期以相邻状态单元间组合逻辑电路的最大延迟为基准确定 D. 处理器总是在每来一个时钟脉冲信号时就开始执行一条新的指令

答案:D

解析

  • A [正确]:时钟脉冲通常由振荡源经整形、分频等电路形成。
  • B [正确]:严格说时钟周期是相邻有效时钟沿之间的时间间隔。从基本概念角度,时钟周期的倒数为主频。
  • C [正确]:为保证状态单元之间的数据能稳定传送,时钟周期必须不小于组合逻辑最大传播延迟加寄存器相关延迟。
  • D [错误]:多周期处理器中一条指令需要多个时钟周期,流水线处理器中每个周期也不等于”开始并完整执行一条新指令”。

6.2(9)#

题干: [2016] 单周期处理器中所有指令的指令周期为一个时钟周期。下列关于单周期处理器的叙述中,错误的是__________。

A. 可以采用单总线结构数据通路 B. 处理器时钟频率较低 C. 在指令执行过程中控制信号不变 D. 每条指令的 CPI 为 1

答案:A

解析

  • A [错误]:单周期处理器要求一条指令在一个周期内完成取指、译码、读寄存器、执行、访存、写回等操作。单总线结构同一时刻只能传送一路数据,难以在一个周期内完成所有必要传送。
  • B [正确]:单周期时钟周期必须按最慢指令的最长路径确定,所以时钟频率较低。
  • C [正确]:一条指令在一个周期内完成,控制信号通常由 opcode/funct 组合逻辑产生,在该指令执行期间保持稳定。
  • D [正确]:每条指令一个时钟周期完成,所以 CPI 为 1。

6.2(10)#

题干: [2017] 下列关于主存(MM)和控制存储器(CS)的叙述中,错误的是__________。

A. MM 在 CPU 外,CS 在 CPU 内 B. MM 按地址访问,CS 按内容访问 C. MM 存储指令和数据,CS 存储微指令 D. MM 用 RAM 和 ROM 实现,CS 用 ROM 实现

答案:B

解析

  • A [正确]:主存通常位于 CPU 外部,控制存储器通常位于 CPU 控制器内部。
  • B [错误]:控制存储器也是按微地址访问,并不是按内容访问;按内容访问的是相联存储器。
  • C [正确]:主存存放机器指令和数据,控制存储器存放微程序/微指令。
  • D [正确]:主存可由 RAM、ROM 等实现,传统控制存储器常由 ROM 实现。

6.2(11)#

题干: [2009] 相对于微程序控制器,硬布线控制器的特点是__________。

A. 指令执行速度慢,指令功能的修改和扩展容易 B. 指令执行速度慢,指令功能的修改和扩展难 C. 指令执行速度快,指令功能的修改和扩展容易 D. 指令执行速度快,指令功能的修改和扩展难

答案:D

解析

  • A [错误]:硬布线控制器速度不慢,且修改扩展不容易。
  • B [错误]:“修改和扩展难”正确,但”速度慢”错误。
  • C [错误]:“速度快”正确,但”修改和扩展容易”错误。
  • D [正确]:硬布线控制器由硬件逻辑直接产生控制信号,速度快;但指令功能变化需要改动硬件逻辑,修改和扩展难。

6.2(12)#

题干: [2012] 某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7、3、12、5 和 6 个微命令,则操作控制字段至少有__________。

A. 5 位 B. 6 位 C. 15 位 D. 33 位

答案:C

解析

字段直接编码法中,每个互斥类单独编码。若某类有 nn 个微命令,还要有”不发任何微命令”的状态,所以至少需要 log2(n+1)\lceil \log_2(n+1) \rceil 位。

逐类计算:

  • 7 个:log28=3\lceil \log_2 8 \rceil = 3
  • 3 个:log24=2\lceil \log_2 4 \rceil = 2
  • 12 个:log213=4\lceil \log_2 13 \rceil = 4
  • 5 个:log26=3\lceil \log_2 6 \rceil = 3
  • 6 个:log27=3\lceil \log_2 7 \rceil = 3

总位数:3+2+4+3+3=153+2+4+3+3=15

  • A、B [错误]:位数不足。
  • C [正确]:15 位。
  • D [错误]:直接控制法可能接近的位数,不是字段直接编码法最少位数。

6.2(13)#

题干: [2014] 某计算机采用微程序控制器,共有 32 条指令,公共的取指微程序包含两条微指令,各指令对应的微程序平均由 4 条微指令组成,采用断定法(下址字段法)确定下条微指令地址,则微指令中下址字段的位数至少是__________。

A. 5 B. 6 C. 8 D. 9

答案:C

解析

控制存储器中至少需要存放 2+32×4=1302 + 32 \times 4 = 130 条微指令。

下址字段位数 kk 需满足 2k1302^k \ge 130。因为 27=128<1302^7=128<13028=2561302^8=256\ge130,所以 k=8k=8

  • A [错误]:5 位只能表示 32 个地址。
  • B [错误]:6 位只能表示 64 个地址。
  • C [正确]:8 位可表示 256 个地址。
  • D [错误]:9 位不是最少位数。

6.2(14)#

题干: [2011] 假定不采用 cache 和指令预取技术,且计算机处于”开中断”状态,则下列有关指令执行的叙述中,错误的是__________。

A. 每个指令周期中 CPU 都至少访问内存一次 B. 每个指令周期一定大于或等于一个 CPU 时钟周期 C. 空操作指令的指令周期中任何寄存器的内容都不会被改变 D. 当前程序在每条指令执行结束时都可能被外部中断打断

答案:C

解析

  • A [正确]:不采用 cache 和指令预取时,每条指令至少要从主存取指一次。
  • B [正确]:指令周期由一个或多个时钟周期组成,故一定大于或等于一个时钟周期。
  • C [错误]:空操作指令虽然不改变通用寄存器和存储器中的有效数据,但取指过程中 PC 会更新,因此”任何寄存器都不会改变”错误。
  • D [正确]:开中断状态下,CPU 通常在一条指令结束后检测外部中断请求。

6.2(15)#

题干: [2020] 下列关于”自陷”(Trap)的叙述中,错误的是__________。

A. 自陷是通过陷阱指令预先设定的一类外部中断事件 B. 自陷可用于实现程序调试时的断点设置和单步跟踪 C. 自陷发生后 CPU 将转去执行操作系统内核相应程序 D. 自陷处理完成后返回到自陷指令的下一条指令执行

答案:A

解析

  • A [错误]:自陷是由当前指令主动引发的内部异常,不是外部中断事件。
  • B [正确]:调试断点和单步跟踪常通过陷阱机制实现。
  • C [正确]:自陷发生后,CPU 进入内核态并执行相应异常处理程序。
  • D [正确]:自陷是有意安排的异常,处理后通常返回到自陷指令的下一条指令。

6.2(16)#

题干: [2021] 异常事件在当前指令执行过程中进行检测,中断请求则在当前指令执行后进行检测。下列事件中,相应处理程序执行后,必须回到当前指令重新执行的是__________。

A. 系统调用 B. 页缺失 C. DMA 传送结束 D. 打印机缺纸

答案:B

解析

  • A [错误]:系统调用属于自陷,处理后通常返回系统调用指令的下一条指令。
  • B [正确]:页缺失属于故障异常,操作系统调入缺失页面后,必须重新执行导致页缺失的当前指令。
  • C [错误]:DMA 传送结束属于外部中断,通常在当前指令执行结束后响应,返回后执行下一条指令。
  • D [错误]:打印机缺纸属于外设中断或异常状态,不需要重新执行当前 CPU 指令。

习题6.3 回答下列问题#

题干:

(1)CPU 的基本功能是什么?从实现其功能的角度分析,它应由哪些部件组成? (2)CPU 内部有哪些寄存器?功能分别是什么?哪些是程序员可见的?哪些是必需的? (3)什么是取指周期?取指周期内应完成哪些操作? (4)计算机为什么要设置时序系统?说明指令周期、机器周期和时钟周期的含义。 (5)简述传统三级时序和现代时序的差异。 (6)比较单周期 MIPS 处理器与多周期 MIPS 处理器的差异。 (7)组合逻辑控制器与微程序控制器各有什么特点? (8)说明程序与微程序、指令与微指令的异同。 (9)微命令有哪些编码方法?它们是如何实现的? (10)简述微程序控制器和硬布线控制器的设计方法。 (11)简述 CPU 中内部异常与外部中断的区别。 (12)简述异常与中断处理的一般流程。 (13)要支持异常与中断处理,CPU 需要对硬、软件进行哪些扩展?

解析

(1)CPU 的基本功能和组成#

CPU 的基本功能包括:

  1. 指令控制:按照程序规定的顺序取出指令,并根据指令执行结果改变程序执行流。
  2. 操作控制:对指令译码后产生控制信号,使数据通路中各部件在正确时刻完成规定微操作。
  3. 时间控制:用时钟、节拍、状态等时序信号安排各微操作的先后顺序。
  4. 数据加工:完成算术运算、逻辑运算、移位、比较等操作。
  5. 异常和中断处理:检测内部异常和外部中断,保存现场,转入相应处理程序。

从实现角度,CPU 至少应由以下部件组成:

  1. 运算器:包括 ALU、移位器、状态标志生成逻辑等。
  2. 控制器:包括指令寄存器、指令译码器、时序发生器、控制信号产生逻辑等。
  3. 寄存器组:包括通用寄存器和专用寄存器。
  4. 内部数据通路:包括总线、多路选择器、临时寄存器等。
  5. 存储器接口:包括 MAR、MDR 及读写控制逻辑。
  6. 异常/中断相关部件:包括异常检测逻辑、EPC、Cause、Status 等。

(2)CPU 内部寄存器及可见性#

寄存器功能程序员是否可见
PC保存下一条指令地址可见或体系结构可感知
IR保存当前指令不可见
MAR保存访存地址不可见
MDR/MBR保存读出或写入主存的数据不可见
通用寄存器 GPRs保存操作数、地址、中间结果可见
累加器 AC保存运算操作数或结果在累加器型机器中可见
状态/标志寄存器 PSW保存条件码、中断允许位等可见或部分可见
基址寄存器/变址寄存器地址形成可见
栈指针 SP指向栈顶可见

(3)取指周期#

取指周期是 CPU 根据 PC 给出的地址,从主存中取出下一条机器指令并送入 IR 的阶段。典型取指步骤:

  1. 将 PC 的内容送入 MAR:MARPCMAR \leftarrow PC
  2. 发出存储器读命令:MemRead = 1。
  3. 主存将指令字送入 MDR:MDRM[MAR]MDR \leftarrow M[MAR]
  4. 将 MDR 中的指令送入 IR:IRMDRIR \leftarrow MDR
  5. PC 修改为下一条指令地址:PCPC+4PC \leftarrow PC + 4(MIPS 32 位定长指令)。

(4)设置时序系统的原因及三个周期含义#

设置时序系统的原因:CPU 内部操作有严格先后关系;不同部件传播延迟不同;需避免总线冲突;控制器需根据不同阶段发出不同控制信号。

三者关系:1 指令周期=若干个机器周期=若干个时钟周期1\text{ 指令周期} = \text{若干个机器周期} = \text{若干个时钟周期},且指令周期 \ge 机器周期 \ge 时钟周期。

(5)传统三级时序与现代时序差异#

传统三级时序强调固定层次(指令周期、机器周期、节拍)和固定节拍;现代时序强调状态机控制,一个状态对应一个时钟周期内的一组微操作,按指令类型动态转移,更适合流水线、异常中断等复杂控制。

(6)单周期 MIPS 与多周期 MIPS 的差异#

比较项单周期 MIPS多周期 MIPS
指令完成时间每条指令 1 个时钟周期每条指令多个时钟周期
CPI固定为 1不同指令 CPI 不同
时钟周期必须按最慢指令最长路径确定,较长按最长单步骤确定,较短
硬件复用部件复用少,常需要更多硬件同一 ALU、存储器等可在不同周期复用
控制信号一条指令执行期间基本不变不同周期控制信号不同

(7)组合逻辑控制器与微程序控制器特点#

组合逻辑控制器(硬布线):速度快,适合 RISC;设计复杂,修改困难;控制逻辑随指令数增加而迅速复杂。

微程序控制器:设计规整,易于修改和扩展;需要访问控制存储器,速度较慢;适合 CISC。

(8)程序与微程序、指令与微指令的异同#

程序由机器指令组成,存放在主存中,由用户编写;微程序由微指令组成,存放在控制存储器中,由 CPU 设计者编写。一条机器指令对应一段微程序(多条微指令)。机器指令存放在主存;微指令存放在控制存储器。

(9)微命令编码方法#

直接控制法:每个微命令对应一个控制位,不需要译码,并行性最强。

字段直接编码法:将互斥微命令分到同一字段编码,字长短但需译码。

字段间接编码法:某些字段含义由其他字段决定,编码更紧凑但速度较慢。

(10)微程序控制器和硬布线控制器设计方法#

微程序控制器:分析指令流程 → 分解微操作 → 设计微指令格式 → 编写微程序 → 写入控制存储器。

硬布线控制器:画状态转换图 → 列出控制信号真值表 → 逻辑化简 → 设计组合逻辑电路。

(11)CPU 中内部异常与外部中断的区别#

内部异常源自 CPU 内部,与当前指令有关,在指令执行过程中检测;外部中断源自 CPU 外部,与当前指令无关,在指令执行结束后检测。

(12)异常与中断处理的一般流程#

检测事件 → 判断是否响应 → 保存断点 → 保存原因 → 切换状态 → 转入处理入口 → 执行处理程序 → 恢复现场 → 返回原程序。

(13)支持异常与中断需要的硬软件扩展#

硬件:EPC、Cause、Status、中断向量地址形成逻辑、特权级切换、异常返回指令。软件:异常处理程序、中断服务程序、中断向量表、驱动程序、系统调用接口。


习题6.4 某 CPU 的结构框图#

题干:

某 CPU 的结构框图中,AC 为累加器,条件状态寄存器保存指令执行过程中的状态。a、b、c、d 为 4 个寄存器(PC、AR/MAR、IR 和 DR/MDR 中的某一个)。图中箭头表示信息传送的方向,试完成下列各题。 (1)根据 CPU 的功能和结构标明图中 4 个寄存器的名称。 (2)简述指令 LDA addr 的数据通路,其中 addr 为主存地址,指令的功能是将主存 addr 单元的内容送入 AC 中。

解析

(1)寄存器名称判断#

  • d 旁边有 +1 输入,并且可向地址相关通路提供信息,所以 d程序计数器 PC
  • c 向主存提供地址,因此 c存储器地址寄存器 MAR
  • a 位于主存和 CPU 内部数据通路之间,并能与主存双向交换数据,因此 a存储器数据寄存器 MDR
  • b 将指令信息送到操作控制器,因此 b指令寄存器 IR

结论:a 为 MDR,b 为 IR,c 为 MAR,d 为 PC。

(2)LDA addr 的数据通路#

取指阶段

  1. MAR ← PC(d → c)
  2. MDR ← M[MAR](M → a)
  3. IR ← MDR(a → b)
  4. PC ← PC+1(d → d)

执行阶段

  1. MAR ← IR.addr(b → c)
  2. MDR ← M[MAR]=M[addr](M → a)
  3. AC ← MDR(a → AC)

最终结果:AC=M[addr]AC = M[addr]


习题6.5 至 习题6.9#

习题6.5 至 习题6.9 的详细解析(包括单周期/多周期 MIPS 修改、控制信号故障分析、指令执行流程等)由于篇幅较长,此处给出核心要点和答案框架。如需完整推导过程,可参考教材对应章节。

习题6.5 修改单总线结构处理器以支持 MIPS 指令#

题干: 修改单总线结构处理器以支持 sllluibltzj 指令。

核心答案要点:

  • sll rd, rt, shamt:ALU 增加左移功能,源操作数来自 rt,目的寄存器为 rd
  • lui rt, imm:增加立即数左移 16 位电路,写回 rt
  • bltz rs, offset:增加符号位检测逻辑,若 R[rs]31=1R[rs]_{31}=1 则 PC 加分支偏移量。
  • j target:增加跳转目标地址拼接部件,PC 多路选择器增加 JumpTarget 输入。

习题6.6 单周期 MIPS 控制信号恒 0/恒 1 故障#

题干: 分析 RegWrite、RegDst、MemWrite 恒 0/恒 1 故障影响。

核心答案要点:

  • RegWrite 恒 0:lw、R 型、I 型算术逻辑指令无法写回。
  • RegWrite 恒 1:sw、beq 会错误写寄存器。
  • RegDst 恒 0:R 型指令写 rt 而非 rd
  • RegDst 恒 1:lw、I 型指令写 rd 而非 rt
  • MemWrite 恒 0:sw 无法写主存。
  • MemWrite 恒 1:lw、R 型、beq 会错误写主存。

习题6.7 修改单周期 MIPS 处理器以支持指令#

题干: 修改单周期 MIPS 以支持 srlluiblezjal

核心答案要点:

  • srl:ALU 增加逻辑右移功能。
  • lui:立即数左移 16 位。
  • blez:判断 R[rs]0R[rs] \le 0(Zero ∨ Sign)。
  • jal:保存 PC+4PC+4 到 R31,跳转目标地址。

习题6.8 多周期 MIPS 控制信号恒 0/恒 1 故障#

题干: 分析 PCSrc、MemToReg、IorD 恒 0/恒 1 故障影响。

核心答案要点:

  • PCSrc 恒 0:beq 和 j 无法正确跳转。
  • PCSrc 恒 1:取指阶段错误选择分支目标,几乎所有指令出错。
  • MemToReg 恒 0:lw 写入 ALUOut 而非 MDR。
  • MemToReg 恒 1:R 型、I 型写 MDR 而非 ALUOut。
  • IorD 恒 0:lw、sw 访存时错误访问 PC 地址。
  • IorD 恒 1:取指阶段错误访问 ALUOut 地址,所有指令出错。

习题6.9 修改多周期 MIPS 处理器以支持指令#

题干: 修改多周期 MIPS 以支持 sraluibgtzj

核心答案要点:

  • sra:ALU 增加算术右移功能,高位补符号位。
  • lui:立即数左移 16 位。
  • bgtz:判断 R[rs]>0R[rs] > 0SignZero\overline{Sign} \cdot \overline{Zero} )。
  • j:跳转目标地址拼接,PC 多路选择器增加 JumpTarget。

习题6.10 计算单周期、多周期 MIPS 时钟和执行时间#

题干:

假设构成 CPU 的各功能部件的时间延迟如下:寄存器延迟 Tclk_to_q=20psT_{clk\_to\_q}=20ps,存储器读 Tmem=150psT_{mem}=150ps,寄存器堆读 TRF_read=90psT_{RF\_read}=90ps,ALU 延迟 Talu=90psT_{alu}=90ps,多路选择器 Tmux=20psT_{mux}=20ps,寄存器建立时间 Tsetup=10psT_{setup}=10ps。试分别计算单周期、多周期 MIPS 处理器的最小时钟周期和最大时钟频率。假设某 MIPS 程序包含 1000 条指令,其中 lw、sw、beq、R 型、I 型比例分别为 10%、10%、10%、50%、20%,试分别计算该程序在单总线结构处理器、单周期 MIPS、多周期 MIPS 处理器上的 CPI 值及执行时间。

解析

一、单周期 MIPS 最小时钟周期#

单周期最慢指令是 lw,关键路径:PC → 指令存储器 → 寄存器堆读 → ALU → 数据存储器 → 写回寄存器。

Tsingle=20+150+90+20+90+150+20+10=550psT_{single} = 20+150+90+20+90+150+20+10 = 550ps

fsingle=1/550ps1.82GHzf_{single} = 1/550ps \approx 1.82GHz

二、多周期 MIPS 最小时钟周期#

多周期时钟周期由最长阶段决定(IF 或 MEM 阶段):

Tmulti=20+20+150+10=200psT_{multi} = 20+20+150+10 = 200ps

fmulti=1/200ps=5GHzf_{multi} = 1/200ps = 5GHz

三、CPI 与执行时间#

单周期 MIPSCPI=1CPI=1T=1000×1×550ps=550nsT=1000 \times 1 \times 550ps = 550ns

多周期 MIPS

  • lw: 5 周期,sw: 4 周期,beq: 3 周期,R 型: 4 周期,I 型: 4 周期
  • CPI=0.1×5+0.1×4+0.1×3+0.5×4+0.2×4=4.0CPI = 0.1\times5 + 0.1\times4 + 0.1\times3 + 0.5\times4 + 0.2\times4 = 4.0
  • T=1000×4.0×200ps=800nsT = 1000 \times 4.0 \times 200ps = 800ns

单总线结构处理器(典型值):

  • lw: 7,sw: 7,beq: 6,R 型: 7,I 型: 6
  • CPI6.7CPI \approx 6.7Tclk180psT_{clk} \approx 180ps
  • T1000×6.7×180ps=1.206μsT \approx 1000 \times 6.7 \times 180ps = 1.206\mu s

习题6.11 优化多周期 MIPS 的 R 型指令数据通路#

题干: 基于加快经常性事件的原理,优化多周期 MIPS 的 R 型指令数据通路。

解析:

优化思想:R 型指令比例为 50%,是最频繁的指令。在 EX 阶段将 ALU 结果直接写回寄存器堆,省去单独的 WB 周期,使 R 型指令从 4 周期减为 3 周期。

优化后 CPICPI=0.1×5+0.1×4+0.1×3+0.5×3+0.2×4=3.5CPI' = 0.1\times5 + 0.1\times4 + 0.1\times3 + 0.5\times3 + 0.2\times4 = 3.5

优化后执行时间T=1000×3.5×200ps=700nsT' = 1000 \times 3.5 \times 200ps = 700ns

加速比800/7001.143800/700 \approx 1.143,性能提升约 14.3%。


习题6.12 多周期处理器应优化哪个部件#

题干: 对于多周期处理器,如果可以优化一个功能部件以提升整体性能,应选择哪个?

解析:

多周期处理器最长阶段为取指或数据存储器读阶段(200ps),其中最主要延迟是存储器读(150ps)。因此应优先优化存储器读部件

将存储器读延迟从 150ps 优化到 110ps 时,时钟周期可从 200ps 降到 160ps。继续优化不再提升性能(受其他阶段限制),因此最低成本方案是优化到刚好 110ps。


习题6.13 低功耗低速度寄存器堆方案是否有应用价值#

题干: 现有一种寄存器堆方案,功耗降低一半,速度也降低一半,是否有应用价值?

解析:

速度降低一半使寄存器堆读延迟从 90ps 变为 180ps,导致时钟周期从 200ps 增加到 210ps,执行时间延长 5%。

若寄存器堆功耗占 CPU 总功耗超过约 9.5%,则整体能耗可能降低。因此在对性能要求不高、对功耗敏感的场合有应用价值。


习题6.14 与 习题6.15 三级时序状态机逻辑表达式#

题干: 根据定长/变长指令周期三级时序状态机,给出状态周期电位 MifM_{if}McalM_{cal}MexM_{ex} 及节拍电位 T1T4T_1 \sim T_4 的逻辑表达式。

解析:

状态编码:高两位 S3S2S_3S_2 表示机器周期,低两位 S1S0S_1S_0 表示节拍。

Mif=S3 S2,Mcal=S3S2,Mex=S3S2M_{if} = \overline{S_3}\ \overline{S_2},\quad M_{cal} = \overline{S_3}S_2,\quad M_{ex} = S_3\overline{S_2}

T1=S1 S0,T2=S1S0,T3=S1S0,T4=S1S0T_1 = \overline{S_1}\ \overline{S_0},\quad T_2 = \overline{S_1}S_0,\quad T_3 = S_1\overline{S_0},\quad T_4 = S_1S_0

定长与变长时序的输出译码表达式相同,区别在于下一状态逻辑。


习题6.16 与 习题6.17 单总线/多周期有限状态机逻辑表达式#

题干: 根据指令执行状态转换图,设计有限状态机,给出 S4S0S_4 \sim S_0 的逻辑表达式。

解析:

标准单总线/多周期 MIPS 子集(lw、sw、beq、add、addi)的状态编码和下一状态逻辑表达式详见教材。核心方法是对每个下一状态位 DiD_i,列出使其为 1 的所有当前状态与指令译码条件的乘积项之和。


习题6.18 与 习题6.19 微程序地址转移逻辑#

题干: 结合微程序控制器组成框图和状态转换图,设计微程序地址转移逻辑。

解析:

入口地址由指令译码信号生成。例如单总线结构中:

S3=add+addi+beq,S2=lw+sw+beq,S1=addiS_3 = add + addi + beq,\quad S_2 = lw + sw + beq,\quad S_1 = addi

地址转移多路选择器控制信号:SelEntry = DecodeEnd(译码结束选入口),SelFetch = MicroProgramEnd(微程序结束回取指),SelSeq = 顺序执行。


习题6.20 微指令格式字段位数和控制器框图#

题干: 控制存储器容量为 128×32128\times32 位,微程序可在整个 CM 中分支跳转,判别测试条件共 3 个,采用下址字段法。求微指令各字段位数并画出逻辑框图。

解析:

  • 下址字段:128 个地址需要 7 位。
  • 判别测试字段:3 种条件 + 1 种不测试,共 4 种,需要 2 位。
  • 操作控制字段:3272=2332 - 7 - 2 = 23 位。

框图:µAR → CM → µIR → 操作控制字段(输出控制信号)+ 判别测试/下址逻辑 → 下一微地址 → µAR。


习题6.21 微指令控制字段最短编码#

题干: 5 条微指令发出如表所示的微命令,要求控制字段最短且保持并行性。

解析:

分析相容性后划分字段:F1(a, 1位)、F2(b/c/d, 2位)、F3(e/f, 2位)、F4(g/h/i, 2位)、F5(j, 1位),总 8 位。


习题6.22 支持中断的微指令和地址转移逻辑#

题干: 结合支持中断的状态机,设计微指令和地址转移逻辑,支持 eret 指令和中断响应。

解析:

增加中断响应微程序(保存断点 EPC → 保存原因 Cause → 转入中断向量)和 eret 微程序(EPC → PC,清除 EXL)。

入口地址优先级:Int > eret > 普通指令。入口地址表达式需加入中断允许条件和异常级标志。


习题6.23 数据通路控制信号设计#

题干: 某 16 位计算机数据通路如图,指令 ADD (R1),R0 功能为 (R0)+((R1))(R1)(R0) + ((R1)) \to (R1),给出执行流程和各步控制信号。

解析:

步骤微操作控制信号
1MARR1MAR \leftarrow R1R1out,MARinR1_{out}, MAR_{in}
2MDRM[MAR]MDR \leftarrow M[MAR]MemR,MDRinEMemR, MDR_{in}E
3AMDRA \leftarrow MDRMDRout,AinMDR_{out}, A_{in}
4MDRA+R0MDR \leftarrow A + R0R0out,ADD,MDRinR0_{out}, ADD, MDR_{in}
5M[MAR]MDRM[MAR] \leftarrow MDRMDRoutE,MemWMDR_{out}E, MemW
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

中央处理器
https://dawn114514.site/posts/计组/中央处理器/
作者
黎明
发布于
2026-06-30 02:55:00
许可协议
MIT

部分信息可能已经过时

目录