KR101578336B1 - 보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법 - Google Patents

보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR101578336B1
KR101578336B1 KR1020157014652A KR20157014652A KR101578336B1 KR 101578336 B1 KR101578336 B1 KR 101578336B1 KR 1020157014652 A KR1020157014652 A KR 1020157014652A KR 20157014652 A KR20157014652 A KR 20157014652A KR 101578336 B1 KR101578336 B1 KR 101578336B1
Authority
KR
South Korea
Prior art keywords
processor
frequency
determined
performance guarantee
amount
Prior art date
Application number
KR1020157014652A
Other languages
English (en)
Other versions
KR20150083883A (ko
Inventor
스티븐 에스 톰슨
보후슬라프 리칠릭
알리 이란리
수밋 수르
노먼 스코트 가르가쉬
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/669,043 external-priority patent/US9104411B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150083883A publication Critical patent/KR20150083883A/ko
Application granted granted Critical
Publication of KR101578336B1 publication Critical patent/KR101578336B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/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 는, 프로세싱 코어가 프로세서의 동작 주파수 또는 전압에 관계없이, 기껏해야 작업의 미리 정의된 최대 양에 의해 그 정상 상태 작업부하 후방에 속하기만 하는 것을 보장하기 위하여, 가변 지연에 기초하여 프로세서의 주파수 및/또는 전압을 조절할 수도 있다.

Description

보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR CONTROLLING CENTRAL PROCESSING UNIT POWER WITH GUARANTEED TRANSIENT DEADLINES}
관련 출원들
이 출원은 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) 이고, 이들 양자는 그 전체적으로 참조를 위해 편입된다.
교차-참조 출원들
본 출원은, 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 호에 관련되고, 참조를 위해 이들을 편입한다.
휴대용 컴퓨팅 디바이스 (portable computing device; PCD) 들은 유비쿼터스 (ubiquitous) 이다. 이 디바이스들은 셀룰러 전화들, 휴대용 정보 단말 (portable digital assistant; PDA) 들, 휴대용 게임 콘솔 (portable game console) 들, 팜톱 컴퓨터 (palmtop computer) 들, 및 다른 휴대용 전자 디바이스들을 포함할 수도 있다. 이 디바이스들의 주요 기능에 추가하여, 다수의 것들은 주변 기능들을 포함한다. 예를 들어, 셀룰러 전화는 셀룰러 전화 호출들을 행하는 주요 기능과, 스틸 카메라 (still camera), 비디오 카메라, 글로벌 위치결정 시스템 (global positioning system; GPS) 내비게이션, 웹 브라우징, 이메일들의 전송 및 수신, 텍스트 메시지들의 전송 및 수신, 푸시-투-토크 (push-to-talk) 능력들 등의 주변 기능들을 포함할 수도 있다. 이러한 디바이스의 기능성이 증가할수록, 이러한 기능성을 지원하기 위해 요구된 컴퓨팅 또는 프로세싱 파워는 또한 증가한다. 또한, 컴퓨팅 파워가 증가할수록, 컴퓨팅 파워를 제공하는 프로세서 또는 프로세서들을 효과적으로 관리하기 위한 더 큰 필요성이 존재한다.
따라서, 필요한 것은 멀티코어 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 은 일 양태에서 이용하기에 적당한 랩톱 컴퓨터 디바이스의 컴포넌트 블록도이다.
다양한 실시형태들은 첨부한 도면들을 참조하여 상세하게 설명될 것이다. 가능한 경우, 동일한 참조 번호들은 동일하거나 유사한 부분들을 지칭하기 위하여 도면들의 전반에 걸쳐 이용될 것이다. 특별한 예들 및 구현예들에 대해 행해진 참조들은 예시적인 목적들을 위한 것이고, 발명 또는 청구항들의 범위를 제한하도록 의도된 것은 아니다.
단어 "예시적" 은 "예, 사례, 또는 예시로서 작용함" 을 의미하기 위하여 본원에서 이용된다. "예시적" 으로서 본원에서 설명된 임의의 양태는 다른 양태들에 비해 바람직하거나 유익한 것으로 반드시 해석되어야 하는 것은 아니다.
이 설명에서, 용어 "애플리케이션" 은 또한, 오브젝트 코드 (object code), 스크립트 (script) 들, 바이트 코드 (byte code), 마크업 언어 (markup language) 파일들, 및 패치 (patch) 들과 같은 실행가능한 컨텐츠를 가지는 파일들을 포함할 수도 있다. 추가적으로, 본원에서 지칭된 "애플리케이션" 은 또한, 열릴 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 사실상 실행가능하지 않은 파일들을 포함할 수도 있다.
용어 "컨텐츠" 는 또한, 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능한 컨텐츠를 가지는 파일들을 포함할 수도 있다. 추가적으로, 본원에서 지칭된 "컨텐츠" 는 또한, 열릴 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 자연적으로 실행가능하지 않은 파일들을 포함할 수도 있다.
이 설명에서 이용된 바와 같이, 용어들 "컴포넌트", "데이터베이스", "모듈", "시스템" 등은 컴퓨터-관련 엔티티, 어느 하나의 하드웨어, 펌웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 지칭하도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 엑시큐터블 (executable), 실행의 스레드 (thread of execution), 프로그램, 및/또는 컴퓨터일 수도 있지만, 이들인 것으로 제한되지 않는다. 예시로서, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 컴퓨팅 디바이스 양자는 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행의 스레드 내에서 상주할 수도 있고, 컴포넌트는 하나의 컴퓨터 상에서 로컬라이즈 (localize) 될 수도 있고 및/또는 2 개 이상의 컴퓨터들 사이에서 분산될 수도 있다. 추가적으로, 이 컴포넌트들은 그 위에 저장된 다양한 데이터 구조들을 가지는 다양한 컴퓨터 판독가능한 매체들로부터 실행될 수도 있다. 컴포넌트들은 예컨대, 하나 이상의 데이터 패킷들 (예를 들어, 로컬 시스템, 분산 시스템에서, 및/또는 신호를 통해 다른 시스템들과 인터넷과 같은 네트워크를 가로질러, 또 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터의 데이터) 을 가지는 신호에 따라 로컬 및/또는 원격 프로세스들을 통해 통신할 수도 있다.
도 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) 일 수도 있다.
특별한 양태에서, 도 2 에서 도시된 바와 같이, 상부 하우징 부분 (104) 은 하부 하우징 부분 (106) 에 대해 이동가능하다. 구체적으로, 상부 하우징 부분 (104) 은 하부 하우징 부분 (106) 에 대해 슬라이딩 가능할 수도 있다. 도 2 에서 도시된 바와 같이, 하부 하우징 부분 (106) 은 멀티-버튼 키보드 (120) 를 포함할 수도 있다. 특별한 양태에서, 멀티-버튼 키보드 (120) 는 표준 QWERTY 키보드일 수도 있다. 멀티-버튼 키보드 (120) 는 상부 하우징 부분 (104) 이 하부 하우징 부분 (106) 에 대해 이동될 때에 드러나게 될 수도 있다. 도 2 는 PCD (100) 가 하부 하우징 부분 (106) 상에서 재설정 버튼 (122) 을 포함할 수도 있다는 것을 추가로 예시한다.
도 3 을 참조하면, 휴대용 컴퓨팅 디바이스 (PCD) 의 예시적인 비-제한적인 양태들이 도시되어 있고 일반적으로 320 으로 표기되어 있다. 도시된 바와 같이, PCD (320) 는 멀티코어 CPU (324) 를 포함하는 온-칩 (on-chip) 시스템 (322) 을 포함한다. 멀티코어 CPU (324) 는 제로 번째 코어 (zeroth core; 325), 제 1 코어 (326), 및 N 번째 코어 (327) 를 포함할 수도 있다.
도 3 에서 예시된 바와 같이, 디스플레이 제어기 (328) 및 터치 스크린 제어기 (330) 는 멀티코어 CPU (324) 에 결합된다. 결국, 온-칩 시스템 (322) 의 외부에 있는 디스플레이/터치 스크린 (332) 은 디스플레이 제어기 (328) 및 터치 스크린 제어기 (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 에서 추가로 예시된 바와 같이, 스테레오 오디오 코덱 (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) 에 결합될 수도 있다.
도 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 은 PCD (320) 가 또한, 데이터 네트워크, 예를 들어, 로컬 영역 네트워크, 개인 영역 네트워크, 또는 임의의 다른 네트워크를 액세스하기 위하여 이용될 수도 있는 네트워크 카드 (388) 를 포함할 수도 있는 것을 추가로 표시한다. 네트워크 카드 (388) 는 블루투스 (Bluetooth) 네트워크 카드, WiFi 네트워크 카드, 개인 영역 네트워크 (PAN) 카드, 개인 영역 네트워크 초저전력 기술 (personal area network ultra-low-power technology; PeANUT) 네트워크 카드, 또는 당해 분야에서 잘 알려진 임의의 다른 네트워크 카드일 수도 있다. 또한, 네트워크 카드 (388) 는 칩 내로 편입될 수도 있고, 즉, 네트워크 카드 (388) 는 칩에서의 완전한 솔루션일 수도 있고, 별도의 네트워크 카드 (388) 가 아닐 수도 있다.
도 3 에서 도시된 바와 같이, 디스플레이/터치 스크린 (332), 비디오 포트 (338), USB 포트 (342), 카메라 (348), 제 1 스테레오 스피커 (354), 제 2 스테레오 스피커 (356), 마이크로폰 (360), FM 안테나 (364), 스테레오 헤드폰들 (366), RF 스위치 (370), RF 안테나 (372), 키패드 (374), 모노 헤드셋 (376), 진동기 (378), 및 전력 공급 장치 (380) 는 온-칩 시스템 (322) 의 외부에 있다.
특별한 양태에서, 본원에서 설명된 방법 단계들 중의 하나 이상은 컴퓨터 프로그램 명령들로서 메모리 (344) 에서 저장될 수도 있다. 이 명령들은 본원에서 설명된 방법들을 수행하기 위하여 멀티코어 CPU (324) 에 의해 실행될 수도 있다. 또한, 멀티코어 CPU (324), 메모리 (344), 또는 그 조합은 멀티코어 CPU (324) 내의 각각의 CPU 또는 코어의 전력을 동적으로 제어하기 위하여 본원에서 설명된 방법 단계들 중의 하나 이상을 실행하기 위한 수단의 역할을 할 수도 있다.
도 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) 상에서 독립적으로 실행될 수도 있다.
게다가, 예시된 바와 같이, 메모리 (404) 는 그 상에 저장된 오퍼레이팅 시스템 (operating system; 420) 을 포함할 수도 있다. 오퍼레이팅 시스템 (420) 은 스케줄러 (scheduler; 422) 를 포함할 수도 있고, 스케줄러 (422) 는 제 1 실행 큐 (run queue) (424), 제 2 실행 큐 (426), 및 N 번째 실행 큐 (428) 를 포함할 수도 있다. 메모리 (404) 는 또한, 그 상에 저장된 제 1 애플리케이션 (430), 제 2 애플리케이션 (432), 및 N 번째 애플리케이션 (434) 을 포함할 수도 있다.
특별한 양태에서, 애플리케이션들 (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) 할 수도 있다.
도 4 는 또한, 메모리 (404) 가 그 상에 저장된 병렬 감시기 (parallelism monitor; 440) 를 포함할 수도 있는 것을 도시한다. 병렬 감시기 (440) 는 오퍼레이팅 시스템 (420) 및 멀티코어 CPU (402) 에 접속될 수도 있다. 구체적으로, 병렬 감시기 (440) 는 오퍼레이팅 시스템 (420) 내의 스케줄러 (422) 에 접속될 수도 있다.
도 5 를 참조하면, 중앙 프로세싱 유닛의 전력을 동적으로 제어하는 방법의 제 1 양태가 도시되어 있고 일반적으로 500 으로 표기되어 있다. 방법 (500) 은 다바이스가 파워 온 될 때에 다음의 단계들이 수행될 수도 있는 실행 루프 (do loop) 로 블록 (502) 에서 시작될 수도 있다.
블록 (504) 에서는, 전력 제어기, 예를 들어, 동적 클록 및 전압 스케일링 (DCVS) 알고리즘이 하나 이상의 CPU 들을 감시할 수도 있다. 판정 (506) 에서, 전력 제어기는 CPU 에 대한 과도 성능 데드라인이 만료되었는지 여부를 결정할 수도 있다. 그렇지 않을 경우, 방법 (500) 은 종료될 수도 있다. 이와 다르게, 과도 성능 데드라인이 만료되었을 경우, 방법 (500) 은 블록 (508) 으로 진행할 수도 있고, 전력 제어기는 CPU 를 더 높은 성능 레벨, 즉, 다음의 더 높은 동작 주파수로 이동시킬 수도 있다. 하나의 양태에서, 제어기는 CPU 를 최대 성능 레벨, 즉, 최대 CPU 주파수로 이동시킬 수도 있다. 그러나, 또 다른 양태에서, CPU 는 최대 성능 레벨로 점프하지 않을 수도 있다. CPU 는 중간 레벨로 점프할 수도 있고, 다음으로, 최대 레벨 또는 또 다른 더 높은 성능 레벨로 다시 점프할 수도 있다. 중간 점프들의 수, 및 점프들 사이의 시간의 양은 점프의 주파수 값을 결정하기 위하여 이용될 수도 있다.
블록 (510) 에서, CPU 는 아이들 조건에 진입할 수도 있다. 또한, 블록 (512) 에서는, 과도 성능 데드라인이 재설정될 수도 있다. 블록 (514) 에서는, CPU 가 아이들 조건을 종료할 수도 있다. 판정 (516) 으로 이동하면, 전력 제어기는 당면한 CPU 주파수가 최대 CPU 주파수에 있는지 여부를 결정할 수도 있다. 그러한 경우, 방법 (500) 은 종료될 수도 있다. 이와 다르게, CPU 주파수가 최대 CPU 주파수에 있지 않을 경우, 방법은 블록 (518) 으로 진행할 수도 있고, 타이머는 재스케줄링 (rescheduling) 될 수도 있다. 다음으로, 방법 (500) 은 종료될 수도 있다.
도 6 을 참조하면, 중앙 프로세싱 유닛의 전력을 동적으로 제어하는 방법의 제 2 양태가 도시되어 있고 일반적으로 600 으로 표기되어 있다. 블록 (602) 에서 시작하면, 중앙 프로세싱 유닛 (CPU) 은 아이들 상태에 진입할 수도 있다. 블록 (604) 에서는, 전력 제어기, 예를 들어, 동적 클록 및 전압 스케일링 (DCVS) 알고리즘이 아이들 시작 시간 (StartIdleTime) 을 현재 시간 (CurrentTime) 과 동일하게 설정할 수도 있다. 또한, 블록 (606) 에서, 전력 제어기는 아이들 종료 시간 (EndIdleTime) 으로부터 아이들 시작 시간 (StartIdleTime) 을 감산함으로써 비지 시간 (BusyTime) 을 결정할 수도 있다.
블록 (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) 으로 계속될 수도 있다.
블록 (702) 에서, 전력 제어기는 다음의 공식을 이용하여 유효 과도 버젯 (EffectiveTransientBudget) 을 결정할 수도 있다:
EffectiveTransientBudget=(TransientResponseDeadline*NextCPUFreq)/(NextCPUF-req-CPUFreq)
여기서,
TransientResponseDeadline = 과도 응답 데드라인, 즉, 슬랙 버젯 (slack budget),
NextCPUFreq = 당면한 CPU 주파수보다 하나의 주파수 스텝 (frequency step) 더 높은 다음 CPU 주파수, 및
CPUFreq = 당면한 CPU 주파수 (CPUFreq).
특별한 양태에서, 클록 스케줄링 오버헤드 (ClockSchedulingOverhead) 및 클록 스위치 오버헤드 (ClockSwitchOverhead) 는 또한 EffectiveTransientBudget 에 가산될 수도 있다. 또한, 전압 변화 오버헤드 (VoltageChangeOverhead) 는 EffectiveTransientBudget 에 가산될 수도 있다. 블록 (704) 으로 이동하면, 전력 제어기는 더 높은 주파수로 점프하기 위한 데드라인 (SetJumpToFrequency) 을 아이들 종료 시간 (EndIdleTime) 플러스 (plus) 유효 과도 버젯 (EffectiveTransientBudget) 과 동일하게 설정할 수도 있다. 또 다른 양태에서, 점프하기 위한 데드라인은 현재 시간 플러스 과도 버젯일 수도 있다. 그 후, 방법 (600) 은 종료될 수도 있다.
특별한 양태에서, 도 6 및 도 7 과 함께 설명된 방법 (600) 은, 과도 데드라인이 고갈되기 전에, CPU 가 DCVS 에 의해 결정된 주파수에서 머무를 수도 있는 시간의 양을 결정하기 위하여, 그리고, 미래에 그 시간의 양에 의해 더 높은 CPU 주파수로의 점프를 스케줄링하기 위하여 이용될 수도 있다. 더 높은 주파수로의 점프 이전에 아이들에 재진입될 경우, 스케줄링된 점프는 취소될 수도 있다. 방법 (600) 은 EffectiveTransientBudget 로서 결정된 시간의 양만큼 더 높은 주파수로의 점프를 지연시킬 수도 있다.
본원에서 설명된 방법 단계들은 설명된 바와 같은 순서로 반드시 수행될 필요가 없는 것을 이해해야 한다. 또한, "그 후", "다음으로", "다음" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도된 것이 아니다. 이 단어들은 방법 단계들의 설명을 통해 독자를 안내하기 위하여 간단히 이용된다. 게다가, 본원에서 설명된 방법들은 휴대용 컴퓨팅 디바이스 (PCD) 상에서 실행가능한 것으로서 설명된다. PCD 는 이동 전화 디바이스, 휴대용 정보 단말 디바이스, 스마트북 컴퓨팅 디바이스, 넷북 컴퓨팅 디바이스, 랩톱 컴퓨팅 디바이스, 데스크톱 컴퓨팅 디바이스, 또는 그 조합일 수도 있다.
특별한 양태에서, DCVS 알고리즘은, CPU 부하/아이들 시간을 측정하며, 만족스러운 시스템 성능을 여전히 제공하면서 전력 소비를 저하시키기 위한 노력으로 작업부하를 추적하기 위하여 CPU 클록 주파수를 동적으로 조절하는 메커니즘이다. 작업부하가 변화함에 따라, CPU 스루풋 (throughput) 에서의 변화는 작업부하에서의 변화들을 추적할 수도 있을 뿐만 아니라, 반드시 이를 래그 (lag) 시킬 수도 있다. 불운하게도, 이것은 DCVS 알고리즘이 작업부하를 충분히 신속하게 추적할 수 없을 수도 있기 때문에, 작업부하가 서비스 품질 (Qaulity of Service; QoS) 요건들을 가지는 경우들에는 문제를 도입할 수도 있다. 또한, 태스크들은 실패할 수도 있다.
다수의 DCVS 기법들은 CPU 의 정상 상태 성능 요건들을 측정하는 것과, CPU 주파수 및 전압을, 정상 상태 CPU 용법을 충족시킬 수도 있는 최저 레벨로 설정하는 것을 포함한다. 이것은 전형적으로, 시간의 기간 (period) 에 걸쳐 CPU 이용률 (백분율 비지) 을 측정하고 CPU 성능 레벨을, 평균 CPU 이용률이 하이 (high) 와 로우 (low) 임계치 사이에 속하는 것으로 설정함으로써 행해진다. 평균화 기간은 합리적인 응답성을 유지하면서, 변화하는 클록 주파수들의 주파수를 최소화하기 위하여 최적화된다. 과도 작업부하들 및/또는 새로운 작업부하들의 시작에 응답하기 위하여, 패닉 입력들이 CPU 주파수를 신속하게 올리기 위해 사용되었을 수도 있다.
작업부하를 래그시키고 태스크들이 실패하게 하는 DCVS 의 문제를 회피하기 위하여, 본원에서 개시된 시스템 및 방법들은 과도 성능 보장 (transient performance guarantee) 을 제공한다. 과도 성능 보장은, 더 높은 성능 레벨에서 실행하는 것에 비해, 연속적인 비지 펄스가 지연될 수도 있는 최대 시간의 양으로서 정의될 수도 있다. 이것은, 과도 성능 데드라인이 만료하기 전에 더 높은 성능 레벨에 도달함으로써, 그리고 CPU 가 아이들일 경우, 정의에 의해, 그것은 과다신청된 상태 (oversubscribed state) 에 있지 않으므로, 아이들로 갈 때마다 데드라인을 재설정함으로써 달성될 수도 있다. 본원에서 개시된 바와 같이, 시스템이 아이들로부터 나오고 시스템 CPU 가 최대 주파수에서 실행되고 있지 않을 때마다, 타이머는 QoS 보장을 보존하기 위하여 재스케줄링될 수도 있다.
과도 성능 보장의 전력 영향을 최소화하기 위하여, 본 시스템 및 방법들은 인입 펄스 (incoming pulse) 가 데드라인을 충족시키기 위해 주파수 증가를 요구할 수도 있을 가능성을 최소화시킨다. 이것은, 유효 과도 버젯이 고갈되었을 때까지 주파수, 즉, 성능 레벨 변화를 지연시키고, 그 다음으로, 더 높은 성능 레벨로 곧장 점프하고, 펄스가 도 8 에서 도시된 바와 같이 완료될 때까지 거기에서 체류함으로써 달성될 수도 있다.
특별한 양태에서, 유효 과도 버젯은 현재의 성능 레벨로 스케일링된 과도 응답 데드라인으로서 계산된다. 예를 들어, CPU 가 최대 클록 레이트의 75 % 로 실행되고 있고 과도 응답 데드라인이 16 ms 일 경우, 유효 과도 버젯은 64 ms, 즉, 16 ms/(1-0.75) 이다. 유효 과도 버젯은 CPU 가 버젯을 고갈시키기 전에 현재의 성능 레벨에서 얼마나 오래 실행될 수도 있는지를 나타낸다. CPU 가 아이들일 경우, 유효 과도 버젯은 과도 응답 데드라인과 동일할 수도 있다. 최대 성능 레벨에 있을 경우, 유효 과도 버젯은 도 9 에서 도시된 바와 같이 무한 (infinite) 이다.
본원에서 설명된 방법들을 이용하면, 시스템은 태스크가 최대 레벨 이외의 일부 레벨에서 실행되었을 수도 있는 최대 시간의 양에 관한 엄격한 경계를 제공할 수도 있고, 그러므로, 동적 CPU 클록 스케일링을 여전히 허용하면서, QoS 보장을 요구하는 태스크들에 대한 완료에 관한 계산가능한 경계를 묵시적으로 제공할 수도 있다. 경계는 태스크들이 현재 실행하고 있는 것, 글로벌 시스템 속성, DCVS 알고리즘 설계 또는 다른 속성들에 기초하여 설정될 수도 있고, 시스템이 QoS 요건들을 가지는 임의의 태스크들을 실행하고 있지 않을 경우, 또는 CPU 가 최대 클록에서 실행되고 있을 경우에는 완전히 디스에이블 (disable) 될 수도 있다.
특별한 양태에서, 본 방법들은, 데드라인이 만료되었을 때에 최대 주파수로 점프하는 대신에, 더 짧은 내부 유효 데드라인들을 설정하고, 최대 QoS 지연이 고갈되었기 전에 CPU 가 최대 주파수에 있는 것을 여전히 보장하면서, 하나 이상의 중간 주파수들로 점프함으로써 확장될 수도 있다. 또한, 본 방법들은, 전체적인 CPU 전력을 동시에 저하시키면서, 양호하게 정의된 과도 QoS가 유지되는 것을 실질적으로 보장할 수도 있다.
본원에서 설명된 시스템 및 방법들은 우발적 샘플링 (opportunistic sampling) 을 사용할 수도 있다. 다시 말해서, 시스템 및 방법들은 주기적으로 타이머 만료에 대해 검사할 수도 있다. 다른 양태들에서, 시스템 및 방법들은 우발적 샘플링을 사용하지 않을 수도 있다.
위에서 논의된 바와 같이, 다양한 양태들은 태스크들에 대한 완료를 위하여 엄격하고 계산가능한 경계 (예를 들어, 성능 보장) 를 제공한다. 다양한 양태들에서, 이러한 성능 보장들은, 프로세서 성능을 개선시키고, 및/또는, 셀룰러 전화들, 스마트폰들, 개인용 또는 이동 멀티-미디어 플레이어들, 개인 정보 단말 (PDA) 들, 랩톱 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 인에이블형 셀룰러 전화들, 무선 게임용 제어기들, 및 메모리, 프로그래밍가능한 프로세서 또는 코어 (이하, 집합적으로 "프로세싱 코어") 를 포함하며 전력 보존 방법들이 유익하도록 배터리 전력 하에서 동작하는 유사한 개인용 전자 디바이스들을 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 들 상에서의 전력 소비를 저하시키기 위한 동적 클록 및 전압/주파수 스케일링 (DCVS) 솔루션의 일부로서 구현될 수도 있다. 또한, 다양한 양태들은 배터리 전력에 따라 실행되는 휴대용 및 이동 컴퓨팅 디바이스들에 대해 특별히 유용하지만, 양태들은 일반적으로 프로세서를 포함하며 저하된 전력 소비가 유익한 임의의 컴퓨팅 디바이스 (예를 들어, 범용 컴퓨터들, 데스크톱 컴퓨터들, 서버들 등) 에서 유용하다.
일반적으로, 칩에 의해 소모되는 동적 전력 (스위칭 전력) 은 C*V2*f 이고, 여기서, C 는 클록 사이클 당 스위칭되는 커패시턴스이고, V 는 전압이고, f 는 스위칭 주파수이다. 따라서, 주파수가 변화함에 따라, 동적 전력은 그것과 함께 선형적으로 변화할 것이다. 동적 전력은 프로세서 칩에 의해 소비되는 총 전력의 대략 2/3 를 차지할 수도 있다. 칩이 실행되는 주파수는 그 동작 전압에 관련될 수도 있으므로, 전압 스케일링은 주파수 스케일링과 함께 달성될 수도 있다. 전압 레귤레이터들과 같은 일부의 전기적 컴포넌트들의 효율은, 전력 소비가 온도와 함께 증가하도록, 온도가 증가함에 따라 감소할 수도 있다. 증가하는 전력 이용은 온도를 증가시킬 수도 있으므로, 전압 또는 주파수에서의 증가들은 시스템 전력 수요들을 훨씬 더 증가시킬 수도 있다. 따라서, 컴퓨팅 디바이스의 배터리 수명은 프로세서들이 아이들이거나 저부하 (lightly loaded) 일 때에 그 프로세서들에 인가된 주파수 및/또는 전압을 저하시킴으로써 개선될 수도 있다. 주파수 및/또는 전압에서의 이러한 저하들은 동적 클록 및 전압/주파수 스케일링 (DCVS) 솔루션을 통해 실시간으로 또는 "온 더 플라이로 (on the fly)" 달성될 수도 있다.
일반적으로, DCVS 솔루션은 (프로세서가 비지인 시간과 비교하여) 프로세서가 아이들인 시간의 비율을 감시하고, 프로세서들의 주파수/전압이 프로세서들이 아이들 및/또는 비지인 시간의 비율에 기초하여 얼마나 많이 조절되어야 하는지를 결정한다. 프로세서가 아이들인 시간의 비율을 감시하는 것은 프로세서가 아이들 프로세스 또는 스레드 (예를 들어, 시스템 아이들 프로세스 등) 를 실행하는 지속시간을 표시하는 값 (예를 들어, 시간의 양, CPU 사이클들의 수 등) 을 컴퓨팅 및/또는 측정하는 것을 포함할 수도 있다.
오퍼레이팅 시스템은 그 프로세서에 대해 스케줄링될 준비가 된 다른 스레드들이 전혀 없는 것으로 결정할 때, 프로세서 상에서 아이들 소프트웨어 애플리케이션, 프로세스 또는 스레드 (본원에서는 집합적으로 "스레드") 를 실행할 수도 있다. 아이들 스레드는 다양한 태스크들 (예를 들어, 인터럽트 대기 태스크, 슬립 (sleep) 태스크 등) 을 수행할 수도 있고, 각각의 태스크는 다수의 프로세서 동작들을 포함할 수도 있다. 프로세서가 아이들 스레드를 실행할 때, 그 프로세서는 "아이들 상태" 에서 및/또는 "아이들 조건" 에서 "아이들" 이라고 말할 수도 있다.
멀티프로세서 시스템들에서, 오퍼레이팅 시스템 (또는 스케줄러, 제어기 등) 은 각각의 프로세서에 대한 하나 이상의 아이들 스레드들을 유지할 수도 있다. 아이들 스레드들은 각각의 프로세서가 실행하도록 준비된 스레드를 항상 가지도록, 실행을 위해 준비된 상태로 머무른다. 이러한 방식으로, 스레드가 (예를 들어, 스레드가 그 스케줄링된 태스크들 또는 작업부하들을 완료하는 것으로 인해) 프로세서를 포기할 때마다, 심지어 모든 다른 스레드들이 완료되거나, 자원들을 대기하는 중이거나, 또는 이와 다르게 실행하도록 현재 준비되지 않을 때에도, 오퍼레이팅 시스템은 (예를 들어, 아이들 스레드의 이용가능성을 통해) 그 프로세서 상에서의 실행을 위해 준비된 스레드를 가진다.
위에서 논의된 바와 같이, DCVS 솔루션은, 정상 상태 작업부하를 포함할 수도 있는 프로세서의 작업부하들에 기초하여 프로세서의 주파수 및/또는 전압을 조절할 수도 있다. 정상 상태 작업부하는 실행 시간에 앞서서, 즉, 작업부하의 증진을 위해 동작들을 수행하기 위하여 프로세서 코어가 비지 또는 활성 상태에 진입하는 것에 앞서서 결정될 수도 있다. 정상 상태 작업부하는 그 프로세싱 코어 상에서 스케줄링된 태스크들을 완료하기 위하여 요구된 CPU 클록 사이클들의 수, 동작들의 수, 명령들의 수, 및/또는 시간의 양을 컴퓨팅, 추정, 또는 예측함으로써 미리 결정될 수도 있다. 각각의 프로세서는 하나를 초과하는 작업부하 (예를 들어, 정상 상태 작업부하 및 과도 작업부하) 를 가질 수도 있고, 각각의 프로세서는 그 작업부하들 전부에서의 모든 태스크들이 완료될 때까지 비지, 실행, 또는 활성 상태 (본원에서는 집합적으로 "비지 상태") 에서 머물러 있도록 요구될 수도 있다.
어떤 시나리오들에서, DCVS 솔루션은 프로세서의 성능에 영향을 주지 않으면서 전력 절감들을 달성하기 위하여 프로세서의 주파수 및/또는 전압 (즉, 프로세서의 속력) 을 저하시킬 수도 있다. 예를 들어, 프로세서의 작업부하가 그 실행 시간이 메모리 액세스 시간들에 의해 지배되는 태스크를 포함할 때, 주파수에서의 저하는 프로세서의 성능 또는 그 태스크의 실행 시간에 상당한 영향을 가지지 않을 수도 있다. 그러나, 대개, DCVS 솔루션은 프로세서의 성능 (예를 들어, 태스크들의 주어진 세트를 완료하기 위하여 요구된 시간 등) 및 전력 소비 (예를 들어, 태스크들의 주어진 세트를 달성함에 있어서 소비된 배터리 전력의 양) 특성들 사이의 절충들의 균형을 맞추어야 한다. 전형적으로, 태스크들이 더 빨리 달성될수록, 그러한 태스크들을 달성함에 있어서 프로세서에 의해 더 많은 전력이 소비된다.
DCVS 솔루션은 프로세서의 정상 상태 작업부하 및 정상 상태 성능 요건들에 기초하여 성능 및 전력 소비의 균형을 맞추도록 구성될 수도 있다. 정상 상태 성능 요건들은, 프로세서가 비지 및/또는 아이들인 지속시간을 표시하는 값 (예를 들어, 시간의 양, CPU 사이클들의 수 등) 을 컴퓨팅하거나 측정하고, 컴퓨팅된/측정된 값들의 결과들을 평균화하고, 그 프로세서의 정상 상태 작업부하들을 완료하기 위해 요구되는 시간/프로세싱의 양을 결정함으로써 결정될 수도 있다. 이 연산들에 기초하여, DCVS 솔루션은, 프로세서가 (예를 들어, 이동 디바이스 사용자가 차이 등을 인식하지 않도록) 저하된 전력 소비 및 수용가능한 응답성의 레벨들을 달성하면서 컴퓨팅된 정상 상태 요건들을 충족하도록 동작할 수도 있는 상한 주파수 임계치 및 하한 주파수 임계치를 컴퓨팅할 수도 있다.
종종, 프로세서들은, DCVS 솔루션이 선험적으로 통지되지 않았으며 정상 상태 또는 주파수 임계치 연산들에서 고려되지 않았던 "작업의 버스트들 (bursts of work)" 을 포함하는 과도 작업부하들을 프로세싱/실행하도록 요구된다. 과도 작업부하는, 동적이거나, 일시적이거나, 또는 프로세서의 작업부하에서 예상되지 않은 스파이크 (spike) 를 야기시키는 작업의 임의의 유닛을 포함하는, 시스템에 미리 알려지지 않은 임의의 태스크 또는 작업의 유닛일 수도 있다. 예로서, 과도 작업부하는 사용자 입력들, 시스템 이벤트들, 검출된 환경 조건들, 원격 절차 호출들 등에 응답하여 프로세서에 의해 수행된 태스크들 중의 임의의 것 또는 전부를 포함할 수도 있다. 추가의 예로서, 과도 작업부하는 사용자가 사용자 액션을 개시하기 위하여 휴대용 컴퓨팅 디바이스 (PCD) 의 터치-스크린을 터치할 때에 생성될 수도 있고, PCD 는 (예를 들어, 인터페이스 업데이트로, 새로운 이미지를 디스플레이하는 것, 새로운 액션을 착수하는 것 등을 행함으로써) 그것에 즉시 응답해야 한다.
위에서 언급된 바와 같이, 과도 작업부하들은 DCVS 솔루션이 (예를 들어, 상한 및 하한 임계치들을 결정하는 것의 일부로서) 적당하게 미리 고려할 수 있는 연속적인 정상 상태 작업부하들이 아니다. 그 결과, 과도 작업부하는 프로세서로 하여금 예상된 것보다 더 오래 비지 상태에서 머물러 있게 할 수도 있고, 및/또는 이와 다르게, 프로세서 실행 시간들에서의 불확실성들을 낳을 수도 있다. 이러한 불확실성들은 컴퓨팅 디바이스로 하여금 프로세싱 및 시스템 자원들을 비효율적으로 또는 부적당하게 할당하게 할 수도 있고, 특히, 컴퓨팅 디바이스가 다중 프로세싱 코어들을 포함할 때, 컴퓨팅 디바이스의 전체적인 성능 및/또는 응답성에 상당한 영향을 가질 수도 있다.
최신 컴퓨팅 디바이스들은 종종, 시스템-온-칩 (system-on-chip; SoC) 들 및/또는 다중 프로세싱 코어들 (예를 들어, 프로세서들, 코어들 등) 을 포함하는 멀티프로세서 시스템들이다. 멀티프로세서 시스템들에서는, 단일 스레드가 제 1 프로세싱 코어에 의해, 다음으로, 제 2 프로세싱 코어에 의해, 그리고 다음으로 다시 제 1 프로세싱 코어에 의해 프로세싱되는 것이 통상적이다. 또한, 제 1 프로세싱 코어에서의 하나의 스레드의 결과들이 제 2 프로세싱 코어에서 실행되는 또 다른 스레드에서의 동작들을 트리거링하는 것이 통상적이다. 예를 들어, 하나 이상의 프로세싱 코어들은 현재 활성인 프로세서에 의해 생성된 결과들에 종속적일 수도 있고, 현재 활성인 프로세서가 그 작업부하들을 완료하고 및/또는 하나 이상의 태스크들을 프로세싱하는 것을 종료할 때까지, 아이들 또는 대기 상태에서 머물러 있도록 요구될 수도 있다. 이 상황들에서, 각각의 프로세싱 코어는 대안적으로, 현재 활성인 프로세서로부터의 프로세싱의 결과들을 대기하는 동안에 아이들/대기 상태에 진입할 수도 있다. 이 프로세싱 코어들은 현재 활성인 프로세서에 의해 생성된 결과들을 대기하지만, 그 각각의 DCVS 솔루션들은 (즉, 주파수/전압에서의 감소를 통해) 그 동작 속력들을 저하시킬 수도 있고, 이것은 컴퓨팅 디바이스로 하여금 비-응답적이거나 느리게 보이게 할 수도 있다. 즉, 멀티프로세서 컴퓨팅 디바이스들 상에서 구현된 DCVS 솔루션은, 프로세싱 코어들의 일부가 현재 활성인 스레드들을 실행하기 위해 최적인 것보다 더 낮은 주파수 또는 전압에서 동작되어야 하고, 컴퓨팅 디바이스로 하여금 비-응답적이거나 느리게 보이게 한다고 잘못 결론내릴 수도 있다.
다양한 양태들은, 그 사전-컴퓨팅된 정상 상태 작업부하를 완료하기 위하여 그 프로세싱 코어에 대해 요구되는 것보다 많은 미리 결정된 시간의 양을 넘어 (예를 들어, 과도 작업부하들로 인해) 프로세싱 코어가 비지 상태에서 머물러 있지 않도록 보장하는 성능 보장들을 컴퓨팅하고 강제함으로써 위에서 언급된 제한들을 해소한다. 이러한 성능 보장들은, 자원들을 할당하고 실행을 위한 스레드들을 스케줄링하는 것과 같은 미래의 동작들을 더 양호하게 추정하고, 스케줄링하고, 및/또는 계획하기 위하여 오퍼레이팅 시스템, 자원들, DCVS 솔루션들, 및/또는 다른 프로세싱 코어들에 의해 이용될 수도 있다. 이러한 방식으로, 성능 보장들은 컴퓨팅 디바이스가 그 응답성 요건들을 충족시키는 것을 가능하게 하고, 이에 따라, 사용자 경험을 개선시킨다.
성능 보장들은 DCVS 솔루션이 가변 지연에 기초하여 프로세서의 주파수 및/또는 전압을 조절할 수 있게 하고, 이것은 프로세싱 코어가, 프로세서의 현재 또는 이전의 동작 주파수들/전압들에 관계없이, 기껏해야 작업의 정의된 최대 양만큼 그 정상 상태 작업부하에 뒤 떨어지게만 하도록 보장한다.
도 10 은 성능 보장들을 강제하는 동적 클록 주파수/전압 스케일링 (DCVS) 솔루션을 구현하는 일 양태의 컴퓨팅 디바이스 (1000) 에서의 논리적 컴포넌트들 및 정보 흐름들을 예시한다. 컴퓨팅 디바이스 (1000) 는 하드웨어 유닛 (1002), 커널 공간 (kernel space) 소프트웨어 유닛 (1004), 및 사용자 공간 소프트웨어 유닛 (1006) 을 포함할 수도 있다. 일 양태에서, 커널 공간 소프트웨어 유닛 (1004) 및 사용자 공간 소프트웨어 유닛 (1006) 은 컴퓨팅 디바이스 (1000) 의 오퍼레이팅 시스템 또는 커널 내에 포함될 수도 있다. 예를 들어, 컴퓨팅 디바이스는 (비-특권부여된 (non-privileged) 코드가 실행되는) 사용자 공간 및 (특권부여된 코드가 실행되는) 커널 공간으로 편성되는 커널을 포함할 수도 있다. 이 분리는, 커널 공간의 일부인 코드가 GPL 허가되어야 하는 반면, 사용자-공간에서 실행되는 코드는 GPL 허가될 필요가 없는 안드로이드 (Android) 및 다른 일반 공중 라이선스 (general public license; GPL) 환경들에서 특별히 중요하다.
하드웨어 유닛 (1002) 은 다수의 프로세싱 코어들 (예를 들어, CPU 0, CPU 1, 2D-GPU 0, 2D-GPU 1, 3D-GPU 0 등) 과, 프로세싱 코어들에 의해 공유된 다양한 하드웨어 자원들 (예를 들어, 클록들, 전력 관리 집적 회로 (power management integrated circuit) 들 또는 "PMIC 들", 스크래치패드 메모리 (scratchpad memory) 들 또는 "SPM 들" 등) 을 포함하는 자원들 모듈 (1020) 을 포함할 수도 있다.
커널 공간 소프트웨어 유닛 (1004) 은 하드웨어 유닛 (1002) 에서의 프로세싱 코어들 중의 적어도 하나에 대응하는 프로세서 모듈들 (CPU_0 아이들 통계, CPU_1 아이들 통계, 2D-GPU_0 드라이버, 2D-GPU_1 드라이버, 3D-GPU_0 드라이버 등) 을 포함할 수도 있고, 그 각각은 하나 이상의 아이들 통계 디바이스 모듈들 (1008) 과 통신할 수도 있다. 커널 공간 소프트웨어 유닛 (1004) 은 타이머 드라이버 모듈 (1014), 입력 이벤트 모듈들 (1010), 및 CPU 요청 통계 모듈 (1012) 을 더 포함할 수도 있다. 일 양태에서, 타이머 드라이버 모듈 (1014) 은 각각의 프로세싱 코어에 대한 타이머를 구동 (또는 유지) 할 수도 있다.
사용자 공간 소프트웨어 유닛 (1006) 은 아이들 통계 디바이스 모듈들 (1008), 입력 이벤트 모듈들 (1010), 타이머 드라이버 모듈 (1014), 및 CPU 요청 통계 모듈 (1012) 의 각각으로부터 입력들을 받아들이고, 및/또는 출력들을 CPU 주파수 핫플러그 (hot-plug) 모듈 (1018) 로 전송하도록 구성된 DCVS 제어 모듈 (416) 을 포함할 수도 있다. CPU 주파수 핫플러그 모듈 (1018) 은 통신 신호들을 자원들 모듈 (1020) 로 전송하도록 구성될 수도 있다. CPU 주파수 핫플러그 모듈 (1018) 은 전압/주파수 변화들을 각각의 코어에 개별적으로 (예를 들어, 한번에 하나씩, 순차적으로 등) 또는 동시에 (예를 들어, 시간에 있어서 대략 동일한 시점에) 적용하도록 추가로 구성될 수도 있다.
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 솔루션 스레드를 포함할 수도 있다.
일 양태에서, DCVS 제어 모듈 (1016) 은 펄스 열 (pulse train) 들을 생성하도록 구성될 수도 있다. DCVS 제어 모듈 (1016) 은 프로세싱 코어들의 비지 및/또는 아이들 상태들 (또는 상태들 사이의 천이들) 을 감시하거나 샘플링함으로써 펄스 열들을 생성할 수도 있다. DCVS 제어 모듈 (1016) 은 또한, 하나 이상의 프로세서 실행-큐들의 깊이를 감시하는 것으로부터 얻어진 정보에 기초하여 펄스 열들을 생성할 수도 있다. 실행-큐는 실행 중인 스레드뿐만 아니라, 프로세싱 코어 상에서 실행될 수 있지만, (예를 들어, 현재 실행되고 있는 또 다른 활성 스레드 등으로 인해) 아직 그렇게 할 수 없는 하나 이상의 스레드들의 집합을 포함할 수도 있다. 각각의 프로세싱 코어는 그 자신의 실행-큐를 가질 수도 있거나, 단일 실행-큐는 다중 프로세싱 코어들에 의해 공유될 수도 있다. 스레드들이 슬립 상태에 진입할 것을 요청하거나, 이용가능하게 될 자원 상에서 대기하고 있거나, 또는 종결되었을 때, 스레드들은 실행 큐로부터 제거될 수도 있다. 따라서, 실행 큐에서의 스레드들의 수 (즉, 실행 큐 깊이) 는, 현재 프로세싱 (실행) 되고 있는 스레드 및 프로세싱될 것을 대기하는 스레드를 포함하는 (예를 들어, 대기하는, 실행되는) 활성 스레드들의 수를 식별하게 할 수도 있다.
일 양태에서, DCVS 제어 모듈 (1016) 은 생성된 펄스 열들에 기초하여 정상 상태 작업부하들, 정상 상태 요건들, 및/또는 상한 및 하한 주파수/전압 임계치들을 컴퓨팅하도록 구성될 수도 있다. 상한 및 하한 주파수/전압 임계치들은, 프로세싱 코어가 저하된 전력 소비를 동시에 달성하고 컴퓨팅 디바이스 (1000) 의 응답성 요건들을 충족시키면서, 그 정상 상태 성능 요건들을 충족시키도록 동작할 수도 있는 주파수/전압 범위를 정의할 수도 있다. 응답성 요건들을 충족시키는 것은, 컴퓨팅 디바이스 (1000) 의 사용자가 컴퓨팅 디바이스의 성능 또는 속력에 있어서의 저하를 인식하지 않도록, 작업부하들에서의 모든 태스크들을 수행하는 것을 포함할 수도 있다.
DCVS 제어 모듈 (1016) 은 전체적인 컴퓨팅 디바이스 (1000) 성능을 감시하고, 및/또는 프로세싱 코어들 중의 하나 이상이 수립된 상한 및 하한 주파수 임계치들 사이에서 동작하는 것을 보장하도록 구성될 수도 있다. DCVS 제어 모듈 (1016) 은 프로세싱 자원들 및/또는 프로세싱 코어들의 동작 주파수들이 임계치들에 비례하도록 프로세싱 자원들 및/또는 프로세싱 코어들의 동작 주파수들을 조절할 수도 있다.
위에서 논의된 바와 같이, DCVS 제어 모듈 (1016) 은 펄스 열들을 생성할 수도 있다. 일 양태에서, 프로세싱 코어들의 2 개 이상에 대해 생성된 펄스 열들은 시간에 있어서 동기화될 수도 있고, 프로세싱 코어들이 협력적이고 및/또는 서로에 대해 종속적인 동작들을 수행하고 있는지 여부를 결정하기 위해 적당한 정보를 포함하는 상관 모델들을 생성하기 위하여 교차-상관될 수도 있다. 일 양태에서, DCVS 제어 모듈 (1016) 은, 이 값이 프로세싱 코어들 사이의 상호종속성 (interdependency) 들을 고려하도록, 상한 및 하한 주파수 임계치들, 초기 동작 주파수, 정상 상태 요건들, 및 프로세서 작업부하들을 결정하기 위하여 상관 모델들을 이용할 수도 있다.
일 양태에서, DCVS 제어 모듈 (1016) 은 성능 보장들을 컴퓨팅 및/또는 강제하도록 구성될 수도 있다. 위에서 언급된 바와 같이, 프로세싱 코어들은 DCVS 솔루션이 미리 적당하게 고려할 수 없는 과도 작업부하들을 프로세싱/실행하도록 요구될 수도 있다. 따라서, 과도 작업부하들은 DCVS 제어 모듈 (1016) 로 하여금 프로세싱 코어들 중의 하나 이상을 차선의 주파수 레벨에서 또는 차선의 주파수 범위 내에서 동작시키게 할 수도 있다. 예를 들어, DCVS 제어 모듈 (1016) 은 과도 작업부하들을 미리 고려할 수 없으므로, 그것은 프로세싱 코어가 컴퓨팅 디바이스 (1000) 의 응답성 요건들을 충족시키기 위해 적당한 시간 기간에서 정상 상태 작업부하 및 과도 작업부하의 양자를 완료하도록 요구되는 것보다 더 낮은 주파수 레벨에서 동작될 수도 있는 것으로 부적당하게 결론내릴 수도 있다.
성능 보장은, 프로세싱 코어가 그 정상 상태 작업부하 요건들을 완료하기 위하여 그 프로세싱 코어에 대해 요구되는 것보다 많은 미리 결정된 시간/작업의 양을 넘어 (예를 들어, 과도 작업부하들로 인해) 비지 상태에서 머물러 있지 않도록 보장하기 위하여 DCVS 제어 모듈 (1016) 에 의해 이용될 수도 있는 엄격하고 계산가능한 경계를 컴퓨팅 디바이스 (1000) 에 제공한다. 성능 보장은 DCVS 제어 모듈 (1016) 이, 프로세싱 코어가 컴퓨팅 디바이스 (1000) 의 응답성 요건들을 충족시키기 위해 적당한 시간 기간에서 그 정상 상태 작업부하 및 그 과도 작업부하들의 양자를 완료하는 것을 보장하도록 한다.
다양한 양태들에서, 성능 보장은 시간의 양, 작업의 양, 태스크들의 수, 명령들의 수, CPU 사이클들의 수 등과 같이, 프로세서 성능 또는 지속시간을 측정하기 위해 적당한 측정의 임의의 유닛에서 컴퓨팅될 수도 있고, 이 임의의 유닛에서 정의될 수도 있고, 및/또는 이 임의의 유닛을 포함할 수도 있다. 다양한 양태들에서, 성능 보장은 주파수와 연관될 수도 있고, 및/또는 주파수의 함수일 수도 있다.
일 양태에서, 성능 보장은 하나 이상의 성능 보장 값들을 포함할 수도 있다. 다양한 양태들에서, 성능 보장 값들 (예를 들어, 데드라인 값, 버젯 값, 점프-투-최대 (jump-to-max) 값 등) 은 시간의 양, 작업의 양, 태스크들의 수, 명령들의 수, CPU 사이클들의 수 등과 같이, 프로세서 성능 또는 지속시간을 측정하기 위해 적당한 측정의 임의의 유닛으로 표현될 수도 있다.
다양한 양태들에서, 성능 보장 값들은 버젯 값 (예를 들어, 느슨한 버젯, 과도 버젯 등), 데드라인 값 (예를 들어, 과도 데드라인, 과도 응답 데드라인, 성능 데드라인 등), 및/또는 점프-투-최대 값을 포함할 수도 있다.
데드라인 값은 그 전에 프로세싱 코어가 그 작업부하 프로세싱을 완료해야 하는 상대적인 시간을 표시하는 값, 및/또는 그 후에 프로세싱 코어의 주파수가 증가되어야 하는 상대적인 시간을 표시하는 값일 수도 있다.
버젯 값은 남아 있는 시간의 양으로서, 그 전에 프로세싱 코어가 그 작업부하 프로세싱을 완료해야 하고, 및/또는 그 후에 프로세싱 코어의 주파수가 증가되어야 하는, 상기 남아 있는 시간의 양을 표시하는 값일 수도 있다.
점프-투-최대 값은, 그 전에 프로세싱 코어가 그 작업부하 프로세싱을 완료해야 하고, 및/또는 그 후에 프로세싱 코어의 주파수가 증가되어야 하는 상대적인 시간을 표시하는 값일 수도 있다.
성능 보장 값들은 주파수 또는 전압의 함수에 관련될 수도 있고, 이와 연관될 수도 있고, 및/또는 주파수 또는 전압의 함수일 수도 있다. 예를 들어, 버젯, 데드라인, 및/또는 점프-투 값들의 각각은 대응하는 프로세싱 코어의 동작 주파수의 함수 (function) 로서 컴퓨팅되는 시간 값일 수도 있다. 따라서, 이 값들의 각각은 프로세싱 코어가 100 MHz 의 주파수에서 동작할 때에 10 밀리초 (millisecond) 일 수도 있고, 200 MHz 의 주파수에서 20 밀리초일 수도 있고, 400 MHz 의 주파수에서 40 밀리초 등일 수도 있다. 상기 방식으로, 성능 보장 값들은 프로세싱 코어의 주파수를 증가시키기 위한 가변 지연을 구현하기 위하여 DCVS 솔루션에 의해 이용될 수도 있다.
위에서 언급되고 도 9 에서 예시된 바와 같이, DCVS 솔루션은 가변 지연들을 구현할 수도 있다. 이러한 가변 지연들은 프로세싱 코어가 프로세싱 코어의 실제의 동작 주파수들에 관계없이, 기껏해야 정의된 최대 작업의 양 만큼 그 정상 상태 작업부하에 뒤떨어지기만 하도록 보장한다. 일 양태에서, DCVS 솔루션은 정의된 최대 작업의 양 (즉, 그것에 의해 프로세싱 코어가 그 정상 상태 작업부하의 후방에 속할 수도 있음) 을 프로세싱 코어의 최대 주파수/전압에 의해 승산된 데드라인 값과 동일하게 설정할 수도 있다. 이러한 방식으로, 성능 보장은 정상 상태 요건들에 기초하여 또는 동적으로 또는 "온 더 플라이로" 프로세싱 코어의 주파수/전압을 조절하는 DCVS 솔루션에 의해 영향을 받지 않는다.
일 양태에서, DCVS 제어 모듈 (1016) 은, 대응하는 프로세싱 코어가 아이들로부터 비지로 천이하고, 비지 상태 (예를 들어, 작업부하를 프로세싱하고 있는 것 등) 로 진입하고 및/또는 (예를 들어, 아이들 스레드가 프로세싱 코어를 포기할 때 등) 아이들 상태를 종료할 때마다, 데드라인 값을 버젯 값과 동일하게 설정하도록 구성될 수도 있다.
일 양태에서, DCVS 제어 모듈 (1016) 은, 대응하는 프로세싱 코어가 비지로부터 아이들로 천이하고, 아이들 상태 (예를 들어, 아이들 스레드를 실행하고 있는 것 등) 로 진입하고 및/또는 비지 상태를 종료 (예를 들어, 작업부하에서 모든 태스크들을 완료 등) 할 때마다, 기존의 데드라인 값을 설정하거나 재설정하도록 구성될 수도 있다.
도 11a 내지 도 11b 는 프로세싱 코어가 (예를 들어, 과도 작업부하들 등으로 인해) 그 사전-컴퓨팅된, 예측된, 및/또는 실제의 정상 상태 작업부하를 완료하기 위하여 그 프로세싱 코어에 대해 요구되는 것보다 많은 미리 결정된 시간의 양을 넘어 비지 상태에서 머물러 있지 않도록 보장하는 성능 보장을 생성/컴퓨팅하는 일 양태의 DCVS 솔루션 방법 (1100) 을 예시한다. 다양한 양태들에서, DCVS 솔루션의 동작들은 프로세싱 코어 상에서 또는 또 다른 프로세싱 코어 상에서 실행되는 스레드에 의해 수행될 수도 있다. 일 양태에서, DCVS 솔루션의 동작들 중의 하나 이상은 프로세싱 코어 상에서 실행되는 아이들 스레드에 의해 수행될 수도 있다.
블록 (1102) 에서, DCVS 솔루션은 프로세싱 코어로 하여금 아이들 상태로부터 비지 상태로 천이하게 할 수도 있다. 블록 (1104) 에서, DCVS 솔루션은 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 현재 시간 값 (CurrentTime) 과 동일하게 설정할 수도 있다. 따라서, 아이들 종료 시간 파라미터 (EndIdleTime) 는 프로세싱 코어가 아이들 상태를 최후에 종료하였던 시간을 표시하는 값을 저장할 수도 있다.
다양한 양태들에서, 블록들 (1102 및 1104) 의 동작들은 순차적으로, 병행적으로, 및/또는 임의의 순서로 수행될 수도 있다. 예를 들어, 일 양태에서, DCVS 솔루션은 프로세싱 코어를 아이들로부터 비지로 천이시키기 전에 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 설정할 수도 있다. 또 다른 양태에서, DCVS 솔루션은 프로세싱 코어를 아이들로부터 비지로 천이시킨 후에 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 설정할 수도 있다.
블록 (1106) 에서, DCVS 솔루션은 프로세싱 코어의 동작 주파수 또는 전압을 감시할 수도 있고, 필요에 따라 조절들을 행할 수도 있다. 블록 (1108) 에서, DCVS 솔루션은 프로세싱 코어로 하여금 비지 상태로부터 아이들 상태로 천이하게 할 수도 있다. 일 양태에서, DCVS 솔루션은 프로세싱 코어 상에서 아이들 스레드의 실행을 시작함으로써 프로세싱 코어를 아이들 상태로 천이시킬 수도 있다. 일 양태에서, DCVS 솔루션은 프로세싱 코어가 모든 그 작업부하들과 연관된 모든 태스크들을 완료한 후에 프로세싱 코어를 아이들 상태로 천이시킬 수도 있다.
선택적인 블록 (1110) 에서는, DCVS 솔루션이 기존의 데드라인 값을 설정하거나 재설정할 수도 있다. 위에서 논의된 바와 같이, 데드라인 값은 성능 보장 내에 포함되거나 이와 연관되는 성능 보장 값일 수도 있다. 데드라인 값을 설정, 재설정, 및/또는 컴퓨팅하는 동작들에 관한 추가적인 세부사항들은 이하에서 추가로 제공된다.
블록 (1112) 에서, DCVS 솔루션은 아이들 시작 시간 파라미터 (StartIdleTime) 를 현재 시간 값 (CurrentTime) 과 동일하게 설정할 수도 있다. 블록 (1114) 에서, DCVS 솔루션은 비지 시간 파라미터 (BusyTime) 의 값을, 프로세싱 코어가 (아이들 종료 시간 파라미터 "EndIdleTime" 에 의해 표현될 수도 있는) 이전 아이들 상태를 최후에 종료하였던 시간과, 프로세싱 코어가 (아이들 시작 시간 파라미터 "StartIdleTime" 에 의해 표현될 수도 있는) 현재의 아이들 상태에 진입하였던 시간과의 차이와 동일하게 설정할 수도 있다. 따라서, 비지 시간 파라미터 (BusyTime) 는 프로세싱 코어가 비지 상태에서 가장 최근에 머물러 있었던 지속시간을 표시하는 값을 저장할 수도 있다.
블록 (1116) 에서, DCVS 솔루션은 프로세싱 코어로 하여금 슬립 동작들, 딥 슬립 (deep sleep) 동작들, 또는 소프트웨어 인터럽트 대기 동작들과 같은 다양한 아이들 상태 동작들을 수행하게 할 수도 있다. 따라서, 블록 (1116) 에서, DCVS 솔루션은 (예를 들어, 아이들 스레드, 오퍼레이팅 등을 통해) 프로세싱 코어로 하여금 슬립 상태, 딥 슬립 상태, 인터럽트 대기 상태 등에 진입하게 할 수도 있다.
블록 (1118) 에서, DCVS 솔루션 및/또는 아이들 스레드는 인터럽트 요청을 수신할 수도 있고, 및/또는 이와 다르게, 프로세싱 코어가 그 현재 상태로부터 비지 상태로 천이되어야 하는 것으로 결정할 수도 있다. 이것은, 태스크들이 프로세싱 코어 상에서 실행을 위해 스케줄링되었고, 및/또는 스케줄링된 태스크들이 실행을 위해 준비되어 있다는 통지를 (예를 들어, 오퍼레이팅 시스템 스케줄러, 제어기 등으로부터) 수신하는 DCVS 솔루션에 의해 달성될 수도 있다.
블록 (1120) 에서, DCVS 솔루션은 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 현재 시간 값 (CurrentTime) 과 동일하게 설정할 수도 있다. 블록 (1122) 에서, DCVS 솔루션은 아이들 시간 파라미터 (IdleTime) 의 값을, StartIdleTime 파라미터의 값 및 EndIdleTime 파라미터의 값 사이의 차이와 동일하게 설정할 수도 있다. 따라서, 아이들 시간 파라미터 (IdleTime) 는 프로세싱 코어가 아이들 상태에서 최후에 머물러 있었던 지속시간을 표시하는 값을 저장할 수도 있다.
블록 (1124) 에서, DCVS 솔루션은 동작 주파수, 주파수 범위, 및/또는 프로세싱 코어가 동작해야 하는 주파수 임계치들을 컴퓨팅할 수도 있다. 일 양태에서, DCVS 솔루션은 프로세싱 코어가 비지 상태에서 최후에 머물러 있었던 시간의 지속시간 (예를 들어, BusyTime) 및/또는 프로세싱 코어가 아이들 상태에서 최후에 머물러 있었던 시간의 지속시간 (예를 들어, IdleTime) 에 기초하여 주파수 또는 주파수 범위를 컴퓨팅할 수도 있다. 일 양태에서, DCVS 솔루션은 프로세서가 (예를 들어, 미리 결정된 시간 기간 또는 시간 윈도우에 걸쳐) 비지 및/또는 아이들 상태들에서 이전에 머물러 있었던 지속시간들의 평균 (또는 이동 평균) 과 같은 이력 정보에 기초하여 동작 주파수, 주파수 범위, 및/또는 주파수 임계치들을 컴퓨팅할 수도 있다. 일 양태에서, DCVS 솔루션은 펄스 열들에 기초하여 동작 주파수, 주파수 범위, 및/또는 주파수 임계치들을 컴퓨팅할 수도 있다. 위에서 논의된 바와 같이, 펄스 열들은 비지 및/또는 아이들 상태들의 샘플링, 상태들 사이의 천이들, 실행-큐들의 깊이 등에 기초하여 생성될 수도 있다.
블록 (1126) 에서는, DCVS 솔루션이 데드라인 값을 컴퓨팅하거나 선택할 수도 있다. 데드라인 값은 상대적인 시간으로서, 그 후에 프로세싱 코어의 주파수가 다음의 더 높은 주파수 스텝으로 또는 최대 주파수로 증가되도록 설정되어야 하는, 그러한 상대적인 시간을 표시하는 값일 수도 있다. 다양한 양태들에서, 데드라인 값은 구성 설정들, 드라이버 입력들, 스케줄링된 태스크들의 분량 및/또는 타입들, 예측된 정상 상태 작업부하, 및/또는 컴퓨팅 디바이스의 응답성 요건들에 기초하여 컴퓨팅될 수도 있다. 데드라인 값은 정적 및/또는 동적 값들에 기초하여 결정될 수도 있다. 예를 들어, 데드라인 값은 정적 구성 값에 기초하여, 또는 프로세싱 코어 상에서 수행되도록 스케줄링된 태스크들의 타입들 (예를 들어, 1080 p 비디오 스트리밍 대 720 p 비디오 스트리밍 등) 에 기초하여 결정될 수도 있다.
일 양태에서, 데드라인 값은 컴퓨팅 디바이스의 응답성 요건들에 반비례할 수도 있다 (즉, 응답성 요건들이 더 높을수록, 데드라인이 더 짧다). 일 양태에서, 데드라인 값은 프로세싱 코어의 현재의 동작 주파수의 함수인 시간 값 (예를 들어, 100 MHz 의 주파수에서 10 밀리초, 200 MHz 의 주파수에서 20 밀리초, 400 MHz 의 주파수에서 40 밀리초 등) 일 수도 있다.
블록 (1128) 에서는, DCVS 솔루션이 버젯 값을 컴퓨팅하거나 선택할 수도 있다. 버젯 값은, 그 정상 상태 작업부하 요건들을 완료하기 위하여 프로세싱 코어에 대해 요구되도록 결정된 시간과 데드라인 값의 합을 초과하지 않으면서, 프로세싱 코어가 활성 또는 비지 상태에서 머물러 있을 수도 있는 시간의 양을 표시하는 값일 수도 있다. 일 양태에서, 버젯 값은 프로세싱 코어의 현재의 동작 주파수의 함수인 시간 값 (예를 들어, 100 MHz 의 주파수에서 10 밀리초, 200 MHz 의 주파수에서 20 밀리초, 400 MHz 의 주파수에서 40 밀리초 등) 일 수도 있다.
다양한 양태들에서, 버젯 값은 데드라인 값, 복수의 주파수 레벨들 또는 스텝들, 최대 프로세서 주파수, 정상 상태 프로세서 주파수 등에 기초하여 컴퓨팅될 수도 있다. 일 양태에서, 버젯 값은 유효 과도 버젯일 수도 있고, 및/또는 위에서 논의된 공식들 중의 임의의 것을 통해 컴퓨팅될 수도 있다.
선택적인 블록 (1130) 에서는, DCVS 솔루션이 점프 투 최대 값을 컴퓨팅할 수도 있다. 점프-투-최대 값은 상대적인 시간으로서, 그 후에 프로세싱 코어의 주파수가 최대 프로세싱 주파수로 설정되어야 하는, 그러한 상대적인 시간을 표시하는 값일 수도 있다. 일 양태에서, 점프-투-최대 값은 EndIdleTime 파리미터의 값 및 버젯 값을 합산함으로써 컴퓨팅될 수도 있다.
블록 (1132) 에서, DCVS 솔루션은 프로세싱 코어를 아이들 상태로부터 비지 상태로 천이시킬 수도 있다. 일 양태에서, 블록 (1132) 의 일부로서, DCVS 솔루션은 데드라인 값을 버젯 값과 동일하게 설정할 수도 있다. 다양한 양태들에서, DCVS 솔루션은, 프로세싱 코어가 아이들로부터 비지로 천이하고, 활성 또는 비지 상태 (예를 들어, 작업부하를 프로세싱하고 있는 것 등) 로 진입하고 및/또는 (예를 들어, 아이들 스레드가 프로세싱 코어를 포기할 때 등) 아이들 상태를 종료할 때마다, 데드라인 값을 버젯 값과 동일하게 설정하도록 구성될 수도 있다.
도 12 는 프로세싱 코어가 (예를 들어, 과도 작업부하들의 존재 등으로 인해) 그 사전-컴퓨팅된, 예측된, 및/또는 실제의 정상 상태 작업부하를 완료하기 위하여 그 프로세싱 코어에 대해 요구되는 것보다 많은 미리 결정된 시간의 양을 넘어 비지 상태에서 머물러 있지 않도록 보장하는 성능 보장을 강제하는 일 양태의 DCVS 솔루션 방법 (1200) 을 예시한다. 블록 (1202) 에서, DCVS 솔루션은 스케줄링된 태스크들에 기초하여 예측된 정상 상태 작업부하를 컴퓨팅할 수도 있다. 블록 (1204) 에서, DCVS 솔루션은 컴퓨팅 디바이스의 전력 소비 및/또는 응답성 요건들을 충족시키기 위한 주파수 임계치들과 같은, 프로세싱 코어에 대한 다양한 성능 요건들을 컴퓨팅할 수도 있다. 성능 요건들 (예를 들어, 주파수 임계치들 등) 은 정상 상태 작업부하, 이력 정보 (예를 들어, 비지 상태에서 이전에 소비된 시간의 양 등), 프로세서 특성들, 응답성 요건들 등에 기초하여 결정될 수도 있다.
블록 (1206) 에서, DCVS 솔루션은 초기 동작 주파수 및/또는 다양한 성능 보장 값들 (예를 들어, 데드라인 값, 버젯 값, 점프-투-최대 값 등) 을 컴퓨팅하고 설정할 수도 있다. 블록 (1208) 에서, DCVS 솔루션은 다양한 성능 요건들을 충족시키면서 정상 상태 작업부하에서의 모든 태스크들을 완료하기 위하여 프로세싱 코어에 대해 요구된 시간 또는 작업의 양 (예를 들어, CPU 사이클들, 명령들 등) 을 컴퓨팅할 수도 있다.
블록 (1210) 에서, DCVS 솔루션은, 프로세싱 코어가 컴퓨팅된 초기 동작 주파수/전압에서 (또는 컴퓨팅된 임계치들 내에서) 실행되고 및/또는 다양한 디바이스 또는 시스템 요건들을 충족시키도록, 프로세싱 코어를 아이들 상태로부터 비지 상태로 천이시킬 수도 있다. 블록 (1212) 에서, DCVS 솔루션은 프로세싱 코어의 실제의 작업부하 및/또는 동작 주파수를 감시할 수도 있고, (예를 들어, 디폴트 (default) 클록 및 전압 스케일링 알고리즘에 따라) 필요에 따라 주파수/전압을 조절할 수도 있다. 선택적인 블록 (1214) 에서는, DCVS 솔루션이 프로세싱 코어의 현재의 동작 주파수/전압에 기초하여 성능 보장 값들을 업데이트할 수도 있다.
결정 블록 (1216) 에서, DCVS 솔루션은 프로세싱 코어가 컴퓨팅된 시간/작업 (즉, 예측된 정상 상태 작업부하에서의 모든 태스크들을 완료하기 위하여 프로세싱 코어에 대해 요구되도록 결정된 시간/작업의 양) 보다 더 긴 비지 상태에서 머물러 있었는지 여부를 결정할 수도 있다. DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간/작업보다 더 길게 비지 상태에서 머물러 있지 않았던 것으로 결정할 때 (즉, 결정 단계 (1216) = "아니오"), 블록 (1212) 에서는, DCVS 솔루션이 실제의 작업부하/주파수를 감시하고 필요할 때에 조절들을 행하는 것을 계속할 수도 있다.
DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간/작업보다 더 긴 지속시간 동안에 비지 상태에서 머물러 있었던 것으로 결정할 때 (즉, 결정 단계 (1216) = "예"), 결정 블록 (1218) 에서는, DCVS 솔루션이 버젯이 고갈되었는지 여부를 결정할 수도 있다. DCVS 솔루션은, 버젯 값이 제로와 동일할 때, 및/또는 프로세싱 코어가 데드라인 값 플러스 컴퓨팅된 시간/작업 이상인 (시간 또는 작업의 어느 하나에서 측정된) 지속시간 동안에 비지 상태에서 머물러 있었을 때에 버젯이 고갈되었던 것으로 결정할 수도 있다.
DCVS 솔루션이 버젯이 고갈되지 않았던 것으로 결정할 때 (즉, 결정 단계 (1218) = "아니오"), 블록 (1212) 에서는, DCVS 솔루션이 실제의 작업부하/주파수를 감시하고 필요할 때에 조절들을 행하는 것을 계속할 수도 있다. DCVS 솔루션이 버젯이 고갈되었던 것으로 결정할 때 (즉, 결정 단계 (1218) = "예"), 블록 (1220) 에서는, DCVS 솔루션이 프로세싱 코어의 동작 주파수/전압을 증가시킬 수도 있다. 일 양태에서, 블록 (1220) 에서는, DCVS 솔루션이 프로세싱 코어의 동작 주파수/전압을 최대 프로세서 주파수로 증가시킬 수도 있다. 일 양태에서, 블록 (1220) 에서는, DCVS 솔루션이 동작 주파수/전압 임계치들을 증가시킬 수도 있다. 일 양태에서, 블록 (1220) 에서는, DCVS 솔루션이 프로세싱 코어의 동작 주파수/전압을 스텝들로 증가시킬 수도 있다.
도 13 은 성능 보장을 강제하는 또 다른 양태의 DCVS 솔루션 방법 (1300) 을 예시한다. 블록들 (1302 내지 1314) 에서, DCVS 솔루션은 도 12 의 블록들 (1202 내지 1214) 에 대하여 위에서 논의된 동작들과 동일하거나 이와 유사한 동작들을 수행할 수도 있다. 결정 블록 (1316) 에서, DCVS 솔루션은 프로세싱 코어가 컴퓨팅된 시간 (즉, 예측된 정상 상태 작업부하에서의 모든 태스크들을 완료하기 위하여 프로세싱 코어에 대해 요구되도록 결정된 시간의 양) 플러스 데드라인 값 (컴퓨팅된 시간 + 데드라인) 전에 그 현재의 작업부하를 완료할 가능성이 높은지 여부를 결정할 수도 있다.
DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간 플러스 데드라인 값 전에 그 현재의 작업부하를 완료할 가능성이 높은 것으로 결정할 때 (즉, 결정 단계 (1316) = "예"), 블록 (1312) 에서는, DCVS 솔루션이 실제의 작업부하/주파수를 감시하며 필요에 따라 동작 주파수/전압에 대한 조절들을 행하는 것을 계속할 수도 있다.
DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간 값 플러스 데드라인 값 전에 그 현재의 작업부하를 완료할 가능성이 높지 않은 것으로 결정할 때 (즉, 결정 단계 (1316) = "아니오"), 블록 (1318) 에서는, DCVS 솔루션이 프로세싱 코어의 동작 주파수/전압을 증가시킬 수도 있다. 프로세싱 코어의 동작 주파수/전압은 최대 프로세서 주파수로 또는 스텝들로 증가될 수도 있다.
다양한 양태들은, 프로세서의 정상 상태 작업부하를 결정하는 것, 프로세서 상에서 결정된 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것, 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것, 프로세서의 실제의 작업부하에 기초하여 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하는 것, 및 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 것을 포함할 수도 있는, 프로세서를 가지는 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법들을 포함한다.
일 양태에서, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 것은, 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함할 수도 있다. 추가의 양태에서, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 것은, 프로세서의 주파수를 스텝들로 증가시키는 것을 포함할 수도 있다. 추가의 양태에서, 방법은 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하고, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하고, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 동작들을 반복적으로 수행하는 것을 더 포함할 수도 있다.
추가의 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것은 데드라인 값을 컴퓨팅하는 것을 포함할 수도 있다. 추가의 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것은 버젯 값을 컴퓨팅하는 것을 포함할 수도 있다. 추가의 양태에서, 프로세서의 정상 상태 작업부하를 결정하는 것은 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함할 수도 있다. 추가의 양태에서, 방법은 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 포함할 수도 있다. 추가의 양태에서, 프로세서의 정상 상태 작업부하를 결정하고, 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들은 단일 스레드에 의해 수행된다. 추가의 양태에서, 단일 스레드는 프로세서 상에서 실행된다. 추가의 양태에서, 단일 스레드는 컴퓨팅 디바이스의 제 2 프로세서 상에서 실행된다.
다양한 양태들은, 프로세서의 정상 상태 작업부하를 결정하기 위한 수단, 프로세서 상에서 결정된 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하기 위한 수단, 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단, 프로세서를 아이들 상태로부터 비지 상태로 천이시키기 위한 수단, 프로세서의 실제의 작업부하에 기초하여 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하기 위한 수단, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하기 위한 수단, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하기 위한 수단, 및 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키기 위한 수단을 가지는 컴퓨팅 디바이스를 포함한다.
일 양태에서, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키기 위한 수단은, 프로세서의 주파수를 최대 프로세서 주파수로 증가시키기 위한 수단을 포함할 수도 있다.
추가의 양태에서, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키기 위한 수단은, 프로세서의 주파수를 스텝들로 증가시키기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 컴퓨팅 디바이스는 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하고, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하고, 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 프로세서의 주파수를 증가시키는 동작들을 반복적으로 수행하기 위한 수단을 더 포함할 수도 있다.
추가의 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단은 데드라인 값을 컴퓨팅하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단은 버젯 값을 컴퓨팅하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 프로세서의 정상 상태 작업부하를 결정하기 위한 수단은 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 컴퓨팅 디바이스는 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하기 위한 수단을 포함할 수도 있다.
추가의 양태에서, 컴퓨팅 디바이스는 프로세서의 정상 상태 작업부하를 결정하고, 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 단일 스레드를 통해 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들을 달성하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 컴퓨팅 디바이스는 프로세서 상에서 단일 스레드를 실행하기 위한 수단을 포함할 수도 있다. 추가의 양태에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 제 2 프로세서 상에서 단일 스레드를 실행하기 위한 수단을 포함할 수도 있다.
추가의 양태들은, 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 제 2 프로세서 상에서 결정된 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것, 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것, 제 2 프로세서의 실제의 작업부하에 기초하여 제 2 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하는 것, 및 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것을 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된 제 1 프로세서를 포함할 수도 있는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된 프로세서를 포함할 수도 있는 컴퓨팅 디바이스를 포함한다.
일 양태에서, 제 1 프로세서는, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것이, 제 2 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다.
추가의 양태에서, 제 1 프로세서는, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것이, 제 2 프로세서의 주파수를 스텝들로 증가시키는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다.
추가의 양태에서, 제 1 프로세서는 또한, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하고, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하고, 그리고 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 동작들을 반복적으로 수행하기 위한 프로세서-실행가능한 명령들로 추가로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다.
추가의 양태에서, 제 1 프로세서는, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버젯 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 제 2 프로세서의 정상 상태 작업부하를 결정하는 것이 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성될 수도 있다.
추가의 양태에서, 제 1 프로세서는, 제 2 프로세서의 정상 상태 작업부하를 결정하고, 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들은 단일 스레드에 의해 수행되도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 단일 스레드가 제 1 프로세서 상에서 실행될 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다. 추가의 양태에서, 제 1 프로세서는, 제 2 프로세서의 정상 상태 작업부하를 결정하고, 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들을 달성하는 것이 제 2 프로세서 상에서 단일 스레드를 실행하는 것을 포함할 수도 있도록 하는 프로세서-실행가능한 명령들로 구성될 수도 있다.
추가의 양태들은 구성된 프로세서-실행가능한 명령들을 저장한 비-일시적인 (non-transitory) 서버-판독가능한 저장 매체를 포함하고, 상기 프로세서-실행가능한 명령들은 컴퓨팅 디바이스로 하여금, 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 제 2 프로세서 상에서 결정된 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것, 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것, 제 2 프로세서의 실제의 작업부하에 기초하여 제 2 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하는 것, 및 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것을 포함할 수도 있는 동작들을 수행하게 한다.
일 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것이, 제 2 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다.
추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 제 2 프로세서로 하여금, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 것이, 제 2 프로세서의 주파수를 스텝들로 증가시키는 것, 및 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하고, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었는지 여부를 결정하고, 제 2 프로세서가 결정된 작업의 양 및 성능 보장 값의 합 이상인 기간 동안에 비지 상태에서 머물러 있었던 것으로 결정될 때, 제 2 프로세서의 주파수를 증가시키는 동작들을 반복적으로 수행하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다.
추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버젯 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서의 정상 상태 작업부하를 결정하는 것이 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 포함하는 동작들을 수행하게 하도록 구성될 수도 있다.
추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 제 2 프로세서의 정상 상태 작업부하를 결정하고, 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하고, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 동작들은 단일 스레드에 의해 수행되도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 단일 스레드가 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가의 양태에서, 저장된 프로세서-실행가능한 소프트웨어 명령들은, 프로세서로 하여금, 단일 스레드가 제 2 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성될 수도 있다.
다양한 양태들은 다수의 이익들을 제공하고, 성능, 전력 소비, 및/또는 응답성이 중요한 랩톱들 및 다른 이동 디바이스들에서 구현될 수도 있다. 다양한 양태들은 저부하 머신들에 대한 에너지 및 냉각 비용들을 감소시키기 위하여 서버 및 개인용 컴퓨터들에서 구현될 수도 있다. 열 출력을 저하시키는 것은 시스템 냉각 팬들이 낮추어지거나 턴오프되도록 하여, 잡음 레벨들을 저하시키고, 전력 소비를 추가로 감소시킨다. 다양한 양태들은 또한, 온도가 어떤 임계치에 도달할 때에 불충분하게 냉각된 시스템들에서 열을 저하시키기 위하여 이용될 수도 있다.
다양한 양태들은 프로세싱 코어들의 측면에서 예시적인 목적들을 위하여 위에서 설명되지만, 양태의 방법들, 시스템들, 및 실행가능한 명령들은 방법들이 주파수 또는 전압의 인식 및 제어를 가능하게 하는 임의의 시스템에서 구현될 수도 있다. 추가로, 주파수 또는 전압을 스케일링하는 동작들은 임의의 단일 또는 멀티프로세서 시스템 상에서 수행될 수도 있다.
다양한 양태들은 다양한 휴대용 또는 이동 컴퓨팅 디바이스들에서 구현될 수도 있고, 그 예는 도 14 에서 예시되어 있다. 휴대용 컴퓨팅 디바이스 (1400) 는 메모리 (1402) 및 트랜시버 (1405) 에 결합된 프로세싱 코어 (1401) 를 포함할 수도 있다. 트랜시버 (1405) 는 전자기 방사 (electromagnetic radiation) 를 전송하고 수신하기 위한 안테나 (1404) 에 결합될 수도 있다. 휴대용 컴퓨팅 디바이스 (1400) 는 또한, 디스플레이 (1403) (예를 들어, 터치 스크린 디스플레이), 및 사용자 입력들을 받아들이기 위한 메뉴 선택 버튼들 또는 로커 스위치 (rocker switch) 들 (1406) 을 포함할 수도 있다. 일부의 휴대용 컴퓨팅 디바이스에서는, 무선 통신 기능들에 전용인 하나의 프로세서 및 다른 애플리케이션들을 실행하는 것에 전용인 하나의 프로세서와 같은, 다중 프로세서들 (1401) 이 제공될 수도 있다.
다양한 양태들은 또한, 도 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) 을 포함할 수도 있다.
위에서 설명된 양태들은 또한, 도 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) 을 포함할 수도 있다.
프로세싱 코어 (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) 에 의해 액세스가능한 모든 메모리를 지칭한다.
프로세싱 코어 (1501, 1601, 1710) 는 애플리케이션 소프트웨어 명령들을 저장하기에 충분한 내부 메모리를 포함할 수도 있다. 다수의 디바이스들에서, 내부 메모리는 플래시 메모리와 같은 휘발성 또는 비휘발성 메모리, 또는 양자의 혼합일 수도 있다. 이 설명의 목적들을 위하여, 메모리에 대한 일반적인 참조는, 내부 메모리, 또는 디바이스 내로 플러깅된 분리가능한 메모리와, 프로세싱 코어 (1501, 1601, 1710) 자체 내의 메모리를 포함하는, 프로세서 (1501, 1601, 1710) 에 의해 액세스가능한 메모리를 지칭한다.
상기한 방법 설명들 및 프로세스 흐름도들은 예시적인 예들에 불과한 것으로서 제공되고, 다양한 양태들의 단계들이 제시된 순서로 수행되어야 하는 것을 요구하거나 암시하도록 의도된 것이 아니다. 당해 분야의 당업자에 의해 인식되는 바와 같이, 상기한 양태들에서의 단계들의 순서는 임의의 순서로 수행될 수도 있다. "그 후", "다음으로", "다음" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도된 것이 아니고; 이 단어들은 방법들의 설명을 통해 독자를 안내하기 위하여 간단하게 이용된다. 추가로, 예를 들어, 관사들 "a", "an", 또는 "the" 를 이용하는 단수인 청구항 구성요소들에 대한 임의의 참조는 구성요소를 단수로 제한하는 것으로 해석되지 않아야 한다.
본원에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로서 구현될 수도 있다. 하드웨어 및 소프트웨어의 이 교환가능성을 명확하게 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 일반적으로 그 기능성의 측면에서 위에서 설명되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로 구현되는지 여부는 특별한 애플리케이션 및 전체 시스템에 부과된 설계 제약들에 종속된다. 숙련된 기술자들은 각각의 특별한 애플리케이션을 위한 다양한 방법들로 설명된 기능성을 구현할 수도 있지만, 이러한 구현 판정들은 본 발명의 범위로부터의 이탈을 야기시키는 것으로 해석되지 않아야 한다.
본원에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 로직들, 논리적 블록들, 모듈들, 및 회로들을 구현하기 위하여 이용된 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래밍가능한 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능한 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 그 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 멀티프로세서일 수도 있지만, 대안적으로, 프로세서는 임의의 기존의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 및 멀티프로세서, 복수의 멀티프로세서들, DSP 코어와 함께 하나 이상의 멀티프로세서들, 또는 임의의 다른 이러한 구성의 조합으로서 구현될 수도 있다. 대안적으로, 일부의 단계들 또는 방법들은 주어진 기능에 특정한 회로부에 의해 수행될 수도 있다.
하나 이상의 예시적인 양태들에서는, 설명된 기능들이 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현될 경우, 기능들은 비-일시적인 컴퓨터-판독가능한 저장 매체 상에서 하나 이상의 프로세서-실행가능한 명령들 또는 코드로서 저장될 수도 있다. 본원에서 개시된 방법 또는 알고리즘의 단계들은 유형의 (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) 들은 데이터를 레이저들로 광학적으로 재생한다. 상기의 조합들은 또한, 비-일시적인 컴퓨터-판독가능한 매체들의 범위 내에 포함될 수 있다. 추가적으로, 방법 또는 알고리즘의 동작들은, 컴퓨터 프로그램 제품 내로 편입될 수도 있는 비-일시적인 머신 판독가능한 매체 및/또는 비-일시적인 컴퓨터-판독가능한 매체 상에서 코드들 및/또는 명령들 중의 하나 또는 임의의 조합 또는 세트로서 상주할 수도 있다.
개시된 양태들의 선행하는 설명은 당해 분야의 당업자가 본 발명을 제조하거나 이용하는 것을 가능하게 하도록 제공된다. 이 양태들에 대한 다양한 수정들은 당해 분야의 당업자들에게 용이하게 명백할 것이고, 본원에서 정의된 일반적인 원리들은 본 발명의 사상 또는 범위로부터 이탈하지 않으면서 다른 양태들에 적용될 수도 있다. 따라서, 본 발명은 본원에서 도시된 양태들에 제한되도록 의도된 것이 아니라, 다음의 청구항들 및 본원에서 개시된 원리들 및 신규한 특징들과 부합되는 가장 넓은 범위가 부여되야 한다.

Claims (40)

  1. 프로세서를 갖는 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법으로서,
    상기 프로세서의 정상 상태 작업부하를 결정하는 단계;
    상기 프로세서 상에서 결정된 상기 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 단계;
    상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계;
    상기 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 단계;
    상기 프로세서의 실제의 작업부하에 기초하여 상기 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 단계;
    스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 단계;
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 단계; 및
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  2. 제 1 항에 있어서,
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 단계는,
    상기 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  3. 제 1 항에 있어서,
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 단계는, 상기 프로세서의 상기 주파수를 스텝들로 증가시키는 단계를 포함하고,
    상기 방법은,
    스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 것
    의 동작들을 반복적으로 수행하는 단계를 더 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  4. 제 1 항에 있어서,
    상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계는 데드라인 값을 컴퓨팅하는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  5. 제 1 항에 있어서,
    상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계는 버젯 값을 컴퓨팅하는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  6. 제 1 항에 있어서,
    상기 프로세서의 정상 상태 작업부하를 결정하는 단계는 상기 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 단계를 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  7. 제 1 항에 있어서,
    상기 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 단계를 더 포함하는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  8. 제 1 항에 있어서,
    상기 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들은 단일 스레드에 의해 수행되는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  9. 제 8 항에 있어서,
    상기 단일 스레드는 상기 프로세서 상에서 실행되는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  10. 제 8 항에 있어서,
    상기 단일 스레드는 상기 컴퓨팅 디바이스의 제 2 프로세서 상에서 실행되는, 컴퓨팅 디바이스에 관한 성능을 개선시키는 방법.
  11. 컴퓨팅 디바이스로서,
    프로세서;
    상기 프로세서의 정상 상태 작업부하를 결정하기 위한 수단;
    상기 프로세서 상에서 결정된 상기 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하기 위한 수단;
    상기 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단;
    상기 프로세서를 아이들 상태로부터 비지 상태로 천이시키기 위한 수단;
    상기 프로세서의 실제의 작업부하에 기초하여 상기 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하기 위한 수단;
    스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하기 위한 수단;
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하기 위한 수단; 및
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  12. 제 11 항에 있어서,
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키기 위한 수단은,
    상기 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  13. 제 11 항에 있어서,
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키기 위한 수단은, 상기 프로세서의 상기 주파수를 스텝들로 증가시키기 위한 수단을 포함하고,
    상기 컴퓨팅 디바이스는,
    스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
    상기 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 프로세서의 상기 주파수를 증가시키는 것
    의 동작들을 반복적으로 수행하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
  14. 제 11 항에 있어서,
    상기 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단은 데드라인 값을 컴퓨팅하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  15. 제 11 항에 있어서,
    상기 프로세서에 대한 성능 보장 값을 컴퓨팅하기 위한 수단은 버젯 값을 컴퓨팅하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  16. 제 11 항에 있어서,
    상기 프로세서의 정상 상태 작업부하를 결정하기 위한 수단은 상기 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하기 위한 수단을 포함하는, 컴퓨팅 디바이스.
  17. 제 11 항에 있어서,
    상기 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
  18. 제 11 항에 있어서,
    상기 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들을 단일 스레드를 통해 달성하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
  19. 제 18 항에 있어서,
    상기 프로세서 상에서 상기 단일 스레드를 실행하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
  20. 제 18 항에 있어서,
    상기 컴퓨팅 디바이스의 제 2 프로세서 상에서 상기 단일 스레드를 실행하기 위한 수단을 더 포함하는, 컴퓨팅 디바이스.
  21. 컴퓨팅 디바이스로서,
    제 1 프로세서를 포함하고,
    상기 제 1 프로세서는,
    제 2 프로세서의 정상 상태 작업부하를 결정하는 것;
    상기 제 2 프로세서 상에서 결정된 상기 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것;
    상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것;
    상기 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것;
    상기 제 2 프로세서의 실제의 작업부하에 기초하여 상기 제 2 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것;
    스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
    상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
    상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것을
    포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된, 컴퓨팅 디바이스.
  22. 제 21 항에 있어서,
    상기 제 1 프로세서는, 상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것이,
    상기 제 2 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  23. 제 21 항에 있어서,
    상기 제 1 프로세서는, 상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것이, 상기 제 2 프로세서의 상기 주파수를 스텝들로 증가시키는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되고, 그리고
    상기 제 1 프로세서는 또한,
    스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
    상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
    상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것
    의 동작들을 반복적으로 수행하기 위한 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  24. 제 21 항에 있어서,
    상기 제 1 프로세서는, 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  25. 제 21 항에 있어서,
    상기 제 1 프로세서는, 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버젯 값을 컴퓨팅하는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  26. 제 21 항에 있어서,
    상기 제 1 프로세서는, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것이 상기 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  27. 제 21 항에 있어서,
    상기 제 1 프로세서는,
    상기 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  28. 제 21 항에 있어서,
    상기 제 1 프로세서는, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들이 단일 스레드에 의해 수행되도록 하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  29. 제 28 항에 있어서,
    상기 제 1 프로세서는, 상기 단일 스레드가 상기 제 1 프로세서 상에서 실행되도록 하는 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  30. 제 28 항에 있어서,
    상기 제 1 프로세서는, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들을 달성하는 것이 상기 제 2 프로세서 상에서 상기 단일 스레드를 실행하는 것을 포함하도록 프로세서-실행가능한 명령들로 구성되는, 컴퓨팅 디바이스.
  31. 프로세서-실행가능한 소프트웨어 명령들을 저장한 비-일시적인 컴퓨터 판독가능한 저장 매체로서, 상기 프로세서-실행가능한 소프트웨어 명령들은 제 1 프로세서로 하여금,
    제 2 프로세서의 정상 상태 작업부하를 결정하는 것;
    상기 제 2 프로세서 상에서 결정된 상기 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것;
    상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것;
    상기 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것;
    상기 제 2 프로세서의 실제의 작업부하에 기초하여 상기 제 2 프로세서의 주파수를 스케일링하기 위하여 동적 클록 및 전압 스케일링 동작들을 수행하는 것;
    스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
    상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
    상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것을 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
  32. 제 31 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 제 1 프로세서로 하여금, 상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것이,
    상기 제 2 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
  33. 제 31 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 제 1 프로세서로 하여금, 상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것이,
    상기 제 2 프로세서의 상기 주파수를 스텝들로 증가시키는 것, 및
    동작들을 반복적으로 수행하는 것으로서,
    스케일링된 상기 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
    상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었는지 여부를 결정하는 것; 및
    상기 제 2 프로세서가 결정된 상기 작업의 양 및 상기 성능 보장 값의 합 이상인 기간 동안에 상기 비지 상태에서 머물러 있었던 것으로 결정될 때, 상기 제 2 프로세서의 상기 주파수를 증가시키는 것
    의 상기 동작들을 반복적으로 수행하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
  34. 제 31 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 제 1 프로세서로 하여금, 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
  35. 제 31 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 제 1 프로세서로 하여금, 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버젯 값을 컴퓨팅하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
  36. 제 31 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 제 1 프로세서로 하여금, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것이 상기 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함하도록 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
  37. 제 31 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 제 1 프로세서로 하여금,
    상기 비지 및 아이들 상태들 사이의 천이들을 샘플링함으로써 펄스 열들을 생성하는 것을 포함하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
  38. 제 31 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 제 1 프로세서로 하여금, 상기 제 2 프로세서의 정상 상태 작업부하를 결정하는 것, 상기 제 2 프로세서 상에서 정상 상태 작업부하를 수행하도록 요구된 작업의 양을 결정하는 것, 및 상기 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들이 단일 스레드에 의해 수행되도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
  39. 제 38 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 제 1 프로세서로 하여금, 상기 단일 스레드가 상기 제 1 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
  40. 제 38 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 제 1 프로세서로 하여금, 상기 단일 스레드가 상기 제 2 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성되는, 비-일시적인 컴퓨터 판독가능한 저장 매체.
KR1020157014652A 2012-11-05 2013-09-25 보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법 KR101578336B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

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

Family

ID=49354911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157014652A KR101578336B1 (ko) 2012-11-05 2013-09-25 보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법

Country Status (5)

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

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 (ja) * 2018-05-15 2019-11-21 ルネサスエレクトロニクス株式会社 プログラム、情報処理装置、および情報処理方法
CN110489228B (zh) * 2019-07-16 2022-05-17 华为技术有限公司 一种资源调度的方法和电子设备
CN111722931A (zh) * 2020-06-24 2020-09-29 龙芯中科技术有限公司 处理器的控制方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004044720A3 (en) 2002-11-12 2004-09-23 Advanced Risc Mach Ltd Performance level setting of a data processing system
JP2005073231A (ja) 2003-07-08 2005-03-17 Toshiba Corp 処理装置のための制御装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10268963A (ja) * 1997-03-28 1998-10-09 Mitsubishi Electric Corp 情報処理装置
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 (ko) * 2009-11-06 2016-05-02 삼성전자주식회사 동적 전압 주파수 스케일링 방법
US8909962B2 (en) * 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US20110145559A1 (en) * 2009-12-16 2011-06-16 Thomson Steven S System and method for controlling central processing unit power with guaranteed steady state deadlines

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004044720A3 (en) 2002-11-12 2004-09-23 Advanced Risc Mach Ltd Performance level setting of a data processing system
JP2005073231A (ja) 2003-07-08 2005-03-17 Toshiba Corp 処理装置のための制御装置

Also Published As

Publication number Publication date
EP2915020A1 (en) 2015-09-09
CN104756043B (zh) 2016-06-08
JP5930504B2 (ja) 2016-06-08
WO2014070338A1 (en) 2014-05-08
KR20150083883A (ko) 2015-07-20
CN104756043A (zh) 2015-07-01
JP2016505913A (ja) 2016-02-25

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 (ko) 보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법
KR101409034B1 (ko) 보장된 과도 데드라인을 가진 중앙 처리 장치 전력을 제어하는 시스템 및 방법
KR101409141B1 (ko) 멀티코어 중앙 프로세싱 유닛에서의 복수의 코어들을 온도에 기초하여 동적으로 제어하는 시스템 및 방법
JP5601731B2 (ja) プロセッサを動的に制御するシステムおよび方法
KR101409055B1 (ko) 추론된 작업부하 병렬성에 기초하여 중앙 처리 장치 전력을 제어하는 시스템 및 방법
US9128705B2 (en) System and method for controlling central processing unit power with reduced frequency oscillations
KR101516859B1 (ko) 보장된 정상 상태 데드라인을 가진 중앙 처리 장치 전력을 제어하는 시스템 및 방법
KR101578336B1 (ko) 보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법
KR101421361B1 (ko) 워크로드 요청들에 기초하여 동적 클록 및 전압 스위칭 알고리즘을 조정하는 시스템 및 방법

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