Files
obsidian/计算机组成原理/学习笔记/09_控制单元功能_补充版.md

14 KiB
Raw Blame History

第9章 控制单元功能(详细补充版)

📖 本章分析控制单元为完成不同指令所发出的各种微操作命令。 🎯 重点理解微操作命令和指令执行过程


📋 本章目录


9.1 微操作命令的分析

9.1.1 微操作命令的概念

[!info] 定义 微操作命令是控制单元发出的最基本控制信号,控制计算机各部件完成相应操作。

要理解微操作命令,可以把它想象成工厂里最细粒度的工作指令——"拿起零件"、"转动螺丝"这样的最小动作,不能再拆分了。整个计算机的工作,就是由控制单元不断发出这些最基础的信号,指挥数据通路和各个功能部件协同配合。

比如 PC → MAR 就是一条微操作命令,意思是把程序计数器的值送到地址寄存器;1 → R 是向主存发出读命令。每一条都很简单,但组合起来就能完成复杂的指令执行。

9.1.2 指令周期的四个阶段

graph LR
    A[指令周期] --> B[取指周期]
    A --> C[间址周期]
    A --> D[执行周期]
    A --> E[中断周期]

一条指令从开始执行到完成,要经历四个阶段,就像完成一个任务需要"拿任务单→确认地址→干活→处理突发情况"这几个步骤。

取指周期是每条指令都有的负责从内存把指令取到CPU里。间址周期只有间接寻址的指令才需要——就像你拿到的纸条上写的是"去3号柜找"但3号柜里放的才是真正的东西的地址你需要先去3号柜拿到真实地址。执行周期是真正干活的阶段,不同指令做的事情不同,花的时间也不同。中断周期不是每条指令都有,只有发生了中断(比如键盘按键、打印机完成)才会进入这个阶段去处理紧急事件。

9.1.3 取指周期的微操作

取指周期是所有指令共有的阶段,它的微操作序列是固定的:

步骤 微操作 说明
1 PC → MAR 现行指令地址送MAR
2 1 → R 向主存发读命令
3 M(MAR) → MDR 指令从主存读至MDR
4 MDR → IR 指令送指令寄存器
5 OP(IR) → CU 操作码送CU译码
6 (PC) + 1 → PC 程序计数器加1
sequenceDiagram
    participant PC
    participant MAR
    participant MEM as 主存
    participant MDR
    participant IR
    participant CU

    PC->>MAR: PC → MAR
    Note over MAR: 1 → R发读命令
    MEM->>MDR: M(MAR) → MDR
    MDR->>IR: MDR → IR
    IR->>CU: OP(IR) → CU
    Note over PC: (PC) + 1 → PC

这个过程很直白先把PC里的地址送到MAR告诉主存"我要读这个地址的东西"主存把指令送到MDR再从MDR搬到IR同时把操作码送给CU去译码最后PC加1指向下一条指令。整个流程就像从货架上取货——先告诉仓库你要哪个货架的东西PC→MAR仓库把东西放到传送带上M(MAR)→MDR你从传送带上拿过来MDR→IR然后看看是什么东西OP(IR)→CU同时记一下下一个要取的位置(PC)+1→PC

9.1.4 间址周期的微操作

间址周期只在间接寻址时出现,目的是把形式地址转换成有效地址:

步骤 微操作 说明
1 Ad(IR) → MAR 形式地址送MAR
2 1 → R 向主存发读命令
3 M(MAR) → MDR 有效地址从主存读至MDR
4 MDR → Ad(IR) 有效地址送IR地址字段
sequenceDiagram
    participant IR
    participant MAR
    participant MEM as 主存
    participant MDR

    IR->>MAR: Ad(IR) → MAR
    Note over MAR: 1 → R发读命令
    MEM->>MDR: M(MAR) → MDR
    MDR->>IR: MDR → Ad(IR)

间接寻址就像你拿到一张纸条写着"去3号柜找"3号柜里放的才是真正的目标地址。间址周期做的事情就是先把纸条上的地址形式地址送去查然后从那个位置拿到真正的地址有效地址再把有效地址写回指令的地址字段这样后面执行周期就知道该去哪取数据了。

9.1.5 执行周期的微操作

执行周期的微操作取决于指令类型,不同指令差异很大。

非访存指令不需要访问内存操作直接在CPU内部完成

指令 微操作 说明
CLA 0 → ACC 清除累加器
COM \overline{ACC} → ACC 累加器取反
SHR L(ACC) → R(ACC), ACC₀ → ACC₀ 算术右移
CSL L(ACC) → R(ACC), ACC₀ → ACCₙ 循环左移
STP 0 → G 停机指令

这些指令都很简单——CLA就是把累加器清零COM是把每一位取反0变1、1变0SHR是算术右移一位相当于除以2CSL是循环左移STP是停机。它们不需要去内存取数据所以执行周期很短。

访存指令需要访问内存,执行周期包含访存操作:

指令 微操作 说明
ADD X Ad(IR) → MAR, 1 → R, M(MAR) → MDR, (ACC) + (MDR) → ACC 加法指令
STA X Ad(IR) → MAR, 1 → W, ACC → MDR, MDR → M(MAR) 存数指令
LDA X Ad(IR) → MAR, 1 → R, M(MAR) → MDR, MDR → ACC 取数指令

ADD X 是把内存地址X处的数取出来加到累加器STA X 是把累加器的值存到内存地址XLDA X 是把内存地址X处的数取到累加器。它们都需要先送地址、再读写内存、最后在CPU内部完成数据操作。

转移指令改变程序的执行顺序:

指令 微操作 说明
JMP X Ad(IR) → PC 无条件转移
BAN X A₀ · Ad(IR) + \overline{A₀} · (PC) → PC 条件转移(负则转)

JMP X 就是无条件跳转到地址X直接把X送到PC。BAN X 是条件转移——如果累加器最高位符号位为1表示负数就跳转到X否则继续执行下一条指令。


9.2 控制单元的功能

9.2.1 控制单元的外特性

控制单元是整个CPU的指挥中心它接收各种输入信号然后发出控制信号指挥各部件工作。

输入信号包括四类时钟信号让CU按节拍工作就像乐队指挥跟着节拍器指令寄存器送来操作码告诉CU当前要执行什么指令标志位条件码提供运算结果的状态信息帮助CU决定是否跳转外来信号包括中断请求、总线请求等外部事件。

输出信号分两类CPU内部控制信号控制ALU、寄存器等内部部件的操作到控制总线的信号则控制主存和I/O设备的读写。

9.2.2 控制信号的时序

控制信号不是随意发出的必须按照严格的时序来。时钟周期是CPU的最小时间单位比如1GHz CPU的时钟周期是1ns机器周期完成一个基本操作通常包含几个时钟周期指令周期完成一条指令包含一个或几个机器周期

在取指周期每个时钟周期发出一组控制信号按固定顺序完成取指操作。在执行周期根据指令类型的不同CU会发出不同的控制信号组合——加法指令需要ALU做加法存数指令需要向内存发写命令转移指令需要修改PC的值。

9.2.3 控制信号的组成

控制信号按控制对象可以分为四类ALU控制信号决定ALU做什么运算加法、减法、逻辑与、逻辑或等寄存器控制信号控制寄存器的读写哪些寄存器要读、哪些要写数据通路控制信号控制数据在CPU内部的传输方向比如从ALU输出送到哪个寄存器总线控制信号控制总线的读写操作读内存还是写内存

这些信号配合时序,在正确的时刻发出,就能指挥整个计算机协调工作。


📝 本章小结

核心概念

  1. 微操作命令:控制单元发出的最基本控制信号,不可再分
  2. 指令周期:取指周期→间址周期→执行周期→中断周期
  3. 控制单元功能:根据指令和时序,发出各种控制信号

关键术语

术语 英文 含义
微操作 Micro-operation 最基本的操作
控制单元 Control Unit 发出控制信号的部件
指令周期 Instruction Cycle 完成一条指令的时间
机器周期 Machine Cycle 完成一个基本操作的时间

重点图示

[!summary] 必须掌握的图

  1. 指令周期的四个阶段图
  2. 取指周期的微操作序列图
  3. 间址周期的微操作序列图
  4. 各种指令的微操作序列图

🧪 例题与解析

例题1取指周期分析

题目:写出取指周期的微操作序列。

答案

取指周期的微操作序列:

  1. PC → MAR现行指令地址送MAR
  2. 1 → R:向主存发读命令
  3. M(MAR) → MDR指令从主存读至MDR
  4. MDR → IR:指令送指令寄存器
  5. OP(IR) → CU操作码送CU译码
  6. (PC) + 1 → PC程序计数器加1

这六步是所有指令共有的顺序不能变——必须先送地址才能读内存必须先读到MDR才能送到IR必须先送到IR才能译码。唯一可以和其他操作重叠的是最后一步PC加1它和前面的译码操作可以并行。

例题2间址周期分析

题目:写出间址周期的微操作序列。

答案

间址周期的微操作序列:

  1. Ad(IR) → MAR形式地址送MAR
  2. 1 → R:向主存发读命令
  3. M(MAR) → MDR有效地址从主存读至MDR
  4. MDR → Ad(IR)有效地址送IR地址字段

间址周期的目的就是把形式地址变成有效地址。形式地址是指令里给出的地址,但它不是最终地址——那个位置存放的才是真正的有效地址。所以需要额外访问一次内存,把有效地址取出来,写回指令的地址字段,这样后续的执行周期就知道该去哪操作了。

例题3加法指令分析

题目:写出加法指令 ADD X 的微操作序列。

答案

加法指令 ADD X 的微操作序列:

  1. Ad(IR) → MAR形式地址送MAR
  2. 1 → R:向主存发读命令
  3. M(MAR) → MDR操作数从主存读至MDR
  4. (ACC) + (MDR) → ACC累加器内容与MDR内容相加结果送ACC

前三步和取数指令一样都是把内存地址X处的操作数取到MDR。第四步是关键——把累加器里原来的值和MDR里的值送到ALU做加法结果写回累加器。如果X是间接寻址的还需要在前面加一个间址周期来获取有效地址。

例题4存数指令分析

题目:写出存数指令 STA X 的微操作序列。

答案

存数指令 STA X 的微操作序列:

  1. Ad(IR) → MAR形式地址送MAR
  2. 1 → W:向主存发写命令
  3. ACC → MDR累加器内容送MDR
  4. MDR → M(MAR)MDR内容写入主存

STA X 和 LDA X 的区别在于方向相反LDA 是从内存读到累加器STA 是从累加器写到内存。注意第二步发的是写命令1→W而不是读命令1→R数据流方向也反过来——从ACC到MDR再到内存。

例题5控制单元功能分析

题目:简述控制单元的功能和输入输出信号。

答案

控制单元的功能:发出各种控制信号,控制计算机各部件在正确的时刻完成正确的操作。

输入信号

  • 时钟CU按节拍工作每个时钟周期发出一组控制信号
  • 指令寄存器操作码决定CU要发出什么控制信号
  • 标志:条件码决定是否需要跳转
  • 外来信号:中断请求、总线请求等外部事件

输出信号

  • CPU内控制信号控制ALU、寄存器等内部部件
  • 到控制总线的信号控制主存、I/O设备的读写

CU的工作可以这样理解它看着指令操作码结合当前状态标志按照时钟节拍在每个时刻发出正确的控制信号指挥数据在各个部件之间流动完成指令的功能。


知识点速记卡

考前快速过一遍30秒回忆整章核心

微操作命令 = 控制单元发出的最基本控制信号,不可再分。如 PC→MAR、1→R。

指令周期四阶段:取指(所有指令)→ 间址(间接寻址才要)→ 执行(所有指令)→ 中断(有中断才要)。

取指周期六步必须背PC→MAR → 1→R → M(MAR)→MDR → MDR→IR → OP(IR)→CU → (PC)+1→PC。

间址周期四步Ad(IR)→MAR → 1→R → M(MAR)→MDR → MDR→Ad(IR)。目的:形式地址→有效地址。

访存指令执行周期ADD X读+加、STA X、LDA X读+送ACC。先送地址再读写内存最后CPU内部操作。

非访存指令CLA清零、COM取反、SHR右移、CSL循环左移、STP停机不访存所以快。

控制单元输入时钟、操作码IR、标志、外来信号中断/总线请求)。输出CPU内部控制信号 + 控制总线信号。


🔗 相关链接


📚 参考资料

  • 教材《计算机组成原理》第3版 - 唐朔飞
  • 复习资料:计算机组成原理知识点总结
  • 习题:作业三、作业四

本章难度: 中等 重要程度: 重要 补充版本:增加了通俗解释、实际例子和例题