KR20150083883A - System and method for controlling central processing unit power with guaranteed transient deadlines - Google Patents

System and method for controlling central processing unit power with guaranteed transient deadlines Download PDF

Info

Publication number
KR20150083883A
KR20150083883A KR1020157014652A KR20157014652A KR20150083883A KR 20150083883 A KR20150083883 A KR 20150083883A KR 1020157014652 A KR1020157014652 A KR 1020157014652A KR 20157014652 A KR20157014652 A KR 20157014652A KR 20150083883 A KR20150083883 A KR 20150083883A
Authority
KR
South Korea
Prior art keywords
processor
frequency
determined
performance guarantee
amount
Prior art date
Application number
KR1020157014652A
Other languages
Korean (ko)
Other versions
KR101578336B1 (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
Priority claimed from US13/669,043 external-priority patent/US9104411B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150083883A publication Critical patent/KR20150083883A/en
Application granted granted Critical
Publication of KR101578336B1 publication Critical patent/KR101578336B1/en

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/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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

Abstract

사전-컴퓨팅된 정상 상태 작업부하를 완료하기 위하여 그 프로세서에 대해 요구되는 것보다 많은 미리 결정된 시간의 양을 넘어 (예를 들어, 과도 작업부하들로 인해) 프로세서가 비지 상태에서 머물러 있지 않도록 보장하기 위한 성능 보장들을 컴퓨팅하고 강제하도록 구성된 동적 클록 및 전압 스케일링 (dynamic clock and voltage scaling; DCVS) 솔루션을 포함하는 방법들, 시스템들 및 디바이스들. DCVS 는, 프로세싱 코어가 프로세서의 동작 주파수 또는 전압에 관계없이, 기껏해야 작업의 미리 정의된 최대 양에 의해 그 정상 상태 작업부하 후방에 속하기만 하는 것을 보장하기 위하여, 가변 지연에 기초하여 프로세서의 주파수 및/또는 전압을 조절할 수도 있다.Ensuring that the processor does not stay in busy state beyond the amount of predetermined time (e.g., due to transient workloads) than is required for the processor to complete the pre-computed steady state workload Systems, and devices that include a dynamic clock and voltage scaling (DCVS) solution configured to compute and enforce performance guarantees. The DCVS is programmed to determine whether the processing core is to be programmed based on the variable delay based on the variable delay to ensure that the processing core is only behind the steady state work load by a predefined maximum amount of work, Frequency and / or voltage.

Description

보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR CONTROLLING CENTRAL PROCESSING UNIT POWER WITH GUARANTEED TRANSIENT DEADLINES}[0001] SYSTEM AND METHOD FOR CONTROLLING CENTRAL PROCESSING UNIT POWER WITH GUARANTEED TRANSIENT DEADLINES [0002]

관련 출원들Related Applications

이 출원은 2009 년 12 월 16 일자로 출원된 "System and Method of Dynamically Controlling Power in a Central Processing Unit (중앙 프로세싱 유닛에서 전력을 동적으로 제어하는 시스템 및 방법)" 이라는 명칭의 미국 특허 가출원 제 61/286,991 호에 대한 우선권의 이익을 청구하는, 2010 년 11 월 11 일자로 출원된 "System and Method for Controlling Central Processing Unit Power with Guaranteed Transient Deadlines (보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법)" 이라는 명칭의 미국 특허 출원 제 12/944,467 호의 일부 계속 출원 (continuation-in-part) 이고, 이들 양자는 그 전체적으로 참조를 위해 편입된다.This application is a continuation-in-part of U.S. Provisional Patent Application Serial No. 61 / 542,701 entitled " System and Method of Dynamically Controlling Power in a Central Processing Unit ", filed on December 16, Entitled " System and Method for Controlling Central Processing Unit Power with Guaranteed Transient Deadlines, " filed November 11, 2010, which claims priority to U.S. Provisional Patent Application Ser. System and method), which is incorporated herein by reference in its entirety for all purposes.

교차-참조 출원들Cross-reference applications

본 출원은, Rychlik 등에 의한 "System And Method For Controlling Central Processing Unit Power Based On Inferred Workload Parallelism (추론된 작업부하 병렬화에 기초하여 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법)" 이라는 명칭의 미국 특허 출원 제 12/944,140 호; Rychlik 등에 의한 "System and Method for Controlling Central Processing Unit Power in a Virtualized System (가상화된 시스템에서 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법)" 이라는 명칭의 미국 특허 출원 제 12/944,202 호; Rychlik 등에 의한 "System and Method for Asynchronously and Independently Controlling Core Clocks in a Multicore Central Processing Unit (멀티코어 중앙 프로세싱 유닛에서 코어 클록들을 비동기식으로 그리고 독립적으로 제어하기 위한 시스템 및 방법)" 이라는 명칭의 미국 특허 출원 제 12/944,321 호; Thomson 등에 의한 "System and Method for Controlling Central Processing Unit Power with Reduced Frequency Oscillations (저하된 주파수 발진들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법)" 이라는 명칭의 미국 특허 출원 제 12/944,378 호; Thomson 등에 의한 "System and Method for Controlling Central Processing Unit Power With Guaranteed Steady State Deadlines (보장된 정상 상태 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법)" 이라는 명칭의 미국 특허 출원 제 12/944,561 호; 및 Sur 등에 의한 "System and Method for Dynamically Controlling a Plurality of Cores in a Multicore Central Processing Unit based on Temperature (온도에 기초하여 멀티코어 중앙 프로세싱 유닛에서의 복수의 코어들을 동적으로 제어하기 위한 시스템 및 방법)" 이라는 명칭의 미국 특허 출원 제 12/944,564 호에 관련되고, 참조를 위해 이들을 편입한다.This application is a continuation-in-part of U.S. Patent Application entitled " System And Method For Controlling Central Processing Unit Power Based On Inferred Workload Parallelism " by Rychlik et al. 12 / 944,140; U.S. Patent Application No. 12 / 944,202 entitled " System and Method for Controlling Central Processing Unit Power in a Virtualized System ", by Rychlik et al., Entitled " System and Method for Controlling Central Processing Unit Power in a Virtualized System; Rychlik et al., Entitled " System and Method for Asynchronously and Independently Controlling Core Clocks in a Multicore Central Processing Unit " 12 / 944,321; U.S. Patent Application No. 12 / 944,378 entitled " System and Method for Controlling Central Processing Unit Power with Reduced Frequency Oscillations " by Thomson et al .; U.S. Patent Application No. 12 / 944,561 entitled " System and Method for Controlling Central Processing Unit Power With Guaranteed Steady State Deadlines " by Thomson et al., Entitled " System and Method for Controlling Central Processing Unit Power with Guaranteed Steady- number; And Sur et al., &Quot; System and Method for Dynamically Controlling Multiple Cores in a Multicore Central Processing Unit Based on Temperature ", by "System and Method for Dynamically Controlling a Plurality of Cores in a Multicore Central Processing Unit " US patent application < RTI ID = 0.0 > 12 / 944,564, < / RTI >

휴대용 컴퓨팅 디바이스 (portable computing device; PCD) 들은 유비쿼터스 (ubiquitous) 이다. 이 디바이스들은 셀룰러 전화들, 휴대용 정보 단말 (portable digital assistant; PDA) 들, 휴대용 게임 콘솔 (portable game console) 들, 팜톱 컴퓨터 (palmtop computer) 들, 및 다른 휴대용 전자 디바이스들을 포함할 수도 있다. 이 디바이스들의 주요 기능에 추가하여, 다수의 것들은 주변 기능들을 포함한다. 예를 들어, 셀룰러 전화는 셀룰러 전화 호출들을 행하는 주요 기능과, 스틸 카메라 (still camera), 비디오 카메라, 글로벌 위치결정 시스템 (global positioning system; GPS) 내비게이션, 웹 브라우징, 이메일들의 전송 및 수신, 텍스트 메시지들의 전송 및 수신, 푸시-투-토크 (push-to-talk) 능력들 등의 주변 기능들을 포함할 수도 있다. 이러한 디바이스의 기능성이 증가할수록, 이러한 기능성을 지원하기 위해 요구된 컴퓨팅 또는 프로세싱 파워는 또한 증가한다. 또한, 컴퓨팅 파워가 증가할수록, 컴퓨팅 파워를 제공하는 프로세서 또는 프로세서들을 효과적으로 관리하기 위한 더 큰 필요성이 존재한다.Portable computing devices (PCDs) are ubiquitous. These devices may include cellular phones, portable digital assistants (PDAs), portable game consoles, palmtop computers, and other portable electronic devices. In addition to the main functions of these devices, many include peripheral functions. For example, a cellular telephone may have a main function of making cellular telephone calls, a still camera, a video camera, a global positioning system (GPS) navigation, web browsing, Transmission and reception of data, and push-to-talk capabilities. As the functionality of these devices increases, the computing or processing power required to support this functionality also increases. Also, as computing power increases, there is a greater need to effectively manage processors or processors that provide computing power.

따라서, 필요한 것은 멀티코어 CPU 내에서 전력을 제어하는 개선된 방법이다.Thus, what is needed is an improved method of controlling power within a multicore CPU.

본원에 편입되며 이 명세서의 일부를 구성하는 첨부한 도면들은 발명의 예시적인 양태들을 예시하고, 위에서 주어진 일반적인 설명 및 이하에서 주어진 상세한 설명과 함께, 발명의 특징들을 설명하도록 작용한다.
도 1 은 폐쇄된 위치에서의 휴대용 컴퓨팅 디바이스 (PCD) 의 제 1 양태의 정면 평면도이다.
도 2 는 개방된 위치에서의 PCD 의 제 1 양태의 정면 평면도이다.
도 3 은 PCD 의 제 2 양태의 블록도이다.
도 4 는 프로세싱 시스템의 블록도이다.
도 5 는 CPU 내의 전력을 동적으로 제어하는 방법의 제 1 양태를 예시하는 플로우차트이다.
도 6 은 CPU 내의 전력을 동적으로 제어하는 방법의 제 2 양태의 제 1 부분을 예시하는 플로우차트이다.
도 7 은 멀티코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 2 양태의 제 2 부분을 예시하는 플로우차트이다.
도 8 은 시간에 걸쳐 도표화된 동적 클록 및 전압 스케일링 (dynamic clock and voltage scaling; DCVS) 제어된 CPU 주파수를 도시하는 예시적인 그래프이다.
도 9 는 다양한 성능 레벨들에 대한 유효 과도 응답 시간들을 도시하는 예시적인 그래프이다.
도 10 은 다양한 양태들에 따라 성능 보장 (guarantee) 들을 강제하는 동적 클록 주파수/전압 스케일링 (DCVS) 솔루션을 구현하는 컴퓨팅 디바이스에서 논리적 컴포넌트들 및 정보 흐름들을 예시하는 블록도이다.
도 11a 내지 도 11b 는 성능 보장을 생성하는 일 양태의 방법을 예시하는 프로세스 흐름도들이다.
도 12 내지 도 13 은 프로세싱 코어가 그의 사전-컴퓨팅된, 예측된, 및/또는 실제의 정상 상태 작업부하를 완료하기 위하여 요구되는 것보다 많은 미리 결정된 시간의 양을 넘어 비지 상태 (busy state) 에서 머물러 있지 않도록 보장하기 위하여 성능 보장을 강제하는 다양한 양태의 방법들을 예시하는 프로세스 흐름도들이다.
도 14 는 성능 보장을 강제하는 또 다른 양태의 방법을 예시하는 프로세스 흐름도이다.
도 15 는 일 양태에서 이용하기에 적당한 이동 디바이스의 컴포넌트 블록도이다.
도 16 은 일 양태에서 이용하기에 적당한 서버 디바이스의 컴포넌트 블록도이다.
도 17 은 일 양태에서 이용하기에 적당한 랩톱 컴퓨터 디바이스의 컴포넌트 블록도이다.
BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate exemplary aspects of the invention and, together with the general description given above and the detailed description given below, serve to explain the features of the invention.
1 is a front plan view of a first embodiment of a portable computing device (PCD) in a closed position.
2 is a front plan view of a first embodiment of the PCD in an open position;
3 is a block diagram of a second aspect of the PCD;
4 is a block diagram of a processing system.
5 is a flow chart illustrating a first aspect of a method for dynamically controlling power in a CPU.
6 is a flow chart illustrating a first portion of a second aspect of a method for dynamically controlling power in a CPU.
7 is a flow chart illustrating a second portion of a second aspect of a method for dynamically controlling power in a multicore CPU.
Figure 8 is an exemplary graph illustrating dynamic clock and voltage scaling (DCVS) controlled CPU frequency over time.
9 is an exemplary graph illustrating effective transient response times for various performance levels.
10 is a block diagram illustrating logical components and information flows in a computing device implementing a dynamic clock frequency / voltage scaling (DCVS) solution to enforce performance guarantees in accordance with various aspects.
11A-11B are process flow diagrams illustrating a method of one aspect of generating performance guarantees.
Figures 12-13 illustrate how a processing core may be in a busy state beyond an amount of more than a predetermined amount of time than is required to complete its pre-computed, predicted, and / These are process flow diagrams illustrating various aspects of methods for enforcing performance guarantees to ensure that they do not stay.
Figure 14 is a process flow diagram illustrating another method of enforcing performance assurance.
15 is a component block diagram of a mobile device suitable for use in an aspect.
16 is a component block diagram of a server device suitable for use in an aspect.
17 is a component block diagram of a laptop computer device suitable for use in one aspect.

다양한 실시형태들은 첨부한 도면들을 참조하여 상세하게 설명될 것이다. 가능한 경우, 동일한 참조 번호들은 동일하거나 유사한 부분들을 지칭하기 위하여 도면들의 전반에 걸쳐 이용될 것이다. 특별한 예들 및 구현예들에 대해 행해진 참조들은 예시적인 목적들을 위한 것이고, 발명 또는 청구항들의 범위를 제한하도록 의도된 것은 아니다.Various embodiments will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to specific examples and implementations are for illustrative purposes only and are not intended to limit the scope of the invention or the claims.

단어 "예시적" 은 "예, 사례, 또는 예시로서 작용함" 을 의미하기 위하여 본원에서 이용된다. "예시적" 으로서 본원에서 설명된 임의의 양태는 다른 양태들에 비해 바람직하거나 유익한 것으로 반드시 해석되어야 하는 것은 아니다.The word "exemplary" is used herein to mean "serving as an example, instance, or illustration. &Quot; Any aspect described herein as "exemplary " is not necessarily to be construed as preferred or advantageous over other aspects.

이 설명에서, 용어 "애플리케이션" 은 또한, 오브젝트 코드 (object code), 스크립트 (script) 들, 바이트 코드 (byte code), 마크업 언어 (markup language) 파일들, 및 패치 (patch) 들과 같은 실행가능한 컨텐츠를 가지는 파일들을 포함할 수도 있다. 추가적으로, 본원에서 지칭된 "애플리케이션" 은 또한, 열릴 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 사실상 실행가능하지 않은 파일들을 포함할 수도 있다.In this description, the term "application" is also intended to encompass executable code such as object code, scripts, byte code, markup language files, It may contain files with possible content. Additionally, an "application" referred to herein may also include files that are substantially non-executable, such as documents that may need to be opened or other data files that need to be accessed.

용어 "컨텐츠" 는 또한, 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능한 컨텐츠를 가지는 파일들을 포함할 수도 있다. 추가적으로, 본원에서 지칭된 "컨텐츠" 는 또한, 열릴 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 자연적으로 실행가능하지 않은 파일들을 포함할 수도 있다.The term "content" may also include files having executable content such as object code, scripts, byte code, markup language files, and patches. Additionally, the "content" referred to herein may also include files that are not naturally executable, such as documents that may need to be opened or other data files that need to be accessed.

이 설명에서 이용된 바와 같이, 용어들 "컴포넌트", "데이터베이스", "모듈", "시스템" 등은 컴퓨터-관련 엔티티, 어느 하나의 하드웨어, 펌웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 지칭하도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 엑시큐터블 (executable), 실행의 스레드 (thread of execution), 프로그램, 및/또는 컴퓨터일 수도 있지만, 이들인 것으로 제한되지 않는다. 예시로서, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 컴퓨팅 디바이스 양자는 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행의 스레드 내에서 상주할 수도 있고, 컴포넌트는 하나의 컴퓨터 상에서 로컬라이즈 (localize) 될 수도 있고 및/또는 2 개 이상의 컴퓨터들 사이에서 분산될 수도 있다. 추가적으로, 이 컴포넌트들은 그 위에 저장된 다양한 데이터 구조들을 가지는 다양한 컴퓨터 판독가능한 매체들로부터 실행될 수도 있다. 컴포넌트들은 예컨대, 하나 이상의 데이터 패킷들 (예를 들어, 로컬 시스템, 분산 시스템에서, 및/또는 신호를 통해 다른 시스템들과 인터넷과 같은 네트워크를 가로질러, 또 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터의 데이터) 을 가지는 신호에 따라 로컬 및/또는 원격 프로세스들을 통해 통신할 수도 있다.As used in this description, the terms "component," "database," "module," "system," and the like are intended to refer to a computer-related entity, any combination of hardware, firmware, Is intended to refer to software. For example, a component may be, but is not limited to, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and / or a computer. By way of example, both an application running on a computing device and a computing device may be a component. One or more components may reside within a process and / or thread of execution, and the components may be localized on one computer and / or distributed among two or more computers. Additionally, these components may be executed from various computer readable media having various data structures stored thereon. The components may include, for example, one or more data packets (e.g., from a local system, a distributed system, and / or from one component interacting with another component across a network, such as the Internet, Lt; / RTI > and / or remote processes depending on the signal having the data of the mobile station < RTI ID = 0.0 >

도 1 및 도 2 를 먼저 참조하면, 예시적인 휴대용 컴퓨팅 디바이스 (PCD) 가 도시되어 있고 일반적으로 100 으로 표기되어 있다. 도시된 바와 같이, PCD (100) 는 하우징 (102) 을 포함할 수도 있다. 하우징 (102) 은 상부 하우징 부분 (104) 및 하부 하우징 부분 (106) 을 포함할 수도 있다. 도 1 은 상부 하우징 부분 (104) 이 디스플레이 (108) 를 포함할 수도 있는 것을 도시한다. 특별한 양태에서, 디스플레이 (108) 는 터치 스크린 디스플레이일 수도 있다. 상부 하우징 부분 (104) 은 또한 트랙볼 (trackball) 입력 디바이스 (110) 를 포함할 수도 있다. 또한, 도 1 에서 도시된 바와 같이, 상부 하우징 부분 (104) 은 파워 온 (power on) 버튼 (112) 및 파워 오프 (power off) 버튼 (114) 을 포함할 수도 있다. 도 1 에서 도시된 바와 같이, PCD (100) 의 상부 하우징 부분 (104) 은 복수의 표시자 라이트 (indicator light) 들 (116) 및 스피커 (118) 를 포함할 수도 있다. 각각의 표시자 라이트 (116) 는 발광 다이오드 (LED) 일 수도 있다.Referring first to Figures 1 and 2, an exemplary handheld computing device (PCD) is shown and generally designated 100. As shown, the PCD 100 may include a housing 102. The housing 102 may include an upper housing portion 104 and a lower housing portion 106. FIG. 1 illustrates that the upper housing portion 104 may include a display 108. In particular aspects, the display 108 may be a touch screen display. The upper housing portion 104 may also include a trackball input device 110. 1, the upper housing portion 104 may also include a power on button 112 and a power off button 114. In addition, The upper housing portion 104 of the PCD 100 may include a plurality of indicator light 116 and a speaker 118, as shown in FIG. Each indicator light 116 may be a light emitting diode (LED).

특별한 양태에서, 도 2 에서 도시된 바와 같이, 상부 하우징 부분 (104) 은 하부 하우징 부분 (106) 에 대해 이동가능하다. 구체적으로, 상부 하우징 부분 (104) 은 하부 하우징 부분 (106) 에 대해 슬라이딩 가능할 수도 있다. 도 2 에서 도시된 바와 같이, 하부 하우징 부분 (106) 은 멀티-버튼 키보드 (120) 를 포함할 수도 있다. 특별한 양태에서, 멀티-버튼 키보드 (120) 는 표준 QWERTY 키보드일 수도 있다. 멀티-버튼 키보드 (120) 는 상부 하우징 부분 (104) 이 하부 하우징 부분 (106) 에 대해 이동될 때에 드러나게 될 수도 있다. 도 2 는 PCD (100) 가 하부 하우징 부분 (106) 상에서 재설정 버튼 (122) 을 포함할 수도 있다는 것을 추가로 예시한다.In a particular aspect, the upper housing portion 104 is movable relative to the lower housing portion 106, as shown in FIG. Specifically, the upper housing portion 104 may be slidable relative to the lower housing portion 106. As shown in FIG. 2, lower housing portion 106 may include a multi-button keyboard 120. In a particular aspect, the multi-button keyboard 120 may be a standard QWERTY keyboard. The multi-button keyboard 120 may be exposed when the upper housing portion 104 is moved relative to the lower housing portion 106. Figure 2 further illustrates that the PCD 100 may include a reset button 122 on the lower housing portion 106. [

도 3 을 참조하면, 휴대용 컴퓨팅 디바이스 (PCD) 의 예시적인 비-제한적인 양태들이 도시되어 있고 일반적으로 320 으로 표기되어 있다. 도시된 바와 같이, PCD (320) 는 멀티코어 CPU (324) 를 포함하는 온-칩 (on-chip) 시스템 (322) 을 포함한다. 멀티코어 CPU (324) 는 제로 번째 코어 (zeroth core; 325), 제 1 코어 (326), 및 N 번째 코어 (327) 를 포함할 수도 있다.Referring to FIG. 3, exemplary non-limiting aspects of a portable computing device (PCD) are shown and generally designated 320. As shown, the PCD 320 includes an on-chip system 322 that includes a multicore CPU 324. The on- The multi-core CPU 324 may include a zeroth core 325, a first core 326, and an Nth core 327. [

도 3 에서 예시된 바와 같이, 디스플레이 제어기 (328) 및 터치 스크린 제어기 (330) 는 멀티코어 CPU (324) 에 결합된다. 결국, 온-칩 시스템 (322) 의 외부에 있는 디스플레이/터치 스크린 (332) 은 디스플레이 제어기 (328) 및 터치 스크린 제어기 (330) 에 결합된다.As illustrated in FIG. 3, the display controller 328 and the touch screen controller 330 are coupled to the multicore CPU 324. As a result, the display / touch screen 332, which is external to the on-chip system 322, is coupled to the display controller 328 and the touch screen controller 330.

도 3 은 비디오 인코더 (334), 예를 들어, PAL (phase alternating line) 인코더, SECAM (sequential couleur a memoire) 인코더, 또는 NTSC (national television system(s) committee) 인코더가 멀티코어 CPU (324) 에 결합되는 것을 추가로 표시한다. 또한, 비디오 증폭기 (336) 는 비디오 인코더 (334) 및 디스플레이/터치 스크린 (332) 에 결합된다. 또한, 비디오 포트 (338) 는 비디오 증폭기 (336) 에 결합된다. 도 3 에서 도시된 바와 같이, 유니버셜 직렬 버스 (universal serial bus; USB) 제어기 (340) 는 멀티코어 CPU (324) 에 결합된다. 또한, USB 포트 (342) 는 USB 제어기 (340) 에 결합된다. 메모리 (344) 및 가입자 식별 모듈 (subscriber identity module; SIM) 카드 (346) 는 또한, 멀티코어 CPU (324) 에 결합될 수도 있다. 또한, 도 3 에서 도시된 바와 같이, 디지털 카메라 (348) 는 멀티코어 CPU (324) 에 결합될 수도 있다. 예시적인 양태에서, 디지털 카메라 (348) 는 전하-결합 소자 (charge-coupled device; CCD) 카메라 또는 상보형 금속-산화물 반도체 (complementary metal-oxide semiconductor; CMOS) 카메라이다.3 is a block diagram of a video encoder 334, such as a phase alternating line (PAL) encoder, a sequential couleur a memoire (SECAM) encoder, or a national television system (s) committee Lt; / RTI > In addition, video amplifier 336 is coupled to video encoder 334 and display / touch screen 332. The video port 338 is also coupled to a video amplifier 336. As shown in FIG. 3, a universal serial bus (USB) controller 340 is coupled to the multicore CPU 324. The USB port 342 is also coupled to the USB controller 340. The memory 344 and the subscriber identity module (SIM) card 346 may also be coupled to the multicore CPU 324. [ 3, the digital camera 348 may also be coupled to the multicore CPU 324. [ In an exemplary embodiment, the digital camera 348 is a charge-coupled device (CCD) camera or a complementary metal-oxide semiconductor (CMOS) camera.

도 3 에서 추가로 예시된 바와 같이, 스테레오 오디오 코덱 (CODEC) (350) 은 멀티코어 CPU (324) 에 결합될 수도 있다. 또한, 오디오 증폭기 (352) 는 스테레오 오디오 코덱 (350) 에 결합될 수도 있다. 예시적인 양태에서, 제 1 스테레오 스피커 (354) 및 제 2 스테레오 스피커 (356) 는 오디오 증폭기 (352) 에 결합된다. 도 3 은 마이크로폰 증폭기 (358) 가 또한 스테레오 오디오 코덱 (350) 에 결합될 수도 있는 것을 도시한다. 추가적으로, 마이크로폰 (360) 은 마이크로폰 증폭기 (358) 에 결합될 수도 있다. 특별한 양태에서, 주파수 변조 (frequency modulation; FM) 라디오 튜너 (362) 는 스테레오 오디오 코덱 (350) 에 결합될 수도 있다. 또한, FM 안테나 (364) 는 FM 라디오 튜너 (362) 에 결합된다. 또한, 스테레오 헤드폰들 (366) 은 스테레오 오디오 코덱 (350) 에 결합될 수도 있다.As further illustrated in FIG. 3, a stereo audio codec (CODEC) 350 may be coupled to the multicore CPU 324. FIG. In addition, the audio amplifier 352 may be coupled to the stereo audio codec 350. In an exemplary embodiment, the first stereo speaker 354 and the second stereo speaker 356 are coupled to the audio amplifier 352. 3 illustrates that a microphone amplifier 358 may also be coupled to the stereo audio codec 350. [ Additionally, the microphone 360 may be coupled to a microphone amplifier 358. In a particular aspect, a frequency modulation (FM) radio tuner 362 may be coupled to the stereo audio codec 350. The FM antenna 364 is also coupled to an FM radio tuner 362. The stereo headphones 366 may also be coupled to the stereo audio codec 350.

도 3 은 라디오 주파수 (RF) 트랜시버 (368) 가 멀티코어 CPU (324) 에 결합될 수도 있는 것을 추가로 표시한다. RF 스위치 (370) 는 RF 트랜시버 (368) 및 RF 안테나 (372) 에 결합될 수도 있다. 도 3 에서 도시된 바와 같이, 키패드 (374) 는 멀티코어 CPU (324) 에 결합될 수도 있다. 또한, 마이크로폰을 갖는 모노 헤드셋 (376) 이 멀티코어 CPU (324) 에 결합될 수도 있다. 또한, 진동기 디바이스 (vibrator device; 378) 가 멀티코어 CPU (324) 에 결합될 수도 있다. 도 3 은 또한, 전력 공급 장치 (380) 가 온-칩 시스템 (322) 에 결합될 수도 있는 것을 도시한다. 특별한 양태에서, 전력 공급 장치 (380) 는 전력을 요구하는 PCD (320) 의 다양한 컴포넌트들에 전력을 제공하는 직류 (DC) 전력 공급 장치이다. 또한, 특별한 양태에서, 전력 공급 장치는 재충전가능한 DC 배터리, 또는 AC 전원에 접속되는 교류 (AC) 대 DC 트랜스포머로부터 유도되는 DC 전력 공급 장치이다.3 further illustrates that a radio frequency (RF) transceiver 368 may be coupled to the multicore CPU 324. [ The RF switch 370 may be coupled to the RF transceiver 368 and the RF antenna 372. 3, the keypad 374 may be coupled to the multicore CPU 324. The multi- In addition, a mono headset 376 with a microphone may be coupled to the multicore CPU 324. [ In addition, a vibrator device (378) may be coupled to the multicore CPU (324). Figure 3 also shows that the power supply 380 may be coupled to the on-chip system 322. [ In a particular aspect, power supply 380 is a direct current (DC) power supply that provides power to the various components of PCD 320 that require power. Further, in a particular aspect, the power supply is a rechargeable DC battery or a DC power supply derived from an alternating current (AC) to DC transformer connected to an AC power source.

도 3 은 PCD (320) 가 또한, 데이터 네트워크, 예를 들어, 로컬 영역 네트워크, 개인 영역 네트워크, 또는 임의의 다른 네트워크를 액세스하기 위하여 이용될 수도 있는 네트워크 카드 (388) 를 포함할 수도 있는 것을 추가로 표시한다. 네트워크 카드 (388) 는 블루투스 (Bluetooth) 네트워크 카드, WiFi 네트워크 카드, 개인 영역 네트워크 (PAN) 카드, 개인 영역 네트워크 초저전력 기술 (personal area network ultra-low-power technology; PeANUT) 네트워크 카드, 또는 당해 분야에서 잘 알려진 임의의 다른 네트워크 카드일 수도 있다. 또한, 네트워크 카드 (388) 는 칩 내로 편입될 수도 있고, 즉, 네트워크 카드 (388) 는 칩에서의 완전한 솔루션일 수도 있고, 별도의 네트워크 카드 (388) 가 아닐 수도 있다.3 illustrates that PCD 320 may also include a network card 388 that may be used to access a data network, e.g., a local area network, a personal area network, or any other network. . The network card 388 may be a Bluetooth network card, a WiFi network card, a personal area network (PAN) card, a personal area network ultra-low-power technology (PEANUT) network card, Or any other well-known network card. In addition, the network card 388 may be incorporated into the chip, i.e., the network card 388 may be a complete solution on the chip, or may not be a separate network card 388.

도 3 에서 도시된 바와 같이, 디스플레이/터치 스크린 (332), 비디오 포트 (338), USB 포트 (342), 카메라 (348), 제 1 스테레오 스피커 (354), 제 2 스테레오 스피커 (356), 마이크로폰 (360), FM 안테나 (364), 스테레오 헤드폰들 (366), RF 스위치 (370), RF 안테나 (372), 키패드 (374), 모노 헤드셋 (376), 진동기 (378), 및 전력 공급 장치 (380) 는 온-칩 시스템 (322) 의 외부에 있다.As shown in FIG. 3, a display / touch screen 332, a video port 338, a USB port 342, a camera 348, a first stereo speaker 354, a second stereo speaker 356, The RF antenna 372, the keypad 374, the mono headset 376, the vibrator 378, and the power supply (not shown) 380 are external to the on-chip system 322.

특별한 양태에서, 본원에서 설명된 방법 단계들 중의 하나 이상은 컴퓨터 프로그램 명령들로서 메모리 (344) 에서 저장될 수도 있다. 이 명령들은 본원에서 설명된 방법들을 수행하기 위하여 멀티코어 CPU (324) 에 의해 실행될 수도 있다. 또한, 멀티코어 CPU (324), 메모리 (344), 또는 그 조합은 멀티코어 CPU (324) 내의 각각의 CPU 또는 코어의 전력을 동적으로 제어하기 위하여 본원에서 설명된 방법 단계들 중의 하나 이상을 실행하기 위한 수단의 역할을 할 수도 있다.In particular aspects, one or more of the method steps described herein may be stored in memory 344 as computer program instructions. These instructions may be executed by the multicore CPU 324 to perform the methods described herein. Further, the multi-core CPU 324, the memory 344, or a combination thereof may execute one or more of the method steps described herein to dynamically control the power of each CPU or core in the multi-core CPU 324 It may also serve as a means for accomplishing this.

도 4 를 참조하면, 프로세싱 시스템이 도시되어 있고 일반적으로 400 으로 표기되어 있다. 특별한 양태에서, 프로세싱 시스템 (400) 은 도 3 과 함께 위에서 설명된 PCD (320) 내로 편입될 수도 있다. 도시된 바와 같이, 프로세싱 시스템 (400) 은 멀티코어 중앙 프로세싱 유닛 (CPU) (402) 및 멀티코어 CPU (402) 에 접속된 메모리 (404) 를 포함할 수도 있다. 멀티코어 CPU (402) 는 제로 번째 코어 (zeroth core; 410), 제 1 코어 (412), 및 N 번째 코어 (414) 를 포함할 수도 있다. 제로 번째 코어 (410) 는 그 상에서 실행되는 제로 번째 동적 클록 및 전압 스케일링 (DCVS) 알고리즘 (416) 을 포함할 수도 있다. 제 1 코어 (412) 는 그 상에서 실행되는 제 1 DCVS 알고리즘 (417) 을 포함할 수도 있다. 또한, N 번째 코어 (414) 는 그 상에서 실행되는 N 번째 DCVS 알고리즘 (418) 을 포함할 수도 있다. 특별한 양태에서, 각각의 DCVS 알고리즘 (416, 417, 418) 은 각각의 코어 (410, 412, 414) 상에서 독립적으로 실행될 수도 있다.Referring to FIG. 4, a processing system is shown and generally designated 400. In particular aspects, the processing system 400 may be incorporated into the PCD 320 described above in conjunction with FIG. As shown, the processing system 400 may include a multi-core central processing unit (CPU) 402 and a memory 404 connected to the multi-core CPU 402. The multi-core CPU 402 may include a zeroth core 410, a first core 412, and an Nth core 414. The zero-th core 410 may include a zero-th dynamic clock and voltage scaling (DCVS) algorithm 416 running on it. The first core 412 may include a first DCVS algorithm 417 running on it. The Nth core 414 may also include an Nth DCVS algorithm 418 running on it. In a particular aspect, each DCVS algorithm 416, 417, 418 may be executed independently on each core 410, 412, 414.

게다가, 예시된 바와 같이, 메모리 (404) 는 그 상에 저장된 오퍼레이팅 시스템 (operating system; 420) 을 포함할 수도 있다. 오퍼레이팅 시스템 (420) 은 스케줄러 (scheduler; 422) 를 포함할 수도 있고, 스케줄러 (422) 는 제 1 실행 큐 (run queue) (424), 제 2 실행 큐 (426), 및 N 번째 실행 큐 (428) 를 포함할 수도 있다. 메모리 (404) 는 또한, 그 상에 저장된 제 1 애플리케이션 (430), 제 2 애플리케이션 (432), 및 N 번째 애플리케이션 (434) 을 포함할 수도 있다.In addition, as illustrated, the memory 404 may include an operating system 420 stored thereon. The operating system 420 may include a scheduler 422 and the scheduler 422 may include a first execution queue 424, a second execution queue 426, and an Nth execution queue 428 ). The memory 404 may also include a first application 430, a second application 432, and an Nth application 434 stored thereon.

특별한 양태에서, 애플리케이션들 (430, 432, 434) 은 멀티코어 CPU (402) 내의 코어들 (410, 412, 414) 에서 프로세싱되도록 하기 위하여 하나 이상의 태스크 (task) 들 (436) 을 오퍼레이팅 시스템 (420) 으로 전송할 수도 있다. 태스크들 (436) 은 단일 태스크들, 스레드들, 또는 그 조합으로서 프로세싱되거나 실행될 수도 있다. 또한, 스케줄러 (422) 는 멀티코어 CPU (402) 내에서의 실행을 위하여 태스크들, 스레드들, 또는 그 조합을 스케줄링할 수도 있다. 추가적으로, 스케줄러 (422) 는 실행 큐들 (424, 426, 428) 에서 태스크들, 스레드들, 또는 그 조합을 배치할 수도 있다. 코어들 (410, 412, 414) 은 예를 들어, 코어들 (410, 412, 414) 에서의 그 태스크 및 스레드들의 프로세싱 또는 실행을 위하여 오퍼레이팅 시스템 (420) 에 의해 명령받은 바와 같이, 실행 큐들 (424, 426, 428) 로부터 태스크들, 스레드들, 또는 그 조합을 취출 (retrieve) 할 수도 있다.In one particular aspect, applications 430, 432, and 434 may include one or more tasks 436 in order to be processed at cores 410, 412, and 414 in multi-core CPU 402, ). Tasks 436 may be processed or executed as single tasks, threads, or a combination thereof. Scheduler 422 may also schedule tasks, threads, or a combination thereof for execution within multi-core CPU 402. [ Additionally, the scheduler 422 may place tasks, threads, or a combination thereof in the execution queues 424, 426, 428. [ The cores 410, 412 and 414 may be coupled to execution queues 410 and 412 as commanded by the operating system 420 for processing or execution of their tasks and threads at, for example, 424, 426, 428. In some embodiments,

도 4 는 또한, 메모리 (404) 가 그 상에 저장된 병렬 감시기 (parallelism monitor; 440) 를 포함할 수도 있는 것을 도시한다. 병렬 감시기 (440) 는 오퍼레이팅 시스템 (420) 및 멀티코어 CPU (402) 에 접속될 수도 있다. 구체적으로, 병렬 감시기 (440) 는 오퍼레이팅 시스템 (420) 내의 스케줄러 (422) 에 접속될 수도 있다.FIG. 4 also illustrates that the memory 404 may include a parallelism monitor 440 stored thereon. The parallel monitor 440 may be connected to the operating system 420 and the multi-core CPU 402. In particular, the parallel monitor 440 may be connected to the scheduler 422 in the operating system 420.

도 5 를 참조하면, 중앙 프로세싱 유닛의 전력을 동적으로 제어하는 방법의 제 1 양태가 도시되어 있고 일반적으로 500 으로 표기되어 있다. 방법 (500) 은 다바이스가 파워 온 될 때에 다음의 단계들이 수행될 수도 있는 실행 루프 (do loop) 로 블록 (502) 에서 시작될 수도 있다.Referring to FIG. 5, a first embodiment of a method for dynamically controlling the power of a central processing unit is shown and generally designated as 500. The method 500 may be initiated at block 502 with an execution loop in which the following steps may be performed when the device is powered on.

블록 (504) 에서는, 전력 제어기, 예를 들어, 동적 클록 및 전압 스케일링 (DCVS) 알고리즘이 하나 이상의 CPU 들을 감시할 수도 있다. 판정 (506) 에서, 전력 제어기는 CPU 에 대한 과도 성능 데드라인이 만료되었는지 여부를 결정할 수도 있다. 그렇지 않을 경우, 방법 (500) 은 종료될 수도 있다. 이와 다르게, 과도 성능 데드라인이 만료되었을 경우, 방법 (500) 은 블록 (508) 으로 진행할 수도 있고, 전력 제어기는 CPU 를 더 높은 성능 레벨, 즉, 다음의 더 높은 동작 주파수로 이동시킬 수도 있다. 하나의 양태에서, 제어기는 CPU 를 최대 성능 레벨, 즉, 최대 CPU 주파수로 이동시킬 수도 있다. 그러나, 또 다른 양태에서, CPU 는 최대 성능 레벨로 점프하지 않을 수도 있다. CPU 는 중간 레벨로 점프할 수도 있고, 다음으로, 최대 레벨 또는 또 다른 더 높은 성능 레벨로 다시 점프할 수도 있다. 중간 점프들의 수, 및 점프들 사이의 시간의 양은 점프의 주파수 값을 결정하기 위하여 이용될 수도 있다.At block 504, a power controller, e.g., a dynamic clock and voltage scaling (DCVS) algorithm, may monitor one or more CPUs. At decision 506, the power controller may determine whether the transient performance deadline for the CPU has expired. Otherwise, the method 500 may terminate. Alternatively, if the transient performance deadline has expired, the method 500 may proceed to block 508 and the power controller may move the CPU to a higher performance level, i.e., the next higher operating frequency. In one aspect, the controller may move the CPU to a maximum performance level, i.e., the maximum CPU frequency. However, in another aspect, the CPU may not jump to the maximum performance level. The CPU may jump to an intermediate level and then jump again to a maximum level or another higher performance level. The number of intermediate jumps, and the amount of time between jumps, may be used to determine the frequency value of the jump.

블록 (510) 에서, CPU 는 아이들 조건에 진입할 수도 있다. 또한, 블록 (512) 에서는, 과도 성능 데드라인이 재설정될 수도 있다. 블록 (514) 에서는, CPU 가 아이들 조건을 종료할 수도 있다. 판정 (516) 으로 이동하면, 전력 제어기는 당면한 CPU 주파수가 최대 CPU 주파수에 있는지 여부를 결정할 수도 있다. 그러한 경우, 방법 (500) 은 종료될 수도 있다. 이와 다르게, CPU 주파수가 최대 CPU 주파수에 있지 않을 경우, 방법은 블록 (518) 으로 진행할 수도 있고, 타이머는 재스케줄링 (rescheduling) 될 수도 있다. 다음으로, 방법 (500) 은 종료될 수도 있다.At block 510, the CPU may enter an idle condition. Also, at block 512, the transient performance deadline may be reset. At block 514, the CPU may terminate the idle condition. Moving to decision 516, the power controller may determine whether the CPU frequency in question is at the maximum CPU frequency. In such a case, the method 500 may terminate. Alternatively, if the CPU frequency is not at the maximum CPU frequency, the method may proceed to block 518 and the timer may be rescheduled. Next, the method 500 may be terminated.

도 6 을 참조하면, 중앙 프로세싱 유닛의 전력을 동적으로 제어하는 방법의 제 2 양태가 도시되어 있고 일반적으로 600 으로 표기되어 있다. 블록 (602) 에서 시작하면, 중앙 프로세싱 유닛 (CPU) 은 아이들 상태에 진입할 수도 있다. 블록 (604) 에서는, 전력 제어기, 예를 들어, 동적 클록 및 전압 스케일링 (DCVS) 알고리즘이 아이들 시작 시간 (StartIdleTime) 을 현재 시간 (CurrentTime) 과 동일하게 설정할 수도 있다. 또한, 블록 (606) 에서, 전력 제어기는 아이들 종료 시간 (EndIdleTime) 으로부터 아이들 시작 시간 (StartIdleTime) 을 감산함으로써 비지 시간 (BusyTime) 을 결정할 수도 있다.Referring to FIG. 6, a second embodiment of a method for dynamically controlling the power of a central processing unit is shown and generally designated 600. Starting at block 602, the central processing unit (CPU) may enter the idle state. At block 604, a power controller, e.g., a dynamic clock and voltage scaling (DCVS) algorithm, may set the idle start time (StartIdleTime) to be equal to the current time (CurrentTime). Also, at block 606, the power controller may determine the busy time (BusyTime) by subtracting the idle start time (StartIdleTime) from the idle end time (EndIdleTime).

블록 (608) 에서, CPU 는 소프트웨어 인터럽트 대기 (software wait for interrupt; SWFI) 조건에 진입할 수도 있다. 블록 (610) 에서는, CPU 가 SWFI 조건을 종료할 수도 있다. 블록 (612) 으로 이동하면, 전력 제어기는 아이들 종료 시간 (EndIdleTime) 을 현재 시간 (CurrentTime) 과 동일하게 설정할 수도 있다. 또한, 블록 (614) 에서, 전력 제어기는 아이들 종료 시간 (EndIdleTime) 으로부터 아이들 시작 시간 (StartIdleTime) 을 감산함으로써 아이들 시간 (IdleTime) 을 결정할 수도 있다. 블록 (616) 에서, 전력 제어기는 업데이트된 정상 상태 필터 (UpdateSteadyStateFilter) 비지 시간 (BusyTime) 및 아이들 시간 (IdleTime) 으로부터 당면한 CPU 주파수 (CPUFreq) 를 결정할 수도 있다. 그 후, 방법 (600) 은 도 7 의 블록 (702) 으로 계속될 수도 있다.At block 608, the CPU may enter a software wait for interrupt (SWFI) condition. At block 610, the CPU may terminate the SWFI condition. Moving to block 612, the power controller may set the idle end time (EndIdleTime) equal to the current time (CurrentTime). Also, at block 614, the power controller may determine the idle time (IdleTime) by subtracting the idle start time (StartIdleTime) from the idle end time (EndIdleTime). At block 616, the power controller may determine the CPU frequency (CPUFreq) in question from the updated steady state filter (UpdateSteadyStateFilter) busy time (BusyTime) and the idle time (IdleTime). The method 600 may then continue to block 702 of FIG.

블록 (702) 에서, 전력 제어기는 다음의 공식을 이용하여 유효 과도 버젯 (EffectiveTransientBudget) 을 결정할 수도 있다:At block 702, the power controller may determine an EffectiveTransientBudget using the following formula:

EffectiveTransientBudget=(TransientResponseDeadline*NextCPUFreq)/(NextCPUF-req-CPUFreq)EffectiveTransientBudget = (TransientResponseDeadline * NextCPUFreq) / (NextCPUF-req-CPUFreq)

여기서,here,

TransientResponseDeadline = 과도 응답 데드라인, 즉, 슬랙 버젯 (slack budget),TransientResponseDeadline = transient response deadline, ie slack budget,

NextCPUFreq = 당면한 CPU 주파수보다 하나의 주파수 스텝 (frequency step) 더 높은 다음 CPU 주파수, 및NextCPUFreq = one frequency step higher than the current CPU frequency, the next higher CPU frequency, and

CPUFreq = 당면한 CPU 주파수 (CPUFreq).CPUFreq = The CPU frequency (CPUFreq) you are facing.

특별한 양태에서, 클록 스케줄링 오버헤드 (ClockSchedulingOverhead) 및 클록 스위치 오버헤드 (ClockSwitchOverhead) 는 또한 EffectiveTransientBudget 에 가산될 수도 있다. 또한, 전압 변화 오버헤드 (VoltageChangeOverhead) 는 EffectiveTransientBudget 에 가산될 수도 있다. 블록 (704) 으로 이동하면, 전력 제어기는 더 높은 주파수로 점프하기 위한 데드라인 (SetJumpToFrequency) 을 아이들 종료 시간 (EndIdleTime) 플러스 (plus) 유효 과도 버젯 (EffectiveTransientBudget) 과 동일하게 설정할 수도 있다. 또 다른 양태에서, 점프하기 위한 데드라인은 현재 시간 플러스 과도 버젯일 수도 있다. 그 후, 방법 (600) 은 종료될 수도 있다.In a particular aspect, the ClockSchedulingOverhead and ClockSwitchOverhead may also be added to EffectiveTransientBudget. In addition, the VoltageChangeOverhead may be added to EffectiveTransientBudget. Moving to block 704, the power controller may set the deadline (SetJumpToFrequency) for jumping to a higher frequency equal to the idle end time (EndIdleTime) plus plus EffectiveTransientBudget. In another aspect, the deadline for jumping may be current time plus transient budget. The method 600 may then terminate.

특별한 양태에서, 도 6 및 도 7 과 함께 설명된 방법 (600) 은, 과도 데드라인이 고갈되기 전에, CPU 가 DCVS 에 의해 결정된 주파수에서 머무를 수도 있는 시간의 양을 결정하기 위하여, 그리고, 미래에 그 시간의 양에 의해 더 높은 CPU 주파수로의 점프를 스케줄링하기 위하여 이용될 수도 있다. 더 높은 주파수로의 점프 이전에 아이들에 재진입될 경우, 스케줄링된 점프는 취소될 수도 있다. 방법 (600) 은 EffectiveTransientBudget 로서 결정된 시간의 양만큼 더 높은 주파수로의 점프를 지연시킬 수도 있다.In a particular aspect, the method 600 described in conjunction with Figures 6 and 7 can be used to determine the amount of time the CPU may remain at the frequency determined by the DCVS, before the transient deadline is depleted, And may be used to schedule a jump to a higher CPU frequency by the amount of time. If re-entering the idle prior to a jump to a higher frequency, the scheduled jump may be canceled. The method 600 may delay the jump to a higher frequency by an amount of time determined as EffectiveTransientBudget.

본원에서 설명된 방법 단계들은 설명된 바와 같은 순서로 반드시 수행될 필요가 없는 것을 이해해야 한다. 또한, "그 후", "다음으로", "다음" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도된 것이 아니다. 이 단어들은 방법 단계들의 설명을 통해 독자를 안내하기 위하여 간단히 이용된다. 게다가, 본원에서 설명된 방법들은 휴대용 컴퓨팅 디바이스 (PCD) 상에서 실행가능한 것으로서 설명된다. PCD 는 이동 전화 디바이스, 휴대용 정보 단말 디바이스, 스마트북 컴퓨팅 디바이스, 넷북 컴퓨팅 디바이스, 랩톱 컴퓨팅 디바이스, 데스크톱 컴퓨팅 디바이스, 또는 그 조합일 수도 있다.It should be understood that the method steps described herein need not necessarily be performed in the order described. Also, words such as "after "," next ", "next ", and the like are not intended to limit the order of the steps. These words are simply used to guide the reader through the description of the method steps. In addition, the methods described herein are described as being executable on a portable computing device (PCD). The PCD may be a mobile phone device, a portable information terminal device, a smart book computing device, a netbook computing device, a laptop computing device, a desktop computing device, or a combination thereof.

특별한 양태에서, DCVS 알고리즘은, CPU 부하/아이들 시간을 측정하며, 만족스러운 시스템 성능을 여전히 제공하면서 전력 소비를 저하시키기 위한 노력으로 작업부하를 추적하기 위하여 CPU 클록 주파수를 동적으로 조절하는 메커니즘이다. 작업부하가 변화함에 따라, CPU 스루풋 (throughput) 에서의 변화는 작업부하에서의 변화들을 추적할 수도 있을 뿐만 아니라, 반드시 이를 래그 (lag) 시킬 수도 있다. 불운하게도, 이것은 DCVS 알고리즘이 작업부하를 충분히 신속하게 추적할 수 없을 수도 있기 때문에, 작업부하가 서비스 품질 (Qaulity of Service; QoS) 요건들을 가지는 경우들에는 문제를 도입할 수도 있다. 또한, 태스크들은 실패할 수도 있다.In a particular aspect, the DCVS algorithm measures the CPU load / idle time and is a mechanism to dynamically adjust the CPU clock frequency to track the workload in an effort to reduce power consumption while still providing satisfactory system performance. As the workload changes, changes in CPU throughput may not only track changes in the workload, but may also lag it. Unfortunately, this may introduce problems when the workload has QoS requirements because the DCVS algorithm may not be able to track the workload quickly enough. Also, tasks may fail.

다수의 DCVS 기법들은 CPU 의 정상 상태 성능 요건들을 측정하는 것과, CPU 주파수 및 전압을, 정상 상태 CPU 용법을 충족시킬 수도 있는 최저 레벨로 설정하는 것을 포함한다. 이것은 전형적으로, 시간의 기간 (period) 에 걸쳐 CPU 이용률 (백분율 비지) 을 측정하고 CPU 성능 레벨을, 평균 CPU 이용률이 하이 (high) 와 로우 (low) 임계치 사이에 속하는 것으로 설정함으로써 행해진다. 평균화 기간은 합리적인 응답성을 유지하면서, 변화하는 클록 주파수들의 주파수를 최소화하기 위하여 최적화된다. 과도 작업부하들 및/또는 새로운 작업부하들의 시작에 응답하기 위하여, 패닉 입력들이 CPU 주파수를 신속하게 올리기 위해 사용되었을 수도 있다.Many DCVS techniques include measuring the steady state performance requirements of the CPU and setting the CPU frequency and voltage to the lowest level that may meet the steady state CPU usage. This is typically done by measuring CPU utilization (percent busy) over a period of time and setting the CPU performance level to be between the high and low thresholds of average CPU utilization. The averaging period is optimized to minimize the frequency of changing clock frequencies while maintaining reasonable responsiveness. In order to respond to the onset of transient workloads and / or new workloads, the panic inputs may have been used to quickly raise the CPU frequency.

작업부하를 래그시키고 태스크들이 실패하게 하는 DCVS 의 문제를 회피하기 위하여, 본원에서 개시된 시스템 및 방법들은 과도 성능 보장 (transient performance guarantee) 을 제공한다. 과도 성능 보장은, 더 높은 성능 레벨에서 실행하는 것에 비해, 연속적인 비지 펄스가 지연될 수도 있는 최대 시간의 양으로서 정의될 수도 있다. 이것은, 과도 성능 데드라인이 만료하기 전에 더 높은 성능 레벨에 도달함으로써, 그리고 CPU 가 아이들일 경우, 정의에 의해, 그것은 과다신청된 상태 (oversubscribed state) 에 있지 않으므로, 아이들로 갈 때마다 데드라인을 재설정함으로써 달성될 수도 있다. 본원에서 개시된 바와 같이, 시스템이 아이들로부터 나오고 시스템 CPU 가 최대 주파수에서 실행되고 있지 않을 때마다, 타이머는 QoS 보장을 보존하기 위하여 재스케줄링될 수도 있다.To avoid the problems of DCVS that lag the workload and cause tasks to fail, the systems and methods disclosed herein provide a transient performance guarantee. Transient performance assurance may be defined as the amount of maximum time in which successive busy pulses may be delayed, as opposed to performing at a higher performance level. This is because, by definition, it is not in an oversubscribed state, by reaching a higher performance level before the transient performance deadline expires, and if the CPU is an idle, May be accomplished by resetting. As disclosed herein, whenever the system comes out of the idle and the system CPU is not running at the maximum frequency, the timer may be rescheduled to preserve QoS guarantees.

과도 성능 보장의 전력 영향을 최소화하기 위하여, 본 시스템 및 방법들은 인입 펄스 (incoming pulse) 가 데드라인을 충족시키기 위해 주파수 증가를 요구할 수도 있을 가능성을 최소화시킨다. 이것은, 유효 과도 버젯이 고갈되었을 때까지 주파수, 즉, 성능 레벨 변화를 지연시키고, 그 다음으로, 더 높은 성능 레벨로 곧장 점프하고, 펄스가 도 8 에서 도시된 바와 같이 완료될 때까지 거기에서 체류함으로써 달성될 수도 있다.To minimize the power impact of transient performance assurance, the present systems and methods minimize the possibility that the incoming pulse may require a frequency increase to meet the deadline. This will delay the frequency, i.e., the performance level change, until the effective over-budget is exhausted, and then jump straight to the higher performance level and stay there until the pulse is complete as shown in FIG. ≪ / RTI >

특별한 양태에서, 유효 과도 버젯은 현재의 성능 레벨로 스케일링된 과도 응답 데드라인으로서 계산된다. 예를 들어, CPU 가 최대 클록 레이트의 75 % 로 실행되고 있고 과도 응답 데드라인이 16 ms 일 경우, 유효 과도 버젯은 64 ms, 즉, 16 ms/(1-0.75) 이다. 유효 과도 버젯은 CPU 가 버젯을 고갈시키기 전에 현재의 성능 레벨에서 얼마나 오래 실행될 수도 있는지를 나타낸다. CPU 가 아이들일 경우, 유효 과도 버젯은 과도 응답 데드라인과 동일할 수도 있다. 최대 성능 레벨에 있을 경우, 유효 과도 버젯은 도 9 에서 도시된 바와 같이 무한 (infinite) 이다.In a particular aspect, the effective transient budget is calculated as a transient response deadline scaled to the current performance level. For example, if the CPU is running at 75% of the maximum clock rate and the transient response deadline is 16 ms, the effective transient budget is 64 ms, or 16 ms / (1-0.75). Valid transient budget indicates how long the CPU may run at the current performance level before exhausting the budget. If the CPU is idle, the effective transient budget may be the same as the transient response deadline. When at the maximum performance level, the effective transient budget is infinite as shown in FIG.

본원에서 설명된 방법들을 이용하면, 시스템은 태스크가 최대 레벨 이외의 일부 레벨에서 실행되었을 수도 있는 최대 시간의 양에 관한 엄격한 경계를 제공할 수도 있고, 그러므로, 동적 CPU 클록 스케일링을 여전히 허용하면서, QoS 보장을 요구하는 태스크들에 대한 완료에 관한 계산가능한 경계를 묵시적으로 제공할 수도 있다. 경계는 태스크들이 현재 실행하고 있는 것, 글로벌 시스템 속성, DCVS 알고리즘 설계 또는 다른 속성들에 기초하여 설정될 수도 있고, 시스템이 QoS 요건들을 가지는 임의의 태스크들을 실행하고 있지 않을 경우, 또는 CPU 가 최대 클록에서 실행되고 있을 경우에는 완전히 디스에이블 (disable) 될 수도 있다.Using the methods described herein, the system may provide a strict boundary with respect to the amount of maximum time that a task may have been executed at some level other than the maximum level, and therefore, It may implicitly provide a computable boundary on completion for tasks that require assurance. The boundary may be set based on what the tasks are currently executing, global system attributes, DCVS algorithm design, or other attributes, or if the system is not executing any tasks with QoS requirements, It may be completely disabled when it is being executed in the system.

특별한 양태에서, 본 방법들은, 데드라인이 만료되었을 때에 최대 주파수로 점프하는 대신에, 더 짧은 내부 유효 데드라인들을 설정하고, 최대 QoS 지연이 고갈되었기 전에 CPU 가 최대 주파수에 있는 것을 여전히 보장하면서, 하나 이상의 중간 주파수들로 점프함으로써 확장될 수도 있다. 또한, 본 방법들은, 전체적인 CPU 전력을 동시에 저하시키면서, 양호하게 정의된 과도 QoS가 유지되는 것을 실질적으로 보장할 수도 있다.In particular aspects, the methods may be used to set shorter internal valid deadlines, while jumping to the maximum frequency when the deadline has expired, while still ensuring that the CPU is at the maximum frequency before the maximum QoS delay has exhausted, Or by jumping to one or more intermediate frequencies. In addition, the methods may substantially guarantee that a well-defined transient QoS is maintained while simultaneously degrading the overall CPU power.

본원에서 설명된 시스템 및 방법들은 우발적 샘플링 (opportunistic sampling) 을 사용할 수도 있다. 다시 말해서, 시스템 및 방법들은 주기적으로 타이머 만료에 대해 검사할 수도 있다. 다른 양태들에서, 시스템 및 방법들은 우발적 샘플링을 사용하지 않을 수도 있다.The systems and methods described herein may use opportunistic sampling. In other words, the system and methods may periodically check for timer expiration. In other aspects, the systems and methods may not use accidental sampling.

위에서 논의된 바와 같이, 다양한 양태들은 태스크들에 대한 완료를 위하여 엄격하고 계산가능한 경계 (예를 들어, 성능 보장) 를 제공한다. 다양한 양태들에서, 이러한 성능 보장들은, 프로세서 성능을 개선시키고, 및/또는, 셀룰러 전화들, 스마트폰들, 개인용 또는 이동 멀티-미디어 플레이어들, 개인 정보 단말 (PDA) 들, 랩톱 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 인에이블형 셀룰러 전화들, 무선 게임용 제어기들, 및 메모리, 프로그래밍가능한 프로세서 또는 코어 (이하, 집합적으로 "프로세싱 코어") 를 포함하며 전력 보존 방법들이 유익하도록 배터리 전력 하에서 동작하는 유사한 개인용 전자 디바이스들을 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 들 상에서의 전력 소비를 저하시키기 위한 동적 클록 및 전압/주파수 스케일링 (DCVS) 솔루션의 일부로서 구현될 수도 있다. 또한, 다양한 양태들은 배터리 전력에 따라 실행되는 휴대용 및 이동 컴퓨팅 디바이스들에 대해 특별히 유용하지만, 양태들은 일반적으로 프로세서를 포함하며 저하된 전력 소비가 유익한 임의의 컴퓨팅 디바이스 (예를 들어, 범용 컴퓨터들, 데스크톱 컴퓨터들, 서버들 등) 에서 유용하다.As discussed above, various aspects provide a strict and computable boundary (e.g., performance assurance) for completion of tasks. In various aspects, such performance guarantees may be used to improve processor performance and / or to improve performance of the processor and / or to improve performance of the processor and / E-mail receivers, multimedia Internet enabled cellular phones, wireless gaming controllers, and memory, programmable processors or cores (hereinafter collectively referred to as "processing cores"), May be implemented as part of a dynamic clock and voltage / frequency scaling (DCVS) solution to reduce power consumption on portable computing devices (PCDs), including similar personal electronic devices that operate. In addition, while the various aspects are particularly useful for portable and mobile computing devices that run in accordance with battery power, aspects generally include any computing device (e.g., general purpose computers, Desktop computers, servers, etc.).

일반적으로, 칩에 의해 소모되는 동적 전력 (스위칭 전력) 은 C*V2*f 이고, 여기서, C 는 클록 사이클 당 스위칭되는 커패시턴스이고, V 는 전압이고, f 는 스위칭 주파수이다. 따라서, 주파수가 변화함에 따라, 동적 전력은 그것과 함께 선형적으로 변화할 것이다. 동적 전력은 프로세서 칩에 의해 소비되는 총 전력의 대략 2/3 를 차지할 수도 있다. 칩이 실행되는 주파수는 그 동작 전압에 관련될 수도 있으므로, 전압 스케일링은 주파수 스케일링과 함께 달성될 수도 있다. 전압 레귤레이터들과 같은 일부의 전기적 컴포넌트들의 효율은, 전력 소비가 온도와 함께 증가하도록, 온도가 증가함에 따라 감소할 수도 있다. 증가하는 전력 이용은 온도를 증가시킬 수도 있으므로, 전압 또는 주파수에서의 증가들은 시스템 전력 수요들을 훨씬 더 증가시킬 수도 있다. 따라서, 컴퓨팅 디바이스의 배터리 수명은 프로세서들이 아이들이거나 저부하 (lightly loaded) 일 때에 그 프로세서들에 인가된 주파수 및/또는 전압을 저하시킴으로써 개선될 수도 있다. 주파수 및/또는 전압에서의 이러한 저하들은 동적 클록 및 전압/주파수 스케일링 (DCVS) 솔루션을 통해 실시간으로 또는 "온 더 플라이로 (on the fly)" 달성될 수도 있다.In general, the dynamic power (switching power) consumed by the chip is C * V 2 * f, where C is the capacitance that is switched per clock cycle, V is the voltage, and f is the switching frequency. Thus, as the frequency changes, the dynamic power will change linearly with it. Dynamic power may account for approximately two-thirds of the total power consumed by the processor chip. Since the frequency at which the chip is run may be related to its operating voltage, voltage scaling may be achieved with frequency scaling. The efficiency of some electrical components, such as voltage regulators, may decrease as the temperature increases, such that power consumption increases with temperature. Increasing power utilization may increase the temperature, so increases in voltage or frequency may further increase system power demands. Thus, the battery life of a computing device may be improved by lowering the frequency and / or voltage applied to the processors when the processors are idle or lightly loaded. These degradations in frequency and / or voltage may be achieved in real time or "on the fly" through a dynamic clock and voltage / frequency scaling (DCVS) solution.

일반적으로, DCVS 솔루션은 (프로세서가 비지인 시간과 비교하여) 프로세서가 아이들인 시간의 비율을 감시하고, 프로세서들의 주파수/전압이 프로세서들이 아이들 및/또는 비지인 시간의 비율에 기초하여 얼마나 많이 조절되어야 하는지를 결정한다. 프로세서가 아이들인 시간의 비율을 감시하는 것은 프로세서가 아이들 프로세스 또는 스레드 (예를 들어, 시스템 아이들 프로세스 등) 를 실행하는 지속시간을 표시하는 값 (예를 들어, 시간의 양, CPU 사이클들의 수 등) 을 컴퓨팅 및/또는 측정하는 것을 포함할 수도 있다.In general, the DCVS solution monitors the percentage of time that the processor is idle (compared to the busy time of the processor) and determines how much the frequency / voltage of the processors controls how much the processors are based on the ratio of idle and / ≪ / RTI > Monitoring the percentage of time that a processor is idle means that a value indicating the duration (e.g., the amount of time, the number of CPU cycles, etc.) that the processor is executing an idle process or thread (e.g., a system idle process, / RTI > and / or < / RTI >

오퍼레이팅 시스템은 그 프로세서에 대해 스케줄링될 준비가 된 다른 스레드들이 전혀 없는 것으로 결정할 때, 프로세서 상에서 아이들 소프트웨어 애플리케이션, 프로세스 또는 스레드 (본원에서는 집합적으로 "스레드") 를 실행할 수도 있다. 아이들 스레드는 다양한 태스크들 (예를 들어, 인터럽트 대기 태스크, 슬립 (sleep) 태스크 등) 을 수행할 수도 있고, 각각의 태스크는 다수의 프로세서 동작들을 포함할 수도 있다. 프로세서가 아이들 스레드를 실행할 때, 그 프로세서는 "아이들 상태" 에서 및/또는 "아이들 조건" 에서 "아이들" 이라고 말할 수도 있다.An operating system may execute an idle software application, process, or thread (collectively "thread" herein) on the processor when it determines that there are no other threads ready to be scheduled for that processor. The idle thread may perform various tasks (e.g., interrupt waiting task, sleep task, etc.), and each task may include multiple processor operations. When a processor executes an idle thread, the processor may say "idle" in an "idle state" and / or an "idle condition.

멀티프로세서 시스템들에서, 오퍼레이팅 시스템 (또는 스케줄러, 제어기 등) 은 각각의 프로세서에 대한 하나 이상의 아이들 스레드들을 유지할 수도 있다. 아이들 스레드들은 각각의 프로세서가 실행하도록 준비된 스레드를 항상 가지도록, 실행을 위해 준비된 상태로 머무른다. 이러한 방식으로, 스레드가 (예를 들어, 스레드가 그 스케줄링된 태스크들 또는 작업부하들을 완료하는 것으로 인해) 프로세서를 포기할 때마다, 심지어 모든 다른 스레드들이 완료되거나, 자원들을 대기하는 중이거나, 또는 이와 다르게 실행하도록 현재 준비되지 않을 때에도, 오퍼레이팅 시스템은 (예를 들어, 아이들 스레드의 이용가능성을 통해) 그 프로세서 상에서의 실행을 위해 준비된 스레드를 가진다.In multiprocessor systems, the operating system (or scheduler, controller, etc.) may maintain one or more idle threads for each processor. The idle threads remain ready for execution so that each processor always has a thread ready to run. In this way, whenever a thread relinquishes a processor (e.g., due to a thread completing its scheduled tasks or workloads), even every other thread is completed, waiting for resources, The operating system has a thread ready for execution on that processor (e.g., through the availability of an idle thread) even when it is not currently prepared to run differently.

위에서 논의된 바와 같이, DCVS 솔루션은, 정상 상태 작업부하를 포함할 수도 있는 프로세서의 작업부하들에 기초하여 프로세서의 주파수 및/또는 전압을 조절할 수도 있다. 정상 상태 작업부하는 실행 시간에 앞서서, 즉, 작업부하의 증진을 위해 동작들을 수행하기 위하여 프로세서 코어가 비지 또는 활성 상태에 진입하는 것에 앞서서 결정될 수도 있다. 정상 상태 작업부하는 그 프로세싱 코어 상에서 스케줄링된 태스크들을 완료하기 위하여 요구된 CPU 클록 사이클들의 수, 동작들의 수, 명령들의 수, 및/또는 시간의 양을 컴퓨팅, 추정, 또는 예측함으로써 미리 결정될 수도 있다. 각각의 프로세서는 하나를 초과하는 작업부하 (예를 들어, 정상 상태 작업부하 및 과도 작업부하) 를 가질 수도 있고, 각각의 프로세서는 그 작업부하들 전부에서의 모든 태스크들이 완료될 때까지 비지, 실행, 또는 활성 상태 (본원에서는 집합적으로 "비지 상태") 에서 머물러 있도록 요구될 수도 있다.As discussed above, the DCVS solution may adjust the frequency and / or voltage of the processor based on the workloads of the processor, which may include steady state workloads. The steady state workload may be determined ahead of the execution time, i.e., prior to the processor core entering the busy or active state to perform operations for the enhancement of the workload. A steady state workload may be predetermined by computing, estimating, or predicting the amount of CPU clock cycles, the number of operations, the number of instructions, and / or the amount of time required to complete the scheduled tasks on that processing core . Each processor may have more than one workload (e.g., a steady state workload and an overloaded workload), and each processor may perform a busy, execute , Or in an active state (collectively "busy state" herein).

어떤 시나리오들에서, DCVS 솔루션은 프로세서의 성능에 영향을 주지 않으면서 전력 절감들을 달성하기 위하여 프로세서의 주파수 및/또는 전압 (즉, 프로세서의 속력) 을 저하시킬 수도 있다. 예를 들어, 프로세서의 작업부하가 그 실행 시간이 메모리 액세스 시간들에 의해 지배되는 태스크를 포함할 때, 주파수에서의 저하는 프로세서의 성능 또는 그 태스크의 실행 시간에 상당한 영향을 가지지 않을 수도 있다. 그러나, 대개, DCVS 솔루션은 프로세서의 성능 (예를 들어, 태스크들의 주어진 세트를 완료하기 위하여 요구된 시간 등) 및 전력 소비 (예를 들어, 태스크들의 주어진 세트를 달성함에 있어서 소비된 배터리 전력의 양) 특성들 사이의 절충들의 균형을 맞추어야 한다. 전형적으로, 태스크들이 더 빨리 달성될수록, 그러한 태스크들을 달성함에 있어서 프로세서에 의해 더 많은 전력이 소비된다.In some scenarios, the DCVS solution may degrade the frequency and / or voltage of the processor (i. E., The speed of the processor) in order to achieve power savings without affecting the performance of the processor. For example, when the workload of a processor includes a task whose execution time is dominated by memory access times, degradation in frequency may not have a significant impact on processor performance or execution time of the task. In general, however, the DCVS solution may be used to determine the performance of the processor (e.g., the time required to complete a given set of tasks, etc.) and the amount of power consumed (e.g., the amount of battery power consumed in achieving a given set of tasks) ) Trade-offs. Typically, the faster the tasks are accomplished, the more power is consumed by the processor in accomplishing those tasks.

DCVS 솔루션은 프로세서의 정상 상태 작업부하 및 정상 상태 성능 요건들에 기초하여 성능 및 전력 소비의 균형을 맞추도록 구성될 수도 있다. 정상 상태 성능 요건들은, 프로세서가 비지 및/또는 아이들인 지속시간을 표시하는 값 (예를 들어, 시간의 양, CPU 사이클들의 수 등) 을 컴퓨팅하거나 측정하고, 컴퓨팅된/측정된 값들의 결과들을 평균화하고, 그 프로세서의 정상 상태 작업부하들을 완료하기 위해 요구되는 시간/프로세싱의 양을 결정함으로써 결정될 수도 있다. 이 연산들에 기초하여, DCVS 솔루션은, 프로세서가 (예를 들어, 이동 디바이스 사용자가 차이 등을 인식하지 않도록) 저하된 전력 소비 및 수용가능한 응답성의 레벨들을 달성하면서 컴퓨팅된 정상 상태 요건들을 충족하도록 동작할 수도 있는 상한 주파수 임계치 및 하한 주파수 임계치를 컴퓨팅할 수도 있다.The DCVS solution may be configured to balance performance and power consumption based on steady state workload and steady state performance requirements of the processor. Steady state performance requirements may include computing or measuring values (e.g., amount of time, number of CPU cycles, etc.) indicative of the duration of time that the processor is busy and / or idle, and computing the results of the computed / And determining the amount of time / processing required to complete the steady state workloads of the processor. Based on these operations, the DCVS solution may be adapted to meet the computed steady state requirements while achieving levels of degraded power consumption and acceptable responsiveness (e.g., such that the mobile device user does not recognize differences, etc.) And may compute an upper frequency threshold and a lower frequency threshold that may be operating.

종종, 프로세서들은, DCVS 솔루션이 선험적으로 통지되지 않았으며 정상 상태 또는 주파수 임계치 연산들에서 고려되지 않았던 "작업의 버스트들 (bursts of work)" 을 포함하는 과도 작업부하들을 프로세싱/실행하도록 요구된다. 과도 작업부하는, 동적이거나, 일시적이거나, 또는 프로세서의 작업부하에서 예상되지 않은 스파이크 (spike) 를 야기시키는 작업의 임의의 유닛을 포함하는, 시스템에 미리 알려지지 않은 임의의 태스크 또는 작업의 유닛일 수도 있다. 예로서, 과도 작업부하는 사용자 입력들, 시스템 이벤트들, 검출된 환경 조건들, 원격 절차 호출들 등에 응답하여 프로세서에 의해 수행된 태스크들 중의 임의의 것 또는 전부를 포함할 수도 있다. 추가의 예로서, 과도 작업부하는 사용자가 사용자 액션을 개시하기 위하여 휴대용 컴퓨팅 디바이스 (PCD) 의 터치-스크린을 터치할 때에 생성될 수도 있고, PCD 는 (예를 들어, 인터페이스 업데이트로, 새로운 이미지를 디스플레이하는 것, 새로운 액션을 착수하는 것 등을 행함으로써) 그것에 즉시 응답해야 한다.Often, processors are required to process / execute transient workloads that include "bursts of work" where the DCVS solution has not been a priori known and has not been considered in steady state or frequency threshold operations. The transient workload may be a unit of any task or task that is not previously known to the system, including any unit of work that is dynamic, temporary, or causes spikes that are not anticipated in the processor's workload have. By way of example, the transient workload may include any or all of the tasks performed by the processor in response to user inputs, system events, detected environmental conditions, remote procedure calls, and the like. As a further example, the transient workload may be created when a user touches the touch-screen of a portable computing device (PCD) to initiate a user action, and the PCD (e.g., Displaying it, launching a new action, etc.).

위에서 언급된 바와 같이, 과도 작업부하들은 DCVS 솔루션이 (예를 들어, 상한 및 하한 임계치들을 결정하는 것의 일부로서) 적당하게 미리 고려할 수 있는 연속적인 정상 상태 작업부하들이 아니다. 그 결과, 과도 작업부하는 프로세서로 하여금 예상된 것보다 더 오래 비지 상태에서 머물러 있게 할 수도 있고, 및/또는 이와 다르게, 프로세서 실행 시간들에서의 불확실성들을 낳을 수도 있다. 이러한 불확실성들은 컴퓨팅 디바이스로 하여금 프로세싱 및 시스템 자원들을 비효율적으로 또는 부적당하게 할당하게 할 수도 있고, 특히, 컴퓨팅 디바이스가 다중 프로세싱 코어들을 포함할 때, 컴퓨팅 디바이스의 전체적인 성능 및/또는 응답성에 상당한 영향을 가질 수도 있다.As noted above, transient workloads are not continuous steady state workloads that the DCVS solution can properly pre-consider (e.g., as part of determining upper and lower thresholds). As a result, transient workloads may cause the processor to remain in a busy state longer than expected, and / or otherwise cause uncertainties in processor execution times. These uncertainties may cause computing devices to inefficiently or inappropriately allocate processing and system resources and may have a significant impact on the overall performance and / or responsiveness of the computing device, particularly when the computing device includes multiple processing cores It is possible.

최신 컴퓨팅 디바이스들은 종종, 시스템-온-칩 (system-on-chip; SoC) 들 및/또는 다중 프로세싱 코어들 (예를 들어, 프로세서들, 코어들 등) 을 포함하는 멀티프로세서 시스템들이다. 멀티프로세서 시스템들에서는, 단일 스레드가 제 1 프로세싱 코어에 의해, 다음으로, 제 2 프로세싱 코어에 의해, 그리고 다음으로 다시 제 1 프로세싱 코어에 의해 프로세싱되는 것이 통상적이다. 또한, 제 1 프로세싱 코어에서의 하나의 스레드의 결과들이 제 2 프로세싱 코어에서 실행되는 또 다른 스레드에서의 동작들을 트리거링하는 것이 통상적이다. 예를 들어, 하나 이상의 프로세싱 코어들은 현재 활성인 프로세서에 의해 생성된 결과들에 종속적일 수도 있고, 현재 활성인 프로세서가 그 작업부하들을 완료하고 및/또는 하나 이상의 태스크들을 프로세싱하는 것을 종료할 때까지, 아이들 또는 대기 상태에서 머물러 있도록 요구될 수도 있다. 이 상황들에서, 각각의 프로세싱 코어는 대안적으로, 현재 활성인 프로세서로부터의 프로세싱의 결과들을 대기하는 동안에 아이들/대기 상태에 진입할 수도 있다. 이 프로세싱 코어들은 현재 활성인 프로세서에 의해 생성된 결과들을 대기하지만, 그 각각의 DCVS 솔루션들은 (즉, 주파수/전압에서의 감소를 통해) 그 동작 속력들을 저하시킬 수도 있고, 이것은 컴퓨팅 디바이스로 하여금 비-응답적이거나 느리게 보이게 할 수도 있다. 즉, 멀티프로세서 컴퓨팅 디바이스들 상에서 구현된 DCVS 솔루션은, 프로세싱 코어들의 일부가 현재 활성인 스레드들을 실행하기 위해 최적인 것보다 더 낮은 주파수 또는 전압에서 동작되어야 하고, 컴퓨팅 디바이스로 하여금 비-응답적이거나 느리게 보이게 한다고 잘못 결론내릴 수도 있다.Modern computing devices are often multiprocessor systems that include system-on-chip (SoCs) and / or multiple processing cores (e.g., processors, cores, etc.). In multiprocessor systems, it is common for a single thread to be processed by a first processing core, then by a second processing core, and then again by a first processing core. It is also common for the results of one thread in the first processing core to trigger operations in another thread executing in the second processing core. For example, the one or more processing cores may be dependent on the results generated by the currently active processor, and may be dependent on the currently active processor until it finishes its workloads and / or finishes processing one or more tasks , Idle or in a waiting state. In these situations, each processing core may alternatively enter the idle / standby state while waiting for the results of processing from the currently active processor. These processing cores wait for the results produced by the currently active processor, but their respective DCVS solutions may degrade their operating speeds (i. E., Through a decrease in frequency / voltage) - May be responsive or slow. That is, a DCVS solution implemented on multiprocessor computing devices must be operated at a lower frequency or voltage than some of the processing cores are optimal for running currently active threads, and the computing device may be non-responsive It can be misleadingly concluded that it makes you look slow.

다양한 양태들은, 그 사전-컴퓨팅된 정상 상태 작업부하를 완료하기 위하여 그 프로세싱 코어에 대해 요구되는 것보다 많은 미리 결정된 시간의 양을 넘어 (예를 들어, 과도 작업부하들로 인해) 프로세싱 코어가 비지 상태에서 머물러 있지 않도록 보장하는 성능 보장들을 컴퓨팅하고 강제함으로써 위에서 언급된 제한들을 해소한다. 이러한 성능 보장들은, 자원들을 할당하고 실행을 위한 스레드들을 스케줄링하는 것과 같은 미래의 동작들을 더 양호하게 추정하고, 스케줄링하고, 및/또는 계획하기 위하여 오퍼레이팅 시스템, 자원들, DCVS 솔루션들, 및/또는 다른 프로세싱 코어들에 의해 이용될 수도 있다. 이러한 방식으로, 성능 보장들은 컴퓨팅 디바이스가 그 응답성 요건들을 충족시키는 것을 가능하게 하고, 이에 따라, 사용자 경험을 개선시킨다.Various aspects may be implemented in a computing system that does not allow the processing core to be busy (e.g., due to transient workloads) beyond a predetermined amount of time than is required for that processing core to complete its pre- By computing and enforcing performance guarantees to ensure that they do not stay in a state. These performance guarantees may be used by operating systems, resources, DCVS solutions, and / or the like to better estimate, schedule, and / or plan future operations such as allocating resources and scheduling threads for execution But may be used by other processing cores. In this way, performance guarantees enable a computing device to meet its responsiveness requirements, thereby improving the user experience.

성능 보장들은 DCVS 솔루션이 가변 지연에 기초하여 프로세서의 주파수 및/또는 전압을 조절할 수 있게 하고, 이것은 프로세싱 코어가, 프로세서의 현재 또는 이전의 동작 주파수들/전압들에 관계없이, 기껏해야 작업의 정의된 최대 양만큼 그 정상 상태 작업부하에 뒤 떨어지게만 하도록 보장한다.Performance guarantees enable the DCVS solution to adjust the frequency and / or voltage of the processor based on the variable delay, which allows the processing core to define at most the task, regardless of the processor's current or previous operating frequencies / Of the normalized workload by the maximum amount of work being done.

도 10 은 성능 보장들을 강제하는 동적 클록 주파수/전압 스케일링 (DCVS) 솔루션을 구현하는 일 양태의 컴퓨팅 디바이스 (1000) 에서의 논리적 컴포넌트들 및 정보 흐름들을 예시한다. 컴퓨팅 디바이스 (1000) 는 하드웨어 유닛 (1002), 커널 공간 (kernel space) 소프트웨어 유닛 (1004), 및 사용자 공간 소프트웨어 유닛 (1006) 을 포함할 수도 있다. 일 양태에서, 커널 공간 소프트웨어 유닛 (1004) 및 사용자 공간 소프트웨어 유닛 (1006) 은 컴퓨팅 디바이스 (1000) 의 오퍼레이팅 시스템 또는 커널 내에 포함될 수도 있다. 예를 들어, 컴퓨팅 디바이스는 (비-특권부여된 (non-privileged) 코드가 실행되는) 사용자 공간 및 (특권부여된 코드가 실행되는) 커널 공간으로 편성되는 커널을 포함할 수도 있다. 이 분리는, 커널 공간의 일부인 코드가 GPL 허가되어야 하는 반면, 사용자-공간에서 실행되는 코드는 GPL 허가될 필요가 없는 안드로이드 (Android) 및 다른 일반 공중 라이선스 (general public license; GPL) 환경들에서 특별히 중요하다.10 illustrates logical components and information flows in an aspect of computing device 1000 implementing a dynamic clock frequency / voltage scaling (DCVS) solution to enforce performance guarantees. The computing device 1000 may include a hardware unit 1002, a kernel space software unit 1004, and a user space software unit 1006. In an aspect, kernel space software unit 1004 and user space software unit 1006 may be included within the operating system or kernel of computing device 1000. For example, a computing device may include a user space (where non-privileged code is executed) and a kernel organized into kernel space (where privileged code is executed). This separation requires that the code that is part of the kernel space be GPL-licensed, while the code running in user-space is not specifically GPL-enabled in Android and other general public license environments It is important.

하드웨어 유닛 (1002) 은 다수의 프로세싱 코어들 (예를 들어, CPU 0, CPU 1, 2D-GPU 0, 2D-GPU 1, 3D-GPU 0 등) 과, 프로세싱 코어들에 의해 공유된 다양한 하드웨어 자원들 (예를 들어, 클록들, 전력 관리 집적 회로 (power management integrated circuit) 들 또는 "PMIC 들", 스크래치패드 메모리 (scratchpad memory) 들 또는 "SPM 들" 등) 을 포함하는 자원들 모듈 (1020) 을 포함할 수도 있다.The hardware unit 1002 includes a plurality of processing cores (e.g., CPU 0, CPU 1, 2D-GPU 0, 2D-GPU 1, 3D-GPU 0, Including resources (e.g., clocks, power management integrated circuits or "PMICs ", scratchpad memories or" SPMs " .

커널 공간 소프트웨어 유닛 (1004) 은 하드웨어 유닛 (1002) 에서의 프로세싱 코어들 중의 적어도 하나에 대응하는 프로세서 모듈들 (CPU_0 아이들 통계, CPU_1 아이들 통계, 2D-GPU_0 드라이버, 2D-GPU_1 드라이버, 3D-GPU_0 드라이버 등) 을 포함할 수도 있고, 그 각각은 하나 이상의 아이들 통계 디바이스 모듈들 (1008) 과 통신할 수도 있다. 커널 공간 소프트웨어 유닛 (1004) 은 타이머 드라이버 모듈 (1014), 입력 이벤트 모듈들 (1010), 및 CPU 요청 통계 모듈 (1012) 을 더 포함할 수도 있다. 일 양태에서, 타이머 드라이버 모듈 (1014) 은 각각의 프로세싱 코어에 대한 타이머를 구동 (또는 유지) 할 수도 있다.The kernel space software unit 1004 includes processor modules corresponding to at least one of the processing cores in the hardware unit 1002 such as CPU_0 idle statistics, CPU_1 idle statistics, 2D-GPU_0 driver, 2D-GPU_1 driver, 3D- Etc.), each of which may communicate with one or more idle statistics device modules 1008. The kernel space software unit 1004 may further include a timer driver module 1014, input event modules 1010, and a CPU request statistics module 1012. In an aspect, timer driver module 1014 may drive (or maintain) a timer for each processing core.

사용자 공간 소프트웨어 유닛 (1006) 은 아이들 통계 디바이스 모듈들 (1008), 입력 이벤트 모듈들 (1010), 타이머 드라이버 모듈 (1014), 및 CPU 요청 통계 모듈 (1012) 의 각각으로부터 입력들을 받아들이고, 및/또는 출력들을 CPU 주파수 핫플러그 (hot-plug) 모듈 (1018) 로 전송하도록 구성된 DCVS 제어 모듈 (416) 을 포함할 수도 있다. CPU 주파수 핫플러그 모듈 (1018) 은 통신 신호들을 자원들 모듈 (1020) 로 전송하도록 구성될 수도 있다. CPU 주파수 핫플러그 모듈 (1018) 은 전압/주파수 변화들을 각각의 코어에 개별적으로 (예를 들어, 한번에 하나씩, 순차적으로 등) 또는 동시에 (예를 들어, 시간에 있어서 대략 동일한 시점에) 적용하도록 추가로 구성될 수도 있다.User space software unit 1006 may receive inputs from each of idle statistics device modules 1008, input event modules 1010, timer driver module 1014 and CPU request statistics module 1012, and / And a DCVS control module 416 configured to send outputs to the CPU frequency hot-plug module 1018. [ The CPU frequency hot plug module 1018 may be configured to transmit communication signals to the resources module 1020. The CPU frequency hot plug module 1018 may be configured to add voltage / frequency changes to each core individually (e.g., one at a time, one at a time, etc.) or concurrently (e.g., at about the same time in time) .

DCVS 제어 모듈 (1016) 은 프로세싱 코어들 (예를 들어, CPU 0, CPU 1, 2D-GPU 0, 2D-GPU 1, 3D-GPU 0 등) 중의 임의의 것 또는 전부 상에서의 실행을 위해 적당하고, 및/또는 컴퓨팅 디바이스 (1000) 상에서 DCVS 솔루션을 구현하기 위해 적당한 스레드들을 포함할 수도 있다. 일 양태에서, DCVS 제어 모듈 (1016) 은, DCVS 제어 모듈 (1016) 로 하여금 하나 이상의 프로세싱 코어들로부터 정보를 수집하게 하고 프로세싱 코어 상에서 DCVS 동작들을 수행하게 하는 이벤트 (예를 들어, 데이터 버퍼의 충전, 타이머의 만료, 상태 천이 등) 의 발생에 대해 포트 또는 소켓을 감시하는 스레드를 포함할 수도 있다. 일 양태에서, DCVS 제어 모듈 (1016) 은 2 개 이상의 프로세싱 코어들을 감시하는 단일-스레딩된 DCVS 솔루션을 포함할 수도 있다. 일 양태에서, DCVS 제어 모듈 (1016) 은 각각의 프로세싱 코어에 대한 DCVS 솔루션 스레드를 포함할 수도 있다.The DCVS control module 1016 is suitable for execution on any or all of the processing cores (e.g., CPU 0, CPU 1, 2D-GPU 0, 2D-GPU 1, 3D-GPU 0, , And / or threads suitable for implementing a DCVS solution on computing device 1000. [ In one aspect, the DCVS control module 1016 may be configured to cause the DCVS control module 1016 to collect events from one or more processing cores and to perform events (e.g., , A timer expiration, a state transition, etc.). In an aspect, the DCVS control module 1016 may include a single-threaded DCVS solution that monitors two or more processing cores. In an aspect, the DCVS control module 1016 may include a DCVS solution thread for each processing core.

일 양태에서, DCVS 제어 모듈 (1016) 은 펄스 열 (pulse train) 들을 생성하도록 구성될 수도 있다. DCVS 제어 모듈 (1016) 은 프로세싱 코어들의 비지 및/또는 아이들 상태들 (또는 상태들 사이의 천이들) 을 감시하거나 샘플링함으로써 펄스 열들을 생성할 수도 있다. DCVS 제어 모듈 (1016) 은 또한, 하나 이상의 프로세서 실행-큐들의 깊이를 감시하는 것으로부터 얻어진 정보에 기초하여 펄스 열들을 생성할 수도 있다. 실행-큐는 실행 중인 스레드뿐만 아니라, 프로세싱 코어 상에서 실행될 수 있지만, (예를 들어, 현재 실행되고 있는 또 다른 활성 스레드 등으로 인해) 아직 그렇게 할 수 없는 하나 이상의 스레드들의 집합을 포함할 수도 있다. 각각의 프로세싱 코어는 그 자신의 실행-큐를 가질 수도 있거나, 단일 실행-큐는 다중 프로세싱 코어들에 의해 공유될 수도 있다. 스레드들이 슬립 상태에 진입할 것을 요청하거나, 이용가능하게 될 자원 상에서 대기하고 있거나, 또는 종결되었을 때, 스레드들은 실행 큐로부터 제거될 수도 있다. 따라서, 실행 큐에서의 스레드들의 수 (즉, 실행 큐 깊이) 는, 현재 프로세싱 (실행) 되고 있는 스레드 및 프로세싱될 것을 대기하는 스레드를 포함하는 (예를 들어, 대기하는, 실행되는) 활성 스레드들의 수를 식별하게 할 수도 있다.In an aspect, the DCVS control module 1016 may be configured to generate pulse trains. DCVS control module 1016 may generate pulse trains by monitoring or sampling busy and / or idle states (or transitions between states) of the processing cores. The DCVS control module 1016 may also generate pulse trains based on information obtained from monitoring the depth of one or more processor run-cues. The run-time queue may include a set of one or more threads that can be executed on the processing core as well as a running thread, but which may not yet be able to do so (for example, due to another active thread currently executing). Each processing core may have its own run-queue, or a single run-queue may be shared by multiple processing cores. The threads may be removed from the run queue when the threads are requesting entry into the sleep state, waiting on the resource to be made available, or terminated. Thus, the number of threads in the run queue (i. E., The run queue depth) is determined by the number of active threads that are currently processing (executing) and including threads waiting to be processed (e.g., The number may be identified.

일 양태에서, DCVS 제어 모듈 (1016) 은 생성된 펄스 열들에 기초하여 정상 상태 작업부하들, 정상 상태 요건들, 및/또는 상한 및 하한 주파수/전압 임계치들을 컴퓨팅하도록 구성될 수도 있다. 상한 및 하한 주파수/전압 임계치들은, 프로세싱 코어가 저하된 전력 소비를 동시에 달성하고 컴퓨팅 디바이스 (1000) 의 응답성 요건들을 충족시키면서, 그 정상 상태 성능 요건들을 충족시키도록 동작할 수도 있는 주파수/전압 범위를 정의할 수도 있다. 응답성 요건들을 충족시키는 것은, 컴퓨팅 디바이스 (1000) 의 사용자가 컴퓨팅 디바이스의 성능 또는 속력에 있어서의 저하를 인식하지 않도록, 작업부하들에서의 모든 태스크들을 수행하는 것을 포함할 수도 있다.In an aspect, the DCVS control module 1016 may be configured to calculate steady state workloads, steady state requirements, and / or upper and lower frequency / voltage thresholds based on the generated pulse trains. The upper and lower frequency / voltage thresholds may be set to a frequency / voltage range that may be operative to simultaneously achieve reduced power consumption and meet the responsiveness requirements of the computing device 1000, while meeting the steady state performance requirements thereof May be defined. Meeting the responsiveness requirements may include performing all tasks in the workloads such that a user of the computing device 1000 is not aware of a degradation in performance or speed of the computing device.

DCVS 제어 모듈 (1016) 은 전체적인 컴퓨팅 디바이스 (1000) 성능을 감시하고, 및/또는 프로세싱 코어들 중의 하나 이상이 수립된 상한 및 하한 주파수 임계치들 사이에서 동작하는 것을 보장하도록 구성될 수도 있다. DCVS 제어 모듈 (1016) 은 프로세싱 자원들 및/또는 프로세싱 코어들의 동작 주파수들이 임계치들에 비례하도록 프로세싱 자원들 및/또는 프로세싱 코어들의 동작 주파수들을 조절할 수도 있다.The DCVS control module 1016 may be configured to monitor the overall computing device 1000 performance and / or to ensure that one or more of the processing cores operate between established upper and lower frequency thresholds. The DCVS control module 1016 may adjust the operating frequencies of the processing resources and / or processing cores such that the operating frequencies of the processing resources and / or processing cores are proportional to the thresholds.

위에서 논의된 바와 같이, DCVS 제어 모듈 (1016) 은 펄스 열들을 생성할 수도 있다. 일 양태에서, 프로세싱 코어들의 2 개 이상에 대해 생성된 펄스 열들은 시간에 있어서 동기화될 수도 있고, 프로세싱 코어들이 협력적이고 및/또는 서로에 대해 종속적인 동작들을 수행하고 있는지 여부를 결정하기 위해 적당한 정보를 포함하는 상관 모델들을 생성하기 위하여 교차-상관될 수도 있다. 일 양태에서, DCVS 제어 모듈 (1016) 은, 이 값이 프로세싱 코어들 사이의 상호종속성 (interdependency) 들을 고려하도록, 상한 및 하한 주파수 임계치들, 초기 동작 주파수, 정상 상태 요건들, 및 프로세서 작업부하들을 결정하기 위하여 상관 모델들을 이용할 수도 있다.As discussed above, the DCVS control module 1016 may generate pulse trains. In one aspect, the pulse trains generated for two or more of the processing cores may be synchronized in time, and may be synchronized in time and may include appropriate information to determine whether the processing cores are performing cooperative and / May be cross-correlated in order to generate correlation models including < RTI ID = 0.0 > In one aspect, the DCVS control module 1016 is configured to determine the upper and lower frequency thresholds, the initial operating frequency, the steady state requirements, and the processor workloads so that this value considers interdependencies among the processing cores Correlation models may be used to determine.

일 양태에서, DCVS 제어 모듈 (1016) 은 성능 보장들을 컴퓨팅 및/또는 강제하도록 구성될 수도 있다. 위에서 언급된 바와 같이, 프로세싱 코어들은 DCVS 솔루션이 미리 적당하게 고려할 수 없는 과도 작업부하들을 프로세싱/실행하도록 요구될 수도 있다. 따라서, 과도 작업부하들은 DCVS 제어 모듈 (1016) 로 하여금 프로세싱 코어들 중의 하나 이상을 차선의 주파수 레벨에서 또는 차선의 주파수 범위 내에서 동작시키게 할 수도 있다. 예를 들어, DCVS 제어 모듈 (1016) 은 과도 작업부하들을 미리 고려할 수 없으므로, 그것은 프로세싱 코어가 컴퓨팅 디바이스 (1000) 의 응답성 요건들을 충족시키기 위해 적당한 시간 기간에서 정상 상태 작업부하 및 과도 작업부하의 양자를 완료하도록 요구되는 것보다 더 낮은 주파수 레벨에서 동작될 수도 있는 것으로 부적당하게 결론내릴 수도 있다.In an aspect, DCVS control module 1016 may be configured to compute and / or enforce performance guarantees. As noted above, the processing cores may be required to process / execute transient workloads that the DCVS solution can not pre- Thus, transient workloads may cause the DCVS control module 1016 to operate one or more of the processing cores at a frequency of a lane or within a frequency range of a lane. For example, since the DCVS control module 1016 can not pre-consider transient workloads, it is not necessary for the processing cores to have a steady state workload and a transient workload in a reasonable time period to meet the responsive requirements of the computing device 1000 It may be improperly concluded that it may operate at a lower frequency level than that required to complete both.

성능 보장은, 프로세싱 코어가 그 정상 상태 작업부하 요건들을 완료하기 위하여 그 프로세싱 코어에 대해 요구되는 것보다 많은 미리 결정된 시간/작업의 양을 넘어 (예를 들어, 과도 작업부하들로 인해) 비지 상태에서 머물러 있지 않도록 보장하기 위하여 DCVS 제어 모듈 (1016) 에 의해 이용될 수도 있는 엄격하고 계산가능한 경계를 컴퓨팅 디바이스 (1000) 에 제공한다. 성능 보장은 DCVS 제어 모듈 (1016) 이, 프로세싱 코어가 컴퓨팅 디바이스 (1000) 의 응답성 요건들을 충족시키기 위해 적당한 시간 기간에서 그 정상 상태 작업부하 및 그 과도 작업부하들의 양자를 완료하는 것을 보장하도록 한다.Performance assurance is achieved when the processing core is in a busy state (e.g., due to transient workloads) beyond a predetermined amount of time / work than is required for that processing core to complete its steady state workload requirements To the computing device 1000, a rigid and computable boundary that may be used by the DCVS control module 1016 to ensure that the DCVS control module 1016 does not stay in the DCVS control module 1016. [ Performance assurance ensures that the DCVS control module 1016 completes both its steady state workload and its transient workloads in a reasonable time period to satisfy the responsiveness requirements of the computing device 1000 .

다양한 양태들에서, 성능 보장은 시간의 양, 작업의 양, 태스크들의 수, 명령들의 수, CPU 사이클들의 수 등과 같이, 프로세서 성능 또는 지속시간을 측정하기 위해 적당한 측정의 임의의 유닛에서 컴퓨팅될 수도 있고, 이 임의의 유닛에서 정의될 수도 있고, 및/또는 이 임의의 유닛을 포함할 수도 있다. 다양한 양태들에서, 성능 보장은 주파수와 연관될 수도 있고, 및/또는 주파수의 함수일 수도 있다.In various aspects, performance assurance may be computed in any unit of measurement suitable for measuring processor performance or duration, such as the amount of time, the amount of work, the number of tasks, the number of instructions, the number of CPU cycles, And may be defined in any unit, and / or may include any unit. In various aspects, performance assurance may be associated with frequency, and / or may be a function of frequency.

일 양태에서, 성능 보장은 하나 이상의 성능 보장 값들을 포함할 수도 있다. 다양한 양태들에서, 성능 보장 값들 (예를 들어, 데드라인 값, 버젯 값, 점프-투-최대 (jump-to-max) 값 등) 은 시간의 양, 작업의 양, 태스크들의 수, 명령들의 수, CPU 사이클들의 수 등과 같이, 프로세서 성능 또는 지속시간을 측정하기 위해 적당한 측정의 임의의 유닛으로 표현될 수도 있다.In an aspect, the performance assurance may include one or more performance assurance values. In various aspects, performance assurance values (e.g., deadline value, budget value, jump-to-max value, etc.) may be determined by the amount of time, the amount of work, May be represented by any unit of measurement suitable for measuring processor performance or duration, such as the number, number of CPU cycles, and so on.

다양한 양태들에서, 성능 보장 값들은 버젯 값 (예를 들어, 느슨한 버젯, 과도 버젯 등), 데드라인 값 (예를 들어, 과도 데드라인, 과도 응답 데드라인, 성능 데드라인 등), 및/또는 점프-투-최대 값을 포함할 수도 있다.In various aspects, the performance assurance values may include one or more of the following: a value of a budget (e.g., loose budget, excessive budget, etc.), a deadline value (e.g., transient deadline, transient response deadline, performance deadline, etc.) It may also contain a jump-to-max value.

데드라인 값은 그 전에 프로세싱 코어가 그 작업부하 프로세싱을 완료해야 하는 상대적인 시간을 표시하는 값, 및/또는 그 후에 프로세싱 코어의 주파수가 증가되어야 하는 상대적인 시간을 표시하는 값일 수도 있다.The deadline value may be a value indicating the relative time at which the processing core should complete its workload processing before and / or a value indicating the relative time at which the frequency of the processing core should then be increased.

버젯 값은 남아 있는 시간의 양으로서, 그 전에 프로세싱 코어가 그 작업부하 프로세싱을 완료해야 하고, 및/또는 그 후에 프로세싱 코어의 주파수가 증가되어야 하는, 상기 남아 있는 시간의 양을 표시하는 값일 수도 있다.The value of the budget may be the amount of time remaining, a value indicating the amount of time remaining before the processing core must complete its workload processing and / or the frequency of the processing core must then be increased .

점프-투-최대 값은, 그 전에 프로세싱 코어가 그 작업부하 프로세싱을 완료해야 하고, 및/또는 그 후에 프로세싱 코어의 주파수가 증가되어야 하는 상대적인 시간을 표시하는 값일 수도 있다.The jump-to-max value may be a value that indicates the time at which the processing core must complete its workload processing and / or the relative time at which the frequency of the processing core should then be increased.

성능 보장 값들은 주파수 또는 전압의 함수에 관련될 수도 있고, 이와 연관될 수도 있고, 및/또는 주파수 또는 전압의 함수일 수도 있다. 예를 들어, 버젯, 데드라인, 및/또는 점프-투 값들의 각각은 대응하는 프로세싱 코어의 동작 주파수의 함수 (function) 로서 컴퓨팅되는 시간 값일 수도 있다. 따라서, 이 값들의 각각은 프로세싱 코어가 100 MHz 의 주파수에서 동작할 때에 10 밀리초 (millisecond) 일 수도 있고, 200 MHz 의 주파수에서 20 밀리초일 수도 있고, 400 MHz 의 주파수에서 40 밀리초 등일 수도 있다. 상기 방식으로, 성능 보장 값들은 프로세싱 코어의 주파수를 증가시키기 위한 가변 지연을 구현하기 위하여 DCVS 솔루션에 의해 이용될 수도 있다.The performance assurance values may be related to a function of frequency or voltage, and / or may be a function of frequency or voltage. For example, each of the budget, deadline, and / or jump-to-values may be a time value that is computed as a function of the operating frequency of the corresponding processing core. Thus, each of these values may be 10 milliseconds when the processing core is operating at a frequency of 100 MHz, 20 milliseconds at a frequency of 200 MHz, 40 milliseconds at a frequency of 400 MHz, etc. . In this manner, the performance assurance values may be used by the DCVS solution to implement a variable delay to increase the frequency of the processing core.

위에서 언급되고 도 9 에서 예시된 바와 같이, DCVS 솔루션은 가변 지연들을 구현할 수도 있다. 이러한 가변 지연들은 프로세싱 코어가 프로세싱 코어의 실제의 동작 주파수들에 관계없이, 기껏해야 정의된 최대 작업의 양 만큼 그 정상 상태 작업부하에 뒤떨어지기만 하도록 보장한다. 일 양태에서, DCVS 솔루션은 정의된 최대 작업의 양 (즉, 그것에 의해 프로세싱 코어가 그 정상 상태 작업부하의 후방에 속할 수도 있음) 을 프로세싱 코어의 최대 주파수/전압에 의해 승산된 데드라인 값과 동일하게 설정할 수도 있다. 이러한 방식으로, 성능 보장은 정상 상태 요건들에 기초하여 또는 동적으로 또는 "온 더 플라이로" 프로세싱 코어의 주파수/전압을 조절하는 DCVS 솔루션에 의해 영향을 받지 않는다.As mentioned above and illustrated in FIG. 9, the DCVS solution may implement variable delays. These variable delays ensure that the processing cores are inferior to their steady state workloads at most by the amount of maximum work defined, regardless of the actual operating frequencies of the processing cores. In one aspect, the DCVS solution is designed to provide the same amount of defined maximum work (i. E., Thereby the processing core may belong to the rear of its steady state work load) to a deadline value multiplied by the maximum frequency / voltage of the processing core . In this way, performance guarantees are unaffected by DCVS solutions that regulate the frequency / voltage of the processing cores based on steady state requirements or dynamically or "on the fly."

일 양태에서, DCVS 제어 모듈 (1016) 은, 대응하는 프로세싱 코어가 아이들로부터 비지로 천이하고, 비지 상태 (예를 들어, 작업부하를 프로세싱하고 있는 것 등) 로 진입하고 및/또는 (예를 들어, 아이들 스레드가 프로세싱 코어를 포기할 때 등) 아이들 상태를 종료할 때마다, 데드라인 값을 버젯 값과 동일하게 설정하도록 구성될 수도 있다.In one aspect, the DCVS control module 1016 is configured to determine whether a corresponding processing core is transitioning from idle to busy, entering a busy state (e.g., processing a workload, etc.) and / , And the idle state terminates the idle state, such as when the idle thread abandons the processing core, etc.).

일 양태에서, DCVS 제어 모듈 (1016) 은, 대응하는 프로세싱 코어가 비지로부터 아이들로 천이하고, 아이들 상태 (예를 들어, 아이들 스레드를 실행하고 있는 것 등) 로 진입하고 및/또는 비지 상태를 종료 (예를 들어, 작업부하에서 모든 태스크들을 완료 등) 할 때마다, 기존의 데드라인 값을 설정하거나 재설정하도록 구성될 수도 있다.In an aspect, the DCVS control module 1016 may be configured to cause the corresponding processing core to transition from busy to idle, enter an idle state (e.g., running an idle thread, etc.) and / (E.g., to complete all tasks in a workload, etc.), the system may be configured to set or reset an existing deadline value.

도 11a 내지 도 11b 는 프로세싱 코어가 (예를 들어, 과도 작업부하들 등으로 인해) 그 사전-컴퓨팅된, 예측된, 및/또는 실제의 정상 상태 작업부하를 완료하기 위하여 그 프로세싱 코어에 대해 요구되는 것보다 많은 미리 결정된 시간의 양을 넘어 비지 상태에서 머물러 있지 않도록 보장하는 성능 보장을 생성/컴퓨팅하는 일 양태의 DCVS 솔루션 방법 (1100) 을 예시한다. 다양한 양태들에서, DCVS 솔루션의 동작들은 프로세싱 코어 상에서 또는 또 다른 프로세싱 코어 상에서 실행되는 스레드에 의해 수행될 수도 있다. 일 양태에서, DCVS 솔루션의 동작들 중의 하나 이상은 프로세싱 코어 상에서 실행되는 아이들 스레드에 의해 수행될 수도 있다.Figures 11A-11B illustrate a method for a processing core to request a processing core to complete its pre-computed, predicted, and / or actual steady state workload (e.g., due to transient workloads, etc.) / RTI > illustrates a DCVS solution method 1100 of one aspect of generating / computing a performance guarantee that ensures that a user does not stay in a busy state beyond an amount of more than a predetermined amount of time. In various aspects, the operations of the DCVS solution may be performed by a thread executing on a processing core or on another processing core. In an aspect, one or more of the operations of the DCVS solution may be performed by an idle thread executing on the processing core.

블록 (1102) 에서, DCVS 솔루션은 프로세싱 코어로 하여금 아이들 상태로부터 비지 상태로 천이하게 할 수도 있다. 블록 (1104) 에서, DCVS 솔루션은 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 현재 시간 값 (CurrentTime) 과 동일하게 설정할 수도 있다. 따라서, 아이들 종료 시간 파라미터 (EndIdleTime) 는 프로세싱 코어가 아이들 상태를 최후에 종료하였던 시간을 표시하는 값을 저장할 수도 있다.At block 1102, the DCVS solution may cause the processing core to transition from the idle state to the busy state. At block 1104, the DCVS solution may set the value of the idle end time parameter (EndIdleTime) equal to the current time value (CurrentTime). Thus, the idle end time parameter (EndIdleTime) may store a value indicating the time at which the processing core last terminated the idle state.

다양한 양태들에서, 블록들 (1102 및 1104) 의 동작들은 순차적으로, 병행적으로, 및/또는 임의의 순서로 수행될 수도 있다. 예를 들어, 일 양태에서, DCVS 솔루션은 프로세싱 코어를 아이들로부터 비지로 천이시키기 전에 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 설정할 수도 있다. 또 다른 양태에서, DCVS 솔루션은 프로세싱 코어를 아이들로부터 비지로 천이시킨 후에 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 설정할 수도 있다.In various aspects, the operations of blocks 1102 and 1104 may be performed sequentially, concurrently, and / or in any order. For example, in one aspect, the DCVS solution may set the value of the idle end time parameter (EndIdleTime) before transitioning the processing core from idle to busy. In another aspect, the DCVS solution may set the value of the idle end time parameter (EndIdleTime) after transitioning the processing core from idle to busy.

블록 (1106) 에서, DCVS 솔루션은 프로세싱 코어의 동작 주파수 또는 전압을 감시할 수도 있고, 필요에 따라 조절들을 행할 수도 있다. 블록 (1108) 에서, DCVS 솔루션은 프로세싱 코어로 하여금 비지 상태로부터 아이들 상태로 천이하게 할 수도 있다. 일 양태에서, DCVS 솔루션은 프로세싱 코어 상에서 아이들 스레드의 실행을 시작함으로써 프로세싱 코어를 아이들 상태로 천이시킬 수도 있다. 일 양태에서, DCVS 솔루션은 프로세싱 코어가 모든 그 작업부하들과 연관된 모든 태스크들을 완료한 후에 프로세싱 코어를 아이들 상태로 천이시킬 수도 있다.At block 1106, the DCVS solution may monitor the operating frequency or voltage of the processing core and make adjustments as needed. At block 1108, the DCVS solution may cause the processing core to transition from busy state to idle state. In an aspect, the DCVS solution may transition the processing core to the idle state by initiating the execution of the idle thread on the processing core. In an aspect, the DCVS solution may transition the processing core to the idle state after the processing core has completed all tasks associated with all its workloads.

선택적인 블록 (1110) 에서는, DCVS 솔루션이 기존의 데드라인 값을 설정하거나 재설정할 수도 있다. 위에서 논의된 바와 같이, 데드라인 값은 성능 보장 내에 포함되거나 이와 연관되는 성능 보장 값일 수도 있다. 데드라인 값을 설정, 재설정, 및/또는 컴퓨팅하는 동작들에 관한 추가적인 세부사항들은 이하에서 추가로 제공된다.In optional block 1110, the DCVS solution may set or reset an existing deadline value. As discussed above, the deadline value may be a performance assurance value included in or associated with the performance assurance. Additional details regarding operations to set, reset, and / or compute deadline values are provided further below.

블록 (1112) 에서, DCVS 솔루션은 아이들 시작 시간 파라미터 (StartIdleTime) 를 현재 시간 값 (CurrentTime) 과 동일하게 설정할 수도 있다. 블록 (1114) 에서, DCVS 솔루션은 비지 시간 파라미터 (BusyTime) 의 값을, 프로세싱 코어가 (아이들 종료 시간 파라미터 "EndIdleTime" 에 의해 표현될 수도 있는) 이전 아이들 상태를 최후에 종료하였던 시간과, 프로세싱 코어가 (아이들 시작 시간 파라미터 "StartIdleTime" 에 의해 표현될 수도 있는) 현재의 아이들 상태에 진입하였던 시간과의 차이와 동일하게 설정할 수도 있다. 따라서, 비지 시간 파라미터 (BusyTime) 는 프로세싱 코어가 비지 상태에서 가장 최근에 머물러 있었던 지속시간을 표시하는 값을 저장할 수도 있다.At block 1112, the DCVS solution may set the idle start time parameter (StartIdleTime) equal to the current time value (CurrentTime). At block 1114, the DCVS solution compares the value of the busy time parameter BusyTime with the time at which the processing core last terminated the previous idle state (which may be represented by the idle end time parameter "EndIdleTime & To the current idle state (which may be represented by the idle start time parameter "StartIdleTime"). Thus, the Busy Time parameter BusyTime may store a value indicating the last time the processing core stays in the busy state most recently.

블록 (1116) 에서, DCVS 솔루션은 프로세싱 코어로 하여금 슬립 동작들, 딥 슬립 (deep sleep) 동작들, 또는 소프트웨어 인터럽트 대기 동작들과 같은 다양한 아이들 상태 동작들을 수행하게 할 수도 있다. 따라서, 블록 (1116) 에서, DCVS 솔루션은 (예를 들어, 아이들 스레드, 오퍼레이팅 등을 통해) 프로세싱 코어로 하여금 슬립 상태, 딥 슬립 상태, 인터럽트 대기 상태 등에 진입하게 할 수도 있다.At block 1116, the DCVS solution may cause the processing core to perform various idle state operations, such as sleep operations, deep sleep operations, or software interrupt wait operations. Thus, at block 1116, the DCVS solution may cause the processing cores to enter a sleep state, a deep sleep state, an interrupt wait state, etc. (e.g., via idle threads, operating, etc.).

블록 (1118) 에서, DCVS 솔루션 및/또는 아이들 스레드는 인터럽트 요청을 수신할 수도 있고, 및/또는 이와 다르게, 프로세싱 코어가 그 현재 상태로부터 비지 상태로 천이되어야 하는 것으로 결정할 수도 있다. 이것은, 태스크들이 프로세싱 코어 상에서 실행을 위해 스케줄링되었고, 및/또는 스케줄링된 태스크들이 실행을 위해 준비되어 있다는 통지를 (예를 들어, 오퍼레이팅 시스템 스케줄러, 제어기 등으로부터) 수신하는 DCVS 솔루션에 의해 달성될 수도 있다.At block 1118, the DCVS solution and / or the idle thread may receive an interrupt request and / or otherwise determine that the processing core should transition from its current state to the busy state. This may be accomplished by a DCVS solution that receives notifications (e.g. from an operating system scheduler, controller, etc.) that the tasks have been scheduled for execution on the processing core and / or the scheduled tasks are ready for execution have.

블록 (1120) 에서, DCVS 솔루션은 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 현재 시간 값 (CurrentTime) 과 동일하게 설정할 수도 있다. 블록 (1122) 에서, DCVS 솔루션은 아이들 시간 파라미터 (IdleTime) 의 값을, StartIdleTime 파라미터의 값 및 EndIdleTime 파라미터의 값 사이의 차이와 동일하게 설정할 수도 있다. 따라서, 아이들 시간 파라미터 (IdleTime) 는 프로세싱 코어가 아이들 상태에서 최후에 머물러 있었던 지속시간을 표시하는 값을 저장할 수도 있다.At block 1120, the DCVS solution may set the value of the idle end time parameter (EndIdleTime) equal to the current time value (CurrentTime). At block 1122, the DCVS solution may set the value of the idle time parameter (IdleTime) equal to the difference between the value of the StartIdleTime parameter and the value of the EndIdleTime parameter. Thus, the idle time parameter IdleTime may store a value indicating the duration that the processing core last stayed in the idle state.

블록 (1124) 에서, DCVS 솔루션은 동작 주파수, 주파수 범위, 및/또는 프로세싱 코어가 동작해야 하는 주파수 임계치들을 컴퓨팅할 수도 있다. 일 양태에서, DCVS 솔루션은 프로세싱 코어가 비지 상태에서 최후에 머물러 있었던 시간의 지속시간 (예를 들어, BusyTime) 및/또는 프로세싱 코어가 아이들 상태에서 최후에 머물러 있었던 시간의 지속시간 (예를 들어, IdleTime) 에 기초하여 주파수 또는 주파수 범위를 컴퓨팅할 수도 있다. 일 양태에서, DCVS 솔루션은 프로세서가 (예를 들어, 미리 결정된 시간 기간 또는 시간 윈도우에 걸쳐) 비지 및/또는 아이들 상태들에서 이전에 머물러 있었던 지속시간들의 평균 (또는 이동 평균) 과 같은 이력 정보에 기초하여 동작 주파수, 주파수 범위, 및/또는 주파수 임계치들을 컴퓨팅할 수도 있다. 일 양태에서, DCVS 솔루션은 펄스 열들에 기초하여 동작 주파수, 주파수 범위, 및/또는 주파수 임계치들을 컴퓨팅할 수도 있다. 위에서 논의된 바와 같이, 펄스 열들은 비지 및/또는 아이들 상태들의 샘플링, 상태들 사이의 천이들, 실행-큐들의 깊이 등에 기초하여 생성될 수도 있다.At block 1124, the DCVS solution may compute operating frequency, frequency range, and / or frequency thresholds at which the processing core must operate. In an aspect, the DCVS solution may include a time duration (e.g., BusyTime) during which the processing core stays last in the busy state and / or a duration of the time the processing core last stayed in the idle state (e.g., IdleTime). ≪ / RTI > In one aspect, the DCVS solution may be used to determine whether the processor is in the history information, such as an average (or moving average) of durations that were previously in the busy and / or idle states (e.g., over a predetermined time period or time window) Frequency ranges, and / or frequency thresholds based on the operating frequency, frequency range, and / or frequency threshold. In an aspect, the DCVS solution may compute operating frequency, frequency range, and / or frequency thresholds based on the pulse trains. As discussed above, the pulse trains may be generated based on sampling of busy and / or idle states, transitions between states, depth of run-cues, and the like.

블록 (1126) 에서는, DCVS 솔루션이 데드라인 값을 컴퓨팅하거나 선택할 수도 있다. 데드라인 값은 상대적인 시간으로서, 그 후에 프로세싱 코어의 주파수가 다음의 더 높은 주파수 스텝으로 또는 최대 주파수로 증가되도록 설정되어야 하는, 그러한 상대적인 시간을 표시하는 값일 수도 있다. 다양한 양태들에서, 데드라인 값은 구성 설정들, 드라이버 입력들, 스케줄링된 태스크들의 분량 및/또는 타입들, 예측된 정상 상태 작업부하, 및/또는 컴퓨팅 디바이스의 응답성 요건들에 기초하여 컴퓨팅될 수도 있다. 데드라인 값은 정적 및/또는 동적 값들에 기초하여 결정될 수도 있다. 예를 들어, 데드라인 값은 정적 구성 값에 기초하여, 또는 프로세싱 코어 상에서 수행되도록 스케줄링된 태스크들의 타입들 (예를 들어, 1080 p 비디오 스트리밍 대 720 p 비디오 스트리밍 등) 에 기초하여 결정될 수도 있다.At block 1126, the DCVS solution may compute or select a deadline value. The deadline value may be a value indicating the relative time, after which the frequency of the processing core should be set to increase to the next higher frequency step or to the maximum frequency. In various aspects, the deadline value may be computed based on configuration settings, driver inputs, the amount and / or types of scheduled tasks, the predicted steady state workload, and / or the responsiveness requirements of the computing device It is possible. The deadline value may be determined based on static and / or dynamic values. For example, the deadline value may be determined based on static configuration values, or based on types of tasks scheduled to be performed on the processing core (e.g., 1080p video stream vs. 720p video stream, etc.).

일 양태에서, 데드라인 값은 컴퓨팅 디바이스의 응답성 요건들에 반비례할 수도 있다 (즉, 응답성 요건들이 더 높을수록, 데드라인이 더 짧다). 일 양태에서, 데드라인 값은 프로세싱 코어의 현재의 동작 주파수의 함수인 시간 값 (예를 들어, 100 MHz 의 주파수에서 10 밀리초, 200 MHz 의 주파수에서 20 밀리초, 400 MHz 의 주파수에서 40 밀리초 등) 일 수도 있다.In an aspect, the deadline value may be inversely proportional to the responsiveness requirements of the computing device (i.e., the higher the responsiveness requirements, the shorter the deadline). In one aspect, the deadline value is a time value that is a function of the current operating frequency of the processing core (e.g., 10 milliseconds at a frequency of 100 MHz, 20 milliseconds at a frequency of 200 MHz, 40 milliseconds at a frequency of 400 MHz, Seconds, etc.).

블록 (1128) 에서는, DCVS 솔루션이 버젯 값을 컴퓨팅하거나 선택할 수도 있다. 버젯 값은, 그 정상 상태 작업부하 요건들을 완료하기 위하여 프로세싱 코어에 대해 요구되도록 결정된 시간과 데드라인 값의 합을 초과하지 않으면서, 프로세싱 코어가 활성 또는 비지 상태에서 머물러 있을 수도 있는 시간의 양을 표시하는 값일 수도 있다. 일 양태에서, 버젯 값은 프로세싱 코어의 현재의 동작 주파수의 함수인 시간 값 (예를 들어, 100 MHz 의 주파수에서 10 밀리초, 200 MHz 의 주파수에서 20 밀리초, 400 MHz 의 주파수에서 40 밀리초 등) 일 수도 있다.At block 1128, the DCVS solution may compute or select a budget value. The value of the budget is the amount of time that the processing core may remain in the active or busy state without exceeding the sum of the deadline value and the time determined to be required for the processing core to complete its steady state workload requirements Or may be a value to be displayed. In one aspect, the value of the budget is a time value that is a function of the current operating frequency of the processing core (e.g., 10 milliseconds at a frequency of 100 MHz, 20 milliseconds at a frequency of 200 MHz, 40 milliseconds at a frequency of 400 MHz Etc.).

다양한 양태들에서, 버젯 값은 데드라인 값, 복수의 주파수 레벨들 또는 스텝들, 최대 프로세서 주파수, 정상 상태 프로세서 주파수 등에 기초하여 컴퓨팅될 수도 있다. 일 양태에서, 버젯 값은 유효 과도 버젯일 수도 있고, 및/또는 위에서 논의된 공식들 중의 임의의 것을 통해 컴퓨팅될 수도 있다.In various aspects, the budget value may be computed based on a deadline value, a plurality of frequency levels or steps, a maximum processor frequency, a steady state processor frequency, and the like. In an aspect, the value of the budget may be an effective over-budget, and / or may be computed via any of the formulas discussed above.

선택적인 블록 (1130) 에서는, DCVS 솔루션이 점프 투 최대 값을 컴퓨팅할 수도 있다. 점프-투-최대 값은 상대적인 시간으로서, 그 후에 프로세싱 코어의 주파수가 최대 프로세싱 주파수로 설정되어야 하는, 그러한 상대적인 시간을 표시하는 값일 수도 있다. 일 양태에서, 점프-투-최대 값은 EndIdleTime 파리미터의 값 및 버젯 값을 합산함으로써 컴퓨팅될 수도 있다.In optional block 1130, the DCVS solution may compute a jump-to-maximum value. The jump-to-max value may be a relative time, and then a value indicating the relative time at which the frequency of the processing core should be set to the maximum processing frequency. In an aspect, the jump-to-max value may be computed by summing the value of the EndIdleTime parameter and the value of the budget.

블록 (1132) 에서, DCVS 솔루션은 프로세싱 코어를 아이들 상태로부터 비지 상태로 천이시킬 수도 있다. 일 양태에서, 블록 (1132) 의 일부로서, DCVS 솔루션은 데드라인 값을 버젯 값과 동일하게 설정할 수도 있다. 다양한 양태들에서, DCVS 솔루션은, 프로세싱 코어가 아이들로부터 비지로 천이하고, 활성 또는 비지 상태 (예를 들어, 작업부하를 프로세싱하고 있는 것 등) 로 진입하고 및/또는 (예를 들어, 아이들 스레드가 프로세싱 코어를 포기할 때 등) 아이들 상태를 종료할 때마다, 데드라인 값을 버젯 값과 동일하게 설정하도록 구성될 수도 있다.At block 1132, the DCVS solution may transition the processing core from the idle state to the busy state. In an aspect, as part of block 1132, the DCVS solution may set the deadline value equal to the budget value. In various aspects, the DCVS solution may be implemented in such a way that the processing core transitions from idle to busy and enters an active or busy state (e.g., processing a workload, etc.) and / May be configured to set the deadline value equal to the < RTI ID = 0.0 > budget < / RTI > value each time the idle state is terminated.

도 12 는 프로세싱 코어가 (예를 들어, 과도 작업부하들의 존재 등으로 인해) 그 사전-컴퓨팅된, 예측된, 및/또는 실제의 정상 상태 작업부하를 완료하기 위하여 그 프로세싱 코어에 대해 요구되는 것보다 많은 미리 결정된 시간의 양을 넘어 비지 상태에서 머물러 있지 않도록 보장하는 성능 보장을 강제하는 일 양태의 DCVS 솔루션 방법 (1200) 을 예시한다. 블록 (1202) 에서, DCVS 솔루션은 스케줄링된 태스크들에 기초하여 예측된 정상 상태 작업부하를 컴퓨팅할 수도 있다. 블록 (1204) 에서, DCVS 솔루션은 컴퓨팅 디바이스의 전력 소비 및/또는 응답성 요건들을 충족시키기 위한 주파수 임계치들과 같은, 프로세싱 코어에 대한 다양한 성능 요건들을 컴퓨팅할 수도 있다. 성능 요건들 (예를 들어, 주파수 임계치들 등) 은 정상 상태 작업부하, 이력 정보 (예를 들어, 비지 상태에서 이전에 소비된 시간의 양 등), 프로세서 특성들, 응답성 요건들 등에 기초하여 결정될 수도 있다.Figure 12 is a graphical representation of what is required for a processing core to complete its pre-computed, predicted, and / or actual steady state workload (e.g., due to the presence of transient workloads) Illustrate one form of DCVS solution method 1200 that enforces a performance guarantee that ensures that the system does not stay in busy state beyond an amount of more than a predetermined amount of time. At block 1202, the DCVS solution may compute a predicted steady state workload based on the scheduled tasks. At block 1204, the DCVS solution may compute various performance requirements for the processing core, such as frequency thresholds to meet power consumption and / or responsiveness requirements of the computing device. Performance requirements (e.g., frequency thresholds, etc.) may be based on steady state workload, historical information (e.g., amount of time previously spent in busy state), processor characteristics, responsiveness requirements, May be determined.

블록 (1206) 에서, DCVS 솔루션은 초기 동작 주파수 및/또는 다양한 성능 보장 값들 (예를 들어, 데드라인 값, 버젯 값, 점프-투-최대 값 등) 을 컴퓨팅하고 설정할 수도 있다. 블록 (1208) 에서, DCVS 솔루션은 다양한 성능 요건들을 충족시키면서 정상 상태 작업부하에서의 모든 태스크들을 완료하기 위하여 프로세싱 코어에 대해 요구된 시간 또는 작업의 양 (예를 들어, CPU 사이클들, 명령들 등) 을 컴퓨팅할 수도 있다.At block 1206, the DCVS solution may compute and set the initial operating frequency and / or various performance assurance values (e.g., deadline, budget, jump-to-max, etc.). At block 1208, the DCVS solution may determine the amount of time or work required for the processing core (e.g., CPU cycles, instructions, etc.) to complete all tasks in a steady state workload while meeting various performance requirements ). ≪ / RTI >

블록 (1210) 에서, DCVS 솔루션은, 프로세싱 코어가 컴퓨팅된 초기 동작 주파수/전압에서 (또는 컴퓨팅된 임계치들 내에서) 실행되고 및/또는 다양한 디바이스 또는 시스템 요건들을 충족시키도록, 프로세싱 코어를 아이들 상태로부터 비지 상태로 천이시킬 수도 있다. 블록 (1212) 에서, DCVS 솔루션은 프로세싱 코어의 실제의 작업부하 및/또는 동작 주파수를 감시할 수도 있고, (예를 들어, 디폴트 (default) 클록 및 전압 스케일링 알고리즘에 따라) 필요에 따라 주파수/전압을 조절할 수도 있다. 선택적인 블록 (1214) 에서는, DCVS 솔루션이 프로세싱 코어의 현재의 동작 주파수/전압에 기초하여 성능 보장 값들을 업데이트할 수도 있다.At block 1210, the DCVS solution is programmed to cause the processing core to operate in an idle state (e.g., within the computed thresholds) and / or to satisfy various device or system requirements at an initial operating frequency / To the busy state. At block 1212, the DCVS solution may monitor the actual workload and / or operating frequency of the processing core and may monitor frequency / voltage (e. G., According to the default clock and voltage scaling algorithm) . In optional block 1214, the DCVS solution may update the performance assurance values based on the current operating frequency / voltage of the processing core.

결정 블록 (1216) 에서, DCVS 솔루션은 프로세싱 코어가 컴퓨팅된 시간/작업 (즉, 예측된 정상 상태 작업부하에서의 모든 태스크들을 완료하기 위하여 프로세싱 코어에 대해 요구되도록 결정된 시간/작업의 양) 보다 더 긴 비지 상태에서 머물러 있었는지 여부를 결정할 수도 있다. DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간/작업보다 더 길게 비지 상태에서 머물러 있지 않았던 것으로 결정할 때 (즉, 결정 단계 (1216) = "아니오"), 블록 (1212) 에서는, DCVS 솔루션이 실제의 작업부하/주파수를 감시하고 필요할 때에 조절들을 행하는 것을 계속할 수도 있다.At decision block 1216, the DCVS solution determines whether the processing core is more than the computed time / task (i.e., the amount of time / task determined to be required for the processing core to complete all tasks in the predicted steady state workload) You may decide whether you have stayed in a long busy state. When the DCVS solution determines that the processing core has not stayed in busy state longer than the computed time / task (i.e., decision step 1216 = "NO"), at block 1212, / You may continue to monitor the frequency and make adjustments as needed.

DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간/작업보다 더 긴 지속시간 동안에 비지 상태에서 머물러 있었던 것으로 결정할 때 (즉, 결정 단계 (1216) = "예"), 결정 블록 (1218) 에서는, DCVS 솔루션이 버젯이 고갈되었는지 여부를 결정할 수도 있다. DCVS 솔루션은, 버젯 값이 제로와 동일할 때, 및/또는 프로세싱 코어가 데드라인 값 플러스 컴퓨팅된 시간/작업 이상인 (시간 또는 작업의 어느 하나에서 측정된) 지속시간 동안에 비지 상태에서 머물러 있었을 때에 버젯이 고갈되었던 것으로 결정할 수도 있다.When the DCVS solution determines that the processing core has stayed in busy state for a longer duration than the computed time / task (i.e., decision step 1216 = "YES"), at decision block 1218, May be determined to be exhausted. The DCVS solution can be used to determine when the budget value equals zero and / or when the processing core has stayed in busy state for a duration (measured in either time or work) that is greater than the computed time / task plus deadline value May be determined to have been depleted.

DCVS 솔루션이 버젯이 고갈되지 않았던 것으로 결정할 때 (즉, 결정 단계 (1218) = "아니오"), 블록 (1212) 에서는, DCVS 솔루션이 실제의 작업부하/주파수를 감시하고 필요할 때에 조절들을 행하는 것을 계속할 수도 있다. DCVS 솔루션이 버젯이 고갈되었던 것으로 결정할 때 (즉, 결정 단계 (1218) = "예"), 블록 (1220) 에서는, DCVS 솔루션이 프로세싱 코어의 동작 주파수/전압을 증가시킬 수도 있다. 일 양태에서, 블록 (1220) 에서는, DCVS 솔루션이 프로세싱 코어의 동작 주파수/전압을 최대 프로세서 주파수로 증가시킬 수도 있다. 일 양태에서, 블록 (1220) 에서는, DCVS 솔루션이 동작 주파수/전압 임계치들을 증가시킬 수도 있다. 일 양태에서, 블록 (1220) 에서는, DCVS 솔루션이 프로세싱 코어의 동작 주파수/전압을 스텝들로 증가시킬 수도 있다.When the DCVS solution determines that the budget has not been exhausted (i.e., decision step 1218 = "NO"), at block 1212, the DCVS solution continues to monitor the actual workload / frequency and make adjustments as needed It is possible. At block 1220, the DCVS solution may increase the operating frequency / voltage of the processing core when the DCVS solution determines that the budget is depleted (i.e., decision step 1218 = "yes"). In an aspect, at block 1220, the DCVS solution may increase the operating frequency / voltage of the processing core to a maximum processor frequency. In an aspect, at block 1220, the DCVS solution may increase the operating frequency / voltage thresholds. In an aspect, at block 1220, a DCVS solution may increase the operating frequency / voltage of the processing core in steps.

도 13 은 성능 보장을 강제하는 또 다른 양태의 DCVS 솔루션 방법 (1300) 을 예시한다. 블록들 (1302 내지 1314) 에서, DCVS 솔루션은 도 12 의 블록들 (1202 내지 1214) 에 대하여 위에서 논의된 동작들과 동일하거나 이와 유사한 동작들을 수행할 수도 있다. 결정 블록 (1316) 에서, DCVS 솔루션은 프로세싱 코어가 컴퓨팅된 시간 (즉, 예측된 정상 상태 작업부하에서의 모든 태스크들을 완료하기 위하여 프로세싱 코어에 대해 요구되도록 결정된 시간의 양) 플러스 데드라인 값 (컴퓨팅된 시간 + 데드라인) 전에 그 현재의 작업부하를 완료할 가능성이 높은지 여부를 결정할 수도 있다.FIG. 13 illustrates another embodiment of a DCVS solution method 1300 that enforces performance guarantees. In blocks 1302-1314, the DCVS solution may perform the same or similar operations as the operations discussed above for blocks 1202-1214 in FIG. At decision block 1316, the DCVS solution calculates the plus deadline value (the amount of time that the processing core is determined to be required for the processing core to complete all tasks in the predicted steady state workload) ≪ / RTI > time + deadline) before the current workload is completed.

DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간 플러스 데드라인 값 전에 그 현재의 작업부하를 완료할 가능성이 높은 것으로 결정할 때 (즉, 결정 단계 (1316) = "예"), 블록 (1312) 에서는, DCVS 솔루션이 실제의 작업부하/주파수를 감시하며 필요에 따라 동작 주파수/전압에 대한 조절들을 행하는 것을 계속할 수도 있다.When the DCVS solution determines that the processing core is likely to complete its current workload before the computed time plus deadline value (i.e., decision step 1316 = "YES"), at block 1312, It may monitor this actual workload / frequency and continue to make adjustments to the operating frequency / voltage as needed.

DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간 값 플러스 데드라인 값 전에 그 현재의 작업부하를 완료할 가능성이 높지 않은 것으로 결정할 때 (즉, 결정 단계 (1316) = "아니오"), 블록 (1318) 에서는, DCVS 솔루션이 프로세싱 코어의 동작 주파수/전압을 증가시킬 수도 있다. 프로세싱 코어의 동작 주파수/전압은 최대 프로세서 주파수로 또는 스텝들로 증가될 수도 있다.When the DCVS solution determines that the processing core is not likely to complete its current workload before the computed time value plus deadline value (i.e., decision 1316 = "NO"), The DCVS solution may also increase the operating frequency / voltage of the processing core. The operating frequency / voltage of the processing core may be increased to the maximum processor frequency or steps.

다양한 양태들은, 프로세서의 정상 상태 작업부하를 결정하는 것, 프로세서 상에서 결정된 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것, 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것, 프로세서의 실제의 작업부하에 기초하여 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하는 것, 및 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 것을 포함할 수도 있는, 프로세서를 가지는 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법들을 포함한다.Various aspects include determining a steady state workload of a processor, determining the amount of work required to perform a steady state workload determined on the processor, computing a performance guarantee value for the processor, Performing dynamic clock and voltage scaling operations to scale the frequency of the processor based on the actual workload of the processor, updating the performance guarantee value based on the scaled frequency, Determining whether the processor stays in the busy state for a period equal to or greater than the sum of the determined amount of work and the performance guarantee value and when the processor is determined to have stayed in the busy state for a period equal to or greater than the sum of the determined amount of work and the performance guarantee value , Increasing the frequency of the processor Having a processor, which may include that include methods for improving the performance of the computing device.

일 양태에서, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 것은, 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함할 수도 있다. 추가의 양태에서, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 것은, 프로세서의 주파수를 스텝들로 증가시키는 것을 포함할 수도 있다. 추가의 양태에서, 방법은 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하고, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하고, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 동작들을 반복적으로 수행하는 것을 더 포함할 수도 있다.In one aspect, increasing the frequency of the processor when it is determined that the processor stays in the busy state for a period of time equal to or greater than the sum of the determined work and performance guarantees may include increasing the frequency of the processor to the maximum processor frequency have. In a further aspect, increasing the frequency of the processor when it is determined that the processor has stayed in busy state for a period of time equal to or greater than the sum of the determined work and performance guarantee values may include increasing the frequency of the processor to steps have. In a further aspect, the method updates the performance assurance value based on the scaled frequency, and determines whether the processor has stayed in the busy state for a period of time equal to or greater than the sum of the determined amount of work and the performance assurance value, And increasing the frequency of the processor when it is determined that it has stayed in the busy state for a period of time equal to or greater than the sum of the amount and the performance guarantee value of the processor.

추가의 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것은 데드라인 값을 컴퓨팅하는 것을 포함할 수도 있다. 추가의 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것은 버젯 값을 컴퓨팅하는 것을 포함할 수도 있다. 추가의 양태에서, 프로세서의 정상 상태 작업부하를 결정하는 것은 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함할 수도 있다. 추가의 양태에서, 방법은 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 포함할 수도 있다. 추가의 양태에서, 프로세서의 정상 상태 작업부하를 결정하고, 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들은 단일 스레드에 의해 수행된다. 추가의 양태에서, 단일 스레드는 프로세서 상에서 실행된다. 추가의 양태에서, 단일 스레드는 컴퓨팅 디바이스의 제 2 프로세서 상에서 실행된다.In a further aspect, computing a performance guarantee value for a processor may involve computing a deadline value. In a further aspect, computing the performance guarantee value for the processor may involve computing the budget value. In a further aspect, determining a steady state workload of a processor may include determining requirements of tasks scheduled to run on the processor. In a further aspect, the method may comprise generating pulse trains by sampling transitions between busy and idle states. In a further aspect, operations that determine the steady state workload of the processor, determine the amount of work required to perform a steady state workload on the processor, and compute the performance guarantee value for the processor are performed by a single thread . In a further aspect, a single thread is executed on the processor. In a further aspect, a single thread is executing on a second processor of the computing device.

다양한 양태들은, 프로세서의 정상 상태 작업부하를 결정하기 위한 수단, 프로세서 상에서 결정된 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하기 위한 수단, 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단, 프로세서를 아이들 상태로부터 비지 상태로 천이시키기 위한 수단, 프로세서의 실제의 작업부하에 기초하여 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하기 위한 수단, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하기 위한 수단, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하기 위한 수단, 및 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키기 위한 수단을 가지는 컴퓨팅 디바이스를 포함한다.Various aspects may include means for determining a steady state workload of a processor, means for determining an amount of work required to perform a steady state workload determined on the processor, means for computing a performance guarantee value for the processor, Means for performing dynamic clock and voltage scaling operations to scale the frequency of the processor based on the actual workload of the processor, means for performing a performance guarantee on the basis of the scaled frequency Means for determining whether the processor has stayed in a busy state for a period of time equal to or greater than the sum of the determined amount of work and the performance guarantee value, and means for determining whether the processor has stayed in the busy state for a period of time equal to or greater than the sum of the determined amount of work, I stayed in state When it is determined, and a computing device having means for increasing the frequency of the processor.

일 양태에서, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키기 위한 수단은, 프로세서의 주파수를 최대 프로세서 주파수로 증가시키기 위한 수단을 포함할 수도 있다.In one aspect, the means for increasing the frequency of the processor when it is determined that the processor has stayed in the busy state for a period of time equal to or greater than the sum of the determined work and performance guarantee values comprises means for increasing the frequency of the processor to a maximum processor frequency .

추가의 양태에서, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키기 위한 수단은, 프로세서의 주파수를 스텝들로 증가시키기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 컴퓨팅 디바이스는 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하고, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하고, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 동작들을 반복적으로 수행하기 위한 수단을 더 포함할 수도 있다.In a further aspect, when it is determined that the processor has stayed in busy state for a period of time equal to or greater than the sum of the determined work and performance guarantee values, the means for increasing the frequency of the processor comprises means for increasing the frequency of the processor to steps . In a further aspect, the computing device updates the performance assurance value based on the scaled frequency, and determines whether the processor has stayed in busy state for a period of time equal to or greater than the sum of the determined amount of work and the performance assurance value, And may further comprise means for iteratively performing operations to increase the frequency of the processor when it is determined that it has stayed in busy state for a period equal to or greater than the sum of the amount of work and the performance guarantee value.

추가의 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단은 데드라인 값을 컴퓨팅하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단은 버젯 값을 컴퓨팅하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 프로세서의 정상 상태 작업부하를 결정하기 위한 수단은 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 컴퓨팅 디바이스는 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하기 위한 수단을 포함할 수도 있다.In a further aspect, the means for computing the performance guarantee value for the processor may comprise means for computing a deadline value. In a further aspect, the means for computing the performance guarantee value for the processor may comprise means for computing the budget value. In a further aspect, the means for determining a steady state workload of a processor may comprise means for determining requirements of tasks scheduled to run on the processor. In a further aspect, a computing device may include means for generating pulse trains by sampling transitions between busy and idle states.

추가의 양태에서, 컴퓨팅 디바이스는 프로세서의 정상 상태 작업부하를 결정하고, 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 단일 스레드를 통해 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들을 달성하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 컴퓨팅 디바이스는 프로세서 상에서 단일 스레드를 실행하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 제 2 프로세서 상에서 단일 스레드를 실행하기 위한 수단을 포함할 수도 있다.In a further aspect, a computing device may be configured to determine a steady state workload of a processor, to determine an amount of work required to perform a steady state workload on the processor, to compute a performance guarantee value for the processor via a single thread, May also include means for accomplishing the above. In a further aspect, a computing device may include means for executing a single thread on a processor. In a further aspect, a computing device may comprise means for executing a single thread on a second processor of the computing device.

추가의 양태들은, 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 제 2 프로세서 상에서 결정된 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것, 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것, 제 2 프로세서의 실제의 작업부하에 기초하여 제 2 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하는 것, 및 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것을 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된 제 1 프로세서를 포함할 수도 있는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된 프로세서를 포함할 수도 있는 컴퓨팅 디바이스를 포함한다.Additional aspects include determining a steady state workload of a second processor, determining an amount of work required to perform a steady state workload determined on the second processor, computing a performance guarantee value for the second processor Performing the dynamic clock and voltage scaling operations to scale the frequency of the second processor based on the actual workload of the second processor, performing the scaled Determining whether the second processor has stayed in the busy state for a period of time equal to or greater than the sum of the determined amount of work and the performance guarantee value based on the frequency and the amount of the determined work And the performance guarantee value for a period equal to or greater than the sum of the performance guarantee values Includes a processor configured with processor-executable instructions for performing operations that may include a first processor configured with processor-executable instructions for performing operations, including increasing a frequency of a second processor Lt; RTI ID = 0.0 > a < / RTI >

일 양태에서, 제 1 프로세서는, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것이, 제 2 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다.In one aspect, the first processor is configured to increase the frequency of the second processor when it is determined that the second processor has stayed in busy state for a period of time equal to or greater than the sum of the determined performance and the performance guarantee value, To a maximum processor frequency. The processor-executable instructions may also include instructions that, when executed,

추가의 양태에서, 제 1 프로세서는, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것이, 제 2 프로세서의 주파수를 스텝들로 증가시키는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다.In a further aspect, the first processor is configured to increase the frequency of the second processor when it is determined that the second processor has stayed in busy state for a period of time equal to or greater than the sum of the determined work and the performance guarantee value, May also comprise processor-executable instructions that may include increasing the frequency to steps.

추가의 양태에서, 제 1 프로세서는 또한, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하고, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하고, 그리고 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 동작들을 반복적으로 수행하기 위한 프로세서-실행가능한 명령들로 추가로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다.In a further aspect, the first processor also updates the performance assurance value based on the scaled frequency and determines whether the second processor stays in the busy state for a period of time equal to or greater than the sum of the determined amount of work and the performance assurance value And processor-executable instructions for repeatedly performing operations to increase the frequency of the second processor when it is determined that the second processor has stayed in busy state for a period of time equal to or greater than the sum of the determined work and performance guaranteed values As shown in FIG. In a further aspect, the first processor may be comprised of processor-executable instructions that may include computing a deadline value for computing the performance guarantee value for the second processor.

추가의 양태에서, 제 1 프로세서는, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버젯 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 제 2 프로세서의 정상 상태 작업부하를 결정하는 것이 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성될 수도 있다.In a further aspect, the first processor may be comprised of processor-executable instructions that enable computing the performance assurance value for the second processor to include computing the value of the budget. In a further aspect, the first processor is configured with processor-executable instructions that may include determining the requirements of tasks scheduled to run on the second processor, wherein determining the steady state workload of the second processor . In a further aspect, the first processor may be comprised of processor-executable instructions for performing operations further comprising generating pulse trains by sampling transitions between busy and idle states.

추가의 양태에서, 제 1 프로세서는, 제 2 프로세서의 정상 상태 작업부하를 결정하고, 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들은 단일 스레드에 의해 수행되도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 단일 스레드가 제 1 프로세서 상에서 실행될 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 제 2 프로세서의 정상 상태 작업부하를 결정하고, 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들을 달성하는 것이 제 2 프로세서 상에서 단일 스레드를 실행하는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다.In a further aspect, a first processor is configured to determine a steady state workload of a second processor, to determine an amount of work required to perform a steady state workload on a second processor, May be configured with processor-executable instructions to be performed by a single thread. In a further aspect, the first processor may be comprised of processor-executable instructions that cause a single thread to be executed on the first processor. In a further aspect, a first processor is configured to determine a steady state workload of a second processor, to determine an amount of work required to perform a steady state workload on a second processor, May be comprised of processor-executable instructions that may include executing a single thread on a second processor to accomplish operations to compute a first thread.

추가의 양태들은 구성된 프로세서-실행가능한 명령들을 저장한 비-일시적인 (non-transitory) 서버-판독가능한 저장 매체를 포함하고, 상기 프로세서-실행가능한 명령들은 컴퓨팅 디바이스로 하여금, 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 제 2 프로세서 상에서 결정된 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것, 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것, 제 2 프로세서의 실제의 작업부하에 기초하여 제 2 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하는 것, 및 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것을 포함할 수도 있는 동작들을 수행하게 한다.Further aspects include a non-transitory server-readable storage medium storing configured processor-executable instructions, wherein the processor-executable instructions cause the computing device to perform a steady state operation of the second processor Determining the amount of work required to perform the steady state workload determined on the second processor, computing a performance guarantee value for the second processor, computing a performance guarantee value for the second processor from the idle state to the busy state Performing dynamic clock and voltage scaling operations to scale the frequency of the second processor based on the actual workload of the second processor, updating the performance guarantee value based on the scaled frequency, During a period in which the second processor is equal to or greater than the sum of the determined amount of work and the performance guarantee value And increasing the frequency of the second processor when it is determined that the second processor has stayed in the busy state for a period equal to or greater than the sum of the determined amount of work and the performance guarantee value To perform some operations.

일 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것이, 제 2 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다.In one aspect, the stored processor-executable software instructions cause the processor to increase the frequency of the second processor when it is determined that the second processor has stayed in the busy state for a period of time equal to or greater than the sum of the determined amount of work and the performance- May include increasing the frequency of the second processor to the maximum processor frequency.

추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 제 2 프로세서로 하여금, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것이, 제 2 프로세서의 주파수를 스텝들로 증가시키는 것, 및 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하고, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하고, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 동작들을 반복적으로 수행하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다.In a further aspect, the stored processor-executable software instructions cause the second processor to, when it is determined that the second processor has stayed in the busy state for a period of time equal to or greater than the sum of the determined amount of work and the performance- Increasing the frequency may include increasing the frequency of the second processor in steps and updating the performance guarantee value based on the scaled frequency and updating the performance guarantee value during a period of time equal to or greater than the sum of the determined amount of work and the performance guarantee value Determining whether the second processor has stayed in busy state and repeatedly performing operations to increase the frequency of the second processor when it is determined that the second processor has stayed in busy state for a period of time equal to or greater than the sum of the determined work and performance guarantee values To perform actions that may also include .

추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버젯 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서의 정상 상태 작업부하를 결정하는 것이 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 포함하는 동작들을 수행하게 하도록 구성될 수도 있다.In a further aspect, the stored processor-executable software instructions may be configured to cause the processor to perform operations that may include computing a performance guarantee value for the second processor may include computing a deadline value have. In a further aspect, the stored processor-executable software instructions may be configured to cause the processor to perform operations that may include computing a performance value for the second processor may include computing the value of the budget . In a further aspect, the stored processor-executable software instructions cause the processor to determine that determining a steady state workload of the second processor may include determining requirements of tasks scheduled to run on the second processor To perform operations. In a further aspect, the stored processor-executable software instructions may be configured to cause the processor to perform operations, including generating pulse trains by sampling transitions between busy and idle states.

추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서의 정상 상태 작업부하를 결정하고, 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들은 단일 스레드에 의해 수행되도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 단일 스레드가 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 단일 스레드가 제 2 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성될 수도 있다.In a further aspect, stored processor-executable software instructions cause the processor to: determine a steady state workload of a second processor; determine an amount of work required to perform a steady state workload on a second processor; Operations that compute the performance assurance value for the second processor may be configured to perform operations to be performed by a single thread. In a further aspect, the stored processor-executable software instructions may be configured to cause the processor to perform operations that cause a single thread to execute on the processor. In a further aspect, the stored processor-executable software instructions may be configured to cause the processor to perform operations that cause a single thread to execute on the second processor.

다양한 양태들은 다수의 이익들을 제공하고, 성능, 전력 소비, 및/또는 응답성이 중요한 랩톱들 및 다른 이동 디바이스들에서 구현될 수도 있다. 다양한 양태들은 저부하 머신들에 대한 에너지 및 냉각 비용들을 감소시키기 위하여 서버 및 개인용 컴퓨터들에서 구현될 수도 있다. 열 출력을 저하시키는 것은 시스템 냉각 팬들이 낮추어지거나 턴오프되도록 하여, 잡음 레벨들을 저하시키고, 전력 소비를 추가로 감소시킨다. 다양한 양태들은 또한, 온도가 어떤 임계치에 도달할 때에 불충분하게 냉각된 시스템들에서 열을 저하시키기 위하여 이용될 수도 있다.Various aspects may be implemented in laptops and other mobile devices that provide a number of benefits and are performance, power consumption, and / or responsiveness. Various aspects may be implemented in servers and personal computers to reduce energy and cooling costs for low load machines. Reducing the heat output causes the system cooling fans to be lowered or turned off, thereby lowering noise levels and further reducing power consumption. Various aspects may also be used to degrade heat in poorly cooled systems when the temperature reaches a certain threshold.

다양한 양태들은 프로세싱 코어들의 측면에서 예시적인 목적들을 위하여 위에서 설명되지만, 양태의 방법들, 시스템들, 및 실행가능한 명령들은 방법들이 주파수 또는 전압의 인식 및 제어를 가능하게 하는 임의의 시스템에서 구현될 수도 있다. 추가로, 주파수 또는 전압을 스케일링하는 동작들은 임의의 단일 또는 멀티프로세서 시스템 상에서 수행될 수도 있다.While various aspects are described above for exemplary purposes in terms of processing cores, the methods, systems, and executable instructions of the embodiments may be implemented in any system in which methods enable the recognition and control of frequency or voltage have. In addition, operations to scale the frequency or voltage may be performed on any single or multiprocessor system.

다양한 양태들은 다양한 휴대용 또는 이동 컴퓨팅 디바이스들에서 구현될 수도 있고, 그 예는 도 14 에서 예시되어 있다. 휴대용 컴퓨팅 디바이스 (1400) 는 메모리 (1402) 및 트랜시버 (1405) 에 결합된 프로세싱 코어 (1401) 를 포함할 수도 있다. 트랜시버 (1405) 는 전자기 방사 (electromagnetic radiation) 를 전송하고 수신하기 위한 안테나 (1404) 에 결합될 수도 있다. 휴대용 컴퓨팅 디바이스 (1400) 는 또한, 디스플레이 (1403) (예를 들어, 터치 스크린 디스플레이), 및 사용자 입력들을 받아들이기 위한 메뉴 선택 버튼들 또는 로커 스위치 (rocker switch) 들 (1406) 을 포함할 수도 있다. 일부의 휴대용 컴퓨팅 디바이스에서는, 무선 통신 기능들에 전용인 하나의 프로세서 및 다른 애플리케이션들을 실행하는 것에 전용인 하나의 프로세서와 같은, 다중 프로세서들 (1401) 이 제공될 수도 있다.Various aspects may be implemented in a variety of portable or mobile computing devices, an example of which is illustrated in Fig. The portable computing device 1400 may include a memory 1402 and a processing core 1401 coupled to the transceiver 1405. The transceiver 1405 may be coupled to an antenna 1404 for transmitting and receiving electromagnetic radiation. The portable computing device 1400 may also include a display 1403 (e.g., a touch screen display), and menu selection buttons or rocker switches 1406 for accepting user inputs . In some portable computing devices, multiple processors 1401 may be provided, such as one processor dedicated to running other applications and one processor dedicated to wireless communication functions.

다양한 양태들은 또한, 도 15 에서 예시된 서버 (1500) 와 같은, 다양한 상업적으로 입수가능한 서버 디바이스들 중의 임의의 것 상에서 구현될 수도 있다. 이러한 서버 (1500) 는 전형적으로 프로세싱 코어 (1501) 를 포함하고, 그 하나 이상이 멀티-코어 프로세서들일 수도 있거나 이를 포함할 수도 있는 다중 프로세서 시스템들 (1511, 1521, 1531) 을 포함할 수도 있다. 프로세싱 코어 (1501) 는 휘발성 메모리 (1502) 및 대용량 비휘발성 메모리 예컨대, 디스크 (disk) 드라이브 (1503) 에 결합될 수도 있다. 서버 (1500) 는 또한, 프로세싱 코어 (1501) 에 결합된 플로피 디스크 (floppy disc) 드라이브, 컴팩트 디스크 (compact disc; CD) 또는 DVD 디스크 (disc) 드라이브 (1506) 를 포함할 수도 있다. 서버 (1500) 는 또한, 다른 브로드캐스트 시스템 컴퓨터들 및 서버들에 결합된 로컬 영역 네트워크와 같은 네트워크 (1505) 와의 데이터 접속들을 수립하기 위하여 프로세싱 코어 (1501) 에 결합된 네트워크 액세스 포트들 (1504) 을 포함할 수도 있다.Various aspects may also be implemented on any of a variety of commercially available server devices, such as the server 1500 illustrated in FIG. Such a server 1500 typically includes a processing core 1501 and may include multiple processor systems 1511, 1521, and 1531, one or more of which may be multi-core processors or may include multi-core processors. The processing core 1501 may be coupled to volatile memory 1502 and a mass non-volatile memory, such as a disk drive 1503. The server 1500 may also include a floppy disc drive, a compact disc (CD) or a DVD disc drive 1506 coupled to the processing core 1501. The server 1500 also includes network access ports 1504 coupled to the processing core 1501 to establish data connections with the network 1505, such as a local area network coupled to other broadcast system computers and servers. .

위에서 설명된 양태들은 또한, 도 16 에서 예시된 랩톱 컴퓨터 (1600) 와 같은 다양한 개인용 컴퓨터 디바이스들 내에서 구현될 수도 있다. 랩톱 컴퓨터 (1600) 는 휘발성 메모리 (1602) 및 대용량 비휘발성 메모리 예컨대, 플래시 메모리의 디스크 (disk) 드라이브 (1604) 에 결합된 프로세싱 코어 (1601) 를 포함할 수도 있다. 컴퓨터 (1600) 는 또한, 프로세싱 코어 (1601) 에 결합된 플로피 디스크 (floppy disc) 드라이브 (1606) 및 컴팩트 디스크 (CD) 드라이브 (1608) 를 포함할 수도 있다. 컴퓨터 디바이스 (1600) 는 또한, 데이터 접속들을 수립하거나, USB, FireWire®, 또는 Lightning® 커넥터 소켓들과 같은 외부 메모리 디바이스들, 또는 프로세싱 코어 (1601) 를 네트워크 또는 컴퓨터에 결합하기 위한 다른 네트워크 접속 회로들을 수용하기 위하여 프로세싱 코어 (1601) 에 결합된 다수의 커넥터 포트들을 포함할 수도 있다. 노트북 구성에서, 컴퓨터 하우징은 프로세싱 코어 (1601) 에 모두 결합된 터치패드 (1616), 키보드 (1618), 및 디스플레이 (1620) 를 포함한다. 컴퓨팅 디바이스의 다른 구성들은 잘 알려진 바와 같이 (예를 들어, USB 입력을 통해) 프로세서에 결합된 컴퓨터 마우스 또는 트랙볼 (trackball) 을 포함할 수도 있다.The aspects described above may also be implemented within a variety of personal computer devices, such as the laptop computer 1600 illustrated in FIG. The laptop computer 1600 may include a processing core 1601 coupled to a volatile memory 1602 and a mass storage nonvolatile memory such as a disk drive 1604 of flash memory. The computer 1600 may also include a floppy disc drive 1606 and a compact disc (CD) drive 1608 coupled to the processing core 1601. The computer device 1600 may also be connected to external memory devices such as USB, FireWire®, or Lightning® connector sockets, or other network connection circuitry for coupling the processing core 1601 to a network or computer And may include a plurality of connector ports coupled to the processing core 1601 to accommodate the processing cores. In a notebook configuration, the computer housing includes a touch pad 1616, a keyboard 1618, and a display 1620 all coupled to the processing core 1601. Other configurations of computing devices may include a computer mouse or trackball coupled to the processor as is well known (e.g., via a USB input).

프로세싱 코어 (1401, 1501, 1601) 는, 본원에서 설명된 다양한 양태들의 기능들 및 동작들을 포함하는 다양한 기능들을 수행하기 위하여 소프트웨어 명령들 (애플리케이션들) 에 의해 구성될 수 있는 임의의 프로그래밍가능한 프로세서, 마이크로프로세서, 마이크포컴퓨터, 멀티-코어 프로세서, 또는 다중-프로세서 칩일 수도 있다. 전형적으로, 소프트웨어 애플리케이션들은, 이들이 액세스되고 프로세싱 코어 (1401, 1501, 1601) 내로 로딩되기 전에 내부 메모리 (1402, 1502, 1602) 에서 저장될 수도 있다. 각각의 프로세싱 코어 (1401, 1501, 1601) 는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다. 일부의 컴퓨팅 디바이스들에서, 추가적인 메모리 칩들 (예를 들어, 보안 데이터 (Secure Data; SD) 카드) 은 컴퓨팅 디바이스 내로 플러깅 (plugging) 될 수도 있고 프로세싱 코어 (1401, 1501, 1601) 에 결합될 수도 있다. 내부 메모리 (1402, 1502, 1602) 는 플래시 메모리와 같은 휘발성 또는 비휘발성 메모리, 또는 양자의 혼합일 수도 있다. 이 설명의 목적들을 위하여, 메모리에 대한 일반적인 참조는, 내부 메모리 (1402), 이동 디바이스 내로 플러깅된 분리가능한 메모리, 및 프로세싱 코어 (1401) 내의 메모리를 포함하는, 프로세싱 코어 (1401, 1501, 1601) 에 의해 액세스가능한 모든 메모리를 지칭한다.The processing cores 1401, 1501, and 1601 may be implemented as any programmable processor, processor, and / or code that may be configured by software instructions (applications) to perform various functions, including the functions and operations of the various aspects described herein. A microprocessor, a microprocessor, a multi-core processor, or a multi-processor chip. Typically, software applications may be stored in internal memory 1402, 1502, 1602 before they are accessed and loaded into processing cores 1401, 1501, 1601. Each processing core 1401, 1501, 1601 may include sufficient internal memory to store application software instructions. In some computing devices, additional memory chips (e.g., Secure Data (SD) cards) may be plugged into the computing device and coupled to the processing cores 1401, 1501, 1601 . Internal memories 1402, 1502 and 1602 may be volatile or non-volatile memories such as flash memory, or a mixture of both. For purposes of this description, a general reference to memory includes processing cores 1401, 1501, 1601, including internal memory 1402, detachable memory plugged into a mobile device, and memory in processing core 1401. [ ≪ / RTI >

프로세싱 코어 (1501, 1601, 1710) 는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다. 다수의 디바이스들에서, 내부 메모리는 플래시 메모리와 같은 휘발성 또는 비휘발성 메모리, 또는 양자의 혼합일 수도 있다. 이 설명의 목적들을 위하여, 메모리에 대한 일반적인 참조는, 내부 메모리, 또는 디바이스 내로 플러깅된 분리가능한 메모리와, 프로세싱 코어 (1501, 1601, 1710) 자체 내의 메모리를 포함하는, 프로세서 (1501, 1601, 1710) 에 의해 액세스가능한 메모리를 지칭한다.The processing cores 1501, 1601, and 1710 may include sufficient internal memory to store application software instructions. In many devices, the internal memory may be a volatile or nonvolatile memory such as a flash memory, or a mixture of both. For purposes of this description, a generic reference to a memory may include a processor 1501, 1601, 1710, or 1710, including memory within the processing core 1501, 1601, 1710 itself, and a removable memory plugged into the internal memory, Quot;). ≪ / RTI >

상기한 방법 설명들 및 프로세스 흐름도들은 예시적인 예들에 불과한 것으로서 제공되고, 다양한 양태들의 단계들이 제시된 순서로 수행되어야 하는 것을 요구하거나 암시하도록 의도된 것이 아니다. 당해 분야의 당업자에 의해 인식되는 바와 같이, 상기한 양태들에서의 단계들의 순서는 임의의 순서로 수행될 수도 있다. "그 후", "다음으로", "다음" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도된 것이 아니고; 이 단어들은 방법들의 설명을 통해 독자를 안내하기 위하여 간단하게 이용된다. 추가로, 예를 들어, 관사들 "a", "an", 또는 "the" 를 이용하는 단수인 청구항 구성요소들에 대한 임의의 참조는 구성요소를 단수로 제한하는 것으로 해석되지 않아야 한다.The above method descriptions and process flow diagrams are provided by way of illustrative examples only, and are not intended to imply or imply that the steps of the various aspects should be performed in the order presented. As will be appreciated by those skilled in the art, the order of the steps in the above aspects may be performed in any order. The words "after "," next ", "next" and the like are not intended to limit the order of the steps; These words are simply used to guide the reader through a description of methods. In addition, any reference to a claim element, for example, that uses the articles "a", "an", or "the" is not to be construed as limiting the element in a singular manner.

본원에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로서 구현될 수도 있다. 하드웨어 및 소프트웨어의 이 교환가능성을 명확하게 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 일반적으로 그 기능성의 측면에서 위에서 설명되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로 구현되는지 여부는 특별한 애플리케이션 및 전체 시스템에 부과된 설계 제약들에 종속된다. 숙련된 기술자들은 각각의 특별한 애플리케이션을 위한 다양한 방법들로 설명된 기능성을 구현할 수도 있지만, 이러한 구현 판정들은 본 발명의 범위로부터의 이탈을 야기시키는 것으로 해석되지 않아야 한다.The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. In order to clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.

본원에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 로직들, 논리적 블록들, 모듈들, 및 회로들을 구현하기 위하여 이용된 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래밍가능한 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능한 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 그 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 멀티프로세서일 수도 있지만, 대안적으로, 프로세서는 임의의 기존의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 및 멀티프로세서, 복수의 멀티프로세서들, DSP 코어와 함께 하나 이상의 멀티프로세서들, 또는 임의의 다른 이러한 구성의 조합으로서 구현될 수도 있다. 대안적으로, 일부의 단계들 또는 방법들은 주어진 기능에 특정한 회로부에 의해 수행될 수도 있다.The hardware utilized to implement the various illustrative logic, logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC) Field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a multiprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a DSP and a multiprocessor, a plurality of multiprocessors, one or more multiprocessors in conjunction with a DSP core, or any other such combination of configurations. Alternatively, some of the steps or methods may be performed by circuitry specific to a given function.

하나 이상의 예시적인 양태들에서는, 설명된 기능들이 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현될 경우, 기능들은 비-일시적인 컴퓨터-판독가능한 저장 매체 상에서 하나 이상의 프로세서-실행가능한 명령들 또는 코드로서 저장될 수도 있다. 본원에서 개시된 방법 또는 알고리즘의 단계들은 유형의 (tangible) 또는 비-일시적인 컴퓨터-판독가능한 저장 매체 상에서 상주할 수도 있는 프로세서-실행가능한 소프트웨어 모듈에서 구체화될 수도 있다. 비-일시적인 컴퓨터-판독가능한 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 저장 매체들일 수도 있다. 제한이 아닌 예로서, 이러한 컴퓨터-판독가능한 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 희망하는 프로그램 코드를 반송 또는 저장하기 위해 이용될 수도 있으며 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 본원에서 이용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (compact disc; CD), 레이저 디스크 (laser disc), 광학 디스크 (optical disc), 디지털 다기능 디스크 (digital versatile disc; DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크 (blu-ray disc) 를 포함하고, 여기서, 디스크 (disk) 들은 통상 데이터를 자기적으로 재생하는 반면, 디스크 (disc) 들은 데이터를 레이저들로 광학적으로 재생한다. 상기의 조합들은 또한, 비-일시적인 컴퓨터-판독가능한 매체들의 범위 내에 포함될 수 있다. 추가적으로, 방법 또는 알고리즘의 동작들은, 컴퓨터 프로그램 제품 내로 편입될 수도 있는 비-일시적인 머신 판독가능한 매체 및/또는 비-일시적인 컴퓨터-판독가능한 매체 상에서 코드들 및/또는 명령들 중의 하나 또는 임의의 조합 또는 세트로서 상주할 수도 있다.In one or more of the exemplary aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored as one or more processor-executable instructions or code on a non-temporary computer-readable storage medium. The steps of a method or algorithm disclosed herein may be embodied in a processor-executable software module that may reside on a tangible or non-temporary computer-readable storage medium. Non-temporary computer-readable storage media may be any available storage media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can be embodied as computer readable code in the form of RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, And may include any other medium that may be used to carry or store the program code and which may be accessed by a computer. As used herein, discs and discs may be referred to as compact discs (CD), laser discs, optical discs, digital versatile discs (DVDs) Includes a floppy disk and a blu-ray disc, where disks typically reproduce data magnetically, while discs optically reproduce data with lasers do. Combinations of the above may also be included within the scope of non-temporary computer-readable media. Additionally, the operations of a method or algorithm may be embodied in one or any combination of codes and / or instructions on a non-transitory machine-readable medium and / or non-transitory computer-readable medium, May also reside as a set.

개시된 양태들의 선행하는 설명은 당해 분야의 당업자가 본 발명을 제조하거나 이용하는 것을 가능하게 하도록 제공된다. 이 양태들에 대한 다양한 수정들은 당해 분야의 당업자들에게 용이하게 명백할 것이고, 본원에서 정의된 일반적인 원리들은 본 발명의 사상 또는 범위로부터 이탈하지 않으면서 다른 양태들에 적용될 수도 있다. 따라서, 본 발명은 본원에서 도시된 양태들에 제한되도록 의도된 것이 아니라, 다음의 청구항들 및 본원에서 개시된 원리들 및 신규한 특징들과 부합되는 가장 넓은 범위가 부여되야 한다.The preceding description of the disclosed aspects is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects without departing from the spirit or scope of the invention. Accordingly, the invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles of the following claims and the principles and novel features disclosed herein.

Claims (40)

프로세서를 가지는 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법으로서,
상기 프로세서의 정상 상태 작업부하를 결정하는 단계;
상기 프로세서 상에서 결정된 상기 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 단계;
상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계;
상기 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 단계;
상기 프로세서의 실제의 작업부하에 기초하여 상기 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 단계;
스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 단계;
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 단계; 및
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
CLAIMS 1. A method for improving performance on a computing device having a processor,
Determining a steady state workload of the processor;
Determining an amount of work required to perform the steady state workload determined on the processor;
Computing a performance guarantee value for the processor;
Transitioning the processor from an idle state to a busy state;
Performing dynamic clock and voltage scaling operations to scale the frequency of the processor based on an actual workload of the processor;
Updating the performance guarantee value based on the scaled frequency;
Determining whether the processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value; And
Increasing the frequency of the processor when it is determined that the processor has stayed in the busy state for a period of time equal to or greater than the amount of the determined work and the performance guarantee value .
제 1 항에 있어서,
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 단계는,
상기 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
The method according to claim 1,
Increasing the frequency of the processor when it is determined that the processor has stayed in the busy state for a period of time equal to or greater than the determined amount of the task and the performance guarantee value,
And increasing the frequency of the processor to a maximum processor frequency.
제 1 항에 있어서,
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 단계는, 상기 프로세서의 상기 주파수를 스텝들로 증가시키는 단계를 포함하고,
상기 방법은,
스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 것
의 동작들을 반복적으로 수행하는 단계를 더 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
The method according to claim 1,
Increasing the frequency of the processor when it is determined that the processor has stayed in the busy state for a period of time equal to or greater than the sum of the determined performance and the workload, ≪ / RTI >
The method comprises:
Updating the performance guarantee value based on the scaled frequency;
Determining whether the processor has stayed in the busy state for a period equal to or greater than the sum of the amount of the determined work and the performance guarantee value; And
Increasing the frequency of the processor when it is determined that the processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value
≪ / RTI > further comprising the step of repeatedly performing operations of the computing device.
제 1 항에 있어서,
상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계는 데드라인 값을 컴퓨팅하는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
The method according to claim 1,
Wherein computing the performance guarantee value for the processor comprises computing a deadline value.
제 1 항에 있어서,
상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계는 버젯 값을 컴퓨팅하는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
The method according to claim 1,
Wherein computing the performance guarantee value for the processor comprises computing a budget value.
제 1 항에 있어서,
상기 프로세서의 정상 상태 작업부하를 결정하는 단계는 상기 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
The method according to claim 1,
Wherein determining a steady state workload of the processor comprises determining requirements of tasks scheduled to run on the processor.
제 1 항에 있어서,
상기 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 단계를 더 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
The method according to claim 1,
And generating pulse trains by sampling transitions between the busy and idle states. ≪ Desc / Clms Page number 22 >
제 1 항에 있어서,
상기 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들은 단일 스레드에 의해 수행되는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
The method according to claim 1,
Determining a steady state workload of the processor, determining an amount of work required to perform a steady state workload on the processor, and computing the performance guarantee value for the processor are performed by a single thread ≪ / RTI > A method for improving performance on a computing device.
제 8 항에 있어서,
상기 단일 스레드는 상기 프로세서 상에서 실행되는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
9. The method of claim 8,
Wherein the single thread is executing on the processor.
제 8 항에 있어서,
상기 단일 스레드는 상기 컴퓨팅 디바이스의 제 2 프로세서 상에서 실행되는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
9. The method of claim 8,
Wherein the single thread is executing on a second processor of the computing device.
컴퓨팅 디바이스로서,
프로세서;
상기 프로세서의 정상 상태 작업부하를 결정하기 위한 수단;
상기 프로세서 상에서 결정된 상기 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하기 위한 수단;
상기 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단;
상기 프로세서를 아이들 상태로부터 비지 상태로 천이시키기 위한 수단;
상기 프로세서의 실제의 작업부하에 기초하여 상기 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하기 위한 수단;
스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하기 위한 수단;
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하기 위한 수단; 및
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키기 위한 수단을 포함하는, 컴퓨팅 디바이스.
As a computing device,
A processor;
Means for determining a steady state workload of the processor;
Means for determining an amount of work required to perform the steady state workload determined on the processor;
Means for computing a performance guarantee value for the processor;
Means for transitioning the processor from an idle state to a busy state;
Means for performing dynamic clock and voltage scaling operations to scale the frequency of the processor based on an actual workload of the processor;
Means for updating the performance guarantee value based on the scaled frequency;
Means for determining whether the processor has stayed in the busy state for a period of time equal to or greater than a sum of the amount of the determined work and the performance guarantee value; And
And means for increasing the frequency of the processor when it is determined that the processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value.
제 11 항에 있어서,
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키기 위한 수단은,
상기 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키기 위한 수단을 포함하는, 컴퓨팅 디바이스.
12. The method of claim 11,
The means for increasing the frequency of the processor when it is determined that the processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value,
And means for increasing said frequency of said processor to a maximum processor frequency.
제 11 항에 있어서,
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키기 위한 수단은, 상기 프로세서의 상기 주파수를 스텝들로 증가시키기 위한 수단을 포함하고,
상기 컴퓨팅 디바이스는,
스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 것
의 동작들을 반복적으로 수행하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
12. The method of claim 11,
Wherein the means for increasing the frequency of the processor when it is determined that the processor has stayed in the busy state for a period of time equal to or greater than the sum of the determined performance and the performance assurance value comprises incrementing the frequency of the processor by steps And means for,
The computing device includes:
Updating the performance guarantee value based on the scaled frequency;
Determining whether the processor has stayed in the busy state for a period equal to or greater than the sum of the amount of the determined work and the performance guarantee value; And
Increasing the frequency of the processor when it is determined that the processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value
Further comprising means for iteratively performing operations of the computing device.
제 11 항에 있어서,
상기 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단은 데드라인 값을 컴퓨팅하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
12. The method of claim 11,
Wherein the means for computing a performance guarantee value for the processor comprises means for computing a deadline value.
제 11 항에 있어서,
상기 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단은 버젯 값을 컴퓨팅하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
12. The method of claim 11,
Wherein the means for computing a performance guarantee value for the processor comprises means for computing a budget value.
제 11 항에 있어서,
상기 프로세서의 정상 상태 작업부하를 결정하기 위한 수단은 상기 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
12. The method of claim 11,
Wherein the means for determining a steady state workload of the processor comprises means for determining requirements of tasks scheduled to run on the processor.
제 11 항에 있어서,
상기 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
12. The method of claim 11,
And means for generating pulse trains by sampling transitions between said busy and idle states.
제 11 항에 있어서,
상기 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들을 단일 스레드를 통해 달성하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
12. The method of claim 11,
Determining a steady state workload of the processor, determining an amount of work required to perform a steady state workload on the processor, and computing the performance guarantee value for the processor over a single thread Further comprising means for establishing a connection to the computing device.
제 18 항에 있어서,
상기 프로세서 상에서 상기 단일 스레드를 실행하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
19. The method of claim 18,
And means for executing the single thread on the processor.
제 18 항에 있어서,
상기 컴퓨팅 디바이스의 제 2 프로세서 상에서 상기 단일 스레드를 실행하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
19. The method of claim 18,
Further comprising means for executing the single thread on a second processor of the computing device.
컴퓨팅 디바이스로서,
제 1 프로세서를 포함하고,
상기 제 1 프로세서는,
제 2 프로세서의 정상 상태 작업부하를 결정하는 것;
상기 제 2 프로세서 상에서 결정된 상기 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것;
상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것;
상기 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것;
상기 제 2 프로세서의 실제의 작업부하에 기초하여 상기 제 2 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것;
스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것을
포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된, 컴퓨팅 디바이스.
As a computing device,
A first processor,
Wherein the first processor comprises:
Determining a steady state workload of the second processor;
Determining an amount of work required to perform the steady state workload determined on the second processor;
Computing a performance guarantee value for the second processor;
Transitioning the second processor from an idle state to a busy state;
Performing dynamic clock and voltage scaling operations to scale the frequency of the second processor based on an actual workload of the second processor;
Updating the performance guarantee value based on the scaled frequency;
Determining whether the second processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value; And
Increasing the frequency of the second processor when it is determined that the second processor has stayed in the busy state for a period of time equal to or greater than the amount of the determined work and the performance guarantee value
Comprising processor-executable instructions for performing the operations comprising.
제 21 항에 있어서,
상기 제 1 프로세서는, 상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것이,
상기 제 2 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
22. The method of claim 21,
Increasing the frequency of the second processor when it is determined that the second processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value,
And increasing the frequency of the second processor to a maximum processor frequency.
제 21 항에 있어서,
상기 제 1 프로세서는, 상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것이, 상기 제 2 프로세서의 상기 주파수를 스텝들로 증가시키는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되고, 그리고
상기 제 1 프로세서는 또한,
스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것
의 동작들을 반복적으로 수행하기 위한 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
22. The method of claim 21,
Wherein the first processor is configured to increase the frequency of the second processor when it is determined that the second processor has stayed in the busy state for a period equal to or greater than the sum of the determined performance and the performance guarantee value, Comprising increasing the frequency of the two processors to steps, wherein the processor-executable instructions comprise:
The first processor may further include:
Updating the performance guarantee value based on the scaled frequency;
Determining whether the second processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value; And
Increasing the frequency of the second processor when it is determined that the second processor has stayed in the busy state for a period of time equal to or greater than the amount of the determined work and the performance guarantee value
And processor-executable instructions for iteratively performing operations of the computing device.
제 21 항에 있어서,
상기 제 1 프로세서는, 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
22. The method of claim 21,
Wherein the first processor is configured with processor-executable instructions to compute a performance guarantee value for the second processor includes computing a deadline value.
제 21 항에 있어서,
상기 제 1 프로세서는, 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버젯 값을 컴퓨팅하는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
22. The method of claim 21,
Wherein the first processor is configured with processor-executable instructions to include computing a performance value for the second processor to compute a budget value.
제 21 항에 있어서,
상기 제 1 프로세서는, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것이 상기 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
22. The method of claim 21,
Wherein the first processor is configured with processor-executable instructions to include determining requirements of tasks scheduled to run on the second processor to determine a steady state workload of the second processor.
제 21 항에 있어서,
상기 제 1 프로세서는,
상기 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
22. The method of claim 21,
Wherein the first processor comprises:
And generating pulse trains by sampling transitions between said busy and idle states. ≪ Desc / Clms Page number 19 >
제 21 항에 있어서,
상기 제 1 프로세서는, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들이 단일 스레드에 의해 수행되도록 하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
22. The method of claim 21,
Wherein the first processor is further configured to: determine a steady state workload of the second processor; determine an amount of work required to perform a steady state workload on the second processor; Wherein the operations of computing the guaranteed value are performed by a single thread.
제 28 항에 있어서,
상기 제 1 프로세서는, 상기 단일 스레드가 상기 제 1 프로세서 상에서 실행되도록 하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
29. The method of claim 28,
Wherein the first processor is configured with processor-executable instructions that cause the single thread to execute on the first processor.
제 28 항에 있어서,
상기 제 1 프로세서는, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들을 달성하는 것이 상기 제 2 프로세서 상에서 상기 단일 스레드를 실행하는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
29. The method of claim 28,
Wherein the first processor is further configured to: determine a steady state workload of the second processor; determine an amount of work required to perform a steady state workload on the second processor; Wherein computing the guaranteed value comprises executing the single thread on the second processor.
프로세서-실행가능한 소프트웨어 명령들을 저장한 비-일시적인 컴퓨터 판독가능한 저장 매체로서,
상기 프로세서-실행가능한 소프트웨어 명령들은 프로세서로 하여금,
제 2 프로세서의 정상 상태 작업부하를 결정하는 것;
상기 제 2 프로세서 상에서 결정된 상기 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것;
상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것;
상기 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것;
상기 제 2 프로세서의 실제의 작업부하에 기초하여 상기 제 2 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것;
스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것을 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
18. A non-transient computer readable storage medium having stored thereon processor-executable software instructions,
The processor-executable software instructions cause the processor to:
Determining a steady state workload of the second processor;
Determining an amount of work required to perform the steady state workload determined on the second processor;
Computing a performance guarantee value for the second processor;
Transitioning the second processor from an idle state to a busy state;
Performing dynamic clock and voltage scaling operations to scale the frequency of the second processor based on an actual workload of the second processor;
Updating the performance guarantee value based on the scaled frequency;
Determining whether the second processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value; And
And to increase the frequency of the second processor when it is determined that the second processor has stayed in the busy state for a period of time equal to or greater than the amount of the determined work and the performance guarantee value , Non-transitory computer readable storage medium.
제 31 항에 있어서,
상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것이,
상기 제 2 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
32. The method of claim 31,
Wherein the stored processor-executable software instructions cause the processor to: when it is determined that the second processor has stayed in the busy state for a period of time equal to or greater than the determined amount of the job and the performance guarantee value, Increasing the frequency,
And increasing the frequency of the second processor to a maximum processor frequency. ≪ RTI ID = 0.0 > A < / RTI >
제 31 항에 있어서,
상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것이,
상기 제 2 프로세서의 상기 주파수를 스텝들로 증가시키는 것, 및
동작들을 반복적으로 수행하는 것으로서,
스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것
의 상기 동작들을 반복적으로 수행하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
32. The method of claim 31,
Wherein the stored processor-executable software instructions cause the processor to: when it is determined that the second processor has stayed in the busy state for a period of time equal to or greater than the determined amount of the job and the performance guarantee value, Increasing the frequency,
Increasing the frequency of the second processor to steps, and
As repeatedly performing the operations,
Updating the performance guarantee value based on the scaled frequency;
Determining whether the second processor has stayed in the busy state for a period of time equal to or greater than the sum of the amount of the determined work and the performance guarantee value; And
Increasing the frequency of the second processor when it is determined that the second processor has stayed in the busy state for a period of time equal to or greater than the amount of the determined work and the performance guarantee value
And performing the operations of step < RTI ID = 0.0 > of: < / RTI >
제 31 항에 있어서,
상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
32. The method of claim 31,
The stored processor-executable software instructions are instructions for causing a processor to perform operations that include computing a deadline value by computing a performance guarantee value for the second processor, Storage medium.
제 31 항에 있어서,
상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버젯 값을 컴퓨팅하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
32. The method of claim 31,
Wherein the stored processor-executable software instructions are configured to cause the processor to perform operations to include computing a performance value for the second processor to compute a budget value. media.
제 31 항에 있어서,
상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것이 상기 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
32. The method of claim 31,
Wherein the stored processor-executable software instructions cause the processor to: determine the steady-state workload of the second processor to perform operations that include determining requirements of tasks scheduled to run on the second processor Lt; RTI ID = 0.0 > computer-readable < / RTI >
제 31 항에 있어서,
상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금,
상기 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
32. The method of claim 31,
The stored processor-executable software instructions cause the processor to:
And generating pulses by sampling transitions between the busy and idle states. ≪ Desc / Clms Page number 24 >
제 31 항에 있어서,
상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들이 단일 스레드에 의해 수행되도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
32. The method of claim 31,
Wherein the stored processor-executable software instructions cause the processor to: determine a steady state workload of the second processor; determine an amount of work required to perform a steady state workload on the second processor; And computing the performance guarantee value for the second processor to be performed by a single thread. ≪ Desc / Clms Page number 19 >
제 38 항에 있어서,
상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 상기 단일 스레드가 상기 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
39. The method of claim 38,
Wherein the stored processor-executable software instructions are configured to cause the processor to perform operations that cause the single thread to execute on the processor.
제 38 항에 있어서,
상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 상기 단일 스레드가 상기 제 2 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
39. The method of claim 38,
Wherein the stored processor-executable software instructions are configured to cause the processor to perform operations that cause the single thread to execute on the second processor.
KR1020157014652A 2012-11-05 2013-09-25 System and method for controlling central processing unit power with guaranteed transient deadlines KR101578336B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/669,043 2012-11-05
US13/669,043 US9104411B2 (en) 2009-12-16 2012-11-05 System and method for controlling central processing unit power with guaranteed transient deadlines

Publications (2)

Publication Number Publication Date
KR20150083883A true KR20150083883A (en) 2015-07-20
KR101578336B1 KR101578336B1 (en) 2015-12-16

Family

ID=49354911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157014652A KR101578336B1 (en) 2012-11-05 2013-09-25 System and method for controlling central processing unit power with guaranteed transient deadlines

Country Status (5)

Country Link
EP (1) EP2915020A1 (en)
JP (1) JP5930504B2 (en)
KR (1) KR101578336B1 (en)
CN (1) CN104756043B (en)
WO (1) WO2014070338A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160011623A1 (en) * 2014-07-09 2016-01-14 Intel Corporation Processor state control based on detection of producer/consumer workload serialization
JP2019200524A (en) * 2018-05-15 2019-11-21 ルネサスエレクトロニクス株式会社 Program, information processing device, and information processing method
CN110489228B (en) * 2019-07-16 2022-05-17 华为技术有限公司 Resource scheduling method and electronic equipment
CN111722931A (en) * 2020-06-24 2020-09-29 龙芯中科技术有限公司 Control method, device and equipment of processor and storage medium

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004044720A2 (en) * 2002-11-12 2004-05-27 Arm Limited Performance level setting of a data processing system
JP2005073231A (en) * 2003-07-08 2005-03-17 Toshiba Corp Control device for process device
KR20120086378A (en) * 2009-12-16 2012-08-02 퀄컴 인코포레이티드 System and method for controlling central processing unit power with guaranteed steady state deadlines
KR20120112566A (en) * 2009-12-16 2012-10-11 퀄컴 인코포레이티드 System and method for controlling central processing unit power with guaranteed transient deadlines

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10268963A (en) * 1997-03-28 1998-10-09 Mitsubishi Electric Corp Information processor
US7017060B2 (en) * 2001-03-19 2006-03-21 Intel Corporation Power management system that changes processor level if processor utilization crosses threshold over a period that is different for switching up or down
US9519300B2 (en) * 2007-12-20 2016-12-13 Ken Tsz Kin Mok Reducing cross-regulation interferences between voltage regulators
KR101617377B1 (en) * 2009-11-06 2016-05-02 삼성전자주식회사 Method of scaling voltage and frequency dynamically

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004044720A2 (en) * 2002-11-12 2004-05-27 Arm Limited Performance level setting of a data processing system
JP2005073231A (en) * 2003-07-08 2005-03-17 Toshiba Corp Control device for process device
KR20120086378A (en) * 2009-12-16 2012-08-02 퀄컴 인코포레이티드 System and method for controlling central processing unit power with guaranteed steady state deadlines
KR20120112566A (en) * 2009-12-16 2012-10-11 퀄컴 인코포레이티드 System and method for controlling central processing unit power with guaranteed transient deadlines

Also Published As

Publication number Publication date
CN104756043A (en) 2015-07-01
KR101578336B1 (en) 2015-12-16
JP5930504B2 (en) 2016-06-08
JP2016505913A (en) 2016-02-25
CN104756043B (en) 2016-06-08
WO2014070338A1 (en) 2014-05-08
EP2915020A1 (en) 2015-09-09

Similar Documents

Publication Publication Date Title
US9176572B2 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
US9104411B2 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
KR101659705B1 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
KR101409034B1 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
KR101409141B1 (en) System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature
JP5601731B2 (en) System and method for dynamically controlling a processor
KR101409055B1 (en) System and method for controlling central processing unit power based on inferred workload parallelism
US8695008B2 (en) Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
US9128705B2 (en) System and method for controlling central processing unit power with reduced frequency oscillations
KR101516859B1 (en) System and method for controlling central processing unit power with guaranteed steady state deadlines
KR101578336B1 (en) System and method for controlling central processing unit power with guaranteed transient deadlines

Legal Events

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

Payment date: 20180928

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 5