跳转至

Relax1000 计算机组成原理 · 第5章 中央处理器(CPU) · 解析

第5章 中央处理器(CPU)

本章 86 题;解析册印刷页 123–141。

速对答案(原书): CBCCC ACACD DBCDC BABBC DADBC ABCCD BDBBB DCCBA CCDAA DCCCB CBBCB BCADC BABDA DABCD DDCBD BBCCC BABCA A

Q1

速对表原值: C

详细解析标注: C

CPU 的主要功能包括指令控制(控制程序的执行顺序)、操作控制(产生控制信号控制部件执行操作)、时间控制(对各种操作进行时间上的控制)和数据加工(对数据进行算术和逻辑运算),而数据存储主要由存储器完成,C 错误。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q1 原页片段

返回题目

Q2

速对表原值: B

详细解析标注: B

A选项:首先需要注意一点,不管是应用程序员还是汇编程序员,都不能直接读写程序计数器(PC),它的值一般是由硬件自动更新(如取指后自增)或通过跳转指令间接修改(如jmp、call),因此我们说 PC 对于汇编程序员可见(2010 真题),袁书说法:PCPSW 属于用户部分可见寄存器;从另一个角度说,例如中断响应保存断点(PC PSW),之所以我们通过硬件压栈保存,而不是像现场信息(通用寄存器等)通过软件保存(例如通过汇编指令 mov 等保存),这个也是重要原因;注意,PC 是 X86 里的程序计数器,而像 MIPS 架构里,通常使用 ra 寄存器作为程序计数器,此时的 ra 寄存器由于可以通过汇编指令显式保存,因此 ra 对于汇编程序员来说,可直接读写;B 选项:变址寄存器(如 x86 中的 SI、DI,或通用寄存器用作变址)是用户级通用寄存器,通常用于变址寻址,面向用户,可用于访问字符串、数组、表格等成批数据或其中的某些元素;变址寻址时,指令中提供的形式地址是一个基准地址,位移量由变址寄存器给出,因此应用程序员可直接读写;C 选项,当 CPU 处于用户态时,SP 指向用户栈栈顶,此时应用层程序员可直接读写,当 CPU 处于内核态时,SP 指向内核栈栈顶,此时应用层程序员没有权限读写,只有系统程序员可以读写;D:PTBR 存放的是页表的起始地址,页表属于内核数据结构,那 PTBR 肯定只能由 OS 内核进行读写;

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q2 原页片段

返回题目

王道核实旁注(非 Relax 原文):作废

单选不唯一:按教材的用户可见寄存器口径,程序计数器、变址寄存器和堆栈指针均在列,A、B、C 都有教材依据(王道 2027 第202页 [block: b_202_8])。且 MIPS 的 $ra 是返回地址寄存器,不是程序计数器 PC;原解析此处有事实性错误。

Q3

速对表原值: C

详细解析标注: C

Ⅰ. 程序状态字寄存器(PSW, Program Status Word)可见,这是系统级程序员用来控制和查看处理器状态的寄存器,比如中断标志、状态标志等。其内容由 CPU 根据指令执行结果自动设定,用户程序执行过程中可能会隐含读取到其部分内容(如 OFCF等溢出标志位),以确定程序的执行顺序(例如跳转指令进行转移条件判断),但是不能直接修改 PSW 寄存器的值;

Ⅱ. 段表基址寄存器,可见,用于支持分段机制,系统级程序员需要设置和管理段表基址。

Ⅲ. 指令寄存器不可见,存储当前正在执行的指令,一般由硬件自动操作,程序员不能直接访问。

Ⅳ. 程序计数器可见Ⅴ. Cache 不可见,Cache 是高速缓存,属于硬件内部结构,程序员不能直接访问Ⅵ. 存储器数据寄存器(MDR, Memory Data Register)不可见,用于临时存储从内存读取的数据或要写入内存的数据,通常不被程序员直接访问。(同理 MAR 也不可见)Ⅶ. 系统堆栈指针寄存器(SP, Stack Pointer)可见,系统级程序员可以访问和修改堆栈指针来管理函数调用和局部变量。Ⅷ. 地址寄存器专门用来存放首地址或指针信息,如变址寄存器、基址寄存器等,因此可见;Ⅸ. 中断屏蔽字寄存器可见,系统程序员可通过修改该寄存器调整中断处理顺序;

返回题目

Q4

速对表原值: C

详细解析标注: C

A 属于,减少访问主存的次数:更多寄存器允许更多数据暂存于 CPU 内部,减少对慢速主存的访问。B 属于,提高 CPU 的处理效率:减少内存访问延迟,CPU 能更快执行指令。C 不属于,缓存命中率取决于缓存的大小、关联性、替换算法和访问局部性,与通用寄存器数量无关。增加通用寄存器可以减少对主存的访问次数(从而间接减少缓存访问次数),但不会改变缓存本身的命中率(即命中访问占总访问的比例)。例如,如果缓存命中率原本为 90%,增加寄存器后访问次数减少,但命中率可能保持不变(如访问100次命中90次 vs. 访问50次命中45次,命中率仍为90%)。许多人容易混淆“减少内存访问”和“提高缓存效率”,误以为减少访问次数自然会提升缓存命中率。这在计算机体系结构题中是一个常见陷阱,因为缓存和寄存器都涉及存储层次,但缓存命中率是缓存系统的固有属性,不受寄存器数量影响。D 属于,通用寄存器每一个都有对应的地址编号,更多的寄存器给了程序员和编译器更多灵活性,可以更好地分配变量,减少寄存器压力。

返回题目

Q5

速对表原值: C

详细解析标注: C

C 正确,程序计数器 PC 必须要有,因为它用来保存下一条要执行的指令的地址,CPU 需要知道从哪里取下一条指令,否则无法顺序执行或处理跳转。

A 错误,在单周期 CPU 设计中,指令直接从指令存储器(或指令 cache)中获取并立即执行,而不需要显式的 IR 寄存器(例如,指令位直接连接到控制逻辑)。因此 IR 不是必需设置的,取决于实现方式。

B 错误,存储器数据寄存器 MDR 用于在 CPU 和内存之间传输数据。在指令集设计中,如果内存访问通过通用寄存器直接处理(如在 load-store 架构中),则 MDR 不是必需设置的。它通常作为内存接口的缓冲,但可通过其他方式实现。

D 错误,存储器地址寄存器 MAR 用于存储要访问的内存地址。类似地,如果地址可直接从通用寄存器或 ALU 输出驱动到地址总线,则 MAR 不是必需设置的。

返回题目

Q6

速对表原值: A

详细解析标注: A

PC(程序计数器) 存储下一条指令的地址,其位宽通常与主存地址总线位宽相关,但不一定相等。反例:

  • x86 实模式中,物理地址由段地址(16 位)左移 4 位加上偏移量(16 位)组成,形成 20 位物理地址。此时 PC(IP)为 16 位,而地址总线为 20 位,PC 位宽小于地址总线位宽。

  • 指令对齐优化:某些架构中,指令按字对齐(如 4 字节对齐),PC 的低位固定为 0(如 ARM中 PC 的最低 2 位为 0),此时 PC 的有效位数可能少于地址总线位宽。因此 PC 的位宽可能小于或等于地址总线位宽,但不一定相等,因此选项 A 错误。在定长指令字系统(如 MIPS、ARM)中,所有指令长度固定(如 32 位),IR 的位宽必须等于指令字宽度,以完整保存指令。MAR(内存地址寄存器)保存当前访问的内存地址,其位宽需覆盖整个物理地址空间。地址总线位宽决定了可寻址的物理地址范围,因此 MAR 的位宽必须与地址总线位宽相等。MDR(内存数据寄存器)暂存从内存读取或写入的数据,其位宽需与数据总线宽度匹配,以保证一次传输完整的数据单元。例如,若数据总线为 64 位,MDR 也需为 64 位,以避免多次传输。(虽然理论上 MDR 可以和数据总线宽度不一样,但是 408 范围内可以认为他们相等)

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q6 原页片段 第5章 Q6 原页片段

返回题目

王道核实旁注(非 Relax 原文):按王道作废

2027 王道计组第201页 [block: b_201_7] 的 408 简化口径为:PC/MAR 看地址线,IR 看指令字长,MDR 看数据线。因此本题 A、B、C、D 都正确,无错误项。原解析引入 x86 实模式、指令对齐等工程变体,不能覆盖教材结论。

Q7

速对表原值: C

详细解析标注: C

C 错误,顺序执行时,PC 的值不一定是+1,具体增加的值跟指令字长和编址单位有关,比如 32 位定长指令,按字节编址,那么按 PC+4 更新。

B 正确,调用指令(如 call)将返回地址压栈后,立即跳转到被调用过程的入口地址,因此执行后PC 的值就是入口地址。

D 正确,无条件转移指令(如 jump)直接修改 PC 为指定的目标地址,执行后 PC 的值即为转移目标地址。而条件转移指令(如 je、jne)根据 PSW(程序状态字)中的标志位(如 CF、OF、ZF)决定是否跳转。

A 正确,指令周期内 PC 可能改变 2 次的情况(非单周期处理器),比如:在多周期处理器或流水线处理器中,指令周期可能被拆分为多个阶段(如取指、译码、执行、访存、写回)。PC 可能被修改两次:

①在取指阶段结束时,PC 通常被更新为下一条指令的地址(如 PC = PC + 4),为后续指令做准备。

②如果当前指令是分支或跳转指令(如 JMP、BEQ),在执行阶段结束时/访存阶段结束时(看具体电路设计),PC 会根据条件更新为分支目标地址。而单周期处理器中 PC 只改变一次,因为在单周期处理器中,所有指令的执行(包括取指、译码、执行、写回)都在一个时钟周期内完成。PC 仅在指令周期结束时被更新一次:

①顺序指令,PC 更新为 PC + 4(或其他增量)。

②分支/跳转指令,PC 直接更新为目标地址。PC 不会在中间阶段被修改,因为所有操作是组合逻辑的组合,PC(所有寄存器)的更新是原子操作(发生在时钟边沿)。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q7 原页片段

返回题目

Q8

速对表原值: A

详细解析标注: A

处理器根据自身的时钟信号来对指令的执行进行定时,但是并不是每一个时钟信号就开始执行一条新的指令,例如在多周期处理器(非流水线)中,一条指令的执行需要分解成多个阶段进行,每个阶段在一个时钟周期内完成一个特定的功能,因此每来一个时钟开始执行一个阶段性操作,A 错误。每来一个时钟开始进行阶段性操作,因此必须确定时钟的那一刻算开始,通常这个开始点或是时钟信号的上升沿或是下降沿,称为触发边沿。触发器或寄存器等状态元件总是在触发边沿开始改变状态,B 正确。为保证每个阶段的操作都能在一个时钟周期内完成,时钟周期必须足够长,以保证数据在最长延迟的组合逻辑电路中能够传输完成。因此时钟周期以相邻状态单元最长组合逻辑延迟为基准确定,C 正确。D 显然正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q8 原页片段 第5章 Q8 原页片段

返回题目

Q9

速对表原值: C

详细解析标注: C

A. 正确,指令周期是指 CPU 执行一条完整指令所需的时间,它可以被分解为多个机器周期(如取指周期、执行周期等)或更细粒度的时钟周期(CPU 时钟的基本单位)。B.正确,在单周期 CPU 设计中,所有指令(包括加法和乘法)都在一个时钟周期内完成,因此指令周期等同于一个时钟周期。时钟周期的长度通常根据最复杂指令(如 LOAD 指令)的延迟来设定,以确保所有指令都能在一个周期内完成。C.错误,指令周期的长度取决于指令的复杂度和 CPU 的设计:

  • 在单周期 CPU 中,所有指令周期长度相同(即一个时钟周期),但加法指令通常比乘法指令简单,时钟周期的长度可能被拉长以适应乘法指令,导致效率较低。

  • 在多周期 CPU 或流水线 CPU 中,不同指令的执行时间通常不同:加法指令可能只需一个或几个时钟周期,而乘法指令由于涉及更复杂的操作(如迭代计算),可能需要更多时钟周期。因此,乘法指令和加法指令的指令周期并不总是一样长。

D 正确,无论指令类型如何,CPU 执行任何指令的第一步都是从内存中取出指令,然后才能进行解码、执行等后续阶段。这是指令执行的基本流程。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q9 原页片段

返回题目

Q10

速对表原值: D

详细解析标注: D

Ⅰ. MAR ←Ad(IR):将指令中的形式地址字段的值传输到存储器地址寄存器(MAR),直接寻址和间接寻址都是可能的。Ⅱ是可能的。MAR ← (PC):将程序计数器(PC)的内容传输到地址寄存器(MAR)。寻址方式角度:在 PC 相对寻址或取指令阶段,PC 的值常被用于地址计算或内存访问:

①取指令阶段:PC 的内容传输到 MAR,以便从内存读取指令(这是指令周期的公共操作)。

②PC 相对寻址:操作数地址由 PC 值加上偏移量计算得出,计算前可能需要将 PC 值加载到 MAR或相关寄存器。Ⅲ是可能的。MAR ← (Ri):将通用寄存器 Ri 的内容传输到地址寄存器(MAR)。寻址方式角度:在寄存器间接寻址中,通用寄存器Ri存储操作数的地址,该地址可直接加载到 AR以访问内存;例如,指令如 MOV [Ri], ... 或 LOAD [Ri] 需要将 Ri 的内容(地址)设置到 MAR。Ⅳ是可能的。Ri ← (MDR):将数据缓冲寄存器(MDR)的内容传输到通用寄存器 Ri。寻址方式角度:在数据加载操作中,MDR 暂存从内存读取的数据,之后需传输到通用寄存器:例如,在直接寻址或寄存器间接寻址的加载指令(如 MOV Ri, [addr])中,数据从内存读到 DR 后,再传输到 Ri。

返回题目

Q11

速对表原值: D

详细解析标注: D

B.正确,寄存器寻址(如 ADD R1, R2)的操作数直接来自寄存器,无需访存取操作数。,因此不需要单独的取数周期("取数周期"特指从内存取操作数)D.错误,取指周期的微程序是微程序控制器直接提供,而间址周期的微程序或执行周期的微程序,都是在取指周期过去后,译码器分析指令操作码之后得到的

返回题目

Q12

速对表原值: B

详细解析标注: B

B 错误,存储器的读/写事务(访问主存)通常比 CPU 内部操作(如寄存器访问或 ALU 计算)慢得多(内存访问延迟大)。因此,机器周期的宽度(即持续时间)应以存储器访问时间为基准来确定,以确保有足够时间完成内存操作。如果以 CPU 内部操作时间为基准,机器周期会太短,无法完成内存访问,导致错误。早期设计中,机器周期的长度常由内存速度决定。

C 正确,早期三级时序系统(指令周期、机器周期、时钟周期)中,为简化设计,许多系统采用固定时序:所有指令有相同指令周期、相同机器周期数(如取指、执行等),且每个机器周期包含固定数量的时钟节拍(T-states)。

D 正确,现代 CPU 引入 cache 后,无需慢速主存访问。因此,指令周期是变长的(不同指令执行时间不同),直接由时钟周期组成,不再需要“机器周期”这一概念(机器周期原是为管理慢速内存总线事务而设)。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q12 原页片段

返回题目

Q13

速对表原值: C

详细解析标注: C

间址周期是指当指令采用间接寻址方式时,CPU 获取操作数有效地址的过程,C正确。

返回题目

Q14

速对表原值: D

详细解析标注: D

指令译码器对指令的操作进行译码,所以选 D。

返回题目

Q15

速对表原值: C

详细解析标注: C

数据通路定义:数据在功能部件之间传输的物理路径,包含 PC、通用寄存器、ALU、暂存寄存器、PSW 状态寄存器等运算存储部件;CU(控制单元)是产生控制信号、指挥通路工作的控制器,不属于数据通路本身,只是控制数据通路运行。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q15 原页片段

返回题目

Q16

速对表原值: B

详细解析标注: B

数据通路是 CPU 中实现数据流动和处理的路径,主要功能是实现 CPU 内部的运算(如 ALU 运算)和数据传输(如寄存器之间、寄存器与 ALU 之间的数据传输),B 正确;存储程序和数据是存储器的功能,A 错误;控制指令执行顺序是控制器的功能,C 错误;控制信号(如RegWrite,ALUOp)由控制单元生成,而非数据通路。数据通路被动响应控制信号(如根据 ALUOp 执行加法),但不产生控制信号,D 错误。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q16 原页片段

返回题目

Q17

速对表原值: A

详细解析标注: A

在单周期数据通路中,所有指令的执行时间相同,都等于最长指令的执行时间,以确保所有指令都能在一个时钟周期内完成,A 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q17 原页片段

返回题目

Q18

速对表原值: B

详细解析标注: B

A 正确,这也可以看作是时钟周期的定义,和 19 年真题中“时钟周期以相邻状态单元间组合逻辑电路的最大延迟为基准确定”的含义一样;

B 错误,MIPS 数据通路中,寄存器堆的边沿触发写入和异步读出机制已经处理了同一个周期内的读写操作,不需要额外的备份。读写同一个寄存器时,读出自然得到旧值,写寄存器是根据时钟结束时的时钟沿时候进行数据更新,不影响时钟内的读操作,无需备份。【补充】:寄存器堆的操作特性:

  • 在 MIPS 数据通路中,寄存器堆(register file)通常有两个读端口和一个写端口。

  • 写入操作:使用边沿触发(例如,时钟上升沿),在时钟边沿瞬间更新寄存器内容。

  • 读出操作:是组合逻辑(异步),输出基于输入的地址立即响应,不需要时钟边沿。

  • 在同一个时钟周期内,寄存器堆可以同时进行读和写操作(例如,一条指令读取源寄存器并写入目的寄存器)。

C 正确,时钟周期内的操作流程何为边沿触发寄存器:在时钟信号(如上升沿)瞬间捕获输入数据,并保持该值直到下一个时钟沿。读取的是上一周期存储的值(时钟沿前的状态),写入的是下一周期的值(时钟沿后更新)。因此同一时钟周期内,前半段组合逻辑用寄存器的旧值计算,后半段计算结果作为新值在时钟沿被写入寄存器。另外

注意:从寄存器输出 → 组合逻辑计算 → 到达下一寄存器输入的时间,必须 < 一个时钟周期,否则导致时序违例。(软硬件原理原文补充:在这种设计下,必需保持时钟周期足够长,以使得当有效的时钟边沿到来之时,输入已经稳定。状态单元的改变由时钟边沿触发,所以不可能在一个时钟周期之内出现反馈)D 正确;补充:如果该寄存器不是每个时钟周期都进行修改,那么它就需要这个写控制信号,写使能和时钟都是输入信号,只有当写使能有效并且时钟边沿到来之时,状态单元才改变状态;

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q18 原页片段 第5章 Q18 原页片段

返回题目

Q19

速对表原值: B

详细解析标注: B

组合逻辑元件的输出只取决于当前的输入,组合电路不含存储信号的记忆单元。组合电路的定时不受时钟信号的控制,所有输入信号到达后,经过一定的逻辑门延迟,输出端的值被改变,并一直保持其值不变,直到输入信号改变。数据通路中常用的组合逻辑元件有多路选择器(MUX)、加法器(Adder)、算术逻辑部件(ALU)、译码器(Decoder)、三态门、符号扩展单元等;时序逻辑元件(状态元件)任何时刻的输出不仅与该时刻的输入有关,还与该时刻以前的输入有关,因而时序电路必然包含存储信号的记忆单元。寄存器、GPRS、理想存储器、cache 都属于时序逻辑元件。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q19 原页片段

返回题目

Q20

速对表原值: C

详细解析标注: C

本题灵感来自于 2024 年 408 真题 43 题的第二小问,属于单周期数据通路的考察,完全可以当大题做,难度较大,建议目标高分的同学务必理解整个数据通路不同指令数据的流向,控制信号的设置;

Ⅰ正确,k 路选择器,应该有 k 路输入,因而控制端 S 的位数应该是 left lceil log_2k right rceil ,例如,对于 3 路或 4 路选择器,S 有两位;对于 5-8 路选择器,S 有 3 位。

Ⅱ正确,整个访存过程为

①根据主存地址中的 cache 组号找到对应组;

②将主存地址中的标记与对应组中每个行的标记 Tag 进行比较;

③将比较结果和有效位 V 相“与”(观察硬件电路图中的比较器和与门);

④若有一路比较相等并有效位为 1,则输出“Hit”(命中)为 1,并选中这一路 cache 行中的主存块;

⑤在“Hit”为 1 的情况下,根据主存地址中的块内地址从选中的一块内取出对应单元的信息,若“Hit”不为 1,则 CPU 要到主存去读一块信息到 cache 行中。

Ⅲ错误,对于多路选择控制信号,0 和 1 均表示有效信号,以选择不同的输入作为输出。对其他信号来说(如 RegWrite),1 表示有效,0 表示无效。

Ⅳ错误,根据图中信息可知,控制信号 MemToReg 控制 MUX3,当 MemToReg = 0 时,选择ALUResult 这个分支作为输入,其作用是用于 R 型指令例如 add 指令把寄存器相加结果写回寄存器堆;当 MemToReg = 1 时,选择 ReadData 这个分支作为输入,其作用是用于 lw 指令读取数据存储器的数据并送入寄存器堆写数据端口 WD;

Ⅴ正确;根据图中信息可知,控制信号 AluSrc 控制 MUX2,当 AluSrc = 0 时,选择 R2 这个分支作为输入,其作用是用于 R 型指令或 I 型指令,例如 add 指令中选择 ALU 的 SrcB 数据来源为寄存器堆;当 AluSrc = 1 时,选择经过符号扩展单元扩展后的立即数 SignImm 这个分支作为输入,执行 sw 指令时,根据 sw 指令的功能 R[rt]→M[R[rs]+SignExt(imml6)]可知,需要选择该分支作为 ALU 的 SrcB 然后与变址寄存器 rs 的值相加后形成最终的主存地址;【扩展】:如图,执行 beq 指令时,MUX2 的控制信号 AluSrc 的取值是 0 还是 1?Plain Text beq rs, rt, imm16 #RTL 功能描述:if(R[rs]==R[rt]) PC+4+SignExt(imml6)<<2-PC答案是 0;执行 beq 指令时,ALU 的输入是 rs 和 rt 对应的寄存器,需要比较这两个寄存器的值是否相等;指令字中的立即数字段为16 位有符号数,是分支目标地址与顺序指令地址 PC+4 之间的字偏移,可正可负(既可向后跳转,也可向前跳转)。由于指令长度为4字节,因此需要将16位立即数符号扩展成32 位后并左移两位生成 32 位字节偏移量,再加上顺序指令地址 PC+4 才能得到分支目标地址。当比较条件满足时,用分支目标地址修改 PC 的内容,即产生分支跳转;反之将 PC 的值更新为 PC+4,程序顺序执行。这里 PC 输入端也需要增设一个多路选择器,用于选择顺序执行还是跳转执行。具体数据流向如图所示

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q20 原页片段 第5章 Q20 原页片段

返回题目

Q21

速对表原值: D

详细解析标注: D

指令译码器不需要显式控制信号,可直接由输入的指令生成对应指令的逻辑信号,D 错误;ALU 的运算类是由控制器输出的 ALU 控制信号控制的,A 正确;MUX 的作用是从多个输入中选择一路输出,选择逻辑由选择信号决定。该选择信号由控制器生成,用于指定数据通路的走向,需要控制信号,B 正确;三态门的使能信号由控制器发出,C 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q21 原页片段

返回题目

Q22

速对表原值: A

详细解析标注: A

Ⅰ. 正确Ⅱ.数据通路确实可分为总线式(部件通过共享总线连接)和非总线式(点对点连接),但单周期处理器通常不是典型的多总线数据通路。单周期处理器(如经典 RISC 设计)使用硬连线控制和非总线结构(如直接连接和多路选择器),是专用数据通路而非多总线。总线式结构更常见于多周期或微程序控制处理器中。

Ⅲ.总线式数据通路(尤其是单总线结构)在任意时刻只能传输一组数据,导致流水线中多个阶段无法同时访问总线,从而产生资源冲突。例如,在五级流水线中,取指、译码、执行、访存、写回阶段可能都需要访问总线,但单总线无法支持这些操作并行进行。因此,总线式数据通路无法有效实现指令流水线。

Ⅳ.【该选项是袁书习题解答 P109 原话】非总线型数据通路(如专用路径结构)通常允许并行操作,避免总线争用,更适合实现高性能的流水线设计。注意,单周期和流水线都属于专用数据通路,根据指令执行过程中的数据和地址的流动方向安排连接电路,避免使用共享的总线。

Ⅴ.指令的执行阶段会根据其类型(如算术指令、访存指令、跳转指令)而使用不同的路径和部件(如 ALU、内存访问模块等)。然而,取指令阶段通常是统一的:程序计数器(PC)提供地址,从指令存储器中取出指令,加载到指令寄存器(IR)中。因此,该说法准确描述了数据通路中指令执行路径的差异性与一致性。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q22 原页片段

返回题目

Q23

速对表原值: D

详细解析标注: D

阻塞译码阶段可以禁止新指令进入,但仍需阻塞执行及后续阶段来暂停当前指令推进,D 错误;寄存器采用边沿触发(如时钟上升沿锁存数据),其控制信号需满足建立时间(Setup Time)要求,即在时钟沿到来前保持稳定,避免时序错误,A 正确;存储器访问时,地址信号需先稳定(前半周期),再激活读信号(后半周期),以确保地址有效,B 正确;在流水线中,译码阶段解析指令操作码,生成 AluOp 信号,并传递至执行阶段控制 ALU 操作,C 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q23 原页片段 第5章 Q23 原页片段

返回题目

Q24

速对表原值: B

详细解析标注: B

Ⅰ正确,RA 宽度有 5 位,最多可有25 = 32 个寄存器;

Ⅱ正确、IV 错误,寄存器堆的读口由 MUX 构成,输入是各个寄存器的内容,通过指令中寄存器编号来决定具体是哪个寄存器输出,读操作只跟当前输入和控制信号相关,无需时钟控制,所以读操作是组合逻辑操作,IV 错误。因为采取了 busA 和 busB 两个输入总线和 busW 输出总线,可以实现两个寄存器取数据进行运算然后写入目的寄存器,II 正确。如左图所示,因为三个总线各自传不同数据,不会发生冲突,故无需 Y 和 Z,只要一个时钟周期(节拍)即可。

Ⅲ错误(务必掌握)多路选择器是一种能够从多个输入信号中选择一个输出的信号转换设备。译码器是一种将二进制编码转换为一组特定输出信号的设备。在寄存器堆中,译码器常常用于地址译码,从而控制对特定寄存器的访问。执行寄存器写相关指令时,指令中的寄存器编号被送到一个地址译码器进行译码,选中某个寄存器进行写入,读出时寄存器编号作为控制信号来控制一个多路选择器,选择相应的寄存器读出。译码器:这里是 5-32 译码器,输入端有 5 位,输出端有25 = 32 位,记为〔公式/符号见原页版面片段〕0,〔公式/符号见原页版面片段〕0,〔公式/符号见原页版面片段〕0,…,〔公式/符号见原页版面片段〕2〔公式/符号见原页版面片段〕−1;若输入端对应的二进制值为〔公式/符号见原页版面片段〕,那么输出端只有〔公式/符号见原页版面片段〕为 1;从图中我们可以看到,这个译码器的 32 个输出端分别连接着 32 个寄存器,然后跟 clk 经过与门相与后作为它们的写使能端口;当需要执行写操作时,将写入寄存器的编号送入译码器的输入端口,这样会有一个输出端口输出为 1,等到 clk 到来,与之相与后,则会使被选中的那个寄存器的写使能有效,然后,busW 传来的内容便会被写入该寄存器;至于其他寄存器,由于写使能无效,因此不会被写入数据。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q24 原页片段

返回题目

PDF 字形回源提示(非原文)

原 PDF 的部分数学字体没有 Unicode 映射;可搜索文本保留了明确占位,公式和符号以本题的原页片段为准。

Q25

速对表原值: C

详细解析标注: C

三态门类似于一个开关,开关的连接或断开由三态门的控制端决定,C 正确。

返回题目

Q26

速对表原值: A

详细解析标注: A

MIPS 架构的 beq 指令的功能是,根据指令指定的两个寄存器内容是否相等(通过做减法来比较是否相等),确定是否跳转到指定的转移目标地址执行。因此,其通路设计中,ALU 的两个输人都来自寄存器堆,ALU 的控制信号一定为 subu(即 ALU 做减法),并且,一定有一个加法器用于计算转移目标地址。因为转移目标地址的计算需要将 PC 的内容和偏移量(16 位立即数符号扩展为 32位)相加,所以,数据一定会流经符号扩展部件。因此,

①、

②、

③ 的叙述是正确的,即正确选项为A。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q26 原页片段

返回题目

Q27

速对表原值: B

详细解析标注: B

组合逻辑电路不一定需要控制信号参与,如指令译码器,A 错误。时钟周期本身就是取自所有组合逻辑和时序逻辑部件中的延迟最大值再加一定的缓冲值,所以 C 错误,寄存器由触发器组成,属于时序逻辑部件,D 错误。单周期处理器需要在一个时钟周期内完成所有操作,所以取指必须不受时钟控制就能完成,因此指令存储器必须被设置成组合逻辑电路单元,B 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q27 原页片段 第5章 Q27 原页片段

返回题目

Q28

速对表原值: C

详细解析标注: C

根据题目的描述可知,取数 Load 是最复杂的指令,在该单周期数据通路中,应该以 Load 所用时间作为时钟周期。因此,在不考虑多路复用器、控制单元、PC、符号扩展单元和传输线路等延迟的情况下,该计算机时钟周期为取指令时间(3ns)十寄存器堆的读取时间(1ns)+ALU 运算时间(2ns)+存储器取数时间(3ns)+寄存器堆写时间(1ns)=10ns。选项 C 是正确的。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q28 原页片段

返回题目

Q29

速对表原值: C

详细解析标注: C

IR 存放指令,包括该条指令的全部信息,如操作码、地址码、寻址特征等等。

返回题目

Q30

速对表原值: D

详细解析标注: D

在多周期数据通路中,一条指令的执行由多个时钟周期(阶段)来控制,不同指令所含时钟周期数不同,Ⅰ正确;每个不同的阶段数据通路完成不同的功能,所以控制信号在每个时钟周期到来的时候改变其值,Ⅳ正确。在单周期数据通路中,每条指令在一个时钟周期内完成,Ⅱ正确;在指令取出后,指令操作码字段及相关的控制字段送到控制逻辑,由控制逻辑统一得到各个控制信号,Ⅲ正确;每个控制信号被送到相应的控制点,一直作用在数据通路中,每个部件只完成一种功能,不会被多次使用,Ⅴ正确。综上所述,本题答案为 D。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q30 原页片段

返回题目

Q31

速对表原值: B

详细解析标注: B

A 错,因为是单周期处理器,每个时钟周期执行一条指令,所以每来一个时钟,PC 的值都会被更新一次,因而,PC 无须“写使能”信号控制。单周期处理器取值部件:假定指令专门存放在指令存储器中,它只有读操作,读指令操作可看成是组合逻辑操作,因此无须控制信号的控制,只要给出指令地址,经过一定的“取数时间”后,指令被送出。指令的地址来自 PC,有专门的下地址逻辑来计算下条指令的地址,然后送 PC。因为是单周期处理器,每个时钟周期执行一条指令,所以每来一个时钟,PC 的值都会被更新一次,因而,PC 无须“写使能”信号控制。下地址逻辑中,要区分是顺序执行还是转移执行。若是顺序执行,则执行PC+4;若是转移执行,则要根据当前指令是分支指令还是跳转指令来计算转移目标地址。

B 正确,因为 CPU 需要从存储器中读取指令。

C 错误,因为该时钟周期结束后,要执行下一条指令,在执行下一条指令之前,必须在本条指令中得到下一条指令的地址,也可参考上图的取指部件D错误,因为单周期指令需要在一个时钟周期内完成指令的所有操作,例如 LOAD 指令需要从指令存储器中取指和根据主存地址从数据存储器中取数,因此不能存放在同一个存储器中。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q31 原页片段 第5章 Q31 原页片段

返回题目

Q32

速对表原值: D

详细解析标注: D

A 正确,硬布线控制器核心是组合逻辑电路;

B 正确,微程序控制器是用微指令序列(存储在控制存储器中)来组织控制逻辑,其结构更规整、易于修改维护。设计层次化、逻辑清晰,便于扩展指令集。注意这里的规则是指硬件设计上的规整,注意区分 C 选项中的指令系统规整。

C 正确,MIPS 作为 RISC 架构,指令长度固定、格式统一(如所有指令 32 位)。硬布线控制器的优点是速度快,适合于实现简单或规整的指令系统。但是,它是一个多输入/多输出的巨大的逻辑网络。对于复杂的指令系统来说,其结构庞杂,实现困难,修改、维护不易,灵活性差。

D 错误,

  • 微命令:控制功能部件完成基本操作的信号(如 ALUOp=加法)。

  • 微操作:由微命令触发的原子操作(如“寄存器 A 内容送总线”)。

  • 两者是通用概念,并非微程序控制器专属: 硬布线控制器:微命令由组合逻辑电路直接生成(如通过指令译码器输出 RegWrite 信号)。 微程序控制器:微命令从微指令字段译码得到。

  • 关键区别: 微程序控制器中,微命令以微指令形式存储在 ROM 中; 硬布线控制器中,微命令由硬件逻辑实时生成。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q32 原页片段

返回题目

Q33

速对表原值: B

详细解析标注: B

硬布线控制器通过硬件逻辑直接生成信号,速度更快;微程序控制器需查微指令,速度较慢,B 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q33 原页片段

返回题目

Q34

速对表原值: B

详细解析标注: B

在微程序控制器中,微指令存放在专门的控制存储器中,B 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q34 原页片段

返回题目

Q35

速对表原值: B

详细解析标注: B

一条(机器)指令的功能实现由一个微程序实现(取指微程序是独立的,且由所有指令公共使用,不包含在这个指令对应的微程序里面)。一个微程序包含多条微指令,一条微指令包含一个或多个微命令,微命令就是常说的控制信号。同样,一条微指令包含一个或多个微操作,微操作和微命令是对应的,微命令是微操作的控制信号,微操作是对应控制信号控制实现的具体操作。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q35 原页片段

返回题目

Q36

速对表原值: D

详细解析标注: D

因为每个段要留出 1 个状态来表示该段什么控制信号也不发出。所以在计算字段长时,应该取⌈〔公式/符号见原页版面片段〕2 〔公式/符号见原页版面片段〕 + 1 ⌉,因此各互斥类所需位数:⌈〔公式/符号见原页版面片段〕2 7 + 1 ⌉ = 3, ⌈〔公式/符号见原页版面片段〕2 4 + 1 ⌉ = 3,⌈〔公式/符号见原页版面片段〕2 12 + 1 ⌉ = 4,⌈〔公式/符号见原页版面片段〕2 5 + 1 ⌉ = 3,⌈〔公式/符号见原页版面片段〕2 6 + 1 ⌉ = 3,⌈〔公式/符号见原页版面片段〕2 6 + 1 ⌉ = 3,⌈〔公式/符号见原页版面片段〕2 9 + 1 ⌉ = 4故总位数 = 3 + 3 + 4 + 3 + 3 + 3 + 4 = 23 位。操作控制字段至少有 23 位。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q36 原页片段

返回题目

PDF 字形回源提示(非原文)

原 PDF 的部分数学字体没有 Unicode 映射;可搜索文本保留了明确占位,公式和符号以本题的原页片段为准。

Q37

速对表原值: C

详细解析标注: C

按字编址,每条微指令占一个地址,执行第 2 条时(说明取指完成),μPC 指向下一条地址即 A0H + 2 = A2H,C 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q37 原页片段

返回题目

Q38

速对表原值: C

详细解析标注: C

控制器由程序计数器 PC、指令寄存器 IR、地址寄存器 MAR、数据寄存器MDR、指令译码器、时序电路和微操作信号发生器组成。程序状态字(PSW)寄存器属于运算器的组成部分,PSW 包括两个部分:一是状态标志,如进位标志 CF、结果为零标志 ZF 等,大多数指令的执行都会影响到这些标志位:二是控制标志,如中断标志、陷阱标志等,C 错误。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q38 原页片段 第5章 Q38 原页片段

返回题目

Q39

速对表原值: B

详细解析标注: B

水平型微指令并行操作能力强.效率高,灵活性强,垂直型微指令则较差。在一条水平型微指令中,设置有控制信息传送通路(门)以及进行所有操作的微命令,因此在进行微程序设计时,可以同时定义比较多的并行操作的微命令,来控制尽可能多的并行信息传送,从而使水平型微指令具有效率高及灵活性强的优点;在一条垂直型微指令中,一般只能完成一个操作,控制一两个信息传送通路,因此微指令的并行操作能力低,效率低。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q39 原页片段

返回题目

Q40

速对表原值: A

详细解析标注: A

在并行微程序控制器中,由于取微指令和执行微指令的操作是在两个完全不同的部件中执行的,因此,可以将这两部分操作同时进行,A 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q40 原页片段

返回题目

Q41

速对表原值: C

详细解析标注: C

微程序控制器比硬布线控制器的速度慢;μPC 是微程序计数器,不能取代 PC;CPU 周期又称机器周期,而不是指令周期,所以答案为 C。

返回题目

Q42

速对表原值: C

详细解析标注: C

形成后继微地址有增量方式和断定方式两种,其中增量方式由μPC + 1 形成后继微地址,断定方式由设计者指定或者由设计者指定的判断字段控制形成,C 正确。选项 D 混淆了“机器指令” 与 “微指令” 的层级,D 错误。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q42 原页片段

返回题目

Q43

速对表原值: D

详细解析标注: D

字段直接编码法字段长度n 与所能表示的微命令数 m的关系是〔公式/符号见原页版面片段〕 = 2〔公式/符号见原页版面片段〕 − 1,直接控制法每一位代表一个微命令,显然直接控制阀的控存利用率更低,A 错误;字段直接编码法的译码电路更复杂,所以执行速度更慢,B 错误;下址字段法增加了微指令长度,C 错误。故选 D。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q43 原页片段

返回题目

PDF 字形回源提示(非原文)

原 PDF 的部分数学字体没有 Unicode 映射;可搜索文本保留了明确占位,公式和符号以本题的原页片段为准。

Q44

速对表原值: A

详细解析标注: A

本题问的是首条微指令地址,由微程序对应的机器指令的操作码译码得到,故本题选 A。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q44 原页片段

返回题目

Q45

速对表原值: A

详细解析标注: A

取指微程序是每条机器指令公共的微程序,入口地址通常固定(uPC 初始置 0,即 CM 中的首条就是取指微程序的首地址,然后执行取指微程序进行取指),A 错误。

B 正确,取指微程序需要转移到各个机器指令对应的微程序,通常通过转移微指令实现,把指令寄存器 IR 中的机器指令操作码部分送往地址控制逻辑,其实就是通过一个 ROM 来存储各个微程序的入口地址,操作码就是这个ROM的地址,然后在ROM中取出入口地址送往uPC,开始执行各自的微程序。

C 正确,每条机器指令对应的微程序最后一条微指令执行完后,要执行下一条机器指令,也就是要重新开始取指,所以下地址字段就是取指微程序的首地址,通常是全 0。

D 正确,计数器方式,微程序中微指令通常顺序存放在控制存储器内,通过 uPC+“1”顺序执行,所以必须实现 uPC + “1”的功能。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q45 原页片段

返回题目

Q46

速对表原值: D

详细解析标注: D

异常和中断的处理流程有相似之处,但也存在差异,如异常通常是同步的,与当前执行的指令相关,而中断通常是异步的,由外部设备引起,D 错误;异常通常由 CPU 内部事件(如除零、非法指令等)引起,中断由 CPU 外部事件(如 I/O 设备请求)引起,A、B 正确;异常和中断都会打断程序的正常执行,C 正确。

返回题目

Q47

速对表原值: C

详细解析标注: C

一条指令的处理时间为,取指令时间+执行指令时间+中断周期时间=3us+7us+3us=13us,C 正确。这里需要注意,中断周期时间不包括中断服务程序的执行时间。思考,若是处于关中断/无中断请求,该指令的处理时间又是多少?答:10us,因为没有中断需要响应,指令周期就没有中断周期这个阶段。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q47 原页片段 第5章 Q47 原页片段

返回题目

Q48

速对表原值: C

详细解析标注: C

异常是由 CPU 内部事件引起的,如除法运算时的溢出属于算术异常,是内中断,C 正确。

返回题目

Q49

速对表原值: C

详细解析标注: C

键盘输入属于外部设备触发的中断,C 正确。

返回题目

Q50

速对表原值: B

详细解析标注: B

译码阶段解析操作码,检测无效指令,B 正确。

返回题目

Q51

速对表原值: C

详细解析标注: C

外部中断只有在 CPU 中断允许标志置位时才会被响应,C 正确;中断控制器按优先级而非到达顺序排队,A 错误;中断时通用寄存器的保存是由中断服务程序(软件)完成,硬件只隐式保存程序计数器等少量状态,B 错误;CPU 只能在指令的中断允许周期等特定时刻响应中断,而不是在任意时刻立即中断当前指令,D 错误。

返回题目

Q52

速对表原值: B

详细解析标注: B

外部中断(如定时器中断)通常在一条指令执行完毕(写回阶段结束)、下条指令开始前检测,B 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q52 原页片段

返回题目

王道核实旁注(非 Relax 原文):改前提

可屏蔽外中断通常在一条指令完成后的指令边界采样/响应(王道 2027 第306页 [block: b_306_14])。多周期处理器中并非每条指令都有统一的 WB 阶段,所以 B 只有在题设明确把“写回阶段结束”定义为所有指令的完成点时才可作为近似表述。

Q53

速对表原值: B

详细解析标注: B

A.cache 缺失是硬件事件,由 CPU 硬件透明处理,不会触发进程调度(操作系统的职责)C. cache 缺失不是软件异常(如页面错误),不需要操作系统或异常处理程序介入。它是硬件自动处理的。

返回题目

Q54

速对表原值: C

详细解析标注: C

中断响应阶段需保存现场并跳转,执行中断服务程序是响应后的步骤,C 正确。

返回题目

Q55

速对表原值: B

详细解析标注: B

A 错误,CPU 在每条指令执行结束时检测中断请求信号,若检测到中断请求信号有效,则进入中断响应周期;若检测到中断请求信号无效,则不会进入中断响应周期B 正确,真题考过,外设接口中的数据即 I/O 端口的数据。

C 错误,检测时机不同,所做的处理也不同。由于异常的发生与指令的执行同步,与当前指令的执行过程密切相关,因此在指令执行过程中检测到异常立即响应。而中断是由外部设备或者内部定时器发出的,通常是异步发生的,因此在指令执行完成后检测。CPU对于异常和中断的响应处理在大的方面基本一致,都需要保存断点和程序状态并转到相应的处理程序去执行。但有些细节并不一-样,例如,在检测到中断请求后 CPU 必须通过中断回答信号启动中断控制器进行中断查询,以确定当前发出的优先级最高的中断请求类型,并通过数据线获取相应的中断类型号。而对于内部异常,CPU 则无需进行中断回答。

D 错误,在 iret 执行的过程中,会从内核栈中弹出异常/中断响应时保存的 PC 和 PSW 信息(即断点信息),并且会检查异常/中断响应前、后系统是否处于同一个特权级,如果检查出响应前、后处于同一个特权级(即异常/中断是在内核程序执行时发生的,若是中断即表示发生了多重中断),则不需要从内核栈中弹出用户栈指针,因为在这种情况下,异常/中断响应时并没有在内核栈中保存用户栈顶指针。如果检查出前、后不是同一个特权级,则需要弹出用户栈指针。

返回题目

Q56

速对表原值: B

详细解析标注: B

A 选项错误。虽然增加流水线级数可能缩短每级延迟,但“必然”提高主频的说法过于绝对。实际中,流水线级数增加会引入额外的寄存器延迟(如建立时间、保持时间),且若各阶段延迟不均衡,最慢阶段仍会限制主频。此外,过深的流水线可能导致控制复杂度上升,反而影响性能。因此,当段数到达一定数量时,流水线级数增加不一定会提高主频了。

B 选项正确。流水线的时钟周期必须覆盖最慢阶段的延迟(包括组合逻辑延迟和流水线寄存器延迟),否则会导致数据无法正确传递。因此,CPU的最高频率由流水线中最关键路径(即延迟最大的阶段)决定。

C 选项错误。流水线技术的核心优势在于提高吞吐率(单位时间内完成的指令数),而非减少单条指令的执行时间。由于流水线寄存器延迟的存在,单条指令的总执行时间可能反而略有增加(如从单周期变为多周期)。虽然主频提高可能缩短时钟周期,但单条指令仍需经历多个阶段,其总执行时间并未减少。

D 选项错误。流水线技术的核心思想正是通过指令级并行(ILP)实现多条指令的不同阶段同时执行。例如,在五级流水线中,每个时钟周期可以处理五条不同指令的不同阶段,从而显著提升并行性。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q56 原页片段 第5章 Q56 原页片段

返回题目

Q57

速对表原值: C

详细解析标注: C

指令相关性(如数据相关、控制相关)会导致流水线停顿(stall),降低效率。当指令间完全无关时,流水线各阶段可连续执行,无停顿,此时流水线效率最高,C 正确;流水线技术通过将指令执行过程分解为多个阶段(如取指、译码、执行等),使不同指令的各阶段并行处理,从而提高整体指令吞吐量,而非单条指令的执行速度,A 错误;单周期处理器的 CPI 等于,稳定的流水线处理器的理想 CPI 为 1,但实际中因数据冒险、控制冒险等需要阻塞,导致 CPI 有时会大于 1,B 错误;流水线存在多种开销,如硬件开销,阻塞导致的时间开销等,D 错误。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q57 原页片段

返回题目

Q58

速对表原值: A

详细解析标注: A

加速比 =未使用流水线所用时钟周期数 / 使用流水线所用时钟周期数,未使用流水线共使用 2000x8=16000 个时钟周期,使用流水线(2000+5-1)x2=4008 个时钟周期,加速比为 16000 /4008 ≈ 4.0。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q58 原页片段

返回题目

Q59

速对表原值: D

详细解析标注: D

指令流水线的时钟周期取决于各阶段中执行时间最长的阶段,以确保所有阶段都能在一个时钟周期内完成,本题中访存(MEM)阶段执行时间最长为 5ns,所以周期至少为 5ns,D正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q59 原页片段

返回题目

Q60

速对表原值: C

详细解析标注: C

每两个相邻流水段之间的流水段寄存器用以记录所有在后面阶段要用到的各种信息,故 A 正确;指令译码得到的控制信号也通过流水段寄存器传送到后面各个流水段中,B 正确;因为每个流水段间传递的信息不一样,所以各流水段寄存器的长度也不一样,C 错误;流水段寄存器对用户透明,D 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q60 原页片段

返回题目

Q61

速对表原值: B

详细解析标注: B

流水段寄存器位于相邻阶段之间(如 IF/ID、ID/EX 寄存器),用于存储前一阶段的输出数据,作为下一阶段的输入。主要作用是在流水线各阶段之间缓冲并传递数据,确保指令执行的连续性和并行性,B 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q61 原页片段

返回题目

Q62

速对表原值: A

详细解析标注: A

结构冒险是指多条指令在同一时钟周期内争用同一硬件资源(如存储器、寄存器等)而产生的冲突,A 正确;指令执行顺序错误可能是控制冒险导致的,B 错误;数据相关导致的冲突是数据冒险,C 错误;控制转移指令引起的冲突是控制冒险,D 错误。

返回题目

Q63

速对表原值: B

详细解析标注: B

数据旁路(转发)技术通过直接传递中间结果,使后指令无需等待前指令完成写回阶段。相邻两条 ALU 运算指令之间的数据冒险可以通过将前指令的 EX 阶段得到的结果直接传给后指令的 ALU 输入端以解决数据相关,无需阻塞,B 正确;结构冒险由硬件资源争用引发(如总线冲突),需通过硬件设计(如多端口寄存器堆)解决,控制冒险由分支指令导致,需通过分支预测、延迟槽等技术处理,A、C 错误;load-use 冒险,需要使用转发+硬件阻塞技术才能够解决,D 错误。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q63 原页片段 第5章 Q63 原页片段

返回题目

Q64

速对表原值: D

详细解析标注: D

ADD R1,R2,R3:将寄存器 R2 与 R3 的值相加,结果存入 R1。SUB R4,R5,R6:将寄存器 R5 的值减去 R6 的值,结果存入 R4。两条指令无寄存器共享,无数据依赖,无需数据转发,A 错误;ADD R1,R2,R3:R1 = R2 + R3(写 R1)。SUB R4,R1,R6:R4 = R1 - R6(读 R1)。显然存在 RAW 冒险,但可通过数据转发将 ADD 在 EX/MEM 段的运算结果直接传递给 SUB 的 EX 阶段,流水线不会停顿,B 错误;LWR1,0(R2):从内存地址(R2+0)读取数据,存入R1(加载操作)。ADDR3,R4,R5:R3 = R4 + R5,与 R1 无关。两条指令无寄存器共享,无数据依赖,无需数据转发,C 错误。LW R1,0(R2):R1 = 内存 [R2](写 R1,加载结果在 MEM 阶段可用)。ADD R3,R1,R4:R3 = R1 + R4(读 R1,需在 EX 阶段使用 R1 的值)。属于典型的 load-use 类型数据冒险,即使使用转发技术仍需硬件阻塞,D 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q64 原页片段

返回题目

Q65

速对表原值: A

详细解析标注: A

一位动态预测可看作完全根据上一次转移情况进行预测,上一次转移则变为 1,上一次不转移则变为 0。注意初始状态应算第一次预测,故第一次预测结果是 0,实际不转移,第二次预测结果仍是 0,实际发生转移,故第三次预测结果是 1,即转移,A 正确。

返回题目

Q66

速对表原值: D

详细解析标注: D

第一次:实际不转移,预测:转移(错误),10 → 00,错误次数:1。第二次:实际转移,预测:不转移(错误),00 → 01,错误次数:2。第三次:实际转移,预测:转移(错误),01 → 11(强转移),错误次数:3。第四次:实际不转移,预测:转移(错误),11 → 10,错误次数:4。第五次:实际转移,预测:转移(正确),10 → 11,错误次数:4。第六次:实际不转移,预测:转移(错误),11 → 10,错误次数:5,D 正确。两位预测位的状态转移图

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q66 原页片段

返回题目

Q67

速对表原值: A

详细解析标注: A

对于 A 选项,如图所示,C=3;对于 B 选项,如图所示:C 选项,见笔记该部分D 选项,与分支冒险一样,当某条指令执行过程中发现异常或中断时,可能它后面的多条指令已经被取到流水线中正在执行。例如,ALU 运算类指令发现“溢出”时,已经到 Exec 阶段的结束了,此时,它后面已有两条指令进入了流水线。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q67 原页片段 第5章 Q67 原页片段

返回题目

Q68

速对表原值: B

详细解析标注: B

对于理想的 RISC 处理器 5 段流水线(IF→ID→EX→MEM→WB),每个流水段占一个时钟周期,执行了四条指令,所以要求总时钟周期。如图所示,只有 lw 指令和 add 指令出现 load-use 冒险,无法只通过转发技术解决,需阻塞一个时钟周期,共 9 个时钟周期,CPI =9 4 = 2.25,B 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q68 原页片段

返回题目

Q69

速对表原值: C

详细解析标注: C

流水线指令执行情况如下图所示。共 11 个时钟周期,C 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q69 原页片段

返回题目

Q70

速对表原值: D

详细解析标注: D

此题是关于 load-use 数据冒险的处理方式。若不采用数据旁路(转发)技术,也不采用在时钟的前半周期写寄存器堆,后半周期读寄存器堆的方式,则需要插入 3 个 nop,把后一条指令的 ID 段阻塞在前一条指令的 WB 段之后。采用寄存器前半周期写后半周期读,可以节省一个时钟,如下图所示。采用转发技术,则只需要插入一个 nop 即可,将 ID 隔到前一条 load 指令的 MEM 后,转发硬件路线由 mem 送到 IF/ID 流水线寄存器组。流水线冒险简单总结如下:

①正常数据冒险,需插入 3 个 nop,如果采用 wb 前半段写后半段读只需 2 个。

②load-use 数据冒险,使用转发技术,相邻指令需插入一个 nop,将 EX 隔到前一条 load 指令的MEM 后,转发硬件路线由 mem 送到 ALU 的输入端;不使用转发技术,需要插入 3 个 nop,同样 wb 分前后两段读写则只需 2 个 nop。也可以采用编译器将 load 指令调整到合适的位置解除冒险。

③分支控制冒险,如用插入技术,插入 3 个 nop,把后一条 IF 隔到前一条 MEM 后,因为转移指令(无论条件还是非条件)都是在 MEM 修改 pc。

④最后一个小坑是类似循环指令最后转移指令前若有写数据,则要注意循环重新执行的前几条指令和尾部的指令也可能出现数据冒险。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q70 原页片段 第5章 Q70 原页片段

返回题目

Q71

速对表原值: D

详细解析标注: D

通常,条件转移指令和无条件转移指令都可能导致控制冒险,故本题选 D。

返回题目

Q72

速对表原值: D

详细解析标注: D

条件跳转指令若判断标志位满足条件则会发生跳转,导致控制冒险;函数调用本质上也是通过跳转指令实现的,可能会导致控制冒险;DMA(直接内存访问)完成时通常会触发中断,中断会打断当前程序执行,CPU 需暂停流水线,保存现场,并跳转到中断处理程序,这相当于一次隐含的跳转,导致指令流改变,同样属于控制冒险,故 D 正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q72 原页片段

返回题目

Q73

速对表原值: C

详细解析标注: C

第一条指令写 R1,紧随的第二条指令 R1 作为其输入,此时发生写后读数据冒险,C 正确。

返回题目

Q74

速对表原值: B

详细解析标注: B

一个部件在不同流水使用,会发生资源冲突,B 错误。

返回题目

Q75

速对表原值: D

详细解析标注: D

将指令 Cache 和数据 Cache 分离的主要目的是避免资源相关冲突。在流水线工作中,当同时需要取指令和取数据时,如果不分开,就会造成结构冒险冲突,从而导致流水线断流,将指令 Cache 和数据 Cache 分开后,就能同时满足取指令和取数据的要求,从而提高流水线运行效率,计算机通过不同的时间段来区分指令和数据,在取指阶段取出的是指令,在执行阶段取出的是数据,D正确。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q75 原页片段

返回题目

Q76

速对表原值: B

详细解析标注: B

分支预测器是现代指令流水线式 CPU 中非常关键的技术,它在分支指令执行结束前猜测哪路分支将会被执行,以此来提高处理器指令流水线的效率,是为了解决控制相关,A 错误;增加功能部件可以减少资源冲突,消除结构冒险,B 正确;分支延迟槽(Branch delayslot),简单地说就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交,是为了解决控制相关,C 错误;转发技术可以消除或减少数据冒险,D 错误。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q76 原页片段 第5章 Q76 原页片段

返回题目

Q77

速对表原值: B

详细解析标注: B

超标量流水线通过在一个时钟周期内同时发射和执行多条指令来提高性能,B 正确;普通流水线每个时钟周期可能只执行一条指令,A 错误;超标量流水线中指令执行顺序可能会动态调整,C 错误;指令译码阶段是指令执行的必要阶段,超标量流水线也需要,D 错误。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q77 原页片段

返回题目

Q78

速对表原值: C

详细解析标注: C

首先对原始指令序列分析:I1 是lw 指令,目标寄存器是 R1;I2 是add 指令,源操作数包含 R1。在 5 段流水线中,lw 指令的数据在 MEM 段结束时才能从数据 Cache 中读出;而 add 指令需要在 EX 段开始时使用数据。时间上:I2 进入 EX 段时,I1 刚进入 MEM 段,数据尚未读出。即使有转发路径,数据也不存在,无法转发;因此 I1 和 I2 之间发生了 Load-use 冒险。原始执行代价:顺序为 I1->stall -> I2-> I3 -> I4,必须插入 1 个气泡。优化思路:要消除这个 Load-use 气泡,我们需要在 I1 和 I2 之间插入一条与它们都不相关的指令,利用这条指令来“填充”那个原本需要阻塞的时间片。我们需要检查每种重排顺序是否满足两个条件:

①逻辑正确性:不能破坏原有的数据依赖关系(例如写后读、写后写)。

②冒险消除:lw R1 和使用 R1的指令之间至少隔开一条指令。A 选项(11,12,13,14):将 I4 提到 I2 之前, I4(or R8,R1,R9)也使用了 R1,需 1 个 stall。排除。B 选项(11,14,13,12):同上。C 选项(I1,I3,I2,I4):将 I3 移到 I1 和 I2 之间,I3 (sub R5,R6,R7)使用 R6,R7,写入 R5。与 I1(R1,R2)和 I2(R3,R1,R4 )没有任何寄存器冲突,完全独立。流水线时序: I1:lw (在 MEM 段产出 R1)I3:sub(无关指令,正常执行,占用了 1w 后的那个周期)I3:add(需要 R1)结果:当 I2 准备进入 EX 段时,I3 在 EX 段,I1 已经进入 WB 段(或者 MEM 段刚结束)。此时 R1数据已经准备好,通过MEM/WB流水寄存器向ALU入口进行转发。Load-Use阻塞被成功消除,正确。D 选项,I3,I1,I2,I4:Load-use 冒险依然存在,产生 1 个阻塞。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q78 原页片段

返回题目

Q79

速对表原值: C

详细解析标注: C

这是超长指令字技术的基本概念,C 正确。

返回题目

Q80

速对表原值: C

详细解析标注: C

A 错误,A 选项描述的是静态多发射,指令打包的结果可看作将同时发射的多条指令合并到一个长指令中,即超长指令字技术。

B 错误,超标量处理器采用动态多发射技术,通过在指令执行过程中由处理器硬件动态完成流水线调度来完成指令打包和冒险处理。

C 正确,若前一条指令和后一条指令都需要对同一个寄存器进行写入,则称这两条指令是写后写相关的。这种相关性,在无序发射或乱序执行时可能会发生数据冒险,而在按序发射和完成时,两条指令的写寄存器时机和指令顺序一致,不会发生数据冒险。

D 错误,静态多发射处理器的冒险处理不包括结构冒险,因为数据通路中功能部件及其个数是确定的,所以同一时钟周期内发射的指令类型和指令个数是受限的。例如,如果 ALU 运算部件和存储访问部件独立设置,并只各提供一套,则只能同时发射一条 ALU 指令/分支指令和一条 Load/Store 指令。所以不会发生结构冒险。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q80 原页片段 第5章 Q80 原页片段

返回题目

Q81

速对表原值: B

详细解析标注: B

向量处理器是一种 SIMD(单指令流多数据流)计算机,它通过一条指令同时对多个数据元素进行操作,提高数据并行处理能力,B 正确。

返回题目

Q82

速对表原值: A

详细解析标注: A

A 错误,单核 CPU 在支持超线程的情况下,同一时刻可以有多个线程在执行。超线程物理上只有一个核心,但是逻辑上有多个。比如一个线程在 I/O 或者访存的时候,可以执行另一个线程进行计算,两个线程不冲突,可进一步利用硬件资源。

B 正确,多核 CPU 如果不使用多线程,那么一定有多个核心处于闲置状态,造成资源浪费。

C 正确,SMT 技术充分利用了超标量处理器的多通道、动态指令调度和寄存器重命名的机制,可以在一个周期里面发射来自不同 Thread 的多个指令,可以看作细粒度多线程和超标量处理器的结合。

D 正确,超线程是指令级并行,粗/细粒度多线程仅支持线程级并行。

返回题目

Q83

速对表原值: B

详细解析标注: B

硬件多线程的基本思想是在一个处理器中同时维护多个线程的上下文,当一个线程因等待资源而暂停时,处理器可以切换到另一个线程继续执行,提高处理器利用率,B 正确;在一个处理器中同时运行多个进程是多任务操作系统的功能,通常依赖操作系统的时间分片,与硬件多线程的底层机制不同,A 错误;多个处理器同时运行一个线程是并行计算的一种方式,但不是硬件多线程的基本思想,C 错误;多个处理器同时运行多个线程是多处理器系统的常见工作方式,D 错误。

返回题目

Q84

速对表原值: C

详细解析标注: C

MISD 是指同时执行多条指令,处理同一个数据,实际中几乎不存在。SISD 通常是单处理机,有时候也设计成标量流水线,提高速度。SIMD 是一个指令流同时对多个数据进行处理,成为数据级并行技术,通常由一个指令控制部件和多个处理单元组成,每个单元有自己的地址寄存器,这样就可有不同的数据地址,指令逻辑相同但数据不同,这样可以并行处理相同指令,适合 for 循环代码,不适合 case/switch。MIMD 分为多计算机系统和多处理器系统。

原页版面片段(公式/表图/电路/代码/数据通路以此为准)

第5章 Q84 原页片段

返回题目

Q85

速对表原值: A

详细解析标注: A

多核处理器是将多个处理核心集成在一个处理器芯片中,这些核心可以独立执行指令,提高并行处理能力,A 正确;多个处理器芯片组成的系统是多处理器系统,B 错误;一个处理器中包含多个寄存器或多个 ALU 是处理器内部的设计优化,不是多核处理器的定义,C、D 错误。

返回题目

Q86

速对表原值: A

详细解析标注: A

共享内存多处理器(SMP)中,多个处理器共享同一内存空间,所有处理器可以平等地访问内存中的任何位置,A 正确;每个处理器有独立内存空间的是分布式内存系统,B 错误;处理器之间通过消息传递进行通信的是分布式系统,C 错误;SMP 中处理器可以访问共享内存,不只是本地内存,D 错误。

返回题目