USB2.0实际传输速度为什么与480Mbps相差甚远

  • 2020/07/16

USB2.0 规范中传输速度是 480 Mbps(即 60 MB/s)。但是很多 USB2.0 设备在实际工作时的数据传输速度却与此相差甚远,比如用 PC 用 U 盘拷个东西,往往比 60MB/s 慢很多,这是为什么呢?

其实想想也能知道一些原因,USB 总线中传输数据的就一对差分线,单是其要同时支持各种设备(一个 USB HOST 设备通过 USB HUB 下面挂多个从设备是可以同时用的),支持双向传输,必然存在复杂的协议,协议上面的开销肯定不少,另外对于其中的单个设备来说也只能得到部分传输带宽。

总的来说,主要有以下几个因素:USB 协议开销,USB 带宽的分配,硬件结构,USB 设备驱动程序

USB 协议开销

在 USB 数据通信的过程中,总线上传输的并不是所有都是有效信息,还要包括诸如同步信号、类型标识、校验码、握手信号等各种协议信息。因此实际数据传输的速率根本没有可能达到总线传输的极限速度 480 Mbps。且对不同的传输类型,存在不同的协议开销。

USB 有 4 中传输模式:控制传输、批量传输、中断传输、同步传输

根据 USB 协议,USB2.0 的告诉模式,1 秒有 8 个微帧,计算 4 中模式的最大速度传输如下:

传输类型 数据包长度 /Byte 每微帧最大传输次数 最大速度 /(MB/s)
控制传输 64 31 15.137
中断传输 1024 3 23.436
批量传输 512 13 50.781
同步传输 1024 3 24.436

控制传输:控制传输是双向传输,数据量通常较小,主要用来进行查询、配置和给 USB 设备发送通用的命令。

中断传输:中断传输方式主要用于定时查询设备是否有中断数据要传送,该传输方式应用在少量的、分散的、不可预测的数据传输场合。键盘,鼠标等。

批量传输:在访问 USB 总线时,相对其他传输类型具有最低的优先级,USB HOST 总是优先安排其他类型的传输,当总线带宽有富余时才安排批量传输,打印机,扫描仪,存储设备等。

同步传输:同步传输适用于以固定速率传输,可以容忍偶尔错误的数据上。实时传输一般用于 UVC 摄像头等设备。数据传错时不会重传。

USB 带宽的分配

USB 协议规定,控制传输应确保在低 / 全速时能够使用 10%的带宽,高速时能够使用 20%的带宽。而批量传输并没有保留任何带宽。即批量传输只有在控制传输和其它传输不需要使用其带宽的情况下,方能使用剩下的带宽。因此,尽管总线闲置时批量传输可以在一段时间里尽快地传输大量的数据,但总线忙时批量传输就可能工作很慢。

通常主机同时使用鼠标、键盘、摄像头、打印机和扫描仪等多种 USB 设备,它们分别采用不同的传输方式。如果开始只有一个设备以批量传输方式独占系统的全部带宽,速度会很快(接近 53 MB/s)。但如果新插入的若干设备需要使用控制传输全部 20%的保留带宽,那么先前设备批量传输的可用带宽就会下降到原先的 80%,传输速度可能变为 42 MB/s 以下。作为一种更极端情况是批量传输设备插入前,已有设备以控制传输方式完全占有了 20%的保留带宽。其它设备也以中断或者同步传输方式共同占据了剩下的 80%带宽,那么批量传输设备就会因为没有保留带宽,只能处于等待的状态。

硬件结构

其实常用 USB 接口的硬件结构如下图,一个 USB HUB 下面挂了多个设备,即时我们用 PC 时是直接用的电脑的 USB 接口,那也是因为厂家把 USB HUB 做到 PC 里面了,这样才能有这么多的 USB 接口。

USB HUB 的外设(Device 端)所有的数据之和是和 HOST 端一样的,而 HOST 端也不能超过 480Mb/s,所以 480Mb/s 的速度是大家共享的,而不是某一个独享。

USB 设备驱动程序

USB 设备的驱动可以分为设备驱动程序、USB 总线驱动程序、USB 控制器驱动程序三个部分。应用程序通过使用 API 函数与 USB 设备驱动程序联系。USB 设备驱动程序通过调用驱动程序完成对设备的数据读写。USB 总线驱动程序和 USB2.0 控制器驱动程序由操作系统提供。设备驱动通过构造 URB(USB Request Block),并传给总线驱动程序来完成与总线驱动程序的通信。

通常情况下设备驱动程序需要频繁产生中断。而设备驱动程序系统优先级并不高,当计算机负荷较重或者有其它优先级较高的中断发生时,它的中断得不到处理而需要等待。如果设备驱动程序向 USB 总线传递 URB 的时候设置一个较大的缓冲区 . 便可减少了中断的频率而减少等待时间。从而提高数据传输的速度。此外,调整驱动程序中诸如命令排队策略、改变请求包大小等措施,也能对 USB 的数据传输速度产生一定的影响。

综上所述,通常所说的 480 Mbps 是 USB2.0 总线速度的上限 . 考虑通信协议的开销后,实际数据的传输速度存理论上最高也只有 53 MB/s(426Mbps). 实际综合条件下 15 MB/s 至 25 MB/s 都可以作为合理的高速目标

人工客服
(售后/吐槽/合作/交友)
  • 器件型号:CBC3225T220MR
    • 数量 1
    • 建议厂商 TAIYO YUDEN
    • 器件描述 General Purpose Inductor, 22uH, 20%, 1 Element, Ferrite-Core, SMD, 1210, CHIP, 1210, ROHS COMPLIANT
    • 参考价格 $0.07
    • 风险等级
    • ECAD模型

      ECAD模型

      下载ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:104257-1
    • 数量 1
    • 建议厂商 TE Connectivity
    • 器件描述 (104257-1) 02 MTE RCPT HSG SR LATCH .100
    • 参考价格 $0.42
    • 风险等级
    • ECAD模型

      ECAD模型

      下载ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:282403-1
    • 数量 1
    • 建议厂商 TE Connectivity
    • 器件描述 MINI MIC SRS REC CONT
    • 参考价格 $0.12
    • 风险等级
    • ECAD模型

      ECAD模型

      下载ECAD模型
    • 数据手册
    • 查看更多信息

相关资讯

  1. 1.
  2. 2.
  3. 3.
  4. 4.
  5. 5.
  6. 6.
  7. 7.
  8. 8.
  9. 9.
  10. 10.
  11. 11.
  12. 12.
  13. 13.
  14. 14.
  15. 15.
  16. 16.
  17. 17.
  18. 18.
  19. 19.
  20. 20.
查看全部20条内容