是什么
-
定义:CPU 内部所有寄存器、ALU 及数据传输部件均连接在一组共享的内部总线上,由控制单元(CU)按时序发出微命令,协调各个部件分时复用总线以完成指令执行的数据通路结构。
-
大白话:内部总线就像 CPU 内部的“单车道”,所有部件都在路边排队;同一时刻只能有一个部件往路里送数据,其他部件可以同时听/收。为了不堵车和不让数据乱窜,需要额外的暂存器(如 Y、Z)和严格的节拍控制。
核心内容
1. 单总线结构的固有矛盾与暂存器配置
-
ALU 与总线的矛盾:ALU 是无存储功能的组合逻辑部件,要求两个输入端必须同时提供稳定的输入信号。但单总线同一时刻只能传输一个操作数。
-
解决机制(暂存器 Y):先将第一个操作数从总线打入 暂存器 Y 锁存;在下一个节拍,总线送出第二个操作数直达 ALU 的 B 端,此时 Y 端稳定输出第一个操作数到 A 端,ALU 方可完成计算。
-
-
输出与输入的竞争矛盾:ALU 运算结果若直接送回内部总线,会形成环路反馈至输入端 B,引发逻辑冲突与数据振荡。
-
解决机制(暂存器 Z):ALU 输出端外接 暂存器 Z 锁存运算结果,在后续节拍再由 门控信号将结果送上总线。
-
2. 算术逻辑标志位生成原理
设 16 位运算中两个输入最高位分别为 、,运算结果最高位为 :
-
符号标志 SF (Sign Flag):反映结果正负(补码符号位)。
-
溢出标志 OF (Overflow Flag):仅在同号相加或异号相减导致符号异常改变时产生。
-
加法 溢出:正加正得负()或 负加负得正()。
-
减法 溢出:正减负得负()或 负减正得正()。
-
3. 通用寄存器组(GPRs)寻址与选通逻辑
-
容量与位宽关系:地址线位宽为 位时,最多可唯一标识 个独立通用寄存器(如 4 位对应 个寄存器)。线位宽看数据链路图上写的几,线位宽就是几
-
字段来源:寄存器编号(
rs、rd)来自 指令寄存器(IR) 划分的操作数寻址字段。 -
读/写控制逻辑底层的区别:
-
写操作(rd):输入为 4 位二进制编号,需选通 16 个寄存器中某一个的写入使能端,使用 地址译码器(Decoder)。
-
读操作(rs):从 16 个寄存器现有的输出信号中选出 1 路送出,使用 多路选择器(MUX)。
-
4. 取指周期的固定微操作与时序流水
取指令阶段的核心数据通路为:。
-
阶段划分与微操作序列:
-
发地址并启动读:
PCout, MARin, Read(在第 1 周期发出,将 PC 送入 MAR 并启动主存读) -
主存读等待:若主存访问延迟为 个时钟周期,CPU 需插入等待信号(周期 )
-
送指令寄存器:
MDRout, IRin(在第 周期,数据已在 MDR 稳定,送入 IR 译码)
-
读延迟周期重叠:考场上写微操作序列时,PCout, MARin 和 Read 可以放在同一个周期发出,主存读周期从发出 Read 该拍开始计时。
-
周期计算公式:
5. 控制单元(CU)的产生机制与输入连接
-
CU 的功能:产生整个 CPU 运行所需的全部微命令控制信号(如各种寄存器的
in/out门控、ALUop、主存Read/Write等)。 -
CU 的核心输入来源及作用:
-
指令寄存器(IR):提供操作码(OPcode),告诉 CU “当前要执行什么指令”。
-
标志寄存器(FR/PSW):提供运算状态标志(如 SF、OF、ZF、CF),告诉 CU “条件转移等分支是否满足”。
-
时钟与节拍发生器:提供节拍脉冲信号,告诉 CU “当前处于指令的第几步”。
-
外部控制信号(如中断请求/总线请求):告诉 CU “是否有更高级别的外部事件响应”。
-
例题
-
题目:(2022年408统考真题)某 CPU 数据通路包含 GPRs(读端口 rs、写端口 rd,线宽均为 4 位)、ALU(输入 A/B,输出 F)、暂存器 Y 与 Z、标志寄存器 FR、IR、PC、MAR、MDR 及主存。
-
设 ALU 输入端最高位为 、,输出最高位为 ,写出 SF 以及 、 时 OF 的逻辑表达式。
-
为什么要设置暂存器 Y 和 Z?
-
GPRs 最多有多少个通用寄存器?rs 和 rd 来自哪个寄存器?rd 应连接地址译码器还是多路选择器?
-
取指令阶段(不考虑 PC 增量)的控制信号序列是什么?若从发出主存读指令到数据读出并传送到 MDR 共需 5 个时钟周期,取指令阶段至少需要几个时钟周期?
-
图中控制信号由什么部件产生?图中哪些寄存器的输出信号会连到该部件的输入端?
-
-
分析:
-
(1) SF 直接取最高位;OF 根据溢出情形构造最小项。
-
(2) 单总线同一时刻只能传一个数,ALU 需两端同时输入 必须用 Y 锁存操作数;ALU 结果直连总线会形成回路振荡 必须用 Z 暂存结果。
-
(3) 4 位二进制对应 ;寄存器编号来自 IR;rd 写操作需选通使能端,用译码器。
-
(4) 取指遵循 。第 1 周期发
PCout, MARin, Read,主存读占 5 拍,第 6 周期发MDRout, IRin。 -
(5) 控制信号由控制单元(CU)产生;其输入需接收 IR 的操作码以决定执行指令类型,接收 FR 的状态标志以决定转移跳转。
-
-
答案:
-
加法溢出:
减法溢出:
-
设置 Y 的原因:CPU 内部采用单总线结构,同一时刻总线上只能传输一个操作数;ALU 是无存储功能的组合逻辑部件,要求双端同时稳定输入,故需先用 Y 锁存一个操作数。
设置 Z 的原因:ALU 运算结果若直接送上内部总线,会形成回路反馈至输入端 B 引起逻辑冲突与振荡;设置 Z 可以暂存运算结果,在下一拍再输出到总线。
-
GPRs 中最多有 16 个 通用寄存器;rs 和 rd 来自 指令寄存器(IR);rd 应连接 地址译码器。
-
取指令阶段控制信号序列:
-
第 1 拍:
PCout, MARin, Read -
第 2 ~ 5 拍:等待主存读操作完成
-
第 6 拍:
MDRout, IRin
取指令阶段至少需要 6 个时钟周期。
-
-
控制信号由 控制单元(CU / 控制器) 产生。会连到该部件输入端的寄存器为 指令寄存器(IR) 和 标志寄存器(FR)。
-
⚠️ 易错点
Warning
取指周期的节拍叠加陷阱:主存读延时 5 拍是从发出
Read信号开始计算的。由于PCout, MARin, Read可以在第 1 周期同时发出,故取指总周期为 拍,不要算成 拍(除非题目明确说明 Read 必须在 MAR 稳定后的下一周期单独发出)。CU 输入寄存器的遗漏:判断哪些寄存器连入 CU 时,容易漏掉 标志寄存器(FR)。CU 产生微指令不仅看 IR 里的操作码,条件转移指令(如
beq,bne)还必须依据 FR 里的标志位(ZF, SF 等)来决定下一条指令地址。译码器与多路选择器功能混淆:
==地址译码器()== 用于“选定目标使能” 适用于 写操作(rd)。
==多路选择器()== 用于“多路数据挑一路” 适用于 读操作(rs)。
单总线微操作并发冲突:同一时钟周期内,只能有一个部件输出到总线(带 out 信号),但可以有多个部件同时从总线读入(带 in 信号)。