KR20140069252A - 가상화 시스템에서 중앙 프로세싱 유닛 전력을 제어하는 시스템 및 방법 - Google Patents
가상화 시스템에서 중앙 프로세싱 유닛 전력을 제어하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR20140069252A KR20140069252A KR1020147010953A KR20147010953A KR20140069252A KR 20140069252 A KR20140069252 A KR 20140069252A KR 1020147010953 A KR1020147010953 A KR 1020147010953A KR 20147010953 A KR20147010953 A KR 20147010953A KR 20140069252 A KR20140069252 A KR 20140069252A
- Authority
- KR
- South Korea
- Prior art keywords
- parallelism
- degree
- workload
- virtual cores
- condition
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
Abstract
다중코어 중앙 프로세싱 유닛 내의 전력을 동적으로 제어하는 방법이 개시되고, 복수의 가상 코어들을 실행하는 단계, 가상 코어들에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 가상으로 실행하는 단계, 및 제 0 물리적 코어에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 물리적으로 실행하는 단계를 포함한다. 이 방법은 복수의 가상 코어들의 작업부하에서의 병렬도를 수신하는 단계, 및 상기 가상 코어들의 상기 작업부하에서의 상기 병렬도가 제 1 웨이크 조건과 동일한지 여부를 결정하는 단계를 더 포함할 수도 있다.
Description
관련 출원들
본 출원은 발명 명칭이 "SYSTEM AND METHOD OF DYNAMICALLY CONTROLLING A PLURALITY OF CORES IN A MULTICORE CENTRAL PROCESSING UNIT"이며 2009년 12월 16일자로 출원된 미국 특허 가출원 제61/286,960호를 우선권 주장하며, 그 내용은 참조로서 전부가 통합된다.
관련 기술의 설명
휴대용 컴퓨팅 디바이스들 (PCDs) 은 유비쿼터스식이다. 이들 디바이스들은 셀룰러 전화기들, 개인휴대 정보 단말들 (PDA들), 휴대용 게임 콘솔들, 팜톱 컴퓨터들, 및 다른 휴대용 전자 디바이스들을 포함할 수도 있다. 이들 디바이스들의 기본 기능 외에, 많은 것들이 주변 기능들을 포함한다. 예를 들어, 셀룰러 전화기는 셀룰러 전화 호들을 행하는 기본 기능과, 스틸 카메라, 비디오 카메라, 글로벌 포지셔닝 시스템 (GPS) 네비게이션, 웹 브라우징, 이메일들의 전송 및 수신, 텍스트 메시지들의 전송 및 수신, 푸시-투-토크 능력들 등의 주변 기능들을 포함할 수도 있다. 이러한 디바이스의 기능성이 증가하면, 이러한 기능성을 지원하는데 요구된 컴퓨팅 또는 프로세싱 능력 또한 증가한다. 게다가, 컴퓨팅 능력이 증가하면, 컴퓨팅 능력을 제공하는 프로세서, 또는 프로세서들을 효과적으로 관리할 더 큰 필요성이 존재한다.
따라서, 다중코어 CPU 내의 전력을 제어하는 개선된 방법이 필요하다.
도면들 중, 유사한 참조 부호들은 달리 표시되지 않는 한 여러 도면들 전반에 걸쳐 유사한 부분들을 지칭한다.
도 1은 닫힌 위치의 휴대용 컴퓨팅 디바이스 (PCD) 의 제 1 양태의 정면도이다;
도 2는 열린 위치의 PCD의 제 1 양태의 정면도이다;
도 3은 PCD의 제 2 양태의 블록도이다;
도 4는 프로세싱 시스템의 블록도이다;
도 5는 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 1 양태를 도시하는 흐름도이다;
도 6은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 2 양태를 도시하는 흐름도이다;
도 7은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 3 양태를 도시하는 흐름도이다;
도 8은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 4 양태를 도시하는 흐름도이다;
도 9는 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 5 양태의 제 1 부분을 도시하는 흐름도이다;
도 10은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 5 양태의 제 2 부분을 도시하는 흐름도이다;
도 11은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 5 양태의 제 3 부분을 도시하는 흐름도이다;
도 12는 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 5 양태의 제 4 부분을 도시하는 흐름도이다; 그리고
도 13은 다중코어 CPU를 테스트하는 방법을 도시하는 흐름도이다.
도 1은 닫힌 위치의 휴대용 컴퓨팅 디바이스 (PCD) 의 제 1 양태의 정면도이다;
도 2는 열린 위치의 PCD의 제 1 양태의 정면도이다;
도 3은 PCD의 제 2 양태의 블록도이다;
도 4는 프로세싱 시스템의 블록도이다;
도 5는 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 1 양태를 도시하는 흐름도이다;
도 6은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 2 양태를 도시하는 흐름도이다;
도 7은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 3 양태를 도시하는 흐름도이다;
도 8은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 4 양태를 도시하는 흐름도이다;
도 9는 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 5 양태의 제 1 부분을 도시하는 흐름도이다;
도 10은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 5 양태의 제 2 부분을 도시하는 흐름도이다;
도 11은 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 5 양태의 제 3 부분을 도시하는 흐름도이다;
도 12는 다중코어 CPU 내의 전력을 동적으로 제어하는 방법의 제 5 양태의 제 4 부분을 도시하는 흐름도이다; 그리고
도 13은 다중코어 CPU를 테스트하는 방법을 도시하는 흐름도이다.
단어 "예시적인"은 본 명세서에서는 "예, 경우, 또는 예시로서 기능한다"는 의미로 사용된다. "예시적인" 것으로서 본 명세서에서 설명된 임의의 양태가 다른 양태들보다 바람직하거나 유익한 것으로 해석될 필요는 없다.
본 명세서에서, 용어 "애플리케이션"은 또한 실행가능 콘텐츠, 이를테면 객체 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들을 갖는 파일들을 포함할 수도 있다. 덧붙여서, 본 명세서에서 말하는 "애플리케이션"은, 또한 본질적으로 실행가능하지 않은 파일들, 이를테면 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들을 포함할 수도 있다.
용어 "콘텐츠"는 또한 실행가능 콘텐츠를 갖는 파일들, 이를테면 객체 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들을 포함할 수도 있다. 덧붙여서, 본 명세서에서 말하는 "콘텐츠"는, 또한 본질적으로 실행가능하지 않은 파일들, 이를테면 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들을 포함할 수도 있다.
본 명세서에서 사용되는 바와 같이, "컴포넌트", "데이터베이스", "모듈", "시스템" 등의 용어들은 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 실행 소프트웨어 (software in execution) 등의 컴퓨터 관련 엔티티를 말하는 것으로 의도된다. 예를 들어, 컴포넌트는 프로세서상에 실행중인 프로세스, 프로세서, 오브젝트, 실행가능물 (executable), 실행 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만 이것들로 제한되지는 않는다. 예시로서, 컴퓨팅 디바이스 상에서 실행중인 애플리케이션 및 컴퓨팅 디바이스 둘 다가 하나의 컴포넌트일 수 있다. 하나 이상의 컴포넌트들이 프로세스 및/또는 실행 스레드 내에 상주할 수도 있고, 컴포넌트가 하나의 컴퓨터상에 국부화될 수도 있거나 그리고/또는 둘 이상의 컴퓨터들 간에 분산될 수도 있다. 덧붙여서, 이들 컴포넌트들은 갖가지 데이터 구조들을 저장하고 있는 갖가지 컴퓨터 판독가능 매체들로부터 실행될 수도 있다. 컴포넌트들은 로컬 및/또는 원격 프로세스들에 의해 이를테면 하나 이상의 데이터 패킷들을 갖는 신호 (예컨대, 로컬 시스템, 분산형 시스템에서의 다른 컴포넌트들과 상호작용하며 그리고/또는 다른 시스템들과는 인터넷과 같은 네트워크를 가로질러 이 신호에 의해 상호작용하는 하나의 컴포넌트로부터의 데이터) 에 따라 통신할 수도 있다.
처음에 도 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) 키보드일 수도 있다. 다중버튼 키보드 (120) 는 상부 하우징 부 (104) 가 하부 하우징 부 (106) 에 대하여 이동될 때 보여질 수도 있다. 도 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) 제어기 (340) 가 다중코어 CPU (324) 에 결합된다. 또한, USB 포트 (342) 가 USB 제어기 (340) 에 결합된다. 메모리 (344) 및 가입자 식별 모듈 (SIM) 카드 (346) 가 또한 다중코어 CPU (324) 에 결합될 수도 있다. 게다가, 도 3에 도시된 바와 같이, 디지털 카메라 (348) 가 다중코어 CPU (324) 에 결합될 수도 있다. 예시적인 양태에서, 디지털 카메라 (348) 는 전하 결합 소자 (CCD) 카메라 또는 상보성 금속산화물 반도체 (CMOS) 카메라이다.
도 3에서 추가로 도시된 바와 같이, 스테레오 오디오 CODEC (350) 이 다중코어 CPU (324) 에 결합될 수도 있다. 더구나, 오디오 증폭기 (352) 가 스테레오 오디오 CODEC (350) 에 결합될 수도 있다. 예시적인 양태에서, 제 1 스테레오 스피커 (354) 및 제 2 스테레오 스피커 (356) 가 오디오 증폭기 (352) 에 결합된다. 도 3은 마이크로폰 증폭기 (358) 또한 스테레오 오디오 CODEC (350) 에 결합될 수도 있음을 보여준다. 덧붙여, 마이크로폰 (360) 이 마이크로폰 증폭기 (358) 에 결합될 수도 있다. 특정 양태에서, 주파수 변조 (FM) 라디오 튜너 (362) 가 스테레오 오디오 CODEC (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) 에 결합될 수도 있다. 게다가, 진동기 디바이스 (378) 가 다중코어 CPU (324) 에 결합될 수도 있다. 도 3은 또한 전원 (380) 이 온-칩 시스템 (322) 에 결합될 수도 있음을 보여준다. 특정 양태에서, 전원 (380) 은 전력을 요구하는 PCD (320) 의 갖가지 컴포넌트들에 전력을 제공하는 직류 (DC) 전원이다. 게다가, 특정 양태에서, 전원는 AC 전원에 접속되는 교류 (AC) -DC 변압기로부터 유도되는 재충전가능 DC 배터리 또는 DC 전원이다.
도 3은 PCD (320) 가 또한 데이터 네트워크, 예컨대, 근거리 네트워크, 개인 영역 네트워크, 또는 임의의 다른 네트워크에 액세스하는데 사용될 수도 있는 네트워크 카드 (388) 를 구비할 수도 있음을 추가로 나타낸다. 네트워크 카드 (388) 는 블루투스 네트워크 카드, WiFi 네트워크 카드, 개인 영역 네트워크 (PAN) 카드, 개인 영역 네트워크 초저전력 기술 (PeANUT) 네트워크 카드, 또는 당업계에 널리 공지된 임의의 다른 네트워크 카드일 수도 있다. 게다가, 네트워크 카드 (388) 는 한 칩에 통합될 수도 있다, 즉, 네트워크 카드 (388) 는 칩에서의 풀 솔루션 (full solution) 일 수도 있고, 및 별개의 네트워크 카드 (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) 는 제 0 코어 (410), 제 1 코어 (412), 및 제 N 코어 (414) 를 구비할 수도 있다. 제 0 코어 (410) 는 그 위에서 실행되는 제 0 동적 클록 및 전압 스케일링 (DCVS) 알고리즘 (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) 은 다중코어 CPU (402) 내의 물리적 코어들 (410, 412, 414) 에서 처리될 하나 이상의 태스크들 (436) 을 운영 체제 (420) 에 전송할 수도 있다. 태스크들 (436) 은 단일 태스크들, 스레드들, 또는 이들의 조합으로서 처리되거나, 또는 실행될 수도 있다. 게다가, 스케줄러 (422) 는 다중코어 CPU (402) 내에서의 실행을 위해 태스크들, 스레드들, 또는 이들의 조합을 스케줄링할 수도 있다. 덧붙여, 스케줄러 (422) 는 태스크들, 스레드들, 또는 이들의 조합을 실행 큐들 (424, 426, 428) 내에 배치시킬 수도 있다. 물리적 코어들 (410, 412, 414) 은, 예컨대, 물리적 코어들 (410, 412, 414) 에서 태스크 및 스레드들의 프로세싱 또는 실행에 대해 운영 체제 (420) 에 의해 지시된 바대로 실행 큐들 (424, 426, 428) 로부터 태스크들, 스레드들, 또는 이들의 조합을 취출할 수도 있다.
도 4는 또한 메모리 (404) 가 그것 상에 저장된 하이퍼바이저 (hypervisor; 440) 및 다중코어 프로세서 (MP) 제어기 (442) 를 구비할 수도 있음을 보여준다. 하이퍼바이저 (440) 는 운영 체제 (420) 및 MP 제어기 (442) 에 접속될 수도 있다. 구체적으로는, 하이퍼바이저 (440) 는 운영 체제 (420) 내의 스케줄러 (422) 에 접속될 수도 있다. 하이퍼바이저 (440) 는 병렬 모니터 (PM) (444) 를 구비할 수도 있다. 대안적으로, 병렬 모니터 (444) 는 하이퍼바이저 (440) 와는 별개이지만 그것에 연결될 수도 있다. 도시된 바와 같이, 메모리 (404) 는 또한 제 0 가상 코어 (446) 및 제 1 가상 코어 (448) 를 구비할 수도 있다. OS (420) 는 가상 코어들 (446, 448) 이 스레드들을 실행하고 있는 것처럼 하이퍼바이저 (440) 를 통해 가상 코어들 (446, 448) 과 상호작용할 수도 있다. 그러나, 태스크들, 스레드들, 또는 이들의 조합은 실제로는 물리적 코어들 (410, 412, 414) 상에서 실행될 수도 있다. 가상 코어들 (446, 448) 은 OS (420) 에 액세스 가능한 가상화된 환경을 나타낼 수도 있다.
본 명세서에서 설명된 바와 같이, 하이퍼바이저 (440) 는 가상 코어들 (446, 448) 상의 작업부하를 감시할 수도 있고 MP 제어기 (442) 는 물리적 코어들 (410, 412, 414) 로의 전력을 제어할 수 있는데 이는 아래에서 설명된다. 특정 양태에서, 방법 단계들 중 하나 이상을, 예컨대, 본 명세서에서 설명되는 컴퓨터 프로그램 명령들로서 실행하는 것에 의해, 하이퍼바이저 (440), MP 제어기 (442), 병렬 모니터 (444), 또는 이들의 조합은 다중코어 CPU (402) 내의 코어들 (410, 412, 414) 로의 전력을 동적으로 제어하는 수단으로서 기능할 수도 있다.
특정 듀얼-가상 코어 양태에서, 동작 중, MP 제어기 (442) 는 하이퍼바이저 (440) 로부터 입력을 수신할 수도 있다. 이 입력은 작업부하에서의 병렬도의 실행 평균 (running average) 일 수도 있다. 이 입력을 기초로, MP 제어기 (442) 는 단일 물리적 코어 또는 2개의 물리적 코어들이 파워 온 되어야하는지를 결정할 수도 있다. 게다가, MP 제어기 (442) 는 제어 신호를 다중코어 CPU (402) 에 출력할 수도 있다. 이 제어 신호는 부가적인 코어들을 턴 온 할지 아니면 턴 오프할 지 여부를 나타낼 수도 있다. 듀얼-가상 코어 예에서, MP 제어기 (442) 는 물리적 코어들을 파워 온 및 오프하는 결정을 제어하기 위한 4개의 임계값들을 포함할 수도 있다. 4개의 임계값들은, 코어 웨이크를 트리거하기 위한 OS 스케줄러 큐 내의 레디-투-런 (ready-to-run) 스레드들의 수 Nw; 코어 웨이크를 확인하기 위해 Nw 가 초과되는 지속 시간 Tw; 코어 슬립을 트리거하기 위한 OS 스케줄러 내의 레디-투-런스레드들의 수 Ns; 및 코어 슬립을 확인하기 위해 Ns 가 초과되는 지속 시간 Ts 을 포함할 수도 있다.
단일 코어, 예컨대, 제 0 코어 (410) 액티브로 시작하면, 제 0 코어 (410) 상의 작업부하에서의 병렬도의 실행 평균이 적어도 Tw의 지속 시간 동안 Nw를 충족하거나 또는 초과할 때, MP 제어기 (442) 는 제 2 코어, 예컨대, 제 1 코어 (412) 를 웨이크업 할 수도 있다. 반대로, 코어들, 예컨대, 제 0 코어 (410) 및 제 1 코어 (412) 둘 다가 액티브일 때 그리고 작업부하에서의 병렬도가 적어도 Ts의 지속 시간 동안 Ns 미만으로 떨어질 때 MP 제어기 (442) 는 제 2의 코어, 예컨대, 제 1 코어 (412) 를 슬리핑할 것을 결정할 수도 있다.
특정 양태에서, 시간 Tw에 걸쳐 지속적인 임계 병렬성은 단일 가상 코어가 포화 상태가 되었다는 것을 의미한다. 게다가, 물리적 코어들은 가장 전력 효율적인 전압-주파수 (VF) 동작 포인트에서 시작될 수도 있다. 특정 양태에서, 최적의 VF에서 동작중인 2개의 물리적 코어들은 최대 VF에서 동작하는 단일 코어보다 더 많은 DMIPS (Dhrystone million instructions per second) 를 제공한다. 듀얼-코어 양태에서, 듀얼, 독립적 DCVS 알고리즘들은 비대칭 작업부하들에 그리고 일부 경우들에서는, 이종 코어들에 적응될 수도 있다. 게다가, 듀얼-코어 양태에서, 2개의 물리적 코어들은 두 배가 되는 성능 페널티를 피하기 위하여 멀티-태스킹 작업부하들 동안 액티브로 유지되어야 한다. 또한, 병렬성이 규정된 시간 Ts, 동안 Ns 미만으로 떨어질 때, 제 2 코어는 파워 오프되고 스탠바이 상태가 되지 않아야 한다. 특정 양태에서, 제 2 코어를 스탠바이 상태가 되게 하는 것은 전력 누설을 증가시킬 수도 있고 또한 성능을 감소시킬 수도 있다.
매개변수들 (Nw, Tw, Ns, 및 Ts) 의 최적의 값들은 시스템 (400) 의 정확한 전력 소비 특성들에 의존할 수도 있다. 그러나, 하나의 양태에서, 이 값들은 다음과 같을 수도 있다:
Nw = 1.2,
Tw = 40 밀리초 (ms),
Ns = 0.8, 및
Ts = 80 ms.
이 특정 양태에서, Nw = 1.2는 제 2 코어가 웨이크업 하기 전에 지속되는 병렬성을 보장할 수도 있다. Ns = 0.8은 제 2 코어가 슬립되기 전에 지속되는 병렬성의 부재를 보장할 수도 있다. Ts = 80 ms는 시스템 (400) 의 전력 붕괴(collapse) 임계치에 기초한다. Tw = 40 ms는 다중코어 반응성을 향상시키기 위해 Ts의 절반이 된다.
도 5를 참조하면, 다중코어 프로세서 내의 전력을 제어하는 방법의 제 1 양태가 보여지고 일반적으로 500으로 지정된다. 이 방법 (500) 은 다중코어 프로세서를 갖는 디바이스의 동작 동안, 계속되는 단계들이 수행될 수도 있는 실행 루프로 블록 502에서 시작한다. 블록 504에서, 가상 중앙 프로세싱 유닛 (CPU) 프로그램이 물리적 프로세서 내에서 실행될 수도 있다. 실행될 때, 가상 CPU 프로그램은 둘 이상의 가상 CPU들이 물리적 프로세서 상에서 실행되게 한다. 가상 CPU들은 디바이스 내에서 운영중인 둘 이상의 물리적 프로세서들을 시뮬레이션할 수도 있다. 블록 506에서, 운영 체제 (OS) 가 가상 CPU들에 액세스하는 것이 허용될 수도 있다. 특정 양태에서, OS는 물리적 CPU들에 액세스하는데 통산 사용되는 것과 동일한 방식으로 가상 CPU들에 액세스할 수도 있다.
블록 508로 이동하면, 가상 머신 관리자라고도 알려진 하이퍼바이저는, 가상 CPU의 유휴 상태로의 진입을, 예컨대, 가상 CPU가 유휴 상태에 들어갈 때마다 검출할 수도 있다. 블록 510에서, 하이퍼바이저는 각각의 가상 CPU에 대한 사용효율 (utilization) 을 결정할 수도 있다. 사용효율은 실제 (actual) 가상 사이클들의 수를 먼저 결정하는 것에 의해 결정될 수도 있다. 실제 가상 사이클들은, 가상 CPU가 유휴 (idle) 가 아니거나 또는 OS 유휴 태스크를 실행하고 있지 않는 사이클들이다. 그 후, 사용효율은 액티브 가상 사이클들의 수를 가상 CPU 사이클들의 총수로 나누는 것에 의해 결정될 수도 있다.
블록 512로 진행하여, 하이퍼바이저는 각각의 가상 CPU에 대한 사용효율에 기초하여 가상 CPU들의 작업부하에서의 병렬도를 결정할 수도 있다. 다음으로, 블록 514에서, 제어기, 예컨대, 병렬 모니터가 가상 CPU들의 작업부하에서의 병렬도에 적어도 부분적으로 기초하여 물리적 코어 (들) 을 파워 업 하거나 파워 다운 할 수도 있다. 다르게 말하면, 병렬 모니터는 가상 코어들의 작업부하들에 기초하여 코어들을 턴 온 또는 턴 오프할 수도 있다.
결정블록 516에서, 병렬 모니터는 디바이스가 파워 오프되었는지를 결정할 수도 있다. 디바이스가 파워 오프되면, 이 방법은 종료된다. 그렇지 않고, 디바이스가 파워 온인 채로 유지된다면, 방법 500은 블록 504로 리턴하고 방법 500은 설명된 바와 같이 계속될 수도 있다.
도 6은 다중코어 프로세서 내의 전력을 제어하는 방법의 제 2 양태를 도시한다. 이 방법은 일반적으로 600으로 지정된다. 이 방법 (600) 은 다중코어 프로세서를 갖는 디바이스의 동작 동안, 계속되는 단계들이 수행될 수도 있는 실행 루프로 블록 602에서 시작한다. 블록 604에서, 가상 중앙 프로세싱 유닛 (CPU) 프로그램이 물리적 프로세서 내에서 실행될 수도 있다. 실행될 때, 가상 CPU 프로그램은 둘 이상의 가상 CPU들이 물리적 프로세서 상에서 실행되게 한다. 가상 CPU들은 디바이스 내에서 동작중인 둘 이상의 물리적 프로세서들을 시뮬레이션할 수도 있다. 블록 606에서, 운영 체제 (OS) 가 가상 CPU들에 액세스하는 것이 허용될 수도 있다. 특정 양태에서, OS는 물리적 CPU들에 액세스하는데 통상 사용되는 것과 동일한 방식으로 가상 CPU들에 액세스할 수도 있다.
블록 608로 이동하면, 가상 머신 관리자라고도 알려진 하이퍼바이저가, 가상 프로세서의 유휴 상태를 나타내는 호를 운영 체제 (OS) 로부터, 예컨대, 가상 CPU가 유휴 상태에 들어갈 때마다 수신할 수도 있다. 블록 610에서, 하이퍼바이저는 각각의 가상 CPU에 대한 사용효율을 결정할 수도 있다. 사용효율은 실제 (actual) 가상 사이클들의 수를 먼저 결정하는 것에 의해 결정될 수도 있다. 실제 가상 사이클들은, 가상 CPU가 유휴 (idle) 가 아니거나 또는 OS 유휴 태스크를 실행하고 있지 않는 사이클들이다. 그 후, 사용효율은 액티브 가상 사이클들의 수를 가상 CPU 사이클들의 총 수로 나누는 것에 의해 결정될 수도 있다.
블록 612로 진행하여, 하이퍼바이저는 각각의 가상 CPU에 대한 사용효율에 기초하여 가상 CPU들의 작업부하에서의 병렬도를 결정할 수도 있다. 다음으로, 블록 614에서, 하이퍼바이저는 가상 CPU들의 작업부하에서의 병렬도에 적어도 부분적으로 기초하여 물리적 코어 (들) 을 파워 업 하거나 파워 다운 할 수도 있다. 다르게 말하면, 전력 제어기는 작업부하에 기초하여 코어들을 톤 온 또는 턴 오프 할 수도 있다.
결정블록 616에서, 전력 제어기는 디바이스가 파워 오프되었는지를 결정할 수도 있다. 디바이스가 파워 오프되면, 이 방법은 종료할 수도 있다. 그렇지 않고, 디바이스가 파워 온 인 채로 유지된다면, 방법 (600) 은 블록 604로 리턴하고 방법 (600) 은 설명된 바와 같이 계속될 수도 있다.
이제 도 7을 참조하면, 다중코어 프로세서 내의 전력을 제어하는 방법의 제 3 양태가 보여지고 일반적으로 700으로 지정된다. 이 방법 (700) 은 다중코어 프로세서를 갖는 디바이스의 동작 동안, 계속되는 단계들이 수행될 수도 있는 실행 루프로 블록 702에서 시작한다.
블록 704에서, 가상 중앙 프로세싱 유닛 (CPU) 프로그램이 물리적 프로세서 내에서 실행될 수도 있다. 실행될 때, 가상 CPU 프로그램은 둘 이상의 가상 CPU들이 물리적 프로세서 상에서 실행되게 한다. 가상 CPU들은 디바이스 내에서 운영중인 둘 이상의 물리적 프로세서들을 시뮬레이션할 수도 있다. 블록 706에서, 운영 체제 (OS) 가 가상 CPU들에 액세스하는 것이 허용될 수도 있다. 특정 양태에서, OS는 물리적 CPU들에 액세스하는데 통산 사용되는 것과 동일한 방식으로 가상 CPU들에 액세스할 수도 있다.
블록 708로 이동하면, 전력 제어기, 예컨대, 병렬 모니터가, 가상 CPU들, 또는 코어들 내의 작업부하 병렬도를 결정하기 위하여 가상 CPU 사용효율을 주기적으로 샘플링할 수도 있다. 블록 710으로 진행하여, 가상 CPU들 내의 작업부하 병렬도에 적어도 부분적으로 기초하여, 전력 제어기는 물리적 코어 (들) 을 파워 업하거나 파워 다운할 수도 있다. 다르게 말하면, 전력 제어기는 작업부하에 기초하여 코어들을 턴 온 또는 턴 오프 할 수도 있다.
결정블록 712에서, 전력 제어기는 디바이스가 파워 오프되었는지를 결정할 수도 있다. 디바이스가 파워 오프되면, 이 방법은 종료된다. 그렇지 않고, 디바이스가 파워 온인 채로 유지된다면, 방법 (700) 은 블록 704로 리턴하고 방법 (700) 은 설명된 바와 같이 계속될 수도 있다.
도 8은 다중코어 프로세서 내의 전력을 제어하는 방법의 제 4 양태를 보여주고 그 방법은 전체가 800 으로 지정된다. 이 방법 (800)은 다중코어 프로세서를 갖는 디바이스의 동작 동안, 계속되는 단계들이 수행될 수도 있는 실행 루프로 블록 802에서 시작한다. 블록 804에서, 가상 중앙 프로세싱 유닛 (CPU) 프로그램이 물리적 프로세서 내에서 실행될 수도 있다. 실행될 때, 가상 CPU 프로그램은 둘 이상의 가상 CPU들이 물리적 프로세서 상에서 실행되게 한다. 가상 CPU들은 디바이스 내에서 운영중인 둘 이상의 물리적 프로세서들을 시뮬레이션할 수도 있다. 블록 806에서, 운영 체제 (OS) 가 가상 CPU들에 액세스하는 것이 허용될 수도 있다. 특정 양태에서, OS는 물리적 CPU들에 액세스하는데 통산 사용되는 것과 동일한 방식으로 가상 CPU들에 액세스할 수도 있다.
블록 808로 이동하면, 전력 제어기, 예컨대, 병렬 모니터가, OS 실행 큐에 엔트리가 추가되는지 또는 그로부터 제거되는지의 콜백을 하이퍼바이저로부터 수신할 수도 있다. 블록 810에서, 전력 제어기는 가상 CPU들 내의 작업부하에서의 병렬도의 실행 평균을 결정할 수도 있다. 그 후, 블록 812에서, 가상 CPU들 내의 작업부하 병렬도에 적어도 부분적으로 기초하여, 전력 제어기는 물리적 코어 (들) 을 파워 업 하거나 파워 다운 할 수도 있다. 다르게 말하면, 전력 제어기는 작업부하에 기초하여 코어들을 턴 온 또는 턴 오프 할 수도 있다.
결정블록 814에서, 전력 제어기는 디바이스가 파워 오프되었는지를 결정할 수도 있다. 디바이스가 파워 오프되면, 이 방법은 종료된다. 그렇지 않고, 디바이스가 파워 온인 채로 유지된다면, 방법 (800)은 블록 804로 리턴하고 방법 (800)은 설명된 바와 같이 계속될 수도 있다.
도 9 내지 도 12를 참조하면, 다중코어 프로세서 내의 전력을 제어하는 방법의 제 5 양태가 보여지고 일반적으로 900으로 지정된다. 방법 (900)은 다중코어 프로세서를 갖는 디바이스가 파워 온될 때, 다음 단계들이 수행될 수도 있는 실행 루프를 블록 902에서 시작한다. 블록 904에서, 가상 중앙 프로세싱 유닛 (CPU) 프로그램이 물리적 프로세서 내에서 실행될 수도 있다. 실행될 때, 가상 CPU 프로그램은 둘 이상의 가상 CPU들이 물리적 프로세서 상에서 실행되게 한다. 가상 CPU들은 디바이스 내에서 운영중인 둘 이상의 물리적 프로세서들을 시뮬레이션할 수도 있다.
블록 906에서, 제 0 물리적 코어는 파워 업 된다, 즉, 동력을 공급받는다. 블록 907에서, 제 0 DCVS 알고리즘이 제 0 물리적 코어에서 국부적으로 실행될 수도 있다. 블록 908에서, 하나 이상의 태스크들, 스레드들, 또는 이들의 조합이 가상 CPU들에서 가상으로 실행될 수도 있다. 게다가, 블록 910에서, 하나 이상의 태스크들, 스레드들, 또는 이들의 조합이 제 0 물리적 코어에서 실행될 수도 있다.
결정블록 912로 이동하면, MP 제어기는 디바이스가 파워 오프 되었는지를 결정할 수도 있다. 그렇다면, 방법 (900)은 종료될 수도 있다. 그렇지 않고, 디바이스가 파워 온인 채로 유지되면, 방법 (900)은 블록 914로 이동할 수도 있고 MP 제어기는 가상 코어들 상의 작업부하에서의 병렬도의 실행 평균을 하이퍼바이저로부터 수신할 수도 있다. 특정 양태에서, 임의의 순간에, 운영 체제 (OS) 의 레디-투-런 큐들 상에서 대기하는 태스크들, 스레드, 또는 이들의 조합의 총 수와 실제로 실행중인 태스크들의 수를 더한 값이 가상 코어들 상의 작업부하에서의 병렬도의 근사치일 수도 있다.
결정블록 916에서, MP 제어기는 병렬도가 제 1 웨이크 조건과 동일한지를 결정할 수도 있다. 특정 양태에서, 제 1 웨이크 조건은 가상 코어들 상의 작업부하에서의 병렬도에 연관된 임계값일 수도 있다. 예를 들어, 임계값은 OS 스케줄러 큐들에서의 레디-투-런 스레드들의 최대 수일 수도 있고, 병렬도가 이 임계값 이상이면, 제 1 웨이크 조건은 충족될 수도 있다.
결정블록 916으로 리턴하여, 병렬도가 제 1 웨이크 조건과 동일하지 않으면, 방법 (900)은 블록 914로 리턴할 수도 있고 방법 (900)은 여기서 설명된 바와 같이 계속될 수도 있다. 그렇지 않고, 병렬도가 제 1 웨이크 조건과 동일하면, 방법 (900)은 블록 918로 이동할 수도 있고 MP 제어기는 제 1 웨이크 조건이 충족되는 지속 시간을 결정할 수도 있다. 결정블록 920에서, MP 제어기는 지속 시간이 제 1 확인 웨이크 조건과 동일한지를 결정할 수도 있다. 특정 양태에서, 제 1 확인 웨이크 조건은 임계 시간 값일 수도 있고, 제 1 웨이크 조건이 충족되는 지속 시간이 임계 시간 값 이상이면, 제 1 확인 웨이크 조건은 충족될 수도 있다.
결정블록 920으로 리턴하여, 제 1 웨이크 조건이 충족되는 지속 시간이 제 1 확인 웨이크 조건과 동일하지 않으면, 방법 (900)은 블록 914로 리턴할 수도 있고 방법 (900)은 여기서 설명된 바와 같이 계속될 수도 있다. 반대로, 제 1 확인 웨이크 조건이 충족되면, 방법 (900)은 블록 922로 이동할 수도 있고 MP 제어기는 2개의 코어들, 즉, 제 0 물리적 코어 및 제 1 물리적 코어가 작동하여 스레드들 및 태스크들을 실행하도록 제 1 물리적 코어를 파워 업 할 수도 있다. 블록 924에서, 제 1 DCVS 알고리즘이 제 1 물리적 코어에서 국부적으로 실행될 수도 있다. 그 후, 방법 (900)은 도 10의 블록 1002로 진행할 수도 있다.
이제 도 10의 블록 1002로 이동하면, 하나 이상의 태스크들, 스레드들, 또는 이들의 조합이 제 0 물리적 코어 및 제 1 물리적 코어에서 물리적으로 실행될 수도 있다. 결정블록 1004에서, 디바이스가 파워 오프될지를 MP 제어기가 결정할 수도 있다. 그렇다면, 방법 (900)은 종료될 수도 있다. 그렇지 않고, 디바이스가 파워 온인 채로 유지되면, 방법 (900)은 블록 1006으로 이동할 수도 있고 MP 제어기는 가상 코어들 상의 작업부하에서의 병렬도의 실행 평균을 하이퍼바이저로부터 수신할 수도 있다.
결정블록 1008에서, MP 제어기는 병렬도가 제 1 슬립 조건과 동일한지를 결정할 수도 있다. 특정 양태에서, 제 1 슬립 조건은 가상 코어들 상의 작업부하에서의 병렬도와 연관된 임계값일 수도 있다. 예를 들어, 임계값은 OS 스케줄러 큐들에서의 레디-투-런 스레드들의 최소 수일 수도 있고, 병렬도가 이 임계값 이하이면, 제 1 슬립 조건은 충족될 수도 있다.
결정블록 1008로 리턴하여, 병렬도가 제 1 슬립 조건과 동일하지 않으면, 방법 (900)은 도 11의 블록 1102로 진행할 수도 있고 방법 (900)은 여기서 설명된 바와 같이 계속될 수도 있다. 그렇지 않고, 병렬도가 제 1 슬립 조건과 동일하면, 방법 (900)은 블록 1010으로 이동할 수도 있고 MP 제어기는 제 1 슬립 조건이 충족되는 지속 시간을 결정할 수도 있다. 결정블록 1012에서, MP 제어기는 지속 시간이 제 1 확인 슬립 조건과 동일한지를 결정할 수도 있다. 특정 양태에서, 제 1 확인 슬립 조건은 임계 시간 값일 수도 있고, 제 1 슬립 조건이 충족되는 지속 시간이 임계 시간 값 이상이면, 제 1 확인 슬립 조건은 충족될 수도 있다.
결정블록 1012로 리턴하여, 제 1 슬립 조건이 충족되는 지속 시간이 제 1 확인 슬립 조건과 동일하지 않으면, 방법 (900)은 도 11의 블록 1102로 진행할 수도 있고 방법 (900)은 여기서 설명된 바와 같이 계속될 수도 있다. 반대로, 제 1 확인 슬립 조건이 충족되면, 방법 (900)은 블록 1014로 이동할 수도 있고 MP 제어기는 하나의 코어, 즉, 제 0 물리적 코어가 작동하여 스레드들 및 태스크들을 실행하도록 제 1 물리적 코어를 파워 다운 할 수도 있다. 그 후, 방법 (900)은 도 9의 블록 910로 리턴하고 방법 (900)은 여기서 설명된 바와 같이 계속할 수도 있다.
이제 도 11을 참조하면, 블록 1102에서, MP 제어기는 가상 코어들 상의 작업부하에서의 병렬도의 실행 평균을 하이퍼바이저로부터 수신할 수도 있다. 결정블록 1104에서, MP 제어기는 병렬도가 제 N 웨이크 조건과 동일한지를 결정할 수도 있다. 특정 양태에서, 제 N 웨이크 조건은 가상 코어들 상의 작업부하에서의 병렬도에 연관된 임계값일 수도 있다. 예를 들어, 임계값은 OS 스케줄러 큐들에서의 레디-투-런 스레드들의 최대 수일 수도 있고, 병렬도가 이 임계값 이상이면, 제 N 웨이크 조건은 충족될 수도 있다.
결정블록 1104로 리턴하여, 병렬도가 제 N 웨이크 조건과 동일하지 않으면, 방법 (900)은 도 10의 블록 1002로 리턴할 수도 있고 방법 (900)은 여기서 설명된 바와 같이 계속될 수도 있다. 그렇지 않고, 병렬도가 제 N 웨이크 조건과 동일하면, 방법 (900)은 블록 1106으로 이동할 수도 있고 MP 제어기는 제 N 웨이크 조건이 충족되는 지속 시간을 결정할 수도 있다. 결정블록 1108에서, MP 제어기는 지속 시간이 제 N 확인 웨이크 조건과 동일한지를 결정할 수도 있다. 특정 양태에서, 제 N 확인 웨이크 조건은 임계 시간 값일 수도 있고, 제 N 웨이크 조건이 충족되는 지속 시간이 임계 시간 값 이상이면, 제 N 확인 웨이크 조건은 충족될 수도 있다.
결정블록 1108로 리턴하여, 제 N 웨이크 조건이 충족되는 지속 시간이 제 N 확인 웨이크 조건과 동일하지 않으면, 방법 (900)은 도 10의 블록 1002로 리턴할 수도 있고 방법 (900)은 여기서 설명된 바와 같이 계속될 수도 있다. 반대로, 제 N 확인 웨이크 조건이 충족되면, 방법 (900)은 블록 1110으로 이동할 수도 있고 MP 제어기는 N개의 코어들, 즉, 제 0 물리적 코어, 제 1 물리적 코어 및 제 N 물리적 코어가 작동하여 스레드들 및 태스크들을 실행하도록 제 N 물리적 코어를 파워 업 할 수도 있다. 블록 1112에서, 제 N DCVS 알고리즘은 제 N 물리적 코어에서 국부적으로 실행될 수도 있다. 그 후, 방법 (900)은 도 12의 블록 1202로 진행할 수도 있다.
도 12의 블록 1202에서, 하나 이상의 태스크들, 스레드들, 또는 이들의 조합은 제 0 물리적 코어, 제 1 물리적 코어, 및 제 N 물리적 코어에서 물리적으로 실행될 수도 있다. 결정블록 1204에서, MP 제어기는 디바이스가 파워 오프되었는지를 결정할 수도 있다. 그렇다면, 방법 (900)은 종료될 수도 있다. 그렇지 않고, 디바이스가 파워 온인 채로 유지되면, 방법 (900)은 블록 1206으로 이동할 수도 있고 MP 제어기는 가상 코어들 상의 작업부하에서의 병렬도의 실행 평균을 하이퍼바이저로부터 수신할 수도 있다.
결정블록 1208에서, MP 제어기는 병렬도가 제 N 슬립 조건과 동일한지를 결정할 수도 있다. 특정 양태에서, 제 N 슬립 조건은 가상 코어들 상의 작업부하에서의 병렬도에 연관된 임계값일 수도 있다. 예를 들어, 임계값은 OS 스케줄러 큐들에서의 레디-투-런 스레드들의 최소 수일 수도 있고, 병렬도가 이 임계값 이하이면, 제 N 슬립 조건은 충족될 수도 있다.
결정블록 1208로 리턴하여, 병렬도가 제 N 슬립 조건과 동일하지 않으면, 방법 (900)은 블록 1202로 진행할 수도 있고 방법 (900)은 여기서 설명된 바와 같이 계속될 수도 있다. 그렇지 않고, 병렬도가 제 N 웨이크 조건과 동일하면, 방법 (900)은 블록 1210으로 이동할 수도 있고 MP 제어기는 제 N 슬립 조건이 충족되는 지속 시간을 결정할 수도 있다. 결정블록 1212에서, MP 제어기는 지속 시간이 제 N 확인 슬립 조건과 동일한지를 결정할 수도 있다. 특정 양태에서, 제 N 확인 슬립 조건은 임계 시간 값일 수도 있고, 제 N 슬립 조건이 충족되는 지속 시간이 임계 시간 값 이상이면, 제 N 확인 슬립 조건은 충족될 수도 있다.
결정블록 1212로 리턴하여, 제 N 슬립 조건이 충족되는 지속 시간이 제 N 확인 슬립 조건과 동일하지 않으면, 방법 (900)은 블록 1202로 리턴할 수도 있고 방법 (900)은 여기서 설명된 바와 같이 계속될 수도 있다. 반대로, 제 N 확인 슬립 조건이 충족되면, 방법 (900)은 블록 1214로 이동할 수도 있고 MP 제어기는 N - 1 개의 코어들, 예컨대, (N이 10이고 제 2 코어가 파워 다운 된다면) 제 0 물리적 코어, 및 제 1 물리적 코어가 작동하여 스레드들 및 태스크들을 실행하도록 제 N 물리적 코어를 파워 다운할 수도 있다. 그 후, 방법 (900)은 도 10의 블록 1002로 리턴하고 방법 (900)은 여기서 설명된 바와 같이 계속할 수도 있다.
이제 도 13을 참조하면, 다중코어 프로세서를 테스트하는 방법이 보여지고 일반적으로 1300으로 지정된다. 도시된 바와 같이, 방법 (1300)은 테스트 프로그램이 만들어질 수도 있는 블록 1302에서 시작할 수도 있다. 테스트 프로그램은 여기서 설명된 바와 같이, 복수의 코어들에 병렬도에 의존하여 파워 업 및 다운 하게 하는 가변하는 병렬도를 갖는 정상 (steady) 상태 작업부하를 포함할 수도 있다.
블록 1304로 이동하면, 테스트 프로그램은 다중코어 프로세서를 구비하는 무선 디바이스 상에 로딩될 수도 있다. 블록 1306에서, 복수의 코어들이 무선 디바이스 상에서 감시될 수도 있다. 예를 들어, 각각의 코어에 대한 코어 업/다운 상태는 감시될 수도 있다. 이 코어 업/다운 상태는, 소비된 총 전력, 작업부하들이 완료된 속력, 또는 이들의 조합을 감시함으로써, 각각의 코어에 대한 파워를 감시하는 것에 의해 감시될 수도 있다.
블록 1308에서, 테스트 프로그램은 무선 디바이스에서 실행될 수도 있다. 더구나, 결정블록 1310에서, 무선 디바이스 내의 코어들이 테스트 프로그램의 실행에 올바르게 반응하는지가 결정될 수도 있다. 다르게 말하면, 테스트 프로그램의 실행에 응답하여 코어들이 정확하게 파워 업 및/또는 다운되는지 여부가 결정될 수도 있다. 결정블록 1310에서, 코어들이 테스트 프로그램의 실행에 올바르게 응답하지 않는다면, 방법 (1300)은 블록 1312로 이동할 수도 있고 실패 (fail) 라는 결과가 표시될 수도 있다. 그 다음 방법 (1300)은 종료될 수도 있다.
결정블록 1310에서, 코어들이 테스트 프로그램의 실행에 올바르게 응답한다면, 방법은 블록 1314로 진행하고 통과 (pass) 라는 결과가 표시될 수도 있다. 그 후, 방법 (1300)은 종료될 수도 있다.
본 명세서에서 설명되는 방법 단계들이 설명된 바와 같은 순서로 반드시 수행될 필요는 없다는 것이 이해된다. 게다가, "그 후", "그 다음", "다음으로" 등과 같은 단어들은 단계들의 순서를 제한하려고 의도된 것이 아니다. 이들 단어들은 단순히 방법 단계들의 설명을 통해 판독기를 안내하는데 사용된다. 더구나, 본 명세서에서 설명되는 방법들은 휴대용 컴퓨팅 디바이스 (PCD) 상에서 실행가능한 것으로 설명되었다. PCD는 모바일 전화기 디바이스, 개인휴대 정보 단말 디바이스, 스마트북 컴퓨팅 디바이스, 넷북 컴퓨팅 디바이스, 랩톱 컴퓨팅 디바이스, 데스크톱 컴퓨팅 디바이스, 또는 이들의 조합일 수 있다.
특정 양태에서, 본 명세서에서 설명되는 시스템 및 방법들은 가상화 시스템에서 가상 CPU들의 사용효율을 감시하는 것에 의해 작업부하 병렬도를 동적으로 추측할 수도 있다. CPU 가상화로, 일정한 소프트웨어 요구사항들이 하이 레벨 운영 체제 (HLOS) 에서 제거될 수도 있고 하이퍼바이저에 전달될 수도 있다. 이처럼, 단일 하이퍼바이저 및 MP-DCVS 디자인은 이론적으로는 다양한 HLOS들에 걸쳐 일관되게 작용할 수 있다. 특정 양태에서, MP-DCVS 소프트웨어는 하이퍼바이저의 부분일 수도 있거나 또는 그것은 하이퍼바이저에 대한 권한 (privileged) 인터페이스를 가질 수도 있다.
가상화 시스템에서, 하드웨어 CPU 자원들은 가상 CPU들로서 추상화될 수도 있다. 단일 하드웨어 CPU는 운영 체제에 대한 하나 이상의 다중 가상 CPU들로서 나타내어질 수도 있다. 이 능력을 이용하면, 2개의 하드웨어 (즉, 물리적) 코어 시스템의 경우, 많은 물리적 코어들에 실제로 파워 업 되는 방법에 무관하게, 2개의 가상 코어들이 운영 체제에 나타날 수도 있다. HLOS는 그것이 올웨이즈 온 멀티 프로세서 (MP) 시스템이었던 것처럼 실행될 수도 있고, HLOS는 하나 또는 양쪽 가상 CPU들에 대한 태스크들을 스케줄링할 수도 있다.
하이퍼바이저의 병렬 모니터 MP-DCVS 컴포넌트는 2개의 가상 CPU들의 HLOS의 사용을 감시하여, 작업부하에서의 병렬 레벨을 나타낼 수도 있다. 하나의 양태에서, 병렬도는 단순히 2개의 가상 CPU들의 사용효율들의 합이다. 각각의 가상 CPU에 대한 사용효율은 액티브 가상 CPU 사이클들의 수를 전체 가상 CPU 사이클들의 수에 의해 나눈 것이다. 액티브 가상 사이클들은, 가상 CPU가 유휴가 아니거나 또는 OS 유휴 태스크를 실행하지 않는 사이클들이다.
완전 가상화 (fully-virtualized) 시스템에서, 가상 CPU의 유휴 상태로의 진입은 ARM 명령들 WFI 또는 WFE (wait for interrupt 또는 wait for event) 와 같은 명령들을 가로채는 하이퍼바이저에 의해 검출될 수 있다. 이들 명령들은 일반적으로 운영 체제들의 유휴 태스크들에 의해 호출된다. 그것들이 실제 하드웨어 자원들에 영향을 미치기 때문에, 이들 명령들은 완전 가상화 시스템에 대한 하이퍼바이저의 진입을 유발할 수도 있다.
파라-가상화 (para-virtualized) 시스템에서, 운영 체제는 WFI/WFE를 직접 실행하는 시도 대신에 특수 명령들 (SVC, supervisor call) 를 통해 유휴 상황을 나타내기 위해 하이퍼바이저 호들을 직접 호출할 수도 있다. 이 양태에서, 하이퍼바이저는 WFI/WFE 시도들을 가로채기할 필요가 없고 유휴 상황이 직접 통지된다.
본 명세서에서 개시된 시스템 및 방법들은 가상 CPU 사용효율의 합을 감시할 수도 있다. 하나의 양태에서, 병렬 모니터는 가상 CPU 사용효율을 주기적으로, 이를테면 1 밀리초 마다 샘플링할 수도 있다. 다른 양태에서, 병렬 모니터는 가상 CPU가 유휴 상태에 들어가거나 유휴 상태로부터 나갈 때마다 하이퍼바이저로부터 콜백을 수신할 수도 있다. 두 경우들에서, 병렬 모니터는 순간 판독치들을 작업부하에서의 병렬도의 실행 평균에 누적시킨다.
본 명세서에서 개시된 멀티 프로세서 제어기는, 가상 코어들에서의 병렬도에 기초하여 얼머나 많은 물리적 코어들에 동력을 공급할지를 결정할 수도 있다. 듀얼-코어 시스템을 위한 하나의 양태에서, 다음 결정 매개변수들이 멀티 프로세서 제어기에 의해 인가될 수도 있다: 평균 병렬성에 대한 웨이크 임계치 Nw; 제 2 코어가 웨이크업 하기 전에 Nw 임계치가 초과된 지속 시간 Tw; 평균 병렬성에 대한 슬립 임계치 Ns; 및 제 2 코어가 슬립되기 전에 Ns 임계치가 초과되어야 하는 지속 시간 Ts.
비 병렬 작업부하들을 실행할 때, HLOS는 가상 CPU들 둘 다를 0.5 보다 많은 사용효율로 유지하지 못할 수도 있다. 따라서, 이것은 임의의 모니터링 기간에 대해 기껏해야 0.5 + 0.5 = 1의 병렬도로서 보여질 것이다. 이들 상황들에서, 그 값이 Ts 를 초과하는 기간 동안 Ns 미만이면, 멀티 프로세서 제어기는 제 2 코어를 붕괴시킬 수도 있다.
진정한 병렬 작업부하들을 실행할 때, HLOS는 가상 CPU들 둘 다를 0.5를 넘는 사용효율로 바쁘게 유지할 수 있을 것이다. 다시, 사용효율 값들의 합은 임의의 모니터링 기간에 걸친 병렬성의 평균 레벨을 나타낸다. 이들 상황들에서, 그 값이 Tw 를 초과하는 기간 동안 Nw 를 초과하면, MP-DCVS는 제 2 코어를 전력 복원할 수도 있다.
본 명세서에서 개시되는 시스템 및 방법들은 동시에 다수의 운영 체제들/환경들로부터의 병렬성을 지원하게 확장될 수도 있다. 그 경우, N-코어 하드웨어 시스템에 대해, 모든 실행중인 운영 환경이 N 개의 가상 CPU들로 나타내어진다. M 개 운영 체제들/환경들이 실행중이라고 가정하면, M*N 개의 가상 CPU들이 인스턴스화될 수도 있다. 병렬도를 계산하기 위해, 병렬 모니터는 다수의 운영 체제들에 걸쳐 있는 모두 M*N 개의 가상 CPU들의 총 사용효율을 합산한다.
다른 양태에서, 본 명세서에서 설명되는 시스템 및 방법들은 다수의 프로세서들, 다중코어 프로세서들, 다수의 다중코어 프로세서들, 또는 그것들의 임의의 조합을 동적으로 제어하는데 사용될 수도 있다. 더구나, 본 명세서에서 설명되는 시스템 및 방법들은 임의의 수의 프로세서들, 또는 다중코어 프로세서들을 동적으로 제어하는데 사용될 수도 있다. 하나의 양태에서, 각각의 운영 체제에 주어진 다수의 가상 코어들은 그 운영 체제에 액세스 가능한 물리적 코어들의 수와 동일할 수도 있다. 다른 양태에서, 각각의 운영 체제에 주어진 가상 코어들의 수는 그 운영 체제에 액세스 가능한 물리적 코어들의 수 미만일 수도 있다. 더구나, 또 다른 양태에서, 각각의 운영 체제에 주어진 가상 코어들의 수는 그 운영 체제에 액세스 가능한 물리적 코어들의 수보다 클 수도 있다. 게다가, 본 명세서에서 설명되는 시스템 및 방법들은 총 시스템 부하, 예컨대, 병렬도에 기초하여 다수의 코어들, 또는 프로세서들을 파워 온 및 오프하는데 사용될 수도 있다. 예를 들어, 4개의 코어 시스템에서, 작업부하는 갑자기 떨어질 수도 있고 3개의 코어들은 동시에 파워 오프될 수도 있다.
본 명세서에 개시된 방법들은 애플리케이션들의 임의의 변형예들을 요구하지 않거나 또는 본 명세서에서 개시된 애플리케이션들 및 방법들을 실행하는 운영 체제들은 다수의 운영 체제들에 걸쳐 적용될 수도 있다. 게다가, 본 명세서에 개시된 방법들은 잠정적인 오픈 소스 코드를 포함하여, 운영 체제 코드에 얽매이지 않을 수도 있다. 게다가, 본 명세서에 개시된 방법들은 다수의 동시 운영 체제들 또는 환경들에 걸쳐서 병렬성을 발견하고 이용할 수도 있다. 본 명세서에 개시된 방법들은, 단일 OS 내의 스레드-레벨에서, 단일 OS 내의 프로세스-레벨에서, 또는 다수의 OS들에 걸친 스레드- 또는 프로세스-레벨에서 병렬성이 발견되는 지의 여부에 무관하다고 (agnostic) 간주될 수도 있다.
하나 이상의 예시적인 양태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그것들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 머신 판독가능 매체, 즉, 컴퓨터 판독가능 매체와 같은 컴퓨터 프로그램 제품상에 저장되거나 전송될 수도 있다. 컴퓨터 판독가능 매체는 한 장소에서 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 컴퓨터 저장 매체 및 통신 매체 양쪽 모두를 포함한다. 저장 매체는 컴퓨터에 의해 액세스 가능할 수 있는 이용가능한 임의의 매체일 수도 있다. 제한되지 않는 예로, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 또는 소망의 프로그램 코드를 컴퓨터에 의해 액세스될 수도 있는 명령들 또는 데이터 구조들의 형태로 운반하거나 저장하는데 사용될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 또한, 어떤 관련된 것이라도 사실상 컴퓨터 판독가능 매체라고 한다. 예를 들어, 소프트웨어가 웹사이트, 서버, 또는 다른 원격 자원으로부터 동축 케이블, 광섬유 케이블, 꼬임 쌍 (twisted pair), 디지털 가입자 회선 (DSL), 또는 무선 기술들 이를테면 적외선, 라디오, 및/또는 마이크로파를 이용하여 전송된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술들은 매체의 정의에 포함된다. 디스크 (Disk 및 disc) 는 여기서 사용되는 바와 같이, 콤팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하는데, 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하지만, 디스크 (disc) 들은 레이저들로 광학적으로 데이터를 재생한다. 상기한 것들의 조합들도 컴퓨터 판독가능 미디어의 범위 내에 포함되어야 한다.
선택된 다수의 양태들이 도시되고 상세히 설명되었지만, 갖가지 대체물들 및 개조물들이, 다음의 청구항들에 의해 정의된 바와 같은 본 발명의 사상 및 범위로부터 벗어나지 않고 형성될 수도 있다는 것이 이해될 것이다.
Claims (32)
- 무선 디바이스 내의 다중코어 중앙 프로세싱 유닛 (CPU) 내의 전력을 동적으로 제어하는 방법으로서,
상기 다중코어 CPU의 적어도 하나의 물리적 코어 상에서 복수의 가상 코어들을 실행하는 단계;
상기 복수의 가상 코어들 중 적어도 하나에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 실행하는 단계;
상기 복수의 가상 코어들 상의 작업부하에서의 병렬도를 나타내는 값을 수신하는 단계로서, 상기 병렬도를 나타내는 값은 상기 다중코어 CPU의 운영 체제 (OS) 의 레디-투-런 (ready-to-run) 큐 (queue) 들 내의 태스크들 및 스레드들의 총 수를 포함하는, 상기 수신하는 단계;
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 제 1 웨이크 조건 이상인지 여부를 결정하는 단계; 및
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 웨이크 조건 이상이라는 결정에 적어도 기초하여 상기 다중코어 CPU 내의 전력을 제어하는 단계를 포함하는, 전력을 동적으로 제어하는 방법. - 제 1 항에 있어서,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 웨이크 조건 이상일 경우에 상기 제 1 웨이크 조건이 충족되는 지속 시간을 결정하는 단계; 및
상기 지속 시간이 제 1 확인 웨이크 조건과 동일한지 여부를 결정하는 단계를 더 포함하는, 전력을 동적으로 제어하는 방법. - 제 2 항에 있어서,
상기 지속 시간이 상기 제 1 확인 웨이크 조건과 동일할 경우에 제 1 물리적 코어를 파워 업 하는 단계; 및
제 0 물리적 코어 및 상기 제 1 물리적 코어에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 물리적으로 실행하는 단계를 더 포함하는, 전력을 동적으로 제어하는 방법. - 제 3 항에 있어서,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 병렬도를 나타내는 값은 상기 복수의 가상 코어들 내에서 실행중인 태스크들 및 스레드들의 총 수를 더 포함하는, 전력을 동적으로 제어하는 방법. - 제 4 항에 있어서,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 제 1 슬립 조건 이하인지 여부를 결정하는 단계를 더 포함하는, 전력을 동적으로 제어하는 방법. - 제 5 항에 있어서,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 슬립 조건 이하일 경우에 상기 제 1 슬립 조건이 충족되는 제 2 지속 시간을 결정하는 단계를 더 포함하는, 전력을 동적으로 제어하는 방법. - 제 6 항에 있어서,
상기 제 1 슬립 조건이 충족되는 상기 제 2 지속 시간이 제 1 확인 슬립 조건과 동일한지 여부를 결정하는 단계를 더 포함하는, 전력을 동적으로 제어하는 방법. - 제 7 항에 있어서,
상기 제 1 슬립 조건이 충족되는 상기 제 2 지속 시간이 상기 제 1 확인 슬립 조건과 동일할 경우에 상기 제 1 물리적 코어를 파워 다운 하는 단계를 더 포함하는, 전력을 동적으로 제어하는 방법. - 무선 디바이스로서,
상기 무선 디바이스의 다중코어 중앙 프로세싱 유닛 (CPU)의 적어도 하나의 물리적 코어 상에서 복수의 가상 코어들을 실행하는 수단;
상기 복수의 가상 코어들 중 적어도 하나에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 실행하는 수단;
상기 복수의 가상 코어들 상의 작업부하에서의 병렬도를 나타내는 값을 수신하는 수단으로서, 상기 병렬도를 나타내는 값은 상기 다중코어 CPU의 운영 체제 (OS) 의 레디-투-런 (ready-to-run) 큐 (queue) 들 내의 태스크들 및 스레드들의 총 수를 포함하는, 상기 수신하는 수단;
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 제 1 웨이크 조건 이상인지 여부를 결정하는 수단; 및
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 웨이크 조건 이상이라는 결정에 적어도 기초하여 상기 다중코어 CPU 내의 전력을 제어하는 수단을 포함하는, 무선 디바이스. - 제 9 항에 있어서,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 웨이크 조건 이상일 경우에 상기 제 1 웨이크 조건이 충족되는 지속 시간을 결정하는 수단; 및
상기 지속 시간이 제 1 확인 웨이크 조건과 동일한지 여부를 결정하는 수단을 더 포함하는, 무선 디바이스. - 제 10 항에 있어서,
상기 지속 시간이 상기 제 1 확인 웨이크 조건과 동일할 경우에 제 1 물리적 코어를 파워 업 하는 수단; 및
제 0 물리적 코어 및 상기 제 1 물리적 코어에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 물리적으로 실행하는 수단을 더 포함하는, 무선 디바이스. - 제 11 항에 있어서,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 병렬도를 나타내는 값은 상기 복수의 가상 코어들 내에서 실행중인 태스크들 및 스레드들의 총 수를 더 포함하는, 무선 디바이스. - 제 12 항에 있어서,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 제 1 슬립 조건 이하인지 여부를 결정하는 수단을 더 포함하는, 무선 디바이스. - 제 13 항에 있어서,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 슬립 이하일 경우에 상기 제 1 슬립 조건이 충족되는 제 2 지속 시간을 결정하는 수단을 더 포함하는, 무선 디바이스. - 제 14 항에 있어서,
상기 제 1 슬립 조건이 충족되는 상기 제 2 지속 시간이 제 1 확인 슬립 조건과 동일한지 여부를 결정하는 수단을 더 포함하는, 무선 디바이스. - 제 15 항에 있어서,
상기 제 1 슬립 조건이 충족되는 상기 제 2 지속 시간이 상기 제 1 확인 슬립 조건과 동일할 경우에 상기 제 1 물리적 코어를 파워 다운 하는 수단을 더 포함하는, 무선 디바이스. - 무선 디바이스로서,
프로세서를 포함하며,
상기 프로세서는,
상기 무선 디바이스의 다중코어 중앙 프로세싱 유닛 (CPU)의 적어도 하나의 물리적 코어 상에서 복수의 가상 코어들을 실행하며;
상기 복수의 가상 코어들 중 적어도 하나에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 실행하며;
상기 복수의 가상 코어들 상의 작업부하에서의 병렬도를 나타내는 값을 수신 - 상기 병렬도를 나타내는 값은 상기 다중코어 CPU의 운영 체제 (OS) 의 레디-투-런 (ready-to-run) 큐 (queue) 들 내의 태스크들 및 스레드들의 총 수를 포함 - 하며;
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 제 1 웨이크 조건 이상인지 여부를 결정하며; 그리고
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 웨이크 조건 이상이라는 결정에 적어도 기초하여 상기 다중코어 CPU 내의 전력을 제어하게 동작가능한, 무선 디바이스. - 제 17 항에 있어서,
상기 프로세서는,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 웨이크 조건 이상일 경우에 상기 제 1 웨이크 조건이 충족되는 지속 시간을 결정하며; 그리고
상기 지속 시간이 제 1 확인 웨이크 조건과 동일한지 여부를 결정하도록 추가로 동작가능한, 무선 디바이스. - 제 18 항에 있어서,
상기 프로세서는,
상기 지속 시간이 상기 제 1 확인 웨이크 조건과 동일할 경우에 제 1 물리적 코어를 파워 업 하고; 그리고
제 0 물리적 코어 및 상기 제 1 물리적 코어에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 물리적으로 실행하도록 추가로 동작가능한, 무선 디바이스. - 제 19 항에 있어서,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 병렬도를 나타내는 값은 상기 복수의 가상 코어들 내에서 실행중인 태스크들 및 스레드들의 총 수를 더 포함하는, 무선 디바이스. - 제 20 항에 있어서,
상기 프로세서는,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 제 1 슬립 조건 이하인지 여부를 결정하도록 추가로 동작가능한, 무선 디바이스. - 제 21 항에 있어서,
상기 프로세서는,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 슬립 조건 이하일 경우에 상기 제 1 슬립 조건이 충족되는 제 2 지속 시간을 결정하도록 추가로 동작가능한, 무선 디바이스. - 제 22 항에 있어서,
상기 프로세서는,
상기 제 1 슬립 조건이 충족되는 상기 제 2 지속 시간이 제 1 확인 슬립 조건과 동일한지 여부를 결정하도록 추가로 동작가능한, 무선 디바이스. - 제 23 항에 있어서,
상기 프로세서는,
상기 제 1 슬립 조건이 충족되는 상기 제 2 지속 시간이 상기 제 1 확인 슬립 조건과 동일할 경우에 상기 제 1 물리적 코어를 파워 다운 하도록 추가로 동작가능한, 무선 디바이스. - 프로세서로 하여금 동작들을 수행하게 하도록 구성된 컴퓨터 실행가능한 명령어들이 저장된 컴퓨터 판독가능 저장 매체로서, 상기 동작들은,
무선 디바이스의 다중코어 중앙 프로세싱 유닛 (CPU)의 적어도 하나의 물리적 코어 상에서 복수의 가상 코어들을 실행하는 것;
상기 복수의 가상 코어들 중 적어도 하나에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 실행하는 것;
상기 복수의 가상 코어들 상의 작업부하에서의 병렬도를 나타내는 값을 수신하는 것으로서, 상기 병렬도를 나타내는 값은 상기 다중코어 CPU의 운영 체제 (OS) 의 레디-투-런 (ready-to-run) 큐 (queue) 들 내의 태스크들 및 스레드들의 총 수를 포함하는, 상기 수신하는 것;
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 제 1 웨이크 조건 이상인지 여부를 결정하는 것; 및
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 웨이크 조건 이상이라는 결정에 적어도 기초하여 상기 다중코어 CPU 내의 전력을 제어하는 것을 포함하는, 컴퓨터 판독가능 저장 매체. - 제 25 항에 있어서,
상기 저장된 컴퓨터 실행가능한 명령어들은 프로세서로 하여금,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 웨이크 조건 이상일 경우에 상기 제 1 웨이크 조건이 충족되는 지속 시간을 결정하는 것; 및
상기 지속 시간이 제 1 확인 웨이크 조건과 동일한지 여부를 결정하는 것을 더 포함하는 동작들을 수행하게 하도록 구성된, 컴퓨터 판독가능한 저장 매체. - 제 26 항에 있어서,
상기 저장된 컴퓨터 실행가능한 명령어들은 프로세서로 하여금,
상기 지속 시간이 상기 제 1 확인 웨이크 조건과 동일할 경우에 제 1 물리적 코어를 파워 업 하는 것; 및
제 0 물리적 코어 및 상기 제 1 물리적 코어에서 하나 이상의 태스크들, 하나 이상의 스레드들, 또는 이들의 조합을 물리적으로 실행하는 것을 더 포함하는 동작들을 수행하게 하도록 구성된, 컴퓨터 판독가능한 저장 매체. - 제 27 항에 있어서,
상기 저장된 컴퓨터 실행가능한 명령어들은 프로세서로 하여금,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 병렬도를 나타내는 값은 상기 복수의 가상 코어들 내에서 실행중인 태스크들 및 스레드들의 총 수를 더 포함하는 동작들을 수행하게 하도록 구성된, 컴퓨터 판독가능한 저장 매체. - 제 28 항에 있어서,
상기 저장된 컴퓨터 실행가능한 명령어들은 프로세서로 하여금,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 제 1 슬립 조건 이하인지 여부를 결정하는 것을 더 포함하는 동작들을 수행하게 하도록 구성된, 컴퓨터 판독가능한 저장 매체. - 제 29 항에 있어서,
상기 저장된 컴퓨터 실행가능한 명령어들은 프로세서로 하여금,
상기 복수의 가상 코어들 상의 상기 작업부하에서의 상기 병렬도를 나타내는 값이 상기 제 1 슬립 조건 이하일 경우에 상기 제 1 슬립 조건이 충족되는 제 2 지속 시간을 결정하는 것을 더 포함하는 동작들을 수행하게 하도록 구성된, 컴퓨터 판독가능한 저장 매체. - 제 30 항에 있어서,
상기 저장된 컴퓨터 실행가능한 명령어들은 프로세서로 하여금,
상기 제 1 슬립 조건이 충족되는 상기 제 2 지속 시간이 제 1 확인 슬립 조건과 동일한지 여부를 결정하는 것을 더 포함하는 동작들을 수행하게 하도록 구성된, 컴퓨터 판독가능한 저장 매체. - 제 31 항에 있어서,
상기 저장된 컴퓨터 실행가능한 명령어들은 프로세서로 하여금,
상기 제 1 슬립 조건이 충족되는 상기 제 2 지속 시간이 상기 제 1 확인 슬립 조건과 동일할 경우에 상기 제 1 물리적 코어를 파워 다운하는 것을 더 포함하는 동작들을 수행하게 하도록 구성된, 컴퓨터 판독가능한 저장 매체.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US28696009P | 2009-12-16 | 2009-12-16 | |
US61/286,960 | 2009-12-16 | ||
US12/944,202 US8650426B2 (en) | 2009-12-16 | 2010-11-11 | System and method for controlling central processing unit power in a virtualized system |
US12/944,202 | 2010-11-11 | ||
PCT/US2010/059538 WO2011084329A1 (en) | 2009-12-16 | 2010-12-08 | System and method for controlling central processing unit power in a virtualized system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127018635A Division KR101503579B1 (ko) | 2009-12-16 | 2010-12-08 | 가상화 시스템에서 중앙 프로세싱 유닛 전력을 제어하는 시스템 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20140069252A true KR20140069252A (ko) | 2014-06-09 |
Family
ID=44144256
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127018635A KR101503579B1 (ko) | 2009-12-16 | 2010-12-08 | 가상화 시스템에서 중앙 프로세싱 유닛 전력을 제어하는 시스템 및 방법 |
KR1020147010953A KR20140069252A (ko) | 2009-12-16 | 2010-12-08 | 가상화 시스템에서 중앙 프로세싱 유닛 전력을 제어하는 시스템 및 방법 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127018635A KR101503579B1 (ko) | 2009-12-16 | 2010-12-08 | 가상화 시스템에서 중앙 프로세싱 유닛 전력을 제어하는 시스템 및 방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8650426B2 (ko) |
EP (1) | EP2513751B1 (ko) |
JP (1) | JP5472886B2 (ko) |
KR (2) | KR101503579B1 (ko) |
CN (1) | CN102695998B (ko) |
BR (1) | BR112012014303A2 (ko) |
WO (1) | WO2011084329A1 (ko) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8775830B2 (en) * | 2009-12-16 | 2014-07-08 | Qualcomm Incorporated | System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature |
US9128705B2 (en) * | 2009-12-16 | 2015-09-08 | Qualcomm Incorporated | System and method for controlling central processing unit power with reduced frequency oscillations |
US9104411B2 (en) | 2009-12-16 | 2015-08-11 | Qualcomm Incorporated | System and method for controlling central processing unit power with guaranteed transient deadlines |
US8909962B2 (en) * | 2009-12-16 | 2014-12-09 | Qualcomm Incorporated | System and method for controlling central processing unit power with guaranteed transient deadlines |
US8689037B2 (en) | 2009-12-16 | 2014-04-01 | Qualcomm Incorporated | System and method for asynchronously and independently controlling core clocks in a multicore central processing unit |
US9563250B2 (en) | 2009-12-16 | 2017-02-07 | Qualcomm Incorporated | System and method for controlling central processing unit power based on inferred workload parallelism |
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 |
US9176572B2 (en) | 2009-12-16 | 2015-11-03 | Qualcomm Incorporated | System and method for controlling central processing unit power with guaranteed transient deadlines |
JP5767480B2 (ja) * | 2011-01-31 | 2015-08-19 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報処理装置、情報処理システム、配置構成決定方法、プログラムおよび記録媒体 |
US9354926B2 (en) * | 2011-03-22 | 2016-05-31 | International Business Machines Corporation | Processor management via thread status |
US9804893B2 (en) | 2011-04-08 | 2017-10-31 | Qualcomm Incorporated | Method and apparatus for optimized execution using resource utilization maps |
US10466989B2 (en) * | 2011-09-02 | 2019-11-05 | Microsoft Technology Licensing, Llc. | Fast presentation of markup content having script code |
TWI454905B (zh) * | 2011-09-30 | 2014-10-01 | Intel Corp | 在多核心平台中之受限制的啓動技術 |
KR20130101693A (ko) * | 2012-03-06 | 2013-09-16 | 삼성전자주식회사 | 이종의 운영체제를 사용하는 가상화 시스템의 전력 관리 방법 및 장치 |
WO2013178864A1 (en) * | 2012-05-29 | 2013-12-05 | Nokia Corporation | A method and apparatus for deferring processor selection |
CN103823716A (zh) * | 2012-09-21 | 2014-05-28 | 宏达国际电子股份有限公司 | 具多重中央处理单元的电子装置及其效能管理方法 |
CN102929381B (zh) * | 2012-10-22 | 2015-08-05 | 威盛电子股份有限公司 | 电子系统及其电源管理方法 |
US10162687B2 (en) * | 2012-12-28 | 2018-12-25 | Intel Corporation | Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets |
US9933832B2 (en) * | 2013-03-14 | 2018-04-03 | Vmware, Inc. | Systems and methods for modifying power states in a virtual environment |
US9396012B2 (en) | 2013-03-14 | 2016-07-19 | Qualcomm Incorporated | Systems and methods of using a hypervisor with guest operating systems and virtual processors |
US9727345B2 (en) * | 2013-03-15 | 2017-08-08 | Intel Corporation | Method for booting a heterogeneous system and presenting a symmetric core view |
WO2015015756A1 (ja) * | 2013-08-02 | 2015-02-05 | 日本電気株式会社 | 不揮発性メモリ搭載サーバの省電力制御システム、制御装置、制御方法および制御プログラム |
KR102169692B1 (ko) | 2014-07-08 | 2020-10-26 | 삼성전자주식회사 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법 |
US9696787B2 (en) * | 2014-12-10 | 2017-07-04 | Qualcomm Innovation Center, Inc. | Dynamic control of processors to reduce thermal and power costs |
CN105094945A (zh) * | 2015-07-01 | 2015-11-25 | 北京奇虎科技有限公司 | 虚拟化平台线程控制方法、设备和系统 |
US9740266B2 (en) * | 2015-09-04 | 2017-08-22 | Mediatek Inc. | Apparatus and method for controlling multi-core of electronic device |
US10481876B2 (en) | 2017-01-11 | 2019-11-19 | Microsoft Technology Licensing, Llc | Methods and systems for application rendering |
US11294678B2 (en) | 2018-05-29 | 2022-04-05 | Advanced Micro Devices, Inc. | Scheduler queue assignment |
US11347544B1 (en) * | 2019-09-26 | 2022-05-31 | Facebook Technologies, Llc. | Scheduling work items based on declarative constraints |
CN112783713A (zh) * | 2019-11-08 | 2021-05-11 | 深信服科技股份有限公司 | 一种多核虚拟机卡顿的处理方法、装置、设备和存储介质 |
US11334384B2 (en) * | 2019-12-10 | 2022-05-17 | Advanced Micro Devices, Inc. | Scheduler queue assignment burst mode |
US11948000B2 (en) | 2020-10-27 | 2024-04-02 | Advanced Micro Devices, Inc. | Gang scheduling for low-latency task synchronization |
CN113282344B (zh) * | 2021-05-25 | 2022-11-04 | 中国航空无线电电子研究所 | 在飞腾非对称双核处理器上实现天脉操作系统的方法 |
CN114816718B (zh) * | 2022-05-31 | 2024-10-22 | 苏州浪潮智能科技有限公司 | 一种基于同构处理器的虚拟异构全域任务调度调优方法 |
CN115145687B (zh) * | 2022-06-29 | 2023-03-31 | 科东(广州)软件科技有限公司 | 一种用户态虚拟机任务的调度方法及装置 |
CN115756143B (zh) * | 2022-11-30 | 2024-03-12 | 深圳市领创星通科技有限公司 | 数据包处理的节能方法、装置、计算机设备和存储介质 |
Family Cites Families (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US122101A (en) * | 1871-12-26 | Improvement in apparatus for preparing salt for culinary use | ||
US37922A (en) * | 1863-03-17 | Improved foot corn-planter | ||
US106576A (en) * | 1870-08-23 | Improvement in washing-machines | ||
US76733A (en) * | 1868-04-14 | The worftjs peters co | ||
JPS593651A (ja) | 1982-06-30 | 1984-01-10 | Fujitsu Ltd | フア−ムウエアによる性能測定システム |
JPH0351902A (ja) | 1989-07-20 | 1991-03-06 | Tokyo Electric Co Ltd | データ処理装置 |
US5644769A (en) | 1993-06-14 | 1997-07-01 | Matsushita Electric Industrial Co., Ltd. | System for optimizing program by virtually executing the instruction prior to actual execution of the program to invalidate unnecessary instructions |
JPH086681A (ja) | 1994-04-18 | 1996-01-12 | Hitachi Ltd | 省電力制御システム |
JP2770760B2 (ja) | 1995-01-04 | 1998-07-02 | 日本電気株式会社 | 電力分散マルチプロセッサ |
JPH10268963A (ja) | 1997-03-28 | 1998-10-09 | Mitsubishi Electric Corp | 情報処理装置 |
US6230183B1 (en) | 1998-03-11 | 2001-05-08 | International Business Machines Corporation | Method and apparatus for controlling the number of servers in a multisystem cluster |
US6086171A (en) * | 1999-02-11 | 2000-07-11 | Ashley; Cynthia H. | Carousel shoe cabinet |
KR100613201B1 (ko) * | 2000-08-28 | 2006-08-18 | 마이크로코넥트 엘엘씨 | 씨피유 사용량 측정 방법 |
TW521177B (en) | 2000-08-31 | 2003-02-21 | Primarion Inc | Apparatus and system for providing transient suppression power regulation |
US6718474B1 (en) | 2000-09-21 | 2004-04-06 | Stratus Technologies Bermuda Ltd. | Methods and apparatus for clock management based on environmental conditions |
JP2002099433A (ja) | 2000-09-22 | 2002-04-05 | Sony Corp | 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体 |
US6829713B2 (en) * | 2000-12-30 | 2004-12-07 | Intel Corporation | CPU power management based on utilization with lowest performance mode at the mid-utilization range |
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 |
US6901522B2 (en) | 2001-06-07 | 2005-05-31 | Intel Corporation | System and method for reducing power consumption in multiprocessor system |
US7058824B2 (en) | 2001-06-15 | 2006-06-06 | Microsoft Corporation | Method and system for using idle threads to adaptively throttle a computer |
US6804632B2 (en) | 2001-12-06 | 2004-10-12 | Intel Corporation | Distribution of processing activity across processing hardware based on power consumption considerations |
US7318164B2 (en) * | 2001-12-13 | 2008-01-08 | International Business Machines Corporation | Conserving energy in a data processing system by selectively powering down processors |
US6978389B2 (en) | 2001-12-20 | 2005-12-20 | Texas Instruments Incorporated | Variable clocking in an embedded symmetric multiprocessor system |
US7240223B2 (en) | 2003-05-07 | 2007-07-03 | Apple Inc. | Method and apparatus for dynamic power management in a processor system |
US7134031B2 (en) | 2003-08-04 | 2006-11-07 | Arm Limited | Performance control within a multi-processor system |
JP4549652B2 (ja) * | 2003-10-27 | 2010-09-22 | パナソニック株式会社 | プロセッサシステム |
US7107187B1 (en) * | 2003-11-12 | 2006-09-12 | Sprint Communications Company L.P. | Method for modeling system performance |
US7133806B2 (en) | 2004-05-13 | 2006-11-07 | Ittiam Systems (P) Ltd | Method and apparatus for measurement of processor-utilization |
US7401240B2 (en) | 2004-06-03 | 2008-07-15 | International Business Machines Corporation | Method for dynamically managing power in microprocessor chips according to present processing demands |
US7219245B1 (en) | 2004-06-03 | 2007-05-15 | Advanced Micro Devices, Inc. | Adaptive CPU clock management |
KR100716730B1 (ko) | 2004-06-11 | 2007-05-14 | 삼성전자주식회사 | 중앙 처리 장치의 아이들 상태에서의 시스템 전력 소모절감을 위한 방법 및 그 방법을 적용한 모바일 장치 |
JP3805344B2 (ja) | 2004-06-22 | 2006-08-02 | 株式会社ソニー・コンピュータエンタテインメント | プロセッサ、情報処理装置およびプロセッサの制御方法 |
US7739527B2 (en) * | 2004-08-11 | 2010-06-15 | Intel Corporation | System and method to enable processor management policy in a multi-processor environment |
US7711966B2 (en) * | 2004-08-31 | 2010-05-04 | Qualcomm Incorporated | Dynamic clock frequency adjustment based on processor load |
US7437581B2 (en) | 2004-09-28 | 2008-10-14 | Intel Corporation | Method and apparatus for varying energy per instruction according to the amount of available parallelism |
US7370189B2 (en) | 2004-09-30 | 2008-05-06 | Intel Corporation | Method and apparatus for establishing safe processor operating points in connection with a secure boot |
US7543161B2 (en) | 2004-09-30 | 2009-06-02 | International Business Machines Corporation | Method and apparatus for tracking variable speed microprocessor performance caused by power management in a logically partitioned data processing system |
US7814485B2 (en) * | 2004-12-07 | 2010-10-12 | Intel Corporation | System and method for adaptive power management based on processor utilization and cache misses |
DE102004059996B4 (de) * | 2004-12-13 | 2006-10-05 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Einstellen der Taktfrequenz eines Prozessors |
US7228446B2 (en) | 2004-12-21 | 2007-06-05 | Packet Digital | Method and apparatus for on-demand power management |
US7369967B1 (en) * | 2004-12-27 | 2008-05-06 | Sprint Communications Company L.P. | System and method for monitoring and modeling system performance |
US7502948B2 (en) * | 2004-12-30 | 2009-03-10 | Intel Corporation | Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores |
US7467291B1 (en) * | 2005-02-28 | 2008-12-16 | Sun Microsystems, Inc. | System and method for calibrating headroom margin |
JP4082706B2 (ja) | 2005-04-12 | 2008-04-30 | 学校法人早稲田大学 | マルチプロセッサシステム及びマルチグレイン並列化コンパイラ |
CN101223490A (zh) | 2005-07-14 | 2008-07-16 | Nxp股份有限公司 | 使用历史负载简档来动态调整手持多媒体设备处理器内核的工作频率及可用功率 |
US7490254B2 (en) * | 2005-08-02 | 2009-02-10 | Advanced Micro Devices, Inc. | Increasing workload performance of one or more cores on multiple core processors |
US7548859B2 (en) * | 2005-08-03 | 2009-06-16 | Motorola, Inc. | Method and system for assisting users in interacting with multi-modal dialog systems |
US7233188B1 (en) | 2005-12-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Methods and apparatus for reducing power consumption in a processor using clock signal control |
US7689838B2 (en) * | 2005-12-22 | 2010-03-30 | Intel Corporation | Method and apparatus for providing for detecting processor state transitions |
US7263457B2 (en) | 2006-01-03 | 2007-08-28 | Advanced Micro Devices, Inc. | System and method for operating components of an integrated circuit at independent frequencies and/or voltages |
US20070260898A1 (en) | 2006-05-03 | 2007-11-08 | Edward Burton | Voltage regulator with suspend mode |
US20080005591A1 (en) | 2006-06-28 | 2008-01-03 | Trautman Mark A | Method, system, and apparatus for dynamic thermal management |
US7584369B2 (en) * | 2006-07-26 | 2009-09-01 | International Business Machines Corporation | Method and apparatus for monitoring and controlling heat generation in a multi-core processor |
JP4808108B2 (ja) | 2006-08-29 | 2011-11-02 | パナソニック株式会社 | プロセッサシステム |
WO2008047179A1 (en) | 2006-10-20 | 2008-04-24 | Freescale Semiconductor, Inc. | Device having redundant core and a method for providing core redundancy |
US7949887B2 (en) | 2006-11-01 | 2011-05-24 | Intel Corporation | Independent power control of processing cores |
JP2008129846A (ja) | 2006-11-21 | 2008-06-05 | Nippon Telegr & Teleph Corp <Ntt> | データ処理装置、データ処理方法およびプログラム |
GB2445167A (en) | 2006-12-29 | 2008-07-02 | Advanced Risc Mach Ltd | Managing performance of a processor |
US7793125B2 (en) * | 2007-01-10 | 2010-09-07 | International Business Machines Corporation | Method and apparatus for power throttling a processor in an information handling system |
US7783906B2 (en) * | 2007-02-15 | 2010-08-24 | International Business Machines Corporation | Maximum power usage setting for computing device |
US7730340B2 (en) | 2007-02-16 | 2010-06-01 | Intel Corporation | Method and apparatus for dynamic voltage and frequency scaling |
JP4739271B2 (ja) | 2007-04-19 | 2011-08-03 | 株式会社富士通アドバンストエンジニアリング | 電源制御装置、仮想サーバ管理システム、電源制御方法および電源制御プログラム |
US7865751B2 (en) * | 2007-06-18 | 2011-01-04 | Intel Corporation | Microarchitecture controller for thin-film thermoelectric cooling |
US7902800B2 (en) * | 2007-07-13 | 2011-03-08 | Chil Semiconductor Corporation | Adaptive power supply and related circuitry |
US8356306B2 (en) | 2007-07-31 | 2013-01-15 | Hewlett-Packard Development Company, L.P. | Workload management controller using dynamic statistical control |
US20090049314A1 (en) | 2007-08-13 | 2009-02-19 | Ali Taha | Method and System for Dynamic Voltage and Frequency Scaling (DVFS) |
US7945804B2 (en) | 2007-10-17 | 2011-05-17 | International Business Machines Corporation | Methods and systems for digitally controlled multi-frequency clocking of multi-core processors |
JP5433837B2 (ja) | 2007-12-05 | 2014-03-05 | 株式会社日立製作所 | 仮想計算機システム、仮想計算機の制御方法及びプログラム |
US8024590B2 (en) | 2007-12-10 | 2011-09-20 | Intel Corporation | Predicting future power level states for processor cores |
US20090150696A1 (en) | 2007-12-10 | 2009-06-11 | Justin Song | Transitioning a processor package to a low power state |
JP4488072B2 (ja) * | 2008-01-18 | 2010-06-23 | 日本電気株式会社 | サーバシステム、及びサーバシステムの電力削減方法 |
US8245236B2 (en) * | 2008-02-27 | 2012-08-14 | International Business Machines Corporation | Lock based moving of threads in a shared processor partitioning environment |
JP4996519B2 (ja) * | 2008-03-27 | 2012-08-08 | パナソニック株式会社 | 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法 |
US20090271646A1 (en) * | 2008-04-24 | 2009-10-29 | Vanish Talwar | Power Management Using Clustering In A Multicore System |
US8170845B2 (en) | 2008-09-24 | 2012-05-01 | International Business Machines Corporation | Method and apparatus for automatic performance modeling with load dependent service times and overheads |
US8195962B2 (en) | 2008-11-11 | 2012-06-05 | Globalfoundries Inc. | Method and apparatus for regulating power consumption |
US8924975B2 (en) * | 2009-07-23 | 2014-12-30 | Empire Technology Development Llc | Core selection for applications running on multiprocessor systems based on core and application characteristics |
US9563250B2 (en) * | 2009-12-16 | 2017-02-07 | Qualcomm Incorporated | System and method for controlling central processing unit power based on inferred workload parallelism |
US8689037B2 (en) * | 2009-12-16 | 2014-04-01 | Qualcomm Incorporated | System and method for asynchronously and independently controlling core clocks in a multicore central processing unit |
US8775830B2 (en) * | 2009-12-16 | 2014-07-08 | Qualcomm Incorporated | System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature |
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 |
US9176572B2 (en) * | 2009-12-16 | 2015-11-03 | Qualcomm Incorporated | System and method for controlling central processing unit power with guaranteed transient deadlines |
US9104411B2 (en) * | 2009-12-16 | 2015-08-11 | Qualcomm Incorporated | System and method for controlling central processing unit power with guaranteed transient deadlines |
US9128705B2 (en) * | 2009-12-16 | 2015-09-08 | Qualcomm Incorporated | System and method for controlling central processing unit power with reduced frequency oscillations |
US8909962B2 (en) * | 2009-12-16 | 2014-12-09 | Qualcomm Incorporated | System and method for controlling central processing unit power with guaranteed transient deadlines |
-
2010
- 2010-11-11 US US12/944,202 patent/US8650426B2/en active Active
- 2010-12-08 WO PCT/US2010/059538 patent/WO2011084329A1/en active Application Filing
- 2010-12-08 BR BR112012014303A patent/BR112012014303A2/pt not_active IP Right Cessation
- 2010-12-08 JP JP2012543259A patent/JP5472886B2/ja active Active
- 2010-12-08 CN CN201080056512.XA patent/CN102695998B/zh active Active
- 2010-12-08 KR KR1020127018635A patent/KR101503579B1/ko active IP Right Grant
- 2010-12-08 KR KR1020147010953A patent/KR20140069252A/ko not_active Application Discontinuation
- 2010-12-08 EP EP10796225.0A patent/EP2513751B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2011084329A1 (en) | 2011-07-14 |
JP5472886B2 (ja) | 2014-04-16 |
JP2013513189A (ja) | 2013-04-18 |
EP2513751B1 (en) | 2018-05-09 |
US8650426B2 (en) | 2014-02-11 |
CN102695998B (zh) | 2015-05-20 |
KR20120104380A (ko) | 2012-09-20 |
US20110145616A1 (en) | 2011-06-16 |
KR101503579B1 (ko) | 2015-03-17 |
BR112012014303A2 (pt) | 2016-07-05 |
EP2513751A1 (en) | 2012-10-24 |
CN102695998A (zh) | 2012-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101503579B1 (ko) | 가상화 시스템에서 중앙 프로세싱 유닛 전력을 제어하는 시스템 및 방법 | |
KR101409055B1 (ko) | 추론된 작업부하 병렬성에 기초하여 중앙 처리 장치 전력을 제어하는 시스템 및 방법 | |
KR101409141B1 (ko) | 멀티코어 중앙 프로세싱 유닛에서의 복수의 코어들을 온도에 기초하여 동적으로 제어하는 시스템 및 방법 | |
TWI484329B (zh) | 動態核心切換 | |
JP5764150B2 (ja) | パワー・オン状態から省電力状態に移行させる方法およびコンピュータ | |
EP2972826B1 (en) | Multi-core binary translation task processing | |
KR101499303B1 (ko) | 중앙 처리 유닛 내의 데이터를 샘플링하는 시스템 및 방법 | |
TW201541237A (zh) | 電子裝置及其系統功率管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |