KR101511273B1 - 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 - Google Patents

멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 Download PDF

Info

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
Application number
KR20080135491A
Other languages
English (en)
Other versions
KR20100077528A (ko
Inventor
민경준
박찬민
이원종
유동훈
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR20080135491A priority Critical patent/KR101511273B1/ko
Priority to US12/458,670 priority patent/US9007382B2/en
Publication of KR20100077528A publication Critical patent/KR20100077528A/ko
Application granted granted Critical
Publication of KR101511273B1 publication Critical patent/KR101511273B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Abstract

멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및 시스템을 개시한다. 스크래치 패드 메모리(Scratch Pad Memory)를 포함하는 복수개의 코어, 컨트롤 플로우를 수행하기 위한 제1 메모리, 루프 가속을 위한 제2 메모리 및 상기 복수개의 코어와 연동하는 공유 메모리를 포함한다.
멀티 코어, 공유 메모리, VLIW, CGA, 태스크 분할

Description

멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및 시스템{SYSTEM AND METHOD FOR 3D GRAPHIC RENDERING BASED ON MULTI-CORE PROCESSOR}
본 발명의 실시예들은 멀티 코어 프로세서를 이용한 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)

  1. 스크래치 패드 메모리(Scratch Pad Memory)를 포함하는 복수개의 코어;
    컨트롤 플로우를 수행하기 위한 제1 메모리;
    루프 가속을 위한 제2 메모리; 및
    상기 복수개의 코어와 연동하는 공유 메모리
    를 포함하고,
    상기 복수개의 코어의 각각의 연산을 위해 요구되는 데이터는 상기 공유 메모리 내에 프리 패칭 및 저장되는 3차원 그래픽 렌더링 시스템.
  2. 제1항에 있어서,
    상기 복수개의 코어는,
    듀얼 코어를 기본단위로 설정하고, 하나 이상의 듀얼 코어로 구성되는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
  3. 제1항에 있어서,
    상기 복수개의 코어는,
    재구성 가능한 프로세서(reconfigurable processor) 코어로 각각 구성되고,
    상기 제1 메모리는,
    컨트롤 플로우를 수행하는 인스트럭션 메모리(instruction memory)로 구성되며,
    상기 제2 메모리는,
    루프 가속을 위한 컨피겨레이션 메모리(configuration memory)로 구성되는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
  4. 제3항에 있어서,
    상기 재구성 가능한 프로세서(reconfigurable processor) 코어는,
    복수개의 ALU(arithmetic logic unit)를 포함하고,
    상기 복수개의 ALU는,
    기설정된 하나 이상의 모드에 대응하여 전부 또는 일부가 동작하는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
  5. 제4항에 있어서,
    상기 기설정된 하나 이상의 모드는,
    컨트롤 플로우를 수행하기 위한 VLIW(Very Long Instruction Word) 모드; 및
    루프 가속을 위한 CGA(Coarse Grained array) 모드를 포함하고,
    상기 VLIW 모드에서는 상기 공유 메모리 및 상기 스크래치 패드 메모리를 사용하고,
    상기 CGA 모드에서는 상기 스크래치 패드 메모리를 사용하는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
  6. 제1항에 있어서,
    상기 제1 메모리 및 상기 제2 메모리는,
    상기 복수개의 코어 각각에 대응하여 구비되는 것을 특징으로 하는 3차원 그래픽 렌더링 시스템.
  7. 타일 기반 3차원 그래픽 렌더링 방법에 있어서,
    복수개의 코어로 데이터를 분할하는 단계; 및
    상기 분할된 데이터를 기설정된 복수개의 모드 중 하나를 사용하여 처리하는 단계
    를 포함하고,
    상기 복수개의 코어의 각각의 연산을 위해 요구되는 데이터는 공유 메모리 내에 프리 패칭 및 저장되는, 3차원 그래픽 렌더링 방법.
  8. 제7항에 있어서,
    상기 분할하는 단계는,
    버텍스 데이터(vertex data) 및 삼각형 데이터 중 하나를 복수개의 코어로 분할하는 것을 특징으로 하는, 3차원 그래픽 렌더링 방법.
  9. 제7항에 있어서,
    상기 복수개의 코어는,
    듀얼 코어로 구성되고,
    상기 분할하는 단계는,
    삼각형을 상하로 나누어 듀얼 코어로 분할하는 것을 특징으로 하는 3차원 그래픽 렌더링 방법.
  10. 제7항에 있어서,
    상기 복수개의 모드는,
    컨트롤 플로우를 수행하기 위한 VLIW(Very Long Instruction Word)모드; 및
    루프 가속을 위한 CGA(Coarse Grained array)모드
    를 포함하는, 3차원 그래픽 렌더링 방법.
  11. 제10항에 있어서,
    상기 처리하는 단계는,
    버텍스 쉐이더(vertex Shader), 스팬 프로세싱(Span Processing), 및 텍스쳐 맵핑(Texture Mapping) 중 적어도 하나를 상기 CGA 모드에서 수행하고,
    소팅(Sorting), 테스팅(Testing), 인터폴레이션(Interpolation), 디터미넌트 계산(Determinant Calculation), 및 분할(Division) 중 적어도 하나를 상기 VLIW 모드에서 수행하는, 3차원 그래픽 렌더링 방법.
  12. 제10항에 있어서,
    상기 VLIW 모드에서는,
    상기 공유 메모리 및 스크래치 패드 메모리를 사용하고,
    상기 CGA 모드에서는,
    상기 스크래치 패드 메모리를 사용하는 것을 특징으로 하는 3차원 그래픽 렌더링 방법.
  13. 제10항에 있어서,
    상기 VLIW 모드에서는,
    상기 각 코어의 ALU 일부를 사용하고,
    상기 CGA 모드에서는,
    상기 각 코어의 ALU 전부를 사용하는 것을 특징으로 하는 3차원 그래픽 렌더링 방법.
  14. 제7항에 있어서,
    상기 처리하는 단계는,
    복수개의 코어와 연동된 상기 공유 메모리를 이용하여 타일별 프레임 버퍼의 데이터를 더블 버퍼링하는 단계; 및
    순차적으로 상기 프레임 버퍼의 데이터를 처리하는 단계
    를 포함하는, 3차원 그래픽 렌더링 방법.
  15. 제7항 내지 제14항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR20080135491A 2008-12-29 2008-12-29 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템 KR101511273B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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