KR100278565B1 - 그래픽 데이터 계산 수행 방법 및 그에 이용되는 데이터 프로세서 - Google Patents

그래픽 데이터 계산 수행 방법 및 그에 이용되는 데이터 프로세서 Download PDF

Info

Publication number
KR100278565B1
KR100278565B1 KR1019980003050A KR19980003050A KR100278565B1 KR 100278565 B1 KR100278565 B1 KR 100278565B1 KR 1019980003050 A KR1019980003050 A KR 1019980003050A KR 19980003050 A KR19980003050 A KR 19980003050A KR 100278565 B1 KR100278565 B1 KR 100278565B1
Authority
KR
South Korea
Prior art keywords
data
represented
processor
input
logic circuit
Prior art date
Application number
KR1019980003050A
Other languages
English (en)
Other versions
KR19980079671A (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 포만 제프리 엘
Publication of KR19980079671A publication Critical patent/KR19980079671A/ko
Application granted granted Critical
Publication of KR100278565B1 publication Critical patent/KR100278565B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/552Powers or roots, e.g. Pythagorean sums
    • G06F7/5525Roots or inverse roots of single operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5355Using iterative approximation not using digit recurrence, e.g. Newton Raphson or Goldschmidt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/552Indexing scheme relating to groups G06F7/552 - G06F7/5525
    • G06F2207/5521Inverse root of a number or a function, e.g. the reciprocal of a Pythagorean sum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

SIMD 머신의 실행 파이프라인에서 인스트럭션들은 바람직하기로는 인스트럭션 디코드 단계에서 모니터된다. 1/x 또는 1/sqrt(x) 역수 연산 검출시, 데이터 부분들은 주어진 인스트럭션을 실행하는 로직으로 전송된다. 전송된 인스트럭션의 부분들은 x의 데이터 값과 결과가 기록될 타겟 어드레스(또는 레지스터)를 포함한다. 로직은 산술 유닛에 의한 반복 처리를 위한 n비트 시드를 발생하며, 각각의 SIMD 프로세서에서 룩업 표들을 제공해야 하는 필요를 제거한다.

Description

그래픽 데이터 계산 수행 방법 및 그에 이용되는 데이터 프로세서{GEOMETRY PIPELINE IMPLEMENTED ON A SIMD MACHINE}
본 발명은 전반적으로 디스플레이가능한 객체들을 표현하기 위해 그래픽 관련 계산들을 수행하는 데이터 처리 시스템들, 특히, 그래픽 관련 계산들을 수행하는 단일 인스트럭션 복수 데이터(Single Instruction Multiple Data;SIMD) 프로세서들에 관한 것이다.
도 3 및 4를 참조하면, SIMD 머신에서 몇 개의 프로세서들(예를 들면, P0 내지 P3)이 상이한 데이터에 대해 동일한 인스트럭션을 실행한다. 인스트럭션과 데이터는 메모리(1)로부터 인출되어, 메모리 제어기(2), 공유 버스 또는 크로스바 스위치 장치(3), 인스트럭션·데이터 디스패치 및 수집기(4)를 통해 프로세서에 입력된다. 그리고 나서, 프로세서들은 매우 촘촘히 동작하여, 인스트럭션에 따라, 그들의 결과들을 타겟 레지스터로 또는 메모리(1)로 출력한다. 임의의 프로세서는 자신의 마스크 비트(a mask bit)를 세트함으로써 계산에서 빠질 수도 있다. 통상, 각 프로세서는 자체적인 레지스터 세트를 갖는다. 이들 프로세서는 별도의 장치들로서 구현될 수도 있고, 단일 칩에 통합될 수도 있다.
SIMD 머신은 그래픽 시스템의 기하학적 파이프라인을 구현할 수 있다. 이러한 구현시에, (기하학적 처리가 수행될) 정점들은 SIMD 머신의 프로세서에 제각기 대응하는 그룹들로 분할된다. 메모리 제어기(2)는 기하학적 처리를 수행하기 위하여 메모리(1)로부터 할당된 프로세서(P0-P3)로 정점 데이터(x, y, z, w 좌표들, Nx, Ny, Nz, 법선 좌표들)를 로딩한다. 할당된 프로세서는 이 정점 데이터에 대해 기하학적 처리(예를 들면, 좌표 변환, 조명(lighting), 클리핑(clipping), 원근 투사(perspective projection))를 수행한다. 통상, 1/x 역수 연산은, 정점의 원근 투사를 위해, 텍스쳐 매핑 계산(texture mapping calculations)을 위해, 그리고 컬러와, 텍스쳐 좌표들, 알파(alpha)(투명도(transparency)) 및 심도(depth)와 같은 다른 파라미터 기울기(slope) 계산을 위해 사용된다. 1/sqrt(x) 역수 연산은 정점 법선, 라이트 벡터들 등의 정규화에 사용된다.
1/x 및 1/sqrt(x) 연산들은 제각기 두 단계들, 즉, 시드(즉, 초기 추정) 단계(seed phase)와 정련 단계(refinement phase)로 나뉘며, 이들은 제각기 시드 인스트럭션 및 정련 인스트럭션으로 지칭된다. 정련 단계는 소망하는 결과의 정확도에 따라 몇 개의 정련 인스트럭션을 가질 수 있다. 1/x에 대한 처리 순차는 다음과 같다.
이러한 처리 순차는 다른 통상의 인스트럭션들에 선행하거나 후속될 수도 있다.
1/x 및연산은 그래픽 파이프라인의 기하학적 처리 부분에서 매우 자주 발생하며, 이들을 실행하는 데는 상당량의 처리 시간과 자원이 소비된다.
앞서 언급된 바와 같이, 1/x 연산은 기하학적 객체들의 원근 투사에 사용될 수 있고,연산은 조명 계산들을 수행하는데 이용되는 벡터들을 정규화하는데 사용될 수 있다. 이들 연산은 하나의 정점에 대해 적어도 한 번 실행되며, 전체 정점 처리 시간중 대략 총 20%를 소비(이를 목적으로 특수 기법이 전혀 사용되지 않은 경우)한다. 원근 보정 텍스쳐 매핑(perspective correct texture mapping)이 또한 수행되는 경우, 이 지수는 전체 처리 시간의 30%까지 상승한다. 따라서, 기하학적 파이프라인에서 정점 처리 속도를 증가시키기 위해서는 1/x 및연산들을 효율적으로 실행하는 것이 중요하다.
종래의 경우, 1/x 및 1/sqrt 계산 속도를 증가시키기 위해 ROM을 사용한 룩업 표(lookup table)를 채용한 것이 공지되어 있다. 그러나 이 기법은 각 표의 방대한 사이즈로 인해 SIMD 아키텍처에는 효과적이지 못하다.
미국 특허 제 5,457,779 호에서 하벨(Harvell)은 컴퓨터 디스플레이 시스템에 사용되는 통상의 SIMD 머신, 특히, 4 프로세서 또는 기하학적 엔진 장치를 개시하고 있다. 이 특허의 칼럼 3에 앞서 설명된 1/x 계산이 언급되어 있다.
컴퓨터 디스플레이 시스템에서 복잡한 기하학적 객체들을 표현하는데 필요한 총 처리시간을 감소시킬 수 있도록 1/x 및 1/sqrt(x) 연산들을 실행하기 위한 효율적이고 신속한 기법을 제공하는 것이 소망됨을 이해할 수 있다. 본 발명은 이러한 오랫동안 소망되어 온 필요를 중점적으로 다룬 것이다.
본 발명의 제 1 목적 및 장점은 1/x 및 1/sqrt(x)의 수학적 연산들을 수행하기 위한 개선된 기법을 제공하는 것이다.
본 발명의 다른 목적 및 장점은 ROM을 이용한 룩업 표가 필요없이 1/x 및 1/sqrt(x) 함수들의 계산을 돕기 위한 하드웨어 기반 기법을 제공하는 것이다.
도 1은 본 발명을 실시하기에 적합한 그래픽 프로세싱 시스템의 블록도,
도 2a는 도 1의 그래픽 서브시스템 블록을 보다 상세히 도시한 도면,
도 2b는 본 발명에 따른 하나의 SIMD 프로세서를 예시하는 간략화된 블록도,
도 3은 그래픽 프로세싱에 적합한 통상적인 SIMD 머신의 고급 블록도,
도 4는 도 3에 도시된 SIMD 머신의 동작을 설명하기 위한 도면,
도 5는 뉴톤 랩슨 식을 그래프적으로 해석한 도면,
도 6은 32비트 부동소수점 수의 표시를 도시한 도면,
도 7은 입력 및 출력의 부동 소수점 표시를 도시한 도면,
도 8a는 역수 연산을 위한 논리 흐름도,
도 8b는 본 발명에 따른 역수 연산을 위한 시드 발생을 도시하는 로직도.
본 발명에 따르면, SIMD 머신의 실행 파이프라인내의 인스트럭션들이 바람직하기로는 인스트럭션 디코드 단계에서 모니터된다. 1/x 또는 1/sqrt(x) 시드 인스트럭션 검출시, 인스트럭션 부분들이 주어진 인스트럭션을 수행하는 조합 로직으로 전송된다. 이 전송된 인스트럭션 부분들은 x의 데이터 값과, 결과가 기록될 타겟 어드레스(또는 레지스터)를 포함한다. 1/x 및 1/sqrt(x) 시드 인스트럭션을 수행하는 조합 로직이 이하에 상세히 설명된다.
1/x 및 1/sqrt(x)용 시드 인스트럭션은 전형적으로 소스 레지스터 및 타겟 레지스터를 갖는다. 다음 인스트럭션이 현재 인스트럭션의 결과에 의존하는 경우, 일단 인스트럭션이 송출되면, 머신은 다음 인스트럭션을 송출하기 전에 현재 인스트럭션이 완료되기를 기다린다. 다른 경우에, 프로세서가 수퍼스칼러(superscalar)(둘 이상의 산술 유닛을 가짐) 머신이면 다음 인스트럭션은 각 프로세서의 다른 유닛으로 송출될 수 있다. 시드 인스트럭션이 디코딩된 후, 각각의 프로세서에 대응하는 x 값이 인스트럭션내에 지정된 소스 레지스터에 위치될 수 있다. 그리고 나서, 시드 로직은 타겟 레지스터에 시드를 배치한다. 이 단계의 종료시에 각각의 프로세서는 자신의 x 값에 대한 시드를 갖고 있게 된다. 다음 단계는 이 시드를 사용하여 근사치를 정련해서 더욱 정확한 결과를 획득하는 반복 단계이다. 정련 인스트럭션은 시드 인스트럭션으로부터의 결과를 사용하여, 이후 설명되는 바와 같이 정련 동작을 수행한다. 일단 필요한 정련이 수행되면, 프로세서들은 정련 인스트럭션에 후속하여 다른 인스트럭션들을 실행할 수 있다.
이하에서는 본 발명의 이상의 측면 및 다른 측면들이 첨부된 도면을 참조하여 보다 상세히 설명된다.
본 발명을 실시하기에 적합한 그래픽 프로세싱 시스템(100)의 전체적인 아키텍처가 도 1에 도시된다. 도시된 바와 같이, 이 그래픽 프로세싱 시스템(100)은 시스템 버스(106)를 통해 시스템 메모리(104)에 결합된 시스템 제어 프로세서(102)를 포함한다. 시스템 메모리(104)는 하나 이상의 3차원 모델들/화면들에 포함된 객체들을 정의하는 그래픽 데이터를 저장하는 랜덤 액세스 메모리(random access memory;RAM)를 포함한다. 시스템 메모리(104)는 또한, 메모리(104)에 저장된 그래픽 데이터로 정의되는 3차원 모델들/화면들을 통해 진행하거나 또는 그들을 수정하기 위한 사용자-인터페이스(user-interface)를 제공하는, 시스템 제어 프로세서(102)상에서 실행되는 애플리케이션 프로그램을 저장한다. 각각의 객체를 정의하는 그래픽 데이터는 기본형상(primitive)의 좌표 및 속성(예를 들면, 컬러)을 포함한다. 이들 기본형상은 입방체, 선 또는 면과 같은 기하학적 개체이다. 대표적으로 이 기본형상은 3개의 정점으로 정의되는 삼각형이다. 이 경우, 시스템 메모리(104)는 3차원 화면을 이루는 객체들의 면들을 정의하는 삼각형들에 대한 정점들의 순서화된 리스트를 포함한다. 또한, 시스템 메모리(104)는 각각의 기본형상에 대응하는 기본형상 식별자 리스트와 이 기본형상들이 어떻게, 어디에 디스플레이될 것인지를 지정하는 변환 매트릭스들을 저장할 수 있다. 입/출력(input/output;I/O) 장치(108)는 시스템 버스(106)를 통해 시스템 제어 프로세서(102)에 인터페이스한다. 이들 I/O 장치(108)는 텍스트 입력용의 키보드, 템플릿 또는 터치 패드와, 사용자 입력용의 마우스, 트랙볼 또는 라이트 펜과 같은 포인팅 장치와, 음성 입력용의 음성 인식장치중 하나 이상을 포함할 수도 있다.
그래픽 프로세싱 시스템(100)은 또한 시스템 버스(106)를 통해 시스템 메모리(104)에 인터페이스하는 그래픽 서브시스템(110)을 포함한다. 이 그래픽 서브시스템(110)은 본 발명의 교시에 가장 많이 관련된 것으로 도 2a에 보다 상세히 도시된다. 전반적으로, 그래픽 서브시스템(110)은 디스플레이 장치(112)의 디스플레이 영역에 화소들의 어레이로서 디스플레이하기 위하여 시스템 메모리(104)에 저장된 그래픽 데이터를 제공하도록 애플리케이션 프로그램으로부터의 커맨드하에 동작한다. 이 디스플레이 장치(112)는 화소들을 디스플레이하기 위하여 래스터 스캔 기법 또는 액정 디스플레이 기법을 이용할 수 있다. 그래픽 서브시스템(11)에 의해 발생된 화소 데이터는 디지탈 형태이며, 통상 디스플레이 장치(112)는 아날로그 형태의 화소 데이터를 요구한다. 이 경우, 디지탈/아날로그 변환기(digital-to-analog converter;DAC)(114)가 그래픽 서브시스템(110)과 디스플레이 장치(112) 사이에 위치되어, 화소 데이터를 디지탈 형태로부터 디스플레이 장치(112)를 구동하기에 적합한 아날로그 형태로 변환한다.
본 발명의 그래픽 서브시스템(110)은 이후 설명되는 바와 같이, 필요한 경우, 예를 들면, 적어도 하나의 프로그래머블 시퀀서, 메모리, 정수 프로세싱 유닛(들) 및 부동 소수점 유닛(들)을 포함하는 게이트 어레이 또는 칩 세트를 이용하여 하드웨어적으로 구현될 수도 있다. 또한, 그래픽 서브시스템(110)은, 본 명세서에서 전체로서 참조로 인용된 미국 특허 제 4,876,644 호에 도시된 바와 같은 병렬 및/또는 파이프라인형 아키텍처를 포함할 수 있다. 이와 달리, 그래픽 서브시스템(110)은 프로세서와 함께 소프트웨어적으로 구현될 수도 있다. 이 때 프로세서는 통상의 범용 프로세서일 수도 있고, 또는 시스템 제어(호스트) 프로세서의 일부이거나 호스트 프로세서(102)와 일체화된 코프로세서의 일부일 수도 있다.
보다 구체적으로, 도 2a를 참조하면, 그래픽 서브시스템(110)은 자신의 동작을 감독하는 제어 유닛 또는 그래픽 제어 프로세서(110b)를 포함한다. 임의의 장면을 표시하라는 그래픽 명령 수신시, 제어 유닛 또는 그래픽 제어 프로세서(110b)는 그래픽 명령들과 연관된 그래픽 데이터를 렌더링 엔진(rendering engine) 또는 기하학적 서브시스템(110c)으로 보낸다. 렌더링 엔진(110c)은 그래픽 명령들과 연관된 그래픽 데이터를 모델 좌표계(model coordinate system)로부터 화면 좌표계(a view coordinate system)로 변환하며, 사전결정된 화면 크기로 그래픽 데이터를 클리핑한다. 또한, 적용될 음영 알고리즘(shading algorithm)에 따라, 다양한 위치들(즉, 기본형상의 정점들 및/또는 주어진 기본형상에 의해 커버되는 화소들)에서 일루미네이션 모델(illumination model)이 산출된다. 그리고 나서, 변환 및 클리핑된 그래픽 데이터는, 변환된 기본형상을 화소들로 변환하고 통상 각 화소에서의 각 기본형상의 기여도를 저장하는 래스터화 단계(110d)로 보내진다. 렌더링 엔진(110c)은 다양한 아키텍처로 구성될 수 있다. 이러한 아키텍처에 대한 보다 상세한 설명은 폴리(Foley) 등의 "Computer Graphics:Principles and Practice", pp. 855-920 (2nd Ed.1990)에서 찾아볼 수 있다. 본 바람직한 실시예에서, 렌더링 엔진(110c)은 SIMD 프로세서로서 구현된다.
통상, 프레임 버퍼(110f)는 도 1에 도시된 디스플레이 장치(112)의 각 화소에 대한 컬러를 표시하는 화소 데이터를 저장한다. 화소 데이터는 디스플레이 장치(112)상에 디스플레이되기 위해 프레임 버퍼(110f)로부터 주기적으로 출력된다. 바람직하기로는, 프레임 버퍼(110f)는 각기 n비트 길이를 갖는 행 및 열의 매트릭스로서 배열된다. 특정 행 및 열 어드레스는 통상 디스플레이 장치(112)의 디스플레이 영역내 화소 위치에 대응한다. 예를 들어, (0, 1)의 (행, 열) 어드레스는 디스플레이 장치(112)의 위치 (0, 1)에서의 화소에 대응할 수 있다. 각 행은 통상 디스플레이 장치(112)의 특정 주사 라인의 화소들을 표시하며, 각 열은 통상 디스플레이 장치(112)의 수직 라인을 따라 정렬된 화소들을 표시한다. 각 화소 어드레스의 n 비트는 화소에 관련되는 정보를 인코딩한다. 예를 들어, Z버퍼(110e)에서 각 화소 어드레스에 저장된 n비트는 그 화소에서 가시적인(visible) 객체의 심도를 표시한다.
그래픽 서브시스템(110)은 2개의 프레임 버퍼를 포함할 수 있으며, 두 프레임 버퍼중 하나가 활동 디스플레이부(active display portion)로서 동작하는 동안, 다른 하나는 후속하는 디스플레이를 위해 갱신된다. 어느 하나의 프레임 버퍼가 시스템(100)의 필요에 따라 활동 상태로부터 비활동 상태로 변화할 수 있으며, 이와 같은 절환이 이루어지는 특정 방식은 본 발명에 관련되지 않는다.
또한, 프레임 버퍼(110f)의 구성이 디스플레이 장치(112)의 디스플레이 영역에 대응하지 않는 경우, 프레임 버퍼(110f)에 저장된 화소 값들에 대한 스케일링 연산이 수행될 수 있으며, 이에 의해 프레임 버퍼에 저장된 이미지의 축소 및 확대가 행해진다. 확대는 화소 컬러 값들을 복제하거나 컬러 값들간에 일차(linear) 또는 쌍일차(bilinear) 보간을 수행하여 프레임 버퍼(110f)에 저장된 최초의 화소 값들간의 갭을 채움으로써 이루어질 수 있다. 축소는 인접하는 화소들의 컬러 값들의 평균을 냄으로써 이루어질 수 있다.
이제 도 2a를 참조하여 보다 상세히 설명하면, 통상의 그래픽 서브시스템(110)은 자신의 동작을 감독하는 그래픽 제어 프로세서(110b)를 포함한다. 그래픽 제어 프로세서(110b)는 제어 버스(110g)를 통해 그래픽 서브시스템(110)의 다른 구성요소들에 의해 수행되는 동작들을 제어한다. 그래픽 서브시스템(110)은 버스 인터페이스(110a)를 통해 시스템 버스(106)에 연결되며, 시스템 버스(106)의 통신 프로토콜에 따라 시스템 버스(106)로부터 데이터를 판독하고 시스템 버스(106)에 데이터를 기록한다.
그래픽 서브시스템(110)은 버스 인터페이스(110a)에 연결된 기하학적 서브시스템(110c) 및 래스터화기(rasterizer)(110d)를 포함한다. 래스터화기(110d)는 Z-버퍼(110e) 및 프레임 버퍼(110f)에 연결된다. 기하학적 서브시스템(110c)은 그래픽 데이터에 대한 변환 및 클리핑(clipping) 동작을 수행한다. 보다 구체적으로, 기하학적 서브시스템(110c)은 필요에 따라 그래픽 데이터를 시스템 메모리(104)에 저장된 모델(model)의 고유 좌표계(intrinsic coordinate system)로부터 세계 좌표계(world coordinate system)로 변환한다. 이것은, 다수의 모델링 변환 매트릭스들이 연쇄된 단일 변환 매트릭스에 의해 각각의 기본형상의 정점들을 변환함으로써 수행될 수 있다. 또한, 적용될 음영처리 방법(shading method)에 따라, 각각의 원시 함수 또는 정점과 연관된 하나 이상의 표면 수직 벡터들이 변환될 필요가 있을 수 있다.
기하학적 서브시스템(110c)은 또한 각각의 기본형상에 대하여, 그 기본형상의 좌표를 세계 좌표계로부터 화면 좌표계(a view coordinate system)로 변환하는 시계 변환(a viewing transformation)을 수행할 수 있다. 화면 좌표계의 원점은 바람직하기로는 가시 윈도우의 중앙에 놓인다. 그래픽 데이터가 삼각형들의 정점들로 구성된 경우, 시계 변환 연산에 의해 화면 좌표계에서의 삼각형들의 정점들의 리스트가 생성된다. 또한, 기하학적 서브시스템(110c)은 바람직하게 각 기본형상의 화면 좌표들에 대해 원근법에 의한 투사를 수행하여 원근법적으로 도시된 영상을 제공한다. 이러한 기하학적 서브시스템(110c)의 변환 연산들에 대한 보다 상세한 설명은, 폴리(Foley), 밴 댐(Van Dam), 화이너(Feiner) 및 휴즈(Hughes)에 의한 "Computer Graphics Principles and Practice", pp. 201-281, 866-869(1990년 제 2 판)에 개시된 것을 참조할 수 있다.
기하학적 서브시스템(110c)은 또한 클리핑 연산을 수행할 수 있는데, 이 경우 기본형상들이 클리핑 범위(a clipping volume)에 대해 클리핑되어, 변환된 기본형상들의 잠재적으로 가시가능한 클리핑된 부분들을 형성한다. 또한, 기하 서브시스템(110c)은 클리핑 연산으로부터 출력된 기본형상들의 정점 좌표들을 래스터화기(110d)에 의해 요구되는 정규화된 장치 좌표계에 매핑한다. 렌더링 파이프라인에서 이러한 단계의 결과는 정규화된 장치 좌표계에서의 정점들의 리스트로서, 이것은 기본형상들의 잠재적인 가시 부분들을 기술한다. 클리핑 연산의 보다 상세한 설명은, 폴리(Foley), 밴댐(Van Dam), 화이너(Feiner) 및 휴즈(Hughes)에 의한 "Computer Graphics Principles and Practice", pp. 110-132, 924-945, 869-870(1990년 제 2 판)에 개시된 것을 참조할 수 있다.
또한, 그래픽 서브시스템(110)은 3차원 화면/모델(view/model)의 객체들의 표면에 대한 광원의 영향을 시뮬레이트(simulate)하는 조명 계산을 수행할 수 있다. 전형적으로, 조명 계산은 (a) 보는 사람(a viewer)의 특성, (b) 렌더링되는 객체의 특성 및 (c) 하나 이상의 광원의 특성에 의존한다. 보는 사람의 특성은 렌더링되는 객체들에 대한 보는 사람의 위치를 포함할 수 있다. 객체의 특성은 객체를 정의하는 각 삼각형 정점의 위치 및 법선 벡터를 포함할 수 있다. 그리고 광원의 특성은 광의 유형(주변 광, 방향성 광, 스포트라이트 등)에 의존하며, 강도, 컬러, 방향, 감쇠 인수 및 원뿔 각을 포함할 수 있다. 이러한 라이팅 계산을 수행하는 단계들에 대한 보다 상세한 설명은, 폴리, 밴 댐, 화이너 및 휴즈에 의한 "Computer Graphics Principles and Practice", pp. 721-814에 개시되어 있다.
전형적으로, 조명 계산은 화면내 객체들의 삼각형의 모든 정점에 대한 렌더링 처리중에 한 번 수행된다. 따라서, 조명 계산은 기하학적 서브시스템(110c)에 의해 수행될 수 있다. 그러나, 조명 계산은 모든 화소에 대해 계산될 수도 있다. 전형적으로, 이것은 래스터화기(110d)에 의해 수행되는 음영 계산과 관련하여 성취된다. 이 경우, 라이팅 계산은 래스터화기(110d)에 의해 수행되는 음영 계산에 포함된다.
래스터화기(110d)의 동작은 3개의 작업, 즉, 스캔 변환(scan conversion), 음영표시(shading) 및 가시성 판정(visiblity determination)으로 나뉘어진다. 스캔 변환은 기본형상들의 잠재적 가시부를 개개의 화소들로 분해한다. 음영표시는 각 화소의 컬러를 계산한다. 그리고 가시성 판정은 각 화소에서 기본형상의 z좌표(또는 심도값(depth value))를 이용하여 기본형상에 대해 "가시(visible)" 화소들의 세트를 계산한다. 따라서, 기본형상의 잠재적 가시부로 덮여지는 각 화소에 대해 래스터화기(110d)는 화소 정보, 예를 들면, 기본형상의 컬러 및 심도를 생성하며, 적절한 때에, 주어진 화소에서의 기본형상의 컬러 정보 및 심도를 제각기 프레임 버퍼(110f) 및 Z-버퍼(110e)내의 대응하는 위치에 기록한다. 래스터화기(110d)의 동작에 대한 더욱 상세한 설명은, 폴리, 밴담, 화이너 및 휴즈에 의한 "Computer Graphics Principles and Practice", pp. 649-720, 870-871(1990년 제 2 판)에 개시되어 있으며, 본 명세서에서 전체로서 참조로 인용되는 비.씨.리앙(B.C. Liang) 등의 미국 특허 제 4,805,116 호에 개시되어 있다.
앞서 설명되었던 바와 같이, SIMD(단일 인스트럭션 복수 데이터) 머신에서는, 몇 개의 프로세서가 동일한 인스트럭션을 실행하지만, 도 4에 도시된 바와 같이 데이터의 상이한 부분에 대해 동작한다. 프로세서는 촘촘하게 동작한다. 프로세서들이 동일한 메모리를 액세스하므로, 메모리에 대해 높은 대역폭을 갖는 것이 필수적이고 동일한 메모리 위치들에 대한 경쟁을 최소화하는 것이 또한 필수적이다. SIMD 기술은 흔히 최저 비용의 접근법을 제공한다는 점에서 바람직하다.
또한 앞서 설명되었던 바와 같이, 연산 1/x 및 1/sqrt(x)은 그래픽 파이프라인의 기하학적 처리 부분에서 매우 자주 수행된다. 1/x 연산은 기하학적 객체들의 원근 투사, 텍스쳐 매핑, 컬러 및 다른 파라미터 기울기 계산들에 사용되며, 1/sqrt(x) 연산은 조명 계산을 수행하는데 사용되는 벡터를 정규화하는데 사용된다. 이들 연산은 정점마다 한 번씩 실행되며, 모두 합하면 전체 정점 처리 시간중 상당한 부분을 소모한다. 따라서, 도 1 및 도 2a의 그래픽 서브시스템(110)의 기하학적 파이프라인에서 정점 처리 속도를 증가시키기 위해 1/x 및 1/sqrt(x) 연산들을 효율적으로 실행하는 것이 중요하다.
앞서 언급된, ROM을 기반으로 한 룩업 표(lookup tables)는, 시드 근사(approximate seeds)에 이어 뉴턴 랩슨 반복(Newton Raphson iteration)을 제공하며, 1/x 및 1/sqrt(x) 연산의 계산 속도를 증가시키기 위해 사용되었다. 이들 기법은 통상의 컴퓨터 아키텍쳐에 대해 아주 잘 동작하지만, SIMD 아키텍쳐에는 그다지 적합하지 않은데, 그 이유는, SIMD 어레이에서는 모든 프로세서가 룩업 표의 상이한 요소를 동시에 액세스할 필요가 있을 수 있기 때문이다. 이 경우, 룩업 표에 대한 액세스는 직렬화되며, 프로세서는 자신이 룩업 표를 액세스할 차례가 될 때까지 몇 사이클을 하는 일 없이 기다릴 수 있으므로, 고가의 컴퓨팅 자원을 낭비하게 된다. 프로세서 클럭 속도가 극적으로 증가하고 메모리 액세스 속도가 비교적 완만하게 증가하는 경우, 이러한 문제는 시간이 경과함에 따라 악화될 것으로 예상된다. 이러한 접근법의 또 하나의 단점은, SIMD 어레이에 더욱 많은 프로세서가 추가됨에 따라 낭비되는 총 자원은 증가한다는 것이다.
이하에서는 본 발명의 바람직한 실시예가 설명된다.
1/x 및연산에 대한 뉴턴 랩슨 반복식은 우선 다음과 같이 도출된다.
테일러(Taylor)의 이론에 의해, f(x) = 1/x인 경우,
이고, 여기서 R0는 x0입력에 대한 룩업 표에 저장된 값이다.
단지 처음 두 항을 사용하여,
이 된다. 상기한 방정식 세트중 마지막 식은, 개선된 출발 근사치(an improved starting approximation)로서 새로이 계산된 R1을 사용하고 동일한 기법을 다시 적용하여 계산을 반복함으로써 얻어진다.
도 5는 앞서의 식에 대한 기하학적 설명을 위한 도면이다.
1/x에 대한 테일러 급수의 처음 3개 항을 이용하여 다음과 같은 식을 얻는다.
다음으로,에 대한 반복 단계들을 도출하는 과정이 설명된다. 테일러의 이론에 의해, f(x)=이면,
이 된다. 상기 급수중 단지 처음 두 항만을 사용하여,
이 되고, 테일러 급수의 처음 3개 항을 사용하여 다음이 얻어진다.
1/x 및모두에 대해 테일러 급수의 처음 2개 항을 사용하는 것이 바람직한데, 그것은, 보다 나은 시드를 얻기 위한 사이클을 사용하는 것에 비해, 계속되는 반복에 대해 이용가능한 컴퓨터 사이클을 사용하는 것이 더욱 빠른 수렴(convergence)을 제공하기 때문이다.
뉴턴 랩슨 반복식은 종속 연산으로 이루어진다. 즉, 한 단계로부터의 결과는 다음 단계가 시작되기 전에 완전히 획득되어야 한다. 이것은, 산술 유닛에 대한 프로세서들의 파이프라인 처리 밀도가 클 때 문제가 된다. 이러한 문제점을 해소하기 위한 방법이, 정확도는 좀 떨어지지만, 골드슈미트(Goldshmidt)에 의해 제안되었으며, 이하의 골드슈미트 반복 기법으로 주어진다.
2-x 연산은 정규 감산을 수행할 필요없이 단순히 비트를 반전시킴으로써 1의 보수 계산으로 수행된다.
본 발명의 개시된 내용에 따르면, 각 프로세서내에 룩업 표 출력을 즉석에서 발생하도록 하는 회로가 제공된다. 시드 로직(seed logic)의 바람직한 실시예가 이하에서 설명된다. 이 시드 로직을 구현하기 위한 추가의 로직은 수십개 정도의 게이트로 이루어지며, 따라서, 프로세서내의 전체 회로에 비해 비교적 작다.
(32 비트) 부동 소수점 수는 도 6에 도시된 바와 같이 표시되며, 즉, (-1)s×1.f×2e-127로 된다.
그러므로, 부동 소수점 수의 역수는
이 되고, 여기서이며 h는 253-e이다.
도 7은 입력 및 출력의 부동 소수점 표현을 예시한다.
k비트의 룩업 표가 사용된 경우는 가수(mantissa) f의 k MSB로 인덱스되는 2k개의 엔트리가 제공된다. i번째 가수 표 엔트리에 대응하는 g는로 주어진다.
그러므로, 수의 역평방근은이 되며, 여기서 부호 s가 0이라는 가정하에,이고, h는이다.
지수(exponents)가 홀수인 경우와 짝수인 경우가 구별되어야 한다. 종래에는, 이것이 2개의 표 세트, 즉, 홀수 지수에 대한 표와 짝수 지수에 대한 표를 사용함으로써 수행되었다.
그러나 전체 표 사이즈를 감소시키고 단지 하나의 표를 제공하려면, 다음과 같은 기법이 바람직하다.
부동 소수점 수의 역평방근은
이 되며, 여기서이고,이며, (e-127)이 짝수인 경우이고, (e-127)이 홀수인 경우 p=1이다(이 때 s는 0인 것으로 가정됨).
본 기법에 따르면, k비트 표인 경우 가수 f의 k MSB로 인덱스되는 2k개의 엔트리가 존재한다. i번째 가수 표 엔트리에 대응하는 g는로 주어지며, 여기서 k가 홀수인 경우이고, k가 짝수인 경우 q=1이다.
도 8a는 1/x의 경우에 대한 역수 계산 흐름을 예시하며, 도 8b는 시드 발생 로직을 예시한다.
4개 프로세서(P0-P3)를 갖는 SIMD 머신에서 역수 계산 흐름은 다음과 같다.
입력:I3, I2, I1, I0(I3는 P3, I2는 P2, I1은 P1, I0는 P0로의 입력임)
출력:Q3, Q2, Q1, Q0(P3는 Q3, P2는 Q2, P1은 Q1, P0는 Q0를, 식들, 즉, Q3=1/I3, Q2=1/I2, Q1=1/I1, Q0=1/I0에 의해 산출함)
알고리즘:
I3, I2, I1, I0의 각 입력 I에 대해
n비트(예를 들면, n=3) 시드를 계산
m회(예를 들면, m=3) 반복 :: new_seed = seed(2.0-seed*I)
seed = new_seed
결과 Q를 출력
시드 발생 연산은 다음과 같다.
시드의 부호 = 입력의 부호
시드에 대한 지수 h = 1/x에 대하여 127-e(입력 데이터에 대한 지수), 또는 1/sqrt(x)에 대하여 (379-e)/2
시드에 대한 가수 g 는 시드 표 회로에 의해 발생됨.
시드 표 회로로의 입력은 입력 데이터 가수의 n개의 MS 비트,
시드 표 회로의 출력은 시드 가수의 n개의 MS 비트.
따라서, 시드 = [(-1)**s]*(1+g)*(2**(h-127))이고, 여기서 **는 지수연산(exponentiation)을 표시한다.
도 8b의 지수 반전기(exponent reverser)(200)는 앞서 설명되었던 h=253-e 연산을 실행한다.
다음으로 본 발명에 따른 시드 표 구현이 설명된다. 단일프로세서(uniprocessor) 해법의 경우, 지수와 가수 모두에 대해 룩업 표가 사용되었다. 예로서, 256 엔트리 8비트 표가 지수에 대해 사용되고 2048 엔트리 11비트 표가 가수에 대해 사용된다. 알 수 있는 바와 같이, 이들 룩업 표는 SIMD 머신의 각 산술 유닛에서 복제하기에는 너무 크다.
본 발명에 따른 바람직한 접근법에서는 표들이 로직 회로에 의해 효율적으로 발생될 수 있도록 작게 만들어져서, 그들의 값을 ROM 표에 저장할 필요를 없앤다. 더욱이, 지수 부분에 대해서는 표가 전혀 사용되지 않는다. 대신에, 결과값의 지수 부분이 산술 유닛을 사용하여 바람직하게 계산된다. 가수 부분에 대해서는, SIMD 머신내의 각 산술 유닛이 가수 표를 즉석에서 발생하기 위한 회로를 포함한다.
이제 3비트 가수 시드 표와 4비트 가수 시드 표에 대해 설명되고, 이들 표를 발생하는데 필요한 로직이 도출된다.
지금까지의 설명에 기초하여, 1/x에 대한 3비트 가수 표는 다음 표 1에 도시되는 바와 같다.
상기한 표를 발생하기에 적합한 로직은 불리언 형식(Boolean form)으로 다음과 같이 표현된다.
지금까지의 설명에 기초하여,에 대한 3비트 가수 표는 다음 표 2와 같다.
상기 표를 발생하기에 적합한 로직은 다음과 같다.
지금까지의 설명에 기초하여, 1/x에 대한 4비트 가수 표는 다음 표 3과 같다.
상기 표를 발생하기에 적합한 로직은 다음과 같다.
지금까지의 설명에 기초하여,에 대한 4비트 가수 표는 다음 표 4와 같다.
상기 표를 발생하는데 적합한 로직은 다음과 같다.
가수 표 사이즈와 반복 횟수를 변화시켜 시뮬레이션이 수행되었으며, 각각의 조합에 대한 최대 상대 에러(maximum relative error)가 결정되었다. 그 결과값들이 다음의 표 5 및 표 6에 도시된다.
상기 표들에서, 반복 회수가 3일 때 3비트 표로부터 4비트 표로 진행하는 경우보다 2비트 표로부터 3비트 표로 진행하는 경우에 상대 에러의 개선이 훨씬 더 큼이 주목된다. 본 바람직한 실시예는 3비트 표에서 3회 반복을 사용하거나 4비트 표에서 2회 반복을 사용한다. 선택은 주어진 응용에서 허용될 수 있는 에러의 양 및 사이클 계수에 의존한다.
이제부터는 도 2b를 참조하여 도 3의 프로세서들(P0-P3)중 하나와 같은 SIMD 프로세서의 예시적인 실시예에서 도 8b의 시드 로직 발생회로를 설명한다. SIMD 프로세서는 그래픽 서브시스템(110), 특히, 기하 서브시스템(110c) 및 가능하다면 래스터화기(110d)의 모두 또는 일부를 구현하기 위해 이용된다.
프로세서는 I/O 블록(206)에 결합된 인스트럭션 파이프라인(207) 및 대응하는 데이터 파이프라인(208)을 포함한다. 예로서, 인스트럭션 파이프라인(207)은 4 내지 6개의 인스트럭션을 위한 저장장치를 포함할 수 있다. 인스트럭션 파이프라인(207)의 출력단은 실행될 인스트럭션을 인스트럭션 디코더(209)에 제공한다. 인스트럭션 디코더(209)는 이러한 1/x 또는 1/sqrt(x) 형식의 인스트럭션에 응답하여, 부동 소수점 데이터 값을 부동 소수점 입력 레지스터(201)로 경로배정하도록 데이터 멀티플렉서(210)를 제어한다. 다른 인스트럭션 형태들(예를 들면, 승산, 가산, 감산, 등)과 연관된 데이터는 이와 달리 산술 유닛(211)으로 직접 경로배정된다. 입력 부동 소수점 레지스터(201)로 경로배정된 데이터 값은 처리된 후, 지수 반전기(200) 및 시드 로직 블록(202)으로부터 출력되며, 그 결과는 출력 부동 소수점 레지스터(203)에 제공되어, 출력 부동 소수점 레지스터(203)는 시드 값(즉, 본 발명에 따라 발생된 1/x 또는 1/sqrt(x)의 초기 산출치)을 포함하고 있게 된다. 발생된 시드 값은 앞서 설명된 바와 같은 반복 처리(예를 들면, 3비트 시드 표에서 3회 반복 또는 4비트 시드 표에서 2회 반복)를 위해 산출 유닛(211)의 입력단에 공급된다. 최종 결과치는 원하는 정확도를 갖는 1/x 또는 1/sqrt(x)의 계산된 값이다. 산술 유닛(211)의 출력단에는 또한 멀티플렉서(212)가 제공되어, 결과치를 레지스터 화일(213)내의 인스트럭션-지정 레지스터(an instruction-specified register)로 경로배정하거나 시스템 메모리(104)내에 저장하기 위해 I/O 블록(206)으로 되경로배정한다.
실시중에, 가수 전체가 아니라 가수의 몇 MSB(예를 들면, 3 또는 4비트)만이 입력 레지스터에 제공될 필요가 있다. 그리고 나서, 시드 로직(202)의 출력에 0들이 첨가되어 제 1 반복을 수행하기 위해 산술 유닛에 제공된다.
멀티플렉서(210)는, 데이터 소스에 따라, 시드 로직 블록(202)의 입력을 데이터 파이프라인(208) 대신에 레지스터 파일(213)의 출력에 접속하는데 사용될 수 있음을 알 수 있다.
시퀀서(214)는, 인스트럭션 단위로 다양한 로직 블록들의 정확한 마이크로시퀀싱을 보장하도록 프로세서 회로에 제어 출력을 제공하기 위해 인스트럭션 사이클 클럭과 분리되어 동작한다.
레지스터들(201, 203)중 하나 또는 둘은, 클럭 속도, 조합 시드 로직 블록을 통한 전파 지연(202) 및 다른 인자들에 따라, 몇몇 실시예에서 선택사양적일 수 있다. 또한, 몇몇 실시예에서, 지수 반전기(200)의 기능은 산술 유닛(211)으로 구현될 수도 있으며, 따라서, 별도의 로직 블록(200)으로서 제공되지 않을 수도 있다. 어느 경우든, 지수 반전기는 도 8b에 도시된 바와 같이 1/x에 대해 (127-e) 연산을, 1/sqrt(x)에 대해 (379-e)/2 연산을 수행한다.
이상 본 발명이 그의 바람직한 실시예로서 특별히 도시되고 설명되었지만, 당분야에 숙련된 자라면 그 형식 및 세부사항에 있어서 발명의 범위 및 사상으로부터 벗어나지 않고 변경이 이루어질 수 있음을 알 것이다.
이상과 같은 본 발명에 의하면, 각각의 SIMD 프로세서에서 룩업 표들을 제공해야 할 필요없이 1/x 및 1/sqrt(x)의 수학적 연산들을 수행할 수 있는 개선된 기법이 제공된다.

Claims (17)

  1. ① 그래픽 데이터(graphics data)를 저장하는 메모리―상기 그래픽 데이터는 부호 필드(a sign field) 부분, 지수 필드(an exponent field) 부분 및 가수 필드(a mantissa field) 부분을 갖는 부동 소수점 형식(floating point format)으로 표현됨―와,
    ② 상기 메모리에 연결되어 디스플레이를 위한 상기 그래픽 데이터를 준비하는 그래픽 프로세서(a graphics processor)―상기 그래픽 프로세서는 SIMD 아키텍쳐로 구성된 다수의 프로세서들을 구비함―를 포함하되,
    상기 각 프로세서는 부동 소수점 형식으로 표현된 상기 그래픽 데이터의 상기 부분들에 대해 역수 연산(reciprocal operations)을 수행하고, 상기 각 프로세서는 상기 그래픽 데이터의 상기 부분들을 입력하기 위해 메모리에 결합된 입력단들을 갖는 조합 로직 회로(a combinatorial logic circuit)를 포함하며, 상기 로직 회로는 상기 그래픽 데이터의 입력된 부분들에 근거해 시드 값(a seed value)을 제공하는 출력단을 갖는
    데이터 프로세서(a data processor).
  2. 제 1 항에 있어서,
    상기 각 프로세서는 (127-e) 연산을 구현하는 지수 반전기(a exponent reverser)를 포함하며, 여기서 e는 1/x 형식의 역수 연산의, 부동 소수점 형식으로 된 입력 그래픽 데이터 값의 지수 필드인 데이터 프로세서.
  3. 제 1 항에 있어서,
    상기 각 프로세서는 (379-e)/2 연산을 구현하는 지수 반전기를 포함하며, 여기서 e는 1/sqrt(x) 형식의 역수 연산의, 부동 소수점 형식으로 된 입력 그래픽 데이터 값의 지수 필드인 데이터 프로세서.
  4. 제 1 항에 있어서,
    상기 로직 회로는, 상기 입력 그래픽 데이터의 가수 필드(f) 부분의 n개의 MSB에 결합된 n개의 입력단과, 출력 가수 필드(g) 부분의 n개의 MSB에 결합된 n개의 출력단을 구비하는 시드 로직 블록(a seed logic block)을 포함하는 데이터 프로세서.
  5. 제 4 항에 있어서,
    상기 각 프로세서에서 적어도 상기 출력 가수 필드는 산술 유닛(an arithmetic unit)의 입력단에 결합되어 상기 산술 유닛에 시드 값을 제공하며, 상기 산술 유닛은 중앙의 마이크로코드의 제어하에 시드 값으로 시작하는 역수 연산의 결과를 반복적으로 정련하도록 동작하는 데이터 프로세서.
  6. 제 5 항에 있어서,
    상기 각 산술 유닛은 골드슈미트 반복 기법(Goldshmidt iterative technique)에 따라 동작하는 데이터 프로세서.
  7. 제 4 항에 있어서,
    상기 n은 3이고, 상기 역수 연산은 1/x 형식이며, 상기 입력 가수 필드의 상기 3개의 MSB는 X2, X1, X0로 표시되되, X2가 MSB이고, 상기 3개 출력은 Y2, Y1, Y0로 표시되며, 상기 로직 회로는 다음과 같은 연산
    을 구현하도록 구성되는 데이터 프로세서.
  8. 제 4 항에 있어서,
    상기 n은 3이고, 상기 역수 연산은 1/sqrt(x) 형식이며, 상기 입력 가수 필드중 상기 3개 MSB는 X2, X1, X0로 표시되되, X2가 MSB이고, 상기 3개 출력은 Y2, Y1, Y0로 표시되며, 상기 로직 회로는 다음과 같은 연산
    을 구현하도록 구성되는 데이터 프로세서.
  9. 제 4 항에 있어서,
    상기 n은 4이고, 상기 역수 연산은 1/x 형식이며, 상기 입력 가수 필드의 상기 4개 MSB는 X3, X2, X1, X0로 표시되되, X3가 MSB이고, 상기 4개 출력은 Y3, Y2, Y1, Y0로 표시되며, 상기 로직 회로는 다음과 같은 연산
    을 구현하도록 구성되는 데이터 프로세서.
  10. 제 4 항에 있어서,
    상기 n은 4이고, 상기 역수 연산은 1/sqrt(x) 형식이며, 상기 입력 가수 필드의 상기 4개 MSB는 X3, X2, X1, X0로 표시되되, X3가 MSB이고, 상기 4개 출력은 Y3, Y2, Y1, Y0로 표시되며, 상기 로직 회로는 다음과 같은 연산
    을 구현하도록 구성되는 데이터 프로세서.
  11. 그래픽 데이터 계산(graphics data calculations)을 수행하는 방법에 있어서,
    ① 다수의 데이터 프로세서상에서 수학적 역수 연산을 병렬로 실행하는 단계―상기 각 데이터 프로세서는 부동 소수점 형식으로 표현된 상이한 그래픽 데이터에 대한 연산을 수행함―와,
    ② 상기 각 데이터 프로세서에서, 상기 그래픽 데이터의 n개의 MSB 가수 비트에 결합된 n개의 입력단과, 산술 유닛의 입력단에 연결된 n개의 출력단을 갖는 조합 로직 회로를 이용하여, 상기 수학적 역수 연산을 위한 시드 값을 발생하는 단계와,
    ③ 산술 유닛에서 상기 시드 값을 반복적으로 정련하여 결과를 제공하는 단계를 포함하는
    그래픽 데이터 계산 수행 방법.
  12. 제 11 항에 있어서,
    상기 각 데이터 프로세서는 127-e 연산 또는 (379-e)/2 연산중 하나를 실행하는 지수 반전기를 포함하며, 상기 e는 부동 소수점 형식으로 된 입력 그래픽 데이터 값의 지수 필드인 그래픽 데이터 계산 수행 방법.
  13. 제 11 항에 있어서,
    상기 각 산술 유닛은 127-e 또는 (379-e)/2 형식을 갖는 지수 반전 단계를 수행하며, 상기 e는 부동 소수점 형식으로 된 입력 그래픽 데이터 값의 지수 필드인 그래픽 데이터 계산 수행 방법.
  14. 제 11 항에 있어서,
    상기 n은 3이고, 상기 수학적 역수 연산은 1/x 형식이며, 상기 입력 가수 필드의 3개 MSB는 X2, X1, X0로 표시되되, X2가 MSB이고, 상기 3개의 출력은 Y2, Y1, Y0로 표시되며, 상기 로직 회로는 다음과 같은 연산
    을 구현하도록 구성되는 그래픽 데이터 계산 수행 방법.
  15. 제 11 항에 있어서,
    상기 n은 3이고, 상기 수학적 역수 연산은 1/sqrt(x) 형식이며, 상기 입력 가수 필드의 3개 MSB는 X2, X1, X0로 표시되되, X2가 MSB이고, 상기 3개 출력은 Y2, Y1, Y0로 표시되며, 상기 로직 회로는 다음과 같은 연산
    을 구현하도록 구성되는 그래픽 데이터 계산 수행 방법.
  16. 제 11 항에 있어서,
    상기 n은 4이고, 상기 수학적 역수 연산은 1/x 형식이며, 상기 입력 가수 필드의 4개 MSB는 X3, X2, X1, X0로 표시되되, X3가 MSB이고, 상기 4개 출력은 Y3, Y2, Y1, Y0로 표시되며, 상기 로직 회로는 다음과 같은 연산
    을 구현하도록 구성되는 그래픽 데이터 계산 수행 방법.
  17. 제 11 항에 있어서,
    상기 n은 4이고, 상기 수학적 역수 연산은 1/sqrt(x) 형식이며, 상기 입력 가수 필드의 4개 MSB는 X3, X2, X1, X0로 표시되되, X3가 MSB이고, 상기 4개 출력은 Y3, Y2, Y1, Y0로 표시되며, 상기 로직 회로는 다음과 같은 연산
    을 구현하도록 구성되는 그래픽 데이터 계산 수행 방법.
KR1019980003050A 1997-04-24 1998-02-04 그래픽 데이터 계산 수행 방법 및 그에 이용되는 데이터 프로세서 KR100278565B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/840,058 1997-04-24
US08/840,058 US5973705A (en) 1997-04-24 1997-04-24 Geometry pipeline implemented on a SIMD machine

Publications (2)

Publication Number Publication Date
KR19980079671A KR19980079671A (ko) 1998-11-25
KR100278565B1 true KR100278565B1 (ko) 2001-02-01

Family

ID=25281346

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980003050A KR100278565B1 (ko) 1997-04-24 1998-02-04 그래픽 데이터 계산 수행 방법 및 그에 이용되는 데이터 프로세서

Country Status (2)

Country Link
US (1) US5973705A (ko)
KR (1) KR100278565B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106233243A (zh) * 2014-04-30 2016-12-14 惠普发展公司,有限责任合伙企业 多架构管理器

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080008393A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US20080162875A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel Data Processing Apparatus
US20070242074A1 (en) * 1999-04-09 2007-10-18 Dave Stuttard Parallel data processing apparatus
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
US20080007562A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US20070294510A1 (en) * 1999-04-09 2007-12-20 Dave Stuttard Parallel data processing apparatus
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
US20080162874A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel data processing apparatus
US8174530B2 (en) * 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US8169440B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Parallel data processing apparatus
US8171263B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
US6747660B1 (en) * 2000-05-12 2004-06-08 Microsoft Corporation Method and system for accelerating noise
US6731303B1 (en) * 2000-06-15 2004-05-04 International Business Machines Corporation Hardware perspective correction of pixel coordinates and texture coordinates
US7847803B1 (en) * 2000-07-26 2010-12-07 Ati Technologies Ulc Method and apparatus for interleaved graphics processing
GB2376310B (en) * 2001-03-14 2005-09-28 Micron Technology Inc Arithmetic pipeline
US20100274988A1 (en) * 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
US6963341B1 (en) * 2002-06-03 2005-11-08 Tibet MIMAR Fast and flexible scan conversion and matrix transpose in a SIMD processor
US7793084B1 (en) 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
US6924802B2 (en) * 2002-09-12 2005-08-02 International Business Machines Corporation Efficient function interpolation using SIMD vector permute functionality
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
GB2409061B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
GB2410097B (en) * 2004-01-13 2006-11-01 Advanced Risc Mach Ltd A data processing apparatus and method for performing data processing operations on floating point data elements
GB2411978B (en) * 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7302627B1 (en) * 2004-04-05 2007-11-27 Mimar Tibet Apparatus for efficient LFSR calculation in a SIMD processor
US9557994B2 (en) 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US7324113B1 (en) * 2005-03-09 2008-01-29 Nvidia Corporation Perspective correction computation optimization
US7788468B1 (en) 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US7584342B1 (en) * 2005-12-15 2009-09-01 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and SIMD instruction issue
US8429384B2 (en) * 2006-07-11 2013-04-23 Harman International Industries, Incorporated Interleaved hardware multithreading processor architecture
GB2483902B (en) 2010-09-24 2018-10-24 Advanced Risc Mach Ltd Vector floating point argument reduction
US9658827B2 (en) * 2014-10-21 2017-05-23 Arm Limited Apparatus and method for performing reciprocal estimation operation
US10768896B2 (en) * 2017-12-21 2020-09-08 Intel Corporation Apparatus and method for processing fractional reciprocal operations
US10664237B2 (en) 2017-12-21 2020-05-26 Intel Corporation Apparatus and method for processing reciprocal square root operations
KR102510077B1 (ko) * 2018-04-24 2023-03-14 삼성에스디에스 주식회사 부채널 공격에 안전한 연산 장치 및 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3515344A (en) * 1966-08-31 1970-06-02 Ibm Apparatus for accumulating the sum of a plurality of operands
US4805116A (en) * 1986-04-23 1989-02-14 International Business Machines Corporation Interpolated display characteristic value generator
US4876644A (en) * 1987-10-30 1989-10-24 International Business Machines Corp. Parallel pipelined processor
US4878190A (en) * 1988-01-29 1989-10-31 Texas Instruments Incorporated Floating point/integer processor with divide and square root functions
US5522083A (en) * 1989-11-17 1996-05-28 Texas Instruments Incorporated Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors
US5159665A (en) * 1989-11-27 1992-10-27 Sun Microsystems, Inc. Graphics accelerator system
US5220524A (en) * 1990-12-13 1993-06-15 Micron Technology, Inc. Machine method to perform newton iterations for reciprocals
US5307450A (en) * 1991-02-19 1994-04-26 Silicon Graphics, Inc. Z-subdivision for improved texture mapping
JP3178746B2 (ja) * 1991-09-25 2001-06-25 松下電器産業株式会社 浮動小数点数のためのフォーマット変換装置
US5457779A (en) * 1993-01-15 1995-10-10 Silicon Graphics, Inc. System for accessing graphic data in a SIMD processing environment
JP3583474B2 (ja) * 1994-06-29 2004-11-04 株式会社ルネサステクノロジ 乗算装置
US5630160A (en) * 1995-03-08 1997-05-13 Texas Instruments Incorporated Floating point exponent compare using repeated two bit compare cell
US5748863A (en) * 1995-10-06 1998-05-05 International Business Machines Corporation Method and system for fast interpolation of depth buffer values in a computer graphics display system
US5764555A (en) * 1996-03-13 1998-06-09 International Business Machines Corporation Method and system of rounding for division or square root: eliminating remainder calculation
US5745125A (en) * 1996-07-02 1998-04-28 Sun Microsystems, Inc. Floating point processor for a three-dimensional graphics accelerator which includes floating point, lighting and set-up cores for improved performance
US5768170A (en) * 1996-07-25 1998-06-16 Motorola Inc. Method and apparatus for performing microprocessor integer division operations using floating point hardware

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106233243A (zh) * 2014-04-30 2016-12-14 惠普发展公司,有限责任合伙企业 多架构管理器

Also Published As

Publication number Publication date
US5973705A (en) 1999-10-26
KR19980079671A (ko) 1998-11-25

Similar Documents

Publication Publication Date Title
KR100278565B1 (ko) 그래픽 데이터 계산 수행 방법 및 그에 이용되는 데이터 프로세서
US6417858B1 (en) Processor for geometry transformations and lighting calculations
US5274760A (en) Extendable multiple image-buffer for graphics systems
KR101349171B1 (ko) 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법
EP0430501B1 (en) System and method for drawing antialiased polygons
US6166743A (en) Method and system for improved z-test during image rendering
US5926406A (en) System and method for calculating floating point exponential values in a geometry accelerator
EP0447229A2 (en) Arithmetic and logic processing unit for computer graphics system
US6377265B1 (en) Digital differential analyzer
JPH05307610A (ja) テクスチャマッピング方法およびその装置
US5003497A (en) Method for three-dimensional clip checking for computer graphics
JPH10275460A (ja) メモリ装置及びこれを用いた画像処理装置
US5303321A (en) Integrated hardware generator for area fill, conics and vectors in a graphics rendering processor
US6219062B1 (en) Three-dimensional graphic display device
JP3058017B2 (ja) グラフィックス画素データを変換するための装置および方法
US5402533A (en) Method and apparatus for approximating a signed value between two endpoint values in a three-dimensional image rendering device
JPH096967A (ja) 三角形を表わす画素データを生成する装置
US6661423B2 (en) Splitting grouped writes to different memory blocks
US6778188B2 (en) Reconfigurable hardware filter for texture mapping and image processing
US6784894B2 (en) Mapping time-sorted to direction-sorted triangle vertices
US6731303B1 (en) Hardware perspective correction of pixel coordinates and texture coordinates
JP3839870B2 (ja) 四辺形を表わす画素データを生成する装置および方法
US4945497A (en) Method and apparatus for translating rectilinear information into scan line information for display by a computer system
US6927775B2 (en) Parallel box filtering through reuse of existing circular filter
US6822656B1 (en) Sphere mode texture coordinate generator

Legal Events

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

Payment date: 20030808

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee