KR102084838B1 - 예측 제어 시스템들 및 방법들 - Google Patents

예측 제어 시스템들 및 방법들 Download PDF

Info

Publication number
KR102084838B1
KR102084838B1 KR1020177034694A KR20177034694A KR102084838B1 KR 102084838 B1 KR102084838 B1 KR 102084838B1 KR 1020177034694 A KR1020177034694 A KR 1020177034694A KR 20177034694 A KR20177034694 A KR 20177034694A KR 102084838 B1 KR102084838 B1 KR 102084838B1
Authority
KR
South Korea
Prior art keywords
processing
processing device
future
task
user
Prior art date
Application number
KR1020177034694A
Other languages
English (en)
Other versions
KR20180003576A (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 KR20180003576A publication Critical patent/KR20180003576A/ko
Application granted granted Critical
Publication of KR102084838B1 publication Critical patent/KR102084838B1/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/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/329Power saving characterised by the action undertaken by task scheduling
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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
    • Y02D10/172
    • Y02D10/24

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Power Sources (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

프로세싱 디바이스의 현재의 기계 상태를 결정하고, 미래의 시간에 프로세싱 디바이스에 의해 수행될 미래의 프로세싱 테스크를 예측하며, 그리고 제1 시간(예를 들어, 현재 시간) 및 미래의 프로세싱 테스크의 시작에 의해 수행될 중간 프로세싱 테스크들의 리스트를 예측하기 위한 시스템들 및 방법들이 개시된다. 미래의 프로세싱 테스크는 연관된 초기 상태를 갖는다. 피드-포워드 열 예측 모델은 미래의 프로세싱 테스크를 시작하기 위한 시간에서, 예측된 미래의 기계 상태를 결정한다. 미래의 프로세싱 테스크를 시작하기 위한 미래의 초기 기계 상태를 충족하기 위해, 미래의 프로세싱 테스크의 시작 전에 열 완화 프로세스들이 적용될 수 있다.

Description

예측 제어 시스템들 및 방법들
관련 출원
본 미국 특허 출원은, 발명의 명칭이 "예측 제어 시스템들 및 방법들(PREDICTIVE CONTROL SYSTEMS AND METHODS)"로 2015년 6월 5일자로 출원된 미국 특허 출원 제 62/171,964호(대리인 도켓 넘버 제 4860.P26197Z호)의 35 U.S.C. § 119(e) 하의 우선권을 주장하며, 그 특허 출원은, 그것이 본 개시내용과 일치하는 정도까지 인용에 의해 본 명세서에 포함된다.
본 미국 특허 출원은 다음의 미국 특허 출원들에 관련되며, 이들 각각은 본 개시내용과 일치하는 정도까지 인용에 의해 본 명세서에 포함된다:
(1) 발명의 명칭이 "선택적인 테스크 변조를 사용한 열 완화(THERMAL MITIGATION USING SELECTIVE TASK MODULATION)"로 2014년 9월 30일자로 출원된 출원 제 14/503,318호(도켓 넘버 P23569US1); 및
(2) 발명의 명칭이 "열적으로 적응적인 서비스 품질(THERMALLY ADAPTIVE QUALITY-OF-SERVICE)"로 2014년 9월 30일자로 출원된 출원 제 14/503,321호(도켓 넘버 P23569US2).
기술분야
본 개시내용은 전자 디바이스의 열 제어 분야에 관한 것으로, 더 상세하게는 일 실시예에서, 전자 디바이스의 온도 제어의 예측 방법들에 관한 것이다.
동작에서, 전자 디바이스는 전기 전원을 소비하고 열을 발생시킨다. 디바이스가 더 많은 전원을 소비할수록, 디바이스에 의해 발생된 열은 더 커진다. 랩톱 또는 데스크톱 컴퓨터와 같은 디바이스, 또는 휴대용 전자 디바이스는, 디스플레이, 하나 이상의 프로세싱 유닛들, 하드 디스크, 및/또는 플래시 메모리 또는 다른 솔리드 스테이트 드라이브 메모리와 같은 열-발생 컴포넌트들 및 오디오, 원격통신들, 및 메모리와 같은 다양한 서브-시스템들을 포함할 수 있다. 소비된 전원 및 발생된 열의 양은, 디바이스가 디바이스를 냉각시키기 위한 하나 이상의 팬들을 포함할 만큼 충분히 높을 수 있다. 일부 디바이스들은, 디바이스의 프로세서의 클록 레이트를 감소시키는 것 또는 디바이스의 디스플레이의 밝기를 감소시키는 것과 같은 다른 에너지 절약(및 열 감소) 특징부들을 포함할 수 있다. 통상적으로, 전자 디바이스는 전자 디바이스의 측정된 현재 온도에 응답하여 열-감소 절차들을 호출한다. 열-감소 절차들은 디바이스의 사용자의 경험에 영향을 줄 수 있다. 예를 들어, 팬들은 사용자가 화상 회의할 때에 소리가 커져서, 사용자 및 화상 회의 상의 다른 사용자들이 서로를 듣기 어렵게 만들 수 있다. 프로세서의 클록 속도는 사용자가 프로세서-집약적인 비디오 게임을 플레이하고 있는 때에, 측정된 현재 온도에 응답하여 자동적으로 감소될 수 있으며, 그에 의해, 게임 플레이 동안 디바이스의 응답성을 감소시킨다. 디스플레이의 밝기는, 사용자가 맑은 날에 점심을 하기 위한 장소를 검색하려고 시도하는 때에 디바이스의 측정된 현재 온도에 응답하여 자동적으로 감소될 수 있으며, 이는, 디바이스의 디스플레이를 판독하기 어렵게 만든다. 종래 기술의 냉각 수단은 디바이스의 측정된 현재 온도에 응답하여 호출되며, 전자 디바이스를 사용하는 사용자의 경험에 악영향을 줄 수 있다.
사용자가 수행할 미래의 테스크를 예측하고 미래의 프로세싱 테스크의 시작 전에 디바이스를 냉각시키기 위한 선제적인 동작들을 취함으로써 전자 프로세싱 디바이스를 사용하는 사용자의 경험을 최대화시키기 위한 실시예들이 본 명세서에서 설명된다. 일 실시예에서, 예비의 선제적인 동작들은, 연속적으로-최적화된 컴퓨팅 경험의 느낌을 사용자에게 제공하기 위해 느리고 매끄럽게 적용될 수 있다. 프로세싱 디바이스를 냉각시키기 위한 하나 이상의 선제적인 동작들은 측정된 온도와는 별개의 예측된 온도에 응답하여 취해질 수 있다. 일 실시예에서, 선제적인 냉각 동작들은 측정된 온도에 응답하는 폐쇄-루프 냉각 동작들과 함께 수행될 수 있다.
일 실시예에서, 미래의 프로세싱 테스크는 사용자에 의해 수행된 과거의 프로세싱 테스크들의 이력으로부터 결정될 수 있다. 프로세싱 테스크에 대한 시간이 예측될 수 있으며, 중간 프로세싱 테스크들의 리스트는 과거의 프로세싱 테스크들의 이력을 사용하여 예측될 수 있다. 각각의 프로세싱 테스크에 대한 전원 요건은 프로세싱 테스크들에 대한 전원 사용량의 데이터베이스로부터 결정될 수 있으므로, 제1 시간(또는 현재 시간)과 미래의 프로세싱 테스크에 대한 시작 시간 사이의 전원 이용도가 추정될 수 있다. 전자 디바이스에 대한 현재 온도 및 중간 프로세싱 테스크들의 리스트는 그들의 연관된 전원 요건들(또는 다른 열 프로파일 데이터)과 함께, 미래의 프로세싱 테스크의 시작 시간에 프로세싱 디바이스가 있을 미래의 온도를 예측하기 위해 피드-포워드 예측 모델로 입력될 수 있다. 이어서, 프로세싱 디바이스는 미래의 프로세싱 테스크까지 이어지는 시간 기간에 걸쳐 프로세싱 디바이스를 냉각시키려고 시작할 수 있다. 일 실시예에서, 미래의 테스크는, 과거의 프로세싱 테스크들에서 사용자 거동의 패턴을 결정하도록 과거의 프로세싱 테스크들의 이력을 분석함으로써 결정될 수 있다. 사용자 거동의 패턴을 결정하는 것은, 사용자가 특정 테스크를 시작하는 대략적인 시각(time of day)을 결정하는 것, 사용자가 특정 테스크를 수행하는 대략적인 지속기간을 결정하는 것, 사용자가 특정 테스크를 수행하는 특정 요일을 결정하는 것, 또는 이들의 임의의 조합을 포함할 수 있다. 일 실시예에서, 미래의 프로세싱 테스크를 결정하는 것은, 이를테면 화상 회의에 대한 날짜/시간을 결정하기 위해, 캘린더 애플리케이션으로부터의 데이터를 조사하는 것 또는 이메일 애플리케이션의 이메일들의 텍스트를 파싱(parse)하는 것을 포함할 수 있다. 테스크의 전원 요건을 결정하는 것은, 프로세싱 테스크에 대한 전원의 증분 사용량을 검색하는 것 및 프로세싱 테스크의 추정된 지속기간과 증분을 곱하는 것을 포함할 수 있다. 일 실시예에서, 테스크의 전원 요건을 결정하는 것은 프로세싱 테스크들의 데이터베이스에서 프로세싱 테스크를 검색하는 것을 포함할 수 있다. 미래의 프로세싱 테스크를 위해 프로세싱 디바이스를 준비하는 것은, 나중의 시간으로 하나 이상의 중간 테스크들을 리스케줄링하는 것, 하나 이상의 중간 테스크들의 스케줄링 우선순위를 낮추는 것, 디스플레이 밝기를 감소시키는 것, 또는 프로세서의 클록 속도를 감소시키는 것, 또는 이들의 조합을 포함할 수 있다.
다른 실시예에서, 프로세싱 테스크들에 대한 전원 사용량 요건들의 데이터베이스는 프로세싱 디바이스의 초기 부트 흐름과 같은 프로세싱 테스크들의 알려진 초기 세트에 대한 초기 전원 이용도를 결정함으로써 생성될 수 있다. 이어서, 기동되는 각각의 부가적인 프로세싱 테스크에 대해, 프로세싱 테스크를 위해 사용되는 전원이 측정될 수 있다. 일 실시예에서, 프로세싱 테스크에 의해 사용되는 전원은 프로세싱 테스크의 구동의 전체 지속기간에 걸쳐 측정되어 저장될 수 있다. 다른 실시예에서, 프로세싱 테스크에 의한 전원 사용량은 25밀리초(25ms)와 같은 시간의 증분들로 샘플링될 수 있다. 하나 이상의 증분들에 걸쳐 사용되는 전원은 평균이 구해져서 저장될 수 있다. 공장 또는 "시드" 전원 사용량 데이터베이스는 전자 디바이스 상에 사전에-설치될 수 있다. 이어서, 실제 측정된 전원 사용량이 획득 및 저장되며, 시간에 걸쳐 시드 전원 사용량 데이터베이스를 정정하거나 대체할 수 있다. 열 관리 프로세스는, 특정 프로세싱 테스크에 의해 사용된 전원의 양 및 그에 따른 발생된 열을 예측하기 위해, 실제 측정된 전원 사용량 또는 사전에-설치된 전원 사용량 데이터베이스, 또는 이 둘 사이의 가중 인자를 사용할 수 있다.
또 다른 실시예에서, 프로세싱 액티비티들의 데이터베이스는 새로운 테스크들의 시작을 모니터링함으로써 생성될 수 있다. 전자 디바이스의 커널 내의 프로세스가 모니터링 기능을 수행할 수 있다. 대안적으로, 모니터링 기능은 백그라운드 프로세스에 의해 수행될 수 있다. 다른 실시예에서, 커널이 새로운 프로세싱 테스크의 시작을 검출하는 경우, 커널은 메시지를 전송하거나 인터럽트를 발생시킬 수 있다. 새로운 프로세싱 테스크가 시작하는 경우, 열 관리 프로세스는 일정 시간 기간 동안 프로세스를 모니터링하고, 프로세스가 전원의 임계치 양 초과를 소비하는지 여부를 결정할 수 있다. 소비하지 않는다면, 프로세싱 액티비티를 데이터베이스에 저장하는 것은 가치가 없을 수 있다. 새로운 프로세스가 전원의 임계치 양 초과를 발생시킨다고 결정되면, 프로세싱 기계의 현재 상태가 저장될 수 있고, 새로운 프로세스의 시작은 프로세스 이력 데이터베이스에 기록될 수 있다. 새로운 프로세싱 테스크가 종료되는 경우, 그의 실행 동안 프로세싱 테스크에 의해 사용된 전원의 총량은 또한, 프로세싱 테스크의 총 실행 시간과 함께 프로세스 이력 데이터베이스에 저장될 수 있다. 일 실시예에서, 프로세싱 테스크에 의해 사용된 평균 전원은, 예를 들어, 25ms의 증분으로서 저장될 수 있다.
다른 실시예에서, 사용자 거동의 패턴들은 프로세싱 테스크 이력 데이터베이스로부터 결정될 수 있다. 어떤 주중의 시간에 사용자가 그들의 프로세싱 디바이스에 처음 액세스했는지를 결정하는 것, 및 이메일을 체크하는 것과 같이 사용자가 수행한 제1 프로세싱 테스크 및 제1 프로세스가 얼마나 길게 수행되었는지를 결정하는 것과 같이 사용자 패턴을 결정하기 위해 질의가 데이터베이스로 이슈될 수 있다. 패턴이 식별되면, 패턴은 습득된 패턴 기록으로서 프로세싱 테스크 이력 데이터베이스에 저장될 수 있다. 일 실시예에서, 저장된 기계 상태는 습득된 패턴 기록과 연관될 수 있다. 예를 들어, 사용자는, 고비용 셀룰러 대역폭을 절약하기 위해, Wi-Fi에 연결될 경우 화상 회의를 항상 수행할 수 있다. 유사하게, 사용자는 이더넷 연결과 같은 유선 연결을 통해 집에서 게임 플레이를 항상 수행할 수 있다.
또 다른 실시예에서, 사용자는, 사용자 이력 데이터베이스, 전원 사용량 데이터베이스, 또는 복수의 프로세싱 디바이스들에 걸친 기계 상태들 중 하나 이상을 동기화할 수 있다. 일 실시예에서, 복수의 프로세싱 디바이스들 모두는 동일한 사용자에게 등록될 수 있다. 동기화는 동기화 서비스를 사용하여 수행될 수 있다. 일부 실시예들에서, 전자 디바이스들의 타입 또는 사이즈가 상이하면, 전원 사용량 정보 중 적어도 일부가 저장되지 않는다. 예를 들어, 아이폰®은 아이맥®과는 실질적으로 상이한 전원 사용량 데이터를 가질 수 있으며, 따라서, 전원 사용량 데이터베이스들을 동기화하는 것은 타당하지 않을 수 있다. 그러나, 매일 오전 9시에 사용자의 이메일을 체크하는 것과 같은 습득된 패턴은 이메일에 액세스하기 위해 사용되는 프로세싱 디바이스의 타입과는 별개로 관련성있을 수 있다.
일부 실시예들은, 호출 프로그램 코드가 호출되는 다른 프로그램 코드와 하나 이상의 인터페이스들을 통해 상호작용하는 환경에서 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)들을 포함한다. 다양한 종류들의 파라미터들을 더 포함할 수 있는 다양한 기능 호들, 메시지들 또는 다른 타입들의 발동(invocation)들은 호출 프로그램과 호출되는 코드 사이의 API들을 통해 전달될 수 있다. 부가적으로, API는, API에서 정의되고, 호출된 프로그램 코드에서 구현되는 데이터 타입들 또는 클래스들을 사용하기 위한 능력을 호출 프로그램 코드에 제공할 수 있다.
적어도 소정의 실시예들은 호출 소프트웨어 컴포넌트가 호출된 소프트웨어 컴포넌트와 API를 통해 상호작용하는 환경을 포함한다. 이러한 환경에서 API를 통해 동작하기 위한 방법은 하나 이상의 기능 호들, 메시지들, 다른 타입들의 발동들 또는 파라미터들을 API를 통해 전달하는 단계를 포함한다.
다른 특성들 및 이점들은 첨부한 도면들 및 상세한 설명으로부터 명백할 것이다.
본 발명의 실시예들은 첨부한 도면의 도면들에서 제한이 아닌 예로서 도시되며, 첨부 도면에서 유사한 도면 부호들은 유사한 요소들을 지칭한다.
도 1은 미래의 프로세싱 테스크에 대한 기계 상태 준비를 수행할 수 있는 프로세싱 시스템의 시스템 컴포넌트들을 블록 형태로 도시한다.
도 2a는 미래의 프로세싱 테스크에 대한 프로세싱 디바이스의 상태를 준비하는 방법의 개요를 블록 형태로 도시한다.
도 2b는 미래의 프로세싱 테스크에 대한 프로세싱 디바이스의 상태를 준비하기 위한 방법의 흐름도를 도시한다.
도 3은 프로세싱 디바이스의 상태의 예시적인 속성들을 도시한다.
도 4는 전원 사용량 데이터베이스의 예시적인 기록들 및 속성들을 도시한다.
도 5는 프로세싱 액티비티 데이터베이스의 예시적인 기록들 및 속성들을 도시한다.
도 6은 일부 실시예들에 따른, 예측된 또는 스케줄링된 미래의 프로세싱 테스크를 결정하는 방법에 대한 흐름도를 도시한다.
도 7은, 미리 결정된 시간으로부터 미래의 프로세싱 테스크까지의 중간 예측된 또는 스케줄링된 프로세싱 테스크들을 결정하는 방법의 흐름도를 도시한다.
도 8은 일부 실시예들에 따른, 미래의 프로세싱 테스크를 위해 프로세싱 디바이스를 준비하는 방법의 흐름도를 도시한다.
도 9a는 일부 실시예들에 따른, 프로세싱 테스크들에 대한 전원 사용량의 초기 "시드" 데이터베이스를 생성하는 방법의 흐름도를 도시한다.
도 9b는 일부 실시예들에 따른, 특정 사용자 및 디바이스에 대한 프로세싱 테스크들에 대한 전원 사용량의 이력을 생성하는 방법의 흐름도를 도시한다.
도 10은 일부 실시예들에 따른, 사용자 프로세싱 테스크들의 이력을 생성하는 방법의 흐름도를 도시한다.
도 11은 사용자 프로세싱 테스크들의 이력으로부터 사용자 거동 패턴들을 결정하기 위한 방법의 흐름도를 도시한다.
도 12는 일부 실시예들에 따른, 복수의 프로세싱 디바이스들에 대한 전원 사용량 데이터, 기계 상태 데이터, 사용자 프로세싱 테스크 데이터 및 사용자 거동 패턴들을 동기화하기 위한 시스템을 블록 형태로 도시한다.
도 13은 복수의 프로세싱 디바이스들에 대한 기계 상태들, 사용자 프로세싱 테스크 이력, 및 사용자 거동 패턴들 중 하나 이상을 동기화하기 위한 방법의 흐름도를 도시한다.
도 14는 본 발명의 일부 실시예들에서 사용가능한 소프트웨어 스택의 예시적인 실시예를 도시한다.
도 15는 프로세싱 시스템의 일 실시예의 블록 다이어그램이다.
실시예들의 다음의 상세한 설명에서, 유사한 참조들이 유사한 요소들을 표시하고, 특정 실시예들이 실시될 수 있는 예시적인 방식들로써 도시되는 첨부한 도면들에 대한 참조가 이루어진다. 이 실시예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 실시할 수 있게 할 만큼 충분히 상세하게 설명되며, 다른 실시예들이 이용될 수 있고, 논리적, 기계적, 전기적, 기능적 및 다른 변화들이 본 개시내용의 범주를 벗어나지 않으면서 행해질 수 있다는 것이 이해될 것이다. 따라서, 다음의 상세한 설명은 제한의 의미로 취해지지 않을 것이며, 본 발명의 범주는 첨부된 청구항들에 의해서만 정의된다.
(현재의 시간과 같은) 제1 미리 결정된 시간과 미래의 프로세싱 테스크를 시작하기 위한 시간 사이에서 프로세싱 디바이스 상에서 구동하기 위해, 프로세싱 디바이스의 현재의 동작 상태, 및 스케줄링되거나 예측되는 프로세싱 테스크들의 전원 사용량 요건들을 고려하여, 전자 프로세싱 디바이스 상의 미래의 프로세싱 테스크에 대한 미래의 동작 상태를 준비하는 시스템들 및 방법들을 구현하기 위한 실시예들이 설명된다. 프로세싱 디바이스는, 제1 미리 결정된 시간으로 시작하는 시간 내지 미래의 프로세싱 테스크에 대한 시작 시간까지의 지속기간에 걸쳐 열을 감소시키기 위해 선제적인 단계들을 취할 수 있다.
도 1은, 미래의 프로세싱 테스크의 미래의 운영 체제를 위해 프로세싱 디바이스를 준비하기 위한 프로세스를 수행할 수 있는 프로세싱 디바이스(100)의 시스템 컴포넌트들을 블록 형태로 도시한다.
프로세싱 디바이스는 하드웨어(110), 운영 체제 커널(120), 사용자 프로세스들(130), 및 백그라운드 프로세스들(140)을 포함할 수 있다. 커널(120)은 통신 채널(들)(1)을 통해 하드웨어(110)와 통신할 수 있다. 커널(120)은, 통신 채널(들)(2)을 통해 사용자 프로세스들(130)과 통신하고, 통신 채널(들)(3)을 통해 백그라운드 프로세스들(140)과 통신할 수 있다. 통신 채널(들)(3)은, 커널(120) 내의 열 및 전원 측정 및 제어(121) 서브-시스템과 열 상태 관리자(150)의 컴포넌트들 사이의 통신(5 및 6)을 구현할 수 있다. 프로세스 관리(또는 "스케줄러")(122)는 통신 채널(4)을 통해 커널 프로세스들(123)과 통신할 수 있다. 통신 채널(들)(7)은, 통신 채널들(1 및 3)을 통해 저장소(118)와 테스크 식별 및 전원 요건 모듈(152) 사이에서 구현될 수 있다. 통신 채널들은, 메시징, 소켓들, 및 공유된 메모리와 같은 프로세스간(inter-process) 통신 방법들을 사용하여 그리고 I/O 버스 또는 I/O 버스에 커플링된 I/O 인터페이스 하드웨어와 같은 하드웨어 채널들을 통해 구현될 수 있다.
하드웨어(110)는 전원 공급원(111), 프로세서들(112), 오디오 컴포넌트들(113), 통신 컴포넌트들(114), 냉각 컴포넌트들(115), 디스플레이(116), 입력 디바이스(들)(117), 및 저장소(118)를 포함할 수 있다. 전원 공급원(111)은 하나 이상의 배터리들, 커패시터 어레이, 충전/벽 전원 서브-시스템, 또는 태양전지 패널들을 포함할 수 있다. 프로세서들(112)은 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 디지털 신호 프로세서(DSP), 수학 코-프로세서, 프로그래밍가능 게이트 어레이들, 또는 마이크로제어기들을 포함할 수 있다. 오디오(113) 컴포넌트들은 하나 이상의 인코더/디코더들(코덱들), 오디오 증폭기, 하나 이상의 아날로그-투-디지털 변환기들(ADC) 및 하나 이상의 디지털-투-아날로그 변환기들(DAC), 및 디지털 신호 프로세서를 포함할 수 있다. 통신 컴포넌트들(114)은 이더넷 트랜시버, Wi-Fi 트랜시버, 및 셀룰러 트랜시버, 하나 이상의 안테나들, 및 위성 트랜시버(GPS)를 포함할 수 있다. 냉각 장비는 하나 이상의 팬들, 핀형(finned) 열 교환기들, 액체-투-공기 열 교환기들, 또는 열-전기 냉각기들("펠티에(Peltier)")의 냉각기들을 포함할 수 있다. 디스플레이(116)는 음극선 관(CRT), 액정 디스플레이(LCD), 발광 다이오드(LED) 플라즈마 디스플레이, 터치 스크린, 또는 도트-매트릭스 그래픽 디스플레이를 포함할 수 있다. 입력 디바이스들(117)은 키보드, 마우스, 트랙볼, 터치 인터페이스 등을 포함할 수 있다. 저장소(118)는 하드 디스크, 플래시 메모리, 정적 메모리, 동적 메모리, CD/DVD ROM들, 또는 판독-전용 메모리 칩을 포함할 수 있다. 아래에서 더 상세히 설명되는 바와 같이, 저장소는 전원 사용량 데이터베이스(118A) 및 프로세싱 테스크 이력(118B)(또는 "액티비티") 데이터베이스를 포함할 수 있다. 수동 핀형 열 교환기들 이외에, 이 하드웨어(110) 컴포넌트들 각각은 전원을 소비하여 열을 발생시키고, 냉각 프로세스 동안 사용자가 들을 수 있는 잡음을 발생시킬 수 있다.
커널(120)은 열 및 전원 측정 및 디바이스 제어 모듈(121), 프로세스 관리자(122)(또는 "스케줄러"), 및 하나 이상의 커널 프로세스들(123)을 포함할 수 있다. 열 및 전원 측정 및 디바이스 제어 모듈(121)("제어 모듈")은 하드웨어 컴포넌트들(110) 중 하나 이상의 현재의 온도를 측정하고, 하나 이상의 포인트들에서 프로세서 디바이스(100) 내부의 공기의 내부 온도를 또한 측정할 수 있다. 제어 모듈(121)은 또한, 하드웨어(110)의 개별 컴포넌트들의 동작을 제어할 수 있다. 제어 모듈(121)과 하드웨어(110) 사이의 통신(1)은 입력/출력(I/O) 버스를 통한 것일 수 있다. 프로세스 관리자(122)는 사용자 프로세스들(130), 백그라운드 프로세스들(140), 및 커널 프로세스들(123)의 우선순위 및 실행을 제어하는 스케줄링 로직을 포함할 수 있다.
사용자 프로세스들(130)은, 캘린더 애플리케이션(131), 넷플릭스® 또는 유투브®와 같은 비디오 재생 애플리케이션들(132), 이메일 애플리케이션(133), 화상 회의 애플리케이션(134), 하나 이상의 비디오 게임들(135), 또는 애플® 페이지스 또는 마이크로소프트® 워드와 같은 워드 프로세싱 애플리케이션(136), 및 다른 애플리케이션들과 같은 애플리케이션들을 포함할 수 있다. 각각의 애플리케이션은 사용자 프로세스들(130)에서 프로세스로서 구동할 수 있다. 각각의 애플리케이션은 또한, 이메일 받음, 이메일 전송, 문서 맞춤법-체크, 영화 일시중지, 화상 회의 시작, 또는 캘린더 이벤트 이벤트 스케줄링과 같은 하나 이상의 실행 스레드들을 가질 수 있다. 사용자 프로세스(130)의 각각의 실행 스레드는 하나 이상의 하드웨어(110) 컴포넌트들을 이용할 수 있으며, 그 컴포넌트들 각각은 전원을 소비하여 열을 발생시킬 수 있다.
백그라운드 프로세스들(140)은, 애플 스포트라이트® 데이터베이스의 백그라운드 인덱싱과 같은 데이터베이스 인덱싱(141), 스케줄링된 또는 자동화된 백업 또는 동기화(142)와 같은 클라우드 서비스들, 열 상태 관리자(150), 프린팅(도시되지 않음), 및 다른 백그라운드 프로세스들을 포함할 수 있다. 대안적으로, 열 상태 관리자(150)는 사용자 프로세스(130) 또는 커널 프로세스(123)로서 구현될 수 있다.
열 상태 관리자(150)는, 열 상태 측정 모듈(151), 프로세싱 테스크 식별 및 전원 요건 모듈(152), 피드-포워드 열 예측 모델(210), 및 미래의 기계 상태 준비 로직(153)을 포함할 수 있다. 열 상태 측정 모듈(151)은 통신 채널(6)을 통해 커널(120) 내의 열 및 전원 측정 및 디바이스 제어 모듈(121)과 통신할 수 있다. 열 상태 측정 모듈(151)은, 하나 이상의 하드웨어 컴포넌트들(110)로부터 하나 이상의 온도 판독치들을 수신하고, 수신된 온도 판독치들을 프로세싱하여 프로세싱 디바이스(100)의 전체 열 기계 상태를 결정할 수 있다. 대안적으로, 열 상태 측정(151)은 정교하게 상세한 온도 제어 알고리즘들에 대한 하나 이상의 온도 판독치들의 순차적인 세트들의 버퍼(도시되지 않음)를 보유할 수 있다. 예를 들어, 게임 프로세스(135), 디스플레이(116) 상의 데이터의 디스플레이, 및 그래픽 프로세서(112) 및 오디오 컴포넌트들(113)의 온도 판독치들의 하나 이상의 스레드들의 우선순위로부터, 사용자가 그래픽-집약적인 비디오 게임을 플레이하고 있다는 것이 명확할 수 있다. 사용자가 한시간 내에 다가올 화상 회의(134)를 가지면, 미래의 기계 상태 준비 로직(153)은 천천히, 냉각 컴포넌트들(115)을 램프 업(ramp up)시키고, 프로세서(112)의 클록 레이트를 감소시키기를 시작하고, 오디오(113)의 베이스 요소들을 감소시키거나, 또는 다가올 화상 회의(134)의 전원 및 열 요건들에 대한 준비 시에 디스플레이 해상도 또는 밝기를 감소시킬 수 있다. 열 상태 관리자(150)의 부가적인 세부사항들이 아래에 설명된다.
도 2a는 미래의 프로세싱 테스크에 대한 프로세싱 디바이스(100)의 상태를 준비하는 방법(200)의 흐름의 개요를 블록 형태로 도시한다. 도 2b는 미래의 프로세싱 테스크를 시작하기 위한 초기 미래의 상태에 대한 프로세싱 디바이스(100)를 준비하는 방법(200)의 더 상세한 흐름도를 도시한다.
동작(205)에서, 프로세싱 디바이스(100)의 현재의 기계 상태가 결정된다. 아래의 도 3에 도시된 바와 같이, 현재의 기계 상태는 프로세싱 디바이스(100)의 단일 온도 측정(305)의 파라미터 2 만큼 간단할 수 있다. 부가적으로, 프로세싱 디바이스의 간단한 동작 상태는 시간의 특정된 증분 Δt에 걸친 전원 소비 메트릭(305)의 파라미터 1, 이를테면 100ms에 걸친 0.05W를 포함할 수 있다. 프로세싱 디바이스(100)의 기계 상태(300)의 추가적인 세부사항들은 도 3을 참조하여 아래에서 논의된다.
현재의 기계 상태(205) 온도 TC는 피드-포워드 열 예측 모델(210)에 대한 입력이다. 피드-포워드 예측 모델(210)에 대한 부가적인 입력들은, 제1 미리 결정된 시간(예를 들어, 현재의 시간)과 미래의 프로세싱 테스크를 시작하기 위한 시간 사이에서, 미래의 테스크에 대한 초기 프로세싱 디바이스 온도 Ti를 갖는 미래의 프로세싱 테스크(600) 및 일 리스트의 예측된 중간 프로세싱 테스크들(700)의 시작 시간, 및 그들의 연관된 전원 사용량들이다. 동작(700)은 아래의 도 7을 참조하여 더 상세히 설명된다. 피드-포워드 모델(210)의 출력은, 미래의 프로세싱 테스크가 시작할 시간에서의 프로세싱 디바이스(100)의 예측된 열 상태 TP(215)이다. 이러한 예측된 미래의 열 상태 TP는, 미래의 테스크가 시작되기 전에 열이 프로세싱 디바이스(100)로부터 제거될 필요가 있는지 여부를 결정하기 위해, 미래의 프로세싱 테스크가 시작할 시간에서의 프로세싱 디바이스(100)의 초기 미래의 상태 Ti(220)와 비교된다. 피드-포워드 예측 모델(210)은 시뮬레이팅된 저항-커패시턴스(RC) 네트워크를 사용하여 구현될 수 있다. RC 네트워크는 미분 수학식들, 매트랩(MatLab)® 런타임 모듈, 또는 다른 계산 모듈을 사용하여 시뮬레이팅될 수 있다.
동작(600)에서, 미래의 프로세싱 테스크가 식별 및 선택될 수 있다. 미래의 프로세싱 테스크를 시작하기 위한 시간이 결정될 수 있다. 프로세싱 디바이스(100)의 미래의 초기 상태 Ti는 또한, 미래의 프로세싱 테스크가 시작할 시간에 대해 결정될 수 있다. 예를 들어, 미래의 프로세싱 테스크는 1시간 길이의 화상 회의(134)일 수 있다. 사용자는, Wi-Fi 연결에 의해 지원되는 최고의 비디오 및 오디오 해상도 및 상당히 높은 오디오 볼륨으로 Wi-Fi 연결을 통해 화상 회의(134)를 보유할 수 있다. 이 인자들 각각은 화상 회의(134) 동안 소비되는 전원, 및 그에 따라 화상 회의(134) 동안 발생되는 열에 기여할 수 있다. 동작(600)은 아래의 도 6을 참조하여 더 상세히 설명된다.
동작(207)에서, 현재의 기계 상태 TC, 및 동작(700)으로부터 결정되는 예측된 프로세싱 테스크들의 리스트 및 연관된 전원 요건들이 피드-포워드 예측 모델(210)로 입력될 수 있다.
동작(215)에서, 입력된 현재의 기계 상태 TC, 및 미리 결정된 시간(예를 들어, 현재 시간)과 미래의 테스크의 시작 시간 사이의 중간 프로세싱 테스크들에 대해 동작(700)에서 결정되는 프로세싱 테스크들의 리스트 및 연관된 전원 소비값들에 기초하여, 미래의 예측된 열 상태 TP가 피드-포워드 예측 모델(210)로부터 출력될 수 있다.
동작(220)에서, 미래의 테스크가 시작하는 것으로 예측될 수 있는 시간에서의 프로세싱 디바이스(100)의 미래의 초기 상태 Ti는, 미래의 예측된 테스크, 예를 들어, 화상 회의(134) 호(Wi-Fi 연결, 최고의 비디오 및 오디오 해상도, 및 큰 소리의 비디오)에 대한 사용자의 선택에 의해 소비되는 것으로 추정되는 전원 및 발생되는 열로부터 결정된다. Ti는, 화상 회의 호(134) 동안의 사용자 경험이 열을 감소시키기 위해 떨어질 필요가 없도록 선택될 수 있다. 예를 들어, 프로세싱 디바이스(100)의 바람직한 초기 미래의 상태 Ti는, 냉각 팬들(115)이 1시간 길이의 화상 회의 호(134)의 중간에 최대 속도로 되지 않도록 선택될 수 있다.
동작(225)에서, 온도 차이 ΔT는, 피드-포워드 모델(210)로부터 획득된 미래의 예측된 열 상태 TP, 및 미래의 프로세싱 테스크가 시작하기 전의 프로세싱 디바이스(100)에 대한 미래의 초기 상태 Ti로부터 결정될 수 있다.
미래의 초기 상태 Ti를 달성하기 위해 열 제거가 요구된다는 것을 동작(225)에서 결정된 온도 차이 ΔT가 표시하면, 동작(800)에서, 프로세싱 디바이스(100)는 도 8을 참조하여 더 완전하게 설명되는 바와 같이, 미래의 프로세싱 테스크에 대해 준비될 수 있다.
도 3은 프로세싱 디바이스(100)의 기계 상태(300)의 예시적인 속성들을 도시한다. 프로세싱 디바이스(100)의 기계 상태, 또는 단지 "상태"는 일정 시점에서의 프로세싱 디바이스(100)의 상태의 스냅샷이다. 기계 상태 기록은 타임스탬프(도시되지 않음)를 가질 수 있다. 최소한, 스냅샷은 프로세싱 디바이스(100)의 현재의 온도를 표현하는 단일 온도 값을 포함할 수 있다. 단일 온도 값은 도 2를 참조하여 위에서 설명된 방법(200)에 대해 현재의 기계 상태 TC로서 사용될 수 있다.
기계 상태(300)는 프로세싱 디바이스(100)의 개별 컴포넌트들, 이를테면 CPU(310), GPU(310) 등에 대한 파라미터들을 더 포함할 수 있다. 각각의 컴포넌트는 프로세싱 디바이스(100)의 현재의 상태(300)를 표현하는 하나 이상의 파라미터들을 가질 수 있다.
기계 상태(300)는 CPU(310) 및 GPU(315) 각각에 대한 현재의 클록 레이트 및/또는 측정된 온도를 저장하는 것을 포함할 수 있다. 현재의 클록 레이트는 일정 시간 증분 동안 CPU(310) 및/또는 GPU(315)에 의해 소비되는 전원의 양을 추정하는데 사용될 수 있다. 전원 소비 값은 일정 시간 지속기간 동안 CPU(310) 및/또는 GPU(315)에 의해 소비되는 전원의 양을 획득하기 위해 그 시간 지속기간과 곱해질 수 있다.
기계 상태(300)는, 시간 단위, 즉 Δt 당 와트로 측정된 전원 소비 레이트, 및/또는 오디오 시스템(320), 네트워크(330), 셀 신호(335), 디스플레이(340), 또는 저장소(345)와 같은 하나 이상의 컴포넌트들에 대한 측정된 온도를 저장하는 것을 더 포함할 수 있다. 특정 컴포넌트에 기여가능한 전원 소비 값은 프로세싱 테스크의 지속기간과 곱해져서, 특정 컴포넌트에 대한 그 지속기간 동안의 전원 사용량을 결정할 수 있다. 기계 상태(300)는, Wi-Fi(325), 네트워크(330), 및 셀 신호(335)에 대한 파라미터 3(304)에 도시된 바와 같이, 네트워크(330), 셀 신호(335), 또는 Wi-Fi 신호(325)와 같은 일부 컴포넌트들에 대한 신호 품질 파라미터를 더 포함할 수 있다.
컴포넌트에 대한 신호 품질 파라미터를 포함하는 기계 상태(300)는, 사용자 프로세스(130)와 관련된 미래의 사용자 거동을 예측하기 위해 컴포넌트를 사용하는 사용자 프로세스(130)와 상관될 수 있다. 예를 들어, 셀 신호 강도가 낮을 수 있어서 프로세싱 디바이스(100)가 네트워크에 전혀 연결될 수 없는 동안(그에 따라, 네트워크에 대한 어떠한 신호 품질도 갖지 않음), 사용자는 통상적으로, 사용자의 집에서와 같이 강한 Wi-Fi 신호를 사용하여 화상 회의 호(134)를 보유할 수 있다. 이러한 상태 정보로부터, 사용자가 Wi-Fi를 사용하여 집에서, 스케줄링된 화상 회의 호(134)를 보유하고 임의의 셀 신호 또는 네트워크 연결도 요구하지 않는다는 것이 예측될 수 있다. 따라서, Wi-Fi 이외의 셀룰러 및 네트워크 서브시스템들은 전원을 절약하고 열을 감소시키기 위해 화상 회의 호(134) 동안 차단(shut off)될 수 있다. 유사하게, 사용자는 통상적으로, 네트워크에 연결된 경우에만 고성능 비디오 게임(135)을 플레이할 수 있으며, 따라서 Wi-Fi 서브시스템은 전원을 절약하고 열을 감소시키기 위해 턴 오프될 수 있다.
기계 상태(300)는, 배터리(350)가 충전중인지 여부, 사용자가 집(375)에 있는지 여부, 프로세싱 디바이스(100)가 현재 모션(375)중인지 여부, 또는 프로세싱 디바이스(100)가 대기 모드에 있는지 또는 구동 상태에 있는지와 같은 2진 상태 정보를 더 포함할 수 있다. 2진 상태 정보는 미래의 사용자 거동 및 전원 소비를 예측하기 위해 사용자 프로세스(130)와 상관될 수 있다. 예를 들어, 사용자가 집(370)에 있지 않고, 모션(375)중이고, 보행중이며, 배터리(350)가 충전중이지 않다는 것을 기계 상태(300)가 표시하는 때에, 사용자는 통상적으로, 오전 11시 30분에 레스토랑들에 대한 질의를 이슈할 수 있다. 사용자는 그녀가 점심을 위해 보행중이고 그에 따라 디바이스가 충전중이 아닌 경우, 레스토랑을 선택하는 것이 예측될 수 있다. 따라서, 질의 동안, 배터리 충전기에 의해 소비되는 전원으로 인한 어떠한 열도 발생되지 않을 것이 예측될 수 있다. 사용자가 네트워크 연결(예를 들어, 이더넷 케이블 및 포트)을 요구하지 않고, 그에 따라 이더넷 서브시스템이 열을 감소시키기 위해 턴 오프될 수 있다는 것이 추가로 예측될 수 있다. 그러나, 사용자가 검색 질의를 완료하기 위해 Wi-Fi 또는 셀룰러 통신을 사용할 수 있다는 것이 또한 예측될 수 있다. 따라서, 질의를 위한 프로세싱 테스크에 대한 전원 사용량을 예측할 경우, Wi-Fi 및 셀룰러 서브시스템들에 의해 소비되는 전원이 고려되어야 한다.
기계 상태(300)는, 배터리 레벨(355), 광 검출(360), 사운드 검출(360), 또는 공급 전압 레벨(385)과 같은 하나 이상의 컴포넌트들의 레벨에 대한 파라미터를 더 포함할 수 있다. 그러한 레벨들을 포함하는 기계 상태(300)는, 미래의 전원 사용량을 예측하기 위해 디스플레이 밝기(340), 오디오 볼륨(320), 또는 배터리 충전(350)과 같은 컴포넌트들에 의한 전원 사용량과 상관될 수 있다. 예를 들어, 광 검출(360)이 주광(daylight)과 같은 높은 레벨의 주변광을 검출하고, 사용자가 점심 시간에 모션(375) 중이면서 레스토랑들에 대해 질의하고 있다는 것을 사용자 프로세스(130)가 표시하면, 사용자가 밝은 주변광에서 디스플레이를 보게 허용하기 위해 디스플레이 전원 소비가 증가될 것이 예측될 수 있다. 유사하게, 사용자가 오디오(320)를 청취중이라는 것을 사용자 프로세스(130)가 표시하는 경우, 사운드 검출(마이크로폰)(365)이 거리 공사 또는 군중 잡음과 같은 높은 주변 잡음을 검출하면, 사용자가 높은 주변 잡음보다 크게 오디오를 듣게 허용하기 위해 오디오 전원 소비가 증가될 것이 예측될 수 있다. 다른 예에서, 사용자가 집(370)에 있고 배터리 충전 레벨(355)이 임계 퍼센티지 아래에 있다는 것을 기계 상태(300)가 검출하면, 사용자가 집에 있는 동안 배터리(350)를 충전할 것이 예측될 수 있다. 충전 레이트(350), 즉 파라미터 3이 플러그-인 벽 충전기에 대한 충전 레이트보다 작고, 사용자가 운전중이라는 것을 모션 검출(375)이 표시하면, 사용자가 자동차에서와 같이 더 낮은 암페어수의 휴대용 충전기를 사용하여 충전하고 있다는 것이 예측될 수 있다. 따라서, 자동차에서 배터리를 충전하는 것으로 인한 전원 사용량 및 열이 예측될 수 있다.
기계 상태(300)는 또한, 날씨 애플리케이션과 같은 애플리케이션으로부터 획득되거나, 또는 날씨 웹 페이지를 보는 인터넷 브라우저로부터 획득된 정보를 포함할 수 있다. 비, 바람, 및 온도 예보와 같은 날씨(390)의 현재 상태가 기계 상태 기록(300)에 포함될 수 있다.
도 4는 전원 사용량 데이터베이스의 예시적인 기록들(400) 및 속성들을 도시한다. 전원 사용량 데이터베이스는, 하나 이상의 하드웨어 컴포넌트들 및 하나 이상의 프로세싱 테스크들에 의한 측정된 또는 추정된 전원 사용량을 표현하는 기록들을 포함한다. 전원 사용량 기록들(400)은, 하나 이상의 하드웨어 컴포넌트들(100) 또는 프로세싱 테스크들에 의해 사용되는 전원의 양 및 그에 따라 하나 이상의 하드웨어 컴포넌트들(110) 및/또는 프로세싱 테스크들에 의해 발생되는 열의 양을 예측하는데 사용될 수 있다.
프로세싱 디바이스(100)는, 사용자가 처음으로 프로세싱 디바이스(100)에 전원을 공급하기 전에 프로세싱 디바이스(100) 상에서 이용가능한 전원 사용량 기록들(400)의 초기("시드") 데이터베이스를 포함할 수 있다. 사용자가 프로세싱 디바이스를 사용할 때, 프로세싱 디바이스(100)의 사용자의 실제 사용량을 표현하는 더 많은 전원 사용량 데이터베이스 기록들(400)이 생성된다. 열 상태 관리자(150) 내의 테스크 식별 및 전원 요건 로직(152)은, 프로세싱 디바이스(100)에 대해 포함된 사용자의 실제 사용량 대 전원 사용량 기록들(400)에 기초하여 전원 사용량 기록들(400)에 가중 인자를 적용할 수 있다. 일 실시예에서, 사용자가 프로세싱 디바이스(100)를 더 길게 사용할수록, 가중 인자는 프로세싱 디바이스(100)의 사용자의 사용량에 의해 생성된 전원 사용량 기록들(400)을 더 많이 선호한다. 일 실시예에서, 전원 사용량 기록들(400)의 초기 데이터베이스는, 예를 들어, 운영 체제 프로세스 또는 다른 업데이트 프로세스 동안 업데이트될 수 있다. 전원 사용량 기록들(400)의 둘 모두의 타입들의 생성은 아래의 도 9a 및 도 9b에서 더 완전하게 설명된다.
전원 사용량 데이터베이스(400)는, 광범위하게 다양한 프로세싱 테스크들에 대한 전원 사용량 및 특정 하드웨어 서브시스템들에 대한 전원 사용량을 예측하는데 사용될 수 있다. 각각의 전원 사용량 기록(410 내지 475)은, 예를 들어, 식별자(401), 프로세스 또는 디바이스 설명(402), 전원 소비 시간 증분 Δt(403), 시간 증분(404) 동안 소비된 전원의 양, 및 하나 이상의 파라미터들(405) 및 파라미터 값들(406)을 가질 수 있다. 하나 이상의 전원 사용량 기록들은, 프로세싱 디바이스(100) 내의 하나 이상의 사용자 프로세스들(130), 백그라운드 프로세스들(140), 및/또는 커널 프로세스들(123), 또는 하나 이상의 하드웨어 컴포넌트들(110)의 실행 시간 기간에 걸쳐 소비되는 전원의 양을 예측하는데 사용될 수 있다. 식별자(401)는 데이터베이스 기록에 대한 임의의 고유 식별자일 수 있다. 일 실시예에서, 전원 사용량 기록 식별자(401)는, 제로인 하이(high) 비트가, 전원 사용량 기록이 하드웨어 컴포넌트에 관한 것임을 의미하고, 1인 하이 비트가, 전원 사용량 기록이 사용자 프로세스들(130)과 같은 사용자 프로세스에 관한 것임을 의미하도록 인코딩 방식을 사용할 수 있다. 일 실시예에서, 전원 사용량 기록은, 하드웨어, 커널 프로세스, 백그라운드 프로세스, 사용자 프로세스, 또는 사용자 프로세스의 스레드와 같은 전원 사용량 기록 타입(도시되지 않음)을 표시하는 필드를 가질 수 있다. 전원 사용량 기록에 대한 시간 증분 Δt는 전원 사용량 기록에 대한 임의의 의미있는 시간 증분일 수 있다. 예를 들어, 냉각 팬들에 의해 사용된 전원은 매우 빠르게 변화하지 않을 수 있고, 그에 따라, 시간 증분, 예를 들어, 100ms가 냉각 팬들에 의해 소비되는 전원을 측정하는데 적합할 수 있지만, 클록 속도를 빠르게 변화시킬 수 있는 프로세서에 대해서는 적합하지 않을 수 있다. 일 실시예에서, 전원 사용량 기록(400)에 대해, 시간 증분은 시간 증분 동안 소비된 전원의 양과 관련하여 결정될 수 있어서, 전원 측정의 해상도는 시간 증분에 비해, 측정되는 전원 사용량을 나타낼 만큼 충분한 입도를 갖는다. 예를 들어, 전원 측정은 1밀리와트 해상도로 행해질 수 있으며, 그에 따라, 메인 프로세서에 대한 시간 증분은 1밀리와트 해상도를 이용하도록 0.01의 와트로의 전원 측정을 달성할 만큼 충분히 길게, 예를 들어, 25ms이도록 선택될 수 있다.
메인 프로세서(410) 또는 CPU는, CPU가 2.2 ㎓의 클록 레이트로 동작되는 경우 25ms의 시간 증분에 걸쳐 0.02와트를 소비할 수 있다. 냉각 팬들(415)은 가변 듀티 사이클로 구동될 수 있다. 예를 들어, 냉각 팬들(415)은, 최대 속도의 5%로 구동하는 경우 100ms에 걸쳐 0.08와트를 소비할 수 있다. 그래픽 프로세서(420) 또는 GPU는, 25ms 동안 2.0 ㎓로 동작되는 경우 0.01W를 소비할 수 있다. 배터리 충전기와 같은 전원 변환기 모듈(425)은 100ms의 동작에 걸쳐 0.05와트를 소비할 수 있다. 오디오 코덱(430)은 100ms에 걸쳐 0.01와트를 소비할 수 있다. 오디오 증폭기는, 20%와 같은 특정된 출력 레벨(파라미터(405))로 동작되는 경우 100ms에 걸쳐 0.05와트를 소비할 수 있다. 하드 디스크(440)는, 최대 회전 속도로 동작되는 경우 100ms에 걸쳐 0.06와트를 소비할 수 있다.
특정 프로세스들은 또한, 전원 사용량 기록들(400)을 가질 수 있다. 도 1의 커널 프로세스(123)에 대한 것과 같은 커널 프로세스(445) 전원 사용량 기록은 커널 프로세스가 25ms에 걸쳐 0.001와트를 소비한다는 것을 표시할 수 있다. 커널 프로세스는 0xFF와 같이 높은 또는 가장 높은 프로세서 스케줄링 우선순위를 가질 수 있다. 프로세스 관리자(122)에 대한 것과 같은 스케줄러 프로세스(450) 전원 사용량 기록은 스케줄 프로세스가 25ms에 걸쳐 0.001와트를 소비한다는 것을 표시할 수 있다. 스케줄러 프로세스는 0xFE와 같이 높은 프로세서 스케줄링 우선순위를 가질 수 있다. 시스템 아이들 프로세스(455) 전원 사용량 기록은 시스템 아이들 프로세스가 100ms에 걸쳐 0.002와트의 전원을 소비한다는 것을 표시할 수 있다. 시스템 아이들 프로세스는 통상적으로, 0x01과 같이 낮은 또는 가장 낮은 프로세서 스케줄링 우선순위를 갖는다.
이메일 애플리케이션(133), 화상 회의 애플리케이션(134), 또는 비디오 게임 애플리케이션(135)과 같은 사용자 프로세스(130)는 전원 사용량 기록(460, 465, 470, 또는 475)을 각각 가질 수 있다. 각각의 전원 사용량 기록은 사용자 프로세스에 대해, 전원 사용량에 대한 시간 증분(403), 전원 사용량의 양(404), 및 프로세싱 우선순위 파라미터(405) 및 프로세싱 우선순위 파라미터 값(406)을 가질 수 있다. 각각의 애플리케이션 프로세스(130)는 특정한 스레드에 대한 전원 사용량 데이터베이스 기록을 가질 수 있으며, 예를 들어, 이메일 애플리케이션(135)은 전원 사용량 기록(465)을 갖는 이메일 전송 스레드를 가질 수 있다. 오디오 애플리케이션에 대한 애플리케이션 프로세스는, 오디오 증폭기를 이용하는, 음악을 청취하기 위한 스레드, 및 CD-ROM 저장 디바이스를 이용하지만 오디오 증폭기를 이용하지는 않는, 하나 이상의 노래들을 CD-ROM에 굽기 위한 다른 스레드를 가질 수 있다. 일 실시예에서, 스레드, 예를 들어, 이메일 애플리케이션의 메일 전송 스레드(465)에 대한 전원 사용량 기록은 시간 증분 Δt 동안 스레드 실행에서 사용되는 하나 이상의 하드웨어 컴포넌트들에 의한 전원 사용량을 표현할 수 있다. 일 실시예에서, 프로세스, 예를 들어, 이메일 애플리케이션(460)에 대한 전원 사용량 기록은, 시간 증분 Δt 동안 프로세스의 하나 이상의 스레드들에 대해 사용된 평균 전원을 표현할 수 있고, 프로세스의 하나 이상의 스레드들의 실행에서 사용된 하나 이상의 하드웨어 컴포넌트들(110)에 의한 평균 전원 사용량을 더 포함할 수 있다. 다른 예에서, 화상 회의 애플리케이션(134)이 프로세싱 우선순위 0x50으로 구동되는 경우, 화상 회의 애플리케이션(134)은, 25ms의 시간 증분에 걸쳐 애플리케이션에 의해 사용된 전원(0.002와트)을 표현하는 전원 사용량 기록(470)을 가질 수 있다. 비디오 게임(135), 예를 들어, 모탈 컴뱃(Mortal Kombat)®은, 프로세싱 우선순위 0x60으로 구동되는 경우 25ms에 걸쳐 0.003와트를 소비할 수 있다. 애플리케이션 또는 애플리케이션의 스레드는 상이한 기록 파라미터들 중 하나 이상을 갖는 하나 이상의 전원 사용량 기록을 가질 수 있다. 예를 들어, 통상적으로 사용자가 화상 회의(134) 전에 비디오 게임(135)을 플레이하면, 화상 회의(134)에 대한 프로세싱 디바이스(100)의 미래의 상태를 준비하는 방법은, 화상 회의(134) 전에 전원 소비 및 열 발생을 감소시키기 위해 0x50으로부터 0x40으로 비디오 게임(135)의 프로세싱 우선순위를 감소시키는 단계를 포함할 수 있다. 따라서, 전원 사용량 기록은 비디오 게임에 대해 0x50의 프로세싱 우선순위로 저장될 수 있고, 다른 전원 사용량 기록은 비디오 게임에 대해 0x40의 프로세싱 우선순위로 저장될 수 있다.
도 5는 프로세싱 액티비티 데이터베이스의 예시적인 기록들(500) 및 속성들을 도시한다. 프로세싱 액티비티 데이터베이스를 생성하는 방법은 도 10을 참조하여 아래에서 설명된다. 프로세싱 액티비티 데이터베이스로부터 사용자 거동 패턴들을 결정하는 방법은 도 11을 참조하여 아래에서 설명된다.
프로세싱 액티비티 기록들(500)은 프로세싱 디바이스(100)와 상호작용할 시에 사용자의 액티비티의 이력을 포함한다. 프로세싱 액티비티는 이벤트들(예를 들어, 마우스 클릭, 스크린 탭(tap), 버튼 누름 등), 사용자 입력들로부터 발생되는 커맨드들(예를 들어, 파일 | 열기, 또는 커맨드-시프트-Q와 같은 키 시퀀스), 및 사용자 입력들에 응답하여 기동된 프로세스들 및 스레드들(총괄하여 그리고 개별적으로, "프로세싱 액티비티")을 포함할 수 있다. 프로세싱 액티비티 데이터베이스 기록(예를 들어, 500)은 특정 프로세싱 액티비티의 시작에 대한 타임스탬프(501), 액티비티의 지속기간(502), 액티비티에 대한 커맨드 또는 이벤트 명칭(503), 커맨드 또는 이벤트(503)에 응답하여 기동된 애플리케이션(504), 및/또는 커맨드 또는 이벤트(503)의 결과로서 기동된 스레드(505)를 포함할 수 있다. 프로세싱 액티비티 기록(500)은 액티비티의 지속기간(502) 동안 소비된 전원의 양(506)을 더 포함할 수 있다. 프로세싱 액티비티와 연관된 전원의 양(506)은 커널(120) 내의 열 및 전원 측정 및 디바이스 제어 모듈(121)에 의해 측정될 수 있다. 일 실시예에서, 프로세싱 액티비티와 연관된 전원의 양은 전원 사용량 기록(400)에 저장된 전원 사용량 레이트 곱하기 액티비티의 지속기간으로부터 계산될 수 있다. 일 실시예에서, 액티비티에 대한 측정된 및 계산된 전원 사용량 값들 둘 모두는 프로세싱 액티비티 기록(500)에 저장될 수 있다(도시되지 않음). 프로세싱 액티비티 기록(500)은 기계 상태 기록(300)에 대한 참조(507)를 더 포함할 수 있다. 기계 상태 기록들은 도 3을 참조하여 위에서 설명된다. 프로세싱 액티비티 기록(예를 들어, 530 또는 535)은, 프로세싱 디바이스(100)와 상호작용할 시에 사용자 거동의 패턴들을 결정하기 위해, 기계 상태 기록 참조(507)에 의해 참조되는 기계 상태 기록(300)과 상관될 수 있다. 일 실시예에서, 기계 상태 기록(300)은 프로세싱 액티비티 기록(500)과 관련하여 생성 및 저장된다. 일 실시예에서, 프로세싱 액티비티 기록(500)은 기존의 저장된 기계 상태 기록(300)을 참조할 수 있다.
일 예에서, 프로세싱 액티비티 기록(530)은 클릭 이벤트(503)에 응답하여 넷플릭스®를 기동하는 프로세싱 액티비티를 표현할 수 있다. 이러한 예에서, 넷플릭스® 애플리케이션(504)은 스레드(505)를 이용하여 기동된다. 필드(507)에 의해 참조된 기계 상태 기록(300) 또는 프로세싱 액티비티 기록(530)은, 실행을 위해 넷플릭스® 애플리케이션의 실행가능 이미지들을 검색하기 위한 저장 디바이스(118)에 의한 전원 사용량의 표시를 포함할 수 있다. 프로세싱 액티비티 기록(530)의 필드(507)에 의해 참조된 기계 상태 기록(300)은, 사용자가 디스플레이(340) 해상도(파라미터 3)를 가장 높은 최대 해상도로 설정하고, 오디오 시스템(320)을 가장 높은 오디오 품질(파라미터 3)로 설정한다는 것을 추가로 표시할 수 있으며, 그 설정들은 감소된 오디오 또는 비디오 품질보다 더 많은 전원을 소비할 수 있다. 기계 상태 기록(300)은, 사용자가 Wi-Fi(325) 또는 셀룰러 신호(335)가 아닌 네트워크 연결(330)을 이용하여 넷플릭스®에 연결한다는 것을 추가로 표시할 수 있다. 예시적인 프로세싱 액티비티 기록들(510 내지 570)은 커맨드 또는 이벤트(503)에 응답하여 검출된 프로세싱 액티비티들을 표현한다. 프로세싱 액티비티 기록들(500)은 또한, 일정 시간 기간에 걸쳐 프로세싱 액티비티에서 패턴들을 습득함으로써 생성될 수 있다.
프로세싱 액티비티의 습득된 패턴들에 대한 프로세싱 액티비티 기록들(500)은, 이벤트 또는 커맨드, 또는 프로세스 또는 스레드에 응답하여 저장된 프로세싱 액티비티 기록들(500)과 동일한 또는 그보다 적은 속성들로 저장될 수 있다. 도 11을 참조하여 아래에 더 완전히 설명되는 바와 같이, 프로세싱 액티비티 패턴들은 프로세싱 액티비티 기록들(500)을 분석함으로써 습득될 수 있다. 프로세싱 액티비티의 습득된 패턴을 표현하는 프로세싱 액티비티 기록(575)은, 기계 상태 기록 0x00014785에서 표시된 바와 같은 기계 상태 특징들을 이용하여 이러한 사용자가 주중 오전 9:00시마다 1시간 길이의 화상 회의를 보유한다는 것일 수 있다. 다른 예에서, 프로세싱 액티비티의 습득된 거동의 프로세싱 액티비티 기록(580)은, 금요일 저녁 오후 8:00시에, 이러한 사용자가 대략 12와트의 전원을 사용하여 1시간 동안 비디오 게임을 플레이한다는 것일 수 있다. 유사하게, 습득된 액티비티의 예시적인 프로세싱 액티비티 기록(585)은, 주중 오전 6:00시에 이러한 사용자가 0.10와트의 전원을 사용하여 이메일에 5분을 쓴다는 것일 수 있다.
도 6은 예측된 또는 스케줄링된 미래의 프로세싱 테스크, 프로세싱 테스크에 대한 시작 시간, 및 프로세싱 테스크를 시작하기 위한 초기 상태를 결정하는 방법(600)에 대한 흐름도를 도시한다.
동작(605)에서, 스케줄링된 미래의 테스크는 스케줄링된 캘린더 액티비티들의 데이터베이스를 검색함으로써 결정될 수 있다. 캘린더 애플리케이션, 예를 들어, 도 1에 도시된 바와 같은 사용자 프로세스(131)는 1회성 스케줄링된 테스크 및 반복적인 스케줄링된 테스크들의 리스트를 포함할 수 있다. 예를 들어, 캘린더 애플리케이션(131) 데이터는, 사용자가 월요일 아침 오전 9:00시마다 반복적인 화상 회의(134)를 갖는다는 것을 표시할 수 있다.
동작(610)에서, 방법(600)은, 미래의 프로세싱 테스크의 스케줄링, 예를 들어, 사용자의 상관(supervisor)으로부터 상관의 팀의 모든 멤버들로의 이메일에서 이번의 월요일 아침 오전 9:00시의 화상 전화 회의(134)에 관한 정보에 대해, 도 1에 도시된 바와 같은 이메일 애플리케이션(133)의 이메일 데이터를 선택적으로 검색할 수 있다. 동작(610)은 또한, 미래의 스케줄링된 프로세싱 테스크의 표기를 위해 연락처 애플리케이션의 연락처 데이터 파일을 검색하는 것을 포함할 수 있다. 예를 들어, 연락처 기록은, 사용자가 이번의 금요일 저녁 오후 9:00시에 그녀의 집에서 지인(contact)과 함께 넷플릭스®에서 비디오를 시청하는 것을 스케줄링했다는 것을 표시할 수 있다.
동작(615)에서, 방법(600)은 규칙적으로 발생하는 임의의 프로세싱 테스크들을 결정하기 위해 프로세싱 액티비티 데이터베이스(500)에 질의할 수 있다. 예를 들어, 오늘이 월요일이면, 질의는, 하나 이상의 과거의 월요일들의 오전 8:00시와 오전 10:00시 사이에서 시작된 프로세싱 액티비티 이력 기록들(500)을 선택할 수 있다. 다른 예에서, 질의는, 사용자가 집에 있지 않았다는 것을 프로세싱 액티비티들에 대한 기계 상태가 표시하는 경우 수행되었던 주말 낮의 오전 10:00시와 오전 11:00시 사이의 프로세싱 액티비티들과 같은 선택된 프로세싱 액티비티들에 관련된 기계 상태를 포함할 수 있다.
동작(620)에서, 자신의 전원 사용량이 미리 결정된 임계치보다 작은 프로세싱 테스크들은 미래의 예측된 테스크를 결정하기 전에 질의 결과들로부터 필터링 아웃될 수 있다.
다수의 미래의 이벤트들이 질의로부터 리턴되는 이벤트에서, 동작(625)에서, 방법(600)은 기계 상태를 준비할 예측된 미래의 테스크를 식별하기 위해 다수의 미래의 프로세싱 테스크들 중에서 선택적으로 선택할 수 있다. 일 실시예에서, 동작(625)은 질의 결과들의 다수의 미래의 프로세싱 테스크들 중에서 가장 높은 전원 소비를 갖는 미래의 예측된 테스크를 선택할 수 있다. 일 실시예에서, 동작(625)은 질의 결과들의 다수의 미래의 프로세싱 테스크들 중에서 가장 긴 지속기간인 미래의 프로세싱 테스크를 선택할 수 있다. 일 실시예에서, 동작(625)은 질의 결과들의 다수의 미래의 프로세싱 테스크들 중에서 가장 높은 우선순위를 갖는 미래의 프로세싱 테스크를 선택할 수 있다. 또 다른 실시예에서, 동작(625)은, 사용자 거동의 반복 패턴을 표시하는 대부분의 프로세싱 액티비티 기록들(500)을 갖고, 그에 따라 사용자가 이러한 예측된 미래의 테스크를 수행할 가능성이 높은 미래의 프로세싱 테스크를 선택할 수 있다. 또 다른 실시예에서, 동작(625)은, 현재의 기계 상태와 가장 유사한 기계 상태를 갖는 미래의 예측된 프로세싱 테스크를 다수의 미래의 예측된 프로세싱 테스크들 중에서 선택할 수 있다. 예를 들어, 현재의 기계 상태는, 사용자가 집에 있고(기계 상태 속성(370)) 프로세싱 디바이스(100)를 충전하고 있으며(기계 상태 속성(350), 파라미터 3, 높은 충전 레이트), 프로세싱 디바이스(100)가 네트워크에 커플링된다는 것(기계 상태 속성(330)을 표시할 수 있다. 이러한 기계 상태는, 사용자가 집에 있고, 네트워크에 연결되며, 프로세싱 디바이스(100)를 충전하고 있는 동안, 사용자가 대략 질의 시간 윈도우 내에서 이전에 수행했던 화상 회의(134)의 미래의 프로세싱 테스크에 가장 가깝게 상관될 수 있다.
동작(630)에서, 미래의 기계 상태가 준비될 미래의 예측된 프로세싱 테스크를 선택할 적어도 하나의 미래의 프로세싱 테스크가 존재하는지 여부가 결정된다. 존재한다면, 동작(635)에서, 하나 이상의 미래의 예측된 프로세싱 테스크들을 수행하도록 미래의 기계 상태를 준비하기 위해 하나 이상의 프로세싱 테스크들이 선택된다. 그렇지 않으면, 방법(600)은 종료된다.
동작(600)에서, 미래의 기계 상태가 프로세싱 디바이스(100)에 대해 준비될 적어도 하나의 미래의 프로세싱 테스크가 선택되었다면("선택된 미래의 프로세싱 테스크"), 제1 시간, 예를 들어, 현재의 시간과 선택된 미래의 프로세싱 테스크("중간 프로세싱 테스크들")에 대한 시작 시간 사이에서 프로세싱 테스크들에 의해 소비되는 에너지 및 발생되는 열의 양은 선택된 미래의 프로세싱 테스크의 시작 시간에서 미래의 기계 상태에 영향을 줄 수 있다. 따라서, 선택된 미래의 프로세싱 테스크들에 대해 기계 상태를 준비하기 위해, 중간 테스크들에 의해 발생되는 전원 소비 및 열이 결정될 필요가 있을 수 있다.
도 7은 제1 시간, 예를 들어, 현재의 시간으로부터 미래의 예측된 또는 스케줄링된 프로세싱 테스크("미래의 프로세싱 테스크")에 대한 시작 시간까지의 예측된 또는 스케줄링된 프로세싱 테스크들("중간 프로세싱 테스크들")을 결정하는 방법(700)의 흐름도를 도시한다. 일 실시예에서, 제1 시간은, 미래의 프로세싱 테스크의 시작 시간 이전의 미리 결정된 시간의 양인 시간일 수 있다. 중간 테스크들에 의해 소비되는 전원으로부터 발생되는 열은 미래의 프로세싱 테스크에 대해 프로세싱 디바이스(100)의 기계 상태를 준비하기 위해 완화될 필요가 있을 수 있다. 예를 들어, 사용자가 화상 회의(미래의 프로세싱 테스크) 전에 비디오 게임(중간 프로세싱 테스크)을 플레이하고, 비디오 게임이 1시간 동안 상당한 CPU 및 GPU 성능 및 높은 오디오 볼륨을 요구하면, 프로세싱 디바이스(100)는, 화상 회의 전에 방산(dissipate)될 필요가 있는 상당한 열 축적(build-up)을 가질 수 있다. 중간 프로세싱 테스크들의 리스트를 구축하고 각각의 프로세싱 테스크와 연관된 전원 요건들 및 열 발생을 결정함으로써, 프로세싱 디바이스(100)는, 선택된 미래의 프로세싱 테스크의 시작 전에 열 축적을 완화시키도록 빠른 액션을 취할 수 있다.
동작(705)에서, 하나 이상의 캘린더, 이메일, 또는 연락처 애플리케이션들을 사용하여 각각 스케줄링될 수 있는 프로세싱 테스크들에 대해 하나 이상의 캘린더, 이메일, 또는 연락처 애플리케이션 데이터 파일들이 검색될 수 있다. 예를 들어, 사용자의 업무 이메일은, 월요일 오전 9:00시에 시작하고 1시간 동안 지속하는 것으로 스케줄링되는 스케줄링된 화상 회의에 대한 캘린더 항목을 포함할 수 있다. 사용자의 개인용 캘린더는, 고해상도 그래픽, 인터넷 연결 및 사운드 시스템을 사용하여 멀티-사용자 비디오 게임을 플레이하기 위한 금요일 저녁 오후 8:00시에 대한 스케줄링된 테스크를 포함할 수 있다. 연락처 항목은, 사용자가 넷플릭스® 또는 훌루®와 같은 그녀의 프로세싱 디바이스(100) 상의 애플리케이션을 사용하여 토요일 오후 8:00시에 친구와 함께 영화를 시청하기 위한 스케줄링된 약속이 있다는 텍스트 노트를 포함할 수 있다. 스케줄링된 프로세싱 테스크들은 제1 시간과 선택된 미래의 프로세싱 테스크에 대한 미래의 시작 시간 사이의 중간 프로세싱 테스크들의 리스트에 추가될 수 있다. 일 실시예에서, 제1 시간은 현재 시간일 수 있다. 일 실시예에서, 제1 시간은, 선택된 미래의 프로세싱 테스크의 시작 시간 이전의 미리 결정된 시간의 양일 수 있다. 다른 실시예에서, 제1 시간은, 선택된 미래의 프로세싱 테스크의 시작 시간 이전의 특정된 시간일 수 있다.
동작(710)에서, 프로세싱 디바이스(100)는 시간 윈도우 동안 이력적으로 수행되었던 프로세싱 테스크들에 대한 사용자 프로세싱 액티비티들(예를 들어, 사용자 프로세스(130))의 이력을 질의할 수 있다. 일 실시예에서, 질의는, 제1 시간 및 선택된 미래의 프로세싱 테스크에 대한 시작 시간을 포함하는 특정된 시간 범위로 한정될 수 있다. 일 실시예에서, 제1 시간은 현재 시간일 수 있다. 대안적으로, 제1 시간은, 선택된 미래의 프로세싱 테스크에 대한 시작 시간 이전의 미리 결정된 시간의 양일 수 있다. 일 실시예에서, 제1 시간 및 선택된 미래의 프로세싱 테스크의 시작 시간을 포함하는 시간 범위 내에서 프로세싱 테스크가 2회 발생했다면, 프로세싱 테스크는 중간 프로세싱 테스크들의 리스트로의 포함을 위해 질의 결과들로부터 선택될 수 있다. 제1 시간 및 선택된 미래의 테스크에 대한 시작 시간을 포함하는 시간 범위 내에서 프로세싱 테스크가 동일한 요일에 2회 발생했다면, 테스크는 중간 프로세싱 테스크들의 리스트로의 포함을 위해 선택될 수 있다. 일 실시예에서, 질의는 위에서 설명된 도 5의 기록들(575 내지 590)과 같은 습득된 패턴 기록들을 포함할 수 있다. 일 실시예에서, 질의는 현재의 날짜에 선행하는 하나 이상의 날짜들에 대한 특정된 시간 범위를 포함할 수 있다. 일 실시예에서, 하나 이상의 날짜들은 하나 이상의 특정 요일들로 한정될 수 있다. 일 실시예에서, 하나 이상의 날짜들은 주중들로 한정되거나 또는 주말들로 한정될 수 있다. 일 실시예에서, 하나 이상의 날짜들은 휴일들을 포함하거나 또는 배제할 수 있다.
동작(715)에서, 프로세싱 디바이스(100)는 특정된 시간 윈도우에서 이력적으로 수행되었던 프로세싱 테스크들에 대한 시스템 프로세싱 액티비티들(예를 들어, 백그라운드 프로세스들(140)의 이력 또는 커널 프로세스들(123))의 이력을 질의할 수 있다. 시간 및/또는 날짜 한정들이 동작들(705 및 710)에서와 같이 질의에 적용될 수 있다.
동작(720)에서, 프로세싱 디바이스(100)는 현재 스케줄링된 프로세싱 테스크들, 예를 들어, 스케줄러(122)와 같은 프로세스 스케줄링 큐에서 프로세스들을 질의할 수 있다. 시간 및/또는 날짜 한정들이 동작(710)에서와 같이 질의에 적용될 수 있다.
동작(725)에서, 동작들(705, 710, 715, 및 720) 내에서 식별된 중간 프로세싱 테스크들의 리스트가 제1 시간 및 미래의 프로세싱 테스크의 시작 시간을 포함하는 시간 범위 동안 생성될 수 있다.
동작(730)에서, 중간 테스크들의 리스트는 선택된 미래의 프로세싱 테스크를 선택적으로 포함할 수 있다.
동작(735)에서, 중간 프로세싱 테스크들의 리스트 내의 각각의 프로세싱 테스크에 대해, 프로세싱 테스크를 수행하기 위한 전원 요건이 결정될 수 있다. 프로세싱 테스크에 대한 전원 사용량은, 프로세싱 테스크를 실행할 시에 사용되는 하나 이상의 자원들(예를 들어, CPU, GPU, 메모리, 저장소, 네트워크, Wi-Fi, 오디오 등)에 의해 소비되는 전원을 합산함으로써 결정될 수 있다. 하드웨어 컴포넌트들(110)에 대한 전원 사용량 데이터는 도 4를 참조하여 전원 사용량 기록들(400)에 대해 위에서 설명된다. 일 실시예에서, 프로세싱 테스크에 대한 전원 사용량은, 예를 들어, 도 4의 이메일 애플리케이션 전원 사용량 기록(460)에서 도시된 바와 같이, 프로세싱 테스크에 의해 사용된 전원의 증분으로부터 결정될 수 있고, 증분은 프로세싱 테스크의 지속기간과 곱해질 수 있다. 다른 실시예에서, 프로세싱 테스크에 대한 전원 사용량은 도 5를 참조하여 위에서 설명된 바와 같이 프로세싱 액티비티 기록들(500)로부터 결정될 수 있다.
동작(740)에서, 중간 테스크들의 리스트는, 미리 결정된 전원 사용량보다 작은 전원 사용량의 양을 갖는 프로세싱 테스크들을 배제하도록 선택적으로 필터링될 수 있다. 최소한(de minimus)의 전원 사용량을 갖는 프로세싱 테스크들을 배제하는 것은, 선택된 미래의 프로세싱 테스크에 대한 시작 시간 전에, 발생된 열의 양 및 프로세싱 디바이스(100)로부터 방산하기 위한 열의 양을 결정하는데 필요한 프로세싱을 간소화시킬 수 있다.
중간 프로세싱 테스크들의 리스트 및 연관된 전원 소비 값들은 프로세싱 디바이스(100)의 현재의 기계 상태 TC와 함께 피드-포워드 열 예측 모델(210)로 입력될 수 있다. 피드-포워드 예측 모델(210)은 선택된 미래의 프로세싱 테스크의 시작에 대한 시간에서 예측된 열 상태 TP를 출력할 수 있다. 미래의 선택된 테스크는, 선택된 미래의 프로세싱 테스크를 시작하기 위해 바람직한 상태인 연관된 초기 열 상태 Ti를 갖는다. 예를 들어, 선택된 미래의 프로세싱 테스크가 1시간 길이의 화상 회의이면, 화상 회의의 시작 시의 프로세싱 디바이스(100)에 대한 바람직한 초기 상태 Ti
냉각 팬들이 화상 회의 동안 최대 속도로 되지 않도록 하는 열 상태일 수 있다. TP가 Ti 보다 크면, 준비 동작들은, 예를 들어, 화상 회의가 시작하는 시간까지 열 상태 Ti를 달성하도록 수행될 필요가 있을 수 있다. 준비 동작들은 열 발생의 감소 및 발생된 열의 완화를 포함할 수 있다.
도 8은 일부 실시예들에 따른, 선택된 미래의 프로세싱 테스크를 위해 프로세싱 디바이스(100)를 준비하는 방법(800)의 흐름도를 도시한다. 방법(800)은 열 상태 관리자(150)와 같이 백그라운드 프로세스(140)로 구현될 수 있다. 일 실시예에서, 열 상태 관리자(150)는 커널 프로세스(123)로서 또는 열 및 전원 측정 및 디바이스 제어(121) 내에서 구현될 수 있다. 다른 실시예에서, 열 상태 관리자(150)는 사용자 프로세스(130)로서 구현될 수 있다.
동작(805)에서, 선택된 미래의 프로세싱 테스크를 시작하기 위한 시간에서의 예측된 열 상태 TP가 미래의 프로세싱 테스크를 시작하기 위한 초기 열 상태 Ti 보다 작은지 여부가 결정된다. TP는 위의 도 7의 방법(700)에서 도시된 바와 같이, 중간 테스크들의 리스트 및 연관된 전원 소비에 기초한다. TP가 Ti 보다 작으면, 어떠한 준비 동작들도 선택된 미래의 프로세싱 테스크의 시작 전에 필요하지 않을 것이며, 방법(800)은 종료된다.
동작(805)에서, 선택된 미래의 프로세싱 테스크를 시작하기 위한 시간에서의 예측된 열 상태 TP가 선택된 미래의 프로세싱 테스크를 시작하기 위한 초기 열 상태 Ti 보다 크다고 결정되면, 동작(810)에서, 냉각이 단독으로 미래의 프로세싱 테스크의 시작까지 TP를 Ti 아래로 감소시킬 것인지 여부가 결정된다. 이것은, 미래의 초기 열 상태 Ti를 달성하기 위해 프로세싱 디바이스(100)로부터 제거될 필요가 있는 열의 양을 결정하고, 냉각 장비(115)(팬들, 냉각 핀들, 열-전기 냉각기, 액체 냉각 등)의 냉각 레이트가 선택된 미래의 프로세싱 테스크의 시작 전에 이용가능한 시간의 양 내에서 결정된 열의 양을 제거할 만큼 충분한지 여부를 결정함으로써 달성될 수 있다.
냉각이 단독으로 선택된 미래의 테스크의 시작 전에 열 상태 Ti를 달성할 것이라면, 동작(815)에서, 열 및 전원 측정 및 디바이스 제어 모듈(121)은, 선택된 미래의 프로세싱 테스크의 시작 전에 결정된 열의 양을 제거하도록 냉각 하드웨어(115)를 설정할 수 있고, 방법(800)은 종료된다. 일 실시예에서, 냉각 하드웨어(115)는 미래의 프로세싱 테스크의 시작까지 일정한 냉각 레이트로 설정된다. 다른 실시예에서, 냉각 프로파일이 냉각 하드웨어(115)에 대한 냉각 레이트를 설정하기 위해 사용된다. 냉각 프로파일은 미리 결정된 임계 레이트로의 냉각 레이트의 램프 업, 후속하여, 미래의 프로세싱 테스크에 대한 시작 시간에서 사용될 냉각 레이트로의 냉각 레이트의 램프 다운을 포함할 수 있다. 냉각 프로파일은 미리 결정된 냉각 레이트로의 램프 업, 후속하여, 일정한 냉각 레이트의 기간, 후속하여, 미래의 프로세싱 테스크에 대한 시작 시간에서 사용될 냉각 레이트로의 램프 다운을 더 포함할 수 있다.
동작(810)에서, 냉각 하드웨어(115)가 단독으로는 선택된 미래의 프로세싱 테스크의 시작까지 열 상태 Ti를 달성하지 못할 것이라고 결정되면, 하나 이상의 열 완화 기법들이 이용될 수 있다. 동작(820)에서, 열 완화 기법들은, 선택된 미래의 프로세싱 테스크가 완료된 이후까지 하나 이상의 백그라운드 테스크들(140)을 리스케줄링하는 것을 포함할 수 있다. 리스케줄링은, 스케줄러가 백그라운드 프로세싱 테스크들(140)에 의해 발생된 열을 감소시킬 것을 열 상태 관리자(150)가 요청하는 것 및 어떤 백그라운드 프로세싱 테스크(들)가 리스케줄링될지를 스케줄러(122)가 결정하는 것에 의해 달성될 수 있다. 일 실시예에서, 열 상태 관리자(150)는 커널 프로세스(123)일 수 있으며, 열의 발생을 완화시키기 위해 어떤 프로세스(들)가 리스케줄링되어야 하는지를 결정하도록 커널(120) 및 스케줄러(122)와 통신할 수 있다. 부가적으로, 일 실시예에서, 열 상태 관리자(150)는, 백그라운드 프로세싱 테스크들(140)의 리스케줄링과 함께 열을 완화시킬 냉각 하드웨어(115)에 대한 레벨을 설정하도록 열 및 전원 측정 및 디바이스 제어 모듈(121)에게 명령할 수 있다.
동작(825)에서, 동작(815 및 820)에서의 백그라운드 테스크들을 리스케줄링하는 것 및 선택적으로는 냉각 하드웨어(115)에 대한 냉각 레이트를 설정하는 것이 예측된 미래의 상태 TP를, 미래의 프로세싱 테스크를 시작하기 위한 미래의 초기 상태 Ti 아래로 감소시킬 것인지 여부가 결정될 수 있다. 감소시킬 것이라면, 방법(800)은 종료되고, 그렇지 않으면, 방법(800)은 동작(830)에서 계속된다.
동작(830)에서, 하나 이상의 열 완화 기법들이 TP를 Ti 아래로 감소시키기 위해 이용될 수 있다. 일 실시예에서, 백그라운드 테스크(들)(140)를 리스케줄링하는 것 및 냉각 장비(115)를 이용하여 열을 감소시키는 것에 부가하여, 프로세싱 디바이스(100)는 다음의 열 완화 기법들 중 하나 이상을 이용할 수 있다: 하나 이상의 프로세싱 테스크들에 대한 프로세서 클록 속도를 감소시키는 것, 프로세싱 디바이스(100)로의 공급 전압을 감소시키는 것, 비디오 스트림 해상도를 감소시키는 것, 디스플레이 밝기를 감소시키는 것, 통신 데이터 레이트를 감소시키는 것, 오디오 볼륨을 감소시키는 것, 오디오 서브시스템에서 베이스 응답을 감소시키는 것, 또는 이들의 임의의 조합. 일 실시예에서, 하나 이상의 열 완화 기법들은, 사용자가 열 완화 동작들 동안 일반적으로 일관된 동작 방식 및 일관된 성능 레벨을 인지하도록 매끄럽고 연속적인 방식으로 적용된다. 일 실시예에서, 열 완화 기법들 중 하나 이상은 사용자 구성가능할 수 있다. 예를 들어, 사용자는, 스케줄러(122)가 우선순위를 감소시키거나, 리스케줄링하거나, 또는 프로세서 클록 레이트 프로세서를 감소시킬 수 있는 애플리케이션들 또는 스레드들의 순서를 구성할 수 있다. 예를 들어, 사용자는, 네트워크 대역폭 품질이 열화된다는 것을 검출하는 것에 응답하여, 감소된 비디오 해상도를 사용하도록 화상 회의 애플리케이션을 구성할 수 있다.
도 9a는, 프로세싱 테스크들에 대한 전원 사용량(400) 기록들의 초기 "시드" 데이터베이스를 생성하는 방법(900)의 흐름도를 도시한다. 프로세싱 디바이스(100)는 프로세싱 테스크들에 대한 전원 사용량 기록들(400)의 초기 데이터베이스를 포함하고, 사용자가 프로세싱 디바이스(100)를 사용할 때 생성되는 부가적인 전원 사용량 정보의 데이터베이스(400)를 더 포함할 수 있다. 일 실시예에서, 부가적인 전원 사용량 정보가 프로세싱 디바이스(100)의 사용량에 의해 생성되므로, 가중 인자는 프로세싱 디바이스(100)의 사용자의 사용량에 의해 생성된 전원 사용량 정보에 더 많은 가중치를 부여할 수 있다.
동작(905)에서, 프로세싱 디바이스(100)는, 시간 증분 Δt 동안 프로세싱 테스크들의 베이스라인 세트를 표현하는 초기 전원 사용량 레벨 W0을 측정 및 저장할 수 있다. 전원 사용량은 열 및 전원 측정 및 디바이스 제어 모듈(121)에 의해 측정될 수 있다. 프로세싱 테스크들의 베이스라인 세트는, 프로세싱 디바이스(100)를 동작가능하게 하는데 필수적인 그 커널 프로세스들(123)만을 포함할 수 있다. 레이트 W0/Δt는 프로세싱 테스크들의 베이스라인 세트에 대한 전원 소비 레이트를 표현하며, 프로세싱 테스크들의 베이스라인 세트를 구동하는데 필수적인 하드웨어 컴포넌트들(110)을 더 포함할 수 있다.
동작(910)에서, 카운터 i는 1로 초기화된다.
동작(915)에서, 다음의 프로세스 Pi가 기동된다.
동작(920)에서, 시간 증분 Δt 동안의 W0 초과의 증분 전원 사용량 Wi가 측정된다. 프로세스 식별자 PIDi 및 선택적으로는 프로세스 설명이 생성되고, Wi 및 Δt 와 함께 전원 사용량 데이터베이스 기록(400)에 저장될 수 있다.
동작(925)에서, 기동할 임의의 더 많은 프로세스들이 존재하는지 여부가 결정된다. 존재하지 않는다면, 방법(900)은 종료된다. 그렇지 않으면, 프로세스(900)는 동작(930)에서 계속된다.
동작(930)에서, 카운터 i가 증분되고, 방법은 동작(915)에서 재개된다.
도 9b는 프로세싱 디바이스(100)의 사용 동안의 프로세싱 테스크들에 대한 전원 사용량 기록들(400)의 이력을 생성하는 방법(901)의 흐름도를 도시한다. 대조적으로, 도 9a는, 특정 사용자가 프로세싱 디바이스(100)를 수용 및 사용하기 전에 전원 사용량 기록들(400)의 초기 "시드" 데이터베이스를 구축하는 것을 설명한다.
위에서 도 9a를 참조하여 설명된 바와 같이, 동작(905)은 시간 증분 Δt 동안 프로세싱 테스크들의 베이스라인 세트에 대한 전원 사용량 W0을 측정 및 저장한다. 프로세스들의 베이스라인 세트는, 프로세싱 디바이스(100)의 전원 공급 동안 기동되는 초기 프로세스들일 수 있다. 도 9a의 프로세싱 테스크들의 베이스라인 세트가 본 명세서의 도 9b의 프로세싱 테스크들의 베이스라인 세트와는 상이할 수 있음을 주목한다. 예를 들어, 프로세싱 테스크들의 베이스라인 세트에 대한 공장 또는 초기 "시드" 전원 사용량은, 프로세싱 디바이스(100) 상에서 사용되고 있는 현재 버전의 운영 체제보다 더 이전 버전의 운영 체제에 대한 것일 수 있다. 따라서, 시간에 걸쳐, 프로세싱 디바이스(100) 상에서 프로세싱 테스크들에 대한 전원 사용량을 결정하는 것은, 도 9a에서 습득된 공장-생성 전원 사용량 값들보다 더 많이, 도 9b에 따른 실제 습득된 전원 값들 Wi를 가중하는 것을 수반할 수 있다.
동작(907)에서, W0에 대한 프로세싱 테스크들의 베이스라인 세트가 도 9a의 방법(900)에서 습득된 베이스라인 프로세스들의 공장 세트와 상이한지 여부가 결정된다. 상이하다면, 동작(908)에서, 도 9b의 동작(905)에서 측정된 프로세싱 테스크들의 베이스라인 세트에 대한 전원 사용량의 중요도의 가중치는 도 9a의 동작(905)에서의 전원 사용량 기록들의 초기 "시드" 데이터베이스 내의 프로세싱 테스크들의 베이스라인 세트에 대한 W0에 비해 증가된다. 방법(901)은 동작(910)에서 계속된다.
동작(910)에서, 카운터 i는 1로 초기화될 수 있다. 일 실시예에서, 상이한 초기화 값이 사용된다.
동작(915)에서, 다음의 프로세스 Pi가 기동될 수 있다.
동작(920)에서, 시간 증분 Δt 동안의 W0 초과의 증분 전원 사용량 Wi가 측정될 수 있다. 전원 사용량은 열 및 전원 측정 및 디바이스 제어 모듈(121)에 의해 측정될 수 있다. 프로세스 식별자 PIDi 및 선택적으로는 프로세스 설명이 생성되고, Wi 및 Δt 와 함께 전원 사용량 데이터베이스 기록(400)에 저장될 수 있다.
동작(922)에서, 동일한 PIDi를 갖는 프로세싱 테스크에 대해 Wi가 도 9a의 방법(900)에서 생성된 초기 "시드" 데이터베이스 내의 공장 Wi와 상이한지 여부가 결정될 수 있다. 상이하다면, 동작(923)에서, 이러한 PIDi에 대한 Wi의 가중치는, 프로세싱 디바이스(100)의 사용량에 의해 습득되는 이러한 Wi가 도 9a의 전원 사용량 기록들(400)의 초기 "시드" 데이터베이스에 비해 선호되도록 증가될 수 있다.
동작(925)에서, 기동할 더 많은 프로세스들이 존재하는지 여부가 결정될 수 있다. 존재하지 않는다면, 방법(901)은 종료된다. 기동할 더 많은 프로세스들이 존재하면, 동작(930)에서, 카운터 i는 증분되고 방법(901)은 동작(915)에서 계속된다.
도 10은 프로세싱 디바이스(100)와의 사용자 상호작용에 기초하여 사용자 프로세싱 테스크들의 이력을 생성하는 방법(1000)의 흐름도를 도시한다. 위의 도 9a 및 도 9b에서 설명된 전원 사용량 데이터베이스(400)와 유사하게, 사용자 프로세싱 테스크들(500)의 이력은 사용자 액티비티들의 초기 "시드" 데이터베이스 및 사용자 액티비티들의 습득된 세트를 포함할 수 있다. 사용자 프로세싱 이력이 프로세싱 디바이스(100)의 사용량을 통해 생성되므로, 가중 인자는 프로세싱 테스크들의 초기 "시드" 데이터베이스에 비해, 습득된 프로세싱 테스크들을 선호할 수 있다. 사용자 프로세싱 이력 데이터베이스가 프로세싱 디바이스(100)의 특정 사용자의 패턴들을 습득하려고 시도하므로, 초기 "시드" 데이터베이스는 상당히 빈약(sparse)할 수 있으며, 습득된 사용자 액티비티들에 유리한 가중 인자는 습득된 전원 사용량 기록들에 대한 것보다 더 높을 수 있다. 전원 사용량은 공장 설정 및 프로세싱 디바이스(100)의 사용량을 통해 습득된 것 둘 모두에 대한 주어진 프로세싱 테스크에 대해 일반적으로 유사해야 한다. 반면에, 거동의 사용자 거동 패턴들은 각각의 상이한 사용자에 매우 특정할 수 있다.
사용자 프로세싱 이력(액티비티)에 대한 초기 시드 데이터베이스는, 하나 이상의 디바이스 타입들 또는 사용자들의 타입들에 대한 사용자 거동 패턴들을 표시하는 크라우드 소스 데이터로부터 생성될 수 있다. 예를 들어, 대부분의 사용자들은, 아침에 일어났을 때에는 오전 6:00시에 그리고 정오에 그리고 사용자가 집에 복귀할 때에는 오후 6:00시에 다시 그들의 이메일을 검토할 수 있다. 제조사의 엔지니어는 크라우드 소스 데이터에 기초하여 또는 마케팅 정보로부터 사용자 프로세싱 테스크들(500)의 초기 시드 데이터베이스를 생성할 수 있다. 사용자 프로세싱 테스크들의 초기 시드 데이터베이스는 특정 지리적 위치로부터의 사용자에 대해 특정적일 수 있다. 일 실시예에서, 프로세싱 테스크들의 초기 시드 데이터베이스는, 사용자가 프로세싱 디바이스(100)의 전원을 켜거나 또는 프로세싱 디바이스(100)를 지리적 영역 내의 제조사의 서비스에 등록하는 최초의 시간에 제조사의 웹사이트로부터 다운로딩될 수 있다. 예를 들어, 초기 "시드" 사용자 프로세싱 이력 데이터베이스(500)가 실리콘 벨리 거주자에게 적합할 수 있지만, 상이한 초기 "시드" 사용자 프로세싱 이력 데이터베이스(500)가 중서부 농부에게 적합할 수 있다. 일 실시예에서, 사용자는 프로세싱 디바이스 상의 애플리케이션을 사용하여 개인 프로파일 또는 사용자 타입 및/또는 특정 지리적 영역을 선택할 수 있다. 선택에 응답하여, 적합한 초기 시드 사용자 프로세싱 이력 데이터베이스(500)가 프로세싱 디바이스(100)에 다운로딩될 수 있다.
동작(1005)에서, 열 상태 관리자(150)는 전원 사용량 및 열 발생에 영향을 주는 액티비티의 통지를 수신할 수 있다. 통지는 스케줄러(122)로부터, 커널(120)로부터, 또는 열 및 전원 관리 및 디바이스 제어(121)로부터 수신될 수 있다. 액티비티는 사용자 애플리케이션(130)의 기동, 애플리케이션의 스레드, 백그라운드 프로세싱 테스크(140)의 기동, 또는 커널 테스크(123)의 프로세싱을 포함할 수 있다.
동작(1010)에서, 열 상태 관리자(150)는 전원 사용량 데이터베이스 기록들(400)에서 액티비티와 연관된 전원 사용량 및 열 발생을 검색할 수 있다. 일 실시예에서, 테스크 식별 및 전원 요건 모듈(152)은 테스크와 연관된 전원 및 열 발생을 검색할 수 있다.
매우 작은 양의 전원을 사용하는 액티비티들에 대한 전원 사용량을 추적하는 것은 바람직하지 않을 수 있다. 예를 들어, 커서 포지셔닝 액티비티는 작은 양의 전원만을 요구할 수 있는 반면, 렌더링 동작은 상당한 양의 전원을 소비하고 그래픽 프로세서 유닛(GPU)으로부터 열을 발생시킬 수 있다. 따라서, 동작(1015)에서, 액티비티가 임계량 초과로 전원 사용량 또는 발생된 열에 영향을 주는지 여부가 결정된다. 액티비티에서 사용된 전원 또는 발생된 열의 양이 임계량보다 작으면, 방법(1000)은 동작(1005)에서 재개되고, 그렇지 않으면, 방법은 동작(1020)에서 재개된다.
동작(1020)에서, 현재의 기계 상태가 결정될 수 있고 저장될 수 있다. 기계 상태 기록은 위의 도 3을 참조하여 설명된다. 일 실시예에서, 현재의 기계 상태는, 예를 들어, 커널(120)에 의해 규칙적으로 업데이트된다. 그러한 경우에서, 현재의 기계 상태를 "결정"하는 것은, 방법(1000)과 독립적으로 업데이트되게 유지되는 현재의 기계 상태의 스냅샷을 판독하는 것을 포함한다.
동작(1025)에서, 액티비티가 새로운 프로세스 또는 스레드를 기동하는지 여부가 결정될 수 있다. 기동한다면, 동작(1035)에서, 새로운 사용자 액티비티 기록(500)이 생성 및 저장될 수 있다. 사용자 액티비티 기록들(500)은 도 5를 참조하여 위에서 설명된다. 이어서, 방법(1000)은 동작(1005)에서 재개된다.
동작(1025)에서, 액티비티가 새로운 프로세스 또는 스레드의 기동이 아니라고 결정되면, 액티비티가 새로운 프로세스 또는 스레드를 기동했다고 동작(1025)에서 결정하는 것에 응답하여, 전원은, 동작(1035)에서 이전에 생성 및 저장되었던 초기 액티비티 기록에 비해, 경과된 시간에 걸쳐 이러한 기존의 프로세스 또는 스레드에 의해 소비될 가능성이 있다.
동작(1030)에서, 프로세스 또는 스레드에 대한 전원 사용량이 결정될 수 있다. 또한, 프로세스 또는 스레드가 실행되었던 시간이 결정될 수 있다. 이어서, 방법(1000)은 동작(1035)에서 재개되며, 여기서, 사용자 액티비티 기록(500)은 프로세스 또는 스레드에 대해 생성되고, 프로세스 또는 스레드에 대한 전원 사용량 및 실행 시간과 함께 저장될 수 있다. 일 실시예에서, 사용자 액티비티 기록(500)은 액티비티 기록(500)의 필드(507)에서 참조되는 기계 상태 기록(300)과 연관되어 저장될 수 있다. 예를 들어, 사용자가 애플 TV® 애플리케이션을 사용하여 비디오를 시청하고 있었던 프로세스가 존재할 수 있다. Wi-Fi 또는 셀룰러 데이터를 사용하지 않으면서 그리고 비디오 및 오디오 해상도가 최고의 품질인 동안, 사용자가 네트워크 연결을 통해 집에서 비디오를 시청했던 기계 상태(300)가 존재할 수 있다. 기계 상태 정보(300)는, 사용자 액티비티 기록(500)과 연관되는 경우, 사용자 액티비티 거동의 패턴들을 습득하는데 사용될 수 있다.
도 11은 사용자 프로세싱 테스크들의 이력으로부터 사용자 거동 패턴들을 결정하기 위한 방법(1100)의 흐름도를 도시한다. 사용자 거동의 패턴들은, 사용자가 수행할 미래의 프로세싱 테스크를 예측하고, 예측된 미래의 프로세싱 테스크의 시작 전에 사용자에 대해 프로세싱 디바이스(100)의 기계 상태를 준비할 시에 도움이 된다.
동작(1105)에서, 사용자 거동에서 패턴들을 결정하기 위해 질의가 사용자 액티비티 데이터베이스(500) 상에서 개시될 수 있다. 질의는, 시간 범위, 요일, 임계 전원의 양 초과로 사용하는 특정 프로세스, 또는 사용자 거동에서 패턴들을 식별하기 위해 검색을 좁히기 위한 다른 기준들에 의해 좁혀질 수 있다.
동작(1110)에서, 액티비티가 위의 도 10의 방법(1000)에서 새로운 프로세스 또는 스레드를 생성했던 경우 생성되었던 초기 액티비티 기록을 갖는 액티비티가 식별된다. 액티비티는 매칭 종료 기록을 가질 수 있으며, 프로세스 또는 스레드에 대한 지속기간 및 프로세스 또는 스레드의 지속기간에 걸친 전원 사용량을 그 기록에 저장한다.
동작(1115)은 매칭 시작 및 종료 기록들을 갖는 프로세스들 또는 스레드들에 대한 질의 결과들이 분석될 수 있다. 분석은, 질의 결과들을 한정하기 위해 매칭 시작/종료 기록들에 대한 2차 질의를 포함할 수 있다. 2차 질의는, 특정 애플리케이션에 의해, 특정 요일에 의해, 특정 시각에 의해, 주중에 의해, 휴일에 의해, 주말에 의해, 특정 기계 상태 또는 기계 상태 정보의 서브세트에 의해, 또는 다른 패턴 기준들에 의해 질의 결과들을 한정할 수 있다.
동작(1120)에서, 패턴이 식별되었는지 여부가 결정된다. 패턴은, 예를 들어, 이러한 사용자가 주중의 대략 오전 6:00시마다 이메일을 체크하거나 또는 이러한 사용자가 금요일 대략 오후 8:00시에 넷플릭스® 영화들을 시청하는 것일 수 있다. 일 실시예에서, 패턴은 또한, 특정 기계 상태를 포함할 수 있다. 예를 들어, 패턴은, 이러한 사용자가 단지 주중에 집에서 높은 충전 레이트의 충전기(벽 충전기)를 사용하고, 주중 하루 종일 낮은 충전 레이트(예를 들어, USB 충전기)를 사용한다는 것을 표시할 수 있다. 기계 상태는 또한, 이러한 사용자가 저녁에는 집에서 네트워크 연결, 예를 들어, 이더넷을 사용하여 고해상도 비디오로 비디오 게임들을 항상 플레이한다는 것을 포함할 수 있다. 이 기계 상태 특징들은 미래의 프로세싱 액티비티에 대한 기계 상태를 예측하는 것을 도울 수 있으며, 열 완화 프로세스들을 결정하는데 부가적으로 사용될 수 있다. 예를 들어, 사용자가 네트워크 연결을 이용하여 집에서 비디오 게임들을 플레이하는 동안, Wi-Fi 및 셀룰러 데이터 서브시스템들은, 사용자가 비디오 게임들을 플레이하는 동안 전원을 절약하고 열 발생을 감소시키기 위해 턴 오프될 수 있다.
동작(1125)에서, 하나 이상의 습득된 프로세스 패턴 기록들이 생성되고 사용자 액티비티 기록들(500)에 저장된다. 예시적인 패턴 기록들은 위의 도 5를 참조한 기록들(575, 580, 585, 및 590)을 포함한다. 일 실시예에서, 기계 상태 기록(300)은 습득된 프로세스 패턴 기록과 연관되어 저장될 수 있다. 일 실시예에서, 습득된 프로세스 패턴에 대한 기계 상태 기록은 특정 기계 상태 기록 수 범위를 갖고, 이를테면 고차 비트 세트를 가질 수 있다. 대안적으로, 습득된 프로세스 패턴에 대한 기계 상태 기록(300)은, 습득된 프로세스 패턴과 연관되는 것으로 기계 상태 기록(300)을 식별하는 필드(도시되지 않음)를 가질 수 있다.
도 12는 복수의 프로세싱 디바이스들(100)에 대한 전원 사용량 정보, 기계 상태 정보, 사용자 프로세싱 테스크 이력 및 사용자 거동 패턴들(총괄하여, 기계 상태 준비 데이터)을 동기화하기 위한 시스템(1200)을 블록 형태로 도시한다.
사용자는 다수의 프로세싱 디바이스들(100)(예를 들어, 랩톱(101), 태블릿(102), 및 스마트폰(103))을 소유할 수 있다. 일 실시예에서, 각각의 프로세싱 디바이스(100)는 동기화 서비스(1200)에 등록될 수 있다. 사용자는, 기계 상태 준비 데이터를 동기화하기 위해 사용될 수 있는 프로세싱 디바이스들(100)의 그들의 사용량에 대한 패턴들을 가질 수 있다. 부가적으로, 동기화 시스템(1200)은, 제1 프로세싱 디바이스(101)로부터 습득된 또는 획득된 정보가 주어지면, 선택된 미래의 테스크에 대해 제2 프로세싱 디바이스(102)를 준비하는데 사용될 수 있다.
일 실시예에서, 다수의 디바이스들에 걸쳐 기계 상태 준비 데이터를 동기화하는 것은, 기계 상태 정보(300), 전원 사용량 정보(400), 및 프로세싱 액티비티 기록들(500)을 동기화하는 것을 포함할 수 있다. 공유된 기계 상태 정보는, 제1 프로세싱 디바이스가 제1 프로세싱 디바이스의 현재 상태에 대해 제2 프로세싱 디바이스에게 통지하는 것을 포함할 수 있다. 일 예에서, 제1 프로세싱 디바이스는, 컴캐스트(Comcast)® 네트워크 서비스가 오후 6:00시에 불능(failed)이라는 것을 검출할 수 있다. 부가적으로 또는 대안적으로, 제1 프로세싱 디바이스는 인터넷 경보 또는 이메일 메시지로부터, 컴캐스트® 네트워크가 오후 6:00시 현재 다운이라는 것을 습득할 수 있다. 제1 프로세싱 디바이스 상의 기계 상태 기록(300)은, 컴캐스트®가 오후 6:00 현재 다운이라는 것을 제2 디바이스가 습득할 수 있도록 사용자의 제2 프로세싱 디바이스와 동기화될 수 있다. 다른 예에서, 제1 프로세싱 디바이스는 사용자의 아이폰®일 수 있고, 제2 프로세싱 디바이스는 사용자의 아이패드®일 수 있다. 아이폰®의 현재의 기계 상태는, 사용자가 집에 있지 않고(도 3의 기계 상태 기록(300)의 필드(370) 파라미터 1) 아이폰®이 현재 모션(필드(375) 파라미터2)중, 즉 운전중이라는 것일 수 있다. 하나 이상의 GPS 판독치는 시각 및 요일과 함께, 사용자가 집으로 운전중이라는 것을 표시할 수 있다. 아이패드®는, 사용자가 집으로 복귀한 경우 그녀가 훌루®를 사용하여 아이패드® 상에서 뉴스를 시청하고 있다는 사용자 거동 패턴을 습득할 수 있다. 사용자의 아이폰®과 아이패드® 사이에서 기계 상태들(300)을 동기화한 이후, 아이패드®는 사용자가 집으로 가는 중이라는 것을 습득할 수 있다. 아이패드®는 미래의 프로세싱 테스크: 사용자가 집에 도착한 경우 사용자가 그녀의 아이패드® 상의 훌루® 상에서 뉴스를 시청한다는 것을 위해 아이패드®에 대한 기계 상태를 준비하고 있을 수 있다. 아이패드®의 기계 상태의 준비는 본 명세서에 설명된 도 2a 및 도 2b에 따를 수 있다. 부가적으로, 기계 상태들을 동기화함으로써, 사용자 및 그녀의 아이폰®이 집에 도착한 경우, 아이패드®는 아이폰®으로부터, 사용자가 이제 집에 있다는 것을 습득할 수 있고, 아이패드®는 그녀의 선호 뉴스 채널 상에서 훌루®를 기동할 수 있다.
동기화 시스템(1200)은 메타데이터 서버(1210) 및 하나 이상의 콘텐츠 서버들(1230)을 포함할 수 있다. 일 실시예에서, 콘텐츠 서버(1230)는, 기계 상태들(300), 전원 사용량 정보(400), 및 사용자 프로세싱 정보(500)와 같은, 메타데이터, 데이터베이스 기록들, 및 인덱스들을 포함하는 사용자 데이터 세트들의 하나 이상의 타입들을 저장할 수 있다. 일 실시예에서, 콘텐츠 서버(1230)는 광범위하게 다양하고 상이한 사용자 데이터 세트 타입들을 저장할 수 있는 클라우드 저장 서비스일 수 있다. 일 실시예에서, 동기화 시스템(1200)은 동기화 관리 시스템(1220)을 더 포함할 수 있다. 초기에, 클라이언트 디바이스(100)는 클라이언트 디바이스(100)의 파일 시스템으로부터의 하나 이상의 사용자 데이터 세트들을 동기화 시스템(1200) 상에 저장할 수 있다. 클라이언트 디바이스(100) 상의 기계 상태 데이터베이스(300)와 같은 사용자 데이터 세트가 동기화 시스템(1200) 상에 저장될 수 있다. 일 실시예에서, 사용자 데이터 세트는 청크된 데이터 부분들로 청크되고, 하나 이상의 콘텐츠 서버(1230) 상에 저장될 수 있다. 사용자 데이터 세트를 설명하는 메타데이터 및 사용자 데이터 세트의 청크된 부분들에 관한 메타데이터는 동기화 메타데이터 데이터베이스의 메타데이터 서버(1230) 상에 저장될 수 있다. 일 실시예에서, 메타데이터 서버(1210) 및 콘텐츠 서버(1230)는 동기화 시스템 관리자(1220)를 사용하여 관리될 수 있다.
메타데이터 서버(1210)를 관리하는 것은, 데이터 세트를 생생했던 상이한 버전들의 소프트웨어로부터 발생되는 충돌들을 포함하여 사용자의 다양한 버전들의 데이터 세트들 사이의 충돌들을 해결하기 위한 소프트웨어를 메타데이터 서버(1210)에 제공하는 것을 포함할 수 있다. 예를 들어, 사용자의 하나의 클라이언트 디바이스(예를 들어, 101)가 버전 2.0인 워드 프로세서 소프트웨어를 갖고, 사용자가 그 클라이언트 디바이스 및 소프트웨어를 사용하여 워드 프로세싱 문서를 생성하고, 문서가 나중에 동기화 시스템(1200)을 사용하여, 버전 1.0의 워드 프로세서 소프트웨어를 갖는 사용자의 상이한 클라이언트 디바이스(예를 들어, 102)로 다운로딩되면, 버전 1.0 소프트웨어는 소프트웨어 버전 2.0에 의해 생성되었던 문서를 열고 그리고/또는 편집할 수 없을 수 있다. 동기화 시스템 관리자(1260)는, 워드 프로세싱 소프트웨어의 버전 1.0 및 버전 2.0 둘 모두를 이용한 사용을 위해 문서를 적응시키기 위한 소프트웨어 업데이트들 및 패치들을 메타데이터 서버(1210)에 제공할 수 있다. 유사하게, 제1 클라이언트 디바이스(101) 상의 기계 상태(300)는, 제2 클라이언트 디바이스(102)에 의해 지원되지 않는 특성들을 이용하거나, 또는 제2 클라이언트 디바이스(102) 상에서 상이한 규격들을 가질 수 있다. 예를 들어, 클라이언트 디바이스(101)는 GPS 신호에 기초하여 "위치" 특성을 이용하는 기계를 가질 수 있다. 클라이언트 디바이스(102)는 단지, 셀 타워 근사, 영역 코드, 또는 IP 어드레스에 의해 위치를 검출할 수 있다. 동기화 시스템 관리자(1220)는, 클라이언트 디바이스(102)와 예측기를 동기화하기 전에 클라이언트 디바이스(101)의 기계 상태에서 "위치" 특성을 수정할 수 있다. 대안적으로, 동기화 시스템 관리자(1220)는, 예측기들을 동기화하기 전에 타겟 클라이언트 디바이스에 의해 지원되지 않는 특성을 예측기로부터 제거할 수 있다. 일 실시예에서, 수정된 예측기는 동기화 전에 예측기에 대해 행해진 변화에 대해 플래그(flag)되거나 그렇지 않으면 마킹될 수 있다.
동기화 시스템(1200)은 네트워크(140)를 통해 클라이언트 디바이스(들)(100)로 인터페이싱될 수 있다. 네트워크(140)는 인터넷, 무선 네트워크, 셀룰러 네트워크, 로컬 영역 네트워크, 또는 이들의 임의의 조합일 수 있다. 동기화 시스템 관리자(1220), 메타데이터 서버(1210), 및 콘텐츠 서버(1230)가 네트워크(140)를 통해 연결된 별개의 요소들로서 도시되었지만, 이는 그럴 필요는 없다. 동기화 시스템 관리자 시스템(1220), 메타데이터 서버(1210), 또는 콘텐츠 서버(1230) 중 하나 이상은 동일한 호스트 컴퓨터 시스템 상에 또는 수 개의 물리적으로 분산된 컴퓨터 시스템들 상에 구현될 수 있다. 부가적으로, 위에서 설명된 바와 같이, 콘텐츠 서버(1230)는 하나 이상의 콘텐츠 서버들(1230)을 포함할 수 있으며, 이들 중 임의의 서버들 또는 모두는 사용자 데이터 세트들의 하나 이상의 타입들을 저장할 수 있다 동기화 시스템 관리자(1220), 메타데이터 서버(1210), 및 콘텐츠 서버(들)(1230) 중 하나 이상 사이의 통신은, 소켓들, 메시지들, 공유된 메모리, 애플리케이션 프로그램 인터페이스(API), 프로세스-간 통신, 또는 다른 프로세싱 통신 서비스에 의해 이루어질 수 있다. 애플리케이션 프로그래밍 인터페이스들은 도 14를 참조하여 아래에서 상세히 설명된다.
클라이언트 디바이스(100)는 데스크톱 컴퓨터 시스템, 클라이언트 디바이스(101)와 같은 랩톱 컴퓨터 시스템, 클라이언트 디바이스(102)와 같은 태블릿 컴퓨터 시스템, 클라이언트 디바이스(103)와 같은 셀룰러 전화기, 셀룰러-가능 PDA들을 포함하는 개인 휴대 정보 단말기(PDA), 셋톱 박스, 엔터테인먼트 시스템, 게이밍 디바이스, 또는 다른 소비자 전자 디바이스를 포함할 수 있다. 클라이언트 디바이스(100)의 컴포넌트들은 도 15를 참조하여 아래에서 상세히 설명된다.
사용자 데이터 세트는, 기계 상태 데이터베이스, 사용자 프로세싱 액티비티 데이터베이스, 및 전원 사용량 데이터베이스 중 하나 이상을 포함할 수 있다. 사용자 데이터 세트는, 로컬 검색 및 피드백 이력 데이터베이스, 로컬 데이터베이스, 데이터 파일, 폴더 또는 디렉토리, 워드 프로세싱 문서, 스프레드시트, 프리젠테이션, 이메일들, 텍스트들, 사용자 연락처들, 북마크들, 음악, 영화들, 및 다른 구매 콘텐츠와 같은 자산들, 디바이스 설정들, 및 애플리케이션 설정들을 더 포함할 수 있다. 이들 각각은 사용자 데이터 세트일 수 있다. 클라이언트 디바이스(100)의 사용자는 개별-디바이스 기반으로, 특정 데이터 세트가 동기화 시스템(1200)을 사용하여 사용자의 클라이언트 디바이스들(100) 중 다른 디바이스와 동기화될 것인지 또는 동기화되지 않을 것인지를 결정할 수 있다.
사용자 데이터 세트들에 관한 메타데이터는 파일 시스템 메타데이터 및 동기화 메타데이터를 포함할 수 있다. 파일 시스템 메타데이터는, POSIX 파일 ID와 같은 파일 ID, 문서 ID, 파일의 생성 날짜, 파일이 마지막으로 수정되었던 날짜, 파일을 마지막으로 수정했던 디바이스의 식별자, 파일을 수정했던 애플리케이션의 식별자 및 애플리케이션의 버전, 및 파일에 대한 생성 카운트를 포함할 수 있다. 아이튠즈® 또는 아마존 클라우드®와 같은 서비스에서 이미 원격으로 저장된 구매 콘텐츠와 같은 자산들에 대해, 콘텐츠에 관한 메타데이터는 콘텐츠가 위치되는 장소를 가리키는 범용 자원 위치자(Universal Resource Locator: URL)를 포함할 수 있다. 파일 시스템 메타데이터는 각각의 클라이언트 디바이스(100)의 파일 시스템에 의해 생성될 수 있다. 동기화 메타데이터는, 사용자의 클라이언트 디바이스들(100)에 걸쳐 고유한 파일 또는 디렉토리에 대한 범용 고유 식별자(UUID)를 포함할 수 있고, ETAGS를 더 포함할 수 있다. ETAGS는 문서 또는 디렉토리에 대한 메타데이터의 특정 버전을 특정할 수 있다. ETAGS는, 사용자 데이터 세트들을 관리하고 특정 사용자 데이터 세트에 대한 사용자 데이터의 상이한 생성들 사이의 충돌들을 해결하도록 동기화 시스템(100)에 의해 생성될 수 있다. 예를 들어, ETAG는 사용자의 이력서의 워드 프로세싱 문서의 상이한 생성들을 구별하기 위해 사용될 수 있다.
도 13은 복수의 디바이스들에 대한 기계 상태들, 사용자 프로세싱 테스크 이력, 및 사용자 거동 패턴들 중 하나 이상을 동기화하기 위한 방법의 흐름도를 도시한다. 예를 들어, 제1 프로세싱 디바이스는 아이폰®일 수 있고, 제2 프로세싱 디바이스는 아이패드®일 수 있다.
동작(205)에서, 제1 프로세싱 디바이스의 기계 상태(300)는 위의 도 2를 참조하여 설명된 바와 같이 결정 및 저장될 수 있다. 예를 들어, 사용자의 아이폰®에 대한 기계 상태(300)가 결정될 수 있다. 사용자가 주중 오후 7:00 이후에 모션중, 즉 운전중이고, GPS 좌표들에 기초하여 사용자가 집을 향해 운전중이라고 결정될 수 있다.
동작(1305)에서, 기계 상태 준비 정보는 사용자 디바이스들(예를 들어, 도 12의 101, 102, 및 103) 중 하나 이상 사이에서 동기화될 수 있다. 기계 상태 준비 정보는 기계 상태 기록들(300), 전원 사용량 정보(400), 및 사용자 프로세싱 액티비티 및 습득된 패턴들(500)을 포함할 수 있다.
동작(600)에서, 제2 프로세싱 디바이스에 대한 미래의 프로세싱 테스크가 결정될 수 있다. 미래의 프로세싱 테스크는 시작 시간, 및 미래의 프로세싱 테스크를 시작하는 시간에서의 초기 열 상태 Ti를 포함할 수 있다. 예를 들어, 아이패드®는, 사용자가 주중 저녁 오후 7:00시 이후 뉴스를 시청한다는 거동을 습득할 수 있다. 아이폰®은, 아이패드®가 미래의 프로세싱 테스크를 위해 자신을 준비하는 것을 보조할 수 있다.
동작(700)에서, 중간 프로세싱 테스크들의 리스트가 아이패드®에 대해 생성될 수 있다. 일 실시예에서, 제1 프로세싱 디바이스(아이폰®)는 위의 동기화 동작(1305) 때문에 제2 프로세싱 디바이스(아이패드®) 대신 중간 테스크들의 리스트를 생성할 수 있다. 중간 프로세싱 테스크들의 리스트에서 각각의 테스크와 연관된 전원 사용량은 제2 디바이스의 전원 사용량 기록들(400) 및 사용자 프로세싱 액티비티 기록들(500)로부터 결정될 수 있다. 일 실시예에서, 제1 전자 디바이스는, 제2 프로세싱 디바이스 대신 중간 프로세싱 테스크들에 대한 전원 사용량 요건들을 결정할 수 있다. 중간 테스크들의 리스트는 동기화 시스템(1200)을 사용하여 제1 및 제2 프로세싱 디바이스들 사이에서 동기화될 수 있다.
동작(207)에서, 제2 디바이스에 대한 초기 온도 TC는 피드-포워드 열 예측 모델(210)로 입력될 수 있다. 중간 테스크들의 리스트 및 중간 테스크들에 대한 연관된 전원 사용량 요건들은 피드-포워드 예측 모델(210)로 입력될 수 있다. 일 실시예에서, 제1 프로세싱 디바이스(100)(아이폰®)는 제2 프로세싱 디바이스(아이패드®) 대신 피드-포워드 열 예측을 수행한다. 피드-포워드 열 예측 모델의 출력은 제2 프로세싱 디바이스에 대한 예측된 열 상태 TP를 포함할 수 있다.
동작(800)에서, 제2 프로세싱 디바이스는, 제2 프로세싱 디바이스가 미래의 프로세싱 테스크에 대한 시작 시간에서 초기 상태 Ti를 갖도록 준비될 수 있다. 일 실시예에서, 제2 프로세싱 디바이스는, 사용자가 동시에 제1 및 제2 디바이스들 둘 모두에 있지는 않기 때문에 하나의 디바이스만이 준비에 수반되면, 더 엄격한 냉각 대책들을 이용할 수 있다. 예를 들어, 사용자가 프로세싱 디바이스들 둘 모두에 존재하지 않도록 사용자의 제1 프로세싱 디바이스(아이폰®)가 자신의 기계 상태가 "집에" 있다고 결정할 때까지, 아이패드® 상의 냉각 시스템들은 최대로 구동될 수 있다.
동작(1310)에서, 선택적으로, 제2 프로세싱 디바이스는 제2 프로세싱 디바이스 상에서 미래의 프로세싱 테스크를 기동한다. 일 실시예에서, 제2 프로세싱 디바이스 및 제1 프로세싱 디바이스는, 제1 프로세싱 디바이스가 자신이 "집에" 도착했다고 검출할 경우 기계 상태들을 동기화할 수 있다. 제1 전자 디바이스(아이폰®)가 "집에" 있다고(그리고 그에 따라 사용자도 집에 있음) 검출한 것에 응답하여, 제2 프로세싱 디바이스는 제2 프로세싱 디바이스 상에서 미래의 프로세싱 테스크를 기동할 수 있다. 위의 예로 계속하면, 제1 프로세싱 디바이스가 "집에" 있다는 것을 제1 프로세싱 디바이스의 기계 상태가 표시한 것을 검출하는 것에 응답하여, 아이패드®는 뉴스 애플리케이션을 기동할 수 있다.
도 14("소프트웨어 스택")에서, 예시적인 실시예의 애플리케이션들은 여러 서비스 API들을 사용하여 서비스 1 또는 서비스 2로의 호출을 행하고, 여러 운영 체제(OS) API들을 사용하여 OS로의 호출을 행할 수 있다. 서비스 1 및 서비스 2는 여러 OS의 API들을 사용하여 OS로의 호출을 행할 수 있다.
서비스 2는 2개의 API들을 갖고, 이들 중 하나(서비스 2 API 1)는 애플리케이션 1로부터 호들을 수신하고 값들을 애플리케이션 1로 리턴하고, 다른 것(서비스 2 API 2)은 애플리케이션 2로부터 호들을 수신하고 값들을 애플리케이션 2로 리턴하고, (예를 들어, 소프트웨어 라이브러리일 수 있는) 서비스 1은 OS의 API 1로의 호출들을 행하고 OS의 API 1로부터 리턴된 값들을 수신하고, (예를 들어, 소프트웨어 라이브러리일 수 있는) 서비스 2는 API 1 및 OS의 API 2 둘 모두로의 호출들을 행하고 그들로부터 리턴된 값들을 수신하며, 애플리케이션 2는 API 2로의 호출들을 행하고 API 2로부터 리턴된 값들을 수신함을 주목한다.
도 15는 컴퓨팅 시스템(1500)의 일 실시예의 블록 다이어그램이다. 도 15에 도시된 컴퓨팅 시스템은, 예를 들어, 데스크톱 컴퓨터 시스템, 랩톱 컴퓨터 시스템들, 셀룰러 전화기들, 태블릿 컴퓨터들, 셀룰러-가능 PDA들을 포함하는 개인 휴대 정보 단말기(PDA)들, 셋톱 박스들, 엔터테인먼트 시스템들 또는 다른 소비자 전자 디바이스들을 포함하는 (유선 또는 무선 중 어느 하나인) 컴퓨팅 시스템들의 범위를 표현하도록 의도된다. 셀룰러 전화기들은 애플의 아이폰®과 같은 스마트폰들을 포함할 수 있다. 태블릿 컴퓨터들은, 예를 들어, 애플의 아이패드® 또는 마이크로소프트의 서피스®를 포함할 수 있다. 대안적인 컴퓨팅 시스템들은 더 많은, 더 적은 그리고/또는 상이한 컴포넌트들을 포함할 수 있다. 도 15의 컴퓨팅 시스템은 클라이언트 디바이스 및/또는 서버 디바이스를 제공하는데 사용될 수 있다.
컴퓨터 시스템(1500)은, 정보를 통신하기 위한 버스(1505) 또는 다른 통신 디바이스, 및 버스(1505)에 커플링되고 정보를 프로세싱할 수 있는 프로세서(1510)를 포함한다.
컴퓨팅 시스템(1500)이 단일 프로세서를 갖는 것으로 도시되지만, 컴퓨팅 시스템(1500)은 다수의 프로세서들 및/또는 코-프로세서들(1510)을 포함할 수 있다. 컴퓨팅 시스템(1500)은 버스(1505)에 커플링된 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 디바이스(1520)(메인 메모리로 지칭됨)를 더 포함할 수 있고, 프로세서(들)(1510)에 의해 실행될 수 있는 정보 및 명령어들을 저장할 수 있다. 메인 메모리(1520)는 또한, 프로세서(1510)에 의한 명령어들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장하는데 사용될 수 있다.
컴퓨터 시스템(1500)은 또한, 버스(1505)에 커플링되고, 프로세서(들)(1510)에 대한 정적 정보 및 명령어들을 저장할 수 있는 판독 전용 메모리(ROM)(1530) 및/또는 다른 정적 저장 디바이스(1540)를 포함할 수 있다. 데이터 저장 디바이스(1540)는 정보 및 명령어들을 저장하기 위해 버스(1505)에 커플링될 수 있다. 플래시 메모리 또는 자기 디스크 또는 광학 디스크 및 대응하는 드라이브와 같은 데이터 저장 디바이스(1540)는 컴퓨팅 시스템(1500)에 커플링될 수 있다.
컴퓨팅 시스템(1500)은 또한, 사용자에게 정보를 디스플레이하기 위해 음극선 관(CRT) 또는 액정 디스플레이(LCD)와 같은 디스플레이 디바이스(1550)에 버스(1505)를 통해 커플링될 수 있다. 컴퓨팅 시스템(1500)은 또한, 정보 및 커맨드 선택들을 프로세서(들)(1510)에 통신하도록 버스(1505)에 커플링될 수 있고, 문자숫자식 키들 및 다른 키들을 포함하는 문자숫자식 입력 디바이스(1560)를 포함할 수 있다. 다른 타입의 사용자 입력 디바이스는 방향 정보 및 커맨드 선택들을 프로세서(들)(1510)에 통신하고 디스플레이(1550) 상에서의 커서 움직임을 제어하는 터치패드, 마우스, 트랙볼, 또는 커서 방향 키들과 같은 커서 제어부(1570)이다.
컴퓨팅 시스템(1500)은 로컬 영역 네트워크와 같은 네트워크로의 액세스를 제공하기 위한 하나 이상의 네트워크 인터페이스(들)(1580)를 더 포함할 수 있다. 네트워크 인터페이스(들)(1580)는, 예를 들어, 하나 이상의 안테나(들)를 표현할 수 있는 안테나(1585)를 갖는 무선 네트워크 인터페이스를 포함할 수 있다. 컴퓨팅 시스템(1500)은 WiFi, 블루투스 및 셀룰러 전화 인터페이스들의 조합과 같은 다수의 무선 네트워크 인터페이스들을 포함할 수 있다. 예를 들어, 네트워크 인터페이스(들)(1580)는 또한, 예를 들어, 이더넷 케이블, 동축 케이블, 광섬유 케이블, 직렬 케이블, 또는 병렬 케이블일 수 있는 네트워크 케이블(1587)을 통해 원격 디바이스들과 통신하기 위한 유선 네트워크 인터페이스를 포함할 수 있다.
일 실시예에서, 네트워크 인터페이스(들)(1580)는, 예를 들어, IEEE 802.11b 및/또는 IEEE 802.11g 표준들을 준수함으로써 로컬 영역 네트워크로의 액세스를 제공할 수 있고, 그리고/또는, 무선 네트워크 인터페이스는, 예를 들어, 블루투스 표준들을 준수함으로써 개인 영역 네트워크로의 액세스를 제공할 수 있다. 다른 무선 네트워크 인터페이스들 및/또는 프로토콜들이 또한 지원될 수 있다. 무선 LAN 표준들을 통한 통신에 부가하여 또는 그 대신, 네트워크 인터페이스(들)(1580)는, 예를 들어, 시분할 다중화 액세스(TDMA) 프로토콜들, 모바일 통신들을 위한 글로벌 시스템(GSM) 프로토콜들, 코드 분할 다중화 액세스(CDMA) 프로토콜들, 및/또는 임의의 다른 타입의 무선 통신 프로토콜을 사용하여 무선 통신들을 제공할 수 있다.
프로세싱 시스템(1500)은 온도 센서들(1575)을 더 포함할 수 있다. 온도 센서들(1575)은 열전-쌍들, 온-칩 열 검출기 I/O들, 또는 다른 센서 타입들을 포함할 수 있다. 온도 센서들(1575)은 개별 하드웨어 컴포넌트들, 예를 들어, CPU 또는 GPU, 또는 다른 고전원 고열 컴포넌트들에 포함될 수 있고, 프로세싱 디바이스(1500) 내의 공기의 온도를 감지하기 위해 프로세싱 디바이스(1500) 내에 배치된 하나 이상의 온도 센서들을 더 포함할 수 있다.
전술한 명세서에서, 본 발명은 본 발명의 특정 실시예들을 참조하여 설명되었다. 그러나, 본 발명의 더 넓은 사상 및 범주를 벗어나지 않으면서 다양한 수정들 및 변화들이 본 발명에 행해질 수 있다는 것은 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (30)

  1. 컴퓨터-구현 방법으로서,
    프로세싱 디바이스에 대한 미래의 프로세싱 테스크를 결정하는 단계 - 상기 미래의 프로세싱 테스크는 미래의 시작 시간 및 예측된 지속기간을 갖고, 상기 결정하는 단계는 상기 프로세싱 디바이스를 사용하여 이전에 수행되었던 테스크들의 프로세싱 액티비티 데이터베이스를 질의하는 것을 포함함 -;
    제1 시간과 상기 미래의 시작 시간 사이에서 상기 프로세싱 디바이스에 대한 복수의 프로세싱 테스크를 예측하는 단계 - 상기 복수의 프로세싱 테스크의 각각의 프로세싱 테스크는 상기 프로세싱 테스크를 수행하기 위한 연관된 전원 요건을 가짐 -;
    적어도 상기 예측된 지속기간 및 상기 미래의 프로세싱 테스크를 수행하기 위해 이전에 사용된 복수의 자원에 기초하여, 상기 미래의 프로세싱 테스크에 대해 생성된 열과 예측된 전원 사용량을 결정하는 단계;
    상기 프로세싱 디바이스의 현재의 온도 및 상기 복수의 프로세싱 테스크 중 하나 이상을 수행하기 위한 상기 전원 요건들에 기초하여, 상기 프로세싱 디바이스가 상기 미래의 시작 시간에 있을 상기 프로세싱 디바이스의 미래의 온도 TP를 예측하는 단계; 및
    TP가 온도 TI 보다 큰 것에 응답하여, 상기 미래의 프로세싱 테스크의 시작 시의 상기 프로세싱 디바이스의 온도가 상기 온도 TI 보다 작거나 그와 동일하도록 상기 프로세싱 디바이스를 준비하는 단계 - 상기 프로세싱 디바이스를 준비하는 단계는, 상기 복수의 예측된 프로세싱 테스크 중 적어도 하나의 프로세싱 특성을 수정하는 것과, 상기 프로세싱 디바이스 상의 실행을 위한 상기 복수의 프로세싱 테스크 중 상기 적어도 하나를 스케줄링하는 것을 포함함 -
    를 포함하는 컴퓨터-구현 방법.
  2. 제1항에 있어서,
    제1 시간과 상기 미래의 시작 시간 사이에서 상기 프로세싱 디바이스에 대한 상기 복수의 프로세싱 테스크를 예측하는 단계는, 상기 프로세싱 디바이스 상의 과거의 프로세싱 테스크들에서 사용자 거동의 패턴을 결정하기 위해 상기 프로세싱 디바이스 상의 상기 과거의 프로세싱 테스크들의 이력을 분석하는 단계를 포함하는, 컴퓨터-구현 방법.
  3. 제2항에 있어서,
    사용자 거동의 패턴은, 사용자가 특정 테스크를 시작하는 시각(time of day)을 결정하는 것, 상기 사용자가 상기 특정 테스크를 수행하는 지속기간을 결정하는 것, 상기 사용자가 상기 특정 테스크를 수행하는 특정 요일을 결정하는 것, 또는 이들의 임의의 조합 중 하나 이상을 포함하는, 컴퓨터-구현 방법.
  4. 제1항에 있어서,
    상기 복수의 프로세싱 테스크를 예측하는 단계는, 캘린더 애플리케이션의 데이터를 분석하는 단계를 포함하는, 컴퓨터-구현 방법.
  5. 제1항에 있어서,
    프로세싱 테스크의 전원 요건을 결정하는 단계는, 상기 프로세싱 디바이스 상의 프로세싱 테스크들에 대한 전원 사용량 데이터의 데이터베이스에 액세스하는 단계를 포함하는, 컴퓨터-구현 방법.
  6. 제5항에 있어서,
    상기 프로세싱 테스크의 전원 요건을 결정하는 단계는, 상기 전원 사용량 데이터의 데이터베이스로부터 검색된 상기 프로세싱 테스크에 대한 증분 전원 사용량을, 과거의 프로세싱 테스크들의 이력으로부터 검색된 상기 프로세싱 테스크의 상기 예측된 지속기간과 곱하는 단계를 포함하는, 컴퓨터-구현 방법.
  7. 제1항에 있어서,
    상기 프로세싱 디바이스를 준비하는 단계는, 상기 복수의 예측된 프로세싱 테스크 중 하나 이상을 나중의 시간으로 리스케줄링하는 단계, 또는 상기 복수의 예측된 프로세싱 테스크 중 하나 이상의 스케줄링 우선순위를 낮추는 단계 중 하나 이상을 포함하는, 컴퓨터-구현 방법.
  8. 제1항에 있어서,
    상기 프로세싱 디바이스를 준비하는 단계는, 오디오 볼륨을 감소시키는 단계, 오디오 해상도를 감소시키는 단계, 비디오 해상도를 감소시키는 단계, 또는 비디오 프레임 레이트를 감소시키는 단계 중 하나 이상을 포함하는, 컴퓨터-구현 방법.
  9. 제2항에 있어서,
    상기 프로세싱 디바이스에 대한 상기 복수의 프로세싱 테스크를 예측하는 단계는, 상기 프로세싱 디바이스의 하나 이상의 센서 값들과 과거의 프로세싱 테스크를 상관시키는 단계를 더 포함하는, 컴퓨터-구현 방법.
  10. 제9항에 있어서,
    상기 프로세싱 디바이스의 하나 이상의 센서 값들과 상기 과거의 프로세싱 테스크를 상관시키는 단계는, 위치, 시각, 요일, 상기 프로세싱 디바이스가 네트워크에 연결되는지 여부, 또는 네트워크의 신호 강도 중 하나 이상과 상기 과거의 프로세싱 테스크의 구동을 상관시키는 단계를 포함하는, 컴퓨터-구현 방법.
  11. 실행가능 명령어들로 프로그래밍된 비일시적 컴퓨터 판독가능 매체로서,
    상기 명령어들은 실행될 경우, 제1항 내지 제10항 중 어느 한 항에서와 같은 방법을 수행하는, 비일시적 컴퓨터 판독가능 매체.
  12. 프로세싱 디바이스로서,
    하나 이상의 프로세서들;
    과거의 프로세싱 테스크들의 이력 및 전원 사용량 데이터의 데이터베이스를 포함하고, 상기 하나 이상의 프로세서들에 커플링된 저장소; 및
    상기 하나 이상의 프로세서들에 커플링된 메모리를 포함하고,
    상기 메모리는 실행가능 명령어들로 프로그래밍되며,
    상기 명령어들은 실행될 경우,
    상기 프로세싱 디바이스에 대한 미래의 프로세싱 테스크를 결정하는 단계 - 상기 미래의 프로세싱 테스크는 미래의 시작 시간 및 예측된 지속기간을 갖고, 상기 결정하는 단계는 상기 프로세싱 디바이스를 사용하여 이전에 수행되었던 테스크들의 프로세싱 액티비티 데이터베이스를 질의하는 것을 포함함 -;
    제1 시간과 상기 미래의 시작 시간 사이에서 상기 프로세싱 디바이스에 대한 복수의 프로세싱 테스크를 예측하는 단계 - 상기 복수의 프로세싱 테스크의 각각의 프로세싱 테스크는 상기 프로세싱 테스크를 수행하기 위한 연관된 전원 요건을 가짐 -;
    적어도 상기 예측된 지속기간 및 상기 미래의 프로세싱 테스크를 수행하기 위해 이전에 사용된 복수의 자원에 기초하여, 상기 미래의 프로세싱 테스크에 대해 생성된 열과 예측된 전원 사용량을 결정하는 단계;
    상기 프로세싱 디바이스의 현재의 온도 및 상기 복수의 프로세싱 테스크 중 하나 이상을 수행하기 위한 상기 전원 요건들에 기초하여, 상기 프로세싱 디바이스가 상기 미래의 시작 시간에 있을 상기 프로세싱 디바이스의 미래의 온도 TP를 예측하는 단계; 및
    TP가 온도 TI 보다 큰 것에 응답하여, 상기 미래의 프로세싱 테스크의 시작 시의 상기 프로세싱 디바이스의 온도가 상기 온도 TI 보다 작거나 그와 동일하도록 상기 프로세싱 디바이스를 준비하는 단계 - 상기 프로세싱 디바이스를 준비하는 단계는, 상기 복수의 예측된 프로세싱 테스크 중 적어도 하나의 프로세싱 특성을 수정하는 것과, 상기 프로세싱 디바이스 상의 실행을 위한 상기 복수의 프로세싱 테스크 중 상기 적어도 하나를 스케줄링하는 것을 포함함 -
    인 동작들을 포함하는 방법을 수행하는, 프로세싱 디바이스.
  13. 제12항에 있어서,
    상기 미래의 프로세싱 테스크를 예측하는 단계는, 상기 프로세싱 디바이스 상의 상기 과거의 프로세싱 테스크들에서 사용자 거동의 패턴을 결정하기 위해 상기 프로세싱 디바이스 상의 과거의 프로세싱 테스크들의 이력을 분석하는 단계를 포함하는, 프로세싱 디바이스.
  14. 제13항에 있어서,
    사용자 거동의 패턴은, 사용자가 특정 테스크를 시작하는 시각을 결정하는 것, 상기 사용자가 상기 특정 테스크를 수행하는 지속기간을 결정하는 것, 상기 사용자가 상기 특정 테스크를 수행하는 특정 요일을 결정하는 것, 또는 이들의 임의의 조합 중 하나 이상을 포함하는, 프로세싱 디바이스.
  15. 제12항에 있어서,
    상기 복수의 프로세싱 테스크를 예측하는 단계는, 캘린더 애플리케이션의 데이터를 분석하는 단계를 포함하는, 프로세싱 디바이스.
  16. 제1항 내지 제10항 중 어느 한 항에서와 같은 방법을 수행하는, 프로세싱 디바이스.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020177034694A 2015-06-05 2016-03-16 예측 제어 시스템들 및 방법들 KR102084838B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562171964P 2015-06-05 2015-06-05
US62/171,964 2015-06-05
US14/871,526 2015-09-30
US14/871,526 US10671131B2 (en) 2015-06-05 2015-09-30 Predictive control systems and methods
PCT/US2016/022568 WO2016195775A1 (en) 2015-06-05 2016-03-16 Predictive control systems and methods

Publications (2)

Publication Number Publication Date
KR20180003576A KR20180003576A (ko) 2018-01-09
KR102084838B1 true KR102084838B1 (ko) 2020-03-04

Family

ID=55650720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177034694A KR102084838B1 (ko) 2015-06-05 2016-03-16 예측 제어 시스템들 및 방법들

Country Status (5)

Country Link
US (1) US10671131B2 (ko)
KR (1) KR102084838B1 (ko)
CN (1) CN107683443B (ko)
TW (2) TWI619007B (ko)
WO (1) WO2016195775A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201402879D0 (en) * 2014-02-18 2014-04-02 Zero360 Inc Display Control
US10083105B2 (en) 2015-06-05 2018-09-25 Apple Inc. Smart advice to charge notification
JP2018006642A (ja) * 2016-07-06 2018-01-11 富士通株式会社 電子機器
US10133610B2 (en) * 2016-08-16 2018-11-20 International Business Machines Corporation System, method and recording medium for temperature-aware task scheduling
JP6799255B2 (ja) * 2016-11-22 2020-12-16 富士通株式会社 ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法
US20180191629A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Time-based flexible packet scheduling
AU2018408886A1 (en) 2018-02-15 2020-08-20 Chiyoda Corporation Plant operation condition setting support system, learning device, and operation condition setting support device
CN109117813A (zh) * 2018-08-24 2019-01-01 北京新界教育科技有限公司 视频处理方法及装置
US11843621B2 (en) * 2019-03-08 2023-12-12 Forescout Technologies, Inc. Behavior based profiling
CN109829260B (zh) * 2019-03-29 2023-04-18 江苏精研科技股份有限公司 一种5g高速风扇的仿真设计方法
WO2020204990A1 (en) * 2019-04-01 2020-10-08 Fisher Controls International Llc Methods and apparatus to control communication data rates of low-energy devices
CN112208385B (zh) * 2019-07-10 2024-01-02 富泰华工业(深圳)有限公司 电池更换方法及控制装置
US11900123B2 (en) * 2019-12-13 2024-02-13 Advanced Micro Devices, Inc. Marker-based processor instruction grouping
US11144421B2 (en) * 2019-12-31 2021-10-12 Micron Technology, Inc. Apparatus with temperature mitigation mechanism and methods for operating the same
KR20210128807A (ko) 2020-04-17 2021-10-27 삼성중공업 주식회사 해수 유입구 덮개
US11656664B2 (en) * 2020-06-05 2023-05-23 Apple Inc. Context aware thermal pressure prediction and reaction
US11301028B2 (en) 2020-06-24 2022-04-12 Motorola Mobility Llc Time-based and temperature-based device thermal mitigation
US11934286B2 (en) * 2021-04-29 2024-03-19 Dell Products L.P. Subsystem power range configuration based on workload profile
TWI787955B (zh) * 2021-08-13 2022-12-21 國立臺灣科技大學 設備溫度異常的線上檢測方法和系統
TWI823183B (zh) * 2021-11-12 2023-11-21 台泥儲能科技股份有限公司 電力需量控制系統及其方法
US11972267B2 (en) * 2022-10-04 2024-04-30 International Business Machines Corporation Hibernation of computing device with faulty batteries

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246014B2 (en) 2003-02-07 2007-07-17 Power Measurement Ltd. Human machine interface for an energy analytics system
JP2014507727A (ja) * 2011-02-14 2014-03-27 インターナショナル・ビジネス・マシーンズ・コーポレーション パフォーマンス・メトリックを監視するためのコンピュータによって実施される方法、コンピュータ可読記憶媒体、およびシステム
US20140229221A1 (en) * 2013-02-11 2014-08-14 Amazon Technologies, Inc. Cost-minimizing task scheduler

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997028669A1 (en) 1996-01-31 1997-08-07 Asm America, Inc. Model-based predictive control of thermal processing
US7174194B2 (en) * 2000-10-24 2007-02-06 Texas Instruments Incorporated Temperature field controlled scheduling for processing systems
US7706856B2 (en) 2002-09-27 2010-04-27 General Electric Company System and method for predictive thermal output control of a medical device
JP4152348B2 (ja) * 2004-06-03 2008-09-17 株式会社ソニー・コンピュータエンタテインメント 電子デバイス冷却装置、電子デバイスシステムおよび電子デバイス冷却方法
JP3914230B2 (ja) 2004-11-04 2007-05-16 株式会社東芝 プロセッサシステム及びその制御方法
US8271807B2 (en) 2008-04-21 2012-09-18 Adaptive Computing Enterprises, Inc. System and method for managing energy consumption in a compute environment
US8374730B2 (en) 2005-08-25 2013-02-12 Apple Inc. Methods and apparatuses for dynamic thermal control
US20070192641A1 (en) * 2006-02-10 2007-08-16 Intel Corporation Method and apparatus to manage power consumption in a computer
US20070225871A1 (en) 2006-03-24 2007-09-27 Karstens Christopher K Managing predictable thermal environments
US8762097B2 (en) 2006-08-04 2014-06-24 Apple Inc. Method and apparatus for a thermal control system based on virtual temperature sensor
JP5189921B2 (ja) * 2008-08-02 2013-04-24 レノボ・シンガポール・プライベート・リミテッド コンピュータの放熱システム
US8224596B2 (en) * 2008-09-09 2012-07-17 International Business Machines Corporation Portable device battery optimization routing system
US8190276B2 (en) 2008-11-21 2012-05-29 Oracle America, Inc. Method and apparatus for controlling temperature variations in a computer system
US8631411B1 (en) * 2009-07-21 2014-01-14 The Research Foundation For The State University Of New York Energy aware processing load distribution system and method
US8280456B2 (en) 2009-08-14 2012-10-02 Google Inc. Providing a user with feedback regarding power consumption in battery-operated electronic devices
US8538484B2 (en) * 2009-08-14 2013-09-17 Google Inc. Providing a user with feedback regarding power consumption in battery-operated electronic devices
US9256265B2 (en) 2009-12-30 2016-02-09 Nvidia Corporation Method and system for artificially and dynamically limiting the framerate of a graphics processing unit
US8452463B2 (en) 2010-06-04 2013-05-28 Apple Inc. Adjusting the thermal behavior of a computing system using indirect information about ambient temperature
US8972217B2 (en) * 2010-06-08 2015-03-03 Schneider Electric It Corporation System and method for predicting temperature values in a data center
CN101916209B (zh) * 2010-08-06 2012-11-21 华东交通大学 一种多核处理器集群任务资源分配方法
US8984305B2 (en) 2010-12-21 2015-03-17 Intel Corporation Method and apparatus to configure thermal design power in a microprocessor
TWI502307B (zh) 2010-12-21 2015-10-01 Intel Corp 用以配置微處理器中之熱設計功率的方法和裝置
US8688883B2 (en) * 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor
US10180665B2 (en) 2011-09-16 2019-01-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Fluid-cooled computer system with proactive cooling control using power consumption trend analysis
US9442773B2 (en) 2011-11-21 2016-09-13 Qualcomm Incorporated Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip
US8909383B2 (en) 2011-12-22 2014-12-09 International Business Machines Corporation Proactive cooling of chips using workload information and controls
US9395807B2 (en) * 2012-05-23 2016-07-19 Canon Kabushiki Kaisha Power management apparatus, image forming apparatus and power management method
JP5929575B2 (ja) * 2012-07-11 2016-06-08 ソニー株式会社 消費電力管理装置及び消費電力管理システム
CN103105923B (zh) * 2013-03-07 2015-05-27 鄂尔多斯市云泰互联科技有限公司 云计算中心的it业务节能调度方法及其系统
US9268378B2 (en) 2013-06-28 2016-02-23 Intel Corporation Techniques and system for managing platform temperature
CN104158754B (zh) * 2014-07-08 2017-07-11 上海交通大学 基于热负载均衡的数据中心自适应性耗能管理方法
CN105205229B (zh) 2015-09-02 2018-10-16 江苏省电力公司南京供电公司 一种高压单芯电缆应急负荷下的载流能力动态评估方法
US10061366B2 (en) * 2015-11-17 2018-08-28 Microsoft Technology Licensing, Llc Schedule-based energy storage device selection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246014B2 (en) 2003-02-07 2007-07-17 Power Measurement Ltd. Human machine interface for an energy analytics system
JP2014507727A (ja) * 2011-02-14 2014-03-27 インターナショナル・ビジネス・マシーンズ・コーポレーション パフォーマンス・メトリックを監視するためのコンピュータによって実施される方法、コンピュータ可読記憶媒体、およびシステム
US20140229221A1 (en) * 2013-02-11 2014-08-14 Amazon Technologies, Inc. Cost-minimizing task scheduler

Also Published As

Publication number Publication date
TWM539648U (zh) 2017-04-11
TW201710830A (zh) 2017-03-16
US20160357232A1 (en) 2016-12-08
TWI619007B (zh) 2018-03-21
US10671131B2 (en) 2020-06-02
WO2016195775A1 (en) 2016-12-08
CN107683443B (zh) 2021-06-18
KR20180003576A (ko) 2018-01-09
CN107683443A (zh) 2018-02-09

Similar Documents

Publication Publication Date Title
KR102084838B1 (ko) 예측 제어 시스템들 및 방법들
US10936358B2 (en) Initiating background updates based on user activity
EP3502889B1 (en) Method and device for preloading application, storage medium, and terminal device
RU2586869C2 (ru) Уведомления о приложениях
US20190188007A1 (en) Method for Preloading Application, Storage Medium, and Terminal Device
TWI514132B (zh) 資料同步技術
US11966315B2 (en) Smart advice to charge notification
EP3502879B1 (en) Method for preloading application, storage medium, and terminal device
KR101962502B1 (ko) 전력 효율적인 애플리케이션 통지 시스템
US20210289043A1 (en) Efficient context monitoring
WO2018161842A1 (en) Optimization of energy management of mobile devices based on specific user and device metrics uploaded to cloud
US20180267839A1 (en) Controlled Energy Utilization In A Computing Device
CN106104626B (zh) 基于分析的数字内容的更新
Wolski et al. QPRED: Using quantile predictions to improve power usage for private clouds
US20180249017A1 (en) Data Usage Based Data Transfer Determination
Isuwa et al. QUAREM: maximising QoE through adaptive resource management in mobile MPSoC platforms
US20140122403A1 (en) Loading prediction method and electronic device using the same
CN116594564A (zh) 数据处理方法、装置、电子设备及可读存储介质
Rijo et al. Management Model for Mobile Applications Assisted by Events
Jain Energy-efficient Scheduling for Heterogeneous Servers in the Dark Silicon Era

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