KR20220129107A - 행렬 곱셈기 - Google Patents

행렬 곱셈기 Download PDF

Info

Publication number
KR20220129107A
KR20220129107A KR1020227031367A KR20227031367A KR20220129107A KR 20220129107 A KR20220129107 A KR 20220129107A KR 1020227031367 A KR1020227031367 A KR 1020227031367A KR 20227031367 A KR20227031367 A KR 20227031367A KR 20220129107 A KR20220129107 A KR 20220129107A
Authority
KR
South Korea
Prior art keywords
matrix
memory
sub
block
rows
Prior art date
Application number
KR1020227031367A
Other languages
English (en)
Other versions
KR102492477B1 (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 KR20220129107A publication Critical patent/KR20220129107A/ko
Application granted granted Critical
Publication of KR102492477B1 publication Critical patent/KR102492477B1/ko

Links

Images

Classifications

    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Holo Graphy (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Steroid Compounds (AREA)

Abstract

본 발명의 실시예들은 2개의 행렬을 계산을 위한 블록들로 분할하기 위한, 행렬 곱셈기를 개시하고, 데이터 컴퓨팅 기술들의 분야에 관한 것이다. 이 행렬 곱셈기는: 제1 메모리, 제2 메모리, 연산 회로, 및 제어기를 포함하고, 여기서 연산 회로, 제1 메모리, 및 제2 메모리는 버스를 이용하여 데이터 통신을 수행할 수 있고; 상기 제어기는, 미리 설정된 프로그램 또는 명령에 따라, 제1 행렬 및 제2 행렬을 블록들로 분할되도록 제어하고, 상기 제어기의 블록 분할 결과들에 기초하여 상기 제1 메모리 및 상기 제2 메모리 내의 대응하는 블록들에 대한 곱셈 연산을 수행하도록 상기 연산 회로를 제어하도록 구성된다. 이 행렬 곱셈기는 2개의 행렬에 대한 곱셈 연산을 수행하도록 구성될 수 있다.

Description

행렬 곱셈기{MATRIX MULTIPLIER}
본 발명은 컴퓨팅 기술 분야에 관한 것으로, 특히, 행렬 곱셈기에 관한 것이다.
현재, 2개의 행렬 A 및 B의 곱은 다음 2가지 방식 중 어느 하나로 계산될 수 있다.
방식 1: 벡터 프로세서를 이용하여 계산이 수행된다.
C = A * B이고 벡터 프로세서에 의해 동시에 계산될 수 있는 원소들의 수량이 M인 것으로 가정된다. 도 1을 참조하면, 벡터 프로세서는 행렬 A의 i 행 내의 벡터(원소 Ai1, Ai2, ..., Ai (M - 1), 및 AiM를 포함함)를 소스 레지스터 Reg0 내로 로딩하고, 그 후 행렬 B의 j 열 내의 벡터(원소 Bj1, Bj2, ..., Bj (M - 1), 및 BjM를 포함함)를 레지스터 Reg1 내로 로딩하여, Reg0 및 Reg1에 대응하는 원소들 간의 곱셈이 구현될 수 있다. 최종적으로, 덧셈기 트리(adder tree)를 이용하여 누산 연산이 완성되고, 계산을 통해 행렬 C의 i 행 및 j 열 내의 데이터 Cij가 획득되고, 복수 회 계산을 수행함으로써 행렬 C가 획득될 수 있다.
방식 2: 계산 속도를 더 증가시키기 위해, 2차원 계산 어레이를 이용하여 행렬들의 곱셈 연산이 완성될 수 있다.
예를 들어, 2차원 계산 어레이는 N * N 시스톨릭 어레이(systolic array)일 수 있다. 방식 1에서는, 2개의 N * N 행렬의 곱셈 연산을 완성하기 위해 N^3회의 곱셈 연산이 요구된다. 벡터 프로세서는 각각의 클록 사이클에서 M개의 원소 사이의 곱셈을 계산할 수 있기 때문에, 1회의 곱셈 연산을 완성하기 위해 요구되는 지속기간은 N^3/M개의 클록 사이클이다. 방식 2에서는, 2개의 N * N 행렬의 곱셈 연산을 완성하기 위해 N^3회의 곱셈 연산이 요구된다. 시스톨릭 어레이는 N^2개의 연산 유닛을 갖기 때문에, 1개의 행렬 연산을 완성하기 위해 요구되는 지속기간은 N^3/N^2 = N개의 클록 사이클이다. 방식 1 및 방식 2 양쪽 모두에서, N * N 행렬들의 곱셈 연산을 완성하는 데 긴 시간이 걸리고, 이는 상대적으로 고정되고 융통성 없는 계산 크기를 야기한다.
본 발명의 실시예들은, 행렬 곱셈 동안 융통성 없는 계산 및 저효율의 문제를 해결하기 위한, 행렬 곱셈기 및 관련 디바이스를 제공한다.
제1 방면에 따르면, 본 발명의 실시예는 행렬 곱셈기를 제공하고, 상기 행렬 곱셈기는:
제1 행렬을 저장하도록 구성된 제1 메모리 - 상기 제1 행렬은 M * K 행렬임 -;
제2 행렬을 저장하도록 구성된 제2 메모리 - 상기 제2 행렬은 K * N 행렬임 -;
상기 제1 메모리 및 상기 제2 메모리에 연결된 연산 회로 - 상기 연산 회로는 X개의 행 및 Y개의 열의 연산 유닛들을 포함하고, 각각의 연산 유닛은 벡터 곱셈 회로 및 덧셈 회로를 포함하고, 상기 벡터 곱셈 회로는: 상기 제1 메모리에 의해 송신된 행 벡터 데이터 및 상기 제2 메모리에 의해 송신된 열 벡터 데이터를 수신하고, 상기 2개의 벡터를 곱하도록 구성되고; 상기 덧셈 회로는: 상기 2개의 벡터를 곱하는 것에 의해 획득된 결과들을 더하고, 동일한 연산 유닛의 계산 결과들을 누산하여, 각각의 연산 유닛의 연산 결과를 획득하도록 구성됨 -; 및
상기 연산 회로에 연결된 제어기를 포함할 수 있고, 상기 제어기는 이하의 동작들:
상기 제1 행렬을 그 크기가 X * L인 서브-블록의 단위의 블록들로 분할하여, 동일한 크기의 S x R개의 서브-블록을 획득하는 동작 - 여기서 상기 S x R개의 서브-블록의 s 행 및 r 열 내의 서브-블록은 Asr로 표시되고, s = (1, 2, 3, ..., 및 S)이고, r = (1, 2, 3, ..., 및 R)임 -; 및
상기 제2 행렬을 그 크기가 L * Y인 서브-블록의 단위의 블록들로 분할하여, 동일한 크기를 갖는 R x T개의 서브-블록을 획득하는 동작 - 여기서 상기 R x T개의 서브-블록의 r 행 및 t 열 내의 서브-블록은 Brt로 표시되고, r = (1, 2, 3, ..., 및 R)이고, t = (1, 2, 3, ..., 및 T)임 - 을 수행하도록 구성되고; 여기서
상기 제어기는 이하의 동작:
임의의 서브-블록 Asr의 X개의 행 벡터 중의 x 행 및 대응하는 서브-블록 Brt의 Y개의 열 벡터 중의 y 열을 X개의 행 및 Y개의 열의 연산 유닛들 중의 x 행 및 y 열 내의 연산 유닛에 입력하여, 연산을 수행하는 동작을 수행하도록 추가로 구성되고, 여기서 x = (1, 2, 3, ..., 및 X), y = (1, 2, 3, ..., 및 Y)이고, 상기 임의의 서브-블록 Asr 중의 r 및 상기 대응하는 서브-블록 Brt 중의 r은 동등한 값을 갖는다.
본 발명의 실시예는 행렬 곱셈기를 제공하고, 여기서 상기 행렬 곱셈기는 제어기를 이용하여 행렬 곱셈 블록 분할 방법, 즉, MNK 프랙탈(fractal)을 완성하고; 상기 행렬 곱셈기(60) 내의 내부 제어기(604)의 제어 로직을 이용하여, 큰 행렬을 곱셈을 위한 단위 행렬들(구체적으로, X * L x L * Y 행렬)로 분할한다. 상기 제어기(604)의 제어 로직은 각각의 클록 사이클에서 연산 회로(603)에 단위 행렬 곱셈 임무를 송신하여, 데이터가 파이프라인 방식으로 실행되고, X개의 행 및 Y개의 열의 연산 유닛들이 최대 부하 상태에서 동작하도록 한다. 행렬 곱셈의 효율이 증가되고, 신경망 알고리즘을 상당히 개선하는 응용 효과가 달성된다. 본 발명의 이 실시예에서 제공되는 행렬 곱셈기는 합성곱 신경망(convolutional neural network)에서의 합성곱 연산 및 FC 연산을 수행할 수 있다.
가능한 구현에서, 상기 제어기는 이하의 동작:
상기 임의의 서브-블록 Asr의 상기 X개의 행 벡터 중의 상기 x 행 및 상기 대응하는 서브-블록 Brt의 상기 Y개의 열 벡터 중의 상기 y 열을 동일한 클록 사이클에서 병행하여 X개의 행 및 Y개의 열의 연산 유닛들 중의 x 행 및 y 열 내의 상기 연산 유닛에 입력하여, 상기 연산을 수행하는 동작을 수행하도록 구체적으로 구성된다.
가능한 구현에서, 상기 제어기는 상기 임의의 서브-블록 Asr의 행 벡터들을, x 행 번호들의 오름차순으로, X개의 행 및 Y개의 열의 연산 유닛들에 대응하는 x 행에 연속적으로 들어가도록 제어하도록 추가로 구성되고, 여기서 인접한 행 벡터들이 동일한 열 및 상이한 행들 내의 연산 유닛들에 들어가는 시각들 간의 차이는 1개의 클록 사이클이고; 상기 제어기는 동시에 상기 대응하는 서브-블록 Brt의 열 벡터들을, y 열 번호들의 오름차순으로, X개의 행 및 Y개의 열의 연산 유닛들에 대응하는 y 열에 연속적으로 들어가도록 제어하도록 추가로 구성되고, 여기서 인접한 열 벡터들이 동일한 행 및 상이한 열들 내의 연산 유닛들에 들어가는 시각들 간의 차이는 1개의 클록 사이클이다.
가능한 구현에서, 상기 제어기는:
적어도 2개의 연속적인 서브-블록 곱셈 계산 사이클에서 s 및 r의 값들은 변경되지 않은 채로 유지되고 t의 값은 변경되도록 제어하여, 상기 제1 메모리가 상기 적어도 2개의 연속적인 서브-블록 곱셈 계산 사이클 내에서 동일한 서브-블록 Asr을 재사용하도록 추가로 구성되고, 여기서 상기 서브-블록 곱셈 계산 사이클은 1개의 서브-블록 Asr 및 대응하는 서브-블록 Brt에 대한 행렬 곱셈 연산을 완성하기 위해 X개의 행 및 Y개의 열의 연산 유닛들에 의해 사용되는 시간이다.
가능한 구현에서, 상기 행렬 곱셈기는 상기 연산 회로에 연결된 제3 메모리를 추가로 포함하고;
상기 제어기는 상기 벡터 곱셈 회로 및 상기 덧셈 회로의 연산 결과들을 상기 제3 메모리에 저장하도록 X개의 행 및 Y개의 열의 상기 연산 유닛들을 제어하도록 구성된다.
가능한 구현에서, 상기 행렬 곱셈기는: 상기 제1 메모리 및 상기 제2 메모리에 연결된 제4 메모리, 및 상기 제3 메모리에 연결된 제5 메모리를 추가로 포함하고;
상기 제어기는: 상기 제1 행렬과 상기 제2 행렬의 곱셈 연산을 수행하기 전에,
상기 제1 행렬 및 상기 제2 행렬의 데이터 소스들이 상기 제4 메모리로부터 상기 제1 메모리 및 상기 제2 메모리로 각각 이동되고, 상기 계산 결과들이 상기 제3 메모리로부터 상기 제5 메모리로 이동되도록 제어하도록 추가로 구성된다.
가능한 구현에서, 상기 벡터 곱셈 회로는 L개의 곱셈기를 포함하고; 상기 덧셈 회로는 입력 개수가 L + 1인 덧셈기 트리를 포함한다.
가능한 구현에서, 상기 제1 메모리, 상기 제2 메모리, 상기 연산 회로, 및 상기 제어기는 버스 인터페이스 유닛을 이용하여 연결된다.
가능한 구현에서,
Figure pat00001
, 및
Figure pat00002
이고; M%X≠0일 때, 제1 행렬의 (M + 1) 행 내지 (S * X - M) 행에 대해 계산이 수행되지 않고, 결과의 값에 0이 할당되고; K%Y≠0일 때, 제1 행렬의 (K + 1) 열 내지 (R * Y - K) 열에 대해 연산이 수행되지 않고, 결과의 값에 0이 할당된다;
가능한 구현에서,
Figure pat00003
, 및
Figure pat00004
이고; K%Y≠0일 때, 제1 행렬의 (K + 1) 열 내지 (R * Y - K) 열에 대해 연산이 수행되지 않고, 결과의 값에 0이 할당되고; N%X≠0일 때, 제1 행렬의 (N + 1) 행 내지 (T * X - N) 행에 대해 계산이 수행되지 않고, 결과의 값에 0이 할당된다.
가능한 구현에서, 상기 행렬 곱셈기는 직접 메모리 액세스 유닛을 추가로 포함하고, 여기서 상기 직접 메모리 액세스 유닛은: 상기 제1 행렬을 상기 제1 메모리로 이동시키기 전에 상기 제1 행렬에 대해 행렬 전치 연산을 수행하거나, 상기 제2 행렬을 상기 제2 메모리로 이동시키기 전에 상기 제2 행렬에 대해 행렬 전치 연산을 수행하도록 구성된다.
가능한 구현에서, 상기 제어기는 상기 제1 행렬 내의 임의의 서브-블록을 행 형식으로 상기 제1 메모리에 저장되도록 제어하거나, 상기 제2 행렬 내의 임의의 서브-블록을 행 형식으로 상기 제2 메모리에 저장되도록 제어한다. 이러한 방식으로, 서브-블록은 신속하게 판독될 수 있고, 서브-블록은 융통성 있게 그리고 신속하게 전치된다.
제2 방면에 따르면, 본 출원은 전자 디바이스를 제공하고, 여기서 상기 전자 디바이스는:
상기 제1 방면의 임의의 구현에서 제공되는 보안 요소 및 칩에 결합된 개별 디바이스를 포함할 수 있다.
제3 방면에 따르면, 본 출원은 시스템 온 칩을 제공하고, 여기서 상기 시스템 온 칩은 제1 방면의 임의의 구현에서 제공되는 칩을 포함한다. 시스템 온 칩은 칩을 포함할 수 있거나, 또는 칩 및 다른 개별 디바이스를 포함할 수 있다.
본 발명의 실시예들 또는 배경기술에서의 기술적 해결책들을 더 명확히 설명하기 위해, 이하에서는 본 발명의 실시예들 및 배경기술을 설명하기 위해 요구되는 첨부 도면들을 간단히 설명한다.
도 1은 종래 기술에서의 2개의 행렬의 곱을 계산하는 프로세스의 개략도이다.
도 2는 종래 기술에서의 합성곱 커널(convolution kernel)을 가중치 행렬로 변환하는 개략도이다.
도 3은 종래 기술에서의 입력 데이터를 입력 행렬로 변환하는 개략도이다.
도 4는 종래 기술에서의 2개의 행렬에 대한 곱셈 연산을 수행하기 위한 방법의 개략도이다.
도 5는 종래 기술에서의 TPU 시스톨릭 어레이의 개략도이다.
도 6은 본 발명의 실시예에 따른 행렬 곱셈 가속기의 구조도이다.
도 7은 본 발명의 실시예에 따른 연산 유닛(6030)의 구조도이다.
도 8은 본 발명의 실시예에 따른 행렬을 블록들로 분할하는 개략도이다.
도 9는 본 발명의 실시예에 따른 특정 연산 회로(603)에서의 배선의 개략도이다.
도 10은 본 발명의 실시예에 따른 특정 연산 회로(603)에서의 다른 배선의 개략도이다.
도 11은 본 발명의 실시예에 따른 그 base가 4인 행렬 곱셈기의 입력 포맷을 도시한다.
도 12는 M = 2, N = 2, 및 K = 2일 때 시각 T = 0에서의 행렬 곱셈기의 파이프라인 실행의 개략도이다.
도 13은 M = 2, N = 2, 및 K = 2일 때 시각 T = 1에서의 행렬 곱셈기의 파이프라인 실행의 개략도이다.
도 14는 M = 2, N = 2, 및 K = 2일 때 시각 T = 7에서의 행렬 곱셈기의 파이프라인 실행의 개략도이다.
도 15는 M = 2, N = 2, 및 K = 2일 때 시각 T = 11에서의 행렬 곱셈기의 파이프라인 실행의 개략도이다.
도 16은 본 발명의 실시예에 따른 다른 행렬 곱셈기의 구조도이다.
도 17은 본 발명의 실시예에 따른 또 다른 행렬 곱셈기의 구조도이다.
도 18은 본 발명의 실시예에 따른 명령 비동기 실행 순서의 개략도이다.
이하에서는 본 발명의 실시예들을 본 발명의 실시예들에서의 첨부 도면들을 참조하여 설명한다.
본 출원의 본 명세서, 청구항들, 및 첨부 도면들에서, "제1", "제2", "제3", "제4" 등의 용어들은 상이한 대상들을 구별하기 위해 의도된 것으로 특정 순서를 지시하는 것은 아니다. 또한, 용어들 "포함하는", "구비하는", 또는 이들의 임의의 다른 변형어는 비배타적 포함(non-exclusive inclusion)을 커버하기 위해 의도된 것이다. 예를 들어, 일련의 단계들 또는 유닛들을 포함하는 프로세스, 방법, 시스템, 제품, 또는 디바이스는 열거된 단계들 또는 유닛들로 제한되지 않고, 열거되지 않은 단계 또는 유닛을 옵션으로 추가로 포함하거나, 프로세스, 방법, 제품, 또는 디바이스의 다른 내재된 단계 또는 유닛을 옵션으로 추가로 포함한다.
본 명세서에서 "실시예"를 언급하는 것은 해당 실시예를 참조하여 설명된 특정한 특성, 구조, 또는 특징이 본 출원의 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 본 명세서에서의 다양한 위치들에 제시된 구는 반드시 동일한 실시예를 지시하는 것은 아닐 수 있고, 다른 실시예로부터 배타적인 독립적인 또는 옵션의 실시예가 아니다. 본 명세서에 설명된 실시예들이 다른 실시예와 조합될 수 있다는 것이 본 기술분야의 통상의 기술자에 의해 명시적으로 그리고 암시적으로 이해된다.
본 명세서에서 사용된 "컴포넌트", "모듈 ", 및 "시스템"과 같은 용어들은 컴퓨터 관련 엔티티들, 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 지시하기 위해 사용된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 객체, 실행가능 파일, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이로 제한되지는 않는다. 도면들에 도시된 바와 같이, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 컴퓨팅 디바이스 양쪽 모두가 컴포넌트들일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 스레드 내에 상주할 수 있고, 컴포넌트가 1개의 컴퓨터 상에 위치되고/되거나 2개 이상의 컴퓨터 사이에 분산될 수 있다. 또한, 이들 컴포넌트는 다양한 데이터 구조들을 저장하는 다양한 컴퓨터 판독가능 매체로부터 실행될 수 있다. 예를 들어, 컴포넌트들은 로컬 및/또는 원격 프로세스를 이용하여 그리고, 예를 들어, 하나 이상의 데이터 패킷을 갖는 신호에 따라 통신할 수 있다(예를 들어, 신호를 이용하여 다른 시스템들과 상호작용하는 인터넷과 같은 네트워크에 걸쳐 그리고/또는 로컬 시스템, 분산 시스템 내의 다른 컴포넌트와 상호작용하는 2개의 컴포넌트로부터의 데이터).
다음으로, 해결될 필요가 있는 기술적 문제 및 본 출원에서의 응용 시나리오가 제공된다. 최근에, 이미지 분류, 이미지 인식, 오디오 인식, 및 다른 관련 분야들에서의 합성곱 신경망의 양호한 성능으로 인해, 합성곱 신경망은 학계 및 산업계에서 연구 및 개발 핫스팟이 되었다. 합성곱 신경망은 합성곱 연산 및 완전히 연결된(fully-connected, FC) 연산을 주로 포함한다. 합성곱 연산의 연산량은 통상 망의 전체 연산량의 70%보다 더 많이 차지할 수 있다.
합성곱 연산은 엄밀히 행렬 곱셈 연산과 동등하지 않다. 그러나, 합성곱 연산은 적절한 데이터 조정을 통해 행렬 곱셈 연산으로 변환될 수 있다. 통상 합성곱 신경망에는 복수의 합성곱 커널이 존재한다. 합성곱 커널은 3차원이고 3개의 차원의 데이터를 포함한다. x 및 y 방향들은 데이터의 길이 및 폭을 나타내고, z 방향은 데이터의 깊이로서 간주될 수 있다. 합성곱 커널은 실제로 필터(filter)이고, 주로 이미지로부터 상이한 특징들을 추출하도록 구성된다. 도 2를 참조하면, 합성곱 커널은 실질적으로 일련의 가중치들의 조합이다. K개의 합성곱 커널이 존재하는 것으로 가정된다. K개의 합성곱 커널 중 동일한 위치의 z 방향으로의 N개의 원소가 추출되어, N * K 가중치 행렬(weight matrix)이 획득될 수 있다. 합성곱 커널들은 행렬 곱셈기의 규격(구체적으로, 행렬 곱셈기에 의해 계산될 수 있는 행렬의 행 개수 및 열 개수)에 기초하여 가중치 행렬의 형식으로 행렬 곱셈기의 메모리에 미리 저장될 수 있어, 행렬 곱셈기가 행렬 곱셈 연산을 수행할 때 합성곱 커널들이 호출된다. 본 발명의 실시예들에서, "*"는 "곱셈"을 나타낸다.
도 3을 참조하면, 합성곱 커널의 폭(stride)(본 발명의 이 실시예에서는, 폭은 1임)에 기초하여, 행렬 곱셈기는 z 방향으로 M개의 입력 포인트의 N개의 데이터, 즉, 총 M * N개의 데이터를 추출할 수 있다. 입력 행렬(input matrix)이 형성될 수 있다. 행렬 곱셈기는 입력 행렬 및 가중치 행렬에 대한 곱셈 연산을 수행할 필요가 있다.
FC 연산은 실질적으로 벡터와 행렬의 곱셈 연산이다. FC 연산의 입력은 벡터 9216이고, FC 연산은 4096개의 포인트를 출력할 필요가 있다. 이 경우, FC 연산에 의해 출력되는 포인트를 획득하기 위해, 벡터 9126 및 9216개의 가중치에 대해 포인트 곱셈 연산이 수행될 필요가 있고; 모든 4096개의 포인트를 획득하기 위해, 벡터 9216 및 9216x4096개의 가중치에 대해 포인트 곱셈 연산이 수행될 필요가 있다.
도 4는 행렬 C = A * B의 계산 공식을 도시하고, 여기서 A는 M * K 크기의 행렬을 나타내고, B는 K * N 크기의 행렬을 나타낸다. 본 발명의 이 실시예에서, M, N, 및 K 각각은 양의 정수이다. 계산을 통해 행렬 C 내의 1개의 데이터를 획득하기 위해, 행렬 A 내의 1개의 행 벡터 내의 데이터 및 행렬 B 내의 1개의 열 벡터 내의 대응하는 데이터에 대해 포인트 곱셈 연산이 수행될 필요가 있고, 그 후 누산이 수행된다. 다시 말해서, 계산을 통해 행렬 C 내의 1개의 데이터를 획득하기 위해, N회의 곱셈 연산이 수행될 필요가 있다. 이 경우, 계산을 통해 행렬 C를 획득하기 위해, M * N * K회의 곱셈 연산이 수행될 필요가 있다.
종래 기술에서, 시스톨릭 어레이 계산 방식, 예를 들어, 기계 학습을 위해 Google에 의해 주문제작된 전용 칩(ASIC) Google TPUv1은 시스톨릭 어레이 설계를 이용하여 256x256 2-D MAC 어레이를 이용하여 행렬 곱셈 및 합성곱 연산을 최적화한다(도 5에 도시된 바와 같음). 도면에서의 각각의 셀은 1개의 곱셈기이다. 곱셈기가 2개의 행렬 내의 원소들을 곱한 후에, 계산을 통해 획득된 결과(Partial Sum, 즉, 행렬 곱셈에서의 중간 결과)가 도면의 하부 부분에서의 누산 유닛으로 송신되고, 이전의 관련 누산 값과 누산된다. 이러한 방식으로, 데이터가 최대 부하 상태에서 실행될 때, 시스톨릭 어레이는 각각의 클록 사이클에서 1개의 행렬의 크기의 중간 값을 누산한다. 전술한 해결책에서는, 낮은 계산 밀도 때문에 행렬 곱셈 계산 효율이 비교적 낮다. 또한, 합성곱 연산 동안, 시스톨릭 어레이의 계산 크기가 상대적으로 고정되기 때문에, 시스톨릭 어레이의 연산 효율을 증가시키기 위해, 입력 및 가중치가 많은 형식으로 변환될 필요가 있어서, 융통성 없는 연산을 야기한다. 더욱이, 행렬 곱셈 동안, 파이프라인 실행 효과를 달성하기 위해 데이터가 큰 크기를 가질 필요가 있다. 예를 들어, 작은 행렬에서의 256x256 2-D 시스톨릭 어레이의 계산 효율은 높지 않다.
또한, 관련 특허는 M * K * N 3-D MAC 어레이를 구현한다. TPUv1 및 NVDLA 2-D MAC 어레이 해결책들과 비교하여, 행렬 곱셈 계산 효율은 상당히 증가된다. 본 발명은 새로운 하드웨어 가속기 아키텍처가 단일 클록 사이클에서 [N x N] 행렬 곱셈 연산을 완성할 수 있도록 새로운 하드웨어 가속기 아키텍처를 제공한다. 이 하드웨어 아키텍처에서, 포함된 처리 엔진들(PE)의 개수는 N x N x N이고, 포함된 덧셈기 트리들의 개수는 N x N이다. 또한, 큰 행렬을 더 작은 행렬들로 분할하기 위한 계산 방법도 제공된다. 그러나, 전술한 해결책에서는, 행렬 크기가 하드웨어에 의해 지원되는 크기가 되도록 보완될 필요가 있다. 이는 데이터 대역폭을 낭비하고 계산 효율을 감소시킨다. 행렬이 큰 행렬 및 작은 행렬로 인위적으로 분할된다면, 소프트웨어 프로그래밍이 복잡하고, 상대적인 소프트웨어 프로그래밍 양도 크게 증가된다. 또한, 가속기는 행렬 내의 원소들을 단방향 순환 방식으로 로딩할 수 있을 뿐이고, 소프트웨어는 행렬을 독립적으로 분할할 필요가 있기 때문에, 계산 모드는 단일하고 융통성이 없다. 더욱이, 행렬 A 및 행렬 B의 메모리들이 모든 데이터를 수용할 수 없으면, 반복된 판독이 발생한다. 따라서, 버퍼 크기는 서비스 알고리즘에 비교적 강하게 의존하는데, 구체적으로, 가속기는 단단히 결합된 온칩 메모리에 크게 의존한다.
따라서, 본 출원에서 해결되어야 할 기술적 문제는 어떻게 효율적이고, 융통성 있고, 저 에너지 방식으로 하드웨어를 이용하여 합성곱 신경망에서 대량의 데이터 연산들을 수행하는가이다.
본 발명의 이 실시예에서 제공되는 행렬 곱셈기는 기계 학습, 심층 학습, 및 합성곱 신경망과 같은 분야들에 적용될 수 있거나, 디지털 이미지 처리 및 디지털 신호 처리와 같은 분야들에 적용될 수 있거나, 또는 행렬 곱셈 연산과 관련된 다른 분야들에 적용될 수 있다는 것을 이해할 수 있다.
전술한 분석에 기초하여, 본 출원은 본 출원에서 제공되는 기술적 문제를 구체적으로 분석하고 해결하기 위한 행렬 곱셈 가속기를 제공한다. 도 6은 본 발명의 실시예에 따른 행렬 곱셈기(60)의 구조도이다. 도 6에 도시된 바와 같이, 이 행렬 곱셈기(60)는 제1 메모리(601), 제2 메모리(602), 연산 회로(603), 및 제어기(604)를 포함한다. 연산 회로(603)는 버스를 이용하여 제1 메모리(601), 제2 메모리(602), 및 제어기(604)와 데이터 통신을 수행할 수 있다. 연산 회로(603)는: 제1 메모리(601) 및 제2 메모리(602)로부터 행렬 데이터를 추출하고, 벡터 곱셈 및 덧셈 연산을 수행하도록 구성된다. 제어기(604)는, 미리 설정된 프로그램 또는 명령에 따라, 벡터 연산을 완성하도록 연산 회로(603)를 제어하도록 구성된다. 제1 메모리(601)는 제1 행렬을 저장하도록 구성된다.
제1 행렬은 M * K 행렬이다. 행렬 a가 제1 행렬이면, 제1 행렬 a 내의 i 행 및 j 열 내의 원소는 aij로 표시될 수 있고, 여기서 i = (1, 2, 3, ..., 및 M)이고, j = (1, 2, 3, ..., 및 K)이다.
본 발명의 이 실시예에서 언급된 제1 메모리(601) 및 아래에 언급되는 제2 메모리(602), 제3 메모리(605), 및 관련 행렬 곱셈기의 내부 메모리는 각각 레지스터, 랜덤 액세스 메모리(random access memory, 약칭하여 RAM), 정적 랜덤 액세스 메모리, 플래시 메모리, 또는 다른 판독가능하고 기록가능한 메모리일 수 있다. 본 출원에서, 제1 행렬, 제2 행렬, 및 연산 결과의 데이터 유형들은 각각 int 8, fp16, 또는 fp32와 같은 유형일 수 있다.
제2 메모리(602)는 제2 행렬을 저장하도록 구성되고, 여기서 제2 행렬은 K * N 행렬이다. 행렬 b가 제2 행렬이면, 제2 행렬 b 내의 j 행 및 g 열 내의 원소는 Bjg로 표시될 수 있고, 여기서 j = (1, 2, 3, ..., 및 K)이고, g = (1, 2, 3, ..., 및 N)이다.
여기서, M, K, N, X, 및 Y 각각은 0보다 큰 정수이다. M, N, 및 K 중 임의의 2개의 파라미터는 동등하거나 동등하지 않을 수 있다. 대안적으로, M, N, 및 K는 동등하거나 동등하지 않을 수 있다. X 및 Y는 동등하거나 동등하지 않을 수 있다. 이는 본 출원에서 구체적으로 제한되지 않는다.
연산 회로(603)는 X개의 행 및 Y개의 열의 연산 유닛들(6030)(곱셈-누산 유닛들(MAC)이라고 지칭될 수 있음)을 포함할 수 있다. 각각의 연산 유닛은 독립적으로 벡터 곱셈 연산을 수행할 수 있다. 도 6에서는, 연산 회로(603)가 4 * 4개의 연산 유닛(6030)을 포함하는 예가 도면 제작에 사용되는데, 즉, X = 4 이고, Y = 4이다. 연산 유닛(6030)은 제1 메모리(601)에 의해 송신된 행 벡터 및 제2 메모리(602)에 의해 송신된 열 벡터를 수신하고, 행 벡터 및 열 벡터에 대해 벡터 곱셈 연산을 수행하기 위해 각각 사용되는 2개의 입력을 구비한다. 구체적으로, 1개의 연산 회로(6030)는 벡터 곱셈 회로 및 덧셈 회로를 포함하고, 여기서 벡터 곱셈 회로는 제1 메모리(601)에 의해 송신된 행 벡터 데이터 및 제2 메모리(602)에 의해 송신된 열 벡터 데이터를 수신하고, 2개의 벡터를 곱하도록 구성되고; 덧셈 회로는: 상기 2개의 벡터를 곱하는 것에 의해 획득된 결과들을 더하고, 동일한 연산 유닛의 계산 결과들을 누산하여, 연산 유닛(6030)의 연산 결과를 획득하도록 구성된다.
도 7은 연산 유닛(6030)의 구조도이다. 가능한 구현에서, 벡터 곱셈 회로는 L(예를 들어, L = 4)개의 곱셈기를 포함한다. 덧셈 회로는 입력 개수가 L + 1인 덧셈기 트리를 포함하는데, 구체적으로, 덧셈기 트리는 L개의 곱셈 결과를 누산하고 상이한 클록 사이클들에의 연산 유닛의 계산 결과들을 누산하도록 구성된다. 옵션으로, 행렬 곱셈기(60)는 제3 메모리(605)를 추가로 포함하고, 제3 메모리(605)는 벡터 곱셈 회로 및 덧셈 회로의 연산 결과들을 저장하고, 상이한 클록 사이클들에서의 연산 결과들을 저장하도록 구성된다. 본 출원에서의 제3 메모리(605)는 X * Y개의 저장 유닛을 포함할 수 있고, 각각의 저장 유닛은 대응하는 연산 유닛이 연산을 수행할 수 있을 때마다 획득된 연산 결과를 저장하도록 구성된다는 것을 이해할 수 있다. 대안적으로, 각각의 연산 유닛은 제3 메모리(605) 내의 지정된 저장 공간에 대응하고, 저장 공간은 연산 유닛이 연산을 수행할 때마다 획득된 연산 결과를 저장하기 위해 사용된다.
제어기(604)는 제1 행렬과 제2 행렬의 곱을 계산하기 위해 이하의 동작을 수행할 수 있다:
제어기(604)는 제1 행렬을 그 크기가 X * L인 서브-블록의 단위의 블록들로 분할하여, 동일한 크기의 S x R개의 서브-블록을 획득한다 - 여기서 S x R개의 서브-블록의 s 행 및 r 열 내의 서브-블록은 Asr로 표시되고, s = (1, 2, 3, ..., 및 S)이고, r = (1, 2, 3, ..., 및 R)이다. 즉, 본 출원에서의 행렬 곱셈기(60)에 대해, 행렬 곱셈기(60)에 포함된 X개의 행 및 Y개의 열의 행렬 데이터는 생산 또는 출하 후에 고정되고, 대응하는 곱셈 회로 내의 곱셈기의 개수 L도 고정된다. 따라서, 행렬 연산 동안, 제1 행렬 및 제2 행렬은 프랙탈일 필요가 있는데, 즉, 블록들로 분할될 필요가 있다. 분할 방식은 X * L 서브-블록을 단위로서 이용하여 제1 행렬을 블록들로 분할하는 것이다. 본 발명의 이 실시예에서, 블록 분할의 목적은 큰 행렬을 행렬 곱셈기의 크기에 부합하는 많은 작은 행렬들로 분할하고, 그 후 특정 순서로 작은 행렬들을 계산하고 관련된 작은 행렬들의 값들을 누산하여, 최종적으로 행렬 곱셈 결과를 획득하는 것이다. 이러한 방식으로, 융통성 있는 계산이 수행되어 후속 재사용 및 멀티-레벨 캐싱을 용이하게 할 수 있고, 계산 효율이 더 증가될 수 있고, 데이터 이동 대역폭 및 에너지 소비가 감소될 수 있다.
제1 행렬은 M * K 행렬이고, 제1 행렬이 정확하게 정수 개수의 X * L 서브-블록들로 분할될 수 없는 경우가 존재할 수 있다는 점에 유의해야 한다. 따라서, M/X 또는 K/L이 정수가 아닐 때, 원소 0을 패딩하는 방식으로 연산이 수행될 수 있다. 대안적으로, 대응하는 위치에서 계산이 수행되지 않고, 결과의 값에 0이 할당된다. 구체적으로,
Figure pat00005
, 및
Figure pat00006
이고; M%X≠0일 때, 제1 행렬의 (M + 1) 행 내지 (S * X - M) 행에 대해 계산이 수행되지 않고, 결과의 값에 0이 할당되고; K%Y≠0일 때, 제1 행렬의 (K + 1) 열 내지 (R * Y - K) 열에 대해 연산이 수행되지 않고, 결과의 값에 0이 할당된다. 다시 말해서, 연산 유닛은 대응하는 행과 열에 대해 실질적인 곱셈 계산을 수행하지 않지만, 처리에 대해 연산이 수행되었지만 결과가 0인 것을 고려한다. 이러한 방식으로, 대응하는 연산 유닛의 판독 및 연산 전력 소비가 감소될 수 있다.
대응하여, 제어기(604)는 제2 행렬을 그 크기가 L * Y인 서브-블록의 단위의 블록들로 분할하여, 동일한 크기의 R x T개의 서브-블록을 획득하고, 여기서 R x T개의 서브-블록의 r 행 및 t 열 내의 서브-블록은 Brt로 표시되고, r = (1, 2, 3, ..., 및 R)이고, t = (1, 2, 3, ..., 및 T)이다. 제어기(604)가 제1 행렬을 연산 회로(603)의 규격에 따라 블록들로 분할되도록 제어한 후에, 제2 행렬도 제1 행렬과 매칭하는 방식으로 대응하여 분할될 필요가 있다; 그렇지 않으면, 행렬 곱셈 계산이 수행될 수 없다.
제2 행렬은 K * N 행렬이고, 제2 행렬이 정확하게 정수 개수의 L * Y 서브-블록들로 분할될 수 없는 경우가 존재할 수 있다는 점에 유의해야 한다. 따라서, K/L 또는 N/Y가 정수가 아닐 때, 원소 0을 패딩하는 방식으로 연산이 수행될 수 있다. 대안적으로, 대응하는 위치에서 계산이 수행되지 않고, 결과의 값에 0이 할당된다. 구체적으로,
Figure pat00007
, 및
Figure pat00008
이고; K%Y≠0일 때, 제1 행렬의 (K + 1) 열 내지 (R * Y - K) 열에 대해 연산이 수행되지 않고, 결과의 값에 0이 할당되고; N%X≠0일 때, 제1 행렬의 (N + 1) 행 내지 (T * X - N) 행에 대해 계산이 수행되지 않고, 결과의 값에 0이 할당된다. 다시 말해서, 연산 유닛은 대응하는 행과 열에 대해 실질적인 곱셈 계산을 수행하지 않지만, 처리에 대해 연산이 수행되었지만 결과가 0인 것을 고려한다. 이러한 방식으로, 대응하는 연산 유닛의 판독 및 연산 전력 소비가 감소될 수 있다.
제1 행렬 및 제2 행렬이 고정된 규격들에 따라 블록들로 개별적으로 분할된 후에, 2개의 행렬은 서브-블록들 사이의 행렬 곱셈 연산을 수행하기 위해 연산 회로(603)에 입력될 수 있다. 구체적인 계산 과정 중에, 제어기(604)는 임의의 서브-블록 Asr의 X개의 행 벡터 중의 x 행 및 대응하는 서브-블록 Brt의 Y개의 열 벡터 중의 y 열을 X개의 행 및 Y개의 열의 연산 유닛들 중의 x 행 및 y 열 내의 연산 유닛에 입력되도록 제어하여, 연산을 수행할 수 있고, 여기서 x = (1, 2, 3, ..., 및 X), y = (1, 2, 3, ..., 및 Y)이고, 상기 임의의 서브-블록 Asr 중의 r 및 상기 대응하는 서브-블록 Brt 중의 r은 동등한 값을 갖는다. 서브-블록 Asr의 행 벡터 및 서브-블록 Brt의 열 벡터가 연산 유닛에 입력되기 전에, 제1 행렬 및 제2 행렬은 블록들, 즉, 프랙탈들로 분할되었다. 따라서, 특정 순서로 서브-블록 Asr 및 대응하는 서브-블록 Brt을 연산 회로(603)에 입력하기 위한 복수의 구현이 존재할 수 있다.
가능한 구현에서, 서브-블록 Asr 및 대응하는 서브-블록 Brt 내의 s 또는 t의 값들의 순서로 연속적으로 연산들이 수행될 수 있다. 도 8에 도시된 바와 같이, 예를 들어, 제1 행렬은 M * K 행렬이고, 제2 행렬은 K * N 행렬이다. M = 12, K = 6, N = 12, X = 4, Y = 4, 및 L = 3인 것으로 가정된다. 제1 행렬 및 제2 행렬이 블록들로 분할된 후에, S = 3, R = 2, 및 T = 3인 것을 알게 된다. 이 경우, 제1 행렬
Figure pat00009
및 제2 행렬
Figure pat00010
가 블록 분할 후에 획득되고, 여기서 A는 X * L 행렬, 즉, 4 * 3 행렬을 나타내고, B 내의 각각의 원소는 실제로 L * Y 행렬, 즉 3 * 4 행렬이다.
Figure pat00011
제1 행렬 및 제2 행렬의 곱셈 연산에서, 제1 행렬 내의 임의의 1개의 서브-블록 Asr, 즉 각각의 서브-블록 Asr 및 제2 행렬 내의 대응하는 서브-블록 Brt에 대해 행렬 곱셈 연산이 수행될 필요가 있다. 특정 순서 및 그 순서에서 행렬 곱셈 계산이 먼저 수행되는 특정 서브-블록을 결정하기 위한 복수의 구현이 존재할 수 있다.
방식 1: 행렬 곱셈 순서에서, 예를 들어, 서브-블록들이 서브-블록 A11 및 서브-블록 B11일 수 있다. 연산을 수행하기 위해, 제1 서브-블록 곱셈 계산 사이클(제1 라운드로 이해될 수 있음)에서 A11의 모든 행 벡터들 및 대응하는 B11의 모든 열 벡터들이 입력된다. 제2 서브-블록 곱셈 계산 사이클(제2 라운드로 이해될 수 있음)에서 A12의 모든 행 벡터들 및 대응하는 B21의 모든 열 벡터들에 대해 연산이 수행된다. 이러한 방식으로, 연산 유닛이 누산을 수행한 후에, 결과 행렬 C 내의 1 행 및 1 열 내의 결과 포인트 C11의 값이 획득될 수 있다. 유추에 의해, 결과 행렬 C 내의 모든 위치들의 결과 포인트들이 획득될 수 있다. 실제로,
Figure pat00012
이고, 여기서
Figure pat00013
다시 말해서, C11은 실제로 4 * 4 행렬이다. 따라서, 행렬 계산 규칙에 따르면, 최종적으로 획득된 행렬 C는 M * N 결과 행렬, 즉, 12 * 12 결과 행렬이다.
방식 2: 특정 규칙에 따라 1개의 서브-블록이 재사용된다. 본 발명의 이 실시예는 서브-블록들에 대해 행렬 곱셈 연산을 수행하기 위해 제1 행렬 내의 1개의 서브-블록 Asr과 제2 행렬 내의 대응하는 서브-블록 Brt을 호출하는 서브-블록 재사용 방식을 제공한다. 구체적으로, 제어기(604)는 적어도 2개의 연속적인 서브-블록 곱셈 계산 사이클에서 s 및 r의 값들은 변경되지 않은 채로 유지되고 t의 값은 변경되도록 제어하여, 제1 메모리가 적어도 2개의 연속적인 서브-블록 곱셈 계산 사이클 내에서 동일한 서브-블록 Asr을 재사용하도록 추가로 구성되고, 여기서 서브-블록 곱셈 계산 사이클은 1개의 서브-블록 Asr 및 대응하는 서브-블록 Brt에 대한 행렬 곱셈 연산을 완성하기 위해 X개의 행 및 Y개의 열의 연산 유닛들에 의해 사용되는 시간이다.
예를 들어, M = 12, K = 6, N = 12, X = 4, Y = 4, 및 L = 3인 것으로 가정되는 전술한 실시예에서, 연산을 수행하기 위해, 제1 서브-블록 곱셈 계산 사이클(제1 라운드로 이해될 수 있음)에서 A11의 모든 행 벡터들 및 대응하는 서브-블록 B11의 모든 열 벡터들이 입력된다. 제2 서브-블록 곱셈 계산 사이클(제2 라운드로 이해될 수 있음)에서, s 및 r의 값들은 변경되지 않은 채로 유지되지만, t의 값은 변경될 필요가 있는데, 구체적으로, A11의 모든 행 벡터들 및 다른 대응하는 서브-블록 B12의 모든 열 벡터들에 대해 연산이 수행된다. 옵션으로, 제3 서브-블록 곱셈 계산 사이클(제3 라운드로 이해될 수 있음)에서, A11의 모든 행 벡터들 및 또 다른 대응하는 서브-블록 B13의 모든 열 벡터들에 대해 연산이 수행된다. 이러한 방식으로, 여러 개의 연속적인 서브-블록 곱셈 계산 사이클들에서 제1 메모리 내의 A11이 반복적으로 사용될 수 있어, 판독 및 기입 오버헤드들이 감소되고, 데이터 이동 대역폭이 감소된다.
방식 1 및 방식 2에서, 서브-블록 곱셈 계산 사이클에서 제1 행렬 내의 서브-블록 Asr 및 제2 행렬 내의 대응하는 서브-블록 Brt에 대한 계산 규칙은, 연산을 수행하기 위해, 제1 행렬 내의 임의의 서브-블록 Asr의 X개의 행 벡터 중의 x 행 및 대응하는 서브-블록 Brt의 Y개의 열 벡터 중의 y 열이 X개의 행 및 Y개의 열의 연산 유닛들 중의 x 행 및 y 열 내의 연산 유닛에 입력되는 것이고, 여기서 x = (1, 2, 3, ..., 및 X), y = (1, 2, 3, ..., 및 Y)이고, 상기 임의의 서브-블록 Asr 중의 r 및 상기 대응하는 서브-블록 Brt 중의 r은 동등한 값을 갖는다. 즉, 서브-블록 Asr의 임의의 행 벡터 및 제2 행렬 내의 대응하는 서브-블록 Brt의 임의의 열 벡터가 계산을 위해 X개의 행 및 Y개의 열의 연산 유닛들 내의 지정된 연산 유닛에 입력된다. 예를 들어, A11 내의 제2 행 벡터
Figure pat00014
및 제2 행렬 내의 대응하는 서브-블록 B11 내의 제3 열 벡터
Figure pat00015
가 연산을 위해 X개의 행 및 Y개의 열의 연산 유닛들 2 행 및 3 열에 대응하는 연산 유닛에 입력되고, 기타 등등이다.
도 6에 도시된 연산 회로(603) 내의 연산 유닛들의 배열 방식에 따라, 도 9는 본 발명의 실시예에 따른 특정 연산 회로(603)에서의 배선의 개략도이다.
BUFA는 제1 행렬의 제1 메모리(601)이고, BUFB는 제2 행렬의 제2 메모리(602)이고, BUFC는 각각의 연산 유닛(6030)의 계산 결과를 저장하는 제3 메모리(605)이고, 연산 회로(603)는 X개의 행 및 Y개의 열(X = 4, 및 Y = 4인 것으로 가정함)의 연산 유닛들, 즉, 도면에서 MAC GRP R00C00 내지 MAC GRP R03C03을 포함한다. 또한, 각각의 연산 유닛 MAC GRP는 X * L 행렬의 1개의 행 벡터 및 L * Y 행렬의 1개의 열 벡터에 대한 곱셈 연산을 수행할 수 있다.
본 발명의 이 실시예에서, 연산 회로(603)는 프랙탈 행렬 곱셈 유닛이라고 지칭될 수 있고, 3-D MAC 어레이(MAC Cube) 및 누산기(Accumulator)를 포함하고, 다음과 같이 프랙탈 행렬 곱셈 명령을 실행하도록 구성된다: C = A * B 또는 C = A * B + C, 여기서 A/B/C는 2차원 행렬이다. A의 크기는(M * base) x (K * base)이고, B의 크기는(K * base) x (N * base)이고, C의 크기는 (M * base) x (N * base)이다. Base는 연산 회로(603)의 기본 크기, 즉 X * Y, 예를 들어 8 * 8, 16 * 16 및 32 * 32이다. 전술한 C = A * B 또는 C = A * B + C 계산 연산은 MNK 행렬 곱셈(및 누산)이라고 지칭된다. 실제 실행 과정 중에, 제어기는 특정 순서 조합(위에 언급된 방식 1 또는 방식 2)에서 프랙탈 방식으로 MNK 행렬 곱셈을 완성하기 위해 큰 행렬을 base 크기의 기본 행렬들로 분할되도록 제어한다.
프랙탈 행렬 곱셈 유닛의 특정 아키텍처가 도 7에 도시되어 있다(Base = 4인 것으로 가정함). 예를 들어, 도 7에서, MAC 그룹은 N * N(4 * 4) 곱셈-누산기 그룹이고, N(4)개의 곱셈 유닛 및 입력 개수가 N+1(5)인 누산 트리를 포함한다. 행렬 곱셈 면에서, 곱셈 누산기는 1개의 행과 1개의 열을 곱하고 누산을 수행하는 연산을 수행할 수 있다(즉, 결과 행렬 내의 1개의 원소). 도 9에는, 총 4 x 4개의 곱셈-누산기 그룹이 존재하는데, 즉, 완전한 4 x 4 * 4 x 4 행렬 곱셈 연산이 동시에 계산될 수 있다.
도 9의 배선의 개략도에서, 연산 회로(603)는 동일한 클록 사이클에서 1개의 서브-블록 Asr 및 대응하는 서브-블록 Brt에 대한 행렬 곱셈 계산을 완성하는 데 지원될 수 있다는 것을 이해할 수 있다. 서브-블록 Asr의 모든 X개의 행 벡터 및 대응하는 서브-블록 Brt의 모든 Y개의 열 벡터가 도 9에서의 배선 방식으로 대응하는 BUFA 및 BUFB로부터 동시에 대응하는 연산 유닛(6030)에 도달할 수 있기 때문에, 제어기(604)는 1개의 클록 사이클에서 1개의 서브-블록 Asr 및 대응하는 서브-블록 Brt에 대한 곱셈 계산을 완성하고; 다음 클록 사이클에서, 다른 서브-블록 Asr 및 대응하는 서브-블록 Brt에 대한 곱셈 계산을 완성하거나, 동일한 서브-블록 Asr 및 대응하는 다른 서브-블록 Brt에 대한 행렬 곱셈 계산을 완성하도록 연산 회로(603)를 제어할 수 있다.
도 10은 본 발명의 실시예에 따른 특정 연산 회로(603)에서의 다른 배선의 개략도이다. 도 10에 대응하는 연산 회로(603)에서는, 시스톨릭 어레이 구조가 제공된다. 구체적으로, 제어기(604)는 임의의 서브-블록 Asr의 행 벡터들을, x 행 번호들의 오름차순으로, X개의 행 및 Y개의 열의 연산 유닛들에 대응하는 x 행에 연속적으로 들어가도록 제어하도록 구성되고, 여기서 인접한 행 벡터들이 동일한 열 및 상이한 행들 내의 연산 유닛들에 들어가는 시각들 간의 차이는 1개의 클록 사이클이고; 상기 제어기(604)는 동시에 상기 대응하는 서브-블록 Brt의 열 벡터들을, y 열 번호들의 오름차순으로, X개의 행 및 Y개의 열의 연산 유닛들에 대응하는 y 열에 연속적으로 들어가도록 제어하도록 추가로 구성되고, 여기서 인접한 열 벡터들이 동일한 행 및 상이한 열들 내의 연산 유닛들에 들어가는 시각들 간의 차이는 1개의 클록 사이클이다.
즉, 각각의 연산 유닛(6030)(곱셈 누산기)을 충분히 이용하기 위해, 본 발명의 이 실시예에서의 프랙탈 행렬 곱셈 유닛은 시스톨릭 어레이 구조를 가질 수 있다. TPUv1 구조와의 차이는 각각의 시스톨릭 송신에서의 데이터의 개수가 L이라는 점에 있다(반면 TPUv1에서의 데이터의 개수는 1이다). 따라서, 데이터 연산들의 병행의 정도는 TPUv1에서의 시스톨릭 어레이들보다 더 크다.
시스톨릭 어레이 아키텍처에 기초하여, 도 10에 대응하는 배선 구조에서, BUFA/B는 각각 제1 행렬/제2 행렬을 버퍼링하도록 구성된 메모리이다. 도 10에서, 제1 행렬 버퍼(BUFA)는 제1 행렬 내의 단위 행렬을 X개의 행으로 분할하고, 각각의 클록 사이클에서 동일한 행 내의 L개의 원소를 시스톨릭 어레이 내의 연산 유닛으로 순차적으로 송신한다. 유사하게, 제2 행렬 버퍼(BUFB)는 제2 행렬 내의 단위 행렬을 Y개의 열로 분할하고, 각각의 클록 사이클에서 동일한 열 내의 L개의 원소를 시스톨릭 어레이로 순차적으로 송신한다. 구체적인 시간 순서는 다음과 같다.
BUFC는 "A * B + C" 계산에서 "C"(오프셋) 행렬을 저장하는 버퍼(L0 버퍼 또는 버퍼 레지스터를 이용하여 구성될 수 있음)이고, 행렬 곱셈의 중간 값도 BUFC에 저장될 수 있다. 곱셈 누산기가 곱셈을 완성한 후에, 누산 트리는 곱셈 후에 획득된 L개의 중간 값 및 BUFC에 저장된 1개의 오프셋 또는 중간 값을 누산한다.
M = 2, N = 2, 및 K = 2(즉, 8 x 8 * 8 x 8 행렬 곱셈)인 예가 사용된다. 행렬 곱셈기(60) 내의 제어기(604)는 행렬 곱셈을 도 11의 포맷으로 분할하여, 총 8개의 4 x 4 단위 행렬 연산을 획득한다. MNK 행렬 곱셈 연산에 대해, 분할 순서에 대한 많은 가능성이 존재하고, 분할 순서의 규칙은 MNK 행렬 곱셈 연산이 방식 1 또는 방식 2에서의 순서로 수행될 수 있다는 것이다. 방식 2에서 최대 수량의 데이터 재사용 횟수의 정책을 이용하여, 데이터를 판독하기 위한 전력 소비가 감소될 수 있다는 것을 이해할 수 있다. MNK 프랙탈 분할이 수행된 후에, 제어기(603)의 제어 로직은, 도 12 내지 도 15에 도시된 바와 같이, 8개의 클록 사이클에서 8개의 프랙탈을 시스톨릭 어레이에 입력한다. 도 12는 M = 2, N = 2, 및 K = 2일 때 시각 T = 0에서의 프랙탈 행렬 곱셈기의 파이프라인 실행을 도시하고; 도 13은 M = 2, N = 2, 및 K = 2일 때 시각 T = 1에서의 행렬 곱셈기의 파이프라인 실행을 도시하고; 도 14는 M = 2, N = 2, 및 K = 2일 때 시각 T = 7에 프랙탈 행렬 곱셈기의 파이프라인 실행을 도시하고; 도 15는 M = 2, N = 2, 및 K = 2일 때 시각 T = 11에서의 프랙탈 행렬 곱셈기의 파이프라인 실행을 도시한다. T = 6일 때, 즉, 제7 클록 사이클에서 시스톨릭 어레이가 최대 부하 상태에서 실행되기 시작한다는 것을 알 수 있다. 마지막 6개의 클록 사이클들에서, 시스톨릭 어레이로부터 단위 행렬이 출력되고, 전체 행렬에 대한 곱셈 연산도 완성된다.
옵션으로, 도 16을 참조하면, 행렬 곱셈기(60)는 명령 디스패치 유닛(606), 명령 페치 유닛(607), 직접 메모리 액세스 유닛(608), 벡터 유닛(609), 스칼라 유닛(610), 및 버스 인터페이스 유닛(611)을 추가로 포함할 수 있다. 또한, 본 발명의 이 실시예에서 제공되는 행렬 곱셈기(60)는 코프로세서로서 사용되고 중앙 처리 유닛(Central Processing Unit, 약칭하여 CPU)(80) 상에 탑재될 수 있고, CPU는 행렬 곱셈기(60)에 계산 임무를 할당한다. 구체적으로, CPU(80)는 제1 행렬, 제2 행렬, 및 관련 명령을 외부 메모리(70)에 저장할 수 있다. 행렬 곱셈기(60)는 외부 메모리(70)에서 제1 행렬, 제2 행렬, 및 관련 명령을 판독함으로써 행렬 곱셈 연산을 완성할 수 있다. 외부 메모리(70)는 구체적으로 더블 데이터 레이트 동기 동적 랜덤 액세스 메모리(Double Data Rate Synchronous Dynamic Random Access Memory, 약칭하여 DDR) 또는 다른 판독가능하고 기록가능한 메모리일 수 있다. 외부 메모리는 행렬 곱셈기(60) 전용의 메모리일 수 있다. 구체적으로, 제1 메모리(601), 제2 메모리(602), 제3 메모리(605), 및 외부 메모리(70)는 일반적으로 온칩 메모리들(On-Chip Buffer)이다.
1. 벡터 유닛(609)(Vector Unit)은 다양한 유형의 다중 병행 컴퓨팅 디바이스들(예를 들어, 부동 소수점 곱셈, 부동 소수점 덧셈, 및 부동 소수점 값 비교)을 포함하고, 여기서 컴퓨팅 디바이스는 SIMD(Single Instruction multiple data) 명령을 실행하도록 구성되고, 통합 버퍼(Unified Buffer) 및 L0C 버퍼에 대한 직접 데이터 이동을 책임진다.
2. 스칼라 유닛(610)(Scalar Unit)은 다양한 유형의 정수 기본 연산 디바이스들(예를 들어, 덧셈, 곱셈, 비교, 및 시프트)을 포함한다.
3. 직접 메모리 액세스 유닛(Direct Memory Access Unit, DMA Unit)은 각각의 저장 유닛 내의 데이터를 이동시키도록, 예를 들어, L1 RAM으로부터 L0 RAM으로 데이터를 이동시키도록 구성된다. 본 발명의 이 실시예에서의 직접 메모리 액세스 유닛이, 행렬 곱셈기의 외부 메모리 또는 내부 메모리로부터, 곱셈 연산에 참여하는 행렬 데이터를 이동시킬 때, 직접 메모리 액세스 유닛은 행렬이 블록들로 분할된 후에 획득된 결과를 저장할 필요가 있다. 예를 들어, 2 * 2 행렬에 대해, 제1 행렬 내의 1 행 및 1 열 내의 서브-블록
Figure pat00016
이 서브-블록의 단위로 저장되고, A0, A1, A2, 및 A3이 하나의 행에 저장되고, 기타 등등이다. 이러한 방식으로, 제1 행렬이 대응하는 제1 메모리로 이동될 수 있거나 또는 제2 행렬이 대응하는 제2 메모리로 이동될 수 있을 때, 전술한 방식으로 저장이 수행될 수 있다. 연산 유닛이 판독을 수행할 필요가 있을 때, 연산 유닛은 또한 전술한 저장 순서로 판독을 수행하여, 계산을 용이하게 할 수 있다. 행 벡터가 열 벡터로 전치될 필요가 있을 때, 전치는 융통성 있게 그리고 신속하게 수행될 수 있다.
4. 명령 페치 유닛(607)(Instruction Fetch Unit, IFU)은 PC(프로그램 카운터) 및 IM(명령 메모리)과 내부적으로 통합되고, 버스 인터페이스 유닛(BIU)(611)을 이용하여 메인 메모리로부터 명령을 페치하고, 실행 절차를 디코딩 및 제어한다.
5. 명령 디스패치 유닛(606)(Dispatch Unit)은 명령 페치 유닛에 의해 송신된 명령을 파싱하고, 명령에 대응하는 유형 명령을 4개의 파이프라인 유닛에 제출하고, 여기서, 파이프라인 유닛들은 도 16에서의 스칼라 유닛(Scalar Unit), 직접 메모리 액세스(Direct Memory Access,DMA) 유닛, 벡터 유닛(Vector Unit), 및 프랙탈 행렬 곱셈 유닛이다. 명령 디스패치 유닛이 4개의 파이프라인 사이에서 순차 실행을 제어하는 메커니즘이 존재한다.
파이프라인 유닛들은 2가지 유형: 비동기 실행(Posted Execution) 및 동기 실행을 갖는다는 점에 유의해야 한다. 모든 유형 명령은 순서-보존 방식으로 송신된다. 차이는 비동기 실행 유닛에 의한 명령들의 실행은 비동기적으로 종료되고 동기 실행 유닛에 의한 명령들의 실행은 동기적으로 종료된다는 점에 있다. 스칼라 유닛(Scalar Unit)은 동기 실행 유닛이고, 프랙탈 행렬 곱셈 유닛(Fractal Mat Mult Unit), DMA 유닛, 및 벡터 유닛(Vector Unit)은 비동기 실행 유닛들이다.
가능한 구현에서, 직접 메모리 액세스 유닛에 대해, 본 발명의 이 실시예는 구성가능한 온-플라이트 행렬 전치 기능(configurable on-flight matrix transpose function)을 제공한다. 예를 들어, 제1 행렬의 블록 행렬이 메모리(예를 들어, 행렬 곱셈기의 외부 메모리)로부터 다른 메모리(행렬 곱셈기의, 제1 메모리와 같은, 내부 메모리)로 이동될 때, 직접 메모리 액세스 유닛은 이동 중에 행렬 전치 연산을 수행하고, 전치된 행렬들을 전치된 행렬들의 순서로 저장한다. 행렬 전치는 신경망 훈련 과정의 필요한 조작 단계이다. 이동 후에 전치를 수행하기 위한 보통 명령과 비교하여, 본 발명의 이 실시예에서 구성가능한 온-플라이트 행렬 전치에 대한 이동 명령은 더 융통성 있고, 소프트웨어도 더 쉽고 더 간결하게 된다. 세부사항들은 이하의 표에 제시되어 있다.
보통 명령: 구성가능한 온-플라이트 행렬 전치 기능에 대한 명령:
Figure pat00017
보통 이동 명령은 구성가능한 온-플라이트 행렬 전치 기능에 대한 명령과 비교된다. 구성가능한 온-플라이트 행렬 전치 기능을 지원함으로써, 동일한 명령은 상이한 파라미터들로 더 많은 응용 시나리오들을 지원할 수 있다. 프랙탈 행렬 곱셈 프로세서 아키텍처에 적용가능한 구성가능한 온-플라이트 행렬 전치 방법이 설계된다.
도 17을 참조하면, 데이터 재사용을 용이하고, 전력 소비를 감소시키고, 단단히 결합된 온칩 메모리에 대한 의존성을 감소시키기 위해, 본 발명의 실시예는 멀티-레벨 버퍼를 사용하는 저장 구조를 추가로 제공한다. 모든 연산 유닛들은 통합된 버퍼(Unified Buffer)를 이용하여 상호작용 데이터를 판독/기입할 수 있다. 행렬 곱셈기 내에는 2개의 레벨의 전용 버퍼들 L1 및 L0이 있다. L1 버퍼 및 통합된 버퍼는 통상 직접 메모리 액세스 DMA 유닛을 이용하여 외부 저장 공간과 데이터를 교환한다. 외부 저장 공간은 복수의 레벨의 저장 유닛들을 포함한다. 예를 들어, 행렬 곱셈기는 복수의 레벨의 버퍼를 포함하고, L0에서 L1까지, 그 후 L2 버퍼까지, 용량이 점진적으로 증가하고, 액세스 대역폭이 점진적으로 감소하고, 지연이 점진적으로 증가하고, 전력 소비 오버헤드들이 점진적으로 증가한다. L0은 최내측 레벨 버퍼이고, MNK 곱셈 명령에서 3개의 행렬: "제1 행렬", "제2 행렬", 및 "결과 행렬"을 버퍼링하도록 구성될 수 있다. L0은 계산에 가깝기 때문에, 지연 및 대역폭에 대한 요건이 가장 높고, 데이터 재사용의 가능성이 가장 크다. 성능을 개선하고 전력 소비를 감소시키기 위해, D 트리거(DFF)가 L0을 구성하기 위해 사용될 수 있다. 프랙탈 명령의 소스 및 목적지 피연산자들은 L1(도 17에서의 제5 메모리(612) 및 제4 메모리(613))로부터 나온다. 실행 동안에 L0(예를 들어, 도 17에서의 제1 메모리(601) 및 제2 메모리(602))을 이용하여 데이터가 재사용된다. 프랙탈 명령 위의 소프트웨어가 L1을 이용하여 데이터를 재사용할 수 있다. 멀티-레벨 버퍼에서의 데이터 재사용은 프랙탈 명령을 실행하는 순서 및 프랙탈 명령 위의 소프트웨어를 제어하는 순서를 이용하여 구현될 수 있다. 또한, 멀티-레벨 버퍼 내의 데이터를 재사용함으로써, 각각의 버퍼 내의 데이터의 데이터 이동 시간도 숨겨질 수 있다. 이하의 표의 예는 다수의 레벨의 버퍼들 사이의 데이터 재사용 및 이동을 설명할 수 있다.
이하의 2개의 행렬:
Figure pat00018
, 및
Figure pat00019
가 존재하고, 이 2개의 행렬의 데이터 이동 단계들이 다음의 표에 제시되어 있는 것으로 가정된다.
Figure pat00020
시각 1에서, 제어기(604)는 L1 버퍼로부터 행렬의 A0 및 B0 부분들을 판독하고 A0 및 B0 부분들을 L0에 저장한다.
시각 2에서, A0 및 B0 프랙탈 행렬들이 L0으로부터 판독되고 연산에 참여할 수 있다. 동시에, 하드웨어가 L1로부터 B1 프랙탈을 판독하고, 다음 연산을 위한 준비를 하기 위해, B1 프랙탈을 L0에 저장한다. 또한, 데이터 판독 시간도 계산에 의해 숨겨진다. 이 경우, 하드웨어는 2개의 프랙탈 행렬 양쪽 모두를 판독할 필요가 없고, B1 행렬만을 판독한다. 시각 3에서 행렬에 대해 "A0 * B1"이 계산될 때, 시각 1에서 저장된 데이터 A0이 재사용된다. 전술한 리스트를 참조하면, 후속 계산에서, 시간 단위마다 데이터가 재사용되는 것을 알 수 있다.
본 발명의 이 실시예는 L1과 L0 사이에의 데이터 이동으로 제한되지 않는다는 점에 유의해야 한다. L2(예를 들어, 외부 메모리(701) 및 외부 메모리(702))로부터 L1 버퍼로의 데이터 이동 중에도, 대역폭을 감소시키고 에너지 소비를 최적화하기 위해 데이터가 재사용될 수 있다. 본 발명의 이 실시예에서, 행렬 분할 방식 및 이동 순서가 제한되지 않는다. 시간 단위마다, 프랙탈 행렬 계산이 최대 부하 상태에서 수행되는 것을 달성하기 위해, 데이터 이동 중에 데이터 재사용이 최대화되어야 한다.
본 발명의 이 실시예에서, 멀티-레벨 버퍼 구조, 행렬 프랙탈 데이터 재사용, 프랙탈 명령을 실행하는 순서, 및 프랙탈 명령 위의 소프트웨어를 제어하는 순서를 이용하여, 멀티-레벨 버퍼에서의 데이터 재사용이 달성될 수 있고, 단단히 결합된 온칩 메모리에 대한 의존성이 감소되고, 에너지 효율이 최적화되고, 소프트웨어 프로그래밍 복잡성이 감소된다.
본 발명의 이 실시예에서, 행렬에 대한 곱셈 연산을 수행하기 위한 명령들을 실행하는 순서는 2가지 방식을 포함한다: 명령 동기 실행 및 명령 비동기 실행.
본 발명의 이 실시예에서, 프랙탈 행렬 곱셈 명령이 실행되기 전에, 예를 들어, 행렬 크기의 계산, 행렬 데이터의 판독, 및 목적지 주소의 계산과 같은, 일련의 제어 준비들 및 데이터 준비들이 요구된다. 프로세서의 명령 실행 정책이 동기 실행이면, 구체적으로, 모든 명령들이 순서대로 커밋(commit)될 필요가 있다면, 연관되지 않은 명령이 종료될 때까지 명령들의 실행이 시작되지 않을 가능성이 매우 크다. 이는 크고 불필요한 성능 손실을 야기할 수 있다. 다음의 절차는 명령 동기 실행 순서이다:
주소 계산 → 제어 준비 → 행렬 0의 판독 → 행렬 0에 대한 곱셈 → 주소 계산 → 제어 준비 → 행렬 1의 판독 → 행렬 1에 대한 곱셈
전술한 실행 순서에서, 두 번째로 행렬 1에 대한 제어 준비, 주소 계산, 및 데이터 판독은 행렬 0에 대한 곱셈의 종료에 의존하지 않고, 그러한 추가 시간은 불필요한 대기 시간을 야기할 수 있다. 이러한 문제를 해결하기 위해, 본 발명의 이 실시예에서, 하드웨어 명령 디스패치 유닛(606)은 상이한 유형의 명령들이 동시에 그리고 순차적으로 실행될 수 있도록 하기 위해, 다중 채널 순서-보존 방식으로 송신을 수행한다. 전술한 예에서, 제어 준비 및 주소 계산이 순서-보존 방식으로 스칼라 채널에 대해 수행되고, 행렬 판독 및 저장이 순서-보존 방식으로 데이터 이동 채널에 대해 수행되고, 행렬 곱셈 계산도 순서-보존 방식으로 행렬 연산 채널에 대해 수행된다. 채널들은 순서-보존되지 않고 중첩될 수 있고, 대기 플래그(Wait Flag)를 설정함으로써 상호 의존적인 명령들이 동기화될 수 있다. 명령 비동기 실행 정책을 이용하여, 명령들이 병행하여 실행될 수 있고, 그에 의해 실행 효율을 증가시킨다. 전술한 동기 실행 순서의 예에서 비동기 실행 정책이 이용된다면, 효과가 도 18에 도시되어 있다. 명령 비동기 실행 순서에서, 명령들은 순서-보존되지 않고, 의존 관계를 갖는 관련 명령들은 소프트웨어에 의해 추가된 대기 명령을 이용하여 동기화될 수 있다. 프랙탈 행렬 곱셈의 제어 준비 오버헤드들은 이 비동기 실행 방식을 이용하여 숨겨질 수 있다. 프랙탈 행렬 곱셈 프로그래밍 방식에 적용가능한 비동기 실행 방식이 설계된다.
행렬 곱셈기가 제공되고, 여기서 행렬 곱셈기는 제어기를 이용하여 행렬 곱셈 블록 분할 방법, 즉, MNK 프랙탈을 완성하고; 상기 행렬 곱셈기(60) 내의 내부 제어기(604)의 제어 로직을 이용하여, 큰 행렬을 곱셈을 위한 단위 행렬들(구체적으로, X * L x L * Y 행렬)로 분할한다. 상기 제어기(604)의 제어 로직은 각각의 클록 사이클에서 연산 회로(603)에 단위 행렬 곱셈 임무를 송신하여, 데이터가 파이프라인 방식으로 실행되고, X개의 행 및 Y개의 열의 연산 유닛들이 최대 부하 상태에서 동작하도록 한다. 행렬 곱셈의 효율이 증가되고, 신경망 알고리즘을 상당히 개선하는 응용 효과가 달성된다. 본 발명의 이 실시예에서 제공되는 행렬 곱셈기는 합성곱 신경망에서의 합성곱 연산 및 FC 연산을 수행할 수 있다.
전술한 실시예들의 전부 또는 일부는 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합에 의하여 구현될 수 있다. 실시예들을 구현하기 위해 소프트웨어 프로그램이 사용될 때, 실시예들은 완전히 또는 부분적으로 컴퓨터 프로그램 제품의 형식으로 구현될 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령을 포함한다. 컴퓨터 프로그램 명령이 컴퓨터 상에 로딩되고 실행될 때, 본 출원의 실시예들에 따른 절차 또는 기능들은 전부 또는 부분적으로 생성된다. 컴퓨터는 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크, 또는 다른 프로그램 가능한 장치들일 수 있다. 컴퓨터 명령은 컴퓨터 판독가능 저장 매체에 저장될 수 있거나 컴퓨터 판독가능 저장 매체로부터 다른 컴퓨터 판독가능 저장 매체로 송신될 수 있다. 예를 들어, 컴퓨터 명령은 유선(예를 들어, 동축 케이블, 광섬유 또는 디지털 가입자 회선(Digital Subscriber Line, 약칭하여 DSL)) 또는 무선(예를 들어, 적외선, 라디오, 및 마이크로파 등) 방식으로 웹사이트, 컴퓨터, 서버, 또는 데이터 센터로부터 다른 웹사이트, 컴퓨터, 서버, 또는 데이터 센터로 송신될 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨터에 의해 액세스 가능한 임의의 사용가능 매체, 또는 하나 이상의 사용가능 매체를 통합하는, 서버 또는 데이터 센터와 같은, 데이터 저장 디바이스일 수 있다. 사용가능 매체는 자기 매체(예를 들어, 플로피 디스크, 하드 디스크, 또는 자기 테이프), 광학 매체(예를 들어, DVD), 반도체 매체(예를 들어, 솔리드-스테이트 드라이브(Solid State Disk, 약칭하여 SSD)) 등일 수 있다.
본 출원이 실시예들을 참조하여 설명되었지만, 보호를 청구하는 본 출원을 구현하는 과정에서, 본 기술분야의 통상의 기술자는 첨부 도면들, 개시된 내용, 및 첨부된 청구항들을 검토함으로써 개시된 실시예들의 다른 변형을 이해하고 구현할 수 있다. 청구항들에서, "포함하는"(comprising)은 다른 컴포넌트 또는 다른 단계를 배제하지 않고, 단수 표현("a" 또는 "one")은 복수의 의미를 배제하지 않는다. 단일 프로세서 또는 다른 유닛이 청구항들에 열거된 여러 기능들을 구현할 수 있다. 일부 수단들은 서로 상이한 종속 청구항들에 기록되지만, 이는 더 양호한 효과를 생성하기 위해 이들 수단이 결합될 수 없다는 것을 의미하지는 않는다.
본 출원이 특정 특징들 및 그의 실시예들을 참조하여 설명되었지만, 명백히, 본 출원의 범위를 벗어나지 않고 그것들에 다양한 수정들 및 조합들이 이루어질 수 있다. 대응하여, 본 명세서 및 첨부 도면들은 첨부된 청구항들에 의해 정의되는 본 출원의 예시적인 설명에 불과하고, 본 출원의 범위를 커버하는 수정들, 변형들, 조합들, 또는 동등물들 중 임의의 것 또는 전부로서 간주된다. 명백히, 본 기술분야의 통상의 기술자는 본 출원의 정신 및 범위를 벗어나지 않고 본 출원에 대해 다양한 수정 및 변형을 실시할 수 있다. 본 출원은 본 출원의 이들 수정 및 변형이 다음의 청구항들 및 이들과 균등한 기술들에 의해 정의된 보호의 범위 내에 속하는 한 그것들을 커버하도록 의도된다.

Claims (10)

  1. 행렬 곱셈기로서,
    제1 행렬을 저장하도록 구성된 제1 메모리 - 상기 제1 행렬은 M * K 행렬임 -;
    제2 행렬을 저장하도록 구성된 제2 메모리 - 상기 제2 행렬은 K * N 행렬임 -;
    상기 제1 메모리 및 상기 제2 메모리에 연결된 연산 회로 - 상기 연산 회로는 X개의 행 및 Y개의 열의 연산 유닛들을 포함하고, 각각의 연산 유닛은 벡터 곱셈 회로 및 덧셈 회로를 포함하고, 상기 벡터 곱셈 회로는 상기 제1 메모리에 의해 송신된 행 벡터 데이터 및 상기 제2 메모리에 의해 송신된 열 벡터 데이터를 수신하고, 상기 2개의 벡터를 곱하도록 구성되고; 상기 덧셈 회로는 상기 2개의 벡터를 곱하는 것에 의해 획득된 결과들을 더하고, 동일한 연산 유닛의 계산 결과들을 누산하여, 각각의 연산 유닛의 연산 결과를 획득하도록 구성됨 -; 및
    상기 연산 회로에 연결된 제어기를 포함하고, 상기 제어기는 이하의 동작들:
    상기 제1 행렬을 그 크기가 X * L인 서브-블록의 단위의 블록들로 분할하여, 동일한 크기의 S x R개의 서브-블록을 획득하는 동작 - 여기서 상기 S x R개의 서브-블록의 s 행 및 r 열 내의 서브-블록은 Asr로 표시되고, s = (1, 2, 3, ..., 및 S)이고, r = (1, 2, 3, ..., 및 R)임 -; 및
    상기 제2 행렬을 그 크기가 L * Y인 서브-블록의 단위의 블록들로 분할하여, 동일한 크기의 R x T개의 서브-블록을 획득하는 동작 - 여기서 상기 R x T개의 서브-블록의 r 행 및 t 열 내의 서브-블록은 Brt로 표시되고, r = (1, 2, 3, ..., 및 R)이고, t = (1, 2, 3, ..., 및 T)임 - 을 수행하도록 구성되고;
    상기 제어기는 이하의 동작:
    임의의 서브-블록 Asr의 X개의 행 벡터 중의 x 행 및 대응하는 서브-블록 Brt의 Y개의 열 벡터 중의 y 열을 X개의 행 및 Y개의 열의 연산 유닛들 중의 x 행 및 y 열 내의 연산 유닛에 입력하여, 연산을 수행하는 동작을 수행하도록 추가로 구성되고, 여기서 x = (1, 2, 3, ..., 및 X), y = (1, 2, 3, ..., 및 Y)이고, 상기 임의의 서브-블록 Asr 중의 r 및 상기 대응하는 서브-블록 Brt 중의 r은 동등한 값을 갖는, 행렬 곱셈기.
  2. 제1항에 있어서,
    상기 제어기는 이하의 동작:
    상기 임의의 서브-블록 Asr의 상기 X개의 행 벡터 중의 상기 x 행 및 상기 대응하는 서브-블록 Brt의 상기 Y개의 열 벡터 중의 상기 y 열을 동일한 클록 사이클에서 병행하여 X개의 행 및 Y개의 열의 연산 유닛들 중의 x 행 및 y 열 내의 상기 연산 유닛에 입력하여, 상기 연산을 수행하는 동작을 수행하도록 구체적으로 구성되는, 행렬 곱셈기.
  3. 제1항 또는 제2항에 있어서,
    상기 제어기는 상기 임의의 서브-블록 Asr의 행 벡터들을, x 행 번호들의 오름차순으로, X개의 행 및 Y개의 열의 연산 유닛들에 대응하는 x 행에 연속적으로 들어가도록 제어하도록 추가로 구성되고, 여기서 인접한 행 벡터들이 동일한 열 및 상이한 행들 내의 연산 유닛들에 들어가는 시각들 간의 차이는 1개의 클록 사이클이고; 상기 제어기는 동시에 상기 대응하는 서브-블록 Brt의 열 벡터들을, y 열 번호들의 오름차순으로, X개의 행 및 Y개의 열의 연산 유닛들에 대응하는 y 열에 연속적으로 들어가도록 제어하도록 추가로 구성되고, 여기서 인접한 열 벡터들이 동일한 행 및 상이한 열들 내의 연산 유닛들에 들어가는 시각들 간의 차이는 1개의 클록 사이클인, 행렬 곱셈기.
  4. 제1항 또는 제2항에 있어서,
    상기 제어기는:
    적어도 2개의 연속적인 서브-블록 곱셈 계산 사이클에서 s 및 r의 값들은 변경되지 않은 채로 유지되고 t의 값은 변경되도록 제어하여, 상기 제1 메모리가 상기 적어도 2개의 연속적인 서브-블록 곱셈 계산 사이클 내에서 동일한 서브-블록 Asr을 재사용하도록 추가로 구성되고, 여기서 상기 서브-블록 곱셈 계산 사이클은 1개의 서브-블록 Asr 및 대응하는 서브-블록 Brt에 대한 행렬 곱셈 연산을 완성하기 위해 X개의 행 및 Y개의 열의 연산 유닛들에 의해 사용되는 시간인, 행렬 곱셈기.
  5. 제1항 또는 제2항에 있어서,
    상기 행렬 곱셈기는 상기 연산 회로에 연결된 제3 메모리를 추가로 포함하고;
    상기 제어기는 상기 벡터 곱셈 회로 및 상기 덧셈 회로의 연산 결과들을 상기 제3 메모리에 저장하도록 X개의 행 및 Y개의 열의 상기 연산 유닛들을 제어하도록 구성되는, 행렬 곱셈기.
  6. 제5항에 있어서,
    상기 행렬 곱셈기는: 상기 제1 메모리 및 상기 제2 메모리에 연결된 제4 메모리, 및 상기 제3 메모리에 연결된 제5 메모리를 추가로 포함하고;
    상기 제어기는: 상기 제1 행렬과 상기 제2 행렬에 대한 곱셈 연산을 수행하기 전에,
    상기 제1 행렬 및 상기 제2 행렬의 데이터 소스들이 상기 제4 메모리로부터 상기 제1 메모리 및 상기 제2 메모리로 각각 이동되고, 상기 계산 결과들이 상기 제3 메모리로부터 상기 제5 메모리로 이동되도록 제어하도록 추가로 구성되는, 행렬 곱셈기.
  7. 제1항 또는 제2항에 있어서,
    상기 벡터 곱셈 회로는 L개의 곱셈기를 포함하고, 상기 덧셈 회로는 입력 개수가 L + 1인 덧셈기 트리를 포함하는, 행렬 곱셈기.
  8. 제1항 또는 제2항에 있어서,
    상기 제1 메모리, 상기 제2 메모리, 상기 연산 회로, 및 상기 제어기는 버스 인터페이스 유닛을 이용하여 연결되는, 행렬 곱셈기.
  9. 제1항 또는 제2항에 있어서,
    Figure pat00021
    , 및
    Figure pat00022
    이고; M%X≠0일 때, 상기 제1 행렬의 (M + 1) 행 내지 (S * X - M) 행에 대해 계산이 수행되지 않고, 결과의 값에 0이 할당되고; K%Y≠0일 때, 상기 제1 행렬의 (K + 1) 열 내지 (R * Y - K) 열에 대해 연산이 수행되지 않고, 결과의 값에 0이 할당되는, 행렬 곱셈기.
  10. 제1항 또는 제2항에 있어서,
    Figure pat00023
    , 및
    Figure pat00024
    이고; K%Y≠0일 때, 상기 제1 행렬의 (K + 1) 열 내지 (R * Y - K) 열에 대해 연산이 수행되지 않고, 결과의 값에 0이 할당되고; N%X≠0일 때, 상기 제1 행렬의 (N + 1) 행 내지 (T * X - N) 행에 대해 계산이 수행되지 않고, 결과의 값에 0이 할당되는, 행렬 곱셈기.
KR1020227031367A 2017-12-29 2018-10-19 행렬 곱셈기 KR102492477B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201711499179.XA CN109992743B (zh) 2017-12-29 2017-12-29 矩阵乘法器
CN201711499179.X 2017-12-29
KR1020207021471A KR102443546B1 (ko) 2017-12-29 2018-10-19 행렬 곱셈기
PCT/CN2018/111077 WO2019128404A1 (zh) 2017-12-29 2018-10-19 矩阵乘法器

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207021471A Division KR102443546B1 (ko) 2017-12-29 2018-10-19 행렬 곱셈기

Publications (2)

Publication Number Publication Date
KR20220129107A true KR20220129107A (ko) 2022-09-22
KR102492477B1 KR102492477B1 (ko) 2023-01-30

Family

ID=67065034

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207021471A KR102443546B1 (ko) 2017-12-29 2018-10-19 행렬 곱셈기
KR1020227031367A KR102492477B1 (ko) 2017-12-29 2018-10-19 행렬 곱셈기

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020207021471A KR102443546B1 (ko) 2017-12-29 2018-10-19 행렬 곱셈기

Country Status (6)

Country Link
US (2) US11334648B2 (ko)
EP (1) EP3726399A4 (ko)
JP (1) JP6977239B2 (ko)
KR (2) KR102443546B1 (ko)
CN (2) CN109992743B (ko)
WO (1) WO2019128404A1 (ko)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110060195B (zh) 2018-01-19 2021-05-04 华为技术有限公司 一种数据处理的方法及装置
CN108983236B (zh) * 2018-07-27 2022-05-20 南京航空航天大学 一种sar回波数据预滤波技术的fpga实现方法
CN110543934B (zh) * 2019-08-14 2022-02-01 北京航空航天大学 一种用于卷积神经网络的脉动阵列计算结构及方法
CN112446007A (zh) * 2019-08-29 2021-03-05 上海华为技术有限公司 一种矩阵运算方法、运算装置以及处理器
CN112579042B (zh) * 2019-09-29 2024-04-19 广州希姆半导体科技有限公司 计算装置及方法、芯片、电子设备及计算机可读存储介质
US11194549B2 (en) * 2019-10-25 2021-12-07 Arm Limited Matrix multiplication system, apparatus and method
CN114600126A (zh) * 2019-10-30 2022-06-07 华为技术有限公司 一种卷积运算电路和卷积运算方法
CN111079081B (zh) * 2019-12-16 2021-02-12 海光信息技术股份有限公司 一种矩阵乘法器、数据处理方法、集成电路器件及处理器
CN111176582A (zh) 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
CN111291323B (zh) * 2020-02-17 2023-12-12 南京大学 一种基于脉动阵列的矩阵乘法处理器及其数据处理方法
CN113536221B (zh) * 2020-04-21 2023-12-15 中科寒武纪科技股份有限公司 运算方法、处理器以及相关产品
CN113536219B (zh) * 2020-04-21 2024-01-26 中科寒武纪科技股份有限公司 运算方法、处理器以及相关产品
CN111581595B (zh) * 2020-04-24 2024-02-13 科大讯飞股份有限公司 一种矩阵乘法计算方法及计算电路
KR102393629B1 (ko) * 2020-04-29 2022-05-02 연세대학교 산학협력단 다중 디콘볼루션 레이어를 갖는 인공 신경망을 이용하는 이미지 업스케일링 장치 및 이의 디콘볼루션 레이어 다중화 방법
CN113918879A (zh) * 2020-07-08 2022-01-11 华为技术有限公司 矩阵运算的方法和加速器
US20220051086A1 (en) * 2020-08-17 2022-02-17 Alibaba Group Holding Limited Vector accelerator for artificial intelligence and machine learning
US20220164663A1 (en) * 2020-11-24 2022-05-26 Arm Limited Activation Compression Method for Deep Learning Acceleration
CN112632464B (zh) * 2020-12-28 2022-11-29 上海壁仞智能科技有限公司 用于处理数据的处理装置
CN112612447B (zh) * 2020-12-31 2023-12-08 安徽芯纪元科技有限公司 一种矩阵计算器及基于该矩阵计算器的全连接层计算方法
KR20220101518A (ko) * 2021-01-11 2022-07-19 에스케이하이닉스 주식회사 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치
CN112991142B (zh) * 2021-03-31 2023-06-16 腾讯科技(深圳)有限公司 图像数据的矩阵运算方法、装置、设备及存储介质
CN113296733A (zh) * 2021-04-25 2021-08-24 阿里巴巴新加坡控股有限公司 数据处理方法以及装置
WO2022226721A1 (zh) * 2021-04-26 2022-11-03 华为技术有限公司 一种矩阵乘法器及矩阵乘法器的控制方法
CN113032723B (zh) * 2021-05-25 2021-08-10 广东省新一代通信与网络创新研究院 一种矩阵乘法器的实现方法及矩阵乘法器装置
CN113268708B (zh) * 2021-07-16 2021-10-15 北京壁仞科技开发有限公司 用于矩阵计算的方法及装置
CN113704689B (zh) * 2021-08-25 2022-11-11 北京大学 一种基于昇腾ai处理器的矩阵乘算子的处理方法及装置
CN113918120A (zh) * 2021-10-19 2022-01-11 Oppo广东移动通信有限公司 计算装置、神经网络处理设备、芯片及处理数据的方法
CN114630108A (zh) * 2022-03-01 2022-06-14 维沃移动通信有限公司 感光数据校正电路、方法、装置、电子设备及介质
TWI814618B (zh) * 2022-10-20 2023-09-01 創鑫智慧股份有限公司 矩陣運算裝置及其操作方法
US20240169022A1 (en) * 2022-11-21 2024-05-23 Nvidia Corporation Application programming interface to synchronize matrix multiply-accumulate memory transactions
CN115756384B (zh) * 2022-11-22 2024-05-17 海光信息技术股份有限公司 张量计算单元及使用方法、数据处理装置及操作方法
CN116192359B (zh) * 2022-12-27 2024-01-05 北京瑞莱智慧科技有限公司 一种同态乘法阵列电路和数据处理方法
CN115827261B (zh) * 2023-01-10 2023-05-19 北京燧原智能科技有限公司 基于分布式网络的数据同步方法、装置、服务器及介质
CN116795432B (zh) * 2023-08-18 2023-12-05 腾讯科技(深圳)有限公司 运算指令的执行方法、装置、电路、处理器及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100465876C (zh) * 2007-07-12 2009-03-04 浙江大学 基于单fpga的矩阵乘法器装置
CN103902509A (zh) * 2014-04-23 2014-07-02 荣成市鼎通电子信息科技有限公司 Wpan中全并行输入的循环左移准循环矩阵乘法器
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02266458A (ja) * 1989-04-06 1990-10-31 Nec Corp ニューラルネットワークシミュレーション装置
DE4036455C1 (ko) * 1990-11-15 1992-04-02 Siemens Ag, 8000 Muenchen, De
JPH0644196A (ja) * 1992-07-24 1994-02-18 Toshiba Corp 並列計算機用マイクロプロセッサ
JPH06175986A (ja) * 1992-12-10 1994-06-24 Nippon Telegr & Teleph Corp <Ntt> 行列演算の並列処理方法
CN100449522C (zh) * 2007-07-12 2009-01-07 浙江大学 基于多fpga的矩阵乘法并行计算系统
US8250130B2 (en) * 2008-05-30 2012-08-21 International Business Machines Corporation Reducing bandwidth requirements for matrix multiplication
CN104346318B (zh) * 2014-10-15 2017-03-15 中国人民解放军国防科学技术大学 面向通用多核dsp的矩阵乘加速方法
CN105589677A (zh) * 2014-11-17 2016-05-18 沈阳高精数控智能技术股份有限公司 一种基于fpga的脉动结构矩阵乘法器及其实现方法
CN104636316B (zh) * 2015-02-06 2018-01-12 中国人民解放军国防科学技术大学 面向gpdsp的大规模矩阵乘法计算的方法
CN104899182B (zh) * 2015-06-09 2017-10-31 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
US10853448B1 (en) * 2016-09-12 2020-12-01 Habana Labs Ltd. Hiding latency of multiplier-accumulator using partial results
CN106445471B (zh) * 2016-10-13 2018-06-01 北京百度网讯科技有限公司 处理器和用于在处理器上执行矩阵乘运算的方法
JP6912703B2 (ja) * 2017-02-24 2021-08-04 富士通株式会社 演算方法、演算装置、演算プログラム及び演算システム
JP6907700B2 (ja) * 2017-05-23 2021-07-21 富士通株式会社 情報処理装置、マルチスレッド行列演算方法、およびマルチスレッド行列演算プログラム
CN112214726B (zh) * 2017-07-07 2024-05-03 华为技术有限公司 运算加速器
CN109902804B (zh) * 2017-08-31 2020-12-18 安徽寒武纪信息科技有限公司 一种池化运算方法及装置
US10713214B1 (en) * 2017-09-27 2020-07-14 Habana Labs Ltd. Hardware accelerator for outer-product matrix multiplication
US20190114548A1 (en) * 2017-10-17 2019-04-18 Xilinx, Inc. Static block scheduling in massively parallel software defined hardware systems
US10346163B2 (en) * 2017-11-01 2019-07-09 Apple Inc. Matrix computation engine
WO2020073211A1 (zh) * 2018-10-09 2020-04-16 华为技术有限公司 运算加速器、处理方法及相关设备
US11989257B2 (en) * 2020-10-29 2024-05-21 Hewlett Packard Enterprise Development Lp Assigning processing threads for matrix-matrix multiplication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100465876C (zh) * 2007-07-12 2009-03-04 浙江大学 基于单fpga的矩阵乘法器装置
CN103902509A (zh) * 2014-04-23 2014-07-02 荣成市鼎通电子信息科技有限公司 Wpan中全并行输入的循环左移准循环矩阵乘法器
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法

Also Published As

Publication number Publication date
CN111859273A (zh) 2020-10-30
US11334648B2 (en) 2022-05-17
EP3726399A1 (en) 2020-10-21
CN109992743B (zh) 2020-06-16
US20200334322A1 (en) 2020-10-22
JP6977239B2 (ja) 2021-12-08
KR20200098684A (ko) 2020-08-20
KR102443546B1 (ko) 2022-09-15
KR102492477B1 (ko) 2023-01-30
JP2021508125A (ja) 2021-02-25
WO2019128404A1 (zh) 2019-07-04
CN109992743A (zh) 2019-07-09
US11934481B2 (en) 2024-03-19
EP3726399A4 (en) 2021-02-17
US20220245218A1 (en) 2022-08-04

Similar Documents

Publication Publication Date Title
KR102443546B1 (ko) 행렬 곱셈기
CN108805266B (zh) 一种可重构cnn高并发卷积加速器
CN112214726B (zh) 运算加速器
US10140251B2 (en) Processor and method for executing matrix multiplication operation on processor
CN111176727B (zh) 计算装置以及计算方法
US10768894B2 (en) Processor, information processing apparatus and operation method for processor
US9886377B2 (en) Pipelined convolutional operations for processing clusters
JP6905573B2 (ja) 計算装置と計算方法
CN110415157B (zh) 一种矩阵乘法的计算方法及装置
CN116541647A (zh) 运算加速器、处理方法及相关设备
CN112612521A (zh) 一种用于执行矩阵乘运算的装置和方法
Liu et al. WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs
US20240119114A1 (en) Matrix Multiplier and Matrix Multiplier Control Method
CN110991619A (zh) 神经网络处理器、芯片和电子设备
WO2023065983A1 (zh) 计算装置、神经网络处理设备、芯片及处理数据的方法
CN111047036A (zh) 神经网络处理器、芯片和电子设备
CN116888591A (zh) 一种矩阵乘法器、矩阵计算方法及相关设备
CN114118348A (zh) 加速器、操作加速器的方法以及包括加速器的电子装置
CN111047035A (zh) 神经网络处理器、芯片和电子设备
CN115081600A (zh) 执行Winograd卷积的变换单元、集成电路装置及板卡
Guo et al. Fused DSConv: Optimizing sparse CNN inference for execution on edge devices
WO2020059156A1 (en) Data processing system, method, and program
CN112214727B (zh) 运算加速器
CN115081602A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡
CN113867797A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right