KR20090075530A - Shader processor, method for processing dual phase instruction - Google Patents
Shader processor, method for processing dual phase instruction Download PDFInfo
- Publication number
- KR20090075530A KR20090075530A KR1020080001419A KR20080001419A KR20090075530A KR 20090075530 A KR20090075530 A KR 20090075530A KR 1020080001419 A KR1020080001419 A KR 1020080001419A KR 20080001419 A KR20080001419 A KR 20080001419A KR 20090075530 A KR20090075530 A KR 20090075530A
- Authority
- KR
- South Korea
- Prior art keywords
- unit
- phase
- command
- instruction
- instructions
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000009977 dual effect Effects 0.000 title claims abstract description 15
- 230000008569 process Effects 0.000 claims abstract description 11
- 238000003672 processing method Methods 0.000 claims abstract description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
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)
- Executing Machine-Instructions (AREA)
Abstract
Description
본 발명은 쉐이더 프로세서에 관한 것으로, 보다 상세하게 듀얼 페이지 명령을 처리할 수 있는 3차원 그래픽스 쉐이더 프로세서에 관한 것이다.The present invention relates to a shader processor, and more particularly to a three-dimensional graphics shader processor capable of processing dual page instructions.
실시간 3차원 그래픽스 분야는 하드웨어의 개선과 활용의 증가에 따라서 매우 빠른 속도로 발전하고 있다. 3차원 그래픽스는 많은 양의 데이터를 이용하여 복잡한 연산을 수행한다. 예전에는 CPU에서 구현하던 기능을 그래픽 하드웨어로 넘겨줌으로써 성능을 높이고 CPU는 그래픽 이외의 다른 작업에 몰두할 수 있게 되었다. The real-time three-dimensional graphics field is developing at a very fast pace as hardware improvements and usage increases. Three-dimensional graphics use a large amount of data to perform complex operations. By transferring the functions that were previously implemented on the CPU to the graphics hardware, the performance is improved and the CPU can concentrate on tasks other than graphics.
일반적으로 3차원 그래픽스의 가속을 위해 그래픽 연산만을 전담하여 처리하는 그래픽 프로세서 유닛(Graphics Processor Unit, 이하 GPU라 한다)을 사용한다. GPU는 고정 파이프라인(Fixed pipeline) 형태의 변환 및 조명처리 프로세서(Tranform & Lighting processor)나 래스터라이저(Rasterizer), 쉐이더 등의 다양한 기능별 가속 유닛으로 구성된다. In general, a graphics processor unit (hereinafter referred to as a GPU) which is dedicated to processing graphics operations for acceleration of 3D graphics is used. The GPU consists of various functional acceleration units, such as fixed pipeline transform and lighting processors, rasterizers, and shaders.
이 중 쉐이더(Shader)는 사용자에게 GPU에서 수행될 연산을 프로그램 할 수 있는 환경을 제공한다. 일반적으로 렌더링(rendering)이란 그림자나 색상과 농도의 변화 등과 같은 3차원 질감을 넣음으로써 컴퓨터 그래픽에 사실감을 추가하는 공정을 가리키고, 쉐이더는 이러한 공정에 물체와 빛 사이의 관계를 가미하는 것으로 사용자의 의도에 따라 다양한 효과를 처리할 수 있도록 한다. 따라서, 쉐이더 옵션을 활성화시킨다면 질감 가속을 통해 보다 사실적인 그래픽 이미지를 감상할 수 있게 된다.Among these, the shader provides the user with an environment in which to program operations to be performed on the GPU. In general, rendering refers to the process of adding realism to computer graphics by incorporating three-dimensional textures, such as shadows or changes in color and density, and shaders add the relationship between objects and light to these processes. This allows you to handle various effects. Therefore, if you enable the shader option, texture acceleration will give you a more realistic graphical image.
쉐이더의 기능 및 고수준 언어(High level language), 어셈블리 언어(Assembly language), 구조적인 특징 등이 3차원 그래픽스 프로그래밍 인터페이스 표준인 Direct3D 와 OpenGL(Open Graphics Library)에 정의되어 있다. Direct3D 의 정점 쉐이더 모델 2.0 버전과 픽셀 쉐이더 모델 2.x 버전에서는 정적 흐름 제어(Static Flow Control) 기능을 지원하고, 정점 쉐이더 모델 2.x 버전과 픽셀 쉐이더 모델 3.0 버전부터는 동적 흐름 제어(Dynamic Flow Control) 기능, 루프(loop) 기능 및 브랜치(branch) 기능을 지원한다. Shader functionality, high level language, assembly language, and structural features are defined in the 3D graphics programming interface standards Direct3D and OpenGL (Open Graphics Library). Vertex Shader Model 2.0 and Pixel Shader Model 2.x versions of Direct3D support Static Flow Control, and Dynamic Flow Control from Vertex Shader Model 2.x and Pixel Shader Model 3.0 versions. ), Loop and branch functions.
그러나, 종래에는 쉐이더를 단일 명령 복수 데이터 방식(SIMD: Single Instruction Multiple Data architecture) 방식으로 처리하여 연산기에 대한 낭비가 심한 문제점이 있었다.However, in the related art, the shader is processed in a single instruction multiple data architecture (SIMD) scheme, which causes a lot of waste for an operator.
본 발명은 듀얼 페이즈 방식으로 쉐이더 명령을 처리할 수 있는 쉐이더 프로 세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.The present invention provides a shader processor and a dual phase instruction processing method capable of processing shader instructions in a dual phase manner.
또한, 본 발명은 루프 명령 및 브랜치 명령을 포함하여 쉐이더 모델 3.0 및 OpenGL-ES 2.0을 지원할 수 있는 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.The present invention also provides a shader processor and dual phase instruction processing method capable of supporting shader model 3.0 and OpenGL-ES 2.0 including loop instructions and branch instructions.
또한, 본 발명은 n개의 레지스터를 그룹화하여 명령들을 융통성있게 처리할 수 있는 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.The present invention also provides a shader processor and a dual phase instruction processing method capable of flexibly processing instructions by grouping n registers.
또한, 본 발명은 최대 2 종류의 명령을 동시에 수행되는 산술논리연산장치를 공유할 수 있는 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.The present invention also provides a shader processor and a dual phase instruction processing method capable of sharing an arithmetic logic unit that simultaneously executes up to two kinds of instructions.
또한, 본 발명은 각 명령을 하나 이상의 유닛 명령어들로 재구성할 수 있는 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.The present invention also provides a shader processor and a dual phase instruction processing method capable of reconstructing each instruction into one or more unit instructions.
본 발명의 일 측면에 따르면, 명령어를 페이즈 단위로 재구성하여 n개의 페이즈 명령을 동시에 연산할 수 있는 쉐이더 프로세서가 제공된다.According to an aspect of the present invention, there is provided a shader processor capable of simultaneously calculating n phase instructions by reconfiguring the instructions in phase units.
본 발명의 일 실시예에 따르면, 쉐이더 프로세서에 있어서, 하나 이상의 유닛 명령을 인출하는 인출부; 상기 k개의 유닛 명령을 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성하여 출력하는 명령 구성부; 상기 페이즈 명령에 따른 소스 데이터를 레지스터부로부터 독출하여 출력하는 n(상기 n은 2이상의 자연수)개의 페이즈 처리부; 및 m(임의의 자연수)개의 연산기를 구비하며, 상기 각 페이즈 처리부로부터 상기 소스 데이터를 각각 입력받아 미리 정해진 방법에 따라 각각 연산을 수행하여 결과 데이터를 각각 출력하는 산술논리연산부를 포함하는 쉐이더 프로세서가 제공될 수 있다.According to an embodiment of the present invention, a shader processor includes: an extractor for extracting one or more unit instructions; An instruction constructing unit configured to analyze the k unit instructions, divide them into phase units, and generate and output one or more phase instructions; N phase processing units (where n is a natural number of 2 or more) for reading and outputting source data according to the phase command from a register unit; And an arithmetic logic operation unit having m (random natural numbers) operators, each receiving the source data from each phase processing unit, performing arithmetic operations according to a predetermined method, and outputting result data respectively. Can be provided.
상기 산술논리연산부는 상기 n개의 페이즈 처리부에 의해 상기 m개의 연산기가 공유되며, 동일 클럭에 상응하여 상기 n개의 페이즈 처리부로부터 n개의 페이즈 명령에 따른 n개의 소스 데이터를 입력받아 각각 연산을 수행하여 n개의 연산 결과를 출력할 수 있다.The arithmetic logic unit shares the m operators by the n phase processors, receives n source data according to the n phase instructions from the n phase processors, and performs n operations according to the same clock. Results of operations can be output.
상기 유닛 명령은 제1 상태 비트, 제2 상태 비트 및 p(임의의 자연수)비트의 명령 비트로 구성될 수 있다.The unit command may consist of a first status bit, a second status bit, and a command bit of p (any natural number) bit.
상기 제1 상태 비트는 유닛 명령의 확장 정보를 포함하며, 상기 제2 상태 비트는 유닛 명령의 페이즈 구분 정보를 포함할 수 있다.The first status bit may include extension information of a unit command, and the second status bit may include phase division information of a unit command.
상기 명령 구성부는 입력된 상기 유닛 명령들의 제1 상태 비트를 분석하여 연산 명령의 크기 또는 개수를 결정하며, 상기 결정된 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 하나 이상의 페이즈 명령을 생성하여 출력할 수 있다.The instruction configuration unit analyzes the first status bits of the input unit instructions to determine the size or number of operation instructions, and analyzes the second status bits of each unit instruction included in the determined operation instruction to generate one or more phase instructions. Can be generated and printed.
상기 명령 구성부는 입력된 상기 유닛 명령들 중 대상 유닛 명령의 제1 상태 비트가 제1 비트값이면, 상기 대상 유닛 명령까지를 상기 연산 명령으로 결정하며, 상기 연산 명령에 포함된 유닛 명령의 제2 상태 비트가 제2 비트값이면 제1 페이즈 명령으로 결정하며, 상기 제2 상태 비트가 제3 비트값이면 제2 페이즈 명령으로 결정할 수 있다.If the first status bit of the target unit command among the input unit commands is a first bit value, the instruction configuration unit determines up to the target unit command as the operation command, and the second of the unit command included in the operation command. If the status bit is a second bit value, it may be determined as a first phase command. If the status bit is a third bit value, it may be determined as a second phase command.
상기 명령 구성부는 상기 프로그램 카운터를 상기 대상 유닛 명령의 후속 어드레스를 이용하여 갱신하되, 상기 인출부는 상기 프로그램 카운터를 참조하여 유닛 명령어들을 인출할 수 있다.The instruction constructing unit may update the program counter using a subsequent address of the target unit instruction, and the drawing unit may fetch unit instructions with reference to the program counter.
상기 페이즈 처리부는 제1 페이즈 처리부 및 제2 페이즈 처리부를 포함하며, 상기 명령 구성부는 상기 생성된 페이즈 명령이 분기, 간접 주소 및 루프 명령 중 어느 하나이면 상기 제2 페이즈 처리부로 출력할 수 있다.The phase processor may include a first phase processor and a second phase processor, and the command component may output the generated phase command to the second phase processor if the generated phase command is any one of a branch, an indirect address, and a loop command.
본 발명의 다른 측면에 따르면, 쉐이더 프로세서가 듀얼 페이즈 방식으로 명령을 처리하는 방법이 제공된다. According to another aspect of the present invention, a method is provided in which a shader processor processes instructions in a dual phase manner.
본 발명의 일 실시예에 따르면, 쉐이더 프로세서가 듀얼 페이즈 방식으로 명령을 처리하는 방법에 있어서, (a) 하나 이상의 유닛 명령을 인출하는 단계; (b) 상기 인출된 유닛 명령들을 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성하는 단계; (c) 상기 각 페이즈 명령에 따른 소스 데이터를 레지스터부로부터 독출하여 출력하는 단계; 및 (d) 상기 소스 데이터를 각각 입력받아 미리 정해진 방법에 따라 각각 연산을 수행하여 연산 결과를 출력하되, 상기 (c) 단계는 생성된 페이즈 명령의 개수에 상응하여 미리 정해진 일정 시간 간격으로 상기 레지스터부에 접근하여 각각의 페이즈 명령에 따른 소스 데이터를 각각 독출하여 출력하는 것을 특징으로 하는 명령 처리 방법이 제공될 수 있다.According to an embodiment of the present invention, a method in which a shader processor processes an instruction in a dual phase manner, the method comprising: (a) fetching one or more unit instructions; (b) analyzing the retrieved unit instructions and dividing them into phase units to generate one or more phase instructions; (c) reading and outputting source data according to each phase command from a register unit; And (d) receiving each of the source data and performing arithmetic operations according to a predetermined method, respectively, and outputting arithmetic results, wherein step (c) is performed at predetermined time intervals corresponding to the number of generated phase instructions. An instruction processing method may be provided that accesses a unit and reads and outputs source data according to each phase command.
상기 유닛 명령은 제1 상태 비트, 제2 상태 비트 및 p(임의의 자연수)비트의 명령 비트로 구성된다.The unit command consists of a first status bit, a second status bit and a command bit of p (any natural number) bit.
상기 제1 상태 비트는 유닛 명령의 확장 정보를 포함하며, 상기 제2 상태 비트는 유닛 명령의 페이즈 구분 정보를 포함할 수 있다.The first status bit may include extension information of a unit command, and the second status bit may include phase division information of a unit command.
상기 (b) 단계는, 상기 인출된 유닛 명령들의 제1 상태 비트를 분석하여 연산 명령의 크기 또는 개수를 결정하는 단계; 및 상기 결정된 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 하나 이상의 페이즈 명령을 생성하는 단계를 포함할 수 있다.The step (b) may include analyzing a first status bit of the retrieved unit instructions to determine a size or number of arithmetic instructions; And analyzing the second status bit of each unit command included in the determined operation command to generate one or more phase commands.
상기 대상 유닛 명령의 후속 어드레스를 이용하여 프로그램 카운트를 갱신하는 단계를 더 포함하되, 상기 (a) 단계는 상기 프로그램 카운터를 참조하여 상기 유닛 명렁을 인출할 수 있다.The method may further include updating a program count using a subsequent address of the target unit command, wherein step (a) may refer to the program counter with reference to the program counter.
본 발명에 따른 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공함으로써, 듀얼 페이즈 방식으로 명령어를 처리할 수 있는 효과가 있다.By providing the shader processor and the dual phase instruction processing method according to the present invention, there is an effect that can process the instruction in a dual phase method.
또한, 본 발명은 루프 명령 및 브랜치 명령을 포함하여 쉐이더 모델 3.0 및 OpenGL-ES 2.0을 지원할 수 있는 효과도 있다.In addition, the present invention has the effect of supporting shader model 3.0 and OpenGL-ES 2.0, including loop instructions and branch instructions.
또한, 본 발명은 n개의 레지스터를 그룹화하여 명령들을 융통성있게 처리할 수 있는 효과도 있다.In addition, the present invention also has the effect of being able to flexibly process instructions by grouping n registers.
또한, 본 발명은 최대 2 종류의 명령을 동시에 수행되는 산술논리연산장치를 공유할 수 있는 효과도 있다.In addition, the present invention also has the effect of sharing the arithmetic logic unit that can simultaneously execute up to two types of instructions.
또한, 본 발명은 각 명령을 하나 이상의 유닛 명령으로 재구성할 수 있는 효 과도 있다.The present invention also has the effect of reconstructing each instruction into one or more unit instructions.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.As the invention allows for various changes and numerous embodiments, particular embodiments will be illustrated in the drawings and described in detail in the written description. However, this is not intended to limit the present invention to specific embodiments, it should be understood to include all transformations, equivalents, and substitutes included in the spirit and scope of the present invention. In the following description of the present invention, if it is determined that the detailed description of the related known technology may obscure the gist of the present invention, the detailed description thereof will be omitted.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. Terms such as first and second may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, the terms "comprise" or "have" are intended to indicate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, and one or more other features. It is to be understood that the present invention does not exclude the possibility of the presence or the addition of numbers, steps, operations, components, components, or a combination thereof.
이하, 본 발명의 실시예를 첨부한 도면들을 참조하여 상세히 설명하기로 한다. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.
이하에서 설명되는 본 발명에 따른 쉐이더 프로세서(100)는 동일 클럭에 상응하여 최대 2개의 명령을 동시에 처리하여 각각의 연산 결과를 출력할 수 있다. 이하, 본 발명에 따른 쉐이더 프로세서(100)의 각각의 내부 기능 블록에 대해 도 1을 참조하여 상세히 설명하기로 한다.The
도 1은 본 발명의 일 실시예에 따른 쉐이더 프로세서의 내부 기능 블록을 예시한 도면이며, 도 2는 본 발명의 일 실시예에 따른 배타적 페어링 규칙을 설명하기 위한 예시도면이고, 도 3은 본 발명의 일 실시예에 따른 연산 명령의 형태를 예시한 도면이며, 도 4는 본 발명의 일 실시예에 따른 유닛 명령어들의 인출 과정을 설명하기 위해 예시한 도면이다.1 is a diagram illustrating an internal functional block of a shader processor according to an embodiment of the present invention, FIG. 2 is an exemplary diagram for explaining an exclusive pairing rule according to an embodiment of the present invention, and FIG. 3 is an embodiment of the present invention. 4 is a diagram illustrating a form of an operation instruction according to an embodiment of the present invention, and FIG. 4 is a diagram illustrating a drawing process of unit instructions according to an embodiment of the present invention.
도 1에서 예시된 바와 같이, 본 발명에 따른 쉐이더 프로세서(100)는 인출부(110), 명령 구성부(115), 레지스터부(120), 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130) 및 산술논리연산부(135)를 포함하여 구성된다. As illustrated in FIG. 1, the
본 명세서에서 쉐이더 프로세서(100)는 복수의 유닛 명령을 인출하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성한 후 일정 시간 간격으로 레지스터부(120)에 접근하여 소스 데이터를 각각 독출할 수 있다. 그리고, 쉐이더 프로세서(100)는 n(임의의 자연수)개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))를 구비하며, 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))는 하나의 산술논리연산부(135)를 공유하는 구조이다. 따라서, 본 발명에 따른 쉐이더 프로세서(100)는 n(임의의 자연수)개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))가 하나의 산술논리연산부(135)를 공유하여 동일 클럭(또는 제어 신호)에 따라 각각의 페이즈 명령에 상응하는 연산을 수행하여 연산 결과를 각각 출력할 수 있다.In the present specification, the
이와 같이, n개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))에 의해 산술논리연산부(135)가 공유되어 각각의 연산을 수행하기 위해서는 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))에 의해 처리되는 각 페이즈 명령이 당해 산술논리연산부(135)의 동일한 연산기를 사용하지 않아야만 한다.As described above, the
이하, 본 명세서에서 n개의 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))로 입력되는 각각의 명령을 페이즈 명령이라 칭하기로 한다. 페이즈 명령에 대해서는 하기에서 관련 도면을 참조하여 보다 상세히 설명하기로 한다.Hereinafter, each command input to the n processing units (for example, the first
즉, 제1 페이즈 처리부(125)로 입력되는 페이즈 명령을 제1 페이즈 명령이라 칭하며, 제2 페이즈 처리부(130)로 입력되는 페이즈 명령을 제2 페이즈 명령이라 칭하기로 한다.That is, a phase command input to the
본 명세서에서 동일 클럭 또는 제어 신호에 상응하여 산술논리연산부(135)를 통해 연산되는 n개의 페이즈 명령이 산술논리연산부(135)의 동일한 연산기를 중복 사용하지 않도록 구성되는 규칙을 "배타적 페이링 규칙(exclusive paring rules)"이라 정의하기로 한다.In the present specification, a rule configured such that n phase instructions calculated through the
도 2를 참조하면, 210a 및 210b의 제1 페이즈 명령(즉, mul a b c) 및 제2 페이즈 명령(즉, add d e f)는 산술논리연산부(135)의 곱셈기와 덧셈기를 각각 사용하므로 동일 클럭에 상응하여 각각의 페이즈 명령에 대한 연산을 수행할 수 있음을 알 수 있다. 즉, 210a 및 210b에 예시된 각각의 페이즈 명령은 산술논리연산부(135)의 동일한 연산기의 중복 사용 없이 연산이 수행될 수 있다.Referring to FIG. 2, the first phase instruction (ie, mul abc) and the second phase instruction (ie, add def) of 210a and 210b correspond to the same clock since they use multipliers and adders of the
하기에서 보다 상세히 설명되겠지만, 산술논리연산부(135)는 각각의 컴포넌트(예를 들어, x y z w)에 상응하는 각각의 연산기를 구비하고 있다. 따라서, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)에 의해 처리되는 각각의 페이즈 명령은 각 컴포넌트별로 동일한 연산기를 중복 사용하지 않도록 구성되면 동일 클럭에 상응하여 산술논리연산부(135)에서 연산을 수행할 수 있다.As will be described in more detail below, the
220a 및 220b에 예시된 제1 페이즈 명령(mul.x a b c, add.yz b c) 및 제2 페이즈 명령(add.xw d e f, mul.yzw e f)의 경우, 각각 곱셈기 및 덧셈기를 이용하나 컴포넌트가 상이한 것을 알 수 있다. 따라서, 제1 페이즈 명령 및 제2 페이즈 명령는 산술논리연산부(135)의 동일한 연산기를 중복 사용하지 않으므로 동일 클럭에 상응하여 연산을 수행할 수 있음을 알 수 있다. In the case of the first phase instruction (mul.xabc, add.yz bc) and the second phase instruction (add.xw def, mul.yzw ef) illustrated in 220a and 220b, a multiplier and an adder are used, but the components are different. Able to know. Accordingly, it can be seen that the first phase command and the second phase command do not use the same operator of the arithmetic
230a 및 230b에 예시된 제1 페이즈 명령(add.xyz a b c) 및 제2 페이즈 명령(add.x d e f)의 경우 동일한 컴포넌트의 연산기(즉 x 컴포넌트의 덧셈기)가 중복사용되어야 하므로 동일 클럭에 상응하여 산술논리연산부(135)에 의해 어느 하나 의 페이즈 명령만 연산됨을 알 수 있다. In the case of the first phase instruction (add.xyz abc) and the second phase instruction (add.xdef) illustrated in 230a and 230b, the arithmetic unit corresponding to the same clock is used because the operator of the same component (that is, the adder of the x component) must be used repeatedly. It can be seen that only one phase instruction is calculated by the
또한, 240a에 예시된 페이즈 명령(RPC 명령)에 대한 연산기는 산술논리연산부(135)에서 하나만 구비되며, RPC 명령은 산술논리연산부(135)의 모든 영역을 공유하여 수행되므로 다른 명령과 동시 실행이 불가능하다. In addition, only one operator for the phase instruction (RPC instruction) illustrated in 240a is provided in the arithmetic
또한, 250a 및 250b에 예시된 페이즈 명령(MOV 명령)은 각 컴퍼넌트(X, Y, Z, W) 연산기의 연산 결과의 데이터 패스를 사용한다. 따라서, MOV 명령은 산술논리연산부(135)에 실제 구비된 연산기가 없기 때문에 다른 명령어와는 달리 중복이 허용된다.In addition, the phase instruction (MOV instruction) illustrated in 250a and 250b uses the data path of the operation result of each component (X, Y, Z, W) operator. Accordingly, since the MOV instruction does not have an operator that is actually provided in the arithmetic
260a 및 260b를 참조하면 제1 페이즈 명령(branch 100) 및 제2 페이즈 명령(branch 200)의 경우 분기 명령의 경우 제어 흐름을 변경하는 명령으로 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130) 중 어느 하나에서 수행되어야만 한다. 본 명세서에서는 이해와 설명의 편의를 위해 분기 및 루프 명령과 같은 복잡 명령들은 제2 페이즈 처리부(130)를 통해서만 수행되는 것을 가정하여 설명하기로 한다.Referring to 260a and 260b, in the case of the first phase command (branch 100) and the second phase command (branch 200), the first
또한, 270b에 예시된 간접주소 명령(indirect)의 경우 피연산자에 어드레스가 포함되는 명령으로 레지스터부(120)를 n회 접근해서 소스 데이터를 독출해야만 한다. 따라서, 간접주소 명령의 경우 제1 페이즈 처리부(125)의 제어에 의해 제2 페이즈 처리부(130)에서 수행되어야만 한다. 이로 인해, 간접주소 명령의 경우 제1 페이즈 처리부(125)에서 수행되는 것으로 가정하여 설명하기로 한다.In addition, in the case of the indirect address command (indirect) illustrated in 270b, the
전술한 설명에 의해 본 발명에 따른 배타적 페어링 규칙에 대해서는 충분히 숙지가 되었을 것인바 다시 도 1을 참조하여 쉐이더 프로세서(100)의 내부 기능 블록에 대해 설명하기로 한다.Exemplary pairing rules according to the present invention will be fully understood by the foregoing description, and the internal functional blocks of the
이하, 본 명세서에서는 쉐이더 명령(예를 들어, MUL, ADD, BL, Call 등)이 최대 4개의 유닛 명령으로 재배열되어 있는 것을 가정하며, 쉐이더 프로세서(100)는 유닛 명령들을 인출하여 각각의 연산을 수행하는 것에 대해 설명하기로 한다. Hereinafter, in the present specification, it is assumed that shader instructions (for example, MUL, ADD, BL, Call, etc.) are rearranged into a maximum of four unit instructions, and the
쉐이더 프로세서(100)에서 쉐이더 명령어를 하나 이상의 유닛 명령어로 재배열하는 방법은 당업자에게는 자명한 사항이므로 이에 대한 별도의 설명은 생략하기로 한다.Since the method of rearranging the shader instructions into one or more unit instructions in the
다시 도 1을 참조하면, 인출부(110)는 프로그램 카운터(PC: program counter)를 참조하여 (n은 임의의 자연수)비트 단위의 유닛 명령들을 인출하여 명령 구성부(115)로 출력한다. 본 명세서에서는 쉐이더 명령이 128비트인 것을 가정하며, 하나의 쉐이더 명령은 최대 4개의 유닛 명령으로 구성되어 있는 것을 가정한다. 따라서, 인출부(110)는 프로그램 카운터를 참조하여 회당 4개의 유닛 명령을 인출하여 명령 구성부(115)로 출력한다. Referring again to FIG. 1, the
프로그램 카운터는 인출된 유닛 명령의 개수만큼 증가하며 다음 인출할 명령의 어드레스를 저장하고 있다. 현재 실행하는 명령이 분기 명령일 경우 분가 조건 판단 결과에 따라 프로그램 카운터의 어드레스가 변경된다. 이에 따라 분기 명령 다음에 변경되는 프로그램 카운터가 가리키는 어드레스에 상응하는 명령이 실행된다. 즉, 인출부(110)는 프로그램 카운터를 참조하여 현재 시점에(또는 클럭)에 인 출할 명령의 시작 어드레스를 획득할 수 있다. 이는 당업자에게는 자명한 사항이므로 이에 대한 별도의 설명은 생략하기로 한다.The program counter is incremented by the number of unit commands fetched and stores the address of the next instruction to be fetched. If the instruction to be executed is a branch instruction, the address of the program counter is changed according to the result of the discrimination condition determination. Accordingly, the instruction corresponding to the address indicated by the program counter changed after the branch instruction is executed. That is, the
이하, 본 명세서에서는 이해와 설명의 편의를 도모하기 위해 쉐이더 명령이 최대 4개의 유닛 명령으로 구성된 것을 가정하여 이를 중점으로 설명하나 4개 이상의 유닛 명령으로 구성될 수도 있음은 당연하다. 또한, 쉐이더 명령을 구성하는 유닛 명령의 개수가 상이해지는 경우 인출부(110)에서 회당 인출하는 유닛 명령의 개수가 상이해질 수 있음은 자명하다.In the following description, the shader instruction is assumed to be composed of up to four unit instructions for the purpose of convenience of understanding and description. In addition, when the number of unit instructions constituting the shader instruction is different, it is apparent that the number of unit instructions drawn out per unit by the
이해와 설명의 편의를 도모하기 위해 도 3을 참조하여 유닛 명령의 구조에 대해 간략하게 설명하기로 한다.For convenience of understanding and explanation, the structure of the unit instruction will be briefly described with reference to FIG. 3.
도 3에서 보여지는 바와 같이, 각 유닛 명령은 제1 상태 비트(310), 제2 상태 비트(315) 및 m(임의의 자연수)비트의 명령 비트(320)로 구성된다.As shown in FIG. 3, each unit command consists of a
제1 상태 비트(310)는 각 유닛 명령의 확장 여부를 나타내며, 제2 상태 비트(315)는 당해 유닛 명령이 포함되는 페이즈 명령의 소속 여부를 지시한다.The
예를 들어, 제1 상태 비트(310)가 제1 비트값(예를 들어, "0")이면, 당해 유닛 명령은 확장 명령인 것으로 인식되며, 제1 상태 비트(310)가 제2 비트값(예를 들어, "1")이면 당해 유닛 명령은 마지막 명령으로 인식된다. 이에 대해서는 하기에서 명령 구성부(115)에서 보다 상세히 설명하기로 한다.For example, if the
다시 도 1을 참조하면, 인출부(110)는 전술한 바와 같이 프로그램 카운터를 참조하여 복수의 유닛 명령어들을 인출하여 명령 구성부(115)로 출력한다.Referring again to FIG. 1, the
명령 구성부(115)는 인출부(110)를 통해 입력된 k(임의의 자연수)개의 유닛 명령을 분석하여 연산 명령의 개수 및 크기를 결정한다. 그리고, 명령 구성부(115)는 결정된 연산 명령을 분석하여 최대 n(임의의 자연수)개의 페이즈 명령을 생성하여 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))로 출력한다.The
본 명세서에서 연산 명령은 동일 클럭내에서 산술논리연산부(135)를 통해 동시에 연산 가능한 명령으로 정의하기로 한다.In the present specification, the operation instruction is defined as an instruction that can be operated simultaneously through the arithmetic
예를 들어, 명령 구성부(115)는 입력된 k개의 유닛 명령의 제1 상태 비트들을 분석하여 연산 명령의 크기 및 개수를 결정할 수 있다. For example, the
예를 들어, 도 4에 예시된 바와 같이, 프로그램 카운터의 어드레스가 "6"이라고 가정하자. 이와 같은 경우, 인출부(110)는 프로그램 카운터의 어드레스 "6"을 참조하여 해당 어드레스부터 4개의 유닛 명령을 인출하여 명령 구성부(115)로 출력한다. 여기서, 입력된 유닛 명령들의 제1 상태 비트가 410에 예시된 바와 같다고 가정하자. 명령 구성부(115)는 입력된 첫번째 유닛 명령의 제1 상태 비트가 제2 비트값인지를 비교한다. 첫번째 유닛 명령의 제1 상태 비트가 제1 비트값이므로, 명령 구성부(115)는 두번째 유닛 명령의 제1 상태 비트가 제2 비트값인지를 비교한다. 두번째 유닛 명령의 제1 상태 비트도 제1 비트값이므로 명령 구성부(115)는 세번째 유닛 명령의 제1 상태 비트가 제2 비트값인지를 비교한다. 명령 구성부(115)는 세번째 유닛 명령의 제1 상태 비트가 제2 비트값이므로 첫번째 유닛 명령부터 세번째 유닛 명령까지가 산술논리연산부(135)에 의해 동일 클럭내에서 연산 가능한 연산 명령인 것으로 결정한다. 그리고, 명령 구성부(115)는 세번째 유닛 명령의 후 속 어드레스(도 4의 경우, "9")를 이용하여 프로그램 카운터의 어드레스를 갱신한다. 이에 따라 인출부(110)는 다음 시점에 해당 어드레스(즉, "9")부터 4개의 유닛 명령을 인출할 수 있다.For example, assume that the address of the program counter is "6", as illustrated in FIG. In such a case, the
그리고, 명령 구성부(115)는 연산 명령의 크기 및 개수를 결정하고, 해당 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성한다.In addition, the
또한, 인출부(110)로부터 인출되는 유닛 명령의 개수가 4개라고 가정하자. 이와 같은 경우 연산 명령은 4가지 형태로 구성될 수 있다.In addition, suppose that the number of unit instructions withdrawn from the
즉, 도 3의 325 내지 340에 예시된 바와 같이, 연산 명령은 최소 하나의 유닛 명령으로 구성될 수도 있으며 최대 4개의 유닛 명령으로 구성될 수도 있다.That is, as illustrated in 325 to 340 of FIG. 3, the operation instruction may be composed of at least one unit instruction and may be composed of up to four unit instructions.
이하, 본 명세서에서는 이해와 설명의 편의를 도모하기 위해 하나의 페이즈 명령이 최대 2개의 유닛 명령으로 구성되는 것을 가정하여 이를 중점으로 설명하기로 한다.In the following description, it is assumed that one phase command is composed of a maximum of two unit commands in order to facilitate understanding and explanation.
또한, 명령 구성부(115)는 연산 명령에 포한된 각 유닛 명령의 제2 상태 비트가 제1 비트값이면 제1 페이즈 명령으로 인식하며 제2 상태 비트가 제2 비트값이면 제2 페이즈 명령으로 인식할 수 있다.In addition, the
다시, 도 1을 참조하면, 레지스터부(120)는 프로그램 카운터 및 복수의 소스 데이터들이 저장된다. 또한, 레지스터부(120)는 산술논리연산부(135)에 의해 연산된 연산 결과가 저장된다.Referring again to FIG. 1, the
본 명세서에서는 두개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130))를 포함하는 것을 가정하여 이를 중점으로 설명하기로 한다.In the present specification, it is assumed that two phase processing units (for example, the first
제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)는 입력된 각 페이즈 명령을 디코딩하여 해당 페이즈 명령에 상응하는 레지스터부(120)에 접속하여 상응하는 소스 데이터를 독출하여 출력하는 기능을 수행한다. 또한, 제2 페이즈 처리부(130)는 제1 페이즈 처리부(125)로부터 서브 명령이 입력되면, 해당 서브 명령에 상응하여 레지스터부(120)로부터 소스 데이터를 독출할 수도 있다. The
본 발명에 따른 레지스터부(120) 및 산술논리연산부(135)는 n개의 페이즈 처리부(제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130))에 의해 공유된다. 이로 인해, 명령 구성부(115)는 n개의 페이즈 명령이 생성되더라도 우선적으로 제1 페이즈 명령을 제1 페이즈 처리부(125)로 출력한 후 미리 정해진 일정 시간이 경과한 후 제2 페이즈 명령을 제2 페이즈 처리부(130)로 출력할 수 있다. 이로 인해, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)가 각각 레지스터부(120)에 접속 시점을 상이하다. 그러나, 산술논리연산부(135)를 통해 동일 클럭에 상응하여 각 페이즈 명령에 상응하는 연산을 수행하도록 하기 위해 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)는 동일 클럭에 상응하여 소스 데이터를 산술논리연산부(135)로 출력할 수도 있다. 이를 위해, 제1 페이즈 처리부(125)는 제2 페이즈 처리부(130)가 레지스터부(135)로부터 소스 데이터를 독출하기까지 일정 시간 동안 대기하도록 할 수도 있다.The
다른 예를 들어, 제1 페이즈 처리부(125)는 명령 구성부(115)로부터 연산 명 령에 대한 정보(예를 들어, 하나의 페이즈 명령인지 두개의 페이즈 명령인지에 대한 정보)를 페이즈 명령과 함께 입력받을 수도 있다. In another example, the first
즉, 제1 페이즈 처리부(125)는 연산 명령에 대한 정보를 입력받아 당해 연산 명령이 하나의 페이즈 명령으로 구성되었다고 인식되면, 제2 페이즈 처리부(130)의 동작 수행 여부에 상관없이 입력된 페이즈 명령에 따른 소스 데이터를 레지스터부(120)로부터 독출하여 산술논리연산부(135)로 출력하여 연산이 수행되도록 할 수 있다.That is, when the
그러나 만일 연산 명령이 두개의 페이즈 명령으로 구성되었다고 인식되면, 제1 페이즈 처리부(125)는 제2 페이즈 처리부(130)가 입력된 페이즈 명령에 따른 소스 데이터를 레짓스터부(120)로부터 독출할때까지 대기한 후 함께 소스 데이터를 산술논리연산부(135)로 출력하도록 제어할 수도 있다. 여기서, 제2 페이즈 처리부(130)는 소스 데이터의 독출이 완료되면, 제1 페이즈 처리부(125)로 제어 신호를 출력하여 독출 완료를 인식하도록 할 수도 있다.However, if it is recognized that the operation command is composed of two phase commands, the first
산술논리연산부(135)는 각각의 컴포넌트별로 m(임의의 자연수)의 연산기를 구비한다. 또한, 산술논리연산부(135)는 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)에 의해 공유된다. 즉, 산술논리연산부(135)는 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)로부터 동일 클럭에 상응하여 각각 제1 페이즈 명령 및 제2 페이즈 명령 중 하나 이상을 입력받을 수 있다. 그리고, 산술논리연산부(135)는 동일 클럭에 상응하여 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130))로부터 각각 소스 데이터를 입력받아 미리 정해진 연산을 수행하여 연산 결과를 출력할 수 있다.The arithmetic
도 5는 본 발명의 일 실시예에 따른 연산 명령에 따른 페이즈 명령의 구성을 예시한 도면이다. 5 is a diagram illustrating a configuration of a phase command according to an operation command according to an embodiment of the present invention.
도 5에서 보여지는 바와 같이, 연산 명령은 최대 4개의 유닛 명령으로 구성되어 있다. 510에 예시된 연산 명령 MUL_sat A, B, C는 하나의 유닛 명령으로 구성되어 있으므로, 제1 페이즈 처리부(125)에 의해 처리될 수 있다.As shown in FIG. 5, the operation instruction is composed of up to four unit instructions. Since the operation instructions MUL_sat A, B, and C illustrated in 510 are configured as one unit instruction, they may be processed by the
또한, 515에 예시된 연산 명령 ADD A, B, C는 두개의 유닛 명령으로 구성된 하나의 페이즈 명령이므로, 제1 페이즈 처리부(125)에 의해 처리될 수 있다.In addition, since the operation instructions ADD A, B, and C illustrated in 515 are one phase instruction composed of two unit instructions, they may be processed by the
그리고, 520에 예시된 연산 명령 ADD A, B[D.W], C는 하나의 ADDR 명령 및 하나의 덧셈 명령으로 구성될 수 있으므로, 두개의 페이즈 명령으로 구성하여 동시에 연산될 수 있음을 알 수 있다. In addition, since the operation instructions ADD A, B [D.W], and C illustrated in 520 may be configured with one ADDR instruction and one addition instruction, it may be understood that the operation instructions ADD A, B [D.W], and C may be simultaneously operated by configuring two phase instructions.
또한, 525의 연산 명령 ADD_predicate(E) A, B, C[D.w]는 2개의 페이즈 명령으로 구성될 수 있다. 즉, ADDR D.W 및 PREDZ E의 유닛 명령으로 구성된 제1 페이즈 명령과 ADD 명령으로 구성된 제2 페이즈 명령으로 구성하여 하나의 산술논리연산부(135)를 통해 동시에 연산을 수행하도록 할 수 있다.In addition, the operation instruction ADD_predicate (E) A, B, and C [D.w] of 525 may be composed of two phase instructions. That is, the first phase instruction composed of the ADDR D.W and PREDZ E unit instructions and the second phase instruction composed of the ADD instruction may be configured to simultaneously perform operations through one arithmetic
도 6은 본 발명의 일 실시예에 따른 쉐이더 프로세서가 임의의 명령에 대한 연산을 수행하는 방법을 나타낸 순서도이다. 이하에서 설명되는 각각의 단계는 쉐이더 프로세서(100)의 각각의 내부 구성 요소에 의해 수행되어지나 이해와 설명의 편의를 도모하기 위해 쉐이더 프로세서(100)로 통칭하여 설명하기로 한다.6 is a flowchart illustrating a method in which a shader processor performs an operation on an arbitrary instruction according to an embodiment of the present invention. Each step described below is performed by each internal component of the
단계 610에서 쉐이더 프로세서(100)는 프로그램 카운터를 참조하여 k(임의의 자연수)개의 유닛 명령을 인출한다.In
단계 615에서 쉐이더 프로세서(100)는 인출된 k개의 유닛 명령을 분석하여 연산 명령의 크기 또는 개수를 결정하며, 결정된 연산 명령을 분석하여 하나 이상의 페이즈 명령을 생성한다.In
연산 명령의 크기 또는 개수를 결정하는 방법 및 당해 연산 명령을 분석하여 페이즈 단위로 구분하여 하나 이상의 페이즈 명령을 생성하는 방법은 전술한 바와 동일하므로 이에 대한 중복되는 설명은 생략하기로 한다.The method of determining the size or number of operation instructions and the method of analyzing the operation instructions and generating one or more phase instructions by dividing them into phase units are the same as described above, and thus redundant description thereof will be omitted.
단계 620에서 쉐이더 프로세서(100)는 생성된 각 페이즈 명령에 따른 소스 데이터를 레지스터부(120)로부터 독출하여 출력한다.In
전술한 바와 같이, 본 발명에 따른 쉐이더 프로세서(100)는 n(임의의 자연수)개의 페이즈 처리부를 하나의 레지스터부(120) 및 산술논리연산부(135)를 공유하고 있는 구조이다. 이로 인해, 쉐이더 프로세서(100)는 미리 정해진 일정 시간 간격으로 레지스터부에 접근하여 각각의 페이즈 명령에 상응하는 소스 데이터를 독출할 수 있다. 이에 대해서는 전술한 바와 같으므로 중복되는 설명은 생략하기로 한다.As described above, the
단계 625에서 쉐이더 프로세서(100)는 각각의 소스 데이터에 대한 연산을 수행하여 연산 결과를 출력한다.In
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the above has been described with reference to a preferred embodiment of the present invention, those skilled in the art to which the present invention pertains without departing from the spirit and scope of the present invention as set forth in the claims below It will be appreciated that modifications and variations can be made.
도 1은 본 발명의 일 실시예에 따른 쉐이더 프로세서의 내부 기능 블록을 예시한 도면.1 illustrates internal functional blocks of a shader processor in accordance with one embodiment of the present invention.
도 2는 본 발명의 일 실시예에 따른 배타적 페어링 규칙을 설명하기 위한 예시도면.2 is an exemplary diagram for explaining an exclusive pairing rule according to an embodiment of the present invention.
도 3은 본 발명의 일 실시예에 따른 연산 명령의 형태를 예시한 도면.3 is a diagram illustrating a form of an operation instruction according to an embodiment of the present invention.
도 4는 본 발명의 일 실시예에 따른 유닛 명령어들의 인출 과정을 설명하기 위해 예시한 도면.4 is a diagram illustrating a process of fetching unit instructions according to an embodiment of the present invention.
도 5는 본 발명의 일 실시예에 따른 연산 명령에 따른 페이즈 명령의 구성을 예시한 도면.5 is a diagram illustrating a configuration of a phase command according to an operation command according to an embodiment of the present invention.
도 6은 본 발명의 일 실시예에 따른 쉐이더 프로세서가 임의의 명령에 대한 연산을 수행하는 방법을 나타낸 순서도.6 is a flowchart illustrating a method in which a shader processor performs an operation on an arbitrary instruction according to an embodiment of the present invention.
Claims (13)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080001419A KR20090075530A (en) | 2008-01-04 | 2008-01-04 | Shader processor, method for processing dual phase instruction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080001419A KR20090075530A (en) | 2008-01-04 | 2008-01-04 | Shader processor, method for processing dual phase instruction |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20090075530A true KR20090075530A (en) | 2009-07-08 |
Family
ID=41332734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080001419A KR20090075530A (en) | 2008-01-04 | 2008-01-04 | Shader processor, method for processing dual phase instruction |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20090075530A (en) |
-
2008
- 2008-01-04 KR KR1020080001419A patent/KR20090075530A/en not_active Application Discontinuation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10853905B2 (en) | Instruction execution in graphics processor shader programs | |
US11200724B2 (en) | Texture processor based ray tracing acceleration method and system | |
US9256466B2 (en) | Data processing systems | |
US10176546B2 (en) | Data processing systems | |
KR102459322B1 (en) | Primitive culling using compute shaders that compile automatically | |
JP7253488B2 (en) | Composite world-space pipeline shader stage | |
US9123167B2 (en) | Shader serialization and instance unrolling | |
US20170372448A1 (en) | Reducing Memory Access Latencies During Ray Traversal | |
JP5829684B2 (en) | Heterogeneous graphics processor and configuration method thereof | |
US20180113713A1 (en) | Compiler-based instruction scoreboarding | |
US20200371804A1 (en) | Boosting local memory performance in processor graphics | |
JP2021525414A (en) | Compiler-assisted techniques for reducing memory usage in the graphics pipeline | |
US11080927B2 (en) | Method and apparatus of cross shader compilation | |
KR20190142732A (en) | Data processing systems | |
US10593093B2 (en) | Data processing systems | |
US20210294579A1 (en) | Graphics pipeline optimizations | |
US9183662B1 (en) | System and method for enabling scene program functionality | |
TWI507978B (en) | External validation of graphics pipelines | |
US10310856B2 (en) | Disabling thread execution when executing instructions in a data processing system | |
KR20090075530A (en) | Shader processor, method for processing dual phase instruction | |
US20140006754A1 (en) | System and method for performing predicated selection of an output register | |
US20240036874A1 (en) | Apparatus and method of optimising divergent processing in thread groups | |
US20220391216A1 (en) | Graphics processing | |
US9218691B1 (en) | System and method for enabling scene program functionality | |
KR20090075521A (en) | Shader processor and method for carrying out operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |