硬件过渡

本主题介绍了到 U1 和 U2 的硬件过渡。

对软件进行初始设置后,硬件会自发过渡到 U1 和 U2,无需该软件的进一步干预。

只要链接主动传输数据包,就处于工作状态 (U0)。未传输数据包时,该链接视为处于空闲状态。在空闲状态下,任何链接合作伙伴都可启动到 U1 或 U2 的过渡。另一链接合作伙伴可以选择接受或拒绝过渡。如果链接合作伙伴接受该过渡,则该链接会转为该 U 状态。如果它拒绝该过渡,则链接保持处于 U0 状态。

DS 端口启动的过渡

DS 端口实施跟踪端口不活动的计时器机制。不论端口何时发送或接收数据包,计时器都会进行重置。当软件编写新的超时值时,计时器也会进行重置。如果软件已将 DS 端口设计为仅启动 U1 或 U2 过渡,则 DS 端口会在链接首次进入 U0 时启动计时器。计时器值基于软件编写的 U1(或 U2)超时值。如果计时器过期后链接处于 U0 状态,则 DS 端口会启动 U1(或 U2)过渡。

如果设备了解到该过渡会影响设备符合性能或延迟要求的能力,则 US 端口链接合作伙伴可以选择拒绝该过渡。例如,如果设备已发送 ERDY 通知并期望来自主机的传输请求,则设备可能会在此期间拒绝 U1 或 U2 状态过渡。

如果软件已设计 DS 端口同时启动 U1 和 U2 过渡,则 DS 端口首先会基于计时器(本部分之前已介绍)启动 U1 过渡。从 U1 到 U2 的过渡在本主题中的 Direct Transition from U1 to U2 中进行了介绍。

如果链接处于 U1 或 U2,则 DS 端口会在接受连接到端口的设备通讯的任意时间将端口返回到 U0。

设备(US 端口)启动的过渡

设备可以选择启动从 U0 到 U1 或从 U0 到 U2 的过渡,只要软件启用了该功能。如果设备将链接过渡到 U1,则链接可以基于 DS 端口的 U2 计时器直接过渡到 U2(如从 U1 到 U2 的直接过渡中所述)。但是,如果未设置 U2 计时器,则设备无法独立启动从 U1 到 U2 的直接过渡。在此情形下,设备必须在启动到 U2 的过渡之前将链接返回到 U0。

确定启动这些过渡的时间时,设备应考虑其退出延迟和性能要求。若要帮助设备对如何强行启动这些过渡做出明智的决定,软件还提供了多种退出延迟值,如本文档之前的使用软件进行初始设置中所述。

如果链接处于 U1 或 U2,则 US 端口可以在任意时间将端口返回到 U0。通常,当 US 端口了解到即将发送任何数据包到主机时或如果它预期来自主机的数据包,则 US 端口会启动到 U0 的过渡。

设备启动 LPM 的优势

软件为 DS 端口设置的计时器值基于常规的摸索。选择这些计时器值时,软件会确保设备性能不受损害。为了维护设备性能,软件不能选择过小的值。由于 DS 端口启动的过渡基于计时器,并且未考虑到设备的准确状态,因此该机制无法利用一切可能的机会发送设备到 U1 或 U2 状态。

另一方面,设备具备有关其特性和当前状态的准确认知。因此,它可以在下一传输即将发生时进行智能推测。基于以上信息,设备可以(且应该)在不明显影响性能的情况下选择主动启动这些过渡。

例如,设备已发送其某个终结点上的 NRDY 通知并了解到暂时不会有通讯。在此情形下,设备可以立即启动到 U1 或 U2 的过渡。就在发送 ERDY 通知之前,设备可以在准备发送该数据时将链接返回到 U0。有关此过程的详细信息,请参阅 USB 3.0 规范的 C.3.1 部分。

从 U1 到 U2 的直接过渡

如果链接处于 U1,则链接可能会直接过渡到 U2,不会进入中间的 U0。不论哪个链接合作伙伴启动到 U1 的过渡,都会出现此情形。但是,仅当链接的 DS 端口上 U2 超时设置为介于 01H-FEH 之间的某个值时,才会出现 U1 到 U2 的过渡。

使用软件进行初始设置部分介绍了其他步骤,该步骤允许 DS 端口将超时值传输至其链接合作伙伴。在链接进入 U1 后,两个链接合作伙伴都会使用根据 DS 端口的 U2 超时值设置的超时值启动计时器。如果计时器由于通讯未进行重置且到期,则两个链接合作伙伴都会静默过渡到 U2,无须其中的任何显式通信。

从 U1 或 U2 过渡到 U3

在硬件中自发启动到 U1 或 U2 的过渡,但是到 U3 的过渡由软件启动。由于 U3 过渡仅在一段时间的不活动之后启动,因此很可能是链接在过渡前处于 U1 或 U2(而费 U0)。

USB 3.0 规范未定义从 U1 或 U2 到 U3 的直接过渡。父集线器或控制器负责将链接自动过渡到 U0,然后过渡到 U3。

集线器的 U1 或 U2 过渡

USB 3.0 规范为集线器提供了有关何时在其 US 端口上启动 U 状态过渡的特定指南。如果所有 DS 端口都处于链接状态 U1 或更低状态,则集线器应在其 US 端口上启动 U1 过渡,从而假设软件已允许集线器启动 U1 过渡。

同样,如果所有 DS 端口都处于链接状态 U2 或更低状态,则集线器应在其 US 端口上启动 U2 过渡,从而假设软件已允许集线器启动 U2 过渡。

注意  

如果没有设备连接到 DS 端口,则端口的状态为 Rx.Detect(低于 U2)。如果未连接设备,则集线器应将其 US 端口发送至 U2。而且,如果所有 DS 端口初始都处于 U1 或更低状态并且向 U2 或更低状态过渡,则集线器应将 US 端口从 U1 过渡到 U2。由于该过渡不是基于 U2 活动计时器,因此集线器必须将其 US 端口的状态设置为 U0,然后将其发送至 U2。

数据包延迟

USB 3.0 规范介绍了称为数据包延迟(参阅 C.1.2.2 部分)的机制。机制用于将 LPM 在总线使用方面的影响最小化。

如果主机将传输请求发送至设备(其上游链接处于 U1 或 U2),则主机可以结束浪费总线带宽,方法是等待链接返回到 U0,然后等待设备响应。若要避免等待,父集线器通过向主机发送回延迟数据包头以设备名义响应。主机处理延迟数据包头的方式与 NRDY 类似,然后主机可自由启动与其他终结点的传输。集线器并行在链接上启动 U0 过渡,然后通知设备数据包延迟。然后,设备将 ERDY 发送到主机以指示设备已做好传输准备。然后,主机可以重新安排到设备的传输。

设备的一个重要任务是在发送 ERDY 之后,负责保持链接处于 U0,直至主机向 ERDY 发送响应或直至过去 tERDYTimeout(500 毫秒)时间。在此期间,设备不得启动 U1 或 U2 过渡,并且还应拒绝由其链接合作伙伴启动的任何过渡。

 

 

显示:
© 2015 Microsoft