总线与接口
总线与接口:总线仲裁、总线协议、PCIe、USB、I2C、SPI与系统互连
1. 总线基本概念
1.1 总线分类
| 类型 | 连接对象 | 特点 | 示例 |
|---|---|---|---|
| 片内总线 | CPU 内部各部件 | 速度最快,宽度大 | ALU 总线 |
| 系统总线 | CPU、内存、I/O | 速度较快 | 前端总线 |
| 通信总线 | 计算机之间 | 距离远,速度较慢 | 以太网 |
1.2 系统总线组成
- 数据总线:双向,传输数据,宽度决定一次传输的数据量
- 地址总线:单向(CPU→外设),宽度决定寻址空间
- 控制总线:读/写信号、中断请求、总线请求等
例如 32 位地址总线可寻址 。
1.3 总线性能指标
示例:64 位数据总线,200 MHz,每个传输需 2 个时钟周期:
2. 总线仲裁
2.1 集中仲裁
链式查询(菊花链):
总线请求 → 仲裁器 → BG 信号 → 设备1 → 设备2 → ... → 设备N
- 优先级由物理位置决定(离仲裁器近的优先级高)
- 简单,但优先级固定,对远端设备不公平
- 一个设备故障可能导致后续设备无法获得总线
计数器定时查询:
- 仲裁器从当前计数值开始查询
- 计数从0开始:等效于链式查询
- 计数从上次停止处开始:循环优先级
独立请求方式:
- 每个设备有独立的总线请求和授权线
- 仲裁器可灵活分配优先级
- 硬件复杂度 ,但响应最快
2.2 分布仲裁
自举分布式仲裁:
每个设备有唯一优先级ID,同时请求时,优先级高的获得总线。
冲突检测(CSMA/CD):
以太网使用的仲裁方式,先听后发,冲突时退避重试。
3. 总线定时
3.1 同步定时
所有设备使用统一时钟:
时钟周期1:主设备发地址
时钟周期2:从设备返回数据
优点:控制简单 缺点:时钟频率受最慢设备限制
3.2 异步定时
无统一时钟,使用握手协议:
全互锁握手:
主设备:发请求(REQ) ──────────→
等待
从设备: ←──── 发应答(ACK)
主设备:撤销REQ ──────────→
从设备: ←──── 撤销ACK
优点:适应不同速度的设备 缺点:每次传输需要多次握手,开销较大
3.3 半同步定时
在同步基础上增加等待信号(WAIT),允许慢设备插入等待周期。
4. PCI Express(PCIe)
4.1 PCIe 架构
PCIe 采用点对点串行互连,取代 PCI 的并行共享总线:
| 特性 | PCI | PCIe |
|---|---|---|
| 互连方式 | 共享并行 | 点对点串行 |
| 数据宽度 | 32/64 位 | 1/2/4/8/12/16 通道 |
| 时钟频率 | 33/66 MHz | 2.5/5/8/16/32 GT/s |
| 最大带宽 | 533 MB/s | ~63 GB/s (x16 Gen5) |
4.2 PCIe 通道
每条 PCIe 通道包含两对差分信号线(发送+接收):
| PCIe 版本 | 数据速率 | 编码 | 单通道带宽 |
|---|---|---|---|
| Gen1 | 2.5 GT/s | 8b/10b | 250 MB/s |
| Gen2 | 5 GT/s | 8b/10b | 500 MB/s |
| Gen3 | 8 GT/s | 128b/130b | ~985 MB/s |
| Gen4 | 16 GT/s | 128b/130b | ~1970 MB/s |
| Gen5 | 32 GT/s | 128b/130b | ~3940 MB/s |
4.3 PCIe 事务层
PCIe 使用数据包传输:
┌──────────┬──────────┬──────────┬──────────┐
│ TLP头 │ 可选头 │ 数据负载 │ ECRC │
│ (3~4DW) │ (0~3DW) │ (0~1024DW)│ (1DW) │
└──────────┴──────────┴──────────┴──────────┘
TLP 类型:Memory Read/Write、IO Read/Write、Configuration Read/Write、Message。
5. USB
5.1 USB 版本演进
| 版本 | 速率 | 别名 |
|---|---|---|
| USB 1.1 | 12 Mbps | Full Speed |
| USB 2.0 | 480 Mbps | High Speed |
| USB 3.0 | 5 Gbps | SuperSpeed |
| USB 3.1 | 10 Gbps | SuperSpeed+ |
| USB 3.2 | 20 Gbps | SuperSpeed++ |
| USB4 | 40/80 Gbps | 基于Thunderbolt |
5.2 USB 传输类型
| 类型 | 方向性 | 可靠性 | 适用场景 |
|---|---|---|---|
| 控制传输 | 双向 | 可靠 | 设备配置 |
| 批量传输 | 单向 | 可靠 | 打印机、存储 |
| 中断传输 | 单向 | 可靠 | 键盘、鼠标 |
| 等时传输 | 单向 | 不可靠 | 音视频流 |
5.3 USB 拓扑
USB 采用树形拓扑,最多支持 7 层深度、127 个设备:
主机控制器
├── 集线器1
│ ├── 设备1
│ └── 设备2
└── 集线器2
├── 设备3
└── 集线器3
└── 设备4
6. 嵌入式常用总线
6.1 I2C
两线制串行总线:SCL(时钟)+ SDA(数据)。
| 特性 | 值 |
|---|---|
| 线数 | 2(SCL + SDA) |
| 速率 | 100kbps / 400kbps / 3.4Mbps |
| 寻址 | 7位或10位地址 |
| 拓扑 | 多主多从 |
| 距离 | 短距离(<1m) |
通信流程:
起始条件 → 从机地址(7bit) + 读/写位 → ACK → 数据 → ACK → 停止条件
6.2 SPI
四线制高速串行总线:
| 信号 | 方向 | 说明 |
|---|---|---|
| SCLK | 主→从 | 时钟 |
| MOSI | 主→从 | 主出从入 |
| MISO | 从→主 | 主入从出 |
| CS | 主→从 | 片选 |
特点:全双工、高速(可达数十Mbps)、无寻址机制(通过片选选择设备)。
6.3 UART
异步串行通信:
空闲(高) → 起始位(低) → 数据位(5~9bit) → 校验位 → 停止位(高)
| 参数 | 典型值 |
|---|---|
| 波特率 | 9600 / 115200 |
| 数据位 | 8 |
| 校验 | 无/奇/偶 |
| 停止位 | 1 |
7. 系统互连架构
7.1 片上网络(NoC)
多核处理器中,核心间通过路由器网络互连:
| 拓扑 | 直径 | 度 | 链路数 |
|---|---|---|---|
| Mesh | 4 | ||
| Torus | 4 | ||
| Fat Tree | 变化 | 变化 |
7.2 路由策略
- 维序路由(XY路由):先沿X方向,再沿Y方向,无死锁
- 自适应路由:根据网络拥塞动态选择路径
- 最短路径路由:选择跳数最少的路径