Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird zunächst die anfängliche Einrichtung beschrieben, die von der Software durchgeführt wird, um U1- und U2-Übergänge zu ermöglichen, und anschließend wird beschrieben, wie diese Übergänge in der Hardware auftreten.
Ersteinrichtung per 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.
Software tauscht während des Enumerationsprozesses U1- oder U2-Ausgangslatenzinformationen mit dem Gerät aus. Als ersten Teil dieses Austauschs werden die gerätespezifischen Latenzen vom Gerät in den Feldern bU1DevExitLat und wU2DevExitLat der SuperSpeed-USB-Gerätefunktion (definiert in Abschnitt 9.6.2.2 der USB 3.0-Spezifikation) ausgefüllt. Als zweiter Teil des Austauschs informiert der Host das Gerät über die Gesamtaustrittslatenz für das Gerät, indem er eine SET_SEL-Steuerungsübertragung gemäß Abschnitt 9.4.12 der USB 3.0-Spezifikation sendet. Die Latenzinformationen enthalten die Latenzen, die Upstream Links und Controllern zugeordnet sind.
Für den DS-Port, an den das Gerät angefügt 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 mit der Wiedereinführung des Geräts von U1 oder U2 zu U0 verbunden sind. In der folgenden Tabelle werden die Timeoutwerte beschrieben.
Tabelle 1. PORT_U1_TIMEOUT- und PORT_U2_TIMEOUT werte
Wert BESCHREIBUNG 01H-FEH DS-Port muss nach einer Phase 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 ausstehender Datenverkehr vorliegt. FFH DS-Port darf keine Übergänge initiieren, sondern muss Übergänge akzeptieren, die vom Linkpartner initiiert werden, es sei denn, es liegt kein ausstehender Datenverkehr vor. 0 DS-Port darf keine Übergänge initiieren und keine Vom Linkpartner initiierten Übergänge akzeptieren. Wenn der PORT_U2_TIMEOUT Wert zwischen 01H-FEH liegt, gibt es einen zusätzlichen Schritt, der als Ergebnis von Schritt 2 in der Hardware auftritt. Der DS-Port informiert seinen Linkpartner über diesen Wert. Die Bedeutung dieses Schritts wird unter "Direkter Übergang von U1 zu U2" beschrieben.
Für jedes Gerät oder jeden Hub konfiguriert die Software zwei Werte: U1_ENABLE und U2_ENABLE, indem SET_FEATURE -Steuerungsübertragungen (U1_ENABLE/U2_ENABLE) gesendet werden. In der folgenden Tabelle werden diese Werte beschrieben.
Tabelle 2: U1_ENABLE- und U2_ENABLE werte
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. Disabled 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 durch die Software wechselt die Hardware ohne weiteres Eingreifen der Software autonom zu U1 und u2.
Ein Link befindet sich im Betriebszustand (U0), solange er Pakete aktiv überträgt. Die Verbindung 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 in diesen U-Zustand. Wenn der Übergang abgelehnt wird, verbleibt der Link in U0.
Vom DS-Port initiierte Übergänge
Ein DS-Port implementiert einen Timermechanismus, der die Inaktivität auf dem Port nachverfolgt. Der Timer wird immer dann 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 zum ersten Mal in U0 eintritt. Der Timerwert basiert auf dem U1-Timeoutwert (oder U2), der von der Software programmiert wurde. 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 so programmiert hat, dass sowohl U1- als auch U2-Übergänge initiiert werden, 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 unter Direkter Übergang von U1 zu U2 beschrieben.
Wenn sich ein Link in U1 oder U2 befindet, kann ein DS-Port den Port jederzeit wieder in U0 bringen, wenn er Datenverkehr für das an den Port angeschlossene Gerät empfängt.
Vom Gerät (US-Port) initiierte Übergänge
Ein Gerät kann einen Übergang von U0 zu U1 oder U0 zu U2 initiieren, solange die Funktion durch die Software aktiviert ist. Wenn das Gerät eine Verbindung zu U1 übergibt, kann der Link basierend auf dem U2-Timer des DS-Ports direkt 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 seine Exitlatenz und Leistungsanforderungen berücksichtigen. Um dem Gerät zu helfen, fundierte Entscheidungen darüber zu treffen, wie aggressiv es die Übergänge initiieren kann, stellt die Software auch verschiedene Werte für die 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 pakete an den Host senden wird oder ob er ein Paket vom Host erwartet.
Vorteile von geräteinitiiertem LPM
Die Timerwerte, die von der Software für DS-Ports festgelegt werden, basieren auf allgemeinen Heuristiken. Bei der Auswahl dieser Zeitgeberwerte stellt die Software sicher, dass die Geräteleistung nicht beeinträchtigt wird. Um die Leistung des Geräts zu erhalten, kann die Software nicht zu kleine Werte auswählen. Da von DS-Ports initiierte Übergänge auf den Timern basieren und den genauen Zustand des Geräts nicht berücksichtigen, kann dieser Mechanismus nicht alle möglichen Möglichkeiten nutzen, das Gerät in den U1- oder U2-Zustand zu senden.
Das Gerät hingegen verfügt über genaue Kenntnisse über seine Eigenschaften und den aktuellen Zustand. Daher kann es eine intelligente Schätzung 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 für eine Weile kein Datenverkehr mehr vorhanden ist. In diesem Fall kann das Gerät sofort einen Übergang zu U1 oder U2 initiieren. Kurz vor dem Senden der ERDY-Benachrichtigung kann das Gerät den Link zurück zu U0 bringen, um das Senden dieser Daten vorzubereiten. Ausführliche Informationen zu diesem Vorgang finden Sie im Abschnitt C.3.1 der USB 3.0-Spezifikation.
Direkter Übergang von U1 zu U2
Wenn sich der Link in U1 befindet, kann der Link direkt zu U2 wechseln, ohne dazwischen U0 einzugeben. Dies kann unabhängig davon auftreten, welcher Linkpartner den Übergang zu U1 initiiert hat. Der Übergang von U1 zu U2 kann jedoch nur auftreten, wenn das U2-Timeout auf dem DS-Port der Verknüpfung auf einen Wert zwischen 01H-FEH festgelegt ist.
Der Abschnitt "Anfängliche Einrichtung durch Software" beschreibt einen zusätzlichen Schritt, mit dem der DS-Port den Timeoutwert an den Linkpartner übermitteln kann. Nachdem der Link in U1 eingegeben wurde, starten beide Linkpartner einen Timer mit dem Timeoutwert, der gemäß dem U2-Timeoutwert des DS-Ports festgelegt ist. Wenn der Timer aufgrund des Datenverkehrs nicht zurückgesetzt wird und abläuft, wechseln beide Linkpartner ohne explizite Kommunikation 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 U3-Übergang erst nach einer Zeit der Inaktivität initiiert wird, ist es sehr wahrscheinlich, dass sich der Link vor dem Übergang in U1 oder U2 (anstelle von 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 Übergang der Verbindung zu U0 und dann für den Übergang zu U3 verantwortlich.
U1- oder U2-Übergänge für Hubs
Die USB 3.0-Spezifikation enthält spezifische Richtlinien für Hubs darüber, wann U-Zustandsübergänge an seinem US-Port initiiert werden sollen. Wenn sich alle DS-Ports im Verbindungszustand U1 oder niedriger befinden, sollte der Hub einen U1-Übergang an seinem US-Port initiieren, sofern die Software den Hub aktiviert hat, um den U1-Übergang zu initiieren.
Wenn sich alle DS-Ports im Verbindungszustand U2 oder niedriger befinden, sollte der Hub einen U2-Übergang an seinem US-Port initiieren, vorausgesetzt, dass die Software den Hub aktiviert hat, um den U2-Übergang zu initiieren.
Hinweis
Wenn kein Gerät an einen DS-Port angefügt 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 anfangs in U1 oder niedriger befanden und sie zu U2 oder niedriger wechseln, sollte der Hub den US-Port von U1 auf U2 umstellen. Da dieser Übergang nicht auf dem U2-Aktivitätszeitgeber basiert, muss der Hub seinen US-Port in U0 bringen und ihn 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 Busauslastung zu minimieren.
Wenn ein Host eine Übertragungsanforderung an ein Gerät sendet, dessen Upstream Link sich in U1 oder U2 befindet, kann der Host am Ende Busbandbreite verschwenden, indem er wartet, bis der Link wieder zu U0 zurückkommt, und dann darauf, dass das Gerät reagiert. Um diese Wartezeit zu vermeiden, antwortet der übergeordnete Hub im Namen des Geräts, indem er einen verzögerten Paketheader zurück an den Host sendet. 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 für den 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 besteht darin, dass das Gerät nach dem Senden von ERDY dafür verantwortlich ist, den Link in U0 beizubehalten, bis der Host eine Antwort an ERDY sendet oder bis die Zeit des tERDYTimeout (500 Millisekunden) verstrichen ist. Während dieser Zeit darf das Gerät keinen U1- oder U2-Übergang initiieren und sollte auch jeden vom Linkpartner initiierten Übergang ablehnen.