首页 / 专利库 / 电脑零配件 / 中央处理器 / 算术逻辑单元 / 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법

쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법

阅读:1023发布:2020-09-04

专利汇可以提供쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법专利检索,专利查询,专利分析的服务。并且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.,下面是쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법专利的具体信息内容。

  • 쉐이더 프로세서에 있어서,
    하나 이상의 유닛 명령을 인출하는 인출부;
    상기 유닛 명령들을 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성하여 출력하는 명령 구성부;
    상기 페이즈 명령에 따른 소스 데이터를 레지스터부로부터 독출하여 출력하는 n(상기 n은 2이상의 자연수)개의 페이즈 처리부; 및
    m(임의의 자연수)개의 연산기를 구비하며, 상기 각 페이즈 처리부로부터 상기 소스 데이터를 각각 입력받아 미리 정해진 방법에 따라 각각 연산을 수행하여 결과 데이터를 각각 출력하는 산술논리연산부를 포함하는 쉐이더 프로세서.
  • 제1 항에 있어서,
    상기 산술논리연산부는 상기 n개의 페이즈 처리부에 의해 상기 m개의 연산기가 공유되며, 동일 클럭에 상응하여 상기 n개의 페이즈 처리부로부터 n개의 페이즈 명령에 따른 n개의 소스 데이터를 입력받아 각각 연산을 수행하여 n개의 연산 결과를 출력하는 것을 특징으로 하는 쉐이더 프로세서.
  • 제1 항에 있어서,
    상기 유닛 명령은 제1 상태 비트, 제2 상태 비트 및 p(임의의 자연수)비트의 명령 비트로 구성되는 것을 특징으로 하는 쉐이더 프로세서.
  • 제3 항에 있어서,
    상기 제1 상태 비트는 유닛 명령의 확장 정보를 포함하며, 상기 제2 상태 비트는 유닛 명령의 페이즈 구분 정보를 포함하는 것을 특징으로 하는 쉐이더 프로세서.
  • 제3 항에 있어서,
    상기 명령 구성부는 상기 유닛 명령들의 제1 상태 비트를 분석하여 연산 명령의 크기 또는 개수를 결정하며, 상기 결정된 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 하나 이상의 페이즈 명령을 생성하여 출력하는 것을 특징으로 하는 쉐이더 프로세서.
  • 제5 항에 있어서,
    상기 명령 구성부는 입력된 상기 유닛 명령들 중 대상 유닛 명령의 제1 상태 비트가 제1 비트값이면, 상기 대상 유닛 명령까지를 상기 연산 명령으로 결정하며,
    상기 연산 명령에 포함된 유닛 명령의 제2 상태 비트가 제2 비트값이면 제1 페이즈 명령으로 결정하며, 상기 제2 상태 비트가 제3 비트값이면 제2 페이즈 명령으로 결정하는 것을 특징으로 하는 쉐이더 프로세서.
  • 제6 항에 있어서,
    상기 명령 구성부는 상기 프로그램 카운터를 상기 대상 유닛 명령의 후속 어드레스를 이용하여 갱신하되,
    상기 인출부는 상기 프로그램 카운터를 참조하여 유닛 명령어들을 인출하는 것을 특징으로 하는 쉐이더 프로세서.
  • 제2 항에 있어서,
    상기 페이즈 처리부는 제1 페이즈 처리부 및 제2 페이즈 처리부를 포함하며,
    상기 명령 구성부는 상기 생성된 페이즈 명령이 분기, 간접 주소 및 루프 명령 중 어느 하나이면 상기 제2 페이즈 처리부로 출력하는 것을 특징으로 하는 쉐이더 프로세서.
  • 쉐이더 프로세서가 듀얼 페이즈 방식으로 명령을 처리하는 방법에 있어서,
    (a) 하나 이상의 유닛 명령을 인출하는 단계;
    (b) 상기 인출된 유닛 명령들을 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성하는 단계;
    (c) 상기 각 페이즈 명령에 따른 소스 데이터를 레지스터부로부터 독출하여 출력하는 단계; 및
    (d) 상기 소스 데이터를 각각 입력받아 미리 정해진 방법에 따라 각각 연산을 수행하여 연산 결과를 출력하되,
    상기 (c) 단계는 생성된 페이즈 명령의 개수에 상응하여 미리 정해진 일정 시간 간격으로 상기 레지스터부에 접근하여 각각의 페이즈 명령에 따른 소스 데이터를 각각 독출하여 출력하는 것을 특징으로 하는 명령 처리 방법.
  • 제9 항에 있어서,
    상기 유닛 명령은 제1 상태 비트, 제2 상태 비트 및 p(임의의 자연수)비트의 명령 비트로 구성되는 것을 특징으로 하는 명령 처리 방법.
  • 제10 항에 있어서,
    상기 제1 상태 비트는 유닛 명령의 확장 정보를 포함하며, 상기 제2 상태 비 트는 유닛 명령의 페이즈 구분 정보를 포함하는 것을 특징으로 하는 명령 처리 방법.
  • 제11 항에 있어서,
    상기 (b) 단계는,
    상기 인출된 유닛 명령들의 제1 상태 비트를 분석하여 연산 명령의 크기 또는 개수를 결정하는 단계; 및
    상기 결정된 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 하나 이상의 페이즈 명령을 생성하는 단계를 포함하는 것을 특징으로 하는 명령 처리 방법.
  • 제12 항에 있어서,
    상기 대상 유닛 명령의 후속 어드레스를 이용하여 프로그램 카운트를 갱신하는 단계를 더 포함하되,
    상기 (a) 단계는 상기 프로그램 카운터를 참조하여 상기 유닛 명령을 인출하는 것을 특징으로 하는 명령 처리 방법.
  • 说明书全文

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

    본 발명은 쉐이더 프로세서에 관한 것으로, 보다 상세하게 듀얼 페이지 명령을 처리할 수 있는 3차원 그래픽스 쉐이더 프로세서에 관한 것이다.

    실시간 3차원 그래픽스 분야는 하드웨어의 개선과 활용의 증가에 따라서 매우 빠른 속도로 발전하고 있다. 3차원 그래픽스는 많은 양의 데이터를 이용하여 복잡한 연산을 수행한다. 예전에는 CPU에서 구현하던 기능을 그래픽 하드웨어로 넘겨줌으로써 성능을 높이고 CPU는 그래픽 이외의 다른 작업에 몰두할 수 있게 되었다.

    일반적으로 3차원 그래픽스의 가속을 위해 그래픽 연산만을 전담하여 처리하는 그래픽 프로세서 유닛(Graphics Processor Unit, 이하 GPU라 한다)을 사용한다. GPU는 고정 파이프라인(Fixed pipeline) 형태의 변환 및 조명처리 프로세서(Tranform & Lighting processor)나 래스터라이저(Rasterizer), 쉐이더 등의 다양한 기능별 가속 유닛으로 구성된다.

    이 중 쉐이더(Shader)는 사용자에게 GPU에서 수행될 연산을 프로그램 할 수 있는 환경을 제공한다. 일반적으로 렌더링(rendering)이란 그림자나 색상과 농도의 변화 등과 같은 3차원 질감을 넣음으로써 컴퓨터 그래픽에 사실감을 추가하는 공정을 가리키고, 쉐이더는 이러한 공정에 물체와 빛 사이의 관계를 가미하는 것으로 사용자의 의도에 따라 다양한 효과를 처리할 수 있도록 한다. 따라서, 쉐이더 옵션을 활성화시킨다면 질감 가속을 통해 보다 사실적인 그래픽 이미지를 감상할 수 있게 된다.

    쉐이더의 기능 및 고수준 언어(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) 기능을 지원한다.

    그러나, 종래에는 쉐이더를 단일 명령 복수 데이터 방식(SIMD: Single Instruction Multiple Data architecture) 방식으로 처리하여 연산기에 대한 낭비가 심한 문제점이 있었다.

    본 발명은 듀얼 페이즈 방식으로 쉐이더 명령을 처리할 수 있는 쉐이더 프로 세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.

    또한, 본 발명은 루프 명령 및 브랜치 명령을 포함하여 쉐이더 모델 3.0 및 OpenGL-ES 2.0을 지원할 수 있는 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.

    또한, 본 발명은 n개의 레지스터를 그룹화하여 명령들을 융통성있게 처리할 수 있는 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.

    또한, 본 발명은 최대 2 종류의 명령을 동시에 수행되는 산술논리연산장치를 공유할 수 있는 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.

    또한, 본 발명은 각 명령을 하나 이상의 유닛 명령어들로 재구성할 수 있는 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공하기 위한 것이다.

    본 발명의 일 측면에 따르면, 명령어를 페이즈 단위로 재구성하여 n개의 페이즈 명령을 동시에 연산할 수 있는 쉐이더 프로세서가 제공된다.

    본 발명의 일 실시예에 따르면, 쉐이더 프로세서에 있어서, 하나 이상의 유닛 명령을 인출하는 인출부; 상기 k개의 유닛 명령을 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성하여 출력하는 명령 구성부; 상기 페이즈 명령에 따른 소스 데이터를 레지스터부로부터 독출하여 출력하는 n(상기 n은 2이상의 자연수)개의 페이즈 처리부; 및 m(임의의 자연수)개의 연산기를 구비하며, 상기 각 페이즈 처리부로부터 상기 소스 데이터를 각각 입력받아 미리 정해진 방법에 따라 각각 연산을 수행하여 결과 데이터를 각각 출력하는 산술논리연산부를 포함하는 쉐이더 프로세서가 제공될 수 있다.

    상기 산술논리연산부는 상기 n개의 페이즈 처리부에 의해 상기 m개의 연산기가 공유되며, 동일 클럭에 상응하여 상기 n개의 페이즈 처리부로부터 n개의 페이즈 명령에 따른 n개의 소스 데이터를 입력받아 각각 연산을 수행하여 n개의 연산 결과를 출력할 수 있다.

    상기 유닛 명령은 제1 상태 비트, 제2 상태 비트 및 p(임의의 자연수)비트의 명령 비트로 구성될 수 있다.

    상기 제1 상태 비트는 유닛 명령의 확장 정보를 포함하며, 상기 제2 상태 비트는 유닛 명령의 페이즈 구분 정보를 포함할 수 있다.

    상기 명령 구성부는 입력된 상기 유닛 명령들의 제1 상태 비트를 분석하여 연산 명령의 크기 또는 개수를 결정하며, 상기 결정된 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 하나 이상의 페이즈 명령을 생성하여 출력할 수 있다.

    상기 명령 구성부는 입력된 상기 유닛 명령들 중 대상 유닛 명령의 제1 상태 비트가 제1 비트값이면, 상기 대상 유닛 명령까지를 상기 연산 명령으로 결정하며, 상기 연산 명령에 포함된 유닛 명령의 제2 상태 비트가 제2 비트값이면 제1 페이즈 명령으로 결정하며, 상기 제2 상태 비트가 제3 비트값이면 제2 페이즈 명령으로 결정할 수 있다.

    상기 명령 구성부는 상기 프로그램 카운터를 상기 대상 유닛 명령의 후속 어드레스를 이용하여 갱신하되, 상기 인출부는 상기 프로그램 카운터를 참조하여 유닛 명령어들을 인출할 수 있다.

    상기 페이즈 처리부는 제1 페이즈 처리부 및 제2 페이즈 처리부를 포함하며, 상기 명령 구성부는 상기 생성된 페이즈 명령이 분기, 간접 주소 및 루프 명령 중 어느 하나이면 상기 제2 페이즈 처리부로 출력할 수 있다.

    본 발명의 다른 측면에 따르면, 쉐이더 프로세서가 듀얼 페이즈 방식으로 명령을 처리하는 방법이 제공된다.

    본 발명의 일 실시예에 따르면, 쉐이더 프로세서가 듀얼 페이즈 방식으로 명령을 처리하는 방법에 있어서, (a) 하나 이상의 유닛 명령을 인출하는 단계; (b) 상기 인출된 유닛 명령들을 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성하는 단계; (c) 상기 각 페이즈 명령에 따른 소스 데이터를 레지스터부로부터 독출하여 출력하는 단계; 및 (d) 상기 소스 데이터를 각각 입력받아 미리 정해진 방법에 따라 각각 연산을 수행하여 연산 결과를 출력하되, 상기 (c) 단계는 생성된 페이즈 명령의 개수에 상응하여 미리 정해진 일정 시간 간격으로 상기 레지스터부에 접근하여 각각의 페이즈 명령에 따른 소스 데이터를 각각 독출하여 출력하는 것을 특징으로 하는 명령 처리 방법이 제공될 수 있다.

    상기 유닛 명령은 제1 상태 비트, 제2 상태 비트 및 p(임의의 자연수)비트의 명령 비트로 구성된다.

    상기 제1 상태 비트는 유닛 명령의 확장 정보를 포함하며, 상기 제2 상태 비트는 유닛 명령의 페이즈 구분 정보를 포함할 수 있다.

    상기 (b) 단계는, 상기 인출된 유닛 명령들의 제1 상태 비트를 분석하여 연산 명령의 크기 또는 개수를 결정하는 단계; 및 상기 결정된 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 하나 이상의 페이즈 명령을 생성하는 단계를 포함할 수 있다.

    상기 대상 유닛 명령의 후속 어드레스를 이용하여 프로그램 카운트를 갱신하는 단계를 더 포함하되, 상기 (a) 단계는 상기 프로그램 카운터를 참조하여 상기 유닛 명렁을 인출할 수 있다.

    본 발명에 따른 쉐이더 프로세서 및 듀얼 페이즈 명령 처리 방법을 제공함으로써, 듀얼 페이즈 방식으로 명령어를 처리할 수 있는 효과가 있다.

    또한, 본 발명은 루프 명령 및 브랜치 명령을 포함하여 쉐이더 모델 3.0 및 OpenGL-ES 2.0을 지원할 수 있는 효과도 있다.

    또한, 본 발명은 n개의 레지스터를 그룹화하여 명령들을 융통성있게 처리할 수 있는 효과도 있다.

    또한, 본 발명은 최대 2 종류의 명령을 동시에 수행되는 산술논리연산장치를 공유할 수 있는 효과도 있다.

    또한, 본 발명은 각 명령을 하나 이상의 유닛 명령으로 재구성할 수 있는 효 과도 있다.

    본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.

    제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.

    본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.

    이하, 본 발명의 실시예를 첨부한 도면들을 참조하여 상세히 설명하기로 한다.

    이하에서 설명되는 본 발명에 따른 쉐이더 프로세서(100)는 동일 클럭에 상응하여 최대 2개의 명령을 동시에 처리하여 각각의 연산 결과를 출력할 수 있다. 이하, 본 발명에 따른 쉐이더 프로세서(100)의 각각의 내부 기능 블록에 대해 도 1을 참조하여 상세히 설명하기로 한다.

    도 1은 본 발명의 일 실시예에 따른 쉐이더 프로세서의 내부 기능 블록을 예시한 도면이며, 도 2는 본 발명의 일 실시예에 따른 배타적 페어링 규칙을 설명하기 위한 예시도면이고, 도 3은 본 발명의 일 실시예에 따른 연산 명령의 형태를 예시한 도면이며, 도 4는 본 발명의 일 실시예에 따른 유닛 명령어들의 인출 과정을 설명하기 위해 예시한 도면이다.

    도 1에서 예시된 바와 같이, 본 발명에 따른 쉐이더 프로세서(100)는 인출부(110), 명령 구성부(115), 레지스터부(120), 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130) 및 산술논리연산부(135)를 포함하여 구성된다.

    본 명세서에서 쉐이더 프로세서(100)는 복수의 유닛 명령을 인출하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성한 후 일정 시간 간격으로 레지스터부(120)에 접근하여 소스 데이터를 각각 독출할 수 있다. 그리고, 쉐이더 프로세서(100)는 n(임의의 자연수)개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))를 구비하며, 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))는 하나의 산술논리연산부(135)를 공유하는 구조이다. 따라서, 본 발명에 따른 쉐이더 프로세서(100)는 n(임의의 자연수)개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))가 하나의 산술논리연산부(135)를 공유하여 동일 클럭(또는 제어 신호)에 따라 각각의 페이즈 명령에 상응하는 연산을 수행하여 연산 결과를 각각 출력할 수 있다.

    이와 같이, n개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))에 의해 산술논리연산부(135)가 공유되어 각각의 연산을 수행하기 위해서는 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))에 의해 처리되는 각 페이즈 명령이 당해 산술논리연산부(135)의 동일한 연산기를 사용하지 않아야만 한다.

    이하, 본 명세서에서 n개의 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))로 입력되는 각각의 명령을 페이즈 명령이라 칭하기로 한다. 페이즈 명령에 대해서는 하기에서 관련 도면을 참조하여 보다 상세히 설명하기로 한다.

    즉, 제1 페이즈 처리부(125)로 입력되는 페이즈 명령을 제1 페이즈 명령이라 칭하며, 제2 페이즈 처리부(130)로 입력되는 페이즈 명령을 제2 페이즈 명령이라 칭하기로 한다.

    본 명세서에서 동일 클럭 또는 제어 신호에 상응하여 산술논리연산부(135)를 통해 연산되는 n개의 페이즈 명령이 산술논리연산부(135)의 동일한 연산기를 중복 사용하지 않도록 구성되는 규칙을 "배타적 페이링 규칙(exclusive paring rules)"이라 정의하기로 한다.

    도 2를 참조하면, 210a 및 210b의 제1 페이즈 명령(즉, mul abc) 및 제2 페이즈 명령(즉, add def)는 산술논리연산부(135)의 곱셈기와 덧셈기를 각각 사용하므로 동일 클럭에 상응하여 각각의 페이즈 명령에 대한 연산을 수행할 수 있음을 알 수 있다. 즉, 210a 및 210b에 예시된 각각의 페이즈 명령은 산술논리연산부(135)의 동일한 연산기의 중복 사용 없이 연산이 수행될 수 있다.

    하기에서 보다 상세히 설명되겠지만, 산술논리연산부(135)는 각각의 컴포넌트(예를 들어, xyzw)에 상응하는 각각의 연산기를 구비하고 있다. 따라서, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)에 의해 처리되는 각각의 페이즈 명령은 각 컴포넌트별로 동일한 연산기를 중복 사용하지 않도록 구성되면 동일 클럭에 상응하여 산술논리연산부(135)에서 연산을 수행할 수 있다.

    220a 및 220b에 예시된 제1 페이즈 명령(mul.xabc, add.yz bc) 및 제2 페이즈 명령(add.xw def, mul.yzw ef)의 경우, 각각 곱셈기 및 덧셈기를 이용하나 컴포넌트가 상이한 것을 알 수 있다. 따라서, 제1 페이즈 명령 및 제2 페이즈 명령는 산술논리연산부(135)의 동일한 연산기를 중복 사용하지 않으므로 동일 클럭에 상응하여 연산을 수행할 수 있음을 알 수 있다.

    230a 및 230b에 예시된 제1 페이즈 명령(add.xyz abc) 및 제2 페이즈 명령(add.xdef)의 경우 동일한 컴포넌트의 연산기(즉 x 컴포넌트의 덧셈기)가 중복사용되어야 하므로 동일 클럭에 상응하여 산술논리연산부(135)에 의해 어느 하나 의 페이즈 명령만 연산됨을 알 수 있다.

    또한, 240a에 예시된 페이즈 명령(RPC 명령)에 대한 연산기는 산술논리연산부(135)에서 하나만 구비되며, RPC 명령은 산술논리연산부(135)의 모든 영역을 공유하여 수행되므로 다른 명령과 동시 실행이 불가능하다.

    또한, 250a 및 250b에 예시된 페이즈 명령(MOV 명령)은 각 컴퍼넌트(X, Y, Z, W) 연산기의 연산 결과의 데이터 패스를 사용한다. 따라서, MOV 명령은 산술논리연산부(135)에 실제 구비된 연산기가 없기 때문에 다른 명령어와는 달리 중복이 허용된다.

    260a 및 260b를 참조하면 제1 페이즈 명령(branch 100) 및 제2 페이즈 명령(branch 200)의 경우 분기 명령의 경우 제어 흐름을 변경하는 명령으로 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130) 중 어느 하나에서 수행되어야만 한다. 본 명세서에서는 이해와 설명의 편의를 위해 분기 및 루프 명령과 같은 복잡 명령들은 제2 페이즈 처리부(130)를 통해서만 수행되는 것을 가정하여 설명하기로 한다.

    또한, 270b에 예시된 간접주소 명령(indirect)의 경우 피연산자에 어드레스가 포함되는 명령으로 레지스터부(120)를 n회 접근해서 소스 데이터를 독출해야만 한다. 따라서, 간접주소 명령의 경우 제1 페이즈 처리부(125)의 제어에 의해 제2 페이즈 처리부(130)에서 수행되어야만 한다. 이로 인해, 간접주소 명령의 경우 제1 페이즈 처리부(125)에서 수행되는 것으로 가정하여 설명하기로 한다.

    전술한 설명에 의해 본 발명에 따른 배타적 페어링 규칙에 대해서는 충분히 숙지가 되었을 것인바 다시 도 1을 참조하여 쉐이더 프로세서(100)의 내부 기능 블록에 대해 설명하기로 한다.

    이하, 본 명세서에서는 쉐이더 명령(예를 들어, MUL, ADD, BL, Call 등)이 최대 4개의 유닛 명령으로 재배열되어 있는 것을 가정하며, 쉐이더 프로세서(100)는 유닛 명령들을 인출하여 각각의 연산을 수행하는 것에 대해 설명하기로 한다.

    쉐이더 프로세서(100)에서 쉐이더 명령어를 하나 이상의 유닛 명령어로 재배열하는 방법은 당업자에게는 자명한 사항이므로 이에 대한 별도의 설명은 생략하기로 한다.

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

    (n은 임의의 자연수)비트 단위의 유닛 명령들을 인출하여 명령 구성부(115)로 출력한다. 본 명세서에서는 쉐이더 명령이 128비트인 것을 가정하며, 하나의 쉐이더 명령은 최대 4개의 유닛 명령으로 구성되어 있는 것을 가정한다. 따라서, 인출부(110)는 프로그램 카운터를 참조하여 회당 4개의 유닛 명령을 인출하여 명령 구성부(115)로 출력한다.

    프로그램 카운터는 인출된 유닛 명령의 개수만큼 증가하며 다음 인출할 명령의 어드레스를 저장하고 있다. 현재 실행하는 명령이 분기 명령일 경우 분가 조건 판단 결과에 따라 프로그램 카운터의 어드레스가 변경된다. 이에 따라 분기 명령 다음에 변경되는 프로그램 카운터가 가리키는 어드레스에 상응하는 명령이 실행된다. 즉, 인출부(110)는 프로그램 카운터를 참조하여 현재 시점에(또는 클럭)에 인 출할 명령의 시작 어드레스를 획득할 수 있다. 이는 당업자에게는 자명한 사항이므로 이에 대한 별도의 설명은 생략하기로 한다.

    이하, 본 명세서에서는 이해와 설명의 편의를 도모하기 위해 쉐이더 명령이 최대 4개의 유닛 명령으로 구성된 것을 가정하여 이를 중점으로 설명하나 4개 이상의 유닛 명령으로 구성될 수도 있음은 당연하다. 또한, 쉐이더 명령을 구성하는 유닛 명령의 개수가 상이해지는 경우 인출부(110)에서 회당 인출하는 유닛 명령의 개수가 상이해질 수 있음은 자명하다.

    이해와 설명의 편의를 도모하기 위해 도 3을 참조하여 유닛 명령의 구조에 대해 간략하게 설명하기로 한다.

    도 3에서 보여지는 바와 같이, 각 유닛 명령은 제1 상태 비트(310), 제2 상태 비트(315) 및 m(임의의 자연수)비트의 명령 비트(320)로 구성된다.

    제1 상태 비트(310)는 각 유닛 명령의 확장 여부를 나타내며, 제2 상태 비트(315)는 당해 유닛 명령이 포함되는 페이즈 명령의 소속 여부를 지시한다.

    예를 들어, 제1 상태 비트(310)가 제1 비트값(예를 들어, "0")이면, 당해 유닛 명령은 확장 명령인 것으로 인식되며, 제1 상태 비트(310)가 제2 비트값(예를 들어, "1")이면 당해 유닛 명령은 마지막 명령으로 인식된다. 이에 대해서는 하기에서 명령 구성부(115)에서 보다 상세히 설명하기로 한다.

    다시 도 1을 참조하면, 인출부(110)는 전술한 바와 같이 프로그램 카운터를 참조하여 복수의 유닛 명령어들을 인출하여 명령 구성부(115)로 출력한다.

    명령 구성부(115)는 인출부(110)를 통해 입력된 k(임의의 자연수)개의 유닛 명령을 분석하여 연산 명령의 개수 및 크기를 결정한다. 그리고, 명령 구성부(115)는 결정된 연산 명령을 분석하여 최대 n(임의의 자연수)개의 페이즈 명령을 생성하여 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125), 제2 페이즈 처리부(130))로 출력한다.

    본 명세서에서 연산 명령은 동일 클럭내에서 산술논리연산부(135)를 통해 동시에 연산 가능한 명령으로 정의하기로 한다.

    예를 들어, 명령 구성부(115)는 입력된 k개의 유닛 명령의 제1 상태 비트들을 분석하여 연산 명령의 크기 및 개수를 결정할 수 있다.

    예를 들어, 도 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개의 유닛 명령을 인출할 수 있다.

    그리고, 명령 구성부(115)는 연산 명령의 크기 및 개수를 결정하고, 해당 연산 명령에 포함된 각 유닛 명령의 제2 상태 비트를 분석하여 페이즈 단위로 분할하여 하나 이상의 페이즈 명령을 생성한다.

    또한, 인출부(110)로부터 인출되는 유닛 명령의 개수가 4개라고 가정하자. 이와 같은 경우 연산 명령은 4가지 형태로 구성될 수 있다.

    즉, 도 3의 325 내지 340에 예시된 바와 같이, 연산 명령은 최소 하나의 유닛 명령으로 구성될 수도 있으며 최대 4개의 유닛 명령으로 구성될 수도 있다.

    이하, 본 명세서에서는 이해와 설명의 편의를 도모하기 위해 하나의 페이즈 명령이 최대 2개의 유닛 명령으로 구성되는 것을 가정하여 이를 중점으로 설명하기로 한다.

    또한, 명령 구성부(115)는 연산 명령에 포한된 각 유닛 명령의 제2 상태 비트가 제1 비트값이면 제1 페이즈 명령으로 인식하며 제2 상태 비트가 제2 비트값이면 제2 페이즈 명령으로 인식할 수 있다.

    다시, 도 1을 참조하면, 레지스터부(120)는 프로그램 카운터 및 복수의 소스 데이터들이 저장된다. 또한, 레지스터부(120)는 산술논리연산부(135)에 의해 연산된 연산 결과가 저장된다.

    본 명세서에서는 두개의 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130))를 포함하는 것을 가정하여 이를 중점으로 설명하기로 한다.

    제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)는 입력된 각 페이즈 명령을 디코딩하여 해당 페이즈 명령에 상응하는 레지스터부(120)에 접속하여 상응하는 소스 데이터를 독출하여 출력하는 기능을 수행한다. 또한, 제2 페이즈 처리부(130)는 제1 페이즈 처리부(125)로부터 서브 명령이 입력되면, 해당 서브 명령에 상응하여 레지스터부(120)로부터 소스 데이터를 독출할 수도 있다.

    본 발명에 따른 레지스터부(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)로부터 소스 데이터를 독출하기까지 일정 시간 동안 대기하도록 할 수도 있다.

    다른 예를 들어, 제1 페이즈 처리부(125)는 명령 구성부(115)로부터 연산 명 령에 대한 정보(예를 들어, 하나의 페이즈 명령인지 두개의 페이즈 명령인지에 대한 정보)를 페이즈 명령과 함께 입력받을 수도 있다.

    즉, 제1 페이즈 처리부(125)는 연산 명령에 대한 정보를 입력받아 당해 연산 명령이 하나의 페이즈 명령으로 구성되었다고 인식되면, 제2 페이즈 처리부(130)의 동작 수행 여부에 상관없이 입력된 페이즈 명령에 따른 소스 데이터를 레지스터부(120)로부터 독출하여 산술논리연산부(135)로 출력하여 연산이 수행되도록 할 수 있다.

    그러나 만일 연산 명령이 두개의 페이즈 명령으로 구성되었다고 인식되면, 제1 페이즈 처리부(125)는 제2 페이즈 처리부(130)가 입력된 페이즈 명령에 따른 소스 데이터를 레짓스터부(120)로부터 독출할때까지 대기한 후 함께 소스 데이터를 산술논리연산부(135)로 출력하도록 제어할 수도 있다. 여기서, 제2 페이즈 처리부(130)는 소스 데이터의 독출이 완료되면, 제1 페이즈 처리부(125)로 제어 신호를 출력하여 독출 완료를 인식하도록 할 수도 있다.

    산술논리연산부(135)는 각각의 컴포넌트별로 m(임의의 자연수)의 연산기를 구비한다. 또한, 산술논리연산부(135)는 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)에 의해 공유된다. 즉, 산술논리연산부(135)는 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130)로부터 동일 클럭에 상응하여 각각 제1 페이즈 명령 및 제2 페이즈 명령 중 하나 이상을 입력받을 수 있다. 그리고, 산술논리연산부(135)는 동일 클럭에 상응하여 각 페이즈 처리부(예를 들어, 제1 페이즈 처리부(125) 및 제2 페이즈 처리부(130))로부터 각각 소스 데이터를 입력받아 미리 정해진 연산을 수행하여 연산 결과를 출력할 수 있다.

    도 5는 본 발명의 일 실시예에 따른 연산 명령에 따른 페이즈 명령의 구성을 예시한 도면이다.

    도 5에서 보여지는 바와 같이, 연산 명령은 최대 4개의 유닛 명령으로 구성되어 있다. 510에 예시된 연산 명령 MUL_sat A, B, C는 하나의 유닛 명령으로 구성되어 있으므로, 제1 페이즈 처리부(125)에 의해 처리될 수 있다.

    또한, 515에 예시된 연산 명령 ADD A, B, C는 두개의 유닛 명령으로 구성된 하나의 페이즈 명령이므로, 제1 페이즈 처리부(125)에 의해 처리될 수 있다.

    그리고, 520에 예시된 연산 명령 ADD A, B[DW], C는 하나의 ADDR 명령 및 하나의 덧셈 명령으로 구성될 수 있으므로, 두개의 페이즈 명령으로 구성하여 동시에 연산될 수 있음을 알 수 있다.

    또한, 525의 연산 명령 ADD_predicate(E) A, B, C[Dw]는 2개의 페이즈 명령으로 구성될 수 있다. 즉, ADDR DW 및 PREDZ E의 유닛 명령으로 구성된 제1 페이즈 명령과 ADD 명령으로 구성된 제2 페이즈 명령으로 구성하여 하나의 산술논리연산부(135)를 통해 동시에 연산을 수행하도록 할 수 있다.

    도 6은 본 발명의 일 실시예에 따른 쉐이더 프로세서가 임의의 명령에 대한 연산을 수행하는 방법을 나타낸 순서도이다. 이하에서 설명되는 각각의 단계는 쉐이더 프로세서(100)의 각각의 내부 구성 요소에 의해 수행되어지나 이해와 설명의 편의를 도모하기 위해 쉐이더 프로세서(100)로 통칭하여 설명하기로 한다.

    단계 610에서 쉐이더 프로세서(100)는 프로그램 카운터를 참조하여 k(임의의 자연수)개의 유닛 명령을 인출한다.

    단계 615에서 쉐이더 프로세서(100)는 인출된 k개의 유닛 명령을 분석하여 연산 명령의 크기 또는 개수를 결정하며, 결정된 연산 명령을 분석하여 하나 이상의 페이즈 명령을 생성한다.

    연산 명령의 크기 또는 개수를 결정하는 방법 및 당해 연산 명령을 분석하여 페이즈 단위로 구분하여 하나 이상의 페이즈 명령을 생성하는 방법은 전술한 바와 동일하므로 이에 대한 중복되는 설명은 생략하기로 한다.

    단계 620에서 쉐이더 프로세서(100)는 생성된 각 페이즈 명령에 따른 소스 데이터를 레지스터부(120)로부터 독출하여 출력한다.

    전술한 바와 같이, 본 발명에 따른 쉐이더 프로세서(100)는 n(임의의 자연수)개의 페이즈 처리부를 하나의 레지스터부(120) 및 산술논리연산부(135)를 공유하고 있는 구조이다. 이로 인해, 쉐이더 프로세서(100)는 미리 정해진 일정 시간 간격으로 레지스터부에 접근하여 각각의 페이즈 명령에 상응하는 소스 데이터를 독출할 수 있다. 이에 대해서는 전술한 바와 같으므로 중복되는 설명은 생략하기로 한다.

    단계 625에서 쉐이더 프로세서(100)는 각각의 소스 데이터에 대한 연산을 수행하여 연산 결과를 출력한다.

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

    도 1은 본 발명의 일 실시예에 따른 쉐이더 프로세서의 내부 기능 블록을 예시한 도면.

    도 2는 본 발명의 일 실시예에 따른 배타적 페어링 규칙을 설명하기 위한 예시도면.

    도 3은 본 발명의 일 실시예에 따른 연산 명령의 형태를 예시한 도면.

    도 4는 본 발명의 일 실시예에 따른 유닛 명령어들의 인출 과정을 설명하기 위해 예시한 도면.

    도 5는 본 발명의 일 실시예에 따른 연산 명령에 따른 페이즈 명령의 구성을 예시한 도면.

    도 6은 본 발명의 일 실시예에 따른 쉐이더 프로세서가 임의의 명령에 대한 연산을 수행하는 방법을 나타낸 순서도.

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈