KR20130123645A - 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법 - Google Patents

그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법 Download PDF

Info

Publication number
KR20130123645A
KR20130123645A KR1020120046930A KR20120046930A KR20130123645A KR 20130123645 A KR20130123645 A KR 20130123645A KR 1020120046930 A KR1020120046930 A KR 1020120046930A KR 20120046930 A KR20120046930 A KR 20120046930A KR 20130123645 A KR20130123645 A KR 20130123645A
Authority
KR
South Korea
Prior art keywords
shader
task
vertex
processor
data
Prior art date
Application number
KR1020120046930A
Other languages
English (en)
Inventor
이원종
정석윤
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020120046930A priority Critical patent/KR20130123645A/ko
Priority to US13/835,281 priority patent/US20130293546A1/en
Publication of KR20130123645A publication Critical patent/KR20130123645A/ko

Links

Images

Classifications

    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Image Generation (AREA)

Abstract

그래픽 처리 장치를 위한 동적 로드 밸런싱 방법 및 장치가 제공된다. 쉐이더 프로세서는 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 복수 개의 파이프라인 스테이지들을 통해 인터리빙하여 실행할 수 있다. 그래픽 처리 장치는 적어도 하나의 쉐이더 프로세서를 포함할 수 있다. 그래픽 처리 장치는 적어도 하나의 쉐이더 프로세서 각각에게 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 할당한다. 상기의 할당에 의해 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크에 대한 동적 로드 밸런싱이 제공된다.

Description

그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법{APPARATUS AND METHOD OF DYNAMIC LOAD BALANCING FOR GRAPHIC PROCESSING UNIT}
그래픽 처리를 위한 장치 및 방법에 관한 것으로, 쉐이더 프로세서들 간의 로드를 동적으로 조절하는 장치 및 방법이 개시된다.
영상(image)의 렌더링(rendering)을 위해, 객체 기반 렌더링(Object Based Rendering; OBR) 또는 타일 기반 렌더링(Tile Based Rendering; TBR)이 사용될 수 있다.
OBR은 직관적인 처리 과정 및 하드웨어 설계에 있어서의 용이함 등의 이유로 데스크탑(desktop) 그래픽 처리 장치(Graphic Processing Unit; GPU)에 의해 핵심적인 알고리즘(algorithm)으로 사용된다.
OBR은 객체 순으로 렌더링을 수행한다. 따라서, OBR은 픽셀(pixel) 파이프라인(pipeline) 단에서, 매 픽셀(pixel)마다 외부 메모리(예컨대, 동적 임의 접근 메모리(dynamic random access memory; DRAM)로의 임의 접근(random access)를 유발한다.
반면, TBR은 스크린(screen) 영역을 타일 단위로 분할하고, 타일 순으로 렌더링을 수행한다. TBR이 사용될 경우, 외부 메모리는 각 타일 당 1회씩만 접근된다. 분할된 타일은 빠른 내부 메모리를 사용하여 렌더링되며, 렌더링된 결과는 메모리로 전송된다.
일 실시예는 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 복수 개의 파이프라인 스테이지들을 통해 인터리빙하여 실행하는 장치를 제공할 수 있다.
일 실시예는 적어도 하나의 쉐이더 프로세서 각각에게 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 할당해 줌으로써 동적 로드 밸런싱을 제공하는 장치 및 방법을 제공할 수 있다.
일 측에 따르면, 버텍스 쉐이더 및 픽셀 쉐이더로서 동작하는 적어도 하나의 쉐이더 프로세서 및 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 상기 적어도 하나의 쉐이더 프로세서에게 할당하는 잡(job) 관리부를 포함하고, 상기 적어도 하나의 쉐이더 프로세서는 각각 상기 할당된 버텍스 쉐이더 테스크 및 상기 할당된 픽셀 쉐이더 테스크를 인터리빙하여 실행하는, 그래픽 처리 장치가 제공된다.
상기 적어도 하나의 쉐이더 프로세서는 각각 복수 개의 파이프라인 스테이지들을 통해 테스크를 처리할 수 있다.
상기 복수 개의 파이프라인 스테이지들은 각각 상기 할당된 버텍스 쉐이더 테스크 또는 상기 할당된 픽셀 쉐이더 테스크를 처리할 수 있다.
상기 적어도 하나의 쉐이더 프로세서는 각각 버텍스의 데이터를 읽어 오는 버텍스 로더, 객체의 데이터에 기반하여 상기 객체가 포함하는 픽셀의 데이터를 생성하는 프래그먼트 제네레이터, 상기 버텍스의 데이터에 기반하여 상기 버텍스의 3차원 위치를 2차원 좌표 및 깊이 값으로 변환함으로써 변환된 버텍스의 데이터를 생성하고, 상기 픽셀의 데이터에 픽셀-당 효과를 적용하는 통합된 쉐이더, 상기 변환된 버텍스의 데이터 데이터에 기반하여 프리미티브를 생성하는 프리미티브 어셈블리 및 상기 픽셀의 데이터에 기반하여 레스터 이미지를 생성하는 레스터 오퍼레이터를 포함할 수 있다.
상기 복수 개의 파이프라인 스테이지들은 각각 상기 버텍스 로더, 상기 프래그먼트 제네레이터, 상기 통합된 쉐이더, 상기 프리미티브 어셈블리 및 상기 레스터 오퍼레이터 중 하나 이상에 의해 제공될 수 있다.
상기 버텍스 쉐이더 테스크는 드로우콜(drawcall) 단위로 분할된 테스크일 수 있다.
상기 픽셀 쉐이더 테스크는 타일(tile) 단위로 분할된 테스크일 수 있다.
상기 그래픽 처리 장치는, 타일 내에 있는 객체에 대한 데이터를 상기 적어도 하나의 쉐이더 프로세서로 전송하는 타일 디스패치부를 더 포함할 수 있다.
상기 그래픽 처리 장치는, 프레임을 타일들로 분리하는 타일 비닝(binning)부를 더 포함할 수 있다.
상기 잡 관리부는 상기 적어도 하나의 쉐이더 프로세서의 상태를 저장하는 적어도 하나의 슬롯부를 관리할 수 있다.
상기 적어도 하나의 슬롯부는 상기 적어도 하나의 쉐이더 프로세서가 실행하고 있는 테스크의 종류를 기록할 수 있다.
다른 일 측에 따르면, 잡 관리부가 버텍스 쉐이더 테스크를 쉐이더 프로세서에게 할당하는 단계, 상기 잡 관리부가 픽셀 쉐이더 테스크를 상기 쉐이더 프로세서에게 할당하는 단계 및 상기 쉐이더 프로세서가 상기 할당된 버텍스 쉐이더 테스크 및 상기 할당된 픽셀 쉐이더 테스크를 인터리빙하여 실행하는 단계를 포함하는, 그래픽 처리 방법이 제공된다.
상기 실행하는 단계는, 상기 쉐이더 프로세서의 버텍스 로더가 버텍스의 데이터를 읽어 오는 단계, 상기 쉐이더 프로세서의 통합된 쉐이더가 상기 버텍스의 데이터에 기반하여 상기 버텍스의 3차원 위치를 2차원 좌표 및 깊이 값으로 변환함으로써 변환된 버텍스의 데이터를 생성하는 단계, 상기 쉐이더 프로세서의 프리미티브 어셈블리가 상기 변환된 버텍스의 데이터에 기반하여 프리미티브를 생성하는 단계, 상기 쉐이더 프로세서의 프래그먼트 제네레이터가 객체의 데이터에 기반하여 상기 객체가 포함하는 픽셀의 데이터를 생성하는 단계, 상기 통합된 쉐이더가 상기 픽셀의 데이터에 픽셀-당 효과를 적용하는 단계 및 상기 쉐이더 프로세서의 레스터 오퍼레이터가 상기 픽셀의 데이터에 기반하여 레스터 이미지를 생성하는 단계를 포함할 수 있다.
상기 쉐이더 프로세서는 복수 개일 수 있다.
상기 버텍스 쉐이더 테스크를 쉐이더 프로세서에게 할당하는 단계는, 상기 잡 관리부가 상기 복수 개의 쉐이더 프로세서들 중 버텍스 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 선택하는 단계 및 상기 잡 관리부가 상기 버텍스 쉐이더 테스크를 상기 선택된 쉐이더 프로세서에게 할당하는 단계를 포함할 수 있다.
상기 버텍스 쉐이더 게열의 테스크를 쉐이더 프로세서에게 할당하는 단계는, 상기 잡 관리부가 상기 복수 개의 쉐이더 프로세서들의 상태에 대한 정보를 체크함으로써 상기 복수 개의 쉐이더 프로세서들 중 버텍스 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 식별하는 단계 및 상기 잡 관리부가 상기 선택된 쉐이더 프로세서의 상태에 대한 정보를 버텍스 쉐이더 테스크를 처리하고 있는 것으로 변경하는 단계를 더 포함할 수 있다.
상기 픽셀 쉐이더 테스크를 상기 쉐이더 프로세서에게 할당하는 단계는, 상기 잡 관리부가 상기 복수 개의 쉐이더 프로세서들 중 픽셀 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 선택하는 단계 및 상기 잡 관리부가 상기 버텍스 쉐이더 게열의 테스크를 상기 선택된 쉐이더 프로세서에게 할당하는 단계를 포함할 수 있다.
상기 픽셀 쉐이더 테스크를 상기 쉐이더 프로세서에게 할당하는 단계는, 상기 잡 관리부가 상기 복수 개의 쉐이더 프로세서들의 상태에 대한 정보를 체크함으로써 상기 복수 개의 쉐이더 프로세서들 중 픽셀 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 식별하는 단계 및 상기 잡 관리부가 상기 선택된 쉐이더 프로세서의 상태에 대한 정보를 적어도 픽셀 쉐이더 테스크를 처리하고 있는 것으로 변경하는 단계를 더 포함할 수 있다.
또 다른 일 측에 따르면, 버텍스의 데이터를 읽어 오는 버텍스 로더, 객체의 데이터에 기반하여 상기 객체가 포함하는 픽셀의 데이터를 생성하는 프래그먼트 제네레이터, 상기 버텍스의 데이터에 기반하여 상기 버텍스의 3차원 위치를 2차원 좌표 및 깊이 값으로 변환함으로써 변환된 버텍스의 데이터를 생성하고, 상기 픽셀의 데이터에 픽셀-당 효과를 적용하는 통합된 쉐이더, 상기 변환된 버텍스의 데이터 데이터에 기반하여 프리미티브를 생성하는 프리미티브 어셈블리 및 상기 픽셀의 데이터에 기반하여 레스터 이미지를 생성하는 레스터 오퍼레이터를 포함하는, 쉐이더 프로세서가 제공된다.
상기 쉐이더 프로세서는, 복수 개의 파이프라인 스테이지들을 통해 테스크를 처리할 수 있다.
상기 복수 개의 파이프라인 스테이지들은 각각 버텍스 쉐이더 테스크 또는 픽셀 쉐이더 테스크를 처리할 수 있다.
상기 복수 개의 파이프라인 스테이지들은 각각 상기 버텍스 로더, 상기 프래그먼트 제네레이터, 상기 통합된 쉐이더, 상기 프리미티브 어셈블리 및 상기 레스터 오퍼레이터 중 하나 이상에 의해 제공될 수 있다.
도 1은 일 실시예에 따른 쉐이더 프로세서의 블록도이다.
도 2는 일 실시예에 따른 GPU의 블록도이다.
도 3은 일 예에 따른 쉐이더 인터리빙이 적용된 쉐이더 프로세서의 동작을 나타낸다.
도 4는 일 예에 따른 인터리빙이 적용되지 않을 경우의 GPU의 동작을 설명한다.
도 5는 일 예에 따른 인터리빙이 적용될 경우의 GPU의 동작을 설명한다.
도 6은 일 예에 따른 슬롯들을 사용하는 테스크 스케줄러를 설명한다.
도 7은 일 예에 따른 슬롯들을 사용하는 테스크 스케줄링을 설명한다.
도 8은 일 실시예에 따른 그래픽 처리 방법의 흐름도이다.
도 9는 일 예에 따른 할당된 버텍스 쉐이더 테스크 및 할당된 픽셀 쉐이더 테스크를 인터리빙하여 실행하는 단계의 상세한 흐름도이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서, 용어 "픽셀(pixel)" 및 "프래그먼트(fragment)"는 서로 동일한 의미를 가질 수 있으며, 상호 교체되어 사용될 수 있다.
도 1은 일 실시예에 따른 쉐이더 프로세서의 블록도이다.
쉐이더 프로세서(shader processor)(100)는 버텍스 로더(vertex loader)(110), 프래그먼트 제네레이터(fragment generator)(120), 통합된 쉐이더(unified shader)(130), 텍스처 캐쉬(texture cache)(140), 프리미티브 어셈블리(primitive assembly)(150) 및 레스터 오퍼레이터(raster operator)(160)를 포함할 수 있다.
쉐이더 프로세서(100)는 그래픽 처리 장치(Graphic Processing Unit; GPU)의 코어(core)일 수 있다.
쉐이더 프로세서(100)는 버텍스 쉐이더 및 픽셀 쉐이더로서 동작할 수 있다. 쉐이더 프로세서(100)는 버텍스 쉐이더 프로세서의 기능 및 픽셀 쉐이더 프로세서의 기능을 수행할 수 있다. 쉐이더 프로세서(100) 내에서는 버텍스를 처리하기 위한 하드웨어(hardware) 및 픽셀을 처리하기 위한 하드웨어가 공존할 수 있다. 쉐이더 프로세서(100)는 버텍스를 처리하기 위한 코드 및 픽셀을 처리하기 위한 코드를 실행할 수 있다.
쉐이더(shader) 또는 쉐이더의 코드(code)는 소프트웨어 명령어들(instructions)의 집합을 의미할 수 있다. 쉐이더는 주로 그래픽스 하드웨어 상에서의 렌더링(rendering) 효과들의 계산을 위해 사용될 수 있다. 또한, 쉐이더는 GPU의 프로그래밍가능한(programmable) 렌더링 파이프라인(pipeline)을 프로그램하기 위해 사용될 수 있다.
예컨대, 쉐이더 프로세서(100)가 버텍스 쉐이더로서 동작할 경우, 버텍스 로더(110), 통합된 쉐이더(130) 및 프리미티브 어셈블리(150)가 버텍스 쉐이더 테스크를 처리할 수 있다. 통합된 쉐이더(130)는 버텍스 쉐이더의 기능을 수행할 수 있다.
또한, 쉐이더 프로세서(100)가 픽셀 쉐이더로서 동작할 경우, 프래그먼트 제네레이터(120), 통합된 쉐이더(130) 및 레스터 오퍼레이터(160)가 픽셀 쉐이더 테스크를 처리할 수 있다. 통합된 쉐이더(130)는 픽셀 쉐이더의 기능을 수행할 수 있다.
여기서, 버텍스 쉐이더 테스크는 일반적인 버텍스 쉐이더에 의해 처리될 수 있는 버텍스 쉐이더 계열의 테스크를 의미할 수 있다. 또한, 버텍스 쉐이더 계열의 테스크는 테셀레이션(tessellation) 쉐이더 테스크 및 기하(geometry) 쉐이더 테스크를 더 포함할 수 있다. 픽셀 쉐이더 테스크는 일반적인 픽셀 쉐이더에 의해 처리될 수 있는 픽셀 쉐이더 계열의 테스크를 의미할 수 있다,
버텍스 로더(110)는 버텍스의 데이터를 읽어올 수 있다. 버텍스 로더(110)는 시스템 버스를 통해 메모리 등으로부터 버텍스의 데이터를 읽어올 수 있다. 버텍스의 데이터는 버텍스에 대한 정보를 나타낼 수 있다.
통합된 쉐이더(130)는 버텍스의 데이터에 기반하여 버텍스의 가상 공간(virtual space) 내의 3차원(Dimensional; D) 위치(position)를 화면에서 나타날 2D 좌표 및 깊이 값(depth value)으로 변환함으로써 변환된 버텍스의 데이터를 생성할 수 있다. 여기서, 깊이 값은 Z-버퍼(buffer)의 깊이 값일 수 있다. 통합된 쉐이더(130)는 쉐이더 프로세서(100)에게 주어진 버텍스들 각각을 위해 한 번씩 사용될 수 있다.
프리미티브 어셈블리(150)는 통합된 쉐이더(130)로부터 출력되는 버텍스 데이터를 사용하여 실행 가능한(viable) 프리미티브(primitive)를 생성할 수 있다. 여기서, 프리미티브 어셈블리(150)는 버텍스 데이터를 사용하기 위해 통합된 쉐이더(130)로부터 출력되는 버텍스 데이터의 런(run)을 수집할 수 있다. 프리미티브는 선(line), 점(point) 및 삼각형(triangle) 중 하나 이상을 포함할 수 있다.
프래그먼트 제네레이터(120)는 객체의 데이터에 기반하여 객체가 포함하는 픽셀의 데이터를 생성할 수 있다. 여기서, 객체는 삼각형 등의 프리미티브를 포함할 수 있다. 프래그먼트 제네레이터(120)는 프리미티브 내의 각 꼭지점에 정의된 스크린 좌표 및 텍스처 좌표 등을 보간함으로써 버텍스 내의 픽셀의 데이터를 생성할 수 있다.
통합된 쉐이더(130)는 생성된 픽셀의 데이터에 픽셀-당(per-pixel) 효과들(effects)을 적용할 수 있다. 통합된 쉐이더(130)는 쉐이더 프로그래머(programmer)에 의해 구현된 코드(code)를 수행함으로써 생성된 픽셀들 각각에 대해 복잡한 픽셀-당 효과들을 적용할 수 있다.
통합된 쉐이더(130)는 텍스쳐 매핑(mapping) 및 빛의 반사 등을 계산함으로써 픽셀의 색상을 계산할 수 있으며, 디스카드(discard) 명령어를 사용함으로써 특정한 픽셀을 제거할 수 있다.
레스터 오퍼레이터(160)는 깊이 검사(depth test) 및 컬러 블랜딩(color blending) 등을 수행함으로써 픽셀의 데이터에 기반하여 레스터 이미지를 생성할 수 있다. 여기서, 레스터 이미지는 픽셀들 또는 도트들(dots)일 수 있다.
텍스처 캐쉬(140)는 텍스처의 데이터를 쉐이더 프로세서(100) 외부의 다른 캐쉬 또는 메모리로부터 캐싱(caching)할 수 있고, 캐쉬된 텍스처의 데이터를 통합된 쉐이더(130)에게 제공할 수 있다.
쉐이더 프로세서(100)는 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 할당 받을 수 있다. 쉐이더 프로세서(100)는 할당 받은 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 인터리빙(interleaving)하여 실행할 수 있다.
쉐이더 프로세서(100)는 복수 개의 파이프라인 스테이지들(stages)을 통해 테스크를 처리할 수 있다. 여기서, 테스크는 적어도 하나의 버텍스 쉐이더 테스크 및/또는 적어도 하나의 픽셀 쉐이더 테스크일 수 있다. 복수 개의 파이프라인 스테이지들은 각각 할당된 버텍스 쉐이더 테스크 또는 할당된 픽셀 쉐이더 테스크를 처리할 수 있다.
복수 개의 파이프라인 스테이지들은 각각 버텍스 로더(110), 프래그먼트 제네레이터(120), 통합된 쉐이더(130), 프리미티브 어셈블리(150) 및 레스터 오퍼레이터(160) 중 하나 이상에 의해 제공될 수 있다. 쉐이더 프로세서(100)는 버텍스 로더(110), 프래그먼트 제네레이터(120), 통합된 쉐이더(130), 프리미티브 어셈블리(150) 및 레스터 오퍼레이터(160) 중 하나 이상에 의해 제공되는 파이프라인을 사용하여 복수 개의 테스크들을 병렬로 처리할 수 있다.
도 2는 일 실시예에 따른 GPU의 블록도이다.
GPU(200)는 도 1을 참조하여 전술된 쉐이더 프로세서(100)를 사용하는 병렬의, TBR 아키텍처(architecture)를 제공할 수 있다.
GPU(200)는 잡 관리부(job manager)(210), 타일 디스패치부(tile dispatch unit)(220), 적어도 하나의 쉐이더 프로세서, 타일 비닝부(tile binning unit)(240) 및 L2 텍스처 캐쉬(250)를 포함할 수 있다.
적어도 하나의 쉐이더 프로세서는 각각 도 1을 참조하여 전술된 쉐이더 프로세서(100)일 수 있다. 따라서, 도 1을 참조하여 전술된 쉐이더 프로세서(100)에 대한 설명은 적어도 하나의 쉐이더 프로세서 각각에게 적용될 수 있다. 도 2에서, 적어도 하나의 쉐이더 프로세서로서, 제1 쉐이더 프로세서(230-1), 제n-1 쉐이더 프로세서(230-2) 및 제n 쉐이더 프로세서(230-3)가 도시되었다. 여기서, n은 쉐이더 프로세서(100)의 개수를 나타내는 1 이상의 정수일 수 있다.
적어도 하나의 쉐이더 프로세서는 동일한(identical) 복수 개의 쉐이더 프로세서 코어들일 수 있다.
적어도 하나의 쉐이더 프로세서 각각은 동적 로드(load) 밸런싱(balancing)을 위해 버텍스 쉐이더 및 픽셀 쉐이더로 동작할 수 있다.
도 2에서, 실선을 갖는 화살표는 구성 요소들 간의 데이터의 이동을 나타낼 수 있다. 점선을 갖는 화살표는 화살표가 출발하는 구성 요소가 화살표가 도달하는 구성 요소를 제어할 수 있다는 것을 나타낼 수 있다.
잡 관리부(210)는 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 적어도 하나의 쉐이더 프로세서에게 할당할 수 있다. 잡 관리부(210)는 특정한 버텍스 쉐이더 테스크 또는 픽셀 쉐이더 테스크를 적어도 하나의 쉐이더 프로세서 중 선택된 하나의 쉐이더 프로세서(100)에게 할당할 수 있다. 잡 관리부(210)는 적어도 하나의 쉐이더 프로세서 중 버텍스 쉐이더 테스크 또는 픽셀 쉐이더 테스크를 처리할 쉐이더 프로세서(100)를 선택할 수 있다. 잡 관리부(210)는 적어도 하나의 쉐이더 프로세서 각각을 버텍스 쉐이더 및 픽셀 쉐이더 중 하나 이상의 쉐이더로서 동작하도록 제어할 수 있다.
잡 관리부(210)는 잡을 테스크 단위로 분할할 수 있고, 분할에 의해 생성된 테스크를 적어도 하나의 쉐이더 프로세서 중 적합한 쉐이더 프로세서(100)에게 전송할 수 있다. 여기서, 적합한 쉐이더 프로세서(100)는 유휴의(idle) 쉐이더 프로세서(100)일 수 있다.
잡 관리부(210)는, 예컨대 중앙 처리 장치(Central Processing Unit; CPU)와 같은, 호스트(host)로부터의 그래픽 명령(command)들을 수신할 수 있다. 잡 관리부(210)는 수신된 그래픽 명령들을 저장할 수 있고, 그래픽 명령에 적합한 테스크를 생성할 수 있다. 잡 관리부(210)는 생성된 테스크를 하나의 쉐이더 프로세서 중 적합한 쉐이더 프로세서(100)에게 할당할 수 있다. 여기서, 할당은 테스크의 데이터를 쉐이더 프로세서(100)에게 전송하는 것을 의미할 수 있다.
적합한 쉐이더 프로세서(100)를 판단하기 위해, 잡 관리부(210)는 적어도 하나의 쉐이더 프로세서 각각의 상태를 체크(check)할 수 있다. 잡 관리부(210)는 유휴의 쉐이더 프로세서(100)에게 우선적으로 테스크를 할당함으로써 동적 로드 밸런싱을 제공할 수 있다.
버텍스 쉐이더 테스크는 드로우콜(drawcall) 단위로 분할된 테스크일 수 있다. 픽셀 쉐이더 테스크는 타일 단위로 분할된 테스크일 수 있다. 또한, 잡 관리부(210)는 타일 비닝 테스크, 테셀레이션 쉐이더 테스크 및 계산(compute) 쉐이더 테스크 등을 처리할 수 있다.
타일 디스패치부(220)는 타일 내에 있는 객체에 대한 데이터를 적어도 하나의 쉐이더 프로세서 중 선택된 쉐이더 프로세서(100)로 전송할 수 있다. 여기서, 객체는 삼각형 등의 프리미티브일 수 있다. 말하자면, 타일 디스패치부(220)는 프레임 내의 타일들 각각을 적어도 하나의 쉐이더 프로세서 중 하나의 쉐이더 프로세서(100)에게 분배할 수 있다. 선택된 하나의 쉐이더 프로세서는 잡 관리부(210)에 의해 선택될 수 있다. 잡 관리부(210)는, 픽셀 쉐이더 테스크를 적어도 하나의 쉐이더 프로세서에게 할당할 때, 타일 디스패치부(220)가 타일 내에 있는 객체에 대한 데이터를 선택된 쉐이더 프로세서(100)로 전송하도록 타일 디스패치부(220)를 제어할 수 있다.
타일 비닝부(240)는 버텍스 쉐이더로서 동작하는 적어도 하나의 쉐이더 프로세서에 대한 전역적 관리를 수행할 수 있다.
타일 비닝부(240)는 프레임을 타일들로 분할할 수 있다. 상기의 분할은 TBR의 타일링(tiling)을 의미할 수 있다. 타일 비닝부(240)는 분할에 의해 생성된 타일들 각각 내에 어떤 객체가 있는 지를 판단할 수 있고, 객체를 상기의 객체를 포함하는 타일로 분리해 냄으로써 타일 내에 있는 객체에 대한 데이터를 생성할 수 있다. 잡 관리부(210)는 타일 비닝부(240)가 프레임을 타일들로 분할하도록 타일 비닝부(240)를 제어할 수 있다.
버텍스 로더(110), 버텍스 쉐이더로서 동작하는 통합된 쉐이더(130) 및 프리미티브 어셈블리(150)가 프레임 내의 버텍스를 처리할 수 있다. 버텍스가 처리된 후, 타일 비닝부(240)는 프레임을 타일들로 분할할 수 있다. 분할된 타일들 각각에 대해, 타일 디스패치부(220), 프래그먼트 제네레이터(120), 픽셀 쉐이더로서 동작하는 통합된 쉐이더(130) 및 레스터 오퍼레이터(160)가 타일 내의 프리미티브 또는 픽셀을 처리할 수 있다.
L2 텍스처 캐쉬(250)는 텍스처의 데이터를 외부 메모리(270)로부터 캐싱할 수 있고, 캐쉬된 텍스처의 데이터를 쉐이더 프로세서(100)의 텍스처 캐쉬(140)에게 제공할 수 있다. 쉐이더 프로세서(100)의 텍스처 캐쉬(140)가 통합된 쉐이더(130)에게 직접적으로 텍스처의 데이터를 제공하는 레벨 1의 텍스처 캐쉬일 수 있으며, L2 텍스처 캐쉬(250)는 텍스처 캐쉬(140)를 통해 통합된 쉐이더(130)에게 텍스처의 데이터를 제공하는 레벨 2의 텍스처 캐쉬일 수 있다.
외부 메모리(270)는 GPU(200)에 의해 생성된 데이터를 저장할 수 있고, GPU(200)에게 데이터를 제공할 수 있다.
시스템 버스(260)는 데이터의 전송을 가능하게 하는 전송 채널일 수 있다. 여기서, 데이터의 전송은 GPU(200)의 구성 요소들 간의 데이터의 전송일 수 있고, GPU(200)의 구성 요소 및 외부 메모리(270) 간의 데이터의 전송일 수 있다.
도 3은 일 예에 따른 쉐이더 인터리빙이 적용된 쉐이더 프로세서의 동작을 나타낸다.
하단의 그래프는, 쉐이더 프로세서(100)가 버텍스 쉐이더 테스크 '드로우콜 2' 및 픽셀 쉐이더 테스크 '타일 2'를 인터리빙하여 실행한다는 것을 나타낼 수 있다. 하단의 그래프에서 x 축은 시간의 흐름을 나타낼 수 있다.
상단의 그래프는, 쉐이더 프로세서(100)의 구성 요소들이 파이프라이닝을 통해 버텍스 쉐이더 테스크 '드로우콜 2' 및 픽셀 쉐이더 테스크 '타일 2'를 인터리빙하여 실행하는 동작을 나타낼 수 있다. 상단의 그래프는, 쉐이더 프로세서(100)가 버텍스 쉐이더 테스크 '드로우콜 2'를 실행하는 동안의, 쉐이더 프로세서(100)의 구성 요소들 각각의 동작을 시간의 흐름에 따라 나타낸 것일 수 있다. 상단의 그래프에서, y 축은 쉐이더 프로세서(100)의 구성 요소들 각각을 나타낼 수 있고, x 축은 시각을 나타낼 수 있다. 또한, 상단의 그래프에서, 기호 'V'는 버텍스 쉐이더 테스크에 관련된 실행을 나타낼 수 있으며, 기호 'F'는 픽셀 쉐이더 테스크에 관련된 실행을 나타낼 수 있다. 기호 'V' 다음의 숫자는 서로 연관된 실행을 나타낼 수 있다.
예컨대, 시각 't1'에서의 'V1'은 버텍스 로더(110)가 버텍스의 데이터를 읽어 오는 동작을 나타낼 수 있고, 시각 't2'에서의 'V1'은 통합된 쉐이더(130)가 상기의 버텍스의 데이터에 기반하여 변환된 버텍스의 데이터를 생성하는 동작을 나타낼 수 있다. 또한, 시각 't3'에서의 'V1'은 프리미티브 어셈블리(150)가 상기의 변환된 버텍스의 데이터에 기반하여 프리미티브를 생성하는 동작을 나타낼 수 있다. 도 3에서, 버텍스 쉐이더 테스크 '드로우콜 2'는 'V1', 'V2' 및 'V3'으로 나뉘어서 실행될 수 있다. 즉, 'V1', 'V2' 및 'V3'는 각각 버텍스 쉐이더 테스크 '드로우콜 2'을 구성하는 데이터 스트림을 나타낼 수 있다.
예컨대, 시각 't2'에서의 'F1'은 프래그먼트 제네레이터(120)가 객체의 데이터에 기반하여 객체가 포함하는 픽셀의 데이터를 생성하는 동작을 나타낼 수 있다. 시각 't3'에서의 'F1'은 상기의 통합된 쉐이더(130)가 픽셀의 데이터에 픽셀-당 효과를 적용하는 동작을 나타낼 수 있다. 시각 't4'에서의 'F1'은 레스터 오퍼레이터(160)가 픽셀-당 효과가 적용된 픽셀의 데이터에 기반하여 레스터 이미지를 생성하는 동작을 나타낼 수 있다. 도 3에서, 픽셀 쉐이더 테스크 '타일 2'는 'F1', 'F2', 'F3', 'F4', 'F5' 및 'F6'으로 나뉘어서 실행될 수 있다.
예컨대, 시각 't3'에서, 프래그먼트 제네레이터(120) 및 통합된 쉐이더(130)는 픽셀 쉐이더 테스크 '타일 2'를 실행할 수 있고, 프리미티브 어셈블리(150)는 버텍스 쉐이더 테스크 '드로우콜 2'를 실행할 수 있다. 따라서, 버텍스 쉐이더 테스크 '드로우콜 2' 및 픽셀 쉐이더 테스크 '타일 2'는 서로 인터리빙되어 실행될 수 있다.
만약, 버텍스 쉐이더 테스크 '드로우콜 2' 및 픽셀 쉐이더 테스크 '타일 2'가 서로 인터리빙되지 않고, 픽셀 쉐이더 테스크 '타일 2'만 쉐이더 프로세서(100)에 의해 실행될 경우, 파이프라인 내에서 파이프라인 버블(bubble)이 발생할 수 있다. 이하, 파이프라인 버블을 버블로 약술한다.
테스크 수행에 있어서, 통합된 쉐이더(130)의 코드(code) 및 하드웨어는 데이터 스트림 또는 배치(batch) 단위로 동작할 수 있다. 배치는, 예컨대 100 개의 드로우와 같은, 데이터의 기본적인 처리 단위를 의미할 수 있다.
파이프라인의 스테이지들 각각의 레이턴시(latency)가 서로 상이할 경우, 파이프라인 내에서 버블이 발생할 수 있다. 여기서, 레이턴시는 스테이지를 실행함에 있어서 소모되는 지연 시간일 수 있다. 버블은, 통합된 쉐이더의 코드가 하드웨어의 처리에 비해 먼저 종료하였기 때문에, 쉐이더가 다음의 데이터 스트림 또는 배치를 대기하는 상황을 의미할 수 있다. 이러한 대기는, 개발자에 의해 작성되는 쉐이더의 코드가 가변의(variant) 복잡도 및 수행 시간을 갖는 것에 비해, 하드웨어는 고정된(fixed) 평션(function) 블록으로서 고정된 수행 시간을 갖는 것에 기인할 수 있다.
예컨대, 'V1', 'V2' 및 'V3'가 각각 'glDraw*'을 나타낼 경우, 입력되는 프리미티브들의 개수가 소정의(predefined) 스트림 크기 이하이면, 'V1', 'V2' 및 'V3' 각각에 대한 파이프라인들은 직렬화될 수 있다. 여기서, 입력되는 프리미티브들의 개수는 하나의 테스크 내에서 치리되어야 할 프리미티브들의 개수를 의미할 수 있다. 직렬화는, 'V1'에 대한 모든 동작이 완료된 후에 'V2'에 대한 동작이 시작되고, 'V2'에 대한 모든 동작이 완료된 후 'V3'에 대한 동작이 시작된다는 것을 의미할 수 있다. 직렬화가 발생하는 경우, 통합된 쉐이더(130)가 하나의 데이터 스트림을 처리한 후, 그 다음의 데이터 스트림을 처리할 수 있게 될 때까지 버블이 존재할 수 있다. 도 3에서, 쉐이더 프로세서(100)가 버텍스 쉐이더 테스크 '드로우콜 2'만을 실행할 경우, 시각 't2'에서 'V1'를 처리한 후 시각 't5'에서 'V2'를 처리할 수 있게 될 때까지의 시각 't3' 및 't4'에서, 통합된 쉐이더(130)는 유휴 상태가 될 수 있다.
이러한 버블에 의해 통합된 쉐이더(130)가 대기 상태가 될 때, 통합된 쉐이더(130)가 스톨(stall)하지 않고 다른 쉐이더 코드를 구동할 수 있다면, 레이턴시가 은폐(hiding)되는 효과가 발생할 수 있다. 즉, 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크가 서로 인터리빙되어 실행됨에 따라, 쉐이더 프로세서(100)의 구성 요소들은 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 병렬로 실행할 수 있다. 여기서, 버텍스 쉐이더 테스크뿐만 아니라, 테셀레이션 쉐이더 테스크 및 기하 쉐이더 테스크 또한 픽셀 쉐이더 테스크와 인터리빙되어 실행될 수 있다.
예컨대, 버텍스 쉐이더 테스크 '드로우콜 2' 및 픽셀 쉐이더 테스크 '타일 2'가 인터리빙되어 실행됨에 따라, 통합된 쉐이더(130)는 시각 't3' 및 't4'에서 각각 'F1' 및 'F2'를 실행함으로써 유휴 상태가 되지 않을 수 있다.
시간이 흐름에 따라, 통합된 쉐이더(130)가 서로 상이한 테스크를 처리할 경우, 통합된 쉐이더(130)는 테스크의 문맥 정보를 사용할 수 있다. 적어도 하나의 쉐이더 프로세서 각각의 통합된 쉐이더(130)는 통합된 쉐이더(130) 또는 쉐이더 프로세서(100)의 내부의 메모리에 문맥 정보를 별도로 저장할 수 있다. 문맥 정보가 통합된 쉐이더(130) 또는 쉐이더 프로세서(100)의 내부에 저장되는 경우, 문맥 교환(context switching)에 의한 오버헤드(overhead)가 제거 또는 감소될 수 있다.
도 4는 일 예에 따른 인터리빙이 적용되지 않을 경우의 GPU의 동작을 설명한다.
도 4에서, 그래프의 y 축은 통합된 쉐이더들을 나타낼 수 있다. 4 개의 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3'이 도시되었다. 그래프의 x 축은 시간의 흐름을 나타낼 수 있다.
그래프에서, 화살표는 테스크를 나타낼 수 있다. 화살표 내부의 패턴에 의해 픽셀 쉐이더 테스크 및 버텍스 쉐이더 테스크가 구분될 수 있다. 화살표에 가해진 사선은 통합된 쉐이더(130)가 상기의 화살표가 나타내는 테스크를 처리함에 있어서, 버블이 발생하였음을 나타낼 수 있다.
그래프의 좌측은, GPU(200)가 처리할 버텍스 쉐이더 테스크들을 나타낼 수 있다. GPU(200)가 처리할 버텍스 쉐이더 테스크들로서 'D1', 'D2', 'D3' 및 'D4'가 도시되었다. 여기서, 기호 'D'는 '드로우콜'을 의미할 수 있다.
그래프의 우측은, 시간의 흐름에 따라 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3' 각각이 처리하는 테스크를 나타낼 수 있다. 예컨대, 통합된 쉐이더 'US0'은 픽셀 쉐이더 테스크 'T1', 버텍스 쉐이더 테스크 'D1' 및 픽셀 쉐이더 테스크 'T8'을 순차적으로 처리할 수 있다. 픽셀 쉐이더 테스크를 나타내는 기호 'T'는 '타일'을 의미할 수 있다.
잡 관리부(210)는 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3' 중 테스크의 처리를 완료한 통합된 쉐이더(130)를 식별할 수 있고, 식별된 통합된 쉐이더(130)의 쉐이더 프로세서(100)에게 다음의 테스크를 할당해 줄 수 있다. 예컨대, 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3' 중 통합된 쉐이더 'US1'이 가장 먼저 자신에게 할당된 픽셀 쉐이더 테스크 'T5'의 실행을 완료할 수 있다. 따라서, 잡 관리부(210)는 통합된 쉐이더 'US1'의 쉐이더 프로세서에게 다음의 테스크인 픽셀 쉐이더 테스크 'T5'를 할당해 줄 수 있다.
도 4에서, 하나의 통합된 쉐이더(130)는 한 순간에 하나의 테스크만을 처리한다. 즉, 잡 관리부(210)가 제공하는 로드 밸런싱은 한 순간에 하나의 통합된 쉐이더(130)에게 하나의 테스크만을 할당해 주는 것일 수 있다. 이러한 로드 밸런싱에 의해 파이프라인은 스톨될 수 있다.
도 5는 일 예에 따른 인터리빙이 적용될 경우의 GPU의 동작을 설명한다.
도 5에서, 그래프의 y 축은 통합된 쉐이더들을 나타낼 수 있다. 4 개의 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3'이 도시되었다. 그래프의 x 축은 시간의 흐름을 나타낼 수 있다.
그래프에서, 화살표는 테스크를 나타낼 수 있다. 화살표 내부의 패턴에 의해 픽셀 쉐이더 테스크 및 버텍스 쉐이더 테스크가 구분될 수 있다. 화살표에 가해진 사선은 통합된 쉐이더(130)가 상기의 화살표가 나타내는 테스크를 처리함에 있어서, 버블이 발생하였음을 나타낼 수 있다.
그래프의 좌측은, GPU(200)가 처리할 버텍스 쉐이더 테스크들을 나타낼 수 있다. GPU(200)가 처리할 버텍스 쉐이더 테스크들로서 'D1', 'D2', 'D3' 및 'D4'가 도시되었다.
그래프의 우측은, 시간의 흐름에 따라 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3' 각각이 처리하는 테스크를 나타낼 수 있다.
도 5에서, 하나의 통합된 쉐이더(130)는 한 순간에 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 병렬로 처리한다. 잡 관리부(210)는 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3' 중 버텍스 쉐이더 테스크를 실행하고 있지 않은 통합된 쉐이더(130)에게 다음 버텍스 쉐이더 테스크를 할당해 줄 수 있다. 또한, 잡 관리부(210)는 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3' 중 픽셀 쉐이더 테스크를 실행하고 있지 않은 통합된 쉐이더(130)에게 다음 픽셀 쉐이더 테스크를 할당해 줄 수 있다.
예컨대, 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3'이 각각 픽셀 쉐이더 테스크들 'T1', 'T2', 'T3', 'T4'을 실행할 때, 잡 관리부(210)는 버텍스 쉐이더 테스크들 'D1', 'D2', 'D3', D4'를 각각 통합된 쉐이더들 'US0', 'US1', 'US2' 및 'US3'에게 할당해 줄 수 있다. 또한, 통합된 쉐이더 'D3'이 가장 먼저 자신에게 할당된 픽셀 쉐이더 테스크 'T2'의 실행을 완료하면, 잡 관리부(210)는 다음의 픽셀 쉐이더 테스크 'T5'를 통합된 쉐이더 'D3'에게 할당해 줄 수 있다.
전술된 것과 같은 할당에 의해, 하나의 통합된 쉐이더(130)에서 버텍스 쉐이더 및 픽셀 쉐이더 테스크가 오버래핑되어 실행될 수 있으며, 버블의 발생이 방지될 수 있다. 단, 픽셀 쉐이더 테스크 및 버텍스 쉐이더 테스크 중 일방의 테스크가 더 이상 남지 않는 경우, 통합된 쉐이더(130)는 하나의 테스크만을 처리할 수 있으며, 버블이 발생할 수 있다.
잡 관리부(210)가 제공하는 로드 밸런싱은, 한 순간에 하나의 통합된 쉐이더(130)에게 픽셀 쉐이더 테스크 및 버텍스 쉐이더 테스크를 각각 할당해 주는 것일 수 있다. 이러한 로드 밸런싱에 의해 파이프라인의 스톨은 최소화될 수 있다.
도 6은 일 예에 따른 슬롯들을 사용하는 테스크 스케줄러를 설명한다.
잡 관리부(210)는 테스크 스케줄러(610)를 실행할 수 있다. 테스크 스케줄러(610)는 적어도 하나의 슬롯부를 데이터로서 저장할 수 있다. 잡 관리부(210)는 적어도 하나의 슬롯부를 관리할 수 있다. 호스트로부터의 명령은 잡 관리부(210)를 통해 테스크 스케줄러(610)로 전달될 수 있다.
적어도 하나의 슬롯부 각각은 적어도 하나의 쉐이더 프로세서 중 하나의 쉐이더 프로세서(100)의 상태를 저장할 수 있다.
도 6에서, 적어도 하나의 슬롯부로서, 제1 슬롯부(620-1), 제n-1 슬롯부(620-2) 및 제n 슬롯부(620-3)가 도시되었다. 또한, 적어도 하나의 쉐이더 프로세서로서, 제1 쉐이더 프로세서(230-1), 제n-1 쉐이더 프로세서(230-2) 및 제n 쉐이더 프로세서(230-3)가 도시되었다. 여기서, n은 쉐이더 프로세서(100) 및 쉐이더 프로세서(100)에 대응하는 슬롯부의 개수를 나타내는 1 이상의 정수일 수 있다.
예컨대, 제1 슬롯부(620-1), 제n-1 슬롯부(620-2) 및 제n 슬롯부(620-3)는 각각 제1 쉐이더 프로세서(230-1), 제n-1 쉐이더 프로세서(230-2) 및 제n 쉐이더 프로세서(230-3)의 상태의 데이터를 저장할 수 있다. 여기서, 쉐이더 프로세서(100)의 상태는 쉐이더 프로세서가 실행하고 있는 테스크의 종류를 의미할 수 있다. 즉, 적어도 하나의 슬롯부는 적어도 하나의 쉐이더 프로세서가 실행하고 있는 테스크의 종류를 기록할 수 있다.
슬롯부는 제1 슬롯 및 제2 슬롯을 포함할 수 있다. 도 6에서, 제1 슬롯은 기호 'V'로 표시되었고, 제2 슬롯은 기호 'P'로 표시되었다. 제1 슬롯은 쉐이더 프로세서(100)가 버텍스 쉐이더 테스크를 실행하고 있는지 여부 또는 쉐이더 프로세서(100)에 할당된 버텍스 쉐이더 테스크가 있는지 여부를 나타낼 수 있다. 제2 슬롯은 쉐이더 프로세서(100)가 픽셀 쉐이더 테스크를 실행하고 있는지 여부 또는 쉐이더 프로세서(100)에 할당된 픽셀 쉐이더 테스크가 있는지 여부를 나타낼 수 있다. 제1 슬롯 및 제2 슬롯에 의해 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크가 별개로 관리될 수 있다.
제1 슬롯 및 제2 슬롯은 각각 불리언(Boolean) 값을 가질 수 있다. 예컨대, 제1 슬롯의 값이 '0'인 것은 상기의 제1 슬롯에 대응하는 쉐이더 프로세서(100)가 버텍스 쉐이더 테스크의 처리에 있어서 유휴 상태임을 나타낼 수 있다. 제1 슬롯의 값이 '1'인 것은 상기의 제1 슬롯에 대응하는 쉐이더 프로세서(100)가 버텍스 쉐이더 테스크의 처리에 있어서 바쁜(busy) 상태임을 나타낼 수 있다. 제2 슬롯의 값이 '0'인 것은 상기의 제2 슬롯에 대응하는 쉐이더 프로세서(100)가 픽셀 쉐이더 테스크의 처리에 있어서 유휴 상태임을 나타낼 수 있다. 제2 슬롯의 값이 '1'인 것은 상기의 제2 슬롯에 대응하는 쉐이더 프로세서(100)가 픽셀 쉐이더 테스크의 처리에 있어서 바쁜(busy) 상태임을 나타낼 수 있다.
잡 관리부(210)는 적어도 하나의 슬롯부 내에 저장된 값을 통해 적어도 하나의 쉐이더 프로세서 각각의 상태에 대한 정보를 체크할 수 있다. 잡 관리부(210)는 상기의 체크에 기반하여 버텍스 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서(100)에게 다음 버텍스 쉐이더 테스크를 할당해 줄 수 있으며, 픽셀 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서(100)에게 다음 픽셀 쉐이더 테스크를 할당해 줄 수 있다.
잡 관리부(210)는 쉐이더 프로세서(100)에게 버텍스 쉐이더 테스크를 할당해 준 후, 상기의 쉐이더 프로세서(100)에 대응하는 슬롯부의 제1 슬롯의 값을 상기의 쉐이더 프로세서(100)가 버텍스 쉐이더 테스크를 처리하고 있음을 나타내는 값으로 갱신할 수 있다. 또한, 잡 관리부(210)는 쉐이더 프로세서(100)에게 픽셀 쉐이더 테스크를 할당해 준 후, 상기의 쉐이더 프로세서(100)에 대응하는 슬롯부의 제2 슬롯의 값을 상기의 쉐이더 프로세서(100)가 픽셀 쉐이더 테스크를 처리하고 있음을 나타내는 값으로 갱신할 수 있다.
도 7은 일 예에 따른 슬롯들을 사용하는 테스크 스케줄링을 설명한다.
도 6에서, 그래프의 y 축은 쉐이더 프로세서들을 나타낼 수 있다. 4 개의 쉐이더 프로세서들 'SP0', 'SP1', 'SP2' 및 'SP3'이 도시되었다. 그래프의 x 축은 시간의 흐름을 나타낼 수 있다.
그래프에서 나타난 시간대는, 버텍스 쉐이더 유일(only) 주기(period), 인터리빙 주기 및 픽셀 쉐이더 유일 주기로 구분될 수 있다. 버텍스 쉐이더 유일 주기는 쉐이더 프로세서들에 의해 버텍스 쉐이더 테스크만이 실행되는 시간대를 나타낼 수 있다. 인터리빙 주기는 쉐이더 프로세서들 중 적어도 하나의 쉐이더 프로세서에 의해 버텍스 쉐이더 테스크 및 픽셀 쉐이터 테스크가 인터리빙되어 실행되는 시간대를 나타낼 수 있다. 픽셀 쉐이더 유일 주기는 쉐이더 프로세서들에 의해 픽셀 쉐이더 테스크만이 실행되는 시간대를 나타낼 수 있다.
그래프 내의 수평 방향의 막대는, 테스크를 나타낼 수 있다. 막대 내의 기호 'V'는 상기의 막대가 버텍스 쉐이더 테스크임을 나타낼 수 있다. 기호 'V' 뒤의 숫자는 버텍스 쉐이더 테스크의 번호를 나타낼 수 있다. 기호 'P'는 상기의 막대가 픽셀 쉐이더 테스크임을 나타낼 수 있다.
시각 't1', 't2', 't3' 및 't4' 각각에서의 슬롯부 상태들(710, 720, 730 및 740)이 도시되었다. 슬롯부 상태의 제1 열은 제1 슬롯을 나타낼 수 있고, 제2 열은 제2 슬롯을 나타낼 수 있다. 슬롯부 상태의 행들은 위에서부터 아래로의 순서대로 쉐이더 프로세서들 'SP0', 'SP1', 'SP2' 및 'SP3' 각각에 대응하는 슬롯부를 나타낼 수 있다. 여기서, 쉐이더 프로세서(100)에 대응하는 슬롯부는 쉐이더 프로세서(100)의 상태를 나타내는 슬롯부를 의미할 수 있다.
시각 't1'에서, 제1 슬롯부 상태(710)에 따르면, 통합된 쉐이더 'SP0'은 버텍스 쉐이더 테스크에 대해 유휴 상태가 된다. 따라서, 잡 관리부(210)는 쉐이더 프로세서 'SP0'에게 다음 버텍스 쉐이더 테스크인 'V4'를 할당해 줄 수 있다.
시각 't2'에서, 제2 슬롯부 상태(720)에 따르면, 통합된 쉐이더 'SP2'는 버텍스 쉐이더 테스크에 대해 유휴 상태가 된다. 따라서, 잡 관리부(210)는 쉐이더 프로세서 'SP2'에게 다음 버텍스 쉐이더 테스크인 'V14'를 할당해 줄 수 있다.
시각 't3'에서, 제3 슬롯부 상태(730)에 따르면, 통합된 쉐이더 'SP3'은 픽셀 쉐이더 테스크에 대해 유휴 상태가 된다. 따라서, 잡 관리부(210)는 쉐이더 프로세서 'SP3'에게 다음 픽셀 쉐이더 테스크인 'P4'를 할당해 줄 수 있다.
시각 't4'에서, 제4 슬롯부 상태(740)에 따르면, 통합된 쉐이더 'SP2'는 픽셀 쉐이더 테스크에 대해 유휴 상태가 된다. 따라서, 잡 관리부(210)는 쉐이더 프로세서 'SP2'에게 다음 픽셀 쉐이더 테스크인 'P133'을 할당해 줄 수 있다.
전술된 것과 같은 할당에 의해, 잡 관리부(210)는 서로 상이한 테스크들이 하나의 쉐이더 프로세서(100) 내에 존재하도록 동적 로드 밸런싱을 수행할 수 있다. 상기의 동적 로드 밸런싱에 의해 멀티-코어 및 통합된 쉐이더에 기반한 GPU는 처리량(throughput)을 향상시킬 수 있다.
도 8은 일 실시예에 따른 그래픽 처리 방법의 흐름도이다.
단계(810)에서, 잡 관리부(210)는 다음 테스크가 버텍스 쉐이더 테스크인지 여부를 체크할 수 있다. 다음 테스크가 버텍스 쉐이더 테스크이면, 단계(820)가 수행될 수 있고, 다음 테스크가 버텍스 쉐이더 테스크가 아나면, 단계(830)가 수행될 수 있다.
단계(820)에서, 잡 관리부(210)는 버텍스 쉐이더 테스크인 다음 테스크를 쉐이더 프로세서(100)에게 할당할 수 있다.
단계(830)에서, 잡 관리부(210)는 픽셀 쉐이더 테스크인 다음 테스크를 쉐이더 프로세서(100)에게 할당할 수 있다.
단계(850)에서, 쉐이더 프로세서(100)는 할당된 버텍스 쉐이더 테스크 및 할당된 픽셀 쉐이더 테스크를 인터리빙하여 실행할 수 있다.
단계(850)의 구체적인 구성이 하기에서 도 9를 참조하여 상세히 설명된다.
단계(860)에서, 쉐이더 프로세서(100) 또는 잡 관리부(210)는 할당된 버텍스 쉐이더 테스크의 실행 및 할당된 픽셀 쉐이더 테스크의 실행이 종료되었는지 여부를 검사할 수 있다. 할당된 버텍스 쉐이더 테스크의 실행 또는 할당된 픽셀 쉐이더 테스크의 실행이 종료되지 않은 경우, 단계(850)가 반복될 수 있다. 할당된 버텍스 쉐이더 테스크의 실행 및 할당된 픽셀 쉐이더 테스크의 실행이 종료된 경우, 단계(870)가 수행될 수 있다.
단계(870)에서, 잡 관리부(210)는 쉐이더 프로세서(100)의 상태를 변경할 수 있다. 잡 관리부(210)는 쉐이더 프로세서(100)의 상태를 변경하기 위해, 예컨대 슬롯부와 같은 쉐이더 프로세서(100)의 상태를 나타내는 데이터의 값을 변경할 수 있다.
쉐이더 프로세서(100)는 복수 개일 수 있다. 단계들(820, 830, 850, 860)에서의 쉐이더 프로세서(100)는 복수 개의 쉐이더 프로세서들 중 다음 테스크를 처리할 쉐이더 프로세서로서 잡 관리부(210)에 의해 선택된 쉐이더 프로세서일 수 있다.
단계(820)는 단계들(822, 824, 826 및 828)을 포함할 수 있다.
단계(822)에서, 잡 관리부(210)는 복수 개의 쉐이더 프로세서들의 상태에 대한 정보를 체크함으로써 복수 개의 쉐이더 프로세서들 중 버텍스 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 식별할 수 있다. 여기서, 복수 개의 쉐이더 프로세서들의 상태에 대한 정보는 복수 개의 쉐이더 프로세서들에 대응하는 슬롯부들의 제1 슬롯들의 값들을 의미할 수 있다.
단계(824)에서, 잡 관리부(210)는 복수 개의 쉐이더 프로세서들 중 버텍스 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 선택할 수 있다.
단계(826)에서, 잡 관리부(210)는 선택된 쉐이더 프로세서의 상태에 대한 정보를 버텍스 쉐이더 테스크를 처리하고 있는 것을 나타내도록 변경할 수 있다. 잡 관리부(210)는 선택된 쉐이더 프로세서에 대응하는 슬롯부의 제1 슬롯의 값을 '바쁨'을 나타내는 값으로 세트할 수 있다.
단계(828)에서, 잡 관리부(210)는 버텍스 쉐이더 테스크인 다음 테스크를 선택된 쉐이더 프로세서에게 할당할 수 있다. 잡 관리부(210)는 다음 테스크의 데이터를 선택된 쉐이더 프로세서로 전송할 수 있다.
단계(830)는 단계들(840, 842, 844, 846 및 848)을 포함할 수 있다.
단계(840)에서, 타일 디스패치부(220)는 다음 타일의 위치를 계산할 수 있다. 여기서, 타일의 위치는 타일의 좌표 또는 타일의 시작점을 의미할 수 있다. 여기서, 다음 타일의 위치를 계산하는 것은 다음 테스크인 픽쉘 쉐이더 테스크가 처리해야 할 타일을 식별하는 것일 수 있다.
단계(842)에서, 잡 관리부(210)는 복수 개의 쉐이더 프로세서들의 상태에 대한 정보를 체크함으로써 복수 개의 쉐이더 프로세서들 중 픽셀 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 식별할 수 있다. 여기서, 복수 개의 쉐이더 프로세서들의 상태에 대한 정보는 복수 개의 쉐이더 프로세서들에 대응하는 슬롯부들의 제2 슬롯들의 값들을 의미할 수 있다.
단계(844)에서, 잡 관리부(210)는 복수 개의 쉐이더 프로세서들 중 픽셀 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 선택할 수 있다.
단계(846)에서, 잡 관리부(210)는 선택된 쉐이더 프로세서의 상태에 대한 정보를 픽셀 쉐이더 테스크를 처리하고 있는 것을 나타내도록 변경할 수 있다. 잡 관리부(210)는 선택된 쉐이더 프로세서에 대응하는 슬롯부의 제2 슬롯의 값을 '바쁨'을 나타내는 값으로 세트할 수 있다.
단계(828)에서, 잡 관리부(210)는 픽셀 쉐이더 테스크인 다음 테스크를 선택된 쉐이더 프로세서에게 할당할 수 있다. 잡 관리부(210)는 다음 테스크의 데이터를 선택된 쉐이더 프로세서로 전송할 수 있다. 타일 디스패치부(220)는 잡 관리부(210)의 제어에 따라 다음 타일의 데이터를 선택된 쉐이더 프로세서로 전송할 수 있다.
앞서 도 1 내지 도 7을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 9는 일 예에 따른 할당된 버텍스 쉐이더 테스크 및 할당된 픽셀 쉐이더 테스크를 인터리빙하여 실행하는 단계의 상세한 흐름도이다.
단계(910)에서, 쉐이더 프로세서(100)는 버텍스 쉐이더 테스크를 실행할 수 있다.
단계(910)는 단계들(912, 914 및 916)을 포함할 수 있다.
단계(912)에서, 쉐이더 프로세서(100)의 버텍스 로더(110)는 버텍스의 데이터를 읽어 올 수 있다.
단계(914)에서, 쉐이더 프로세서(100)의 통합된 쉐이더(130)는 버텍스의 데이터에 기반하여 버텍스의 3 차원 위치를 2 차원 좌표 및 깊이 값으로 변환함으로써 변환된 버텍스의 데이터를 생성할 수 있다.
단계(916)에서, 쉐이더 프로세서(100)의 프리미티브 어셈블리(150)는 변환된 버텍스의 데이터에 기반하여 프리미티브를 생성할 수 있다.
단계(920)에서, 쉐이더 프로세서(100)는 픽셀 쉐이더 테스크를 실행할 수 있다.
단계(920)는 단계들(922, 924 및 926)을 포함할 수 있다.
단계(922)에서, 쉐이더 프로세서(100)의 프래그먼트 제네레이터(120)는 객체의 데이터에 기반하여 객체가 포함하는 픽셀의 데이터를 생성할 수 있다. 여기서, 객체는 프리미티브를 포함할 수 있다.
단계(924)에서, 통합된 쉐이더(130)는 픽셀의 데이터에 픽셀-당 효과를 적용할 수 있다.
단계(926)에서, 쉐이더 프로세서(100)의 레스터 오퍼레이터는 픽셀의 데이터에 기반하여 레스터 이미지를 생성할 수 있다.
쉐이더 프로세서(100)는 복수 개의 파이프라인 스테이지들을 통해 버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 실행할 수 있다. 즉, 복수 개의 파이프라인 스테이지들을 통해 단계들(912, 914, 916, 922, 924 및 926)는 병렬로 수행될 수 있다. 복수 개의 파이프라인 스테이지들은 각각 할당된 버텍스 쉐이더 테스크 또는 픽셀 쉐이더 테스크를 처리할 수 있다.
앞서 도 1 내지 도 8을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100: 쉐이더 프로세서
210: 잡 관리부
220: 타일 디스패치부
203: 타일 비닝부

Claims (18)

  1. 버텍스 쉐이더 및 픽셀 쉐이더로서 동작하는 적어도 하나의 쉐이더 프로세서; 및
    버텍스 쉐이더 테스크 및 픽셀 쉐이더 테스크를 상기 적어도 하나의 쉐이더 프로세서에게 할당하는 잡(job) 관리부
    를 포함하고,
    상기 적어도 하나의 쉐이더 프로세서는 각각 상기 할당된 버텍스 쉐이더 테스크 및 상기 할당된 픽셀 쉐이더 테스크를 인터리빙하여 실행하는, 그래픽 처리 장치
  2. 제1항에 있어서,
    상기 적어도 하나의 쉐이더 프로세서는 각각 복수 개의 파이프라인 스테이지들을 통해 테스크를 처리하며,
    상기 복수 개의 파이프라인 스테이지들은 각각 상기 할당된 버텍스 쉐이더 테스크 또는 상기 할당된 픽셀 쉐이더 테스크를 처리하는, 그래픽 처리 장치.
  3. 제2항에 있어서,
    상기 적어도 하나의 쉐이더 프로세서는 각각
    버텍스의 데이터를 읽어 오는 버텍스 로더;
    객체의 데이터에 기반하여 상기 객체가 포함하는 픽셀의 데이터를 생성하는 프래그먼트 제네레이터;
    상기 버텍스의 데이터에 기반하여 상기 버텍스의 3차원 위치를 2차원 좌표 및 깊이 값으로 변환함으로써 변환된 버텍스의 데이터를 생성하고, 상기 픽셀의 데이터에 픽셀-당 효과를 적용하는 통합된 쉐이더;
    상기 변환된 버텍스의 데이터 데이터에 기반하여 프리미티브를 생성하는 프리미티브 어셈블리; 및
    상기 픽셀의 데이터에 기반하여 레스터 이미지를 생성하는 레스터 오퍼레이터
    를 포함하고,
    상기 복수 개의 파이프라인 스테이지들은 각각 상기 버텍스 로더, 상기 프래그먼트 제네레이터, 상기 통합된 쉐이더, 상기 프리미티브 어셈블리 및 상기 레스터 오퍼레이터 중 하나 이상에 의해 제공되는, 그래픽 처리 장치.
  4. 제1항에 있어서,
    상기 버텍스 쉐이더 테스크는 드로우콜(drawcall) 단위로 분할된 테스크이고, 상기 픽셀 쉐이더 테스크는 타일(tile) 단위로 분할된 테스크인, 그래픽 처리 장치.
  5. 제1항에 있어서,
    타일 내에 있는 객체에 대한 데이터를 상기 적어도 하나의 쉐이더 프로세서로 전송하는 타일 디스패치부
    를 더 포함하는, 그래픽 처리 장치.
  6. 제1항에 있어서,
    프레임을 타일들로 분리하는 타일 비닝(binning)부를 더 포함하는, 그래픽 처리 장치.
  7. 제1항에 있어서,
    상기 잡 관리부는 상기 적어도 하나의 쉐이더 프로세서의 상태를 저장하는 적어도 하나의 슬롯부를 관리하며,
    상기 적어도 하나의 슬롯부는 상기 적어도 하나의 쉐이더 프로세서가 실행하고 있는 테스크의 종류를 기록하는, 그래픽 처리 장치.
  8. 잡 관리부가 버텍스 쉐이더 테스크를 쉐이더 프로세서에게 할당하는 단계;
    상기 잡 관리부가 픽셀 쉐이더 테스크를 상기 쉐이더 프로세서에게 할당하는 단계; 및
    상기 쉐이더 프로세서가 상기 할당된 버텍스 쉐이더 테스크 및 상기 할당된 픽셀 쉐이더 테스크를 인터리빙하여 실행하는 단계
    를 포함하는, 그래픽 처리 방법.
  9. 제8항에 있어서,
    상기 쉐이더 프로세서는 복수 개의 파이프라인 스테이지들을 통해 테스크를 처리하며,
    상기 복수 개의 파이프라인 스테이지들은 각각 상기 할당된 버텍스 쉐이더 테스크 또는 상기 할당된 픽셀 쉐이더 테스크를 처리하는, 그래픽 처리 방법.
  10. 제8항에 있어서,
    상기 실행하는 단계는,
    상기 쉐이더 프로세서의 버텍스 로더가 버텍스의 데이터를 읽어 오는 단계;
    상기 쉐이더 프로세서의 통합된 쉐이더가 상기 버텍스의 데이터에 기반하여 상기 버텍스의 3차원 위치를 2차원 좌표 및 깊이 값으로 변환함으로써 변환된 버텍스의 데이터를 생성하는 단계;
    상기 쉐이더 프로세서의 프리미티브 어셈블리가 상기 변환된 버텍스의 데이터에 기반하여 프리미티브를 생성하는 단계;
    상기 쉐이더 프로세서의 프래그먼트 제네레이터가 객체의 데이터에 기반하여 상기 객체가 포함하는 픽셀의 데이터를 생성하는 단계;
    상기 통합된 쉐이더가 상기 픽셀의 데이터에 픽셀-당 효과를 적용하는 단계; 및
    상기 쉐이더 프로세서의 레스터 오퍼레이터가 상기 픽셀의 데이터에 기반하여 레스터 이미지를 생성하는 단계
    를 포함하는, 그래픽 처리 방법.
  11. 제8항에 있어서,
    상기 쉐이더 프로세서는 복수 개이고,
    상기 버텍스 쉐이더 테스크를 쉐이더 프로세서에게 할당하는 단계는,
    상기 잡 관리부가 상기 복수 개의 쉐이더 프로세서들 중 버텍스 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 선택하는 단계; 및
    상기 잡 관리부가 상기 버텍스 쉐이더 테스크를 상기 선택된 쉐이더 프로세서에게 할당하는 단계
    를 포함하는, 그래픽 처리 방법.
  12. 제11항에 있어서,
    상기 버텍스 쉐이더 게열의 테스크를 쉐이더 프로세서에게 할당하는 단계는,
    상기 잡 관리부가 상기 복수 개의 쉐이더 프로세서들의 상태에 대한 정보를 체크함으로써 상기 복수 개의 쉐이더 프로세서들 중 버텍스 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 식별하는 단계; 및
    상기 잡 관리부가 상기 선택된 쉐이더 프로세서의 상태에 대한 정보를 버텍스 쉐이더 테스크를 처리하고 있는 것으로 변경하는 단계
    를 더 포함하는, 그래픽 처리 방법.
  13. 제8항에 있어서,
    상기 쉐이더 프로세서는 복수 개이고,
    상기 픽셀 쉐이더 테스크를 상기 쉐이더 프로세서에게 할당하는 단계는,
    상기 잡 관리부가 상기 복수 개의 쉐이더 프로세서들 중 픽셀 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 선택하는 단계; 및
    상기 잡 관리부가 상기 버텍스 쉐이더 게열의 테스크를 상기 선택된 쉐이더 프로세서에게 할당하는 단계
    를 포함하는, 그래픽 처리 방법.
  14. 제14항에 있어서,
    상기 픽셀 쉐이더 테스크를 상기 쉐이더 프로세서에게 할당하는 단계는,
    상기 잡 관리부가 상기 복수 개의 쉐이더 프로세서들의 상태에 대한 정보를 체크함으로써 상기 복수 개의 쉐이더 프로세서들 중 픽셀 쉐이더 테스크를 처리하고 있지 않은 쉐이더 프로세서를 식별하는 단계; 및
    상기 잡 관리부가 상기 선택된 쉐이더 프로세서의 상태에 대한 정보를 적어도 픽셀 쉐이더 테스크를 처리하고 있는 것으로 변경하는 단계
    를 더 포함하는, 그래픽 처리 방법.
  15. 제8항 내지 제14항 중 어느 한 항의 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
  16. 버텍스의 데이터를 읽어 오는 버텍스 로더;
    객체의 데이터에 기반하여 상기 객체가 포함하는 픽셀의 데이터를 생성하는 프래그먼트 제네레이터;
    상기 버텍스의 데이터에 기반하여 상기 버텍스의 3차원 위치를 2차원 좌표 및 깊이 값으로 변환함으로써 변환된 버텍스의 데이터를 생성하고, 상기 픽셀의 데이터에 픽셀-당 효과를 적용하는 통합된 쉐이더;
    상기 변환된 버텍스의 데이터 데이터에 기반하여 프리미티브를 생성하는 프리미티브 어셈블리; 및
    상기 픽셀의 데이터에 기반하여 레스터 이미지를 생성하는 레스터 오퍼레이터
    를 포함하는, 쉐이더 프로세서.
  17. 제16항에 있어서,
    상기 쉐이더 프로세서는,
    복수 개의 파이프라인 스테이지들을 통해 테스크를 처리하며,
    상기 복수 개의 파이프라인 스테이지들은 각각 버텍스 쉐이더 테스크 또는 픽셀 쉐이더 테스크를 처리하는, 쉐이더 프로세서.
  18. 제18항에 있어서,
    상기 복수 개의 파이프라인 스테이지들은 각각 상기 버텍스 로더, 상기 프래그먼트 제네레이터, 상기 통합된 쉐이더, 상기 프리미티브 어셈블리 및 상기 레스터 오퍼레이터 중 하나 이상에 의해 제공되는, 쉐이더 프로세서.
KR1020120046930A 2012-05-03 2012-05-03 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법 KR20130123645A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120046930A KR20130123645A (ko) 2012-05-03 2012-05-03 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법
US13/835,281 US20130293546A1 (en) 2012-05-03 2013-03-15 Dynamic load balancing apparatus and method for graphic processing unit (gpu)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120046930A KR20130123645A (ko) 2012-05-03 2012-05-03 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20130123645A true KR20130123645A (ko) 2013-11-13

Family

ID=49512183

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120046930A KR20130123645A (ko) 2012-05-03 2012-05-03 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법

Country Status (2)

Country Link
US (1) US20130293546A1 (ko)
KR (1) KR20130123645A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180054814A (ko) * 2015-09-23 2018-05-24 퀄컴 인코포레이티드 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭
US10140755B2 (en) 2015-07-28 2018-11-27 Samsung Electronics Co., Ltd. Three-dimensional (3D) rendering method and apparatus

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9589311B2 (en) * 2013-12-18 2017-03-07 Intel Corporation Independent thread saturation of graphics processing units
US9928564B2 (en) 2014-06-26 2018-03-27 Intel Corporation Efficient hardware mechanism to ensure shared resource data coherency across draw calls
KR102263326B1 (ko) 2014-09-18 2021-06-09 삼성전자주식회사 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법
KR20160047317A (ko) * 2014-10-22 2016-05-02 삼성전자주식회사 하이브리드 렌더링 장치 및 방법
US10403025B2 (en) 2015-06-04 2019-09-03 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
US10089775B2 (en) * 2015-06-04 2018-10-02 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
US20170236318A1 (en) * 2016-02-15 2017-08-17 Microsoft Technology Licensing, Llc Animated Digital Ink
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
CN106776023B (zh) * 2016-12-12 2021-08-03 中国航空工业集团公司西安航空计算技术研究所 一种自适应gpu统一染色阵列任务负载均衡方法
KR102651127B1 (ko) * 2016-12-15 2024-03-26 삼성전자주식회사 처리 장치 및 데이터를 처리하는 방법
CN107066239A (zh) * 2017-03-01 2017-08-18 智擎信息系统(上海)有限公司 一种实现卷积神经网络前向计算的硬件结构
CN108122190B (zh) * 2017-12-06 2021-06-01 中国航空工业集团公司西安航空计算技术研究所 一种gpu统一染色阵列顶点染色任务属性数据组装方法
US10997771B2 (en) 2018-08-29 2021-05-04 Intel Corporation Position-based rendering apparatus and method for multi-die/GPU graphics processing
US10733693B2 (en) * 2018-12-04 2020-08-04 Intel Corporation High vertex count geometry work distribution for multi-tile GPUs
CN110333945A (zh) * 2019-05-09 2019-10-15 成都信息工程大学 一种动态负载均衡方法、系统及终端
US11295507B2 (en) * 2020-02-04 2022-04-05 Advanced Micro Devices, Inc. Spatial partitioning in a multi-tenancy graphics processing unit
CN112991143A (zh) * 2021-05-06 2021-06-18 南京芯瞳半导体技术有限公司 一种图元装配的方法、装置及计算机存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070279421A1 (en) * 2006-05-30 2007-12-06 Andrew Gruber Vertex Shader Binning
US20090147017A1 (en) * 2007-12-06 2009-06-11 Via Technologies, Inc. Shader Processing Systems and Methods
US20100122067A1 (en) * 2003-12-18 2010-05-13 Nvidia Corporation Across-thread out-of-order instruction dispatch in a multithreaded microprocessor
US20100123717A1 (en) * 2008-11-20 2010-05-20 Via Technologies, Inc. Dynamic Scheduling in a Graphics Processor
KR20100089896A (ko) * 2007-11-30 2010-08-12 콸콤 인코포레이티드 그래픽 시스템에서 2차 프로세서를 이용하기 위한 시스템 및 방법
US8087029B1 (en) * 2006-10-23 2011-12-27 Nvidia Corporation Thread-type-based load balancing in a multithreaded processor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9589310B2 (en) * 2009-10-07 2017-03-07 Nvidia Corporation Methods to facilitate primitive batching
US9390539B2 (en) * 2009-11-04 2016-07-12 Intel Corporation Performing parallel shading operations
CN102682465B (zh) * 2011-02-14 2015-09-02 宏达国际电子股份有限公司 3d格式转换系统和方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100122067A1 (en) * 2003-12-18 2010-05-13 Nvidia Corporation Across-thread out-of-order instruction dispatch in a multithreaded microprocessor
US20070279421A1 (en) * 2006-05-30 2007-12-06 Andrew Gruber Vertex Shader Binning
US8087029B1 (en) * 2006-10-23 2011-12-27 Nvidia Corporation Thread-type-based load balancing in a multithreaded processor
KR20100089896A (ko) * 2007-11-30 2010-08-12 콸콤 인코포레이티드 그래픽 시스템에서 2차 프로세서를 이용하기 위한 시스템 및 방법
US20090147017A1 (en) * 2007-12-06 2009-06-11 Via Technologies, Inc. Shader Processing Systems and Methods
US20100123717A1 (en) * 2008-11-20 2010-05-20 Via Technologies, Inc. Dynamic Scheduling in a Graphics Processor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10140755B2 (en) 2015-07-28 2018-11-27 Samsung Electronics Co., Ltd. Three-dimensional (3D) rendering method and apparatus
KR20180054814A (ko) * 2015-09-23 2018-05-24 퀄컴 인코포레이티드 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭

Also Published As

Publication number Publication date
US20130293546A1 (en) 2013-11-07

Similar Documents

Publication Publication Date Title
KR20130123645A (ko) 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법
CN112085658B (zh) 用于非均匀帧缓冲器栅格化的装置和方法
US10032242B2 (en) Managing deferred contexts in a cache tiling architecture
EP2791910B1 (en) Graphics processing unit with command processor
JP5202319B2 (ja) スケーラブルなマルチスレッド型メディア処理アーキテクチャ
US10249016B2 (en) Graphics processing units and methods using cost indications for sets of tiles of a rendering space
US8144149B2 (en) System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
TWI529660B (zh) 使用每像素著色器執行緒的高效超取樣
JP5956770B2 (ja) タイルベースのグラフィックスシステム及びこのようなシステムの動作方法
JP6294565B2 (ja) グラフィックス処理において使用するためのシェーダプログラム実行技法
KR101799978B1 (ko) 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치
CN108305313B (zh) 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法
KR102545176B1 (ko) 레지스터 관리 방법 및 장치
US11263798B2 (en) Multi-rendering in graphics processing units using render progression checks
KR100864998B1 (ko) 명령 전송 제어 장치 및 명령 전송 제어 방법
US8212825B1 (en) System and method for geometry shading
TWI633516B (zh) 曲面細分及幾何著色器的功率效率屬性處理
GB2595025A (en) Rendering tasks using render progression checks
US20240104685A1 (en) Device and method of implementing subpass interleaving of tiled image rendering
CN117934260A (zh) 渲染方法、图块分配装置、图形处理设备及计算设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application