KR20120046232A - 성능 민감도에 따른 연산 유닛들의 차별적 성능 변경 - Google Patents

성능 민감도에 따른 연산 유닛들의 차별적 성능 변경 Download PDF

Info

Publication number
KR20120046232A
KR20120046232A KR1020127003135A KR20127003135A KR20120046232A KR 20120046232 A KR20120046232 A KR 20120046232A KR 1020127003135 A KR1020127003135 A KR 1020127003135A KR 20127003135 A KR20127003135 A KR 20127003135A KR 20120046232 A KR20120046232 A KR 20120046232A
Authority
KR
South Korea
Prior art keywords
performance
power
computing units
cores
group
Prior art date
Application number
KR1020127003135A
Other languages
English (en)
Inventor
세바스티앙 누스바움
알렉산더 브래노버
존 칼라마티오노스
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/508,935 external-priority patent/US8443209B2/en
Priority claimed from US12/508,929 external-priority patent/US8447994B2/en
Priority claimed from US12/508,902 external-priority patent/US20110022356A1/en
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20120046232A publication Critical patent/KR20120046232A/ko

Links

Images

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Saccharide Compounds (AREA)
  • Steroid Compounds (AREA)

Abstract

컴퓨터 시스템의 하나 이상의 연산 유닛들 중 어느 것이 다른 연산 유닛들보다 높은 성능 민감도를 가지는지에 따라 하나 이상의 연산 유닛들이 성능의 측면에서 선택적으로 변경된다.

Description

성능 민감도에 따른 연산 유닛들의 차별적 성능 변경{ALTERING PERFORMANCE OF COMPUTATIONAL UNITS HETEROGENEOUSLY ACCORDING TO PERFORMANCE SENSITIVITY}
본 발명은 컴퓨터 시스템에 있어서 전력 할당에 관한 것이며 더욱 상세하게는 성능을 개선하도록 전력을 할당하는 것에 관한 것이다.
프로세서들은 전력 소비와 작업부하 요구조건들을 매칭시키려는 노력으로 다양한 성능 레벨들에서 동작한다. 성능 레벨들은 전형적으로 프로세서에 의해 사용되는 전압/주파수 조합들에 의해 결정된다. 프로세서들이 다중 코어들 및 다른 기능들을 갖추며 더욱더 고도로 집적되면서, 전력 및 열적 고려사항들이 상당한 중요성을 가진다.
개선된 성능을 제공하기 위하여, 한 실시예는 예컨대 주파수 변화로부터 발생되는 실행 능력의 변화에 대한 연산 유닛의 성능 민감도와 시스템에서 이용가능한 전력 헤드룸(일정한 전력 엔벨롭 내에서 시스템 성능을 개선하기 위함)을 기반으로 프로세싱 코어들 및 그래픽 처리 유닛들과 같은 연산 유닛들 상에서 실행되는 작업부하의 분석을 가능하게 한다.
이에 따라, 한 실시예에서, 복수의 연산 유닛들을 포함하는 컴퓨터 시스템의 동작 방법이 제공된다. 상기 방법은 연산 유닛들의 각각의 성능 민감도에 따라 하나 이상의 연산 유닛들의 성능을 변경하는 것을 포함한다. 상기 방법은 하나 이상의 연산 유닛들 중 어느 것이 다른 연산 유닛들보다 더 높은 성능 민감도를 가지는지에 따라 하나 이상의 연산 유닛들의 성능을 변경하는 것을 포함할 수 있다. 한 실시예에서, 연산 유닛들은 프로세싱 코어들의 그룹을 포함하고, 상기 방법은 만일 프로세싱 코어들의 그룹의 성능을 부스트했을 때의 예상 전력 마진이 0보다 작으면, 더 작은 그룹을 형성하도록 상기 그룹에서 다른 것들보다 낮은 성능 민감도를 갖는 코어를 상기 그룹으로부터 제거하는 것과; 그리고 새로운 예상 전력 마진을 계산하고 상기 더 작은 그룹의 코어들의 성능이 부스트되면 상기 새로운 예상 전력 마진이 0보다 큰지를 판별하는 것을 더 포함한다. 만일 상기 새로운 예상 전력 마진이 0보다 크다면, 상기 더 작은 그룹의 코어들의 성능이 부스트된다. 상기 더 작은 그룹의 코어들은 적어도 이들 코어들에 공급되고 있는 클록 신호의 주파수를 증가시킴으로써 부스트될 수 있다.
연산 유닛들의 각각의 성능 민감도는 제1 및 제2 성능 레벨들에서 결정되는 각각의 연산 유닛들의 제1 및 제2 성능 메트릭들에 따라 결정될 수 있다.
또 다른 실시예에서, 복수의 연산 유닛들을 포함하는 장치가 제공된다. 상기 장치는 연산 유닛들에 대한 각각의 성능 민감도를 저장하는 저장부를 더 포함한다. 전력 할당 기능부가 하드웨어, 펌웨어, 및/또는 소프트웨어로 구현되며, 성능 민감도들에 따라 연산 유닛들 중 하나 이상의 성능을 부스트한다.
전력 할당 기능부는 연산 유닛들 중 어느 것들이 상기 연산 유닛들 중 다른 것들보다 높은 성능 민감도를 가지는지에 응답한다.
전력 할당 기능부는 연산 유닛들의 각각의 성능 민감도를 임계값과 비교하고 상기 임계값보다 높은 성능 민감도를 가지는 연산 유닛들을 부스트하도록 구성될 수 있다.
전력 할당 기능부는 또한 예상 전력 마진이 한 그룹의 코어들 모두를 부스트된 성능 상태로 부스트하기에 충분하지 않는 것에 응답하여 상기 그룹의 연산 유닛들로부터 하나 이상의 연산 유닛들을 제거하고, 새로운 예상 전력 마진을 재계산할 수 있고, 상기 제거는 상기 그룹의 하나 이상의 연산 유닛들이 상기 그룹의 다른 연산 유닛들보다 낮은 성능 민감도를 가지는 것에 따라 결정되고, 상기 제거와 재계산은 상기 새로운 예상 전력 마진이 0보다 커서 남아있는 연산 유닛들의 성능을 부스트할 수 있는 만큼 될 때까지 반복된다.
본 발명은 첨부된 도면들을 참조함으로써 더욱 잘 이해될 수 있으며 본 발명의 여러 목적들, 특징들, 및 장점들도 본 발명이 속하는 기술 분야의 통상의 기술자들에게 명백하게 될 것이다.
도 1은 본 발명의 한 실시예에 따라 예시적인 시스템-온-칩(SOC) 시스템의 상위 레벨 블록도를 도시한 것이다.
도 2는 본 발명의 한 실시예에 따라 코어 주파수 변화에 대한 성능 민감도를 프로파일링하기 위한 상위 레벨 순서도를 예시한 것이다.
도 3은 시스템 블록도 레벨에서 주파수 연습(frequency training)을 예시한 것이다.
도 4는 주파수 연습의 추가 양상들을 예시한 것이다.
도 5는 본 발명의 한 실시예에 따라 전력 재할당의 예시적인 순서도를 예시한 것이다.
도 6은 주파수 민감도에 따라 연산 유닛들의 속도를 조절하기 위한 예시적인 순서도를 예시한 것이다.
서로 다른 도면들에서 동일한 참조 부호들을 사용하는 것은 유사하거나 일치하는 항목들임을 가리킨다.
프로세서 집적 회로가 열 설계점(thermal design point, TDP) 아래에서 동작하고 있을 때, 기회주의적으로 다중 코어 프로세서들 상의 CPU 코어들의 성능 레벨을 상승시키는(예컨대, 주파수를 상승시키는) 여러 방법들이 제안되어 왔다. 집적 회로가 동작하는 실제 열점(thermal point)은 열 측정, 스위칭 거동의 측정, 또는 전류의 측정에 의해 결정될 수 있다. 이러한 접근법들은 정해진 TDP 하에서 추정된 전력, 전류, 또는 열에 대해 헤드룸(headroom)이 있을 때 성능을 개선하기 위해 CPU 코어들의 동작 주파수가 함께 상승될 수 있도록 하고, 동작이 그 한계를 초과하고 있을 때 CPU 코어들의 동작 주파수가 감소될 수 있도록 한다. 이러한 접근법들은 모든 동작중인 CPU 코어들의 주파수가 조율된 방식으로 상승될 때 그 CPU 코어들이 그들의 최대 성능 상태에서 동작한다고 가정한 것이다.
다른 접근법은 CPU 코어들 사이에 전력의 재할당을 제공한다. 성능 상태가 어떤 임계값(더 낮은 성능 상태로 정의됨) 이하에 있는 다른 코어(들)에서 이용가능한 전력 헤드룸을 재할당함으로써 P0(운영체제(OS)에 의해 설정된 최고 성능 상태)에 있는 코어가 오버-클록킹(over-clock)될 수 있다.
코어들의 성능 상태들을 기반으로 모든 코어들 또는 하나 이상의 코어들에 대해 전력을 균일하게 증가시키는 상기 접근법들은 유휴(idle) 연산 유닛들로부터 전력이 재할당될 수 있도록 하지만, 주파수를 디더링(dither)하거나 정상 상태 주파수를 부스트(boost)할 때 모든 동작중인 유닛들을 균일하게 취급한다. 하지만, 일부 동작중인 코어들이나 다른 연산 유닛들은 더 높은 코어 주파수로부터 성능 증가를 거의 얻지 못하거나 전혀 얻지 못하고 있을 수 있는 반면, 다른 코어들이나 연산 유닛들은 코어 주파수의 증가에 대해 더 높은 민감도로 작업부하들을 처리하고 있을 수 있다. 주파수 민감도를 기반으로 동작중인 코어들이나 다른 연산 유닛들 간에 전력을 선택적으로 분배하는 것은 이질적인 작업부하들 또는 이질적인 쓰레드들을 이용한 다중 쓰레드 작업부하들에 대해 전반적인 시스템 처리량이 증가될 수 있게 한다. 그것은 코어 주파수의 변화에 대한 작업부하의 민감도를 식별하는 효과적인 접근법을 필요로 한다.
도 1은 본 발명의 한 실시예를 포함하는 예시적인 시스템-온-칩(System on a Chip, SOC)(100)을 상위 레벨에서 도시한 것이다. SOC(100)는 다중 CPU 프로세싱 코어들(101), GPU(Graphics Processing Unit)(103), I/O 브리지(Bridge)(105)(일부 실시예들에서는 사우스-브리지(South-Bridge)로 명명됨), 및 노스-브리지(North-Bridge)(107)(일부 실시예들에서는 메모리 제어기(Memory Controller)와 결합될 수 있음)를 포함한다. 전력 할당 제어기(109)는 열 설계점(Thermal Design Point, TDP) 전력 헤드룸을 온-다이(on-die) 컴포넌트들 또는 온-플랫폼(on-platform) 컴포넌트들에게 할당하는 것을 제어하는 기능 요소이다. 성능 분석 제어 로직(111)은 본 명세서에서 더 설명되는 바와 같이 코어들 및 다른 연산 유닛들의 성능 민감도를 분석한다. 유의할 점은 전력 할당 제어(109)와 성능 분석 센터(111)가 노스-브리지(107)의 일부인 것으로 도시되어 있지만 다른 실시예들에서는 SOC(100)의 다른 곳에 위치될 수도 있다는 것이다.
TDP(Thermal Design Point)는 전체 SOC에 의해 소비될 수 있는 전력을 나타내며, 이는 폼-팩터(form-factor), 이용가능한 냉각 방법, AC 어댑터/배터리, 및 전압 조정기(voltage regualtor)와 같은 인자들에 따라 달라진다. SOC 성능은 현재의 TDP 내에서 최적화되며, 한 실시예에서 TDP에 해당하는 전력 한계는 절대 초과하지 않는다. SOC 전력 한계를 SOC_TDP_Limit이라고 가정하자. SOC 특성 평가는 전형적으로 SOC_TDP_Limit 내에 머물러 있으면서 각각의 온-다이 컴포넌트들에 대해 최대 전력을 할당하는 것을 기반으로 한다. 이는 심지어 최대로 예상되는 동작이 최고 동작점(주파수(F)와 전압(V)에 있어서)에서 실행되더라도 이로 인해 전력이 할당된 엔벨롭(envelope)을 초과하지 않도록 최고 동작점을 설정함으로써 이루어진다. 예를 들어, 4-코어 SOC의 최대 전력이 40w TDP 엔벨롭으로 제한된다고 가정하자. 표 1은 각각의 온-다이 컴포넌트들에 대해 할당된 전력 예산을 항목별로 정리한 것이다.
온-다이 컴포넌트 할당된 전력
코어0 8w
코어1 8w
코어2 8w
코어3 8w
GPU 5w
메모리 제어기 2w
I/O 브리지 1w
총합 40w
8w 전력 예산은 코어의 명목상 최고 동작점(F,V)을 정의하는 한계이고 5w 전력 예산은 GPU에 대한 한계이다. 하지만, 이 할당은 모든 온-다이 컴포넌트들의 동시 이용을 가정한 것이기 때문에 보수적으로 할당된 것이며 단지 명목상 최대이다. 실제 상황에서 대부분의 애플리케이션은 CPU 제한적(CPU-bounded)이거나 GPU 제한적(GPU-bounded)이다. 한 애플리케이션이 양 컴퓨팅 엔진들을 함께 동작시킨다 하더라도(예컨대, 비디오 재생이 일부 태스크(task)들을 프로세서 코어들에게 오프로드(offload)함) 4개의 프로세서 코어들을 모두 이용하지 않는다. 심지어 CPU 제한적인 클라이언트 애플리케이션들도 대부분 1개 내지 2개의 프로세서 코어들을 이용하며(1 내지 2 쓰레드 작업부하) 단지 소수의 애플리케이션들만이 장기간의 시간 동안 4개의 코어들을 모두 이용하기에 충분한 병렬성(parallelism)을 가진다.
한 실시예는 실행중인 컴포넌트들에게 더 많은 전력을 할당함으로써 유휴 또는 더 적게 동작중인 컴포넌트들로부터 실행중인 컴포넌트들에게 전력을 재할당한다. 예를 들어, 4개의 코어 중 2개가 유휴이고 GPU는 절반의 전력으로 동작하는 경우의 작업부하 예에서, 표 2는 이런 상태를 반영한 전력 예산을 표로 도시한 것이다.
온-다이 컴포넌트 할당된 전력 비고
코어0 16.75w 코어는 새로운 전력 헤드룸을 채우도록 더 높은 F,V에서 동작할 수 있음
코어1 16.75w 코어는 새로운 전력 헤드룸을 채우도록 더 높은 F,V에서 동작할 수 있음
코어2 0.5w 유휴 코어는 0.5w를 소비한다고 가정
코어3 0.5w 유휴 코어는 0.5w를 소비한다고 가정
GPU 2.5w
메모리 제어기 2w
I/O 브리지 1w
총합 40w
코어0과 코어1에는 전반적인 CPU 처리량을 개선하기 위해 16.75w가 할당된다. 양 코어들의 동작점(F,V)은 새로운 전력 헤드룸(8w 대신에 16.75w)을 채우도록 증가될 수 있다. 대체가능한 것으로, 단 하나의 코어의 전력 예산이 25.5w로 증가되지만, 다른 코어는 8w의 전력 예산으로 남아있을 수 있다. 이러한 경우에, 증가된 전력 예산을 가지는 코어는 훨씬 더 높은 동작점(F,V)으로 부스트될 수 있으며, 따라서 새로운 전력 헤드룸(25.5w)이 활용될 수 있다. 이 특정한 경우에, 2개의 코어들을 동일하게 부스트할지 또는 모든 이용가능한 전력 헤드룸을 하나의 코어로 제공할지에 대한 판단은 무엇이 전반적인 SOC 성능을 개선하는 최선의 방법인가에 달려있다.
부스트 민감도 연습( Boost Sensitivity Training ) 및 데이터 구조
한 실시예에 따르면, 성능 이득의 개선을 시도하고 달성하기 위해 코어0과 코어1 사이에 어떻게 전력을 할당할지를 결정하는 하나의 방법은 2개의 코어들 중 어느 것(만일 있다면)이 예컨대 주파수 증가에 의해 제공되는 실행 능력의 증가를 더 잘 활용할 수 있는지를 알아내는 것이다. 실행 능력의 변화는 또한 예컨대 코어에서 이용가능한 캐쉬의 양, 코어에서 동작하는 파이프라인들의 개수, 및/또는 명령어 인출 속도(fetch rate)의 변화에 의해 제공될 수도 있다. 코어들 중 어느 것이 실행 능력의 증가를 더 잘 활용할 수 있는지를 평가하기 위해, 한 실시예에서 각 연산 유닛의 주파수 변화 및/또는 다른 실행 능력의 변화에 대한 성능 민감도(본 명세서에서는 또한 부스트 민감도로도 지칭됨)가 연산 유닛 단위로 결정되고 저장된다.
도 2를 보면, 본 발명의 한 실시예에 따라 코어 주파수 변화에 대한 성능 민감도를 프로파일링(profile)하기 위한 상위 레벨 순서도가 예시되어 있다. 먼저, 201에서 미리 정의된 저주파수의 클록 신호가 소정의 시간 또는 프로그램가능한 시간(예컨대, 100us 내지 10ms의 시간) 동안 분석되는 CPU 코어에 인가된다. 이 시간 동안, 하드웨어 성능 분석 제어 로직(도 1의 요소(111) 참조)이 코어의 사이클당 명령어(instructions per cycle, IPC)(코어에서 보고된 대로)를 샘플링하고 평균한다. 성능 분석 제어 로직은 IPC × 코어 주파수(저주파수 또는 제1 성능 레벨)를 기반으로 제1 초당 명령어(instructions per second, IPS) 메트릭을 제1 성능 메트릭으로서 결정한다. IPS 메트릭은 임시 레지스터 "A"에 저장될 수 있다. 그런 다음, 205에서 성능 분석 제어 로직은 미리 정의된 고주파수의 클록 신호를 분석중인 CPU 코어에 동일한 소정의 또는 프로그램가능한 시간 동안 인가되게 한다. 207에서 성능 분석 제어 로직은 다시 코어 IPC(코어에서 보고된 대로)를 샘플링하고 평균한다. 성능 분석 제어 로직은 IPC × 코어 주파수(고주파수 또는 제2 성능 레벨)를 기반으로 제2 초당 명령어(IPS)를 결정하고 제2 IPC 메트릭을 제2 성능 메트릭으로서 임시 레지스터 "B"에 저장한다. 209에서 성능 분석 제어 로직은 수치의 차이를 결정하고 그 결과를 분석중인 코어의 번호 및 분석 동안 CPU 코어 상에서 실행되는 프로세스 콘텍스트(process context)의 번호와 함께 성능 민감도로서 성능 또는 부스트 민감도 테이블에 저장한다. 유의할 점은 부스트 민감도를 결정하기 위해 주파수 변화 대신에 또는 주파수 변화와 결합하여 다른 실행 능력의 변화들이 활용될 수도 있다는 것이다.
콘텍스트 번호는 더 짧은 수가 저장될 수 있도록 CR3 레지스터의 내용이나 CR3 레지스터의 해쉬(hash)에 의해 결정될 수 있다. 이 수치의 차이는 코어의 부스트 민감도를 나타낸다. 즉, 그것은 특정 프로세스 콘텍스트를 실행하는 코어의 주파수 변화에 대한 민감도를 나타낸다. 민감도가 클수록, 주파수 증가에 의해 얻어지는 성능의 증가도 더 많다. 도 2에 도시된 동일한 연습이 각 프로세서 코어와 명목상 최대 전력값 이상으로 부스트(오버-클록킹)될 수 있는 임의의 다른 컴포넌트에 적용될 수 있으며, 값들은 부스트 민감도 테이블에 저장된다. 부스트 민감도 테이블의 값들은 가장 높은 부스트 민감도를 갖는 코어나 다른 온-다이 컴포넌트에서 시작하여 내림차순으로 정렬될 수 있다.
다른 실시예들에서, 주파수 민감도 연습은 연산 유닛들이 명목상 전력 레벨 이상으로 클록킹(또는 오버-클록킹)될 수 있는지 여부에 관계없이 다양한 성능 상태들을 구현하도록 그 주파수가 변화될 수 있는 모든 연산 유닛들에 적용될 수 있다. 그런 방식으로, 시스템은 전력 예산을 주파수 변화에 덜 민감한 코어들로부터 주파수 변화에 더욱 민감한 코어들(또는 다른 연산 유닛들)로 할당할 수 있다. 그런 방식으로, 코어들이나 다른 연산 유닛들은 SOC에 대해 상당한 성능 감소 없이 전력을 절약하기 위해 그 주파수가 감소될 수 있다.
도 3은 시스템 블록도 레벨에서 주파수 연습을 예시한 것이다. 코어(301)에 대한 연습은 각 코어에 대한 주파수 연습을 대표하여 나타낸 것이다. 클록 발생기(303)는 성능 분석 제어 로직(111)에 의해 제어되는 대로 주파수 기간 동안 고주파수와 저주파수의 클록 신호들을 코어(301)에 공급한다. 코어(301)는 사이클당 명령어 값을 성능 분석 제어 로직(111)으로 제공하며, 성능 분석 제어 로직(111)은 도 2에 따른 방법을 제어한다. 도 4는 제1 시간 동안 샘플링하고 평균함으로써 결정되는 사이클당 명령어의 측정(IPC1)과 제1 시간 동안 공급되는 주파수(FREQ1)가 곱셈기(401)에서 곱해지는 것을 예시한 것이다. 유사하게, 곱셈기(403)에서 제2 시간 동안 결정되는 사이클당 명령어의 측정(IPC2)이 제2 시간 동안 공급되는 주파수(FREQ2)와 곱해진다. 곱셈기들(401, 403)에서 결정된 이용도 메트릭(utilization metric)들의 차이는 합산기(405)에서 결정된다. 그 결과는 부스트 민감도이며, 이는 부스트 민감도 테이블(407)에 저장된다. 부스트 민감도 테이블(407)은 각 측정에 대하여 그 결과와 함께 코어 번호(C#), 코어 상에서 실행되는 프로세스 콘텍스트, 및 마지막 성능 민감도 측정 이후로 경과된 시간을 저장한다. 그 결과는 예컨대 초당 명령어(Instructions Per Second, IPS)로서 표현되는 성능 메트릭 또는 부스트 민감도이며, 평균 IPC × 코어 주파수를 통해 계산된다. 유의할 점은 부스트 민감도 테이블은 SOC(100)(도 1)내에 저장되거나 컴퓨터 시스템의 어느 다른 곳에 저장될 수 있다는 것이다.
각 코어에 대한 부스트 민감도는 현재의 프로세서 콘텍스트와 묶일 수 있으며, 이는 x86의 CR3 레지스터 값에 의해 근사화될 수 있고 노스-브리지에 의해 추적된다. 한 실시예에서, 콘텍스트가 바뀔 때, 민감도가 재평가된다. 다른 실시예에서, 각 콘텍스트에 대한 부스트 민감도는 고정 타이머 또는 프로그램가능한 타이머를 기반으로(예컨대, 1ms 내지 100ms 후에) 만료된다. 또 다른 실시예에서, 타이머와 콘텍스트 스위치(context switch) 모두가 사용되며 어느 것이든 먼저 발생하면 부스트 민감도 재평가를 시작한다.
따라서, 주파수 연습에 대한 한 실시예가 설명되었다. 도 2의 기능들은 하드웨어(예컨대, 성능 분석 제어 블록(111)의 상태 머신들)로, 펌웨어(마이크로코드나 마이크로컨트롤러)로, 또는 소프트웨어(예컨대, 드라이버, BIOS 루틴 또는 더 상위 레벨 소프트웨어)로 구현될 수 있다. 소프트웨어는 저주파수와 고주파수의 클록 신호들을 인가하고, IPC 값들을 수신하고, IPC 값들을 평균하고, 도 2와 관련하여 설명된 다른 기능들을 수행하는 것을 담당한다. 소프트웨어는 도 1의 컴퓨터 시스템에서 컴퓨터 판독가능한 전자, 광학, 자기, 또는 다른 종류의 휘발성이나 비휘발성 메모리에 저장될 수 있고, 하나 이상의 코어들에 의해 실행될 수 있다. 또 다른 실시예들에서, 도 2에 예시되고 전술된 주파수 민감도 연습은 특정 시스템의 필요 및 능력에 따라 부분적으로 하드웨어로 부분적으로 소프트웨어로 구현된다. 예를 들어, 소프트웨어는 부스트 민감도 테이블을 유지관리하고, 프로세스 콘텍스트를 결정하기 위해 CR3 레지스터를 판독하고, 부스트 민감도를 재결정하기 위해 소프트웨어 타이머들을 유지관리하는 것을 담당할 수 있으며, 하드웨어는 소프트웨어에 의해 통지되면 적절한 시간 동안 제1 주파수 및 제2 주파수의 클록들을 인가하고, 평균 IPC를 결정한다. 소프트웨어는 IPS 값들을 결정하는 것을 담당할 수 있다.
전력 예산의 재할당
부스트 민감도 테이블(Boost Sensitivity Table, BST)은 잠재적으로 부스트될 컴포넌트들에 대한 주파수 민감도 연습 세션의 결과로서 유지관리된다. 다른 실시예들에서, 주파수 민감도 테이블은 전형적으로 주파수(및 필요하다면 전압) 조정을 통해 그 성능이 조정될 수 있는 모든 컴포넌트들에 대한 주파수 민감도 연습의 결과로서 유지관리된다. 한 실시예에서, 전력 예산 재할당은 BST의 정보를 사용하여 어느 온-다이 컴포넌트(들)가 부스트에 가장 민감하고 따라서 재할당이 일어날 때 더 높은 TDP 전력 마진(margin)을 재할당 받을 "가치가 있는지"를 판단한다.
특정한 프로세서 코어는 N개의 성능 상태들 중 하나에 있을 수 있다. 성능 상태는 코어 전압 값과 주파수 값의 고유한 쌍으로 특징지어진다. 가장 높은 성능 상태는 전형적으로 임의의 예상되는 거동으로 인해 코어 전력(동적 + 정적)이 그 코어에 할당된 전력 예산을 초과하지 않도록 선택되고 특징지어진다. 현재의 시스템들에서, 코어 성능 상태는 운영체제 소프트웨어에 의해 정의되며 현재 코어 이용도에 의해 정해진다. 다른 실시예들에서, 코어 성능 상태는 현재 코어에 의해 실행되는 콘텍스트를 기반으로 하드웨어에 의해 특정될 수 있다. 표 3은 4개의 성능 상태들(P0, P1, P2, P3)을 가지는 한 예시적인 시스템에 대한 성능 상태들을 도시한 것이며, 이들은 운영체제(OS)(또는 임의의 다른 상위 레벨 소프트웨어)가 시간 구간 동안의 코어 이용도에 따라 각 코어에 대해 이용할 수 있는 상태들이다. 한 예시적인 운영체제에서 시간 구간은 1msec 내지 100msec의 범위를 가진다. OS(또는 임의의 다른 상위 레벨 SW)가 코어를 낮은 C-상태로 설정할 때 2개의 유휴 상태들이 사용된다. C-상태는 코어의 전력 상태이다. 이 특정 실시예에서, 코어는 IDLE 상태(짧은 시간 동안 유휴 상태에 있을 것으로 예상될 때)나 아니면 깊은 C-상태(deep C-state)에 놓일 수 있다. 가장 높은 동작점(P-부스트)은 코어 전력(CoreBoostPwr)이 그 특정 코어에 대해 할당된 명목상 최대 전력 예산을 초과할 때의 것이다.
코어의
성능 상태
동작점(F,V) 소비 전력
(동적 및 정적)
비고
P-부스트 F-부스트
/V-부스트
CoreBoostPwr 부스트 포인트.
코어의 전력 예산을 초과
P0 F0/V0 Core_Pwr0 코어 전력 예산
P1 F1/V1 Core_Pwr1
P2 F2/V2 Core_Pwr2
P3 F3/V3 Core_Pwr3
IDLE 클록 오프
/저전압
Core_Idle_Pwr
깊은 C-상태 클록 오프
/전압 오프
Core_DeepCstate_Pwr 코어가 파워 게이팅되거나(power gated) 아니면 깊은 전압이 인가됨
GPU 전력 상태는 전통적으로 소프트웨어(그래픽 드라이버)에 의해 제어된다. 다른 실시예들에서, 그것은 또한 GPU의 거동을 추적하고 다른 그래픽 관련 엔진들(통합 비디오 디코더(Unified Video Decoder, UVD), 디스플레이 등)로부터 정보를 수신하는 하드웨어에 의해 제어될 수 있다. 한 예시적인 실시예에서, GPU는 표 4에 도시된 바와 같이 4개의 전력 상태들 중 하나에 있을 수 있다.
성능 상태 GPU 소비 전력(동적 및 정적)
GPU-부스트 GPUBoostPwr
GPU_P0 GPU_Pwr0
GPU_P1 GPU_Pwr1
GPU_P2 GPU_Pwr2
GPU_P3 GPU_Pwr3
한 실시예에서, 오로지 2개의 온-다이 컴포넌트들, 즉 코어 프로세서들과 GPU만이 더 높은 성능 포인트로 부스트될 수 있다. I/O 모듈과 메모리 제어기는 그들의 "미사용(unused)" 전력 예산을 이들 컴포넌트들에 재할당함으로써 코어들이나 GPU의 부스트 프로세스에 기여할 수 있지만, 그들 자신은 부스트될 수 없다. 다른 실시예들에서, 메모리 제어기는 DRAM(Dynamic Random Access Memory) 및 그 주파수를 더 높은 동작점으로 천이시킴으로써 역시 부스트될 수 있다.
연산 유닛들에게 전력을 효율적으로 할당하는 한 실시예는 이용가능한 전력 헤드룸, 또는 TDP 전력 마진을 영구히 추적하는 것에 입각하고 있다.
SOC_TDP_Margin은 SOC_TDP_Limit에서 모든 온-다이 컴포넌트들의 전력 소비의 합을 빼서 계산되며, SOC_TDP_Margin = SOC_TDP_Limit - ∑코어(i) 전력 - GPU 전력 - 메모리 제어기 전력 - I/O 브리지 전력 이다. 온-다이 컴포넌트들 상태의 임의의 변화는 SOC_TDP_Margin 값의 업데이트를 트리거한다. 한 실시예에서, 업데이트를 트리거하는 상태 변화는 성능 또는 전력 상태의 변화 또는 애플리케이션/작업부하 거동의 변화이다. 다른 실시예들에서, 업데이트를 트리거하는 상태의 변화는 프로세스 콘텍스트 변화일 수 있으며, 또는 프로세스 콘텍스트 변화나 성능 상태 변화 중 어느 하나일 수 있다. 한 실시예에서, 성능/전력 상태의 변화나 애플리케이션/작업부하 거동의 변화와 같이 컴포넌트에 의해 소비되는 전력의 변화를 가져오는 임의의 이벤트는 상태 변화를 트리거하는 이벤트로서 기능할 수 있다.
일반적으로, 특정한 연산 유닛의 전력(전압 × 전류)은 그 연산 유닛에서의 클록 신호 주파수, 공급 전압, 및 활동량에 의거한다. 각 연산 유닛의 전력을 결정하는 특정한 접근법은 시스템 능력 및 필요에 따라 달라질 수 있으며 하드웨어 및/또는 소프트웨어 접근법을 기반으로 구현될 수 있다. 예를 들어, 한 접근법에서, 연산 유닛은 평균 전력값을 동적 전력 + 정적 전력으로서 계산하고 보고한다. 동적 전력은 (평균 작업부하 거동/최대 거동) × MaxPower 로서 계산될 수 있으며, MaxPower는 최대 거동과 관련되는 최대 동적 전력의 유도된(fused) 값 또는 설정가능한 값이다. 정적 전력은 연산 유닛이 동작하는 전압에 따라 달라지며, 테이블로부터 추출되거나, 아니면 전력 관리 자원들로부터 이용가능하거나, 또는 하드웨어로 결정될 수 있다. 평균 작업부하 거동은 시간 동안 연산 유닛을 지나는 신호 토글들의 평균 개수, 또는 시간 동안의 평균 IPC로서 계산될 수 있다. 전력 계산은 역시 소프트웨어 방법들을 이용할 수 있으며, 이 방법들에서 소프트웨어(예컨대, 드라이버)는 연산 유닛에서 실행되는 애플리케이션의 거동을 알고 있으며 전술된 바와 유사한 접근법을 사용하여 평균 전력을 결정한다.
한 실시예에서, 오로지 P0 상태에 있는 코어와 GPU_P0 상태에 있는 GPU만이 다른 온-다이 컴포넌트들로부터 전력을 재할당 받고 더 높은 성능 포인트로 부스트될 수 있다. 이는 코어가 P0 상태에 있거나 GPU가 GPU_P0 상태에 있다는 것은 본질적으로 현재 실행되는 태스크가 연산 제한적(computationally bounded)이라는 힌트들(OS나 일부 그래픽 드라이버와 같은 상위 레벨 SW에 의해 제공되는)이라는 관찰에 근거한 것이다. 다른 실시예들에서, 코어 및/또는 GPU는 다른 비-유휴 상태들에 있을 때 부스트될 수도 있다.
도 5는 전력을 할당하는 전력 할당 제어기(109)(도 1)의 한 실시예의 동작의 예시적인 순서도를 예시한 것이다. 501에서, 전력 할당 제어기는 임의의 온-다이 컴포넌트에 대한 상태 변화, 예컨대 성능 상태, 애플리케이션/거동 변화, 또는 프로세스 콘텍스트 변화를 기다린다. 상태 변화가 일어나면, 503에서 TDP_SOC_Margin이 추적되고, 505에서 마진이 0보다 큰지 여부에 대한 판별이 이루어진다. 만일 0보다 크지 않다면, 501로 진행한다. 만일 마진이 0보다 크다면, 이는 하나 이상의 코어들을 부스트할 수 있는 헤드룸이 존재한다는 것을 의미하며, 507에서 임의의 CPU 코어가 P0 상태에 있는지에 대한 검사가 이루어진다. 이 특정한 실시예에서는, 오직 P0에 있는 코어들만이 부스트될 수 있다. 만일 P0에 있는 코어들이 없다면, 523에서 GPU 전력 상태를 검사한다. 만일 적어도 하나의 코어가 P0에 있다면, 전력 할당 제어기는 509에서 P0에 있는 모든 코어들에 대해 새로운 TDP_SOC_Margin = TDP_SOC_Margin - ∑(CoreBoostPwr - Core_Pwr) 를 계산함으로써 모든 P0 코어들을 부스트하기에 충분한 공간이 있는지 검사한다. 새로운 TDP_SOC_Margin은 P0에 있는 모든 코어들이 부스트된다고 가정할 때 예상되는 마진값이다. TDP_SOC_Margin은 현재 마진값이다. CoreBoostPwr는 부스트될 때의 코어 전력이고 Core_Pwr는 P0 상태에서 현재 코어 전력이다. 511에서 전력 할당 제어기는 새로운 마진이 0보다 큰지를 검사한다. 만일 그렇다면, 모든 P0 코어들을 부스트하기에 충분한 공간이 있으며, 515에서 모든 코어들이 부스트되고, TDP_SOC_Margin이 업데이트된다. 그런 다음, 501로 돌아가서 또 다른 상태 변화를 기다린다.
만일 511에서 마진이 0보다 크지 않다면, 517로 가서 가능하다면 일부 마진을 찾는다. 가장 높은 민감도를 갖는 코어들이 식별된다. 이는 예컨대 앞서 논의된 부스트 민감도 연습에 의해 제공되는 부스트 민감도 테이블을 액세스함으로써 행해질 수 있다. 519에서, P0 상태에 있는 코어들이 예컨대 부스트 민감도의 내림차순으로 정렬된다. 따라서, 하단에 있는 것들은 주파수 증가에 가장 덜 민감하다. 521에서, 전력 할당 제어기는 하나씩 차례로 리스트로부터 최저의 부스트 민감도를 갖는 코어를 제거하고 리스트에 남아있는 코어들에 대해 509에서와 같이 새로운 TDP_SOC_Margin을 다시 계산한다. 다른 실시예들에서, 소정의 또는 프로그램가능한 임계값 이하의 부스트 민감도를 갖는 모든 코어들이 동시에 리스트로부터 제거된다. 그렇게 하는 이유는 성능이 증가되지 않을 코어들을 부스트함으로써 낭비되는 전력을 방지하려는 것이다. 새로운 TDP_SOC_Margin이 0보다 크면, 여전히 리스트 상에 있는 P0 코어들은 P-부스트로 천이되고 TDP_SOC_Margin이 업데이트된다.
523에서, 전력 할당 제어기는 GPU가 GPU_P0 상태에 있는지 보기 위해 검사한다. 만일 그 상태에 있지 않다면, 501로 되돌아가서 상태 변화를 기다린다. 만일 GPU가 P0 상태에 있다면, 전력 할당 제어기는 525에서 현재의 TDP_SOC_Margin으로부터 GPU에 대한 현재 전력과 부스트된 전력 사이의 차이를 뺌으로써 새로운 TDP_SOC_Margin을 계산하여 GPU를 부스트하기에 충분한 헤드룸이 있는지를 결정한다. 527에서, 전력 할당 제어기는 새로운 마진이 0보다 큰지를 보기 위해 검사하고, 만일 0보다 크다면 GPU를 부스트된 상태로 천이시키고 TDP_SOC_Margin을 업데이트하며, 503으로 되돌아가서 임의의 컴포넌트들에 있어서의 또 다른 상태 변화를 기다린다. 만일 충분한 마진이 없다면, 503으로 되돌아간다.
따라서, 충분한 마진이 있을 때 P0에 있는 연산 유닛들에게 전력을 할당하고 주파수 부스트에 덜 민감한 연산 유닛들을 제외함으로써 그 마진을 찾는 한 실시예가 설명되었다. 다른 실시예들에서, 주파수 부스트는 잉여 전력을 보증하기 위해 예컨대 소정의 또는 프로그램가능한 임계값 이상의 충분히 높은 부스트 민감도를 갖는 연산 유닛들로만 제공된다. 이런 방식으로, 가능하다면 감소된 전력 소비를 유지하려고 시도하면서도 증가된 성능이 제공될 수 있다.
도 5의 기능들은 부스트 민감도를 기반으로 전력을 할당하도록 하드웨어(예컨대, 상태 머신들)로, 펌웨어(마이크로코드나 마이크로컨트롤러)로, 또는 소프트웨어(예컨대, 드라이버, BIOS 루틴 또는 더 상위 레벨 소프트웨어)로 구현되거나, 또는 하드웨어와 소프트웨어의 임의의 적절한 조합으로 구현될 수 있다. 부스트 민감도 정보가 부스트 민감도 연습을 통해 이용가능하다고 가정하면, 한 실시예에서 소프트웨어는 임의의 컴포넌트의 상태 변화를 통지받고 도 5와 관련하여 설명된 접근법을 구현할 수 있다. 소프트웨어는 도 1의 컴퓨터 시스템에서 컴퓨터 판독가능한 전자, 광학, 또는 자기 휘발성이나 비휘발성 메모리에 저장될 수 있고, 하나 이상의 코어들에 의해 실행될 수 있다. 또 다른 실시예들에서, 도 5의 기능들은 특정 시스템의 필요 및 능력에 따라 부분적으로 하드웨어로 부분적으로 소프트웨어로 구현된다.
부스트 민감도 정보의 이용가능성은 다양한 방식들로 SOC에 의해 이용될 수 있다. 중앙 처리 유닛(CPU)의 속도 조절이 이러한 이용의 한 예이다. GPU 제한적인 애플리케이션이 실행되고 있다고 가정하자. 즉, GPU 상에서 실행되고 있는 애플리케이션은 예컨대 현재의 성능 상태가 그 특정한 애플리케이션에 대해 필요한 것보다 낮기 때문에 GPU의 성능에 의해 제한된다. 이 경우에, 모든 CPU 코어들에 P-상태 제한(P-state limit)을 부과함(예컨대, P-상태 제한 = P2 상태)으로써 CPU 코어들이 속도 조절(그 성능이 제한)될 수 있다. 이는 GPU가 이용가능한 전력 마진을 풀어줄 것이다. 한 실시예에서, GPU 제한적이거나 CPU 제한적인 애플리케이션은 특정한 코어나 GPU가 얼마나 바쁜지를 표시하는 데이터를 기반으로 식별된다.
대체가능한 것으로, 주파수에 대해 가장 낮은 성능 민감도를 갖는 코어들만이 P-상태 제한으로 속도 조절될 수 있다. 예를 들어, 4-코어 시스템에서, 부스트 민감도 테이블에 따라 코어 주파수 변화에 대해 가장 낮은 IPS 민감도를 갖는 2개의 코어들이 P-상태 제한 = P2를 부과함으로써 속도 조절될 수 있는 반면, 다른 코어들의 상태는 변화되지 않고 남아있을 수 있다. 이는 ((Core_Pwr0 - Core_Pwr2) × 2)와 동등한 전력 마진을 GPU를 위해 풀어줄 것이며, Core_Pwr0는 P0 상태에서 코어에 의해 소비되는 전력이고 Core_Pwr2는 P2 상태에서 코어에 의해 소비되는 전력이다.
또 다른 실시예들에서, CPU 제한적(연산 제한적)인 애플리케이션(하나 이상의 프로세싱 코어들의 성능에 의해 제한되는 애플리케이션)이 실행되고 있을 때, 애플리케이션들은 종종 이용가능한 코어들의 서브세트 상에서 실행되기 때문에, 주파수 증가(또는 감소)에 대해 덜 민감한 코어들이 다른 코어들에게 잉여 마진을 제공하도록 속도 조절될 수 있다. GPU 제한적인 애플리케이션은 GPU의 성능에 의해 제한되는 애플리케이션이다.
도 6은 부스트 민감도 정보를 기반으로 성능의 속도 조절을 위한 상위 레벨 순서도를 도시한 것이다. 601에서, CPU 제한적이거나 GPU 제한적인 애플리케이션들이 식별된다. 603에서, 저장된 부스트 또는 성능 민감도 정보가 검토되고, 605에서, 예컨대 주파수, 전압, 코어가 이용가능한 캐쉬 양, 코어에서 동작중인 파이프라인들의 개수, 및/또는 명령어 인출 속도에 있어서의 감소와 같은 실행 능력의 감소에 대해 성능의 측면에서 덜 민감한 코어들의 서브세트를 기반으로 속도 조절하기 위해 예컨대 프로세싱 코어들과 같은 연산 유닛들의 서브세트가 식별된다. 607에서 서브세트의 성능이 제한되고, 609에서 속도 조절을 통해 이용가능해진 전력 헤드룸이 CPU 제한적 및/또는 GPU 제한적인 애플리케이션을 실행중인 연산 유닛(들)에게 제공된다. 도 6에 설명된 기능들은 전력 할당 제어기(109)에 구현되거나 또는 상위 레벨 소프트웨어를 이용하거나 하드웨어 및 소프트웨어 모두를 이용하여 구현될 수 있다.
만일 애플리케이션이 주로 CPU 코어들을 이용한다면, GPU_Pwr0보다 낮은 GPU P-상태 제한을 GPU에게 강제함으로써 아니면 GPU의 명령어/메모리 트래픽 스트림을 속도 조절함으로써 GPU가 속도 조절될 수 있다. 만일 속도 조절된 GPU 전력이 GPU_Pwr2와 동등하다면, 잉여 전력 마진 GPU_Pwr0 - GPU_Pwr2가 부스트 민감도 테이블 값들에 따라 하나 이상의 CPU 코어들을 부스트하도록 재할당될 수 있다.
연산 제한적인 작업부하가 다중 코어 프로세서나 GPU 상에서 실행될 때, 메모리가 또한 속도 조절될 수 있다. 하나의 방법은 DRAM에 대한 모든 다른 액세스를 다수의 사이클들만큼 스톨(stall)시켜서 DRAM I/O와 DRAM DIMM 전력의 동적 부분을 2배 가까이 감소시키는 것이다. 또 다른 접근법은 다수의 이용가능한 메모리 채널들을 셧다운(shut down)시키고 또한 DRAM I/O와 DRAM DIMM 전력의 일정 비율을 풀어주는 것을 수반할 수 있다. 감소된 DRAM I/O 전력은 GPU나 CPU 코어들의 이용도 및 BST 값들(CPU 코어들에 관한 것이라면)에 따라 GPU나 아니면 CPU 코어들에게 재할당될 수 있으며, 따라서 전반적으로 더 높은 SOC 성능 처리량으로 이어진다. DRAM DIMM은 SOC의 일부가 아닐 수 있으며, 이 경우에 그 전력 예산은 SOC TDP의 일부가 아니다. 하지만, 감소된 DRAM DIMM 전력 마진이 SOC TDP로 다시 재할당될 수 있는 상황에서는, 잉여 마진이 GPU나 일부 CPU 코어들을 부스트하는 데 사용될 수 있다.
본 발명의 일부 실시예들의 경우 일반적으로 회로들과 물리적 구조들이 상정되어 있지만, 최신 반도체 설계 및 제조에 있어서, 물리적 구조들과 회로들은 후속의 설계, 테스트, 또는 제조 단계들에서 사용되기에 적합한 컴퓨터 판독가능한 기술 형태(descriptive form)로 실시될 수 있다는 것은 잘 인지될 것이다. 예시적인 구성들에서 별개의 컴포넌트들로서 제시된 구조들과 기능들은 결합된 구조나 컴포넌트로서 구현될 수 있다. 본 발명은 발명의 상세한 설명에서 서술되고 첨부된 특허청구범위에서 정의된 바와 같은 회로들, 회로들의 시스템들, 관련 방법들, 및 이러한 회로들, 시스템들, 및 방법들의 컴퓨터 판독가능한 매체 인코딩들을 모두 포함하는 것으로 고려된다. 본 명세서에서 사용된 바와 같이, 컴퓨터 판독가능한 매체는 적어도 디스크, 테이프, 또는 다른 자기, 광학, 반도체(예컨대, 플래쉬 메모리 카드, ROM), 또는 전자적 매체를 포함한다.
따라서, 다양한 실시예들이 설명되었다. 유의할 점은 본 명세서에서 제시된 본 발명의 설명은 예시적인 것이며 첨부된 특허청구범위에서 제시되는 본 발명의 범위를 제한하고자 의도된 것이 아니라는 것이다. 예를 들어, 연산 유닛들은 다중 코어 프로세서의 일부일 수 있지만, 다른 실시예들에서, 연산 유닛들은 함께 또는 분리되어 패키징될 수 있는 별개의 집적 회로들에 있을 수 있다. 예를 들어, 그래픽 처리 유닛(GPU)과 프로세서는 함께 또는 분리되어 패키징되는 별개의 집적 회로들일 수 있다. 첨부된 특허청구범위에서 제시되는 본 발명의 범위를 벗어남이 없이 본 명세서에서 제시된 상세한 설명을 기반으로 본 명세서에서 개시된 실시예들에 대한 다양한 수정들과 변형들이 이루어질 수 있다.

Claims (15)

  1. 복수의 연산 유닛(computational unit)들을 포함하는 컴퓨터 시스템의 동작 방법으로서,
    상기 연산 유닛들의 각각의 성능 민감도(performance sensitivity)에 따라 상기 연산 유닛들 중 하나 이상의 성능을 변경하는 단계를 포함하는
    컴퓨터 시스템의 동작 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 연산 유닛들 중 어느 것이 다른 연산 유닛들보다 더 높은 성능 민감도를 가지는지에 따라 상기 하나 이상의 연산 유닛들의 성능을 부스트(boost)함으로써 상기 하나 이상의 연산 유닛들의 성능을 변경하는 단계를 더 포함하는
    컴퓨터 시스템의 동작 방법.
  3. 제1항에 있어서,
    상기 연산 유닛들의 각각의 성능 민감도를 임계값과 비교하고 상기 비교에 따라 상기 연산 유닛들의 성능을 변경하는 단계를 더 포함하는
    컴퓨터 시스템의 동작 방법.
  4. 제1항에 있어서,
    성능이 변경되는 상기 하나 이상의 연산 유닛들은 성능이 변경되기 전에 동일한 전력 상태에 있고, 상기 동일한 전력 상태는 명목상 최대 전력 상태인
    컴퓨터 시스템의 동작 방법.
  5. 제1항에 있어서,
    상기 연산 유닛들은 복수의 프로세싱 코어들을 한 그룹으로 포함하고, 상기 방법은
    상기 그룹에 남아있는 프로세싱 코어들에 대해 예상 전력 마진이 0보다 클 때까지 상기 그룹의 프로세싱 코어들 중에서 다른 프로세싱 코어들보다 낮은 성능 민감도를 갖는 하나 이상의 프로세싱 코어들을 상기 그룹에서 제거하는 단계와; 그리고
    상기 그룹에 남아있는 코어들의 성능을 부스트함으로써 성능을 변경하는 단계를 더 포함하는
    컴퓨터 시스템의 동작 방법.
  6. 제1항에 있어서,
    상기 연산 유닛들은 복수의 프로세싱 코어들을 포함하고, 상기 방법은
    만일 상기 프로세싱 코어들의 그룹의 성능을 부스트했을 때의 예상 전력 마진이 0보다 작으면,
    상기 그룹에서 다른 것들보다 낮은 성능 민감도를 갖는 코어를 상기 그룹으로부터 제거하여 더 작은 그룹을 형성하는 단계와; 그리고
    새로운 예상 전력 마진을 계산하고, 만일 상기 더 작은 그룹의 코어들의 성능이 부스트된다면 상기 새로운 예상 전력 마진이 0보다 큰지를 판별하는 단계와;
    만일 상기 더 작은 그룹의 코어들에 대해 상기 새로운 예상 전력 마진이 0보다 크다면, 상기 더 작은 그룹의 코어들의 성능을 부스트함으로써 성능을 변경하는 단계와; 그리고
    만일 현재의 그룹에 대해 상기 새로운 예상 전력 마진이 여전히 0보다 작으면, 또 다른 더 작은 그룹을 형성하도록 상기 더 작은 그룹에서 다른 코어들보다 낮은 성능 민감도를 갖는 또 다른 코어를 상기 더 작은 그룹으로부터 제거하는 단계를 더 포함하는
    컴퓨터 시스템의 동작 방법.
  7. 제6항에 있어서,
    현재 실제 전력 마진 - ∑(부스트된 전력 - 현재 전력)에 따라 상기 새로운 예상 전력 마진을 결정하는 단계를 더 포함하며, 상기 부스트된 전력은 부스트된 전력 레벨에서 동작하는 상기 더 작은 그룹의 코어들의 전력이고, 상기 현재 전력은 현재의 전력 레벨들에서 동작하는 상기 더 작은 그룹의 코어들의 전력이고, 상기 현재 실제 전력 마진은 상기 연산 유닛들의 현재의 전력 소비에 대응되는 전력 마진인
    컴퓨터 시스템의 동작 방법.
  8. 제1항에 있어서,
    상기 성능을 변경하는 단계는 상기 하나 이상의 연산 유닛들의 성능을 부스트하는 것인
    컴퓨터 시스템의 동작 방법.
  9. 제1항에 있어서,
    상기 연산 유닛들의 각각의 성능 민감도를 결정하기 위해 저장부를 액세스하는 단계를 더 포함하며, 상기 저장부는 상기 프로세싱 코어들 각각 상에서 실행되는 각각의 프로세스 콘텍스트들에 대응되는 성능 민감도를 저장하는
    컴퓨터 시스템의 동작 방법.
  10. 복수의 연산 유닛들과;
    상기 연산 유닛들에 대한 각각의 성능 민감도들을 저장하는 저장부와; 그리고
    상기 성능 민감도들에 따라 상기 연산 유닛들 중 하나 이상의 성능을 부스트하도록 구성되는 전력 할당 기능부(power allocation function)를 포함하는
    장치.
  11. 제10항에 있어서,
    상기 전력 할당 기능부는 상기 연산 유닛들 중 하나 이상이 상기 연산 유닛들 중 다른 것들보다 높은 성능 민감도를 가지는 것에 응답하는
    장치.
  12. 제10항에 있어서,
    상기 전력 할당 기능부는 상기 연산 유닛들의 각각의 성능 민감도를 임계값과 비교하고 상기 임계값보다 높은 성능 민감도를 가지는 연산 유닛들을 부스트하도록 구성되는
    장치.
  13. 제10항에 있어서,
    상기 전력 할당 기능부는 또한 예상 전력 마진이 한 그룹의 코어들 모두를 부스트된 성능 상태로 부스트하기에 충분하지 않는 것에 응답하여 상기 연산 유닛들의 그룹으로부터 하나 이상의 연산 유닛들을 제거하고, 상기 제거는 상기 그룹의 상기 하나 이상의 연산 유닛들이 상기 그룹의 상기 연산 유닛들 중 다른 것들보다 낮은 성능 민감도를 가지는 것에 따라 결정되고, 상기 제거와 재계산은 상기 새로운 예상 전력 마진이 0보다 커서 상기 연산 유닛들 중 남아있는 것들의 성능을 부스트할 수 있는 만큼 될 때까지 반복되는
    장치.
  14. 제10항 내지 제13항 중 어느 한 항에 있어서,
    상기 장치는 적어도 하나의 집적 회로를 포함하고, 상기 연산 유닛들은 프로세싱 코어들, 메모리 제어기, 및 그래픽 처리 유닛 중 적어도 하나를 포함하고, 상기 전력 할당 기능부는 하드웨어, 펌웨어, 및 컴퓨터 판독가능한 매체 상에 저장되는 소프트웨어 중 하나 이상으로 구현되는
    장치.
  15. 제10항에 있어서,
    상기 연산 유닛들의 각각의 성능 민감도는 제1 성능 레벨과 제2 성능 레벨에서 결정되는 상기 연산 유닛들 각각의 제1 성능 메트릭과 제2 성능 메트릭에 따라 결정되는
    장치.
KR1020127003135A 2009-07-24 2010-07-23 성능 민감도에 따른 연산 유닛들의 차별적 성능 변경 KR20120046232A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US12/508,935 US8443209B2 (en) 2009-07-24 2009-07-24 Throttling computational units according to performance sensitivity
US12/508,929 US8447994B2 (en) 2009-07-24 2009-07-24 Altering performance of computational units heterogeneously according to performance sensitivity
US12/508,929 2009-07-24
US12/508,935 2009-07-24
US12/508,902 2009-07-24
US12/508,902 US20110022356A1 (en) 2009-07-24 2009-07-24 Determining performance sensitivities of computational units

Publications (1)

Publication Number Publication Date
KR20120046232A true KR20120046232A (ko) 2012-05-09

Family

ID=42953822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127003135A KR20120046232A (ko) 2009-07-24 2010-07-23 성능 민감도에 따른 연산 유닛들의 차별적 성능 변경

Country Status (6)

Country Link
EP (1) EP2457139A1 (ko)
JP (1) JP5564564B2 (ko)
KR (1) KR20120046232A (ko)
CN (1) CN102483646B (ko)
IN (1) IN2012DN00933A (ko)
WO (3) WO2011011673A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150079410A (ko) * 2013-12-28 2015-07-08 삼성전자주식회사 메모리 어레이를 위한 동적 열 예산 할당
KR102103842B1 (ko) * 2019-10-02 2020-05-29 한화시스템 주식회사 차세대 함정 전투체계의 트래픽 모델링 장치

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5601236B2 (ja) * 2011-02-10 2014-10-08 富士通株式会社 情報抽出プログラム、情報抽出方法、および情報抽出装置
US20120297232A1 (en) * 2011-05-16 2012-11-22 Bircher William L Adjusting the clock frequency of a processing unit in real-time based on a frequency sensitivity value
JP5958395B2 (ja) * 2013-03-22 2016-08-02 日本電気株式会社 コンピュータシステム
US9703613B2 (en) * 2013-12-20 2017-07-11 Qualcomm Incorporated Multi-core dynamic workload management using native and dynamic parameters
JP5986138B2 (ja) * 2014-05-09 2016-09-06 レノボ・シンガポール・プライベート・リミテッド 複数のプロセッサに電力を供給する電源装置の出力を制御する方法、電源システムおよび情報処理装置
US20160077576A1 (en) * 2014-09-17 2016-03-17 Abhinav R. Karhu Technologies for collaborative hardware and software scenario-based power management
US9882383B2 (en) * 2014-12-23 2018-01-30 Intel Corporation Smart power delivery network
US9572104B2 (en) 2015-02-25 2017-02-14 Microsoft Technology Licensing, Llc Dynamic adjustment of user experience based on system capabilities
JP2016177689A (ja) 2015-03-20 2016-10-06 株式会社東芝 メモリシステム
CN108139960B (zh) * 2016-04-18 2020-07-07 华为技术有限公司 中央处理器cpu的调频方法、调频装置和处理设备
US10474221B2 (en) * 2018-01-30 2019-11-12 Hewlett Packard Enterprise Development Lp Power control in a storage subsystem
WO2019245558A1 (en) * 2018-06-21 2019-12-26 Hewlett-Packard Development Company, L.P. Increasing cpu clock speed to improve system performance
JP7515489B2 (ja) 2019-02-06 2024-07-12 マジック リープ, インコーポレイテッド 複数のプロセッサによって発生される総熱を限定するための標的意図ベースのクロック速度の決定および調節
US11630500B2 (en) 2019-07-31 2023-04-18 Hewlett-Packard Development Company, L.P. Configuring power level of central processing units at boot time
CN110442224A (zh) * 2019-09-17 2019-11-12 联想(北京)有限公司 电子设备的电源功率分配方法、电子设备和可读存储介质
CN114816033A (zh) * 2019-10-17 2022-07-29 华为技术有限公司 处理器的调频方法及装置、计算设备
KR102275529B1 (ko) * 2019-12-23 2021-07-09 주식회사 텔레칩스 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법
CN113078933B (zh) * 2020-01-03 2023-01-24 内蒙古龙图电气有限公司 一种基于北斗卫星通信的组网式终端控制器
US11971774B2 (en) * 2020-10-13 2024-04-30 Nvidia Corporation Programmable power balancing in a datacenter
CN116521355A (zh) * 2022-01-30 2023-08-01 台达电子企业管理(上海)有限公司 提升处理器峰值算力的方法、用于提升处理器峰值算力的***

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10268963A (ja) * 1997-03-28 1998-10-09 Mitsubishi Electric Corp 情報処理装置
US20020087904A1 (en) * 2000-12-28 2002-07-04 Zhong-Ning (George) Cai Method and apparatus for thermal sensitivity based dynamic power control
US7386739B2 (en) * 2005-05-03 2008-06-10 International Business Machines Corporation Scheduling processor voltages and frequencies based on performance prediction and power constraints
US7490254B2 (en) * 2005-08-02 2009-02-10 Advanced Micro Devices, Inc. Increasing workload performance of one or more cores on multiple core processors
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
WO2007056705A2 (en) * 2005-11-03 2007-05-18 Los Alamos National Security Adaptive real-time methodology for optimizing energy-efficient computing
CN101241392B (zh) * 2007-03-01 2012-07-04 威盛电子股份有限公司 根据工作温度的变化来动态改变功耗的微处理器及方法
US20080307240A1 (en) * 2007-06-08 2008-12-11 Texas Instruments Incorporated Power management electronic circuits, systems, and methods and processes of manufacture

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150079410A (ko) * 2013-12-28 2015-07-08 삼성전자주식회사 메모리 어레이를 위한 동적 열 예산 할당
KR102103842B1 (ko) * 2019-10-02 2020-05-29 한화시스템 주식회사 차세대 함정 전투체계의 트래픽 모델링 장치

Also Published As

Publication number Publication date
JP5564564B2 (ja) 2014-07-30
EP2457139A1 (en) 2012-05-30
JP2013500520A (ja) 2013-01-07
WO2011011673A1 (en) 2011-01-27
CN102483646B (zh) 2015-06-03
IN2012DN00933A (ko) 2015-04-03
CN102483646A (zh) 2012-05-30
WO2011011670A1 (en) 2011-01-27
WO2011011668A1 (en) 2011-01-27

Similar Documents

Publication Publication Date Title
KR20120046232A (ko) 성능 민감도에 따른 연산 유닛들의 차별적 성능 변경
US8447994B2 (en) Altering performance of computational units heterogeneously according to performance sensitivity
US8443209B2 (en) Throttling computational units according to performance sensitivity
TWI464570B (zh) 用於平衡具有多核心之計算裝置的效能與電力節省的方法、電腦可讀儲存媒體與多邏輯處理器系統
US8769316B2 (en) Dynamically allocating a power budget over multiple domains of a processor
US8892916B2 (en) Dynamic core pool management
US8984523B2 (en) Method for executing sequential code on the scalable processor at increased frequency while switching off the non-scalable processor core of a multicore chip
US20110022356A1 (en) Determining performance sensitivities of computational units
US9146761B2 (en) Virtualization system and resource allocation method thereof
TWI748135B (zh) 用於多處理器的任務排程的方法及系統
EP3295276B1 (en) Reducing power by vacating subsets of cpus and memory
KR101655030B1 (ko) 태스크 특성 기반의 여유시간 분배를 통한 동적 전압 주파수 스케일링 방법, 그 방법을 실행시키기 위하여 매체에 저장된 컴퓨터프로그램 및 그 매체
KR101863578B1 (ko) 컴퓨팅 시스템의 적응적인 캐시 메모리 접근 장치 및 그 방법
US20240211019A1 (en) Runtime-learning graphics power optimization
US20240211014A1 (en) Power-aware, history-based graphics power optimization
US20240004448A1 (en) Platform efficiency tracker
Rossi et al. On the impact of energy-efficient strategies in HPC clusters
JP2024514420A (ja) 動的システム電力負荷管理

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid