KR101511273B1 - 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 - Google Patents
멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 Download PDFInfo
- Publication number
- KR101511273B1 KR101511273B1 KR20080135491A KR20080135491A KR101511273B1 KR 101511273 B1 KR101511273 B1 KR 101511273B1 KR 20080135491 A KR20080135491 A KR 20080135491A KR 20080135491 A KR20080135491 A KR 20080135491A KR 101511273 B1 KR101511273 B1 KR 101511273B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- cores
- mode
- data
- vliw
- 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
-
- 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/60—Memory management
Abstract
멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및 시스템을 개시한다. 스크래치 패드 메모리(Scratch Pad Memory)를 포함하는 복수개의 코어, 컨트롤 플로우를 수행하기 위한 제1 메모리, 루프 가속을 위한 제2 메모리 및 상기 복수개의 코어와 연동하는 공유 메모리를 포함한다.
멀티 코어, 공유 메모리, VLIW, CGA, 태스크 분할
Description
본 발명의 실시예들은 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및 시스템에 관한 것으로, 특히 멀티 코어 프로세서를 이용하여 데이터가 중복되지 않도록 태스크를 분할하여 처리함으로써, 멀티 코어 프로세서를 효율적으로 운용하는 3차원 그래픽 랜더링 기술과 관련된 것이다.
타일 기반 3차원 렌더링 방법은 화면을 복수의 타일로 분할하고, 분할된 타일 중에서 렌더링을 수행할 삼각형이 적어도 일부 포함되는 타일에서만 상기 삼각형에 대한 렌더링을 수행하도록 하는 것이다. 이때 하나의 타일에 대한 렌더링은 칩 내부에 임베드된 하나의 타일 해상도 크기의 프레임 메모리를 이용하여 수행하며 타일에 대한 렌더링이 완료되면 한번에 버스트 모드를 이용하여 외부 프레임 버퍼의 타일 위치로 전송한다.
여기서, 타일에 대한 렌더링을 처리하기 위해 싱글 코어 또는 타일의 수에 대응하는 수의 코어를 사용하는 경우, 처리의 효율성 측면 또는 비용 측면에서 최적의 결과를 도출하지 못하였다.
따라서, 멀티 코어 프로세서를 이용하여 비용, 성능 및 리소스 사용율을 최적화할 수 있는 3차원 그래픽 렌더링 방법 및 시스템에 대한 연구가 지속적으로 필요하다.
본 발명의 일실시예에 따른 3차원 그래픽 렌더링 시스템은, 스크래치 패드 메모리(Scratch Pad Memory)를 포함하는 복수개의 코어, 컨트롤 플로우를 수행하기 위한 제1 메모리, 루프 가속을 위한 제2 메모리 및 상기 복수개의 코어와 연동하는 공유 메모리를 포함할 수 있다.
이때, 상기 복수개의 코어는, 듀얼 코어를 기본단위로 설정하고, 하나 이상의 듀얼 코어로 구성될 수 있다.
또한, 상기 복수개의 코어는, 재구성 가능한 프로세서(reconfigurable processor) 코어로 각각 구성되고, 상기 제1 메모리는, 컨트롤 플로우를 수행하는 인스트럭션 메모리(instruction memory)로 구성되며, 상기 제2 메모리는, 루프 가속을 위한 컨피겨레이션 메모리(configuration memory)로 구성될 수 있다.
또한, 상기 재구성 가능한 프로세서(reconfigurable processor) 코어는, 복수개의 ALU(arithmetic logic unit)를 포함하고, 상기 복수개의 ALU는, 기설정된 하나 이상의 모드에 대응하여 전부 또는 일부가 동작할 수 있다.
또한, 상기 기설정된 하나 이상의 모드는, 컨트롤 플로우를 수행하기 위한 VLIW(Very Long Instruction Word) 모드 및 루프 가속을 위한 CGA(Coarse Grained array) 모드를 포함하고, 상기 VLIW 모드에서는 상기 공유 메모리 및 상기 스크래치 패드 메모리를 사용하고, 상기 CGA 모드에서는 상기 스크래치 패드 메모리를 사용할 수 있다.
본 발명의 일실시예에 따른 3차원 그래픽 렌더링 방법은, 타일 기반 3차원 그래픽 렌더링 방법에 있어서, 복수개의 코어로 데이터를 분할하는 단계 및 상기 분할된 데이터를 기설정된 복수개의 모드 중 하나를 사용하여 처리하는 단계를 포함할 수 있다.
이때, 상기 복수개의 코어는, 듀얼 코어로 구성되고, 상기 분할하는 단계는, 삼각형을 상하로 나누어 듀얼 코어로 분할할 수 있다.
또한, 상기 처리하는 단계는, 버텍스 쉐이더(vertex Shader), 스팬 프로세싱(Span Processing), 및 텍스쳐 맵핑(Texture Mapping) 중 적어도 하나를 상기 CGA 모드에서 수행하고, 소팅(Sorting), 테스팅(Testing), 인터폴레이션(Interpolation), 디터미넌트 계산(Determinant Calculation), 및 분할(Division) 중 적어도 하나를 상기 VLIW 모드에서 수행하도록 할 수 있다.
또한, 상기 처리하는 단계는, 복수개의 코어와 연동된 공유 메모리를 이용하여 타일별 프레임 버퍼의 데이터를 더블 버퍼링하는 단계 및 순차적으로 상기 프레임 버퍼의 데이터를 처리하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따르면, 멀티 코어 프로세스를 이용하여 데이터를 중복되지 않도록 분할 처리함으로써, 가격대 성능 및 리소스 사용율이 높은 멀티 코어 프로세스를 이용한 3차원 렌더링 방법 및 시스템을 제공할 수 있다.
이하, 첨부된 도면들에 기재된 내용들을 참조하여 본 발명에 따른 바람직한 실시예를 상세하게 설명한다. 다만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다.
도 1은 본 발명의 일실시예에 있어서, 멀티 코어를 사용하여 3차원 그래픽 렌더링을 수행하는 과정을 나타낸 도면이다.
도 1을 참고하면, 멀티 코어 프로세서를 이용한 타일 기반 렌더링에 있어서, 화면(130)을 복수개의 타일로 분할하고, 렌더링을 수행할 삼각형이 포함된 타일(121, 122, 123, 124)에 대해서 렌더링을 수행할 수 있다. 멀티 코어를 이용하여 렌더링을 수행할 삼각형이 포함된 타일(121, 122, 123, 124)을 분할하여 렌더링을 수행함으로써, 처리의 효율성을 높일 수 있다.
이때, 싱글 코어를 이용하여 렌더링을 수행하는 경우, 처리의 속도 등이 문제될 수 있고, 각 타일에 대응하는 수만큼의 코어를 사용하여 렌더링을 수행하는 경우, 비용 또는 리소스 사용율 등이 문제될 수 있다.
따라서, 적절한 수의 멀티 코어 프로세서를 사용하여 데이터를 분할하여 처리하며, 데이터 상호간 중복 처리 문제가 발생하지 않도록 스케줄링할 필요가 있다.
도 2는 본 발명의 일실시예에 따른 3차원 그래픽 렌더링 시스템을 나타낸 도면이다.
도 2를 참고하면, 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 시스템은 복수개의 코어(220, 230), 제1 메모리(221, 231), 제2 메모리(222, 232), 및 공유 메모리(210)를 포함할 수 있다.
복수개의 코어(220, 230) 각각은 스크래치 패드 메모리(223, 233)를 포함한다. 또한, 복수개의 코어(220, 230)는 일예로, 재구성 가능한 프로세서(RP: reconfigurable processor) 코어일 수 있다.
여기서, 상기 RP 코어는, 복수개의 ALU(arithmetic logic unit)를 포함하고, 상기 복수개의 ALU는, 기설정된 하나 이상의 모드에 대응하여 전부 또는 일부가 동작하도록 할 수 있다.
또한, 상기 하나 이상의 모드는 일예로, 컨트롤 플로우를 수행하기 위한 VLIW(Very Long Instruction Word) 모드 및 루프 가속을 위한 CGA(Coarse Grained array) 모드일 수 있고, VLIW 모드에서는 RP 프로세서 코어의 ALU중 일부가 동작하며, CGA 모드에서는 RP 프로세서 코어의 ALU가 모두 동작할 수 있다.
각 모드별 구체적인 동작은 일예로, 버텍스 쉐이더(vertex Shader), 스팬 프로세싱(Span Processing), 및 텍스쳐 맵핑(Texture Mapping) 중 적어도 하나를 상기 CGA 모드에서 수행하고, 소팅(Sorting), 테스팅(Testing), 인터폴레이션(Interpolation), 디터미넌트 계산(Determinant Calculation), 및 분할(Division) 중 적어도 하나를 상기 VLIW 모드에서 수행하도록 할 수 있다.
또한, 상기 VLIW 모드에서는 공유 메모리(210) 및 스크래치 패드 메모리(223, 233)를 사용하고, 상기 CGA 모드에서는 스크래치 패드 메모리(223, 233)를 사용하도록 할 수 있다.
또한, 복수개의 코어(220, 230)는 도 2에 도시된 바와 같이 듀얼 코어로 구성되거나, 듀얼 코어를 기본 단위로 하는 코어들의 집합일 수 있다. 이때, 복수개 의 코어(220, 230)는 개수에 한정되지 않고 최적의 성능을 위해 적절한 수로 사용될 수 있다.
제1 메모리(221, 231)는 컨트롤 플로우를 수행하기 위한 메모리일 수 있다. 여기서, 제1 메모리(221, 231)는 일예로, 각 코어에 대응하여 코어의 개수만큼 구비될 수 있다. 즉, 1개의 코어에 1개의 제1 메모리가 구비될 수 있다.
또한, 제1 메모리(221, 231)는 일예로, 인스트럭션 메모리(instruction memory)로 구성될 수 있다. 따라서, 인스트럭션 메모리에서는 VLIW 모드에서 사용되는 인스트럭션을 저장하여 컨트롤 플로우 등을 수행하도록 할 수 있다.
제2 메모리(222, 232)는 루프 가속을 위한 메모리일 수 있다. 상기 제1 메모리(221, 231)와 마찬가지로, 제2 메모리(222, 232)도 각 코어에 대응하여 코어의 개수만큼 구비될 수 있다. 따라서, 1개의 코어에 1개의 제2 메모리가 구비될 수 있다.
또한, 제2 메모리(222, 232)는 일예로, 컨피겨레이션 메모리(configuration memory)로 구성될 수 있다. 따라서, 컨피겨레이션 메모리에서는 CGA 모드에서의 동작을 위한 컨피겨레이션이 저장되어 루프 가속 등을 수행할 수 있다.
공유 메모리(210)는 각각의 코어의 연산에 필요한 데이터가 프리패칭(pre-fetching)되어 저장되고, 데이터가 중복되어 처리되지 않도록 할 수 있다.
또한, 공유 메모리를 통해 타일별 프레임 버퍼의 데이터를 더블 버퍼링하고, 순차적으로 상기 프레임 버퍼의 데이터를 처리하도록 함으로써, 연산의 연속성을 보장하고, 성능을 극대화 할 수 있다.
도 3은 본 발명의 다른 일실시예에 따른 3차원 그래픽 렌더링 시스템을 나타낸 도면이다.
도 3을 참고하면, 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 시스템은 복수개의 코어(320, 330), 제1 메모리(340), 제2 메모리(350), 및 공유 메모리(310)를 포함할 수 있다.
즉, 복수개의 코어의 개수에 대응하여 제1 메모리 및 제2 메모리가 각각 존재하지 않고, 하나의 제1 메모리(340) 및 하나의 제2 메모리(350)만을 구비할 수 있다. 이 경우, 하나의 제1 메모리(340)는 복수개의 코어와 각각 연결되며, 하나의 제2 메모리(350)도 복수개의 코어와 각각 연결되어 데이터 처리를 수행할 수 있다.
도 4는 본 발명의 일실시예에 따른 3차원 그래픽스 렌더링 파이프라인을 기능적 특성에 따라 도시한 도면이다.
도 4를 참고하면, 단계(S410)에서는 vertex와 관련된 값, 색, 좌표 등을 처리할 수 있고, 단계(S420)에서는 화면내의 어떠한 타일에 삼각형이 포함되는지 여부를 판단하도록 할 수 있다.
단계(S430)에서는 3차원 모델을 2차원 화면으로 변환하기 위해, 2차원 좌표로 변환되어 벡터 형태로 표시되어 있는 3차원 모델을 픽셀 기반의 2차원 화면으로 생성하도록 할 수 있다.
여기서, 단계(S430)를 세부적으로 살펴보면, 단계(S431)에서는 3차원 모델을 표현하기 위한 기본 단위인 삼각형을 셋업할 수 있다.
단계(S432)에서는 텍스쳐를 맵핑하고, 픽셀을 처리할 수 있다.
단계(S433)에서는 새로 그려져야 할 그래픽과 기존에 화면에 그려져 있는 그래픽을 합성하도록 할 수 있다. 이때, 각 단계에서 수행되는 동작은 그 특성에 따라 특정한 모드에서 동작하도록 할 수 있다.
예를 들어, 복수개의 코어로 RP 코어를 사용하는 경우, 각 단계의 특징에 따라, 컨트롤 플로우 등을 처리하는 경우에는 VLIW 모드에서 수행되도록 하고, 루프 가속 등을 위한 처리의 경우에는 CGA 모드에서 수행되도록 할 수 있다. 따라서, 도 4에 도시된 바와 같이, 수행되는 단계에 따라 VLIW 모드(402, 404) 또는 CGA 모드(401, 403)에 대응하여 수행하도록 할 수 있다.
도 5는 도 4에 도시한 3차원 그래픽스 렌더링 파이프라인에 있어서, 기하단 이후의 파이프라인을 상세하게 도시한 도면이다.
도 5를 참고하면, 단계(S510)에서 vertex에 대한 처리가 수행되면, 단계(S520)에서는 삼각형의 면적을 계산할 수 있다.
이후, 단계(S530)에서는 삼각형을 분할하기 위해 y-sorting을 수행하고 단계(S540)에서는 델타 칼큘레이션(delta calculation)을 통해 z값에 대한 증분값을 계산하고, 단계(S550)에서는 그래디언트 칼큘레이션(gradient calculation)을 통해 컬러의 변화를 처리할 수 있다.
단계(S560)에서는 에지 워킹(edge walking)을 수행하고, 단계(S570)에서는 스팬 프로세싱(span processing)을 수행하며, 단계(S580)에서는 ROP(raster operation)를 통하여 새로 그려져야 할 그래픽과 기존에 화면에 그려져 있는 그래 픽을 합성할 수 있다.
여기서, 일예로, 복수개의 코어로 RP 코어를 사용하는 경우, 상기 단계들도 연산의 특성에 따라 VLIW 모드 또는 CGA 모드로 각각 대응하여 수행하도록 할 수 있다. 따라서, 단계(S510) 및 단계(S570)은 CGA 모드로, 단계(S520) 내지 단계(S560) 및 단계(S580)은 VLIW 모드로 수행되도록 할 수 있다.
상기와 같이, 각 단계별 동작 특성에 따라, 기설정된 모드에 대응하여 연산을 수행하고, 복수개의 프로세서로 데이터를 분할하여 처리함으로써, 연산의 효율을 보다 높일 수 있다.
도 6은 본 발명의 일실시예에 따른 3차원 그래픽 렌더링 방법을 도시한 흐름도이다.
도 6을 참고하면, 단계(S610)에서는 복수개의 코어로 데이터를 분할할 수 있다. 여기서, 분할되는 데이터는 vertex 처리를 위한 vertex 데이터 및 삼각형의 연산을 분할하여 처리하기 위한 삼각형 데이터 중 하나일 수 있다.
단계(S620)에서는 상기 분할된 데이터를 기설정된 복수개의 모드 중 하나를 사용하여 처리할 수 있다. 예를 들어, RP 코어를 사용하는 경우, 컨트롤 플로우 등의 수행시에는 VLIW 모드를 사용하고, 루프 가속 등을 수행하기 위한 경우에는 CGA 모드를 사용하여 연산을 수행하도록 할 수 있다.
또한, 일예로, 듀얼 코어를 사용하여 3차원 그래픽 렌더링을 수행하는 경우, 그래픽 처리를 위한 삼각형을 상하로 나누어 각각의 코어에서 수행하며, 각 코어에서 수행되는 데이터가 중복되지 않도록 하여 멀티 코어 프로세싱시 데이터의 일관성(consistency)이 유지되도록 할 수 있다.
도 7은 본 발명의 일실시예에 따른 3차원 그래픽 렌더링 방법에 있어서, 더블 버퍼링을 이용하여 데이터를 처리하는 과정을 도시한 도면이다.
도 7을 참고하면, 단계(S710)에서는 복수개의 코어와 연동된 공유 메모리를 이용하여 타일별 프레임 버퍼의 데이터를 더블 버퍼링 할 수 있다. 단계(S720)에서는 순차적으로 상기 프레임 버퍼의 데이터를 처리하도록 할 수 있다. 따라서, 다음번에 수행될 데이터를 프리 패칭(pre-fetching)하여 연산의 연속성을 보장하고, 연산의 성능을 극대화할 수 있다.
도 8은 본 발명의 일실시예에 있어서, 멀티 코어 프로세서를 이용한 3차원 렌더링 과정을 도시한 도면이다.
도 8을 참고하면, geometry stage(S810)에서는 vertex 데이터가 MMU(Memory Management Unit)에 의해 각각의 스크래치 패드 메모리(811, 812)로 전송된 후 CGA 모드에서 소프트웨어 파이프라인(software pipelining)을 이용하여 처리될 수 있다.
또한, 타일 비닝(Tile Binning)을 수행한 후 타일 비닝이 완료되면 대응되는 타일별 프레임 버퍼(frame buffer, 814)가 MMU에 의해 공유메모리(813)로 복사될 수 있다.
에지 워킹(edge walking)단계(S820)에서는, 버텍스 쉐이더(vertex shader)의 vertex 데이터 처리가 완료되면, 스크래치 패드 메모리(821, 822)에 기록된 CGA 모드의 결과물은 VLIW 유닛들(824, 825, 826, 827)을 통해 공유 메모리(823)로 오 버헤드 없이 이동이 가능할 수 있다.
추후 VLIW 모드를 통해 SIMD(Single Instruction Multiple Data) 및 컨트롤 플로우(control flow)를 이용하여 삼각형 셋업(triangle-set up)을 진행 한 뒤 Y-sorting 단계에서 상하로 나뉜 삼각형의 에지(edge) 정보를 다시 스크래치 패드 메모리(821, 822)으로 이동시킬 수 있다.
스팬 프로세싱(span processing)단계(S830)에서는, 삼각형의 상하는 겹치지 않으므로 2개의 코어(831, 832)를 통해 CGA 모드를 동시 진행 시키면서 삼각형 내부 프레그먼트 값을 계산할 수 있다. 이때, 텍스쳐 맵핑(texture mapping) 및 컨트롤 플로우가 없는 프레그먼트 쉐이더(fragment shader) 코드를 수행할 수 있다.
이후 ROP단계(S840)에서는 테스트(ex. z-test)를 컨트롤 플로우 처리가 가능한 VLIW 모드에서 RGBA 값을 한번에 SIMD 방식으로 연산할 수 있다.
단계(S850)에서는 MMU를 이용하여 타일 프레임 버퍼(tile frame buffer)를 업데이트 함과 동시에 더블 버퍼링된 다음 타일에 대한 스팬 프로세싱(span processing) 을 반복할 수 있다.
상기와 같이, 멀티 코어를 이용하여 태스크를 효율적으로 분할하여 처리하고, 데이터가 중복하여 처리되지 않도록 함으로써, 가격대 성능 및 리소스 사용율을 향상시킬 수 있는 멀티코어 프로세서 3차원 그래픽 렌더링 시스템 및 장치를 제공할 수 있다.
또한, 코어의 동작시 각 렌더링 단계의 기능적 특성에 대응하는 모드를 사용하여 연산을 처리함으로써, 연산의 효율성을 극대화할 수 있는 시스템 및 장치를 제공할 수 있다.
본 발명의 실시예에 따른 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되 며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일실시예에 있어서, 멀티 코어를 사용하여 3차원 그래픽 렌더링을 수행하는 과정을 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 3차원 그래픽 렌더링 시스템을 나타낸 도면이다.
도 3은 본 발명의 다른 일실시예에 따른 3차원 그래픽 렌더링 시스템을 나타낸 도면이다.
도 4는 본 발명의 일실시예에 따른 3차원 그래픽스 렌더링 파이프라인을 기능적 특성에 따라 도시한 도면이다.
도 5는 도 4에 도시한 3차원 그래픽스 렌더링 파이프라인에 있어서, 기하단 이후의 파이프라인을 상세하게 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 3차원 그래픽 렌더링 방법을 도시한 흐름도이다.
도 7은 본 발명의 일실시예에 따른 3차원 그래픽 렌더링 방법에 있어서, 더블 버퍼링을 이용하여 데이터를 처리하는 과정을 도시한 도면이다.
도 8은 본 발명의 일실시예에 있어서, 멀티 코어 프로세서를 이용한 3차원 렌더링 과정을 도시한 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
210 : 공유 메모리
220, 230 : 코어
221, 231 : 제1 메모리
222, 232 : 제2 메모리
223, 233 : 스크래치 패드 메모리
Claims (15)
- 스크래치 패드 메모리(Scratch Pad Memory)를 포함하는 복수개의 코어;컨트롤 플로우를 수행하기 위한 제1 메모리;루프 가속을 위한 제2 메모리; 및상기 복수개의 코어와 연동하는 공유 메모리를 포함하고,상기 복수개의 코어의 각각의 연산을 위해 요구되는 데이터는 상기 공유 메모리 내에 프리 패칭 및 저장되는 3차원 그래픽 렌더링 시스템.
- 제1항에 있어서,상기 복수개의 코어는,듀얼 코어를 기본단위로 설정하고, 하나 이상의 듀얼 코어로 구성되는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
- 제1항에 있어서,상기 복수개의 코어는,재구성 가능한 프로세서(reconfigurable processor) 코어로 각각 구성되고,상기 제1 메모리는,컨트롤 플로우를 수행하는 인스트럭션 메모리(instruction memory)로 구성되며,상기 제2 메모리는,루프 가속을 위한 컨피겨레이션 메모리(configuration memory)로 구성되는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
- 제3항에 있어서,상기 재구성 가능한 프로세서(reconfigurable processor) 코어는,복수개의 ALU(arithmetic logic unit)를 포함하고,상기 복수개의 ALU는,기설정된 하나 이상의 모드에 대응하여 전부 또는 일부가 동작하는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
- 제4항에 있어서,상기 기설정된 하나 이상의 모드는,컨트롤 플로우를 수행하기 위한 VLIW(Very Long Instruction Word) 모드; 및루프 가속을 위한 CGA(Coarse Grained array) 모드를 포함하고,상기 VLIW 모드에서는 상기 공유 메모리 및 상기 스크래치 패드 메모리를 사용하고,상기 CGA 모드에서는 상기 스크래치 패드 메모리를 사용하는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
- 제1항에 있어서,상기 제1 메모리 및 상기 제2 메모리는,상기 복수개의 코어 각각에 대응하여 구비되는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
- 타일 기반 3차원 그래픽 렌더링 방법에 있어서,복수개의 코어로 데이터를 분할하는 단계; 및상기 분할된 데이터를 기설정된 복수개의 모드 중 하나를 사용하여 처리하는 단계를 포함하고,상기 복수개의 코어의 각각의 연산을 위해 요구되는 데이터는 공유 메모리 내에 프리 패칭 및 저장되는, 3차원 그래픽 렌더링 방법.
- 제7항에 있어서,상기 분할하는 단계는,버텍스 데이터(vertex data) 및 삼각형 데이터 중 하나를 복수개의 코어로 분할하는 것을 특징으로 하는, 3차원 그래픽 렌더링 방법.
- 제7항에 있어서,상기 복수개의 코어는,듀얼 코어로 구성되고,상기 분할하는 단계는,삼각형을 상하로 나누어 듀얼 코어로 분할하는 것을 특징으로 하는 3차원 그래픽 렌더링 방법.
- 제7항에 있어서,상기 복수개의 모드는,컨트롤 플로우를 수행하기 위한 VLIW(Very Long Instruction Word)모드; 및루프 가속을 위한 CGA(Coarse Grained array)모드를 포함하는, 3차원 그래픽 렌더링 방법.
- 제10항에 있어서,상기 처리하는 단계는,버텍스 쉐이더(vertex Shader), 스팬 프로세싱(Span Processing), 및 텍스쳐 맵핑(Texture Mapping) 중 적어도 하나를 상기 CGA 모드에서 수행하고,소팅(Sorting), 테스팅(Testing), 인터폴레이션(Interpolation), 디터미넌트 계산(Determinant Calculation), 및 분할(Division) 중 적어도 하나를 상기 VLIW 모드에서 수행하는, 3차원 그래픽 렌더링 방법.
- 제10항에 있어서,상기 VLIW 모드에서는,상기 공유 메모리 및 스크래치 패드 메모리를 사용하고,상기 CGA 모드에서는,상기 스크래치 패드 메모리를 사용하는 것을 특징으로 하는 3차원 그래픽 렌더링 방법.
- 제10항에 있어서,상기 VLIW 모드에서는,상기 각 코어의 ALU 일부를 사용하고,상기 CGA 모드에서는,상기 각 코어의 ALU 전부를 사용하는 것을 특징으로 하는 3차원 그래픽 렌더링 방법.
- 제7항에 있어서,상기 처리하는 단계는,복수개의 코어와 연동된 상기 공유 메모리를 이용하여 타일별 프레임 버퍼의 데이터를 더블 버퍼링하는 단계; 및순차적으로 상기 프레임 버퍼의 데이터를 처리하는 단계를 포함하는, 3차원 그래픽 렌더링 방법.
- 제7항 내지 제14항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20080135491A KR101511273B1 (ko) | 2008-12-29 | 2008-12-29 | 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 |
US12/458,670 US9007382B2 (en) | 2008-12-29 | 2009-07-20 | System and method of rendering 3D graphics |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20080135491A KR101511273B1 (ko) | 2008-12-29 | 2008-12-29 | 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100077528A KR20100077528A (ko) | 2010-07-08 |
KR101511273B1 true KR101511273B1 (ko) | 2015-04-10 |
Family
ID=42284350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20080135491A KR101511273B1 (ko) | 2008-12-29 | 2008-12-29 | 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9007382B2 (ko) |
KR (1) | KR101511273B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10332301B2 (en) | 2015-11-06 | 2019-06-25 | Samsung Electronics Co., Ltd. | 3D graphic rendering method and apparatus |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8505001B2 (en) * | 2009-12-17 | 2013-08-06 | Broadcom Corporation | Method and system for utilizing data flow graphs to compile shaders |
US8593466B2 (en) * | 2010-06-08 | 2013-11-26 | Intel Corporation | Tile rendering for image processing |
KR101687995B1 (ko) * | 2010-09-27 | 2016-12-20 | 삼성전자주식회사 | 프로세서 및 그 동작 방법 |
KR101754203B1 (ko) * | 2011-01-19 | 2017-07-07 | 삼성전자주식회사 | 파워 게이팅 기반의 재구성가능 프로세서, 이를 위한 컴파일 장치 및 방법 |
KR20130028505A (ko) * | 2011-09-09 | 2013-03-19 | 삼성전자주식회사 | 재구성가능 프로세서, 재구성가능 프로세서의 코드 변환 장치 및 방법 |
EP2820562B1 (en) * | 2012-02-27 | 2017-08-09 | Intel Corporation | Using cost estimation to improve performance of tile rendering for image processing |
KR101929754B1 (ko) | 2012-03-16 | 2018-12-17 | 삼성전자 주식회사 | 미니 코어 기반의 재구성가능 프로세서, 이를 위한 스케줄 장치 및 방법 |
KR20130105088A (ko) * | 2012-03-16 | 2013-09-25 | 삼성전자주식회사 | 복수의 픽셀 코어를 제어하는 타일 기반 렌더링 장치 및 방법 |
US9098917B2 (en) * | 2012-07-19 | 2015-08-04 | Samsung Electronics Co., Ltd. | Method and system for accelerating collision resolution on a reconfigurable processor |
US9734548B2 (en) * | 2012-10-26 | 2017-08-15 | Nvidia Corporation | Caching of adaptively sized cache tiles in a unified L2 cache with surface compression |
US11055097B2 (en) * | 2013-10-08 | 2021-07-06 | Nvidia Corporation | Dynamically detecting uniformity and eliminating redundant computations to reduce power consumption |
CN110865800B (zh) * | 2019-11-01 | 2021-03-09 | 浙江大学 | 一种基于引擎模块化的全平台三维重建代码处理方法 |
CN114463160B (zh) * | 2022-01-30 | 2022-10-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001506781A (ja) | 1996-12-19 | 2001-05-22 | ヒュンダイ エレクトロニクス アメリカ | ビデオフレームレンダリングエンジン |
US20020171652A1 (en) * | 2001-05-15 | 2002-11-21 | Perego Richard E. | Scalable unified memory architecture |
US20080084423A1 (en) * | 2003-11-19 | 2008-04-10 | Reuven Bakalash | Computing system capable of parallelizing the operation of multiple graphics pipelines (GPPLS) implemented on a multi-core CPU chip |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5262965A (en) * | 1988-10-31 | 1993-11-16 | Bts-Broadcast Television Systems, Inc. | System and method for high speed computer graphics image computation using a parallel connected, asynchronous multiprocessor ring coupled to a synchronous special purpose video processing ring |
US6247036B1 (en) | 1996-01-22 | 2001-06-12 | Infinite Technology Corp. | Processor with reconfigurable arithmetic data path |
US6697063B1 (en) * | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
US5966534A (en) | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
US5970254A (en) | 1997-06-27 | 1999-10-19 | Cooke; Laurence H. | Integrated processor and programmable data path chip for reconfigurable computing |
US6771264B1 (en) * | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US6380935B1 (en) * | 1999-03-17 | 2002-04-30 | Nvidia Corporation | circuit and method for processing render commands in a tile-based graphics system |
US6556200B1 (en) * | 1999-09-01 | 2003-04-29 | Mitsubishi Electric Research Laboratories, Inc. | Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data |
US6714196B2 (en) * | 2000-08-18 | 2004-03-30 | Hewlett-Packard Development Company L.P | Method and apparatus for tiled polygon traversal |
US6847370B2 (en) * | 2001-02-20 | 2005-01-25 | 3D Labs, Inc., Ltd. | Planar byte memory organization with linear access |
US6819332B2 (en) * | 2001-02-27 | 2004-11-16 | 3Dlabs Inc. Ltd. | Antialias mask generation |
US6798421B2 (en) * | 2001-02-28 | 2004-09-28 | 3D Labs, Inc. Ltd. | Same tile method |
US20030056091A1 (en) | 2001-09-14 | 2003-03-20 | Greenberg Craig B. | Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations |
US6795078B2 (en) * | 2002-01-31 | 2004-09-21 | Sun Microsystems, Inc. | Parallel read with source-clear operation |
US7227556B2 (en) * | 2002-03-01 | 2007-06-05 | O'driscoll Gerard | High quality antialiased lines with dual sampling pattern |
US7075541B2 (en) * | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
US8194071B2 (en) * | 2004-05-24 | 2012-06-05 | St-Ericsson Sa | Tile based graphics rendering |
US7299339B2 (en) * | 2004-08-30 | 2007-11-20 | The Boeing Company | Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework |
US20060143415A1 (en) * | 2004-12-29 | 2006-06-29 | Uday Naik | Managing shared memory access |
US8089486B2 (en) * | 2005-03-21 | 2012-01-03 | Qualcomm Incorporated | Tiled prefetched and cached depth buffer |
US7634622B1 (en) * | 2005-06-14 | 2009-12-15 | Consentry Networks, Inc. | Packet processor that generates packet-start offsets to immediately store incoming streamed packets using parallel, staggered round-robin arbitration to interleaved banks of memory |
US7414623B2 (en) * | 2005-06-29 | 2008-08-19 | Microsoft Corporation | Adaptive sampling for procedural graphics |
KR100663709B1 (ko) * | 2005-12-28 | 2007-01-03 | 삼성전자주식회사 | 재구성 아키텍처에서의 예외 처리 방법 및 장치 |
GB0605349D0 (en) * | 2006-03-17 | 2006-04-26 | Imec Inter Uni Micro Electr | Reconfigurable multi-processing coarse-grain array |
US7898551B2 (en) * | 2006-06-20 | 2011-03-01 | Via Technologies, Inc. | Systems and methods for performing a bank swizzle operation to reduce bank collisions |
US20080005473A1 (en) * | 2006-06-30 | 2008-01-03 | Tong Chen | Compiler assisted re-configurable software implemented cache |
GB2443277B (en) * | 2006-10-24 | 2011-05-18 | Advanced Risc Mach Ltd | Performing diagnostics operations upon an asymmetric multiprocessor apparatus |
KR20080064607A (ko) | 2007-01-05 | 2008-07-09 | 삼성전자주식회사 | 재구성 가능한 프로세서를 위한 통합 메모리 장치 및 이의사용 방법 |
GB0723536D0 (en) * | 2007-11-30 | 2008-01-09 | Imagination Tech Ltd | Multi-core geometry processing in a tile based rendering system |
US8106914B2 (en) * | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
US9390539B2 (en) * | 2009-11-04 | 2016-07-12 | Intel Corporation | Performing parallel shading operations |
US8505001B2 (en) * | 2009-12-17 | 2013-08-06 | Broadcom Corporation | Method and system for utilizing data flow graphs to compile shaders |
KR101683556B1 (ko) * | 2010-01-06 | 2016-12-08 | 삼성전자주식회사 | 타일 기반의 렌더링 장치 및 렌더링 방법 |
US8619085B2 (en) * | 2010-03-08 | 2013-12-31 | Broadcom Corporation | Method and system for compressing tile lists used for 3D rendering |
US10089774B2 (en) * | 2011-11-16 | 2018-10-02 | Qualcomm Incorporated | Tessellation in tile-based rendering |
EP2820562B1 (en) * | 2012-02-27 | 2017-08-09 | Intel Corporation | Using cost estimation to improve performance of tile rendering for image processing |
-
2008
- 2008-12-29 KR KR20080135491A patent/KR101511273B1/ko active IP Right Grant
-
2009
- 2009-07-20 US US12/458,670 patent/US9007382B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001506781A (ja) | 1996-12-19 | 2001-05-22 | ヒュンダイ エレクトロニクス アメリカ | ビデオフレームレンダリングエンジン |
US20020171652A1 (en) * | 2001-05-15 | 2002-11-21 | Perego Richard E. | Scalable unified memory architecture |
US20080084423A1 (en) * | 2003-11-19 | 2008-04-10 | Reuven Bakalash | Computing system capable of parallelizing the operation of multiple graphics pipelines (GPPLS) implemented on a multi-core CPU chip |
Non-Patent Citations (2)
Title |
---|
Veredas F.J et al. "Custom implementation of the coarse-grained reconfigurable ADRES architecture for multimedia purposes," FPL International conference IEEE, 24-26 Aug. 2005, pp.106-111. * |
Veredas F.J et al. "Custom implementation of the coarse-grained reconfigurable ADRES architecture for multimedia purposes," FPL International conference IEEE, 24-26 Aug. 2005, pp.106-111.* |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10332301B2 (en) | 2015-11-06 | 2019-06-25 | Samsung Electronics Co., Ltd. | 3D graphic rendering method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
US20100164949A1 (en) | 2010-07-01 |
KR20100077528A (ko) | 2010-07-08 |
US9007382B2 (en) | 2015-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101511273B1 (ko) | 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 | |
EP3026635B1 (en) | Graphic processing unit and method of performing, by graphic processing unit, tile-based graphics pipeline | |
US10249073B2 (en) | Distributed frame buffer and API for scalable parallel rendering | |
US20180082464A1 (en) | Apparatus and method for an efficient 3d graphics pipeline | |
US11004258B2 (en) | Combined world-space pipeline shader stages | |
CN106575430B (zh) | 用于像素哈希的方法和装置 | |
US20210382717A1 (en) | Hierarchical thread scheduling | |
US20210382720A1 (en) | Hierarchical thread scheduling | |
CN109196550B (zh) | 用于针对虚拟现实和多视图系统进行交织光栅化和像素着色的架构 | |
US11354807B2 (en) | Apparatus and method for conservative morphological antialiasing with multisampling | |
US11151683B2 (en) | Use of inner coverage information by a conservative rasterization pipeline to enable EarlyZ for conservative rasterization | |
US10192348B2 (en) | Method and apparatus for processing texture | |
EP3513373B1 (en) | Load-balanced tessellation distribution for parallel architectures | |
TW201719570A (zh) | 用於型樣驅動自適應虛擬繪圖處理單元的裝置及方法 | |
KR102644276B1 (ko) | 그래픽 처리 장치 및 방법 | |
US10699463B2 (en) | Simulating the motion of complex objects in response to connected structure motion | |
JP2023525725A (ja) | データ圧縮の方法及び装置 | |
JP2021082260A (ja) | 並列解凍メカニズム | |
US10832465B2 (en) | Use of workgroups in pixel shader | |
US20200183697A1 (en) | Apparatus and method for widened simd execution within a constrained register file | |
US20220309729A1 (en) | Synchronization free cross pass binning through subpass interleaving | |
JP2023532433A (ja) | マルチサンプルアンチエイリアシングのためのロード命令 |
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 | ||
FPAY | Annual fee payment |
Payment date: 20180321 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190319 Year of fee payment: 5 |