KR100904318B1 - 단일 명령, 다중 데이터 실행 엔진에 대한 조건형 명령 - Google Patents

단일 명령, 다중 데이터 실행 엔진에 대한 조건형 명령 Download PDF

Info

Publication number
KR100904318B1
KR100904318B1 KR1020067027369A KR20067027369A KR100904318B1 KR 100904318 B1 KR100904318 B1 KR 100904318B1 KR 1020067027369 A KR1020067027369 A KR 1020067027369A KR 20067027369 A KR20067027369 A KR 20067027369A KR 100904318 B1 KR100904318 B1 KR 100904318B1
Authority
KR
South Korea
Prior art keywords
conditional
instruction
data
mask register
executed
Prior art date
Application number
KR1020067027369A
Other languages
English (en)
Other versions
KR20070032723A (ko
Inventor
마이클 드와이어
홍 지앙
토마스 피아짜
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20070032723A publication Critical patent/KR20070032723A/ko
Application granted granted Critical
Publication of KR100904318B1 publication Critical patent/KR100904318B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

일부 실시예들에 따라, 조건형 단일 명령(Single Instructioin), 다중 데이터 명령(Multiple Data instruction)이 제공된다. 예를 들어, 제1 조건형 명령이 n-채널 SIMD 실행 엔진에서 수신될 수 있다. 제1 조건형 명령은 다중 채널의 연관된 데이터에 기초하여 평가될 수 있으며, 평가의 결과는 n-비트 조건형 마스크 레지스터에 저장될 수 있다. 다음으로, 제2 조건형 명령이 실행 엔진에서 수신될 수 있으며, 그 결과는 조건형 마스크 레지스터에서 n-비트, m-엔트리 깊이의 조건형 스택으로 복사될 수 있다.
단일 명령, 다중 데이터, 조건형, 스택, 마스크 레지스터

Description

단일 명령, 다중 데이터 실행 엔진에 대한 조건형 명령{CONDITIONAL INSTRUCTION FOR A SINGLE INSTRUCTION, MULTIPLE DATA EXECUTION ENGINE}
프로세싱 시스템의 성능을 향상시키기 위해서, 단일 명령, 다중 데이터(SIMD; Single Instruction, Multiple Data) 명령이 단일 명령 기간에 데이터의 다중 오퍼랜드에 대해 동시에 실행될 수 있다. 예를 들어, 8-채널 SIMD 실행 엔진은 데이터의 8개의 32-비트 오퍼랜드에 대한 명령을 동시에 실행할 수 있으며, 각각의 오퍼랜드는 SIMD 실행 엔진의 고유한 연산 채널에 매핑된다(mapped). 일부 경우, 명령은 "조건형(conditional)"일 수 있다. 즉, 명령 또는 명령 세트는 사전 결정된 조건이 만족되는 경우에만 실행될 수 있다. SIMD 실행 엔진의 경우, 이러한 조건은 일부 채널에 대해서는 만족되고 다른 채널에 대해서는 만족되지 않을 수 있음에 유의하여야 한다.
도 1 및 2는 프로세싱 시스템을 도시하는 도면.
도 3-5는 일부 실시예들에 따른 SIMD 실행 엔진을 도시한 도면.
도 6-9는 일부 실시예들에 따른 SIMD 실행 엔진을 도시한 도면.
도 10은 일부 실시예들에 따른 방법의 흐름도.
도 11-13은 일부 실시예들에 따른 SIMD 실행 엔진을 도시한 도면.
도 14는 일부 실시예들에 따른 방법의 흐름도.
도 15는 일부 실시예들에 따른 시스템의 블럭도.
본 명세서에 설명되는 일부 실시예들은 "프로세싱 시스템"과 연관된다. 본 명세서에서 사용되는 바와 같이, "프로세싱 시스템"이라는 구문은 데이터를 처리하는 임의의 장치를 말할 수 있다. 예컨대, 프로세싱 시스템은 그래픽 데이터 및/또는 다른 종류의 미디어 정보를 처리하는 그래픽 엔진과 연관될 수 있다. 일부 경우, 프로세싱 시스템의 성능은 SIMD 실행 엔진을 사용하여 향상될 수 있다. 예를 들어, SIMD 실행 엔진은 (예컨대, 변환을 가속시키고 및/또는 3차원 기하학적 모양을 렌더링하기 위해) 데이터의 다중 채널에 대한 단일한 부동 소수점 SIMD 명령을 동시에 실행할 수 있다.
도 1은 SIMD 실행 엔진(110)을 포함하는 한 종류의 프로세싱 시스템(100)을 도시한다. 이 경우, 실행 엔진은 4개-컴포넌트 데이터 벡터{예컨대, 각각의 비트를 갖고 SIMD 실행 엔진(110)의 대응 채널 0에서 3 상에서의 처리를 위해 배열되는 벡터 컴포넌트 X, Y, Z 및 W}를 따라 명령을 수신한다. 다음으로, 엔진(110)은 벡터 내의 모든 컴포넌트에 대한 명령을 동시에 실행할 수 있다. 이러한 접근법을 "수평적(horizontal)" 또는 "구조 배열(array of structures)" 구현이라고 부른다.
도 2는 SIMD 실행 엔진(210)을 포함하는 다른 종류의 프로세싱 시스템(200)을 도시한다. 이 경우, 실행 엔진은 데이터의 4개의 오퍼랜드(operands)를 따라 명령을 수신하며, 여기서 각각의 오퍼랜드는 서로 다른 벡터와 연관된다(예컨대, 벡터 0에서 3으로부터의 4개의 X 컴포넌트). 다음으로, 엔진(210)은 단일 명령 기간(period)에 모든 오퍼랜드에 대한 명령을 동시에 실행할 수 있다. 이러한 접근법을 "채널-직렬(channel-serial)" 또는 "배열 구조(structure of arrays)" 구현이라고 부른다.
일부 SIMD 명령은 조건형(conditional)일 수 있음에 유의하여야 한다. 예로서, 아래의 명령 세트를 살펴본다.
IF (조건 1)
제1 명령 세트
ELSE
제2 명령 세트
END IF
여기서, 제1 명령 세트는 "조건 1"이 참(true)일 때 실행될 것이고, 제2 명령 세트는 "조건 1"이 거짓(false)일 때 실행될 것이다. 그러나, 이러한 명령이 데이터의 다중 채널에 대해 동시에 실행될 때, 상이한 채널은 상이한 결과를 낼 수 있다. 즉, 제1 명령 세트는 일부 채널들에 대해 실행되고 제2 명령 세트는 다른 채널들에 대해 실행될 필요가 있을 수 있다.
도 3-5는 일부 실시예들에 따른 4-채널 SIMD 실행 엔진(300)을 도시한다. 엔진(300)은 4-비트 조건형 마스크 레지스터(310)를 포함하며, 그 안의 각각의 비트는 대응하는 연산 채널과 연관된다. 조건형 마스크 레지스터(310)는 예컨대, 엔진(300) 내에 하드웨어 레지스터를 포함할 수 있다. 엔진(300)은 4-비트 너비, m-엔트리 깊이의 조건형 스택(320)을 포함할 수도 있다. 조건형 스택(320)은 예컨대, 일련의 하드웨어 레지스터, 메모리 위치(locations) 및/또는 하드웨어 레지스터 및 메모리 위치의 조합{예컨대, 10개 엔트리 깊이의 스택에서, 스택(320)의 처음 4개 엔트리는 하드웨어 레지스터이고, 나머지 6개의 엔트리는 메모리에 저장되는 경우}을 포함할 수 있다. 비록 도 3에 도시된 엔진(300), 조건형 마스크 레지스터(310) 및 조건형 스택(320)은 4개 채널과 연관되어 있으나, 다른 수의 채널(예컨대, x 채널 실행 엔진)과 연관되고 각각의 연산 채널은 y-비트 오퍼랜드를 처리할 수 있도록 구현될 수 있음에 유의한다.
엔진(300)은 데이터의 4개의 상이한 채널(예컨대, 4개의 연산 채널과 연관됨)에 대한 명령을 수신하고 동시에 실행할 수 있다. 일부 경우에 있어서, 4개보다 적은 채널이 필요할 수 있음에 유의하여야 한다(예컨대, 4개보다 적은 유효 오퍼랜드가 있는 경우). 그 결과, 조건형 마스크 벡터(310)는 어느 채널이 유효한 오퍼랜드를 가지고 있고 어느 것이 그렇지 않은지를 나타내는 초기화 벡터로 초기화될 수 있다(예컨대, 오퍼랜드 i0에서 i3까지, 연관된 채널이 현재 인에이블되었음을 나타낼 때 "1"을 이용). 다음으로, 조건형 마스크 벡터(310)는 불필요한 처리를 피하기 위해 사용될 수 있다{예컨대, 명령은 "1"로 설정된 조건형 마스크 레지스터(310)의 오퍼랜드에 대해서만 실행될 수 있다}. 일부 실시예들에 따르면, 조건형 마스크 레지스터(310)의 정보는 다른 레지스터의 정보와 결합될 수 있으며{예컨대, 불리언(Boolean) AND 연산을 통해}, 그 결과는 전체(overall) 실행 마스크 레지스터(불필요하거나 적당하지 않은 처리를 피하기 위해 다음에 사용될 수 있음)에 저장될 수 있다.
도 4에 도시된 바와 같이, 엔진(300)이 조건형 명령(예컨대, "IF"문)을 수신하는 경우, 조건형 마스크 레지스터(310)의 데이터는 조건형 스택(320)의 최상부(top)에 복사된다. 또한, 명령은 조건형 마스크 레지스터의 정보에 따라 4개의 오퍼랜드 각각에 대해 실행된다. 예를 들어, 초기화 벡터가 "1110"인 경우, IF문과 연관된 조건은 최하위 비트(LSB; Least Significant Bit)가 아니라(예컨대, 채널이 현재 인에이블되지 않았으므로), 3개의 최상위 오퍼랜드(MSBs; Most Significant operands)와 연관된 데이터에 대해 평가될 것이다. 다음으로, 그 결과는 조건형 마스크 레지스터(310)에 저장되어, IF문과 연관된 문장들(statements)에 대한 불필요한 처리 및/또는 적절하지 않은 처리를 피하기 위해 사용될 수 있다. 예를 들어, IF문과 연관된 조건의 결과가 "110x"라면(채널이 인에이블되지 않았으므로 x는 평가되지 않았음), "1100"이 조건형 마스크 레지스터(310)에 저장될 수 있다. 다음으로, IF문과 연관된 다른 명령이 실행되는 경우, 엔진(300)은 (2개의 LSB와 연관된 데이터가 아니라) 2개의 MSB와 연관된 데이터에 대해서만 명령을 실행할 것이다.
도 5에 도시된 바와 같이, 엔진(300)이 조건형 명령과 연관된 명령의 끝(end)에 도달하였다는 지시를 수신하는 경우(예컨대, "END IF"문), 조건형 스택(320)의 최상부(예컨대, 초기화 벡터)에 있는 데이터는, 조건 블록에 진입하기 전 어느 채널이 유효한 데이터를 보유하고 있는지를 나타내는 콘텐츠를 복구하는 조건형 마스크 레지스터(310)로 되돌아가도록 전송될 수 있다. 다음으로, 다음 명령이 인에이블된 채널과 연관된 데이터에 대해 실행될 수 있다. 그 결과, SIMD 엔진(300)은 조건형 명령을 효율적으로 처리할 수 있다.
일부 실시예들에 따르면, 하나의 조건형 명령은 다른 조건형 명령과 연관된 명령 세트의 내부에 "내포(nested)"될 수 있다. 예로서, 아래의 명령 세트를 살펴본다.
IF (조건 1)
제1 명령 세트
IF (조건 2)
제2 명령 세트
END IF
제3 명령 세트
END IF
이 경우, 제1 및 제3 명령 세트는 "조건 1"이 참일 때 실행되어야 하며, 제2 명령 세트는 "조건 1"과 "조건 2"가 모두 참일 때에만 실행되어야 한다.
도 6-9는 일부 실시예들에 따른 조건형 마스크 레지스터(610)(예컨대, 초기화 벡터로 초기화됨) 및 조건형 스택(620)을 포함하는 SIMD 실행 엔진(600)을 도시한다. 앞에서와 같이, 조건형 마스크 레지스터(610)의 정보는 스택(620)의 최상부에 복사되고, 데이터의 채널은 (i)조건형 마스크 레지스터(610)의 정보 및 (ii)제1 조건형 명령과 연관된 조건(예컨대, "조건 1")에 따라 평가된다. 평가의 결과(예컨대, r10에서 r13까지)는 도 7에 도시된 바와 같이 제1 조건형 명령이 실행될 때(예컨대, 제1 IF문) 조건형 마스크 레지스터(610)에 저장된다. 다음으로, 엔진(600)은 조건형 마스크 레지스터(610)의 정보에 의해 나타난 것과 같이 데이터의 다중 오퍼랜드에 대한 제1 조건형 명령과 연관된 다음 명령을 실행할 수 있다.
도 8은 일부 실시예들에 따른 다른 내포된 조건형 명령(예컨대, 제2 IF문)의 실행을 도시한다. 이 경우, 조건형 마스크 레지스터(610)의 현재 정보는 스택(620)의 최상부에 복사된다. 그 결과, 이전에 스택(620)의 최상부에 있던 정보(예컨대, 초기화 벡터)는 한 엔트리만큼 밀려 내려가게 된다. 다음으로, 데이터의 다중 채널은 (i)조건형 마스크 레지스터(610)의 현재 정보(예컨대, r10에서 r13까지) 및 제2 조건형 명령과 연관된 조건(예컨대, "조건 2")에 따라 동시에 평가된다. 다음으로, 이 평가의 결과는 조건형 마스크 레지스터(예컨대, r20에서 r23까지)에 저장되고, 조건형 마스크 레지스터(610)의 정보에 의해 나타난 것과 같이 데이터의 다중 오퍼랜드에 대한 제2 조건형 명령과 연관된 다음 명령을 실행하기 위해 엔진(600)에 의해 사용될 수 있다.
도 9에 도시된 바와 같이, 엔진(600)이 제2 조건형 명령과 연관된 명령의 끝에 도달했다는 지시를 수신하는 경우(예컨대, "END IF"문), 조건형 스택(620)의 최상부에 있는 데이터(예컨대, r10에서 r13까지)는 조건형 마스크 레지스터(610)로 되돌아가도록 이동될 수 있다. 다음으로, 다음 명령은 조건형 마스크 레지스터(620)에 따라 실행될 수 있다. 다른 END IF문을 만난 경우(도 9에 도시되지 않음), 초기화 벡터는 조건형 마스크 레지스터(610)로 되돌아가도록 전송되고 다음 명령은 인에이블된 채널과 연관된 데이터에 대해 실행될 수 있다.
조건형 스택(620)의 깊이는 엔진(600)에 의해 지원되는 조건형 명령 내포(nesting)의 레벨 수와 연관될 수 있음에 유의한다. 일부 실시예들에 따르면, 조건형 스택(620)은 단지 하나의 엔트리 깊이이다(예컨대, 스택은 실제로 n-오퍼랜드 너비 레지스터가 될 수 있다).
도 10은 예컨대, 여기에 설명된 일부 실시예들과 관련하여 수행될 수 있는 방법의 흐름도이다. 여기에 설명된 흐름도는 동작에 대한 고정된 순서를 반드시 포함하는 것이 아니며, 실시예들은 실시가능한 임의의 순서로 수행될 수 있다. 여기에 설명된 임의의 방법들은 하드웨어, 소프트웨어(마이크로코드를 포함), 펌웨어 또는 이들의 임의의 조합에 의해 수행될 수 있음에 유의한다. 예를 들어, 저장 매체는 컴퓨터(machine)에 의해 실행될 때 여기에 설명된 임의의 실시예들에 따른 수행의 결과를 내는 명령을 그 안에 저장하고 있을 수 있다.
단계(1002)에서, 조건형 마스크 레지스터가 초기화된다. 예를 들어, 초기화 벡터는 현재 인에이블된 채널에 기초하여 조건형 마스크 레지스터에 저장될 수 있 다. 다른 실시예에 따르면, 조건형 마스크 레지스터는 간단하게 모두 1로 초기화된다(예컨대, 모든 채널이 항상 인에이블된 것으로 가정됨).
그 다음 SIMD 명령이 단계(1004)에서 수취된다(retrieved). 예를 들어, SIMD 실행 엔진은 메모리 유닛으로부터 명령을 수신할 수 있다. 단계(1006)에서 SIMD 명령이 "IF" 명령인 경우, 이 명령과 연관된 조건이 조건형 마스크 레지스터에 따라 단계(1008)에서 평가된다. 즉, 상기 조건은 조건형 마스크 레지스터에서 "1"을 갖는 채널과 연관된 오퍼랜드들에 대해 평가된다. 일부 경우, 조건형 마스크 레지스터에 "1"을 가지는 채널이 하나이거나 또는 없을 수 있음을 유의하여야 한다.
단계(1010)에서, 조건형 마스크 레지스터의 데이터는 조건형 스택의 최상부로 전송된다. 예를 들어, 조건형 마스크 레지스터의 현재 상태는 "IF" 명령과 연관된 명령이 실행된 후 나중에 복원되기 위해 저장될 수 있다. 다음으로, 평가의 결과는 조건형 마스크 레지스터에 저장되고(1012), 방법은 단계(1004)에서 계속된다(예컨대, 그 다음 SIMD 명령이 수취될 수 있다).
단계(1006)에서 SIMD 명령이 "IF" 명령이 아닌 경우, 단계(1014)에서 그 명령이 "END IF" 명령인지 여부가 결정된다. "END IF" 명령이 아닌 경우, 그 명령이 실행된다(1018). 예를 들어, 조건형 마스크 레지스터에 나타난 것과 같이 데이터의 다중 채널에 대해 상기 명령이 실행될 수 있으며, 스택의 잔여 값들은 한 위치 위로 이동된다.
단계(1014)에서 "END IF" 명령을 만난 것으로 결정되는 경우, 단계(1016)에서 조건형 스택의 최상부에 있는 정보는 조건형 레지스터로 되돌아가도록 이동된다.
일부 경우, 조건형 명령은 (i)조건이 참인 경우 실행되는 제1 명령 세트 및 (ii)조건이 거짓인 경우 실행되는 제2 명령 세트(예컨대, ELSE문과 연관됨) 모두와 연관될 것이다. 도 11-13은 일부 실시예들에 따른 SIMD 실행 엔진(1100)을 도시한다. 앞에서와 같이, 엔진(1100)은 초기화된 조건형 마스크 레지스터(1110) 및 조건형 스택(1120)을 포함한다. 이 경우, 엔진(1100)은 데이터의 16개 오퍼랜드에 대한 명령을 동시에 실행할 수 있음에 유의한다. 이 실시예에 따르면, 조건형 명령은 또한 제2 명령 세트와 연관된 주소를 포함한다. 특히, 평가된 데이터의 모든 오퍼랜드에 대해 조건이 참이 아닌 것으로 결정된 경우{예컨대, 인에이블되어 있고, 높은 레벨 IF문 때문에 마스크되지(masked) 않은 채널에 대해}, 엔진(1100)은 그 주소로 직접 점프(jump)할 것이다. 이런 방식으로, 엔진(1100)의 성능은 향상될 수 있으며, 이는 IF-ELSE 짝 사이의 불필요한 명령을 피할 수 있기 때문이다. 조건형 명령이 ELSE 명령과 연관되지 않는 경우, 주소는 그 대신 END IF 명령과 연관될 수 있다. 다른 실시예에 따르면, ELSE 명령은 END IF 명령의 주소를 포함할 수도 있다. 이 경우, 엔진(1100)은 조건이 모든 채널에 대해 참인 때(따라서 ELSE와 연관된 어느 명령도 실행될 필요가 없는 때) END IF 명령으로 직접 점프할 수 있다.
도 12에 도시된 바와 같이, 조건형 명령을 만난 때, 조건형 마스크 레지스터(1100)의 정보는 조건형 스택(1120)으로 복사된다. 또한, 상기 명령과 연관된 조건은 조건형 마스크 레지스터(1110)에 따라 다중 채널에 대해 평가될 수 있으며{예컨대, 미결정된(pending) 더 높은 레벨의 IF 명령이 없는 경우 모든 인에이블된 채널에 대해}, 그 결과는 조건형 마스크 레지스터(1110)(예컨대, 오퍼랜드 r0에서 r15까지)에 저장된다. 다음으로, IF문과 연관된 명령은 조건형 마스크 레지스터(1110)에 따라 실행될 수 있다.
도 13에 도시된 바와 같이 ELSE 명령을 만난 경우, 엔진(1100)은 조건형 마스크 레지스터(1110)의 모든 오퍼랜드를 단순히 반전시킬(invert) 수 있다. 이런 방식으로, IF 명령과 관련하여 실행되지 않았던 채널과 연관된 데이터가 이제 실행될 것이다. 그러나, 이러한 접근법은 일부 채널을 부적절하게 1로 설정하는 결과를 가져올 수 있어, 그러한 채널 상에서 실행이 일어나지 않아야 할 때 ELSE 이하의 명령을 실행할 수 있다. 예를 들어, IF-ELSE-END IF 코드 블록에 진입하자마자 현재 인에이블되지 않은 채널이 IF 명령 및 ELSE 명령 모두에 대해 마스크되어야 한다(예컨대, 0으로 설정). 이와 유사하게, 더 높은 레벨의 IF 명령 때문에 현재 마스크된 채널은 마스크된 상태로 남아있어야 한다. 이러한 문제를 피하기 위해, ELSE 명령을 만나는 경우 조건형 마스크 레지스터(1110)의 모든 오퍼랜드를 단순히 반전시키는 대신, 엔진(1100)은 새로운 마스크 = NOT(마스크) AND 최상부-스택(top-of-stack)과 같은 불리언을 통해 조건형 마스크 레지스터(1110)의 현재 정보를 조건형 스택(1120)의 최상부에 있는 정보와 결합시킬 수 있다.
도 14는 일부 실시예들에 따른 방법의 흐름도이다. 단계(1402)에서, 조건형 SIMD 명령이 수신된다. 예를 들어, SIMD 실행 엔진은 메모리 유닛으로부터 IF 명령을 수취할 수 있다. 다음으로 단계(1404)에서, 엔진은 (i)조건형 마스크 레지스터의 현재 정보를 조건형 스택으로 복사하고, (ii)데이터의 다중 채널 및 조건형 마스크 레지스터에 따른 조건을 평가하며, (iii)평가의 결과를 조건형 마스크 레지스터에 저장할 수 있다.
단계(1406)에서, 평가된 임의의 채널이 참인 경우, IF 명령과 연관된 제1 명령 세트가 조건형 마스크 레지스터에 따라 단계(1408)에서 실행될 수 있다. 선택적으로, 단계(1406)에서 참인 채널이 존재하지 않는다면, 이 명령들을 건너뛸 수 있다(skipped).
ELSE문을 만난 때, 조건형 마스크 레지스터의 정보는 NOT(조건형 마스트 레지스터) AND 스택-최상부(top-of-stack)와 같은 채널당(per-channel) 불리언 연산을 통해 조건형 스택의 최상부에 있는 정보와 결합될 수 있다(1410). 다음으로, 제2 명령 세트가 단계(1414)에서 실행될 수 있고(예컨대, ELSE 명령과 연관됨), 조건형 마스크 레지스터가 단계(1416)에서 조건형 스택으로부터 복원될 수 있다. 선택적으로, 단계(1412)에서 참인 채널이 존재하지 않는 경우, 이러한 명령들을 건너뛸 수 있다.
도 15는 일부 실시예들에 따른 시스템(1500)의 블럭도이다. 시스템(1500)은 예컨대, 디지털 텔레비전 신호를 기록하고 및/또는 디스플레이하도록 적용된 미디어 프로세서와 연관될 수 있다. 시스템(1500)은 본 명세서에 설명된 임의의 실시예들에 따른 n-오퍼랜드 SIMD 실행 엔진(1520)을 갖는 그래픽 엔진(1510)을 포함한 다. 예를 들어, SIMD 실행 엔진(1520)은 (i)제1 "if" 조건 및 (ii)다중 채널과 연관된 데이터의 평가 결과를 저장하기 위한 n-오퍼랜드 조건형 마스크 벡터를 포함할 수 있다. SIMD 실행 엔진(1520)은 제2 "if" 명령을 만나는 경우 결과를 저장하기 위한 n-비트 너비, m-엔트리 깊이의 조건형 스택을 포함할 수도 있다. 시스템(1500)은 SIMD 명령을 저장하기 위한 명령 메모리 유닛(1530) 및 그래픽 데이터(예컨대, 3차원 이미지와 연관된 벡터)를 저장하기 위한 그래픽 메모리 유닛(1540)을 포함할 수도 있다. 명령 메모리 유닛(1530) 및 그래픽 메모리 유닛(1540)은 예컨대, 램(RAM) 유닛을 포함할 수 있다.
이하에 다양한 부가적 실시예들을 예시한다. 이들은 모든 가능한 실시예들의 정의를 구성하고 있지 않으며, 당업자는 다른 많은 실시예들이 가능함을 이해할 것이다. 또한, 이하의 실시예들은 명료함을 위해 간단히 설명되었으나, 당업자는 필요한 경우, 이러한 및 다른 실시예들과 응용들을 수용하기 위해 앞의 설명에 임의의 변경을 하는 방법을 이해할 것이다.
일부 실시예들이 별개의 조건형 마스크 레지스터 및 조건형 스택에 대하여 설명되었으나, 임의의 실시예는 단지 하나의 조건형 스택과 연관될 수 있다(예컨대, 현재의 마스크 정보는 스택의 최상부 엔트리와 연관될 수 있다).
또한, 상이한 실시예들이 설명되었으나, 실시예들의 임의의 조합이 구현될 수 있음에 유의한다(예컨대, IF문 및 ELSE문 모두 주소를 포함할 수 있다). 또한, 예시들은 인에이블되지 않은 채널을 나타내기 위해 "0"을 사용하였으나, 다른 실시예들에 따르면 "1"이 채널이 현재 인에이블되지 않았음을 대신 나타낼 수 있다.
본 명세서에 설명된 몇몇 실시예들은 단순히 예시의 목적을 위한 것이다. 당업자는 이 기재로부터 다른 실시예들이 단지 특허청구범위에 의해 제한되는 변경 및 대체를 이용하여 실시될 수 있음을 인식할 것이다.

Claims (20)

  1. 제1 조건형(conditional) 명령을 n-오퍼랜드 단일(single) 명령, 다중(multiple) 데이터 실행 엔진에서 수신하는 단계;
    연관된 데이터의 다중 오퍼랜드에 기초하여 상기 제1 조건형 명령을 평가하는 단계;
    상기 평가의 결과를 n-비트 조건형 마스크 레지스터에 저장하는 단계;
    상기 실행 엔진에서 제2 조건형 명령을 수신하는 단계; 및
    상기 조건형 마스크 레지스터로부터의 결과를 n-비트 너비, m-엔트리 깊이의 조건형 스택에 복사하는 단계
    를 포함하고,
    상기 제1 조건형 명령은, (i) 조건이 참(true)일 때 실행되는 제1 명령 세트 및 (ii) 상기 조건이 거짓(false)일 때 실행되는 제2 명령 세트와 연관되고,
    상기 제1 조건형 명령은 상기 제2 명령 세트와 연관된 주소를 포함하며,
    상기 평가가 상기 제1 조건형 명령이 상기 연관된 데이터의 임의의 평가된 비트에 대해 만족되지 않음을 나타낼 때, 상기 주소로 점프하는 단계를 더 포함하는 방법.
  2. 제1항에 있어서,
    상기 조건형 마스크 레지스터 내의 데이터 및 상기 연관된 데이터의 다중 오퍼랜드에 기초하여 상기 제2 조건형 명령을 평가하는 단계;
    상기 제2 조건형 명령의 평가 결과를 상기 조건형 마스크 레지스터에 저장하는 단계;
    상기 제2 조건형 명령과 연관된 명령들을 상기 조건형 마스크 레지스터 내의 데이터에 따라 실행하는 단계;
    상기 조건형 스택의 최상부(top)를 상기 조건형 마스크 레지스터로 이동시키는 단계; 및
    상기 제1 조건형 명령과 연관된 명령들을 상기 조건형 마스크 레지스터 내의 데이터에 따라 실행하는 단계
    를 더 포함하는 방법.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 제1 명령 세트를 실행하는 단계;
    상기 조건형 마스크 레지스터 내의 데이터를 불리언(Boolean) 연산을 통해 상기 조건형 스택의 최상부에 있는 데이터와 결합시키는 단계;
    상기 결합의 결과를 상기 조건형 마스크 레지스터에 저장하는 단계; 및
    상기 제2 명령 세트를 상기 조건형 마스크 레지스터 내의 데이터에 따라 실행하는 단계
    를 더 포함하는 방법.
  6. 제1항에 있어서,
    상기 연관된 데이터의 n-오퍼랜드 각각은 하나의 채널과 연관되고,
    상기 제1 조건형 명령을 수신하기 전에,
    실행을 위해 인에이블되는(enabled) 채널들에 기초하여 상기 조건형 마스크 레지스터를 초기화하는 단계
    를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 조건형 스택은 1 보다 많은 엔트리 깊이인 방법.
  8. (i) "if" 명령 조건 및 (ii) 다중 채널과 연관된 데이터의 평가 결과를 저장하기 위한 n-비트 조건형 마스크 벡터; 및
    상기 평가 결과보다 전에 상기 조건형 마스크 벡터 내에 존재했던 정보를 저장하기 위한 n-비트 너비, m-엔트리 깊이의 조건형 스택
    을 포함하고,
    상기 "if" 명령 조건은, (i) 참 조건과 연관된 오퍼랜드들에 대해 실행될 제1 명령 세트 및 (ii) 거짓 조건과 연관된 오퍼랜드들에 대해 실행될 제2 명령 세트와 연관되고,
    상기 "if" 명령 조건은 상기 제2 명령 세트와 연관된 주소를 포함하고, 모든 채널에 대해 결과가 거짓일 때, 상기 주소를 참조하여, 상기 제2 명령 세트가 실행되는 장치.
  9. 제8항에 있어서,
    연관된 "end if" 명령 조건이 실행되는 때 상기 정보는 상기 조건형 스택으로부터 상기 조건형 마스크 벡터로 전송되는 장치.
  10. 삭제
  11. 삭제
  12. 제8항에 있어서,
    (i) 상기 제1 명령 세트를 실행하고, (ii) 상기 조건형 마스크 벡터 내의 정보를 상기 조건형 스택의 최상부에 있는 정보와 결합시키며, (iii) 상기 결합의 결과를 상기 조건형 마스크 벡터에 저장하고, (iv) 상기 제2 명령 세트를 실행하기 위한 엔진
    을 더 포함하는 장치.
  13. 제8항에 있어서,
    상기 조건형 마스크 벡터는 인에이블된 채널들에 따라 초기화되는 장치.
  14. 제8항에 있어서,
    상기 조건형 스택은 1-엔트리 깊이인 장치.
  15. 머신(machine)에 의해 실행될 때 다음의 동작들을 야기하는 명령들을 저장하고 있는 저장 매체로서, 상기 동작들은,
    n-채널 단일 명령, 다중-데이터 실행 엔진에서 제1 조건문(conditional statement)을 수신하는 동작;
    연관된 데이터의 다중 채널에 대해 상기 제1 조건문을 동시에 평가하는 동작;
    상기 평가의 결과를 n-비트 조건형 마스크 레지스터에 저장하는 동작;
    상기 실행 엔진에서 제2 조건문을 수신하는 동작; 및
    상기 결과를 상기 조건형 마스크 레지스터에서 n-비트 너비, m-엔트리 깊이의 조건형 스택으로 복사하는 동작
    을 포함하고,
    상기 제1 조건문은, (i) 조건이 참일 때 실행되는 제1 문장 세트(first set of statements)와 연관되고, (ii) 상기 조건이 거짓일 때 실행되는 제2 문장 세트(second set of statements)와 연관되며, (iii) 상기 제2 문장 세트와 연관된 주소를 포함하고, 상기 저장 매체는 머신(machine)에 의해 실행될 때,
    상기 평가가 상기 제1 조건문이 상기 연관된 데이터의 임의의 n-채널에 대해 참이 아님을 나타낼 때, 상기 주소로 점프하는 동작
    을 야기하는 명령들을 더 포함하는 저장 매체.
  16. 삭제
  17. 제15항에 있어서,
    상기 저장 매체는 머신(machine)에 의해 실행될 때,
    상기 조건형 마스크 레지스터의 데이터 및 상기 연관된 데이터의 n-채널에 기초하여 상기 제2 조건문을 평가하는 동작;
    상기 제2 조건문의 평가 결과를 상기 조건형 마스크 레지스터에 저장하는 동작;
    상기 제2 조건문과 연관된 문장들을 상기 조건형 마스크 레지스터 내의 데이터에 따라 실행하는 동작;
    상기 조건형 스택의 최상부를 상기 조건형 마스크 레지스터로 전송하는 동작; 및
    상기 제1 조건문과 연관된 문장들을 상기 조건형 마스크 레지스터 내의 데이터에 따라 실행하는 동작
    을 야기하는 명령들을 더 포함하는 저장 매체.
  18. 프로세서 - 상기 프로세서는,
    (i) 제1 "if" 명령 조건 및 (ii) 다중 채널과 연관된 데이터의 평가 결과를 저장하기 위한 n-비트 조건형 마스크 벡터; 및
    제2 "if" 명령 조건을 만난 때, 상기 결과를 저장하기 위한 n-비트 너비, m-엔트리 깊이의 조건형 스택을 포함함 -; 및
    그래픽 메모리 유닛
    을 포함하고,
    상기 "if" 명령 조건은, (i) 참 조건과 연관된 오퍼랜드들에 대해 실행될 제1 명령 세트 및 (ii) 거짓 조건과 연관된 오퍼랜드들에 대해 실행될 제2 명령 세트와 연관되고,
    상기 "if" 명령 조건은 상기 제2 명령 세트와 연관된 주소를 포함하고, 모든 채널에 대해 결과가 거짓일 때, 상기 주소를 참조하여, 상기 제2 명령 세트가 실행되는 시스템.
  19. 제18항에 있어서,
    상기 제2 "if" 명령 조건과 연관된 "end if" 명령 조건이 실행되는 때, 상기 결과는 상기 조건형 스택에서 상기 조건형 마스크 벡터로 전송되는 시스템.
  20. 제18항에 있어서,
    명령 메모리 유닛을 더 포함하는 시스템.
KR1020067027369A 2004-06-29 2005-06-17 단일 명령, 다중 데이터 실행 엔진에 대한 조건형 명령 KR100904318B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/879,460 2004-06-29
US10/879,460 US20050289329A1 (en) 2004-06-29 2004-06-29 Conditional instruction for a single instruction, multiple data execution engine
PCT/US2005/021604 WO2006012070A2 (en) 2004-06-29 2005-06-17 Conditional instruction for a single instruction, multiple data execution engine

Publications (2)

Publication Number Publication Date
KR20070032723A KR20070032723A (ko) 2007-03-22
KR100904318B1 true KR100904318B1 (ko) 2009-06-23

Family

ID=35159732

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067027369A KR100904318B1 (ko) 2004-06-29 2005-06-17 단일 명령, 다중 데이터 실행 엔진에 대한 조건형 명령

Country Status (7)

Country Link
US (1) US20050289329A1 (ko)
EP (1) EP1761846A2 (ko)
JP (1) JP2008503838A (ko)
KR (1) KR100904318B1 (ko)
CN (1) CN100470465C (ko)
TW (1) TWI287747B (ko)
WO (1) WO2006012070A2 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060256854A1 (en) * 2005-05-16 2006-11-16 Hong Jiang Parallel execution of media encoding using multi-threaded single instruction multiple data processing
US7543136B1 (en) 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
US7353369B1 (en) * 2005-07-13 2008-04-01 Nvidia Corporation System and method for managing divergent threads in a SIMD architecture
US7480787B1 (en) * 2006-01-27 2009-01-20 Sun Microsystems, Inc. Method and structure for pipelining of SIMD conditional moves
US7617384B1 (en) 2006-11-06 2009-11-10 Nvidia Corporation Structured programming control flow using a disable mask in a SIMD architecture
US8312254B2 (en) * 2008-03-24 2012-11-13 Nvidia Corporation Indirect function call instructions in a synchronous parallel thread processor
US8418154B2 (en) * 2009-02-10 2013-04-09 International Business Machines Corporation Fast vector masking algorithm for conditional data selection in SIMD architectures
JP5452066B2 (ja) * 2009-04-24 2014-03-26 本田技研工業株式会社 並列計算装置
JP5358287B2 (ja) * 2009-05-19 2013-12-04 本田技研工業株式会社 並列計算装置
US8850436B2 (en) * 2009-09-28 2014-09-30 Nvidia Corporation Opcode-specified predicatable warp post-synchronization
KR101292670B1 (ko) * 2009-10-29 2013-08-02 한국전자통신연구원 벡터 프로세싱 장치 및 방법
US20170365237A1 (en) * 2010-06-17 2017-12-21 Thincl, Inc. Processing a Plurality of Threads of a Single Instruction Multiple Data Group
WO2013077884A1 (en) * 2011-11-25 2013-05-30 Intel Corporation Instruction and logic to provide conversions between a mask register and a general purpose register or memory
WO2013095661A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value
KR101893796B1 (ko) 2012-08-16 2018-10-04 삼성전자주식회사 동적 데이터 구성을 위한 방법 및 장치
US9606961B2 (en) * 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
KR101603752B1 (ko) * 2013-01-28 2016-03-28 삼성전자주식회사 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법
US20140289502A1 (en) * 2013-03-19 2014-09-25 Apple Inc. Enhanced vector true/false predicate-generating instructions
US9645820B2 (en) 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US9952876B2 (en) 2014-08-26 2018-04-24 International Business Machines Corporation Optimize control-flow convergence on SIMD engine using divergence depth
CN107491288B (zh) * 2016-06-12 2020-05-08 合肥君正科技有限公司 一种基于单指令多数据流结构的数据处理方法及装置
JP2018124877A (ja) * 2017-02-02 2018-08-09 富士通株式会社 コード生成装置、コード生成方法、およびコード生成プログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5045995A (en) 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
US5555428A (en) 1992-12-11 1996-09-10 Hughes Aircraft Company Activity masking with mask context of SIMD processors
KR19990081956A (ko) * 1996-01-24 1999-11-15 올센 케네스 스택 기반 컴퓨터를 위한 명령 폴딩 방법 및 장치
US6079008A (en) 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method
KR20030094102A (ko) * 2002-06-03 2003-12-11 마쯔시다덴기산교 가부시키가이샤 프로세서
US20040073773A1 (en) * 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4514846A (en) * 1982-09-21 1985-04-30 Xerox Corporation Control fault detection for machine recovery and diagnostics prior to malfunction
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US7017032B2 (en) 2001-06-11 2006-03-21 Broadcom Corporation Setting execution conditions

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5045995A (en) 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
US5555428A (en) 1992-12-11 1996-09-10 Hughes Aircraft Company Activity masking with mask context of SIMD processors
KR19990081956A (ko) * 1996-01-24 1999-11-15 올센 케네스 스택 기반 컴퓨터를 위한 명령 폴딩 방법 및 장치
US6079008A (en) 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method
US20040073773A1 (en) * 2002-02-06 2004-04-15 Victor Demjanenko Vector processor architecture and methods performed therein
KR20030094102A (ko) * 2002-06-03 2003-12-11 마쯔시다덴기산교 가부시키가이샤 프로세서

Also Published As

Publication number Publication date
US20050289329A1 (en) 2005-12-29
WO2006012070A3 (en) 2006-05-26
CN100470465C (zh) 2009-03-18
TW200606717A (en) 2006-02-16
CN1716185A (zh) 2006-01-04
EP1761846A2 (en) 2007-03-14
JP2008503838A (ja) 2008-02-07
TWI287747B (en) 2007-10-01
WO2006012070A2 (en) 2006-02-02
KR20070032723A (ko) 2007-03-22

Similar Documents

Publication Publication Date Title
KR100904318B1 (ko) 단일 명령, 다중 데이터 실행 엔진에 대한 조건형 명령
WO2006044978A2 (en) Looping instructions for a single instruction, multiple data execution engine
US7257695B2 (en) Register file regions for a processing system
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
KR20080091754A (ko) 집적형 프로세서 어레이, 인스트럭션 시퀀서 및 i/o컨트롤러
EP3326060B1 (en) Mixed-width simd operations having even-element and odd-element operations using register pair for wide data elements
US20100241834A1 (en) Method of encoding using instruction field overloading
US20060149938A1 (en) Determining a register file region based at least in part on a value in an index register
US7003651B2 (en) Program counter (PC) relative addressing mode with fast displacement
JP4917045B2 (ja) Data部および関連するカウンタを備えるエントリを有するハードウェア・スタック
US7432988B2 (en) Address generation for video processing
CN111656319B (zh) 利用特定数检测的多流水线架构
WO2020059156A1 (en) Data processing system, method, and program
US6996702B2 (en) Processing unit with cross-coupled ALUs/accumulators and input data feedback structure including constant generator and bypass to reduce memory contention
JP2007200090A (ja) 半導体演算処理装置
US20050050120A1 (en) Method of developing a fast algorithm for double precision shift operation
WO2023199014A1 (en) Technique for handling data elements stored in an array storage
US20130046961A1 (en) Speculative memory write in a pipelined processor
GB2617829A (en) Technique for handling data elements stored in an array storage
JP2021174558A (ja) Int9量子化のためのシステム及び方法

Legal Events

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

Payment date: 20130603

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140603

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150529

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee