共用方式為


U1 和 U2 轉換

本主題會先描述軟體用來啟用U1和U2轉換的初始設定,然後描述這些轉換在硬體中的發生方式。

依軟體的初始設定

本主題描述軟體如何列舉裝置。

若要讓 U1 或 U2 轉換發生,軟體會在裝置列舉期間執行下列步驟。

  1. 軟體會在列舉程式期間與裝置交換U1或U2結束延遲資訊。 在此交換的第一個部分,裝置特定延遲會由裝置填入 bU1DevExitLat 和 superSpeed USB 裝置功能的 wU2DevExitLat 字段, (在 USB 3.0 規格的第 9.6.2.2 節中定義) 。 在交換的第二個部分,主機會根據USB 3.0規格的9.4.12節傳送SET_SEL控制傳輸,通知裝置整體結束延遲。 延遲資訊包括與上游連結和控制器相關聯的延遲。

  2. 針對裝置連接的 DS 連接埠,軟體會設定兩個值:PORT_U1_TIMEOUT 和 PORT_U2_TIMEOUT。 在決定這些值時,軟體會將裝置的特性納入考慮 (,例如端點類型) ,以及將裝置從U1或U2帶回U0相關聯的延遲。 下表描述逾時值。

    表 1. PORT_U1_TIMEOUT和PORT_U2_TIMEOUT值

    Description
    01H-FEH DS 埠必須在閑置期間之後起始轉換。 確切的期間衍生自逾時值。 除非有擱置的流量,否則埠必須接受連結夥伴起始的轉換。
    FFH DS 埠不得起始轉換,但必須接受連結夥伴起始的轉換,除非有擱置的流量。
    0 DS 埠不得起始轉換,且不得接受連結夥伴所起始的轉換。
  3. 如果PORT_U2_TIMEOUT值介於 01H-FEH 之間,則會在硬體中因步驟 2 而發生額外的步驟。 DS 埠會通知其連結夥伴該值。 此步驟的重要性說明為「從 U1 直接轉換至 U2」。

  4. 針對每個裝置或中樞,軟體會藉由傳送SET_FEATURE (U1_ENABLE/U2_ENABLE) 控制传输来设定两个值:U1_ENABLE和U2_ENABLE。 下表描述這些值。

    表 2. U1_ENABLE和U2_ENABLE值

    描述
    啟用 如果裝置原則允許,美國埠可以起始轉換,並接受連結夥伴所起始的轉換。
    已停用 美國埠不得起始轉換,但可以接受連結夥伴所起始的轉換。

硬體轉換

本主題描述硬體轉換至U1和U2。

軟體初始設定之後,硬體會自發轉換為U1和u2,而不會進一步介入軟體。

只要連結正在主動傳輸封包,連結就會處於工作狀態 (U0) 。 當未傳輸封包時,鏈接會被視為閑置。 處於閑置狀態,任何連結夥伴都可以起始 U1 或 U2 的轉換。 其他連結合作夥伴可以選擇接受或拒絕轉換。 如果連結夥伴接受轉換,則連結會移至該 U 狀態。 如果拒絕轉換,連結會保留在U0中。

DS 埠起始的轉換

DS 埠會實作定時器機制,以追蹤埠上的無活動。 每當該埠傳送或接收封包時,定時器就會重設。 當軟體程序設計新的逾時值時,定時器也會重設。 如果軟體已將 DS 連接埠程式設計為只起始 U1 或 U2 轉換,DS 埠會在連結第一次進入 U0 時啟動定時器。 定時器值是以軟體程序設計之 U1 (或 U2) 逾時值為基礎。 如果定時器到期時連結在U0中,DS埠會起始U1 (或U2) 轉換。

如果裝置知道轉換可能會影響裝置符合效能或延遲需求的能力,美國埠連結合作夥伴可以選擇拒絕轉換。 例如,如果裝置已傳送 ERDY 通知,而且預期來自主機的傳輸要求,則裝置可能會同時拒絕 U1 或 U2 狀態轉換。

如果軟體已將 DS 連接埠程式設計為同時起始 U1 和 U2 轉換,DS 埠會先根據本節稍早所述的定時器 (起始 U1 轉換) 。 從 U1 轉換到 U2 的本主題說明 從 U1 到 U2 的直接轉換

如果鏈接位於 U1 或 U2 中,DS 連接埠可以在收到連結至埠之裝置的流量時,將埠帶回 U0。

裝置 (美國埠) 起始的轉換

只要軟體啟用此功能,裝置可以選擇起始從U0到U1或U0到U2的轉換。 如果裝置轉換 U1 的連結,則連結可以直接根據 DS 連接埠的 U2 定時器轉換至 U2, (如「從 U1 直接轉換至 U2」中所述。 不過,如果未設定U2定時器,裝置就無法自行起始從U1到U2的直接轉換。 在此情況下,裝置必須先將連結帶回U0,再起始轉換至U2。

在決定何時起始這些轉換時,裝置應該考慮其結束延遲和效能需求。 為了協助裝置做出有關如何積極起始轉換的明智決策,軟體也會提供如本檔中稍早的「軟體初始設定」中所述的各種結束延遲值。

如果連結位於U1或U2中,則美國埠可以隨時將埠帶回U0。 一般而言,美國埠會在知道即將將任何封包傳送至主機時,或預期來自主機的封包時,起始轉換至 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 (,而不是在轉換前) 。

USB 3.0 規格不會定義從 U1 或 U2 到 U3 的直接轉換。 父中樞或控制器負責自動將鏈接轉換為 U0,然後將它轉換為 U3。

中樞的U1或U2轉換

USB 3.0 規格會針對何時在其美國埠上起始U狀態轉換的中樞提供特定指導方針。 如果所有 DS 連接埠都處於連結狀態 U1 或更低狀態,則中樞應該在其美國埠上起始 U1 轉換,假設軟體已啟用中樞起始 U1 轉換。

同樣地,如果所有 DS 埠都處於連結狀態 U2 或更低狀態,中樞應該在其美國埠上起始 U2 轉換,假設軟體已啟用中樞起始 U2 轉換。

注意

如果沒有裝置連接到 DS 埠,則埠的狀態為 Rx.Detect,低於 U2。 因此,如果沒有連結的裝置,中樞應該將其美國埠傳送至U2。 此外,如果所有 DS 埠一開始都處於 U1 或更低版本,而且它們會轉換至 U2 或更低版本,中樞應該將美國埠從 U1 轉換為 U2。 因為該轉換不是以U2活動定時器為基礎,所以中樞必須將它的美國埠帶到U0,然後將它傳送至U2。

封包延遲

USB 3.0 規格描述稱為封包延遲 (的機制,請參閱 C.1.2.2) 一節。 機制可用來將 LPM 對總線使用率的影響降到最低。

如果主機將傳輸要求傳送至上游連結位於 U1 或 U2 的裝置,主機最後可能會等待連結返回 U0,然後讓裝置回應,以浪費總線頻寬。 為了避免等候,父中樞會藉由將延遲的封包標頭傳回主機,代表裝置回應。 主機會以類似NRDY的方式處理延後封包標頭,然後免費起始與其他端點的傳輸。 同時,中樞會在連結上起始 U0 轉換,然後通知裝置延遲封包。 裝置接著會將 ERDY 傳送至主機,以指出裝置現在已準備好進行傳輸。 然後,主機可以重新排程傳送到裝置。

裝置的重要責任是,在傳送 ERDY 之後,裝置會負責將連結保留在 U0 中,直到主機將回應傳送至 ERDY,或直到 tERDYTimeout (500 毫秒) 經過的時間為止。 在這段時間內,裝置不得起始U1或U2轉換,也應該拒絕其連結夥伴所起始的任何轉換。