KR102554419B1 - 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치 - Google Patents
프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치 Download PDFInfo
- Publication number
- KR102554419B1 KR102554419B1 KR1020170179801A KR20170179801A KR102554419B1 KR 102554419 B1 KR102554419 B1 KR 102554419B1 KR 1020170179801 A KR1020170179801 A KR 1020170179801A KR 20170179801 A KR20170179801 A KR 20170179801A KR 102554419 B1 KR102554419 B1 KR 102554419B1
- Authority
- KR
- South Korea
- Prior art keywords
- tile
- binning
- graphics data
- current frame
- address
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/40—Analysis of texture
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
Abstract
프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 효율적으로 수행하는 방법 및 장치가 개시된다. 본 개시에 따른 GPU는 현재 프레임에 대한 비닝을 수행함으로써 현재 프레임에 포함되는 복수 개의 타일들 중 제1 타일에 대한 제1 비닝 비트 스트림을 획득하는 타일 비닝부, 이전 프레임에서 제1 타일과 동일한 타일 ID를 갖는 제2 타일에 대한 제2 비닝 비트 스트림 및 제1 비닝 비트 스트림을 이용하여 제1 타일 및 제2 타일이 유사한지 여부를 판단하는 비닝 상관기, 및 제1 타일 및 제2 타일이 유사하다고 판단되는 경우, 타일 ID를 이용하여 제2 타일을 렌더링하는데 이용되었던 제2 그래픽스 데이터를 프리페칭하는 프리페처를 포함할 수 있다.
Description
본 개시의 기술적 사상은 타일 기반 렌더링 방법 및 장치에 관한 것으로, 더욱 상세하게는 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 효율적으로 수행하는 방법 및 장치에 관한 것이다.
3D 그래픽스 API(Application Program Interface) 표준들로는 OpenGL, OpenGL ES 또는 Direct 3 등이 있다. API 표준들은 각 프레임에 대한 렌더링(rendering)을 수행하고, 영상을 표시하는 방법을 포함한다. 각 프레임에 대한 렌더링이 수행될 때, 많은 연산이 수행되며, 많은 전력이 소모된다. 따라서, 렌더링이 수행될 때, 연산량을 줄이고, 메모리에 접속(access)하는 횟수를 줄일 필요가 있다.
본 개시의 기술적 사상이 해결하고자 하는 과제는 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행함으로써 렌더링 성능을 향상시키는 방법을 제공하는 것이다.
또한, 본 개시의 기술적 사상이 해결하고자 하는 다른 과제는 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 GPU(Graphics processing unit)를 제공하는 것이다.
또한, 본 개시의 기술적 사상이 해결하고자 하는 또 다른 과제는 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 GPU 및 CPU(Central processing unit)를 포함하는 시스템 온 칩(System on Chip)을 제공하는 것이다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 GPU에서 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법은, 현재 프레임에 대한 비닝(binning)을 수행함으로써 상기 현재 프레임에 포함되는 복수 개의 타일들 중 제1 타일에 대한 제1 비닝 비트 스트림을 획득하는 단계; 이전 프레임에서 상기 제1 타일과 동일한 타일 ID를 갖는 제2 타일에 대한 제2 비닝 비트 스트림 및 상기 제1 비닝 비트 스트림을 이용하여 상기 제1 타일 및 상기 제2 타일이 유사한지 여부를 판단하는 단계; 상기 제1 타일 및 상기 제2 타일이 유사하다고 판단되는 경우, 상기 타일 ID를 이용하여 상기 제2 타일을 렌더링하는데 이용되었던 제2 그래픽스 데이터를 프리페칭하는 단계; 및 상기 프리페칭된 제2 그래픽스 데이터를 이용하여 상기 현재 프레임을 렌더링하는 단계를 포함할 수 있다.
또한, 본 개시의 기술적 사상의 다른 측면에 따른 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 GPU는, 현재 프레임에 대한 비닝을 수행함으로써 상기 현재 프레임에 포함되는 복수 개의 타일들 중 제1 타일에 대한 제1 비닝 비트 스트림을 획득하는 타일 비닝부; 이전 프레임에서 상기 제1 타일과 동일한 타일 ID를 갖는 제2 타일에 대한 제2 비닝 비트 스트림 및 상기 제1 비닝 비트 스트림을 이용하여 상기 제1 타일 및 상기 제2 타일이 유사한지 여부를 판단하는 비닝 상관기(binning correlator); 상기 제1 타일 및 상기 제2 타일이 유사하다고 판단되는 경우, 상기 타일 ID를 이용하여 상기 제2 타일을 렌더링하는데 이용되었던 제2 그래픽스 데이터를 프리페칭하는 프리페처(prefetcher); 및 상기 프리페칭된 제2 그래픽스 데이터를 이용하여 상기 현재 프레임을 렌더링하는 하나 이상의 프로세서를 포함할 수 있다.
또한, 본 개시의 기술적 사상의 또 다른 측면에 따른 시스템 온 칩은, 상기 시스템 온 칩의 동작을 제어함으로써 어플리케이션을 실행하는 CPU; 및 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 GPU를 포함할 수 있다.
본 개시의 기술적 사상에 따른 타일 기반 렌더링 방법 및 장치는 현재 프레임에 포함되는 임의의 타일을 렌더링을 하는 과정에서 이전 프레임에서 해당 타일과 동일한 타일 ID를 갖는 타일을 렌더링하는데 이용되었던 그래픽스 데이터 중 적어도 일부를 프리페칭함으로써, 효율적인 타일 기반 렌더링을 수행할 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 장치들의 연결관계를 설명하기 위한 도면이다.
도 2는 본 개시의 예시적 실시예에 따른 렌더링 장치의 동작을 설명하기 위한 도면이다.
도 3은 본 개시의 예시적 실시예에 따른 GPU를 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시예에 따른 비닝 비트 스트림을 이용하여 타일간 유사성을 판단하는 과정을 나타내는 예시적인 도면이다.
도 5는 본 개시의 예시적 실시예에 따른 타일에 포함되는 프리미티브를 렌더링하기 위해 이용되는 그래픽스 데이터의 예시를 나타내는 도면이다.
도 6은 본 개시의 예시적 실시예에 따른 텍스처 데이터가 저장되어 있는 메모리 레이아웃의 예시를 나타내는 도면이다.
도 7은 본 개시의 예시적 실시예에 따른 프리페처(prefetcher)가 그래픽스 데이터의 어드레스 정보 및 사이즈 정보를 이용하여 그래픽스 데이터를 트래킹하는 과정의 예시를 나타내는 도면이다.
도 8은 본 개시의 예시적 실시예에 따른 타일 기반 렌더링을 위한 시스템을 나타내는 블록도이다.
도 9는 본 개시의 예시적 실시예에 따른 시스템 온 칩을 나타내는 도면이다.
도 10은 본 개시의 예시적 실시예에 따른 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법을 나타내는 흐름도이다.
도 2는 본 개시의 예시적 실시예에 따른 렌더링 장치의 동작을 설명하기 위한 도면이다.
도 3은 본 개시의 예시적 실시예에 따른 GPU를 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시예에 따른 비닝 비트 스트림을 이용하여 타일간 유사성을 판단하는 과정을 나타내는 예시적인 도면이다.
도 5는 본 개시의 예시적 실시예에 따른 타일에 포함되는 프리미티브를 렌더링하기 위해 이용되는 그래픽스 데이터의 예시를 나타내는 도면이다.
도 6은 본 개시의 예시적 실시예에 따른 텍스처 데이터가 저장되어 있는 메모리 레이아웃의 예시를 나타내는 도면이다.
도 7은 본 개시의 예시적 실시예에 따른 프리페처(prefetcher)가 그래픽스 데이터의 어드레스 정보 및 사이즈 정보를 이용하여 그래픽스 데이터를 트래킹하는 과정의 예시를 나타내는 도면이다.
도 8은 본 개시의 예시적 실시예에 따른 타일 기반 렌더링을 위한 시스템을 나타내는 블록도이다.
도 9는 본 개시의 예시적 실시예에 따른 시스템 온 칩을 나타내는 도면이다.
도 10은 본 개시의 예시적 실시예에 따른 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법을 나타내는 흐름도이다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 개시의 예시적 실시예에 따른 장치들의 연결관계를 설명하기 위한 도면이다.
어플리케이션(100)은 특정한 기능을 수행하도록 설계된 프로그램이다.
어플리케이션(100)은 이지미 처리와 관련된 커맨드들을 디바이스 드라이버(110)로 전송한다. 어플리케이션(100)은 다양한 형태의 커맨드들을 디바이스 드라이버(110)로 전송할 수 있다.
디바이스 드라이버(110)는 어플리케이션(100)으로부터 수신된 커맨드에 따라 그래픽스 렌더링 작업(graphics rendering job)을 렌더링 장치(120)로 출력한다.
렌더링 장치(120)는 그래픽 처리를 수행하는 장치이다. 예를 들어, 렌더링 장치(120)는 GPU(graphic processing unit)일 수 있다. 예를 들어, 렌더링 장치(120)는 도 3의 GPU(300), 도 8의 GPU(800) 또는 도 9의 GPU(930)일 수 있다.
렌더링 장치(120)는 디바이스 드라이버(110)로부터 수신된 그래픽스 렌더링 작업에 따라, 이미지를 생성하고 생성된 이미지를 어플리케이션(100)으로 출력한다.
렌더링 장치(120)는 타일 단위로 렌더링할 수 있다. 타일 기반 렌더링 방법(tile-based rendering method)은 프레임을 복수의 타일들로 분할하고, 타일 단위로 이미지를 생성하는 방법이다.
프레임 버퍼(130)는 프레임에 대한 이미지를 저장한다. 프레임 버퍼(130)는 일종의 메모리이다. 프레임 버퍼(130)는 렌더링 장치(120)로부터 수신되는 이미지를 저장한다.
일부 실시 예에 따른 렌더링 장치(120)는 현재 프레임에 포함되는 임의의 타일을 렌더링을 하는 과정에서 이전 프레임에서 해당 타일과 동일한 타일 ID를 갖는 타일을 렌더링하는데 이용되었던 그래픽스 데이터 중 적어도 일부를 프리페칭함으로써, 효율적인 타일 기반 렌더링을 수행할 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 렌더링 장치의 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 렌더링 장치(120)는 이전 프레임(N-1 frame)을 참조하여 현재 프레임(N frame)을 렌더링할 수 있다. 이전 프레임 및 현재 프레임은 동일 또는 유사한 이미지를 렌더링할 확률이 높으므로, 렌더링 장치(120)는 이전 프레임을 참조하여 현재 프레임을 렌더링할 수 있다. 예를 들어, 렌더링 장치(120)는 현재 프레임의 타일들 중 이전 프레임의 타일과 동일 또는 유사한 타일이 있는 경우, 이전 프레임의 렌더링 결과를 이용하여 현재 프레임을 렌더링할 수 있다.
도 2를 통해 구체적으로 설명하면, 도 2는 이전 프레임과 현재 프레임을 나타내며, 이전 프레임은 현재 프레임 이전에 이미 렌더링이 완료된 프레임이다. 이전 프레임과 현재 프레임은 총 20개의 타일들로 구분될 수 있다. 다만, 20개라는 숫자는 예시에 불과할 뿐 이전 프레임과 현재 프레임은 임의의 적절한 개수의 타일들로 구분될 수 있다. 한편, 동일한 순번의 타일은 동일한 위치의 타일을 나타낸다. 예를 들어, 이전 프레임의 타일 7과 현재 프레임의 타일 7은 동일한 위치의 타일을 나타낸다. 서로 다른 프레임에서 동일한 위치에 대응되는 타일들은 동일한 타일 ID를 가질 수 있다.
이전 프레임을 참조하면, 제1 삼각형(프리미티브 P0)은 타일 0, 타일 1, 타일 2, 타일 5, 타일 6 및 타일 7에 표시되고, 제2 삼각형(프리미티브 P1)은 타일 12, 타일 13, 타일 17 및 타일 18에 표시된다. 현재 프레임을 참조하면, 제1 삼각형(프리미티브 P0)은 타일 0, 타일 1, 타일 2, 타일 5, 타일 6 및 타일 7에 표시되고, 제2 삼각형(프리미티브 P1)은 타일 8, 타일 9, 타일 13 및 타일 14에 표시된다. 이전 프레임과 현재 프레임의 20개의 타일들 중에서, 타일 0 내지 타일 7, 타일 10, 타일 11, 타일 15, 타일 16 및 타일 19는 동일한 이미지를 나타내는 반면, 타일 8, 타일 9, 타일 12 내지 타일 14, 타일 17 및 타일 18은 서로 상이한 이미지를 나타낸다. 다만, 이전 프레임의 타일 13 및 현재 프레임의 타일 13은 동일한 프리미티브를 포함한다는 점에서 서로 유사한 이미지를 나타낸다고 볼 수 있다.
렌더링 장치(120)는 현재 프레임의 타일들 중에서 이전 프레임의 타일과 동일 또는 유사한 이미지를 나타내는 타일을 렌더링하기 위해 이전 프레임의 타일을 렌더링하는 과정에서 생성된 그래픽스 데이터 중 적어도 일부를 이용할 수 있다. 예를 들어, 렌더링 장치(120)는 현재 프레임의 타일 13을 렌더링하기 위해 이전 프레임의 타일 13을 렌더링하기 위해 생성된 그래픽스 데이터 중 프리미티브 P1과 관련된 데이터를 프리페칭할 수 있다. 따라서, 렌더링 장치(120)는 이전 프레임의 타일과 현재 프레임의 타일이 완전히 동일하지 않더라도 유사하기만 하면, 이전 프레임의 타일을 렌더링하는데 이용되었던 그래픽스 데이터 중 적어도 일부를 프리페칭함으로써 현재 프레임에 대한 렌더링 성능을 향상시킬 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 GPU를 나타내는 블록도이다.
도 3를 참조하면, GPU(300)는 타일 비닝부(tiler)(310), 비닝 상관기(binning correlator)(320), 프리페처(prefetcher)(330) 및 하나 이상의 프로세서(340)를 포함할 수 있다. 도 3에 도시된 GPU(300)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, GPU(300)에 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다. 예를 들어, GPU(300)는 스케쥴러(미도시), L1 캐시(미도시) 및 L2 캐시(미도시) 등을 더 포함할 수 있다.
타일 비닝부(310)는 현재 프레임에 대한 비닝(binning)을 수행함으로써 현재 프레임에 포함되는 복수 개의 타일들 중 제1 타일에 대한 제1 비닝 비트 스트림을 획득할 수 있다. 타일 비닝부(310)는 현재 프레임을 적어도 하나의 타일로 분할하고, 분할된 타일들에 대한 비닝을 수행할 수 있다. 비닝이란 타일마다 처리할 프리미티브들의 리스트를 확인하는 과정을 의미할 수 있다. 예를 들어, 타일 비닝부(310)는 타일에 포함되는 프리미티브들을 구별하기 위해 프리미티브들에 번호 또는 ID를 부여할 수 있다. 또한, 타일 비닝부(310)는 도 1의 디바이스 드라이버(110)에 의해 생성된 프리미티브 번호 또는 프리미티브 ID를 수신할 수도 있다.
제1 타일에 대한 비닝이 수행됨에 따라 획득되는 제1 비닝 비트 스트림은 제1 타일에 포함되는 프리미티브들에 대한 정보를 포함할 수 있다. 예를 들어, 제1 비닝 비트 스트림은 제1 타일에 어떤 프리미티브들이 포함되는지에 대한 정보를 포함할 수 있다. 타일 비닝부(310)는 현재 프레임에 대한 비닝의 결과를 메모리(미도시)에 저장할 수 있다. 예를 들어, 타일 비닝부(310)는 제1 비닝 비트 스트림을 메모리에 저장할 수 있다.
메모리는 데이터를 라이트하거나 리드할 수 있는 반도체 장치로서, 고속으로 데이터를 기입하거나 독출할 수 있는 메모리 로서 주로 정적 랜덤 억세스 메모리(Static Random Access Memory;SRAM), 동적 랜덤 억세스 메모리(Dynamic Random Access Memory;DRAM), 래치(Latch), 플립플롭(Flip-Flop), 레지스터(Register) 등과 같은 휘발성 메모리를 의미할 수 있으나, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory; RRAM), 상변화 메모리(Phase-Change Memory; PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory; MRAM), 강유전체 메모리(Ferroelectric Random Access Memory; FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory; STT-RAM) 등과 같은 비휘발성 메모리에도 본 발명의 기술적 사상은 제한되지 않는다.
비닝 상관기(320)는 이전 프레임에서 제1 타일과 동일한 타일 ID를 갖는 제2 타일에 대한 제2 비닝 비트 스트림 및 제1 비닝 비트 스트림을 이용하여 제1 타일 및 제2 타일이 유사한지 여부를 판단할 수 있다. 서로 다른 프레임에 포함되는 제1 타일 및 제2 타일이 동일한 타일 ID를 갖는다는 것은 제1 타일 및 제2 타일이 프레임에서 동일한 위치에 위치함을 의미할 수 있다. 제2 타일에 대한 제2 비닝 비트 스트림은 이전 프레임에 대한 비닝이 수행될 때 생성되어 메모리에 미리 저장되어 있을 수 있다. 제2 비닝 비트 스트림은 제2 타일에 포함되는 프리미티브들에 대한 정보를 포함할 수 있다.
비닝 상관기(320)는 제1 비닝 비트 스트림에 포함되는 비트들의 합 및 제2 비닝 비트 스트림에 포함되는 비트들의 합 간의 차이가 임계값 이하인 경우 제1 타일 및 제2 타일이 유사하다고 판단할 수 있다. 이하 도 4를 참조하여 비닝 비트 스트림을 이용하여 타일간 유사성을 판단하는 과정을 보다 구체적으로 설명한다.
도 4는 본 개시의 예시적 실시예에 따른 비닝 비트 스트림을 이용하여 타일간 유사성을 판단하는 과정을 나타내는 예시적인 도면이다.
도 4를 참조하면, 이전 프레임 및 현재 프레임이 도 2에 도시된 바와 같을 때 이전 프레임 및 현재 프레임에 포함된 타일들 각각의 비닝 비트 스트림, 각각의 비닝 비트 스트림에 포함되는 비트들의 합 및 그에 따른 유사성 판단 결과가 도시되어 있다.
도 4의 표를 참조하면, 현재 프레임(N frame)의 제1 타일 및 이전 프레임(N-1 frame)의 제2 타일의 타일 ID가 Tile 0이고, 제1 삼각형의 프리미티브 ID가 P0, 제2 삼각형의 프리미티브 ID가 P1인 경우 제1 타일의 제1 비닝 비트 스트림은 "10"이고, 제2 타일의 제2 비닝 비트 스트림도 "10"임을 알 수 있다.
비닝 비트 스트림에 포함되는 비트들 각각은 각각의 비트들에 대응되는 프리미티브가 타일에 포함되는지 여부를 나타낼 수 있다. 예를 들어, "1"은 프리미티브가 타일에 포함되는 경우를 의미하고, "0"은 프리미티브가 타일에 포함되지 않는 경우를 의미할 수 있다. 제1 타일은 제1 삼각형(P0)만을 포함하므로, 제1 삼각형(P0)에 대응되는 비트는 "1"이고, 제2 삼각형(P1)에 대응되는 비트는 "0"일 수 있다.
한편, 제1 비닝 비트 스트림에 포함되는 비트들의 합 및 제2 비닝 비트 스트림에 포함되는 비트들의 합 간의 차이가 임계값 이하라는 것은 제1 타일 및 제2 타일이 동일 또는 유사한 개수의 프리미티브들을 포함한다는 것을 의미할 수 있다. 이전 프레임 및 현재 프레임은 유사한 이미지를 렌더링할 확률이 높은 점을 고려할 때, 제1 타일 및 제2 타일이 동일 또는 유사한 개수의 프리미티브들을 포함하는 경우 제2 타일을 렌더링하기 위해 이용되었던 그래픽스 데이터 중 적어도 일부를 제1 타일을 렌더링하기 위해 이용할 수 있을 정도로 제1 타일 및 제2 타일이 유사한 것으로 예측할 수 있다.
예를 들어, 현재 프레임에서 Tile 0의 타일 ID를 갖는 제1 타일의 제1 비닝 비트 스트림에 포함되는 비트들의 합은 1+0=1이고, 이전 프레임에서 Tile 0의 타일 ID를 갖는 제2 타일의 제2 비닝 비트 스트림에 포함되는 비트들의 합도 1+0=1이므로, 제1 비닝 비트 스트림에 포함되는 비트들의 합 및 제2 비닝 비트 스트림에 포함되는 비트들의 합 간의 차이는 1-1=0이다. 일 예에서 임계값을 0이라고 할 때, 제1 비닝 비트 스트림에 포함되는 비트들의 합 및 제2 비닝 비트 스트림에 포함되는 비트들의 합 간의 차이는 임계값 이하이므로, 제1 타일 및 제2 타일은 서로 유사하다고 판단될 수 있다. 실제로 도2 를 참조하면, 제1 타일 및 제2 타일은 동일한 위치를 갖는, 동일한 프리미티브를 포함하는 타일들로서 동일한 이미지를 나타내는 타일임을 확인할 수 있다.
한편, 현재 프레임에서 Tile 13의 타일 ID를 갖는 제3 타일의 제3 비닝 비트 스트림은 "01"이고, 이전 프레임에서 Tile 13의 타일 ID를 갖는 제4 타일의 제4 비닝 비트 스트림은 "01"이다. 제3 비닝 비트 스트림에 포함되는 비트들의 합(0+1=1) 및 제4 비닝 비트 스트림에 포함되는 비트들의 합(0+1=1) 간의 차이(1-1=0)가 임계값 이하이므로, 제3 타일 및 제4 타일도 유사하다고 판단될 수 있다. 실제로 도 2를 참조하면, 제3 타일 및 제 4타일은 완전히 동일한 이미지를 나타내지는 않지만 동일한 프리미티브를 포함하는 타일들로서, 이전 프레임의 제4 타일을 렌더링하기 위해 이용되었던 그래픽스 데이터 중 적어도 일부를 현재 프레임의 제3 타일을 렌더링하기 위해 이용할 수 있을 정도로 유사함을 알 수 있다.
이와 같이, 본 개시의 기술적 사상에 따르면, 이전 프레임에 포함되는 타일이 나타내는 이미지와 현재 프레임에 포함되는 타일이 나타내는 이미지가 완전히 동일하지 않은 경우에도 이전 프레임의 타일 및 현재 프레임의 타일은 서로 유사하다고 판단될 수 있다. 예를 들어, 현재 프레임의 타일에 포함되는 프리미티브의 위치가 이전 프레임의 타일과 비교하여 다소 변경되었다고 하더라도 현재 프레임의 타일을 렌더링하는 과정에서 이전 프레임의 타일을 렌더링하기 위해 이용되었던 그래픽스 데이터의 적어도 일부가 이용될 수 있다. 이 경우 현재 프레임을 렌더링하는 과정에서 이전 프레임의 타일을 렌더링하기 위해 이용되었던 그래픽스 데이터의 적어도 일부를 미리 프리페칭함으로써, 보다 효율적인 타일 기반 렌더링이 수행될 수 있다.
앞의 도 4의 예시에서 임계값은 0으로 가정하였으나, 임계값은 0이 아닌 임의의 적절한 수로 설정될 수 있다. 또한, 앞의 도 2 및 도 4의 예시는 프레임에 포함되는 프리미티브가 2개인 경우를 도시하고 있으나, 프레임에 포함되는 프리미티브의 개수는 상황에 따라 다르게 설정될 수 있다. 앞선 예시에 제한되는 것이 아니다. 한편, 프레임에 포함되는 프리미티브의 개수가 달라짐에 따라 비닝 비트 스트림의 길이가 그에 맞게 조정될 수 있음을 통상의 기술자라면 쉽게 이해할 수 있을 것이다.
다시 도 3으로 돌아와서, 일부 실시예에 따르면, 임계값은 어플리케이션을 시뮬레이션한 결과에 기초하여 고정된 값으로 결정될 수 있다. 다른 실시예에 따르면, 임계값은 GPU(300)에 포함되는 L1 캐시 및 L2 캐시 중 적어도 하나로부터 수신된 캐시 적중률(cache hit rate)에 기초하여 동적으로 조정될 수도 있다. 예를 들어, 수신된 캐시 적중률이 높은 경우 임계값은 더 크게 조정될 수 있고, 반대의 경우 임계값은 더 작게 조정될 수 있다. 다만, 이에 제한되지 않는다.
제1 타일 및 제2 타일이 유사하다고 판단되는 경우, 비닝 상관기(320)는 유사성 판단 결과를 스케쥴러로 전달할 수 있다. 스케쥴러는 타일 단위의 그래픽스 렌더링 작업을 GPU(300)에 포함되는 복수 개의 프로세싱 코어들 각각의 단위로 스케쥴링하는 하드웨어 구성이다. 스케줄러는 타일 단위의 그래픽스 렌더링 작업을 특정 프로세싱 코어로 할당할 때 타일 ID를 프로세싱 코어에 포함되는 프리페처(330)로 전달할 수 있다.
프리페처(330)는 타일 ID를 이용하여 제2 타일을 렌더링하는데 이용되었던 제2 그래픽스 데이터를 프리페칭할 수 있다. 그래픽스 데이터는 타일을 렌더링하는데 이용되는 버텍스 속성(vertex attribute) 데이터, 텍스처(texture) 데이터 및 그래픽스 스테이트(Gstate) 데이터 중 적어도 하나를 포함할 수 있다.
버텍스 속성은 정점의 위치 또는 방향 및 텍스처의 좌표 또는 연결 정보 등을 의미할 수 있다. 텍스처는 3차원 이미지 상의 3차원 오브젝트(object)를 디스플레이용의 2차원 이미지로 렌더링하는 과정에서 오브젝트에 입혀지는 이미지이다. 텍스처는 오브젝트의 세부적인 형태나 질감, 색상 등에 대한 정보를 담고 있을 수 있다. 그래픽스 스테이트는 텍스처의 특성에 대한 정보를 포함할 수 있다.
프리페처(330)는 타일 ID와 매칭된, 제2 그래픽스 데이터의 제2 어드레스 정보 및 제2 사이즈 정보를 이용하여 제2 그래픽스 데이터를 프리페칭할 수 있다. 이전 프레임의 렌더링 과정에서 제2 타일을 렌더링하는데 이용되었던 제2 그래픽스 데이터의 제2 어드레스 정보 및 제2 사이즈 정보는 타일 ID와 매칭되어 미리 저장되어 있을 수 있다. 제2 어드레스 정보는 이전 프레임에서 제2 그래픽스 데이터를 판독하기 위해 메모리에 요청되었던 판독 어드레스(read address)의 시작 주소 및 마지막 주소 중 적어도 하나에 대한 정보를 포함하고, 제2 사이즈 정보는 마지막 주소 및 시작 주소 간의 차이에 기초하여 결정될 수 있다.
프리페처(330)는 제2 그래픽스 데이터의 제2 어드레스 정보 및 제2 사이즈 정보를 트래킹하기 위한 어드레스 트래커(address tracker)를 포함할 수 있다. 이하 도 5 내지 도 7을 참조하여 프리페처(330)가 이전 프레임의 렌더링 과정에서 제2 그래픽스 데이터의 제2 어드레스 정보 및 제2 사이즈 정보를 트래킹하고, 트래킹된 정보들을 타일 ID와 매칭하여 저장하는 과정에 대해 보다 상세히 설명한다.
도 5는 본 개시의 예시적 실시예에 따른 타일에 포함되는 프리미티브를 렌더링하기 위해 이용되는 그래픽스 데이터의 예시를 나타내는 도면이다.
도 5를 참조하면, 이전 프레임의 특정한 타일(Tile 0)에 포함되는 프리미티브를 렌더링하기 위해 이용되는 그래픽스 데이터 중 텍스처 데이터의 예시가 도시되어 있다. Tile 0의 타일 ID를 갖는 타일은 제1 삼각형을 나타내는 프리미티브 P0를 포함한다. 프리미티브 P0는 제1 텍스처(510) 및 제2 텍스처(520)를 이용하여 렌더링되는 프리미티브이다. 제1 텍스처(510) 및 제2 텍스처(520)에 의해 프리미티브 P0의 세부적인 형태나 질감, 색상 등이 결정될 수 있다.
Tile 0의 타일 ID를 갖는 타일에 대한 작업이 GPU(300)에 포함되는 특정한 프로세싱 코어에 할당되는 경우, 해당 프로세싱 코어는 프리미티브 P0의 렌더링을 위해 이용될 제1 텍스처(510) 데이터 및 제2 텍스처(520) 데이터를 메모리에 요청할 수 있다. 이하 도 6을 참조하여 텍스처 데이터가 저장되어 있는 메모리 레이아웃에 대해 보다 상세히 설명한다.
도 6은 본 개시의 예시적 실시예에 따른 텍스처 데이터가 저장되어 있는 메모리 레이아웃의 예시를 나타내는 도면이다.
도 6을 참조하면, 캐시 메모리(600)에서 프리미티브 P0의 렌더링에 이용되는 제1 텍스처(510) 데이터가 저장되는 장소 및 프리미티브 P1의 렌더링에 이용되는 제2 텍스처(520) 데이터가 저장되는 장소가 도시되어 있다. 도 6을 참조하면, 프로세싱 코어가 프리미티브 P0를 렌더링하는 과정에서 제1 텍스처(510) 데이터 및 제2 텍스처(520) 데이터가 저장되는 장소에 대응되는 판독 어드레스들이 무작위 순서로 요청됨을 확인할 수 있다.
예를 들어, 제1 텍스처(510) 데이터는 캐시 메모리(600)에서 0x0800_0000부터 0x0800_01b0까지의 판독 어드레스들에 저장되어 있으나, 프로세싱 코어가 프리미티브 P0를 렌더링하는 과정에서 0x0800_0000부터 0x0800_01b0까지의 판독 어드레스들이 순차적으로 요청되는 것이 아니고, 무작위 순서로 요청된다. 따라서, 프리페처(330)가 이후 프레임들에 대한 렌더링 과정에서 제1 텍스처(510) 데이터를 정확히 프리페칭하기 위해서는 제1 텍스처(510) 데이터가 저장되는 장소가 트래킹되어야 한다. 이하 도 7을 참조하여 프리페처(330)가 그래픽스 데이터의 어드레스 정보 및 사이즈 정보를 이용하여 그래픽스 데이터를 트래킹하는 과정을 보다 상세히 설명한다.
도 7은 본 개시의 예시적 실시예에 따른 프리페처(prefetcher)가 그래픽스 데이터의 어드레스 정보 및 사이즈 정보를 이용하여 그래픽스 데이터를 트래킹하는 과정의 예시를 나타내는 도면이다.
프리페처(330)는 그래픽스 데이터의 어드레스 정보 및 사이즈 정보를 획득하기 위해 요청되는 판독 어드레스들 중 첫번째 어드레스 및 마지막 어드레스를 계속해서 업데이트할 수 있다. 프리페처(330)는 작업이 수행되는 동안 메모리로 요청되는 판독 어드레스들을 특정 사이클 범위 내에서만 업데이트할 수 있고, 모든 사이클에서 업데이트할 수도 있다.
프리페처(330)는 요청되는 판독 어드레스들 중 첫번째 어드레스 및 마지막 어드레스 각각을 업데이트하는 하나 이상의 레지스터를 포함할 수 있다. 작업이 종료되면, 요청된 판독 어드레스들 중 첫번째 어드레스 및 마지막 어드레스에 대한 업데이트가 종료될 수 있고, 제1 텍스처(510) 데이터가 저장되는 장소에 대응되는 시작 주소(710) 및 마지막 주소(720)가 결정될 수 있다. 시작 주소(710)는 첫번째 어드레스를 업데이트하는 레지스터(도 6 및 도 7의 History address#1 first register)가 최종적으로 저장하고 있는 값에 대응되고, 마지막 주소(720)는 마지막 어드레스를 업데이트하는 레지스터(도 6 및 도 7의 History address#1 last register)가 최종적으로 저장하고 있는 값에 대응될 수 있다.
또한, 프리페처(330)는 마지막 주소(720) 및 시작 주소(710) 간의 차이를 이용하여 제1 텍스처(510) 데이터의 사이즈(730)를 결정할 수 있다. 예를 들어, 제1 텍스처(510) 데이터의 사이즈(730)는 마지막 주소(720)인 0x0800_01b0 및 시작 주소(710)인 0x0800_0000의 차이인 0x0800_01b0-0x0800_0000=0x0000_01b0로 결정될 수 있다.
프리페처(330)는 제1 텍스처(510) 데이터의 시작 주소(710) 및 제1 텍스처(510) 데이터의 사이즈(730)를 저장하고, 이후 프레임들의 렌더링 과정에서 제1 텍스처(510)가 이용되는 경우 제1 텍스처(510) 데이터의 시작 주소(710) 및 제1 텍스처(510) 데이터의 사이즈(730)를 이용하여 제1 텍스처(510) 데이터를 프리페칭할 수 있다. 예를 들어, 프리페처(330)는 제1 텍스처(510) 데이터의 시작 주소(710)로부터 제1 텍스처(510) 데이터의 사이즈(730)까지의 판독 어드레스들을 프리페칭함으로써 제1 텍스처(510) 데이터를 프리페칭할 수 있다.
한편, 제1 텍스처(510) 데이터는 기설정된 사이즈 범위 내에서만 트래킹될 수 있다. 예를 들어, 제1 텍스처(510) 데이터는 0x0000_0200의 사이즈 범위 내에서 트래킹될 수 있다. 그래픽스 데이터가 기설정된 사이즈 범위 내에서만 트래킹되므로, 제1 텍스처(510) 데이터 및 제2 텍스처(520) 데이터가 구분되어 트래킹될 수 있다. 그래픽스 데이터가 트래킹되기 위한 사이즈 범위는 도 1의 디바이스 드라이버(110)를 통해 설정될 수 있고, GPU(300) 내의 메모리와 매핑된 레지스터에 저장될 수 있다. 다만, 이에 제한되지 않는다.
앞선 예시에서는 제1 텍스터(510) 데이터에 대해 설명하였으나, 제2 텍스처(520) 데이터에 대해서도 동일한 과정이 적용될 수 있다. 또한, 앞선 예시에서 그래픽스 데이터 중 텍스처 데이터를 예시로 설명하였으나, 다른 종류의 그래픽스 데이터에 대해서도 동일한 과정이 적용될 수 있다.
다시 도 3으로 돌아와서, 하나 이상의 프로세서(340)는 프리페칭된 제2 그래픽스 데이터를 이용하여 현재 프레임을 렌더링할 수 있다. 하나 이상의 프로세서(340)는 그래픽 스테이트 매니저(graphic state manager), 입력 어셈블러(input assembler), CCV(Clip, Cull and Veiwpoint), 래스터라이저(Rasterizer), C/Z ROP(Color/Depth Raster Operation), 쉐이더 코어(Shader core) 및 텍스처 유닛(texture unit) 등을 포함할 수 있다. 그래픽 스테이트 매니저, 입력 어셈블러, CCV, 래스터라이저, C/Z ROP, 쉐이더 및 텍스처 유닛 등은 OpenGL, OpenGL ES 또는 Direct 3 등과 같은 3D 그래픽스 API 표준들에 의해 정의될 수 있다. 이하 도 8을 참조하여 하나 이상의 프로세서(340)의 동작에 대해 보다 상세히 설명할 것이다.
한편, 프리페처(330)는 현재 프레임에서 제1 타일을 렌더링하는데 이용된 제1 그래픽스 데이터의 제1 어드레스 정보 및 제1 사이즈 정보를 타일 ID와 매칭하여 저장할 수 있다. 타일 ID와 매칭되어 저장된 제1 그래픽스 데이터의 제1 어드레스 정보 및 제1 사이즈 정보는 다음 프레임을 렌더링하는데 이용될 수 있다. 프리페처(330)가 현재 프레임에서 제1 타일을 렌더링하는데 이용된 제1 그래픽스 데이터의 제1 어드레스 정보 및 제1 사이즈 정보를 타일 ID와 매칭하여 저장하는 과정에는 도 5 내지 도 7에서 설명한 내용이 동일한 방식으로 적용될 수 있다.
도 3의 타일 비닝부(310), 비닝 상관기(320), 프리페처(330) 및 하나 이상의 프로세서(340)는 하나 또는 복수 개의 프로세서에 의하여 구현될 수 있다. 예를 들어, 타일 비닝부(310), 비닝 상관기(320) 및 하나 이상의 프로세서(340)는 다수의 논리 게이트들의 어레이로 구현될 수 있고, 범용적인 마이크로 프로세서와 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 예를 들어, 프리페처(330)는 그래픽스 데이터의 어드레스 정보 및 사이즈 정보를 저장하기 위한 저장 공간을 포함하는 하나 이상의 레지스터로 구현될 수 있다.
GPU(300)는 현재 프레임에 포함되는 임의의 타일을 렌더링을 하는 과정에서 이전 프레임에서 해당 타일과 동일한 타일 ID를 갖는 타일을 렌더링하는데 이용되었던 그래픽스 데이터 중 적어도 일부를 프리페칭함으로써, 효율적인 타일 기반 렌더링을 수행할 수 있다. 구체적으로, GPU(300)는 이전 프레임의 타일과 현재 프레임의 타일이 완전히 동일하지 않더라도 유사하기만 하면, 이전 프레임의 타일을 렌더링하는데 이용되었던 그래픽스 데이터 중 적어도 일부를 프리페칭함으로써 현재 프레임에 대한 렌더링 성능을 향상시킬 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 타일 기반 렌더링을 위한 시스템을 나타내는 블록도이다.
도 8을 참조하면, 타일 기반 렌더링을 위한 시스템은 GPU(800) 및 DRAM(840)을 포함할 수 있다. GPU(800)는 복수 개의 프로세싱 코어들(GPU Core #0, GPU Core #1 내지 GPU Core #N) 및 스케줄러(820)을 포함할 수 있다. 복수 개의 프로세싱 코어들(GPU Core #0, GPU Core #1 내지 GPU Core #N) 각각은 도 3의 타일 비닝부(310), 비닝 상관기 (320) 및 프리페처(330) 외에 그래픽 스테이트 매니저(811), 입력 어셈블러(812), CCV(813), 래스터라이저(814), C/Z ROP(815), 프레임 버퍼(816), 쉐이더 코어(817), 텍스처 유닛(818), L1 캐시(819), 스케쥴러(820) 및 L2 캐시(830)을 더 포함할 수 있다.
도 8의 그래픽 스테이트 매니저(811), 입력 어셈블러(812), CCV(813), 래스터라이저(814), C/Z ROP(815), 쉐이더 코어(817) 및 텍스처 유닛(818)은 도 3의 하나 이상의 프로세서(340)에 대응될 수 있다. 도 3과 중복되는 설명은 생략한다.
그래픽 스테이트 매니저(811)는 텍스처의 특성에 대한 정보 등을 관리하는 모듈을 의미할 수 있다. 입력 어셈블러(812)는 렌더링 파이프라인의 첫 번째 단계를 수행하는 모듈로서, 어플리케이션으로부터 전달받은 버텍스 버퍼 또는 인덱스 버퍼의 데이터를 판독하고, 점, 선, 삼각형 등으로 구성된 프리미티브들을 조합하여 생성된 데이터를 파이프라인의 다음 단계로 전달할 수 있다.
CCV(813)는 최종적으로 렌더링된 화면에 보여지지 않을 프리미티브들을 제거함으로써, 불필요한 래스터화(Rasterization) 및 프래그먼트 쉐이딩(Fragment shading)이 발생되지 않도록 하는 모듈을 의미할 수 있다.
타일 비닝부(도 8의 Tile Binning)(310)는 타일 기반 렌더링에서 화면에 보여질 프리미티브가 어떠한 타일에 포함되지는지를 비닝 벡터 또는 비닝 비트 스트림으로 표시함으로써 특정 타일을 렌더링할 때 필요한 프리미티브를 결정하는 모듈을 의미할 수 있다.
비닝 상관기(320)는 이전 프레임의 타일에 대한 비닝 비트 스트림 및 현재 프레임의 타일에 대한 비닝 비트 스트림을 이용하여 이전 프레임의 타일 및 현재 프레임의 타일이 유사한지 여부를 판단할 수 있다. 구체적으로, 비닝 상관기(320)는 현재 프레임의 타일에 대한 비닝 비트 스트림에 포함되는 비트들의 합 및 이전 프레임의 타일에 대한 비닝 비트 스트림에 포함되는 비트들의 합 간의 차이가 임계값 이하인 경우 현재 프레임의 타일 및 이전 프레임의 타일이 유사하다고 판단할 수 있다. 비닝 상관기(320)는 이전 프레임의 타일 및 현재 프레임의 타일이 유사하다고 판단되는 경우, 유사성 판단 결과를 스케쥴러(820)로 전달할 수 있다.
스케쥴러(820)는 타일 단위의 그래픽스 렌더링 작업을 GPU(800)에 포함되는 복수 개의 프로세싱 코어들(GPU Core #0, GPU Core #1 내지 GPU Core #N) 각각의 단위로 스케쥴링하는 모듈을 의미할 수 있다. 스케줄러(820)는 타일 단위의 그래픽스 렌더링 작업을 특정 프로세싱 코어(예를 들어, GPU Core #0)로 할당할 때, 타일 단위의 그래픽스 렌더링 작업과 함께 해당 작업에 대응되는 타일 ID를 특정 프로세싱 코어에 포함되는 프리페처(330)로 전달할 수 있다.
프리페처(330)는 이전 프레임의 타일을 렌더링하는데 이용되었던 그래픽스 데이터의 어드레스 정보 및 사이즈 정보를 트래킹하기 위한 어드레스 트래커를 포함할 수 있다. 프리페처(330)는 현재 프레임의 타일을 렌더링하는 과정에서 타일 ID를 이용하여 이전 프레임의 타일을 렌더링하는데 이용되었던 그래픽스 데이터를 프리페칭할 수 있다. 프리페처(330)는 그래픽스 데이터를 프리페칭하기 위해 L1 캐시(819), L2 캐시(830) 및 DRAM(840)을 순차적으로 검색할 수 있다.
래스터라이저(814)는 스캔라인 변환을 수행함으로써 점, 선, 삼각형 등의 벡터 기본 형식을 래스터 이미지로 변환하는 고정 함수 모듈을 의미할 수 있다. 프리미티브의 꼭짓점은 래스터화에 의해 형식이 동일한 클립 공간으로 변환될 수 있다. 래스터라이저(814)의 출력은 쉐이더 코어(817)에 매핑될 수 있다.
C/Z ROP(815)는 색, 깊이, 스텐실 등을 저장하는 버퍼의 기존 데이터에 새롭게 렌더링된 픽셀의 효과를 결합하고, 그 결과로서 생성된 새로운 데이터를 버퍼에 저장하는 모듈을 의미할 수 있다. 프레임 버퍼(816)는 래스터 주사 방식에서 화면에 나타날 영상 정보를 일시적으로 저장하는 기억 장치를 의미할 수 있다.
쉐이더 코어(817)는 꼭짓점에 대한 정보 및 꼭짓점의 물질 특성에 기초하여 픽셀의 색상 값을 결정하는 모듈을 의미할 수 있다. 텍스처 유닛(818)은 도형 또는 면의 단위인 폴리곤의 표면에 2차원 이미지를 적용함으로써 3차원 오브젝트의 입체적 묘사가 가능하게 하는 모듈을 의미할 수 있다. L1 캐시(819) 및 L2 캐시(830)는 DRAM(840) 및 GPU(800) 사이에 있는 고속 버퍼 메모리를 의미할 수 있다.
그래픽 스테이트 매니저(811), 입력 어셈블러(812), CCV(813), 래스터라이저(814), C/Z ROP(815), 쉐이더 코어(817), 텍스처 유닛(818) 및 스케쥴러(820)는 하나 또는 복수 개의 프로세서들로 구현될 수 있다. 예를 들어, 그래픽 스테이트 매니저(811), 입력 어셈블러(812), CCV(813), 래스터라이저(814), C/Z ROP(815), 쉐이더 코어(817), 텍스처 유닛(818) 및 스케쥴러(820)는 다수의 논리 게이트들의 어레이로 구현될 수 있고, 범용적인 마이크로 프로세서와 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다.
도 9는 본 개시의 예시적 실시예에 따른 시스템 온 칩을 나타내는 도면이다.
도 9를 참조하면, 시스템 온 칩(System On Chip; SoC)(900)은 CPU(Central processing unit)(910), 메모리 컨트롤 유닛(920), GPU(930), 모뎀 프로세서(940), IP 블록들(950) 및 이들을 연결하는 버스(960)를 포함할 수 있다. 시스템 온 칩(900)은 기존의 여러 가지 기능을 가진 복잡한 시스템을 하나의 칩으로 구현한 반도체 기술이다. 예를 들어, 시스템 온 칩(900)은 렌더링 시스템의 일종인 모바일 장치에 포함되는 어플리케이션 프로세서(Application processor)에 대응될 수 있다. 모바일 장치는 어플리케이션 프로세서 및 메모리를 포함할 수 있다.
CPU(910)는 시스템 온 칩(900)의 동작을 제어함으로써 어플리케이션을 실행할 수 있다. 예를 들어, CPU(910)는 어플리케이션의 실행을 위해 이미지 데이터가 디스플레이 되도록 제어할 수 있다. 이를 위해 CPU(910)는 이미지 데이터를 저장하고 있는 프레임 버퍼(미도시)로부터 데이터를 독출할 수 있다. 프레임 버퍼는 시스템 온 칩(900) 외부에 위치하는 DRAM에 대응될 수 있으나, 프레임 버퍼는 시스템 온 칩(900) 내부에 임베디드될 수도 있다. GPU(930)는 프레임 버퍼에 이미지 데이터를 제공할 수 있다. GPU(930)는 도 3의 GPU(300) 또는 도 8의 GPU(800)일 수 있다. GPU(930)는 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행할 수 있다.
IP 블록들(950)은 어플리케이션의 실행을 위한 구체적인 동작을 수행할 수 있다. 예를 들어, IP 블록들(950)은 비디오 코덱을 수행하거나, 3D 그래픽을 처리할 수 있다. CPU(910) 및 GPU(930)도 IP 블록으로 지칭될 수 있다. 한편, 어플리케이션 프로세서가 모뎀 통신 기능을 수행함에 따라 ModAP으로 지칭될 수 있는바, 시스템 온 칩(900) 또한 모뎀 프로세서(940)를 이용하여 모뎀 통신 기능을 수행함에 따라 ModAP으로 지칭될 수 있다.
버스(960)에는 소정의 표준 버스 규격을 갖는 프로토콜이 적용될 수 있다. 버스(960)의 표준 규격으로서, ARM(Advanced RISC Machine) 사의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜이 적용될 수 있다. AMBA 프로토콜의 버스 타입에는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), AXI4, ACE(AXI Coherency Extensions) 등이 포함될 수 있다. 이외에도, 소닉사(SONICs Inc.)의 uNetwork 이나 IBM의 CoreConnect, OCP-IP의 오픈 코어 프로토콜(Open Core Protocol) 등 다른 타입의 프로토콜이 적용되어도 무방하다.
도 9의 시스템 온 칩(900)은 전술된 바와 같이 현재 프레임에 포함되는 임의의 타일을 렌더링을 하는 과정에서 이전 프레임에서 해당 타일과 동일한 타일 ID를 갖는 타일을 렌더링하는데 이용되었던 그래픽스 데이터 중 적어도 일부를 프리페칭함으로써, 효율적인 타일 기반 렌더링을 수행할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법을 나타내는 흐름도이다.
도 10을 참조하면, 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법은 도 3, 도 8 및 도 9에 도시된 GPU(300, 800 또는 930)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 내지 도 9의 GPU(300, 800 또는 930)에 관하여 이상에서 기술된 내용은 도 10의 타일 기반 렌더링을 수행하는 방법에도 적용됨을 알 수 있다.
단계 1010에서, GPU는 현재 프레임에 대한 비닝을 수행함으로써 현재 프레임에 포함되는 복수 개의 타일들 중 제1 타일에 대한 제1 비닝 비트 스트림을 획득할 수 있다.
단계 1020에서, GPU는 이전 프레임에서 제1 타일과 동일한 타일 ID를 갖는 제2 타일에 대한 제2 비닝 비트 스트림 및 제1 비닝 비트 스트림을 이용하여 제1 타일 및 제2 타일이 유사한지 여부를 판단할 수 있다. 구체적으로, GPU는 제1 비닝 비트 스트림에 포함되는 비트들의 합 및 제2 비닝 비트 스트림에 포함되는 비트들의 합 간의 차이가 임계값 이하인 경우 제1 타일 및 제2 타일이 유사하다고 판단할 수 있다.
일부 실시예에 따르면, 임계값은 어플리케이션을 시뮬레이션한 결과에 기초하여 고정된 값으로 결정될 수 있다. 다른 실시예에 따르면, 임계값은 GPU에 포함되는 L1 캐시 및 L2 캐시 중 적어도 하나로부터 수신된 캐시 적중률에 기초하여 동적으로 조정될 수도 있다. 제1 비닝 비트 스트림 및 제2 비닝 비트 스트림 각각은 제1 타일 및 제2 타일 각각에 포함되는 프리미티브들에 대한 정보를 포함할 수 있다.
단계 1030에서, 제1 타일 및 제2 타일이 유사하다고 판단되는 경우, GPU는 타일 ID를 이용하여 제2 타일을 렌더링하는데 이용되었던 제2 그래픽스 데이터를 프리페칭할 수 있다. GPU는 제2 그래픽스 데이터를 프리페칭하기 위해 L1 캐시, L2 캐시 및 DRAM을 순차적으로 검색할 수 있다.
구체적으로, GPU는 타일 ID와 매칭된, 제2 그래픽스 데이터의 제2 어드레스 정보 및 제2 사이즈 정보를 이용하여 제2 그래픽스 데이터를 프리페칭할 수 있다. 제2 어드레스 정보는 이전 프레임에서 제2 그래픽스 데이터를 판독하기 위해 메모리에 요청되었던 판독 어드레스의 시작 주소 및 마지막 주소 중 적어도 하나에 대한 정보를 포함하고, 제2 사이즈 정보는 마지막 주소 및 시작 주소 간의 차이에 기초하여 결정될 수 있다.
단계 1040에서, GPU는 프리페칭된 제2 그래픽스 데이터를 이용하여 현재 프레임을 렌더링할 수 있다. 현재 프레임의 타일의 렌더링에 필요한 그래픽스 데이터 중 적어도 일부가 미리 프리페칭되므로, GPU의 현재 프레임에 대한 렌더링 성능이 향상될 수 있다.
한편, GPU는 현재 프레임에서 제1 타일을 렌더링하는데 이용된 제1 그래픽스 데이터의 제1 어드레스 정보 및 제1 사이즈 정보를 타일 ID와 매칭하여 저장할 수 있다. 타일 ID와 매칭되어 저장된, 제1 그래픽스 데이터의 제1 어드레스 정보 및 제1 사이즈 정보는 현재 프레임의 타일과 동일 또는 유사한 타일을 포함하는 다음 프레임을 렌더링할 때 제1 그래픽스 데이터를 프리페칭하기 위해 이용될 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)를 포함한다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
Claims (10)
- GPU(Graphics processing unit)에서 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법에 있어서,
현재 프레임에 대한 비닝(binning)을 수행함으로써 상기 현재 프레임에 포함되는 복수 개의 타일들 중 제1 타일에 대한 제1 비닝 비트 스트림을 획득하는 단계;
이전 프레임에서 상기 제1 타일과 동일한 타일 ID를 갖는 제2 타일에 대한 제2 비닝 비트 스트림 및 상기 제1 비닝 비트 스트림을 이용하여 상기 제1 타일 및 상기 제2 타일이 유사한지 여부를 판단하는 단계;
상기 제1 타일 및 상기 제2 타일이 유사하다고 판단되는 경우, 상기 타일 ID를 이용하여 상기 제2 타일을 렌더링하는데 이용되었던 제2 그래픽스 데이터를 프리페칭하는 단계; 및
상기 프리페칭된 제2 그래픽스 데이터를 이용하여 상기 현재 프레임을 렌더링하는 단계를 포함하고,
상기 판단하는 단계는,
상기 제1 비닝 비트 스트림에 포함되는 비트들의 합 및 상기 제2 비닝 비트 스트림에 포함되는 비트들의 합 간의 차이가 임계값 이하인 경우 상기 제1 타일 및 상기 제2 타일이 유사하다고 판단하는 단계를 포함하는 방법. - 삭제
- 제 1항에 있어서,
상기 프리페칭하는 단계는,
상기 타일 ID와 매칭된, 상기 제2 그래픽스 데이터의 제2 어드레스 정보 및 제2 사이즈 정보를 이용하여 상기 제2 그래픽스 데이터를 프리페칭하는 단계를 포함하는, 방법. - 제 3항에 있어서,
상기 제2 어드레스 정보는 상기 이전 프레임에서 상기 제2 그래픽스 데이터를 판독하기 위해 메모리에 요청되었던 판독 어드레스(read address)의 시작 주소 및 마지막 주소 중 적어도 하나에 대한 정보를 포함하고,
상기 제2 사이즈 정보는 상기 마지막 주소 및 상기 시작 주소 간의 차이에 기초하여 결정되는, 방법. - 제 1항에 있어서,
상기 방법은,
상기 현재 프레임에서 상기 제1 타일을 렌더링하는데 이용된 제1 그래픽스 데이터의 제1 어드레스 정보 및 제1 사이즈 정보를 상기 타일 ID와 매칭하여 저장하는 단계를 더 포함하는, 방법. - 제 5항에 있어서,
상기 제1 그래픽스 데이터 및 상기 제2 그래픽스 데이터 각각은 상기 제1 타일 및 상기 제2 타일 각각을 렌더링하는데 이용된 버텍스 속성(vertex attribute) 데이터, 텍스처 데이터 및 그래픽스 스테이트(Gstate) 데이터 중 적어도 하나를 포함하는, 방법. - 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 GPU에 있어서,
현재 프레임에 대한 비닝을 수행함으로써 상기 현재 프레임에 포함되는 복수 개의 타일들 중 제1 타일에 대한 제1 비닝 비트 스트림을 획득하는 타일 비닝부;
이전 프레임에서 상기 제1 타일과 동일한 타일 ID를 갖는 제2 타일에 대한 제2 비닝 비트 스트림 및 상기 제1 비닝 비트 스트림을 이용하여 상기 제1 타일 및 상기 제2 타일이 유사한지 여부를 판단하는 비닝 상관기(binning correlator);
상기 제1 타일 및 상기 제2 타일이 유사하다고 판단되는 경우, 상기 타일 ID를 이용하여 상기 제2 타일을 렌더링하는데 이용되었던 제2 그래픽스 데이터를 프리페칭하는 프리페처(prefetcher); 및
상기 프리페칭된 제2 그래픽스 데이터를 이용하여 상기 현재 프레임을 렌더링하는 하나 이상의 프로세서를 포함하고,
상기 비닝 상관기는,
상기 제1 비닝 비트 스트림에 포함되는 비트들의 합 및 상기 제2 비닝 비트 스트림에 포함되는 비트들의 합 간의 차이가 임계값 이하인 경우 상기 제1 타일 및 상기 제2 타일이 유사하다고 판단하는, GPU. - 삭제
- 제 7항에 있어서,
상기 프리페처는,
상기 타일 ID와 매칭된, 상기 제2 그래픽스 데이터의 제2 어드레스 정보 및 제2 사이즈 정보를 이용하여 상기 제2 그래픽스 데이터를 프리페칭하는, GPU. - 제 9항에 있어서,
상기 제2 어드레스 정보는 상기 이전 프레임에서 상기 제2 그래픽스 데이터를 판독하기 위해 메모리에 요청되었던 판독 어드레스(read address)의 시작 주소 및 마지막 주소 중 적어도 하나에 대한 정보를 포함하고,
상기 제2 사이즈 정보는 상기 마지막 주소 및 상기 시작 주소 간의 차이에 기초하여 결정되는, GPU.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170179801A KR102554419B1 (ko) | 2017-12-26 | 2017-12-26 | 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치 |
US16/111,608 US10769837B2 (en) | 2017-12-26 | 2018-08-24 | Apparatus and method for performing tile-based rendering using prefetched graphics data |
CN201811034394.7A CN109978977A (zh) | 2017-12-26 | 2018-09-05 | 使用预取的图形数据执行基于图块的渲染的装置和方法 |
DE102018125295.1A DE102018125295A1 (de) | 2017-12-26 | 2018-10-12 | Vorrichtung und Verfahren zum Ausführen eines kachelbasierten Renderns unter Verwendung von vorabgerufenen Grafikdaten |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170179801A KR102554419B1 (ko) | 2017-12-26 | 2017-12-26 | 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190078086A KR20190078086A (ko) | 2019-07-04 |
KR102554419B1 true KR102554419B1 (ko) | 2023-07-11 |
Family
ID=66767924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170179801A KR102554419B1 (ko) | 2017-12-26 | 2017-12-26 | 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10769837B2 (ko) |
KR (1) | KR102554419B1 (ko) |
CN (1) | CN109978977A (ko) |
DE (1) | DE102018125295A1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2570743B (en) * | 2018-06-29 | 2021-06-23 | Imagination Tech Ltd | Tile assignment to processing cores within a graphics processing unit |
US11232533B2 (en) * | 2019-03-15 | 2022-01-25 | Intel Corporation | Memory prefetching in multiple GPU environment |
US11145105B2 (en) * | 2019-03-15 | 2021-10-12 | Intel Corporation | Multi-tile graphics processor rendering |
US10810784B1 (en) * | 2019-07-22 | 2020-10-20 | Nvidia Corporation | Techniques for preloading textures in rendering graphics |
US20240005602A1 (en) * | 2022-06-30 | 2024-01-04 | Advanced Micro Devices, Inc. | Pipeline delay reduction for coarse visibility compression |
CN115834874B (zh) * | 2023-02-06 | 2023-04-28 | 武汉凌久微电子有限公司 | 一种用于gpu的显示带宽错误的实时监测方法及装置 |
CN115952252B (zh) * | 2023-03-10 | 2023-05-16 | 中国测绘科学研究院 | 基于动态渲染的语义瓦片数据处理方法、装置和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160163014A1 (en) * | 2014-12-03 | 2016-06-09 | Intel Corporation | Prediction based primitive sorting for tile based rendering |
US20170353576A1 (en) * | 2016-06-01 | 2017-12-07 | Intel Corporation | Method and apparatus for remote prefetches of variable size |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5528181A (en) * | 1994-11-02 | 1996-06-18 | Advanced Micro Devices, Inc. | Hazard-free divider circuit |
US6697063B1 (en) | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
US6347344B1 (en) * | 1998-10-14 | 2002-02-12 | Hitachi, Ltd. | Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor |
US6914610B2 (en) * | 2001-05-18 | 2005-07-05 | Sun Microsystems, Inc. | Graphics primitive size estimation and subdivision for use with a texture accumulation buffer |
JP2004348169A (ja) * | 2002-03-12 | 2004-12-09 | Sun Microsyst Inc | グラフィック・システムにおけるサンプル密度および/またはいくつかのレンダリング・パスの動的な調整 |
JP4350342B2 (ja) | 2002-04-26 | 2009-10-21 | 株式会社リコー | 画像処理装置、画像記録装置、カメラシステム、プログラム、記憶媒体及び画像処理方法 |
US7710424B1 (en) | 2004-11-18 | 2010-05-04 | Nvidia Corporation | Method and system for a texture-aware virtual memory subsystem |
US20080276067A1 (en) | 2007-05-01 | 2008-11-06 | Via Technologies, Inc. | Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel |
US20100153934A1 (en) | 2008-12-12 | 2010-06-17 | Peter Lachner | Prefetch for systems with heterogeneous architectures |
US8988443B2 (en) | 2009-09-25 | 2015-03-24 | Arm Limited | Methods of and apparatus for controlling the reading of arrays of data from memory |
US9530189B2 (en) * | 2009-12-31 | 2016-12-27 | Nvidia Corporation | Alternate reduction ratios and threshold mechanisms for framebuffer compression |
US20130332937A1 (en) | 2012-05-29 | 2013-12-12 | Advanced Micro Devices, Inc. | Heterogeneous Parallel Primitives Programming Model |
US9305324B2 (en) | 2012-12-21 | 2016-04-05 | Nvidia Corporation | System, method, and computer program product for tiled deferred shading |
US20140373032A1 (en) | 2013-06-12 | 2014-12-18 | Microsoft Corporation | Prefetching content for service-connected applications |
US9459869B2 (en) | 2013-08-20 | 2016-10-04 | Apple Inc. | Intelligent caching for an operand cache |
US9652233B2 (en) | 2013-08-20 | 2017-05-16 | Apple Inc. | Hint values for use with an operand cache |
US20150206337A1 (en) * | 2014-01-17 | 2015-07-23 | Nokia Corporation | Method and apparatus for visualization of geo-located media contents in 3d rendering applications |
KR102100161B1 (ko) | 2014-02-04 | 2020-04-14 | 삼성전자주식회사 | Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템 |
GB2524467B (en) | 2014-02-07 | 2020-05-27 | Advanced Risc Mach Ltd | Method of and apparatus for generating an overdrive frame for a display |
CN103902502B (zh) | 2014-04-09 | 2017-01-04 | 上海理工大学 | 一种可扩展的分离式异构千核系统 |
US20150378920A1 (en) | 2014-06-30 | 2015-12-31 | John G. Gierach | Graphics data pre-fetcher for last level caches |
US10902545B2 (en) | 2014-08-19 | 2021-01-26 | Apple Inc. | GPU task scheduling |
KR20160047317A (ko) * | 2014-10-22 | 2016-05-02 | 삼성전자주식회사 | 하이브리드 렌더링 장치 및 방법 |
KR102276909B1 (ko) * | 2014-12-09 | 2021-07-13 | 삼성전자주식회사 | 렌더링 방법 및 장치 |
US9990690B2 (en) * | 2015-09-21 | 2018-06-05 | Qualcomm Incorporated | Efficient display processing with pre-fetching |
US9703642B2 (en) | 2015-11-25 | 2017-07-11 | International Business Machines Corporation | Processing of tracked blocks in similarity based deduplication of snapshots data |
US20170270245A1 (en) * | 2016-01-11 | 2017-09-21 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods for performing secondary and/or tertiary processing |
US9978118B1 (en) * | 2017-01-25 | 2018-05-22 | Microsoft Technology Licensing, Llc | No miss cache structure for real-time image transformations with data compression |
-
2017
- 2017-12-26 KR KR1020170179801A patent/KR102554419B1/ko active IP Right Grant
-
2018
- 2018-08-24 US US16/111,608 patent/US10769837B2/en active Active
- 2018-09-05 CN CN201811034394.7A patent/CN109978977A/zh active Pending
- 2018-10-12 DE DE102018125295.1A patent/DE102018125295A1/de active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160163014A1 (en) * | 2014-12-03 | 2016-06-09 | Intel Corporation | Prediction based primitive sorting for tile based rendering |
US20170353576A1 (en) * | 2016-06-01 | 2017-12-07 | Intel Corporation | Method and apparatus for remote prefetches of variable size |
Also Published As
Publication number | Publication date |
---|---|
US20190197760A1 (en) | 2019-06-27 |
DE102018125295A1 (de) | 2019-06-27 |
KR20190078086A (ko) | 2019-07-04 |
US10769837B2 (en) | 2020-09-08 |
CN109978977A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102554419B1 (ko) | 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치 | |
US9134954B2 (en) | GPU memory buffer pre-fetch and pre-back signaling to avoid page-fault | |
US11107176B2 (en) | Scheduling cache traffic in a tile-based architecture | |
EP3008701B1 (en) | Using compute shaders as front end for vertex shaders | |
JP5917784B1 (ja) | グラフィックス処理ユニットのためのハードウェアによるコンテンツ保護 | |
US9715750B2 (en) | System and method for layering using tile-based renderers | |
US7719540B2 (en) | Render-cache controller for multithreading, multi-core graphics processor | |
US10783694B2 (en) | Texture residency checks using compression metadata | |
EP3049939A1 (en) | Conditional page fault control for page residency | |
US11521342B2 (en) | Residency map descriptors | |
US8773447B1 (en) | Tag logic scoreboarding in a graphics pipeline | |
JP6271812B2 (ja) | 透過的画素フォーマット変換器 | |
US9563930B2 (en) | Techniques for clearing a shared surface | |
US10346943B2 (en) | Prefetching for a graphics shader | |
CN115934590A (zh) | 电路和方法 | |
KR20230107554A (ko) | 컴퓨트 작업로드들의 래스터화를 위한 방법들 및 장치 | |
US7996622B1 (en) | Detecting unused cache lines | |
KR20220157401A (ko) | 부분적으로 상주하는 텍스처에 대한 샘플링 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |