KR100919236B1 - 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법 - Google Patents

병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법

Info

Publication number
KR100919236B1
KR100919236B1 KR1020070115825A KR20070115825A KR100919236B1 KR 100919236 B1 KR100919236 B1 KR 100919236B1 KR 1020070115825 A KR1020070115825 A KR 1020070115825A KR 20070115825 A KR20070115825 A KR 20070115825A KR 100919236 B1 KR100919236 B1 KR 100919236B1
Authority
KR
South Korea
Prior art keywords
floating point
bit
multiplication
transformation
matrix
Prior art date
Application number
KR1020070115825A
Other languages
English (en)
Other versions
KR20080102940A (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 KR1020070115825A priority Critical patent/KR100919236B1/ko
Priority to US12/100,707 priority patent/US20080291198A1/en
Publication of KR20080102940A publication Critical patent/KR20080102940A/ko
Application granted granted Critical
Publication of KR100919236B1 publication Critical patent/KR100919236B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Abstract

본 발명은 복수의 연산소자(PE)를 구비하는 병렬 프로세서를 이용하여 3차원 그래픽 기하 변환을 수행하는 방법에 관한 것으로, 상기 방법은, 상기 병렬 프로세서를 이용하여 제1 그룹의 정점 벡터들에 대한 모델 변환 및 투영 변환을 수행하는 단계와, 범용 프로세서를 이용하여 상기 제1 그룹의 정점 벡터들에 대한 사원수 보정에 이용되는 값을 계산함과 동시에, 제2 그룹의 정점 벡터들에 대한 모델 변환 및 투영 변환을 수행하는 단계와, 상기 제1 그룹의 정점 벡터들에 대한 사원수 보정 및 화면 매핑을 수행함과 동시에, 상기 제2 그룹의 정점 벡터들에 대한 사원수 보정에 이용되는 값을 상기 범용 프로세서를 이용하여 계산하는 단계와, 상기 제2 그룹의 정점 벡터들에 대한 사원수 보정 및 화면 매핑을 수행하는 단계를 포함한다.

Description

병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법 {A method for 3D Graphic Geometric Transformation using Parallel Processor}
본 발명은 병렬 프로세서를 이용한 3차원 그래픽 기하 변환의 병렬 처리 방법에 관한 것이다. 구체적으로는, 병렬 프로세서를 이용하여 3차원 그래픽 기하 변환의 병렬 처리를 지원함으로써, 별도의 3차원 가속기 없이 많은 3차원 그래픽 처리 연산(3D graphic processing)을 동시에 효율적으로 수행할 수 있는 3차원 그래픽 기하 변환의 병렬 처리 방법에 관한 것이다. 본 발명은 정보통신부 및 정보통신연구진흥원의 IT원천기술개발 사업의 일환으로 수행된 연구로부터 도출된 것이다.[과제관리번호:2006-S-006-02, 과제명: 유비쿼터스 단말용 부품 모듈]
최근 PDA, 핸드폰 등과 같은 휴대단말기의 수요가 급증하면서, 휴대단말기에 제공되는 서비스 영역은 더욱 확장되고 있으며, 동영상, 정지영상, 오디오, 3D 그래픽 등 다양한 멀티미디어 서비스에 수요가 늘어나고 있다. 휴대용 단말기에 내장된 범용 마이크로프로세서는 그 성능이 일반 PC에 비해 낮고 여러 가지 일을 수행해야 하므로 다양한 멀티미디어 서비스를 모두 지원하기에는 연산 처리 능력이 부족하다. 따라서 실시간 수행을 위하여 일반적으로 전용 하드웨어가 서비스 모듈에 사용된다. 하나의 휴대용 단말기에서 여러 가지 매체에 대한 실시간 서비스를 제공하려면 각각의 매체에 대한 전용 하드웨어가 단말기에 탑재되어야 한다. 이러한 하드웨어의 증가는 비용의 증가는 물론이며 휴대용 단말기의 효용성을 감소시키는 소비전력의 증가를 가져오게 된다.
각 매체의 서비스를 위한 전용 하드웨어들을 사용하는 방법에 대한 대안으로 병렬 프로세서를 사용하는 방법이 있다. 이는 하나의 병렬 프로세서를 이용하여 필요에 따라 모든 매체에 대한 서비스를 제공하는 것이다. 즉, 병렬 프로세서내의 재구성 가능한 연산소자 배열 (array of processing elements)을 이용하여, 동영상 서비스를 수행할 때는 병렬 프로세서에서 동영상 서비스를 위한 알고리즘이 수행되며 오디오 서비스를 제공할 때는 병렬 프로세서에서 오디오 서비스를 위한 알고리즘이 수행되는 방법이다. 이렇게 병렬 프로세서를 사용하는 방법은 각 매체마다 전용 하드웨어를 사용하는 방법에 비하여 전용 하드웨어가 필요 없게 되므로 저비용, 저전력, 유연성, 고성능의 특징을 가질 수 있으며, 동영상, 정지영상, 오디오등 다양한 멀티미디어 서비스를 제공한다.
그러나, 대부분의 병렬 프로세서는 정수 연산만을 수행하므로 부동소수점 연산이 필요한 3차원 그래픽 처리를 지원하기에는 많은 제약이 따른다.
따라서, 대부분의 경우는 병렬 프로세서와 별도로 Goforce, RAMP와 같은 휴대단말기용 3차원 그래픽 프로세서를 사용하거나 전용 하드웨어를 탑재하여 사용하지만 하드웨어 및 비용이 증가되는 문제점이 있다.
현재 병렬 프로세서 중에서 3차원 그래픽 처리가 가능한 대표적인 병렬 프로세서로는 MiMagic 등이 존재한다. MiMagic은 별도의 추가 하드웨어없이 병렬 프로세서에서 3차원 그래픽 처리가 가능하나 고정소수점 형식을 사용하고 MiMagic에 특화된 3차원 처리 기법을 적용하여 연산을 하기 때문에 다른 병렬 프로세서에 MiMagic에서 사용한 3차원 처리 기법을 적용시키기 어렵다는 문제점이 있다.
본 발명의 목적은 병렬 프로세서를 이용한 3차원 그래픽 기하 변환의 병렬 처리 방법을 제공하는 것이다. 구체적으로, 임의의 병렬 프로세서에 쉽게 적용 가능하고 별도의 3차원 그래픽 전용 하드웨어의 추가 없이, 많은 연산을 필요로 하는 3차원 그래픽의 기하 변환 처리를 효율적으로 수행할 수 있는 방법을 제공하는데 본 발명의 목적이 있다.
본 발명의 일 특징에 따른 복수의 연산소자(PE)를 구비하는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법은, 상기 병렬 프로세서를 이용하여 제1 그룹의 정점 벡터들에 대한 모델 변환 및 투영 변환을 수행하는 단계와, 범용 프로세서를 이용하여 상기 제1 그룹의 정점 벡터들에 대한 사원수 보정에 이용되는 값을 계산함과 동시에, 제2 그룹의 정점 벡터들에 대한 모델 변환 및 투영 변환을 수행하는 단계와, 상기 제1 그룹의 정점 벡터들에 대한 사원수 보정 및 화면 매핑을 수행함과 동시에, 상기 제2 그룹의 정점 벡터들에 대한 사원수 보정에 이용되는 값을 상기 범용 프로세서를 이용하여 계산하는 단계와, 상기 제2 그룹의 정점 벡터들에 대한 사원수 보정 및 화면 매핑을 수행하는 단계를 포함한다.
본 발명에 따른 병렬 프로세서를 이용한 3차원 그래픽 기하 변환의 병렬 처리 방법은 병렬 프로세서 내의 PE들과 부동소수점 누산기를 이용하여 별도의 전용 하드웨어 추가 없이 부동소수점 연산을 지원함으로써 3차원 그래픽 기하 변환 과정을 효율적으로 수행할 수 있다. 본 발명에서 요구하는 병렬 프로세서의 특징만 만족시킨다면 본 발명의 방법은 임의의 병렬 프로세서에도 쉽게 적용될 수 있다. 본 발명에 따르면, 3차원 그래픽 전용 하드웨어가 필요하지 않기 때문에 많은 연산을 필요로 하는 3차원 그래픽 처리를 저면적 및 저비용으로 수행할 수 있다.
도 1은 3차원 그래픽 처리 과정중 지오메트리 단계의 세부 단계들을 도시한 블록도.
도 2는 본 발명에 따른 3차원 그래픽 기하 변환을 병렬로 처리하는 방법을 도시한 흐름도.
도 3은 본 발명에 이용될 수 있는 병렬 프로세서의 구조를 도시한 도면.
도 4는 IEEE754 단정도 형식의 비트 구조(410), 본 발명에서 이용되는 24비트 부동소수점 형식(420) 및 24비트 부동소수점 형식을 16비트 레지스터 두 개에 나누어 저장하는 형식(430,440)을 도시한 도면.
도 5는 본 발명의 일실시예에 따라 가수부분의 곱셈 결과에 따라 PE가 수행하여야 할 과정을 도시한 도면.
도 6은 본 발명의 일실시예에 따른 행렬 곱셈 과정을 나타낸 순서도.
도 7 내지 도 11은 본 발명의 일실시예에 따른 행렬 곱셈 연산 과정을 예시적으로 도시한 도면.
우선, 본 발명의 이해를 돕기 위해, 3차원 그래픽 처리 과정에 대하여 간략히 설명한다. 일반적으로, 3차원 그래픽 처리과정은 크게 어플리케이션 단계(application stage), 지오메트리 단계(geometry stage), 래스터라이져 단계(rasterizer stage)로 나누어질 수 있다. 어플리케이션 단계에서는 사용되는 응용 프로그램에 따라 다양한 동작이 수행되며, 텍스처 애니메이션, 변환을 통한 애니메이션, 기하 모핑(morphing) 등이 구현될 수 있다. 어플리케이션 단계의 후단에서는 그래픽으로 처리될 물체들(object)을 지오메트리 단계로 전달하는 역할을 주로 한다. 지오메트리 단계는 어플리케이션 단계에서 전달된 정점(vertex)들로 표현된 물체들을 위치 변환시키는 기하 변환 단계(transformation stage)와 정점들의 색상을 결정하는 라이팅 단계(lighting stage)로 나누어진다. 지오메트리 단계를 거친 정보는 래스터라이져 단계로 전달된다. 래스터라이져 단계는 지오메트리 단계에서 전달된 정점 단위로 되어져 있는 물체들의 위치 정보와 색상 정보를 보간법을 통하여 픽셀(pixel) 단위의 위치 정보와 색상 정보로 변환시켜 색을 입히는 역할을 한다.
도 1은 전술한 지오메트리 단계의 세부 단계들을 도시한 블록도이다. 도시된 바와 같이, 지오메트리 단계는 기하 변환 단계(110)와 라이팅 단계(120)로 나뉘며, 기하 변환 단계(110)는, 모델 변환(Model/View transform, 112), 투영 변환(Projection transform,114), 사원수 보정(1/w, 116), 화면 매핑(Screen mapping, 118) 단계로 이루어진다. 모델 변환(112), 투영 변환(114), 화면 매핑(118) 단계들은 모두 4x4 행렬 변환으로 이루어져 있기 때문에 부동소수점 행렬 곱셈으로 수행되며, 사원수 보정(116)은 x,y,z 원소를 w원소로 나눔으로써 수행된다. 여기서 사원수 보정(116)이란 투영 변환(114) 단계를 거친 점에 대한 보정 과정을 말한다. 3차원 그래픽 처리 과정에서 하나의 벡터는 (x, y, z, 0)T로 표시되고, 하나의 점은 (x, y, z, 1)T로 표시되는데, 투영 변환(114) 단계를 거친 새로운 점 P = (xp, yp, zp, wp)T의 wp는 0도 아니고 1도 아닌 값을 가지게 된다. 따라서, xp,yp,zp 원소를 wp원소로 나눠주는 사원수 보정(116)을 거쳐야만 실제 투영된 점인 (x, y, z, 1)T을 얻을 수 있다. 따라서, 기하 변환 단계는 부동소수점 곱셈, 덧셈, 나눗셈의 연산만으로 수행 가능하다.
본 발명에서 부동소수점 곱셈은 병렬 프로세서 내의 연산소자(processing elements: PE) 에서 수행한다. 부동소수점 곱셈은 PE를 이용한 기본적인 정수 연산만으로 빠르게 수행할 수 있다. 한편, 부동소수점 덧셈과 부동소수점 나눗셈은 연산 과정이 복잡하고 많은 연산시간이 필요하기 때문에 PE만을 이용하여 수행하는 것은 비효율적이다. 따라서, 본 발명에서는, 보다 빠른 3차원 그래픽 처리를 위해서, 부동소수점 덧셈은 부동소수점 누산기를 이용하여 수행하고, 부동소수점 나눗셈은 범용프로세서를 이용하여 수행한다.
도 2는 본 발명에 따른 3차원 그래픽 기하 변환을 병렬로 처리하는 방법을 도시한 흐름도이다. 도 2는 4개의 정점 벡터 단위로 기하 변환이 수행되는 과정을 일예로 도시한다. 도시된 바와 같이, 단계(210)에서 4개의 정점 벡터들이 2번의 연속적인 4x4 행렬 곱셈 연산을 통해 모델 변환 및 투영 변환된다. 4x4 행렬 곱셈 연산은 병렬 프로세서 내의 PE들을 통해 수행된다. 첫번째 4x4 행렬 곱셈 연산을 통해 모델 변환되며, 다음 4x4 행렬 곱셈 연산을 통해 투영 변환된다. 본 발명에 따른 행렬 곱셈 연산에 대해서는 이하에서 상세히 설명할 것이다.
단계(220)에서, 상기 단계(210)에서 모델 변환 및 투영 변환 처리된 정점 벡터들에 대한 사원수 보정에 필요한 1/w값을 구하는 계산과, 다음으로 처리되어야 할 4개의 정점 벡터들에 대한 모델 변환 및 투영 변환이 동시에 수행된다. 사원수 보정을 위해 w 원소로 x, y, z 원소를 나누는 것은 많은 시간을 필요로 한다. 따라서, 본 발명에서는 범용 프로세서에 w 값을 전송하여 1/w 값을 구한 후에, 병렬 프로세서내의 각 PE에 1/w 값을 로드하여 각 PE에서 부동소수점 곱셈이 수행되도록 한다. 각 PE는 로드한 1/w 값을 각 원소와 곱함으로써 나눗셈을 한 것과 동일한 결과를 산출할 수 있다. 그러나, 1/w 값을 범용 프로세서에서 계산하고 다시 PE로 전송하기 위해서는 지연시간이 발생되므로, 1/w 값을 범용 프로세서에서 계산하는 지연시간 동안 PE는 다음 연산해야 할 4개의 정점 벡터를 로드하여 모델 변환과 투영 변환을 수행하는 것이 바람직하다.
단계(230)에서는, 상기 단계(220)에서 1/w 값이 구해진 정점 벡터들에 대해 2번의 4x4 행렬 곱셈 연산을 수행함으로써 사원수 보정 및 화면 매핑을 처리하는 것과 동시에, 단계(220)에서 모델 변환 및 투영 변환된 정점 벡터들에 대한 1/w 값을 범용 프로세서를 이용하여 계산한다. 여기서, 2번의 4x4 행렬 곱셈은 병렬 프로세서내의 PE들을 이용하여 수행되며, 이로써 처음 4개의 정점 벡터들에 대한 기하 변환 과정은 완료된다.
단계(240)에서는 단계(230)에서 구해진 1/w 값을 병렬 프로세서의 각 PE로 로드하여 단계(220)에서 모델 변환 및 투영 변환 처리된 정점 벡터들에 대하여 사원수 보정을 수행한 다음 화면 매핑을 수행함으로써 기하 변환 과정을 마무리한다.
상기에서는 처음 4개의 정점 벡터들 및 다음 4개의 정점 벡터들에 대한 기하 변환이 병렬적으로 수행되는 과정에 대해서 설명하였으나, 전술한 단계들의 중첩 및 반복을 통해 더 많은 정점 벡터들에 대한 기하 변환이 병렬 처리될 수 있음은 본 기술분야의 당업자들에게 자명할 것이다. 즉, 본 발명에 따른 3차원 그래픽 기하 변환은, 이미 모델 변환 및 투영 변환된 정점 벡터들에 대한 1/w 값의 계산과 다음 처리 대상의 정점 벡터들에 대한 모델 변환 및 투영 변환을 병렬로 수행하고, 이미 모델 변환 및 투영 변환된 정점 벡터들에 대한 사원수 보정 및 화면 매핑과 다음 처리 대상의 1/w 값 계산을 또한 병렬로 수행함으로써 효율적인 병렬 처리를 가능케 한다.
도 3은 본 발명에 이용될 수 있는 병렬 프로세서의 구조를 도시한 도면이다. 도시된 바와 같이, 병렬 프로세서(300)는, 연산소자(Processing Element: PE) 배열(320), 상기 PE 배열(320)에 직접 연결된 로컬 메모리(local memory, 310), 부동소수점 덧셈을 가속하기 위한 부동소수점 누산기 배열(floating??point accumulator array, 330), 그리고 상기 블록들(310, 320, 330)을 제어하는 제어 유닛(control unit, 340)을 포함한다. PE 배열(320) 위쪽에 연결된 부동소수점 누산기 배열(330)은 상기 PE 배열(320)의 하나의 행에 포함되는 PE 개수와 동일한 개수의 누산기들로 이루어지며, PE 배열(320)의 가장 위쪽 행의 PE들중 같은 열의 PE와 데이터를 주고받을 수 있도록 연결되어 있다. 부동소수점 누산기 배열(330)은 본 발명의 3차원 그래픽 기하 변환(transformation) 과정에서 사용되는 부동소수점 행렬곱의 덧셈 연산을 가속하기 위해 사용된다.
그러나, 전술한 병렬 프로세서의 구조는 예시적인 구조이며, 본 발명이 전술한 구조에만 제한되는 것은 아니다. 하기의 특징들을 만족시키는 병렬 프로세서라면 본 발명이 적용될 수 있다.
(1) 병렬 프로세서 내의 PE에서 수행되는 연산과 PE들간의 데이터 이동은 독립적이며 동시에 이루어질 수 있다.
(2) 병렬 프로세서 내의 PE는 조건문을 수행할 수 있다.
(3) 병렬 프로세서 내의 PE는 정수 곱셈, 덧셈, 뺄셈, 시프트, 논리 연산 등의 연산을 수행할 수 있다.
(4) 병렬 프로세서의 한 쪽에 한 세트의 부동소수점 누산기가 추가되고 상기 누산기들은 PE들에 연결되어 있다.
이하에서, 본 발명에 이용되는 병렬 프로세서는 전술한 특징을 모두 갖고 있으며, 각각의 PE는 16비트 연산을 수행하며, 사용되는 부동소수점 형식은 24비트라고 가정한다. 개인용 컴퓨터의 3차원 그래픽 가속기에서 사용되는 부동소수점 형식은 IEEE754 단정도 형식(IEEE754 single precision format)이 많이 사용된다. 그러나, OpenGL, DirectX 등의 3D 그래픽스 처리 과정에서 필요한 부동소수점의 정밀도(precision)는 24비트로도 충분하고, 휴대단말기에서는 24bit가 많이 사용되므로 본 발명에서도 24비트 부동소수점 형식이 이용된다고 가정한다.
도 4는 IEEE754 단정도 형식의 비트 구조(410), 본 발명에서 이용되는 24비트 부동소수점 형식(420) 및 24비트 부동소수점 형식을 16비트 레지스터 두 개에 나누어 저장하는 형식(430,440)을 도시한다. 도 4에 도시된 바와 같이, IEEE754 단정도 형식은 부호(sign) 1비트, 지수(exponent) 8비트, 가수(mantissa) 23비트로 구성되는데 비하여, 본 발명에서 이용되는 24비트 부동소수점 형식은 부호 1비트, 지수 7비트, 가수 16비트로 구성되며, IEEE754 단정도 형식과 마찬가지로 히든 비트가 존재한다. 본 발명에서는 24비트 부동소수점 형식을 16비트 레지스터에 저장하기 위해, 부호 부분과 지수 부분을 각각 첫 번째 레지스터의 최상위 비트와 하위 비트에 분리하여 저장하고, 가수 부분을 두 번째 레지스터에 저장하는 방법을 사용한다.
앞서 설명한 본 발명에 따른 3차원 그래픽 기하 변환 과정에 가장 많이 이용되는 연산은 부동소수점 행렬 곱셈 연산이다. 기하 변환 과정은 행렬 곱셈을 수행함으로써 정점을 처리하기 때문에 부동소수점 형식의 행렬 곱셈을 지원하면 기하 변환 과정을 수행할 수 있다. 행렬 곱셈은 부동 소수점 곱셈 연산과 PE 상단에 위치해 있는 부동소수점 누산기를 이용한 부동소수점 덧셈을 수행함으로써 이루어진다.
우선, 본 발명에 따른 부동소수점 곱셈 연산 과정을 설명한다. 설명상 편의를 위해, F1, F2 두 개의 부동소수점값이 곱해져 F3의 출력값이 출력된다고 할 때, F1 및 F2가 아래와 같이 레지스터 R1, R2, R3, R4에 저장된다고 가정한다.
R1 : F1의 부호, 지수부분
R2 : F1의 가수부분
R3 : F2의 부호, 지수부분
R4 : F2의 가수부분
R1과 R3을 PE에 있는 산술논리장치(ALU)를 통하여 더하고 R5에 저장한다. 부동소수점 곱셈이므로 두 입력에 대한 지수 비트는 더해져야 되며, 부호 비트도 R1과 R3를 더하는 것으로 올바른 부호가 생성된다. 가수부분의 곱셈을 위해서 R2와 R4를 PE에 있는 18비트 2의 보수 배열 곱셈기를 이용하여 곱하고 결과값을 R2와 R3에 저장한다. 이 때, 가수부분의 곱셈을 위해서는 히든비트를 포함시켜서 17비트로 만들어야 되는데 이는 일반적인 정수곱셈과는 다르다. 본 발명에서는 부동소수점 곱셈시 가수부분의 곱셈과 일반적인 정수 곱셈을 모두 지원하기 위해서, 부동소수점 연산을 위한 별도의 부동소수점용 곱셈 명령어를 정의하였다. 만일 부동소수점용 곱셈 명령어가 입력될 경우에는 입력으로 들어오는 16비트 값에 1비트를 상위에 추가시켜 17비트 곱셈을 수행하게 된다. 반면 일반 곱셈 명령어가 입력될 경우에는 입력으로 들어오는 16비트 값 그대로 16비트 곱셈을 수행한다. 부동소수점 곱셈시 가수부분의 곱셈에 대해서 살펴보면 히든 비트를 포함한 가수 부분을 실제 값으로 변환했을 때, 최소 1.0000000000000000 ~ 최대 1.1111111111111111 사이의 값을 갖게 된다. 따라서, 17 bit 가수부 곱셈이 이루어졌을 경우, 출력으로 34비트가 출력되는데 아래와 같이 세 가지 경우로 나올 수 있다.
01.XXXXXXXXXXXXXXXX
10.XXXXXXXXXXXXXXXX
11.XXXXXXXXXXXXXXXX
가수부분의 곱셈 결과 중 최상위 비트가 0이라면, 지수부분의 수정 없이 예외처리를 하면 된다. 반면 최상위 비트가 1이라면, 지수부분은 1이 증가되고 가수부분은 1비트 시프트가 이루어져야 한다.
도 5는 본 발명의 일실시예에 따라 가수부분의 곱셈 결과에 따라 PE가 수행하여야 할 과정을 도시한다. 조건문 연산이 가능한 PE는 첫 번째 비트(50)를 참조하여 지수부분을 정규화하고, 두 번째 비트(51)를 참조하여 가수부분을 정규화한다. 지수부분과 가수부분을 정규화하였으면 예외처리를 수행한다. 만일 언더플로우가 발생되면 0으로, 오버플로우가 발생되면 최대치로 예외처리를 수행한다. 이상의 부동소수점 곱셈과정을 간단히 표로 요약하면 아래와 같다.
Step Instruction Description
1 ADD R5, R1, R3 R1 + R3 → R5
2 MUL R2, R2, R4 R2 * R4 → R2 (store flag)
3 VSHFT R2, R2 if flag1=1, shift R2 >> 1 → R2
4 ADD R5, R5 if flag1=1, R5 + 1 → R5
5 SUB R1, R5, 63 R5 ?? 63 → R1
6 AND R3, R1, 0x4000 R1 & 0x4000 → R3 (store flag)
7 AND R1, R5, 0x8000 if zero=0, R5 & 0x8000 → R1
8 AND R2, R2, 0x0000 if zero=0, R2 & 0x0000 → R2
9 AND R3, R1, 0x7FFF R1 & 0x7FFF → R3
10 SUB R3, R3, 0x007E R3 ?? 0x007E → R3 (store flag)
11 AND R3, R1, 0x8000 if negative=0, R1 & 0x8000 → R3
12 OR R1, R3, 0x007E if negative=0, R3 ?? 0x007E → R1
13 OR R2, R2, 0xFFFF if negative=0, R2 ?? 0xFFFF → R2
이제, 도 6을 참조하여 본 발명의 기하 변환 과정에 필요한 4x4 행렬 곱셈 과정을 구체적으로 설명한다. 설명의 편의상 하기의 [수학식 1]에 기재된 입력 행렬 X와 변환 행렬 T 간의 행렬 곱셈 과정을 예로 들어 설명한다. 입력 행렬 X의 원소들은 로컬 메모리에 저장되어 있다고 가정한다.
먼저, 단계(610)에서 로컬 메모리에 저장되어 있는 입력 행렬 X의 원소값들을 판독하여 각 PE의 레지스터에 초기값으로 저장한다(도 7 참조).
다음, 단계(620)에서 상기 수학식 1의 출력 행렬 Y 중 맨 마지막 행의 원소들인 M, N, O, P 값을 먼저 구하기 위해, 변환 행렬의 마지막 행 원소들인 m, n, o, p를 각 PE의 행에 전달한다 (도 8(a) 내지 (d) 참조). 각 행의 PE들은 행렬 곱셈에 필요한 m, n, o, p 값을 로컬 레지스터에 저장한다. 본 발명은 출력 행렬 Y의 마지막 행부터 역순으로, 즉, (M,N,O,P), (I,J,K,L), (E F,G,H), (A,B,C,D)의 순서로 결과값을 구하기 위해, 변환 행렬의 마지막 행부터 역순으로 전달한다는 데 그 특징이 있다.
단계(630)에서, PE들은 입력 행렬 X의 각 행에 m, n, o, p를 곱하는 부동소수점 곱셈을 수행한다. 부동소수점 곱셈은 전술한 방식에 따라 수행될 것이다. 부동소수점 곱셈이 완료되면 결과값의 지수부분과 가수부분이 각각 레지스터에 저장된다 (도 9 참조).
단계(640)에서는 이전 단계에서 수행된 부동소수점 곱셈의 결과값을 부동소수점 누산기 방향에 있는 상단의 PE로 전송하는 동시에, 변환 행렬내의 다음 행의 원소들을 PE들에 전달한다. 여기서, 다음 행이라 함은 이전 단계에서 전달된 행의 역순으로 다음 행을 의미하는 것이므로, i, j, k, l이 될 것이다.
단계(650)에서는 I, J, K 및 L의 값을 구하기 위해 입력 행렬 X의 각 행의 원소들에 i, j, k, l 을 곱하는 부동소수점 곱셈을 수행하는 것과 동시에, 부동소수점 누산기에서 누산된 최종 결과값인 M, N, O, P값을 하단의 PE들로 이동시킨다. 이러한 병렬 수행은 PE의 연산과 데이터 이동이 독립적으로 동시에 수행 가능하기 때문이다. 도 10은 I, J, K, L의 값을 구하기 위한 부동소수점 곱셈이 완료된 직후를 도시한 것이다. 부동소수점 곱셈이 완료된 직후에는 최하단의 PE에는 M, N, O, P의 값이 저장되어 있고, 또 다른 레지스터에는 I, J, K, L의 값을 구하기 위한 부동소수점 곱셈 연산의 결과값이 저장되어 있다.
단계(660)에서 변환 행렬의 모든 원소들이 전달되었는지 판단하고, 그렇지 않은 경우에는 A,B,C, D, E, F, G, H의 값을 구하기 위해 전술한 단계들(640, 650)를 반복한다. 마지막으로 A, B, C, D의 값을 구하기 위한 부동소수점 곱셈이 끝나면, 부동소수점 누산기 방향의 상단 PE로 부동소수점 곱셈 결과값들을 이동시켜(670) 부동소수점 누산 결과값을 구함으로써 행렬 곱셈이 완료된다(680).
최종적으로 도 11과 같은 연산 결과를 얻을 수 있다. 도시된 바와 같이, 최종 결과 행렬의 배열은 입력 행렬 X의 배열과 동일하므로 상기의 방법으로 행렬 곱셈을 반복 수행할 수 있다. 만일 행렬 곱셈을 반복 수행할 경우에는 A, B, C, D의 값이 구하기 위한 부동소수점 곱셈이 끝났을 때, 부동소수점 누산을 위한 데이터 이동과 동시에 그 다음 행렬의 원소들을 전달(또는 로드)한다. 그 후의 과정은 상기에서 설명한 방법을 반복 수행한다.
전술한 행렬 곱셈 연산 방식에 기반하여 본 발명에 따른 3차원 그래픽의 기하 변환의 병렬 처리가 효율적으로 수행될 수 있을 것이다. 이상에서, 특정 실시예와 관련하여 본 발명을 설명하였으나, 본 발명은 전술한 실시예 및 도면에 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서, 여러 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속하는 기술분야의 당업자에게 명백할 것이다.
삭제

Claims (13)

  1. 복수의 연산소자(PE)를 구비하는 병렬 프로세서를 이용하여 3차원 그래픽 기하 변환을 수행하는 방법에 있어서, 상기 방법은,
    상기 병렬 프로세서를 이용하여 제1 그룹의 정점 벡터들에 대한 모델 변환 및 투영 변환을 수행하는 단계와,
    범용 프로세서를 이용하여 상기 제1 그룹의 정점 벡터들에 대한 사원수 보정에 이용되는 값을 계산함과 동시에, 제2 그룹의 정점 벡터들에 대한 모델 변환 및 투영 변환을 수행하는 단계와,
    상기 제1 그룹의 정점 벡터들에 대한 사원수 보정 및 화면 매핑을 수행함과 동시에, 상기 제2 그룹의 정점 벡터들에 대한 사원수 보정에 이용되는 값을 상기 범용 프로세서를 이용하여 계산하는 단계와,
    상기 제2 그룹의 정점 벡터들에 대한 사원수 보정 및 화면 매핑을 수행하는 단계
    를 포함하는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  2. 제1항에 있어서, 상기 모델 변환 및 투영 변환은 2번의 행렬 곱셈 연산에 의해 수행되는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  3. 제1항에 있어서, 상기 사원수 보정은 상기 범용 프로세서에 의해 구해진 상기 사원수 보정에 이용되는 값을 상기 복수의 PE에 로드하여 상기 PE들 내에 기저장된 원소들과 곱함으로써 수행되는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  4. 제1항에 있어서, 상기 화면 매핑은 행렬 곱셈 연산에 의해 수행되는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  5. 제2항 또는 제4항에 있어서, 상기 행렬 곱셈 연산은 부동소수점 곱셈과 부동소수점 덧셈 연산을 통해 이루어지며, 상기 부동소수점 곱셈은 상기 복수의 PE들을 이용하여 수행되고, 상기 부동소수점 덧셈은 상기 병렬 프로세서내의 부동소수점 누산기를 이용하여 수행되는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  6. 제5항에 있어서, 상기 부동소수점 누산기는 상기 병렬 프로세서내의 상기 복수의 PE들의 상단에 위치하는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  7. 제5항에 있어서, 상기 행렬 곱셈 연산 과정에서 입력 행렬과 변환 행렬을 곱하여 출력 행렬을 구하는 경우에 상기 출력 행렬의 마지막 행부터 역순으로 결과값들을 구하기 위해 상기 변환 행렬의 마지막 행부터 역순으로 원소들이 상기 PE들에 전달되는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  8. 제7항에 있어서, 상기 PE들에 저장된 부동소수점 곱셈 결과값들이 상기 부동소수점 누산기 방향에 있는 상단의 PE들로 전송되는 동안에, 상기 변환 행렬의 원소들이 상기 PE들에 전달되는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  9. 제7항에 있어서, 상기 PE들 내에서 부동소수점 곱셈이 수행되는 동안 상기 부동 소수점 누산기의 결과값들이 하단의 PE들로 이동되는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  10. 제5항에 있어서, 상기 부동소수점 곱셈은 24비트 부동소수점 형식으로 표현되는 부동 소수점들에 대해 수행되는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  11. 제10항에 있어서, 상기 24비트 부동소수점 형식은, 부호 1비트, 지수 7비트 및 가수 16비트로 이루어지는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  12. 제11항에 있어서, 상기 24비트 부동소수점 형식의 부동소수점은 2개의 16비트 레지스터에 저장되며, 상기 부호 1비트와 상기 지수 7 비트는 제1 레지스터의 최상위 비트와 하위 비트에 분리하여 저장하고, 상기 가수 16 비트는 제2 레지스터에 저장하는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
  13. 제11항에 있어서, 상기 부동소수점 곱셈의 수행시에 상기 16비트의 가수 곱셈을 위해 1개의 비트를 추가하여 17 비트로 표현된 가수의 곱셈을 수행하고, 상기 가수 곱셈 결과값의 최상위 2개 비트값을 참조하여 지수 및 가수 정규화를 수행하는 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법.
KR1020070115825A 2007-05-22 2007-11-14 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법 KR100919236B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070115825A KR100919236B1 (ko) 2007-05-22 2007-11-14 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법
US12/100,707 US20080291198A1 (en) 2007-05-22 2008-04-10 Method of performing 3d graphics geometric transformation using parallel processor

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR20070049844 2007-05-22
KR1020070049844 2007-05-22
KR1020070115825A KR100919236B1 (ko) 2007-05-22 2007-11-14 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법

Publications (2)

Publication Number Publication Date
KR20080102940A KR20080102940A (ko) 2008-11-26
KR100919236B1 true KR100919236B1 (ko) 2009-09-30

Family

ID=40071972

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070115825A KR100919236B1 (ko) 2007-05-22 2007-11-14 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법

Country Status (2)

Country Link
US (1) US20080291198A1 (ko)
KR (1) KR100919236B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8692831B2 (en) 2010-02-01 2014-04-08 Samsung Electronics Co., Ltd. Parallel operation processing apparatus and method

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100834412B1 (ko) * 2007-05-23 2008-06-04 한국전자통신연구원 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서
US9626733B2 (en) * 2014-11-24 2017-04-18 Industrial Technology Research Institute Data-processing apparatus and operation method thereof
US10338919B2 (en) 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
DE102018110607A1 (de) 2017-05-08 2018-11-08 Nvidia Corporation Verallgemeinerte Beschleunigung von Matrix-Multiplikations-und-Akkumulations-Operationen
US10867239B2 (en) * 2017-12-29 2020-12-15 Spero Devices, Inc. Digital architecture supporting analog co-processor

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11144064A (ja) * 1994-12-01 1999-05-28 Fujitsu Ltd 情報処理装置及び情報処理方法
KR20050009993A (ko) * 2002-06-11 2005-01-26 가부시키가이샤 소니 컴퓨터 엔터테인먼트 3차원 컴퓨터 그래픽스의 압축을 위한 시스템 및 방법
KR20060135104A (ko) * 2005-06-24 2006-12-29 이광엽 3차원 그래픽 기하변환 파이프라인 시스템, 기하변환 처리 시스템 및 레지스터 파일 구조

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3076046B2 (ja) * 1989-01-31 2000-08-14 日本電気株式会社 例外検出回路
US5652910A (en) * 1989-05-04 1997-07-29 Texas Instruments Incorporated Devices and systems with conditional instructions
US5255352A (en) * 1989-08-03 1993-10-19 Computer Design, Inc. Mapping of two-dimensional surface detail on three-dimensional surfaces
JP3635359B2 (ja) * 1995-11-09 2005-04-06 株式会社ルネサステクノロジ 透視投影計算装置および透視投影計算方法
JP3338043B2 (ja) * 2000-11-02 2002-10-28 株式会社ソニー・コンピュータエンタテインメント 並列演算装置、エンタテインメント装置、演算処理方法、コンピュータプログラム、半導体デバイス
US7418606B2 (en) * 2003-09-18 2008-08-26 Nvidia Corporation High quality and high performance three-dimensional graphics architecture for portable handheld devices
US7190366B2 (en) * 2004-05-14 2007-03-13 Nvidia Corporation Method and system for a general instruction raster stage that generates programmable pixel packets
US20080043019A1 (en) * 2006-08-16 2008-02-21 Graham Sellers Method And Apparatus For Transforming Object Vertices During Rendering Of Graphical Objects For Display

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11144064A (ja) * 1994-12-01 1999-05-28 Fujitsu Ltd 情報処理装置及び情報処理方法
KR20050009993A (ko) * 2002-06-11 2005-01-26 가부시키가이샤 소니 컴퓨터 엔터테인먼트 3차원 컴퓨터 그래픽스의 압축을 위한 시스템 및 방법
KR20060135104A (ko) * 2005-06-24 2006-12-29 이광엽 3차원 그래픽 기하변환 파이프라인 시스템, 기하변환 처리 시스템 및 레지스터 파일 구조

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8692831B2 (en) 2010-02-01 2014-04-08 Samsung Electronics Co., Ltd. Parallel operation processing apparatus and method

Also Published As

Publication number Publication date
US20080291198A1 (en) 2008-11-27
KR20080102940A (ko) 2008-11-26

Similar Documents

Publication Publication Date Title
US11797303B2 (en) Generalized acceleration of matrix multiply accumulate operations
JP5089776B2 (ja) 浮動小数点演算のための再構成アレイプロセッサ
JP5111377B2 (ja) 浮動小数点パイプラインに係る装置、方法およびシステム
JP3790307B2 (ja) データプロセッサ及びデータ処理システム
US6873324B2 (en) Data processing method, recording medium and data processing apparatus
US8037119B1 (en) Multipurpose functional unit with single-precision and double-precision operations
US7676535B2 (en) Enhanced floating-point unit for extended functions
US11816482B2 (en) Generalized acceleration of matrix multiply accumulate operations
KR100919236B1 (ko) 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법
US6426746B2 (en) Optimization for 3-D graphic transformation using SIMD computations
US7640285B1 (en) Multipurpose arithmetic functional unit
US7769981B2 (en) Row of floating point accumulators coupled to respective PEs in uppermost row of PE array for performing addition operation
CN116700663A (zh) 一种浮点数处理方法及装置
US8190669B1 (en) Multipurpose arithmetic functional unit
Anido et al. Interactive ray tracing using a SIMD reconfigurable architecture
EP1936492A1 (en) SIMD processor with reduction unit
CN113867799A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
CN116700665A (zh) 一种确定浮点数平方根倒数的方法及装置

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
LAPS Lapse due to unpaid annual fee