第 6 章 总线
408 计算机组成原理第 6 章 总线复习讲义,涵盖核心概念、重点考点与典型题型。
Last updated on
从资料标出的历年考点看,建议你把本章分成三个层次:
| 重要程度 | 内容 |
|---|---|
| ★★★★★ | 总线宽度、时钟频率、工作频率、带宽计算 |
| ★★★★★ | 非突发/突发传输,事务时间计算 |
| ★★★★★ | 同步、异步、半同步、分离式定时 |
| ★★★★☆ | 数据/地址/控制总线的区别 |
| ★★★★☆ | 串行与并行传输 |
| ★★★☆☆ | 单总线、双总线、三总线、南北桥 |
| ★★☆☆☆ | PCI、PCIe、USB、ISA 等具体标准 |
其中资料明确标注,总线带宽相关考查曾出现在 2009、2013、2014、2018—2020、2024、2025 等年份,是这一章最稳定的计算考点。
一、先从本质理解:总线到底是什么?
1. 为什么需要总线?
假设计算机里有:
- CPU
- 主存
- 显卡
- 网卡
- 磁盘控制器
- USB 控制器
如果每两个部件之间都拉一组专用线路:
CPU ─── 主存
CPU ─── 显卡
CPU ─── 网卡
CPU ─── 磁盘
主存 ── 显卡
主存 ── 网卡
……部件越多,线路数量会急剧膨胀。
所以后来把很多通信线路合并成公共通路:
┌── 主存
│
CPU ───── 总线 ─── 显卡
│
├── 网卡
│
└── I/O接口这就是总线思想。
资料中的定义是:
总线是一组可供多个部件分时共享的公共信息传输线路。
核心就两个词:
共享性
很多设备都接在这组公共线路上。
分时性
虽然大家都连接着,但同一时刻通常只能有一个设备作为发送方驱动总线。
否则:
CPU:10101010
DMA:11110000两者同时向一组物理线路输出不同电平,就发生冲突。
所以最重要的一句话是:
总线解决了“连线太多”的问题,却引入了“多个设备争抢总线”的问题。
这也是为什么后面会出现总线仲裁、总线事务、定时等概念。
二、总线的分类
1. 内部总线
又叫片内总线。
它位于芯片内部,比如 CPU 内:
寄存器
│
内部总线
│
ALU
│
寄存器CPU 内部寄存器、ALU 等部件之间的数据交换就依赖内部总线。
这是理解内容,通常不是计算重点。
三、★★★★★ 系统总线:数据、地址、控制总线
这是选择题高频点。
CPU、主存、I/O 接口之间连接的总线叫系统总线,通常分成:
系统总线
├── 数据总线
├── 地址总线
└── 控制总线1. 数据总线
作用:
传“内容”。
可以传:
- 指令
- 操作数
- 运算结果
- 状态字
- 中断类型号等
例如 CPU 执行:
a = b;内存中的 b 要送给 CPU:
主存 ──数据──> CPUCPU 把结果写回主存:
CPU ──数据──> 主存所以数据总线通常是:
双向的。
一个非常重要的易错点
指令能不能在数据总线上传输?
能。
虽然名字叫“数据总线”,这里的“数据”是广义的信息。
CPU 从主存取:
机器指令同样通过数据总线。
所以:
数据总线:
指令 √
操作数 √
运算结果 √
中断类型号 √但:
握手/应答信号 ×因为握手信号属于控制信息。
这正对应资料中的 2011 年真题。
四、地址总线
作用:
告诉别人“我要访问谁”。
例如 CPU 想读:
0x1000这个地址经过:
CPU ──地址总线──> 主存所以通常是:
从主设备 → 从设备,单向传输。
地址线数量决定什么?
假设有:
根地址线。
每根线只有:
0 / 1两种状态。
所以能编码:
个地址。
如果按字节编址:
例如 16 根地址线:
于是:
资料也以 16 位地址线得到 64 KB 为例。
一个极高频混淆
数据总线宽度决定:
一次传多少数据。
地址总线宽度决定:
最多能访问多少地址。
例如:
32位数据总线
36位地址总线表示:
- 一次最多并行传 32 bit;
- 可以表示 个地址。
两件事完全不同。
五、控制总线
作用:
告诉其他部件“现在做什么、什么时候做”。
例如:
- 存储器读
- 存储器写
- I/O 读
- I/O 写
- 中断请求
- 中断响应
- 总线请求
- 总线允许
- 时钟
- 复位
- 应答信号
控制总线是单向还是双向?
这是典型陷阱。
不能简单说:
控制总线整体就是单向。
因为控制总线其实是很多根不同功能的线组成的集合。
例如:
CPU ──读命令────> 主存
CPU <──完成信号── 主存有的信号 CPU → 外部:
读
写有的信号外部 → CPU:
中断请求
应答所以:
每一根具体控制线往往有明确方向,但控制总线整体包含不同方向的信号。
六、三种系统总线快速总结
| 总线 | 主要传什么 | 一般方向 | 主要决定什么 |
|---|---|---|---|
| 数据总线 | 指令、数据、状态字等 | 双向 | 每次数据传输量 |
| 地址总线 | 地址 | 主→从 | 最大寻址范围 |
| 控制总线 | 读写、中断、应答等 | 各线不同 | 协调控制 |
做题时可以记一句:
地址回答“去哪儿”,控制回答“干什么”,数据回答“传什么”。
七、其他类型:I/O 总线与通信总线
资料还区分:
I/O 总线
主要连接主机与内部 I/O 控制器,例如:
- PCI
- AGP
- PCIe
通信总线
用于:
主机 ↔ 外部设备或者:
计算机 ↔ 计算机例如:
- USB
- RS-232
八、总线标准——理解为主
资料列出了很多传统标准,但同时注明,这部分具体标准已在资料所依据的大纲中降低地位,因此不建议投入大量时间死记。
最值得记的实际上只有几组对比。
PCI 与 PCIe
PCI
传统:
并行
共享
32/64位PCIe
现代:
高速串行
点对点
全双工
多Lane例如:
PCIe x1
PCIe x4
PCIe x8
PCIe x16x16 就表示有 16 条 Lane。
资料明确将 PCIe 的“高速串行、点对点、多通道、全双工”作为历史考点。
USB
记:
串行 + 即插即用 + 热插拔 + 可级联多设备。
不要看到 USB 就因为里面有多根物理线而说它是并行总线。
它在逻辑数据传输方式上属于串行通信。
九、★★★★★ 总线性能指标
这是本章最重要的一部分。
需要真正区分四个东西:
时钟周期
↓
时钟频率
↓
每周期传几次
↓
工作频率
↓
总线宽度 × 工作频率
↓
总线带宽十、总线时钟周期与时钟频率
假设总线时钟周期为:
那么频率:
例如:
则:
即:
这个换算在突发传输时间题里非常重要。
十一、总线周期 ≠ 时钟周期
这是第一大陷阱。
一个总线周期是完成一次总线事务所需要的时间。
一个总线周期可能需要:
2个时钟周期
3个时钟周期
4个时钟周期
……例如题目说:
一个总线周期占 2 个时钟周期。
如果时钟频率:
那么时钟周期:
一个总线周期就是:
所以每秒只能进行:
次总线传输。
十二、★★★★★ 总线工作频率
总线工作频率可以理解成:
每秒真正发生多少次有效数据传输。
它不一定等于时钟频率。
例如总线时钟:
如果每个时钟周期传一次:
如果每周期传两次:
如果每周期传四次:
因此考试看到:
DDR、每周期传两次、双沿传输
就一定要想到:
工作频率不等于基础时钟频率。
十三、★★★★★ 总线宽度
总线宽度:
数据总线的位数。
例如:
8位 → 每次1B
16位 → 每次2B
32位 → 每次4B
64位 → 每次8B换算统一使用:
所以如果宽度给的是 bit:
十四、★★★★★ 总线带宽计算
资料给出的核心公式:
如果宽度用 bit 表示,那么通常先换成 Byte:
其中:
- :B/s
- :bit
- :次/s
十五、典型题 1:2009 真题模型
题目大意:
某系统总线一次总线周期可传 4B,一个总线周期占 2 个时钟周期,时钟频率为 10MHz,求带宽。
第一步,算时钟周期:
第二步,因为一个总线周期 = 2 个时钟周期:
所以总线事务频率:
每次传:
所以:
得到:
这类题最通用的做法
永远先问自己:
“一秒能传几次?”
然后:
这样比死背公式更稳。
十六、理论带宽 vs 实际/有效数据传输率
这是近年来非常容易设置陷阱的地方。
资料专门强调:
理论总线带宽通常依据总线宽度、工作频率等物理参数计算,不扣除地址、控制等事务开销。
而如果题目问:
- 实际数据率
- 有效数据率
- 平均传输率
- 完成一批数据需要多少时间
就必须考虑:
地址周期
控制周期
等待周期
数据周期
协议开销
……所以一定区分:
理论带宽
有效数据率
十七、总线复用
所谓复用:
同一组物理线在不同时间传不同东西。
最典型:
地址/数据复用例如一组 32 位线:
第1周期:地址
第2周期:数据
第3周期:数据
……优点:
减少引脚数量。
缺点:
地址和数据不能同时使用这组线路,必须分时。
因此总线复用:
- 降低硬件成本;
- 可能增加事务时间。
这个知识点会直接出现在下面的突发传输计算中。
十八、总线结构
1. 单总线结构
┌─主存
│
CPU ──系统总线──I/O接口
│
├─DMA
│
└─其他设备优点:
- 简单
- 成本低
- 扩展容易
问题:
CPU、主存、I/O 全部争同一条总线。
所以瓶颈明显。
十九、双总线结构
为了让:
CPU ↔ 主存这条高速通路不要总被慢速 I/O 抢占,引入专用存储总线。
可以粗略理解为:
存储总线
CPU ============ 主存
│
│ I/O总线
│
I/O设备优点:
CPU—主存通信和 I/O 通信适当分离。
但资料指出,早期这种结构下 I/O 与主存之间的数据交换仍可能需要 CPU 中转,因此仍存在瓶颈。
二十、三总线结构
进一步引入 DMA 总线:
CPU ─── 主存
↑
│
DMA
↑
I/O设备这样高速 I/O 能够通过 DMA:
I/O ↔ 主存直接传输,而不是:
I/O → CPU → 主存当然,DMA 的详细机制是第 7 章内容。
这里你只要理解:
三总线结构的设计目标之一,是把高速 I/O 与主存交换从 CPU 中转中解放出来。
二十一、南桥/北桥——理解结构即可
传统 PC 经常使用南北桥结构。
CPU
│
FSB
│
北桥
/ \
主存 显卡
\
南桥
┌────┬────┬─────┐
USB SATA 网卡 ...北桥
处理高速设备:
- CPU
- 主存
- 显卡
南桥
处理相对低速 I/O:
- USB
- SATA
- Ethernet
- 扩展设备
CPU 到北桥之间传统上称:
FSB,Front Side Bus,前端总线。
这部分主要帮助理解计算机总线结构为什么逐步从:
一条大家抢变成:
分层
分通道
高速低速分离二十二、★★★★★ 总线事务
这一节不是在问:
“总线是什么?”
而是在问:
“一次具体的数据传输到底怎样完成?”
假如 CPU 要读内存:
CPU 主存
│ │
├────地址────────────────────>│
├────读命令──────────────────>│
│ │
│ 准备数据 │
│ │
│<────────数据────────────────┤
│ │这整个过程才是一笔:
总线事务。
二十三、★★★★★ 非突发传输
资料总结得很好:
一次地址,一次数据。
如果 CPU 连续读:
A
A+1
A+2
A+3非突发模式:
地址A → 数据A
地址A+1 → 数据A+1
地址A+2 → 数据A+2
地址A+3 → 数据A+3每一个数据都重新发地址。
所以开销很大。
二十四、★★★★★ 突发/猝发传输
Burst Transfer。
核心是:
一次地址,多次数据。
比如:
地址 A
↓
数据 A
数据 A+1
数据 A+2
数据 A+3后续地址由硬件自动递增。
因此:
普通方式:
地址 数据 地址 数据 地址 数据 地址 数据
突发方式:
地址 数据 数据 数据 数据最大优势:
减少重复地址传送的开销。
典型场景:
- Cache 缺失后装入一个 Cache 块;
- SDRAM 连续读;
- 连续块数据传输。
二十五、★★★★★ 突发传输时间计算模型
这是一定要会的。
假设:
- 地址阶段需要 个时钟;
- 每个数据需要 个时钟;
- 一共传 个数据;
- 时钟周期为 。
非突发
每个数据都要:
地址 + 数据所以:
突发
只发送一次地址:
如果:
地址1周期
每个数据1周期就化成:
这不是额外教材定义,而是根据资料中“一次地址、多次数据”的事务结构直接得到的解题模型。
二十六、典型题 2:2012 突发传输真题
题意:
同步总线 100MHz,宽度 32 位,地址/数据线复用。一个地址或数据均占一个时钟周期。采用突发传输,主存写 128 bit 数据,至少需要多久?
首先:
总线一次能传:
要传:
因此数据阶段需要:
个周期。
又因为地址/数据复用,先传一次地址:
个周期。
总周期:
因此:
得到:
这个题真正考什么?
不是简单除法,而是能不能看出来:
地址周期:1
数据周期:4所以是:
而不是:
二十七、串行传输与并行传输
1. 并行传输
例如 32 位总线:
D31 D30 ... D2 D1 D0
↓ ↓ ↓ ↓ ↓
同时发送32bit优势:
- 单次可传很多位;
- 短距离吞吐高。
缺点:
线路越多、高频时越容易出现各位到达时间不同。
假如:
D0 到达:10.0ns
D1 到达:10.2ns
D2 到达:10.5ns
...这就是所谓时序偏移问题。
此外还有:
- 串扰
- 布线困难
- 引脚很多
所以高频长距离很困难。
二十八、串行传输
串行不是一次传一个字,而是:
1 0 1 1 0 1 0 0
→ → → → → → → →按位依次传。
优势:
- 线路少;
- 布线简单;
- 抗干扰强;
- 更适合高频;
- 更适合长距离。
现代典型:
- PCIe
- SATA
- USB
二十九、一个经典误区:并行一定比串行快?
不一定。
这是很喜欢考的概念。
假设并行:
32条线 × 较低频率串行:
1条高速线 × 极高频率后者完全可能更快。
现代总线的发展趋势恰恰是:
高速串行化。
典型:
PCI → 并行
PCIe → 串行
IDE → 并行
SATA → 串行资料对此专门作了提醒。
三十、同步串行通信 vs 异步串行通信
这里特别注意:
“同步/异步串行通信”和后面“同步/异步总线定时”不是完全同一个概念层次。
同步串行通信
收发双方严格进行时钟同步。
适合连续传大块数据。
特点:
- 传输效率较高;
- 同步机制复杂。
异步串行通信
双方不共享严格同步时钟,每个字符单独传。
典型帧:
空闲
↓
11111111
0 | data bits | parity | 1
↑ ↑
起始位 停止位资料给出的典型规则:
- 空闲状态:1
- 起始位:0
- 数据低位先传
- 可有奇偶校验
- 停止位:1
三十一、★★★★★ 总线定时到底解决什么?
现在有 CPU 和某 I/O 接口:
CPU速度:快
设备速度:慢CPU 发出一个读请求后,什么时候可以真正取数据?
这是一个:
时间协调问题。
总线定时就是定义:
主设备和从设备什么时候发信号、什么时候接收信号、什么时候认为事务完成。
资料分为四类:
总线定时
├── 同步
├── 异步
├── 半同步
└── 分离式三十二、★★★★★ 同步定时
所有设备服从共同的时钟。
假设:
T1 T2 T3 T4
│ │ │ │
地址 命令 数据 完成大家约定好:
第几个周期干什么。
不需要再问:
“你准备好了吗?”优点
1. 控制简单
不需要复杂握手。
2. 速度快
少了请求—应答的额外控制。
缺点
如果最慢设备需要 100ns,而最快只要 20ns,为保证最慢设备能工作,整个总线时序可能不得不按慢设备设计。
所以:
同步系统很容易受到慢设备制约。
适用
资料指出:
- 总线较短;
- 各设备速度比较接近。
三十三、★★★★★ 异步定时
没有统一时钟强迫双方在固定时间完成。
采用:
请求—回答/应答握手。
比如:
CPU:我要数据了
↓
Request
↓
设备慢慢准备
↓
Answer
↓
CPU:知道了因此设备准备 10ns:
等10ns准备 100ns:
等100ns周期长度可以变化。
优点
自适应。
能连接速度差异非常大的设备。
可靠性高。
缺点
需要多次握手:
请求
应答
撤销请求
撤销应答所以:
- 控制复杂;
- 通常速度低于简单同步控制。
三十四、★★★★★ 异步定时的三种互锁方式
这是非常典型的选择题考点。
1. 不互锁
主设备:
发请求后,过一会自己撤销。
从设备:
发回答后,过一会自己撤销。
双方谁都不等谁。
主:请求 ↑ ───── ↓
× 不等回答
从: 回答 ↑ ───── ↓
× 不等请求撤销可靠性最低。
2. 半互锁
主设备:
必须看到回答以后才能撤销请求。
从设备:
回答之后仍然可以自己撤销,不需要确认请求已经撤销。
所以只有一方形成完整依赖。
可以记:
主等从,从不等主。
3. 全互锁
主:
收到回答 → 才撤请求。
从:
看到请求撤销 → 才撤回答。
完整过程:
主:请求↑
↓
从: 回答↑
↓
主:请求↓
↓
从: 回答↓双方都确认对方状态。
因此:
最可靠,但控制最复杂。
三十五、互锁三种方式怎么快速记?
可以直接背这一张:
| 方式 | 主等从? | 从等主? | 可靠性 |
|---|---|---|---|
| 不互锁 | × | × | 最低 |
| 半互锁 | √ | × | 中 |
| 全互锁 | √ | √ | 最高 |
这比记波形容易得多。
三十六、半同步定时
半同步:
同步时钟 + 异步等待思想。
它仍然有统一时钟:
CLK但额外增加:
WAIT如果从设备没准备好:
WAIT告诉主设备:
“别急,再等一个周期。”
于是:
T1 T2 Wait Wait T3这就解决了纯同步方式不能适应慢设备的问题。
资料描述的核心是:仍按系统时钟动作,但可以通过 Wait 信号插入等待周期。
三十七、同步、异步、半同步怎么区分?
| 特点 | 同步 | 异步 | 半同步 |
|---|---|---|---|
| 统一时钟 | 有 | 无 | 有 |
| 请求/应答 | 通常无 | 有 | WAIT |
| 周期长度 | 固定 | 可变 | 可插等待 |
| 控制复杂度 | 最简单 | 较复杂 | 中等 |
| 速度 | 较高 | 较低 | 中 |
| 适应速度差异 | 差 | 最好 | 较好 |
核心记忆:
同步:看钟。
异步:握手。
半同步:看钟,但是允许喊“等等”。
三十八、分离式定时
资料对这一部分的原始可见内容比较少,只明确给出核心思想:
把一次总线事务拆成请求阶段和应答阶段。
为什么要这么设计?
前面的同步、异步、半同步事务都有一个问题:
例如 CPU 请求慢速设备:
请求
│
├────设备准备100ns────┤
│
响应期间可能一直占着总线。
但设备真正准备数据的时候:
总线其实没有传有效数据于是造成浪费。
分离式思想就是:
第一阶段:
CPU发请求
↓
释放总线
设备自己准备数据
第二阶段:
设备准备好了
↓
重新发起应答/传输所以理解本质即可:
不要在慢设备处理期间白占着总线。
资料在这一部分源 PDF 本身存在缺页,因此不建议在考试复习阶段对其具体时序细节继续向外扩展。
三十九、★★★★★ 最容易混的两组“同步/异步”
一定要分开。
第一组
同步串行 / 异步串行
讨论的是:
串行数据的位/字符怎样组织和同步。
异步串行里面有:
起始位
数据位
校验位
停止位第二组
同步定时 / 异步定时
讨论的是:
一次总线事务中主设备、从设备怎样协调时序。
异步定时里面是:
请求
回答两组虽然都叫“同步/异步”,但不是同一回事。
四十、总线事务做题的统一方法
以后所有总线时间题,建议固定按下面思路。
第一步:求时钟周期
如果频率是:
那么:
第二步:确定一次能传多少数据
如果总线宽度为:
则:
第三步:确定数据需要传几次
数据量为:
则大致需要:
次。
第四步:看是不是突发
非突发:
地址 数据 地址 数据 地址 数据突发:
地址 数据 数据 数据第五步:有没有额外周期
检查题目关键词:
- 地址/数据复用
- 等待周期
- 总线周期包含几个时钟周期
- 一个周期传几次
- 校验位
- 全双工
- 是否只算有效数据
最后统一算时间或有效速率。
四十一、几个历年真题思维
你的题目资料里已经非常好地覆盖了这一章。
2009
考:
总线周期、时钟周期和带宽。
关键:
2011
考:
什么能走数据总线?
答案思路:
指令 √
操作数 √
中断类型号 √
握手信号 ×2012
考:
地址/数据复用 + 突发传输。
核心:
2012 USB
考:
- 串行
- 即插即用
- 热插拔
- 多设备
2013
考:
设备与设备控制器之间使用何种接口。
进一步考你有没有理解:
CPU/主机
↓
I/O控制器
↓
具体设备不同总线工作在不同层级。
四十二、本章最典型的错误选项
以后做选择题看到下面这些说法,要高度警惕。
错误 1
数据总线只能传普通数据,不能传指令。
错。
错误 2
地址总线宽度决定 CPU 一次能传多少数据。
错。
它决定寻址能力。
错误 3
32 位数据总线一定表示机器字长 32 位。
不一定。
总线宽度、机器字长是不同指标。
错误 4
总线时钟频率就是总线工作频率。
不一定。
如果一个周期传两次:
错误 5
总线周期就是一个时钟周期。
不一定。
错误 6
并行总线一定比串行总线快。
错。
现代:
PCIe、SATA、USB恰恰都是高速串行化的重要例子。
错误 7
突发传输每传一个数据都重新给地址。
错。
它的核心就是:
一次地址,多次连续数据。
错误 8
异步定时完全没有任何时间控制。
错。
没有统一时钟,不代表没有控制。
它使用:
请求—回答握手。
错误 9
全互锁只要求主设备等从设备。
错。
全互锁是:
双方互等。
错误 10
地址/数据复用能够让地址和数据同时传输。
恰恰相反。
“复用”的意思是:
同一线路在不同时间分别承担不同功能。
四十三、本章最终知识框架
建议脑中形成这棵树:
第6章 总线
│
├─ 1. 总线概念
│ ├─ 共享性
│ └─ 分时性
│
├─ 2. 总线分类
│ ├─ 内部总线
│ ├─ 系统总线
│ │ ├─ 数据总线
│ │ ├─ 地址总线
│ │ └─ 控制总线
│ ├─ I/O总线
│ └─ 通信总线
│
├─ 3. 总线性能 ★★★★★
│ ├─ 时钟周期
│ ├─ 时钟频率
│ ├─ 总线周期
│ ├─ 工作频率
│ ├─ 总线宽度
│ ├─ 总线带宽
│ ├─ 地址能力
│ └─ 总线复用
│
├─ 4. 总线结构
│ ├─ 单总线
│ ├─ 双总线
│ ├─ 三总线
│ └─ 南北桥
│
└─ 5. 总线事务 ★★★★★
├─ 非突发
├─ 突发
├─ 串行 / 并行
└─ 定时
├─ 同步
├─ 异步
│ ├─ 不互锁
│ ├─ 半互锁
│ └─ 全互锁
├─ 半同步
└─ 分离式四十四、考前必须熟练到什么程度?
如果是为了 408,建议这一章至少做到下面这些看到题就能立刻反应:
第一,看到:
地址、数据、控制立刻知道各自传什么、方向怎样。
第二,看到:
总线宽度
时钟频率
每周期传输次数立刻写出:
其中 是每个时钟周期有效传输次数。
第三,看到:
地址/数据复用 + 突发立刻想到:
第四,看到:
同步
异步
半同步立刻想到:
同步 → 公共时钟
异步 → 请求/回答
半同步 → 公共时钟 + Wait第五,看到:
不互锁 / 半互锁 / 全互锁立刻想到:
不互锁:谁也不等
半互锁:主等从
全互锁:双方互等第六,看到:
PCIe想到:
高速串行 + 点对点 + 多 Lane + 全双工。
看到:
USB想到:
串行 + 即插即用 + 热插拔。
如果这些全部能做到,本章绝大部分 408 选择题和计算题就已经覆盖了。
本章最值得你反复做题的其实只有两个核心计算模型:总线带宽计算和突发/非突发事务时间计算。 其他内容的关键不是死背,而是把“谁发、发什么、一次发多少、什么时候发”这四个问题想清楚。