指令周期
目录 · 6 个章节
定义与层次
指令周期 是 CPU 从主存取出一条指令并执行完该指令所需的全部时间。
| 概念 | 含义 | 粒度 |
|---|---|---|
| 时钟周期 | CPU 时钟的一个节拍 | 最小 |
| 机器周期 | 完成一个基本操作所需时间,如取指、访存 | 中等 |
| 指令周期 | 完成一条完整指令所需时间 | 最大 |
关系:指令周期由若干机器周期组成,机器周期由若干时钟周期组成。
指令周期的组成
一条指令通常按阶段执行:取指令 → 分析指令 → 取操作数 → 执行 → 写回 → 检查中断。
| 周期 | 作用 | 是否每条指令都有 |
|---|---|---|
| 取指周期 | 从主存取出指令并送入 IR | 一定有 |
| 间址周期 | 间接寻址时,再访存取得有效地址 | 不一定有 |
| 执行周期 | 完成指令规定的操作 | 一定有 |
| 中断周期 | 响应中断,保存断点并转入中断服务程序 | 不一定有 |
完整顺序:取指周期 → 间址周期(可选)→ 执行周期 → 中断周期(可选)。
取指与间址
取指周期取出的是 指令本身,不是操作数。典型微操作:
PC -> MAR
Read
M[MAR] -> MDR
MDR -> IR
PC + 1 -> PC
其中 Read 是读主存控制信号,不是寄存器传送;PC + 1 是抽象写法,实际增量取决于编址方式和指令长度。取指周期是 每条指令执行过程的开始阶段,核心是取出指令;更新 PC 只是取指周期中的一个微操作。
间址周期只在 间接寻址 时出现。若 Ad(IR) 给出的不是操作数地址,而是“操作数地址的地址”,则需要再次访存:Ad(IR) -> MAR,读出 M[MAR],得到有效地址。
RTL 与微操作
RTL(Register Transfer Language,寄存器传送语言) 用简洁符号描述 CPU 内部的数据传送和运算动作。RTL 写的是“内容传送”,不是寄存器本体移动。
| 符号 | 含义 | 例子 |
|---|---|---|
A -> B | A 的内容送入 B | PC -> MAR |
M[MAR] | 主存中由 MAR 指定地址处的内容 | M[MAR] -> MDR |
+ | 由 ALU 执行加法 | PC + 1 -> PC |
Ad(IR) | IR 中的地址字段 | Ad(IR) -> MAR |
OP(IR) | IR 中的操作码字段 | 控制器对 OP(IR) 译码 |
微操作 是 CPU 内部在很小时间步内完成的基本操作;一组微操作组合起来完成取指、间址、执行等机器周期。
执行与中断
执行周期差异最大,取决于指令类型:
- 寄存器加法:主要使用
ALU和寄存器,可能不访存。 LOAD/STORE:需要通过MAR、MDR访问主存。- 转移指令:修改
PC,改变下一条指令地址。
中断周期不是每条指令都有。CPU 通常在一条指令执行结束后检查中断请求;若响应中断,需要保存断点(通常是当前 PC,即下一条指令地址),再把中断服务程序入口地址送入 PC。
考点与易错点
- 每条指令一定有取指周期和执行周期;不一定有间址周期、中断周期。
- 指令周期不一定等长:访存、间接寻址、中断响应都会增加时间。
- 执行周期不等于指令周期;指令周期至少包含取指和执行。
PC在取指阶段通常会更新,但加多少由题目条件决定。PC -> MAR表示把PC内容复制到MAR,不会清空PC。M[MAR] -> MDR表示访问主存,把MAR指向的存储单元内容送入MDR;不是把MAR本身送入MDR。- 判断微操作顺序时,先区分寄存器传送和控制信号:
Read、Write不是数据通路传送。
讨论
0 条评论
登录后参与讨论
暂无评论。