USB带宽分配管理规则 为什么USB设备的最高带宽只能到达80%
USB主机负责管理总线的带宽。这是在配置同步和中断端点时的枚举时以及在总线的整个操作过程中完成的。该规范对总线进行了限制,允许为全速总线上的周期传输(中断和同步)分配不超过 90% 的任何帧。在高速总线上,这个限制减少到不超过 80% 的微帧可以分配给周期传输。
因此,如果有一个具有周期性传输的高度饱和的总线,剩余的 10% 将用于控制传输,一旦分配了这些,批量传输将获得剩余的部分。
The host is responsible for managing the bandwidth of the bus. This is done at enumeration when configuring Isochronous and Interrupt Endpoints and throughout the operation of the bus. The specification places limits on the bus, allowing no more than 90% of any frame to be allocated for periodic transfers (Interrupt and Isochronous) on a full speed bus. On high speed buses this limitation gets reduced to no more than 80% of a microframe can be allocated for periodic transfers.
So you can quite quickly see that if you have a highly saturated bus with periodic transfers, the remaining 10% is left for control transfers and once those have been allocated, bulk transfers will get their slice of what is left.
Windows系统带宽的配管理
一个USB主要控制器代表着一个新的USB总线。USB主机控制器根据其自身的特性标识着其以支持的最大带宽。所以挂接到此USB主机控制器上的设备(包括子设备)在主机控制器驱动都有一个标识。当一个USB设备执行了选择配置SET_CONFIGURATION选择接口SET_INTERFACE时,就会在USB主机控制器的带宽管理模块做出标识。当驱动程序持有特定管道的打开句柄时,将保留在该管道上传输数据所需的带宽(基于最大数据包大小和服务间隔)。