KR20090075530A - Shader processor, method for processing dual phase instruction - Google Patents

Shader processor, method for processing dual phase instruction Download PDF

Info

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
Application number
KR1020080001419A
Other languages
Korean (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 KR1020080001419A priority Critical patent/KR20090075530A/en
Publication of KR20090075530A publication Critical patent/KR20090075530A/en

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
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General 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

A shader processor and a dual phase command processing method using a phase processing unit of N reads out source data and an arithmetic-logic unit computing source data are provided to process commands in dual phase type. N phase processors read out source data from a register unit according to a phase command. An arithmetic and logic unit(135) includes operators of the m(arbitrary natural number). The arithmetic and logic unit outputs the result data by operating source data received from each phase processing unit according to the predetermined method.

Description

쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법{Shader processor, method for processing dual phase instruction}Shader processor, method for processing dual phase instruction

본 발명은 쉐이더 프로세서에 관한 것으로, 보다 상세하게 듀얼 페이지 명령을 처리할 수 있는 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 shader processor 100 according to the present invention, which will be described below, may simultaneously process up to two instructions corresponding to the same clock to output respective calculation results. Hereinafter, each internal functional block of the shader processor 100 according to the present invention will be described in detail with reference to FIG. 1.

도 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 shader processor 100 according to the present invention may include a drawing unit 110, an instruction constructing unit 115, a register unit 120, a first phase processing unit 125, and a second phase processing unit ( 130) and the arithmetic logic unit 135 is configured.

본 명세서에서 쉐이더 프로세서(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 shader processor 100 may extract a plurality of unit instructions, divide them into phase units, generate one or more phase instructions, and access the register unit 120 at predetermined time intervals to read source data. The shader processor 100 includes n phase processing units (for example, the first phase processing unit 125 and the second phase processing unit 130), and each phase processing unit (for example, The first phase processor 125 and the second phase processor 130 share a single arithmetic logic unit 135. Accordingly, in the shader processor 100 according to the present invention, n (random natural numbers) phase processing units (for example, the first phase processing unit 125 and the second phase processing unit 130) may include one arithmetic logic unit 135. ) May be shared to perform calculations corresponding to respective phase commands according to the same clock (or control signal), and output the calculation results.

이와 같이, n개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))에 의해 산술논리연산부(135)가 공유되어 각각의 연산을 수행하기 위해서는 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))에 의해 처리되는 각 페이즈 명령이 당해 산술논리연산부(135)의 동일한 연산기를 사용하지 않아야만 한다.As described above, the arithmetic logic unit 135 is shared by the n number of phase processing units (for example, the first phase processing unit 125 and the second phase processing unit 130), and each phase processing unit ( For example, each phase instruction processed by the first phase processing unit 125 and the second phase processing unit 130 should not use the same operator of the arithmetic logic operation unit 135.

이하, 본 명세서에서 n개의 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))로 입력되는 각각의 명령을 페이즈 명령이라 칭하기로 한다. 페이즈 명령에 대해서는 하기에서 관련 도면을 참조하여 보다 상세히 설명하기로 한다.Hereinafter, each command input to the n processing units (for example, the first phase processing unit 125 and the second phase processing unit 130) will be referred to as a phase command. The phase command will be described in more detail with reference to the accompanying drawings below.

즉, 제1 페이즈 처리부(125)로 입력되는 페이즈 명령을 제1 페이즈 명령이라 칭하며, 제2 페이즈 처리부(130)로 입력되는 페이즈 명령을 제2 페이즈 명령이라 칭하기로 한다.That is, a phase command input to the first phase processor 125 is called a first phase command, and a phase command input to the second phase processor 130 is called a second phase command.

본 명세서에서 동일 클럭 또는 제어 신호에 상응하여 산술논리연산부(135)를 통해 연산되는 n개의 페이즈 명령이 산술논리연산부(135)의 동일한 연산기를 중복 사용하지 않도록 구성되는 규칙을 "배타적 페이링 규칙(exclusive paring rules)"이라 정의하기로 한다.In the present specification, a rule configured such that n phase instructions calculated through the arithmetic logic unit 135 corresponding to the same clock or control signal do not use the same arithmetic operator of the arithmetic logic unit 135 so as to not use an "exclusive paying rule ( exclusive paring rules) ".

도 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 arithmetic logic unit 135, respectively. It can be seen that the operation for each phase instruction can be performed. That is, each phase instruction illustrated in 210a and 210b may be performed without using the same operator of the arithmetic logic unit 135.

하기에서 보다 상세히 설명되겠지만, 산술논리연산부(135)는 각각의 컴포넌트(예를 들어, x y z w)에 상응하는 각각의 연산기를 구비하고 있다. 따라서, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)에 의해 처리되는 각각의 페이즈 명령은 각 컴포넌트별로 동일한 연산기를 중복 사용하지 않도록 구성되면 동일 클럭에 상응하여 산술논리연산부(135)에서 연산을 수행할 수 있다.As will be described in more detail below, the arithmetic logic unit 135 has a respective operator corresponding to each component (eg, x y z w). Therefore, when each phase instruction processed by the first phase processor 125 and the second phase processor 130 is configured not to use the same operator for each component, the arithmetic logic unit 135 corresponds to the same clock. You can perform the operation.

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 logic operation unit 135 so that the operation can be performed corresponding to the same clock.

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 logic operator 135.

또한, 240a에 예시된 페이즈 명령(RPC 명령)에 대한 연산기는 산술논리연산부(135)에서 하나만 구비되며, RPC 명령은 산술논리연산부(135)의 모든 영역을 공유하여 수행되므로 다른 명령과 동시 실행이 불가능하다. In addition, only one operator for the phase instruction (RPC instruction) illustrated in 240a is provided in the arithmetic logic operation unit 135, and the RPC instruction is performed by sharing all areas of the arithmetic logic operation unit 135 so that simultaneous execution with other instructions is possible. impossible.

또한, 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 logic operation unit 135, overlapping is allowed unlike other instructions.

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 phase processing unit 125 and the second phase processing unit 130 are instructions for changing the control flow in the case of the branch instruction. Must be performed in either). In the present specification, for convenience of understanding and description, it will be described on the assumption that complex instructions such as branch and loop instructions are performed only through the second phase processor 130.

또한, 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 register unit 120 needs to be accessed n times with the instruction including the address in the operand to read the source data. Therefore, in the case of the indirect address command, the second phase processor 130 must be executed by the control of the first phase processor 125. For this reason, it will be assumed that the indirect address command is performed by the first phase processor 125.

전술한 설명에 의해 본 발명에 따른 배타적 페어링 규칙에 대해서는 충분히 숙지가 되었을 것인바 다시 도 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 shader processor 100 will be described with reference to FIG. 1 again.

이하, 본 명세서에서는 쉐이더 명령(예를 들어, 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 shader processor 100 fetches the unit instructions to each operation. This will be described.

쉐이더 프로세서(100)에서 쉐이더 명령어를 하나 이상의 유닛 명령어로 재배열하는 방법은 당업자에게는 자명한 사항이므로 이에 대한 별도의 설명은 생략하기로 한다.Since the method of rearranging the shader instructions into one or more unit instructions in the shader processor 100 is obvious to those skilled in the art, a separate description thereof will be omitted.

다시 도 1을 참조하면, 인출부(110)는 프로그램 카운터(PC: program counter)를 참조하여

Figure 112008000874416-PAT00001
(n은 임의의 자연수)비트 단위의 유닛 명령들을 인출하여 명령 구성부(115)로 출력한다. 본 명세서에서는 쉐이더 명령이 128비트인 것을 가정하며, 하나의 쉐이더 명령은 최대 4개의 유닛 명령으로 구성되어 있는 것을 가정한다. 따라서, 인출부(110)는 프로그램 카운터를 참조하여 회당 4개의 유닛 명령을 인출하여 명령 구성부(115)로 출력한다. Referring again to FIG. 1, the drawing unit 110 may refer to a program counter (PC).
Figure 112008000874416-PAT00001
(n is an arbitrary natural number) The unit instructions in units of bits are extracted and output to the instruction constructing unit 115. In the present specification, it is assumed that the shader instruction is 128 bits, and that one shader instruction is composed of up to four unit instructions. Accordingly, the withdrawal unit 110 withdraws four unit instructions per time with reference to the program counter and outputs them to the instruction configuration unit 115.

프로그램 카운터는 인출된 유닛 명령의 개수만큼 증가하며 다음 인출할 명령의 어드레스를 저장하고 있다. 현재 실행하는 명령이 분기 명령일 경우 분가 조건 판단 결과에 따라 프로그램 카운터의 어드레스가 변경된다. 이에 따라 분기 명령 다음에 변경되는 프로그램 카운터가 가리키는 어드레스에 상응하는 명령이 실행된다. 즉, 인출부(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 drawing unit 110 may obtain a start address of a command to be fetched at a current time (or a clock) with reference to a program counter. Since this is obvious to those skilled in the art, a separate description thereof will be omitted.

이하, 본 명세서에서는 이해와 설명의 편의를 도모하기 위해 쉐이더 명령이 최대 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 drawing unit 110 may be different.

이해와 설명의 편의를 도모하기 위해 도 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 first status bit 310, a second status bit 315, and an instruction bit 320 of m (any natural number) bits.

제1 상태 비트(310)는 각 유닛 명령의 확장 여부를 나타내며, 제2 상태 비트(315)는 당해 유닛 명령이 포함되는 페이즈 명령의 소속 여부를 지시한다.The first status bit 310 indicates whether or not each unit command is extended, and the second status bit 315 indicates whether a phase command including the unit command belongs.

예를 들어, 제1 상태 비트(310)가 제1 비트값(예를 들어, "0")이면, 당해 유닛 명령은 확장 명령인 것으로 인식되며, 제1 상태 비트(310)가 제2 비트값(예를 들어, "1")이면 당해 유닛 명령은 마지막 명령으로 인식된다. 이에 대해서는 하기에서 명령 구성부(115)에서 보다 상세히 설명하기로 한다.For example, if the first status bit 310 is the first bit value (eg, "0"), then the unit command is recognized as an extended command and the first status bit 310 is the second bit value. (Eg, "1"), the unit command is recognized as the last command. This will be described in more detail in the command configuration unit 115 below.

다시 도 1을 참조하면, 인출부(110)는 전술한 바와 같이 프로그램 카운터를 참조하여 복수의 유닛 명령어들을 인출하여 명령 구성부(115)로 출력한다.Referring again to FIG. 1, the extractor 110 extracts a plurality of unit instructions by referring to a program counter and outputs the same to the instruction constructing unit 115 as described above.

명령 구성부(115)는 인출부(110)를 통해 입력된 k(임의의 자연수)개의 유닛 명령을 분석하여 연산 명령의 개수 및 크기를 결정한다. 그리고, 명령 구성부(115)는 결정된 연산 명령을 분석하여 최대 n(임의의 자연수)개의 페이즈 명령을 생성하여 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))로 출력한다.The instruction constructing unit 115 analyzes k (arbitrary natural numbers) unit instructions input through the drawing unit 110 to determine the number and size of the computation instructions. In addition, the instruction configuring unit 115 analyzes the determined operation instruction to generate up to n (random natural numbers) phase instructions for each phase processing unit (eg, the first phase processing unit 125 and the second phase processing unit 130). Output as)).

본 명세서에서 연산 명령은 동일 클럭내에서 산술논리연산부(135)를 통해 동시에 연산 가능한 명령으로 정의하기로 한다.In the present specification, the operation instruction is defined as an instruction that can be operated simultaneously through the arithmetic logic operation unit 135 within the same clock.

예를 들어, 명령 구성부(115)는 입력된 k개의 유닛 명령의 제1 상태 비트들을 분석하여 연산 명령의 크기 및 개수를 결정할 수 있다. For example, the instruction constructing unit 115 may analyze the first status bits of the input k unit instructions to determine the size and number of operation instructions.

예를 들어, 도 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 drawing unit 110 refers to the address "6" of the program counter, and withdraws four unit instructions from the corresponding address and outputs it to the instruction constructing unit 115. Here, assume that the first status bit of the input unit commands is as illustrated at 410. The instruction constructing unit 115 compares whether the first status bit of the first unit command input is the second bit value. Since the first status bit of the first unit command is the first bit value, the instruction construct 115 compares whether the first status bit of the second unit command is the second bit value. Since the first status bit of the second unit command is also the first bit value, the instruction constructing unit 115 compares whether the first status bit of the third unit command is the second bit value. Since the first status bit of the third unit instruction is the second bit value, the instruction constructing unit 115 determines that the first unit instruction to the third unit instruction is an operation instruction operable within the same clock by the arithmetic logic operation unit 135. . The instruction constructing unit 115 then updates the address of the program counter using the subsequent address of the third unit instruction ("9" in FIG. 4). Accordingly, the withdrawal unit 110 may withdraw four unit commands from the corresponding address (ie, “9”) at the next time point.

그리고, 명령 구성부(115)는 연산 명령의 크기 및 개수를 결정하고, 해당 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성한다.In addition, the instruction constructing unit 115 determines the size and number of operation instructions, analyzes the second status bits of each unit instruction included in the operation instruction, and divides them into phase units to generate one or more phase instructions.

또한, 인출부(110)로부터 인출되는 유닛 명령의 개수가 4개라고 가정하자. 이와 같은 경우 연산 명령은 4가지 형태로 구성될 수 있다.In addition, suppose that the number of unit instructions withdrawn from the takeout unit 110 is four. In this case, the operation instruction may be configured in four forms.

즉, 도 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 instruction constructing unit 115 recognizes the first phase command if the second status bit of each unit command included in the operation instruction is the first bit value, and the second phase command if the second status bit is the second bit value. I can recognize it.

다시, 도 1을 참조하면, 레지스터부(120)는 프로그램 카운터 및 복수의 소스 데이터들이 저장된다. 또한, 레지스터부(120)는 산술논리연산부(135)에 의해 연산된 연산 결과가 저장된다.Referring again to FIG. 1, the register unit 120 stores a program counter and a plurality of source data. In addition, the register unit 120 stores arithmetic results calculated by the arithmetic logic operation unit 135.

본 명세서에서는 두개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130))를 포함하는 것을 가정하여 이를 중점으로 설명하기로 한다.In the present specification, it is assumed that two phase processing units (for example, the first phase processing unit 125 and the second phase processing unit 130) are described.

제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)는 입력된 각 페이즈 명령을 디코딩하여 해당 페이즈 명령에 상응하는 레지스터부(120)에 접속하여 상응하는 소스 데이터를 독출하여 출력하는 기능을 수행한다. 또한, 제2 페이즈 처리부(130)는 제1 페이즈 처리부(125)로부터 서브 명령이 입력되면, 해당 서브 명령에 상응하여 레지스터부(120)로부터 소스 데이터를 독출할 수도 있다. The first phase processor 125 and the second phase processor 130 decode each input phase command and access the register 120 corresponding to the phase command to read and output the corresponding source data. do. In addition, when a subcommand is input from the first phase processor 125, the second phase processor 130 may read source data from the register unit 120 corresponding to the subcommand.

본 발명에 따른 레지스터부(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 register unit 120 and the arithmetic logic unit 135 according to the present invention are shared by n phase processing units (the first phase processing unit 125 and the second phase processing unit 130). For this reason, even if n phase commands are generated, the command configuration unit 115 preferentially outputs the first phase command to the first phase processing unit 125, and then, after a predetermined time elapses, outputs the second phase command to the second phase command. The output may be output to the phase processor 130. For this reason, the first phase processing unit 125 and the second phase processing unit 130 are different from each other in connection with the register unit 120. However, the first phase processing unit 125 and the second phase processing unit 130 correspond to the same clock in order to perform an operation corresponding to each phase command in accordance with the same clock through the arithmetic logic operation unit 135. May be output to the arithmetic logic operation unit 135. To this end, the first phase processor 125 may allow the second phase processor 130 to wait for a predetermined time until the source data is read from the register unit 135.

다른 예를 들어, 제1 페이즈 처리부(125)는 명령 구성부(115)로부터 연산 명 령에 대한 정보(예를 들어, 하나의 페이즈 명령인지 두개의 페이즈 명령인지에 대한 정보)를 페이즈 명령과 함께 입력받을 수도 있다. In another example, the first phase processing unit 125 may include information about an operation command (for example, information about whether one phase command or two phase commands) is received from the command configuration unit 115 together with the phase command. You can also receive input.

즉, 제1 페이즈 처리부(125)는 연산 명령에 대한 정보를 입력받아 당해 연산 명령이 하나의 페이즈 명령으로 구성되었다고 인식되면, 제2 페이즈 처리부(130)의 동작 수행 여부에 상관없이 입력된 페이즈 명령에 따른 소스 데이터를 레지스터부(120)로부터 독출하여 산술논리연산부(135)로 출력하여 연산이 수행되도록 할 수 있다.That is, when the first phase processor 125 receives the information about the operation command and recognizes that the operation command is composed of one phase command, the inputted phase command regardless of whether the second phase processor 130 performs an operation or not. The source data may be read from the register unit 120 and output to the arithmetic logic operation unit 135 to perform the operation.

그러나 만일 연산 명령이 두개의 페이즈 명령으로 구성되었다고 인식되면, 제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 phase processing unit 125 reads the source data according to the input phase command from the register unit 120 when the second phase processing unit 130 is input. After waiting until it may be controlled to output the source data to the arithmetic logic operation unit 135 together. Here, when the reading of the source data is completed, the second phase processing unit 130 may output a control signal to the first phase processing unit 125 to recognize the completion of reading.

산술논리연산부(135)는 각각의 컴포넌트별로 m(임의의 자연수)의 연산기를 구비한다. 또한, 산술논리연산부(135)는 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)에 의해 공유된다. 즉, 산술논리연산부(135)는 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)로부터 동일 클럭에 상응하여 각각 제1 페이즈 명령 및 제2 페이즈 명령 중 하나 이상을 입력받을 수 있다. 그리고, 산술논리연산부(135)는 동일 클럭에 상응하여 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130))로부터 각각 소스 데이터를 입력받아 미리 정해진 연산을 수행하여 연산 결과를 출력할 수 있다.The arithmetic logic operation unit 135 includes an operator of m (any natural number) for each component. In addition, the arithmetic logic operation unit 135 is shared by the first phase processing unit 125 and the second phase processing unit 130. That is, the arithmetic logic unit 135 may receive one or more of a first phase command and a second phase command from the first phase processor 125 and the second phase processor 130, respectively, corresponding to the same clock. The arithmetic logic operation unit 135 receives source data from each phase processing unit (eg, the first phase processing unit 125 and the second phase processing unit 130) in accordance with the same clock, and performs a predetermined operation. To output the result.

도 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 first phase processor 125.

또한, 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 first phase processor 125.

그리고, 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 logic operation unit 135.

도 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 shader processor 100, but will be collectively described as the shader processor 100 for the convenience of understanding and description.

단계 610에서 쉐이더 프로세서(100)는 프로그램 카운터를 참조하여 k(임의의 자연수)개의 유닛 명령을 인출한다.In operation 610, the shader processor 100 fetches k (random natural numbers) unit instructions with reference to a program counter.

단계 615에서 쉐이더 프로세서(100)는 인출된 k개의 유닛 명령을 분석하여 연산 명령의 크기 또는 개수를 결정하며, 결정된 연산 명령을 분석하여 하나 이상의 페이즈 명령을 생성한다.In operation 615, the shader processor 100 analyzes the extracted k unit instructions to determine the size or number of operation instructions, and analyzes the determined operation instructions to generate one or more phase instructions.

연산 명령의 크기 또는 개수를 결정하는 방법 및 당해 연산 명령을 분석하여 페이즈 단위로 구분하여 하나 이상의 페이즈 명령을 생성하는 방법은 전술한 바와 동일하므로 이에 대한 중복되는 설명은 생략하기로 한다.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 operation 620, the shader processor 100 reads and outputs source data according to each generated phase instruction from the register unit 120.

전술한 바와 같이, 본 발명에 따른 쉐이더 프로세서(100)는 n(임의의 자연수)개의 페이즈 처리부를 하나의 레지스터부(120) 및 산술논리연산부(135)를 공유하고 있는 구조이다. 이로 인해, 쉐이더 프로세서(100)는 미리 정해진 일정 시간 간격으로 레지스터부에 접근하여 각각의 페이즈 명령에 상응하는 소스 데이터를 독출할 수 있다. 이에 대해서는 전술한 바와 같으므로 중복되는 설명은 생략하기로 한다.As described above, the shader processor 100 according to the present invention has a structure in which n (random natural numbers) phase processing units share one register unit 120 and an arithmetic logic operation unit 135. As a result, the shader processor 100 may read the source data corresponding to each phase instruction by accessing the register unit at predetermined predetermined time intervals. Since it is the same as described above, overlapping description will be omitted.

단계 625에서 쉐이더 프로세서(100)는 각각의 소스 데이터에 대한 연산을 수행하여 연산 결과를 출력한다.In operation 625, the shader processor 100 performs an operation on each source data and outputs an operation result.

상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.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)

쉐이더 프로세서에 있어서,In the shader processor, 하나 이상의 유닛 명령을 인출하는 인출부;A drawing unit for drawing one or more unit commands; 상기 유닛 명령들을 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성하여 출력하는 명령 구성부;An instruction constructing unit configured to analyze the unit commands, divide the data into phase units, and generate and output one or more phase commands; 상기 페이즈 명령에 따른 소스 데이터를 레지스터부로부터 독출하여 출력하는 n(상기 n은 2이상의 자연수)개의 페이즈 처리부; 및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 m(임의의 자연수)개의 연산기를 구비하며, 상기 각 페이즈 처리부로부터 상기 소스 데이터를 각각 입력받아 미리 정해진 방법에 따라 각각 연산을 수행하여 결과 데이터를 각각 출력하는 산술논리연산부를 포함하는 쉐이더 프로세서.and an arithmetic logic operation unit comprising m (arbitrary natural numbers) operators and receiving the source data from each phase processing unit, and performing arithmetic operations according to a predetermined method, respectively, and outputting result data. 제1 항에 있어서,According to claim 1, 상기 산술논리연산부는 상기 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. A shader processor for outputting the result of the operation. 제1 항에 있어서,According to claim 1, 상기 유닛 명령은 제1 상태 비트, 제2 상태 비트 및 p(임의의 자연수)비트의 명령 비트로 구성되는 것을 특징으로 하는 쉐이더 프로세서.And wherein the unit instruction consists of a first status bit, a second status bit, and an instruction bit of p (any natural number) bit. 제3 항에 있어서,The method of claim 3, wherein 상기 제1 상태 비트는 유닛 명령의 확장 정보를 포함하며, 상기 제2 상태 비트는 유닛 명령의 페이즈 구분 정보를 포함하는 것을 특징으로 하는 쉐이더 프로세서.And the first status bit includes extension information of a unit command, and the second status bit includes phase discrimination information of a unit command. 제3 항에 있어서,The method of claim 3, wherein 상기 명령 구성부는 상기 유닛 명령들의 제1 상태 비트를 분석하여 연산 명령의 크기 또는 개수를 결정하며, 상기 결정된 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 하나 이상의 페이즈 명령을 생성하여 출력하는 것을 특징으로 하는 쉐이더 프로세서.The command configuration unit analyzes the first status bits of the 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. Outputting a shader processor. 제5 항에 있어서,The method of claim 5, 상기 명령 구성부는 입력된 상기 유닛 명령들 중 대상 유닛 명령의 제1 상태 비트가 제1 비트값이면, 상기 대상 유닛 명령까지를 상기 연산 명령으로 결정하며,If the first status bit of the target unit command of the input unit command is the first bit value of the input unit command, the command configuration unit determines up to the target unit command as the operation command, 상기 연산 명령에 포함된 유닛 명령의 제2 상태 비트가 제2 비트값이면 제1 페이즈 명령으로 결정하며, 상기 제2 상태 비트가 제3 비트값이면 제2 페이즈 명령으로 결정하는 것을 특징으로 하는 쉐이더 프로세서.A shader, if the second state bit of the unit command included in the operation instruction is a second bit value, is determined as a first phase instruction; and if the second state bit is a third bit value, the shader is determined as a second phase instruction. Processor. 제6 항에 있어서,The method of claim 6, 상기 명령 구성부는 상기 프로그램 카운터를 상기 대상 유닛 명령의 후속 어드레스를 이용하여 갱신하되,The instruction constructing unit updates the program counter with a subsequent address of the target unit instruction, 상기 인출부는 상기 프로그램 카운터를 참조하여 유닛 명령어들을 인출하는 것을 특징으로 하는 쉐이더 프로세서.And the drawing unit fetches unit instructions with reference to the program counter. 제2 항에 있어서,The method of claim 2, 상기 페이즈 처리부는 제1 페이즈 처리부 및 제2 페이즈 처리부를 포함하며,The phase processing unit includes a first phase processing unit and a second phase processing unit, 상기 명령 구성부는 상기 생성된 페이즈 명령이 분기, 간접 주소 및 루프 명령 중 어느 하나이면 상기 제2 페이즈 처리부로 출력하는 것을 특징으로 하는 쉐이더 프로세서.And the instruction constructing unit outputs the generated phase instruction to the second phase processor if the generated phase instruction is any one of a branch, an indirect address, and a loop instruction. 쉐이더 프로세서가 듀얼 페이즈 방식으로 명령을 처리하는 방법에 있어서, In the method that the shader processor processes instructions in a dual phase manner, (a) 하나 이상의 유닛 명령을 인출하는 단계;(a) withdrawing one or more unit instructions; (b) 상기 인출된 유닛 명령들을 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성하는 단계;(b) analyzing the retrieved unit instructions and dividing them into phase units to generate one or more phase instructions; (c) 상기 각 페이즈 명령에 따른 소스 데이터를 레지스터부로부터 독출하여 출력하는 단계; 및(c) reading and outputting source data according to each phase command from a register unit; And (d) 상기 소스 데이터를 각각 입력받아 미리 정해진 방법에 따라 각각 연산을 수행하여 연산 결과를 출력하되,(d) receiving each of the source data and performing arithmetic operation according to a predetermined method to output arithmetic results, 상기 (c) 단계는 생성된 페이즈 명령의 개수에 상응하여 미리 정해진 일정 시간 간격으로 상기 레지스터부에 접근하여 각각의 페이즈 명령에 따른 소스 데이터를 각각 독출하여 출력하는 것을 특징으로 하는 명령 처리 방법.The step (c) of the command processing method, characterized in that for accessing the register unit at a predetermined predetermined time interval corresponding to the number of generated phase command to read and output the source data according to each phase command. 제9 항에 있어서,The method of claim 9, 상기 유닛 명령은 제1 상태 비트, 제2 상태 비트 및 p(임의의 자연수)비트의 명령 비트로 구성되는 것을 특징으로 하는 명령 처리 방법.And said unit command is comprised of command bits of a first status bit, a second status bit, and a p (any natural number) bit. 제10 항에 있어서,The method of claim 10, 상기 제1 상태 비트는 유닛 명령의 확장 정보를 포함하며, 상기 제2 상태 비 트는 유닛 명령의 페이즈 구분 정보를 포함하는 것을 특징으로 하는 명령 처리 방법.The first status bit includes extended information of a unit command, and the second status bit includes phase discrimination information of a unit command. 제11 항에 있어서,The method of claim 11, wherein 상기 (b) 단계는,In step (b), 상기 인출된 유닛 명령들의 제1 상태 비트를 분석하여 연산 명령의 크기 또는 개수를 결정하는 단계; 및Analyzing a first status bit of the retrieved unit instructions to determine a size or number of arithmetic instructions; And 상기 결정된 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 하나 이상의 페이즈 명령을 생성하는 단계를 포함하는 것을 특징으로 하는 명령 처리 방법.And analyzing the second status bit of each unit instruction included in the determined operation instruction to generate one or more phase instructions. 제12 항에 있어서,The method of claim 12, 상기 대상 유닛 명령의 후속 어드레스를 이용하여 프로그램 카운트를 갱신하는 단계를 더 포함하되,Updating a program count using a subsequent address of the target unit instruction, 상기 (a) 단계는 상기 프로그램 카운터를 참조하여 상기 유닛 명령을 인출하는 것을 특징으로 하는 명령 처리 방법.In the step (a), the unit command is fetched with reference to the program counter.
KR1020080001419A 2008-01-04 2008-01-04 Shader processor, method for processing dual phase instruction KR20090075530A (en)

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)

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