跳转至

第五章中央处理器

题号 年份-题号 正确答案 题号 年份-题号 正确答案 题号 年份-题号 正确答案
1 2010-18 B 14 2014-18 C 27 2011-18 D
2 2016-18 B 15 2017-18 B 28 2013-18 C
3 2019-16 D 16 2009-22 A 29 2010-19 A
4 2021-17 D 17 2010-21 A 30 2014-16 D
5 2011-19 C 18 2012-22 B 31 2016-19 B
6 2019-17 B 19 2015-22 D 32 2017-17 C
7 2024-13 B 20 2015-23 B 33 2017-19 A
8 2010-12 D 21 2015-24 C 34 2018-20 D
9 2016-20 A 22 2020-18 A 35 2019-18 C
10 2021-18 C 23 2020-20 C 36 2020-17 B
11 2023-18 B 24 2020-21 B 37 2023-19 C
12 2009-19 D 25 2023-21 D 38 2024-19 C
13 2012-18 C 26 2009-18 A 39 2022-22 C

(一)CPU的功能和基本结构

  1. 【2010-18】下列寄存器中,汇编语言程序员可见的是( )。

A. 存储器地址寄存器(MAR)

B. 程序计数器(PC)

C. 存储器数据寄存器(MDR)

D. 指令寄存器(IR)

解析

答案:B.程序计数器(PC)

  • A.MAR:保存当前要访问的主存地址,是数据通路内部寄存器,通常对程序员不可见。
  • B.PC:保存下一条将执行指令的地址。转移、调用、返回等指令都会改变 PC,因此它属于体系结构可见状态。
  • C.MDR:暂存从主存读出的数据或将写入主存的数据,是 CPU 内部工作寄存器。
  • D.IR:保存当前正在执行的指令,供译码器分析,汇编程序不能直接读写。

易错点:所谓“程序员可见”不一定要求存在一条普通指令直接把该寄存器当作操作数;只要程序能够通过指令语义观察或改变其状态,就属于体系结构可见。

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

A. 30、30

B. 30、32

C. 32、30

D. 32、32

解析

答案:B.30、32

  1. 主存空间为 4 GB = 2^32 B,且按字节编址,所以完整的字节地址为 32 位。
  2. 每条指令为 32 bit = 4 B,并按 4 字节的字边界对齐。合法指令起始地址的最低两位恒为 00,主存中可能的指令起始位置数为:公式
  3. 题目问“至少”需要多少位,因此 PC 只需保存这 公式 个对齐指令位置的编号,即 30 位;形成实际字节地址时在低位补两个 0 即可。
  4. IR 必须保存一条完整的 32 位指令,因此至少需要 32 位。

故 PC、IR 的位数至少分别为 30 位、32 位。

易错点:实际机器完全可以采用 32 位 PC 保存完整字节地址,但本题问的是理论上的“最少位数”。题干专门给出“按字边界对齐”,就是为了说明恒为 00 的最低两位可以不存储。

  1. 【2019-16】下列有关处理器时钟脉冲信号的叙述中,错误的是( )。

A. 时钟脉冲信号由机器脉冲源发出的脉冲信号经整形和分频后形成

B. 时钟脉冲信号的宽度称为时钟周期,时钟周期的倒数为机器主频

C. 时钟周期以相邻状态单元间组合逻辑电路的最大延迟为基准确定

D. 处理器总是在每来一个时钟脉冲信号时就开始执行一条新的指令

解析

答案:D

  • A 正确:机器脉冲源产生的信号经过整形、分频等处理后形成稳定的时钟信号。
  • B 正确:时钟周期记为 公式,机器主频为其倒数,即 公式。
  • C 正确:同步时序电路的时钟周期不能短于寄存器之间最长组合逻辑路径所需的传播时间,还需考虑寄存器建立时间等开销。
  • D 错误:一个时钟脉冲通常只推进一次微操作或一个流水段,并不等于开始执行一条新指令。多周期 CPU 的一条指令需要多个时钟周期;流水线遇到阻塞时也可能某个周期没有新指令进入。
  1. 【2021-17】下列存储器中,汇编语言程序员可见的是( )。

Ⅰ. 指令寄存器

Ⅱ. 微指令寄存器

Ⅲ. 基址寄存器

Ⅳ. 标志状态寄存器

A. 仅Ⅰ、Ⅱ

B. 仅Ⅰ、IV

C. 仅Ⅱ、Ⅳ

D. 仅Ⅲ、Ⅳ

解析

答案:D.仅 Ⅲ、Ⅳ

  • Ⅰ 指令寄存器 IR:保存当前指令,属于 CPU 内部寄存器,不可见。
  • Ⅱ 微指令寄存器:保存当前微指令,仅存在于微程序控制器内部,不可见。
  • Ⅲ 基址寄存器:参与形成操作数的有效地址,汇编指令可以使用,程序员可见。
  • Ⅳ 标志状态寄存器:保存零、进位、溢出、符号等状态,条件转移等指令会使用这些标志,程序员可见。

因此只有 Ⅲ、Ⅳ可见。

(二)指令执行过程

一条指令通常经历:

  1. 取指:根据 PC 从主存读取指令并送入 IR,同时更新 PC。
  2. 译码:分析操作码、寻址方式和寄存器编号。
  3. 取数:读取寄存器或主存中的源操作数。
  4. 执行:由 ALU 等部件完成运算。
  5. 访存/写回:按需要访问主存,并把结果写回寄存器或主存。
  6. 检查异常和外部中断:异常通常在执行指令时检测;外部中断通常在一条指令执行结束时采样和响应。
  1. 【2011-19】假定不采用Cache和指令预取技术,且机器处于“开中断”状态,则在下列有关指令执行的叙述中,错误的是( )。

A. 每个指令周期中CPU都至少访问内存一次

B. 每个指令周期一定大于或等于一个CPU时钟周期

C. 空操作指令的指令周期中任何寄存器的内容都不会被改变

D. 当前程序在每条指令执行结束时都可能被外部中断打断

解析

答案:C

  • A 正确:题设明确不采用 Cache 和指令预取,因此每条指令至少要访问主存一次以完成取指。
  • B 正确:指令周期由一个或多个时钟周期组成,不可能短于一个 CPU 时钟周期。
  • C 错误:空操作指令虽然不完成显式的数据运算,但取指和顺序执行仍会使 PC 改变,IR 等内部寄存器也会参与工作。因此不能说任何寄存器都不改变。
  • D 正确:机器处于开中断状态时,外部中断可在任意一条指令执行结束的边界被检测并响应。
  1. 【2019-17】某指令功能为R[r2]←R[r1]+M[R[r0]],其两个源操作数分别采用寄存器、寄存器间接寻址方式。对于下列给定部件,该指令在取数及执行过程中需要用到的是( )。

Ⅰ. 通用寄存器组(GPRs)

Ⅱ. 算术逻辑单元(ALU)

Ⅲ. 存储器(Memory)

Ⅳ. 指令译码器(ID)

A. 仅Ⅰ、Ⅱ

B. 仅Ⅰ、Ⅱ、Ⅲ

C. 仅Ⅱ、Ⅲ、Ⅳ

D. 仅Ⅰ、Ⅲ、Ⅳ

解析

答案:B.仅 Ⅰ、Ⅱ、Ⅲ

  • 读取 R[r1]、R[r0] 并写入 R[r2],需要 通用寄存器组(GPRs)。
  • 根据 R[r0] 访问主存并取得第二个源操作数,需要 存储器(Memory)。
  • 两个源操作数相加,需要 算术逻辑单元(ALU)。
  • 题目限定的是“取数及执行过程”。指令译码器用于此前的译码阶段,不是这两个阶段必用的部件。

因此需要 Ⅰ、Ⅱ、Ⅲ。

  1. 【2024-13】通常情况下,将汇编语言程序中实现特定功能的指令序列定义为一条伪指令 (pseudoinstruction),下列选项中,CPU 能理解并直接执行的是

I. 伪指令

II. 微指令

III. 机器指令

IV. 汇编指令

A. 仅I和IV

B. 仅II和III

C. 仅III和IV

D. 仅I、III和IV

解析

答案:B.仅 Ⅱ、Ⅲ

  • Ⅰ 伪指令:由汇编器展开为一条或多条真实机器指令,CPU 不能直接执行。
  • Ⅱ 微指令:在微程序控制器中由微指令寄存器读出,控制硬件直接据此产生微命令。
  • Ⅲ 机器指令:是指令系统规定的二进制指令,CPU 能直接取指、译码和执行。
  • Ⅳ 汇编指令:是机器指令的符号表示,必须先由汇编器翻译成机器指令。

故 CPU 能直接理解和执行的是微指令与机器指令。

层次关系:伪指令/汇编指令经汇编器翻译为机器指令;采用微程序控制器时,一条机器指令又由一段微程序中的若干微指令实现。

(三)数据通路的功能和基本结构

数据通路由两类元件组成:

  • 组合逻辑元件(操作元件):输出只取决于当前输入,如 ALU、加法器、移位器、多路选择器(MUX)等。
  • 时序逻辑元件(状态元件):能够保存状态,如 PC、IR、通用寄存器组、流水段寄存器等。

控制器发出的控制信号决定数据从哪里来、经过哪个操作元件、最后写入哪里。

  1. 【2010-12】下列选项中,能缩短程序执行时间的措施是( )。

Ⅰ. 提高CPU时钟频率

Ⅱ. 优化数据通路结构

Ⅲ. 对程序进行编译优化

A. 仅Ⅰ和Ⅱ

B. 仅Ⅰ和Ⅲ

C. 仅Ⅱ和Ⅲ

D. Ⅰ、Ⅱ和Ⅲ

解析

答案:D.Ⅰ、Ⅱ和Ⅲ

程序执行时间的基本关系为:

公式

其中,公式 是动态指令条数,公式 是平均每条指令的时钟周期数,公式 是时钟周期,公式 是主频。

  • Ⅰ 提高 CPU 时钟频率:在其他条件不变时减小 公式,可缩短执行时间。
  • Ⅱ 优化数据通路结构:可能缩短关键路径、提高主频或减少完成指令所需周期数。
  • Ⅲ 编译优化:可能减少动态指令条数,或调整指令顺序以减少流水线阻塞。

三项都有可能缩短程序执行时间。

  1. 【2016-20】单周期处理器中所有指令的指令周期为一个时钟周期。下列关干单周期处理器的叙述中,错误的是( )。

A. 可以采用单总线结构数据通路

B. 处理器时钟频率较低

C. 在指令执行过程中控制信号不变

D. 每条指令的CPI为1

解析

答案:A

  • A 错误:单总线结构一次只能完成一次总线传送,而一条较复杂指令往往需要在多个部件之间进行多次数据传送,通常必须分多个时钟周期完成。因此它不适合实现“所有指令都在一个时钟周期内完成”的单周期数据通路。
  • B 正确:单周期处理器的时钟周期必须覆盖最复杂、最慢指令的完整数据通路,因此时钟周期长、频率较低。
  • C 正确:一条指令从周期开始到结束都由同一组组合控制逻辑控制,在该周期内各控制信号保持相应的稳定取值。
  • D 正确:每条指令恰好用一个时钟周期,所以所有指令的 CPI 都为 1。
  1. 【2021-18】下列关于数据通路的叙述中,错误的是( )。

A. 数据通路包含ALU等组合逻辑(操作)元件

B. 数据通路包含寄存器等时序逻辑(状态)元件

C. 数据通路不包含用于异常事件检测及响应的电路

D. 数据通路中的数据流动路径由控制信号进行控制

解析

答案:C

  • A 正确:ALU 是典型的组合逻辑操作元件。
  • B 正确:寄存器是典型的时序逻辑状态元件。
  • C 错误:数据通路需要包含或配合完成异常事件检测与响应的相关电路,例如运算中的溢出检测、地址越界/对齐检测以及异常入口所需的状态保存和 PC 选择通路。
  • D 正确:寄存器写使能、多路选择器选择端、ALU 功能选择、存储器读写等都由控制信号控制。
  1. 【2023-18】数据通路由组合逻辑元件(操作元件)和时序逻辑元件(状态元件)组成。下列给出的元件中,属于操作元件的是( )。

I. 算术逻辑部件(ALU)

II. 程序计数器(PC)

III. 通用寄存器组(GPRs)

IV. 多路选择题(MUX)

A. 仅I、II

B. 仅I、IV

C. 仅II、III

D. 仅I、II、IV

解析

答案:B.仅 Ⅰ、Ⅳ

  • Ⅰ ALU:对输入数据实施运算,不保存状态,属于操作元件。
  • Ⅱ PC:保存下一条指令地址,属于状态元件。
  • Ⅲ GPRs:保存程序使用的操作数和结果,属于状态元件。
  • Ⅳ MUX(多路选择器):根据选择信号从多路输入中选一路输出,属于组合逻辑操作元件。

因此属于操作元件的是 ALU 和 MUX。

(四)控制器的功能和工作原理

控制器的任务是根据指令、时序信号和状态条件产生控制信号。常见实现方式如下:

硬布线控制器 微程序控制器
控制信号来源 组合逻辑电路直接产生 执行控制存储器中的微指令产生
速度 较快 较慢
设计与修改 复杂,修改和扩展困难 规整,修改和扩展较容易
常见应用 RISC、高性能处理器 控制较复杂的指令系统
  1. 【2009-19】相对于微程序控制器,硬布线控制器的特点是( )。

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

B. 指令执行速度慢,指令功能的修改和扩展难

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

D. 指令执行速度快,指令功能的修改和扩展难

解析

答案:D

硬布线控制器用专门的组合逻辑直接产生控制信号,省去了读取、解释微指令的过程,所以执行速度较快。但控制逻辑与指令功能紧密耦合,若要修改或扩展指令,就需要重新设计硬件逻辑,因此修改和扩展较难。

  1. 【2012-18】某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有33个微命令,构成5个互斥类,分别包含7、3、12、5和6个微命令,则操作控制字段至少有( )。

A. 5位

B. 6位

C. 15位

D. 33位

解析

答案:C.15 位

字段直接编码法把互斥的微命令放在同一字段中。一个包含 公式 个互斥微命令的字段通常还要能够表示“本字段不发出任何微命令”,因此至少需要:公式位。因此操作控制字段至少有 公式 位,其中 m 表示互斥类数量,公式 表示第 i 个互斥类的微命令数量,本题有5个互斥类,分别包含7、3、12、5和6个微命令,计算结果为 公式 。

本题选C。

  1. 【2014-18】某计算机采用微程序控制器,共有32条指令,公共的取指令微程序包含2条微指令,各指令对应的微程序平均由4条微指令组成,采用断定法(下地址字段法)确定下条微指令地址,则微指令中下地址字段的位数至少是( )。

A. 5

B. 6

C. 8

D. 9

解析

答案:C.8 位

计算:

  • 公共取指微程序:2 条微指令;
  • 32 条机器指令,每条对应的微程序平均 4 条微指令:公式 条;
  • 控制存储器中至少需要容纳的微指令总数:公式

采用断定法(下地址字段法)时,下地址字段要能指出任意一条微指令的地址。因为:公式

所以至少需要 8 位。

  1. 【2017-18】下列关于主存储器(MM)和控制存储器(CS)的叙述中,错误的是( )。

A. MM在CPU外,CS在CPU内

B. MM按地址访问,CS按内容访问

C. MM存储指令和数据,CS存储微指令

D. MM用RAM和ROM实现,CS用ROM实现

解析

答案:B

  • A 正确:主存(MM)位于 CPU 外部的主存系统中;控制存储器(CS)是微程序控制器的一部分,位于 CPU 内部。
  • B 错误:二者通常都按地址访问。控制存储器通过微地址寄存器给出的地址读出微指令,并不是按内容访问。
  • C 正确:主存保存机器指令和数据;控制存储器保存微程序,即微指令。
  • D 正确:主存可由 RAM 和 ROM 构成;控制存储器一般采用 ROM 或其他只读型存储器实现。

(五)异常和中断机制

异常和中断都会使 CPU 暂停当前程序,转去执行相应的处理程序,但二者的来源和时点不同。

对比项 内部异常(exception) 外部中断(interrupt)
来源 CPU 执行当前指令时在内部检测到 CPU 外部设备或部件提出请求
与当前指令的关系 同步,通常由当前指令引起 异步,通常与当前指令无关
典型事件 除零、非法指令、缺页、越权、自陷 键盘输入、定时器到时、网卡收包
检测/响应时点 在当前指令执行过程中检测并按异常机制响应 通常在一条指令执行结束后采样并响应
能否屏蔽 不能用普通中断屏蔽位屏蔽 可分为可屏蔽中断和 NMI

内部异常又分为:

类型 指令完成情况 处理后的典型返回位置 例子
故障(fault) 指令尚未成功完成 返回故障指令并重新执行 缺页、某些保护异常
陷阱(trap) 指令已经完成 返回下一条指令 系统调用、自陷、断点、单步
终止(abort) 发生严重且通常不可恢复的错误 一般不返回原程序 严重硬件故障

异常和中断的基本概念

异常和中断的分类

  1. 【2009-22】下列选项中,能引起外部中断的事件是( )。

A. 键盘输入

B. 除数为0

C. 浮点运算下溢

D. 访存缺页

解析

答案:A.键盘输入

  • A 键盘输入:由外部 I/O 设备产生,与 CPU 当前执行哪条指令无关,属于外部中断。
  • B 除数为 0:由除法指令触发,属于内部异常。
  • C 浮点运算下溢:由当前浮点运算指令触发,属于内部异常。
  • D 访存缺页:在执行访存指令、进行地址转换时发现,属于内部异常中的 fault。

判断关键不是事件发生在“内存内还是设备外”,而是它是否由当前指令同步引起。

异常和中断的检测与响应

  1. 【2010-21】单级中断系统中,中断服务程序内的执行顺序是()单级中断系统中,中断服务程序内的执行顺序是( )。

Ⅰ保护现场 Ⅱ开中断 Ⅲ 关中断 Ⅳ保护断点 Ⅴ中断事件处理 Ⅵ 恢复现场 Ⅶ 中断返回

A. Ⅰ→Ⅴ→Ⅵ→Ⅱ→Ⅶ

B. Ⅲ→Ⅰ→Ⅴ→Ⅶ

C. Ⅲ→Ⅳ→Ⅴ→Ⅵ→Ⅶ

D. Ⅳ→Ⅰ→Ⅴ→Ⅵ→Ⅶ

解析

答案:A.Ⅰ→Ⅴ→Ⅵ→Ⅱ→Ⅶ

即:公式

题目问的是“中断服务程序内”的执行顺序。CPU 在进入服务程序以前,已由中断隐指令完成关中断和保护断点,所以服务程序不再重复 Ⅲ、Ⅳ。

  • 首先保存可能被服务程序改写的通用寄存器等现场;
  • 随后处理具体中断事件;
  • 处理完毕后恢复现场;
  • 单级中断处理中一直保持关中断,返回前重新开中断;
  • 最后执行中断返回指令。

因此 A 正确。B 缺少恢复现场与开中断;C、D 把应由硬件完成的关中断或保护断点混入了服务程序。

易错点:保护断点通常指硬件保存 PC;保护现场通常指服务程序用软件保存通用寄存器等。二者不是同一操作。

  1. 【2012-22】响应外部中断的过程中,中断隐指令完成的操作,除保护断点外,还包括( )。

Ⅰ. 关中断

Ⅱ. 保存通用寄存器的内容

Ⅲ. 形成中断服务程序入口地址并送PC

A. 仅Ⅰ、Ⅱ

B. 仅Ⅰ、Ⅲ

C. 仅Ⅱ、Ⅲ

D. Ⅰ、Ⅱ、Ⅲ

解析

答案:B.仅 Ⅰ、Ⅲ

  • Ⅰ 关中断:由硬件完成,避免尚未保存好现场时又响应普通可屏蔽中断。
  • Ⅱ 保存通用寄存器:通常由中断服务程序用软件完成,不属于中断隐指令。
  • Ⅲ 形成服务程序入口地址并送 PC:由硬件根据中断向量等信息完成。

连同题干已给出的“保护断点”,中断隐指令可概括为:关中断、保存断点、引出中断服务程序。

  1. 【2015-22】内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类。下列有关内部异常的叙述中,错误的是( )。

A. 内部异常的产生与当前执行指令相关

B. 内部异常的检测由CPU内部逻辑实现

C. 内部异常的响应发生在指令执行过程中

D. 内部异常处理后返回到发生异常的指令继续执行

解析

答案:D

  • A 正确:内部异常与当前执行的指令同步相关。
  • B 正确:除零、非法操作码、缺页、越权等都由 CPU 内部逻辑检测。
  • C 正确:,异常在当前指令执行过程中被检测并响应;这不同于外部中断通常在指令结束时检查。
  • D 错误:三类异常的返回位置不同。fault 通常返回原指令重执行,trap 返回下一条指令,abort 一般无法返回原程序。

所以不能笼统地说“内部异常处理后都返回发生异常的指令继续执行”。

  1. 【2015-23】处理外部中断时,应该由操作系统保存的是( )。

A. 程序计数器 (PC) 的内容

B. 通用寄存器的内容

C. 快表 (TLB) 中的内容

D. Cache中的内容

解析

答案:B.通用寄存器的内容

  • A PC:属于断点信息,一般由硬件在中断响应阶段自动保存。
  • B 通用寄存器:属于程序现场,由操作系统的中断服务程序保存和恢复。
  • C TLB:是地址转换的硬件缓存,普通中断时不会逐项保存;进程切换时可采用刷新或地址空间标识等机制处理。
  • D Cache:其内容对程序透明,由硬件维护,不在每次中断时由操作系统保存。

简记:硬件保护断点,软件保护现场。

  1. 【2015-24】假定下列指令已装入指令寄存器,则执行时不可能导致CPU从用户态变为内核态(系统态)的是( )。

A. DIV R0, R1 ;(R0) / (R1) → R0

B. INT n ;产生软中断

C. NOT R0 ;寄存器R0的内容取非

D. MOV R0, addr ;把地址addr处的内存数据放入寄存器R0中

解析

答案:C.NOT R0

  • A DIV R0, R1:若 R1=0,会产生除零异常并进入内核态。
  • B INT n:主动产生软中断/陷阱,本身就是进入内核态的一种方式。
  • C NOT R0:只对寄存器内容取反,不访存、不做可能除零的运算,也不主动陷入内核,因而指令本身不可能引起用户态到内核态的转换。
  • D MOV R0, addr:访存可能产生缺页、地址越界或访问权限异常,使 CPU 转入内核态处理。

题干说明指令已经装入 IR,排除了该指令在取指阶段发生缺页的情况;与该指令无关的异步外部中断也不计入“该指令导致”的状态转换。

  1. 【2020-18】下列关于“自陷”(Trap,也称陷阱)的叙述中,错误的是( )。

A. 自陷是通过陷阱指令预先设定的一类外部中断事件

B. 自陷可用于实现程序调试时的断点设置和单步跟踪

C. 自陷发生后CPU将转去执行操作系统内核相应程序

D. 自陷处理完成后返回到陷阱指令的下一条指令执行

解析

答案:A

  • A 错误:自陷由程序主动执行陷阱指令触发,与当前指令同步,属于内部异常,不是外部中断。
  • B 正确:调试器可用陷阱实现断点设置和单步跟踪。
  • C 正确:自陷发生后,CPU 转入内核态执行相应的内核处理程序。
  • D 正确:陷阱指令已经执行完成,因此处理结束后通常从陷阱指令的下一条指令继续执行。
  1. 【2020-20】下列事件中,属于外部中断事件的是( )。

Ⅰ. 访存时缺页

Ⅱ. 定时器到时

Ⅲ. 网络数据包到达

A. 仅Ⅰ、Ⅱ

B. 仅Ⅰ、Ⅲ

C. 仅Ⅱ、Ⅲ

D. Ⅰ、Ⅱ和Ⅲ

解析

答案:C.仅 Ⅱ、Ⅲ

  • Ⅰ 访存时缺页:由当前访存指令触发,是内部异常中的 fault。
  • Ⅱ 定时器到时:由外部定时部件提出请求,与当前指令无关,属于外部中断。
  • Ⅲ 网络数据包到达:由网卡等 I/O 设备提出请求,属于外部中断。

因此只有 Ⅱ、Ⅲ正确。

  1. 【2020-21】外部中断包括不可屏蔽中断(NMI)和可屏蔽中断,下列关于外部中断的叙述中,错误的是( )。

A. CPU处于关中断状态时,也能响应NMI请求

B. 一旦可屏蔽中断请求信号有效,CPU将立即响应

C. 不可屏蔽中断的优先级比可屏蔽中断的优先级高

D. 可通过中断屏蔽字改变可屏蔽中断的处理优先级

解析

答案:B

  • A 正确:NMI 不受普通中断允许位和中断屏蔽字控制,CPU 关中断时仍可响应 NMI。
  • B 错误:可屏蔽中断请求有效不等于立即响应。CPU 通常要等待当前指令结束,而且还必须满足开中断、该请求未被屏蔽及优先级允许等条件。
  • C 正确:NMI 通常用于电源故障、严重硬件错误等紧急事件,其优先级高于可屏蔽中断。
  • D 正确:改变中断屏蔽字可以规定处理中断时允许哪些中断嵌套,从而改变可屏蔽中断的处理优先级。

响应优先级决定多个请求同时到来时先响应谁;处理优先级决定处理某个中断时允许谁打断它。后者可以通过中断屏蔽字调整。

  1. 【2023-21】下列关于硬件和异常/中断关系的叙述中,错误的是( )。

A. CPU 在执行一条指令过程中检测异常事件

B. CPU 在执行完一条指令时检测中断请求信号

C. 开中断中 CPU 检测到中断请求后就进行中断响应

D. 外部设备通过中断控制器向 CPU 发中断结束信号

解析

答案:D

  • A 正确:异常与当前指令相关,CPU 在执行指令的过程中检测异常事件。
  • B 正确:外部中断一般在一条指令执行完毕时检测和响应,以保持精确的程序状态。
  • C 正确:在开中断状态下,CPU 在指令边界检测到可受理的有效中断请求后进入中断响应过程。
  • D 错误:外部设备经中断控制器向 CPU 发送的是中断请求。中断处理结束后,通常由 CPU 或中断服务程序向中断控制器发送 EOI(End of Interrupt,中断结束)命令,而不是由外设向 CPU 发送结束信号。

典型方向为:

公式

(六)指令流水线

把一条指令的执行过程划分为 \(k\) 个功能段,并让多条指令在不同功能段中重叠执行,就形成了指令流水线。经典五段流水线为:

阶段 英文缩写 主要工作
取指 IF 根据 PC 读取指令,更新 PC
译码/取数 ID 译码并读取寄存器操作数
执行 EX ALU 运算、有效地址计算或分支判断
访存 MEM 读取或写入数据存储器
写回 WB 把结果写入通用寄存器

常用公式如下:

  • 若忽略流水段寄存器延时,时钟周期至少为:\(T_{clk}\ge \max(t_1,t_2,\ldots,t_k)\)
  • 若流水段寄存器延时为 \(t_r\),则:\(T_{clk}\ge \max(t_1,t_2,\ldots,t_k)+t_r\)
  • \(k\) 级流水线连续执行 \(n\) 条指令且无阻塞时,总周期数为:\(k+n-1\)
  • 若执行过程中额外插入 \(s\) 个阻塞周期,则总时间为:\(T=(k+n-1+s)T_{clk}\)
  • 实际吞吐率为 \(TP=n/T\);流水线稳定充满后的理想最大吞吐率为 \(1/T_{clk}\)。

指令流水线的基本概念

  1. 【2009-18】某计算机的指令流水线由四个功能段组成,指令流经各功能段的时间(忽略各功能段之间的缓存时间)分别为90ns、80ns、70ns和60ns,则该计算机的CPU时钟周期至少是( )。

A. 90ns

B. 80ns

C. 70ns

D. 60ns

解析

答案:A.90 ns

题目说明忽略各段之间的缓存时间,因此只需取四个功能段时间的最大值:

公式

90 ns 是第一段完成工作所需的最短时间;若选择 80 ns、70 ns 或 60 ns,第一段的数据还未稳定,下一个时钟沿便已到来,流水线不能正确工作。

  1. 【2011-18】下列给出的指令系统特点中,有利于实现指令流水线的是( )。

Ⅰ. 指令格式规整且长度一致

Ⅱ. 指令和数据按边界对齐存放

Ⅲ. 只有Load/Store指令才能对操作数进行存储访问

A. 仅Ⅰ、Ⅱ

B. 仅Ⅱ、Ⅲ

C. 仅Ⅰ、Ⅲ

D. Ⅰ、Ⅱ、Ⅲ

解析

答案:D.Ⅰ、Ⅱ、Ⅲ

  • Ⅰ 指令格式规整且长度一致:便于每周期取出一条指令,译码逻辑也更简单、延迟更稳定。
  • Ⅱ 指令和数据按边界对齐:可以减少跨存储字访问,避免一次取指或访存被拆成多次操作。
  • Ⅲ 只有 Load/Store 指令访存:把“运算”和“访存”分开,使不同指令在各流水段中的行为更规整,便于统一安排流水段。

三项都是 RISC 体系结构适合流水线实现的重要原因。

  1. 【2013-18】某CPU主频为1.03GHz,采用4级指令流水线,每个段的执行需要1个时钟周期。假定CPU执行了100条指令,在其执行过程中没有发生任何流水线阻塞,此时流水线的吞吐率为( )。

A. \(0.25×10^9\) 条指令/秒

B. \(0.97×10^9\) 条指令/秒

C. \(1.0×10^9\)条指令/秒

D. \(1.03×10^9\) 条指令/秒

解析

答案:C.公式 条指令/秒

4 级流水线连续执行 100 条指令且无阻塞,总周期数为:公式

主频为 公式,故总执行时间为:公式

实际吞吐率为:公式

  • A 错在直接用主频除以 4;流水线的各段是重叠工作的,不是每 4 个周期才完成一条指令。
  • B 没有正确计算 100 条指令的总时间。
  • C 正确,计入了流水线填充所需的额外 3 个周期。
  • D 是流水线充满后的峰值吞吐率 公式 条/秒;对有限的 100 条指令而言还要计入装入开销。

指令流水线的基本实现

结构冒险、数据冒险和控制冒险的处理

冒险类型 产生原因 常用处理方法
结构冒险 多条指令同时争用同一硬件资源 增加/分离资源,或阻塞
数据冒险 后续指令所需数据尚未产生 转发、阻塞、编译调度、插入 nop
控制冒险 分支结果或目标地址尚未确定 阻塞、分支预测、延迟分支、推测执行

数据相关通常包括:

  • RAW(写后读,真相关):前指令写,后指令读;基本顺序流水线最需要处理的类型。
  • WAR(读后写,反相关):前指令读,后指令写。
  • WAW(写后写,输出相关):两条指令写同一位置。

在按序发射、按序执行、按序写回的经典五段流水线中,WAR 和 WAW 的操作次序不会颠倒,通常不会形成实际冒险;乱序执行处理器则必须处理它们。

  1. 【2010-19】下列选项中,不会引起指令流水线阻塞的是( )。

A. 数据旁路(转发)

B. 数据相关

C. 条件转移

D. 资源冲突

解析

答案:A.数据旁路(转发)

  • A:转发把前一条指令尚未写回寄存器的结果直接送给后续流水段,是解决数据冒险、减少阻塞的手段,本身不会引起阻塞。
  • B:数据相关可能使后续指令暂时拿不到操作数,从而阻塞。
  • C:条件转移结果未确定时会产生控制冒险,可能阻塞取指。
  • D:多个流水段争用同一资源会产生结构冒险,可能阻塞。
  1. 【2014-16】采用指令Cache与数据Cache分离的主要目的是( )。

A. 降低Cache的缺失损失

B. 提高Cache的命中率

C. 降低CPU平均访存时间

D. 减少指令流水线资源冲突

解析

答案:D.减少指令流水线资源冲突

五段流水线在同一周期中可能既要由 IF 段读取下一条指令,又要由 MEM 段访问数据。若二者共用单端口 Cache,就会争用同一资源;分成指令 Cache 和数据 Cache 后,可以同时完成取指和数据访存。

  • A:分离 Cache 不会直接降低一次缺失发生后的缺失损失。
  • B:容量被固定分配后,整体命中率未必提高,甚至可能下降。
  • C:它不一定缩短单次 Cache 访问延迟,这也不是主要目的。
  • D:可以消除或减少 IF 与 MEM 同周期访存造成的结构冒险。
  1. 【2016-19】在无转发机制的五段基本流水线中,下列指令序列存在数据冒险的指令对是( )。

I1: add R1, R2, R3; (R2)+(R3)→R1

I2: add R5, R2, R4; (R2)+(R4)→R5

I3: add R4, R5, R3; (R5)+(R3)→R4

I4: add R5, R2, R6; (R2)+(R6)→R5

A. I1 和 I2

B. I2 和 I3

C. I2 和 I4

D. I3 和 I4

解析

答案:B.I2 和 I3

寄存器读写关系如下:

题图

I3 在 ID 阶段需要读取 R5 时,I2 尚未在 WB 阶段把结果写回;题设又没有转发机制,因此必须阻塞。只有 I2 和 I3 构成需要处理的数据冒险。

超标量和动态流水线的基本概念

  1. 【2017-17】下列关于超标量流水线特性的叙述中,正确的是( )。

Ⅰ. 能缩短流水线功能段的处理时间

Ⅱ. 能在一个时钟周期内同时发射多条指令

Ⅲ. 能结合动态调度技术提高指令执行并行性

A. 仅Ⅱ

B. 仅Ⅰ、Ⅲ

C. 仅Ⅱ、Ⅲ

D. Ⅰ、Ⅱ和Ⅲ

解析

答案:C.仅 Ⅱ、Ⅲ

  • Ⅰ 错误:缩短流水段处理时间属于提高主频或重新划分流水段,并不是超标量技术的本质。
  • Ⅱ 正确:超标量处理器能够在一个时钟周期内同时发射多条指令。
  • Ⅲ 正确:它常与动态调度、乱序执行等技术结合,以提高指令级并行性。

因此正确的是 Ⅱ、Ⅲ。

  1. 【2017-19】下列关于指令流水线数据通路的叙述中,错误的是( )。

A. 包含生成控制信号的控制部件

B. 包含算术逻辑运算部件(ALU)

C. 包含通用寄存器组和取指部件

D. 由组合逻辑电路和时序逻辑电路组合而成

解析

答案:A

  • A 错误:生成控制信号的是控制部件。数据通路接收和执行这些控制信号,但控制部件本身不属于数据通路。
  • B 正确:ALU 是执行算术、逻辑及地址计算的核心数据通路部件。
  • C 正确:通用寄存器组、PC 以及取指相关部件都属于数据通路。
  • D 正确:数据通路同时包含 ALU、MUX 等组合逻辑和寄存器、流水段寄存器等时序逻辑。
  1. 【2018-20】若某计算机最复杂指令的执行需要完成5个子功能,分别由功能部件A~E实现,各功能部件所需时间分别为80ps、50ps、50ps、70ps和50ps,采用流水线方式执行指令,流水段寄存器延时为20ps,则CPU时钟周期至少为( )。

A. 60ps

B. 70ps

C. 80ps

D. 100ps

解析

答案:D.100 ps

五个功能部件中最慢的是 A,延时为 80 ps;流水段寄存器还带来 20 ps 延时。因此公式

  • 60 ps、70 ps 都小于最慢功能部件本身的 80 ps;
  • 80 ps 漏算了流水段寄存器延时;
  • 100 ps 才能保证最慢流水段和段间寄存器均完成工作。
  1. 【2019-18】在采用“取指、译码/取数、执行、访存、写回”5段流水线的处理器中,执行如下指令序列,其中s0、s1、s2、s3和t2表示寄存器编号。

I1: add s2,s1,s0 // R[s2]←R[s1]+R[s0]

I2: load s3,0(t2) // R[s3]←M[R[t2]+0]

I3: add s2,s2,s3 // R[s2]←R[s2]+R[s3]

I4: store s2,0(t2) // M[R[t2]+0]←R[s2]

下列指令对中,不存在数据冒险的是( )。

A. I1和I3

B. I2和I3

C. I2和I4

D. I3和I4

解析

答案:C.I2 和 I4

逐项分析:

  • A.I1 和 I3:I1 写 s2,I3 读 s2,存在 RAW 冒险。
  • B.I2 和 I3:I2 写 s3,I3 读 s3,存在 RAW 冒险,而且是典型的 load-use 相关。
  • C.I2 和 I4:I2 写 s3;I4 读取 s2 和 t2,并不读取 s3,所以二者之间不存在寄存器数据冒险。二者虽访问同一主存地址,但在基本按序流水线中,较早的 load 会先于较晚的 store 到达 MEM 段,访存次序不会颠倒。
  • D.I3 和 I4:I3 写 s2,I4 需要读取 s2 作为 store 的待写数据,存在 RAW 冒险。
  1. 【2020-17】下列给出的处理器类型中,理想情况下,CPI为1的是( )。

Ⅰ. 单周期CPU

Ⅱ. 多周期CPU

Ⅲ. 基本流水线CPU

Ⅳ. 超标量流水线CPU

A. 仅Ⅰ、Ⅱ

B. 仅Ⅰ、Ⅲ

C. 仅Ⅱ、Ⅳ

D. 仅Ⅲ、Ⅳ

解析

答案:B.仅 Ⅰ、Ⅲ

  • Ⅰ 单周期 CPU:每条指令恰好占用一个时钟周期,CPI 为 1。
  • Ⅱ 多周期 CPU:一条指令通常需要多个时钟周期,平均 CPI 大于 1。
  • Ⅲ 基本流水线 CPU:理想稳态下每个周期完成一条指令,CPI 为 1。
  • Ⅳ 超标量流水线 CPU:理想情况下每周期可完成多条指令,IPC 大于 1,因而 CPI 可以小于 1。
  1. 【2023-19】在采用“取指、译码/取数、执行、访存、写回” 5 段流水线的 RISC 处理器中,执行如下指令序列(第一列为指令序号),其中s0、s1、s2、s3和t2表示寄存器编号。
I1     add s2, s1, s0   // R[s2] ← R[s1] + R[s0]
 I2     load s3, 0(s2)   // R[s3] ← M[R[s2] + 0]
 I3     beq t2, s3, L1   // if R[t2] = R[s3] jump to L1
 I4     addi t2, t2, 20  // R[t2] ← R[t2] + 20
 I5 L1:

若采用转发(旁路)技术处理数据冒险,采用硬件阻塞方式处理控制冒险,则在 I1~I4 执行过程中,发生流水线阻塞的指令有( )。

A. 仅 I3

B. 仅 I2、I4

C. 仅 I3、I4

D. 仅 I2、I3、I4

解析

答案:C.仅 I3、I4

依赖关系与处理过程如下:

  1. I1 → I2:I1 的 add 产生 s2,I2 用 s2 计算访存地址。I1 在 EX 段末产生结果,可在下一周期转发给 I2 的 EX 段,因此 I2 不阻塞。
  2. I2 → I3:I2 的 load 从主存读取 s3,I3 紧接着用 s3 做分支比较。load 数据到 MEM 段末才产生,来不及供下一周期的 I3 EX 段使用,这是典型的 load-use 冒险,即使有转发,I3 仍需阻塞一个周期。
  3. I3 → I4:I3 是条件转移。题设采用硬件阻塞处理控制冒险,因此在分支方向和目标尚未确定时,后续 I4 必须等待,故 I4 发生阻塞。若分支成立,I4 随后被取消;若不成立,I4 再继续执行。

可用简化时序观察前两条相关

题图

因此发生流水线阻塞的是 I3 和 I4。

  1. 【2024-19】在采用“取指、译码/取数、执行、访存、写回” 5 段流水线的 RISC 处理器中,下列关于指令流水线数据冒险处理的叙述中,错误的是

A. 相邻两条指令中的操作数相关可能引起数据冒险

B. 在数据相关的指令间插入“气泡”能避免数据冒险

C. 所有数据冒险都可以通过加入转发(旁路)电路解决

D. 所有数据冒险都能通过调整指令顺序和插入 nop 指令解决

解析

答案:C

  • A 正确:相邻指令存在 RAW 等操作数相关时,生产者可能尚未生成数据,因而可能产生数据冒险。
  • B 正确:插入气泡可推迟后继指令,等到所需数据可用后再执行,从而避免冒险造成错误。
  • C 错误:转发不能解决所有数据冒险。典型反例是紧邻的 load-use 冒险:load 的数据在 MEM 段末才得到,后继指令同周期的 EX 段无法及时使用,仍需插入至少一个气泡。
  • D 正确:在保持程序语义的前提下,可把无关指令调到相关指令之间;若没有可调度的指令,则插入足够的 nop,等生产者写回后再让消费者读取。

(七)多处理器基本概念

Tip

  1. SISDLSIMD、MIMD、向量处理器的基本概念
  2. 硬件多线程的基本概念
  3. 多核处理器(multi-core)的基本概念
  4. 共享内存多处理器(SMP)的基本概念
  1. 【2022-22】下列关于并行处理技术的叙述中,不正确的是( )。

A. 多核处理器属于MIMD结构

B. 向量处理器属于SIMD结构

C. 硬件多线程技术只可用于多核处理器

D. SMP中所有处理器共享单一物理地址空间

解析

答案:C

  • A 正确:多核处理器的各核心可执行不同的指令流并处理不同数据,属于 MIMD 结构。
  • B 正确:向量处理器用一条向量指令对一组数据元素执行相同操作,属于 SIMD 结构。
  • C 错误:硬件多线程是处理器核心内部保存、调度多个线程上下文的技术,单核处理器同样可以采用,并不以多核为前提。
  • D 正确:SMP 中所有处理器共享主存,看到统一的物理地址空间,并具有对等的访问地位。