总线的基本概念
总线的定义只有一句话:一组能为多个部件分时共享的公共传输线路。
这句话里有三个词是判据,而且每一个词都直接生出本章后面的一节:
- 公共——多个部件接在同一组线上,于是要问「这次是发给谁的」→ 地址线与寻址
- 分时——同一时刻只允许一个部件驱动,于是要问「这次轮到谁」→ 仲裁(6.2.1)
- 传输线路——线只是物理载体,两端还得约定含义,于是要问「什么时候算传完」→ 定时(6.2.2)
全章剩下的内容,都是「分时共享」这四个字要付的代价。 这一节先把参与者(主设备/从设备)、线(三类信号线)和约定(四大特性)这三件事定下来。
机制
分时与共享是两个独立的约束
共享说的是空间:一根线上挂着多个部件的接口。 分时说的是时间:同一时刻只能有一个部件驱动这根线。
后者是硬约束,理由在 5.3.2 已经讲过——总线上每个发送方都通过三态门接入,同一时刻若有两个三态门都处于导通状态且输出电平相反,就形成了一条从电源到地的低阻通路,这不是”数据错了”,而是电气故障。
所以「同一时刻只能有一个发送者」是不可协商的。但接收方可以有多个——一次总线传送在电气上天然是广播,只是通常只有被地址选中的那个从设备会响应。
主设备与从设备
| 定义 | 判据 | |
|---|---|---|
| 主设备(主模块) | 能发起一次总线事务并控制其全过程 | 看谁发出地址 |
| 从设备(从模块) | 只能响应主设备给出的地址和命令 | 被地址选中后才动作 |
三条容易错的地方:
- 主设备不等于 CPU。 DMA 控制器取得总线控制权后就是主设备,此时 CPU 反而是让出总线的那一方——这一点在 5.1.1 说 CPU 五项功能时已经埋过:总线控制权并不总在 CPU 手里。
- 角色是按事务定的,不是按部件定的。 同一个 I/O 接口,被 CPU 读状态寄存器时是从设备,自己发起 DMA 时是主设备。
- 主存永远是从设备。 它没有发起事务的能力,只会被动响应。这是判断”谁需要参与仲裁”的快捷方式:只有可能成为主设备的部件才需要仲裁。
三类信号线
flowchart LR CPU["CPU<br/>(主设备)"] MEM["主存<br/>(从设备)"] IO["I/O 接口"] DMA["DMA 控制器<br/>(可成为主设备)"] CPU --- BUS MEM --- BUS IO --- BUS DMA --- BUS subgraph BUS["系统总线"] direction TB AB["地址线 当前主设备 → 从设备(单向)"] DB["数据线 双向"] CB["控制线 各条方向不一"] end classDef master fill:#e8f0fe,stroke:#4285f4,stroke-width:2px classDef slave fill:#f1f3f4,stroke:#9aa0a6 classDef busline fill:#fff8e1,stroke:#f9ab00 class CPU,DMA master class MEM,IO slave class AB,DB,CB busline
地址线:由当前主设备输出,指向主存单元或 I/O 端口。
数据线:双向,传送的是”被搬运的内容”。宽度决定一次并行传送的位数,是 6.1.5 带宽公式里的
控制线:方向不统一,这是最容易错的一条。
| 控制信号 | 方向 |
|---|---|
| 读命令 / 写命令 | 主设备 → 从设备 |
| 就绪 / 应答(READY、ACK) | 从设备 → 主设备 |
| 总线请求(BR) | 设备 → 仲裁器 |
| 总线允许(BG) | 仲裁器 → 设备 |
| 时钟、复位 | 单点 → 全体 |
所以「地址线单向、数据线双向、控制线双向」这个说法只对了前两句:控制总线整体既不能说单向也不能说双向,只能逐条看。
边界辨析:数据线上的「命令字」与控制线上的「写使能」
往 I/O 接口的命令寄存器里写一个控制字,这个字走数据线——它是被搬运的内容。 而这次写操作本身的”写”信号走控制线——它是动作。
判据与 5.1.2 的「数据线 / 控制线二分」完全一样:控制线上跑的是开合命令(通常 1 位),数据线上跑的是内容(成组的位)。区别只在作用域——5.1.2 讲的是 CPU 芯片内部,这里讲的是芯片之间。
片内总线与系统总线的争用,解法不同
同一个”分时共享”问题,在两个作用域里用了两套完全不同的解法:
| CPU 内部总线 | 系统总线 | |
|---|---|---|
| 争用者 | CPU 内的各个寄存器 | CPU、DMA 控制器等多个主设备 |
| 谁来决定顺序 | 控制器直接排拍(5.3.3 三条规则) | 仲裁器(6.2.1) |
| 顺序何时确定 | 设计时就定死,写在微程序或硬布线逻辑里 | 运行时动态决定 |
根本差别是「争用者是不是事先已知」。 CPU 内部的寄存器就那么几个,什么时候谁上总线在设计阶段就排好了,不需要任何运行时机制;系统总线上挂几个设备、谁什么时候要用,编译期无法知道,只能运行时裁决。
总线的四大特性
一个总线标准必须规定四类内容,缺一条就无法互换:
| 特性 | 规定什么 | 违反的后果 |
|---|---|---|
| 机械特性 | 接插件形状、尺寸、引脚数量与排列 | 插不进去 |
| 电气特性 | 电平、驱动能力、阻抗、信号传输速率 | 烧芯片 |
| 功能特性 | 每根线传什么信息 | 含义对不上,乱套 |
| 时间特性 | 信号何时有效、按什么顺序出现、保持多久 | 采样到垃圾 |
疑问点:机械特性、电气特性、功能特性、时间特性——「我去,这不也是计网的」
四条定义你自己全部写对了,而且这个联想成立:就是同一套东西。
组成原理(总线) 计算机网络(物理层) 机械特性 机械特性 电气特性 电气特性 功能特性 功能特性 时间特性 规程特性(过程特性) 只有第四条名字不同,内容是一样的——都是”信号按什么顺序出现、什么时候有效、保持多久”。计网那一侧见 物理层接口的四类特性。
更值得记住的是这四条为什么恰好是四条。 它们不是”总线的四个方面”这种分类学罗列,而是**「两家厂商各做一半,要能插在一起,必须事先约定哪些事」的完整清单**——形状、电平、含义、时序,少任何一条都无法互换。
所以 6.1.4 遇到任何一个总线标准(PCIe、USB、SATA),都可以拿这四条去套;套不满的地方,就是那个标准交给上层去管的部分。
仲裁:目录里没有这一节,但它没有消失
疑问点:我看目录上好像没有总线仲裁;又想起了令牌环网和以太网的介质访问控制,「只能说有一点点共同点」
两个观察都对。而且第二个观察远不止”一点点”——那是结构上的同一个问题。
先说目录。 王道 2026《复习指导》第 6 章的三级节是 6.1.1
6.1.5 与 6.2.16.2.2,确实没有独立的”总线仲裁”一节,这个观察准确。但仲裁并没有从考纲里消失,它换了两种形式留着:
- 作为一次总线事务的第二个阶段——请求 → 仲裁 → 寻址 → 传输 → 释放(6.2.1);
- 三种判优方式的实体内容你已经在 5.5.3 学过了——中断判优的链式查询和独立请求,与总线仲裁连名字都一样,判据也一样。
所以本章只需补一种(计数器定时查询),不必重讲电路。
再说类比,这才是重点。 把四种机制摆在一起:
争什么 谁裁决 冲突怎么处理 总线仲裁(集中式) 总线使用权 中央仲裁器 事前裁决,不会冲突 总线仲裁(分布式) 总线使用权 各设备互相比较优先级 事前裁决,不会冲突 令牌环 介质使用权 令牌本身,无中心 事前排队,不会冲突 以太网 CSMA/CD 介质使用权 没有裁决者 允许冲突,检测到再退避重传 真正的分界线不是”总线 vs 网络”,而是「事前预约」还是「事后补救」。 总线仲裁和令牌环在同一侧,以太网单独在另一侧(见 随机访问介质访问控制)。你说的”共同点”,准确讲就是前三行共享的那条:先取得使用权,再发送。
那总线为什么不用 CSMA/CD 这种省掉仲裁器的做法? 两条理由,都指向物理尺度:
- 冲突检测需要时间窗口。 CSMA/CD 要求发送时间不小于
(往返传播时延),发送方才可能在发完之前听到冲突。以太网上 是微秒量级,够用;板级总线上 是纳秒量级,窗口小到检测电路本身的开销超过传一次数据。 - 总线冲突的代价不可接受。 以太网丢一帧可以重传;总线上两个三态门同时驱动同一根线是电气故障,而且总线协议里没有帧校验和重传这一层——数据错了就是错了。
一句话:以太网敢碰撞,是因为它上面还有一层重传;总线没有那一层,所以必须事前裁决。
边界
「总线」不等于「主板上的线」。 总线是一组协议加线路,它同时存在于芯片内部(片内总线)、芯片之间(系统总线)和机器之间(通信总线)。反过来,现代主板上 CPU 到内存、CPU 到显卡是点对点链路,并不是多个设备电气并联的经典总线。
「分时」不否定「广播」。 分时约束的是发送方只能有一个,接收方可以是全体——总线上的写操作在电气上就是广播,靠地址译码决定谁真正锁存。
「共享」不等于「等长等宽」。 同一个系统里地址线、数据线的根数常常不同,且都可以与 CPU 字长不同(3.3.4)。
「需要仲裁」的判据是「有多个可能的主设备」,不是「挂了多个设备」。 一条只挂 CPU 和若干从设备的总线不需要仲裁,因为永远只有 CPU 会发起事务。
四大特性里的”时间特性”不等于 6.2.2 的”总线定时”。 前者是标准文本里必须写清的一类条款,后者是具体的定时方式(同步/半同步/异步)——后者是前者的一部分内容。
对照速查
| 问题 | 判据 |
|---|---|
| 谁是主设备 | 谁发出地址 |
| 这条总线要不要仲裁 | 有没有第二个可能的主设备 |
| 这个信号走数据线还是控制线 | 它是被搬运的内容,还是这次动作的命令 |
| 内部总线争用怎么解决 | 控制器排拍,设计时定死 |
| 系统总线争用怎么解决 | 仲裁器,运行时裁决 |
| 总线仲裁与 CSMA/CD 的分界 | 事前预约 vs 事后补救 |
| 四大特性缺一条会怎样 | 插不进去 / 烧芯片 / 含义乱套 / 采样到垃圾 |
考点
- 主/从设备判断:给一个部件关系图,问谁可以是主设备、谁必须是从设备、谁需要参与仲裁。主存必为从设备、DMA 控制器可为主设备是两个高频答案。
- 信号线方向:「地址线单向、数据线双向、控制线双向」这句话错在第三段。
- 四大特性对号入座:给一条具体规定(如”引脚 12 为写使能”),问它属于哪一类特性。功能特性管”这根线是什么”,时间特性管”什么时候有效”。
- 概念辨析:分时 ≠ 只有一个接收方;共享 ≠ 位宽一致。
链接
- 🏠 返回总览:计算机组成原理第 6 章:总线总览
- ➡️ 下一节:6.1.2 总线的分类
- 🔗 三态门与「同一时刻只能有一个发送者」:5.3.2 数据通路的组成
- 🔗 数据线 / 控制线二分(CPU 内部版):5.1.2 CPU 的基本结构
- 🔗 内部总线的排拍三规则:5.3.3 数据通路的基本结构
- 🔗 同构的三种判优方式:5.5.3 异常和中断响应过程
- 🔗 计网物理层四大特性:2.3 物理层设备
- 🔗 以太网与令牌环的介质访问控制:随机访问介质访问控制