KR102316670B1 - 연산 가속기 - Google Patents
연산 가속기 Download PDFInfo
- Publication number
- KR102316670B1 KR102316670B1 KR1020207002212A KR20207002212A KR102316670B1 KR 102316670 B1 KR102316670 B1 KR 102316670B1 KR 1020207002212 A KR1020207002212 A KR 1020207002212A KR 20207002212 A KR20207002212 A KR 20207002212A KR 102316670 B1 KR102316670 B1 KR 102316670B1
- Authority
- KR
- South Korea
- Prior art keywords
- matrix
- arithmetic
- memory
- data
- circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4981—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
본 발명은 데이터 계산 기술 분야에 관한 것으로, 2개의 N*N 매트릭스에 대하여 곱셈 연산을 수행하는 시간을 줄이기 위한 연산 가속기를 개시한다. 연산 가속기는 제1 메모리, 제2 메모리, 연산 회로, 및 제어기를 포함한다. 연산 회로는 버스를 사용해서 제1 메모리 및 제2 메모리와 데이터 통신을 수행할 수 있다. 연산 회로는 제1 메모리 및 제2 메모리로부터 매트릭스 데이터를 추출하고 곱셈 연산을 수행하도록 구성된다. 제어기는, 사전설정된 프로그램 또는 명령어에 따라, 연산 회로를 제어해서 곱셈 연산을 완료하도록 구성된다. 연산 가속기는 2개의 매트릭스에 대하여 곱셈 연산을 수행하도록 구성될 수 있다.
Description
본원은 데이터 계산 기술 분야에 관한 것으로, 특히 연산 가속기(operation accelerator)에 관한 것이다.
현재, 2개의 매트릭스 A 및 B로 이루어진 곱(product)은 하기의 두 가지 방식 중 어느 하나로 계산될 수 있다:
방식 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)일 수 있다. 하나의 벡터와 하나의 매트릭스를 곱하는 연산은 하나의 이러한 시스톨릭 어레이를 사용함으로써 각각의 클록 사이클(clock cycle)에서 완료될 수 있다.
방식 1에 있어서, N^3 곱셈 연산이 2개의 N*N 매트릭스의 곱셈 연산을 완료하는 데 필요하며, 벡터 프로세서가 각각의 클록 사이클에서 M개의 요소를 곱할 수 있기 때문에, 하나의 곱셈 연산을 완료하는 데 필요한 지속기간은 N^3/M 클록 사이클이다. 방식 2에 있어서, N^3 곱셈 연산이 2개의 N*N 매트릭스의 곱셈 연산을 완료하는 데 필요하며, 시스톨릭 어레이가 N^2 연산 유닛을 가지기 때문에, 하나의 매트릭스 연산을 완료하는 데 필요한 지속기간은 N^3/N^2=N 클록 사이클이다. 방식 1 및 방식 2 모두에 있어서는, N*N 매트릭스의 곱셈 연산을 완료하기까지 긴 시간이 걸린다.
본원의 실시형태들은 2개의 N*N 매트릭스에 대하여 곱셈 연산을 수행하는 시간을 줄이기 위해 연산 가속기를 제공한다.
전술한 목적을 달성하기 위해, 본원의 실시형태들은 하기의 기술적인 해법을 제공한다:
제1 양태에 따르면, 연산 가속기가 제공된다. 연산 가속기는: 제1 매트릭스를 저장하도록 구성― 제1 매트릭스는 M*N 매트릭스임 ―되는 제1 메모리; 제2 매트릭스를 저장하도록 구성― 제2 매트릭스는 N*K 매트릭스임 ―되는 제2 메모리; 제1 메모리 및 제2 메모리에 연결되는 연산 회로― 연산 회로는 매트릭스 곱셈 회로 및 가산기 회로를 포함하고; 매트릭스 곱셈 회로는 연산 블록들을 포함하는 M개의 연산 그룹을 포함하고, 각각의 연산 그룹은 K개의 연산 블록을 포함하고, 각각의 연산 블록은 N개의 연산 유닛을 포함하고, 연산 유닛에는 제각기 제1 메모리 및 제2 메모리에 의해 송신되는 데이터를 수신하는 데 사용되는 2개의 입력이 제공되고, 연산 유닛은 2개의 데이터 조각을 곱하고; 가산기 회로는 동일한 연산 블록에 속하는 연산 유닛들의 계산 결과들을 더해서 각각의 연산 블록의 계산 결과를 취득하도록 구성됨 ―; 및 연산 회로에 연결되는 제어기를 포함하고, 제어기는 하기의 동작들: 즉, 제2 매트릭스의 K개의 열 벡터를 각각의 연산 그룹의 K개의 연산 블록에 제각기 기록― 제2 매트릭스의 벡터들의 g번째 열의 j번째 데이터 조각이 K개의 연산 블록에서 g번째 연산 블록의 j번째 연산 유닛에 기록됨 ―하는 동작; 제1 매트릭스의 M개의 행 벡터를 M개의 연산 그룹에 제각기 송신― 제1 매트릭스의 i번째 행 벡터는 M개의 연산 그룹에서 i번째 연산 그룹에 송신되고, i번째 연산 그룹에서의 각각의 연산 블록의 j번째 연산 유닛은 i번째 행 벡터의 j번째 데이터 조각을 수신함 ―하는 동작을 수행하도록 구성되고; M개의 연산 그룹의 각각의 연산 유닛은 연산 유닛에 의해 수신되는 2개의 데이터 조각에 대하여 곱셈 연산을 수행하고, 가산기 회로는 각각의 연산 블록의 연산 유닛들의 계산 결과들을 더해서 제3 매트릭스를 취득하고, 제3 매트릭스는 제1 매트릭스와 제2 매트릭스의 곱이고, 제3 매트릭스의 i 행 및 g 열의 요소는 i번째 연산 그룹의 g번째 연산 블록의 계산 결과이고, M, N, 및 K는 0보다 큰 정수이고, i는 0보다 크고 M+1보다 작은 정수이고, g는 0보다 크고 K+1보다 작은 정수이고, j는 0보다 크고 N+1보다 작은 정수이다.
제1 양태에서 제공되는 방법에 있어서, M개의 연산 그룹이 M*N*K개의 연산 유닛을 포함하기 때문에, 연산 가속기는 하나의 클록 사이클 내에 M*N*K 곱셈 연산을 수행할 수 있다. 이 경우, 연산 가속기는 M*N 매트릭스와 N*K 매트릭스의 곱을 계산할 수 있다. 종래 기술에 비해, 이 방법은 매트릭스 곱셈 연산에 필요한 시간을 크게 줄일 수 있다.
가능한 설계에 있어서, 가산기 회로는 M*K개의 가산기 트리를 포함하고, 하나의 가산기 트리는 하나의 연산 블록에 대응하고, 가산기 트리는 대응하는 연산 블록의 N개의 연산 유닛에 연결되고, 가산기 트리는 가산기 트리에 연결되는 N개의 연산 유닛의 계산 결과들을 더하도록 구성된다.
가능한 설계에 있어서, 가산기 회로의 구성 구조가 구체적으로 제공된다.
가능한 설계에 있어서, 연산 유닛은 저장 유닛에 기록되는 데이터를 저장하도록 구성되는 저장 유닛; 및 수신된 데이터와 저장 유닛에 저장된 데이터의 곱을 계산하도록 구성되는, 저장 유닛에 연결된 곱셈 회로를 포함한다.
이 가능한 설계에 있어서, 연산 유닛의 구성 구조가 구체적으로 제공된다.
가능한 설계에 있어서, 연산 유닛은 복수의 저장 유닛, 곱셈 회로, 복수의 저장 유닛에 연결되는 제1 선택 회로, 및 복수의 저장 유닛 및 곱셈 회로에 연결되는 제2 선택 회로를 포함한다. 복수의 저장 유닛은 데이터를 저장하도록 구성되고; 제1 선택 회로는 곱셈 회로가 곱셈 연산을 수행할 때 사용되는 데이터를 저장하기 위한 저장 유닛을, 곱셈 회로가 곱셈 연산을 수행하기 전에 복수의 저장 유닛으로부터 선택하도록 구성되고; 제2 선택 회로는 곱셈 회로가 곱셈 연산을 수행할 때 사용되는 데이터를 저장하기 위한 저장 유닛을, 곱셈 회로가 곱셈 연산을 수행할 때 선택하도록 구성되고; 곱셈 회로는 수신된 데이터와 제2 선택 회로에 의해 선택되는 저장 유닛에 저장된 데이터의 곱을 계산하도록 구성된다.
이 가능한 설계에 있어서, 저장 유닛은 2개의 블록(block)으로 분할될 수 있다. 연산 유닛이 복수의 저장 유닛을 포함할 경우, 연산 유닛이 하나의 저장 유닛 내의 하나의 블록에 있는 데이터에 기초하여 곱셈 연산을 수행하면, 제어기는 복수의 저장 유닛 중 다른 저장 유닛에 또는 곱셈 연산에 참여한 저장 유닛 내의 다른 블록에 데이터를 더 기록할 수 있고, 그에 따라 연산 유닛의 작업 효율이 향상된다.
가능한 설계에 있어서, 제1 메모리는 제1 버스를 사용해서 연산 회로에 연결되고, 제1 버스의 비트 폭은 Wi*N*M이고; 제2 메모리는 제2 버스를 사용해서 연산 회로에 연결되고, 제2 버스의 비트 폭은 Wi*N이고; Wi는 입력 데이터의 것이며 연산 유닛에 의해 허용되는 최대 비트 폭이다.
가능한 설계에 있어서, 연산 가속기는 제1 메모리, 제2 메모리, 및 제어기에 연결되는 저장 유닛 액세스 제어기를 더 포함하고, 저장 유닛 액세스 제어기는, 제어기의 제어 하에서, 제1 매트릭스 및 제2 매트릭스를 취득하고, 제1 매트릭스를 제1 메모리에 세이브하고, 제2 매트릭스를 제2 메모리에 세이브하도록 구성된다.
가능한 설계에 있어서, 연산 가속기는: 제1 매트릭스의 소스 데이터를 저장하도록 구성되는 제3 메모리; 제1 메모리, 제2 메모리, 제3 메모리, 및 제어기에 연결되는 저장 유닛 액세스 제어기― 저장 유닛 액세스 제어기는, 제어기의 제어 하에서, 제1 매트릭스의 소스 데이터 및 제2 매트릭스를 취득하고, 제1 매트릭스의 소스 데이터를 제3 메모리에 세이브하고, 제2 매트릭스를 제2 메모리에 세이브하도록 구성됨 ―; 및 제1 메모리, 제3 메모리, 및 제어기에 연결되는 벡터 계산 유닛― 벡터 계산 유닛은, 제어기의 제어 하에서, 제1 매트릭스의 소스 데이터를 제1 매트릭스로 변환하고, 제1 매트릭스를 제1 메모리에 세이브하도록 구성됨 ―을 더 포함한다.
이 가능한 설계에 있어서, 연산 가속기는 제1 매트릭스의 소스 데이터를 사용해서 제1 매트릭스를 취득하는 능력을 더 갖는다.
가능한 설계에 있어서, 제3 메모리는 연산 회로에 연결되고, 제3 메모리는 제3 매트릭스를 저장하도록 더 구성된다.
가능한 설계에 있어서, 연산 가속기는 연산 회로, 벡터 계산 유닛, 및 제어기에 연결되는 누산기를 더 포함하고, 누산기는 제어기의 제어 하에서 제3 매트릭스 및 제4 매트릭스 내의 상응하는 위치들에 있는 요소들을 더해서 제5 매트릭스를 취득하도록 구성되고; 벡터 계산 유닛은 제어기의 제어 하에서 제5 매트릭스를 제3 메모리에 세이브하도록 더 구성되고, 제3 매트릭스는 제1 매트릭스와 제2 매트릭스의 곱이고, 제1 매트릭스는 첫 번째로 계산될 매트릭스의 제1 부분을 포함하고, 첫 번째로 계산될 매트릭스의 제1 부분은 첫 번째로 계산될 매트릭스의 첫 번째 열 내지 N 번째 열의 요소들이고, 제2 매트릭스는 두 번째로 계산될 매트릭스의 제1 부분이고, 두 번째로 계산될 매트릭스의 제1 부분은 두 번째로 계산될 매트릭스의 첫 번째 행 내지 N 번째 행의 요소들이고, 첫 번째로 계산될 매트릭스는 요소들의 M개의 행을 포함하고, 두 번째로 계산될 매트릭스는 요소들의 K개의 열을 포함하고, 제4 매트릭스는 첫 번째로 계산될 매트릭스의 제2 부분과 두 번째로 계산될 매트릭스의 제2 부분의 곱이고, 첫 번째로 계산될 매트릭스의 제2 부분은 첫 번째로 계산될 매트릭스의 제1 부분 이외의 부분이고, 두 번째로 계산될 매트릭스의 제2 부분은 두 번째로 계산될 매트릭스의 제1 부분 이외의 부분이다.
가능한 설계에 있어서, 연산 가속기는: 제어기에 연결되며, 제어기에 의해 사용되는 명령어를 저장하도록 구성되는 명령어 페치 버퍼; 및 명령어 페치 버퍼, 저장 유닛 액세스 제어기, 및 외부 메모리에 연결되고, 외부 메모리로부터 명령어를 취득하기 위해 명령어 페치 버퍼에 의해 사용되고, 또한 외부 메모리로부터 제1 매트릭스의 소스 데이터, 제1 매트릭스, 및 제2 매트릭스 중 적어도 하나를 취득하기 위해 저장 유닛 액세스 제어기에 의해 더 사용되는 버스 인터페이스 유닛을 더 포함한다.
도 1은 종래 기술에서 2개의 매트릭스의 곱을 계산하는 프로세스의 개략도이고;
도 2는 종래 기술에서 콘볼루션 커널(convolution kernel)을 가중치 매트릭스(weight matrix)로 변환하는 개략도이고;
도 3은 종래 기술에서 입력 데이터를 입력 매트릭스로 변환하는 개략도이고;
도 4는 종래 기술에서 2개의 매트릭스에 대하여 곱셈 연산을 수행하기 위한 방법의 개략도이고;
도 5는 본 발명의 실시형태에 따른 연산 가속기의 개략적인 구성도이고;
도 6은 본 발명의 실시형태에 따른 연산 회로의 개략적인 구성도이고;
도 7은 본 발명의 실시형태에 따른 연산 회로에서의 배선의 개략도이고;
도 8은 본 발명의 실시형태에 따른 각각의 연산 블록에 로딩되는 열 벡터의 개략도이고;
도 9는 본 발명의 실시형태에 따른 각각의 연산 그룹에서의 연산 유닛 내의 데이터의 개략도이고;
도 10은 본 발명의 실시형태에 따른 각각의 연산 블록에 로딩되는 행 벡터의 개략도이고;
도 11은 본 발명의 실시형태에 따른 각각의 연산 그룹에서의 연산 유닛 내의 데이터의 개략도이고;
도 12는 본 발명의 실시형태에 따른 각각의 연산 그룹에서의 연산 유닛에 의해 계산되는 데이터의 개략도이고;
도 13은 본 발명의 실시형태에 따른 가산기 트리와 연산 블록 사이의 관계의 개략도이고;
도 14는 본 발명의 실시형태에 따른 연산 유닛의 개략적인 구성도이고;
도 15는 본 발명의 실시형태에 따른 다른 연산 유닛의 개략적인 구성도이고;
도 16은 본 발명의 실시형태에 따른 다른 연산 가속기의 개략적인 구성도이고;
도 17은 본 발명의 실시형태에 따른 또 다른 연산 가속기의 개략적인 구성도이고;
도 18은 본 발명의 실시형태에 따른 패딩(padding) 매트릭스의 개략도이고;
도 19는 본 발명의 실시형태에 따른 분할된 매트릭스들의 개략도이고;
도 20은 본 발명의 실시형태에 따른 제어기가 연산 가속기를 제어해서 매트릭스 곱셈 연산을 완료하는 흐름도이고;
도 21은 본 발명의 실시형태에 따른 CPU가 연산 가속기를 제어해서 매트릭스 곱셈 연산을 구현하는 흐름도이다.
도 2는 종래 기술에서 콘볼루션 커널(convolution kernel)을 가중치 매트릭스(weight matrix)로 변환하는 개략도이고;
도 3은 종래 기술에서 입력 데이터를 입력 매트릭스로 변환하는 개략도이고;
도 4는 종래 기술에서 2개의 매트릭스에 대하여 곱셈 연산을 수행하기 위한 방법의 개략도이고;
도 5는 본 발명의 실시형태에 따른 연산 가속기의 개략적인 구성도이고;
도 6은 본 발명의 실시형태에 따른 연산 회로의 개략적인 구성도이고;
도 7은 본 발명의 실시형태에 따른 연산 회로에서의 배선의 개략도이고;
도 8은 본 발명의 실시형태에 따른 각각의 연산 블록에 로딩되는 열 벡터의 개략도이고;
도 9는 본 발명의 실시형태에 따른 각각의 연산 그룹에서의 연산 유닛 내의 데이터의 개략도이고;
도 10은 본 발명의 실시형태에 따른 각각의 연산 블록에 로딩되는 행 벡터의 개략도이고;
도 11은 본 발명의 실시형태에 따른 각각의 연산 그룹에서의 연산 유닛 내의 데이터의 개략도이고;
도 12는 본 발명의 실시형태에 따른 각각의 연산 그룹에서의 연산 유닛에 의해 계산되는 데이터의 개략도이고;
도 13은 본 발명의 실시형태에 따른 가산기 트리와 연산 블록 사이의 관계의 개략도이고;
도 14는 본 발명의 실시형태에 따른 연산 유닛의 개략적인 구성도이고;
도 15는 본 발명의 실시형태에 따른 다른 연산 유닛의 개략적인 구성도이고;
도 16은 본 발명의 실시형태에 따른 다른 연산 가속기의 개략적인 구성도이고;
도 17은 본 발명의 실시형태에 따른 또 다른 연산 가속기의 개략적인 구성도이고;
도 18은 본 발명의 실시형태에 따른 패딩(padding) 매트릭스의 개략도이고;
도 19는 본 발명의 실시형태에 따른 분할된 매트릭스들의 개략도이고;
도 20은 본 발명의 실시형태에 따른 제어기가 연산 가속기를 제어해서 매트릭스 곱셈 연산을 완료하는 흐름도이고;
도 21은 본 발명의 실시형태에 따른 CPU가 연산 가속기를 제어해서 매트릭스 곱셈 연산을 구현하는 흐름도이다.
아래에서는, 본원의 실시형태들에 있어서의 첨부 도면을 참조하여 본원의 실시형태들에 있어서의 기술적인 해법을 설명한다. 본원의 설명에 있어서, 달리 언급하지 않는 한, "/"는 또는을 의미하고, 예를 들어, A/B는 A 또는 B를 나타낼 수 있고, "복수의(a plurality of)"는 2개 이상을 의미한다.
본 발명의 실시형태들에서 제공되는 연산 가속기는 머신 러닝, 딥 러닝, 및 콘볼루션 신경망과 같은 분야에 적용될 수 있거나, 또는 디지털 화상 처리 및 디지털 신호 처리와 같은 분야에 적용될 수 있거나, 또는 매트릭스 곱셈 연산과 관련되는 다른 분야에 적용될 수 있다.
최근, 화상 분류, 화상 인식, 음성 인식, 및 그 밖의 관련 분야에서의 콘볼루션 신경망의 우수한 성능으로 인해, 콘볼루션 신경망은 학계 및 산업계에서 연구 및 개발의 핫스팟이 되었다. 콘볼루션 신경망은 주로 콘볼루션 및 완전하게 연결된(fully connected)(FC로 약기함) 연산을 포함한다. 콘볼루션 연산의 연산량은 일반적으로 전체 네트워크의 연산량의 70% 이상을 차지할 수 있다. 본 발명의 실시형태들에서 제공되는 연산 가속기는 콘볼루션 신경망에서의 콘볼루션 연산 및 FC 연산을 수행할 수 있다.
콘볼루션 연산은 엄격한 의미에서는 매트릭스 곱셈 연산과 동등하지 않다. 그러나, 콘볼루션 연산은 적절한 데이터 조정을 통해 매트릭스 곱셈 연산으로 변환될 수 있다. 콘볼루션 신경망에는 일반적으로 복수의 콘볼루션 커널이 존재한다. 콘볼루션 커널은 3차원이고, 3차원 데이터를 포함한다. x 방향 및 y 방향은 데이터의 길이 및 폭이고, z 방향은 데이터의 깊이로 간주될 수 있다. 콘볼루션 커널은 실제로 필터(filter)이고, 주로 화상에서 상이한 특징들을 추출하도록 구성된다. 도 2를 참조하면, 콘볼루션 커널은 실질적으로 일련의 가중치들의 조합이다. K개의 콘볼루션 커널이 존재한다고 가정한다. K개의 콘볼루션 커널에서 z 방향으로 동일한 위치에서 N개의 요소가 추출되고, N*K 가중치 매트릭스(weight matrix)가 취득될 수 있다. 콘볼루션 커널은 연산 가속기가 매트릭스 곱셈 연산을 수행할 때 호출하기 위한 연산 가속기의 사양(구체적으로, 연산 가속기에 의해 계산될 수 있는 매트릭스의 행 수량 및 열 수량)에 기초하여 가중치 매트릭스 형태로 연산 가속기의 메모리에 미리 저장될 수 있다. 본 발명의 실시형태들에 있어서, "*"는 "곱하기(multiplying)"를 나타낸다.
도 3을 참조하면, 콘볼루션 커널의 스트라이드(stride)(본 발명의 실시형태들에 있어서는, 스트라이드가 1임)에 기초하여, 연산 가속기가 z 방향에 있어서 M개의 입력 지점의 N개의 데이터 조각, 즉, 총 M*N개의 데이터 조각을 추출할 수 있다. 입력 매트릭스(input matrix)가 형성될 수 있다. 연산 가속기는 입력 매트릭스 및 가중치 매트릭스에 대하여 곱셈 연산을 수행할 필요가 있다.
FC 연산은 실질적으로 벡터와 매트릭스의 곱셈 연산이다. FC 연산의 입력은 9216개의 요소를 가진 벡터이고, FC에서는 4096개의 지점이 출력될 필요가 있다. 이 경우, FC에서 지점 출력을 취득하기 위해, 9216개의 요소를 가진 벡터 및 9216개의 가중치에 대하여 점 곱셈 연산이 수행될 필요가 있으며; 4096개의 지점을 모두 취득하기 위해서는, 9216의 벡터 및 9216×4096개의 가중치에 대하여 점 곱셈 연산이 수행될 필요가 있다.
도 4는 매트릭스 C=A*B의 계산식을 도시하고, 여기서 A는 M*N 크기를 갖는 매트릭스이고, B는 N*K 크기를 갖는 매트릭스이다. 본 발명의 실시형태들에 있어서, M, N, 및 K는 양의 정수이다. 계산을 통해 매트릭스 C에서의 하나의 데이터 조각을 취득하기 위해, 매트릭스 A에서의 행 벡터의 데이터 및 매트릭스 B에서의 열 벡터의 상응하는 데이터에 대하여 점 곱셈 연산이 수행될 필요가 있고, 이어서 가산이 수행된다. 다시 말해, 계산을 통해 매트릭스 C에서의 하나의 데이터 조각을 취득하기 위해, N 곱셈 연산이 수행될 필요가 있다. 이 경우, 계산을 통해 매트릭스 C를 취득하기 위해, M*N*K 곱셈 연산이 수행될 필요가 있다.
연산 가속기(50)가 본 발명의 실시형태에서 제공된다. 도 5에 도시된 바와 같이, 연산 가속기(50)는 제1 메모리(501), 제2 메모리(502), 연산 회로(503), 및 제어기(504)를 포함한다. 연산 회로(503)는 버스를 사용해서 제1 메모리(501) 및 제2 메모리(502)와 데이터 통신을 수행할 수 있다. 연산 회로(503)는 제1 메모리(501) 및 제2 메모리(502)로부터 매트릭스 데이터를 추출하고 곱셈 연산을 수행하도록 구성된다. 제어기(504)는, 사전설정된 프로그램 또는 명령어에 따라, 연산 회로(503)를 제어해서 곱셈 연산을 완료하도록 구성된다.
제1 메모리(501)는 제1 매트릭스를 저장하도록 구성되며, 제1 매트릭스는 M*N 매트릭스이다. 매트릭스 A가 제1 매트릭스일 경우, 제1 매트릭스 A에서의 행 i 및 열 j의 요소는 Aij로 표시될 수 있다. 본 발명의 이 실시형태에서 언급되는 제1 메모리(501), 및 각각 아래에서 언급되는 제2 메모리(502), 제3 메모리(506), 및 저장 유닛은 레지스터, 랜덤 액세스 메모리(random access memory, RAM으로 약기함), 정적 랜덤 액세스 메모리, 플래시 메모리, 또는 다른 판독 및 기록 가능 메모리일 수 있다.
제2 메모리(502)는 제2 매트릭스를 저장하도록 구성되며, 제2 매트릭스는 N*K 매트릭스이다. 매트릭스 B가 제2 매트릭스일 경우, 제2 매트릭스 B에서의 행 j 및 열 g의 요소는 Bjg로 표시될 수 있다.
M, N, 및 K는 0보다 큰 정수이고, i는 0보다 크고 M+1보다 작은 정수이고, g는 0보다 크고 K+1보다 작은 정수이고, j는 0보다 크고 N+1보다 작은 정수이다. M, N, 및 K 중 어느 2개의 파라미터가 동일할 수 있거나, 또는 M, N, 및 K가 모두 동일할 수 있다.
도 6에 도시된 바와 같이, 연산 회로(503)는 하나 이상의 매트릭스 곱셈 회로(5031) 및 하나 이상의 가산기 회로(5032)를 포함할 수 있다. 하나의 가산기 회로(5032)는 하나의 매트릭스 곱셈 회로(5031)에 대응할 수 있다. 대안으로서, 하나의 가산기 회로(5032)는 복수의 매트릭스 곱셈 회로(5031)에 대응할 수 있다. 연산 회로(503)에 포함되는 복수의 매트릭스 곱셈 회로(5031)는 각각의 매트릭스 곱셈 연산을 독립적으로 수행할 수 있다. 도 6은 연산 회로(503)가 2개의 매트릭스 곱셈 회로(5031)를 포함하는 실시예를 사용하여 도시된다. 매트릭스 곱셈 회로(5031)는 연산 블록들을 포함하는 M개의 연산 그룹을 포함하고, 각각의 연산 그룹은 K개의 연산 블록을 포함하고, 각각의 연산 블록은 N개의 연산 유닛을 포함하고, 연산 유닛에는 제각기 제1 메모리 및 제2 메모리에 의해 송신되는 데이터를 수신하는 데 사용되는 2개의 입력이 제공되고, 연산 유닛은 2개의 데이터 조각을 함께 곱한다. 가산기 회로(5032)는 동일한 연산 블록에 속하는 연산 유닛들의 계산 결과들을 더해서 각각의 연산 블록의 계산 결과를 취득하도록 구성된다.
제어기(504)는 하기의 동작들을 수행해서 제1 매트릭스와 제2 매트릭스의 곱을 계산할 수 있다:
제2 매트릭스의 K개의 열 벡터를 각각의 연산 그룹의 K개의 연산 블록에 제각기 기록하는 동작― 여기서, 제2 매트릭스의 벡터들의 g번째 열의 j번째 데이터 조각이 각각의 연산 그룹에서의 g번째 연산 블록의 j번째 연산 유닛에 기록되고, 연산 회로(503)는, 제어기(504)의 제어 하에서, 제2 메모리(502)에서 제2 매트릭스의 데이터를 판독하고 제2 매트릭스의 데이터를 각각의 연산 그룹의 K개의 연산 블록에 버퍼링할 수 있거나, 또는 제어기(504)는 제2 메모리(502)를 제어해서 제2 매트릭스의 데이터를 연산 회로(503)에서의 각각의 연산 그룹의 K개의 연산 블록에 기록할 수 있음 ―;
제1 매트릭스의 M개의 행 벡터를 M개의 연산 그룹에 제각기 송신하는 동작― 여기서, 제1 매트릭스의 i번째 행 벡터는 M개의 연산 그룹에서 i번째 연산 그룹에 송신되고, i번째 연산 그룹에서의 각각의 연산 블록의 j번째 연산 유닛은 i번째 행 벡터의 j번째 데이터 조각을 수신하고, 연산 회로(503)는, 제어기(504)의 제어 하에서, 제1 메모리(501)에서 제1 매트릭스의 데이터를 판독할 수 있거나, 또는 제어기(504)는 제1 메모리(501)를 제어해서 제1 매트릭스의 데이터를 연산 회로(503)에서의 M개의 연산 그룹에 송신할 수 있음 ―; 및
M개의 연산 그룹의 각각의 연산 유닛은 해당 연산 유닛에 의해 수신되는 2개의 데이터 조각에 대하여 곱셈 연산을 수행하고, 가산기 회로(5032)는 각각의 연산 블록의 연산 유닛들의 계산 결과들을 더해서 제3 매트릭스를 취득하고, 여기서 제3 매트릭스는 제1 매트릭스 및 제2 매트릭스의 곱이고, 제3 매트릭스의 i 행 및 g 열의 요소는 i번째 연산 그룹의 g번째 연산 블록의 계산 결과임.
선택적으로, 제1 메모리(501)는 제1 버스를 사용해서 연산 회로(503)에 연결되고, 제1 버스의 비트 폭은 Wi*N*M이다. 제2 메모리(502)는 제2 버스를 사용해서 연산 회로(503)에 연결되고, 제2 버스의 비트 폭은 Wi*N이다. Wi는 입력 데이터로 이루어지며 연산 유닛에 의해 허용되는 최대 비트 폭이다.
구체적으로, Wi는 연산 유닛의 입력 데이터의 유형에 기초하여 설정될 수 있다. 예를 들어, int(정수)8 유형의 데이터는 비트 폭이 8비트이고, fp(부동 소수점 수량)16 유형의 데이터는 비트 폭이 16비트이고, fp32 유형의 데이터는 비트 폭이 32비트인 등등이다. 출력 데이터로 이루어지며 연산 유닛에 의해 허용되는 비트 폭은 연산 유닛의 계산 결과의 범위에 기초하여 설정될 수 있거나, 또는 다른 방식으로 결정될 수 있다. 예를 들어, 연산 가속기(50)가 입력 매트릭스와 가중치 매트릭스의 곱을 계산하도록 구성될 경우, 입력 매트릭스의 데이터 및 가중치 매트릭스의 데이터는 모두 int8 유형이고, 연산 유닛의 출력 결과도 int8 유형으로 설정될 수 있다. 이 경우, 출력 데이터의 비트 폭은 입력 데이터의 비트 폭과 동일하다. 분명히, 연산 유닛의 출력 데이터는 int16 유형으로 변환될 수 있다. 이 경우, 출력 데이터의 비트 폭은 16비트이다. 또한, 출력 데이터의 비트 폭은 다른 실제 요건에 기초하여 대안적으로 설계될 수 있다.
구체적으로, 도 6에 도시된 연산 회로(503)에서의 연산 블록들 및 연산 유닛들의 배열 방식에 기초하여, 도 7은 연산 회로(503)에서의 특정 배선의 개략도이다.
전술한 실시형태에 기초하여, 연산 회로(503)가 M*N*K개의 연산 유닛을 포함한다는 것을 알 수 있다. 도 6 및 도 7을 참조하면, 이들 연산 유닛은 M개의 연산 그룹으로 분류되고, 각각의 연산 그룹은 N*K개의 연산 유닛을 포함하고, N*K개의 연산 유닛은 K개의 열에 배열되어 K개의 연산 블록을 형성하고, 각각의 연산 블록은 N개의 연산 유닛을 포함한다.
매트릭스 곱셈 연산을 공식적으로 수행하기 전에, 연산 가속기(50)는 제2 매트릭스의 데이터를 M개의 연산 그룹에 미리 로딩할 필요가 있다. 모든 연산 그룹에 대하여 동일한 제2 매트릭스가 사용되기 때문에, 제2 메모리(502)는 데이터를 브로드캐스팅을 통해 제2 매트릭스들에 로딩할 수 있다.
도 7을 참조하면, 연산 회로(503)와 제2 메모리(502) 사이의 비트 폭이 Wi*N인 제2 버스(Wi는 입력 데이터로 이루어지며 연산 유닛에 의해 허용되는 최대 비트 폭이고, N은 하나의 연산 블록에서의 연산 유닛의 수량이고, 이 경우, 제2 버스의 폭은 Wi*N임)가 존재하고, 제2 버스는 데이터를 브로드캐스트하고, 그때마다 M개의 연산 그룹에서의 하나의 연산 블록에 대하여 열 벡터 브로드캐스팅을 수행하도록 구성된다. 구체적으로, 제2 매트릭스에서의 하나의 열 벡터는 먼저 M개의 복사본으로 복제될 수 있고, 이어서 열 벡터들의 M개의 복사본이 M개의 연산 그룹의 상응하는 연산 블록들에 브로드캐스트된다. 각각의 연산 블록에 로딩되는 열 벡터에 대해서는, 도 8을 참조한다. 제2 메모리(502)가 하나의 열 벡터를 브로드캐스트하기 위해 하나의 사이클(사이클은 특정 클록 신호에 기초하여 설정된 클록 사이클일 수 있거나, 또는 다른 제어 신호에 기초하여 생성된 처리 사이클일 수 있음)을 필요로 하면, 제2 매트릭스에서의 모든 열 벡터의 브로드캐스팅을 완료하기 위해서는 K개의 사이클이 필요하다.
예를 들어, 도 6에 도시된 연산 그룹들에서의 연산 블록들의 배열 방식에 기초하여, 매트릭스 B가 제2 매트릭스이면, 제2 매트릭스 B는 이라고 가정한다. 이 경우, N=5이고, K=4이다. 제2 매트릭스 B에서의 4개의 열 벡터가 제각기 4개의 연산 그룹에서의 4개의 연산 블록에 기록된 후의 연산 유닛의 데이터에 대해서는, 도 9를 참조한다.
연산 회로(503)와 제1 메모리(501) 사이의 비트 폭이 Wi*N*M인 제1 버스(Wi는 입력 데이터로 이루어지며 연산 유닛에 의해 허용되는 최대 비트 폭이고, N은 하나의 연산 블록에서의 연산 유닛의 수량이고, M은 연산 그룹의 수량이고, 이 경우, 제1 버스의 폭은 Wi*N*M임)가 존재하고, 제1 버스는 데이터를 제1 매트릭스에 송신하도록 구성된다. 각각의 연산 그룹에 입력되는 데이터의 비트 폭은 Wi*N이다. 각각의 연산 그룹은 제1 매트릭스에서의 하나의 행 벡터를 수신하고, 동시에 각각의 연산 그룹에서의 모든 연산 블록에 의해 수신되는 행 벡터들은 동일하고, 연산 그룹들에 의해 수신되는 행 벡터들은 상이하다. 구체적으로, 제1 매트릭스에서의 것이며 연산 그룹에 송신될 행 벡터는 연산 그룹에서 K개의 복사본으로 복제될 수 있고, 행 벡터들의 K개의 복사본은 제각기 연산 그룹에서의 K개의 연산 블록에 송신된다. 각각의 연산 블록에 로딩되는 행 벡터에 대해서는, 도 10을 참조한다. 각각의 연산 그룹에서의 하나의 행의 연산 유닛들은 동일한 데이터를 사용하기 때문에, 제1 메모리(501)는 데이터를 행 브로드캐스팅을 통해 연산 유닛들에 송신할 수 있다. 총 M개의 연산 그룹이 존재하기 때문에, 크기가 M*N인 매트릭스가 하나의 사이클 내에 송신될 수 있다.
예를 들어, 도 6에 도시된 연산 그룹들에서의 연산 블록들의 배열 방식에 기초하여, 매트릭스 A가 제1 매트릭스이면, 제1 매트릭스 A는 이라고 가정한다. 이 경우, M=4이고, N=5이다. 제1 매트릭스 A에서의 4개의 행 벡터가 제각기 4개의 연산 그룹에 송신된 후의 연산 유닛의 데이터에 대해서는, 도 11을 참조한다. 4개의 연산 그룹에서의 연산 유닛들에 의해 계산되는 데이터에 대해서는, 도 12를 참조한다. 각각의 연산 블록의 연산 유닛들의 계산 결과들을 더해서 제1 매트릭스 A와 제2 매트릭스 B의 곱, 즉 제3 매트릭스 C를 취득한다.
본 발명의 이 실시형태에서 제공되는 방법이 콘볼루션 신경망에 적용될 경우, 제1 매트릭스는 입력 매트릭스일 수 있고, 제2 매트릭스는 가중치 매트릭스일 수 있다.
본 발명의 이 실시형태에서 제공되는 방법에 있어서, M개의 연산 그룹이 M*N*K개의 연산 유닛을 포함하기 때문에, 연산 가속기는 하나의 클록 사이클 내에 M*N*K 곱셈 연산을 수행할 수 있다. 이 경우, 연산 가속기(50)는 M*N 매트릭스 및 N*K 매트릭스의 곱을 계산할 수 있다. 종래 기술에 비해, 이 방법은 매트릭스 곱셈 연산에 필요한 시간을 크게 줄일 수 있다.
선택적으로, 하나의 매트릭스 곱셈 회로(5031)가 하나의 가산기 회로(5032)에 대응하고 있을 경우, 가산기 회로(5032)는 M*K개의 가산기 트리를 포함하고, 하나의 가산기 트리는 하나의 연산 블록에 대응하고, 가산기 트리는 대응하는 연산 블록의 N개의 연산 유닛에 연결되고, 가산기 트리는 가산기 트리에 연결되는 N개의 연산 유닛의 계산 결과들을 더하도록 구성된다.
연산 블록의 N개의 연산 유닛 모두의 계산 결과에 대하여 누적 연산이 수행될 필요가 있으므로, 연산 블록의 계산 결과가 취득될 수 있다는 점에 유의해야 한다. 누적 연산은 구체적으로 도 13에 도시된 가산기 트리를 사용해서 하나의 연산 블록의 모든 연산 유닛의 계산 결과들에 대하여 수행될 수 있다. 가산기 트리는 실질적으로 일련의 가산기들의 조합이고, 연결 방식은 도 13에 도시되어 있다. 이 경우, 가산기 트리는 N개의 연산 유닛의 계산 결과들을 더할 필요가 있기 때문에, 가산기 트리의 출력 결과의 비트 폭은 Wa로 표시되고, Wa는 가산기 트리의 출력 결과의 범위에 의존한다. 각각의 연산 유닛의 계산 결과의 비트 폭이 Wo이면, 가산기 트리가 누적을 수행한 후에 취득된 연산 블록들의 출력 결과는 Wo에 의해 나타내질 수 있는 최대 범위를 초과할 수 있다. 따라서, 일반적으로 연산 블록의 출력 결과를 나타내기 위해서는 더 큰 비트 폭을 사용할 필요가 있다. 예를 들어, 연산 유닛의 입력 데이터의 최대 비트 폭은 8비트이고, 가산기 트리의 출력 데이터의 비트 폭은 32비트로 설정될 수 있다.
대안으로서, 하나의 가산기 회로(5032)는 복수의 매트릭스 곱셈 회로(5031)에 대응할 수 있다. 이 경우, 하나의 매트릭스 곱셈 회로(5031)는 M*K개의 가산기 트리에 대응할 수 있고, 복수의 매트릭스 곱셈 회로(5031)에 대응하는 M*K개의 가산기 트리가 하나의 가산기 회로(5032)에 배치될 수 있다. 도 6을 참조하면, 도 6에 도시된 연산 회로(503)에 포함되는 가산기 회로(5032)는 2개의 매트릭스 곱셈 회로(5031)에 대응한다. 이 경우, 가산기 회로(5032)는 2*M*K개의 가산기 트리를 포함하고, 2*M*K개의 가산기 트리의 M*K는 2개의 매트릭스 곱셈 회로(5031) 중 하나에서의 M*K개의 연산 블록의 연산 유닛들에 의해 출력되는 계산 결과들을 더하도록 구성되고, 2*M*K개의 가산기 트리의 다른 M*K개의 가산기 트리는 2개의 매트릭스 곱셈 회로(5031) 중 다른 매트릭스 곱셈 회로(5031)에서의 M*K개의 연산 블록의 연산 유닛들에 의해 출력되는 계산 결과들을 더하도록 구성된다.
한 가지 경우에 있어서, 도 14를 참조하면, 연산 유닛은 저장 유닛에 기록되는 데이터를 저장하도록 구성되는 저장 유닛; 및 수신된 데이터와 저장 유닛에 저장된 데이터의 곱을 계산하도록 구성되는, 저장 유닛에 연결된 곱셈 회로를 포함한다. 구체적으로, 설명의 편의상, 연산 유닛에서의 제1 매트릭스의 데이터를 "제1 데이터"라고 하고, 제2 매트릭스의 데이터를 제2 데이터라고 한다. 이 경우, 도 14를 참조하면, 저장 유닛은 제2 데이터를 저장하도록 구성될 수 있다. 곱셈 회로는 제1 데이터 및 제2 데이터를 입력하고 계산 결과를 출력하도록 구성되는 인터페이스를 더 포함할 수 있다. 저장 유닛은 제2 데이터를 기록하도록 구성되는 인터페이스를 더 포함할 수 있다.
다른 경우에 있어서, 도 15를 참조하면, 연산 유닛은 복수의 저장 유닛(도 15는 연산 유닛이 2개의 저장 유닛을 포함하는 실시예를 사용해서 도시됨), 곱셈 회로, 복수의 저장 유닛에 연결되는 제1 선택 회로, 및 복수의 저장 유닛과 곱셈 회로에 연결되는 제2 선택 회로를 포함한다.
복수의 저장 유닛은 데이터를 저장하도록 구성된다.
제1 선택 회로는, 곱셈 회로가 곱셈 연산을 수행할 때 사용되는 데이터를 저장하기 위한 저장 유닛을, 곱셈 회로가 곱셈 연산을 수행하기 전에 복수의 저장 유닛으로부터 선택하도록 구성된다.
제2 선택 회로는, 곱셈 회로가 곱셈 연산을 수행할 때 사용되는 데이터를 저장하기 위한 저장 유닛을, 곱셈 회로가 곱셈 연산을 수행할 때 선택하도록 구성된다.
곱셈 회로는 수신된 데이터와 제2 선택 회로에 의해 선택된 저장 유닛에 저장되는 데이터의 곱을 계산하도록 구성된다.
구체적으로, 복수의 저장 유닛은 데이터를 상이한 매트릭스들로 저장할 수 있다. 제1 선택 회로는 매트릭스의 데이터가 저장될 저장 유닛을 선택할 수 있다.
저장 유닛은 2개의 블록(block)으로 분할될 수 있다. 연산 유닛이 복수의 저장 유닛을 포함할 경우, 연산 유닛이 하나의 저장 유닛 내의 하나의 블록에 있는 데이터에 기초하여 곱셈 연산을 수행하면, 제어기(504)는 복수의 저장 유닛 중 다른 저장 유닛에 또는 곱셈 연산에 참여한 저장 유닛 내의 다른 블록에 데이터를 더 기록할 수 있고, 그에 따라 연산 유닛의 작업 효율이 향상된다.
도 15를 참조하면, 매트릭스 곱셈 회로(5031)가 제1 매트릭스 A와 제2 매트릭스 B의 곱을 계산할 필요가 있고, 또한 제1 매트릭스 A와 매트릭스 D의 곱을 계산할 필요가 있을 경우, 제어기(504)는 제2 매트릭스 B 및 매트릭스 D 모두의 데이터를 연산 유닛의 저장 유닛들에 기록할 수 있다. 제1 선택 유닛은 제2 매트릭스 B의 제2 데이터 0을 저장 유닛 0에 기록하고 매트릭스 D의 제2 데이터 1을 저장 유닛 1에 기록하도록 선택할 수 있다. 곱셈 회로가 제1 데이터 및 제2 데이터 0에 대하여 곱셈 연산을 수행할 경우, 제2 선택 회로는 저장 유닛 0의 제2 데이터 0을 곱셈 회로에 출력하도록 선택하고, 곱셈 회로가 제1 데이터 및 제2 데이터 1에 대하여 곱셈 연산을 수행할 경우, 제2 선택 회로는 저장 유닛 1의 제2 데이터 1을 곱셈 회로에 출력하도록 선택한다.
이 경우, 각각의 연산 유닛은 4개의 입력, 즉 제1 데이터, 제2 데이터, 및 2개의 레지스터 선택 신호를 수신한다. 하나의 레지스터 선택 신호는, 곱셈 회로가 곱셈 연산을 수행할 때 사용되는 데이터를 저장하기 위한 저장 유닛을, 곱셈 회로가 곱셈 연산을 수행하기 전에 복수의 저장 유닛으로부터 선택하도록 제1 선택 회로를 제어하는 데 사용된다. 다른 레지스터 선택 신호는, 곱셈 회로가 곱셈 연산을 수행할 때 사용되는 데이터를 저장하기 위한 저장 유닛을, 곱셈 회로가 곱셈 연산을 수행할 때 선택하도록 제2 선택 회로를 제어하는 데 사용된다.
선택적으로, 도 16을 참조하면, 연산 가속기(50)는 제1 메모리(501), 제2 메모리(502), 및 제어기(504)에 연결되는 저장 유닛 액세스 제어기(505)를 더 포함할 수 있다.
저장 유닛 액세스 제어기(505)는, 제어기(504)의 제어 하에서, 제1 매트릭스 및 제2 매트릭스를 취득하고, 제1 매트릭스를 제1 메모리(501)에 세이브하고, 제2 매트릭스를 제2 메모리(502)에 세이브하도록 구성된다.
저장 유닛 액세스 제어기(505)는 직접 메모리 액세스 제어기(504)((Direct Memory Access Controller, DMAC로 약기함) 또는 로드/저장 유닛일 수 있다.
선택적으로, 도 16을 참조하면, 연산 가속기(50)는 이하의 구성, 즉:
제1 매트릭스의 소스 데이터를 저장하도록 구성되는 제3 메모리(506);
제1 메모리(501), 제2 메모리(502), 제3 메모리(506), 및 제어기(504)에 연결되는 저장 유닛 액세스 제어기(505)― 여기서, 저장 유닛 액세스 제어기(505)는, 제어기(504)의 제어 하에서, 제1 매트릭스 및 제2 매트릭스의 소스 데이터를 취득하고, 제1 매트릭스의 소스 데이터를 제3 메모리(506)에 세이브하고, 제2 매트릭스를 제2 메모리(502)에 세이브하도록 구성됨 ―; 및
제1 메모리(501), 제3 메모리(506), 및 제어기(504)에 연결되는 벡터 계산 유닛(벡터 유닛)(507)― 여기서, 벡터 계산 유닛(507)은, 제어기(504)의 제어 하에서, 제1 매트릭스의 소스 데이터를 제1 매트릭스로 변환하고, 제1 매트릭스를 제1 메모리(501)에 세이브하도록 구성됨 ―을 더 포함할 수 있다.
구체적으로, 적용 시나리오에 있어서, 저장 유닛 액세스 제어기(505)에 의해 취득되는 데이터는 직접적으로 제1 매트릭스는 아니다. 이 경우, 저장 유닛 액세스 제어기(505)는 취득된 데이터(즉, 제1 매트릭스의 소스 데이터)를 제3 메모리(506)에 세이브할 수 있다. 벡터 계산 유닛(507)은 제3 메모리(506) 내의 제1 매트릭스의 소스 데이터를 변환해서 제1 매트릭스를 취득할 수 있다.
예를 들어, 연산 가속기(50)가 제1 매트릭스는 5*4 매트릭스이어야 하고 제1 매트릭스의 소스 데이터는 4*4 매트릭스이어야 한다고 요구하면, 벡터 계산 유닛(507)은 모든 데이터가 0인 행 벡터로 제1 매트릭스의 소스 데이터를 패딩(padding)해서 제1 매트릭스를 취득할 수 있다. 예를 들어, 제1 매트릭스의 소스 데이터가 이고, 제1 매트릭스가 이다.
다른 실시예의 경우, 연산 가속기(50)가 제1 매트릭스는 2*4 매트릭스이어야 하고 제1 매트릭스의 소스 데이터는 4*4 매트릭스이어야 한다고 요구하면, 벡터 계산 유닛(507)은 제1 매트릭스의 소스 데이터에서 벡터들의 처음 2개의 행을 포함하는 매트릭스를 제1 매트릭스로서 결정할 수 있다. 예를 들어, 제1 매트릭스의 소스 데이터가 이고, 제1 매트릭스가 이다.
한 가지 경우에 있어서, 도 17을 참조하면, 제3 메모리(506)는 연산 회로(503)에 연결되고, 제3 메모리(506)는 제3 매트릭스를 저장하도록 더 구성된다. 이 경우, 제3 메모리(506)는 아래의 누산기(508)를 사용해서 연산 회로(503)에 더 연결될 수 있다. 연산 회로(503)는 계산 결과를 누산기(508)에 출력할 수 있다. 누산기(508)는 제3 매트릭스를 제3 메모리에 세이브할 수 있다.
다른 경우에 있어서, 도 16을 참조하면, 연산 가속기(50)는 연산 회로(503), 벡터 계산 유닛(507), 및 제어기(504)에 연결되는 누산기(508)를 더 포함한다.
누산기(508)는 제어기(504)의 제어 하에서 제3 매트릭스 및 제4 매트릭스 내의 상응하는 위치들에 있는 요소들을 더해서 제5 매트릭스를 취득하도록 구성된다.
벡터 계산 유닛(507)은 제어기(504)의 제어 하에서 제5 매트릭스를 제3 메모리(506)에 세이브하도록 더 구성된다.
제3 매트릭스는 제1 매트릭스와 제2 매트릭스의 곱이고, 제1 매트릭스는 첫 번째로 계산될 매트릭스의 제1 부분을 포함하고, 첫 번째로 계산될 매트릭스의 제1 부분은 첫 번째로 계산될 매트릭스의 첫 번째 열 내지 N 번째 열의 요소들이고, 제2 매트릭스는 두 번째로 계산될 매트릭스의 제1 부분이고, 두 번째로 계산될 매트릭스의 제1 부분은 두 번째로 계산될 매트릭스의 첫 번째 행 내지 N 번째 행의 요소들이고, 첫 번째로 계산될 매트릭스는 요소들의 M개의 행을 포함하고, 두 번째로 계산될 매트릭스는 요소들의 K개의 열을 포함하고, 제4 매트릭스는 첫 번째로 계산될 매트릭스의 제2 부분과 두 번째로 계산될 매트릭스의 제2 부분의 곱이고, 첫 번째로 계산될 매트릭스의 제2 부분은 첫 번째로 계산될 매트릭스의 제1 부분 이외의 부분이고, 두 번째로 계산될 매트릭스의 제2 부분은 두 번째로 계산될 매트릭스의 제1 부분 이외의 부분이다.
본 발명의 이 실시형태에 제공되는 연산 가속기(50)는 M*N 매트릭스와 N*K 매트릭스의 곱을 계산할 수 있다는 점에 유의해야 한다. 그러나, 실제 연산에 있어서, 계산될 필요가 있는 매트릭스의 크기는 M*N 및 N*K보다 크거나 또는 작을 수 있다. 계산될 필요가 있는 매트릭스의 크기가 M*N 및 N*K보다 클 경우, 연산 가속기(50)가 계산을 수행할 때마다, 계산될 필요가 있는 2개의 매트릭스의 곱의 최종 결과의 부분적인 결과만이 취득될 수 있으며, 복수의 루프 반복이 더 필요해지고, 계산될 필요가 있는 2개의 매트릭스의 곱을 취득하기 위해 부분적인 결과들이 더해진다.
실질적으로, 계산될 필요가 있는 매트릭스들이 어느 정도 변환된 후에, 본 발명의 이 실시형태에서 제공되는 연산 가속기(50)는 임의의 행 수량 및 열 수량을 갖는 2개의 매트릭스에 대하여 곱셈 연산을 수행할 수 있다. 구체적인 구현예는 다음과 같다:
연산 가속기(50)가 Q*R 매트릭스와 R*T 매트릭스의 곱을 계산할 필요가 있으면, 다음의 2가지 사례가 발생한다:
사례 1: Q가 M보다 작고, R이 N보다 작고, T가 K보다 작다.
이 경우, Q*R 매트릭스는 패딩을 통해 M*N 매트릭스로 재구성될 수 있고, R*T 매트릭스는 패딩을 통해 N*K 매트릭스로 재구성될 수 있으며, 이어서 본 발명의 이 실시형태에서 제공되는 연산 가속기(50)가 매트릭스 곱셈 연산을 수행하는 데 사용된다. 구체적인 패딩 방법은, 매트릭스가 필요한 행 수량 및 열 수량을 갖는 매트릭스로 변경되도록, 매트릭스 주위를 요소들 0으로 패딩하는 것이다. 예를 들어, M=N=8일 경우, 도 18은 4*5 매트릭스 및 5*8 매트릭스를 패딩을 통해 8*8 매트릭스로 개별적으로 재구성하는 실시예를 도시한다.
사례 2: Q가 M보다 크거나, 또는 R이 N보다 크거나, 또는 T가 K보다 크다.
이 경우, Q가 M보다 크거나 또는 R이 N보다 클 경우, Q*R 매트릭스는 M*N 매트릭스로 분할될 필요가 있으며, 분할 전에, Q*R 매트릭스는 패딩을 통해 행 수량이 M의 배수이고 열 수량이 N의 배수인 매트릭스로 재구성될 필요가 있다. R이 N보다 크거나 또는 T가 K보다 클 경우, R*T 매트릭스는 N*K 매트릭스로 분할될 필요가 있으며, 분할 전에, R*T 매트릭스는 패딩을 통해 행 수량이 N의 배수이고 열 수량이 K의 배수인 매트릭스로 재구성될 필요가 있다.
Q*R 매트릭스의 행 수량이 M의 두 배이고, Q*R 매트릭스의 열 수량이 N의 두 배이고, R*T 매트릭스의 행 수량이 N의 두 배이고, R*T 매트릭스의 열 수량이 K의 두 배라고 가정한다. Q*R 매트릭스는 로서 표시되는 4개의 M*N 매트릭스로 분할될 수 있고, 여기서 A1, B1, C1, 및 D1은 각각 M*N 매트릭스이다. R*T 매트릭스는 로서 표시되는 4개의 N*K 매트릭스로 분할될 수 있고, 여기서 A2, B2, C2, 및 D2는 각각 N*K 매트릭스이다. Q*R 매트릭스와 R*T 매트릭스의 곱 S는 이다.
매트릭스 S는 과 의 곱을 계산함으로써 취득될 수 있다. 과 의 곱을 계산하기 위해, M*N 매트릭스 및 N*K 매트릭스의 8번의 곱셈 연산이 완료될 필요가 있다. M*N 매트릭스 및 N*K 매트릭스의 8번의 곱셈 연산은 A1A2, B1C2, A1B2, B1D2, C1A2, D1C2, C1B2, 및 D1D2이다. 8번의 매트릭스 곱셈 연산은 연산 회로(503)에서 8개의 매트릭스 곱셈 회로(5031)를 구성함으로써 완료될 수 있거나, 또는 연산 회로(503)에서 8개 이하의 매트릭스 곱셈 회로(5031)에 의해 완료될 수 있다. 예를 들어, 2개의 매트릭스 곱셈 회로(5031)는 각각 4번의 매트릭스 곱셈 연산을 완료해서 8번의 매트릭스 곱셈 연산을 완료한다.
8번의 매트릭스 곱셈 연산이 완료된 후에, S=로부터 학습할 수 있고, 이는 A1A2 및 B1C2를 더해서 매트릭스 S의 제1 행 및 제1 열의 요소를 취득하고, A1B2 및 B1D2를 더해서 매트릭스 S의 제1 행 및 제2 열의 요소를 취득하고, C1A2 및 D1C2를 더해서 매트릭스 S의 제2 행 및 제1 열의 요소를 취득하고, 또한 C1B2 및 D1D2를 더해서 매트릭스 S의 제2 행 및 제2 열의 요소를 취득한 것이다. A1A2 및 B1C2가 실시예로서 사용된다. A1A2 및 B1C2는 각각 M*K 매트릭스이다. 따라서, A1A2 및 B1C2의 상응하는 위치들에 있는 요소들이 더해지고 나서, 매트릭스 S의 제1 행 및 제1 열(본 명세서에서 매트릭스 S의 행 및 열은 에 의해 표시되는 행 및 열임)의 요소가 취득될 수 있다.
Q*R 매트릭스 및 R*T 매트릭스가 4개의 매트릭스로 분할되는 것은 전술한 설명에 대한 실시예로서 사용된다. 실제로, Q*R 매트릭스 및 R*T 매트릭스는 2개, 6개, 또는 8개 등의 매트릭스로 분할될 수 있다. 계산 원리는 전술한 것과 동일하다. 본 명세서에서는 세부 내용을 다시 설명하지 않는다.
예를 들어, M=N=K=3이라고 가정한다(이 경우, 매트릭스 A의 행 수량 및 열 수량의 어느 것도 3개가 아니고, 매트릭스 B의 행 수량 및 열 수량의 어느 것도 3개가 아니며, 매트릭스 A는 제1 매트릭스가 아니고, 매트릭스 B는 제2 매트릭스가 아니기 때문임). 매트릭스 와 매트릭스 의 곱을 계산하기 위해, 매트릭스 A는 4*5 매트릭스이기 때문에, 매트릭스 A는 패딩을 통해 매트릭스 로 재구성될 필요가 있고, 매트릭스 B는 5*4 매트릭스이기 때문에, 매트릭스 B는 패딩을 통해 매트릭스 로 재구성될 필요가 있다.
도 19를 참조하면, 매트릭스 A 및 매트릭스 B는 4개의 3*3 매트릭스로 개별적으로 분할될 수 있다. 이 경우, 3*3 매트릭스들의 8번의 곱셈 연산은 매트릭스 A와 매트릭스 B의 곱을 계산하기 위해 수행될 필요가 있다. 3*3 매트릭스들의 8번의 곱셈 연산은 A1A2, B1C2, A1B2, B1D2, C1A2, D1C2, C1B2, 및 D1D2이다. A1A2의 계산 결과는 이고, A1A2의 계산 결과를 취득한 후에, 해당 결과가 누산기(508)에 저장된다. B1C2의 계산 결과는 이고, B1C2의 계산 결과를 취득한 후에, 해당 결과가 누산기(508)에 저장된다. 누산기(508)는 A1A2 및 B1C2에서의 상응하는 위치들에 있는 요소들을 더해서 , 즉, 매트릭스 A와 매트릭스 B의 곱의 처음 3개의 행 및 처음 3개의 열의 공통 영역의 데이터를 취득한다. 매트릭스 A 및 매트릭스 B의 곱의 다른 위치들에 있는 데이터는 동일한 방식으로 계산된다. 본 명세서에서는 세부 내용을 다시 설명하지 않는다.
벡터 계산 유닛(507)은 M*K개의 연산 유닛을 포함할 수 있다. 벡터 계산 유닛(507)은 필요할 때 누산기(508)에 의해 출력되는 데이터에 대하여 벡터 곱셈, 벡터 가산, 지수 연산, 로그 연산, 또는 크기 비교와 같은 추가적인 처리를 수행할 수 있다. 예를 들어, 벡터 계산 유닛(507)은 구체적으로, 풀링(pooling), 배치 정규화(batch normalization), 또는 로컬 응답 정규화(local response normalization)와 같이, 콘볼루션 신경망에서의 비-콘볼루션/비-FC 계층의 네트워크 계산을 수행하도록 구성될 수 있다. 도 16을 참조하면, 벡터 계산 유닛(507)이 누산기(508)에 의해 출력되는 데이터에 대하여 추가적인 처리를 수행하지 않을 경우, 누산기(508)는 제5 매트릭스를 제3 메모리(506)에 직접적으로 세이브할 수 있다는 점에 유의한다.
선택적으로, 도 16 및 도 17을 참조하면, 연산 가속기(50)는 이하의 구성, 즉:
제어기(504)에 연결되어, 제어기(504)에 의해 사용되는 명령어를 저장하도록 구성되는 명령어 페치 버퍼(instruction fetch buffer)(509); 및
명령어 페치 버퍼(509), 저장 유닛 액세스 제어기(505), 및 외부 메모리에 연결되고, 외부 메모리로부터 명령어를 취득하기 위해 명령어 페치 버퍼(509)에 의해 사용되고, 또한 외부 메모리로부터 제1 매트릭스의 소스 데이터, 제1 매트릭스, 및 제2 매트릭스 중 적어도 하나를 취득하기 위해 저장 유닛 액세스 제어기(505)에 의해 더 사용되는 버스 인터페이스 유닛(510)(Bus Interface Unit, BIU로 약기함)을 더 포함할 수 있다.
구체적으로, 도 16 및 도 17을 참조하면, 본 발명의 이 실시형태에서 제공되는 연산 가속기(50)는 중앙 처리 장치(Central Processing Unit, CPU로 약기함)에 장착되는 보조 프로세서로서 사용될 수 있으며, CPU는 계산 작업을 연산 가속기(50)에 할당한다. 구체적으로, CPU는 제1 매트릭스, 제2 매트릭스, 및 명령어를 외부 메모리에 저장할 수 있다. 연산 가속기(50)는 제1 매트릭스, 제2 매트릭스, 및 명령어를 외부 메모리로부터 판독해서 매트릭스 곱셈 연산을 완료할 수 있다. 외부 메모리는 구체적으로 2배속 동기식 동적 랜덤 액세스 메모리(Double Data Rate Synchronous Dynamic Random Access Memory, DDR로 약기함) 또는 다른 판독 및 기록 가능 메모리일 수 있다. 외부 메모리는 연산 가속기(50) 전용의 메모리일 수 있다. 구체적으로, 제1 메모리(501), 제2 메모리(502), 제3 메모리(506), 및 명령어 페치 버퍼(509)는 일반적으로 온칩 버퍼(On-Chip Buffer)이다.
예를 들어, 연산 가속기(50)는 콘볼루션 신경망에 적용된다. 도 20을 참조하면, 연산 가속기(50) 내의 제어기(504)가 연산 가속기(50)를 제어해서 가중치 매트릭스와 입력 매트릭스의 곱의 계산을 완료하는 프로세스는 구체적으로 하기의 단계들을 포함할 수 있다.
2001. DMAC는 DDR로부터 가중치 매트릭스를 취득하고 가중치 매트릭스를 제2 메모리(502)에 기록한다.
2002. DMAC는 DDR로부터 입력 매트릭스를 취득하고 입력 매트릭스를 제1 메모리(501)에 송신한다.
2003. 연산 회로(503)는 제2 메모리(502)로부터 가중치 매트릭스를 판독하고, 가중치 매트릭스의 K개의 열 벡터를 각각의 연산 그룹의 K개의 연삭 블록에 제각기 기록한다.
2004. 연산 회로(503)는 제1 메모리(501)로부터 입력 매트릭스를 판독하고, 입력 매트릭스에서의 M개의 행 벡터를 M개의 연산 그룹에 제각기 송신한다.
2005. 연산 회로(503)는 매트릭스 곱셈 계산을 수행하고, 제3 매트릭스를 출력한다.
제3 매트릭스는 가중치 매트릭스와 입력 매트릭스의 곱이다.
2006. 연산 회로(503)는 제3 매트릭스를 누산기(508)에 버퍼링한다.
2007. 누산기(508)는 제3 매트릭스가 최종 결과인지를 결정한다.
최종 결과이면, 프로세스가 종료된다. 최종 결과가 아니면, 단계(2001)로 돌아간다.
전술한 단계들 및 관련 설명의 구체적인 구현예들에 대해서는, 상기의 설명을 참조한다. 본 명세서에서는 세부 내용을 다시 설명하지 않는다. 연산 가속기(50)는 매트릭스 곱셈 연산을 공식적으로 시작하기 전에 단계(2001) 내지 단계(2004)를 완료할 필요가 있다. 단계(2001) 내지 단계(2004)의 실행 순서는 도 20에 엄격하게 종속될 필요는 없으며, 단계(2003)가 단계(2001) 이후이고, 단계(2004)가 단계(2002) 이후이며, 단계(2005)가 단계(2004) 이후이기만 하면 된다.
연산 가속기(50)는 CPU에 장착되는 보조 프로세서로서 사용될 수 있다. 따라서, CPU가 연산 가속기(50)를 제어해서 매트릭스 곱셈 연산을 구현하는 프로세스를 간략히 설명한다. 도 21에 도시된 바와 같이, 프로세스는 구체적으로 하기의 단계들을 포함할 수 있다.
2101. CPU는 작업의 스케줄링을 시작한다.
작업은 매트릭스 곱셈 연산 작업이다.
2102. CPU는 가중치 매트릭스를 준비한다.
2103. CPU는 가중치 매트릭스를 DDR에 복제한다.
2104. CPU는 입력 데이터와 명령어를 비교한다.
2105. CPU는 입력 데이터 및 명령어를 DDR에 복제한다.
2106. CPU는 명령어를 연산 가속기(50) 내의 명령어 페치 버퍼(509)에 넣는다.
이 단계 이후에, CPU는 동작들(2107 및 2108)을 수행하고, 연산 가속기(50)는 동작들(2109 내지 2113)을 수행한다.
2107. CPU는 인터럽트를 수신한다.
인터럽트는 연산 가속기가 매트릭스 곱셈 연산을 수행해서 계산 결과를 취득하고 계산 결과를 DDR에 기록한 후에 CPU에 송신된 인터럽트이고, 인터럽트는 계산 결과를 처리하기 위해 CPU에 의해 사용된다.
2108. CPU는 인터럽트를 처리한다.
여전히 입력 데이터가 있으면, 단계(2104)로 돌아간다. 입력 데이터가 없으면, 프로세스가 종료된다.
2109. 연산 가속기(50)는 명령어를 명령어 페치 버퍼(509)로부터 판독한다.
2110. 연산 가속기(50)는 작업 실행을 시작한다.
2111. 연산 가속기(50)는 명령어에 따라 매트릭스 곱셈 연산을 수행한다.
2112. 연산 가속기(50)는 계산 결과를 DDR에 기록한다.
2113. 연산 가속기(50)는 인터럽트를 CPU에 송신한다.
전술한 실시형태들의 전부 또는 일부는 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합을 통해 구현될 수 있다. 소프트웨어 프로그램이 실시형태들을 구현하는 데 사용될 경우, 실시형태들은 완전히 또는 부분적으로 컴퓨터 프로그램 제품의 형태로 구현될 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령어를 포함한다. 컴퓨터 프로그램 명령어가 컴퓨터에 로딩되어 실행되는 경우, 본원의 실시형태들에 따른 절차 또는 기능들이 전부 또는 부분적으로 생성된다. 컴퓨터는 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크, 또는 다른 프로그램 가능 장치일 수 있다. 컴퓨터 명령어는 컴퓨터 판독 가능 저장 매체에 저장될 수 있거나 또는 하나의 컴퓨터 판독 가능 저장 매체로부터 다른 컴퓨터 판독 가능 저장 매체로 전송될 수 있다. 예를 들어, 컴퓨터 명령어는 하나의 웹사이트, 컴퓨터, 서버, 또는 데이터 센터로부터 다른 웹사이트, 컴퓨터, 서버, 또는 데이터 센터로 유선(예를 들어, 동축 케이블, 광섬유, 또는 디지털 가입자 회선(Digital Subscriber Line, DSL로 약기함)) 또는 무선(예를 들어, 적외선, 라디오, 또는 마이크로파) 방식으로 전송될 수 있다. 컴퓨터 판독 가능 저장 매체는 컴퓨터가 액세스할 수 있는 임의의 사용 가능한 매체, 또는 하나 이상의 사용 가능한 매체를 통합하는 서버 또는 데이터 센터와 같은 데이터 저장 장치일 수 있다. 사용 가능한 매체는 자기 매체(예를 들면, 플로피 디스크, 하드 디스크, 또는 자기 테이프), 광학 매체(예를 들면, DVD), 반도체 매체(예를 들면, 솔리드 스테이트 디스크(Solid State Disk, SSD로 약기함)) 등일 수 있다.
보호를 주장하는 본원을 구현하는 프로세스에서 본원이 실시형태들을 참조하여 설명되지만, 당업자라면 첨부 도면, 개시된 내용, 및 청구범위를 검토함으로써 개시된 실시형태들의 다른 변형을 이해하고 구현할 수 있을 것이다. 청구범위에서, "포함하는(comprising)"은 다른 구성요소 또는 다른 단계를 배제하지 않으며, 단수 형태("a" 또는 "an")는 복수인 경우를 배제하지 않는다. 단일의 프로세서 또는 다른 유닛이 청구범위에 열거된 몇 가지 기능을 구현할 수 있다. 몇 가지 방안이 서로 다른 종속 청구항들에 기록되지만, 이는 이들 방안이 더 나은 효과를 내도록 조합될 수 없음을 의미하지 않는다.
본원이 특정한 특징들 및 그 실시형태들을 참조하여 설명되지만, 그들에 대해서는, 분명히 다양한 수정 및 조합이 본원의 범위로부터 일탈함이 없이 이루어질 수 있다. 그에 상응하여, 명세서 및 첨부 도면은 단지 청구범위에 의해 정의되는 본원의 예시적인 설명일 뿐이며, 본원의 범위를 포함하는 어느 또는 모든 수정, 변형, 조합 또는 등가물로서 간주된다. 분명히, 당업자는 본원의 정신 및 범위로부터 일탈함이 없이 본원을 다양하게 수정 및 변형시킬 수 있다. 본원은, 본원의 이들 수정 및 변형이 하기의 청구항들 및 그 균등 기술에 의해 정의되는 보호 범위 내에 있는 한, 이들 수정 및 변형을 포함하려는 것이다.
Claims (15)
- 연산 가속기로서,
제1 매트릭스를 저장하도록 구성― 상기 제1 매트릭스는 M*N 매트릭스임 ―되는 제1 메모리;
제2 매트릭스를 저장하도록 구성― 상기 제2 매트릭스는 N*K 매트릭스임 ―되는 제2 메모리;
상기 제1 메모리 및 상기 제2 메모리에 연결되는 연산 회로― 상기 연산 회로는 매트릭스 곱셈 회로 및 가산기 회로를 포함하고; 상기 매트릭스 곱셈 회로는 M개의 연산 그룹을 포함하고, 각각의 연산 그룹은 K개의 연산 블록을 포함하고, 각각의 연산 블록은 N개의 연산 유닛을 포함하고, 각각의 연산 유닛은 2개의 데이터 조각을 제각기 상기 제1 메모리 및 상기 제2 메모리로부터 수신하고, 상기 연산 유닛은 상기 2개의 데이터 조각을 곱하고; 상기 가산기 회로는 동일한 연산 블록에 속하는 연산 유닛들의 계산 결과들을 더해서 각각의 연산 블록의 계산 결과를 취득하도록 구성됨 ―; 및
상기 연산 회로에 연결되는 제어기를 포함하고, 상기 제어기는 하기의 동작들: 즉,
상기 제2 매트릭스의 K개의 열 벡터를 각각의 연산 그룹의 상기 K개의 연산 블록에 제각기 기록― 상기 제2 매트릭스의 벡터들의 g번째 열의 j번째 데이터 조각이 상기 K개의 연산 블록에서 g번째 연산 블록의 j번째 연산 유닛에 기록됨 ―하는 동작;
상기 제1 매트릭스의 M개의 행 벡터를 상기 M개의 연산 그룹에 제각기 송신― 각각의 연산 그룹은 상기 M개의 행 벡터 중 하나의 행 벡터를 수신하고, 각각의 연산 그룹의 K개의 연산 블록은 동일한 행 벡터를 수신하고, 상기 M개의 연산 그룹에 의해 수신되는 행 벡터는 상이하고, 상기 제1 매트릭스의 i번째 행 벡터는 상기 M개의 연산 그룹에서 i번째 연산 그룹에 송신되고, i번째 연산 그룹에서의 각각의 연산 블록의 j번째 연산 유닛은 i번째 행 벡터의 j번째 데이터 조각을 수신함 ―하는 동작을 수행하도록 구성되고;
상기 M개의 연산 그룹의 각각의 연산 유닛은 상기 연산 유닛에 의해 수신되는 2개의 데이터 조각에 대하여 곱셈 연산을 수행하고, 상기 가산기 회로는 각각의 연산 블록의 연산 유닛들의 계산 결과들을 더해서 제3 매트릭스를 취득하고, 상기 제3 매트릭스는 상기 제1 매트릭스와 상기 제2 매트릭스의 곱(product)이고, 상기 제3 매트릭스의 i 행 및 g 열의 요소는 상기 i번째 연산 그룹의 g번째 연산 블록의 계산 결과이고, M, N, 및 K는 1보다 큰 정수이고, i는 0보다 크고 M+1보다 작은 정수이고, g는 0보다 크고 K+1보다 작은 정수이고, j는 0보다 크고 N+1보다 작은 정수인
연산 가속기.
- 제1항에 있어서,
상기 가산기 회로는 M*K개의 가산기 트리를 포함하고, 하나의 가산기 트리는 하나의 연산 블록에 대응하고, 상기 가산기 트리는 상기 대응하는 연산 블록의 N개의 연산 유닛에 연결되고, 상기 가산기 트리는 상기 가산기 트리에 연결되는 상기 N개의 연산 유닛의 계산 결과들을 더하도록 구성되는
연산 가속기.
- 제1항 또는 제2항에 있어서,
상기 연산 유닛은:
제2 데이터를 저장하도록 구성― 상기 제2 데이터는 상기 제2 매트릭스로부터의 데이터임 ―되는 저장 유닛; 및
상기 저장 유닛에 연결되며, 제1 데이터와 상기 저장 유닛에 저장되는 상기 제2 데이터의 곱을 계산하도록 구성― 상기 제1 데이터는 상기 제1 매트릭스로부터의 데이터임 ―되는 곱셈 회로를 포함하는
연산 가속기.
- 제1항 또는 제2항에 있어서,
상기 연산 유닛은 복수의 저장 유닛, 곱셈 회로, 상기 복수의 저장 유닛에 연결되는 제1 선택 회로, 및 상기 복수의 저장 유닛 및 상기 곱셈 회로에 연결되는 제2 선택 회로를 포함하고, 상기 복수의 저장 유닛은 데이터를 저장하도록 구성되고;
상기 제1 선택 회로는, 상기 곱셈 회로가 곱셈 연산을 수행할 때 사용되는 데이터를 저장하기 위한 저장 유닛을, 상기 곱셈 회로가 곱셈 연산을 수행하기 전에 상기 복수의 저장 유닛으로부터 선택하도록 구성되고;
상기 제2 선택 회로는, 상기 곱셈 회로가 곱셈 연산을 수행할 때 사용되는 데이터를 저장하기 위한 저장 유닛을, 상기 곱셈 회로가 곱셈 연산을 수행할 때 선택하도록 구성되고;
상기 곱셈 회로는 수신된 데이터와 상기 제2 선택 회로에 의해 선택된 상기 저장 유닛에 저장되는 데이터의 곱을 계산하도록 구성되는
연산 가속기.
- 제1항 또는 제2항에 있어서,
상기 제1 메모리는 제1 버스를 사용해서 상기 연산 회로에 연결되고, 상기 제1 버스의 비트 폭은 Wi*N*M이고; 상기 제2 메모리는 제2 버스를 사용해서 상기 연산 회로에 연결되고, 상기 제2 버스의 비트 폭은 Wi*N이고; Wi는 입력 데이터의 것이며 상기 연산 유닛에 의해 허용되는 최대 비트 폭인
연산 가속기.
- 제1항 또는 제2항에 있어서,
상기 연산 가속기는 상기 제1 메모리, 상기 제2 메모리, 및 상기 제어기에 연결되는 저장 유닛 액세스 제어기를 더 포함하고,
상기 저장 유닛 액세스 제어기는, 상기 제어기의 제어 하에서, 상기 제1 매트릭스 및 상기 제2 매트릭스를 취득하고, 상기 제1 매트릭스를 상기 제1 메모리에 세이브하고, 상기 제2 매트릭스를 상기 제2 메모리에 세이브하도록 구성되는
연산 가속기.
- 제1항 또는 제2항에 있어서,
상기 연산 가속기는:
상기 제1 매트릭스의 소스 데이터를 저장하도록 구성되는 제3 메모리;
상기 제1 메모리, 상기 제2 메모리, 상기 제3 메모리, 및 상기 제어기에 연결되는 저장 유닛 액세스 제어기― 상기 저장 유닛 액세스 제어기는, 상기 제어기의 제어 하에서, 상기 제1 매트릭스의 소스 데이터 및 상기 제2 매트릭스를 취득하고, 상기 제1 매트릭스의 소스 데이터를 상기 제3 메모리에 세이브하고, 상기 제2 매트릭스를 상기 제2 메모리에 세이브하도록 구성됨 ―; 및
상기 제1 메모리, 상기 제3 메모리, 및 상기 제어기에 연결되는 벡터 계산 유닛― 상기 벡터 계산 유닛은, 상기 제어기의 제어 하에서, 상기 제1 매트릭스의 소스 데이터를 상기 제1 매트릭스로 변환하고, 상기 제1 매트릭스를 상기 제1 메모리에 세이브하도록 구성됨 ―을 더 포함하는
연산 가속기.
- 제7항에 있어서,
상기 제3 메모리는 상기 연산 회로에 연결되고, 상기 제3 메모리는 상기 제3 매트릭스를 저장하도록 더 구성되는
연산 가속기.
- 제7항에 있어서,
상기 연산 가속기는 상기 연산 회로, 상기 벡터 계산 유닛, 및 상기 제어기에 연결되는 누산기를 더 포함하고,
상기 누산기는 상기 제어기의 제어 하에서 상기 제3 매트릭스 및 제4 매트릭스 내의 상응하는 위치들에 있는 요소들을 더해서 제5 매트릭스를 취득하도록 구성되고,
상기 벡터 계산 유닛은 상기 제어기의 제어 하에서 상기 제5 매트릭스를 상기 제3 메모리에 세이브하도록 더 구성되고,
상기 제3 매트릭스는 상기 제1 매트릭스와 상기 제2 매트릭스의 곱이고, 상기 제1 매트릭스는 첫 번째로 계산될 매트릭스의 제1 부분을 포함하고, 상기 첫 번째로 계산될 매트릭스의 제1 부분은 상기 첫 번째로 계산될 매트릭스의 첫 번째 열 내지 N 번째 열의 요소들이고, 상기 제2 매트릭스는 두 번째로 계산될 매트릭스의 제1 부분이고, 상기 두 번째로 계산될 매트릭스의 제1 부분은 상기 두 번째로 계산될 매트릭스의 첫 번째 행 내지 N 번째 행의 요소들이고, 상기 첫 번째로 계산될 매트릭스는 요소들의 M개의 행을 포함하고, 상기 두 번째로 계산될 매트릭스는 요소들의 K개의 열을 포함하고, 상기 제4 매트릭스는 상기 첫 번째로 계산될 매트릭스의 제2 부분과 상기 두 번째로 계산될 매트릭스의 제2 부분의 곱이고, 상기 첫 번째로 계산될 매트릭스의 제2 부분은 상기 첫 번째로 계산될 매트릭스의 제1 부분 이외의 부분이고, 상기 두 번째로 계산될 매트릭스의 제2 부분은 상기 두 번째로 계산될 매트릭스의 제1 부분 이외의 부분인
연산 가속기.
- 제6항에 있어서,
상기 연산 가속기는:
상기 제어기에 연결되며, 상기 제어기에 의해 사용되는 명령어를 저장하도록 구성되는 명령어 페치 버퍼; 및
상기 명령어 페치 버퍼, 상기 저장 유닛 액세스 제어기, 및 외부 메모리에 연결되고, 상기 외부 메모리로부터 명령어를 취득하기 위해 상기 명령어 페치 버퍼에 의해 사용되고, 또한 상기 외부 메모리로부터 상기 제1 매트릭스의 소스 데이터, 상기 제1 매트릭스, 및 상기 제2 매트릭스 중 적어도 하나를 취득하기 위해 상기 저장 유닛 액세스 제어기에 의해 더 사용되는 버스 인터페이스 유닛을 더 포함하는
연산 가속기.
- 제1항 또는 제2항에 있어서,
상기 연산 가속기는 콘볼루션 신경망(convolutional neural network)에 적용되고, 상기 제1 매트릭스는 입력 매트릭스이고 상기 제2 매트릭스는 가중치 매트릭스인
연산 가속기.
- 제1항 또는 제2항에 있어서,
M=N=K인
연산 가속기.
- 연산 회로에 의해 수행― 상기 연산 회로는 M개의 연산 그룹을 포함하고, 각각의 연산 그룹은 K개의 연산 블록을 포함하고, 각각의 연산 블록은 N개의 연산 유닛을 포함함 ―되는 연산 방법으로서,
상기 연산 회로가 제1 메모리로부터 제1 매트릭스를 판독하고 상기 제1 매트릭스의 M개의 행 벡터를 제각기 상기 M개의 연산 그룹에 송신하는 것― 각각의 연산 그룹은 상기 M개의 행 벡터 중 하나의 행 벡터를 수신하고, 각각의 연산 그룹의 K개의 연산 블록은 동일한 행 벡터를 수신하고, 상기 M개의 연산 그룹에 의해 수신되는 행 벡터는 상이하고, 상기 제1 매트릭스는 M*N 매트릭스임 ―;
상기 연산 회로가 제2 메모리로부터 제2 매트릭스를 판독하고 가중치 매트릭스의 K개의 열 벡터를 제각기 각각의 연산 그룹의 상기 K개의 연산 블록에 기록하는 것― 상기 제2 매트릭스는 N*K 매트릭스이고, M, N 및 K는 1보다 큰 정수임 ―;
상기 연산 회로가 하나의 클록 사이클 내에 상기 제1 매트릭스 및 상기 제2 매트릭스의 매트릭스 곱셈 계산을 수행하는 것을 포함하는
연산 방법.
- 제13항에 있어서,
상기 연산 회로는 가산기 회로를 포함하고, 상기 방법은:
상기 가산기 회로가 동일한 연산 블록에 속하는 연산 유닛들의 계산 결과들을 더해서 각각의 연산 블록의 계산 결과를 취득하는 것을 포함하는
연산 방법.
- 제13항 또는 제14항에 있어서,
상기 연산 회로는 콘볼루션 신경망에 적용되고, 상기 제1 매트릭스는 입력 매트릭스이고 상기 제2 매트릭스는 가중치 매트릭스인
연산 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710553286.X | 2017-07-07 | ||
CN201710553286.XA CN109213962B (zh) | 2017-07-07 | 2017-07-07 | 运算加速器 |
PCT/CN2018/078407 WO2019007095A1 (zh) | 2017-07-07 | 2018-03-08 | 运算加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200019736A KR20200019736A (ko) | 2020-02-24 |
KR102316670B1 true KR102316670B1 (ko) | 2021-10-22 |
Family
ID=64949706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207002212A KR102316670B1 (ko) | 2017-07-07 | 2018-03-08 | 연산 가속기 |
Country Status (9)
Country | Link |
---|---|
US (2) | US11321423B2 (ko) |
EP (1) | EP3637281A4 (ko) |
JP (1) | JP7016942B2 (ko) |
KR (1) | KR102316670B1 (ko) |
CN (3) | CN112214726B (ko) |
BR (1) | BR112020000167B1 (ko) |
CA (1) | CA3069185C (ko) |
SG (1) | SG11202000140QA (ko) |
WO (1) | WO2019007095A1 (ko) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019077933A1 (ja) * | 2017-10-18 | 2019-04-25 | 三菱電機株式会社 | 演算回路および演算方法 |
CN109992743B (zh) | 2017-12-29 | 2020-06-16 | 华为技术有限公司 | 矩阵乘法器 |
US11397579B2 (en) | 2018-02-13 | 2022-07-26 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN110147347B (zh) * | 2019-03-18 | 2023-01-06 | 腾讯科技(深圳)有限公司 | 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质 |
US11169957B2 (en) * | 2019-03-31 | 2021-11-09 | Intel Corporation | Systems and methods for reconfigurable systolic arrays |
CN110263324B (zh) * | 2019-05-16 | 2021-02-12 | 华为技术有限公司 | 文本处理方法、模型训练方法和装置 |
US11334647B2 (en) * | 2019-06-29 | 2022-05-17 | Intel Corporation | Apparatuses, methods, and systems for enhanced matrix multiplier architecture |
CN110580324B (zh) * | 2019-07-23 | 2020-11-17 | 珠海格力电器股份有限公司 | 图像矩阵运算方法、装置、计算机设备和存储介质 |
KR102372869B1 (ko) * | 2019-07-31 | 2022-03-08 | 한양대학교 산학협력단 | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 |
KR102327234B1 (ko) * | 2019-10-02 | 2021-11-15 | 고려대학교 산학협력단 | 행렬 연산시 메모리 데이터 변환 방법 및 컴퓨터 |
CN110647984B (zh) * | 2019-10-25 | 2022-07-12 | 芯盟科技有限公司 | 芯片、集成处理设备及其操作方法 |
CN111124360B (zh) * | 2019-12-23 | 2022-08-16 | 中国电子科技集团公司第五十八研究所 | 一种可配置矩阵乘法的加速器 |
US11861369B2 (en) | 2020-01-07 | 2024-01-02 | SK Hynix Inc. | Processing-in-memory (PIM) device |
US11537323B2 (en) | 2020-01-07 | 2022-12-27 | SK Hynix Inc. | Processing-in-memory (PIM) device |
US11630991B2 (en) * | 2020-02-04 | 2023-04-18 | Apple Inc. | Broadcasting mode of planar engine for neural processor |
JP6896306B1 (ja) * | 2020-04-13 | 2021-06-30 | LeapMind株式会社 | ニューラルネットワーク回路、エッジデバイスおよびニューラルネットワーク演算方法 |
CN113536220A (zh) * | 2020-04-21 | 2021-10-22 | 中科寒武纪科技股份有限公司 | 运算方法、处理器及相关产品 |
CN113536221B (zh) * | 2020-04-21 | 2023-12-15 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
US20230169144A1 (en) * | 2020-04-21 | 2023-06-01 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Operation method, processor, and related product |
CN113536219B (zh) * | 2020-04-21 | 2024-01-26 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN113836481B (zh) * | 2020-06-24 | 2024-07-02 | 广州希姆半导体科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
US20220051086A1 (en) * | 2020-08-17 | 2022-02-17 | Alibaba Group Holding Limited | Vector accelerator for artificial intelligence and machine learning |
CN114168895A (zh) * | 2020-09-11 | 2022-03-11 | 北京希姆计算科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
CN112632464B (zh) * | 2020-12-28 | 2022-11-29 | 上海壁仞智能科技有限公司 | 用于处理数据的处理装置 |
KR20220101519A (ko) | 2021-01-11 | 2022-07-19 | 에스케이하이닉스 주식회사 | 엘리먼트-와이즈 곱셈을 위한 프로세싱-인-메모리 장치 |
US12118057B2 (en) * | 2021-01-14 | 2024-10-15 | Microsoft Technology Licensing, Llc | Computing partial matrices at hardware accelerator |
CN112966729B (zh) * | 2021-02-26 | 2023-01-31 | 成都商汤科技有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
US11544213B2 (en) | 2021-03-04 | 2023-01-03 | Samsung Electronics Co., Ltd. | Neural processor |
CN113110822A (zh) * | 2021-04-20 | 2021-07-13 | 安徽芯纪元科技有限公司 | 一种可配置矩阵乘法装置及算法 |
CN113918120A (zh) * | 2021-10-19 | 2022-01-11 | Oppo广东移动通信有限公司 | 计算装置、神经网络处理设备、芯片及处理数据的方法 |
CN115437602A (zh) * | 2021-10-20 | 2022-12-06 | 中科寒武纪科技股份有限公司 | 任意精度计算加速器、集成电路装置、板卡及方法 |
CN115860080B (zh) * | 2023-02-15 | 2023-05-09 | 苏州浪潮智能科技有限公司 | 计算核、加速器、计算方法、装置、设备、介质及系统 |
CN116795432B (zh) * | 2023-08-18 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 运算指令的执行方法、装置、电路、处理器及设备 |
CN117093816B (zh) * | 2023-10-19 | 2024-01-19 | 上海登临科技有限公司 | 矩阵乘运算方法、装置和电子设备 |
CN117574036B (zh) * | 2024-01-16 | 2024-04-12 | 北京壁仞科技开发有限公司 | 运算装置、操作方法和机器可读存储介质 |
CN118227948B (zh) * | 2024-05-24 | 2024-08-06 | 北京壁仞科技开发有限公司 | 人工智能芯片、操作方法和机器可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6131308A (ja) | 1984-07-20 | 1986-02-13 | Hitachi Chem Co Ltd | 黒鉛層間化合物の製造法 |
JPS61150067A (ja) * | 1984-12-25 | 1986-07-08 | Matsushita Electric Ind Co Ltd | 演算装置 |
JPH0748203B2 (ja) * | 1988-06-17 | 1995-05-24 | 三菱電機株式会社 | 3次元デバイスを用いた正方行列乗算器 |
US5170370A (en) * | 1989-11-17 | 1992-12-08 | Cray Research, Inc. | Vector bit-matrix multiply functional unit |
US5274832A (en) * | 1990-10-04 | 1993-12-28 | National Semiconductor Corporation | Systolic array for multidimensional matrix computations |
JPH05324700A (ja) * | 1992-05-19 | 1993-12-07 | N T T Data Tsushin Kk | 行列乗算装置 |
US6167502A (en) * | 1997-10-10 | 2000-12-26 | Billions Of Operations Per Second, Inc. | Method and apparatus for manifold array processing |
US6597745B1 (en) * | 1999-04-06 | 2003-07-22 | Eric M. Dowling | Reduced complexity multicarrier precoder |
US8417759B2 (en) * | 2007-04-09 | 2013-04-09 | DigitalOptics Corporation Europe Limited | Efficient implementations of kernel computations |
US8051124B2 (en) * | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
US8028015B2 (en) * | 2007-08-10 | 2011-09-27 | Inside Contactless S.A. | Method and system for large number multiplication |
JP2009245381A (ja) * | 2008-03-31 | 2009-10-22 | Fujitsu Ltd | 積和演算回路、その設計装置、プログラム |
WO2011156247A2 (en) * | 2010-06-11 | 2011-12-15 | Massachusetts Institute Of Technology | Processor for large graph algorithm computations and matrix operations |
CN101980182A (zh) * | 2010-10-15 | 2011-02-23 | 清华大学 | 基于矩阵运算的并行计算方法 |
CN102662623A (zh) * | 2012-04-28 | 2012-09-12 | 电子科技大学 | 基于单fpga的并行矩阵乘法器及其实现方法 |
US10318308B2 (en) * | 2012-10-31 | 2019-06-11 | Mobileye Vision Technologies Ltd. | Arithmetic logic unit |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
CN105589677A (zh) * | 2014-11-17 | 2016-05-18 | 沈阳高精数控智能技术股份有限公司 | 一种基于fpga的脉动结构矩阵乘法器及其实现方法 |
CN104391820B (zh) * | 2014-11-25 | 2017-06-23 | 清华大学 | 基于fpga的通用浮点矩阵处理器硬件结构 |
US10255547B2 (en) * | 2014-12-04 | 2019-04-09 | Nvidia Corporation | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system |
CN104572011B (zh) * | 2014-12-22 | 2018-07-31 | 上海交通大学 | 基于fpga的通用矩阵定点乘法器及其计算方法 |
US9747546B2 (en) * | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
CN106445471B (zh) * | 2016-10-13 | 2018-06-01 | 北京百度网讯科技有限公司 | 处理器和用于在处理器上执行矩阵乘运算的方法 |
US10394929B2 (en) * | 2016-12-20 | 2019-08-27 | Mediatek, Inc. | Adaptive execution engine for convolution computing systems |
CN106844294B (zh) * | 2016-12-29 | 2019-05-03 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
PL3812900T3 (pl) * | 2016-12-31 | 2024-04-08 | Intel Corporation | Systemy, sposoby i aparaty do obliczania heterogenicznego |
US11132599B2 (en) * | 2017-02-28 | 2021-09-28 | Microsoft Technology Licensing, Llc | Multi-function unit for programmable hardware nodes for neural network processing |
-
2017
- 2017-07-07 CN CN202010991817.5A patent/CN112214726B/zh active Active
- 2017-07-07 CN CN202010992871.1A patent/CN112214727B/zh active Active
- 2017-07-07 CN CN201710553286.XA patent/CN109213962B/zh active Active
-
2018
- 2018-03-08 JP JP2020500125A patent/JP7016942B2/ja active Active
- 2018-03-08 CA CA3069185A patent/CA3069185C/en active Active
- 2018-03-08 EP EP18829166.0A patent/EP3637281A4/en active Pending
- 2018-03-08 KR KR1020207002212A patent/KR102316670B1/ko active IP Right Grant
- 2018-03-08 WO PCT/CN2018/078407 patent/WO2019007095A1/zh unknown
- 2018-03-08 SG SG11202000140QA patent/SG11202000140QA/en unknown
- 2018-03-08 BR BR112020000167-8A patent/BR112020000167B1/pt active IP Right Grant
-
2020
- 2020-01-07 US US16/736,427 patent/US11321423B2/en active Active
-
2022
- 2022-04-21 US US17/726,410 patent/US11720646B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899182A (zh) * | 2015-06-09 | 2015-09-09 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
Non-Patent Citations (2)
Title |
---|
CHEN ZHANG ET AL, "Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks", Proceedings of the 2015 ACM/SIGDA Inter. Sym.on Field-Programmable Gate Arrays, FPGA'15,(2015.2.22)* |
JIANTAO QIU ET AL, "Going Deeper with Embedded FPGA Platform for Convolutional Neural Network", Proceedings of the 2016 ACM/SIGDA Inter. Sym. on Field-Programmable Gate Arrays, FPGA '16, (2016.2.21.)* |
Also Published As
Publication number | Publication date |
---|---|
CN112214727B (zh) | 2024-07-05 |
CN112214726A (zh) | 2021-01-12 |
CA3069185A1 (en) | 2019-01-10 |
CN112214726B (zh) | 2024-05-03 |
US11321423B2 (en) | 2022-05-03 |
CN109213962B (zh) | 2020-10-09 |
EP3637281A4 (en) | 2020-07-08 |
WO2019007095A1 (zh) | 2019-01-10 |
JP7016942B2 (ja) | 2022-02-07 |
US11720646B2 (en) | 2023-08-08 |
CN109213962A (zh) | 2019-01-15 |
BR112020000167B1 (pt) | 2022-01-25 |
EP3637281A1 (en) | 2020-04-15 |
CN112214727A (zh) | 2021-01-12 |
US20220327181A1 (en) | 2022-10-13 |
CA3069185C (en) | 2023-07-18 |
JP2020526830A (ja) | 2020-08-31 |
US20200142949A1 (en) | 2020-05-07 |
KR20200019736A (ko) | 2020-02-24 |
SG11202000140QA (en) | 2020-02-27 |
BR112020000167A2 (pt) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102316670B1 (ko) | 연산 가속기 | |
KR102492477B1 (ko) | 행렬 곱셈기 | |
US10140251B2 (en) | Processor and method for executing matrix multiplication operation on processor | |
CN109543832B (zh) | 一种计算装置及板卡 | |
US10768894B2 (en) | Processor, information processing apparatus and operation method for processor | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
CN113469350B (zh) | 一种适于npu的深度卷积神经网络加速方法和系统 | |
WO2023065983A1 (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
CN110929854B (zh) | 一种数据处理方法、装置及硬件加速器 | |
CN112416433A (zh) | 一种数据处理装置、数据处理方法及相关产品 | |
US11775808B2 (en) | Neural network computation device and method | |
CN112686379A (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN111291884A (zh) | 神经网络剪枝方法、装置、电子设备及计算机可读介质 | |
KR20240099773A (ko) | 효율적인 연산 분할을 위한 텐서 변형 방법, 메모리 액세스 방법, 및 이를 위한 뉴럴 프로세싱 유닛 | |
KR20230038429A (ko) | 계산 장치, 집적 회로 칩, 보드 카드, 전자 기기 및 계산 방법 | |
KR20240136674A (ko) | 신경망을 실행하는 방법 및 장치 | |
CN118093179A (zh) | 众核架构下的神经形态芯片的计算任务处理方法和处理器 | |
CN113469365A (zh) | 基于神经网络模型的推理和编译方法及其相关产品 | |
CN112486775A (zh) | 统计模块吞吐的方法及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |