在框架上,USB3.0超速是向后兼容USB2.0的,但是二者在协议上还是有一些重大的不同:
在框架上,USB3.0超速是向后兼容USB2.0的,但是二者在协议上还是有一些重大的不同:
- USB2.0的transaction(事务处理)有三部分(令牌(token)、数据(data)和握手(handshake)),超速也是这三部分但是用法不同(令牌包集成在头包和DPH中,各种类型的握手包都是TP包形式);对于OUT事务,令牌被合并在数据包中;对于IN事务,令牌被握手包代替。
- USB2.0不支持突发(bursting),超速支持持续突发;
- USB2.0是半双工(half-duplex)的广播总线,超速是dual-simplex(全双工)的非广播总线,支持同时进行IN、OUT transaction;
- USB2.0使用轮询模式,超速使用异步通知方式;
- USB2.0不支持流能力,超速支持海量(bulk)端点的Stream方式;
- USB2.0在同步传输(isochronous)间隔中没有进入低耗电状态的机制,超速则允许同步传输服务间隔中自动进入低耗电状态(不服务的时间段进入低功耗);SS主机在服务间隔前发送一个PING包到目标同步设备允许开始同步传输之前转变成电源活动状态。
- USB2.0设备无法通知主机自己在进入低耗电状态前可容忍的延迟时间(设备通知主机自己进入低功耗状态的最长延迟时间),超速则提供Latency Tolerance消息;
- USB2.0以固定的1ms/125us间隔发送帧包/小帧包(USB 2.0全速和高速模式)。超速下,设备可以发送Interval Adjustment消息给主机调整间隔125us一直到+/-13.333us;
- USB2.0电源管理总是主机导向(主机初始化)的,超速链路两端都支持电源管理;因此不管何时需要空闲,需要退出,需要通信,每个链路能独立的进入低电源状态。
- USB2.0 仅在每个transaction进行end-to-end级别的错误检测、恢复、流控,超速在end-to-end(数据包重试)和链路级别(头包重试)分割这些功能。
比较USB2.0和超速的事务处理(Transaction)
超速全双工总线物理层允许同时进行双向的通信。超速协议允许收到握手包之前发送多个数据包(突发)。对于OUT传输,包含在USB2.0令牌包中的信息(设备地址和端点信息)被合并在数据包头里面,因此不需要额外令牌包。对于输入传输IN,超速主机发送一个握手包(ACK)给设备以请求数据(和指示数据是否正确)。设备可以通过返回数据或者返回STALL握手包来应答,或者返回一个没准备好(NRDY)握手包延迟传输直到设备准备好了。
USB2.0的包是广播方式,每个连接的设备解析每个包的地址、端点、方向信息来决定自己是否应该响应。超速包有路由信息,HUB决定每个包要送达哪个设备,只有一个例外,等时(同步)时间戳包(Isochronous Timestamp Packet, ITP)广播到每一个设备。
USB2.0的查询方式已经被异步通知代替。超速传输通过主机发出一个请求来开始传输,后面跟随着设备的应答。如果设备能接受请求,它就接收数据或者发送数据;如果端点停止了,设备应该以STALL握手包响应;如果设备由于缺少缓存空间或者没有数据而不能接受请求,应该以NRDY应答告诉主机现在还不能处理请求。当等到设备能接受请求时,设备会主动发送一个端点准备好(ERDY)异步通知给主机然后主机会重新安排传输事务。
单路传送和有限制的多点广播的包以及异步通知,都允许没有活跃传输包的链路进入一个降低功耗状态,上游和下游端口共同决定它们的链路进入一个低功耗状态,集线器会传递到上游端口。通过允许链路伙伴独立控制它们的链路电源状态,集线器将任意下游端口可见的最高链路电源状态传递到上游端口,使总线快速进入最低允许电源状态。