单周期CPU和多周期CPU的总线结构的适用情况

在一条指令的执行过程中,单周期CPU的每个控制信号保持不变,每个部件只能使用一次。多周期CPU的控制信号可能发生改变,同一个部件可以使用多次

关于这句话的具体解释

特性 单周期CPU 多周期CPU
指令执行方式 所有操作在一个长时钟周期内完成 指令被分解为多个阶段,每个阶段占用一个较短的时钟周期
控制信号 恒定不变:周期开始时生成,整个周期内保持稳定 动态变化:每个周期(阶段)根据当前步骤重新生成一组信号
部件使用 一次使用:每个功能部件(如ALU、存储器)在一个指令周期内通常只工作一次 多次复用:同一部件(如ALU)可在不同阶段被同一条或不同指令多次使用
指令间关系 串行执行:下一条指令必须等当前指令完全执行完毕后才开始 串行执行:下一条指令仍需等待当前指令的所有步骤完成后方可开始
使用什么总线结构 不能使用单总线结构,只能使用多总线或者专用数据通路结构 单、多、专用都可以

核心概念详解

单周期CPU:一次性完成所有操作

单周期CPU的设计理念是“一刀切”。它要求一条指令从取指、译码、执行到写回的所有操作,必须在一个固定的、相对较长的时钟周期内一气呵成

  • 控制信号为何不变:在周期开始时,控制器根据指令的操作码(Opcode)一次性生成所有需要的控制信号(如RegWrite、ALUSrc等)。由于没有中间状态,这些信号在整个周期内都保持有效,直到下个周期开始才改变。这确保了数据通路能稳定地完成整个流程。

  • 部件为何只用一次:因为所有操作是顺序但连续完成的,每个功能部件(如ALU在执行阶段完成计算后)在该周期内就完成了它的使命,直到下条指令到来才会再次被使用

多周期CPU:分步走,灵活复用

多周期CPU则将指令执行过程分解成多个明确的阶段(如经典的取指IF、译码ID、执行EXE、访存MEM、写回WB)。每个阶段在一个较短的时钟周期内完成。

  • 控制信号为何变化:控制器通常是一个有限状态机(FSM)。在每一个时钟周期(对应一个状态),它只生成当前步骤所需的控制信号。当进入下一个阶段(状态)时,控制信号会随之改变,以驱动数据通路执行新的操作。例如,在“取指”阶段需要内存读信号,而到了“写回”阶段则需要寄存器写信号。

  • 部件如何被复用:正是这种分步执行的机制,使得同一个物理部件可以在不同阶段被重复使用。最典型的例子是ALU:它可能在“执行”阶段用于计算算术结果,在另一个阶段又用于计算内存地址或分支目标地址。这种复用大大提高了硬件资源的利用率。

关键澄清:多周期 vs. 流水线

“在第一条指令的执行周期执行第二条指令的取指周期”,这实际上是流水线CPU的典型特征,也是多周期CPU与流水线CPU最根本的区别

  • 多周期CPU:指令之间仍然是串行执行的。必须等第一条指令彻底走完所有阶段(比如5个周期),完全退休后,第二条指令才会进入第一个阶段(取指)

  • 流水线CPU:它是在多周期CPU的基础上,让不同指令的不同阶段在时间上重叠起来。当第一条指令进入“执行”阶段时,第二条指令就可以进入“译码”阶段,第三条指令则可以同时进行“取指”。这样就实现了指令级的并行,极大地提高了吞吐率

1.为什么单周期CPU不能用单总线而多周期CPU可以?

单周期CPU的设计目标是让每条指令都在一个固定的时钟周期内完成。

为了实现这个目标,数据通路必须能够支持指令执行过程中多个操作并行进行。

例如,一条典型的算术运算指令(如 ADD R1, R2, R3)在一个周期内需要完成以下核心数据传输:

1.同时读取两个操作数:将存放于寄存器R2和R3的数据同时送到算术逻辑单元(ALU)的输入端。

2.传送运算结果:将ALU计算出的结果写回到目标寄存器R1。

在单总线结构下,由于所有部件都挂接在唯一的一条总线上,上述的并行数据传送是无法实现的。部件之间每次数据传输都必须分时共享这条总线,导致一个时钟周期内无法完成指令所需的全部数据传送操作。因此,单总线结构无法满足单周期CPU的性能要求。

根本原因是总线上同一时刻只能传输一个数据,比如ADD R1,R2,R3,把R2,R3都给并行的送入ALU,但是总线只有一条,在本时钟周期内要么传R2,要么传R3,不能两个都传,不然数据就冲突了

而多周期CPU不需要考虑这点,因为多周期CPU将一条指令的执行可以划分为多个周期,并不需要并行的把R2R3同时传到ALU,只需要串行的传入ALU即可

image-20251114155020392

以下内容有时间可以看看:

image-20251114155209793

2.可能的疑惑:对于第二点钟读取两个寄存器的操作是串行的,分别占用这个周期内的不同时间片,而不是单周期要求的同时读取。对这句话有疑问,那我单周期不可以分两个不同的时间片去读取两个操作数吗。这个问题的回答在下面的两张图片

image-20251114155428820

image-20251114155444263

总结

单周期CPU:控制信号“从一而终”,部件“一次性使用”,设计简单但效率低。

多周期CPU:控制信号“随阶段而变”,部件可“多次复用”,通过将任务分解提高了硬件利用率。

流水线CPU:在多周期的基础上,实现了指令阶段的“重叠执行”,从而实现了更高的并行度。