USB笔记 USB2.0 不同传输类型下的理论最大速率
USB2.0协议中定义了三种速率,低速(low speed),全速(full speed),高速(high speed)。
最大速率如下:
最大速率(bps) | |
---|---|
低速(low speed) | 1.5Mb/s |
全速(full speed) | 12Mb/s |
高速(high speed) | 480Mb/s |
USB传输的实际数据传输速率是要小于总线速率的,因为实际数据传输速率受到了以下几种情况的影响:
-
通信协议的开销:传输的过程中需要进行位识别、同步和错误检查等,同时根据传输类型的不同,还要进行不同的开销。
-
USB带宽的分配:USB协议根据不同的传输类型,会为其分配不同大小的带宽,然后根据总线实际的繁忙程度,不同传输类型会得到的带宽是不同的,且会实时变化的。
-
软件影响
例如USB控制器程序,总线驱动程序,设备驱动程序等各种软件程序,这些程序的实现方式不同,都会对实际传输速率产生影响。
-
硬件影响
硬件上,例如USB控制器实际支持的传输速率,CPU的处理速率,还有USB线材等都会对实际传输速率产生影响。
-
环境影响
环境上,例如在电磁干扰很强的环境下,会导致传输出现错误,进而导致重传等,都会对实际传输速率产生影响。
-
其他因素
所以,USB传输的实际数据传输速率是要小于总线速率的,并且难以准确的确定速率。
下面要描述计算的USB最大速率,是基于上述的第一点来进行讨论的,具体就是指不考虑任何外部影响,在总线空闲时不同速率模式下的不同传输类型的理论最大速率。因为是非常理论的速率,所以实际情况下是难以达到的。
首先先看一下各种传输类型的带宽分配方式。
各种传输类型的带宽分配方式
传输类型 | 带宽分配情况 |
---|---|
控制传输(Control Transfer) | 为低速和全速非周期传输保留10% 为高速非周期传输保留20% |
批量传输(Bulk Transfer) | 根据总线上的带宽情况进行分配 |
中断传输(Interrupt Transfer) | 要求低速/全速端点的任意帧为周期传输分配不超过90% 要求高速端点的任意帧为周期传输分配不超过80% |
等时传输(Isochronous Transfer) | 要求全速端点的任意帧为周期传输分配不超过90% 要求高速端点的任意帧为周期传输分配不超过80% |
高速high speed
USB高速状态(high speed)下总线的理论最大传输速率为480 Mb/s(即60 MB/s)。
对于高速high speed的情况下,各种传输类型的带宽分配如下:
传输类型 | 最大带宽分配 | 最大速率/(MB/s) |
---|---|---|
控制传输(Control Transfer) | 100% | 60 |
中断传输(Interrupt Transfer) | 80% | 48 |
批量传输(Bulk Transfer) | 100% | 60 |
等时传输(Isochronous Transfer) | 80% | 48 |
从Table High-speed Control Transfer Limits中可以看到,控制传输最大传输速率是每包数据64个字节,每微帧最大传输次数31,最大传输速率15.872MB/s。
从Table High-speed Interrupt Transaction Limits可以看到,中断传输最大传输速率是每包数据512个字节,每微帧最大传输次数13,最大传输速率53.248MB/s,但是中断传输最大只能分配80%的带宽,所以只能按80%的带宽重新计算,会发现每包数据256个字节,每微帧最大传输次数23,这时候的传输速率最高,最大传输速率47.104MB/s,带宽78.5%。然后对于USB设备端来说,每个微帧的最大传输次数为3,所以对于USB设备端来说,最大传输速率的计算方式不同,在不考虑高带宽端点(high-bandwidth endpoint)的情况下,最大传输速率计算变为,每包数据1024个字节,每微帧最大传输次数3,最大传输速率24.576MB/s,对于高带宽端点(high-bandwidth endpoint)来说,最大传输速率计算变为,每包数据2048个字节,每微帧最大传输次数2,最大传输速率32.768MB/s。
从Table High-speed Bulk Transaction Limits可以看到,批量传输最大传输速率是每包数据512个字节,每微帧最大传输次数13,最大传输速率53.248MB/s。
从Table High-speed Isochronous Transaction Limits可以看到,等时传输最大传输速率是每包数据1024个字节,每微帧最大传输次数7,最大传输速率57.344MB/s,但是等时传输最大只能分配80%的带宽,所以只能按80%的带宽重新计算,会发现每包数据256个字节,每微帧最大传输次数23,这时候的传输速率最高,最大传输速率47.104MB/s,带宽78.5%。然后对于USB设备端来说,每个微帧的最大传输次数为3,所以对于USB设备端来说,最大传输速率的计算方式不同,在不考虑高带宽端点(high-bandwidth endpoint)的情况下,最大传输速率计算变为,每包数据1024个字节,每微帧最大传输次数3,最大传输速率24.576MB/s,对于高带宽端点(high-bandwidth endpoint)来说,最大传输速率计算变为,每包数据2048个字节,每微帧最大传输次数2,最大传输速率32.768MB/s。
总结如下:
对于USB主机端各种传输类型的理论最大速率:
传输类型 | 数据有效载荷(Data Payload)/Byte | 最大传输次数(Max Transfers)/每微帧(Microframe) | 最大速率(Max Bandwidth)/(MB/s) |
---|---|---|---|
控制传输 | 64 | 31 | 15.872 |
中断传输 | 512 | 23 | 47.104 |
批量传输 | 512 | 13 | 53.248 |
等时传输 | 512 | 23 | 47.104 |
对于USB设备端各种传输类型的理论最大速率:
传输类型 | 数据有效载荷(Data Payload)/Byte | 最大传输次数(Max Transfers)/每微帧(Microframe) | 最大速率/(MB/s) |
---|---|---|---|
控制传输 | 64 | 31 | 15.872 |
中断传输 | 1024 | 3 | 24.576 |
批量传输 | 512 | 13 | 53.248 |
等时传输 | 1024 | 3 | 24.576 |
全速full speed
USB全速状态(full speed)下总线的理论最大传输速率为12 Mb/s(即1.5 MB/s)。
对于全速full speed的情况下,各种传输类型的带宽分配如下:
传输类型 | 最大带宽分配 | 最大速率/(MB/s) |
---|---|---|
控制传输 | 100% | 1.5 |
中断传输 | 90% | 1.35 |
批量传输 | 100% | 1.5 |
等时传输 | 90% | 1.35 |
从Table Full-speed Control Transfer Limits中可以看到,控制传输最大传输速率是每包数据64个字节,每帧最大传输次数13,最大传输速率0.832MB/s。
从Table Full-speed Interrupt Transaction Limits可以看到,中断传输最大传输速率是每包数据64个字节,每帧最大传输次数19,最大传输速率1.216MB/s,使用带宽81.07%,小于90%。对于USB设备端来说,每帧的最大传输次数为1,所以最大传输速率为0.064MB/s。
从Table Full-speed Bulk Transaction Limits中可以看到,批量传输最大传输速率是每包数据64个字节,每帧最大传输次数19,最大传输速率1.216MB/s。
从Table Full-speed Isochronous Transaction Limits可以看到,等时传输最大传输速率是每包数据64/128/256个字节,每帧最大传输次数20/10/5,最大传输速率1.28MB/s,使用带宽85.33%,小于90%。对于USB设备端来说,每帧的最大传输次数为1,所以最大传输速率计算变为,每包数据1023个字节,每帧最大传输次数1,最大传输速率1.023MB/s。
总结如下
对于USB主机端:
传输类型 | 数据有效载荷/Byte | 最大传输次数/每帧(Frame) | 最大速率/(MB/s) |
---|---|---|---|
控制传输 | 64 | 13 | 0.832 |
中断传输 | 64 | 19 | 1.216 |
批量传输 | 64 | 19 | 1.216 |
等时传输 | 64/128/256 | 20/10/5 | 1.28 |
对于USB设备端:
传输类型 | 数据有效载荷/Byte | 最大传输次数/每帧(Frame) | 最大速率/(MB/s) |
---|---|---|---|
控制传输 | 64 | 13 | 0.832 |
中断传输 | 64 | 1 | 0.064 |
批量传输 | 64 | 19 | 1.216 |
等时传输 | 1023 | 1 | 1.023 |
低速low speed
USB低速状态(low speed)下总线的理论最大传输速率为1.5 Mb/s(即0.1875MB/s)。
对于低速low speed的情况下,各种传输类型的带宽分配如下:
传输类型 | 最大带宽分配 | 最大速率/(MB/s) |
---|---|---|
控制传输 | 100% | 0.1875 |
中断传输 | 90% | 0.16875 |
从Table Low-speed Control Transfer Limits中可以看到,控制传输最大传输速率是每包数据8个字节,每帧最大传输次数3,最大传输速率0.024MB/s。
从Table Low-speed Interrupt Transaction Limits可以看到,中断传输最大传输速率是每包数据8个字节,每帧最大传输次数6,最大传输速率0.048MB/s,使用带宽25.6%,小于90%。对于USB设备端来说,每帧的最大传输次数为1,所以最大传输速率为0.008MB/s。
总结如下
对于USB主机端:
传输类型 | 数据有效载荷/Byte | 最大传输次数/每帧(Frame) | 最大速率/(MB/s) |
---|---|---|---|
控制传输 | 8 | 3 | 0.024 |
中断传输 | 8 | 6 | 0.048 |
对于USB设备端:
传输类型 | 数据有效载荷/Byte | 最大传输次数/每帧(Frame) | 最大速率/(MB/s) |
---|---|---|---|
控制传输 | 8 | 3 | 0.024 |
中断传输 | 8 | 1 | 0.008 |
小结
可以看到,上述所有的最大速率计算都是非常理论化的,是基于USB2.0协议,在总线完全空闲的情况下,并且只进行单一传输类型下,不考虑任何外部影响的情况下的最大传输速率。
由于水平有限,上述的最大传输速率计算可能有误,请谨慎参考。
[参考资料]
Universal Serial Bus Specification Revision 2.0
USB2.0与OTG规范及开发指南
USB Complete, 5th Edition
USB开发大全
本文链接:https://blog.csdn.net/u012028275/article/details/122018056
版权声明:本文为CSDN博主「dadalaohua」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012028275/article/details/122018056
暂无评论