KR20120116975A - 프로세서의 동적 제어 방법 및 시스템 - Google Patents

프로세서의 동적 제어 방법 및 시스템 Download PDF

Info

Publication number
KR20120116975A
KR20120116975A KR1020127021124A KR20127021124A KR20120116975A KR 20120116975 A KR20120116975 A KR 20120116975A KR 1020127021124 A KR1020127021124 A KR 1020127021124A KR 20127021124 A KR20127021124 A KR 20127021124A KR 20120116975 A KR20120116975 A KR 20120116975A
Authority
KR
South Korea
Prior art keywords
workload
dcvs
workloads
solution
algorithm
Prior art date
Application number
KR1020127021124A
Other languages
English (en)
Inventor
노먼 에스 가르가쉬
브라이언 제이 샐스베리
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20120116975A publication Critical patent/KR20120116975A/ko

Links

Images

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

CPU (central processing unit) 에서 DCVS (dynamic clock and voltage scaling) 알고리즘을 실행하는 방법이 개시되고 CPU 활동을 모니터하는 단계 및 워크로드가 CPU 활동에 추가될 때 상기 워크로드가 특수 워크로드로 지정되는지를 결정하는 단계를 포함할 수도 있다.

Description

프로세서의 동적 제어 방법 및 시스템{SYSTEM AND METHOD OF DYNAMICALLY CONTROLLING A PROCESSOR}
관련 출원
본 출원은 2010년 1월 11일자로 출원된 발명의 명칭이 SYSTEM AND METHOD OF DYNAMICALLY CONTROLLING A PROCESSOR인 U.S. 가 특허 출원 번호 61/294,019 호에 대한 우선권을 주장하며 그의 내용은 전부 참조에 의해 원용된다.
관련 기술의 설명
휴대 컴퓨팅 디바이스 (PCD) 들은 아주 흔하다. 이들 디바이스들은 휴대 전화, PDA (portable digital assistant) 들, 휴대 게임 콘솔, 팜톱 컴퓨터, 및 다른 휴대 전자 디바이스들을 포함할 수도 있다. 이들 디바이스들의 주요 기능에 더하여, 다수는 주변 기능들을 포함한다. 예를 들면, 휴대 전화는 휴대 전화 통화를 하는 주요 기능 및 스틸 카메라, 비디오 카메라, GPS (global positioning system) 내비게이션, 웹 브라우징, 이메일 전송 및 수신, 텍스트 메시지 전송 및 수신, 푸시-투-토크 기능 등의 주변 기능을 포함할 수도 있다. 그러한 디바이스의 기능이 증가함에 따라, 그러한 기능을 지원하기 위해 요구되는 컴퓨팅 또는 프로세싱 능력 또한 증가한다. 또한 컴퓨팅 능력이 증가함에 따라, 컴퓨팅 능력을 제공하는 프로세서, 또는 프로세서들을 효율적으로 관리할 더 큰 필요성이 존재한다.
따라서, 중앙 프로세싱 유닛에서 동적 클럭 및 전압 조절 알고리즘을 실행하는 개선된 방법이 필요하다.
도면들에서, 달리 지시되지 않으면 여러 도면들 전체에 걸쳐 같은 도면 부호들은 같은 부분들을 지칭한다.
도 1은 닫힌 포지션에서의 휴대 컴퓨팅 디바이스 (PCD) 의 제 1 양태의 전방 평면도이다;
도 2는 열린 포지션에서의 PCD의 제 1 양태의 전방 평면도이다;
도 3은 PCD의 제 2 양태의 블록도이다;
도 4는 프로세싱 시스템의 블록도이다;
도 5는 중앙 프로세싱 유닛에서 동적 클럭 및 전압 스위칭 알고리즘을 실행하는 방법의 제 1 양태를 예시하는 플로우차트이다;
도 6은 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 동적 클럭 및 전압 조절 트래킹된 로드를 예시하는 제 1 그래프이다;
도 7은 중앙 프로세싱 유닛내에서 동적 클럭 및 전압 스위칭 알고리즘을 실행하는 방법의 제 2 양태를 예시하는 플로우차트이다;
도 8은 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 동적 클럭 및 전압 조절 트래킹된 로드를 예시하는 제 2 그래프이다;
도 9는 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 동적 클럭 및 전압 조절 트래킹된 로드를 예시하는 제 3 그래프이다;
도 10은 중앙 프로세싱 유닛내에서 동적 클럭 및 전압 스위칭 알고리즘을 실행하는 방법의 제 3 양태를 예시하는 플로우차트이다;
도 11은 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 동적 클럭 및 전압 조절 트래킹된 로드를 예시하는 제 4 그래프이다;
도 12는 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 동적 클럭 및 전압 조절 트래킹된 로드를 예시하는 제 5 그래프이다;
도 13은 중앙 프로세싱 유닛내에서 동적 클럭 및 전압 스위칭 알고리즘을 실행하는 방법의 제 4 양태를 예시하는 플로우차트이다;
도 14는 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 동적 클럭 및 전압 조절 트래킹된 로드를 예시하는 제 6 그래프이다;
도 15는 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 동적 클럭 및 전압 조절 트래킹된 로드를 예시하는 제 7 그래프이다.
상세한 설명
"예시적" 이라는 용어는 "예, 실례, 또는 예시의 역할을 하는 것" 을 의미하는 것으로 여기에서 사용된다. "예시적" 으로서 여기에 설명된 임의의 양태는 반드시 다른 양태들보다 바람직하거나 또는 유리한 것으로 해석될 필요는 없다.
본 명세서에서, 용어 "애플리케이션" 은 또한 오브젝트 코드, 스트립트, 바이트 코드, 마크업 언어 파일 및 패치 등의 실행 가능한 콘텐트를 갖는 파일들을 포함할 수도 있다. 또한, 여기에서 언급되는 "애플리케이션" 은 또한 열 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같은, 사실상 실행가능하지 않은 파일들을 포함할 수도 있다.
용어 "콘텐트" 는 또한 오브젝트 코드, 스트립트, 바이트 코드, 마크업 언어 파일 및 패치 등의 실행 가능한 콘텐트를 갖는 파일들을 포함할 수도 있다. 또한, 여기에서 언급되는 "콘텐트" 는 또한 열 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같은, 사실상 실행가능하지 않은 파일들을 포함할 수도 있다.
본 명세서에 사용된 바처럼, 용어 "컴포넌트", "데이터베이스", "모듈", "시스템" 등은, 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 소프트웨어 중 어느 쪽의 컴퓨터 관련 엔티티를 지칭하도록 의도된다. 예를 들면, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 실행 파일, 실행 스레드, 프로그램 및/또는 컴퓨터일 수도 있지만 이들에 한정되지는 않는다. 예시로서, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 컴퓨터 디바이스는 양쪽 모두 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수도 있고 컴포넌트는 하나의 컴퓨터 상에 로컬화될 수 있고/있거나 2개 이상의 컴퓨터들 사이에 분포될 수도 있다. 또한, 이들 컴포넌트들은, 저장된 다양한 데이터 구조들을 갖는 다양한 컴퓨터 판독가능 매체로부터 실행될 수도 있다. 컴포넌트들은, 하나 이상의 데이터 패킷들을 갖는 신호에 따라서와 같이 로컬 및/또는 원격 프로세스들에 의해 통신할 수도 있다 (예를 들면, 하나의 컴포넌트로부터 데이터는 로컬 시스템, 분산 시스템 및/또는 인터넷과 같은 네트워크를 통해 다른 시스템들에 있는 다른 컴포넌트와 신호에 의해 상호작용 한다).
처음에 도 1 및 도 2를 참조하면, 예시적인 휴대 컴퓨팅 디바이스 (PCD) 가 도시되어 있고 일반적으로 100으로 지정된다. 도시된 바처럼, PCD (100) 는 하우징 (102) 을 포함할 수도 있다. 하우징 (102) 은 상부 하우징부 (104) 와 하부 하우징부 (106) 를 포함할 수도 있다. 도 1은 상부 하우징부 (104) 가 디스플레이 (108) 를 포함할 수도 있다는 것을 보여준다. 특정 양태에서, 디스플레이 (108) 는 터치 스크린 디스플레이일 수도 있다. 상부 하우징부 (104) 는 또한 트랙볼 입력 디바이스 (110) 를 포함할 수도 있다. 도 1에 도시된 바처럼, 상부 하우징부 (104) 는 파워 온 버튼 (112) 및 파워 오프 버튼 (114) 을 포함할 수도 있다. 도 1에 도시된 바처럼, PCD (100) 의 상부 하우징부 (104) 는 복수의 표시등 (116) 및 스피커 (118) 를 포함할 수도 있다. 각 표시등 (116) 은 발광 다이오드 (LED) 일 수도 있다는 것을 예시한다.
특정 양태에서, 도 2에 도시된 바처럼, 상부 하우징부 (104) 는 하부 하우징부 (106) 에 관하여 이동가능하다. 상세하게는, 상부 하우징부 (104) 는 하부 하우징부 (106) 에 관하여 슬라이드 가능할 수도 있다. 도 2에 도시된 바처럼, 하부 하우징부 (106) 는 멀티 버튼 키보드 (120) 를 포함할 수도 있다. 특정 양태에서, 멀티 버튼 키보드 (120) 는 QWERTY 키보드일 수도 있다. 상부 하우징부 (104) 가 하부 하우징부 (106) 에 관하여 이동될 때 멀티 버튼 키보드 (120) 가 드러날 수도 있다. 도 2는 PCD (100) 가 하부 하우징부 (106) 상에 리셋 버튼 (122) 을 더 포함할 수도 있다.
도 3을 참조하면, 휴대 컴퓨팅 디바이스 (PCD) 의 예시적인, 비한정적인 양태가 도시되어 있고 일반적으로 320으로 지정된다. 도시된 바처럼, PCD (320) 는, 멀티코어 CPU (324) 를 포함하는 온칩 시스템 (322) 을 포함한다. 멀티코어 CPU (324) 는 제 0 코어 (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에 예시된 바처럼, USB (universal serial bus) 제어기 (340) 가 멀티코어 CPU (324) 에 연결된다. 또한, USB 포트 (342) 는 USB 제어기 (340) 에 연결된다. 메모리 (344) 및 SIM (subscriber identity module) 카드 (346) 가 또한 멀티코어 CPU (324) 에 연결될 수도 있다. 또한, 도 3에 도시된 바처럼, 디지털 카메라 (348) 가 멀티코어 CPU (324) 에 연결될 수도 있다. 예시적인 양태에서, 디지털 카메라 (348) 는 CCD (charge-coupled device) 카메라 또는 CMOS (complementary metal-oxide semiconductor) 카메라이다.
또한 도 3에 도시된 바처럼, 스테레오 오디오 CODEC (350) 이 멀티코어 CPU (324) 에 연결될 수도 있다. 또한, 오디오 증폭기 (352) 는 스테레오 오디오 CODEC (350) 에 연결될 수도 있다. 예시적인 양태에서, 제 1 스테레오 스피커 (354) 및 제 2 스테레오 스피커 (356) 는 오디오 증폭기 (352) 에 연결된다. 도 3은, 마이크로폰 증폭기 (358) 가 또한 스테레오 오디오 CODEC (350) 에 연결될 수도 있다는 것을 보여준다. 또한, 마이크로폰 (360) 은 마이크로폰 증폭기 (358) 에 연결될 수도 있다. 특정 양태에서, FM (frequency modulation) 라디오 튜너 (362) 가 스테레오 오디오 CODEC (350) 에 연결될 수도 있다. 또한, FM 안테나 (364) 는 FM 라디오 튜너 (362) 에 연결된다. 또한, 스테레오 헤드폰 (366) 은 스테레오 오디오 CODEC (350) 에 연결될 수도 있다.
또한 도 3은 FM (frequency modulation) 송수신기 (368) 가 멀티코어 CPU (324) 에 연결될 수도 있다는 것을 표시한다. RF 스위치 (370) 는 RF 송수신기 (368) 및 RF 안테나 (372) 에 연결될 수도 있다. 도 3에 도시된 바처럼, 키패드 (374) 가 멀티코어 CPU (324) 에 연결될 수도 있다. 또한, 마이크로폰 (376) 을 지닌 모노 헤드셋이 멀티코어 CPU (324) 에 연결될 수도 있다. 또한, 진동기 디바이스 (378) 가 멀티코어 CPU (324) 에 연결될 수도 있다. 도 3은, 전원 (380) 이 온칩 시스템 (322) 에 연결될 수도 있다는 것을 보여준다. 특정 양태에서, 전원 (380) 은, 전력을 필요로 하는 PCD (320) 의 다양한 컴포넌트들에 전력을 제공하는 DC (direct current) 전원이다. 또한, 특정 양태에서, 전원은, AC 전원에 접속된 AC (alternating current) DC 변환기로부터 도출되는 DC 전원 또는 재충전가능한 DC 배터리이다.
도 3은 PCD (320) 가, 데이터 네트워크, 예를 들면, 로컬 영역 네트워크, 개인 영역 네트워크 또는 임의의 다른 네트워크에 액세스하기 위해 사용될 수도 있는 네트워크 카드 (388) 를 포함할 수도 있다. 네트워크 카드 (388) 는 Bluetooth 네트워크 카드, WiFi 네트워크 카드, PAN (personal area network) 카드, PeANUT (personal area network ultra-low-power technology) 네트워크 카드, 또는 당해 기술분야에서 잘 알려진 임의의 다른 네트워크 카드일 수도 있다. 또한, 네트워크 카드 (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) 또는 이들의 조합은 워크로드의 타입에 기초하여 중앙 프로세싱 유닛 내에서 동적 클럭 및 전압 스위칭 알고리즘을 실행하기 위하여 여기에 기재된 방법 단계들 중 하나 이상을 실행하기 위한 수단으로서 기능할 수도 있다.
도 4를 참조하면, 프로세싱 시스템이 도시되어 있고 일반적으로 400으로 지정된다. 특정 양태에서, 프로세싱 시스템 (400) 은 도 3과 함께 위에서 설명된 PCD (320) 에 포함될 수도 있다. 도시된 바처럼, 프로세싱 시스템 (400) 은 멀티코어 CPU (central processing unit) (402) 및 그 멀티코어 CPU (402) 에 접속된 메모리 (404) 를 포함할 수도 있다. 멀티코어 CPU (402) 는 제 0 코어 (410), 제 1 코어 (412), 및 제 N 코어 (414) 를 포함할 수도 있다. 제 0 코어 (410) 는 그에서 실행되는 제 0 DCVS (dynamic clock and voltage scaling) 알고리즘 (416) 을 포함할 수도 있다. 제 1 코어 (412) 는 그에서 실행되는 제 1 DCVS 알고리즘 (417) 을 포함할 수도 있다. 또한, 제 N 코어 (414) 는 그에서 실행되는 제 N DCVS 알고리즘 (418) 을 포함할 수도 있다. 특정 양태에서, 각 DCVS 알고리즘 (416, 417, 418) 은 각각의 코어 (412, 414, 416) 상에서 독립적으로 실행될 수도 있다.
또한, 예시된 바처럼, 메모리 (404) 는 그에 저장된 운영 시스템 (420) 을 포함할 수도 있다. 운영 시스템 (420) 은 스케쥴러 (422) 를 포함할 수도 있고 스케쥴러 (422) 는 제 1 실행 큐 (424), 제 2 실행 큐 (426) 및 제 N 실행 큐 (428) 를 포함할 수도 있다. 메모리 (404) 는 또한 그에 저장된 제 1 애플리케이션 (430), 제 2 애플리케이션 (432), 및 제 N 애플리케이션 (434) 을 포함할 수도 있다.
특정 양태에서, 애플리케이션들 (430, 432, 434) 은 하나 이상의 태스크 (436) 를 운영 시스템 (420) 에 전송하여 멀티코어 CPU (402) 내의 코어들 (410, 412, 414) 에서 프로세싱되게 할 수도 있다. 태스크 (436) 는 싱글 태스크, 스레드 또는 이들의 조합으로서 프로세싱되거나 또는 실행될 수도 있다. 또한, 스케쥴러 (422) 는 멀티코어 CPU (402) 내의 실행을 위해 태스크, 스레드 또는 이들의 조합을 스케쥴할 수도 있다. 또한, 스케쥴러 (422) 는 실행 큐 (424, 426, 428) 내에 태스크, 스레드 또는 이들의 조합을 둘 수도 있다. 코어들 (410, 412, 414) 은 태스크, 스레드 또는 이들의 조합을 실행 큐들 (424, 426, 428) 로부터 명령된 대로, 예를 들면, 코어들 (410, 412, 414) 에서 그러한 태스크들 및 스레드들의 프로세싱 또는 실행을 위해 운영 시스템 (420) 에 의해 취출 (retrieve) 할 수도 있다.
도 4는 또한 메모리 (404) 가 그에 저장된 제어기 (440) 를 포함할 수도 있다는 것을 보여준다. 제어기 (440) 는 운영 시스템 (420) 및 멀티 코어 CPU (402) 에 접속될 수도 있다. 특히, 병렬처리 모니터 (parallelism monitor; 440) 는 운영 시스템 (420) 내의 스케쥴러 (422) 에 접속될 수도 있다. 여기에 설명된 바처럼, 제어기 (440) 는 코어들 (410, 412, 414) 상의 워크로드들을 모니터할 수도 있고 제어기 (440) 는 DCVS 알고리즘 (416, 417, 418) 을 그들 각각의 코어 (412, 414, 416) 에서 실행하거나 또는 실행되게 할 수도 있다.
특정 양태에서, 제어기 (440) 는 소프트웨어 프로그램일 수도 있다. 하지만, 대안의 양태에서, 제어기 (440) 는 메모리 (404) 외부에 있는 하드웨어 제어기일 수도 있다. 어느 한쪽의 경우에서, 제어기 (440), 메모리 (404), 코어들 (410, 412, 414) 또는 이들의 임의의 조합은 워크로드의 타입에 기초하여 중앙 프로세싱 유닛 내의 동적 클럭 및 전압 스위칭 알고리즘을 실행하기 위하여 여기에 기재된 방법 단계들 중 하나 이상을 실행하기 위한 수단으로서 기능할 수도 있다.
이제 도 5를 참조하면, DCVS (dynamic clock and voltage scaling) 알고리즘을 실행하는 방법의 제 1 양태가 도시되어 있고 일반적으로 500으로 지정된다. 방법 (500) 은 do 루프 (do loop) 로 블록 (502) 에서 시작하고 여기서 디바이스가 파워 온 될 때 다음 단계들이 수행될 수도 있다. 블록 (504) 에서, 제어기는 CPU 활동을 모니터할 수도 있다. 이 활동은 단일 코어 CPU, 멀티코어 CPU, 다수의 단일 코어 CPU, 다수의 멀티코어 CPU 또는 이들의 조합의 활동일 수도 있다. 또한, 제어기는 소프트웨어 제어기, 하드웨어 제어기, 또는 이들의 조합일 수도 있다.
판정 (506) 에서, 제어기는 워크로드가 추가되는지 결정할 수도 있다. 워크로드는 비디오 애플리케이션, 오디오 애플리케이션, 이메일 애플리케이션, 무선 네트워크 애플리케이션, 셀룰러 네트워크 애플리케이션, SMS (short message service) 애플리케이션, 통신 애플리케이션, 보안 애플리케이션, 캘린더 애플리케이션, 인스턴트 메시징 애플리케이션, 스틸 카메라 애플리케이션, GPS (global positioning system) 애플리케이션, 브라우저 애플리케이션, 메모 패드 애플리케이션, 클럭 애플리케이션, 게임 애플리케이션, 계산기 애플리케이션, 뱅킹 애플리케이션, 패스워드 키퍼 애플리케이션, 헬프 애플리케이션, 전자상거래 애플리케이션, 소프트웨어 전달 애플리케이션, 검색 애플리케이션, 옵션 애플리케이션, 셋업 애플리케이션, 전화 애플리케이션, 접속 관리 애플리케이션, 보안 애플리케이션, 임의의 다른 애플리케이션 또는 이들의 조합일 수도 있다.
특정 양태에서, 판정 (506) 에서 워크로드가 추가되지 않으면, 방법 (500) 은 블록 (504) 으로 복귀하고 방법 (500) 는 여기에 기재된 대로 계속될 수도 있다. 그와 달리, 판정 (506) 에서, 워크로드가 추가되면, 방법 (500) 은 판정 (508) 으로 계속될 수도 있고 제어기는 워크로드가 특수 워크로드, 즉 DCVS 알고리즘에 의해 상이한 처리를 보증 (warrant) 할 수도 있는 타입의 워크로드인지를 결정할 수도 있다. 특수 워크로드는 임펄스 워크로드, 등록된 워크로드, 등시성 워크로드, 펄스형 워크로드, 최선 노력 (best effort) 워크로드, 스케쥴된 워크로드, 또는 이들의 조합일 수도 있다. 제어기는 워크로드로부터 수신된 입력에 기초하여 워크로드가 특수 워크로드인지를 결정할 수도 있다.
판정 (508) 에서, 워크로드가 특수하지 않으면, 방법 (500) 은 블록 (510) 으로 진행하고 제어기는 미변경 DCVS 알고리즘을 실행할 수도 있다. 그 후에, 방법 (500) 은 판정 (512) 으로 이동할 수도 있고 제어기는 디바이스가 파워 오프되는지를 결정할 수도 있다. 디바이스가 파워 오프되지 않으면, 디바이스는 온 상태로 남고, 방법 (500) 은 블록 (504) 으로 복귀할 수도 있고 방법 (500) 은 여기에 기재된 대로 계속될 수도 있다. 그와 달리, 디바이스가 파워 오프되면, 방법 (500) 은 종료될 수도 있다.
판정 (508) 으로 복귀하여, 워크로드가 특수 워크로드이면, 방법 (500) 은 블록 (513) 으로 계속될 수도 있고 제어기는 특수 워크로드를 위한 등록 (registration) 을 수신할 수도 있다. 블록 (514) 에서, 제어기는 특수 워크로드에 고유 식별자를 할당할 수도 있다. 다음으로, 판정 (516) 에서, 제어기는 DCVS 솔루션이 워크로드와 연관되는지, 즉 DCVS 알고리즘에 대한 수정 또는 변경이 워크로드와 연관되는지를 결정할 수도 있다. 워크로드는 워크로드와 연관된 타입 및 워크로드와 연관된 솔루션을 표시할 수도 있다.
DCVS 솔루션이 특수 워크로드와 연관되면, 방법 (500) 은 블록 (518) 으로 진행될 수도 있고 제어기는 특수 워크로드와 연관된 솔루션에 기초하여 DCVS 알고리즘을 자동적으로 리튜닝 (retuning) 할 수도 있다. 다음으로, 블록 (520) 에서, 제어기는 리튜닝된 DCVS 알고리즘을 실행할 수도 있다. 다음으로, 방법 (500) 은 판정 (512) 으로 이동할 수도 있고 방법 (500) 은 여기에 기재된 대로 계속될 수도 있다.
판정 (516) 으로 복귀하여, 특수 워크로드와 연관된 DCVS 솔루션이 존재하지 않으면, 방법 (500) 은 판정 (522) 으로 진행될 수도 있고 제어기는 새로운 솔루션을 생성할지를 결정할 수도 있다. 예를 들면, 제어기는 워크로드가 미리결정된 솔루션을 갖는지를 결정하기 위하여 워크로드에 질의 (query) 할 수도 있다. 그렇다면, 제어기는 그 솔루션을 구현할 수도 있다. 다르게는, 제어기는 특수 워크로드 요건 (workload requirement) 에 대해 워크로드에 질의할 수도 있고 제어기는 워크로드의 요건들에 기초하여 워크로드를 위한 새로운 솔루션을 생성할 수도 있다. 워크로드 요건들은, 예를 들면, MIPS (millions of instructions per second) 단위로 표현될 수도 있다. 다른 양태에서, 워크로드 요건은 주파수, 예를 들면, 킬로헤르츠 값 (kHz), 메가헤르츠 (MHz) 값, 기가헤르츠 (GHz) 값 등으로서 표현될 수도 있다. 또 다른 양태에서, 워크로드 요건은 데이터 전송 레이트, 예를 들면, 초당 킬로비트 (KB/S), 초당 메가비트 (MB/S), 초당 기가비트 (GB/S) 또는 이들의 조합으로서 표현될 수도 있다. 워크로드 요건들은 또한 응답도 값을 포함할 수도 있다. 응답도는 시스템 설정의 변화율 (rate of change) 일 수도 있다. 예를 들면, 응답도는 CPU 주파수의 변화율, 전압의 변화율, 또는 이들의 조합일 수도 있다. 또한, 응답도는 밀리초 단위로 표현되는 최대 지연, 밀리초당 주파수로 표현되는 CPU 회전율 한계 (slew rate bound) (MHz/ms), 또는 이들의 조합일 수도 있다. 또한, 워크로드 요건들은 선행하는 워크로드 요건들의 임의의 조합을 포함할 수도 있다.
판정 (522) 에서, 제어기가 새로운 솔루션을 생성하는 것을 결정하지 않으면, 방법 (500) 은 블록 (510) 으로 진행하고 방법 (500) 은 여기에 기재된 대로 계속될 수도 있다. 그와 달리, 제어기가 새로운 솔루션을 생성하는 것을 결정하면, 방법 (500) 은 블록 (524) 으로 이동할 수도 있고 제어기는, 예를 들면 현재 워크로드로부터 수신된 하나 이상의 워크로드 요건들에 기초하여 현재 워크로드에 대한 새로운 솔루션을 생성할 수도 있다. 다음으로, 블록 (526) 에서, 제어기는 연관된 테이블 또는 데이터베이스에 새로운 솔루션을 저장할 수도 있다. 솔루션은 워크로드와 연관된 고유 식별자와 함께 저장될 수도 있다. 다음으로, 방법 (500) 은 블록 (518) 으로 이동할 수도 있고 방법 (500) 은 여기에 기재된 대로 계속될 수도 있다.
도 6은 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 동적 클럭 및 전압 조절 트래킹된 로드의, 일반적으로 600으로 지정된 제 1 그래프를 예시한다. 도시된 바처럼, 그래프 (600) 는, 워크로드 표시자 (602) 및 DCVS 트래킹된 로드 표시자 (604) 를 포함한다. 도시된 바처럼, 워크로드 표시자 (602) 는 제 1 비지 사이클 (606) 및 제 2 비지 사이클 (608) 을 포함할 수도 있다. 제 1 비지 사이클 (606) 및 제 2 비지 사이클 (608) 에 포함된 워크로드의 타입들이 특수한 것으로 결정되고 특수한 워크로드들이 그들을 DCVS 알고리즘의 실행에서 면제시키는, 그들과 연관된 DCVS 솔루션을 가지면, DCVS 트래킹된 로드 표시자 (604) 는 제 1 비지 사이클 (606) 및 제 2 비지 사이클 (608) 을 통해 도시된 바처럼 상대적으로 평탄한 (flat) 상태로 남을 수도 있다. 워크로드들이 특수하지 않거나 그와 연관된 솔루션들을 갖지 않으면, 파선에 의해 표시된 바처럼 DCVS 트래킹된 로드 표시자 (604) 는 제 1 비지 사이클 (606) 및 제 2 비지 사이클 (608) 을 트래킹할 수도 있다.
도 6에 도시된 바처럼, 복수의 동작 표시자 (610) 들이 특수 워크로드의 특수 처리를 트리거 (trigger) 하기 위해 사용될 수도 있다. 동작 표시자 (610) 들은 시작 솔루션, 정지 솔루션, 또는 이들의 조합을 포함할 수도 있다.
이제 도 7을 참조하면, DCVS (dynamic clock and voltage scaling) 알고리즘을 실행하는 방법의 제 2 양태가 도시되어 있고 일반적으로 700으로 지정된다. 방법 (700) 은 do 루프 (do loop) 로 블록 (702) 에서 시작하고 여기서 디바이스가 파워 온 될 때 다음 단계들이 수행될 수도 있다. 블록 (704) 에서, 제어기는 CPU 활동을 모니터할 수도 있다. 이 활동은 단일 코어 CPU, 멀티코어 CPU, 다수의 단일 코어 CPU, 다수의 멀티코어 CPU 또는 이들의 조합의 활동일 수도 있다. 또한, 제어기는 소프트웨어 제어기, 하드웨어 제어기, 또는 이들의 조합일 수도 있다.
판정 (708) 에서, 제어기는 워크로드가 추가되는지 결정할 수도 있다. 워크로드는 비디오 애플리케이션, 오디오 애플리케이션, 이메일 애플리케이션, 무선 네트워크 애플리케이션, 셀룰러 네트워크 애플리케이션, SMS (short message service) 애플리케이션, 통신 애플리케이션, 보안 애플리케이션, 캘린더 애플리케이션, 인스턴트 메시징 애플리케이션, 스틸 카메라 애플리케이션, GPS (global positioning system) 애플리케이션, 브라우저 애플리케이션, 메모 패드 애플리케이션, 클럭 애플리케이션, 게임 애플리케이션, 계산기 애플리케이션, 뱅킹 애플리케이션, 패스워드 키퍼 애플리케이션, 헬프 애플리케이션, 전자상거래 애플리케이션, 소프트웨어 전달 애플리케이션, 검색 애플리케이션, 옵션 애플리케이션, 셋업 애플리케이션, 전화 애플리케이션, 접속 관리 애플리케이션, 보안 애플리케이션, 임의의 다른 애플리케이션 또는 이들의 조합일 수도 있다.
특정 양태에서, 판정 (706) 에서 워크로드가 추가되지 않으면, 방법 (700) 은 블록 (704) 으로 복귀하고 방법 (700) 는 여기에 기재된 대로 계속될 수도 있다. 그와 달리, 판정 (706) 에서, 워크로드가 추가되면, 방법 (700) 은 판정 (708) 로 계속될 수도 있고, 제어기는 워크로드가 임펄스 워크로드인지를 결정할 수도 있다. 임펄스 워크로드는 키 누름 이벤트 (key press event), 터치스크린 이벤트, 또 다른 임펄스 타입 이벤트 또는 이들의 조합일 수도 있다. 또한, 임펄스 워크로드는 잘 알려진 시작 포인트를 가질 수도 있지만, 잘 알려진 종료, 및 잘 알려진 로드를 갖지 않을 수도 있다. DCVS 알고리즘의 응답은 각 임펄스 워크로드의 세부사항들에 의존할 수도 있다. 예를 들면, DCVS는 전체 성능으로 점프하는 것에 의해 키패드 이벤트에 응답할 수도 있지만, 터치스크린 이벤트는 전체 성능 응답을 요구하지 않을 수도 있다.
판정 (708) 에서, 워크로드가 임펄스 워크로드가 아니면, 방법 (700) 은 블록 (710) 으로 이동할 수도 있고 제어기는 표준, 즉 미변경 DCVS 알고리즘을 실행할 수도 있다. 그 후에, 방법 (700) 은 블록 (704) 으로 복귀할 수도 있고 방법 (700) 은 여기에 기재된 대로 계속될 수도 있다.
판정 (708) 으로 복귀하여, 추가된 워크로드가 임펄스 워크로드이면, 방법 (700) 은 블록 (712) 으로 진행될 수도 있고 제어기는 추가된 워크로드와 연관된 고유 식별자를 할당할 수도 있다. 다음으로, 판정 (714) 에서, 제어기는 워크로드와 연관된 CPU 주파수가 존재하는지를 결정할 수도 있다. CPU 주파수는 워크로드와 연관된 이력 값 (historical value) 들로부터 결정될 수도 있다. 이력 값들은 워크로드와 연관된 제어기에 저장될 수도 있다.
워크로드와 연관된 CPU 주파수가 존재하면, 방법 (700) 은 블록 (716) 으로 계속될 수도 있고 제어기는, 예를 들면, 등록 및 미등록인, 임의의 동시성 워크로드들과 새로운 워크로드를 집합할 수도 있다. 예를 들면, 임펄스와 연관된 100 MIPS의 로드와 50 MIPS의 다른 로드가 존재하면, 제어기는 150 MIPS로 점프한다. 다음으로, 블록 (717) 에서, 제어기가 집합된 CPU 주파수로 점프할 수도 있다. 그 후에, 블록 (718) 에서, 제어기는 현재 CPU 주파수로부터 DCVS 알고리즘을 실행할 수도 있다. 판정 (720) 으로 이동하여, 제어기는 디바이스가 파워 오프되는지를 결정할 수도 있다. 디바이스가 파워 오프되지 않으면, 방법 (700) 은 블록 (704) 으로 복귀할 수도 있고 방법 (700) 은 여기에 기재된 대로 계속될 수도 있다. 그와 달리, 판정 (720) 에서, 디바이스가 파워 오프되면, 방법 (700) 은 종료될 수도 있다.
판정 (714) 로 복귀하여, 제어기가 추가된 워크로드와 연관된 데이터베이스에서 CPU 주파수를 찾지 못하면, 방법 (700) 은 블록 (722) 으로 이동할 수도 있다. 블록 (722) 에서, 제어기가 최대 CPU 주파수로 점프할 수도 있다. 다음으로, 블록 (724) 에서, 제어기가 최대 주파수로부터 DCVS 알고리즘을 실행할 수도 있고 DCVS 알고리즘을 사용하여, 제어기가, 워크로드에 대하여 올바르거나 또는 적절한 주파수 값이 찾아질 때까지 CPU 주파수를 스텝 다운 (step down) 할 수도 있다. 블록 (726) 에서, 제어기는 주파수를 저장할 수도 있다. 다음으로, 방법 (700) 은 판정 (720) 으로 이동할 수도 있고 방법 (700) 은 여기에 기재된 대로 계속될 수도 있다.
도 8은 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 DCVS 응답의, 일반적으로 800으로 지정되는 제 2 그래프를 예시한다. 도시된 바처럼, 그래프 (800) 는, 워크로드 표시자 (802) 및 DCVS 응답 표시자 (804) 를 포함할 수도 있다. 도시된 바처럼, 워크로드 표시자 (802) 는 임펄스 이벤트로 시작하는 제 1 비지 사이클 (806) 을 포함할 수도 있다. DCVS 응답 표시자 (804) 는 비지 사이클을 밀접하게 트래킹하는 DCVS 응답 (808) 을 포함할 수도 있다. DCVS 응답 (808) 은 임펄스 이벤트와 연관된 알려진 주파수, 또는 최대 CPU 주파수로 점프할 수도 있다. 그 후에, DCVS 응답 (808) 은 DCVS 알고리즘이 실행됨에 따라 도 8에서 도시된 바처럼 감소할 수도 있다.
도 9는 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드 및 DCVS 응답의, 일반적으로 900으로 지정되는 제 3 그래프를 예시한다. 도시된 바처럼, 그래프 (900) 는, 워크로드 표시자 (902) 및 DCVS 응답 표시자 (904) 를 포함할 수도 있다. 도시된 바처럼, 워크로드 표시자 (902) 는 제 1 비지 사이클 (906) 및 제 2 비지 사이클 (908) 을 포함할 수도 있다. 각 비지 사이클 (906, 908) 은 임펄스 이벤트로 시작할 수도 있다.
DCVS 응답 표시자 (904) 는 제 1 DCVS 응답 (910) 및 제 2 DCVS 응답 (912) 을 포함할 수도 있다. 제 1 DCVS 응답 (910) 은 워크로드와 연관된 이력 정보를 사용하지 않는 응답이다. 도시된 바처럼, 제 1 DCVS 응답 (910) 은 최대 CPU 주파수로 점프한다. 그 후에, 제 1 DCVS 응답 (910) 은 DCVS 알고리즘이 실행됨에 따라 감소할 수도 있다.
제 2 DCVS 응답 (912) 은 워크로드와 연관된 이력 정보를 이용하는 응답이다. 도시된 바처럼, 제 2 DCVS 응답 (912) 은 워크로드와 이전에 연관된 요구를 충족하거나 또는 약간 초과하는 CPU 주파수로 점프한다. 그 후에, 제 2 DCVS 응답 (912) 은 DCVS 알고리즘이 실행됨에 따라 감소할 수도 있다. 도시된 바처럼, DCVS 문제 공간으로부터 높은 응답도 이벤트들을 제거하는 것은, 낮은 응답도 동작들 동안 보다 낮은 전력을 허용하는 한편, 높은 응답도 동작들에 더 좋은 성능을 제공하고 그러한 같은 동작들에 대해 전력 절약을 가능하게 한다.
특정 양태에서, 임펄스 밀도는 워크로드 표시자로서 사용될 수도 있다. 예를 들면, DCVS가 충분히 서로 밀접하게 일어나는 단일 소스로부터 임펄스들을 무시할 수도 있기 때문에, 서로 밀접한 임펄스들을 갖는 것은, DCVS 응답을 억제할 수도 있다. 다르게는, 밀한 임펄스 트레인 (dense impulse train) 을 갖는 것은 더 큰 워크로드를 내포할 수도 있고 DCVS를 강화할 수도 있다. 특정 양태에서, 밀접 (close) 은 워크로드 특정적 (workload specific) 일 수도 있다.
이제 도 10을 참조하면, DCVS (dynamic clock and voltage scaling) 알고리즘을 실행하는 방법의 제 3 양태가 도시되어 있고 일반적으로 1000으로 지정된다. 방법 (1000) 은 do 루프 (do loop) 로 블록 (1002) 에서 시작하고 여기서 디바이스가 파워 온 될 때 다음 단계들이 수행될 수도 있다. 블록 (1004) 에서, 제어기는 CPU 활동을 모니터할 수도 있다. 이 활동은 단일 코어 CPU, 멀티코어 CPU, 다수의 단일 코어 CPU, 다수의 멀티코어 CPU 또는 이들의 조합의 활동일 수도 있다. 또한, 제어기는 소프트웨어 제어기, 하드웨어 제어기, 또는 이들의 조합일 수도 있다.
판정 (1008) 에서, 제어기는 워크로드가 추가되는지 결정할 수도 있다. 워크로드는 비디오 애플리케이션, 오디오 애플리케이션, 이메일 애플리케이션, 무선 네트워크 애플리케이션, 셀룰러 네트워크 애플리케이션, SMS (short message service) 애플리케이션, 통신 애플리케이션, 보안 애플리케이션, 캘린더 애플리케이션, 인스턴트 메시징 애플리케이션, 스틸 카메라 애플리케이션, GPS (global positioning system) 애플리케이션, 브라우저 애플리케이션, 메모 패드 애플리케이션, 클럭 애플리케이션, 게임 애플리케이션, 계산기 애플리케이션, 뱅킹 애플리케이션, 패스워드 키퍼 애플리케이션, 헬프 애플리케이션, 전자상거래 애플리케이션, 소프트웨어 전달 애플리케이션, 검색 애플리케이션, 옵션 애플리케이션, 셋업 애플리케이션, 전화 애플리케이션, 접속 관리 애플리케이션, 보안 애플리케이션, 임의의 다른 애플리케이션 또는 이들의 조합일 수도 있다.
특정 양태에서, 판정 (1006) 에서 워크로드가 추가되지 않으면, 방법 (1000) 은 블록 (1004) 으로 복귀하고 방법 (1000) 는 여기에 기재된 대로 계속될 수도 있다. 그와 달리, 판정 (1006) 에서, 워크로드가 추가되면, 방법 (1000) 은 판정 (1008) 으로 계속될 수도 있고, 제어기는 워크로드에 대한 최소 CPU 요건이 수신되었는지, 즉 워크로드가 특정 요건으로 등록된 워크로드인지를 결정할 수도 있다. 최소 CPU 요건이 수신되지 않으면, 방법 (1000) 은 블록 (1010) 으로 진행될 수도 있고 제어기는, 표준 DCVS 알고리즘을 실행하거나 또는 실행하게 할 수도 있다. 그 후에, 방법 (1000) 은 판정 (1012) 로 이동할 수도 있다. 판정 (1012) 에서, 제어기는 디바이스가 파워 오프되는지를 결정할 수도 있다. 디바이스가 파워 오프되지 않으면, 방법 (1000) 은 블록 (1004) 으로 복귀할 수도 있고 방법 (1000) 은 여기에 기재된 대로 계속될 수도 있다.
1008 로 복귀하여, 최소 CPU 요건이 워크로드로부터 수신되면, 방법 (1000) 은 블록 (1014) 으로 계속될 수도 있다. 블록 (1014) 에서, 제어기는 워크로드로부터 수신된 최소 CPU 요건으로 점프할 수도 있다. 다음으로, 블록 (1016) 에서, 제어기는 DCVS가 워크로드에 대해 실행되지 않게 할 수도 있다. 다른 말로, 제어기는 추가된 워크로드를 워크로드에 대한 DCVS 알고리즘의 실행에서 면제할 수도 있다. 그러면, 방법 (1000) 은 판정 (1012) 으로 계속되고 여기에 기재된 대로 계속될 수도 있다.
도 11은 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드, DCVS 응답 및 CPU 응답의, 일반적으로 1100으로 지정되는 제 4 그래프를 예시한다. 도시된 바처럼, 그래프 (1100) 는, 워크로드 표시자 (1102), DCVS 응답 표시자 (1104) 및 CPU 응답 표시자 (1106) 를 포함할 수도 있다. 도시된 바처럼, 워크로드 표시자 (1102) 는 비지 사이클 (1108) 을 포함할 수도 있다. CPU 응답 표시자 (1106) 는 CPU가 최소 성능 요구에 대한 요청에 응답할 수도 있다는 것을 보여준다. DCVS 응답 표시자 (1104) 는 DCVS 알고리즘이 워크로드를 무시할 수도 있다는 것을 보여준다.
예를 들면, 워크로드, 태스크 또는 이벤트는 일 백 (100) MIPS 의 프로세싱을 요청하고, DCVS 알고리즘이 일 백 (100) MIPS 만큼 CPU 로드 증가를 동시에 겪게되면, DCVS 알고리즘은 요청되지 않은 태스크들의 변화가 없었다는 것을 추론할 수도 있다. 이것은 DCVS 알고리즘이 CPU 사용에서 잘못된 스파이크 (false spike) 를 회피하는 것을 가능하게 할 수도 있다. 그러한 경우에, CPU 응답은 워크로드에 응답할 DCVS를 갖지 않고서 성능 임계 리딩 영역 (performance critical leading region) 및 파워 임계 트레일링 영역 (power critical trailing region) 에 대한 워크로드를 트래킹할 수도 있다.
도 12는 시간에 대하여 플롯된 중앙 프로세싱 유닛에 대한 워크로드, DCVS 응답 및 CPU 응답의, 일반적으로 1200으로 지정되는 제 5 그래프를 예시한다. 도시된 바처럼, 그래프 (1200) 는, 워크로드 표시자 (1202), DCVS 응답 표시자 (1204) 및 CPU 표시자 (1206) 를 포함할 수도 있다. 도시된 바처럼, 워크로드 표시자 (1202) 는 등록 워크로드 (1208) 및 미등록 워크로드 (1210) 를 포함할 수도 있다. 등록 워크로드 (1208) 가 일어날 때 CPU 표시자 (1206) 는 CPU가 제 1 CPU 응답 (1212) 을 가질 수도 있다는 것을 보여주는 한편, DCVS 표시자 (1204) 는 DCVS 알고리즘이 응답을 갖지 않는다는 것을 보여줄 수도 있다. 미등록 워크로드 (1210) 가 일어날 때, CPU 표시자 (1206) 는 제 2 CPU 응답 (1214) 을 보여주고 DCVS 표시자 (1204) 는 DCVS 응답 (1216) 을 보여준다. DCVS 알고리즘에 등록 워크로드 (1208) 의 요건들이 알려질 수도 있기 때문에, DCVS 알고리즘은 등록된 워크로드 (1208) 에 의해 유도된 임의의 변화들에 응답하지 않고서 미등록 워크로드 (1210) 를 트래킹할 수도 있다.
도 13을 참조하면, DCVS (dynamic clock and voltage scaling) 알고리즘을 실행하는 방법의 제 1 양태가 도시되어 있고 일반적으로 1300으로 지정된다. 방법 (1300) 은 do 루프 (do loop) 로 블록 (1302) 에서 시작하고 여기서 디바이스가 파워 온 될 때 다음 단계들이 수행될 수도 있다. 블록 (1304) 에서, 제어기는 CPU 활동을 모니터할 수도 있다. 이 활동은 단일 코어 CPU, 멀티코어 CPU, 다수의 단일 코어 CPU, 다수의 멀티코어 CPU 또는 이들의 조합의 활동일 수도 있다. 또한, 제어기는 소프트웨어 제어기, 하드웨어 제어기, 또는 이들의 조합일 수도 있다.
판정 (1308) 에서, 제어기는 워크로드가 추가되는지 결정할 수도 있다. 워크로드는 비디오 애플리케이션, 오디오 애플리케이션, 이메일 애플리케이션, 무선 네트워크 애플리케이션, 셀룰러 네트워크 애플리케이션, SMS (short message service) 애플리케이션, 통신 애플리케이션, 보안 애플리케이션, 캘린더 애플리케이션, 인스턴트 메시징 애플리케이션, 스틸 카메라 애플리케이션, GPS (global positioning system) 애플리케이션, 브라우저 애플리케이션, 메모 패드 애플리케이션, 클럭 애플리케이션, 게임 애플리케이션, 계산기 애플리케이션, 뱅킹 애플리케이션, 패스워드 키퍼 애플리케이션, 헬프 애플리케이션, 전자상거래 애플리케이션, 소프트웨어 전달 애플리케이션, 검색 애플리케이션, 옵션 애플리케이션, 셋업 애플리케이션, 전화 애플리케이션, 접속 관리 애플리케이션, 보안 애플리케이션, 임의의 다른 애플리케이션 또는 이들의 조합일 수도 있다.
특정 양태에서, 판정 (1306) 에서 워크로드가 추가되지 않으면, 방법 (1300) 은 블록 (1304) 으로 복귀하고 방법 (1300) 는 여기에 기재된 대로 계속될 수도 있다. 그와 달리, 판정 (1306) 에서, 워크로드가 추가되면, 방법 (1300) 은 판정 (1307) 로 계속될 수도 있고, 제어기는 워크로드가 등시성 워크로드인지를 결정할 수도 있다. 등시성 워크로드는 실질적으로 규칙적인 지속기간에 일어나는 워크로드일 수도 있다. 다르게는, 등시성 워크로드는 실질적 규칙적인 지속기간에 실질적으로 규칙적인 인터벌 (interval) 로 일어나는 워크로드일 수도 있다.
워크로드가 등시성이 아니면, 방법 (1300) 은 블록 (1304) 으로 복귀할 수도 있고 방법 (1300) 은 여기에 기재된 대로 계속될 수도 있다. 워크로드가 등시성이면, 방법 (1300) 은 블록 (1308) 으로 진행할 수도 있다. 블록 (1308) 에서, 제어기는 워크 인터벌이 시작되었다는 표시를 수신할 수도 있다. 또한, 블록 (1310) 에서, 제어기는 워크로드로부터 제안된 CPU 설정을 수신할 수도 있다. 다음으로, 블록 (1312) 에서, 제어기는 워크로드의 완료를 위한 데드라인을 수신할 수도 있다.
판정 (1314) 으로 이동하여, 제어기는 이력 설정이 워크로드에 대해 이용가능한지를 결정할 수도 있다. 그렇다면, 방법 (1300) 은 블록 (1316) 으로 진행될 수도 있고 제어기는 데드라인, 제안된 CPU 설정 및 이력 설정에 기초하여 CPU 설정, 예를 들면, 주파수, 전압 등을 결정할 수도 있다. 다음으로, 블록 (1318) 에서, 워크가 종결할 때, 제어기는 워크를 완료하는데 요구되는 주파수 및 시간 길이를 저장한다. 이것은 제어기로 하여금 워크로드에 적응하고 후속 워크로드 요청에 대해 정보를 사용하는 것을 허용할 수도 있다. 다른 말로, 이것은 제어기에 의한 적응적 학습 (adaptive learning) 을 허용한다.
다음으로, 방법 (1300) 은 판정 (1320) 으로 이동할 수도 있고 제어기는 디바이스가 파워 오프되는지를 결정할 수도 있다. 디바이스가 파워 오프되지 않으면, 방법 (400) 은 블록 (1304) 으로 복귀할 수도 있고 방법 (1300) 은 여기에 기재된 대로 계속될 수도 있다. 그와 달리, 디바이스가 파워 오프되면, 방법 (1300) 은 종료될 수도 있다.
판정 (1314) 으로 복귀하여, 제어기가 워크로드에 대한 이력 설정을 갖지 않으면, 방법 (1300) 은 블록 (1322) 으로 진행될 수도 있고 제어기는 데드라인 및 제안된 CPU 설정에 기초하여 하나 이상의 CPU 설정들을 결정할 수도 있다. 그 후에, 방법 (1300) 은 블록 (1318) 으로 진행될 수도 있고 방법 (1300) 은 여기에 기재된 대로 계속될 수도 있다.
특정 유즈 케이스 (use case) 에서 워크가 대체로 인터벌에서 인터벌로 반복가능하면, 다음 인터벌에서 필요할 워크의 량을 예측하기 위하여 이전 워크 인터벌들로부터 데이터를 사용하는 것이 가능하다. 동적 리소스 관리자, 예를 들면 제어기에 그의 요건들을 알리기 위하여, 그 유즈 케이스는 워크가 완료될 필요가 있을 때의 데드라인과 함께 워크 인터벌이 시작되었음을 표시한다. 워크가 사실상 완료될 때, 그 유즈 케이스는 워크가 마무리되었음을 표시한다.
워크가 사실상 완료하는데 얼마나 오래 걸리는지에 비해 워크가 얼마동안에 완료해야 했는지를 앎으로써, 더 전력 최적이지만 여전히 데드라인 전에 프로세싱을 완료하는 다른 리소스 설정들을 찾는 것이 가능하다. 후속 요청시에, 리소스는 동일한 정보를 수신하지만, 여전히 데드라인전 워크를 완료하는 더 전력 최적인 리소스 설정들을 결정하기 위하여 과거 이력을 이용할 수 있다.
리소스 관리자가 각 유즈 케이스를 위해 유지할 수도 있는 일련의 통계들이 존재한다. 이들 통계들은 인터벌당 평균 워크 (mean work) 및 인터벌에서 인터벌까지의 워크의 변화를 포함한다. 이들 통계들은 요청들로부터 적응적으로 결정되거나, 벤치마크로부터 씨딩 (seeding) 되거나 또는 상수들로서 고정될 수도 있다. 또한, 리소스 설정에 대하여 수행된 워크의 량 및, 가능하게는 리소스 설정에 대한 그 워크의 가변성 (variability) 을 포함하는, 리소스에 관하여 유지될 수도 있는 몇몇 통계들이 존재한다.
올바르게 기능하기 위하여, 향후 요청들은 이전 것들과 유사한 워크 요건들을 가질 수도 있다. 이것이 잘못된 것으로 알려지는 경우들이 존재한다 (즉 디코딩되는 비디오는 480i 에서 1080p까지 변화한다-각 프레임은 이제 근본적으로 상이한 양의 워크를 갖는다). 새로운 요청들이 새로운 애플리케이션을 구성하고 임의의 이전의 학습된 통계들은 버려져야 한다는 것을 유즈 케이스로 하여금 표시하는 것을 허용하기 위한 메카니즘이 제공될 수도 있다. 도 14 및 도 15에 도시된 바처럼, 유즈 케이스가 리소스 관리자에게 힌트를 제공하는 것이 허용가능하다. 이 힌트는 워크 프로세싱이 느끼는 레벨은 그의 요구를 충족하기에 충분하다는 것이다. 힌트는 동적 리소스 관리자에 의해 무시될 수도 있다.
유즈 케이스가 리소스 관리자에게 헤드룸 (headroom) 요건을 제공하는 것이 허용가능하다. 이 헤드룸 사양 (specification) 은 리소스 설정을 조정할 때 리소스가 유지해야 하는 프로세싱 마진 (processing margin) 의 양이다. 헤드룸은 다르게는 워크로드 변화를 통해 도출될 수도 있다.
표시자들로, 타겟이 유즈 케이스에 독립적으로 전력 소비를 최적화하는 것이 가능하다-즉 유즈 케이스 구현은, 전력 최적화 알고리즘에 독립적으로, 심지어 가능하게는 타겟에 독립적으로, 동일하게 남는다. 사소한 (trivial) 초기 구현은 리소스를 최대, 보증 성능으로 실행하는 것을 포함할 수도 있다. 나중에, 오프라인 최적화 또는 적응적으로 결정된 통계를 통해, 리소스 설정들은 유즈 케이스 구현을 수정할 필요 없이 더 전력 최적의 설정으로 변화될 수도 있다.
여기에 설명된 각 방법들에서, 동적 리소스 관리자, 즉 제어기를 완전히 범용으로 만들기 위해 시도하기 보다는, 동적 리소스 관리자에게 직접 태스크 요건들에 관하여 알릴 수도 있다. 이것은 동적 리소스 관리자로 하여금 더 좋은 리소스 관리 결정들을 하는 것을 허용할 수도 있다. 동적 리소스 관리자에게 그들의 성능 요건에 대하여 알리는 것으로부터 이득을 보는 유즈 케이스 또는 워크로드들이 식별될 수도 있고 그 요건들이 공식화될 수도 있다. 또한, 동적 리소스 관리자에 대한 인터페이스는 워크로드들로부터 정보를 통합하기 위하여 확장될 수도 있다.
동적으로 관리된 리소스들에 대한 인터페이스들은, 예를 들면, 요구되는, 등시성, 임펄스 등, 일련의 공통 워크 모델들을 위한 서포트를 포함할 수도 있다. 모든 공통 워크 모델들이 라이브러리에 놓여질 수도 있고 리소스 저자 (author) 의 재량으로 임의의 특정 리소스에 의해 서포트되거나 또는 서포트되지 않을 수도 있다. 또한, 이것은 리소스 저자로 하여금 그들 자신의, 커스텀 (custom) 일 수 있는, 워크 모델들을 정의하는 것을 허용하고 또한 클라이언트들로 하여금 이들 요청들을 이슈하는 것을 허용할 수도 있다. 이들 커스텀 워크 모델들은 리소스에 활성 클라이언트 요구들을 알리고 DCVS 알고리즘의 요구되는 일반성 (generality) 을 최소화하고 최적화 기회를 증가시키기 위하여 사용될 수도 있다.
특정 양태에서, 추가 워크 모델들은 펄스형 워크로드들, 즉 특정 레벨에서 시작하고 소정 시간 인터벌에서 자동적으로 중단되는 워크로드들을 포함할 수도 있다. 또한, 워크 모델들은 최선 노력 워크로드들을 포함할 수도 있고, 그 최선 노력 워크로드들은, 수행될 수도 있지만, 성능 임계적이지는 않고, 임의적으로 연기될 수 있는 워크가 존재한다는 힌트를 포함할 수도 있다. 또한, 워크 모델들은, 일정 량의 워크가 향후 정의된 포인트에서 필요할 것이라는 통지를 포함할 수도 있는 스케쥴된 워크로드들을 포함할 수도 있다.
여기에 기재된 방법들은 DCVS 알고리즘 문제 공간이 임의적으로 감소되는 것을 허용할 수도 있고 특정 유즈 케이스가 다른 유즈 케이스들 또는 다른 리소스들에의 영향 없이 임의적으로 최적화되는 것을 허용할 수도 있다.
여기에 기재된 방법들은 또한 DCVS 알고리즘에 대한 추가적인 입력들을 더 포함할 수도 있다. 예를 들면, 이들 추가 입력들은 아이들 분배 신호 (idle distribution signal), 인터럽트 파이어링 신호 (interrupt firing signal) 및 타이머 파이어링 신호 (timer firing signal) 를 포함할 수도 있다. 또한, 인터럽트 및 타이머의 분배는 DCVS 알고리즘으로의 추가적인 입력들로서 사용될 수도 있다. 이들 입력들을 포함하는 것에 의해, DCVS 알고리즘은 더 향상된 시스템 지식을 갖는 것에 의해 더 효과적으로 그리고 효율적으로 기능할 수도 있다.
이들 입력들은 모드들, 이를테면 오디오 플레이백을 검출하고, DCVS 알고리즘을 조정하여 검출된 케이스에 대한 더 최적의 솔루션을 산출하기 위하여 사용될 수 있다. 입력들은 또한 전화 옮 (phone call coming in), 사용자 이벤트 또는 심지어 오디오 콘텐츠를 버퍼하기 위한 NV (non-volatile) 메모리 액세스의 검출과 같은 모드들의 변화를 검출하기 위하여 사용될 수도 있다. 또한, 이들 입력들은 실질적으로 최소 클라이언트 상호작용으로 DCVS 알고리즘의 튜닝을 가능하게 할 수도 있다.
본 명세서에 기재된 방법 단계들은 기재된 바와 같은 순서로 반드시 수행될 필요는 없다는 것이 이해되야 한다. 또한, 용어 이를테면 "그후", "그 다음", "다음" 등은 단계들의 순서를 제한하도록 의도된 것이 아니다. 이들 용어들은 단순히 방법 단계들의 설명을 통하여 독자를 안내하기 위해 사용되었다. 또한, 본 명세서에 기재된 방법들은 휴대 컴퓨팅 디바이스 (PCD) 상에서 실행가능한 것으로 기재된다. PCD는 모바일 전화 디바이스, 휴대 정보 단말 (portable digital assistant) 디바이스, 스마트북 컴퓨팅 디바이스, 넷북 컴퓨팅 디바이스, 랩톱 컴퓨팅 디바이스, 데스크톱 컴퓨팅 디바이스, 또는 이들의 조합일 수도 있다. 또한, 여기에 기재된 방법 단계들은 단일 코어 프로세서, 멀티코어 프로세서, 다수의 단일 코어 프로세서, 다수의 멀티코어 프로세서 또는 이들의 임의의 조합 상에서 실행될 수도 있다. 또한, 여기의 방법들은 다양한 타입들의 프로세서들을 동적으로 제어하기 위하여 사용될 수도 있다. 예를 들면, 여기의 방법들은 CPU (central processing unit), GPU (graphics processing unit) 등을 제어하기 위하여 사용될 수도 있다.
하나 이상의 예시적 양태에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 그 기능들은 머신 판독가능 매체, 즉 컴퓨터 판독가능 매체와 같은 컴퓨터 프로그램 제품상의 하나 이상의 명령 또는 코드로서 저장되거나 송신될 수도 있다. 컴퓨터 판독가능 매체는 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체 및 컴퓨터 저장 매체 양자를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수도 있는 임의의 가용 매체일 수도 있다. 비한정적 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장 또는 다른 자기 저장 디바이스, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 운반 또는 저장하는데 사용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 명칭된다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 라인 (DSL), 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되면, 그 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술은 매체의 정의 내에 포함된다. 여기에 설명된 바와 같이, 디스크 (disk) 및 디스크 (disc) 는 콤팩트 디스크 (CD), 레이저 디스크, 광 디스크, DVD (digital versatile disc), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 일반적으로 데이터를 자기적으로 재생하지만, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 또한, 상기의 조합은 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
선택된 양태들이 예시되고 자세히 설명되었지만, 거기에서 다양한 치환 및 변경들이 다음의 청구항들에 의해 정의된 본 발명의 사상 및 범위로부터 이탈함이 없이 이루어질 수 있다는 것이 이해될 것이다.

Claims (40)

  1. CPU (central processing unit) 에서 DCVS (dynamic clock and voltage scaling) 알고리즘을 실행하는 방법으로서,
    CPU 활동을 모니터하는 단계; 및
    워크로드가 상기 CPU 활동에 추가될 때 상기 워크로드가 특수 워크로드로 지정되는지를 결정하는 단계를 포함하는, DCVS 알고리즘을 실행하는 방법.
  2. 제 1 항에 있어서,
    특수 워크로드는 임펄스 워크로드, 정의된 워크로드, 등시성 워크로드, 펄스형 워크로드, 최선 노력 (best effort) 워크로드, 스케쥴 워크로드, 또는 이들의 조합을 포함하는, DCVS 알고리즘을 실행하는 방법.
  3. 제 1 항에 있어서,
    상기 워크로드가 특수 워크로드로 지정되지 않으면 미변경 DCVS 알고리즘을 실행하는 단계를 더 포함하는, DCVS 알고리즘을 실행하는 방법.
  4. 제 1 항에 있어서,
    상기 워크로드와 연관된 고유 식별자를 수신하는 단계; 및
    상기 고유 식별자를 사용하여 데이터베이스를 검색하는 단계를 더 포함하는, DCVS 알고리즘을 실행하는 방법.
  5. 제 4 항에 있어서,
    DCVS 솔루션이 상기 워크로드를 위한 상기 고유 식별자와 연관되는지를 결정하는 단계를 더 포함하는, DCVS 알고리즘을 실행하는 방법.
  6. 제 5 항에 있어서,
    상기 워크로드와 연관된 상기 DCVS 솔루션에 기초하여 상기 DCVS 알고리즘을 리튜닝하는 단계를 더 포함하는, DCVS 알고리즘을 실행하는 방법.
  7. 제 6 항에 있어서,
    리튜닝된 DCVS 알고리즘을 실행하는 단계를 더 포함하는, DCVS 알고리즘을 실행하는 방법.
  8. 제 5 항에 있어서,
    상기 워크로드가 DCVS 솔루션을 포함하지 않을 때 상기 워크로드를 위한 새로운 DCVS 솔루션을 생성할지를 결정하는 단계를 더 포함하는, DCVS 알고리즘을 실행하는 방법.
  9. 제 8 항에 있어서,
    새로운 DCVS 솔루션을 생성하지 않는 것으로 결정될 때 미변경 DCVS 알고리즘을 실행하는 단계를 더 포함하는, DCVS 알고리즘을 실행하는 방법.
  10. 제 8 항에 있어서,
    상기 워크로드를 위한 새로운 DCVS 솔루션을 생성하는 단계; 및
    상기 워크로드와 연관된 상기 고유 식별자와 함께 상기 새로운 DCVS 솔루션을 저장하는 단계를 더 포함하는, DCVS 알고리즘을 실행하는 방법.
  11. 무선 디바이스로서,
    CPU 활동을 모니터하기 위한 수단; 및
    워크로드가 상기 CPU 활동에 추가될 때 상기 워크로드가 특수 워크로드로 지정되는지를 결정하기 위한 수단을 포함하는, 무선 디바이스.
  12. 제 11 항에 있어서,
    특수 워크로드는 임펄스 워크로드, 정의된 워크로드, 등시성 워크로드, 펄스형 워크로드, 최선 노력 (best effort) 워크로드, 스케쥴 워크로드, 또는 이들의 조합을 포함하는, 무선 디바이스.
  13. 제 11 항에 있어서,
    상기 워크로드가 특수 워크로드로 지정되지 않으면 미변경 DCVS 알고리즘을 실행하기 위한 수단을 더 포함하는, 무선 디바이스.
  14. 제 11 항에 있어서,
    상기 워크로드와 연관된 고유 식별자를 수신하기 위한 수단; 및
    상기 고유 식별자를 사용하여 데이터베이스를 검색하기 위한 수단을 더 포함하는, 무선 디바이스.
  15. 제 14 항에 있어서,
    DCVS 솔루션이 상기 워크로드를 위한 상기 고유 식별자와 연관되는지를 결정하기 위한 수단을 더 포함하는, 무선 디바이스.
  16. 제 15 항에 있어서,
    상기 워크로드와 연관된 상기 DCVS 솔루션에 기초하여 DCVS 알고리즘을 리튜닝하기 위한 수단을 더 포함하는, 무선 디바이스.
  17. 제 16 항에 있어서,
    리튜닝된 DCVS 알고리즘을 실행하기 위한 수단을 더 포함하는, 무선 디바이스.
  18. 제 15 항에 있어서,
    상기 워크로드가 DCVS 솔루션을 포함하지 않을 때 상기 워크로드를 위한 새로운 DCVS 솔루션을 생성할지를 결정하기 위한 수단을 더 포함하는, 무선 디바이스.
  19. 제 18 항에 있어서,
    새로운 DCVS 솔루션을 생성하지 않는 것으로 결정될 때 미변경 DCVS 알고리즘을 실행하기 위한 수단을 더 포함하는, 무선 디바이스.
  20. 제 18 항에 있어서,
    상기 워크로드를 위한 새로운 DCVS 솔루션을 생성하기 위한 수단; 및
    상기 워크로드와 연관된 상기 고유 식별자와 함께 상기 새로운 DCVS 솔루션을 저장하기 위한 수단을 더 포함하는, 무선 디바이스.
  21. 무선 디바이스로서,
    프로세서를 포함하고,
    상기 프로세서는:
    CPU 활동을 모니터하고; 및
    워크로드가 상기 CPU 활동에 추가될 때 상기 워크로드가 특수 워크로드로 지정되는지를 결정하도록 동작가능한, 무선 디바이스.
  22. 제 21 항에 있어서,
    특수 워크로드는 임펄스 워크로드, 정의된 워크로드, 등시성 워크로드, 펄스형 워크로드, 최선 노력 (best effort) 워크로드, 스케쥴 워크로드, 또는 이들의 조합을 포함하는, 무선 디바이스.
  23. 제 21 항에 있어서,
    상기 프로세서는 또한:
    상기 워크로드가 특수 워크로드로 지정되지 않으면 미변경 DCVS 알고리즘을 실행하도록 동작가능한, 무선 디바이스.
  24. 제 21 항에 있어서,
    상기 프로세서는 또한:
    상기 워크로드와 연관된 고유 식별자를 수신하고; 및
    상기 고유 식별자를 사용하여 데이터베이스를 검색하도록 동작가능한, 무선 디바이스.
  25. 제 24 항에 있어서,
    상기 프로세서는 또한:
    DCVS 솔루션이 상기 워크로드를 위한 상기 고유 식별자와 연관되는지를 결정하도록 동작가능한, 무선 디바이스.
  26. 제 25 항에 있어서,
    상기 프로세서는 또한:
    상기 워크로드와 연관된 상기 DCVS 솔루션에 기초하여 DCVS 알고리즘을 리튜닝하도록 동작가능한, 무선 디바이스.
  27. 제 26 항에 있어서,
    상기 프로세서는 또한:
    리튜닝된 DCVS 알고리즘을 실행하도록 동작가능한, 무선 디바이스.
  28. 제 25 항에 있어서,
    상기 프로세서는 또한:
    상기 워크로드가 DCVS 솔루션을 포함하지 않을 때 상기 워크로드를 위한 새로운 DCVS 솔루션을 생성할지를 결정하도록 동작가능한, 무선 디바이스.
  29. 제 28 항에 있어서,
    상기 프로세서는 또한:
    새로운 DCVS 솔루션을 생성하지 않는 것으로 결정될 때 미변경 DCVS 알고리즘을 실행하도록 동작가능한, 무선 디바이스.
  30. 제 28 항에 있어서,
    상기 프로세서는 또한:
    상기 워크로드를 위한 새로운 DCVS 솔루션을 생성하고; 및
    상기 워크로드와 연관된 상기 고유 식별자와 함께 상기 새로운 DCVS 솔루션을 저장하도록 동작가능한, 무선 디바이스.
  31. 메모리 매체로서
    CPU 활동을 모니터하기 위한 적어도 하나의 명령; 및
    워크로드가 상기 CPU 활동에 추가될 때 상기 워크로드가 특수 워크로드로 지정되는지를 결정하기 위한 적어도 하나의 명령을 포함하는, 메모리 매체.
  32. 제 31 항에 있어서,
    특수 워크로드는 임펄스 워크로드, 정의된 워크로드, 등시성 워크로드, 펄스형 워크로드, 최선 노력 (best effort) 워크로드, 스케쥴 워크로드, 또는 이들의 조합을 포함하는, 메모리 매체.
  33. 제 31 항에 있어서,
    상기 워크로드가 특수 워크로드로 지정되지 않으면 미변경 DCVS 알고리즘을 실행하기 위한 적어도 하나의 명령을 더 포함하는, 메모리 매체.
  34. 제 31 항에 있어서,
    상기 워크로드와 연관된 고유 식별자를 수신하기 위한 적어도 하나의 명령; 및
    상기 고유 식별자를 사용하여 데이터베이스를 검색하기 위한 적어도 하나의 명령을 더 포함하는, 메모리 매체.
  35. 제 34 항에 있어서,
    DCVS 솔루션이 상기 워크로드를 위한 상기 고유 식별자와 연관되는지를 결정하기 위한 적어도 하나의 명령을 더 포함하는, 메모리 매체.
  36. 제 35 항에 있어서,
    상기 워크로드와 연관된 상기 DCVS 솔루션에 기초하여 DCVS 알고리즘을 리튜닝하기 위한 적어도 하나의 명령을 더 포함하는, 메모리 매체.
  37. 제 36 항에 있어서,
    리튜닝된 DCVS 알고리즘을 실행하기 위한 적어도 하나의 명령을 더 포함하는, 메모리 매체.
  38. 제 35 항에 있어서,
    상기 워크로드가 DCVS 솔루션을 포함하지 않을 때 상기 워크로드를 위한 새로운 DCVS 솔루션을 생성할지를 결정하기 위한 적어도 하나의 명령을 더 포함하는, 메모리 매체.
  39. 제 38 항에 있어서,
    새로운 DCVS 솔루션을 생성하지 않는 것으로 결정될 때 미변경 DCVS 알고리즘을 실행하기 위한 적어도 하나의 명령을 더 포함하는, 메모리 매체.
  40. 제 38 항에 있어서,
    상기 워크로드를 위한 새로운 DCVS 솔루션을 생성하기 위한 적어도 하나의 명령; 및
    상기 워크로드와 연관된 상기 고유 식별자와 함께 상기 새로운 DCVS 솔루션을 저장하기 위한 적어도 하나의 명령을 더 포함하는, 메모리 매체.
KR1020127021124A 2010-01-11 2011-01-10 프로세서의 동적 제어 방법 및 시스템 KR20120116975A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US29401910P 2010-01-11 2010-01-11
US61/294,019 2010-01-11
US12/846,058 2010-07-29
US12/846,058 US8671413B2 (en) 2010-01-11 2010-07-29 System and method of dynamic clock and voltage scaling for workload based power management of a wireless mobile device

Publications (1)

Publication Number Publication Date
KR20120116975A true KR20120116975A (ko) 2012-10-23

Family

ID=44259520

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127021124A KR20120116975A (ko) 2010-01-11 2011-01-10 프로세서의 동적 제어 방법 및 시스템

Country Status (6)

Country Link
US (2) US8671413B2 (ko)
EP (1) EP2524274A1 (ko)
JP (1) JP5601731B2 (ko)
KR (1) KR20120116975A (ko)
CN (1) CN102687098B (ko)
WO (1) WO2011085320A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021011577A1 (en) * 2019-07-15 2021-01-21 Intel Corporation Dynamic energy performance preference based on workloads using an adaptive algorithm

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101648978B1 (ko) * 2009-11-05 2016-08-18 삼성전자주식회사 저전력 멀티코어 시스템에서의 전력 제어 방법 및 장치
US8370665B2 (en) * 2010-01-11 2013-02-05 Qualcomm Incorporated System and method of sampling data within a central processing unit
US8671413B2 (en) * 2010-01-11 2014-03-11 Qualcomm Incorporated System and method of dynamic clock and voltage scaling for workload based power management of a wireless mobile device
US20130060555A1 (en) * 2011-06-10 2013-03-07 Qualcomm Incorporated System and Apparatus Modeling Processor Workloads Using Virtual Pulse Chains
US9086883B2 (en) 2011-06-10 2015-07-21 Qualcomm Incorporated System and apparatus for consolidated dynamic frequency/voltage control
FR2982386B1 (fr) * 2011-11-08 2016-05-27 Bull Sas Procede, programme d'ordinateur et dispositif d'allocation de ressources informatiques d'un cluster pour l'execution d'un travail soumis audit cluster
US20140089699A1 (en) * 2012-09-27 2014-03-27 Advanced Micro Devices Power management system and method for a processor
CN110109736B (zh) 2013-12-09 2023-03-07 超威半导体公司 3d芯片系统中的电压下降缓解
KR101842016B1 (ko) * 2013-12-10 2018-03-28 한국전자통신연구원 멀티 코어 환경에서의 동적 전력 제어방법
CN103746721B (zh) * 2013-12-30 2016-08-17 深圳市广和通无线股份有限公司 无线通信模块
US9378536B2 (en) * 2014-04-30 2016-06-28 Qualcomm Incorporated CPU/GPU DCVS co-optimization for reducing power consumption in graphics frame processing
CN104007806B (zh) * 2014-06-20 2017-10-24 中科创达软件股份有限公司 一种安卓系统中的cpu频率的控制方法、装置和设备
US11244264B2 (en) 2014-12-29 2022-02-08 Hand Held Products, Inc. Interleaving surprise activities in workflow
US9851774B2 (en) * 2016-01-04 2017-12-26 Qualcomm Incorporated Method and apparatus for dynamic clock and voltage scaling in a computer processor based on program phase
US10146286B2 (en) * 2016-01-14 2018-12-04 Intel Corporation Dynamically updating a power management policy of a processor
US10248186B2 (en) 2016-06-10 2019-04-02 Microsoft Technology Licensing, Llc Processor device voltage characterization
US10338670B2 (en) 2016-06-10 2019-07-02 Microsoft Technology Licensing, Llc Input voltage reduction for processing devices
US10310572B2 (en) 2016-06-10 2019-06-04 Microsoft Technology Licensing, Llc Voltage based thermal control of processing device
US10209726B2 (en) 2016-06-10 2019-02-19 Microsoft Technology Licensing, Llc Secure input voltage adjustment in processing devices
US10387234B2 (en) * 2016-08-05 2019-08-20 Arm Limited Apparatus and method for controlling a power supply to processing circuitry to avoid a potential temporary insufficiency in supply of power
KR20180076840A (ko) 2016-12-28 2018-07-06 삼성전자주식회사 Dvfs 동작을 수행하는 어플리케이션 프로세서, 이를 포함하는 컴퓨팅 시스템 및 이의 동작 방법
KR20180078558A (ko) 2016-12-30 2018-07-10 삼성전자주식회사 시스템 온 칩의 구동 방법, 이를 수행하는 시스템 온 칩 및 이를 포함하는 전자 시스템
DE102017128711A1 (de) 2017-05-24 2018-11-29 Tu Dresden Mehrkernprozessor und Verfahren zur dynamischen Einstellung einer Versorgungsspannung und einer Taktfrequenz
WO2019108011A1 (ko) 2017-11-30 2019-06-06 삼성전자 주식회사 운영 체제 설정 방법 및 그 장치
GB2569109B (en) * 2017-11-30 2021-03-31 Samsung Electronics Co Ltd Setting operating system parameters based on workload types
US10627885B2 (en) * 2018-01-09 2020-04-21 Intel Corporation Hybrid prioritized resource allocation in thermally- or power-constrained computing devices
KR102568686B1 (ko) 2018-02-09 2023-08-23 삼성전자주식회사 컨텍스트 허브를 포함하는 모바일 장치 및 그것의 동작 방법
CN112912820A (zh) * 2018-10-26 2021-06-04 华为技术有限公司 Cpu调节器的能效调整
CN110134217B (zh) * 2019-04-10 2021-03-23 深圳市普威技术有限公司 一种cpu功耗管理装置
US20230058700A1 (en) * 2021-08-17 2023-02-23 Bank Of America Corporation System and method for dynamically mapping and routing workload requirements to appropriate computing components

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5396635A (en) * 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
US5408663A (en) * 1993-11-05 1995-04-18 Adrem Technologies, Inc. Resource allocation methods
TW282525B (ko) 1994-06-17 1996-08-01 Intel Corp
EP0727728A1 (en) 1995-02-15 1996-08-21 International Business Machines Corporation Computer system power management
US5623647A (en) * 1995-03-07 1997-04-22 Intel Corporation Application specific clock throttling
JP2900997B2 (ja) * 1996-11-06 1999-06-02 富士通株式会社 表示ユニットの消費電力制御のための方法と装置、それを備えた表示システム及びそれを実現するプログラムを格納した記憶媒体
JP3961619B2 (ja) 1997-06-03 2007-08-22 株式会社東芝 コンピュータシステムおよびその処理速度制御方法
US6928559B1 (en) * 1997-06-27 2005-08-09 Broadcom Corporation Battery powered device with dynamic power and performance management
FI117523B (fi) 1998-10-07 2006-11-15 Nokia Corp Menetelmä tehonkulutuksen säätämiseksi
US6298448B1 (en) 1998-12-21 2001-10-02 Siemens Information And Communication Networks, Inc. Apparatus and method for automatic CPU speed control based on application-specific criteria
US6684341B1 (en) * 2000-03-09 2004-01-27 International Business Machines Corporation Method of altering the appearance of an icon of a program to provide an indication to a user that a power management is associated with the particular program
KR100361340B1 (ko) * 2000-05-15 2002-12-05 엘지전자 주식회사 씨피유 클럭 제어 방법
JP2002202959A (ja) * 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
US6901446B2 (en) * 2001-02-28 2005-05-31 Microsoft Corp. System and method for describing and automatically managing resources
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
US7694303B2 (en) * 2001-09-25 2010-04-06 Sun Microsystems, Inc. Method for dynamic optimization of multiplexed resource partitions
US6515530B1 (en) * 2001-10-11 2003-02-04 International Business Machines Corporation Dynamically scalable low voltage clock generation system
JP3692089B2 (ja) * 2002-04-02 2005-09-07 株式会社東芝 消費電力制御方法及び情報処理装置
AUPS236502A0 (en) * 2002-05-16 2002-06-13 Peterson, Paul Method of monitoring measurements
US7278136B2 (en) * 2002-07-09 2007-10-02 University Of Massachusetts Reducing processor energy consumption using compile-time information
US7155617B2 (en) * 2002-08-01 2006-12-26 Texas Instruments Incorporated Methods and systems for performing dynamic power management via frequency and voltage scaling
US7174468B2 (en) * 2002-08-01 2007-02-06 Texas Instruments Incorporated Methodology for coordinating and tuning application power
US7321942B2 (en) * 2002-11-12 2008-01-22 Arm Limited Performance counter for adding variable work increment value that is dependent upon clock frequency
US7194385B2 (en) * 2002-11-12 2007-03-20 Arm Limited Performance level setting of a data processing system
US7131015B2 (en) * 2002-11-12 2006-10-31 Arm Limited Performance level selection in a data processing system using a plurality of performance request calculating algorithms
US7783759B2 (en) * 2002-12-10 2010-08-24 International Business Machines Corporation Methods and apparatus for dynamic allocation of servers to a plurality of customers to maximize the revenue of a server farm
US7539994B2 (en) 2003-01-03 2009-05-26 Intel Corporation Dynamic performance and resource management in a processing system
JP2006518064A (ja) * 2003-01-23 2006-08-03 ユニバーシティー オブ ロチェスター マルチクロックドメインを有するマイクロプロセッサ
US7583555B2 (en) * 2003-04-11 2009-09-01 Qualcomm Incorporated Robust and Efficient dynamic voltage scaling for portable devices
KR100940260B1 (ko) * 2003-07-14 2010-02-04 삼성전자주식회사 다이나믹 주파수 스케일링에 따라 동작 모드의 제어가가능한 반도체 시스템 및 동작 모드 제어 방법
US7437580B2 (en) * 2004-05-05 2008-10-14 Qualcomm Incorporated Dynamic voltage scaling system
KR100716730B1 (ko) * 2004-06-11 2007-05-14 삼성전자주식회사 중앙 처리 장치의 아이들 상태에서의 시스템 전력 소모절감을 위한 방법 및 그 방법을 적용한 모바일 장치
US7505795B1 (en) * 2004-07-07 2009-03-17 Advanced Micro Devices, Inc. Power save management with customized range for user configuration and tuning value based upon recent usage
US9250967B2 (en) * 2004-08-23 2016-02-02 Palo Alto Research Center Incorporated Model-based planning with multi-capacity resources
US7711966B2 (en) * 2004-08-31 2010-05-04 Qualcomm Incorporated Dynamic clock frequency adjustment based on processor load
WO2006056824A2 (en) * 2004-09-10 2006-06-01 Freescale Semiconductor, Inc. Apparatus and method for controlling voltage and frequency
US7386739B2 (en) * 2005-05-03 2008-06-10 International Business Machines Corporation Scheduling processor voltages and frequencies based on performance prediction and power constraints
US8006113B2 (en) * 2005-10-27 2011-08-23 Freescale Semiconductor, Inc. System and method for controlling voltage level and clock frequency supplied to a system
KR100806284B1 (ko) * 2005-12-08 2008-02-22 한국전자통신연구원 동적 전압 스케일링을 적용한 고효율 프로세서
TW200746161A (en) * 2005-12-21 2007-12-16 Nxp Bv Power partitioning memory banks
TW200805047A (en) * 2005-12-23 2008-01-16 Koninkl Philips Electronics Nv Performance analysis based system level power management
US8181051B2 (en) * 2006-02-09 2012-05-15 Freescale Semiconductor, Inc. Electronic apparatus and method of conserving energy
US20070226741A1 (en) * 2006-03-22 2007-09-27 Seshadri Padmanabha V Power management based on dynamic frequency scaling in computing systems
DE102006014037A1 (de) * 2006-03-27 2007-10-11 Infineon Technologies Ag Integrierter Schaltkreis und Verfahren zum Ermitteln eines Betriebsbereichs eines integrierten Schaltkreises
US7721127B2 (en) * 2006-03-28 2010-05-18 Mips Technologies, Inc. Multithreaded dynamic voltage-frequency scaling microprocessor
US7624287B2 (en) * 2006-08-30 2009-11-24 Ati Technologies Ulc Adaptive power state management
US8565943B2 (en) 2006-09-25 2013-10-22 Appereo Systems, LLC Fleet operations quality management system
US7840825B2 (en) * 2006-10-24 2010-11-23 International Business Machines Corporation Method for autonomous dynamic voltage and frequency scaling of microprocessors
US8255915B1 (en) * 2006-10-31 2012-08-28 Hewlett-Packard Development Company, L.P. Workload management for computer system with container hierarchy and workload-group policies
JP5524623B2 (ja) * 2006-11-29 2014-06-18 アギア システムズ インコーポレーテッド 動的電力制御及び適応的電力制御のためのスピード・ビニング
US7463096B2 (en) * 2006-12-07 2008-12-09 Taiwan Semiconductor Manufacturing Co., Ltd. Dynamic voltage and frequency management in integrated circuits
TWI326818B (en) * 2006-12-15 2010-07-01 Inst Information Industry Dynamic voltage scheduling method, system thereof and record medium
GB2445167A (en) * 2006-12-29 2008-07-02 Advanced Risc Mach Ltd Managing performance of a processor
US7821350B2 (en) * 2007-01-19 2010-10-26 Qualcomm Incorporated Methods and apparatus for dynamic frequency scaling of phase locked loops for microprocessors
US8145918B2 (en) * 2007-06-28 2012-03-27 International Business Machines Corporation Monitoring system processes energy consumption
EP2171489A2 (en) * 2007-07-19 2010-04-07 Nxp B.V. Semi-adaptive voltage scaling for low-energy digital vlsi-design
US7913071B2 (en) * 2007-07-31 2011-03-22 Northwestern University Systems and methods for process and user driven dynamic voltage and frequency scaling
JP2009042187A (ja) * 2007-08-10 2009-02-26 Aisin Aw Co Ltd ナビゲーション装置、及びナビゲーションプログラム
US20090049314A1 (en) * 2007-08-13 2009-02-19 Ali Taha Method and System for Dynamic Voltage and Frequency Scaling (DVFS)
GB2452778A (en) * 2007-09-17 2009-03-18 Toshiba Res Europ Ltd Linking dynamic voltage scaling in master and slave modules
US7930573B2 (en) * 2007-09-18 2011-04-19 International Business Machines Corporation Workload apportionment according to mean and variance
US7622979B2 (en) * 2007-10-31 2009-11-24 Sun Microsytems, Inc. Dynamic voltage scaling for self-timed or racing paths
US8370663B2 (en) * 2008-02-11 2013-02-05 Nvidia Corporation Power management with dynamic frequency adjustments
US8239694B2 (en) * 2008-03-31 2012-08-07 Qualcomm, Incorporated Dynamic frequency scaling of a switched mode power supply
US8635625B2 (en) * 2008-04-04 2014-01-21 International Business Machines Corporation Power-aware workload allocation in performance-managed computing environments
US20090258641A1 (en) * 2008-04-13 2009-10-15 Toshiba America Research, Inc. Multi-interface parsable mobile devices (pmd) for energy conservation and services enhancement
KR101592055B1 (ko) 2008-05-13 2016-02-04 시놉시스, 인크. 전력 관리자, 전자 시스템, 전력을 관리하는 방법 및 컴퓨터 프로그램 제품
US8032317B2 (en) * 2008-05-15 2011-10-04 The Nielsen Company (Us), Llc System and methods for metering and analyzing energy consumption of events within a portable device
US8127160B2 (en) * 2008-10-13 2012-02-28 International Business Machines Corporation Dynamic frequency and voltage scaling for a computer processor
US8261112B2 (en) * 2008-12-08 2012-09-04 International Business Machines Corporation Optimizing power consumption by tracking how program runtime performance metrics respond to changes in operating frequency
US8250384B2 (en) * 2009-01-05 2012-08-21 International Business Machines Corporation Optimizer mechanism to increase battery length for mobile devices
US8009090B2 (en) * 2009-05-05 2011-08-30 Sirf Technology, Inc. System and method for dynamic voltage scaling in a GPS receiver
US9231630B2 (en) * 2009-05-05 2016-01-05 San Diego, CA Radio device having dynamic intermediate frequency scaling
KR101533572B1 (ko) * 2009-05-20 2015-07-03 삼성전자주식회사 전력 관리 방법
US8661274B2 (en) * 2009-07-02 2014-02-25 Qualcomm Incorporated Temperature compensating adaptive voltage scalers (AVSs), systems, and methods
US8117469B2 (en) * 2009-07-10 2012-02-14 Packet Digital Automatically determining operating parameters of a power management device
US8924902B2 (en) * 2010-01-06 2014-12-30 Qualcomm Incorporated Methods and circuits for optimizing performance and power consumption in a design and circuit employing lower threshold voltage (LVT) devices
US8671413B2 (en) * 2010-01-11 2014-03-11 Qualcomm Incorporated System and method of dynamic clock and voltage scaling for workload based power management of a wireless mobile device
US8745629B2 (en) * 2010-01-11 2014-06-03 Qualcomm Incorporated System and method of controlling power in an electronic device
US8700926B2 (en) * 2010-01-11 2014-04-15 Qualcomm Incorporated System and method of tuning a dynamic clock and voltage switching algorithm based on workload requests
US8510740B2 (en) * 2010-09-16 2013-08-13 Qualcomm Incorporated System and method of performing dynamic voltage and frequency scaling operations on a mobile device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021011577A1 (en) * 2019-07-15 2021-01-21 Intel Corporation Dynamic energy performance preference based on workloads using an adaptive algorithm

Also Published As

Publication number Publication date
US20130132973A1 (en) 2013-05-23
US8996595B2 (en) 2015-03-31
JP2013516712A (ja) 2013-05-13
EP2524274A1 (en) 2012-11-21
US8671413B2 (en) 2014-03-11
US20110173617A1 (en) 2011-07-14
CN102687098B (zh) 2015-06-17
JP5601731B2 (ja) 2014-10-08
WO2011085320A1 (en) 2011-07-14
CN102687098A (zh) 2012-09-19

Similar Documents

Publication Publication Date Title
JP5601731B2 (ja) プロセッサを動的に制御するシステムおよび方法
US9176572B2 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
US9081558B2 (en) System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on tempature
US9104411B2 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
EP2513746B1 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
US8689037B2 (en) System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
EP2513747B1 (en) System and method for controlling central processing unit power with reduced frequency oscillations
US20110145559A1 (en) System and method for controlling central processing unit power with guaranteed steady state deadlines
EP2954385A1 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
JP5930504B2 (ja) 保証された過渡期限とともに中央処理装置の電力を制御するためのシステムおよび方法
EP2524275B1 (en) System and method of tuning a dynamic clock and voltage switching algorithm based on workload requests

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application