KR20150105209A - 데이터 처리장치 및 벡터 스캔 연산의 수행방법 - Google Patents

데이터 처리장치 및 벡터 스캔 연산의 수행방법 Download PDF

Info

Publication number
KR20150105209A
KR20150105209A KR1020150026200A KR20150026200A KR20150105209A KR 20150105209 A KR20150105209 A KR 20150105209A KR 1020150026200 A KR1020150026200 A KR 1020150026200A KR 20150026200 A KR20150026200 A KR 20150026200A KR 20150105209 A KR20150105209 A KR 20150105209A
Authority
KR
South Korea
Prior art keywords
vector
data
data element
data elements
elements
Prior art date
Application number
KR1020150026200A
Other languages
English (en)
Other versions
KR102365306B1 (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 KR20150105209A publication Critical patent/KR20150105209A/ko
Application granted granted Critical
Publication of KR102365306B1 publication Critical patent/KR102365306B1/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/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • 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/3001Arithmetic instructions
    • 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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30098Register arrangements
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

각 결과 데이터 요소가 추가의 데이터 요소S와 소스 벡터 오퍼랜드V의 그 데이터 요소들의 적어도 일부와의 조합에 해당하는 경우, 결과 벡터의 M개의 데이터 요소를 생성하기 위해 벡터 스캔 연산을 행한다. 그 벡터 스캔 연산은, 각각이 데이터 요소들을 조합하기 위한 하나 이상의 조합연산으로 이루어진 복수의 단계를 사용하여 행해진다. 상기 단계들 중 적어도 하나의 단계는, 병렬로 행해진 2개 이상의 조합 연산을 포함한다. 상기 단계들 중 적어도 2개의 단계는 데이터 요소와 상기 추가의 데이터 요소S를 조합하기 위한 조합연산을 포함한다. 이러한 해결방법에 의해 M보다 적은 데이터 요소가 액티브인 경우에 보다 적은 단계에서 상기 벡터 스캔 연산을 행하는 것이 가능하여, 상기 벡터 스캔 연산을 보다 빠르게 행할 수 있다.

Description

데이터 처리장치 및 벡터 스캔 연산의 수행방법{DATA PROCESSING APPARATUS AND METHOD FOR PERFORMING VECTOR SCAN OPERATION}
본 발명은, 데이터 처리 분야에 관한 것이다. 보다 구체적으로, 본 발명은 데이터 처리장치 및 벡터 스캔 연산을 수행하는 방법에 관한 것이다.
공지된 데이터 처리장치의 성능을 향상시키는 기술의 하나는, 벡터 연산의 실행을 지원하는 회로소자를 제공하는 것이 있다. 벡터 연산은, 적어도 하나의 벡터 오퍼랜드에 관해 수행되고, 여기서 각 벡터 오퍼랜드는 복수의 벡터 요소로 이루어진다. 그리고, 상기 벡터 연산의 수행은, 상기 벡터 오퍼랜드(들)내의 각종 벡터 요소들에 대해서 반복적으로 연산을 적용하는 것을 포함한다. 벡터 연산의 수행을 지원하는 전형적인 데이터 처리 시스템에 있어서, 벡터 레지스터 파일은, 상기 벡터 오퍼랜드를 기억하도록 구성되는 것이다. 상기 벡터 연산을 이용하면, 동등한 일련의 스칼라 연산의 수행과 비교할 때 상당한 성능의 이점을 실현할 수 있다.
공지된 형태의 벡터 연산의 하나는, 벡터 스캔 연산이 있고, 여기서, 소정의 조합 연산은 증가하는 수의 데이터 요소들에 반복적으로 적용된다. 그 조합 연산의 형태는, 가산 연산, 곱셈 연산, 최소 선택 연산, 최대 선택 연산 등과 같이 다양할 수 있다. 벡터 스캔 연산의 수행 결과로서, 각 결과가 상기 조합 연산을 서로 다른 수의 데이터 요소들에 적용하는 것에 관련되는 일련의 결과를 생성한다. 특별한 예로서, 상기 스캔 연산은 조합 연산으로서 가산 연산을 특정하여도 되고, 이러한 스캔 가산 연산을 전위합(prefix sum) 연산이라고도 한다. 상기 스캔 가산 연산의 번호 x0, x1, x2,...어플리케이션의 입력 시퀀스가 일련의 결과 y0, y1, y2,...를 발생시킨다고 하고, 여기서, 또 다른 결과에 대해서는,
y0=x0 y1=x0+x1 y2=x0+x1+x2 등.
상기 벡터 스캔 연산의 일부의 예에서는, 추가의 데이터 요소S를, 소스 벡터의 벡터 데이터 요소V와 조합하여 일련의 결과를 발생시킨다(스캔 가산 연산일 경우): 또 다른 결과에 대해서는,
y0=S+x0 y1=S+x0+x1 y2=S+x0+x1+x2 등.
본 기술은 이러한 벡터 스캔 연산을 실행하는 장치 및 방법을 향상시키는데 목적이 있다.
본 기술의 일 국면에서 본 데이터 처리장치는,
복수의 데이터 요소로 이루어진 벡터 오퍼랜드들을 기억하는 벡터 레지스터 스토어;
상기 벡터 레지스터 스토어로부터 벡터 오퍼랜드들을 처리하는 처리회로소자; 및
소스 벡터 오퍼랜드V[0] 내지 V[M-1]의 M개의 데이터 요소와 적어도 하나의 추가의 데이터 요소S에 관해 벡터 스캔 연산을 행하여, 결과 벡터 오퍼랜드R[0] 내지 R[M-1]의 M개의 데이터 요소를 생성하기 위해 상기 처리회로소자를 제어하는 제어회로소자로서, 여기서 N≤M이고 O≤i<N일 경우, 상기 결과 벡터 오퍼랜드의 데이터 요소R[i]가 상기 적어도 하나의 추가의 데이터 요소S와 상기 소스 벡터 오퍼랜드의 데이터 요소V[0] 내지 V[i]의 적어도 일부의 조합에 대응한 값을 갖는, 상기 제어회로소자를 구비하고,
상기 제어회로소자는, 각 단계가 제1 벡터로부터 제2 벡터를 생성하는 복수의 단계에서 상기 벡터 스캔 연산을 행하기 위해 상기 처리회로소자를 제어하도록 구성되고, 제1 단계의 상기 제1 벡터는 상기 소스 벡터 오퍼랜드의 데이터 요소들을 포함하고, 그 밖의 단계의 상기 제1 벡터는 선행하는 단계의 상기 제2 벡터를 포함하고, 각 단계는 상기 제2 벡터의 데이터 요소를 생성하기 위해 상기 제1 벡터의 데이터 요소를 상기 적어도 하나의 추가의 데이터 요소S 또는 상기 제1 벡터의 또 다른 데이터 요소와 조합하는 적어도 하나의 조합연산을 포함하고,
상기 복수의 단계 중 적어도 하나의 단계는 병렬로 행해진 복수의 조합연산을 포함하고,
상기 복수의 단계 중 적어도 두개의 단계는, 상기 제1 벡터의 데이터 요소를 상기 적어도 하나의 추가의 데이터 요소S와 조합하는 조합연산을 포함한다.
직렬로 행해진 스칼라 연산을 사용하여 상기 벡터 스캔 연산을 행하는 것이 가능하기도 하지만, 이것은 느려서 성능상의 이유로 상기 조합의 적어도 일부를 병렬화하는데 유용할 수 있다. 그렇지만, 공지된 병렬화 기술들은 비교적 효율적으로 벡터 데이터 요소의 2의 제곱수를 조합하여도 되지만, 추가의 데이터 요소S가 상기 벡터 데이터 요소들과 조합될 필요가 있을 경우도, 이것은 별도의 단계가 필요하기도 한다. 기존의 기술들은, 상기 소스 벡터 오퍼랜드의 다른 벡터 요소들과 조합하기 전에 초기의 단계에서 상기 소스 벡터 오퍼랜드의 데이터 요소와 상기 추가의 데이터 요소S를 조합하거나, 먼저 상기 소스 벡터내의 다른 데이터 요소들의 조합 모두를 행하거나 하고 나서, 상기 추가의 데이터 요소를 상기 앞선 단계에서 생성된 각 데이터 요소와 조합하는 추가의 단계를 수행한다. 양쪽의 방식에서, 이것은 별도의 단계가 필요하기도 하다.
본 기술의 발명자들이 안 것은, 상기 소스 벡터 오퍼랜드의 M개의 데이터 요소 전부가 주목 대상이 아니라는 것이다. 예를 들면, 상기 소스 벡터 오퍼랜드의 M개의 데이터 요소를 완전히 채우는데 충분한 데이터가 아닐 수 있어서, 상기 결과 오퍼랜드의 N개의 데이터 요소만이 생성될 필요가 있다(여기서, N≤M). 상기 벡터 스캔 연산을 행하는 공지된 병렬화 기술들에서는 이것을 고려하지 않고, 대신에 M개의 데이터 요소 전부에 대해 상기 스캔 연산을 행하는데 초점을 둔다. 본 발명자들은, 그 벡터 스캔 연산을 행하는 방식을 변경함으로써, 상기 결과 데이터 요소들 중 일부만을 필요로 하는 경우에, M개의 결과 데이터 요소 전부를 원하는 경우에 필요한 단계들의 수를 증가시키지 않고 상기 벡터 스캔 연산을 보다 빠르게 행하는 것이 가능하다는 것을 알았다.
이를 달성하기 위해서, 본 기술의 처리회로소자는, 복수의 단계로 상기 벡터 스캔 연산을 행하고, 각 단계는 제1 벡터로부터 제2 벡터를 생성하되, 상기 제1 단계의 상기 제1 벡터가 상기 소스 벡터 오퍼랜드로부터 데이터 요소들을 포함하고 그 밖의 단계의 상기 제1 벡터가 선행하는 단계로부터 상기 제2 벡터를 포함한다. 그 단계들 중 적어도 두 개의 단계는, 상기 제1 벡터의 데이터 요소와 상기 적어도 하나의 추가의 데이터 요소S를 조합하는 조합연산을 포함한다(이와 대조하여, 상기 공지된 기술들은 이러한 하나의 단계만을 포함했을 것이다). 상기 벡터 스캔 연산의 다수의 단계에서 상기 적어도 하나의 추가의 요소S와 조합함으로써, 상기 결과 벡터의 보다 많은 상기 데이터 요소들을 최종의 단계가 시작하기 전에 이용하는 것이 가능해서, M개보다 적은 데이터 요소가 필요한 경우에 상기 벡터 스캔 연산을 보다 빠르게 행할 수 있다.
M은 2의 제곱이어도 된다. N이 M/2과 M 사이일 때, 종래의 기술에서는, M개의 데이터 요소 전부가 생성될 때보다 상기 스캔 연산을 전혀 빠를 수 없는데, 그 이유는 보다 작은 2의 제곱을 M으로서 사용하는 것이 가능하지 않기 때문이다. 그러나, 본 기술에서는, N이 M/2과 M 사이일 때 필요한 단계의 수를 감소시킬 수 있다.
상기 벡터 스캔 연산은, 적어도 하나의 조합단계에서의 상기 결과 벡터 오퍼랜드의 제1의 G개의 데이터 요소들R[0] 내지 R[G-1]을 생성하기 위해 행해져도 된다(여기서, M/2≤G<M). G보다 많은 데이터 요소가 필요한 경우(N>G), 상기 결과 벡터 오퍼랜드의 그 밖의 데이터 요소 R[G] 내지 R[M-1]은 상기 적어도 하나의 조합단계에 더하여 적어도 하나의 또 다른 단계를 행하여서 생성될 수 있다. 이에 따라 종래의 기술보다 적은 벡터 연산의 단계에서는 M미만의 다수의 데이터 요소를 생성하여, 성능을 향상시킬 수 있다.
M/2<N≤G일 경우, 상기 적어도 하나의 조합단계를 사용하여 보다 빠르게 상기 연산을 행할 수 있고, 상기 처리회로소자가 상기 적어도 하나의 또 다른 단계를 행하였을 경우보다는 차라리 또 다른 연산을 행하는 것을 시작할 수 있도록, 상기 적어도 하나의 또 다른 단계를 생략할 수 있다. 또는, 상기 적어도 하나의 또 다른 단계는, G보다 적은 데이터 요소가 필요한 경우에도 행해질 수 있었다(이것은 상기 적어도 하나의 또 다른 단계가 상기 적어도 하나의 조합단계 후 행해지는 경우, 상기 G데이터 요소가 종래기술보다 앞서 죽 이용가능할 것이기 때문에 그래도 성능을 향상시킬 수 있었다). N<M/2일 때, 상기 처리는, M이 보다 작은 2의 제곱이었던 것과 같은 방식으로 취급될 수 있다.
상기 적어도 하나의 또 다른 단계는, 상기 제1 벡터의 데이터 요소와 상기 적어도 하나의 추가의 데이터 요소를 조합하는 적어도 하나의 조합연산을 포함하기도 하고, 상기 제1 벡터의 각각의 데이터 요소의 어떤 조합도 포함하지 않아도 된다. 이것은, (상기 적어도 하나의 조합단계전에, 상기 적어도 하나의 조합단계 후, 또는 상기 적어도 하나의 조합단계 도중인 중간단계로서) 상기 적어도 하나의 조합단계에 대한 임의의 시간에 상기 또 다른 단계를 행하는 것이 가능하다는 것을 의미한다. 보다 구체적으로, 상기 적어도 하나의 또 다른 단계는, 상기 적어도 하나의 추가의 데이터 요소S와 상기 적어도 하나의 또 다른 단계의 상기 제1 벡터의 데이터 요소[k]를 조합하는 조합연산을 포함하되, 여기서 G≤k<N이다. 이들 조합은, M개의 데이터 요소 전부에 대해서 상기 벡터 스캔 연산을 행하는데 필요한 조합에 해당하지만, 상기 적어도 하나의 조합단계에 의해 실행되지 않는다.
한편, 상기 또 다른 단계없이 행해진 경우의 상기 적어도 하나의 조합단계는, 그 단계의 상기 제2 벡터의 데이터 요소[G] 내지 [M-1]와 함께 상기 결과 데이터 요소 R[0] 내지 R[N-1]를 생성하도록 되어도 되고, 여기서 G≤k<M일 경우 상기 제2 벡터의 데이터 요소[k]의 값이 소스 벡터 오퍼랜드의 데이터 요소V[0] 내지 V[k]의 적어도 일부의 조합(즉, 상기 추가의 데이터 요소 S와 조합되지 않고)에 해당한다.
일반적으로, M=2P의 경우, 상기 적어도 하나의 조합단계는, 제1 벡터의 데이터 요소 [0] 내지 [M-1]에 따라 제2 벡터의 데이터 요소 [0] 내지 [M-1]을 생성하는 조합연산을 포함하는 P개의 단계들을 포함하여, O≤J<P의 경우, 상기 P개의 단계들의 단계J는, 2J≤m<N의 경우, 상기 제2 벡터의 데이터 요소[m]을 생성하기 위해 상기 제1 벡터의 데이터 요소[m]와 상기 제1 벡터의 데이터 요소[m-2J]를 조합하기 위한 조합연산을 포함한다.
이들의 조합은, 반드시 상기 데이터 요소V[0]; V[0] 및 V[1]; V[0], V[1] 및 V[2] 등의 조합이 가능한 가장 적은 단계로 실시되도록 하기도 한다. 비록 상기 제어회로소자가 이들의 단계를 수행하기 위해 상기 제어회로소자를 제어하지만, 각 단계내의 일부의 조합은 (예를 들면, 그 단계에서 처리할 데이터 요소가 마스크 정보에 의거하여 처리하는데 선택되지 않은 경우) 생략되어도 된다. 또한, 상기 P개의 단계 각각이 요소[2J] 내지 요소[N-1]에 대해 조합연산을 시키는 것으로서 기재되어 있지만, 선택된 요소의 수 N이 M미만일 때에도 처리중인 M개의 데이터의 블록에서의 데이터 요소들 전부에 대해 조합하도록 요소[M-1]까지 계속 조합을 하는 것도 가능하다.
본 출원에서는, 벡터 레지스터에 기억될 때 상기 데이터 요소의 위치와 반드시 같지 않은 상기 벡터 스캔 연산으로 처리하면서 그 밖의 요소들에 대한 상기 데이터 요소들의 위치를 참조하기 위해 상기 데이터 요소 지수들[0],[1]등을 사용한다. 상기 소스 벡터 오퍼랜드와 결과 벡터 오퍼랜드의 어느 데이터 요소가 요소 [0],[1],...,[M-1]에 해당하는지는, 임의의 설계 선택이어도 된다. 예를 들면, 일부의 시스템은, 상기 소스 벡터 레지스터 내의 최하위 위치에서의 요소를 요소[0]으로서 취급하고, 상기 소스 벡터 레지스터 내의 최상위 위치에서의 요소를 요소[M-1]로서 취급하며, 다른 시스템에서 이것은 반대이어도 된다. 보다 많은 데이터 요소들의 할당도 사용될 수 있었다. 따라서, 예를 들면, 벡터 스캔 연산에서 요소 V[0]와 V[1]의 조합은, 실제로 벡터 레지스터내의 비인접 위치에서의 요소들에 해당할 수 있었다. 시프트 회로소자는, 데이터 요소들을 상기 벡터 스캔 연산에 필요한 위치로 시프트시키는데 사용되어도 된다.
또한, 상기 적어도 하나의 조합단계의 각각의 단계에 대한 지수J는, 그 단계에서 행해진 조합연산을 규정하는데 사용된다. 상기 적어도 하나의 조합단계를 반드시 J의 오름차순으로 행해지는 것은 아니다. 일 실시예에서 상기 P개의 단계들이 J=0,1,...,P-1의 순으로 행해져도 되지만, 그 밖의 실시예에서 상기 P개의 단계들은 다른 순서로(예를 들면, 1,2,P-1,0,...) 행해져도 된다.
상기 적어도 하나의 조합단계도, 상기 적어도 하나의 추가의 데이터 요소S와 벡터 데이터 요소를 조합하는 각종 조합연산을 포함하여도 된다. 상기 추가의 데이터 요소S는, 상기 적어도 하나의 또 다른 단계가 행해지지 않은 경우에 상기 결과 벡터 오퍼랜드의 얼마나 많은 데이터 요소(G)가 생성되는데 필요한지에 따라, 입력되어 다른 단계에서의 상기 소스 벡터의 요소들과 조합될 수 있다. 일반적으로, G는, M-G가 2의 제곱되도록 선택될 수 있고, 상기 적어도 하나의 조합단계의 상기 P개의 단계들은, log2(M-G)≤J<P의 경우, 상기 P개의 단계들의 단계J가 2J-(M-G)≤q<2j의 경우, 상기 제2 벡터의 데이터 요소[q]를 생성하기 위해 상기 제1 벡터의 데이터 요소[q]와 상기 추가의 데이터 요소S를 조합하는 조합연산을 포함하도록 된 단계이어도 된다.
이러한 해결방법에 의해, 상기 적어도 하나의 추가의 데이터 요소S를 생성하기 위한 다른 연산으로 상기 벡터 스캔 연산을 교차 배치(interleave)할 수 있는 정도에 대해 적어도 하나의 조합단계를 행하여서 이용 가능한 결과 데이터 요소 R[0] 내지 R[G-1]의 수의 균형을 맞추도록 상기 벡터 스캔 연산을 구현할 수 있다.
보다 큰 G(예를 들면, G=M-1이 가장 큰 가능한 G값을 제공함)값들의 경우, 상기 결과 데이터 오퍼랜드의 보다 많은 데이터 요소는 적어도 하나의 조합단계로부터 이용 가능하여, 상기 적어도 하나의 또 다른 단계를 생략하여 성능을 향상시킬 수 있을 때 보다 많은 경우들이 있다(N은 더욱 G이하일 것 같다). G=M-1의 경우, 상기 적어도 하나의 또 다른 단계는, 상기 결과 벡터의 데이터 요소의 M개의 데이터 요소 전부가 상기 스캔 연산을 사용하여 생성될 필요가 있는 경우만 필요할 것이다. 그러나, 이 해결방법은, 보다 많은 단계에서 상기 추가의 데이터 요소S를 입력되게 하는 것이 필요하기도 하여서, 상기 추가의 데이터 요소S는 앞서 이용하면 좋아서, 상기 벡터 스캔 연산이 시작하기 전에 상기 추가의 데이터 요소S를 생성하기 위해 앞선 연산을 기다릴 필요가 있을지도 모른다.
한편, 보다 작은 G(예를 들면, G=M/2)의 값의 경우, 상기 적어도 하나의 추가의 데이터 요소S의 입력은, 보다 적은 단계가 상기 추가의 데이터 요소S를 포함하는 조합을 포함하기 때문에 지연될 수 있는 경우가 있다. 이것은, 상기 추가의 데이터 요소S가 준비상태가 되기 전에 상기 벡터 스캔 연산을 시작되게 하는데 유용할 수 있어, 상기 벡터 스캔 연산이 보다 빨리 완료될 수 있다. 그러나, 보다 작은 G의 값의 경우, 대다수의 조합연산은, 보다 큰 G의 값보다 필요하기도 하고, 상기 적어도 하나의 또 다른 단계를 생략하는 성능 향상은 상기 적어도 하나의 또 다른 단계가 필요하지 않은 N 값이 보다 적으므로 자주 이용가능하지 않을 수도 있다.
따라서, 상기 시스템 설계자는 필요에 따라 G를 선택하여도 된다. 일부의 처리회로소자는, 상기 제어회로소자를 보다 간단히 구현할 수도 있는 G의 특별한 값에 대해 고정 배선된 하드웨어를 가져도 된다. 그 밖의 시스템은, 상기 추가의 데이터 요소S가 이미 이용 가능한지와 얼마나 많은 데이터 요소N이 특별한 연산에 필요한지에 따라 다른 G의 값에 대한 처리를 행하기 위해 상기 처리회로소자를 동적으로 구성할 수 있는 제어회로소자가 있어도 된다.
상기 결과 데이터 요소R[0] 내지 R[N-1]에 더하여, 상기 벡터 스캔 연산도, 또 다른 연산에서 사용하기 위해 출력될 수 있는 캐리(carry)값을 생성하여도 된다. 예를 들면, 상기 캐리값은, 이후의 벡터 스캔 연산의 추가의 데이터 요소S로서 사용되어도 된다. 상기 캐리값은, 결과 벡터 오퍼랜드의 데이터 요소R[N-1]에 대응한 값이어도 된다. 상기 제어회로소자는, 상기 적어도 하나의 또 다른 단계가 행해지기 전에 생략되는 경우 상기 캐리값을 앞서 출력하기 위해 상기 처리회로소자를 제어하여, 그 캐리값을 이용한 이후의 연산은, 상기 적어도 하나의 또 다른 단계가 필요하지 않은 경우에 앞서 시작할 수 있다.
필요한 데이터 요소들 수 N이 처리중 블록에서의 요소들의 수M미만인 이유의 하나는, 상기 벡터 스캔 연산이 선택되거나 비선택된 데이터 요소들로서 데이터 요소들을 식별하는 제어정보가 관련되어 있는 것이고, 그 선택된 데이터 요소들만이 상기 벡터 스캔 연산에 의해 처리되어도 된다. 이러한 제어정보는, 예를 들면, 선택된 또는 비선택된 데이터 요소들로서 개개의 데이터 요소들을 식별하는 마스크 정보, 그 데이터 요소들 중 얼마나 많은 데이터 요소가 선택되었는지를 특정하는 벡터 길이 정보, 또는 선택된 요소들과 비선택된 요소들의 특별한 패턴을 식별하는 벡터 포맷 정보이어도 된다. 일반적으로, N은, 소스 벡터 오퍼랜드의 요소V[N-1]이 상기 제어정보에 의해 나타낸 최종 선택된 데이터 요소(N-1미만의 데이터 지표를 갖는 비선택된 요소들이 일부 있어도 된다)인 값을 가져도 된다.
상기 제어정보로 나타낸 임의의 비선택된 데이터 요소들에 대해서는, 상기 결과 벡터 오퍼랜드에서의 대응한 데이터 요소들이, 소정의 값(예를 들면, 제로), 상기 소스 벡터 오퍼랜드의 비선택된 데이터 요소들이 소정의 값(예를 들면, 제로)으로 설정된 상기 벡터 스캔 연산을 행하여서 구해진 값, 또는 상기 소스 벡터 오퍼랜드를 기억하는 소스 레지스터나 상기 결과 벡터 오퍼랜드를 기억하는 목적지 레지스터(일부의 경우에는 상기 소스 및 목적지 레지스터가 같아도 됨)에 대응한 데이터 요소의 값으로 설정되어도 된다. 일부의 실시예에서는, 비선택된 데이터 요소들을 처리하는 상기 조합연산을 금지시키기도 한다. 또는, 비선택된 요소에 대응한 상기 벡터 스캔 연산의 일부분은 정상으로서 진행되어도 된다. 어느 쪽이든, 상기 결과는, 예를 들면 상기 목적지 레지스터의 상기 비선택된 부분에 상기 필요한 값들을 기록하기 위해 상기 벡터 스캔 연산과 병렬로 연산을 행함으로써, 상술한 값들 중 하나의 값에 맞게 조정할 수 있다.
상술한 것과 같은 벡터 스캔 연산이 데이터 요소들의 M보다 적게 사용하는 다른 이유는, M개의 데이터 요소들내에 다른 세그먼트에 관해 다른 스캔을 행하도록 상기 벡터 스캔 연산을 분할하는 것이 가능하기 때문이다. 이 경우에, 제1 세그먼트는, N이 상기 제1 세그먼트에서 데이터 요소들의 수이면서 상술한 방식으로 처리되어도 된다. 또 다른 세그먼트가 있는 경우에도, 상기 스캔 연산은, 그 또 다른 세그먼트 내에 있지만 상기 적어도 하나의 추가의 데이터 요소S를 포함하지 않는 하나 이상의 데이터 요소들을 조합하여서 행해져도 된다. 예를 들면, 추가의 데이터 요소S와, 요소V[0] 내지 V[2]가 제1 세그먼트에 해당하고 요소V[3] 내지 V[7]이 제2 세그먼트에 해당하는 8개의 벡터 요소V[0] 내지 V[7]에 대해서는, 다음과 같이 일련의 조합이 생성되어도 된다.
S, V[0] V[3]
S, V[0], V[1] V[3], V[4]
S, V[0], V[1], V[2] V[3], V[4], V[5]
V[3], V[4], V[5], V[6]
V[3], V[4], V[5], V[6], V[7]
본 기술자체가 N<M일 경우 분할된 스캔에도 제공된다. 상술한 것처럼, 상기 적어도 하나의 조합단계는, 상기 추가의 데이터 요소S를 포함하지 않아서 제2 세그먼트에 대한 상기 결과 데이터 요소들에 해당할 수 있는 상기 추가의 데이터 요소들[G] 내지 [M-1]을 생성하여도 된다. 또한, 분할된 스캔에서 세그먼트가 적어도 2개가 있을 경우도, 서로 멀리 떨어진 상기 벡터의 데이터 요소들을 조합하는데 필요한 연산이 보다 적다. 상기 벡터 스캔 연산은, 분할된 스캔일 경우에 더욱 필요하지 않을 것 같은 이들 "멀리 떨어진" 조합을 제공하는 적어도 하나의 또 다른 단계가 되도록 구성될 수 있어, 더 자주 성능을 향상시킬 수 있다. 예를 들면, G=M-1일 때, 일단 세그먼테이션이 있으면, 상기 적어도 하나의 또 다른 단계는 필요하지 않을 것인데, 그 이유는 G=M-1일 때, 상기 또 다른 단계가 상기 추가의 데이터 요소S와 최종의 데이터 요소[M]을 조합하고, 이러한 조합은 세그먼트가 다수인 경우 필요하지 않기 때문이다. 따라서, 분할된 스캔은 본 기술을 사용하여 가속화될 수 있다.
상술한 것과 같은 상기 스캔 연산을 사용하여 처리된 M개의 데이터 요소들은, 소스 벡터 오퍼랜드의 데이터 요소 전부를 포함할 필요는 없다. 예를 들면, 상기 소스 벡터 오퍼랜드는, X≥M인 경우 X개의 데이터 요소들을 포함하여도 되고, 상기 결과 벡터 오퍼랜드는 Y≥M인 경우 Y개의 데이터 요소들을 포함하여도 된다. 통상, 상기 소스 벡터 오퍼랜드와 상기 결과 벡터 오퍼랜드는 데이터 요소의 수가 같지만(X=Y), 벡터 사이즈를 다수의 요소들로 변환함과 동시에 상기 벡터 스캔 연산을 행하는 것이 가능할 수도 있어, 상기 벡터 스캔 연산이 상기 소스 벡터보다 큰 결과 벡터의 요소들의 일부를 채운다.
보다 일반적으로는, 상기 벡터 스캔 연산을, L≤X 및 L≤Y일 경우 상기 소스 벡터 오퍼랜드의 L개의 데이터 요소에 관해 행하여도 된다. L>M이면, 데이터 요소R[0] 내지 R[M-1]은 상술한 것과 같지만, R[M] 내지 R[L-1]에 대해서, 상기 결과 데이터 요소는 M보다 큰 지수를 갖는 상기 데이터 요소들의 적어도 일부와 R[M-1]의 조합에 해당하여도 된다. 상술한 값 N은 L≤M인 경우 L이거나, L>M인 경우 N=M이다.
상기 M개의 데이터 요소들에 대해 상술한 기술은, 소스 벡터 오퍼랜드 전체에 걸쳐 적용될 필요는 없다. L>M일 경우, 상술한 것과 같은 상기 적어도 하나의 조합단계와 적어도 하나의 또 다른 단계로 상기 M개의 데이터 요소만을 처리할 수 있고, 이때의 요소R[M] 내지 R[L-1]은 다른 기술을 사용하여 생성된다.
이것이 바람직할지도 모르는 하나의 이유는, 일부의 처리회로소자가, 처리될 데이터 요소들의 총수미만이어도 되는 제한된 데이터 요소의 수를 병렬로 처리할 수만 있으면 되기 때문이다. 상기 처리 회로소자에서 병렬로 처리할 수 있는 것보다 데이터 요소가 많은 경우에, 상기 제어회로소자는 상기 소스 벡터 오퍼랜드내의 다른 그룹의 데이터 요소들에 대해 분할 스캔 연산을 따로따로 행하기 위해 상기 처리회로소자를 제어하여도 된다. 상기 분할 스캔 연산이 함께 있는 것은, 행해지는 조합연산이 결합되어 있는 경우, 대다수의 데이터 요소에 대해 행해진 단일 벡터 스캔 연산과 같은 결과를 제공하기도 한다. 그 조합연산이 결합되어 있지 않은 경우(예를 들면, 특정 부동 소수점 연산), 단일의 보다 큰 스캔과 비교한 상기 분할 스캔 연산으로부터 취득된 결과에 차이가 있을 수 있지만, 이는 그래도 수용가능하기도 하다. 따라서, M은 상기 프로세서와 병렬로 처리될 수 있는 데이터 요소의 수이고, L>M일 경우, 상기 분할 스캔 연산은 M개 이하의 데이터 요소들의 별개의 그룹에 관해 수행되어도 된다.
상기 추가의 데이터 요소가 다단계로 입력되고 데이터 요소들의 G가 상기 적어도 하나의 또 다른 단계의 필요없이 준비되어 있는 경우에 상술한 방식으로 M개의 데이터 요소들의 그룹마다 상기 분할 스캔 연산을 행하는 것이 가능했을 것이다. 그러나, 본 발명자들이 발견한 것은, 이것은, 이후의 각 분할 스캔 연산이 선행하는 연산의 상기 적어도 하나의 또 다른 단계의 결과에 의존하기 때문에 성능을 감소시킬 수 있어서, 진행전에 이전의 연산 결과를 기다릴 필요가 있다는 것이다.
대신에, 본 발명자들이 실현한 것은, 분할 스캔에 대해서는, 그 분할 스캔 중 첫 번째 분할 스캔만이 적어도 2개의 다른 단계에서 추가의 데이터 요소를 입력하고 상술한 것처럼 적어도 하나의 조합단계와 적어도 하나의 또 다른 단계를 포함하도록, 상기 벡터 스캔 연산을 행하는 것이 보다 효율적일 수 있다는 것이다. 적어도 하나의 또 다른 그룹에 대해서는, 그 대신에 상기 분할 스캔 연산은, 상기 데이터 요소들의 또 다른 그룹의 각각의 데이터 요소를 조합하는 적어도 하나의 예비단계와, 그 예비단계의 결과들과 데이터 요소의 다른 그룹에 대한 별도의 스캔 연산으로 생성된 데이터 요소를 조합하는 적어도 하나의 추가의 단계로 이루어져도 된다. 이러한 해결방법에 의해, 첫 번째 그룹에 대한 상기 예비단계와 별도의 스캔간에 의존성이 없으므로 상기 요소들의 또 다른 그룹에 대한 상기 적어도 하나의 예비단계가 상기 데이터 요소들의 상기 첫 번째 그룹에 대한 스캔 연산과 교차배치될 수 있기 때문에, 스캔 연산을 전반적으로 보다 빠르게 수행할 수 있다.
상기 추가의 데이터 요소S의 형태는 다양할 수도 있다. 예를 들면, 상기 추가의 데이터 요소는, 스칼라 오퍼랜드, 벡터 오퍼랜드로부터의 데이터 요소, 그 벡터 오퍼랜드의 다수의 데이터 요소에 의해 구해진 값, 또는 앞선 연산에서 발생한 캐리 값(예를 들면, 앞선 벡터 스캔 연산이나, 같은 벡터 스캔 연산내에서 다른 분할 스캔 연산의 캐리 값)이어도 된다.
상기 벡터 스캔 연산을 위해 행해진 조합연산의 형태는 다양할 수도 있다. 예를 들면, 상기 조합연산은, 이하의 연산 중 어떠한 연산일 수도 있다: 가산, 감산, 곱셈, 나눗셈, AND, OR, NOR, XOR, NAND, 최대 또는 최소 선택 연산. 대부분의 이들 연산에 대해서, 상기 조합연산은, 2개의 데이터 요소를 조합하는 이진 조합연산이어도 되긴 하지만, 가산이나 AND연산과 같은 일부의 조합연산에 대해서는, 조합연산마다 3개이상의 데이터 요소를 조합하는 것도 가능할 수도 있다.
본 기술의 다른 국면에서 본 데이터 처리장치는,
복수의 데이터 요소로 이루어진 벡터 오퍼랜드들을 기억하는 벡터 레지스터 기억 수단;
상기 벡터 레지스터 기억 수단으로부터 벡터 오퍼랜드들을 처리하는 처리수단; 및
소스 벡터 오퍼랜드V[0] 내지 V[M-1]의 M개의 데이터 요소와 적어도 하나의 추가의 데이터 요소S에 관해 벡터 스캔 연산을 행하여, 결과 벡터 오퍼랜드R[0] 내지 R[M-1]의 M개의 데이터 요소를 생성하기 위해 상기 처리수단을 제어하는 제어수단으로서, 여기서 N≤M이고 O≤i<N일 경우, 상기 결과 벡터 오퍼랜드의 데이터 요소R[i]가 상기 적어도 하나의 추가의 데이터 요소S와 상기 소스 벡터 오퍼랜드의 데이터 요소V[0] 내지 V[i]의 적어도 일부의 조합에 대응한 값을 갖는, 상기 제어수단을 구비하고,
상기 제어수단은, 각 단계가 제1 벡터로부터 제2 벡터를 생성하는 복수의 단계에서 상기 벡터 스캔 연산을 행하기 위해 상기 처리수단을 제어하도록 구성되고, 제1 단계의 상기 제1 벡터는 상기 소스 벡터 오퍼랜드의 데이터 요소들을 포함하고, 그 밖의 단계의 상기 제1 벡터는 선행하는 단계의 상기 제2 벡터를 포함하고, 각 단계는 상기 제2 벡터의 데이터 요소를 생성하기 위해 상기 제1 벡터의 데이터 요소를, 상기 적어도 하나의 추가의 데이터 요소S 또는 상기 제1 벡터의 또 다른 데이터 요소와 조합하는 적어도 하나의 조합연산을 포함하고,
상기 복수의 단계 중 적어도 하나의 단계는 병렬로 행해진 복수의 조합연산을 포함하고,
상기 복수의 단계 중 적어도 두개의 단계는, 상기 제1 벡터의 데이터 요소를 상기 적어도 하나의 추가의 데이터 요소S와 조합하는 조합연산을 포함한다.
또 다른 국면에서 본, 본 기술은, 소스 벡터 오퍼랜드V[0] 내지 V[M-1]의 M개의 데이터 요소와 적어도 하나의 추가의 데이터 요소S에 관해 벡터 스캔 연산을 행하여, 결과 벡터 오퍼랜드R[0] 내지 R[M-1]의 M개의 데이터 요소를 생성하되, 여기서 N≤M이고 O≤i<N일 경우, 상기 결과 벡터 오퍼랜드의 데이터 요소R[i]가 상기 적어도 하나의 추가의 데이터 요소S와 상기 소스 벡터 오퍼랜드의 데이터 요소V[0] 내지 V[i]의 적어도 일부의 조합에 대응한 값을 갖는, 데이터 처리방법을 제공하고, 처리회로소자를 사용하여 행해진 상기 처리방법은,
제1 벡터로부터 제2 벡터를 생성하는 복수의 단계를 행하는 것을 포함하되, 여기서, 제1 단계의 상기 제1 벡터가 상기 소스 벡터 오퍼랜드의 데이터 요소들을 포함하고, 그 밖의 단계의 상기 제1 벡터가 선행하는 단계의 상기 제2 벡터를 포함하고, 각 단계가 상기 제2 벡터의 데이터 요소를 생성하기 위해 상기 제1 벡터의 데이터 요소를, 상기 적어도 하나의 추가의 데이터 요소S 또는 상기 제1 벡터의 또 다른 데이터 요소와 조합하는 적어도 하나의 조합연산을 포함하고,
상기 복수의 단계 중 적어도 하나의 단계는 병렬로 행해진 복수의 조합연산을 포함하고,
상기 복수의 단계 중 적어도 두개의 단계는, 상기 제1 벡터의 데이터 요소를 상기 적어도 하나의 추가의 데이터 요소S와 조합하는 조합연산을 포함한다.
또한, 본 기술은, 컴퓨터가 실행될 때, 컴퓨터에 상술한 장치에 따라 가상 실행환경을 제공시키는 컴퓨터 프로그램을 기억하는, 컴퓨터 판독 가능한 기억매체를 제공하여서 가상 머신 형태로 구현하여도 된다.
본 기술의 또 다른 국면들, 특징들 및 예시들은, 아래의 첨부하는 설명과 도면으로부터 명백해질 수 있다:
도 1은 벡터 오퍼랜드들을 처리하는 데이터 처리장치를 개략적으로 나타내고,
도 2 내지 도 4는 벡터 스캔 연산을 행하는 종래기술들을 나타내고,
도 5는 벡터 스캔 연산의 제1 예시를 개략적으로 나타내고,
도 6 및 도 7은 1개이상의 처리단계동안 추가의 데이터 요소S의 입력이 지연될 수 있는 벡터 스캔 연산의 제2 및 제3의 예시를 나타내고,
도 8 및 도 9는 그 벡터 스캔 연산으로 데이터 요소들을 처리하는 것을 마스크 정보를 사용하여 제어하는 예시들을 나타내고,
도 10은 도 4의 종래기술에 적용될 때 분할 벡터 스캔 연산을 행하는 비교예를 나타내고(종래기술에는 도 10이 원래 없다),
도 11은 도 5의 실시예에 분할 스캔을 적용한 제1 예시를 나타내고,
도 12는 도 5의 벡터 스캔 연산을 분할된 형태로 행하는 보다 효율적인 기술을 제공하는 제2 예시를 나타내고,
도 13은 벡터 스캔 연산을 실시하기 위한 몇몇의 스캔 스테이지를 포함하는 벡터 스캔 유닛의 일례를 나타내고,
도 14 및 도 15는 도 11 및 도 12의 상기 분할된 벡터 스캔 연산을 위한 파이프라인 이용의 예시들을 각각 나타내고,
도 16은 도 4의 종래기술에 적용된 분할(segmented) 스캔 연산의 비교예를 나타내고(종래기술에는 도 16이 원래 없다),
도 17은 도 5의 벡터 스캔 연산에 적용된 분할 스캔 연산의 일례를 나타내고,
도 18은 벡터 스캔 연산을 행하는 방법을 나타내고,
도 19 내지 도 23은, 본 기술이 성능을 향상시킬 수 있는, 다수의 세그먼트를 사용하거나 데이터 요소의 최대수보다 적게 사용하는 벡터 스캔 명령어의 수에 관한 연구 결과를 나타내고,
도 24는 본 기술의 가상 머신 구현을 나타낸다.
도 1은 벡터 처리를 지원하는 처리회로소자(4)를 갖는 데이터 처리장치(2)의 일례를 개략적으로 나타낸 것이다. 상기 처리회로소자(4)는, 입력 버스(8)를 거쳐 벡터 레지스터 파일(6)로부터 수신된 소스 벡터 오퍼랜드들을 처리하고, 그 소스 오퍼랜드들의 각각의 데이터 요소에 관해 대응한 데이터 처리 연산들을 행하여 결과 버스(10)를 거쳐 상기 벡터 레지스터 파일(6)에 출력되는 결과 벡터 오퍼랜드를 생성할 수 있다. 상기 처리회로소자(4)는, 다수의 데이터 요소에 관한 연산을 병렬로 행하는 것이 가능하다. 상기 처리회로소자(4)는, 다른 타입의 처리연산을 행하는 기능유닛(12)이 몇 개가 있다. 이러한 예시에서, 상기 기능유닛(12)은, 가산, 곱셈 또는 시프트 등의 산술연산과, AND, OR, XOR 등의 논리연산을 행하는 산술논리유닛(ALU); 곱셈 누적 연산을 행하는 곱셈 누적(MAC) 유닛; 및 부동소수점 연산을 행하는 부동소수점 유닛(FPU)을 구비한다. 또한, 상기 처리회로소자(4)에는, 아래에서 설명할 벡터 스캔 연산을 행하는 벡터 스캔 유닛(12a)이 있다. 그 밖의 타입의 기능유닛이 설치되어도 된다는 것을 알 것이다. 상기 입력 버스(8)상에서 수신된 오퍼랜드들을 처리 가능한 것과 아울러, 상기 처리 유닛(12)의 일부도, 상기 생성된 오퍼랜드가 또 다른 처리단계에서 레지스터 파일(6)에 라이트백되어 상기 입력버스(8)를 거쳐 판독되었을 경우보다 빠르게 처리될 수 있도록, 상기 기능유닛들(12) 중 하나로부터의 출력 오퍼랜드를 동일한 기능유닛(12)이나 상이한 기능유닛(12)으로 라우팅하는 우회(순방향) 경로들을 가져도 된다. 예를 들면, 도 1에는, 스캔 유닛(12a)의 출력을 그 스캔 유닛(12a)의 입력이나 ALU(12)의 입력으로 전진시키는 우회(순방향) 경로(13)가 있다. 또한, 캐쉬나 메모리로부터의 데이터를 벡터 레지스터 파일(6)에 로딩하고 그 벡터 레지스터 파일(6)로부터의 데이터를 상기 캐쉬나 메모리에 기억하는 벡터 로드/스토어 유닛(14)도 구비되어 있다.
상기 처리회로소자(4)는, 명령어 큐(20), 디코드 회로소자(22) 및 발행(issue) 큐(24)로 이루어진 처리 파이프라인의 실행 스테이지에 해당한다. 상기 명령어 큐(20)는, 상기 캐쉬 또는 메모리로부터의 명령어들을 수신하여 디코드 회로소자(22)에 건네준다. 그 디코드 회로소자(22)는, 그 명령어들을 디코딩하여 상기 처리회로소자(4)에서 처리할 마이크로 연산을 생성하고, 그 마이크로 연산을 상기 발행 큐(24)에 급송한다. 그 마이크로 연산은, 처리에 필요한 그들의 오퍼랜드와 임의의 제어정보가 사용가능해질 때까지 상기 발행 큐(24)에 남아 있고, 그 시점에서 상기 마이크로 연산은 상기 처리회로소자(4)의 처리유닛(12) 중 하나에 의해, 또는 그 마이크로 연산이 로드/스토어 마이크로 연산일 경우 상기 로드/스토어 유닛(14)에 의해, 처리하기 위해 발행된다. 일부의 예시에서는, 상기 마이크로 연산 각각이 프로그램 명령어 전체에 해당하기도 하고, 그 밖의 예시에서는, 상기 마이크로 연산이 하나의 명령어의 일부에 해당하기도 한다. 예를 들면, 복합 명령어는, 상기 처리의 상이한 단계들에 해당하는 마이크로 연산들이나, 상기 소스 오퍼랜드의 상이한 부분을 처리하는 마이크로 연산들로 분할되어도 된다. 상기 명령어 큐(20), 디코드 회로소자(22) 및 발행 큐(24)를, 상기 처리회로소자(4)를 제어하기 위한 제어회로소자라고 하기도 한다.
상기 데이터 처리장치(2)에서 행한 일 타입의 벡터 연산은, 조합연산을 증가하는 수의 데이터 요소들에 반복적으로 적용하는 벡터 스캔 연산이다. 상기 조합연산의 형태는, 가산연산, 곱셈연산, 최소 또는 최대 선택연산, 논리연산 등과 같이 다양할 수 있다. 그 스캔 연산 결과로서, 일련의 결과가 생성되고, 각 결과는 (이진 조합인 경우가 많은) 조합연산을 상이한 수의 데이터 요소들에 적용하는 것에 관련된다. 상기 벡터 스캔 연산을 직렬로 행할 수 있지만, 성능상의 이유로 상기 스캔 연산을 병렬화하는 것이 바람직할 수도 있다.
도 2는 적용되는 조합연산이 가산연산인 종래기술에 따른 벡터 스캔 연산을 행하는 직렬 기술을 나타낸다. 상기 벡터 스캔 연산은, 입력으로서, 데이터 요소V[0] 내지 V[7]와 추가의 데이터 요소S로 이루어진 소스 벡터를 수신한다. 상기 벡터 스캔 연산은, 각 단계가 2개의 요소들의 단일 조합을 행하는 일련의 단계(40∼54)로서 행해진다. 제1 단계(40)에서는, 상기 추가의 데이터 요소S와 제1 벡터 요소V[0]를 조합한다. 제2 내지 제8 단계(42∼54)에서는, 선행하는 단계로부터 벡터 요소의 쌍들의 또 다른 조합은, 상기 제8 단계(54)의 끝에서 일련의 합 V0+S, V1+V0+S, V2+V1+V0+S 등이 결정되도록 행해진다. 도 2에 나타낸 해결방법이 상기 스캔 연산을 병렬로 행하는 것과 관련된 하드웨어 비용을 야기시키는 것을 피하기 위해 로우 엔드(low-end) 시스템에 적합하기도 하고, 또 상대적으로 거의 없는 조합연산이 필요하기 때문에 간단하고 에너지가 효율적이기도 하지만(M 요소 벡터에 대해서는, M개의 처리단계가 필요할 것이다), 이 해결방법은 처리될 M개의 별도의 단계가 필요하고 병렬화로부터 이용가능한 완전한 성능 이득을 이용하지 않기 때문에, 상대적으로 느리다.
병렬화 기술에서는, 각 단계가 제1 벡터를 수신하고 상기 제1 벡터의 각각의 요소들의 하나 이상의 조합이나 상기 추가의 데이터 요소와 상기 제1 벡터의 하나의 요소와의 조합을 행하는 다수의 단계를 행하여, 제2 벡터를 생성한다. 상기 제1 단계의 제1 벡터는 소스 벡터이고, 그 밖의 단계의 제1 벡터는 선행하는 단계에서 발생한 제2 벡터다. 최종 단계에서 발생한 제2 벡터는 결과 벡터다.
도 3은 벡터 스캔 연산을 병렬화하는 종래기술을 나타낸다. 제1 단계(60)에서는, 입력 벡터의 제1 데이터 요소V[0]와 상기 추가의 데이터 요소S를 조합한다. 제2 단계(62)에서는, 인접 요소V[0] 내지 V[6]와 벡터 요소V[1] 내지 V[7]를 각각 조합한다(여기서, V[0]는 이미 상기 추가의 데이터 요소S와 조합된 것이다). 마찬가지로, 제3 단계(64)에서는, 상기 제2 단계(62)에서 발생한 벡터에 2개의 위치가 떨어진 벡터 요소들의 여러 가지의 조합을 행하고, 제4 단계(66)에서는 4개의 위치가 떨어져 이격된 요소들의 조합을 생성한다. 이러한 해결방법에 의해, 필요한 처리단계의 수를 log2(M)+1 처리단계까지 감소시킬 수 있다(그 추가의 단계는 상기 추가의 데이터 요소S를 처리하는데 필요하다).
도 4는 제1 내지 제3 단계가 도 3의 제2 내지 제4 단계와 본질적으로 같지만, 그 추가의 데이터 요소S가 제1 단계 대신에 최종의 단계에서 조합되는 종래기술의 다른 해결방법을 나타낸다. 이 경우에, 상기 제4 단계에서는 상기 추가의 데이터 요소S가 가산되므로, 그것이 단 하나의 벡터 데이터 요소라기보다는 벡터 데이터 요소 각각에 가산된다. 그렇지만, 단계의 총수는 그래도 도 3과 같다.
도 2 내지 도 4에 나타낸 것처럼, 종래기술은, 상기 추가의 데이터 요소S와 상기 벡터 요소들V의 하나 이상을 조합하는 하나의 단계만을 포함한다.
그러나, 본 기술의 발명자들에 의해 인식된 것은, 종래기술에서 고려하지 않은 하나의 발행이, 데이터 요소들 전부가 비액티브인 입력벡터에 상기 스캔 연산을 적용하여도 된다는 것이다. 마스크 또는 유사한 제어 정보를 사용하여 상기 스캔 연산을 사용하여 처리하는 입력벡터의 데이터 요소들의 일부만을 선택하는 것이 가능하다(예를 들면, 아래의 도 8 및 도 9를 참조). 도 4에 나타낸 기술에서는, 제4 단계에서 상기 결과 벡터의 데이터 요소들의 전부를 생성하여서, 그 결과 데이터 요소들의 일부만이 필요한 경우에도, 4개의 단계 모두를 행하는 것이 필요할 것이다. 도 3에 대해서는, 제3 단계의 끝에서 상기 결과 데이터 요소 0 내지 3이 이용 가능하지만, 제4 단계에서 요소 4 내지 7이 생성된다. 따라서, 4보다 많은 요소가 필요한 경우, 4개의 단계 모두를 행해야 한다.
이러한 문제는, 상기 추가의 데이터 요소S와 상기 벡터 데이터 요소의 하나 이상을 조합하는 벡터 스캔 연산의 다수의 단계로 이루어져서 해결될 수 있다. 이렇게 하여, 상기 벡터 스캔 연산은, 결과 데이터 요소의 G(여기서, M/2≤G<M)를 생성하는 적어도 하나의 조합단계를 포함할 수 있다. 필요한 경우, 상기 결과 벡터의 나머지 데이터 요소들은, 적어도 하나의 또 다른 단계를 행하여서 생성될 수 있지만, 이 단계는 G개이하의 데이터 요소가 필요한 경우에 생략될 수 있다.
이하의 설명에서는, 지수 [0],[1] 등을 사용하여 상기 스캔 연산에서 처리하는 벡터내의 요소의 위치를 참조하고, 첨자 지수 V1,V0 등은 소스 벡터 오퍼랜드의 대응한 데이터 요소들내의 수치를 참조한다.
도 5는 본 기술에 따른 벡터 스캔 연산을 행하는 제1 예시를 나타낸다. 그 벡터 스캔 연산은, (도 5의 예시에서 단계 1-3에 해당한) 적어도 하나의 조합단계와 (도 5의 예시에서 단계 4에 해당한) 적어도 하나의 또 다른 단계를 사용하여 행해진다. 본 예시에서는, 상기 벡터 스캔 연산의 각 단계에서 상기 벡터 요소들 중 하나와 상기 추가의 데이터 요소S를 조합한다. 제1 단계(100)에서는, 상기 소스 벡터 V의 요소V[0]와 상기 추가의 데이터 요소S를 조합하고, 이와 병렬로 상기 소스 벡터의 인접한 데이터 요소들의 쌍의 조합을 조합한다(예를 들면, V[1]의 V[0]와의 조합, V[2]의 V[1]과의 조합 등이 이루어진다). 제2 단계(102)에서는, 상기 제1 단계(100)에서 발생한 벡터의 요소[1]과 상기 추가의 데이터 요소S를 조합하여, 합V1+V0+S를 발생하고, 2개의 요소가 떨어져 있는 요소들의 쌍[0]/[2], [1]/[3]등을 조합한다. 제3 단계에서는, 선행하는 단계에서 발생한 벡터의 요소[3]과 상기 추가의 데이터 요소S를 조합하고, 4개의 요소가 떨어져 있는 요소[0]/[4], [1]/[5] 등을 조합한다.
따라서, 상기 적어도 하나의 조합단계의 끝에 의해, 상기 결과 데이터 요소들 R[0] 내지 R[6] 중 하나를 빼고는 모두는, 상기 소스 벡터의 요소들V[0] 내지 V[6]에 대한 상기 추가의 데이터 요소S와의 합이 이미 산출되어 있으므로 준비가 되어 있다. 단지 미싱(missing) 요소는, 합V7 내지 V0가 산출되었지만 상기 추가의 데이터 요소S가 아직 조합되지 않은(단계 3의 끝에서 요소[7]에 대한 괄호들안에 있는 "+S"로 나타냄) R[7]뿐이다. 따라서, 상기 적어도 하나의 또 다른 단계(106)에서는, 필요한 조합만을, 최종 결과 요소R[7]을 발생하기 위해 선행하는 단계에서 발생한 요소[7]과 상기 추가의 데이터 요소S를 조합하는 것이다.
따라서, 도 2 및 도 3에 나타낸 종래기술보다 한 단계 적은 상기 결과 데이터 요소들R[0] 내지 R[6]의 7을 생성하는 것이 가능하다. 상기 최종 데이터 요소R[7]가 필요하지 않은 경우, 상기 또 다른 단계(106)를 생략하여 성능을 향상시킬 수 있다(적어도 하나의 처리 사이클을 절약). 벡터ALU가 상기 스캔 유닛(12a)에 사용되면, 상기 처리회로소자(4)와 스캔 유닛(12a)은, 일반적으로 M-요소 벡터에 대해 상기 스캔 유닛(12a)이 이미 조합연산을 수행하기 위한 병렬 처리 유닛이 M개 있어도 되고, 도 5에 나타낸 단계들 중 아무것도 M보다 많은 조합연산을 필요로 하지 않기 때문에, 도 5에 나타낸 수정(modified) 스캔 연산을 행하기 위해 상당히 수정될 필요가 없어도 된다. 시프트 스테이지는, 상기 추가의 데이터 요소S와 벡터 요소들V를 처리하기 위해 필요한 위치에 시프트시킬 수 있다.
도 5에 나타낸 해결방법의 이점은, 상기 8개의 데이터 요소 중 7이 상기 스캔 연산의 최종 단계보다 앞선 하나의 단계가 이용 가능하다는 것이다. 보다 일반적으로, M개의 데이터 벡터에 대해서는, 종래기술보다 하나의 단계 앞선 상기 결과 요소들의 G=M-1을 생성하는 것이 가능하다. 그렇지만, 이에 따라, 단계마다 상기 추가의 데이터 요소S가 입력되는 것이 필요할 수도 있어, 상기 추가의 데이터 요소S가 아직 이용가능하지 않으면, 상기 벡터 스캔 연산의 제1 단계(100)가 지연되게 되었어야 할 것이다.
도 6 및 도 7은, 상기 추가의 데이터 요소S가 성능을 향상시키기 위해 이용 가능하기 전에 벡터 스캔 연산이 시작할 수 있도록 상기 제1 단계에서 상기 추가의 데이터 요소가 필요하지 않은 본 기술의 다른 예시들을 나타낸다.
도 6의 예시에서, 상기 추가의 데이터 요소S는 하나의 단계만큼 지연될 수 있다. 단계 100, 102, 104의 본 예시에서, 각각의 벡터 요소들V의 조합은 도 5와 같다. 그러나, 제1 단계(100)는, 상기 추가의 데이터 요소S와 상기 소스 벡터의 요소V[0]를 조합시키지 않는다. 상기 제3 단계의 끝에서 충분한 결과 데이터 요소들을 반드시 생성하도록, 상기 제2 단계(102) 및 제3 단계(104)는, 상기 추가의 데이터 요소S와, 도 5와 같은 하나의 벡터 요소 대신에 벡터 요소 2개와 조합시켜도 된다. 따라서, 제2 단계(102)에서는 상기 제1 단계(100)의 결과의 요소 [0] 및 [1]과 상기 추가의 데이터 요소S를 조합하고, 제3 단계(104)에서는 상기 제2 단계(102)의 결과의 요소 [2] 및 [3]과 상기 추가의 데이터 요소S를 조합한다. 이것이 의미하는 것은, 상기 제3 단계(104)의 끝에서 상기 결과 데이터 요소들R[0] 내지 R[5]의 6개의 요소가 준비가 되어 있지만, 단계(104)로부터의 요소[6],[7]과 상기 추가의 데이터 요소S를 조합하는 상기 또 다른 단계(106)를 사용하여 생성되는 2개의 요소 R[6]과 R[7]이 있다는 것이다.
마찬가지로, 도 7에 있어서, 상기 추가의 데이터 요소S는, 단계 104, 106에서만 입력되고 단계 100,102에는 필요하지 않도록 또 다른 단계 동안 지연될 수 있다. 이에 따라 벡터 스캔 연산이 도 6보다 앞서 시작할 수 있다. 또, 벡터 요소들의 조합이 도 5 및 도 6과 같지만, 이 경우에 상기 추가의 데이터 요소S는, 단계 104에서의 최하위 4개의 데이터 요소[0] 내지 [3]과 조합되고, 단계 106에서 상위 4개의 데이터 요소[4] 내지 [7]과 조합된다. 따라서, 최하위 4개의 데이터 요소만이 제3 단계의 끝에서 이용 가능하여서 이때의 상기 또 다른 단계(106)는 상기 결과 벡터의 최종 4개의 데이터 요소를 생성한다. 이때, 도 3의 기술도 제3 단계의 끝에서 4개의 요소와 상기 제4 단계의 끝에서 나머지 4개의 요소를 생성하지만, 도 4의 기술은 제1 단계에서 입력될 상기 추가의 데이터 요소S가 필요하고, 도 7의 기술은, 상기 추가의 데이터 요소S가 준비가 되기 전에 상기 벡터 스캔 연산을 시작되게 하도록 상기 추가의 데이터 요소S의 입력을 2개의 단계동안 지연시킬 수 있어, 성능을 향상시킬 수 있다.
따라서, 상기 추가의 데이터 요소S가 지연될 수 있는 사이클 수와, 상기 적어도 하나의 초기의 단계에서 이용가능한 상기 결과 벡터R의 데이터 요소의 수 G간간에 균형(trade-off)이 있다. 일반적으로, M개의 데이터 요소(여기서 M=2P)에 대해 적용된 벡터 스캔 연산에 대해서와, M-G가 2의 제곱이면, 본 기술에서 각 단계에서 행해진 조합의 일반적인 설명은 다음과 같다. 상기 벡터 스캔 연산은,
● P개의 단계들(예를 들면, 도 5에서 단계 J=0 내지 J=2)로 이루어진 적어도 하나의 조합단계:
○ 0≤J<P에 대해서는, 상기 P개의 단계들 중 단계J가, 2J≤m<N의 경우, 데이터 요소들[m]과, 그 단계에서 출력된 상기 제2 벡터의 요소[m]를 생성하기 위해서 그 단계에 공급된 제1 벡터의 요소[m-2J]를 조합하는 조합연산을 포함하는 경우; 및
○ log2(M-G)≤J<P에 대해서는, 상기 P개의 단계 중 단계J가, 2J-(M-G)≤q<2j의 경우, 제2 벡터의 데이터 요소[q]를 생성하기 위해서 제1 벡터의 데이터 요소[q]와 상기 추가의 데이터 요소S를 조합하는 조합연산을 포함하는 경우에, 상기 P개의 단계들로 이루어진 적어도 하나의 조합단계와,
● G≤k<N에 대해서는, 적어도 하나의 또 다른 단계에 공급된 상기 제1 벡터의 데이터 요소[k]와 상기 적어도 하나의 추가의 데이터 요소S를 조합하는 조합연산을 포함하는 상기 적어도 하나의 또 다른 단계를 포함하여도 된다.
N은 이러한 특별한 연산에서 생성될 필요가 있는 결과 벡터의 데이터 요소들의 수다(예를 들면, N은 상기 데이터 요소의 일부가 마스크 아웃된다).
도 5 내지 도 7은 적어도 하나의 조합단계를 행한 후 상기 적어도 하나의 또 다른 단계를 행하는 예시들을 나타내지만, 다른 순서로 그 단계들을 행하는 것도 가능하다. 예를 들면, 상기 또 다른 단계는, 첫 번째로 실행될 수 있었거나, 그 밖의 단계 도중에 행해질 수 있었다. 또한, 상기 P개의 단계들은 다른 순서로 행해질 수 있었다.
도 8은 마스크 정보(110)를 사용하여 벡터 스캔 연산을 제어하는 제1 예시를 나타낸다(본 예시는 도 5에 해당하지만, 기타의 실시예에 대해 같은 방식으로 마스크를 사용하는 것도 가능하다). 상기 마스크 연산의 각 비트는 상기 소스 벡터의 요소들 중 하나에 해당하고, 상기 마스크 비트가 1일 경우, 대응한 벡터 요소는 처리될 선택된(액티브) 요소이며, 그 마스크 비트가 0일 경우, 그 벡터 요소는 처리하기 위해 선택되지 않는다. 따라서, 도 8의 예시에서는, 상기 벡터의 최하위 5개의 요소가 선택된다. 그 선택된 요소들의 처리는 도 5의 예시에 나타낸 것과 같은 방식으로 진행될 뿐이다. 그러나, 0 요소들의 마스크 비트들은, x("돈 케어(don't care)" 값-그들은 0 또는 1인지에 상관없다)로서 효율적으로 취급된다. 조합마다, 일 입력이 "x"이고 타 입력이 "x"가 아니면, "non x" 입력이 출력으로 향한다. 양쪽의 입력이 "x"이면, 상기 출력도 "x"로 설정된다. 따라서, 상기 제1 단계(100)로부터 생기는 요소들 [5] 내지 [7]은, V4, x 및 x의 값을 각각 갖는다. 제2 단계(102) 및 제3 단계(104)는 도 5와 같은 방식으로 진행된다. 최하위 5개의 요소에 대한 결과가 제3 단계의 끝에서 이용가능하므로(S 내지 V4의 조합이 완전하다), 제4 단계(106)가 필요하지 않아서 생략될 수 있다.
마찬가지로, 도 9는, 상기 마스크가 비선택된 요소들로서 비인접한 위치에 위치된 다수의 이산 요소를 설정하는 예를 나타낸다. 본 예시에서, 벡터 요소 [1], [5] 및 [7]이, 0의 마스크 비트들을 사용하여 비선택된 것으로서 표시된다. 또, 비선택된 요소들은, x("돈 케어")로서 취급되어서 이들 요소로부터의 값 V1, V5, V7은 제1 단계(100)에서 순방향으로 전파되지 않는다. 이것이 의미하는 것은, 선택된 요소들에 대응한 결과 요소들이 (비선택된 요소들을 건너뛰는) 선택된 요소들만에 대한 합의 값을 취한다. 예를 들면, 결과 데이터 요소R[6]은, 비선택된 요소들로부터 값V5,V1을 포함하지 않는 V6+V4+V3+V2+V0+S의 값을 갖는다. 또, 필요한 모든 요소가 제3 단계(104)의 끝에서 준비가 되어 있으므로, 상기 또 다른 단계(106)는 필요하지 않다. 일반적으로, N-1이 상기 벡터의 최종 선택된 요소의 지표에 해당하도록 선택된 값 N에 대해서, 최종의 단계(106)는, N≤G인 경우, 제1 내지 제3 단계(100-104)만을 행하여서 이용 가능한 데이터 요소들의 수를 건너뛸 수 있다.
도 8 및 도 9는 비선택된 요소들의 처리가 정상으로서 처리되지만 값들이 0으로 설정되는 예시를 나타낸다. 이들 요소의 처리를 완전하게 금지시키는 것도 가능하다. 도 8 및 도 9는 마스크 정보를 사용하여 상기 선택된 및 비선택된 요소들을 정의하는 예를 나타내지만, 벡터 길이 파라미터 또는 벡터 포맷 정보 등의 다른 타입의 제어정보를 사용하는 것도 가능하다.
또한, 비선택된 요소들에 대응한 결과 데이터 요소들은, 상이한 값들로 설정되어도 된다. 도 9는, 결과 벡터의 비선택된 요소들에 값을 기록하기 위해서, 상기 벡터 스캔 연산과 병렬 또는 직렬로 행해질 수 있는 라이트백(writeback) 연산(112)을 나타낸다. "---"로 나타낸 결과 벡터의 요소들은, 상기 라이트백 연산에 의해 수정되지 않는다. 도 9는, 상기 소스 레지스터의 비선택된 요소들의 값들이 목적지 레지스터의 대응한 위치들에 기록되는 예를 나타낸다(이것은, 마스크를 반전하고 그 반전된 마스크를 사용하여 레지스터 기록을 제어함으로써 달성될 수 있다). 다른 예시들에서, (0 또는 모든 1비트 등의) 소정의 값은, 비선택된 요소들에 기록될 수 있었고, 상기 결과 벡터의 비선택된 요소들에 기억된 이전의 값이 유지될 수 있었다(이것은, 예를 들면, 레지스터 리네이밍이 사용되는 경우 그래도 라이트 백 연산을 필요로 하기도 함).
도 5 내지 도 9는, 8개의 조합을 병렬로 행할 수 있는 스캔 유닛(12a)으로 8 요소 벡터를 처리하는 예들을 나타낸다. 데이터 요소들의 일부만을 병렬로 처리할 수 있도록 데이터 경로 폭이 보다 작은 스캔 유닛(12a)을 사용하는 것도 가능하다. 이것은, 그 벡터 스캔 연산을 구현하는 하드웨어 비용을 감소시키는데 유용할 수 있다. 이러한 스캔 유닛(12a)에 대해서, 상기 벡터 스캔 연산은, 데이터 요소의 전부에 대해 행해진 스캔 연산과 같은 결과를 함께 제공하는 별도의 분할된 연산으로 분할될 수 있다. 도 10은 도 4의 종래기술에 적용된 분할 스캔 연산의 일례를 나타내지만, 도 10 자체가 종래기술은 아니다. 도 10의 예시에서, 상기 스캔 연산은, 다수의 단계(120 내지 128)로 행해진다. 단계 120 내지 124는 상기 소스 벡터의 요소V[0] 내지 V[3]와 추가의 데이터 요소S를 사용하여 행해진 제1 분할 스캔 연산(132)에 해당하고, 단계 126 내지 128은 상기 소스 벡터의 상위 4개의 요소V[4] 내지 V[7]와 상기 제1 분할 스캔 연산(132)에서 발생한 결과 요소R[3]을 사용한 제2 분할 스캔 연산(134)에 해당한다. 상기 제1 분할 스캔 연산(132)의 단계 120, 122, 124는, 하위 4개의 요소 [0] 내지 [3]에만 적용될 경우 도 4의 제1, 제2 및 제4 단계와 같은 조합을 행한다. 마찬가지로, 상기 제2 분할 스캔 연산(134)의 단계 126, 127, 128은, 상위 4개의 요소 [4] 내지 [7]에 대해서 도 4의 상기 제1, 제2 및 제4 단계에 해당한다. 상기 제2 분할 스캔 연산(134)의 단계 126,127과 제1 분할 스캔 연산(132)의 단계 120-124간에 의존성이 없으므로, 이들 단계는, 교차 배치되어 데이터 경로 폭이 보다 좁은 스캔 처리 유닛(12a)을 사용하여 상기 스캔 연산을 비교적 효율적으로 행할 수 있다.
도 11 및 도 12는 유사한 분할 스캔을 행하지만 도 5에 나타낸 것과 같은 본 기술의 스캔 연산에 적용된 예시들을 나타낸다. 도 11은 상기 제1 분할(140)이 도 5의 단계1 내지 3과 같지만 요소[0] 내지 [3]에 대해서만 행해지는 단계 130, 131, 132를 포함하는 제1 예시를 나타낸다. 이에 따라 상기 제1 분할로 생성된 요소들 중 3개의 요소가 단계 131의 끝에서 준비가 될 수 있다. 도 11에 도시된 것처럼, 각각 단계 130, 131, 132와 같은 조합연산에 대응한 단계 133, 134, 135를 사용하여 제2 분할(142)이 행해지는 경우, 이것은, 제2 분할의 단계 133이 제1 분할의 단계 132에서 발생한 요소R[3]에 좌우되기 때문에, 제1 분할(140)의 최종 단계 132가 끝날 때까지 대기하기 위해 제2 분할(142)이 필요하다. 그러므로, 이러한 해결방법에 의해, 상기 벡터 스캔은 6개의 단계가 필요하다.
도 12는 본 기술을 사용하여 상기 분할 스캔을 구현하는 보다 효율적인 방식을 나타낸다. 본 예시에서, 상기 제1 분할(140)은, 도 11과 같은 것으로, 단계 130, 131, 132로 이루어진다. 그러나, 제2 분할(142)은, 단계 126, 127, 128을 사용하여 도 10의 제2 분할(134)과 같은 방식으로 행해진다. 이것이 의미하는 것은, 제2 분할(142)의 단계 126, 127이 제1 분할(140)의 단계 130-132와 독립적이어서 교차 배치될 수 있어, 제2 분할(142)은 앞서 시작할 수 있어, 그 연산을 전체적으로 실행하기 위한 사이클의 수를 감소시킬 수 있다는 것이다. 그럼에도 불구하고, 도 10과는 달리, 4개보다 적은 데이터 요소가 필요한 경우, 제1 분할의 일부 단계들이 생략되어 성능을 향상시킬 수 있다. 따라서, 제1 분할의 도 5 또는 기타의 실시예들의 오더링과 이후의 분할의 상이한 오더링을 조합하는 혼합 해결방법에서는 분할 스캔 연산으로 향상된 성능을 제공할 수 있다.
따라서, 도 5-도 7 또는 그 밖의 예시들에 나타낸 오더링은, 스캔 연산에서 처리중인 벡터 전체에 대해서 적용될 필요가 없다. 소스 벡터의 데이터 요소들의 M개에만(예를 들면, 도 12에서 M=4) 위에 나타낸 기술을 적용하고, 상기 조합연산의 상이한 오더링을 사용하여 동일한 벡터의 나머지 데이터 요소들을 처리하는 것이 가능하다.
도 13은 벡터 스캔 유닛(12a)의 일례를 나타낸다. 벡터 스캔 유닛(12a)은 다수의 스캔 스테이지(150)를 가져도 된다. 이전의 예시들에 나타낸 것처럼 상기 벡터 스캔 연산의 단일의 단계를 수행하기 위해서, 상기 벡터가 각 스캔 스테이지(150)를 통과하여, 최종의 스캔 스테이지의 끝에서 상기 스캔 연산의 단계가 발생한 벡터를 이용 가능하다. 상술한 것과 같은 우회 경로(13)는, 상기 최종 스캔 스테이지의 결과를 이후의 단계에서 사용하기 위한 제1 스캔 스테이지에 반대로 순방향으로 진행되는데 사용된다. 일부의 예시에서는 2보다 많은 스캔 스테이지가 있어도 된다.
도 14는 도 11에 나타낸 방식으로 벡터 스캔 연산을 분할하는 도 13에 나타낸 스캔 유닛(12a)의 파이프라인 이용의 일례를 나타낸다. 상기 스캔 연산의 각 단계는 2개의 사이클, 즉 제1 스캔 스테이지에서 0인 하나의 사이클과 제2 스캔 스테이지에서 1인 또 다른 사이클을 필요로 한다. 도 11의 예시에서, 상기 스캔 연산의 상이한 단계간의 의존성이 의미하는 것은, 각 단계가 이전의 단계의 결과를 대기하여야 하기 때문에 상기 스캔 연산의 단계들이 서로 교차 배치될 수 없다는 것이다. 이것은, 12개의 사이클이 필요하다는 것을 의미한다. 이에 대하여, 도 15는 도 12의 예에 대해 대응한 파이프라인 이용을 나타낸다. 이 경우에, 상기 스캔 연산의 상이한 스캔 분할간에 의존성이 보다 적어서, 그 분할의 상이한 단계들은 하나의 단계가 제2 스캔 스테이지에 있고 다른 분할에 대응한 또 다른 단계가 제1 스캔 스테이지에 의해 처리되도록 교차 배치될 수 있다. 도 15에 나타낸 것처럼, 이것은, 파이프라인 이용이 보다 많을 수 있고 전체 연산이 도 11과 비교하여 도 12의 해결방법을 사용하여 보다 적은 사이클에서 완료될 수 있다는 것을 의미한다.
따라서, 본 기술은, 분할 스캔에서 다수의 분할 중 제1 분할을 처리하는 것에 아주 적합하지만, 이후의 분할은 상기 조합연산의 상이한 오더링을 사용하여 보다 효율적으로 행해질 수도 있다.
또한, 본 기술은, 상기 벡터에서 데이터 요소들의 상이한 세그먼트에 대해 별도의 스캔이 행해진 분할 스캔(segmented scan)을 행하는 시스템에도 유용하다. 도 16은 분할 스캔의 개념을 나타내지만, 도 4의 종래기술의 스캔 연산에 적용될 때를 나타낸다(도 16자체가 종래기술이 아님). 세그먼트 정보(200)는, 상기 소스 벡터V의 데이터 요소들의 상이한 세그먼트간의 경계를 나타내도록 구성된다. 세그먼트 마스크(200)내의 각 '1'비트는 일 세그먼트와 다른 세그먼트간의 경계를 나타낸다(그 '1'비트로 표시된 요소는 상기 세그먼트의 최종 요소이고, 다음 요소는 새로운 세그먼트를 시작할 것이다). (본 예시에서 요소들 [0] 내지 [3]을 포함하는) 세그먼트 0에서는, 상기 추가의 데이터 요소S와 그 세그먼트의 요소들을 사용하여 스캔 연산을 행한다. 임의의 또 다른 세그먼트(예를 들면, 세그먼트 1은 본 예시에서 요소[4] 내지 [7]을 포함함)에서는, 그 세그먼트로부터의 벡터 요소들을 조합하지만 추가의 데이터 요소를 포함시키지 않고 조합한다. 그 조합연산은 도 4와 같은 방식으로 진행하지만, 그 마스크는 (도 16의 점선으로 나타낸 것과 같은) 상이한 세그먼트에서의 요소들간의 어떠한 조합도 사용불가능하게 하는데 사용된다. 이것은, 이후의 단계동안 마스크들을 생성하기 위해 도 16의 상부에 도시된 방식으로 마스크를 시프트함으로써 이루어질 수 있다. 제1 단계에서는 마스크를 원래의 형태로 적용한다. 제2 단계에서는, 그 마스크(200)를 일 위치 아래로 시프트시키고 도 16의 파트 202에 나타낸 것과 같이 2개의 마스크의 OR을 생성한다. 제3 단계에서는, 상기 제2 단계로부터의 마스크를 2개의 위치 아래로 시프트시키고 이전의 마스크와 논리합한다(도 16의 파트 204를 참조). 보다 많은 데이터 요소들로 벡터들을 처리할 때, 이후의 임의의 단계에서는, 마스크를, 단계마다 2의 제곱 증가시키는 증분으로 아래로 계속 이동시키고 나서, 상기 이전의 단계로부터의 마스크와 논리합한다. 도 16의 최종 단계는, 상기 추가의 데이터 요소S를, 제1 세그먼트 0내의 임의의 요소들에 간단히 가산할 뿐이다. 이 단계도, 선행하는 단계로부터의 마스크를 사용하여 제어될 수 있다. 도 16에 나타낸 해결방법은, 상기 추가의 데이터 요소S가 최정의 단계까지 입력되지 않으므로, 상기 스캔 연산을 실행하기 위해서 모든 단계가 필요하다는 것이다.
도 17은 분할 스캔의 일례를 나타내지만, 도 5의 실시예로부터의 조합연산들의 오더링을 사용한 것을 나타낸다. 단계마다의 마스크들은, 도 16과 같은 방식으로 생성된다. 그러나, 도 5와 같이 조합의 오더링을 변경함으로써, 그 결과 데이터 요소들 중 더 많은 결과 데이터 요소는 제3 단계의 끝에 의해 이용 가능하다. 제4 단계가 상기 추가의 데이터 요소S와 상기 제3 단계에서 발생한 최종의 요소[7]과의 조합만을 포함하고 이 조합은 하나의 세그먼트만 있는 경우(즉, 마스크가 전체적으로 제로이다) 필요할 뿐이므로, 최종의 단계는, 하나보다 많은 세그먼트가 있는 경우 세그먼테이션의 위치 또는 세그먼트의 수에 상관없이 생략될 수 있다. 그러므로, 도 5에 나타낸 벡터 스캔 연산은, 분할 스캔을 위해 행해진 단계의 수를 감소시킬 수 있는 경우가 많으므로 상기 분할 스캔 연산에 아주 적합하다. 마찬가지로, 도 6 및 도 7의 예시들은, 분할 스캔 연산을 사용하여 구현되어도 되고, 또 이것은 세그먼트가 다수일 때 필요한 단계의 수를 감소시키는데 도움이 될 수 있다.
도 18은 벡터 스캔 연산을 실시하는 방법의 예를 나타낸다. 단계 300에서, 상기 처리회로소자(4)는, 소스 벡터의 M개의 요소와 추가의 데이터 요소S를 사용하여 행해질 벡터 스캔 마이크로 연산을 수신한다. 상기 추가의 데이터 요소S는, 예를 들면 선행하는 연산으로부터의 캐리값, 벡터 요소, 또는 스칼라 값이어도 된다. 상기 벡터 스캔 연산은, 상기 추가의 데이터 요소를 사용하여 시퀀스로서 주사될 N개의 요소(N은, 도 8 및 도 9에 나타낸 것과 같이 나머지 요소들이 마스크 아웃되는 경우나, 나머지 요소들이 도 16 및 도 17과 같이 상기 추가의 데이터 요소S를 사용하지 않는 이후의 세그먼트의 일부인 경우에, M미만이어도 됨)를 특정하는 제어정보가 관련되어 있다.
상기 벡터 스캔 연산에 따라, 단계 302에서는, N이 상기 적어도 하나의 조합단계를 사용하여 생성될 수 있는 결과 데이터 요소들의 수인 G보다 큰지를 판정한다. N>G인 경우, 단계 304에서는, 상기 스캔 유닛(12a)이, 상기 G개의 결과 데이터 요소들을 생성하는 적어도 하나의 조합단계와, 요소[G]내지 [N-1]을 생성하는 적어도 하나의 또 다른 단계를 수행한다. 한편, N≤G인 경우, 단계 306에서는, 상기 스캔 유닛(12a)이, 상기 적어도 하나의 조합단계를 수행하지만, 그 적어도 하나의 또 다른 단계를 생략한다. 단계 308에서는, 상기 결과 데이터 요소들을 포함하는 상기 결과 벡터를 출력한다.
도 19 내지 도 23은, 다른 타입의 처리 알고리즘을 실행할 때의 상기 벡터 스캔 연산의 관찰된 사용법의 해석을 나타낸다. 도 19는 역전파 알고리즘(BackProp)과 다른 데이터 경로 폭의 희소 행렬 벡터 곱셈 알고리즘(SpMV)에 적용될 때, 상기 분할 벡터 스캔의 다른 세그먼트들의 수를 사용하는 관찰된 명령어들의 퍼센트를 나타낸다. 128비트의 데이터 경로를 갖는 상기 SpMV 알고리즘의 실행 이외에, 분할 명령어 대부분이 적어도 2개의 세그먼트를 계산하므로, 세그먼트가 2개 이상일 때 또 다른 단계를 생략할 수 있는 본 기술로부터 이익을 얻었을 것이라는 것이 관찰되었다.
도 20 및 도 21은 계산된 평균 세그먼트의 수를 나타내고, 잠재적인 성능은 크기가 다른 행렬로 상기 SpMV 알고리즘을 각각 행하는데 이익이 된다. 도 21에 나타낸 것처럼, 스칼라 연산 속도의 향상과 비교할 때, 분할 스캔을 사용하여 얻어진 성능이 25×25요소와 100×100요소간의 행렬 크기에 특히 이롭다는 것을 알 수 있다. 이를 도 20과 비교함으로써, 이것은, 적어도 평균 1.5세그먼트에 관해 동작하는 상기 분할 명령어들이, 성능 이득이 상기 분할 스캔을 제어하는 것과 연관된 전반적인 계산을 보상하도록 성능을 향상시키는 것을 나타낸다. 이것은, 하나보다 많은 세그먼트를 사용하여 분할 스캔의 속도를 향상시킬 수 있는 본 기술의 사용을 지원한다.
비분할 스캔에 대하여, 도 22 및 도 23은 명령어들에서 이용한 평균 벡터 길이의 해석을 나타낸다. 도 22는 상이한 벤치마크 알고리즘용 폭 256비트의 데이터 경로를 사용하여 처리된 32비트의 데이터 요소들의 일례를 나타낸다. 도 22에 나타낸 것처럼, 8 데이터 요소 벡터의 2개 또는 5개의 데이터 요소만을 사용하는 명령어들의 상당한 퍼센트가 있다. 비록 도 3의 이전의 기술에서는 액티브 요소가 2개인 8요소 벡터들을 처리할 때 단계의 수를 감소시킬 수 있었을 것이지만, 액티브 요소가 5개인 벡터에 대해서는 단계의 수를 감소시킬 수 없었다. 이에 반하여, 본 기술은, M요소 벡터의 액티브 요소들의 수가 M/2과 M의 사이에 있을 때에도 단계의 수를 감소시킬 수 있다. 따라서, 도 22는, 본 기술이 상당한 수의 명령어에 대한 유용한 성능 향상을 제공한다는 사실을 지원한다. 한편, 16비트 요소를 갖는 벡터들을 처리하는 폭이 256비트의 데이터 경로에 대한 도 23에 나타낸 것처럼, 이 경우에, 데이터 요소의 전체 수 미만을 사용하는 명령어들의 퍼센트는, 무의미하다. 시스템 설계자는, 벡터 크기를 완전히 이용하지 않는 상당한 수의 명령어가 있을 것이라고 예측될 때마다 본 기술을 선택할 수 있다.
도 24는 이용될 수 있는 가상 머신 구현을 나타낸다. 앞서 설명한 실시예들이 관련된 기술들을 지원하기 위한 특정 처리 하드웨어를 작동시키는 장치 및 방법의 관점에서 본 발명을 구현하는 한편, 하드웨어 디바이스들의 소위 가상 머신 구현을 제공하는 것도 가능하다. 이들 가상 머신 구현은, 가상 머신 프로그램(402)을 지원하는 호스트 운영체계(404)를 일반적으로 동작시키는 호스트 프로세서(406)상에서 작동한다. 일반적으로, 적당한 속도로 실행하는 가상 머신 구현을 제공하는데 아주 강력한 프로세서가 필요하지만, 이러한 해결방법은 특정한 환경, 이를테면 호환성이나 재사용 목적을 위한 또 다른 프로세서 고유의 코드를 동작시키기를 바랄 때, 정당화될 수도 있다. 가상 머신 프로그램(402)은, 실제 하드웨어 디바이스에 의한 프로그램의 실행으로 주어졌을 것과 같은 결과를 나타내기 위해 어플리케이션 프로그램(또는 운영체계)(400)을 실행할 수 있다. 이렇게 하여, 상술한 메모리 액세스들의 제어를 포함하는 상기 프로그램 명령어들은, 그 가상 머신 프로그램(402)을 사용하여 상기 어플리케이션 프로그램(400)내에서 실행되어도 된다.
여기에서는 본 발명의 예시적 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 이들의 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에 기재된 것과 같은 본 발명의 범위와 사상을 벗어나지 않고 당업자가 여러 가지로 변경 및 변형을 할 수 있다는 것을 알 것이다.

Claims (30)

  1. 복수의 데이터 요소로 이루어진 벡터 오퍼랜드들을 기억하는 벡터 레지스터 스토어;
    상기 벡터 레지스터 스토어로부터 벡터 오퍼랜드들을 처리하는 처리회로소자; 및
    소스 벡터 오퍼랜드V[0] 내지 V[M-1]의 M개의 데이터 요소와 적어도 하나의 추가의 데이터 요소S에 관해 벡터 스캔 연산을 행하여, 결과 벡터 오퍼랜드R[0] 내지 R[M-1]의 M개의 데이터 요소를 생성하기 위해 상기 처리회로소자를 제어하는 제어회로소자로서, 여기서 N≤M이고 O≤i<N일 경우, 상기 결과 벡터 오퍼랜드의 데이터 요소R[i]가 상기 적어도 하나의 추가의 데이터 요소S와 상기 소스 벡터 오퍼랜드의 데이터 요소V[0] 내지 V[i]의 적어도 일부의 조합에 대응한 값을 갖는, 상기 제어회로소자를 구비하고,
    상기 제어회로소자는, 각 단계가 제1 벡터로부터 제2 벡터를 생성하는 복수의 단계에서 상기 벡터 스캔 연산을 행하기 위해 상기 처리회로소자를 제어하도록 구성되고, 제1 단계의 상기 제1 벡터는 상기 소스 벡터 오퍼랜드의 데이터 요소들을 포함하고, 그 밖의 단계의 상기 제1 벡터는 선행하는 단계의 상기 제2 벡터를 포함하고, 각 단계는 상기 제2 벡터의 데이터 요소를 생성하기 위해 상기 제1 벡터의 데이터 요소를 상기 적어도 하나의 추가의 데이터 요소S 또는 상기 제1 벡터의 또 다른 데이터 요소와 조합하는 적어도 하나의 조합연산을 포함하고,
    상기 복수의 단계 중 적어도 하나의 단계는 병렬로 행해진 복수의 조합연산을 포함하고,
    상기 복수의 단계 중 적어도 두개의 단계는, 상기 제1 벡터의 데이터 요소를 상기 적어도 하나의 추가의 데이터 요소S와 조합하는 조합연산을 포함하는, 데이터 처리장치.
  2. 제 1 항에 있어서,
    M이 2의 제곱인, 데이터 처리장치.
  3. 제 2 항에 있어서,
    적어도 N>G이면, M/2≤G<M인 경우, 상기 제어회로소자는, 상기 결과 벡터 오퍼랜드의 G개의 데이터 요소들R[0] 내지 R[G-1]을 생성하기 위한 적어도 하나의 조합단계와, 상기 적어도 하나의 조합단계에 더하여 행해질 때 상기 결과 벡터 오퍼랜드의 데이터 요소 R[G] 내지 R[M-1]을 생성하기 위한 적어도 하나의 또 다른 단계로 이루어진, 상기 복수의 단계를 행하기 위해 상기 처리회로소자를 제어하는, 데이터 처리장치.
  4. 제 3 항에 있어서,
    M/2≤N≤G일 경우, 상기 제어회로소자는, 상기 적어도 하나의 조합단계를 행하고 상기 적어도 하나의 또 다른 단계를 생략하기 위해 상기 처리회로소자를 제어하는, 데이터 처리장치.
  5. 제 3 항 또는 제 4 항에 있어서,
    상기 적어도 하나의 또 다른 단계는, 상기 제1 벡터의 데이터 요소와 상기 적어도 하나의 추가의 데이터 요소S를 조합하는 적어도 하나의 조합연산을 포함하고, 상기 제1 벡터의 데이터 요소와 상기 제1 벡터의 또 다른 데이터 요소를 조합하는 어떤 조합연산도 포함하지 않는, 데이터 처리장치.
  6. 제 3 항 내지 제 5 항 중 어느 한 항에 있어서,
    적어도 N>G일 경우,
    상기 적어도 하나의 조합단계는, 상기 적어도 하나의 또 다른 단계를 행하지 않고 상기 처리회로소자가 상기 적어도 조합단계를 행하였을 경우, 상기 처리회로소자가 상기 적어도 하나의 조합단계의 최종 단계에서 상기 제2 벡터의 데이터 요소[G] 내지 [M-1]을 생성하는 단계이고, 여기서 G≤k<M일 경우 상기 제2 벡터의 데이터 요소[k]의 값이 상기 소스 벡터 오퍼랜드의 데이터 요소V[0] 내지 V[k]의 적어도 일부의 조합에 해당하고,
    상기 적어도 하나의 또 다른 단계에서, 상기 제어회로소자는, G≤k<N일 경우, 상기 적어도 하나의 추가의 데이터 요소S와 상기 적어도 하나의 또 다른 단계에 대한 상기 제1 벡터의 데이터 요소[k]를 조합하기 위한 조합연산을 행하기 위해 상기 처리회로소자를 제어하는, 데이터 처리장치.
  7. 제 3 항 내지 제 6 항 중 어느 한 항에 있어서,
    M=2P의 경우, 상기 적어도 하나의 조합단계는, 제1 벡터의 데이터 요소 [0] 내지 [M-1]에 따라 제2 벡터의 데이터 요소 [0] 내지 [M-1]을 생성하는 P개의 단계들을 포함하고,
    O≤J<P의 경우, 상기 P개의 단계들의 단계J는, 2J≤m<N의 경우, 상기 제2 벡터의 데이터 요소[m]을 생성하기 위해 상기 제1 벡터의 데이터 요소[m]와 상기 제1 벡터의 데이터 요소[m-2J]를 조합하기 위한 조합연산을 포함하는, 데이터 처리장치.
  8. 제 7 항에 있어서,
    M-G가 2의 제곱이고, log2(M-G)≤J<P의 경우, 상기 P개의 단계들의 단계J는, 2J-(M-G)≤q<2j의 경우, 상기 제2 벡터의 데이터 요소[q]를 생성하기 위해 상기 제1 벡터의 데이터 요소[q]와 상기 추가의 데이터 요소S를 조합하는 조합연산을 포함하는, 데이터 처리장치.
  9. 제 3 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 제어회로소자는, 상기 결과 벡터 오퍼랜드의 데이터 요소R[N-1]에 대응한 캐리값을 출력하기 위해 상기 처리회로소자를 제어하고,
    상기 적어도 하나의 또 다른 단계가 생략되는 경우, 상기 제어회로소자는, 상기 처리회로소자가 상기 적어도 하나의 또 다른 단계를 행한 경우보다 앞서 상기 캐리값을 출력하기 위해 상기 처리회로소자를 제어하는, 데이터 처리장치.
  10. 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 벡터 스캔 연산은 상기 소스 벡터 오퍼랜드의 어느 데이터 요소들이 선택된 데이터 요소들인지를 식별하는 제어정보와 관련되어 있고, 상기 제어회로소자는 상기 벡터 스캔 연산으로 상기 선택된 데이터 요소들을 처리하기 위해 상기 처리회로소자를 제어하는, 데이터 처리장치.
  11. 제 10 항에 있어서,
    N은, V[N-1]이 상기 제어정보에 의해 나타낸 상기 소스 벡터 오퍼랜드의 최종 선택된 데이터 요소인 값을 갖는, 데이터 처리장치.
  12. 제 10 항 또는 제 11 항에 있어서,
    상기 제어회로소자는, 상기 소스 벡터 오퍼랜드의 비선택된 데이터 요소들에 대응한 상기 결과 벡터 오퍼랜드의 데이터 요소들을,
    (i) 소정의 값;
    (ii) 상기 소스 벡터 오퍼랜드의 비선택된 데이터 요소들이 소정의 값으로 설정된 상기 벡터 스캔 연산을 행하여서 구해진 값;
    (iii) 상기 소스 벡터 오퍼랜드를 기억하는 소스 레지스터에서의 대응한 데이터 요소의 값; 및
    (iv) 상기 결과 벡터 오퍼랜드를 기억하는 목적지 레지스터에서의 대응한 데이터 요소의 값 중,
    하나로 설정하기 위해 상기 처리회로소자를 제어하는, 데이터 처리장치.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 벡터 스캔 연산은 상기 소스 벡터의 하나 이상의 데이터 요소를 각각 포함하는 하나 이상의 세그먼트를 식별하는 세그먼트 정보와 관련되어 있고,
    상기 세그먼트 정보가 복수의 세그먼트를 식별하는 경우, 상기 제어회로소자는 상기 복수의 세그먼트의 제1 세그먼트의 데이터 요소들에 관해 상기 벡터 스캔 연산을 행하기 위해 상기 처리회로소자를 제어하는, 데이터 처리장치.
  14. 제 13 항에 있어서,
    N은, V[N-1]가 상기 제1 세그먼트의 최종 선택된 데이터 요소이도록 값을 갖는, 데이터 처리장치.
  15. 제 13 항 또는 제 14 항에 있어서,
    상기 세그먼트 정보가 복수의 세그먼트를 식별하는 경우, 상기 제어회로소자는, 상기 제1 세그먼트 이외의 또 다른 세그먼트에 대해서, 상기 결과 벡터 오퍼랜드의 대응한 또 다른 세그먼트내의 적어도 하나의 결과 데이터 요소를 생성하기 위해 상기 처리회로소자를 제어하고, 상기 대응한 또 다른 세그먼트내의 각 결과 데이터 요소가 상기 소스 벡터 오퍼랜드의 상기 또 다른 세그먼트의 하나 이상의 데이터 요소의 조합에 대응한 값을 갖는, 데이터 처리장치.
  16. 제 3 항에 종속하는 경우 제 13 항 내지 제 15 항 중 어느 한 항에 있어서,
    G=M-1이고, 상기 세그먼트 정보가 복수의 세그먼트를 식별하는 경우, 상기 제어회로소자는, 상기 벡터 스캔 연산의 상기 적어도 하나의 또 다른 단계를 생략하기 위해 상기 처리회로소자를 제어하는, 데이터 처리장치.
  17. 제 1 항 내지 제 16 항 중 어느 한 항에 있어서,
    상기 소스 벡터 오퍼랜드는, X≥M인 경우 X개의 데이터 요소들을 포함하고, 상기 결과 벡터 오퍼랜드는 Y≥M인 경우 Y개의 데이터 요소들을 포함하는, 데이터 처리장치.
  18. 제 17 항에 있어서,
    상기 제어회로소자는, 상기 소스 벡터 오퍼랜드의 L개의 데이터 요소에 관해 상기 벡터 스캔 연산을 행하여, L≤X 및 L≤Y일 경우 상기 결과 벡터 오퍼랜드의 L개의 데이터 요소를 생성하기 위해 상기 처리회로소자를 제어하고,
    L>M이면, 상기 결과 벡터 오퍼랜드의 상기 L개의 데이터 요소는 L-M개의 또 다른 데이터 요소R[M] 내지 R[L-1]을 포함하고, M≤i<L에 대해서는, 상기 결과 데이터 요소R[i]은, 상기 결과 데이터 요소R[M-1]과 상기 소스 벡터 오퍼랜드의 데이터 요소V[M] 내지 V[i]의 적어도 일부의 조합에 대응한 값을 갖는, 데이터 처리장치.
  19. 제 18 항에 있어서,
    L>M일 경우 N=M이고, L≤M일 경우 N=L인, 데이터 처리장치.
  20. 제 17 항 내지 제 19 항 중 어느 한 항에 있어서,
    상기 복수의 단계 각각에서, 상기 처리회로소자는 상기 제2 벡터의 최대 M개의 데이터 요소를 병렬로 생성하고,
    L>M일 경우, 상기 제어회로소자는, 상기 소스 벡터 오퍼랜드의 데이터 요소들의 복수의 그룹에 대해 분할 스캔 연산을 따로따로 행하기 위해 상기 처리회로소자를 제어하되, 각 그룹이 M개 이하의 데이터 요소를 포함하는, 데이터 처리장치.
  21. 제 3 항에 종속하는 경우 제 20 항에 있어서,
    L>M일 경우, 상기 제어회로소자는, 상기 제1 벡터의 데이터 요소와 상기 적어도 하나의 추가의 데이터 요소S를 조합하기 위한 상기 조합연산을 포함하는 상기 복수의 단계 중 적어도 두 개의 단계로 상기 복수의 그룹 중 첫 번째 그룹에 대한 상기 분할 스캔 연산을 행하기 위해 상기 처리회로소자를 제어하되, 상기 복수의 단계가 상기 적어도 하나의 조합단계와 상기 적어도 하나의 또 다른 단계를 포함하는, 데이터 처리장치.
  22. 제 21 항에 있어서,
    L>M일 경우, 상기 첫 번째 그룹 이외의 적어도 하나의 또 다른 그룹에 대해서, 상기 제어회로소자는,
    상기 데이터 요소들의 상기 또 다른 그룹의 각각의 데이터 요소를 조합하는 적어도 하나의 조합연산을 포함한 적어도 하나의 예비단계; 및
    상기 또 다른 그룹에 대한 상기 적어도 하나의 예비단계에서 생성된 데이터 요소와, 데이터 요소들의 상기 첫 번째 그룹에 대한 상기 분할 스캔 연산에서 생성된 데이터 요소를 조합하는, 적어도 하나의 조합연산을 포함한 적어도 하나의 추가의 단계로 이루어진, 상기 분할 스캔 연산을 행하기 위해서 상기 처리회로소자를 제어하는, 데이터 처리장치.
  23. 제 22 항에 있어서,
    상기 제어회로소자는, 데이터 요소들의 상기 첫 번째 그룹에 대해 상기 분할 스캔 연산이 교차 배치된 데이터 요소들의 상기 또 다른 그룹에 대한 상기 적어도 하나의 예비단계를 행하기 위해 상기 처리회로소자를 제어하는, 데이터 처리장치.
  24. 제 1 항 내지 제 23 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 추가의 데이터 요소S는,
    스칼라 오퍼랜드;
    벡터 오퍼랜드의 데이터 요소;
    벡터 오퍼랜드의 복수의 데이터 요소를 사용하여 구해진 값; 및
    또 다른 벡터 연산으로 구해진 캐리값 중 하나를 포함하는, 데이터 처리장치.
  25. 복수의 데이터 요소로 이루어진 벡터 오퍼랜드들을 기억하는 벡터 레지스터 기억 수단;
    상기 벡터 레지스터 기억 수단으로부터 벡터 오퍼랜드들을 처리하는 처리수단; 및
    소스 벡터 오퍼랜드V[0] 내지 V[M-1]의 M개의 데이터 요소와 적어도 하나의 추가의 데이터 요소S에 관해 벡터 스캔 연산을 행하여, 결과 벡터 오퍼랜드R[0] 내지 R[M-1]의 M개의 데이터 요소를 생성하기 위해 상기 처리수단을 제어하는 제어수단으로서, 여기서 N≤M이고 O≤i<N일 경우, 상기 결과 벡터 오퍼랜드의 데이터 요소R[i]가 상기 적어도 하나의 추가의 데이터 요소S와 상기 소스 벡터 오퍼랜드의 데이터 요소V[0] 내지 V[i]의 적어도 일부의 조합에 대응한 값을 갖는, 상기 제어수단을 구비하고,
    상기 제어수단은, 각 단계가 제1 벡터로부터 제2 벡터를 생성하는 복수의 단계에서 상기 벡터 스캔 연산을 행하기 위해 상기 처리수단을 제어하도록 구성되고, 제1 단계의 상기 제1 벡터는 상기 소스 벡터 오퍼랜드의 데이터 요소들을 포함하고, 그 밖의 단계의 상기 제1 벡터는 선행하는 단계의 상기 제2 벡터를 포함하고, 각 단계는 상기 제2 벡터의 데이터 요소를 생성하기 위해 상기 제1 벡터의 데이터 요소를, 상기 적어도 하나의 추가의 데이터 요소S 또는 상기 제1 벡터의 또 다른 데이터 요소와 조합하는 적어도 하나의 조합연산을 포함하고,
    상기 복수의 단계 중 적어도 하나의 단계는 병렬로 행해진 복수의 조합연산을 포함하고,
    상기 복수의 단계 중 적어도 두개의 단계는, 상기 제1 벡터의 데이터 요소를 상기 적어도 하나의 추가의 데이터 요소S와 조합하는 조합연산을 포함하는, 데이터 처리장치.
  26. 소스 벡터 오퍼랜드V[0] 내지 V[M-1]의 M개의 데이터 요소와 적어도 하나의 추가의 데이터 요소S에 관해 벡터 스캔 연산을 행하여, 결과 벡터 오퍼랜드R[0] 내지 R[M-1]의 M개의 데이터 요소를 생성하되, 여기서 N≤M이고 O≤i<N일 경우, 상기 결과 벡터 오퍼랜드의 데이터 요소R[i]가 상기 적어도 하나의 추가의 데이터 요소S와 상기 소스 벡터 오퍼랜드의 데이터 요소V[0] 내지 V[i]의 적어도 일부의 조합에 대응한 값을 갖는 데이터 처리방법으로서, 처리회로소자를 사용하여 행해진 상기 처리방법은,
    제1 벡터로부터 제2 벡터를 생성하는 복수의 단계를 행하는 것을 포함하고, 여기서, 제1 단계의 상기 제1 벡터가 상기 소스 벡터 오퍼랜드의 데이터 요소들을 포함하고, 그 밖의 단계의 상기 제1 벡터가 선행하는 단계의 상기 제2 벡터를 포함하고, 각 단계가 상기 제2 벡터의 데이터 요소를 생성하기 위해 상기 제1 벡터의 데이터 요소를, 상기 적어도 하나의 추가의 데이터 요소S 또는 상기 제1 벡터의 또 다른 데이터 요소와 조합하는 적어도 하나의 조합연산을 포함하고,
    상기 복수의 단계 중 적어도 하나의 단계는 병렬로 행해진 복수의 조합연산을 포함하고,
    상기 복수의 단계 중 적어도 두개의 단계는, 상기 제1 벡터의 데이터 요소를 상기 적어도 하나의 추가의 데이터 요소S와 조합하는 조합연산을 포함하는, 데이터 처리방법.
  27. 컴퓨터에 의해 실행될 때, 상기 컴퓨터가 청구항 1 내지 24 중 어느 한 항의 장치에 따라 가상 실행 환경을 제공하게 제어하는 컴퓨터 프로그램을 기억하는 컴퓨터 판독 가능한 기억매체.
  28. 명세서에서 첨부도면을 참조하여 실질적으로 설명한 것과 같은 데이터 처리장치.
  29. 명세서에서 첨부도면을 참조하여 실질적으로 설명한 것과 같은 데이터 처리방법.
  30. 명세서에서 첨부도면을 참조하여 실질적으로 설명한 것과 같은 컴퓨터 판독 가능한 기억매체.
KR1020150026200A 2014-03-06 2015-02-25 데이터 처리장치 및 벡터 스캔 연산의 수행방법 KR102365306B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1403955.6A GB2523805B (en) 2014-03-06 2014-03-06 Data processing apparatus and method for performing vector scan operation
GB1403955.6 2014-03-06

Publications (2)

Publication Number Publication Date
KR20150105209A true KR20150105209A (ko) 2015-09-16
KR102365306B1 KR102365306B1 (ko) 2022-02-21

Family

ID=50554610

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150026200A KR102365306B1 (ko) 2014-03-06 2015-02-25 데이터 처리장치 및 벡터 스캔 연산의 수행방법

Country Status (4)

Country Link
US (1) US10001994B2 (ko)
KR (1) KR102365306B1 (ko)
CN (1) CN104899180B (ko)
GB (1) GB2523805B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3083350B1 (fr) * 2018-06-29 2021-01-01 Vsora Acces memoire de processeurs
CN110807521B (zh) * 2019-10-29 2022-06-24 中昊芯英(杭州)科技有限公司 支持向量运算的处理装置、芯片、电子设备和方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539413B1 (en) * 2000-03-15 2003-03-25 Agere Systems Inc. Prefix tree adder with efficient sum generation
US20090077345A1 (en) * 2007-09-13 2009-03-19 Moyer William C Simd dot product operations with overlapped operands
US20100205585A1 (en) * 2009-02-10 2010-08-12 International Business Machines Corporation Fast vector masking algorithm for conditional data selection in simd architectures

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3018754B2 (ja) * 1992-07-10 2000-03-13 日本電気株式会社 桁上げ先見加算方法とその装置
US7933940B2 (en) * 2006-04-20 2011-04-26 International Business Machines Corporation Cyclic segmented prefix circuits for mesh networks
US7725518B1 (en) * 2007-08-08 2010-05-25 Nvidia Corporation Work-efficient parallel prefix sum algorithm for graphics processing units
US8356159B2 (en) * 2008-08-15 2013-01-15 Apple Inc. Break, pre-break, and remaining instructions for processing vectors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539413B1 (en) * 2000-03-15 2003-03-25 Agere Systems Inc. Prefix tree adder with efficient sum generation
US20090077345A1 (en) * 2007-09-13 2009-03-19 Moyer William C Simd dot product operations with overlapped operands
US20100205585A1 (en) * 2009-02-10 2010-08-12 International Business Machines Corporation Fast vector masking algorithm for conditional data selection in simd architectures

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SR Cho et al, 'Multi-Dimensional Record Scan with SIMD Vector Instructions', Journal of KIISE, 2010. *

Also Published As

Publication number Publication date
CN104899180A (zh) 2015-09-09
CN104899180B (zh) 2019-05-17
GB2523805A (en) 2015-09-09
GB201403955D0 (en) 2014-04-23
US20150254076A1 (en) 2015-09-10
KR102365306B1 (ko) 2022-02-21
GB2523805B (en) 2021-09-01
US10001994B2 (en) 2018-06-19

Similar Documents

Publication Publication Date Title
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
EP2569694B1 (en) Conditional compare instruction
US9355061B2 (en) Data processing apparatus and method for performing scan operations
US9965275B2 (en) Element size increasing instruction
EP3329363B1 (en) Vector arithmethic instruction
CN104899181A (zh) 用于处理向量操作数的数据处理装置和方法
KR102560424B1 (ko) 와이드 데이터 타입들의 비교
KR20050071614A (ko) 단일-명령 다중-데이터 마이크로프로세서들에서의 벡터순열을 위한 장치, 시스템 및 그 방법
KR102365306B1 (ko) 데이터 처리장치 및 벡터 스캔 연산의 수행방법
US8055883B2 (en) Pipe scheduling for pipelines based on destination register number
US9213547B2 (en) Processor and method for processing instructions using at least one processing pipeline
JP2020502669A (ja) ベクトル生成命令
JP4444305B2 (ja) 半導体装置
JP7377208B2 (ja) データ処理
US9250898B2 (en) VLIW processor, instruction structure, and instruction execution method
JPH09223009A (ja) データ処理装置と方法
JP2013140472A (ja) ベクトルプロセッサ
JP2011145886A (ja) 情報処理装置

Legal Events

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