5.1 CPU 的结构、指令执行过程与数据通路
CPU 的功能与基本结构,用户可见与透明的寄存器;指令周期、机器周期与时钟周期,取指、间址、执行、中断四个周期的数据流;数据通路的三种结构与单总线下的微操作序列。
CPU 的功能与基本结构
CPU 由运算器和控制器组成,承担五项基本功能:
- 指令控制:完成取指令、分析指令和执行指令的操作,即程序的顺序控制;
- 操作控制:产生完成每条指令所需的操作信号,送往相应部件;
- 时间控制:严格控制各种操作信号的出现时间、持续时间和出现的时间顺序;
- 数据加工:对数据进行算术和逻辑运算;
- 中断处理:处理运行过程中出现的异常情况和中断请求。
| 部件 | 主要组成 | 作用 |
|---|---|---|
| 运算器 | 算术逻辑单元 ALU、暂存寄存器、累加寄存器 ACC、通用寄存器组、程序状态字寄存器 PSW、移位器、计数器 | 对数据进行加工 |
| 控制器 | 程序计数器 PC、指令寄存器 IR、指令译码器、存储器地址寄存器 MAR、存储器数据寄存器 MDR、时序系统、微操作信号发生器 | 协调并控制计算机各部件执行程序的指令序列 |
- PSW(程序状态字寄存器)保存由算术/逻辑运算产生的状态信息,如溢出标志 OF、符号标志 SF、零标志 ZF、进位标志 CF,以及中断允许标志 IF 等。条件转移指令就是根据 PSW 中的标志决定是否转移。
- 暂存寄存器用于暂存从主存读来的数据,它对应用程序员是透明的。
- 控制器的工作原理:根据指令操作码、指令的执行步骤(微命令序列)和条件信号来形成当前计算机各部件要用到的控制信号。
指令执行过程
指令周期、机器周期与时钟周期
- 指令周期:CPU 从主存取出并执行完一条指令所需的全部时间。
- 指令周期常用若干机器周期(又称 CPU 周期)表示,一个机器周期通常是完成一次访存(或一个基本操作)所需的时间;
- 一个机器周期又包含若干时钟周期(又称节拍、T 周期),时钟周期是 CPU 操作的最基本单位。
不同指令的指令周期可以不同:无条件转移指令 JMP X 执行时不需要访问主存,只有取指和执行两个阶段;间接寻址的指令要多一个间址周期;如果 CPU 在一条指令执行结束时发现有中断请求,还要进入中断周期。各机器周期所含的时钟周期数可以相同(定长机器周期),也可以不同(不定长机器周期)。
CPU 内部设置 4 个标志触发器 FE、IND、EX、INT,分别表示当前处于取指、间址、执行、中断周期,同一时刻只有一个为 1:
四个机器周期的数据流
| 机器周期 | 数据流 | 访存 |
|---|---|---|
| 取指周期 | ① (PC) → MAR → 地址总线 → 主存;② CU 发出读命令 → 控制总线 → 主存;③ 主存 → 数据总线 → MDR;④ (MDR) → IR;⑤ CU 发出控制信号,(PC) + 1 → PC | 1 次(取指令) |
| 间址周期 | ① Ad(IR)(或 MDR 中的地址字段)→ MAR → 地址总线 → 主存;② CU 发出读命令;③ 主存 → 数据总线 → MDR,得到操作数的有效地址,可再送回 Ad(IR) | 1 次(取有效地址) |
| 执行周期 | 根据 IR 中的操作码完成相应操作,不同指令差别很大 | 视指令而定 |
| 中断周期 | ① (SP) − 1 → SP,修改后的地址送入 MAR;② CU 发出写命令,(PC)(断点)→ MDR → 主存;③ 中断服务程序的入口地址 → PC | 1 次(保存断点) |
指令执行方案
| 方案 | 做法 | 特点 |
|---|---|---|
| 单周期处理器 | 每条指令都在一个时钟周期内完成,CPI = 1 | 时钟周期取决于执行时间最长的指令;指令之间串行执行;一条指令执行过程中每个部件只能使用一次(如需两个加法器、指令和数据存储器分开) |
| 多周期处理器 | 把指令的执行分成多个阶段,每个阶段一个时钟周期 | 不同指令的 CPI 不同;同一部件可在不同周期重复使用;指令之间仍串行执行 |
| 流水线处理器 | 把每条指令分成多个阶段,不同指令的不同阶段重叠执行 | 理想情况下每个时钟周期完成一条指令,见第 3 节 |
数据通路
数据通路是数据在指令执行过程中所经过的路径,包括路径上的部件(ALU、通用寄存器、PSW、异常和中断处理逻辑等)。它由控制部件控制:控制部件根据每条指令功能的不同生成对数据通路的控制信号。
组成数据通路的元件分为两类:
- 组合逻辑元件(操作元件):输出只取决于当前输入,无存储功能,如加法器、ALU、译码器、多路选择器、三态门;
- 时序逻辑元件(状态元件):具有存储功能,在时钟控制下写入,如各类寄存器、PC。
数据通路的三种基本结构
| 结构 | 特点 |
|---|---|
| CPU 内部单总线 | 所有寄存器的输入端和输出端都连到一条公共通路上;结构简单,但同一时刻只能传送一个数据,冲突多、性能低 |
| CPU 内部多总线 | 寄存器的输入/输出端连到多条公共通路上,同一时刻可在多条总线上并行传送数据 |
| 专用数据通路 | 按指令执行过程中数据和地址的流动方向安排连接线路,用多路选择器和三态门控制;避免共享总线带来的冲突,性能高但硬件量大 |
内部总线指 CPU 内部连接各寄存器及运算部件的总线;系统总线指连接 CPU、存储器和外设的总线(见第 6 章)。
单总线结构下的基本操作
在单总线结构中,每个寄存器 X 有两个控制信号:Xout 把 X 的内容送上总线(三态门打开),Xin 把总线上的内容打入 X。数据通路中的三类基本操作:
- 寄存器之间的数据传送:如 (PC) → MAR,只需一个节拍,控制信号为
PCout, MARin; - 主存与 CPU 之间的数据传送:如取指令时,(PC) → MAR;CU 发出读命令
MemR,M(MAR) → MDR;(MDR) → IR; - 执行算术或逻辑运算:ALU 本身是没有内部存储功能的组合电路。单总线一次只能送出一个操作数,所以 ALU 的一个输入端要先接一个暂存寄存器 Y;运算结果也不能直接送回总线(此时总线正被另一个操作数占用),要先存到暂存寄存器 Z。
动画演示单总线数据通路:一条指令的微操作序列
向总线输出(Xout)从总线输入(Xin)访问主存
1/9单总线结构:所有寄存器的输入端和输出端都连接到同一条内部总线上。同一时刻总线上只能有一个部件输出(Xout),可以有一个或多个部件输入(Xin)
例题:写出微操作序列
采用上面的单总线结构,写出指令 ADD R2, R0, R1(功能:(R0) + (R1) → R2)执行阶段的微操作及有效控制信号。
查看解答
取指阶段与动画相同(C1~C3)。执行阶段:
| 节拍 | 微操作 | 有效控制信号 |
|---|---|---|
| C4 | (R0) → Y | R0out, Yin |
| C5 | (R1) + (Y) → Z | R1out, ADD, Zin |
| C6 | (Z) → R2 | Zout, R2in |
两个操作数都在寄存器中,不需要访存,执行阶段共 3 个节拍。
即时练习
即时练习5 题
点击选项即可作答
- 1下列寄存器中,汇编语言程序员可见的是( )。
- 2假定不采用 Cache 和指令预取技术,且机器处于「开中断」状态,则在下列有关指令执行的叙述中,错误的是( )。
- 3下列关于单周期 CPU 的叙述中,错误的是( )。
- 4在单总线结构的 CPU 中,ALU 的输入端连接暂存寄存器 Y 的原因是( )。
- 5指令周期中,由硬件自动完成「关中断、保存断点、送中断服务程序入口地址到 PC」的是( )。
学完了吗?
标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。