KR100487461B1 - 타일링 트래버설 방식의 주사변환 유닛 - Google Patents

타일링 트래버설 방식의 주사변환 유닛 Download PDF

Info

Publication number
KR100487461B1
KR100487461B1 KR10-2002-0045236A KR20020045236A KR100487461B1 KR 100487461 B1 KR100487461 B1 KR 100487461B1 KR 20020045236 A KR20020045236 A KR 20020045236A KR 100487461 B1 KR100487461 B1 KR 100487461B1
Authority
KR
South Korea
Prior art keywords
stamp
unit
tiling
traversal
triangle
Prior art date
Application number
KR10-2002-0045236A
Other languages
English (en)
Other versions
KR20040011920A (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-2002-0045236A priority Critical patent/KR100487461B1/ko
Publication of KR20040011920A publication Critical patent/KR20040011920A/ko
Application granted granted Critical
Publication of KR100487461B1 publication Critical patent/KR100487461B1/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
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details

Landscapes

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

Abstract

본 발명은 완전 하드웨어로 구현한 타일링 트래버설 방식의 주사 변환 유닛 및 방법을 제공하기 위한 것으로서, 스탬프의 원점, 위(RT), 아래(RB), 오른쪽(LB) 위치에 따른 네 개의 탐색 점의 부호를 검출하고, 상기 스탬프와 삼각형의 세 변에 대해 각각 반-평면 변 함수 연산을 수행하는 단계와, 상기 스탬프 네 개의 탐색 점의 결정된 부호를 두 개씩 조합하여 논리합 연산을 수행하고, 상기 논리합 연산한 결과를 논리곱 연산하여 결과 값이 0이면 스탬프가 이동 불가능한 방향인 것으로, 결과 값이 1이면 스탬프가 이동 가능한 방향인 것으로 정의하는 단계와, 상기 정의된 스탬프의 이동 가능한 모든 방향을 토대로 다음에 이동할 위치를 저장하는 저장 콘텍스트, 상기 저장 콘텍스트를 제어하는 최종 플래그, 그리고 타일 경계에 도달 유무 등을 조사하여 최종 방향을 선택하는 단계와, 다음으로 지정된 스탬프를 입력으로 상기 단계를 반복 수행하는 단계를 포함하여 이루어지는데 있다.

Description

타일링 트래버설 방식의 주사변환 유닛{scan conversion unit in tiling-traveresal algorithm}
본 발명은 3차원 그래픽 시스템에 관한 것으로, 특히 타일링 트래버설 방식을 기반으로 한 고성능의 파이프라인된 주사변환 유닛에 관한 것이다.
현재의 3차원 그래픽스 분야에서는 실시간 3차원 환경의 구현을 목표로, 엄청난 연산 수행 능력과 메모리 대역폭을 가진 고성능 그래픽 시스템에 대한 요구가 증대되어지고 있으며, 이와 더불어 고성능 주사 변환 유닛도 필수 요소가 되고 있다.
일반적으로 3차원 그래픽 시스템은 역할이 뚜렷한 여러 단계들이 파이프라인으로 구성되어 있는데, 크게 기하학 처리 부분(geometry processing step)과 래스터라이제이션 부분(rasterization step)으로 나뉘어서 방대한 양의 데이터를 처리한다.
이때, 주사 변환 유닛(scan conversion stage)은 화면에 출력될 최종의 픽셀 값을 구하는 래스터라이제이션 부분의 맨 상단에 위치하여, 기하학 처리 부분에서 입력된 삼각형 정보를 근거로 하여 여러 증분 값들(gradients values)과 초기 픽셀 프래그먼트들(fragments)을 구하는 작업을 수행한다.
그리고 일반적인 주사 변환 유닛은 삼각형 셋업(triangle set-up), 변 처리(edge processing), 스팬 처리(span processing)로 이루어진다.
이런 주사 변환 유닛에 적용되는 대표적인 알고리즘으로는 스캔-라인 알고리즘(scan-line algorithm)과 타일링 트래버설 알고리즘(tiling-traversal algorithm)이 있다.
상기 스캔-라인 알고리즘이 적용된 경우(이하 스캔-라인 방식)는 동작 방식이 명확하고 간단하여 파이프라인으로 구성하기 쉽기 때문에 초기 주사변환 유닛에 널리 사용되어졌다.
그러나 삼각형의 각 변마다 나누기 연산을 요구되어 역 기울기값들을 반드시 계산해야 하고, 병렬적으로 프래그먼트들의 생성이 어려워서 몇 개의 점들에서 프래그먼트를 생성해야 하는 수퍼샘플링(super sampling)된 안티알리아싱(antialiasing) 렌더링과 같은 경우에는 그 적용에 어려움이 있다.
또한 렌더링하는 과정에서 페이지 교차(page crossing)가 자주 발생하여 메모리 대역폭을 많이 낭비하는 치명적인 약점을 가진다.
이에 반하여, 반-평면 변 함수(half-plane edge function)를 기반으로 한 상기 타일링-트래버설 알고리즘을 적용한 경우(이하 타일링-트래버설 방식)는 스탬프를 이용해서 쉽게 여러 개의 프래그먼트들을 병렬적으로 생성할 수 있고, 메모리 접근에 있어 페이지 교차의 생성 빈도를 줄여 메모리 운용에 효과적이다. 또한, 텍스처 캐쉬의 사용에 있어서도 적중 실패율을 낮추어 성능 향상을 꾀할 수 있다.
그러나, 삼각형의 트래버설 과정에서 분기(branch)가 자주 발생하게 되고, 그때마다 파이프라인이 지연(stall)되므로, 파이프라인 구조의 성능을 크게 저하시키는 단점을 가진다.
이와 같은 스캔-라인 방식과 타일링-트래버설 방식을 좀더 상세히 설명하기 위해 메모리 효율성 측면과 텍스처 캐쉬 접근 측면에서 설명하면 다음과 같다.
먼저, 메모리 효율성 측면을 보면, 현재 널리 사용되고 있는 멀티-뱅크 DRAM(multi-bank DRAM)의 경우는 하나의 열(row)을 접근(access)하는 동안 다른 열에는 접근 할 수 없다.
따라서, 한 페이지에 대한 접근이 모두 끝난 후에 같은 뱅크 내의 두 번째 페이지에 대한 접근이 시도되는데, 이 경우에는 선인출/열 활성화(precharge/row activate) 명령 시퀀스가 요구된다.
이 선인출/열 활성화 명령 시퀀스는 새로운 페이지에 접근하는 경우에 발생하는 것으로 이미 열려진 페이지에 접근하는 경우는 발생하지 않는다.
따라서, 불필요하게 페이지 교차가 많이 이뤄지면 그 만큼의 사이클이 낭비되는 것이다.
도 1 은 스캔-라인 방식과 타일링-트래버설 방식의 메모리 접근 형태를 보여주는 도면으로, 화면을 DRAM의 페이지 크기에 맞춰 타일화 시켰다.
스캔-라인 방식에서는 도 1(a)과 같이, 스캔 라인별로 픽셀을 생성하므로 여러 페이지로의 접근이 빈번히 일어나게 된다.
이에 따라 페이지 교차가 자주 발생하게 되고, 여러 사이클이 낭비되게 된다.
반면에 타일링 트래버설 방식은 도 1(b)과 같이, 타일 별(1,2,3,4,5,6,7,8,9)로 픽셀을 생성하고 있기 때문에, 스캔-라인 방식에 비해 페이지 교차가 덜 발생되는 효과를 얻게 된다. 그리고 한 뱅크의 페이지를 접근하고 있는 동안에 다른 뱅크의 페이지로의 접근을 준비할 수 있기 때문에 선인출 효과도 얻을 수 있게 된다.
즉, 프레임 버퍼 (frame buffer)는 각각의 타일로 구분되어져 있기 때문에 도 1(b)과 같이 두 개의 뱅크를 바둑판 모양으로 교차시켜주어 그 효과를 증대시킬 수 있다.
만약 타일 내의 생성될 데이터가 적은 경우에는 선인출 할 시간이 부족하게 되므로 어쩔 수 없이 페이지 교차가 발생하게 된다. 그러나 이런 경우가 존재하더라도 상기 타일링-트래버설 방식이 상기 스캔-라인 방식의 경우보다는 페이지 교차 빈도를 많이 줄일 수 있기 때문에 매우 효과적이다.
다음으로 텍스처 캐쉬 접근 측면에서 보면, 스캔-라인 방식보다 타일링-트래버설 방식이 적용된 경우가 더 높은 성능을 얻을 수 있다.
즉, 상기 타일링-트래버설 방식은 텍스처의 지역성을 높여 캐쉬의 적중 실패율(miss ratio)을 더 낮춰주게 된다.
한 프래그먼트에서 요구되는 텍셀(texel) 중 많은 수가 인접한 프래그먼트에서 다시 재사용 되어질 수 있지만, 제한된 캐쉬의 공간으로 인해 캐쉬의 대치 전략에 따라 저장된 텍셀 데이터는 일정 시간 뒤에 캐쉬로부터 빠져나가게 된다.
예를 들어, 인접한 두 개의 긴 스팬에서 각각 첫 번째 픽셀에서 같은 텍셀을 사용한다고 가정하자.
이 경우 스캔-라인 방식의 경우는 처리과정 중간에 캐쉬 안의 텍셀 정보가 빠져나갈 확률이 높고, 타일링-트래버설 방식은 해당 위치로 가는 시간이 상대적으로 짧아 적중 실패율이 낮아지게 되므로 텍스처 캐쉬의 성능 향상에 큰 도움이 되는 것이다.
그러나, 핵심 연산인 반-평면 변 함수를 구현함에 있어서는 많은 비용과 고려를 필요로 하기 때문에 하드웨어로 구현하는데 많은 어려움이 있으며, 그에 따라 현재 타일링 트래버설 방식을 완전히 하드웨어로 구현한 사례를 찾아보기 힘들다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, 완전 하드웨어로 구현한 타일링 트래버설 방식의 주사 변환 유닛을 제공하는데 그 목적이 있다.
삭제
삭제
상기와 같은 목적을 달성하기 위한 본 발명에 따른 타일링 트래버설 방식의 주사변환 유닛의 특징은 삼각형 셋업 유닛(triangle set-up unit), 타일링-트래버설 유닛(tiling traversal unit), 픽셀 처리 유닛(pixel processing unit)의 파이프라인으로 처리되는 주사 변환 유닛에 있어서, 상기 삼각형 셋업은 삼각형의 좌표, 깊이, 색, 투명도 그리고 텍스쳐 매핑을 위한 좌표등의 정보를 전처리해주는 전처리부와, 상기 전처리부에서 부동 포인트에서 고정 포인트로 바뀐 세 점에 해당되는 샘플 포인트의 좌표값인 정확한 픽셀을 찾아내는 샘플 포인트 계산부와, 상기 샘플 포인트 계산부에서 구해진 샘플 포인트의 좌표값을 연결하는 삼각형의 세 변의 기울기 값을 구하는 기울기 계산부와, 해당 픽셀의 깊이, 색, 투명도 그리고 텍스쳐 매칭을 위한 좌표들의 x축 기준의 증분값과 y축의 증분값을 계산하는 증분값 계산부와, 3개의 가산기만을 추가하여 다음 단계의 상기 타일링 트래버설 유닛에서 쓰여질 초기 반-평면 변 함수값을 계산하는 반-평면 변 함수 계산부를 포함하여 구성되는데 있다.
그리고 상기 증분값 계산부에서의 증분값 계산은
,
식을 이용하여 미리 계산하는데 다른 특징이 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 타일링 트래버설 방식의 주사변환 유닛의 다른 특징은 상기 타일링-트래버설 유닛은 맨해튼 네이버 방식(manhattan neighbors)을 사용하여 스탬프 원점의 반-평면 변 함수 값을 미리 처리하고, 그 값에 해당 증분값을 더하여 나머지 세 점의 값을 구하도록 구성하는 반-평면 함수부와, 상기 반-평면 함수부에서 구해진 스탬프의 네 점의 결과를 가지고 현 스탬프가 이동 가능한 원시 방향들을 조사하고, 동시에 저장된 콘텍스트 내용과 타일 경계 및 방향에 대해서 점검하여 최종 이동방향을 결정할 때 사용되어질 각 플래그 비트를 조사하는 스탬프 상태 점검부와, 상기 스탬프 상태 점검부의 결과를 토대로 다음에 이동한 최종 방향을 결정하는 최종 방향 결정 및 분기 예측부를 포함하여 구성되는 있다.
그리고 상기 분기 예측부는 현재 타일 좌표와 현재 처리중인 스탬프 좌표를 카운터기를 이용하여 매번 조사하여 다음에 수행될 스탬프가 어느 것인지 미리 예측하고, 이 예측 결과로 버퍼에 저장되어 있는 다음에 수행될 그 스탬프 원점 값을 미리 반-평면 변 함수부로 보내는데 다른 특징이 있다.
본 발명의 특징에 따른 작용은 반-평면 변 함수의 변형인 맨해튼 네이버 방식을 적용하여 필요 비용의 대부분을 절감시켰고, 분기 예측 기법(branch prediction)을 적용시켜 빈번하게 발생되는 분기를 최소로 하여 파이프라인의 지연현상을 효과적으로 감소시킬 수 있다.
본 발명의 다른 목적, 특성 및 잇점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
본 발명에 따른 타일링 트래버설 방식의 주사변환 유닛의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다.
설명에 앞서 본 명세서에서는 1픽셀 넓이 x 1픽셀 높이의 스탬프와 4픽셀 넓이 x 4픽셀 높이의 타일을 기준으로 삼는다.
도 2 는 본 발명에 따른 타일링-트래버설 파이프라인의 흐름도를 나타내고 있다.
도 2와 같이, 먼저 스탬프 네 개의 탐색 점(원점, RT, RB, LB)과 삼각형의 세 변(E0, E1, E2)에 대해 각각 반-평면 변 함수 연산을 수행한다(10).
이어, 상기 스탬프 네 개의 탐색점의 평가 결과를 토대로 현재 스탬프의 이동 가능한 모든 방향들을 구한다(20).
그리고 상기 구해진 결과를 토대로 최종 플래그, 저장 콘텍스트, 그리고 타일 경계에 도달 유무 등을 조사하여 최종 방향을 선택한다(30).
이때, 최종 방향의 선택에 있어서 다음과 같이 정의된 내용을 토대로 선택되어 진다.
- 오른 방향이 기본방향으로 최우선시한다.
- 오른쪽 타일 경계에 도달한 경우라면, 오른 방향을 무시하고 위, 아래 방향으로 가능한지를 조사한다.
이 경우 각각의 업(up), 다운(down) 플래그를 이용하여 업(up), 다운(down) 저장 콘텍스트가 비어 있는지를 파악한다.
이때, 상기 업, 다운 콘텍스트가 비어 있지 않으면, 여기에 저장되어 있는 위치의 스탬프를 다음에 처리할 스탬프로 지정한다. 이 경우 다운(down)을 우선으로 한다(40).
그리고 상기 업, 다운 콘텍스트가 비어 있다면 오른 타일 콘텍스트를 조사한다.
그리고 상기 오른 타일 콘텍스트가 비어 있지 않으면, 여기에 저장되어 있는 해당 타일의 스탬프를 다음에 처리할 스탬프로 지정하여 처리하고, 만약 상기 오른 타일 콘텍스트가 비어 있다면 해당 삼각형의 처리가 모두 끝난 것으로 볼 수 있다.
여기서 콘텍스트(context)란 타일링-트래버설 방식에서 사용되는 특수 저장 공간으로, 현재 스탬프 위치에서 위 방향, 아래방향, 또는 다른 타일로 분기될 경우에 이동할 위치를 저장해 놓은 이정표 같은 것이다.
따라서, 상기 업, 다운 및 오른 타일 콘텍스트들 중 하나라도 비어 있다면, 현재 처리중인 스탬프의 위(RT), 아래(RB), 오른쪽 방향(LB)의 스탬프 위치 값 중 현재 빈 콘텍스트에 해당되는 값에 저장한다. 또한, 다음에 처리될 스탬프가 현재 타일을 벗어나는지 아닌지 여부도 판단한다.
도면을 참조하여 좀더 상세히 설명하면 다음과 같다.
도 3 은 본 발명에 따른 스탬프와 삼각형이 교차할 때 스탬프에 있는 네 개의 탐색점의 부호 상태를 나타내는 도면이다. 그리고 도 4(a)는 본 발명에 따른 삼각형의 세 변에 대한 스탬프의 탐색점 부호를 결정하는 방법을 나타낸 도면이고, 도 4(b)는 도 4(a)에 따른 연산을 수행하는 변 함수 유닛의 구조를 나타낸 도면이다.
도 3과 같이, 삼각형의 세 변에 대한 스탬프의 탐색점(원점, RT, RB, LB)의 부호 상태를 검출하고, 도 4(a)와 같이, 한 스탬프와 삼각형의 세 변에 대한 반-평면 변 함수 연산을 통해 현 스탬프의 네 개의 탐색점들에 대한 부호를 구한다.
이때, 각 탐색점의 최종 부호의 결정은 세 개의 변에 대한 결과를 논리곱 연산(AND) 시켜 얻는다.
그리고 도 4(b)와 같이, 결정된 네 개의 탐색점의 부호를 토대로 표 1에서와 같이 각 스탬프의 위(RT), 아래(RB), 오른쪽(LB) 위치에 대한 방향 플래그의 유효 여부를 결정한다.
이 때 각 스탬프 위치에 해당하는 탐색점들을 논리합 연산(OR) 시켜 그 결과 값이 0이 되면 그 방향으로는 갈 수가 없음을 의미하고 1이면 해당 방향이 유효함을 나타낸다.
이와 같이, 최종 방향이 결정되면, 다음으로 지정된 스탬프를 파이프라인 입력받아 상기 작업을 반복 수행한다.
이와 같은 타일링-트래버설 방식의 파이프라인 처리 과정에 맨하튼 네이버 방식을 적용하는 경우 전체적인 동작을 설명하면 다음과 같다.
먼저, 스탬프의 4개의 탐색점(원점, RT, RB, LB)이 삼각형의 안에 있는지 바깥에 있는지를 알기 위해서는 반-평면 변 함수를 수행해야한다.
즉, 최초의 스탬프의 첫 탐색점인 원점(ORIGIN)에 대한 계산 부분은 셋 업 부분에서 계산한다. 이 스탬프의 RT와 LB는 맨해튼 네이버 방식에 따라 원점값에 각각 dy, dx를 더해주어 구해주고, RB의 경우에는 dx와 dy를 모두 더해줌으로 4개의 탐색점에 대한 반-평면 변 함수 값을 결정한다.
이어, 상기 탐색점에 대한 결정이 끝나면, 스탬프의 초기 방향을 구하게 되는데, 이때 저장 콘텍스트의 플래그를 참조하고, 빈 콘텍스트에 해당되는 값을 저장한다.
동시에, 타일 경계에 대한 조사를 하는데, 제안 유닛에서는 오른쪽과 아래쪽 타일만 고려한다. 이 때 각 타일 경계에 대해서 타일의 열(row) 좌표와 RB의 y좌표를 비교하고, 타일의 행(column) 좌표와 RB의 x좌표를 비교함으로써 결정한다.
또한, 타일 내에서의 스탬프의 이동을 제어하기 위한 업/다운(up/down) 플래그를 셋팅하게 된다.
이렇게 결정된 각각의 플래그들은 통합적으로 평가되어 최종의 이동 방향이 결정된다.
이때 상기 각각의 플래그 비트들에 대한 패턴들을 테이블로 정의해놓고 이에 따라 수행되도록 한다. 그리고 콘텍스트 버퍼에 저장될 해당 위치의 값들은 현재 가지고 있는 콘텍스트 값과 기울기값들을 각각의 위치에 맞는 기울기 값에 더해 저장하게 된다. 또한 각각의 저장 콘텍스트의 상태를 표시하는 플래그는 유효한 값을 저장하게 되면 1로 설정하고 저장된 값이 빠져나가면 0으로 설정한다.
이어 다음 처리될 위치의 저장 콘텍스트의 값은 파이프라인 입력으로 들어가게 된다.
이때, 맨해튼 네이버 방식을 적용했기 때문에, 한 삼각형의 트래버설이 완전히 끝나기 전까지는 이전에 계산되어 파이프라인으로 입력되는 현재 스탬프 원점의 값에 dx, dy를 더하여 RB, LB, RT 값을 구해준다.
또한 타일링-트래버설 유닛에서는 일반적으로 스탬프의 이동을 담당하고 있는데, 일반 트래버설 알고리즘이 적용된 경우에는 스탬프 이동상의 분기로 인한 파이프라인 지연이 많이 발생하여 사이클 낭비가 심하게 되어 전체적으로 성능에 악영향을 미친다.
따라서, 다음에 방문해야 하는 스탬프, 특히 위, 아래, 오른 타일에 해당되는 스탬프의 처리 순서를 미리 예측하여 해당 스탬프의 값을 파이프라인으로 입력시켜 파이프라인 지연을 최소화하여 파이프라인 효율을 극대화하여 성능을 향상시킨다.
일반적으로 타일링-트래버설 방식의 파이프라인에서 한 스탬프의 처리가 끝나게 되면, 그 스탬프는 프래그먼트 생성 과정으로 넘어가고, 이와 동시에 다음 스탬프가 파이프라인 입력으로 들어오게 된다.
여기에서 주목할 점은 다음에 와야 하는 스탬프의 위치가 결정되는 시점이 해당 스탬프가 프래그먼트 생성 과정으로 넘어갈 때라는 점이다.
따라서, 오른쪽으로 진행하는 일반적인 구조에서 타일 경계나 삼각형의 경계에 부딪치게 되어 분기가 발생되면, 현재 스탬프가 파이프라인 단을 전부 통과할 때까지는 파이프라인이 멈춰야 한다는 문제점이 발생한다.
이 점은 파이프라인으로 구성된 전체 구조의 성능에 치명적인 요소로 작용될 수 있다. 본 발명에서 Quake 3 벤치마크에서 실험해 보니 전체의 약 30% 정도에서 분기가 발생함을 알 수 있었다.
이와 같이 타일링-트래버설 방식에서 파이프라인 지연이 발생하는 경우는 우선 크게 두 가지로 나눌 수 있는데 그 첫 번째는 스탬프가 타일 경계에 부딪치는 경우이고, 두 번째는 스탬프가 삼각형의 변 경계에 걸리는 경우이다.
먼저, 첫 번째인 스탬프가 타일 경계에 부딪치는 경우는 스탬프가 이동할 때 타일 경계에 부딪쳐서 생기는 파이프라인 지연이다.
즉, 스탬프의 기본 이동방향은 오른쪽인데 타일 경계에 부딪치게 되면 현재 스탬프가 전부 처리되어야 다음에 와야 할 스탬프의 위치를 알 수 있기 때문에, 2단이면 하나, 3단이면 2개의 파이프라인 지연이 발생하게 된다.
다음으로 두 번째인 스탬프가 삼각형의 경계에 걸리는 경우는 삼각형의 변에 스탬프가 걸치는 경우에 발생하는 파이프라인 지연으로, 타일 경계에 닿지 않아도 삼각형의 변에 닿으면 분기가 발생하게 된다.
또한, 상기 두 경우가 모두 발생되는 경우로 스탬프가 타일 경계에 닿으면서 삼각형의 변과도 마주치는 경우이다. 특히 타일의 네 귀퉁이에 위치해 있는 스탬프의 경우는 파이프라인 지연이 발생하는 것을 피하기 어렵다.
도 5 는 삼각형이 들어왔을 때 분기가 발생되는 부분을 보여주는 도면으로, 도 5에서 보면, 콘텍스트를 불러오는 부분에서 분기가 일어남을 알 수 있다.
따라서, 분기 예측 기법을 사용하여 다음 스탬프 위치를 미리 파악하여 타일링-트래버설 방식의 파이프라인으로 입력시켜 분기의 발생으로 인해 파이프라인 단이 비게 되는 것, 즉 파이프라인이 멈추는 것을 최소화할 수 있다.
현재 타일 트래버설 방식의 저장 콘텍스트에는 다음에 처리될 스탬프 원점의 정보가 저장되어 있다. 따라서 상기 문제 해결의 핵심은 저장되어 있는 콘텍스트 중에 어떤 콘텍스트가 현재 콘텍스트 바로 다음에 파이프라인 입력되느냐 이다.
이때 스탬프의 기본 이동방향은 오른쪽이고, 타일링-트래버설 유닛은 연속적으로 오른쪽에 있는 정보를 파이프라인 입력으로 가져오는 것을 적용하여야 한다.
도 5에서 작은 사각형은 하나의 스탬프를 의미하고, 삼각형 내부의 숫자는 스탬프의 이동순서이다.
이와 같은 도 5를 참조하여 분기 예측 기법에 대해 실시예를 상세히 설명하면 다음과 같다.
먼저, 10번 스탬프가 변 함수 연산에 들어가서 처리되고 다음 단계로 넘어갈 때, 11번은 바로 변 함수 연산 단계로 들어오게 된다. 11번 스탬프가 변 함수 연산 단계로 들어가면, 40번이 들어오게 되는데 이는 올바른 값이 아니기 때문에 버려지게 된다.
그리고 11번 스탬프에 대한 파이프라인 처리가 끝난 후 12번 스탬프를 불러들이게 된다.
이 경우 트래버설 처리가 3 사이클(cycle) 걸리는 경우 2사이클의 사이클이 낭비되므로, 10번 스탬프가 변 연산 함수에서 처리될 때, 12번 스탬프를 대기시킨다.
즉, 11번 스탬프가 처리된 후 바로 12번 스탬프가 파이프라인 입력단으로 들어올 수 있도록 하기 위함인데, 이는 11번 스탬프가 변 함수 연산을 마치고 다음 단으로 넘어가는 것과 동시에 대기하고 있던 12번 콘텍스트를 파이프라인으로 입력시켜줘야 한다.
이와 같이 동작이 시작되기 전에 먼저 현재 스탬프가 타일 내에서 어느 위치에 있는지를 파악해야 한다.
현재 스탬프의 위치를 파악하기 위해서는 현재 스탬프의 원점의 좌표와 현재 타일의 좌표를 비교하게 된다. 이때, 좌표값을 쉽게 비교할 수 있다.
효과적으로 하드웨어 구현을 하기 위해서 타일의 크기를 2m x 2n (m, n은 정수)의 크기로 나눈다.
그리고 Up_position, Down_position, Right_position의 플래그와, 업/다운(up/down) 플래그, 및 저장 콘텍스트의 유효 플래그 값을 가지고 비교를 하게 된다.
도 6과 도 7에서 타일링-트래버설 방식의 파이프라인된 주사변환 유닛을 보여주는 도면으로, 도 6 은 본 발명에 따른 주사변환 유닛을 위한 삼각형 셋 업 유닛의 상세 도면을 나타내고 있으며, 도 7 은 본 발명에 따른 주사변환 유닛을 위한 타일링-트래버설 유닛의 상세 도면을 나타내고 있다.
일반적인 반-평면 변 함수를 하드웨어로 구현하는 경우는 도 4(b)의 변 함수 유닛이 총 12개가 들어가게 되어, 이 부분에만 24개의 승산기와 72개의 가산기가 필요하게 된다.
따라서, 이 부분에서 많은 하드웨어 로직 (hardware logic)들을 요구함에 따라 하드웨어로 구현하는데 필요한 비용이 매우 커지게 되어 문제가 된다.
이를 도 7과 같이 맨해튼 네이버 방식을 적용하여 구현하였으며, 더욱 효과적으로 비용을 절감하기 위해서 도 6과 같이 삼각형 셋 업 단계와도 고려하였다.
본 발명에 따른 구조에서는 총 15개의 가산기만을 추가하여 반-평면 변 함수를 구현하였다.
도 6 은 일반적 삼각형 셋 업 유닛에서 3개의 가산기를 추가하여 최초의 반-평면 변 함수 연산을 수행하도록 한 것이다.
도 6을 보면, 삼각형 셋업부는 각각의 연산 특징에 따라 전처리부(100), 샘플포인트 계산부(200), 세변의 기울기 계산부(300), 삼각형 모든 정보에 대한 증분 값 계산부(400), 그리고 삼각형 당 최초 반-평면 변함수 계산부(500)로 나눌 수 있다.
상기 삼각형의 셋업 전처리부(100)는 삼각형의 모든 정보들, 즉, 좌표(x,y), 깊이(z), 색(RGB), 투명도(α), 그리고 텍스쳐 매핑을 위한 좌표들의 전처리 해주는 부분이다.
Compare unit에서는 기하학 처리 단에서 입력되는 삼각형의 세 점 V0, V1, V2를 가지고, 각각 y좌표를 기준으로 정렬시켜 가장 위쪽에 있는 점은 vMax, 중간점을 vMid, 가장 아래쪽에 위치한 점은 vMin으로 명명한다.
Float to Fixed에서는 부동 포인트(floating point)값인 세 점의 좌표값을 고정 포인트(Fixed point)로 바꾸는 작업을 한다. 왜냐하면, 부동 연산을 수행하는 기하학 처리부분과 달리, 래스터라이제이션 부분에서는 정수 연산이나, 고정 연산만을 수행하기 때문이다.
그리고 Calculate deltas에서는 삼각형의 각변의 증분값 즉, eMax.dx = vMax.dx-vMin.dx의 값을 구하는 부분으로 이후에 쓰여지는 모든 변의 증분값을 미리 구해놓는다.
상기 삼각형 세 점 각각의 샘플 포인트 계산부(200)에서는 부동 포인트에서 고정 포인트로 바뀐 세 점에 해당되는 정확한 픽셀을 찾아내기 위한 작업을 한다. 즉, 입력된 삼각형의 세 정점의 y좌표값을 먼저 라운딩 (rounding)하고, 이 값을 가지고 조정(adjust)값을 구해 세 정점의 x좌표값에 더해주면, 정점의 샘플 포인트의 좌표값이 구해진다. 샘플포인트는 이후 연산부터에서 고정 포인트로 바뀐 정점들 대신 사용된다.
상기 세변의 기울기 계산부(300)는 삼각형의 세 변의 기울기 값 (Δx/Δy)을 구하는 부분이다. 나눗셈 연산을 수행하지 않고, 역수 검색 테이블 (reciprocal LUT: Look Up Table)을 이용해서 연산을 수행한다. 왜냐하면, 나눗셈 연산 자체가 상당한 대기시간(latency)을 필요로 하기 때문에, 역수 검색 테이블을 사용하여 해당 부분을 참조해주고, 그 값을 곱해주는 방식으로 대기시간(latency)을 줄일 수 있다.
또한 레스터라이제이션 자체의 크기를 줄여주는 효과도 있다. 이런 이유로 많은 다른 경우, 나눗셈 연산 대신 역수 검색 테이블을 사용하고 있다.
상기 삼각형 정보의 증분 값 계산부(400)는 깊이(z), 색(RGB), 투명도(α), 그리고 텍스쳐 매핑을 위한 좌표들의 x축 기준의 증분값과 y축 기준의 증분값을 계산한다. 증분값은 편미분 값을 구하는 계산으로, 그 식은 다음과 같다.
,
.
여기에서 C는 각 변수들을 총칭한다.
각 정보들은 모두 같은 역수 값을 가지기 때문에 이는 미리 계산할 수 있다. 공통 값을 미리 계산해 줌으로써 하드웨어 구현시 증분 값 계산에서 발생할 수 있는 오버헤드를 충분히 줄일 수 있다.
여기서는 이 역수 값을 'oneOverarea'라 하여 미리 계산해준다. 역시 나눗셈 연산을 해줘야 하기 때문에, 역수 검색 테이블을 이용하고 있다.
그리고 상기 최초 반-평면 변함수 계산부(500)는 타일링-트래버설 방식의 주사변환 유닛의 경우에 있는 것으로, 이후 단계인 타일링 -트래버설 유닛에서 쓰여질 초기 반-평면 변 함수값을 계산하는 부분이다.
반-평면 변 함수 계산부(500)는 셋업 유닛의 oneOverarea 계산 부분과 유사하다.
그리고, 본 삼각형 셋 업 유닛이 3사이클의 처리능력을 가지고 있는 유닛이기 때문에, ‘oneOverarea‘ 부분이 항상 사용되어지는 것이 아니다.
따라서 본 유닛에서는 추가되는 하드웨어(특히 곱셈기들)를 절약하기 위해서, ‘oneOverarea‘가 연산을 수행하지 않는 동안 삼각형 당 최초의 반-평면 함수값을 계산하게 하고 있다.
또한 본 발명에서 제안하는 구조에서는 맨해튼 네이버 방식을 채택하여 15개의 가산기만을 추가하여 반-평면 변 함수를 구현하여 보다 효과적으로 하드웨어를 절감하였다.
그리고 도 7과 같이, 타일링-트래버설부는 각각의 연산 특징에 따라, 반-평면 변 함수부(600), 현 스탬프의 상태 점검부(700), 최종 방향 결정 및 분기 예측부(800)로 나눌 수 있다.
상기 반-평면 변 함수값은 삼각형 셋 업 부에 3개의 가산기만을 추가하여 구하고 있다.
상기 현재 스탬프의 상태를 점검부(700)는 최종 이동방향을 결정할 때 사용되어질 각 플래그 비트를 조사하는 부분이다.
우선적으로, 반-평면 변 함수부(600)에서 구해진 스탬프의 네 점의 결과를 가지고 현재 스탬프가 이동 가능한 원시 방향들 (raw direction)을 조사한다. 그리고 동시에 저장된 콘텍스트 내용과 타일경계 및 방향에 대해서도 점검을 한다.
최종 방향 결정 및 분기 예측부(800)는 스탬프 점검부의 결과를 토대로, 다음에 이동할 최종 방향을 결정하는 부분이다.
결정된 다음 스탬프의 원점에 해당되는 모든 정보 값들(좌표(x,y), 깊이(z), 색(RGB), 투명도(α), 그리고 텍스쳐 매핑 좌표들)도 구해줘야 한다.
이를 위해, 현재 위치의 정보에 해당 증분값들을 더해주고, 그 값을 버퍼에 저장해 놓는다.
분기 예측부(800)에서는 파이프라인 지연이 최소가 되도록, 버퍼에 저장되어 있는 다음 스탬프 값을 미리 반-평면 변 함수부(600)로 보내 주고있다.
따라서 분기 예측부(800)는 현재 타일 좌표와 현재 처리 중인 스탬프 좌표를 카운터기(counter)를 이용하여 매번 조사하여, 다음에 수행될 스탬프가 어느 것인지 미리 예측하고 있다. 그리고 해당되는 스탬프의 좌표값들을 미리 반-평면 변 함수부(600)로 보내주어 한 삼각형의 트래버설 작업이 끝날 때까지 타일링-트래버설 파이프라인이 계속 이뤄지게 한다.
그리고 셀렉트 커렉트 디렉션(select correct direction (prediction))(900)은 타일링-트래버설 유닛에서 최종 방향을 미리 예측하여 파이프라인 지연이 막아주는 분기 예측부(800)와 그 주변 부분들과의 관계를 보여준다.
이와 같이 분기 예측부(800)가 포함된 타일링-트래버설 유닛을 구현하여 파이프라인 지연 현상을 효과적으로 줄여주었다.
이상에서 설명한 바와 같은 본 발명에 따른 타일링 트래버설 방식의 주사변환 유닛은 반-평면 변 함수의 변형인 맨해튼 네이버 방식을 적용하여 필요 비용의 대부분을 절감시켰고, 분기 예측 기법을 적용시켜 빈번하게 발생되는 분기를 최소로 하여 파이프라인의 지연현상을 70%이상 효과적으로 감소시켰다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 이탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.
따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정해져야 한다.
도 1 은 스캔-라인 방식과 타일링-트래버설 방식의 메모리 접근 형태를 보여주는 도면
도 2 는 본 발명에 따른 타일링-트래버설 파이프라인의 흐름도
도 3 은 본 발명에 따른 스탬프와 삼각형이 교차할 때 스탬프에 있는 네 개의 탐색점의 부호 상태를 나타내는 도면
도 4(a)는 본 발명에 따른 삼각형의 세 변에 대한 스탬프의 탐색점 부호를 결정하는 방법을 나타낸 도면
도 4(b)는 도 4(a)에 따른 연산을 수행하는 변 함수 유닛의 구조를 나타낸 도면
도 5 는 본 발명에 따른 삼각형이 들어왔을 때 분기가 발생되는 부분을 보여주는 도면
도 6 은 본 발명에 따른 주사변환 유닛을 위한 삼각형 셋 업 유닛의 상세 도면
도 7 은 본 발명에 따른 주사변환 유닛을 위한 타일링-트래버설 유닛의 상세 도면
*도면의 주요부분에 대한 부호의 설명
100 : 전처리부 200 : 샘플포인트 계산부
300 : 세 변의 기울기 계산부 400 : 증분 값 계산부
500 : 반-평면 변함수 계산부 600 : 반-평면 변 함수부
700 : 상태 점검부 800 : 최종 방향 결정 및 분기 예측부
900 : 셀렉트 커렉트 디렉션

Claims (6)

  1. 삭제
  2. 삭제
  3. 삼각형 셋업 유닛(triangle set-up unit), 타일링-트래버설 유닛(tiling- traversal unit), 픽셀 처리 유닛(pixel processing unit)의 파이프라인으로 처리되는 주사 변환 유닛에 있어서,
    상기 삼각형 셋업은 삼각형의 좌표, 깊이, 색, 투명도 그리고 텍스쳐 매핑을 위한 좌표등의 정보를 전처리해주는 전처리부와,
    상기 전처리부에서 부동 포인트에서 고정 포인트로 바뀐 세 점에 해당되는 샘플 포인트의 좌표값인 정확한 픽셀을 찾아내는 샘플 포인트 계산부와,
    상기 샘플 포인트 계산부에서 구해진 샘플 포인트의 좌표값을 연결하는 삼각형의 세 변의 기울기 값을 구하는 기울기 계산부와,
    해당 픽셀의 깊이, 색, 투명도 그리고 텍스쳐 매칭을 위한 좌표들의 x축 기준의 증분값과 y축 기준의 증분값을 계산하는 증분값 계산부와,
    다음 단계의 상기 타일링 트래버설 유닛에서 쓰여질 초기 반-평면 변 함수값을 계산하는 반-평면 변 함수 계산부를 포함하여 구성되는 것을 특징으로 하는 타일링 트래버설 방식의 주사변환 유닛.
  4. 제 3 항에 있어서,
    상기 증분값 계산부에서의 증분값 계산은
    ,
    식을 이용하여 미리 계산하는 것을 특징으로 하는 타일링 트래버설 방식의 주사변환 유닛. (C는 각 변수들을 총칭함)
  5. 제 1 항에 있어서,
    상기 타일링-트래버설 유닛은 맨해튼 네이버 방식을 사용하여 스탬프 원점의 반-평면 변 함수 값을 미리 처리하고, 그 값에 해당 증분값을 더하여 나머지 세 점의 값을 구하도록 구성하는 반-평면 함수부와,
    상기 반-평면 함수부에서 구해진 스탬프의 네 점의 결과를 가지고 현 스탬프가 이동 가능한 원시 방향들을 조사하고, 동시에 저장된 콘텍스트 내용과 타일 경계 및 방향에 대해서 점검하여 최종 이동방향을 결정할 때 사용되어질 각 플래그 비트를 조사하는 스탬프 상태 점검부와,
    상기 스탬프 상태 점검부의 결과를 토대로 다음에 이동한 최종 방향을 결정하는 최종 방향 결정 및 분기 예측부를 포함하여 구성되는 것을 특징으로 하는 타일링 트래버설 방식의 주사변환 유닛.
  6. 제 5 항에 있어서,
    상기 분기 예측부는 현재 타일 좌표와 현재 처리중인 스탬프 좌표를 카운트기를 이용하여 매번 조사하여 다음에 수행될 스탬프가 어느 것인지 미리 예측하고, 이 예측 결과로 버퍼에 저장되어 있는 다음에 수행될 그 스탬프 원점 값을 미리 반-평면 변 함수부로 보내는 것을 특징으로 하는 타일링 트래버설 방식의 주사변환 유닛.
KR10-2002-0045236A 2002-07-31 2002-07-31 타일링 트래버설 방식의 주사변환 유닛 KR100487461B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0045236A KR100487461B1 (ko) 2002-07-31 2002-07-31 타일링 트래버설 방식의 주사변환 유닛

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0045236A KR100487461B1 (ko) 2002-07-31 2002-07-31 타일링 트래버설 방식의 주사변환 유닛

Publications (2)

Publication Number Publication Date
KR20040011920A KR20040011920A (ko) 2004-02-11
KR100487461B1 true KR100487461B1 (ko) 2005-05-03

Family

ID=37319955

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0045236A KR100487461B1 (ko) 2002-07-31 2002-07-31 타일링 트래버설 방식의 주사변환 유닛

Country Status (1)

Country Link
KR (1) KR100487461B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102439632A (zh) * 2009-05-28 2012-05-02 斯里考纳特斯公司 光线跟踪内核及具有该光线跟踪内核的光线跟踪芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950012266A (ko) * 1993-10-30 1995-05-16 김광호 패스트 퐁 묘영용 삼각형 보간기 및 탐색방법
US5446836A (en) * 1992-10-30 1995-08-29 Seiko Epson Corporation Polygon rasterization
US5598517A (en) * 1995-01-10 1997-01-28 Evans & Sutherland Computer Corp. Computer graphics pixel rendering system with multi-level scanning
US20020085010A1 (en) * 2000-08-18 2002-07-04 Mccormack Joel James Method and apparatus for tiled polygon traversal

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446836A (en) * 1992-10-30 1995-08-29 Seiko Epson Corporation Polygon rasterization
KR950012266A (ko) * 1993-10-30 1995-05-16 김광호 패스트 퐁 묘영용 삼각형 보간기 및 탐색방법
US5598517A (en) * 1995-01-10 1997-01-28 Evans & Sutherland Computer Corp. Computer graphics pixel rendering system with multi-level scanning
US20020085010A1 (en) * 2000-08-18 2002-07-04 Mccormack Joel James Method and apparatus for tiled polygon traversal

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102439632A (zh) * 2009-05-28 2012-05-02 斯里考纳特斯公司 光线跟踪内核及具有该光线跟踪内核的光线跟踪芯片

Also Published As

Publication number Publication date
KR20040011920A (ko) 2004-02-11

Similar Documents

Publication Publication Date Title
US11657565B2 (en) Hidden culling in tile-based computer generated images
US8089486B2 (en) Tiled prefetched and cached depth buffer
US6714196B2 (en) Method and apparatus for tiled polygon traversal
US6433789B1 (en) Steaming prefetching texture cache for level of detail maps in a 3D-graphics engine
US8339409B2 (en) Tile-based graphics system and method of operation of such a system
US6798410B1 (en) Shading 3-dimensional computer generated images
EP1127337B1 (en) Shading 3-dimensional computer generated images
US7042462B2 (en) Pixel cache, 3D graphics accelerator using the same, and method therefor
US20020130863A1 (en) Tile relative origin for plane equations
US8682053B2 (en) Method for sampling volume data of an object in an imaging device
US20020130886A1 (en) Antialias mask generation
US20110080406A1 (en) Calculation of plane equations after determination of z-buffer visibility
US20110080405A1 (en) Hermite gregory patch for watertight tessellation
US6654022B1 (en) Method and apparatus for lookahead generation in cached computer graphics system
KR100487461B1 (ko) 타일링 트래버설 방식의 주사변환 유닛
KR100382108B1 (ko) 3차원 그래픽 가속기 및 그의 그래픽 가속처리 방법
CN112734897A (zh) 一种图元光栅化触发的图形处理器深度数据预取方法
US7490208B1 (en) Architecture for compact multi-ported register file
US11934304B2 (en) Circuitry and method
Lee et al. SPARP: a single pass antialiased rasterization processor
CN118276943B (zh) 执行连续近存计算的方法、计算装置、介质和程序产品
CN115018713B (zh) 实现图形旋转的数据存储及访问方法、装置和存储介质
KR100382107B1 (ko) 고성능 3 차원 그래픽 가속기를 위한 일관성 버퍼의 방법및 장치
KR100372090B1 (ko) 임베디드 3차원 그래픽 가속기를 위한 가상으로 메워진2차원 배열 구조와 메모리 매핑방법
Kim et al. Image-optimized rolling cache: Reducing the miss penalty for memory-intensive vision algorithms

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
FPAY Annual fee payment

Payment date: 20120426

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20130418

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee