Share via


USB4 の電源管理の要件

USB4 ホスト ルーターは、USB4 スリープ、そしてスリープ状態への移行と終了を確実にサポートする必要があります。 トンネリングされたプロトコルは、USB4 スリープ状態への移行時またはその終了時に、それぞれのトンネルに電気的信号によって切断を通知してはいけません。 また、USB4 ドメインがスリープから復帰した後は、USB4 ホスト ルーターが適切なトンネル上でプロトコル ウェイクを再生する必要があります。

トンネリングされたデバイス プロトコル (PCIe、USB 3.x、Display) は、関連付けられた USB4 ホスト ルーター デバイスとの電源関係を確立します。USB4 ホスト ルーター デバイスがあることで、接続マネージャーは、トンネリングされたデバイスがアイドル状態のときにスリープ状態への移行を開始できます。 Windows 11 以降の PCIe と USB 3.x のデバイス ドライバーは、USB4 ACPI 要件で規定された ACPI ベース (_DSD) のポート マッピングを利用して、関連付けられている USB4 ホスト ルーター デバイスを識別し、電源管理を行うことができます。

また、Windows 11 のグラフィックス スタックは、USB4 ホスト ルーター デバイスを識別し、その電源管理を行うように更新されています。 そのためには、「グラフィックス ドライバーの要件」で説明されているように、IHV から提供されるグラフィックス ドライバーのサポートが必要です。 USB4 接続マネージャーは、ホスト ルーターのデバイス ID を ACPI から取得して、DP-IN アダプター構成領域の ADP_DP_CS_2.CM_ID に書き込みます。 ACPI の要件に記載されているように、ホスト インターフェイス インスタンスは必ず、末尾が 3 ビットの数字 (0-7) になっている必要があります。

グラフィックス ドライバーの要件

正しい電源管理の関連付けを確保するには、モニターが接続されている USB4 DP-IN アダプターをグラフィックス スタックが識別できなければなりません。 これは USB4 ドメインが、グラフィックス スタックから読み取ることのできる USB4 DP-IN アダプターを介して DPCD レジスタを設定することによって実現されます。 これらの要件は DisplayPort™ 2.0 仕様 (正誤表) で規定されています。

DPCD フィールド名 DPCD フィールド アドレス Note
USB4_Driver_ID E000Fh [3:0] システム内のホスト ルーターを一意に識別します。 これは、USB4 接続マネージャーが、ホスト ルーターのデバイス ID を ACPI から取得して、DP-IN アダプター構成領域の ADP_DP_CS_2.CM_ID に書き込むことによって設定されます。
USB4_ROUTER_TOPOLOGY_ID E001Bh - E001Fh ホスト ルーター ドメインの USB4 デバイスを一意に識別します。
DP_IN_Adapter_Number E000Eh [5:0] USB4 デバイス上の DP-IN アダプターを一意に識別します。
DP Tunneling Support E000Dh [0] 値 1 は USB4 トンネリングを示します。

グラフィックス ドライバーの要件は次のとおりです。

  1. WDDM 3.0 以上のドライバー
  2. ドライバーは、USB4 のサポートを示す新しいアダプター キャップを公開します
  3. ドライバーが公開するすべての静的 Video Present Network (VidPN) ターゲットは、電源コンポーネントとしてレポートされる必要があります
  4. 同じ静的ターゲットに接続された各 USB4 動的ターゲットは、同じホスト ルーターに接続されている必要があります。 つまり、USB4_Driver_ID の値が同じであることが必要です。 USB4 DisplayPort モニターをディスプレイ専用 WDDM ドライバーや間接ディスプレイ WDDM ドライバーに接続することはサポートされません。

USB4 ドライバーの機能

起動時にドライバーから照会される DXGK_DISPLAY_DRIVERCAPS_EXTENSION 構造体には、SupportUsb4Targets 機能が追加されています。 この値を設定するのは、WDDM 3.0 ドライバーでのみ有効であり、上に挙げたすべての要件をドライバーが満たしている場合のみとしてください。

USB4 モニターの DPCD 値をレポートする

WDDM 3.0 には、Usb4DisplayPortMonitor というフラグを保持する新しい DXGK_CONNECTION_CHANGE.MonitorConnect.MonitorConnectFlags フィールドがあります。ドライバーは、このフラグを使用して、USB4 に接続されたモニターであることを示します。

typedef struct _DXGK_CONNECTION_MONITOR_CONNECT_FLAGS
{
    union
    {
        struct
        {
            UINT    Usb4DisplayPortMonitor  : 1;
            UINT    Reserved                :31;
        };
        UINT Value;
    };
} DXGK_CONNECTION_MONITOR_CONNECT_FLAGS;

typedef struct _DXGK_CONNECTION_CHANGE {
    ULONGLONG                       ConnectionChangeId;
    D3DDDI_VIDEO_PRESENT_TARGET_ID  TargetId            :24;
    DXGK_CONNECTION_STATUS          ConnectionStatus    : 4;
    UINT                            Reserved            : 4;
    union {
        struct {
            D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY LinkTargetType;
            DXGK_CONNECTION_MONITOR_CONNECT_FLAGS MonitorConnectFlags;
        } MonitorConnect;
        struct {
            D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY BaseTargetType;
            D3DDDI_VIDEO_PRESENT_TARGET_ID  NewTargetId;
        } TargetConnect;
        struct {
            D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY BaseTargetType;
            D3DDDI_VIDEO_PRESENT_TARGET_ID  NewTargetId;
        } TargetJoin;
    };
} DXGK_CONNECTION_CHANGE, *PDXGK_CONNECTION_CHANGE;

typedef struct _DXGK_CONNECTION_USB4_INFO
{
    UINT Dpcd_DP_IN_Adapter_Number;
    UINT Dpcd_USB4_Driver_ID;
    BYTE Dpcd_USB4_ROUTER_TOPOLOGY_ID[5];
} DXGK_CONNECTION_USB4_INFO, *PDXGK_CONNECTION_USB4_INFO;

typedef struct _DXGKARG_QUERYCONNECTIONCHANGE
{
    DXGK_CONNECTION_CHANGE     ConnectionChange; // out: Buffer into which the oldest available change is copied by driver
    PDXGK_CONNECTION_USB4_INFO pUsb4MonitorInfo; // inout: Pointer to an operating system allocated structure driver should
                                                 //        complete if MonitorConnect.Flags.Usb4DisplayPortMonitor was set
} DXGKARG_QUERYCONNECTIONCHANGE;

DisplayPort™ モニターが特定の Video Present Network (VidPN) ターゲットに接続され、USB4 DP-IN アダプターに接続されたとき、ドライバーは次のことを行う必要があります。

  1. DXGK_CONNECTION_CHANGE.MonitorConnect.Flags.Usb4DisplayPortMonitor を設定します
  2. DXGKARG_QUERYCONNECTIONCHANGE.pUsb4MonitorInfo の各フィールドを設定します

すべての静的 VidPN ターゲットが PoFx コンポーネントとしてレポートされる

グラフィックスと USB スタックとの間で適切な電源管理を有効にするには、DxgkDdiQueryAdapterInfo(DXGKQAITYPE_NUMPOWERCOMPONENTS)DxgkDdiQueryAdapterInfo(DXGKQAITYPE_POWERCOMPONENTINFO) を通じて、すべての静的 VidPN ターゲットが電源管理フレームワーク (PoFx) コンポーネントとしてレポートされることが必要です。

すべての動的ターゲットが同じ静的 VidPN ターゲットから作成されている

動的 VidPN ターゲットに接続された USB4 モニターがサポートされます。 ただし、静的 VidPN ターゲットに接続されるすべての USB4 動的 VidPN ターゲットは、USB4_Driver_ID values が同じでなければなりません。つまり、それらのターゲットは、同じ USB4 ホスト ルーターに接続されている必要があります。

CLx の低電力状態

電力を節約し、熱負荷を軽減するために、接続マネージャーは、ハードウェアおよび現在トンネリングされているプロトコルでサポートされている場合、最初の深さリンクがCL0とCL1に入るようにします。 そのリンクで低電力状態を有効にするためには、UFP (Upstream Facing Port) と DFP (Downstream Facing Port) が CL0s と CL1 をサポートする必要があります。 その後、TMUの精度要件とリンク上のトンネリングされたアクティビティが許す場合、リンクは電力を節約するためにCL0またはCL1に入る可能性があります。

関連項目

"Thunderbolt は Intel Corporation またはその子会社の商標です。"

"「USB4™」は USB Implementers Forum の商標であり、USB4™ 仕様に基づいた製品またはこれに準拠した製品での使用のみが認められています。"