다음을 통해 공유


디바이스 전원 관리

ACPI 6.3 사양은 디바이스에 대한 디바이스 전원 정보를 지정하는 네임스페이스 개체 집합을 정의합니다. 예를 들어 하나의 개체 집합은 지원되는 각 디바이스 전원 상태에서 디바이스에 필요한 전원 리소스를 지정할 수 있습니다. 또 다른 개체 유형은 하드웨어 이벤트에 대한 응답으로 디바이스가 저전력 상태에서 절전 모드 해제하는 기능을 설명할 수 있습니다.

Windows의 디바이스 전원 관리

시스템이 실행되는 동안(즉, 시스템이 ACPI 정의 작업 상태인 S0) 개별 디바이스는 작업에 따라 디바이스 전원 상태 간에 전환하여 전원을 절약할 수 있습니다. 기존 PC 시스템에서는 ACPI 정의 절전 상태(S1~S4)도 전원을 절약하는 데 사용되지만, 연결이 끊긴 대기 시간이 긴 절전 상태는 Windows SoC 플랫폼에서 사용되지 않습니다. 따라서 배터리 수명은 플랫폼이 런타임 디바이스 전원 관리를 구현하는 방법에 따라 크게 좌우됩니다.

SoC에 통합된 디바이스는 PoFx(Windows Power Framework)를 통해 전원을 관리할 수 있습니다. 이러한 프레임워크 통합 디바이스는 SoC의 전원 및 클록 컨트롤의 세부 사항을 알고 있는 SoC 특정 마이크로PEP(전원 엔진 플러그 인)를 통해 PoFx에서 전원을 관리합니다. PoFx에 대한 자세한 내용은 Power Management Framework 개요을 참조하세요.

SoC에 통합되지 않은 주변 장치의 경우 Windows는 ACPI 디바이스 전원 관리를 사용합니다. 이러한 ACPI 관리 디바이스의 경우 디바이스 드라이버 스택의 전원 정책 소유자(일반적으로 함수 또는 클래스 드라이버)는 디바이스 전원 상태 전환 결정을 내리고 Windows ACPI 드라이버 Acpi.sysASL 제어 메서드를 호출하여 필요한 플랫폼별 전원 제어를 적용합니다.

일부 디바이스 스택은 ACPI 디바이스 전원 관리를 단독으로 사용하거나 On-SoC 디바이스 전원 관리를 위한 마이크로PEP와 함께 사용할 수 있습니다.

ACPI의 디바이스 전원 관리에 설명된 대로 Windows는 ACPI 5.0 사양에 정의된 D3cold 전원 관리 기능을 지원합니다. 이 지원을 사용하면 디바이스, 플랫폼 및 드라이버가 런타임 유휴 기간 동안 디바이스 전원을 완전히 제거하도록 옵트인할 수 있습니다. 이 기능은 배터리 수명을 크게 향상시킬 수 있습니다. 그러나 D0으로 성공적으로 돌아가려면 영향을 받는 모든 구성 요소에서 전원 제거를 지원해야 합니다. 이러한 이유로 드라이버(버스 및 함수)와 플랫폼 자체는 이를 지원함을 나타내야 합니다. D3cold 드라이버 옵트인에 대한 자세한 내용은 드라이버에서 D3cold 지원을 참조하세요.

ACPI의 디바이스 전원 관리

네임스페이스 디바이스는 최대 4개의 디바이스 전원 상태, 번호가 매겨진 D0(전체 함수 또는 "켜기")에서 D3(함수 없음 또는 "꺼져")를 지원합니다. 각 상태는 전력 요구 사항이 다를 수 있으며, 번호가 높은 상태는 번호가 낮은 상태보다 전력 소비가 적습니다. 또한 D3(off) 상태에는 D3hot 및 D3cold의 두 가지 하위 상태가 있습니다. D3hot 하위 상태를 사용하려면 디바이스가 버스별 소프트웨어 명령에 응답할 수 있도록 부모 버스에서 계속 액세스할 수 있어야 합니다. 이 요구 사항과 이를 충족하는 데 사용되는 전원은 D3cold에서 제거됩니다. 마지막으로, 디바이스는 하드웨어 이벤트에 반응하여 저전력 상태에서 스스로 깨어나고, 필요하다면 플랫폼을 유휴 상태에서 활동 상태로 전환하도록 준비할 수 있습니다.

플랫폼은 플랫폼 전체 OSPM 기능 메서드를 사용하여 요청할 때 "_PR3 지원" 기능(비트 2)의 OS 제어를 부여하여 D3cold에 대한 지원을 나타냅니다. 자세한 내용은 ACPI 5.0 사양에서 섹션 6.2.10.2, "플랫폼 전체 OSPM 기능"을 참조하세요.

전원 관리 디바이스는 자식 개체를 사용하여 운영 체제에 대한 전원 기능을 설명합니다. 다음 섹션에서는 이러한 기능 및 개체에 대해 설명합니다.

전원 리소스 및 상태

디바이스는 해당 상태에 있기 위해 필요한 전원 리소스 집합을 나열하여 전원 상태에 대한 지원을 선언합니다. ACPI 전원 리소스는 디바이스에 전원을 공급하는 전압 레일과 이를 구동하는 클록 신호를 나타냅니다. 이러한 리소스는 네임스페이스의 루트에서 선언됩니다. 각 전원 리소스에는 제어되는 _ON 및 _OFF 메서드와 상태를 보고하는 _STA 메서드가 있습니다. 자세한 내용은 ACPI 5.0 사양의 섹션 7.1, "Power Resource 개체 선언"을 참조하세요.

Acpi.sysWindows ACPI 드라이버는 리소스를 공유하는 디바이스 간의 전원 종속성을 모니터링하고, 이러한 디바이스가 전원 상태 간에 전환될 때 디바이스에 실제로 필요한 전원 리소스만 특정 시간에 켜지도록 합니다.

전원 리소스 요구 사항(_PRx)

지원되는 각 디바이스 전원 상태에 대해 x = 0, 1, 2 또는 3인 _PRx(Power Resource Requirements) 개체가 있습니다. 디바이스 드라이버가 새 전원 상태로 전환하기로 결정하면 Acpi.sys 새 상태에 필요한 전원 리소스가 켜져 있고 사용 중인 리소스가 더 이상 꺼지지 않도록 합니다.

지원되는 디바이스 상태 사용할 리소스 요구 사항 개체 요구 사항 개체에 포함할 리소스
D0(필수) _PR0 디바이스의 전체 기능에 필요한 모든 전원 및 시계입니다.
D1 _PR1 이 상태의 클래스에서 정의한 축소된 기능에 필요한 전원 또는 클록입니다.
D2 _PR2 이 상태의 클래스 정의 축소 기능에 필요한 전원 또는 클록입니다.
D3hot(필수) _PR3 디바이스가 버스에 표시되고 버스별 명령에 응답하는 데 필요한 전원 또는 시계만 필요합니다.

특정 플랫폼이 D3cold 기능을 지원하고 디바이스의 디바이스 드라이버가 D3cold에 옵트인하는 경우 디바이스의 _PR3 전원 리소스는 다른 디바이스에서 사용되지 않는 경우 D3Cold로 전환한 후 잠시 꺼집니다.

D3cold를 지원하는 디바이스의 전원 리소스 요구 사항에 대한 자세한 내용은 D3cold에 대한 펌웨어 요구 사항을 참조하세요.

디바이스 전원 상태(_PSx)

지원되는 각 디바이스 전원 상태 Dx에 대해 x = 0, 1, 2 또는 3인 _PSx Power State 메서드가 있습니다. 이 메서드는 선택 사항이지만 있는 경우 상태의 전원 리소스가 꺼지기 전과 상태의 전원 리소스가 켜진 후에 호출됩니다. _PSx 전원 주기에 필요한 플랫폼별 작업을 수행하기 위한 것입니다. _PSx 함수 드라이버에 할당된 디바이스 레지스터에 액세스하거나, 버스 드라이버에 할당된 버스 표준 레지스터에 액세스하거나, Acpi.sys위해 예약된 작업인 전원 리소스를 켜거나 끄면 안 됩니다.

유휴 상태 해제 기능

전원 관리 장치는 저전력 상태에서도 이벤트를 감지할 수 있으며, 이를 처리하기 위해 플랫폼이 절전 모드에서 깨어나도록 할 수 있습니다. 이 기능을 사용하려면 Windows에 플랫폼과 디바이스의 기능에 대한 정보가 필요합니다.

Sx 디바이스 절전 모드 해제 상태(_SxW)

지정된 플랫폼에는 절전 모드 해제 기능을 지원하는 디바이스 상태와 절전 모드 해제 이벤트에 응답할 수 있는 시스템 상태 간에 특정 매핑이 있습니다. ACPI는 이 정보를 운영 체제에 제공하는 _SxW 개체를 정의합니다. 지원되는 각 시스템 전원 상태인 Sx에 대한 SxW 개체가 있습니다. SoC 플랫폼은 항상 S0에 있으므로 여기서 관심 있는 유일한 개체는 _S0W. 이 개체는 디바이스의 절전 신호에 대한 응답으로 저전력 유휴 상태에서 절전 모드 해제하는 플랫폼의 기능을 지정합니다. 이 개체는 Windows에서 시스템 저전력 유휴 상태 동안 디바이스의 대상 D 상태를 결정하는 데 사용됩니다. _S0W 대한 자세한 내용은 ACPI 5.0 사양에서 섹션 7.2.20, "_S0W(S0 디바이스 절전 모드 해제 상태)"를 참조하세요.

대부분의 SoC 플랫폼의 경우 디바이스는 유휴 상태일 때 적극적으로 D3 상태로 전원을 관리하며, 디바이스가 이 상태에 있는 동안 시스템은 저전력 유휴 상태에서 깨어날 수 있습니다. 이러한 시스템의 경우 _S0W 개체는 3(D3cold도 지원하는 경우 4)을 반환합니다.

_S0W(4)는 디바이스가 웨이크 기능을 지원하는지 여부에 관계없이 D3Cold에 대한 요구 사항입니다.

모든 D 상태는 최저 전원 절전 모드 해제 가능 상태로 지정될 수 있으며 일부 디바이스 클래스 또는 버스는 다른 값을 사용합니다. 예를 들어 SDIO 및 USB 연결 디바이스는 이 상태에 대해 상태 D2를 사용합니다.

Windows 7에서 Windows 8 또는 Windows 8.1로 디바이스 드라이버를 쉽게 마이그레이션하려면 디바이스가 _S4W 제공해야 할 수도 있습니다. 현재 이 요구 사항이 있는 유일한 디바이스 클래스는 네트워킹(Ndis.sys)입니다.

깨우기 가능 인터럽트(_CRS)

디바이스에 대한 리소스 설명은 인터럽트를 "절전 모드 해제 가능"(ExclusiveAndWake 또는 SharedAndWake)으로 표시하여 디바이스가 절전 모드 해제 이벤트를 감지하고 신호를 보낼 수 있음을 나타냅니다. Windows 및 디바이스 드라이버는 디바이스가 저전력 상태로 전환될 때 사용하도록 설정되도록 이러한 인터럽트를 특별하게 처리합니다. 자세한 내용은 ACPI 5.0 사양의 섹션 6.4.3.6, "확장 인터럽트 설명자" 및 섹션 6.4.3.8.1 , "GPIO 연결 설명자"의 인터럽트 및 GpioInt 리소스 설명자에 대한 설명을 참조하세요.

절전 모드에서 깨우기 활성화

사용자 시나리오 또는 시스템 정책에 따라 절전 모드 해제가 가능한 디바이스가 실제로 절전 모드 해제를 위해 활성화될 수도 있고, 활성화되지 않을 수도 있습니다. 따라서 절전 모드 해제 가능 인터럽트는 디바이스가 유휴 상태일 때 활성화되거나 활성화되지 않을 수 있습니다. Windows는 인터럽트를 활성화하는 것 외에도 장치에서 웨이크 기능을 활성화하기 위해 다음 메커니즘을 사용합니다.

디바이스 절전 모드 해제(_DSW)

ACPI는 운영 체제가 ACPI 플랫폼 펌웨어에 다음 절전 모드 또는 저전력 유휴 기간에 대해 알리는 방법으로 _DSW 개체를 정의합니다. 이 개체는 선택 사항이며, 플랫폼에 플랫폼별 웨이크업 하드웨어를 미리 구성해야 하는 경우에만 사용됩니다. 디바이스의 대상 D 상태와 시스템의 대상 S 상태가 모두 제공됩니다. D-state 및 S-state 조합은 항상 디바이스의 _SxW 개체에서 제공하는 정보를 준수합니다.

시스템 깨우기를 위한 전원 리소스(_PRW)

경우에 따라 장치를 깨우기 위해 추가 전원 리소스를 켜야 할 수도 있습니다. 이 경우 디바이스는 _PRW 개체를 제공하여 추가 전원 리소스를 나열할 수 있습니다. windows ACPI 드라이버(Acpi.sys)는 이러한 전원 리소스를 정상적으로 관리하여 디바이스(즉, 절전 모드 해제 가능 디바이스)에서 필요할 때 전원이 켜져 있는지 확인하고, 그렇지 않으면 꺼집니다.

_PRW는 전통적인 (전체 ACPI 하드웨어) PC 플랫폼의 깨우기 기능을 정의하는 데도 사용됩니다.