KR20230027000A - 컴퓨팅 시스템에서 웨이크 패턴을 동적으로 스케줄링하기 위한 방법들, 시스템들, 제조 물품들 및 장치들 - Google Patents

컴퓨팅 시스템에서 웨이크 패턴을 동적으로 스케줄링하기 위한 방법들, 시스템들, 제조 물품들 및 장치들 Download PDF

Info

Publication number
KR20230027000A
KR20230027000A KR1020227041472A KR20227041472A KR20230027000A KR 20230027000 A KR20230027000 A KR 20230027000A KR 1020227041472 A KR1020227041472 A KR 1020227041472A KR 20227041472 A KR20227041472 A KR 20227041472A KR 20230027000 A KR20230027000 A KR 20230027000A
Authority
KR
South Korea
Prior art keywords
time
state
contexts
operating system
controller
Prior art date
Application number
KR1020227041472A
Other languages
English (en)
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 KR20230027000A publication Critical patent/KR20230027000A/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
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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
    • 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/1613Constructional details or arrangements for portable computers
    • G06F1/1633Constructional details or arrangements of portable computers not specific to the type of enclosures covered by groups G06F1/1615 - G06F1/1626
    • G06F1/1684Constructional details or arrangements related to integrated I/O peripherals not covered by groups G06F1/1635 - G06F1/1675
    • G06F1/1694Constructional details or arrangements related to integrated I/O peripherals not covered by groups G06F1/1635 - G06F1/1675 the I/O peripheral being a single or a set of motion sensors for pointer control or gesture input obtained by sensing movements of the portable computer
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3231Monitoring the presence, absence or movement of users
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/26Discovering frequent patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0251Power saving arrangements in terminal devices using monitoring of local events, e.g. events related to user activity
    • H04W52/0254Power saving arrangements in terminal devices using monitoring of local events, e.g. events related to user activity detecting a user operation or a tactile contact or a motion of the device
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Power Sources (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

컴퓨팅 시스템에서 웨이크 패턴을 동적으로 스케줄링하기 위한 방법들, 장치들, 시스템들 및 제조 물품들이 개시된다. 예시적인 장치는 제1 시간에 수집된 센서 측정값들에 기초하여 디바이스의 컨텍스트들을 결정하는 디바이스 상태 컨트롤러; 운영 체제의 상태를 디바이스의 컨텍스트들과 연관시키는 연관기 - 상태는 제1 시간 이후의 제2 시간에 획득됨 -; 연관에 기초하여 예측 모델을 생성하는 훈련 컨트롤러 - 예측 모델은 컨텍스트들에 기초하여 운영 체제의 상태가 활성일 제3 시간을 예측함 -; 및 제3 시간 이전에 웨이크 이벤트를 트리거함으로써 디바이스의 전력 소비를 감소시키는 스케줄 컨트롤러 - 웨이크 이벤트는 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 하기 위한 것임 - 를 포함한다.

Description

컴퓨팅 시스템에서 웨이크 패턴을 동적으로 스케줄링하기 위한 방법들, 시스템들, 제조 물품들 및 장치들
본 개시내용은 일반적으로 컴퓨팅 시스템에 관한 것으로, 더 구체적으로는 컴퓨팅 시스템에서 웨이크 패턴을 동적으로 스케줄링하는 방법들, 시스템들, 제조 물품들, 및 장치들에 관한 것이다.
머신 러닝(ML), 딥 러닝(DL) 및/또는 다른 인공 머신 구동 로직을 포함하는 인공 지능(AI)은, 머신들(예를 들어, 컴퓨터들, 로직 회로들 등)이 모델을 사용하여 입력 데이터를 프로세싱하여, 훈련 프로세스를 통해 모델에 의해 이전에 학습된 패턴들 및/또는 연관들에 기초하여 출력을 생성할 수 있도록 한다. 예를 들어, 모델은 패턴들 및/또는 연관들을 인식하고, 입력 데이터를 프로세싱할 때 그러한 패턴들 및/또는 연관들을 따르도록 데이터로 훈련될 수 있으며, 그에 의해 다른 입력(들)은 인식된 패턴들 및/또는 연관들에 일관된 출력(들)을 초래한다.
도 1a는 동적 웨이크 기간 스케줄을 생성하기 위한 예시적인 디바이스의 블록도를 도시한다.
도 1b는 컨텍스트 데이터와 장래 OS 상태들 간의 연관을 나타내기 위해 도 1a의 예시적인 연관기에 의해 생성된 예시적인 히스토그램들을 도시한다.
도 2는 예측 모델을 생성하기 위한 도 1의 예시적인 훈련 컨트롤러의 블록도이다.
도 3은 실시간으로 장래 OS 상태에 대한 예측을 생성하기 위한 도 1a의 예시적인 예측 컨트롤러의 블록도이다.
도 4는 예측 모델을 훈련하도록 도 1a의 예시적인 센서 허브를 구현하기 위해 실행될 수 있는 머신 판독가능 명령어들을 나타내는 흐름도이다.
도 5는 예측을 생성하도록 도 1a의 예시적인 센서 허브를 구현하기 위해 실행될 수 있는 머신 판독가능 명령어들을 나타내는 흐름도이다.
도 6은 도 1a 및 도 2의 예시적인 디바이스를 구현하기 위해 도 4 및 도 5의 명령어들을 실행하도록 구성된 예시적인 프로세싱 플랫폼의 블록도이다.
도면들은 비례에 맞지 않는다. 일반적으로, 동일하거나 유사한 부분들을 지칭하기 위해, 도면(들) 및 첨부의 기재된 설명 전체에 걸쳐서 동일한 참조번호들이 사용될 것이다.
본 명세서에서, 기술어 "제1", "제2", "제3" 등은 개별적으로 참조될 수 있는 복수의 요소 또는 컴포넌트를 식별할 때 사용된다. 그 사용 맥락에 기초하여 달리 지정되거나 이해되지 않는 한, 이러한 기술어들은 우선순위, 목록에서의 물리적 순서 또는 배열, 또는 시간 순서의 임의의 의미를 전가하도록 의도되지 않고, 단순히 개시된 예들의 이해를 쉽게 하기 위해 복수의 요소 또는 컴포넌트를 개별적으로 참조하기 위한 레이블로서 사용된다. 일부 예들에서, 상세한 설명에서 요소를 지칭하기 위해 기술어 "제1"이 사용될 수 있는 반면, 동일한 요소가 청구항에서는 "제2" 또는 "제3"과 같은 상이한 기술어와 함께 참조될 수 있다. 그러한 경우들에서, 그러한 기술어들은 단순히 복수의 요소 또는 컴포넌트의 참조를 쉽게 하기 위해 사용된다는 것을 이해해야 한다.
오늘날의 개인용 컴퓨팅 디바이스들은 하루 종일 지속되는 배터리 수명, 대기 시간이 제로에 가까운 응답성(near zero-wait responsiveness), 및 탁월한 성능의 실세계 사용자 경험을 제공할 것으로 예상된다. 컴퓨팅 시스템들(예를 들어, 개인용 컴퓨팅 디바이스들의 시스템들)은 상이한 클래스들의 사용자들(예를 들어, 게이머들, 가정 사용자들, 학생들 등)의 요구를 충족하는 것에 기초하여 설계되었다. 이러한 시스템들은 상이한 성능 목표들을 달성하기 위해 하드웨어(HW) 및/또는 소프트웨어(SW) 트레이드오프들을 제공한다. 예를 들어, 시스템들은 운영 체제(OS)가 실행되는 컴퓨팅 디바이스의 활성 및 비활성 상태들 동안 상이한 성능 목표들을 달성하기 위해 OS를 포함할 수 있다. 이러한 성능 목표들은 시스템들이 비활성 상태(예를 들어, 대기 모드)에 있을 때 시스템들의 낮은 전력 소비를 달성하는 것일 수 있다.
일부 예들에서, OS가 대기 모드에 있을 때, OS는 시스템의 웨이크 기간들을 스케줄링하는 피쳐들(features)을 구현한다. 본 명세서에 사용될 때, "웨이크" 기간은 OS가 시스템의 하드웨어 및 소프트웨어 컴포넌트들에 전력을 제공하는(예를 들어, 활성화하는) 시간이다. 이러한 웨이크 기간은 네트워크에 대한 연결을 유지하고 이메일들(예를 들어, 최근에 수신된 이메일들)을 동기화하고 캘린더를 업데이트하는 등을 하여, 사용자가 시스템을 활성화(예를 들어, 턴온)할 때 시스템(예를 들어, 개인용 컴퓨팅 디바이스)이 준비되고 최신 상태이도록 하기 위해, OS를 슬립 모드(예를 들어, 대기 모드, 비활성 모드 등)로부터 주기적으로 "웨이크업"(예를 들어, 활성화)하는 대기 피쳐에 의해 구현될 수 있다.
대기 피쳐는 사용자가 시스템으로 하여금 슬립 상태에 진입하게 할 때 시작된다(예를 들어, 사용자가 전원 버튼을 누르거나, 덮개를 닫거나, 유휴 상태로 하거나(idling out), 시작 메뉴의 전원 버튼에서 "슬립"을 선택하는 경우). 대기 피쳐가 개시될 때, 애플리케이션들 및 시스템 소프트웨어는 저전력 동작으로 전환된다. 대기 피쳐의 성능 목표는 배터리 수명을 최적화하기 위해 낮은 전력 소비를 유지하면서 활성화를 위한 시스템의 준비를 가능하게 하는 것이다.
그러나, 본 명세서에서 대기 모드라고 지칭되는 대기 피쳐는 배터리 수명과 응답성(예를 들어, 시스템 준비상태) 간의 균형인 웨이크 기간 스케줄을 갖지 않는다. 예를 들어, 대기 모드는 미리 결정된(예를 들어, 20분, 30분 등) 웨이크 기간 스케줄을 구현할 수 있으며, 여기서 OS가 대기 상태에 있는 미리 결정된 시간량(예를 들어, 30분)마다, OS는 시스템을 깨우기 위해 웨이크 알림을 트리거한다. 그러한 예에서, 웨이크 알림을 트리거하는 것들 사이의 미리 결정된 시간량은 시스템의 응답성을 감소시키는 대가로 배터리 수명을 절약하는 데 도움이 되도록 비교적 길 수 있다. 대안적으로, 웨이크 알림을 트리거하는 것들 사이의 미리 결정된 시간량은 배터리 수명을 희생시키면서 응답성을 증가시키도록 비교적 짧을 수 있다.
따라서, 이러한 고정된 웨이크 기간 스케줄은 비효율적이다. 예를 들어, 웨이크 알림은 각각의 미리 결정된 시간에 항상 필요한 것은 아니다. 사용자는 오랜 기간 동안 시스템을 사용하고 있지 않을 수 있다(예를 들어, 며칠, 몇 주, 몇 시간, 사무실 및/또는 집으로 운전할 때, 점심 또는 저녁 시간 등). 이러한 상황들에서의 불필요한 웨이크 알림들은 배터리 전력을 낭비하고, 일부 환경들(예를 들어, 디바이스가 가방, 자동차 등에 있는 경우)에서는 시스템 하드웨어 과열을 유발할 수 있다. 상이한 예에서, 고정된 웨이크 기간 스케줄에서 시스템의 응답 성능은 바람직하지 않다. 예를 들어, 시스템의 사용자는 다음 웨이크 알림 직전에 시스템을 턴온(예를 들어, 시스템을 활성화)할 수 있고, 결국 그것은 OS의 대기 모드에 의해 제공되는 원하는 준비상태 및/또는 인스턴트-온(instant-on) 경험을 사용자에게 제공하지 못한다.
본 명세서에 개시된 예들은 시스템이 대기 모드에 있을 때 시스템의 응답성과 배터리 수명의 균형을 맞추는 동적 웨이크 기간 스케줄의 결정 및 생성을 가능하게 한다. 본 명세서에 개시된 예들은 센서 측정들을 통해 사용자의 일상적인 루틴들을 분석함으로써 동적 웨이크 기간 스케줄을 생성하고, 루틴들을 OS 상태들(예를 들어, 활성 또는 비활성)과 상관시킨다. 본 명세서에 개시된 예들은 임의의 수의 센서 타입을 갖는 상이한 센서들로부터 센서 측정값들을 획득하고, 센서 측정값들에 기초하여 시스템의 컨텍스트들 및/또는 조건들을 결정하고, 이러한 조건들을 OS 상태들(예를 들어, 활성 또는 비활성)에 더 연관시키는 통합 센서 허브(Integrated Sensor Hub)(ISH)를 포함한다.
이러한 컨텍스트들 및/또는 조건들은 때때로 상태 컨텍스트들 및 이벤트 컨텍스트들이라고 지칭된다. 본 명세서에서 사용될 때, 상태 컨텍스트는 사용자 거동 및 디바이스 조건에 대응하는 조건이다. 예를 들어, 상태 컨텍스트는 사용자 활동(예를 들어, 사용자가 걷고 있음, 달리고 있음, 자전거를 타고 있음, 차량 내부에 있음, 안절부절 못함, 알 수 없음 등), 디바이스 움직임, 디바이스 및 사용자 위치 등일 수 있다. 본 명세서에서 사용될 때, 이벤트 컨텍스트들은 디바이스의 상태의 즉각적인 전환에 대응하는 조건들이다. 예를 들어, 이벤트 컨텍스트는 배치 전환일 수 있다(예를 들어, 디바이스가 가방으로부터 제거되고 있음, 디바이스가 가방 안에 배치됨 등). 본 명세서에 개시된 예들에서, 디바이스의 OS 상태와 컨텍스트들 간의 상관관계는, 본 명세서에 개시된 예들이 어떤 루틴(예를 들어, 컨텍스트, 조건 등)이 어떤 OS 상태에 대응하는지를 학습하고, 추가로 어떤 루틴이 어떤 시간 및 요일에 수행되는지를 학습하는 것을 가능하게 한다.
본 명세서에 개시된 예들은 동적 웨이크 기간 스케줄을 생성하기 위해 인공 지능을 구현한다. 머신 러닝(ML), 딥 러닝(DL) 및/또는 다른 인공 머신 구동 로직을 포함하는 인공 지능(AI)은, 머신들(예를 들어, 시스템들, 컴퓨터들, 로직 회로들 등)이 모델을 사용하여 입력 데이터를 프로세싱하여, 훈련 프로세스를 통해 모델에 의해 이전에 학습된 패턴들 및/또는 연관들에 기초하여 출력을 생성할 수 있도록 한다. 예를 들어, 모델은 패턴들 및/또는 연관들을 인식하고, 입력 데이터를 프로세싱할 때 그러한 패턴들 및/또는 연관들을 따르도록 데이터로 훈련될 수 있으며, 그에 의해 다른 입력(들)은 인식된 패턴들 및/또는 연관들에 일관된 출력(들)을 초래한다.
다수의 상이한 타입들의 머신 러닝 모델들 및/또는 머신 러닝 아키텍처들이 존재한다. 본 명세서에 개시된 예들에서, 신경망 모델이 사용된다. 신경망 모델을 사용하면, 디바이스의 이전 및 장래 컨텍스트들 및/또는 조건들에 기초한 운영 체제(OS) 상태의 예측이 가능해진다. 일반적으로, 본 명세서에 개시된 예시적인 접근방식들에 사용하기에 적합한 머신 러닝 모델들/아키텍처들은 나이브 베이즈 분류기일 것이다. 그러나, 장단기 메모리(Long/Short Term Memory)(LSTM) 모델들, 순환 신경망들(Recurrent Neural Networks)(RNN) 등과 같은 다른 타입들의 머신 러닝 모델들이 추가적으로 또는 대안적으로 사용될 수 있다.
일반적으로, ML/AI 시스템을 구현하는 것은 학습/훈련 페이즈 및 추론 페이즈의 적어도 두 개의 페이즈를 수반한다. 학습/훈련 페이즈에서, 훈련 알고리즘은 예를 들어 훈련 데이터에 기초하는 패턴들 및/또는 연관들에 따라 동작하도록 모델을 훈련하기 위해 사용된다. 일반적으로, 모델은 예컨대 입력 데이터를 출력 데이터로 변환하기 위한 모델 내의 일련의 노드들 및 연결들을 통해, 입력 데이터가 출력 데이터로 변환되는 방법을 안내하는 내부 파라미터들을 포함한다. 추가적으로, 하이퍼파라미터들은 학습이 수행되는 방법을 제어하기 위해 훈련 프로세스의 일부로서 사용된다(예를 들어, 학습 레이트, 머신 러닝 모델에서 사용될 계층들의 수 등). 하이퍼파라미터들은 훈련 프로세스를 개시하기 전에 결정되는 훈련 파라미터들로 정의된다.
ML/AI 모델의 타입 및/또는 예상된 출력에 기초하여 상이한 타입들의 훈련이 수행될 수 있다. 예를 들어, 지도 훈련은 모델 오차를 줄이는 ML/AI 모델에 대한 파라미터들을 (예를 들어, 선택 파라미터들의 조합들에 걸쳐 반복함으로써) 선택하기 위해, 입력들 및 대응하는 예상된(예를 들어, 레이블이 지정된) 출력들을 사용한다. 본 명세서에서 사용될 때, 레이블 지정은 머신 러닝 모델의 예상된 출력(예를 들어, 분류, 예상된 출력 값 등)을 지칭한다. 대안적으로, (예를 들어, 딥 러닝, 머신 러닝의 서브세트 등에서 사용되는) 비지도 훈련은 (예를 들어, 예상된(예를 들어, 레이블 지정된) 출력들의 혜택 없이) ML/AI 모델에 대한 파라미터들을 선택하기 위해 입력들로부터 패턴들을 추론하는 것을 수반한다.
본 명세서에 개시된 예들에서, ML/AI 모델들은 나이브 베이즈를 사용하여 훈련된다. 그러나, 임의의 다른 훈련 알고리즘이 추가적으로 또는 대안적으로 사용될 수 있다. 본 명세서에 개시된 예들에서, 훈련은 사용자 거동 패턴이 결정될 때까지 수행된다. 본 명세서에 개시된 예들에서, 훈련은 컴퓨팅 디바이스에서(예를 들어, 로컬로) 수행된다. 학습이 수행되는 방법을 제어하는 하이퍼파라미터들(예를 들어, 학습 레이트, 머신 러닝 모델에서 사용될 계층들의 수 등)을 사용하여 훈련이 수행된다. 일부 예들에서, 재훈련이 수행될 수 있다. 이러한 재훈련은 이전에 결정된 것과는 다른 사용자 및 디바이스의 비정상적 및/또는 상이한 루틴 및/또는 거동을 나타내는 센서 측정값들에 응답하여 수행될 수 있다.
훈련은 훈련 데이터를 사용하여 수행된다. 본 명세서에 개시된 예들에서, 훈련 데이터는 로컬로 생성된 데이터로부터 유래한다. 지도 훈련이 사용되기 때문에, 훈련 데이터는 레이블 지정된다. 레이블 지정은 연관기에 의해 훈련 데이터에 적용된다. 일부 예들에서, 훈련 데이터는 예를 들어 시스템의 어떤 컨텍스트들이 시스템의 어느 OS 상태들에 대응하는지를 학습하기 위해 이력 컨텍스트 데이터(예를 들어, 시스템의 상태 및 이벤트 컨텍스트들을 결정하기 위해 분석된 센서 데이터)를 장래 OS 상태들과 연관시키는 것을 사용하여 사전 프로세싱된다.
훈련이 완료되고 나면, 모델에 정의된 노드들 및 연결들의 네트워크에 기초하여 입력을 프로세싱하고 출력을 제공하는 실행가능한 구성으로 사용하기 위해 모델이 배치된다. 모델은 ISH에 저장된다. 다음으로, 모델은 ISH의 예측 컨트롤러에 의해 실행될 수 있다.
훈련되고 나면, 배치된 모델은 데이터를 프로세싱하기 위해 추론 페이즈에서 동작될 수 있다. 추론 페이즈에서, 분석될 데이터(예를 들어, 라이브 데이터)가 모델에 입력되고, 모델이 실행되어 출력을 생성한다. 이러한 추론 페이즈는 (예를 들어, 학습된 패턴들 및/또는 연관들을 라이브 데이터에 적용하기 위해 모델을 실행함으로써) 훈련으로부터 학습한 것에 기초하여 출력을 생성하기 위한 AI "사고(thinking)"로 생각될 수 있다. 일부 예들에서, 입력 데이터는 머신 러닝 모델에 대한 입력으로서 사용되기 전에 사전 프로세싱을 거친다. 더욱이, 일부 예들에서, 출력 데이터는 출력을 유용한 결과(예를 들어, 데이터의 디스플레이, 머신에 의해 실행될 명령어 등)로 변환하기 위해, AI 모델에 의해 생성된 후 사후 프로세싱을 거칠 수 있다.
일부 예들에서, 배치된 모델의 출력이 캡처되어 피드백으로서 제공될 수 있다. 피드백을 분석함으로써, 배치된 모델의 정확도가 결정될 수 있다. 피드백이 배치된 모델의 정확도가 임계값 또는 다른 기준보다 작음을 나타내는 경우, 피드백 및 업데이트된 훈련 데이터 세트, 하이퍼파라미터들 등을 사용하여, 업데이트된 모델의 훈련이 트리거되어, 업데이트된 배치된 모델을 생성할 수 있다.
도 1a는 동적 웨이크 기간 스케줄을 생성하기 위한 예시적인 디바이스(100)의 블록도를 도시한다. 예시적인 디바이스(100)는 예시적인 센서 허브(102), 예시적인 센서들(104), 및 예시적인 호스트(106)를 포함한다. 예시적인 센서들(104)은 예시적인 제1 센서(가속도계)(108), 예시적인 제2 센서(자이로스코프)(110), 예시적인 제3 센서(근접)(112), 예시적인 제4 센서(주변 광)(114), 예시적인 제5 센서(Wi-Fi)(116), 예시적인 제6 센서(비전 센서)(118), 예시적인 제7(레이더 센서)(120), 및 예시적인 제8 센서(초음파 센서)(122)를 포함한다. 예시적인 센서 허브(102)는 예시적인 디바이스 이벤트 컨트롤러(124), 예시적인 디바이스 상태 컨트롤러(126), 예시적인 버퍼(128), 예시적인 타이머(130), 예시적인 연관기(132), 예시적인 훈련 컨트롤러(134), 예시적인 예측 컨트롤러(136), 예시적인 스케줄 컨트롤러(138), 및 예시적인 웨이크 타이머(140)를 포함한다. 예시적인 호스트(106)는 예시적인 대기 관리 시스템(142)을 포함한다.
도 1a에서, 예시적인 디바이스(100)는 컴퓨팅 시스템이다. 예를 들어, 컴퓨팅 시스템은 랩톱, 태블릿, 셀룰러 전화, 및/또는 임의의 다른 타입의 개인용 컴퓨팅 시스템과 같은 개인용 컴퓨팅 시스템일 수 있다. 추가적으로 및/또는 대안적으로, 디바이스(100)는 워크스테이션, 미니컴퓨터 등일 수 있다.
도 1a에서, 예시적인 센서 허브(102)는 호스트(106)에 대한 동적 웨이크 스케줄을 결정하기 위해 임의의 수의 상이한 센서 측정값을 통합하는 제어 센터이다. 예시적인 센서 허브(102)는 프로세서(예를 들어, 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 보조 프로세서 등)에 의해 구현된다. 추가적으로 및/또는 대안적으로, 예시적인 센서 허브(102)는 에지 디바이스(예를 들어, 외부 디바이스) 및/또는 클라우드 디바이스(예를 들어, 서버, 가상화된 디바이스 등)에 의해 구현될 수 있다. 일부 예들에서, 센서 허브(102)는 호스트(106)로부터의 프로세싱 태스크들을 오프로드하여 디바이스(100)의 성능 개선은 물론, 디바이스(100)에서의 최적의 전력 분배를 제공한다.
도 1a에서, 예시적인 센서들(104)은 디바이스(100)의 내부 및 외부 환경을 모니터링하는 예시적인 디바이스(100)의 센서들이다. 일부 예들에서, 센서들(104)은 디바이스(100) 내에/상에 설치된다. 예를 들어, 디바이스(100)는 임의의 수의 센서들을 포함하도록 설계되고 제조될 수 있다. 예시적인 센서들(104)이 8개의 센서를 포함하는 것으로 도시되어 있지만, 예시적인 디바이스(100)는 도시되지 않은 추가 및/또는 대안적인 센서들을 포함할 수 있다. 추가적으로, 예시적인 디바이스(100)는 동일한 타입의 복수의 센서를 포함할 수 있다.
예시적인 센서들(104)은 디바이스(100)의 가속도를 측정하기 위한 예시적인 가속도계(108)를 포함한다. 예를 들어, 가속도계(108)는 디바이스가 휴대용이고 상이한 위치들로부터 이동될 때 디바이스(100)의 움직임을 측정한다. 일부 예들에서, 디바이스(100)가 랩톱일 때, 가속도계(108)는 랩톱의 개방 및/또는 폐쇄 동안 덮개(예를 들어, 클램셸의 상부 덮개 및/또는 하부 덮개)의 가속도를 측정할 수 있다. 가속도는 중력 가속도(g)로 측정된다. 일부 예들에서, 가속기(108)에 의해 출력된 측정값들은 이벤트 및 상태 컨텍스트들을 결정하기 위해 추가 센서 측정값들과 함께 사용된다.
예시적인 센서들(104)은 디바이스(100)의 회전 및 각도 이동을 측정하기 위한 예시적인 자이로스코프(110)를 포함한다. 예를 들어, 자이로스코프(110)는 셀 폰 또는 랩톱의 기울기를 측정한다. 회전 및 각도 이동은 초당 각도(°/s) 또는 초당 라디안(RPS)으로 측정된다. 일부 예들에서, 자이로스코프(110)에 의해 출력된 측정값들은 상태 컨텍스트들을 결정하기 위해 추가 센서 측정값들과 함께 사용된다.
예시적인 센서들(104)은 디바이스(100) 근처의 물체들의 존재를 검출하기 위한 예시적인 근접 센서(112)를 포함한다. 예를 들어, 근접 센서(112)는 (예를 들어, 디바이스(100)를 사용하여) 사용자가 존재할 때, 디바이스(100)가 가방 안에 위치될 때 등을 검출할 수 있다. 근접은 밀리미터(mm) 단위의 거리에 대응하는 볼트(v)로 측정된다. 일부 예들에서, 근접 센서(112)에 의해 출력된 측정값들은 상태 및 이벤트 컨텍스트들을 결정하기 위해 추가 센서 측정값들과 함께 사용된다.
예시적인 센서들(104)은 디바이스(100)의 외부 환경의 광 품질 및 강도를 검출하기 위한 예시적인 주변 광 센서(114)를 포함한다. 예를 들어, 주변 광 센서(114)는 디바이스(100)가 배치된 위치의 밝기 또는 어두움(dimness)을 결정하기 위해 사용된다. 주변 광은 주변 광에 비례하는 볼트(v)로 측정된다. 일부 예들에서, 주변 광 센서(114)에 의해 출력된 측정값들은 이벤트 컨텍스트들을 결정하기 위해 추가 센서 측정값들과 함께 사용된다.
예시적인 센서들(104)은 Wi-Fi의 존재 및/또는 Wi-Fi 신호 강도에 대응하는 정보를 제공하기 위한 Wi-Fi 센서(116)를 포함한다. 예를 들어, Wi-Fi 센서(116)는 Wi-Fi가 디바이스(100)에 존재하는지를 나타내는 (예를 들어, 1들 및 0들과 같은) 이진 측정값들을 출력할 수 있다. 일부 예들에서, Wi-Fi 데이터는 디바이스(100)의 장래 사용의 확률에 기여할 수 있다. 예를 들어, 디바이스(100)가 처음에 Wi-Fi에 연결되지 않았지만, 다음으로, 초기에 약한(예를 들어, 연결이 약한) 특정 Wi-Fi 신호로 전환하는 것을 고려한다. 이러한 예에서, Wi-Fi 신호는 시간이 지남에 따라 강도가 증가할 수 있다. 이력 관찰은 사용자가 출근길에 기차, 버스, 자동차에 있는 사용자 루틴의 식별을 지원할 수 있다. 약한 Wi-Fi 신호는 사용자가 책상에 거의 도착했음을 나타낼 수 있다. 예시적인 Wi-Fi 센서(116)는 상태 컨텍스트들을 결정하기 위해 추가 센서 측정값들과 함께 사용될 수 있다.
예시적인 센서들(104)은 디바이스(100)의 환경의 외부 이미지들을 캡처하기 위한 예시적인 비전 센서(118)를 포함한다. 예를 들어, 비전 센서(118)는 카메라일 수 있다. 일부 예들에서, 비전 센서(118)는 디바이스(100) 근처의 물체들을 식별할 수 있다. 일부 예들에서, 비전 센서(118)에 의해 출력된 측정값들은 이벤트 및 상태 컨텍스트들을 결정하기 위해 추가 센서 측정값들과 함께 사용된다.
예시적인 센서들(104)은 디바이스(100) 주변의 물체들 및 움직임을 검출하기 위한 예시적인 레이더 센서(120)를 포함한다. 예를 들어, 레이더 센서(120)는 무선파를 사용하여 디바이스(100)에 대한 물체들의 크기, 위치 및 근접성을 결정한다. 물체 검출은 미터(m)로 측정된다. 일부 예들에서, 레이더 센서(120)에 의해 출력된 측정값들은 이벤트 컨텍스트들을 결정하기 위해 추가 센서 측정값들과 함께 사용된다.
예시적인 센서들(104)은 물체까지의 거리를 결정하기 위해 소나(sonar)를 사용하는 예시적인 초음파 센서(122)를 포함한다. 예를 들어, 초음파 센서(122)는 디바이스(100)로부터 사용자의 거리를 결정할 수 있다. 거리는 미터(m)로 측정된다. 일부 예들에서, 초음파 센서(122)에 의해 출력된 측정값들은 이벤트 컨텍스트들을 결정하기 위해 추가 센서 측정값들과 함께 사용된다.
도 1a에서, 예시적인 센서(104)는 예시적인 센서 허브(102)에 연결된다. 일부 예들에서, 센서(104)와 센서 허브(102) 사이의 연결은 유선으로 연결된다(hard-wired). 추가적으로 및/또는 대안적으로, 센서들(104)과 센서 허브(102) 사이의 연결은 무선이다. 예를 들어, 센서들(104)은 센서 허브(102)의 위치와 상이한 디바이스(100) 상의 다양한 위치들에 위치될 수 있고, 따라서 임의의 타입의 무선 통신을 통해 센서 허브(102)에 측정값들을 무선으로 출력할 수 있다.
도 1a에서, 예시적인 센서 허브(102)는 센서들(104)로부터 측정값들을 (예를 들어, 무선으로 또는 유선으로) 획득하고, 이벤트 및 상태 컨텍스트 결정을 수행하기 위해, 예시적인 디바이스 이벤트 컨트롤러(124) 및 예시적인 디바이스 상태 컨트롤러(126)를 포함한다.
예시적인 디바이스 상태 컨트롤러(126)는 센서들(104)의 측정값들에 기초하여 디바이스(100)의 상태 컨텍스트들을 결정한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 복수의 센서 타입의 센서들(104)로부터의 측정값들에 기초하여, 사용자 활동 데이터(144), 덮개 모드 데이터(146), 위치 데이터(148), 및 디바이스 움직임 데이터(150)를 결정한다. 사용자 활동 데이터(144), 덮개 모드 데이터(146), 위치 데이터(148) 및 디바이스 움직임 데이터(150)는 센서 허브(102)가 디바이스(100)를 활성화하려는 사용자 의도를 추론할 수 있게 하도록 결정된다.
예를 들어, 디바이스 상태 컨트롤러(126)는 가속도계(108)로부터 측정값들을 수집하고 분석함으로써 사용자 활동 데이터(144)를 결정한다. 사용자 활동 데이터(144)는 사용자가 (예를 들어, 근처에 있는 디바이스(100)를 갖고서) 무엇을 하고 있는지에 대응한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 사용자가 걷고 있는지, 달리고 있는지, 차량 내에 있는지, 자전거를 타고 있는지 등을 결정한다.
예시적인 디바이스 상태 컨트롤러(126)는 가속도계(108)로부터 측정값들을 수집하고 분석함으로써 덮개 모드 데이터(146)를 결정한다. 덮개 모드 데이터(146)는 디바이스(100)가 어떻게 자세를 취하는지에 대응한다. 예를 들어, 디바이스(100)가 클램셸(예를 들어, 랩톱)인 경우, 가속도계(108)는 덮개가 완전히 열려 있는 것, 완전히 닫혀 있는 것, 또는 부분적으로 열려 있는 것/부분적으로 닫혀 있는 것을 결정하기 위해 사용될 수 있다. 디바이스(100)가 태블릿인 경우, 디바이스 상태 컨트롤러(126)는 테이블의 상부 덮개가 위를 향하는 태블릿 모드와 같은 추가 덮개 모드들(146)을 결정할 수 있다.
예시적인 디바이스 상태 컨트롤러(126)는 Wi-Fi(116), 자이로스코프(110), 및 가속도계(108)로부터의 측정값들을 수집 및 분석함으로써 디바이스(100)의 위치 데이터(148)를 결정한다. 위치 데이터(148)는 디바이스(100) 및 디바이스(100)의 사용자의 위치에 대응한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 디바이스(100)가 집에 있는지, 직장에 걸어가고 있는지, 사무실에 있는지 등을 결정한다.
예시적인 디바이스 상태 컨트롤러(126)는 가속도계(108) 및 자이로스코프(110)로부터의 측정값들을 수집 및 분석함으로써 디바이스(100)의 디바이스 움직임 데이터(150)를 결정한다. 디바이스 움직임 데이터(150)는 디바이스(100)의 움직임 상태에 대응한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 디바이스가 정지해 있는지 또는 움직이고 있는지를 결정한다.
예시적인 디바이스 상태 컨트롤러(126)는 위에서 언급된 4개의 상태 컨텍스트를 결정하는 것으로 제한되지 않는다. 예를 들어, 디바이스 상태 컨트롤러(126)는 센서들(104) 중 임의의 것을 조작하여, 센서 허브(102)가 디바이스(100)의 사용자 의도를 추론할 수 있게 하고/하거나 보조하는 추가 상태 컨텍스트들을 결정할 수 있다. 예를 들어, 디바이스 상태 컨트롤러(126)는 디바이스(100)가 전형적으로 사용자에 의해 사용되는 시간 및 사용되지 않는 시간들(예를 들어, 날짜, 시간, 분, 초 등)을 결정할 수 있다. 도 1a의 예시적인 디바이스 상태 컨트롤러(126)는 결정하기 위한 수단을 구현할 수 있다. 결정 수단은 적어도 하나의 프로세서를 포함하는 하드웨어이다.
도 1a에서, 예시적인 디바이스 이벤트 컨트롤러(124)는 센서들(104)의 측정값들에 기초하여 디바이스(100)의 이벤트 컨텍스트들을 결정한다. 예를 들어, 디바이스 이벤트 컨트롤러(124)는 복수의 센서 타입의 센서들(104)로부터의 측정값들에 기초하여 배치 전환(152) 및 사용자 존재 전환(154)을 결정한다. 배치 전환(152) 및 사용자 존재 전환(154)은, 센서 허브(102)가 웨이크 트리거의 가능한 오버라이드를 위해 사용자에 의해 취해진 임의의 즉각적인 액션들에 액세스할 수 있게 하도록 결정된다.
예시적인 디바이스 이벤트 컨트롤러(124)는 가속도계(108), 근접 센서(112), 및 주변 광 센서(114)로부터의 센서 측정값들을 수집하고 분석하는 것에 기초하여 디바이스(100)의 배치 전환(152)을 결정한다. 배치 전환(152)은 디바이스(100)의 위치들 사이의 전환에 대응한다. 예를 들어, 디바이스 이벤트 컨트롤러(124)는 디바이스(100)가 밀폐된 영역(예를 들어, 가방)으로부터 개방된 영역(예를 들어, 책상 위)으로 이동될 때 배치 전환(152)의 개시, 업데이트 등을 할 수 있다. 일부 예들에서, 배치 전환(152)은 언제 가방이 위치들 사이에서 전환되는지, 및 어떤 타입의 전환이 발생했는지를 스케줄 컨트롤러(138)에 알리는 데이터이다. 일부 예들에서, 디바이스 이벤트 컨트롤러(152)는 배치 전환(152)이 스케줄 컨트롤러(138)에 제공되어야 할 때를 제어한다. 예를 들어, 디바이스 이벤트 컨트롤러(152)는 배치 전환에 대응하는 플래그들, 표시자들 등을 설정할 수 있고, 이들은 센서 측정값들이 배치 전환을 나타낼 때 업데이트되어야 한다.
예시적인 디바이스 이벤트 컨트롤러(124)는 근접 센서(112), 주변 광 센서(114), 비전 센서(118), 레이더 센서(120), 및/또는 초음파 센서(122)로부터의 센서 측정값들을 수집하고 분석하는 것에 기초하여 사용자 존재 전환(154)을 결정한다. 사용자 존재 전환(154)은 사용자가 디바이스(100)에 가까운 위치와 디바이스(100)로부터 먼 위치 사이에서 전환했는지에 대응한다. 예를 들어, 디바이스(100)와 사용자 사이의 임계 거리는 사용자가 디바이스(100) 근처에 있는지를 정의할 수 있다. 임계 거리는 팔의 길이, 센서들(104)(예를 들어, 근접(112), 레이더 센서(120), 및/또는 초음파 센서(122))이 사용자를 검출할 수 있는 범위 등에 대응할 수 있다. 일부 예들에서, 디바이스 이벤트 컨트롤러(124)는 사용자 존재 전환(154)에 대응하는 플래그들, 표시자들 등을 포함하며, 이들은 센서 측정값들이 사용자가 현재 존재하고 있음, 최근에 디바이스(100)로부터 멀리 이동됨 등을 나타내는 때를 업데이트한다. 도 1a의 예시적인 디바이스 이벤트 컨트롤러(124)는 결정하기 위한 수단을 구현할 수 있다. 결정 수단은 적어도 하나의 프로세서를 포함하는 하드웨어이다.
도 1a에서, 예시적인 센서 허브(102)는 디바이스 이벤트 컨트롤러(124), 디바이스 상태 컨트롤러(126), 버퍼(128), 타이머(130), 연관기(132), 훈련 컨트롤러(134), 예측 컨트롤러(136), 스케줄 컨트롤러(138), 웨이크 타이머(140) 및 대기 관리 시스템(142) 사이의 흐름 라인들을 도시한다. 실선 흐름 라인들은 센서 허브(102)에서 발생하는 학습 페이즈를 나타낸다. 예를 들어, 버퍼(128), 타이머(130), 연관기(132) 및 훈련 컨트롤러(134)에 의해 수행되는 동작들은 예측 모델을 훈련하기 위해 학습 및/또는 훈련 페이즈에서 발생한다. 점선 흐름 라인들은 센서 허브(102)에서 발생하는 추론 페이즈를 나타낸다. 예를 들어, 예측 컨트롤러(136), 스케줄 컨트롤러(138) 및 웨이크 타이머(140)에 의해 수행되는 동작은 추론 및/또는 예측 페이즈에서 발생한다.
도 1a에서, 예시적인 센서 허브(102)는 디바이스 상태 컨트롤러(126)에 의해 생성된 상태 컨텍스트를 저장하기 위한 예시적인 버퍼(128)를 포함한다. 예를 들어, 버퍼(128)는 사용자 활동 데이터(144), 덮개 모드 데이터(146), 위치 데이터(148), 디바이스 움직임 데이터(150) 등을 저장한다. 일부 예들에서, 버퍼(128)는 디바이스 상태 컨트롤러(126)가 업데이트된 컨텍스트들을 결정할 때 업데이트된 상태 컨텍스트들을 획득한다. 일부 예들에서, 버퍼(128)는 복수의 래치, 캐시, 및/또는 임의의 다른 타입의 임시 저장 디바이스에 의해 구현된다. 일부 예들에서, 버퍼(128)는 이력 상태 컨텍스트들을 저장한다. 예를 들어, 상태 컨텍스트들은 디바이스(100)의 이전/과거 상태들에 대응할 때 이력으로 고려된다. 도 1a의 예시적인 버퍼(128)는 저장하기 위한 수단을 구현할 수 있다. 저장 수단은 적어도 하나의 프로세서를 포함하는 하드웨어이다.
도 1a에서, 예시적인 센서 허브(102)는 예시적인 버퍼(128)에게, 상태 컨텍스트들을 릴리즈하고/거나 예시적인 연관기(132)에 제공할 것을 알리는 예시적인 타이머(130)를 포함한다. 예를 들어, 타이머(130)는 버퍼(128)가 상태 컨텍스트를 획득하는 것과 연관기(132)가 상태 컨텍스트를 획득하는 것 사이의 기간을 지연시킨다. 이러한 예에서, 상태 컨텍스트들은 그들이 연관된 시간들보다 나중의 시간에 검색될 때 이력으로 고려될 수 있다. 예를 들어, 상태 컨텍스트들은 그들이 발생한 시간 및 요일에 연관된다(예를 들어, 사용자 활동 데이터(144)는 디바이스(100)의 사용자가 월요일 아침에 오전 6시에 자전거를 타고 있었다는 것을 나타냄). 예시적인 타이머(130)는 지연(예를 들어, 미리 결정된 시간) 임계값이 충족될 때, 예시적인 버퍼(128)에게 상태 컨텍스트들 및 그들의 연관된 시간들을 연관기(132)에 송신할 것을 알린다.
도 1a에서, 예시적인 센서 허브(102)는 상태 컨텍스트들을 OS 상태와 연관 및/또는 상관시키기 위한 예시적인 연관기(132)를 포함한다. 예시적인 연관기(132)는 예시적인 버퍼(128)로부터 상태 컨텍스트들을 제공받고/거나 획득하고, 예시적인 대기 관리 시스템(142)으로부터 OS 상태를 획득할 수 있다. 예시적인 연관기(132)는 시간 프레임에 걸쳐 히스토그램들을 생성함으로써 상태 컨텍스트들과 OS 상태를 상관시킨다. 예를 들어, 연관기(132)는 24시간, 1주 등의 기간에 걸쳐 디바이스(100)의 상태 컨텍스트들 및 OS 상태를 수집하고 연관시킨다. 하나 이상의 히스토그램의 예가 도 1b에 도시되어 있다.
도 1b를 보면, 예시적인 연관기(132)에 의해 생성된 예시적인 히스토그램들이 도시된다. 히스토그램들은 시간 프레임(예를 들어, 24시간, 1주 등)에 걸쳐 조건부 컨텍스트들(예를 들어, 상태 컨텍스트들) 및 OS 상태들의 분포, 및 둘 간의 연관(예를 들어, 조건부 OS 상태)을 반영하도록 생성될 수 있다. 도 1b의 예는 예시적인 상태 컨텍스트 히스토그램(160), 예시적인 OS 상태 히스토그램(162), 및 예시적인 연관 히스토그램(164)을 포함한다.
예시적인 연관기(132)는 기간(예를 들어, 24시간)에 걸쳐 수집된 임의의 수의 상태 컨텍스트를 나타내기 위해 예시적인 상태 컨텍스트 히스토그램(160)을 생성한다. 예를 들어, x축은 상태 컨텍스트들이 수집되는 시간 간격들(예를 들어, 분, 시간 등)을 도시한다. 일부 예들에서, x축은 상태 컨텍스트들이 디바이스 상태 컨트롤러(126)에 의해 수집되는 시간 t의 반복들을 도시한다. 예를 들어, 상태 컨텍스트 히스토그램(160)의 x축에 의해 도시되는 바와 같이, 디바이스 상태 컨트롤러(126)는 시간 t, t+1, t+2, t+3, t+4 및 t+n에서 상태 컨텍스트 데이터를 수집하고, 여기서 n은 장래 시간 빈을 나타낸다. 예시적인 상태 컨텍스트 히스토그램(160)에서, y축은 상태 컨텍스트 분포 데이터의 빈도를 나타낸다. 예를 들어, 각각의 빈도 레벨은 한 타입의 상태 컨텍스트 데이터의 상태의 발생 횟수에 대응한다(예를 들어, 상태 컨텍스트 데이터의 타입은 사용자 활동 데이터(144)이고, 상태는 걷고 있는 것이고, 특정 시간 빈에 걸쳐서 사용자가 걷고 있는 것의 발생 횟수는 10회임). 일부 예들에서, 연관기(132)는 상태 컨텍스트 데이터의 각각의 타입(예를 들어, 사용자 활동 데이터(144), 덮개 모드 데이터(146), 위치 데이터(148), 디바이스 움직임 데이터(150), 및/또는 디바이스 상태 컨트롤러(126)에 의해 결정되는 임의의 다른 타입의 상태 데이터)을 나타내기 위해 다수의 상태 컨텍스트 히스토그램(160)을 생성한다. 일부 예들에서, 연관기(132)는 매 기간(예를 들어, 24시간)마다 상태 컨텍스트 히스토그램(160)을 업데이트(예를 들어, 조절)하고/거나 매 기간(예를 들어, 24시간)마다 새로운 상태 컨텍스트 히스토그램(160)을 생성한다.
예시적인 연관기(132)는 기간(예를 들어, 24시간)에 걸쳐 수집된 운영 체제의 상태를 나타내기 위해 예시적인 OS 상태 히스토그램(histosstate)(162)을 생성한다. 예시적인 OS 상태 히스토그램은 OS 상태 분포를 나타내며, 여기서 y축은 수집된 각각의 OS 상태의 빈도(예를 들어, OS 상태가 활성 및/또는 비활성 상태인 발생 횟수)를 도시하고, x축은 OS 상태들이 수집되는 시간 간격(예를 들어, 분, 시간 등)을 도시한다. 예를 들어, OS 상태 히스토그램(162)의 y축은 OS 상태들의 빈도 레벨을 도시하고, 여기서 빈도 레벨은 운영 체제의 상태의 발생 횟수에 대응할 수 있다(예를 들어, 상태가 활성이고, 특정 시간 빈에 걸쳐 OS가 활성인 발생 횟수는 15회임). 일부 예들에서, x축은 OS 상태들이 연관기(132)에 의해 수집되는 시간 t+Tp의 반복들을 도시한다. 예를 들어, OS 상태 히스토그램(162)의 x축에 의해 도시되는 바와 같이, 디바이스 상태 컨트롤러(126)는 시간 t+Tp, (t+1)+Tp, (t+2)+Tp, (t+3)+Tp, (t+4)+Tp 및 (t+n)+Tp에서 상태 컨텍스트 데이터를 수집하고, 여기서 n은 장래 시간 빈을 나타낸다. 시간 빈 폭은 주로 응답성과 메모리 리소스 간의 균형인, 예측들의 시간 입도(time granularity)를 결정한다. 일부 예들에서, 연관기(132)는 매 기간(예를 들어, 24시간)마다 OS 상태 히스토그램(162)을 업데이트(예를 들어, 조절)하고/거나 매 기간(예를 들어, 24시간)마다 새로운 OS 상태 히스토그램(162)을 생성한다.
예시적인 연관기(132)는 기간에 걸친 상태 컨텍스트 데이터와 OS 상태들 간의 연관을 나타내기 위해 예시적인 연관 히스토그램(164)을 생성한다. 예를 들어, 연관기(132)는 상태 컨텍스트 히스토그램(160)과 OS 상태 히스토그램(162)을 조합하여 연관 히스토그램(164)을 생성한다. 예시적인 연관 히스토그램(164)은 OS 상태들(예를 들어, 예를 들어, 활성 및 비활성)에 대한 상태 컨텍스트 데이터(예를 들어, 사용자 활동 데이터(144))의 조건부 분포를 나타내고, 여기서 y축은 각각의 OS 상태 하에서 각각의 시간 간격(예를 들어, 분, 시간 등)에 속하는 사용자 활동 데이터(144)의 각각의 상태의 발생들의 빈도를 나타내고, x축은 상태 컨텍스트들 및 OS 상태들이 수집되고 연관되는(예를 들어, 상관되는, 관련되는, 연계되는, 연결되는 등) 시간 간격들(예를 들어, 분, 시간 등)을 도시한다. 예를 들어, y축은 사용자 활동 데이터(144) 및 OS 상태를 나타내는 다수의 빈도 포인트를 포함할 수 있다(예를 들어, 시간 t에서 걷고 있고 시간 t+Tp에서 비활성임, 시간 t+2에서 앉아 있고 시간(t+2)+Tp에서 활성임, 시간 t+4에서 차량에 탑승해 있고 시간 (t+4)+Tp에서 비활성임, 시간 t+n에서 자전거를 타고 있고 시간 (t+n)+Tp에서 비활성임 등). 예시적인 연관기(132)는 각각의 상태 컨텍스트 타입(예를 들어, 덮개 모드 데이터(146) 대 OS 상태, 위치 데이터(148) 대 OS 상태, 디바이스 움직임 데이터(150) 대 OS 상태 등)에 대한 연관 히스토그램들(164)을 생성할 수 있다. 예를 들어, histactivity -vs- osstate는 시간 t+Tp에서의 OS 상태에 의해 조건이 정해진 시간 t에서의 사용자 활동 데이터(144)의 조건부 분포를 나타내는 연관 히스토그램(164)이다. 또 다른 예에서, 시간 histlidmode -vs- osstate는 시간 t+Tp에서의 OS 상태들에 의해 조건이 정해진 시간 t에서의 덮개 모드 데이터(146) 상태들의 조건부 분포를 나타내는 연관 히스토그램(164)이다. 추가적으로 및/또는 대안적으로, 연관기(132)는 시간 프레임(예를 들어, 하루, 일주일, 월, 년 등)에 걸쳐 상태 컨텍스트들 및 대응하는 OS 상태들의 조합을 나타내기 위해 단일 연관 히스토그램(164)을 생성할 수 있다. 일부 예들에서, 연관기(132)는 평일(예를 들어, 월요일-금요일)에 대응하는 연관 히스토그램들(164) 및 주말(예를 들어, 토요일-일요일)에 대응하는 연관 히스토그램들(164)을 생성할 수 있다. 예를 들어, 근무 스케줄, 여가시간, 취미생활 등으로 인해, 주중과 주말에는 사용자의 거동이 상이할 수 있다.
도 1a의 예시적인 연관기(132)는 연관을 위한 수단을 구현할 수 있다. 연관 수단은 적어도 하나의 프로세서를 포함하는 하드웨어이다.
도 1a의 예를 보면, 예시적인 센서 허브(102)는 예시적인 디바이스(100)의 사용자를 위해 개인화된 예측 모델을 점진적으로 학습하고 구축하기 위한 예시적인 훈련 컨트롤러(134)를 포함한다. 예시적인 훈련 컨트롤러(134)는 예시적인 연관기(132)로부터 정보를 획득하고, 일별, 주별, 월별 및/또는 연간 사용자 거동 패턴들을 식별한다. 예를 들어, 훈련 컨트롤러(134)는 이전에 연관된 상태 컨텍스트들 및 OS 상태들과 같은 사용자 거동에 기초하여 OS 상태의 장래 상태를 식별한다. 예시적인 훈련 컨트롤러(134)는 결정된 및/또는 식별된 사용자 거동 패턴들에 기초하여 예측 모델을 생성한다. 생성되고 나면, 예시적인 훈련 컨트롤러(134)는 예측 모델을 발행한다. 이러한 방식으로, 추론 페이즈의 예시적인 예측 컨트롤러(136)는 장래의 실시간 예측들을 위해 예측 모델에 액세스하고 이를 이용할 수 있다. 예시적인 훈련 컨트롤러(134)는 도 2와 관련하여 아래에서 더 상세히 설명된다. 도 1a의 예시적인 훈련 컨트롤러(134)는 생성하기 위한 수단을 구현할 수 있다. 생성 수단은 적어도 하나의 프로세서를 포함하는 하드웨어이다.
도 1a에서, 예시적인 센서 허브(102)는 사용자가 장래 시간에 디바이스(100)를 사용할 확률을 예측(예를 들어, 추정)하기 위한 예시적인 예측 컨트롤러(136)를 포함한다. 예를 들어, 예측 컨트롤러(136)는 디바이스 상태 컨트롤러(126) 및 발행된 예측 모델로부터의 정보에 기초하여 OS 상태가 활성일 때를 결정한다. 예시적인 예측 컨트롤러(136)는 실시간으로 동작하는데, 이는 예측 컨트롤러(136)가 디바이스 상태 컨트롤러(126)로부터 현재(예를 들어, 최신) 상태 컨텍스트들을 획득하고 그 컨텍스트들에 기초하여 OS 상태를 예측함을 의미한다. 일부 예들에서, 예측 컨트롤러(136)의 출력은 사용자가 시간 t에서 OS를 활성화할 것임, 일정 기간 동안 OS 상태를 활성화하지 않을 것임 등의 표시 및/또는 알림이다. 예시적인 예측 컨트롤러(136)의 출력은 예시적인 스케줄 컨트롤러(138)에 제공된다. 예시적인 예측 컨트롤러(136)는 도 3과 관련하여 아래에서 더 상세히 설명된다. 도 1a의 예시적인 예측 컨트롤러(136)는 생성하기 위한 수단을 구현할 수 있다. 생성 수단은 적어도 하나의 프로세서를 포함하는 하드웨어이다.
도 1a에서, 예시적인 센서 허브(102)는 예측 컨트롤러(136)의 출력 및 예시적인 디바이스 이벤트 컨트롤러(124)로부터의 이벤트 컨텍스트들에 기초하여 동적 웨이크 기간(예를 들어, 대기 관리 시스템(142)이 호스트(106)의 하드웨어 및 소프트웨어 컴포넌트들에 전력을 제공하는(예를 들어, 활성화하는) 시간)을 결정하기 위한 예시적인 스케줄 컨트롤러(138)를 포함한다. 일부 예들에서, 스케줄 컨트롤러(138)는 디바이스(100)가 활성으로 되기 전에 웨이크 이벤트를 개시하여 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 함으로써 디바이스(100)의 전력 소비를 감소시킨다. 예를 들어, 웨이크 이벤트는 대기 관리 시스템(142)으로 하여금 가능한 한 적은 전력을 소비하면서 디바이스를 업데이트하게 하여, 호스트(106)를 슬립 상태(예를 들어, 비활성 상태)로부터 완전히 부팅(예를 들어, 활성화)하는 데 요구되는 최소 전력을 용이하게 한다. 동적 웨이크 기간(Tw)은 사용자가 디바이스(100)를 사용할 우도(likelihood)와 이벤트 컨텍스트들의 조합에 기초하여 결정된다. 웨이크 기간 Tw는 디바이스(100)의 외부 환경에 기초하여 변경될 수 있기 때문에 동적이다. 예시적인 스케줄 컨트롤러(138)는 OS 상태들에 상관될 수 있는 디바이스(100)의 임의의 즉각적인 전환들을 결정하기 위해 이벤트 컨텍스트들을 고려한다. 예를 들어, 디바이스(100)가 가방으로부터 제거되었음을 나타내는 배치 전환(152)은 OS 상태가 활성화될 가능성이 있음을 스케줄 컨트롤러(138)에 알려준다. 일부 예들에서, 스케줄 컨트롤러(138)는 이벤트 컨텍스트들에 기초하여 예측 컨트롤러(136)의 출력을 오버라이드한다. 예를 들어, 예측 컨트롤러(136)는 디바이스(100)가 다음 10분 동안 활성화되지 않을 것이라는 표시를 출력하지만, 디바이스 이벤트 컨트롤러(124)는 사용자가 디바이스(100)에 막 접근했다고 결정한다. 이러한 예에서, 스케줄 컨트롤러(138)는 이벤트 컨텍스트로 인해, 10분을 기다리지 않고 즉시 발생하도록 웨이크 기간을 스케줄링한다.
도 1a에서, 예시적인 센서 허브(102)는 웨이크 기간 Tw에 기초하여 웨이크 이벤트를 트리거하기 위한 예시적인 웨이크 타이머(140)를 포함한다. 본 명세서에서 사용될 때, 웨이크 이벤트는 대기 관리 시스템(142)으로 하여금 호스트(106)의 슬립 상태(예를 들어, 비활성, 유휴 등)를 작동 상태로 전환하게 하는 이벤트이다. 예시적인 웨이크 타이머(140)는 호스트(106)가 깨어나야 하는 시간을 지정하는 대기가능한 타이머 객체일 수 있다. 대기가능한 타이머 객체는 지정된 시간(예를 들어, 웨이크 기간 Tw)이 도래하면 상태가 "시그널링됨"으로 설정되는 동기화 객체이다. 예를 들어, 웨이크 타이머(140)는 스케줄 컨트롤러(138)로부터 "적기 시간(due time)"(예를 들어, 웨이크 기간 Tw)을 제공받는 수동 리셋, 동기화 또는 주기적 타이머이다. 웨이크 타이머(140)는 웨이크 기간 Tw가 만료될 때 대기 동작을 완료한다(예를 들어, 대기 조건이 충족되고 나면 트리거를 송신함). 타이머가 시그널링될 때, 호스트(106)(예를 들어, 프로세서)는 연관된 명령어들을 프로세싱하기 위해 실행되어야만 한다.
도 1a에서, 예시적인 센서 허브(102)는 예시적인 웨이크 타이머(140)가 웨이크 이벤트를 트리거할 때 OS 및/또는 더 일반적으로 예시적인 호스트(106)를 비활성 상태로부터 활성 상태로 전환하기 위한 예시적인 대기 관리 시스템(142)을 포함한다. 예시적인 대기 관리 시스템(142)은 예시적인 웨이크 타이머(140)에 의해 개시된다. 예시적인 대기 관리 시스템(142)은 (수신된 이메일들을 동기화하기 위해) 이메일 애플리케이션들, (이벤트들을 업데이트하기 위해) 캘린더 애플리케이션들, (OS에 대한 업데이트들을 동기화하기 위해) 스캐너들 등과 같은 호스트(106)의 특정 애플리케이션들을 "깨우는" 동작들을 포함한다. 이러한 방식으로, 사용자는 즉시 사용을 위해 대비된 디바이스(100)를 제공받는다. 예시적인 대기 관리 시스템(142)은 센서 허브(102) 및 예시적인 호스트(106)에 통신가능하게 연결된다.
예시적인 센서 허브(102)의 예시적인 훈련 동작이 아래에서 설명된다. 예시적인 센서들(104)은 예시적인 디바이스(100)의 외부 환경을 모니터링한다. 예시적인 센서들(104)은 디바이스(100)의 외부 환경을 모니터링한 결과들에 기초하여 측정값들을 수집하고 결정한다. 예시적인 센서들(104)은 예시적인 디바이스 이벤트 컨트롤러(124) 및 예시적인 디바이스 상태 컨트롤러(126)에 센서 측정값들을 제공한다. 예시적인 디바이스 상태 컨트롤러(126)는 사용자 활동 데이터(144), 덮개 모드 데이터(146), 위치 데이터(148), 및 디바이스 움직임 데이터(150)의 상태를 결정한다.
예를 들어, 디바이스 상태 컨트롤러(126)는 예시적인 가속도계(108)로부터의 측정값들에 기초하여 사용자가 걷고 있는지, 달리고 있는지, 차량을 통해 움직이는지, 자전거를 타고 있는지 등(예를 들어, 사용자 활동 데이터(144))을 결정한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 가속도계 데이터(예를 들어, 예시적인 가속도계(108)로부터 추출되고 센서 허브(102)의 메모리에 저장된 데이터)로부터 추출된 시간 및 주파수 도메인 피쳐들을 사용하여 분류 문제를 해결하는 것에 기초하여 사용자 활동 데이터(144)를 결정하기 위해 활동 인식을 이용할 수 있다. 예시적인 디바이스 상태 컨트롤러(126)는 예시적인 가속도계(108)로부터의 측정값들에 기초하여 디바이스(100)의 덮개가 열려 있는지, 닫혀 있는지, 클램셸인지 등(예를 들어, 덮개 모드 데이터(146))을 결정한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 디바이스(100)가 랩톱 또는 태블릿인 경우, 힌지 각도의 결정에 기초하여 덮개 모드 데이터(146)를 검출할 수 있다. 예를 들어, 디바이스 상태 컨트롤러(126)는 힌지 각도를 결정하기 위해 덮개의 각각의 패널에 배치된 2개의 가속도계로부터 가속도계 데이터를 추출할 수 있다.
예시적인 디바이스 상태 컨트롤러(126)는 예시적인 Wi-Fi(116), 예시적인 자이로스코프(110), 및/또는 글로벌 포지셔닝 시스템(GPS)(도시되지 않음)으로부터의 측정값들에 기초하여, 디바이스(100)가 가정에 있는지, 사무실에 있는지, 도로 상에 있는지 등(예를 들어, 위치 데이터(148))을 결정한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 GPS가 부정확한 측정값들을 생성하고 있을 때 보행자 추측 항법(Pedestrian Dead Reckoning)(PDR)을 구현할 수 있다. 예를 들어, PDR은 디바이스(100)의 현재 위치를 결정하기 위해 경과된 시간에 대한 속도 및 코스의 추정을 사용한다. 예시적인 디바이스 상태 컨트롤러(126)는 가속도계(108)로부터의 측정값들에 기초하여 디바이스(100)가 정지해 있는지, 움직이고 있는지 등(예를 들어, 디바이스 움직임 데이터(150))을 결정한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 가속도계 데이터로부터 추출된 움직임 강도를 모니터링함으로써 디바이스 움직임 상태를 검출할 수 있다.
예시적인 디바이스 상태 컨트롤러(126)는 상태 컨텍스트들의 상태들을 예시적인 버퍼(128)에 출력한다. 예시적인 버퍼(128)는 상태 컨텍스트들을 대응하는 타임 스탬프들과 함께 저장한다. 예를 들어, 버퍼(128)는 상태 컨텍스트들을 타임스탬프 t와 함께 저장한다. 타임스탬프 t는 상태 컨텍스트가 발생하는 시간(예를 들어, 센서들(104)이 상태 컨텍스트들에 대응하는 측정값들을 수집한 시간)에 대응한다. 예시적인 버퍼(128)는 일정 기간(예를 들어, 임계 기간, 미리 결정된 기간 등) 동안 상태 컨텍스트들을 저장한다. 예시적인 타이머(130)는 버퍼(128)가 시간 t의 상태 컨텍스트들을 저장하는 기간을 결정한다. 예를 들어, 타이머(130)는 지연으로서 작용하여, 버퍼(128)가 상태 컨텍스트들을 축출(evicting)하는 것을 지연시킨다. 지연의 길이(예를 들어, 버퍼(128)가 상태 컨텍스트들을 저장하는 기간)는 사용자 액션과 OS 상태가 활성화되는 시간 사이의 최대 예측가능한 시간(Tp)에 의해 결정된다. 최대 예측가능한 시간 Tp는 예측 효율성(예를 들어, 디바이스(100)를 대비시키고 준비하는 효율적인 시간)과 연관의 유효성 간의 균형에 기초하여 결정된다. 연관의 유효성은 상태 컨텍스트와 OS 상태의 관련성에 관련이 있다. 예를 들어, 상태 컨텍스트들은 단기간에 발생하는 OS 상태들에 더 관련이 있다(예를 들어, 더 많이 상관됨).
시간 t 이후의 기간이 충족되면, 예시적인 버퍼(128)는 예시적인 연관기(132)에 상태 컨텍스트들을 제공한다. 예를 들어, 버퍼(128)는 시간 t+Tp에서 상태 컨텍스트들을 연관기(132)에 제공한다. 상태 컨텍스트들을 획득하는 것에 응답하여, 예시적인 연관기(132)는 OS 상태에 대해 예시적인 대기 관리 시스템(142)에 질의한다. 예를 들어, 연관기(132)는 시간 t+Tp에서 호스트(106)의 OS 상태에 대해 예시적인 대기 관리 시스템(142)에 질의한다. 대안적인 예에서, 예시적인 버퍼(128)는 시간 t에서 상태 컨텍스트들을 획득한 직후에 상태 컨텍스트들을 축출하고 그것들을 예시적인 연관기(132)에 할당한다. 이러한 예에서, 타이머(130)는 연관기(132)가 상태 컨텍스트들을 획득할 때 개시되고, 연관기(132)가 대기 관리 시스템(142)에 질의하는 것을 최대 예측가능한 시간(Tp) 동안 지연시킨다. 예를 들어, 연관기(132)는 시간 t에서 상태 컨텍스트들을 획득하고, 대기 관리 시스템(142)으로부터 OS 상태를 검색하기 위해 최대 예측가능한 기간 Tp를 기다린다.
예시적인 연관기(132)는 상태 컨텍스트들을 OS 상태와 연관시킨다. 예를 들어, 연관기(132)는 상태 컨텍스트들 각각 및/또는 조합을 상태 컨텍스트들 이후 최대 예측가능한 시간 Tp에서 발생한 OS 상태와 상관시킨다.
일부 예들에서, 연관기(132)는 메모리에 상관들을 저장하여, 하나 이상의 히스토그램(예를 들어, 상태 컨텍스트 히스토그램(들)(160), OS 상태 히스토그램(들)(162), 및/또는 연관 히스토그램(들)(164))을 생성한다. 예를 들어, 메모리는 사용자 거동 패턴 기간(예를 들어, 1일, 1주 등)에 걸쳐 연관기(132)에 의해 결정된 상관관계들을 저장한다. 예시적인 연관기(132)는 상태 컨텍스트 히스토그램(160), OS 상태 히스토그램(162) 및 연관 히스토그램(164)을 생성한다. 예를 들어, 연관기(132)는 사용자 거동 패턴 기간에 걸친 사용자 활동 데이터(144) 및 OS 상태들의 빈도에 대응하는 연관 히스토그램(164), 사용자 거동 패턴 기간에 걸친 덮개 모드 데이터(146) 및 OS 상태들의 빈도에 대응하는 연관 히스토그램(164), 사용자 거동 패턴 기간에 걸친 위치 데이터(148) 및 OS 상태들의 빈도에 대응하는 연관 히스토그램(164), 사용자 거동 패턴 기간에 걸친 디바이스 움직임 데이터(150) 및 OS 상태들의 빈도에 대응하는 연관 히스토그램(164), 및/또는 사용자 거동 패턴 기간에 걸친 상태 컨텍스트들의 조합 및 OS 상태들에 대응하는 연관 히스토그램(164)을 생성한다.
일부 예들에서, 연관기(132)는 복수의 사용자 거동 패턴 기간에 대응하는 히스토그램들을 구축 및/또는 생성한다. 예를 들어, 제1 사용자 거동 패턴 기간은 주중 근무일인 월요일-금요일에 대응할 수 있는 한편, 제2 사용자 거동 패턴 기간은 주말인 토요일-일요일에 대응할 수 있다. 사용자가 일주일 동안 상이한 루틴들을 가질 수 있기 때문에 제1 및 제2 사용자 거동 패턴 기간은 상이할 수 있다. 따라서, 예시적인 훈련 컨트롤러(134)에는 사용자의 거동의 정확한 표현들이 제공되고, 사용자의 거동의 정확한 표현들을 포함하도록 상이한 기간들에 대한 상이한 히스토그램들을 생성하는 것이 유익하다.
예시적인 훈련 컨트롤러(134)는 예시적인 연관기(132)로부터 연관들 및/또는 히스토그램들을 획득하고, 확률들을 예측하도록 예측 모델을 훈련한다. 예를 들어, 훈련 컨트롤러(134)는 사용자가 시간 t+Tp에서 디바이스(100)를 사용할 것인지, 및/또는 주어진 현재 상태 컨텍스트들에서 사용자가 시간 t+Tp에서 디바이스(100)를 사용할 것인지를 예측하도록 예측 모델을 훈련한다. 일부 예들에서, 훈련 컨트롤러(134)는 확률들의 우도들을 출력하도록 예측 모델을 훈련하는 것이다. 예를 들어, 훈련 컨트롤러(134)는 시간 t+Tp 에서 OS 상태가 주어지면 시간 t에서 상태 컨텍스트를 관찰할 우도를 출력한다. 예를 들어, 예측 모델은 시간 t+Tp에서 OS 상태가 비활성과 동일할 때 사용자 활동 데이터(144)가 "자전거 타기"와 동일할 우도를 결정한다. 예시적인 훈련 컨트롤러(134)의 동작은 도 2와 관련하여 아래에서 더 상세히 설명된다.
예시적인 훈련 컨트롤러(134)가 예측 모델에 의해 생성된 허용가능한 양의 오차가 충족된다고 결정한 경우, 예시적인 훈련 컨트롤러(134)는 예측 모델을 발행한다. 일부 예들에서, 훈련 컨트롤러(134)는 사용자의 거동에 관한 새로운 정보(예를 들어, 상태 컨텍스트들, 업데이트된 히스토그램들 등)가 수신될 때 모델을 주기적으로 업데이트하고 재발행한다. 일부 예들에서, 훈련 동작은 허용가능한 양의 오류가 충족될 때 종료된다.
도 2를 보면, 예측 모델을 생성하기 위해 도 1a의 예시적인 훈련 컨트롤러(134)의 블록도가 도시된다. 예시적인 훈련 컨트롤러(134)는 예시적인 피쳐 추출기(202), 예시적인 모델 훈련기(204), 예시적인 모델 업데이터(206), 및 예시적인 모델 생성기(208)를 포함한다.
도 2에서, 예시적인 훈련 컨트롤러(134)는 예시적인 연관기(132)로부터 연관 데이터를 검색하기 위한 질의에 기초하여 피쳐 벡터를 생성하기 위한 피쳐 추출기(202)를 포함한다. 예시적인 피쳐 추출기(202)는 훈련 컨트롤러(134)의 훈련 페이즈를 용이하게 하기 위해 중복되지 않고 정보를 제공하는 피쳐 벡터들(예를 들어, 히스토그램들(160, 162, 164) 내의 피쳐들을 표현함)의 도출된 값들을 생성하거나 달리 구축한다. 여기에서 사용될 때, 피쳐 벡터는 일부 상태 컨텍스트, 디바이스 상태, 측정 파라미터, 시간 등을 나타내는 피쳐들의 n차원 어레이(예를 들어, 벡터)이다. 예를 들어, 피쳐는 사용자 활동 데이터(144), 덮개 모드 데이터(146), 위치 데이터(148), 디바이스 움직임 데이터(150) 등과 같은 디바이스(100)의 상태 컨텍스트일 수 있다. 예시적인 피쳐 추출기(202)는 충분한 완전성 및 정확성을 갖고서 원래의 입력 데이터를 기술하면서, 입력 데이터(예를 들어, 연관기(132)로부터의 히스토그램들(160, 162, 164))를 프로세싱을 위해 더 관리하기 쉬운 그룹들(예를 들어, 피쳐들)로 감소시킨다. 도 2의 도시된 예에서, 피쳐 추출기(202)는 사용자 거동 패턴에 대응하는 히스토그램 데이터 내의 피쳐들을 식별한다. 피쳐 추출기(202)에 의해 제공되는 피쳐 데이터는 모델 훈련기(204)가 이전 사용자 거동에 기초하여 디바이스(100)의 장래 OS 상태를 검출하도록 모델을 훈련하는 것을 용이하게 한다. 예를 들어, 도 1a의 연관기(132)는 24시간의 기간 전체에 걸친 디바이스(100)의 OS 상태들 및 상태 컨텍스트들에 기초하여 사용자 거동 패턴을 검출한다. 예시적인 피쳐 추출기(202)는 사용자 거동 패턴들의 조건 벡터들을 추출하고, 모델 훈련기(404)에 조건 벡터들을 제공한다. 조건 벡터는 OS 상태가 장래 시간에 비활성과 활성 사이에서 전환하게 하는 특정 조건들을 나타낼 수 있다. 예를 들어, 조건 벡터는 사용자가 앉아 있고 디바이스(100)의 덮개가 열려 있을 때 OS 상태가 활성임을 나타낼 수 있다. 다른 예들에서, 조건 벡터는 사용자가 사무실에 위치해 있고 시간이 오후 12시이면, OS 상태가 30분 내에 활성일 것임을 나타낼 수 있다. 조건 벡터는 이벤트 컨텍스트와 같은 디바이스 전환의 즉각적인 표시가 아니다. 예를 들어, 조건 벡터는 시간 t에서 발생하는 상태 컨텍스트와 시간 t+Tp(예를 들어, 상태 컨텍스트 이후의 기간)에서 발생하는 OS 상태 간의 연관이지만, 이벤트 컨텍스트는 즉각적인 OS의 활성화 또는 OS 비활성화를 유발할 수 있는 디바이스(100)의 즉각적인 전환이다. 예시적인 피쳐 추출기(202)는 연관 데이터(예를 들어, 연관 히스토그램(들)(164))의 피쳐들을 추출한 후, 피쳐 벡터를 출력한다.
도 2에서, 예시적인 훈련 컨트롤러(134)는 예시적인 피쳐 추출기(202)의 출력 피쳐 벡터에 기초하여 예측 모델을 훈련하기 위한 예시적인 모델 훈련기(204)를 포함한다. 예시적인 모델 훈련기(204)는 복수의 연관 데이터를 수신하고 예측을 생성하고 그 예측에 기초하여 모델을 출력하는 훈련 모드에서 동작한다. 예시적인 모델 훈련기(204)는 모델을 생성하기 위해, OS 상태들의 미리 결정된 조건들에 대응하는 피쳐 벡터들을 수신한다. 예를 들어, 훈련 모드 동안, OS 상태들은 이미 결정되고, 조건들은 이미 히스토그램들(예를 들어, 상태 컨텍스트 히스토그램(들)(160), OS 상태 히스토그램(들)(162) 및/또는 연관 히스토그램(들)(164))의 패턴들에 의해 정의되며, 그에 의해 훈련 컨트롤러(134)에 제공되는 데이터는 학습에 적합하게 된다. 예를 들어, 모델 훈련기(204)는 상태 컨텍스트들 및 OS 상태들의 피쳐들을 나타내는 피쳐 벡터를 수신하고, 상태 컨텍스트들 및 결과적은 OS 상태들에서, 상태 컨텍스트들을 장래 OS 상태에 매핑하는 패턴을 식별하고 이러한 패턴들을 캡처하는 모델을 출력한다.
일부 예들에서, 모델 훈련기(204)는 장래 OS 상태들에 관한 출력 확률들 및 예측들을 생성하기 위해 나이브 베이즈 함수를 구현한다. 단순함 및 설명을 위해, 두 가지 타입의 상태 컨텍스트들, 즉 사용자 활동 데이터(144) 및 덮개 모드 데이터(146)만이 나이브 베이즈 함수와 관련하여 아래에서 설명될 것이다. 그러나, 예시적인 모델 훈련기(204)는 훈련을 위해 각각의 상태 컨텍스트 타입을 이용할 수 있다. 나이브 베이즈 함수에서, 상이한 타입들의 확률들이 추론된다. 예를 들어, 모델 훈련기(204)는 사전 확률, 사후 확률 및 우도 확률을 결정할 수 있다. 사전 확률은 랜덤 사건 또는 불확실한 명제와 같은 파라미터들 θ에 대응하며, 여기서 사전 확률은 임의의 관련 증거가 p(θ)로 고려되기 전에 파라미터들에 관해 결정되는 무조건 확률이다. 예를 들어, 모델 훈련기(204)는 사용자가 시간 t+Tp에서 디바이스(100)를 사용할(예를 들어, OS가 활성 상태에 있음) 사전 확률(P(O=active))을 결정하며, 여기서 OS 상태는 파라미터이고 확률은 OS 상태가 활성인 시간이다. 이러한 사전 확률(P(O=active))은 OS 상태 히스토그램(162)(histosstate)으로부터 직접 추정될 수 있다.
사후 확률은 주어진 증거 X:(p(θ|X))에 대한 파라미터 θ의 확률이다. 예를 들어, 모델 훈련기(204)는 시간 t에서 현재 컨텍스트 상태들(A: 활동 데이터(144) 및 L: 덮개 모드 데이터(146))가 주어질 때, 시간 t+Tp에서 사용자가 디바이스(100)를 사용할 사후 확률 P(O=active|A,L)을 결정한다. 사후 확률은 예시적인 모델 훈련기(204)가 예측하기 위해 학습하는 목표 확률이다.
우도 확률은 주어진 파라미터 θ:(p(θ|X))에 대한 증거 X의 확률이다. 예를 들어, 모델 훈련기(204)는 시간 t+Tp에서 OS 상태가 주어질 때, 시간 t에서 사용자 활동 데이터(144)의 상태의 우도 확률(P(A|O=active), P(A|O=inactive))을 결정한다. 예시적인 모델 훈련기(204)는 예시적인 연관 히스토그램들(164)(예를 들어, histactivity -vs- osstate) 중 하나로부터 사용자 활동 데이터(144)의 상태의 우도 확률(P(A|O=active), P(A|O=inactive))을 직접 추정할 수 있다. 상이한 예에서, 모델 훈련기(204)는 시간 t+Tp에서 OS 상태가 주어질 때, 시간 t에서 덮개 모드 데이터(146)의 상태의 우도 확률(P(L|O=active), P(L|O=inactive))을 결정한다. 예시적인 모델 훈련기(204)는 예시적인 연관 히스토그램들(164)(예를 들어, histlidmode -vs- osstate) 중 하나로부터 덮개 모드 데이터(146)의 상태의 우도 확률(P(L|O=active), P(L|O=inactive))을 직접 추정할 수 있다.
예시적인 모델 훈련기(204)는 아래의 예시적인 수학식 1을 이용하여 사후 확률 P(O=active|A,L)을 학습하고/거나 다르게 결정한다. 수학식 1에서, P(A,L)은 시간 t에서의 사용자 활동 데이터(144)(A)의 상태 및 덮개 모드 데이터(146)(L)의 상태의 예측된 사전 확률에 대응하고, P(A,L|O=active)은 시간 t+Tp에서 OS 상태가 활성으로 주어질 때 시간 t에서의 사용자 활동 데이터(144)(A)의 상태 및 덮개 모드 데이터(146)(L)의 상태의 우도 확률에 대응한다.
Figure pct00001
일부 예들에서, 모델 훈련기(204)는 아래의 예시적인 수학식 2를 이용하여, 시간 t+Tp에서 OS 상태가 활성으로 주어질 때 시간 t에서의 사용자 활동 데이터(144)(A)의 상태 및 덮개 모드 데이터(146)(L)의 상태의 우도 확률을 결정한다.
Figure pct00002
일부 예들에서, 모델 훈련기(204)는 아래의 예시적인 수학식 3을 이용하여, 시간 t에서의 사용자 활동 데이터(144)(A)의 상태 및 덮개 모드 데이터(146)(L)의 상태의 예측된 사전 확률을 결정한다.
Figure pct00003
예시적인 모델 훈련기(204)는 주어진 연관 데이터에 대해 사후 확률을 결정하기 위해 모델을 훈련한다. 예시적인 모델 훈련기(204)는 의도된 OS 상태가 알려지지 않은 새로운 상태 컨텍스트들에 대한 예측들을 생성하는 것을 보조하기 위해 예시적인 예측 컨트롤러(136)에 출력 모델을 제공한다.
도 2에서, 예시적인 훈련 컨트롤러(134)는 모델 훈련기(204)로부터 수신된 모델을 새로운 것 및/또는 업데이트된 것으로서 플래그하기 위한 예시적인 모델 업데이터(206)를 포함한다. 예를 들어, 모델 업데이터(206)는 평일의 상태 컨텍스트들에 대응하는 OS 상태를 검출하기 위한 예측 알고리즘을 제공하는 모델 훈련기(204)로부터 모델을 수신할 수 있다. 예시적인 모델 업데이터(406)는 이러한 타입의 모델이 새로운 것이라고 결정하고, 따라서 그것을 새로운 것으로서 태그한다. 대안적으로, 예시적인 모델 업데이터(206)는 이러한 타입의 모델이 이전에 생성되었다고 결정하고, 따라서 가장 최근에 생성된 모델을 업데이트된 것으로서 플래그할 것이다. 예시적인 모델 업데이터(206)는 새로운 및/또는 업데이트된 모델을 예시 모델 생성기(208)에 제공한다.
도 2에서, 예시적인 훈련 컨트롤러(134)는 발행을 위한 모델을 생성하기 위한 예시적인 모델 생성기(208)를 포함한다. 예를 들어, 모델 생성기(208)는 새로운 및/또는 업데이트된 모델이 훈련되었다는 알림을 모델 업데이터(206)로부터 수신할 수 있고, 모델 생성기(208)는 모델이 발행되는 파일을 생성할 수 있어, 모델은 파일로서 세이브 및/또는 저장될 수 있다. 일부 예들에서, 모델 생성기(208)는 모델이 변환되고 발행될 준비가 되었다는 알림을 예측 컨트롤러(136)에 제공한다.
도 3을 보면, 실시간(예를 들어, 디바이스(100)가 동작하고 있는 및/또는 동작하고 있지 않은 시간)으로 장래 OS 상태의 예측을 생성하기 위한 도 1a의 예시적인 예측 컨트롤러(136)의 블록도가 도시된다. 예시적인 예측 컨트롤러(136)는 예시적인 피쳐 추출기(302), 예시적인 추론 생성기(304), 및 예시적인 OS 상태 검출기(306)를 포함한다. 예시적인 예측 컨트롤러(136)는 예시적인 디바이스 상태 컨트롤러(126) 및 예시적인 훈련 컨트롤러(134)와 통신하여, 예시적인 디바이스(100)의 OS 상태들의 검출을 용이하게 한다.
도 3에서, 예시적인 예측 컨트롤러(136)는 원시 상태 컨텍스트들의 피쳐들을 추출하고 피쳐 벡터를 생성하여 추론 생성기(304)에 제공하기 위한 예시적인 피쳐 추출기(302)를 포함한다. 예를 들어, 피쳐 추출기(302)는 도 2의 피쳐 추출기(202)와 유사한 방식으로 동작한다. 그러나, 일부 예들에서, 연관 데이터는 나중 기간에서 OS 상태들에 대한 도 1a의 대기 관리 시스템(142)의 질의를 필요로 하기 때문에, 도 3의 피쳐 추출기(302)는 연관 데이터의 피쳐들을 추출하지 않고, 대신에 예측 컨트롤러(136)는 대기하는 것이 아니라 나중 기간에 OS 상태를 예측 및/또는 추측한다. 예시적인 피쳐 추출기(302)는 아직 장래의 OS 상태와 연관되지 않은 상태 컨텍스트들의 데이터를 추출한다. 예를 들어, 피쳐 추출기(302)는 디바이스 상태 컨트롤러(126)로부터 상태 컨텍스트들을 수신하고, 상태 컨텍스트들의 피쳐들이 개별 OS 상태에 대응하는 가능한 조건을 충족함을 결정할 수 있다.
도 3에서, 예시적인 예측 컨트롤러(136)는 예시적인 피쳐 추출기(302)에 의해 제공되는 피쳐 벡터에 기초하여 예측을 생성하기 위한 예시적인 추론 생성기(304)를 포함한다. 예를 들어, 추론 생성기(304)는 OS 상태가 도 1 및 도 2의 훈련 컨트롤러(134)에 의해 훈련, 생성 및/또는 달리 발행되는 모델을 이용하여 장래 시간에 개시, 비활성화 등이 될 우도를 나타내는 확률 값을 생성할 수 있다. 예를 들어, 디바이스 상태 컨트롤러(126)는 디바이스(100)의 외부 환경의 센서 데이터 및 측정값들을 검색할 수 있고, 추론 생성기(304)는 훈련된 모델을 이용해서, 외부 환경의 상태 컨텍스트들에 기초하여, 상태 컨텍스트들 및 가능한 OS 상태들의 상관관계들을 결정하여, 가까운 장래에 OS 상태가 변경될 우도를 나타내는 확률 값을 출력한다. 예시적인 추론 생성기(304)는 예시적인 훈련 컨트롤러(134)에 의해 (예를 들어, 주기적으로) 업데이트된다. 예시적인 추론 생성기(304)에 의해 생성된 예측 값들은 예시적인 OS 상태 검출기(306)에 제공된다.
도 3에서, 예시적인 예측 컨트롤러(136)는 장래 OS 상태가 추론 생성기(304)에 의해 검출되었는지를 결정하기 위한 예시적인 OS 상태 검출기(306)를 포함한다. 예를 들어, OS 상태 검출기(306)는 추론 생성기(304)로부터, OS 상태가 변경될 우도를 나타내는 확률 값들을 수신한다. 예시적인 OS 상태 검출기(306)는 확률 값들이 장래 OS 상태들을 충분히 나타내고 있다고 결정하는 경우, 플래그를 생성한다(예를 들어, 비트를 1로 설정하고, 비트를 0으로 지우고, 예측된 시간과 함께 "OS 상태 검출됨" 값을 저장하는 등). 예시적인 예측 컨트롤러(306)는 도 1a의 예시적인 스케줄 컨트롤러(138)에 플래그를 제공하여, OS 상태가 사용자에 의해 개시되려고 한다는 것 및/또는 사용자에 의해 개시되려고 하지 않는다는 것을 예시적인 스케줄 컨트롤러(138)에게 알린다.
도 1a의 예시적인 센서 허브(102)로 되돌아가면, 센서 허브(102)는 예시적인 훈련 컨트롤러(134)가 발행된 모델을 예시적인 예측 컨트롤러(136)에 출력할 때 추론 동작에 들어간다. 예시적인 예측 컨트롤러(136)는 예시적인 디바이스 상태 컨트롤러(126)로부터 상태 컨텍스트들을 획득하고, 상태 컨텍스트들에 대한 예측에 기초하여 OS 상태 플래그를 생성한다.
예시적인 스케줄 컨트롤러(138)는 OS 상태 플래그를 획득하고, 출력 OS 상태 플래그에 기초하여 웨이크 기간 Tw를 생성한다. 일부 예들에서, 스케줄 컨트롤러(138)는 OS 상태 플래그가 수신될 때 이벤트 컨텍스트들에 대해 디바이스 이벤트 컨트롤러(124)에 질의한다. 예를 들어, 스케줄 컨트롤러(138)는 디바이스 이벤트 컨트롤러(124)로부터 배치 전환(152) 및/또는 사용자 존재 전환(154)을 요청한다. 질의에 응답하여, 예시적인 디바이스 이벤트 컨트롤러(124)는 예시적인 센서들(104)로부터의 측정값들 및 데이터에 기초하여 배치 전환(152) 및 사용자 존재 전환(154)을 결정한다.
예를 들어, 디바이스 이벤트 컨트롤러(124)는 예시적인 가속도계(108), 예시적인 근접 센서(112) 및/또는 예시적인 주변 광 센서(114)로부터의 측정값들에 기초하여, 디바이스(100)가 가방으로부터 제거되었는지, 가방 안에 배치되었는지, 테이블 위에 배치되었는지 등(예를 들어, 배치 전환(154))을 결정한다. 예를 들어, 디바이스 이벤트 컨트롤러(124)는 가방 안으로의 이동과 가방 밖으로의 이동 사이의 전환들에 의해 야기되는 움직임, 빛 및 근접성의 변화를 모니터링한다. 다른 예에서, 디바이스 이벤트 컨트롤러(124)는 근접 센서(112), 비전 센서(118), 레이더 센서(120), 및/또는 초음파 센서(122)로부터의 측정값들에 기초하여, 사용자가 디바이스(100)에 접근하고 있는지, 디바이스(100)로부터 멀어지고 있는지, 디바이스(100)에 위치하는지 등(예를 들어, 사용자 존재 전환(154))을 결정한다. 예를 들어, 디바이스 이벤트 컨트롤러(124)는 물체 검출 및 인식 방법들을 이용하여 장거리 및/또는 단거리 사용자 존재를 검출한다.
예시적인 스케줄 컨트롤러(138)는 예시적인 디바이스 이벤트 컨트롤러(124)로부터 이벤트 컨텍스트들을 획득하고, 이벤트 컨텍스트들 및 OS 상태 플래그의 조합에 기초하여 웨이크 기간 Tw를 결정한다. 예를 들어, 스케줄 컨트롤러(138)는 OS 상태 플래그에 기초하여 OS 상태가 30분 내에 활성화될 것임을 결정할 수 있다. 그러한 예에서, 스케줄 컨트롤러(138)는 예측된 활성화 시간보다 5분 전의 웨이크 트리거가 유리할 수 있다고 결정할 수 있다. 따라서, 스케줄 컨트롤러(138)는 웨이크 기간 Tw를 25분으로 설정할 수 있다. 그러나, 그러한 예에서, 이벤트 컨텍스트들이 전환이 발생했음을 나타내는 경우, 예시적인 스케줄 컨트롤러(138)는 전환에 기초하여 웨이크 기간 Tw를 생성할 수 있다. 예를 들어, 사용자가 존재하게 될 때, 스케줄 컨트롤러(138)는 25분의 웨이크 기간 Tw를 오버라이드하고 대기 관리 시스템(142)에 대한 웨이크 트리거를 즉시 개시할 수 있다. 그러한 예에서, 사용자 존재는 사용자가 디바이스(100)를 즉각적으로 활성화하려고 의도함을 나타내므로, 스케줄 컨트롤러(138)는 적시에 디바이스(100)를 준비하도록 작용한다(예를 들어, 이메일들, 업데이트들, 캘린더들 등을 동기화하기 위해 애플리케이션들을 깨운다).
예시적인 스케줄 컨트롤러(138)가 웨이크 기간 Tw를 설정할 때, 예시적인 스케줄 컨트롤러(138)는 예시적인 웨이크 타이머(140)를 개시한다. 예를 들어, 웨이크 타이머(140)는 완료를 위해 웨이크 기간 Tw 동안 대기한다(예를 들어, 액션을 수행하기 위해 25분 동안 대기한다). 예시적인 웨이크 타이머(140)가 웨이크 기간 Tw를 완료할 때, 예시적인 웨이크 타이머(140)는 예시적인 대기 관리 시스템(142)에 웨이크 이벤트 트리거를 송신한다. 예시적인 대기 관리 시스템(142)은 웨이크 모드로 진입하여, 예시적인 디바이스(100)를 동기화, 업데이트, 준비하기 위한 예시적인 호스트(106)의 하드웨어 컴포넌트들에 충분한 전력을 제공한다.
예시적인 센서 허브(102)의 예시적인 추론 동작은 디바이스(100)의 수명 내내 연속적으로 반복된다. 추론 동작은 예시적인 예측 컨트롤러(136)가 예시적인 훈련 컨트롤러(134)로부터 업데이트된 및/또는 새로운 모델들을 획득할 때 주기적으로 및/또는 비주기적으로 업데이트된다. 시간이 지남에 따라, 예시적인 훈련 컨트롤러(134)가 사용자 거동 패턴들을 학습함에 따라 추론 페이즈의 정확도가 증가한다.
도 1a의 센서 허브(102)를 구현하는 예시적인 방식이 도 1 내지 도 3에 도시되어 있는 한편, 도 1 내지 도 3에 도시된 요소들, 프로세스들 및/또는 디바이스들 중 하나 이상은 임의의 다른 방식으로 조합, 분할, 재배열, 생략, 제거 및/또는 구현될 수 있다. 또한, 예시적인 디바이스 이벤트 컨트롤러(124), 예시적인 디바이스 상태 컨트롤러(126), 예시적인 버퍼(128), 예시적인 타이머(130), 예시적인 연관기(132), 예시적인 훈련 컨트롤러(134), 예시적인 예측 컨트롤러(136), 예시적인 스케줄 컨트롤러(138), 예시적인 웨이크 타이머(140), 예시적인 피쳐 추출기(202), 예시적인 모델 훈련기(204), 예시적인 모델 업데이터(206), 예시적인 모델 생성기(208), 예시적인 피쳐 추출기(302), 예시적인 추론 생성기(304), 예시적인 OS 상태 검출기(306), 및/또는 더 일반적으로 도 1a의 예시적인 센서 허브(102)는 하드웨어, 소프트웨어, 펌웨어 및/또는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합에 의해 구현될 수 있다. 따라서, 예를 들어, 예시적인 디바이스 이벤트 컨트롤러(124), 예시적인 디바이스 상태 컨트롤러(126), 예시적인 버퍼(128), 예시적인 타이머(130), 예시적인 연관기(132), 예시적인 훈련 컨트롤러(134), 예시적인 예측 컨트롤러(136), 예시적인 스케줄 컨트롤러(138), 예시적인 웨이크 타이머(140), 예시적인 피쳐 추출기(202), 예시적인 모델 훈련기(204), 예시적인 모델 업데이터(206), 예시적인 모델 생성기(208), 예시적인 피쳐 추출기(302), 예시적인 추론 생성기(304), 예시적인 OS 상태 검출기(306), 및/또는 더 일반적으로 도 1a의 예시적인 센서 허브(102) 중 임의의 것은 하나 이상의 아날로그 또는 디지털 회로(들), 로직 회로들, 프로그래밍가능한 프로세서(들), 프로그래밍가능한 컨트롤러(들), 그래픽 프로세싱 유닛(들)(GPU(들)), 디지털 신호 프로세서(들)(DSP(들)), 주문형 집적 회로(ASIC(들)), 프로그래밍가능한 로직 디바이스(들)(PLD(들)) 및/또는 필드 프로그래밍가능한 로직 디바이스(들)(FPLD(들))에 의해 구현될 수 있다. 본 특허의 장치 또는 시스템 청구항들 중 임의의 것을 순수한 소프트웨어 및/또는 펌웨어 구현을 포함하도록 읽을 때, 예시적인 디바이스 이벤트 컨트롤러(124), 예시적인 디바이스 상태 컨트롤러(126), 예시적인 버퍼(128), 예시적인 타이머(130), 예시적인 연관기(132), 예시적인 훈련 컨트롤러(134), 예시적인 예측 컨트롤러(136), 예시적인 스케줄 컨트롤러(138), 예시적인 웨이크 타이머(140), 예시적인 피쳐 추출기(202), 예시적인 모델 훈련기(204), 예시적인 모델 업데이터(206), 예시적인 모델 생성기(208), 예시적인 피쳐 추출기(302), 예시적인 추론 생성기(304), 및/또는 예시적인 OS 상태 검출기(306) 중 적어도 하나는 소프트웨어 및/또는 펌웨어를 포함하는 메모리, 디지털 다목적 디스크(DVD), 컴팩트 디스크(CD), 블루레이 디스크 등과 같은 비-일시적 컴퓨터 판독가능 저장 디바이스 또는 저장 디스크를 포함하도록 여기에 명시적으로 정의된다. 또한 추가로, 도 1a의 예시적인 센서 허브(102)는 도 1 내지 도 3에 도시된 것들에 추가로 또는 그들을 대신하여 하나 이상의 요소, 프로세스 및/또는 디바이스를 포함할 수 있고/거나, 도시된 요소들, 프로세스들 및 디바이스들의 전부 또는 임의의 것 중 둘 이상을 포함할 수 있다. 본 명세서에서 사용될 때, 그것의 변형들을 포함하는 "통신하는"이라는 문구는 직접 통신 및/또는 하나 이상의 중개 컴포넌트를 통한 간접 통신을 포괄하고, 직접적인 물리적(예를 들어, 유선) 통신 및/또는 지속적인 통신을 요구하지 않으며, 오히려 주기적 간격들, 스케줄링된 간격들, 비주기적 간격들, 및/또는 일회성 이벤트들에서의 선택적 통신을 추가로 포함한다.
도 1 내지 도 3의 센서 허브(102)를 구현하기 위한 예시적인 하드웨어 로직, 머신 판독가능 명령어들, 하드웨어 구현 상태 머신들, 및/또는 이들의 임의의 조합을 나타내는 흐름도들이 도 4 및 도 5에 도시되어 있다. 머신 판독가능 명령어들은 도 6과 관련하여 아래에서 논의되는 예시적인 프로세서 플랫폼(600)에 도시된 프로세서(612)와 같은 컴퓨터 프로세서 및/또는 프로세서 회로부에 의한 실행을 위한 하나 이상의 실행가능한 프로그램 또는 실행가능한 프로그램의 부분(들)일 수 있다. 프로그램들은 CD-ROM, 플로피 디스크, 하드 드라이브, DVD, 블루레이 디스크, 또는 프로세서(612)에 연관된 메모리와 같은 비-일시적 컴퓨터 판독가능 저장 매체에 저장된 소프트웨어로 구현될 수 있지만, 프로그램들 및/또는 그 일부는 대안적으로 프로세서(612) 이외의 디바이스에 의해 실행되고/되거나 펌웨어 또는 전용 하드웨어로 구현될 수 있다. 또한, 예시적인 프로그램들은 도 4 및 도 5에 도시된 흐름도들을 참조하여 설명되지만, 예시적인 센서 허브(102)를 구현하는 많은 다른 방법들이 대안적으로 사용될 수 있다. 예를 들어, 블록들의 실행 순서가 변경될 수 있고/있거나 설명된 블록들 중 일부가 변경, 제거 또는 조합될 수 있다. 추가적으로 또는 대안적으로, 블록들 중 임의의 것 또는 전부는 소프트웨어 또는 펌웨어를 실행하지 않고서 대응하는 동작을 수행하도록 구성된 하나 이상의 하드웨어 회로(예를 들어, 이산 및/또는 통합 아날로그 및/또는 디지털 회로부, FPGA, ASIC, 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있다. 프로세서 회로부는 상이한 네트워크 위치들에 분산될 수 있고/거나 하나 이상의 디바이스에 로컬일 수 있다(예를 들어, 단일 머신 내의 멀티-코어 프로세서, 서버 랙에 걸쳐 분산된 복수의 프로세서 등).
본 명세서에 설명된 머신 판독가능 명령어들은 압축된 형식, 암호화된 형식, 단편화된 형식, 컴파일된 형식, 실행가능한 형식, 패키지화된 형식 등 중 하나 이상으로 저장될 수 있다. 본 명세서에 설명된 머신 판독가능 명령어들은 머신 실행가능 명령어들을 생성, 제조 및/또는 생산하는 데 이용될 수 있는 데이터 또는 데이터 구조(예를 들어, 명령어의 일부, 코드, 코드 표현 등)로서 저장될 수 있다. 예를 들어, 머신 판독가능 명령어들은 네트워크 또는 네트워크 집합의 동일한 및/또는 상이한 위치들에 위치된 하나 이상의 저장 디바이스 및/또는 컴퓨팅 디바이스(예를 들어, 서버)에 단편화되어 저장될 수 있다(예를 들어, 클라우드 내에, 에지 디바이스 내에 등). 머신 판독가능 명령어들은 그것들이 컴퓨팅 디바이스 및/또는 다른 머신에 의해 직접 판독가능하고 해석가능하고/거나 실행가능하도록 하기 위해, 설치, 수정, 적응, 업데이트, 조합, 보완, 구성, 암호 해독, 압축 해제, 언팩킹, 배포, 재할당, 컴파일 등 중 하나 이상을 요구할 수 있다. 예를 들어, 머신 판독가능 명령어들은 별개의 컴퓨팅 디바이스들 상에서 개별적으로 압축되고 암호화되고 저장되는 복수의 부분으로 저장될 수 있으며, 여기서 부분들은 해독, 압축 해제 및 조합될 때, 본 명세서에 설명된 것과 같은 프로그램을 함께 형성할 수 있는, 하나 이상의 기능을 구현하는 실행가능한 명령어들의 세트를 형성한다.
다른 예에서, 머신 판독가능 명령어들은 프로세서 회로부에 의해 판독될 수 있지만, 특정 컴퓨팅 디바이스 또는 다른 디바이스에서 명령어들을 실행하기 위해 라이브러리(예를 들어, 동적 링크 라이브러리(DLL)), 소프트웨어 개발 키트(SDK), API(응용 프로그래밍 인터페이스) 등의 추가를 요구하는 상태로 저장될 수 있다. 다른 예에서, 머신 판독가능 명령어들 및/또는 대응하는 프로그램(들)이 전체적으로 또는 부분적으로 실행될 수 있기 전에 머신 판독가능 명령어들이 구성(예를 들어, 세팅 저장, 데이터 입력, 네트워크 주소 기록 등)될 필요가 있을 수 있다. 따라서, 본 명세서에서 사용되는 바와 같이, 머신 판독가능 매체는 저장되거나 그렇지 않으면 정지되어 있거나 운송 중일 때 머신 판독가능 명령어들 및/또는 프로그램(들)의 특정 형식 또는 상태에 관계없이 머신 판독가능 명령어들 및/또는 프로그램(들)을 포함할 수 있다.
본 명세서에 설명된 머신 판독가능 명령어들은 임의의 과거, 현재 또는 장래의 명령 언어, 스크립팅 언어, 프로그래밍 언어 등에 의해 표현될 수 있다. 예를 들어, 머신 판독가능 명령어들은 이하의 언어들: C, C++, Java, C#, Perl, Python, JavaScript, HTML(HyperText Markup Language), SQL(Structured Query Language), Swift 등 중 임의의 것을 사용하여 표현될 수 있다.
위에서 언급된 바와 같이, 도 4 및 도 5의 예시적인 프로세스들은 하드 디스크 드라이브, 플래시 메모리, 판독 전용 메모리, 컴팩트 디스크, 디지털 다목적 디스크, 캐시, 랜덤 액세스 메모리, 및/또는 정보가 임의의 지속기간 동안(예를 들어, 연장된 기간 동안, 영구적으로, 짧은 인스턴스들을 위해, 일시적으로 버퍼링하기 위해, 및/또는 정보의 캐싱을 위해) 저장되는 임의의 다른 저장 디바이스 또는 저장 디스크와 같은 비-일시적 컴퓨터 및/또는 머신 판독가능 매체에 저장된 실행가능 명령어들(예를 들어, 컴퓨터 및/또는 머신 판독가능 명령어들)을 사용하여 구현될 수 있다. 본 명세서에서 사용될 때, 비-일시적 컴퓨터 판독가능 매체라는 용어는 임의의 타입의 컴퓨터 판독가능 저장 디바이스 및/또는 저장 디스크를 포함하고 전파 신호들을 배제하고 전송 매체를 배제하도록 명시적으로 정의된다.
"포함하는(including)" 및 "포함하는(comprising)"(및 이들의 모든 형태들 및 시제들)은 본 명세서에서 개방형 용어로 사용된다. 따라서, 청구항이 전문으로서 또는 임의의 종류의 청구항 기재 내에서 "포함하다(include)" 또는 "포함하다(comprise)"의 임의의 형태(예를 들어, 포함하는(comprises), 포함하는(includes), 포함하는(comprising), 포함하는(including), 갖는(having) 등)를 사용할 때마다, 대응하는 청구항 또는 기재의 범위를 벗어나지 않고서 추가적인 요소들, 용어들 등이 존재할 수 있음을 이해해야 한다. 본 명세서에서 사용될 때, "적어도"라는 문구가 예를 들어 청구항의 전문에서 전환 용어로 사용되는 경우, 그것은 "포함하는(including)" 및 "포함하는(comprising)"이라는 용어가 개방형인 것과 동일한 방식으로 개방형이다. "및/또는"이라는 용어는 예를 들어 A, B 및/또는 C와 같은 형태로 사용될 때 (1) A 단독, (2) B 단독, (3) C 단독, (4) A와 B, (5) A와 C, (6) B와 C, 및 (7) A와 B 와 C와 같은 A, B, C의 임의의 조합 또는 부분집합을 지칭한다. 본 명세서에서 구조들, 컴포넌트들, 항목들, 객체들 및/또는 사물들을 설명하는 맥락으로 사용될 때, "A 및 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다. 마찬가지로, 본 명세서에서 구조들, 컴포넌트들, 항목들, 객체들 및/또는 사물들을 설명하는 맥락으로 사용될 때, "A 또는 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다. 본 명세서에서 프로세스들, 명령어들, 액션들, 활동들 및/또는 단계들의 수행 또는 실행을 설명하는 맥락으로 사용될 때, "A 및 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다. 마찬가지로, 본 명세서에서 프로세스들, 명령어들, 액션들, 활동들 및/또는 단계들의 수행 또는 실행을 설명하는 맥락으로 사용될 때, "A 또는 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다.
본 명세서에서 사용될 때, 단수 언급들(예를 들어, 단수표현("a", "an"), "제1(first)", "제2(second)" 등)은 복수를 배제하지 않는다. 본 명세서에 사용된 단수표현의 엔티티("a" 또는 "an" entity)라는 용어는 하나 이상의 해당 엔티티를 지칭한다. 용어들 단수표현("a"(또는 "an")), "하나 이상" 및 "적어도 하나"는 본 명세서에서 상호교환가능하게 사용될 수 있다. 또한, 개별적으로 나열되지만, 복수의 수단, 요소 또는 방법 액션은 예를 들어 단일 유닛 또는 프로세서에 의해 구현될 수 있다. 추가로, 개별 특징들이 상이한 예들 또는 청구항들에 포함될 수 있지만, 이들은 아마도 결합될 수 있으며, 상이한 예들 또는 청구항들에 포함된다고 해서, 특징들의 조합이 실현가능하지 않고/거나 유리하지 않다는 것을 암시하지는 않는다.
도 4는 (예를 들어, 상태 컨텍스트들에 기초하여) 도 1a의 예시적인 디바이스(100)의 장래 OS 상태들을 예측하도록 하나 이상의 모델(들)을 훈련하기 위한 도 1a의 예시적인 센서 허브(102)의 예시적인 훈련 동작(400)을 도시한다. 블록(402)에서, 도 1a의 예시적인 디바이스 상태 컨트롤러(126)는 센서 데이터를 수집한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 도 1a의 예시적인 센서들(104)로부터 측정값들 및 정보를 획득한다.
예시적인 디바이스 상태 컨트롤러(126)는 시간 t에서 상태 컨텍스트들(예를 들어, 제1, 제2, 제3, 및 제4)을 결정한다(블록(404)). 예를 들어, 디바이스 상태 컨트롤러(126)는 센서들(104)로부터 획득된 측정값들에 기초하여 시간 t에서의 사용자 활동 데이터(144), 시간 t에서의 덮개 모드 데이터(146), 시간 t에서의 위치 데이터(148), 및 시간 t에서의 디바이스 움직임 데이터(150)를 결정한다. 예시적인 디바이스 상태 컨트롤러(126)는 상태 컨텍스트들을 이력 컨텍스트로서 버퍼(128)에 저장한다(블록(406)). 예를 들어, 버퍼(128)에 저장된 임의의 데이터는 나중 기간(Tp)에 이용 및/또는 검색되고, 그에 따라, 데이터가 이력이 되도록 한다.
예시적인 타이머(130)는 Tp 초를 지연시킨다(블록(408)). 예를 들어, 타이머(130)는 최대 예측가능한 시간(Tp)까지 카운트하고, 여기서 최대 예측가능한 시간은 도 1a의 연관기(132)를 상태 컨텍스트들을 획득하는 것으로부터 지연시킨다. 다음으로, 예시적인 연관기(132)는 상태 컨텍스트들을 획득한다(블록(410)). 예를 들어, 연관기(132)는 타이머(130)가 지연을 완료하는 것에 응답하여 상태 컨텍스트들에 대해 버퍼(128)에 질의하거나, 버퍼(128)는 타이머(130)가 지연을 완료하는 것에 응답하여 상태 컨텍스트들을 해제한다.
예시적인 연관기(132)는 시간 t+Tp에서 운영 체제 상태를 획득한다(블록(412)). 예를 들어, 연관기(132)는 운영 체제의 상태(예를 들어, 활성, 비활성 등)에 대해 호스트(106) 및/또는 대기 관리 시스템(142)에 질의한다. 시간 t+Tp에서 OS 상태를 획득하면, 예시적인 연관기(132)는 OS 상태를 시간 t에서 수집된 이력 컨텍스트들과 연관시킨다(블록(414)). 예를 들어, 연관기(132)는 시간 t의 상태 컨텍스트들이 시간 t+Tp에서의 OS 상태에 대응함을 나타내는 조건들을 메모리에 저장한다. 그러한 예에서, 연관기(132)는 조건들을 나타내기 위해 하나 이상의 히스토그램(예를 들어, 160, 162, 164)을 생성하고, 히스토그램들(예를 들어, 160, 162, 164)을 예시적인 훈련 컨트롤러(134)에 출력한다.
예시적인 훈련 컨트롤러(134)는 연관 데이터에 기초하여 장래 OS 상태들을 예측하도록 모델을 훈련한다(블록(414)). 예를 들어, 훈련 컨트롤러(134)는 상태 컨텍스트들 및 장래 OS 상태들에 대응하는 히스토그램들(예를 들어, 연관 데이터)로부터 피쳐들을 추출하여 피쳐 벡터들을 생성한 다음, 피쳐 벡터들에서 식별된 패턴을 나타내도록 모델을 훈련 및/또는 구축한다. 일부 예들에서, 훈련 컨트롤러(134) 및/또는 더 구체적으로 모델 훈련기(204)는 상태 컨텍스트들을 이용하여, 주어진 상태 컨텍스트들에 대해 장래 OS 상태들의 사후 확률들을 결정한다. 예를 들어, 훈련 컨트롤러(134)는 위의 수학식 1 내지 수학식 3을 이용하여 장래 OS 상태들의 사후 확률들을 결정한다. 일부 예들에서, 확률들은 사용자 거동의 패턴들에 대응한다. 예를 들어, 패턴들은 하나 이상의 기간(예를 들어, 24시간, 5일, 7일 등)에 걸친 사용자 거동 패턴들에 대응한다. 예를 들어, 패턴(들)은 사용자가 하루 중 어느 시각에 OS를 활성화하는지, 사용자가 디바이스(100)를 사용하고 있거나 사용하고 있지 않을 때 사용자가 무엇을 하고 있는지, 디바이스(100)가 활성화될 때 대(versus) 비활성화될 때 그것이 어디에 위치되는지 등을 나타낼 수 있다.
예시적인 훈련 컨트롤러(134)는 모델을 계속 훈련할지를 결정한다(블록(418)). 예를 들어, 훈련 컨트롤러(134)는 충분한(예를 들어, 임계 오차 메트릭이 충족된) 양의 오차가 달성되었는지, 새로운 연관 데이터가 여전히 획득될 필요가 있는지 등을 결정한다. 일부 예들에서, 훈련 컨트롤러(134)는 장래 OS 상태의 사후 확률을 생성하고, 그 확률이 OS의 알려진 상태와 일치하는지를 결정한다. 예를 들어, 훈련 컨트롤러(134)는 사후 확률이 알려진 상태로부터 허용가능한 양의 오차 내에 있는 경우 일치를 결정한다. 예시적인 훈련 컨트롤러(134)가 훈련이 계속되어야 한다고 결정하면(예를 들어, 블록(418)은 값 "예"를 리턴함), 제어는 블록(402)으로 되돌아간다.
예시적인 훈련 컨트롤러(134)가 훈련이 계속되지 않는다고 결정하면(예를 들어, 블록(418)은 값 "아니오"를 리턴함), 예시적인 훈련 컨트롤러는 예측 모델(들)을 생성한다(블록(420)). 예를 들어, 도 2의 모델 생성기(208)는 새로운 및/또는 업데이트된 모델이 훈련되었다는 알림을 모델 업데이터(206)로부터 수신할 수 있고, 모델 생성기(208)는 예측 모델(들)을 포함하는 파일들을 생성할 수 있다.
예시적인 훈련 컨트롤러(134)는 예측 모델(들)을 발행한다(블록(422)). 예를 들어, 모델 생성기(208)는 예측 모델(들)이 발행되는 파일을 생성하고, 그에 의해 예측 모델(들)은 파일로서 세이브 및/또는 저장될 수 있다. 일부 예들에서, 모델 생성기(208)는 하나 이상의 모델(들)이 변환 및 발행될 준비가 되었다는 알림을 예측 컨트롤러(136)에 제공한다.
예시적인 훈련 동작(400)은 모델이 발행될 때 종료되지만, 예측 모델이 새로운 연관 데이터로부터 새롭게 식별된 패턴들로 업데이트될 때 반복될 수 있다.
도 5를 보면, 실시간으로 OS 상태를 예측하고 예측에 기초하여 적절한 웨이크 기간을 생성하기 위한 예시적인 추론 동작(500)이 도시된다. 블록(502)에서, 예시적인 디바이스 상태 컨트롤러(126)는 센서 데이터의 제1 세트를 수집한다. 예를 들어, 디바이스 상태 컨트롤러(126)는 상태 컨텍스트들(예를 들어, 사용자 활동 데이터(144), 덮개 모드 데이터(146), 위치 데이터(148), 및 디바이스 움직임 데이터(150))에 대응하는 센서들(104)로부터의 측정값들을 수집한다.
예시적인 디바이스 상태 컨트롤러(126)는 센서 데이터의 제1 세트에 기초하여 디바이스(100)의 상태 컨텍스트들(예를 들어, 제1, 제2, 제3, 및 제4)을 결정한다(블록(504)). 예를 들어, 디바이스 상태 컨트롤러(126)는 복수의 센서 측정값들에 기초하여 사용자 활동 데이터(144)의 상태, 덮개 모드 데이터(146)의 상태, 디바이스 위치 데이터(148)의 상태, 및 디바이스 움직임 데이터(150)의 상태를 식별한다. 예시적인 디바이스 상태 컨트롤러(126)는 상태 컨텍스트들을 예시적인 예측 컨트롤러(136)에 출력한다.
예시적인 예측 컨트롤러(136)는 상태 컨텍스트들에 기초하여 운영 체제 상태의 확률들을 결정한다(블록(506)). 예를 들어, 예측 컨트롤러(136)는 상태 컨텍스트들에 기초하여 장래 OS 상태를 식별하기 위해 예측 모델을 이용한다. 이러한 예에서, 도 3의 피쳐 추출기(302)는 상태 컨텍스트들로부터 피쳐들을 추출하여 조건들을 나타내는 피쳐 벡터들을 생성하고, 도 3의 추론 생성기(304)는 피쳐 벡터들에 기초하여 특정 시간에 OS 상태가 활성 및/또는 비활성일 우도를 생성한다.
예시적인 예측 컨트롤러(136)는 예측을 출력한다(블록(510)). 예를 들어, 예측 컨트롤러(136)는 도 1a의 스케줄 컨트롤러(138)에 우도들 및 확률들을 제공한다. 예시적인 스케줄 컨트롤러(138)는 예시적인 디바이스 이벤트 컨트롤러(124)를 개시한다(블록(512)). 예를 들어, 스케줄 컨트롤러(138)는 예측을 획득하는 것에 응답하여 예시적인 디바이스 이벤트 컨트롤러(124)를 개시한다. 예를 들어, 디바이스 이벤트 컨트롤러(124)는 센서 데이터의 제2 세트를 수집한다(블록(514)). 예를 들어, 디바이스 이벤트 컨트롤러(124)는 디바이스(100)의 환경의 이벤트들 및/또는 전환들에 대응하는 센서들(104)로부터의 측정값들을 수집한다.
예시적인 디바이스 이벤트 컨트롤러(124)는 센서 데이터의 제2 세트에 기초하여 이벤트 컨텍스트들(예를 들어, 제1 및 제2)을 결정한다(블록(516)). 예를 들어, 디바이스 이벤트 컨트롤러(124)는 센서 데이터의 제2 세트에 기초하여 사용자 존재(152)의 상태 및 배치 전환(154)의 상태를 결정한다. 센서 데이터의 제2 세트는 예시적인 센서들(104) 중 임의의 것으로부터 유래할 수 있다. 예시적인 디바이스 이벤트 컨트롤러(124)는 이벤트 컨텍스트들을 출력한다(블록(518)). 예를 들어, 디바이스 이벤트 컨트롤러(124)는 사용자 존재(152) 및 배치 전환(154)의 현재 상태를 스케줄 컨트롤러(138)에 제공한다.
예시적인 스케줄 컨트롤러(138)는 예측 및 이벤트 컨텍스트들에 기초하여 웨이크 기간을 결정한다(블록(520)). 예를 들어, 스케줄 컨트롤러(138)는 예측 및 이벤트 컨텍스트들에 기초하여 웨이크 이벤트를 트리거하기 위해 현재 시간으로부터의 시간의 길이를 결정한다. 이러한 예에서, 스케줄 컨트롤러(138)는 OS 상태가 특정 시간량 내에 사용자에 의해 활성화될 것인지를 결정하기 위해 예측을 분석하고, 예측의 오버라이드가 발생할 것인지를 결정하기 위해 이벤트 컨텍스트들을 추가로 분석한다. 예시적인 스케줄 컨트롤러(138)는 웨이크 기간 Tw를 설정하고, 도 1a의 웨이크 타이머(140)에게 웨이크 기간 Tw를 초기화(예를 들어, 설정)할 것을 알린다.
예시적인 웨이크 타이머(140)는 웨이크 기간에 기초하여 웨이크 이벤트를 트리거한다(블록(522)). 예를 들어, 웨이크 타이머(140)는 웨이크 기간 Tw에 의해 나타나는 시간에 도 1a의 대기 관리 시스템(142)에 웨이크 이벤트를 송신한다. 웨이크 이벤트는 예시적인 대기 관리 시스템(142)으로 하여금 호스트(106)에 충분한 전력을 제공하여 사용자에 의한 사용을 위해 디바이스(100)를 준비하게 한다.
예시적인 센서 허브(102) 및/또는 더 구체적으로 예시적인 예측 컨트롤러(136)는 동작이 계속되어야 하는지를 결정한다(블록(524)). 예를 들어, 예측 컨트롤러(136)는 새로운 센서 판독값들이 제공되는지, 디바이스 상태 컨트롤러(126)가 새로운 상태 컨텍스트들을 생성했는지 등을 결정한다. 예시적인 예측 컨트롤러(136)가 동작이 계속되어야 한다고 결정하는 경우(예를 들어, 블록(524)이 값 "예"를 리턴함), 제어는 블록(502)으로 리턴한다. 예시적인 예측 컨트롤러(136)가 동작이 계속되지 않을 것이라고 결정하는 경우(예를 들어, 블록(524)이 값 "아니오"를 리턴함), 예시적인 추론 동작(500)이 종료된다. 예시적인 추론 동작(500)은 새로운 예측 모델이 획득될 때, 새로운 센서 판독값들이 획득될 때, 새로운 상태 컨텍스트들이 생성될 때 등에 반복될 수 있다.
도 6은 도 1 내지 도 3의 센서 허브(102)를 구현하기 위해 도 4 및 도 5의 명령어들을 실행하도록 구성된 예시적인 프로세서 플랫폼(600)의 블록도이다. 프로세서 플랫폼(600)은 예를 들어 서버, 개인용 컴퓨터, 워크스테이션, 자가 학습 머신(예를 들어, 신경망), 모바일 디바이스(예를 들어, 셀 폰, 스마트 폰, iPadTM와 같은 태블릿), 인터넷 기기, 게임 콘솔, 또는 임의의 다른 타입의 컴퓨팅 디바이스일 수 있다.
도시된 예의 프로세서 플랫폼(600)은 프로세서(612)를 포함한다. 도시된 예의 프로세서(612)는 하드웨어이다. 예를 들어, 프로세서(612)는 임의의 원하는 제품군 또는 제조업체의 하나 이상의 집적 회로, 로직 회로, 마이크로프로세서, GPU, DSP 또는 컨트롤러에 의해 구현될 수 있다. 하드웨어 프로세서는 반도체 기반(예를 들어, 실리콘 기반) 디바이스일 수 있다. 이 예에서, 프로세서는 예시적인 센서 허브(102), 예시적인 호스트(106), 예시적인 디바이스 이벤트 컨트롤러(124), 예시적인 디바이스 상태 컨트롤러(126), 예시적인 버퍼(128), 예시적인 타이머(130), 예시적인 연관기(132), 예시적인 훈련 컨트롤러(134), 예시적인 예측 컨트롤러(136), 예시적인 스케줄 컨트롤러(138), 예시적인 웨이크 타이머(140), 및 예시적인 대기 관리 시스템(142)을 구현한다.
도시된 예의 프로세서(612)는 로컬 메모리(613)(예를 들어, 캐시)를 포함한다. 도시된 예의 프로세서(612)는 버스(618)를 통해 휘발성 메모리(614) 및 비휘발성 메모리(616)를 포함하는 메인 메모리와 통신한다. 휘발성 메모리(614)는 동기식 동적 랜덤 액세스 메모리(Synchronous Dynamic Random Access Memory)(SDRAM), 동적 랜덤 액세스 메모리(DRAM), RAMBUS® 동적 랜덤 액세스 메모리(RDRAM®) 및/또는 임의의 다른 타입의 랜덤 액세스 메모리 디바이스에 의해 구현될 수 있다. 비휘발성 메모리(616)는 플래시 메모리 및/또는 임의의 다른 원하는 타입의 메모리 디바이스에 의해 구현될 수 있다. 메인 메모리(614, 616)에 대한 액세스는 메모리 컨트롤러에 의해 제어된다.
도시된 예의 프로세서 플랫폼(600)은 또한 인터페이스 회로(620)를 포함한다. 인터페이스 회로(620)는 이더넷 인터페이스, 유니버설 시리얼 버스(USB), Bluetooth® 인터페이스, 근거리 통신(NFC) 인터페이스, 및/또는 PCI 익스프레스 인터페이스와 같은 임의의 타입의 인터페이스 표준에 의해 구현될 수 있다.
도시된 예에서, 하나 이상의 입력 디바이스(622)는 인터페이스 회로(620)에 연결된다. 입력 디바이스(들)(622)는 사용자가 데이터 및/또는 커맨드들을 프로세서(612)에 입력하는 것을 허용한다. 입력 디바이스(들)는 예를 들어 오디오 센서, 마이크로폰, 카메라(스틸 또는 비디오), 키보드, 버튼, 마우스, 터치스크린, 트랙 패드, 트랙볼, 아이소포인트, 음성 인식 시스템, 예시적인 가속도계(108), 예시적인 자이로스코프(110), 예시적인 근접 센서(112), 예시적인 주변 광(114), 예시적인 Wi-Fi(116), 예시적인 비전 센서(118), 예시적인 레이더 센서(120), 및/또는 예시적인 초음파 센서(122)에 의해 구현될 수 있다.
하나 이상의 출력 디바이스(624)는 또한 도시된 예의 인터페이스 회로(620)에 연결된다. 출력 디바이스들(624)은 예를 들어 디스플레이 디바이스들(예를 들어, 발광 다이오드(LED), 유기 발광 다이오드(OLED), 액정 디스플레이(LCD), 음극선관 디스플레이(CRT), 및/또는 인-플레이스 스위칭(in-place switching)(IPS) 디스플레이, 터치스크린 등)에 의해 구현될 수 있다. 따라서, 도시된 예의 인터페이스 회로(620)는 전형적으로 그래픽 드라이버 카드, 그래픽 드라이버 칩 및/또는 그래픽 드라이버 프로세서를 포함한다.
도시된 예의 인터페이스 회로(620)는 또한 송신기, 수신기, 송수신기, 모뎀, 주거용 게이트웨이, 무선 액세스 포인트, 및/또는 네트워크(626)를 통한 외부 머신들(예를 들어, 임의의 종류의 컴퓨팅 디바이스들)과의 데이터 교환을 용이하게 하는 네트워크 인터페이스와 같은 통신 디바이스를 포함한다. 통신은 예를 들어 이더넷 연결, 디지털 가입자 회선(DSL) 연결, 전화선 연결, 동축 케이블 시스템, 위성 시스템, 라인-오브-사이트 무선 시스템(line-of-site wireless system), 셀룰러 전화 시스템 등을 통하는 것일 수 있다.
도시된 예의 프로세서 플랫폼(600)은 또한 소프트웨어 및/또는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스(628)를 포함한다. 이러한 대용량 저장 디바이스들(628)의 예들은 플로피 디스크 드라이브들, 하드 드라이브 디스크들, 컴팩트 디스크 드라이브들, 블루레이 디스크 드라이브들, RAID(redundant array of independent disks) 시스템들, 및 디지털 다목적 디스크(DVD) 드라이브들을 포함한다.
도 4 및 도 5의 머신 실행가능 명령어들(632)은 대용량 저장 디바이스(628), 휘발성 메모리(614), 비휘발성 메모리(616), 및/또는 CD 또는 DVD와 같은 이동식 비-일시적 컴퓨터 판독가능 저장 매체에 저장될 수 있다.
전술한 내용으로부터, 상태 및 이벤트 컨텍스트들에 기초하여 사용자를 위해 디바이스를 깨우고 준비하는 상이한 시간들을 결정하는 예시적인 방법들, 장치들, 시스템들, 및 제조 물품들이 개시되었음을 알 수 있을 것이다. 본 명세서에 개시된 방법들, 장치들, 시스템들, 및 제조 물품들은 전력 소비를 절약하기 위한 노력으로 컴퓨팅 디바이스를 활성화하게 하는 불필요한 웨이크 이벤트들을 감소시킴으로써 컴퓨팅 디바이스를 사용하는 효율성을 개선한다. 따라서, 개시된 방법들, 장치들 및 제조 물품들은 컴퓨터의 기능의 하나 이상의 개선(들)에 관한 것이다.
컴퓨팅 시스템에서 웨이크 패턴을 동적으로 스케줄링하기 위한 예시적인 방법들, 장치들, 시스템들 및 제조 물품들이 본 명세서에 개시되어 있다. 추가의 예들 및 이들의 조합들은 다음을 포함한다:
예 1은 장치로서, 제1 시간에 수집된 센서 측정값들에 기초하여 디바이스의 컨텍스트들을 결정하는 디바이스 상태 컨트롤러; 운영 체제의 상태를 디바이스의 컨텍스트들과 연관시키는 연관기 - 상태는 제1 시간 이후의 제2 시간에 획득됨 -; 연관에 기초하여 예측 모델을 생성하는 훈련 컨트롤러 - 예측 모델은 컨텍스트들에 기초하여 운영 체제의 상태가 활성일 제3 시간을 예측함 -; 및 제3 시간 이전에 웨이크 이벤트를 트리거함으로써 디바이스의 전력 소비를 감소시키는 스케줄 컨트롤러 - 웨이크 이벤트는 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 하기 위한 것임 -를 포함하는 장치를 포함한다.
예 2는 예 1의 장치로서, 디바이스 상태 컨트롤러는 센서 측정값들에 기초하여 디바이스의 사용자의 활동을 결정하고, 센서 측정값들은 센서 측정값들에 기초한 디바이스의 덮개 모드, 센서 측정값들에 기초한 디바이스의 위치, 및 센서 측정값들에 기초한 디바이스의 움직임에 대응하는 장치를 포함한다.
예 3은 예 1의 장치로서, 미리 결정된 기간 동안 컨텍스트들을 저장하기 위한 버퍼를 더 포함하고, 미리 결정된 기간은 최대 예측가능한 시간에 대응하는 장치를 포함한다.
예 4는 예 3의 장치로서, 최대 예측가능한 시간은 센서 측정값들의 제1 시간과 운영 체제의 상태의 제2 시간 사이의 기간에 대응하는 장치를 포함한다.
예 5는 예 1의 장치로서, 연관기는 기간에 걸친 제1 시간 빈들에서의 컨텍스트들의 빈도에 대응하는 제1 히스토그램, 기간에 걸친 제2 시간 빈들에서의 운영 체제의 상태의 빈도에 대응하는 제2 히스토그램, 및 기간 전체에 걸친 제1 시간 빈들에서의 컨텍스트들의 빈도와 제2 시간 빈들에서의 운영 체제의 상태의 빈도 사이의 연관에 대응하는 제3 히스토그램을 생성하는 장치를 포함한다.
예 6은 예 5의 장치로서, 훈련 컨트롤러는 제1, 제2 및 제3 히스토그램으로부터 기간 전체에 걸친 운영 체제의 비활성 상태 및 활성 상태에 관한 예측들을 도출하는 장치를 포함한다.
예 7은 예 1의 장치로서, 연관기는 컨텍스트들을 획득하는 것에 응답하여 운영 체제의 상태에 대해 대기 관리 시스템에 질의하고, 질의는 컨텍스트들의 제1 시간으로부터 미리 결정된 기간 이후에 발생하는 장치를 포함한다.
예 8은 명령어들을 포함하는 비-일시적 컴퓨터 판독가능 저장 매체로서, 명령어들은 실행될 때, 하나 이상의 프로세서로 하여금, 적어도: 제1 시간에 수집된 센서 측정값들에 기초하여 디바이스의 컨텍스트들을 결정하게 하고; 운영 체제의 상태를 디바이스의 컨텍스트들과 연관시키게 하고 - 상태는 제1 시간 이후의 제2 시간에 획득됨 -; 연관에 기초하여 예측 모델을 생성하게 하고 - 예측 모델은 컨텍스트들에 기초하여 운영 체제의 상태가 활성일 제3 시간을 예측함 -; 및 제3 시간 이전에 웨이크 이벤트를 트리거함으로써 디바이스의 전력 소비를 감소시키게 하는 - 웨이크 이벤트는 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 하기 위한 것임 - 비-일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 9는 예 8의 비-일시적 컴퓨터 판독가능 저장 매체로서, 명령어들은 실행될 때, 하나 이상의 프로세서로 하여금, 센서 측정값들에 기초하여 디바이스의 사용자의 활동을 결정하게 하고, 센서 측정값들은 센서 측정값들에 기초한 디바이스의 덮개 모드, 센서 측정값들에 기초한 디바이스의 위치, 및 센서 측정값들에 기초한 디바이스의 움직임에 대응하는 비-일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 10은 예 8의 비-일시적 컴퓨터 판독가능 저장 매체로서, 명령어들은 실행될 때, 하나 이상의 프로세서로 하여금, 미리 결정된 기간 동안 컨텍스트들을 저장하게 하고, 미리 결정된 기간은 최대 예측가능한 시간에 대응하는 비-일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 11은 예 8의 비-일시적 컴퓨터 판독가능 저장 매체로서, 명령어들은 실행될 때, 하나 이상의 프로세서로 하여금, 기간에 걸친 제1 시간 빈들에서의 컨텍스트들의 빈도에 대응하는 제1 히스토그램, 기간에 걸친 제2 시간 빈들에서의 운영 체제의 상태의 빈도에 대응하는 제2 히스토그램, 및 기간 전체에 걸친 제1 시간 빈들에서의 컨텍스트들의 빈도와 제2 시간 빈들에서의 운영 체제의 상태의 빈도 사이의 연관에 대응하는 제3 히스토그램을 생성하게 하는 비-일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 12는 예 11의 비-일시적 컴퓨터 판독가능 저장 매체로서, 명령어들은 실행될 때, 하나 이상의 프로세서로 하여금, 제1, 제2 및 제3 히스토그램으로부터 기간 전체에 걸친 운영 체제의 비활성 상태 및 활성 상태에 관한 예측들을 도출하게 하는 비-일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 13은 예 8의 비-일시적 컴퓨터 판독가능 저장 매체로서, 명령어들은 실행될 때, 하나 이상의 프로세서로 하여금, 컨텍스트들을 획득하는 것에 응답하여 운영 체제의 상태에 대해 대기 관리 시스템에 질의하게 하고, 질의는 컨텍스트들의 제1 시간으로부터 미리 결정된 기간 이후에 발생하는 비-일시적 컴퓨터 판독가능 저장 매체를 포함한다.
예 14는 방법으로서, 제1 시간에 수집된 센서 측정값들에 기초하여 디바이스의 컨텍스트들을 결정하는 단계를 포함하고, 컨텍스트들은: 운영 체제의 상태를 디바이스의 컨텍스트들과 연관시키는 단계 - 상태는 제1 시간 이후의 제2 시간에 획득됨 -; 연관에 기초하여 예측 모델을 생성하는 단계 - 예측 모델은 컨텍스트들에 기초하여 운영 체제의 상태가 활성일 제3 시간을 예측함 -; 및 제3 시간 이전에 웨이크 이벤트를 트리거함으로써 디바이스의 전력 소비를 감소시키는 단계 - 웨이크 이벤트는 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 하기 위한 것임 -에 대응하는 방법을 포함한다.
예 15는 예 14의 방법으로서, 센서 측정값들에 기초하여 디바이스의 사용자의 활동을 결정하는 단계를 더 포함하고, 센서 측정값들은 센서 측정값들에 기초한 디바이스의 덮개 모드, 센서 측정값들에 기초한 디바이스의 위치, 및 센서 측정값들에 기초한 디바이스의 움직임에 대응하는 방법을 포함한다.
예 16은 예 14의 방법으로서, 미리 결정된 기간 동안 컨텍스트들을 저장하는 단계를 더 포함하고, 미리 결정된 기간은 최대 예측가능한 시간에 대응하는 방법을 포함한다.
예 17은 예 16의 방법으로서, 최대 예측가능한 시간은 센서 측정값들의 제1 시간과 운영 체제의 상태의 제2 시간 사이의 기간에 대응하는 방법을 포함한다.
예 18은 예 14의 방법으로서, 기간에 걸친 제1 시간 빈들에서의 컨텍스트들의 빈도에 대응하는 제1 히스토그램, 기간에 걸친 제2 시간 빈들에서의 운영 체제의 상태의 빈도에 대응하는 제2 히스토그램, 및 기간 전체에 걸친 제1 시간 빈들에서의 컨텍스트들의 빈도와 제2 시간 빈들에서의 운영 체제의 상태의 빈도 사이의 연관에 대응하는 제3 히스토그램을 생성하는 단계를 더 포함하는 방법을 포함한다.
예 19는 예 18의 방법으로서, 제1, 제2 및 제3 히스토그램으로부터 기간 전체에 걸친 운영 체제의 비활성 상태 및 활성 상태에 관한 예측들을 도출하는 단계를 더 포함하는 방법을 포함한다.
예 20은 예 14의 방법으로서, 컨텍스트들을 획득하는 것에 응답하여 운영 체제의 상태에 대해 대기 관리 시스템에 질의하는 단계를 더 포함하고, 질의는 컨텍스트들의 제1 시간으로부터 미리 결정된 기간 이후에 발생하는 방법을 포함한다.
예 21은 장치로서, 제1 시간에 수집된 센서 측정값들에 기초하여 디바이스의 컨텍스트들을 결정하기 위한 수단; 운영 체제의 상태를 컨텍스트들과 연관시키기 위한 수단 - 상태는 제1 시간 이후의 제2 시간에 획득됨 -; 연관에 기초하여 예측 모델을 생성하기 위한 수단 - 예측 모델은 컨텍스트들에 기초하여 운영 체제의 상태가 활성일 제3 시간을 예측함 -; 및 제3 시간 이전에 웨이크 이벤트를 트리거함으로써 디바이스의 전력 소비를 감소시키도록 스케줄링하기 위한 수단 - 웨이크 이벤트는 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 하기 위한 것임 -을 포함하는 장치를 포함한다.
예 22는 예 21의 장치로서, 결정하기 위한 수단은 센서 측정값들에 기초하여 디바이스의 사용자의 활동을 결정하고, 센서 측정값들은 센서 측정값들에 기초한 디바이스의 덮개 모드, 센서 측정값들에 기초한 디바이스의 위치, 및 센서 측정값들에 기초한 디바이스의 움직임에 대응하는 장치를 포함한다.
예 23은 예 21의 장치로서, 미리 결정된 기간 동안 컨텍스트들을 저장하기 위한 수단을 더 포함하고, 미리 결정된 기간은 최대 예측가능한 시간에 대응하는 장치를 포함한다.
예 24는 예 23의 장치로서, 저장하기 위한 수단은 최대 예측가능한 시간을 결정하기 위해 센서 측정값들의 제1 시간과 운영 체제의 상태의 제2 시간 사이의 기간을 결정하는 장치를 포함한다.
예 25는 예 21의 장치로서, 연관시키기 위한 수단은 기간에 걸친 제1 시간 빈들에서의 컨텍스트들의 빈도에 대응하는 제1 히스토그램, 기간에 걸친 제2 시간 빈들에서의 운영 체제의 상태의 빈도에 대응하는 제2 히스토그램, 및 기간 전체에 걸친 제1 시간 빈들에서의 컨텍스트들의 빈도와 제2 시간 빈들에서의 운영 체제의 상태의 빈도 사이의 연관에 대응하는 제3 히스토그램을 생성하는 장치를 포함한다.
예 26은 예 25의 장치로서, 생성하기 위한 수단은 제1, 제2 및 제3 히스토그램으로부터 기간 전체에 걸친 운영 체제의 비활성 상태 및 활성 상태에 관한 예측들을 도출하는 장치를 포함한다.
예 27은 장치로서, 훈련된 모델을 이용하여, 상태 컨텍스트들에 기초하여 운영 체제의 활성 상태의 확률을 결정하고, 확률에 기초하여 장래 사용자 의도의 예측을 생성하는 예측 컨트롤러; 및 제1 및 제2 이벤트 컨텍스트 및 예측에 기초하여 운영 체제를 활성화하기 위한 웨이크 기간을 결정하는 스케줄 컨트롤러를 포함하는 장치를 포함한다.
예 28은 예 27의 장치로서, 운영 체제를 구현하는 디바이스의 외부 환경에 대응하는 센서 측정값들을 수집하고; 센서 측정값들에 기초하여 사용자 활동 데이터를 결정하고; 센서 측정값들에 기초하여 덮개 모드를 결정하고; 센서 측정값들에 기초하여 디바이스의 위치를 결정하고; 센서 측정값들에 기초하여 디바이스 움직임 데이터를 결정하는 디바이스 상태 컨트롤러를 더 포함하는 장치를 포함한다.
예 29은 예 27의 장치로서, 스케줄 컨트롤러는 운영 체제를 구현하는 디바이스의 이벤트 전환에 대응하는 제1 및 제2 이벤트 컨텍스트를 획득하고; 제1 또는 제2 이벤트 컨텍스트 중 적어도 하나가 운영 체제의 즉각적인 활성화를 나타내는지를 결정하고; 즉각적인 웨이크 기간을 생성하기 위해 장래 사용자 의도의 예측을 오버라이드하는 장치를 포함한다.
예 30은 예 27의 장치로서, 활성 동작을 위한 운영 체제의 준비를 용이하게 하기 위해, 웨이크 기간을 획득하고 웨이크 기간에서 웨이크 이벤트를 개시하는 웨이크 타이머를 더 포함하는 장치를 포함한다.
예 31은 예 30의 장치로서, 웨이크 타이머는 웨이크 기간이 만료될 때 대기 동작을 완료하는 장치를 포함한다.
예 32는 예 27의 장치로서, 예측 컨트롤러는 운영 체제의 상태의 조건에 대응하는 컨텍스트들의 피쳐들을 추출하고; 상태 컨텍스트들의 피쳐들을 나타내는 피쳐 벡터를 생성하고; 피쳐 벡터를 훈련된 모델에 입력하여, 운영 체제의 상태가 장래 시간에 개시될 제1 우도, 운영 체제의 상태가 장래 시간에 비활성화될 제2 우도, 및 운영 체제의 상태가 장래 시간에 변경되지 않을 제3 우도를 생성하는 장치를 포함한다.
특정한 예시적인 방법들, 장치들 및 제조 물품들이 본 명세서에 개시되었지만, 본 특허의 보호 범위는 이에 제한되지 않는다. 반대로, 본 특허는 본 특허의 청구항들의 범위 내에 상당히 속하는 모든 방법들, 장치들 및 제조 물품들을 포함한다.
본 명세서에서 이하의 청구항들은 이러한 참조에 의해 본 상세한 설명에 통합되며, 각각의 청구항은 그 자체로 본 개시내용의 별도의 실시예로서 독립한다.

Claims (32)

  1. 장치로서,
    제1 시간에 수집된 센서 측정값들에 기초하여 디바이스의 컨텍스트들을 결정하는 디바이스 상태 컨트롤러;
    운영 체제의 상태를 상기 디바이스의 상기 컨텍스트들과 연관시키는 연관기(associator) - 상기 상태는 상기 제1 시간 이후의 제2 시간에 획득됨 -;
    상기 연관에 기초하여 예측 모델을 생성하는 훈련 컨트롤러 - 상기 예측 모델은 상기 컨텍스트들에 기초하여 상기 운영 체제의 상태가 활성일 제3 시간을 예측함 -; 및
    상기 제3 시간 이전에 웨이크 이벤트를 트리거함으로써 상기 디바이스의 전력 소비를 감소시키는 스케줄 컨트롤러 - 상기 웨이크 이벤트는 상기 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 하기 위한 것임 -
    를 포함하는, 장치.
  2. 제1항에 있어서, 상기 디바이스 상태 컨트롤러는 센서 측정값들에 기초하여 상기 디바이스의 사용자의 활동을 결정하고, 상기 센서 측정값들은 상기 센서 측정값들에 기초한 상기 디바이스의 덮개 모드(lid mode), 상기 센서 측정값들에 기초한 상기 디바이스의 위치, 및 상기 센서 측정값들에 기초한 상기 디바이스의 움직임에 대응하는, 장치.
  3. 제1항에 있어서, 미리 결정된 기간 동안 상기 컨텍스트들을 저장하기 위한 버퍼를 더 포함하고, 상기 미리 결정된 기간은 최대 예측가능한 시간에 대응하는, 장치.
  4. 제3항에 있어서, 상기 최대 예측가능한 시간은 상기 센서 측정값들의 상기 제1 시간과 상기 운영 체제의 상태의 상기 제2 시간 사이의 기간에 대응하는, 장치.
  5. 제1항에 있어서, 상기 연관기는 기간에 걸친 제1 시간 빈들(time bins)에서의 상기 컨텍스트들의 빈도에 대응하는 제1 히스토그램, 상기 기간에 걸친 제2 시간 빈들에서의 상기 운영 체제의 상태의 빈도에 대응하는 제2 히스토그램, 및 상기 기간 전체에 걸친 상기 제1 시간 빈들에서의 상기 컨텍스트들의 빈도와 상기 제2 시간 빈들에서의 상기 운영 체제의 상태의 빈도 사이의 연관에 대응하는 제3 히스토그램을 생성하는, 장치.
  6. 제5항에 있어서, 상기 훈련 컨트롤러는 상기 제1, 제2 및 제3 히스토그램으로부터 상기 기간 전체에 걸친 상기 운영 체제의 비활성 상태 및 활성 상태에 관한 예측들을 도출하는, 장치.
  7. 제1항에 있어서, 상기 연관기는 상기 컨텍스트들을 획득하는 것에 응답하여 상기 운영 체제의 상태에 대해 대기 관리 시스템(standby management system)에 질의하고, 상기 질의는 상기 컨텍스트들의 상기 제1 시간으로부터 미리 결정된 기간 이후에 발생하는, 장치.
  8. 명령어들을 포함하는 비-일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령어들은 실행될 때, 하나 이상의 프로세서로 하여금, 적어도:
    제1 시간에 수집된 센서 측정값들에 기초하여 디바이스의 컨텍스트들을 결정하게 하고;
    운영 체제의 상태를 상기 디바이스의 상기 컨텍스트들과 연관시키게 하고 - 상기 상태는 상기 제1 시간 이후의 제2 시간에 획득됨 -;
    상기 연관에 기초하여 예측 모델을 생성하게 하고 - 상기 예측 모델은 상기 컨텍스트들에 기초하여 상기 운영 체제의 상태가 활성일 제3 시간을 예측함 -; 및
    상기 제3 시간 이전에 웨이크 이벤트를 트리거함으로써 상기 디바이스의 전력 소비를 감소시키게 하는 - 상기 웨이크 이벤트는 상기 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 하기 위한 것임 -,
    비-일시적 컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서, 상기 명령어들은 실행될 때, 상기 하나 이상의 프로세서로 하여금, 센서 측정값들에 기초하여 상기 디바이스의 사용자의 활동을 결정하게 하고, 상기 센서 측정값들은 상기 센서 측정값들에 기초한 상기 디바이스의 덮개 모드, 상기 센서 측정값들에 기초한 상기 디바이스의 위치, 및 상기 센서 측정값들에 기초한 상기 디바이스의 움직임에 대응하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  10. 제8항에 있어서, 상기 명령어들은 실행될 때, 상기 하나 이상의 프로세서로 하여금, 미리 결정된 기간 동안 상기 컨텍스트들을 저장하게 하고, 상기 미리 결정된 기간은 최대 예측가능한 시간에 대응하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  11. 제8항에 있어서, 상기 명령어들은 실행될 때, 상기 하나 이상의 프로세서로 하여금, 기간에 걸친 제1 시간 빈들에서의 상기 컨텍스트들의 빈도에 대응하는 제1 히스토그램, 상기 기간에 걸친 제2 시간 빈들에서의 상기 운영 체제의 상태의 빈도에 대응하는 제2 히스토그램, 및 상기 기간 전체에 걸친 상기 제1 시간 빈들에서의 상기 컨텍스트들의 빈도와 상기 제2 시간 빈들에서의 상기 운영 체제의 상태의 빈도 사이의 연관에 대응하는 제3 히스토그램을 생성하게 하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  12. 제11항에 있어서, 상기 명령어들은 실행될 때, 상기 하나 이상의 프로세서로 하여금, 상기 제1, 제2 및 제3 히스토그램으로부터 상기 기간 전체에 걸친 상기 운영 체제의 비활성 상태 및 활성 상태에 관한 예측들을 도출하게 하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  13. 제8항에 있어서, 상기 명령어들은 실행될 때, 상기 하나 이상의 프로세서로 하여금, 상기 컨텍스트들을 획득하는 것에 응답하여 상기 운영 체제의 상태에 대해 대기 관리 시스템에 질의하게 하고, 상기 질의는 상기 컨텍스트들의 상기 제1 시간으로부터 미리 결정된 기간 이후에 발생하는, 비-일시적 컴퓨터 판독가능 저장 매체.
  14. 방법으로서,
    제1 시간에 수집된 센서 측정값들에 기초하여 디바이스의 컨텍스트들을 결정하는 단계
    를 포함하고, 상기 컨텍스트들은:
    운영 체제의 상태를 상기 디바이스의 상기 컨텍스트들과 연관시키는 단계 - 상기 상태는 상기 제1 시간 이후의 제2 시간에 획득됨 -;
    상기 연관에 기초하여 예측 모델을 생성하는 단계 - 상기 예측 모델은 상기 컨텍스트들에 기초하여 상기 운영 체제의 상태가 활성일 제3 시간을 예측함 -; 및
    상기 제3 시간 이전에 웨이크 이벤트를 트리거함으로써 상기 디바이스의 전력 소비를 감소시키는 단계 - 상기 웨이크 이벤트는 상기 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 하기 위한 것임 -
    에 대응하는, 방법.
  15. 제14항에 있어서, 센서 측정값들에 기초하여 상기 디바이스의 사용자의 활동을 결정하는 단계를 더 포함하고, 상기 센서 측정값들은 상기 센서 측정값들에 기초한 상기 디바이스의 덮개 모드, 상기 센서 측정값들에 기초한 상기 디바이스의 위치, 및 상기 센서 측정값들에 기초한 상기 디바이스의 움직임에 대응하는, 방법.
  16. 제14항에 있어서, 미리 결정된 기간 동안 상기 컨텍스트들을 저장하는 단계를 더 포함하고, 상기 미리 결정된 기간은 최대 예측가능한 시간에 대응하는, 방법.
  17. 제16항에 있어서, 상기 최대 예측가능한 시간은 상기 센서 측정값들의 상기 제1 시간과 상기 운영 체제의 상태의 상기 제2 시간 사이의 기간에 대응하는, 방법.
  18. 제14항에 있어서, 기간에 걸친 제1 시간 빈들에서의 상기 컨텍스트들의 빈도에 대응하는 제1 히스토그램, 상기 기간에 걸친 제2 시간 빈들에서의 상기 운영 체제의 상태의 빈도에 대응하는 제2 히스토그램, 및 상기 기간 전체에 걸친 상기 제1 시간 빈들에서의 상기 컨텍스트들의 빈도와 상기 제2 시간 빈들에서의 상기 운영 체제의 상태의 빈도 사이의 연관에 대응하는 제3 히스토그램을 생성하는 단계를 더 포함하는, 방법.
  19. 제18항에 있어서, 상기 제1, 제2 및 제3 히스토그램으로부터 상기 기간 전체에 걸친 상기 운영 체제의 비활성 상태 및 활성 상태에 관한 예측들을 도출하는 단계를 더 포함하는, 방법.
  20. 제14항에 있어서, 상기 컨텍스트들을 획득하는 것에 응답하여 상기 운영 체제의 상태에 대해 대기 관리 시스템에 질의하는 단계를 더 포함하고, 상기 질의는 상기 컨텍스트들의 상기 제1 시간으로부터 미리 결정된 기간 이후에 발생하는, 방법.
  21. 장치로서,
    제1 시간에 수집된 센서 측정값들에 기초하여 디바이스의 컨텍스트들을 결정하기 위한 수단;
    운영 체제의 상태를 상기 컨텍스트들과 연관시키기 위한 수단 - 상기 상태는 상기 제1 시간 이후의 제2 시간에 획득됨 -;
    상기 연관에 기초하여 예측 모델을 생성하기 위한 수단 - 상기 예측 모델은 상기 컨텍스트들에 기초하여 상기 운영 체제의 상태가 활성일 제3 시간을 예측함 -; 및
    상기 제3 시간 이전에 웨이크 이벤트를 트리거함으로써 상기 디바이스의 전력 소비를 감소시키도록 스케줄링하기 위한 수단 - 상기 웨이크 이벤트는 상기 디바이스가 비활성 상태를 빠져나가기 위한 대비를 하게 하기 위한 것임 -
    을 포함하는, 장치.
  22. 제21항에 있어서, 상기 결정하기 위한 수단은 센서 측정값들에 기초하여 상기 디바이스의 사용자의 활동을 결정하고, 상기 센서 측정값들은 상기 센서 측정값들에 기초한 상기 디바이스의 덮개 모드, 상기 센서 측정값들에 기초한 상기 디바이스의 위치, 및 상기 센서 측정값들에 기초한 상기 디바이스의 움직임에 대응하는, 장치.
  23. 제21항에 있어서, 미리 결정된 기간 동안 상기 컨텍스트들을 저장하기 위한 수단을 더 포함하고, 상기 미리 결정된 기간은 최대 예측가능한 시간에 대응하는, 장치.
  24. 제23항에 있어서, 상기 저장하기 위한 수단은 상기 최대 예측가능한 시간을 결정하기 위해 상기 센서 측정값들의 상기 제1 시간과 상기 운영 체제의 상태의 상기 제2 시간 사이의 기간을 결정하는, 장치.
  25. 제21항에 있어서, 상기 연관시키기 위한 수단은 기간에 걸친 제1 시간 빈들에서의 상기 컨텍스트들의 빈도에 대응하는 제1 히스토그램, 상기 기간에 걸친 제2 시간 빈들에서의 상기 운영 체제의 상태의 빈도에 대응하는 제2 히스토그램, 및 상기 기간 전체에 걸친 상기 제1 시간 빈들에서의 상기 컨텍스트들의 빈도와 상기 제2 시간 빈들에서의 상기 운영 체제의 상태의 빈도 사이의 연관에 대응하는 제3 히스토그램을 생성하는, 장치.
  26. 제25항에 있어서, 상기 생성하기 위한 수단은 상기 제1, 제2 및 제3 히스토그램으로부터 상기 기간 전체에 걸친 상기 운영 체제의 비활성 상태 및 활성 상태에 관한 예측들을 도출하는, 장치.
  27. 장치로서,
    예측 컨트롤러 - 상기 예측 컨트롤러는:
    훈련된 모델을 이용하여, 상태 컨텍스트들에 기초하여 운영 체제의 활성 상태의 확률을 결정하고;
    상기 확률에 기초하여 장래 사용자 의도의 예측을 생성함 -; 및
    제1 및 제2 이벤트 컨텍스트 및 상기 예측에 기초하여 상기 운영 체제를 활성화하기 위한 웨이크 기간을 결정하는 스케줄 컨트롤러
    를 포함하는, 장치.
  28. 제27항에 있어서, 디바이스 상태 컨트롤러를 더 포함하고, 상기 디바이스 상태 컨트롤러는:
    상기 운영 체제를 구현하는 디바이스의 외부 환경에 대응하는 센서 측정값들을 수집하고;
    상기 센서 측정값들에 기초하여 사용자 활동 데이터를 결정하고;
    상기 센서 측정값들에 기초하여 덮개 모드를 결정하고;
    상기 센서 측정값들에 기초하여 상기 디바이스의 위치를 결정하고;
    상기 센서 측정값들에 기초하여 디바이스 움직임 데이터를 결정하는,
    장치.
  29. 제27항에 있어서, 상기 스케줄 컨트롤러는:
    상기 운영 체제를 구현하는 디바이스의 이벤트 전환에 대응하는 상기 제1 및 제2 이벤트 컨텍스트를 획득하고;
    상기 제1 또는 제2 이벤트 컨텍스트 중 적어도 하나가 상기 운영 체제의 즉각적인 활성화를 나타내는지를 결정하고;
    즉각적인 웨이크 기간을 생성하기 위해 상기 장래 사용자 의도의 예측을 오버라이드하는,
    장치.
  30. 제27항에 있어서, 활성 동작을 위한 상기 운영 체제의 준비를 용이하게 하기 위해, 상기 웨이크 기간을 획득하고 상기 웨이크 기간에서 웨이크 이벤트를 개시하는 웨이크 타이머를 더 포함하는, 장치.
  31. 제30항에 있어서, 상기 웨이크 타이머는 상기 웨이크 기간이 만료될 때 대기 동작을 완료하는, 장치.
  32. 제27항에 있어서, 상기 예측 컨트롤러는:
    상기 운영 체제의 상태의 조건에 대응하는 상기 컨텍스트들의 피쳐들(features)을 추출하고;
    상기 상태 컨텍스트들의 상기 피쳐들을 나타내는 피쳐 벡터를 생성하고;
    상기 피쳐 벡터를 상기 훈련된 모델에 입력하여, 상기 운영 체제의 상태가 장래 시간에 개시될 제1 우도(likelihood), 상기 운영 체제의 상태가 상기 장래 시간에 비활성화될 제2 우도, 및 상기 운영 체제의 상태가 상기 장래 시간에 변경되지 않을 제3 우도를 생성하는,
    장치.
KR1020227041472A 2020-06-26 2020-06-26 컴퓨팅 시스템에서 웨이크 패턴을 동적으로 스케줄링하기 위한 방법들, 시스템들, 제조 물품들 및 장치들 KR20230027000A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/098326 WO2021258395A1 (en) 2020-06-26 2020-06-26 Methods, systems, articles of manufacture, and apparatus to dynamically schedule a wake pattern in a computing system

Publications (1)

Publication Number Publication Date
KR20230027000A true KR20230027000A (ko) 2023-02-27

Family

ID=79282760

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227041472A KR20230027000A (ko) 2020-06-26 2020-06-26 컴퓨팅 시스템에서 웨이크 패턴을 동적으로 스케줄링하기 위한 방법들, 시스템들, 제조 물품들 및 장치들

Country Status (6)

Country Link
US (1) US20230205307A1 (ko)
EP (1) EP4172720A4 (ko)
JP (1) JP2023538989A (ko)
KR (1) KR20230027000A (ko)
CN (1) CN115698901A (ko)
WO (1) WO2021258395A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022534338A (ja) 2019-03-27 2022-07-29 インテル コーポレイション スマート・ディスプレイ・パネル装置および関連する方法
US11379016B2 (en) 2019-05-23 2022-07-05 Intel Corporation Methods and apparatus to operate closed-lid portable computers
US11543873B2 (en) 2019-09-27 2023-01-03 Intel Corporation Wake-on-touch display screen devices and related methods
US11733761B2 (en) 2019-11-11 2023-08-22 Intel Corporation Methods and apparatus to manage power and performance of computing devices based on user presence
US11809535B2 (en) 2019-12-23 2023-11-07 Intel Corporation Systems and methods for multi-modal user device authentication
US11360528B2 (en) 2019-12-27 2022-06-14 Intel Corporation Apparatus and methods for thermal management of electronic user devices based on user activity
WO2024054386A1 (en) * 2022-09-06 2024-03-14 Apple Inc. Sensor-based display power control systems and methods
CN117667606B (zh) * 2024-02-02 2024-05-24 山东省计算中心(国家超级计算济南中心) 基于用户行为的高性能计算集群能耗预测方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468377B2 (en) * 2008-10-22 2013-06-18 Microsoft Corporation Conserving power using predictive modelling and signaling
US20140344599A1 (en) * 2013-05-15 2014-11-20 Advanced Micro Devices, Inc. Method and System for Power Management
US9785447B2 (en) * 2014-06-27 2017-10-10 Intel Corporation System standby emulation with fast resume
US10139897B2 (en) * 2014-11-10 2018-11-27 Novi Security, Inc. Power-optimized image capture and push
US9846471B1 (en) * 2015-02-12 2017-12-19 Marvell International Ltd. Systems and methods for power management in devices
US20170039480A1 (en) * 2015-08-06 2017-02-09 Microsoft Technology Licensing, Llc Workout Pattern Detection
KR102568686B1 (ko) * 2018-02-09 2023-08-23 삼성전자주식회사 컨텍스트 허브를 포함하는 모바일 장치 및 그것의 동작 방법
DK180118B1 (en) * 2018-05-07 2020-05-15 Apple Inc. DEVICES AND METHODS FOR ADJUSTING THE PROVISION OF NOTIFICATIONS
US11501781B2 (en) * 2018-06-05 2022-11-15 Samsung Electronics Co., Ltd. Methods and systems for passive wakeup of a user interaction device

Also Published As

Publication number Publication date
WO2021258395A1 (en) 2021-12-30
EP4172720A1 (en) 2023-05-03
CN115698901A (zh) 2023-02-03
JP2023538989A (ja) 2023-09-13
US20230205307A1 (en) 2023-06-29
EP4172720A4 (en) 2024-03-27

Similar Documents

Publication Publication Date Title
KR20230027000A (ko) 컴퓨팅 시스템에서 웨이크 패턴을 동적으로 스케줄링하기 위한 방법들, 시스템들, 제조 물품들 및 장치들
CN109960395B (zh) 资源调度方法和计算机设备
US10219222B2 (en) Adjusting mobile device state based on user intentions and/or identity
US10267661B2 (en) Energy efficient mobile context collection
US11562297B2 (en) Automated input-data monitoring to dynamically adapt machine-learning techniques
KR101531449B1 (ko) 센서의 호출을 제어하기 위한 방법 및 장치
US10908884B2 (en) Methods and apparatus for runtime multi-scheduling of software executing on a heterogeneous system
US9124981B2 (en) Systems and methods for classification of audio environments
EP3513580A1 (en) Passive visit detection
Pérez-Torres et al. Power management techniques in smartphone-based mobility sensing systems: A survey
EP2875682A1 (en) Portable resource management systems and methods
US20180074571A1 (en) Smart plurality of sensors for power management
JP2021532487A (ja) 不注意運転予測システム
US20190102659A1 (en) Methods and apparatus to improve accuracy of edge and/or a fog-based classification
KR20210122043A (ko) 프리페처들을 동적으로 활성화 및/또는 비활성화하기 위한 방법들 및 장치들
US10863329B2 (en) Methods and apparatus for conditional classifier chaining in a constrained machine learning environment
Pendão et al. Energy consumption in personal mobile devices sensing applications
Chaib Draa et al. Sensing user context and habits for run-time energy optimization
US10713312B2 (en) System and method for context-launching of applications
EP3026650B1 (en) Pressure-based parking detection system
Donohoo Machine learning techniques for energy optimization in mobile embedded systems
AU2015252057B2 (en) Adjusting mobile device state based on user intentions and/or identity