KR20090028337A - 정점 데이터 처리 장치 및 방법 - Google Patents

정점 데이터 처리 장치 및 방법 Download PDF

Info

Publication number
KR20090028337A
KR20090028337A KR1020070093849A KR20070093849A KR20090028337A KR 20090028337 A KR20090028337 A KR 20090028337A KR 1020070093849 A KR1020070093849 A KR 1020070093849A KR 20070093849 A KR20070093849 A KR 20070093849A KR 20090028337 A KR20090028337 A KR 20090028337A
Authority
KR
South Korea
Prior art keywords
vertex data
unit
processing
processed
storage unit
Prior art date
Application number
KR1020070093849A
Other languages
English (en)
Other versions
KR101440106B1 (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 KR1020070093849A priority Critical patent/KR101440106B1/ko
Priority to US12/076,272 priority patent/US8749567B2/en
Publication of KR20090028337A publication Critical patent/KR20090028337A/ko
Application granted granted Critical
Publication of KR101440106B1 publication Critical patent/KR101440106B1/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/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

본 발명은 3차원 그래픽 파이프라인(3Dimension graphics pipeline)에 관한 것으로, 프로세서(processor)가 배치(batch) 단위로 정점 데이터(vertex)를 처리하는 동시에 프로세서와는 독립적으로 다음에 처리할 배치에 해당하는 정점 데이터를 추출하여 버퍼(buffer)에 임시로 저장하고, 프로세서에서 처리하고 있던 배치를 모두 처리하면 버퍼에 저장된 배치를 프로세서가 즉시 처리할 수 있도록 출력한다.

Description

정점 데이터 처리 장치 및 방법{Apparatus and method for processing vertex}
본 발명은 3차원 그래픽 파이프라인(3Dimension graphics pipeline)에 관한 것으로, 보다 상세하게는 프로세서(processor)를 기반으로 한 멀티미디어 데이터 처리에 있어서 보다 효율적으로 스트림 프로세싱(stream processing)을 하는 장치 및 방법에 관한 것이다.
도 1은 종래의 3차원 그래픽 파이프라인의 일부를 블록도로 도시한 것으로서, 모델-뷰 변환부(100, Model-View Transform Unit), 클리핑부(120, Clipping Unit) 및 뷰포인트 매핑부(130, Viewpoint Mapping Unit)를 포함하고, 라이팅부(105, Lighting Unit) 및 백-페이스 컬링부(110, Back-Face Culling Unit)를 선택적으로 포함할 수 있다.
모델-뷰 변환부(100)는 정점 데이터들을 3차원 뷰잉 좌표 시스템(3 Dimension viewing coordinate system)으로 변환하고, 라이팅(405)은 3차원 뷰잉 시스템에 빛(light)과 반사율(reflectance)을 적용하며, 백-페이스 컬링부(410)는 백-페이스 컬링을 수행하고, 클리핑부(420)는 뷰 볼륨(view volume)에서 보이지 않 는 정점 데이터를 삼각형 단위로 제거하며, 뷰포인트 매핑부(430)는 뷰포인트(viewpoint)로 변환한다.
이러한 종래의 3차원 그래픽 파이프라인은 정점 데이터들을 처리함에 있어서 파이프라인 방식(pipeline fashion)에 따라 각 구성요소 별로 정점 데이터를 처리한다. 그러나 이와 같은 종래의 3차원 그래픽 파이프라인 의 각 구성요소를 프로세서에서 구현할 때에는 정점 데이터들을 배치(batch)단위로 묶어 반복적으로 처리하는 루프 방식(loop fashion)에 비하여 상당히 비효율적이라는 문제점이 있다.
또한, 도 4에 도시된 3차원 그래픽 파이프라인과 같이 도 1에 도시된 3차원 그래픽 파이프라인에서 처리하기 전에 미리 정점 데이터들을 배치 단위로 정렬하는 배치 구성부(400)를 추가로 구비함으로써 각 구성요소가 배치를 처리 단위로 하여 루프 방식에 따라 정점 데이터들을 처리한다고 가정하면, 프로세서가 소정의 배치에 해당하는 정점 데이터를 처리한 후부터 다음에 처리할 배치를 구성하는 과정에서 동시 다발적인 랜덤 메모리 액세스가 지나치게 많이 요구되므로 처리 시간도 상당히 지연되는 문제점을 갖는다.
본 발명이 이루고자 하는 기술적 과제는, 프로세서(processor)가 배치(batch) 단위로 정점 데이터(vertex)를 처리하는 동시에 프로세서와는 독립적으로 다음에 처리할 배치에 해당하는 정점 데이터를 추출하여 버퍼(buffer)에 임시로 저장하고, 프로세서에서 처리하고 있던 배치를 모두 처리하면 버퍼에 저장된 배치 를 프로세서가 즉시 처리할 수 있도록 출력하는 장치 및 방법을 제공하는 것이다.
상기의 과제를 이루기 위한 본 발명에 의한 정점 데이터 처리 장치는, 정점 데이터(vertex)들을 저장하는 제1 저장부; 상기 저장된 정점 데이터들 가운데 기 설정된 처리 단위에 해당하는 정점 데이터들을 저장하는 제2 저장부; 상기 제2 저장부에 저장된 정점 데이터들을 처리하는 처리부; 및 상기 처리부에서 제2 저장부에 저장된 정점 데이터들을 처리하고 있는 동안 다음에 처리할 상기 처리 단위에 해당하는 정점 데이터들을 상기 제1 저장부에서 추출하고, 상기 제2 저장부에 저장된 정점 데이터들이 모두 처리되면 상기 추출된 정점 데이터들을 상기 제2 저장부로 출력하는 추출부를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위한 본 발명에 의한 정점 데이터 처리 장치는, 정점 데이터들을 저장하는 저장부; 기 설정된 처리 단위로 정점 데이터들을 처리하는 처리부; 및 상기 정점데이터 처리부에서 정점 데이터들을 처리하고 있는 동안 다음에 처리할 정점 데이터들을 상기 저장된 정점 데이터들에서 상기 처리 단위만큼 추출하는 추출부를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위한 본 발명에 의한 정점 데이터 추출 장치는, 프로세서(processor)에서 정점 데이터들을 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 데이터 추출부; 상기 추출된 정점 데이터들을 임시로 저장하는 임시 저장부; 및 상기 처리하고 있는 정점 데이터들이 모두 처리되면 상기 임시로 저장된 정점 데이터들을 상기 프로세서에서 데 이터를 처리하기 위해 일시적으로 저장하는 메모리에 출력하는 출력부를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위한 본 발명에 의한 정점 데이터 처리 방법은, 정점 데이터를 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 단계; 상기 처리하고 있는 정점 데이터가 모두 처리되면, 상기 추출된 정점 데이터들을 출력하는 단계; 및 상기 출력된 정점 데이터들을 처리하는 단계를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위한 본 발명에 의한 정점 데이터 추출 방법은, 프로세서에서 정점 데이터들을 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 단계; 상기 추출된 정점 데이터들을 임시로 저장하는 단계; 및 상기 처리하고 있는 정점 데이터들이 모두 처리되면 상기 임시로 저장된 정점 데이터들을 상기 프로세서에서 데이터를 처리하기 위해 일시적으로 저장하는 메모리로 출력하는 단계를 포함하는 것을 특징으로 한다.
상기의 과제를 이루기 위한 본 발명에 의한 기록 매체는, 정점 데이터를 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 단계; 상기 처리하고 있는 정점 데이터가 모두 처리되면, 상기 추출된 정점 데이터들을 출력하는 단계; 및 상기 출력된 정점 데이터들을 처리하는 단계를 포함하는 발명을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있다.
상기의 과제를 이루기 위한 본 발명에 의한 기록 매체는, 프로세서에서 정점 데이터들을 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 단계; 상기 추출된 정점 데이터들을 임시로 저장하는 단계; 및 상기 처리하고 있는 정점 데이터들이 모두 처리되면 상기 임시로 저장된 정점 데이터들을 상기 프로세서에서 데이터를 처리하기 위해 일시적으로 저장하는 메모리로 출력하는 단계를 포함하는 발명을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있다.
본 발명에 의한 정점 데이터 처리 장치 및 방법에 의하면, 3차원 그래픽 파이프라인에서 배치(batch)를 처리 단위로 하여 루프 방식(loop fashion)에 따라 정점 데이터(vertex)들을 처리함으로써 보다 효율적으로 처리할 수 있는 효과를 갖는다.
또한, 3차원 그래픽 파이프라인에서 배치를 단위로 처리함에도 불구하고 작은 용량의 내부 버퍼만 추가하고 DMA(Direct Memory Access)의 대량 전송(burst transfer)를 연동함으로써 프로세서가 소정의 배치에 해당하는 정점 데이터를 처리한 후부터 다음에 처리할 배치를 구성하는 데까지 지연되는 처리 시간을 감소시켜 배치를 형성하는 데 필요한 오버헤드(overhead)를 절감할 수 있는 효과를 갖는다.
이하, 첨부된 도면들을 참조하여 본 발명에 따른 정점 데이터 처리 장치 및 방법에 대해 상세히 설명한다.
도 2a는 본 발명에 의한 정점 데이터 처리 장치에 대한 일 실시예를 블록도 로 도시한 것으로서, 정점 데이터 처리 장치는 제1 저장부(200), 추출부(210), 제2 저장부(220) 및 처리부(230)를 포함하여 이루어진다.
제1 저장부(200)는 외부에 마련된 저장 매체로서 정점(vertex) 데이터들을 저장한다. 여기서, 정점 데이터는 정점의 좌표(position), 정점의 노멀(normal), 정점의 컬러(color), 정점의 텍스쳐 좌표(texture coordinate) 등을 포함하는 정점에 대한 정보를 포함하는 데이터를 말한다.
이러한 제1 저장부(200)의 실시예로 외부 램(External Random Access Memory)으로 구현할 수 있다.
추출부(210)는 제2 저장부(220)에 저장된 기 설정된 처리 단위에 해당하는 정점 데이터들을 처리부(230)에서 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 제1 저장부(200)에서 추출하여 임시로 저장한다. 그리고 추출부(210)는 기 설정된 처리 단위로 추출된 정점 데이터를 임시로 저장한 후 제2 저장부(220)에 저장된 정점 데이터들이 모두 처리부(230)에서 처리하면, 임시로 저장한 정점 데이터를 제2 저장부(210)로 출력하여 기입한다.
여기서, 기 설정된 처리 단위는 정점 데이터를 프로세서(processor)에서 루프(loop)에 의해 처리할 수 있도록 정점 데이터들을 구성하는 단위를 말한다. 예를 들어, 기 설정된 처리 단위는 3D 그래픽 지오메트리 엔진(Graphic Geometry Engine)의 경우 메모리에 임의로 분포되어 있는 정점 데이터들에 대하여 연속적인 인덱싱(indexing)으로 삼각형이 되도록 구성할 수 있다.
이러한 기 설정된 처리 단위는 배치(batch)로 하는 것이 바람직하다. 그러 나 기 설정된 처리 단위를 반드시 배치에 한정하여 실시해야 하는 것은 아니다. 이하에서는 기 설정된 처리 단위를 배치로 가정하여 실시예를 설명하기로 한다. 추출부(210)는 제2 저장부(220)에 저장된 제n 배치를 처리부(230)에서 처리하고 있는 동안 제(n+1) 배치를 제1 저장부(200)에서 추출하여 임시로 저장하고, 제2 저장부(210)에 저장된 모든 제n 배치가 처리부(230)에서 처리되면, 임시로 저장한 제(n+1) 배치를 제2 저장부(210)로 출력하여 기입한다.
추출부(210)에서 제2 저장부(220)로 출력함에 있어서, 추출부(210)는 처리부(230)에서 제2 저장부(220)에 저장된 배치를 모두 처리하여 출력한 트리거(trigger)를 입력받으면 임시로 저장된 배치를 대량 전송(burst transfer)에 의해 출력한다.
다시 말하면, 처리부(230)가 제2 저장부(210)에 저장된 제n 배치를 처리하는 동시에 추출부(210)는 제1 저장부(200)에서 제(n+1) 배치를 추출하여 임시로 저장하고, 처리부(230)는 제n 배치를 모두 처리하면 추출부(210)에 트리거를 출력하며, 추출부(230)는 임시로 저장된 제(n+1) 배치를 대량 전송에 의해 제2 저장부(220)로 출력하여 제(n+1) 배치를 제2 저장부(220)에 기입한다.
그리고 추출부(230)는 제2 저장부(220)로 제(n+1) 배치를 출력한 후 처리부(230)에서 제(n+1) 배치를 처리하는 동안 제(n+2) 배치를 제1 저장부(200)에서 추출함으로써 모든 배치가 처리될 때까지 반복하여 수행한다.
도 2a에서 도시된 실시예에서는 추출부(230)가 DMAC(Direct Memory Access Controller, 기억 장치 직접 접근 제어기)의 기능을 포함하여 실시하는 경우를 개 시하고 있지만, 추출부(230)가 DMAC를 포함하지 않고 별도로 추출부(230)의 외부에 DMAC를 마련하여 실시하는 경우를 도 3a에서 후술하기로 한다.
도 2b는 본 발명에 의한 정점 데이터 처리 장치에 포함된 추출부(210)에 대한 일 실시예를 블록도로 도시한 것으로서, 추출부(210)는 데이터 추출부(240), 임시 저장부(250) 및 출력부(260)를 포함하여 이루어진다.
데이터 추출부(240)는 제2 저장부(210)에 저장된 배치 단위의 정점 데이터들을 처리부(230)에서 처리하고 있는 동안 다음에 처리할 배치 단위에 해당하는 정점 데이터들을 추출한다.
임시 저장부(250)는 데이터 추출부(240)에서 추출된 배치를 임시로 저장한다.
출력부(260)는 처리부(230)에서 제2 저장부(210)에 저장된 배치를 모두 처리하여 출력된 트리거에 응답하여 임시 저장부(250)에 임시로 저장된 배치를 제2 저장부(210)로 대량 전송(burst transform)에 의해 출력하고 제2 저장부(210)에 기입한다.
다시 도 2a에 도시된 실시예를 설명하면, 제2 저장부(220)는 추출부(210)에서 출력된 기 설정된 처리 단위에 해당하는 정점 데이터들을 저장한다. 구체적으로 설명하면, 제2 저장부(220)는 처리부(230)에서 기 설정된 처리 단위로 처리하기 위해 기 설정된 처리 단위에 해당하는 정점 데이터들만을 일시적으로 저장한다. 제2 저장부(220)는 처리부(230)에서 복사 또는 정보의 일시 기억을 위해 고속 기억 기능을 가진 소용량 저장 매체로 마련된다. 이러한 제2 저장부(220)의 실시예로 SPM(Scratch Pad Memory, 보조적 기억 장치)으로 구현할 수 있다.
처리부(230)는 제2 저장부(220)에 저장된 정점 데이터들을 기 설정된 처리 단위로 하여 처리한다. 보다 상세하게 설명하면, 처리부(230)는 제2 저장부(220)에 저장된 정점 데이터들에 변환(transform) 또는 라이팅(lighting)을 적용하여 화면에 출력될 정점을 중심으로 기하 계산(geometry calculation)을 수행한다. 또한, 처리부(230)는 기하 계산이 수행되어 배치 단위로 구성된 프레그먼트(fragment)를 픽셀로 처리하는 래스터라이즈(rasterize)까지 포함하여 수행할 수도 있다.
도 4는 기하 계산만 수행하는 처리부(230)의 일 실시예를 블록도로 도시한 것이다. 배치 구성부(400)는 전술한 도 2a의 추출부(210) 및 제2 저장부(220)를 포함하는 구성요소로서 배치 단위로 정점 데이터들을 구성한다. 그리고 처리부(230)는 모델-뷰 변환부(410, Model-View Transform Unit), 클리핑부(430, Clipping Unit) 및 뷰포인트 매핑부(440, Viewpoint Mapping Unit)를 포함하고, 라이팅부(415, Lighting Unit) 및 백-페이스 컬링부(420, Back-Face Culling Unit)를 선택적으로 포함할 수 있다. 모델-뷰 변환부(410)는 배치 구성부(400)에서 구성된 배치 단위로 구성된 정점 데이터들을 3D 뷰잉 좌표 시스템(3Dimension viewing coordinate system)으로 변환하고, 라이팅(415)은 3D 뷰잉 시스템에 빛(light)과 반사율(reflectance)을 적용하며, 백-페이스 컬링부(420)는 백-페이스 컬링을 수행하고, 클리핑부(430)는 윈도우 뷰(window view)에서 보이지 않는 정점들을 제거하며, 뷰포인트 매핑부(440)는 뷰포인트(viewpoint)로 변환한다. 도 1에 도시된 종래 의 3차원 그래픽 파이프라인에서 각 구성요소의 파이프 방식(pipelined fashion)에 따라 각 정점 데이터를 처리하는 것과 달리 모델-뷰 변환부(410), 라이팅(415), 백-페이스 컬링부(420), 클리핑부(430) 및 뷰포인트 매핑부(440)는 배치 구성부(400)에서 구성된 배치를 처리 단위로 하여 루프 방식(loop fashion)에 따라 정점 데이터들을 처리한다.
도 3a는 본 발명에 의한 정점 데이터 처리 장치에 대한 다른 일 실시예를 블록도로 도시한 것으로서, 정점 데이터 처리 장치는 외부 메모리(300), 추출부(310), DMAC(315), 임시 메모리(320) 및 프로세서(330)를 포함하여 이루어진다.
외부 메모리(300)는 외부 램(External Random Access Memory)으로 외부에 마련된 저장 매체로서 정점(vertex) 데이터들을 저장한다. 여기서, 정점 데이터는 정점의 좌표(position), 정점의 노멀(normal), 정점의 컬러(color), 정점의 텍스쳐 좌표(texture coordinate) 등을 포함하는 정점에 대한 정보를 포함하는 데이터를 말한다.
추출부(310)는 임시 메모리(320)에 저장된 배치(batch) 단위에 해당하는 정점 데이터들을 프로세서(330)에서 처리하고 있는 동안 개별 읽기 요청(individual read request)을 DMAC(315)에 출력함으로써 외부 메모리(300)에 저장된 정점 데이터들 가운데 다음에 처리할 배치 단위에 해당하는 정점 데이터들을 추출한다. 그리고 추출부(310)는 배치 단위의 정점 데이터들을 버퍼(buffer)에 임시로 저장하고, 프로세서(330)로부터 트리거(trigger)를 입력받으면 대량 전송 요청(burst transfer request)을 DMAC(315)에 출력함으로써 버퍼에 저장된 배치 단위의 정점 데이터들을 임시 메모리(320)로 대량 전송(burst transfer)에 의해 출력하여 기입한다.
여기서, 배치는 기 설정된 처리 단위의 일 실시예로 정점 데이터를 프로세서(processor)에서 루프(loop)에 의해 처리할 수 있도록 정점 데이터들을 구성되는 단위를 말한다. 예를 들어, 배치는 3차원 그래픽 지오메트리 엔진(3Dimension Graphic Geometry Engine)의 경우 메모리에 임의로 분포되어 있는 정점 데이터에 대하여 연속적인 인덱싱(indexing)으로 삼각형이 되도록 구성할 수 있다. 그러나 기 설정된 처리 단위를 반드시 배치에 한정하여 실시해야 하는 것은 아니다.
이하에서는 기 설정된 처리 단위를 배치로 가정하여 실시예를 설명하기로 한다. 추출부(310)는 임시 메모리(320)에 저장된 제n 배치를 프로세서(330)에서 처리하고 있는 동안 개별 읽기 요청(individual read request)을 DMAC(315)에 출력함으로써 외부 메모리(300)에 저장된 정점 데이터들 가운데 제(n+1) 배치를 추출한다. 그리고 추출부(310)는 버퍼에 제(n+1) 배치를 임시로 저장하고, 프로세서(330)에서 제n 배치를 모두 처리하여 출력한 트리거에 응답하여 대량 전송 요청(burst transfer request)을 DMAC(315)에 출력함으로써 버퍼에 저장된 제(n+1) 배치를 임시 메모리(320)로 대량 전송(burst transfer)에 의해 출력하여 기입한다.
그리고 추출부(310)는 임시 메모리(320)로 제(n+1) 배치를 출력한 후 프로세서(330)에서 제(n+1) 배치를 처리하는 동안 제(n+2) 배치를 외부 메모리(300)에서 추출함으로써 모든 배치가 처리될 때까지 반복하여 수행한다.
도 3b는 본 발명에 의한 정점 데이터 처리 장치에 포함된 추출부(310)에 대 한 일 실시예를 블록도로 도시한 것으로서, 추출부(310)는 DMA 인터페이스 로직(335), 버퍼(340), 인덱스(345), 시작 주소(350) 및 대량 전송 트리거 로직(355)을 포함하여 이루어진다.
DMA 인터페이스 로직(335, Direct Memory Access interface logic)은 임시 메모리(320)에 저장된 배치 단위에 해당하는 정점 데이터들을 프로세서(330)에서 처리하고 있는 동안 개별 읽기 요청(individual read request)을 DMAC(315)에 출력함으로써 외부 메모리(300)에 저장된 정점 데이터들 가운데 다음에 처리할 배치 단위에 해당하는 정점 데이터들을 검색하여 추출한다.
또한, DMA 인터페이스 로직(335)은 버퍼(340)에 저장된 배치 단위에 해당하는 정점 데이터들을 버퍼(340)에서 임시 메모리(320)로 이동하기 위해 대량 전송 요청(burst transfer request)을 DMAC(315)에 출력한다.
버퍼(340, buffer)는 DMAC(315)에 의해 검색하여 추출한 다음에 처리할 배치 단위에 해당하는 정점 데이터들을 임시로 저장한다. 예를 들어, 버퍼(340)에 저장된 정점 데이터들로 구성된 배치는 (x, y, z) 좌표값으로 마련된 정점의 좌표, (x, y, z) 벡터값으로 마련된 정점의 노멀, (r, g, b, a) 색상값으로 마련된 정점의 컬러, (u, v) 좌표값으로 마련된 정점의 텍스쳐 좌표로 마련된다.
인덱스 저장부(345)는 배치를 구성하는 정점 데이터에 인덱싱(indexing)하여 인덱스(index)들의 배열(array)을 저장한다.
시작주소 저장부(350)는 배치를 구성하는 정점 데이터들이 외부 메모리(300)에서 할당된 물리적인 주소(physical address)들을 저장한다.
대량 전송 트리거 로직(355, burst transfer trigger logic)은 프로세서(330)에서 임시 메모리(320)에 저장된 배치를 모두 처리하여 출력된 트리거에 응답하여 버퍼(350)에 저장된 정점 데이터들로 구성된 배치를 대량 전송(burst transfer)에 의해 임시 메모리(320)로 출력한다.
도 3b에 도시된 실시예를 보다 구체적인 예를 들어 설명하면 다음과 같다.
우선, DMA 인터페이스 로직(335)은 임시 메모리(320)에 저장된 제n 배치를 프로세서(330)에서 처리하고 있는 동안 개별 읽기 요청(individual read request)을 DMAC(315)에 출력함으로써 외부 메모리(300)에 저장된 정점 데이터들 가운데 다음에 처리할 제(n+1) 배치를 검색하여 추출한다.
버퍼(340)는 DMAC(315)에 의해 검색하여 추출한 제(n+1) 배치를 임시로 저장한다.
대량 전송 트리거 로직(355)은 프로세서(330)에서 임시 메모리(320)에 저장된 제n 배치를 모두 처리하여 출력된 트리거에 응답하여 버퍼(350)에 저장된 제(n+1) 배치를 대량 전송(burst transfer)에 의해 임시 메모리(320)로 출력한다.
대량 전송 트리거 로직(355)에서 제(n+1) 배치를 임시 메모리(320)로 출력한 후, DMA 인터페이스 로직(335), 버퍼(340) 및 대량 전송 트리거 로직(355)은 제(n+2) 배치에 대하여 수행한다. 이와 동일한 방식으로 DMA 인터페이스 로직(335), 버퍼(340) 및 대량 전송 트리거 로직(355)은 반복하여 수행한다.
DMAC(315, Direct Memory Access Controller)는 추출부(310)에 포함된 DMA 인터페이스 로직(335)으로부터 출력된 개별 읽기 요청(individual read request)에 응답하여 추출부(310)가 외부 메모리(300)에 저장된 정점 데이터들 가운데 다음에 처리할 배치 단위에 해당하는 정점 데이터들을 검색할 수 있게 한다.
또한, DMAC(315)은 추출부(310)에 포함된 DMA 인터페이스 로직(335)으로부터 출력된 대량 전송 요청(burst transfer request)에 응답하여 추출부(310)의 내부에 마련된 버퍼(340)에 저장된 배치 단위에 해당하는 정점 데이터들을 버퍼(340)에서 임시 메모리(320)로 이동하여 저장한다.
여기서, DMAC(315)는 기억 장치 직접 접근 방식으로 데이터를 전송할 때 프로세서(330)와는 독립된 전송회로(채널)를 구비하여 외부 메모리(300)와 추출부(310) 사이에서 직접 데이터를 교환할 수 있도록 제어한다.
다시 도 3a에 도시된 실시예를 설명하면, 임시 메모리(320)는 SPM(Scratch Pad Memory, 보조적 기억 장치)으로 프로세서(330)에서 기 설정된 처리 단위로 처리하기 위해 추출부(310)에서 출력된 배치를 일시적으로 저장한다.
프로세서(330, processor)는 임시 메모리(320)에 배치 단위로 저장된 정점 데이터들을 배치 단위로 하여 처리한다. 보다 상세하게 설명하면, 프로세서(330)는 임시 저장부(320)에 저장된 배치에 변환(transform) 또는 라이팅(lighting)을 적용하여 화면에 출력될 정점을 중심으로 기하 계산(geometry calculation)을 수행한다. 또한, 프로세서(330)는 기하 계산이 수행되어 배치 단위로 구성된 프레그먼트(fragment)를 픽셀로 처리하는 래스터라이즈(rasterize)까지 포함하여 수행할 수도 있다.
도 4는 기하 계산만 수행하는 프로세서(330)의 일 실시예를 블록도로 도시한 것이다. 배치 구성부(400)는 전술한 도 3a의 추출부(310) 및 임시 메모리(320)를 포함하는 구성요소로써 배치 단위로 정점 데이터들을 구성한다. 그리고 프로세서(330)는 모델-뷰 변환부(410, Model-View Transform Unit), 클리핑부(430, Clipping Unit) 및 뷰포인트 매핑부(440, Viewpoint Mapping Unit)를 포함하고, 라이팅부(415, Lighting Unit) 및 백-페이스 컬링부(420, Back-Face Culling Unit)를 선택적으로 포함할 수 있다. 모델-뷰 변환부(410)는 배치 구성부(400)에서 구성된 배치 단위로 구성된 정점 데이터들을 3차원 뷰잉 좌표 시스템(3 Dimension viewing coordinate system)으로 변환하고, 라이팅(415)은 3차원 뷰잉 시스템에 빛(light)과 반사율(reflectance)을 적용하며, 백-페이스 컬링부(420)는 백-페이스 컬링을 수행하고, 클리핑부(430)는 윈도우 뷰(window view)에서 보이지 않는 정점들을 제거하며, 뷰포인트 매핑부(440)는 뷰포인트(viewpoint)로 변환한다. 도 1에 도시된 종래의 3차원 그래픽 파이프라인에서 각 구성요소의 파이프 방식(pipelined fashion)에 따라 각 정점 데이터를 처리하는 것과 달리 모델-뷰 변환부(410), 라이팅(415), 백-페이스 컬링부(420), 클리핑부(430) 및 뷰포인트 매핑부(440)는 배치 구성부(400)에서 구성된 배치를 처리 단위로 하여 루프 방식(loop fashion)에 따라 정점 데이터들을 처리한다.
도 5는 본 발명에 의한 정점 데이터 처리 방법에 대한 일 실시예를 흐름도로 도시한 것이다.
먼저, 프로세서(processor)는 임시 메모리에 저장된 제n 배치(batch)를 처리한다(제500단계).
여기서, 배치는 기 설정된 처리 단위의 일 실시예로 정점 데이터를 프로세서(processor)에서 루프(loop)에 의해 처리할 수 있도록 정점 데이터들을 구성되는 단위를 말한다. 예를 들어, 배치는 3D 그래픽 지오메트리 엔진(Graphic Geometry Engine)의 경우 메모리에 임으로 분포되어 있는 정점 데이터에 대하여 연속적인 인덱싱(indexing)으로 삼각형이 되도록 구성할 수 있다. 그러나 기 설정된 처리 단위를 반드시 배치에 한정하여 실시해야 하는 것은 아니다.
그리고 프로세서는 임시 메모리에 배치 단위로 저장된 정점 데이터들을 배치를 처리 단위로 하여 처리한다. 보다 상세하게 설명하면, 프로세서는 임시 저장부에 저장된 배치에 변환(transform) 또는 라이팅(lighting)을 적용하여 화면에 출력될 정점을 중심으로 기하 계산(geometry calculation)을 수행한다. 또한, 프로세서는 기하 계산이 수행되어 배치 단위로 구성된 프레그먼트(fragment)를 픽셀로 처리하는 래스터라이즈(rasterize)까지 포함하여 수행할 수도 있다.
또한, 임시 메모리는 SPM(Scratch Pad Memory, 보조적 기억 장치)로서 프로세서에서 배치를 단위로 하여 처리하기 위해 배치를 일시적으로 저장한다.
제500단계에서 프로세서가 제n 배치를 처리하는 동안 BCU(Batch Constructor Unit)는 개별 읽기 요청(individual read request)을 DMAC(Direct Memory Access Controller)로 출력한다(제505단계).
여기서, DMAC는 기억 장치 직접 접근 방식으로 데이터를 전송할 때 프로세서와는 독립된 전송회로(채널)를 구비하여 외부 메모리와 BCU 사이에서 직접 데이터를 교환할 수 있도록 제어한다.
제505단계에서 출력된 개별 읽기 요청(individual read request)에 응답하여 DMAC는 BCU가 외부 메모리에 저장된 정점 데이터들 가운데 제(n+1) 배치에 해당하는 정점 데이터들을 검색할 수 있게 한다(제510단계).
DMAC가 제510단계를 수행함으로써 BCU는 제(n+1) 배치를 외부 메모리에서 검색하여 추출하고 BCU 내부에 마련된 버퍼(buffer)에 제(n+1) 배치를 임시로 저장한다(제515단계).
제505단계 내지 제515단계는 제500단계와는 독립적으로 제500단계에서 프로세서가 제n 배치를 처리하고 있는 동안 수행한다.
제500단계에서 프로세서가 제n 배치를 모두 처리하였는지 여부를 판단한다(제520단계).
제520단계에서 프로세서가 제n 배치를 모두 처리하였다고 판단되면, 프로세서는 BCU에 트리거(trigger)한다(제525단계).
제525단계에서 프로세서로부터 트리거된 BCU는 대량 전송 요청(burst transfer request)을 DMAC로 출력한다(제530단계).
제530단계에서 출력된 대량 전송 요청(burst transfer request)에 응답하여 DMAC는 BCU의 내부에 마련된 버퍼에 저장된 제(n+1) 배치를 임시 메모리로 대량 전송(burst transfer)에 의해 이동하여 저장한다(제535단계).
제535단계 후에, 제(n+1) 배치가 마지막으로 처리할 배치인지 여부를 판단한다(제540단계).
제540단계에서 추가로 처리할 배치가 있다고 판단되면, 'n'에 '1'을 가산하 고(제545단계), 제500단계 내지 제540단계를 반복하여 수행한다.
이러한 본 발명에 대한 이해를 돕기 위하여 도면에 도시된 실시예를 참고로 설명되었으나, 이는 예시적인 것에 불과하며, 당해 분야에서 통상적 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위에 의해 정해져야 할 것이다.
또한, 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터(정보 처리 기능을 갖는 장치를 모두 포함한다)가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장 장치 등이 있다.
도 1은 종래의 3차원 그래픽 파이프라인(3Dimension graphics pipeline)의 일부를 블록도로 도시한 것이다.
도 2a는 본 발명에 의한 정점 데이터 처리 장치에 대한 일 실시예를 블록도로 도시한 것이다.
도 2b는 본 발명에 의한 정점 데이터 처리 장치에 포함된 추출부(210)에 대한 일 실시예를 블록도로 도시한 것이다.
도 3a는 본 발명에 의한 정점 데이터 처리 장치에 대한 다른 일 실시예를 블록도로 도시한 것이다.
도 3b는 본 발명에 의한 정점 데이터 처리 장치에 포함된 추출부(310)에 대한 일 실시예를 블록도로 도시한 것이다.
도 4는 배치(batch)를 단위로 처리하는 3차원 그래픽 파이프라인의 일부를 블록도로 도시한 것이다.
도 5는 본 발명에 의한 정점 데이터 처리 방법에 대한 일 실시예를 흐름도로 도시한 것이다.
〈도면의 주요 부호에 대한 간단한 설명〉
300: 외부 메모리 310: 추출부
315: DMAC 320: 임시 메모리
330: 프로세서

Claims (18)

  1. 정점 데이터(vertex)들을 저장하는 제1 저장부;
    상기 저장된 정점 데이터들 가운데 기 설정된 처리 단위에 해당하는 정점 데이터들을 저장하는 제2 저장부;
    상기 제2 저장부에 저장된 정점 데이터들을 처리하는 처리부; 및
    상기 처리부에서 제2 저장부에 저장된 정점 데이터들을 처리하고 있는 동안 다음에 처리할 상기 처리 단위에 해당하는 정점 데이터들을 상기 제1 저장부에서 추출하고, 상기 제2 저장부에 저장된 정점 데이터들이 모두 처리되면 상기 추출된 정점 데이터들을 상기 제2 저장부로 출력하는 추출부를 포함하는 것을 특징으로 하는 정점 데이터 처리 장치.
  2. 제1항에 있어서, 상기 처리 단위는
    배치(batch)인 것을 특징으로 하는 정점 데이터 처리 장치.
  3. 제1항에 있어서, 상기 처리부는
    상기 정점 데이터들을 상기 처리 단위로 기하 계산(geometry calculation)하거나 기하 계산하고 래스터라이즈(rasterize)까지 수행하는 것을 특징으로 하는 정점 데이터 처리 장치.
  4. 제1항에 있어서, 상기 추출부는
    상기 추출된 정점 데이터들을 상기 제2 저장부로 출력함에 있어서 대량 전송(burst transfer)에 의해 출력하는 것을 특징으로 하는 정점 데이터 처리 장치.
  5. 제1항에 있어서, 추출부는
    상기 처리부에서 제2 저장부에 저장된 정점 데이터들을 처리하고 있는 동안 다음에 처리할 상기 처리 단위에 해당하는 정점 데이터들을 상기 제1 저장부에서 추출하는 데이터 추출부;
    상기 추출된 정점 데이터들을 임시로 저장하는 임시 저장부; 및
    상기 제2 저장부에 저장된 정점 데이터들이 모두 처리되면 상기 임시로 저장된 정점 데이터들을 상기 제2 저장부로 출력하는 전송부를 포함하는 것을 특징으로 하는 정점 데이터 처리 장치.
  6. 정점 데이터들을 저장하는 저장부;
    기 설정된 처리 단위로 정점 데이터들을 처리하는 처리부; 및
    상기 정점데이터 처리부에서 정점 데이터들을 처리하고 있는 동안 다음에 처리할 정점 데이터들을 상기 저장된 정점 데이터들에서 상기 처리 단위만큼 추출하는 추출부를 포함하는 것을 특징으로 하는 정점 데이터 처리 장치.
  7. 프로세서(processor)에서 정점 데이터들을 처리하고 있는 동안 다음에 처리 할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 데이터 추출부;
    상기 추출된 정점 데이터들을 임시로 저장하는 임시 저장부; 및
    상기 처리하고 있는 정점 데이터들이 모두 처리되면 상기 임시로 저장된 정점 데이터들을 상기 프로세서에서 데이터를 처리하기 위해 일시적으로 저장하는 메모리에 출력하는 출력부를 포함하는 것을 특징으로 하는 정점 데이터 추출 장치.
  8. 제7항에 있어서, 상기 처리 단위는
    배치인 것을 특징으로 하는 정점 데이터 처리 장치.
  9. 제7항에 있어서, 상기 출력부는
    상기 임시로 저장된 정점 데이터들을 상기 메모리로 출력함에 있어서 대량 전송에 의해 출력하는 것을 특징으로 하는 정점 데이터 처리 장치.
  10. 정점 데이터를 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 단계;
    상기 처리하고 있는 정점 데이터가 모두 처리되면, 상기 추출된 정점 데이터들을 출력하는 단계; 및
    상기 출력된 정점 데이터들을 처리하는 단계를 포함하는 것을 특징으로 하는 정점 데이터 처리 방법.
  11. 제10항에 있어서, 상기 처리 단위는
    배치인 것을 특징으로 하는 정점 데이터 처리 장치.
  12. 제10항에 있어서, 상기 처리하는 단계는
    상기 정점 데이터들을 상기 처리 단위로 기하 계산만 수행하거나 기하 계산하고 래스터라이즈까지 수행하는 것을 특징으로 하는 정점 데이터 처리 방법.
  13. 제10항에 있어서, 상기 출력하는 단계는
    상기 추출된 정점 데이터들을 출력함에 있어서 대량 전송에 의해 출력하는 것을 특징으로 하는 정점 데이터 처리 방법.
  14. 프로세서에서 정점 데이터들을 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 단계;
    상기 추출된 정점 데이터들을 임시로 저장하는 단계; 및
    상기 처리하고 있는 정점 데이터들이 모두 처리되면 상기 임시로 저장된 정점 데이터들을 상기 프로세서에서 데이터를 처리하기 위해 일시적으로 저장하는 메모리로 출력하는 단계를 포함하는 것을 특징으로 하는 정점 데이터 추출 방법.
  15. 제14항에 있어서, 상기 처리 단위는
    배치인 것을 특징으로 하는 정점 데이터 추출 방법.
  16. 제14항에 있어서, 상기 출력하는 단계는
    상기 임시로 저장된 정점 데이터들을 출력함에 있어서 대량 전송에 의해 출력하는 것을 특징으로 하는 정점 데이터 추출 방법.
  17. 정점 데이터를 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 단계;
    상기 처리하고 있는 정점 데이터가 모두 처리되면, 상기 추출된 정점 데이터들을 출력하는 단계; 및
    상기 출력된 정점 데이터들을 처리하는 단계를 포함하는 발명을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  18. 프로세서에서 정점 데이터들을 처리하고 있는 동안 다음에 처리할 기 설정된 처리 단위에 해당하는 정점 데이터들을 추출하는 단계;
    상기 추출된 정점 데이터들을 임시로 저장하는 단계; 및
    상기 처리하고 있는 정점 데이터들이 모두 처리되면 상기 임시로 저장된 정점 데이터들을 상기 프로세서에서 데이터를 처리하기 위해 일시적으로 저장하는 메모리로 출력하는 단계를 포함하는 발명을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020070093849A 2007-09-14 2007-09-14 정점 데이터 처리 장치 및 방법 KR101440106B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070093849A KR101440106B1 (ko) 2007-09-14 2007-09-14 정점 데이터 처리 장치 및 방법
US12/076,272 US8749567B2 (en) 2007-09-14 2008-03-14 Apparatus for and method of processing vertex

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070093849A KR101440106B1 (ko) 2007-09-14 2007-09-14 정점 데이터 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20090028337A true KR20090028337A (ko) 2009-03-18
KR101440106B1 KR101440106B1 (ko) 2014-09-17

Family

ID=40453964

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070093849A KR101440106B1 (ko) 2007-09-14 2007-09-14 정점 데이터 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US8749567B2 (ko)
KR (1) KR101440106B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110080503A (ko) * 2010-01-06 2011-07-13 삼성전자주식회사 타일 기반의 렌더링 장치 및 렌더링 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8947444B1 (en) * 2008-12-09 2015-02-03 Nvidia Corporation Distributed vertex attribute fetch

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04305755A (ja) 1990-12-04 1992-10-28 Nec Corp コンピュータシステムのバッチ処理方式
US5801714A (en) * 1995-05-01 1998-09-01 Intergraph Corporation Vertex list management system
US6184908B1 (en) * 1998-04-27 2001-02-06 Ati Technologies, Inc. Method and apparatus for co-processing video graphics data
US6778174B1 (en) * 2000-05-04 2004-08-17 International Business Machines Corporation Method and apparatus for attribute processing with an active pipeline stage in a data processing system
JP2002216122A (ja) * 2001-01-16 2002-08-02 Ricoh Co Ltd 画像処理装置
TWI245234B (en) * 2001-12-19 2005-12-11 Silicon Integrated Sys Corp Apparatus and method for accessing vertex data
US6795080B2 (en) 2002-01-30 2004-09-21 Sun Microsystems, Inc. Batch processing of primitives for use with a texture accumulation buffer
JP4305755B2 (ja) 2003-12-11 2009-07-29 ビューテック株式会社 成形型の製造方法及び樹脂成形品の製造方法
US20060061577A1 (en) * 2004-09-22 2006-03-23 Vijay Subramaniam Efficient interface and assembler for a graphics processor
US8001294B2 (en) 2004-09-28 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for providing a compressed network in a multi-processing system
KR20070008077A (ko) 2005-07-12 2007-01-17 삼성전자주식회사 환형 다중 프로세서를 가지는 구조에서 직접 메모리 접근제어기의 배치 방법 및 시스템
CN100373362C (zh) 2005-12-22 2008-03-05 北京中星微电子有限公司 直接存储访问控制器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110080503A (ko) * 2010-01-06 2011-07-13 삼성전자주식회사 타일 기반의 렌더링 장치 및 렌더링 방법

Also Published As

Publication number Publication date
US8749567B2 (en) 2014-06-10
US20090073163A1 (en) 2009-03-19
KR101440106B1 (ko) 2014-09-17

Similar Documents

Publication Publication Date Title
US6252610B1 (en) Method and apparatus for efficiently switching state in a graphics pipeline
US8194086B2 (en) Memory system and method for improved utilization of read and write bandwidth of a graphics processing system
JP4071196B2 (ja) ゾーン・レンダリング用の自動メモリ管理
JP4280270B2 (ja) 幾何プリミティブのインデックスを外す方法、ラスタ化装置、コンピュータ可読媒体
US20180211439A1 (en) Untransformed display lists in a tile based rendering system
US20180144538A1 (en) Method and apparatus for performing tile-based rendering
CN110223216B (zh) 一种基于并行plb的数据处理方法、装置及计算机存储介质
JP7078628B2 (ja) 圧縮されたリソースへのシェーダ書き込み
CN103003839A (zh) 反锯齿样本的拆分存储
CN109978977A (zh) 使用预取的图形数据执行基于图块的渲染的装置和方法
US20230409221A1 (en) Methods and systems for storing variable length data blocks in memory
KR20200067222A (ko) 그래픽스 파이프라인에서의 인덱스들의 압축 및 압축 해제
US7542046B1 (en) Programmable clipping engine for clipping graphics primitives
US11978234B2 (en) Method and apparatus of data compression
US10049487B2 (en) Identifying duplicate indices in an input index stream
KR20090028337A (ko) 정점 데이터 처리 장치 및 방법
US7490208B1 (en) Architecture for compact multi-ported register file
US20030231183A1 (en) Apparatus and method of processing image data
US6867783B2 (en) Recording medium having recorded thereon three-dimensional graphics drawing data having data structure shareable by frames and method of drawing such data
US10395424B2 (en) Method and apparatus of copying data to remote memory
US7898543B1 (en) System and method for optimizing texture retrieval operations
KR0170665B1 (ko) 3차원 그래픽스용 램
GB2563927A (en) Multi-viewport transformation module for use in 3D rendering system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190820

Year of fee payment: 6