KR100325902B1 - 고성능3차원그래픽가속기를위한부동소숫점처리기및그처리기능수행방법 - Google Patents

고성능3차원그래픽가속기를위한부동소숫점처리기및그처리기능수행방법 Download PDF

Info

Publication number
KR100325902B1
KR100325902B1 KR1019940011052A KR19940011052A KR100325902B1 KR 100325902 B1 KR100325902 B1 KR 100325902B1 KR 1019940011052 A KR1019940011052 A KR 1019940011052A KR 19940011052 A KR19940011052 A KR 19940011052A KR 100325902 B1 KR100325902 B1 KR 100325902B1
Authority
KR
South Korea
Prior art keywords
floating point
register
microinstructions
clip
microinstruction
Prior art date
Application number
KR1019940011052A
Other languages
English (en)
Other versions
KR950001538A (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 KR950001538A publication Critical patent/KR950001538A/ko
Application granted granted Critical
Publication of KR100325902B1 publication Critical patent/KR100325902B1/ko

Links

Classifications

    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

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

Abstract

컴퓨터 시스템내 고성능 3 차원 그래픽 가속기를 위한 부동소숫점 처리기가 개시되었다. 부동소숫점 처리기는 특수화된 그래픽 마이크로 명령어를 구현한다. 특수화된 그래픽 마이크로 명령어는 삼각형 정점을 정렬하기 위해 범용 레지스터 그룹의 하드웨어 재매핑을 일으키는 스왑 마이크로 명령어를 포함한다. 특수화된 그래픽 마이크로 명령어는 또한 3 차원 기하도형을 위한 특수화된 조건분기를 포함한다.

Description

고성능 3 차원 그래픽 가속기를 위한 부동소숫점 처리기 및 그 처리기능 수행방법
(발명의 배경)
(발명의 분야)
본 발명은 컴퓨터 그래픽 시스템 분야에 관한 것이다. 더욱 상세히는, 본 발명은 컴퓨터 시스템에서 고성능 3 차원 그래픽 가속기를 위한 부동소숫점 처리기에 관한 것이다.
기술배경
3 차원 그래픽 가속기는 컴퓨터 시스템용 특수화된 그래픽 렌더링 서브 시스템(graphic rendering subsystem)이다. 전형적으로, 컴퓨터 시스템의 호스트 처리기상에서 실행하는 응용 프로그램은 디스플레이 장치에서의 디스플레이를 위한 3 차원 그래픽요소를 정의하는 3 차원 기하입력데이타를 발생시킨다. 응용 프로그램은 기하입력데이타를 호스트 처리기로부터 그래픽 가속기로 전송한다. 그후, 그래픽 가속기는 디스플레이 장치상에서 대응 그래픽요소를 렌더링한다.
종래의 그래픽 가속기에서, 3 차원 그래픽 기능인 변형, 클립테스트(clip test), 페이스결정 (face determination), 라이팅 (lighting), 클리핑 (clipping)및 화면공간변환(screen space conversion)들은 종종 상용(商用)디지털 신호처리(digital signal processing)(DSP)칩에 의해 수행되었다. 그러나, 이러한 DSP 칩은 3 차원 컴퓨터 그래픽에는 최적이 되지 못했다.
예를 들면, 전형적인 DSP 칩에 설비된 신속검색 내부 레지스터(fast access internal registers)는 대부분의 3 차원 그래픽 처리 알고리즘의 내부루프를 수용시키기엔 그 수가 너무 적다. 따라서, 한정된 내부 레지스터를 보상하기 위해 칩상에 있는 데이타 캐쉬가 사용된다. 더우기, DSP 칩은 다중처리 환경 (multiprocessing environment)에서 기능을 하기 위한 일련의 지지칩을 필요로 한다. 바람직하지 못하게, 지지침의 부가는 그래픽 가속기를 위한 인쇄배선 회로기판의 넓이, 시스템 전력 소비, 열발생 및 시스템 단가를 증가시킨다.
다른 예에서, 3 차원 그래픽 기능은 소정기준에 따른 3 차원 정점들 (vertices)의 정렬(sorting)을 종종 필요로 한다. DSP 칩을 사용하는 그래픽 가속기는 내부 레지스터들 혹은 데이타 캐쉬내 저장장소들 사이에서 정점 데이타 (vertex data)를 물리적으로 전송하는 것에 의해 상기와 같은 정렬을 수행한다. 바람직스럽지 못하게, 정점데이타의 물리적 전송은 처리시간 소비 및 시스템 수행능력 감소의 원인이 된다.
추가예에서, 종래 시스템내에서 DSP 칩은 전형적으로 기하입력 매개변수 (geometry input parameters)검색 및 변형된 결과의 전달을 위한 입력/출력 타스크를 수행해야만 한다.
DSP 칩은 그래픽 기능 타스크 외에 입력/출력 타스크를 수행한다 바람직하지 못하게, DSP 칩에 의한 매개변수 입력/출력 타스크에 대한 시간소비를 그래픽 기능타스크로부터 뺏음으로 인해 그래픽 처리 수행능력을 감소시킨다.
앞으로 설명되는 바와같이, 본 발명은 그래픽 가속기의 단가를 최소화하면서 그래픽 가속기 수행능력을 개선하기 위한 하드웨어 특징 및 특수화된 마이크로 명령어를 제공하는 컴퓨터 시스템에서 고성능 3 차원 그래픽 가속기를 위한 부동소숫첨 처리기이다.
발명의 요약
컴퓨터 시스템내의 고성능 3 차원 그래픽 가속기를 위한 부동소숫점 처리기가 개시되었다. 부동소숫점 처리기는 입력회로, 출력회로, 레지스터 화일회로, 제어회로, 기능유니트 세트 및 제어저장 인터페이스 회로로 구성된다.
입력회로는 이중버퍼 입력 레지스터 화일을 구현한다. 입력회로는 부동소숫점 버스에 대한 명령을 통해 명령 전처리기로부터 재포맷된 기하 패킷(reformattedgeometry packets)을 수신하며, 재포맷된 기하 패킷을 버퍼링한다. 출력회로는 이중버퍼 출력 레지스터 화일을 구현한다. 출력회로는 드로우 패킷(draw packets)을 버퍼링하며 드로우 버스에 대한 명령을 통해 드로우 처리기 세트로 드로우 패킷을 송신한다. 레지스터 화일 회로는 제 1 레지스터 그룹, 제 2 레지스터 그룹 및 제 3 레지스터 그룹을 포함하는 범용 레지스터 화일을 가진다.
제어 시퀀서는 제어저장장소(control store)로부터 다수의 특수화된 그래픽 마이크로 명령어 판독 및 기능 유니트 세트를 사용하는 특수화된 그래픽 마이크로 명령어 실행에 의해 드로우 패킷을 출력 레지스터 화일로 수집한다. 특수화된 그래픽 마이크로 명령어는 부동소숫점 비교 마이크로 명령어 및 스왑 마이크로 명령어(swap micro instruction)로 구성된다. 스왑 마이크로 명령어는 레지스터 화일 회로가 부동소숫점 비교 마이크로 명령어에 대응하는 일련의 결과 플래그 (result flags)에 따라 제 1, 제 2 및 제 3 레지스터 그룹에 대한 레지스터 맵을 재배열하도록 하며, 따라서 제 1, 제 2 및 제 3 레지스터 그룹에 저장된 정점값(vertex value)세트는 미리 정해진 순서로 정렬된다.
기능 유니트는 부동소숫점 승산기 회로, 부동소숫점 산술논리 유니트 회로, 역수회로 및 정수 산술논리 유니트회로, 역수회로 및 역수 평방근 회로로 구성된다. 범용 레지스터 화일은 미리 정해진 다수의 범용 레지스터로 구성되며, 따라서 미리 정해진 다수의 범용 레지스터는 3 차원 그래픽 처리 알고리즘의 내부루프를 위한 데이타 저장장소를 제공한다.
특수화된 그래픽 마이크로 명령어는 추가로 클립 테스트 마이크로 명령어로구성된다.
클립 테스트 마이크로 명령어는 상태_비트 레지스터의 클립_모드 비트에 따라 점(point)과 하나 혹은 두개의 클립평면과 비교하며, 클립 비트 레지스터로 하나 혹은 두개의 결과비트를 시프트시킨다. 특수화된 그래픽 마이크로 명령어는 추가로 다수의 기하 조건분기 명령어(geometry conditional branch instruction)로 구성된다. 각각의 기하 조건분기 명령어는 클립 비트 레지스터의 내용에 따라 분기 조건을 결정한다.
특수화된 그래픽 마이크로 명령어는 부동소숫점값을 정수값으로 변환하는 마이크로 명령어, 정수값을 부동소숫점값으로 변환하는 마이크로 명령어, 및 데이타값의 절대값을 결정하기 위한 마이크로 명령어로 구성된다. 특수화된 그래픽 마이크로 명령어는 추가로 부동소숫점 역수 마이크로 명령어, 역수 평방근 마이크로 명령어, 포화가산(0,1)마이크로 명령어 및 제어저장 및 범용 레지스터 화일 사이에 데이타 블럭(data block)전송을 수행하기 위한 블럭로드 명령어 및 블럭저장 명령어로 구성된다.
발명의 상세한 설명
컴퓨터 시스템에 있는 고성능 3 차원 그래픽 가속기가 개시되었다. 특정 응용에 대한 설명을 목적으로 한 다음의 설명에서, 본 발명의 완전한 이해를 제공하기 위해 숫자, 장치, 배열 및 회로가 개시되어 있다. 그러나, 본 발명 분야의 당업자에겐 이러한 특정한 상세사항 없이 실행될 수 있음이 명백할 것이다. 다른 경우엔, 잘 알려진 시스템들이 본 발명을 불필요하게 애매하게 하지 않도록 하기 위해도표적으로 혹은 블럭도 형태로 도시되어 있다.
제 1도를 참조하면, 호스트 처리기(20), 기억장치 서브시스템(22), 그래픽 가속기(24)및 디스플레이 장치(26)를 포함하는 컴퓨터 시스템의 블럭도이다. 호스트 처리기(20), 기억장치 서브시스템(22)및 그래픽 가속기(24)는 각각 호스트 버스(28)를 통한 통신을 위해 연결된다.
디스플레이 장치(26)는 광범위한 라스터 디스플레이 모니터(raster display monitor)를 나타낸다. 호스트 처리기(20)는 광범위한 컴퓨터 처리기 및 CPU 를 나타내며, 기억장치 서브시스템(22)은 임의 접근 기억장치 및 대용량 저장장치를 포함하는 광범위한 기억장치 서브시스템을 나타낸다. 호스트 버스(28)는 특수화된 서브시스템 뿐만아니라 호스트처리기, CPU 및 메모리 서브시스템 사이의 통신을 위해 광범위한 호스트 컴퓨터 버스 혹은 통신을 나타낸다.
호스트 처리기(20)는 호스트 버스(28)를 통해 프로그램된 입력/출력(I/O)프로토콜에 따라 그래픽 가속기(24)로/로부터 정보를 전송한다. 또한 그래픽 가속기(24)는 직접메모리검색(DMA)프로토콜에 따라 메모리 서브시스템(22)을 검색한다.
호스트 처리기(20)상에서 실행하는 그래픽 응용 프로그램은 디스플레이장치 (26)상에서의 디스플레이를 위한 이미지를 정의하는 3 차원 기하정보를 포함하는 기하 데이타 배열(geometry data array)을 발생한다. 호스트 처리기(20)는 메모리 서브시스템(22)으로 기하 데이타 배열을 전송한다. 그후, 그래픽 가속기(24)는 호스트 버스(28)를 통하여 DMA 검색 사이클을 사용하여 기하 데이타 배열을 판독한다. 대안으로, 호스트 처리기(20)는 호스트 버스(28)를 통하여 프로그램된 I/O 로써 그래픽 가속기(24)로 기하 데이타 배열을 전송한다.
기하 데이타 배열내에서 3 차원 기하정보는 정점좌표를 포함하는 입력정점패킷의 스트림(stream)과 3 차원 공간내에서의 점, 벡타 및 삼각형을 정의한 다른 정보로 구성된다. 각각의 입력정점패킷은 정규 정점, 색 정점, 정규 패싯(facet), 색 패싯, 텍스춰 맵좌표(texture map coordinates), 피크-id, 헤더 및 다른 정보를 포함하는 3 차원 정점 정보로 된 임의의 조합을 포함할 수 있다. 헤더없는 입력정점패킷은 인접한 삼각형의 "지그재그" 패턴의 형태로 삼각형 스트립(triaugle strip)을 정의할 수 있다. 헤더없는 입력정점패킷은 또한 삼각형의 "스타 스트립(star strip)" 패턴의 형태내에서 삼각형 스트립을 정의할 수 있다. 부가하여, 헤더없는 입력정점패킷은 고립된 삼각형(isolated triangle)을 정의할 수 있다. 헤더를 갖는 입력정점패킷은 각각의 삼각형을 위해 삼각형 스트립 포맷을 변화시킬 수 있으며 "지그재그" 포맷, "스타" 포맷, "스타 포맷" 및 고립된 삼각형 사이에서 변할 수 있다.
제 2도는 그래픽 가속기(24)의 블럭도이다. 그래픽 가속기(24)는 명령 전(前)처리기(30), 부동소숫점 처리기 세트(40-43), 드로우 처리기 세트(50-54), 프레임 버퍼(100), 후(後)처리기(70)및 임의접근메모리/디지탈에서 아날로그로의 변환기(RAMDAC)(72)로 구성된다. RAMDAC(72)는 록-업 테이블(look-up table)기능이 구현된 상용 RAMDAC와 유사하다. 한 실시예에서, 명령 전처리기(30), 부동소숫점 처리기(40-43), 드로우 처리기(50-54)및 후처리기(70)는 각각 개별적인 집적회로 칩이다.
명령 전처리기(30)는 호스트 버스(28)를 통한 통신을 위해 연결된다. 명령 전처리기(30)는 호스트 버스(28)를 통하여 메모리 서브시스템(22)으로부터의 기하데이타 배열에 대한 DMA 판독을 수행한다. 호스트 처리기(20)는 명령 전처리기(30)로 가상 메모리 포인터를 전송한다. 가상 메모리 포인터는 메모리 서브시스템(22)내에서의 기하 데이타 배열을 가리킨다. 명령 전처리기(30)는 호스트 처리기(20)로부터의 중재없이 메모리 서브시스템(22)에 대한 DMA 판독을 수행하기 위해 가상메모리 포인터를 실제 메모리 주소로 변환한다.
명령 전처리기(30)는 기하 데이타 배열로부터 입력정점패킷의 스트림을 수신하며, 입력정점패킷에 포함된 정보를 재정리한다. 명령 전처리기(30)는 각각의 입력정점패킷으로부터의 정보를 표준화된 요소순서를 갖는 리포맷된 정점패킷으로 재정리한다.
명령 전처리기(30)는 다른 숫자포맷으로부터 32비트 IEEE부동소숫점 숫자포맷으로 각각의 입력정점패킷내의 정보를 변환한다. 명령 전처리기(30)는 8 비트 고정 소숫점 숫자, 16비트 고정소숫점 숫자, 32비트 혹은 64비트 IEEE 부동소숫점 숫자를 변환한다.
명령 전처리기(30)는 헤더필드를 재포맷하고, 상수를 삽입하며 순차적 피크-id를 발생한다. 명령 전처리기(30)는 헤더의 연쇄비트(chaining bit)를 검사하며 입력정점 패킷으로부터의 데이타를 점, 선 및 삼각형을 포함하는 완전히 고립된 기하 프리미티브(geometry primitive)를 갖는 재포맷된 정점패킷으로 재조합한다.
명령 전처리기(30)는 명령-부동소숫점 버스(CF-BUS)(82)를 통해 부동소숫점 처리기(40-43)중의 하나로 재포맷된 정점패킷을 전송한다. 명령 전처리기(30)는 CF-BUS(82)의 제어부를 통해 부동소숫점 처리기(40-43)로부터 제어 및 상태신호를 수신한다. 제어 및 상태신호는 재포맷된 정점재킷을 수신하기 위한 부동소숫점 처리기(40-43)내에서 입력버퍼의 이용가능성을 나타낸다. 명령 전처리기(30)는 또한 부동소숫점처리기(40-43)를 우회(bypass)할 수 있으며 명령-드로우 버스(CD-BUS)(80)를 통해 직접 포트패킷(direct port packet)을 드로우 처리기(50-54)로 전송할 수 있다.
부동소숫점 처리기(40-43)는 각각 실제적으로 유사하다. 각각의 부동소숫점 처리기(40-43)는 병렬입력 및 출력패킷 통신 하드웨어와 함께 32비트 마이크로 코드로 구동되는 부동소숫점 코어를 구현한다. 부동소숫점 처리기(40-43)의 각각은 곱하기, ALU, 역수, 역수평방근 및 정수연산들을 포함하는 부동소숫점 기능을 구현한다. 각각의 부동소숫점 처리기(40-43)는 광범위한 유형의 특수화된 그래픽 명령어 및 특성을 구현한다. 각각의 부동소숫점 처리기(40-43)는 그래픽 가속기(24)에 의해 구현된 마이크로 코드 내부루프를 처리하는 가장 일반적인 3 차원 그래픽을 수행하기 위해 필요한 다수의 빠른 내부 레지스터를 구현하기 위해 최적화되어진다.
한 실시예에서, 각각의 부동소숫점 처리기(40-43)는 한개의 집적회로 칩상에 구현된다.
각각의 부동소숫점 처리기(40-43)를 위해 필요한 지지 칩만이제어저장장소(CS)내에 외부 마이크로 코드를 제공하는 4 개 외부 SRAM 칩으로 된 세트이다.
각각의 부동소숫점 처리기(40-43)는 드로우 처리기(50-54)에 의해 주사변환 (scan conversion)을 위한 삼각형을 세트 업하는 기능을 구현한다. 세트 업 기능은 오름차순 y순서로 삼각형의 3 정점을 정렬(sorting)하는 단계를 포함한다. 각각의 부동소숫점 처리기(40-43)는 CD-BUS(80)를 통해 모든 드로우 처리기(50-54)에 드로우 패킷을 송신한다. 이 드로우 패킷은 삼각형, 점 및 선을 포함하며 최종 기하 프리미티브로 구성된다.
드로우 처리기(50-54)는 프레임 버퍼(100)를 위한 VRAM 제어 칩으로서의 기능을 한다. 드로우 처리기(50-54)는 동시에 부동소숫점 처리기(40-43)중의 하나로부터 수신된 드로우 패킷 혹은 명령 전처리기(30)로부터 수신된 직접포트패킷에 따라 프레임 버퍼(100)에 이미지를 표현한다.
각각의 드로우 처리기(50-54)는 에지워킹 기능(edgewalking function)및 주사보간(scan interpolation)기능인 주사변환 기능을 수행한다. 드로우 처리기(50-54)중에서의 에지워킹 및 주사보간 기능의 복사는 분리된 에지워킹 및 주사보간 처리기 사이의 대규모 통신 통료의 필요를 제거함으로써 각각의 드로우 처리기(50-54)의 핀수를 최소화하며 인쇄배선 회로기판 공간의 필요를 감소시킨다.
프레임 버퍼(100)는 5 개의 VRAM 인터리브 뱅크로 된 세트로써 배열된다. 드로우 처리기(50)는 픽셀 데이타를 인터리브 뱅크_0(61)에 기록하며, 드로우 처리기(51)는 픽셀 데이타를 인터리브 뱅크_1(62)에 기록하며, 드로우 처리기(52)는 픽셀 데이터를 인터리브 뱅크_2(63)에 기록하며, 드로우 처리기(53)는 픽셀 데이타를 인터리브 뱅크_3(64)에 기록하며, 드로우 처리기(54)는 픽셀 데이타를 인터리브 뱅크_4(65)에 기록한다.
각각의 드로우 처리기(50-54)는 대응 인터리브 뱅크(61-65)내에서 오직 가시적인 픽셀만을 렌더한다. 동시에 드로우 처리기(50-54)는 프레임 버퍼(100)에서 정확히 조합된 라스터화된 이미지를 생성하도록 드로우 패킷에 의해 정의되는 삼각형 원시요소를 렌더한다. 각각의 드로우 처리기(50-54)는 최종 라스터화된 이미지의 각각의 주사선을 따라 5번째 픽셀마다 라스터화한다. 각각의 드로우 처리기(50-54)는 0, 1, 2, 3 또는 4 픽셀공간에 의해 바이어스된 주사선을 우측으로 개시한다.
각각의 드로우 처리기(50-54)는 선택적으로 깊이큐잉(depth queing)을 수행한다. 렌더된 삼각형, 벡터 혹은 점의 각 픽셀은 부동소숫점 처리기내에서 깊이큐잉을 수행하는 종래 그래픽 시스템의 성능패널티(performance penalty)없이 드로우 처리기(50-54)내에서 깊이큐가 되어질 수 있다. 각각의 드로우 처리기(50-54)는 장방형 윈도우 클리핑, 블렌딩(blending)및 다른 픽셀기능을 선택적으로 수행한다.
후처리기(70)는 비디오 버스(84)를 통해 프레임 버퍼(100)로부터 인터리브된 픽셀 데이타를 수신한다. 후처리기(70)는 장방형 윈도우 클리핑, 블렌딩 및 기타 픽셀후 처리기능 뿐만 아니라 칼라 록-업 테이블 및 커서기능을 수행한다. RAMDAC(72)는 디스플레이 장치(26)를 위해 후처리기(70)로부터 수신된 픽셀 데이타를 비디오신호(73)로 변환한다.
제 3도는 부동소숫점 처리기(40)및 제어저장장소(CS)(149)를 포함하는 부동소숫점 처리기부(45)의 블럭도이다. 부동소숫점 처리기(40)는 입력회로(141), 출력회로(145), 레지스터 화일(142), 기능 유니트 세트(143), 제어회로(144)및 SRAM 인터페이스 회로(146)로 구성된다.
부동소숫점 처리기(40)는 CF-버스(82)의 데이타부(181)를 통해 재포맷된 정점 재킷을 수신한다. 명령 전처리기(30)는 입력버퍼(141)를 인에이블 및 디스에이블시키기 위해 CF-버스(82)의 제어부(182)를 통해 제어신호를 전송한다.
출력회로(145)는 CD-버스(80)의 데이타부(183)를 통해 드로우 패킷을 전송한다.
출력회로(145)는 또한 드로우 처리기(50-54)로의 데이타 전송을 동기화시키고 CD-버스(80)상의 버스활동을 명령 전처리기(30)와 조정하기 위해 CD-버스(80)의 제어부(184)를 통해 제어신호를 전송한다.
입력회로(141)는 이중버퍼 형식으로 된 한쌍의 32개 레지스터 화일로써 배열된 레지스터 세트를 갖는다. 유사하게, 출력회로(145)는 이중버퍼 형식으로 된 한쌍의 32개 레지스터 화일로써 배열된 레지스터 세트를 갖는다.
일 실시예에서, 레지스터 화일(142)은 160 개의 32비트 레지스터로 구성되는 다중포트레지스터 화일이다. 레지스터 화일(142)은 도트, 벡터 및 삼각형 명령처리를 위해 공통 내부루프에 필요한 상수, 매개변수, 및 작업변수를 위해 충분한 고속침상 데이터 저장장소를 제공한다.
SRAM 인터페이스(146)는 제어저장 데이타 버스(148)에 있는 제어저장 주소 버스(147)을 통해 제어저장장소(CS)(149)와 통신한다. 일 실시예에서, 제어저장 주소버스(147)는 17비트폭이고 제어저장 데이타 버스(148)는 32비트 폭이다. 제어저장 장소(149)는 8 비트 SRAM에 의한 4 개의 128K로 구성된다. 부동소숫점 처리기(40)는 추가논리를 필요로 하지 않고 SRAM 인터페이스 회로(146)을 통하여 CS(149)에 있는 마이크로 코드를 검색한다.
제어회로(144)는 CS(149)로부터 마이크로 코드 명령어를 인출(fecthing)및 실행하기 위한 제어시퀀서를 구현한다. 제어시권서는 입력회로(141)내부로 전송 및 출력회로(145)로부터의 전송으로부터 분리된다. 입력회로(141)및 출력회로(145)내의 레지스터는 자동으로 순서화된 FIFO(선입선출)로써 배열되어진다.
부동소숫점 처리기(40)에서 실행하는 마이크로 코드는 특수한 레지스터 화일로서 입력회로(141)및 출력회로(145)의 레지스터를 검색한다. 부동소숫점 처리기(40)를 위한 명령어 세트는 CD-버스(80)를 통해 완전한 데이타 패킷 전송을 큐잉하기 위한 명령 뿐만 아니라 레지스터 화일 요구 및 포기를 위한 명령을 포함한다.
기능 유니트(143)는 병렬 부동소숫점 승산기, 병령 부동소숫점 ALU, 명령 부동소숫점 반복역수회로, 역수평방근 회로 및 병렬정수 ALU 를 구현한다. 부동소숫점 처리기(40)는 32비트 내부 부동소숫점 연산을 구현한다. 부동소숫점 처리기(40)는 내부서브루틴 스택(subroutine stack)을 갖는다.
부동소숫점 처리기(40)는 드로우 처리기(50-54)에 의한 주사변환을 위해 삼각형 세트업 기능을 구현한다. 삼각형 세트 업 기능의 제 1단계는 오름차순 y 순서로 삼각형의 3 정점을 정렬한다. 부동소숫점 처리기(40)는 정점의 y 좌표들에 대한최후의 3 개의 비교결과를 기초로 하여 하드웨어로 된 레지스터 화일(142)을 재정리하는 특수한 명령어를 구현한다.
클립 테스팅 기능은 클립상태비트의 벡터를 계산하는 부동소숫점 처리기(40)내에서 구현된다. 부동소숫점 처리기(40-43)는 클립상태비트를 특수한 클립 레지스터로 시프트하면서 클립상태비트 쌍을 계산하는 특수한 클립 테스트 명령어를 구현한다. 클립상태비트가 계산되어진 후, 특수한 분기명령어는 클립 레지스터내에 포함된 클립상태 비트를 적절한 클립조건으로 해독한다. 부동소숫점 처리기(40)는 삼각형 및 벡터를 클리핑하기 위한 개별적인 분기명령을 구현한다. 특수한 분기명령어는 동일명령어내에 있는 다중클립조건(multiple clip condition)의 테스팅을 인에이블한다.
부동소숫점 처리기(40)는 부동소숫점에서 고정소숫점으로 및 고정소숫점에서 부동소숫점으로의 변환명령어, 정수비트필드 추출 및 삽입명령어, 및 배럴쉬프트 (barrel shift)및 머지(merge)명령어를 구현한다. 부동소숫점 처리기(40)는 정수기능(intcgcr functions)뿐만 아니라 CS(149)로의 전송을 위한 블럭로드/스토어 명령어를 구현한다.
제 4도는 부동소숫점 처리기(40)를 위한 기능유니트 및 데이타통로를 예시한다. 데이타통로는 3 개의 출발지버스(A버스(220), B버스(222), C버스(224))및 한개의 목적지 버스(D버스(226))로 구성된다. 기능유니트는 부동소숫점 승산기(FMUL)(200), 정수산술논리유니트(IALU)(204), 부동소숫점 산술논리 유니트(FALU)(206)및 역수회로(202)로 구성된다. 또한 입력회로(141)와출력회로(145)및 레지스터 화일(142)내에 있는 내부레지스터들의 논리적 배열이 도시되어 있다. 내부 레지스터들은 4 개의 레지스터그룹, I 레지스터, O 레지스터, R 레지스터 및 P 레지스터로 배열되어 있다.
제 5도는 I 레지스터, O 레지스터, R 레지스터 및 P 레지스터의 레지스터 매핑을 예시한다. I 레지스터는 입력회로(141)내에 있는 64개 레지스터에 대응하며, 한쌍의 이중버퍼로 된 32목록(entry)레지스터 화일로써 배열된다. O 레지스터는 출력회로(145)내에 있는 64개 레지스터에 대응하며, 한쌍의 이중버퍼로 된 32목록 레지스터 화일로써 배열된다. R 및 P 레지스터는 레지스터 화일(142)내에 포함되어 있으며, 단일버퍼로 되어 있으며 64개 R 레지스터 및 96개 P 레지스터가 레지스터 화일(142)에 있다.
I 레지스터는 CF-버스(82)를 통해 수신된 재포맷된 정점패킷을 위한 입력 매개변수를 지니고 있다. 어느 한 타임(time)에 I 레지스터의 일 뱅크는 마이크로 코드에 의한 검색을 위해 이동가능하며, 반면에 I 레지스터의 나머지 뱅크는 CF-버스(82)를 통해 전송된 다음 재포맷된 정점패킷을 위한 입력 FIFO로써 사용된다. 이용가능한 I 레지스터들은 레지스터 10 내지 I31 레지스터로써 참조된다.
다음 I 레지스터 뱅크를 검색할 때, 만일 다음 재포맷된 정점패킷이 교대 I 레지스터 뱅크내에서 완전히 수집되지 않으면 제어 시퀀서는 대기한다. 제어 시퀀서는 대응 명령처리가 끝나기 전(前)일지라도 대응 재포맷된 정점패킷이 검색되어진후 릴리스될 수 있다.
재포맷된 정점패킷의 명령동작코드는 10의 최하위 5 비트 내지 9 비트내에포함되어 있다. 부동소숫점 처리기(40)는 I0의 최하위 5 비트 내지 9 비트를 기초로 하여 자동적으로 마이크로 코드 점프 테이블(micro-code jump table)로 발송하는 특수한 명령 해독 명령어를 구현한다.
O 레지스터는 CD-버스(80)를 통해 전송하기 위한 드로우 패킷을 지닌다. 어느 한 타임에 O 레지스터로 된 일 뱅크는 마이크로 코드에 의한 검색을 위해 이용가능하며, 반면에 O 레지스터로 된 나머지 뱅크는 다음 드로우 패킷을 위한 출력버퍼로 사용된다. 이용가능한 O 레지스터들은 레지스터 O0 내지 O31 로써 참조된다.
O 레지스터로 된 뱅크는 32개의 매개변수까지 가지는 드로우 패킷을 지닌다. 출력회로(145)는 FD-버스(80)를 통해 O 레지스터로부터 드로우 패킷을 전송한다. 다음 O 레지스터 뱅크를 검색할때, 제어 시린서는 이전 드로우 패킷이 교대 O 레지스터 뱅크로부터 유출(drain)될 때까지 대기한다. 제어 시퀀서는 출력회로(145)가 O 레지스터 뱅크를 유출하도록 여분의 타임을 허용하기 위해 재포맷된 기하 패킷 처리를 하는 중간에 O 레지스터를 요구(request)할 수 있다.
R 레지스터는 범용 레지스터이다. P 레지스터는 시각행렬(viewing matrices), 화면좌표변환 등과 같은 부동소숫점 곱셈상수를 위해 사용된다. P 레지스터의 제 2 및 제 3그룹은 부가적인 곱셈상수 뿐만 아니라 범용 임시 레지스터로도 사용된다.
클립_비트 레지스터는 32비트 상태 레지스터이다. 클립_비트 레지스터는 삼각형, 벡터 혹은 도트의 클립상태에 대응하는 조건코드를 가린다. 클립_비트 레지스터의 내용은 클립_테스트 명령어에 의해 한 타임에 1 혹은 2 비트가 갱신된다.클립_비트 레지스터의 내용은 특수화된 분기명령어 종류에 의해 테스트된다.
상태_비트 레지스터는 32비트 조건코드 및 상태 레지스터이다. 상태_비트 레지스터는 특수화된 플래그 및 상태비트종류를 가진다 상태_비트 레지스터의 내용은 다수의 명령어에 의해 영향을 받으며, 한쌍의 상태갱신 명령어에 의해 명백하게 세트된다.
PC 레지스터는 16비트 프로그램 카운터이다. PC 스택은 서브루틴 호출/복귀를 위한 8 개의 16비트 프로그램 카운터로 된 하드웨어 스택이다.
제 6도는 일 실시예에 관한 부동소숫점 처리기(40)를 위한 마이크로 코드 명령어 포맷을 예시한다. 마이크로 코드 명령어는 32비트 폭이며 5 개 일반적인 필드 유형으로 나뉜다: 동작 필드, 제어 필드, 곱셈/덧셈을 위한 레지스터 목적지(D)필드덧셈을 위한 레지스터출발지(C)필드, 곱셈을 위한 레지스터 출발지(B)필드, 곱셈을 위한 레지스터 출발지(A)필드.
A 버스(220)는 FMUL(200)로 입력통로를 IALU(204)로 입력을 그리고 FALU(306)로 멀티플렉스된 입력통로를 제공한다. 마이크로 명령어의 A 버스필드는 A 버스(220)를 통하여 전송된 데이타에 관한 출발지를 지정한다. A-버스필드는 R 레지스터 R0 내지 R63, 및 P 레지스터 P0 내지 P63 를 나타낸다.
B 버스(222)는 FMUL(200)에 대한 또다른 입력통로이고, 역수회로(202)에 대한 유일한 입력통로이며, IALU(204)에 대한 또다른 입력통로이다. 마이크로 명령어의 B-버스필드는 B 버스(222)를 통해 전송된 데이타에 관한 출발지를 지정한다. B 버스필드는 상태 레지스터내에 있는 세트된 모드비트에 의해 지정된 대로 R 레지스터 R0 내지 R63 혹은 R 레지스터 R0 내지 R31, 및 I 레지스터 I0 내지 I31 를 나타낸다.
C 버스(224)는 FALU(206)에 대한 또다른 입력통로이다. 마이크로 명령어의 C-버스 필드는 C 버스(224)를 통해 전송된 데이타에 관한 출발지를 지정한다. C-버스필드는 상태비트 레지스터에 의해 지정된 임의의 모드에 대해 독립적인, R 레지스터 R0 내지 R63을 나타낸다.
D 버스(226)는 부동소숫점 처리기(40)의 기능유니트로부터의 출력 데이터 통로이다. D 버스(226)는 마이크로 명령어의 DS 필드에 따라 FMUL(200), FALU(206)혹은 소정명령어; IALU(204)혹은 역수회로(202)로부터의 출력을 운송한다. 마이크로 명령어의 D-버스필드는 D 버스(226)를 통하여 전송된 데이타에 관한 목적지를 지정한다.
D-버스필드는 상태_비트 레지스터내에 있는 세트된 모드 비트에 의해 지정된 대로 R 레지스터 R0 내지 R63, O 레지스터 O0 내지 O31 혹은 P 레지스터 P0 내지 P31 혹은 P 레지스터 P32 내지 P63 을 나타낸다.
마이크로 명령어의 AS 필드는 FALU(206)로의 한개 입력에 대한 출발지 데이터를 결정한다 AS 필드는 A 버스(220)혹은 B 버스(222)를 통해 전송된 데이타를 선택한다. AS 필드는 멀티플렉서(232)를 위한 선택제어를 제공한다.
마이크로 명령어의 DS 필드는 D 버스(226)를 통하여 전송된 데이타에 대한 출발지를 결정한다. DS 필드는 FMUL(200)의 출력, FALU(206)의 출력, IALU(204)의 출력 혹은 역수회로(202)의 출력을 선택한다. DS 필드는 멀티플렉서(230)를 위한선택제어를 제공한다.
마이크로 명령어의 부동작필드는 지시된 명령어 그룹내에서 특정명령어를 지정한다. 부동작필드의 크기 및 위치는 특정명령어 그룹내에서 변한다.
제7a도 및 제7b도는 부동소숫점 처리기(40)에 구현된 클립-테스트 명령어의 포맷을 예시한다. 클립-테스트 마이크로 명령어는 점과 하나 혹은 두개의 클립평면을 비교하며, 상기 비교로부터의 하나 혹은 두개 결과비트를 클립-비트 레지스터로 시프트한다. 상태-비트 레지스터에 있는 클립-모드 비트는 또다시 점과 하나 혹은 두개 클립평면과의 비교를 할 것인지를 결정한다.
만일 상태-비트 레지스터에 있는 클립-모드 비트가 O 이면, 클립-비트 레지스터의 내용은 좌측으로 2 비트 시프트되며, 제7b도에 도시된 2 개 상태비트는 비트위치 0 및 1 로 복사된다. 만일 클립-모드가 1 이면, 클립-비트 레지스터의 내용은 좌측으로 1 비트씩 쉬프트되며, 제7b도에 도시된 상태비트는 비트위치 0 으로 복사된다. 클립-테스트를 위한 FALU(206)조건코드비트는 fabs([a 버스])혹은 fabs([m 아웃])과 fabs([c 버스])의 비교를 나타내며, 여기서 fabs는 부동소숫점 절대값이고 m 아웃은 멀티플렉서(232)의 출력이다.
제8a도 및 제8b도는 부동소숫점 처리기(40)에 구현된 단항(unary)FALU 마이크로명령어 포맷을 예시한다 fabs를 위한 FALU 조건코드비트는 [a-버스] 혹은 [m-아웃] 과 제로와의 비교를 나타낸다.
제 9도는 부동소숫점 처리기(40)내에 구현된 부동소숫점 역수 마이크로 명령어 포맷을 예시한다. 역수 마이크로 명령어는 B 버스상(222)의 내용에 대해 부동소숫점 역수동작을 수행한다. 이 역수동작의 결과는 9 사이클 후에 이용가능하며 연속하는 다음 역수결과에의해 교체될 때까지 유효하다. 연속하는 다음 역수동작은 이전 역수명령어의 결과를 교체시키지 않고 8 사이클마다 개시될 수 있다.
제 10a도는 부동소숫점 처리기(40)내에 구현된 블럭로드 마이크로 명령어의 포맷을 예시한다. 블럭로드 마이크로 명령어는 CS(49)로부터 P 레지스터, R 레지스터 및 O 레지스터로 블럭로드동작을 지정한다. 블럭로드 마이크로 명령어는 하나의 동작에서 1 내지 192개 레지스터로부터 블럭로드를 할 수 있다.
블럭로드 마이크로 명령어는 CS49의 위치 [R(ra)+ 오프세트] 로부터 레지스터 R[rs]-R[re] 로 블럭로드를 지정한다. 제 10b도는 블럭로드 마이크로 명령어의 RS 및 RE값을 부동소숫점 처리기(40)의 P 레지스터, R 레지스터 및 O 레지스터로의 매핑을 예시한다.
제 10c도는 부동소숫점 처리기(40)내에 구현된 블럭스토어 마이크로 명령어의 포맷을 예시한다. 블럭스토어 마이크로 명령어는 P 레지스터, R 레지스터 및 O 레지스터로 부터 CS49로 블럭스토어동작을 지정한다. 블럭저장 마이크로 명령어는 한동작에 1 내지 192개 레지스터로부터 블럭스토어를 할 수 있다.
블럭스토어 마이크로 명령어는 레지스터 R[rs]-R[re] 로부터 CS49 위치(R[ra]+ 오프세트)로의 블럭스토어를 지시한다. 제 10d도는 블럭스토어 마이크로 명령어의 RS 및 RE값을 부동소숫점 처리기(40)의 P 레지스터, R 레지스터 및 O 레지스터로의 매핑을 예시 한다.
제 11a도 및 제 11b도는 부동소숫점 처리기(40)에 구현된 특수화된 기하분기마이크로 명령어의 포맷을 예시한다. 특수화된 기하분기 마이크로 명령어는 조건들의 개별적인 테스트 및 공통으로 발생하는 조건들에 관한 조합을 제공한다. 기하-모드레지스터는 분기조건을 결정하기 위해 클립-비트 레지스터에 있는 한개, 두개 혹은 세개 정점이 사용되어야 하는지 아닌지를 결정한다.
부동소숫점 처리기(40)에 구현된 조건분기 마이크로 명령어가, 지정된 여러 조건들중의 하나를 테스트한다. 만일 지정된 분기조건이 참이면, 조건분기 마이크로 명령어내에 지정된 절대 16비트 주소로 개시된다. 조건분기 마이크로 명령어를 따르는 다음 순차적 마이크로 명령어는 무조건적으로 실행된다. 마이크로 명령어 실행의 흐름은 다음 마이크로 명령어에서 변하며, 이 다음 마이크로 명령어는 조건분기 마이크로 명령어의 절대목표(absolute target)에 위치된 마이크로 명령어이다.
마이크로 명령어에 있는 분기조건비트 및 16비트 목적지 주소는 산술 마이크로 명령어내에서 A, B 및 C 버스를 지정하도록 사용되는 비트를 갖게 된다. 그럼에도 불구하고, D 버스 명세 및 DS 출발지 선택을 하는 2 비트는 조건분기 마이크로 명령어내에 남아있다. 따라서 조건분기 마이크로 명령어의 실행을 위한 동일 마이크로 명령어 사이클에서, 4 개의 D 버스 출발지(FALU(206), FMUL(200), 역수회로(202)및 IALU(204))중 임의의 출발지로부터의 저장이 병렬로 발생할 수 있으며, 이렇게 하여 마이크로 명령어 흐름에서 가능한 변화동안 파이프라인은 비워진다.
부동소숫점 처리기(40)에 구현된 기하분기 마이크로 명령어는 프리미티브 트리비얼리젝트(primitive trivial reject)(ptr)및 프리미티브 아웃코드(primitive out code)(poc)를 위해 중간 조건값을 사용한다. 상태-비트 레지스터의 기하-모드 필드는 ptr 및 poc[5:0]의 계산을 결정한다.
3D 도트는 만일 임의의 클립평면의 외부이면 NPC 공간내에서 이러한 조건은 클립-비트 레지스터의 비트로부터 형성된 부울린 방정식 표현으로 개시되었다.
기하-모드 == 도트
3D 벡터는 만일 두 정점 모두가 적어도 하나의(동일한 하나)클립평면의 외부이면 NPC 공간내에서 트리비얼하게 리젝트된다. 이러한 조건은 클립-비트 레지스터로부터의 비트로부터 형성된 무울린 방정식 표현으로 나타내었다.
기하-모드==벡터:
3D 삼각형은 3 개 정점 모두가 적어도 하나(동일한 하나)의 클립평면의 외부이면 NPC 공간내에서 트리비얼하게 리젝트된다. 이러한 조건은 클립-비트 레지스터로부터의 비트로부터 형성된 방정식 표현으로 개시되었다.
기하-모드==삼각형.
poc 는 클립-비트 레지스터로부터의 비트로 부울린 방정식에 의해 형성된다.
기하-모드==도트:
기하-모드==벡터:
기하-모드= 삼각형:
프리미티브가 외부클립 경계의 외부가 아님(pno)인지 아닌지를 결정하는 부울린 방정식은 6 개 poc 비트의 NOR 이다:
하나 이상의 외부클립 경계, 일명 멀티-평면 클립(mpc)의 외부인지를 결정하는 등식은 6 개 poc 비트의 카운트이다:
상기에서와 같이 여러 상태비트로 정의되는 중간값이 주어질 경우에, 기하분기 명령어에 대한 하분기 조건은 아래와 같이 정의된다.
프리미티브의 임의부분이 포지티브 X 클립평면의 외부이면 분기하라.
포지티브 X 이면 기하분기
프리미티브의 임의부분이 네거티브 X 클립평면의 외부이면 분기하라.
마이너스 X 이면 기하분기
프리미티브의 임의부분이 포지티브 Y 클립평면의 외부이면 분기하라.
포지티브 Y 이면 기하분기
프리미티브의 임의부분이 네거티브 Y 클립평면의 외부이면 분기하라.
마이너스 Y 이면 기하분기
프리미티브의 임의부분이 포지티브 Z 클립평면의 외부이면 분기하라.
포지티브 Z 이면 기하분기
프리미티브의 임의부분이 네거티브 Z 클립평면의 외부이면 분기하라.
마이너스 Z 이면 기하분기
프리미티브가 트리비얼하게 리젝트될 수 있으면 분기하라. 임의의 클립평면의 완전한 외부이면 프리미티브는 트리비얼하게 리젝트되어질 수 있다.
클립 트리비얼 리젝트이면 기하분기
프리미티브가 트리비얼하게 억셉트될 수 없다면 분기하라. 임의부분이 임의클립평면의 외부에 있다면, 혹은 모델-클리핑이 인에이블되었다면 프리미티브는 트리비얼하게 억셉트될 수 없다.
트리비얼 억셉트가 아니면 기하분기
gbnta = !pno | 모델_클리핑_인에이블드
프리미티브가 하나 이상의 클립평면에 대해 반드시 클립되어야 한다면 혹은 모델 클리핑이 인에이블되었다면 분기하라.
싱글에지클립이 아니면 기하분기
gbnsec = mpc | 모델_클리핑_인에이블드
처리되고 있는 프리미티브의 페이스(face)가 리젝트되어져야 하거나 혹은 프리미티브가 트리비얼하게 리젝트되어질 수 있다면 분기하라. 이 분기는 상태_비트 레지스터내에 있는 프론트_페이스_리젝트 및 백_페이스_리젝트 비트 모두에 대해 프리미티브의 현재 페이스를 검사한다. 만일 현재의 페이스의 리젝션 비트가 세트도어 있다면, 분기가 얻어진다. 프리비트의 소정 페이스(방향)를 알 수가 없다면, 명령어가 그러한 특정 페이스(프론트 혹은 백 리젝트)에 대한 리젝션 비트를 세트하기 위해 부동소숫점 처리기(40)로 보내진다. 그 후, 프리미티브가 처리되었을때, 마이크로 코드는 프리미티브를 리젝트하고 다른 프리미티브를 취할 것인지 혹은 현재의 프리미티브를 계속 처리할 것인지를 결정하기 위해 리젝션 비트를 검사한다.
잘못된(worng)페이스 리젝트이면 기하분기
gbwfr = (리젝트_백_페이스 && 페이스_위_갓)|
(리젝트_프론트_페이스 && 페이스_위_갓)|
모델 클리핑이 인에이블되었다면 분기하라.
모델 글리핑이 인에이블이면 기하분기
gbmce = 모델_클리핑_인에이블드
올바른 페이스 데이터(correct face material)가 인스톨(install)되지 않았거나 혹은 프리미티브 페이스가 리젝트되어져야 하거나 혹은 프리미티브가 트리비얼하게 리젝트되어져야 한다면 분기하라. 명령어는 백 프롭(back props)을 사용하기 위해 부동소숫점 처리기(40)로 보내진다. 부동소숫점 처리기(40)마이크로 코드는 상태_비트 레지스터에 있는 사용_백_프롭 비트를 셋트(set)시킨다. 소정의 프리미티브가 뒤따르는 프론트 및 백페이스에대한 재료 특성들이 부동소숫점 처리기(40)로 전송된다.
그 후에, 프리미티브 페이스중의 하나가 처리된 맨마지막 페이스와 매치(match)되지 않는다면, 마이크로 코드는 상기 분기가 취해졌을때 프리미티브를 처리하도록 재료 특성들을 변화시킨다. 이 분기는 또한 잘못된 페이스 리젝트 (wrong face reject)혹은 트리비얼 리젝트를 또다른 체크로써 사용된다.
올바른 페이스가 갖춰지지 않았으면 기하분기
gbucmi = (사용_백_프롭 &&
(매트_페이스_인스톨드 ! = 페이스_위_갓))|
(리젝트_백_페이스 && 페이스_위_갓)|
(리젝트_프론트_페이스 && ! 페이스_위_갓)| ptr
백 페이스 재료가 갖추어지면 분기하라. 이 분기는 이전 프리미티브에 혹은 이 프리미티브의 초기화중에 부동소숫점 처리기(40)마이크로 코드가 백 페이스 재료를 갖춘 후에 사용되며, 사용_백_프롭 비트는 상태_비트 레지스터내에 세트된다.
이 분기는 변형되었을때 정규(normals)가 취소(negate)되어야 하는지를 결정하는데 사용된다.
백 페이스가 갖춰졌다면 기하분기
gbbfi = 사용_백_프롭 && 매트_페이스_인스톨드
백 특성(back properties)및 백 페이스(back face)를 사용한다면 분기하라. 이 분기는 백 페이스 재료가 라이팅 계산(lighting calculations)을 위해 사용되어져야 할 때 취해진다. 부동소숫점 처리기(40)마이크로 코드는 프리미티브에 적용되는 라이트(lights)를 계산하는데 필요로 되는 백 페이스 재료를 갖춘다.
백 페이스 사용이면 기하분기
gbubf = 페이스_위_갓 && 사용_백_프롭
백 페이스이면 분기하라. 정규의 변형을 결정하기 위해 사용된다. 유입(incoming)프리미티브가 프론트 페이싱 정규를 가진다면, 정규는 변형된다. 유입 프리미티브가 백 페이싱 정규를 가진다면, 정규는 라이팅 모델(lighting model)을 프리미티브에 적용하기 전에 변형되고 인버트되어져야 한다.
백 페이스이면 기하분기
gbbf = 페이스_위_갓
상태_비트 레지스터에 있는 클립_펜딩 비트가 세트되었다면 분기하라.
클립_펜딩 세트이면 기하분기
gbcps = 클립_펜딩
제 12a도는 특수한 상태비트 유형을 갖는 상태비트 레지스터를 예시한다. 2 비트의 기하_모드 필드는 기하분기조건을 계산하기 위해 클립_비트 레지스터의 사용을 결정한다. 2비트의 기하_모드 필드는 또한 스왑_rr 비트의 로딩에 영향을 미친다 기하_모드 2 비트는 도트, 벡터 혹은 삼각형중의 하나를 지정한다.
클립_모드 비트는 클립_테스트 명령어가 하나 혹은 두개 평면에 대한 클립을 해야하는 지를 결정한다.
모델 클리핑은 클립 파이프내에 포함되어질 수도 있다. 모델 클리핑이 인에이블되지 않았을때 빠른 실행을 위해 공통코드가 사용되어지도록 하기 위해, 특수한 상태비트, 모델_클리핑_인에이블드가 상태 비트 레지스터내에 포함되어질 수도 있다, 모델_클리핑_인에이블드의 상태가 특수한 분기 명령어에 의해 테스트된다.
상태 비트 레지스터는 "페이스 리젝턴스" 의 3 개의 가능한 모드 리젝트 백, 리젝트 프론트 및 리젝트 넌(none)을 지정하기 위하여 2 개의 "페이스 리젝션 비트"(리젝트백 페이스 및 리젝트 프론트 페이스)를 제공한다. 이러한 비트는 상태 비트 마이크로 명령어의 수정에 의해 세트된다. 비트를 제로로 무조건(default)셋팅하는 것은 프론트 및 백 페이스가 받아들여지도록 허락한다. 오직 1 로 혹은 다르게 셋팅하는 것은 백 혹은 프론트 페이스 리젝션을 허락한다.
상태 비트 레지스터의 페이스_위_갓 비트는 동적으로(dynamically)현재 페이스(current face)를 나타낸다. 0 으로의 셋팅은 프론트 페이스를 나타내고, 1 로의 셋팅은 백페이스를 나타낸다. 페이스_위_갓 비트는 상태 비트 마이크로 명령의 수정에 의해 세트된다.
상기 개시된 상태비트는 트리비얼 클립 리젝션 및 잘못된 페이스 리젝션 제어흐름 분기가 하나의 특수한 분기 명령어로 발생하는 것을 허용한다. 특수한 분기 명령어는 30 클립비트, 2 개 페이스 리젝션 비트 및 1 개 페이스_위_갓 비트로부터 조건을 결정한다.
어떤 기하포맷은 표면의 두측이 상이한 표면특성 및 라이팅 정도(degrees of lighting)를 가지며, 양측이 동일한 표면특성 및 라이팅 정도를 공유하는 것을 허용한다. 전형적으로, 삼각형 스트립은 동일방향을 향하는 일련의 삼각형을 가지며, 다른 축을 도시하기 위해 회전시킨다. 상태 비트 레지스터의 2 비트는 특성 및 라이팅 가정(lighting assumptions)이 캐쉬되어지도록 한다. 사용_백_프롭 비트가 만일 0 이면 프론트 페이스를 위한 캐쉬된 값의 사용을 나타내며, 사용_백_프롭이 1 일때는 매트_페이스_인스톨드는 현재 인스톨된(프론트에 대해선 0, 백에 대해선 1)재료의 측(side)을 나타낸다.
상태 비트 레지스터의 출력_len 및 출력_dst 필드는 출력회로(145)에 의해 O 레지스터로부터 드로우 패킷의 전송을 위한 목적지 및 길이를 지정한다. 출력_len필드는 드로우 패킷의 길이를 지정한다. 출력_dst 필드는 드로우 패킷의 목적지로써 드로우 처리기(50, 54)혹은 명령 전처리기(30)를 지정한다.
상태 비트 레지스터의 스왑 필드는 R 레지스터로 버스 인덱스의 재매핑 혹은 스와핑을 가능하게 한다. 스왑은 R 레지스터 R8 내지 R3l 에 적용된다. 스왑은 각각 8 개로 된 레지스터의 3 개 그룹상에서 동작한다. R 레지스터 R8 내지 R15 는 그룹 1, R 레지스터 R16 내지 R23 은 그룹 2 그리고 R 레지스터 R25 내지 R31 은그룹 3이다.
스왑은 기하 정렬을 위해 특수화된다. 삼각형의 경우에서, 3 개의 정점이 3 개의 레지스터 그룹 1-3에 저장된다. 스왑동작은 y1y2y3를 성취하기 위해 정점의 y 성분을 정렬한다.
스왑동작을 시작하기 위해, 3 개 부동소숫점 비교 마이크로 명령어가 연속적으로 실행되며, 스왑_rr 으로 3 개의 이전의 보다 큼(greater-than)결과를 로드하기 위해 수정제어 및 모드 비트 마이크로 명령어가 뒤따라서 실행된다(0거짓, 1참). 기하_모드가 벡터이면, 스왑_rr 필드가 FALU(206) 비교결과로써 로드될 때(y1>y3), 및(y2>y3)비교가 강제로 0 으로 되어진다. 스왑_rr 필드는 또한 수정제어 및 모드 비트 마이크로 명령어내에 있는 즉시데이타로부터 로드되어질 수 있다.
제 12b도는 모든 가능한 y 좌표 순서에 대해 상태 비트 레지스터의 스왑_rr 필드에 저장된 정점비교 정렬결과를 예시한다. 제 12c도는 스왑_rr 필드의 내용에 대응하는 그룹 1-3 R 레지스터의 재매핑을 예시한다. 이 재매핑은 또다른 수정제어 및 모드비트 마이크로 명령어가 스왑_rr 필드를 0 으로 만들때까지, 혹은 또다른 수정제어 및 모드비트 마이크로 명령어가 상태비트를 로드하기 위해 실행될 때까지 유효하게 남아있는다. 스와핑이 유효한 동안, R 레지스터 R8 내지 R3l 에 대한 모든 참조는 레지스터 재정리(reordering)에 종속된다.
클립 비트 레지스터는 삼각형, 벡터 및 도트에 대해 상이하게 구성된다. 제 13a도는 삼각형에 대한 클립 비트 레지스터의 구성을 예시한다. 클립 비트 레지스터에서의 비트쌍은 반대 클리핑 평면쌍에 대해 비교된 특정 평면에 관한인/아운(in/out)비트에 대응한다. 예를 들면, 2 비트인 "XPW1" 및 "XMW1"에서, 첫 번째 비트("플러스")는 정점 1의 X 좌표가 내부 X 클립평면의 우측일 경우에만 1 이고, 두 번째("마이너스")비트는 정점 1의 X좌표가 내부 X 클립평면의 좌측일 경우에만 1 이다. 다음 2 비트인 "XPGW1" 및 "XMGW1" 는 외부 X "가드(guard)" 클립평면에 대한 테스트를 제외하곤 유사하다. 나머지 비트들도 유사하다. 가드 테스팅은 Z 좌표에 적용되지 않으므로, Z 클립 테스트 비트는 가드 테스트를 갖지 않는다.
제 13b도는 벡터에 대한 클립 비트 레지스터의 구성을 예시한다. 제 13c도는 도트에 대한 클립 비트 레지스터의 구성을 예시한다.
클립 비트 레지스터내에 있는 비트는 클립_테스트 마이크로 명령어의 실행에 의해 세트된다. 각각의 클립_테스트 마이크로 명령어는 클립_비트 레지스터로 쉬프트되어져야 할 다른 비트 혹은 비트쌍을 발생한다.
제 13d도는 클립 테스트 명령어가 실행되었을 때 발생하는 쉬프트 동작의 움직임을 예시한다. 최우측에 들어오는 새로운 비트는 클립 테스팅의 결과이며, 화살표는 비트의 움직임을 도시한다.
제 14a도 및 제 14b도는 수정상태 비트 마이크로 명령어를 도시하며, 이 명령어는 부동소숫점 처리기(40)의 상대_비트 레지스터내에 선택된 비트를 갱신한다. 분리된 인에이블 비트는 수정상태 비트 마이크로 명령어에 의해 주소지정된 각각의 상태_비트를 위해 제공된다. 비트 1 및 0 은 D 버스에 대한 4 개의 출발지중의 하나을 다음과 같이 선택한다: DS 필드로 출발지 선택, PC 스택을 팝(pop)함으로써출발지를 선택, 클립_비트 레지스터 출발지로써 선택 혹은 상태_비트 레지스터 출발지로써 선택.
상태비트 레지스터의 페이스_위_갓 비트는 FALU(206)로부터의 fcc 조건으로부터 로드된다. AO는 프론트 페이스를 나타내며 1 은 백 페이스를 나타낸다. fcc 조건이 1([A버스] 혹은 [m아웃] <[c버스])이면, 페이스_위_갓은 1 로 세트된다. 그 밖의 다른 fcc 조건은 페이스_위_갓을 0 으로 세트한다.
제 15a도 및 제 15b도는 로드 기타레지스터 마이크로 명령어를 예시하며, 이 명령어는 동적결과로부터의 비 레지스터 화일 레지스터를 로드한다. 목표가 되는 레지스터엔 클립_비트 레지스터, 상태_비트 레지스터, 및 pc(프로그램 카운터)를 포함한다. 부가하여, 출력_len 필드, 디스팻치_마스크, 기하_모드 및 클립_모드 레지스터가 기타 레지스터 마이크로 명령어로 로드되어질 수 있다. 기하_모드는 다음과 같은 클리핑 모드중의 하나를 선택한다. 1=도트, 2=선 혹은 3=삼각형.
제 16a도 및 제 16b도는 수정제어 및 모드 비트 마이크로 명령어를 예시하며, 이 명령어는 상태_비트 레지스터내에 있는 선택된 비트를 갱신하며, 개시되어져야 할 소정제어활동을 일으킨다. 분리된 인에이블 비트는 수정제어 및 모드 비트 마이크로 명령어에 의해 주소지정된 상태_비트를 위해 제공된다.
"디스팻치 오프 뉴 I(dispatch off new I)(만일 클립_펜딩이 아닐 경우)" 비트는 수정제어 및 모드비트 마이크로 명령어내에서 세트되며, 클립_펜딩 비트가 참(true)이 아니면, 마이크로 명령어의 흐름의 실행은 연속적인 직선흐름의 실행으로 되지 않는다. 대신에, 이 벤트의 다음 시퀀스가 발생한다. 만일 프리_0 비트가세트되면, 드로우 패킷이 0 레지스터 화일에서 완료음을 나타내는 출력회로(145)로 신호가 보내진다. 그후, 출력회로(145)는 드로우 패킷을 드로우 처리기(50-54)로 송신한다. 만일 입력회로(141)의 I 뱅크가 할당되지 않았다면, 니드-I는 세트되어져야 한다. 제어시퀀서는 새로운 입력버퍼가 이용가능할 때까지 동작을 멈춘다. 새로운 I 뱅크가 이용가능할때, I 레지스터 I0 의 하위의 다섯, 일곱, 혹은 아홉비트들이 새로운 입력의 이름 메시지로써 취해지며, CS49내에서의 절대주소로 형성되어진다. 절대주소에 있는 명령어가 인출되고, 해독되며 디스팻치된다. 그후, 정상적인 명령어 프로세싱의 시작이 적절한 메시지 서브루틴의 맨처음 명령어로 재개된다.
만일 현재의 재포맷된 정점패킷이 드로우 패킷을 발생하지 않는다면, 상기 설명된 " 프리_0" 비트보단 "영(null)출력" 비트가 세트된다. 현재의 재포맷된 정점패킷은 기하의 전부가 클립되고 혹은 백 페이싱 등으로 인해 드로우 패킷을 발생하지 않을 수 있다.
상기한 명세서에서 본 발명이 특정예에 의한 실시예를 참조로 하여 설명되었으며, 첨부한 청구항에서 개시된 바와같이 본 발명보다 넓은 정신 및 범위로 벗어남이 없이 다양한 수정 및 변화가 있을 수 있음이 상기 명세서에서 명백하게 될 것이다.
따라서 본 명세서 및 도면은 제한적이기보단 예시적으로 간주된다.
제 1도는 호스트 처리기(host processor), 기억장치 서브시스템(memory subsystem), 그래픽 가속기(graphics accelerator)및 디스플레이장치를 포함하는 컴퓨터 시스템의 블럭도,
제 2도는 명령 전(前)처리기(command preprocessor), 부동소숫점 처리기 세트, 드로우 처리기(draw processor)세트, 프레임 버퍼, 후 처리기(post-processor)및 임의 접근 기억장치/디지탈에서 아날로그로의 변환기(random access memory/ digital-to-analog converter)(RAMDAC)로 구성되는 그래픽 가속기의 블럭도,
제 3도는 제어저장장소(control store)(CS), 입력회로, 출력회로, 레지스터 파일(register file), 기능장치(functional units)세트, 제어회로 및 SRAM 인터페이스 회로를 포함하는 부동소숫점 처리기부의 블럭도,
제 4도는 데이타 통로가 3 개의 출발지 버스(A 버스, B 버스 및 C 버스)및 한 개의 목적지 버스(D 버스)로 구성되는 부동소숫점 처리기를 위한 데이타통로 및 기능유니트,
제 5도는 입력회로의 I 레지스터, 출력회로의 O 레지스터, 레지스터 화일의 R 레지스터 및 P 레지스터의 레지스터 매핑도,
제 6도는 일 실시예에 대한 부동소숫점 처리기를 위한 마이크로코드 명령어 포맷(microcode instruction formats),
제7a도 및 제7b도는 점과 하나 혹은 두개 클립평면과의 비교 및 상기 비교로부터의 하나 혹은 두개의 결과 비트를 클립-비트 레지스터로 시프트하는 클립-테스트 마이크로 명령어 포맷도,
제8a도 및 제8b도는 부동소숫첨 처리기에 구현된 단항(unary)FALU 마이크로 명령어 포맷도,
제 9도는 B 버스의 내용에 대해 부동소숫점 역수 연산을 수행하는 부동소숫점 역수 마이크로 명령어(floation-point reciprocal micro instruction)포맷도,
제 10a도 및 제 10b도는 블럭로드 마이크로 명령어의 포맷 및 블럭로드 마이크로 명령어의 RS 및 RE 값을 P 레지스터, R 레지스터 및 O 레지스터로의 매핑도,
제 10c도 및 제 10d도는 블럭스토어 마이크로 명령어의 포맷 및 블럭스토어 마이크로 명령어의 RS 및 RE 값을 P 레지스터, R 레지스터 및 O 레지스터로의 매핑도,
제 11a도 및 제 11b도는 조건에 대한 개별적 테스트 및 공통으로 발생하는 조건에 대한 조합을 제공하는 부동소숫점 처리기내에 구현된 특수화된 기하분기 마이크로 명령어 포맷도,
제 12a도는 특수한 상태비트의 종류를 포함하는 상태비트 레지스터도,
제 12b도는 모든 가능한 Y 좌표 순서에 대해 상태비트 레지스터의 스왑_rr (swap_rr) 필드에 저장된 정점 비교정렬 결과(vertex compare sort results)도,
제 12c도는 스왑_rr 필드의 내용에 대응하는 그룹 1 내지 3 R 레지스터의 재매핑(remapping)도,
제 13a도 내지 제 13d도는 클립_테스트 명령어가 실행되었을때 발생하는 쉬프트 연산(shift operation)동작 및 클립비트 레지스터의 구성도,
제 14a도 및 제 14b도는 상태_비트 레지스터내에 있는 선택된 비트를 갱신하는 상태비트의 수정 마이크로 명령어(modify state bits micro instruction)도,
제 15a도 및 제 15b도는 동적결과(dynamic results)로부터 비(非)레지스터 화일 레지스터를 로드하는 기타 레지스터의 로드 마이크로 명령어도,
제 16a도 및 제 16b도 및 상태_비트 레지스터내에서 선택된 비트를 갱신하고, 소정 제어활동의 개시를 일으키는 제어 및 모드비트의 수정 마이크로 명령어(modify control and mode bits micro instruction).

Claims (16)

  1. 다수의 버퍼 입력 레지스터 화일을 가지며, 부동소숫점 버스에 대한 명령을 통해 재포맷된 기하패킷을 수신하고 이 기하패킷을 버퍼링하는 입력회로;
    다수의 버퍼 출력 레지스터 화일을 가지며, 드로우 패킷을 버퍼링하고 드로우 버스에 대한 명령을 통해 드로우 패킷을 전송하는 출력회로;
    제 1 레지스터 그룹, 제 2 레지스터 그룹 및 제 3 레지스터 그룹을 포함하는 범용 레지스터 화일을 갖는 레지스터 화일 회로; 및
    저장제어로부터의 다수의 특수화된 그래픽 마이크로 명령어의 판독 및 기능 유니트 세트를 사용하는 상기 특수화된 그래픽 마이크로 명령어의 실행에 의해 드로우 패킷을 출력 레지스터 화일로 조합하는 제어 시퀀서를 포함하고, 상기 특수화된 그래픽 마이크로 명령어는, 부동소숫점 비교 마이크로 명령어 및 스왑 마이크로 명령어로 구성되고, 상기 스왑 마이크로 명령어는 부동소숫점 비교 마이크로 명령어에 대응하는 일련의 결과 플래그에 따라서 제 1, 제 2 및 제 3 레지스터 그룹에 대한 레지스터 맵을 재배열함으로써 미리 정해진 순서로 제 1, 제 2, 및 제 3 레지스터 그룹에 저장된 정점값 세트가 정렬되도록 하는 것을 특징으로 하는 그래픽 가속기를 위한 부동소숫점 처리기.
  2. 제 1항에 있어서, 기능 유니트는 부동소숫점 승산기 회로, 부동소숫점 산술논리 유니트 회로, 역수회로, 역수평방근 회로 및 정수산술논리 유니트 회로, 역수회로를 포함하는 것을 특징으로 하는 부동소숫점 처리기.
  3. 제1항에 있어서, 범용 레지스터 화일은 3 차원 그래픽 처리 알고리즘에서 발생하는 내부 루프를 위한 데이타 저장장소를 제공하는 소정갯수의 범용 레지스터를 포함하는 것을 특징으로 하는 부동소숫점 처리기.
  4. 제1에 있어서, 특수화된 그래픽 마이크로 명령어는 상태_비트 레지스터의 클립 모드 비트에 따라 점과 하나 혹은 두개 클립 평면을 비교하고 하나 혹은 두개 결과 비트를 클립 비트 레지스터로 시프트하는 클립 테스트 마이크로 명령어를 더 포함하는 것을 특징으로 하는 부동소숫점 처리기.
  5. 제 4항에 있어서, 특수화된 그래픽 마이크로 명령어는 각각의 기하 조건 분기 명령어가 클립 비트 레지스터의 내용에 따라 분기조건을 결정하는 다수의 기하 조건 분기명령어를 더 포함하는 것을 특징으로 하는 부동소숫점 처리기.
  6. 제 5항에 있어서, 특수화된 그래픽 마이크로 명령어는 부동소숫점값을 정수값으로 변환하는 마이크로 명령어, 정수간을 부동소숫점간으로 변환하는 마이크로 명령어 및 데이타값의 절대값을 결정하는 마이크로 명령어를 더 포함하는 것을 특징으로 하는 부동소숫점 처리기.
  7. 제6항에 있어서, 특수화된 그래픽 마이크로 명령어는 부동소숫점 역수 마이크로 명령어를 더 포함하는 것을 특징으로 하는 부동소숫점 처리기.
  8. 제 7항에 있어서, 특수화된 그래픽 마이크로 명령어는 추가로 제어저장 및 범용 레지스터 차일 사이에 데이타 블럭 전송을 수행하기 위한 블럭 로드 명령어 및 블럭 스토어 명령어를 더 포함하는 것을 특징으로 하는 부동소숫점 처리기.
  9. 부동소숫점 버스에 대한 명령을 통해 재포맷된 기하패킷을 명령 저처리기로부터 수신하고, 상기 재포맷된 기하 패킷을 다수의 버퍼 입력 레지스터 화일에 버퍼링하는 단계;
    제어저장장소로부터 다수의 특수화된 그래픽 마이크로 명령어를 판독하고 기능 유니트 세트와 상기 제 1 레지스터 그룹, 상기 제 2 레지스터 그룹 및 상기 제 3 레지스터 그룹을 갖는 범용 레지스터 화일을 사용하는 상기 특수화된 그래픽 마이크로 명령어를 실행함으로써 드로우 패킷을 발생하는 단계로서,
    상기 특수화된 그래픽 마이크로 명령어는 부동소숫점 비교 마이크로 명령어, 및 제 1, 제 2 및 제 3 레지스터 그룹에 저장된 정점간 세트가 미리 정해진 순서대로 정렬되도록 상기 부동소숫점 비교 마이크로 명령어에 대응하는 일련의 결과 플래그에 따라 범용 레지스터 화일을 위한 레지스터 램을 재배열하는 스왑 마이크로 명령어로 구성되는, 상기 단계;
    드로우 버스에 대한 명령을 통해 다수의 드로우 처리기로 드로우 패킷을 송신하는 단계를 포함하는 것을 특징으로 하는 그래픽 가속기를 위한 부동소숫점 처리기능 수행방법.
  10. 제 9항에 있어서, 기능 유니트는 부동소숫점 승산기 회로, 부동소숫점 산술논리 유니트 회로, 역수회로, 역수평방근 회로 및 정수산술논리 유니트 회로, 역수회로를 포함하는 것을 특징으로 하는 부동소숫점 처리기능 수행방법.
  11. 제 9항에 있어서, 범용 레지스터 화일은 3 차원 그래픽 처리 알고리즘에서의 내부 루프를 위한 데이타 저장장소를 제공하는 소정갯수의 범용 레지스터를 포함하는 것을 특징으로 하는 부동소숫점 처리기능 수행방법.
  12. 제 9항에 있어서, 특수화된 그래픽 마이크로 명령어는 상태_비트 레지스터의 클립 모드 비트에 따라 점과 하나 혹은 두개 클립 평면을 비교하고 하나 혹은 두개 결과 비트를 클립 비트 레지스터로 시프트하는 클립 테스트 마이크로 명령어를 포함하는 것을 특징으로 하는 부동소숫점 처리기능 수행방법.
  13. 12항에 있어서, 특수화된 그래픽 마이크로 명령어는 각각의 기하 조건 분기 명령어가 클립 비트 레지스터의 내용에 따라 분기조건을 결정하는 다수의 기하 조건 분기 명령어를 더 포함하는 것을 특징으로 하는 부동소숫점 처리기능 수행방법.
  14. 제13항에 있어서, 특수화된 그래픽 마이크로 명령어는 부동소숫점값을 정수값으로 변환하는 마이크로 명령어, 정수값을 부동소숫점값으로 변환하는 마이크로 명령어 및 데이타값의 절대값을 결정하는 마이크로 명령어를 더 포함하는 것을 특징으로 하는 부동소숫점 처리기능 수행방법.
  15. 14항에 있어서, 특수화된 그래픽 마이크로 명령어는 부동소숫점 역수 마이크로 명령어를 더 포함하는 것을 특징으로 하는 부동소숫점 처리기능 수행방법.
  16. 제15항에 있어서, 특수화된 그래픽 마이크로 명령어는 제어저장장소 및 범용 레지스터 화일 사이에 데이타 블럭 전송을 수행하기 위한 블럭 로드 명령어 및 블럭 스토어 명령어를 더 포함하는 것을 특징으로 하는 부동소숫점 처리기능 수행방법.
KR1019940011052A 1993-06-04 1994-05-20 고성능3차원그래픽가속기를위한부동소숫점처리기및그처리기능수행방법 KR100325902B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US7170993A 1993-06-04 1993-06-04
US08/071,709 1993-06-04

Publications (2)

Publication Number Publication Date
KR950001538A KR950001538A (ko) 1995-01-03
KR100325902B1 true KR100325902B1 (ko) 2002-06-20

Family

ID=22103069

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940011052A KR100325902B1 (ko) 1993-06-04 1994-05-20 고성능3차원그래픽가속기를위한부동소숫점처리기및그처리기능수행방법

Country Status (5)

Country Link
US (1) US5517611A (ko)
EP (1) EP0627682B1 (ko)
JP (1) JPH0749961A (ko)
KR (1) KR100325902B1 (ko)
DE (1) DE69418646T2 (ko)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5548709A (en) * 1994-03-07 1996-08-20 Silicon Graphics, Inc. Apparatus and method for integrating texture memory and interpolation logic in a computer system
US6215500B1 (en) 1995-08-04 2001-04-10 Sun Microsystems, Inc. Compression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US6256041B1 (en) 1995-08-04 2001-07-03 Sun Microsystems, Inc. Decompression of three-dimensional geometry data representing a regularly tiled surface portion of a graphical object
US5842004A (en) * 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
US6747644B1 (en) 1995-08-04 2004-06-08 Sun Microsystems, Inc. Decompression of surface normals in three-dimensional graphics data
US5696944A (en) * 1995-08-08 1997-12-09 Hewlett-Packard Company Computer graphics system having double buffered vertex ram with granularity
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
WO1997021192A1 (en) * 1995-12-06 1997-06-12 Intergraph Corporation Peer-to-peer parallel processing graphics accelerator
US5850346A (en) * 1995-12-27 1998-12-15 Mitsubishi Electric Information Technology Center America, Inc. System for embedding hidden source information in three-dimensional computer model data
US5821949A (en) * 1996-07-01 1998-10-13 Sun Microsystems, Inc. Three-dimensional graphics accelerator with direct data channels for improved performance
US5740409A (en) * 1996-07-01 1998-04-14 Sun Microsystems, Inc. Command processor for a three-dimensional graphics accelerator which includes geometry decompression capabilities
US5874969A (en) * 1996-07-01 1999-02-23 Sun Microsystems, Inc. Three-dimensional graphics accelerator which implements multiple logical buses using common data lines for improved bus communication
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
US5987568A (en) * 1997-01-10 1999-11-16 3Com Corporation Apparatus and method for operably connecting a processor cache and a cache controller to a digital signal processor
US5930519A (en) * 1997-04-30 1999-07-27 Hewlett Packard Company Distributed branch logic system and method for a geometry accelerator
US6184902B1 (en) * 1997-04-30 2001-02-06 Hewlett-Packard Company Centralized branch intelligence system and method for a geometry accelerator
US5956047A (en) * 1997-04-30 1999-09-21 Hewlett-Packard Co. ROM-based control units in a geometry accelerator for a computer graphics system
US5969726A (en) * 1997-05-30 1999-10-19 Hewlett-Packard Co. Caching and coherency control of multiple geometry accelerators in a computer graphics system
US5889997A (en) * 1997-05-30 1999-03-30 Hewlett-Packard Company Assembler system and method for a geometry accelerator
US6047334A (en) * 1997-06-17 2000-04-04 Intel Corporation System for delaying dequeue of commands received prior to fence command until commands received before fence command are ordered for execution in a fixed sequence
US6169554B1 (en) 1997-06-30 2001-01-02 Sun Microsystems, Inc. Clip testing unit for a three-dimensional graphics accelerator
US6016149A (en) * 1997-06-30 2000-01-18 Sun Microsystems, Inc. Lighting unit for a three-dimensional graphics accelerator with improved processing of multiple light sources
US6192457B1 (en) 1997-07-02 2001-02-20 Micron Technology, Inc. Method for implementing a graphic address remapping table as a virtual register file in system memory
US6195734B1 (en) 1997-07-02 2001-02-27 Micron Technology, Inc. System for implementing a graphic address remapping table as a virtual register file in system memory
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US6037947A (en) * 1997-10-16 2000-03-14 Sun Microsystems, Inc. Graphics accelerator with shift count generation for handling potential fixed-point numeric overflows
JP4275790B2 (ja) * 1998-03-19 2009-06-10 富士通マイクロエレクトロニクス株式会社 図形選別ユニット及び図形描画装置
US7136068B1 (en) 1998-04-07 2006-11-14 Nvidia Corporation Texture cache for a computer graphics accelerator
US7616200B1 (en) 1998-06-12 2009-11-10 3Dlabs Inc. Ltd. System for reducing aliasing on a display device
US6650327B1 (en) * 1998-06-16 2003-11-18 Silicon Graphics, Inc. Display system having floating point rasterization and floating point framebuffering
US6175907B1 (en) * 1998-07-17 2001-01-16 Ip First, L.L.C Apparatus and method for fast square root calculation within a microprocessor
US6157393A (en) * 1998-07-17 2000-12-05 Intergraph Corporation Apparatus and method of directing graphical data to a display device
WO2000004502A1 (en) * 1998-07-17 2000-01-27 Intergraph Corporation Graphics processing for efficient polygon handling
US6480913B1 (en) 1998-07-17 2002-11-12 3Dlabs Inc. Led. Data sequencer with MUX select input for converting input data stream and to specific output data stream using two exclusive-or logic gates and counter
US6476816B1 (en) 1998-07-17 2002-11-05 3Dlabs Inc. Ltd. Multi-processor graphics accelerator
WO2000004494A1 (en) 1998-07-17 2000-01-27 Intergraph Corporation Graphics processing system with multiple strip breakers
US6577316B2 (en) 1998-07-17 2003-06-10 3Dlabs, Inc., Ltd Wide instruction word graphics processor
US7518616B1 (en) 1998-07-17 2009-04-14 3Dlabs, Inc. Ltd. Graphics processor with texture memory allocation system
US6188410B1 (en) 1998-07-17 2001-02-13 3Dlabs Inc. Ltd. System for processing vertices from a graphics request stream
WO2000004436A1 (en) 1998-07-17 2000-01-27 Intergraph Corporation Graphics processing with transcendental function generator
US6459453B1 (en) 1998-07-17 2002-10-01 3Dlabs Inc. Ltd. System for displaying a television signal on a computer monitor
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US6919895B1 (en) * 1999-03-22 2005-07-19 Nvidia Corporation Texture caching arrangement for a computer graphics accelerator
US6674440B1 (en) 1999-04-05 2004-01-06 3Dlabs, Inc., Inc. Ltd. Graphics processor for stereoscopically displaying a graphical image
US6359630B1 (en) 1999-06-14 2002-03-19 Sun Microsystems, Inc. Graphics system using clip bits to decide acceptance, rejection, clipping
US6847358B1 (en) * 1999-08-06 2005-01-25 Microsoft Corporation Workstation for processing and producing a video signal
US6924806B1 (en) * 1999-08-06 2005-08-02 Microsoft Corporation Video card with interchangeable connector module
US6844880B1 (en) * 1999-12-06 2005-01-18 Nvidia Corporation System, method and computer program product for an improved programmable vertex processing model with instruction set
US6831637B1 (en) * 1999-12-30 2004-12-14 Intel Corporation Method and apparatus for compressing three dimensional surface data
JP4568950B2 (ja) * 2000-02-29 2010-10-27 ソニー株式会社 グラフィックス描画装置
US6724394B1 (en) * 2000-05-31 2004-04-20 Nvidia Corporation Programmable pixel shading architecture
US20020066088A1 (en) * 2000-07-03 2002-05-30 Cadence Design Systems, Inc. System and method for software code optimization
US6822656B1 (en) * 2000-07-13 2004-11-23 International Business Machines Corporation Sphere mode texture coordinate generator
US8019901B2 (en) * 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US6961803B1 (en) * 2001-08-08 2005-11-01 Pasternak Solutions Llc Sliced crossbar architecture with no inter-slice communication
US7492371B2 (en) * 2005-12-02 2009-02-17 Seiko Epson Corporation Hardware animation of a bouncing image
US20070186210A1 (en) * 2006-02-06 2007-08-09 Via Technologies, Inc. Instruction set encoding in a dual-mode computer processing environment
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US8884972B2 (en) * 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
EP2069958A2 (en) * 2006-08-13 2009-06-17 Mentor Graphics Corporation Multiprocessor architecture with hierarchical processor organization
JP4901891B2 (ja) 2008-11-05 2012-03-21 株式会社東芝 画像処理プロセッサ
FR2962123A1 (fr) 2010-07-02 2012-01-06 Centre Nat Rech Scient Oxyde de zinc dope
GB2547250B (en) * 2016-02-12 2020-02-19 Geomerics Ltd Graphics processing systems
US10831478B2 (en) * 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US11256476B2 (en) * 2019-08-08 2022-02-22 Achronix Semiconductor Corporation Multiple mode arithmetic circuit

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4107773A (en) * 1974-05-13 1978-08-15 Texas Instruments Incorporated Advanced array transform processor with fixed/floating point formats
US4815021A (en) * 1986-01-30 1989-03-21 Star Technologies, Inc. Multifunction arithmetic logic unit circuit
US4866637A (en) * 1987-10-30 1989-09-12 International Business Machines Corporation Pipelined lighting model processing system for a graphics workstation's shading function
US5136664A (en) * 1988-02-23 1992-08-04 Bersack Bret B Pixel rendering
US5019968A (en) * 1988-03-29 1991-05-28 Yulan Wang Three-dimensional vector processor
EP0410778A3 (en) * 1989-07-28 1992-12-02 Texas Instruments Incorporated Graphics processor having a floating point coprocessor
US5317682A (en) * 1989-10-24 1994-05-31 International Business Machines Corporation Parametric curve evaluation method and apparatus for a computer graphics display system
US5159665A (en) * 1989-11-27 1992-10-27 Sun Microsystems, Inc. Graphics accelerator system
US5307449A (en) * 1991-12-20 1994-04-26 Apple Computer, Inc. Method and apparatus for simultaneously rendering multiple scanlines

Also Published As

Publication number Publication date
US5517611A (en) 1996-05-14
DE69418646T2 (de) 2000-06-29
EP0627682B1 (en) 1999-05-26
KR950001538A (ko) 1995-01-03
DE69418646D1 (de) 1999-07-01
JPH0749961A (ja) 1995-02-21
EP0627682A1 (en) 1994-12-07

Similar Documents

Publication Publication Date Title
KR100325902B1 (ko) 고성능3차원그래픽가속기를위한부동소숫점처리기및그처리기능수행방법
US5440682A (en) Draw processor for a high performance three dimensional graphic accelerator
US6891544B2 (en) Game system with graphics processor
US6018353A (en) Three-dimensional graphics accelerator with an improved vertex buffer for more efficient vertex processing
US7728841B1 (en) Coherent shader output for multiple targets
US4885703A (en) 3-D graphics display system using triangle processor pipeline
US7522171B1 (en) On-the-fly reordering of 32-bit per component texture images in a multi-cycle data transfer
US7071935B1 (en) Graphics system with just-in-time decompression of compressed graphics data
US5821949A (en) Three-dimensional graphics accelerator with direct data channels for improved performance
US7100026B2 (en) System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US8174534B2 (en) Shader processing systems and methods
US5999196A (en) System and method for data multiplexing within geometry processing units of a three-dimensional graphics accelerator
EP0747861B1 (en) Computer graphics system having high performance primitive clipping preprocessing
US5740409A (en) Command processor for a three-dimensional graphics accelerator which includes geometry decompression capabilities
EP0631252B1 (en) Draw processor for a high performance three dimensional graphics accelerator
KR20020012561A (ko) 이미지 생성 장치
US5914724A (en) Lighting unit for a three-dimensional graphics accelerator with improved handling of incoming color values
US5883641A (en) System and method for speculative execution in a geometry accelerator
US6442627B1 (en) Output FIFO data transfer control device
US6016149A (en) Lighting unit for a three-dimensional graphics accelerator with improved processing of multiple light sources
US7489315B1 (en) Pixel stream assembly for raster operations
CA2298337C (en) Game system with graphics processor
KR0170665B1 (ko) 3차원 그래픽스용 램
US7796133B1 (en) Unified shader
JP2003195847A (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
LAPS Lapse due to unpaid annual fee