总线与接口:设备之间怎么说话
开机剧本里,固件读磁盘、内核读内存、数据进显卡——它们凭什么能互相通信?这篇补上硬件线最后一块拼图:总线。看完再看主板,就不再是"一块绿板子",而是一张城市规划图。
一、为什么需要总线
五大部件各自为政,如果想任意两个部件都直连:n 个部件要 n(n-1)/2 组线路,5 个部件就要 10 组,越加越乱——纯 n² 灾难。
工程师的解法和城市一样:修公共道路。所有部件挂到同一条"总线"(Bus)上,分时段使用。
一条总线其实包含三类线,各传各的信息:
| 总线 | 传什么 | 类比 |
|---|---|---|
| 数据总线 DB | 实际的数据 | 货车道 |
| 地址总线 AB | 去哪读写(地址编号) | 门牌号 |
| 控制总线 CB | 命令与时序(读/写/中断应答) | 交警手势 |
💡 地址总线的位宽 = 寻址能力:32 位地址总线 → 2³² 个地址 × 1B = 4GB——"32 位系统最多认 4G 内存"的出处就在这。64 位理论上是天文数字,实际机器用不满,只用 48 位左右。
二、带宽账本:怎么换算一条总线快不快
一个公式走天下:
带宽(B/s)≈ 频率 × 位宽 ÷ 8
例:PCIe 3.0 单通道 8 GT/s ≈ 每通道 1GB/s,×4 通道(NVMe 固态常用)≈ 3.9GB/s 理论值。
学会这个,广告里的数字就都能自己换算——注意 Gbps ÷ 8 才是 GB/s,商家最爱在大小 b 上玩魔术。
三、从南北桥到单芯片:主板上的权力更替
老主板上坐着两颗"交通枢纽"芯片:
CPU ── 北桥(离CPU近,管高速)── 内存
│ └── 显卡(PCIe)
└─ 南桥(管低速)── USB / SATA / 网卡 / 声卡 / 键盘鼠标
- 北桥:高速通道总管——CPU↔内存、CPU↔显卡
- 南桥:低速外设总管——USB、硬盘、网卡、声卡
随后 20 年的演化史,就是高速需求不断吃掉低速枢纽:
- 内存控制器搬进 CPU(AMD 2003 年 K8 率先干,Intel 2008 跟进)→ 内存不再绕道北桥,延迟直降——这也是后来"内存频率"越来越重要的原因
- 显卡通道 PCIe 直连 CPU → 北桥彻底失业
- 只剩一颗 PCH(南桥继任者)管外设 → 今天的主板
四、2026 年接口带宽对照表
| 接口 | 理论带宽 | 常见用途 |
|---|---|---|
| USB 2.0 | 480 Mbps(≈60MB/s) | 键鼠、低速外设 |
| USB 3.2 Gen1 / Gen2 | 5 / 10 Gbps | U 盘、移动硬盘 |
| USB4 / 雷雳 3·4 | 40 Gbps | 扩展坞、外接显卡、高分屏 |
| SATA III | 6 Gbps(实测 ~550MB/s) | 2.5 寸机械/固态 |
| PCIe 3.0 ×4 | ≈3.9 GB/s | NVMe 固态(主流) |
| PCIe 4.0 ×4 | ≈7.9 GB/s | NVMe 固态(新一代) |
| PCIe 5.0 ×4 | ≈15.8 GB/s | 旗舰固态 / AI 加速卡 |
| 千兆 / 2.5G 网口 | 1 / 2.5 Gbps | 有线网络 |
一眼看懂两个经典问题:
- 为什么 SSD 要走 NVMe(PCIe),不走 SATA?——SATA 6Gbps ≈ 550MB/s 的天花板焊死了;PCIe 3.0 ×4 实测就有 3.5GB/s。SATA 固态再快,前面也堵着一扇窄门。
- 为什么显卡都是 PCIe ×16 大槽?——每帧几十亿像素的数据,带宽就是命。
五、设备怎么引起 CPU 注意:中断与 DMA
路修通了,还有两个配套机制(操作系统 区会正式重逢,先混个脸熟):
- 中断(IRQ):设备主动"举手"。键盘按下时 CPU 不必死等——设备发中断信号,CPU 做完手头指令再来处理。没有中断,CPU 只能轮询干等,纯属浪费。
- DMA(直接存储器访问):大数据搬运不劳烦 CPU。磁盘→内存的大块拷贝由 DMA 控制器接管,CPU 该干嘛干嘛,搬完用中断通知。包工头只派活,不亲自搬砖。
六、盲点自测
- 为什么用总线而不是两两直连? ——n 个部件两两直连要 n(n-1)/2 组线路;总线一条公共路分时复用,可扩展。
- 三类总线各传什么? ——数据总线传数据、地址总线传位置、控制总线传命令与时序。
- 32 位系统为什么最多 4GB 内存? ——地址总线 32 位,2³² 个地址 × 1 字节 = 4GB。
- 北桥去哪了? ——内存控制器进了 CPU、显卡直连 CPU,职能被吸收殆尽,只剩 PCH 管外设。
- NVMe 比 SATA 快的根本原因? ——走的路不同:SATA 天花板 6Gbps,NVMe 走 PCIe 多通道并行。
- 中断和轮询差在哪? ——中断:设备举手、CPU 被动响应,省去空等;轮询:CPU 反复主动问,浪费算力。
- DMA 是干嘛的? ——绕过 CPU 直接在设备和内存间搬数据,搬完中断通知,解放 CPU。
七、动手玩一把
# macOS:看 USB 设备树、NVMe 盘参数
system_profiler SPUSBDataType | head -30
system_profiler SPNVMeDataType
# Linux:一条命令列出主板上挂的所有设备
lspci # 全家福:显卡/网卡/声卡/USB 控制器……
lspci | grep -i vga # 只找显卡
总线的路修好了,路上还跑着一个特殊的"外挂处理器"——GPU → 04-显卡与GPU
💬 评论