KR101411807B1 - 컴퓨팅 디바이스들에 대한 동적 저전력 모드 구현 - Google Patents

컴퓨팅 디바이스들에 대한 동적 저전력 모드 구현 Download PDF

Info

Publication number
KR101411807B1
KR101411807B1 KR1020127020979A KR20127020979A KR101411807B1 KR 101411807 B1 KR101411807 B1 KR 101411807B1 KR 1020127020979 A KR1020127020979 A KR 1020127020979A KR 20127020979 A KR20127020979 A KR 20127020979A KR 101411807 B1 KR101411807 B1 KR 101411807B1
Authority
KR
South Korea
Prior art keywords
low power
resource
mode
power
modes
Prior art date
Application number
KR1020127020979A
Other languages
English (en)
Other versions
KR20120117015A (ko
Inventor
노먼 에스 가르가쉬
앤드류 제이 프란츠
브라이언 제이 샐스베리
크리스토퍼 에이 바렛
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20120117015A publication Critical patent/KR20120117015A/ko
Application granted granted Critical
Publication of KR101411807B1 publication Critical patent/KR101411807B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

양태들은 컴퓨팅 디바이스 또는 마이크로프로세서로 하여금, 미사용 중인 리소스들, 허용가능한 시스템 레이턴시들, 동적 동작 조건들 (예컨대, 온도), 예상 아이들 시간, 및 특정의 디바이스의 고유 전기 특성들에 따라서, 선택된 리소스들을 저전력 모드에 둠으로써, 신뢰성있게 계속 동작하면서 최대한의 시스템 전력 절감량들을 제공하는 저전력 모드를 결정할 수 있도록 한다. 양태들은 프로세서가 아이들 상태에 진입할 때에 어느 저전력 모드들이 유효한지 여부를 결정하고, 현재의 디바이스 조건들을 고려하여 예상 전력 절감량들에 의해 유효한 저전력 모드들을 랭크하고, 어느 유효한 저전력 모드가 레이턴시 요건들을 충족하면서 가장 큰 전력 절감량들을 제공하는지를 결정하고, 그리고, 진입할 각각의 리소스에 대한 특정의 저전력 모드를 선택함으로써, 상기 컴퓨팅 디바이스 내 여러 리소스들에 대해 저전력 모드들의 세트로 이루어진 최적의 저전력 구성을 결정하는 메커니즘을 제공한다.

Description

컴퓨팅 디바이스들에 대한 동적 저전력 모드 구현 {DYNAMIC LOW POWER MODE IMPLEMENTATION FOR COMPUTING DEVICES}
관련 출원들
본 출원은 2010년 1월 11일자에 출원되고, 발명의 명칭이 "Dynamic Low Power Mode Implementation For Computing Devices" 인 미국 가특허출원 제 61/294,055 호에 대해 우선권의 이익을 주장하며, 그 전체 내용들이 여기에 참조로 포함된다.
배경
무선 통신 기술들은 과거 수년에 걸쳐서 폭발적인 성장을 보여왔다. 이러한 성장은 모바일 대중에게 이동의 자유를 제공하고 하드와이어드 통신 시스템들로의 테더링 (tethering) 을 커팅하는 무선 서비스들에 의해 촉발되었다. 서비스 향상의 결과로서, 무선 서비스들의 인기가 계속 빠르게 증가할 것으로 예상되고 있다. 배터리 수명은 모바일 전자 디바이스들의 주요 동인이며, 따라서 배터리 전력의 절약을 가능하게 하는 방법들 및 디바이스들은 전자 디바이스 기술들에서 중요한 고려사항들이다.
여러 양태들은 컴퓨팅 디바이스의 리소스들에 대한 최적의, 또는 거의 최적의, 저전력 동작 모드들의 조합을 선택하기 위해, 컴퓨팅 디바이스 내의 프로세서에 의해 사용되거나 또는 구현될 수도 있는 데이터 및 방법들을 제공한다. 여러 양태들은 리소스 컴포넌트들 (components) 로 하여금 2 개 이상의 리소스 전력 모드들을 가질 수 있도록 하며, 프로세서가 저전력 또는 슬립 상태에 진입할 때에 시스템 저전력 모드를 동적으로 구성하도록, 프로세서로 하여금, 동작 상태, 동작 조건들, 슬립 사이클 특성들 및 다른 인자들에 기초하여 여러 리소스들 각각에 대한 전력 모드를 선택할 수 있도록 한다. 여러 양태들은 프로세서로 하여금, 유효한 레이턴시가 모든 활성 작업들의 전체 시스템 레이턴시 요건들을 초과하지 않을 그들 리소스들 또는 리소스들의 조합들을 식별하도록, 여러 리소스들의 저전력 모드들, 및 리소스 저전력 모드들의 임의의 조합을 평가할 수 있도록 한다. 여러 양태들은, 프로세서로 하여금, 모든 활성 작업들의 전체 시스템 레이턴시 요건들을 충족시키면서 전력 절감량들을 최대화하는 시스템 저전력 구성으로 구현하고, 리소스 저전력 모드들의 조합을 선택하고, 미리 정의된 저전력 구성들의 세트 중에서 선택하는 대신에, 이 선택을 동적으로 (즉, 슬립 사이클의 시간에) 행할 수 있도록 한다. 여러 양태들은 프로세서로 하여금, 현재의 조건들 및 동작 상태에 최적화된 최적의 저전력 구성을 결정하기 위해, 솔버 프로세스에 사용되는 탐색 테이블들을 연속적으로 재계산할 수 있도록 한다. 여러 양태들은 프로세서로 하여금, 현재의 상태, 활성 디바이스들 및 애플리케이션들, 및 예상된 슬립 지속기간에 적합한 최적의 저전력 구성을 결정하기 위해, 컴퓨팅 디바이스의 동작에 관한 통계적인 정보를 이용할 수 있도록 한다. 여러 양태들은 프로세서로 하여금, 현재의 및 과거의 환경 및 사용 정보에 기초하여 최적의 저전력 구성을 선택할 수 있도록 한다.
여러 양태들은, 컴퓨팅 디바이스에서 전력을 절약하는 방법으로서, 리소스가 사용되고 있지 않을 때 리소스와 연관된 플래그 비트를 설정하는 단계로서, 상기 리소스는 복수의 리소스들 중 하나인, 상기 플래그 비트를 설정하는 단계; 프로세서가 아이들 상태에 진입할 수 있을 때 플래그 비트 설정들에 기초하여 저전력 모드에 둘 수도 있는 리소스들을 식별하는 단계; 식별된 리소스들 각각에 대해 레이턴시 요건을 등록하는 단계; 등록된 레이턴시 요건들로부터 가장 엄격한 레이턴시 요건을 선택하는 단계; 선택된 가장 엄격한 레이턴시 허용오차를 초과하는 조합된 레이턴시 요건을 갖고, 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합을 제거하기 위해 저전력 모드에 둘 수도 있는 각각의 리소스에 대한 컴퓨팅 디바이스 저전력 모드들을 평가하는 단계; 잠재적인 전력 절감량들을 최대화하고 선택된 최악의 경우의 레이턴시 요건보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 단계; 및 식별된 리소스들 각각에 대해 선택된 저전력 모드들 각각의 진입 기능을 실행함으로써 저전력 리소스 모드들의 선택된 조합에 진입하는 단계를 포함하는, 전력을 절약하는 방법들을 포함한다. 양태 방법들에서, 저전력 리소스 모드들의 조합을 선택하는 단계는 여러 저전력 모드들 및 리소스들에 대해 냅색 (knapsack) 문제 솔루션 알고리즘을 실행하는 단계를 포함할 수도 있다. 양태 방법들은 프로세서가 아이들 상태에 남아 있을 것으로 예상되는 시간을 결정하는 단계; 및 현재 온도에서의 단위 시간 당 잠재적인 전력 절감량들과 결정된 예상 아이들 시간과의 곱에 기초하여 각각의 평가된 저전력 리소스 모드들의 잠재적인 전력 절감량들을 결정하는 단계를 더 포함할 수도 있다. 양태 방법들은 디바이스가 기지의 (known) 안정 상태에 있을 때, 온도 및 전류, 또는 온도 및 전력 수요를 측정하는 단계; 측정을 위한 리소스를 선택하는 단계; 선택된 리소스를 저전력 리소스 모드에 두는 단계; 선택된 리소스가 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 단계; 및 저전력 리소스 모드를 갖는 모든 리소스들에 대해 저전력 리소스 모드 동안의 전류 또는 전력 수요가 측정될 때까지, 다음 리소스를 선택하는 단계, 선택된 리소스를 저전력 리소스 모드에 두는 단계 및 선택된 리소스가 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 단계를 반복하는 단계를 더 포함하고, 잠재적인 전력 절감량들을 최대화하는 저전력 리소스 모드들의 조합을 선택하는 단계는, 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하기 위해 각각의 저전력 리소스 모드와 연관된 측정된 전류 또는 전력 수요를 이용하는 단계를 포함할 수도 있다. 양태 방법들은 상이한 온도들에서, 제 3 항에 기재된 동작들을 반복하는 단계; 및 각각의 저전력 리소스 모드와 연관된 전류 또는 전력 수요의 온도 민감도를 결정하는 단계를 더 포함하고, 상기 잠재적인 전력 절감량들을 최대화하는 저전력 리소스 모드들의 조합을 선택하는 단계는, 컴퓨팅 디바이스의 온도를 측정하는 단계; 및 측정된 컴퓨팅 디바이스 온도에서 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하기 위해 각각의 저전력 리소스 모드와 연관된 전류 또는 전력 수요의 결정된 온도 민감도를 이용하는 단계를 포함할 수도 있다. 양태 방법들에서, 상기 저전력 모드에 둘 수도 있는 각각의 리소스에 대해 저전력 리소스들 모드들을 평가하는 단계는, 잠재적인 전력 절감량, 추정된 아이들 시간 및 동작 조건들을 이용하는 저전력 모드 선택 데이터 테이블을 이용하여 테이블 탐색 프로세스를 달성하는 단계를 포함할 수도 있으며 동작 조건들은 온도 값을 포함할 수도 있다. 양태 방법들은 컴퓨팅 디바이스에 대한 동작 조건들에 관한 통계치를 수집하는 단계, 및 수집된 동작 조건들 통계치에 기초하여 저전력 모드 선택 데이터 테이블을 선택하는 단계를 더 포함할 수도 있다. 양태 방법들에서, 동작 조건들은 온도, 특정의 저전력 리소스 모드들의 전력 소비, 여러 동작 상태들에서 경험된 아이들 시간들, 및 통상적인 디바이스 사용 패턴들을 포함하는 그룹으로부터 선택될 수도 있다. 양태 방법들은 컴퓨팅 디바이스가 외부 전력에 접속되어 있는지 여부를 결정하는 단계를 더 포함할 수도 있으며, 동작 조건들 통계치에 기초하여 저전력 모드 선택 데이터 테이블을 업데이트하는 단계는 컴퓨팅 디바이스가 외부 전력에 접속될 때에 달성된다.
또한, 여러 양태들은 위에서 설명한 양태 방법들의 기능들을 수행하는 수단을 포함하는 컴퓨팅 디바이스를 포함한다.
또한, 여러 양태들은 메모리 버퍼 및 메모리 버퍼에 커플링된 프로세서를 포함하는 컴퓨팅 디바이스에서 전력을 절약하는 장치를 포함하며, 프로세서는 위에서 설명한 양태 방법들의 동작들을 수행하도록 프로세서 실행가능한 명령들로 구성된다.
또한, 여러 양태들은 프로세서로 하여금, 위에서 설명한 양태 방법들의 동작들을 포함하는 컴퓨팅 디바이스에서 전력을 절약하는 동작들을 수행하게 하도록 구성된 프로세서 실행가능한 소프트웨어 명령들을 저장하고 있는 비일시적 저장 매체를 포함한다.
여기에 포함되며 본 명세서의 일부를 구성하는 첨부도면은, 본 발명의 예시적인 실시형태를 도시하며, 위에 주어지는 일반적인 설명과 아래에 주어지는 상세한 설명과 함께, 본 발명의 특징을 설명하는 역할을 한다.
도 1 은 일 양태에서 2 개의 저전력 모드들 중 하나에 진입하기 위해 프로그래밍 노드에 의해 제어되는 리소스의 다이어그램이다.
도 2 는 일 양태에 따른, 공유된 리소스가 저전력 모드에 진입하는 그 능력을 등록하는 방법의 프로세스 흐름도이다.
도 3 은 일 양태에 따른, 공유된 리소스가 저전력 모드를 퇴장하는 것을 등록하는 방법의 프로세스 흐름도이다.
도 4 는 일 양태에 따른, 저전력 모드를 선택 및 진입하는 방법의 프로세스 흐름도이다.
도 5 는 저전력 모드를 선택 및 진입하는 양태 방법을 도시하는 프로그래밍 노드 및 리소스 다이어그램이다.
도 6 은 저전력 모드를 선택 및 진입하는 또 다른 양태 방법을 도시하는 프로그래밍 노드 및 리소스 다이어그램이다.
도 7 은 최적의 저전력 모드를 선택하는 양태 방법의 프로세스 흐름도이다.
도 8a 및 도 8b 는 예상 아이들 시간에 기초하여 최적의 저전력 모드를 선택하는 양태 방법을 도시하는 3 개의 대체가능한 저전력 모드들의 전력 절감량들 대 아이들 시간 그래프들이다.
도 9a 및 도 9b 는 최적의 저전력 모드를 선택하는 대안적인 양태 방법들의 프로세스 흐름도들이다.
도 10 은 최적의 저전력 모드를 선택하는 대안적인 양태 방법의 프로세스 흐름도이다.
도 11 은 컴퓨팅 디바이스가 외부 전력에 접속되어 있는지 여부에 따라서 최적의 저전력 모드를 선택하거나 또는 저전력 모드 선택 테이블을 업데이트하는 대안적인 양태 방법의 프로세스 흐름도이다.
도 12 는 모바일 디바이스에 의해 수집된 통계치에 기초하여 리소스들의 전력 절감 파라미터들을 업데이트하는 양태 방법의 프로세스 흐름도이다.
도 13 은 모바일 디바이스가 여러 저전력 모드들에 의해 달성되는 전력 절감량들에 관한 통계치 뿐만 아니라, 아이들 모드 전력 절감량들에 영향을 미치는 인터럽트 (interrupt) 들 및 타이머들의 분배에 관한 통계치를 수집할 수도 있는 양태 방법의 프로세스 흐름도이다.
도 14 는 모바일 디바이스가 각각의 저전력 리소스 모드에 의해 달성되는 측정 (measure) 전력 절감량들을 수집할 수도 있는 양태 방법의 프로세스 흐름도이다.
도 15 는 일 양태에서 사용하기에 적합한 모바일 디바이스의 컴포넌트 블록 다이어그램이다.
여러 양태들을, 첨부 도면을 참조하여 자세히 설명한다. 도면 전체에 걸쳐, 가능하다면 어디에서든지, 동일하거나 유사한 부분을 지칭하기 위하여 동일 도면 부호를 사용한다. 특정의 예들과 구현들에 대해 이루어지는 참조는 예시적 목적을 위한 것으로, 본 발명의 범위 또는 청구범위를 한정하려는 것이 아니다.
용어 "예시적인" 은 "예, 경우 또는 예시로서 기능하는" 것을 의미하도록 본 명세서에서 사용된다. 여기서 "예시적인" 으로 설명한 어떠한 구현도 다른 구현들 보다 바람직하거나 유리한 것으로 반드시 해석해서는 안된다.
용어들 "모바일 디바이스" 및 "컴퓨팅 디바이스" 는 셀룰러 전화기들, 개인휴대 정보 단말기들 (PDAs), 팜-탑 컴퓨터들, 무선 전자 메일 수신기들 (예컨대, Blackberry® 및 Treo® 디바이스들), 멀티미디어 인터넷 인에이블드 셀룰러 전화기들 (예컨대, Blackberry Storm®), 글로벌 위치확인 시스템 (GPS) 수신기들, 무선 게이밍 제어기들, 및 프로그래밍가능한 프로세서를 포함하고 전력 절약 방법들이 유익한 배터리 전력 하에서 동작하는 유사한 개인 전자 디바이스들 중 임의의 하나 또는 모두를 지칭하기 위해 여기서 교환가능하게 사용된다.
본 명세서에서 사용하는 용어 "리소스" 는 컴퓨팅 디바이스 상에서 실행하는 프로세서들 및 클라이언트들을 지원하는데 이용되는, 임의의 광범위한 회로들 (예컨대, 포트들, 클록들, 버스들, 발진기들 등), 컴포넌트들 (예컨대, 메모리), 신호들 (예컨대, 클록 신호들), 및 전압들 (예컨대, 전압 레일들) 을 지칭하기 위해 사용된다.
무선 디바이스들의 배터리 수명을 최대화하는 것은 중요한 설계 기준이다. 증가된 배터리 수명은 사용자들로 하여금 더 긴 기간들 동안 무선 디바이스를 갖게 함으로써 사용자의 경험을 최대화한다. 그러나, 사용자의 경험을 진정으로 최대화하기 위해서는, 전력 절감 전략들이 디바이스의 기능성 또는 신뢰성을 변동시키지 않도록 구현되어야 한다. 그와 같이, 기능성을 변동시키지 않는 효과적이고 효율적인 전력 절감 방식들을 설계하는 것은 모바일 및 무선 디바이스 제공자들에게 중요한 목표이다.
배터리 수명을 최대화하기 위해, 대부분의 모바일 브로드캐스트 수신기들은 가능한 경우에는 언제나, 예컨대, 프로세서가 아이들 상태에 있을 때에, 하나 이상의 프로세서들 및 디바이스 리소스들을 저전력 상태에 두도록 구성된다. 디바이스 리소스들을 저전력 상태에 두는 것은, 통상적으로, 프로세서가 작업들을 활발하게 프로세싱하고 있지 않을 때 마다, 및/또는 아이들 상태에 있을 때 마다, 여러 디바이스 리소스들을 턴오프하는 것으로 구성된다. 본 명세서에서는, 프로세서가 작업들을 프로세싱하지 않을 때 및/또는 아이들 상태에 있을 때, 턴오프될 수 있거나, 또는 하나 이상의 저전력 및/또는 아이들 상태들에 둘 수 있는 리소스들이 저전력 리소스들, 또는 LPRs 로 지칭된다. 멀티프로세서 디바이스들에서, 예컨대, 무선 모뎀 프로세서 및 애플리케이션 프로세서를 가질 수도 있는 스마트 폰들에서는, 저전력 모드들을 구현하는 동작들이 각각의 프로세서에 의해 독립적으로 또는 통합된 방식으로 달성될 수도 있다.
모바일 컴퓨팅 디바이스는 통상적으로 디바이스 프로세서가 이용하는 많은 리소스들, 예컨대 수정 발진기, 전압 레일들, 하나 이상의 메모리 유닛들, 통신 버스들 등을 포함한다. 컴퓨팅 디바이스들이 더욱 더 복잡해짐에 따라, 디바이스 프로세서들에 의해 사용되거나 관리되는 리소스들의 수가 매년 증가하고 있다. 예컨대, 많은 모바일 컴퓨팅 디바이스들은 현재, 독립적으로 제어될 수 있는 다수의 수정 발진기들, 다수의 전압 레일들, 및 다수의 메모리들을 포함한다. 따라서, 컴퓨팅 디바이스 프로세서가 전력을 절약하기 위해서, 턴오프하거나 또는 저전력 모드에 둘 수도 있는 많은 상이한 리소스들이 존재한다. 또한, 컴퓨팅 디바이스들은 여러 디바이스 리소스들을 이용하여 상이한 작업들을 수행하는 (따라서, 동시에 아이들상태에 있지 않을 수도 있는) 다수의 프로세서들을 가질 수도 있다. 이러한 이유들로, 저전력 모드에 둘 리소스들을 선택할 때에 어느 정도의 실행 제어 (executive control) 가 발휘되어야 한다. 저전력 모드들에 두기 위한 리소스들을 선택하는 것은 "슬립 (sleep) 문제" 로 알려져 있다.
일반적으로, 프로세서들은 프로세서가 더 이상 리소스를 필요로 하지 않을 때, 예컨대, 프로세서가 안정한 아이들 상태에 진입할 때, 턴오프하거나, 디스에이블시키거나, 아이들시키거나 또는 다르게는 저전력 리소스들의 에너지 소비 수요들을 감소시킬 수도 있다. 프로세서가 "웨이크 업할 때" (예컨대, 또다른 프로세스를 수행하기 위해서 아이들 상태를 떠날 때), 리소스들은 다시 턴온되거나, 다시 인에이블되거나, 및/또는 허용가능한 동작 상태로 리턴될 수도 있다. 그러나, 각각의 저전력 리소스는 상이한 전력 소비 레벨들 및 레이턴시 특성들 (즉, 리소스를 풀 (full) 전력 모드로 리턴시키는데 요구되는 시간) 을 가질 수도 있으며, 그러한 특성들은 온도 및 동작 상태에 따라 변할 수도 있다. 즉, 각각의 리소스는 그들의 여러 저전력 모드들에서 상이한 전력량을 소비할 수도 있으며, 전력 오프, 아이들 및/또는 저전력 상태들에 진입하고 떠나는데 상이한 시간량을 필요로 할 수도 있으며, 그러한 상태들에 진입하고 떠날 때에 상이한 전력량을 소비할 수도 있다. 명료성을 위해서, 리소스들 각각에 이용가능한 여러 저전력 모드들은 본원에서 저전력 리소스 모드들 또는 LPRMs 으로 지칭된다.
리소스를 그 요구된 동작 상태로 리턴시키는데 필요한 전력이 프로세서 아이들 상태의 추정된 지속기간 동안 저전력 모드의 리소스를 가짐으로써 절감되는 전력 보다 더 많으면, 프로세서가 아이들일 때 마다 단순히 리소스를 턴오프하거나 및/또는 저전력 상태에 두는 것으로는 무선 디바이스의 배터리 수명이 최대화되지 않을 수도 있다. 따라서, 어느 저전력 리소스들이 턴오프되어야 하고 및/또는 저전력 모드들 뿐만 아니라, 각각의 리소스가 있어야 하는 특정의 저전력 모드들에 두어야 하는지를 결정하는 슬립 문제는, 통상적으로 각각의 리소스의 저전력 모드 특성들, 예컨대 레이턴시, 전력 절감 포텐셜, 전력 소비 및 상호의존성들과 함께, 프로세서 상태 뿐만 아니라 다른 디바이스 프로세서들의 상태들의 분석을 필요로 한다. 또한, 리소스 저전력 모드 특성들은 동작 조건들, 예컨대 온도에 의해 영향을 받을 수도 있으므로, 그러한 조건들도 역시 평가되어야 한다.
위에서 설명한 바와 같이, 각각의 리소스는, 리소스가 배치될 수 있는 저전력 모드들의 세트 또는 LPRMs 을 가질 수도 있다. 각각의 리소스의 각각의 저전력 리소스 모드는, 일부 또는 모두가 온도 및 다른 동작 조건들에 따라서 변할 수도 있는, 그 레이턴시, 전력 절감 포텐셜, 전환 전력 소비, 저전력 모드 진입 기준들, 모드 퇴장 기준들 및 리소스 상호의존성들의 관점에서 특징화될 수도 있다. 리소스들은 하나 보다 많은 저전력 리소스 모드를 가질 수도 있으며, 모드들 각각은 상이한 전력 절감 특성들 및 레이턴시 시간들을 가질 수도 있다. 예컨대, 한 리소스에 대한 하나의 저전력 리소스 모드는 리소스를 완전히 사용불능시킬 수도 있지만 (예컨대, 전력을 차단할 수도 있지만), 제 2 저전력 리소스 모드는 리소스의 감소된 기능성 또는 주기적 동작을 수반할 수도 있다. 각각의 저전력 리소스 모드는 예컨대, 단위 시간 당 상이한 전력 절감량들을 제공하고 그 모드에 진입하고 떠나는데 상이한 시간량들 (즉, 상이한 레이턴시 요건들) 을 요구하는 것과 같은, 상이한 동작 특성들을 가질 수도 있다. 예컨대, 휘발성 메모리 칩은 2 개의 저전력 리소스 모드들; 즉, 동작 상태로 리턴하는데 최소 전력량을 소비하지만 더 큰 시간 (즉, 더 큰 레이턴시) 를 필요로 하는 딥 (deep) 전력-다운 모드, 및 일부 배터리 전력을 소비하지만 낮은 레이턴시를 갖는 (즉, 풀 기능 상태로 매우 빠르게 리턴할 수 있는) 자가-리프레시 모드를 가질 수도 있다. 게다가, 각각의 저전력 리소스 모드에 의해 제공되는 전력 절감량들은 동작 조건들, 예컨대 온도 및 예상 아이들 시간에 의존할 수도 있다. 따라서, 일부 양태들에서, 낮은 리소스 전력 모드들은 현재 온도에서 단위 시간 당 잠재적인 전력 절감량들을 그 결정된 예상 아이들 시간으로 곱한 결과 (product) 로서, 예상 전력 절감량들을 계산할 수도 있다. 다른 양태들에서, 예상 전력 절감량들은 온도, 예상 아이들 시간 및 다른 변수들의 또 다른 함수로서 결정될 수도 있다.
위에서 언급한 바와 같이, 리소스를 저전력 모드에 두고 프로세서의 웨이크업 시에 정상적인 모드로 복원시키는 것은, 달성하는데 전력 및 시간 (즉, 레이턴시) 양자를 소요하는, 일부 작업을 필요로 한다. 시스템이 아이들 상태에 머무르는 시간량이 너무 짧으면, 저전력 리소스 모드에 진입하는데 필요한 여분의 전력 및 시간이 실제 전력 절감량들을 초래하지 않을 수도 있다. 즉, 리소스를 저전력 리소스 모드에 두고 풀 동작으로 리턴시키는데 소비되는 전력이 저전력 모드에서 있었던 짧은 시간 동안 절감된 전력보다 더 많을 수도 있다. 따라서, 특정의 저전력 리소스 모드에 진입하는 이점은 프로세서가 아이들상태에 머무를 수도 있는 예상 시간에 의존할 것이다. 본 명세서에서, 이 시간은 "예상 아이들 시간" 으로 지칭된다.
리소스를 저전력 리소스 모드에 둠으로써 절감될 수도 있는 전력량은 동작 모드 및 임의의 필요한 리소스들의 특성들 뿐만 아니라, 리소스가 저전력 모드에 머무르는 시간량에 기초하여 변할 것이다. 예컨대, 메모리 칩을 자가 리프레시 저전력 모드에 두는 것은, 자가 리프레시 프로세스들과 연관된 전력을 소비할 뿐만 아니라, 칩에 대한 전력의 이용가능성을 필요로 할 수도 있다. 따라서, 특정의 저전력 리소스 모드에서 이용가능한 전력 절감량들은 주어진 슬립 사이클에서 구현할 저전력 리소스 모드들의 조합을 결정하기 위해서 복수의 저전력 리소스 모드들 중에서 선택하는데 있어 고려하는 중요한 특성 (characteristic) 이다.
또한, 위에서 언급한 바와 같이, 리소스를 특정의 저전력 리소스 모드에 둠으로써 절감될 수도 있는 전력량은 환경 및 동작 인자들, 예컨대 온도에 의존할 수도 있다. 온도는 디바이스 내의 전기 저항에 영향을 미친다. 따라서, (저전력 구성들이 개발될 때에 사전에 추정되어야 하는) 각각의 리소스의 상이한 저전력 리소스 모드들과 연관된 실온에서의 전력 절감량들은, 디바이스가 더 차가운 때 (예컨대, 알래스카의 겨울 동안) 또는 더 더운 때 (예컨대, 텍사스의 여름 동안) 때 그 현장 (field) 에서 상당히 다를 수도 있다. 따라서, 실제-수명 조건들에서 상이한 저전력 구성들 (즉, 저전력 리소스 모드들의 선택된 세트) 의 전력 절감량들이, 실제 최적의 저전력 모드가 사전에 예상될 수 있는 모드와는 다르다는 것을 의미할 수도 있다. 디바이스의 온도는 미리 알 수 없으므로, 이 중요한 특성은, 저전력 모드들을 편성하고 선택하는 종래의 방법들을 이용하여 이용가능한 저전력 리소스들에 대해 저전력 리소스 모드들의 조합을 선택하는데 이용될 수 없다.
전력 절감이 전자 디바이스들에 대한 저전력 모드들을 구성하는데 중요 목표이지만, 또한 디바이스가 저전력 모드에 진입한 후에 적절하게 계속 동작하는 것을 보장하는 것도 고려되어야 한다. 따라서, 각각의 저전력 리소스 모드와 연관된 레이턴시들의 고려도 또한 중요하다. 위에서 언급한 바와 같이, 저전력 리소스 모드에 진입 및 퇴장하고 리소스를 정상적인 동작 모드로 리턴시키는데 소정의 시간량이 요구된다. 이 레이턴시 시간이 예상 아이들 시간 보다 더 적어야 하거나 또는 저전력 모드가 거의 도움이 되지 않을 것이다. 좀더 중요하게는, 기존 저전력 리소스 모드, 또는 저전력 리소스 모드들의 선택된 조합과 연관된 레이턴시가, 저전력 모드에 있을 때 리소스 또는 리소스들을 요구하는 임의의 클라이언트 또는 프로세서의 최대 허용가능한 시스템 레이턴시 보다 작아야 한다. 특정의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 조합을 떠나는 것과 연관된 레이턴시가, 시스템의 허용가능한 레이턴시를 초과하면, 기능 에러를 초래하거나 또는 어떤 미관련 기술이 부정확하게 기능하도록 할 수 있기 때문에 특정의 시스템 저전력 구성이 허용되지 않을 수도 있다.
레이턴시 요건들이 슬립 문제에서 중요 고려사항인 상황의 예는, 범용 직렬 버스 (USB) 커넥터가 모바일 디바이스에 플러그인 될 때이다. USB 프로토콜은 통상적으로 매우 짧은 레이턴시 요건을 갖고, 호스트가 그 레이턴시 내에서 리소스 요청에 대한 응답을 수신하지 않으면, 그 호스트는 디바이스가 오동작 중이라고 결론내릴 수도 있다. 따라서, 현재의 동작 구성이 USB 디바이스에 대한 접속을 포함하는 경우에는, USB 레이턴시 요건 보다 더 큰 퇴장 레이턴시를 가진, 리소스의 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합에 진입되지 않아야 한다.
또한, 레이턴시 및 동작 조건들에 더해, 리소스의 저전력 모드들은 다른 리소스들 및/또는 조건들에 의존할 수도 있다. 본원에서, 그러한 리소스 상호의존성 고려사항들은 일반적으로 "의존성들"로서 지칭된다. 이들 의존성들은 상호의존적일 수도 있으며 (즉, 또다른 리소스가 이용가능하게 유지하는 경우에만 그 모드가 인에이블될 수 있음), 배타적일 수도 있으며 (즉, 특정의 다른 리소스가 저전력 모드에 있거나 또는 고전력 모드에 있지 않을 경우에 그 모드에 진입될 수 있음), 또는 직교할 수도 있다 (즉, 모드들이 서로 연관성을 갖지 않고 독립적으로 인에이블될 수도 있음). 또한, 저전력 모드 의존성들은 "정적" 또는 "동적" 인 것으로 분류될 수도 있다. 정적 의존성들은 리소스가 특정의 저전력 모드 동작을 구현하는 것을 실제로 고려하기 전에 충족되어야 하는 조건들을 정의하는 의존성들이다. 한편, 동적 의존성들은, 하나의 모드가 그 시스템에서 또다른 모드와 함께 구현될 수 있을 경우에만 발생하며, 통상적으로 오직 런타임에서만 결정 가능하다.
정적 의존성들은 어느 정도의 불확실성으로 예상될 수도 있지만, 동적 의존성들은 예정보다 빨리 결정하기 어렵다. 게다가, 동적 의존성들은 컴포넌트들 및/또는 리소스들의 수가 증가함에 따라, 지수함수적으로 좀더 복잡하게 된다. 현대 무선 디바이스들이 복잡성 면에서 계속 증대되고 더 많은 컴포넌트들 및 리소스들을 포함함에 따라, 저전력 모드들의 동적 의존성들을 효과적으로 관리하는 것이 더욱더 중요해질 것이다.
따라서, 리소스들을 아이들시키거나 및/또는 디스에이블링시킴으로써 배터리 수명을 절약하도록 디바이스를 구성하는 것은, 전력 절감량들의 여러 저전력 모드 특성들, 레이턴시들 및 여러 리소스들의 상호의존성들 뿐만 아니라, 동시에 실행될 수도 있는 클라이언트들, 프로세서들, 및 애플리케이션들의 요건들의 균형을 잡기 위해, 리소스들의 상이한 저전력 리소스 모드들 중에서 선택하는 것을 수반한다. 이 선택 프로세스는 특히, 컴퓨팅 디바이스들의 복잡성이 증가함에 따라, 고려될 수도 있는 변수들 및 치환들의 수로 인해, (전통적인 "냅색 (knapsack)" 문제와 유사하게) 계산상 어려운 작업이다.
현재, 프로세서들 및 전자 디바이스들에 대한 저전력 모드들은 우선순위들 및 예측가능한 특성들의 정적 세트에 기초하여, 개발자들에 의해 미리 구성되고 있다. 저전력 구성들의 하나 또는 수개의 세트들은 개발 동안에, 프로세서 또는 시스템에 하드 코딩될 수도 있다. 저전력 모드들의 세트로부터 하나의 저전력 구성의 선택은 하드코딩된 조건문 (if-then/else) 판정 트리 프로그래밍에 의해 현재 제어된다. 다수의 미리 정의된, 시스템 저전력 모드들이 제공되는 경우, 프로세서는 동작 클라이언트들로 하여금, "투표 (voting)" 에 의해 그들의 여러 리소스 요건들 또는 동작 조건들을 표시하도록 함으로써, 여러 미리 정의된 모드들 중에서 선택할 수도 있다. 클라이언트 투표의 결과는 하나 이상의 저전력 모드들을 명시적으로 디스에이블시키는 것일 수도 있다.
다수의 미리 정의된 시스템 저전력 모드들 중에서 구현할 하나의 시스템 저전력 모드를 선택하는 공지의 프로세스들은 온도, 예상 아이들 시간 및 레이턴시 요건들을 고려할 수도 있다. 그러나, 그러한 공지의 방법은 모두, 시스템, 프로세서 또는 애플리케이션 개발자가, 저전력 모드에 둘 수도 있는 리소스들의 조합들을 예상하여 많은 옵션적인 시스템 모드들을 사전에 정의하고, 그들의 가능성 있는 상호의존성들, 전체 그들의 레이턴시들을 평가하고, 그러한 모드에 진입될 때 시스템 요건들 및 한계사항들을 예상하는 것을 필요로 한다. 저전력 모드 조건들을 예상하고 선택이 이루어질 수 있는 시스템 모드들의 세트를 사전 정의하는 프로세스는 프로세서들 및 디바이스들이 상대적으로 단순한 경우에 가능하였지만, 시스템 및 프로세서 복잡성이 미래에 증가함에 따라 이 설계 문제는 확률적으로 어려워질 것으로 예상되고 있다.
컴퓨팅 디바이스들에서 시스템 저전력 모드들을 개발하고 구현하는 오늘날의 방법들은, 디바이스의 현재, 런타임, 동작 조건들 (예컨대, 온도), 레이턴시 요건들 또는 의존성들을 고려할 수 없다. 게다가, 저전력 구성들에 대한 현재의 구현들은, 그러한 컴포넌트들의 동작 상태가 미리 예측될 수 없기 때문에, 특정의 디바이스 구성들에 맞추어져 있지 않으며, 각각의 특정의 클라이언트의 저전력 리소스 모드들 각각의 동적 레이턴시 요건들을 명시적으로 해소할 수 없다. 이와 같이, 저전력 모드들을 개발하고 구현하는 현재의 방법은, 일반적으로 사전에 이루어진 추정들에 기초하여, 미리 설정된 수의 시스템 저전력 구성들 (예컨대, 아이들 모드, 슬립 모드, 딥 슬립 모드 등) 을 구성하고, 개발자에 의해 정의된 선택 기준에 기초하여, 시스템을 시스템 저전력 모드들 중 최선의 모드에 두는 것을 필요로 한다. 오늘날의 방법들은 저전력 리소스들 각각 뿐만 아니라, 프로세서들을, 전력 절감량들을 완전히 최대화하는 상태에 두는 저전력 리소스 모드들의 조합으로 이루어진 실시간 저전력 구성을 동적으로 생성할 수 없다.
이전 세대의 디바이스들에서는, 프로세서와 상호작용할 수도 있는 상이한 리소스들 및 클라이언트들의 수가 제한되어, 적은 수의 상이한 동작 상태들이 예상되기 때문에, 저전력 모드들을 사전에 구성하는 것이 합당하였다. 그러나, 현대의 전자 디바이스들은 다수의 프로세서들, 무수한 리소스들 및 동시발생 클라이언트들을 포함하여, 더욱 복잡하게 되고 있어, 더 이상 프로세서들에 하드 코딩될 수 있는 최적의 저전력 모드들을 정의하는 것이 가능하지 않을 수도 있다. 게다가, 조건문 판정 트리 프로그래밍을 이용한 이전에 정의된 시스템 저전력 모드의 선택은 대략 2n 에 따라 스케일링되며, 여기서 "n" 은 그 결정에 수반된 리소스들 및 클라이언트들의 수이다. 그 결과, 개발자들은 비록 모두는 아닐지라도, 일부 상태들에서 차선일 수도 있는, 미리 하드 코딩될 수 있는 저전력 구성들의 서브세트에 관해 타협해야 한다. 개발자들에게 차선의 저전력 구성들을 채택하도록 하는 것은, 특정의 동작 조건들에 대해 최적의 저전력 모드들이 정의되고 구현될 수 있으면, 그렇지 않은 경우에 달성할 수 있는 전력 절감량들 보다 더 적은 전력 절감량들을 달성하는 전자 디바이스들을 초래한다.
저전력 구성들의 현재의 프로그래밍의 동작 제한들에 부가하여, 시스템 저전력 모드들 및/또는 구성들의 세트 (예컨대, 아이들, 슬립, 딥 슬립) 를 미리 정의하고 그 모드들을 프로세서 또는 애플리케이션에 하드 코딩하는 노력은 상당한 개발자 노력을 수반한다. 게다가, 고급 저전력 모드들의 세트를 하드 코딩하는 것은, 리소스들 각각이 임의의 주어진 시간에 있을 수 있는 여러 동작 상태들을 해소하지 못해, 그 시스템에서 모든 컴포넌트들의 전체 전력 소비 레벨들 및 동작 상태들에 동적으로 응답할 수 없다. 시스템 저전력 모드들의 정의가 코드-유도되고 데이터-유도되지 않으므로, 디바이스 구성들에 대해 이루어지는 작은 변화들 및 리소스 저전력 모드들의 세트에 대해 이루어지는 작은 변화들은, 코드 변화들이 디바이스 에러들을 유발하지 않는다는 것을 확인하기 위해 다시 재테스트를 필요로 한다. 따라서, 저전력 모드들을 구현하는 현재의 방법들은 제품의 생산 시행 동안에 일어날 수도 있는 디바이스 구성들 (예컨대, 컴포넌트들, 소프트웨어 등) 에서의 변화들을 따라가기가 불가능하다.
이들 및 다른 관심 사항들을 처리하기 위해, 여러 양태들은 개개의 저전력 리소스들 뿐만 아니라 프로세서들 각각 마다, 전체 시스템에 걸친 전력 절감량들을 완전히 최대화하는 동작 상태에 두기 위해, 다수의 저전력 리소스들 중에서 선택된 저전력 리소스 모드들의 조합으로 이루어지는 시스템 저전력 구성을 동적으로 생성하는 것을 제공한다. 여러 양태들은 현재 달성가능한 전력 절감량들의 레벨에 미세하게 맞출 수 있는 다수의 저전력 구성들을 제공하기 위해서, 디바이스 프로세서들에 대한 슬립 문제를 단순화시켜, 프로세서들에 의해 좀더 최적의 저전력 구성 선택들이 실시간으로 이루어질 수 있는 방법들을 제공한다. 여러 양태들은 컴포넌트 개발자들로 하여금, 여러 인자들, 예컨대 사용시의 리소스들의 유형, 허용될 수 있는 최악의 경우의 레이턴시, 동적 동작 조건들 (예컨대, 온도), 예상 아이들 시간, 및 컴포넌트 레이턴시를 고려하는 그들의 컴포넌트들 각각에 대해서 여러 저전력 리소스 모드들을 정의할 수 있도록 한다. 또한, 각각의 리소스에 대해 정의된 저전력 리소스 모드들은 정적 및 동적 의존성들을 정의할 수도 있다. 그러면, 디바이스 프로세서들은 저전력 리소스 모드들의 임의의 조합을 동적으로, 런타임에 선택할 수도 있다. 일 양태에서, 디바이스 프로세서들은 그 시스템에서 다른 프로세서들 및 컴포넌트들의 요건들을 포함한, 현재의 동작 요건들을 만족시키면서 전력 절감량들 및/또는 동작 속도를 최대화하는 시스템 저전력 구성 또는 슬립 상태를 야기하는 저전력 모드들의 조합을 계산 및 선택할 수도 있다.
또한, 여러 양태들은 디바이스들로 하여금 디스에이블될 수 있는 리소스들 뿐만 아니라 디바이스 저전력 구성 동안 유지해야 하는 리소스들을 식별함으로써 하나 이상의 저전력 리소스 모드들을 선택할 수 있도록 한다. 여러 양태들은 프로세서가 아이들 상태로 될 때, 상당한 클라이언트 상호작용 및 추가적인 프로세서 액션을 필요로 하지 않고, 기능적 신뢰성을 유지하면서, 리소스들에 대한 최적의 또는 거의 최적의 저전력 리소스 모드들의 세트를 선택하기 위해 컴퓨팅 디바이스 내의 프로세서에 의해 이용될 수 있는 데이터 및 방법들을 제공한다. 양태들은 프로세서로 하여금, 사용중인 리소스들, 허용될 수 있는 최악의 경우의 레이턴시, 동적 동작 조건들 (예컨대, 온도), 예상 아이들 시간, 저전력 모드들에 진입 및 퇴장하는데 필요한 시간, 및 특정의 전자 디바이스의 고유의 전기적 특성들에 따라서, 신뢰성있게 계속 동작하면서 최대한의 시스템 전력 절감량들을 제공하는 시스템 저전력 구성을 결정할 수 있도록 한다.
여러 양태들은 프로세서가 아이들 상태에 진입할 때 리소스의 저전력 리소스 모드들 중 어느 것이 유효한지를 결정하고, 현재의 디바이스 조건들을 고려하여 예상 전력 절감량들에 의해 그 유효한 저전력 리소스 모드들을 순위평가 (ranking) 하고, 그 유효한 저전력 리소스 모드들 중 어느 것이 레이턴시 요건들을 만족시키면서 더 큰 전력 절감량들을 제공하는지를 결정하고, 진입할 각각의 리소스에 대해 특정의 저전력 리소스 모드를 선택함으로써, 컴퓨팅 디바이스 내의 여러 리소스들에 대한 저전력 리소스 모드들의 세트로 이루어지는 최적의 시스템 저전력 구성을 결정하는 메커니즘을 제공한다. 그렇게 함으로써, 여러 양태들은 고정된 미리 정의된 시스템 저전력 구성들의 개념을 제거하고, 그에 따라서, 개발자들로 하여금, 각각의 리소스를 따로 처리할 수 있도록 함으로써 개발자의 문제를 단순화하고, 프로세서로 하여금, 프로세서가 아이들 상태에 진입할 때 구현되는 저전력 리소스 모드들의 세트를 선택할 수 있도록 함으로써, 슬립 문제를 런 타임으로 시프트한다. 이것은 동작 데이터 (operational data) 에 의해 저전력 모드들의 구현이 이루어질 수 있도록 하며, 디바이스가 사용되고 동작하는 방법에 대해 학습함으로써 프로세서들에게 시스템 저전력 모드들을 스스로 최적화하는 능력을 제공한다. 게다가, 현재의 방법들에 비해 일반적인 구현에서 더 큰 전력 절감량들을 제공하기 위해, 여러 양태들은 또한 전자 디바이스들의 개발을 단순화한다.
명료성을 위해서, 그리고 "저전력 모드들" 과 "저전력 리소스들" 사이의 어떤 모호성을 제거하기 위해, 각각의 저전력 리소스는 다수의 저전력 모드들을 가질 수 있는 것으로 이해되어야 한다. 다수의 저전력 리소스들은 주어진 아이들 상태에서 활성화, 인에이블, 비활성화 및/또는 디스에이블될 수도 있다. 따라서, 전체 "시스템 저전력 구성"은 현재의 동작 상태 및 조건들에 기초하여 저전력 모드에 진입하는데 이용가능한 리소스들 각각에 대한 저전력 모드들의 선택에 의해 정의된다. 또한, (아래에서 설명하는 바와 같은) 레이턴시 제한사항들 및 리소스 의존성들로 인해, 최적의 시스템 저전력 구성은 아이들시키는데 이용가능한 복수의 리소스들 각각 마다 저전력 모드에 두는 것을 수반하지 않을 수도 있다는 점에 유의해야 한다. 따라서, 최적의 시스템 저전력 구성의 선택은 레이턴시, 통계적인 이용가능성 및 다른 이유들에 대해 동작 상태에 유지해야 하는 어떤 리소스들을 식별할 수도 있다.
또한, 여러 양태들은, 프로세서들에 의해 사용되므로 더 이상 사용하고 있지 않을 때에 간단히 디스에이블될 수 없는 리소스들에 대해 저전력 리소스 모드들을 정의할 수 있도록 한다. 프로세서에 의해 사용되는 리소스들은 시스템이 적절하게 동작하도록 하기 위해, 제어 방식으로 인에이블 및 디스에이블되는 것을 필요로 한다. 이 요건을 고려하여, 더 이상 사용하고 있지 않을 때 이후에 그러한 리소스들을 디스에이블 하는 것은, 리소스가 디스에이블될 수 있는 아이들 상태로 프로세서가 들어갈 때까지 연기되어야 한다. 시스템 저전력 구성 또는 모드에 진입하는 프로세스는 저전력 상태에 진입하는 것으로 지칭된다.
여러 양태들은, 프로세서가 아이들 상태에 진입할 때에 시스템 저전력 구성으로 구현하는데 적합한 LPRMs 의 조합을 선택하기 위해 프로세서에 의해 이용될 수 있는 저전력 모드 마스크 ("LPM 마스크") 내에서 플래그 비트를 인에블시킴으로써, 리소스들로 하여금, 저전력 상태에 진입하는데 이용가능한 시점을 표시하도록 할 수도 있다. 리소스가 사용중에 있을 때, 리소스는 LPM 마스크에서의 플래그 비트를 디스에이블시킬 수도 있다. 여러 양태들에서, LPM 마스크 내 비트들을 인에이블링하고 디스에이블하는 것은, 아래에서 추가로 설명하는 바와 같이, 애플리케이션 프로그래밍 인터페이스 (API) 를 호출할 수도 있는 프로세서-독립형 리소스 프로그래밍 노드들 내의 드라이버 함수 (driver function) 에 의해 달성될 수도 있다. 따라서, 프로세서가 아이들 상태에 진입할 수 있는 시점에서, 어느 리소스들을 저전력 모드에 둘 수 있는지를 결정하기 위해, LPM 마스크에 액세스될 수 있다.
위에서 설명한 바와 같이, 리소스가 더 이상 사용하고 있지 않고 프로세서가 아이들 상태에 진입하고 있을 때, 리소스는 저전력 모드, 예컨대 리소스의 저전력 리소스 모드들 중 하나에 둘 수도 있다. 그러나, 단지, 리소스가 더 이상 사용하고 있지 않고 프로세서가 아이들 상태에 진입하기 때문에, 항상, 리소스를 저전력 모드에 두기 위한 충분한 근거는 아니다. 게다가, 상이한 유형들의 저전력 리소스 모드들을 유지하는 리소스들의 경우, 프로세서는, 예상 아이들 시간, 현재의 클라이언트들 및 다른 프로세서들의 레이턴시 요건들, 및 여러 다른 인자들 내에서 달성될 수도 있는 총 전력 절감량들을 어드레싱하는, 현재의 동작 조건들 (예컨대, 온도) 에 기초하여, 대체가능한 저전력 리소스 모드들 중에서 선택해야 한다. 여러 양태들에서, 특정의 리소스에 대한 특정의 저전력 리소스 모드에 대한 전력 절감량들은 온도 및 시간에 의존하므로, 그 결과, (저전력 모드 정의에 포함될 수 있는 인자인) 현재 온도에서의 단위 시간 당 잠재적인 전력 절감량들을, 결정된 예상 아이들 시간과 곱함으로써, 각각의 평가된 저전력 리소스 모드의 잠재적인 전력 절감량들이 결정될 수도 있다. 게다가, 저전력 모드 선택은 또한, 특정의 전자 디바이스 특성들, 디바이스 소프트웨어 구현, 아이들 조건에서의 예상된 시간, 및 디바이스 상태, 예컨대 클록 속도 등을 포함한, 다른 변수들을 고려해야 한다.
프로세서가 시스템 저전력 구성에 진입할 준비를 하고 있을 때, 예컨대, 프로세서가 아이들 상태에 진입할 준비를 하고 있을 때, 저전력 작업은, 저전력 상태에 둘 수 있는 리소스들을 식별하고 주어진 동적 시스템 상태 (예컨대, 현재 활성 클라이언트들, 요구된 레이턴시, 예상 아이들 시간, 및 온도) 에 기초하여 그들 리소스들에 진입하는데 적합한 저전력 리소스 모드들을 결정하기 위해, LPM 마스크에 액세스할 수도 있다. 프로세서로 하여금 이 결정을 달성할 수 있도록 하기 위해, 각각의 리소스는 주어진 상태에 대해 구현될 저전력 리소스 모드들의 최적의 세트를 선택하는데 필요한 정보를 규정하는 저전력 리소스 모드 특성 데이터를 정의한다. 이 규정된 정보는 리소스에 이용가능한 각각의 저전력 리소스 모드, 시간의 함수 또는 단위 시간 당으로서의 각각의 저전력 리소스 모드에 대한 잠재적인 전력 절감량들, 각각의 저전력 리소스 모드에 대한 레이턴시 특성들 (즉, 저전력 모드를 퇴장하는 시간), 잠재적인 전력 절감량들에 대한 온도 영향들, 의존성들 (즉, 그 클라이언트들과 다른 리소스들과의 상호의존성들), 및 각각의 리소스에 대한 최적의 저전력 리소스 모드를 선택하는데 관련될 수도 있는 다른 정보의 리스팅을 포함할 수도 있다. 그러한 정보는 리소스에 대해 여러 방법들 및 데이터 구조들로 규정될 수도 있으며, 이의 C 코드 예가 아래에 나열된다.
Figure 112012063890160-pct00001
Figure 112012063890160-pct00002
이 정의에서, 리소스 데이터의 대부분은 리소스 저전력 모드 정의들 내에 포함된다. 리소스들에 대한 저전력 모드들의 정의들은 C 코드로 아래와 같이 작성될 수도 있다:
Figure 112012063890160-pct00003
Figure 112012063890160-pct00004
전술한 C 코드는 일반적인 경우에 대해 작성된다. 전압 레일 리소스의 특정의 경우에 대한 저전력 모드들을 정의하는 예시적인 C 코드가 아래에 제시되어 있다. 수정 발진기 (CXO) 리소스 저전력 모드들에 대한 C-코드 정의들의 예가 아래에 나열된다. 이 예에서, 프로세서는 저전력 모드에서 수정 발진기 리소스를 동작시키기 위한 2 개의 옵션들, 즉 클록 트리 전력을 절감시키지만 여전히 발진기를 동작시키는 전력을 소비하는 게이트된 모드; 및 클록 트리 전력 및 발진기 전력을 절감시키지만 이 저전력 모드를 나간 후에 상당한 웨이크-업 시간을 필요로 하는 (즉, 상대적으로 긴 레이턴시를 가지는) 셧다운 모드를 지원한다.
Figure 112012063890160-pct00005
Figure 112012063890160-pct00006
여기서, 노드 전력 아키텍쳐 (NPA) 노드 및 NP노드에 대한 다른 참조들을 제어하는 것과 관련되는 예시적인 코드의 부분 또는 NP방법들은 오직 예시 목적임에 유의해야 한다. 여러 양태들은 NP노드를 통해서 또는 노드 전력 아키텍쳐를 이용하여 리소스들의 인에이블링 및 디스에이블링을 달성하는데에만 한정되지 않는다. 따라서, 청구항들의 권리범위는, 청구항들에서 그렇게 인용하지 않는 한, NP노드 또는 NP프로세스를 요구하는 것으로 해석되어서는 안된다.
전압 소스들 (Vdd) 에 대한 저전력 모드들을 정의하는데 적합한 C 코드의 또다른 예가 아래에 제시되어 있다. 이 예에서, 프로세서는 코드에서 디지털 로직 및 메모리 회로들에 대해 제어되는 Vdd 를 공급하는, "dig" 및 "mem" 으로 지칭되는, 2 개의 시스템-레벨 전압 레일들을 갖는다. 전압 레일들을 저전력 모드에 두는 것은 저전력 모드를 나갈 때에 온라인으로 그 리소스를 다시 복구하는 것과 연관된 레이턴시 페널티 (penalty) 를 필요로 한다. 이들 2 개의 전압 레일들의 제어는, 하나의 전압 레일이 저전력 모드에 있으면, 다른 전압 레일이 추가적인 레이턴시 페널티를 유발함이 없이 저전력 모드에 있을 수 있기 때문에, 2 개의 리소스들이 병렬로 "웜업"될 수 있으므로, 커플링되어 있다. 이 상호의존성을 처리하기 위해, 다음의 코드는 단일 리소스 "시스템 Vdds" 에 대한 3개의 저전력 모드들, 즉, dig 및 mem 최소화 (minimization); mem-단독 최소화; 및 dig-단독 최소화를 정의한다.
Figure 112012063890160-pct00007
Figure 112012063890160-pct00008
Figure 112012063890160-pct00009
위에서 도시 및 설명한 동적 저전력 리소스 등록 메카니즘은 저전력 리소스들 및 모드들의 세트가 동적으로 확장될 수 있도록 한다. 이 능력은 리소스들에 대해서는 아니지만 유사한 방식으로 처리할 경우에 감소된 전력 동작들에 대해서 허용될 수 있는 저전력 동작 상태들인 "가상 저전력 모드들" 을 제공하는 것을 포함한다. 그러한 가상 저전력 모드들의 예는 프로세서가 아이들 상태에 들어갈 때 디스플레이 리프레시 프로세스들을 정지하는 것을 포함하므로, 리프레시를 요구할 수 있는 어떤 새로운 콘텐츠도 생성되지 않을 것이다. 따라서, 비록 컴포넌트들이 리소스들 자체가 아니더라도, 다른 동작들 및 디바이스 컴포넌트들은, 감소된 전력 소비를 가능하도록 하는 여러 양태들을 이용하여, 관리될 수도 있다.
여러 양태들에서, 프로세서가 아이들 상태에 진입할 수 있을 때, 저전력 작업은 어느 여러 리소스들에 대한 저전력 모드들이 주어진 슬립 사이클 동안 시스템 저전력 구성의 일부로서 진입되어야 하는지를 결정하기 위해 "솔버 (solver)" 프로세스를 실행할 수도 있다. 그러한 경우들에서, 저전력 모드들 및 상이한 리소스들에 대한 그들 저전력 모드들의 특성들은 아이들 상태에 진입할 때 평가되는 슬립 작업에 의해 이용하기 위해 수집될 필요가 있을 수도 있다. 일 양태에서, 이것은 "/sleep/lpr" NP 노드를 통해서 노드 전력 아키텍쳐 (NPA) 로 구현될 수도 있다. "/sleep/lpr" 에 대한 요청들은 저전력 리소스 모드들을 인에이블하는 비트마스크들의 형태로 이루어질 수도 있다. 여러 양태들에서, 개발자들은 저전력 리소스 모드 (및 그의 리소스 저전력 모드 비트마스크들) 를 "/sleep/lpr" NP 노드에 등록하는 sleep_define_lpr() 함수를 통해서, 저전력 리소스 모드를 등록할 수도 있다. 여러 양태들에서, "/sleep/lpr" NP 노드는 인에이블링/디스에이블링에 관심이 있는 리소스 저전력 리소스 모드들을 나타내는 비트마스크에 대해 임의의 시간에 쿼리될 수도 있다. 또한, NP 리소스들은 올바른 비트마스크로 "/sleep/lpr" 에 요청함으로써 그들의 리소스 저전력 리소스 모드들이 아이들 시간에 인에이블되도록, 요청할 수 있다. 그후, 슬립 솔버는 아이들 시간에 저전력 리소스 모드들 및 현재 인에이블되어 있는 모드의 마스크의 리스트에 "/sleep/lpr" 를 쿼리할 수 있다.
위에서 설명한 바와 같이, 여러 양태들에서, 프로세서가 아이들 상태에 진입할 수 있을 때, 저전력 작업은 어느 여러 리소스들에 대한 저전력 리소스 모드들이 진입되어야 하는지를 결정하기 위해 "솔버" 프로세스를 실행할 수도 있다. 이의 예가 노드 전력 아키텍쳐 (NPA) (2) 내의 프로세스 (즉, 노드) 가 리소스, 예컨대 수정 발진기 (4) 에 대해서, 2 개의 이용가능한 저전력 모드들 (6, 8) 중 어느 모드에 진입될 수 있는지를 결정하는 방법을 도시하는 도 1 에 도시되어 있다. 도 1 에 도시된 예에서, 수정 발진기 리소스 (4) 는 2 개의 대체가능한 저전력 모드들, 즉 게이트된 동작 상태 (6) 및 완전한 셧다운 (shutdown) (8) 을 갖는다. 저전력 모드에 두는데 적격인 여러 리소스들 각각에 대해 저전력 모드들의 최적의 세트를 선택하는 것은, 적격인 리소스들 각각에 대해 이용가능한 모드들 중 하나를 선택하는 것을 수반한다. 일 양태에서, 선택된 저전력 리소스 모드들 각각은 저전력 리소스 모드의 "진입" 기능을 호출함으로써 진입될 수도 있다. 일단 저전력 리소스 모드의 진입 기능이 호출되면, 리소스는 그 선택된 저전력 리소스 모드에 의해 정의된 전력 절감 상태로 될 수도 있다. 프로세서가 아이들상태에 있는 동안, 프로세서는 인터럽트 (WFI) 프로세스 및/또는 아이들 프로세스에 대한 대기를 수행할 수도 있다. 프로세서 및 선택된 리소스들은 웨이크업 이벤트가 발생할 때까지 이 상태를 유지할 수도 있다. 웨이크-업 이벤트가 발생할 때, 각각의 선택된 리소스에 대해, 연관된 "퇴장" 기능이 리소스를 원하는 동작 상태 (예컨대, 정상적인 또는 풀 전력 상태) 로 반환하기 위해 호출될 수도 있다.
여러 양태들을 구현하는 프로세스들이 도 2 내지 도 4 에 도시되어 있다. 도 2 를 참조하면, 양태 방법 (10) 에서, 블록 12 에서, 클라이언트가 리소스를 해제하였기 때문에 리소스가 더 이상 사용하고 있지 않을 때, 블록 14 에서, 저전력 리소스 모드 플래그가 예컨대, 위에 리스트된 예들에서 도시된 바와 같은 동작을 구현함으로써, LPM 마스크에서 인에이블될 수도 있다. 이 지점에서, 리소스가 저전력 리소스 모드로 될 수 있음을 나타낸다. 웨이크-업 이벤트가 발생하고 클라이언트가 리소스에의 액세스를 요청할 때, 도 3 에 도시된 방법 (16) 이 구현될 수도 있다. 블록 18 에서, 클라이언트가 리소스를 요청할 때, 블록 20 에서, 리소스에 대한 저전력 리소스 모드 플래그가 예컨대, 위에서 리스트한 예들에 도시된 바와 같은 동작을 구현함으로써, LPM 마스크에서 디스에이블될 수도 있다. 그후, 블록 22 에서, 리소스는 예컨대, 위에서 언급한 바와 같은 연관된 "퇴장" 기능을 달성함으로써, 재활성화될 수도 있다.
도 4 는 프로세서가 특정의 아이들 및 저전력 상태에서 구현할 최적의 시스템 저전력 구성 (즉, 저전력 리소스 모드들의 최적의 세트) 을 식별할 수도 있는 양태 방법 (24) 을 도시한다. 블록 26 에서, 아이들 및/또는 슬립 작업이 프로세서를 저전력 상태에 두도록 개시될 때, 프로세서는 저전력 리소스 마스크에서 리소스 저전력 리소스 모드 플래그들을 체크함으로써, 저전력 리소스 모드로 될 수 있는 그들 리소스들을 식별할 수도 있다. 블록 28 에서, 프로세서는 저전력 리소스 모드로 될 수 있는 리소스들을 식별하기 위해 LPM 마스크들에서 저전력 리소스 모드 플래그들을 체크할 수도 있다. 블록 30 에서, 프로세서는 그 시스템 상에서 실행하는 활성 클라이언트들, 작업들, 또는 서브시스템들의 레이턴시 요건들을 체크할 수도 있다. 예컨대, 프로세서는 클라이언트에 대해 정의된 데이터 구조에 액세스하고, 그 정보를 이용하여 레이턴시 버짓 (budget) 을 결정할 수도 있다. 레이턴시 버짓은 시스템이 웨이크-업 동안 시스템 저전력 상태로부터 받아들일 수 있는 총 레이턴시를 정의할 수도 있다.
일 양태에서, 레이턴시 버짓은 모든 병행 프로세서들 및 클라이언트들에 허용가능한 모든 레이턴시들의 최소한도, 또는 최악의 경우의 레이턴시, 또는 가장 엄격한 레이턴시로서 정의될 수도 있다. 예컨대, 호스트에 연결된 USB 리소스는 호스트가 USB와의 통신을 개시할 때마다 1 밀리초 내에 응답을 요구받을 수도 있다. 이 예에서, 호스트의 레이턴시 요건은 1 밀리초이다. 따라서, 시스템이 아이들상태에 있을 때, 프로세서는 다시 턴온시키는데 밀리초 보다 많이 요구되는 리소스들, 또는 리소스들의 임의의 조합을 턴오프하지 않을 수도 있다. 이것은 임의의 주어진 시간에, 호스트가 그 요청된 작업을 처리할 수 있는 동작 상태로 리턴하기 위해 리소스들을 요청할 때, 시스템을 다시 턴온시키기 위해 인터럽트를 발할 수도 있기 때문이다. 즉, 시스템은 호스트가 인터럽트를 발할 때에 퇴장하는데, 합해서, 1 밀리초보다 많이 필요로 하지 않을 저전력 리소스 모드들을 구현하는 것에 제한된다. 어떤 미래의 시간에, USB 가 호스트로부터 분리되면, USB 가 더 이상 수행되고 있던 작업이 아니기 때문에 1 밀리초 응답 시간이 더 이상 요구되지 않는다. 이 상황에서, 최악의 경우의 레이턴시 (worst case latency) 는 더 높은 레이턴시 요건으로 그 전체 시간을 실행하고 있었던 어떤 다른 작업이 있을 수도 있기 때문에, 어떤 다른 값 (예컨대, 5 밀리초) 로 변할 수 있다. 따라서, 여러 양태들에서, 레이턴시 요건들은, 현재의 동작 상태 요건들에 기초하여 시스템 저전력 모드 구성이 결정될 수 있도록, 그 당시에 평가될 수 있는 시스템 상태에 따르는 동적 성질일 수도 있다. 추가적으로, 저전력 리소스 모드들 자체는 그들 자신의 레이턴시 요건들 뿐만 아니라 상호의존적인 레이턴시들을 가질 수도 있다. 따라서, 어떤 상황들에서, 진입하는데 이용가능한 모든 저전력 리소스 모드들이 반드시 진입되지 않을 수 있다. 이것은 어떤 저전력 리소스 모드들에 진입하는 것이 현재의 동작 상태의 더 악화된 경우 레이턴시 요건들을 위반하는 전체 시스템 레이턴시를 유발할 수도 있기 때문이다.
도 4 로 되돌아가서, 블록 32 에서, 프로세서는 여러 저전력 리소스 모드들에 대한 모드의 아이들 진입 및 아이들 퇴장 레이턴시 시간들에 대해 리소스 정의 데이터를 체크할 수도 있다. 블록 34 에서, 프로세서는 예상 아이들 시간 (즉, 현재의 조건들 및 동작 상태를 고려할 때 프로세서가 웨이크-업 이벤트 이전에 아이들 상태에 머무를 것으로 예상되는 지속기간) 을 결정할 수도 있다. 블록 36 에서, 프로세서는 현재의 상태 조건들을, 예컨대, 현재 온도 및 다른 센서 값들을 저장하고 있는 데이터 레지스터에 액세스함으로써, 결정할 수도 있다. 블록 28 내지 블록 36 에서, 수집한 현재의 상태 및 저전력 리소스 모드 데이터를 이용하여, 블록 38 에서, 프로세서는 "솔버" 기능을 실행하여 최적의 저전력 구성을 식별할 수도 있다. 솔버 기능은 허용가능한 최적의 저전력 구성을 식별하는데 필요한 여러 고려사항들을 조화시키기 위한 많은 상이한 접근방법들을 이용할 수도 있으며, 그 방법들의 일부 예들이 도 7 내지 도 10 를 참조하여 아래에 설명되어 있다. 블록 28 내지 블록 38 중 하나 이상의 일부로서, 블록 38 에서, 프로세서는 예컨대, 현재 온도에서의 단위 시간 당 잠재적인 전력 절감량들 (및 다른 동작 조건) 과, 예상 아이들 시간의 곱셈을 계산하여, 각각의 저전력 리소스 모드 및 저전력 리소스 모드들의 각각의 조합에 대해 예상될 수도 있는 잠재적인 전력 절감량들을 계산하고, 이 값을 솔버 프로세스의 일부로서 이용할 수도 있다. 일단 최적의 저전력 구성이 식별되고 하나 이상의 저전력 리소스 모드들이 각각의 리소스, 작업 및/또는 서브시스템에 대해 선택되면, 블록 40 에서, 프로세서는 예컨대, 각각의 선택된 저전력 리소스 모드들이 연관된 진입 기능을 실행하도록 함으로써, 그 저전력 구성에 진입할 수도 있다. 시스템은 타이머 인터럽트와 같은, 웨이크업 이벤트가 발생할 때까지 이 아이들 상태 및/또는 저전력 상태에 머무를 것이다. 웨이크업 이벤트 또는 인터럽트가 발생할 때, 블록 42 에서 프로세서 및 연관된 리소스들은 예컨대, 그들 리소스들을 그들의 정상적인 동작 상태로 리턴시키는 저전력 리소스 모드들에서 리소스들 각각에 대한 일련의 퇴장 기능들을 실행함으로써, 아이들 상태로부터 퇴장할 것이다.
여러 양태들에서, 블록 42 에서, 직접 쿼리를 받는 타이머 서브-시스템과 연관된 기지의 웨이크업 이벤트가 있을 수도 있다. 또한, 여러 양태들은 웨이크업 이벤트가 어떤 시간량으로 발생할 것으로 클라이언트들이 생각하는 것을 클라이언트들로 하여금 힌트할 수 있도록 하는 웨이크 리소스 (wake resource) 를 포함할 수도 있다. 여러 양태들에서, 시스템은 리소스들 및/또는 프로세서들이 주어진 슬립 상태에서 유지할 것 같은 기간을 예측 및/또는 제어하는 메커니즘들을 포함할 수도 있다. 이들 양태들에서, 프로세서는 리소스들이 활동정지할 것으로 예상할 수 있는 기간을 제어하기 위해 어떤 이벤트들을 연기할 수도 있다. 여러 양태들에서, 리소스들이 웨이크업되도록 강요되는 하드 (hard) 웨이크업 지점이 있을 수도 있다. 여러 양태들에서, 시스템은 리소스들로부터의 "힌트들" 을 이용하여, 예상 웨이크업 시간 프레임을 결정할 수도 있다. 여러 양태들은 프로세서에 의해 사용될 수도 있는 예측 알고리즘들을 구현하여, 가장 효율적인 웨이크업 시간을 추정할 수도 있다. 여러 양태들은 하드 힌트, 힌트들, 및 학습 메커니즘들의 조합을 이용하여, 예상 웨이크업 시간을 결정할 수도 있다. 여러 양태들은 예상 웨이크업 시간을 이용하여, 여러 리소스들이 결정된 예상 웨이크업 시간까지 저전력 리소스 모드들로 되면 전력이 얼마만큼 절감될지를 결정할 수도 있다. 그 결과, 그러한 예상 전력 절감량들은, 슬립 사이클 동안 시스템 저전력 모드 구성으로 구현하기 위해, 특정의 리소스들을 저전력 모드에 두도록 선택하는 (즉, 저전력 리소스 모드들을 선택하는) 프로세스에 이용될 수도 있다.
여러 양태들은 전력 절감량들의 합산, 및 리소스들을 정지시키고 동작까지 회복시키는 에너지 비용 양자를 이용하여, 전력 함수를 결정할 수도 있다. 여러 양태들은 전력 함수를 이용하여, 만약 있다면, 어느 리소스들이 저전력 리소스 모드로 되어야 하는지를 결정할 수도 있다. 또한, 여러 양태들은 전력 함수를 이용하여, 구현되는 저전력 리소스 모드들의 여러 조합들에 의해 제공되는 잠재적인 시스템 저전력 구성들 각각과 연관되는 순수 전력 절감량들을 결정할 수도 있다. 여러 양태들은 순수 전력 절감량들을, 여러 리소스들을 저전력 리소스 모드로 한 후에 그들을 동작 모드로 리턴시키는데 요구되는 작업량 만큼 오프셋된 계산된 시간 프레임에 걸쳐서 절감되는 전력량으로서 계산할 수도 있다. 여러 양태들에서, 순수 전력 절감량들은 기울기 M 및 오프셋 B 과 함께 예상 아이들 시간 X 를 갖는 간단한 선형 다항식 모듈을 이용하여 함수에 의해 계산될 수도 있으며, 여기서 계산 전력 절감량들은 MX+B 이다. 여러 양태들은 구성가능한 시스템 파라미터들에 저장된 값들에 기초하여 순수 전력 절감량들을 주기적으로 계산할 수도 있다.
여러 양태들에서, 순수 전력 절감량들은 각각의 리소스에 대해 표로 작성될 수도 있다. 즉, 여러 양태들은 이용가능한 저전력 리소스 모드들 각각과 연관된 여러 순수 전력 절감량들을 포함하는 테이블을 미리 계산할 수도 있다. 여러 양태들은 구성가능한 시스템 파라미터들에 저장된 값들에 따라서, 표로 작성된 리스트를 그때 그때, 연속적으로, 또는 주기적으로 생성할 수도 있다. 여러 양태들에서, 결정들 사이의 경계들은 테이블에 저장된 후, 어느 잠재적인 시스템 저전력 구성이 현재의 시스템 요구들 및 동작 상태에 가장 잘 맞을 지에 관해서 결정할 때에 참조될 수도 있다. 예컨대, 시스템은 시간에 기초한 많은 선호되는 저전력 구성들을 나타내는 정보 (예컨대, X 시간까지의 A 모드에 대한 선호사항, 그후, Y 시간까지의 모드 B 에 대한 선호사항, 그후, 모드 A 및 모드 B 에 대한 선호사항) 를 저장할 수도 있다.
여러 양태들에서, LPM 플래그들은, 최적의 시스템 저전력 모드 구성을 정의하기 위해 저전력 리소스 모드들이 선택되는 레벨까지 의존성들을 체킹하는 프로세스가 밀어 내려지기 때문에, 리소스를 명시적으로 지배하는 것에 제한되지 않는다. 예컨대, 리소스 'A' 가 2 개의 저전력 리소스 모드들 '1' 및 '2' 를 갖는다고 가정하자. 모드 '1' 및 모드 '2' 양자가 같은 리소스이므로, 리소스가 저전력 리소스 모드에 들어갈 수 있다는 것을 나타내는 공통의 LPM 마스크 비트를 공유할 수도 있다. 따라서, 이 예에서, 모드 '1' 및 모드 '2' 양자는 LPM 마스크 내의 비트 'A' 에 의존하며, 비트 'A' 는 그 리소스에 대한 NP 리소스 드라이버에 의해 제어된다. 그러나, 모드 '2' 가, 슬립에 진입할 수 있는 (즉, 임의의 클라이언트 또는 프로세서에 의해 사용되지 않는) 리소스 'A' 및 또한 슬립에 진입할 수 있는 리소스 'B' 양자에 대해 의존성을 갖는 모드 '1' 의 특수화된 형태일 수 있다는 추가적인 복잡한 상태가 있을 수도 있다. 즉, 리소스 'A' 의 저전력 리소스 모드 '2' 가 또한 저전력 모드로 되는 리소스 'B' 에 의존할 수도 있다. 따라서, 이 예에서, 모드 '2' 는 리소스 'A' 및 리소스 'B' 양자의 LPM 마스크 비트들에 의존할 것이다. 따라서, 이 예에서, LPM 플래그들은 모드 '2' 의 의존성 때문에 그 리소스를 명시적으로 지배하지는 않는다.
정적 및 동적 의존성들을 예시하기 위해, 클록 드라이버 리소스 및 어떤 다른 여러가지 종류의 하드웨어 리소스에 전력을 제공하는 전압 레귤레이터 리소스의 예를 고려한다. 전압 레귤레이터는 2 개의 동작 모드들, 즉 정상 동작 모드 및 저전력 모드 (즉, 그 저전력 리소스 모드) 를 가질 수도 있다. 전압 레귤레이터를 저전력 상태에 두는 것은 전압 레귤레이터에 의해 소비되는 에너지 오버헤드의 양을 감소시켜, 전체적으로 낮은 시스템 전력 수요를 유발시킬 수도 있다. 그러나, 그 저전력 모드에서 허용되는 전력보다 더 많은 전력이 전압 레귤레이터로부터 인출되면, 전압 레귤레이터가 고장나거나 잠재적으로는 디바이스 하드웨어를 손상시킬지도 모른다. 예컨대, 클록 드라이버는 전압 레귤레이터가 그 저전력 모드에서 제공될 수 있는 전력 보다 더 많은 전력을 소비할 수도 있다. 이 경우, 전압 레귤레이터는 클록 드라이버에 대해 하나의 정적 의존성을 가지고 (즉, 클록이 턴오프될 수 있어야 한다), 다른 여러가지 종류의 하드웨어에 대해 또다른 정적 의존성을 가질 수도 있다 (즉, 여러가지 종류의 하드웨어가 턴오프되어야 한다). 게다가, 전압 레귤레이터는 동적 의존성을 가질 수도 있다: 클록 드라이버가 계속 유지하는 한, 저전력 모드에 진입하기 위해 전압 레귤레이터로부터 너무 많은 전력이 인출될 것이다. 클록 드라이버가 턴오프되자 마자, 전압 레귤레이터에 부하가 존재하지 않을 것이며 저전력 모드에 진입하는 것이 가능할 것이다. 따라서, 클록 드라이버의 전력 오프 모드는 전압 레귤레이터의 저전력 리소스 모드들의 동적 의존성이다.
위에서 설명한 바와 같이, 정적 의존성들이 어느 정도의 확실성으로 예상될 수 있지만, 동적 의존성들은 예정보다 빨리 결정하기 어렵다. 게다가, 동적 의존성들은 컴포넌트들 및/또는 리소스들의 수가 증가함에 따라 지수함수적으로 더 복잡해진다. 여러 양태들에서, 여러 동적 의존성들을 관리하기 위해 솔버 프로세스가 이용된다. 여러 양태들에서, 여러 동적 의존성들을 관리하기 위해 아이들 작업이 이용된다.
여러 양태들의 동작들이 도 5 에 도시되어 있으며, 도 5 는 프로그래밍 노드 및 리소스 그래프 예시를 나타내고 있다. 도 5 는 3개의 클라이언트들 (50, 52, 54) 이 활성이고 3개의 리소스들, 특히, 메모리 (70), 클록 발진기 (78) 및 전압 레일 (76) 이 저전력 리소스 모드로 두는데 이용될 수 있는 동작 상태를 도시하고 있다. 이 예시에서, 프로세싱 노드들 (58, 69, 70, 72, 74, 76, 및 78) 은 시스템이 아이들 작업 (60) 을 실행함으로써 저전력 리소스 모드에 진입하는 것을 준비하고 있을 때 거치는 프로세스들을 나타낸다. 투표를 위해 클라이언트들 (50, 52, 54) 을 획득하는 대신에, 저전력 구성에 기초하여 그 시스템을 저전력 상태로 두기 위해서, 그 프로세스가 제거되어, 노드 다이어그램을 가로지르는 슬립 클라이언트 (64) 로 대체된다. 이 예시에서, (메모리를 이용하고 있었던) 클라이언트 1 (50) 은 노드 (70) 으로의 화살표로 표시한 바와 같이 메모리를 해제하고, LPM 마스크에 적당한 저전력 리소스 모드 인에이블먼트 (enablement) 비트를 설정한다. 이와 유사하게, 클라이언트 2 (52) 는 노드들 (74 및 76) 으로의 화살표들로 표시한 바와 같이 전압 레일 리소스 및 클록을 해제하고, LPM 마스크에 적당한 저전력 리소스 모드 인에이블먼트 비트들을 설정할 수도 있다. 클라이언트 3 (54) 이 노드 (69) 로의 화살표로 표시한 바와 같이 프로세서를 해제할 때, 프로세서는 저전력 모드 솔버 (66) 프로세스를 실행하기 전에, LPM 마스크를 체크하고 시스템 레이턴시를 체크하고 그리고 예상 아이들 시간을 체크함으로써, 아이들 작업 (60) 을 실행할 수도 있다. 전체 그래프가 횡단된 후, 슬립 클라이언트 (64) 는 주어진 현재의 동적 조건들에 기초하여 그 리소스들에 대해 선택된 활성 저전력 리소스 모드들의 세트에 의해, 저전력 리소스 모드 "진입" 기능들을 호출할 수도 있다.
도 6 은 또다른 양태 방법에 대한 유사한 프로세스 노드 및 리소스 그래프를 도시하고 있다. 이 양태 방법은 슬립 타임라인으로부터의 프로세서 그래프 횡단을 제거하는 추가적인 이점을 제공한다. 도 6 에 도시된 바와 같이, 프로세서 의존성들 (도 5 에 화살표 48 로 나타냄) 은, 프로세서 리소스들로 하여금, 특수 API 를 이용하여 저전력 리소스 모드 마스크들과 직접 상호작용하도록 함으로써, 프로세스 노드 그래프에서 생략될 수 있다. 또한, 도 6 은 LMP 마스크 (80) (도 5 에 도시됨) 가 시스템 저전력 상태 (90) 에 대해서 LPM 마스크로, 아이들 저전력 상태 (92) 에 대해서 LPM 마스크로, 및 저전력 상태 (94) 에 대해서 LPM 마스크로 대체될 수 있음을 도시하고 있다. 이 양태에서, 저전력 리소스 모드에 두는데 이용가능한 리소스들 (예컨대, 메모리 (70), 클록 발진기 (78), 및 전압 레일 (76)) 은 시스템 저전력 상태 (90) 에 대한 LPM 마스크에 LPM 인에이블 (비트) 및/또는 LPM 디스에이블 (비트) 을 직접 설정할 수도 있다. 클라이언트 3 (54) 이 노드 (69) 로의 화살표로 표시된 바와 같이 프로세서를 해제할 때, 프로세서는 아이들 저전력 상태 (92) 에 대한 LPM 마스크를 체크하고 시스템 레이턴시를 체크하고 예상 아이들 시간을 체크함으로써, 아이들 작업 (60) 을 실행할 수도 있다. 아이들 작업 (60) 의 저전력 리소스 모드 "진입" 기능들 (86) 은 저전력 상태 (94) 에 대한 LPM 마스크를 통해서, 주어진 현재의 동적 조건들에 대해 선택된 활성 저전력 리소스 모드들의 세트에 의해 호출될 수도 있다.
예시적인 양태에서, 저전력 리소스 모드들은 일련의 비트 벡터들로서 구현될 수도 있다. 예컨대, 시스템 저전력 상태 (즉, 리소스 사용 및 클라이언트 경로 상황 외부의 클라이언트들에 기인한 현재 활성 저전력 상태들); 아이들 저전력 상태 (즉, 아이들 작업에서 발견된 동적 시스템 조건들, 예컨대 레이턴시 및 예상 아이들 시간에 기인하는 현재 활성 저전력 모드 상태들); (예컨대, 비휘발성 아이템들 또는 유사한 것들을 통한) 디버그/제시 (bring up) 조건들; 및 각각의 코어 프로세서 노드 의존성에 대한 하나의 비트에 대해서, 비트 벡터들이 존재할 수도 있다. 각각의 비트에 대한 디폴트 상태는 디스에이블된 저전력 리소스 모드일 수도 있다. 도 5 또는 도 6 에 도시된 노드 그래프를 변경하여 리소스 사용 요건들을 설정하는 클라이언트들은 저전력 비트들 중 임의의 비트가 인에이블되도록 함으로써, 특정의 리소스가 저전력 리소스 모드로 될 수 있도록 한다. 일 양태에서, 아이들 작업은 모드간 의존성들, 레이턴시, 예상 아이들 시간, 및 온도를 포함한, 다른 인자들에 관한 데이터를 수집하여, 그 자신의 비트 마스크를 설정할 수도 있다. 이 양태에서, 도면들에 나타내지는 않지만, 최종 LPM 마스크 설정들은 시스템 및 아이들 마스크들의 비트 단위 가산을 통해서 결정될 수도 있다.
여러 양태들에서, 많은 메카니즘들은 현재의 동작 상태 및 조건들에 기초하여 리소스 저전력 리소스 모드들의 최적의 세트를 식별하기 위해 저전력 리소스 모드 선택들 솔버에 이용될 수도 있다. 일상적인 말로, 저전력 리소스 모드들의 최적의 세트를 선택하는 문제는 조합 최적화에서 잘 알려져 있는 문제인 "냅색 문제" 의 한 형태이다. 냅색 문제에 대한 여러 공지의 알고리즘 또는 휴리스틱 솔루션들은 저전력 리소스 모드 선택들 솔버에 구현될 수도 있다. 그러한 방법들은 if/then/else 로직 트리 알고리즘들, 테이블 탐색 알고리즘, 및 상이한 리소스들의 대체가능한 저전력 리소스 모드들의 대안적인 치환들 및 조합들을 통해서 체계적으로 작동하는 비교 방법들을 포함할 수도 있다.
일 예로서, 도 7 은 여러 리소스들 및 대체가능한 저전력 리소스 모드들을 통해서 동작함으로써 저전력 리소스 모드들의 최적의 세트를 선택하는 양태 방법 (38a) 을 도시한다. 방법 (38a) 은 도 4 를 참조하여 위에서 설명한 방법 (24) 의 일부로서 달성될 수도 있으며, 따라서 잠재적인 전력 절감량들, 퇴장 레이턴시 시간 및 의존성들을 포함하여, 저전력 리소스 모드 특성들 및 비트맵들은 이미 액세스된 것으로 가정될 수도 있다. 현재의 아이들 상태에서, 저전력 리소스 모드에 둘 수도 있는 리소스들 모두의 저전력 리소스 모드들 모두를 평가하기 위해, 블록 100 에서, 프로세서는 LPM 플래그가 인에이블되는 각각의 리소스를 증분하여 선택한 후, 블록 102 에서, 그 선택된 리소스에 대한 각각의 저전력 리소스 모드를 증분하여 선택할 수도 있다. LPM 마스크에 설정된 플래그들이 체크되는 방법은 구현예에 따라서, 그리고 여러 리소스들의 상호의존성들에 따라서 변할 수도 있다. 일 구현예에서, 프로세서는 LPM 마스크에서 플래그들을 체크할 수도 있으며, 그 비트가 설정되어 있지 않으면 그 리소스에 대해 어떤 저전력 리소스 모드들도 고려하지 않을 수도 있다. 예컨대, 리소스 'A' 저전력 리소스 모드들 모두가 'A' 비트가 설정되도록 요구된다고 프로세서가 판단하면, 박스 100 에서, 프로세서는 'A' 비트를 체크할 수 있으며, 그 비트가 설정되어 있지 않으면 그 리소스에 대해 어떤 저전력 리소스 모드들도 고려하지 않을 수 있다. 그러나, 블록 102 에서, 프로세서는, 추가적인 리소스 비트들이 또한 그 의존성들에 따라서 설정될 (또는 설정되지 않을) 것을 선택된 리소스에 대한 일부 저전력 리소스 모드들이 요구할 수도 있기 때문에, 여전히 LPM 마스크를 체크하는 것을 필요로 할 수도 있다. 따라서, 일 양태에서, 선택된 리소스에 대해 특정의 저전력 리소스 모드를 선택하기 전에, 블록 102 에서, 프로세서는 저전력 리소스 모드에 의해 요구되는 다른 리소스 LPM 플래그들이 그 요구된 값들로 설정될 수 있는지 여부를 체크할 수도 있다.
추가 양태에서, 가상 리소스들과 함께 사용하기 위해 적용될 수도 있는 것 처럼, 저전력 리소스 모드에 두는데 리소스가 이용가능한지 여부의 결정은 다른 리소스들에 대해 설정된 LPM 플래그들에 의존할 수도 있다. 예컨대, 저전력 리소스 모드들 '3' 및 '4' 에 대해 정의된 가상 리소스 'C' 가 존재하면, 저전력 모드 '3' 의 가용성은 리소스 'A' 에 대한 LPM 마스크 비트에 의존하지만, 저전력 모드 '4' 의 가용성은 리소스 'B' 에 대한 LPM 마스크 비트에 의존할 것이다. 따라서, 이 예에서는, 가상 리소스 'C' 를 저전력 모드에 두는 것의 가용성은, 리소스들 'A' 및 'B' 의 상태에 따라서, 저전력 모드들 '3' 또는 '4' 중 하나에 진입하는 가상 리소스이기 때문에, 리소스 'C' 에 대한 LPM 마스크 비트에 명시적으로 의존한다. 따라서, 일 양태에서, 블록 100 및 블록 102 양자 에서 프로세서는 LPM 마스크 비트들을 고려함으로써 평가를 위한 리소스들을 선택할 수도 있다.
결정 블록 104 에서, 프로세서는 선택된 리소스 저전력 리소스 모드 레이턴시를 (위에서 설명한 단계 30 에서 결정된) 레이턴시 버짓과 비교하여, 저전력 리소스 모드가 현재의 시스템 레이턴시 요건들과 호환할 것인지 여부를 결정할 수도 있다. 선택된 리소스의 선택된 저전력 리소스 모드의 퇴장 레이턴시가 레이턴시 버짓을 초과하면 (즉, 결정 단계 104 = "아니오"), 결정 블록 112 에서, 프로세서는 그 선택된 리소스에 대해 또다른 저전력 리소스 모드가 있는지 여부를 결정할 수도 있다. 한편, 선택된 리소스의 선택된 저전력 리소스 모드의 퇴장 레이턴시가 레이턴시 버짓 내이면 (즉, 결정 단계 104 = "예"), 단계 106 에서, 프로세서는 그 선택된 저전력 리소스 모드와 연관된 전력 절감량들을 그 선택된 모드에 대한 전력 절감량들에 추가하여, 새로운 순수 절감량들 (즉, 평가될 저전력 모드를 포함한 저전력 구성에 대한 추정된 전력 절감량들) 을 획득할 수도 있다. 즉, 선택된 저전력 리소스 모드의 예상 전력 절감량들이, 평가될 특정의 리소스 저전력 리소스 모드를 포함하는 저전력 리소스 모드들의 세트에 의해 제공될 순수 전력 절감량들을 결정하기 위해, 이미 평가된 다른 리소스 저전력 리소스 모드들의 전력 절감량들에 추가될 수도 있다. 일 양태에서, 각각의 저전력 리소스 모드에 대한 예상 전력 절감량들은 현재 온도 (및/또는 다른 동작 조건들) 에서 단위 시간 당 잠재적인 전력 절감량들 (또는 시간의 함수로서) 과 예상 아이들 시간, 또는 어떤 함수와의 곱셈으로서 결정될 수도 있다. 결정 블록 108 에서, 프로세서는 블록 106 에서 구한 합계를 저전력 리소스 모드들의 이전에 선택된 최상의 세트의 전체 전력 절감량들과 비교하여, 선택된 리소스 저전력 리소스 모드를 포함하는 것이 더 큰 전력 절감량들을 유발하는지 여부를 결정할 수도 있다. 선택된 리소스 저전력 리소스 모드를 포함하는 조합이 더 큰 전력 절감량들을 유발하면 (즉 결정 블록 108 = "예"), 블록 110 에서, 컴퓨팅 디바이스는 저전력 리소스 모드들의 선택된 세트에서 그 리소스에 대한 선택된 저전력 리소스 모드를 포함할 수도 있다.
선택된 리소스 저전력 리소스 모드를 포함하는 조합이 더 적은 전력 절감량들을 유발하면 (즉 결정 블록 108 = "아니오"), 결정 블록 112 에서, 프로세서는 그 선택된 리소스에 대해 또다른 저전력 리소스 모드가 있는지 여부를 결정할 수도 있다. 선택된 리소스와 연관된 또다른 저전력 리소스 모드가 있으면 (즉, 결정 블록 112 = "예"), 프로세서는 블록 102 로 되돌아가서, 평가를 위해 다음 저전력 리소스 모드를 선택할 수도 있다. 선택된 리소스의 모든 저전력 리소스 모드들이 평가되었으면 (즉, 결정 블록 112 = "아니오"), 결정 블록 114 에서, 프로세서는 저전력 리소스 모드로 될 수 있는 또다른 리소스가 있는지 여부를 결정할 수도 있다. 평가될 또다른 리소스가 있으면 (즉, 결정 블록 114 = "예"), 프로세서는 블록 100 로 되돌아가서, 평가를 위해 다음 리소스를 선택할 수도 있다. 일단 모든 리소스들이 평가되었으면 (즉, 결정 블록 114 = "아니오") 알고리즘은 구현할 저전력 리소스 모드들의 최적의 세트를 식별해야 하며, 이어서, 도 4 및 블록 40 를 참조하여 위에서 설명한 바와 같이 저전력 리소스 모드들의 선택된 세트를 계속해서 구현할 수도 있다.
도 7 에 도시된 것과 같은, 조합 계산 알고리즘이 주어진 동작 조건에 대한 저전력 리소스 모드들의 최적의 세트를 식별할 수도 있지만, 그러한 계산들은 특히, 예상 아이들 시간들이 단지 수 밀리초일 수도 있고 리소스들의 수가 많을 때, 수치적으로 구현하기가 너무 어려울 수도 있다. 따라서, 여러 양태들에서, 냅색 문제에 대한 근사 솔루션들 및 미리 결정될 수 있는 솔루션들이 구현될 수도 있다. 슬립 사이클 보다 앞서서 프로세서에 의해 결정될 수도 있는 솔루션의 예는 테이블 룩업 방법을 이용하는 예이다. 테이블 룩업 방법에서, 여러 저전력 리소스 모드들의 성능은 예상 아이들 시간, 온도, 현재의 시스템 구성, 및 다른 파라미터들의 관해서 런타임에서 (즉, 개발자에 의해 미리 정의되지 않는 시점에서) 프로세서에 의해 계산될 수도 있다. 이들 계산들의 결과들은 슬립 사이클 시에 대략 저전력 리소스 모드들의 최적의 세트를 빠르게 식별하기 위해 프로세서에 의해 사용될 수 있는 테이블 또는 그래프의 형태로 제공될 수도 있다.
도 8a 는 전력 절감량들 대 예상 아이들 시간에 대해 도시된 3개의 동작 저전력 구성들 (120, 122, 124) 의 대체가능한 세트들의 1차원 그래프를 도시한다. 그래프가 나타내는 것 처럼, 3개의 대체가능한 저전력 구성들은 예상 아이들 시간들의 상이한 범위들에서 상이한 상대적인 전력 절감량들을 발생할 수도 있다. 도 8a 는 대체가능한 저전력 구성 (120) 이 초기에는 (예컨대, 아이들 시간의 초기로부터 화살표 126 로 표시된 시간 까지) 음의 전력 절감량들을 유발하지만 그 이후에는 양의 전력 절감량들을 유발함을 도시하고 있다. 따라서, 프로세서 슬립 사이클의 초기와 화살표 126 으로 표시된 시간 사이에서, 오직 저전력 구성들 (122 및 124) 만이 엘리먼트 128 로 표시된 바와 같이, 전력 절감량들을 유발한다. 또한, 도 8a 는 슬립 사이클의 초기와 화살표 126 으로 표시된 시간 사이의 기간에서, 저전력 구성 (122) 이 저전력 구성 (124) 보다 더 큰 전력 절감량들을 제공할 것임을 도시하고 있다. 화살표 126 과 화살표 130 사이의 시간으로부터, 모든 3개의 저전력 구성들이 양의 전력 절감량들을 산출할 것이며, 저전력 구성 (122) 이 최대한의 전력 절감 포텐셜을 제공하고, 이어서 124 및 120 가 각각 뒤따를 것이다. 이것은 엘리먼트 132 로 도시되어 있으며, 저전력 구성 (122) 이 124 보다 더 높은 전력 절감량들을 갖고, 다음으로 124 가 120 보다 더 높은 전력 절감량들을 갖는다는 것을 나타낸다. 화살표 130 과 화살표 136 사이의 시간 프레임에서, 모든 3개의 저전력 구성들은 양의 전력 절감량들을 발생하며, 3개의 대체 구성들이 엘리먼트 134 로 표시된 바와 같이, 122, 120 및 124 의 순서로, 전력 절감 포텐셜을 제공한다. 화살표 136 으로 표시된 시간 이후, 3개의 대체 구성들은 엘리먼트 138 로 표시된 바와 같이, 120, 122 및 124 의 순서로, 전력 절감 포텐셜을 갖는다.
도 8a 에 도시된 양태에서, 프로세서는 예상 아이들 시간을 탐색 값으로 이용하여 대체가능한 저전력 구성들의 우선순위화된 순서를 결정할 수 있다. 도 8a 는 이 양태를 2차원 그래프 (즉, 전력 절감량들 대 예상 아이들 시간) 로 도시하지만, 양태 방법은 온도, 레이턴시 등과 같은 파라미터들을 포함한, 다차원 그래프로 구현될 수도 있다. 일 양태에서, 프로세서는 공지의 3차원 그래핑 (graphing) 분석 알고리즘들을 이용하여, 다수의 파라미터들에 기초하여 대략 최적의 저전력 구성 또는 구성들의 우선순위화된 순서를 식별할 수도 있다. 또한, 그러한 그래핑 (graphing) 은 프로세서에 의해 런 타임에 수행될 수도 있으며 개발자에 의해 미리 정의되지 않을 수도 있다.
사전-계산이 탐색 프로세스에서 요구되는 작업을 감소시키더라도, 전환 지점들 (transition points) 의 수가 (상이한 리소스들의 수에 속박되는) 상이한 저전력 모드들의 수 및 차원들의 수 (즉, 최적의 시스템 저전력 모드 구성을 선택할 때에 사용되는 파라미터들) 에 따라서 증가된다. 그러한 경우들에서, 그러한 탐색 테이블을 저장하는데 필요한 공간은 지나치게 커질 수도 있다. 따라서, 추가 양태에서, 탐색 테이블의 상이한 영역들을 통합해서, 추적될 필요가 있는 분리된 영역들의 수를 줄임으로써, 탐색 테이블의 사이즈를 감소시키기 위해서, 휴리스틱스가 이용될 수도 있다. 도 8b 는 저전력 구성들의 랭크된 순서가 입력 파라미터들의 일부 영역들 (예컨대, 화살표 126 과 화살표 136 사이의 영역) 에서 하나 또는 2 개의 대체가능한 랭킹 리스트들 (140 으로 도시됨) 의 형태로 제시될 수도 있는 예시적인 양태를 나타낸다. 도 8b 는 상이한 영역들을 통합하는 것이 조건들의 일부 세트들에 대해 차선의 결과들을 발생할 수도 있다는 것을 도시하고 있다. 예컨대, 화살표 126 과 화살표 136 사이의 시간 영역에서, 화살표 126 에 인접한 영역에 대한 최적의 결과들이 화살표 136 에 인접한 영역에 대한 최적의 결과들과 다르다. 이들 차선의 결과들의 영향을 경감하기 위해, 여러 양태들에서, 프로세서는 상대적으로 무관심한 영역들에 부정확한 랭킹들을 부여할 수도 있다. 영역들은 드물게 경험되는 조건들 (예컨대, 온도 극치) 을 기술하는 경우에 무관심한 것으로서 분류될 수도 있다. 여러 양태들에서, 프로세서는, 비-최적의 랭킹들에서 에러를 평가하고 그 에러들이 최소한 이거나 또는 어떤 설정된 임계치 아래인 것으로 결정함으로써, 차선의 결과들이 허용가능하다고 결정할 수도 있다. 그러한 휴리스틱 (heuristic) 규칙들의 발생 (development) 은 런타임에 프로세서에 의해 수행될 수도 있으며, 개발자에 의해 미리 정의되지 않을 수도 있다.
이 양태의 확장으로서, 프로세서는, 테이블들을 특정의 컴퓨팅 디바이스에 의해 가장 빈번하게 경험된 조건들에 맞추기 위해, 아래에서 좀더 완전하게 설명하는 바와 같이, 디바이스가 가장 빈번하게 경험한 조건들에 관한 통계치를 수집하고, 탐색 테이블들을 재계산할 수도 있다. 예컨대, 알래스카에서 사용되는 셀룰러 전화기는 사하라에서 사용된 셀룰러 폰에 비해 더 많은 그 테이블 공간을 차가운 온도 영역들에 할당하는 탐색 테이블을 계산할 수도 있다. 이 양태는 각각의 컴퓨팅 디바이스로 하여금, 환경 (즉, 온도) 및 측정된 사용 패턴들 (예컨대, 예상 아이들 시간) 양자의 관점에서 그 일반적인 조건들에 최적화된 저전력 구성 결정들을 할 수 있도록 한다.
도 9a 는 위에서 설명한 솔버 프로세스에 대한 테이블 탐색 방법을 구현하는 양태 방법 (38b) 을 도시한다. 방법 (38b) 의 블록 150 에서, 프로세서는 (도 4 를 참조하여 위에서 설명한 바와 같은) 블록 28 내지 블록 36 에서 결정된 파라미터들을 이용하여, 저전력 구성을 선택할 수도 있다. 위에서 언급한 바와 같이, 일 양태에서, 이 테이블 탐색 프로세스는 3-D 맵핑 분석 알고리즘의 사용을 포함할 수도 있다. 일단 최적의 저전력 구성이 식별되면, 위에서 설명한 바와 같이 단계 40 에서, 프로세서는 그 선택된 모드에 진입할 수도 있다.
도 9b 는 추가 평가를 위해서 대체가능한 구성들의 랭크된 (ranked) 리스트를 생성하는 테이블 탐색 방법을 구현하는 대안적인 양태 방법 (38c) 를 도시한다. 방법 (38c) 의 블록 152 에서, 프로세서는 (위에서 설명한 바와 같은) 블록 28 내지 블록 36 에서 결정된 파라미터들을 이용하여, 잠재적인 전력 절감량들에 기초하여 대체가능한 저전력 구성들의 랭크된 리스트를 획득할 수도 있다. 블록 154 에서, 프로세서는 평가를 위해, 최상위에 랭크된 대체가능한 저전력 구성을 선택할 수도 있다. 결정 블록 156 에서, 프로세서는 그 선택된 구성의 모드 퇴장 레이턴시가 최대 허용가능한 시스템 레이턴시 미만인지 여부를 결정할 수도 있다. 그 선택된 저전력 구성의 레이턴시가 시스템 요건을 만족하면 (즉, 결정 블록 156 = "예"), 위에서 설명한 바와 같이 단계 40 에서, 프로세서는 선택된 모드에 진입할 수도 있다. 선택된 저전력 구성의 레이턴시가 시스템 레이턴시 요건을 만족하지 않으면 (즉, 결정 블록 156 = "아니오"), 프로세서는 평가용으로, 다음 저전력 구성을 선택할 수도 있다. 이 프로세스는, 모든 받아 들일 수 없는 저전력 구성들이 제거될 때까지, 또는 시스템 레이턴시 요건들을 만족시키는 하나 이상의 저전력 구성들이 식별될 때까지 계속될 수도 있다. 저전력 구성들 모두가 제거되거나, 또는 어떤 만족스러운 저전력 구성도 식별되지 않으면, 프로세서는 가용 예상 전력 절감량들, 동작 요건들, 및 위에서 설명한 다른 인자들에 기초하여, 저전력 구성에 진입해야 하는지 또는 동작 상태에 계속 있어야 하는지 여부에 대해서 결정할 수도 있다.
위에서 설명한 테이블 탐색 솔버 접근방법은 시스템 저전력 구성들을 제거하고 상대적으로 빠르게 계산될 수 있는 하나 이상의 최적의 저전력 구성들을 식별하는 유연한 데이터-유도 (data-driven) 접근방법을 제공한다. 그러나, 어떤 상황들에서, 이 접근방법은 사전에 이루어진 계산들에 기초하기 때문에, 모든 동작 상태들 및 조건들에서, 최적의 저전력 구성을 식별할 수 없을 수도 있다. 도 10 은 예상 아이들 시간에 기초하여, 조합 계산 알고리즘 방법 및 테이블 탐색 방법 양자를 이용하기 위해 구현될 수도 있는 대안적인 양태 방법 (38d) 을 도시하고 있다. 결정 블록 160 에서, 프로세서는 최적의 구성을 직접 결정하는데 요구되는 계산 시간에 맞출 수 있도록 예상 아이들 시간이 충분히 길 것인지 (즉, 미리 결정된 임계치보다 더 길 것인지) 여부, 또는 더 빠른 테이블 룩업 방법이 구현되어야 하는지 여부를 결정한다. 예상 아이들 시간이 임계치를 초과한 후, 좀더 엄밀한 솔버 알고리즘을 완료하는데 요구되는 여분의 계산 시간을 맞추고 있다고 프로세서가 결정하면 (즉, 결정 블록 160 = "예"), 프로세서는 도 7 을 참조하여 위에서 설명한 알고리즘을 수행하여, 블록 40 에서 구현하는 최적의 저전력 구성을 결정할 수도 있다. 한편, 예상 아이들 시간이 임계치 미만인 것으로 프로세서가 결정하면 (즉, 결정 블록 160 = "아니오"), 프로세서는 도 9a 또는 도 9b 를 참조하여 위에서 설명한 테이블 룩업 방법을 수행할 수도 있다. 이러한 방법으로, 컴퓨팅 디바이스는 프로세서가 아이들 상태에 머무를 것으로 예상되는 시간에 따라서, 솔버 방법들 양자의 이점을 취할 것이다.
일 양태에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 동작에 관련된 수집된 통계적인 정보를 이용하기 위해서, 조건들 및 상태들의 범위에 대한 최적의 저전력 구성을 결정하기 위해 솔버에서 사용되는 탐색 테이블들을 때때로 재계산할 수도 있다. 탐색 테이블들의 피쳐들을 주기적으로 재계산함으로써, 이 양태는 미래의 저전력 구성들에 의해 달성되는 잠재적인 전력 절감량들을 더 최적화하기 위해서, 컴퓨팅 디바이스로 하여금, 그의 현재 및 과거 동작들로부터 학습할 수 있도록 한다. 탐색 테이블들을 계산하기 위해, 컴퓨팅 디바이스는 여러 동작 조건들 (예컨대, 상이한 온도 조건들 및 상이한 클라이언트 및 애플리케이션 상태들) 각각 및 상이한 리소스들 및 리소스 저전력 모드들 각각에 대해서 달성가능한 상대적인 전력 절감량들을 평가하도록 구성될 수도 있다. 그러한 계산들은 도 7 을 참조하여 위에서 설명한 계산들과 유사할 수도 있으며, 많은 상이한 시스템 구성들 및 온도 및 다른 동작 조건 값들에 대해서 프로세서에 의해 수행될 수도 있다.
여러 양태들에서, 컴퓨팅 디바이스 프로세서는 탐색 테이블들을 백그라운드 작업으로 계산하도록 구성될 수도 있다. 즉, 그 계산들이 상당한 프로세싱의 양을 수반할 개연성이 있으므로, 프로세서가 더 높은 우선순위 동작들을 수행하는 것에 연루되지 않을 때 수행되도록 구성될 수도 있다. 예컨대, 컴퓨팅 디바이스는 그렇지 않으면 하나 이상의 프로세서들이 아이들 상태에 있을 때에 계산들을 수행하도록 구성될 수도 있다. 그러한 계산들이 상당한 전력을 소비할 개연성이 있으므로, 컴퓨팅 디바이스는 디바이스가 외부 전력에 플러그인 될 때에만 (예컨대, 배터리를 충전할 때), 따라서, 전력 절약이 동작 우선순위가 아니고 전력 소비가 이슈가 아닐 때, 이들 계산들을 수행하도록 추가로 구성될 수도 있다.
도 11 은 컴퓨팅 디바이스가 외부 전력에 접속될 때 탐색 테이블들을 계산하는 양태 방법 (178) 을 도시하고 있다. 방법 (178) 의 결정 블록 180 에서, 프로세서는 프로세서가 아이들 상태에 진입할 때 디바이스가 외부 전력에 접속되어 있는지 여부를 결정할 수도 있다. 디바이스가 외부 전력에 접속되어 있지 않다고 프로세서가 결정하면 (즉, 결정 블록 180 = "아니오"), 프로세서는 도 4 및 도 9a 를 참조하여 위에서 설명한 프로세스들을 수행하여, 최적의 저전력 구성을 식별하고 블록 40 에서 저전력 구성을 이루는 저전력 리소스 모드들의 세트에 진입할 수도 있다. 디바이스가 외부 전력에 접속되어 있다고 프로세서가 결정하면 (즉, 결정 블록 180 = "예"), 프로세서는 탐색 테이블들을 업데이트하는데 요구되는 계산들을 수행할 수도 있다. 블록 182 에서, 프로세서는 최적의 저전력 구성을 계산하기 위한 특정의 동작 상태 및 조건을 선택할 수도 있다. 블록 184 에서, 프로세서는 제 1 리소스를 평가를 위해 선택하고, 블록 186 에서, 그 선택된 리소스에 대해 제 1 저전력 리소스 모드를 선택할 수도 있다. 블록 188 에서, 프로세서는 그 선택된 저전력 리소스 모드들의 레이턴시를 이용하여, 그 선택된 모드를 포함하는 저전력 구성의 전체 리소스 레이턴시들을 결정할 수도 있다. 블록 190 에서, 프로세서는 선택된 저전력 리소스 모드에 연관된 전력 절감량들을 저전력 모드들의 선택된 세트와 연관된 전력 절감량들에 추가하여, 새로운 모드 전력 절감량을 구할 수도 있다.
결정 블록 192 에서, 프로세서는 새로운 모드 전력 절감량들이 이전에 선택된 저전력 구성의 절감량들을 초과하는지 여부를 결정할 수도 있다. 선택된 저전력 리소스 모드가 전력 절감량들의 증가를 유발하면 (즉, 결정 블록 192 = "예"), 블록 194 에서, 프로세서는 임시적인 저전력 구성에서 그 선택된 저전력 리소스 모드를 이용할 수도 있다. 그후, 또는, 선택된 저전력 리소스 모드가 전력 절감량들의 증가를 유발하지 않으면 (즉, 결정 블록 192 = "아니오"), 결정 블록 196 에서, 프로세서는 선택된 리소스와 연관된 또다른 저전력 리소스 모드가 있는지 여부를 결정할 수도 있다. 그 리소스와 연관된 또다른 저전력 리소스 모드가 있으면 (즉, 결정 블록 196 = "예"), 프로세서는 블록 186 로 되돌아가서, 그 선택된 리소스에 대한 다음 저전력 리소스 모드를 선택할 수도 있다. 그 선택된 리소스에 대한 모든 저전력 리소스 모드들이 평가되었으면 (즉, 결정 블록 196 = "아니오"), 결정 블록 198 에서, 프로세서는 현재의 선택된 조건들에 대해서 평가되어질 또다른 리소스가 있는지 여부를 결정할 수도 있다.
평가될 또다른 리소스가 있다고 프로세서가 결정하면 (즉, 결정 블록 198 = "예"), 프로세서는 블록 184 으로 되돌아가서, 다음 리소스를 평가용으로 선택할 수도 있다. 현재 선택된 조건들에 대해 모든 리소스들이 평가되었다고 프로세서가 결정하면 (즉, 결정 블록 198 = "아니오"), 프로세서는 그 선택 테이블을, 블록 190 에서 결정된 잠재적인 절감량들에 대한 값들 및 블록 188 에서 결정된 여러 저전력 리소스 모드들의 레이턴시들을 포함한, 유망한 저전력 구성으로 업데이트할 수도 있다. 그후, 결정 블록 202 에서, 프로세서는 평가되어질 또다른 조건이 있는지 여부를 결정할 수도 있다. 평가되어질 또다른 조건이 남아 있다고 프로세서가 결정하면 (즉, 결정 블록 202 = "예"), 프로세서는 블록 182 으로 되돌아가서, 평가되어질 다음 조건을 선택할 수도 있다. 일단 모든 조건들이 평가되고 그에 따라서 탐색 테이블이 업데이트되었으면 (즉, 결정 블록 202 = "아니오"), 블록 204 에서, 프로세서는 (외부 전력에 접속하는 것을 포함한) 현재의 조건에 적합한 정상적인 아이들 프로세스들을 계속할 수도 있다.
추가 양태에서, 프로세서는 최적의 저전력 구성을 결정하는데 사용되는 파라미터들을 조정하기 위해, 시행 통계치 (operational statistics) 를 알아 내도록 구성될 수도 있다. 도 12 에 도시된 바와 같이, 양태 방법 (210) 의 블록 212 에서, 프로세서는 구현된 저전력 구성, 저전력 구성을 결정하는데 이용되는 추정된 아이들 시간, 및 저전력 구성의 시작 시간을 알아 낼 수도 있다. 프로세서가 저전력 구성을 퇴장할 때 (즉, 웨이크업할 때), 블록 214 에서, 프로세서는 프로세서가 저전력 구성, 요구된 리소스들, 및 웨이크업 이벤트를 프롬프트한 리소스들을 요구하는 프로세서 또는 클라이언트를 퇴장하는 시간을 알아 낼 수도 있다. 블록 216 에서, 프로세서는 블록 214 에서 획득한 정보를 이용하여, 특정의 리소스, 프로세서들, 클라이언트들, 및/또는 저전력 구성에 대한 리소스 아이들 시간에 관련한 통계치를 계산하거나 또는 개선할 수도 있다. 그러한 통계치는 예컨대, 보정 인자를 생성하고 웨이크업 이벤트들을 개시하는 특정의 프로세서들 또는 클라이언트들을 식별하고 특정의 저전력 구성들의 아이들 시간 특성들을 식별하기 위해, 얼마나 예상 아이들 시간 추정이 정확한 경향이 있는지를 다룰 수도 있다. 블록 218 에서, 프로세서는 블록 216 에서 계산된 사용 통계치에 기초하여, 리소스 저전력 리소스 모드 데이터 파라미터들을 레이턴시들, 예상 아이들 시간 추정치들, 또는 조정된 전력 절감량들에 대한 확률들 또는 보정 인자들로 업데이트할 수도 있다. 이 양태에서, 솔버 모듈로 하여금 가장 적당한 저전력 구성을 더 잘 결정할 수 있도록 하는데 사용되는 최종 정보와 함께, 컴퓨팅 디바이스의 일반적인 동작들과 관련된, 광범위한 통계치가 수집될 수도 있다. 이러한 방법으로, 컴퓨팅 디바이스는 저전력 리소스 모드들 및/또는 저전력 구성들에 의해 절감될 수도 있는 전력을 더 최적화하기 위해, 그 일반적인 사용 및 동작 조건들에 적응할 수도 있다.
여러 양태들에서, 프로세서는 리소스 파라미터들 및 프로세서 동작 상태에 기초하여 선택되는 다른 구성보다 평균적으로 더 큰 전력 절감량들을 발생하는 저전력 구성들을 선택하기 위해, 상이한 프로세서들의 정상적인 기능에 관한 통계치를 이용할 수도 있다. 이것은, 주어진 아이들 기간에 대해, 프로세서가 (공유된) 리소스 S 또는 (로칼) 리소스 L 에 대해 저전력 모드 사이에서 선택할 수 있지만 저전력 모드들 양자에 진입하는 것을 허용하지 않는 동적 레이턴시 요건들을 갖는 (즉, 이 특정의 아이들 기간에 대해, 모드들이 기능적으로 상호 배타적인) 예를 참조하여 분류될 수도 있다. 완전무결한 상황들에서, 리소스 S 는 리소스 S 를 저전력 상태에 둠으로써 더 많은 전력을 절감할 것이나, 프로세서 A의 아이들 시간 동안 프로세서 B 가 리소스 S 를 요구할 비-제로 (non-zero) 확률이 존재한다. 리소스 S 가 프로세서 B 에 의해 사용되는 기간에 따라서, 비록 이론적으로는 더 적은 전력을 절감하더라도, 프로세서 A 에 대한 최적의 저전력 상태가 리소스 L 에 대해 저전력 리소스 모드에 진입할 수 있을 것이다. 이를 고려하기 위해, 프로세서 A 가 아이들인 동안 프로세서 B 가 아이들이 아니라고 가정하면, 리소스 S 에 대한 전력 모델은 전체적으로 아이들상태에 있을 확률 만큼 감소될 것이다. 즉, 리소스 S 에 대한 전력 모델 계산이 power_model(idle, temp) 인 대신, 계산은 E[power_model(idle, temp)|Proc A idle] 이 된다. 여러 양태들에서, 기대치 계산을 위한 확률 분포는 명령에 의해, 프로파일링에 의해, 정적으로 정의되거나, 또는 실제 사용 통계치를 수집하여 런타임에 경험적으로 결정될 수도 있다.
저전력 구성들의 전력 절감량들 성능이 특정의 컴퓨팅 디바이스의 특성들 뿐만 아니라 특정 사용자의 사용 패턴들에 최적화될 수 있도록, 조건들, 성능, 지속기간들, 및 저전력 구성들의 구현 및 성능과 연관된 다른 특성들에 관한 통계적인 정보를 수집하기 위해 학습 알고리즘들을 적용하는 프로세스가 일반적으로 적용될 수도 있다. 그러한 학습을 달성하기 위해, 프로세서는 모드 선택 방법들, 리소스 성능 값들을 조정하기 위해 저전력 모드 동작들로부터 획득된 여러 데이터를 이용하여 통계적인 분석 알고리즘들을 수행하고, 그렇지 않으면, 모니터링하는 디바이스 동작들로부터 획득된 정보를 반영하기 위해 솔버에서 구현되는 알고리즘들을 조정할 수도 있다.
도 13 에 도시된 추가 양태 방법 (220) 에서, 프로세서는 모드 선택이 실제 디바이스 전력 소비 특성들에 기초하도록 하기 위해, 여러 저전력 구성들에 의해 달성되는 실제 전력 절감량들에 관한 통계치를 수집하도록 구성될 수도 있다. 블록 222 에서, 프로세서는 진입되는 특정의 저전력 구성, 디바이스 온도, 예상 아이들 시간, 및 아이들 상태의 시작 시간을 알아 낼 수도 있다. 블록 224 에서, 프로세서는 그 선택된 저전력 구성에 진입했을 때 시스템을 통과하는 실제 전력 드레인 (drain) 을 측정하고 저장할 수도 있다. 이 측정치는 저전력 상태의 시작 시에, 아이들 사이클 전체에 걸쳐서, 또는 아이들 사이클의 말기에, 예컨대, 아이들 상태를 퇴장하는 프로세스의 일부로서 수행될 수도 있다. 단계 226 에서, 프로세서는 저전력 상태의 말기에 인터럽트 개시 (firing) 및/또는 타이머 개시를 알아 낼 수도 있다. 블록 228 에서, 프로세서는 블록 222 내지 226 에서 수집된 정보에 기초하여, 현재 온도에서 특정의 저전력 구성에서 달성되는 실제 전력 절감량들을 반영하기 위해, 리소스 저전력 리소스 모드 데이터 파라미터들 및/또는 저전력 리소스 모드 선택 테이블을 업데이트할 수도 있다. 블록 230 에서, 프로세서는 인터럽트들 및 타이머 개시들의 분포에 관한 통계치를 계산하거나 또는 업데이트하고, 블록 232 에서, 이 정보를 이용하여, 저전력 리소스 모드 선택 테이블을 업데이트할 수도 있다. 이러한 방법으로, 구성 및 동작 조건 데이터에 기초하여 최적의 저전력 구성을 선택하기 위해, 프로세서에 의해 사용되는 파라미터들은 실제 디바이스 성능에 기초하여 개선될 수도 있다. 여러 저전력 리소스 모드들에서 달성될 수 있는 전력 절감량들은 온도, 생산 시행 (production run), 연령, 구체적인 컴포넌트 구성, 및 사전에 예상될 없는 많은 다른 인자들에 따라서, 변할 수도 있다. 게다가, 이 양태는 프로세서로 하여금, 실제 사용에 기초하여, 아이들 동작 구성들을 선택하는데 사용되는 계산들 또는 저전력 리소스 모드 선택 테이블들을 개선할 수 있도록 한다. 따라서, 컴퓨팅 디바이스가 일반적으로 차가운 온도들을 경험하면 (예컨대, 컴퓨팅 디바이스의 소유자가 알래스카에 살면), 저전력 리소스 모드 선택 테이블은 그 디바이스가 다른 위치들에서 경험할 지도 모르는 최고의 잠재적인 온도들의 범위를 포괄하도록 시도하기 보다는, 컴퓨팅 디바이스에 의해 일반적으로 경험되는 온도 범위 내에서 더 큰 입도를 제공하도록, 개선될 수도 있다. 따라서, 이 양태 방법은 프로세서로 하여금, 동작의 시간에 동작의 조건들 하에서의 디바이스의 실제 성능 특성들에 기초하여 최적의 저전력 구성을 결정할 수 있도록 한다.
도 14 에 도시된 추가 양태 방법 (240) 에서, 프로세서는 각각의 모드를 선택적으로 구현하고 전류 또는 전력 수요에서의 최종 변화를 측정함으로써, 각각의 저전력 리소스 모드 (즉, 각각의 리소스의 각각의 저-전력 모드) 의 전력 절감 특성들을 측정할 수도 있다. 각각의 저전력 리소스 모드에 의해 달성되는 실제 전력 절감량들을 측정함으로써, 컴퓨팅 디바이스는 최적의 시스템 저전력 모드 구성을 선택하는데 유용한 통계치를 수집할 수도 있다. 구성 변화들 및 디바이스 연령이 특정의 저전력 리소스 모드들에 의해 달성되는 전력 절감량들에 영향을 미칠 수 있으므로, 이 방법은 컴퓨팅 디바이스로 하여금, 디바이스가 제조된 이후에 변경될 수도 있는 현재의 동작 구성 및 조건들에 기초하여, 시스템 저전력 구성 결정들을 할 수 있도록 한다. 또한, 그러한 측정들은 여러 저-전력 리소스 모드들의 전력 절감 포텐셜의 온도 민감도들에 관한 정보를 획득하거나 또는 업데이트하기 위해, 상이한 온도들에서 수행될 수도 있다.
도 14 를 참조하면, 방법 (240) 의 블록 241 에서, 기지의 안정 상태에 있고 측정들을 수행하는데 도움이 되는 동작 조건에 있다고 컴퓨팅 디바이스 프로세서가 결정하는 경우, 프로세서는 그 디바이스 내에 포함된 센서들을 이용하여 디바이스 온도 및 전류 또는 전력 수요를 측정할 수도 있다. 이 블록에서, 프로세서는 각각의 저전력 리소스 모드로 달성가능한 전력 절감량들에 영향을 미칠 수도 있는 다른 동작 조건들을 측정할 수도 있다. 블록 242 에서, 프로세서는 저전력 모드를 갖는 리소스를 측정용으로 선택할 수도 있다. 블록 243 에서, 프로세서는 그 선택된 리소스를 그 저전력 리소스 모드들 중 선택된 모드에 둘 수도 있다. 그후, 블록 244 에서, 프로세서는 그 구현된 저전력 리소스 모드로 시스템 전류 또는 전력 수요를 측정할 수도 있다. 블록 245 에서, 프로세서는 선택된 리소스를 그 선택된 저-전력 리소스 모드에 둠으로써 달성되는 전력 절감량들을 계산할 수도 있다. 이것은 블록 241 에서 측정된 초기 전력에서 블록 244 에서 측정된 전력을 감산함으로써 달성될 수도 있다. 결정 블록 246 에서, 프로세서는 측정할 또다른 리소스가 있는지 여부를 결정할 수도 있다. 측정할 또다른 리소스가 있으면 (즉, 결정 블록 246 = "예"), 프로세서는 블록 242 로 되돌아가서, 다음 리소스를 측정용으로 선택할 수도 있다. 일단 모든 리소스들이 선택되고 대응하는 저전력 리소스 모드 전력 절감량들이 측정되었으면 (즉, 결정 블록 246 = "아니오"), 블록 247 에서, 프로세서는 측정된 전력 절감량들을 이용하여, 저전력 모드 선택 테이블을 업데이트할 수도 있다. 업데이트된 저전력 모드 선택 테이블은 프로세서가 슬립 사이클에 진입하는 다음 시간에 시스템 저전력 모드 구성을 선택하는데 사용될 수도 있다. 일 양태에서, 방법 (240) 은 주기적으로, 특히 시스템 온도가 이전 측정 프로세스에서의 온도와 상이하다는 것을 프로세서가 알아 낼 때에, 반복될 수도 있다. 상이한 온도들에서 저전력 리소스 모드들 각각에 의해 달성되는 전력 절감량들을 측정함으로써, 프로세서는 잘 알려져 있는 산술적 분석들, 예컨대 곡선 맞춤 (curve fitting) 알고리즘들을 통해서, 각각의 저전력 리소스 모드의 전력 절감 포텐셜의 온도 민감도들을 계산하거나 또는 추정할 수 있다. 그 후, 그러한 온도 민감도들은 시스템 저전력 모드 구성에서 구현되도록 저-전력 리소스 모드들을 선택하는 프로세스에 이용될 수도 있다.
여러 양태들은 단순히 추가적인 배터리 전력을 절감하는 것을 넘어서 사용자들 및 개발자들에게 많은 유용한 이점들을 제공한다. 하나의 이점으로서, 여러 리소스들 및 그들의 정의들의 저전력 리소스 모드들은 그 모드들을 구현하는 코드에 대개 독립적이다. 적당한 드라이버 콜들이 "진입" 및 "퇴장" 기능들 내에 포함될 수도 있으며, 따라서 저전력 리소스 모드가 영향을 받지 않는다. 솔버 프로세스 (즉, 위에서 설명한 방법 (26) 의 블록 38) 는 하드 (hard) 데이터, 예컨대 각각의 저전력 리소스 모드에 대한 전력 및 레이턴시 데이터, 및 현재의 동작 상태에 존재하는 동적 제한사항들 (예컨대, 레이턴시 요건들) 및 동작 조건들에 기초하여 저전력 리소스 모드에 진입되거나 또는 퇴장되어야 하는 시점을 결정하는 것을 처리할 수도 있다. 따라서, 개발자는 적당한 저전력 리소스 모드들을 디바이스에 하드코딩하기 위해 그러한 파라미터들의 조합들을 예상하려고 해서는 안된다.
위에서 설명한 양태들의 또다른 이점은, 컴퓨팅 디바이스가 시스템 모드들의 미리 구성된 또는 미리 정의된 세트 중에서 단일 정의된 저전력 리소스 모드를 선택하는데 요구되지 않지만, 그 시스템에 대한 저전력 구성을 동적으로 구현하기 위해, 현재의 동작 상태, 리소스들, 동작 조건, 추정된 슬립 사이클, 디바이스 구성 등에 기초하여, 저전력 리소스 모드들의 조합을 선택할 수 있다는 점이다. 이것은 종래의 공지된 전력 관리 시스템들이 미리 정의된 저전력 구성들의 세트 사이에 (예컨대, 모드 1, 모드 2, 또는 모드 3 중 하나) 선택되도록 구성되기 때문에 이점이 있으며, 반면, 위에서 설명한 양태들은 디바이스로 하여금, 저전력 모드에 진입하는데 이용가능한 각각의 리소스에 대해 하나 이상의 저전력 리소스 모드들을 동적으로 선택할 수 있도록 함으로써, 현재의 조건들 및 상태들에 가장 잘 맞는 시스템 저전력 구성들을 구현하는데 더 큰 유연성을 제공할 수 있도록 한다. 예컨대, 특정의 프로세서가 저전력 리소스 모드들 A', B' 및 C' 를 각각 갖는 3개의 리소스들 A, B 및 C 를 갖는다고 가정하자. 저전력 리소스 모드들은 상이한 레이턴시들을 가질 수도 있으며, 예컨대, 저전력 리소스 모드 A' 는 .4 ms 의 레이턴시를 가질 수도 있으며, 저전력 리소스 모드 B' 는 .5 ms 의 레이턴시를 가질 수도 있으며, 저전력 리소스 모드 C' 는 .6 ms 의 레이턴시를 가질 수도 있다. USB 클라이언트가 그 시스템에 대해 1 밀리초 레이턴시 요건일 정도로 활성이면 (예컨대, 1ms 최악의 경우 허용가능한 레이턴시), 리소스들 A, B 및 C 의 저전력 모드들은 선택된 저전력 모드들의 조합이 최악의 경우의 레이턴시 요건을 만족하는 한, 서로 독립적으로 인에이블되거나 또는 디스에이블될 수도 있다. 예컨대, 프로세서가 아이들 상태에 들어가고 리소스들 A, B 및 C 가 모두 인에이블되면, 시스템은 저전력 리소스 모드 A' (.4 ms 의 레이턴시), 저전력 리소스 모드 B' (.5 ms 의 레이턴시), 저전력 리소스 모드 C' (.6 ms 의 레이턴시), 모드들 A 및 B (.9 ms 의 레이턴시), 또는 모드 A 및 모드 C (1 ms 의 레이턴시) 를 선택할 수 있다. 따라서, 여러 양태들에서, 솔버 작업은 최대한의 전력을 절감하기 위해서 1 ms 최악의 경우의 레이턴시 허용오차를 고려하여 저전력 리소스 모드들의 최상의 세트를 선택할 수도 있다.
추가적으로, 일반적인 전력 관리 시스템들은 클라이언트들이 비활성 모드 및 활성 모드를 갖고 레이턴시 허용오차가 현재의 성능 상태에 의존할 것을 요구한다. 위에서 설명한 여러 양태들에서, 클라이언트 메카니즘들이 "활성이거나" 또는 "비활성인" 대신에, "존재하거나" 또는 "존재하지 않을" 수 있다. 즉, 여러 양태들에서, 여러 저전력 리소스 모드들은 동작 상태 (예컨대, 활성 또는 비활성) 에 기초하여 선택되기 보다는, 가능한 상태들을 제거하도록 횡단될 수도 있다. 게다가, 여러 양태들은 클라이언트들로 하여금, 여러 리소스들에 대한 저전력 리소스 모드들을 생성, 등록 및/또는 무시할 수 있도록 하고, 저전력 리소스 모드들의 조합을 동적으로 선택하여 다수의 가능한 시스템 저전력 구성들을 이용할 수 있도록 한다. 이것은 시스템 클라이언트들로 하여금 디바이스의 저전력 상태들을 추가로 제어하고 미세 조정할 수 있도록 한다.
위에서 설명한 양태들의 또다른 이점은 컴퓨팅 디바이스 프로세서가 시스템 클라이언트들의 여러 동작 모드들을 알 필요가 없다는 점이다. 여러 양태들에서, 클라이언트들은 오직 그들의 레이턴시 허용오차에 직접 따를 수도 있다. 그와 같이, 프로세서는 각각의 클라이언트의 동작 상태들과 연관된 여러 세부 사항들에 대해 알 필요가 없다. 프로세서는 그 보고된 레이턴시 허용오차들에 기초하여 저전력 리소스 모드에 진입하기 위해, 단지 클라이언트들의 등록된 레이턴시 허용오차들을 알아내어, 저전력 리소스들을 선택하는 것을 필요로 한다. 여러 양태들에서, 허용오차들 및 저전력 모드들의 설정은 별개의 엔티티들에 의해 이루어질 수도 있다. 예컨대, USB 클라이언트는 반드시 저전력 모드는 아니지만 레이턴시 허용오차를 설정할 수도 있다. 각각의 저전력 리소스 모드는 레이턴시 고려사항과 완전히 독립적인 임의의 주어진 슬립 사이클에서 진입될 수 있는지 여부를 나타내기 위해 시그널링 메커니즘들의 세트를 가질 수도 있다.
추가 이점으로서, 일 양태에서는, 정지될 것으로 예상되는 기간을 클라이언트들로 하여금 규정할 수 있도록 하기 위해, 새로운 NP 프로그래밍 노드가 제공될 수도 있다. 예컨대, "X" 마이크로초 보다 길지 않은 시간 동안 (71 시간까지) 정지할 (즉, 프로세서 또는 리소스들을 이용하지 않는) 것으로 예상하는 것을 클라이언트들로 하여금 규정할 수 있도록 하기 위해, NP 프로그래밍 노드 "/코어/프로세서/웨이크업" 이 제공될 수도 있다. 그러한 프로그래밍 능력은 프로세서 아이들 상태들 및 저전력 구성들과의 호환성을 위한 클라이언트 애플리케이션들의 개발을 단순화할 수도 있다.
추가 양태에서, 아이들 상태에 진입될 수도 있는 시간에 동일한 또는 유사한 동작 조건들 (예컨대, 동작 상태, 온도, 및 레이턴시 제한사항들) 이 존재할 때 솔버 알고리즘을 재수행함이 없이 최적의 저전력 구성이 재사용될 수 있도록, 도 7 을 참조하여 위에서 설명한 바와 같은, 솔버 계산들의 결과들이 메모리에 캐시될 수도 있다. 이러한 방법으로, 프로세서는 솔버 알고리즘을 수행하는 프로세스를 생략함으로써 아이들 상태에 빠르게 진입하면서도, 여전히 최적의 또는 거의 최적의 전력 절감량들을 달성할 수 있다. 추가 양태에서, 동작 상태 및 조건들은 캐시된 최적의 저전력 구성들이 조건들 및 상태들의 통계적으로 결정된 범위들에 연계될 수 있도록, 통계적으로 분석될 수도 있다.
여러 양태들과 함께 사용하기에 적합한 일반적인 모바일 디바이스들 (250) 은 도 15 에 도시된 컴포넌트들을 공통적으로 가질 것이다. 예컨대, 예시적인 모바일 수신기 디바이스 (250) 는 내부 메모리 (252), 디스플레이 (253) 에 커플링되고, 스피커 (259) 에 커플링된 프로세서 (251) 를 포함할 수도 있다. 추가적으로, 모바일 디바이스 (250) 는 프로세서 (251) 에 커플링된 모바일 멀티미디어 수신기 (256) 에 접속되는 전자기 방사를 전송 및 수신하는 안테나 (254) 를 가질 수도 있다. 일부 양태들에서, 모바일 멀티미디어 수신기 (256) 는 내부 프로세서 (258), 예컨대 수신기 (256) 의 동작들을 제어하고 디바이스 프로세서 (251) 와 통신하는 디지털 신호 프로세서 (DSP) 를 포함할 수도 있다. 통상적으로, 모바일 디바이스들은 또한 사용자 입력들을 수신하기 위한 키 패드 (256) 또는 소형 키보드, 및 메뉴 선택 버튼들 또는 로커 스위치들 (257) 을 포함한다.
프로세서 (251) 는 본 명세서에서 기술한 여러 양태들의 기능들을 포함하는 여러 기능들을 수행하도록, 프로세서 실행가능한 소프트웨어 명령들 (애플리케이션들) 에 의해 구성될 수 있는, 임의의 프로그래밍가능한 마이크로프로세서, 마이크로컴퓨터 또는 다수의 프로세서 칩 또는 칩들일 수도 있다. 또한, 여러 양태들의 기능들은 DSP-실행가능한 명령들로 구성된 수신기 (256) 내 DSP 프로세서 (258) 에서 구현될 수도 있다. 일반적으로, 소프트웨어 애플리케이션들 및 프로세서 실행가능한 명령들은 액세스되어 프로세서 (251) 에 로딩되기 전에 내부 메모리 (252) 에 저장될 수도 있다. 일부 모바일 디바이스들에서, 프로세서 (251) 는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다. 일부 모바일 디바이스들에서, 보안 (secure) 메모리가 프로세서 (251) 에 커플링된 별개의 메모리 칩에 있을 수도 있다. 많은 모바일 디바이스들 (250) 에서, 내부 메모리 (252) 는 휘발성 메모리 또는 비휘발성 메모리, 예컨대 플래시 메모리, 또는 양자의 조합일 수도 있다. 이 설명의 목적을 위해, 메모리에 대한 일반적인 언급은 내부 메모리 (252), 모바일 디바이스에 플러깅되는 착탈식 메모리, 및 프로세서 (251) 자체내의 메모리를 포함한, 프로세서 (251) 에 의해 액세스가능한 모든 메모리를 지칭한다.
전술한 방법 설명과 프로세스 흐름도들은 단지 예시적인 예들로서 제공하는 것으로, 여러 양태들의 단계들이 그 제시된 순서로 수행되어야 한다는 것을 요구하거나 암시하려는 것이 아니다. 당업자가 알 수 있는 바와 같이, 상술한 양태들에서 단계들의 순서는 임의의 순서로도 수행될 수도 있다. 또한, "그후 (thereafter)", "그러면 (then)", "다음 (next)", 등과 같은 단어들은, 단계들의 순서를 한정하려는 것이 아니라; 이들 단어는 그 방법들의 설명을 통하여 독자를 안내하기 위하여 단순히 사용하는 것이다. 또한, 관사 (articles) "한", "하나의" 또는 "그" 를 이용하여, 엘리먼트들을 단수로 청구하는 임의의 참조도, 그 엘리먼트를 단수로 한정하는 것으로 해석해서는 안된다.
여기서 개시한 양태들과 관련하여 설명한 여러 예시적인 논리 블록, 모듈, 회로 및 알고리즘 단계들은, 전자 하드웨어, 컴퓨터 소프트웨어 또는 양자의 조합들로 구현될 수도 있다. 이러한 하드웨어와 소프트웨어의 호환성을 명확히 나타내기 위하여, 이상에서는, 여러 예시적인 컴포넌트, 블록, 모듈, 회로 및 단계를 그들의 기능의 관점에서 일반적으로 전술되었다. 그러한 기능이 하드웨어 또는 소프트웨어로 구현되는지 여부는 특정의 애플리케이션 및 전체 시스템에 부과되는 설계 제한들에 의존한다. 당업자들은 각각의 특정의 애플리케이션 마다 설명한 기능을 여러가지 방법으로 구현할 수도 있으며, 그러나 그러한 구현 결정이 본 발명의 범위로부터 벗어남을 초래하는 것으로 해석되어서는 안된다.
여기서 개시한 양태들과 관련하여 설명한 여러 예시적인 로직들, 로직 블록들, 모듈들, 및 회로들을 구현하기 위해 사용되는 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 멀티미디어 브로드캐스트 수신기 칩 내의 DSP, 주문형 집적회로 (ASIC), 필드 프로그래밍가능한 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 여기서 설명한 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안으로서, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수도 있다. 또한, 프로세서는, 컴퓨팅 디바이스들의 조합, 예를 들면 DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 관련된 하나 이상의 마이크로프로세서들 또는 다른 어떠한 그러한 구성으로도 구현될 수도 있다. 대안적으로, 일부 단계들 또는 방법들은 주어진 기능에 고유한 회로에 의해 수행될 수도 있다.
하나 이상의 예시적인 양태들에서, 설명한 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 어떠한 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 컴퓨터-판독가능 매체 상에 하나 이상의 명령들 또는 코드들로서 저장되거나, 송신될 수도 있다. 여기서 개시한 방법 또는 알고리즘의 단계들은, 컴퓨터-판독가능 매체 상에 상주하여 실행될 수도 있는, 프로세서-실행 가능한 소프트웨어 모듈로 구현될 수도 있다. 컴퓨터 판독가능 매체들은, 한 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 컴퓨터 저장 매체들 및 통신 매체들 모두를 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수도 있는 임의의 가용 매체들일 수도 있다. 일 예로서, 이에 한정하지 않고, 그러한 컴퓨터-판독가능 매체들은, RAM, ROM, EEPROM, CD-ROM 또는 다른 광디스크 스토리지, 자기디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 원하는 프로그램 코드를 명령 또는 데이터 구조 형태로 운반하거나 저장하는데 사용될 수도 있고, 컴퓨터에 의해 액세스될 수도 있는 다른 어떠한 매체도 포함할 수도 있다. 또한, 임의의 접속이 적절하게 컴퓨터-판독가능 매체로 지칭된다. 예컨대, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선 (DSL) 또는 무선 기술들, 예컨대 적외선, 무선 및 마이크로파를 이용하여, 웹 사이트, 서버 또는 다른 원격 소스로부터 송신되는 경우, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선 및 마이크로파와 같은 무선 기술이 그 매체의 정의에 포함된다. 디스크 (disk) 및 디스크 (disc) 는, 여기서 사용할 때, 콤팩트 디스크 (CD), 레이저 디스크, 광디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서, 디스크 (disc) 는 레이저로 데이터를 광학적으로 재생하지만, 디스크 (disk) 는 데이터를 자기적으로 보통 재생한다. 또한, 상술한 것들의 조합들도 컴퓨터-판독가능 매체들의 범위 내에 포함되어야 한다. 추가적으로, 방법 또는 알고리즘의 동작들은, 컴퓨터 프로그램 제품에 포함될 수도 있는 머신 판독가능 매체 및/또는 컴퓨터 판독가능 매체 상에, 코드들 및/또는 명령들의 하나 또는 임의의 조합 또는 세트로 상주할 수도 있다.
개시된 실시형태들의 상기 설명은 임의의 당업자가 본 발명을 실시하고 이용할 수 있도록 하기 위하여 제공하는 것이다. 당업자는 이들 실시형태에 대한 여러 변경을 쉽게 알 수 있을 것이며, 여기서 정의되는 일반적인 원리는, 본 발명의 정신 또는 범위로부터 벗어남이 없이, 다른 실시형태들에 적용될 수도 있다. 따라서, 본 발명을 여기에 나타낸 실시형태에 한정하려는 것이 아니라, 다음의 청구범위 및 여기서 개시한 원리 및 신규한 특징에 부합하는 최광의 범위를 부여하려는 것이다.

Claims (40)

  1. 컴퓨팅 디바이스에서 전력을 절약하는 방법으로서,
    리소스가 사용되고 있지 않을 때 저전력 모드 마스크에서 상기 리소스와 연관된 플래그 비트를 설정하는 단계로서, 상기 리소스는 복수의 리소스들 중 하나인, 상기 플래그 비트를 설정하는 단계;
    상기 컴퓨팅 디바이스의 프로세서가 아이들 상태에 진입할 수 있을 때 상기 저전력 모드 마스크의 플래그 비트 설정들에 기초하여 저전력 모드에 둘 수도 있는 상기 리소스들을 식별하는 단계;
    상기 식별된 리소스들 각각에 대해 레이턴시 요건을 등록하는 단계;
    상기 프로세서가 아이들 상태에 남아 있을 것으로 예상되는 시간을 결정하는 단계;
    상기 컴퓨팅 디바이스에 대한 레이턴시 버짓을 결정하는 단계;
    상기 레이턴시 버짓을 초과하는 조합된 레이턴시 요건을 갖고, 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합을 제거하기 위해 저전력 모드에 둘 수도 있는 각각의 리소스에 대해 상기 컴퓨팅 디바이스 저전력 모드들을 평가하는 단계;
    현재 온도에서의 단위 시간 당 잠재적인 전력 절감량들과 상기 결정된 예상 아이들 시간과의 곱에 기초하여 각각의 평가된 저전력 리소스 모드들의 상기 잠재적인 전력 절감량들을 결정하는 단계;
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 단계; 및
    상기 식별된 리소스들 각각에 대해 상기 선택된 저전력 모드들 각각의 진입 기능을 실행함으로써 상기 저전력 리소스 모드들의 선택된 조합에 진입하는 단계를 포함하는, 전력을 절약하는 방법.
  2. 제 1 항에 있어서,
    상기 저전력 리소스 모드들의 조합을 선택하는 단계는, 여러 저전력 모드들 및 리소스들에 대해 냅색 (knapsack) 문제 솔루션 알고리즘을 실행하는 단계를 포함하는, 전력을 절약하는 방법.
  3. 삭제
  4. 컴퓨팅 디바이스에서 전력을 절약하는 방법으로서,
    상기 디바이스가 기지의 (known) 안정 상태에 있을 때, 온도 및 전류, 또는 온도 및 전력 수요를 측정하는 단계;
    측정을 위한 리소스를 선택하는 단계;
    상기 선택된 리소스를 저전력 리소스 모드에 두는 단계;
    상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 단계;
    저전력 리소스 모드를 갖는 모든 리소스들에 대해 저전력 리소스 모드 동안의 전류 또는 전력 수요가 측정될 때까지, 다음 리소스를 선택하는 단계, 상기 선택된 리소스를 저전력 리소스 모드에 두는 단계 및 상기 선택된 리소스가 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 단계를 반복하는 단계;
    리소스가 사용되고 있지 않을 때 저전력 모드 마스크에서 상기 리소스와 연관된 플래그 비트를 설정하는 단계로서, 상기 리소스는 복수의 리소스들 중 하나인, 상기 플래그 비트를 설정하는 단계;
    상기 컴퓨팅 디바이스의 프로세서가 아이들 상태에 진입할 수 있을 때 상기 저전력 모드 마스크의 플래그 비트 설정들에 기초하여 저전력 모드에 둘 수도 있는 상기 리소스들을 식별하는 단계;
    상기 식별된 리소스들 각각에 대해 레이턴시 요건을 등록하는 단계;
    상기 컴퓨팅 디바이스에 대한 레이턴시 버짓을 결정하는 단계;
    상기 레이턴시 버짓을 초과하는 조합된 레이턴시 요건을 갖고, 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합을 제거하기 위해 저전력 모드에 둘 수도 있는 각각의 리소스에 대해 상기 컴퓨팅 디바이스 저전력 모드들을 평가하는 단계;
    각각의 저전력 리소스 모드와 연관된 상기 측정된 전류 또는 전력 수요를 이용하여 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하는 단계;
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 단계; 및
    상기 식별된 리소스들 각각에 대해 상기 선택된 저전력 모드들 각각의 진입 기능을 실행함으로써 상기 저전력 리소스 모드들의 선택된 조합에 진입하는 단계를 포함하는, 전력을 절약하는 방법.
  5. 제 4 항에 있어서,
    상이한 온도들에서, 제 4 항에 기재된, 온도 및 전류, 또는 온도 및 전력 수요를 측정하는 동작, 측정을 위한 리소스를 선택하는 동작, 상기 선택된 리소스를 저전력 리소스 모드에 두는 동작, 상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 동작, 및 저전력 리소스 모드를 갖는 모든 리소스들에 대해 저전력 리소스 모드 동안의 전류 또는 전력 수요가 측정될 때까지, 다음 리소스를 선택하는 것, 상기 선택된 리소스를 저전력 리소스 모드에 두는 것 및 상기 선택된 리소스가 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 것을 반복하는 동작을 반복하는 단계; 및
    각각의 저전력 리소스 모드와 연관된 전류 또는 전력 수요의 온도 민감도를 결정하는 단계를 더 포함하고,
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 단계는,
    상기 컴퓨팅 디바이스의 온도를 측정하는 단계; 및
    각각의 저전력 리소스 모드와 연관된 상기 전류 또는 전력 수요의 결정된 온도 민감도를 이용하여 상기 측정된 컴퓨팅 디바이스 온도에서 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하는 단계를 포함하는, 전력을 절약하는 방법.
  6. 제 1 항에 있어서,
    저전력 모드에 둘 수도 있는 각각의 리소스에 대해 저전력 리소스 모드들을 평가하는 단계는, 잠재적인 전력 절감량, 추정된 아이들 시간 및 동작 조건들을 이용하는 저전력 모드 선택 데이터 테이블을 이용하여 테이블 탐색 프로세스를 달성하는 단계를 포함하는, 전력을 절약하는 방법.
  7. 제 6 항에 있어서,
    상기 동작 조건들은 온도 값을 포함하는, 전력을 절약하는 방법.
  8. 제 6 항에 있어서,
    상기 컴퓨팅 디바이스에 대해 동작 조건들에 관한 통계치를 수집하는 단계; 및
    상기 수집된 동작 조건들 통계치에 기초하여 상기 저전력 모드 선택 데이터 테이블을 업데이트하는 단계를 더 포함하는, 전력을 절약하는 방법.
  9. 제 8 항에 있어서,
    상기 동작 조건들은, 온도, 특정의 저전력 리소스 모드들의 전력 소비, 여러 동작 상태들에서 경험된 아이들 시간들, 및 통상적인 디바이스 사용 패턴들을 포함하는 그룹으로부터 선택되는, 전력을 절약하는 방법.
  10. 제 8 항에 있어서,
    상기 컴퓨팅 디바이스가 외부 전력에 접속되어 있는지 여부를 결정하는 단계를 더 포함하고,
    상기 동작 조건들 통계치에 기초하여 상기 저전력 모드 선택 데이터 테이블을 업데이트하는 단계는, 상기 컴퓨팅 디바이스가 외부 전력에 접속되어 있을 때에 달성되는, 전력을 절약하는 방법.
  11. 적어도 하나의 프로세서를 갖는 컴퓨팅 디바이스로서,
    리소스가 사용되고 있지 않을 때 저전력 모드 마스크에서 상기 리소스와 연관된 플래그 비트를 설정하는 수단으로서, 상기 리소스는 복수의 리소스들 중 하나인, 상기 플래그 비트를 설정하는 수단;
    상기 컴퓨팅 디바이스의 프로세서가 아이들 상태에 진입할 수 있을 때 상기 저전력 모드 마스크의 플래그 비트 설정들에 기초하여 저전력 모드에 둘 수도 있는 리소스들을 식별하는 수단;
    상기 식별된 리소스들 각각에 대해 레이턴시 요건을 등록하는 수단;
    상기 프로세서가 아이들 상태에 남아 있을 것으로 예상되는 시간을 결정하는 수단;
    상기 컴퓨팅 디바이스에 대한 레이턴시 버짓을 결정하는 수단;
    상기 레이턴시 버짓을 초과하는 조합된 레이턴시 요건을 갖고, 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합을 제거하기 위해 저전력 모드에 둘 수도 있는 각각의 리소스에 대해 상기 컴퓨팅 디바이스 저전력 모드들을 평가하는 수단;
    현재 온도에서의 단위 시간 당 잠재적인 전력 절감량들과 상기 결정된 예상 아이들 시간과의 곱에 기초하여, 각각의 평가된 저전력 리소스 모드들의 상기 잠재적인 전력 절감량들을 결정하는 수단;
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 수단; 및
    상기 식별된 리소스들 각각에 대해 상기 선택된 저전력 모드들 각각의 진입 기능을 실행함으로써 상기 저전력 리소스 모드들의 선택된 조합에 진입하는 수단을 포함하는, 컴퓨팅 디바이스.
  12. 제 11 항에 있어서,
    상기 저전력 리소스 모드들의 조합을 선택하는 수단은, 여러 저전력 모드들 및 리소스들에 대해 냅색 (knapsack) 문제 솔루션 알고리즘을 실행하는 수단을 포함하는, 컴퓨팅 디바이스.
  13. 삭제
  14. 적어도 하나의 프로세서를 갖는 컴퓨팅 디바이스로서,
    상기 디바이스가 기지의 (known) 안정 상태에 있을 때, 온도 및 전류, 또는 온도 및 전력 수요를 측정하는 수단;
    측정을 위한 리소스를 선택하는 수단;
    상기 선택된 리소스를 저전력 리소스 모드에 두는 수단;
    상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 수단;
    저전력 리소스 모드를 갖는 모든 리소스들에 대해 저전력 리소스 모드 동안의 전류 또는 전력 수요가 측정될 때까지, 다음 리소스를 선택하는 단계, 상기 선택된 리소스를 저전력 리소스 모드에 두는 단계 및 상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 단계를 반복하는 수단;
    리소스가 사용되고 있지 않을 때 저전력 모드 마스크에서 상기 리소스와 연관된 플래그 비트를 설정하는 수단으로서, 상기 리소스는 복수의 리소스들 중 하나인, 상기 플래그 비트를 설정하는 수단;
    상기 컴퓨팅 디바이스의 프로세서가 아이들 상태에 진입할 수 있을 때 상기 저전력 모드 마스크의 플래그 비트 설정들에 기초하여 저전력 모드에 둘 수도 있는 리소스들을 식별하는 수단;
    상기 식별된 리소스들 각각에 대해 레이턴시 요건을 등록하는 수단;
    상기 컴퓨팅 디바이스에 대한 레이턴시 버짓을 결정하는 수단;
    상기 레이턴시 버짓을 초과하는 조합된 레이턴시 요건을 갖고, 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합을 제거하기 위해 저전력 모드에 둘 수도 있는 각각의 리소스에 대해 상기 컴퓨팅 디바이스 저전력 모드들을 평가하는 수단;
    각각의 저전력 리소스 모드와 연관된 상기 측정된 전류 또는 전력 수요를 이용하여 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하는 수단;
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 수단; 및
    상기 식별된 리소스들 각각에 대해 상기 선택된 저전력 모드들 각각의 진입 기능을 실행함으로써 상기 저전력 리소스 모드들의 선택된 조합에 진입하는 수단을 포함하는, 컴퓨팅 디바이스.
  15. 제 14 항에 있어서,
    상이한 온도들에서, 제 14 항에 기재된, 온도 및 전류, 또는 온도 및 전력 수요를 측정하는 동작, 측정을 위한 리소스를 선택하는 동작, 상기 선택된 리소스를 저전력 리소스 모드에 두는 동작, 상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 동작, 및 저전력 리소스 모드를 갖는 모든 리소스들에 대해 저전력 리소스 모드 동안의 전류 또는 전력 수요가 측정될 때까지, 다음 리소스를 선택하는 것, 상기 선택된 리소스를 저전력 리소스 모드에 두는 것 및 상기 선택된 리소스가 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 것을 반복하는 동작을 반복하는 수단; 및
    각각의 저전력 리소스 모드와 연관된 전류 또는 전력 수요의 온도 민감도를 결정하는 수단을 더 포함하고,
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 수단은,
    상기 컴퓨팅 디바이스의 온도를 측정하는 수단; 및
    각각의 저전력 리소스 모드와 연관된 상기 전류 또는 전력 수요의 결정된 온도 민감도를 이용하여 상기 측정된 컴퓨팅 디바이스 온도에서 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하는 수단을 포함하는, 컴퓨팅 디바이스.
  16. 제 11 항에 있어서,
    저전력 모드에 둘 수도 있는 각각의 리소스에 대해 저전력 리소스 모드들을 평가하는 수단은, 잠재적인 전력 절감량, 추정된 아이들 시간 및 동작 조건들을 이용하는 저전력 모드 선택 데이터 테이블을 이용하여 테이블 탐색 프로세스를 달성하는 수단을 포함하는, 컴퓨팅 디바이스.
  17. 제 16 항에 있어서,
    상기 동작 조건들은 온도 값을 포함하는, 컴퓨팅 디바이스.
  18. 제 16 항에 있어서,
    상기 컴퓨팅 디바이스에 대해 동작 조건들에 관한 통계치를 수집하는 수단; 및
    상기 수집된 동작 조건들 통계치에 기초하여 상기 저전력 모드 선택 데이터 테이블을 업데이트하는 수단을 더 포함하는, 컴퓨팅 디바이스.
  19. 제 18 항에 있어서,
    상기 동작 조건들은, 온도, 특정의 저전력 리소스 모드들의 전력 소비, 여러 동작 상태들에서 경험된 아이들 시간들, 및 통상적인 디바이스 사용 패턴들을 포함하는 그룹으로부터 선택되는, 컴퓨팅 디바이스.
  20. 제 18 항에 있어서,
    상기 컴퓨팅 디바이스가 외부 전력에 접속되어 있는지 여부를 결정하는 수단을 더 포함하고,
    상기 동작 조건들 통계치에 기초하여 상기 저전력 모드 선택 데이터 테이블을 업데이트하는 수단은, 상기 컴퓨팅 디바이스가 외부 전력에 접속되어 있을 때에 달성되는, 컴퓨팅 디바이스.
  21. 컴퓨팅 디바이스에서 전력을 절약하는 장치로서,
    메모리 버퍼; 및
    상기 메모리 버퍼에 커플링된 프로세서를 포함하고,
    상기 프로세서는,
    리소스가 사용되고 있지 않을 때 저전력 모드 마스크에서 상기 리소스와 연관된 플래그 비트를 설정하는 동작으로서, 상기 리소스는 복수의 리소스들 중 하나인, 상기 플래그 비트를 설정하는 동작;
    상기 프로세서가 아이들 상태에 진입할 수 있을 때 상기 저전력 모드 마스크의 플래그 비트 설정들에 기초하여, 저전력 모드에 둘 수도 있는 리소스들을 식별하는 동작;
    상기 식별된 리소스들 각각에 대해 레이턴시 요건을 등록하는 동작;
    상기 프로세서가 아이들 상태에 남아 있을 것으로 예상되는 시간을 결정하는 동작;
    상기 컴퓨팅 디바이스에 대한 레이턴시 버짓을 결정하는 동작;
    상기 레이턴시 버짓을 초과하는 조합된 레이턴시 요건을 갖고, 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합을 제거하기 위해 저전력 모드에 둘 수도 있는 각각의 리소스에 대해 상기 컴퓨팅 디바이스 저전력 모드들을 평가하는 동작;
    현재 온도에서의 단위 시간 당 잠재적인 전력 절감량들과 상기 결정된 예상 아이들 시간과의 곱에 기초하여 각각의 평가된 저전력 리소스 모드들의 상기 잠재적인 전력 절감량들을 결정하는 동작;
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 동작; 및
    상기 식별된 리소스들 각각에 대해 상기 선택된 저전력 모드들 각각의 진입 기능을 실행함으로써 상기 저전력 리소스 모드들의 선택된 조합에 진입하는 동작을 포함하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는, 전력을 절약하는 장치.
  22. 제 21 항에 있어서,
    상기 프로세서는 또한,
    상기 저전력 리소스 모드들의 조합을 선택하는 동작이 여러 저전력 모드들 및 리소스들에 대해 냅색 (knapsack) 문제 솔루션 알고리즘을 실행하는 동작을 포함하도록 프로세서 실행가능한 명령들로 구성되는, 전력을 절약하는 장치.
  23. 삭제
  24. 컴퓨팅 디바이스에서 전력을 절약하는 장치로서,
    메모리 버퍼; 및
    상기 메모리 버퍼에 커플링된 프로세서를 포함하고,
    상기 프로세서는,
    상기 디바이스가 기지의 (known) 안정 상태에 있을 때, 온도 및 전류, 또는 온도 및 전력 수요를 측정하는 동작;
    측정을 위한 리소스를 선택하는 동작;
    상기 선택된 리소스를 저전력 리소스 모드에 두는 동작;
    상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 동작;
    저전력 리소스 모드를 갖는 모든 리소스들에 대해 저전력 리소스 모드 동안의 전류 또는 전력 수요가 측정될 때까지, 다음 리소스를 선택하는 동작, 상기 선택된 리소스를 저전력 리소스 모드에 두는 동작 및 상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 동작을 반복하는 동작;
    리소스가 사용되고 있지 않을 때 저전력 모드 마스크에서 상기 리소스와 연관된 플래그 비트를 설정하는 동작으로서, 상기 리소스는 복수의 리소스들 중 하나인, 상기 플래그 비트를 설정하는 동작;
    상기 프로세서가 아이들 상태에 진입할 수 있을 때 상기 저전력 모드 마스크의 플래그 비트 설정들에 기초하여, 저전력 모드에 둘 수도 있는 리소스들을 식별하는 동작;
    상기 식별된 리소스들 각각에 대해 레이턴시 요건을 등록하는 동작;
    상기 컴퓨팅 디바이스에 대한 레이턴시 버짓을 결정하는 동작;
    상기 레이턴시 버짓을 초과하는 조합된 레이턴시 요건을 갖고, 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합을 제거하기 위해 저전력 모드에 둘 수도 있는 각각의 리소스에 대해 상기 컴퓨팅 디바이스 저전력 모드들을 평가하는 동작;
    각각의 저전력 리소스 모드와 연관된 상기 측정된 전류 또는 전력 수요를 이용하여 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하는 동작;
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 동작; 및
    상기 식별된 리소스들 각각에 대해 상기 선택된 저전력 모드들 각각의 진입 기능을 실행함으로써 상기 저전력 리소스 모드들의 선택된 조합에 진입하는 동작을 포함하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는, 전력을 절약하는 장치.
  25. 제 24 항에 있어서,
    상기 프로세서는,
    상이한 온도들에서, 제 24 항에 기재된, 온도 및 전류, 또는 온도 및 전력 수요를 측정하는 동작, 측정을 위한 리소스를 선택하는 동작, 상기 선택된 리소스를 저전력 리소스 모드에 두는 동작, 상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 동작, 및 저전력 리소스 모드를 갖는 모든 리소스들에 대해 저전력 리소스 모드 동안의 전류 또는 전력 수요가 측정될 때까지, 다음 리소스를 선택하는 것, 상기 선택된 리소스를 저전력 리소스 모드에 두는 것 및 상기 선택된 리소스가 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 것을 반복하는 동작을 반복하는 동작; 및
    각각의 저전력 리소스 모드와 연관된 전류 또는 전력 수요의 온도 민감도를 결정하는 동작을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되며,
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 동작은,
    상기 컴퓨팅 디바이스의 온도를 측정하는 동작; 및
    각각의 저전력 리소스 모드와 연관된 상기 전류 또는 전력 수요의 결정된 온도 민감도를 이용하여 상기 측정된 컴퓨팅 디바이스 온도에서 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하는 동작을 포함하는, 전력을 절약하는 장치.
  26. 제 21 항에 있어서,
    상기 프로세서는,
    저전력 모드에 둘 수도 있는 각각의 리소스에 대해 저전력 리소스 모드들을 평가하는 동작이 잠재적인 전력 절감량, 추정된 아이들 시간 및 동작 조건들을 이용하는 저전력 모드 선택 데이터 테이블을 이용하여 테이블 탐색 프로세스를 달성하는 동작을 포함하도록 프로세서 실행가능한 명령들로 구성되는, 전력을 절약하는 장치.
  27. 제 26 항에 있어서,
    상기 프로세서는,
    상기 동작 조건들이 온도 값을 포함하도록 프로세서 실행가능한 명령들로 구성되는, 전력을 절약하는 장치.
  28. 제 26 항에 있어서,
    상기 프로세서는,
    상기 컴퓨팅 디바이스에 대해 동작 조건들에 관한 통계치를 수집하는 동작; 및
    상기 수집된 동작 조건들 통계치에 기초하여 상기 저전력 모드 선택 데이터 테이블을 업데이트하는 동작을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는, 전력을 절약하는 장치.
  29. 제 28 항에 있어서,
    상기 프로세서는,
    상기 동작 조건들이 온도, 특정의 저전력 리소스 모드들의 전력 소비, 여러 동작 상태들에서 경험된 아이들 시간들, 및 통상적인 디바이스 사용 패턴들을 포함하는 그룹으로부터 선택되도록 프로세서 실행가능한 명령들로 구성되는, 전력을 절약하는 장치.
  30. 제 28 항에 있어서,
    상기 프로세서는,
    상기 컴퓨팅 디바이스가 외부 전력에 접속되어 있는지 여부를 결정하는 동작을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되며,
    상기 동작 조건들 통계치에 기초하여 상기 저전력 모드 선택 데이터 테이블을 업데이트하는 동작은, 상기 컴퓨팅 디바이스가 외부 전력에 접속되어 있을 때에 달성되는, 전력을 절약하는 장치.
  31. 프로세서로 하여금, 컴퓨팅 디바이스에서 전력을 절약하는 동작들을 수행하게 하도록 구성된 프로세서 실행가능한 소프트웨어 명령들을 저장한 비일시적 저장 매체로서,
    상기 동작들은,
    리소스가 사용되고 있지 않을 때 저전력 모드 마스크에서 상기 리소스와 연관된 플래그 비트를 설정하는 동작으로서, 상기 리소스는 복수의 리소스들 중 하나인, 상기 플래그 비트를 설정하는 동작;
    상기 컴퓨팅 디바이스의 프로세서가 아이들 상태에 진입할 수 있을 때 상기 저전력 모드 마스크의 플래그 비트 설정들에 기초하여 저전력 모드에 둘 수도 있는 리소스들을 식별하는 동작;
    상기 식별된 리소스들 각각에 대해 레이턴시 요건을 등록하는 동작;
    상기 프로세서가 아이들 상태에 남아 있을 것으로 예상되는 시간을 결정하는 동작;
    상기 컴퓨팅 디바이스에 대한 레이턴시 버짓을 결정하는 동작;
    상기 레이턴시 버짓을 초과하는 조합된 레이턴시 요건을 갖고, 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합을 제거하기 위해 저전력 모드에 둘 수도 있는 각각의 리소스에 대해 상기 컴퓨팅 디바이스 저전력 모드들을 평가하는 동작;
    현재 온도에서의 단위 시간 당 잠재적인 전력 절감량들과 상기 결정된 예상 아이들 시간과의 곱에 기초하여 각각의 평가된 저전력 리소스 모드들의 상기 잠재적인 전력 절감량들을 결정하는 동작;
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 동작; 및
    상기 식별된 리소스들 각각에 대해 상기 선택된 저전력 모드들 각각의 진입 기능을 실행함으로써 상기 저전력 리소스 모드들의 선택된 조합에 진입하는 동작을 포함하는, 비일시적 저장 매체.
  32. 제 31 항에 있어서,
    상기 저장된 프로세서 실행가능한 소프트웨어 명령들은,
    프로세서로 하여금,
    상기 저전력 리소스 모드들의 조합을 선택하는 동작이 여러 저전력 모드들 및 리소스들에 대해 냅색 (knapsack) 문제 솔루션 알고리즘을 실행하는 동작을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 저장 매체.
  33. 삭제
  34. 프로세서로 하여금, 컴퓨팅 디바이스에서 전력을 절약하는 동작들을 수행하게 하도록 구성된 프로세서 실행가능한 소프트웨어 명령들을 저장한 비일시적 저장 매체로서,
    상기 동작들은,
    상기 디바이스가 기지의 (known) 안정 상태에 있을 때, 온도 및 전류, 또는 온도 및 전력 수요를 측정하는 동작;
    측정을 위한 리소스를 선택하는 동작;
    상기 선택된 리소스를 저전력 리소스 모드에 두는 동작;
    상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 동작;
    저전력 리소스 모드를 갖는 모든 리소스들에 대해 저전력 리소스 모드 동안의 전류 또는 전력 수요가 측정될 때까지, 다음 리소스를 선택하는 동작, 상기 선택된 리소스를 저전력 리소스 모드에 두는 동작 및 상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 동작을 반복하는 동작;
    리소스가 사용되고 있지 않을 때 저전력 모드 마스크에서 상기 리소스와 연관된 플래그 비트를 설정하는 동작으로서, 상기 리소스는 복수의 리소스들 중 하나인, 상기 플래그 비트를 설정하는 동작;
    상기 컴퓨팅 디바이스의 프로세서가 아이들 상태에 진입할 수 있을 때 상기 저전력 모드 마스크의 플래그 비트 설정들에 기초하여 저전력 모드에 둘 수도 있는 리소스들을 식별하는 동작;
    상기 식별된 리소스들 각각에 대해 레이턴시 요건을 등록하는 동작;
    상기 컴퓨팅 디바이스에 대한 레이턴시 버짓을 결정하는 동작;
    상기 레이턴시 버짓을 초과하는 조합된 레이턴시 요건을 갖고, 임의의 저전력 리소스 모드, 또는 저전력 리소스 모드들의 임의의 조합을 제거하기 위해 저전력 모드에 둘 수도 있는 각각의 리소스에 대해 상기 컴퓨팅 디바이스 저전력 모드들을 평가하는 동작;
    각각의 저전력 리소스 모드와 연관된 상기 측정된 전류 또는 전력 수요를 이용하여 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하는 동작;
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 동작; 및
    상기 식별된 리소스들 각각에 대해 상기 선택된 저전력 모드들 각각의 진입 기능을 실행함으로써 상기 저전력 리소스 모드들의 선택된 조합에 진입하는 동작을 포함하는, 비일시적 저장 매체.
  35. 제 34 항에 있어서,
    상기 저장된 프로세서 실행가능한 소프트웨어 명령들은,
    프로세서로 하여금,
    상이한 온도들에서, 제 34 항에 기재된, 온도 및 전류, 또는 온도 및 전력 수요를 측정하는 동작, 측정을 위한 리소스를 선택하는 동작, 상기 선택된 리소스를 저전력 리소스 모드에 두는 동작, 상기 선택된 리소스가 상기 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 동작, 및 저전력 리소스 모드를 갖는 모든 리소스들에 대해 저전력 리소스 모드 동안의 전류 또는 전력 수요가 측정될 때까지, 다음 리소스를 선택하는 것, 상기 선택된 리소스를 저전력 리소스 모드에 두는 것 및 상기 선택된 리소스가 저전력 리소스 모드에 있는 동안 전류 또는 전력 수요를 측정하는 것을 반복하는 동작을 반복하는 동작; 및
    각각의 저전력 리소스 모드와 연관된 전류 또는 전력 수요의 온도 민감도를 결정하는 동작을 더 포함하는 동작들을 수행하게 하도록 구성되며,
    상기 잠재적인 전력 절감량들을 최대화하고 상기 레이턴시 버짓보다 작거나 같은 총 레이턴시 요건을 갖는 저전력 리소스 모드들의 조합을 선택하는 동작은,
    상기 컴퓨팅 디바이스의 온도를 측정하는 동작; 및
    각각의 저전력 리소스 모드와 연관된 상기 전류 또는 전력 수요의 결정된 온도 민감도를 이용하여 상기 측정된 컴퓨팅 디바이스 온도에서 저전력 리소스 모드들의 조합의 잠재적인 전력 절감량들을 결정하는 동작을 포함하는, 비일시적 저장 매체.
  36. 제 31 항에 있어서,
    상기 저장된 프로세서 실행가능한 소프트웨어 명령들은,
    프로세서로 하여금,
    저전력 모드에 둘 수도 있는 각각의 리소스에 대해 저전력 리소스 모드들을 평가하는 동작이 잠재적인 전력 절감량, 추정된 아이들 시간 및 동작 조건들을 이용하는 저전력 모드 선택 데이터 테이블을 이용하여 테이블 탐색 프로세스를 달성하는 동작을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 저장 매체.
  37. 제 36 항에 있어서,
    상기 저장된 프로세서 실행가능한 소프트웨어 명령들은,
    프로세서로 하여금,
    상기 동작 조건들이 온도 값을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 저장 매체.
  38. 제 36 항에 있어서,
    상기 저장된 프로세서 실행가능한 소프트웨어 명령들은,
    프로세서로 하여금,
    상기 컴퓨팅 디바이스에 대해 동작 조건들에 관한 통계치를 수집하는 동작; 및
    상기 수집된 동작 조건들 통계치에 기초하여 상기 저전력 모드 선택 데이터 테이블을 업데이트하는 동작을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 저장 매체.
  39. 제 38 항에 있어서,
    상기 저장된 프로세서 실행가능한 소프트웨어 명령들은,
    프로세서로 하여금,
    상기 동작 조건들이 온도, 특정의 저전력 리소스 모드들의 전력 소비, 여러 동작 상태들에서 경험된 아이들 시간들, 및 통상적인 디바이스 사용 패턴들을 포함하는 그룹으로부터 선택되도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적 저장 매체.
  40. 제 38 항에 있어서,
    상기 저장된 프로세서 실행가능한 소프트웨어 명령들은,
    프로세서로 하여금,
    상기 컴퓨팅 디바이스가 외부 전력에 접속되어 있는지 여부를 결정하는 동작을 더 포함하는 동작들을 수행하게 하도록 구성되며,
    상기 동작 조건들 통계치에 기초하여 상기 저전력 모드 선택 데이터 테이블을 업데이트하는 동작은, 상기 컴퓨팅 디바이스가 외부 전력에 접속되어 있을 때에 달성되는, 비일시적 저장 매체.
KR1020127020979A 2010-01-11 2011-01-10 컴퓨팅 디바이스들에 대한 동적 저전력 모드 구현 KR101411807B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US29405510P 2010-01-11 2010-01-11
US61/294,055 2010-01-11
US12/965,008 US9235251B2 (en) 2010-01-11 2010-12-10 Dynamic low power mode implementation for computing devices
US12/965,008 2010-12-10
PCT/US2011/020710 WO2011085330A1 (en) 2010-01-11 2011-01-10 Dynamic low power mode implementation for computing devices

Publications (2)

Publication Number Publication Date
KR20120117015A KR20120117015A (ko) 2012-10-23
KR101411807B1 true KR101411807B1 (ko) 2014-06-24

Family

ID=44259448

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127020979A KR101411807B1 (ko) 2010-01-11 2011-01-10 컴퓨팅 디바이스들에 대한 동적 저전력 모드 구현

Country Status (8)

Country Link
US (1) US9235251B2 (ko)
EP (1) EP2524273B1 (ko)
JP (1) JP5710642B2 (ko)
KR (1) KR101411807B1 (ko)
CN (1) CN102667668B (ko)
ES (1) ES2646663T3 (ko)
HU (1) HUE036348T2 (ko)
WO (1) WO2011085330A1 (ko)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8504855B2 (en) 2010-01-11 2013-08-06 Qualcomm Incorporated Domain specific language, compiler and JIT for dynamic power management
US9311102B2 (en) * 2010-07-13 2016-04-12 Advanced Micro Devices, Inc. Dynamic control of SIMDs
JP5251969B2 (ja) * 2010-12-20 2013-07-31 コニカミノルタビジネステクノロジーズ株式会社 画像形成装置
US20120159219A1 (en) * 2010-12-20 2012-06-21 Lilly Huang Vr power mode interface
US20130007492A1 (en) * 2011-06-30 2013-01-03 Sokol Jr Joseph Timer interrupt latency
US8954017B2 (en) * 2011-08-17 2015-02-10 Broadcom Corporation Clock signal multiplication to reduce noise coupled onto a transmission communication signal of a communications device
US8862917B2 (en) * 2011-09-19 2014-10-14 Qualcomm Incorporated Dynamic sleep for multicore computing devices
JP5893336B2 (ja) * 2011-10-24 2016-03-23 キヤノン株式会社 電源制御装置、電源制御装置の制御方法、およびプログラム
TWI493332B (zh) * 2011-11-29 2015-07-21 Intel Corp 用於電力管理的方法與設備及其平台與電腦可讀取媒體
WO2013100901A1 (en) 2011-12-27 2013-07-04 Intel Corporation Power management using reward-based sleep state selection
US8775838B2 (en) * 2012-02-01 2014-07-08 Texas Instruments Incorporated Limiting the number of unexpected wakeups in a computer system implementing a power-saving preemptive wakeup method from historical data
US9395807B2 (en) * 2012-05-23 2016-07-19 Canon Kabushiki Kaisha Power management apparatus, image forming apparatus and power management method
US9477287B1 (en) * 2012-06-28 2016-10-25 Amazon Technologies, Inc. Optimizing computing resources
KR20140014895A (ko) * 2012-07-27 2014-02-06 삼성전자주식회사 휴대 단말기의 배터리 절약 방법 및 장치
KR101951171B1 (ko) * 2012-08-09 2019-02-25 삼성전자 주식회사 멀티미디어 프로세싱 시스템 및 그 동작 방법
JP2014081688A (ja) * 2012-10-12 2014-05-08 Canon Inc 情報処理装置及びその制御方法、並びに、そのプログラムと記憶媒体
US9213390B2 (en) * 2012-12-28 2015-12-15 Intel Corporation Periodic activity alignment
US9164565B2 (en) * 2012-12-28 2015-10-20 Intel Corporation Apparatus and method to manage energy usage of a processor
US9575542B2 (en) * 2013-01-31 2017-02-21 Hewlett Packard Enterprise Development Lp Computer power management
US20140245044A1 (en) * 2013-02-28 2014-08-28 Barnesandnoble.com IIc Method for hibernation control based on usage pattern
US9021280B1 (en) * 2013-03-12 2015-04-28 Pmc-Sierra Us, Inc. Power saving for FIFO buffer without performance degradation
CN105379317B (zh) * 2013-06-14 2019-05-28 微软技术许可有限责任公司 基于邻近的社交交互的方法和系统
US9430014B2 (en) 2013-07-18 2016-08-30 Qualcomm Incorporated System and method for idle state optimization in a multi-processor system on a chip
WO2015038106A1 (en) * 2013-09-11 2015-03-19 Hewlett-Packard Development Company, L.P. Mobile device power control
GB2519804A (en) * 2013-10-31 2015-05-06 Nec Corp Power saving in mobile radio communications device
US9552033B2 (en) 2014-04-22 2017-01-24 Qualcomm Incorporated Latency-based power mode units for controlling power modes of processor cores, and related methods and systems
US9343116B2 (en) * 2014-05-28 2016-05-17 Micron Technology, Inc. Providing power availability information to memory
GB2528115B (en) * 2014-07-11 2021-05-19 Advanced Risc Mach Ltd Dynamic saving of registers in transactions
KR102222337B1 (ko) * 2014-08-05 2021-03-04 삼성전자주식회사 전자 기기의 어플리케이션 동기화 방법 및 장치
US10402746B2 (en) 2014-09-10 2019-09-03 Amazon Technologies, Inc. Computing instance launch time
CN107077385B (zh) * 2014-09-10 2019-10-25 亚马逊技术公司 用于减少计算实例启动时间的系统、方法及存储介质
CN105446452A (zh) * 2014-09-18 2016-03-30 联发科技(新加坡)私人有限公司 具有定位功能的电子装置及其省电管理方法
TWI653527B (zh) 2014-12-27 2019-03-11 美商英特爾公司 當計算元件運作時致能系統低電力狀態之技術
EP3251421B1 (en) 2015-01-26 2019-10-30 Hewlett-Packard Enterprise Development LP Regulating a power consumption state of a cellular radio
JP6276212B2 (ja) 2015-03-25 2018-02-07 株式会社東芝 半導体装置、電力制御方法及びプログラム
KR101960507B1 (ko) * 2015-04-08 2019-03-20 삼성전자주식회사 디스플레이 장치 및 디스플레이 방법
US9846470B2 (en) 2015-08-06 2017-12-19 Seagate Technology Llc Data storage power management
CN105700665B (zh) * 2016-01-15 2018-10-16 致象尔微电子科技(上海)有限公司 基于嵌入式系统功耗模式的选择方法及系统,嵌入式系统
US9965220B2 (en) * 2016-02-05 2018-05-08 Qualcomm Incorporated Forced idling of memory subsystems
CN106055079B (zh) * 2016-05-31 2017-11-24 广东欧珀移动通信有限公司 一种中央处理器的管理方法、及装置
KR101694493B1 (ko) * 2016-08-04 2017-01-10 주식회사 삼보컴퓨터 컴퓨팅 디바이스 및 컴퓨팅 디바이스에서의 전력 관리 방법
US20180188797A1 (en) * 2016-12-29 2018-07-05 Intel Corporation Link power management scheme based on link's prior history
US11032047B2 (en) * 2017-09-29 2021-06-08 Qualcomm Incorporated Techniques and apparatuses for wakeup signal design and resource allocation
US10732871B2 (en) * 2017-11-01 2020-08-04 Western Digital Technologies, Inc. Storage device and method for adaptive sleep mode transitions
KR102429801B1 (ko) * 2018-02-22 2022-08-05 삼성전자주식회사 저전력 표시 모드를 적응적으로 제어하기 위한 방법 및 그 전자 장치
US10359959B1 (en) * 2018-03-06 2019-07-23 Western Digital Technologies, Inc. Energy optimized power state declarations for solid state drives
JP2019159802A (ja) * 2018-03-13 2019-09-19 東芝メモリ株式会社 記憶装置の電力制御方法および記憶装置
US11243598B2 (en) * 2018-06-01 2022-02-08 Apple Inc. Proactive power management of a graphics processor
EP3649959A1 (en) * 2018-11-06 2020-05-13 Koninklijke Philips N.V. Ultrasound control unit
US11086384B2 (en) * 2019-11-19 2021-08-10 Intel Corporation System, apparatus and method for latency monitoring and response
KR20220003837A (ko) 2020-07-02 2022-01-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN112399536A (zh) * 2020-11-26 2021-02-23 深圳北斗通信科技有限公司 枪支定位终端功耗管理方法、系统及存储介质
KR20230094565A (ko) * 2021-12-21 2023-06-28 에스케이하이닉스 주식회사 복수의 서브 회로들의 상태를 기초로 활성화 모드 또는 저전력 모드로 동작하는 컨트롤러 및 그 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457135B1 (en) 1999-08-10 2002-09-24 Intel Corporation System and method for managing a plurality of processor performance states
JP2008141290A (ja) 2006-11-30 2008-06-19 Sharp Corp Nicを備えるシステム機器および同システム機器の省電力制御方法
US20090249103A1 (en) * 2008-03-31 2009-10-01 Jeyaseelan Jaya L Platform power management based on latency guidance

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0834106B1 (en) * 1995-06-07 2000-02-23 Seiko Epson Corporation Computer system with video display controller having power saving modes
JPH10268987A (ja) 1997-03-25 1998-10-09 Ricoh Co Ltd バッテリ駆動式電子機器
US7539885B2 (en) * 2000-01-13 2009-05-26 Broadcom Corporation Method and apparatus for adaptive CPU power management
JP2002244761A (ja) 2001-02-14 2002-08-30 Mitsubishi Electric Corp 半導体集積回路
JP2002258997A (ja) 2001-02-28 2002-09-13 Sharp Corp 手書き入力機能付き装置
US20030028711A1 (en) * 2001-07-30 2003-02-06 Woo Steven C. Monitoring in-use memory areas for power conservation
US6795781B2 (en) * 2002-06-27 2004-09-21 Intel Corporation Method and apparatus for compiler assisted power management
JP2004192256A (ja) 2002-12-10 2004-07-08 Seiko Epson Corp ネットワークコントローラ
US7065663B2 (en) * 2002-12-19 2006-06-20 Intel Corporation Methods and apparatus to control power state transitions
US7953990B2 (en) * 2002-12-31 2011-05-31 Stewart Thomas E Adaptive power control based on post package characterization of integrated circuits
US7117380B2 (en) * 2003-09-30 2006-10-03 International Business Machines Corporation Apparatus, system, and method for autonomic power adjustment in an electronic device
US7281144B2 (en) * 2004-02-17 2007-10-09 Intel Corporation Power management in communication devices
JP4316399B2 (ja) 2004-02-18 2009-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム、記録媒体、制御方法、及び情報処理装置
US7366921B2 (en) * 2004-04-23 2008-04-29 Hewlett-Packard Development Company, L.P. Selecting input/output devices to control power consumption of a computer system
US7343502B2 (en) 2004-07-26 2008-03-11 Intel Corporation Method and apparatus for dynamic DLL powerdown and memory self-refresh
US7360106B2 (en) * 2004-08-05 2008-04-15 Matsushita Electric Industrial Co., Ltd. Power-saving processing unit, power-saving processing method and program record medium
US7246181B2 (en) * 2004-09-14 2007-07-17 Hewlett-Packard Development Company, L.P. Device and method for identifying a communication interface that performs an operating parameter closer to a desired performance level than another communication interface performs the operating parameter
JP2006163643A (ja) 2004-12-03 2006-06-22 Sony Computer Entertainment Inc 電源制御装置、データ読出装置および電源制御方法
US20060136919A1 (en) 2004-12-17 2006-06-22 Sun Microsystems, Inc. System and method for controlling thread suspension in a multithreaded processor
EP1849051A2 (en) 2005-02-16 2007-10-31 Matsusita Electric Industrial Co., Ltd. Power supply control circuit and electronic circuit
JP2006254185A (ja) 2005-03-11 2006-09-21 Orion Denki Kk 節電機能を有する電子機器
US7454631B1 (en) * 2005-03-11 2008-11-18 Sun Microsystems, Inc. Method and apparatus for controlling power consumption in multiprocessor chip
US7386747B2 (en) * 2005-05-10 2008-06-10 Qualcomm Incorporated Method and system for reducing power consumption of a programmable processor
US7836284B2 (en) * 2005-06-09 2010-11-16 Qualcomm Incorporated Microprocessor with automatic selection of processing parallelism mode based on width data of instructions
US7454632B2 (en) 2005-06-16 2008-11-18 Intel Corporation Reducing computing system power through idle synchronization
US7536573B2 (en) 2005-07-29 2009-05-19 Hewlett-Packard Development Company, L.P. Power budgeting for computers
US7647078B2 (en) * 2006-03-07 2010-01-12 Samsung Electronics Co., Ltd. Power-saving method for wireless sensor network
US7752468B2 (en) * 2006-06-06 2010-07-06 Intel Corporation Predict computing platform memory power utilization
US7783905B2 (en) * 2006-06-13 2010-08-24 Via Technologies Inc. Method for reducing power consumption of a computer system in the working state
US7529956B2 (en) * 2006-07-17 2009-05-05 Microsoft Corporation Granular reduction in power consumption
US7930564B2 (en) * 2006-07-31 2011-04-19 Intel Corporation System and method for controlling processor low power states
US7716506B1 (en) * 2006-12-14 2010-05-11 Nvidia Corporation Apparatus, method, and system for dynamically selecting power down level
US20090172434A1 (en) * 2007-12-31 2009-07-02 Kwa Seh W Latency based platform coordination
US8315746B2 (en) * 2008-05-30 2012-11-20 Apple Inc. Thermal management techniques in an electronic device
US8255713B2 (en) 2008-06-26 2012-08-28 Intel Corporation Management of link states using plateform and device latencies
US8086882B2 (en) * 2008-06-29 2011-12-27 Microsoft Corporation Energy measurement techniques for computing systems
US8112645B2 (en) * 2008-07-25 2012-02-07 Freescale Semiconductor, Inc. System and method for power management
US20100162256A1 (en) * 2008-12-18 2010-06-24 Alexander Branover Optimization of application power consumption and performance in an integrated system on a chip
US8065542B2 (en) * 2008-12-31 2011-11-22 Synopsys, Inc. Distributed table-driven power mode computation for controlling optimal clock and voltage switching
US8607075B2 (en) * 2008-12-31 2013-12-10 Intel Corporation Idle duration reporting for power management
US8601296B2 (en) 2008-12-31 2013-12-03 Intel Corporation Downstream device service latency reporting for power management
US8566628B2 (en) 2009-05-06 2013-10-22 Advanced Micro Devices, Inc. North-bridge to south-bridge protocol for placing processor in low power state
US8341628B2 (en) 2009-12-23 2012-12-25 International Business Machines Corporation Controlling depth and latency of exit of a virtual processor's idle state in a power management environment
US20130290758A1 (en) * 2010-01-11 2013-10-31 Qualcomm Incorporated Sleep mode latency scaling and dynamic run time adjustment
US8504855B2 (en) * 2010-01-11 2013-08-06 Qualcomm Incorporated Domain specific language, compiler and JIT for dynamic power management
US20130007492A1 (en) 2011-06-30 2013-01-03 Sokol Jr Joseph Timer interrupt latency
US8862917B2 (en) 2011-09-19 2014-10-14 Qualcomm Incorporated Dynamic sleep for multicore computing devices
US8782454B2 (en) 2011-10-28 2014-07-15 Apple Inc. System and method for managing clock speed based on task urgency

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457135B1 (en) 1999-08-10 2002-09-24 Intel Corporation System and method for managing a plurality of processor performance states
JP2008141290A (ja) 2006-11-30 2008-06-19 Sharp Corp Nicを備えるシステム機器および同システム機器の省電力制御方法
US20090249103A1 (en) * 2008-03-31 2009-10-01 Jeyaseelan Jaya L Platform power management based on latency guidance

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Feihui Li et al., Compiler-Directed Proactive Power Management for Networks, CASES’05, pp.137-146 (2005.09.24.)*
Feihui Li et al., Compiler-Directed Proactive Power Management for Networks, CASES'05, pp.137-146 (2005.09.24.) *

Also Published As

Publication number Publication date
US20110173474A1 (en) 2011-07-14
ES2646663T3 (es) 2017-12-14
EP2524273A1 (en) 2012-11-21
EP2524273B1 (en) 2017-08-23
US9235251B2 (en) 2016-01-12
HUE036348T2 (hu) 2018-07-30
KR20120117015A (ko) 2012-10-23
WO2011085330A1 (en) 2011-07-14
JP5710642B2 (ja) 2015-04-30
CN102667668B (zh) 2015-12-16
JP2013516025A (ja) 2013-05-09
CN102667668A (zh) 2012-09-12

Similar Documents

Publication Publication Date Title
KR101411807B1 (ko) 컴퓨팅 디바이스들에 대한 동적 저전력 모드 구현
US20130290758A1 (en) Sleep mode latency scaling and dynamic run time adjustment
EP2758851B1 (en) Dynamic sleep for multicore computing devices
KR101411756B1 (ko) 동적 전력 관리를 위한 도메인 특정 언어, 컴파일러 및 jit
US9074947B2 (en) Estimating temperature of a processor core in a low power state without thermal sensor information
US7197654B2 (en) Method and apparatus for managing low power processor states
WO2011057059A1 (en) Controlling performance state by tracking probe activity level
KR20100054855A (ko) 전력 관리 장치, 전력 관리 방법 및 컴퓨터 판독 가능한 매체
CN102822768A (zh) 通过从处理器性能管理系统掩蔽处理来减少功耗
US10275007B2 (en) Performance management for a multiple-CPU platform
EP2235987B1 (en) Systems and methods for managing power consumption in a flow-based user experience
Yue et al. A task-specific approach to dynamic device power management for embedded system
Iranli et al. System-level power management: An overview
Li et al. A gradient learning optimization for dynamic power management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 6