计算机总线
复习
- 第二十六章:了解了寄存器
- 第三十章:了解了存储器如何按地址存取
- 第三十八章:了解了 CPU 的组成与数据通路
TL;DR
- 总线是各部件共享的“公共通道“,用来传地址、数据和控制信号
- 按功能分为地址总线、数据总线、控制总线
- 多个设备争用时,需要总线仲裁来决定谁先用
- 总线的宽度和频率决定了它的带宽
正文
为什么要“公共通道“
到这时,CPU、存储器、各种外设都已经能独立工作了。可它们之间怎么通信?
最笨的办法是两两之间拉专线。但设备一多,线的数量会以平方级增长,主板根本排不下。于是工程师们又用上了“加一层“的老套路:大家共用一组线,谁来用、什么时候用,事先约好规则。
这组共享的线,就叫总线(Bus)。
+-------+ +-----------+
| CPU |<------->| 系统总线 |
+-------+ +-----------+
|
+--------------+--------------+
| |
+-------+-------+ +-------+-------+
| 内存 | | I/O 设备 |
+---------------+ +---------------+
三种总线
总线上的信号其实分三类,各走各的线:
- 地址总线:负责“找谁“,传送地址
- 数据总线:负责“送什么“,传送数据
- 控制总线:负责“干什么“,传送读/写等控制信号
一次典型的读操作是这样:CPU 先把地址放上地址总线,再通过控制总线发出“读“信号,目标设备响应后,把数据放上数据总线送回来。
总线仲裁
既然大家共用一条通道,就难免抢。比如 CPU 想读内存,网卡同时想写内存,谁先来?
这就需要总线仲裁:由一个仲裁器(集中式)或者设备之间协商(分布式)来决定当前谁获得总线的使用权。常见的策略有固定优先级、轮询等——固定优先级响应快但不公平,轮询公平但可能慢一点。
总线标准与性能
为了不同厂商的设备能插在一起用,总线必须标准化。你熟悉的名字大多都是总线标准:USB、SATA、PCIe……它们是外设和主板之间的“通用接口“。
衡量总线快慢的核心指标是带宽:
带宽 = 总线宽度 × 工作频率
比如 32 位宽、100 MHz 的总线,带宽就是 32 × 100M = 3.2 Gb/s。想让总线更快,要么加宽(一次多传几位),要么提频,要么用“突发传输“——一次给地址,连续搬运一批数据,省去反复寻址的开销。
思考题
地址总线、数据总线、控制总线,为什么要把它们分开,而不是合并成一组线?
小结
知识点
- 总线的作用与共享思想
- 地址总线、数据总线、控制总线
- 总线仲裁
- 总线带宽
参考资料
- Wikipedia(zh):计算机总线:总线的基本概念
- Wikipedia(zh):PCI Express:PCIe 总线标准
- Wikipedia(zh):系统总线:系统总线架构
思考题答案(仅供参考)
三类信号的用途和方向都不同:地址总线和控制信号通常是单向的(由 CPU 发出),数据总线是双向的(可能要读也要写)。如果合并成一组,就得频繁切换用途、还要额外字段区分“这一拍传的是什么“,反而更慢更乱。分成三组,各司其职,既清晰又高效。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪