Appearance
单总线数据通路:统考大题主战场
考情分析
这是 408 计组综合题的主战场:2009 年(数据通路信息流向)、2015 年(单总线 + 移位寄存器)、2022 年(数据通路分析)的大题都是这个题型。题目给一张单总线 CPU 结构图和自定义的控制信号约定,要求写出某条指令每个节拍的微操作和控制信号。前面单周期/多周期两篇用的 MIPS 教学模型帮你建立直觉,但真题答题用的是本篇这套唐朔飞式写法。
单总线结构长什么样
CPU 内部所有部件挂在一条内部总线上:
通用寄存器 R0~R3 ─┐
PC ──────────────┤
MAR ─────────────┤ 内部总线(每拍只能传一个数据)
MDR ─────────────┤
IR ──────────────┤
暂存器 Y ────────┤
ALU ←── Y(一个输入来自暂存器)
↑──── 总线(另一个输入直接来自总线)
ALU 输出 → 暂存器 Z → 总线两个关键约束决定了一切:
- 每个节拍总线上只能传送一个数据——两个数据要传就得拆成两拍
- ALU 是组合逻辑、自身不存数——两个输入不能同时来自总线,所以一个输入先存进暂存器 Y;输出也不能直接回总线(会和输入打架),先存进暂存器 Z
为什么需要 Y 和 Z(高频简答)
若没有 Y:ALU 两个操作数都要走总线,而总线一拍只能传一个数。若没有 Z:ALU 输出直接上总线,会与正在总线上的输入操作数冲突(组合逻辑成环)。单总线结构必须配 Y、Z 两个暂存器,这是和多总线结构对比的核心考点——三总线结构下 Y、Z 可省,节拍数更少。
控制信号的写法
每个寄存器与总线之间有两类门控信号:
| 信号 | 含义 |
|---|---|
R0out | 打开 R0 → 总线的输出门 |
R0in | 打开 总线 → R0 的输入门 |
MemR / MemW | 主存读 / 写命令 |
ALU(add) 等 | ALU 操作类型 |
一拍的微操作写成传送语句 + 控制信号,例如 R0out, Yin。
取指周期:所有指令共用的三拍
| 节拍 | 微操作 | 控制信号 |
|---|---|---|
| T1 | PCout, MARin | |
| T2 | MemR, MDRin, PC+1 | |
| T3 | MDRout, IRin |
注意 T2 里
三类指令的执行周期模板
① 寄存器-寄存器型:ADD R0, R1(功能
| 节拍 | 微操作 | 控制信号 |
|---|---|---|
| T4 | R0out, Yin | |
| T5 | R1out, ALU(add), Zin | |
| T6 | Zout, R0in |
② 取数型:LOAD R0, (R1)(功能
| 节拍 | 微操作 | 控制信号 |
|---|---|---|
| T4 | R1out, MARin | |
| T5 | MemR, MDRin | |
| T6 | MDRout, R0in |
③ 存数型:STORE (R1), R0(功能
| 节拍 | 微操作 | 控制信号 |
|---|---|---|
| T4 | R1out, MARin | |
| T5 | R0out, MDRin | |
| T6 | MemW, MDRout(至主存) |
完整例题:访存加法指令
题:写出指令 ADD R0, (R1)(功能
解:
| 节拍 | 微操作 | 控制信号 | 说明 |
|---|---|---|---|
| T1 | PCout, MARin | 取指 | |
| T2 | MemR, MDRin, PC+1 | 取指 | |
| T3 | MDRout, IRin | 取指、译码 | |
| T4 | R1out, MARin | 送操作数地址 | |
| T5 | MemR, MDRin | 取操作数 | |
| T6 | MDRout, Yin | 一个操作数进暂存器 | |
| T7 | R0out, ALU(add), Zin | 另一个操作数走总线,运算 | |
| T8 | Zout, R0in | 结果写回 |
共 8 拍。若问"哪几拍访问了主存":T2、T5 两拍(取指一次 + 取操作数一次)。
答题套路(四步)
- 取指三拍照抄(除非题目说明取指已完成)
- 执行段先写数据流:操作数从哪来 → 经不经过 ALU → 结果到哪去
- 按"一拍一个总线传送"拆拍:双操作数运算必有"先进 Y、再运算进 Z、最后 Z 写回"三拍
- 控制信号照"out/in 配对"翻译:源寄存器
out+ 目的寄存器in,访存拍加MemR/MemW,运算拍加 ALU 操作
常见丢分点:
- 忘了 Y/Z,让 ALU 两个输入同时走总线 ❌
- 把
单独占一拍(它有专用加 1 逻辑,可并入 T2)❌ - STORE 类指令把
MemW写在数据还没进 MDR 的那一拍 ❌
真题练习
题库中以下真题就是本题型,建议按"先自己写节拍表、再对答案"的方式练:
- 2009 年第 44 题:给定数据通路画信息流向
- 2015 年第 43 题:单总线 + 移位寄存器 SR,写指令的节拍安排
- 2022 年第 43 题:数据通路分析