Freigeben über


U1- und U2-Übergänge

In diesem Thema wird zunächst das anfängliche Setup beschrieben, das von der Software zum Aktivieren von U1- und U2-Übergängen durchgeführt wird, und beschreibt dann, wie diese Übergänge in der Hardware auftreten.

Ersteinrichtung durch die Software

In diesem Thema wird beschrieben, wie Software ein Gerät aufzählt.

Damit U1- oder U2-Übergänge auftreten, führt die Software während der Enumeration eines Geräts die folgenden Schritte aus.

  1. Software austauscht U1- oder U2-Ausgangslatenzinformationen während des Enumerationsprozesses mit dem Gerät. Als erster Teil dieses Austauschs werden die gerätespezifischen Latenzen vom Gerät in den Feldern "bU1DevExitLat" und "wU2DevExitLat" der SuperSpeed-USB-Gerätefunktion ausgefüllt (definiert in Abschnitt 9.6.2.2 der USB 3.0-Spezifikation). Als zweiter Teil des Austauschs informiert der Host das Gerät über die gesamten Ausgangslatenzen für das Gerät, indem eine SET_SEL Steuerungsübertragung gesendet wird, gemäß Abschnitt 9.4.12 der USB 3.0-Spezifikation. Die Latenzinformationen umfassen die Latenzen, die mit upstream-Verbindungen und Controllern verknüpft sind.

  2. Für den DS-Port, an den das Gerät angeschlossen ist, konfiguriert die Software zwei Werte: PORT_U1_TIMEOUT und PORT_U2_TIMEOUT. Bei der Entscheidung dieser Werte berücksichtigt die Software die Merkmale des Geräts (z. B. den Typ der Endpunkte) und die Latenzen, die dem Zurückbringen des Geräts von U1 oder U2 auf U0 zugeordnet sind. In der folgenden Tabelle werden die Timeoutwerte beschrieben.

    Tabelle 1. Werte für PORT_U1_TIMEOUT und PORT_U2_TIMEOUT

    Wert BESCHREIBUNG
    01H-FEH Der DS-Port muss nach einem Zeitraum der Inaktivität Übergänge initiieren. Der genaue Zeitraum wird vom Timeoutwert abgeleitet. Der Port muss Übergänge akzeptieren, die vom Linkpartner initiiert werden, sofern kein anhängiger Datenverkehr vorhanden ist.
    FFH Der DS-Port darf keine Zustandsübergänge initiieren, sondern muss Zustandsübergänge akzeptieren, die vom Linkpartner initiiert werden, es sei denn, es gibt ausstehenden Datenverkehr.
    0 Der DS-Port darf keine Übergänge initiieren und darf keine Übergänge akzeptieren, die vom Linkpartner initiiert werden.
  3. Wenn der PORT_U2_TIMEOUT Wert zwischen 01H-FEH liegt, gibt es einen zusätzlichen Schritt, der in der Hardware als Ergebnis von Schritt 2 auftritt. Der DS-Port informiert seinen Partner über diesen Wert. Die Bedeutung dieses Schritts wird unter "Direkter Übergang von U1 zu U2" beschrieben.

  4. Für jedes Gerät oder jeden Hub konfiguriert die Software zwei Werte: U1_ENABLE und U2_ENABLE, indem SET_FEATURE (U1_ENABLE/U2_ENABLE) Steuerübertragungen gesendet werden. In der folgenden Tabelle werden diese Werte beschrieben.

    Tabelle 2. Werte für U1_ENABLE und U2_ENABLE

    Wert BESCHREIBUNG
    Aktiviert Der US-Port kann Übergänge initiieren und Übergänge akzeptieren, die vom Linkpartner initiiert werden, sofern dies durch die Geräterichtlinie zulässig ist.
    Arbeitsunfähig Der US-Port darf keine Übergänge initiieren, kann aber Übergänge akzeptieren, die vom Linkpartner initiiert werden.

Hardwareübergänge

In diesem Thema werden Hardwareübergänge zu U1 und U2 beschrieben.

Nach der Ersteinrichtung der Software wechselt die Hardware autonom zu U1 und u2, ohne weitere Eingriffe aus der Software.

Eine Verknüpfung befindet sich im Arbeitszustand (U0), solange sie Pakete aktiv überträgt. Die Verknüpfung gilt als im Leerlauf, wenn keine Pakete übertragen werden. Im Leerlaufzustand kann jeder Linkpartner einen Übergang zu U1 oder U2 initiieren. Der andere Linkpartner kann den Übergang annehmen oder ablehnen. Wenn der Linkpartner den Übergang akzeptiert, wechselt der Link zu diesem U-Status. Wenn der Übergang abgelehnt wird, verbleibt der Link in U0.

Von DS-Anschluss initiierte Übergänge

Ein DS-Port implementiert einen Zeitgebermechanismus, der die Inaktivität auf dem Port nachverfolgt. Der Timer wird zurückgesetzt, wenn dieser Port ein Paket sendet oder empfängt. Der Timer wird auch zurückgesetzt, wenn die Software neue Timeoutwerte programmiert. Wenn die Software den DS-Port so programmiert hat, dass nur U1- oder U2-Übergänge initiiert werden, startet der DS-Port den Timer, wenn der Link zuerst U0 eingibt. Der Timerwert basiert auf dem Von der Software programmierten Timeoutwert U1 (oder U2). Wenn sich der Link in U0 befindet, wenn der Timer abläuft, initiiert der DS-Port den U1-Übergang (oder U2).

Der US-Portlinkpartner kann den Übergang ablehnen, wenn das Gerät weiß, dass sich der Übergang auf die Fähigkeit des Geräts auswirken kann, die Leistungs- oder Latenzanforderungen zu erfüllen. Wenn das Gerät beispielsweise eine ERDY-Benachrichtigung gesendet hat und eine Übertragungsanforderung vom Host erwartet, kann das Gerät U1- oder U2-Zustandsübergänge in der Zwischenzeit ablehnen.

Wenn die Software den DS-Port zum Initiieren von U1- und U2-Übergängen programmiert hat, initiiert der DS-Port zuerst den U1-Übergang basierend auf dem Timer (weiter oben in diesem Abschnitt beschrieben). Der Übergang von U1 zu U2 wird in diesem Thema im direkten Übergang von U1 zu U2 beschrieben.

Wenn sich eine Verbindung in U1 oder U2 befindet, kann ein DS-Port den Port jederzeit wieder in U0 übertragen, wenn er Datenverkehr für das an den Port angeschlossene Gerät empfängt.

Geräteinitiierte Übergänge (US-Port)

Ein Gerät kann einen Übergang von U0 zu U1 oder U0 zu U2 initiieren, sofern die Funktion von der Software aktiviert ist. Wenn das Gerät einen Link zu U1 wechselt, kann der Link direkt basierend auf dem U2-Timer des DS-Ports zu U2 wechseln (siehe "Direkter Übergang von U1 zu U2"). Wenn der U2-Timer jedoch nicht festgelegt ist, kann das Gerät keinen direkten Übergang von U1 zu U2 selbst initiieren. In diesem Fall muss das Gerät den Link zurück zu U0 bringen, bevor der Übergang zu U2 initiiert wird.

Bei der Entscheidung, wann diese Übergänge initiiert werden sollen, sollte ein Gerät die Beendigungslatenz und die Leistungsanforderungen berücksichtigen. Um dem Gerät dabei zu helfen, fundierte Entscheidungen darüber zu treffen, wie aggressiv es die Übergänge initiieren kann, stellt Software auch verschiedene Werte der Exitlatenz bereit, wie weiter oben in diesem Dokument unter "Ersteinrichtung nach Software" beschrieben.

Wenn sich die Verbindung in U1 oder U2 befindet, kann ein US-Port den Port jederzeit wieder in U0 bringen. In der Regel initiiert der US-Port den Übergang zu U0, wenn er weiß, dass er dabei ist, Pakete an den Host zu senden oder ein Paket vom Host erwartet.

Vorteile von geräteinitiiertem LPM

Die Zeitgeberwerte, die von der Software für DS-Ports festgelegt werden, basieren auf allgemeinen Heuristiken. Beim Auswählen dieser Zeitgeberwerte stellt software sicher, dass die Geräteleistung nicht beeinträchtigt wird. Um die Leistung des Geräts aufrechtzuerhalten, kann software keine Werte auswählen, die zu klein sind. Da ds-port-initiierte Übergänge auf den Zeitgebern basieren und nicht den genauen Zustand des Geräts berücksichtigen, kann dieser Mechanismus nicht alle möglichen Möglichkeiten nutzen, das Gerät an den U1- oder U2-Zustand zu senden.

Das Gerät verfügt dagegen über genaue Kenntnisse über seine Eigenschaften und den aktuellen Zustand. Daher kann es eine intelligente Vermutung darüber machen, wann die nächste Übertragung stattfinden wird. Basierend auf diesen Informationen kann (und sollte) das Gerät entscheiden, diese Übergänge aktiv zu initiieren, ohne die Leistung erheblich zu beeinträchtigen.

Beispielsweise hat das Gerät eine NRDY-Benachrichtigung an einen seiner Endpunkte gesendet und weiß, dass es für eine Weile keinen Datenverkehr gibt. In diesem Fall kann das Gerät sofort einen Übergang zu U1 oder U2 initiieren. Unmittelbar vor dem Senden der ERDY-Benachrichtigung kann das Gerät den Link zur U0 zurückführen, um diese Daten zu senden. Ausführliche Informationen zu diesem Prozess finden Sie im Abschnitt C.3.1 der USB 3.0-Spezifikation.

Direkter Übergang von U1 zu U2

Wenn sich die Verbindung in U1 befindet, kann die Verbindung direkt zu U2 wechseln, ohne U0 dazwischen einzugeben. Dies kann unabhängig davon auftreten, welcher Linkpartner den Übergang zu U1 initiiert hat. Der U1-zu-U2-Übergang kann jedoch nur auftreten, wenn der U2-Timeout für den DS-Port der Verbindung auf einen Wert zwischen 01H-FEH festgelegt ist.

Im Abschnitt "Erste Einrichtung nach Software" wird ein zusätzlicher Schritt beschrieben, der es dem DS-Port ermöglicht, den Timeoutwert an seinen Linkpartner zu übermitteln. Nachdem der Link den Zustand U1 erreicht hat, starten beide Linkpartner einen Timer mit dem Timeoutwert, der basierend auf dem U2-Timeoutwert des DS-Ports festgelegt ist. Wenn der Timer aufgrund von Datenverkehr nicht zurückgesetzt wird und abläuft, wechseln beide Link-Partner ohne explizite Kommunikation zwischen ihnen stillschweigend zu U2.

Übergänge von U1 oder U2 zu U3

Übergänge zu U1 oder U2 werden in der Hardware autonom initiiert, aber der Übergang zu U3 wird von der Software initiiert. Da der Übergang von U3 erst nach einer Zeit der Inaktivität initiiert wird, ist es wahrscheinlich, dass sich der Link vor dem Übergang in U1 oder U2 (und nicht vor U0) befand.

Die USB 3.0-Spezifikation definiert keine direkten Übergänge von U1 oder U2 zu U3. Der übergeordnete Hub oder Controller ist für den automatischen Wechsel der Verbindung zu U0 und dann für den Wechsel zu U3 verantwortlich.

U1- oder U2-Übergänge für Hubs

Die USB 3.0-Spezifikation enthält spezifische Richtlinien für Hubs, wann U-Zustandsübergänge an ihrem US-Port initiiert werden sollen. Wenn sich alle DS-Ports im Verbindungszustand U1 oder niedriger befinden, sollte der Hub einen U1-Übergang auf seinem US-Port initiieren, vorausgesetzt, die Software hat den Hub aktiviert, um den U1-Übergang zu initiieren.

Ähnlich, wenn sich alle DS-Ports im Verbindungszustand U2 oder niedriger befinden, sollte der Hub einen U2-Übergang auf seinem US-Port initiieren, vorausgesetzt, dass die Software den Hub dazu befähigt hat, den U2-Übergang zu initiieren.

Hinweis

Wenn kein Gerät an einen DS-Port angeschlossen ist, lautet der Status des Ports Rx.Detect, der niedriger als U2 ist. Wenn also keine Geräte angeschlossen sind, sollte der Hub seinen US-Port an U2 senden. Wenn sich alle DS-Ports anfänglich in U1 oder niedriger befanden und sie auf U2 oder niedriger umsteigen, sollte der Hub den US-Port von U1 zu U2 übertragen. Da dieser Übergang nicht auf dem U2-Aktivitätszeitgeber basiert, muss der Hub seinen US-Port nach U0 bringen und dann an U2 senden.

Paketverzögerung

Die USB 3.0-Spezifikation beschreibt einen Mechanismus, der als Paketverzögerung bezeichnet wird (siehe Abschnitt C.1.2.2). Der Mechanismus wird verwendet, um die Auswirkungen von LPM auf die Busnutzung zu minimieren.

Wenn ein Host eine Übertragungsanforderung an ein Gerät sendet, dessen Upstreamverbindung sich in U1 oder U2 befindet, könnte der Host die Busbandbreite verschwenden, indem er darauf wartet, dass die Verbindung in U0 zurückkehrt, und dann auf das Gerät zu antworten. Um diese Wartezeit zu vermeiden, antwortet der übergeordnete Hub im Auftrag des Geräts, indem ein verzögerter Paketheader zurück an den Host gesendet wird. Der Host verarbeitet den verzögerten Paketheader ähnlich wie NRDY und kann dann Übertragungen mit anderen Endpunkten initiieren. Parallel initiiert der Hub einen U0-Übergang auf dem Link und informiert das Gerät dann über das verzögerte Paket. Das Gerät sendet dann ERDY an den Host, um anzugeben, dass das Gerät jetzt für die Übertragung bereit ist. Der Host kann dann die Übertragung auf das Gerät neu planen.

Eine wichtige Verantwortung des Geräts ist, dass das Gerät nach dem Senden von ERDY dafür verantwortlich ist, den Link in U0 zu halten, bis der Host eine Antwort an ERDY sendet oder bis die tERDYTimeout (500 Millisekunden) Zeit verstrichen ist. Während dieser Zeit darf das Gerät keinen U1- oder U2-Übergang initiieren und sollte auch einen von seinem Linkpartner initiierten Übergang ablehnen.