摘录
1 引言(Introduction)
2 术语和缩写(Terms and Abbreviations)
3 架构概述(Architectural Overview)
3.1 USB 3.2 系统说明
USB3.2 系统架构(图3-1)由两个同时活动的总线组成:一个 USB2.0 总线和一个增强型超高速总线。增强型超高速总线具有与 USB2.0 类似的架构组件,即:
- USB3.2 互连
- USB3.2 设备
- USB3.2 主机
USB 3.2 集线器是一种特殊的 USB 设备,其目的是为超出由主机提供的总线提供额外的连接点。在本规范中,非集线器设备被称为外围设备,以区分它们与集线器设备。此外,在 USB 2.0 中,术语 “功能” 有时可以与设备互换使用。在此规范中,一个函数是设备中的一个逻辑实体。
3.1.4 USB3.0 与 USB2.0 的特性比较
特性 | 超速USB | USB2.0 |
数据率 | 超速(5.0 Gbps) | 低速(15Mbps)、全速(12Mbps)、高速(480Mbps) |
数据接口 | Dual-simplex,四线差分信号与 USB2.0 信号分离同时双向数据流 | 半双工,2 线差分信号,带方向仲裁转换的单向数据流 |
电缆信号数 | 6个:超速数据路径4个信号,非超速信号路径 2个信号 | 2 个:低速/全速/高速信号路径2个信号 |
总线事务协议 | 主机导向的,异步传输流包传输有确定路由 | 主机,导向的,轮询传输流包厂播到所有设备 |
电源管理 | 多级链路电源管理支持空闲、睡眠、挂起状态,链路、设备、功能级别的电源管理 | 端口级,带两级入口/出口延迟设备级电源管理 |
总线供电 | 同 USB2.0,未配算时的供电增加50%,配置状态供电增加 80% | 支持低/高总线供电,并对未配置的和挂起的设备有低电源限制 |
端口状态 | 端口硬件检测连接事件,并将端口置于操作状态以备超速数据通讯 | 端口硬件检测连接事件。系统软件使用端口命令切换端口到使能状态 |
数据传输类型 | 带超速约束的 USB2.0类型海量传输有流能力 | 四种传输类型,控制、海量、中断、等时 |
3.2 增强的超高速总线架构
增强型超高速总线是一种分层的通信架构,由以下元素组成:
增强型的超高速互连功能。 增强高速互连是设备通过增强高速总线连接到主机并与主机通信的方式。这包括连接到总线的设备的拓扑结构、通信层、它们之间的关系以及它们如何交互以完成主机和设备之间的信息交换。
设备。 增强的超高速设备是信息交换的来源或接收器。它们实现了所需的设备端、增强的超高速通信层,以完成主机上的驱动程序和设备上的一个或多个逻辑功能之间的信息交换。
主机。 增强的超高速主机是信息的源或接收器。它实现了所需的主机端、增强的超高速通信层,以完成在总线上的信息交换。它拥有增强高速数据活动计划和增强高速总线和连接的所有设备的管理。
下图展示了增强型超速互连的参考图,通过主机拓扑、0到五级集线器和设备表示为通信层。
3.2.1 物理层
3.2.2 链路层
3.2.3 协议层
协议层在 主机和设备 间定义了 end-to-end 通讯规则。超速协议在 主机和设备端点(endpoint) 之间提供应用数据信息交换。这个通讯关系叫做 管道(pipe) 。
它是 主机导向的协议 ,意味着主机决定什么时候在主机和设备间进行应用 数据传输 。设备可以通过一个 特定端点 向主机发起 异步请求 服务,所以它不是一个 轮询协议 (USB2.0为轮询协议)。
数据可以连续突发传输,提高总线效率。
对某些传输类型(块传输),协议提供流控支持。
SS 设备可以异步发送,通知主机,设备的功能状态发生改变。而不是轮询的方式。设备端点可以通过设备异步发送的 “ready” 包 (ERDYTP) 通知主机进行数据发送与接收,主机对于 “ready” 通知,如果有有效的数据发送或者缓存接收数据,会添加管道。
主机发送包含主机时间戳的特殊包头 (ITP) 到总线上,该值可以用于保持设备和主机同步(如果需要的话)。
超高速协议(SuperSpeed Protocol)
更超高速协议(SuperSpeedPlus Protocol)
3.2.4 鲁棒性(Robustness)
3.2.5 增强型的超高速电源管理
链路电源管理的关键点是:
- 设备向主机发送 异步 “ready” 通知
- 包是有路由路径的,这样就允许不参与数据通讯的链路进入或仍旧停留在低电源状态
- 如果包送到一个处于低电源状态的端口,这个端口会切换到退出低电源状态并指示这是个切换事件。
3.2.6 设备
超速需要支持 USB2.0 对默认的控制管道的规定。
外围设备
Hub
因为 USB3.0 向下兼容 USB2.0,为支持 USB3.0 双总线结构,USB3.0 HUB 在逻辑上是两个 HUB 的组合:一个 USB2.0 HUB 和一个 USB3.0 HUB。连接到上游端口的电源和地线是共享的。
集线器可分为以下几类:
- SuperSpeed Hub
- SuperSpeedPlus Hub
集线器参与到一个端到端的协议中,所承当的工作: - 路由选择输出的包到下游端口。
- 输入包混合传递到上游端口
- 当不在低功耗状态下时,向所有下游端口广播时间戳包 (ITP)
- 当在一个低功耗状态的端口检测到包时,集线器将目标端口转变成退出低功耗状态,通知主机和设备 (带内) 包遭遇到了一个在低功耗状态的端口。
3.2.7 主机
一个 USB3.0 主机通过主控器和 USB 设备互连。为了支持 USB3.0 双总线结构,USB3.0 主控器必须包括超速 (USB3.0) 和 USB2.0 部分,这样可以同时管理每一个总线上主机和设备间的控制、状态和信息交换。
主机含有几个根下行端口实现 超速USB 和 USB2.0,主机通过这些端口:
检测 USB 设备的连接和移除;
管理主机和设备间的控制流;
管理主机和设备间的数据流;
收集状态和活动统计;
对连接的设备供电;
USB 系统软件继承了 USB2.0 的结构,包括:
设备枚举和配置;
规划周期性和异步数据传输;
设备和功能电源管理;
设备和总线管理信息。
3.3 超速总线数据流模型
超速 USB 集成了 USB2.0 的数据流模型,包括:
主机和设备间的数据和控制交换通过 管道(pipe) 进行,数据传输在主机软件和指定的设备端点间进行。
设备可以有不止一个的活动管道,有两种类型的管道:流式管道(数据)和消息管道(控制),流式管道没有 USB2.0 定义的结构,消息管道有指定的结构(请求的结构)。管道相关联的是数据带宽,传输类型(见下面描述),端点属性,如传输方向与缓冲大小。
大多数管道在系统软件对设备进行配置后才存在,但是当设备上电在默认的状态后,一个消息管道即默认的控制管道总是存在的。提供权限访问设备的配置,状态和控制信息。
一个管道支持 USB2.0 定义的四种传输类型的一种(管道和端点属性一致)。
海量传输类型 (bulk) 在超速中进行了扩展,叫做流 (stream) 。流式提供在协议级支持在标准块传输管道中多路传输多个独立的逻辑数据流。
4 超速数据流模型(Enhanced SuperSpeed Data Flow Model)
4.1 实现者的观点
增强型超高速总线与 USB 2.0 非常相似,因为它提供了 USB 主机和附加的 USB 设备之间的通信服务。通信模型视图保留了 USB 2.0 分层架构和通信流的基本组件(即,点对点、相同的传输类型等)。有关 USB 2.0 通信流的更多信息,请参阅通用串行总线规范 2.0 版中的第 5 章。
本章描述了增强超速主机与其附加的增强超速设备之间进行数据、控制信息通讯,相比 USB2.0 的区别。为了理解增强的超高速数据流,以下概念非常有用:
通信流模型:第 4.2 节描述了如何通过增强的超高速总线在主机和设备之间进行通信。
增强型超高速协议概述:第 4.3 节给出了增强型超高速协议的高级概述,并将其与 USB 2.0 协议进行了比较。
广义传输描述:第 4.4 节概述了如何使用增强的超速协议进行数据传输,随后的部分定义了每种传输类型的操作约束。
设备通知:第 4.4.9 节提供了设备通知的概述,该特性允许设备异步地通知其主机在设备上的事件或状态。
可靠性和效率:第 4.4.10 节和第 4.4.11 节总结了增强型超高速总线可用的信息和机制,以确保可靠性和提高效率。
4.2 超速通信流
SS(SuperSpeed) 保持相似的观念和机理,支持端点,管道和传输类型。参考 USB2.0 协议。
端点的属性 (最大包尺寸 (端点缓存大小), 突发大小等)被记录在描述符中和 SS EndpointCompanion Descriptor。正如在 USB2.0 中,端点是使用三个参数组成的地址来验证 (设备地址,端点号和方向) 。所有的 SS 设备必须起码在默认控制管道 (端点0) 开始执行。
4.2.1 管道
一个超速管道是一个设备上的端点和主机软件的连接。管道代表拥有缓存空间的主机软件和设备端点之间传输数据的能力,和 USB2.0 有相同的过程。主要的区别在于当超速的非同步端点忙时,会返回一个没有准备好 (NRDY) 应,当它想又要服务时必须发送准备好 (ERDY) 通知。主机在下一个传输类型限制下的有效时机中重新安排事务。
4.3 超速协议综述
正如在 USB3.0 结构总览那章中提到的,超速协议是利用双差分数据线的物理层。所有的 USB2.0 的类型都可以被高速协议支持。协议之间的区别在于下面要首先讨论的超速中使用的包的描述。
4.3.1 与 USB2.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 全速和高速模式)。超速下,设备可以发送 IntervalAdjustment 消息给主机调整间隔 125us 一直到 +/-13.333us ;
USB2.0 电源管理总是 主机导向(主机初始化) 的,超速链路两端都支持电源管理;因此不管何时需要空闲,需要退出,需要通信,每个链路能独立的进入低电源状态。
USB2.0 仅在每个 transaction 进行 end-to-end 级别的错误检测、恢复、流控,超速在 end-to-end (数据包重试) 和 链路级别(头包重试) 分割这些功能。
4.3.1.1 比较 USB2.0 和超速的事物处理
超速全双工总线物理层允许同时进行双向的通信。超速协议允许收到握手包之前发送多个数据包(突发)。对于 OUT 传输,包含在 USB2.0 令牌包中的信息(设备地址和端点信息)被合并在数据包头里面,因此不需要额外令牌包。对于输入传输 IN,超速主机发送一个握手包 (ACK) 给设备以请求数据(和指示数据是否正确)。设备可以通过返回数据或者返回 STALL 握手包来应答,或者返回一个没准备好 (NRDY) 握手包延迟传输直到设备准备好了。
USB2.0 的包是广播方式,每个连接的设备解析每个包的地址、端点、方向信息来决定自己是否应该响应。超速包有路由信息,HUB 决定每个包要送达哪个设备,只有一个例外,同步时间戳包(lsochronous Timestamp Packet,ITP)广播到每一个设备。
USB2.0 的查询方式已经被异步通知代替。超速传输通过主机发出一个请求来开始传输后面跟随着设备的应答。如果设备能接受请求,它就接收数据或者发送数据;如果端点停止了,设备应该以 STALL 握手包响应;如果设备由于缺少缓存空间或者没有数据而不能接受请求,应该以 NRDY 应答告诉主机现在还不能处理请求。当等到设备能接受请求时,设备会主动发送一个端点准备好 (ERDY) 异步通知给主机然后主机会重新安排传输事务。单路传送和有限制的多点广播的包以及异步通知,都允许没有活跃传输包的链路进入一个降低功耗状态,上游和下游端口共同决定它们的链路进入一个低功耗状态,集线器会传递到上游端口。通过允许链路伙伴独立控制它们的链路电源状态,集线器将任意下游端口可见的最高链路电源状态传递到上游端口,使总线快速进入最低允许电源状态。
4.3.1.2 超速包介绍
超速包以 16 字节的头部开始。一些包只包含有头部(TP,LMP,ITP)。所有的头部以用于决定包处理方式的包类型信息开始。头部有 16 位 CRC 保护,以 2 个字节链路控制字 (link control word) 结束。依赖于类型,大多数包包含有路由信息(路由字符)和一个三参数的设备地址(设备地址,端点号和方向)。路由字符给主机用来指导包被发送到被指向的拓扑路径。设备发送的包被集线器默认路由选择,集线器总是把数据从任何可见的下游端口传到上游端口(这一过程不需要路由信息)。
有四种基本类型的包:(协议层)
Link Management Packet(LMP),只穿过一对直接连接的端口(链路两端),主要用来管理链路。
Transaction Packet (TP,事务包),穿过所有直接连接主机与设备的链路,用来控制流式数据包,配置设备和集线器等(任何传输类型的事务处理都用到)。注意一个 Transaction Packet 是没有数据的。(控制命令包,TP 包就是一个包头(DPH) )
DataPacket(DP),穿过所有直接连接主机与设备的链路,数据包有两部分组成,一个和 TP 包相似的数据包头 (DPH) 和带有数据块加上用来确保数据完整性的 32 位 CRC 的数据包 (DDP) 。
lsochronous Timestamp Packet(ITP)。它被主机用来多点广播到所有的活动的链路上。
USB3.2 摘录(一)(下):https://developer.aliyun.com/article/1598598