Bus Overview
总线
总线是一组能为多个部件分时共享的公共信息传送线路。
- 共享:总线上可以挂接多个部件,部件之间交换的信息都可以通过这组线路传送。
- 分时:同一时刻只允许一个部件向总线发送信息;其他部件即使也要发送,也必须等待。
一条总线通常由多根信号线组成。比如一组 32 位数据总线,本质上就是 32 根可并行传送数据位的信号线。
早期计算机外部设备少时,可以采用分散连接方式;设备增多后,这种方式不利于随时增减设备。
总线连接把多个部件挂到一组公共线路上,提高了连接的灵活性。
代价:既然线路被共享,就会产生争用,需要规定占用关系、传输能力和时间配合。
按功能分类
按所在位置和连接对象,总线可分为三类。
| 类型 | 连接范围 | 说明 |
|---|---|---|
| 片内总线 | CPU 芯片内部 | 连接 CPU 内部寄存器、ALU 等部件 |
| 系统总线 | 计算机系统内各功能部件之间 | 连接 CPU、主存、I/O 接口 |
| 通信总线 | 计算机系统之间,或计算机与其他系统之间 | 也称外部总线,用于系统外部的信息传送 |
数据通路强调数据流经的路径;数据总线强调承载数据的线路媒介。数据总线可以是数据通路的一部分,但二者不是同一个概念。
总线的物理实现
从物理上看,总线是一组信号线。每根信号线一次传送 1 bit 信息,多根信号线并列使用时,就能在同一时刻传送多位信息。
同一时刻,总线上的典型关系是:
- 只能有一个部件作为发送者,把信息送到总线上。
- 可以有一个或多个部件作为接收者,从总线上读取信息。
如果两个部件同时向同一组总线发送不同信息,线路上的信号就会冲突。因此,总线系统需要规定谁能在什么时候占用总线。
总线传输周期的四个阶段
总线传输周期也叫总线周期,指一次总线操作所需的完整时间。一个典型总线周期可分为四个阶段。
| 阶段 | 作用 | 关键信息 |
|---|---|---|
| 申请分配阶段 | 主设备申请使用总线,并获得下一次传输周期的总线使用权 | 谁能使用总线 |
| 寻址阶段 | 获得总线使用权的主设备发出从设备地址和有关命令 | 访问谁、做什么 |
| 传输阶段 | 主设备与从设备进行数据交换 | 真正交换数据 |
| 结束阶段 | 主设备撤除有关信息,释放总线使用权 | 总线恢复可用 |
总线的基本特性
| 特性 | 关心什么 | 例子 |
|---|---|---|
| 机械特性 | 物理外形和连接方式 | 尺寸、形状、管脚数、排列顺序 |
| 电气特性 | 信号如何在电气层面有效 | 传输方向、有效电平范围 |
| 功能特性 | 每根线承担什么功能 | 地址线、数据线、控制线 |
| 时间特性 | 信号之间的时序关系 | 地址何时有效、读写信号何时发出、数据何时稳定 |
串行总线与并行总线
按一次传送信息的方式,总线可以分为串行总线和并行总线。
| 类型 | 基本方式 | 优点 | 局限 |
|---|---|---|---|
| 串行总线 | 数据逐位传送 | 传输线少、成本低、适合长距离传输,也能节省设备内部布线空间 | 发送和接收时需要串并转换 |
| 并行总线 | 多位数据同时传送 | 逻辑时序较简单,电路实现较容易 | 信号线多,占布线空间;长距离成本高;频率升高后线间干扰和等长要求更突出 |
并行总线在同一频率下每次能传更多位,但它不意味着一定总是更快。频率、线间干扰、传输距离、编码方式都会影响实际传输能力。
系统总线的三类信号
系统总线按传输信息内容可分为数据总线、地址总线和控制总线。
| 类型 | 传什么 | 方向 | 位数或根数的含义 |
|---|---|---|---|
| 数据总线 | 各功能部件之间的数据信息,包括指令和操作数 | 双向 | 位数与机器字长、存储字长有关 |
| 地址总线 | 主存单元或 I/O 端口的地址 | 通常单向,由 CPU 或主设备发出 | 位数与主存地址空间大小、设备数量有关 |
| 控制总线 | 控制命令和反馈信号 | 有出也有入 | 一根控制线通常传一种控制或状态信号 |
系统总线按功能可以分为地址总线、数据总线和控制总线,但这不等于物理线路一定完全分开。总线复用是让同一组物理信号线在不同时间传送不同类型的信息。
最常见的是地址/数据复用:先用这组线传送地址,由接收方锁存地址;随后同一组线再传送数据。这样可以减少引脚数和信号线数,但地址和数据不能同时传送,一次总线传输也需要更明确的时序控制。
单总线结构
单总线结构中,CPU、主存、I/O 设备通过 I/O 接口都连接到同一组总线上。
优点是结构简单、成本低、易于接入新设备。缺点也很直接:所有部件争用唯一总线,带宽低、负载重,不支持多个传送操作并发进行。
“单总线结构”说的是系统里只有一组公共总线,不是说只有一根物理线。这一组总线内部仍然可以细分为地址总线、数据总线和控制总线。
双总线结构把系统分成两条主要总线:
- 主存总线:用于 CPU、主存和通道之间的数据传送。
- I/O 总线:用于多个外部设备与通道之间的数据传送。
这里的通道是具有特殊功能的处理器,能统一管理 I/O 设备。双总线结构把较低速的 I/O 设备从主存总线上分离出来,减轻主存总线负担;代价是需要增加通道等硬件。
三总线结构
三总线结构进一步把系统中的信息通路分成三条独立总线:
- 主存总线。
- I/O 总线。
- 直接内存访问 DMA 总线。
DMA 总线用于支持高速 I/O 设备和主存之间直接交换数据,使 I/O 设备能更快响应命令,提高系统吞吐量。
四总线结构
四总线结构通过桥接器把不同层级的总线连接起来。桥接器具有数据缓冲、转换和控制功能。
- 越靠近 CPU 的总线速度通常越快。
- 不同层级总线通过桥接器连接,桥接器负责隔离速度差异和协议差异。