1. USB体系概述
1.1 USB总线拓扑结构
USB(Universal Serial Bus)采用星形-菊花链混合拓扑,由一个Host控制器管理所有通信。总线结构分为三层:Host(主机)、Hub(集线器)、Device(设备)。Host位于拓扑根部,通过Root Hub向下扩展端口;Hub负责信号中继、电源管理和设备枚举;Device是功能终端,如键盘、U盘、摄像头。
关键约束:USB 2.0 最多支持 127 个设备(含 Hub),物理层最多 7 层 Hub 级联(含 Root Hub)。USB 3.x 保持相同逻辑拓扑,但增加独立物理通道。
1.2 Host与Device角色定义
USB 采用严格的主从架构,角色不可互换:
| 角色 | 职责 | 关键特征 |
|---|---|---|
| Host(主机) | 管理总线、调度事务、分配地址、供电 | 唯一主控端;包含 Host Controller(HC)和 Root Hub |
| Device(设备) | 响应 Host 请求、报告状态、传输数据 | 被动从属;通过端点(Endpoint)与 Host 通信 |
| Hub(集线器) | 端口扩展、信号中继、电源管理、设备检测 | 既是设备(对 Host)又是 Host 代理(对下游) |
性能要点:Host 侧的 Host Controller 硬件实现和 驱动栈(如 xHCI、EHCI)直接决定批量传输的吞吐上限。设备端端点缓冲区大小和描述符配置同样影响实际带宽。
1.3 USB 2.0 / 3.0 / 3.1 / 3.2 / 4.0 标准演进与速率对比
USB 标准从 1996 年的 1.0 发展到 2019 年的 4.0,速率提升超过 40000 倍。以下是各代标准的核心速率和关键变化:
| 标准版本 | 发布年份 | 标称速率 | 信号编码 | 关键变化 |
|---|---|---|---|---|
| USB 1.1 | 1998 | 12 Mbps (Full Speed) | NRZI | 取代串口/并口,热插拔 |
| USB 2.0 | 2000 | 480 Mbps (High Speed) | NRZI | 微帧调度,批量传输优化,EHCI |
| USB 3.0 | 2008 | 5 Gbps (SuperSpeed) | 8b/10b | 双总线架构(SS + 2.0),全双工,xHCI |
| USB 3.1 Gen 2 | 2013 | 10 Gbps (SuperSpeed+) | 128b/132b | 编码效率提升,Type-C 引入 |
| USB 3.2 | 2017 | 20 Gbps (双通道) | 128b/132b | 双通道复用 Type-C,Host 必须支持 |
| USB4 | 2019 | 40 Gbps | 64b/66b | 基于 Thunderbolt 3 协议,隧道化传输 |
注意:USB 3.0/3.1/3.2 的命名在 2013 年后被重新整理。USB 3.0 等同于 USB 3.1 Gen 1(5 Gbps),USB 3.1 Gen 2 为 10 Gbps,USB 3.2 Gen 2×2 为 20 Gbps。驱动开发中务必以 Gen 标识 为准,避免混淆。
1.4 批量传输在USB协议栈中的位置
批量传输(Bulk Transfer)是 USB 协议中数据量大、非实时、保证可靠的传输类型,典型应用包括:
- 存储设备(U盘、SSD)—— 批量读/写命令与数据
- 网络适配器(USB Ethernet)—— 网络数据包收发
- 数据采集(摄像头、工业传感器)—— 原始数据流
批量传输在 USB 2.0 下独占最多 80% 的微帧带宽(约 53 MB/s 理论值),在 USB 3.0 及以上可达到 接近物理层速率(受协议开销限制)。驱动性能瓶颈通常出现在:
- URB(USB Request Block) 提交与完成处理路径过长
- DMA 映射 与缓存对齐开销
- 中断/轮询 频率与批量传输吞吐的权衡
- 端点队列深度 不足导致总线空闲