计算机组成原理第 6 章:总线
408 计算机组成原理「总线」复习:核心知识点、真题题型、通用解法与易错点。
Last updated on
本章结合本站 408 真题「第 6 章 总线和输入输出系统」中的总线部分,以及 408 模拟题「第 6 章 总线」 进行系统整理。
章节划分说明:本站真题把“总线 + I/O”合在第 6 章,但模拟题按照常见教材体系拆成 第 6 章总线、第 7 章输入/输出系统。所以这里重点讲 总线;I/O 接口、中断、DMA 等下一章再讲。本站的总线真题从 2009~2024 已经覆盖了总线带宽、突发传送、同步/异步定时、串并行、PCIe/USB、多总线结构、地址/数据线复用等核心题型。(docs.any1.tech)
一、第 6 章到底在考什么?
总线这一章知识量并不算特别大,但属于 “公式很少、陷阱很多” 的章节。
从站内收录的历年题来看,最重要的可以压缩为 6 大题型:
| 题型 | 重要程度 | 典型真题 |
|---|---|---|
| 总线带宽/传输率计算 | ★★★★★ | 2009、2014、2019、2020、2024 |
| 总线事务、突发传送、读块时间 | ★★★★★ | 2012、2014、2023、2024 |
| 时钟周期/总线周期/工作频率辨析 | ★★★★★ | 2009、2020、2021、2024 |
| 同步、异步、半同步定时 | ★★★★☆ | 2015、2021 |
| 总线结构、串行/并行、复用 | ★★★★☆ | 2016、2017、2018 |
| 地址/数据/控制信号判断 | ★★★☆☆ | 2011、2012 |
这章最大的核心,其实就一句话:
搞清楚一次数据到底传多少、多久传一次、一次事务里哪些时间真正传数据。
二、先建立整个“总线”的知识框架
1. 什么是总线?
总线就是若干部件之间进行信息传输的一组公共通信线路。
例如:
CPU ↔ 主存
CPU ↔ I/O 接口
DMA 控制器 ↔ 主存
都可能通过某种总线完成信息交换。
注意“公共”的含义。
传统共享总线中:
同一个时刻通常只能有一个主设备控制总线。
否则多个设备同时往数据线上输出不同电平,就产生总线冲突。
三、必须首先分清三种线
这是最基础、但非常容易出选择题的部分。
1. 地址总线
作用:
向从设备指明“要访问的目标”。
例如 CPU 要读取主存地址 0x1000:
CPU 把 0x1000 放到地址线上。
通常:
所以地址信息一般是 单向的。
2. 数据总线
作用:
真正传输指令、操作数、状态字、中断类型号等二进制信息。
读操作:
写操作:
所以数据总线逻辑上通常是:
3. 控制总线
这里最容易被骗。
不能简单记:
“控制总线是单向的”或者“控制总线是双向的”。
正确理解是:
控制总线是一组控制信号线,而不同控制线方向不同。
CPU → 外部:
- 读
- 写
- 总线请求响应
- 启动
外部 → CPU:
- 中断请求
- 就绪
- 应答
- 状态信息
所以:
整个控制总线中既有输入信号,又有输出信号。
四、典型题型一:地址、数据、控制信息到底走哪根线?
真题:2011 年
题目
题目问:
系统总线的数据线上,不可能传输下面哪一种信息?
给出的信息包括:
- 指令
- 操作数
- 握手/应答信号
- 中断类型号
正确答案:
因为指令、操作数、中断类型号本质都是“数据”;握手应答属于通信控制信号。(Any Docs)
这题真正想考什么?
不要被“中断类型号”几个字骗了。
很多人看到:
中断
就觉得应该走控制总线。
错。
应该问:
它本身是“控制动作”,还是一串有意义的二进制数?
“产生中断请求”:
→ 控制信号。
“中断类型号 3”:
→ 一个数值。
所以中断类型号通过数据总线传输。
五、模拟题中的进一步变化:哪些信息是单向的?
本站王道模拟卷有一道:
题目
总线上:
I. 地址 II. 数据 III. 控制 IV. 状态
哪些信息通常为单向传输?
答案:
即地址、具体控制信号和状态信号各自有明确的发送方向,而数据可能读也可能写。(Any Docs)
这里特别注意:
“控制信息单向”和“控制总线整体单向”完全不是一回事。
单根控制信号一般有固定方向。
但是:
六、总线周期、时钟周期、总线事务——必须完全分清
这是整章最重要的概念之一。
1. 时钟周期
假设总线时钟频率:
那么时钟周期:
例如:
则:
2. 总线周期
一个总线周期可能包含若干个时钟周期。
例如:
1 个总线周期 = 2 个时钟周期。
若时钟频率为:
则每秒时钟周期数量:
每两个时钟周期才能完成一次总线周期:
3. 总线事务
一个完整的读/写操作称为一次总线事务。
例如一次主存读可能经历:
所以不要认为:
有时候一个事务可以传很多次数据。
例如:
突发传送。
七、题型二:最基本的总线带宽计算
这是第 6 章第一核心题型。
最基础公式:
若数据宽度是 bit:
因此最常见形式:
其中:
- :时钟频率
- :每个时钟周期数据传输次数
- :数据总线宽度
八、2009 真题:最基础“总线周期”陷阱
题目
某系统:
- 一个总线周期并行传输
- 一个总线周期占 个时钟周期
- 时钟频率
求总线带宽。
这是本站总线部分第一道真题。(Any Docs)
第一步:每秒多少个时钟周期?
第二步:一个总线周期占两个时钟周期
所以:
第三步:每个总线周期传 4B
所以:
于是:
答案 B。
九、这一类题最容易犯的错误
很多人直接算:
为什么错?
因为题目不是说:
一个时钟周期传 4B。
而是:
一个总线周期传 4B。
且:
所以必须除以 2。
十、一个极重要的万能公式
如果:
- 时钟频率
- 一个总线周期包含 个时钟周期
- 一个总线周期传输 B 有效数据
那么:
这就是 2009 题模板。
十一、题型三:一个时钟周期传多次数据——DDR 型问题
现在题目不一定:
一周期传一次。
可能说明:
- 上升沿一次
- 下降沿一次
那么:
十二、2014 真题:双沿传输
题目
某同步总线:
- 地址/数据复用
- 共 根地址/数据线
- 总线时钟
- 每个周期上升沿、下降沿各传一次数据
求最大数据传输率。(Any Docs)
每次传多少?
每秒传几次?
因为一个周期两次:
所以:
得到:
十三、“地址/数据线复用”为什么这里没有减速度?
这是非常重要的理解。
题目问:
最大数据传输率 / 总线带宽
是在问数据传输阶段总线理论最高吞吐能力。
因此:
如果换成问:
完成一个完整总线事务实际需要多久?
那么地址阶段就必须算进去。
这两个概念后面 2024 真题专门设计了一个大坑。
十四、总线时钟频率 ≠ 数据传输频率
这个结论必须背下来。
例如:
如果每个周期传 2 次:
因此:
2021 真题就直接考过这个认识。(Any Docs)
十五、题型四:多通道存储器总线
2019 真题
题目
某计算机:
- 3 通道内存
- DDR3-1333
- 每通道 64 bit
求总带宽。(Any Docs)
一个通道宽:
题目已按 的有效工作频率给出,所以一个通道:
约:
3 通道:
所以:
十六、多通道问题万能公式
如果:
- 个独立通道
- 每个通道总线宽度
- 数据传输率
则:
所以看到:
双通道、三通道、四通道
记得最后乘:
十七、题型五:有效数据与校验位
这是一个明显的高阶变化。
总线上传的所有位:
不一定全部是有效用户数据。
例如:
如果题目求:
有效数据带宽
就只能按:
计算。
十八、2020 真题:QPI 全双工带宽
题目
QPI 是点对点全双工同步串行总线。
每个方向一次传:
- 20 位信息
- 其中 16 位数据
- 4 位校验
每时钟周期传 2 次。
时钟频率:
问总线有效带宽。(Any Docs)
第一步:有效数据
一次有效数据:
不要使用 20 bit。
因为 4 bit 是校验开销。
第二步:一个周期两次
单方向:
所以:
第三步:全双工
全双工意味着:
和:
可以同时工作。
因此如果题目把双向总带宽加起来:
得到:
十九、半双工与全双工
必须区分:
单工
只有一个方向:
半双工
两个方向都可以,但不能同时:
某一时刻只能一个方向。
全双工
两个方向同时:
如果题目明确要求:
双向合计吞吐量
才通常乘 。
二十、模拟题:把“校验位 + 总线周期 + 全双工”全揉在一起
本站“竟成模拟五”有一道很值得练。
题目
A、B 使用全双工同步串行总线:
- 每方向每个总线周期传 24 位
- 其中 16 位有效数据
- 8 位校验
- 时钟频率
- 1 个总线周期 = 2 个时钟周期
求有效总带宽。(Any Docs)
每秒总线周期:
单方向每周期有效:
全双工两方向:
所以:
得到:
这道题几乎把带宽题所有陷阱都放进去了:
时钟周期、总线周期、有效数据、校验位、全双工。
二十一、带宽题的终极解题框架
以后拿到任何总线带宽题,先不要套公式。
先在草稿纸写:
第 1 问:每次传多少“有效数据”?
注意:
- 总线宽度
- 校验位
- 编码开销
第 2 问:每秒到底传几次?
可能是:
也可能:
还可能:
第 3 问:几个通道?
如果有 通道:
第 4 问:是否需要算双向?
如果明确:
全双工总吞吐量
可能:
最终:
其中 根据是否统计双向取 1 或 2。
二十二、题型六:突发传输 Burst
这是本章第二核心。
普通传输
假设读连续四个数据:
每一个都需要:
于是:
地址阶段重复了四次。
二十三、突发传送
只发第一次首地址:
后面的地址隐含递增:
因此:
最大优势:
减少地址传输开销。
因此平均有效吞吐量提高。
二十四、2014 真题:什么叫突发传输?
题目
一次事务中:
主设备只给出一个首地址,从设备便从连续地址中读/写多个数据。
这种方式叫什么?
答案:
(Any Docs)
这个定义基本可以直接背。
二十五、2012 真题:突发事务时间计算
这是非常经典的一道。
题目
某同步总线:
- 时钟
- 总线宽 bit
- 地址/数据线复用
- 地址或数据各占 1 个时钟周期
- 支持突发传送
- 一次写入 bit 数据
问至少需要多少时间。(Any Docs)
第一步:时钟周期
第二步:多少次数据传送?
总共:
总线一次:
所以:
第三步:突发模式
只需要一个地址阶段:
然后连续四个数据阶段:
共:
个时钟周期。
所以:
二十六、普通传输和突发传输公式对比
假设:
- 个数据
- 地址阶段 周期
- 单数据阶段 周期
普通事务:
突发:
如果 很大,突发的优势非常明显。
二十七、题型七:不支持突发时,读取一个 Cache 块
2023 真题非常重要,因为它开始把:
总线 + 主存 + Cache 块
组合起来了。
这是明显的综合命题趋势。
二十八、2023 真题
题目
某存储总线:
- 总线宽度 bit
- 时钟
- 传一个地址或一个数据需要 1 个时钟周期
- 不支持突发
- 主存准备一个 64 位数据需要
- 主存块大小
问读取一个块需要多久。(Any Docs)
第一步:总线周期
第二步:一个总线数据宽度
整个块:
需要:
次。
第三步:因为“不支持突发”
每一个 8B 都必须重新完成:
于是一次:
共 4 次:
答案 D。
二十九、这一题真正难在哪里?
最容易犯的错误是写:
为什么不对?
这实际上偷偷假设了:
地址只传一次。
也就是偷偷使用了“突发传送”。
可是题目明确说:
所以每个数据都要自己的地址。
三十、一个可能的预测变式
如果把 2023 题改成:
支持突发传输,只需要传一个首地址。
那么思路就变成:
具体总时间要根据题目说明主存能否流水地产生后续数据。
如果假设首数据准备需 ,之后数据可逐周期输出,就可能形成:
这也是为什么真题中特别强调:
是否支持突发。
它直接决定地址阶段是否重复。
三十一、2024 真题:本章最值得理解的一道
2024 把:
- 时钟频率
- DDR
- 突发
- 事务时序
- 总线带宽
全部揉在一起。
题目
某存储器总线:
- 时钟
- 宽度 bit
- 每周期传 2 次数据
- 一次突发最多传 8 次
- 第 1 周期发地址和命令
- 第 4~7 周期连续传 8 次数据
问:
总线带宽(最大数据传输率)。
(Any Docs)
三十二、这里出现两个看起来都合理的答案
理论峰值
总线一次传:
一个周期两次:
所以:
得到:
这才是题目要求的“总线带宽”。
三十三、为什么还会出现 3.84 GB/s?
如果将完整事务也算进去:
一次突发传:
整个事务从周期 1 到周期 7:
因此平均有效数据率:
得到:
即:
而这正是干扰项。
三十四、所以本章最重要的一组区别来了
总线带宽 / 最大数据传输率
看数据总线“忙着传数据时”最高速度:
实际有效数据传输率
需要把:
- 地址
- 命令
- 等待
- 仲裁
- 存储器延迟
全部算进去。
于是一般:
三十五、以后看到题目先圈两个字
如果题目说:
最大带宽、最大数据传输率、峰值
优先想到:
如果题目说:
完成一次读操作需要多久、平均传输率、有效传输率
则:
2024 真题就是专门考这个区别。(Any Docs)
三十六、题型八:地址/数据线复用
什么叫地址/数据线复用?
正常情况有:
专门传地址。
另有:
专门传数据。
复用以后:
同一组物理线先传:
再传:
三十七、复用的核心目的是什么?
不是提高性能。
而是:
所以:
优点
- 引脚少
- 布线简单
- 成本下降
代价
地址与数据不能同时占用线路:
甚至可能增加事务时间。
三十八、2018 真题
题目
哪些方法可以提高同步总线的数据传输率?
I. 增加总线宽度 II. 提高工作频率 III. 使用突发传输 IV. 地址/数据线复用
正确:
地址/数据线复用主要是节省线路,不是为了提高传输率。(Any Docs)
三十九、这道题其实总结了总线提速的三大方法
方法一:加宽
从:
变:
理论带宽翻倍。
方法二:提高传输频率
从:
到:
带宽翻倍。
方法三:降低无效开销
例如:
- Burst
- 分离事务
- 流水事务
这类方法主要提高:
四十、分离事务也是重点
普通事务:
CPU 发出主存读请求以后:
总线可能一直被这个事务占着等主存。
如果主存响应很慢,公共总线白白等待。
分离事务
把一次事务拆成:
CPU 发出请求以后:
释放总线。
主存在准备数据期间:
总线可以给其他设备使用。
等数据准备好:
主存再申请总线发送响应。
因此:
2016 真题明确把“分离事务通信可以提高总线利用率”作为正确表述。(Any Docs)
四十一、题型九:同步、异步、半同步
这一类一般不计算,考概念。
四十二、同步总线
所有设备按照共同的时钟工作:
例如:
第 1 拍:
第 2 拍:
第 3 拍:
优点
控制简单。
速度快。
缺点
所有设备必须能满足固定时序。
假设:
CPU 很快;
打印机很慢。
如果都被强迫按固定节拍运行,就不合适。
四十三、异步总线
没有统一固定时间表。
双方用:
握手。
大体过程:
- 主设备:表示“已有数据可传输”。
- 从设备:表示“已经准备好接收”。
- 完成传输。
- 双方撤销信号。
因此:
四十四、模拟题:什么最适合异步方式?
本站王道卷二有一道:
题目
下面哪种情况最应该异步传输?
- I/O 接口与打印机
- CPU 与主存
- CPU 与 PCI 总线
- 已有统一时序信号的设备
答案:
因为打印机速度慢,而且响应时间具有较大不确定性。(Any Docs)
四十五、异步通信三种互锁方式
常见教材会讲:
非互锁
依赖对方最少。
速度快。
但是:
半互锁
部分信号变化需要等对方。
属于折中。
全互锁
双方信号变化都严格等待另一方确认。
因此:
四十六、2015 真题
真题问总线定时的错误描述,其中涉及:
- 异步全互锁最慢
- 非互锁可靠性最差
- 同步总线时钟来源
- 半同步通信
错误的是:
同步时钟可以由各设备独立提供。
同步通信恰恰要求统一的时序基准。(Any Docs)
四十七、半同步总线
半同步可以理解为:
同步总线基础 + 等待机制。
仍有共同的:
但是如果从设备来不及:
可以发 WAIT 等信号,要求插入等待周期。
于是兼顾:
- 同步控制简单
- 允许不同速度设备
题目中经常用类似:
“握手/等待信号在同步时钟边沿被采样”
来描述。
四十八、题型十:串行一定比并行慢吗?
绝对不是。
这是非常典型的选择题陷阱。
四十九、传统直觉
并行:
一次:
串行:
一次:
看起来当然是并行快。
低频、短距离下这个直觉有一定道理。
五十、但是频率越来越高以后
并行线路会遇到:
时钟偏斜
不同导线长度不同。
原本同时发送:
结果到达时间不完全相同。
串扰
多根高速信号线互相干扰。
布线困难
64 根、128 根数据线很难做到完全一致。
而高速串行总线可以:
- 差分传输
- 更高频率
- 更少信号线
- 多 Lane 聚合
因此:
五十一、2016 真题
题目问哪个总线设计观点错误。
错误项:
“并行总线传输一定比串行总线快。”
这个“绝对化”就是错误所在。(Any Docs)
以后看到:
- 一定
- 必然
- 任何情况下
要非常警觉。
五十二、PCIe ×16 是并行总线吗?
不是。
2017 真题就考过。
PCIe:
PCIe ×16:
不是:
而是:
每条 Lane 内部仍采用高速串行差分传输。(Any Docs)
这个点很容易因为“×16”三个字被骗。
五十三、USB、PCI、ISA、EISA 必须掌握到什么程度?
408 通常不会要求背大量协议细节。
主要认身份。
ISA / EISA
传统内部总线标准。
PCI
计算机内部扩展总线。
PCI Express
高速点对点串行互连。
USB
Universal Serial Bus:
支持:
- 即插即用
- 热插拔
- 集线器级联
五十四、网站几道真题的连续命题
2010:
判断哪些缩写都属于总线标准。
正确的一组包括:
ISA、EISA、PCI、PCI Express。(Any Docs)
2012:
USB 是否“同时传输多位,因此速度高”。
错误。
USB 本质:
2013:
哪个标准主要用于设备与设备控制器之间的互连?
答案:
(Any Docs)
五十五、多总线结构
为什么不把所有东西都接到一条总线上?
假设:
CPU、GPU、主存、硬盘、键盘、鼠标、网卡
全部共享同一条总线。
问题:
高速设备被低速设备拖累,而且总线竞争严重。
于是现代系统通常分层。
五十六、基本思想
靠近 CPU:
越靠近低速外设:
不同总线之间:
五十七、2017 真题的知识链
题目考多总线结构,其中:
- 靠 CPU 的总线一般更快
- 存储器总线可以突发传送
- 不同层次总线可以通过桥连接
- PCIe ×16 并非传统 16 位并行
错误项就是最后一个。(Any Docs)
五十八、2021 真题:非常值得做成判断题合集
题目实际上一次考了四个观点:(Any Docs)
判断 1
总线用于两个或多个部件间进行信息交换。
对。
判断 2
同步总线时钟频率一定等于数据传输频率。
错。
例如 DDR:
判断 3
异步总线一次握手只能传 1 bit。
错。
一次握手完全可以传:
甚至:
即一个总线宽度的数据。
判断 4
Burst 可以连续传多个数据。
对。
所以该题答案最终选“异步握手一次只能传一位”这一错误表述。
五十九、总线宽度到底是什么?
一般指:
例如:
说明一次数据传输可传:
但是要注意:
总线宽度不是总线总共多少根线。
因为整个总线还有:
- 地址线
- 控制线
- 时钟线
- 状态线
六十、总线频率三个名字一定别混
这种概念题越来越喜欢考。
时钟频率
例如:
数据传输率
例如每周期两次:
所以:
总线带宽
还要乘一次的数据量:
例如:
所以:
关系图:
六十一、“MHz”和“MT/s”不要混
MHz:
MT/s:
例如 DDR:
理论可达到:
这个思想比死背具体 DDR 型号重要得多。
六十二、理论带宽、有效带宽、利用率
设:
总事务时间:
真正传数据的时间:
那么总线利用率可以抽象成:
于是:
例如 2024 真题:
数据阶段占:
整个事务:
于是:
因此:
恰好:
这样看就特别清楚了。
六十三、这章可能出现的仲裁问题
本站目前第 6 章真题没有把“总线仲裁算法计算”作为主要题型,但概念上建议掌握。
因为如果:
CPU
DMA
I/O 控制器
都想成为主设备,就涉及:
谁先获得总线控制权?
这就是:
总体目标是在:
- 优先级
- 公平性
- 硬件复杂度
- 响应速度
之间折中。
如果教材出现:
- 链式查询
- 计数器定时查询
- 独立请求
至少要知道其基本优缺点。
六十四、链式查询
设备串起来。
仲裁信号依次向后传播。
优点:
缺点:
六十五、独立请求
每个设备:
自己有单独请求线。
优点:
缺点:
这种优缺点选择题可以快速判断。
六十六、总线题最常见的 10 个坑
这部分建议直接记下来。
坑 1
看到 直接拿 64 乘频率。
错。
必须:
如果答案单位是 B/s。
坑 2
时钟频率就是数据传输频率。
错。
可能:
坑 3
总线周期就是时钟周期。
错。
可能:
坑 4
一次事务只能传一个数据。
错。
Burst 可以:
坑 5
地址/数据线复用能提高带宽。
通常错。
核心:
坑 6
并行一定比串行快。
错。
高速串行完全可以更快。
坑 7
PCIe ×16 就是 16 bit 并行。
错。
是:
坑 8
异步握手一次只能传 1 bit。
错。
握手管理的是:
一次数据可能是一个字。
坑 9
全双工一定乘 2。
不能机械乘。
只有题目问:
两个方向合计最大吞吐量
才应该这样处理。
坑 10
“总线带宽”和“完整事务平均数据率”是一回事。
这是 2024 最大陷阱。
必须区分:
和:
六十七、所有计算题统一成一张“公式表”
公式一:时钟周期
公式二:一个总线周期包含 个时钟周期
公式三:每周期传 次
公式四:理论最大带宽
公式五:多通道
公式六:显式计算双向合计全双工带宽
但前提必须是题目统计双向总吞吐量。
公式七:实际有效带宽
公式八:普通连续 次事务
如果每次:
- 地址
- 等待
- 数据
则:
公式九:突发传送
理想情况下:
但具体是否每个数据仍需存储器准备时间,要严格按照题目时序判断。
六十八、看到总线计算题,建议固定写这四行
以后考场上,不管题怎么包装,先写:
只要这四个问题回答对,大部分计算题就已经解决了。
六十九、从历年真题看,命题方式发生了什么变化?
从站内收录的题可以明显看出:
早期题更偏:
直接公式。
比如 2009:
后来开始叠加概念:
2014:
2019:
2020:
2023:
2024:
所以现在不能只背:
必须真正理解一次事务的时序。
(Any Docs)
七十、最值得重点练习的 7 道题
如果复习时间有限,按照这个顺序:
第一梯队:必须会
2024 总线带宽
核心:
2023 主存块读取
核心:
2020 QPI
核心:
2012 Burst 传输时间
核心:
第二梯队
2019 三通道 DDR
核心:
2015 总线定时
核心:
2016 总线设计
核心:
七十一、最后给出一套“第 6 章考场判断口诀”
目的不是死背口诀,而是帮助迅速定位。
看到:
“一个总线周期几个时钟”
先:
看到:
“上升沿下降沿各传一次”
想到:
看到:
“64 bit”
先变:
看到:
“三通道”
想到:
看到:
“全双工总吞吐量”
检查是否:
看到:
“16 位数据 + 4 位校验”
求有效速率只使用:
看到:
“Burst”
想到:
看到:
“地址/数据复用”
想到:
看到:
“PCIe ×16”
想到:
看到:
“最大总线带宽”
想到:
看到:
“一次事务总时间”
想到:
七十二、第 6 章最终知识网络
最后应在脑中形成这张图:
向下分成:
最终所有计算题统一到:
而所有时序综合题统一到:
真正难的地方不是公式,而是 判断哪些阶段重复、哪些不重复,以及题目究竟问“峰值带宽”还是“实际完成事务的效率”。这也是 2023、2024 两年真题相比早期题明显更综合的地方。
如果把这一章压缩成复习优先级,建议:总线带宽计算 > Burst 与总线事务 > 时钟频率/传输率区别 > 同步异步定时 > 串并行与 PCIe > 信号线和总线结构。这六块掌握以后,第 6 章绝大多数选择题都可以稳定解决。