是什么
-
定义:指令执行阶段时钟周期数是指 CPU 完成译码后,从执行该指令所规定的具体操作开始,直到将最终结果写回到目的地址(通用寄存器或主存单元)所消耗的 CPU 时钟周期(节拍)总数。
-
大白话:就是不计前面的“取指”和“译码”,单看干正事(算加减、读写内存)一共需要按几次时钟脉冲。
核心内容
计算执行阶段周期的核心原则:硬件约束定串行,空闲总线找并行。
设置暂存器的原因:
-
设置暂存器 Y 的原因:CPU 内部采用单总线结构,同一时刻总线上只能传输一个操作数;而 ALU 是无存储功能的组合逻辑部件,要求两个输入端必须同时提供稳定的输入信号。因此必须先将一个操作数送入暂存器 Y 锁存。
-
设置暂存器 Z 的原因:ALU 运算结果若直接送上内部总线,会形成回路反馈至输入端 B 引起逻辑冲突和振荡;设置 Z 可以暂存运算结果,在下一拍再输出到总线。
==寄存器编号来自指令的操作数寻址字段,存放在 IR 中==
1. 决定周期数的 3 大硬件铁律
-
总线互斥(串行约束):单内部总线结构下,同一时钟周期内只能有 1 个部件向总线输出数据(只能有 1 个 Out)。
-
组合逻辑级联(单拍压缩):无时钟锁存的纯组合逻辑可以合并在同一拍完成。例如:
ALU 运算 -> SR 移位/直送 -> 经三态门送总线 -> 通用寄存器写入是一条连贯的硬件通路,仅占用 1 个时钟周期。 -
内外总线并行(重叠加速):当 CPU 正在通过外部系统总线访问存储器()时,CPU 内部总线处于空闲状态,可同时利用内部总线安排一次寄存器间的数据传送(如 )。
2. 标准微操作耗时模板(直接套用)
| 操作类型 | 硬件动作分解 | 占用节拍数 | 能否与其他操作并行 |
|---|---|---|---|
| 寄存器直接取数 / 存暂存器 | 或 | 1 拍 | 走内部总线,可与外部读写主存并行 |
| 读主存(间接寻址/存储器寻址) | 拍 1: 拍 2: | 2 拍 | 拍 1 占内部总线; 拍 2 占外部总线(内部总线可并行其他操作) |
| 写主存(存回内存结果) | 拍 1: 拍 2: | 2 拍(若 MAR 已有有效地址则为 1 拍) | 拍 1 占内部总线; 拍 2 占外部总线 |
| ALU 运算并写回寄存器 | 1 拍 | 走内部总线完成运算及直通写回 |
3. 指令执行周期通用计算流程图
[判断源操作数类型]
/ \
(寄存器直接寻址) (寄存器间接寻址)
| |
放入暂存器 T/A (1拍) 送地址到 MAR (1拍)
| |
| 读主存至 MDR (1拍)
| [可并行: 另一操作数送 T]
\ /
\ /
[执行 ALU 计算与写回]
/ \
(结果写回寄存器) (结果写回主存)
| |
组合逻辑直通 (1拍) 结果送入 MDR (1拍)
|
发出写信号存入主存 (1拍)
例题
-
题目:
【2015 统考真题改编】在某 16 位单总线 CPU 中,寄存器间接寻址用
(Rx)表示,寄存器直接寻址用Rx表示。通用寄存器为 ,暂存器为 ,移位寄存器为 ,ALU 结果可经 直送回总线。请分别计算以下两条指令在执行阶段至少需要的时钟周期数,并写出每个周期的微操作流向:-
指令 A:
inc R1(功能:) -
指令 B:
sub R1, R3, (R2)(功能:)
-
-
分析与过程:
-
指令 A(
inc R1):-
周期 1:将操作数 送入暂存器 (,占用内部总线 1 拍)。
-
周期 2:ALU 执行加 1 运算,结果经 直送内部总线并打入 (,占用 1 拍)。
-
总周期数: 拍。
-
-
指令 B(
sub R1, R3, (R2)):-
周期 1:把间接地址 传送到 ,启动主存读(,占用内部总线 1 拍)。
-
周期 2:主存读数据到 ;同时内部总线闲置,将另一操作数 传送给暂存器 ( 与 并行,占用 1 拍)。
-
周期 3: 数据送内部总线,与 送入 ALU 做减法,结果经 直送写入目的寄存器 (,占用 1 拍)。
-
总周期数: 拍。
-
-
-
规范答案:
-
inc R1执行阶段至少需要 2 个时钟周期。 -
sub R1, R3, (R2)执行阶段至少需要 3 个时钟周期。
-
⚠️ 易错点
Warning
把“ALU 运算”和“写回寄存器”误拆成两拍:
在单周期组合逻辑通路中(如 2015 题的 ALU SR 总线 寄存器),数据流动是一气呵成的,算完立即锁存,只需 1 拍。不要强行拆成“算一拍、写一拍”。
忽略外部访存期间的内部总线并行:
读内存 的那 1 拍,内部总线是空闲的!如果漏掉 的并行,算成串行 4 拍,就会因未达到“至少需要”的最少周期而扣分。
混淆执行阶段与整条指令周期:
- 审题看清是问“执行阶段至少需要多少周期”还是“整条指令/整个取指到执行至少需要多少周期”。若问整条指令,必须加上公共取指阶段的周期数(通常取指阶段占 3~4 拍)。