Appearance
单总线数据通路:统考大题主战场
大纲定位
五(三)数据通路的功能和基本结构 · 五(四)控制器的功能和工作原理
大纲对这两条的要求落到题面上,就是:给一张单总线 CPU 结构图和一套自定义的控制信号约定,能读懂图上每个门控的位置,写出指定指令每个节拍的微操作和有效控制信号。
考情分析
这是 408 计组综合题的主战场:2009 年(给定数据通路写执行阶段节拍表)、2015 年(单总线 + 移位寄存器 SR 的通路设计)、2022 年(数据通路分析 + 标志位逻辑 + 取指信号序列)的大题都长在这个结构上。前面单周期/多周期两篇用的 MIPS 教学模型帮你建立直觉,但真题答题用的是本篇这套写法。
单总线结构长什么样
CPU 内部所有部件挂在一条内部总线上,每个寄存器与总线之间都有一个门控信号(图中的小圈):

(唐朔飞《计算机组成原理》第 3 版,见文末教材出处)
图上的下标 i / o 就是输入 / 输出控制:
教材图与真题图的一处差别
教材这张图画的是单累加器模型(只有一个 AC)。而 2015、2022 两年的真题画的是通用寄存器组(GPRs / R0~R3)模型。两者的结构骨架、Y 和 Z 的作用、节拍拆分规则完全一致,差别只在"运算的一方是固定的 AC,还是任选的某个通用寄存器"。按本篇的规则做题,两种图都能应付。
两个关键约束决定了一切:
- 每个节拍总线上只能传送一个数据——两个数据要传就得拆成两拍
- ALU 是组合逻辑电路、自身不存数——运算过程中必须保持两个输入端不变,所以一个输入从暂存器 Y 取,另一个从内部总线取;输出也不能直接接内部总线,否则输出会经总线反馈回 ALU 输入影响运算正确性,故用暂存器 Z 暂存结果
Y 和 Z 的存在理由,考试要求分开答
2022 年那道题直接问"为什么要设置暂存器 Y 和 Z",判分要求两者的动机分别答到,含混地答一句"用来暂存数据"是要扣分的:
| 暂存器 | 存在理由 |
|---|---|
| Y | ALU 双输入端需要两个操作数同时有效,而单总线一拍只能送一个 → 必须先把第一个操作数暂存进 Y,下一拍再送第二个 |
| Z | ALU 算完时总线可能正被"送第二个操作数"占用;且输出直接接总线会反馈回输入端 → 用 Z 暂存运算结果,等总线空出再送目的寄存器 |
编者注(结构对比):三总线结构下源操作数、目的操作数、结果各走一条总线,不存在"一拍只能传一个"的瓶颈,Y、Z 可以省掉,节拍数也随之减少。"为什么单总线需要 Y、Z 而三总线不需要"是这一块的核心辨析点。
控制信号的写法
命名逐年不同,要抓的是不变量
同一套结构,不同年份的题面用的符号并不一样:
| 出处 | 门控写法 | 暂存器命名 |
|---|---|---|
| 教材 | 下标 i / o( | Y、Z |
| 2009 年真题 | Xout / Xin | A(ALU 暂存器)、AC(累加器) |
| 2015 年真题 | Xout / Xin | T(暂存器)、SR(移位寄存器) |
| 2022 年真题 | Xout / Xin | Y、Z |
不变量只有三条:源寄存器给 out,目的寄存器给 in;访存另给读写命令;ALU 操作单独给一个信号。
考场铁律
一律照抄题面给定的信号名,不要用自己背下来的那套。题面写 Read/Write 你就写 Read/Write,写 MemR/MemW 你就写 MemR/MemW;把暂存器叫成 Y 而题目叫 T,判分是不认的。
MDR 是双端口,别混——2009 年的送分点
MDR 一头连内部总线、一头连数据总线 DB(要和主存交换数据),所以它的门控信号是四个而不是两个。2009 年题面明确定义了这套记号:
| 数据方向 | 信号 | 用在哪一拍 |
|---|---|---|
| DB → MDR | MDRinE | 主存读,与 MemR 同拍 |
| MDR → 内部总线 | MDRout | 把读回的数据送 IR / 送 Y / 送寄存器 |
| 内部总线 → MDR | MDRin | 写主存前把待写数据装进 MDR |
| MDR → DB | MDRoutE | 主存写,与 MemW 同拍 |
带 E 的是外部(External,即 DB 侧),不带 E 的是内部总线侧。访存那两拍如果写成不带 E 的 MDRin/MDRout,数据根本没到主存那一侧,这是直接扣分的错。
访存不是一拍就完事
前面的模板为了讲清数据流,把"
问"几个节拍/几步微操作"和问"几个时钟周期"是两个问题,后者必须把访存的延迟拍数算进去。
取指周期:所有指令共用的三拍
这里直接用 2009 年题面给出的范本(它把译码单列为 C4):
| 时钟 | 功能 | 有效控制信号 |
|---|---|---|
| C1 | PCout, MARin | |
| C2 | MemR, MDRinE, PC+1 | |
| C3 | MDRout, IRin | |
| C4 | 指令译码 | 无 |
注意 C2 里
三类指令的执行周期模板
① 寄存器-寄存器型:ADD R0, R1(功能
| 节拍 | 微操作 | 控制信号 |
|---|---|---|
| T4 | R0out, Yin | |
| T5 | R1out, ALU(add), Zin | |
| T6 | Zout, R0in |
② 取数型:LOAD R0, (R1)(功能
| 节拍 | 微操作 | 控制信号 |
|---|---|---|
| T4 | R1out, MARin | |
| T5 | MemR, MDRinE | |
| T6 | MDRout, R0in |
③ 存数型:STORE (R1), R0(功能
| 节拍 | 微操作 | 控制信号 |
|---|---|---|
| T4 | R1out, MARin | |
| T5 | R0out, MDRin | |
| T6 | MDRoutE, MemW |
对照 ② 和 ③ 的 T5:取数是 DB 把数据打进 MDR,用 MDRinE;存数是内部总线把数据打进 MDR,用 MDRin。同一个"
例题一:访存加法,结果回寄存器
题:写出 ADD R0, (R1)(功能
| 节拍 | 微操作 | 控制信号 | 说明 |
|---|---|---|---|
| T1 | PCout, MARin | 取指 | |
| T2 | MemR, MDRinE, PC+1 | 取指 | |
| T3 | MDRout, IRin | 取指、译码 | |
| T4 | R1out, MARin | 送操作数地址 | |
| T5 | MemR, MDRinE | 取操作数 | |
| T6 | MDRout, Yin | 一个操作数进暂存器 | |
| T7 | R0out, ALU(add), Zin | 另一个操作数走总线,运算 | |
| T8 | Zout, R0in | 结果写回 |
共 8 拍。若问"哪几拍访问了主存":T2、T5 两拍(取指一次 + 取操作数一次)。
例题二:结果写回主存(2009 年真题原型)
这道题的功能是
| 时钟 | 功能 | 有效控制信号 | 说明 |
|---|---|---|---|
| C5 | R1out, MARin | 先把 R1 装的地址送 MAR 才能访存 | |
| C6 | MemR, MDRinE | 从 DB 读出操作数 | |
| C7 | MDRout, Ain | 被加数送入 ALU 暂存器 | |
| C8 | R0out, Add, ACin | 另一操作数走内总线,运算 | |
| C9 | ACout, MDRin | 结果送 MDR,内总线侧 | |
| C10 | MDRoutE, MemW | 写回主存,DB 侧;MAR 一直没变,仍指向 |
两个容易丢分的细节:C9 用 MDRin(内总线 → MDR)、C10 用 MDRoutE(MDR → DB),一个都不能写反;MAR 从 C5 装入后全程不用重装,因为读和写的是同一个单元。
教材例题:间接寻址的加法 ADD @X
教材给的是带间址周期的完整三周期样本,考纲里的间接寻址正是从这里来的:
| 周期 | 微操作 | 有效控制信号 |
|---|---|---|
| 取指 | ||
| 间址 | ||
| 执行 |
间址周期的作用就是把"形式地址"换成"有效地址":读一次主存,把读回的有效地址填回 IR 的地址码字段,执行周期再拿它去访存取真正的操作数。所以间接寻址比直接寻址多一次访存。
答题套路(四步)
- 取指三拍照抄(除非题目说明取指已完成或已给出)
- 执行段先写数据流:操作数从哪来 → 经不经过 ALU → 结果到哪去
- 按"一拍一个总线传送"拆拍:双操作数运算必有"先进 Y、再运算进 Z、最后 Z 写回"三拍;结果回主存的再加"进 MDR、写主存"两拍
- 控制信号照"out / in 配对"翻译:源寄存器
out+ 目的寄存器in,访存拍加MemR/MemW并注意 MDR 用带 E 的那一侧,运算拍加 ALU 操作
常见丢分点
- 忘了 Y/Z,让 ALU 两个输入同时走总线
- 访存拍把 MDR 写成不带 E 的
MDRin/MDRout(数据没到主存那一侧) - 写回主存时把
MemW写在数据还没进 MDR 的那一拍 - 把
单独占一拍(它有专用加 1 逻辑,可并入取指第二拍) - 问"几个时钟周期"却按"几个节拍"答,漏算主存访问的延迟拍数
- 答 Y、Z 的作用时只笼统说"暂存数据",没把两者的动机分开
- 用自己背的信号名,而不是题面给定的那套
真题练习
建议按"先自己写节拍表、再对答案"的方式练:
相关真题(21题)
教材出处
- 数据通路结构图与门控信号命名(图 9.4):唐朔飞《计算机组成原理》(第 3 版)§9.2 控制单元的功能,印刷页 p381
ADD @X间址加法指令的三周期微操作序列:同书,印刷页 p382