首页/计算机组成原理/06-bus/总线定时和标准 🔗 在 Obsidian 中打开
计算机组成原理 · 06-bus

总线定时和标准

重要度 ⭐⭐⭐⭐ 计算机组成原理/总线同步异步半同步PCIPCIeUSB
速查
同步统一时钟,简单快速、灵活性差;异步握手协议(请求-应答),灵活;半同步同步 + 等待(WAIT)信号。

概述

总线定时定义了总线上各信号之间的时序关系,确保数据正确传输。总线标准规范了各厂商产品的互连方式。

项目
同步统一时钟,简单快速,灵活性差
异步握手协议(请求-应答),灵活
半同步同步 + 等待信号

总线定时方式

同步定时(Synchronous)

工作原理

所有信号由公共时钟同步
事件在时钟边沿触发

时钟: __|‾‾|__|‾‾|__|‾‾|__|‾‾|__
       T1    T2    T3    T4
地址:  | 有效地址  |
数据:            | 有效数据  |
控制:  | 读命令    |

特点

  • 优点
    • 实现简单
    • 传输速率高
    • 适合高速设备
  • 缺点
    • 所有设备必须按最慢速度工作
    • 时钟偏移(Clock Skew)限制总线长度
    • 不灵活

同步定时参数

Tsetup:建立时间(数据必须在时钟沿前稳定的最短时间)
Thold:保持时间(数据必须在时钟沿后保持的最短时间)
Tpropagation:传播延迟

异步定时(Asynchronous)

工作原理

无公共时钟,用握手信号协调
主从设备通过请求-应答通信

主设备              从设备
  │                  │
  │──地址/命令──→    │  (主设备发出请求)
  │                  │──→ (从设备处理)
  │←─────应答───────│  (从设备返回应答)
  │←─────数据───────│  (数据传输)
  │                  │

三种握手方式

非互锁(Non-interlocked)

主设备发请求 → 固定时间后撤消
从设备在固定时间内响应

问题:如果从设备慢,可能错过请求

半互锁(Semi-interlocked)

主设备发请求 → 等从设备应答后撤消
从设备应答 → 固定时间后撤消

问题:主设备可能在从设备撤消应答前再次发请求

全互锁(Fully interlocked)⭐

主设备发请求 → 等从设备应答后撤消请求
从设备检测到请求撤消后才撤消应答
主设备检测到应答撤消后才能再次发请求

最可靠!

异步定时的特点

  • 优点
    • 可连接不同速度的设备
    • 无时钟偏移问题
    • 灵活性高
  • 缺点
    • 握手开销大
    • 速度较慢
    • 实现复杂

半同步定时(Semi-synchronous)

工作原理

基于时钟,但可插入等待周期

正常:时钟周期内完成
等待:从设备发Wait信号,延长传输

时钟: __|‾‾|__|‾‾|__|‾‾|__|‾‾|__
地址: | 有效地址 |
数据:        | 等待 | 有效数据 |
Wait:       |‾‾‾‾‾‾‾‾|

特点

  • 兼顾同步的速度和异步的灵活性
  • 等待期间总线被占用,效率降低

分离事务(Split Transaction)

工作原理

将一次完整的总线事务分为两个阶段:
1. 请求阶段:主设备发请求,从设备记录后释放总线
2. 响应阶段:从设备准备好数据后,申请总线发响应

好处:总线在两个阶段之间可被其他设备使用

特点

  • 提高总线利用率
  • 实现复杂
  • PCI 总线支持
一句话串起来同步 = 靠时钟;异步 = 靠握手;半同步 = 时钟 + WAIT;分离事务 = 把一次事务拆成两段,中间把总线让出去。

总线标准

PCI(Peripheral Component Interconnect)

特点

- 32/64位并行总线
- 频率33/66MHz
- 即插即用(PnP)
- 支持突发传输
- 支持分离事务
- 共享总线架构

带宽

32位@33MHz: 132 MB/s
64位@66MHz: 528 MB/s

PCIe(PCI Express)

特点

- 串行点对点连接
- 全双工通信
- 通道可聚合(x1, x4, x8, x16)
- 向下兼容PCI
- 分层架构:物理层、数据链路层、事务层

各代带宽(每通道单向)

PCIe 1.0: 250 MB/s
PCIe 2.0: 500 MB/s
PCIe 3.0: 984.6 MB/s
PCIe 4.0: 1969.2 MB/s
PCIe 5.0: 3938.4 MB/s
PCIe 6.0: 7877 MB/s

例:PCIe x16 3.0 = 16 × 984.6 ≈ 15.75 GB/s

PCIe vs PCI

特性PCIPCIe
传输方式并行串行
拓扑共享总线点对点
全双工
带宽受限高且可扩展
延迟较高较低
PCI:共享并行总线 PCIe:点对点串行链路(交换机) CPU 桥 设备 A 设备 B 同一时刻只有一对设备可通信 需仲裁 · 频率受时钟偏移限制 根复合体 设备 A 设备 B 设备 C 各链路独立 · 全双工 · 可并行
图:PCI 是一根共享的并行总线,PCIe 是多条独立的串行链路——这正是"串行反而更快"的原因。

USB(Universal Serial Bus)

特点

- 串行接口
- 支持热插拔
- 即插即用
- 可供电(5V)
- 支持多种设备类型

版本演进

USB 1.0: 1.5/12 Mbps(低速/全速)
USB 2.0: 480 Mbps(高速)
USB 3.0: 5 Gbps(超高速)
USB 3.1: 10 Gbps
USB 3.2: 20 Gbps
USB 4.0: 40 Gbps

USB 架构

主机控制器
    │
    ├── 根集线器
    │       ├── 设备1
    │       ├── 集线器2
    │       │       ├── 设备2
    │       │       └── 设备3
    │       └── 设备4
    ...

树形拓扑,一个主机控制器最多连127个设备

USB 传输类型

类型特点应用
控制传输可靠,非周期配置、命令
批量传输可靠,非周期打印机、存储
中断传输可靠,周期鼠标、键盘
等时传输不可靠,周期音视频

SATA(Serial ATA)

特点

- 串行点对点
- 用于硬盘、SSD
- 支持热插拔
- 版本:SATA 1.0(1.5Gbps), 2.0(3Gbps), 3.0(6Gbps)

DDR SDRAM 总线

版本演进

DDR: 200-400 MT/s
DDR2: 400-1066 MT/s
DDR3: 800-2133 MT/s
DDR4: 1600-3200 MT/s
DDR5: 3200-6400 MT/s

MT/s = Million Transfers per Second
DDR = 双倍速率(上升沿和下降沿都传输)

总线性能指标

总线带宽

带宽 = 数据宽度 × 频率 × 每周期传输数

例:DDR4-3200, 64位
理论带宽 = 64bit × 3200MHz × 2(DDR) / 8 = 51200 MB/s = 51.2 GB/s
(双通道则翻倍)

用公式表达即:$\text{带宽} = \dfrac{W_{bit} \times f \times k}{8}$,其中 $W_{bit}$ 为数据宽度、$f$ 为频率、$k$ 为每周期传输次数(DDR 时 $k=2$)。

总线延迟

总延迟 = 仲裁延迟 + 传输延迟 + 等待延迟

即 $T_{total} = T_{arb} + T_{trans} + T_{wait}$。

易错点

必记
  1. 异步定时的全互锁最可靠,但速度最慢。
  2. PCIe 是串行的,但通过多通道实现高带宽。
  3. USB 3.0 的 5 Gbps 是比特率,实际有效带宽要低。
  4. DDR 在时钟上升沿和下降沿都传输,故名为"双倍速率"。
  5. 同步总线的缺点是必须按最慢设备设计
  6. 分离事务可以提高总线利用率
  7. PCIe 向下兼容 PCI 软件接口

记忆卡片

同步与异步的根本区别?
同步靠公共时钟,异步靠请求-应答握手,无公共时钟。
哪种握手最可靠?
全互锁:双方都要确认对方信号变化,但最慢。
半同步靠什么变灵活?
在同步时钟基础上加 WAIT 信号,插入等待周期。
分离事务的好处?
请求与响应之间释放总线,提高总线利用率。
PCI vs PCIe 拓扑?
PCI 共享并行总线;PCIe 点对点串行、全双工、可聚合通道。
DDR 为何叫"双倍速率"?
时钟上升沿与下降沿各传一次数据。

交互动画 · 四种总线定时波形

时钟 CLK 地址 数据 读命令 T1T2T3T4 有效地址 有效数据 READ 命令 所有事件都在时钟边沿对齐 → 简单快速,但必须按最慢设备设计时钟 主设备 REQ 从设备 ACK 数据 时钟 有效数据 (无公共时钟) ① REQ↑ → ② ACK↑ → ③ REQ↓(等到 ACK 才撤)→ ④ ACK↓(等到 REQ 撤才撤) 时钟 CLK 地址 数据 WAIT 有效地址 等待周期 有效数据 从设备来不及 → 拉高 WAIT,插入等待周期;时钟仍在,兼顾速度与灵活性 主设备 M1 总线占用 从设备 其他设备 ① 发地址/命令 占用 总线释放! 占用 准备数据(慢) ② 送回数据 可插入自己的事务 一次事务拆成"请求 / 响应"两段,中间总线让给别人 → 总线利用率高,但控制复杂
同步定时:事件由公共时钟边沿触发
优点:简单、快;缺点:全总线按最慢设备设计,时钟偏移限制总线长度
示意波形:点击上方按钮切换四种定时方式;橙色流动虚线表示"信号触发下一个动作"的因果关系。

★ 演示级:四种总线定时方式 —— 同步 / 异步 / 半同步 / 分离事务,逐步比对(自动联动上方波形预览)。

同步定时 T1 地址 · 命令 T2 读等待 T3~T4 数据 公共时钟 异步全互锁 ① REQ↑ ② ACK↑ ③ 数据 ④ 撤除 无公共时钟 · 握手 半同步 时钟节拍 WAIT 等待周期 恢复正常节拍 时钟 + WAIT 分离事务 请求段(占用) 总线释放 响应段(送回) 中间让给别人 同步:简单快 · 按最慢设备 异步:可靠 · 但最慢 半同步:快慢兼顾 分离事务:利用率最高 读周期完整经过:请求 → 仲裁/握手 → 数据阶段 → 撤除 —— 四种方式对"这四步的时序对齐方式"不同
1 / 8

相关知识点

bus-overview-and-arbitration bus-timing bus-standards

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。