26考研 | 计算机组成原理 | 单周期CPU和多周期CPU的总线结构的适用情况
单周期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即可

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

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


总结
单周期CPU:控制信号“从一而终”,部件“一次性使用”,设计简单但效率低。
多周期CPU:控制信号“随阶段而变”,部件可“多次复用”,通过将任务分解提高了硬件利用率。
流水线CPU:在多周期的基础上,实现了指令阶段的“重叠执行”,从而实现了更高的并行度。












