KR20160025894A - Gpu의 리소스에 대한 전력 소비 제어방법 및 장치 - Google Patents

Gpu의 리소스에 대한 전력 소비 제어방법 및 장치 Download PDF

Info

Publication number
KR20160025894A
KR20160025894A KR1020140113355A KR20140113355A KR20160025894A KR 20160025894 A KR20160025894 A KR 20160025894A KR 1020140113355 A KR1020140113355 A KR 1020140113355A KR 20140113355 A KR20140113355 A KR 20140113355A KR 20160025894 A KR20160025894 A KR 20160025894A
Authority
KR
South Korea
Prior art keywords
power consumption
resource
code block
gpu
level
Prior art date
Application number
KR1020140113355A
Other languages
English (en)
Other versions
KR102248787B1 (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 삼성전자주식회사
Priority to KR1020140113355A priority Critical patent/KR102248787B1/ko
Priority to US14/738,118 priority patent/US9891692B2/en
Publication of KR20160025894A publication Critical patent/KR20160025894A/ko
Application granted granted Critical
Publication of KR102248787B1 publication Critical patent/KR102248787B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

GPU(Graphic Processing Unit)의 리소스 중에서 전력 소비 수준을 결정하고자 하는 리소스를 선택하고, GPU를 사용하여 수행되는 프로그램의 전체 또는 일부인 코드 블락으로부터 선택된 소정의 리소스에 대한 사용 여부를 판단하고, 판단 결과에 기초하여 선택된 소정의 리소스에 대한 전력 소비 수준을 결정하고 결정된 전력 소비 수준에 기초하여 선택된 소정의 리소스에서 소비하는 전력 수준을 제어하는 전력 소비 제어장치가 개시된다.

Description

GPU의 리소스에 대한 전력 소비 제어방법 및 장치{Method and apparatus for power control for GPU resources}
본 발명은 전력 소비 제어 방법 및 장치에 대한 것으로, 보다 구체적으로는 GPU 리소스의 전력 소비를 효과적으로 제어하는 방법 및 장치에 대한 것이다.
오늘날 GPU(Graphic Processing Unit)는 데스크탑(Desk top), 랩탑, 휴대폰, 미디어 플레이어 등 다양한 기기에서 핵심적인 역할을 수행하는 3차원 그래픽 렌더링 장치로 자리잡았다. 사용자의 시각적인 만족도를 높이기 위해서는 이러한 GPU의 기능 및 성능을 향상시킴과 동시에 GPU에서 소비되는 전력을 낮추는 것이 매우 중요하다.
GPU를 이용하는 어플리케이션에는 전통적으로 게임, UX, CAD 등과 같이 전체적인 그래픽스 파이프라인의 기능을 요하는 것들이 다수였으나, 근자에는 컴퓨팅 기능만을 사용하는 어플리케이션도 GPU를 이용하고 있다. CUDA 또는 OpenCL 과 같은 프로그래밍 아키텍쳐를 기반으로 하는 어플리케이션들이 그러한 예로서, 병렬적으로 연산하는 것을 특징으로 한다.
컴퓨팅 기능만을 사용하는 어플리케이션들이 수행될 때는, GPU의 코어 프로세서, 이미지 데이터를 처리하기 위한 텍스쳐 유닛 등의 몇몇의 리소스들을 제외한 파이프라인 기능들은 사용되지 않으므로, 사용되지 않는 리소스들은 저 전력 수준에서 동작할 수 있다.
프로그램에서 추출한 정보에 기초하여, GPU 리소스에 대한 전력 소비 수준을 감소시킬 수 있는 전력 소비 제어 방법 및 장치를 제공할 수 있다.
또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다. 본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시예에 따른 전력 소비 제어장치는 GPU(Graphic Processing Unit)의 리소스 중에서 전력 소비 수준을 결정하고자 하는 리소스를 선택하는 리소스 선택부, 상기 GPU를 사용하여 수행되는 프로그램의 전체 또는 일부인 코드 블락(Code Block)으로부터 상기 선택된 리소스의 사용 여부를 판단하는 리소스 사용 정보 획득부, 및 상기 판단 결과에 기초하여 상기 선택된 리소스에 대한 전력 소비 수준을 결정하고 상기 결정된 전력 소비 수준에 기초하여 상기 선택된 리소스에서 소비하는 전력 수준을 제어하는 전력 소비 제어부를 포함한다.
일 실시예에 따른 상기 리소스 사용 정보 획득부는, 상기 코드 블락에 포함된 명령어를 추출하고, 상기 명령어로부터, 상기 선택된 리소스 중에서 상기 추출된 명령어를 수행하는 리소스를 결정하여 상기 결정된 리소스를 상기 코드 블락이 사용하는 리소스로 판단한다.
일 실시예에 따른 상기 전력 소비 제어부는, 상기 판단 결과에 기초하여, 상기 선택된 리소스 중에서 사용되지 않는 리소스에 대해 상기 GPU가 상기 코드 블락을 처리하는 동안의 전력 소비 수준을 감소시키는 것을 특징으로 한다.
일 실시예에 따른 상기 전력 소비 제어부는, 상기 코드 블락이 GPU에서 처리되는데 소요되는 시간이 임계값보다 크면, 상기 전력 소비 수준을 감소시키는 것을 특징으로 한다.
일 실시예에 따른 상기 전력 소비 제어장치는, 상기 프로그램은 복수의 코드 블락을 포함하고, 상기 리소스 사용 정보 획득부는 상기 복수의 코드 블락 각각에 대응되어 획득되는 상기 선택된 리소스의 사용 여부에 관한 정보를 병합하는 리소스 사용 정보 병합부를 더 포함하고, 상기 전력 소비 제어부는 상기 병합된 결과에 기초하여 상기 선택된 리소스에 대한 전력 소비 수준을 결정하고, 상기 결정된 전력 소비 수준에 기초하여 상기 GPU가 상기 복수의 코드 블락을 처리하는 동안의 상기 선택된 리소스에서 소비하는 전력 수준을 제어하는 것을 특징으로 한다.
일 실시예에 따른 상기 리소스 사용 정보 병합부는, 상기 복수의 코드 블락 중 적어도 하나의 코드 블락이 상기 선택된 리소스를 사용하면, 상기 복수의 코드 블락 전체가 상기 선택된 리소스를 사용하는 것으로 판단하고, 상기 복수의 코드 블락 모두가 상기 선택된 리소스를 사용하지 않는다면, 상기 복수의 코드 블락 전체가 상기 선택된 리소스를 사용하는 것으로 판단하여 병합하는 것을 특징으로 한다.
일 실시예에 따른 상기 전력 소비 제어부는, 상기 병합된 결과에 기초하여, 상기 선택된 리소스 사용되지 않는 리소스에 대해 상기GPU가 상기 복수의 코드 블락을 처리하는 동안의 전력 소비 수준을 감소시키는 것을 특징으로 한다.
일 실시예에 따른 상기 전력 소비 제어부는, 상기 복수의 코드 블락이 GPU에서 처리되는데 소요되는 시간이 임계값보다 크면, 상기 전력 소비 수준을 감소시키는 것을 특징으로 한다.
일 실시예에 따른 상기 전력 소비 제어장치는 상기 프로그램이 복수의 코드 블락을 포함한 경우, 상기 복수의 코드 블락들이 상기 GPU에서 처리되는 순서를 재배열(reordering)하는 처리 순서 재배열부를 더 포함하고, 상기 처리 순서 재배열부는 상기 GPU가 상기 복수의 코드 블락들을 처리하는 동안의 상기 선택된 리소스에서 소비되는 전력 수준의 변화의 합이 작아지도록 재배열 하는 것을 특징으로 하고, 상기 소비되는 전력 수준의 변화의 합은, 상기 복수의 상기 코드 블락 각각에 대응하여 획득되는 상기 선택된 리소스의 사용 여부에 관한 정보들을 소정의 처리 순서대로 비교하여 상기 사용 여부가 변경되는 횟수에 기초하여 결정되는 것을 특징으로 한다.
일 실시예에 따른 전력 소비 제어방법은 GPU(Graphic Processing Unit)의 리소스 중에서 전력 소비 수준을 결정하고자 하는 리소스를 선택하는 단계, 상기 GPU를 사용하여 수행되는 프로그램의 전체 또는 일부인 코드 블락(Code Block)으로부터 상기 선택된 리소스의 사용 여부를 판단하는 단계, 및 상기 판단 결과에 기초하여 상기 선택된 리소스에 대한 전력 소비 수준을 결정하고 상기 결정된 전력 소비 수준에 기초하여 상기 선택된 리소스에서 소비하는 전력 수준을 제어하는 단계를 포함한다.
일 실시예에 따른 상기 사용 여부를 판단하는 단계는, 상기 코드 블락에 포함된 명령어를 추출하고, 상기 명령어로부터, 상기 선택된 리소스 중에서 상기 추출된 명령어를 수행하는 리소스를 결정하여 상기 결정된 리소스를 상기 코드 블락이 사용하는 리소스로 판단하는 단계를 포함한다.
일 실시예에 따른 상기 소비하는 전력을 제어하는 단계는, 상기 판단 결과에 기초하여, 상기 선택된 리소스 중에서 사용되지 않는 리소스에 대해 상기 GPU가 상기 코드 블락을 처리하는 동안의 전력 소비 수준을 감소시키는 것을 특징으로 한다.
일 실시예에 따른 상기 소비하는 전력을 제어하는 단계는, 상기 코드 블락이 GPU에서 처리되는데 소요되는 시간이 임계값보다 크면, 상기 전력 소비 수준을 감소시키는 것을 특징으로 한다.
일 실시예에 따른 상기 전력 소비 제어방법은, 상기 프로그램은 복수의 코드 블락을 포함하고, 상기 사용 여부를 판단하는 단계는 상기 복수의 코드 블락 각각에 대응되어 획득되는 상기 선택된 리소스의 사용 여부에 관한 정보를 병합하는 단계를 더 포함하고, 상기 소비하는 전력을 제어하는 단계는 상기 병합된 결과에 기초하여 상기 선택된 리소스에 대한 전력 소비 수준을 결정하고, 상기 결정된 전력 소비 수준에 기초하여 상기 GPU가 상기 복수의 코드 블락을 처리하는 동안의 상기 선택된 리소스에서 소비하는 전력 수준을 제어하는 것을 특징으로 한다.
일 실시예에 따른 상기 병합하는 단계는, 상기 복수의 코드 블락 중 적어도 하나의 코드 블락이 상기 선택된 리소스를 사용하면, 상기 복수의 코드 블락 전체가 상기 선택된 리소스를 사용하는 것으로 판단하고, 상기 복수의 코드 블락 모두가 상기 선택된 리소스를 사용하지 않는다면, 상기 복수의 코드 블락 전체가 상기 선택된 리소스를 사용하는 것으로 판단하여 병합하는 것을 특징으로 한다.
일 실시예에 따른 상기 소비하는 전력을 제어하는 단계는, 상기 병합된 결과에 기초하여, 상기 선택된 리소스 사용되지 않는 리소스에 대해 상기 GPU가 상기 복수의 코드 블락을 처리하는 동안의 전력 소비 수준을 감소시키는 것을 특징으로 한다.
일 실시예에 따른 상기 소비하는 전력을 제어하는 단계는, 상기 복수의 코드 블락이 GPU에서 처리되는데 소요되는 시간이 임계값보다 크면, 상기 전력 소비 수준을 감소시키는 것을 특징으로 한다.
일 실시예에 따른 상기 전력 소비 제어방법은 상기 프로그램이 복수의 코드 블락을 포함한 경우, 상기 복수의 코드 블락들이 상기 GPU에서 처리되는 순서를 재배열(reordering)하는 단계를 더 포함하고, 상기 재배열 하는 단계는, 상기 GPU가 상기 복수의 코드 블락들을 처리하는 동안의 상기 선택된 리소스에서 소비되는 전력 수준의 변화의 합이 작아지도록 재배열 하는 것을 특징으로 하고, 상기 소비되는 전력 수준의 변화의 합은, 상기 복수의 상기 코드 블락 각각에 대응하여 획득되는 상기 선택된 리소스의 사용 여부에 관한 정보들을 소정의 처리 순서대로 비교하여 상기 사용 여부가 변경되는 횟수에 기초하여 결정되는 것을 특징으로 한다.
일 실시예에 따른 상기 전력 소비 제어방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체가 제공된다.
도 1은 일 실시예에 따른 전력 소비 제어장치가 GPU의 소정의 리소스에 대한 전력 소비를 제어하는 구성도를 나타낸다.
도 2 는 일 실시예에 따른 전력 소비 제어장치가 소정의 코드 블락으로부터 리소스 사용 정보를 획득하는 방법을 나타낸다.
도 3는 일 실시예에 따른 전력 소비 제어장치가 GPU 내의 소정의 리소스에 대한 전력 소비 수준을 제어하는 방법 및 코드 블락 처리 순서를 재배열하는 방법을 나타낸다.
도 4는 일 실시예에 따른 전력 소비 제어장치가 복수의 리소스 사용 정보를 병합하여 하나의 리소스 사용 정보를 획득하는 것을 나타낸다.
도 5은 일 실시예에 따른 전력 소비 제어장치가 GPU의 리소스에 대한 전력 소비 수준을 제어하는 흐름도를 나타낸다.
도 6는 일 실시예에 따른 전력 소비 제어장치가 GPU 의 리소스에 대한 전력 소비 수준을 제어하는 흐름도를 나타낸다.
이하에서는 도면을 참조하여 실시 예들을 상세히 설명한다. 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 일 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.
도 1은 일 실시예에 따른 전력 소비 제어장치가 GPU의 소정의 리소스에 대한 전력 소비를 제어하는 구성도를 나타낸다.
일 실시예에 따른 전력 소비 제어장치(100)는 리소스 선택부(163), 리소스 사용 정보 획득부(160), 코드 특성 추출부(165), 리소스 사용 정보 병합부(168), 리소스 사용 정보(170), 처리 순서 재배열부(175), 전력 소비 제어부(180)를 포함할 수 있다.
GPU(Graphic Processing Unit, 110)는 3차원 그래픽을 디스플레이하기 위해 필요한 연산을 가속화하여 처리할 수 있는 프로세서를 의미한다. 프로세싱 엘리먼트(Processing Element, 120, 130)란, 일련의 작업을 처리하기 위해 GPU(110)내에 존재하는 하나의 단위이다.
GPU(110)는 다양한 리소스(resource)를 사용하여3차원 그래픽을 디스플레이할 수 있다. 텍스처 유닛(140)은 디스플레이되는 이미지에 재질 또는 질감을 입혀주기 위한 리소스이고, 특수 기능 유닛(Special Funtion Unit: SFU, 125, 135, 이하 SFU라 한다)은 제곱근, 역수 또는 삼각함수와 같은 복잡한 연산을 처리하기 위한 리소스이다. 또한, GPU(110)는 부동소수점, 정수 연산, 비교와 데이터 이동을 처리하는 정수 산술 논리 장치(Arithmatic Logic Unit: ALU, 이하 ALU라 한다) 및 객체의 위치나 시점, 광원의 방향 등을 계산하는 지오메트리 유닛(Geometry Unit), 3차원 데이터를 2차원 화면에 투영(projection)시키는 래스터 유닛(Raster Unit) 등을 포함할 수 있다.
설명의 편의를 위해, GPU(110)는 두 개의 프로세싱 엘리먼트(PE0(120), PE1(130))를 포함하고 있다고 가정한다. 각각의 프로세싱 엘리먼트(PE0(120), PE1(130))는 SFU(125, 135)와 텍스처 유닛(140, 145)를 포함할 수 있다. 일 실시예에 따른 GPU(110)는, 두 개의 프로세싱 엘리먼트(PE0(120), PE1(130))가 하나의 텍스처 유닛을 공유할 수도 있다.
설명의 편의를 위해, GPU(110)내에 텍스처 유닛과 SFU만을 도시하였으나, GPU(110)는 종류 및 구조의 특성에 따라 상술한 ALU 및 지오메트리 유닛, 래스터 유닛 등 어떠한 리소스도 포함하거나 제외할 수 있음은 자명하다.
디스플레이 장치(190)는 GPU(110)에서 출력된 렌더링 이미지를 표시할 수 있다. 디스플레이 장치(190)는 액정표시장치(Liquid Crystal Device), CRT(Cathode Ray Tube), 플라즈마 디스플레이, 그 밖의 다른 종류의 장치를 포함할 수 있으나 이에 제한되지 않는다.
리소스 선택부(163)는 GPU(110)의 리소스 중 전력 소비 감소를 위해 중요도가 높거나 관심을 가지고 있는 소정의 리소스를 선택할 수 있다. 일 실시예에 따른 리소스 선택부(163)는 GPU(110)를 구성하는 하나 이상의 리소스 중에서 SFU(125, 135) 와 텍스처 유닛(140, 145)을 선택하여 전력 소비 수준을 결정할 수 있다.
프로그램(150)은 GPU(110)를 사용하여 수행되는 일련의 방법과 순서를 가지고 표현되는 명령어의 집합체를 의미할 수 있다. 프로그램은 3차원 디스플레이를 사용하는 게임이나 또는 캐드(CAD) 프로그램과 같이 GPU(110)를 사용하여 3차원 그래픽을 렌더링하는 애플리케이션을 포함할 수 있다.
코드 블락(Code Block, 155)이란 프로그램(150)의 전체 또는 일부를 나타낼 수 있다. 일 실시예에 따른 코드 블락(155)는 C언어, 자바(Java)와 같은 고급 프로그래밍 언어(High level programming language) 또는 기계어와 같은 저급 프로그래밍 언어(Low level programming language)를 포함할 수 있으나 이에 제한되지 않는다.
일 실시예에 따른 코드 블락(155)은 고급 프로그래밍 언어를 컴파일하여 획득된 기계어를 포함할 수 있다. 소정의 코드 블락(155)의 단위 및 길이는 가변적이다. 따라서 코드 블락(155)은 프로그램(150)을 구성하는 함수, 프로그램(150)을 구성하는 파일, 하나 이상의 코드 라인(Line)이 될 수도 있으나 이에 제한되지 않는다. 하나의 프로그램(150)이 하나 이상의 코드 블락(155)을 포함할 수 있음은 자명하다.
리소스 사용 정보 획득부(160)는 프로그램(150)으로부터 당해 프로그램(150)이 리소스 선택부(163)에서 선택된 리소스를 사용하는지 여부를 포함하는 리소스 사용 정보를 획득할 수 있다. 일 실시예에 따른 리소스 사용 정보 획득부(160)는 코드 블락(155)으로부터 리소스 선택부(163)에서 선택된 리소스를 사용하는지 여부를 판단하여 리소스 사용 정보를 획득할 수 있다. 리소스 사용 정보 획득부(160)는 코드 특성 추출부(165)와 리소스 사용 정보 병합부(168)를 포함할 수 있다.
코드 특성 추출부(165)는 코드 블락(155)에 포함된 코드의 특성을 추출할 수 있다. 여기서 코드의 특성이란, 소정의 코드 블락(155)으로부터 획득할 수 있는 정보로서, 리소스 선택부(163)에서 선택된 리소스의 전력 소비 수준을 결정하는데 참고가 되는 정보를 의미한다. 일 실시예에 따른 코드의 특성은 코드 블락(155)에 포함된 명령어를 의미할 수 있다. 즉, 코드 특성 추출부(165)는 명령어의 종류, 데이터의 종류, 명령어의 사용 빈도, 코드의 메타 정보 중 어느 하나를 추출할 수 있다.
예를 들어, 코드 특성 추출부(165)는 소정의 코드 블락(155) 내에 SAMPLE 명령어가 포함된다면, 판단 결과에 기초하여 GPU(110)가 텍스처 유닛(140 또는 145)을 사용하여 당해 코드 블락(155)를 처리할 것을 예상할 수 있다. 만약 코드 블락(155) 내에 SAMPLE 명령어가 포함되어 있지 않다면, GPU(110)가 코드 블락(155)를 처리할 때 텍스처 유닛(140 또는 145)을 사용하지 않을 것을 예상할 수 있다.
이와 유사하게, 코드 특성 추출부(165)는 코드 블락(155) 내에 ADD명령어가 포함된다면 GPU(110)내의ALU 를 사용할 것을, SQRT 명령어가 포함된다면 SFU(125 또는 135)를 사용할 것을 예상할 수 있다.
일 실시예에 따른 코드 특성 추출부(165)는 코드 블락(155)에서 처리하고자 하는 데이터의 종류 및 메타 정보를 분석하여, GPU(110)가 코드 블락(155)을 처리할 때 사용할 것으로 예상되는 리소스가 무엇인지를 판단할 수 있다. 예를 들어, 코드 특성 추출부(165)는 코드 블락(155)에 포함되는 함수가 아규먼트(Argument)로 이미지 데이터를 사용하고 있다면, GPU(110)가 코드 블락(155)을 처리할 때 텍스처 유닛(140)을 사용할 것을 예상할 수 있다.
일 실시예에 따른 코드 특성 추출부(165)는 코드 블락(155)의 소정의 명령어의 사용 빈도를 분석할 수도 있다. 예를 들어, 코드 특성 추출부(165)는 코드 블락(155)내에 SAMPLE 명령어의 빈도가 임계값보다 높은지 판단하고, 판단 결과에 기초한 정보를 추출할 수 있다.
전력 소비 제어장치(100)는 코드 특성 추출부(165)가 코드 블락(155)으로부터 추출한 특성에 기초하여 리소스 선택부(163)에서 선택된 리소스에 대한 전력 소비 수준을 결정할 수 있는 리소스 사용 정보(170)를 획득할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 코드 블락(155)이 리소스 선택부(163)에서 선택된 리소스를 사용하는지 여부를 리소스 사용 정보(170)에 기록할 수 있다. 전력 소비 제어장치(100)는 코드 블락(155)에 포함된 명령어로부터 리소스 선택부(163)에서 선택된 리소스 중에서 당해 명령어를 수행하는 리소스를 결정하고, 결정된 리소스를 코드 블락(155)이 사용하는 리소스로 판단할 수 있다.
즉, 만약 코드 특성 추출부(165)에서 소정의 코드 블락(155)이 SAMPLE 명령어를 포함하고 있다고 판단하였다면, GPU(110)가 코드 블락(155)을 처리할 때 텍스처 유닛(140)을 사용할 것을 판단할 수 있으므로, 전력 소비 제어장치(100)는 리소스 사용 정보(170)에 코드 블락(155)이 텍스처 유닛(140)을 사용한다는 정보를 기록할 수 있다. 리소스 사용 정보(170)에 대한 설명은 도 2를 참조하여 상세히 후술한다.
리소스 사용 정보(170)는 하나의 코드 블락에 대응하여 획득되지만, 리소스 사용 정보 병합부(168)는 복수의 리소스 사용 정보들을 병합한 새로운 리소스 사용 정보를 획득할 수 있다. 병합된 리소스 사용 정보는 복수의 코드 블락이 리소스 선택부(163)에서 선택된 리소스를 사용하는지 여부를 포함할 수 있다. 전력 소비 제어장치(100)의 리소스 사용 정보의 병합은 도4를 참조하여 후술한다.
일 실시예에 따른 리소스 사용 정보(170)는 처리 순서 재배열부(175)로 출력될 수 있다. 처리 순서 재배열부(175)는 리소스 사용 정보(170)를 이용하여, GPU(110)에서 복수의 코드 블락(155)들을 처리되는 동안에 리소스 선택부(163)에서 선택된 리소스에 대한 전력 소비 수준의 변화의 합이 작아지도록 코드 블락들의 처리 순서를 재배열할 수 있다. 전력 소비 제어장치(100)가 코드 블락들의 처리 순서를 재배열 하는 방법은 도 3을 참조하여 후술한다.
리소스 사용 정보(170)는 전력 소비 제어부(180)로 출력될 수 있다. 일 실시예에 따른 전력 소비 제어부(180)는 GPU(110)를 구동시키거나 제어할 수 있는 소프트웨어(즉, 드라이버) 상에 존재할 수 있다. 즉, 호스트에서 구동되는 드라이버 단에서 리소스 사용 정보(170)를 가공하여 전력 관리 정책을 결정할 수 있다. 도1에서 전력 소비 제어부(180)는 GPU(110)의 외부에 존재하는 것으로 도시되었으나, GPU (110)내부에 존재할 수도 있다. 즉, 전력 소비 제어부(180)는 GPU(110)내의 전력 관리 모듈 상에 존재할 수도 있다.
전력 소비 제어부(180)는 코드 특성 추출부(165)의 판단결과에 기초하여, 리소스에 대한 전력 소비 수준을 결정할 수 있다. 즉, 전력 소비 제어부(180)는 리소스 사용 정보(170)를 이용하여 리소스 선택부(163)에서 선택된 리소스에 대한 전력 소비 수준을 결정하고, 결정된 전력 소비 수준에 기초하여 선택된 리소스에서 소비하는 전력을 제어할 수 있다. 전력 소비 제어부(180)는 리소스 선택부(163)에서 선택된 리소스 중 사용되지 않는 리소스에 대해 전력 소비 수준을 감소시킬 수 있다.
전력 소비 제어부(180)가 선택된 리소스에 대한 전력 소비 수준을 제어하는 방법은 도3을 참조하여 후술한다.
도 2 는 일 실시예에 따른 전력 소비 제어장치가 소정의 코드 블락으로부터 리소스 사용 정보를 획득하는 방법을 나타낸다.
상술한 바와 같이, 일 실시예에 따른 전력 소비 제어장치(100)는 전력 소비 감소를 위해 중요도가 높거나 관심을 가지고 있는 소정의 리소스만을 선택할 수 있다. 또한, 전력 소비 제어장치(100)는 GPU 내의 리소스 종류, 리소스의 개수, 리소스들의 연결 등을 참조하여 리소스를 선택할 수 있다. 또한, 전력 소비 제어장치(100)는 GPU 내의 리소스들이 소비하는 전력 수준, 전력 수준을 변경하는데 필요한 시간 등을 고려하여 리소스를 선택할 수 있다.
전력 소비 제어장치(100)는 소정의 코드 블락에 포함된 명령어를 추출하여, 코드 블락이 당해 리소스를 사용하는지 여부를 리소스 사용 정보에 기록할 수 있다.
설명의 편의를 위해, 전력 소비 제어장치(100)는 GPU 내의 SFU 및 텍스처 유닛에 대한 전력 소비 수준을 결정하기 위해, 소정의 코드 블락에서 코드 특성을 추출하여, SFU 및 텍스처 유닛을 사용하는지 여부를 리소스 사용 정보에 기록한다고 가정한다. 도 2에서 설명하는 코드 특성 추출은 전력 소비 제어장치(100) 내의 코드 특성 추출부(160)에서 수행될 수 있으나 이에 제한되지 않는다.
일 실시예에 따른 전력 소비 제어장치(100)는 GPU가 제1코드 블락 (210), 제2코드 블락(230), 제3코드 블락(250)을 처리할 때, SFU 및 텍스처 유닛을 사용하는지 여부를 기록한 제1리소스 사용 정보 (220), 제2리소스 사용 정보 (240), 제3 리소스 사용 정보(260)를 획득할 수 있다.
전력 소비 제어장치(100)는 제1코드 블락(210)이 ADD 명령어, SQRT명령어, SAMPLE 명령어를 포함하고 있음을 확인하고, ADD 명령어, SQRT 명령어, SAMPLE 명령어는 각각 ALU, SFU, 텍스처 유닛을 사용한다고 판단할 수 있다. 다만, 상술한 바와 같이 전력 소비 제어장치(100)는 선택된 소정의 리소스에 대해서 리소스 사용 정보를 획득할 수 있으므로, 리소스 사용 정보 (220)에는 제1코드 블락(210)을 처리하는데 SFU와 텍스처 유닛이 사용되는지 여부를 기록할 수 있다.
일 실시예에 따르면, 전력 소비 제어장치(100)는 제1코드 블락(210)의 길이를 제1리소스 사용 정보(220)에 기록할 수 있다. 코드 블락의 길이는 코드 블락이 GPU에서 처리되는데 소요되는 레이턴시(latency)를 사이클로 표현한 값일 수 있다. 코드 블락의 길이는 컴파일 결과, GPU구조, 사용자 정의 등에 따라 가변적일 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 GPU가 제1코드 블락(210)를 처리하는데 L1 사이클이 소요된다는 것을 제 1리소스 사용 정보(220)에 기록할 수 있다. 코드 블락의 길이는 소정의 리소스에 대한 전력 소비 수준을 감소시킬 것인지 여부를 결정하기 위한 기준으로 사용될 수 있는데, 이는 도3 및 도4를 참조하여 후술한다.
일 실시예에 따른 전력 소비 제어장치(100)는 제 2코드 블락(230)이 ADD 명령어과 MIX 명령어를 포함하고 있음을 확인하고, ADD 명령어와 MIX 명령어는 SFU 와 텍스처 유닛을 사용하지 않음을 제 2리소스 사용 정보(240)에 기록할 수 있다. 일 실시예에 따른 전력 소비 제어장치(100)는 GPU가 제2코드 블락(210)을 처리하는데 L2 사이클이 소요된다는 것을 제 2리소스 사용 정보(240)에 기록할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 제3코드 블락(250)이 SAMPLE 명령어, FADD 명령어, FSUB 명령어를 포함하고 있음을 확인하고, SAMPLE 명령어와 FADD 명령어, FSUB 명령어는 SFU 는 사용하지만 텍스처 유닛은 사용하지 않는다는 정보를 기록할 수 있다. 일 실시예에 따른 전력 소비 제어장치(100)는 GPU가 제3코드 블락(250)을 처리하는데 L3 사이클이 소요된다는 것을 제3리소스 사용 정보(260)에 기록할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 소정의 선택된 리소스에 대한 사용 여부를 리소스 사용 정보(220, 240, 260)에 기록할 때, 각각의 리소스마다 필드(field)를 생성하고 생성된 필드 내에 플래그로 사용 여부를 표현할 수 있다. 예를 들어, 리소스 사용 정보가SFU는 사용하지만 텍스처 유닛은 사용하지 않는 코드 블락에 대응하여 획득되었다면, SFU필드의 값은 ‘1’로 텍스처 유닛 필드의 값은 ‘0’으로 표현할 수 있다. 리소스 사용 정보의 형식은 텍스트가 될 수 있으나 이에 제한되지 않으며, 구조체, 파일, 메시지 형태가 될 수도 있다.
도3는 일 실시예에 따른 전력 소비 제어장치가 GPU 내의 소정의 리소스에 대한 전력 소비 수준을 제어하는 방법 및 코드 블락 처리 순서를 재배열하는 방법을 나타낸다.
GPU 내부의 특정 리소스를 사용하기 위해서는 해당 리소스는 고 전력 수준(High power level)을 소비하지만, 사용하지 않는 리소스는 저 전력 수준(Low power level)의 전력으로 동작할 수 있으므로, 일 실시예에 따른 전력 소비 제어장치(100)는 사용하지 않는 리소스에 대한 전력 소비 수준을 감소시킬 수 있다.
이하, 고 전력 수준이라 함은 소정의 리소스가 최대로 수용할 수 있는 전력을 초과하지는 않지만 리소스를 사용하기 위해 소비해야 하는 충분히 고 전력 수준을 의미하며, 리소스에서 현재 소비되는 전력이 필요한 수준보다 낮다면 전력 소비 제어장치(100)는 해당 리소스에 대한 전력 소비 수준을 증가시킬 수 있다.
반면에, 저 전력 수준이라 함은 소정의 리소스가 사용되지 않거나 극히 낮은 빈도로 사용되어 해당 리소스가 소비하는 최소한의 전력 수준 또는 충분히 낮은 수준을 의미하며, 리소스에서 현재 소비되는 전력이 그보다 높다면 전력 소비 제어장치(100)는 해당 리소스에 대한 전력 소비 수준을 감소시킬 수 있다.
도 3에서 설명하는 전력 소비 제어방법은 전력 소비 제어장치(100) 내의 전력 소비 제어부(180)에서 수행될 수 있으나 이에 제한되지 않는다.
설명의 편의를 위해 GPU(110)는 제1코드 블락(310), 제2코드 블락(320), 제3코드 블락(330)을 순차적으로 처리한다고 가정한다. 또한, 전력 소비 제어장치(100)는 SFU와 텍스처 유닛에서 소비되는 전력 수준을 제어하기 위해, 리소스 사용 정보(315, 325, 335)에 각각의 코드 블락이 SFU와 텍스처 유닛을 사용하는지 여부를 기록하였다고 가정한다. 각각의 리소스 사용 정보(315, 325, 335)는 각 코드 블락(310, 320, 330)이 GPU에서 처리되는데 소요되는 길이(즉, 레이턴시)을 포함할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 가장 처음으로 처리되는 제1코드 블락(310)이 GPU에 입력되기 전에, 각각의 코드 블락에 대응하는 리소스 사용 정보를 미리 독출하여 SFU(125)와 텍스처 유닛이 사용될 것인지 여부를 판단하고 각 코드 블락이 처리될 때 SFU(370)와 텍스처 유닛(390)이 소비하는 전력 수준을 결정하여 전력 관리 정책을 세울 수도 있다.
일 실시예에 따른 리소스 사용 정보(315, 325, 335)는 SFU와 텍스처 유닛 각각에 대해, 해당 리소스가 사용됨을 1로 표현하고 해당 리소스가 사용되지 않음을 0으로 나타낼 수 있다. 또한, GPU 전력 소비 수준(350, 380)에서 1은 해당 리소스가 고 전력 수준을 소비함을 나타내고, 0은 해당 리소스가 저 전력 수준을 소비함을 나타낼 수 있다.
제1코드 블락(310)이 GPU에 입력되기 전에, SFU(370)와 텍스처 유닛(390)의 전력 소비 수준(360)는 모두 1이므로, 고 전력 수준이 소비되고 있다. 전력 소비 제어장치(100)는 제1코드 블락(310)에 대응되는 제1리소스 사용 정보(315)을 독출하여, 제1코드 블락(310)을 처리하는데 SFU(370)와 텍스처 유닛(390)이 사용되는지 판단할 수 있다.
SFU(370) 필드의 값은 1이고 텍스처 유닛(390) 필드의 값은 0이므로, GPU(110)가 제1코드 블락(310)를 처리할 때, SFU(370) 는 사용하지만 텍스처 유닛(390)은 사용하지 않는다고 판단할 수 있다. 따라서, 전력 소비 제어장치(100)는 SFU(370)에 대한 전력 수준은 그대로 유지하고 텍스처 유닛(390)에 대한 소비 전력 수준을 저 전력 수준으로 변경할 수 있다.
제2코드 블락(320)의 제2리소스 사용 정보(325)의 SFU(370) 필드 값은 0이고 텍스처 유닛(390) 필드의 값은 1이다. 따라서, 전력 소비 제어장치(100)는 SFU(370)에 대한 전력 수준을 저 전력 수준으로 변경하고, 텍스처 유닛(390)에 대한 전력 수준을 다시 고 전력 수준으로 변경할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 제2코드 블락(320)의 길이가 소정의 임계값보다 큰 경우에만 SFU(370) 가 소비하는 전력 수준을 저 전력 수준으로 변경할 수 있다. 전력 소비 제어장치(100)가 전력 소비 수준을 변경하는 데에 시간이 필요하고, 전력 수준을 변경하는 것 자체에 부하가 발생하기 때문에, 코드 블락의 길이가 소정의 임계값보다 커야만, 해당 리소스가 소비하는 전력 수준을 코드 블락의 길이(즉, 레이턴시)동안 낮추는 것이 이득이 되는 것으로 판단할 수 있다. 즉, 전력 소비 제어장치(100)는 제2리소스 사용 정보(325)에 기록된 길이(L2)가 임계값보다 큰지 판단할 수 있다.
제3코드 블락(330)의 제3리소스 사용 정보(335)의 SFU(370) 필드 값은 1이고, 텍스처 유닛(390) 필드의 값은 0이다. 따라서, 전력 소비 제어장치(100)는 SFU(370)에 대한 전력 수준을 고 전력 모드로 변경하고, 텍스처 유닛(390)에 대한 전력 소비를 다시 저 전력 수준으로 변경할 수 있다. 일 실시예에 따른 전력 소비 제어장치(100)는 제3코드 블락(330)의 길이(L3)가 소정의 임계값보다 큰 경우에만 텍스처 유닛(390)가 소비하는 전력 수준을 저 전력 수준으로 변경할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 GPU(110)에서 처리되는 코드 블락(310, 320, 330)들의 순서를 재배열(reordering, 350)할 수 있다. 즉, 하나의 프로세싱 엘리먼트에 할당된 코드 블락들의 처리 순서는 변경될 수 있다. 프로세싱 엘리먼트에 할당된 코드 블락들은 상호간에 의존성(dependency)이 존재하지 않기 때문에, 제1코드 블락(310) -> 제2코드 블락(320) -> 제3코드 블락(330)의 순서를 제2코드 블락(320) -> 제1코드 블락(310) -> 제3코드 블락(330)의 순서로 변경하여 처리하여도 무방하기 때문이다.
일 실시예에 따른 전력 소비 제어장치(100)는 복수의 코드 블락들을 처리하는 동안에 소정의 리소스에서 소비되는 전력의 변화의 합이 작아지도록, 처리 순서를 재배열(350)할 수 있다. 전력 소비 제어장치(100)가 리소스에 대한 전력 소비 수준을 변경하는 것은 시간이 소요되고 부하가 발생하므로, 전력 소비 제어장치(100)는 리소스에 대한 전력 소비 수준의 변화의 합을 최소화할 수 있도록 코드 블락들의 처리 순서를 재배열(350)할 수 있다. 전력 소비 제어장치(100)는 복수의 코드 블락들의 처리 순서를 재배열(350)함으로서, 저 전력 수준을 오랫동안 유지할 수 있으므로 전력 소비를 효율적으로 관리할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 전력 소비 감소를 위해 중요도가 높거나 관심을 가지고 있는 하나의 리소스를 기준으로, 복수의 코드 블락을 처리하는 동안에 발생하는 전력 소비 수준의 변경이 최소화될 수 있도록 코드 블락의 처리 순서를 재배열(350)할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 제1코드 블락(310), 제2코드 블락(320), 제3코드 블락(330)의 처리 순서 대신 제2코드 블락(320), 제1코드 블락(310), 제3코드 블락(330) 순서대로 처리 순서를 재배열(350)함으로서 텍스처 유닛(390)에 대한 전력 소비 수준의 변화를 최소화할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 복수의 코드 블락의 처리 순서 재배열(350)을 위해 리소스 사용 정보(310, 320, 330)을 참조할 수 있다. 예를 들어, 전력 소비 제어장치(100)는 각 리소스 사용 정보(310, 320, 330)의 텍스처 유닛의 필드를 참조하여 참조된 필드의 비트 값의 변화량을 계산할 수 있다. 즉, 전력 소비 제어장치(100)는 제1코드 블락(310), 제2코드 블락(320), 제3코드 블락(330)의 순서대로 처리할 때에는 리소스 사용 정보(310, 320, 330)의 텍스처 유닛 필드의 비트 값의 변화가 2번 발생하지만(0에서 1, 1에서 0), 제2코드 블락(320), 제1코드 블락(310), 제3코드 블락(330) 순서대로 처리할 때에는 비트 값의 변화가 1번으로 감소하는 것을 알 수 있다. 전력 소비 제어장치(100)는 처리 순서를 재배열(350)함으로서 저 전력 수준을 L1 + L3(즉, 제1코드 블락과 제3코드 블락의 길이의 합)사이클 동안 유지할 수 있으므로, 전력 소비를 효율적으로 관리할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 하나의 리소스가 아닌, 복수의 리소스를 기준으로 하여 복수의 코드 블락의 처리 순서를 재배열할 수도 있다. 예를 들어, 전력 소비 제어장치(100)는 리소스 사용 정보 내의 복수의 리소스 필드 값을 참조하여, 전체적인 비트 값의 변경 횟수가 최소화되도록 재배열할 수 있다.
일 실시예에 따른 재배열(350)는 도1의 처리 순서 재배열부(175)에서 수행될 수 있으나 이에 제안되지 않는다. 일 실시예에 따른 전력 소비 제어장치(100)는 주기적으로(예를 들면, 5 ns 마다) 또는 소정의 이벤트 발생에 의해 재배열(350)을 수행할 수 있으나 이에 제한되지 않는다.
도 4는 일 실시예에 따른 전력 소비 제어장치가 복수의 리소스 사용 정보를 병합하여 하나의 리소스 사용 정보를 획득하는 것을 나타낸다.
일 실시예에 따른 전력 소비 제어장치(100)는 복수개의 리소스 사용 정보(440, 450, 460)를 병합하여 하나의 리소스 사용 정보(470)를 획득할 수 있다. 리소스 사용 정보(470)는 제1코드 블락(410), 제2코드 블락(420), 제3코드 블락(430) 각각에 대한 리소스 사용 정보(440, 450, 460)를 병합한 것이다. 일 실시예에 따른 전력 소비 제어장치(100)는 리소스 사용 정보의 형식이 동일한 리소스를 기준으로, 연속된 코드 블락들(410, 420, 430)의 리소스 사용 정보(440, 450, 460)를 병합할 수 있다. 또는, 일 실시예에 따른 전력 소비 제어장치(100)는 정해진 개수만큼 복수의 코드 블락에 대한 리소스 사용 정보를 병합할 수도 있다.
일 실시예에 따르면, 전력 소비 제어장치(100)는 리소스 사용 정보 내에 소정의 리소스에 대한 필드 값이 비트(bit)형식인 경우, 복수의 리소스 사용 정보(440, 450, 460)에 대해 비트와이즈 연산을 적용하여 병합할 수 있다. 예를 들어, 전력 소비 제어장치(100)는 복수개의 리소스 사용 정보(450, 460, 470)를 논리합 연산(OR 연산)하여 병합할 수 있다.
즉, 전력 소비 제어장치(100)는 복수의 코드 블락 중 적어도 하나의 코드 블락이 소정의 리소스를 사용하면, 복수의 코드 블락 전체가 소정의 리소스를 사용하는 것으로 판단하고, 복수의 코드 블락 모두가 소정의 리소스를 사용하지 않는다면, 복수의 코드 블락 전체가 소정의 리소스를 사용하는 것으로 판단하여 리소스 사용 정보(440, 450, 460)를 병합할 수 있다.
다시 말하면, 전력 소비 제어장치(100)는 복수의 코드 블락(410, 420, 430)에 대응하여 병합된 리소스 사용 정보(470)를 획득할 수 있으며, 리소스 사용 정보(470)에 제1코드 블락(410), 제2코드 블락(420), 제3코드 블락(430)의 길이를 합산하여 복수의 코드 블락의 길이를 기록할 수 있다. 일 실시예에 따른 전력 소비 제어장치(100)는 리소스 사용정보(460, 450, 460)의 SFU필드 비트 값 1, 0, 1를 논리합 연산하고, 텍스처 유닛 필드의 비트 값 0, 0, 0을 논리합 연산하여, SFU필드의 비트 값은 1이고, 텍스처 유닛 필드의 비트 값은 0, 코드 블락의 길이의 합은 L1 + L2 + L3 인 리소스 사용 정보(470)를 획득할 수 있다.
즉, 전력 소비 제어장치(100)는 GPU가 제1코드 블락(410), 제2코드 블락(420), 제3코드 블락(430)를 처리하는 동안의 사용되지 않는 리소스에 대한 전력 소비 수준을 감소시킬 수 있다. 이 때, 일 실시예에 따른 전력 소비 제어장치(100)는 전력 소비 정책의 효율성을 위해 코드 블락의 길이의 합(L1+L2+L3)이 임계값 이상일 때만 전력 소비 수준을 감소시킬 수 있다. 병합된 리소스 사용 정보(470)를 사용하여, 제1코드 블락(410), 제2코드 블락(420), 제3코드 블락(430)에 대한 전력 소비 수준을 결정하였다면, 전력 소비 제어장치(100)는 전력 소비 수준이 결정되지 않은 다음 코드 블락으로 넘어가 다음 코드 블락에 대한 리소스 사용 정보를 독출할 수 있다. 즉, 제1코드 블락(410), 제2코드 블락(420), 제3코드 블락(430)은 병합된 리소스 사용 정보(470)를 이용하여 이미 전력 소비 수준이 결정되었기 때문에, 전력 소비 제어장치(100)는 제2코드 블락(420)과 제3코드 블락(430)을 건너뛰고, 제3코드 블락(430) 다음에 처리될 코드 블락에 대한 리소스 사용 정보를 독출할 수 있다.
전력 소비 제어장치(100)는 병합된 리소스 사용 정보(470)에 기초하여, 소정의 리소스에 대한 전력 소비 수준을 결정하고, 결정된 전력 소비 수준에 기초하여 GPU가 복수의 코드 블락(410, 420, 430)을 처리하는 동안의 소정의 리소스에서 소비되는 전력 수준을 제어할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100) 내의 하나의 리소스는 두 개 이상의 서로 다른 프로세싱 엘리먼트에 의해서 공유될 수 있다(미도시). 예를 들어, 제1프로세싱 엘리먼트와 제2프로세싱 엘리먼트는 하나의 텍스처 유닛을 공유할 수 있다. GPU는 제1프로세싱 엘리먼트에는 코드 블락A, 코드 블락B, 코드 블락C을 할당하여 처리하게 하고, 제2프로세싱 엘리먼트에는 코드 블락 X, 코드 블락 Y를 할당하여 처리하게 할 수 있다.
이 때, 전력 소비 제어장치(100)는 제1프로세싱 엘리먼트와 제2 프로세싱 엘리먼트가 공유하고 있는 텍스처 유닛에 대한 전력 소비 수준을 제어하기 위해, 코드 블락A에 대한 리소스 사용 정보, 코드 블락B에 대한 리소스 사용 정보, 코드 블락C에 대한 리소스 사용 정보를 병합하여 코드 블락A, B, C에 대응하는 제1리소스 사용 정보를 획득하고, 또한 코드 블락 X에 대한 리소스 사용 정보, 코드 블락Y에 대한 리소스 사용 정보를 병합하여 코드 블락 X, Y에 대응하는 제2 리소스 사용 정보를 획득한 후, 제1리소스 사용 정보와 제2리소스 사용 정보를 다시 병합하여 텍스처 유닛에 대한 하나의 리소스 사용 정보를 획득할 수 있다.
이 때, 전력 소비 제어장치(100)는 코드 블락 A, 코드 블락 B, 코드 블락 C 의 길이의 합과 코드 블락 X, 코드 블락 Y의 길이의 합 중 큰 값이 소정의 임계값보다 크면, 텍스처 유닛의 전력 수준을 저 전력 수준으로 변경하는 것이 이득이라고 판단할 수 있다.
도 5는 일 실시예에 따른 전력 소비 제어장치가 GPU의 리소스에 대한 전력 소비 수준을 제어하는 흐름도를 나타낸다.
도 5는 도 1 내지 도 4에 도시된 전력 소비 제어장치(100)에서 수행되는 전력 소비 제어방법을 설명하기 위한 도면이다. 따라서, 이하 생략된 내용이라 하더라도 전력 소비 제어장치(100)에 관하여 이상에서 기술된 내용은 도 5의 일 실시 예에 따른 전력 소비 제어방법에도 적용된다.
단계 510에서, 전력 소비 제어장치(100)는 GPU의 리소스 중 전력 소비 감소를 위해 중요도가 높거나 관심을 가지고 있는 소정의 리소스를 선택할 수 있다.
단계 520에서, 전력 소비 제어장치(100)는 GPU를 사용하는 프로그램으로부터 소정의 코드 블락을 결정할 수 있다. 프로그램은 GPU를 사용하여 처리되는 일련의 방법과 순서를 가지고 표현되는 명령어의 집합체를 의미할 수 있다. 프로그램은 3차원 디스플레이를 사용하는 게임이나 또는 캐드(CAD) 프로그램과 같이 GPU(110)를 사용하여 3차원 그래픽을 렌더링하는 애플리케이션을 포함할 수 있다.
코드 블락(Code Block)이란 전체 또는 일부를 나타낼 수 있다. 일 실시예에 따른 코드 블락은 C언어, 자바(Java)와 같은 고급 프로그래밍 언어(High level programming language) 또는 기계어와 같은 저급 프로그래밍 언어(Low level programming language)를 포함할 수 있으나 이에 제한되지 않는다.
일 실시예에 따른 코드 블락은 고급 프로그래밍 언어를 컴파일하여 획득된 기계어를 포함할 수 있다. 또한 코드 블락은 프로그램을 구성하는 함수, 프로그램을 구성하는 파일, 하나 이상의 코드 라인(Line)이 될 수도 있으나 이에 제한되지 않는다. 하나의 프로그램이 하나 이상의 코드 블락을 포함할 수 있음은 자명하다.
단계 530에서, 전력 소비 제어장치(100)는 코드 블락에 포함된 코드의 특성을 추출할 수 있다. 여기서 코드의 특성이란, 소정의 코드 블락에 포함되는 코드로부터 획득할 수 있는 정보로서, 단계510에서 선택된 리소스의 전력 소비 수준을 결정하는데 참고가 되는 정보를 의미한다. 코드의 특성은 명령어의 종류, 데이터의 종류, 사용 빈도, 코드의 메타 정보를 포함할 수 있다.
예를 들어, 전력 소비 제어장치(100)는 단계 530에서, 소정의 코드 블락 내에 SAMPLE 명령어가 포함되어 있는지 여부를 확인하여, 코드 블락 내에 SAMPLE 명령어가 포함된다면, GPU가 텍스처 유닛을 사용하여 코드 블락을 처리할 것을 예상할 수 있다. 만약 코드 블락 내에 SAMPLE 명령어가 포함되어 있지 않다면, GPU가 코드 블락을 처리할 때 텍스처 유닛을 사용하지 않을 것을 예상할 수 있다.
단계 540에서, 전력 소비 제어장치(100)는 코드 블락으로부터 추출한 특성에 기초하여 단계510에서 선택된 리소스에 대한 전력 소비 수준을 결정할 수 있는 리소스 사용 정보를 획득할 수 있다.
일 실시예에 따른 전력 소비 제어장치(100)는 단계 540에서, 코드 블락이 단계510에서 선택된 리소스를 사용하는지 여부를 리소스 사용 정보에 기록할 수 있다.
단계 510에서 획득된 리소스 사용 정보는 복수의 코드 블락에 대응하여, 병합되거나, 전력 소비 제어장치(100)는 획득된 하나 이상의 리소스 사용 정보를 기준으로 소정의 리소스에 대한 전력 소비 수준의 변경의 합이 작아지도록 복수의 코드 블락의 처리 순서를 변경할 수 있다.
단계 550에서, 전력 소비 제어장치(100)는 리소스 사용 정보를 독출하여 단계 510에서 선택된 리소스에 대한 전력 소비 수준을 결정하고, 결정된 전력 소비 수준에 기초하여 선택된 리소스에 대한 전력 소비 수준을 제어할 수 있다.
단계 510과 단계 520 및 단계 530을 순차적인 흐름으로 도시되었으나, 일 실시예에 따른 전력 소비 제어장치(100)는 단계 520 및 단계530 단계 수행 후에 단계 510을 수행하거나, 단계 520 및 단계 530과 단계 510을 동시에 수행할 수도 있다.
도6는 일 실시예에 따른 전력 소비 제어장치가 GPU 의 리소스에 대한 전력 소비 수준을 제어하는 흐름도를 나타낸다.
도6는 도 3 에 도시된 전력 소비 제어장치(100)에서 수행되는 전력 소비 제어방법을 흐름도로 나타낸 도면이다. 따라서, 이하 생략된 내용이라 하더라도 도3 전력 소비 제어장치(100)에 관하여 이상에서 기술된 내용은 도 6 일 실시 예에 따른 흐름도에도 적용된다.
단계 605에서, 전력 소비 제어장치(100)는 GPU에서 처리되는 복수개의 코드 블락들의 처리 순서가 재배열이 필요한지 판단할 수 있다. 일 실시예에 따른 전력 소비 제어장치(100)는 복수의 코드 블락들을 처리하는 동안에 소비되는 소정의 리소스의 전력의 변화의 합이 작아지도록, 처리 순서를 재배열할 수 있다. 리소스에 대한 전력 소비 수준을 변경하는 것은 시간이 소요되고 부하가 발생하므로, 전력 소비 제어장치(100)는 리소스에 대한 전력 소비 수준의 변화의 합을 최소화할 수 있도록 코드 블락들의 처리 순서를 재배열(350)할 수 있다.
단계 610에서, 일 실시예에 따른 전력 소비 제어장치(100)는 전력 소비 감소를 위해 중요도가 높거나 관심을 가지고 있는 하나의 리소스를 기준으로, 복수의 코드 블락을 처리하는 동안에 발생하는 전력 소비 수준의 변화가 최소화될 수 있도록 코드 블락들의 처리 순서를 재배열할 수 있다.
단계 615에 대해서, 전력 소비 제어장치(100)는 복수의 코드 블락에 대한 리소스 사용 정보를 병합이 필요한지 판단하여, 단계 618에서 병합을 수행할 수 있다. 단계 618에서, 전력 소비 제어장치(100)는 리소스 사용 정보 내에 소정의 리소스에 대한 필드 값이 비트(bit)형식인 경우, 복수의 리소스 사용 정보에 대해 비트와이즈 연산을 적용하여 병합할 수 있다. 예를 들어, 전력 소비 제어장치(100)는 복수개의 리소스 사용 정보를 논리합 연산(OR 연산)하여 병합할 수 있다.
단계 620, 630, 640, 650에서 전력 소비 제어장치(100)는 다음에 처리되어야 할 코드 블락에 대응되는 리소스 사용 정보를 독출하여, 다음에 처리되어야 할 코드 블락의 해당 리소스 사용 여부를 판단할 수 있다. 단계 620, 630, 640, 650에서 ‘/’왼쪽에 있는 숫자는 다음에 처리될 코드 블락의 리소스 사용 정보를 의미하고, 오른쪽에 있는 숫자는 현재의 리소스 전력 소비 상태를 의미한다. 또한, ‘/’왼쪽에 나타난 숫자가 1이면, 다음에 처리될 코드 블락은 해당 리소스를 사용하는 것을 의미하고, 0이면 해당 리소스를 사용하지 않는다. ‘/’오른쪽에 나타난 숫자가 1이면, 현재 리소스의 전력 소비 수준은 고 전력 수준이고, 0이면 저 전력 수준을 의미한다.
단계 620와 단계630에서, 일 실시예에 따른 전력 소비 제어장치(100)는 소정의 리소스에서 현재 소비되는 전력 수준이 저 전력 수준이고, 다음 코드 블락에서 해당 리소스를 사용할 것으로 판단된다면, 단계 625로 넘어가 해당 리소스에 대한 소비 전력 수준을 고 전력 수준으로 변경할 수 있다. 그러나, 다음에 처리되어야 할 코드 블락이 여전히 해당 리소스를 사용하지 않을 것으로 판단된다면, 현재 전력 소비 수준을 유지하고, 바로 단계 680으로 넘어가 처리할 코드 블락이 남아있는지 판단할 수 있다.
단계 640와 단계 650에서, 전력 소비 제어장치(100)는 소정의 리소스에서 현재의 전력 소비 수준이 고 전력 수준이고, 다음에 처리되어야 할 코드 블락이 해당 리소스를 사용할 것으로 판단된다면, 현재 전력 수준을 유지하고 바로 단계 680으로 넘어가 처리할 코드 블락이 남아있는지 판단할 수 있다. 그러나, 다음에 처리되어야 할 코드 블락이 해당 리소스를 사용하지 않을 것으로 판단된다면, 단계 660으로 넘어간다.
단계 660에서, 전력 소비 제어장치(100)는 처리하고자 하는 코드 블락의 길이가 소정의 임계값보다 큰 값을 가지는지 여부를 판단할 수 있다. 공급되는 전력 수준을 변경하는 데에 시간이 필요하고, 전력 수준을 변경하는 것 자체에 부하가 발생하기 때문에, 코드 블락의 길이가 소정의 임계값보다 커야만, 해당 리소스에 공급하는 전력 수준을 코드 블락의 길이(즉, 레이턴시) 동안 낮추는 것이 이득이 되는 것으로 판단할 수 있기 때문이다. 단계 660의 조건을 만족하면 단계 670으로 넘어가 해당 리소스에 대한 전력 소비 수준을 저 전력 모드로 변경하고, 단계 580으로 넘어가 처리할 코드 블락이 남아있는지 판단할 수 있다. 그러나, 단계 660의 조건을 만족하지 않는다면, 저 전력 수준으로 변경하여도 이득이라고 할 수 없기 때문에 전력 수준을 변경하지 않고 단계 580으로 넘어가 처리할 코드 블락이 남아있는지 판단할 수 있다.
한편, 전력 소비 제어 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM. CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
본 발명에 의한 방법, 프로세스, 장치, 제품 및/또는 시스템은 간단하고, 비용적으로 효과적이며, 복잡하지 않으면서 매우 다양하고 정확하다. 또한 본 발명에 의한, 프로세스, 장치, 제품 및 시스템에 알려진 구성 요소를 적용함으로써 즉시 이용할 수 있으면서 효율적이고 경제적인 제조, 응용 및 활용을 구현할 수 있다. 본 발명의 또 다른 중요한 측면은 비용 감소, 시스템 단순화, 성능 증가를 요구하는 현 추세에 부합한다는 것이다. 이러한 본 발명의 실시 예에서 볼 수 있는 유용한 양상은 결과적으로 적어도 현 기술의 수준을 높일 수 있을 것이다.
본 발명은 특정한 최상의 실시 예와 관련하여 설명되었지만, 이외에 본 발명에 대체, 변형 및 수정이 적용된 발명들은 전술한 설명에 비추어 당업자에게 명백할 것이다. 즉, 청구범위는 이러한 모든 대체, 변형 및 수정된 발명을 포함하도록 해석한다. 그러므로 이 명세서 및 도면에서 설명한 모든 내용은 예시적이고 비제한적인 의미로 해석해야 한다.

Claims (19)

  1. GPU(Graphic Processing Unit)의 리소스 중에서 전력 소비 수준을 결정하고자 하는 리소스를 선택하는 리소스 선택부;
    상기 GPU를 사용하여 수행되는 프로그램의 전체 또는 일부인 코드 블락(Code Block)으로부터 상기 선택된 리소스의 사용 여부를 판단하는 리소스 사용 정보 획득부; 및
    상기 판단 결과에 기초하여 상기 선택된 리소스에 대한 전력 소비 수준을 결정하고 상기 결정된 전력 소비 수준에 기초하여 상기 선택된 리소스에서 소비하는전력 수준을 제어하는 전력 소비 제어부를 포함하는 전력 소비 제어장치.
  2. 제1항에 있어서, 상기 리소스 사용 정보 획득부는,
    상기 코드 블락에 포함된 명령어를 추출하고,
    상기 명령어로부터, 상기 선택된 리소스 중에서 상기 추출된 명령어를 수행하는 리소스를 결정하여 상기 결정된 리소스를 상기 코드 블락이 사용하는 리소스로 판단하는 전력 소비 제어장치.
  3. 제1항에 있어서, 상기 전력 소비 제어부는,
    상기 판단 결과에 기초하여, 상기 선택된 리소스 중에서 사용되지 않는 리소스에 대해 상기GPU가 상기 코드 블락을 처리하는 동안의 전력 소비 수준을 감소시키는 것을 특징으로 하는 전력 소비 제어장치.
  4. 제3항에 있어서, 상기 전력 소비 제어부는,
    상기 코드 블락이 GPU에서 처리되는데 소요되는 시간이 임계값보다 크면, 상기 전력 소비 수준을 감소시키는 것을 특징으로 하는 전력 소비 제어장치.
  5. 제1항에 있어서,
    상기 프로그램은 복수의 코드 블락을 포함하고,
    상기 리소스 사용 정보 획득부는 상기 복수의 코드 블락 각각에 대응되어 획득되는 상기 선택된 리소스의 사용 여부에 관한 정보를 병합하는 리소스 사용 정보 병합부를 더 포함하고,
    상기 전력 소비 제어부는 상기 병합된 결과에 기초하여 상기 선택된 리소스에 대한 전력 소비 수준을 결정하고, 상기 결정된 전력 소비 수준에 기초하여 상기 GPU가 상기 복수의 코드 블락을 처리하는 동안의 상기 선택된 리소스에서 소비하는 전력 수준을 제어하는 것을 특징으로 하는 전력 소비 제어장치.
  6. 제5항에 있어서, 상기 리소스 사용 정보 병합부는,
    상기 복수의 코드 블락 중 적어도 하나의 코드 블락이 상기 선택된 리소스를 사용하면, 상기 복수의 코드 블락 전체가 상기 선택된 리소스를 사용하는 것으로 판단하고,
    상기 복수의 코드 블락 모두가 상기 선택된 리소스를 사용하지 않는다면, 상기 복수의 코드 블락 전체가 상기 선택된 리소스를 사용하는 것으로 판단하여 병합하는 것을 특징으로 하는 전력 소비 제어장치.
  7. 제5항에 있어서, 상기 전력 소비 제어부는,
    상기 병합된 결과에 기초하여, 상기 선택된 리소스 중 사용되지 않는 리소스에 대해 상기 GPU가 상기 복수의 코드 블락을 처리하는 동안의 전력 소비 수준을 감소시키는 것을 특징으로 하는 전력 소비 제어장치.
  8. 제7항에 있어서, 상기 전력 소비 제어부는,
    상기 복수의 코드 블락이 GPU 에서 처리되는데 소요되는 시간이 임계값보다 크면, 상기 전력 소비 수준을 감소시키는 것을 특징으로 하는 전력 소비 제어장치.
  9. 제1항에 있어서,
    상기 프로그램이 복수의 코드 블락을 포함한 경우,
    상기 복수의 코드 블락들이 상기 GPU에서 처리되는 순서를 재배열(reordering)하는 처리 순서 재배열부를 더 포함하고,
    상기 처리 순서 재배열부는 상기 GPU가 상기 복수의 코드 블락들을 처리하는 동안의 상기 선택된 리소스에서 소비되는 전력 수준의 변화의 합이 작아지도록 재배열 하는 것을 특징으로 하고,
    상기 소비되는 전력 수준의 변화의 합은, 상기 복수의 상기 코드 블락 각각에 대응하여 획득되는 상기 선택된 리소스의 사용 여부에 관한 정보들을 소정의 처리 순서대로 비교하여 상기 사용 여부가 변경되는 횟수에 기초하여 결정되는 것을 특징으로 하는 전력 소비 제어장치.
  10. GPU(Graphic Processing Unit)의 리소스 중에서 전력 소비 수준을 결정하고자 하는 리소스를 선택하는 단계;
    상기 GPU를 사용하여 수행되는 프로그램의 전체 또는 일부인 코드 블락(Code Block)으로부터 상기 선택된 리소스의 사용 여부를 판단하는 단계; 및
    상기 판단 결과에 기초하여 상기 선택된 리소스에 대한 전력 소비 수준을 결정하고 상기 결정된 전력 소비 수준에 기초하여 상기 선택된 리소스에서 소비하는 전력 수준을 제어하는 단계를 포함하는 전력 소비 제어방법.
  11. 제10항에 있어서, 상기 사용 여부를 판단하는 단계는,
    상기 코드 블락에 포함된 명령어를 추출하고, 상기 명령어로부터, 상기 선택된 리소스 중에서 상기 추출된 명령어를 수행하는 리소스를 결정하여 상기 결정된 리소스를 상기 코드 블락이 사용하는 리소스로 판단하는 단계를 포함하는 전력 소비 제어방법.
  12. 제10항에 있어서, 상기 소비하는 전력을 제어하는 단계는,
    상기 판단 결과에 기초하여, 상기 선택된 리소스 중에서 사용되지 않는 리소스에 대해 상기GPU가 상기 코드 블락을 처리하는 동안의 전력 소비 수준을 감소시키는 것을 특징으로 하는 전력 소비 제어방법.
  13. 제12항에 있어서, 상기 소비하는 전력을 제어하는 단계는,
    상기 코드 블락이 GPU에서 처리되는데 소요되는 시간이 임계값보다 크면, 상기 전력 소비 수준을 감소시키는 것을 특징으로 하는 전력 소비 제어방법.
  14. 제10항에 있어서,
    상기 프로그램은 복수의 코드 블락을 포함하고,
    상기 사용 여부를 판단하는 단계는 상기 복수의 코드 블락 각각에 대응되어 획득되는 상기 선택된 리소스의 사용 여부에 관한 정보를 병합하는 단계를 더 포함하고,
    상기 소비하는 전력을 제어하는 단계는 상기 병합된 결과에 기초하여 상기 선택된 리소스에 대한 전력 소비 수준을 결정하고, 상기 결정된 전력 소비 수준에 기초하여 상기 GPU가 상기 복수의 코드 블락을 처리하는 동안의 상기 선택된 리소스에서 소비하는 전력 수준을 제어하는 것을 특징으로 하는 전력 소비 제어방법.
  15. 제14항에 있어서, 상기 병합하는 단계는,
    상기 복수의 코드 블락 중 적어도 하나의 코드 블락이 상기 선택된 리소스를 사용하면, 상기 복수의 코드 블락 전체가 상기 선택된 리소스를 사용하는 것으로 판단하고,
    상기 복수의 코드 블락 모두가 상기 선택된 리소스를 사용하지 않는다면, 상기 복수의 코드 블락 전체가 상기 선택된 리소스를 사용하는 것으로 판단하여 병합하는 것을 특징으로 하는 전력 소비 제어방법.
  16. 제14항에 있어서, 상기 소비하는 전력을 제어하는 단계는,
    상기 병합된 결과에 기초하여, 상기 선택된 리소스 사용되지 않는 리소스에 대해 상기 GPU가 상기 복수의 코드 블락을 처리하는 동안의 전력 소비 수준을 감소시키는 것을 특징으로 하는 전력 소비 제어방법.
  17. 제16항에 있어서, 상기 소비하는 전력을 제어하는 단계는,
    상기 복수의 코드 블락이 GPU에서 처리되는데 소요되는 시간이 임계값보다 크면, 상기 전력 소비 수준을 감소시키는 것을 특징으로 하는 전력 소비 제어방법.
  18. 제10항에 있어서,
    상기 프로그램이 복수의 코드 블락을 포함한 경우,
    상기 복수의 코드 블락들이 상기 GPU에서 처리되는 순서를 재배열(reordering)하는 단계를 더 포함하고,
    상기 재배열 하는 단계는, 상기 GPU가 상기 복수의 코드 블락들을 처리하는 동안의 상기 선택된 리소스에서 소비되는 전력 수준의 변화의 합이 작아지도록 재배열 하는 것을 특징으로 하고,
    상기 소비되는 전력 수준의 변화의 합은, 상기 복수의 상기 코드 블락 각각에 대응하여 획득되는 상기 선택된 리소스의 사용 여부에 관한 정보들을 소정의 처리 순서대로 비교하여 상기 사용 여부가 변경되는 횟수에 기초하여 결정되는 것을 특징으로 하는 전력 소비 제어방법.
  19. 제 10항 내지 18항 중 어느 한 항에서 수행되는 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020140113355A 2014-08-28 2014-08-28 Gpu의 리소스에 대한 전력 소비 제어방법 및 장치 KR102248787B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140113355A KR102248787B1 (ko) 2014-08-28 2014-08-28 Gpu의 리소스에 대한 전력 소비 제어방법 및 장치
US14/738,118 US9891692B2 (en) 2014-08-28 2015-06-12 Apparatus and method of controlling power consumption of graphic processing unit (GPU) resources

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140113355A KR102248787B1 (ko) 2014-08-28 2014-08-28 Gpu의 리소스에 대한 전력 소비 제어방법 및 장치

Publications (2)

Publication Number Publication Date
KR20160025894A true KR20160025894A (ko) 2016-03-09
KR102248787B1 KR102248787B1 (ko) 2021-05-06

Family

ID=55402434

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140113355A KR102248787B1 (ko) 2014-08-28 2014-08-28 Gpu의 리소스에 대한 전력 소비 제어방법 및 장치

Country Status (2)

Country Link
US (1) US9891692B2 (ko)
KR (1) KR102248787B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162405B2 (en) * 2015-06-04 2018-12-25 Intel Corporation Graphics processor power management contexts and sequential control loops
US10101800B2 (en) * 2015-07-29 2018-10-16 Samsung Electronics Co., Ltd. Method of managing power and electronic device
JP6631374B2 (ja) * 2016-04-13 2020-01-15 富士通株式会社 情報処理装置、動作状況収集プログラム及び動作状況収集方法
US10452381B2 (en) * 2017-04-04 2019-10-22 OpenPath Security Inc. Fragmented updating of a distributed device using multiple clients

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090210649A1 (en) * 2008-02-14 2009-08-20 Transitive Limited Multiprocessor computing system with multi-mode memory consistency protection
US20090254767A1 (en) * 2005-12-06 2009-10-08 Arm Limited Energy Management
KR20100072346A (ko) * 2007-10-11 2010-06-30 퀄컴 인코포레이티드 그래픽스 프로세싱 유닛에서의 디맨드-기반 전력 제어
US20120159452A1 (en) * 2010-12-17 2012-06-21 Microsoft Corporation Graphical user interface for exploring source code execution behavior

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185215B2 (en) 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US8134561B2 (en) * 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
JP4721975B2 (ja) 2006-07-28 2011-07-13 パナソニック株式会社 コンパイラ装置およびコンパイル方法
US8069354B2 (en) * 2007-08-14 2011-11-29 Mips Technologies, Inc. Power management for system having one or more integrated circuits
WO2009096519A1 (ja) * 2008-01-31 2009-08-06 Nec Corporation フィードフォーワード制御方法、サービス提供品質制御装置、システム、プログラム及びその記録媒体
US8549486B2 (en) * 2008-04-21 2013-10-01 Microsoft Corporation Active property checking
US8610732B2 (en) 2008-12-11 2013-12-17 Nvidia Corporation System and method for video memory usage for general system application
JP5562359B2 (ja) * 2010-02-03 2014-07-30 富士通株式会社 回路設計方法、回路設計システム及びプログラム
US8447772B2 (en) * 2010-06-23 2013-05-21 International Business Machines Corporation Energy monetary cost aware query optimization
US9196013B2 (en) 2011-10-31 2015-11-24 Apple Inc. GPU workload prediction and management
JP5790431B2 (ja) 2011-11-18 2015-10-07 富士通株式会社 設計支援装置、設計支援方法および設計支援プログラム
US9424099B2 (en) * 2012-06-01 2016-08-23 Advanced Micro Devices, Inc. Method and system for synchronization of workitems with divergent control flow
KR101959252B1 (ko) 2012-07-16 2019-07-04 삼성전자주식회사 데이터를 기반으로 전력을 관리하는 장치 및 방법
US9081583B2 (en) * 2012-08-23 2015-07-14 National Instruments Corporation Compile time execution
CN104903849B (zh) * 2012-09-07 2017-11-28 卡内基·梅隆大学 用于混合gpu/cpu数据处理的方法
US9015674B2 (en) * 2012-09-28 2015-04-21 Microsoft Technology Licensing, Llc Identifying execution paths that satisfy reachability queries
US9697003B2 (en) * 2013-06-07 2017-07-04 Advanced Micro Devices, Inc. Method and system for yield operation supporting thread-like behavior
US20150268963A1 (en) * 2014-03-23 2015-09-24 Technion Research & Development Foundation Ltd. Execution of data-parallel programs on coarse-grained reconfigurable architecture hardware
US9558094B2 (en) * 2014-05-12 2017-01-31 Palo Alto Research Center Incorporated System and method for selecting useful smart kernels for general-purpose GPU computing
US9535815B2 (en) * 2014-06-04 2017-01-03 Nvidia Corporation System, method, and computer program product for collecting execution statistics for graphics processing unit workloads
US20160119626A1 (en) * 2014-10-22 2016-04-28 Genetec Inc. System to dispatch video decoding to dedicated hardware resources
US10542233B2 (en) * 2014-10-22 2020-01-21 Genetec Inc. System to dispatch video decoding to dedicated hardware resources

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090254767A1 (en) * 2005-12-06 2009-10-08 Arm Limited Energy Management
KR20100072346A (ko) * 2007-10-11 2010-06-30 퀄컴 인코포레이티드 그래픽스 프로세싱 유닛에서의 디맨드-기반 전력 제어
US20090210649A1 (en) * 2008-02-14 2009-08-20 Transitive Limited Multiprocessor computing system with multi-mode memory consistency protection
US20120159452A1 (en) * 2010-12-17 2012-06-21 Microsoft Corporation Graphical user interface for exploring source code execution behavior

Also Published As

Publication number Publication date
KR102248787B1 (ko) 2021-05-06
US20160062445A1 (en) 2016-03-03
US9891692B2 (en) 2018-02-13

Similar Documents

Publication Publication Date Title
US10296345B2 (en) Method and system for distributed shader optimization
JP5956770B2 (ja) タイルベースのグラフィックスシステム及びこのようなシステムの動作方法
KR101071073B1 (ko) 퀵 픽셀 렌더링 프로세싱
KR101087520B1 (ko) 3d 그래픽스 파이프라인의 자동 로드 밸런싱
JP6467062B2 (ja) スプーフクロック及び細粒度周波数制御を使用する下位互換性
EP3137985B1 (en) Method and system to create a rendering pipeline
JP5436526B2 (ja) グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置
KR102381945B1 (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
CN109213607B (zh) 一种多线程渲染的方法和装置
KR102248787B1 (ko) Gpu의 리소스에 대한 전력 소비 제어방법 및 장치
KR101869939B1 (ko) 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치
CN115699072A (zh) 用于工作负载处理的任务图调度
CN113204412A (zh) 用于任务调度的方法、电子设备和计算机存储介质
US10580106B2 (en) Graphics processing method utilizing predefined render chunks
EP4310677A1 (en) Task scheduling method, game engine, device and storage medium
KR101347178B1 (ko) 벡터 이미지 드로잉 방법 및 그 장치
US20130342549A1 (en) Apparatus and method for processing rendering data
US8988444B2 (en) System and method for configuring graphics register data and recording medium
KR20220062020A (ko) 유연한 다중 사용자 그래픽 아키텍처
US11275586B2 (en) Task graph generation for workload processing
JP5311491B2 (ja) グラフィクス頂点処理装置およびグラフィクス頂点処理方法
KR101416106B1 (ko) 사용자 인터페이스에 대한 응답성을 개선한 조합형 렌더링 방법, 및 이를 위한 렌더링 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
CN117671106A (zh) 遮挡查询方法、装置、电子设备及存储介质

Legal Events

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