KR102347374B1 - 벡터 감소 프로세서 - Google Patents

벡터 감소 프로세서 Download PDF

Info

Publication number
KR102347374B1
KR102347374B1 KR1020217015113A KR20217015113A KR102347374B1 KR 102347374 B1 KR102347374 B1 KR 102347374B1 KR 1020217015113 A KR1020217015113 A KR 1020217015113A KR 20217015113 A KR20217015113 A KR 20217015113A KR 102347374 B1 KR102347374 B1 KR 102347374B1
Authority
KR
South Korea
Prior art keywords
vector
input vector
result
cell
reduction
Prior art date
Application number
KR1020217015113A
Other languages
English (en)
Other versions
KR20210060665A (ko
Inventor
그레고리 마이클 도슨
앤드류 에버렛 펠프스
올리비에 티맘
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Priority to KR1020217043370A priority Critical patent/KR102471597B1/ko
Publication of KR20210060665A publication Critical patent/KR20210060665A/ko
Application granted granted Critical
Publication of KR102347374B1 publication Critical patent/KR102347374B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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
    • 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
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Peptides Or Proteins (AREA)
  • Image Processing (AREA)

Abstract

엘리먼트들의 입력 벡터를 감소시키도록 구성된 벡터 감소 회로는 복수의 셀들을 포함하고, 여기서, 입력 벡터의 지정된 제1 엘리먼트를 수신하는 지정된 제1 셀 이외의 복수의 셀들 각각은, 입력 벡터의 특정한 엘리먼트를 수신하고, 하나 이상의 셀들 중 다른 셀로부터 일시적인 감소 엘리먼트를 수신하고, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행하며, 그리고 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과를 새로운 일시적인 감소 엘리먼트로서 제공하도록 구성된다. 벡터 감소 회로는 또한, 입력 벡터의 감소로서의 출력을 위해, 입력 벡터의 마지막 엘리먼트를 사용하여 감소 연산을 수행한 결과에 대응하는 새로운 일시적인 감소 엘리먼트를 제공하도록 구성된 출력 회로를 포함한다.

Description

벡터 감소 프로세서{VECTOR REDUCTION PROCESSOR}
본 명세서는 하드웨어에서 벡터 감소들을 수행하는 것에 관한 것이다.
일반적으로, 벡터 감소는, 스칼라 출력을 생성하기 위해 입력 벡터의 엘리먼트들, 또는 입력 벡터보다 더 작은 차원수(dimensionality)를 갖는 출력 벡터의 엘리먼트들에 대해 수행되는 연산이다. 예컨대, 합산 벡터 감소 연산은 입력 벡터의 엘리먼트들의 합과 동일한 스칼라 출력을 생성할 수 있다. 몇몇 예들에서, 개개의 벡터 감소 연산들은 입력 벡터의 다수의 세그먼트들에 대해 수행될 수 있다. 세그먼트화된 벡터 감소 연산은 출력 벡터를 생성하며, 그 출력 벡터 내의 각각의 엘리먼트는 입력 벡터의 세그먼트의 감소이다. 예컨대, 세그먼트화된 합산 벡터 감소 연산은 출력 벡터를 생성할 수 있으며, 그 출력 벡터 내의 각각의 엘리먼트는 입력 벡터의 엘리먼트들의 세그먼트의 합이다.
일반적으로, 본 명세서는 벡터 감소들을 계산하는 특수-목적 하드웨어 회로를 설명한다.
일반적으로, 본 명세서에 설명된 청구 대상의 하나의 혁신적인 양상은 엘리먼트들의 입력 벡터를 감소시키도록 구성된 벡터 감소 회로로 구현될 수 있으며, 벡터 감소 회로는 복수의 셀들을 포함하고, 여기서, 입력 벡터의 지정된 제1 엘리먼트를 수신하는 지정된 제1 셀 이외의 복수의 셀들 각각은, 입력 벡터의 특정한 엘리먼트를 수신하고, 복수의 셀들 중 다른 셀로부터 일시적인(temporary) 감소 엘리먼트를 수신하고, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행하며, 그리고 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과를 새로운 일시적인 감소 엘리먼트로서 제공하도록 구성된다. 벡터 감소 회로는, 입력 벡터의 감소로서의 출력을 위해, 입력 벡터의 마지막 엘리먼트를 사용하여 감소 연산을 수행한 결과에 대응하는 새로운 일시적인 감소 엘리먼트를 제공하도록 구성된 출력 회로를 포함한다.
구현들은 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 몇몇 구현들에서, 감소 연산은 최대 값 감소 연산이며, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행하는 것은, 특정한 엘리먼트와 일시적인 감소 엘리먼트를 비교하는 것, 및 비교에 적어도 기반하여, 그리고 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과로서, 특정한 엘리먼트 및 일시적인 감소 엘리먼트 중 최대치를 결정하는 것을 포함하고; 감소 연산은 최대 값 감소 연산이며, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행하는 것은, 특정한 엘리먼트와 일시적인 감소 엘리먼트를 비교하는 것, 및 비교에 적어도 기반하여, 그리고 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과로서, 특정한 엘리먼트 및 일시적인 감소 엘리먼트 중 최대치를 결정하는 것을 포함한다.
구현들은 또한 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 몇몇 구현들에서, 감소 연산은 합산 감소 연산이며, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행하는 것은, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과로서, 특정한 엘리먼트 및 일시적인 감소 엘리먼트의 합을 결정하는 것을 포함하고; 감소 연산은 곱(product) 감소 연산이며, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행하는 것은, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과로서, 특정한 엘리먼트와 일시적인 감소 엘리먼트의 곱을 결정하는 것을 포함한다.
구현들은 또한 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 몇몇 구현들에서, 감소 연산은 최대 인덱스 연산이며, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행하는 것은, 일시적인 감소 엘리먼트에 대응하는 인덱스를 표시하는 데이터를 수신하는 것, 특정한 엘리먼트와 일시적인 감소 엘리먼트를 비교하는 것, 비교에 적어도 기반하여, 특정한 엘리먼트 및 일시적인 감소 엘리먼트 중 최대치를 결정하는 것, 및 결정에 적어도 기반하여, 그리고 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과로서, 특정한 엘리먼트에 대응하는 인덱스 또는 일시적인 감소 엘리먼트에 대응하는 인덱스 중 하나를 식별하는 것을 포함한다.
구현들은 또한 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 몇몇 구현들에서, 감소 연산은 최소 인덱스 연산이며, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행하는 것은, 일시적인 감소 엘리먼트에 대응하는 인덱스를 표시하는 데이터를 수신하는 것, 특정한 엘리먼트와 일시적인 감소 엘리먼트를 비교하는 것, 비교에 적어도 기반하여, 특정한 엘리먼트 및 일시적인 감소 엘리먼트 중 최소치를 결정하는 것, 및 결정에 적어도 기반하여, 그리고 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과로서, 특정한 엘리먼트에 대응하는 인덱스 또는 일시적인 감소 엘리먼트에 대응하는 인덱스 중 하나를 식별하는 것을 포함한다.
구현들은 또한 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 몇몇 구현들에서, 입력 벡터의 특정한 엘리먼트는 엘리먼트들의 스태거링된(staggered) 입력으로 수신되고; 입력 벡터는 엘리먼트들의 복수의 세그먼트들을 포함하는 것으로 식별되고; 입력 벡터의 특정한 엘리먼트는 입력 벡터의 특정한 세그먼트의 지정된 마지막 엘리먼트이고, 입력 벡터의 지정된 제1 엘리먼트를 수신하는 지정된 제1 셀 이외의 복수의 셀들 각각은, 출력 회로에 그리고 입력 벡터의 특정한 세그먼트의 감소로서, 입력 벡터의 특정한 세그먼트의 지정된 마지막 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과를 제공하도록 구성되고; 입력 벡터의 특정한 세그먼트의 지정된 마지막 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과를 새로운 일시적인 감소 엘리먼트로서 제공하는 것은, 복수의 셀들 중 다른 셀에 그리고 새로운 일시적인 감소 엘리먼트로서 플레이스홀더(placeholder) 신호를 제공하는 것을 포함하고; 출력 회로는 입력 벡터의 감소로서의 출력을 위해 복수의 엘리먼트들을 제공하도록 구성되고, 여기서, 복수의 엘리먼트들 각각은, 입력 벡터의 세그먼트의 지정된 마지막 엘리먼트를 사용하여 감소 연산을 수행한 결과에 대응하는 새로운 일시적인 감소 엘리먼트이며; 출력 회로는, 입력 벡터의 감소로서의 출력을 위해, 복수의 엘리먼트들을 포함하는 출력 벡터를 제공하도록 구성된다.
구현들은 또한 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 몇몇 구현들에서, 벡터 감소 회로는 엘리먼트들의 제어 벡터를 수신하도록 구성된 제어 레지스터를 포함하고, 여기서 엘리먼트들의 제어 벡터는 입력 벡터의 엘리먼트들의 복수의 세그먼트들을 특정하고; 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과를 새로운 일시적인 감소 엘리먼트로서 제공하는 것은, 특정한 엘리먼트에 대응하는 제어 벡터의 특정한 엘리먼트를 수신하는 것, 제어 벡터의 특정한 엘리먼트에 적어도 기반하여, 특정한 엘리먼트가 입력 벡터의 특정한 세그먼트의 마지막 엘리먼트로서 지정된다고 결정하는 것, 및 출력 회로에 그리고 결정에 적어도 기반하여, 입력 벡터의 특정한 세그먼트의 마지막 엘리먼트로서 지정된 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과를 입력 벡터의 특정한 세그먼트의 감소로서 제공하는 것을 포함한다.
구현들은 또한 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 몇몇 구현들에서, 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과를 새로운 일시적인 감소 엘리먼트로서 제공하는 것은, 특정한 엘리먼트에 대응하는 제어 벡터의 특정한 엘리먼트를 수신하는 것, 제어 벡터의 특정한 엘리먼트에 적어도 기반하여, 특정한 엘리먼트가 입력 벡터의 특정한 세그먼트의 마지막 엘리먼트로서 지정된다고 결정하는 것, 및 복수의 셀들 중 다른 셀에 그리고 결정에 적어도 기반하여, 플레이스홀더 신호를 제공하는 것을 포함하고; 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과를 새로운 일시적인 감소 엘리먼트로서 제공하는 것은, 특정한 엘리먼트에 대응하는 제어 벡터의 특정한 엘리먼트를 수신하는 것, 제어 벡터의 특정한 엘리먼트에 적어도 기반하여, 특정한 엘리먼트가 입력 벡터의 특정한 세그먼트의 마지막 엘리먼트로서 지정되지 않는다고 결정하는 것, 및 결정에 적어도 기반하여, 복수의 셀들 중 다른 셀에 그리고 새로운 일시적인 감소 엘리먼트로서, 입력 벡터의 특정한 세그먼트의 마지막 엘리먼트로서 지정되지 않은 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한 결과를 제공하는 것을 포함한다.
구현들은 또한 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 몇몇 구현들에서, 출력 회로는 벡터 또는 행렬 치환(permutation)들을 계산하도록 구성된 치환 회로에 입력 벡터의 감소를 제공하고; 복수의 셀들 각각은 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 수행할 감소 연산의 타입을 특정하는 제어 신호를 수신하도록 구성되며; 일시적인 감소 엘리먼트는, 입력 벡터의 특정한 엘리먼트에 선행하는 입력 벡터의 엘리먼트들에 대해, 특정된 감소 연산을 수행한 결과에 대응한다.
본 출원에 설명된 청구 대상의 특정한 실시예들은 다음의 장점들 중 하나 이상을 실현하기 위해 구현될 수 있다. 벡터 감소들은 특수-목적 하드웨어 회로에 의해 하드웨어에서 수행될 수 있다. 특수-목적 하드웨어 회로는 범용 프로세서(예컨대, GPU 또는 CPU)보다 더 적은 사이클들에서 벡터 감소들을 수행할 수 있다. 부가적으로, 특수-목적 하드웨어 회로를 사용하여 하드웨어에서 벡터 감소들을 계산함으로써, 벡터 감소들은, 데이터를 다시 호스트 컴퓨터에 전달하지 않으면서, 즉 계산의 적어도 일부를 오프-칩(off-chip)에서 또는 소프트웨어에서 수행하지 않으면서 수행될 수 있다. 그 결과, 계산이 특수-목적 하드웨어 회로에서보다 수행할 더 많은 수의 범용 프로세서(예컨대, GPU 또는 CPU) 사이클들을 요구하는 값비싼 계산일 수 있는 경우, 벡터 감소들을 오프-칩에서 또는 소프트웨어에서 계산하는 것으로부터 초래되는 프로세싱 지연들이 회피된다.
벡터 감소들을 계산하도록 특수하게 설계된 하드웨어 회로를 사용하는 것은 또한, 일반적인 행렬 또는 벡터 프로세싱 하드웨어 회로, 예컨대, 행렬 콘볼루션(convolution)들 또는 다른 행렬-벡터 계산들을 수행하도록 또한 구성된 행렬 또는 벡터 프로세싱 하드웨어 회로에서 또는 다른 특수-목적 하드웨어 회로, 예컨대 벡터 감소들 및 행렬 전치 계산들 둘 모두를 수행하도록 구성된 특수-목적 하드웨어 회로에서 벡터 감소들을 수행하는 시스템과 비교하여 더 효율적인 프로세싱을 허용한다. 전용 하드웨어 회로 상에서 벡터 감소 연산들을 구현하는 것은, 다른 행렬-벡터 계산 능력들 또는 효율성들에 대한 근심 없이 벡터 감소들을 효율적으로 핸들링하는 설계를 허락하고, 다른 행렬 또는 벡터 계산들을 수행하기 위한 다른 행렬 또는 벡터 프로세싱 회로들을 예비하여, 그에 의해, 일반적으로 하드웨어에서 행렬-벡터 계산들의 효율을 증가시킨다.
본 명세서의 청구 대상의 하나 이상의 실시예들의 세부사항들은 아래의 설명 및 첨부한 도면들에서 기재된다. 청구 대상의 다른 특징들, 양상들, 및 장점들은 설명, 도면들, 및 청구항들로부터 명백해질 것이다.
도 1은 예시적인 행렬-벡터 프로세싱 시스템을 도시한다.
도 2는 벡터 감소 유닛을 포함하는 예시적인 행렬-벡터 프로세싱 시스템을 도시한다.
도 3은 행렬-벡터 프로세싱 시스템 내의 벡터 감소 유닛의 예시적인 아키텍처를 도시한다.
도 4는 행렬-벡터 프로세싱 시스템 내의 벡터 감소 유닛의 예시적인 아키텍처를 도시한다.
도 5는 행렬-벡터 프로세싱 시스템 내의 벡터 감소 유닛의 셀의 예시적인 아키텍처를 도시한다.
도 6은 행렬-벡터 프로세싱 시스템에서 벡터 감소들을 수행하기 위한 예시적인 방법의 흐름도이다.
도 7a 및 도 7b는 행렬-벡터 프로세싱 시스템 내의 벡터 감소 유닛을 사용하는 예시적인 벡터 감소를 도시한다.
다양한 도면들 내의 유사한 참조 번호들 및 지정들은 유사한 엘리먼트들을 표시한다.
벡터 감소 연산은, 입력 벡터보다 더 작은, 즉 더 낮은 차원수를 갖는 엘리먼트들의 벡터 또는 스칼라인 출력을 생성하도록 엘리먼트들의 입력 벡터에 대해 수행되는 연산이다. 예컨대, 합산 벡터 감소 연산은 입력 벡터의 엘리먼트들의 합인 스칼라 출력을 생성한다. 다른 예로서, 최대 값 또는 최소 값 벡터 감소 연산은, 각각, 입력 벡터의 엘리먼트들 중 최대치 또는 입력 벡터의 엘리먼트들 중 최소치인 스칼라 출력을 생성한다. 유사하게, 최대 인덱스 또는 최소 인덱스 벡터 감소 연산은, 각각, 입력 벡터의 최대 값 또는 최소 값의 입력 벡터에서의 인덱스를 표시하는 출력을 생성한다. 다른 벡터 감소 연산들, 이를테면 입력 벡터의 엘리먼트들의 곱에 대응하는 스칼라 출력을 생성하는 곱 벡터 감소 연산, 입력 벡터의 엘리먼트들의 산술 평균에 대응하는 스칼라 출력을 생성하는 평균 벡터 감소 연산 등이 가능하다.
몇몇 구현들에서, 입력 벡터는 세그먼트화될 수 있으며, 개개의 벡터 감소 연산들은 입력 벡터의 세그먼트들 중 하나 이상에 대해 수행될 수 있다. 입력 벡터의 다수의 세그먼트들 각각에 대해 개개의 벡터 감소 연산을 수행하는 것은 출력 벡터를 생성한다. 출력 벡터의 각각의 엘리먼트는 입력 벡터의 대응하는 세그먼트에 대해 벡터 감소 연산을 수행한 결과에 대응한다. 예컨대, 3개의 세그먼트들로 분할된 입력 벡터에 대해 수행된 벡터 감소 연산의 출력은 3개의 엘리먼트들의 출력 벡터일 것이며, 여기서, 출력 벡터의 각각의 엘리먼트는 입력 벡터의 상이한 세그먼트에 벡터 감소 연산을 적용한 결과이다.
벡터 감소들은, 다른 실제-세계 애플리케이션들의 경우 데이터 분석들 및 선형 대수 계산들에서 빈번하게 계산된다. 예컨대, 뉴럴 네트워크를, 예컨대 머신 러닝 프로세스의 일부로서 트레이닝할 경우 벡터 감소들이 계산될 수 있다. 이들 예시들에서, 뉴럴 네트워크를 트레이닝할 경우, 벡터 감소들은 그라디언트(gradient)들을 역전파하는 데 사용될 수 있다. 벡터 감소들은 또한 뉴럴 네트워크의 계층의 출력들에 대해 수행될 수 있다. 벡터 감소의 결과는 뉴럴 네트워크의 다른 계층에 대한 입력으로서 제공될 수 있거나, 또는 뉴럴 네트워크로부터의 출력으로서 제공될 수 있다. 벡터 감소들의 다른 애플리케이션들은, 이를테면 디지털 오디오 또는 비디오 디코딩에서의 멀티미디어 프로세싱을 포함한다. 이를테면, 아날로그 및 디지털 송신, 레이더, 및 소나(sonar)의 분야들에서의 신호 프로세싱은 또한, 예컨대 수신된 또는 송신된 신호에서 최대치 또는 최소치를 식별하기 위해 벡터 감소 기법들을 빈번하게 이용한다.
몇몇 구현들에서, 입력 행렬들은 벡터들로 분해될 수 있으며, 벡터 감소들이 입력 행렬의 벡터들에 개별적으로 적용될 수 있다. 예컨대, 행렬로서 표현된 이미지(예컨대, 행렬의 엘리먼트들은 이미지의 픽셀들에 대응함)가 벡터들로 분해될 수 있다. 벡터 감소 연산들, 이를테면 평균 벡터 감소 연산은, 예컨대 이미지 평활화(smoothing)를 수행하거나 또는 이미지의 픽셀 사이즈를 감소시키기 위해 입력 행렬의 벡터들에 적용될 수 있다.
본 명세서는 입력 벡터들에 대해 벡터 감소 연산들을 수행하는 특수-목적 하드웨어 회로를 설명한다. 특수-목적 하드웨어 회로는 입력 벡터들의 벡터 감소들에 대응하는 스칼라 또는 벡터 출력들을 생성할 수 있다.
도 1은 예시적인 행렬-벡터 프로세싱 시스템(100)을 도시한다. 행렬-벡터 프로세싱 시스템(100)은 하나 이상의 위치들에서 하나 이상의 컴퓨터들로서 구현되는 시스템의 일 예이며, 여기서, 아래에서 설명되는 시스템들, 컴포넌트들, 및 기법들이 구현될 수 있다.
행렬-벡터 프로세싱 시스템(100)은 특수-목적 하드웨어 회로(110)를 사용하여 벡터 또는 행렬 계산들을 수행하는 시스템이다. 특수-목적 하드웨어 회로(110)는, 하드웨어에서 벡터 감소들을 계산하도록 구성된 벡터 감소 유닛(120)을 포함하는, 벡터 또는 행렬 계산들을 수행하기 위한 집적 회로이다. 예시적인 특수-목적 하드웨어 회로(110)는 도 2를 참조하여 더 상세히 설명된다.
행렬-벡터 프로세싱 시스템(100)은, 특수-목적 하드웨어 회로(110) 상에서 벡터 또는 행렬 계산들을 수행하기 위한 요청들을 수신하고, 벡터 또는 행렬 계산들을 수행하도록 특수-목적 하드웨어 회로(110)를 제어하며, 특수-목적 하드웨어 회로(110)에 의해 생성된 벡터 또는 행렬 계산들의 결과들을 출력한다. 예컨대, 행렬-벡터 프로세싱 시스템(100)은, 입력 벡터에 대한 벡터 감소를 수행하기 위한 요청을 수신할 수 있으며, 응답으로 벡터 감소를 계산하여 입력 행렬에 대한 벡터 감소를 계산한 결과를 출력하도록 특수 목적 하드웨어 회로(110)를 제어할 수 있다. 특수-목적 하드웨어 회로(110)는, 벡터 감소에 부가하여 부가적인 계산들을 수행하는 것이 가능할 수 있다. 예컨대, 특수-목적 하드웨어 회로(110)는 또한, 예컨대 뉴럴 네트워크의 계층들을 프로세싱하기 위해, 벡터 또는 행렬 콘볼루션들, 벡터 또는 행렬 산술, 벡터 또는 행렬 전치들, 또는 다른 벡터 또는 행렬 계산들을 계산하기 위한 회로들 또는 다른 하드웨어 컴포넌트들을 포함할 수 있다. 이로써, 특수-목적 하드웨어 회로(110)는, 특수-목적 하드웨어 회로(110)의 다른 컴포넌트들을 사용하여 더 큰 계산을 수행하는 것의 일부로서 벡터 감소를 계산할 수 있다.
특수-목적 하드웨어 회로(110) 상에서 행렬 또는 벡터 계산들을 구현하기 위해, 행렬-벡터 프로세싱 시스템(100)은 행렬-벡터 프로세싱 엔진(150)을 포함한다. 행렬-벡터 프로세싱 엔진(150)은 하나 이상의 물리적 위치들에 있는 하나 이상의 컴퓨터들 상의 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다.
행렬-벡터 프로세싱 엔진(150)은, 요청에 대한 응답으로 벡터 또는 행렬 계산들을 수행하기 위해, 명령들을 생성하거나, 제어 신호들을 제공하거나, 또는 특수-목적 하드웨어 회로(110)를 제어하도록 데이터를 안내할 수 있다. 예컨대, 행렬-벡터 프로세싱 시스템(100)은 하나 이상의 입력 벡터들 또는 행렬들에 함수를 적용하기 위한 요청을 수신할 수 있고, 행렬-벡터 프로세싱 엔진(150)은 특수-목적 하드웨어 회로(110) 상에서 입력 벡터들 또는 행렬들에 함수를 적용하는 데 필요한 계산들을 수행하기 위한 특정 명령들 또는 제어 신호들을 결정할 수 있다. 행렬-벡터 프로세싱 엔진(150)은 또한, 특수-목적 하드웨어 회로(110)가 필요한 계산들을 수행하기 위해 사용할 수 있는 데이터(예컨대, 입력 벡터들 또는 행렬들에 대응함)를 안내할 수 있다.
일단 행렬-벡터 프로세싱 엔진(150)이 벡터 또는 행렬 요청을 구현하는 데 필요한 계산들을 결정하면, 행렬-벡터 프로세싱 엔진(150)은 필요한 계산들을 수행하도록 특수-목적 하드웨어 회로(110)를 제어한다. 예컨대, 행렬-벡터 프로세싱 엔진(150)은 벡터 또는 행렬 계산들을 수행하기 위한 데이터, 예컨대 입력 벡터들 또는 행렬들을 특수-목적 하드웨어 회로(110)에 안내할 수 있다. 행렬-벡터 프로세싱 엔진(150)은 또한, 행렬-벡터 프로세싱 엔진(150)으로부터 특수-목적 하드웨어 회로(110)에 의해 수신된 데이터에 대해 필요한 계산들을 수행하도록 특수-목적 하드웨어 회로(110)를 제어하기 위한 명령들 또는 제어 신호들을 특수-목적 하드웨어 회로(110)에 송신할 수 있다.
예컨대, 행렬-벡터 프로세싱 시스템(100)은 벡터 또는 행렬 계산을 수행하기 위한 요청을 수신할 수 있다. 요청된 계산은 비교적 간단할 수 있으며, 예컨대, 간단한 선형 대수 계산 또는 보다 복잡한 함수, 예컨대 뉴럴 네트워크를 트레이닝하기 위해 그라디언트들을 역전파하기 위한 함수를 수행하기 위한 요청일 수 있다. 요청된 계산은 하나 이상의 연산들, 이를테면 하나 이상의 벡터 감소들을 요구할 수 있다. 요청은 또한, 계산들을 수행할 하나 이상의 벡터들 또는 행렬들, 즉 함수가 적용되는 하나 이상의 입력 벡터들 또는 행렬들을 식별 또는 포함할 수 있다. 행렬-벡터 프로세싱 엔진(150)은, 요청을 수신할 수 있으며, 입력 벡터들 또는 행렬들에 대한 계산들을 수행하기 위한 제어 신호들 또는 명령들을 생성할 수 있다. 더욱이, 행렬-벡터 프로세싱 엔진(150)은 입력 벡터들 또는 행렬들을 특수-목적 하드웨어 회로(110)로 안내할 수 있다.
예컨대, 벡터 감소를, 예컨대 더 큰 계산의 일부로서 계산하기 위해, 행렬-벡터 프로세싱 엔진(150)은 수신된 입력 벡터, 또는 입력 행렬을 그의 벡터 컴포넌트들로 분해함으로써 획득된 다수의 벡터들을 특수-목적 하드웨어 회로(110)에 제공할 수 있다. 행렬-벡터 프로세싱 엔진(150)은 또한, 벡터 감소 유닛(120) 상에서 벡터 감소를 수행하기 위해 벡터 감소 또는 파라미터들을 개시하기 위한 제어 신호들을 특수-목적 하드웨어 회로(110)에 제공할 수 있다. 벡터 감소 유닛(120)은, 특수-목적 하드웨어 회로(110)에 제공되는 입력 벡터 또는 벡터들 및 제어 신호들을 수신할 수 있다. 벡터 감소 유닛(120)은 제어 신호들을 수신하는 것에 대한 응답으로 벡터 감소를 수행할 수 있으며, 벡터 감소를 수행한 결과를 출력할 수 있다. 벡터 감소 유닛(120)에 의해 생성된 결과는, 요청된 계산을 수행하도록 특수-목적 하드웨어 회로(110)에 의해 수행된 다른 연산들에서 사용될 수 있다. 특수-목적 하드웨어 회로(110)는, 행렬-벡터 프로세싱 시스템(100)이 요청에 대한 응답으로 리턴시킬 수 있는 요청된 계산의 결과를 제공할 수 있다.
도 2는 벡터 감소들을 수행할 수 있는 예시적인 특수-목적 하드웨어 회로(200)를 도시한다. 몇몇 구현들에서, 회로(200)는 다른 벡터 또는 행렬 계산들을 수행하기 위한 부가적인 컴포넌트들(도시되지 않음)을 포함할 수 있다. 다른 벡터 또는 행렬을 수행하기 위한 부가적인 컴포넌트들은 또한 도 2에 도시된 컴포넌트들 중 하나 이상을 이용할 수 있다.
회로(200)는 호스트 인터페이스(202)를 포함한다. 호스트 인터페이스(202)는, 벡터 감소들을 포함하는 벡터 또는 행렬 계산들을 수행하기 위한 제어 신호들, 명령들, 또는 독립변수(argument)들을 수신할 수 있다. 독립변수들은, 예컨대 벡터 감소들이 수행될 하나 이상의 벡터들을 포함할 수 있다. 호스트 인터페이스(202)에 의해 수신된 명령들 또는 제어 신호들은, 회로(200)가 벡터 감소들을 수행할 수 있거나, 요청된 벡터 감소들에 관련된 파라미터들을 포함할 수 있거나, 또는 다른 정보, 예컨대 벡터 감소들의 출력을 저장하기 위한 메모리 위치를 포함할 수 있도록, 수신된 독립변수들을 저장할 곳을 표시하는 명령들을 포함할 수 있다. 호스트 인터페이스(202)에 의해 수신된 제어 신호는 또한, 벡터 감소 계산들을 개시하도록 회로(200)를 제어할 수 있다.
호스트 인터페이스(202)는 명령들을 시퀀서(206)에 제공할 수 있으며, 시퀀서(206)는, 벡터 감소를 수행하도록 회로(200)를 제어하는 저레벨 제어 신호들로 명령들을 변환한다. 예컨대, 시퀀서(206)에 의해 생성된 제어 신호들은 회로(200)에서의 데이터흐름, 예컨대, 입력 벡터가 저장되어야 하는 곳 또는 그 데이터가 회로(200)를 통해 달리 어떻게 안내되어야 하는지를 조절할 수 있다. 시퀀서(206)는 회로(200) 상에서 벡터 감소 계산을 개시하기 위한 명령을 수신할 수 있고, 벡터 감소 계산을 개시하도록 벡터 감소 유닛(212)을 제어하기 위한 제어 신호를 생성할 수 있다.
시퀀서(206)는 제어 신호들을 메모리(208) 및 벡터 감소 유닛(212)에 전송할 수 있다. 몇몇 구현들에서, 시퀀서(206)는 또한, 다이렉트 메모리 액세스 엔진(204)에 제어 신호들을 전송한다. 몇몇 구현들에서, 시퀀서(206)는 제어 신호들을 생성하는 프로세서이다. 시퀀서(206)는, 적절한 시간들에서 회로(200)의 적절한 컴포넌트들에 제어 신호들을 전송하도록 제어 신호들을 조정할 수 있다. 몇몇 예시들에서, 시퀀서(206)는 회로(200)로부터, 예컨대 도 1의 벡터-행렬-벡터 프로세싱 엔진(150)으로부터 외부적으로 전달되는 제어 신호들을 호스트 인터페이스(202)로부터 수신할 수 있어서, 시퀀서(206)는 제어 신호들을 생성하도록 요구되지 않는다. 그러한 예시들에서, 시퀀서(206)는 적절한 시간들에서 회로(200)의 컴포넌트들에 수신된 제어 신호들을 전송할 수 있다. 또한, 회로(200)가 제어 신호들을 제공받은 경우, 시퀀서(206)는 회로(200)의 선택적인 컴포넌트일 수 있어서, 즉, 회로(200) 외부의 컴포넌트, 예컨대 행렬-벡터 프로세싱 엔진(150)은 벡터 감소들을 수행하기 위한 동작들을 포함하는 동작들을 수행하도록 회로(200)를 제어하기 위한 제어 신호들을 적절한 시간들에서 제공할 수 있다.
호스트 인터페이스(202)는 독립변수, 예컨대 입력 벡터를 다이렉트 메모리 액세스 엔진(204)에 전송할 수 있다. 다이렉트 메모리 액세스 엔진(204)은 메모리(208)에 독립변수를 저장할 수 있다.
메모리(208)는 동적 메모리, 예컨대 동적 랜덤-액세스 메모리(DRAM)일 수 있거나, 또는 정적 메모리, 예컨대 정적 랜덤-액세스 메모리(SRAM)일 수 있다. 몇몇 구현들에서, 메모리(208)는 메모리 버퍼로서 사용될 수 있다. 메모리(208)는 회로(200) 상에 또는 회로(200) 밖에 로케이팅될 수 있다. 메모리(208)는 독립변수, 예컨대 벡터, 회로(200)에 대한 입력, 또는 벡터 감소를 수행하기 위한 파라미터들을 저장할 수 있다. 메모리(208)는 또한, 벡터 감소 유닛(212)의 출력들, 즉 입력 벡터에 대해 벡터 감소를 수행한 결과를 저장할 수 있다. 몇몇 구현들에서, 다이렉트 메모리 액세스 엔진(204)은 메모리(208)로부터 판독할 수 있다. 예컨대, 다이렉트 메모리 액세스 엔진(204)은 입력 벡터에 대해 벡터 감소를 수행한 결과를 회로(200)로부터 리턴시키기 위해 메모리(208)로부터 판독할 수 있다.
벡터 감소 유닛(212)은 메모리(208)에서 독립변수에 액세스할 수 있다. 예컨대, 다이렉트 메모리 액세스 엔진(204)이 메모리(208)에 입력 벡터를 저장한 이후, 입력 벡터는 벡터 감소 유닛(212)에 제공되거나 또는 벡터 감소 유닛(212)에 액세스가능하게 되어, 벡터 감소 유닛(212)은 입력 벡터에 대해 벡터 감소를 위한 동작들을 수행할 수 있다.
벡터 감소 유닛(212)은 벡터 감소들을 계산하기 위한 회로이다. 몇몇 구현들에서, 벡터 감소 유닛(212)은, 독립변수, 예컨대 입력 벡터, 및 벡터 감소의 타입, 예컨대 벡터 감소가 합산 벡터 감소인지, 최대 값 또는 최소 값 벡터 감소인지를 특정한 정보 등을 수신하는 것에 기반하여 벡터 감소를 계산하도록 설계된다. 벡터 감소의 타입을 특정하는 정보는 다른 정보, 예컨대 세그먼트화된 벡터 감소를 수행하기 위한 정보를 포함할 수 있다. 몇몇 구현들에서, 벡터 감소 유닛(212)은 미리 결정된 벡터 감소 연산을 수행하여, 독립변수, 즉 입력 벡터만이 벡터 감소 유닛(212)이 벡터 감소를 수행하는 데 필요하도록 구성될 수 있다. 예컨대, 벡터 감소 유닛(212)은, 합산 벡터 감소 연산들만을 수행하거나 또는 입력 벡터의 미리 결정된 엘리먼트들에서 벡터 감소들을 세그먼트화시키도록 구성될 수 있다. 이러한 정보를 수신한 이후, 벡터 감소 유닛(212)은 부가적인 제어 신호들 또는 입력들을 수신하지 않으면서 벡터 감소를 수행할 수 있어서, 일단 벡터 감소 유닛(212)이 필요한 입력들, 즉 입력 벡터 및 벡터 감소 파라미터들을 수신하면, 벡터 감소가 벡터 감소 유닛(212)에서 달리 자동화된다. 그러한 구현에서, 일단 벡터 감소 연산이 개시되었다면, 벡터 감소 유닛(212)은 수신된 정보에 기반하여 그리고 오프-칩으로부터 부가적인 명령들을 요구하지 않으면서 전체 벡터 감소를 수행할 수 있다. 몇몇 구현들에서, 벡터 감소 연산들은, 벡터 감소 유닛(212)이 필요한 정보를 수신하는 것에 대한 응답으로 트리거링될 수 있어서, 즉 개시 신호 또는 다른 트리거가 요구되지 않는다. 다른 구현들에서, 개시 신호 또는 다른 신호는 벡터 감소 연산들을 수행하도록 벡터 감소 유닛(212)을 트리거링할 수 있다.
일반적으로, 벡터 감소를 계산하기 위해, 벡터 감소 유닛(212)은 수행할 벡터 감소 연산의 타입, 예컨대 합산 벡터 감소, 최대 또는 최소 값 벡터 감소, 또는 최대 또는 최소 인덱스 벡터 감소를 표시하는 제어 신호를 수신한다. 예컨대, 벡터 감소 유닛(212)은 시퀀서(206)로부터 제어 신호를 수신할 수 있다. 입력 벡터는, 예컨대 메모리(208)로부터 데이터의 스태거링된 스트림으로서 수신된다. 벡터 감소 유닛(212)은 입력 벡터의 엘리먼트들에 대해, 제어 신호에 의해 표시된 벡터 감소 연산을 수행한다. 예컨대, 벡터 감소 유닛(212)은, 입력 벡터의 각각의 엘리먼트가 수신될 때 벡터 감소 연산을 수행할 수 있다. 대안적으로, 벡터 감소 엔진(212)은 입력 벡터의 모든 엘리먼트들 또는 입력 벡터의 엘리먼트들 중 일부를 수신할 수 있으며, 그들이 수신된 이후, 입력 벡터의 엘리먼트들 또는 입력 벡터의 일부에 대해 벡터 감소 연산을 수행할 수 있다. 몇몇 예들에서, 벡터 감소 연산의 결과는, 예컨대, 합산 벡터 감소의 경우에서 벡터 감소 연산이 적용되는 입력 벡터의 엘리먼트들의 순서에 의존하지 않는다. 그러한 예시들에서, 벡터 감소 유닛(212)은, 엘리먼트들이 입력 벡터에서 배열되는 것과 상이한 순서로 또는 엘리먼트들이 벡터 감소 유닛(212)에 의해 수신되는 것과 상이한 순서로 입력 벡터의 엘리먼트들에 대해 벡터 감소 연산을 수행하기로 결정할 수 있다. 벡터 감소 연산이 입력 벡터의 엘리먼트들 모두에 적용된 이후, 벡터 감소 유닛(212)은 벡터 감소의 결과를, 예컨대 특수-목적 하드웨어 회로(200)의 메모리(208)에 또는 다른 컴포넌트에 출력할 수 있다.
벡터 감소 유닛(212)에 대한 입력이 스태거링된 입력일 수 있으므로, 몇몇 예시들에서, 벡터 감소 유닛(212)은 동시에, 예컨대 파이프라인 방식으로 다수의 입력 벡터들에 대해 벡터 감소들을 수행하는 것이 가능할 수 있다. 즉, 제1 입력 벡터가 벡터 감소 유닛(212)에서 벡터 감소 연산을 경험하고 있을 수 있는 동안, 벡터 감소 유닛(212)은 제2 입력 벡터에 대해 벡터 감소 연산을 수행하기를 시작할 수 있다. 부가적으로, 몇몇 예들에서, 행렬은 독립변수로서 회로(200)에 제공될 수 있다. 입력 행렬은, 예컨대 입력 행렬을 함께 형성하는 행(row) 또는 열(column) 벡터들을 획득함으로써 자신의 벡터들로 분해될 수 있다. 벡터 감소 유닛(212)은, 벡터 감소 결과들의 벡터를 생성하기 위해 입력 행렬을 형성하는 벡터들에 대해 벡터 감소 연산들을 수행할 수 있다. 결과들의 벡터는 벡터 감소 유닛(212)의 출력으로서, 예컨대 회로(200)의 다른 컴포넌트에 제공될 수 있다.
도 3은 벡터 감소 유닛(300)의 예시적인 아키텍처를 도시한다. 벡터 감소 유닛(300)은, 예컨대 특수-목적 하드웨어 회로(200)의 벡터 감소 유닛(212)으로서 행렬-벡터 프로세싱 시스템의 특수-목적 하드웨어 회로에 포함될 수 있다.
벡터 감소 유닛(300)의 값 로더(value loader)들(310)은 입력 벡터 또는 벡터들에 대응하는 데이터를 수신한다. 값 로더들(310) 각각은, 예컨대 특수-목적 하드웨어 회로(200)의 메모리(208)로부터 수신된 데이터의 레인(lane)에 대응한다. 실제로, 데이터의 각각의 레인 및 그에 따른 각각의 값 로더(310)는 입력 벡터 또는 행렬의 상이한 열 또는 행에 대응한다. 따라서, 값 로더들 [0] 내지 [3]만을 포함하는 것으로 도 3에 도시되어, 그에 의해 4×1 또는 그보다 작은 벡터들의 감소들을 가능하게 하지만, 다른 구현들에서, 벡터 감소 유닛(300)은 다수의 값 로더들(310)을 포함할 수 있다. 예컨대, 128-레인 데이터로서 송신된 128×128 엘리먼트 행렬들 또는 128×1 벡터들에 대해 동작되도록 구성되는 특수-목적 하드웨어 회로는 128개의 대응하는 값 로더들(310)을 포함할 수 있다.
입력 벡터에 대응하는 데이터는 스태거링 방식으로 값 로더들(310)에 의해 수신될 수 있다. 본 명세서에서 사용되는 바와 같이, 스태거링된 데이터는, 각각의 레인의 데이터 스트림이 다른 레인의 데이터 스트림 뒤에 몇 배수의 사이클들이 되도록, 오프셋을 갖는 다수의 레인들에서 송신되는 데이터이다. 예컨대, 값 로더 [0]에 대응하는 제1 레인의 데이터 스트림은 값 로더 [1]에 대응하는 제2 레인의 데이터 스트림에 하나의 사이클 앞에 있을 수 있다. 이것은 평탄화된 데이터와는 반대인데, 여기서, 예컨대 값 로더들(310) 각각에 의해 수신된 각각의 레인의 데이터 스트림들이 정렬된다. 예컨대, 다수의 레인들에 걸쳐 송신되는 엘리먼트들의 벡터는 동일한 클록 사이클 상에서 값 로더들(310)에서 수신될 것이다.
일반적으로, 벡터 감소 유닛(300), 및 벡터 감소 유닛(300)을 포함하는 특수-목적 하드웨어 회로의 다른 컴포넌트들은, 특정한 연산들을 병렬로 수행함으로써, 스태거링된 데이터에 대해 더 효율적으로 계산들을 수행하는 것이 가능할 수 있다. 예컨대, 도 4 및 도 7a 및 도 7b에 대해 더 상세히 도시되는 바와 같이, 스태거링된 데이터에 대해 연산하는 것은 벡터 감소 유닛(300) 또는 행렬 전치들 또는 행렬 콘볼루션들을 수행하기 위한 다른 컴포넌트들이 특정한 연산들을 병렬로 수행하게 하거나 또는 연속적인 입력 벡터들 또는 행렬들의 프로세싱을 최적화시키게 허용한다. 예컨대, 다수의 입력 벡터들에 대응하는 스태거링된 데이터에 대해 연산하는 것은 벡터 감소 유닛(300)이 동일한 사이클 동안 다수의 입력 벡터들에 대해 벡터 감소 연산들을 수행할 수 있게 한다. 도 4에 더 상세히 도시되는 바와 같이, 벡터 감소 유닛(300)은, 상이한 입력 벡터들의 엘리먼트들이 동일한 사이클 동안 벡터 감소 유닛(300)에 제공될 수 있도록, 스태거링된 데이터를 수신할 수 있다. 이어서, 벡터 감소 유닛(300)은 단일 사이클 동안 상이한 입력 벡터들의 감소들을 계산하기 위한 연산들을 수행할 수 있다.
값 로더들(310)은 입력 벡터에 대응하는 데이터를 수신하고, 데이터를 입력 레지스터(320)에 제공한다. 특정한 값 로더(310)에 의해 수신된 데이터가 입력 벡터의 엘리먼트들에 또는 다른 입력 벡터의 엘리먼트들에 대응하지 않는 경우, 특정한 값 로더(310)는 데이터를 무시 또는 폐기할 수 있다. 이들 예시들에서, 입력 레지스터(320)는 특정한 값 로더(310)로부터 데이터를 수신하지 않을 수 있거나, 널(null), 양 또는 음의 무한대 값을 수신할 수 있거나, 또는 특정한 값 로더(310)로부터 수신된 엘리먼트가 입력 벡터의 엘리먼트를 포함하지 않는다는 것을 나타내는 다른 데이터를 수신할 수 있다. 예컨대, 3×1 입력 벡터가 값 로더들(310)에 의해 수신되면, 값 로더 [3]에 의해 수신된 값들은, 그들이 입력 벡터의 엘리먼트들에 대응하지 않으므로 무시 또는 폐기될 수 있다. 그러나, 값 로더 [3]에 의해 수신된 값이 선행 입력 벡터, 예컨대 4×1 입력 벡터(그의 제1 엘리먼트는 3×1 입력 벡터의 제1 엘리먼트 이전에 수신되었음)에 대응하면, 값 로더 [3]에서 수신된 값은 입력 레지스터(320)에 제공될 수 있다.
몇몇 구현들에서, 벡터 감소 유닛(300)은, 벡터 입력 데이터가 감소 유닛(300)에 의해 프로세싱되고 있는 동안에만 벡터 감소 연산들을 수행하도록 구성된다. 예컨대, 벡터 감소 연산은, 입력 벡터의 제1 엘리먼트가 수신될 경우 트리거링될 수 있다. 이것은, 예컨대 더 적은 전력을 소비함으로써 회로의 효율을 개선시킬 수 있으며, 다른 입력 벡터의 엘리먼트에 대응하지 않는 입력 벡터의 제1 엘리먼트 이전에 입력 레지스터(320)에 의해 수신된 다른 데이터가 입력 벡터에 대해 벡터 감소를 수행한 결과에 영향을 주지 않는다는 것을 보장할 수 있다. 예컨대, 값 로더들(310)이 스태거링된 데이터를 수신하기 때문에, 입력 벡터의 제1 엘리먼트가 값 로더 [0]에서 수신될 경우 벡터 감소 연산이 트리거링되면, 이전의 사이클들 동안 수신된 어떠한 데이터도 입력 벡터를 감소시킨 결과에 영향을 주지 않을 것이다. 입력 레지스터(320)는 입력 벡터에 대응하는 데이터를 수신 및 저장한다. 예컨대, 값 로더들(310)이 입력 벡터의 엘리먼트들을 수신하고 엘리먼트들을 입력 레지스터(320)에 송신하므로, 엘리먼트들은 입력 레지스터에 저장될 수 있다. 입력 레지스터(320)는, 값 로더들(310)로부터 데이터를 수신하기 위해, 값 로더들(310)에 존재하는 것과 동일하거나 또는 그보다 많은 엘리먼트들을 포함할 수 있다. 값 로더들(310)에 의해 수신된 데이터가 스태거링되기 때문에, 임의의 포인트의 입력 레지스터(320)는 입력 벡터의 엘리먼트들 모두를 포함할 것이 아니라 오히려, 입력 벡터의 단일 엘리먼트만을 통상적으로 포함할 것이다. 또한, 데이터가 스태거링되기 때문에, 연속적인 입력 벡터들이 벡터 감소 유닛(300)에 의해 수신될 경우, 입력 레지스터(320)는 다수의 입력 벡터들의 엘리먼트들을 동시에 포함할 수 있다.
벡터 감소 유닛(300)의 계산 유닛(330)은 입력 레지스터(320)에 저장된 엘리먼트들을 수신하거나 또는 그 엘리먼트들에 액세스한다. 계산 유닛(330)은 특정한 값 로더(310) 또는 입력 레지스터(320)의 엘리먼트에 각각 대응하는 다수의 셀들을 포함할 수 있다. 예컨대, 벡터 감소 유닛(300)이 4개의 값 로더들(310)을 포함하면, 계산 유닛(330)은 벡터 감소 연산들을 수행하기 위한 4개의 셀들을 포함할 수 있다.
계산 유닛(330)은 또한, 제어 레지스터(315)로부터 벡터 감소 제어 신호(305) 및 데이터를 수신한다. 벡터 감소 제어 신호(305)는, 계산 유닛(330)이 수행할 특정한 타입의 벡터 감소 연산을 특정할 수 있다. 예컨대, 벡터 감소 제어 신호(305)는, 합산 벡터 감소 연산, 최대 값 감소 연산, 최소 벡터 감소 연산, 최대 인덱스 벡터 감소 연산, 최소 인덱스 벡터 감소 연산, 곱 벡터 감소 연산, 평균 벡터 감소 연산, 또는 다른 벡터 감소 연산을 특정할 수 있다. 벡터 감소 유닛(300)은 특수-목적 하드웨어 회로(200)의 시퀀서(206)로부터, 행렬-벡터 프로세싱 시스템(100)의 행렬-벡터 프로세싱 엔진(150)으로부터 또는 다른 소스로부터 벡터 감소 제어 신호(305)를 수신할 수 있다.
제어 레지스터(315)는 제어 벡터를 수신 및 저장할 수 있다. 제어 벡터는, 계산 유닛(330)이 수신된 입력 벡터에 대해, 세그먼트화된 벡터 감소를 수행해야 하는지 여부 및 어떻게 수행해야 하는지를 특정한다. 도 4에 대해 심도있게 논의되는 바와 같이, 제어 벡터는, 제어 신호들로서 계산 유닛(330)의 셀들에 제공될 수 있는 엘리먼트들을 포함한다. 엘리먼트들은, 계산 유닛(330)의 각각의 셀이 셀에서 수행된 벡터 감소 연산의 결과를 계산 유닛(330)의 다른 셀에 제공해야 하는지, 또는 셀에서 수행된 벡터 감소 연산의 결과를 입력 벡터의 세그먼트의 감소로서 출력해야 하는지를 표시할 수 있다. 달리 말하면, 제어 벡터의 각각의 엘리먼트는, 대응하는 셀이 입력 벡터의 세그먼트의 엔드포인트(endpoint)를 프로세싱하고 있는지 여부를 표시하는 제어 신호로서 그 대응하는 셀에 제공될 수 있다.
벡터 감소 연산의 결과가 하나의 셀로부터 다른 셀에 제공될 경우, 세그먼트화된 벡터 감소는 그 셀에서 발생하지 않는다. 따라서, 예컨대, 셀들 모두 또는 마지막 셀을 제외한 모든 셀들이 각각, 셀에서 수행된 벡터 감소 연산의 결과를 계산 유닛(330)의 다른 셀에 제공하도록 셀을 제어하는 제어 신호를 수신하면, 벡터 감소 제어 신호(305)에 의해 표시된 벡터 감소 연산은 입력 벡터의 엘리먼트들 모두에 적용된다. 따라서, 계산 유닛(330), 예컨대 계산 유닛(330)의 마지막 셀의 출력은, 단일 결과를 생성하기 위해 전체 입력 벡터를 감소시키는 세그먼트화되지 않은 벡터 감소 연산의 결과일 것이다.
계산 유닛(330)의 특정한 셀이 벡터 감소 연산의 결과를 다른 셀에 제공하지 않을 경우, 즉 세그먼트화된 벡터 감소 연산이 발생하지 않는 경우, 플레이스홀더 신호, 이를테면 널, 즉 제로 또는 양 또는 음의 무한대가 특정한 셀로부터 계산 유닛(330)의 다른 셀에 제공될 수 있다. 특정한 셀에 의해 수행된 벡터 감소 연산의 결과가 특정한 셀에 의해 수신된 입력 벡터의 엘리먼트까지의 그리고 그것을 포함하는 입력 벡터의 이들 엘리먼트들에 대한 세그먼트화된 벡터 감소로서 출력되므로, 결과는 특정한 셀에 의해 수신된 입력 벡터의 엘리먼트에서 발생하는 세그먼트화된 감소이다. 널 또는 양 또는 음의 무한대가 특정한 셀에 의해 계산 유닛(330)의 다른 셀에 제공되므로, 이것은 입력 벡터의 나머지 엘리먼트들에 대한 새로운 벡터 감소 계산을 효율적으로 시작하며, 그에 의해 입력 벡터의 나머지 엘리먼트들에 대한 세그먼트화된 벡터 감소의 제2 부분을 생성한다.
계산 유닛(330)의 셀들은 입력 벡터 감소의 결과를 생성하기 위해 감소 연산들을 수행한다. 각각의 셀은 입력 벡터의 특정한 엘리먼트를 프로세싱할 수 있다. 이를 행하기 위해, 도 4에서 더 상세히 설명되는 바와 같이, 셀은, 계산 유닛(330)의 선행 셀에 의해 수행된 벡터 감소 연산의 결과 또는 플레이스홀더 신호 또는 초기화 값, 예컨대 널 또는 양 또는 음의 무한대 중 어느 하나인 일시적인 감소 엘리먼트를 수신한다. 셀은 또한, 입력 벡터의 특정한 엘리먼트를 수신하며, 입력 벡터의 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여, 벡터 감소 제어 신호(305)에 의해 특정된 벡터 감소 연산을 수행한다. 세그먼트화된 감소 연산이 요청되지 않으면, 셀은 특정된 벡터 감소 연산을 수행한 결과를 계산 유닛(330)의 다음 셀에 제공한다. 세그먼트화된 감소 연산이 요청되면, 셀은 플레이스홀더, 예컨대 널 또는 양 또는 음의 무한대를 다음 셀에 제공한다. 셀은 또한, 특정된 벡터 감소 연산을 수행한 결과를 출력할 것이며, 그 결과는, 입력 벡터의 특정한 엘리먼트에 선행하고 그 엘리먼트를 포함하는 입력 벡터의 엘리먼트들에 대해, 세그먼트화된 벡터 감소를 수행한 결과에 대응한다. 세그먼트화된 벡터 감소 연산이 요청되지 않으면, 입력 벡터의 마지막 엘리먼트를 사용하여, 특정된 벡터 감소 연산을 수행한 결과(입력 벡터의 모든 엘리먼트들에 대해 벡터 감소 연산을 수행한 결과에 대응함)가 출력을 위해 제공될 수 있다.
계산 유닛(330)에 의해 수행된 벡터 감소 프로세스들의 출력들은, 출력들을 수신하고 출력들을 스태거링 방식으로 기입할 수 있는 값 출력들(340)에 의해 수신된다. 계산 유닛(330)의 셀들 중 임의의 셀이 벡터 감소의 결과를 제공하도록 구성될 수 있기 때문에, 벡터 감소 유닛(300)은 계산 유닛(330)의 셀들에 대응하는 값 출력들 [0] 내지 [3]을 포함한다. 예컨대, 계산 유닛(330)의 제2 셀이 그 셀에서, 세그먼트화된 벡터 감소를 수행해야 한다는 것을 표시하는 신호를 제어 레지스터(315)로부터 계산 유닛(330)의 제2 셀이 수신하면, 계산 유닛(330)의 제2 셀은 출력을 값 출력 [1]에 제공할 수 있다. 세그먼트화된 벡터 감소가 표시되지 않으면, 벡터 감소의 결과는 값 출력 [3]에 대응하는 계산 유닛(330)의 마지막 셀로부터의 출력을 위해 제공될 수 있다. 몇몇 예시들에서, 단일 값 출력(340)만이 요구될 수 있어서, 예컨대 계산 유닛(330)의 셀들로부터의 출력들 모두가 동일한 값 출력(340)에 출력된다. 세그먼트화된 벡터 감소 연산이 요청될 경우, 벡터 감소 유닛(300)의 값 출력들은 결과들의 벡터를 출력할 수 있으며, 여기서 벡터의 각각의 엘리먼트는 입력 벡터의 세그먼트의 감소이다. 값 출력들(340)은 출력 벡터의 엘리먼트들을 레지스터, 예컨대 출력 레지스터에 제공할 수 있어서, 세그먼트화된 입력 벡터 감소들의 결과들은 함께 벡터 포맷의 출력을 위해, 예컨대 스태거링 방식으로 벡터 감소 유닛(300)으로부터 출력되는 출력 벡터로서 제공될 수 있다.
값 출력들(340)은 계산 유닛(330)으로부터 벡터 감소 결과들을 수신할 수 있으며, 특수-목적 하드웨어 회로의 메모리, 예컨대 메모리(208)에, 특수-목적 하드웨어 회로의 다른 컴포넌트, 예컨대 행렬 또는 벡터 치환 유닛에, 또는 위치 오프-칩, 이를테면 행렬-벡터 프로세싱 엔진(150) 또는 행렬-벡터 프로세싱 시스템(100) 외부의 다른 목적지에 결과들을 출력할 수 있다.
도 4는 벡터 감소 유닛의 계산 유닛에 대한 예시적인 아키텍처(400)를 도시한다. 아키텍처(400)는, 예컨대 도 2의 메모리(208)와 유사한 메모리(410), 예컨대 도 3의 벡터 감소 제어 신호(305)와 유사한 벡터 감소 제어 신호(405), 예컨대 도 3의 제어 레지스터(315)와 유사한 제어 레지스터(415), 및 예컨대 도 3의 값 출력들(340)과 유사한 값 출력들(440)을 포함한다. 아키텍처는 또한, 도 3의 계산 유닛(330)의 셀들에 대응하는 셀들(430)을 포함한다. 직렬로 연결된 것으로, 즉 셀 [0]이 셀 [1]에 연결되고, 셀 [1]이 셀 [2]에 연결되는 등의 식으로 도 4에 도시되지만, 다른 구현들에서, 셀들(430)은 다른 순서들로 연결될 수 있어서, 예컨대 셀 [1]은 셀 [0] 이외의 셀로부터 데이터를 수신하고, 셀 [2] 이외의 셀에 데이터를 제공한다.
셀들(430)은 각각 메모리(410)로부터, 스태거링된 데이터의 레인을 수신한다. 몇몇 예들에서, 셀들(430)은 도 4에 도시되지 않은, 도 3의 값 로더들(310)과 유사한 값 입력들로부터 데이터를 수신할 수 있다. 예컨대, 차트(450)는, 4개의 셀들 [0] 내지 [3]에 대응하는, 스태거링 방식의 4개의 레인들 각각에 걸쳐 데이터가 어떻게 기입되는지를 나타낼 수 있다. 따라서, 사이클 0에서, 셀 [0]은 입력 벡터 [0]의 제1 엘리먼트를 수신할 수 있고, 사이클 1에서, 셀 [0]은 입력 벡터 [1]의 제1 엘리먼트를 수신할 수 있고 셀 [1]은 입력 벡터 [0]의 제2 엘리먼트를 수신할 수 있는 등의 식이다.
각각의 셀(430)은 또한, 수행할 벡터 감소 연산을 특정하는 벡터 감소 제어 신호(405)를 수신한다. 도 4에 도시된 바와 같이, 동일한 벡터 감소 제어 신호(405)가 셀들(430) 각각에 제공될 수 있다. 그러나, 다른 구현들에서, 상이한 벡터 감소 제어 신호들이 셀들(430) 각각에 또는 셀들(430)의 서브세트들에 제공될 수 있다. 상이한 벡터 감소 제어 신호들을 상이한 셀들(430)에 제공하는 것은 아키텍처(400)가 상이한 타입들의 벡터 감소 연산들을 동시에 수행할 수 있게 할 수 있다. 예컨대, 제어 신호들은, 셀들(430)로 하여금 제1 입력 벡터에 대해 합산 벡터 감소를 수행하게 하고 제2 입력 벡터에 대해 최대 값 벡터 감소를 수행하게 하기 위해 셀들(430)에 제공될 수 있다. 입력 벡터들의 스태거링된 입력은 셀들(430)이 이들 상이한 벡터 감소 연산들을 동시에 수행할 수 있게 할 수 있다. 유사하게, 세그먼트화된 벡터 감소 연산이 수행되면, 입력 벡터의 제1 세그먼트는 제1 타입의 벡터 감소 연산, 예컨대 합산 벡터 감소를 겪을 수 있고, 입력 벡터의 제2 세그먼트는 제2 타입의 벡터 감소 연산, 예컨대 최대 값 벡터 감소 연산을 겪을 수 있다. 몇몇 구현들에서, 셀들(430)은 단일 타입의 벡터 감소 연산을 수행하거나 또는 각각의 입력 벡터에 대해 동일한 엘리먼트 포지션에서 벡터 감소 연산을 세그먼트화시키도록 구성된다. 이들 구현들에서, 벡터 감소 제어 신호(405) 또는 제어 레지스터(415)는 아키텍처(400)의 선택적인 컴포넌트들일 수 있다.
각각의 셀(430)은 또한, 아키텍처(400)에서, 세그먼트화된 벡터 감소들을 제어하기 위한 제어 신호로서 동작하는, 제어 레지스터(415)에 저장된 제어 벡터의 엘리먼트를 수신한다. 제어 레지스터(415)는 제어 신호들의 벡터를 수신할 수 있거나, 또는 제어 레지스터(415)의 특정 엘리먼트들에 저장할 개별 제어 신호들을 수신할 수 있다. 각각의 제어 신호는, 셀(430)이 셀(430)에서 세그먼트화된 벡터 감소 연산을 수행해야 하는지 여부를 표시하거나 또는 셀(430)에서 세그먼트화되지 않은 벡터 감소 연산을 수행하도록 셀(430)에 의해 해석되는 값을 특정할 수 있다.
예컨대, 제어 레지스터(415)로부터 셀(430)에 의해 수신된 제로의 값은, 셀(430)이 셀(430)에서, 세그먼트화된 벡터 감소 연산을 수행하지 않아야 한다는 것, 즉 셀(430)이 입력 벡터의 세그먼트의 엔드포인트로서 처리될 입력 벡터의 엘리먼트를 수신하고 있지 않다는 것을 표시할 수 있다. 세그먼트화되지 않은 벡터 감소 연산을 수행하기 위해, 셀(430)은 도 4에서 <value>로서 도시된 일시적인 감소 엘리먼트를 수신할 수 있으며, 일시적인 감소 엘리먼트는 초기화 값 또는 플레이스홀더 신호, 예컨대 널 또는 양 또는 음의 무한대, 또는 선행 셀(430)로부터의 이전의 벡터 감소 연산의 결과에 대응한다. 셀(430)은 또한, 스태거링된 입력 데이터의 레인에 대응하는(예컨대 최대 인덱스 또는 최소 인덱스 벡터 감소 연산들을 수행하는 데에 사용하기 위한) 특정 셀(430)을 표시하는, <index>로서 도 4에 도시된 인덱스를 수신할 수 있다. 몇몇 구현들에서, 인덱스는 메모리 위치, 예컨대 입력 벡터가 저장되었거나 또는 저장된 메모리(208) 내의 위치일 수 있다. 셀(430)은 또한 메모리(410)로부터 입력 벡터의 엘리먼트를 수신한다. 셀(430)은, 벡터 감소 제어 신호(405)에 의해 특정된 벡터 감소 연산을 수행하며, 벡터 감소 연산의 결과 및 선택적으로는 벡터 감소 연산으로부터 초래되는 인덱스를 아키텍처(400)의 다음 셀(430)에 제공한다. 선택적으로, 셀(430)은 또한 이들 결과들을 값 출력(440)에 제공할 수 있다. 다음 셀(430)은, 셀(430)로부터 벡터 감소 연산의 결과들을 수신할 수 있고, 다음 셀(430)에서, 예컨대 다음 사이클에서 수행되는 벡터 감소 연산에서 결과들을 사용할 수 있다.
대안적으로, 1의 값이 셀(430)에 의해 수신되면, 셀(430)은 세그먼트화된 벡터 감소 연산을 수행할 수 있어서, 셀(430)은 입력 벡터의 수신된 엘리먼트를 입력 벡터의 세그먼트의 엔드포인트로서 처리한다. 이를 행하기 위해, 셀(430)은 셀(430)에서 수행된 벡터 감소 연산의 결과를, 수신된 엘리먼트로 종료되는 입력 벡터의 세그먼트에 대해 벡터 감소 연산을 수행한 결과로서 출력한다. 세그먼트화된 벡터 감소 연산을 수행하기 위해, 셀(430)은 초기화 값 또는 선행 셀(430)로부터의 이전의 벡터 감소 연산의 결과에 대응하는 일시적인 감소 엘리먼트를 수신할 수 있다. 셀(430)은 또한 선행 셀(430)로부터 인덱스를 수신할 수 있다. 셀(430)은 또한 메모리(410)로부터 입력 벡터의 엘리먼트를 수신한다. 셀(430)은 벡터 감소 제어 신호(405)에 의해 특정된 벡터 감소 연산을 수행한다. 그러나, 셀(430)은 아키텍처(400)의 다음 셀(430)에 결과를 제공하는 것이 아니라, 오히려 결과를 세그먼트화된 벡터 감소 연산의 결과로서 값 출력(440)에만 제공한다. 다음 셀(430)로, 셀(430)은 널 또는 양 또는 음의 무한대를, 즉 다음 셀(430)에서 시작할 다음 벡터 감소를 위한 초기화 값 또는 플레이스홀더 신호로서 전송한다.
예컨대, 셀 [1]은, 셀 [0]이 벡터 감소 제어 신호에 의해 특정된 벡터 감소 연산을 수행한 결과에 대응하는 일시적인 감소 엘리먼트를 셀 [0]로부터 수신할 수 있다. 셀 [0]에 의해 수행된 벡터 감소 연산의 결과는 입력 벡터 [0]의 제1 엘리먼트일 수 있다. 예컨대, 벡터 감소 제어 신호(405)가 합산 벡터 감소 연산을 특정하면, 셀 [0]로부터 셀 [1]로 출력된 결과는 입력 벡터 [0]의 제1 엘리먼트일 것이다. 셀 [1]은 또한 입력 벡터 [0]의 제2 엘리먼트를 수신할 수 있다. 이어서, 셀 [1]은 결과를 생성하기 위해, 벡터 감소 제어 신호(405)에 의해 특정된 벡터 감소 연산, 예컨대 합산 벡터 감소 연산을 수행할 수 있다. 예컨대, 특정된 벡터 감소 연산이 합산 벡터 감소 연산인 경우, 결과는 입력 벡터 [0]의 제1 및 제2 엘리먼트들의 합일 것이다.
제어 레지스터(415)의 [1] 포지션으로부터 수신된 제어 신호에 기반하여, 셀 [1]은 이러한 결과를 셀 [2] 또는 값 출력 [1], 또는 둘 모두에 제공할 수 있다. 예컨대, 제어 신호가 셀 [1]에 대한 세그먼트화되지 않은 벡터 감소 연산을 특정하는 제로의 값이면, 셀 [1]은 결과를 셀 [2]에 제공할 수 있고, 선택적으로는 또한, 예컨대 벡터 감소 연산의 중간 결과를 출력하기 위해 결과를 값 출력 [1]에 제공할 수 있다. 제어 신호가 셀 [1]에 대한 세그먼트화된 벡터 감소 연산을 특정하는 1의 값이면, 셀 [1]은 세그먼트화된 벡터 감소 연산의 결과, 예컨대 입력 벡터 [0]의 처음 2개의 엘리먼트들의 합산을 출력하기 위해 결과를 값 출력 [1]에 출력할 것이다. 그러나, 셀 [1]은 결과를 일시적인 감소 엘리먼트로서 셀 [2]에 출력하지 않을 것이다. 오히려, 셀 [1]은 널, 양의 무한대, 또는 음의 무한대를 셀 [2]에 제공할 것이며, 셀 [2]는 이러한 수신된 값을 일시적인 감소 엘리먼트로서 사용할 것이다. 따라서, 셀 [2]이 메모리(410)로부터 입력 벡터 [0]의 제3 엘리먼트를 수신할 경우, 셀 [2]에 의해 수행된 벡터 감소 연산은 입력 벡터 [0]의 제2 세그먼트에 대한 제2 벡터 감소 연산에 대해 수행된 제1 연산일 것이다. 벡터 감소 연산의 결과, 또는 세그먼트화된 벡터 감소 연산이 수행된 경우의 결과들이 값 출력들(440)에 출력되며, 여기서 그들은 특수-목적 하드웨어 회로(200) 또는 행렬-벡터 프로세싱 시스템(100)의 다른 컴포넌트들에 제공될 수 있다.
벡터 감소 제어 신호(405)에 의해 표시된 벡터 감소 연산이 최소 인덱스 벡터 감소 연산 또는 최대 인덱스 벡터 감소 연산 중 어느 하나를 특정할 경우, 셀들(430)은 각각, 스태거링된 입력 데이터의 레인에 대응하는 특정 셀(430)을 표시하는 인덱스를 제공할 수 있다. 몇몇 예시들에서, 그러한 인덱스는, 벡터 감소 연산이 수행될 경우 항상 셀들(430)로부터 출력될 수 있지만, 벡터 감소 제어 신호(405)가 최대 또는 최소 인덱스 벡터 감소 연산을 특정하지 않으면 사용가능한 데이터가 아닐 수 있다. 이들 벡터 감소 연산들 중 하나가 벡터 감소 제어 신호(405)에 의해 특정될 경우, 셀들(430)의 <value> 및 <index> 출력들 둘 모두는 출력을 정확히 결정하는 데 필요할 수 있다. 예컨대, 최대 인덱스 벡터 감소 연산이 특정되면, 셀 [0]은 셀 [0]에 의해 수신된 입력 벡터 [0]의 제1 엘리먼트의 값을 일시적인 감소 엘리먼트로서 셀 [1]에 출력하고, 입력 데이터의 제1 레인이 현재 최대-값 엘리먼트를 갖는 인덱스라는 것을 표시하는 인덱스 [0]를 셀 [1]에 출력할 수 있다. 셀 [1]은 셀 [0]로부터 값을 수신하고, 셀 [0]으로부터의 값을 입력 벡터 [0]의 제2 엘리먼트의 값과 비교할 수 있다. 입력 벡터 [0]의 제2 엘리먼트의 값이 입력 벡터 [0]의 제1 엘리먼트의 값보다 크면, 셀 [1]은 입력 벡터 [0]의 제2 엘리먼트의 값을 일시적인 감소 엘리먼트로서 셀 [2]에 출력할 수 있고, 입력 데이터의 제2 레인이 현재 최대-값 엘리먼트를 갖는 인덱스라는 것을 표시하는 인덱스 [1]을 셀 [2]에 출력할 수 있다. 이러한 프로세스는, 제어 벡터가 세그먼트화된 벡터 감소 연산을 특정하는지 또는 세그먼트화되지 않은 벡터 감소 연산을 특정하는지에 의존하여 각각의 셀(430)에서 반복될 수 있다. 벡터 감소 연산을 완료한 이후, 셀들(430)은, 일시적인 감소 엘리먼트, 즉 값을 출력하는 것 대신 인덱스 값을 값 출력들(440)에 출력한다.
몇몇 예시들에서, 시스템에 의해 사용되는 초기화 엘리먼트는 벡터 감소 제어 신호(405)에 의해 특정된 벡터 감소 연산에 의존할 수 있다. 예컨대, 합산 벡터 감소 연산이 특정될 경우, 널 값이 초기화 값으로서 사용될 수 있다. 곱 벡터 감소 연산이 특정될 경우, 1의 단일 값이 초기화 값으로서 사용될 수 있다. 최대 값 벡터 감소 연산 또는 최대 인덱스 벡터 감소 연산이 특정될 경우, 음의 무한대가 초기화 엘리먼트로서 사용될 수 있다. 최소 값 벡터 감소 연산 또는 최소 인덱스 벡터 감소 연산이 특정될 경우, 양의 무한대가 초기화 엘리먼트로서 사용될 수 있다. 몇몇 예시들에서, 특정 벡터 감소 연산에 대해 사용할 초기화 값은 벡터 감소 유닛(400)으로부터 외부적으로 수신된 신호에 의해, 예컨대 벡터 감소 제어 신호(405)와 유사한 제2 신호로서 표시 또는 제공된다. 다른 구현들에서, 셀들(430)은, 벡터 감소 제어 신호(405)에 의해 특정된 벡터 감소 연산에 기반하여 초기화 엘리먼트를 결정하는 것이 가능할 수 있다. 예컨대, 셀들(430)이 합산 벡터 감소 연산을 특정하는 신호를 수신하는 것에 기반하여, 셀들(430)은 널이 초기화 엘리먼트로서 사용되어야 한다고 결정할 수 있다.
도 5는 벡터 감소 유닛의 셀의 예시적인 아키텍처(500)를 도시한다. 예컨대, 도 4의 셀들(430) 각각은 아키텍처(500)와 유사한 아키텍처를 가질 수 있다.
예시적인 아키텍처(500)는, 일시적인 감소 엘리먼트를 수신하는 일시적인 감소 엘리먼트 레지스터(502)를 포함한다. 일시적인 감소 엘리먼트는 다른 셀로부터, 예컨대 도 4의 셀(430) 중 다른 셀로부터 수신될 수 있다. 몇몇 예시들에서, 일시적인 감소 엘리먼트 레지스터(502)는, 예컨대 널, 양의 무한대, 또는 음의 무한대 값으로 초기화될 수 있다. 예컨대, 벡터 감소 유닛(400)의 셀 [0]은, 그 셀이 선행 셀들에 의해 수행된 벡터 감소 연산들의 결과들을 수신하지 않으므로, 자신의 일시적인 감소 엘리먼트 레지스터(502)를 제로로 초기화되게 할 수 있다. 아키텍처(500)는 또한, 입력 벡터의 엘리먼트를 수신하는 입력 벡터 엘리먼트 레지스터(504)를 포함한다. 예컨대, 벡터 감소 유닛(400)의 셀 [0]의 입력 벡터 엘리먼트 레지스터(504)는 입력 벡터 [0]의 제1 엘리먼트를 수신하여 저장할 수 있고, 벡터 감소 유닛(400)의 셀 [1]의 입력 벡터 엘리먼트 레지스터(504)는 입력 벡터 [0]의 제2 엘리먼트를 수신하여 저장할 수 있는 등의 식이다.
일시적인 감소 엘리먼트는 멀티플렉서(508)에 제공될 수 있고, 입력 벡터 엘리먼트는 멀티플렉서(510)에 제공될 수 있다. 각각의 멀티플렉서(508, 510)는 벡터 감소 제어 신호(505)에 의해 제어될 수 있어서, 벡터 감소 제어 신호(505)는 엘리먼트들을 특정한 계산 회로(512, 514, 516)에 제공하도록 멀티플렉서들(508, 510)을 제어하기 위한 선택 신호로서 동작한다.
예컨대, 벡터 감소 제어 신호(505)는 최대 값 벡터 감소 연산 또는 최소 값 벡터 감소 연산이 수행될 것이라는 것을 표시할 수 있고, 신호(505)에 대한 응답으로, 멀티플렉서들(508, 510)은 비교 회로(512)에 일시적인 감소 엘리먼트 및 입력 벡터 엘리먼트를 제공할 수 있으며, 그 비교 회로(512)는 엘리먼트들 중 최대치 또는 최소치를 결정하기 위해 엘리먼트들을 비교하도록 구성된다. 유사하게, 벡터 감소 제어 신호(505)가 합산 벡터 감소 연산이 수행될 것이라는 것을 표시하면, 멀티플렉서들(508, 510)은 신호(505)를 수신하고, 응답으로, 일시적인 감소 엘리먼트 및 입력 벡터 엘리먼트를 합산 회로(514)에 제공할 수 있으며, 그 합산 회로(514)는 엘리먼트들을 합하도록 구성된다. 벡터 감소 제어 신호(50)가 곱 벡터 감소 연산이 수행될 것이라는 것을 표시하면, 멀티플렉서들(508, 510)은 일시적인 감소 엘리먼트 및 입력 벡터 엘리먼트를 곱셈 회로(516)에 제공할 수 있으며, 그 곱셈 회로(516)는 엘리먼트들의 곱을 계산하도록 구성된다. 다른 계산 회로, 예컨대 인덱스 식별 회로, 산술 평균을 계산하기 위한 회로, 또는 다른 계산 회로가 또한 아키텍처(500)에 포함될 수 있다.
몇몇 구현들에서, 셀은 단일 타입의 벡터 감소 연산을 수행하도록 구성될 수 있다. 그러한 구현에서, 단일 계산 회로, 예컨대 비교 회로(512), 합산 회로(514), 또는 곱셈 회로(516) 중 하나만이 포함될 수 있다. 부가적으로, 그러한 구현에서, 벡터 감소 제어 신호(505)는 특정 타입의 벡터 감소 연산을 수행하도록 아키텍처(500)에게 명령하는 데 필요하지는 않을 것이므로, 벡터 감소 제어 신호(505) 및 멀티플렉서들(508, 510)은 선택적일 수 있다.
계산 회로(512, 514, 516)에서 수행된 계산의 결과는 결과 레지스터(520)에 출력된다. 결과 레지스터(520)는 제어 신호(515)를 또한 수신한다. 제어 신호(515)는, 아키텍처(500)를 갖는 특정한 셀에 대응하는 도 4의 제어 레지스터(415)의 엘리먼트일 수 있다. 예컨대, 아키텍처(500)가 벡터 감소 유닛(400)의 셀 [1]에 대응하면, 제어 신호(515)는 제어 레지스터(415)의 [1] 포지션에 있는 엘리먼트에 대응하는 신호일 수 있다.
결과 레지스터(520)는 제어 신호(515)에 기반하여 하나 이상의 컴포넌트들에 결과를 출력한다. 세그먼트화된 벡터 감소 연산이 발생되지 않을 것이라는 것, 예컨대 제어 신호(515)가 제로라는 것을 제어 신호(515)가 표시하면, 결과 레지스터(520)는, 예컨대 다음 셀의 일시적인 감소 엘리먼트 레지스터에서 수신되도록 계산 회로(512, 514, 516)로부터 수신된 결과를 다음 셀에 제공할 수 있다. 선택적으로, 세그먼트화된 벡터 감소 연산이 발생하지 않을 것이라면, 결과 레지스터(520)는 또한, 결과를 값 출력, 예컨대 도 4의 값 출력들(440) 중 하나에 출력할 수 있다.
세그먼트화된 벡터 감소 연산이 발생할 것이라는 것을 제어 신호(515)가 표시하면, 결과 레지스터(520)는 계산 회로(512, 514, 516)로부터 수신된 결과를 값 출력, 예컨대 도 4의 값 출력(440)에 제공할 수 있다. 결과 레지스터는 또한, 아키텍처(500)와 연관된 셀에서 입력 벡터의 벡터 감소를 세그먼트화시키기 위해 널, 양의 무한대, 또는 음의 무한대 값을 다음 셀에, 예컨대 다음 셀의 일시적인 감소 엘리먼트 레지스터에 제공할 수 있다.
다른 셀 아키텍처들이 또한 가능하다. 몇몇 구현들에서, 계산 회로(512, 514, 516)의 컴포넌트들이 직렬로 배열될 수 있다. 예컨대, 비교 회로(512)는 일시적인 감소 엘리먼트 및 입력 벡터 엘리먼트를 수신할 수 있다. 비교 회로(512)의 출력은 합산 회로(514)에 대한 입력으로서 제공될 수 있고, 합산 회로(514)의 출력은 곱셈 회로(516)에 대한 입력으로서 제공될 수 있으며, 곱셈 회로(516)의 출력은 결과 레지스터(520)에 제공될 수 있다. 그러한 구현에서, 벡터 감소 제어 신호(505)는 계산 회로(512, 514, 516)의 각각의 컴포넌트를 활성화 또는 비활성화시키도록 동작할 수 있어서, 데이터가 계산 회로(512, 514, 516)의 컴포넌트들을 통과할 때, 벡터 감소 연산들 중 하나만이 데이터에 대해 수행된다. 그러한 아키텍처는 멀티플렉서들(508, 510)에 대한 필요성을 감소시킬 것이지만, 그 아키텍처는 유사한 방식으로 벡터 감소 제어 신호(505)를 해석하도록 계산 회로(512, 514, 516)의 컴포넌트들에게 요구할 것이다. 다른 아키텍처들이 또한 본 명세서의 범위 내에 있다.
도 6은 입력 벡터에 대해 벡터 감소를 수행하기 위한 예시적인 프로세스(600)이다. 몇몇 예들에서, 입력 벡터는 입력 행렬의 벡터일 수 있다. 일반적으로, 프로세스(600)는, 특수-목적 하드웨어 회로, 예컨대 벡터 감소 유닛(120)을 포함하는 도 1의 특수-목적 하드웨어 회로(110)를 포함하는 하나 이상의 컴퓨터들의 시스템에 의해 수행될 수 있다.
입력 벡터의 감소를 생성하기 위해, 시스템은 일련의 동작들(602 내지 608)을 수행한다. 예컨대, 특수-목적 하드웨어 회로는 복수의 셀들을 포함할 수 있으며, 여기서, 입력 벡터의 지정된 제1 엘리먼트를 수신하는 지정된 제1 셀 이외의 복수의 셀들 각각은 입력 벡터의 특정한 엘리먼트에 대해, 벡터 감소를 수행하기 위해 동작들(602 내지 608)을 수행하도록 구성된다. 몇몇 구현들에서, 입력 벡터의 지정된 제1 엘리먼트를 수신하는 지정된 제1 셀은, 그 셀이 선행 셀의 출력을 수신하지 않을 것이므로, 동작들(602 내지 608)을 수행하지 않을 수 있다. 따라서, 지정된 제1 셀은 간단히 입력 벡터의 제1 지정된 제1 엘리먼트를 시스템의 다음 셀에 제공할 수 있다. 다은 셀들 각각은 선행 셀의 출력을 수신하여, 그들 자신의 출력을 생성하도록 동작들(602 내지 608)의 시퀀스를 수행하며, 그 출력은 다음 셀에 제공된다. 입력 벡터의 마지막 엘리먼트에 대응하는 시스템의 마지막 셀의 출력은 특정된 벡터 감소 연산을 수행한 결과이다.
셀은 입력 벡터의 특정한 엘리먼트를 수신한다(602). 예컨대, 회로의 특정한 셀은 입력 벡터의 특정한 엘리먼트를 수신할 수 있다. 몇몇 구현들에서, 제1 레지스터, 예컨대 입력 레지스터는 입력 벡터의 엘리먼트들을 수신하도록 구성될 수 있다. 입력 벡터의 엘리먼트들을 입력 레지스터에 제공하는 데이터 스트림은 스태거링될 수 있어서, 입력 벡터에 대응하는 데이터는 지연된 방식으로 다수의 레인들에 걸쳐 수신된다. 예컨대, 각각의 사이클에 대해, 입력 벡터의 다음 엘리먼트가 입력 레지스터에서 수신되도록 데이터가 스태거링될 수 있다. 입력 레지스터에 의해 수신된 입력 벡터의 특정한 엘리먼트는 회로의 특정한 셀에 제공된다.
셀은 복수의 셀들 중 다른 셀로부터 일시적인 감소 엘리먼트를 수신한다(604). 일시적인 감소 엘리먼트는 입력 벡터의 특정한 엘리먼트에 선행하는 입력 벡터의 엘리먼트들에 대해 감소 연산을 수행한 결과에 대응할 수 있다. 예컨대, 회로의 특정한 셀은, 입력 벡터의 수신된 특정한 엘리먼트에 선행하는 입력 벡터의 엘리먼트들에 대해 감소 연산을 수행한 결과에 대응하는 일시적인 감소 엘리먼트를 수신할 수 있다. 일시적인 감소 엘리먼트는 회로의 하나 이상의 셀들 중 다른 셀로부터 수신될 수 있으며, 예컨대 선행 셀의 출력일 수 있다. 셀은, 셀이 입력 벡터의 특정한 엘리먼트를 수신한 사이클과 동일한 클록 사이클 동안 또는 셀이 입력 벡터의 특정한 엘리먼트를 수신한 클록 사이클 이전이거나 또는 그에 후속하는 클록 사이클 동안, 일시적인 감소 엘리먼트를 수신할 수 있다. 일 예로서, 회로는 도 4의 입력 벡터 [0]에 대해 벡터 감소 연산을 수행할 수 있다. 이를 행하기 위해, 입력 벡터 [0]의 엘리먼트들 각각은 대응하는 셀(430)에서 프로세싱되어, 즉 입력 벡터 [0]의 제1 엘리먼트는 셀 [0]에서 프로세싱되고, 입력 벡터 [0]의 제2 엘리먼트는 셀 [1]에서 프로세싱되는 등의 식이다. 그러한 예에서, 셀 [2]에 의해 수신된 일시적인 감소 엘리먼트는 입력 벡터의 제1 및 제2 엘리먼트들, 즉 셀 [2]에 의해 수신된 입력 벡터의 제3 엘리먼트에 선행하는 입력 벡터의 엘리먼트들에 대해 감소 연산을 수행한 결과에 대응할 것이다.
셀은 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 감소 연산을 수행한다(606). 예컨대, 특정한 엘리먼트에 선행하는 입력 벡터의 엘리먼트들에 대해, 특정된 벡터 감소 연산을 수행한 결과에 대응하는 일시적인 감소 엘리먼트 및 입력 벡터의 특정한 엘리먼트를 수신한 이후, 회로의 특정한 셀은 수신된 데이터에 대해, 제어 신호에 의해 특정된 벡터 감소 연산을 수행할 수 있다. 도 4의 예를 다시 참조하면, 셀 [2]가 입력 벡터 [0]의 제3 엘리먼트 및 셀 [1]의 출력을 일시적인 감소 엘리먼트로서 수신한 이후, 셀 [2]는 엘리먼트들에 대해, 특정된 벡터 감소 연산을 수행할 수 있다. 예컨대, 특정된 벡터 감소 연산이 합산 벡터 감소 연산이면, 셀 [2]는 입력 벡터 [0]의 제3 엘리먼트와 셀 [1]의 출력을 합할 수 있다.
몇몇 구현들에서, 시스템의 특정한 셀은, 입력 벡터의 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여 수행할 벡터 감소 연산을 특정하는 제어 신호를 수신할 수 있다. 몇몇 구현들에서, 제어 신호는 복수의 셀들 각각에 대해 동일할 수 있어서, 즉 단일 제어 신호는 회로에 의해 수신되고 셀들 각각에 제공된다. 다른 구현들에서, 회로의 각각의 셀은 별개의 제어 신호를 수신할 수 있다. 이것은, 이를테면, 세그먼트화된 벡터 감소 연산이 입력 벡터에 대해 수행되고 있는 경우, 회로의 상이한 셀들이 상이한 벡터 감소 연산들을 동시에 수행할 수 있게 한다. 그러한 구현에서, 셀들에 제공된 제어 신호들은 회로에 의해, 예컨대 레지스터에서 벡터로서 수신될 수 있으며, 여기서 벡터의 각각의 엘리먼트는 대응하는 셀에 제어 신호로서 제공될 수 있다. 벡터 감소 연산의 타입은, 예컨대, 합산 벡터 감소 연산, 최대 값 벡터 감소 연산, 최소 값 벡터 감소 연산, 최대 인덱스 벡터 감소 연산, 최소 인덱스 벡터 감소 연산, 평균 벡터 감소 연산, 곱 벡터 감소 연산, 또는 임의의 다른 벡터 감소 연산일 수 있다.
셀은 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여, 특정된 감소 연산을 수행한 결과를 새로운 일시적인 감소 엘리먼트로서 제공한다(608). 예컨대, 회로의 특정한 셀은 특정한 엘리먼트 및 일시적인 감소 엘리먼트를 사용하여, 특정된 감소 연산을 수행한 결과를 새로운 일시적인 감소 엘리먼트로서 복수의 셀들 중 다른 셀에 제공할 수 있다. 도 4의 예를 다시 참조하면, 셀 [2]가 입력 벡터 [0]의 제3 엘리먼트 및 셀 [1]로부터 수신된 일시적인 감소 엘리먼트에 대해, 특정된 벡터 감소 연산을 수행한 이후, 셀 [2]는 특정된 벡터 감소 연산의 결과를 회로의 셀 [3]에 출력할 수 있다. 대안적으로, 특정한 셀이 입력 벡터의 마지막 엘리먼트에 대해 벡터 감소 연산을 수행했던 셀이면, 결과적인 일시적인 감소 엘리먼트는 입력 벡터에 대해 벡터 감소를 수행한 결과에 대응하는 출력으로서 제공될 수 있다.
시스템은, 입력 벡터의 감소로서의 출력을 위해, 입력 벡터의 마지막 엘리먼트를 사용하여 감소 연산을 수행한 결과에 대응하는 새로운 일시적인 감소 엘리먼트를 제공한다(610). 예컨대, 벡터 감소 회로는, 입력 벡터의 마지막 엘리먼트를 사용하여 벡터 감소 연산을 수행한 결과를 제공하기 위한 출력 회로, 예컨대 하나 이상의 값 출력들, 이를테면 값 출력들(440)을 포함할 수 있다. 회로의 각각의 셀이 입력 벡터의 특정한 엘리먼트에 선행하는 입력 벡터의 엘리먼트들에 대해, 특정된 벡터 감소 연산을 수행한 결과에 대응하는 일시적인 감소 엘리먼트 및 입력 벡터의 엘리먼트를 사용하여 벡터 감소 연산을 수행하므로, 입력 벡터의 마지막 엘리먼트를 사용하는 특정된 벡터 감소 연산의 결과는 입력 벡터의 모든 엘리먼트들에 대해, 특정된 벡터 감소 연산을 수행한 결과일 것이다. 따라서, 이러한 결과는 입력 벡터의 감소에 대응한다. 예컨대, 아키텍처(400)의 셀 [3]은 입력 벡터 [0]의 제4, 즉 마지막 엘리먼트 및 셀 [2]의 출력, 즉 선행 셀에 의해 출력된 일시적인 감소 엘리먼트에 대해, 특정된 벡터 감소 연산을 수행할 수 있다. 셀 [3]에 의해 수행된 벡터 감소 연산의 결과는 전체 입력 벡터에 대한 벡터 감소 연산의 결과일 것이다. 따라서, 결과는 입력 벡터의 감소로서의 출력을 위해, 예컨대 값 출력 [3]에 제공될 수 있다. 몇몇 구현들에서, 입력 벡터의 마지막 엘리먼트에 대해 벡터 감소를 수행한 결과는, 예컨대 벡터 감소 연산이 입력 벡터의 다수의 세그먼트들에 대해 수행될 경우 다른 셀에 제공될 수 있다. 이들 구현들에서, 입력 벡터 세그먼트의 마지막 엘리먼트에 대해 벡터 감소를 수행한 결과는, 결과가 새로운 일시적인 감소 엘리먼트로서 다음 셀에 제공된 클록 사이클과 동일한 클록 사이클 동안 출력을 위해 제공될 수 있거나, 또는 결과가 새로운 일시적인 감소 엘리먼트로서 다음 셀에 제공되는 때의 선행 또는 후속 클록 사이클에서의 출력을 위해 제공될 수 있다.
회로의 하나 이상의 셀들이 순차적으로, 예컨대 셀 [0] 및 입력 벡터 [0]의 제1 엘리먼트로 시작하여 셀 [3] 및 입력 벡터 [0]의 마지막 엘리먼트로 종료되게 데이터를 수신 및 제공하는 것으로 논의되지만, 다른 구현들에서, 셀들은 상이한 순서로 입력 벡터에 대해 연산할 수 있다. 이들 구현들에서, 셀들은 입력 벡터의 상이한 엘리먼트들에 대해 연산할 수 있거나, 또는 셀들은 데이터를 수신하여, 시퀀스에서 셀 직전 또는 직후가 아닌 다른 셀들에 데이터를 제공할 수 있다. 예컨대, 셀 [1]의 출력은 일시적인 감소 엘리먼트로서 셀 [3]에 제공될 수 있고, 셀 [3]의 출력은 일시적인 감소 엘리먼트로서 도 4의 아키텍처(400)의 셀 [2]에 제공될 수 있다. 이들 구현들에서, 입력 벡터의 엘리먼트를 프로세싱할 마지막 셀의 출력은 입력 벡터에 대한 감소 결과일 것이다.
도 7a 및 도 7b는 행렬-벡터 프로세서에서 벡터 감소를 수행하는 일 예를 도시한다. 몇몇 구현들에서, 도 7a 및 도 7b의 예는, 벡터 감소 유닛(120)을 포함하는 특수 목적 하드웨어 회로(110)를 특성화하는 도 1의 행렬-벡터 프로세싱 시스템(100)에 의해 수행될 수 있다. 도 7a 및 도 7b에 도시된 예에서, 합산 벡터 감소 연산이 2개의 입력 벡터들에 대해 수행된다. 제1 입력 벡터는 벡터 [ 1 2 3 4 ]이고, 제2 입력 벡터는 벡터 [ 5 6 7 8 ]이다. 제1 입력 벡터에 대해 수행된 합산 벡터 감소 연산은 세그먼트화된 벡터 감소 연산이어서, 제1 입력 벡터에 대한 벡터 감소 연산의 결과는 제1 입력 벡터의 엘리먼트들 [ 1 2 ] 및 [ 3 4 ]의 합에 대응하는 2-엘리먼트 벡터이다. 제2 입력 벡터에 대해 수행된 합산 벡터 감소 연산은 세그먼트화된 벡터 감소 연산이 아니어서, 제2 입력 벡터에 대해 벡터 감소 연산을 수행한 결과는 제2 입력 벡터의 엘리먼트들 [ 5 6 7 8 ]의 합에 대응하는 스칼라이다.
도 7a 및 도 7b에 도시된 프레임들 각각에서, 메모리(710), 예컨대 메모리(208)를 구현하는 데 사용될 수 있는 DRAM 또는 SRAM은 스태거링된 메모리로서 액세스 또는 판독될 수 있다. 따라서, 각각의 프레임에서, 스태거링된 메모리 판독이 수행되며, 입력 벡터들의 엘리먼트들은 입력 레지스터(720)에서 수신된다. 입력 레지스터(720)는, 예컨대 도 3의 입력 레지스터(320)에 대응할 수 있다. 입력 레지스터(720)는 감소 유닛 셀들(730), 예컨대 도 4의 셀들(430)에 입력 벡터들의 수신된 엘리먼트들을 제공한다. 도 7a 및 도 7b의 프레임들 각각은, 730a 이전의 감소 유닛 셀들에서, 벡터 감소 연산이 수행되기 이전의 감소 유닛 셀들(730)을 나타낼 뿐만 아니라, 730b 이후의 감소 유닛 셀들에서, 벡터 감소 연산이 수행된 이후의 감소 유닛 셀들(730)을 나타낸다. 도 7a 및 도 7b의 프레임들은 또한 제어 레지스터(740)를 나타내며, 여기서, 제어 레지스터(740)의 콘텐츠들은, 세그먼트화된 또는 세그먼트화되지 않은 벡터 감소 연산들을 수행하도록 벡터 감소 유닛을 제어하기 위한 도 4의 제어 레지스터(415)의 콘텐츠들에 대응한다. 입력 벡터들의 감소의 출력들은, 예컨대 도 4의 값 출력들(440)과 유사한 출력들(750)에 제공된다.
간략하게, 도 7a에 도시된 프레임 (a)에서, 1의 값을 갖는 제1 입력 벡터의 제1 엘리먼트는 메모리(710)로부터 판독되고 입력 레지스터(720)에서 수신된다. 셀들(730)은 730a에 도시된 바와 같이, 널로 초기화되었지만, 다른 구현들에서, 셀들(730)은 양의 무한대, 음의 무한대, 또는 다른 값으로 초기화될 수 있다. 제어 레지스터(740)는 제1 입력 벡터의 세그먼트화된 벡터 감소 연산을 구현하기 위한 엘리먼트들의 벡터를 수신한다. 엘리먼트들의 벡터의 각각의 엘리먼트가 대응하는 셀(730)에 대한 제어 신호이도록, 엘리먼트들의 벡터는 [ 0 1 0 1 ]이고 제어 레지스터(740)에 제공된다. 제어 레지스터(740)의 [0] 포지션이, 즉 세그먼트화되지 않은 벡터 감소 연산이 수행되어야 한다는 것을 특정하는 제로이므로, 셀(730)은 제1 입력 벡터의 제1 엘리먼트를 수신하고, 현재 셀(730)에 있는 값과 그 엘리먼트를 합하여, 결과를 다음 셀(730)에 제공한다. 따라서, 제1 셀(730)은 프레임 (a)의 730b에 도시된 바와 같이, 연산 (Null) + 1 = 1을 수행하고, 1을 다음 셀(730)에 전송한다. 제1 셀의 콘텐츠들은 730b에 도시된 바와 같이 널로 재초기화될 수 있다.
프레임 (b)에서, 2의 값을 갖는 제1 입력 벡터의 제2 엘리먼트 및 5의 값을 갖는 제2 입력 벡터의 제1 엘리먼트가 입력 레지스터(720)에서 수신된다. 제2 셀(730)의 감소 유닛은 자신의 현재 저장된 값과 제1 입력 벡터의 수신된 제2 엘리먼트를 합하고, 즉 연산 (1) + 2 = 3을 수행한다. 제2 셀(730)에 대한 제어 레지스터(740)의 엘리먼트가, 즉 세그먼트화된 벡터 감소 연산이 수행되어야 한다는 것을 특정하는 1이므로, 제2 셀(730)은 결과적인 합을 제2 출력(750)에 출력한다. 부가적으로, 제2 셀(730)은 제로를 제3 셀(730)에 출력한다. 몇몇 예시들에서, 제2 셀(730)은 상이한 값, 예컨대 널, 양의 무한대, 또는 음의 무한대를 제3 셀(730)에 출력할 수 있다. 몇몇 예시들에서, 출력(750)은 단일 출력일 수 있어서, 예컨대 셀들(730) 전부는 동일한 출력(750)에 연결된다.
부가적으로, 제1 셀(730)은 제2 입력 벡터의 제1 엘리먼트를 수신하고, 합산 (Null) + 5 = 5을 수행하여, 결과를 저장을 위해 제2 셀(730)에 출력한다. 따라서, 프레임 (b)의 730b에서, 제2 셀(730)은 5의 값을 저장한다. 제1 셀(730)은 도시된 바와 같이, 널 또는 다른 값으로 재초기화될 수 있다.
프레임 (c)에서, 제1 입력 벡터의 제3 엘리먼트 및 제2 입력 벡터의 제2 엘리먼트가 입력 레지스터(720)에서 수신된다. 제1 입력 벡터의 세그먼트화된 벡터 감소 연산이 수행되었으므로, 제어 레지스터(740)는 또한, 제2 입력 벡터의 세그먼트화되지 않은 벡터 감소 연산을 위한 엘리먼트들을 포함하도록 업데이트된다. 따라서, 제어 레지스터(740)의 마지막 엘리먼트만이 1이어서, 단일 감소 출력만이 제2 입력 벡터에 대해 생성될 것이다. 제3 셀(730)은, 프레임 (c)의 730a에 도시된 바와 같이 제로의 값을 저장하고, 3의 값을 갖는 제1 입력 벡터의 제3 엘리먼트를 수신하고, 연산 (0) + 3 = 3을 수행하여, 730b에 도시된 바와 같이 결과를 마지막 셀(730)에 저장한다. 제2 셀(730)은, 730a에서 5의 값을 저장하고, 6의 값을 갖는 제2 입력 벡터의 제2 엘리먼트를 수신하고, 연산 (5) + 6 = 11을 수행하여, 730b에 도시된 바와 같이 결과를 제3 셀(730)에 저장한다.
프레임 (d)에서, 입력 레지스터(720)의 마지막 엘리먼트는 4의 값을 갖는 제1 입력 벡터의 마지막 엘리먼트 및 7의 값을 갖는 제2 입력 벡터의 제3 엘리먼트를 수신한다. 마지막 셀(730)은 제1 입력 벡터의 마지막 엘리먼트를 수신하고, 그 엘리먼트를 마지막 셀(730)에 저장된 값과 합하고, 즉 연산 (3) + 4 = 7을 수행하며, 제어 레지스터(740)가 1을 저장한 것에 기반하여, 결과를 마지막 출력(750)에 출력한다. 제3셀(730)은 제2입력 벡터의 제3엘리먼트를 수신하고, 그 엘리먼트를 제3셀(730)에 저장된 값과 합하고, 즉 연산 (11) + 7 = 18을 수행하며, 프레임 (d)의 730b에 도시된 바와 같이 결과를 마지막 셀(730)에 저장한다.
프레임 (e)에서, 8의 값을 갖는 제2 입력 벡터의 마지막 엘리먼트가 입력 레지스터(720)에서 수신된다. 이러한 값은 마지막 셀(730)에 현재 저장된 값과 합해지고, 즉 연산 (18) + 8 = 26이 수행된다. 감소 유닛의 마지막 셀(730)에 대응하는 제어 레지스터(740)의 마지막 엘리먼트가 1이기 때문에, 결과가 마지막 출력(750)에 출력된다. 따라서, 입력 벡터들 둘 모두의 합산 벡터 감소들이 출력된다. 엘리먼트들이 셀들(730)로부터 판독되고, 예컨대 선행 셀들(730)의 출력들로 대체되지 않으므로, 셀들(730)의 콘텐츠들은 널 또는 다른 값으로 재초기화될 수 있다.
본 명세서에서 설명된 청구 대상 및 기능 동작들의 실시예들은, 디지털 전자 회로에서, 유형으로 구현된 컴퓨터 소프트웨어 또는 펌웨어에서, 본 명세서에 개시된 구조들 및 그들의 구조적 등가물들을 포함하는 컴퓨터 하드웨어에서, 또는 그들 중 하나 이상의 조합들에서 구현될 수 있다. 본 명세서에 설명된 청구 대상의 실시예들은, 데이터 프로세싱 장치에 의한 실행을 위해, 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 유형의 비일시적인 프로그램 캐리어 상에서 인코딩된 하나 이상의 컴퓨터 프로그램들, 즉 컴퓨터 프로그램 명령들의 하나 이상의 모듈들로서 구현될 수 있다. 대안적으로 또는 부가적으로, 프로그램 명령들은, 데이터 프로세싱 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하도록 생성되는 인위적으로 생성된 전파된 신호, 예컨대 머신-생성된 전기, 광학, 또는 전자기 신호 상에서 인코딩될 수 있다. 컴퓨터 저장 매체는, 머신-판독가능 저장 디바이스, 머신-판독가능 저장 기판, 랜덤 또는 시리얼 액세스 메모리 디바이스, 또는 그들 중 하나 이상의 조합일 수 있다.
용어 "데이터 프로세싱 장치"는 프로그래밍가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 예로서 포함하는, 데이터를 프로세싱하기 위한 모든 종류들의 장치, 디바이스들, 및 머신들을 포함한다. 장치는 특수 목적 로직 회로, 예컨대, FPGA(필드 프로그래밍가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)를 포함할 수 있다. 장치는 또한, 하드웨어에 부가하여, 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예컨대 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 시스템, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
(또한, 프로그램, 소프트웨어, 소프트웨어 애플리케이션, 모듈, 소프트웨어 모듈, 스크립트, 또는 코드로 지칭 또는 설명될 수 있는) 컴퓨터 프로그램은, 컴파일된 또는 해석된 언어들 또는 선언형 또는 절차형 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기입될 수 있으며, 그것은 독립형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서의 사용에 적합한 다른 유닛을 포함하는 임의의 형태로 배치될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응하지만 그러할 필요는 없을 수 있다. 프로그램은, 다른 프로그램들 또는 데이터를 보유하는 파일의 일부분, 예컨대, 마크업 언어 문서에 저장된 하나 이상의 스크립트들, 해당 프로그램에 전용된 단일 파일, 또는 다수의 조정된 파일들, 예컨대, 하나 이상의 모듈들, 서브 프로그램들, 또는 코드의 일부분들을 저장한 파일들에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터 상에서 또는 하나의 사이트에 로케이팅되거나 또는 다수의 사이트들에 걸쳐 분산되어 통신 네트워크에 의해 상호연결되는 다수의 컴퓨터들 상에서 실행되도록 배치될 수 있다.
본 명세서에 설명된 프로세스들 및 로직 흐름들은, 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래밍가능 컴퓨터들에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로, 예컨대, FPGA(필드 프로그래밍가능 게이트 어레이) 또는 ASIC(주문형 집적 회로)에 의해 수행될 수 있거나, 장치는 또한 그들로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터들은, 예로서, 범용 또는 특수 목적 마이크로프로세서들 또는 그 둘 모두, 또는 임의의 다른 종류의 중앙 프로세싱 유닛에 기반할 수 있다. 일반적으로, 중앙 프로세싱 유닛은 판독전용 메모리 또는 랜덤 액세스 메모리 또는 그 둘 모두로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 본질적인 엘리먼트들은 명령들을 수행 또는 실행하기 위한 중앙 프로세싱 유닛, 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대 자기, 광자기 디스크들, 또는 광학 디스크들을 포함하거나, 또는 그들로부터 데이터를 수신하거나 그들로 데이터를 전달하도록, 또는 그 둘 모두를 위해 동작가능하게 커플링될 것이다. 그러나, 컴퓨터는 그러한 디바이스들을 가질 필요는 없다. 또한, 컴퓨터는 다른 디바이스, 예컨대 단지 몇몇 예를 들자면 모바일 텔레폰, 개인 휴대 정보 단말(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 포지셔닝 시스템(GPS) 수신기, 또는 휴대용 저장 디바이스, 예컨대 USB(universal serial bus) 플래시 드라이브에 임베딩될 수 있다.
컴퓨터 프로그램 명령들 및 데이터를 저장하는 데 적합한 컴퓨터 판독가능 매체들은 반도체 메모리 디바이스들, 예컨대 EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대 내부 하드 디스크들 또는 착탈형 디스크들; 광자기 디스크들; 및 CD ROM 및 DVD-ROM 디스크들을 예로서 포함하는 비휘발성 메모리, 매체들 및 메모리 디바이스들의 모든 형태들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 그에 통합될 수 있다.
사용자와의 상호작용을 전송하기 위해, 본 명세서에 설명된 청구 대상의 실시예들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터, 및 사용자가 입력을 컴퓨터에 전송할 수 있게 하는 키보드 및 포인팅 디바이스, 예컨대, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들은 또한, 사용자와의 상호작용을 전송하기 위해 사용될 수 있으며, 예컨대, 사용자에게 제공된 피드백은 임의의 형태의 감지 피드백(예컨대, 시각적인 피드백, 가청적인 피드백, 또는 촉각적인 피드백)일 수 있고; 사용자로부터의 입력은 음향, 스피치, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 부가적으로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 그 디바이스로부터 문서들을 수신함으로써; 예컨대, 사용자의 클라이언트 디바이스 상의 웹 브라우저로부터 수신된 요청들에 대한 응답으로 그 웹 브라우저에 웹 페이지들을 전송함으로써 사용자와 상호작용할 수 있다.
본 명세서에 설명된 청구 대상의 실시예들은, 예컨대 데이터 서버로서 후단 컴포넌트를 포함하거나, 또는 미들웨어 컴포넌트, 예컨대 애플리케이션 서버를 포함하거나, 또는 전단 컴포넌트, 예컨대 사용자가 본 명세서에 설명된 청구 대상의 구현과 상호작용할 수 있게 하는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터를 포함하거나, 또는 하나 이상의 그러한 후단, 미들웨어, 또는 전단 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은, 임의의 형태 또는 매체의 디지털 데이터 통신, 예컨대 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들의 예들은 로컬 영역 네트워크("LAN") 및 광역 네트워크("WAN"), 예컨대 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원격이며, 통상적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터들 상에서 구동되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다.
본 명세서가 많은 특정한 구현 세부사항들을 포함하지만, 이들은 임의의 발명들 또는 청구될 수 있는 것의 범위에 대한 제한들로서 해석되는 것이 아니라 오히려, 특정 발명들의 특정 실시예들에 특정할 수 있는 특징들의 설명들로서 해석되어야 한다. 별도의 실시예들의 맥락에서 본 명세서에 설명된 특정한 특징들은 또한, 단일 실시예의 조합으로 구현될 수 있다. 대조적으로, 단일 실시예의 맥락에서 설명된 다양한 특징들은 또한, 다수의 실시예들에서 별개로 또는 임의의 적절한 하위조합으로 구현될 수 있다. 또한, 특징들이 특정한 조합들에서 동작하는 것으로 위에서 설명되고 심지어 초기에는 그와 같이 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 몇몇 경우들에서, 그 조합으로부터 삭제될 수 있으며, 청구된 조합은 하위조합 또는 하위조합의 변경으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면들에 도시되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정한 순서 또는 순차적인 순서로 수행되거나, 모든 도시된 동작들이 수행될 것을 요구하는 것으로서 이해되지는 않아야 한다. 특정한 환경들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수도 있다. 또한, 위에서 설명된 실시예들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되지는 않아야 하며, 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로, 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
청구 대상의 특정 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 존재한다. 예컨대, 청구항들에서 인용된 동작들은, 상이한 순서로 수행될 수 있으며, 여전히 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부한 도면들에 도시된 프로세스들은 바람직한 결과들을 달성하기 위해, 도시된 특정 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 특정한 구현들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (20)

  1. 시스템으로서,
    복수의 입력 벡터 엘리먼트들을 저장하도록 구성된 입력 벡터 레지스터;
    복수의 제어 벡터 엘리먼트들을 저장하도록 구성된 제어 벡터 레지스터; 및
    복수의 셀들
    을 포함하고,
    상기 복수의 셀들 중 적어도 하나의 셀은,
    (ⅰ) 상기 복수의 입력 벡터 엘리먼트들 중 개별 입력 벡터 엘리먼트, 및 (ⅱ) 상기 적어도 하나의 셀에 선행하는 셀에 의해 수행되는 벡터 감소 연산의 출력 또는 플레이스홀더(placeholder) 신호 중 어느 하나인 일시적 감소 엘리먼트, 및 (ⅲ) 상기 복수의 셀들의 각각에 대한 대응하는 제어 벡터 엘리먼트를 갖는 제어 벡터 내의 개별 제어 벡터 엘리먼트를 수신하고,
    상기 개별 입력 벡터 엘리먼트 및 상기 일시적 감소 엘리먼트를 이용하여 결과를 계산하고, 그리고
    상기 복수의 셀들 중 다른(another) 셀에 상기 결과를 제공하도록 구성되고,
    상기 결과는 상기 다른 셀에 대한 새로운 일시적 감소 엘리먼트인,
    시스템.
  2. 제1항에 있어서,
    상기 개별 제어 벡터 엘리먼트는, 상기 개별 입력 벡터 엘리먼트가 입력 벡터 내의 마지막 입력 벡터 엘리먼트인지 여부를 표시하고,
    상기 적어도 하나의 셀은, 상기 개별 입력 벡터 엘리먼트가 마지막 벡터 엘리먼트가 아니라고 상기 개별 제어 벡터 엘리먼트가 표시하는 것에 응답하여, 상기 결과를 상기 다른 셀에 제공하도록 구성되는,
    시스템.
  3. 제2항에 있어서,
    상기 적어도 하나의 셀은, 상기 개별 입력 벡터 엘리먼트가 상기 입력 벡터 내의 마지막 입력 벡터 엘리먼트라고 상기 개별 제어 벡터 엘리먼트가 표시하는 것에 응답하여, 상기 결과를 출력 회로에 제공하도록 추가로 구성되는,
    시스템.
  4. 제1항에 있어서,
    상기 일시적 감소 엘리먼트를 저장하도록 구성된 일시적 감소 엘리먼트 레지스터를 더 포함하는,
    시스템.
  5. 제1항에 있어서,
    상기 결과를 계산하는 것은,
    상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트를 비교하고, 그리고
    상기 비교에 기초하여, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트 중 최대값을 상기 결과로서 결정하는 것을 포함하는,
    시스템.
  6. 제1항에 있어서,
    상기 결과를 계산하는 것은,
    상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트를 비교하고, 그리고
    상기 비교에 기초하여, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트 중 최소값을 상기 결과로서 결정하는 것을 포함하는,
    시스템.
  7. 제1항에 있어서,
    상기 결과를 계산하는 것은, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트의 합을 상기 결과로서 결정하는 것을 포함하는,
    시스템.
  8. 제1항에 있어서,
    상기 결과를 계산하는 것은, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트의 곱을 상기 결과로서 결정하는 것을 포함하는,
    시스템.
  9. 제1항에 있어서,
    상기 결과를 계산하는 것은, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트의 평균을 상기 결과로서 결정하는 것을 포함하는,
    시스템.
  10. 제1항에 있어서,
    상기 결과를 계산하는 것은,
    상기 개별 입력 벡터 엘리먼트에 대응하는 제1 인덱스를 결정하고,
    상기 일시적 감소 엘리먼트에 대응하는 제2 인덱스를 표시하는 데이터를 수신하고,
    상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트를 비교하고,
    상기 비교에 기초하여, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트 중 최대값을 결정하고, 그리고
    상기 결정에 기초하여, 상기 개별 입력 벡터 엘리먼트에 대응하는 상기 제1 인덱스 또는 상기 일시적인 감소 엘리먼트에 대응하는 상기 제2 인덱스 중 하나를 결과로서 식별하는 것을 포함하는,
    시스템.
  11. 명령들을 저장하고 있는 비-일시적인 컴퓨터-판독가능 저장 매체로서,
    상기 명령들은, 적어도 하나의 프로그래밍 가능한 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로그래밍 가능한 프로세서로 하여금:
    복수의 셀들 중 적어도 하나의 셀에 대하여, (ⅰ) 입력 벡터의 개별 입력 벡터 엘리먼트, 및 (ⅱ) 상기 적어도 하나의 셀에 선행하는 셀에 의해 수행되는 벡터 감소 연산의 출력 또는 플레이스홀더 신호 중 어느 하나인 일시적 감소 엘리먼트, 및 (ⅲ) 상기 적어도 하나의 셀에 대한 대응하는 제어 벡터 엘리먼트를 갖는 제어 벡터 내의 개별 제어 벡터 엘리먼트를 수신하는 동작,
    상기 개별 입력 벡터 엘리먼트 및 상기 일시적 감소 엘리먼트를 이용하여 결과를 계산하는 동작, 및
    상기 복수의 셀들 중 다른(another) 셀에 상기 결과를 제공하는 동작
    을 포함하는 동작들을 수행하게 하고,
    상기 결과는 상기 다른 셀에 대한 새로운 일시적 감소 엘리먼트인,
    비-일시적인 컴퓨터-판독가능 저장 매체.
  12. 제11항에 있어서,
    상기 개별 입력 벡터 엘리먼트가 상기 입력 벡터 내의 마지막 벡터 엘리먼트라고 상기 개별 제어 벡터 엘리먼트가 표시하는 것에 응답하여, 상기 결과를 출력 회로에 제공하는 동작을 더 포함하는,
    비-일시적인 컴퓨터-판독가능 저장 매체.
  13. 제11항에 있어서,
    상기 결과를 계산하는 동작은,
    상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트를 비교하는 동작, 및
    상기 비교에 기초하여, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트 중 최대값을 상기 결과로서 결정하는 동작을 포함하는,
    비-일시적인 컴퓨터-판독가능 저장 매체.
  14. 제11항에 있어서,
    상기 결과를 계산하는 동작은,
    상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트를 비교하는 동작, 및
    상기 비교에 기초하여, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트 중 최소값을 상기 결과로서 결정하는 동작을 포함하는,
    비-일시적인 컴퓨터-판독가능 저장 매체.
  15. 제11항에 있어서,
    상기 결과를 계산하는 동작은, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트의 합을 상기 결과로서 결정하는 동작을 포함하는,
    비-일시적인 컴퓨터-판독가능 저장 매체.
  16. 제11항에 있어서,
    상기 결과를 계산하는 동작은, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트의 곱을 상기 결과로서 결정하는 것을 포함하는,
    비-일시적인 컴퓨터-판독가능 저장 매체.
  17. 제11항에 있어서,
    상기 결과를 계산하는 동작은, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트의 평균을 상기 결과로서 결정하는 동작을 포함하는,
    비-일시적인 컴퓨터-판독가능 저장 매체.
  18. 제11항에 있어서,
    상기 결과를 계산하는 동작은,
    상기 개별 입력 벡터 엘리먼트에 대응하는 제1 인덱스를 결정하는 동작,
    상기 일시적 감소 엘리먼트에 대응하는 제2 인덱스를 표시하는 데이터를 수신하는 동작,
    상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트를 비교하는 동작,
    상기 비교에 기초하여, 상기 개별 입력 벡터 엘리먼트와 상기 일시적 감소 엘리먼트 중 최대값을 결정하는 동작, 및
    상기 결정에 기초하여, 상기 개별 입력 벡터 엘리먼트에 대응하는 상기 제1 인덱스 또는 상기 일시적인 감소 엘리먼트에 대응하는 상기 제2 인덱스 중 하나를 결과로서 식별하는 동작을 포함하는,
    비-일시적인 컴퓨터-판독가능 저장 매체.
  19. 복수의 셀들을 포함하는 하드웨어 회로에 의해 수행되는, 벡터 감소를 위한 방법으로서,
    복수의 셀들 중 적어도 하나의 셀에 대하여, (ⅰ) 입력 벡터의 개별 입력 벡터 엘리먼트, 및 (ⅱ) 상기 적어도 하나의 셀에 선행하는 셀에 의해 수행되는 벡터 감소 연산의 출력 또는 플레이스홀더 신호 중 어느 하나인 일시적 감소 엘리먼트, 및 (ⅲ) 상기 적어도 하나의 셀에 대한 대응하는 제어 벡터 엘리먼트를 갖는 제어 벡터 내의 개별 제어 벡터 엘리먼트를 수신하는 단계;
    상기 개별 입력 벡터 엘리먼트 및 상기 일시적 감소 엘리먼트를 이용하여 결과를 계산하는 단계; 및
    상기 복수의 셀들 중 다른(another) 셀에 상기 결과를 제공하는 단계
    를 포함하고,
    상기 결과는 상기 다른 셀에 대한 새로운 일시적 감소 엘리먼트인,
    방법.
  20. 제19항에 있어서,
    상기 개별 입력 벡터 엘리먼트가 상기 입력 벡터 내의 마지막 입력 벡터 엘리먼트라고 상기 개별 제어 벡터 엘리먼트가 표시하는 것에 응답하여, 상기 결과를 출력 회로에 제공하는 단계를 더 포함하는,
    방법.
KR1020217015113A 2017-04-03 2017-12-13 벡터 감소 프로세서 KR102347374B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217043370A KR102471597B1 (ko) 2017-04-03 2017-12-13 벡터 감소 프로세서

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/477,791 2017-04-03
US15/477,791 US10108581B1 (en) 2017-04-03 2017-04-03 Vector reduction processor
KR1020197020740A KR102256109B1 (ko) 2017-04-03 2017-12-13 벡터 감소 프로세서
PCT/US2017/066058 WO2018186918A1 (en) 2017-04-03 2017-12-13 Vector reduction processor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197020740A Division KR102256109B1 (ko) 2017-04-03 2017-12-13 벡터 감소 프로세서

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217043370A Division KR102471597B1 (ko) 2017-04-03 2017-12-13 벡터 감소 프로세서

Publications (2)

Publication Number Publication Date
KR20210060665A KR20210060665A (ko) 2021-05-26
KR102347374B1 true KR102347374B1 (ko) 2022-01-04

Family

ID=60991531

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020217043370A KR102471597B1 (ko) 2017-04-03 2017-12-13 벡터 감소 프로세서
KR1020197020740A KR102256109B1 (ko) 2017-04-03 2017-12-13 벡터 감소 프로세서
KR1020217015113A KR102347374B1 (ko) 2017-04-03 2017-12-13 벡터 감소 프로세서

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020217043370A KR102471597B1 (ko) 2017-04-03 2017-12-13 벡터 감소 프로세서
KR1020197020740A KR102256109B1 (ko) 2017-04-03 2017-12-13 벡터 감소 프로세서

Country Status (10)

Country Link
US (5) US10108581B1 (ko)
EP (2) EP3552094B1 (ko)
JP (3) JP7055809B2 (ko)
KR (3) KR102471597B1 (ko)
CN (2) CN108694055B (ko)
DK (2) DK3552094T3 (ko)
FI (1) FI4086760T3 (ko)
HK (1) HK1259157A1 (ko)
TW (4) TWI673648B (ko)
WO (1) WO2018186918A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10936942B2 (en) * 2017-11-21 2021-03-02 Google Llc Apparatus and mechanism for processing neural network tasks using a single chip package with multiple identical dies
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US11294670B2 (en) * 2019-03-27 2022-04-05 Intel Corporation Method and apparatus for performing reduction operations on a plurality of associated data element values
CN110069737B (zh) * 2019-04-19 2020-08-14 北京三快在线科技有限公司 内容生成方法、装置、计算机设备及存储介质
US11216281B2 (en) * 2019-05-14 2022-01-04 International Business Machines Corporation Facilitating data processing using SIMD reduction operations across SIMD lanes
US10997116B2 (en) * 2019-08-06 2021-05-04 Microsoft Technology Licensing, Llc Tensor-based hardware accelerator including a scalar-processing unit
CN110580288B (zh) * 2019-08-23 2022-09-09 腾讯科技(深圳)有限公司 基于人工智能的文本分类方法和装置
CN111105042B (zh) * 2019-12-13 2023-07-25 广东浪潮大数据研究有限公司 一种并行消息处理方法、系统及相关装置
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US20240004647A1 (en) * 2022-07-01 2024-01-04 Andes Technology Corporation Vector processor with vector and element reduction method
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101005718B1 (ko) 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4839845A (en) 1986-03-31 1989-06-13 Unisys Corporation Method and apparatus for performing a vector reduction
US5423051A (en) 1992-09-24 1995-06-06 International Business Machines Corporation Execution unit with an integrated vector operation capability
JP3334330B2 (ja) 1994-05-17 2002-10-15 日産自動車株式会社 燃料噴射弁
JPH0877142A (ja) 1994-08-31 1996-03-22 Fujitsu Ltd ベクトルプロセッサ
KR100267089B1 (ko) * 1996-08-19 2000-11-01 윤종용 스칼라/벡터연산이조합된단일명령복수데이터처리
TW361051B (en) * 1997-01-09 1999-06-11 Matsushita Electric Ind Co Ltd Motion vector detection apparatus
JP3857614B2 (ja) 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US7747088B2 (en) 2005-09-28 2010-06-29 Arc International (Uk) Limited System and methods for performing deblocking in microprocessor-based video codec applications
US8065503B2 (en) * 2006-12-15 2011-11-22 International Business Machines Corporation Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process
EP1936492A1 (en) 2006-12-22 2008-06-25 Telefonaktiebolaget LM Ericsson (publ) SIMD processor with reduction unit
US7953684B2 (en) * 2007-01-31 2011-05-31 International Business Machines Corporation Method and system for optimal parallel computing performance
US20090150648A1 (en) * 2007-12-06 2009-06-11 Eric Oliver Mejdrich Vector Permute and Vector Register File Write Mask Instruction Variant State Extension for RISC Length Vector Instructions
US8417921B2 (en) * 2008-08-15 2013-04-09 Apple Inc. Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector
US8209525B2 (en) * 2008-08-15 2012-06-26 Apple Inc. Method and apparatus for executing program code
WO2010087144A1 (ja) * 2009-02-02 2010-08-05 日本電気株式会社 並列比較選択演算装置、プロセッサ及び並列比較選択演算方法
FR2949637B1 (fr) 2009-08-28 2011-09-23 Commissariat Energie Atomique Dispositif de calcul reconfigurable sur voisinage flexible de pixels
US8447954B2 (en) * 2009-09-04 2013-05-21 International Business Machines Corporation Parallel pipelined vector reduction in a data processing system
US8458243B1 (en) 2010-03-03 2013-06-04 Altera Corporation Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering
US9141386B2 (en) 2010-09-24 2015-09-22 Intel Corporation Vector logical reduction operation implemented using swizzling on a semiconductor chip
US20120290819A1 (en) * 2011-05-09 2012-11-15 Altera Corporation Dsp block with embedded floating point structures
EP2831692A1 (en) 2012-03-30 2015-02-04 Intel Corporation Apparatus and method for selecting elements of a vector coumputation
US9342479B2 (en) * 2012-08-23 2016-05-17 Qualcomm Incorporated Systems and methods of data extraction in a vector processor
US9588766B2 (en) * 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
CN104813279B (zh) * 2012-12-28 2018-12-18 英特尔公司 用于减少具有步幅式访问模式的向量寄存器中的元素的指令
US20150052330A1 (en) * 2013-08-14 2015-02-19 Qualcomm Incorporated Vector arithmetic reduction
GB2519108A (en) * 2013-10-09 2015-04-15 Advanced Risc Mach Ltd A data processing apparatus and method for controlling performance of speculative vector operations
US20150143076A1 (en) 2013-11-15 2015-05-21 Qualcomm Incorporated VECTOR PROCESSING ENGINES (VPEs) EMPLOYING DESPREADING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS AND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT DESPREADING OF SPREAD-SPECTRUM SEQUENCES, AND RELATED VECTOR PROCESSING INSTRUCTIONS, SYSTEMS, AND METHODS
US9355061B2 (en) * 2014-01-28 2016-05-31 Arm Limited Data processing apparatus and method for performing scan operations
CN103995688B (zh) * 2014-05-30 2016-10-12 广东顺德中山大学卡内基梅隆大学国际联合研究院 一种基于标签的无序矢量归约电路
US9851970B2 (en) * 2014-12-23 2017-12-26 Intel Corporation Method and apparatus for performing reduction operations on a set of vector elements
US10192162B2 (en) * 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US9537530B1 (en) * 2015-06-26 2017-01-03 Intel Corporation Transceiver device and method of processing signals
US10146535B2 (en) * 2016-10-20 2018-12-04 Intel Corporatoin Systems, apparatuses, and methods for chained fused multiply add
US9959247B1 (en) * 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101005718B1 (ko) 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛

Also Published As

Publication number Publication date
KR20210060665A (ko) 2021-05-26
US20180285316A1 (en) 2018-10-04
CN111142937B (zh) 2023-11-24
US20240168914A1 (en) 2024-05-23
KR102471597B1 (ko) 2022-11-25
US10108581B1 (en) 2018-10-23
JP2022095817A (ja) 2022-06-28
TW202318227A (zh) 2023-05-01
KR20220003666A (ko) 2022-01-10
TWI673648B (zh) 2019-10-01
US20190012294A1 (en) 2019-01-10
KR20190092561A (ko) 2019-08-07
EP4086760B1 (en) 2024-03-20
EP3552094B1 (en) 2022-06-29
HK1259157A1 (zh) 2019-11-29
CN108694055A (zh) 2018-10-23
US20200334198A1 (en) 2020-10-22
TW202144999A (zh) 2021-12-01
TW201837703A (zh) 2018-10-16
TWI828502B (zh) 2024-01-01
US20210318983A1 (en) 2021-10-14
US10706007B2 (en) 2020-07-07
JP2023085414A (ja) 2023-06-20
TW201947393A (zh) 2019-12-16
FI4086760T3 (fi) 2024-06-17
WO2018186918A1 (en) 2018-10-11
CN108694055B (zh) 2019-12-24
JP7485820B2 (ja) 2024-05-16
JP2020513120A (ja) 2020-04-30
DK4086760T3 (da) 2024-06-17
JP7055809B2 (ja) 2022-04-18
US11940946B2 (en) 2024-03-26
TWI738042B (zh) 2021-09-01
TWI791262B (zh) 2023-02-01
CN111142937A (zh) 2020-05-12
DK3552094T3 (da) 2022-09-19
EP4086760A1 (en) 2022-11-09
US11061854B2 (en) 2021-07-13
JP7256914B2 (ja) 2023-04-12
EP3552094A1 (en) 2019-10-16
KR102256109B1 (ko) 2021-05-24

Similar Documents

Publication Publication Date Title
KR102347374B1 (ko) 벡터 감소 프로세서
US12014272B2 (en) Vector computation unit in a neural network processor
US11049016B2 (en) Neural network processor
US10083395B2 (en) Batch processing in a neural network processor
TW202429313A (zh) 矩陣向量處理系統及用於執行向量縮減之方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant