KR100382107B1 - 고성능 3 차원 그래픽 가속기를 위한 일관성 버퍼의 방법및 장치 - Google Patents

고성능 3 차원 그래픽 가속기를 위한 일관성 버퍼의 방법및 장치 Download PDF

Info

Publication number
KR100382107B1
KR100382107B1 KR10-2000-0049844A KR20000049844A KR100382107B1 KR 100382107 B1 KR100382107 B1 KR 100382107B1 KR 20000049844 A KR20000049844 A KR 20000049844A KR 100382107 B1 KR100382107 B1 KR 100382107B1
Authority
KR
South Korea
Prior art keywords
entry
pixel
buffer
consistency
depth
Prior art date
Application number
KR10-2000-0049844A
Other languages
English (en)
Other versions
KR20020016675A (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 KR10-2000-0049844A priority Critical patent/KR100382107B1/ko
Priority to US09/650,781 priority patent/US6839060B1/en
Publication of KR20020016675A publication Critical patent/KR20020016675A/ko
Application granted granted Critical
Publication of KR100382107B1 publication Critical patent/KR100382107B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

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

Abstract

본 발명은 중첩 구간을 미리 검사하지 않고 렌더링된 픽셀에 대해서 중첩 여부를 판명하여 일관성 유지를 지원하는 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼의 방법 및 장치를 제공하기 위한 것으로서, 처리할 프리미티브를 버퍼의 빈 영역에 전송하는 명령 추출부와, 상기 명령 추출부에서 전송된 다수의 프리미티브를 버퍼링하고, 입력될 위치를 할당하는 인출부와, 상기 인출부에서 할당된 다수의 프리미티브를 각각 입력받아 렌더링을 수행하는 렌더링 가속부와, 상기 각각의 렌더링 가속부에서 계산된 각각의 프리미티브의 깊이 값, 색깔 값에 따른 일관성 처리에 필요한 정보를 저장하는 일관성 버퍼와, 상기 일관성 버퍼에 저장된 정보를 이용하여 순서에 따른 일관성 처리를 통해 메모리에 읽기/쓰기 연산을 수행하는 메모리 인터페이스부를 포함하여 구성되는데 있다.

Description

고성능 3 차원 그래픽 가속기를 위한 일관성 버퍼의 방법 및 장치{method and device of consistency buffer for high performance 3D graphic accelerator}
본 발명은 3 차원 그래픽 가속기에 관한 것으로, 특히 렌더링 처리부 내부에서 프리미티브를 병렬로 처리하는 3차원 그래픽 가속기에서의 일관성을 유지하는 버퍼구조에 관한 것이다.
3차원 그래픽은 멀티미디어 환경을 구축하기 위한 가장 핵심적인 부분으로, 3차원 그래픽 가속기를 필요로 한다.
상기 3차원 그래픽 가속기(accelerator)는 3차원 그래픽을 디스플레이하기 위해서 매우 복잡한 계산 과정을 거쳐야 하는데, 이러한 소프트웨어적인 계산을 하드웨어적으로 옮겨놓은 것을 말한다.
일반적으로 PC 급에 장착되는 3차원 그래픽 가속기의 렌더링 칩은 한 개의 프리미티브에 대하여 고속 처리하는 구조로 되어 있어서, 많은 양의 프리미티브를 수행하기 위해서는 많은 시간이 소요된다.
그래서 최근에는 프리미티브들의 병렬성을 이용하여 여러 개의 프리미티브를 동시에 처리할 수 있도록 채택한 고성능 렌더링 칩 구조가 발표되었다.
도 1 은 종래 기술에 따른 3차원 그래픽 처리과정을 나타낸 도면이다.
도 1 은 보면, 3차원 응용 소프트웨어(1)가 API(Application Program Interface)(2)를 통하여 3차원 그래픽 가속기(3)로 전송되어지면, 상기 3차원 그래픽 가속기는 실시간 하드웨어 가속을 수행한 후 디스플레이(4)로 보내진다.
이때 대부분의 3 차원 그래픽 가속기(3)의 렌더링 처리부(3b)는 주로 삼각형 모양의 프리미티브를 사용하여 고속으로 처리하는데, 이는 삼각형의 경우가 하드웨어적으로 처리하기에 쉽기 때문이다.
상기 프리미티브는 API(2)를 통하여 3 차원 그래픽 가속기(3)에 입력되는 3차원 데이터로 주로 점, 선, 다각형으로 구성된다.
그런데 이러한 3차원 그래픽 처리과정에서 병렬성을 이용하여 여러 개의 프리미티브를 처리할 때, 스크린 상에서 프리미티브들끼리 중첩 될 경우 일관성 문제가 발생하게 된다.
이 프리미티브의 병렬성 및 일관성 문제를 실시예를 통해 상세히 살펴보면 다음과 같다.
먼저, 각 프리미티브들이 스크린 좌표 상에 중첩 구간이 없는 경우에는 렌더링 처리부로 입력되는 프리미티브들이 입력되는 순서에 상관없이 병렬처리로 수행될 수 있다.
이를 비순서 수행(out of order execution)이라 한다.
도 2 는 종래 기술에 따른 한 프레임 상에 디스플레이되는 5 개의 프리미티브들을 나타낸 실시예이다.
이때 5 개의 삼각형 프리미티브는 렌더링 처리부로 입력되는 순서가 1번부터 5번 삼각형 순으로 이루어진다.
도 2를 보면, 1번, 2번, 그리고 3번 삼각형으로 구성된 제 1 영역과, 4번, 5번 삼각형으로 구성된 제 2 영역으로 이루어진다.
이때 상기 제 1 영역과 제 2 영역은 서로 중첩되는 구간이 존재하지 않는다.
그리고 상기 제 1 영역에서 1번과 2번 삼각형은 중첩되는 부분이 존재하지 않고, 3번 삼각형은 1번과 2번 삼각형에 중첩되는 부분이 존재한다.
그리고 상기 제 2 영역에서 4번과 5번 삼각형은 중첩되는 부분이 존재한다.
도 3 은 도 2의 삼각형들에서 중첩되는 부분이 없도록 두 개의 부분으로 나눈 도면이다.
이때 렌더링 처리부에서 여러 개 존재하는 프리미티브를 병렬로 수행할 경우, 도 3(a)에 디스플레이되는 3번, 5번 삼각형, 또는 도 3(b)에 디스플레이되는 1번, 2번, 4번 삼각형은 서로 중첩되는 부분이 없기 때문에 입력되는 순서에 상관없이 병렬로 처리할 수 있다.
그러나, 도 3(a)과 도 3(b)에 있는 삼각형들을 모두 처리하기 위해서는 서로 중첩되는 부분이 존재하므로, 순차적인 처리를 해야된다.
그리고 만약 병렬처리로 수행하면 중첩구간에 대하여 최종 결과 값이 올바르지 않을 수 있는데, 이 경우를 실시예를 통해 설명하면 다음과 같다.
도 2에서 4번, 5번의 삼각형을 살펴보면 먼저, 중첩구역에 있어서 어느 한 픽셀 A를 기준으로 4번 삼각형의 깊이는 50이고, 5번 삼각형의 깊이는 20이라고 가정한다.
이때 상기 픽셀 A는 배경 값으로 메모리에 저장된 값 중 해당 비트수로 나타낼 수 있는 최고 깊이 값을 가지며, 여기서는 "MAX"라고 하겠다.
이때, 4번과 5번 삼각형을 렌더링 한 후 스크린상에 디스플레이하면, 4번과 5번 삼각형의 중첩된 영역은 픽셀 A의 깊이를 기준으로 삼각형 5번의 깊이 값인 20이 최종값으로 디스플레이되어야 한다.
좀더 자세히 설명하면, 먼저 픽셀 A에 대하여 4번 삼각형이 렌더링 되면 4번의 깊이 값인 50과 배경 값인 MAX값을 비교하여 메모리에 작은 값인 50을 저장한다.
이어 5번 삼각형이 렌더링 되면 5번의 깊이 값인 20과 메모리에 이미 저장되어 있는 깊이 값 50과 비교하고 메모리에 작은 값인 20을 저장한다.
그래서 최종적으로 메모리에는 5번 삼각형의 깊이 값인 20이 저장된다.
그러나, 4번 삼각형과 5번 삼각형이 병렬로 수행될 때에 문제가 발생한다.
먼저, 픽셀 A에 대하여 4번 삼각형과 5번 삼각형이 동시에 깊이 비교를 수행할 경우, 4번의 깊이 값인 50과 배경 값인 MAX와 비교하여 메모리에 50으로 깊이 값이 결정된다.
그리고 동시에 5번의 깊이 값인 20과 배경 값인 MAX와 비교하여 메모리에 20으로 깊이 값이 결정된다.
그러면, 상기 깊이 값으로 결정된 20과 50이 서로 메모리에 저장하려고 하여 충돌이 발생한다.
그리고 만약 메모리 저장시 20이 먼저 결정되고, 50이 나중에 결정되면, 메모리에 저장되는 깊이 값은 50으로 정의된다.
이러한 경우 올바르지 않는 결과가 발생되는데 이러한 문제를 일관성 문제(consistency problem)라고 한다.
이러한 병렬성 구조에 의해 스크린상에서 프리미티브들끼리 중첩 될 경우에 발생되는 일관성 문제를 해결하기 위하여 중첩 구간에 대한 검사 및 관리를 위한 유닛이 별도로 필요하게 된다.
그 중 여러 개의 윈도우를 사용하는 방법으로 S3 사에서 사용하는 슈퍼스칼라(superscalar) 기법이 있다.
도 4 는 종래 기술에 따른 S3사에서 최근에 발표한 슈퍼스칼라 방식을 이용한 3차원 렌더링 처리부의 전체 구조로서, n 개의 렌더링 가속기가 동시에 병렬로 수행될 수 있는 경우를 나타낸 도면이다.
도 4를 보면, 처리할 프리미티브를 입력받아 버퍼의 빈 영역에 전송하는 명령 추출부(fetch unit)(10)와, 상기 명령 추출부(10)에서 전송된 다수의 프리미티브의 병렬 수행시 일관성이 유지되도록 할당 및 관리하는 인출부(issue unit)(20)와, 상기 인출부(20)에서 할당 및 관리된 다수의 프리미티브를 각각 입력받아 텍스쳐 캐쉬(T-cache)를 사용하여 렌더링을 수행하는 렌더링 가속부(30)와, 상기 렌더링 가속부(30)에서 정의된 명령을 이용하여 메모리 명령을 처리하는 메모리 인터페이스부(40)로 구성된다.
이와 같이 구성된 렌더링 처리부에 따른 동작을 설명하면 다음과 같다.
먼저, 명령 추출(fetch)부(10)에서는 처리할 프리미티브들을 렌더링 처리부(10) 내부로 가져와서 인출(issue)부(20)의 제 2 버퍼에 빈 영역이 있으면 유출(issue)부의 제 2 버퍼로 프리미티브들을 전송한다.
그리고 렌더링 처리를 위해 가속기(30)로 할당된 프리미티브들에 대한 정보를 상기 제 2 버퍼에서 제 1 버퍼로 이동하여 저장한다.
그러면 인출(issue)부(20)는 상기 명령 추출부(10)에서 전송된 프리미티브 중 아직 가속기(31)에 입력되지 않고 제 2 버퍼에 버퍼링된 프리미티브들과 현재 가속기(31)에서 렌더링 처리되고 있는 제 1 버퍼의 프리미티브들에 대한 정보를 이용하여 프리미티브들의 중첩영역이 있는지 조사한다.
그리고 상기 조사 결과 중첩영역에 따라 병렬수행 여부를 결정하고, 그 여부에 따라 각각의 가속기(31)에 해당 프리미티브를 렌더링한다.
이어 각각의 가속기(31)에 할당된 프리미티브의 렌더링이 끝나면 인출(issue)부(20)에 버퍼링된 프리미티브들의 정보를 재조정한다.
도 6 은 도 4에 구조의 유출(issue)부에서 버퍼로 사용되는 레지스터의 구조를 나타낸 도면으로, 지원 버퍼(candidate buffer)가 제 1 버퍼에 해당되고, 목적지 예약 위치부(destination reservation station)와 소스 예약 위치부(source reservation station)가 제 2 버퍼에 해당된다.
도 6에 나타낸 이 레지스터의 구조들은 여러 개의 렌더링 가속기가 병렬로수행되기 위하여 유출(issue)부에서 대기하고 있거나 가속기에서 처리되고 있는 삼각형들의 정보를 가지고 있다.
따라서 인출(issue)부(20)는 이러한 정보를 가지고 중첩 영역이 있는지의 여부를 계산하고 그 결과를 가지고 병렬수행을 제어한다.
이때 가속기(31)에 입력되지 않고 제 2 버퍼에 버퍼링된 프리미티브들과 현재 가속기에서 렌더링 처리되고 있는 제 1 버퍼에 버퍼링된 프리미티브들에 대한 중첩 구간 계산에는 많은 어려움이 발생된다.
즉, 프리미티브의 대부분은 렌더링의 간략화를 위해 삼각형이 기반으로 되어 있는데, 이 삼각형들의 좌표값을 이용하여 중첩 구간의 유무를 하드웨어적으로 정확하게 계산하는데는 어려움이 있다.
따라서 일반적으로 다수의 프리미티브간의 중첩 구간의 계산은 삼각형을 도 5에서 나타낸 바와 같이 바운딩 박스를 형성하여 직사각형화하여 중첩유무를 계산한다.
이와 같이 삼각형을 직사각형화하여 중첩구간을 조사하는 이유는 직사각형의 경우, 대각선으로 위치된 2 개의 꼭지점 좌표값만으로 스크린상의 각 라인단위로 프리미티브의 최대값 및 최소값을 계산할 수 있는 반면, 삼각형의 경우, 3 개의 꼭지점 외에 각 꼭지점끼리 연결된 변에 대한 위치까지 모두 계산해 주어야 하기 때문에 직사각형에 비해 삼각형이 스크린상의 각 라인단위로 프리미티브의 최대값 및 최소값을 구하는 계산량이 많아지게 되어 결국, 중첩 여부에 대한 계산량이 많아지게 된다
따라서 프리미티브간의 중첩구간 유무의 계산은 삼각형이 직사각형의 경우보다 계산량이 많다.
그리고 상기 슈퍼 스칼라 방식을 이용한 3차원 렌더링 처리부는 처리할 삼각형 프리미티브에 바운딩 박스를 형성하여, 삼각형을 직사각형화하여 렌더링 처리를 수행한다.
그러나 이상에서 설명한 종래 기술에 따른 3차원 그래픽 가속기의 렌더링 처리부는 다음과 같은 문제점이 있다.
첫째, 슈퍼스칼라 기법을 사용한 렌더링 처리부는 바운딩 박스를 이용하여 중첩 구간을 계산하기 때문에 실제 프리미티브에는 중첩 구간이 발생하지 않았는데도 바운딩 박스에 의해 중첩구간이 발생하여 중첩구간이 있다고 계산이 되어질 수 있다. 그에 따라 렌더링 처리에 따른 성능 저하를 가져온다.
둘째, 하나의 삼각형 프리미티브에 중첩 구간이 존재하면 중첩 구간 이외의 프리미티브 부분까지 순차적으로 수행하여야만 하기 때문에 역시 렌더링 처리에 따른 성능 저하를 가져온다.
셋째, 인출부내에 여러 개의 버퍼와 복잡한 제어로 인하여 설계가 매우 복잡해진다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, 중첩 구간을 미리 검사하는 방식이 아니라 렌더링된 픽셀에 대해서 중첩 여부를 판명하여 일관성 유지를 지원하는 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼의방법 및 장치를 제공하는데 그 목적이 있다.
도 1 은 종래 기술에 따른 3차원 그래픽 처리과정을 나타낸 도면
도 2 는 종래 기술에 따른 한 프레임 상에 디스플레이되는 5 개의 프리미티브들을 나타낸 실시예
도 3 은 도 2의 삼각형들에서 중첩되는 부분이 없도록 두 개의 부분으로 나눈 도면
도 4 는 종래 기술에 따른 S3사에서 최근에 발표한 슈퍼스칼라 방식을 이용한 3차원 렌더링 처리부의 전체 구조
도 5 는 종래 기술에 따른 한 개의 삼각형에 대한 바운딩 박스를 나타낸 도면
도 6 은 도 4에 구조에서 유출(issue)부에서 버퍼로 사용되는 레지스터의 구조를 나타낸 도면
도 7 은 본 발명에 따른 일관성 버퍼 방식을 채택한 렌더링 처리부 구조를 나타낸 도면
도 8 은 본 발명에 따른 일관성 버퍼의 구조를 나타낸 도면
도 9 는 본 발명에 따른 고성능 3차원 그래픽 가속기의 렌더링 처리의 흐름도
*도면의 주요부분에 대한 부호의 설명
10, 100 : 명령 추출부 20, 200 : 인출부
30, 300 : 렌더링 가속부 31, 310 : 가속기
32, 320 : 텍스쳐 캐쉬 40, 500 : 메모리 인터페이스부(MIU)
400 : 일관성 버퍼
상기와 같은 목적을 달성하기 위한 본 발명에 따른 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼 장치의 특징은 처리할 프리미티브를 버퍼의 빈 영역에 전송하는 명령 추출부와, 상기 명령 추출부에서 전송된 다수의 프리미티브를 버퍼링하고, 입력될 위치를 할당하는 인출부와, 상기 인출부에서 할당된 다수의 프리미티브를 각각 입력받아 렌더링을 수행하는 렌더링 가속부와, 상기 각각의 렌더링 가속부에서 계산된 각각의 프리미티브의 깊이 값, 색깔 값에 따른 일관성 처리에 필요한 정보를 저장하는 일관성 버퍼와, 상기 일관성 버퍼에 저장된 정보를 이용하여 순서에 따른 일관성 처리를 통해 메모리에 읽기/쓰기 연산을 수행하는 메모리 인터페이스부를 포함하여 구성되는데 있다.
상기 일관성 버퍼는 유효 비트, 깊이 및 색깔 값, 좌표값을 갖는 다수의 엔트리로 구성되는데 다른 특징이 있다.
상기 일관성 버퍼는 큐(queue) 방식으로 운영되며, 쓰기 연산이 수행되어질 엔트리의 머리 부분을 가리키는 머리 포인터와, 가속기에서 최근에 계산된 정보를 저장할 엔트리를 가리키는 꼬리 포인터로 구성되는데 또 다른 특징이 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼링 방법의 특징은 명령 추출부와 인출부를 통해 각 가속기로 할당된 다수의 프리미티브를 렌더링 처리하는 제 1 단계와, 상기 렌더링 처리된 다수의 프리미티브의 깊이 및 색깔 값을 일관성 버퍼에 각각 저장하는 제 2 단계와, 상기 일관성 버퍼에 저장된 다수의 프리미티브의 깊이 및 색깔 값을 이용하여 각 화소별로 하나의 엔트리의 깊이 및 색깔 값을 정의하고, 정의된 값으로 일관성을 유지시키면서 메모리에 읽기/쓰기 연산을 수행하는 제 3 단계를 포함하여 이루어지는데 있다.
상기 제 2 단계 내지 제 3 단계는 제 1 엔트리의 픽셀 깊이 값과 일관성 버퍼에서 있는 모든 엔트리 중 유효비트가 1로 정의되고, 픽셀위치가 동일한 모든 픽셀을 검출하는 단계와, 상기 검출 결과 제 1 엔트리의 픽셀 위치와 동일한 위치를 갖는 제 k 엔트리의 픽셀이 없는 경우, 제 1 엔트리의 픽셀 깊이 및 색깔 값에 대한 읽기 연산을 수행하는 단계와, 상기 검출 결과 제 1 엔트리의 픽셀 위치와 동일한 위치를 갖는 제 k 엔트리의 픽셀이 있는 경우, 제 k 엔트리의 픽셀 깊이 및 색깔 값에 대한 읽기 연산을 수행하는 단계를 포함하여 이루어지는데 다른 특징이 있다.
상기 제 2 단계 내지 제 3 단계는 제 1 엔트리의 픽셀 깊이 및 색깔 값을 꼬리 포인터가 가리키는 현재 엔트리에 저장하고, 현재 픽셀에 따른 엔트리의 유효비트를 1로 정의하는 단계와, 제 1 엔트리의 픽셀과 일관성 버퍼에서 있는 모든 엔트리 중 유효비트가 1로 정의되고, 픽셀위치가 제 1 엔트리와 동일한 모든 픽셀을 검출하는 단계와, 상기 검출 결과 같은 픽셀이 없는 경우, 제 1 엔트리의 유효 비트를 1로 정의하고, 제 1 엔트리의 깊이 및 색깔 값에 대한 쓰기 연산을 수행하는 단계와, 상기 검출 결과 같은 픽셀이 있는 경우, 현재의 제 1 엔트리의 픽셀 깊이 값과 발견된 제 k 엔트리의 픽셀 깊이 값을 비교하는 단계와, 상기 비교 결과, 제 k엔트리의 픽셀 깊이 값이 제 1 엔트리의 픽셀 깊이 값에 비하여 크면 제 k 엔트리의 픽셀 유효 비트를 0으로, 현재 엔트리의 유효 비트를 1로 정의하며, 큐 방식에 의해 쓰기 연산을 수행하는 단계와, 상기 비교 결과, 제 k 엔트리의 픽셀 깊이 값이 제 1 엔트리의 픽셀 깊이 값보다 작으면 현재 엔트리의 유효 비트를 0으로 정의하며, 큐 방식에 의해 쓰기 연산을 수행하는 단계를 포함하여 이루어지는데 또 다른 특징이 있다.
상기 해당 픽셀의 깊이 및 색깔 값의 저장은 꼬리 포인터가 가리키는 일관성 버퍼에 저장되고, 큐 방식에 의한 쓰기 연산은 머리 포인터가 가리키는 일관성 버퍼에 저장된 픽셀의 정보를 수행하는데 또 다른 특징이 있다.
본 발명의 다른 목적, 특성 및 이점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
본 발명에 따른 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼의 방법 및 장치의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다.
도 7 은 본 발명에 따른 일관성 버퍼 방식을 채택한 렌더링 처리부 구조를 나타낸 도면이다.
도 7을 보면, 처리할 프리미티브를 버퍼의 빈 영역에 전송하는 명령 추출부(100)와, 상기 명령 추출부(100)에서 전송된 다수의 프리미티브를 버퍼링하고, 입력될 위치를 할당하는 인출부(200)와, 상기 인출부(200)에서 할당된 다수의 프리미티브를 각각 입력받아 렌더링을 수행하는 렌더링 가속부(300)와, 상기 각각의 렌더링 가속부(300)에서 계산된 각각의 프리미티브의 깊이 값, 색깔 값에 따른 일관성 처리에 필요한 정보를 저장하는 일관성 버퍼(400)와, 상기 일관성 버퍼(400)에 저장된 정보를 이용하여 순서에 따른 일관성 처리를 통해 메모리에 읽기/쓰기 연산을 수행하는 메모리 인터페이스부(MIU)(500)로 구성된다.
도 7을 보면 종래 기술인 도 4와 비교하여 달라진 것은 인출(issue)부(200)와 일관성 버퍼부(400)이다.
상기 인출(issue)부(200)는 단순히 여러 개의 가속기(310)가 상황에 따라 병렬수행 및 순차수행을 위한 제어를 하기 위하여 명령 추출(fetch)부(100)와 여러 개의 가속기(310)를 이어주는 역할을 한다.
즉, 본 발명에 따른 인출부(400)는 도 4에서 처럼 복잡한 버퍼부를 사용하지 않고, 단지 여러 개의 가속기(310) 중 현재 수행하지 않는 가속기를 조사하여 명령 추출(fetch)부(100)에서 추출된 프리미티브들을 버퍼링하고 이를 할당해 주는 역할을 수행한다.
그리고 일관성에 따른 처리는 일관성 버퍼(400)에서 수행한다.
도 8 은 본 발명에 따른 일관성 버퍼의 구조를 나타낸 도면으로써, 도 8에 나타낸 일관성 버퍼는 각각의 가속기가 계산된 깊이 값과 색깔 값을 (x, y) 좌표를 갖는 메모리에 읽기/쓰기 연산을 할 경우, 이에 대한 정보를 저장한다.
그리고 상기 저장된 정보는 일관성을 조사하는데 사용되어 진다.
이때 일관성 버퍼(400)는 큐(queue) 방식으로 운영이 되고, 엔트리는 유효 비트(valid bit), 깊이 값인 z 값, x와 y값, 색깔 값으로 이루어진다.
그리고 상기 큐 방식은 머리 포인터와 꼬리 포인터를 이용하여 운영된다.
상기 머리 포인터는 도 7에서의 메모리 인터페이스부(Memory Interface Unit : MIU)(500)에 보내어져 현재 쓰기 연산이 수행되어지는 엔트리의 머리부분을 가리킨다.
그리고 쓰기 연산 수행이 끝나는 시점에 포인터를 이동한다.
상기 꼬리 포인터는 가장 최근에 사용된 엔트리의 옆에 있으면서 비어 있는 엔트리를 가리키며 각각의 가속기에서 최근에 계산된 정보를 저장할 수 있는 곳을 가리킨다.
이때 엔트리 수는 가속기의 수와 메모리 지연시간과 비례한다.
그리고 상기 메모리 인터페이스부(MIU)(500)는 일관성 버퍼(400)에 있는 엔트리에서 현재 쓰기 연산을 실제로 수행하지 않은 엔트리의 포인터를 가지고 있으며, 그 중 유효 비트가 1인 엔트리에 대한 정보의 쓰기 연산을 수행한다.
여기서 유효 비트가 1이라는 것은 해당 엔트리가 유효하다는 것이다.
일관성 버퍼(400)를 이용하여 일관성을 유지하는 방법을 도면을 참조하여 상세히 살펴보면 다음과 같다.
도 9 는 본 발명에 따른 고성능 3차원 그래픽 가속기의 렌더링 처리의 흐름도이다.
도 9를 보면 먼저, 3차원 응용 소프트웨어가 API를 통해 렌더링 처리부로 입력된다(S10).
그러면 명령 추출부(100)와 인출부(200)를 통해 각 가속기(310)로 프리미티브가 할당된다(S20).
이어 각 가속기(310)에서 할당된 프리미티브를 렌더링 처리를 수행한다(S30).
그리고 메모리의 연산수행에 따라 읽기 연산과 쓰기 연산으로 구분되어 수행된다.
먼저, 읽기 연산에 따른 동작을 살펴보면, 일관성 버퍼에 저장된 모든 픽셀 엔트리 중 현재 픽셀의 위치 (x, y)와 동일한 위치에 있고, 유효 비트가 1로 정의된 픽셀을 검출한다(S50).
상기 검출결과, 현재 픽셀과 동일한 위치 (x, y)를 갖는 픽셀이 발견된 경우는 발견된 픽셀의 깊이 및 색깔 값이 현재 일관성 버퍼(400)내에 있으므로 바로 일관성 버퍼(400)에서 읽기 연산을 수행한다(S80).
또는 상기 검출결과, 현재 픽셀과 동일한 위치 (x, y)를 갖는 픽셀이 발견되지 않는 경우는 현재 픽셀의 깊이 및 색깔 값이 메모리(미도시)내에 있으므로 메모리 인터페이스부(500)에서 읽기 연산을 수행한다(S70).
다음으로 쓰기 연산에 따른 동작을 살펴보면, 먼저 일관성 버퍼(400)에서 메모리의 쓰기 연산에 따른 현재 픽셀의 깊이 및 색깔 값을 꼬리 포인터가 가리키는 현재 엔트리에 저장한다(S90).
그리고 현재 픽셀에 따른 엔트리의 유효비트를 1로 정의한다(S100).
이때, 꼬리 포인터는 현 위치에서 다음 비어있는 옆 엔트리로 이동한다.
그리고, 현재 엔트리의 (x, y)위치의 픽셀과 일관성 버퍼에서 있는 모든 엔트리의 픽셀 중 유효비트가 1로 정의된 모든 (x, y)위치의 픽셀을 비교한다(S110).
상기 비교 결과(S70), 모든 (x, y)위치에 현재 엔트리의 픽셀과 같은 픽셀이 없는 경우(S120), 현재 엔트리의 유효 비트를 1로 정의한다(S160).
그리고 큐 방식에 따라 메모리 인터페이스부(500)에서 쓰기 연산을 수행한다(S170).
상기 비교 결과(S120), 모든 (x, y)위치에 현재 엔트리의 픽셀과 같은 픽셀이 있는 경우, 발견된 해당 엔트리가 k 번째라고 하면, 현재의 깊이 값과 k 번째 엔트리의 깊이 값을 비교를 한다(S130).
이때, 상기 비교결과(S130), k 번째 엔트리의 깊이 값이 현재의 깊이 값에 비하여 작으면 k 번째에 있는 깊이 값이 시점에 보다 앞에 있는 것이기 때문에 현재의 x, y, 깊이, 색상 정보는 필요 없게 된다.
따라서 현재 엔트리의 유효 비트를 0으로 정의한다(S150).
그리고 이러한 수정된 엔트리의 정보들은 일관성 버퍼(400)의 머리 포인터 부분부터 메모리 인터페이스부(500)를 통하여 순차적으로 메모리에 쓰기 연산을 수행한다(S170).
그와 반대로 상기 비교결과(S130), k 번째 엔트리의 깊이 값이 현재의 깊이 값보다 크면 k 번째 엔트리의 정보가 필요 없게 된다.
따라서, k 번째 엔트리의 유효 비트를 0으로 정의하고(S140), 현재 엔트리의 유효비트를 1로 정의한다(S160).
그리고 이러한 수정된 엔트리의 정보들은 일관성 버퍼(400)의 머리 포인터 부분부터 메모리 인터페이스부(500)를 통하여 순차적으로 메모리에 쓰기 연산을 수행한다(S170).
이상에서 설명한 바와 같은 본 발명에 따른 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼의 방법 및 장치는 다음과 같은 효과가 있다.
첫째, 삼각형들 간에 중첩 구간이 존재하더라도 병렬 수행이 가능하여 고성능에 매우 유리하다.
둘째, 바운딩 박스를 사용한 중첩 구간 계산으로 인하여 실제 중첩구간이 없더라도 순차적 수행을 해야하는 잘못된 수행이 없어지므로 시간적으로 매우 큰 효과를 가진다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 이탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.
따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정해져야 한다.

Claims (7)

  1. 처리할 프리미티브를 버퍼의 빈 영역에 전송하는 명령 추출부와,
    상기 명령 추출부에서 전송된 다수의 프리미티브를 버퍼링하고, 입력될 위치를 할당하는 인출부와,
    상기 인출부에서 할당된 다수의 프리미티브를 각각 입력받아 렌더링을 수행하는 렌더링 가속부와,
    상기 각각의 렌더링 가속부에서 계산된 각각의 프리미티브의 깊이 값, 색깔 값에 따른 일관성 처리에 필요한 정보를 저장하는 일관성 버퍼와,
    상기 일관성 버퍼에 저장된 정보를 이용하여 순서에 따른 일관성 처리를 통해 메모리에 읽기/쓰기 연산을 수행하는 메모리 인터페이스부를 포함하여 구성되는 것을 특징으로 하는 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼.
  2. 제 1 항에 있어서,
    상기 일관성 버퍼는 유효 비트, 깊이 및 색깔 값, 좌표값을 갖는 다수의 엔트리로 구성되는 것을 특징으로 하는 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼.
  3. 제 2 항에 있어서,
    상기 일관성 버퍼는 큐(queue) 방식으로 운영되며, 쓰기 연산이 수행되어질엔트리의 머리 부분을 가리키는 머리 포인터와, 가속기에서 최근에 계산된 정보를 저장할 엔트리를 가리키는 꼬리 포인터로 구성되는 것을 특징으로 하는 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼.
  4. 명령 추출부와 인출부를 통해 각 가속기로 할당된 다수의 프리미티브를 렌더링 처리하는 제 1 단계와,
    상기 렌더링 처리된 다수의 프리미티브의 깊이 및 색깔 값을 일관성 버퍼에 각각 저장하는 제 2 단계와,
    상기 일관성 버퍼에 저장된 다수의 프리미티브의 깊이 및 색깔 값을 이용하여 각 화소별로 하나의 엔트리의 깊이 및 색깔 값을 정의하고, 정의된 값으로 일관성을 유지시키면서 메모리에 읽기/쓰기 연산을 수행하는 제 3 단계를 포함하여 이루어지는 것을 특징으로 하는 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼링 방법.
  5. 제 4 항에 있어서, 상기 제 2 단계 또는 제 3 단계는
    제 1 엔트리의 픽셀 깊이 값과 일관성 버퍼에서 있는 모든 엔트리 중 유효비트가 1로 정의되고, 픽셀위치가 동일한 모든 픽셀을 검출하는 단계와,
    상기 검출 결과 제 1 엔트리의 픽셀 위치와 동일한 위치를 갖는 제 k 엔트리의 픽셀이 없는 경우, 제 1 엔트리의 픽셀 깊이 및 색깔 값에 대한 읽기 연산을 수행하는 단계와,
    상기 검출 결과 제 1 엔트리의 픽셀 위치와 동일한 위치를 갖는 제 k 엔트리의 픽셀이 있는 경우, 제 k 엔트리의 픽셀 깊이 및 색깔 값에 대한 읽기 연산을 수행하는 단계를 포함하여 이루어지는 것을 특징으로 하는 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼링 방법.
  6. 제 4 항에 있어서, 상기 제 2 단계 또는 제 3 단계는
    제 1 엔트리의 픽셀 깊이 및 색깔 값을 꼬리 포인터가 가리키는 현재 엔트리에 저장하고, 현재 픽셀에 따른 엔트리의 유효비트를 1로 정의하는 단계와,
    제 1 엔트리의 픽셀과 일관성 버퍼에서 있는 모든 엔트리 중 유효비트가 1로 정의되고, 픽셀위치가 제 1 엔트리와 동일한 모든 픽셀을 검출하는 단계와,
    상기 검출 결과 같은 픽셀이 없는 경우, 제 1 엔트리의 유효 비트를 1로 정의하고, 제 1 엔트리의 깊이 및 색깔 값에 대한 쓰기 연산을 수행하는 단계와,
    상기 검출 결과 같은 픽셀이 있는 경우, 현재의 제 1 엔트리의 픽셀 깊이 값과 발견된 제 k 엔트리의 픽셀 깊이 값을 비교하는 단계와,
    상기 비교 결과, 제 k 엔트리의 픽셀 깊이 값이 제 1 엔트리의 픽셀 깊이 값에 비하여 크면 제 k 엔트리의 픽셀 유효 비트를 0으로, 현재 엔트리의 유효 비트를 1로 정의하며, 큐 방식에 의해 쓰기 연산을 수행하는 단계와,
    상기 비교 결과, 제 k 엔트리의 픽셀 깊이 값이 제 1 엔트리의 픽셀 깊이 값보다 작으면 현재 엔트리의 유효 비트를 0으로 정의하며, 큐 방식에 의해 쓰기 연산을 수행하는 단계를 포함하여 이루어지는 것을 특징으로 하는 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼링 방법.
  7. 제 5 항 또는 제 6 항에 있어서,
    해당 픽셀의 깊이 및 색깔 값의 저장은 꼬리 포인터가 가리키는 일관성 버퍼에 저장되고, 큐 방식에 의한 읽기/쓰기 연산은 머리 포인터가 가리키는 일관성 버퍼에 저장된 픽셀의 정보를 수행하는 것을 특징으로 하는 고성능 3차원 그래픽 가속기를 위한 일관성 버퍼링 방법.
KR10-2000-0049844A 2000-08-26 2000-08-26 고성능 3 차원 그래픽 가속기를 위한 일관성 버퍼의 방법및 장치 KR100382107B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2000-0049844A KR100382107B1 (ko) 2000-08-26 2000-08-26 고성능 3 차원 그래픽 가속기를 위한 일관성 버퍼의 방법및 장치
US09/650,781 US6839060B1 (en) 2000-08-26 2000-08-30 Method and device of consistency buffer for high performance 3D graphic accelerator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2000-0049844A KR100382107B1 (ko) 2000-08-26 2000-08-26 고성능 3 차원 그래픽 가속기를 위한 일관성 버퍼의 방법및 장치

Publications (2)

Publication Number Publication Date
KR20020016675A KR20020016675A (ko) 2002-03-06
KR100382107B1 true KR100382107B1 (ko) 2003-05-01

Family

ID=19685395

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0049844A KR100382107B1 (ko) 2000-08-26 2000-08-26 고성능 3 차원 그래픽 가속기를 위한 일관성 버퍼의 방법및 장치

Country Status (2)

Country Link
US (1) US6839060B1 (ko)
KR (1) KR100382107B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100441080B1 (ko) * 2002-07-31 2004-07-21 학교법인연세대학교 3차원 그래픽 가속기에서 픽셀 캐쉬 구조의 동작방법
KR100999683B1 (ko) * 2008-01-25 2011-01-14 팜메이커 주식회사 유황의 정제방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259574A (ja) * 1993-03-09 1994-09-16 Pfu Ltd 図形レンダリング方式
KR970002754A (ko) * 1995-06-30 1997-01-28 김광호 트라이리니어 텍스쳐 매핑 가속화장치
KR970022847A (ko) * 1995-10-31 1997-05-30 김광호 그래픽을 위한 스팬렌더링방법 및 장치
KR19990018369A (ko) * 1997-08-27 1999-03-15 윤종용 3차원 그래픽 가속기
JPH1186026A (ja) * 1997-09-12 1999-03-30 Matsushita Electric Ind Co Ltd 画像処理装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870109A (en) * 1997-06-06 1999-02-09 Digital Equipment Corporation Graphic system with read/write overlap detector
US6457034B1 (en) * 1999-11-02 2002-09-24 Ati International Srl Method and apparatus for accumulation buffering in the video graphics system
US6473086B1 (en) * 1999-12-09 2002-10-29 Ati International Srl Method and apparatus for graphics processing using parallel graphics processors

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259574A (ja) * 1993-03-09 1994-09-16 Pfu Ltd 図形レンダリング方式
KR970002754A (ko) * 1995-06-30 1997-01-28 김광호 트라이리니어 텍스쳐 매핑 가속화장치
KR970022847A (ko) * 1995-10-31 1997-05-30 김광호 그래픽을 위한 스팬렌더링방법 및 장치
KR19990018369A (ko) * 1997-08-27 1999-03-15 윤종용 3차원 그래픽 가속기
JPH1186026A (ja) * 1997-09-12 1999-03-30 Matsushita Electric Ind Co Ltd 画像処理装置

Also Published As

Publication number Publication date
KR20020016675A (ko) 2002-03-06
US6839060B1 (en) 2005-01-04

Similar Documents

Publication Publication Date Title
US7015913B1 (en) Method and apparatus for multithreaded processing of data in a programmable graphics processor
EP3008701B1 (en) Using compute shaders as front end for vertex shaders
US8698828B2 (en) Graphics processing systems
US9805500B2 (en) Hidden culling in tile-based computer generated images
US7683905B1 (en) Methods of processing graphics data including reading and writing buffers
US8089486B2 (en) Tiled prefetched and cached depth buffer
US9019271B2 (en) Z-culling method, three-dimensional graphics processing method and apparatus threrof
TWI615701B (zh) 經由使用欺騙時脈及細粒度頻率控制實現之向後相容性
KR100882842B1 (ko) 피포를 포스트 버텍스 캐쉬처럼 사용하기 위한 기하학 처리장치와 그 방법
US4941111A (en) Video picking and clipping method and apparatus
EP0425173A2 (en) Graphics display system
JPH0683969A (ja) グラフィックス・プロセッサ及びグラフィックス・データ処理方法
US6177944B1 (en) Two phase rendering for computer graphics
US10803547B2 (en) Graphics processing systems using a subset of pipeline stages
US5844571A (en) Z buffer bandwidth reductions via split transactions
CN110494837B (zh) 使用高优先级队列进行墨水渲染
US7053904B1 (en) Position conflict detection and avoidance in a programmable graphics processor
US20050195197A1 (en) Superscalar 3D graphics engine
CN113590315A (zh) 多显卡大模型渲染方法
KR100382107B1 (ko) 고성능 3 차원 그래픽 가속기를 위한 일관성 버퍼의 방법및 장치
KR100382108B1 (ko) 3차원 그래픽 가속기 및 그의 그래픽 가속처리 방법
WO2018128877A1 (en) Prefetching for a graphics shader
JPH0683923A (ja) カーソル位置と表示形像との相関付け方法及び相関付け手段を備えたコンピュータ・システム
US6683607B1 (en) Method for displaying three-dimensional objects and a computer-readable storage medium storing a program for achieving the same
JPH0651937A (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
GRNT Written decision to grant
N231 Notification of change of applicant
FPAY Annual fee payment

Payment date: 20060215

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee