06 总线

📚 本文是 计算机组成原理 的第 6 篇,相关系列见 基础与理论

CPU、主存、外设都各干各的,总线是把它们连起来共用的"高速公路"。感性的带宽对比和接口大全在 总线与接口 讲过,本篇讲计组考点:三类仲裁(谁先上路)、定时方式(什么节奏走)、带宽算术(一秒运多少货)。

一、总线三分类

类型 连接对象 传输内容
数据总线 DB 各部件 数据(双向)
地址总线 AB CPU → 主存/外设 地址(单向
控制总线 CB 各部件 命令/时序/中断/应答(混合方向)
  • 片内总线:芯片内部(寄存器之间)
  • 系统总线:CPU/主存/IO 各大部件之间(计算机系统级)
  • 通信总线:计算机之间(如 USB/网络)

⚠️ 地址总线单向、数据总线双向——判断题常客。地址线 n 根 → 寻址空间 2ⁿ 单元。

性能算术

\[\text{总线带宽} = \text{工作频率} \times \text{位宽} / 8\]

💡 例:32 位(4B)数据总线、100MHz、每周期传一次 → 带宽 = 4B × 100M = 400 MB/s;若 DDR(上下沿都传)翻倍到 800 MB/s。

二、总线仲裁:多个主人抢一条路

总线上多个主设备(CPU、DMA 控制器都能发起传输)要抢总线——仲裁分集中式(有个中央裁判)和分布式(大家自商量)。

集中式三方式(408 必考)

方式 原理 优先级 优点 缺点
链式查询 总线同意信号 BG 串着往后传,谁先拿到谁用 离控制器越近越固定地高;后面的可能饿死 只用 3 根线(BR/BG/BS),线少省 优先级死板、对故障敏感(断一个全瘫)
计数器查询 控制器计数器往设备号线上发号,报号者认领 可从上次终止点继续(循环优先级) 灵活,优先级可调 要 log₂n 根设备号线 + 控制逻辑
独立请求 每个设备单独一对 BR/BG 线直连控制器 控制器可编程任意调度 最快最灵活 线最多(2n 根),成本最高

💡 记忆锚点:链式=一串糖葫芦(省线但死板),计数器=点名报到(中等),独立=专线电话(豪横)

分布式仲裁

无中央控制器,各设备自己比较仲裁号——号小的赢(获胜者把仲裁号留在总线上,别人比对后自动退让)。如 CAN 总线、SCSI。

三、总线定时:什么节奏交换数据

1. 同步定时

统一时钟信号,双方按节拍行动。

  • 优点:规约简单、速度快(不用等待应答)
  • 缺点:必须迁就最慢的设备;时钟漂移在高频下致命
  • 适用:总线短、速度接近的部件(CPU—主存)

2. 异步定时

无统一时钟,靠握手(应答):主方发请求,从方回应答。

方式 握手规则 特点
不互锁 请求/应答各发各的,不等待确认 最快,但不可靠(可能撞车/丢失)
半互锁 主方等应答才撤销请求;从方不等主方 折中
全互锁 请求↔应答完全互相确认,双方都等对方动作 最可靠,最慢

💡 记忆:互锁 = 谁锁谁。全互锁像"你说'我到了',我说'收到',你才把请求撤掉,我确认后才算完"——每一步都确认。

3. 半同步(了解)

同步里加一条 WAIT 应答线:跟不上就拉 WAIT 插入等待周期——同步的骨架、异步的妥协(x86 总线的 READY 信号)。

四、总线的数据传输:一次事务的分解

一次总线事务(Bus Transaction)四阶段:

  1. 申请分配:仲裁(上一节)
  2. 寻址:主方发地址 + 命令(读/写)
  3. 传输:数据一个节拍一个节拍地上
  4. 结束:撤信号、释放总线

⚠️ 突发传输(Burst):给首地址后连续传多个字,地址自动 +1——DDR、PCIe 全靠它吃满带宽,和 03-存储系统 的"低位交叉 + 局部性"是一套组合拳。

五、盲点自测

  1. 地址总线方向?n 根地址线寻址多少?(单向;2ⁿ 个单元)
  2. 链式查询为什么可能饿死?优点是什么?(BG 串行传递固定优先级,后面的设备可能永远抢不到;只用 3 根线)
  3. 独立请求方式最贵在哪?(每设备 2 根专用线,2n 根)
  4. 同步总线为什么必须迁就最慢设备?(统一节拍,快设备只能等)
  5. 全互锁为什么最可靠?代价?(双向确认,无动作丢失;每次传输都要多次往返,慢)
  6. 64 位总线 200MHz 每周期传一次,带宽多少?(8B × 200M = 1600 MB/s)

六、动手玩

# 看一眼你这台机器的"总线树"
system_profiler SPHardwareDataType SPPCIDataType   # macOS:PCI 设备挂在哪
lspci -tv                                           # Linux:树状总线拓扑

你会看到 PCIe 树状结构——根复杂、分支挂 GPU/NVMe/网卡,正是"总线分层"的现实版。

参考资料

  • 王道《计算机组成原理考研复习指导》第 6 章
  • 《Code: The Hidden Language》第 17 章起——总线与中断的极简讲法
  • 03-总线与接口——真实世界的接口带宽表(USB4/雷雳/PCIe 5.0)
  • 07-输入输出系统——下一站:IO 设备怎么通过总线跟 CPU 说话

⬅️ CPU 🏠 00-基础与理论 ➡️ 输入输出系统