网站首页 > 博客文章 正文
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 都可以作为合理的高速目标。
- 上一篇: 谷歌盯上杜比:将开发免费标准替代杜比视界和杜比全景声
- 下一篇: 有哪些冷门,但用完却真香的宝藏国货?
猜你喜欢
- 2024-10-19 Chrome已实现对H.265/HEVC的硬解支持
- 2024-10-19 血管造影机——DSA(dsa血管造影机多少钱一台)
- 2024-10-19 官场微小说:监控(官场微小说套路)
- 2024-10-19 遇见,是场安静的美好(遇见是最好安排)
- 2024-10-19 2999的iQOO8和3299的vivo S15对比,选哪款比较好?
- 2024-10-19 聊一下vivo手机的"微云台"拍照技术
- 2024-10-19 瑞芯微“用于显示帧数据的方法和电子设备”专利获授权
- 2024-10-19 有哪些冷门,但用完却真香的宝藏国货?
- 2024-10-19 谷歌盯上杜比:将开发免费标准替代杜比视界和杜比全景声
- 2024-10-19 首个元宇宙国际联盟成立,微帧科技作为视频编码引领者参与其中
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)