KR20220104722A - Workload-Based Clock Adjustment in Processing Units - Google Patents
Workload-Based Clock Adjustment in Processing Units Download PDFInfo
- Publication number
- KR20220104722A KR20220104722A KR1020227018163A KR20227018163A KR20220104722A KR 20220104722 A KR20220104722 A KR 20220104722A KR 1020227018163 A KR1020227018163 A KR 1020227018163A KR 20227018163 A KR20227018163 A KR 20227018163A KR 20220104722 A KR20220104722 A KR 20220104722A
- Authority
- KR
- South Korea
- Prior art keywords
- workload
- program
- gpu
- frequency
- identifying
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 94
- 230000004044 response Effects 0.000 claims description 38
- 238000000034 method Methods 0.000 claims description 35
- 230000008901 benefit Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000011664 signaling Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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 Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Power Sources (AREA)
- Executing Machine-Instructions (AREA)
Abstract
그래픽 프로세싱 유닛(GPU)(102)은 프로세싱 유닛에서 실행되는 프로그램 스레드(104, 106)를 식별하는 것에 기초하여 클록의 주파수를 조정하고, 프로그램 스레드는 실행될 워크로드(116, 117)에 기초하여 검출된다. 식별된 프로그램 스레드에 기초하여 클록 주파수를 조정함으로써, 프로세싱 유닛은 상이한 프로그램 스레드들의 상이한 프로세싱 요구들에 적응한다. 또한, 워크로드(workload)에 기초하여 프로그램 스레드를 식별함으로써, 프로세싱 유닛은 프로세싱 요구들에 기초하여 클록 주파수를 적응시킴으로써, 프로세싱 리소스들을 절약(conserving)한다.A graphics processing unit (GPU) 102 adjusts the frequency of the clock based on identifying the program threads 104 , 106 executing in the processing unit, and the program threads are detected based on the workload 116 , 117 to be executed. do. By adjusting the clock frequency based on the identified program thread, the processing unit adapts to the different processing needs of different program threads. Also, by identifying a program thread based on a workload, the processing unit conserves processing resources by adapting the clock frequency based on processing demands.
Description
프로세싱 시스템들은 종종 프로세싱 유닛들이 설계된 특정 동작들을 실행하기 위해 특수 프로세싱 유닛들을 이용한다. 예를 들어, 프로세싱 시스템은 프로세싱 시스템에 대한 그래픽 및 벡터 프로세싱 동작들을 실행하기 위해 그래픽 프로세싱 유닛 (GPU)을 이용할 수 있다. 일부 경우들에서, 프로세싱 유닛은 프로세싱 시스템에서 실행되는 상이한 프로그램들을 대신하여 동작들을 동시에 수행한다. 예를 들어, 프로세싱 시스템은 가상화된 컴퓨팅 환경을 구현할 수 있고, 프로세싱 시스템은 하나 이상의 중앙 프로세싱 유닛(CPU)에서 다수의 가상 머신들(VM들)을 동시에 실행한다. VM들 각각은 그래픽 또는 벡터 프로세싱 동작들을 실행하도록 프로세싱 시스템의 GPU에 요청하며, 따라서 GPU는 상이한 VM들을 대신하여 동작들을 동시에 실행하는 임무를 수행한다. 그러나, 상이한 프로그램들은 상이한 전력 요건들, 상이한 최대 클록 주파수 요건들 등과 같은 상이한 요건들을 가질 수 있다. 상이한 요건들은 GPU(또는 다른 프로세싱 유닛)에 상이한 프로세싱 요구들을 부과시키고, 그에 의해 전체적으로 프로세싱 시스템에 부정적인 영향을 미친다.Processing systems often use specialized processing units to perform the specific operations for which the processing units are designed. For example, a processing system may utilize a graphics processing unit (GPU) to perform graphics and vector processing operations for the processing system. In some cases, the processing unit concurrently performs operations on behalf of different programs executing on the processing system. For example, the processing system may implement a virtualized computing environment, wherein the processing system concurrently executes multiple virtual machines (VMs) in one or more central processing units (CPUs). Each of the VMs requests the GPU of the processing system to execute graphics or vector processing operations, so the GPU is tasked with executing the operations concurrently on behalf of the different VMs. However, different programs may have different requirements, such as different power requirements, different maximum clock frequency requirements, and the like. Different requirements impose different processing demands on the GPU (or other processing unit), thereby negatively impacting the processing system as a whole.
본 개시는 첨부된 도면을 참조함으로써 당업자에게 더 잘 이해될 수 있고, 많은 특징 및 장점이 명백해질 수 있다. 다른 도면에서 동일한 참조 기호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시예들에 따른 실행 프로그램 스레드의 검출에 기초하여 클록 주파수를 조정(adjust)하는 그래픽 프로세싱 유닛(GPU)을 포함하는 프로세싱 시스템의 블록도이다.
도 2는 일부 실시예들에 따라 GPU의 워크로드(workload)의 변화들에 기초하여 클록 주파수를 조정하는 도 1의 GPU의 예를 예시하는 다이어그램이다.
도 3은 일부 실시예들에 따른 도 1의 GPU의 클록 주파수 조정 모듈의 블록도이다.
도 4는 일부 실시예들에 따른 실행 프로그램 스레드를 검출하는 것에 기초하여 프로세싱 유닛의 클록 주파수를 조정하는 방법의 흐름도이다.BRIEF DESCRIPTION OF THE DRAWINGS The present disclosure may be better understood by those skilled in the art by reference to the accompanying drawings, and many features and advantages may become apparent to those skilled in the art. The use of the same reference symbols in different drawings indicates similar or identical items.
1 is a block diagram of a processing system including a graphics processing unit (GPU) that adjusts a clock frequency based on detection of an executing program thread in accordance with some embodiments.
FIG. 2 is a diagram illustrating an example of the GPU of FIG. 1 adjusting a clock frequency based on changes in the workload of the GPU in accordance with some embodiments.
3 is a block diagram of a clock frequency adjustment module of the GPU of FIG. 1 in accordance with some embodiments.
4 is a flow diagram of a method of adjusting a clock frequency of a processing unit based on detecting an executing program thread in accordance with some embodiments.
도 1-4는 중앙 프로세싱 유닛(CPU)에서 실행되는 프로그램 스레드를 식별하는 것에 기초하여 GPU(graphics processing unit)에서 클록의 주파수를 조정하기 위한 기법들을 예시하며, 프로그램 스레드는 실행될 워크로드에 기초하여 검출된다. 식별된 프로그램 스레드에 기초하여 클록 주파수를 조정함으로써, 프로세싱 유닛은 동시에 실행되는 프로그램들의 상이한 프로세싱 요구들에 적응한다. 또한, 워크로드(workload)에 기초하여 프로그램 스레드를 식별함으로써, 프로세싱 유닛은 프로세싱 요구들에 기초하여 클록 주파수를 적응시킴으로써, 프로세싱 리소스들을 절약(conserving)한다.1-4 illustrate techniques for adjusting the frequency of a clock in a graphics processing unit (GPU) based on identifying a program thread executing in the central processing unit (CPU), the program thread based on the workload to be executed; detected. By adjusting the clock frequency based on the identified program thread, the processing unit adapts to the different processing needs of concurrently executing programs. Also, by identifying a program thread based on a workload, the processing unit conserves processing resources by adapting the clock frequency based on processing demands.
예를 통해 예시하기 위해, 일부 실시예들에서, CPU는 2개의 상이한 프로그램들(예를 들어, 2개의 상이한 가상 머신들)을 동시에 실행한다. Program1으로 지정된 프로그램 중 하나는 예를 들어 다른 프로그램 또는 시스템과의 호환성을 유지하기 위해 상대적으로 낮은 주파수로 동작을 실행하는 데 필요한 프로그램이다. Program2로 지정된 다른 프로그램은 적어도 일부 상황에서는 성능 목표를 충족시키기 위해 상대적으로 높은 주파수로 동작을 실행하는 데 필요한 프로그램이다. 통상적으로, Program1 및 Program2에 대한 동작들을 동시에 실행하는 GPU의 클록은, 어떤 프로그램의 동작들이 GPU에서 실행되고 있는지에 관계없이, 상이한 클록 주파수들 중 더 높게 설정됨으로써, Program1에 대한 추가적인 소프트웨어 또는 하드웨어가 그 호환성 요건들을 준수할 것을 요구한다. 본 명세서의 기술들을 사용하여, GPU는 Program1 및 Program2 중 어느 것이 실행되고 있는지, 그리고 실행 중인 프로그램의 프로세싱 요구들이 실행을 위해 클록 주파수의 조정이 바람직한지 여부를 검출한다.To illustrate by way of example, in some embodiments, the CPU executes two different programs (eg, two different virtual machines) concurrently. One of the programs designated as Program1 is, for example, a program required to execute operations at a relatively low frequency to maintain compatibility with other programs or systems. Another program, designated Program2, is the program required to execute operations at a relatively high frequency to meet performance targets, at least in some circumstances. Typically, the clock of the GPU executing the operations for Program1 and Program2 simultaneously is set higher among the different clock frequencies, regardless of which program's operations are being executed on the GPU, so that additional software or hardware for Program1 is not It requires compliance with its compatibility requirements. Using the techniques herein, the GPU detects which of Program1 and Program2 is being executed, and whether it is desirable to adjust the clock frequency for execution of the processing demands of the executing program.
그 프로세싱 요건들을 충족시키기 위한 프로그래밍하고, 및 그에 따라 GPU의 클록 주파수를 조정한다. GPU는 이에 따라, Program1 및 Program2 각각에 대한 프로세싱 요건들을 충족시키고, 변화하는 워크로드에 따라 동적으로 수행하여 프로세싱 리소스들을 절약(conserving)한다.Program to meet its processing requirements, and adjust the clock frequency of the GPU accordingly. The GPU thus meets the processing requirements for each of Program1 and Program2, and performs dynamically according to a changing workload, conserving processing resources.
또한, 프로그램 식별자 값 또는 특정된 시간 기간들과 같은 정적 조건에만 의해서가 아니라, 검출된 워크로드에 기초하여 클록 주파수를 변경함으로써, GPU는 주어진 워크로드의 요구들에 기초하여 각각의 프로그램에 대한 프로세싱 사양들을 충족시킬 수 있고, 이에 의해 프로세서 리소스들을 절약할 수 있다. 예를 들어, 일부 경우들에서, 더 높은-성능 프로그램은, 프로세싱 사양들이 더 낮은 클록 주파수를 가질 수 있도록, 상대적으로 가벼운 워크로드를 GPU에 제공할 수 있다. 본 명세서의 기술들을 사용하여, GPU는, 대응하는 프로그램이 상대적으로 높은 특정 클록 주파수와 연관되더라도, 상대적으로 가벼운 워크로드 하에서 더 낮은 주파수에서 클록 신호의 주파수를 유지함으로써, 이들이 프로그램 사양을 충족시킬 필요가 없을 때 GPU 리소스를 절약한다.Also, by changing the clock frequency based on the detected workload, and not solely by static conditions such as a program identifier value or specified time periods, the GPU can process processing for each program based on the needs of a given workload. specifications can be met, thereby saving processor resources. For example, in some cases, a higher-performance program may present a relatively light workload to the GPU, such that processing features may have a lower clock frequency. Using the techniques herein, the GPU maintains the frequency of the clock signal at a lower frequency under relatively light workloads, even if the corresponding program is associated with a relatively high specific clock frequency, so that they need to meet the program specification. Saves GPU resources when not present.
도면들을 참조하면, 도 1은 일부 실시예들에 따른 중앙 프로세싱 유닛(CPU)(101) 및 그래픽 프로세싱 유닛(GPU)(102)을 포함하는 프로세싱 시스템(100)의 블록도를 도시한다. 프로세싱 시스템(100)은 일반적으로 전자 디바이스를 대신하여 작업들을 수행하기 위해 컴퓨터 프로그램들로서 구성되는 명령어(instruction)들을 실행하도록 구성된다. 따라서, 상이한 실시예들에서, 프로세싱 시스템(100)은 데스크탑 또는 랩탑 컴퓨터, 서버, 스마트폰, 태블릿, 게임 콘솔 등과 같은 전자 디바이스의 일부이다. 프로세싱 시스템(100)은 도 1에 예시되지 않은 추가적인 컴포넌트들 및 모듈들을 포함한다. 예를 들어, 일부 실시예들에서, 프로세싱 시스템은 전자 디바이스를 대신하여 작업들을 수행하기 위해 하나 이상의 메모리 제어기들, 입력/출력 제어기들, 네트워크 인터페이스들 등을 포함한다.Referring to the drawings, FIG. 1 shows a block diagram of a
CPU(101)는 일반적으로 다수의 프로그램들 및 대응하는 프로그램 스레드들을 동시에 실행하도록 구성된다. 본 명세서에서 사용되는 바와 같이, 프로그램 스레드는 개별 프로그램(예를 들어, 운영 체제, 애플리케이션 프로그램 등) 또는 멀티스레드 프로그램의 개별 스레드 중 어느 하나를 지칭한다. 도시된 예에서, CPU(101)는 2개의 프로그램 스레드, 지정된 프로그램(103) 및 프로그램(104)을 동시에 실행한다. 그러나, 도 1과 관련하여 설명된 기술들은, 다른 실시예들에서, N개 프로그램들을 동시에 실행하는 프로세싱 시스템에서 구현되고, 여기서 N은 1보다 큰 정수임이 이해될 것이다. 따라서, 일부 실시예들에서, CPU(101)는 다수의 가상 머신들을 동시에 실행함으로써 가상화된 컴퓨팅 환경을 구현하고, 여기서 프로그램들(103 및 104)은 상이한 가상 머신들에 의해 실행되는 프로그램들에 대응한다. 예를 들어, 일부 실시예들에서, 프로그램(103)은 하나의 가상 머신과 연관된 운영 체제이고, 프로그램(104)은 프로세싱 시스템에서 실행되는 상이한 가상 머신과 연관된 운영 체제이다. 설명의 목적으로, 각각의 프로그램(103 및 104)은 상이한 특정 프로세싱 속도, 전력 소비 사양 등과 같은 상이한 프로세싱 사양을 갖는 것으로 가정한다. 예를 들어, 일부 실시예들에서, 프로그램(103)은 프로세싱 시스템의 다른 프로그램들 또는 하드웨어 컴포넌트들에 대한 역방향 호환성(backward compatibility)을 제공하기 위해 상대적으로 낮은 주파수에서 실행되도록 특정된 "레거시" 프로그램인 반면, 프로그램(104)은 성능 목표들을 충족시키기 위해 상대적으로 높은 주파수에서 실행되도록 특정된 새로운 프로그램이다. 본 명세서에서 추가로 설명되는 바와 같이, GPU(102)는, 프로그램들(103 및 104) 각각이 그 프로세싱 사양들을 준수하도록, 특정된 파라미터들, 및 특히 GPU(102)의 클록 주파수를 조정할 수 있다.
GPU(102)는 일반적으로 프로세싱 시스템에 대한 그래픽 및 벡터 프로세싱 동작들을 수행하도록 구성된다. 예시하기 위해, 일부 실시예들에서 프로그램들(103 및 104)을 실행하는 과정에서 CPU(101)는 GPU(102)가 지정된 동작들을 수행할 것을 요청하는, 본 명세서에서 GPU 명령(command)들(예를 들어, 명령들(105 및 107))로 지칭되는 특정 명령들을 생성한다. GPU 명령들의 예들은, GPU가 디스플레이를 위해 지정된 객체를 드로우(draw)하도록 요청하는 드로우 명령들(draw commands), GPU가 지정된 벡터 연산(vector operation)을 수행하도록 요청하는 벡터 명령들 등을 포함한다. 하나 이상의 CPU들은 실행을 위해 GPU 명령들을 GPU (102)에 제공한다. 각각의 명령은 프로그램들(103 및 104) 중 대응하는 프로그램에 의해 하달되고(issued) 그와 연관된다. 따라서, 예를 들어, 일부 실시예들에서, 명령(105)은 GPU(102)가 프로그램(103)을 대신하여 하나 이상의 객체들을 드로우하도록 요청하는 드로우 명령이고, 명령(107)은 GPU(102)가 프로그램(104)을 대신하여 하나 이상의 객체들을 드로우하도록 요청하는 드로우 명령이다.
CPU(101)는 프로그램들(103 및 104)을 동시에 실행한다는 것이 이해될 것이다. 따라서, 일부 실시예들에서, CPU(101)는 실행을 위해 시간 다중화된 방식으로 프로그램들(103 및 104) 중 상이한 것들과 연관된 상이한 명령들을 GPU(102)에 제공한다. 예시하기 위해, 일부 실시예들에서, CPU(101)는 프로그램(103)을 대신하여 실행하기 위해 GPU(102)에 명령(105)을 제공하고, 이어서 프로그램(104)을 대신하여 실행하기 위해 명령(107)을 제공하며, 이어서 프로그램(103)을 대신하여 실행하기 위해 다른 명령(도시되지 않음)를 제공한다. 본 명세서에서 추가로 설명되는 바와 같이, 일부 경우들에서, 상이한 프로그램들, 및 따라서 상이한 명령들은 프로그램들이 특정된 품질 또는 특정된 디스플레이 프레임 레이트와 같은 다른 요건들을 충족시키기 위해 상이한 요구되는 클록 주파수들과 같은 상이한 특정된 프로세싱 요건들을 갖는다. GPU(102)는 명령들에 기초하여 생성된 워크로드들을 분석함으로써 상이한 프로세싱 요건들을 식별하고, 식별된 프로세싱 요건들에 기초하여 클록 주파수와 같은 프로세싱 파라미터들을 조정한다. GPU(102)는 이에 의해, 고정된 프로세싱 파라미터 값들에 기초하기보다는, 프로세싱 요구들 및 특정된 프로세싱 요건들의 조합에 기초하여, 프로세싱 파라미터들을 동적으로 조정한다.It will be appreciated that
CPU 명령들 (예를 들어, 명령들 (105 및 107))의 실행을 용이하게 하기 위해, GPU(102)는 스케줄러(106) 및 컴퓨팅 유닛들(115)의 세트를 포함한다. 컴퓨팅 유닛들(115)의 세트는 복수의 컴퓨팅 유닛들 (예를 들어, 컴퓨팅 유닛 (118))을 포함하고, 각각의 컴퓨팅 유닛은 그래픽들 및 벡터 프로세싱 동작들을 수행하도록 구성된 다수의 프로세싱 엘리먼트들, 예컨대, 단일 명령어, 다수의 데이터 (SIMD) 유닛들, 스트림 프로세서들 등을 포함한다. 일부 실시예들에서, 각각의 컴퓨팅 유닛은 하나 이상의 브랜치 유닛들, 스칼라 유닛들, 벡터 유닛들, 레지스터 파일들 등과 같은 프로세싱 엘리먼트들을 지원하기 위한 추가적인 모듈들을 포함한다. 스케줄러(106)는 하나 이상의 CPU들로부터 수신된 명령들에 기초하여 컴퓨팅 유닛들(115)의 세트에서 웨이브프론트(wavefronts)들의 형태로 동작들을 스케줄링하는 모듈이다. 일부 실시예들에서, GPU(102)는 수신된 명령들을 하나 이상의 동작들로 디코딩하기 위해 명령 프로세서 또는 다른 모듈을 포함하고 스케줄링을 위해 동작들을 스케줄러(106)에 제공한다. 또한, 일부 실시예들에서, 스케줄러(106)는 상이한 스케줄링 모듈들로 구성되고, 각각의 스케줄링 모듈은 GPU(102)의 상이한 리소스들에서 동작들을 스케줄링한다. 예를 들어, 일부 실시예들에서, 스케줄러(106)는 컴퓨팅 유닛들(115)에서 그래픽들 및 벡터 프로세싱 동작들을 스케줄링하기 위한 스케줄링 모듈, GPU(102)의 메모리 리소스들에서 메모리 동작들을 스케줄링하기 위한 스케줄링 모듈 등을 포함한다.To facilitate execution of CPU instructions (eg,
컴퓨팅 유닛들(115)(뿐만 아니라 다른 모듈들)에서의 동작들을 동기화하기 위해, GPU(102)는 클록 신호(CK)를 생성하기 위해 클록 제어 모듈(110)을 이용하고 CK 신호를 컴퓨팅 유닛들(115) 각각에 제공한다. 일부 실시예들에서, 클록 제어 모듈(110)은 클록 신호(CK)의 주파수를 지정된 주파수로 잠그기(lock) 위한 주파수 고정 루프(frequency locked loop, FLL)와 같은 하나 이상의 제어 루프들을 포함하며, 지정된 주파수는 본 명세서에서 추가로 설명되는 바와 같이 제어 시그널링을 통해 조정가능하다. 특히, GPU(102)는 각각의 프로그램이 그 프로세싱 사양을 준수하도록 프로그램들(103 및 104)에 의해 GPU(102) 상에 배치된 프로세싱 요구들에 기초하여 클록 신호(CK)의 주파수를 설정하기 위해 클록 제어 모듈(110)에 대한 제어 시그널링을 설정한다.To synchronize operations in computing units 115 (as well as other modules),
예시하기 위해, 수신된 명령 또는 명령들의 세트에 기초한 GPU(102)의 리소스들의 전체 사용은 본 명세서에서 워크로드 (예를 들어, 워크로드들 (116 및 117))로서 지칭된다. 더 무겁거나 더 높은 워크로드는 GPU(102)의 더 많은 리소스를 사용하는 반면, 더 가볍거나 더 낮은 워크로드는 GPU(102)의 더 적은 리소스를 사용한다. 따라서, 프로그램들(103 및 104) 중 특정 하나에 의해 생성된 워크로드는 프로그램에 의해 생성된 명령들에 기초한다. 또한, 프로그램에 의해 생성된 워크로드는 일반적으로 그 프로그램에 대한 프로세싱 사양과 상관 관계가 있다. 따라서, 예를 들어, 실행 주파수가 상대적으로 높은 프로그램(즉, 빠르게 실행될 것으로 예상되거나 특정된 프로그램)은 일반적으로 더 무거운 워크로드(즉, 실행에 더 많은 리소스가 필요한 워크로드)를 생성한다. 반면, 특정된 실행 주파수가 상대적으로 낮은 프로그램은 더 가벼운 워크로드(즉, 실행을 위해 더 많은 리소스가 필요한 워크로드)를 생성한다.To illustrate, the overall use of resources of
상이한 특정된 실행 주파수들을 갖는 프로그램들을 동시에 실행하는 것을 수용하기 위해, GPU(102)는 클록 주파수 조정 모듈 (CFAM) (108)을 포함한다. CFAM(108)은 GPU(102)의 현재 워크로드를 나타내는 파라미터들을 모니터링하고, 그에 의해, 사실상, 프로그램들(103 및 104) 중 어느 것이 GPU(102)에서 현재 실행되고 있는지를 검출하고, 검출된 프로그램에 대한 특정된 클록 주파수로 클록 신호 (CK)의 주파수를 설정하기 위해 클록 제어 모듈(110)에 제어 시그널링을 제공한다. CFAM(108)에 의해 모니터링되는 파라미터들의 예들은, 일부 실시예들에서, 특정된 양의 시간에서 컴퓨팅 유닛들(115)에서 스케줄러(106)에 의해 스케줄링된 웨이브프론트들의 수, 특정된 양의 시간에서 GPU(102)에 의해 수신된 드로우 명령들의 수, 드로우 또는 디스패치 명령의 유형, 컴파일러에 의해 제공되는 힌트, 등, 또는 이들의 임의의 조합을 포함한다. 모니터링된 파라미터들이 워크로드 임계값을 초과하는 경우, CFAM(108)은 CK 신호의 주파수를 더 높은 특정 주파수(F2)로 증가시킨다. 모니터링된 파라미터들이 특정된 양의 시간 동안 워크로드 임계값 아래로 떨어지는 것에 응답하여, CFAM(108)은 CK 신호의 클록 주파수를 더 낮은 특정 주파수(F1)로 감소시킨다. 일부 실시예들에서, 더 높은 및 더 낮은 특정 주파수들(F2 및 F1)은 각 프로그램에 의해 GPU(102)에 제공되는 명령 등을 통해, 대응하는 프로그램의 초기화 동안 프로그램들(103 및 104)에 의해 표시된다. 또한, 일부 실시예들에서, 워크로드 임계값 및 주파수들(F1 및 F2)은 프로그램가능한 값들로서, 프로그래머가 실행중인 프로그램들의 성능을 원하는 레벨로 튜닝할 수 있게 한다. To accommodate concurrently executing programs having different specified execution frequencies,
예를 통해 예시하기 위해, 일부 실시예들에서, CFAM(108)에 의해 모니터링되는 파라미터는 프로그램들(103 및 104) 각각으로부터 수신되고 스케줄러(106)에 의해 실행되도록 스케줄링된 드로우 명령들의 수이다. 특정된 워크로드 임계값을 초과하는 특정된 양의 시간 동안의 드로우 명령들의 수(예를 들어, 100회 실행 사이클들에 걸쳐 10회 이상의 드로우 명령들)에 응답하여, CFAM(108)은 더 높은 특정된 클록 주파수와 연관된 프로그램이 실행되고 있다고 가정하고, 높은 수의 리소스들을 요구한다. 이에 응답하여, CFAM(108)은 CK 신호의 주파수를 더 높은 특정 주파수(F2)로 증가시킨다. 수신된 드로우 명령의 수가 특정된 워크로드 임계값 아래로 떨어지면, CFAM(108)은 더 낮은 특정 주파수와 연관된 프로그램이 실행되고 있다고 가정한다. 이에 응답하여, CFAM(108)은 CK 신호의 주파수를 더 낮은 특정 주파수(F1)로 감소시킨다.To illustrate by way of example, in some embodiments, the parameter monitored by
다른 예로서, 일부 실시예들에서, CFAM(108)에 의해 모니터링된 파라미터는 스케줄러(106)에 의해 컴퓨팅 유닛들(115)에서 실행되도록 스케줄링된 웨이브프론트들의 수이다. 워크로드 임계값을 초과하는 스케줄링된 웨이브프론트들의 수(예를 들어, 500 실행 사이클들에 걸쳐 100개 초과의 웨이브프론트들)에 응답하여, CFAM(108)은 더 높은 특정된 클록 주파수와 연관된 프로그램이 실행되고 있다고 가정하고, 높은 수의 리소스들을 요구한다. 이에 응답하여, CFAM(108)은 CK 신호의 주파수를 더 높은 특정 주파수(F2)로 증가시킨다. 스케줄링된 웨이브프론트들의 수가 특정된 워크로드 임계값 아래로 떨어질 때, CFAM(108)은 더 낮은 특정 주파수와 연관된 프로그램이 실행되고 있다고 가정한다. 이에 응답하여, CFAM(108)은 CK 신호의 주파수를 더 낮은 특정 주파수(F1)로 감소시킨다.As another example, in some embodiments, the parameter monitored by the
다른 실시예들에서, CFAM(108)에 의해 모니터링된 파라미터는 특정된 객체를 드로우하기 위한 드로우 명령들의 수, 정점(vertice)들의 임계 수를 갖는 객체 등과 같은 특정된 유형의 드로우 명령들의 수이다. CFAM(108)은 명령들(105 및 107)에 포함된 명령 파라미터들로부터 드로우 명령의 유형을 결정한다. 예를 들어, 일부 실시예들에서, 각각의 명령은 드로잉될 객체의 유형, 객체의 정점들의 수 등을 나타낸다. 다른 실시예들에서, 이들 파라미터들은 GPU(102)의 명령 프로세서에 의해 식별된다.In other embodiments, the parameter monitored by the
상기 예들에 의해 표시된 바와 같이, 일부 실시예들에서, CFAM(108)은 스케줄러(106)에서 저장되거나 모니터링된 정보에 기초하여 GPU의 워크로드를 식별한다. 예를 들어, 일부 실시예들에서, 스케줄러(106)는 CPU(101)로부터 수신된 드로우 명령들의 수, 수신된 드로우 명령들의 유형들, 실행을 위해 스케줄링된 웨이브프론트들의 수 등, 또는 이들의 임의의 조합을 나타내는 데이터를 저장하는 레지스터들 또는 다른 메모리 구조들을 유지한다. 저장된 정보에 기초하여, CFAM (108)은 GPU (102)에 대한 전체 워크로드를 식별하고, 본 명세서에서 설명된 바와 같이 CK 클록 신호의 클록 주파수를 조정한다.As indicated by the examples above, in some embodiments, the
프로그램 식별자 값 또는 특정된 시간 기간들과 같은 정적 조건에만 의존하지 않고, 검출된 워크로드에 기초하여 클록 주파수를 변경함으로써, GPU(102)는 각각의 프로그램에 대한 프로세싱 사양들을 동적으로 충족시킬 수 있고, 이에 의해 프로세서 리소스들을 절약한다. 예를 들어, 일부 경우들에서, 고성능 프로그램은 (예를 들어, 상대적으로 간단한 드로우 명령을 실행하기 위해) GPU(102)에 상대적으로 가벼운 워크로드를 제공할 수 있고, 그 결과 GPU(102)는 CK 신호의 주파수를 더 낮은 주파수(F1)에서 유지하게 된다. 대조적으로, GPU(102)가 프로그램 식별자와 같은 정적 조건에 의해서만 클록 주파수를 변경했다면, CK 신호의 주파수는 상응하는 성능 이점 없이 더 높은 주파수로 증가될 것이다.By changing the clock frequency based on the detected workload, rather than relying solely on static conditions such as program identifier values or specified time periods,
도 2는 일부 실시예들에 따라 검출된 워크로드에 기초하여 클록 신호(CK)의 주파수를 조정하는 CFAM(108)의 예를 도시하는 다이어그램(200)을 예시한다. 다이어그램(200)은 시간을 나타내는 x-축 및 클록 신호(CK)의 주파수를 나타내는 y-축을 도시한다. 다이어그램(200)은 시간이 경과함에 따라 변화하는 클록 신호(CK)의 주파수의 예를 나타내는 플롯(201)을 추가로 도시한다.2 illustrates a diagram 200 illustrating an example of a
도 2의 예에서, 프로그램(103)은 F1로 지정된 더 낮은 특정 주파수와 연관되고 프로그램(104)은 더 높은 특정 주파수와 연관되는 것으로 가정한다. 플롯(201)의 예시된 예에서, 초기 시간(202)에서, GPU(102)의 워크로드는 하나 이상의 워크로드 파라미터들에 의해 표시된 바와 같이 워크로드 임계값 미만이다. 이것은 GPU(102)가 프로그램(103)을 대신하여 명령들을 실행할 가능성이 있음을 나타낸다. 따라서, 그리고 워크로드가 워크로드 임계값 아래에 있는 것에 응답하여, CFAM(108)은 클록 신호(CK)의 주파수를 더 낮은 주파수(F1)로 설정한다.In the example of FIG. 2 , it is assumed that program 103 is associated with a lower specific frequency designated F 1 and
시간(202) 이후의 시간(203)에서, GPU(102)에서의 워크로드는 증가하여, 워크로드는 워크로드 임계값을 초과한다. 따라서, 워크로드는 GPU(102)가 프로그램(104)을 대신하여 명령들을 실행하고 있음을 나타낸다. 따라서, 그리고 워크로드 임계값을 초과하여 증가하는 워크로드에 응답하여, CFAM(108)은 시간(204)에서 주파수가 더 높은 특정 주파수(F2)에 도달할 때까지 클록 신호(CK)의 주파수를 증가시키기 시작한다. 예시된 바와 같이, CFAM(108)은 시간(203)에서 클록 주파수를 F2로 즉시 설정하기 보다는 시간에 걸쳐(시간(203)과 시간(204) 사이) 클록 신호를 주파수(F1)로부터 주파수(F2)로 램핑한다. 일부 실시예에서, 시간(203)과 시간(204) 사이의 시간은 50마이크로초 이하이다. 주파수(F1)로부터 주파수(F2)로 클록을 램핑함으로써, GPU(102)는 실행을 중지하고 컴퓨팅 유닛들(115)로부터 데이터를 플러싱(flushing)하기 보다는 시간(203 및 204) 사이에서 동작들을 계속 실행한다.At
시간(204)과 시간(205) 사이에서, GPU(102)의 워크로드는 워크로드 임계값을 초과하고, 이에 응답하여 CFAM(108)은 클록 신호(CK)의 주파수를 더 높은 주파수(F2)로 유지한다. 시간(205)에서, GPU(102)의 워크로드는 임계값 아래로 떨어진다. 이에 응답하여, CFAM(108)은 더 낮은 주파수(F1)로 복귀하기 위해 클록 신호(CK)의 주파수를 램핑(ramping)하기 시작한다. 일부 실시예들에서, CFAM(108)은 워크로드 임계값 주위의 짧은 편위(excursion)가 클록 신호(CK)의 주파수에 대한 빈번한 조정을 야기하는 것을 방지하기 위해 히스테리시스를 이용한다. 예를 들어, 일부 실시예들에서, CFAM(108)은 GPU(102)의 워크로드가 지정된 양의 시간 동안 임계값 초과인 것에 응답하여 클록 신호 주파수의 조정을 개시한다.Between
도 3은 일부 실시예들에 따른 CFAM(108)의 예를 도시한다. 도시된 예에서, CFAM(108)은 제어 모듈(320), 프로그램 주파수 레지스터들의 세트(322), 및 워크로드 임계값 레지스터들의 세트(324)를 포함한다. 프로그램 주파수 레지스터들(322)은 GPU(102)의 프로세싱 시스템에서 실행되는 각각의 프로그램에 대한 주파수 값들을 저장하는 프로그램 가능한 레지스터들의 세트이다. 일부 실시예들에서, 각각의 실행되는 프로그램은 디바이스 드라이버를 통해 GPU(102)에 명령들을 전송한다. 프로그램이 프로세싱 시스템에서 실행을 시작할 때, 프로그램은 프로그램에 대한 특정된 실행 주파수를 표시하는 디바이스 드라이버 주파수 정보를 전송한다. 이에 응답하여, 디바이스 드라이버는 프로그램에 대한 특정된 실행 주파수로 프로그램 주파수 레지스터들(322) 중 대응하는 하나를 프로그래밍한다.3 shows an example of a
워크로드 임계값 레지스터들(324)은 GPU(102)의 프로세싱 시스템에서 실행되는 각각의 프로그램에 대한 워크로드 임계값들을 저장하는 프로그램가능 레지스터들의 세트이다. 일부 실시예들에서, 각각의 실행 프로그램은 워크로드 프로파일과 연관되며, 이는 프로그램에 의해 생성된 가능성 있는 워크로드들을 표시한다. 일부 실시예들에서, 워크로드 프로파일은 프로그램의 개발 동안 소프트웨어 개발자에 의해 생성된다. 다른 실시예들에서, 워크로드 프로파일은 프로그램이 실행되는 제1 N회 동안 GPU(102)에 의해 개발되며, 여기서 N은 정수이다. 예를 들어, 프로그램이 실행되는 제1 N회에, GPU(102)는 프로그램을 대신하여 실행을 위해 스케줄링된 웨이브프론트의 수, 프로그램을 대신하여 CPU(101)에 의해 하달된 드로우 명령의 수 등과 같이 프로그램에 의해 생성된 워크로드를 측정하기 위해 성능 모니터(도시되지 않음)를 이용한다. 제어 모듈(320)은 프로그램의 평균 워크로드를 표시하는 워크로드 임계값(예를 들어, 프로그램에 의해 생성된 평균 웨이브프론트들의 수 또는 드로우 명령들의 평균 수, 또는 이들의 조합)을 생성하고, 워크로드 임계값 레지스터들(324) 중 대응하는 하나에 워크로드 임계값을 저장한다.The workload threshold registers 324 are a set of programmable registers that store workload thresholds for each program executing in the processing system of the
동작시, 적어도 2개의 프로그램들이 GPU(102)의 프로세싱 시스템에서 동시에 실행될 때, 제어 모듈(320)은 스케줄러(106)로부터, 스케줄링된 웨이브프론트들의 수 또는 특정된 양의 시간에서 수신된 드로우 명령들의 수와 같은 정보를 수신한다. 제어 모듈(320)은 워크로드 정보를 워크로드 임계값 레지스터(324)에 저장된 워크로드 임계값과 비교한다. 워크로드 임계값이 초과하는 것에 응답하여, 제어 모듈(320)은 초과된 임계값과 연관된 프로그램을 결정하고, 프로그램 주파수 레지스터(322)로부터 프로그램에 대한 프로그램 주파수를 검색한다. 그런 다음 제어 모듈(320)은 CK 클록 신호의 주파수를 검색된 프로그램 주파수로 조정하기 위해 제어 시그널링을 클록 제어 모듈(110)에 전송한다.In operation, when at least two programs are concurrently executed in the processing system of
GPU 워크로드가 워크로드 임계값 아래로 떨어졌다는 것을 표시하는 워크로드 정보에 응답하여, 제어 모듈(320)은 워크로드 임계값 레지스터들(324)에 저장된 다음-낮은 워크로드 임계값과 연관된 프로그램을 결정한다. 제어 모듈(320)은 프로그램 주파수 레지스터들(322)로부터 식별된 프로그램에 대한 프로그램 주파수를 검색하고, CK 클록 신호의 주파수를 검색된 프로그램 주파수로 조정하기 위해 제어 시그널링을 클록 제어 모듈(110)에 전송한다.In response to the workload information indicating that the GPU workload has fallen below the workload threshold, the
도 4는 일부 실시예들에 따라 검출된 워크로드에 의해 표시된 바와 같은 실행 프로그램을 식별하는 것에 기초하여 프로세싱 유닛에서 클록 신호의 주파수를 설정하는 방법(400)의 흐름도를 도시한다. 설명의 목적들을 위해, 방법(400)은 도 1의 GPU(102)에서의 예시적인 구현예와 관련하여 설명되지만, 다른 실시예들에서 방법(400)은 다른 프로세싱 유닛들 및 다른 프로세싱 시스템들에서 구현된다는 것이 이해될 것이다. 흐름도로 돌아가면, 블록(402)에서, GPU(102)는 프로세싱 시스템에서 실행되고 있는 각각의 프로그램에 대한 워크로드 임계값을 결정한다. 위에서 언급된 바와 같이, 일부 실시예들에서, 각각의 실행 프로그램은 프로그램의 개발 동안 생성된 워크로드 프로파일에 기초하여 초기화 시에 워크로드 임계값을 제공한다. 다른 실시예들에서, GPU(102)는 프로그램이 실행되는 제1 N회 동안 프로그램에 의해 생성된 평균 워크로드를 결정함으로써 실행 프로그램에 대한 워크로드 임계값을 식별한다. 또 다른 실시예들에서, GPU(102)는 프로그램이 실행될 때마다 실행 중인 프로그램에 의해 생성된 워크로드를 기록하고, 프로그램이 실행된 마지막 M회 동안 프로그램에 의해 생성된 평균 워크로드를 결정함으로써 워크로드 임계값을 결정하도록 구성되고, 여기서 M은 정수이다. GPU(102)는 워크로드 임계값 레지스터들 (324)의 대응하는 레지스터에서 워크로드 임계값을 기록한다.4 shows a flow diagram of a
블록(404)에서, GPU(102)는 프로세싱 시스템에서 동시에 실행되는 프로그램들에 대한 특정된 클록 주파수들을 결정한다. 위에서 표시된 바와 같이, 일부 실시예들에서, 특정된 클록 주파수는 디바이스 드라이버를 통해 각각의 실행 프로그램에 의해 GPU(102)에 제공된다. GPU(102)는 특정된 클록 주파수들을 프로그램 주파수 레지스터들(322) 중 대응하는 것들에 저장한다.At
블록(406)에서, CFAM(108)은 컴퓨팅 유닛들(115)에서 스케줄링된 웨이브프론트들의 수, 특정된 양의 시간 내에 GPU(102)에 의해 수신된 드로우 명령들의 수 등과 같이, 스케줄러(106)에 의해 제공된 정보에 기초하여 GPU(102)의 워크로드를 모니터링한다. 블록(408)에서, CFAM(108)은 워크로드가 워크로드 레지스터들(324)에 저장된 워크로드 임계값들 중 하나를 초과하였는지를 결정한다. 그렇지 않으면, 방법은 블록(406)으로 돌아가고, CFAM(108)은 현재 주파수에서 CK 클록 신호의 클록 속도를 유지한다.At
블록(408)에서, 워크로드가 워크로드 임계값을 초과했다고 CFAM(108)이 결정하면, CFAM(108)은 초과된 임계값과 연관된 프로그램을 식별하고, 프로그램 주파수 레지스터들(322)에 저장된 바와 같이 프로그램에 대한 특정된 프로그램 주파수를 추가로 결정한다. 블록(410)에서, CFAM(108)은 CK 클록 신호의 주파수를 특정된 프로그램 주파수로 조정하기 위해 제어 시그널링을 클록 제어 모듈(110)에 전송한다.At
방법 흐름은 블록(412)으로 이동하고 CFAM(108)은 스케줄러(106)에 의해 제공된 정보에 기초하여 GPU(102)의 워크로드를 계속 모니터링한다. 블록(414)에서, CFAM(108)은 워크로드가 워크로드 레지스터(324)에 저장된 워크로드 임계값 아래로 떨어졌는지를 결정한다. 그렇지 않으면, 방법은 블록(412)으로 돌아가고, CFAM(108)은 현재 주파수에서 CK 클록 신호의 클록 속도를 유지한다. 워크로드가 워크로드 임계값 아래로 떨어지는 것에 응답하여, 방법 흐름은 블록(416)으로 이동하고, CFAM(108)은 CK 클록 신호의 주파수를 초기 더 낮은 주파수로 돌아가게 하기 위해 클록 제어 모듈(110)에 제어 시그널링을 전송한다. 방법 흐름은 블록(406)으로 돌아가고, CFAM(108)은 GPU(102)의 워크로드를 계속 모니터링한다.The method flow moves to block 412 and the
일부 실시예들에서, 방법은: 그래픽 프로세싱 유닛(GPU)에서, 중앙 프로세싱 유닛(CPU)으로부터 복수의 명령들을 수신하는 단계 - 상기 복수의 명령들은 상기 CPU에서 동시에 실행되는 복수의 프로그램 스레드들과 연관되고, 상기 복수의 스레드들의 각각은 대응하는 특정된 클록 주파수와 연관됨 -, 상기 GPU에서, 상기 복수의 명령들 중 적어도 하나에 기초하여 상기 GPU에서 실행될 제1 워크로드를 결정하는 단계; 상기 제1 워크로드에 기초하여, 상기 CPU에서 동시에 실행되는 상기 복수의 프로그램 스레드들 중 제1 프로그램 스레드를 식별하는 단계; 및 상기 제1 프로그램 스레드를 식별하는 것에 응답하여, 상기 GPU의 클록 신호를 상기 제1 프로그램 스레드와 연관된 상기 특정 클록 주파수로 조정하는 단계를 포함한다. 일 양태에서, 상기 제1 프로그램 스레드를 식별하는 단계는 상기 제1 워크로드가 제1 워크로드 임계값을 초과하는 것에 응답하여 상기 제1 프로그램 스레드를 식별하는 단계를 포함한다.In some embodiments, the method comprises: receiving, at a graphics processing unit (GPU), a plurality of instructions from a central processing unit (CPU), the plurality of instructions being associated with a plurality of program threads executing concurrently on the CPU determining, at the GPU, a first workload to be executed on the GPU based on at least one of the plurality of instructions, each of the plurality of threads being associated with a corresponding specified clock frequency; identifying, based on the first workload, a first program thread from among the plurality of program threads that are concurrently executed in the CPU; and in response to identifying the first program thread, adjusting a clock signal of the GPU to the particular clock frequency associated with the first program thread. In an aspect, identifying the first program thread comprises identifying the first program thread in response to the first workload exceeding a first workload threshold.
일 양태에서, 방법은 상기 GPU에서, 상기 복수의 명령들 중 적어도 하나의 다른 명령에 기초하여 상기 제1 워크로드 이후에 상기 GPU에서 실행될 제2 워크로드를 결정하는 단계; 상기 제2 워크로드에 기초하여, 상기 CPU에서 동시에 실행되는 상기 복수의 프로그램 스레드들 중 제2 프로그램 스레드를 식별하는 단계; 및 상기 제2 프로그램 스레드를 식별하는 것에 응답하여, 상기 GPU의 상기 클록 신호를 상기 제1 주파수로부터 상기 제2 프로그램 스레드와 연관된 상기 특정 주파수로 조정하는 단계를 포함한다. 다른 양태에서, 상기 제2 프로그램 스레드를 식별하는 단계는 상기 제2 워크로드가 제2 워크로드 임계값 아래에 있는 것에 응답하여 상기 제2 프로그램 스레드를 식별하는 단계를 포함한다. 또 다른 양태에서, 제1 임계값은 프로그래밍 가능하다. 또 다른 양태에서, 제1 워크로드를 식별하는 단계는 GPU의 스케줄러에서 수신된 정보에 기초하여 제1 워크로드를 식별하는 단계를 포함한다.In an aspect, a method further comprises: determining, at the GPU, a second workload to be executed on the GPU after the first workload based on at least one other of the plurality of instructions; identifying, based on the second workload, a second program thread from among the plurality of program threads that are concurrently executed in the CPU; and in response to identifying the second program thread, adjusting the clock signal of the GPU from the first frequency to the particular frequency associated with the second program thread. In another aspect, identifying the second program thread includes identifying the second program thread in response to the second workload being below a second workload threshold. In another aspect, the first threshold is programmable. In another aspect, identifying the first workload includes identifying the first workload based on information received from a scheduler of the GPU.
일 양태에서, 제1 워크로드를 식별하는 것은 GPU의 컴퓨팅 유닛들의 세트에서의 실행을 위해 스케줄링된 웨이브프론트들의 수에 기초하여 제1 워크로드를 식별하는 것을 포함한다. 다른 양태에서, 제1 워크로드를 식별하는 것은 GPU에서 수신된 드로우 명령의 유형에 기초하여 제1 워크로드를 식별하는 것을 포함한다. 다른 양태에서, 클록을 조정하는 것은 제2 주파수로부터 제1 주파수로 클록을 램핑하는 것을 포함한다.In an aspect, identifying the first workload includes identifying the first workload based on a number of wavefronts scheduled for execution on the set of computing units of the GPU. In another aspect, identifying the first workload includes identifying the first workload based on a type of draw command received at the GPU. In another aspect, adjusting the clock includes ramping the clock from the second frequency to the first frequency.
일부 실시예들에서, 방법은: 그래픽 프로세싱 유닛(GPU)에서 실행될 제1 워크로드에 기초하여, 복수의 프로그램 스레드들 중 제1 프로그램 스레드를 식별하는 단계 - GPU는 복수의 프로그램 스레드들을 대신하여 워크로드들을 실행하고, 복수의 프로그램 스레드들은 중앙 프로세싱 유닛(CPU)에서 동시에 실행됨 - ; 및 제1 프로그램 스레드를 식별하는 것에 응답하여, GPU의 클록을 제1 프로그램 스레드와 연관된 제1 주파수로 조정하는 단계를 포함한다. 일 양태에서, 제1 프로그램 스레드를 식별하는 것은 제1 워크로드가 제1 워크로드 임계값을 초과하는 것에 응답하여 제1 프로그램 스레드를 식별하는 것을 포함한다. 다른 양태에서, 방법은 GPU에서 실행될 제1 워크로드에 기초하여 복수의 프로그램 스레드들 중 제2 프로그램 스레드를 식별하는 단계; 및 제2 프로그램 스레드를 식별하는 것에 응답하여, GPU의 클록을 제2 프로그램 스레드와 연관된 제2 주파수로 조정하는 단계를 포함한다. 또 다른 양태에서, 클록을 조정하는 것은 제2 주파수로부터 제1 주파수로 클록을 램핑하는 것을 포함한다.In some embodiments, the method includes: identifying, based on a first workload to be executed on a graphics processing unit (GPU), a first program thread among the plurality of program threads, wherein the GPU performs a work on behalf of the plurality of program threads. execute loads, and multiple program threads are executed concurrently in a central processing unit (CPU); and in response to identifying the first program thread, adjusting a clock of the GPU to a first frequency associated with the first program thread. In an aspect, identifying the first program thread includes identifying the first program thread in response to the first workload exceeding a first workload threshold. In another aspect, a method includes identifying a second program thread of a plurality of program threads based on a first workload to be executed on the GPU; and in response to identifying the second program thread, adjusting a clock of the GPU to a second frequency associated with the second program thread. In another aspect, adjusting the clock includes ramping the clock from the second frequency to the first frequency.
일부 실시예들에서, 그래픽 프로세싱 유닛(GPU)은 중앙 프로세싱 유닛(CPU)으로부터 복수의 명령들을 수신하는 스케줄러 - 복수의 명령들은 CPU에서 동시에 실행되는 복수의 프로그램 스레드와 연관되고, 복수의 스레드 각각은 대응하는 특정 클록 주파수와 연관됨 -; 복수의 명령들에 기초하여 워크로드들을 실행하도록 구성된 복수의 컴퓨팅 유닛들; 복수의 컴퓨팅 유닛들에 대한 제1 클록 신호를 생성하기 위한 클록 제어 모듈; 및 클록 주파수 조정 모듈은 복수의 컴퓨팅 유닛들에서 실행될 제1 워크로드를 결정하고; 제1 워크로드에 기반하여, CPU에서 동시에 실행되는 복수의 프로그램 스레드들 중 제1 프로그램 스레드를 식별하고; 및 제1 프로그램 스레드를 식별하는 것에 응답하여, 클록 신호를 제1 프로그램 스레드와 연관된 특정 클록 주파수로 조정하도록 구성된다. 일 양태에서, 클록 주파수 조정 모듈은, 제1 워크로드가 제1 워크로드 임계값을 초과하는 것에 응답하여 제1 프로그램 스레드를 식별하도록 구성된다.In some embodiments, the graphics processing unit (GPU) is a scheduler that receives a plurality of instructions from a central processing unit (CPU), the plurality of instructions being associated with a plurality of program threads executing concurrently on the CPU, each of the plurality of threads comprising: associated with a corresponding specific clock frequency -; a plurality of computing units configured to execute workloads based on the plurality of instructions; a clock control module for generating a first clock signal for the plurality of computing units; and the clock frequency adjustment module determines a first workload to be executed on the plurality of computing units; identify, based on the first workload, a first program thread from among the plurality of program threads that are concurrently executed in the CPU; and in response to identifying the first program thread, adjust the clock signal to a particular clock frequency associated with the first program thread. In an aspect, the clock frequency adjustment module is configured to identify the first program thread in response to the first workload exceeding the first workload threshold.
일 양태에서, 클록 주파수 조정 모듈은, 복수의 컴퓨팅 유닛들에서 실행될 제2 워크로드를 결정하고; 제2 워크로드에 기초하여 제2 프로그램 스레드를 식별하고; 및 제2 프로그램 스레드를 식별하는 것에 응답하여, 클록 신호를 제1 주파수로부터 제2 프로그램 스레드와 연관된 제2 주파수로 조정하도록 구성된다. 다른 양태에서, 클록 주파수 조정 모듈은, 제2 워크로드가 제2 워크로드 임계값 아래에 있는 것에 응답하여 제2 프로그램 스레드를 식별하도록 구성된다. 또 다른 양태에서, 제1 임계값은 프로그래밍 가능하다. 또 다른 양태에서, 클록 주파수 조정 모듈은 GPU의 컴퓨팅 유닛들의 세트에서 스케줄링된 웨이브프론트들의 수에 기초하여 제1 워크로드를 식별하도록 구성된다. 다른 양태에서, 클록 주파수 조정 모듈은 스케줄러에서 수신된 드로우 명령들의 수에 기초하여 제1 워크로드를 식별하도록 구성된다.In an aspect, the clock frequency adjustment module is configured to: determine a second workload to be executed on the plurality of computing units; identify a second program thread based on the second workload; and in response to identifying the second program thread, adjust the clock signal from the first frequency to a second frequency associated with the second program thread. In another aspect, the clock frequency adjustment module is configured to identify the second program thread in response to the second workload being below the second workload threshold. In another aspect, the first threshold is programmable. In another aspect, the clock frequency adjustment module is configured to identify the first workload based on a number of scheduled wavefronts in the set of computing units of the GPU. In another aspect, the clock frequency adjustment module is configured to identify the first workload based on a number of draw commands received at the scheduler.
컴퓨터 판독 가능 저장 매체는 컴퓨터 시스템에 명령어 및/또는 데이터를 제공하기 위해 사용하는 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 저장 매체 또는 비일시적 저장 매체의 조합을 포함할 수 있다. 그러한 저장 매체는 광학 매체(예: 콤팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루레이 디스크), 자기 매체(예: 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예: 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예: 읽기 전용 메모리(ROM) 또는 플래시 메모리), 또는 MEMS(마이크로 전자기계 시스템) 기반 저장 매체를 포함할 수 있고 그러나 여기에 제한은 되지 않는다. 컴퓨터 판독 가능 저장 매체는 컴퓨팅 시스템(예를 들어, 시스템 RAM 또는 ROM)에 내장될 수 있고, 컴퓨팅 시스템(예를 들어, 자기 하드 드라이브)에 고정적으로 부착되거나 컴퓨팅 시스템(예를 들어, 광학 디스크 또는 유니버설 직렬 버스(USB) 기반 플래시 메모리), 또는 유선 또는 무선 네트워크(예: 네트워크 액세스 가능 스토리지(NAS))를 통해 컴퓨터 시스템에 연결된다.Computer-readable storage media may include any non-transitory storage media or combination of non-transitory storage media that are accessible by a computer system during use to provide instructions and/or data to the computer system. Such storage media may include optical media (eg, compact disc (CD), digital versatile disc (DVD), Blu-ray disc), magnetic media (eg, floppy disk, magnetic tape, or magnetic hard drive), volatile memory (eg, random access). memory (RAM) or cache), non-volatile memory (eg, read-only memory (ROM) or flash memory), or microelectromechanical system (MEMS) based storage media. A computer-readable storage medium may be embodied in a computing system (eg, system RAM or ROM), and may be fixedly attached to a computing system (eg, a magnetic hard drive) or a computing system (eg, an optical disk or It is connected to a computer system through a Universal Serial Bus (USB)-based flash memory), or a wired or wireless network (such as a Network Accessible Storage (NAS)).
일부 실시예들에서, 위에서 설명된 기술들의 특정 양태들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체 상에 저장되거나 그렇지 않으면 유형적으로 실시된 하나 이상의 실행가능한 명령어들의 세트들을 포함한다. 소프트웨어는 하나 이상의 프로세서들에 의해 실행될 때, 위에서 설명된 기술들의 하나 이상의 양태들을 수행하기 위해 하나 이상의 프로세서들을 조작하는 명령어들 및 특정 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체는 자기 또는 광학 디스크 저장 장치, 플래시 메모리(Flash memory), 캐시(cache), 램(RAM) 등과 같은 솔리드 스테이트 저장 장치 또는 다른 비휘발성 메모리 장치 등을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체 상에 저장된 실행가능한 명령어들은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서들에 의해 해석되거나 다른 방식으로 실행가능한 다른 명령어 포맷일 수 있다.In some embodiments, certain aspects of the techniques described above may be implemented by one or more processors of a processing system executing software. Software includes sets of one or more executable instructions stored on or otherwise tangibly embodied on a non-transitory computer-readable storage medium. Software may include specific data and instructions that, when executed by one or more processors, operate the one or more processors to perform one or more aspects of the techniques described above. The non-transitory computer-readable storage medium may include a magnetic or optical disk storage device, a flash memory, a cache, a solid state storage device such as RAM, or other non-volatile memory devices, and the like. The executable instructions stored on a non-transitory computer-readable storage medium may be in source code, assembly language code, object code, or other instruction format that is interpreted or otherwise executable by one or more processors.
일반적인 설명에서 상술한 모든 활동 또는 엘리먼트가 요구되지 않으며, 특정 활동 또는 장치의 일부가 요구되지 않을 수 있으며, 상술한 것들에 더하여 하나 이상의 추가적인 활동이 수행될 수 있거나, 또는 포함된 엘리먼트들이 요구된다는 점에 유의한다. 또한 활동이 나열되는 순서는 반드시 활동이 수행되는 순서는 아니다. 또한, 구체적인 실시예를 참조하여 개념을 설명하였다. 그러나 통상의 지식을 가진 자라면 아래의 청구항들에 기재된 바와 같이 본 개시의 범위를 벗어나지 않는 범위에서 다양한 수정 및 변경이 가능하다는 것을 알 수 있다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 하며, 이러한 모든 수정은 본 개시의 범위 내에 포함되도록 의도된다.Not all activities or elements described above in the general description are required, some of specific activities or devices may not be required, one or more additional activities in addition to those described above may be performed, or included elements are required. take note of Also, the order in which the activities are listed is not necessarily the order in which the activities are performed. In addition, the concept has been described with reference to specific examples. However, those of ordinary skill in the art can see that various modifications and changes are possible without departing from the scope of the present disclosure as described in the claims below. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of the present disclosure.
이점들, 다른 장점들, 및 문제점들에 대한 해결책들이 특정 실시예들과 관련하여 위에서 설명되었다. 그러나, 이점, 장점, 문제에 대한 해결책, 및 어떤 이점, 장점, 또는 해결책이 발생하거나 더 두드러지게 될 수 있는 어떤 특징은 청구항들 중 어느 하나 또는 모든 청구항들의 중요한, 요구되는, 또는 필수적인 특징으로 해석되지 않는다. 더욱이, 위에서 개시된 특정 실시예들은 단지 예시적이며, 개시된 주제가 본 명세서의 교시들의 이점을 갖는 당업자들에게 명백하지만 상이한 그러나 동등한 방식들로 수정되고 실시될 수 있다. 이하의 청구항에 기재된 것 이외의, 본 명세서에 기재된 구성 또는 설계의 상세사항에 대한 제한은 의도되지 않는다. 따라서, 위에서 개시된 특정 실시예들은 변경 또는 수정될 수 있고, 이러한 모든 변형들은 개시된 주제의 범위 내에서 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구하는 보호범위는 아래의 청구범위에 명시된 바와 같다.Advantages, other advantages, and solutions to problems have been described above in connection with specific embodiments. However, an advantage, advantage, solution to a problem, and any feature from which any advantage, advantage, or solution may arise or become more pronounced shall be construed as an important, required, or essential feature of any one or all of the claims. doesn't happen Moreover, the specific embodiments disclosed above are exemplary only, and while the disclosed subject matter will be apparent to those skilled in the art having the benefit of the teachings herein, it can be modified and practiced in different but equivalent ways. No limitations are intended to the details of construction or design described herein other than as set forth in the claims below. Accordingly, it is apparent that the specific embodiments disclosed above may be altered or modified, and all such variations are considered within the scope of the disclosed subject matter. Accordingly, the scope of protection sought in this specification is as specified in the claims below.
Claims (20)
그래픽 프로세싱 유닛(GPU)(102)에서, 중앙 프로세싱 유닛(CPU)(101)로부터 복수의 명령들(105, 107)을 수신하는 단계 - 상기 복수의 명령들은 상기 CPU에서 동시에 실행되는 복수의 프로그램 스레드들(103, 104)과 연관되고, 상기 복수의 스레드들 각각은 대응하는 특정 클록 주파수와 연관됨 - ;
상기 GPU에서, 상기 복수의 명령들 중 적어도 하나에 기초하여 상기 GPU에서 실행될 제1 워크로드(116)를 결정하는 단계;
상기 제1 워크로드에 기초하여, 상기 CPU에서 동시에 실행되는 상기 복수의 프로그램 스레드들 중 제1 프로그램 스레드를 식별하는 단계; 및
상기 제1 프로그램 스레드를 식별하는 것에 응답하여, 상기 GPU의 클록 신호를 상기 제1 프로그램 스레드와 연관된 상기 특정 클록 주파수로 조정하는 단계를 포함하는, 방법.In the method,
receiving, at a graphics processing unit (GPU) 102 , a plurality of instructions ( 105 , 107 ) from a central processing unit (CPU) 101 , wherein the plurality of instructions are executed concurrently in the CPU by a plurality of program threads 103, 104, wherein each of the plurality of threads is associated with a corresponding particular clock frequency;
determining, at the GPU, a first workload (116) to be executed on the GPU based on at least one of the plurality of instructions;
identifying, based on the first workload, a first program thread from among the plurality of program threads that are concurrently executed in the CPU; and
in response to identifying the first program thread, adjusting a clock signal of the GPU to the particular clock frequency associated with the first program thread.
상기 제1 프로그램 스레드를 식별하는 단계는 상기 제1 워크로드가 제1 워크로드 임계값을 초과하는 것에 응답하여 상기 제1 프로그램 스레드를 식별하는 단계를 포함하는, 방법.According to claim 1,
wherein identifying the first program thread comprises identifying the first program thread in response to the first workload exceeding a first workload threshold.
상기 GPU에서, 상기 복수의 명령들 중 적어도 하나의 다른 명령에 기초하여 상기 제1 워크로드 이후에 상기 GPU에서 실행될 제2 워크로드(117)를 결정하는 단계;
상기 제2 워크로드에 기초하여, 상기 CPU에서 동시에 실행되는 상기 복수의 프로그램 스레드들 중 제2 프로그램 스레드를 식별하는 단계; 및
상기 제2 프로그램 스레드를 식별하는 것에 응답하여, 상기 GPU의 상기 클록 신호를 상기 제1 주파수로부터 상기 제2 프로그램 스레드와 연관된 상기 특정 주파수로 조정하는 단계를 더 포함하는, 방법.3. The method of claim 2,
determining, at the GPU, a second workload (117) to be executed on the GPU after the first workload based on at least one other of the plurality of instructions;
identifying, based on the second workload, a second program thread from among the plurality of program threads that are concurrently executed in the CPU; and
in response to identifying the second program thread, adjusting the clock signal of the GPU from the first frequency to the particular frequency associated with the second program thread.
상기 제2 프로그램 스레드를 식별하는 단계는 상기 제2 워크로드가 제2 워크로드 임계값 아래에 있는 것에 응답하여 상기 제2 프로그램 스레드를 식별하는 단계를 포함하는, 방법.4. The method of claim 3,
wherein identifying the second program thread comprises identifying the second program thread in response to the second workload being below a second workload threshold.
그래픽 프로세싱 유닛(graphics processing unit, GPU)(102)에서 실행될 제1 워크로드(116)에 기초하여, 복수의 프로그램 스레드들(103, 104) 중 제1 프로그램 스레드(103)를 식별하는 단계 - 상기 GPU는 상기 복수의 프로그램 스레드들을 대신하여 워크로드들을 실행하고, 상기 복수의 프로그램 스레드들은 중앙 프로세싱 유닛(CPU)(101)에서 동시에 실행됨 - ; 및
상기 제1 프로그램 스레드를 식별하는 것에 응답하여, 상기 GPU의 클록을 상기 제1 프로그램 스레드와 연관된 제1 주파수로 조정하는 단계를 포함하는, 방법.In the method,
identifying, based on a first workload (116) to be executed on a graphics processing unit (GPU) (102), a first program thread (103) of a plurality of program threads (103, 104) - the above GPU executes workloads on behalf of the plurality of program threads, wherein the plurality of program threads are concurrently executed in a central processing unit (CPU) 101 ; and
in response to identifying the first program thread, adjusting a clock of the GPU to a first frequency associated with the first program thread.
상기 제1 프로그램 스레드를 식별하는 단계는 상기 제1 워크로드가 제1 워크로드 임계값을 초과하는 것에 응답하여 상기 제1 프로그램 스레드를 식별하는 단계를 포함하는, 방법.11. The method of claim 10,
wherein identifying the first program thread comprises identifying the first program thread in response to the first workload exceeding a first workload threshold.
상기 GPU에서 실행될 제1 워크로드에 기초하여 상기 복수의 프로그램 스레드들 중 제2 프로그램 스레드(104)를 식별하는 단계; 및
상기 제2 프로그램 스레드를 식별하는 것에 응답하여, 상기 GPU의 상기 클록을 상기 제2 프로그램 스레드와 연관된 제2 주파수로 조정하는 단계를 더 포함하는, 방법.12. The method of claim 11,
identifying a second program thread (104) of the plurality of program threads based on a first workload to be executed on the GPU; and
in response to identifying the second program thread, adjusting the clock of the GPU to a second frequency associated with the second program thread.
중앙 프로세싱 유닛(CPU)(101)으로부터 복수의 명령들(105, 107)을 수신하는 스케줄러 - 상기 복수의 명령들은 상기 CPU에서 동시에 실행되는 복수의 프로그램 스레드(104, 106)와 연관되고, 상기 복수의 스레드 각각은 대응하는 특정 클록 주파수와 연관됨 -;
산기 복수의 명령들에 기초하여 워크로드들(116, 117)을 실행하도록 구성된 복수의 컴퓨팅 유닛들(115);
상기 복수의 컴퓨팅 유닛들에 대한 제1 클록 신호를 생성하기 위한 클록 제어 모듈(110); 및
클록 주파수 조정 모듈(108)을 포함하고, 상기 클록 주파수 조정 모듈은,
상기 복수의 컴퓨팅 유닛에서 실행될 제1 워크로드를 결정하고;
상기 제1 워크로드에 기초하여, 상기 CPU에서 동시에 실행되는 상기 복수의 프로그램 스레드들 중 제1 프로그램 스레드를 식별하고; 및
상기 제1 프로그램 스레드를 식별하는 것에 응답하여, 상기 클록 신호를 상기 제1 프로그램 스레드와 연관된 상기 특정 클록 주파수로 조정하도록 구성되는, GPU.A graphics processing unit (GPU) (102) comprising:
a scheduler receiving a plurality of instructions (105, 107) from a central processing unit (CPU) (101), the plurality of instructions being associated with a plurality of program threads (104, 106) executing concurrently in the CPU, the plurality of each thread of − is associated with a corresponding specific clock frequency;
a plurality of computing units (115) configured to execute workloads (116, 117) based on the plurality of instructions;
a clock control module 110 for generating a first clock signal for the plurality of computing units; and
a clock frequency adjustment module (108), the clock frequency adjustment module comprising:
determine a first workload to be executed on the plurality of computing units;
identify, based on the first workload, a first program thread from among the plurality of program threads that are concurrently executed in the CPU; and
and in response to identifying the first program thread, adjust the clock signal to the particular clock frequency associated with the first program thread.
상기 제1 워크로드가 제1 워크로드 임계값을 초과하는 것에 응답하여 상기 제1 프로그램 스레드를 식별하도록 구성되는, GPU.15. The method of claim 14, wherein the clock frequency adjustment module,
and identify the first program thread in response to the first workload exceeding a first workload threshold.
상기 복수의 컴퓨팅 유닛에서 실행될 제2 워크로드를 결정하고;
상기 제2 워크로드에 기초하여, 제2 프로그램 스레드를 식별하고; 및
상기 제2 프로그램 스레드를 식별하는 것에 응답하여, 상기 클록 신호를 제1 주파수로부터 상기 제2 프로그램 스레드와 연관된 제2 주파수로 조정하도록 구성되는, GPU.16. The method of claim 15, wherein the clock frequency adjustment module,
determine a second workload to be executed on the plurality of computing units;
identify a second program thread based on the second workload; and
and in response to identifying the second program thread, adjust the clock signal from a first frequency to a second frequency associated with the second program thread.
상기 제2 워크로드가 제2 워크로드 임계값 아래에 있는 것에 응답하여 상기 제2 프로그램 스레드를 식별하도록 구성되는, GPU.The method of claim 16, wherein the clock frequency adjustment module,
and identify the second program thread in response to the second workload being below a second workload threshold.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/692,856 US11263044B2 (en) | 2019-11-22 | 2019-11-22 | Workload-based clock adjustment at a processing unit |
US16/692,856 | 2019-11-22 | ||
PCT/US2020/061488 WO2021102252A1 (en) | 2019-11-22 | 2020-11-20 | Workload-based clock adjustment at a processing unit |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220104722A true KR20220104722A (en) | 2022-07-26 |
Family
ID=75974906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227018163A KR20220104722A (en) | 2019-11-22 | 2020-11-20 | Workload-Based Clock Adjustment in Processing Units |
Country Status (6)
Country | Link |
---|---|
US (1) | US11263044B2 (en) |
EP (1) | EP4062257A4 (en) |
JP (1) | JP7418571B2 (en) |
KR (1) | KR20220104722A (en) |
CN (1) | CN114730200A (en) |
WO (1) | WO2021102252A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024065415A1 (en) * | 2022-09-29 | 2024-04-04 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to synchronize tasks |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8237386B2 (en) | 2003-08-15 | 2012-08-07 | Apple Inc. | Methods and apparatuses for operating a data processing system |
US9727942B2 (en) | 2013-10-29 | 2017-08-08 | International Business Machines Corporation | Selective utilization of graphics processing unit (GPU) based acceleration in database management |
US9330433B2 (en) | 2014-06-30 | 2016-05-03 | Intel Corporation | Data distribution fabric in scalable GPUs |
KR102257737B1 (en) * | 2014-08-12 | 2021-05-28 | 삼성전자 주식회사 | Apparatus and method for controlling a throughput in an electronic device |
US20160077565A1 (en) | 2014-09-17 | 2016-03-17 | Advanced Micro Devices, Inc. | Frequency configuration of asynchronous timing domains under power constraints |
JP6518087B2 (en) * | 2015-03-09 | 2019-05-22 | キヤノン株式会社 | Program processing device |
US10649518B2 (en) | 2017-01-26 | 2020-05-12 | Ati Technologies Ulc | Adaptive power control loop |
US10909738B2 (en) | 2018-01-05 | 2021-02-02 | Nvidia Corporation | Real-time hardware-assisted GPU tuning using machine learning |
US11137815B2 (en) | 2018-03-15 | 2021-10-05 | Nvidia Corporation | Metering GPU workload with real time feedback to maintain power consumption below a predetermined power budget |
-
2019
- 2019-11-22 US US16/692,856 patent/US11263044B2/en active Active
-
2020
- 2020-11-20 KR KR1020227018163A patent/KR20220104722A/en not_active Application Discontinuation
- 2020-11-20 WO PCT/US2020/061488 patent/WO2021102252A1/en unknown
- 2020-11-20 JP JP2022528262A patent/JP7418571B2/en active Active
- 2020-11-20 CN CN202080080034.XA patent/CN114730200A/en active Pending
- 2020-11-20 EP EP20890131.4A patent/EP4062257A4/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021102252A1 (en) | 2021-05-27 |
US11263044B2 (en) | 2022-03-01 |
US20210157639A1 (en) | 2021-05-27 |
EP4062257A1 (en) | 2022-09-28 |
JP2023503412A (en) | 2023-01-30 |
EP4062257A4 (en) | 2023-12-27 |
CN114730200A (en) | 2022-07-08 |
JP7418571B2 (en) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797327B2 (en) | Dynamic virtual machine sizing | |
US11088961B2 (en) | Monitoring data streams and scaling computing resources based on the data streams | |
US10649518B2 (en) | Adaptive power control loop | |
US9619378B2 (en) | Dynamically optimizing memory allocation across virtual machines | |
US8307370B2 (en) | Apparatus and method for balancing load in multi-core processor system | |
EP2885707B1 (en) | Latency sensitive software interrupt and thread scheduling | |
US10372493B2 (en) | Thread and/or virtual machine scheduling for cores with diverse capabilities | |
JP6447217B2 (en) | Execution information notification program, information processing apparatus, and information processing system | |
JP5345990B2 (en) | Method and computer for processing a specific process in a short time | |
KR20100074920A (en) | Apparatus and method for load balancing in multi-core system | |
KR20220104722A (en) | Workload-Based Clock Adjustment in Processing Units | |
EP2395430B1 (en) | Virtual computer allocation method, allocation program, and information processing device having a virtual computer environment | |
JP2019079336A (en) | Numerical control device | |
WO2019188182A1 (en) | Pre-fetch controller | |
JP2018151968A (en) | Management device, distributed system, management method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |