KR102649351B1 - 세분화된 상태들에 기초한 그래픽스 프로세서 및 그래픽스 처리 방법 - Google Patents
세분화된 상태들에 기초한 그래픽스 프로세서 및 그래픽스 처리 방법 Download PDFInfo
- Publication number
- KR102649351B1 KR102649351B1 KR1020180135326A KR20180135326A KR102649351B1 KR 102649351 B1 KR102649351 B1 KR 102649351B1 KR 1020180135326 A KR1020180135326 A KR 1020180135326A KR 20180135326 A KR20180135326 A KR 20180135326A KR 102649351 B1 KR102649351 B1 KR 102649351B1
- Authority
- KR
- South Korea
- Prior art keywords
- sub
- state
- units
- states
- calculation unit
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims description 11
- 230000004044 response Effects 0.000 claims abstract description 27
- 108010001267 Protein Subunits Proteins 0.000 claims abstract description 7
- 238000013507 mapping Methods 0.000 claims description 47
- 238000012545 processing Methods 0.000 description 37
- 230000008859 change Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
복수의 계산(computational) 유닛들을 포함하는 그래픽스 프로세서(graphics processor)는, 본 개시의 예시적 실시예에 따라, 복수의 서브-유닛들 및 복수의 서브-유닛들의 상태들을 저장하는 상태 테이블을 포함하는 제1 계산 유닛, 및 제1 커맨드에 응답하여 상태 테이블을 갱신하고, 제2 커맨드에 응답하여 상태 테이블에 저장된 상태들 중 하나의 상태 조합을 지정하는 상태 매니저를 포함할 수 있고, 상태 테이블은, 복수의 서브-유닛들 중 일부들에 각각 대응하는 복수의 서브-테이블을 포함할 수 있고, 상태 매니저는, 복수의 서브-테이블 각각의 행들 중 하나를 상태 조합으로서 지정할 수 있다.
Description
본 개시의 기술적 사상은 그래픽스 처리에 관한 것으로서, 자세하게는 세분화된 상태들에 기초한 그래픽스 프로세서 및 그래픽스 처리 방법에 관한 것이다.
렌더링(rendering)은 주어진 뷰 포인트에서 3차원(3D) 모델 혹은 2차원(2D) 모델로부터 이미지를 생성하는 과정을 지칭할 수 있다. 컴퓨터 그래픽스에 대한 수요가 증가함에 따라, 렌더링을 가속화하기 위한 전용의 하드웨어로서 그래픽스 처리 시스템이 사용될 수 있다. 그래픽스 처리 시스템을 포함하는 컴퓨팅 시스템에서 렌더링 과정은 그래픽스 파이프라인(graphics pipeline)으로서 지칭될 수 있다.
그래픽스 처리 시스템은 다수의 계산(computational) 유닛들을 포함할 수 있고, 계산 유닛들에 제공되거나 계산 유닛들에 의해서 생성된 데이터를 저장하는 메모리를 포함할 수 있다. 계산 유닛들은 그래픽스 처리 시스템의 외부, 예컨대 호스트로부터 제공된 커맨드에 따라 특정 상태로 설정된 후 동작을 개시할 수 있다. 이에 따라 그래픽스 파이프라인의 성능을 향상시키기 위하여 다수의 계산 유닛들의 상태들을 효율적으로 설정하는 것이 요구될 수 있다.
본 개시의 기술적 사상은, 그래픽스 처리 시스템에 포함된 계산 유닛들의 상태들을 효율적으로 설정함으로써 향상된 성능의 그래픽스 파이프라인을 제공하는 그래픽스 프로세서 및 그래픽스 처리 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따라 복수의 계산(computational) 유닛들을 포함하는 그래픽스 프로세서(graphics processor)는, 복수의 서브-유닛들 및 복수의 서브-유닛들의 상태들을 저장하는 상태 테이블을 포함하는 제1 계산 유닛, 및 제1 커맨드에 응답하여 상태 테이블을 갱신하고, 제2 커맨드에 응답하여 상태 테이블에 저장된 상태들 중 하나의 상태 조합을 지정하는 상태 매니저를 포함할 수 있고, 상태 테이블은, 복수의 서브-유닛들 중 일부들에 각각 대응하는 복수의 서브-테이블을 포함할 수 있고, 상태 매니저는, 복수의 서브-테이블 각각의 행들 중 하나를 상태 조합으로서 지정할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 복수의 계산(computational) 유닛들을 포함하는 그래픽스 프로세서(graphics processor)는, 복수의 서브-유닛들 및 복수의 서브-유닛들의 상태들을 저장하는 상태 테이블을 포함하는 제1 계산 유닛, 및 제1 커맨드에 응답하여 상태 테이블을 갱신하고, 제2 커맨드에 응답하여 상태 테이블에 저장된 상태들 중 하나의 상태 조합을 지정하는 상태 매니저를 포함할 수 있고, 제1 계산 유닛은, 복수의 서브-유닛들 및 상태 테이블의 필드들을 대응시키는 맵핑 테이블을 더 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따라 복수의 계산(computational) 유닛들을 사용하는 그래픽스 처리 방법은, 제1 커맨드에 응답하여, 계산 유닛에 포함된 복수의 서브-유닛들의 상태들을 저장하는 상태 테이블을 갱신하는 단계, 및 제2 커맨드에 응답하여, 상태 테이블에 저장된 상태들 중 하나의 상태 조합을 지정하는 단계를 포함할 수 있고, 상태 조합을 지정하는 단계는, 상태 테이블에 포함된 제1 서브-테이블의 하나의 행을 지정하는 단계, 및 상태 테이블에 포함된 제2 서브-테이블의 하나의 행을 지정하는 단계를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 그래픽스 프로세서 및 그래픽스 처리 방법에 의하면, 그래픽스 프로세서에 포함된 계산 유닛들의 상태들이 효율적으로 설정될 수 있다.
또한, 본 개시의 예시적 실시예에 따른 그래픽스 프로세서 및 그래픽스 처리 방법에 의하면, 계산 유닛들의 상태들을 저장하기 위한 저장 공간이 감소할 수 있고, 이에 따라 그래픽스 프로세서의 비용이 감소하거나 그리고/또는 확보된 공간에 추가적인 계산 유닛들을 배치함으로써 보다 향상된 성능의 그래픽스 프로세서가 달성될 수 있다.
또한, 본 개시의 예시적 실시예에 따른 그래픽스 프로세서 및 그래픽스 처리 방법에 의하면, 계산 유닛들의 상태들을 갱신하기 위한 호스트 및 그래픽 프로세서 사이 트래픽이 감소함으로써 그래픽스 파이프라인의 성능이 현저하게 향상될 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 그래픽스 프로세서를 나타내는 블록도이다.
도 3a 및 도 3b는 비교예시들에 따른 상태 테이블의 예시들을 나타내는 도면들이다.
도 4는 본 개시의 예시적 실시예에 따른 서브-테이블의 예시들을 나타내는 도면이다.
도 5는 본 개시의 예시적 실시예에 따른 서브-테이블의 예시들을 나타내는 도면이다.
도 6은 본 개시의 예시적 실시예에 따른 그래픽스 프로세서를 나타내는 블록도이다.
도 7은 본 개시의 예시적 실시예에 따라 맵핑 테이블의 예시를 나타내는 도면이다.
도 8은 본 개시의 예시적 실시예에 따른 그래픽스 처리 시스템을 나타내는 블록도이다.
도 9는 본 개시의 예시적 실시예에 따른 그래픽스 처리 방법을 시간의 흐름에 따라 나타내는 도면이다.
도 10은 본 개시의 예시적 실시예에 따라 도 9의 단계 S20의 예시를 나타내는 순서도이다.
도 11은 본 개시의 예시적 실시예에 따라 도 9의 단계 S40의 예시를 나타내는 순서도이다.
도 12는 본 개시의 예시적 실시예에 따라 도 9의 단계 S50의 예시를 나타내는 순서도이다.
도 13은 본 개시의 예시적 실시예에 따라 도 9의 단계 S80의 예시를 나타내는 순서도이다.
도 14는 본 개시의 예시적 실시예에 따른 그래픽스 프로세서를 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 그래픽스 프로세서를 나타내는 블록도이다.
도 3a 및 도 3b는 비교예시들에 따른 상태 테이블의 예시들을 나타내는 도면들이다.
도 4는 본 개시의 예시적 실시예에 따른 서브-테이블의 예시들을 나타내는 도면이다.
도 5는 본 개시의 예시적 실시예에 따른 서브-테이블의 예시들을 나타내는 도면이다.
도 6은 본 개시의 예시적 실시예에 따른 그래픽스 프로세서를 나타내는 블록도이다.
도 7은 본 개시의 예시적 실시예에 따라 맵핑 테이블의 예시를 나타내는 도면이다.
도 8은 본 개시의 예시적 실시예에 따른 그래픽스 처리 시스템을 나타내는 블록도이다.
도 9는 본 개시의 예시적 실시예에 따른 그래픽스 처리 방법을 시간의 흐름에 따라 나타내는 도면이다.
도 10은 본 개시의 예시적 실시예에 따라 도 9의 단계 S20의 예시를 나타내는 순서도이다.
도 11은 본 개시의 예시적 실시예에 따라 도 9의 단계 S40의 예시를 나타내는 순서도이다.
도 12는 본 개시의 예시적 실시예에 따라 도 9의 단계 S50의 예시를 나타내는 순서도이다.
도 13은 본 개시의 예시적 실시예에 따라 도 9의 단계 S80의 예시를 나타내는 순서도이다.
도 14는 본 개시의 예시적 실시예에 따른 그래픽스 프로세서를 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템(100)을 나타내는 블록도이다. 컴퓨팅 시스템(100)은 그래픽스 처리 시스템(110)을 포함하는 임의의 컴퓨팅 시스템일 수 있다. 예를 들면, 컴퓨팅 시스템(100)은, 비제한적인 예시로서, 데스크탑 컴퓨터, 서버, 텔레비전 셋탑 박스, 비디오 게임용 콘솔 등과 같은 고정형 컴퓨팅 시스템일 수도 있고, 랩탑 컴퓨터, 모바일 폰, 웨어러블 기기, 휴대형 미디어 플레이어, 태블릿 PC, e-book 리더 등과 같은 휴대형 컴퓨팅 시스템일 수도 있다.
도 1에 도시된 바와 같이, 컴퓨팅 시스템(100)은 그래픽스 처리 시스템(110), 중앙 처리 장치(CPU(120), 시스템 메모리(130) 및 시스템 버스(150)를 포함할 수 있다. 일부 실시예들에서, 컴퓨팅 시스템(100)에 포함된 2이상의 구성요소들은 단일 처리 시스템에 집적될 수 있다. 시스템 버스(150)는, 도 1에 도시된 바와 같이, 그래픽스 처리 시스템(110), 중앙 처리 장치(120) 및 시스템 메모리(130)를 접속시킬 수 있고, 그래픽스 처리 시스템(110), 중앙 처리 장치(120) 및 시스템 메모리(130)는 시스템 버스(150)를 통해서 상호 통신할 수 있다. 일부 실시예들에서, 시스템 메모리(130)는 중앙 처리 장치(120)와 직접 접속될 수도 있다.
중앙 처리 장치(120)는 시스템 메모리(130)에 저장된 일련의 명령어들(또는 프로그램)을 실행할 수 있고, 시스템 메모리(130)에 저장된 데이터를 처리할 수 있다. 또한, 중앙 처리 장치(120)는 그래픽스 파이프라인에서 특정 작업을 그래픽스 처리 시스템(110)이 수행하도록 할 수도 있고, 중앙 처리 장치(120)의 호스트로서 지칭될 수도 있다. 일부 실시예들에서, 중앙 처리 장치(120)는 2이상의 코어를 포함할 수 있다.
시스템 메모리(130)는 중앙 처리 장치(120) 및 그래픽스 처리 시스템(110)에 의해서 처리되기 위한 명령어들 및 데이터를 저장할 수 있다. 시스템 메모리(130)는 정보를 저장하는 임의의 유형의 메모리를 포함할 수 있다. 예를 들면, 시스템 메모리(130)는, 일부 실시예들에서 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), 모바일 DRAM, DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR (Low Power DDR) SDRAM, GDDR (Graphic DDR) SDRAM, RDRAM(Rambus Dynamic Random Access Memory) 등과 같은 휘발성(volatile) 메모리를 포함할 수도 있고, 일부 실시예들에서 EEPROM (non-volatile memory such as a Electrically Erasable Programmable Read-Only Memory), 플래시 메모리(flash memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM (Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM (Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같은 비휘발성(nonvolatile) 메모리를 포함할 수도 있다.
도 1에 도시된 바와 같이, 시스템 메모리(130)는 어플리케이션 프로그램(131), API(Application Program Interface)(132) 및 GPU 드라이버(133)를 포함할 수 있다. 어플리케이션 프로그램(131)은, 예컨대 그래픽스 이미지들의 시퀀스의 형태로, 원하는 결과들을 생성하기 위하여 API(132)에 대한 호출들(calls)을 생성할 수 있다. 어플리케이션 프로그램(131)은 GPU 드라이버(133) 내에서 처리하기 위한 하이-레벨 쉐이딩 프로그램들을 API(132)에 제공할 수도 있다. 하이-레벨 쉐이딩 프로그램들은 그래픽스 처리 시스템(110)에서 하나 이상의 프로그램가능 프로세서(예컨대, 쉐이딩 엔진)을 동작시키도록 디자인된 하이-레벨 프로그래밍 명령어들의 소스 코드를 포함할 수 있다. 일부 실시예들에서, API(132)는 GPU 드라이버(133) 내에 구현될 수도 있다. GPU 드라이버(133)는 하이-레벨 쉐이딩 프로그램들을 쉐이딩 엔진의 유형(예컨대, 정점(vertex), 기하(geometry) 혹은 프래그먼트(fragment))에 최적화된 머신 코드 쉐이딩 프로그램들로 변환(translation)할 수 있다. 본 명세서에서, 중앙 처리 장치(120)가 어플리케이션 프로그램(131), API(132) 및 GPU 드라이버(133) 각각을 실행함으로써 동작하는 것은, 어플리케이션 프로그램(131), API(132) 및 GPU 드라이버(133) 각각이 동작하는 것으로 지칭될 수 있고, 이에 따라 어플리케이션 프로그램(131), API(132) 및 GPU 드라이버(133) 각각이 그래픽스 처리 시스템(110)(또는 그래픽스 프로세서(122))의 호스트로서 지칭될 수도 있다.
그래픽스 처리 시스템(110)은 중앙 처리 장치(120)에 의해서 제공된 명령어들을 수신할 수 있고, 수신된 명령어들을 디스플레이 기기에 이미지들을 렌더링하고 디스플레이하기 위하여 처리할 수 있다. 도 1에 도시된 바와 같이, 그래픽스 처리 시스템(110)은 그래픽스 프로세서(112) 및 메모리(114)를 포함할 수 있고, 그래픽스 처리 서브시스템(subsystem)으로서 지칭될 수도 있다. 그래픽스 프로세서(112) 및 메모리(114)는 버스(예컨대, GPU 버스)를 통해서 상호 접속될 수 있다. 그래픽스 프로세서(112)는 중앙 처리 장치(120)로부터 수신된 명령어들을 처리하는 도중에서 생성된 데이터들을 메모리(114)에 저장할 수 있고, 메모리(114)에 저장된 최종 이미지들을 디스플레이 기기에 디스플레이할 수 있다.
그래픽스 프로세서(그래픽스 처리 장치(Graphics Processing Unit; GPU))(112)는 상태 매니저(112_2) 및 다수의 계산(computational) 유닛들을 포함할 수 있다. 그래픽스 프로세서(112)에 포함된 계산 유닛은, 설정된 상태에 따라 미리 정의된 기능을 수행하도록 디자인된 하드웨어 블록을 지칭할 수 있고, 상태 매니저(112_2)는 호스트로부터 수신되는 커맨드에 기초하여 다수의 계산 유닛들의 상태들을 관리하도록 구성될 수 있다. 예를 들면, 도 1에 도시된 바와 같이, 그래픽스 프로세서(112)는 계산 유닛(112_4)을 포함할 수 있고, 계산 유닛(112_4)은 복수의 서브-유닛들(SU1, SU2 등)을 포함할 수 있다.
상태 매니저(112_2)는 호스트, 즉 중앙 처리 장치(120)로부터 수신된 커맨드에 기초하여 계산 유닛(112_3)의 상태, 즉 계산 유닛(112_3)에 포함된 복수의 서브-유닛들(SU1, SU2 등)의 상태들을 설정할 수 있다. 호스트는 동작의 트리거를 위한 커맨드(예컨대, draw)를 원하는 상태들로 설정된 계산 유닛들에 제공할 수 있고, 계산 유닛들은 설정된 상태들에 따라 미리 정의된 기능들을 수행할 수 있다.
계산 유닛(112_4)은, 도 2를 참조하여 후술되는 바와 같이, 복수의 서브-유닛들(SU1, SU2 등)의 상태들의 조합들을 저장하는 상태 테이블(예컨대, 도 2의 222)을 포함할 수 있다. 복수의 서브-유닛들(SU1, SU2 등)의 상태들이 상태 테이블에 미리 저장될 수 있고, 호스트는 동작의 트리거를 위한 커맨드를 전송시, 계산 유닛(112_4)의 서브-유닛들(SU1, SU2 등)에 설정하고자 하는 상태들의 조합, 즉 상태 조합에 대응하는 식별자를 전송할 수 있고, 이에 따라 계산 유닛(112_3)의 상태가 호스트로부터 그래픽스 프로세서(112)에 빈번하게 전송되는 것이 방지될 수 있다. 상태 테이블의 하나의 행은, 복수의 서브-유닛들(SU1, SU2 등)의 상태들의 조합, 즉 하나의 상태 조합에 대응할 수 있고, 상태 조합은 상태 버전(version)으로서 지칭될 수 있다. 이에 따라, 복수의 행들을 포함하는 상태 테이블은 복수의 상태 버전들을 포함할 수 있다. 그러나, 도 3a 및 도 3b를 참조하여 후술되는 바와 같이, 상태 테이블의 제한된 크기에 기인하여, 계산 유닛에 요구되는 상태 조합들, 즉 상태 버전들의 개수가 증가하거나 상태 조합들 사이 유사도가 높은 경우, 계산 유닛의 상태를 설정하는데 비효율성이 유발될 수 있다.
일부 실시예들에서, 계산 유닛(122_4)의 복수의 서브-유닛들(SU1, SU2 등)의 상태들은 세분화될 수 있다. 예를 들면, 이하에서 도면들을 참조하여 후술되는 바와 같이, 계산 유닛(112_4)의 상태 테이블은, 2이상의 서브-테이블들을 포함할 수 있고, 복수의 서브-유닛들(SU1, SU2 등)의 상태들은 2이상의 서브-테이블들의 행들의 조합으로서 표현될 수 있다. 이에 따라, 계산 유닛(112_4)의 상태, 즉 복수의 서브-유닛들(SU1, SU2 등)의 상태들은 효율적으로 설정될 수 있고, 호스트 및 그래픽스 프로세서(112) 사이에 계산 유닛(112_3)의 상태를 설정하기 위한 트래픽이 감소함으로써, 그래픽스 파이프라인의 성능이 현저하게 개선될 수 있다. 또한, 계산 유닛(112_4)의 상태들을 저장하기 위한 저장 공간, 즉 상태 테이블의 크기가 감소할 수 있고, 이에 따라 그래픽스 프로세서(112)의 면적 및 공정 난이도가 감소하거나 그리고/또는 확보된 면적에 추가적인 계산 유닛들을 배치함으로써 그래픽스 프로세서(112)의 성능이 더욱 향상될 수 있다.
그래픽스 프로세서(112)는, 설정된 상태에 따라 미리 정의된 기능을 수행하는 다수의 기능 유닛들뿐만 아니라, 다수의 쓰레드들(threads)을 동시에 실행 가능한 프로그램가능 프로세서(programmable processor)들을 포함할 수 있다. 프로그램가능한 프로세서들 각각은 다양한 작업들을 수행하도록 프로그램될 수 있고, 일부 멀티프로세서들은, 하나 이상의 프로그램 가능한 쉐이더를 포함하는 쉐이딩 엔진으로서 기능할 수도 있다.
도 2는 본 개시의 예시적 실시예에 따른 그래픽스 프로세서(200)를 나타내는 블록도이다. 구체적으로, 도 2는 그래픽스 프로세서(200)에 포함된 상태 매니저(240) 및 다수의 계산 유닛들 중 하나의 계산 유닛(220)을 도시한다. 도 1을 참조하여 전술된 바와 같이, 상태 매니저(240)는 호스트의 커맨드에 기초하여 계산 유닛(220)의 상태를 설정할 수 있다.
도 2를 참조하면, 계산 유닛(220)은 상태 테이블(222) 및 복수의 서브-유닛들(SU1, SU2,...,SUn)을 포함할 수 있다(n은 1보다 큰 정수). 도 1을 참조하여 전술된 바와 같이, 복수의 서브-유닛들(SU1, SU2,...,SUn) 각각은 특정 상태로 설정될 수 있고, 설정된 상태에 따라 미리 정의된 기능을 수행할 수 있다. 예를 들면, 계산 유닛(220)이 IA(input assembly)를 수행하도록 설계된 경우, 복수의 서브-유닛들(SU1, SU2,...,SUn)은 IA를 수행하기 위한 순차적인 동작들을, 설정된 상태들에 따라 각각 수행할 수 있다. 복수의 서브-유닛들(SU1, SU2,...,SUn)의 상태는, 예컨대 처리할 데이터가 저장된 영역을 가리키는 어드레스 포인터, 결과적인 프리미티브의 속성 등을 포함할 수 있다. 이하에서, IA를 수행하도록 설계된 계산 유닛(220)이 주로 참조될 것이나, 본 개시의 예시적 실시예들이 이에 제한되지 아니하는 점은 이해될 것이다.
상태 테이블(222)은 복수의 서브-유닛들(SU1, SU2,...,SUn)의 상태들을 저장할 수 있다. 상태 테이블(222)은 정보를 저장하기 위한 임의의 구조를 포함할 수 있고, 일부 실시예들에서 SRAM 셀, DRAM 셀, 레지스터, 래치, 플립플롭 등과 같은 휘발성 메모리 소자를 포함할 수 있다. 복수의 서브-유닛들(SU1, SU2,...,SUn)은 상태 테이블(222)에 저장된 복수의 상태 조합들 중 하나로 설정될 수 있다. 도 4 등을 참조하여 후술되는 바와 같이, 상태 테이블(222)은 2이상의 서브-테이블들을 포함할 수 있다. 서브-테이블들은 상이한 서브-유닛들에 각각 대응할 수 있고, 서브-테이블들 각각은 대응되는 서브-유닛들의 상태들을 포함할 수 있다.
상태 매니저(240)는 상태 테이블(222)을 제어할 수 있다. 일부 실시예들에서, 상태 매니저(240)는 호스트(예컨대, 도 1의 120)로부터 수신된 제1 커맨드에 응답하여 상태 테이블(222)을 갱신할 수 있다. 예를 들면, 제1 커맨드는 상태 테이블(222)에 저장될 상태들을 수반할 수 있고, 상태 매니저(240)는 제1 커맨드에 수반된 상태들을 상태 테이블(222)에 저장할 수 있다. 또한, 일부 실시예들에서, 상태 매니저(240)는 호스트로부터 수신된 제2 커맨드에 응답하여 복수의 서브-유닛들(SU1, SU2,...,SUn)을 상태 테이블(222)에 저장된 상태들의 조합들 중 하나로 설정할 수 있다. 이를 위하여, 상태 매니저(240)는 상태 테이블(222)에 포함된 상태 조합들 중 하나를 지정할 수 있다. 전술된 바와 같이, 상태 테이블(222)은 2이상의 서브-테이블들을 포함할 수 있고, 이에 따라 상태 매니저(240)는 2이상의 서브-테이블들 각각의 행을 지정함으로써 상태 조합을 특정할 수 있다. 이에 따라, 도 3a 및 도 3b를 참조하여 후술되는 문제점들이 해소될 수 있고, 복수의 서브-유닛들(SU1, SU2,...,SUn)의 상태들은 효율적으로 설정될 수 있다.
도 3a 및 도 3b는 비교예시들에 따른 상태 테이블의 예시들을 나타내는 도면들이다. 구체적으로, 도 3a 및 도 3b는 하나의 계산 유닛에 포함된 상태 테이블들을 나타낸다. 도 3a의 예시에서 계산 유닛은 4개의 서브-유닛들(SU1 내지 SU4)을 포함하는 것으로 가정되고, 도 3b의 예시에서 계산 유닛은 8개의 서브-유닛들(SU1 내지 SU8)을 포함하는 것으로 가정된다.
도 3a를 참조하면, 상태 테이블은 3개의 상태 버전들을 저장할 수 있는 3개의 행들 및 4개의 서브-유닛들(SU1 내지 SU4)에 각각 대응하는 4개의 필드(field)들을 포함할 수 있고, 호스트에 의해서 상태 버전이 1-2-3-4-1-2-3-4 순으로 변경될 수 있다. 이에 따라, 상태 테이블(T31)과 같이, 4개의 서브-유닛들(SU1 내지 SU4)의 상태들 {A1, B1, C1, D1}에 대응하는 제1 상태 버전(V1)이 추가될 수 있다. 유사하게, 상태 테이블(T32) 및 상태 테이블(T33)과 같이, 상태들 {A2, B2, C2, D2}에 대응하는 제2 상태 버전(V2) 및 상태들 {A3, B3, C3, D3}에 대응하는 제3 상태 버전(V3)이 순차적으로 추가될 수 있다.
상태 테이블(T33)은 3개의 행들을 포함하므로, 후속하는 제4 상태 버전(V4)을 추가하기 위하여, 상태 테이블(T33)에 포함된 제1 상태 버전(V1)이 제4 상태 버전(V4)으로 교체됨으로써 상태 테이블(T34)이 형성될 수 있다. 유사하게, 상태 테이블(T34)에 포함된 제2 상태 버전(V2)이 제1 상태 버전(V1)으로 교체됨으로써 상태 테이블(T35)이 형성될 수 있고, 상태 테이블(T35)에 포함된 제3 상태 버전(V3)이 제2 상태 버전(V2)으로 교체됨으로써 상태 테이블(T36)이 형성될 수 있다. 또한, 상태 테이블(T36)에 포함된 제4 상태 버전(V4)이 제3 상태 버전(V3)으로 교체됨으로써 상태 테이블(T37)이 형성될 수 있고, 상태 테이블(T37)에 포함된 제1 상태 버전(V1)이 제4 상태 버전(V4)으로 교체됨으로써 상태 테이블(T38)이 형성될 수 있다.
도 3a의 예시에서, 상태 테이블(T34)부터 상태 버전이 변경될 때마다 상태 버전의 교체가 발생할 수 있고, 결과적으로 그래픽스 파이프라인의 성능 저하가 발생할 수 있다. 비록 도 3a에 도시된 상태 테이블과 상이하게 4개의 행들을 포함하는 상태 테이블의 경우 도 3a에 도시된 예시의 문제가 발생하지 아니할 수 있으나, 상태 테이블의 크기는 계산 유닛의 크기에 의해서 제한될 수 있고 그래픽스 프로세서(예컨대, 도 1의 110)를 설계하는 과정에서 결정되므로로, 호스트, 예컨대 어플리케이션 프로그램(예컨대, 도 1의 131)에서 사용하는 상태 버전들의 개수에 따라 여전히 동일한 문제가 발생할 수 있다. 이에 따라, 상태 테이블의 크기를 감소시키거나, 주어진 크기의 상태 테이블을 효율적으로 사용하는 것이 요구될 수 있다.
도 3b를 참조하면, 상태 테이블(T39)은 6개의 행들을 포함할 수 있고, 6개의 행들은 6개의 상태 버전들(V1 내지 V6)을 각각 저장할 수 있다. 도 3b에 도시된 바와 같이, 상태 버전들은 하나의 서브-유닛에 대응하는 상태들이 상이하더라도 상이한 상태 버전들로서 상태 테이블(T39)에 포함될 수 있다. 예를 들면, 제1 상태 버전(V1) 및 제2 상태 버전(V2)에서 제2 서브-유닛(SU2)의 상태들 B 및 B'만이 상이할 뿐 다른 서브-유닛들의 상태들은 동일할 수 있다.
도 3b에 도시된 바와 같이, 계산 유닛에 포함된 복수의 서브-유닛들의 상태들은 상이한 빈도로 변경될 수 있다. 예를 들면, IA를 수행하는 계산 유닛의 경우, 처리할 데이터가 저장된 영역을 가리키는 어드레스 포인터는 오브젝트가 변경됨에 따라 빈번하게 변경될 수 있는 한편, 프리미티브의 속성은 상대적으로 빈번하게 변경되지 아니할 수 있다. 유사하게, 도 3b에 도시된 바와 같이, 6개의 상태 버전들(V1 내지 V6)에서, 제1, 제2 및 제3 서브-유닛(SU1, SU2, SU3)은 상대적으로 빈번하게 변경되는 상태들로 설정될 수 있는 한편, 제4 내지 제8 서브-유닛(SU4 내지 SU8)은 상대적으로 빈번하게 변경되지 아니하는 상태들로 설정될 수 있다. 특히, 제4, 제5, 제7 및 제8 서브-유닛(SU4, SU5, SU7, SU8) 각각은 6개의 상태 버전들(V1 내지 V6)에서 일정한 상태로 설정될 수 있다. 이에 따라, 빈번하게 변경되는 상태들로 설정되는 서브-유닛(예컨대, SU1, SU2, SU3)에 대하여 상대적으로 많은 저장 공간을 할당하고, 빈번하게 변경되지 아니하는 상태들로 설정되는 서브-유닛(예컨대, SU4, SU5, SU6, SU7, SU8)에 대하여 상대적으로 적은 저장 공간을 할당하는 경우, 상태 테이블이 효율적으로 사용될 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 서브-테이블의 예시들을 나타내는 도면이다. 구체적으로, 도 4는 하나의 상태 테이블에 포함된 서브-테이블들(ST41, ST42, ST43)을 도시한다. 일부 실시예들에서, 도 4에 도시된 바와 상이하게, 계산 유닛에 포함된 상태 테이블은 2개의 서브-테이블들 또는 3개 초과의 서브-테이블들을 포함할 수도 있다. 도 4에 대한 설명에서, 도 4의 서브-테이블들(ST41, ST42, ST43)은 도 2의 상태 테이블(222)에 포함되는 것으로 가정되고, 도 2의 계산 유닛(220)은 13개의 서브-유닛들(SU1, SU2,...,SU13)을 포함하는 것으로 가정된다. 이하에서 도 4는 도 2를 참조하여 설명될 것이다.
일부 실시예들에서, 상태 테이블은 상이한 서브-유닛들에 각각 대응하는 복수의 서브-테이블들을 포함할 수 있다. 예를 들면, 도 2의 상태 테이블(222)에 포함된 제1, 제2 및 제3 서브-테이블(ST41, ST42, ST43) 중, 제1 서브-테이블(ST41)은 제1 내지 제3 서브-유닛(SU1 내지 SU3)의 상태들을 저장할 수 있고, 제2 서브-테이블(ST42)은 제4 내지 제9 서브-유닛(SU4 내지 SU9)의 상태들을 저장할 수 있으며, 제3 서브-테이블(ST43)은 제10 내지 제13 서브-유닛(SU10 내지 SU13)의 상태들을 저장할 수 있다. 이에 따라, 도 4에 도시된 바와 같이, 제1, 제2 및 제3 서브-테이블(ST41, ST42, ST43)은 상이한 폭들(W1, W2, W3)을 가질 수 있다. 서브-테이블의 폭은 서브-테이블에 대응하는 서브-유닛들의 개수(즉, 필드들의 개수) 및 서브-유닛들 각각의 상태의 크기(즉, 필드의 크기)에 의존할 수 있다.
일부 실시예들에서, 상태 테이블에 포함된 서브-테이블들은 상이한 개수의 행들을 포함할 수 있다. 예를 들면, 제1, 제2 및 제3 서브-테이블(ST41, ST42, ST43)은 상이한 높이들(H1, H2, H3)을 가질 수 있고, 서브-테이블의 높이는 서브-테이블에 포함된 행들의 개수에 의존할 수 있다(H1>H2>H3). 이에 따라, 일부 실시예들에서, 가장 많은 수의 행들을 포함하는 제1 서브-테이블(ST41)에 가장 빈번하게 변경되는 상태들로 설정되는 서브-유닛들이 대응할 수 있는 한편, 가장 적은 수의 행들을 포함하는 제3 서브-테이블(ST43)에 가장 빈번하게 변경되지 아니하는 상태들로 설정되는 서브-유닛들이 대응할 수 있다.
상태 테이블이 복수의 서브-테이블들을 포함하는 경우, 복수의 서브-유닛들의 상태들의 상태 조합을 지정하기 위하여, 복수의 서브-테이블들 각각의 행이 지정될 수 있다. 이에 따라, 도 2를 참조하여 전술된 바와 같이, 제2 커맨드는, 계산 유닛을 지정하는 계산 유닛 식별자 및 서브-테이블들 각각의 행에 대응하는 상태 버전 식별자들을 포함할 수 있다. 도 5를 참조하여 복수의 서브-테이블들을 사용하는 예시가 후술될 것이다.
일부 실시예들에서, 서브-테이블들은 재구성가능(reconfigurable)할 수 있다. 예를 들면, 상태 매니저(240)는 커맨드에 응답하여 서브-테이블들의 개수 및 서브-테이블들 각각의 크기를 결정할 수 있고, 상태 테이블(222)에 할당된 저장 공간 내에서 서브-테이블들이 재구성될 수 있다. 이에 따라, 도 6을 참조하여 후술되는 맵핑 테이블(예컨대, 도 6의 624)과 함께, 상태 테이블(222)은 호스트, 예컨대 어플리케이션 프로그램에 적응적으로 구성될 수 있고, 결과적으로 계산 유닛(220)의 상태 설정의 향상된 효율성에 기인하여 그래픽스 파이프라인의 성능이 개선될 수 있다.
도 5는 본 개시의 예시적 실시예에 따른 서브-테이블의 예시들을 나타내는 도면이다. 구체적으로, 도 5는 도 3b의 상태 테이블(T39)과 동일한 기능을 수행하기 위한 제1 서브-테이블(ST51) 및 제2 서브-테이블(ST52)을 나타낸다. 도 3b를 참조하여 전술된 바와 같이, 도 5의 제1 서브-테이블(ST51) 및 제2 서브-테이블(ST52) 역시 제1 내지 제8 서브-유닛(SU1 내지 SU8)을 포함하는 계산 유닛에 포함될 수 있고, 총괄적으로 하나의 상태 테이블로서 지칭될 수 있다. 이하에서, 도 5는 도 3b를 참조하여 설명될 것이다.
도 5를 참조하면, 제1 서브-테이블(ST51) 및 제2 서브-테이블(ST52)은 상이한 크기들을 가질 수 있다. 즉, 제1 서브-테이블(ST51)은 제1, 제2 및 제3 서브-유닛(SU1, SU2, SU3)에 대응하는 3개의 필드들 및 6개의 행들을 포함할 수 있는 한편, 제2 서브-테이블(ST52)은 제4 내지 제8 서브-유닛(SU4 내지 SU8)에 대응하는 5개의 필드들 및 2개의 행들을 포함할 수 있다. 즉, 도 3b를 참조하여 전술된 바와 같이, 상대적으로 빈번하게 변경되는 제1, 제2 및 제3 서브-유닛(SU1, SU2, SU3)의 상태들은 제1 서브-테이블(ST51)에 저장되는 한편, 상대적으로 빈번하게 변경되지 아니하는 제4 내지 제8 서브-유닛(SU4 내지 SU8)의 상태들은 제2 서브-테이블(ST52)에 저장될 수 있다.
도 3b의 예시와 같이, 단일 테이블로서 상태 테이블을 포함하는 계산 유닛의 상태를 지정하는 제2 커맨드는 Draw(x, y)로 예시될 수 있다. 이 때, x는 계산 유닛 식별자를 나타낼 수 있고, y는 상태 버전 식별자를 나타낼 수 있다. 예를 들면, 도 3b의 상태 테이블(T39)을 포함하는 계산 유닛의 계산 유닛 식별자가 1이고, 제1 내지 제6 상태 버전(V1 내지 V6) 순으로 계산 유닛의 상태들이 설정되는 경우, "Draw(1, V1) -> Draw(1, V2) -> Draw(1, V3) -> Draw(1, V4) -> Draw(1, V5) -> Draw(1, V6)"의 커맨드 시퀀스가 수신될 수 있다.
도 5의 예시와 같이, 2개의 서브-테이블들(ST51, ST52)을 포함하는 상태 테이블을 포함하는 계산 유닛의 상태를 지정하는 제2 커맨드는 Draw(x, y, z)로 예시될 수 있다. 이 때, x는 계산 유닛의 식별자를 나타낼 수 있고, y는 제1 서브-테이블(ST51)에 저장된 상태 버전의 상태 버전 식별자를 나타낼 수 있으며, z는 제2 서브-테이블(ST52)에 저장된 상태 버전의 상태 버전 식별자를 나타낼 수 있다. 도 5의 제1 및 제2 서브-테이블(ST51, ST52)을 포함하는 계산 유닛의 계산 유닛 식별자가 1인 경우, 전술된 커맨드 시퀀스와 동일하게 계산 유닛의 상태를 설정하기 위하여, "Draw(1, V1, V1) -> Draw(1, V2, V1) -> Draw(1, V3, V1) -> Draw(1, V3, V2) -> Draw(1, V5, V1) -> Draw(1, V6, V1)"의 커맨드 시퀀스가 수신될 수 있다. 도3b의 상태 테이블(T39)은 48개의 상태들을 포함하는 반면, 도 5의 제1 서브-테이블(ST51) 및 제2 서브-테이블(ST52)은 총 28개의 상태들을 포함할 수 있고, 이에 따라 도 5에 도시된 바와 같이, 복수의 서브-테이블들을 포함하는 상태 테이블은, 단일 테이블로서 구성된 상태 테이블보다 감소된 크기를 가질 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 그래픽스 프로세서(600)를 나타내는 블록도이다. 구체적으로, 도 6은 그래픽스 프로세서(600)에 포함된 상태 매니저(640) 및 하나의 계산 유닛(620)을 도시한다. 도 2의 그래픽스 프로세서(200)와 비교할 때, 도 6의 그래픽스 프로세서(600)에서 계산 유닛(620)은 맵핑 테이블(624)을 더 포함할 수 있다. 이하에서, 도 6에 대한 설명 중 도 2와 중복되는 내용은 생략될 것이다.
도 6을 참조하면, 계산 유닛(620)은 상태 테이블(622), 맵핑 테이블(624) 및 복수의 서브-유닛들(SU1, SU2,...,SUn)을 포함할 수 있다(n은 1보다 큰 정수). 도 3a를 참조하여 전술된 바와 같이, 복수의 서브-유닛들(SU1, SU2,...,SUn)의 상태들은 호스트, 예컨대 어플리케이션 프로그램(예컨대, 도 1의 131)에 의존할 수 있고, 이에 따라 어플리케이션 프로그램에 따라 빈번하게 변경되는 상태들이 설정되는 서브-유닛이 상이할 수 있다. 예를 들면, 도 3b 및 도 5의 예시들에서, 제1, 제2 및 제3 서브-유닛(SU1, SU2, SU3)에 설정되는 상태들이 빈번하게 변경되고, 제4 내지 제8 서브-유닛(SU4 내지 SU8)에 설정되는 상태들이 빈번하게 변경되지 아니하였으나, 다른 어플리케이션 프로그램에 따른 예시에서는, 제1, 제6 및 제7 서브-유닛(SU1, SU6, SU7)에 설정되는 상태들이 빈번하게 변경되는 한편, 제2 내지 제5 및 제8 서브-유닛(SU2 내지 SU5, SU8)에 설정되는 상태들이 빈번하게 변경되지 아니할 수 있다. 이에 따라, 서브-테이블 및 서브-유닛 사이 가변적인 대응관계를 위하여, 계산 유닛(620)은 맵핑 테이블(624)을 포함할 수 있다.
상태 매니저(640)는 커맨드에 응답하여 상태 테이블(622)뿐만 아니라 맵핑 테이블(624)을 제어할 수 있다. 예를 들면, 상태 매니저(640)는 제3 커맨드에 응답하여 맵핑 테이블(624)을 갱신할 수 있다. 제3 커맨드는 맵핑 테이블(624)에 저장될 맵핑 정보를 수반할 수 있고, 상태 매니저(640)는 제3 커맨드에 수반된 맵핑 정보를 맵핑 테이블(624)에 저장할 수 있다. 맵핑 테이블(624)을 사용하는 예시가 도 7을 참조하여 후술될 것이다.
도 7은 본 개시의 예시적 실시예에 따라 맵핑 테이블의 예시를 나타내는 도면이다. 구체적으로, 도 7은 도 6의 상태 테이블(622)의 예시(622') 및 도 6의 맵핑 테이블(624)의 예시(624')를 나타내고, 도 7에서 계산 유닛(620)은 8개의 서브-유닛들(SU1 내지 SU8)을 포함하는 것으로 가정된다.
도 7에 도시된 바와 같이, 상태 테이블(622')은 제1 및 제2 서브-테이블(ST71, ST72)을 포함할 수 있다. 도해의 편의를 위하여, 도 7에서 제1 및 제2 서브-테이블(ST71, ST72)은 하나의 행에 포함된 상태들만을 도시한다. 도 5의 예시와 같이, 제1 서브-테이블(ST71)은 보다 빈번하게 변경되는 상태들을 위하여 상대적으로 많은 수의 행들을 포함할 수 있는 한편, 제2 서브-테이블(ST72)은 상대적으로 적은 수의 행들을 포함할 수 있다.
도 3b 및 도 5의 예시와 상이하게, 어플리케이션 프로그램에 기인하여, 제1, 제6 및 제7 서브-유닛(SU1, SU6, SU7)에 설정되는 상태들이 빈번하게 변경되는 한편, 제2 내지 제5 및 제8 서브-유닛(SU2 내지 SU5, SU8)에 설정되는 상태들이 빈번하게 변경되지 아니할 수 있다. 이에 따라, 제1, 제6 및 제7 서브-유닛(SU1, SU6, SU7)의 상태들이 제1 서브-테이블(ST71)에 저장되고, 제2 내지 제5 및 제8 서브-유닛(SU2 내지 SU5, SU8)의 상태들이 제2 서브-테이블(ST72)에 저장되는 것이 바람직할 수 있다. 이를 위하여, 맵핑 테이블(624')은 제1, 제6 및 제7 서브-유닛(SU1, SU6, SU7)이 제1 서브-테이블(ST71)에 대응시키고 제2 내지 제5 및 제8 서브-유닛(SU2 내지 SU5, SU8)이 제2 서브-테이블ST72)에 대응시킬 수 있다. 예를 들면, 도 7에서 화살표들로서 도시된 바와 같이, 맵핑 테이블(624')의 엔트리들은 제1 서브-테이블(ST71)의 필드들 및 제2 서브-테이블(ST72)의 필드들과 순차적으로 대응할 수 있는 한편, 맵핑 테이블(624')의 엔트리는 서브-테이블의 필드에 대응하는 서브-유닛의 식별자를 포함할 수 있다.
도 7에 도시된 바와 같이, 제1 서브-테이블(ST71)의 3개 필드들에 대응하는, 맵핑 테이블(624')의 처음 3개 엔트리들은 1, 6, 7의 값들을 각각 포함할 수 있고, 이에 따라 제1 서브-테이블(ST71)의 필드들은 제1, 제6 및 제7 서브-유닛(SU1, SU6, SU7)에 각각 대응할 수 있고, 제1 서브-테이블(ST71)에 저장된 상태들이 제1, 제6 및 제7 서브-유닛(SU1, SU6, SU7)에 설정될 수 있다. 유사하게, 제2 서브-테이블(ST72)의 5개 필드들에 대응하는, 맵핑 테이블(624')의 나머지 5개 엔트리들은 2, 3, 4, 5, 7의 값들을 각각 포함할 수 있고, 이에 따라 제2 서브-테이블(ST72)의 필드들은 제2 내지 제5 및 제8 서브-유닛(SU2 내지 SU5, SU8)에 각각 대응할 수 있고, 제2 서브-테이블(ST72)에 저장된 상태들이 제2 내지 제5 및 제8 서브-유닛(SU2 내지 SU5, SU8)에 설정될 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 컴퓨팅 시스템(800)을 나타내는 블록도이다. 도 8에 도시된 바와 같이, 컴퓨팅 시스템(800)은 그래픽스 프로세서(820), 외부 메모리(840) 및 호스트(860)를 포함할 수 있고, 그래픽스 프로세서(820)는 상태 매니저(822) 및 복수의 계산 유닛들(CU1, CU2,...,CUm)을 포함할 수 있다(m은 1보다 큰 정수). 일부 실시예들에서, 도 8의 그래픽스 프로세서(820), 외부 메모리(840) 및 호스트(860)는 도 1의 그래픽스 프로세서(112), 시스템 메모리(130) 및 중앙 처리 장치(120)에 각각 대응할 수 있다.
호스트(860), 예컨대 GPU 드라이버는 어플리케이션 프로그램의 API에 대한 호출들에 기초하여 그래픽스 프로세서(820)에서 소비할 상태 정보들을 생성할 수 있고, 외부 메모리(840)에 저장할 수 있다. 예를 들면, 외부 메모리(840)는 도 8에 도시된 바와 같이, 제1 계산 유닛(CU1)의 상태 정보를 저장할 수 있다. 외부 메모리(840)는 계산 유닛에 포함되는 서브-유닛의 상태를 저장할 수 있고, 저장된 상태의 레벨 정보, 버전 정보를 추가적으로 저장할 수 있다. 버전 정보는 상태 버전을 나타낼 수 있고, 레벨 정보는 해당 서브-유닛에 설정되는 상태가 변경되는 빈도에 따라 결정될 수 있다. 예를 들면, 도 8에서, 제1 계산 유닛(CU1)의 제1 서브-유닛(SU1)의 상태는 상대적으로 빈번하게 변경될 수 있고, 이에 따라 제1 레벨(L1)로 분류될 수 있는 한편, 제1 계산 유닛(CU1)의 제3 서브-유닛(SU3)의 상태는 상대적으로 빈번하게 변경되지 아니할 수 있고, 이에 따라 제2 레벨(L2)로 분류될 수 있다. 일부 실시예들에서, 레벨 정보는 서브-테이블에 대응할 수 있고, 이에 따라 제1 서브-유닛(SU1)의 상태들은 상대적으로 많은 수의 행들을 포함하는 서브-테이블에 저장될 수 있는 한편, 제3 서브-유닛(SU3)의 상태들은 상대적으로 적은 수의 행들을 포함하는 서브-테이블에 저장될 수 있다.
상태 매니저(822)는 외부 메모리(840)로부터 상태들을 획득할 수 있고, 획득된 상태들을 해당 계산 유닛에 제공할 수 있다. 상태 매니저(822)는 계산 유닛에 제공된 상태들의 레벨 정보 및 버전 정보를 저장할 수 있고, 계산 유닛이 상태 버전에 포함되는 상태를 저장하고 있지 아니하는 경우에만 계산 유닛에 상태를 제공할 수 있다. 예를 들면, 도 8에 도시된 바와 같이, 상태 매니저(822)는 제1 계산 유닛(CU1)의 제1 레벨(L1)에 대하여 버전 정보로서 제1, 제2 및 제3 상태 버전(V1, V2, V3)을 저장할 수 있다. 이에 따라, 상태 매니저(822)는 제1 계산 유닛(CU1)에 포함된 제1 서브-테이블이 제1, 제2 및 제3 상태 버전(V1, V2, V3)이 포함하고 있음을 인식할 수 있고, 이에 기초하여 제1 계산 유닛(CU1)의 상태 테이블을 갱신할 수 있고, 또한 호스트로부터 수신된 커맨드에 응답하여 제1 서브-테이블의 행을 지정할 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 그래픽스 처리 방법을 시간의 흐름에 따라 나타내는 도면이다. 도 9의 그래픽스 프로세서(920)는 도 6의 그래픽스 프로세서(600)의 구성요소들을 포함하는 것으로 가정되고, 이하에서 도 9는 도 6을 참조하여 설명될 것이다.
단계 S10에서, 호스트(940)는 제1 커맨드를 그래픽스 프로세서(920)에 전송할 수 있다. 예를 들면, 제1 커맨드는 상태 테이블(622)에 저장될 상태들을 수반할 수 있고, 상태 테이블(622)의 갱신을 지시할 수 있다. 일부 실시예들에서, 호스트(940)는 그래픽스 프로세서(920)에 포함된 다수의 계산 유닛들에 각각 포함된 다수의 상태 테이블들을 갱신하기 위하여, 복수의 제1 커맨드들을 연속적으로 그래픽스 프로세서(920)에 전송할 수 있다.
단계 S20에서, 그래픽스 프로세서(920)는 상태 테이블을 갱신할 수 있다. 예를 들면, 상태 매니저(640)는 제1 커맨드에 응답하여 계산 유닛(620)의 상태 테이블(622)에 저장된 상태들 중 적어도 일부를 변경함으로써 상태 테이블(622)을 갱신할 수 있다. 도면들을 참조하여 전술된 바와 같이, 상태 테이블(622)은 복수의 서브-테이블들을 포함할 수 있고, 상태 매니저(640)는 제1 커맨드에 응답하여 복수의 서브-테이블들 중 적어도 하나의 서브-테이블만을 갱신할 수도 있다. 단계 S20의 예시는 도 10을 참조하여 후술될 것이다.
단계 S30에서, 호스트(940)는 제2 커맨드를 그래픽스 프로세서(920)에 전송할 수 있다. 예를 들면, 제2 커맨드는 계산 유닛 식별자 및 상태 버전 식별자를 수반할 수 있다. 도 5 등을 참조하여 전술된 바와 같이, 상태 테이블은 복수의 서브-테이블들을 포함할 수 있고, 이에 따라 제2 커맨드는 복수의 상태 버전 식별자들을 수반할 수 있다. 도면들을 참조하여 전술된 바와 같이, 계산 유닛의 상태가 세분화됨으로써 다양한 유리한 효과들이 달성될 수 있다.
단계 S40에서, 그래픽스 프로세서(920)는 상태 조합을 지정하는 동작을 수행할 수 있다. 예를 들면, 상태 매니저(640)는 제2 커맨드에 수반된 상태 버전 식별자에 기초하여 계산 유닛(620)에 포함된 복수의 서브-유닛들(SU1, SU2,...SUn)의 상태들의 조합을 지정할 수 있다. 상태 조합은 복수의 서브-테이블들의 상태 버전들의 조합으로 정의될 수 있고, 상태 매니저(640)는 제2 커맨드에 수반된 상태 버전 식별자에 따라 복수의 서브-테이블들의 상태 버전들을 지정함으로써 상태 조합을 지정할 수 있다. 단계 S40의 예시는 도 11을 참조하여 후술될 것이다. 상태 매니저(640)는 제2 커맨드에 응답하여 상태 조합을 지정한 후 계산 유닛(620)의 동작을 트리거할 수 있고, 계산 유닛(620)은 설정된 상태에 따라 기능을 수행할 수 있다.
단계 S50에서, 호스트(940)는 맵핑 테이블(624)을 생성할 수 있다. 예를 들면, GPU 드라이버(예컨대, 도 1의 133)는 서브-유닛의 상태의 변경 빈도에 기초하여 맵핑 테이블을 생성할 수 있다. GPU 드라이버는 어플리케이션 프로그램에 적응적으로 맵핑 테이블을 생성함으로써 어플리케이션 프로그램에 의한 그래픽스 파이프라인의 성능을 향상시킬 수 있다. 단계 S50의 예시는 도 12를 참조하여 후술될 것이다.
단계 S70에서, 호스트(940)는 제3 커맨드를 그래픽스 프로세서(920)에 전송할 수 있다. 예를 들면, 제3 커맨드는 맵핑 정보를 수반할 수 있고, 맵핑 정보는 계산 유닛(620)의 복수의 서브-유닛들(SU1, SU2,...,SUn) 및 상태 테이블(622)의 필드들(또는 서브-테이블의 필드들)의 대응관계를 정의할 수 있다.
단계 S80에서, 그래픽스 프로세서(920)는 맵핑 테이블(624)을 갱신할 수 있다. 예를 들면, 상태 매니저(640)는 제3 커맨드에 응답하여 맵핑 테이블(624)에 저장된 맵핑 정보의 적어도 일부를 변경함으로써 맵핑 테이블(624)을 갱신할 수 있다. 단계 S80의 예시는 도 13을 참조하여 설명될 것이다.
도 10은 본 개시의 예시적 실시예에 따라 도 9의 단계 S20의 예시를 나타내는 순서도이다. 도 9를 참조하여 전술된 바와 같이, 도 10의 단계 S20'에서 제1 커맨드에 응답하여 상태 테이블을 갱신하는 동작이 수행될 수 있다. 도 10에 도시된 바와 같이, 단계 S20'은 복수의 단계들(S21, S23, S25, S27, S29)을 포함할 수 있다. 일부 실시예들에서, 도 10의 단계 S20'은 도 6의 상태 매니저(640)에 의해서 수행될 수 있다.
단계 S21에서, 제i 계산 유닛(CUi)을 제1 계산 유닛(CU1)으로 설정하는 동작이 수행될 수 있다. 제1 커맨드 수신시 그래픽 프로세서에 포함된 m개의 계산 유닛들 모두에 대하여 상태 테이블의 갱신 여부를 판단하기 위하여(m은 1보다 큰 정수), 초기에 제i 계산 유닛(CUi)이 제1 계산 유닛(CU1)으로 설정될 수 있다(i=1).
단계 S23에서, 제i 계산 유닛(CUi)의 상태가 수신되었는지 여부를 체크하는 동작이 수행될 수 있다. 제i 계산 유닛(CUi)의 상태가 수신된 경우 단계 S25가 후속하여 수행될 수 있다. 다른 한편으로, 제i 계산 유닛(CUi)의 상태가 수신되지 아니한 경우, 단계 S29에서 제i 계산 유닛(CUi)을 다음 계산 유닛(CU(i+1))으로 설정하는 동작이 수행될 수 있고, 단계 S23이 후속하여 수행될 수 있다.
단계 S25에서, 제i 계산 유닛(CUi)의 상태 테이블을 갱신하는 동작이 수행될 수 있다. 제1 커맨드에 따라 상태 테이블에 포함된 일부 서브-테이블들만이 갱신될 수도 있고, 상태 테이블 전체가 갱신될 수도 있다. 예를 들면, 하나의 서브-테이블에 포함된 상태들 각각에 대하여 제1 커맨드에 따른 변경 여부가 판단될 수 있고, 같은 방식으로 상태 테이블에 포함된 모든 서브-테이블들에 대하여 제1 커맨드에 따른 변경 여부를 판단하는 동작이 반복될 수 있다.
단계 S27에서 제i 계산 유닛(CUi)이 제m 계산 유닛(CUm)인지 여부를 체크하는 동작이 수행될 수 있고, 제i 계산 유닛(CUi)이 제m 계산 유닛(CUm)인 경우 단계 S20'은 종료할 수 있는 한편, 제i 계산 유닛(CUi)이 제m 계산 유닛(CUm)과 상이한 경우 단계 S29가 후속하여 수행될 수 있다.
도 11은 본 개시의 예시적 실시예에 따라 도 9의 단계 S40의 예시를 나타내는 순서도이다. 도 9를 참조하여 전술된 바와 같이, 도 11의 단계 S40에서, 상태 조합을 지정하는 동작이 수행될 수 있다. 구체적으로, 도 11의 단계 S40'은 도 5의 예시와 같이, 2개의 서브-테이블들을 포함하는 상태 테이블에서 상태 조합을 지정하는 예시를 나타낸다. 도 11에 도시된 바와 같이, 단계 S40'은 단계 S42 및 단계 S44를 포함할 수 있다. 일부 실시예들에서, 도 11의 단계 S40'은 도 6의 상태 매니저(640)에 의해서 수행될 수 있고, 이하에서 도 11은 도 5 및 도 6을 참조하여 설명될 것이다.
단계 S42에서, 제1 서브-테이블의 하나의 행을 지정하는 동작이 수행될 수 있다. 예를 들면, 상태 매니저(640)는 제1 서브-테이블(ST51)의 6개 행들 중 하나를 지정할 수 있다. 제1 서브-테이블(ST51)은 제1, 제2 및 제3 서브-유닛(SU1, SU2, SU3)의 상태들을 저장하므로, 제1 서브-테이블(ST51)의 하나의 행을 지정함으로써 제1, 제2 및 제3 서브-유닛(SU1, SU2, SU3)의 상태들이 결정될 수 있다.
단계 S44에서, 제2 서브-테이블의 하나의 행을 지정하는 동작이 수행될 수 있다. 예를 들면, 상태 매니저(640)는 제2 서브-테이블(ST52)의 2개 항들 중 하나를 지정할 수 있다. 제2 서브-테이블(ST52)은 제4 내지 제8 서브-유닛(SU4 내지 SU8)의 상태들을 저장하므로, 제2 서브-테이블(ST52)의 하나의 행을 지정함으로써 제4 내지 제8 서브-유닛(SU4 내지 SU8)의 상태들이 결정될 수 있다.
일부 실시예들에서, 상태 테이블이 3개 이상의 서브-테이블들을 포함하는 경우, 단계 S42 및 단계 S44와 유사한 동작이 반복될 수 있다. 이와 같이, 복수의 서브-테이블들을 포함하는 상태 테이블에서, 계산 유닛의 상태는 복수의 서브-테이블들 각각의 행을 지정함으로써 지정될 수 있다. 복수의 서브-유닛들(SU1, SU2,...,SUn)은 상태 매니저(640)에 의해서 지정된 상태들로 각각 설정될 수 있다.
도 12는 본 개시의 예시적 실시예에 따라 도 9의 단계 S50의 예시를 나타내는 순서도이다. 도 9를 참조하여 전술된 바와 같이, 도 12의 단계 S50'에서 맵핑 테이블을 생성하는 동작이 수행될 수 있다. 일부 실시예들에서, 도 12의 단계 S50'은 호스트의 GPU 드라이버(예컨대, 도 1의 133)에 의해서 수행될 수 있다. 도 12에 도시된 바와 같이, 단계 S50'은 단계 S51 및 단계 S53을 포함할 수 있다. 이하에서, 도 12는 도 1을 참조하여 설명될 것이다.
단계 S51에서, 서브-유닛들에 지정되는 상태들을 모니터링하는 동작이 수행될 수 있다. 예를 들면, GPU 드라이버(133)는, 도 8을 참조하여 전술된 바와 같이, 어플리케이션 프로그램(131)의 API(132)에 대한 호출들에 기초하여 그래픽스 프로세서(112)에서 소비할 상태 정보들을 생성할 수 있고, 또한 어플리케이션 프로그램(131)에 의해서 사용되는 상태들이 변경되는 빈도들을 모니터링할 수 있다. 일부 실시예들에서, 단계 S51은 호스트에서 백그라운드로 수행될 수 있고, 예컨대 도 9의 단계 S30과 병렬적으로 수행될 수 있다.
단계 S53에서, 상태의 변경 빈도에 기초하여 맵핑 테이블을 생성하는 동작이 수행될 수 있다. 예를 들면, GPU 드라이버(133)는, 단계 S51의 모니터링 결과에 따라 어떠한 계산 유닛의 상태가 빈번하게 변경되는지 또한 어떠한 서브-유닛의 상태가 빈번하게 변경되는지를 인식할 수 있다. 이에 따라, GPU 드라이버(133)는, 상대적으로 빈번하게 상태가 변경되는 서브-유닛의 상태들이 보다 많은 수의 행들을 포함하는 서브-테이블에 대응되고 상대적으로 빈번하게 상태가 변경되지 아니하는 서브-유닛의 상태들이 보다 적은 수의 행들을 포함하는 서브-테이블에 대응되도록, 맵핑 테이블을 생성할 수 있다.
도 13은 본 개시의 예시적 실시예에 따라 도 9의 단계 S80의 예시를 나타내는 순서도이다. 도 9를 참조하여 전술된 바와 같이, 도 13의 단계 S80'에서 맵핑 정보가 갱신될 수 있다. 도 13에 도시된 바와 같이, 단계 S80'은 복수의 단계들(S81, S82, S83)을 포함할 수 있다. 일부 실시예들에서, 도 13의 단계 S80'은 도 6의 상태 매니저(640)에 의해서 수행될 수 있다. 이하에서, 도 13은 도 6을 참조하여 설명될 것이다.
단계 S81에서, 맵핑 정보가 변경되는지 여부를 판단하는 동작이 수행될 수 있다. 예를 들면, 상태 매니저(640)는 제3 커맨드에 의해서 기존 맵핑 정보가 변경되는지 여부를 판단할 수 있다. 도 13에 도시된 바와 같이, 맵핑 정보의 변경이 없는 경우 단계 S80'은 종료할 수 있는 한편, 맵핑 정보가 변경되는 경우 단계 S82가 후속하여 수행될 수 있다.
단계 S82에서, 현재 동작이 종료되었는지 여부를 판단하는 동작이 수행될 수 있다. 예를 들면, 상태 매니저(640)는 맵핑 테이블(624)에 저장된 종전 맵핑 정보에 따라 복수의 서브-유닛들(SU1, SU2,...,SUn)에서 수행되는 동작이 종료하였는지 여부를 판단할 수 있다. 즉, 상태 매니저(640)는 맵핑 정보의 변경이 발생한 경우, 종전 맵핑 정보에 따른 동작이 종료할 때까지 맵핑 정보의 변경을 대기할 수 있다. 도 13에 도시된 바와 같이, 현재 동작이 종료된 경우, 단계 S85가 후속하여 수행될 수 있다.
단계 S85에서, 맵핑 정보를 저장하는 동작이 수행될 수 있다. 예를 들면, 상태 매니저(640)는 제3 커맨드에 수반한 맵핑 정보를 맵핑 테이블(624)에 저장할 수 있다. 이에 따라, 상태 테이블(622)의 필드들(또는 서브-테이블의 필드들) 및 복수의 서브-유닛들(SU1, SU2,...,SUn)은 이전과 상이하게 대응될 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 그래픽스 프로세서(400)를 나타내는 블록도이다. 도 14에 도시된 바와 같이, 그래픽스 프로세서(400)는 커맨드 프로세서(410), 파이프라인 컨트롤러(430), 프론트-엔드 파이프라인(450), 백-엔드 파이프라인(470) 및 프로그램가능 프로세서(490)를 포함할 수 있다.
커맨드 프로세서(410)는 호스트로부터 커맨드를 수신할 수 있고, 수신된 커맨드를 해석함으로써 파이프라인에서 처리가능한 수준의 커맨드로 변환할 수 있다. 커맨드 프로세서(410)는 변환된 커맨드를 파이프라인 컨트롤러(430)에 제공할 수 있다.
파이프라인 컨트롤러(430)는 커맨드 프로세서(410)로부터 수신된 커맨드로부터 프론트-엔드 파이프라인(450) 및 백-엔드 파이프라인(470)에 필요한 정보를 추출할 수 있고, 추출된 정보에 기초하여 파이프라인 구성(configuration)을 수행할 수 있다. 또한, 파이프라인 컨트롤러(430)는 커맨드 프로세서(410)로부터 수신된 커맨드를 프론트-엔드 파이프라인(450) 및 백-엔드 파이프라인(470)에서 처리가능한 수준의 커맨드로 변환할 수 있고, 변환된 커맨드를 프론트-엔드 파이프라인(450) 및 백-엔드 파이프라인(470)에 제공할 수 있다.
프론트-엔드 파이프라인(450) 및 백-엔드 파이프라인(470)은 복수의 계산 유닛들을 각각 포함할 수 있고, 프로그램가능 프로세서(490)와 상호 통신할 수 있다. 이상에서 도면들을 참조하여 전술된 바와 같이, 계산 유닛은, 복수의 서브-테이블들을 포함하는 상태 테이블을 포함할 수 있고, 이에 따라 효율적으로 상태가 설정될 수 있다. 프로그램가능 프로세서(490)는, 예컨대 어플리케이션 프로그램이 제공하는 쉐이딩 프로그램에 따라 쉐이딩을 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
Claims (10)
- 복수의 계산(computational) 유닛들을 포함하는 그래픽스 프로세서(graphics processor)로서,
복수의 서브-유닛들 및 상기 복수의 서브-유닛들의 상태들을 저장하도록 구성된 상태 테이블을 포함하는 제1 계산 유닛; 및
제1 커맨드에 응답하여 상기 상태 테이블을 갱신하고, 제2 커맨드에 응답하여 상기 상태 테이블에 저장된 상태들 중 하나의 상태 조합을 지정하도록 구성된 상태 매니저를 포함하고,
상기 상태 테이블은, 상기 복수의 서브-유닛들 중 일부들에 각각 대응하는 복수의 서브-테이블들을 포함하고,
상기 복수의 서브-테이블들 각각은, 대응하는 서브-유닛에 대한 상태 조합을 지정하는 행을 포함하고,
상기 상태 매니저는, 상기 복수의 서브-테이블들 각각의 행들 중 하나를 상기 상태 조합으로서 지정하도록 구성된 것을 특징으로 하는 그래픽스 프로세서. - 청구항 1에 있어서,
상기 제2 커맨드는, 계산 유닛의 식별자 및 서브-테이블의 행의 식별자를 포함하는 것을 특징으로 하는 그래픽스 프로세서. - 청구항 1에 있어서,
상기 상태 테이블은, 제1 서브-테이블 및 제2 서브-테이블을 포함하고,
상기 제1 서브-테이블의 크기 및 상기 제2 서브-테이블의 크기는 상이한 것을 특징으로 하는 그래픽스 프로세서. - 청구항 1에 있어서,
상기 제1 계산 유닛은, 상기 복수의 서브-유닛들 및 상기 복수의 서브-테이블들을 대응시키도록 구성된 맵핑 테이블을 더 포함하는 것을 특징으로 하는 그래픽스 프로세서. - 청구항 1에 있어서,
상기 상태 매니저는, 제1 커맨드에 응답하여, 상기 상태 테이블을 재구성함으로써 상기 복수의 서브-테이블들의 크기들을 설정하도록 구성된 그래픽스 프로세서. - 청구항 1에 있어서,
복수의 서브-유닛들 및 상태 테이블을 포함하는 제2 계산 유닛을 더 포함하고,
상기 제1 계산 유닛의 상태 테이블에 포함된 서브-테이블들의 개수 및 상기 제2 계산 유닛의 상태 테이블에 포함된 서브-테이블들의 개수는 상이한 것을 특징으로 하는 그래픽스 프로세서. - 복수의 계산(computational) 유닛들을 포함하는 그래픽스 프로세서(graphics processor)로서,
복수의 서브-유닛들 및 상기 복수의 서브-유닛들의 상태들을 저장하도록 구성된 상태 테이블을 포함하는 제1 계산 유닛; 및
제1 커맨드에 응답하여 상기 상태 테이블을 갱신하고, 제2 커맨드에 응답하여 상기 상태 테이블에 저장된 상태들 중 하나의 상태 조합을 지정하도록 구성된 상태 매니저를 포함하고,
상기 제1 계산 유닛은, 상기 복수의 서브-유닛들 및 상기 상태 테이블의 필드들을 대응시키도록 구성된 맵핑 테이블을 더 포함하는 것을 특징으로 하는 그래픽스 프로세서. - 청구항 7에 있어서,
상기 상태 매니저는, 제3 커맨드에 응답하여 상기 맵핑 테이블을 갱신하도록 구성된 것을 특징으로 하는 그래픽스 프로세서. - 청구항 7에 있어서,
상기 상태 테이블은, 상이한 필드들을 포함하는 제1 서브-테이블 및 제2 서브-테이블을 포함하는 것을 특징으로 하는 그래픽스 프로세서. - 복수의 계산(computational) 유닛들을 포함하는 그래픽스 프로세서(graphics processor)에 의해서 수행되는 그래픽스 처리 방법으로서,
제1 커맨드에 응답하여, 계산 유닛에 포함된 복수의 서브-유닛들의 상태들을 저장하는 상태 테이블을 갱신하는 단계; 및
제2 커맨드에 응답하여, 상기 상태 테이블에 저장된 상태들 중 하나의 상태 조합을 지정하는 단계를 포함하고,
상기 상태 조합을 지정하는 단계는,
상기 상태 테이블에 포함된 제1 서브-테이블의 하나의 행을 지정하는 단계; 및
상기 상태 테이블에 포함된 제2 서브-테이블의 하나의 행을 지정하는 단계를 포함하고,
상기 제1 서브-테이블 및 상기 제2 서브-테이블에서 행은, 대응하는 서브-유닛에 대한 상태 조합을 지정하는 것을 특징으로 하는 그래픽스 처리 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180135326A KR102649351B1 (ko) | 2018-11-06 | 2018-11-06 | 세분화된 상태들에 기초한 그래픽스 프로세서 및 그래픽스 처리 방법 |
CN201910643477.4A CN111145073B (zh) | 2018-11-06 | 2019-07-16 | 基于细分状态的图形处理器和图形处理方法 |
US16/515,445 US11036559B2 (en) | 2018-11-06 | 2019-07-18 | Graphics processor and graphics processing method based on subdivided states |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180135326A KR102649351B1 (ko) | 2018-11-06 | 2018-11-06 | 세분화된 상태들에 기초한 그래픽스 프로세서 및 그래픽스 처리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200052122A KR20200052122A (ko) | 2020-05-14 |
KR102649351B1 true KR102649351B1 (ko) | 2024-03-20 |
Family
ID=70459865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180135326A KR102649351B1 (ko) | 2018-11-06 | 2018-11-06 | 세분화된 상태들에 기초한 그래픽스 프로세서 및 그래픽스 처리 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11036559B2 (ko) |
KR (1) | KR102649351B1 (ko) |
CN (1) | CN111145073B (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060282475A1 (en) | 2005-06-10 | 2006-12-14 | Suermondt Henri J | Identifying characteristics in sets of organized items |
US20080094403A1 (en) | 2003-11-19 | 2008-04-24 | Reuven Bakalash | Computing system capable of parallelizing the operation graphics processing units (GPUs) supported on a CPU/GPU fusion-architecture chip and one or more external graphics cards, employing a software-implemented multi-mode parallel graphics rendering subsystem |
US20180182154A1 (en) | 2016-12-22 | 2018-06-28 | Apple Inc. | Resource Synchronization for Graphics Processing |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070291040A1 (en) * | 2005-01-25 | 2007-12-20 | Reuven Bakalash | Multi-mode parallel graphics rendering system supporting dynamic profiling of graphics-based applications and automatic control of parallel modes of operation |
JP4465598B2 (ja) * | 2004-07-05 | 2010-05-19 | ソニー株式会社 | 集積回路およびその処理制御方法、並びに、プログラム |
US7404056B1 (en) * | 2005-12-07 | 2008-07-22 | Nvidia Corporation | Virtual copying scheme for creating multiple versions of state information |
US7948498B1 (en) * | 2006-10-13 | 2011-05-24 | Nvidia Corporation | Efficient texture state cache |
US8471858B2 (en) * | 2009-06-02 | 2013-06-25 | Qualcomm Incorporated | Displaying a visual representation of performance metrics for rendered graphics elements |
US10169072B2 (en) * | 2009-09-23 | 2019-01-01 | Nvidia Corporation | Hardware for parallel command list generation |
US20110242115A1 (en) * | 2010-03-30 | 2011-10-06 | You-Ming Tsao | Method for performing image signal processing with aid of a graphics processing unit, and associated apparatus |
US9092267B2 (en) | 2011-06-20 | 2015-07-28 | Qualcomm Incorporated | Memory sharing in graphics processing unit |
JP2013196667A (ja) * | 2012-03-23 | 2013-09-30 | Ricoh Co Ltd | 画像処理装置 |
US9563466B2 (en) * | 2013-11-05 | 2017-02-07 | Intel Corporation | Method and apparatus for supporting programmable software context state execution during hardware context restore flow |
US9679346B2 (en) | 2015-06-07 | 2017-06-13 | Apple Inc. | Graphics engine and environment for efficient real time rendering of graphics that are not pre-known |
US9830134B2 (en) | 2015-06-15 | 2017-11-28 | Qualcomm Incorporated | Generating object code from intermediate code that includes hierarchical sub-routine information |
GB2540937B (en) | 2015-07-30 | 2019-04-03 | Advanced Risc Mach Ltd | Graphics processing systems |
KR102482874B1 (ko) | 2015-09-11 | 2022-12-29 | 삼성전자 주식회사 | 렌더링 장치 및 방법 |
KR101752062B1 (ko) | 2015-10-16 | 2017-07-03 | 성균관대학교산학협력단 | 범용 어플리케이션을 그래픽 프로세서에서 구동하기 위한 범용 어플리케이션 분석 장치 및 분석 방법 |
KR102644276B1 (ko) * | 2016-10-10 | 2024-03-06 | 삼성전자주식회사 | 그래픽 처리 장치 및 방법 |
KR101862981B1 (ko) | 2017-02-02 | 2018-05-30 | 연세대학교 산학협력단 | 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법 |
-
2018
- 2018-11-06 KR KR1020180135326A patent/KR102649351B1/ko active IP Right Grant
-
2019
- 2019-07-16 CN CN201910643477.4A patent/CN111145073B/zh active Active
- 2019-07-18 US US16/515,445 patent/US11036559B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080094403A1 (en) | 2003-11-19 | 2008-04-24 | Reuven Bakalash | Computing system capable of parallelizing the operation graphics processing units (GPUs) supported on a CPU/GPU fusion-architecture chip and one or more external graphics cards, employing a software-implemented multi-mode parallel graphics rendering subsystem |
US20060282475A1 (en) | 2005-06-10 | 2006-12-14 | Suermondt Henri J | Identifying characteristics in sets of organized items |
US20180182154A1 (en) | 2016-12-22 | 2018-06-28 | Apple Inc. | Resource Synchronization for Graphics Processing |
Also Published As
Publication number | Publication date |
---|---|
CN111145073A (zh) | 2020-05-12 |
US11036559B2 (en) | 2021-06-15 |
US20200142749A1 (en) | 2020-05-07 |
CN111145073B (zh) | 2024-06-07 |
KR20200052122A (ko) | 2020-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9678666B2 (en) | Techniques to configure a solid state drive to operate in a storage mode or a memory mode | |
DE112013005287B4 (de) | Prozessor mit heterogenen physischen Kernen und in einem Prozessor mit heterogenen physischen Kernen implementiertes Verfahren | |
EP3671651B1 (en) | Primitive block generator for graphics processing systems | |
EP3138006B1 (en) | System and method for unified application programming interface and model | |
US20140359225A1 (en) | Multi-core processor and multi-core processor system | |
US10255650B2 (en) | Graphics processing using dynamic resources | |
US10007605B2 (en) | Hardware-based array compression | |
US11908039B2 (en) | Graphics rendering method and apparatus, and computer-readable storage medium | |
CN103034617A (zh) | 用于实现可重构***配置信息存储的缓存结构和管理方法 | |
CN105144120A (zh) | 基于存储器地址将来自高速缓存行的数据存储到主存储器 | |
EP3846036B1 (en) | Matrix storage method, matrix access method, apparatus and electronic device | |
CN106557436A (zh) | 终端的内存压缩功能使能方法及装置 | |
GB2555929A (en) | Task assembly | |
US10956210B2 (en) | Multi-processor system, multi-core processing device, and method of operating the same | |
CN107451070B (zh) | 一种数据的处理方法和服务器 | |
US20140164688A1 (en) | Soc system and method for operating the same | |
EP2689325B1 (en) | Processor system with predicate register, computer system, method for managing predicates and computer program product | |
US9665399B2 (en) | Power management system, system-on-chip including the same and mobile device including the same | |
KR102649351B1 (ko) | 세분화된 상태들에 기초한 그래픽스 프로세서 및 그래픽스 처리 방법 | |
CN116185377A (zh) | 计算图的优化方法、计算装置及相关产品 | |
US9836401B2 (en) | Multi-core simulation system and method based on shared translation block cache | |
CN102567017B (zh) | 一种osd界面输出的简易实现方法及装置 | |
US8988444B2 (en) | System and method for configuring graphics register data and recording medium | |
US20150042656A1 (en) | Apparatus and method for processing image | |
CN118051261A (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 |