『』正确理解 Thunderbolt 3 带宽与协议拓扑

『』正确理解 Thunderbolt 3 带宽与协议拓扑
文章图片

文章图片

自 2015 年 USB-C 开始普及以来, 它已经几乎一统 Android 手机, 并且大多数笔记本都拥有一个乃至更多的 USB-C 接口. USB 3.1 gen2 于 Kaby Lake 进入 Intel 芯片组的支持, 今年 Ice Lake 出现了 ULV 平台 CPU 原生集成的 Thunderbolt AIC.
然而目前这个协议所衍生的讨论, 包括 USB PD, Alt Mode, eGPU 和速率之类的讨论问题都不充分. 一个很简单的问题, 很多人至今都无法理解为什么 5gbps 的 USB 3.1 gen 1 居然也能传输 4K60 的 DP 视频信号, 又或是单纯的把 USB 3.0 和 USB 3.1 gen 1 的 5gbps 划等号. 今天我来具体讲一下到底是怎么一回事.
『』正确理解 Thunderbolt 3 带宽与协议拓扑
文章图片

文章图片

最古老的 USB 接口, 即是大家最熟的 Type-A 接口, 包含了四个引脚, 从左至右分别是:
VBUS: 5V
Data+
【『』正确理解 Thunderbolt 3 带宽与协议拓扑】Data-
GND
可以看出中间两个引脚起到的是数据传输能力, 而两边则是负责供电的 5V 和地线. USB 的数据传输, 就依赖中间 2-3 组成的 差分对. 之所以说 USB 是串口, 就是因为他利用差分对抗干扰的特性, 极大的提升了可用的传输频率以提升带宽. 这就常见于外部总线的设计. 而内存作为并口线, 有着对于延迟特别敏感的线路和多达 260 根引脚, 典型的显卡显存提升带宽的方式也就是通过提升其位宽, 如当年 290X 高达 512bit 的位宽.
但是只有一个差分对意味着数据只能单向传输. USB 协议在设计的时候有着 Master(Host)-Slave 的概念, 即电脑通常是 Host, U 盘这样的外设是 Slave. 而传统 USB 协议并不能实现 Host-Host 的对等连接. 所以这种情况下 Host 起到的就是控制这组差分对传输方向的作用, 这块也叫做 BOT 协议. 这也就是为什么 USB 1.0/1.1/2.0 都被认为是半双工协议. 而这也大幅度降低了 USB 传输的带宽. 就如 480Mbps 理论带宽的 USB 2.0 来算, 实际上我们都知道大概 U 盘能在 2.0 下最大跑到的速度也就 35MB/s(280Mbps). 而这里不得不提的就是对于 BOT 协议的优化, 部分 U 盘可能会带上特别的驱动去调整 BOT 的 Block Size, 从而减少相对无用的控制信号的传输量, 从而将传输速率提升到 40MB/s 以上.
而所谓的 OTG, 就是移动设备通过 Micro USB 的额外一根引脚的特殊阻抗配置从而让移动设备成为 Host, 这就是为什么需要特殊线缆才能让手机接 U 盘的原因. 此外 USB 2.0 时代也引入了 BC1.1/1.2, 这两个协议和 Apple 2.4A 协议一样, 都是在 5V 的框架下通过调整 D+D- 实现更大电流的输出请求.
后来 USB 3.0 打破了原有的半双工模式, 通过引入新的 5 根引脚实现了双向 5gbps 通信.
『』正确理解 Thunderbolt 3 带宽与协议拓扑
文章图片

文章图片

这五根引脚分别是 SSTX+/SSTX-/SSRX+/SSRX-/GND_DRAIN, 以通过增加两组 8b/10b 编码的高速差分对外加一根信号地提升抗干扰能力.
而 USB3.0 A 型接口通过特殊设计从而实现向下兼容 USB 2.0, 当然所谓的「USB 3.0 插入的慢变成 2.0 的隐患也由此而来」, 因为 2.0 的引脚会比 3.0 的更先接触.
另外 USB 3.0 要求 900mA 的电流承载能力, 相比 USB 2.0 时代的 500mA 有了提升. 但是对于移动设备来说「五福一安」还是很弱的, 而 2.0 时代的 BC1.2 也因为电压问题无法突破更大功率.
这里就不得不提 USB 在系统层面的驱动设计了. USB 之所以通用, 是因为其协议很大程度依赖 CPU 层面去做的主动通信而非 USB 设备发起通信. 这里举一个例子, USB HID 键盘一个广为人知的特性是只能六个按键同时按下, 而更古老的 PS/2 键盘却可以支持全键无冲. 这里的原因是 USB 算是一个轮询协议, 操作系统内核比如说集成了 USB HID 驱动, 就会定期去问「键盘, 你哪几个按键按了」,键盘只能回答「按下的六个按键」; 而 PS/2 和一些串口键盘则是当用户按下的时候主动通知系统有按键被按了, 并且这里产生的是一个硬中断.


推荐阅读