USB超高速批量传输
批量传输类型是用来支持想要跟相当大的海量数据通信设备,传输能使用任何可用的超速带宽。超速批量传输功能端点提供以下:
- 对基于有限带宽的超速总线访问
- 保证数据的发送,但是不保证带宽和发送时间
超速维持下面的批量传输管道特征: - 对批量传输管道通信流没有强制固定的数据结构
- 批量传输管道是一个流式管道,因此总是有通信流进出主机。如果应用需要一个双向批量传输通信流,必须使用两个批量传输管道(一个OUT,一个IN)。
标准USB批量传输管道提供移动数据流的能力。超速增加了协议级支持多倍流模式的流式概念。
批量传输数据包大小
批量传输端点应该在端点描述符中设置最大数据包大小为1024字节。也要指定端点在超速总线上能够接受或发送的突发大小。可允许的批量传输端点突发大小在1到16的范围。所有的超速批量传输端点要支持[0-31]的顺序值。
主机需要支持任何超速bulk传输端点和所有的bulk传输突发大小。主机要确保发送给端点的数据包的数量不能超过描述符中定义的最大包大小。此外,发送的突发数据包不能超过记录的最大突发大小。
批量传输功能端点发送的数据包,其数据域必须总是小于等于1024字节。如果批量传输数据量超过1024,则突发事务中所有数据包除了最后一次,都必须是1024字节大小,最后一次是剩下的不足1024字节的数据。批量传输可以持续多个总线事务处理。批量传输在端点有以下情况时完成:
- 已经准确传输完了所期待的数据
- 传输了一个比1024字节少的数据包(短包)
- 应答STALL握手包
批量传输带宽需求
正如USB2.0,批量传输功能端点没有方法为块管道指定想要的带宽。块事务处理只发生在超速总线上有可用带宽的基础上。超速提供一个最好的条件在客户软件和功能设备间传输块数据。控制传输对总线操作比批量传输更有优先权(对总线操作的优先级,控制传输比较高)。当有多个端点的bulk传输挂起时,主机会根据一个公平访问原则提供事务处理的机会给每个端点,这就是主机依赖性操作。
所有在系统中挂起的批量传输竞争相同的有效总线时间。端点和客户软件不能为批量传输假定配置一个指定的服务率(总线带宽不能为批量传输主动分配)。总线时间被提供给客户软件,由于其他设备被插入到系统或者从系统中移除或者因为批量传输被其他功能端点需要,端点能被改变。客户软件不能假定在批量传输和控制传输之间的顺序,即在一些情形中,批量传输能在控制传输的前面进行。
主机在带有批量传输端点的事务处理中能使用任何在1和记录的最大的突发大小,更高效的利用有效总线带宽。例如,可能有比有效总线带宽更多的批量传输,所以主机可以每次使用事务中更小的数据突发,以提供公平服务给所有挂起的块数据流(因为批量传输多,有效带宽少,所以为了能公平给所有等待的批量传输机会,主机会使用事务处理中比较小的数据突发大小,从而将有效带宽充分平均分配给所有批量传输)。
当一个批量传输端点传输一次流控制事件(时,主机会从安排的活动端点中移除它,主机会基于接收到来自于设备的准备好通知恢复端点的传输。
批量传输数据流程
批量事务处理为数据可靠传输使用标准的突发序列,在8.10.2章定义。批量端点通过一次合适的控制传输(SetConfiguration, SetInterface, ClearEndpointFeature)被初始化成最初的发送/接受顺序号和突发大小值(8.12.1.2 和8.12.1.3)。同样,主机在已经成功完成了上面提到的合适的控制传输后,配置批量传输管道初始的发送/接收序列号和突发大小值。
超速批量管道的停止条件跟USB2.0定义的块端点一样同样有副作用。从停止条件中恢复也跟USB2.0相同。块管道停止条件包括STALL握手包作为一次事务处理的应答或者由于发送错误主机事务处理的重试次数消耗完的应答。