KR20160113214A - 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치 - Google Patents

그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치 Download PDF

Info

Publication number
KR20160113214A
KR20160113214A KR1020167023134A KR20167023134A KR20160113214A KR 20160113214 A KR20160113214 A KR 20160113214A KR 1020167023134 A KR1020167023134 A KR 1020167023134A KR 20167023134 A KR20167023134 A KR 20167023134A KR 20160113214 A KR20160113214 A KR 20160113214A
Authority
KR
South Korea
Prior art keywords
program
gpu
memory
frequency
ratio
Prior art date
Application number
KR1020167023134A
Other languages
English (en)
Other versions
KR101860248B1 (ko
Inventor
레이 셴
구에이-유안 루에
용 지앙
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20160113214A publication Critical patent/KR20160113214A/ko
Application granted granted Critical
Publication of KR101860248B1 publication Critical patent/KR101860248B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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/3243Power saving in microcontroller unit
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

그래픽 처리 유닛(GPU) 주파수의 동적 조절을 지원하는 방법이 개시되어 있다. 일 실시예에 따르면, 프로그램은 데이터 처리 시스템의 GPU 상에서, 적어도 부분적으로, 실행되는 작업 부하를 포함한다. 프로그램이 실행을 위해 호출되는 것에 응답하여, 프로그램에 대한 미리 결정된 메모리/계산 비율이 자동으로 검색된다. 메모리/계산 비율은 프로그램 내에서의 계산 동작들에 대한, 프로그램 내에서의 메모리 액세스들의 비율을 나타낸다. 그에 부가하여, 프로그램에 대한 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수가 자동으로 조절된다. 예를 들어, GPU가 미리 결정된 메모리/계산 비율이 상대적으로 높으면 상대적으로 낮은 주파수로, 또는 미리 결정된 비율이 상대적으로 낮으면 상대적으로 높은 주파수로 설정될 수 있다. GPU의 주파수가 자동으로 조절된 후에, 프로그램은 GPU 상에서, 적어도 부분적으로, 실행될 수 있다. 다른 실시예들이 기술되고 청구된다.

Description

그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치{METHODS AND APPARATUS TO SUPPORT DYNAMIC ADJUSTMENT OF GRAPHICS PROCESSING UNIT FREQUENCY}
본원에 기술되는 실시예는 일반적으로 데이터 처리에 관한 것으로서, 상세하게는, 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치에 관한 것이다.
종래의 데이터 처리 시스템은 적어도 하나의 중앙 처리 유닛(central processing unit; CPU) 및 적어도 하나의 그래픽 처리 유닛(graphics processing unit; GPU)을 포함할 수 있다. CPU 및 GPU는 동일한 칩에 존재할 수 있거나, 하나 이상의 버스에 의해 연결되는 개별 칩들에 존재할 수 있다. 적어도 하나의 CPU 및 적어도 하나의 GPU를 포함하는 단일 칩은 가속 처리 유닛(accelerated processing unit), 진보된 처리 유닛(advanced processing unit), 또는 APU라고 지칭될 수 있다. 데이터 처리 시스템에서의 GPU는 CPU와 상이한 주파수로 동작할 수 있다.
"동적 주파수 스케일링(dynamic frequency scaling)"에 대한 위키백과 표제어에 나타낸 바와 같이, 회로의 안정적인 동작을 위해 요구되는 전압은 회로가 클럭킹되는 주파수에 의해 결정되고, 주파수가 또한 감소되면 요구 전압을 감소시키는 것이 가능할 수 있다.
본 개시 내용은 GPU 주파수 및 전압을 동적으로 조절하는 방법 및 장치를 기술한다. 데이터 처리 시스템은 종래의 데이터 처리 시스템보다 에너지 효율적인 동작을 달성하기 위해 개시된 기술을 사용할 수 있다.
도 1은 프로그램을 컴파일하고 실행하는 예시적인 프로세스를 나타낸 블록도.
도 2는 GPU 주파수를 동적으로 조절하기 위한 특징을 갖는 예시적인 데이터 처리 시스템의 블록도.
도 3은 프로그램을 컴파일하는 것과 관련하여 프로그램에 대한 메모리/계산 비율(memory/compute ratio)을 발생시키는 예시적인 프로세스의 플로우차트.
도 4는 GPU 주파수를 동적으로 조절하는 예시적인 프로세스의 플로우차트.
데이터 처리 시스템에서 실행되는 프로그램은 커널 또는 작업 부하로 간주될 수 있다. GPU에 대한 작업 부하는 계산 위주(compute bound)이거나 메모리 위주(memory bound)일 수 있다. 계산 위주 작업 부하는 주로 수학적 알고리즘을 수행하는 것에 중점을 둘 수 있고, 그의 성능은 GPU 성능에 의존할 수 있다. 그 결과, 계산 위주 작업 부하에 대해, GPU 주파수를 증가시키면 그 결과 상당히 증가된 성능(예컨대, 상당히 더 빠른 실행)이 얻어질 수 있다. 메모리 위주 작업 부하는 주로 메모리 액세스에 중점을 둘 수 있고, 그의 성능은 메모리 액세스 대역폭에 의해 크게 제한될 수 있다. 그 결과, 메모리 위주 작업 부하에 대해, 메모리 액세스 대역폭이 일단 충족되면, GPU 주파수를 증가시키는 것으로부터 성능 개선이, 있더라도, 거의 없을 것이다. 그에 따라, 메모리 위주 작업 부하에 대해, GPU 주파수를 증가시키는 것은 수확 체감(diminishing returns)을 가져올 수 있다. 이와 같이, 메모리 위주 작업 부하에 대해, GPU 주파수를 증가시키는 것은 성능 개선을 그다지 가져옴이 없이 에너지 소비의 상당한 증가를 야기할 수 있다.
예를 들어, 400 메가헤르쯔(MHz)부터 1150 MHz까지 조절 가능한 주파수를 갖는 GPU에 대해, 계산 위주 작업 부하는, GPU의 주파수가 최소 주파수부터 최대 주파수까지 증가될 때, 실질적으로 선형인 성능 증가를 달성할 수 있다. 이와 달리, 메모리 위주 작업 부하는, 주파수가 400 MHz부터 700 MHz까지 조절될 때는, 성능의 증가를 달성할 수 있지만, 주파수가 700 MHz를 넘어서 조절될 때는, 성능의 추가적인 증가가 거의 없거나 전혀 없다. 그 결과, 효율을 최대로 하기 위해, 메모리 위주 작업 부하에 대해서는 GPU 주파수를 700 MHz로 또는 그 미만으로 설정하는 것이 바람직할 것이다.
본 개시 내용은 GPU 주파수를 동적으로 조절하는 방법 및 장치를 기술한다. 일 실시예에서, 데이터 처리 시스템은 미리 결정된 메모리/계산 비율에 기초하여 GPU 주파수 및 전압을 동적으로 조절한다.
본 개시 내용의 목적상, 메모리/계산 비율은, 프로그램에서의 계산 동작에 대한, 프로그램에서의 메모리 액세스 동작의 개수, 우세, 또는 중요성을 식별해주는 값이다. 이와 같이, 제1 프로그램이 제2 프로그램보다 메모리 액세스 동작을 수행하는 데 더 많은 시간을 소비하면, 제1 프로그램은 보다 높은 메모리/계산 비율을 가질 것이다. 이와 유사하게, 2 개의 프로그램이 동일한 수의 계산 동작을 갖지만, 그 프로그램들 중 하나가 다른 프로그램보다 더 많은 메모리 액세스 동작을 가지면, 보다 많은 메모리 액세스 동작을 갖는 프로그램은 전형적으로 보다 높은 메모리/계산 비율을 가질 것이다.
일 실시예에서, 런타임 관리자는 적어도 부분적으로 GPU 상에서 실행되어야 하는 프로그램에 대한 미리 결정된 메모리/계산 비율을 검색한다. 런타임 관리자는 이어서, 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수를 동적으로 조절한다. 상세하게는, 프로그램이 상대적으로 높은 메모리/계산 비율을 가지면, 런타임 관리자는 GPU를 상대적으로 낮은 주파수로 설정할 수 있고; 프로그램이 상대적으로 낮은 메모리/계산 비율을 가지면, 런타임 관리자는 GPU를 상대적으로 높은 주파수로 설정할 수 있다. 런타임 관리자는 이어서 적어도 부분적으로 GPU에서 실행될 프로그램을 시작(launch)한다.
그 결과, 메모리 액세스를 위해 기다리는 데 상당한 양의 시간을 소비하게 될 프로그램에 대해, 런타임 관리자는 GPU를 상대적으로 낮은 주파수 및 상대적으로 낮은 전압으로 설정할 수 있으며, 그로써 성능을 그다지 감소시키는 일 없이 전력 소비를 감소시킬 수 있다. 그리고, 메모리 액세스를 위해 기다리는 데 거의 내지 전혀 시간을 소비하지 않게 될 프로그램에 대해, 런타임 관리자는 GPU를 상대적으로 높은 주파수 및 상대적으로 높은 전압으로 설정할 수 있으며, 그로써 전력 소비를 증가시키는 것이 상당히 더 나은 성능을 가져오게 될 때 전력 소비를 증가시킬 수 있다.
대안의 실시예는 메모리 액세스 동작에 대한 인자가 분자가 아니라 분모에 나타나는 반대의 접근법(예컨대, 메모리/계산 비율 대신에, 계산/메모리 비율)을 사용할 수 있다. 본 개시 내용의 목적상, 문맥이 명확히 다른 것을 요구하지 않는 한, "메모리/계산 비율"이라는 용어는, 프로그램에서의 계산 동작에 대한, 프로그램에서의 메모리 액세스 동작의 비율을 식별해주는 임의의 값을 포함하는 것으로 이해되어야 한다. 이와 유사하게, 본 개시 내용이 "높은" 메모리/계산 비율을 지칭할 때, 본 개시 내용은 프로그램이, 계산 동작에 비해, 높은 비율의 메모리 액세스 동작을 가진다는 것을 나타내는 값 또는 측정치를 지칭하고 있지만, "메모리/계산 비율" 측정치가 상대적으로 작은 수치 값을 가질 수 있다(예컨대, 메모리 액세스 동작에 대한 인자가 분모에 나타날 때).
본 개시 내용의 목적상, "상대적으로 낮은" GPU 주파수는 GPU의 최대 주파수보다 낮고 최대 주파수보다 상당히 더 적은 에너지를 소비하는 주파수인 반면, "상대적으로 높은" GPU 주파수는 GPU의 최소 주파수보다 높고 최소 주파수보다 상당히 더 많은 에너지를 소비하는 주파수이다.
이와 유사하게, "상대적으로 높은" 메모리/계산 비율은 프로그램이 계산 동작보다 메모리 액세스 동작을 수행하는 데 더 많은 시간을 소비한다는 것을 의미하는 반면, "상대적으로 낮은" 메모리/계산 비율은 프로그램이 계산 동작보다 메모리 액세스 동작을 수행하는 데 더 적은 시간을 소비한다는 것을 의미한다.
이하에서 보다 상세히 기술되는 바와 같이, 일 실시예에 따르면, 컴파일러가 대상 프로그램에 대한 소스 코드를 오브젝트 코드로 컴파일할 때, 컴파일러는 대상 프로그램에 대한 메모리/계산 비율을 자동으로 결정한다. 다른 실시예에 따르면, 메모리/계산 비율이 대상 프로그램의 테스트 실행 동안 소프트웨어 프로파일러(software profiler)에 의해 수집된 정보에 기초하여 결정된다. 다른 실시예에 따르면, 메모리/계산 비율이 대상 프로그램의 테스트 실행 동안 하드웨어 성능 카운터(hardware performance counter)에 의해 수집된 정보에 기초하여 결정된다.
도 1은 프로그램을 컴파일하고 그 프로그램을 적어도 부분적으로 GPU 상에서 실행하는 예시적인 프로세스의 블록도이다. 본 개시 내용의 목적상, 컴파일되고 실행되는 프로그램은 대상 프로그램이라고 지칭된다. 대상 프로그램은 각종의 상이한 버전으로 존재할 수 있다. 예를 들어, 대상 프로그램이 소스 코드로서 시작할 수 있고, 이어서 오브젝트 코드로 컴파일될 수 있다. 오브젝트 코드가 이어서 실행 가능 코드로 변환될 수 있다. 그에 따라, 대상 프로그램의 하나의 버전이 프로그램 소스 코드(20)라고 지칭될 수 있고, 다른 버전이 프로그램 오브젝트 코드(24)라고 지칭될 수 있으며, 다른 버전이 프로그램 실행 가능 코드라고 지칭될 수 있다. 프로그램 오브젝트 코드(24)는 가상 이진 프로그램이라고도 지칭될 수 있다.
도 1의 실시예에서, 처리 디바이스(50)는 대상 프로그램에 대한 프로그램 소스 코드(20)를 프로그램 오브젝트 코드(24)로 변환하기 위해 컴파일러(22)를 사용한다. 그에 부가하여, 도 3에 관해 이하에서 보다 상세히 기술되는 바와 같이, 컴파일러(22)가 프로그램 소스 코드(20)를 처리할 때, 컴파일러(22)는 대상 프로그램에 대한 메모리/계산 비율(26)을 계산하거나 결정한다. 컴파일러(22)는 그 메모리/계산 비율(26)을 프로그램 오브젝트 코드(24) 내에 기록한다.
도 1의 실시예에서, 하나의 처리 디바이스(50)는 프로그램 소스 코드(20)를 프로그램 오브젝트 코드(24)로 컴파일하고, 이어서 다른 처리 디바이스(40)는 프로그램 오브젝트 코드(24)를 획득하고 실행한다. 그렇지만, 다른 실시예에서, 동일한 처리 디바이스가 대상 프로그램을 컴파일하기 위해 그리고 대상 프로그램을 실행하기 위해 사용될 수 있다.
도 1의 실시예에서, 컴파일러(22)는 처리 디바이스(50) 상에서 실행(run)되는 GPU 프로그래밍 프레임워크 또는 MDF(media development framework)의 일부일 수 있다. 소프트웨어 개발자는 대상 프로그램을 포함하는 애플리케이션(28)을 생성하기 위해 MDF를 사용할 수 있다. 예를 들어, 애플리케이션(28)이 미디어 플레이어 애플리케이션일 수 있고, 대상 프로그램이 애플리케이션(28)에 대한 비디오 서브루틴일 수 있다. 애플리케이션(대상 프로그램에 대한 프로그램 오브젝트 코드(24)를 포함함)에 대한 프로그램 오브젝트 코드가 이어서 처리 디바이스(40)로 전달될 수 있고, 처리 디바이스(40)에서의 최종 사용자는 이어서 그의 의도된 목적을 위해 대상 프로그램을 사용할 수 있다.
도 2는 GPU 주파수를 동적으로 조절하기 위한 특징을 갖는 예시적인 데이터 처리 시스템의 블록도이다. 도 2에서, 프로그램 소스 코드(20)를 컴파일하는 처리 디바이스는 원격 처리 디바이스(50)라고 지칭되는 반면, 프로그램 오브젝트 코드(24)를 실행하는 처리 디바이스는 로컬 처리 디바이스(40)라고 - 또는 간단히 처리 디바이스(40)라고 - 지칭된다. 처리 디바이스(40)는 임의의 적합한 저장 매체 또는 매체들을 통해, 임의의 적합한 통신 매체 또는 매체들을 통해, 또는 저장 매체와 통신 매체의 임의의 적합한 조합을 통해 프로그램 오브젝트 코드(24)를 획득할 수 있다. 예를 들어, 처리 디바이스(40)는 광 디스크, 플래시 드라이브 등을 통해 프로그램 오브젝트 코드(24)를 획득할 수 있다. 대안적으로, 처리 디바이스(40)는 WAN(wide area network)(12)(인터넷 등)을 통해 또는 LAN(local area network)을 통해 원격 처리 디바이스(50)로부터 프로그램 오브젝트 코드(24)를 검색할 수 있다. 로컬 처리 디바이스(40) 및 원격 처리 디바이스(50)는 총칭하여 분산 데이터 처리 시스템(10)이라고 지칭될 수 있다.
일 실시예에서, 처리 디바이스(40)는 프로그램 오브젝트 코드(24)를 애플리케이션(28)의 일부로서 사용한다. 예를 들어, 앞서 살펴본 바와 같이, 애플리케이션(28)은 미디어 플레이어 애플리케이션일 수 있고, 프로그램 오브젝트 코드(24)는 애플리케이션(28)에 대한 비디오 서브루틴을 구현할 수 있다. 예를 들어, 프로그램 오브젝트 코드(24)는 MPEG(Motion Pictures Encoding Group) 비디오 디코더를 구현할 수 있다. 대안적으로, 애플리케이션(28)은 CAD(computer-aided design) 애플리케이션일 수 있고, 프로그램 오브젝트 코드(24)는 CAD 애플리케이션에 대한 수학 함수들의 라이브러리(어쩌면 벡터, 행렬 등을 처리하기 위한 함수들을 포함함)를 구현할 수 있다. 다른 실시예에서, 다른 유형의 애플리케이션, 서브루틴 등이 사용될 수 있다.
다시 도 1을 참조하면, 애플리케이션(28) 및 프로그램 오브젝트 코드(24)는 중간 표현 또는 버전으로(예컨대, 바이트코드로서) 구현될 수 있고, 로컬 처리 디바이스(40)는 애플리케이션(28)(프로그램 오브젝트 코드(24)를 포함함)을 실행하기 위해 런타임 관리자(30)를 사용할 수 있다. 애플리케이션(28)과 같은 구성요소는 호스트 코드라고도 지칭될 수 있다.
애플리케이션(28)과 같은 호스트 코드를 실행할 때, 런타임 관리자(30)는 바이트코드를 실행 가능 코드로 변환하기 위해 JIT(just-in-time) 변환기(32)를 사용할 수 있다. 실행 가능 코드는 어셈블리 코드 또는 이진 코드라고도 지칭될 수 있다. JIT 변환기(32)는 JIT 컴파일러, 인터프리터(interpreter), 및/또는 애플리케이션(28)을 실행하기 위한 임의의 다른 적합한 논리를 포함할 수 있다. 런타임 관리자(30)는 동적 연결 라이브러리(dynamic link library)로서, 공유 라이브러리로서, 또는 임의의 다른 적합한 구성체(construct)로서 구현될 수 있다. 그에 부가하여, 런타임 관리자(30)는 호출할 애플리케이션에 대한 하나 이상의 API(application programming interface)를 노출시킬 수 있다. 런타임 관리자(30), JIT 변환기(32), 및 관련된 구성요소는 총칭하여 MRTE(managed runtime environment)(38)라고 지칭될 수 있다.
일 실시예에서, 처리 디바이스(40)에 있는 최종 사용자가 애플리케이션(28)을 시작할 때, 런타임 관리자(30)는 애플리케이션(28)에 대한 실행 가능 코드를 발생시키기 위해 JIT 변환기(32)를 사용하고, 런타임 관리자(30)는 그 실행 가능 코드를 CPU(62) 상에서의 실행을 위해 디스패치(dispatch)할 수 있다. 마찬가지로, 애플리케이션(28)이 대상 프로그램을 호출하거나 로드할 때, 런타임 관리자(30)는 대상 프로그램에 대한 실행 가능 코드를 발생시키기 위해 JIT 변환기(32)를 사용할 수 있다. 그렇지만, 런타임 관리자(30)는 대상 프로그램에 대한 실행 가능 코드를 CPU(62)가 아니라 GPU(36) 상에서의 실행을 위해 디스패치할 수 있다. 환언하면, 대상 프로그램에 대한 런타임 관리자(30)에 의해 생성된 실행 가능 코드의 일부 또는 전부가 처리 디바이스(40) 내의 하나 이상의 GPU(36) 상에서 수행될 동작을 포함할 수 있다. 일 실시예에서, 런타임 관리자(30)는, 이러한 동작이 GPU(36)에 의해 처리되게 하기 위해, 운영 체제(60)의 GPU 드라이버(34)를 호출한다.
그렇지만, 도 4에 관해 이하에서 보다 상세히 기술되는 바와 같이, 대상 프로그램을 GPU(36) 상에서 실행하기 전에, 런타임 관리자(30)는 GPU(36)의 주파수 및 전압을 동적으로 조절할 수 있다. 예를 들어, 애플리케이션(28)이 프로그램 오브젝트 코드(24)를 호출하거나 불러올 때, 런타임 관리자(30)는 프로그램 오브젝트 코드(24)와 연관된 메모리/계산 비율(26)을 자동으로 고려할 수 있고, 런타임 관리자(30)는 이어서, 메모리/계산 비율(26)에 기초하여, GPU(36)의 주파수 및 전압을 동적으로 조절할 수 있다.
일 실시예에서, 런타임 관리자(30)는 상이한 메모리/계산 비율을 대응하는 GPU 주파수와 관련시키는 FMT(frequency mapping table)(70)를 갖추고 있다. 예를 들어, FMT(70)는, 점진적으로 더 높은 메모리/계산 비율이 점진적으로 더 낮은 GPU 주파수에 관련되는 반면, 보다 낮은 메모리/계산 비율이 보다 높은 GPU 주파수에 관련된다는 점에서, 반대의 관계에 따라 메모리/계산 비율을 각자의 GPU 주파수와 관련시킬 수 있다. 예를 들어, 일 실시예에서, FMT(70)는 이하의 표 T1에 예시된 것과 같은 데이터를 포함할 수 있다:
[표 T1]
Figure pct00001
표 T1에서, "메모리/계산 비율"에 대한 열에 있는 항목은 점진적으로 더 높은 메모리/계산 비율 범위를 나타낸다.
FMT(70)는 각종의 상이한 하드웨어 플랫폼 상에서 각종의 상이한 GPU 주파수에서 실제의 및/또는 인위적인 작업 부하에 대해 행해진 실험에 기초할 수 있다. 메모리/계산 비율, 주파수, 및 성능 효율 간의 관계를 도표화하기 위해 그 실험으로부터의 데이터가 사용될 수 있다. 많은 상이한 플랫폼에 대한 각종의 상이한 메모리/계산 비율에 대해 최적으로 효율적인 GPU 주파수를 명시하는 표를 작성하기 위해 이러한 분석의 결과가 사용될 수 있다. FMT에 대한 항목들이 또한 메모리 주파수, 메모리 대역폭, 및 다른 인자에 기초할 수 있다.
대안의 실시예에서, FMT를 사용하는 대신에, 런타임 관리자는 특정의 프로그램에 적합한 GPU 주파수를 결정하기 위해 상이한 기법을 사용할 수 있다. 예를 들어, 런타임 관리자가 하나 이상의 상이한 미리 결정된 유형의 작업 부하를 인식하도록 프로그램될 수 있다. 런타임 관리자는 또한 각각의 상이한 유형의 작업 부하에 대해 특정의 주파수를 사용하도록 프로그램될 수 있다. 대상 프로그램이 호출될 때, 런타임 관리자는 대상 프로그램에 의해 수행될 작업 부하의 유형을 결정할 수 있고, 런타임 관리자는 그에 따라 GPU 주파수를 설정할 수 있다.
처리 디바이스(40)는 각종의 하드웨어 및 소프트웨어 자원을 포함할 수 있다. 예를 들어, 도 2의 실시예에서, 처리 디바이스(40)는 적어도 하나의 APU(42)를 포함하고, APU(42)는 적어도 하나의 CPU(62) 및 적어도 하나의 GPU(36)를 포함한다. APU(42)는 또한 다양한 하드웨어 성능 카운터(78)를 포함할 수 있다. 처리 디바이스(40)는 또한 RAM(random access memory)(44), HDD(hard disk drive)(46), 그리고 CPU(62) 및/또는 GPU(36)와 통신하는 네트워크 포트(48)를 포함한다. 그에 부가하여 또는 대안적으로, 처리 디바이스(40)는 다른 유형의 저장 디바이스(예컨대, 플래시 메모리), 다른 I/O(input/output) 포트, 다수의 프로세서, 및/또는 다른 구성요소를 포함할 수 있다. 원격 처리 디바이스(50)의 구성이 처리 디바이스(40)의 구성과 동일하거나 유사할 수 있다.
앞서 살펴본 바와 같이, GPU 드라이버(34)는 운영 체제(60)의 일부일 수 있다. 운영 체제(60), 애플리케이션(28), MRTE(38), 및 소프트웨어 프로파일러(76)는 HDD(46)에 저장되고 실행을 위해 RAM(44)으로 복사될 수 있다.
도 3은 프로그램을 컴파일하는 것과 관련하여 프로그램에 대한 메모리/계산 비율을 발생시키는 예시적인 프로세스의 플로우차트이다. 블록(110)에 나타낸 바와 같이, 프로세스는 컴파일러(22)가 몇 개의 계산 동작 및 몇 개의 메모리 동작이 대상 프로그램에 의해 사용되는지를 결정하기 위해 프로그램 소스 코드(20)를 정적으로 분석하는 것으로 시작한다. 예를 들어, 컴파일러(22)는 계산 동작의 개수 및 메모리 동작의 개수를 추정하기 위해 제어 흐름 분석을 사용할 수 있다. 예를 들어, 제어 흐름 분석에서, 중첩 루프 내부의 동작에 대해 보다 큰 가중치 또는 카운트가 할당될 수 있다.
블록(112)에 나타낸 바와 같이, 컴파일러(22)는 이어서, 프로그램 소스 코드(20)의 분석의 결과에 기초하여, 대상 프로그램에 대한 메모리/계산 비율(26)을 결정한다. 예를 들어, 컴파일러(22)는 아주 메모리 위주인 프로그램에 대해 10:1, 약간 메모리 위주인 프로그램에 대해 2:1, 약간 계산 위주인 프로그램에 대해 1:2, 그리고 아주 계산 위주인 프로그램에 대해 1:10의 메모리/계산 비율을 발생시킬 수 있다. 표 T1을 다시 참조하면, 일 실시예에서, R1 = 1:10이고, R2 = 1:2이며, R3 = 2:1이고, R4 = 10:1이다.
블록(114)에 나타낸 바와 같이, 컴파일러(22)는 또한, 프로그램 소스 코드(20)에 기초하여, 대상 프로그램에 대한 프로그램 오브젝트 코드(24)를 발생시킨다. 앞서 살펴본 바와 같이, 일 실시예에서, 프로그램 오브젝트 코드(24)는 대상 프로그램의 바이트코드 표현을 사용한다. 블록(116)에 나타낸 바와 같이, 컴파일러(22)는 발생된 메모리/계산 비율(26)을 프로그램 오브젝트 코드(24)에 저장한다. 예를 들어, 프로그램 오브젝트 코드(24)에 대한 파일 포맷 규격은 이름, 크기, 메모리/계산 비율, 및 다른 필요한 정보와 같은, 작업 부하 정보를 저장하는 필드를 제공할 수 있고; 컴파일러(22)는 메모리/계산 비율(26)을 메모리/계산 비율 필드에 로드할 수 있다.
도 3의 프로세스가 이어서 종료될 수 있다.
다른 실시예에서, 처리 디바이스(50) 또는 처리 디바이스(40)와 같은 디바이스는 메모리 및 계산 동작을 카운트하거나 추적하기 위해 그리고 대응하는 메모리/계산 비율을 발생시키기 위해 소프트웨어 프로파일러(76)로부터 및/또는 하드웨어 성능 카운터(78)로부터의 피드백을 사용할 수 있다. 예를 들어, 대상 프로그램의 개발자는 처리 디바이스(50)에서의 MRTE 내에서 1회 이상 프로그램 소스 코드(20)를 실행할 수 있고, 소프트웨어 실행 프로파일러는 실행을 모니터링하고 메모리 동작 및 총 동작을 카운트한다. 대안적으로, 개발자는 프로그램 소스 코드(20)의 테스트 실행 동안 실행을 모니터링하고 메모리 동작 및 총 동작을 카운트하거나 추적하기 위해 하드웨어 성능 카운터를 사용할 수 있다. 개발자는 이어서, 대상 프로그램의 테스트 실행 또는 실행으로부터의 데이터에 기초하여, 메모리/계산 비율(26)을 계산할 수 있다. 메모리 및 계산 동작이 추적되고 있을 때, 추적기는 계산 동작의 개수 및 메모리 동작의 개수를 고려할 수 있다. 그에 부가하여 또는 대안적으로, 추적기는 계산 동작을 실행하는 데 소비되는 시간의 양 및 메모리 동작을 실행하는 데 소비되는 시간의 양을 고려할 수 있다. 발생된 메모리/계산 비율이 이어서 런타임 관리자로 전달될 수 있다.
도 4는 GPU 주파수를 동적으로 조절하는 예시적인 프로세스의 플로우차트이다. 일 실시예에서, 처리 디바이스(40)는 대상 프로그램에 대한 실행 효율을 최적화하기 위해 예시된 프로세스를 사용한다. 프로세스는, 블록(210)에 나타낸 바와 같이, 런타임 관리자(30)가 애플리케이션(28)을 실행하는 것으로 시작할 수 있다. 블록(220)에 나타낸 바와 같이, 런타임 관리자(30)는 이어서 애플리케이션(28)이 대상 프로그램(또는 GPU 주파수의 동적 조절을 안내하기 위한 미리 결정된 메모리/계산 비율을 갖는 임의의 다른 프로그램)을 호출하고 있는지를 결정할 수 있다. 애플리케이션(28)이 대상 프로그램에 대한 프로그램 오브젝트 코드(24)를 호출하고 있다면, 런타임 관리자(30)는, 블록(222)에 나타낸 바와 같이, 프로그램 오브젝트 코드(24)로부터 메모리/계산 비율(26)을 검색한다. 블록(224)에 나타낸 바와 같이, 런타임 관리자(30)는 이어서, 메모리/계산 비율(26)에 기초하여, 대상 프로그램에 대한 최적의 GPU 주파수를 자동으로 결정하기 위해 FMT(70)를 사용한다.
블록(226)에 나타낸 바와 같이, 런타임 관리자(30)는 이어서 FMT(70)에 의해 식별된 최적의 주파수에 따라 GPU(36)의 주파수를 동적으로 그리고 자동으로 조절한다. 일 실시예에서, 런타임 관리자(30)는, 어쩌면 GPU 드라이버(34)를 통해, 하나 이상의 GPU 명령을 GPU(36)에 발행하는 것에 의해 GPU(36)의 주파수를 조절한다. 그에 부가하여 또는 대안적으로, 런타임 관리자(30)는 GPU(36)의 주파수 제어 레지스터에 직접 기입할 수 있다. 어느 경우든지, GPU(36)는 이어서 그의 주파수 및 전압을 즉각 조절하는 것으로 응답할 수 있다.
메모리/계산 비율(26) 및 FMT(70)에 기초하여, GPU(36)의 주파수를 조절하는 런타임 관리자 내의 논리는 GFR(GPU frequency regulator)(72)이라고 지칭될 수 있다. 런타임 관리자(30)는, 프로그램 오브젝트 코드(24) 내의 미리 결정된 메모리/계산 비율(26) 및 미리 결정된 주파수 매핑 테이블(70)에 기초하여, GPU(36)의 주파수를 관리하거나 제어하기 위해 GFR(72)을 사용할 수 있다.
블록(228)에 나타낸 바와 같이, 런타임 관리자(30)가 GPU(36)의 주파수를 조절한 후에, 런타임 관리자(30)는 대상 프로그램에 대한 프로그램 오브젝트 코드(24)를 시작한다. 대상 프로그램이 이어서 GPU(36) 상에서 적어도 부분적으로 실행될 수 있다.
그렇지만, 블록(220)을 다시 참조하면, 애플리케이션(28)이 미리 결정된 메모리/계산 비율을 갖는 프로그램을 호출하고 있지 않으면, 런타임 관리자(30)는, 블록(210)으로 되돌아가는 화살표로 표시된 바와 같이, GPU(36)의 주파수를 조절함이 없이 애플리케이션(28)을 계속 실행할 수 있다.
그에 부가하여 또는 대안적으로, 애플리케이션(28)은 그 자신의 GFR(74)을 포함할 수 있고, 런타임 관리자(30)에서의 GFR(72)을 사용하는 대신에, 애플리케이션(28)이 대상 프로그램에 대한 GPU 주파수를, 그 프로그램에 대한 메모리/계산 비율에 기초하여, 자동으로 조절하기 위해 GFR(74)을 사용할 수 있다. 예를 들어, 애플리케이션(28)이 대상 프로그램에 대한 호출에 응답하여 대상 프로그램에 대한 메모리/계산 비율을 자동으로 검색할 수 있고, 애플리케이션(28)은 이어서, 그 메모리/계산 비율에 기초하여, GPU의 주파수를 자동으로 조절하기 위해 GFR(74)을 사용할 수 있다. 일 실시예에서, 런타임 관리자(30)는 GPU(36)의 주파수를 조절하기 위한 API를 제공하고, GFR(74)은 GPU 주파수를 조절하기 위해 그 API를 사용한다.
그에 부가하여 또는 대안적으로, 런타임 관리자(30)는 대상 프로그램에 대한 메모리/계산 비율을 동적으로 결정하기 위해 (a) 소프트웨어 프로파일러(76)와 같은 소프트웨어 기반 프로그램 실행 프로파일러 및/또는 (b) 하드웨어 기반 성능 카운터(78)를 사용할 수 있고, 런타임 관리자(30)는, 동적으로 결정된 메모리/계산 비율에 기초하여, 대상 프로그램에 대한 GPU 주파수를 자동으로 조절할 수 있다. 예를 들어, 대상 프로그램이 실행되고 있은 후에, 런타임 관리자는 런타임 동안 소프트웨어 프로파일러(76) 및/또는 하드웨어 성능 카운터(78)에 질의할 수 있다. 그에 응답하여, 소프트웨어 프로파일러(76) 및/또는 하드웨어 성능 카운터(78)는 대상 프로그램에 대한 실제 메모리/계산 비율을 나타내는 피드백을 답신할 수 있다. 그 피드백에 기초하여, 그리고 FMT 또는 다른 적합한 매핑 데이터에 기초하여, 런타임 관리자(30)는 대상 프로그램이 실행 중인 GPU의 주파수를 자동으로 조절할 수 있다. 이러한 동적 결정 및 조절은 미리 결정된(또는 추정된) 메모리/계산 비율보다 더 정확할 수 있다. 그에 따라, 대상 프로그램이 미리 결정된 메모리/계산 비율을 가질 수 있더라도, 런타임 관리자는 대상 프로그램에 대한 동적으로 결정된 메모리/계산 비율에 우선권을 줄 수 있다.
기술된 바와 같이, 처리 디바이스 내의 런타임 관리자는 대상 프로그램을 실행하는 데 효율적이거나 최적인 GPU 주파수를 결정하기 위해 대상 프로그램에 대한 미리 결정된 메모리/계산 비율을 자동으로 사용할 수 있다. 런타임 관리자는 이어서, 대상 프로그램을 GPU 상에서 실행하기 전에, 그에 따라 GPU의 주파수 및 전압을 자동으로 조절할 수 있다. 따라서, 처리 디바이스가 종래의 처리 디바이스보다 더 효율적으로 동작할 수 있다.
그에 부가하여 또는 대안적으로, 런타임 관리자는 대상 프로그램에 대한 메모리/계산 비율을 동적으로 결정할 수 있고, 런타임 관리자는 대상 프로그램을 실행하는 데 효율적이거나 최적인 GPU 주파수를 결정하기 위해 그 메모리/계산 비율을 사용할 수 있다.
다른 실시예가 또한 기술되어 있다.
본 기재 내용에 따라 GPU 주파수 및 전압을 동적으로 조절하는 것에 의해, 데이터 처리 시스템은 종래의 데이터 처리 시스템보다 에너지 효율적인 동작을 달성할 수 있다.
본원에 기술되고 예시되는 원리 및 예시적인 실시예를 바탕으로, 예시된 실시예가 그 원리를 벗어남이 없이 배열 및 상세가 수정될 수 있다는 것을 잘 알 것이다. 또한, 이상의 논의가 특정의 실시예에 중점을 두고 있지만, 다른 구성이 생각되고 있다. 예를 들어, 개시된 실시예들의 측면들이 일반적으로 부가 실시예를 형성하기 위해 결합 가능하다. 그에 따라, "실시예", "도 X의 실시예", "일 실시예", "다른 실시예" 등과 같은 표현은 일반적으로, 본 발명을 특정의 실시예 구성으로 제한하는 것이 아니라, 가능한 실시예를 기술하는 것으로 이해되어야 한다. 그에 따라, 예를 들어, 일 실시예를 지칭하는 상이한 문구들이 일반적으로 동일한 실시예 및 상이한 실시예를 지칭하는 것으로 이해되어야 하고, "일 실시예에서"라는 문구가 일반적으로 "적어도 하나의 실시예에서"를 의미하는 것으로 이해되어야 한다.
임의의 적합한 운영 환경 및 프로그래밍 언어(또는 운영 환경과 프로그래밍 언어의 조합)가 본원에 기술되는 구성요소를 구현하는 데 사용될 수 있다. 앞서 살펴본 바와 같이, 본 기재 내용은 많은 상이한 종류의 데이터 처리 시스템에서 유리하게 사용될 수 있다. 예시적인 데이터 처리 시스템은 분산 컴퓨팅 시스템, 수퍼컴퓨터, 고성능 컴퓨팅 시스템, 컴퓨팅 클러스터, 메인프레임 컴퓨터, 미니컴퓨터, 클라이언트-서버 시스템, PC(personal computer), 워크스테이션, 서버, 휴대용 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, PDA(personal digital assistant), 전화, 핸드헬드 디바이스, 엔터테인먼트 디바이스(오디오 디바이스, 비디오 디바이스, 오디오/비디오 디바이스(예컨대, 텔레비전 및 셋톱 박스) 등), 차량용 처리 시스템, 및 정보를 처리하거나 전송하는 다른 디바이스(이들로 제한되지 않음)를 포함한다. 그에 따라, 명확히 달리 언급되거나 문맥에 의해 요구되지 않는 한, 임의의 특정 유형의 데이터 처리 시스템에 대한 언급(예컨대, 모바일 디바이스)이 다른 유형의 데이터 처리 시스템도 포괄하는 것으로 이해되어야 한다. 또한, 명확히 달리 언급되지 않는 한, 서로 결합되거나, 서로 통신하거나, 서로 응답하거나, 기타를 하는 것으로 기술되는 구성요소들이 서로 연속적으로 통신할 필요가 없고 서로 직접 결합될 필요가 없다. 마찬가지로, 하나의 구성요소가 다른 구성요소로부터 데이터를 수신하거나 그에게로 데이터를 송신하는 것으로 기술될 때, 명확히 달리 언급되지 않는 한, 그 데이터는 하나 이상의 중간 구성요소를 통해 송신되거나 수신될 수 있다. 그에 부가하여, 데이터 처리 시스템의 일부 구성요소가 버스와 통신하기 위한 인터페이스(예컨대, 커넥터)를 갖는 어댑터 카드로서 구현될 수 있다. 대안적으로, 디바이스 또는 구성요소가, 프로그램 가능 또는 비프로그램 가능 논리 디바이스 또는 어레이, ASIC(application-specific integrated circuit), 임베디드 컴퓨터, 스마트 카드 등과 같은 구성요소를 사용하여, 임베디드 제어기로서 구현될 수 있다. 본 개시 내용의 목적상, "버스"라는 용어는 2 개 초과의 디바이스에 의해 공유될 수 있는 경로는 물론, 포인트-투-포인트 경로를 포함한다.
본 개시 내용이 명령어, 함수, 프로시저, 데이터 구조, 애플리케이션 프로그램, 마이크로코드, 구성 설정, 및 다른 종류의 데이터를 언급할 수 있다. 앞서 기술된 바와 같이, 데이터가 머신 또는 디바이스에 의해 액세스될 때, 머신 또는 디바이스는 작업을 수행하는 것, 추상 데이터 유형 또는 저레벨 하드웨어 컨텍스트를 정의하는 것 및/또는 다른 동작을 수행하는 것으로 응답할 수 있다. 예를 들어, 데이터 저장소, RAM, 및/또는 플래시 메모리는, 실행될 때, 다양한 동작을 수행하는 다양한 명령어 세트를 포함할 수 있다. 이러한 명령어 세트가 일반적으로 소프트웨어라고 지칭될 수 있다. 그에 부가하여, "프로그램"이라는 용어는 일반적으로 광범위한 소프트웨어 구성체(애플리케이션, 루틴, 모듈, 드라이버, 서브프로그램, 프로세스, 및 다른 유형의 소프트웨어 구성요소를 포함함)를 포함하기 위해 사용될 수 있다. 또한, 예시적인 일 실시예에서 특정의 디바이스 상에 존재하는 것으로 앞서 기술되는 애플리케이션 및/또는 다른 데이터가, 다른 실시예에서, 하나 이상의 다른 디바이스 상에 존재할 수 있다. 그리고, 예시적인 일 실시예에서 하나의 특정 디바이스 상에서 수행되는 것으로 앞서 기술되는 컴퓨팅 동작이, 다른 실시예에서, 하나 이상의 다른 디바이스에 의해 실행될 수 있다.
또한, 본원에서 설명되는 하드웨어 및 소프트웨어 구성요소들이, 각각이 다른 것과 실질적으로 무관하게 설계, 구성, 또는 업데이트될 수 있도록, 알맞게 자체 완비된(reasonably self-contained) 기능 요소를 나타낸다는 것을 잘 알 것이다. 대안의 실시예에서, 구성요소들 중 다수가 본원에서 기술되고 예시되는 기능을 제공하기 위해 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 예를 들어, 대안의 실시예는 본 발명의 동작을 수행하는 명령어 또는 제어 논리를 인코딩하는 머신 액세스 가능 매체를 포함한다. 이러한 실시예는 프로그램 제품이라고도 지칭될 수 있다. 이러한 머신 액세스 가능 매체는 자기 디스크, 광 디스크, RAM, ROM(read only memory) 등과 같은 유형적 저장 매체(이들로 제한되지 않음)는 물론, RAM, ROM, 및/또는 다른 저장 설비를 포함하는 프로세서, 제어기, 및 다른 구성요소를 포함할 수 있다. 본 개시 내용의 목적상, "ROM"이라는 용어는 일반적으로 EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 ROM, 플래시 메모리 등과 같은 비휘발성 메모리 디바이스를 지칭하는 데 사용될 수 있다. 일부 실시예에서, 기술된 동작을 구현하는 제어 논리의 일부 또는 전부가 하드웨어 논리로(예컨대, 집적 회로 칩, PGA(programmable gate array), ASIC 등의 일부로서) 구현될 수 있다. 일 실시예에서, 모든 구성요소에 대한 명령어가 하나의 비일시적 머신 액세스 가능 매체에 저장될 수 있다. 다른 실시예에서, 2 개 이상의 비일시적 머신 액세스 가능 매체가 구성요소에 대한 명령어를 저장하는 데 사용될 수 있다. 예를 들어, 하나의 구성요소에 대한 명령어가 하나의 매체에 저장될 수 있고, 다른 구성요소에 대한 명령어가 다른 매체에 저장될 수 있다. 대안적으로, 하나의 구성요소에 대한 명령어들의 일부분이 하나의 매체에 저장될 수 있고, 그 구성요소에 대한 나머지 명령어들(은 물론 다른 구성요소에 대한 명령어들)이 하나 이상의 다른 매체에 저장될 수 있다. 명령어가 또한 분산 환경에서 사용될 수 있고, 단일 또는 멀티 프로세서 머신에 의한 액세스를 위해 로컬적으로 및/또는 원격적으로 저장될 수 있다.
또한, 하나 이상의 예시적인 프로세스가 특정의 순서로 수행되는 특정의 동작들에 관해 기술되어 있지만, 본 발명의 수많은 대안의 실시예를 도출하기 위해 그 프로세스에 수많은 수정이 적용될 수 있을 것이다. 예를 들어, 대안의 실시예는 개시된 동작들의 전부보다 적은 것을 사용하는 프로세스, 부가 동작을 사용하는 프로세스, 및 본원에 개시되는 개별 동작들이 결합되거나, 세분되거나, 재배열되거나, 다른 방식으로 변경되는 프로세스를 포함할 수 있다.
본원에 기술되는 예시적인 실시예로부터 용이하게 도출될 수 있는 아주 다양한 유용한 치환을 고려하여, 이 상세한 설명은 예시적인 것으로 의도되어 있고, 적용 범위를 제한하는 것으로 해석되어서는 안된다.
이하의 예는 추가적인 실시예에 관한 것이다.
예 A1은 GPU 주파수의 동적 조절에 대한 지원을 갖는 데이터 처리 시스템이다. 데이터 처리 시스템은 CPU, CPU에 응답하는 GPU, CPU에 응답하는 머신 액세스 가능 매체, 및, CPU에 의해 액세스될 때, 데이터 처리 시스템이 특정 동작들을 수행할 수 있게 하는 머신 액세스 가능 매체 내의 데이터를 포함한다. 그 동작들은 (a) 프로그램이 실행을 위해 호출되는 것에 응답하여, 프로그램에 대한 미리 결정된 메모리/계산 비율을 자동으로 검색하는 동작 - 프로그램은 GPU 상에서 적어도 부분적으로 실행될 작업 부하를 포함하고, 미리 결정된 메모리/계산 비율은 프로그램 내에서의 계산 동작들에 대한, 프로그램 내에서의 메모리 액세스들의 비율을 나타냄 -; 및 (b) 프로그램에 대한 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수를 자동으로 조절하는 동작을 포함한다.
예 A2는 예 A1의 특징들을 포함하고, 동작들은, GPU의 주파수를 자동으로 조절하는 동작 후에, GPU 상에서 적어도 부분적으로 실행될 프로그램을 시작하는 동작을 추가로 포함한다.
예 A3은 예 A1의 특징들을 포함하고, 프로그램에 대한 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수를 자동으로 조절하는 동작은 (a) 프로그램에 대한 미리 결정된 메모리/계산 비율이 상대적으로 높으면 GPU를 상대적으로 낮은 주파수로 설정하는 동작; 및 (b) 프로그램에 대한 미리 결정된 메모리/계산 비율이 상대적으로 낮으면 GPU를 상대적으로 높은 주파수로 설정하는 동작을 포함한다. 예 A3은 또한 예 A2의 특징들을 포함할 수 있다.
예 B1은 GPU의 주파수를 동적으로 조절하는 방법이다. 본 방법은, (a) 프로그램이 GPU를 갖는 데이터 처리 시스템에서의 실행을 위해 호출되는 것에 응답하여, 프로그램에 대한 미리 결정된 메모리/계산 비율을 자동으로 검색하는 단계 - 프로그램은 GPU 상에서 적어도 부분적으로 실행될 작업 부하를 포함하고, 미리 결정된 메모리/계산 비율은 프로그램 내에서의 계산 동작들에 대한, 프로그램 내에서의 메모리 액세스들의 비율을 나타냄 -; 및 (b) 프로그램에 대한 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수를 자동으로 조절하는 단계를 포함한다.
예 B2는 예 B1의 특징들을 포함한다. 그에 부가하여, 본 방법은, GPU의 주파수를 자동으로 조절하는 단계 후에, GPU 상에서 적어도 부분적으로 실행될 프로그램을 시작하는 단계를 포함한다.
예 B3은 예 B1의 특징들을 포함한다. 그에 부가하여, 프로그램에 대한 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수를 자동으로 조절하는 동작은 (a) 프로그램에 대한 미리 결정된 메모리/계산 비율이 상대적으로 높으면 GPU를 상대적으로 낮은 주파수로 설정하는 동작; 및 (b) 프로그램에 대한 미리 결정된 메모리/계산 비율이 상대적으로 낮으면 GPU를 상대적으로 높은 주파수로 설정하는 동작을 포함한다. 예 B3은 또한 예 B2의 특징들을 포함할 수 있다.
예 B4는 예 B3의 특징들을 포함한다. 그에 부가하여, 프로그램에 대한 미리 결정된 메모리/계산 비율이 상대적으로 높으면 GPU를 상대적으로 낮은 주파수로 설정하는 동작은 프로그램에 대한 미리 결정된 메모리/계산 비율이 상대적으로 높으면 GPU의 전압 레벨을 자동으로 감소시키는 동작을 포함한다. 예 B4는 또한 예 B2의 특징들을 포함할 수 있다.
예 B5는 예 B1의 특징들을 포함한다. 그에 부가하여, 본 방법은 상이한 메모리/계산 비율들을 각자의 GPU 주파수들에 매핑하는 미리 결정된 매핑을 사용하여, 프로그램의 메모리/계산 비율에 대응하는 GPU 주파수를 식별하는 단계를 포함한다. 또한, 프로그램에 대한 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수를 자동으로 조절하는 동작은 식별된 GPU 주파수에 기초하여, GPU의 주파수를 조절하는 동작을 포함한다. 예 B5는 또한 예 B2 내지 예 B4 중 임의의 하나 이상의 예의 특징들을 포함할 수 있다.
예 B6은 예 B1의 특징들을 포함한다. 그에 부가하여, 프로그램의 실행은 런타임 관리자에 의해 관리되고, 프로그램에 대한 메모리/계산 비율을 자동으로 검색하는 동작은 런타임 관리자에 의해 수행된다. 예 B6은 또한 예 B2 내지 예 B5 중 임의의 하나 이상의 예의 특징들을 포함할 수 있다.
예 B7은 예 B1의 특징들을 포함한다. 그에 부가하여, 프로그램의 실행은 런타임 관리자에 의해 관리되고, GPU의 주파수를 자동으로 조절하는 동작은 런타임 관리자에 의해 수행된다. 예 B7은 또한 예 B2 내지 예 B6 중 임의의 하나 이상의 예의 특징들을 포함할 수 있다.
예 B8은 예 B1의 특징들을 포함한다. 그에 부가하여, 본 방법은, (a) 프로그램에 대한 메모리/계산 비율을 결정하는 단계; 및 (b) 프로그램에 대한 메모리/계산 비율을 결정하는 단계 후에, 프로그램에 대한 메모리/계산 비율을 프로그램에 대한 오브젝트 코드에 기록하는 단계를 포함한다. 예 B8은 또한 예 B2 내지 예 B7 중 임의의 하나 이상의 예의 특징들을 포함할 수 있다.
예 C1은 GPU 주파수의 동적 조절을 지원하는 방법이다. 본 방법은 (a) GPU 상에서 실행하기에 적합한 작업 부하를 갖는 프로그램에 대한 메모리/계산 비율을 결정하는 단계; 및 (b) 프로그램에 대한 메모리/계산 비율을 결정하는 단계 후에, 프로그램에 대한 메모리/계산 비율을 프로그램에 대한 오브젝트 코드에 기록하는 단계를 포함한다.
예 C2는 예 C1의 특징들을 포함한다. 그에 부가하여, 본 방법은 프로그램에 대한 소스 코드를 오브젝트 코드로 컴파일하는 단계를 포함한다. 또한, 프로그램에 대한 메모리/계산 비율을 결정하는 동작은 프로그램을 컴파일하는 동안 자동으로 수행된다.
예 D1은 GPU의 주파수를 동적으로 조절하는 방법이다. 본 방법은 (a) 데이터 처리 시스템의 GPU 상에서 프로그램을 실행하는 단계; (b) 프로그램이 실행 중인 동안 프로그램에 대한 성능 데이터를 획득하는 단계; (c) 프로그램이 실행 중인 동안, 성능 데이터에 기초하여, 프로그램에 대한 메모리/계산 비율을 결정하는 단계 - 메모리/계산 비율은 프로그램 내에서의 계산 동작들에 대한, 프로그램 내에서의 메모리 액세스들의 비율을 나타냄 -; 및 (d) 프로그램이 실행 중인 동안, 메모리/계산 비율에 기초하여, GPU의 주파수를 동적으로 조절하는 단계를 포함한다.
예 D2는 예 D1의 특징들을 포함한다. 그에 부가하여, 프로그램이 실행 중인 동안 프로그램에 대한 성능 데이터를 획득하는 동작은 (a) 소프트웨어 기반 프로파일러로부터 성능 데이터를 획득하는 동작; 및 (b) 적어도 하나의 하드웨어 성능 카운터로부터 성능 데이터를 획득하는 동작으로 이루어지는 그룹으로부터의 적어도 하나의 동작을 포함한다.
예 E는 GPU 주파수의 동적 조절을 지원하는 컴퓨터 명령어들을 포함하는 적어도 하나의 머신 액세스 가능 매체이다. 컴퓨터 명령어들은, 데이터 처리 시스템 상에서 실행되는 것에 응답하여, 데이터 처리 시스템이 예 B1 내지 예 B7, 예 C1 및 예 C2, 그리고 예 D1 및 예 D2 중 임의의 하나 이상 예의 방법을 수행할 수 있게 한다.
예 F는 GPU 주파수의 동적 조절을 지원하는 특징들을 갖는 데이터 처리 시스템이다. 데이터 처리 시스템은 중앙 처리 유닛(CPU), CPU에 응답하는 GPU, CPU에 응답하는 적어도 하나의 머신 액세스 가능 매체, 및 적어도 하나의 머신 액세스 가능 매체에 적어도 부분적으로 저장되는 컴퓨터 명령어들을 포함한다. 또한, 실행되는 것에 응답하여, 컴퓨터 명령어들은 데이터 처리 시스템이 예 B1 내지 예 B7, 예 C1 및 예 C2, 그리고 예 D1 및 예 D2 중 임의의 하나 이상 예에 따른 방법을 수행할 수 있게 한다.
예 G는 GPU 주파수의 동적 조절을 지원하는 특징들을 갖는 데이터 처리 시스템이다. 데이터 처리 시스템은 예 B1 내지 예 B7, 예 C1 및 예 C2, 그리고 예 D1 및 예 D2 중 임의의 하나 이상 예의 방법을 수행하는 수단을 포함한다.
예 H1은 GPU 주파수의 동적 조절을 지원하는 장치이다. 본 장치는 (a) 비일시적 머신 액세스 가능 매체; 및 (b) GPU를 갖는 데이터 처리 시스템에 의해 액세스될 때, 데이터 처리 시스템이 다양한 동작들을 수행할 수 있게 하는 머신 액세스 가능 매체 내의 데이터를 포함한다. 그 동작들은 (a) 프로그램이 데이터 처리 시스템에서의 실행을 위해 호출되는 것에 응답하여, 프로그램에 대한 미리 결정된 메모리/계산 비율을 자동으로 검색하는 동작 - 프로그램은 GPU 상에서 적어도 부분적으로 실행될 작업 부하를 포함하고, 미리 결정된 메모리/계산 비율은 프로그램 내에서의 계산 동작들에 대한, 프로그램 내에서의 메모리 액세스들의 비율을 나타냄 -; 및 (b) 프로그램에 대한 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수를 자동으로 조절하는 동작을 포함한다.
예 H2는 예 H1의 특징들을 포함한다. 또한, 동작들은, GPU의 주파수를 자동으로 조절하는 동작 후에, GPU 상에서 적어도 부분적으로 실행될 프로그램을 시작하는 동작을 추가로 포함한다.
예 H3은 예 H1의 특징들을 포함한다. 또한, 프로그램에 대한 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수를 자동으로 조절하는 동작은 (a) 프로그램에 대한 미리 결정된 메모리/계산 비율이 상대적으로 높으면 GPU를 상대적으로 낮은 주파수로 설정하는 동작; 및 (b) 프로그램에 대한 미리 결정된 메모리/계산 비율이 상대적으로 낮으면 GPU를 상대적으로 높은 주파수로 설정하는 동작을 포함한다. 예 H3은 또한 예 H2의 특징들을 포함할 수 있다.
예 H4는 예 H1의 특징들을 포함한다. 또한 동작들은 상이한 메모리/계산 비율들을 각자의 GPU 주파수들에 매핑하는 미리 결정된 매핑을 사용하여, 프로그램의 메모리/계산 비율에 대응하는 GPU 주파수를 식별하는 동작을 추가로 포함한다. 또한, 프로그램에 대한 미리 결정된 메모리/계산 비율에 기초하여, GPU의 주파수를 자동으로 조절하는 동작은 식별된 GPU 주파수에 기초하여, GPU의 주파수를 조절하는 동작을 포함한다. 예 H4는 또한 예 H2 및 예 H3 중 임의의 하나 이상의 예의 특징들을 포함할 수 있다.
예 H5는 예 H1의 특징들을 포함한다. 또한, 머신 액세스 가능 매체 내의 데이터는 프로그램의 실행을 관리하는 런타임 관리자를 포함한다. 또한, 프로그램에 대한 메모리/계산 비율을 자동으로 검색하는 동작은 런타임 관리자에 의해 수행된다. 예 H5는 또한 예 H2 내지 예 H4 중 임의의 하나 이상의 예의 특징들을 포함할 수 있다.
예 H6은 예 H1의 특징들을 포함한다. 또한, 머신 액세스 가능 매체 내의 데이터는 프로그램의 실행을 관리하는 런타임 관리자를 포함한다. 또한, GPU의 주파수를 자동으로 조절하는 동작은 런타임 관리자에 의해 수행된다. 예 H6은 또한 예 H2 내지 예 H5 중 임의의 하나 이상의 예의 특징들을 포함할 수 있다.
예 I1은 GPU 주파수의 동적 조절을 지원하는 장치이다. 본 장치는 (a) 비일시적 머신 액세스 가능 매체; 및 (b) GPU를 갖는 데이터 처리 시스템에 의해 액세스될 때, 데이터 처리 시스템이 다양한 동작들을 수행할 수 있게 하는 머신 액세스 가능 매체 내의 데이터를 포함한다. 그 동작들은 (a) GPU 상에서 프로그램을 실행하는 동작; (b) 프로그램이 실행 중인 동안 프로그램에 대한 성능 데이터를 획득하는 동작; (c) 프로그램이 실행 중인 동안, 성능 데이터에 기초하여, 프로그램에 대한 메모리/계산 비율을 결정하는 동작 - 메모리/계산 비율은 프로그램 내에서의 계산 동작들에 대한, 프로그램 내에서의 메모리 액세스들의 비율을 나타냄 -; 및 (d) 프로그램이 실행 중인 동안, 메모리/계산 비율에 기초하여, GPU의 주파수를 동적으로 조절하는 동작을 포함한다.
예 I2는 예 I1의 특징들을 포함한다. 또한, 프로그램이 실행 중인 동안 프로그램에 대한 성능 데이터를 획득하는 동작은 (a) 소프트웨어 기반 프로파일러로부터 성능 데이터를 획득하는 동작; 및 (b) 적어도 하나의 하드웨어 성능 카운터로부터 성능 데이터를 획득하는 동작으로 이루어지는 그룹으로부터의 적어도 하나의 동작을 포함한다.

Claims (18)

  1. 그래픽 처리 유닛 주파수의 동적 조절에 대한 지원을 갖는 데이터 처리 시스템으로서,
    중앙 처리 유닛(central processing unit; CPU);
    상기 CPU에 응답하는 그래픽 처리 유닛(graphics processing unit; GPU);
    상기 CPU에 응답하는 머신 액세스 가능 매체; 및
    상기 CPU에 의해 액세스될 때, 상기 데이터 처리 시스템이 동작들을 수행할 수 있게 하는 상기 머신 액세스 가능 매체 내의 데이터
    를 포함하며, 상기 동작들은
    프로그램이 실행을 위해 호출되는 것에 응답하여, 상기 프로그램에 대한 미리 결정된 메모리/계산 비율(memory/compute ratio)을 자동으로 검색하는 동작 - 상기 프로그램은 상기 GPU 상에서 적어도 부분적으로 실행될 작업 부하를 포함하고, 상기 미리 결정된 메모리/계산 비율은 상기 프로그램 내에서의 계산 동작들에 대한, 상기 프로그램 내에서의 메모리 액세스들의 비율을 나타냄 -; 및
    상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율에 기초하여, 상기 GPU의 주파수를 자동으로 조절하는 동작을 포함하는, 데이터 처리 시스템.
  2. 제1항에 있어서, 상기 동작들은,
    상기 GPU의 주파수를 자동으로 조절하는 동작 후에, 상기 GPU 상에서 적어도 부분적으로 실행될 상기 프로그램을 시작(launching)하는 동작을 추가로 포함하는, 데이터 처리 시스템.
  3. 제1항에 있어서, 상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율에 기초하여, 상기 GPU의 주파수를 자동으로 조절하는 동작은
    상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율이 상대적으로 높으면 상기 GPU를 상대적으로 낮은 주파수로 설정하는 동작; 및
    상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율이 상대적으로 낮으면 상기 GPU를 상대적으로 높은 주파수로 설정하는 동작을 포함하는, 데이터 처리 시스템.
  4. 그래픽 처리 유닛의 주파수를 동적으로 조절하는 방법으로서,
    프로그램이 그래픽 처리 유닛(GPU)을 갖는 데이터 처리 시스템에서의 실행을 위해 호출되는 것에 응답하여, 상기 프로그램에 대한 미리 결정된 메모리/계산 비율을 자동으로 검색하는 단계 - 상기 프로그램은 상기 GPU 상에서 적어도 부분적으로 실행될 작업 부하를 포함하고, 상기 미리 결정된 메모리/계산 비율은 상기 프로그램 내에서의 계산 동작들에 대한, 상기 프로그램 내에서의 메모리 액세스들의 비율을 나타냄 -; 및
    상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율에 기초하여, 상기 GPU의 주파수를 자동으로 조절하는 단계
    를 포함하는, 방법.
  5. 제4항에 있어서, 상기 GPU의 주파수를 자동으로 조절하는 단계 후에, 상기 GPU 상에서 적어도 부분적으로 실행될 상기 프로그램을 시작하는 단계를 추가로 포함하는, 방법.
  6. 제4항에 있어서, 상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율에 기초하여, 상기 GPU의 주파수를 자동으로 조절하는 동작은
    상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율이 상대적으로 높으면 상기 GPU를 상대적으로 낮은 주파수로 설정하는 동작; 및
    상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율이 상대적으로 낮으면 상기 GPU를 상대적으로 높은 주파수로 설정하는 동작을 포함하는, 방법.
  7. 제6항에 있어서, 상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율이 상대적으로 높으면 상기 GPU를 상대적으로 낮은 주파수로 설정하는 동작은
    상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율이 상대적으로 높으면 상기 GPU의 전압 레벨을 자동으로 감소시키는 동작을 포함하는, 방법.
  8. 제4항에 있어서,
    상이한 메모리/계산 비율들을 각자의 GPU 주파수들에 매핑하는 미리 결정된 매핑을 사용하여, 상기 프로그램의 상기 메모리/계산 비율에 대응하는 GPU 주파수를 식별하는 단계를 추가로 포함하고,
    상기 프로그램에 대한 상기 미리 결정된 메모리/계산 비율에 기초하여, 상기 GPU의 주파수를 자동으로 조절하는 동작은 상기 식별된 GPU 주파수에 기초하여, 상기 GPU의 주파수를 조절하는 동작을 포함하는, 방법.
  9. 제4항에 있어서,
    상기 프로그램의 실행은 런타임 관리자에 의해 관리되고,
    상기 프로그램에 대한 상기 메모리/계산 비율을 자동으로 검색하는 동작은 상기 런타임 관리자에 의해 수행되는, 방법.
  10. 제4항에 있어서,
    상기 프로그램의 실행은 런타임 관리자에 의해 관리되고,
    상기 GPU의 주파수를 자동으로 조절하는 동작은 상기 런타임 관리자에 의해 수행되는, 방법.
  11. 제4항에 있어서,
    상기 프로그램에 대한 상기 메모리/계산 비율을 결정하는 단계; 및
    상기 프로그램에 대한 상기 메모리/계산 비율을 결정하는 단계 후에, 상기 프로그램에 대한 상기 메모리/계산 비율을 상기 프로그램에 대한 오브젝트 코드에 기록하는 단계를 추가로 포함하는, 방법.
  12. 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법으로서,
    그래픽 처리 유닛(GPU) 상에서 실행하기에 적합한 작업 부하를 갖는 프로그램에 대한 메모리/계산 비율을 결정하는 단계; 및
    상기 프로그램에 대한 메모리/계산 비율을 결정하는 단계 후에, 상기 프로그램에 대한 상기 메모리/계산 비율을 상기 프로그램에 대한 오브젝트 코드에 기록하는 단계
    를 포함하는, 방법.
  13. 제12항에 있어서,
    상기 프로그램에 대한 소스 코드를 오브젝트 코드로 컴파일하는 단계를 추가로 포함하고;
    상기 프로그램에 대한 상기 메모리/계산 비율을 결정하는 동작은 상기 프로그램을 컴파일하는 동안 자동으로 수행되는, 방법.
  14. 그래픽 처리 유닛의 주파수를 동적으로 조절하는 방법으로서,
    데이터 처리 시스템의 그래픽 처리 유닛(GPU) 상에서 프로그램을 실행하는 단계;
    상기 프로그램이 실행 중인 동안 상기 프로그램에 대한 성능 데이터를 획득하는 단계;
    상기 프로그램이 실행 중인 동안, 상기 성능 데이터에 기초하여, 상기 프로그램에 대한 메모리/계산 비율을 결정하는 단계 - 상기 메모리/계산 비율은 상기 프로그램 내에서의 계산 동작들에 대한, 상기 프로그램 내에서의 메모리 액세스들의 비율을 나타냄 -; 및
    상기 프로그램이 실행 중인 동안, 상기 메모리/계산 비율에 기초하여, 상기 GPU의 주파수를 동적으로 조절하는 단계
    를 포함하는, 방법.
  15. 제14항에 있어서, 상기 프로그램이 실행 중인 동안 상기 프로그램에 대한 성능 데이터를 획득하는 동작은
    소프트웨어 기반 프로파일러(software-based profiler)로부터 상기 성능 데이터를 획득하는 동작; 및
    적어도 하나의 하드웨어 성능 카운터(hardware performance counter)로부터 상기 성능 데이터를 획득하는 동작으로 이루어지는 그룹으로부터의 적어도 하나의 동작을 포함하는, 방법.
  16. 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 컴퓨터 명령어들을 포함하는 적어도 하나의 머신 액세스 가능 매체로서, 상기 컴퓨터 명령어들은, 데이터 처리 시스템 상에서 실행되는 것에 응답하여, 상기 데이터 처리 시스템이 제4항 내지 제15항 중 어느 한 항에 따른 방법을 수행할 수 있게 하는, 적어도 하나의 머신 액세스 가능 매체.
  17. 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 특징들을 갖는 데이터 처리 시스템으로서,
    중앙 처리 유닛(CPU);
    상기 CPU에 응답하는 그래픽 처리 유닛(GPU);
    상기 CPU에 응답하는 적어도 하나의 머신 액세스 가능 매체; 및
    상기 적어도 하나의 머신 액세스 가능 매체에 적어도 부분적으로 저장되는 컴퓨터 명령어들
    을 포함하고, 상기 컴퓨터 명령어들은, 실행되는 것에 응답하여, 상기 데이터 처리 시스템이 제4항 내지 제15항 중 어느 한 항에 따른 방법을 수행할 수 있게 하는, 데이터 처리 시스템.
  18. 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 특징들을 갖는 데이터 처리 시스템으로서,
    제4항 내지 제15항 중 어느 한 항의 방법을 수행하는 수단을 포함하는, 데이터 처리 시스템.
KR1020167023134A 2014-03-27 2014-03-27 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치 KR101860248B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/074166 WO2015143657A1 (en) 2014-03-27 2014-03-27 Methods and apparatus to support dynamic adjustment of graphics processing unit frequency

Publications (2)

Publication Number Publication Date
KR20160113214A true KR20160113214A (ko) 2016-09-28
KR101860248B1 KR101860248B1 (ko) 2018-05-21

Family

ID=54193897

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167023134A KR101860248B1 (ko) 2014-03-27 2014-03-27 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치

Country Status (5)

Country Link
US (1) US10593011B2 (ko)
EP (1) EP3123275A4 (ko)
KR (1) KR101860248B1 (ko)
CN (1) CN106030453B (ko)
WO (1) WO2015143657A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017008269A1 (de) 2016-09-02 2018-03-08 Mando Corporation Vorrichtung und verfahren für einen fail-safe in einem elektrischen corner-modul-system
KR20200117701A (ko) * 2019-04-05 2020-10-14 계명대학교 산학협력단 Dvfs 기법이 적용된 디바이스 및 주파수 설정 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10593011B2 (en) 2014-03-27 2020-03-17 Intel Corporation Methods and apparatus to support dynamic adjustment of graphics processing unit frequency
US10546393B2 (en) * 2017-12-30 2020-01-28 Intel Corporation Compression in machine learning and deep learning processing
CN109165047B (zh) * 2018-09-03 2021-10-12 英业达科技有限公司 维持图形处理器主板的正确时间的方法
US10802809B2 (en) * 2019-03-05 2020-10-13 International Business Machines Corporation Predicting physical memory attributes by compiler analysis of code blocks
CN110286710B (zh) * 2019-07-01 2021-05-18 联想(北京)有限公司 一种控制方法、处理器及电子设备
CN111459682B (zh) * 2020-04-09 2023-06-27 Oppo广东移动通信有限公司 频率调整方法、装置、电子设备以及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6378081B1 (en) 1998-10-01 2002-04-23 Gateway, Inc. Power conservation without performance reduction in a power-managed system
JP2005196430A (ja) * 2004-01-07 2005-07-21 Hiroshi Nakamura 半導体装置および半導体装置の電源電圧/クロック周波数制御方法
JP4231516B2 (ja) * 2006-08-04 2009-03-04 株式会社日立製作所 実行コードの生成方法及びプログラム
GB201008785D0 (en) 2009-12-18 2010-07-14 Univ Gent A counter architecture for online dvfs profitability estimation
JP5794010B2 (ja) * 2011-07-19 2015-10-14 富士通株式会社 情報処理装置、制御プログラムおよび制御方法
CN103246340A (zh) 2012-02-06 2013-08-14 索尼公司 动态调整中央处理单元的频率的装置和方法
TWI597599B (zh) 2012-06-05 2017-09-01 威盛電子股份有限公司 圖形處理單元與其管理方法
US10593011B2 (en) 2014-03-27 2020-03-17 Intel Corporation Methods and apparatus to support dynamic adjustment of graphics processing unit frequency

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017008269A1 (de) 2016-09-02 2018-03-08 Mando Corporation Vorrichtung und verfahren für einen fail-safe in einem elektrischen corner-modul-system
KR20200117701A (ko) * 2019-04-05 2020-10-14 계명대학교 산학협력단 Dvfs 기법이 적용된 디바이스 및 주파수 설정 방법

Also Published As

Publication number Publication date
US10593011B2 (en) 2020-03-17
EP3123275A4 (en) 2017-10-25
CN106030453B (zh) 2020-02-21
CN106030453A (zh) 2016-10-12
KR101860248B1 (ko) 2018-05-21
WO2015143657A8 (en) 2016-07-07
WO2015143657A1 (en) 2015-10-01
US20170076422A1 (en) 2017-03-16
EP3123275A1 (en) 2017-02-01

Similar Documents

Publication Publication Date Title
KR101860248B1 (ko) 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치
US10942716B1 (en) Dynamic computational acceleration using a heterogeneous hardware infrastructure
Wang et al. Intel math kernel library
US7844960B2 (en) Optimizing software program execution during class loading phase
US8860736B2 (en) Terminal and application execution method thereof
CN108205469B (zh) 一种基于MapReduce的资源分配方法及服务器
US10983773B2 (en) Technologies for translation cache management in binary translation systems
US11151474B2 (en) GPU-based adaptive BLAS operation acceleration apparatus and method thereof
US11029924B2 (en) Program optimization by converting code portions to directly reference internal data representations
US9639391B2 (en) Scaling past the java virtual machine thread limit
Valery et al. Low precision deep learning training on mobile heterogeneous platform
KR102315102B1 (ko) 가상 머신을 부팅하기 위한 방법, 장치, 기기 및 매체
US7293184B2 (en) Programmatic binding for power management events involving execution of instructions in a first programming system with a first interface and a second programming system with a second interface
US9081560B2 (en) Code tracing processor selection
KR101755154B1 (ko) 이종 연산 처리 장치에 대한 동적 작업 할당 방법 및 장치
US8713545B2 (en) Architecture for accelerated computer processing
US11126535B2 (en) Graphics processing unit for deriving runtime performance characteristics, computer system, and operation method thereof
Silva et al. A Linux microkernel based architecture for OPENCV in the Raspberry Pi device
US7870543B2 (en) Dynamic tuning of user-space process
Mistry et al. A framework for profiling and performance monitoring of heterogeneous applications
Ko et al. Fast GPU-in-the-loop simulation technique at OpenGL ES API level for Android Graphics Applications
Shuja Integrated Vector Instruction Translator and Offloading Framework for Mobile Cloud Computing
CN118113561A (zh) 一种通过动态和静态信息融合的gpu能源效率优化方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant