总线与接口:设备之间怎么说话

开机剧本里,固件读磁盘、内核读内存、数据进显卡——它们凭什么能互相通信?这篇补上硬件线最后一块拼图:总线。看完再看主板,就不再是"一块绿板子",而是一张城市规划图。

一、为什么需要总线

五大部件各自为政,如果想任意两个部件都直连: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 年的演化史,就是高速需求不断吃掉低速枢纽

  1. 内存控制器搬进 CPU(AMD 2003 年 K8 率先干,Intel 2008 跟进)→ 内存不再绕道北桥,延迟直降——这也是后来"内存频率"越来越重要的原因
  2. 显卡通道 PCIe 直连 CPU → 北桥彻底失业
  3. 只剩一颗 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 该干嘛干嘛,搬完用中断通知。包工头只派活,不亲自搬砖。

六、盲点自测

  1. 为什么用总线而不是两两直连? ——n 个部件两两直连要 n(n-1)/2 组线路;总线一条公共路分时复用,可扩展。
  2. 三类总线各传什么? ——数据总线传数据、地址总线传位置、控制总线传命令与时序。
  3. 32 位系统为什么最多 4GB 内存? ——地址总线 32 位,2³² 个地址 × 1 字节 = 4GB。
  4. 北桥去哪了? ——内存控制器进了 CPU、显卡直连 CPU,职能被吸收殆尽,只剩 PCH 管外设。
  5. NVMe 比 SATA 快的根本原因? ——走的路不同:SATA 天花板 6Gbps,NVMe 走 PCIe 多通道并行。
  6. 中断和轮询差在哪? ——中断:设备举手、CPU 被动响应,省去空等;轮询:CPU 反复主动问,浪费算力。
  7. DMA 是干嘛的? ——绕过 CPU 直接在设备和内存间搬数据,搬完中断通知,解放 CPU。

七、动手玩一把

# macOS:看 USB 设备树、NVMe 盘参数
system_profiler SPUSBDataType | head -30
system_profiler SPNVMeDataType

# Linux:一条命令列出主板上挂的所有设备
lspci                    # 全家福:显卡/网卡/声卡/USB 控制器……
lspci | grep -i vga      # 只找显卡

总线的路修好了,路上还跑着一个特殊的"外挂处理器"——GPU → 04-显卡与GPU

⬅️ 从按下电源到桌面 🏠 00-基础与理论 ➡️ 显卡与GPU