裝置低電源狀態

裝置電源狀態 D1、D2 和 D3 是裝置低功率狀態。 從 Windows 8 開始,D3 會分成兩個子狀態 D3hotD3cold

D1 和 D2 是中低功率狀態。 許多裝置類別不會定義這些狀態。 所有裝置都必須定義 D3hot。

下列各節說明 D1、D2 和 D3:

裝置電源狀態 D1

裝置電源狀態 D1 是最高電源的裝置低功率狀態。 其具有下列特性:

功耗
耗用量小於 D0 狀態,但大於或等於 D2 狀態。 通常,D1 是時鐘閘道狀態,裝置會接收足夠的電源來保留裝置的硬體內容。 一般而言,支援 D1 的總線或裝置類別規格會更詳細地描述此狀態。

裝置內容
一般而言,硬體會保留裝置內容,且驅動程式不需要還原。 支援 D1 的總線或裝置類別規格通常會提供保留此內容的詳細需求。

裝置驅動程序行為
驅動程式必須儲存和還原或重新初始化硬體遺失的任何內容。 不過,一般而言,裝置在進入此狀態時會遺失很少的內容。

還原時間
一般而言,將裝置從 D1 還原到 D0 所需的時間應該小於從 D2 還原到 D0。

喚醒功能
D1 中的裝置或許可以要求喚醒。 若要提供此狀態是否可以支持喚醒訊號的信息,總線驅動程式會使用 DEVICE_CAPABILITIES 結構,或從 Windows 8 開始, GUID_D3COLD_SUPPORT_INTERFACE 驅動程式介面。

一般而言,使用 D1 的裝置會這麼做,因為從此狀態繼續不需要驅動程式來還原裝置的完整硬體內容。 若要將使用者對延遲的感知降到最低,將裝置從 D1 還原至 D0 應該會產生最少的延遲。 將狀態轉換的延遲降到最低比降低耗電量更重要。

裝置電源狀態 D2

D2 是具有下列特性的中繼裝置低功率狀態:

功耗
耗用量小於或等於 D1 狀態的使用量。

裝置內容
一般而言,大部分的裝置內容都會由硬體遺失。 此狀態經常會保留用來發出喚醒事件訊號的內容部分。 支援 D2 的總線或裝置類別規格通常提供保留此內容的詳細需求。

裝置驅動程序行為
設備驅動器必須儲存和還原或重新初始化硬體遺失的任何內容。 當裝置進入 D2 時,一般裝置會遺失大部分的內容。

還原時間
將裝置從 D2 還原至 D0 至少需要將裝置從 D1 還原至 D0 的時間。 具有大型框架緩衝區的圖形適配卡是裝置的範例,該裝置在從 D2 轉換至 D0 之後需要還原大量的硬體內容。 針對這類裝置,從 D2 的還原時間可能遠大於 D1 的還原時間。

喚醒功能
D2 中的裝置或許可以要求喚醒。 若要提供此狀態是否可以支持喚醒訊號的信息,總線驅動程式會使用 DEVICE_CAPABILITIES 結構,或從 Windows 8 開始, GUID_D3COLD_SUPPORT_INTERFACE 驅動程式介面。

通常,支援 D2 的驅動程式會這麼做,因為其裝置無法支援從 D3 喚醒。 針對這些裝置,D2 狀態的耗電量會降至裝置可復原以回應喚醒訊號的最低層級。 相較於實作的 D1 狀態可減少使用者察覺的延遲,實作 D2 狀態的目標是節省電力。 因此,從 D2 到 D0 的還原時間通常超過從 D1 到 D0 的還原時間。 例如,在 D2 狀態中,總線電源降低可能會導致裝置關閉部分功能,因此需要額外的時間重新啟動和還原裝置。

許多裝置類別不會定義此狀態。

裝置電源狀態 D3

D3 是最低電源的裝置低功率狀態。 所有裝置都必須支持此狀態。

從 Windows 8 開始,操作系統會將 D3 細分為兩個不同的和不同的子狀態 D3hot 和 D3cold。 舊版 Windows 會定義 D3 狀態,但不會定義 D3hot 和 D3cold 子狀態。 不過,PCI 總線電源管理介面規格的所有版本都會定義個別的 D3hot 和 D3cold 子狀態,以及進階設定和 Power Interface Specification 的第 4 版和更新版本會定義 D3hot 和 D3cold 子狀態。

雖然 Windows 8 之前的 Windows 版本並未明確定義 D3hot 和 D3cold D3 的子狀態,但這些子狀態會隱含存在於這些舊版 Windows 中。 如果裝置明確處於 D3 狀態,且計算機處於 S0 系統電源狀態,則裝置會隱含在 D3hot 子狀態中。 在 D3hot 中,裝置會連線到電源(雖然裝置可能設定為繪製低電流),而且可以偵測到總線上的裝置是否存在。 如果裝置明確處於 D3 狀態,則裝置會隱含地位於 D3 子狀態中,而且計算機處於低功率 Sx 狀態(S0 以外的狀態)。 在這個隱含的 D3cold 子狀態中,裝置可能會收到流點電流,但裝置和計算機會有效關閉,直到發生喚醒事件為止。

從 Windows 8 開始,裝置可以在電腦保持 S0 狀態時,輸入並離開 D3cold 子狀態。 若要支援這個新行為,必須明確將 D3hot 和 D3cold 定義為不同的 D3 子狀態。

D3hot 是裝置可以直接從 D0 輸入的 D3 子狀態。 裝置會在設備驅動器的軟體控制下,從 D0 轉換為 D3hot。 在 D3hot 中,裝置可以在連線的總線上偵測到。 當裝置位於 D3hot 子狀態時,總線必須維持在 D0 狀態。 從 D3hot,裝置可以返回 D0 或輸入 D3cold。 D3cold 只能從 D3hot 輸入。

D3cold 是 D3 的子狀態,裝置實際連接到總線,但無法偵測到總線上的裝置存在(也就是,直到裝置再次開啟為止)。 在 D3cold 中,下列其中一個或兩者都成立:

  • 裝置所連線的總線處於低功率狀態。
  • 裝置處於低功率狀態,當總線驅動程式嘗試偵測其出現在總線時,裝置不會回應。

從 D3hot 轉換至 D3cold 時,不會與設備驅動器互動。 相反地,設備驅動器會指出它是否準備好進行 D3cold 轉換,再起始從 D0 到 D3hot 的轉換。 之後,視所有條件是否都適合啟用此轉換而定,從 D3hot 轉換到 D3cold 可能會發生。

有兩種情況是,使用相同電源的所有裝置都位於 D3hot 中,並已準備好進行 D3cold 轉換。 當這些裝置的最後一個進入 D3hot 時,父總線驅動程式或 ACPI 篩選驅動程式會關閉這些裝置的電源,也就是說裝置進入 D3cold。

在 D3cold 中的裝置只能輸入 D0 離開此子狀態。 沒有從 D3cold 到 D3hot 的直接轉換。

當計算機處於 S0 狀態且裝置進入 D3hot 子狀態時,裝置驅動程式通常無法事先判斷裝置的下一次轉換是否為 D3cold 或 D0。 其中一個例外狀況是計算機準備離開 S0 狀態時。 在此情況下,下一個轉換是 D3cold。

下列各節說明 D3hot 和 D3cold:

如需詳細資訊,請參閱 在驅動程序中支援 D3cold。

D3hot 子ate

D3hot 具有下列特性:

電源耗用量 大部分是從裝置中移除,但不是從計算機整體移除。 處於 S0 狀態的電腦可能會繼續執行此狀態,或可能正準備從 S0 移至低功率 Sx 狀態。

裝置內容
裝置驅動程式僅負責還原裝置內容。 驅動程式必須保留並還原所有裝置內容,或必須在轉換至 D0 狀態時重新初始化裝置。

裝置驅動程序行為
裝置驅動程式只負責還原裝置內容,通常是從最新的工作設定。

還原時間
還原時間總計是任何裝置電源狀態中最高的狀態,但 D3cold 除外,但通常不會大於 D2 的還原時間。

喚醒功能
D3hot 子專案中的裝置可能或可能無法要求喚醒。 若要提供此子狀態是否可以支持喚醒訊號的相關信息,總線驅動程式會使用 DEVICE_CAPABILITIES 結構,或從 Windows 8 開始, GUID_D3COLD_SUPPORT_INTERFACE 驅動程式介面。

在 D3hot 中,只有最少的流點目前可用。 驅動程式和硬體必須準備好,才能沒有電源。 支援 D3hot 的總線規格,通常會提供可用於此狀態之電源的詳細需求。 若要將裝置傳回工作狀態,裝置的驅動程式必須能夠還原並重新初始化裝置,而不需視 BIOS 而定,在可能可供裝置使用的 ROM 選項中執行任何程式代碼。

裝置的所有類別都會定義 D3hot 子專案。

D3cold 子ate

D3cold 具有下列特性:

功耗
電源已從裝置完全移除,而且可能從整個系統中移除。 裝置可以根據裝置的建構,從側帶來源繪製電流。

裝置內容
裝置驅動程式僅負責還原裝置內容。 驅動程式必須保留並還原裝置內容,或必須在轉換至 D0 狀態時重新初始化裝置。

裝置驅動程序行為
裝置驅動程式只負責還原裝置內容,通常是從最新的工作設定。

還原時間
還原時間總計是任何裝置電源狀態中最高的。

喚醒功能
在 D3cold 子狀態中,裝置可能會觸發喚醒訊號來喚醒睡眠計算機。 此功能會在 DEVICE_CAPABILITIES 結構中回報,從 Windows 8 開始,由 GUID_D3COLD_SUPPORT_INTERFACE 驅動程式介面中的 GetIdleWakeInfo 例程所報告。 在訊號喚醒計算機之後,設備驅動器會起始裝置從 D3cold 轉換為 D0 的轉換。 如需詳細資訊,請參閱下列備註。

從 Windows 8 開始,D3cold 子狀態中的裝置可能會觸發喚醒訊號給處於 S0 系統電源狀態的電腦。 GetIdleWakeInfo 例程會報告這項功能。 DEVICE_CAPABILITIES 結構不包含這項功能的相關信息。 喚醒訊號送達之後,設備驅動器會起始裝置從 D3cold 轉換為 D0 的轉換。 在此情況下,當訊號送達時,計算機會喚醒,而且只有裝置需要喚醒。

在許多現有的硬體平臺中,處於低功率 Dx 狀態的裝置可能會觸發喚醒訊號來喚醒睡眠計算機。 不過,如果計算機處於 S0 狀態,相同的裝置可能無法觸發喚醒訊號。 因此,當計算機處於 S0 狀態時,此裝置的驅動程式不得起始裝置從 D0 轉換為低功率 Dx 狀態的轉換。 否則,在裝置離開 D0 之後,電腦離開 S0 狀態之前將無法使用。 只有當計算機準備離開 S0 狀態時,此裝置才應該保留 D0 狀態。

如果處於低功率 Dx 狀態的裝置可以觸發喚醒訊號給處於 S0 狀態的計算機,則當電腦位於 S0 時,裝置不需要保留在 D0 中。 如果計算機位於 S0 中,且裝置處於 D0 但處於閑置狀態,則驅動程式可以武裝裝置來觸發喚醒訊號,然後起始裝置從 D0 轉換為這個低功率 Dx 狀態的轉換。

裝置的某些類別會定義 D3cold 子州。

如需詳細資訊,請參閱 在驅動程序中支援 D3cold。