KR100817920B1 - 임베디드 시스템, 정점 프로세싱 장치 및 디코더 - Google Patents

임베디드 시스템, 정점 프로세싱 장치 및 디코더 Download PDF

Info

Publication number
KR100817920B1
KR100817920B1 KR1020050128564A KR20050128564A KR100817920B1 KR 100817920 B1 KR100817920 B1 KR 100817920B1 KR 1020050128564 A KR1020050128564 A KR 1020050128564A KR 20050128564 A KR20050128564 A KR 20050128564A KR 100817920 B1 KR100817920 B1 KR 100817920B1
Authority
KR
South Korea
Prior art keywords
register
field
component
vertex
operand
Prior art date
Application number
KR1020050128564A
Other languages
English (en)
Other versions
KR20070067347A (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 KR1020050128564A priority Critical patent/KR100817920B1/ko
Publication of KR20070067347A publication Critical patent/KR20070067347A/ko
Application granted granted Critical
Publication of KR100817920B1 publication Critical patent/KR100817920B1/ko

Links

Images

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

Landscapes

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

Abstract

명령어, 대상 오퍼런드(destination operand) 및 소스 오퍼런드(source operand)로 구성되는 정점 프로그램(vertex program)을 실행코드(op code) 필드, 대상 오퍼런드 필드, 소스 오퍼런드 필드 및 상수(constant) 필드로 구성되는 기계어 코드로 번역하는 번역 장치 및 상기 번역 장치로부터 인가되는 상기 기계어 코드를 읽고(fetch) 해독(decode)하여 상기 정점 프로그램에 따른 좌표 변환과 조명 효과를 나타내는 정점 프로세싱(vertex processing)을 수행하는 정점 프로세싱 장치를 포함하되, 상기 정점 프로그램은 프로그래밍 가능한 쉐이더(programmable shader) 기반의 그래픽 연산을 지원하는 임베디드 시스템(embedded system) 및 정점 프로세싱 장치, 디코더에 관한 것이다. OpenGL ARB Extension 표준을 근거로 모바일 환경에 맞게 설계되고, 표준 스펙에 부합하는 명령어 집합을 정의하여 효과적인 기계어 코드의 인코딩과 해독이 가능하다.
정점, OpenGL, 임베디드 시스템, 기계어, 번역

Description

임베디드 시스템, 정점 프로세싱 장치 및 디코더{Embedded system, vertex processing device and decoder}
도 1은 고정된 기능의 파이프라인을 통한 그래픽 연산 과정을 나타낸 도면.
도 2는 정점 프로세싱 중 정점 데이터의 좌표 변환 과정을 나타낸 도면.
도 3은 정점 프로세싱 중 조명 계산 과정을 나타낸 도면.
도 4는 본 발명의 바람직한 일 실시예에 따른 정점 프로세싱 장치의 구조를 나타낸 도면.
도 5는 본 발명에 따른 정점 프로세싱 과정에서 사용되는 명령어 집합을 나타낸 도면.
도 6은 본 발명에 따른 스위즐 동작을 설명하기 위한 예시도.
도 7은 본 발명에 따른 대상 마스크 동작을 설명하기 위한 예시도.
도 8은 본 발명의 바람직한 일 실시예에 따른 기계어 코드의 포맷(format)을 나타낸 도면.
도 9 내지 도 12는 각 필드를 상세히 나타낸 도면.
도 13은 본 발명의 바람직한 일 실시예에 따른 디코더(decoder)의 구조를 나타낸 블록도.
도 14는 본 발명의 바람직한 일 실시예에 따른 대상 오퍼런드 필드 해독부에서의 대상 오퍼런드 해독(및 업데이트) 방법을 나타낸 도면.
도 15는 본 발명의 바람직한 일 실시예에 따른 소스 오퍼런드 필드 해독부에서의 소스 오퍼런드 해독 방법을 나타낸 도면.
도 16은 확장 스위즐이 적용되지 않는 경우에 소스 오퍼런드 필드의 해석 방법을 나타낸 도면.
<도면의 주요부분에 대한 부호의 설명>
500 : 정점 프로세싱 장치
510 : 정점 프로세서
520 : 속성 레지스터
540 : 상수 레지스터
550 : 임시 레지스터
560 : 주소 레지스터
570 : 출력 레지스터
1300 : 디코더
본 발명은 프로세싱 장치(processing device)에 관한 것으로, 보다 상세하게는 임베디드 시스템(Embedded system)에 사용되는 정점 프로세싱 장치(Mobile Vertex Processing Device)의 구조 및 동작 방법에 관한 것이다.
OpenGL ES(Open Graphics Library Embedded System)는 로열티없이 자동차와 각종 설비 및 휴대 장치를 포함하는 임베디드 시스템 상의 2차원/3차원 그래픽 기능을 위한 크로스 플랫폼(cross-platform) 응용프로그램 인터페이스(API; Application Program Interface)이다. 이는 PC 환경의 3차원 그래픽 표준인 OpenGL(Open Graphics Liabrary)의 부분집합으로, 소프트웨어 어플리케이션(application)과 하드웨어 또는 소프트웨어의 그래픽 엔진 간의 유연하면서도 강력한 저수준의 인터페이스를 제공한다.
OpenGL ES는 이동 통신 단말기, 개인 휴대 단말기(PDA : Personal Digital Assistant), 휴대형 멀티미디어 단말기(PMP : Portable Multimedia Player) 등의 모바일 장치, 자동차 제어장치, 냉장도 제어장치, 공장로봇 제어장치 등의 임베디드 시스템 하에서 3차원 게임과 다양한 고급 3차원 그래픽 기능을 제공하기 위해 3차원 그래픽 연산을 처리하는 소프트웨어 솔루션이다.
OpenGL ES를 지원하는 그래픽스 하드웨어는 OpenGL ES가 제공하는 3차원 알고리즘을 하드웨어로 구현한 것으로, 3차원 그래픽 연산을 실시간으로 처리하기 위한 장치이다. 기존의 그래픽스 하드웨어는 고정된 알고리즘에 따라 3차원 데이터를 처리하였다.
임베디드 시스템 중 대표적인 것이 모바일 장치인 휴대형 단말기이다. 현재 3D 그래픽 엔진(즉, 그래픽스 하드웨어)을 탑재하여 출시되는 휴대형 단말기는 OpenGL ES 1.x를 기준으로 고정된 기능의 파이프라인(fixed function pipeline)을 통해 그래픽 연산을 처리하고 있다.
도 1은 고정된 기능의 파이프라인을 통한 그래픽 연산 과정을 나타낸 도면이고, 도 2는 정점 프로세싱 중 정점 데이터의 좌표 변환 과정을, 도 3은 정점 프로세싱 중 조명 계산 과정을 나타낸 도면이다.
도 1을 참조하면, 고정된 기능의 파이프라인을 통한 그래픽 연산 과정은 다음과 같다. 표현하고자 하는 사물의 모양을 삼각형 형태의 폴리곤 집합으로 구분한다. 각 폴리곤을 구성하는 세 개의 꼭지점을 정점(vertex)이라고 한다. 그래픽스 하드웨어는 세 개의 정점의 좌표(position), 색상(color), 법선 벡터(normal vector), 텍스처 좌표(texture coordinate) 등의 데이터를 응용프로그램 인터페이스(100)로부터 입력받는다.
정점 프로세싱(Vertex Processing; 110) 과정을 통해 입력받은 정점들에 대해 행렬연산을 통해 화면 상에서의 좌표를 결정하고 조명 모델(예를 들어, phong illlumination model 등)에 따라 점의 밝기를 결정한다.
그리고 프리미티브 어셈블리(Primitive Assembly; 120) 과정을 통해 좌표 변환 및 조명 계산이 끝난 점들을 모아서 삼각형을 구성한다. 래스터라이저(Rasterizer; 130) 과정을 통해 삼각형이 화면에서 차지하는 픽셀(pixel)들을 결정한다.
그리고 지정된 상태 정보에 따라 래스터라이저(130) 과정을 통해 결정된 픽 셀 데이터를 픽셀 프로세싱(140) 과정(즉, 텍스처 연산, 색상 합계, 안개 효과)을 거쳐 픽셀 데이터의 최종 색상을 결정하고, 렌더링된 픽셀(150)이 출력된다.
정점 프로세싱(110)을 구체화하면, 정점의 좌표를 도 2에 도시된 모델 좌표계에서 스크린 좌표계로 변환하는 과정과 도 3에 도시된 것과 같은 조명 계산 과정으로 구분된다.
도 2를 참조하면, 정점 데이터에 포함된 정점의 좌표는 모델들이 정의된 좌표계(일반적으로 모델의 중심이 원점이다)에서 여러 모델들이 공존하는 가상세계 좌표계인 월드 좌표계로 변환한다. 즉, 모델 좌표계 상의 점들을 이동, 회전, 크기조절 등의 처리과정을 거쳐 월드 좌표계 상의 점들을 획득한다. 그리고 월드 좌표계 상의 점들을 이동과 회전을 통해 계산되는 카메라를 중심으로 한 좌표계인 뷰 좌표계로의 뷰변환을 하고, 원근투영한 결과에 해당하는 좌표계인 투영 좌표계로의 투영변환을 한다. 투영변환은 뷰 좌표계 상의 점들을 원점에서 멀어질수록 x, y 좌표들을 작게 만드는 과정이다. 그리고 실제 표현하고자 하는 화면의 크기에 따라 크기 변환(뷰포트 스케일)을 하여 스크린 좌표계 상의 점들로 좌표 변환한다.
상술한 좌표 변환 과정은 각 변환이 특정 행렬에 의한 연산으로 정의될 수 있으며, 모델 좌표계로부터 스크린 좌표계까지의 각 변환에 해당하는 행렬들을 미리 연산한 하나의 행렬을 이용하여 간단히 좌표 변환할 수 있다. 하지만, 각 행렬들은 그래픽스 하드웨어에 따라 미리 결정되어 있고 변경이 불가능하여 유연한 그래픽 표현이 어려운 문제점이 있다.
도 3을 참조하면, 주위의 다른 사물에 의해 반사된 빛이 간접적으로 영향을 주는 빛의 성분인 주변광(Ambient lighting), 물체의 표면에서 산란되어 반사되는 빛의 성분인 산란광(Diffuse lighting), 물체의 표면에서 반사되는 빛이되 특정 방향(눈의 위치를 고려함)을 가지는 반사광(Specular lighting)을 합하여 정점 색상을 결정하는 조명 계산을 한다.
OpenGL ES 1.x 표준은 상술한 바와 같은 좌표 변환과 조명 계산을 위한 정점 프로세싱(110)을 정의하고 있으며, 그래픽 연산의 고속 처리를 위해 고정 기능의 파이프라인을 설계하여 연산하도록 한다. 하지만, 3D 그래픽 엔진이 OpenGL ES 1.x를 기준으로 따르게 되는 경우에는 엔진 설계 단계에서 그 기능이 고정되어 다양한 그래픽 표현에 제약이 따르는 문제점이 있다.
최근 PC 환경의 그래픽 엔진에서는 고정된 기능의 파이프라인이 아닌 프로그래밍 가능한 파이프라인(programmable pipeline) 구조를 제공한다. 기존의 고정된 기능의 파이프라인에서는 불가능하였던 유연한 그래픽스 기술을 제공하고 있다. PC 환경의 프로그래밍 가능한 파이프라인은 DirectX, OpenGL ARB Extension 등의 그래픽 라이브러리에 의해 제공되고 있다. 임베디드 시스템(특히, 모바일 환경)에서는 프로그래밍 가능한 파이프라인 구조의 OpenGL ES 2.0 표준이 발표되어 프로그래밍 가능한 쉐이더(programmable shader) 구조를 제안하였으나, 사용자를 위한 고급 언어에 대한 스펙만이 제시되어 있고, 벤더(vendor)를 위한 스펙은 포함되지 않고 있다. 또한, 이를 지원하는 관련 제품이 아직 출시되지 않고 있는 상황이다.
따라서, 본 발명은 OpenGL ES 2.0에 근거하여 정점 프로세싱 과정을 프로그래밍 가능한 파이프라인 구조로 동작하도록 하는 임베디드 시스템, 정점 프로세싱 장치 및 디코더를 제공한다.
또한, 본 발명은 OpenGL ES 2.0에서 제시된 고급 언어를 모두 지원하고, 프로그래밍 가능한 파이프라인 구조로 동작하도록 하는 정점 프로세싱 장치의 구조에 따른 명령어 집합의 인코딩 방법 및 해독 방법을 제공한다.
본 발명의 이외의 목적들은 하기의 설명을 통해 쉽게 이해될 수 있을 것이다.
상기 목적들을 달성하기 위하여, 본 발명의 일 측면에 따르면, 명령어, 대상 오퍼런드(destination operand) 및 소스 오퍼런드(source operand)로 구성되는 정점 프로그램(vertex program)을 실행코드(op code) 필드, 대상 오퍼런드 필드, 소스 오퍼런드 필드 및 상수(constant) 필드로 구성되는 기계어 코드로 번역하는 번역 장치; 및
상기 번역 장치로부터 인가되는 상기 기계어 코드를 읽고(fetch) 해독(decode)하여 상기 정점 프로그램에 따른 좌표 변환과 조명 효과를 나타내는 정점 프로세싱(vertex processing)을 수행하는 정점 프로세싱 장치를 포함하되, 상기 정점 프로그램은 프로그래밍 가능한 쉐이더(programmable shader) 기반의 그래픽 연산을 지원하는 임베디드 시스템(embedded system)이 제공될 수 있다.
바람직하게는, 상기 기계어 코드는 64 비트로 구성될 수 있다.
여기서, 상기 실행코드 필드는 상기 명령어를 구분하기 위한 6 비트 영역이고,상기 대상 오퍼런드 필드는 상기 명령어의 수행 결과를 저장할 레지스터의 종류, 인덱스 및 마스크 정보를 포함하는 9 비트 영역이며, 상기 소스 오퍼런드 필드는 상기 명령어의 수행에 필요한 레지스터의 종류, 인덱스 및 스위즐(swizzle) 정보를 포함하는 15 비트 영역이고, 상기 상수 필드는 상기 소스 오퍼런드 필드의 인덱스 정보와 조합하여 확장 인덱스 역할을 하는 3 비트 영역이고, 상기 인덱스 정보는 4 비트 영역일 수 있다.
또한, 상기 기계어 코드는 상기 소스 오퍼런드 필드와 함께 확장 스위즐(extended swizzle) 연산을 제공하는 8 비트 영역인 확장 스위즐 필드를 더 포함할 수 있다.
그리고 상기 소스 오퍼런드 필드는 1 내지 3개 중 어느 하나일 수 있다.
상기 목적들을 달성하기 위하여, 본 발명의 다른 측면에 따르면, 정점 프로세싱(vertex processing)을 수행하는 정점 프로세싱 장치에 있어서, 정점 데이터(vertex data)를 저장하는 속성 레지스터(attribute register); 정점 프로세싱에 사용되는 상수 데이터를 저장하는 상수 레지스터(constant register); 상기 정점 프로세싱 중 생성되는 임시 데이터를 저장하는 임시 레지스터(temporary register); 상기 상수 레지스터에 저장된 상수 데이터의 상대적인 위치(offset)를 읽기 위해 기본주소(base address)를 저장하는 주소 레지스터(address register); 상기 정점 프로세싱에 의해 연산 처리된 출력 데이터를 저장하는 출력 레지스터(output register); 및 입력된 기계어 코드를 해석하여 명령어(instruction)를 순차적으로 하나씩 읽고(fetch) 해독(decode)하며 상기 정점 프로세싱을 수행(operate)하는 정점 프로세서(vertex processor)를 포함하는 정점 프로세싱 장치가 제공될 수 있다.
바람직하게는, 상기 속성 레지스터, 상기 상수 레지스터, 상기 임시 레지스터 및 상기 출력 레지스터는 4개의 실수 저장 공간으로 구성될 수 있다.
또한, 상기 정점 데이터는 정점의 좌표, 주색상(primary color), 부색상(secondary color), 법선 벡터, 정점 가중치, 안개 좌표 및 텍스처 좌표의 속성 데이터를 포함할 수 있다.
그리고 상기 속성 레지스터의 수는 16개 이상이고, 상기 상수 레지스터의 수는 96개 이상이며, 상기 임시 레지스터의 수는 12개 이상이고, 상기 출력 레지스터의 수는 13개 이상일 수 있다.
상기 목적들을 달성하기 위하여, 본 발명의 또 다른 측면에 따르면, 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는, 명령어, 대상 오퍼런드 및 소스 오퍼런드로 구성되는 정점 프로그램이 번역된 실행코드 필드, 대상 오퍼런드 필드, 소스 오퍼런드 필드 및 상수 필드로 구성되는 기계어 코드를 읽고 해독하는 디코더(decoder)에 있어서, 상기 실행코드 필드로부터 상기 명령어의 종류를 해석하는 실행코드 필드 해독부; 상기 대상 오퍼런드 필드로부터 상기 명령어의 실행 결 과를 저장하는 레지스터를 판독하는 대상 오퍼런드 필드 해독부; 및 상기 소스 오퍼런드 필드로부터 상기 명령어의 실행을 위한 피연산자가 되는 레지스터를 판독하는 소스 오퍼런드 필드 해독부를 포함하는 디코더가 제공될 수 있다.
바람직하게는, 상기 대상 오퍼런드 필드 해독부는 상기 실행 결과를 저장할 레지스터의 종류를 결정하는 종류 결정부; 상기 종류 결정부에서 결정된 종류의 레지스터들 중 상기 실행 결과를 저장할 레지스터의 인덱스를 결정하는 인덱스 결정부; 및 상기 레지스터의 성분(component) 중 업데이트될 성분을 선택하는 성분 선택부를 포함하되, 상기 레지스터는 각각 실수값을 가지는 4개의 성분을 가질 수 있다.
여기서, 상기 종류 결정부에 의해 결정되는 레지스터의 종류는 임시 레지스터 또는 출력 레지스터일 수 있다.
또한, 상기 소스 오퍼런드 필드 해독부는 상기 피연산자에 해당하는 레지스터의 종류를 결정하는 종류 결정부; 상기 종류 결정부에서 결정된 종류의 레지스터들 중 저장된 성분을 읽어올 레지스터의 인덱스를 결정하는 인덱스 결정부; 상기 레지스터의 각 성분 중 연산에 필요한 성분의 순서를 결정하여 선택하는 성분 선택부; 및 상기 각 성분의 부호 반전 여부를 결정하는 부호 결정부를 포함하되, 상기 레지스터는 각각 실수값을 가지는 4개의 성분을 가질 수 있다.
또는 상기 소스 오퍼런드 필드 해독부는 상기 소스 오퍼런드 필드 및 선택된 상기 소스 오퍼런드 필드 이외의 소스 오퍼런드 필드 중 하나에 포함된 확장 스위즐(extended swizzle) 필드를 조합하여 해독하되, 상기 확장 스위즐 필드는 부호 반전 여부를 결정하는 부호 반전 필드 및 확장 스위즐 연산을 결정하는 스위즐 확장 필드를 가질 수 있다. 여기서, 상기 소스 오퍼런드 필드 해독부는 상기 피연산자에 해당하는 레지스터의 종류를 결정하는 종류 결정부; 상기 종류 결정부에서 결정된 종류의 레지스터들 중 저장된 성분을 읽어올 레지스터의 인덱스를 결정하는 인덱스 결정부; 상기 스위즐 확장 필드로부터 상기 레지스터의 각 성분의 값이 미리 정해진 값인지 다른 성분의 값인지를 결정하는 스위즐 결정부; 상기 스위즐 결정부의 결정 결과에 따라 연산에 필요한 성분값을 결정하여 선택하는 성분 선택부; 및 상기 각 성분의 부호 반전 여부를 결정하는 부호 결정부를 포함하되, 상기 레지스터는 각각 실수값을 가지는 4개의 성분을 가지고, 상기 미리 정해진 값은 0 또는 1일 수 있다. 그리고 상기 성분 선택부는 상기 레지스터의 각 성분 중 연산에 필요한 성분의 순서를 결정하여 선택할 수 있다.
바람직하게는, 상기 종류 결정부에 의해 결정되는 레지스터의 종류는 임시 레지스터 또는 속성 레지스터일 수 있다.
또는 상기 종류 결정부에 의해 결정되는 레지스터의 종류는 상수 레지스터이고, 상기 인덱스 결정부는 상기 상수 필드와 조합하여 상기 상수 레지스터의 확장 인덱스를 결정할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 임베디드 시스템, 정점 프로세싱 장치 및 디코더의 바람직한 실시예를 상세히 설명한다. 본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 동일 또는 유사한 개체를 순차적으로 구분하기 위한 식별기호에 불과하다.
본 발명에서 정점 프로세싱(vertex processing)이라 함은 프로그래밍 가능한 파이프라인을 통해 정점 데이터를 이용하여 사용자가 원하는 좌표 변환과 조명 계산에 의한 효과가 가능하도록 정점 데이터를 처리하는 것을 의미한다.
도 4는 본 발명의 바람직한 일 실시예에 따른 정점 프로세싱 장치의 구조를 나타낸 도면이다.
정점 프로세싱 장치(500)는 정점 프로세서(vertex processor; 510), 속성 레지스터(attribute register; 520), 상수 레지스터(constant register; 540), 임시 레지스터(temporary register; 550), 주소 레지스터(address register; 560), 출력 레지스터(output register; 570)를 포함한다.
기계어 코드(530)는 정점 프로세서(510)에서 수행할 연산 과정을 정의하는 명령어(instruction)가 컴퓨터 등의 기계가 판독가능한 기계어(machine language)로 변환된 코드이다.
정점 프로세서(vertex processor; 510)는 기계어 코드(530)를 해석하여 주변의 저장 장치(즉, 다양한 레지스터들)와 내부의 연산 장치를 이용하여 정점 프로세싱을 수행한다. 내부의 연산 장치는 기계어 코드(530)로 변환된 명령어를 순차적으로 하나씩 읽고(fetch) 해독(decode)하여 상응하는 동작을 수행(operate)하는 일련 의 과정을 행한다.
정점 데이터(vertex data; 525)는 화면 상에 표현하고자 하는 물체를 구성하는 각 폴리곤들의 정점의 스트림 데이터(stream data)이다. 화면 상에서 물체를 3차원적으로 표현하고자 하면, 표현하고자 하는 사물의 모양을 삼각형 형태의 폴리곤 집합으로 구분하고, 폴리곤을 구성하는 3개의 정점 데이터를 정점 프로세싱 과정을 통해 처리함으로써 3차원 화상을 만들어낸다.
정점 데이터(525)는 각 정점에 대한 좌표(position), 색상(color), 법선 벡터(normal vector), 텍스처 좌표(texture coordinate) 등과 같은 속성 데이터(attribute data)를 포함한다. 각각의 속성 데이터는 4개의 실수 집합으로 이루어진다. 예를 들어, 좌표 속성 데이터는 3차원을 나타내는 x, y, z 값과 투영(projection) 정도를 나타내는 w 값의 4개 실수 정보를 가지고, 색상 속성 데이터는 기본 삼원색의 밝기값인 r(red), g(green), b(blue) 값과 불투명도를 나타내는 알파(a) 값의 4개 실수 정보를 가진다.
정점 데이터(525)는 OpenGL ARB extension 1.0 구조에서 최소 16개의 속성 데이터를 지원한다. 좌표, 주색상(primary color), 부색상(secondary color), 법선 벡터, 정점 가중치, 안개 좌표 등의 8개와 제1 텍스처 좌표, 제2 텍스처 좌표, 제3 텍스처 좌표 등 최대 8개의 텍스처 좌표에 관한 속성 데이터를 지원할 수 있다.
정점 데이터(425)는 속성 레지스터(attribute register; 520)에 그 값이 저장되거나 속성 레지스터(520)에 정점 데이터(425)를 참조할 수 있는 주소가 저장된다. 정점 프로세서(510)는 속성 레지스터(520)에 저장된 값을 읽거나 저장된 주소 를 참조하여 정점 데이터(525)를 입력받을 수 있게 되며, 정점 데이터(525)의 읽기만이 가능하고 변경이나 쓰기는 불가능하다.
상수 레지스터(constant register; 540)는 상수 데이터(545)를 저장하거나 상수 데이터(545)를 참조할 수 있는 주소를 저장한다. 상수 데이터(545)는 정점 프로세서(510)에서 정점 프로세싱을 수행함에 있어서 사용되는 값들이다. 예를 들어 상수 데이터(545)는 행렬 계산을 위한 값이나 특정 색상 값, 조명 계산을 위한 값 등이며, 각 상수 데이터(545)는 4개의 실수 집합으로 구성된다. OpenGL ARB extension 1.0 구조에서 최소 96개의 상수 데이터를 지원한다. 상수 레지스터(540)는 읽기만이 가능하며 변경이나 쓰기는 불가능하다.
임시 레지스터(550)는 정점 프로세서(510)가 정점 프로세싱을 수행하는 동안에 사용되는 임시 변수를 저장한다. 정점 프로세싱을 위해 사용되는 속성 데이터 또는 상수 데이터가 모두 4개의 실수 집합으로 이루어지기 때문에, 임시 레지스터(550) 역시 기본적으로 4개의 실수 집합으로 구성된다.
임시 레지스터(550)는 OpenGL ARB 1.0 구조에서 최소 12개를 지원하도록 하고 있으며, 특수 용도를 위한 4개를 추가적으로 지원하여 총 16개를 지원한다. 정점 프로세싱이 수행되는 동안에 정점 프로세서(510)는 임시 레지스터(550)에 임의의 데이터를 쓰거나 읽을 수 있다.
주소 레지스터(560)는 상수 레지스터(540)를 이용하여 상수 데이터(525)를 읽고자 할 때 참조의 기본이 되는 기본 주소(base address)를 저장한다. 기본 주소를 이용하여 정점 프로세서(510)가 정점 프로세싱 중에 필요로 하는 상수 데이터 (525)가 저장된 주소까지의 오프셋(offset)으로 상수 데이터(525)가 저장된 상대적인 위치를 참조하여 읽어온다.
출력 레지스터(570)는 정점 프로세서(510)에 의해 정점 프로세싱을 수행한 결과 출력되는 출력 데이터를 저장한다. 정점 프로세싱을 거친 출력 데이터 즉, 출력 변수는 도 1에 도시된 바와 같이 프리미티브 어셈블리(120), 래스터라이저(130), 픽셀 프로세싱(140) 등의 그래픽스 파이프라인을 따르게 된다. OpenGL ARB extension 1.0 구조에서 최소 13개의 출력 레지스터(570)을 지원하도록 하고 있으며, 각 출력 레지스터(570)는 4개의 실수 집합이 저장가능하도록 구성된다. 출력 레지스터(570)는 쓰기만이 가능하다.
본 발명에서 기계어 코드(530), 정점 데이터(525), 상수 데이터(545)는 상술한 레지스터라는 별도의 저장 장치 없이, 메모리 상에 저장되어 있는 각 데이터에 대한 포인터(pointer)를 통해 직접 참조하는 방식이 사용가능하다. 이는 각 데이터에 대하여 별도의 저장 공간을 할당하여 각 데이터를 복사하는 과정에서 발생하는 시간 지연을 줄이기 위함이며, 기계어 코드(530), 정점 데이터(525), 상수 데이터(545)는 정점 프로세서(510)에서 읽기 용도로만 사용되기 때문이다.
임시 레지스터(550), 주소 레지스터(560), 출력 레지스터(570)는 정점 프로세서(510)에서 정점 프로세싱의 수행 중 각 레지스터에 저장되는 데이터의 쓰기 동작이 이루어지는 장치이다. 정점 프로세싱 장치(500)의 환경 설정을 초기화하는 단계에서 각 레지스터의 크기만큼 메모리를 할당하여 사용한다.
상술한 정점 프로세싱 장치(500)에서 정점 프로그램을 이용하여 정점 프로세 싱(좌표 변환 및 조명 효과 계산 등) 동작을 수행하기 위해서는 정점 프로그램을 정점 프로세싱 장치(500)가 읽고 해독할 수 있는 기계어 코드로 변역해주는 번역 장치(미도시)가 필요하다.
번역 장치는 명령어, 대상 오퍼런드(destination operand), 소스 오퍼런드(source operand)로 구성되는 정점 프로그램을 실행코드 필드, 대상 오퍼런드 필드, 소스 오퍼런드 필드, 상수 필드로 구성되는 기계어 코드로 번역한다.
번역 장치 및 정점 프로세싱 장치(500)는 본 발명에 따른 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는 임베디드 시스템(embedded system)에 포함된다. 임베디드 시스템은 OpenGL ES 2.0을 기반으로 하고 있다.
이하에서는 정점 프로그램에서 사용되는 명령어(instruction) 집합 및 번역 장치에서의 번역 방법, 디코더에서의 해독 방법에 대해 상세히 설명한다. 디코더는 추후 상세히 설명한다.
도 5는 본 발명에 따른 정점 프로그램에서 사용되는 명령어 집합을 나타낸 도면이다.
정점 프로세싱 장치(500)는 정점 프로세서(510)에서 상술한 28개의 기본 명령어와 3개의 매크로 명령어로 이루어지는 기계어 코드를 해석하여 연산함으로써 정점 프로세싱 동작을 수행한다. 명령어는 정점 프로세싱 동작 중 어떤 연산을 수행할지를 나타낸다. 정점 프로세싱을 위한 정점 프로그램은 사용자(예를 들어, 프로그래머)의 편의를 위해 어셈블리 언어와 유사한 저급 언어(low-level language)를 통해 프로그래밍이 가능하며, 어셈블러를 통해 정점 프로세싱 장치(500)에서 실 행가능한 기계어 코드로 번역된다. 기본적인 문법 구조(syntax)는 수학식 1과 같은 실행코드(op code), 대상 오퍼런드(destination operand), 소스 오퍼런드(source operand)로 구성된다.
<수학식 1>
opcode destination operand, source operand0, (source operand1, source operand2);
대상 오퍼런드 및/또는 소스 오퍼런드는 각 레지스터와 바인드된 변수 또는 레지스터의 이름을 직접 쓰고 있으며, 본 발명에서는 오퍼런드의 참조를 위해 각 레지스터의 인덱스(index) 주소를 사용한다. 예를 들면 다음의 수학식 2와 같다.
<수학식 2>
PARAM Colr = program.local[0]; … ①
OUTPUT oColr = result.color; … ②
MOV oColr, Colr; … ③
MOV result.color, program.local[0]; … ④
① 식은 상수 레지스터(program.local)의 인덱스 0번을 변수 Colr에 바인드하라는 명령이다. ② 식은 변수 oColr에 출력 인덱스 2번(result.color)을 바인드하라는 명령이다. ③ 식은 Colr 변수의 값을 oColr 변수로 MOV 연산을 수행하라는 명령이다. ④ 식은 상수 레지스터의 인덱스 0번을 출력 인덱스 2번으로 MOV 연산을 수행하라는 명령이다. 여기서, PARAM, OUTPUT은 지정자(qualifier)로써 PARAM은 대상 변수가 상수임을 나타내고 OUTPUT은 대상 변수가 결과값을 저장할 대상임을 나 타낸다.
도 5를 참조하면, 정점 프로세서(510)에서 처리되는 명령어는 28개의 기본 명령어(primitive instruction)와 3개의 매크로 명령어(macro instruction)으로 구성된다. dest는 대상 오퍼런드(destination operand), src는 소스 오퍼런드(source operand)를 나타낸다. 특히, src0은 제1 소스 오퍼런드, src1은 제2 소스 오퍼런드, src2는 제3 소스 오퍼런드를 나타낸다. 각각의 명령어는 기본적으로 대상 오퍼런드를 가지고 있으며, 연산 내용에 따라 소스 오퍼런드는 1~3개를 가지게 된다. 4 성분 벡터(4 component vector)는 상술한 바와 같이 각 데이터가 4개의 실수 집합으로 이루어지므로, [x, y, z, w]의 벡터 형식을 가진다. s 스칼라(scalar)는 x 성분만을 가지는 값이고, ssss 스칼라는 x, y, z, w의 4 성분을 가지되 모두 동일한 값이다.
28개의 기본 명령어는 다음과 같다.
(1) ABS(Absolute value)는 4 성분 벡터에 해당하는 src0의 x, y, z, w 각 성분의 절대값을 dest의 x, y, z, w에 각각 대입한다. (2) ADD(Add two vectors)는 4 성분 벡터에 해당하는 src0과 src1의 x, y, z, w 각 성분의 값을 더하여 dest의 x, y, z, w에 각각 대입한다. (3) ARL(Address register load)은 s 스칼라에 해당하는 src0에 저장된 값 이하 가장 큰 정수를 a0(주소 레지스터임)에 대입한다. 상술한 바에 의하면 a0에 대입되는 값이 기본 주소가 된다. (4) DP3(3-component dot product)는 4 성분 벡터에 해당하는 src0과 src1 중 x, y, z의 3 성분에 대하여 내적(dot product)을 구한 뒤, 내적값을 ssss 스칼라인 dest의 4 성분에 대입한다. (5) DP4(4-component dot product)는 4 성분 벡터에 해당하는 src0과 src1의 x, y, z, w의 4 성분에 대하여 내적을 구한 뒤, 내적값을 ssss 스칼라인 dest의 4 성분에 대입한다. (6) DPH(Homogeneous dot product)는 4 성분 벡터에 해당하는 src0과 src1 중 x, y, z의 3 성분에 대하여 내적을 구한 뒤 내적값을 4 성분 벡터인 dest의 x, y, z에 대입하고, src1의 w 성분의 값을 dest의 w 성분에 대입한다. src0의 w 성분을 1.0으로 설정하고 src0과 src1에 대하여 DP4 연산을 적용한 것과 같은 결과이다. (7) DST(Distance vector)는 2개의 특수한 포맷을 가지는 오퍼런드로부터 거리 벡터(distance vector)를 계산한다. 4 성분 벡터인 src0과 src1(여기서, src0은 [NA, d2, d2, NA], src1은 [NA, 1/d, NA, 1/d]이고, NA는 계산과 관련없으며 d는 벡터 크기를 의미함)에 대해 4 성분 벡터인 dest의 x 성분은 1.0을, y 성분은 src0과 src1의 y 성분의 곱을, z 성분은 scr0의 z 성분을, w 성분은 src1의 w 성분을 대입하여 dest가 [1.0, d, d2, 1/d] 형태가 되도록 한다. (8) EX2(exponential base 2)는 2를 밑(base)으로 하고 s 스칼라인 src0을 지수로 하여 2src0을 ssss 스칼라인 dest의 4 성분에 각각 대입한다. (9) EXP(exponential base 2(approximate))는 2를 밑(base)으로 하고 s 스칼라인 src0을 지수로 하여 2src0의 부분적으로 정확한 값을 4 성분 벡터인 dest에 대입한다. dest의 x 성분에는 src0의 정수부분(src0 이하 가장 큰 정수)에 대해 2의 지수를 취한 형태를 대입하고, y 성분에는 src0의 소수부분(src0으로부터 src0 이하 가장 큰 정수를 뺀 값)을 대입하며, z 성분에는 src0의 대략적인 2의 지수를 취한 형태를 대입하고, w 성분에는 1.0을 대입한다. (10) rEX2(exponential base 2(approximate))는 2를 밑(base)으로 하고 s 스칼라인 src0을 지수로 하여 2src0의 대략적인 값을 ssss 스칼라인 dest의 4 성분에 각각 대입한다. (11) FLR(floor)는 4 성분 벡터에 해당하는 src0의 각 성분의 정수부분(src0 이하 가장 큰 정수)을 4 성분 벡터에 해당하는 dest의 각 성분에 대입한다. (12) FRC(fraction)는 4 성분 벡터에 해당하는 src0의 각 성분의 소수부분(src0으로부터 src0 이하 가장 큰 정수를 뺀 값)을 4 성분 벡터에 해당하는 dest의 각 성분에 대입한다. (13) LG2(logarithm base 2)는 s 스칼라에 해당하는 src0에 대하여 밑(base)이 2인 로그값을 ssss 스칼라인 dest의 각 성분에 대입한다. (14) LOG(logarithm base 2(approximate))는 s 스칼라에 해당하는 src0에 대하여 밑(base)이 2인 로그값의 대략적인 값을 4 성분 벡터인 dest에 대입한다. dest의 x 성분에는 src0에 대하여 밑(base)이 2인 로그값의 정수부분을 대입하고, y 성분에는 src0의 값을 dest의 x 성분 만큼 오른쪽 쉬프트 연산한 값을 대입하며 w 성분에는 1.0을 대입한다. (15) rLG2(logarithm base 2(approximate))는 s 스칼라에 해당하는 src0에 대하여 밑(base)이 2인 대략적인 로그값을 ssss 스칼라인 dest의 각 성분에 대입한다. (16) MAD(Multiply and add)는 본 발명에서의 명령어 중에서 유일하게 소스 오퍼런드를 3개 모두 사용한다. 4 성분 벡터인 src0와 src1의 각 성분의 곱에 src2의 각 성분을 더한 값을 4 성분 벡터인 dest의 각 성분에 대입한다. (17) MAX(Maximum)는 4 성분 벡터인 src0과 src1의 각 성분 중 큰 값을 4 성분 벡 터인 dest의 각 성분에 대입한다. (18) MIN(Minimum)는 4 성분 벡터인 src0과 src1의 각 성분 중 작은 값을 4 성분 벡터인 dest의 각 성분에 대입한다. (19) MOV(Move)는 4 성분 벡터인 src0의 각 성분의 값을 4 성분 벡터인 dest의 각 성분에 대입한다. (20) MUL(Multiply)는 4 성분 벡터인 src0과 src1의 각 성분의 곱을 4 성분 벡터인 dest의 각 성분에 대입한다. (21) RCP(Reciprocal)는 s 스칼라인 src0의 값의 역수를 ssss 스칼라인 dest의 각 성분에 대입한다. (22) RSQ(Reciprocal square root)는 s 스칼라인 src0의 제곱근(square root)의 역수를 ssss 스칼라인 dest의 각 성분에 대입한다. (23) SGE(set on Greater than or equal)는 4 성분 벡터인 src0과 src1의 각 성분을 비교하여 4 성분 벡터인 dest의 각 성분에 src0이 src1보다 크거나 같으면 1.0을, 작으면 0.0을 대입한다. (24) SLT(set on less than)는 4 성분 벡터인 src0과 src1의 각 성분을 비교하여 4 성분 벡터인 dest의 각 성분에 src0이 src1보다 작으면 1.0을, 크거나 같으면 0.0을 대입한다. (25) SWZ(extended swizzle)는 4 성분 벡터인 src0의 각 성분, 1.0, 0.0을 로드하고 4 성분 벡터인 dest의 각 성분에 대해 부호 반전(negation)이 있는지 여부와 6개의 값(src0의 각 성분, 1.0, 0.0) 중 어느 하나의 값을 조합하여 대입한다. (26) XPD(cross product)는 4 성분 벡터인 src0과 src1의 x, y, z의 3 성분의 외적(cross product)를 구하여 그 외적값을 4 성분 벡터인 dest의 x, y, z 성분에 대입한다. w 성분은 정의되지 않는다. (27) clamp(MAX on x, y component and SLT on z component)는 4 성분 벡터인 src0과 src1에 대하여 x, y 성분은 MAX 연산을, z 성분은 SLT 연산을 하여 4 성분 벡터인 dest의 x, y, z 성분에 대입한다. (28) mulz(MOV on x, y, w component and MUL on z component)는 4 성분 벡터인 src0의 x, y, w 성분을 4 성분 벡터인 dest의 대응하는 성분에 대입하고, src0의 z 성분과 4 성분 벡터인 src1의 z 성분의 곱을 dest의 z 성분에 대입한다.
3개의 매크로 명령어는 다음과 같다.
(1) LIT(compute light coefficients)는 각 정점마다의 주변광, 산란광, 반사광에 의한 조명 효과를 가속하기 위한 연산이다.
LIT 연산은 수학식 3과 같은 기본 명령어의 집합으로 구성된다.
<수학식 3>
LIT f, a, b
Clamp tmp, a.0, b
rLG2 tmp.w tmp.w
MUL tmp.w tmp.w tmp.y
rEX2 tmp.w tmp.w
mulz f, tmp1.1xz1, tmp.w
(2) POW(exponentiate)는 s 스칼라인 src0과 src1에 대해서 src0src1을 구하여 ssss 스칼라인 dest에 대입한다. POW 연산은 수학식 4와 같은 기본 명령어의 집합으로 구성된다.
<수학식 4>
POW f, a, b (f = ab)
LG2 tmp, a
MUL tmp, tmp, b
EX2 f, tmp
(3) SUB(subtract)는 4 성분 벡터인 src0의 각 성분으로부터 src1의 각 성분의 값을 뺀 값을 4 성분 벡터인 dest의 각 성분에 대입한다. SUB 연산은 수학식 5와 같은 기본 명령어의 집합으로 구성된다.
<수학식 5>
SUB f, a, b (f = a - b)
ADD f, a, -b
3개의 매크로 명령어는 28개의 기본 명령어들로 재구성할 수 있으며, 정점 프로세서(510)는 정점 프로세싱 과정에서 매크로 명령어를 수학식 1 내지 3에 표현된 것과 같은 기본 명령어의 집합으로 해석한다. 따라서, 실제 정점 프로세싱 장치(500)에서 사용되는 명령어는 28개의 기본 명령어이며, 다른 명령어에 대하여 확장이 가능하다.
본 발명에서 사용하는 오퍼런드는 다음과 같은 조작이 가능하다.
소스 스위즐(source swizzle) : 소스 오퍼런드는 4 성분 타입의 레지스터이며, 각 성분에 대하여 도 6에 도시된 바와 같이 대상 오퍼런드의 값을 선택할 수 있다. 도 6은 본 발명에 따른 스위즐 동작을 설명하기 위한 예시도이다.
R2로 표현된 소스 오퍼런드에 대해서 R2.yzwx는 R2의 각 성분의 값에 대하여 y 성분의 값을 첫번째 성분으로, z 성분의 값을 두번째 성분으로, w 성분의 값을 세번째 성분으로, x 성분의 값을 네번째 성분으로 가정하여 대상 오퍼런드인 R1에 대입하게 된다. 따라서, R2에서 [7.0, 3.0, 6.0, 2.0]으로 저장되어 있던 성분 값들이 R1에서는 [3.0, 6.0, 2.0, 7.0]으로 스위즐되어 대입된다. 즉, 스위즐 동작에 의해 소스 오퍼런드의 4 성분에 저장된 값을 직접 변화시키지는 않고 연산 필요에 따라 성분 순서를 바꿀 수 있다.
소스 부호 반전(source negation) : 소스 오퍼런드에 대해서 부호 사용이 가능하다. 소스 오퍼런드를 나타내는 변수에 음(-) 부호를 부가하면, 소스 오퍼런드의 각 성분에 해당하는 값들에 대해 부호 반전이 일어난다.
대상 마스크(destination mask) : 대상 오퍼런드는 4 성분 타입의 레지스터이며, 각 성분에 대하여 도 7에 도시된 바와 같이 결과를 쓸 성분을 선택할 수 있다. 도 7은 본 발명에 따른 대상 마스크 동작을 설명하기 위한 예시도이다.
R1로 표현된 대상 오퍼런드의 x 성분과 w 성분에만 R2로 표현된 소스 오퍼런드에서 대응되는 성분에 부호 반전한 값을 대입한다. R1의 x 성분에는 -7.0이, w 성분에는 -2.0이 대입되고, y, z 성분은 변화없이 그대로 0.0의 값을 가진다.
도 8은 본 발명의 바람직한 일 실시예에 따른 기계어 코드의 포맷(format)을 나타낸 도면이고, 도 9 내지 도 12는 각 필드를 상세히 나타낸 도면이다. 상술한 명령어를 이용하여 프로그래머가 작성한 정점 프로그램은 어셈블러를 통해 정점 프로세싱 장치(500)에서 실행가능한 기계어 코드로 번역된다. 기계어 코드는 수학식 1에 도시된 형식을 지원하며, 총 64 비트(bit) 구조를 가진다.
도 8을 참조하면, 기계어 코드는 실행코드(op code) 필드[63:58], 미사용 비트(unused bit) 필드[57], 대상 오퍼런드(destination operand) 필드[56:48], 제1 소스 오퍼런드(source operand0) 필드[47:33], 제2 소스 오퍼런드(source operand1) 필드[32:18], 제3 소스 오퍼런드 필드(source operand2)[17:3], 상수(constant) 필드[2:0]로 구성된다. 여기서, [a:b]는 0(최하위 비트; least significant bit) 내지 63(최상위 비트; most significant bit) 중에서 해당 필드가 차지하는 b 내지 a번째 비트를 나타낸다.
이중 제3 소스 오퍼런드 필드[17:3] 중 일부[11:3]는 확장 스위즐 필드와 중첩되는 필드이다. 상술한 명령어 중에서 제3 소스 오퍼런드를 필요로 하는 명령어는 MAD 뿐이므로, MAD 명령어 동작 수행시에만 제3 소스 오퍼런드 필드로 활용되고 그 외에는 제1 소스 오퍼런드의 확장 스위즐 필드로 사용된다.
도 9를 참조하면, 실행코드 필드[63:58](900)는 명령어를 구분하기 위한 비트 필드로서, 6 비트의 공간을 할당받는다. 6 비트의 공간이므로, 총 64(=26)개의 명령어가 지정가능하다. 본 발명에서는 28개의 기본 명령어를 설정하고 있지만, 정점 프로세싱 장치(500) 외에 픽셀 프로세싱 장치에서의 명령어 및 향후 버전의 추가적인 기본 명령어를 위한 공간을 충분히 할당하고 있다. 해당 기술 분야에서 통상의 지식을 가진 자가 본 발명의 사상 내에서 기본 명령어의 추가적인 확장이 가능함은 물론이다.
도 10을 참조하면, 대상 오퍼런드 필드[56:48](1000)는 명령어 수행 결과를 저장할 레지스터의 종류(type), 인덱스(index), 마스크(mask) 정보를 구분하기 위한 비트 필드로서, 9 비트의 공간을 할당받는다. T[56](1 비트)는 대상 오퍼런드의 종류(type)를 결정하며, 예를 들어 0인 경우에 임시 레지스터(550), 1인 경우에 출력 레지스터(570)를 나타낸다. index[55:52](4 비트)는 대상 오퍼런드의 위치 값을 나타낸다. 4 비트이므로, 총 16(=24)개의 구별이 가능하다. 출력 레지스터(570)는 총 13개이며, 임시 레지스터(550)는 정점 프로그램에서 사용하는 12개와 연산 수행시 정점 프로세서(510) 내부에서 사용하는 4개를 합한 16개이므로, 4 비트의 인덱스로 구별이 가능하다. mask[51:48](4 비트)는 오퍼런드의 각 성분(x, y, z, w)에 대한 마스크 플래그(mask flag)이다.
도 11을 참조하면, 제1 소스 오퍼런드 필드[47:33](1100a)는 명령어 수행에 필요한 레지스터의 종류, 인덱스, 스위즐 정보를 구분하기 위한 비트 필드로서, 15 비트의 공간을 할당받는다. 이는 제2 소스 오퍼런드 필드[32:18](1100b), 제3 소스 오퍼런드 필드[17:3](1100c) 역시 마찬가지이다. 이하 제1 소스 오퍼런드 필드(1100a)에 대해 설명한다.
제1 소스 오퍼런드 필드(1100a) 중 n[47](1 비트)은 제1 소스 오퍼런드의 모든 성분의 값에 부호 반전이 있는지 여부를 나타낸다. type[46:45](2 비트)은 소스 오퍼런드에 해당하는 레지스터의 종류를 결정하며, index[44:41](4 비트)는 소스 오퍼런드의 위치 값을 나타낸다. 그리고 src_w[40:39], src_z[38:37], src_y[36:35], src_x[34:33]는 소스 오퍼런드의 각 성분 위치에 대한 스위즐 정보를 나타낸다.
제1 소스 오퍼런드 필드(1100a)는 상술한 바와 같이 MAD 명령어의 동작 수행시를 제외하고는 확장 스위즐이 가능하다. MAD 명령어는 제1 내지 제3 소스 오퍼런드를 모두 필요로 하지만 그 외의 명령어들은 제1 및/또는 제2 소스 오퍼런드를 필요로 하는 바, 제3 소스 오퍼런드 필드(1100c) 중 일부가 도 12에 도시된 바와 같이 확장 스위즐 필드[11:3](1200)로 사용된다.
확장 스위즐 필드(1200)는 제1 소스 오퍼런드의 확장 정보로 사용되며, 부호 반전 필드[11:8](1210)는 x, y, z, w 각 성분에 대한 부호 반전(negation)이 가능하도록 하며, 스위즐 확장 필드[7:3](1220)는 스위즐의 선택에 있어서 x, y, z, w 이외에도 1, 0을 선택할 수 있도록 하여 수학식 6과 같은 사용이 가능하도록 한다.
<수학식 6>
Colr. {-}[01xyzw] {-}[01xyzw] {-}[01xyzw] {-}[01xyzw]
즉, 4 성분 벡터인 Colr 변수에 대하여 각 성분의 값이 부호 반전이 있는지 여부, 0, 1 또는 x, y, z, w 성분 중 어느 하나의 값인지 여부를 확인하게 된다.
제1 소스 오퍼런드(1100a)가 상수 레지스터(540)를 참조하는 경우에 상수 레지스터(540)는 총 96개가 있으므로, 4비트의 인덱스로는 구별이 불가능한 바 확장 인덱스 필드가 필요하다. 여기서, 상수 필드[2:0](3 비트)가 확장 인덱스 필드로 사용된다. 이때 상수 필드[2:0](3 비트)와 인덱스[44:41](4 비트)를 이용하면 총 7 비트 즉, 128(=27)개까지 구별이 가능해지므로, 상수 레지스터(540)의 구별이 가능해진다.
제2 소스 오퍼런드(1100b) 및 제3 소스 오퍼런드(1100c)에 대해서도 확장 스위즐 필드를 이용하는 것 이외에는 상술한 내용이 적용가능하다.
이하에서는 상술한 바와 같이 인코딩된 명령어를 정점 프로세서(510) 내의 디코더에서 해석하는 해독(decoding) 과정에 대해 도 13 이하의 도면을 참조하여 설명한다.
도 13은 본 발명의 바람직한 일 실시예에 따른 디코더(decoder)의 구조를 나타낸 블록도이다. 도 13을 참조하면, 디코더(1300)는 실행코드 필드 해독부(1310), 대상 오퍼런드 필드 해독부(1320) 및 소스 오퍼런드 필드 해독부(1330)를 포함한다. 디코더(1300)에서 해독하는 기계어 코드는 도 6에 도시된 포맷을 따르는 것이 바람직하다.
실행코드 필드 해독부(1310)는 기계어 코드에 포함된 실행코드를 해독하여 현재 연산하고자 하는 명령어의 종류를 해석한다. 예를 들어, MOV 명령어에 해당하는 비트값이 실행코드에 포함된 경우에 미리 저장된 참조표(lookup table) 등을 참조하여 MOV 명령어임을 해석한다. 실행코드 해독은 64 비트로 구성된 기계어 코드로부터 명령어의 종류를 해석하는 과정으로, 앞서 정의한 바와 같이 기계어 코드의 [63:58] 비트 영역에 위치하는 정보를 논리 연산을 통하여 마스크한다.
대상 오퍼런드 필드 해독부(1320)는 기계어 코드에 포함된 대상 오퍼런드 필드로부터 실행코드 필드 해독부(1310)에서 해석한 명령어의 실행에 따른 실행 결과를 저장할 레지스터의 종류, 인덱스 및 업데이트할 성분을 판독한다. 대상 오퍼런 드 필드 해독부(1320)에 대해서는 추후 도 14를 참조하여 상세히 설명한다.
소스 오퍼런드 필드 해독부(1330)는 기계어 코드에 포함된 소스 오퍼런드 필드로부터 실행코드 필드 해독부(1310)에서 해석한 명령어의 실행에 필요한 피연산자가 되는 레지스터의 종류, 인덱스 및 스위즐 정보를 판독한다. 소스 오퍼런드 필드 해독부(1330)에 대해서는 추후 도 15 및 도 16을 참조하여 상세히 설명한다.
도 14는 본 발명의 바람직한 일 실시예에 따른 대상 오퍼런드 필드 해독부(1320)에서의 대상 오퍼런드 해독(및 업데이트) 방법을 나타낸 도면이다.
대상 오퍼런드 필드 해독부(1320)는 종류 결정부(1321), 인덱스 결정부(1322), 성분 선택부(1323)을 포함한다.
종류 결정부(1321)는 실행 결과를 저장할 레지스터의 종류를 결정한다. 대상 오퍼런드로 사용 가능한 레지스터는 임시 레지스터(550) 또는 출력 레지스터(570)이다.
인덱스 결정부(1322)는 종류 결정부(1321)에서 결정된 레지스터의 종류 중에서 실행 결과를 저장할 레지스터의 인덱스 즉, 위치값을 결정한다.
성분 선택부(1323)는 레지스터의 x, y, z, w 각 성분에 대하여 업데이트될 성분을 선택한다. 예를 들어, x, w 성분만이 업데이트될 필요가 있으면 x와 w에 해당하는 마스크 플래그만이 미리 지정된 제1 값(예를 들어, '1')을 가지고 있게 되며 y와 z에 해당하는 마스크 플래그는 미리 지정된 제2 값(예를 들어, '0')을 가지고 있게 된다. 이를 해독하여 업데이트될 성분의 종류를 판단할 수 있다.
전체적인 대상 오퍼런드 필드(1000)의 해독은 다음과 같다.
대상 오퍼런드 필드(1000)는 도 14의 (a)에 도시된 바와 같이 [57:48] 비트 영역을 차지하고 있다.
도 14의 (b)를 참조하면, 대상 오퍼런드에 해당하는 레지스터에 실행 결과(result data)를 저장하고자 하는 경우를 가정한다. 종류 결정부(1321)는 Type(T) 즉, [56] 비트 영역을 확인하여 0인 경우에는 임시 레지스터(550), 1인 경우에는 출력 레지스터(570)로 구별하게 된다. 그리고 레지스터의 종류가 결정되면, 인덱스 결정부(1322)는 index 즉, [55:52] 비트 영역을 확인하여 대상 레지스터의 위치를 결정한다. 그리고 성분 선택부(1323)는 결정된 대상 레지스터의 위치에 출력 결과의 x, y, z, w 각 성분의 값과 각 성분의 마스크 플래그 값을 AND 연산하여 업데이트한다. 즉, 마스크 플래그 값이 1인 경우에 각 성분의 값을 업데이트하게 된다.
소스 오퍼런드 필드의 해석은 확장 스위즐 필드(1200)를 적용하여 해석하는 경우와 그렇지 않은 경우의 두 가지 경우에 따라 해석 방법이 달라진다. MAD 명령어를 제외한 명령어에서는 제1 소스 오퍼런드는 확장 스위즐 필드(1200)와 조합하여 해석함을 기본으로 하는 것이 바람직하다.
우선, 도 15는 본 발명의 바람직한 일 실시예에 따른 소스 오퍼런드 필드 해독부(1330)에서의 소스 오퍼런드 해독 방법을 나타낸 도면이다. 여기서, 확장 스위즐이 가능한 제1 소스 오퍼런드 필드(1100a)를 중심으로 설명한다. 소스 오퍼런드 필드 해독부(1330)는 제1 소스 오퍼런드 필드(1100a) 및 확장 스위즐 필드(1200)를 조합하여 해독한다.
소스 오퍼런드 필드 해독부(1330)는 종류 결정부(1331), 인덱스 결정부(1332), 스위즐 결정부(1333), 성분 선택부(1334) 및 부호 결정부(1335)를 포함한다.
종류 결정부(1331)는 피연산자에 해당하는 레지스터의 종류를 결정한다. 소스 오퍼런드로 사용 가능한 레지스터는 임시 레지스터(550), 출력 레지스터(570) 또는 상수 레지스터(540)이다.
인덱스 결정부(1332)는 종류 결정부(1331)에서 결정된 레지스터의 종류 중에서 저장된 성분값을 읽어올 레지스터의 인덱스 즉, 위치값을 결정한다. 임시 레지스터(550) 또는 출력 레지스터(570)는 4 비트의 인덱스로 구별이 가능하나, 상수 레지스터(540)의 경우에는 모두 96개 이상이 있어 4 비트의 인덱스로는 구별이 불가능하다. 따라서, 상수 레지스터(540)의 경우에는 인덱스 결정부(1332)는 기계어 코드의 상수 필드[2:0]와 인덱스 필드를 조합하여 7 비트의 확장 인덱스로 상수 레지스터(540)를 구별하는 것이 바람직하다.
스위즐 결정부(1333)는 확장 스위즐 필드(1200)에 포함되는 스위즐 확장 필드(1220)로부터 소스 오퍼런드에 해당하는 레지스터의 각 성분의 값이 미리 정해진 값(즉, 1.0 또는 0.0)인지 다른 성분의 값인지를 결정한다. 예를 들어, x 성분에 대한 스위즐 확장 필드값(Sx)가 0인 경우에는 x 성분의 값은 해당 소스 오퍼런드의 x, y, z, w 성분 중 하나이고, 1인 경우에는 x 성분의 값은 0.0 또는 1.0 중 하나이다.
성분 선택부(1334)는 스위즐 결정부(1333)에서의 결과에 따라 x 성분의 값이 x, y, z, w 성분 중의 하나인 경우에 어느 성분인지를 결정한다. 또는 x 성분의 값이 0.0 또는 1.0 중의 하나인 경우에는 어느 값인지를 결정한다.
부호 결정부(1335)는 각 성분에 대하여 부호 반전 필드(1210)(Nx, Ny, Nz, Nw)를 확인하여 각 성분의 부호 반전 여부를 결정한다. 예를 들면, Nx가 미리 지정된 값 '1'(또는 '0')인 경우에 x 성분의 값은 부호를 반전시키게 된다.
전체적인 소스 오퍼런드 필드(1100a)의 해독은 다음과 같다.
도 15의 (b)를 참조하면, 도 15의 (a)에 도시된 소스 오퍼런드 필드로부터 종류 결정부(1331)는 type[46:45] 정보를 통해 소스 레지스터의 종류를 결정하고, 인덱스 결정부(1332)는 상수 필드[2:0](확장 인덱스 필드)와 조합하여 소스 레지스터의 위치를 결정하여 인덱싱한다. 상수 필드가 상위 비트를, 인덱스 필드가 하위 비트를 결정한다. 이 경우 확장 인덱스를 사용하지 않는 레지스터인 경우에 상수 필드의 값은 0이므로, 모든 레지스터의 인덱싱에서 확장 인덱스 필드를 사용하여도 문제가 되지는 않는다.
도 15의 (c)를 참조하면, x, y, z, w 각 성분의 부호 반전은 확장 스위즐 필드(1200)의 부호 반전 필드(1210)를 확인하여 결정하는 바 n[47]은 0으로 고정되어 있다. 스위즐 결정부(1333)는 x, y, z, w 각 성분에 대하여 각각 확장 스위즐 필드(1200)의 상응하는 스위즐 확장 필드(S; 1220) 값을 확인한다. 그리고 성분 선택부(1334)는 x 성분을 중심으로 설명하면, 스위즐 확장 필드(Sx; 1220)가 1인 경우에 스위즐 정보(src_x)를 확인하여 00이면 x 성분, 01이면 y 성분, 10이면 z 성분, 11 이면 w 성분으로 x 성분을 스위즐한다. 스위즐 확장 필드(Sx; 1220)가 0인 경우에 스위즐 정보(src_x)를 확인하여 00이면 0.0, 01이면 1.0으로 x 성분을 스위즐한다. 그리고 부호 결정부(1335)는 부호 필드(Nx; 1210)를 확인하여 1이면 부호 반전을 하여 최종 값을 결정한다.
도 16은 확장 스위즐이 적용되지 않는 경우에 소스 오퍼런드 필드의 해석 방법을 나타낸 도면이다. 제1 소스 오퍼런드 필드(1100a)를 중심으로 설명한다.
이경우의 소스 오퍼런드 필드 해독부(1330)는 종류 결정부(1331), 인덱스 결정부(1332), 성분 선택부(1336) 및 부호 결정부(1337)를 포함한다.
종류 결정부(1331)는 피연산자에 해당하는 레지스터의 종류를 결정한다. 소스 오퍼런드로 사용 가능한 레지스터는 임시 레지스터(550), 출력 레지스터(570) 또는 상수 레지스터(540)이다.
인덱스 결정부(1332)는 종류 결정부(1331)에서 결정된 레지스터의 종류 중에서 저장된 성분값을 읽어올 레지스터의 인덱스 즉, 위치값을 결정한다. 임시 레지스터(550) 또는 출력 레지스터(570)는 4 비트의 인덱스로 구별이 가능하나, 상수 레지스터(540)의 경우에는 모두 96개 이상이 있어 4 비트의 인덱스로는 구별이 불가능하다. 따라서, 상수 레지스터(540)의 경우에는 인덱스 결정부(1332)는 기계어 코드의 상수 필드[2:0]와 인덱스 필드를 조합하여 7 비트의 확장 인덱스로 상수 레지스터(540)를 구별하는 것이 바람직하다.
성분 선택부(1336)는 x 성분의 값이 x, y, z, w 성분 중의 하나인 경우에 어 느 성분인지를 결정한다. 또는 x 성분의 값이 0.0 또는 1.0 중의 하나인 경우에는 어느 값인지를 결정한다.
부호 결정부(1337)는 전체 성분에 대하여 부호 반전 여부를 결정한다. 소스 오퍼런드 필드(1100a)의 첫번째 영역인 n[47]을 확인하여 미리 지정된 값 '1'(또는 '0')인 경우에 전체 성분의 값은 부호를 반전시키게 된다.
전체적인 소스 오퍼런드 필드(1100a)의 해독은 다음과 같다.
도 16의 (a)를 참조하면, 확장 스위즐이 적용되지 않기 때문에 확장 스위즐 필드(1200)를 참조하지 않는다.
종류 결정부(1331)와 인덱스 결정부(1332)에서의 동작은 도 15의 (b)에 도시되어 있는 것과 동일하다. 도 15의 (b)를 참조하면, 도 15의 (a)에 도시된 소스 오퍼런드 필드로부터 종류 결정부(1331)는 type[46:45] 정보를 통해 소스 레지스터의 종류를 결정하고, 인덱스 결정부(1332)는 상수 필드[2:0](확장 인덱스 필드)와 조합하여 소스 레지스터의 위치를 결정하여 인덱싱한다. 상수 필드가 상위 비트를, 인덱스 필드가 하위 비트를 결정한다. 이 경우 확장 인덱스를 사용하지 않는 레지스터인 경우에 상수 필드의 값은 0이므로, 모든 레지스터의 인덱싱에서 확장 인덱스 필드를 사용하여도 문제가 되지는 않는다.
도 16의 (b)를 참조하면, 성분 선택부(1336)는 각 성분에 대해 스위즐 정보(src_x, src_y, src_z 또는 src_w)를 확인하고 00이면 x 성분, 01이면 y 성분, 10이면 z 성분, 11이면 w 성분으로 각 성분을 스위즐한다. 그리고 부호 결정부(1337)는 도 16의 (a)의 n 영역을 확인하여 1이면 부호 반전을 하여 최종 값을 결정한다.
상술한 바와 같이, 본 발명에 따른 임베디스 시스템, 정점 프로세싱 장치 및 디코더는 OpenGL ARB Extension 표준을 근거로 모바일 환경에 맞게 설계되고, 표준 스펙에 부합하는 명령어 집합을 정의하여 효과적인 기계어 코드의 인코딩과 해독이 가능하다.
모바일 환경을 위한 프로그래밍 가능한 파이프라인 구조는 관련 응용제품 생산을 위한 풍부한 소재와 발상의 전환 기회를 가져올 수 있으므로 응용 제품의 다양화와 고급화의 실현이 가능하다.
또한, 모바일 플랫폼 상에서 고급 3차원 그래픽스 기술을 사용한 컨텐츠 보급이 가능하여 관련 컨텐츠 및 미들웨어 산업이 더불어 성장됨과 동시에 관련 기술 인력 양성의 폭이 확대되어 고용 창출의 효과가 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (24)

  1. 명령어, 대상 오퍼런드(destination operand) 및 소스 오퍼런드(source operand)로 구성되는 정점 프로그램(vertex program)을 실행코드(op code) 필드, 대상 오퍼런드 필드, 소스 오퍼런드 필드 및 상수(constant) 필드로 구성되는 기계어 코드로 번역하는 번역 장치; 및
    상기 번역 장치로부터 인가되는 상기 기계어 코드를 읽고(fetch) 해독(decode)하여 상기 정점 프로그램에 따른 좌표 변환과 조명 효과를 나타내는 정점 프로세싱(vertex processing)을 수행하는 정점 프로세싱 장치를 포함하되,
    상기 정점 프로그램은 프로그래밍 가능한 쉐이더(programmable shader) 기반의 그래픽 연산을 지원하는 임베디드 시스템(embedded system).
  2. 제1항에 있어서,
    상기 기계어 코드는 64 비트로 구성되는 임베디드 시스템.
  3. 제2항에 있어서,
    상기 실행코드 필드는 상기 명령어를 구분하기 위한 6 비트 영역인 임베디드 시스템.
  4. 제2항에 있어서,
    상기 대상 오퍼런드 필드는 상기 명령어의 수행 결과를 저장할 레지스터의 종류, 인덱스 및 마스크 정보를 포함하는 9 비트 영역인 임베디드 시스템.
  5. 제2항에 있어서,
    상기 소스 오퍼런드 필드는 상기 명령어의 수행에 필요한 레지스터의 종류, 인덱스 및 스위즐(swizzle) 정보를 포함하는 15 비트 영역인 임베디드 시스템.
  6. 제5항에 있어서,
    상기 상수 필드는 상기 소스 오퍼런드 필드의 인덱스 정보와 조합하여 확장 인덱스 역할을 하는 3 비트 영역이고, 상기 인덱스 정보는 4 비트 영역인 임베디드 시스템.
  7. 제2항에 있어서,
    상기 기계어 코드는 상기 소스 오퍼런드 필드와 함께 확장 스위즐(extended swizzle) 연산을 제공하는 8 비트 영역인 확장 스위즐 필드를 더 포함하는 임베디드 시스템.
  8. 제2항에 있어서,
    상기 소스 오퍼런드 필드는 1 내지 3개 중 어느 하나인 임베디드 시스템.
  9. 정점 프로세싱(vertex processing)을 수행하는 정점 프로세싱 장치에 있어서,
    정점 데이터(vertex data)를 저장하는 속성 레지스터(attribute register);
    정점 프로세싱에 사용되는 상수 데이터를 저장하는 상수 레지스터(constant register);
    상기 정점 프로세싱 중 생성되는 임시 데이터를 저장하는 임시 레지스터(temporary register);
    상기 상수 레지스터에 저장된 상수 데이터의 상대적인 위치(offset)를 읽기 위해 기본주소(base address)를 저장하는 주소 레지스터(address register);
    상기 정점 프로세싱에 의해 연산 처리된 출력 데이터를 저장하는 출력 레지스터(output register); 및
    입력된 기계어 코드를 해석하여 명령어(instruction)를 순차적으로 하나씩 읽고(fetch) 해독(decode)하며 상기 정점 프로세싱을 수행(operate)하는 정점 프로세서(vertex processor)
    를 포함하는 정점 프로세싱 장치.
  10. 제9항에 있어서,
    상기 속성 레지스터, 상기 상수 레지스터, 상기 임시 레지스터 및 상기 출력 레지스터는 4개의 실수 저장 공간으로 구성되는 정점 프로세싱 장치.
  11. 제9항에 있어서,
    상기 정점 데이터는 정점의 좌표, 주색상(primary color), 부색상(secondary color), 법선 벡터, 정점 가중치, 안개 좌표 및 텍스처 좌표의 속성 데이터를 포함하는 정점 프로세싱 장치.
  12. 제9항에 있어서,
    상기 속성 레지스터의 수는 16개 이상인 정점 프로세싱 장치.
  13. 제9항에 있어서,
    상기 상수 레지스터의 수는 96개 이상인 정점 프로세싱 장치.
  14. 제9항에 있어서,
    상기 임시 레지스터의 수는 12개 이상인 정점 프로세싱 장치.
  15. 제9항에 있어서,
    상기 출력 레지스터의 수는 13개 이상인 정점 프로세싱 장치.
  16. 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는, 명령어, 대상 오퍼런드 및 소스 오퍼런드로 구성되는 정점 프로그램이 번역된 실행코드 필드, 대상 오퍼런드 필드, 소스 오퍼런드 필드 및 상수 필드로 구성되는 기계어 코드를 읽고 해독하는 디코더(decoder)에 있어서,
    상기 실행코드 필드로부터 상기 명령어의 종류를 해석하는 실행코드 필드 해독부;
    상기 대상 오퍼런드 필드로부터 상기 명령어의 실행 결과를 저장하는 레지스터를 판독하는 대상 오퍼런드 필드 해독부; 및
    상기 소스 오퍼런드 필드로부터 상기 명령어의 실행을 위한 피연산자가 되는 레지스터를 판독하는 소스 오퍼런드 필드 해독부를 포함하되,
    상기 대상 오퍼런드 필드 해독부는
    상기 실행 결과를 저장할 레지스터의 종류를 결정하는 종류 결정부와,
    상기 종류 결정부에서 결정된 종류의 레지스터들 중 상기 실행 결과를 저장할 레지스터의 인덱스를 결정하는 인덱스 결정부와, 그리고
    상기 레지스터의 성분(component) 중 업데이트될 성분을 선택하는 성분 선택부를 포함하며,
    상기 레지스터는 각각 실수값을 가지는 4개의 성분을 가지는 디코더.
  17. 삭제
  18. 제16항에 있어서,
    상기 종류 결정부에 의해 결정되는 레지스터의 종류는 임시 레지스터 또는 출력 레지스터인 디코더.
  19. 제16항에 있어서,
    상기 소스 오퍼런드 필드 해독부는
    상기 피연산자에 해당하는 레지스터의 종류를 결정하는 종류 결정부;
    상기 종류 결정부에서 결정된 종류의 레지스터들 중 저장된 성분을 읽어올 레지스터의 인덱스를 결정하는 인덱스 결정부;
    상기 피연산자에 해당하는 레지스터의 각 성분 중 연산에 필요한 성분의 순서를 결정하여 선택하는 성분 선택부; 및
    상기 각 성분의 부호 반전 여부를 결정하는 부호 결정부를 포함하되,
    상기 피연산자에 해당하는 레지스터는 각각 실수값을 가지는 4개의 성분을 가지는 디코더.
  20. 제16항에 있어서,
    상기 소스 오퍼런드 필드 해독부는 상기 소스 오퍼런드 필드 및 선택된 상기 소스 오퍼런드 필드 이외의 소스 오퍼런드 필드 중 하나에 포함된 확장 스위즐(extended swizzle) 필드를 조합하여 해독하되,
    상기 확장 스위즐 필드는 부호 반전 여부를 결정하는 부호 반전 필드 및 확장 스위즐 연산을 결정하는 스위즐 확장 필드를 가지는 디코더.
  21. 제20항에 있어서,
    상기 소스 오퍼런드 필드 해독부는
    상기 피연산자에 해당하는 레지스터의 종류를 결정하는 종류 결정부;
    상기 종류 결정부에서 결정된 종류의 레지스터들 중 저장된 성분을 읽어올 레지스터의 인덱스를 결정하는 인덱스 결정부;
    상기 스위즐 확장 필드로부터 상기 피연산자에 해당하는 레지스터의 각 성분의 값이 미리 정해진 값인지 다른 성분의 값인지를 결정하는 스위즐 결정부;
    상기 스위즐 결정부의 결정 결과에 따라 연산에 필요한 성분값을 결정하여 선택하는 성분 선택부; 및
    상기 각 성분의 부호 반전 여부를 결정하는 부호 결정부를 포함하되,
    상기 피연산자에 해당하는 레지스터는 각각 실수값을 가지는 4개의 성분을 가지고, 상기 미리 정해진 값은 0 또는 1인 디코더.
  22. 제21항에 있어서,
    상기 소스 오퍼런드 필드 해석부의 성분 선택부는 상기 피연산자에 해당하는 레지스터의 각 성분 중 연산에 필요한 성분의 순서를 결정하여 선택하는 디코더.
  23. 제19항 또는 제21항 중 어느 한 항에 있어서,
    상기 소스 오퍼런드 필드 해석부의 종류 결정부에 의해 결정되는 레지스터의 종류는 임시 레지스터 또는 속성 레지스터인 디코더.
  24. 제19항 또는 제21항 중 어느 한 항에 있어서,
    상기 소스 오퍼런드 필드 해석부의 종류 결정부에 의해 결정되는 레지스터의 종류는 상수 레지스터이고,
    상기 소스 오퍼런드 필드 해석부의 인덱스 결정부는 상기 상수 필드와 조합하여 상기 상수 레지스터의 확장 인덱스를 결정하는 디코더.
KR1020050128564A 2005-12-23 2005-12-23 임베디드 시스템, 정점 프로세싱 장치 및 디코더 KR100817920B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050128564A KR100817920B1 (ko) 2005-12-23 2005-12-23 임베디드 시스템, 정점 프로세싱 장치 및 디코더

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050128564A KR100817920B1 (ko) 2005-12-23 2005-12-23 임베디드 시스템, 정점 프로세싱 장치 및 디코더

Publications (2)

Publication Number Publication Date
KR20070067347A KR20070067347A (ko) 2007-06-28
KR100817920B1 true KR100817920B1 (ko) 2008-03-31

Family

ID=38366021

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050128564A KR100817920B1 (ko) 2005-12-23 2005-12-23 임베디드 시스템, 정점 프로세싱 장치 및 디코더

Country Status (1)

Country Link
KR (1) KR100817920B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8952962B2 (en) 2011-09-14 2015-02-10 Samsung Electronics Co., Ltd. Graphics processing method and apparatus using post fragment shader

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0895780A (ja) * 1994-09-20 1996-04-12 Nec Corp 命令コード符号化方式
JPH1185506A (ja) * 1997-09-11 1999-03-30 Fujitsu Ltd 複数条件コード処理機能を有するデータ処理装置
KR20020032256A (ko) * 2000-10-26 2002-05-03 윤지녕 통합 임베디드 시스템 및 이의 구현 방법
US20030046516A1 (en) * 1999-01-27 2003-03-06 Cho Kyung Youn Method and apparatus for extending instructions with extension data of an extension register
KR20040086481A (ko) * 2002-03-08 2004-10-08 일렉트로닉 아트 아이엔씨. 애셋 렌더링의 쉐더 드리븐 컴플리에이션을 실행하는시스템들 및 방법들
KR20050015186A (ko) * 2003-08-04 2005-02-21 삼성전자주식회사 명령어 코드 변환방법 및 장치
US20050243094A1 (en) * 2004-05-03 2005-11-03 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0895780A (ja) * 1994-09-20 1996-04-12 Nec Corp 命令コード符号化方式
JPH1185506A (ja) * 1997-09-11 1999-03-30 Fujitsu Ltd 複数条件コード処理機能を有するデータ処理装置
US20030046516A1 (en) * 1999-01-27 2003-03-06 Cho Kyung Youn Method and apparatus for extending instructions with extension data of an extension register
KR20020032256A (ko) * 2000-10-26 2002-05-03 윤지녕 통합 임베디드 시스템 및 이의 구현 방법
KR20040086481A (ko) * 2002-03-08 2004-10-08 일렉트로닉 아트 아이엔씨. 애셋 렌더링의 쉐더 드리븐 컴플리에이션을 실행하는시스템들 및 방법들
KR20050015186A (ko) * 2003-08-04 2005-02-21 삼성전자주식회사 명령어 코드 변환방법 및 장치
US20050243094A1 (en) * 2004-05-03 2005-11-03 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8952962B2 (en) 2011-09-14 2015-02-10 Samsung Electronics Co., Ltd. Graphics processing method and apparatus using post fragment shader

Also Published As

Publication number Publication date
KR20070067347A (ko) 2007-06-28

Similar Documents

Publication Publication Date Title
US10866990B2 (en) Block-based lossless compression of geometric data
JP4608510B2 (ja) 単一の半導体プラットフォームで支持される変換、ライティング、ラスター化システム
US10176621B2 (en) Using compute shaders as front end for vertex shaders
US8154554B1 (en) Unified assembly instruction set for graphics processing
US6891544B2 (en) Game system with graphics processor
US20180336658A1 (en) Scheme for compressing vertex shader output parameters
CN110097625B (zh) 片段着色器执行顶点着色器计算
CN108475441B (zh) 光线追踪期间的详细级别选择
KR20020015973A (ko) 그래픽 시스템용 재순환 쉐이드 트리 블렌더
CN108701367B (zh) 单遍次包围体阶层光栅化
JP4637640B2 (ja) 図形描画装置
TWI720981B (zh) 用於處理需要相加數個乘法結果之指令的方法、設備和非暫態電腦可讀取媒體
US9990748B2 (en) Corner texel addressing mode
US7456838B1 (en) System and method for converting a vertex program to a binary format capable of being executed by a hardware graphics pipeline
KR20230010672A (ko) 데이터 압축의 방법 및 장치
KR100817920B1 (ko) 임베디드 시스템, 정점 프로세싱 장치 및 디코더
KR100791478B1 (ko) 정점 처리를 위한 인코딩 장치, 디코딩 장치 및 그 방법
KR100788500B1 (ko) 다단 파이프라인 구조의 정점 처리 장치 및 그 방법
CA2298337C (en) Game system with graphics processor
KR102687111B1 (ko) 양자화 및 인터벌 표현들을 갖는 광선 교차 테스트
Doggett Programmability features of graphics hardware
KR100696198B1 (ko) 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는임베디드 시스템
KR20240116676A (ko) 양자화 및 인터벌 표현들을 갖는 광선 교차 테스트
KR20230043717A (ko) 양자화 및 인터벌 표현들을 갖는 광선 교차 테스트
Kim et al. Programmable vertex processing unit for mobile game development

Legal Events

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

Payment date: 20130326

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150302

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180226

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190225

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20200225

Year of fee payment: 13