KR101562448B1 - 휴대용 컴퓨팅 디바이스의 멀티코어 프로세서에서 다수의 코어들로의 전력을 동적으로 제어하는 방법 및 시스템 - Google Patents

휴대용 컴퓨팅 디바이스의 멀티코어 프로세서에서 다수의 코어들로의 전력을 동적으로 제어하는 방법 및 시스템 Download PDF

Info

Publication number
KR101562448B1
KR101562448B1 KR1020137029381A KR20137029381A KR101562448B1 KR 101562448 B1 KR101562448 B1 KR 101562448B1 KR 1020137029381 A KR1020137029381 A KR 1020137029381A KR 20137029381 A KR20137029381 A KR 20137029381A KR 101562448 B1 KR101562448 B1 KR 101562448B1
Authority
KR
South Korea
Prior art keywords
percentage
parallel operation
multicore processor
cores
workload
Prior art date
Application number
KR1020137029381A
Other languages
English (en)
Other versions
KR20140002027A (ko
Inventor
에도아르도 레기니
보후슬라프 리칠릭
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20140002027A publication Critical patent/KR20140002027A/ko
Application granted granted Critical
Publication of KR101562448B1 publication Critical patent/KR101562448B1/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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • 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/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • 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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)

Abstract

휴대용 컴퓨팅 디바이스에서 작업부하 패러렐리즘 (parallelism) 의 정도를 동적으로 결정하고, 작업부하를 지원하는 코어들의 수를 동적으로 조절하는 방법 및 시스템이 설명된다. 방법 및 시스템은 운영 체계 스케줄러 및 멀티코어 프로세서 및/또는 복수의 중앙 프로세싱 유닛들 ("CPU들") 의 하나 이상의 작업 큐들의 활동을 모니터링하는 패러렐리즘 모니터 모듈을 포함한다. 패러렐리즘 모니터는 멀티코어 프로세서 또는 복수의 프로세서들의 현재 동작 모드에 기초하여 병렬 작업의 퍼센트를 계산할 수도 있다. 그 후, 이 병렬 작업의 퍼센트는 멀티프로세서 결정 알고리즘 모듈에 전달된다. 멀티프로세서 결정 알고리즘 모듈은 멀티코어 프로세서 (또는 복수의 프로세서들) 의 현재 동작 모드가 병렬 작업의 계산된 퍼센트에 기초하여 변경되어야 하는지를 결정한다.

Description

휴대용 컴퓨팅 디바이스의 멀티코어 프로세서에서 다수의 코어들로의 전력을 동적으로 제어하는 방법 및 시스템 {METHOD AND SYSTEM FOR DYNAMICALLY CONTROLLING POWER TO MULTIPLE CORES IN A MULTICORE PROCESSOR OF A PORTABLE COMPUTING DEVICE}
휴대용 컴퓨팅 디바이스들 ("PCD들") 은 개인 및 전문 수준으로 사람들에게 필수품이 되어 가고 있다. 이들 디바이스들은 셀룰러 전화, 휴대용/개인 디지털 정보 보조기들 ("PDA들"), 휴대용 게임 콘솔들, 휴대용 내비게이션 유닛들, 팜톰 컴퓨터들 및 다른 휴대용 전자 디바이스들을 포함할 수도 있다.
이들 PCD들은 다수의 중앙 프로세싱 유닛들 ("CPU들") 뿐 아니라 멀티코어 CPU들을 구비하여 다양한 소프트웨어 애플리케이션 모듈들을 실행할 수도 있다. 대부분의 PCD들은 그들의 CPU들에 대칭적으로 전력을 공급한다. 각각의 PCD 는 또한 통상 다수의 CPU들 또는 멀티코어 CPU 에 걸쳐서 단일스레드된 작업부하들을 분배하는 것에 대해 고려하는 일 없이 단일스레드된 소프트웨어 애플리케이션 모듈들에 대해 설계된다. PCD 들에서 CPU들의 이러한 대칭적 전력 공급 및 단일스레드된 작업부하들에 대한 개별화된 지원을 이용하여, PCD들이 클로킹되지 않기 때문에 작동하지 않는 유휴 CPU들 또는 코어들로부터의 누설로 인해 PCD들에 대해 낭비되는 전력 소비가 통상적으로 발생한다.
단일스레드된 작업부하들과는 다수의 CPU들 또는 멀티코어 CPU 로부터 병렬 프로세싱을 요구할 수도 있는 멀티스레드된 작업부하들이 상반된다. 몇몇 멀티스레드된 작업부하들이 특정 소프트웨어 애플리케이션 모듈을 지원하는 데 필요한 이상적인 수의 복수의 CPU들을 운영 체계에 통신시킬 수도 있다는 것이 실현가능하지만, 각각의 모듈이 그 자신의 멀티스레드 작업부하를 갖는 다수의 소프트웨어 애플리케이션 모듈들을 실행하는 데 PCD 가 요구될 때 그 정보는 거의 가치가 없거나 전혀 가치가 없을 수도 있다.
따라서, 당업계에서는 PCD 의 멀티코어 프로세서에서 다수의 코어들로의 전력을 제어하는 방법 및 시스템이 필요하다. 특히, 하나 이상의 소프트웨어 애플리케이션 모듈들의 작업부하 패러렐리즘의 정도를 동적으로 결정하고, 하나 이상의 소프트웨어 애플리케이션 모듈들의 작업부하를 지원하는 코어들의 수를 동적으로 조절하는 방법 및 시스템이 필요하다.
휴대용 컴퓨팅 디바이스에서 작업부하 패러렐리즘 (parallelism) 의 정도를 동적으로 결정하고, 작업부하를 지원하는 코어들 (및/또는 프로세서들) 의 수를 동적으로 조절하는 방법 및 시스템이 설명된다. 방법 및 시스템은 운영 체계 스케줄러 및 멀티코어 프로세서 및/또는 복수의 중앙 프로세싱 유닛들 ("CPU들") 의 하나 이상의 작업 큐들의 활동을 모니터링하는 패러렐리즘 모니터 모듈을 포함한다. 패러렐리즘 모니터는 멀티코어 프로세서 또는 복수의 프로세서들의 현재 동작 모드에 기초하여 병렬 작업의 퍼센트를 계산할 수도 있다. 그 후, 이 병렬 작업의 퍼센트는 멀티프로세서 결정 알고리즘 모듈에 전달된다. 멀티프로세서 결정 알고리즘 모듈은 멀티코어 프로세서 (또는 복수의 프로세서들) 의 현재 동작 모드가 병렬 작업의 계산된 퍼센트에 기초하여 변경되어야 하는지를 결정한다.
도면에서, 동일한 참조 기호들은 별다르게 언급되지 않는다면 다양한 도면들 전반에서 동일한 부분들을 지칭한다. "102A" 또는 "102B" 와 같은 문자 표기들을 갖는 참조기호들에 대해, 문자 표기들은 동일 도면에 존재하는 2 개의 상이한 부분들 또는 엘리먼트들을 구별지을 수도 있다. 참조 기호들에 대한 문자 표기들은, 소정 참조 기호가 모든 도면들에서 동일한 참조 기호를 갖는 모든 부분들을 포괄하도록 의도될 때 생략될 수도 있다.
도 1 은 멀티프로세서 결정 알고리즘 모듈과 조합하여 작동하는 패러렐리즘 모니터를 구비한 휴대용 컴퓨팅 디바이스 (PCD) 의 일 실시형태를 예시한 기능 블록도이다;
도 2 는 다수의 CPU들 및/또는 멀티코어 CPU들을 동적으로 제어하는 시스템의 엘리먼트들 사이에서의 통신 흐름을 예시한 기능 블록도이다;
도 3a 는 제 1 작업부하 시나리오에 대해 시간의 경과에 따라 플롯된 멀티코어 CPU 의 코어들 및/또는 CPU들에 할당된 작업 태스크들의 그래프이다;
도 3b 는 제 2 작업부하 시나리오에 대해 시간의 경과에 따라 플롯된 멀티코어 CPU 의 코어들 및/또는 CPU들에 할당된 작업 태스크들의 그래프이다;
도 4 는 시간의 경과에 따라 플롯된 예시적 작업부하에 대한 병렬 작업의 퍼센트의 그래프이다;
도 5 는 다수의 CPU들 및/또는 멀티코어 CPU들을 동적으로 제어하는 예시적 방법을 예시한 논리적 흐름도이다;
도 6 은 다수의 CPU들 및/또는 멀티코어 CPU 의 코어들 사이에서 병렬 작업의 퍼센트를 계산하는 예시적 서브방법 또는 루틴을 예시한 논리적 흐름도이다;
도 7 은 도 1 의 휴대용 컴퓨팅 디바이스의 특징부들을 예시한 개략도이다;
도 8a 및 도 8b 는 사용 케이스들의 실시형태들을 예시한 개략도들을 포함한다.
여기에서 "예시적인" 이라는 용어는 "예, 예시, 또는 예증으로서 제공되는"의 의미로 사용된다. "예시적인" 것으로서 여기에서 설명되는 임의의 양태는 반드시 다른 양태에 비하여 바람직하거나 유리한 것으로서 해석될 필요는 없다.
이 설명에서, 용어 "애플리케이션" 은 또한 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능한 콘텐츠를 갖는 파일들을 포함할 수도 있다. 추가로, 여기서 언급되는 "애플리케이션" 은 또한 열려야 할 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 사실상 실행가능하지 않은 파일들을 포함할 수도 있다.
용어 "콘텐츠" 는 또한 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능한 콘텐츠를 갖는 파일들을 포함할 수도 있다. 추가로, 여기서 언급되는 "콘텐츠" 는 또한 열려야 할 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 사실상 실행가능하지 않은 파일들을 포함할 수도 있다.
본 설명에서 사용된 바와 같이, 용어들 "콤포넌트", "모듈", "시스템" 등등은 컴퓨터-관련된 엔티티, 하드웨어, 펌웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어 (software in execution) 를 지칭하는 것으로 의도된다. 예를 들어, 콤포넌트는 프로세서 상에서 실행중인 프로세스, 프로세서, 오브젝트, 실행가능물 (executable), 실행 스레드 (thread of execution), 프로그램, 및/또는 컴퓨터일 수도 있지만 그것들로 제한되지 않는다. 예시로서, 컴퓨팅 디바이스 상에서 실행중인 애플리케이션 및 컴퓨팅 디바이스 양측 모두가 하나의 콤포넌트일 수 있다. 하나 이상의 콤포넌트들이 프로세스 및/또는 실행 스레드 내에 상주할 수도 있고 콤포넌트가 하나의 컴퓨터 상에 국소화될 수도 있거나 그리고/또는 둘 이상의 컴퓨터들 상에 분산될 수도 있다. 덧붙여서, 이들 콤포넌트들은 다양한 데이터 구조들을 저장하고 있는 다양한 컴퓨터 판독가능 매체들로부터 실행될 수도 있다. 콤포넌트들은 로컬 및/또는 원격 프로세스들에 의해 이를테면 하나 이상의 데이터 패킷들을 갖는 신호 (이를테면 로컬 시스템, 분산형 시스템에서의 다른 콤포넌트들과 상호작용하며 그리고/또는 다른 시스템들과는 인터넷과 같은 네트워크를 가로질러 이 신호에 의해 상호작용하는 하나의 콤포넌트로부터의 데이터) 에 따라 통신할 수도 있다.
본 설명에서, 용어들 "통신 디바이스", "무선 디바이스", "무선 전화기", "무선 통신 디바이스", 및 "무선 핸드셋" 은 상호 교환가능하게 사용된다. 제 3 세대 ("3G") 및 제 4 세대 ("4G") 무선 기술의 출현으로, 보다 우수한 대역폭 가용성이 보다 다양한 무선 능력들을 갖는 보다 많은 휴대용 컴퓨팅 디바이스들을 가능케 했다.
본 설명에서, 용어 "휴대용 컴퓨팅 디바이스 (PCD)" 는 배터리와 같은 제한 용량 전원으로 동작하는 임의의 디바이스를 설명하는 데 사용된다. 배터리 작동 PCD들이 십년간 (decades) 사용 중에 있지만, 제 3 세대 ("3G") 및 제 4 세대 ("4G) 무선 기술의 출현과 연결된 재충전가능한 배터리들에서의 기술적 진보는 다수의 능력들을 갖는 수많은 PCD들을 가능케 했다. 따라서, PCD 는 셀룰러 전화기, 위성 전화기, 페이저, 개인 휴대 정보 단말기 ("PDA"), 스마트폰, 내비게이션 디바이스, 스마트북 또는 리더, 미디어 플레이어, 전술한 디바이스들의 조합, 및 특히 무선 접속을 갖는 랩톱 컴퓨터일 수도 있다.
다수의 CPU 들 (110) 및/또는 멀티코어 CPU (110) 의 코어들을 동적으로 제어하는 PCD (100) 의 엘리먼트들 :
도 1 을 참조하면, 이 도면은 다수의 중앙 프로세싱 유닛들 ("CPU들")(110) 및/또는 멀티코어 CPU들 (110) 을 동적으로 제어하는 방법들 및 시스템들을 구현하는 무선 전화기의 형태인 PCD (100) 의 예시적인 비제한적 양태의 기능 블록도이다. 도 1 에 예시된 바와 같이, PCD (100) 는 멀티코어 CPU (110) 및 아날로그 신호 프로세서 (126) 를 포함할 수도 있다. 이들 프로세서들 (110, 126) 은 함께 커플링될 수도 있다.
CPU (110) 는, 당업자가 이해할 수 있는 바와 같이, 제 0 코어 (222), 제 1 코어 (224), 및 제 N 코어 (226) 을 포함할 수도 있다. 대안의 실시형태에서는, 당업자가 이해할 수 있는 바와 같이, CPU (110) 를 사용하는 대신, 하나 이상의 디지털 신호 프로세서들 ("DSP들") 이 또한 채용될 수도 있다. CPU (110) 는 성능 모니터 모듈 (114) 에 커플링될 수도 있다. 성능 모니터 모듈 (114) 은, 도 7 과 관련하여 아래에서 더 상세히 설명되는 바와 같이, 동적 전압 및 주파수 스케일링 ("DVFS") 알고리즘들에 따라 각각의 프로세서 코어 (222, 224, 226) 의 성능을 스케일링할 수도 있다.
PCD (100) 는 패러렐리즘 (parallelism) 모니터 모듈 (120) 및 멀티프로세서 결정 알고리즘 모듈 (125) 을 포함할 수도 있다. 당업자는, 본 개시물로부터 벗어나는 일 없이, 각각의 모듈 (120 또는 125) 이, 다양한 부분들로 분할될 수도 있고 상이한 프로세서들 (110, 126) 에 의해 실행될 수도 있는 하나 이상의 소프트웨어 모듈들을 포함할 수도 있다는 것을 인식할 것이다. 대안으로, 각각의 모듈 (120 또는 125) 은 단일 엘리먼트로서 조직될 수도 있고, 도 1 에 예시한 바와 같이 단일 프로세서 (110 또는 126) 에 의해 실행될 수도 있다.
각각의 모듈 (120 또는 125) 은 다수의 CPU들 (110) 및/또는 멀티코어 CPU (110) 의 코어들 (222, 224, 226) 에 대한 작업흐름을 모니터링하고 제어하는 CPU (110) 에 의해 실행될 수 있는 소프트웨어를 포함할 수도 있다. 그러나, 각각의 모듈 (120 또는 125) 은 또한 당업자가 이해할 수 있는 바와 같이 하드웨어 및/또는 펌웨어로부터 형성될 수도 있다.
멀티프로세서 디코딩 알고리즘 모듈 (125) 과 조합하여 작동하는 패러렐리즘 모니터 모듈 (120) 은 특정 코어 (222, 224, 226) 또는 프로세서 (126) 에 전력을 공급하기 위해 메시지들이 언제 CPU 전력 제어기 (130) 에 전송되어야 하는지를 결정할 수도 있다. 패러렐리즘 모니터 모듈 (120) 은 병렬 작업을 위해 런 큐들 (run queues)(115) 을 모니터링하고, 병렬 작업에 관한 그것의 관찰을 멀티코어 프로세서 디코딩 알고리즘 모듈 (125) 에 전달한다. 멀티코어 디코딩 알고리즘 모듈 (125) 은 하나 이상의 코어들 (222, 224, 226) 또는 프로세서 (126) 가 병렬 작업의 존재 시 전력을 언제 공급받아야 하는지 그리고 하나 이상의 코어들 (222, 224, 226) 또는 프로세서 (126) 가 병렬 작업의 부재 시 언제 전력을 차단당해야 하는지를 결정한다.
멀티코어 CPU (110) 는 O/S 스케줄러 모듈 (105), 하나 이상의 런 큐들 (115), 패러렐리즘 모니터 모듈 (120), 및 멀티프로세서 결정 알고리즘 모듈 (125) 과 통신하며, 그리고/또는 이들을 실행시킨다. 멀티코어 CPU (110) 는 또한 메모리 (112) 내의 멀티코어 CPU 전력 제어기 (130) 에 커플링된다. 멀티코어 CPU 전력 제어기 (130) 는 멀티코어 CPU (110) 의 코어들 (222, 224, 226) 로의 전력을 제어하는 일을 담당할 수도 있다. 메모리 (112) 는 휘발성 및/또는 비휘발성 저장소를 포함할 수도 있다. 메모리 (112) 는 랜덤 액세스 메모리 ("RAM"), 동적 랜덤 액세스 메모리 ("DRAM"), 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리 ("EEPROM") 등과 같은 임의의 타입의 컴퓨터 판독가능 매체들을 포함할 수도 있지만, 이들로 제한되지는 않는다. 메모리(112) 는, 당업자가 이해할 수 있는 바와 같이, 하나 이상의 애플리케이션 프로그램 모듈들 (119), O/S 스케줄러 모듈 (105), 패러렐리즘 모니터 모듈 (120), 및 멀티프로세서 결정 알고리즘 모듈 (125) 과 같은 프로그램 모듈들을, 이들 모듈들이 소프트웨어로서 구현되는 경우, 실행 전에 저장할 수도 있다.
도 1 : PCD (100) 의 다른 엘리먼트들
도 1 에 예시한 바와 같이, 디스플레이 제어기 (128) 및 터치스크린 제어기 (130) 는 CPU (110) 에 커플링된다. 온-칩 시스템 (102) 외부의 터치스크린 디스플레이 (132) 는 디스플레이 제어기 (128) 및 터치스크린 제어기 (130) 에 커플링된다.
도 1 은 비디오 코더/디코더 ("코덱")(134), 예컨대 "PAL" (phase-alternating line) 인코더, "SECAM" (sequential couleur avec memoire) 인코더, "NTSC" (national television system(s) committee) 인코더 또는 멀티코어 중앙 프로세싱 유닛 ("CPU")(110A) 에 커플링된 임의의 다른 타입의 비디오 인코더 (134) 를 예시한 개략도이다. 비디오 증폭기 (136) 는 비디오 인코더 (134) 및 터치스크린 디스플레이 (132) 에 커플링된다. 비디오 포트 (138) 는 비디오 증폭기 (136) 에 커플링된다. 도 1 에 도시한 바와 같이, "USB" (universal serial bus) 제어기 (140) 가 CPU (110) 에 커플링된다. 또한, USB 포트 (142) 가 USB 제어기 (140) 에 커플링된다. SIM (subscriber identity module) 카드 (146) 가 또한 CPU (110) 에 커플링된다. 또한, 도 1 에 도시한 바와 같이, 디지털 카메라 (148) 가 CPU (110) 에 커플링될 수도 있다. 예시적 양태에서, 디지털 카메라 (148) 는 "CCD" (charge-coupled device) 카메라 또는 "CMOS" (complementary metal-oxide semiconductor) 카메라이다.
도 1 에 추가로 예시한 바와 같이, 스테레오 오디오 코덱 (150) 은 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 또한, 오디오 증폭기 (152) 가 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다. 예시적 양태에서, 제 1 스테레오 스피커 (154) 및 제 2 스테레오 스피커 (156) 는 오디오 증폭기 (152) 에 커플링된다. 도 1 은 마이크로폰 증폭기 (158) 가 또한 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다는 것을 도시한다. 추가로, 마이크로폰 (160) 이 마이크로폰 증폭기 (158) 에 커플링될 수도 있다. 특정 양태에서, 주파수 변조 ("FM") 라디오 튜너 (162) 가 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다. 또한, FM 안테나 (164) 가 FM 라디오 튜너 (162) 에 커플링될 수도 있다. 또한, 스테레오 헤드폰들 (166) 이 스테레오 오디오 코덱 (150) 에 커플링될 수도 있다.
도 1 은 무선 주파수 ("RF") 송수신기 (168) 가 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다는 것을 추가로 나타낸다. RF 스위치 (170) 는 RF 송수신기 (168) 및 RF 안테나 (172) 에 커플링될 수도 있다. 도 1 에 도시한 바와 같이, 키패드 (174) 는 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 또한, 마이크로폰 (176) 을 갖춘 모노 헤드셋이 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 또한, 진동기 디바이스 (178) 는 아날로그 신호 프로세서 (126) 에 커플링될 수도 있다. 도 1 은 또한 전원 (180)(예를 들어, 배터리) 이 온-칩 시스템 (102) 에 커플링된 것을 도시한다. 특정 양태에서, 전원 (180) 은 AC 전원에 접속된 교류 ("AC") - DC 변환기로부터 도출되는 DC 전원 또는 재충전가능한 DC 배터리를 포함한다.
도 1 에 도시한 바와 같이, 터치스크린 디스플레이 (132), 비디오 포트 (138), USB 포트 (142), 카메라 (148), 제 1 스테레오 스피커 (154), 제 2 스테레오 스피커 (156), 마이크로폰 (160), FM 안테나 (164), 스테레오 헤드폰들 (166), RF 스위치 (170), RF 안테나 (172), 키패드 (174), 모노 헤드셋 (176), 진동기 (178), 열 센서들, 및 전원 (180) 은 온-칩 시스템 (102) 외부에 있다.
도 2 는 다수의 CPU들 (110) 및/또는 멀티코어 CPU들 (110) 을 동적으로 제어하는 시스템 (101) 의 엘리먼트들 사이의 통신 흐름을 예시한 기능 블록도이다. 시스템 (101) 에서, O/S 스케줄러 모듈 (105) 은 하나 이상의 런 큐들 (115) 및 패러렐리즘 모니터 모듈 (120) 에 커플링된다. 하나 이상의 런 큐들 (115) 에 대해 단일 기능 블록이 예시되지만, 당업자는, 개별 런 큐들 (115) 이 시스템 (101) 에 의해 관리되고 있는 멀티코어 CPU (110) 의 각각의 코어 (222, 224, 226) 또는 복수의 CPU들 (110) 의 각각의 CPU (110) 에 제공될 수도 있음을 인식할 것이다.
하나 이상의 런 큐들 (115) 은 도 2 에 예시한 바와 같이 멀티코어 CPU (110) 의 각각의 코어 (222, 224, 226) 에 작업 태스크들을 제공한다. 대안으로, 런 큐들 (115) 은 복수의 CPU들 (110) 의 각각의 CPU (110) 에 작업 태스크들을 공급할 수도 있다.
패러렐리즘 모니터 모듈 (120) 은 런 큐들 (115), O/S 스케줄러 (105), 및 멀티프로세서 결정 알고리즘 모듈 (125) 에 커플링된다. 패러렐리즘 모니터 모듈 (120) 은 멀티프로세서 결정 알고리즘 모듈 (125) 에 대해 개별 모듈로서 예시되지만, 이들 2 개의 모듈들 (120, 125) 은 당업자가 이해할 수 있는 바와 같이 단일의 일원적 모듈로 형성될 수도 있다.
멀티프로세서 결정 알고리즘 모듈 (125) 은 패러렐리즘 모니터 모듈 (120) 및 CPU 전력 제어기 (130) 에 커플링된다. 멀티프로세서 결정 알고리즘 모듈 (125) 은 패러렐리즘 모니터 모듈 (120) 로부터 데이터를 수신하고, 이 데이터에 기초하여 결정을 내린다. 멀티프로세서 결정 알고리즘 모듈 (125) 에 의해 이루어진 결정들의 결과들은 CPU 전력 제어기 (130) 에 메시지들로서 송신되며, 이는 이하에서 더 상세히 설명될 것이다.
O/S 스케줄러 모듈 (105) 은 소프트웨어로서 구현될 수도 있다. O/S 스케줄러 모듈 (105) 은 멀티코어 CPU (110) 또는 프로세서 (126) 에 의해 실행된 하나 이상의 애플리케이션 프로그램들 (119) 로부터 수신된 작업 태스크들을 스케줄링하는 일을 담당할 수도 있다. 애플리케이션 프로그램들 (119) 은 무선 전화 호출 애플리케이션들, 글로벌 포지셔닝 위성 ("GPS") 애플리케이션들, e-메일 애플리케이션들, 캘린더 애플리케이션들, 워드프로세싱 애플리케이션들, 스프레드시트 애플리케이션들, 오디오 및/또는 비디오를 지원하는 엔터테인먼트 애플리케이션들 등을 포함할 수도 있지만, 이들로 제한되지는 않는다.
작업 태스크들은 애플리케이션 프로그램들 (119) 로부터의 요청을 포함할 수도 있다. 예를 들어, 엔터테인먼트용 애플리케이션 프로그램 (119) 은 O/S 스케줄러 모듈 (105) 에게 PCD (100) 의 디스플레이 (132) 상에 비디오용의 복수의 프레임들을 디스플레이하도록 요청할 수도 있다. O/S 스케줄러 모듈 (105) 은 이들 비디오 작업 태스크들을 멀티코어 CPU (110) 의 코어들 (222, 224, 226) 에 걸쳐서 할당할 수도 있고 분배할 수도 있다. O/S 스케줄러 모듈 (105) 은 각각의 작업 태스크를 할당할 수도 있으며, 각각의 코어 할당들을 갖는 작업 태스크들을 런 큐 (115) 에 배치할 수도 있다. 런 큐 (115) 는 당업자가 이해할 수도 있는 바와 같이 소프트웨어 및/또는 하드웨어로서 구현될 수도 있다. 런 큐 (115) 는, 특정 CPU 및/또는 멀티코어 CPU (110) 의 코어가 작업 태스크를 프로세싱할 준비가 될 때까지, 할당된 작업 태스크들 및/또는 스레드들을 보유할 수도 있다.
패러렐리즘 모니터 (120) 는 O/S 스케줄러 모듈 (105) 에 의해 관리되고 있는 작업 태스크들을 트래킹하는 일을 담당한다. 패러렐리즘 모니터 (120) 는 런 큐 (115) 와 통신한다. 패러렐리즘 모니터 모듈 (120) 은 소프트웨어로서 구현될 수도 있다. 대안으로, 패러렐리즘 모니터 모듈 (120) 은 당업자가 이해할 수 있는 바와 같이 하드웨어로 구현될 수도 있다.
패러렐리즘 모니터 모듈 (120) 은 다수의 CPU들 (110) 및/또는 멀티코어 CPU (110) 의 코어들 (222, 224, 226) 에 걸쳐서 할당되고 분배된 병렬 작업의 양을 결정한다. 패러렐리즘 모니터 모듈 (120) 은 통상적으로 런 큐 (115) 로부터 취해진 데이터를 샘플링함으로써 병렬 작업의 양을 결정한다. 패러렐리즘 모니터 모듈 (120) 이 런 큐 (115) 로부터의 데이터를 샘플링하는 빈도는 필요에 따라 변화 또는 변경될 수도 있다. 샘플링 빈도는 작업량에 기초하여 조절될 수도 있다.
예를 들어, 복수의 애플리케이션 프로그램들 (119) 이 CPU (110) 에 의해 실행되고 있을 때, 증가한 수의 작업 태스크들이 런 큐 (115) 에서 생성되고 배치될 가능성이 있으므로 샘플링 빈도는 증가할 수도 있다. 역으로, 애플리케이션 프로그램들의 수가 비교적 작을 때, 이를테면 2 개 이하 정도의 프로그램들이 실행되고 있을 때, 패러렐리즘 모니터 모듈 (120) 의 샘플링 빈도는 하향 조절될 수도 있고 또는 감소하는 방식으로 조절될 수도 있다.
패러렐리즘 모니터 모듈 (120) 은 O/S 스케줄러 (105) 로부터 콜백(callback)들을 수신할 수도 있다. 이들 콜백들은, 새로운 태스크가 코어들 (222, 224, 226) 에 대해 런 큐들 (115) 중 임의의 런 큐로부터 추가 또는 감소할 때마다 발생할 수도 있다. 각각의 콜백에서, 패러렐리즘 모니터 (120) 는 런 큐 (115) 내의 자신의 로컬 태스크 카운트를 업데이트할 수도 있다. 주기적으로, 이를테면 대략 매 20 밀리초 정도로, 패러렐리즘 모니터 모듈 (120) 은 그의 샘플링 주기 동안 그의 즉각적 판독치들을 코어들 (222, 224, 226) 에 걸쳐서 병렬로 실행되는 작업의 작동 퍼센트에 축적할 수도 있다.
패러렐리즘 모니터 모듈 (120) 에 의해 샘플링되는 런 큐들 (115) 내에 상주하는 데이터는 주어진 시간 인스턴트에서 O/S 스케줄러 (105) 에 의해 할당되는 태스크들의 총계를 포함할 수도 있다. 패러렐리즘 모니터 모듈 (120) 은 병렬 작업의 퍼센트를 계산하는 데 샘플 데이터를 사용한다. 병렬 작업의 이러한 퍼센트는 도 3a 및 도 3b와 관련하여 아래에서 더 상세히 설명될 것이다. 병렬 작업 파라미터의 퍼센트는 패러렐리즘 모니터 모듈 (120) 로부터 멀티프로세서 결정 알고리즘 모듈 (125) 에 전달된다.
멀티프로세서 결정 알고리즘 모듈 (125) 은 소프트웨어 또는 하드웨어 또는 양측 모두를 포함할 수도 있다. 일 예시적 실시형태에 따르면, 멀티프로세서 결정 알고리즘 모듈 (125) 은 소프트웨어를 포함할 수도 있다. 멀티프로세서 결정 알고리즘 모듈 (125) 은 그것이 패러렐리즘 모니터 모듈 (120) 로부터 수신하는 작업의 작업 퍼센트에 기초하여 얼마나 많은 코어들 (222, 224, 226) 이 전력을 공급받아야 하는지 또는 "활성" 인지를 결정한다.
멀티프로세서 결정 알고리즘 모듈 (125) 은 임계 값들을 포함하는 다양한 파라미터들을 사용하여 어떠한 코어들 (222, 224, 226) 이 전력을 공급받는지에 대해 결정을 내릴 수도 있다. 이들 파라미터들은 코어들 (222, 224, 226) 에 전력을 공급/차단하는 데 수반되는 오버헤드에서 특정 휴대용 컴퓨팅 디바이스 (100) 에 대한 전력 소비 특성들에 기초하여 도출될 수도 있다. 예시적 파라미터들은: 하나 이상의 코어들 (222, 224, 226) 을 활성화하기 위해 병렬로 실행된 작업의 퍼센트에 대한 임계치인 병렬 작업의 웨이크업 퍼센트 ("Pw"); 하나 이상의 추가 코어들 (222, 224, 226) 이 전력을 공급받기 전의 듀레이션 Tw 동안 취해진 어떤 수의 샘플들에 대해 Pw 임계치가 달성되거나 또는 초과된 시간량에 대한 임계치인 웨이크업 시간 듀레이션 ("Tw"); 병렬로 실행된 작업의 퍼센트에 대한 임계치인 슬립 퍼센트 ("Ps") (하나 이상의 코어들 (222, 224, 226) 을 비활성화하기 위해 그 임계치 아래로 달성되거나 그 아래에서 존재한다); 및 소정 시간량에 대한 임계치인 슬립 시간 듀레이션 ("Ts")(해당 시간량 동안에는 하나 이상의 코어들 (222, 224, 226) 에 전력 공급이 차단되기 전 듀레이션 Ts 동안에 취해진 어떤 수의 샘플들에 대해 Ps 임계치가 유지되거나 그 아래로 떨어진다) 을 포함할 수도 있지만, 이들로 제한되지는 않는다.
멀티프로세서 결정 알고리즘 모듈 (125) 에 의해 이루어지는 결정들을 형성하는 파라미터들 사이의 예시적 관계들은: 패러렐리즘 모니터 모듈 (120) 에 의해 검출된 병렬 작업의 현재 작동 퍼센트가 Pw 임계치보다 큰 경우, 그리고 이 작동 퍼센트가 Tw 임계치보다 큰 듀레이션 동안 검출된 경우, 멀티프로세서 결정 알고리즘 모듈 (125) 은 전력 제어기 (130) 에, 하나 이상의 추가 코어들 (222, 224, 226) 을 턴온하여 현재 병렬 작업부하를 관리하도록 하는 커맨드를 발행할 수도 있다. 병렬 코어들 (222, 224, 226) 이 작업 태스크들을 동시에 프로세싱하고 있는 상황에서, 그리고 패러렐리즘 모니터 모듈 (120) 에 의해 검출되는 병렬 작업의 현재 작동 퍼센트가 Ps 파라미터 이하인 경우, 그리고 이 작동 퍼센트가 Ts 임계치 이상인 듀레이션 동안 검출된 경우, 멀티프로세서 결정 알고리즘 모듈 (125) 은 전력 제어기 (130) 에, 하나 이상의 코어들 (222, 224, 226) 을 턴오프하도록 하는 커맨드를 발행할 수도 있다.
전술한 바와 같이, CPU 전력 제어기 (130) 는 멀티프로세서 결정 알고리즘 모듈 (125) 로부터 하나 이상의 코어들 (222, 224, 226) 또는 다른 CPU들 (110) 에 전력을 공급 및 차단하기 위한 메시지들을 수신한다. CPU 전력 제어기 (130) 는 통상적으로 하나 이상의 코어들 (222, 224, 226) 또는 다른 CPU들 (110) 로의 전력을 제어하기 위한 하드웨어로 구현된다. CPU 전력 제어기 (130) 가 코어 (222, 224 또는 226) 또는 다른 CPU (110) 를 턴 "오프" 할 때, 이 "오프" 상태는, 당업자가 이해할 수 있는 바와 같이, 저전력 상태를 포함할 수도 있다. 다른 실례들에서, "오프" 상태는 또한 전력의 완전 부재를 포함할 수도 있다.
도 3a 는 제 1 작업부하 시나리오에 대해 시간의 경과에 따라 플롯된 CPU들 (110) 및/또는 멀티코어 CPU (110) 의 코어들 (222, 224 또는 226) 에 할당된 작업 태스크들의 그래프 (300A) 이다. 데이터 플롯된 그래프 (300A) 는, O/S 스케줄러 (105) 에 의해 관리되고 런 큐들 (115) 에 할당된 애플리케이션 모듈들 (119) 로부터의 작업 태스크들을 포함한다. 작업 태스크들의 수는 Y-축 상에 플롯되고, 밀리초로 표기된 시간은 X-축을 따라서 플롯된다. 도 3a 에서의 이 데이터는 3 개의 퍼센트 샘플 주기들 (311A, 311B, 311C) 을 포함하며, 각각의 주기는 60 밀리초의 길이를 갖는 웨이크업 듀레이션 "Tw" 동안에 취해지는 20 밀리초의 길이를 갖는다. 특정 퍼센트 샘플 주기 (311) 에 걸친 작업 태스크들의 총계가 모니터링되는 빈도는 약 2 밀리초를 포함할 수도 있어, 약 20 밀리초의 소정 퍼센트 샘플 주기 (311) 에 걸쳐서 10 회의 작업 판독들이 취해질 수도 있다.
Tw 웨이크업 듀레이션의 길이, 각각의 퍼센트 샘플 주기 (311) 의 사이즈, 샘플들이 퍼센트 샘플 주기들 (311) 동안 취해지는 빈도는 변할 수도 있으며, 당업자가 이해할 수 있는 바와 같이, 본 개시물의 범주 내에 있다.
주어진 퍼센트 샘플 주기 동안의 병렬 작업 (Pw 또는 Ps) 의 퍼센트는 다음 식에 의해 제어된다:
식 1: P% = 병렬 작업의 인스턴스들 / 주어진 샘플 주기 동안의 샘플들의 수
병렬 작업은 작업 태스크들의 수가 2 개 이상의 코어들 (222, 224, 226) 또는 2 개 이상의 CPU들 (110) 의 사용을 허용하는 임계치로서 정의된다. 이것은, 통상적으로, 작업 태스크들의 수가 1 보다 클 때마다, 멀티코어 CPU (110) 의 2 개 이상의 코어들 (222, 224, 226) 또는 2 개 이상의 CPU들 (110) 이 현재 수의 병렬 작업 태스크들을 지원하도록 활성화될 수도 있는 병렬 작업이 존재한다는 것을 의미한다.
예를 들어, 도 3a 에 예시한 예시적 작업 시나리오에서, 제 1 퍼센트 샘플 주기 (311A) 내의 제 1 데이터 포인트는 제로 병렬 작업과 역시 동일시하는 제로 작업 태스크들을 반영한다. 표 1 (305A) 의 제 1 열을 참조하라. 제 1 퍼센트 샘플 주기 (311A) 내의 제 2 데이터는 병렬 작업의 존재를 나타내는 2 개의 작업 태스크들의 임계치보다 작은 하나의 작업 태스크의 값을 반영한다. 따라서, 표 1 (305A) 의 제 2 열 내의 제 1 퍼센트 샘플 주기 (311A) 의 제 2 데이터 포인트에 대해 제로 값 또는 병렬 작업의 부재가 존재한다. 표 1 (305A) 의 제 3 열에 의해 반영된 바와 같이, 제로 병렬 작업의 대응 값 및 하나의 작업 태스크를 갖는 제 1 퍼센트 샘플 주기 (311A) 에 대한 제 3 데이터 포인트에 대해 동일한 사항이 들어맞는다.
그러나, 제 1 퍼센트 샘플 주기 (311A) 에 대한 제 4 및 제 5 데이터 포인트들은 병렬 작업의 존재로 변환되는 각각의 데이터 포인트에 대한 적어도 2 개의 작업 태스크들을 반영한다. 표 1 (305A) 의 제 4 및 제 5 열들을 참조하라.
(코어들 (222, 224, 226) 또는 추가 CPU들 (110) 을 웨이크업하기 위한) 제 1 퍼센트 샘플 주기 (311A) 에 대한 병렬 작업의 퍼센트는 60% 이며, 이는 제 1 퍼센트 샘플 주기 (311A) 동안 취해진 총 10 개의 샘플들에 걸쳐서 병렬 작업의 6 개의 카운트들에 기초한다. 마찬가지로, 제 2 퍼센트 샘플 주기 (311B) 에 대한 병렬 작업의 퍼센트는 30% 이고, 제 3 퍼센트 샘플 주기 (311C) 에 대한 병렬 작업의 퍼센트는 80% 이며, 이는 표 2 (305B) 및 표 3 (305C) 에 의해 각각 반영된다.
각각의 샘플 주기 (311) 가 웨이크업 듀레이션 Tw 내에서 발생하는 빈도, 특정 퍼센트 샘플 주기 (311) 동안 취해지는 데이터 포인트들의 수 및 빈도, 그리고 샘플링 듀레이션 Tw 의 길이에 대한 적절한 크기를 선택하는 중요성은 제 1 그래프 (300A) 에 반영된 여러 데이터 포인트들에 기초하여 당업자에게 명백하다.
예를 들어, 제 1 그래프 (300A) 의 제 1 영역 (303A) 은 제 1 퍼센트 샘플 주기 (311A) 의 제 5 및 제 6 데이터 포인트들 사이의 작업 태스크들에서의 드롭을 반영한다. 제 1 퍼센트 샘플 주기 (311A) 동안 취해진 데이터 포인트들의 빈도가 이 실시예에서 약 2 밀리초에 대해 설정되므로, 제 1 영역 (303A) 에서의 제 5 및 제 6 데이터 포인트들 사이의 작업 태스크들에서의 이러한 드롭은 미검출되었었다. 미검출된 작업 태스크들 내의 이러한 드롭은 퍼센트 샘플 주기 (311A) 가 시스템 (101) 에 의해 관리되고 있는 대량의 작업 활동을 캡처하도록 적절히 사이즈 조정되었으므로 현저하지는 않다. 제 1 그래프 (300A) 의 영역 (303A) 에서 발생하는 작업 내의 이러한 드롭이 제 1 퍼센트 샘플 주기 (311A) 동안 검출되었다 하더라도, 그 계산된 병렬 작업의 퍼센트에 대한 것의 영향은 최소가 될 것인데, 이는 제 1 퍼센트 샘플 주기 (311A) 의 길이가 제 1 퍼센트 샘플 주기 (311A) 에 걸쳐서 프로세싱되고 있는 작업 중 대부분을 캡처했기 때문이다.
전술한 바와 같이, 병렬 작업 파라미터들 (Pw, Ps) 의 퍼센트는 패러렐리즘 모니터 모듈 (120) 에 의해 계산되고, 멀티프로세서 결정 알고리즘 모듈 (125) 에 전송된다. 멀티프로세서 결정 알고리즘 (125) 은 멀티코어 CPU (110) 의 하나 이상의 추가 코어들 (222, 224, 226) 또는 추가 CPU들 (110) 을 턴 "오프" 하는 병렬 작업 파라미터들 (Ps) 및 그들을 턴 "온" 하는 병렬 작업 파라미터들 (Pw) 의 퍼센트에 대해 설정될 수도 있는 임계치들을 가질 수도 있다. 병렬 작업 파라미터들 (Pw, Ps) 의 퍼센트에 대한 임계치들은 경험적으로 결정될 수도 있으며, 당업자가 이해할 수 있는 바와 같이, 멀티코어들 및/또는 추가 CPU들 (110) 이 병렬 작업을 위해 활성화될 때 성능의 상이성 면에서 약 5 퍼센트 이하가 달성되도록 업데이트될 수도 있다.
예를 들어, 웨이크업 병렬 작업 퍼센트 파라미터 Pw 에 대한 임계치는 이 표준 5% 성능 측정을 이용하여 결정될 수도 있다. 예를 들어, 설정된 수의 작업 태스크들은 단일 프로세서 (110) 에 의해 완료되는 데 약 1 백 밀리초가 걸린다는 것을 가정하라. 그러면, 하나 이상의 코어들 (222, 224, 226) 또는 추가 CPU들 (110) 을 턴 "온" 하기 위한 Pw 파라미터는, 작업이 멀티코어 CPU (110) 의 2 개 이상의 코어들 (222, 224, 226) 중에서 또는 2 개 이상의 CPU들 (110) 중에서 분할될 때 최대 105 밀리초를 초과하지 않도록 계산되어야 한다. 당업자는 5 밀리초가 1 백 밀리초의 약 5% 임을 인식한다.
다른 실시예로서, 전술한 바와 같이, 웨이크업 병렬 작업 퍼센트 파라미터 Pw 에 대한 임계치는 통상적으로 PCD (100) 의 동작 이전에 오프라인으로 설정 또는 확립된다. 웨이크업 병렬 작업 퍼센트 파라미터 Pw 에 대한 임계치가 약 55% 로 설정되는 경우는, 페러렐리즘 모니터 모듈 (120) 이 웨이크업 Tw 듀레이션 동안 취해진 어떤 연속적인 수의 퍼센트 샘플들에 대해 그 양 이상의 병렬 작업을 검출할 필요가 있을 것이다.
도 3a 에 예시한 예시적 시나리오들에서, 웨이크업 듀레이션 Tw 는 60 밀리초동안 설정되고, 퍼센트 샘플들의 수는 매 20 밀리초마다 발생하도록 설정된다. 이것은, Pw 에 대한 55% 값이 60 밀리초의 각각의 웨이크업 듀레이션에 대한 적어도 3 개의 연속 샘플들에 의해 충족되어야 한다는 것을 의미한다.
도 3a 의 예시적 실시형태에서, 제 1 퍼센트 샘플 (311A) 및 제 3 퍼센트 샘플 (311C) 만이 55% 의 웨이크업 병렬 작업 퍼센트 Pw 값을 초과했다. 제 2 퍼센트 샘플은 55% 의 임계값 Pw 보다 작은 30% 이다. Pw 가 311A, 311B 및 311C 의 3 개의 연속적인 퍼센트 샘플들에 걸쳐서 달성되지 않았으므로 멀티프로세서 결정 알고리즘 모듈 (125) 은 CPU 전력 제어기 (130) 에 어떠한 커맨드들도 발행하지 않을 것이다.
그러나, Pw 임계치가 55 퍼센트에 대해 설정되었고, 퍼센트 샘플 길이가 웨이크업 듀레이션 Tw 로 설정되어, 병렬 작업의 퍼센트들이 매 60 밀리초마다 취해지면 (오직 하나의 샘플이 각각의 듀레이션 Tw 에 대해 취해진다는 것을 의미한다), Pw 임계치가 충족될 것이다. Pw 임계치는 이러한 시나리오에서 충족될 것인데, 이는 매 60 밀리초 윈도우에 대한 병렬 작업 값의 단일 퍼센트가 약 56.6% (30 회 판독으로 나뉜 17 개 병렬 작업 인스턴스들) 와 동일하기 때문이다. 이 시나리오에서의 멀티프로세서 결정 알고리즘 모듈 (125) 은 CPU 전력 제어기 (130) 에 대해 멀티코어 CPU (110) 의 하나 이상의 추가 코어들 (222, 224 또는 226) 또는 추가 CPU들 (110)(도시하지 않음) 을 턴 "온" 하도록 하는 커맨드들을 포함한 메시지들을 발행할 것이다.
도 3b 는 제 2 작업부하 시나리오에 대해 시간의 경과에 따라 플롯된 CPU들 (110) 및/또는 멀티코어 CPU (110) 의 코어들 (222, 224 또는 226) 에 할당된 작업 태스크들의 그래프 (300B) 이다. 도 3b 는 도 3a 와 매우 유사하며, 그에 따라 이들 2 개의 도면들 사이의 차이점들만이 아래에서 설명될 것이다.
그래프 (300B) 에 의해 예시된 예시적 제 2 작업부하 시나리오에 따르면, 퍼센트 샘플 주기 (311) 는 약 매 2 밀리초에 취해진 작업량의 판독들을 갖는 약 30 밀리초 길이로 설정된다. 하나 이상의 CPU들 (110) 및/또는 코어들 (222, 224 또는 226) 을 턴 "오프" 하기 위한 슬립 듀레이션 Ts 의 길이는 1 백 이십 밀리초로 설정될 수도 있다. 이것은, 이 시나리오에서 멀티프로세서 결정 알고리즘 모듈 (125) 이 CPU 전력 제어기 (130) 에, 적어도 4 개의 연속 퍼센트 샘플 주기들 (311) 동안 슬립 작업 퍼센트 Pw 가 달성되었다면 멀티코어 CPU (110) 의 하나 이상의 코어들 (222, 224 또는 226) 또는 추가 CPU들 (110)(도시하지 않음) 을 턴 "오프" 하도록 하는 커맨드들을 함유한 메시지들을 발행할 것이다.
제 1 그래프 (300A) 의 프로세서 "웨이크업" 퍼센트 샘플 주기들 (311A-311C) 에 관해, 제 2 그래프 (300B) 의 프로세서 "슬립" 퍼센트 샘플 주기들 (311D-311E) 은 약 10 밀리초 더 길다. 프로세서 "슬립" 퍼센트 샘플 주기들 (311D-311E) 은 하나 이상의 코어들 (222, 224, 226) 또는 추가 CPU들 (110) 을 셧 오프하기 위한 보존적 접근이 취해질 때 "웨이크업" 퍼센트 샘플 주기들 (311A-311C) 보다 전반적으로 더 길 것이다. 당업자는, 프로세싱되고 있는 보다 짧은 시간 주기에서 코어들 (222, 224, 226) 또는 추가 CPU들 (110) 을 셧 "오프" 하는 것에 비해 보다 긴 시간 주기들에 걸쳐서 추가 코어들 (222, 224, 226) 또는 추가 CPU들 (110) 이 전력을 "공급" 받는 상태를 유지한 후에 동일한 코어들 (222, 224, 226) 또는 CPU들 (110) 을 재시작하여 작업 태스크들에 대해 현재 요구와 매칭하도록 하는 것이 통상적으로는 더 좋다는 것을 인식한다. 당업자는, 보다 긴 듀레이션들 동안 복수의 디바이스들이 전력을 공급받는 채로 둔 후에 보다 긴 듀레이션들 동안 전력을 감소시키는 것에 비해 복수의 디바이스들이 보다 빈번하게 턴 온 및 오프될 때 더 많은 전력이 소비될 수도 있다는 것을 인식한다.
다른 실시예로서, 전술한 바와 같이, 슬립 병렬 작업 퍼센트 파라미터 Ps 에 대한 임계치는 통상적으로 PCD (100) 의 동작 이전에 오프라인으로 설정 또는 확립된다. 슬립 병렬 작업 퍼센트 파라미터 Ps 에 대한 임계치가 약 35 퍼센트와 동일하게 설정되는 경우는, 패러렐리즘 모니터 모듈 (120) 이 어떤 수의 퍼센트 샘플 주기들 동안 주어진 샘플 듀레이션 Ts 에 대해 그 해당 양 이하의 병렬 작업을 검출할 필요가 있을 것임을 의미할 것이다. 퍼센트 샘플 주기들의 수는 그들의 사이즈에 기초한다.
따라서, 하나 이상의 CPU들 (110) 및/또는 코어들 (222, 224 또는 226) 을 턴 "오프" 하기 위한 슬립 듀레이션 Ts 의 길이가 30 밀리초의 샘플 퍼센트 사이즈를 갖는 1 백 20 밀리초로 설정되면, Ps 의 임계치는 적어도 4 개의 연속 샘플들 (4 X 30 = 120) 에 대해 충족될 필요가 있을 것이다. 샘플 퍼센트 사이즈가 20 밀리초에 대해 설정되었다면, Ps 의 임계치는 적어도 6 개의 연속 샘플들 (6 X 20 = 120) 에 대해 충족될 필요가 있을 것이다.
도 3b 에 예시한 예시적 시나리오들에서, Ps 파라미터에 대한 35 퍼센트 임계치는 제 1 및 제 4 퍼센트 샘플 주기들 (311D, 311E) 에 의해 충족된다. 제 2 및 제 3 퍼센트 샘플 주기들은 도 3b 에 예시되어 있지 않다. 제 1 퍼센트 샘플 주기 (311D) 에 대해, 병렬 작업 퍼센트 (Ps) 는 약 33% 의 값을 갖는다. 제 4 퍼센트 샘플 주기 (311E) 에 대해, 병렬 작업 퍼센트 (Ps) 는 약 20% 의 값을 갖는다.
제 2 및 제 3 퍼센트 샘플 주기들 (311)(도 3b 에는 예시하지 않음) 이 35 퍼센트 임계 값 (Ps) 이하의 병렬 작업 퍼센트 값들 (Ps) 을 갖는 것으로 가정하면, 제 4 퍼센트 샘플 주기 (311E) 후의 멀티프로세서 결정 알고리즘 모듈 (125) 은 CPU 전력 제어기 (130) 에 대해 멀티코어 CPU (110) 의 하나 이상의 추가 코어들 (222, 224 또는 226) 또는 추가 CPU들 (110)(도시하지 않음) 을 턴 "오프" (또는 슬립 모드로 진입) 시키도록 하는 커맨드들을 함유한 메시지들을 발행할 것이다.
후술하는 흐름도에서 서술하는 바와 같이, 멀티프로세서 결정 알고리즘 모듈 (125) 은 그의 현재 동작 모드에 의존하여 슬립 병렬 작업 퍼센트 파라미터 Ps 또는 웨이크업 병렬 작업 퍼센트 파라미터 Pw 중 어느 하나를 사용한다. 멀티프로세서 결정 알고리즘 모듈 (125) 은 적어도 2 개의 상이한 동작 모드들을 가질 수도 있다: 멀티코어/CPU 모드 또는 단일코어/CPU 모드. 웨이크업 병렬 작업 퍼센트 파라미터 Pw 는 멀티프로세서 결정 알고리즘 모듈 (125) 에 의해 그것이 그의 단일코어/CPU 모드에 있을 때 사용된다. 슬립 병렬 작업 퍼센트 파라미터 Ps 는 멀티프로세서 결정 알고리즘 모듈 (125) 에 의해 그것이 그의 멀티코어/CPU 모드에 있을 때 사용된다.
도 4 는 시간의 경과에 따라 플롯된 예시적 작업부하에 대한 병렬 작업의 퍼센트의 그래프 (400) 이다. 예시적 실시형태에 따르면, 작업부하는 PCD (100) 의 멀티코어 CPU (110) 의 적어도 2 개의 코어들 (222, 224) 을 포함하는 시스템 (101) 으로 영화의 플레이백 동안 디스플레이되는 비디오 프레임들을 포함한다.
제 1 라인 (402) 은 단일 코어로부터 모니터링되는 병렬 작업의 퍼센트를 나타낸다. 제 2 라인 (404) 은 멀티코어 시스템 (101) 의 2 개의 코어들에 걸쳐서 모니터링되는 병렬 작업의 퍼센트를 나타낸다.
이 예시적 실시형태에 따르면, 웨이크업 병렬 작업 퍼센트 파라미터 Pw 는 약 50 퍼센트와 동일하게 설정된다. 따라서, 그래프 (400) 상의 포인트 (405) 에 이르기까지, 비디오 플레이백 작업부하를 지원하는 듀얼코어 시스템 (101) 은 단일 코어 모드에서 동작한다. 약 50 퍼센트의 작업 퍼센트 파라미터를 나타내는 포인트 (405) 에서, 듀얼코어 시스템 (101) 은 그의 이전 단일 코어 모드에 비교되는 병렬 작업 모드 ("듀얼코어 모드") 에 진입한다.
이 예시적 환경에 따르면, 멀티프로세서 결정 알고리즘 모듈 (125) 은 이 실시예에서 약 50 퍼센트와 동일하게 설정된 웨이크업 병렬 작업 퍼센트 파라미터 Pw 를 사용하여 포인트 (405) 에 이를 때까지 제 1 라인 (402) 을 모니터링한다. 포인트 (405) 로부터 그리고 그 후, 멀티프로세서 결정 알고리즘 모듈 (125) 은 슬립 병렬 작업 퍼센트 파라미터 Ps 를 사용하여 제 2 라인 (404) 을 모니터링한다. 슬립 병렬 작업 퍼센트 파라미터 Ps 는 당업자가 이해할 수 있는 바와 같이 임의의 값으로 설정될 수도 있다.
도 5 는 휴대용 컴퓨팅 디바이스 (100) 의 다수의 CPU들 및/또는 멀티코어 CPU들 (110) 을 동적으로 제어하는 예시적 방법 (500) 을 예시한 논리적 흐름도이다. 블록 (505) 은 방법 (500) 의 제 1 단계를 포함한다. 블록 (505) 에서, O/S 스케줄러 모듈 (505) 로부터의 데이터는 패러렐리즘 모니터 모듈 (120) 에 의해 수신될 수도 있다. 전술한 바와 같이, 패러렐리즘 모니터 모듈 (120) 은 작업 태스크들이 시스템 (101) 에 추가되고 있거나 또는 그로부터 제거될 때 O/S 스케줄러 (105) 로부터 콜백들을 수신할 수도 있다.
다음, 블록 (505) 에서, 시스템 (101) 의 작업 큐들 (115) 은 패러렐리즘 모니터 모듈 (120) 을 사용하여 모니터링될 수도 있다. 패러렐리즘 모니터 모듈 (120) 은 도 3a 에 예시한 바와 같이 매 2 밀리초 정도와 같은 어떤 미리 정해진 시간 주기들로 런 큐들 (115) 을 폴링 (poll) 할 수도 있다. 패러렐리즘 모니터 모듈 (120) 이 블록 (505) 에서 검출된 바와 같은 임의의 콜백들을 수신하면, 이 활동은 패러렐리즘 모니터 모듈 (120) 로 하여금 그의 현재 작업부하의 런 큐 (115) 를 즉각적으로 폴링하게 할 수도 있다. 대안으로, 이를테면, 태스크가 추가될 때 또는 태스크가 런 큐들 (115) 로부터 제거되는 경우, 상이한 콜이 각각의 동작에 대해 수신될 수도 있다. 패러렐리즘 모니터 모듈 (120) 은 런 큐들 (115) 내에 존재하는 태스크들의 로컬 카운트를 유지할 수도 있다.
다음, 루틴 또는 서브방법 (515) 에서, 패러렐리즘 모니터 모듈 (120) 은 병렬 작업의 퍼센트를 계산할 수도 있다. 전술한 바와 같이, 이 스테이지 또는 블록 (515) 에서 계산되는 병렬 작업의 퍼센트 (Ps 또는 Pw) 는 (듀레이션 Ts 를 사용하든 또는 듀레이션 Tw 를 사용하든) 시스템 (101) 에 대한 현재 동작 모드에 의존한다. 동작의 멀티코어/CPU 모드에서, 패러렐리즘 모니터 모듈 (120) 은 그것이 그의 단일코어/CPU 모드에 있을 때 Tw 의 대응하는 듀레이션을 갖는 웨이크업 병렬 작업 퍼센트 파라미터 Pw 를 활용한다. Ts 의 대응하는 듀레이션을 갖는 슬립 병렬 작업 퍼센트 파라미터 Ps 는, 전술한 바와 같이, 시스템 (101) 이 그의 멀티코어/CPU 모드에 있을 때 패러렐리즘 모니터 모듈 (120) 에 의해 사용된다.
예를 들어, 시스템 (101) 이 단일코어 (멀티코어 또는 멀티프로세서가 아님) 동작 모드에 있다면, 멀티프로세서 결정 알고리즘 모듈 (125) 은 대응하는 듀레이션 Tw 를 사용하여 웨이크업 병렬 작업 퍼센트와 관련된 파라미터들 Pw 를 모니터링할 것이다. 도 3a 및 표들 (305A-305C) 은 웨이크업 병렬 작업 퍼센트들 Pw 가 일 예시적 실시형태에 따라 어떻게 계산될 것인지를 예시한다. 한편, 시스템 (101) 이 멀티코어/멀티프로세서 동작 모드에 있다면, 멀티프로세서 결정 알고리즘 모듈 (125) 은, 도 3b 에 예시하고 표들 (305D, 305E) 에 계산된 바와 같이, 듀레이션 Ts 를 사용하는 슬립 병렬 작업 퍼센트와 관련된 파라미터들 Ps 를 모니터링할 것이다. 몇몇 예시적 실시형태들에서, 듀레이션들 Tw 및 Ts 뿐 아니라 퍼센트 샘플들 (311) 의 그들의 각각의 수는 동일할 수도 있다.
다음, 결정 블록 (520) 에서, 멀티프로세서 결정 알고리즘 모듈 (125) 은 시스템 (101) 이 멀티코어/CPU 모드에서 동작하고 있는지의 여부를 결정한다. 결정 블록 (520) 에 대한 질의가 부정적이면, "아니오" 브랜치가 결정 블록 (525) 으로 이어진다. 결정 블록 (520) 에 대한 질의가 긍정적이면, "예" 브랜치가 블록 (540) 으로 이어진다.
결정 블록 (525) 에서, 멀티프로세서 결정 알고리즘 모듈 (125) 는, 병렬 작업의 퍼센트의 현재 값을, 대응하는 듀레이션 Tw 및 설정된 퍼센트 샘플 주기 사이즈를 갖는 웨이크업 병렬 작업 퍼센트 파라미터 Pw 에 대해 설정된 임계 값과 비교함으로써 현재 단일 코어/단일 프로세서 모드가 멀티코어/멀티프로세서 모드로 변경되어야 하는지를 결정한다. 결정 블록 (525) 에 대한 질의가 부정적 (Pw 임계치가 듀레이션 Tw 동안 연속 수의 퍼센트 샘플 주기들에 의해 충족되지 않았다는 것을 의미함) 이면, "아니오" 브랜치가 루틴 또는 서브방법 (515) 로 이어진다. 결정 블록 (520) 에 대한 질의가 긍정적 (Pw 임계치가 듀레이션 Tw 동안 연속 수의 퍼센트 샘플 주기들에 의해 충족 또는 달성되었다는 것을 의미함) 이면, "예" 브랜치가 블록 (530) 으로 이어진다.
블록 (530) 에서, 멀티프로세서 결정 알고리즘 모듈 (125) 은 CPU 전력 제어기 (130) 에 시스템 (101) 이 멀티코어/프로세서 상태에 있도록 하나 이상의 코어들 (222, 224, 226) 또는 프로세서들 (110) 을 턴 "온" 하도록 하는 커맨드들을 발행한다. 예를 들어, 도 3a 의 병렬 작업 주기들 (311A-311C) 의 제 1 내지 제 3 웨이크업 퍼센트에 의해 예시된 바와 같은 병렬 작업 상태가 검출되었다면 (Tw 가 60 밀리초와 동일하게 설정되었고 각각의 퍼센트 샘플 주기 (311A-311C) 가 20 밀리초와 동일하게 설정된다고 가정하면), 그리고 Pw 임계치가 30% 이상에 대해 설정되었다면, 블록 (530) 이 실행될 것이다.
다음, 블록 (535) 에서, 멀티프로세서 결정 알고리즘 모듈 (125) 은 또한 CPU 전력 제어기 (130) 를 통해 또는 직접적으로 각각의 코어 (222, 224, 226)/프로세서 (110) 에, 멀티코어/멀티프로세서 모드에 특정적인 각각의 동적 전압 및 주파수 스케일링 ("DVFS") 알고리즘들을 초기화하도록 하는 커맨드들을 발행할 수도 있다. DVFS 알고리즘들에 관한 추가 세부사항들은 도 7 과 관련하여 후술할 것이다. 그 후, 프로세스 또는 방법 (500) 은 루틴 또는 서브방법 (515) 으로 되돌아간다.
결정 블록 (540) 에서, 멀티프로세서 결정 알고리즘 모듈 (125) 은, 병렬 작업의 퍼센트의 현재 값을, 대응하는 샘플링 듀레이션 Ts 를 갖는 슬립 병렬 작업 퍼센트 파라미터 Ps 에 대해 설정된 임계 값과 비교함으로써 현재 멀티코어 모드가 단일 코어/감소된 코어 모드로 변경되어야 하는지를 결정한다. 결정 블록 (540) 에 대한 질의가 부정적이면, "아니오" 브랜치는 루틴 또는 서브방법 (515) 으로 되돌아간다. 결정 블록 (540) 에 대한 질의가 긍정적이면, "예" 브랜치가 블록 (545) 로 이어진다.
블록 (545) 에서, 멀티프로세서 결정 알고리즘 모듈 (125) 은 CPU 전력 제어기 (130) 에, 시스템 (101) 을 멀티코어/멀티프로세서 상태로부터 단일 코어/감소된 코어 프로세서 상태로 시프트시키도록 하는 커맨드들을 발행한다. 멀티프로세서 결정 알고리즘 모듈 (125) 은 CPU 전력 제어기 (130) 에, 하나 이상의 코어들 (222, 224, 226) 또는 CPU들 (110) 를 턴 "오프" 또는 전력 차단하도록 하는 커맨드들을 발행할 수도 있다. 전술한 바와 같이, 이 "오프" 상태는 전력의 완전한 결여 대신 "슬립" 상태 또는 저전력 상태를 포함할 수도 있다. 예를 들어, 도 3b 의 병렬 작업 주기들 (311D, 311E) 의 제 1 내지 제 4 슬립 퍼센트에 의해 예시된 바와 같은 병렬 작업 상태가 검출되었다면 (Ts 가 1 백 20 밀리초의 듀레이션과 동일하게 설정되었고 각각의 퍼센트 샘플 주기 (311D, 311E) 가 30 밀리초와 동일하게 설정되는 것을 가정하면), 그리고 Ps 임계치가 33% 이하로 설정되었다면, 블록 (545) 이 실행될 것이다.
다음, 블록 (550) 에서, 멀티프로세서 결정 알고리즘 모듈 (125) 은 나머지 활성 단일 코어 (222, 224 또는 226) 또는 CPU (110) 에, 단일 코어/감소된 프로세서 동작에 대한 그의 DVFS 알고리즘을 조절하도록 하는 커맨드들을 발행할 수도 있다. DVFS 알고리즘들에 관한 추가 세부사항들은 도 7 과 관련하여 후술할 것이다. 그 후, 방법 (500) 은 루틴 또는 서브방법 (515) 으로 되돌아간다.
도 6 은 다수의 코어들 (222, 224, 226) 및/또는 다수의 CPU들 (110) 사이의 병렬 작업의 퍼센트를 계산하는 예시적 서브방법 또는 루틴 (515) 을 예시한 논리적 흐름도이다. 블록 (605) 은 서브방법 또는 루틴 (515) 의 제 1 단계이다. 블록 (605) 에서, 선택된 시간 간격에 걸친 태스크들 및/또는 스레드들의 총합이 패러렐리즘 모니터 모듈 (120) 에 의해 계산된다. 이 총합은 시스템 (101) 에 대한 현재 동작 모드에 기초한다.
이 블록 (605) 에 대해, 시스템 (101) 에 대한 멀티코어/멀티프로세서 동작 모드에서, 패러렐리즘 모니터 모듈 (120) 은 도 3b 및 표들 (305D, 305E) 에 예시한 바와 같이 슬립 병렬 작업 퍼센트 파라미터 Ps 와 관련된 듀레이션 Ts 를 사용할 것이다. 그리고, 시스템 (101) 에 대한 동작의 단일 코어/단일 프로세서 모드에서, 패러렐리즘 모니터 모듈 (120) 은 도 3a 및 표들 (305A-305C) 에 예시한 바와 같이 웨이크업 작업 퍼센트 파라미터 Pw 와 관련된 듀레이션 Tw 를 사용한다. 각각의 듀레이션 Ts 및 Tw 는 듀레이션의 크기에 기초하여 맞춰진 그의 퍼센트 샘플 주기들을 가질 수도 있다. 예를 들어, 듀레이션 Ts 는 50 밀리초의 크기를 가질 수도 있다. 이것은, 일 예시적 퍼센트 샘플 주기가 듀레이션 Ts 에 걸쳐서 5 회 판독과 동일한 모든 10 밀리초가 걸리는 퍼센트 판독들을 포함한다는 것을 의미한다. 예시적 퍼센트 샘플 주기는 듀레이션 Ts 에 걸쳐 10 회 판독과 동일시되는 5 밀리초가 걸리는 퍼센트 판독들 등등을 포함할 수도 있다.
다음, 블록 (610) 에서, 병렬 작업의 퍼센트는 시스템 (101) 에 대한 현재 동작 모드에 기초하여 패러렐리즘 모니터 모듈 (120) 에 의해 계산될 수도 있다. 블록 (605) 와 관련하여 전술한 바와 같이, 패러렐리즘 모니터 모듈 (120) 은, 도 3a 및 도 3b 에 예시한 바와 같이, 시스템 (101) 에 대한 현재 동작 모드에 의존하여 이 블록에서 웨이크업 퍼센트 파라미터 Pw 또는 슬립 퍼센트 파라미터 Ps 중 어느 하나를 계산할 수도 있다. 다음, 블록 (615) 에서, 패러렐리즘 모니터 모듈 (120) 은 표에 Pw 또는 Ps 파라미터를 저장할 수도 있으며, 이 파라미터를 멀티프로세서 결정 알고리즘 모듈 (125) 에 통신시킬 수도 있다. 그 후, 서브방법 또는 루틴 (515) 는 도 5 의 결정 블록 (520) 에 되돌아간다.
도 7 은 도 1 의 PCD (100) 의 특징부들 그리고 특히 프로세서 설계에서 동적 전압 및 주파수 스케일링 ("DVFS") 을 지원하는 PCD (100) 의 엘리먼트들을 예시한 개략도이다. DVFS 는 전력 소비와 성능 사이의 트레이드오프를 가능하게 한다. DVFS 를 활용하도록 설계된 프로세서들 (110) 은 프로세서의 클록 주파수가 전압 면에서 대응하는 조절로 조절되게 한다. 클록 주파수만을 감소시키는 것은 유용하지 않은데, 이는 임의의 전력 절감이 실행 시간 증가에 의해 상쇄되어 총 소비 에너지의 순 감소를 가져오는 것은 아니기 때문이다. 그러나, 동작 전압 감소는 소비되는 전력에 비례적인 절감을 초래한다.
도 7 에 예시한 바와 같이, 중앙 프로세싱 유닛 (110) 은 버스 (211) 를 통해 메모리 (112) 에 커플링된다. 중앙 프로세싱 유닛 (110) 은 N 개의 코어 프로세서들을 갖는 다중코어 프로세서이다. 즉, 중앙 프로세싱 유닛 (110) 은 제 1 코어 (222), 제 2 코어 (224), 및 제 N 코어 (226) 를 포함한다. 공지되어 있는 바와 같이, 제 1 코어 (222), 제 2 코어 (224), 및 제 N 코어 (226) 의 각각은 전용 애플리케이션 또는 프로그램 (119) 을 지원하는 데 이용 가능하다. 대안으로, 하나 이상의 애플리케이션들 또는 프로그램들 (119) 은 가용 코어들 중 2 개 이상에 걸쳐서 프로세싱을 위해 분배될 수도 있다.
제 1 코어 (222), 제 2 코어 (224) 내지 제 N 코어 (226) 는 단일 집적회로 다이 상에 통합될 수 있으며, 또는 그것들은 다중회로 패키지 내의 개별 다이들 상에 통합 또는 커플링될 수도 있다. 설계자들은 하나 이상의 공유된 캐시들을 통해 제 1 코어 (222), 제 2 코어 (224) 내지 제 N 코어 (226) 를 커플링할 수도 있으며, 그들은 버스, 링, 메시 및 크로스바 토폴로지들과 같은 네트워크 토폴로지들을 통해 전달하는 메시지 또는 명령을 구현할 수도 있다.
예시한 실시형태에서, RF 송수신기 (268) 는 디지털 회로 엘리먼트들을 통해 구현되며, 코어 프로세서 (210)("코어" 로 표기됨) 와 같은 적어도 하나의 프로세서를 포함한다. 이 디지털 구현에서, RF 송수신기 (268) 는 버스 (213) 를 통해 메모리 (112) 에 커플링된다.
버스 (211) 및 버스 (213) 의 각각은, 당업계에 공지되어 있는 바와 같이, 하나 이상의 유선 또는 무선 접속들을 통한 다수의 통신 경로들을 포함할 수도 있다. 버스 (211) 및 버스 (213) 는, 제어기들, 버퍼들 (캐시들), 드라이버들, 리피터들, 및 수신기들 (간결성을 위해 생략됨) 과 같은 추가 엘리먼트들을 포함하여 통신을 가능하게 할 수도 있다. 또한, 버스 (211) 및 버스 (213) 는 전술한 콤포넌트들 사이에 적절한 통신을 가능하게 하도록 어드레스, 제어, 및/또는 제어 접속들을 포함할 수도 있다.
PCD (100) 에 의해 사용되는 로직이 소프트웨어로 구현될 때, 도 7 에 도시한 바와 같이, 개시 로직 (250), 관리 로직 (260), DVFS 인터페이스 로직 (270), 애플리케이션 스토어 (280) 내의 애플리케이션들, 및 파일 시스템 (290) 의 부분들은 임의의 컴퓨터 관련 시스템 또는 방법에 의해 또는 이와 관련하여 사용하기 위한 임의의 컴퓨터 판독가능 매체 상에 저장될 수도 있다는 것에 유의해야 한다.
대안의 실시형태에서, 개시 로직 (250), 관리 로직 (260) 및 아마도 DVFS 인터페이스 로직 (270) 중 하나 이상이 하드웨어로 구현되는 경우, 다양한 로직이 당업계에 각각 공지되어 있는 다음의 기술들 중 임의의 기술 또는 그의 조합으로 구현될 수도 있다: 데이터 신호들에 대해 로직 기능들을 구현하는 로직 게이트들을 갖는 이산 로직 회로(들), 적절한 조합형 로직 게이트들을 갖춘 ASIC, PGA, FPGA 등.
전술한 바와 같이, 메모리 (112) 는 플래시 메모리 또는 고체 상태 메모리 디바이스와 같은 비휘발성 데이터 저장 디바이스를 포함할 수도 있다. 단일 디바이스로서 도시되어 있지만, 메모리 (112) 는 RF 송수신기 (268) 내의 중앙 프로세싱 유닛 및/또는 코어 (210) (또는 추가 프로세서 코어들) 에 커플링된 개별 스토어들을 갖춘 분산형 메모리 디바이스일 수도 있다.
개시 로직 (250) 은 제 1 코어 (222), 제 2 코어 (224) 내지 제 N 코어 (226) 와 같은 가용 코어들 중 하나 이상의 코어의 성능을 관리 또는 제어하기 위해 선택 프로그램을 선택적으로 식별, 로딩, 및 실행하기 위한 하나 이상의 실행가능 명령들을 포함한다. 선택 프로그램은 임베디드 파일 시스템 (290) 의 프로그램 스토어 (296) 에서 발견될 수 있으며, 성능 스케일링 알고리즘 (297) 및 파라미터 세트 (298) 의 특정 조합에 의해 정의된다. 선택 프로그램은, RF 송수신기 (268) 내의 코어 (210) 및 중앙 프로세싱 유닛 (110) 내의 코어 프로세서들 (222, 224, 226) 중 하나 이상에 의해 실행될 때, 성능 모니터 모듈 (114) 에 의해 제공되는 하나 이상의 신호들에 따라 동작하여 각각의 프로세서 코어의 성능을 스케일링할 수도 있다. 이와 관련하여, 모니터 모듈 (114) 은 이벤트들, 프로세스들, 애플리케이션들, 리소스 상태 조건들, 경과 시간, 온도 등의 하나 이상의 표시자들을 제공할 수도 있다.
예를 들어, 모니터 모듈 (114) 은 CPU (110) 가 멀티코어/멀티프로세서 모드에서 지금 동작해야 하는 신호들을 멀티프로세서 결정 알고리즘 모듈 (125) 로부터 수신할 수도 있다. 대안으로, 모니터 모듈 (114) 은 CPU (110) 가 단일 코어/감소된 코드 모드에서 지금 동작해야 한다는 신호들을 멀티프로세서 결정 알고리즘 모듈 (125) 로부터 수신할 수도 있다.
관리 로직 (260) 은 각각의 프로세서 코어들 (222, 224, 226) 중 하나 이상에서 동작 성능 스케일링 프로그램을 종료하기 위할 뿐 아니라 가용 코어들 (222, 224, 226) 중 하나 이상의 코어들의 성능을 관리 또는 제어하는 보다 적합한 교체 프로그램을 선택적으로 식별, 로딩, 및 실행하기 위한 하나 이상의 실행가능 명령들을 포함한다. 관리 로직 (260) 은 런타임에서 그들 기능들을 수행하도록 배열되며, PCD (100) 는 전력을 공급받고 디바이스의 오퍼레이터에 의해 사용된다. 교체 프로그램은 임베디드 파일 시스템 (290) 의 프로그램 스토어 (296) 에서 발견될 수 있고, 성능 스케일링 알고리즘 (297) 및 파라미터 세트 (298) 의 특정 조합에 의해 정의된다. 도 8 에 예시한 바와 같이, 프로그램 스토어 (296) 는 코어 스토어 (294) 및 DVFS 스토어 (292) 내에 계층적으로 배열될 수 있다. 교체 프로그램은, RF 송수신기 (268) 내의 코어 (210) 또는 중앙 프로세싱 유닛 (110) 내의 코어 프로세서들 (222, 224, 226) 중 하나 이상에 의해 실행될 때, 모니터 모듈 (114) 에 의해 제공되는 하나 이상의 신호들 또는 다양한 프로세서 코어들 (222, 224, 226) 중 하나 이상에 따라 동작하여 각각의 프로세서 코어의 성능을 스케일링할 수도 있다.
DVFS 인터페이스 로직 또는 인터페이스 로직 (270) 은 임베디드 파일 시스템 (290) 에 저장된 정보를 관찰, 구성, 또는 이와는 다르게 업데이트하도록 제시, 관리, 및 외부 입력들과 상호 작용하게 하는 하나 이상의 실행가능 명령들을 포함한다. 일 실시형태에서, 인터페이스 로직 (270) 은 USB 포트 (142) 를 통해 수신된 제조자 입력들과 결합하여 동작할 수도 있다. 이들 입력들은 프로그램 스토어 (296) 로부터 제거되거나 또는 그에 추가되는 하나 이상의 프로그램들을 포함할 수도 있다. 대안으로, 입력들은 프로그램 스토어 (296) 내의 프로그램들 중 하나 이상에 대한 편집 또는 변경을 포함할 수도 있다. 또한, 입력들은 개시 로직 (250) 및 관리 로직 (260) 중 하나 또는 양측 모두에 대한 하나 이상의 변화들 또는 전체적인 교체들을 식별할 수도 있다. 예로서, 입력들은 수신된 신호 전력이 식별된 임계치 아래로 떨어질 때 RF 송수신기 (268) 에서 모든 성능 스케일링을 유지하도록 PCD (100) 에 명령하는 관리 로직 (260) 에 대한 변경을 포함할 수도 있다. 다른 예로서, 입력들은, 도 5 와 관련하여 전술한 방법 (500) 에 의해 제어되는 바와 같이, CPU (110) 가 멀티코어/멀티프로세서 모드에 있을 때 또는 CPU (110) 가 단일 코어/감소된 프로세서 모드에 있을 때 바람직한 프로그램을 적용하도록 PCD (100) 에 명령하는 관리 로직 (260) 에 대한 변경을 포함할 수도 있다.
다른 예로서, DVFS 알고리즘들 (297) 은, 당업자가 이해할 수 있는 바와 같이, 다수의 코어들 (222, 224, 226) 및/또는 추가 CPU들 (110) 이 특정된 병렬 작업에 대해 활성화될 때, 성능의 차이 면에서 약 5 퍼센트 이하가 달성되도록 튜닝될 수도 있다. 알고리즘들 (297) 은 성능의 차이 면에서 약 5 퍼센트 이하의 목적을 달성하기 위해 병렬 작업 파라미터들 (Pw 및 Ps) 의 퍼센트에 대한 임계치들과 조합하여 조절될 수도 있다.
인터페이스 로직 (270) 은 제조자가 PCD (100) 상에서 정의된 동작 조건들 하에 최종 사용자의 경험을 제어가능하게 구성 및 조절하게 한다. 메모리 (112) 가 플래시 메모리일 때, 개시 로직 (250), 관리 로직 (260), 인터페이스 로직 (270), 애플리케이션 스토어 (280) 내의 애플리케이션 프로그램들, 또는 임베디드 파일 시스템 (290) 내의 정보 중 하나 이상은 편집, 교체, 또는 이와 다르게 수정될 수 있다. 몇몇 실시형태들에서, 인터페이스 로직 (270) 은 PCD (100) 의 오퍼레이터 또는 최종 사용자가 구동 로직 (250), 관리 로직 (260), 애플리케이션 스토어 (280) 내의 애플리케이션 프로그램들 또는 임베디드 파일 시스템 (290) 내의 정보를 검색, 배치, 수정 또는 교체하도록 할 수도 있다. 오퍼레이터는 PCD (100) 의 다음 구동 시에 구현될 변화를 이루는 데 결과적인 인터페이스를 사용할 수도 있다. 대안으로, 오퍼레이터는 런타임 중에 구현되는 변화들을 이루는 데 결과적인 인터페이스를 사용할 수도 있다.
도 8a 및 도 8b 는 병렬 작업이 도 2 의 시스템 (101) 에 의해 생성 및 지원될 수도 있는 사용 케이스들의 실시형태들을 예시한 개략도들을 포함한다. 제 1 실시예의 사용 케이스는 도 8a 의 표 (800) 에 예시된다. 사용 케이스는 PCD (100) 상에서 수행될 수 있는 태스크들의 세트를 포함한다. 태스크들은 웹 브라우징 (즉, PCD (100) 가 인터넷에 커플링된 송신기의 통신 범위 내에 있는 동안 브라우저 애플리케이션을 실행하는 것), 오디오/비디오 플레이백, 오디오 플레이백, 이메일 애플리케이션을 구동하는 것, 및 하나 이상의 다른 애플리케이션들을 구동하는 것을 포함한다. DVFS 알고리즘들 (297) 과 관련된 파라미터들 (298)(P) 은 표 (810) 에 나열된다. 표 (810) 의 A 열은 제 1 사용 케이스 "A" 의 제 1 및 제 2 코어 (222, 224) 와 관련된 동작 파라미터들 P1 및 P2 를 나열할 수도 있다. 제 1 사용 케이스 "A" 는 후술하는 제 2 사용 케이스 "B" 에 비교되는 단일 코어/감소된 프로세서 동작 모드에 대응할 수도 있다. 표 (810) 의 행들은 전반적으로 표 (800) 의 행들에 대응한다.
표 (810) 의 B 열은 제 2 사용 케이스 "B" 의 제 1, 제 2, 및 제 5 코어들 (이를 테면, 222, 224, 그리고 제 5 코어는 예시하지 않음) 에 대한 동작 파라미터들 P1, P2 및 P5 를 나열할 수도 있다. 이 제 2 사용 케이스 "B" 는 표 (810) 의 제 1 사용 케이스 "A" 에 대해 전술한 바와 같은 멀티코어/멀티프로세서 동작에 대응할 수도 있다.
제 2 예시적 사용 케이스는 도 8b 의 표 (850) 에 예시된다. 이 제 2 사용 케이스는 제 1 사용 케이스의 이메일 애플리케이션을 대신하여 단문자 서비스 (SMS) 를 포함한다. DVFS 알고리즘들과 관련된 파라미터들 (298)(또한 P 로 표기됨) 은 표 (860) 에 나열된다. 표 (860) 의 행들은 전반적으로 표 (850) 의 행들에 대응한다.
표 (810) 의 A 열은 제 1 사용 케이스 "A" 의 제 1 및 제 4 코어 (이를 테면 222 그리고 제 4 코어는 예시하지 않음) 와 관련된 동작 파라미터들 P1 및 P4 를 나열할 수도 있다. 이 제 1 사용 케이스 "A" 는 후술하는 표 (860) 의 제 2 사용 케이스 "B" 에 비교되는 단일 코어/감소된 프로세서 동작 모드에 대응할 수도 있다.
표 (860) 의 B 열은 제 2 사용 케이스 "B" 의 제 1, 제 3, 및 제 4 코어들 (이를테면, 222, 제 3 및 제 4 코어는 예시하지 않음) 에 대한 동작 파라미터들 P1, P3 및 P4 를 나열할 수도 있다. 제 2 사용 케이스 "B" 는 표 (860) 의 제 1 사용 케이스 "A" 에 대해 전술한 바와 같은 멀티코어/멀티프로세서 동작에 대응할 수도 있다.
하나 이상의 사용 케이스들이 PCD (100) 의 프로세싱 리소스들 상에 식별가능 병렬 작업부하를 나타낼 수도 있다는 것이 가능하다. PCD (100) 상의 병렬 작업부하가 패러렐리즘 모니터 모듈 (120) 에 의해 식별될 수 있다면, 멀티프로세서 결정 알고리즘 모듈 (125) 은 모니터 모듈 (114) 및 CPU 전력 제어기 (130) 에, 성능과 전력 소비 사이의 바람직한 트레이드오프를 달성하도록 설계된 대응하는 파라미터들 (298) 및 특정 성능 스케일링 알고리즘들 (297) 을 적용하거나, 배터리 전력을 보존하거나, 성능을 보장하도록 설계될 수도 있는, PCD (100) 상의 동작 조건들을 조절하도록 하는 커맨드들을 발행할 수도 있다.
멀티프로세서 결정 알고리즘 모듈 (125) 은 PCD 상의 현존 병렬 작업부하 를 식별하도록 실시간으로 동작하며, Pw 또는 Ps 의 임계 값들에 도달하는 것과 같은 어떤 환경들 하에서, PCD (100) 상의 하나 이상의 동작 파라미터들을 조절함으로써, 이를테면 추가 코어들 (222, 224, 226) 에 전력을 "공급" 하거나, 또는 이를테면 도 5 와 관련하여 블록들 (525, 540) 에서 전술한 코어들에 전력을 "차단"함으로써, 식별된 병렬 작업부하에 반응한다. 오퍼레이터 경험과 전력 소비 사이에 바람직한 밸런스를 달성하도록 공지된 다수의 성능 스케일링 알고리즘들 (297) 을 포함하는 PCD들 (100) 에 대해, 식별된 병렬 작업부하의 식별은 멀티프로세서 결정 알고리즘 모듈 (125) 에 의해 도 5 에 예시한 방법 (500) 의 블록들 (535, 550) 에서와 같이, PCD (100) 상에서 하나 이상의 파라미터들 (298) 및 선택 성능 스케일링 알고리즘 (297) 의 적절한 조합을 선택 및 적용하도록 하는 데 사용될 수도 있다.
위 개시물의 관점에서, 프로그래밍 분야의 당업자는 컴퓨터 코드를 기록하거나 적절한 하드웨어 및/또는 회로들을 식별하여, 예를 들어 개시된 발명을 본 명세서에서 흐름도들 및 관련 설명에 기초하여 어렵지 않게 구현하도록 할 수 있다. 따라서, 특정 세트의 프로그램 코드 명령들 또는 상세한 하드웨어 디바이스들의 개시사항은 본 발명을 어떻게 이루고 사용할지에 대한 적절한 이해를 위해 필요한 것으로 간주되지는 않는다. 청구되는 컴퓨터 구현 프로세스들의 발명적 기능은 다양한 프로세스 흐름들을 예시할 수도 있는 도면과 관련하여 그리고 위 설명에서 더 상세히 설명된다.
하나 이상의 예시적인 실시형태에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 이상의 명령들 또는 컴퓨터 판독가능 매체 상의 코드 상에 저장되거나 이를 통해 송신될 수도 있다. 컴퓨터 판독가능 매체는 일 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 컴퓨터 저장 매체 및 통신 매체 양자 모두를 포함한다. 저장 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 이용 가능한 매체일 수도 있다. 비 제한적인 예시의 방식으로, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장장치, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스, 또는 컴퓨터에 의해 액세스 될 수 있고 명령들 또는 데이터 구조들 형태로 원하는 프로그램 코드를 운반 또는 저장하는데 이용될 수 있는 임의의 다른 매체를 포함할 수 있다.
또한, 임의의 접속을 적당히 컴퓨터 판독가능 매체로 칭한다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선 (twisted pair), DSL (digital subscriber line), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술은 매체의 정의 내에 포함된다.
본 명세서에서 이용된 바와 같이, 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, DVD (digital versatile disc), 플로피 디스크 및 블루-레이 디스크를 포함하는데, 여기서 디스크 (disk) 는 보통 자기적으로 데이터를 재생하는 반면, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 상기의 조합은 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
선택된 양태들이 상세히 예시되고 설명되었지만, 다음 청구범위에 의해 정의되는 바와 같이, 본 발명의 사상 및 범주로부터 벗어나는 일 없이, 다양한 치환물들 및 변경물들이 이루어질 수도 있다는 것을 이해할 것이다.

Claims (40)

  1. 휴대용 컴퓨팅 디바이스에서 작업부하 패러렐리즘 (parallelism) 의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법으로서, 상기 방법은 상기 휴대용 컴퓨팅 디바이스 내의 컴퓨터 시스템에 의해 수행되며, 상기 방법은,
    운영 시스템 스케줄러에 의해 주어진 시간에 멀티코어 프로세서에 할당되는 태스크들의 수를 결정하도록 상기 멀티코어 프로세서의 하나 이상의 작업 큐 (work queue) 들을 샘플링하는 단계;
    상기 멀티코어 프로세서의 현재 동작 모드 및 상기 하나 이상의 작업 큐들의 샘플링에 기초하여 병렬 작업의 퍼센트를 계산하는 단계로서,
    주어진 시간에 상기 멀티코어 프로세서에 할당되는 태스크들의 수가 상기 멀티코어 프로세서의 2 개 이상의 코어들을 사용하는 것을 허용할 때 병렬 작업의 인스턴스가 발생하고,
    상기 병렬 작업의 퍼센트 (P%) 는 수학식
    P% = 샘플링 주기에 대한 병렬 작업의 인스턴스들 / 샘플링 주기에 대한 샘플들의 수
    에 의해 제어되는, 상기 병렬 작업의 퍼센트를 계산하는 단계;
    복수의 연속하는 샘플들에 걸쳐서 병렬 작업을 측정함으로써 상기 병렬 작업의 계산된 퍼센트가 달성되었는지를 결정하는 단계;
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 단계; 및
    상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는 것으로 결정되면, 상기 멀티코어 프로세서의 하나 이상의 코어들에게 동적 전압 및 주파수 스케일링 알고리즘을 스위칭하도록 명령하는 단계를 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 단계는 상기 병렬 작업의 퍼센트가 멀티코어 상태에 진입하기 위해 확립된 임계 값을 초과했는지를 결정하는 단계를 더 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법.
  5. 제 4 항에 있어서,
    상기 임계 값은 제 1 임계 값이고,
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 단계는 상기 병렬 작업의 퍼센트가 단일 프로세서 상태에 진입하기 위해 확립된 제 2 임계 값 아래로 떨어졌는지를 결정하는 단계를 더 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법.
  6. 제 1 항에 있어서,
    상기 병렬 작업의 퍼센트를 계산하는 단계는 상기 하나 이상의 작업 큐들에 존재하는 스레드들 또는 작업 태스크들의 수를 결정하는 단계를 더 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법.
  7. 제 1 항에 있어서,
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 한다면 하나 이상의 커맨드들을 중앙 프로세싱 유닛 전력 제어기에 발행하는 단계를 더 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법.
  8. 제 7 항에 있어서,
    상기 하나 이상의 커맨드들은 하나 이상의 코어들을 슬립 상태에 놓는 명령들을 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법.
  9. 제 7 항에 있어서,
    상기 하나 이상의 커맨드들은 하나 이상의 코어들을 활성 상태에 놓는 명령들을 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법.
  10. 제 1 항에 있어서,
    상기 휴대용 컴퓨팅 디바이스는 모바일 폰, 페이저, 개인 휴대 정보 단말기 ("PDA"), 스마트폰, 내비게이션 디바이스, 스마트북, 및 미디어 플레이어 중 적어도 하나를 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법.
  11. 휴대용 컴퓨팅 디바이스에서 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 컴퓨터 시스템으로서,
    프로세서를 포함하며,
    상기 프로세서는,
    운영 시스템 스케줄러에 의해 주어진 시간에 멀티코어 프로세서에 할당되는 태스크들의 수를 결정하도록 상기 멀티코어 프로세서의 하나 이상의 작업 큐 (work queue) 들을 샘플링하고;
    상기 멀티코어 프로세서의 현재 동작 모드 및 상기 하나 이상의 작업 큐들의 샘플링에 기초하여 병렬 작업의 퍼센트를 계산하되,
    주어진 시간에 상기 멀티코어 프로세서에 할당되는 태스크들의 수가 상기 멀티코어 프로세서의 2 개 이상의 코어들을 사용하는 것을 허용할 때 병렬 작업의 인스턴스가 발생하고,
    상기 병렬 작업의 퍼센트 (P%) 는 수학식
    P% = 샘플링 주기에 대한 병렬 작업의 인스턴스들 / 샘플링 주기에 대한 샘플들의 수
    에 의해 제어되고;
    복수의 연속하는 샘플들에 걸쳐서 병렬 작업을 측정함으로써 상기 병렬 작업의 계산된 퍼센트가 달성되었는지를 결정하고;
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하고;
    상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는 것으로 결정되면, 상기 멀티코어 프로세서의 하나 이상의 코어들에게 동적 전압 및 주파수 스케일링 알고리즘을 스위칭하도록 명령하도록 동작가능한, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 컴퓨터 시스템.
  12. 삭제
  13. 삭제
  14. 제 11 항에 있어서,
    상기 프로세서가, 상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 것은, 상기 프로세서가, 상기 병렬 작업의 퍼센트가 멀티코어 상태에 진입하기 위해 확립된 임계 값을 초과했는지를 결정하는 것을 더 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 컴퓨터 시스템.
  15. 제 14 항에 있어서,
    상기 임계 값은 제 1 임계 값이고,
    상기 프로세서가, 상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 것은, 상기 프로세서가, 상기 병렬 작업의 퍼센트가 단일 프로세서 상태에 진입하기 위해 확립된 제 2 임계 값 아래로 떨어졌는지를 결정하는 것을 더 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 컴퓨터 시스템.
  16. 제 11 항에 있어서,
    상기 프로세서가, 상기 병렬 작업의 퍼센트를 계산하는 것은, 상기 프로세서가, 상기 하나 이상의 작업 큐들에 존재하는 스레드들 또는 작업 태스크들의 수를 결정하는 것을 더 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 컴퓨터 시스템.
  17. 제 11 항에 있어서,
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 한다면, 상기 프로세서가 하나 이상의 커맨드들을 중앙 프로세싱 유닛 전력 제어기에 발행하는 것을 더 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 컴퓨터 시스템.
  18. 제 17 항에 있어서,
    상기 하나 이상의 커맨드들은 하나 이상의 코어들을 슬립 상태에 놓는 명령들을 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 컴퓨터 시스템.
  19. 제 17 항에 있어서,
    상기 하나 이상의 커맨드들은 하나 이상의 코어들을 활성 상태에 놓는 명령들을 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 컴퓨터 시스템.
  20. 제 11 항에 있어서,
    상기 휴대용 컴퓨팅 디바이스는 모바일 폰, 개인 휴대 정보 단말기, 페이저, 스마트폰, 내비게이션 디바이스, 및 무선 접속 또는 링크를 갖는 핸드헬드 컴퓨터 중 적어도 하나를 포함하는, 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 컴퓨터 시스템.
  21. 무선 핸드헬드 컴퓨팅 디바이스의 하나 이상의 메모리 리소스들을 관리하는 컴퓨터 시스템으로서,
    운영 시스템 스케줄러에 의해 주어진 시간에 멀티코어 프로세서에 할당되는 태스크들의 수를 결정하도록 상기 멀티코어 프로세서의 하나 이상의 작업 큐 (work queue) 들을 샘플링하는 수단;
    상기 멀티코어 프로세서의 현재 동작 모드 및 상기 하나 이상의 작업 큐들의 샘플링에 기초하여 병렬 작업의 퍼센트를 계산하는 수단으로서,
    주어진 시간에 상기 멀티코어 프로세서에 할당되는 태스크들의 수가 상기 멀티코어 프로세서의 2 개 이상의 코어들을 사용하는 것을 허용할 때 병렬 작업의 인스턴스가 발생하고,
    상기 병렬 작업의 퍼센트 (P%) 는 수학식
    P% = 샘플링 주기에 대한 병렬 작업의 인스턴스들 / 샘플링 주기에 대한 샘플들의 수
    에 의해 제어되는, 상기 병렬 작업의 퍼센트를 계산하는 수단;
    복수의 연속하는 샘플들에 걸쳐서 병렬 작업을 측정함으로써 상기 병렬 작업의 계산된 퍼센트가 달성되었는지를 결정하는 수단;
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 수단; 및
    상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는 것으로 결정되면, 상기 멀티코어 프로세서의 하나 이상의 코어들에게 동적 전압 및 주파수 스케일링 알고리즘을 스위칭하도록 명령하는 수단을 포함하는, 무선 핸드헬드 컴퓨팅 디바이스의 하나 이상의 메모리 리소스들을 관리하는 컴퓨터 시스템.
  22. 삭제
  23. 삭제
  24. 제 21 항에 있어서,
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 수단은 상기 병렬 작업의 퍼센트가 멀티코어 상태에 진입하기 위해 확립된 임계 값을 초과했는지를 결정하는 수단을 더 포함하는, 무선 핸드헬드 컴퓨팅 디바이스의 하나 이상의 메모리 리소스들을 관리하는 컴퓨터 시스템.
  25. 제 24 항에 있어서,
    상기 임계 값은 제 1 임계 값이고,
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 수단은 상기 병렬 작업의 퍼센트가 단일 프로세서 상태에 진입하기 위해 확립된 제 2 임계 값 아래로 떨어졌는지를 결정하는 수단을 더 포함하는, 무선 핸드헬드 컴퓨팅 디바이스의 하나 이상의 메모리 리소스들을 관리하는 컴퓨터 시스템.
  26. 제 21 항에 있어서,
    상기 병렬 작업의 퍼센트를 계산하는 수단은 상기 하나 이상의 작업 큐들에 존재하는 스레드들 또는 작업 태스크들의 수를 결정하는 수단을 더 포함하는, 무선 핸드헬드 컴퓨팅 디바이스의 하나 이상의 메모리 리소스들을 관리하는 컴퓨터 시스템.
  27. 제 21 항에 있어서,
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 한다면 하나 이상의 커맨드들을 중앙 프로세싱 유닛 전력 제어기에 발행하는 수단을 더 포함하는, 무선 핸드헬드 컴퓨팅 디바이스의 하나 이상의 메모리 리소스들을 관리하는 컴퓨터 시스템.
  28. 제 27 항에 있어서,
    상기 하나 이상의 커맨드들은 하나 이상의 코어들을 슬립 상태에 놓는 명령들을 포함하는, 무선 핸드헬드 컴퓨팅 디바이스의 하나 이상의 메모리 리소스들을 관리하는 컴퓨터 시스템.
  29. 제 27 항에 있어서,
    상기 하나 이상의 커맨드들은 하나 이상의 코어들을 활성 상태에 놓는 명령들을 포함하는, 무선 핸드헬드 컴퓨팅 디바이스의 하나 이상의 메모리 리소스들을 관리하는 컴퓨터 시스템.
  30. 제 21 항에 있어서,
    상기 무선 핸드헬드 컴퓨팅 디바이스는 모바일 폰, 개인 휴대 정보 단말기, 페이저, 스마트폰, 내비게이션 디바이스, 및 무선 접속 또는 링크를 갖는 핸드헬드 컴퓨터 중 적어도 하나를 포함하는, 무선 핸드헬드 컴퓨팅 디바이스의 하나 이상의 메모리 리소스들을 관리하는 컴퓨터 시스템.
  31. 컴퓨터 판독가능 프로그램 코드가 구현된 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 판독가능 프로그램 코드는 휴대용 컴퓨팅 디바이스에서 작업부하 패러렐리즘의 정도를 동적으로 결정하고 작업부하를 지원하는 코어들의 수를 자동적으로 조절하는 방법을 구현하도록 실행되게 구성되며,
    상기 방법은,
    운영 시스템 스케줄러에 의해 주어진 시간에 멀티코어 프로세서에 할당되는 태스크들의 수를 결정하도록 상기 멀티코어 프로세서의 하나 이상의 작업 큐 (work queue) 들을 샘플링하는 단계;
    상기 멀티코어 프로세서의 현재 동작 모드 및 상기 하나 이상의 작업 큐들의 샘플링에 기초하여 병렬 작업의 퍼센트를 계산하는 단계로서,
    주어진 시간에 상기 멀티코어 프로세서에 할당되는 태스크들의 수가 상기 멀티코어 프로세서의 2 개 이상의 코어들을 사용하는 것을 허용할 때 병렬 작업의 인스턴스가 발생하고,
    상기 병렬 작업의 퍼센트 (P%) 는 수학식
    P% = 샘플링 주기에 대한 병렬 작업의 인스턴스들 / 샘플링 주기에 대한 샘플들의 수
    에 의해 제어되는, 상기 병렬 작업의 퍼센트를 계산하는 단계;
    복수의 연속하는 샘플들에 걸쳐서 병렬 작업을 측정함으로써 상기 병렬 작업의 계산된 퍼센트가 달성되었는지를 결정하는 단계;
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 단계; 및
    상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는 것으로 결정되면, 상기 멀티코어 프로세서의 하나 이상의 코어들에게 동적 전압 및 주파수 스케일링 알고리즘을 스위칭하도록 명령하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  32. 삭제
  33. 삭제
  34. 제 31 항에 있어서,
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 단계는 상기 병렬 작업의 퍼센트가 멀티코어 상태에 진입하기 위해 확립된 임계 값을 초과했는지를 결정하는 단계를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  35. 제 34 항에 있어서,
    상기 임계 값은 제 1 임계 값이고,
    상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 하는지를 결정하는 단계는 상기 병렬 작업의 퍼센트가 단일 프로세서 상태에 진입하기 위해 확립된 제 2 임계 값 아래로 떨어졌는지를 결정하는 단계를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  36. 제 31 항에 있어서,
    상기 병렬 작업의 퍼센트를 계산하는 단계는 상기 하나 이상의 작업 큐들에 존재하는 스레드들 또는 작업 태스크들의 수를 결정하는 단계를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  37. 제 31 항에 있어서,
    상기 방법을 구현하는 상기 프로그램 코드는 상기 병렬 작업의 계산된 퍼센트에 기초하여 상기 멀티코어 프로세서에 대한 상기 현재 동작 모드가 변경되어야 한다면 하나 이상의 커맨드들을 중앙 프로세싱 유닛 전력 제어기에 발행하는 것을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  38. 제 37 항에 있어서,
    상기 하나 이상의 커맨드들은 하나 이상의 코어들을 슬립 상태에 놓는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  39. 제 37 항에 있어서,
    상기 하나 이상의 커맨드들은 하나 이상의 코어들을 활성 상태에 놓는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  40. 제 31 항에 있어서,
    상기 휴대용 컴퓨팅 디바이스는 모바일 폰, 개인 휴대 정보 단말기, 페이저, 스마트폰, 내비게이션 디바이스, 및 무선 접속 또는 링크를 갖는 핸드헬드 컴퓨터 중 적어도 하나를 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020137029381A 2011-04-05 2012-04-03 휴대용 컴퓨팅 디바이스의 멀티코어 프로세서에서 다수의 코어들로의 전력을 동적으로 제어하는 방법 및 시스템 KR101562448B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/080,454 2011-04-05
US13/080,454 US8695008B2 (en) 2011-04-05 2011-04-05 Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
PCT/US2012/031996 WO2012138655A1 (en) 2011-04-05 2012-04-03 Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device

Publications (2)

Publication Number Publication Date
KR20140002027A KR20140002027A (ko) 2014-01-07
KR101562448B1 true KR101562448B1 (ko) 2015-10-21

Family

ID=46085129

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137029381A KR101562448B1 (ko) 2011-04-05 2012-04-03 휴대용 컴퓨팅 디바이스의 멀티코어 프로세서에서 다수의 코어들로의 전력을 동적으로 제어하는 방법 및 시스템

Country Status (6)

Country Link
US (1) US8695008B2 (ko)
EP (1) EP2695063B1 (ko)
JP (1) JP5734505B2 (ko)
KR (1) KR101562448B1 (ko)
CN (1) CN103502946B (ko)
WO (1) WO2012138655A1 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047067B2 (en) * 2011-04-22 2015-06-02 Qualcomm Incorporated Sensorless detection and management of thermal loading in a multi-processor wireless device
US8452323B2 (en) * 2011-09-22 2013-05-28 Qualcomm Incorporated Method and system for selecting a thermally optimal uplink for a portable computing device
US9378058B2 (en) * 2011-10-17 2016-06-28 Excalibur Ip, Llc Method and system for dynamic control of a multi-tier processing system
US9436512B2 (en) * 2011-12-22 2016-09-06 Board Of Supervisors Of Louisana State University And Agricultural And Mechanical College Energy efficient job scheduling in heterogeneous chip multiprocessors based on dynamic program behavior using prim model
US9569278B2 (en) * 2011-12-22 2017-02-14 Intel Corporation Asymmetric performance multicore architecture with same instruction set architecture
EP2812800A1 (en) * 2012-02-09 2014-12-17 Telefonaktiebolaget LM Ericsson (PUBL) Distributed mechanism for minimizing resource consumption
WO2013140518A1 (ja) * 2012-03-19 2013-09-26 富士通株式会社 スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法
US9195286B2 (en) * 2012-03-26 2015-11-24 Mediatek Inc. Method for performing power consumption control, and associated apparatus
US9213381B2 (en) * 2012-05-24 2015-12-15 Ati Technologies Ulc Voltage regulator dynamically determining whether requested power transition can be supported
US9678564B2 (en) 2012-12-21 2017-06-13 Nxp B.V. Multiprocessor system with interrupt distributor
US20140281592A1 (en) * 2013-03-18 2014-09-18 Advanced Micro Devices, Inc. Global Efficient Application Power Management
US9606842B2 (en) * 2013-05-08 2017-03-28 National Science Foundation Resource and core scaling for improving performance of power-constrained multi-core processors
WO2015099802A1 (en) * 2013-12-28 2015-07-02 Intel Corporation Techniques for increasing energy efficiency of sensor controllers
CN104821924B (zh) * 2014-01-30 2018-11-27 西门子公司 一种网络数据包处理方法、装置和网络处理设备
CN103870340B (zh) * 2014-03-06 2017-11-07 华为技术有限公司 流计算***中的数据处理方法、控制节点及流计算***
US9244747B2 (en) * 2014-03-13 2016-01-26 Qualcomm Incorporated System and method for providing dynamic clock and voltage scaling (DCVS) aware interprocessor communication
US9354943B2 (en) * 2014-03-19 2016-05-31 International Business Machines Corporation Power management for multi-core processing systems
KR102169692B1 (ko) * 2014-07-08 2020-10-26 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법
KR102252643B1 (ko) 2014-10-20 2021-05-17 삼성전자주식회사 시스템 온 칩의 전원 경로 제어기
KR102247888B1 (ko) 2015-01-05 2021-05-04 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 시스템, 선택적 스트리밍 파이프라인 방식에 기반한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
US9940905B2 (en) 2015-02-03 2018-04-10 Qualcomm Incorporated Clock rate adjustment for processing unit
KR102247742B1 (ko) 2015-04-21 2021-05-04 삼성전자주식회사 애플리케이션 프로세서와 시스템 온 칩
US10031574B2 (en) * 2015-05-20 2018-07-24 Mediatek Inc. Apparatus and method for controlling multi-core processor of computing system
US10007619B2 (en) * 2015-05-29 2018-06-26 Qualcomm Incorporated Multi-threaded translation and transaction re-ordering for memory management units
US9760404B2 (en) * 2015-09-01 2017-09-12 Intel Corporation Dynamic tuning of multiprocessor/multicore computing systems
US9740266B2 (en) * 2015-09-04 2017-08-22 Mediatek Inc. Apparatus and method for controlling multi-core of electronic device
US20170147053A1 (en) * 2015-11-23 2017-05-25 Mediatek Inc. Application driven dynamic voltage and frequency scaling method and associated machine readable medium
CN105573467A (zh) * 2015-12-11 2016-05-11 联想(北京)有限公司 一种信息处理方法及电子设备
CN105975049B (zh) * 2016-05-05 2018-08-24 华侨大学 一种任务同步偶发任务低能耗调度方法
WO2018014300A1 (zh) * 2016-07-21 2018-01-25 张升泽 多核芯片的功率实现方法及***
WO2018014298A1 (zh) * 2016-07-21 2018-01-25 张升泽 电子芯片内部电压分配方法及***
CN106155815A (zh) * 2016-07-21 2016-11-23 张升泽 电流在多个内核中的分配方法及***
WO2018014299A1 (zh) * 2016-07-21 2018-01-25 张升泽 电流在多个内核中的分配方法及***
WO2018018372A1 (zh) * 2016-07-25 2018-02-01 张升泽 电子芯片内的电流计算方法及***
WO2018018494A1 (zh) * 2016-07-28 2018-02-01 张升泽 基于多区间分配的功率分配方法及***
EP3367210A1 (en) 2017-02-24 2018-08-29 Thomson Licensing Method for operating a device and corresponding device, system, computer readable program product and computer readable storage medium
EP3376384A1 (en) * 2017-03-13 2018-09-19 Thomson Licensing Method for operating an electronic device, and corresponding system on chip, electronic device, electronic assembly, computer readable program product and computer readable storage medium
US10423215B2 (en) * 2017-05-15 2019-09-24 Cavium, Llc Methods and apparatus for adaptive power profiling in a baseband processing system
US10802831B2 (en) * 2017-06-30 2020-10-13 Sap Se Managing parallel processing
CN108121433B (zh) * 2017-12-06 2021-10-15 中国航空工业集团公司西安航空计算技术研究所 一种gpu多处理器***的任务调度方法
CN112154419A (zh) * 2019-08-19 2020-12-29 深圳市大疆创新科技有限公司 性能监测装置、方法、片上***、可移动平台及相机
US11435806B2 (en) * 2019-12-16 2022-09-06 Advanced Micro Devices, Inc. Automatic voltage reconfiguration
US11593487B2 (en) * 2021-06-14 2023-02-28 Dell Products, L.P. Custom baseboard management controller (BMC) firmware stack monitoring system and method
CN113504989A (zh) * 2021-07-08 2021-10-15 山东科技大学 一种近底多波束正交解调处理的多核并行处理方法
CN116243996B (zh) * 2023-05-12 2023-08-08 苏州浪潮智能科技有限公司 业务的运行切换方法、装置、存储介质及电子装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050034002A1 (en) * 2003-08-04 2005-02-10 Krisztian Flautner Performance control within a multi-processor system
US20060095807A1 (en) * 2004-09-28 2006-05-04 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20100037038A1 (en) * 2008-08-06 2010-02-11 International Business Machines Corporation Dynamic Core Pool Management
US20100174923A1 (en) * 2009-01-07 2010-07-08 International Business Machines Regulating Power Consumption

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050721A (ja) * 2001-08-08 2003-02-21 Fujitsu Ltd 並列効率計算方法及び装置
JP2004054680A (ja) * 2002-07-22 2004-02-19 Fujitsu Ltd 並列効率計算方法
US7062394B2 (en) * 2002-09-20 2006-06-13 Intel Corporation Performance characterization using effective processor frequency
US7770034B2 (en) * 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
US7437580B2 (en) * 2004-05-05 2008-10-14 Qualcomm Incorporated Dynamic voltage scaling system
US20060101464A1 (en) * 2004-11-09 2006-05-11 Dohrmann Stephen H Determining a number of processors to execute a task
JP4555145B2 (ja) * 2005-04-28 2010-09-29 富士通株式会社 バッチスケジューリングプログラム、バッチスケジューリング方法およびバッチスケジューリング装置
US7804943B2 (en) * 2006-07-27 2010-09-28 Alcatel-Lucent Usa Inc. Management for a heterogeneous pool of processors for the assignment of additional load
US7886131B1 (en) * 2006-08-14 2011-02-08 Marvell International Ltd. Multithread processor with thread based throttling
US7865751B2 (en) * 2007-06-18 2011-01-04 Intel Corporation Microarchitecture controller for thin-film thermoelectric cooling
US20090049314A1 (en) * 2007-08-13 2009-02-19 Ali Taha Method and System for Dynamic Voltage and Frequency Scaling (DVFS)
US7921312B1 (en) * 2007-09-14 2011-04-05 National Semiconductor Corporation System and method for providing adaptive voltage scaling with multiple clock domains inside a single voltage domain
US8296773B2 (en) 2008-06-30 2012-10-23 International Business Machines Corporation Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance
US8276009B2 (en) 2008-09-05 2012-09-25 Broadcom Corporation Operating system (OS) virtualisation and processor utilization thresholds for minimizing power consumption in mobile phones
US8261117B2 (en) * 2008-09-11 2012-09-04 International Business Machines Corporation Virtualization in a multi-core processor (MCP)
KR20100035394A (ko) * 2008-09-26 2010-04-05 삼성전자주식회사 멀티 프로세싱에서의 메모리 관리장치 및 그 방법
US8438404B2 (en) * 2008-09-30 2013-05-07 International Business Machines Corporation Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element
US8341638B2 (en) * 2008-09-30 2012-12-25 International Business Machines Corporation Delegated virtualization across physical partitions of a multi-core processor (MCP)
US20100153763A1 (en) 2008-12-11 2010-06-17 Kapil Sood Method and apparatus to modulate multi-core usage for energy efficient platform operations
US8370654B1 (en) * 2009-03-26 2013-02-05 Marvell Israel (M.I.S.L) Ltd. AVS-adaptive voltage scaling
TWI398764B (zh) * 2009-07-21 2013-06-11 Richpower Microelectronics 降低顯示器待機時之功率消耗的裝置及方法,以及低待機功率消耗之顯示器
US9195296B2 (en) * 2009-09-24 2015-11-24 Qualcomm Incorporated Apparatus and methods for optimizing power consumption in a wireless device
CN101706741B (zh) * 2009-12-11 2012-10-24 中国人民解放军国防科学技术大学 一种基于负载平衡的cpu和gpu两级动态任务划分方法
KR101155202B1 (ko) * 2009-12-24 2012-06-13 포항공과대학교 산학협력단 멀티 코어 프로세서의 전력 관리 방법, 멀티 코어 프로세서의 전력 관리 방법이 기록된 기록매체 및 이를 실행하는 멀티 코어 프로세서 시스템
US8381004B2 (en) * 2010-05-26 2013-02-19 International Business Machines Corporation Optimizing energy consumption and application performance in a multi-core multi-threaded processor system
US9098438B2 (en) * 2010-09-30 2015-08-04 Texas Instruments Incorporated Synchronized voltage scaling and device calibration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050034002A1 (en) * 2003-08-04 2005-02-10 Krisztian Flautner Performance control within a multi-processor system
US20060095807A1 (en) * 2004-09-28 2006-05-04 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20100037038A1 (en) * 2008-08-06 2010-02-11 International Business Machines Corporation Dynamic Core Pool Management
US20100174923A1 (en) * 2009-01-07 2010-07-08 International Business Machines Regulating Power Consumption

Also Published As

Publication number Publication date
JP2014510357A (ja) 2014-04-24
EP2695063A1 (en) 2014-02-12
CN103502946A (zh) 2014-01-08
US8695008B2 (en) 2014-04-08
US20120260258A1 (en) 2012-10-11
JP5734505B2 (ja) 2015-06-17
CN103502946B (zh) 2017-02-15
WO2012138655A1 (en) 2012-10-11
KR20140002027A (ko) 2014-01-07
EP2695063B1 (en) 2015-10-14

Similar Documents

Publication Publication Date Title
KR101562448B1 (ko) 휴대용 컴퓨팅 디바이스의 멀티코어 프로세서에서 다수의 코어들로의 전력을 동적으로 제어하는 방법 및 시스템
US9081558B2 (en) System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on tempature
EP2513746B1 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
JP5893568B2 (ja) 推定される作業負荷並列性に基づき中央処理装置電力を制御するためのシステムおよび方法
JP5601731B2 (ja) プロセッサを動的に制御するシステムおよび方法
US9176572B2 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
US9104411B2 (en) System and method for controlling central processing unit power with guaranteed transient deadlines
US8601298B2 (en) System and method for determining optimal operating parameters for conserving power in a portable device from a hypersurface which represents optimal values of the operating parameters under various synthetic workloads
US8689037B2 (en) System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
CN105824393B (zh) 片上***、管理其功率的方法和电子装置
KR101516859B1 (ko) 보장된 정상 상태 데드라인을 가진 중앙 처리 장치 전력을 제어하는 시스템 및 방법
JP5982588B2 (ja) 保証された過渡期限とともに中央処理装置の電力を制御するためのシステムおよび方法
US9128705B2 (en) System and method for controlling central processing unit power with reduced frequency oscillations
RU2643516C2 (ru) Способ и устройство для управления потребляемой мощностью
KR101448974B1 (ko) 한 세트의 성능 스케일링 알고리즘들의 구성을 최적화하기 위한 시스템들 및 방법들
KR101499303B1 (ko) 중앙 처리 유닛 내의 데이터를 샘플링하는 시스템 및 방법
KR20130096743A (ko) 모바일 디바이스 상의 작업부하 예측기의 효과성을 측정하기 위한 시스템, 장치 및 방법
JP5930504B2 (ja) 保証された過渡期限とともに中央処理装置の電力を制御するためのシステムおよび方法

Legal Events

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

Payment date: 20180928

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 5