KR101659705B1 - 보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법 - Google Patents
보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR101659705B1 KR101659705B1 KR1020157022977A KR20157022977A KR101659705B1 KR 101659705 B1 KR101659705 B1 KR 101659705B1 KR 1020157022977 A KR1020157022977 A KR 1020157022977A KR 20157022977 A KR20157022977 A KR 20157022977A KR 101659705 B1 KR101659705 B1 KR 101659705B1
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- frequency
- value
- performance
- workload
- Prior art date
Links
Images
Classifications
-
- 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- 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
-
- Y02B60/1217—
-
- Y02B60/1285—
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
Abstract
프로세서들 중 하나가 그 사전 컴퓨팅된 정상 상태 워크로드를 완료하는데 필요한 미리 결정된 시간량보다 큰 결합 주기 동안 그 프로세서들이 (예를 들어, 과도 워크로드들로 인해) 계속 비지 상태에 있지 않음을 보장하기 위해 프로세서들의 그룹에 대한 성능 보장들을 컴퓨팅 및 시행하도록 구성된 동적 클록 및 전압 스케일링 (DCVS) 솔루션을 포함하는 방법들, 시스템들 및 디바이스들. DCVS 는, 멀티프로세서 시스템이, 프로세서들의 동작 주파수 또는 전압과 관계없이, 많아야 미리 정의된 최대 워크량만큼 그 정상 상태 워크로드에 뒤쳐질 뿐임을 보장하기 위해 가변 지연에 기초하여 프로세서들 중 하나 이상의 프로세서들의 주파수 및/또는 전압을 조정할 수도 있다.
Description
관련 출원들
본 출원은, 모두가 완전히 참조에 의해 통합되는, 2009년 12월 16일자로 출원된 발명의 명칭이 "System and Method of Dynamically Controlling Power in a Central Processing Unit" 인 미국 가출원 제61/286,991호에 대한 우선권의 이익을 주장하는, 2010년 11월 11일자로 출원된 발명의 명칭이 "System and Method for Controlling Central Processing Unit Power with Guaranteed Transient Deadlines" 인 미국 특허출원 제12/944,467호의 부분계속출원인 2012년 11월 5일자로 출원된 발명의 명칭이 "System and Method for Controlling Central Processing Unit Power with Guaranteed Transient Deadlines" 인 미국 특허출원 제13/669,043호의 부분계속출원이다.
상호 참조 출원들
본 출원은 Rychlik 등에 의한 발명의 명칭이 "System And Method For Controlling Central Processing Unit Power Based On Inferred Workload Parallelism" 인 미국 특허출원 제12/944,140호; Rychlik 등에 의한 발명의 명칭이 "System and Method for Controlling Central Processing Unit Power in a Virtualized System" 인 미국 특허출원 제12/944,202호; Rychlik 등에 의한 발명의 명칭이 "System and Method for Asynchronously and Independently Controlling Core Clocks in a Multicore Central Processing Unit" 인 미국 특허출원 제12/944,321호; Thomson 등에 의한 발명의 명칭이 "System and Method for Controlling Central Processing Unit Power with Reduced Frequency Oscillations" 인 미국 특허출원 제12/944,378호; Thomson 등에 의한 발명의 명칭이 "System and Method for Controlling Central Processing Unit Power With Guaranteed Steady State Deadlines" 인 미국 특허출원 제12/944,561호; 및 Sur 등에 의한 발명의 명칭이 "System and Method for Dynamically Controlling a Plurality of Cores in a Multicore Central Processing Unit based on Temperature" 인 미국 특허출원 제12/944,564호에 관련되고, 이들을 참조에 의해 통합한다.
관련 기술의 설명
휴대용 컴퓨팅 디바이스들 (PCD들) 은 유비쿼터스적이다. 이들 디바이스들은 셀룰러 전화기들, 휴대용 정보 단말기들 (PDA들), 휴대용 게임 콘솔들, 팜톱 컴퓨터들, 및 다른 휴대용 전자 디바이스들을 포함할 수도 있다. 이들 디바이스들의 주기능에 더하여, 주변 기능들을 많이 포함한다. 예를 들어, 셀룰러 전화기는 셀룰러 전화 통화를 하는 주기능과, 스틸 카메라, 비디오 카메라, 글로벌 포지셔닝 시스템 (GPS) 내비게이션, 웹 브라우징, 이메일들의 전송 및 수신, 텍스트 메시지들의 전송 및 수신, 푸시-투-토크 기능들 등의 주변 기능들을 포함할 수도 있다. 이러한 디바이스의 기능성이 증가함에 따라, 이러한 기능성을 지원하는데 필요한 컴퓨팅 또는 프로세싱 전력이 또한 증가한다. 게다가, 컴퓨팅 전력이 증가함에 따라, 컴퓨팅 전력을 제공하는 프로세서 또는 프로세서들을 효과적으로 관리하기 위한 더 큰 필요성이 존재한다.
이에 따라, 멀티코어 CPU 내의 전력을 제어하는 향상된 방법이 필요하다.
본 명세서에 통합되고 본 명세서의 일부를 구성하는 첨부한 도면들은, 본 발명의 예시적인 양태들을 예시하며, 상기 주어진 일반적인 설명 및 이하에 주어진 상세한 설명과 함께, 본 발명의 특징들을 설명하도록 기능하다.
도 1 은 클로즈드 포지션의 제 1 양태의 휴대용 컴퓨팅 디바이스 (PCD) 의 정면 평면도이다.
도 2 는 오픈 포지션의 제 1 양태의 PCD 의 정면 평면도이다.
도 3 은 제 2 양태의 PCD 의 블록 다이어그램이다.
도 4 는 프로세싱 시스템의 블록 다이어그램이다.
도 5 는 CPU 내의 전력을 동적으로 제어하는 제 1 양태의 방법을 예시하는 플로우차트이다.
도 6 은 CPU 내의 전력을 동적으로 제어하는 제 2 양태의 방법의 1 부분을 예시하는 플로우차트이다.
도 7 은 멀티코어 CPU 내의 전력을 동적으로 제어하는 제 2 양태의 방법의 제 2 부분을 예시하는 플로우차트이다.
도 8 은 시간에 대해 플롯된 동적 클록 및 전압 스케일링 (dynamic clock and voltage scaling; DCVS) 제어된 CPU 주파수를 도시하는 예시적인 그래프이다.
도 9 는 다양한 성능 레벨들에 대한 유효 과도 응답 시간들을 도시하는 예시적인 그래프이다.
도 10 은 다양한 양태들에 따라 성능 보장들을 시행하는 동적 클록 주파수/전압 스케일링 (DCVS) 솔루션을 구현하는 컴퓨팅 디바이스에서의 논리적 컴포넌트들 및 정보 플로우들을 예시하는 블록 다이어그램이다.
도 11a 및 도 11b 는 성능 보장을 생성하는 일 양태의 방법을 예시하는 프로세스 플로우 다이어그램들이다.
도 12 및 도 13 은 프로세싱 코어가 그 사전 컴퓨팅된, 예측된, 및또는 실제 정상 상태 워크로드를 완료하는데 필요한 미리 결정된 시간량보다 더 많은 시간 동안 그 프로세싱 코어가 계속 비지 상태에 있지 않음을 보장하기 위한 성능 보장을 시행하는 다양한 양태의 방법들을 예시하는 프로세스 플로우 다이어그램들이다.
도 14 는 일 양태에서의 이용에 적합한 모바일 디바이스의 컴포넌트 블록 다이어그램이다.
도 15 는 일 양태에서의 이용에 적합한 서버 디바이스의 컴포넌트 블록 다이어그램이다.
도 16 은 일 양태에서의 이용에 적합한 랩톱 컴퓨터 디바이스의 컴포넌트 블록 다이어그램이다.
도 17 은 멀티코어 시스템에서 실행되는 스레드 또는 워크로드에 대한 코어 마다의 성능 보장들을 설정하는 일 예의 DCVS 솔루션의 예시이다.
도 18 은 멀티코어 시스템에서 실행되는 스레드 또는 워크로드에 대한 그룹 기반 성능 보증들을 설정하는 일 예의 DCVS 솔루션의 예시이다.
도 19 는 사전 컴퓨팅된, 예측된, 및/또는 실제 정상 상태 워크로드를 완료하는데 필요한 것보다 더 많은 시간 동안 멀티프로세서 시스템 내의 프로세서들이 계속 비지 상태에 있지 않음을 보장하기 위한 성능 보장을 시행하는 일 양태의 방법을 예시하는 프로세스 플로우 다이어그램이다.
도 1 은 클로즈드 포지션의 제 1 양태의 휴대용 컴퓨팅 디바이스 (PCD) 의 정면 평면도이다.
도 2 는 오픈 포지션의 제 1 양태의 PCD 의 정면 평면도이다.
도 3 은 제 2 양태의 PCD 의 블록 다이어그램이다.
도 4 는 프로세싱 시스템의 블록 다이어그램이다.
도 5 는 CPU 내의 전력을 동적으로 제어하는 제 1 양태의 방법을 예시하는 플로우차트이다.
도 6 은 CPU 내의 전력을 동적으로 제어하는 제 2 양태의 방법의 1 부분을 예시하는 플로우차트이다.
도 7 은 멀티코어 CPU 내의 전력을 동적으로 제어하는 제 2 양태의 방법의 제 2 부분을 예시하는 플로우차트이다.
도 8 은 시간에 대해 플롯된 동적 클록 및 전압 스케일링 (dynamic clock and voltage scaling; DCVS) 제어된 CPU 주파수를 도시하는 예시적인 그래프이다.
도 9 는 다양한 성능 레벨들에 대한 유효 과도 응답 시간들을 도시하는 예시적인 그래프이다.
도 10 은 다양한 양태들에 따라 성능 보장들을 시행하는 동적 클록 주파수/전압 스케일링 (DCVS) 솔루션을 구현하는 컴퓨팅 디바이스에서의 논리적 컴포넌트들 및 정보 플로우들을 예시하는 블록 다이어그램이다.
도 11a 및 도 11b 는 성능 보장을 생성하는 일 양태의 방법을 예시하는 프로세스 플로우 다이어그램들이다.
도 12 및 도 13 은 프로세싱 코어가 그 사전 컴퓨팅된, 예측된, 및또는 실제 정상 상태 워크로드를 완료하는데 필요한 미리 결정된 시간량보다 더 많은 시간 동안 그 프로세싱 코어가 계속 비지 상태에 있지 않음을 보장하기 위한 성능 보장을 시행하는 다양한 양태의 방법들을 예시하는 프로세스 플로우 다이어그램들이다.
도 14 는 일 양태에서의 이용에 적합한 모바일 디바이스의 컴포넌트 블록 다이어그램이다.
도 15 는 일 양태에서의 이용에 적합한 서버 디바이스의 컴포넌트 블록 다이어그램이다.
도 16 은 일 양태에서의 이용에 적합한 랩톱 컴퓨터 디바이스의 컴포넌트 블록 다이어그램이다.
도 17 은 멀티코어 시스템에서 실행되는 스레드 또는 워크로드에 대한 코어 마다의 성능 보장들을 설정하는 일 예의 DCVS 솔루션의 예시이다.
도 18 은 멀티코어 시스템에서 실행되는 스레드 또는 워크로드에 대한 그룹 기반 성능 보증들을 설정하는 일 예의 DCVS 솔루션의 예시이다.
도 19 는 사전 컴퓨팅된, 예측된, 및/또는 실제 정상 상태 워크로드를 완료하는데 필요한 것보다 더 많은 시간 동안 멀티프로세서 시스템 내의 프로세서들이 계속 비지 상태에 있지 않음을 보장하기 위한 성능 보장을 시행하는 일 양태의 방법을 예시하는 프로세스 플로우 다이어그램이다.
다양한 양태들은 첨부한 도면들을 참조하여 상세히 설명될 것이다. 어디든 가능하다면, 동일한 참조 번호들이 도면들 전반에 걸쳐 동일하거나 유사한 부분들을 나타내는데 이용될 것이다. 특정 예들 및 구현들에 대해 행해진 참조들은 예시적인 목적들을 위한 것이며, 본 발명 또는 청구항들의 범위를 제한하도록 의도되지 않는다.
단어 "예시적인" 은 본 명세서에서 "일 예, 경우, 또는 예시로서 기능하는 것" 을 의미하는데 사용된다. 본 명세서에 "예시적인" 으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 선호되거나 바람직한 것으로 해석될 필요는 없다.
본 설명에서, 용어 "애플리케이션" 은 또한 : 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같이, 실행가능한 콘텐츠를 갖는 파일들을 포함할 수도 있다. 또한, 본 명세서에 지칭된 "애플리케이션" 은 또한, 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 사실상 실행가능하지 않은 파일들을 포함할 수도 있다.
용어 "콘텐츠" 는 또한 : 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같이, 실행가능한 콘텐츠를 갖는 파일들을 포함할 수도 있다. 또한, 본 명세서에 지칭된 "콘텐츠" 는 또한, 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같이, 사실상 실행가능하지 않은 파일들을 포함할 수도 있다.
본 설명에서 사용한 바와 같이, 용어들 "컴포넌트", "데이터베이스", "모듈", "시스템" 등은 컴퓨터 관련 엔티티, 어느 하나의 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어를 나타내도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행중인 프로세스, 프로세서, 오브젝트, 실행가능물, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이들에 제한되지 않는다. 예시에 의해, 컴퓨팅 디바이스 상에서 실행중인 애플리케이션과 컴퓨팅 디바이스 양자는 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수도 있고, 컴포넌트는 하나의 컴퓨터 상에 국부배치되고 및/또는 2 개 이상의 컴퓨터들 사이에 분산배치될 수도 있다. 또한, 이들 컴포넌트들은 다양한 데이터 구조들을 저장한 다양한 컴퓨터 판독가능 매체들로부터 실행할 수도 있다. 컴포넌트들은 이를 테면 하나 이상의 데이터 패킷들을 갖는 신호에 따라 (예를 들어, 로컬 시스템, 분산 시스템 내의 다른 컴포넌트와 상호작용하고, 및/또는 그 신호에 의해 다른 시스템들과 인터넷과 같은 네트워크를 통해 상호작용하는 하나의 컴포넌트로부터의 데이터) 에 따라 로컬 및/또는 원격 프로세스들에 의해 통신할 수도 있다.
처음에 도 1 및 도 2 를 참조하면, 일 예시적인 휴대용 컴퓨팅 디바이스 (PCD) 가 도시되며 일반적으로 100 으로 지정된다. 도시한 바와 같이, PCD (100) 는 하우징 (102) 을 포함할 수도 있다. 하우징 (102) 은 상부 하우징부 (104) 및 하부 하우징부 (106) 를 포함할 수도 있다. 도 1 은 상부 하우징부 (104) 가 디스플레이 (108) 를 포함할 수도 있다는 것을 도시한다. 특정 양태에서, 디스플레이 (108) 는 터치 스크린 디스플레이일 수도 있다. 상부 하우징부 (104) 는 또한, 트랙볼 입력 디바이스 (110) 를 포함할 수도 있다. 게다가, 도 1 에 도시한 바와 같이, 상부 하우징부 (104) 는 파워 온 버튼 (112) 및 파워 오프 버튼 (114) 을 포함할 수도 있다. 도 1 에 도시한 바와 같이, PCD (100) 의 상부 하우징부 (104) 는 복수의 표시등들 (116) 및 스피커 (118) 를 포함할 수도 있다. 각각의 표시등 (116) 은 발광 다이오드 (LED) 일 수도 있다.
특정 양태에서, 도 2 에 묘사한 바와 같이, 상부 하우징부 (104) 는 하부 하우징부 (106) 에 대하여 이동가능하다. 구체적으로, 상부 하우징부 (104) 는 하부 하우징부 (106) 에 대하여 슬라이드가능할 수도 있다. 도 2 에 도시한 바와 같이, 하부 하우징부 (106) 는 멀티-버튼 키보드 (120) 를 포함할 수도 있다. 특정 양태에서, 멀티-버튼 키보드 (120) 는 표준 QWERTY 키보드일 수도 있다. 멀티-버튼 키보드 (120) 는, 상부 하우징부 (104) 가 하부 하우징부 (106) 에 대하여 이동될 때 보여질 수도 있다. 도 2 는 또한, PCD (100) 가 하부 하우징부 (106) 상에 리셋 (Reset) 버튼 (122) 을 포함할 수도 있다는 것을 예시한다.
도 3 을 참조하면, 제한이 아닌 일 예시적인 양태의 휴대용 컴퓨팅 디바이스 (PCD) 가 도시되며 일반적으로 320 으로 지정된다. 도시한 바와 같이, PCD (320) 는 멀티코어 CPU (324) 를 포함하는 온-칩 시스템 (322) 을 포함한다. 멀티코어 CPU (324) 는 제 0 코어 (325), 제 1 코어 (326), 및 제 N 코어 (327) 를 포함할 수도 있다.
도 3 에 예시한 바와 같이, 디스플레이 제어기 (328) 및 터치스크린 제어기 (330) 는 멀티코어 CPU (324) 에 커플링된다. 차례로, 디스플레이 제어기 (328) 및 터치스크린 제어기 (330) 에는 온-칩 시스템 (322) 의 외부에 있는 디스플레이/터치스크린 (332) 이 커플링된다.
도 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) 및 가입자 식별 모듈 (subscriber identity module; SIM) 카드 (346) 가 또한 멀티코어 CPU (324) 에 커플링될 수도 있다. 게다가, 도 3 에 도시한 바와 같이, 디지털 카메라 (348) 가 멀티코어 CPU (324) 에 커플링될 수도 있다. 일 예시적인 양태에서, 디지털 카메라 (348) 는 전하 결합 디바이스 (charge-coupled device; CCD) 카메라 또는 상보적 금속 산화물 반도체 (complementary metal-oxide semiconductor; CMOS) 카메라이다.
도 3 에 추가 예시한 바와 같이, 스테레오 오디오 CODEC (350) 이 멀티코어 CPU (324) 에 커플링될 수도 있다. 더욱이, 오디오 증폭기 (352) 가 스테레오 오디오 CODEC (350) 에 커플링될 수도 있다. 일 예시적인 양태에서, 제 1 스테레오 스피커 (354) 및 제 2 스테레오 스피커 (356) 가 오디오 증폭기 (352) 에 커플링된다. 도 3 은 마이크로폰 증폭기 (358) 가 또한 스테레오 오디오 CODEC (350) 에 커플링될 수도 있다는 것을 도시한다. 추가적으로, 마이크로폰 (360) 은 마이크로폰 증폭기 (358) 에 커플링될 수도 있다. 특정 양태에서, 주파수 변조 (FM) 라디오 튜너 (362) 가 스테레오 오디오 CODEC (350) 에 커플링될 수도 있다. 또한, FM 안테나 (364) 가 FM 라디오 튜너 (362) 에 커플링된다. 게다가, 스테레오 헤드폰들 (366) 이 스테레오 오디오 CODEC (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 변압기 (transformer) 로부터 유도되는 재충전가능한 DC 배터리 또는 DC 전력 공급기이다.
도 3 은 또한, PCD (320) 가 데이터 네트워크, 예를 들어, 로컬 영역 네트워크, 개인 영역 네트워크, 또는 임의의 다른 네트워크에 액세스하는데 이용될 수도 있는 네트워크 카드 (388) 를 또한 포함할 수도 있다는 것을 나타낸다. 네트워크 카드 (388) 는 블루투스 네트워크 카드, WiFi 네트워크 카드, 개인 영역 네트워크 (PAN) 카드, 개인 영역 네트워크 초저전력 기술 (personal area network ultra-low-power technology; 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 코어 상에서 실행되는 제 0 동적 클록 및 전압 스케일링 (DCVS) 알고리즘 (416) 을 포함할 수도 있다. 제 1 코어 (412) 는 그 제 1 코어 상에서 실행되는 제 1 DCVS 알고리즘 (417) 을 포함할 수도 있다. 게다가, 제 N 코어 (414) 는 그 제 N 코어 상에서 실행되는 제 N DCVS 알고리즘 (418) 을 포함할 수도 있다. 특정 양태에서, 각각의 DCVS 알고리즘 (416, 417, 418) 은 각각의 코어 (410, 412, 414) 상에서 독립적으로 실행될 수도 있다.
더욱이, 예시한 바와 같이, 메모리 (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) 에서 프로세싱되도록 오퍼레이팅 시스템 (420) 에 하나 이상의 태스크들 (436) 을 전송할 수도 있다. 그 태스크들 (436) 은 단일 태스크들, 스레드들, 또는 이들의 조합으로서 프로세싱, 또는 실행될 수도 있다. 게다가, 스케줄러 (422) 는 멀티코어 CPU (402) 내의 실행을 위해 태스크들, 스레드들, 또는 이들의 조합을 스케줄링할 수도 있다. 추가적으로, 스케줄러 (422) 는 실행 큐들 (424, 426, 428) 에 태스크들, 스레드들, 또는 이들의 조합을 배치할 수도 있다. 코어들 (410, 412, 414) 은 태스크들, 스레드들, 또는 이들의 조합을, 코어들 (410, 412, 414) 에서의 그 태스크 및 스레드들의 프로세싱, 또는 실행을 위해 예를 들어, 오퍼레이팅 시스템 (420) 이 명령한 대로 실행 큐들 (424, 426, 428) 로부터 취출할 수도 있다.
도 4 는 또한, 메모리 (404) 가 그 메모리 상에 저장된 병렬성 모니터 (parallelism monitor) (440) 를 포함할 수도 있다는 것을 도시한다. 병렬성 모니터 (440) 는 오퍼레이팅 시스템 (420) 및 멀티코어 CPU (402) 에 접속될 수도 있다. 구체적으로, 병렬성 모니터 (440) 는 오퍼레이팅 시스템 (420) 내의 스케줄러 (422) 에 접속될 수도 있다.
도 5 를 참조하면, 중앙 프로세싱 유닛의 전력을 동적으로 제어하는 제 1 양태의 방법이 도시되며 일반적으로 500 으로 지정된다. 방법 (500) 은 블록 502 에서 실행 루프 (do loop) 로 시작할 수도 있으며, 여기서 디바이스가 파워 온될 때, 다음의 단계들이 수행될 수도 있다.
블록 504 에서, 전력 제어기, 예를 들어, 동적 클록 및 전압 스케일링 (DCVS) 알고리즘은 하나 이상의 CPU들을 모니터링할 수도 있다. 판정 506 에서, 전력 제어기는 CPU 에 대한 과도 성능 데드라인 (transient performance deadline) 이 만료했는지 여부를 결정할 수도 있다. 만약 과도 성능 데드라인이 만료하지 않았다면, 방법 (500) 은 종료할 수도 있다. 그렇지 않고, 과도 성능 데드라인이 만료했다면, 방법 (500) 은 블록 508 로 진행할 수도 있고, 전력 제어기는 CPU 를 더 높은 성능 레벨, 즉 다음의 더 높은 동작 주파수로 이동시킬 수도 있다. 하나의 양태에서, 제어기는 CPU 를 최대 성능 레벨, 즉 최대 CPU 주파수로 이동시킬 수도 있다. 그러나, 다른 양태에서, CPU 는 최대 성능 레벨로 점프하지 않을 수도 있다. CPU 는 중간 레벨로 점프하고, 그리고 나서, 다시 최대 레벨이나 다른 더 높은 성능 레벨 중 어느 하나로 점프할 수도 있다. 중간 점프들의 수, 및 점프들 간의 시간량이 점프의 주파수 값을 결정하는데 이용될 수도 있다.
블록 510 에서, CPU 는 아이들 컨디션에 들어갈 수도 있다. 게다가, 블록 512 에서, 과도 성능 데드라인은 재설정될 수도 있다. 블록 514 에서, CPU 는 아이들 컨디션에서 빠져나올 수도 있다. 판정 516 으로 이동하여, 전력 제어기는 업커밍 CPU 주파수가 최대 CPU 주파수에 있는지 여부를 결정할 수도 있다. 만약 그렇다면, 방법 (500) 은 종료할 수도 있다. 그렇지 않고, CPU 주파수가 최대 CPU 주파수에 있지 않다면, 방법은 블록 518 로 진행할 수도 있고, 타이머가 재스케줄링될 수도 있다. 그리고 나서, 방법 (500) 은 종료할 수도 있다.
도 6 을 참조하면, 중앙 프로세싱 유닛의 전력을 동적으로 제어하는 제 2 양태의 방법이 도시되며 일반적으로 600 으로 지정된다. 블록 602 에서 시작하여, 중앙 프로세싱 유닛 (CPU) 은 아이들 상태에 들어갈 수도 있다. 블록 604 에서, 전력 제어기, 예를 들어, 동적 클록 및 전압 스케일링 (DCVS) 알고리즘은 아이들 시작 시간 (start idle time; StartIdleTime) 을 현재 시간 (CurrentTime) 과 동일하게 설정할 수도 있다. 게다가, 블록 606 에서, 전력 제어기는 아이들 종료 시간 (end idle time; EndIdleTime) 에서 아이들 시작 시간 (StartIdleTime) 을 뺌으로써 비지 시간 (BusyTime) 을 결정할 수도 있다.
블록 608 에서, CPU 는 SWFI (software wait for interrupt) 컨디션에 들어갈 수도 있다. 블록 610 에서, CPU 는 SWFI 컨디션에서 빠져나올 수도 있다. 블록 612 로 이동하여, 전력 제어기는 아이들 종료 시간 (EndIdleTime) 을 현재 시간 (CurrentTime) 과 동일하게 설정할 수도 있다. 게다가, 블록 614 에서, 전력 제어기는 아이들 종료 시간 (EndIdleTime) 에서 아이들 시작 시간 (StartIdleTime) 을 뺌으로써 아이들 시간 (IdleTime) 을 결정할 수도 있다. 블록 616 에서, 전력 제어기는 비지 시간 (BusyTime), 아이들 시간 (IdleTime) 및 업데이트된 정상 상태 필터 (UpdateSteadyStateFilter) 로부터 업커밍 CPU 주파수 (CPUFreq) 를 결정할 수도 있다. 그 후, 방법 (600) 은 도 7 의 블록 702 로 계속될 수도 있다.
블록 702 에서, 전력 제어기는 다음의 공식을 이용하여 유효 과도 버짓 (EffectiveTransientBudget) 을 결정할 수도 있으며 :
여기서,
TransientResponseDeadline = 과도 응답 데드라인, 즉 슬랙 버짓 (slack budget),
NextCPUFreq = 업커밍 CPU 주파수보다 하나의 주파수 스텝 더 높은 다음의 CPU 주파수, 및
CPUFreq = 업커밍 CPU 주파수 (CPUFreq).
특정 양태에서, 클록 스케줄링 오버헤드 (ClockSchedulingOverhead) 및 클록 스위치 오버헤드 (ClockSwitchOverhead) 가 또한 EffectiveTransientBudget 에 부가될 수도 있다. 게다가, 전압 변화 오버헤드 (VoltageChangeOverhead) 가 EffectiveTransientBudget 에 부가될 수도 있다. 블록 704 로 이동하여, 전력 제어기는 더 높은 주파수로 점프하기 위한 데드라인 (SetJumpToFrequency) 을 아이들 종료 시간 (EndIdleTime) 더하기 유효 과도 버짓 (EffectiveTransientBudget) 과 동일하게 설정할 수도 있다. 다른 양태에서, 점프하기 위한 데드라인은 현재 시간 더하기 과도 버짓일 수도 있다. 그 후, 방법 (600) 은 종료할 수도 있다.
특정 양태에서, 도 6 및 도 7 과 함께 설명된 방법 (600) 은 CPU 가 과도 데드라인이 소진 (exhaust) 되기 전에 계속 DCVS 에 의해 결정된 주파수에 있을 수도 있는 시간량을 계산하고 추후에 그 시간량만큼 더 높은 CPU 주파수로의 점프를 스케줄링하는데 이용될 수도 있다. 더 높은 주파수로의 점프 이전에 아이들에 다시 들어가게 되면, 스케줄링된 점프는 취소될 수도 있다. 방법 (600) 은 EffectiveTransientBudget 으로서 결정된 시간량만큼 더 높은 주파수로의 점프를 지연시킬 수도 있다.
본 명세서에 설명된 방법 단계들은 반드시 설명한 바와 같은 순서로 수행될 필요가 있는 것은 아니라는 것이 이해될 것이다. 게다가, "그 후 (thereafter)", "그리고 나서 (then)", "다음에 (next)" 등과 같은 단어들은 단계들의 순서를 제한하도록 의도되지 않는다. 이들 단어들은 단순히 방법 단계들의 설명을 통하여 독자를 안내하는데 이용된다. 더욱이, 본 명세서에 설명된 방법들은 휴대용 컴퓨팅 디바이스 (PCD) 상에서 실행가능한 것으로서 설명된다. PCD 는 모바일 전화 디바이스, 휴대용 정보 단말기 디바이스, 스마트북 컴퓨팅 디바이스, 넷북 컴퓨팅 디바이스, 랩톱 컴퓨팅 디바이스, 데스크톱 컴퓨팅 디바이스, 또는 이들의 조합일 수도 있다.
특정 양태에서, DCVS 알고리즘은 만족스러운 시스템 성능을 여전히 제공하면서 전력 소비를 감소시키기 위한 노력으로 워크로드를 추적하기 위해 CPU 로드/아이들 시간을 측정하고 CPU 클록 주파수를 동적으로 조정하는 메커니즘이다. 워크로드가 변화할 때, CPU 스루풋의 변화가 워크로드의 변화들을 추적할 수도 있지만, 또한 부득이 그 워크로드의 변화들을 래깅 (lagging) 할 수도 있다. 유감스럽게도, 이것은 DCVS 알고리즘이 워크로드를 충분히 신속히 추적하지 못할 수도 있기 때문에, 워크로드가 서비스 품질 (QoS) 요건들을 갖는 경우들에서 문제를 도입할 수도 있다. 게다가, 태스크들이 실패할 수도 있다.
많은 DCVS 기법들은 CPU 의 정상 상태 성능 요건들을 측정하는 것 및 CPU 주파수 및 전압을 정상 상태 CPU 사용량 (usage) 을 충족할 수도 있는 가장 낮은 레벨로 설정하는 것을 수반한다. 이것은 통상적으로 소정 시간 주기에 걸쳐 CPU 사용률 (utilization) (비지 비율) 을 측정하는 것 및 CPU 성능 레벨을 평균 CPU 사용률이 높은 임계값과 낮은 임계값 사이에 놓이는 레벨로 설정하는 것에 의해 행해진다. 평균화 주기는 합당한 응답성을 유지하면서 클록 주파수들을 변화시키는 빈도를 최소화하기 위해 최적화된다. 과도 워크로드들 및/또는 새로운 워드로드들의 시작에 응답하기 위하여, 패닉 입력 (panic input) 들이 CPU 주파수를 신속히 끌어올리는데 활용되었을 수도 있다.
워크로드를 래깅하고 태스크들의 실패를 야기하는 DCVS 의 문제를 회피하기 위하여, 본 명세서에 개시된 시스템 및 방법들은 과도 성능 보장을 제공한다. 과도 성능 보장은 더 높은 성능 레벨에서 실행되는 것과 비교하여, 연속적 비지 펄스가 지연될 수도 있는 최대 시간량으로서 정의될 수도 있다. 이것은, 과도 성능 데드라인 만료 전에 더 높은 성능 레벨에 이르고 CPU 가 아이들이라면, 정의에 의해 오버서브스크라이브드 (oversubscribed) 상태에 있지 않기 때문에, 아이들에 들어갈 때마다 데드라인을 재설정함으로써 달성될 수도 있다. 본 명세서에 개시한 바와 같이, 타이머는 시스템이 아이들에서 나오고 시스템 CPU 가 최대 주파수에서 실행중이지 않을 때마다 QoS 보장을 보존하기 위해 재스케줄링될 수도 있다.
과도 성능 보장의 전력 영향을 최소화하기 위하여, 본 시스템 및 방법들은 인커밍 펄스가 데드라인을 충족하기 위하여 주파수 증가를 요구할 수도 있을 가능성을 최소화한다. 이것은 유효 과도 버짓이 소진될 때까지 주파수, 즉 성능 레벨 변화를 지연시키고 그리고 나서, 더 높은 성능 레벨로 바로 점프하여 도 8 에 도시한 바와 같이 펄스가 완료될 때까지 그 성능 레벨에 머무르게 함으로써 달성될 수도 있다.
특정 양태에서, 유효 과도 버짓은 현재 성능 레벨로 스케일링된 과도 응답 데드라인으로서 계산된다. 예를 들어, CPU 가 최대 클록 레이트의 75% 를 실행중이고 과도 응답 데드라인이 16ms 라면, 유효 과도 버짓은 64ms, 즉 16ms/(1-0.75) 이다. 유효 과도 버짓은 CPU 가 버짓을 소진하기 전에 현재 성능 레벨에서 얼마나 오랫동안 실행할 수도 있는지를 나타낸다. CPU 가 아이들이라면, 유효 과도 버짓은 과도 응답 데드라인과 동일할 수도 있다. 최대 성능 레벨에 있다면, 유효 과도 버짓은 도 9 에 도시한 바와 같이 무한대이다.
본 명세서에 설명된 방법들을 이용하여, 시스템은 태스크가 최대 레벨이 아닌 다른 일부 레벨에서 실행될 수도 있는 최대 시간량에 대한 엄격한 한계를 제공할 수도 있고, 따라서 동적 CPU 클록 스케일링을 여전히 허용하면서 QoS 보장들을 요구하는 태스크들의 완료에 대한 계산가능한 한계를 내재적으로 제공할 수도 있다. 그 한계는, 어떤 태스크들이 현재 실행중인지, 글로벌 시스템 속성, DCVS 알고리즘 설계 또는 다른 속성들에 기초하여 설정될 수도 있고, 시스템이 QoS 요건들을 갖는 어떤 태스크들도 실행중이지 않다면 또는 CPU 가 최대 클록에서 실행중이라면 완전히 디스에이블될 수도 있다.
특정 양태에서, 본 방법들은 데드라인이 만료했을 때 최대 주파수로 점프하는 대신에, 최대 QoS 지연이 소진되기 전에 CPU 가 최대 주파수에 있는 것을 여전히 보장하면서, 더 짧은 내부의 유효 데드라인들을 설정하는 것 및 하나, 또는 그 이상의 중간 주파수들로 점프하는 것에 의해 확장될 수도 있다. 게다가, 본 방법들은 잘 정의된 과도 QoS 가 유지된다는 것을 실질적으로 보장하는 동시에 전체 CPU 전력을 감소시킬 수도 있다.
본 명세서에 설명된 시스템 및 방법들은 기회적 샘플링 (opportunistic sampling) 을 활용할 수도 있다. 즉, 시스템 및 방법들은 주기적으로 타이머 만료에 대해 체크할 수도 있다. 다른 양태들에서, 시스템 및 방법들은 기회적 샘플링을 활용하지 않을 수도 있다.
상기 논의한 바와 같이, 다양한 양태들은 태스크들의 완료를 위해 엄격하고 계산가능한 한계 (예를 들어, 성능 보장) 를 제공한다. 다양한 양태들에서, 이러한 성능 보장들은 모바일 디바이스들, 이를 테면 셀룰러 전화기들, 스마트폰들, 개인용 또는 모바일 멀티미디어 플레이어들, 휴대 정보 단말기들 (PDA들), 랩톱 컴퓨터들, 태블릿 컴퓨터들, 스마트북들, 울트라북들, 팜톱 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 가능 셀룰러 전화기들, 무선 게이밍 제어기들, 및 메모리, 프로그램가능 프로세서 또는 코어 (본 명세서에서 일괄하여 "프로세싱 코어") 를 포함하고 전력 절약 방법들이 도움이 되도록 배터리 전력 하에서 동작하는 유사한 개인용 전자 디바이스들을 포함하는, 휴대용 컴퓨팅 디바이스들 (PCD들) 상에서 프로세서 성능을 향상시키고 및/또는 전력 소비를 감소시키기 위해 동적 클록 및 전압/주파수 스케일링 (DCVS) 솔루션의 일부로서 구현될 수도 있다. 게다가, 다양한 양태들이 배터리 전력으로 돌아가는 휴대용 및 모바일 컴퓨팅 디바이스들에 특히 유용하긴 하지만, 그 양태들은 일반적으로는, 프로세서를 포함하고 감소된 전력 소비가 유익한 임의의 컴퓨팅 디바이스 (예를 들어, 범용 컴퓨터들, 데스크톱 컴퓨터들, 서버들 등) 에서 유용하다.
일반적으로, 칩에 의해 소멸되는 동적 전력 (스위칭 전력) 은 이며, 여기서 C 는 클록 사이클 당 스위칭되는 커패시턴스이고, V 는 전압이며 는 스위칭 주파수이다. 따라서, 주파수가 변화함에 따라, 동적 전력은 그에 따라 선형으로 변화할 것이다. 동적 전력은 프로세서 칩에 의해 소비된 총 전력의 대략 2/3 를 차지할 수도 있다. 칩이 실행되는 주파수가 그 동작 전압에 관련될 수도 있기 때문에 전압 스케일링은 주파수 스케일링과 함께 달성될 수도 있다. 전압 레귤레이터들과 같은 일부 전기 컴포넌트들의 효율은 전력 소비가 온도에 따라 증가하도록 온도의 증가에 따라 감소할 수도 있다. 전력 사용의 증가가 온도를 증가시킬 수도 있기 때문에, 전압 또는 주파수의 증가가 시스템 전력 수요를 훨씬 더 증가시킬 수도 있다. 따라서, 컴퓨팅 디바이스의 배터리 수명은, 그 프로세서들에 인가된 주파수 및/또는 전압을, 그들이 아이들이거나 또는 약간 로딩될 때 감소시키는 것에 의해 향상될 수도 있다. 주파수 및/또는 전압의 이러한 감소는 동적 클록 및 전압/주파수 스케일링 (DCVS) 솔루션을 통해 실시간으로 또는 "즉흥적으로 (on the fly)" 달성될 수도 있다.
일반적으로, DCVS 솔루션은 (프로세서가 비지인 시간과 비교하여) 프로세서가 아이들인 시간의 비율을 모니터링하고, 프로세서들이 아이들 및/또는 비지인 시간의 비율에 기초하여 프로세서들의 주파수/전압이 얼마나 조정되어야 하는지를 결정한다. 프로세서가 아이들인 시간의 비율을 모니터링하는 것은 프로세서가 아이들 프로세스 또는 스레드 (예를 들어, 시스템 아이들 프로세스 등) 를 실행하는 지속기간을 나타내는 값 (예를 들어, 시간량, CPU 사이클들의 수 등) 을 컴퓨팅 및/또는 측정하는 것을 포함할 수도 있다.
오퍼레이팅 시스템은 프로세서 상에서 스케줄링될 준비가 된 다른 스레드들이 없다고 결정할 때 그 프로세서 상에서 아이들 소프트웨어 애플리케이션, 프로세스, 또는 스레드 (본 명세서에서 일괄하여 "스레드") 를 실행할 수도 있다. 아이들 스레드는 다양한 태스크들 (예를 들어, 인터럽트 대기 태스크, 슬립 태스크 등) 을 수행할 수도 있고, 각각의 태스크는 다수의 프로세서 동작들을 포함할 수도 있다. 프로세서가 아이들 스레드를 실행할 때, 그 프로세서는 "아이들 상태" 에서, 및/또는 "아이들 컨디션" 에서 "아이들" 이라고 할 수도 있다.
멀티프로세서 시스템들에서, 오퍼레이팅 시스템 (또는 스케줄러, 제어기 등) 은 각각의 프로세서에 대해 하나 이상의 아이들 스레드들을 유지할 수도 있다. 아이들 스레드들은 각각의 프로세서가 실행할 준비가 된 스레드를 항상 갖도록 계속 실행 준비 상태이다. 이 방식으로, (예를 들어, 스레드가 그의 스케줄링된 태스크들 또는 워크로드들을 완료했기 때문에) 그 스레드가 프로세서를 포기할 때마다, 오퍼레이팅 시스템은, 모든 다른 스레드들이 완료되거나, 리소스들을 대기중이거나, 그렇지 않다면 현재 실행 준비가 되지 않은 경우라도 (예를 들어, 아이들 스레드의 이용가능성을 통해) 그 프로세서 상에서의 실행 준비된 스레드를 갖는다.
상기 논의한 바와 같이, DCVS 솔루션은 프로세서의 주파수 및/또는 전압을, 정상 상태 워크로드를 포함할 수도 있는 그 프로세서의 워크로드들에 기초하여 조정할 수도 있다. 정상 상태 워크로드는 실행 시간 전에 결정될 수도 있으며, 이는 프로세싱 코어가 그 워크로드를 증진하기 위한 동작들을 수행하기 위해 비지 또는 액티브 상태에 들어가기 전이다. 정상 상태 워크로드는 사전에 그 프로세싱 코어 상에서 스케줄링된 태스크들을 완료하는데 필요한 CPU 클록 사이클들의 수, 동작들의 수, 명령들의 수, 및/또는 시간량을 컴퓨팅, 추정, 또는 예측함으로써 결정될 수도 있다. 각각의 프로세서는 하나보다 더 많은 워크로드 (예를 들어, 정상 상태 워크로드 및 과도 워크로드) 를 가질 수도 있고, 각각의 프로세서는 모든 그 워크로드들에서의 모든 태스크들이 완료할 때까지 계속 비지, 실행중, 또는 액티브 상태 (본 명세서에서 일괄하여 "비지 상태") 에 있도록 요구될 수도 있다.
소정의 시나리오들에서, DCVS 솔루션은 프로세서의 성능에 영향을 주지 않고 절전을 달성하기 위해 프로세서의 주파수 및/또는 전압 (즉, 프로세서의 속도) 을 감소시킬 수도 있다. 예를 들어, 프로세서의 워크로드가 실행 시간이 메모리 액세스 시간들에 의해 좌우되는 태스크를 포함할 때, 주파수의 감소는 그 프로세서의 성능 또는 그 태스크의 실행 시간에 상당한 영향을 주지 않을 수도 있다. 그러나, 더 자주 DCVS 솔루션이 프로세서의 성능 (예를 들어, 주어진 세트의 태스크들을 완료하는데 필요한 시간 등) 과 전력 소비 (예를 들어, 주어진 세트의 태스크들을 달성하는데 있어서 소비된 배터리 전력량) 특성들 간의 트레이드오프들을 밸런싱해야 한다. 통상, 태스크들이 빨리 달성될수록, 그 태스크들을 달성하는데 있어서 프로세서가 소비하는 전력이 많아진다.
DCVS 솔루션은 프로세서의 정상 상태 워크로드 및 정상 상태 성능 요건들에 기초하여 성능 및 전력 소비를 밸런싱하도록 구성될 수도 있다. 정상 상태 성능 요건들은 프로세서가 비지 및/또는 아이들인 지속기간을 나타내는 값 (예를 들어, 시간량, CPU 사이클들의 수 등) 을 컴퓨팅 또는 측정하고, 컴퓨팅된/측정된 값들의 결과들을 평균화하며, 그 프로세서의 정상 상태 워크로드들을 완료하는데 필요한 시간/프로세싱량을 결정함으로써 결정될 수도 있다. 이들 컴퓨테이션들에 기초하여, DCVS 솔루션은 프로세서가 (예를 들어, 모바일 디바이스 사용자가 차이 등을 인식하지 못하도록) 감소된 전력 소비 및 허용가능한 레벨들의 응답성을 달성하면서 컴퓨팅된 정상 상태 요건들을 충족하도록 동작할 수도 있는 상위 주파수 임계값 및 하위 주파수 임계값을 컴퓨팅할 수도 있다.
종종, 프로세서들은 DCVS 솔루션이 선험점으로 알고 있지 않은 "워크의 버스트들" 을 포함하고, 정상 상태 또는 주파수 임계값 컴퓨테이션들에서 설명되지 않았던 과도 워크로드들을 프로세싱/실행하도록 요구된다. 과도 워크로드는 동적이거나, 일시적이거나, 또는 프로세서의 워크로드에 있어서 예기치않은 급증을 야기하는 임의의 워크 단위를 포함하는, 사전에 시스템에 알려져 있지 않은 임의의 태스크 또는 워크 유닛일 수도 있다. 일 예로, 과도 워크로드는 사용자 입력들, 시스템 이벤트들, 검출된 환경적 컨디션들, 원격 절차 호출들 등에 응답하여 프로세서에 의해 수행되는 태스크들 중 임의의 것 또는 전부를 포함할 수도 있다. 추가 예로서, 과도 워크로드는 휴대용 컴퓨팅 디바이스 (PCD) 가 (예를 들어, 인터페이스 업데이트로, 새로운 이미지를 디스플레이하고, 새로운 액션을 론칭하며 등등을 함으로써) 즉시 응답해야 하는 사용자 액션을 개시하기 위해 사용자가 PCD 의 터치스크린을 터치할 때 생성될 수도 있다.
상기 언급한 바와 같이, 과도 워크로드들은 DCVS 솔루션이 (예를 들어, 상위 및 하위 임계값들을 결정하는 일부로서) 사전에 적절히 설명할 수 있는 연속적인 정상 상태 워크로드들이 아니다. 그 결과, 과도 워크로드는 프로세서로 하여금, 예상한 것보다 더 오래 계속 비지 상태에 있게 하고 및/또는 그렇지 않으면 프로세서 실행 시간들에서 불확실성들을 초래하게 할 수도 있다. 이러한 불활실성들은 컴퓨팅 디바이스로 하여금, 프로세싱 및 시스템 리소스들을 비효율적으로 또는 부적절하게 할당하게 할 수도 있고, 특히 컴퓨팅 디바이스가 다수의 프로세싱 코어들을 포함할 때 컴퓨팅 디바이스의 전체 성능 및/또는 응답성에 상당한 영향을 줄 수도 있다.
현대의 컴퓨팅 디바이스들은 종종 시스템-온-칩들 (SoC들) 및/또는 다수의 프로세싱 코어들 (예를 들어, 프로세서들, 코어들 등) 을 포함하는 멀티프로세서 시스템들이다. 멀티프로세서 시스템들에서는, 단일 스레드가 제 1 프로세싱 코어에 의해 프로세싱되고, 그리고 나서 제 2 프로세싱 코어에 의해 프로세싱되며, 그리고 나서 다시 제 1 프로세싱 코어에 의해 프로세싱되는 것이 공통적이다. 제 1 프로세싱 코어에서의 하나의 스레드의 결과들이 제 2 프로세싱 코어에서 실행되는 다른 스레드에서의 동작들을 트리거링하는 것 또한 공통적이다. 예를 들어, 하나 이상의 프로세싱 코어들은 현재 액티브 프로세서에 의해 생성된 결과들에 의존할 수도 있고, 현재 액티브 프로세서가 그 워크로드들을 완료하고 및/또는 하나 이상의 태스크들을 프로세싱하는 것을 끝낼 때까지 계속 아이들 또는 대기 상태에 있도록 요구될 수도 있다. 이들 상황들에서, 각각의 프로세싱 코어는 대안으로는, 그 현재 액티브 프로세서로부터 프로세싱의 결과들을 대기하는 동안 아이들/대기 상태에 들어갈 수도 있다. 이들 프로세싱 코어들이 현재 액티브 프로세서에 의해 생성된 결과들을 대기하는 동안, 그들 각각의 DCVS 솔루션들은 그들의 동작 속도들을 (즉, 주파수/전압의 감소를 통해) 감소시켜, 컴퓨팅 디바이스로 하여금, 비응답적이거나 느려 보이게 할 수도 있다. 즉, 멀티프로세서 컴퓨팅 디바이스들 상에서 구현된 DCVS 솔루션은 프로세싱 코어들의 일부가 현재 액티브 스레드들을 실행하기 위해 최적인 것보다 더 낮은 주파수 또는 전압에서 동작되어야 한다는 잘못된 결론을 내릴 수도 있고, 컴퓨팅 디바이스로 하여금, 비응답적이거나 느려 보이게 할 수도 있다.
다양한 양태들은 프로세싱 코어가 그 사전 컴퓨팅된 정상 상태 워크로드를 완료하는데 필요한 미리 결정된 시간량보다 더 많은 시간 동안 그 프로세싱 코어가 (예를 들어, 과도 워크로드들로 인해) 계속 비지 상태에 있지 않음을 보장하는 성능 보장들을 컴퓨팅 및 시행함으로써 상기 언급된 제한들을 극복한다. 이러한 성능 보장들은 오퍼레이팅 시스템, 리소스들, DCVS 솔루션들, 및/또는 다른 프로세싱 코어들에 의해, 리소스들을 할당하고 실행을 위한 스레드들을 스케줄링하는 것과 같은 추후의 동작들을 더 잘 추정하고, 스케줄링하고, 및/또는 계획하는데 이용될 수도 있다. 이 방식으로, 성능 보장들은 컴퓨팅 디바이스로 하여금, 그 응답성 요건들을 충족하는 것을 가능하게 하며, 따라서 사용자 경험을 향상시킨다.
성능 보장들은 DCVS 솔루션이 가변 지연에 기초하여 프로세서의 주파수 및/또는 전압을 조정하는 것을 허용하며, 이는 프로세싱 코어가, 프로세서의 현재 또는 이전의 동작 주파수들/전압들과 관계없이, 많아야 정의된 최대 워크량만큼 그 정상 상태 워크로드에 뒤쳐질 뿐임을 보장한다.
도 10 은 성능 보장을 시행하는 동적 클록 주파수/전압 스케일링 (DCVS) 솔루션을 구현하는 일 양태의 컴퓨팅 디바이스 (1000) 에서의 논리적 컴포넌트들 및 정보 플로우들을 예시한다. 컴퓨팅 디바이스 (1000) 는 하드웨어 유닛 (1002), 커널 공간 소프트웨어 유닛 (1004), 및 사용자 공간 소프트웨어 유닛 (1006) 을 포함할 수도 있다. 일 양태에서, 커널 공간 소프트웨어 유닛 (1004) 및 사용자 공간 소프트웨어 유닛 (1006) 은 컴퓨팅 디바이스 (1000) 의 커널 또는 오퍼레이팅 시스템에 포함될 수도 있다. 예를 들어, 컴퓨팅 디바이스는 사용자 공간 (여기서 비-특권 (non-privileged) 코드가 실행된다) 및 커널 공간 (여기서 특권 코드가 실행된다) 으로 조직화되는 커널을 포함할 수도 있다. 이 분리는 커널 공간의 일부인 코드가 GPL (general public license) 라이선스되어야 하는 한편, 사용자-공간에서 실행되는 코드는 GPL 라이선스될 필요가 없는 안드로이드 (Android) 및 다른 GPL 환경들에서 특히 중요하다.
하드웨어 유닛 (1002) 은 다수의 프로세싱 코어들 (예를 들어, CPU 0, CPU 1, 2D-GPU 0, 2D-GPU 1, 3D-GPU 0 등) 및 그 프로세싱 코어들에 의해 공유되는 다양한 하드웨어 리소스들 (예를 들어, 클록들, 전력 관리 집적 회로들 또는 "PMIC들", 스크래치패드 메모리들 또는 "SPM들" 등) 을 포함하는 리소스들 모듈 (1020) 을 포함할 수도 있다.
커널 공간 소프트웨어 유닛 (1004) 은 각각이 하나 이상의 아이들 상태 (stats) 디바이스 모듈들 (1008) 과 통신할 수도 있는, 하드웨어 유닛 (1002) 내의 프로세싱 코어들 중 적어도 하나에 대응하는 프로세서 모듈들 (CPU_0 아이들 상태, CPU_1 아이들 상태, 2D-GPU_0 드라이버, 2D-GPU_1 드라이버, 3D-GPU_0 드라이버 등) 을 포함할 수도 있다. 커널 공간 소프트웨어 유닛 (1004) 은 타이머 드라이버 모듈 (1014), 입력 이벤트 모듈들 (1010), 및 CPU 요청 상태 모듈 (1012) 을 더 포함할 수도 있다. 일 양태에서, 타이머 드라이버 모듈 (1014) 은 각각의 프로세싱 코어에 대해 타이머를 구동 (또는 유지) 할 수도 있다.
사용자 공간 소프트웨어 유닛 (1006) 은 아이들 상태 디바이스 모듈들 (1008), 입력 이벤트 모듈들 (1010), 타이머 드라이버 모듈 (1014), 및 CPU 요청 상태 모듈 (1012) 각각으로부터 입력들을 수신하고, 및/또는 출력들을 CPU 주파수 핫플러그 모듈 (1018) 로 전송하도록 구성된 DCVS 제어 모듈 (416) 을 포함할 수도 있다. CPU 주파수 핫플러그 모듈 (1018) 은 리소스들 모듈 (1020) 로 통신 신호들을 전송하도록 구성될 수도 있다. CPU 주파수 핫플러그 모듈 (1018) 은 또한, 개별적으로나 (예를 들어, 한번에 하나씩, 순차적으로 등등) 또는 동시에 (예를 들어, 대략 동일한 시점에), 각각의 코어에 전압/주파수 변화들을 적용하도록 구성될 수도 있다.
DCVS 제어 모듈 (1016) 은 프로세싱 코어들 (예를 들어, CPU 0, CPU 1, 2D-GPU 0, 2D-GPU 1, 3D-GPU 0 등) 중 임의의 것 또는 전부 상에서의 실행에 적합하고 및/또는 컴퓨팅 디바이스 (1000) 상에서 DCVS 솔루션을 구현하는데 적합한 스레드들을 포함할 수도 있다. 일 양태에서, DCVS 제어 모듈 (1016) 은 DCVS 제어 모듈 (1016) 로 하여금, 하나 이상의 프로세싱 코어들로부터 정보를 수집하게 하고 프로세싱 코어 상에서 DCVS 동작들을 수행하게 하는 이벤트의 발생 (예를 들어, 데이터 버퍼의 충진, 타이머의 만료, 상태 천이 등) 을 위한 포트 또는 소켓을 모니터링하는 스레드를 포함할 수도 있다. 일 양태에서, DCVS 제어 모듈 (1016) 은 2 개 이상의 프로세싱 코어들을 모니터링하는 단일-스레디드 DCVS 솔루션을 포함할 수도 있다. 일 양태에서, DCVS 제어 모듈 (1016) 은 각각의 프로세싱 코어에 대해 DCVS 솔루션 스레드를 포함할 수도 있다.
일 양태에서, DCVS 제어 모듈 (1016) 은 펄스열 (pulse train) 들을 생성하도록 구성될 수도 있다. DCVS 제어 모듈 (1016) 은 프로세싱 코어들의 비지 및/또는 아이들 상태들 (또는 상태들 간의 천이들) 을 모니터링 또는 샘플링함으로써 펄스열들을 생성할 수도 있다. DCVS 제어 모듈 (1016) 은 또한 하나 이상의 프로세서 실행 큐들의 깊이 (depth) 를 모니터링하는 것으로부터 획득된 정보에 기초하여 펄스열들을 생성할 수도 있다. 실행 큐는 실행 스레드는 물론, 프로세싱 코어 상에서 실행가능하지만, (예를 들어, 현재 실행중인 다른 액티브 스레드로 인해) 아직 그럴 수 없는 하나 이상의 스레드들의 컬렉션을 포함할 수도 있다. 각각의 프로세싱 코어는 그 자신의 실행 큐를 가질 수도 있고, 또는 단일 실행 큐가 다수의 프로세싱 코어들에 의해 공유될 수도 있다. 스레드들은 그들이 슬립 상태에 들어갈 것을 요청하거나, 리소스가 이용가능해지기를 대기중이거나, 또는 종료되었을 때 실행 큐로부터 제거될 수도 있다. 따라서, 실행 큐 내의 스레드들의 수 (즉, 실행 큐 깊이) 는 현재 프로세싱되고 있는 (실행중인) 스레드 및 프로세싱되길 대기중인 스레드를 포함하는 다수의 액티브 스레드들 (예를 들어, 대기중, 실행중) 을 식별할 수도 있다.
일 양태에서, DCVS 제어 모듈 (1016) 은 생성된 펄스열들에 기초하여 정상 상태 워크로드들, 정상 상태 요건들, 및/또는 상위 및 하위 주파수/전압 임계값들을 컴퓨팅하도록 구성될 수도 있다. 상위 및 하위 주파수/전압 임계값들은 프로세싱 코어가 동시에 감소된 전력 소비를 달성하고 컴퓨팅 디바이스 (1000) 의 응답성 요건들을 충족하면서 그 정상 상태 성능 요건들을 충족하도록 동작할 수도 있는 주파수/전압 범위를 정의할 수도 있다. 그 응답성 요건들을 충족하는 것은 컴퓨팅 디바이스 (1000) 의 사용자가 컴퓨팅 디바이스의 성능 또는 속도의 감소를 의식하지 않도록 워크로드들에서의 모든 태스크들을 수행하는 것을 포함할 수도 있다.
DCVS 제어 모듈 (1016) 은 전체 컴퓨팅 디바이스 (1000) 성능을 모니터링하고 및/또는 프로세싱 코어들 중 하나 이상이 확립된 상위 및 하위 주파수 임계값들 간에 동작하는 것을 보장하도록 구성될 수도 있다. DCVS 제어 모듈 (1016) 은 프로세싱 코어들의 프로세싱 리소스들 및/또는 동작 주파수들을, 그들이 임계값들에 상응하도록 조정할 수도 있다.
상기 논의한 바와 같이, DCVS 제어 모듈 (1016) 은 펄스열들을 생성할 수도 있다. 일 양태에서, 프로세싱 코어들 중 2 개 이상의 프로세싱 코어들에 대해 생성된 펄스열들은 시간 단위로 동기화되고 프로세싱 코어들이 서로 상호동작적이고 및/또는 의존적인 동작들을 수행중인지 여부를 결정하는데 적합한 정보를 포함하는 상관 모델들을 생성하도록 상호-상관될 수도 있다. 일 양태에서, DCVS 제어 모듈 (1016) 은 그 상관 모델들을 이용하여 상위 및 하위 주파수 임계값들, 초기 동작 주파수, 정상 상태 요건들, 및 프로세서 워크로드들을 결정하여, 이들 값들이 프로세싱 코어들 간의 상호의존성들을 설명한다.
일 양태에서, DCVS 제어 모듈 (1016) 은 성능 보장들을 컴퓨팅 및/또는 시행하도록 구성될 수도 있다. 상기 언급한 바와 같이, 프로세싱 코어들은 DCVS 솔루션이 사전에 적절히 설명할 수 없는 과도 워크로드들을 프로세싱/실행하도록 요구될 수도 있다. 따라서, 과도 워크로드들은 DCVS 제어 모듈 (1016) 로 하여금, 서브-최적의 주파수 레벨에서 또는 서브-최적의 주파수 범위 내에서 프로세싱 코어들 중 하나 이상을 동작하게 할 수도 있다. 예를 들어, DCVS 제어 모듈 (1016) 이 사전에 과도 워크로드들을 설명할 수 없기 때문에, 프로세싱 코어는 컴퓨팅 디바이스 (1000) 의 응답성 요건들을 충족하는데 적합한 시간 주기에서 정상 상태 워크로드와 과도 워크로드 양자를 완료하는데 필요한 것보다 더 낮은 주파수 레벨에서 동작될 수도 있다고 잘못 결론을 내릴 수도 있다.
성능 보장은 DCVS 제어 모듈 (1016) 에 의해, 프로세싱 코어가 그 정상 상태 워크로드 요건들을 완료하는데 필요한 미리 결정된 시간/워크량보다 더 많은 시간/워크 동안 프로세싱 코어가 (예를 들어, 과도 워크로드들로 인해) 계속 비지 상태에 있지 않음을 보장하는데 이용될 수도 있는 엄격하고 계산가능한 한계를 컴퓨팅 디바이스 (1000) 에 제공한다. 성능 보장은 DCVS 제어 모듈 (1016) 이, 프로세싱 코어가 컴퓨팅 디바이스 (1000) 의 응답성 요건들을 충족하는데 적합한 시간 주기에 그 정상 상태 워크로드와 그 과도 워크로드들 양자를 완료하는 것을 보장하는 것을 허용한다.
다양한 양태들에서, 성능 보장은 프로세서 성능 또는 지속기간, 이를 테면 시간량, 워크량, 태스크들의 수, 명령들의 수, CPU 사이클들의 수 등을 측정하는데 적합한 임의의 측정 단위로 컴퓨팅되고, 정의되며, 및/또는 이 측정 단위를 포함할 수도 있다. 다양한 양태들에서, 성능 보장은 주파수와 연관될 수도 있고 및/또는 주파수의 함수일 수도 있다.
일 양태에서, 성능 보장은 하나 이상의 성능 보장 값들을 포함할 수도 있다. 다양한 양태들에서, 성능 보장 값들 (예를 들어, 데드라인 값, 버짓 값, 점프-투-맥스 (jump-to-max) 값 등) 은 프로세서 성능 또는 지속기간, 이를 테면 시간량, 워크량, 태스크들의 수, 명령들의 수, CPU 사이클들의 수 등을 측정하는데 적합한 임의의 측정 단위로 표현될 수도 있다.
다양한 양태들에서, 성능 보장 값들은 버짓 값 (예를 들어, 슬랙 버짓, 과도 버짓 등), 데드라인 값 (예를 들어, 과도 데드라인, 과도 응답 데드라인, 성능 데드라인 등), 및/또는 점프-투-맥스 값을 포함할 수도 있다.
데드라인 값은 프로세싱 코어가 이전에 그 워크로드 프로세싱을 완료할 상대적인 시간을 나타내는 값 및/또는 프로세싱 코어의 주파수가 이후에 증가될 상대적인 시간을 나타내는 값일 수도 있다.
버짓 값은 프로세싱 코어가 이전에 그 워크로드 프로세싱을 완료할 및/또는 프로세싱 코어의 주파수가 이후에 증가될 남은 시간량을 나타내는 값일 수도 있다.
점프-투-맥스 값은 프로세싱 코어가 이전에 그 워크로드 프로세싱을 완료할 및/또는 프로세싱 코어의 주파수가 이후에 최대 주파수로 증가될 상대적인 시간을 나타내는 값일 수도 있다.
성능 보장 값들은 주파수 또는 전압과 관련되고, 그들과 연관되며, 및/또는 그들의 함수일 수도 있다. 예를 들어, 버짓, 데드라인, 및/또는 점프-투 값들 각각은 대응하는 프로세싱 코어의 동작 주파수의 함수로서 컴퓨팅되는 시간 값일 수도 있다. 따라서, 이들 값들 각각은, 프로세싱 코어가 100MHz 의 주파수에서 동작할 때 10밀리초, 200MHz 의 주파수에서 동작할 때 20밀리초, 400MHz 의 주파수에서 동작할 때 40밀리초 등등일 수도 있다. 이 방식으로, 성능 보장 값들은 DCVS 솔루션에 의해, 프로세싱 코어의 주파수를 증가시키기 위한 가변 지연을 구현하는데 이용될 수도 있다.
상기 언급되고 도 9 에 예시한 바와 같이, DCVS 솔루션은 가변 지연들을 구현할 수도 있다. 이러한 가변 지연들은, 프로세싱 코어가, 프로세싱 코어의 실제 동작 주파수들과 관계없이, 많아야 정의된 최대 워크량만큼 그 정상 상태 워크로드에 뒤쳐질 뿐임을 보장한다. 일 양태에서, DCVS 솔루션은 (즉, 프로세싱 코어가 그 정상 상태 워크로드에 뒤쳐질 수도 있는) 정의된 최대 워크량을 프로세싱 코어의 최대 주파수/전압이 곱해진 데드라인 값과 동일하게 설정할 수도 있다. 이 방식으로, 성능 보장은 DCVS 솔루션이 정상 상태 요건들에 기초하여 또는 동적으로 또는 "즉흥적으로" 프로세싱 코어의 주파수/전압을 조정하는 것에 의해 영향을 받지 않는다.
일 양태에서, DCVS 제어 모듈 (1016) 은 대응하는 프로세싱 코어가 아이들로부터 비지로 천이하고, 비지 상태에 들어가며 (예를 들어, 워크로드를 프로세싱하는 것을 시작하며 등등), 및/또는 (예를 들어, 아이들 스레드가 프로세싱 코어를 포기할 때 등등) 아이들 상태에서 빠져나올 때마다 데드라인 값을 버짓 값과 동일하게 설정하도록 구성될 수도 있다.
일 양태에서, DCVS 제어 모듈 (1016) 은 대응하는 프로세싱 코어가 비지로부터 아이들로 천이하고, 아이들 상태에 들어가며 (예를 들어, 아이들 스레드를 실행하는 것을 시작하며 등등), 비지 상태를 빠져나올 (예를 들어, 워크로드에서의 모든 태스크들을 완료하는 등등을 행할) 때마다 기존 데드라인 값을 설정 또는 재설정하도록 구성될 수도 있다.
도 11a 및 도 11b 는 프로세싱 코어가 그 사전 컴퓨팅된, 예측된 및/또는 실제 정상 상태 워크로드를 (예를 들어, 과도 워크로드들 등으로 인해) 완료하는데 필요한 미리 결정된 시간량보다 더 많은 시간 동안 그 프로세싱 코어가 계속 비지 상태에 있지 않음을 보장하는 성능 보장을 생성/컴퓨팅하는 일 양태의 DCVS 솔루션 방법 (1100) 을 예시한다. 다양한 양태들에서, DCVS 솔루션의 동작들은 프로세싱 코어 상에서 또는 다른 프로세싱 코어 상에서 실행되는 스레드에 의해 수행될 수도 있다. 일 양태에서, DCVS 솔루션의 동작들 중 하나 이상은 프로세싱 코어 상에서 실행되는 아이들 스레드에 의해 수행될 수도 있다.
블록 1102 에서, DCVS 솔루션은 프로세싱 코어로 하여금, 아이들 상태로부터 비지 상태로 천이하게 할 수도 있다. 블록 1104 에서, DCVS 솔루션은 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 현재 시간 값 (CurrentTime) 과 동일하게 설정할 수도 있다. 따라서, 아이들 종료 시간 파라미터 (EndIdleTime) 는 프로세싱 코어가 최근에 아이들 상태에서 빠져나온 시간을 나타내는 값을 저장할 수도 있다.
다양한 양태들에서, 블록 1102 및 블록 1104 의 동작들은 순차적으로, 병렬로 및/또는 임의의 순서로 수행될 수도 있다. 예를 들어, 일 양태에서, DCVS 솔루션은 프로세싱 코어를 아이들로부터 비지로 천이시키기 전에 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 설정할 수도 있다. 다른 양태에서, DCVS 솔루션은 프로세싱 코어를 아이들로부터 비지로 천이한 후에 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 설정할 수도 있다.
블록 1106 에서, DCVS 솔루션은 프로세싱 코어의 동작 주파수 또는 전압을 모니터링하고 필요 시 조정들을 행할 수도 있다. 블록 1108 에서, DCVS 솔루션은 프로세싱 코어로 하여금, 비지 상태로부터 아이들 상태로 천이하게 할 수도 있다. 일 양태에서, DCVS 솔루션은 프로세싱 코어 상에서 아이들 스레드의 실행을 시작함으로써 프로세싱 코어를 아이들 상태로 천이시킬 수도 있다. 일 양태에서, DCVS 솔루션은 프로세싱 코어가 모든 그 워크로드들과 연관된 모든 태스크들을 완료한 후에 프로세싱 코어를 아이들 상태로 천이시킬 수도 있다.
옵션의 블록 1110 에서, DCVS 솔루션은 기존 데드라인 값을 설정 또는 재설정할 수도 있다. 상기 논의한 바와 같이, 데드라인 값은 성능 보장에 포함되거나, 그 성능 보장과 연관되는 성능 보장 값일 수도 있다. 데드라인 값을 설정, 재설정 및/또는 컴퓨팅하는 동작들에 관한 추가적인 상세들이 이하 추가 제공된다.
블록 1112 에서, DCVS 솔루션은 아이들 시작 시간 파라미터 (StartIdleTime) 의 값을 현재 시간 값 (CurrentTime) 과 동일하게 설정할 수도 있다. 블록 1114 에서, DCVS 솔루션은 비지 시간 파라미터 (BusyTime) 의 값을, 프로세싱 코어가 최근에 이전의 아이들 상태에서 빠져나왔을 때의 시간 (이는 아이들 종료 시간 파라미터 "EndIdleTime" 으로 표현될 수도 있다) 과 프로세싱 코어가 현재 아이들 상태에 들어갔을 때의 시간 (이는 아이들 시작 시간 파라미터 "StartIdleTime" 으로 표현될 수도 있다) 간의 차이와 동일하게 설정할 수도 있다. 따라서, 비지 시간 파라미터 (BusyTime) 는 프로세싱 코어가 가장 최근에 계속 비지 상태에 있는 지속기간을 나타내는 값을 저장할 수도 있다.
블록 1116 에서, DCVS 솔루션은, 프로세싱 코어로 하여금, 다양한 아이들 상태 동작들, 이를 테면, 슬립 동작들, 딥 슬립 동작들, 또는 소프트웨어 인터럽트 대기 동작들을 수행하게 할 수도 있다. 이에 따라, 블록 1116 에서, (예를 들어, 아이들 스레드, 오퍼레이팅 시스템 등을 통한) DCVS 솔루션은 프로세싱 코어로 하여금, 슬립 상태, 딥 슬립 상태, 인터럽트 대기 상태 등에 들어가게 할 수도 있다.
블록 1118 에서, DCVS 솔루션 및/또는 아이들 스레드는 인터럽트 요청을 수신하고 및/또는 다르게는 프로세싱 코어가 그 현재 상태로부터 비지 상태로 천이될 것으로 결정할 수도 있다. 이것은 DCVS 솔루션이 프로세싱 코어 상에서의 실행을 위해 태스크들이 스케줄링되었고 및/또는 스케줄링된 태스크들이 실행 준비가 되었다는 통지를 (예를 들어, 오퍼레이팅 시스템 스케줄러, 제어기 등으로부터) 수신하는 것에 의해 달성될 수도 있다.
블록 1120 에서, DCVS 솔루션은 아이들 종료 시간 파라미터 (EndIdleTime) 의 값을 현재 시간 값 (CurrentTime) 과 동일하게 설정할 수도 있다. 블록 1122 에서, DCVS 솔루션은 아이들 시간 파라미터 (IdleTime) 의 값을 StartIdleTime 파라미터의 값과 EndIdleTime 파라미터의 값 간의 차이와 동일하게 설정할 수도 있다. 따라서, 아이들 시간 파라미터 (IdleTime) 는 프로세싱 코어가 최근에 계속 아이들 상태에 있었던 지속기간을 나타내는 값을 저장할 수도 있다.
블록 1124 에서, DCVS 솔루션은 프로세싱 코어가 동작할 동작 주파수, 주파수 범위, 및/또는 주파수 임계값들을 컴퓨팅할 수도 있다. 일 양태에서, DCVS 솔루션은 프로세싱 코어가 최근에 계속 비지 상태에 있었던 시간 (예를 들어, BusyTime) 의 지속기간 및/또는 프로세싱 코어가 최근에 계속 아이들 상태에 있었던 시간 (예를 들어, IdleTime) 의 지속기간에 기초하여 주파수 또는 주파수 범위를 컴퓨팅할 수도 있다. 일 양태에서, DCVS 솔루션은 프로세서가 이전에 (예를 들어, 미리 결정된 시간 주기 또는 시간 윈도우에 걸쳐) 계속 비지 및/또는 아이들 상태들에 있었던 지속기간들의 평균 (또는 이동 평균) 과 같은 이력 정보에 기초하여 동작 주파수, 주파수 범위, 및/또는 주파수 임계값들을 컴퓨팅할 수도 있다. 일 양태에서, DCVS 솔루션은 펄스열들에 기초하여 동작 주파수, 주파수 범위, 및/또는 주파수 임계값들을 컴퓨팅할 수도 있다. 상기 언급한 바와 같이, 펄스열들은 비지 및/또는 아이들 상태들, 상태들 간의 천이들, 실행 큐들의 깊이 등의 샘플링에 기초하여 생성될 수도 있다.
블록 1126 에서, DCVS 솔루션은 데드라인 값을 컴퓨팅 또는 선택할 수도 있다. 데드라인 값은 프로세싱 코어의 주파수가 이후에 다음의 더 높은 주파수 스텝이나 최대 주파수 중 어느 하나로 증가되도록 설정될 상대적인 시간을 나타내는 값일 수도 있다. 다양한 양태들에서, 데드라인 값은 스케줄링된 태스크들의 구성 설정들, 드라이버 입력들, 정량 (quantity) 및/또는 타입들, 예측된 정상 상태 워크로드, 및/또는 컴퓨팅 디바이스의 응답성 요건들에 기초하여 컴퓨팅될 수도 있다. 데드라인 값은 정적 및/또는 동적 값들에 기초하여 결정될 수도 있다. 예를 들어, 데드라인 값은 정적 구성 값에 기초하여, 또는 프로세싱 코어 상에서 수행되도록 스케줄링된 태스크들의 타입들 (예를 들어, 스트리밍 1080p 비디오 대 스트리밍 720p 비디오 등) 에 기초하여 결정될 수도 있다.
일 양태에서, 데드라인 값은 컴퓨팅 디바이스의 응답성 요건에 반비례할 수도 있다 (즉, 응답성 요건들이 높을수록 데드라인이 짧아진다). 일 양태에서, 데드라인 값은 프로세싱 코어의 현재 동작 주파수의 함수인 시간 값일 수도 있다 (예를 들어, 10MHz 의 주파수에서 10밀리초, 200MHz 의 주파수에서 20밀리초, 400MHz 의 주파수에서 40밀리초 등).
블록 1128 에서, DCVS 솔루션은 버짓 값을 컴퓨팅 또는 선택할 수도 있다. 버짓 값은 프로세싱 코어가 그 정상 상태 워크로드 요건들을 완료하는데 필요할 것으로 결정된 시간과 데드라인 값의 합을 초과하지 않고 프로세싱 코어가 계속 액티브 또는 비지 상태에 있을 수도 있는 시간량을 나타내는 값일 수도 있다. 일 양태에서, 버짓 값은 프로세싱 코어의 현재 동작 주파수의 함수인 시간 값일 수도 있다 (예를 들어, 100MHz 의 주파수에서 10밀리초, 200MHz 의 주파수에서 20밀리초, 400MHz 의 주파수에서 40밀리초 등).
다양한 양태들에서, 버짓 값은 데드라인 값, 복수의 주파수 레벨들 또는 스텝들, 최대 프로세서 주파수, 정상 상태 프로세서 주파수 등에 기초하여 컴퓨팅될 수도 있다. 일 양태에서, 버짓 값은 유효 과도 버짓이고 및/또는 상기 논의된 공식들 중 임의의 것을 통해 컴퓨팅될 수도 있다.
옵션의 블록 1130 에서, DCVS 솔루션은 점프-투-맥스 값을 컴퓨팅할 수도 있다. 점프-투-맥스 값은 프로세싱 코어의 주파수가 이후에 최대 프로세싱 주파수를 설정할 상대적인 시간을 나타내는 값일 수도 있다. 일 양태에서, 점프-투-맥스 값은 EndIdleTime 파라미터의 값과 버짓 값을 합산함으로써 컴퓨팅될 수도 있다.
블록 1132 에서, DCVS 솔루션은 프로세싱 코어를 아이들 상태로부터 비지 상태로 천이시킬 수도 있다. 일 양태에서, 블록 1132 의 일부로서, DCVS 솔루션은 데드라인 값을 버짓 값과 동일하게 설정할 수도 있다. 다양한 양태들에서, DCVS 솔루션은 프로세싱 코어가 아이들로부터 비지로 천이하고, 액티브 또는 비지 상태에 들어가며 (예를 들어, 워크로드를 프로세싱하는 것을 시작하며 등등) 및/또는 (예를 들어, 아이들 스레드가 프로세싱 코어를 포기할 때 등등) 아이들 상태에서 빠져나올 때마다 데드라인 값을 버짓 값과 동일하게 설정하도록 구성될 수도 있다.
도 12 는 프로세싱 코어가 (예를 들어, 과도 워크로드들의 존재 등으로 인해) 그 사전 컴퓨팅된, 예측된, 및/또는 실제 정상 상태 워크로드를 완료하는데 필요한 미리 결정된 시간량보다 더 많은 시간 동안 그 프로세싱 코어가 계속 비지 상태에 있지 않음을 보장하기 위한 성능 보장을 시행하는 일 양태의 DCVS 솔루션 방법 (1200) 을 예시한다. 블록 1202 에서, DCVS 솔루션은 스케줄링된 태스크들에 기초하여 예측된 정상 상태 워크로드를 컴퓨팅할 수도 있다. 블록 1204 에서, DCVS 솔루션은 컴퓨팅 디바이스의 전력 소비 및/또는 응답성 요건들을 충족하기 위한 주파수 임계값들과 같이, 프로세싱 코어에 대한 다양한 성능 요건들을 컴퓨팅할 수도 있다. 성능 요건들 (예를 들어, 주파수 임계값들 등) 은 정상 상태 워크로드, 이력 정보 (예를 들어, 비지 상태에서 이전에 소비된 시간량 등), 프로세서 특성들, 응답성 요건들 등에 기초하여 결정될 수도 있다.
블록 1206 에서, DCVS 솔루션은 초기 동작 주파수 및/또는 다양한 성능 보장 값들 (예를 들어, 데드라인 값, 버짓 값, 점프-투-맥스 값 등) 을 컴퓨팅 및 설정할 수도 있다. 블록 1208 에서, DCVS 솔루션은 다양한 성능 요건들을 충족하면서 프로세싱 코어가 정상 상태 워크로드에서의 모든 태스크들을 완료하는데 필요한 시간 또는 워크의 양 (예를 들어, CPU 사이클들, 명령들 등) 을 컴퓨팅할 수도 있다.
블록 1210 에서, DCVS 솔루션은 프로세싱 코어가 컴퓨팅된 초기 동작 주파수/전압에서 (또는 컴퓨팅된 임계값들 내에서) 실행되고 및/또는 다양한 디바이스 또는 시스템 요건들을 충족하도록 프로세싱 코어를 아이들 상태로부터 비지 상태로 천이시킬 수도 있다. 블록 1212 에서, DCVS 솔루션은 프로세싱 코어의 실제 워크로드 및/또는 동작 주파수를 모니터링하고 필요 시 (예를 들어, 디폴트 클록 및 전압 스케일링 알고리즘에 따라) 주파수/전압을 조정할 수도 있다. 옵션의 블록 1214 에서, DCVS 솔루션은 프로세싱 코어의 현재 동작 주파수/전압에 기초하여 성능 보장 값들을 업데이트할 수도 있다.
결정 블록 1216 에서, DCVS 솔루션은 프로세싱 코어가 컴퓨팅된 시간/워크 (즉, 프로세싱 코어가 예측된 정상 상태 워크로드에서의 모든 태스크들을 완료하는데 필요할 것으로 결정된 시간/워크량) 보다 더 길게 계속 비지 상태에 있는지 여부를 결정할 수도 있다. DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간/워크보다 더 길게 계속 비지 상태에 있지 않다고 결정할 때 (즉, 결정 단계 1216 = "아니오"), 블록 1212 에서, DCVS 솔루션은 실제 워크로드/주파수를 모니터링하고 필요 시 조정들을 행하는 것을 계속할 수도 있다.
DCVS 솔루션이 프로세싱 코어가 컴퓨팅된 시간/워크보다 더 긴 지속기간 동안 계속 비지 시간에 있다고 결정할 때 (즉, 결정 단계 1216 = "예"), 결정 블록 1218 에서, DCVS 솔루션은 버짓이 소진되었다는지 여부를 결정할 수도 있다. DCVS 솔루션은 버짓 값이 0 과 동일한 경우 및/또는 프로세싱 코어가 데드라인 값 더하기 컴퓨팅된 시간/워크 이상인 (시간이나 워크 중 어느 하나의 단위로 측정된) 지속기간 동안 계속 비지 상태에 있는 경우 버짓이 소진되었다고 결정할 수도 있다.
DCVS 솔루션이 버짓이 소진되지 않았다고 결정할 때 (즉, 결정 단계 1218 = "아니오"), 블록 1212 에서, DCVS 솔루션은 실제 워크로드/주파수를 모니터링하고 필요 시 조정들을 행하는 것을 계속할 수도 있다. DCVS 솔루션이 버짓이 소진되었다고 결정할 때 (즉, 결정 단계 1218 = "예"), 블록 1220 에서, DCVS 솔루션은 프로세싱 코어의 동작 주파수/전압을 증가시킬 수도 있다. 일 양태에서, DCVS 솔루션은 블록 1220 에서 프로세싱 코어의 동작 주파수/전압을 최대 프로세서 주파수로 증가시킬 수도 있다. 일 양태에서, DCVS 솔루션은 블록 1220 에서 동작 주파수/전압 임계값들을 증가시킬 수도 있다. 일 양태에서, 블록 1220 에서, DCVS 솔루션은 프로세싱 코어의 동작 주파수/전압들을 스텝들 단위 (in steps) 로 증가시킬 수도 있다.
도 13 은 성능 보장을 시행하는 다른 양태의 DCVS 솔루션 방법 (1300) 을 예시한다. 블록 1302 내지 블록 1314 에서, DCVS 솔루션은 도 12 의 블록 1202 내지 블록 1214 에 대하여 상기 논의된 동작들과 동일하거나 유사한 동작들을 수행할 수도 있다. 결정 블록 1316 에서, DCVS 솔루션은 컴퓨팅된 시간 (즉, 프로세싱 코어가 예측된 정상 상태 워크로드에서의 모든 태스크들을 완료하는데 필요할 것으로 결정된 시간량) 더하기 데드라인 값 (ComputedTime + Deadline) 전에 프로세싱 코어가 그 현재 워크로드를 완료할 높은 개연성이 있는지 여부를 결정할 수도 있다.
DCVS 솔루션이 컴퓨팅된 시간 더하기 데드라인 값 전에 프로세싱 코어가 그 현재 워크로드를 완료할 높은 개연성이 있다고 결정하는 경우 (즉, 결정 단계 1316 = "예"), 블록 1312 에서, DCVS 솔루션은 실제 워크로드/주파수를 모니터링하고 필요 시 동작 주파수/전압에 대한 조정들을 행하는 것을 계속할 수도 있다.
DCVS 솔루션이 컴퓨팅된 시간 값 더하기 데드라인 값 전에 프로세싱 코어가 그 현재 워크로드를 완료할 높은 개연성이 없다고 결정하는 경우 (즉, 결정 단계 1316 = "아니오"), 블록 1318 에서, DCVS 솔루션은 프로세싱 코어의 동작 주파수/전압을 증가시킬 수도 있다. 프로세싱 코어의 동작 주파수/전압은 최대 프로세서 주파수로 또는 스텝들 단위로 증가될 수도 있다.
다양한 양태들은 프로세서를 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법들을 포함하며, 그 방법은 프로세서의 정상 상태 워크로드를 결정하는 단계, 프로세서 상에서 결정된 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 단계, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계, 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 단계, 프로세서의 실제 워크로드에 기초하여 프로세서의 주파수를 스케일링하기 위해 동적 클록 및 전압 스케일링 동작들을 수행하는 단계, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 단계, 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있는지 여부를 결정하는 단계, 및 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 프로세서의 주파수를 증가시키는 단계를 포함할 수도 있다.
일 양태에서, 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 프로세서의 주파수를 증가시키는 단계는 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 단계를 포함할 수도 있다. 추가 양태에서, 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 프로세서의 주파수를 증가시키는 단계는 프로세서의 주파수를 스텝들 단위로 증가시키는 단계를 포함할 수도 있다. 추가 양태에서, 방법은 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 단계, 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있는지 여부를 결정하는 단계, 및 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 프로세서의 주파수를 증가시키는 단계의 동작들을 반복적으로 수행하는 단계를 더 포함할 수도 있다.
추가 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계는 데드라인 값을 컴퓨팅하는 단계를 포함할 수도 있다. 추가 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계는 버짓 값을 컴퓨팅하는 단계를 포함할 수도 있다. 추가 양태에서, 프로세서의 정상 상태 워크로드를 결정하는 단계는 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 단계를 포함할 수도 있다. 추가 양태에서, 방법은 비지 상태와 아이들 상태 간의 천이들을 샘플링함으로써 펄스열들을 생성하는 단계를 포함할 수도 있다. 추가 양태에서, 프로세서의 정상 상태 워크로드를 결정하는 단계, 프로세서 상에서 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 단계, 및 프로세서에 대한 성능 보장 값을 컴퓨팅하는 단계의 동작들은 단일 스레드에 의해 수행된다. 추가 양태에서, 단일 스레드는 프로세서 상에서 실행된다. 추가 양태에서, 단일 스레드는 컴퓨팅 디바이스의 제 2 프로세서 상에서 실행된다.
추가 양태들은 프로세서의 정상 상태 워크로드를 결정하는 수단, 프로세서 상에서 결정된 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 수단, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 수단, 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 수단, 프로세서의 실제 워크로드에 기초하여 프로세서의 주파수를 스케일링하기 위해 동적 클록 및 전압 스케일링 동작을 수행하는 수단, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 수단, 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있는지 여부를 결정하는 수단, 및 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 프로세서의 주파수를 증가시키는 수단을 갖는 컴퓨팅 디바이스를 포함한다.
일 양태에서, 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 프로세서의 주파수를 증가시키는 수단은 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 수단을 포함할 수도 있다.
추가 양태에서, 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 프로세서의 주파수를 증가시키는 수단은 프로세서의 주파수를 스텝들 단위로 증가시키는 수단을 포함할 수도 있다. 추가 양태에서, 컴퓨팅 디바이스는 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있는지 여부를 결정하는 것, 및 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 프로세서의 주파수를 증가시키는 것의 동작들을 반복적으로 수행하는 수단을 더 포함할 수도 있다.
추가 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 수단은 데드라인 값을 컴퓨팅하는 수단을 포함할 수도 있다. 추가 양태에서, 프로세서에 대한 성능 보장 값을 컴퓨팅하는 수단은 버짓 값을 컴퓨팅하는 수단을 포함할 수도 있다. 추가 양태에서, 프로세서의 정상 상태 워크로드를 결정하는 수단은 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 수단을 포함할 수도 있다. 추가 양태에서, 컴퓨팅 디바이스는 비지 상태와 아이들 상태 간의 천이들을 샘플링함으로써 펄스열들을 생성하는 수단을 포함할 수도 있다.
추가 양태에서, 컴퓨팅 디바이스는 프로세서의 정상 상태 워크로드를 결정하는 것, 프로세서 상에서 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 것, 및 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들을 단일 스레드를 통해 달성하는 수단을 포함할 수도 있다. 추가 양태에서, 컴퓨팅 디바이스는 프로세서 상에서 단일 스레드를 실행하는 수단을 포함할 수도 있다. 추가 양태에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스의 제 2 프로세서 상에서 단일 스레드를 실행하는 수단을 포함할 수도 있다.
추가 양태들은 제 2 프로세서의 정상 상태 워크로드를 결정하는 것, 제 2 프로세서 상에서 결정된 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 것, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것, 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것, 제 2 프로세서의 실제 워크로드에 기초하여 제 2 프로세서의 주파수를 스케일링하기 위해 동적 클록 및 전압 스케일링 동작들을 수행하는 것, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있는지 여부를 결정하는 것, 및 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 제 2 프로세서의 주파수를 증가시키는 것을 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성된 제 1 프로세서를 포함할 수도 있는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성된 프로세서를 포함할 수도 있는 컴퓨팅 디바이스를 포함한다.
일 양태에서, 제 1 프로세서는 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 제 2 프로세서의 주파수를 증가시키는 것이 제 2 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함할 수도 있도록 프로세서 실행가능 명령들로 구성될 수도 있다.
추가 양태에서, 제 1 프로세서는 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 제 2 프로세서의 주파수를 증가시키는 것이 제 2 프로세서의 주파수를 스텝들 단위로 증가시키는 것을 포함할 수도 있도록 프로세서 실행가능 명령들로 구성될 수도 있다.
추가 양태에서, 제 1 프로세서는 또한, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있는지 여부를 결정하는 것, 및 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 제 2 프로세서의 주파수를 증가시키는 것의 동작들을 반복적으로 수행하기 위한 프로세서 실행가능 명령들로 구성될 수도 있다. 추가 양태에서, 제 1 프로세서는 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함할 수도 있도록 프로세서 실행가능 명령들로 구성될 수도 있다.
추가 양태에서, 제 1 프로세서는 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버짓 값을 컴퓨팅하는 것을 포함할 수도 있도록 프로세서 실행가능 명령들로 구성될 수도 있다. 추가 양태에서, 제 1 프로세서는 제 2 프로세서의 정상 상태 워크로드를 결정하는 것이 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함할 수도 있도록 프로세서 실행가능 명령들로 구성될 수도 있다. 추가 양태에서, 제 1 프로세서는 비지 상태와 아이들 상태 간의 천이들을 샘플링함으로써 펄스열들을 생성하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성될 수도 있다.
추가 양태에서, 제 1 프로세서는 제 2 프로세서의 정상 상태 워크로드를 결정하는 것, 제 2 프로세서 상에서 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 것, 및 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들이 단일 스레드에 의해 수행되도록 프로세서 실행가능 명령들로 구성될 수도 있다. 추가 양태에서, 제 1 프로세서는 단일 스레드가 제 1 프로세서 상에서 실행될 수도 있도록 프로세서 실행가능 명령들로 구성될 수도 있다. 추가 양태에서, 제 1 프로세서는 제 2 프로세서의 정상 상태 워크로드를 결정하는 것, 제 2 프로세서 상에서 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 것, 및 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들을 달성하는 것이 제 2 프로세서 상에서 단일 스레드를 실행하는 것을 포함할 수도 있도록 프로세서 실행가능 명령들로 구성될 수도 있다.
추가 양태들은 컴퓨팅 디바이스로 하여금, 제 2 프로세서의 정상 상태 워크로드를 결정하는 것, 제 2 프로세서 상에서 결정된 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 것, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것, 제 2 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것, 제 2 프로세서의 실제 워크로드에 기초하여 제 2 프로세서의 주파수를 스케일링하기 위해 동적 클록 및 전압 스케일링 동작들을 수행하는 것, 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있는지 여부를 결정하는 것, 및 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 제 2 프로세서의 주파수를 증가시키는 것을 포함할 수도 있는 동작들을 수행하게 하도록 구성된 프로세서 실행가능 명령들을 저장한 비일시적인 서버 판독가능 저장 매체를 포함한다.
일 양태에서, 저장된 프로세서 실행가능 소프트웨어 명령들은 프로세서로 하여금, 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 제 2 프로세서의 주파수를 증가시키는 것이 제 2 프로세서의 주파수를 최대 프로세서 주파수로 증가시키는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다.
추가 양태에서, 저장된 프로세서 실행가능 소프트웨어 명령들은 제 2 프로세서로 하여금, 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 제 2 프로세서의 주파수를 증가시키는 것이 제 2 프로세서의 주파수를 스텝들 단위로 증가시키는 것, 및 스케일링된 주파수에 기초하여 성능 보장 값을 업데이트하는 것, 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 게속 비지 상태에 있는지 여부를 결정하는 것, 및 제 2 프로세서가 결정된 워크량과 성능 보장 값의 합 이상인 주기 동안 계속 비지 상태에 있다고 결정될 때 제 2 프로세서의 주파수를 증가시키는 것의 동작들을 반복적으로 수행하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다.
추가 양태에서, 저장된 프로세서 실행가능 소프트웨어 명령들은 프로세서로 하여금, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 데드라인 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가 양태에서, 저장된 프로세서 실행가능 소프트웨어 명령들은 프로세서로 하여금, 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것이 버짓 값을 컴퓨팅하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가 양태에서, 저장된 프로세서 실행가능 소프트웨어 명령들은 프로세서로 하여금, 제 2 프로세서의 정상 상태 워크로드를 결정하는 것이 제 2 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함할 수도 있도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가 양태에서, 저장된 프로세서 실행가능 소프트웨어 명령들은 프로세서로 하여금, 비지 상태와 아이들 상태 간의 천이들을 샘플링함으로써 펄스열들을 생성하는 것을 포함하는 동작들을 수행하게 하도록 구성될 수도 있다.
추가 양태에서, 저장된 프로세서 실행가능 소프트웨어 명령들은 프로세서로 하여금, 제 2 프로세서의 정상 상태 워크로드를 결정하는 것, 제 2 프로세서 상에서 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 것, 및 제 2 프로세서에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들이 단일 스레드에 의해 수행되도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가 양태에서, 저장된 프로세서 실행가능 소프트웨어 명령들은 프로세서로 하여금, 단일 스레드가 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성될 수도 있다. 추가 양태에서, 저장된 프로세서 실행가능 소프트웨어 명령들은 프로세서로 하여금, 단일 스레드가 제 2 프로세서 상에서 실행되도록 하는 동작들을 수행하게 하도록 구성될 수도 있다.
다양한 양태들은 다수의 이익들을 제공하며, 랩톱들 및 성능, 전력 소비, 및/또는 응답성이 중요한 다른 모바일 디바이스들에서 구현될 수도 있다. 다양한 양태들은 약간 로딩된 머신들에 대한 에너지 및 냉각 비용들을 감소시키기 위해 서버 및 개인용 컴퓨터들에서 구현될 수도 있다. 열 출력을 감소시키는 것은 시스템 냉각 팬들이 스로틀 다운되거나 턴 오프되는 것을 허용하여, 노이즈 레벨들을 감소시키고, 또한 전력 소비를 감소시킨다. 다양한 양태들은 또한, 온도가 소정의 임계값에 도달할 때 불충분하게 냉각된 시스템들에서의 열을 감소시키는데 이용될 수도 있다.
다양한 양태들은 프로세싱 코어들에 관하여 예시적인 목적들을 위해 상기 설명되지만, 양태의 방법들, 시스템들, 및 실행가능 명령들은 방법들이 주파수 또는 전압의 인식 및 제어를 가능하게 하는 임의의 시스템에서 구현될 수도 있다. 게다가, 주파수 또는 전압을 스케일링하는 동작들이 임의의 단일 또는 멀티프로세서 시스템 상에서 수행될 수도 있다.
다양한 양태들은 일 예가 도 14 에 예시되는, 다양한 휴대용 또는 모바일 컴퓨팅 디바이스들에서 구현될 수도 있다. 휴대용 컴퓨팅 디바이스 (1400) 는 메모리 (1402) 에, 그리고 트랜시버 (1405) 에 커플링된 프로세싱 코어 (1401) 를 포함할 수도 있다. 트랜시버 (1405) 는 전자기 방사선을 전송 및 수신하기 위해 안테나 (1404) 에 커플링될 수도 있다. 휴대용 컴퓨팅 디바이스 (1400) 는 또한, 디스플레이 (1403) (예를 들어, 터치 스크린 디스플레이) 및 사용자 입력들을 수신하기 위한 메뉴 선택 버튼들 또는 록커 (rocker) 스위치들 (1406) 을 포함할 수도 있다. 일부 휴대용 컴퓨팅 디바이스에서, 무선 통신 기능들에 전용된 하나의 프로세서 및 다른 애플리케이션들을 실행하는데 전용된 하나의 프로세서와 같이 다수의 프로세서들 (1401) 이 제공될 수도 있다.
다양한 양태들은 또한, 도 15 에 예시된 서버 (1500) 와 같이, 다양한 상업적으로 입수가능한 서버 디바이스들 중 임의의 것 상에서 구현될 수도 있다. 이러한 서버 (1500) 는 통상적으로 프로세싱 코어 (1501) 를 포함하며, 하나 이상이 멀티코어 프로세서들이거나 멀티코어 프로세서들을 포함할 수도 있는 다수의 프로세서 시스템들 (1511, 1521, 1531) 을 포함할 수도 있다. 프로세싱 코어 (1501) 는 휘발성 메모리 (1502) 및 대용량 불휘발성 메모리, 이를 테면 디스크 드라이브 (1503) 에 커플링될 수도 있다. 서버 (1500) 는 또한, 프로세싱 코어 (1501) 에 커플링된 플로피 디스크 드라이브, 콤팩트 디스크 (CD) 또는 DVD 디스크 드라이브 (1506) 를 포함할 수도 있다. 서버 (1500) 는 또한, 다른 브로드캐스트 시스템 컴퓨터들 및 서버들에 커플링된 로컬 영역 네트워크와 같이, 네트워크 (1505) 와 데이터 접속들을 확립하기 위해 프로세싱 코어 (1501) 에 커플링된 네트워크 액세스 포트들 (1504) 을 포함할 수도 있다.
상기 설명된 양태들은 또한, 도 16 에 예시한 바와 같이 랩톱 컴퓨터 (1600) 와 같은 다양한 개인용 컴퓨팅 디바이스들 내에 구현될 수도 있다. 랩톱 컴퓨터 (1600) 는 휘발성 메모리 (1602) 및 대용량 불휘발성 메모리, 이를 테면 플래시 메모리의 디스크 드라이브 (1604) 에 커플링된 프로세싱 코어 (1601) 를 포함할 수도 있다. 컴퓨터 (1600) 는 또한, 프로세싱 코어 (1601) 에 커플링된 플로피 디스크 드라이브 (1606) 및 콤팩트 디스크 (CD) 드라이브 (1608) 를 포함할 수도 있다. 컴퓨터 디바이스 (1600) 는 또한, USB, FireWire®, 또는 Lightning® 커넥터 소켓들과 같이 데이터 접속들을 확립하거나 외부 메모리 디바이스들을 수신하기 위해 프로세싱 코어 (1601) 에 커플링된 다수의 커넥터 포트들, 또는 프로세싱 코어 (1601) 를 네트워크 또는 컴퓨터에 커플링하기 위한 다른 네트워크 접속 회로들을 포함할 수도 있다. 노트북 구성에서, 컴퓨터 하우징은 모두가 프로세싱 코어 (1601) 에 커플링된 터치패드 (1616), 키보드 (1618), 및 디스플레이 (1620) 를 포함한다. 컴퓨팅 디바이스의 다른 구성들은 널리 공지한 바와 같이 (예를 들어, USB 입력을 통해) 프로세서에 커플링된 컴퓨터 마우스 또는 트랙볼을 포함할 수도 있다.
프로세싱 코어 (1401, 1501, 1601) 는 소프트웨어 명령들 (애플리케이션들) 에 의해, 본 명세서에 설명된 다양한 양태들의 기능들 및 동작들을 포함하는 다양한 기능들을 수행하도록 구성될 수 있는 임의의 프로그램가능 프로세서, 마이크로프로세서, 마이크로컴퓨터, 멀티코어 프로세서, 또는 다수의 프로세서 칩일 수도 있다. 통상적으로, 소프트웨어 애플리케이션들은 프로세싱 코어 (1401, 1501, 1601) 에 액세스 및 로딩되기 전에 내부 메모리 (1402, 1502, 1602) 에 저장될 수도 있다. 각각의 프로세싱 코어 (1401, 1501, 1601) 는 애플리케이션 소프트웨어 명령들을 저장하는데 충분한 내부 메모리를 포함할 수도 있다. 일부 컴퓨팅 디바이스들에서, 추가적인 메모리 칩들 (예를 들어, SD (Secure Data) 카드) 이 컴퓨팅 디바이스에 플러깅되고 프로세싱 코어 (1401, 1501, 1601) 에 커플링될 수도 있다. 내부 메모리 (1402, 1502, 1602) 는 휘발성 또는 불휘발성 메모리, 이를 테면 플래시 메모리. 또는 양자의 혼합일 수도 있다. 이 설명의 목적들을 위해, 메모리에 대한 일반적인 언급은 내부 메모리 (1402), 모바일 디바이스에 플러깅된 착탈식 메모리, 및 프로세싱 코어 (1401) 내의 메모리를 포함하는, 프로세싱 코어 (1401, 1501, 1601) 에 의해 액세스가능한 모든 메모리를 나타낸다.
프로세싱 코어 (1401, 1501, 1601) 는 애플리케이션 소프트웨어 명령들을 저장하는데 충분한 내부 메모리를 포함할 수도 있다. 많은 디바이스들에서, 내부 메모리는 휘발성 또는 불휘발성 메모리, 이를 테면 플래시 메모리, 또는 양자의 혼합일 수도 있다. 이 설명의 목적들을 위해, 메모리에 대한 일반적인 언급은 내부 메모리 또는 디바이스에 플러깅된 착탈식 메모리 및 프로세싱 코어 (1401, 1501, 1601) 그 자체 내의 메모리를 포함하는, 프로세서 (1401, 1501, 1601) 에 의해 액세스가능한 메모리를 나타낸다.
단일 프로세싱 CPU 에 대해 설계된 성능 보장들은 통상 다수의 CPU들을 가로지른 스레드 이송 (migration) 을 설명하지 않는다. 이와 같이, 오퍼레이팅 시스템 스케줄러가 하나의 CPU 로부터 다른 CPU 로 스레드를 이송할 때, 과도 타이머가 다음의 CPU 에 대해 재시동될 수도 있으며, 이는 바람직하지 않은 성능 감소를 야기할 수도 있다. 이에 따라, 코어 마다의 성능 보장들 (예를 들어, 과도 데드라인들) 을 가진 DCVS 솔루션을 구현하는 멀티코어 프로세서 시스템에서, DCVS 솔루션은 오퍼레이팅 시스템 스케줄러가 하나의 코어로부터 다른 코어로 스레드들을 이동하는 것을 설명하는데 실패할 수도 있으며, 이 경우에 과도 데드라인 값은 의도 시 도달/히팅되지 않을 수도 있다. 이것은 시스템이 적절히 또는 충분히 성능 레벨 (예를 들어, CPU 주파수들, 주파수 임계값들 등) 을 상승시키지 않을 수도 있으며, 이는 시스템이 그 성능 요건들 (예를 들어, 컴퓨팅 디바이스의 전력 소비 및/또는 응답성 요건들 등) 을 충분히 충족하는데 실패하게 할 수도 있다.
다양한 양태들은 스케줄러가 그룹 내의 코어들 간에 스레드들을 이동할 때 과도 데드라인의 트리거링이 영향을 받지 않도록 코어들의 그룹들 내의 과도 데드라인들을 이용하는 시스템들, 디바이스들, 및 방법들을 포함할 수도 있다. 이들 양태들에서, 과도 데드라인은 여전히 초과되며 그룹 내의 모든 CPU들의 성능 레벨은 워크로드가 제 1 프로세싱 코어 (예를 들어, CPU0) 로부터 제 2 프로세싱 코어 (예를 들어, CPU1) 로 이동됨에도 불구하고 성능 요건들을 충족하기 위하여 상승될 것이다. 그 결과, 이들 양태들은 오퍼레이팅 시스템 스케줄러가 프로세싱 코어들 간에 스레드들을 이동시키는 동안에도, 잘 정의된 과도 QoS 가 멀티프로세서 시스템에서 유지되는 것을 보장하게 돕는다.
도 17 은 멀티코어 시스템에서 실행되는 스레드 또는 워크로드 (1702) 에 대한 코어 마다의 성능 보장들 (예를 들어, 과도 데드라인들) 을 설정하는 일 예시적인 DCVS 솔루션 방법 (1700) 을 예시한다. 도 17 에 예시된 예에서, 워크로드 (1702) 는 제 1 프로세싱 코어 (CPU0) 에서 실행을 시작할 때 제 1 프로세싱 코어 (CPU0) 상에서 20ms 과도 데드라인 (1704) 을 할당받는다. 이것은 워크로드 (1702) 가 실행을 시작한 20ms 후 또는 20ms 의 총 실행 시간 후 만료하도록 제 1 프로세싱 코어 (CPU0) 와 연관된 과도 타이머를 설정함으로써 달성될 수도 있다.
10ms 의 총 실행 시간 후, 오퍼레이팅 시스템 스케줄러는 워크로드 (1702) 를 제 1 프로세싱 코어 (CPU0) 로부터 제 2 프로세싱 코어 (CPU1) 로 이송하고, 워크로드 (1702) 는 제 2 프로세싱 코어 (CPU1) 상에서 새로운 20ms 과도 데드라인 (1706) 을 할당받는다. 이것은 워크로드 (1702) 가 제 2 프로세싱 코어 (CPU1) 로 전송된 20ms 후, 또는 30ms 의 총 실행 시간 후 만료하도록 제 2 프로세싱 코어 (CPU1) 와 연관된 과도 타이머를 설정함으로써 달성될 수도 있다.
도 17 에 예시된 DCVS 솔루션은 각각의 코어에 대해 개별적으로 성능 보장들 (예를 들어, 과도 데드라인들) 을 설정하기 때문에 (즉, 솔루션은 코어 마다의 성능 보장들을 이용한다), 워크로드 (1702) 는 워크로드 (1702) 를 위해 원래 의도되었을 수도 있는 바와 같이 20ms 의 총 실행 시간 후 과도 데드라인에 도달 또는 히팅하지 않는다. 그 결과, DCVS 솔루션은 적절히 또는 충분히 프로세싱 코어들 (예를 들어, CPU1) 의 성능 레벨 (예를 들어, CPU 주파수) 을 상승시키지 않을 수도 있으며, 이는 시스템으로 하여금, 그 성능 또는 전력 소비 요건들을 충분히 충족하는데 실패하게 할 수도 있다.
도 18 은 멀티코어 시스템에서 실행되는 스레드 또는 워크로드 (1702) 에 대한 그룹 기반 성능 보장들을 설정하는 일 양태의 DCVS 솔루션 방법 (1800) 을 예시한다. 도 17 에 예시된 예에서, 워크로드 (1702) 는 워크로드 (1702) 가 제 1 프로세싱 코어 (CPU0) 에서 실행을 시작할 때 제 1 및 제 2 프로세싱 코어들 (CPU0 및 CPU1) 을 포함하는 프로세싱 그룹에 대해 20ms 과도 데드라인 (1804) 을 할당받는다. 이것은 워크로드 (1702) 가 실행을 시작한 20ms 후, 또는 20ms 의 총 실행 시간 후 만료하도록 제 1 및 제 2 프로세싱 코어들 (CPU0 및 CPU1) 양자와 연관된 과도 타이머를 설정함으로써 달성될 수도 있다. 워크로드 (1702) 가 오퍼레이팅 시스템 스케줄러에 의해 제 1 프로세싱 코어 (CPU0) 로부터 제 2 프로세싱 코어 (CPU1) 로 전송될 때, 워크로드 (1702) 는 여전히 그 그룹에 대해 설정된 20ms 과도 데드라인 (1804) 에 의해 제한된다.
도 19 는 멀티프로세서 시스템에서 그룹 기반 성능 보장을 설정 및 시행하는 일 양태의 DCVS 솔루션 방법 (1900) 을 예시한다. 블록 1902 에서, DCVS 솔루션은 스케줄링된 태스크들에 기초하여 예측된 정상 상태 워크로드를 컴퓨팅할 수도 있다. 블록 1904 에서, DCVS 솔루션은 프로세싱 코어에 대한 다양한 성능 요건들, 이를 테면 컴퓨팅 디바이스의 전력 소비 및/또는 응답성 요건들을 충족하기 위한 주파수 임계값들을 컴퓨팅할 수도 있다. 성능 요건들 (예를 들어, 주파수 임계값들 등) 은 정상 상태 워크로드, 이력 정보 (예를 들어, 비지 상태에서 이전에 소비된 시간량 등), 프로세서 특성들, 응답성 요건들 등에 기초하여 결정될 수도 있다.
블록 1906 에서, DCVS 솔루션은 제 1 및 제 2 프로세싱 코어를 포함하는 프로세싱 그룹에 대한 성능 보장 값 (예를 들어, 데드라인 값, 버짓 값, 점프-투-맥스 값 등) 을 컴퓨팅할 수도 있다. 일 양태에서, 블록 1906 에서, DCVS 솔루션은 제 1 프로세싱 코어에 대한 성능 보장 값들을 컴퓨팅하고, 컴퓨팅된 값들을 제 1 및 제 2 프로세싱 코어 양자를 포함하는 그룹에 할당할 수도 있다. 다른 양태에서, 블록 1906 에서, DCVS 솔루션은 제 1 및 제 2 프로세싱 코어들의 조합에 대한 성능 보장 값들을 컴퓨팅하고, 컴퓨팅된 값들을 제 1 및 제 2 프로세싱 코어 양자를 포함하는 그룹에 할당할 수도 있다.
블록 1908 에서, DCVS 솔루션은 다양한 성능 요건들을 충족하면서 제 1 프로세싱 코어가 정상 상태 워크로드에서의 모든 태스크들을 완료하는데 필요한 시간 또는 워크의 양 (예를 들어, CPU 사이클들, 명령들 등) 을 컴퓨팅할 수도 있다. 블록 1910 에서, DCVS 솔루션은 제 1 프로세싱 코어가 컴퓨팅된 초기 동작 주파수/전압에서 (또는 컴퓨팅된 임계값들 내에서) 실행되고 및/또는 다양한 디바이스 또는 시스템 요건들을 충족하도록 제 1 프로세싱 코어를 아이들 상태로부터 비지 상태로 천이시킬 수도 있다. 블록 1912 에서, DCVS 솔루션은 제 1 프로세싱 코어의 실제 워크로드 및/또는 동작 주파수를 모니터링하고 필요 시 (예를 들어, 디폴트 클록 및 전압 스케일링 알고리즘에 따라) 주파수/전압을 조정할 수도 있다. 옵션의 블록 1914 에서, DCVS 솔루션은 제 1 프로세싱 코어의 현재 동작 주파수/전압에 기초하여 그룹에 대한 성능 보장 값들을 업데이트할 수도 있다.
결정 블록 1916 에서, DCVS 솔루션은 제 1 및 제 2 프로세서들이 결정된 시간량 (즉, 프로세싱 코어가 예측된 정상 상태 워크로드에서의 모든 태스크들을 완료하는데 필요할 것으로 결정된 시간/워크량) 과 성능 보장 값의 합 이상인 결합 주기 (combined period) 동안, 예측된 정상 상태 워크로드 또는 스레드에 대하여, 계속 비지 상태에 있는지 여부를 결정하는 것을 포함할 수도 있다. DCVS 솔루션이 프로세싱 코어들이 컴퓨팅된 시간/워크보다 더 오래 계속 비지 상태에 있지 않다고 결정할 때 (즉, 결정 블록 1916 = "아니오"), 블록 1912 에서, DCVS 솔루션은 실제 워크로드/주파수를 모니터링하고 필요 시 조정들을 행하는 것을 계속할 수도 있다.
CVS 솔루션이 제 1 및 제 2 프로세서들이 결정된 워크량과 성능 보장 값의 합 이상인 결합 주기 동안 (예를 들어, 예측된 정상 상태 워크로드 또는 스레드에 대하여) 계속 비지 상태에 있다고 결정할 때 (즉, 결정 단계 1916 = "예"), 블록 1918 에서, DCVS 솔루션은 제 1 또는 제 2 프로세싱 코어들의 동작 주파수/전압을 증가시킬 수도 있다. 다양한 양태들에서, 제 1 또는 제 2 프로세싱 코어의 동작 주파수/전압은 최대 프로세서 주파수로 증가되거나, 스텝들 단위로 증가될 수도 있다.
다양한 양태들은 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법들을 포함하며, 그 방법들은 제 1 프로세서의 정상 상태 워크로드를 결정하는 단계, 제 1 프로세서 상에서 결정된 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 단계, 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 단계, 제 1 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 단계, 제 1 프로세서의 실제 워크로드에 기초하여 제 1 프로세서의 주파수를 스케일링하기 위해 동적 클록 및 전압 스케일링 동작들을 수행하는 단계, 제 1 및 제 2 프로세서들이 결정된 워크량과 성능 보장 값의 합 이상인 결합 주기 동안 계속 비지 상태에 있는지 여부를 결정하는 단계, 및 제 1 및 제 2 프로세서들이 결정된 워크량과 성능 보장 값의 합 이상인 결합 주기 동안 계속 비지 상태에 있다고 결정될 때 제 1 및 제 2 프로세서들 중 하나의 프로세서의 주파수를 증가시키는 단계를 포함한다.
추가 양태들은 상기 논의된 방법들에 대응하는 다양한 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성된 하나 이상의 프로세서들을 갖는 컴퓨팅 디바이스를 포함할 수도 있다.
추가 양태들은 상기 논의된 방법 동작들에 대응하는 기능들을 수행하는 다양한 수단을 갖는 컴퓨팅 디바이스를 포함할 수도 있다.
추가 양태들은 프로세서로 하여금, 상기 논의된 방법 동작들에 대응하는 다양한 동작들을 수행하게 하도록 구성된 프로세서 실행가능 명령들을 저장한 비일시적인 프로세서 판독가능 저장 매체를 포함할 수도 있다.
전술한 방법 설명들 및 프로세스 플로우 다이어그램들은 단지 예시적인 예들로서 제공될 뿐이며 다양한 양태들의 단계들이 제시된 순서로 수행되어야 한다는 것을 요구하거나 의미하도록 의도되지 않는다. 당업자가 인정할 바와 같이, 전술한 양태들에서의 단계들의 순서는 임의의 순서로 수행될 수도 있다. "그 후", "그리고 나서", "다음에", 등과 같은 단어들은 단계들의 순서를 제한하도록 의도되지 않고; 이들 단어들은 단순히 방법들의 설명을 통하여 독자를 안내하는데 이용된다. 게다가, 예를 들어, 관사들 "a", "an" 또는 "the" 를 이용한, 단수의 청구항 엘리먼트들에 대한 임의의 언급이 그 엘리먼트를 단수로 제한하는 것으로 해석되지 않을 것이다.
본 명세서에 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로서 구현될 수도 있다. 하드웨어와 소프트웨어의 이 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그들의 기능성의 관점에서 일반적으로 상기 설명되었다. 이러한 기능성이 하드웨어로서 구현되는지 소프트웨어로서 구현되는지 여부는 전체 시스템에 부과된 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자는 각각의 특정 애플리케이션에 대해 다양한 방식들로 설명된 기능성을 구현할 수도 있지만, 이러한 구현 결정들이 본 발명의 범위로부터 벗어남을 야기하는 것으로 해석되지 않아야 한다.
본 명세서에 개시된 양태들과 관련하여 설명된 다양한 예시적인 로직들, 논리 블록들, 모듈들, 및 회로들을 구현하는데 이용된 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA) 또는 다른 프로그램가능 로직 디바이스, 별개의 게이트 또는 트랜지스터 로직, 별개의 하드웨어 컴포넌트들, 또는 본 명세서에 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 멀티프로세서일 수도 있지만, 대안에서, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 와 멀티프로세서의 조합, 복수의 멀티프로세서들, DSP 코어와 결합된 하나 이상의 멀티프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다. 대안으로, 일부 단계들 또는 방법들은 소정의 기능에 특정된 회로부에 의해 수행될 수도 있다.
하나 이상의 예시적인 양태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현되면, 그 기능들은 비일시적인 컴퓨터 판독가능 저장 매체 상에 하나 이상의 프로세서 실행가능 명령들 또는 코드로서 저장될 수도 있다. 본 명세서에 개시된 방법 또는 알고리즘의 단계들은 유형의 또는 비일시적인 컴퓨터 판독가능 저장 매체 상에 상주할 수도 있는 프로세서 실행가능 소프트웨어 모듈에서 구현될 수도 있다. 비일시적인 컴퓨터 판독가능 저장 매체들은 컴퓨터에 의해 액세스될 수도 있는 임의의 이용가능한 저장 매체들일 수도 있다. 제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장, 자기 디스크 저장 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 운반 또는 저장하는데 이용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 디스크 (disk) 및 디스크 (disc) 는 본 명세서에 사용한 바와 같이, 콤팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크, 및 블루 레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생시키는 한편, 디스크 (disc) 들은 레이저를 이용하여 데이터를 광학적으로 재생시킨다. 상기의 조합들이 또한 비일시적인 컴퓨터 판독가능 매체들의 범위 내에 포함될 수 있다. 추가적으로, 방법 또는 알고리즘의 동작들은 하나 또는 임의의 조합 또는 세트의 코드들 및/또는 명령들로서 비일시적인 머신 판독가능 매체 및/또는 비일시적인 컴퓨터 판독가능 매체 상에 상주할 수도 있으며, 이는 컴퓨터 프로그램 제품에 통합될 수도 있다.
개시된 양태들의 전술한 설명은 임의의 당업자로 하여금 본 발명을 실시 또는 이용하는 것을 가능하게 하기 위해 제공된다. 이들 양태들에 대한 다양한 변경들은 당업자에게 쉽게 명백할 것이며, 본 명세서에 정의된 일반적인 원리들은 본 발명의 사상 또는 범위로부터 벗어남 없이 다른 양태들에 적용될 수도 있다. 따라서, 본 발명은 본 명세서에 도시된 양태들에 제한되도록 의도되지 않고 다음의 청구항들 및 본 명세서에 개시된 원리들 및 신규한 특징들에 부합하는 최광의 범위를 따르게 될 것이다.
Claims (40)
- 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법으로서,
제 1 프로세서의 정상 상태 워크로드를 결정하는 단계;
상기 제 1 프로세서 상에서 결정된 상기 정상 상태 워크로드를 수행하는데 필요한 시간인 워크량을 결정하는 단계;
상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 단계;
상기 제 1 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 단계;
상기 제 1 프로세서의 실제 워크로드에 기초하여 상기 제 1 프로세서의 주파수를 스케일링하기 위해 동적 클록 및 전압 스케일링 동작들을 수행하는 단계;
결정된 상기 워크량과 상기 성능 보장 값의 합 이상인 결합 주기 (combined period) 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있는지 여부를 결정하는 단계; 및
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 단계를 포함하는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 제 1 항에 있어서,
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 단계는 :
상기 제 1 프로세서 또는 상기 제 2 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 단계를 포함하는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 제 1 항에 있어서,
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 단계는, 상기 제 1 프로세서 또는 상기 제 2 프로세서의 상기 주파수를 스텝들 단위로 (in steps) 증가시키는 단계를 포함하며,
상기 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법은 :
스케일링된 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 단계;
결정된 상기 워크량과 상기 성능 보장 값의 합 이상인 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있는지 여부를 결정하는 단계; 및
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 단계
의 동작들을 반복적으로 수행하는 단계를 더 포함하는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 제 1 항에 있어서,
상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 단계는, 데드라인 값을 컴퓨팅하는 단계를 포함하는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 제 1 항에 있어서,
상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 단계는, 버짓 값 (budget value) 을 컴퓨팅하는 단계를 포함하는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 제 1 항에 있어서,
상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 단계는, 상기 제 1 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 단계를 포함하는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 제 1 항에 있어서,
비지 상태와 아이들 상태 간의 천이들을 샘플링함으로써 펄스열 (pulse train) 들을 생성하는 단계를 더 포함하는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 제 1 항에 있어서,
상기 제 1 프로세서의 정상 상태 워크로드를 결정하는 단계, 상기 제 1 프로세서 상에서 상기 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 단계, 및 상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 단계의 동작들은 단일 스레드에 의해 수행되는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 제 8 항에 있어서,
상기 단일 스레드는 상기 제 1 프로세서 상에서 실행되는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 제 8 항에 있어서,
상기 단일 스레드는 상기 컴퓨팅 디바이스의 상기 제 2 프로세서 상에서 실행되는, 다수의 프로세서들을 갖는 컴퓨팅 디바이스에 대한 성능을 향상시키는 방법. - 컴퓨팅 디바이스로서,
제 1 프로세서;
제 2 프로세서;
상기 제 1 프로세서의 정상 상태 워크로드를 결정하는 수단;
상기 제 1 프로세서 상에서 결정된 상기 정상 상태 워크로드를 수행하는데 필요한 시간인 워크량을 결정하는 수단;
상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 수단;
상기 제 1 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 수단;
상기 제 1 프로세서의 실제 워크로드에 기초하여 상기 제 1 프로세서의 주파수를 스케일링하기 위해 동적 클록 및 전압 스케일링 동작들을 수행하는 수단;
결정된 상기 워크량과 상기 성능 보장 값의 합 이상인 결합 주기 (combined period) 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있는지 여부를 결정하는 수단; 및
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 수단을 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 수단은 :
상기 제 1 프로세서 또는 상기 제 2 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 수단을 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 수단은, 상기 제 1 프로세서 또는 상기 제 2 프로세서의 상기 주파수를 스텝들 단위로 (in steps) 증가시키는 수단을 포함하며,
상기 컴퓨팅 디바이스는 :
스케일링된 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
결정된 상기 워크량과 상기 성능 보장 값의 합 이상인 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있는지 여부를 결정하는 것; 및
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 것
의 동작들을 반복적으로 수행하는 수단을 더 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 수단은, 데드라인 값을 컴퓨팅하는 수단을 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 수단은, 버짓 값 (budget value) 을 컴퓨팅하는 수단을 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 수단은, 상기 제 1 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 수단을 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
비지 상태와 아이들 상태 간의 천이들을 샘플링함으로써 펄스열 (pulse train) 들을 생성하는 수단을 더 포함하는, 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 제 1 프로세서의 상기 정상 상태 워크로드를 결정하는 것, 상기 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 것, 및 상기 성능 보장 값을 컴퓨팅하는 것의 동작들을 단일 스레드를 통해 달성하는 수단을 더 포함하는, 컴퓨팅 디바이스. - 제 18 항에 있어서,
상기 제 1 프로세서 상에서 상기 단일 스레드를 실행하는 수단을 더 포함하는, 컴퓨팅 디바이스. - 제 18 항에 있어서,
상기 컴퓨팅 디바이스의 상기 제 2 프로세서 상에서 상기 단일 스레드를 실행하는 수단을 더 포함하는, 컴퓨팅 디바이스. - 컴퓨팅 디바이스로서,
제 1 프로세서;
제 2 프로세서; 및
프라이머리 프로세서를 포함하며,
상기 프라이머리 프로세서는 :
상기 제 1 프로세서의 정상 상태 워크로드를 결정하는 것;
상기 제 1 프로세서 상에서 결정된 상기 정상 상태 워크로드를 수행하는데 필요한 시간인 워크량을 결정하는 것;
상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것;
상기 제 1 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것;
상기 제 1 프로세서의 실제 워크로드에 기초하여 상기 제 1 프로세서의 주파수를 스케일링하기 위해 동적 클록 및 전압 스케일링 동작들을 수행하는 것;
결정된 상기 워크량과 상기 성능 보장 값의 합 이상인 결합 주기 (combined period) 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있는지 여부를 결정하는 것; 및
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 것
을 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 프라이머리 프로세서는, 결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 것이 :
상기 제 1 프로세서 또는 상기 제 2 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 것
을 포함하도록 하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 프라이머리 프로세서는, 결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 것이, 상기 제 1 프로세서 또는 상기 제 2 프로세서의 상기 주파수를 스텝들 단위로 (in steps) 증가시키는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되며,
상기 프라이머리 프로세서는 :
스케일링된 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
결정된 상기 워크량과 상기 성능 보장 값의 합 이상인 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있는지 여부를 결정하는 것; 및
결정된 상기 워크량과 상기 성능 보장의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 것
의 동작들을 반복적으로 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 프라이머리 프로세서는, 상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것이, 데드라인 값을 컴퓨팅하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 프라이머리 프로세서는, 상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것이, 버짓 값 (budget value) 을 컴퓨팅하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 프라이머리 프로세서는, 상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것이, 상기 제 1 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 프라이머리 프로세서는 :
비지 상태와 아이들 상태 간의 천이들을 샘플링함으로써 펄스열 (pulse train) 들을 생성하는 것
을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 프라이머리 프로세서는, 상기 제 1 프로세서의 정상 상태 워크로드를 결정하는 것, 상기 제 1 프로세서 상에서 상기 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 것, 및 상기 제 1 프로세서 및 상기 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들이 단일 스레드에 의해 수행되도록 하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스. - 제 28 항에 있어서,
상기 제 1 프로세서는 상기 프라이머리 프로세서인, 컴퓨팅 디바이스. - 제 28 항에 있어서,
상기 제 2 프로세서는 상기 프라이머리 프로세서인, 컴퓨팅 디바이스. - 프로세서 실행가능 소프트웨어 명령들을 저장한 비일시적인 컴퓨터 판독가능 저장 매체로서,
상기 프로세서 실행가능 소프트웨어 명령들은, 프라이머리 프로세서로 하여금 :
제 1 프로세서의 정상 상태 워크로드를 결정하는 것;
상기 제 1 프로세서 상에서 결정된 상기 정상 상태 워크로드를 수행하는데 필요한 시간인 워크량을 결정하는 것;
상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것;
상기 제 1 프로세서를 아이들 상태로부터 비지 상태로 천이시키는 것;
상기 제 1 프로세서의 실제 워크로드에 기초하여 상기 제 1 프로세서의 주파수를 스케일링하기 위해 동적 클록 및 전압 스케일링 동작들을 수행하는 것;
결정된 상기 워크량과 상기 성능 보장 값의 합 이상인 결합 주기 (combined period) 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있는지 여부를 결정하는 것; 및
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 것
을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 상기 프라이머리 프로세서로 하여금, 결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 것이 :
상기 제 1 프로세서 또는 상기 제 2 프로세서의 상기 주파수를 최대 프로세서 주파수로 증가시키는 것
을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 상기 프라이머리 프로세서로 하여금, 결정된 상기 워크량과 상기 성능 보장 값의 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 것이, 상기 제 1 프로세서 또는 상기 제 2 프로세서의 상기 주파수를 스텝들 단위로 (in steps) 증가시키는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되며,
저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 상기 프라이머리 프로세서로 하여금 :
스케일링된 주파수에 기초하여 상기 성능 보장 값을 업데이트하는 것;
결정된 상기 워크량과 상기 성능 보장 값의 합 이상인 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있는지 여부를 결정하는 것; 및
결정된 상기 워크량과 상기 성능 보장 값의 상기 합 이상인 상기 결합 주기 동안 상기 제 1 프로세서 및 상기 제 2 프로세서가 계속 상기 비지 상태에 있다고 결정될 때 상기 제 1 프로세서 및 상기 제 2 프로세서 중 하나의 프로세서의 주파수를 증가시키는 것
의 동작들을 반복적으로 수행하게 하도록 구성되는, 비일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 상기 프라이머리 프로세서로 하여금, 상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것이, 데드라인 값을 컴퓨팅하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 상기 프라이머리 프로세서로 하여금, 상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것이, 버짓 값 (budget value) 을 컴퓨팅하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 상기 프라이머리 프로세서로 하여금, 상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것이, 상기 제 1 프로세서 상에서 실행하도록 스케줄링된 태스크들의 요건들을 결정하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 상기 프라이머리 프로세서로 하여금 :
비지 상태와 아이들 상태 간의 천이들을 샘플링함으로써 펄스열 (pulse train) 들을 생성하는 것
을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적인 컴퓨터 판독가능 저장 매체. - 제 31 항에 있어서,
저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 상기 프라이머리 프로세서로 하여금, 상기 제 1 프로세서의 정상 상태 워크로드를 결정하는 것, 상기 제 1 프로세서 상에서 상기 정상 상태 워크로드를 수행하는데 필요한 워크량을 결정하는 것, 및 상기 제 1 프로세서 및 제 2 프로세서를 포함하는 프로세싱 그룹에 대한 성능 보장 값을 컴퓨팅하는 것의 동작들이 단일 스레드에 의해 수행되도록 하는 동작들을 수행하게 하도록 구성되는, 비일시적인 컴퓨터 판독가능 저장 매체. - 제 38 항에 있어서,
상기 제 1 프로세서는 상기 프라이머리 프로세서인, 비일시적인 컴퓨터 판독가능 저장 매체. - 제 38 항에 있어서,
상기 제 2 프로세서는 상기 프라이머리 프로세서인, 비일시적인 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/759,709 | 2013-02-05 | ||
US13/759,709 US9176572B2 (en) | 2009-12-16 | 2013-02-05 | System and method for controlling central processing unit power with guaranteed transient deadlines |
PCT/US2013/061649 WO2014123587A1 (en) | 2013-02-05 | 2013-09-25 | System and method for controlling central processing unit power with guaranteed transient deadlines |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150114969A KR20150114969A (ko) | 2015-10-13 |
KR101659705B1 true KR101659705B1 (ko) | 2016-09-26 |
Family
ID=49382574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157022977A KR101659705B1 (ko) | 2013-02-05 | 2013-09-25 | 보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP2954385A1 (ko) |
JP (1) | JP5982588B2 (ko) |
KR (1) | KR101659705B1 (ko) |
CN (1) | CN104969142B (ko) |
WO (1) | WO2014123587A1 (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160224053A1 (en) * | 2015-01-30 | 2016-08-04 | Qualcomm Incorporated | Timer-based processing unit operational scaling employing timer resetting on idle process scheduling |
US9886081B2 (en) | 2015-09-16 | 2018-02-06 | Qualcomm Incorporated | Managing power-down modes |
US10255106B2 (en) | 2016-01-27 | 2019-04-09 | Qualcomm Incorporated | Prediction-based power management strategy for GPU compute workloads |
US10331195B2 (en) * | 2016-06-06 | 2019-06-25 | Qualcomm Incorporated | Power and performance aware memory-controller voting mechanism |
US10649518B2 (en) * | 2017-01-26 | 2020-05-12 | Ati Technologies Ulc | Adaptive power control loop |
CN109426329A (zh) * | 2017-08-30 | 2019-03-05 | 比亚迪股份有限公司 | 片上系统及其时钟频率动态控制方法和装置 |
CN109417594A (zh) * | 2017-11-29 | 2019-03-01 | 深圳市大疆创新科技有限公司 | 图像处理方法、拍摄设备、无人机及地面端设备 |
CN113031736A (zh) | 2019-12-09 | 2021-06-25 | 华为技术有限公司 | 一种电压调节方法和电子设备 |
US11449125B1 (en) * | 2021-04-01 | 2022-09-20 | Qualcomm Incorporated | Adaptive dynamic clock and voltage scaling |
CN114785376B (zh) * | 2022-05-06 | 2023-07-21 | Oppo广东移动通信有限公司 | 频压预配置方法和相关装置 |
JPWO2023238276A1 (ko) * | 2022-06-08 | 2023-12-14 | ||
US20240111560A1 (en) * | 2022-09-30 | 2024-04-04 | Subhankar Panda | Workload linked performance scaling for servers |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20110145824A1 (en) * | 2009-12-16 | 2011-06-16 | Thomson Steven S | System and method for controlling central processing unit power with reduced frequency oscillations |
US20110145617A1 (en) * | 2009-12-16 | 2011-06-16 | Thomson Steven S | System and method for controlling central processing unit power with guaranteed transient deadlines |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7917789B2 (en) * | 2007-09-28 | 2011-03-29 | Intel Corporation | System and method for selecting optimal processor performance levels by using processor hardware feedback mechanisms |
US9519300B2 (en) * | 2007-12-20 | 2016-12-13 | Ken Tsz Kin Mok | Reducing cross-regulation interferences between voltage regulators |
JP5547718B2 (ja) * | 2008-05-13 | 2014-07-16 | スイノプスイス インコーポレーテッド | 電源マネージャ及び電源管理方法 |
EP2657840A4 (en) * | 2010-12-22 | 2016-09-28 | Fujitsu Ltd | MULTIC UR PROCESSOR SYSTEM AND POWER CONTROL METHOD |
-
2013
- 2013-09-25 EP EP13777365.1A patent/EP2954385A1/en not_active Withdrawn
- 2013-09-25 JP JP2015555992A patent/JP5982588B2/ja active Active
- 2013-09-25 CN CN201380072130.XA patent/CN104969142B/zh active Active
- 2013-09-25 WO PCT/US2013/061649 patent/WO2014123587A1/en active Application Filing
- 2013-09-25 KR KR1020157022977A patent/KR101659705B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20110145824A1 (en) * | 2009-12-16 | 2011-06-16 | Thomson Steven S | System and method for controlling central processing unit power with reduced frequency oscillations |
US20110145617A1 (en) * | 2009-12-16 | 2011-06-16 | Thomson Steven S | System and method for controlling central processing unit power with guaranteed transient deadlines |
Also Published As
Publication number | Publication date |
---|---|
JP5982588B2 (ja) | 2016-08-31 |
EP2954385A1 (en) | 2015-12-16 |
KR20150114969A (ko) | 2015-10-13 |
CN104969142A (zh) | 2015-10-07 |
CN104969142B (zh) | 2017-09-19 |
JP2016511880A (ja) | 2016-04-21 |
WO2014123587A1 (en) | 2014-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101659705B1 (ko) | 보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법 | |
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 | |
KR101409034B1 (ko) | 보장된 과도 데드라인을 가진 중앙 처리 장치 전력을 제어하는 시스템 및 방법 | |
KR101409055B1 (ko) | 추론된 작업부하 병렬성에 기초하여 중앙 처리 장치 전력을 제어하는 시스템 및 방법 | |
JP5601731B2 (ja) | プロセッサを動的に制御するシステムおよび方法 | |
US9921635B2 (en) | Dynamic and adaptive sleep state management | |
JP5605960B2 (ja) | 周波数変動を低減させて中央処理装置電力を制御するためのシステムおよび方法 | |
KR101516859B1 (ko) | 보장된 정상 상태 데드라인을 가진 중앙 처리 장치 전력을 제어하는 시스템 및 방법 | |
KR101578336B1 (ko) | 보장된 과도 데드라인들로 중앙 프로세싱 유닛 전력을 제어하기 위한 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated 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: 20190624 Year of fee payment: 4 |