KR20210074992A - 내적 아키텍처 상 2차원 컨볼루션 레이어 맵핑 가속화 - Google Patents

내적 아키텍처 상 2차원 컨볼루션 레이어 맵핑 가속화 Download PDF

Info

Publication number
KR20210074992A
KR20210074992A KR1020200111173A KR20200111173A KR20210074992A KR 20210074992 A KR20210074992 A KR 20210074992A KR 1020200111173 A KR1020200111173 A KR 1020200111173A KR 20200111173 A KR20200111173 A KR 20200111173A KR 20210074992 A KR20210074992 A KR 20210074992A
Authority
KR
South Korea
Prior art keywords
feature map
processor
values
input feature
matrix
Prior art date
Application number
KR1020200111173A
Other languages
English (en)
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 KR20210074992A publication Critical patent/KR20210074992A/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/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Abstract

본 발명의 실시 예에 따른 컨볼루션 연산을 수행하는 방법은 상기 프로세서의 제 1 저장 장치에 x*y 차원을 갖는 컨볼루션 커널을 저장하는 단계, 상기 프로세서의 제 2 저장 장치에 n*m 차원을 갖는 입력 특징 맵의 제 1 부분집합의 원소 값들을 저장하는 단계; 상기 입력 특징 맵의 상기 제 1 부분집합의 원소 값들의 각 값과, 상기 컨볼루션 커널의 상기 x*y 원소들 중 제 1 원소 값의 제 1 동시 곱셈을 수행하는 단계; 상기 컨볼루션 커널의 상기 x*y 원소들 중 남은 값 각각에 대하여, 상기 입력 특징 맵 원소 값들의 대응하는 부분집합의 원소 값들과 상기 남은 값의 제 2 동시 곱셈을 수행하는 단계; 각 동시 곱셈에 대하여, 상기 프로세서에 연결된 누적기에 상기 각 동시 곱셈의 결과를 저장하는 단계; 및 상기 누적기의 상기 저장된 값들을 출력 특징 맵(OFM)의 제 1 행으로서 출력하는 단계를 포함한다.

Description

내적 아키텍처 상 2차원 컨볼루션 레이어 맵핑 가속화{ACCELERATING 2D CONVOLUTIONAL LAYER MAPPING ON A DOT PRODUCT ARCHITECTURE}
본 발명은 프로세싱 회로에 관한 것으로, 좀 더 상세하게는, 내적 아키텍처 상에서 2차원 컨볼루션 레이어 맵핑을 가속화하기 위한 프로세싱 회로에 관한 것이다.
신경망들은 동작 도중 다수의 곱셈들과 덧셈들을 수반하는 텐서 연산들(예를 들어, 텐서 곱셈들과 컨볼루션들)을 수행할 수 있다. 범용 CPU 또는 GPU(이러한 작업에 더 적합할 수 있는)에 의해 연산들이 수행되는 경우, 이러한 연산들의 수행은 비교적 느리고 연산 당 비교적 높은 에너지 비용을 야기할 수 있다. 예를 들어, 상당히 한정된 전력 예산을 지닐 수 있는 소형 장치들(예를 들어, 모바일, 휴대용 장치들)에 있어서, 범용 CPU 또는 GPU의 사용과 관련된 전력 소모는 이상적이지 않을 수 있다.
상기 정보는 배경 기술에 대한 이해를 증진시키기 위한 것일 뿐이고, 선행 기술의 존재 또는 관련성을 인정하는 것으로 해석되어서는 안 된다.
본 발명의 목적은 내적 아키텍처 상에서의 2차원 컨볼루션 레이어 맵핑을 가속화하기 위한 프로세싱 회로를 제공하는 데 있다.
이 요약은 이하의 상세한 설명에서 더 설명되는 본 명세서에 개시된 내용의 실시 예들의 특징들 및 개념들의 선택을 소개하기 위해 제공된다. 이 요약은 청구된 주제의 핵심적 또는 필수적인 특징을 식별하기 위한 것이 아니며, 청구된 주제의 범위를 제한하는 데 사용되는 것으로 의도되지도 않는다. 설명된 특징 중 하나 이상은 동작 가능한 장치를 제공하기 위해 하나 이상의 다른 설명된 특징과 결합 될 수 있다.
몇몇 실시 예들에서, 컨볼루션 연산을 수행하는 방법은 프로세서에 의해, 상기 프로세서의 제 1 저장 장치에 x*y 차원을 갖는 컨볼루션 커널을 저장하는 단계; 상기 프로세서에 의해, 상기 프로세서의 제 2 저장 장치에 n*m 차원을 갖는 입력 특징 맵의 제 1 부분집합의 원소 값들을 저장하는 단계; 상기 프로세서에 의해, 상기 입력 특징 맵의 상기 제 1 부분집합의 원소 값들의 각 값과, 상기 컨볼루션 커널의 상기 x*y 원소들 중 제 1 원소 값의 제 1 동시 곱셈을 수행하는 단계; 상기 프로세서에 의해, 상기 컨볼루션 커널의 상기 x*y 원소들 중 남은 값 각각에 대하여, 상기 입력 특징 맵 원소 값들의 대응하는 부분집합의 원소 값들과 상기 남은 값의 제 2 동시 곱셈을 수행하는 단계; 상기 프로세서에 의해, 각 동시 곱셈에 대하여, 상기 프로세서에 연결된 누적기에 상기 각 동시 곱셈의 결과를 저장하는 단계; 및 상기 누적기의 상기 저장된 값들을 출력 특징 맵(OFM)의 제 1 행으로서 출력하는 단계를 포함하되, 상기 x는 상기 컨볼루션 커널의 행들의 개수이고, 상기 y는 상기 컨볼루션 커널의 열들의 개수이고, 상기 n은 상기 입력 특징 맵의 행들의 개수이고, 상기 m은 상기 입력 특징 맵의 열들의 개수이다.
몇몇 실시 예들에서, 상기 누적기의 상기 값들을 상기 OFM의 상기 제 1 행으로서 출력하는 단계는, 상기 프로세서에 의해, 상기 누적기에 저장된 복수의 동시 곱셈들의 결과들을 더하여 상기 OFM의 상기 제 1 열을 생성하는 단계를 포함한다. 몇몇 실시 예들에서, 상기 제 1 저장 장치는 상기 프로세서에 연결된 캐시 메모리를 포함하고, 상기 제 2 저장 장치는 상기 프로세서의 곱셈-누적(MAC) 타일의 처리 요소(PE)에 위치한 복수의 레지스터들을 포함하고, 그리고 상기 복수의 레지스터들은 9-비트 레지스터들이다.
몇몇 실시 예들에서, 상기 방법은 상기 프로세서에 의해, 상기 제 1 부분집합의 원소 값들을 복수의 레지스터들에서 왼쪽으로 한 레지스터 시프트하는 단계를 더 포함한다. 몇몇 실시 예들에서, 상기 방법은 상기 프로세서에 의해, 상기 컨볼루션 커널의 상기 x*y 원소들 중 상기 제 1 원소 값을 상기 제 2 저장 장치로 브로드캐스트하는 단계; 및 상기 프로세서에 의해, 상기 컨볼루션 커널의 상기 x*y 원소들 중 제 2 원소 값을 상기 제 2 저장 장치로 브로드캐스트하는 단계를 더 포함하되, 상기 입력 특징 맵 상기 제 1 부분집합의 원소 값들은 상기 입력 특징 맵 1행의 1열부터 p열까지의 값들을 포함하고, 그리고 상기 입력 특징 맵 원소 값들의 제 2 부분집합은 상기 입력 특징 맵 1행의 2열부터 (p+1)열까지의 값들을 포함한다.
몇몇 실시 예들에서, 상기 x*y 차원을 갖는 상기 컨볼루션 커널은 가중치 행렬이고, 상기 가중치 행렬은 복수의 가중치 값들을 포함하고, 상기 가중치 행렬의 상기 복수의 가중치 값들은 상기 프로세서에 연결된 캐시 메모리에 저장되고, 그리고 상기 n*m 차원을 갖는 상기 입력 특징 맵은 복수의 활성화 값들을 포함한다. 몇몇 실시 예들에서, 상기 프로세서는 복수의 곱셈-누적(MAC) 타일들을 포함하고, 각 MAC 타일은 복수의 처리 요소(PE) 행들 및 복수의 PE 열들을 포함하는 PE 어레이를 포함하고, 상기 복수의 PE 열들의 각 PE 열은 복수의 PE들과 합산기 트리를 포함한다.
몇몇 실시 예들에서, 상기 각 MAC 타일은 복수의 활성화 레인들을 포함하는 캐시 메모리를 더 포함하고, 각 활성화 레인은 상기 MAC 타일의 상기 PE 어레이의 행에 대응한다. 몇몇 실시 예들에서, 상기 복수의 PE들의 각 PE는, 상기 입력 특징 맵의 상기 복수의 활성화 값들을 저장하도록 구성되는 복수의 레지스터들, 상기 복수의 레지스터들에 연결되고 상기 입력 특징 맵의 활성화들과 상기 캐시 메모리의 가중치 값들을 곱하도록 구성되는 곱셈기, 및 상기 곱셈기에 연결되고 상기 곱셈기의 출력을 상기 복수의 레지스터들의 값에 더한 결과를 상기 복수의 레지스터들에 저장하도록 구성되는 PE 누적기를 포함한다. 몇몇 실시 예들에서, 상기 MAC 타일의 상기 PE 어레이는 8개의 PE 열들을 포함하고, 상기 MAC 타일의 상기 8개의 PE 열들의 각 PE 열은 16개의 PE들을 포함한다.
몇몇 실시 예들에서, 컨볼루션 연산을 수행하기 위한 시스템은, 메모리 및 상기 메모리와 연결된 프로세서를 포함하고, 상기 프로세서는: 상기 프로세서의 제 1 저장 장치에 x*y 차원을 갖는 컨볼루션 커널을 저장하고; 상기 프로세서의 제 2 저장 장치에 n*m 차원을 갖는 입력 특징 맵 원소 값들의 제 1 부분집합을 저장하고; 상기 입력 특징 맵 상기 제 1 부분집합의 원소 값들의 각 값과, 상기 컨볼루션 커널의 상기 x*y 원소들 중 제 1 원소 값의 제 1 동시 곱셈을 수행하고; 상기 컨볼루션 커널의 상기 x*y 원소들 중 남은 값 각각에 대하여, 상기 입력 특징 맵 원소 값들의 대응하는 부분집합의 남은 값들과 상기 남은 값의 제 2 동시 곱셈을 수행하고; 각 동시 곱셈에 대하여, 상기 프로세서에 연결된 누적기에 상기 각 동시 곱셈의 결과를 저장하고; 그리고 상기 누적기의 상기 저장된 값들을 출력 특징 맵(OFM)의 제 1 행으로서 출력하도록 구성되고, 상기 x는 상기 컨볼루션 커널의 행들의 개수이고, 상기 y는 상기 컨볼루션 커널의 열들의 개수이고, 상기 n은 상기 입력 특징 맵의 행들의 개수이고, 상기 m은 상기 입력 특징 맵의 열들의 개수이다.
몇몇 실시 예들에서, 상기 프로세서는 상기 누적기에 저장된 복수의 동시 곱셈들의 결과들을 더하여 상기 OFM의 상기 제 1 열을 생성함으로써 상기 누적기의 상기 값들을 상기 OFM의 상기 제 1 행으로서 출력하도록 더 구성된다. 몇몇 실시 예들에서, 상기 제 1 저장 장치는 상기 프로세서에 연결된 캐시 메모리를 포함하고, 상기 제 2 저장 장치는 상기 프로세서의 곱셈-누적(MAC) 타일의 처리 요소(PE)에 위치한 복수의 레지스터들을 포함하고, 그리고 상기 복수의 레지스터들은 9-비트 레지스터들이다. 몇몇 실시 예들에서, 상기 프로세서는 상기 제 1 부분집합의 원소 값들을 복수의 레지스터들에서 왼쪽으로 한 레지스터 시프트하도록 더 구성된다.
몇몇 실시 예들에서, 상기 프로세서는: 상기 컨볼루션 커널의 상기 x*y 원소들 중 상기 제 1 원소 값을 상기 제 2 저장 장치로 브로드캐스트하고; 그리고 상기 컨볼루션 커널의 상기 x*y 원소들 중 제 2 원소 값을 상기 제 2 저장 장치로 브로드캐스트하도록 더 구성된다. 몇몇 실시 예들에서, 상기 x*y 차원을 갖는 상기 컨볼루션 커널은 가중치 행렬이고, 상기 가중치 행렬은 복수의 가중치 값들을 포함하고, 상기 가중치 행렬의 상기 복수의 가중치 값들은 상기 프로세서에 연결된 캐시 메모리에 저장되고, 상기 n*m 차원을 갖는 상기 입력 특징 맵은 복수의 활성화 값들을 포함하고, 상기 프로세서는 복수의 곱셈-누적(MAC) 타일들을 포함하고, 각 MAC 타일은 복수의 처리 요소(PE) 행들 및 복수의 PE 열들을 포함하는 PE 어레이를 포함하고, 상기 복수의 PE 열들의 각 PE 열은 복수의 PE들과 합산기 트리를 포함한다.
몇몇 실시 예들에서, 상기 각 MAC 타일은 복수의 활성화 레인들을 포함하는 캐시 메모리를 더 포함하고, 각 활성화 레인은 상기 MAC 타일의 상기 PE 어레이의 행에 대응하고, 상기 MAC 타일의 상기 PE 어레이는 8개의 PE 열들을 포함하고, 상기 MAC 타일의 상기 8개의 PE 열들의 각 PE 열은 16개의 PE들을 포함한다. 몇몇 실시 예들에서, 상기 복수의 PE들의 각 PE는, 상기 입력 특징 맵의 상기 복수의 활성화 값들을 저장하도록 구성되는 복수의 레지스터들, 상기 복수의 레지스터들에 연결되고 상기 입력 특징 맵의 활성화들과 상기 캐시 메모리의 가중치 값들을 곱하도록 구성되는 곱셈기, 및 상기 곱셈기에 연결되고 상기 곱셈기의 출력을 상기 복수의 레지스터들의 값에 더한 결과를 상기 복수의 레지스터들에 저장하도록 구성되는 PE 누적기를 포함한다.
몇몇 실시 예들에서, 방법은 프로세서에 의해, 제 1 행렬의 제 1 부분집합의 원소 값들의 각 값과, 제 2 행렬의 x*y 원소들 중 제 1 원소 값의 제 1 동시 곱셈을 수행하는 단계; 상기 프로세서에 의해, 상기 제 2 행렬의 상기 x*y 원소들 중 남은 값 각각에 대하여, 상기 제 1 행렬 원소 값들의 대응하는 부분집합의 남은 값과 제 2 동시 곱셈을 수행하는 단계; 상기 프로세서에 의해, 각 동시 곱셈에 대하여, 상기 프로세서에 연결된 누적기에 상기 각 동시 곱셈의 결과를 저장하는 단계; 및 상기 누적기의 상기 저장된 값들을 출력 특징 맵(OFM)의 제 1 행으로서 출력하는 단계를 포함한다.
몇몇 실시 예들에서, 상기 방법은 상기 프로세서에 의해, 상기 프로세서의 제 1 저장 장치에 x*y 차원을 갖는 상기 제 2 행렬을 저장하는 단계; 상기 프로세서에 의해, 상기 프로세서의 제 2 저장 장치에 n*m 차원을 갖는 상기 제 1 행렬 상기 제 1 부분집합의 원소 값들을 저장하는 단계; 및 상기 프로세서에 의해, 상기 제 2 저장 장치에 상기 제 1 행렬 원소 값들의 제 2 부분집합을 저장하는 단계를 더 포함하되, 상기 x는 상기 제 2 행렬의 행들의 개수이고, 상기 y는 상기 제 2 행렬의 열들의 개수이고, 상기 n은 상기 제 1 행렬의 행들의 개수이고, 상기 m은 상기 제 1 행렬의 열들의 개수이고, 상기 제 1 행렬 상기 제 1 부분집합의 원소 값들은 상기 제 1 행렬 1행의 1열부터 p열까지의 값들을 포함하고, 그리고 상기 제 1 행렬 상기 제 2 부분집합의 원소 값들은 상기 제 1 행렬 1행의 2열부터 (p+1)열까지의 값들을 포함한다.
본 발명의 실시 예에 따르면, 내적 아키텍처 상에서의 2차원 컨볼루션 레이어 맵핑을 가속화하기 위한 프로세싱 회로가 제공된다.
본 명세서에 개시된 몇몇 예시적인 실시 예들의 이하 및 다른 특징들은 상세한 설명, 청구 범위, 및 첨부된 도면들을 참조하여 이해될 것이다.
도 1 내지 도 2는 본 발명의 실시 예에 따른 처리 요소(PE)의 예시적인 구조들을 나타낸다.
도 3은 본 발명의 실시 예에 따른 곱셈-누적(MAC) 타일에 평면 컨볼루션을 맵핑하는 것을 나타낸다.
도 4는 본 발명의 실시 예에 따른 2차원 입력 특징 맵(IFM)을 나타낸다.
도 5a 내지 도 5m은 본 발명의 실시 예에 따른 출력 특징 맵(OFM)의 제 1 행을 결정하는 것과 관련된 상세한 사항들을 나타낸다.
도 5n 내지 도 5w는 본 발명의 실시 예에 따른 출력 특징 맵(OFM)의 제 2 행을 결정하는 것과 관련된 상세한 사항들을 나타낸다.
첨부된 도면들과 관련된 이하의 상세한 설명은 본 명세서에 개시된 바에 따라 제공되는 내적 아키텍처(dot product architecture) 상에서 2차원 컨볼루션 레이어 맵핑을 가속화하기 위한 시스템 및 방법의 몇몇 예시적인 실시 예들에 대한 것이며, 본 명세서에 개시된 내용이 구성되거나 활용될 수 있는 유일한 형태들을 나타내고자 하는 것이 아니다. 본 설명은 나타난 실시 예들과 관련된 본 명세서에 개시된 특징들을 설명한다. 그러나, 본 명세서에 개시된 내용의 범위 내에 포함되도록 의도된 상이한 실시 예에 의해 동일 또는 동등한 기능들 및 구조들이 달성될 수 있음을 이해해야 할 것이다. 본 명세서의 다른 곳에 나타나는 바와 같이, 유사한 참조 번호는 유사한 요소 또는 특징을 나타내도록 의도된다.
컨볼루션 신경망(convolutional neural networks; CNN)들은 이미지 분류, 이미지 클러스터링, 객체 검출(인식) 등의 이미지 처리에 이용될 수 있는 신경망들의 유형들이다. 컨볼루션 신경망들은 이미지 분류, 추적, 검출과 같은 애플리케이션들에 대한 기계 학습 방법 관련 기술들에 비하여 바람직할 수 있다. 컨볼루션 신경망들은 입력 이미지로부터 특징들을 추츨하는데 사용될 수 있는데, 예를 들어, 입력 이미지로부터의 광범위한 특징들은 신경망의 훈련 도중 학습된 가중치들을 갖는 필터들을 이용하는 컨볼루션을 통하여 추출될 수 있다. 추출된 특징들은 출력을 결정하기 위하여 결합될 수 있다. 그러나, 컨볼루션 신경망들은 기계 학습 방법 관련 기술들에 비하여 계산적 연산들의 개수 증가에 수반될 수 있다.
컨볼루션 신경망은 컨볼루션 레이어 및 완전 연결(fully-connected) 레이어를 포함할 수 있다. 컨볼루션 레이어 및 완전 연결 레이어는 계산 수행 및 메모리 접근의 측면에서 서로 다를 수 있다. 예를 들어, 컨볼루션 신경망에서, 완전 연결 레이어는 컨볼루션 레이어에 비하여 적은 계산들을 수행할 수 있으나, 집중적으로 메모리에 접근할 수 있으므로 컨볼루션 신경망의 수행 저하에 대하여 더 큰 영향을 미칠 수 있다. 컨볼루션 신경망의 컨볼루션 레이어들은 대부분의 계산들을 유지할 수 있고, 완전 연결 레이어에 비하여 증가하는 수의 파라미터들을 가질 수 있다. 컨볼루션 레이어는 뉴런들이 가중치를 공유하는 신경망의 레이어일 수 있다. 컨볼루션 레이어의 입력은 입력 이미지 또는 이전 레이어의 출력일 수 있고, 레이어의 출력은 특징 맵일 수 있다.
컨볼루션 신경망에서, 2차원 데이터 어레이들은 컨볼루션 레이어의 입력으로서 이용될 수 있고, 이러한 경우 컨볼루션 레이어의 출력도 2차원 데이터 어레이들일 수 있다. 2차원 입력 어레이들을 이용하여, 컨볼루션 레이어는 입력 어레이들 위로 슬라이딩(sliding)하는 2차원 컨볼루션인 계산들을 수행할 수 있다. 컨볼루션 신경망의 계산들에서, 커널 또는 필터는 가중치들의 2차원 어레이일 수 있고, 이는 2차원 입력 어레이들에 대해 컨볼루션을 수행하는 데 반복적으로 이용될 수 있다. 예를 들어, 커널은 2차원 입력 데이터 위로 슬라이드하여 현재 활성화된 입력 어레이의 섹션과 원소 별 곱셈을 수행할 수 있고, 그 다음 출력 픽셀(예를 들어, 각 출력 픽셀은 커널과 2차원 입력 데이터의 대응하는 부분의 내적이다)로 결과들을 더할 수 있다. 이 과정은 특징들의 2차원 어레이(예를 들어, 입력 특징 맵 상의 2차원 입력 데이터 어레이)를 또 다른 특징들의 2차원 어레이(예를 들어, 출력 특징 맵 상의 2차원 출력 데이터 어레이)로 변환하기 위하여 커널이 슬라이드하는 모든 위치들에 대하여 반복될 수 있다.
컨볼루션 신경망에서, 3차원 데이터 어레이들은 컨볼루션 레이어의 입력들로서 이용될 수 있다. 예를 들어, H×W×D 차원을 갖는 3차원 입력 어레이는 H×W×D 차원을 갖는 F개의 커널들 및 길이 S를 갖는 스트라이드(stride)와 컨볼루션될 수 있다. 스트라이드는 입력 어레이를 따라 슬라이딩할 때 커널의 단계 크기로서 정의될 수 있다. 예를 들어, 길이 1을 갖는 스트라이드는 커널이 원소 별(element by element)로 입력 어레이를 따라 슬라이드한다는 것을 나타낼 수 있다. F개의 커널들 중 H×W×D 차원을 갖는 각 3차원 커널은 3차원 입력 어레이를 따라 스트라이드 S로 슬라이드할 수 있고, 각 시프트 동안, 3차원 커널의 각 원소 또는 각 가중치는 3차원 입력 어레이의 겹치는 영역의 각 쌍 별(pair-wise) 입력 원소와 함께 곱해지고 그리고 더해진다. 이와 같이, 컨볼루션 신경망은 완전 결합 신경망에 비하여 광범위한 수의 반복 연산들을 수행할 수 있다(예를 들어, 필터 크기=h×w×D, 입력 크기=H×W×D).
곱셈-누적(multiply-accumulate; MAC) 연산들을 수행할 수 있는 컨볼루션 신경망의 컨볼루션 레이어는 컨볼루션 신경망의 대부분의 실행 시간을 사용할 수 있다. MAC 연산은 두 수의 곱을 계산하고 그 곱을 누산기에 더할 수 있다. 신경망 가속기(예를 들어, Resnet-152)들은 컨볼루션 레이어들에서 계산들의 횟수 또는 컨볼루션 신경망에서 메모리 접근들의 횟수를 줄일 수 있다. 컨볼루션 레이어의 실행 시간을 줄이기 위해서, 고속 가속기들은 처리 요소(processing element; PE)들에 의해 대규모의 MAC 연산을 병렬로 실행함으로써 컨볼루션 레이어에서 수행되는 계산을 가속시키는 특유의 구조를 사용할 수 있다.
MobileNet과 같은 2차원 컨볼루션을 갖는 신경망들은 컨볼루션 레이어에서 계산적 연산들의 횟수를 줄이는 데 이용될 수 있다. 예를 들어, 고속 MAC 연산을 수행하기 위하여, 컨볼루션 레이어의 입력 어레이의 정보 또는 입력 특징 맵(input feature map; IFM) 정보, 및 현재 레이어의 필터 또는 커널 가중치 정보는 메모리에 업로드될 수 있다. 업로드된 정보는 MAC 연산에 기반한 PE들에 의해 처리되어 다음 레이어에 대한 출력 특징 맵(output feature map; OFM)을 생성할 수 있고, 이는 메모리에 저장된다. MAC 타일(tile)들 또는 MAC 어레이를 포함하는 신경 프로세서는, 계산의 완료를 가속화시키기 위해 입력 특징 맵의 희소성(sparsity)을 활용할 수 있는데, 이는 특정 곱셈 및 덧셈 연산들을 순서를 바꾸어 (앞당겨) 진행함으로써, 그렇지 않을 경우 입력 특징 맵의 원소가 0일 때, 0을 곱하는 곱셈을 수행하는 곱셈기를 이용하기 위해서이다.
몇몇 경우들에서, 컨볼루션 신경망의 2차원 컨볼루션 레이어들은 내적(dot product) 아키텍처들에서 제대로 맵핑(mapping)되지 않을 수 있는데, 2차원 컨볼루션 레이어는 16×16 MAC 어레이의 일부만을(예를 들어, 16×16 MAC 어레이의 대각선 원소들만을) 활용할 수 있기 때문이다. 예를 들어, 몇몇 경우들에서, 내적 아키텍처들의 활용성 저하는 한 번에 MAC 어레이의 16행들 중 하나만을 사용함으로써 야기될 수 있다.
몇몇 실시 예들에서, 신경 프로세서는 출력 특징 맵을 형성하기 위하여, 가중치들의 다차원 어레이(또는 텐서)(예를 들어, 커널)와 입력 특징 맵(또는 활성화들의 텐서)의 텐서 곱 또는 컨볼루션을 계산하도록 구성될 수 있다.
몇몇 실시 예들에서, 신경 프로세서는 복수의 정적 임의 접근 메모리(static random access memory; SRAM) 뱅크 세트들을 포함한다. 몇몇 실시 예들에서, 복수의 SRAM 뱅크 세트들의 각각은 4개의 SRAM 뱅크들을 포함한다. 몇몇 실시 예들에서, 복수의 SRAM 뱅크 세트들은 상호 연결 패브릭(fabric)(예를 들어, 입력 특징 맵 전달 패브릭)을 통하여 MAC 타일들로 연결될 수 있다. 몇몇 실시 예들에서, 상호 연결 패브릭 또는 입력 특징 맵 전송 패브릭은 SRAM 뱅크 세트들에 저장된 입력 활성화 맵들을 후속 계산을 위하여 MAC 타일들로 가져올 수 있다.
몇몇 실시 예들에서, MAC 타일들은 또 다른 상호 연결 패브릭(예를 들어, 저장을 위하여 계산된 결과들을 MAC 타일들로부터 SRAM 뱅크 세트들로 전송하는 출력 특징 맵 전달 패브릭)을 통하여 SRAM 뱅크 세트들로 연결될 수 있다. 몇몇 실시 예들에서, MAC 타일들은 감소 트리 또는 감소 패브릭에 연결될 수 있다. 몇몇 실시 예들에서, 입력 특징 맵 전송 패브릭은 분할된(segmented) 버스일 수 있고, 그리고, 결과적으로, SRAM 뱅크 세트들의 각각은 MAC 타일들 중 대응하는 하나와 관련될 수 있다.
몇몇 실시 예들에서, 각 MAC 타일은 PE 열들의 PE 어레이를 포함할 수 있다. 몇몇 실시 예들에서, 각 PE 열은 복수의 PE들과 합산기 트리를 포함할 수 있다. 몇몇 실시 예들에서, 각 PE 어레이는 8개의 PE 열들을 포함할 수 있고, 각 PE 열은 16개의 PE들과 합산기 트리를 포함할 수 있다.
몇몇 실시 예들에서, 각 PE는 복수의 레지스터들(예를 들어, “가중치 버퍼들(weight buffers)”으로 불릴 수 있는 18개의 레지스터들(예를 들어, 18개의 9-비트 레지스터들)을 포함하는 레지스터 파일), 및 곱셈기를 포함할 수 있다. 몇몇 실시 예들에서, 곱셈기는 입력 활성화들과 가중치들을 곱할 수 있다. 후속적으로, 각 MAC 열의 합산기 트리는 열 내의 복수의 PE들(예를 들어, 16개의 PE들)로부터 결과로 생성된 곱들을 요약하여(예를 들어, 감싸거나(fold) 누적하여) 내적을 형성할 수 있다.
몇몇 실시 예들에서, 각 MAC 타일은 또한 캐시를 포함할 수 있다. 몇몇 실시 예들에서, 캐시는 SRAM으로부터 수신된 입력-특징 맵 값들을 캐싱(caching)함으로써 입력 특징 맵들에 대한 SRAM 판독들을 감소시킬 수 있다. 몇몇 실시 예들에서, 캐시는 복수의 병렬 “활성화 레인들(activation lanes)”을 포함하고, 각 활성화 레인은 MAC 열의 PE 어레이의 “행”에 대응한다.
몇몇 실시 예들에서, 캐시로부터의 입력 활성화들은 페치(fetch)되고(예를 들어, 입력 특징 맵 활성화 버퍼로 페치될 수 있다) 또한 값이 0인 활성화들을 생략하여, 가능한 경우, 희소 활성화 계산을 실현할 수 있다. 다음으로, 숫자 유형의 활성화들은 부호-및-8비트-크기(sign-and-8bit-magnitude) 포맷으로 변환될 수 있다. 생성되는 변환된 복수의 활성화 값들은 병렬적으로 PE 어레이로 브로드캐스트(broadcast, 알리다)되어, 각 활성화 레인은 PE들의 대응하는 행의 대응하는 곱셈기 유닛들로 입력 활성화 값을 가져온다. 몇몇 실시 예들에서, PE들의 각 열에서 결과들은 리턴(반환) 유닛의 누산기에 누적된다. 몇몇 실시 예들에서, 가능한 여러 번의 사이클들 동안 곱셈 값들이 누적된 이후, 결과는 SRAM으로 리턴될 수 있다. 리턴 유닛은 픽셀에 대한 모든 계산들이 함께 합산되고 나면, 큰 누적 값을 작은 정밀도로 다시 양자화(quantize)한다.
도 1 내지 도 2는 PE의 예시적인 구조들을 나타낸다. 몇몇 실시 예들에서, 도 1 내지 도 2에 나타난 바와 같이, 각 PE(103)는 누산기 레지스터(122)를 또한 포함할 수 있다. 몇몇 실시 예들에서, “누산기”(예를 들어, 누산기 레지스터(122))는 합산기, 및 입력 값을 레지스터의 내용들에 더하도록 구성된 레지스터의 결합일 수 있고, 레지스터의 내용들을 합산 결과로 덮어씌운다. 몇몇 실시 예들에서, PE(103)는 누산기 레지스터(122)뿐만 아니라 또 다른 누산기 레지스터(124)를 또한 통합할 수 있다. 이러한 경우, 누산기 레지스터(122)는 가중치 버퍼(116)의 부분일 수 있다. 누산기 레지스터(124)는 곱셈기(118)로부터의 출력과 가중치 버퍼(116)로부터의 입력 값을 레지스터의 내용에 더하도록 구성될 수 있고, 누산기 레지스터(122)는 가중치 버퍼(116)에 합을 저장하도록 구성되거나, 또는 누산기 레지스터(124)로부터의 합을 가중치 버퍼(116)의 내용에 덮어씌우도록 구성될 수 있다.
몇몇 실시 예들에서, 가중치 버퍼(116)는 18개의 1-바이트(B) 원소들을 가질 수 있다. 몇몇 실시 예들에서, 2차원 컨볼루션 모드에서는, 가중치 버퍼(116)의 18개의 1-바이트 원소들 중 12개는 활성화들을 저장하는 데 사용되고, 가중치 버퍼(116)의 나머지 6개의 1-바이트 원소들은 2개의 3-바이트 누산기(예를 들어, 누산기 레지스터들(122, 124))로 나누어질 수 있다.
몇몇 실시 예들에서, 2개의 누산기 레지스터들(122, 124)는 이전 라운드의 누적 결과를 누적 및 저장할 수 있다. 몇몇 실시 예들에서, 누산기 레지스터들(122, 124) 중 하나가 누적하는 데 사용될 수 있고, 누산기 레지스터들(122, 124) 중 다른 하나로부터 저장된 결과는 점진적으로 리턴 유닛으로 전송될 수 있다. 이로써, 스톨 시간(stall time)이 최소화될 수 있다.
도 3은 본 명세서에 개시된 몇몇 실시 예들에 따라, MAC 타일에 평면 컨볼루션을 맵핑하는 것을 나타낸다.
도 3에 나타난 바와 같이, 특정 길이(예를 들어, 길이 16)를 갖는 입력 특징 맵(202)는 “입력 특징 맵 슬라이스”로 불릴 수 있다. 입력 특징 맵 슬라이스는 평면 좌표 (x, y) 및 그와 관련된 깊이 채널 인덱스 d를 가질 수 있다(예를 들어, IFM[x, y, d:d+15]). 몇몇 실시 예들에서, 타일(208)(예를 들어, MAC 타일)은 3차원 입력 특징 맵 텐서를 포함하는 온-칩 SRAM(예를 들어, SRAM 뱅크 세트들)로부터 한 번에 하나의 입력 특징 맵 슬라이스를 수신할 수 있고, 각 입력 특징 맵 슬라이스는 입력 레이어의 평면상 위치 (x, y)에서의 인덱스(예를 들어, d부터 d+15까지(d+15 포함))로부터의 16개의 깊이 채널들에 대한 값들을 포함한다(도 3에는 7개의 채널들 또는 깊이 채널들만 나타나 있다).
유사하게, 특정 길이(예를 들어, 길이 8)를 갖는 출력 특징 맵 벡터(206)는 “출력 특징 맵 슬라이스”로 불릴 수 있다. 출력 특징 맵 슬라이스는 평면 좌표 (x, y) 및, 관련 출력 특징 맵 텐서에 대한 인덱스들로서, 그(평면 좌표 (x, y))와 관련된 깊이 채널 인덱스 d를 가질 수 있다(예를 들어, OFM[x, y, d:d+7]). 몇몇 실시 예들에서, 타일(208)은 출력으로서 출력 특징 맵 슬라이스를 생성할 수 있다. 몇몇 실시 예들에서, 타일들(208)로부터 출력된 출력 특징 맵 벡터들(206)(출력 특징 맵 슬라이스들)은, SRAM 뱅크들에 저장하기 위해 출력 특징 맵 전송 패브릭을 통하여 최종 출력 특징 맵 벡터 결과를 전송하기 전에, 출력 특징 맵 벡터 계산을 완료하기 위하여 감소 트리 또는 감소 패브릭에 의해 추가로 감소될 필요가 있을 수 있다.
도 3의 예시적인 실시 예에서, 커널(204)는 입력 특징 맵(202)과 다른 길이 및 너비를 가질 수 있지만, 커널(204)는 입력 특징 맵(202)과 같은 깊이를 가질 수 있다. 몇몇 실시 예들에서, 커널(204)는 입력 특징 맵(202)의 높이 및 너비를 따라 슬라이드할 수 있고, 각 슬라이딩 위치마다, 원소 별(element-wise) 곱셈 및 덧셈 연산이 수행될 수 있으며, 이는 출력 특징 맵 슬라이스의 단일 원소를 생성한다. 깊이 채널 인덱스 d를 지니는 출력 특징 맵 벡터(206)(예를 들어, OFM[x, y, d:d+7])를 결정하기 위하여, 8개의 커널들(204)(예를 들어, 출력 특징 맵 벡터(206)의 깊이와 같은 수의 커널들)은 입력 특징 맵(202)에 적용될 수 있고, 8개의 커널들 중 각 커널(204)은 출력 특징 맵 채널을 생성할 수 있다.
몇몇 실시 예들에서, 타일(208)은 16개의 행들(또는 16개의 레인들) 및 8개의 열들을 포함할 수 있다. 몇몇 실시 예들에서, 연산의 각 사이클 동안(예를 들어, 클록의 각 사이클 동안), 열(210) 상의 16개의 곱셈기들의 각각은 그 입력 단들에서의 두 요소들로부터 각각의 곱을 형성할 수 있고, 합산기들의 각각은 그 입력단들에서 16개의 곱들 중 일부의 합을 형성할 수 있다.
타일들(예를 들어, 타일(208))을 통합하는 신경 프로세서를 이용한 출력 특징 맵(206)의 계산에 대한 더 상세한 사항들은 2019년 6월 19일에 출원된 미국 특허출원 16/446,610의 도 1C 내지 도 1H를 참조하여 설명되며, 그 전체 내용은 본 명세서에 참조로서 포함된다.
도 4는 예시적인 2차원 입력 특징 맵(400)을 나타낸다. 몇몇 실시 예들에서, 도 4는 입력 특징 맵이 어떻게 조각들로 분리되는지 보여주며, 각 조각은 MAC 타일에 의해 처리된다(서로 다른 라운드들에서 같은 타일을 이용하거나, 또는 동시에 여러 타일들을 이용하여). 몇몇 실시 예들에서, 2차원(예를 들어, 깊이 별(depthwise)) 컨볼루션 연산 동안, 2차원 입력 특징 맵(400)은 8개 열들만큼의 너비를 지니는(예를 들어, 이 예시에서는 비트 0부터 비트 7까지 레이블된) 섹션들(예를 들어, 402, 404))로 나누어질 수 있다. 8개 열들만큼의 너비를 지니는 섹션들(402, 404)의 각각은 순서대로 처리될 수 있다. 몇몇 실시 예들에서, 신경 프로세서의 각 타일(예를 들어, MAC 타일)은 16개의 출력 채널들을 처리할 수 있다. 몇몇 실시 예들에서, 신경 프로세서의 타일 어레이는 최대 개수의 출력 채널들(예를 들어, 출력 특징 맵의 모든 출력 채널들)을 처리하도록 구성될 수 있다. 예를 들어, 64개의 출력 채널들을 처리하기 위하여, 신경 프로세서의 타일 어레이는 4×4 타일 어레이로 구성될 수 있고, 64(예를 들어, 4×16 행들) 채널들이 한 번에 처리될 수 있다.
몇몇 실시 예들에서, SRAM로부터 타일(예를 들어, MAC 타일)을 공급하는 4개의 채널들이 있기 때문에, 첫 번째 출력 픽셀은 계산하는 데 ((2+Kx-1)*Ky) 사이클들이 걸릴 수 있고, 이는 첫 번째 픽셀에 대한 데이터를 판독하는데 필요한 사이클들의 수일 수 있다. 이 경우, Kx와 Ky는 2차원 커널의 차원들이다. 몇몇 실시 예들에서, 각 추가적인 출력 픽셀은 계산하는 데 (Kx*Ky) 사이클들이 걸릴 수 있는데, SRAM 판독들이 이미 가중치 레지스터에 위치한 입력 특징 맵을 이용한 계산들과 겹칠 수 있기 때문이다. 몇몇 실시 예들에서, 입력 특징 맵(예를 들어, 입력 특징 맵(400))의 각 열을 처리하기 위하여, (커널-1) 열들과 같은 추가적인 데이터가 입력 특징 맵 섹션(예를 들어, 섹션(402) 상의 입력 특징 맵(400) 열들을 처리하는 데 필요할 수 있다(예를 들어, 3×3 크기(예를 들어, 3개 행들 및 3개 열들)의 2차원 커널에 대하여, 도 4에 나타난 바와 같이, 3-1=2 추가적인 데이터 컬럼들이 입력 특징 맵(400)을 처리하는 데 필요할 수 있다). 나아가, 신경 프로세서의 각 타일(예를 들어, MAC 타일) 내부의 하드웨어는 몇몇 실시 예들에서 재배열 또는 재목적될 수 있다.
몇몇 실시 예들에서, 컨볼루션들을 계산하는 방법은 입력 특징 맵에 걸쳐 동일한 컨볼루션 커널(예를 들어, 동일한 가중치들)의 반복적인 사용을 고려할 수 있고, 또한 출력 특징 맵의 다수의 출력 값들에 대하여 입력 특징 맵의 동일한 값들의 반복적인 사용 역시 고려할 수 있다. 컨볼루션을 계산하기 위한 이러한 방법들은 출력 특징 맵의 현재 행의 각 출력 픽셀들에 대하여 누산기를 유지할 수 있다. 이러한 경우, 컨볼루션 커널의 각 가중치에 대하여, 입력 특징 맵의 원소들(예를 들어, 활성화들)은 가중치 레지스터들에 로딩(load)될 수 있다. 입력 특징 맵의 로딩된 원소들은 컨볼루션 커널의 현재 가중치가 곱해지고, 그리고 누산기에 합산된다. 다음으로, 로딩된 원소들은 커널의 다음 가중치에 의해 곱해지기 위하여 시프팅(shift)되고, 입력 특징 맵으로부터의 추가적인 원소들은 컨볼루션 커널의 다음 가중치에 의해 곱해지기 위하여 가중치 레지스터들로 로딩된다. 결과적으로, 컨볼루션 커널의 동일한 가중치에 의해 곱해지는 입력 특징 맵의 다수의 값들은, 병렬적으로 그 동일한 가중치에 의해 곱해짐으로써, 클록 사이클 당 완료되는 연산들의 수가 증가하게 되고, 이미 로딩된 값들은 다음 가중치에 의한 곱셈을 위하여 다시 사용됨으로써, 전송되는 데이터의 양이 감소하게 된다.
도 5a 내지 도 5w는 2차원 입력 특징 맵 및 가중치들의 2차원 커널로부터 2차원 출력 특징 맵을 결정하는 예시적인 방법을 나타낸다.
도 5a 내지 도 5w의 예시적인 실시 예에서, 커널(504)의 가중치들은 입력 특징 맵이 가중치 레지스터들(528)(예를 들어, 도 1 내지 도 2의 가중치 버퍼(116))으로 판독되는 동안, 캐시(529)에 위치할 수 있다.
도 5a 내지 도 5m은 출력 특징 맵(508)의 1행(506)을 결정하는 것과 관련된 상세한 사항들을 나타낸다(예를 들어, 3*3 컨볼루션, 스트라이드 1, 패딩(padding) 없음).
도 5b는 도 5a의 단계 510의 상세한 사항들을 나타낸다. 도 5b에 나타난 바와 같이, 단계 510에서, 4개의 판독 채널들(527)(예를 들어, 분할된 입력 특징 맵 전송 패브릭)은 SRAM(예를 들어, 4개의 SRAM 블록들을 포함하는 SRAM 뱅크 세트)의 입력 특징 맵(502) 행렬 1행의 위치들 [0, 0], [0, 2], [0, 4], 및 [0, 6]으로부터, 복수의(예를 들어, 8개의) 가중치 레지스터들(528)(예를 들어, 도 1 내지 도 2의 가중치 버퍼(116))의 4개의 가중치 레지스터들로 데이터를 로드한다.
다음으로, 도 5c에 나타난 바와 같이, 4개의 판독 채널들(527)은 SRAM의 입력 특징 맵(502) 행렬 1행의 위치들 [0, 1], [0, 3], [0, 5], 및 [0, 7]로부터, 8개의 가중치 레지스터들(528) 중 다른 4개의 가중치 레지스터들로 데이터를 로드한다. 캐시(529)(예를 들어, 지그재그 캐시)는 커널(504) 위치 [0, 0]의 가중치 값 W0를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [0, 0]~[0, 7]의 입력 특징 맵 값들에 W0를 곱할 수 있고, 결과를 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))로 로드할 수 있다.
도 5d는 단계 512의 상세한 사항들을 나타낸다. 도 5d에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬 1행의 위치 [0, 8]에서 입력 특징 맵(502) 행렬 8열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5d에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [0, 0]~[0, 7] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 가중치 행렬(504) 위치 [0, 1]의 가중치 값 W1을 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [0, 1]~[0, 8]의 입력 특징 맵 값들에 W1을 곱할 수 있고, 곱셈들의 결과들은 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))에 누적될 수 있다.
도 5e는 단계 514의 상세한 사항들을 나타낸다. 도 5e에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬 1행의 위치 [0, 9]에서 입력 특징 맵(502) 행렬 9열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5e에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [0, 1]~[0, 8] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 가중치 행렬(504) 위치 [0, 2]의 가중치 값 W2를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [0, 2]~[0, 9]의 입력 특징 맵 값들에 W2를 곱할 수 있고, 곱셈들의 결과들은 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))에 누적될 수 있다. 이 단계에서, 프로세서는 출력 특징 맵(508)을 결정하기 위하여 컨볼루션을 위한 계산들의 제 1 세트를 완료한다. 입력 특징 맵(502) 행렬 1행의 위치들 [0, 0]~[0, 9]의 데이터는 다음 계산들에서 사용되지 않을 수 있고(예를 들어, 다음 계산을 위하여 필요하지 않을 수 있고), 그러므로 가중치 레지스터들(528)에 저장되지 않을 수 있다(예를 들어, 입력 특징 맵(502) 1행의 데이터는 가중치 레지스터들(528)에서 삭제되거나 또는 덮어씌워질 수 있다).
도 5f 내지 도 5g는 단계 516의 상세한 사항들을 나타낸다. 도 5f에 나타난 바와 같이, 4개의 판독 채널들(527)(예를 들어, 분할된 입력 특징 맵 전송 패브릭)은 SRAM(예를 들어, 4개의 SRAM 블록들을 포함하는 SRAM 뱅크 세트)의 입력 특징 맵(502) 행렬 2행의 위치들 [1, 0], [1, 2], [1, 4], 및 [1, 6]으로부터, 복수의(예를 들어, 8개의) 가중치 레지스터들(528)(예를 들어, 도 1 내지 도 2의 가중치 버퍼(116))의 4개의 가중치 레지스터들로 데이터를 로드한다. 다음으로, 도 5g에 나타난 바와 같이, 4개의 판독 채널들(527)은 SRAM의 입력 특징 맵(502) 행렬 2행의 위치들 [1, 1], [1, 3], [1, 5], 및 [1, 7]로부터, 8개의 가중치 레지스터들(528) 중 다른 4개의 가중치 레지스터들로 데이터를 로드한다. 캐시(529)(예를 들어, 지그재그 캐시)는 가중치 행렬(또는 커널)(504) 위치 [1, 0]의 가중치 값 W3을 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [1, 0]~[1, 7]의 입력 특징 맵 값들에 W3을 곱할 수 있고, 결과를 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))로 로드할 수 있다.
도 5h는 단계 518의 상세한 사항들을 나타낸다. 도 5h에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬 2행의 위치 [1, 8]에서 입력 특징 맵(502) 행렬 8열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5h에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [1, 0]~[1, 7] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 가중치 행렬(504) 위치 [1, 1]의 가중치 값 W4를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [1, 1]~[1, 8]의 입력 특징 맵 값들에 W4를 곱할 수 있고, 곱셈들의 결과들은 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))에 누적될 수 있다.
도 5i는 단계 520의 상세한 사항들을 나타낸다. 도 5i에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬 2행의 위치 [1, 9]에서 입력 특징 맵(502) 행렬 9열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5i에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [1, 1]~[1, 8] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 가중치 행렬(504) 위치 [1, 2]의 가중치 값 W5를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [1, 2]~[1, 9]의 입력 특징 맵 값들에 W5를 곱할 수 있고, 곱셈들의 결과들은 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))에 누적될 수 있다. 이 단계에서, 프로세서는 출력 특징 맵(508)을 결정하기 위하여 컨볼루션을 위한 계산들의 제 2 세트를 완료한다. 입력 특징 맵(502) 행렬 2행의 위치들 [1, 0]~[1, 9]의 데이터는 다음 계산들에서 사용될 수 있고, 그러므로 가중치 레지스터들(528)에 저장될 수 있다.
도 5j 내지 도 5k는 단계 522의 상세한 사항들을 나타낸다. 도 5j에 나타난 바와 같이, 4개의 판독 채널들(527)(예를 들어, 분할된 입력 특징 맵 전송 패브릭)은 SRAM(예를 들어, 4개의 SRAM 블록들을 포함하는 SRAM 뱅크 세트)의 입력 특징 맵(502) 행렬 3행의 위치들 [2, 0], [2, 2], [2, 4], 및 [2, 6]으로부터, 복수의(예를 들어, 8개의) 가중치 레지스터들(528)(예를 들어, 도 1 내지 도 2의 가중치 버퍼(116))의 4개의 가중치 레지스터들로 데이터를 로드한다. 다음으로, 도 5k에 나타난 바와 같이, 4개의 판독 채널들(527)은 SRAM의 입력 특징 맵(502) 행렬 3행의 위치들 [2, 1], [2, 3], [2, 5], 및 [2, 7]로부터, 8개의 가중치 레지스터들(528) 중 다른 4개의 가중치 레지스터들로 데이터를 로드한다. 캐시(529)(예를 들어, 지그재그 캐시)는 가중치 행렬(504) 위치 [2, 0]의 가중치 값 W6를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [2, 0]~[2, 7]의 입력 특징 맵 값들에 W6를 곱할 수 있고, 결과를 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))로 로드할 수 있다.
도 5l은 단계 524의 상세한 사항들을 나타낸다. 도 5l에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬 3행의 위치 [2, 8]에서 입력 특징 맵(502) 행렬 8열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5l에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [2, 0]~[2, 7] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 가중치 행렬(504) 위치 [2, 1]의 가중치 값 W7을 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [2, 1]~[2, 8]의 입력 특징 맵 값들에 W7을 곱할 수 있고, 곱셈들의 결과들은 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))에 누적될 수 있다.
도 5m은 단계 526의 상세한 사항들을 나타낸다. 도 5m에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬 3행의 위치 [2, 9]에서 입력 특징 맵(502) 행렬 9열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5m에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [2, 1]~[2, 8] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 가중치 행렬(504) 위치 [2, 2]의 가중치 값 W8을 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [2, 2]~[2, 9]의 입력 특징 맵 값들에 W8을 곱할 수 있고, 곱셈들의 결과들은 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))에 누적될 수 있다. 이 단계에서, 프로세서는 출력 특징 맵(508)을 결정하기 위하여 컨볼루션을 위한 계산들의 다음 세트를 완료한다. 입력 특징 맵(502) 행렬 위치들 [2, 0]~[2, 9]의 데이터는 다음 계산들에서 사용될 수 있고, 그러므로 가중치 레지스터들(528)에 저장될 수 있다.
단계 510부터 단계 526까지의 결과들은 출력 특징 맵(508)의 1행(506)을 결정하기 위하여 더해질 수 있다.
도 5n 내지 도 5w는 출력 특징 맵(508)의 2행(530)을 결정하는 것과 관련된 상세한 사항들을 나타낸다.
도 5o는 도 5n의 단계 532의 상세한 사항들을 나타낸다. 도 5o에 나타난 바와 같이, 단계 532에서, 4개의 판독 채널들(527)(예를 들어, 분할된 입력 특징 맵 전송 패브릭)은 SRAM(예를 들어, 4개의 SRAM 블록들을 포함하는 SRAM 뱅크 세트)의 입력 특징 맵(502) 행렬 4행의 위치들 [3, 0], [3, 2], [3, 4], 및 [3, 6]으로부터, 복수의(예를 들어, 8개의) 가중치 레지스터들(528)(예를 들어, 도 1 내지 도 2의 가중치 버퍼(116))의 4개의 가중치 레지스터들로 데이터를 로드한다. 캐시(529)는 위치 [0, 0]의 가중치 값 W0를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [1, 0]~[1, 7]의 입력 특징 맵 값들에 W0을 곱할 수 있고, 곱셈들의 결과들은 누산기들의 제 2 세트(예를 들어, 도 2의 누산기 레지스터(122))에 누적될 수 있고, 그 동안 누산기들의 제 1 세트는 SRAM 뱅크들(예를 들어, SRAM 뱅크 세트들)로 다시 쓰여질 수 있다.
도 5p는 단계 534의 상세한 사항들을 나타낸다. 도 5p에 나타난 바와 같이, 판독 채널들(527)은 SRAM의 입력 특징 맵(502) 행렬 4행의 위치들 [3, 1], [3, 3], [3, 5], 및 [3, 7]로부터, 8개의 가중치 레지스터들(528) 중 다른 4개의 가중치 레지스터들로 데이터를 로드한다. 캐시(529)(예를 들어, 지그재그 캐시)는 가중치 행렬(504) 위치 [1, 1]의 가중치 값 W1을 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [1, 1]~[1, 8]의 입력 특징 맵 값들에 W1을 곱할 수 있고, 결과를 누산기들의 제 2 세트(예를 들어, 도 2의 누산기 레지스터(122))로 로드할 수 있다. 누산기들의 제 1 세트는 SRAM 뱅크들(예를 들어, SRAM 뱅크 세트들)로 계속해서 다시 쓰여진다. 입력 특징 맵(502) 행렬 위치들 [1, 0]~[1, 7]의 데이터는 필요하지 않을 수 있고, 그러므로 입력 특징 맵(502) 행렬 위치 [3, 0]~[3, 7]의 데이터에 의해 대체될 것이다.
도 5q는 단계 536의 상세한 사항들을 나타낸다. 도 5q에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬의 위치 [3, 8]로부터, 입력 특징 맵(502) 행렬 8열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5q에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [3, 0]~[3, 7] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 가중치 행렬(504) 위치 [0, 2]의 가중치 값 W2를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [1, 2]~[1, 9]의 입력 특징 맵 값들에 W2를 곱할 수 있고, 곱셈의 결과를 누산기들의 제 2 세트(예를 들어, 도 2의 누산기 레지스터(122))로 로드할 수 있다. 입력 특징 맵(502) 행렬 위치들 [1, 1]~[1, 8]의 데이터는 다음 계산들에 사용되지 않을 수 있고, 그러므로 입력 특징 맵(502) 행렬 위치 [3, 1]~[3, 8]의 데이터에 의해 대체될 것이다.
도 5r은 단계 538의 상세한 사항들을 나타낸다. 도 5r에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬 4행의 위치 [3, 9]로부터, 입력 특징 맵(502) 행렬 9열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5r에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [3, 1]~[3, 8] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 위치 [2, 0]의 가중치 값 W3를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [2, 0]~[2, 7]의 입력 특징 맵 값들에 W3를 곱할 수 있고, 곱셈의 결과를 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))로 로드할 수 있다. 이 단계에서, 프로세서는 출력 특징 맵(508)을 결정하기 위하여 컨볼루션을 위한 계산들의 제 2 세트를 완료한다. 입력 특징 맵(502) 행렬 위치들 [2, 0]~[2, 9]의 데이터는 다음 계산들에 사용될 수 있고, 그러므로 가중치 레지스터들(528)에 저장될 수 있다. 입력 특징 맵(502) 행렬의 2행의 위치들 [1, 2]~[1, 9]의 데이터는 다음 계산들에 사용되지 않을 수 있고, 그러므로 입력 특징 맵(502) 행렬 위치 [3, 2]~[3, 9]의 데이터에 의해 대체될 것이다.
도 5s는 단계 540의 상세한 사항들을 나타낸다. 도 5s에 나타난 바와 같이, 4개의 판독 채널들(527)(예를 들어, 분할된 입력 특징 맵 전송 패브릭)은 SRAM(예를 들어, 4개의 SRAM 블록들을 포함하는 SRAM 뱅크 세트)의 입력 특징 맵(502) 행렬 5행의 위치들 [4, 0], [4, 2], [4, 4], 및 [4, 6]으로부터, 복수의(예를 들어, 8개의) 가중치 레지스터들(528)(예를 들어, 도 1 내지 도 2의 가중치 버퍼(116))의 4개의 가중치 레지스터들로 데이터를 로드한다. 캐시(529)(예를 들어, 지그재그 캐시)는 가중치 행렬(504) 위치 [1, 1]의 가중치 값 W4를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [2, 1]~[2, 8]의 입력 특징 맵 값들에 W4를 곱할 수 있고, 결과를 누산기들의 제 2 세트(예를 들어, 도 2의 누산기 레지스터(122))로 로드할 수 있다.
도 5t는 단계 542의 상세한 사항들을 나타낸다. 도 5t에 나타난 바와 같이, 4개의 판독 채널들(527)은 SRAM의 입력 특징 맵(502) 행렬 5행의 위치들 [4, 1], [4, 3], [4, 5], 및 [4, 7]로부터, 8개의 가중치 레지스터들(528) 중 다른 4개의 가중치 레지스터들로 데이터를 로드한다. 캐시(529)(예를 들어, 지그재그 캐시)는 가중치 행렬(504) 위치 [1, 2]의 가중치 값 W5를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [2, 2]~[2, 9]의 입력 특징 맵 값들에 W5를 곱할 수 있고, 결과를 누산기들의 제 2 세트(예를 들어, 도 2의 누산기 레지스터(122))로 로드할 수 있다. 입력 특징 맵(502) 행렬 위치들 [2, 0]~[2, 7]의 데이터는 필요하지 않을 수 있고, 그러므로 입력 특징 맵(502) 행렬 위치 [4, 0]~[4, 7]의 데이터에 의해 대체될 것이다.
도 5u는 단계 544의 상세한 사항들을 나타낸다. 도 5u에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬의 위치 [4, 8]로부터, 입력 특징 맵(502) 행렬 8열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5u에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [4, 0]~[4, 7] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 가중치 행렬(504) 위치 [2, 0]의 가중치 값 W6를 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [3, 0]~[3, 7]의 입력 특징 맵 값들에 W6를 곱할 수 있고, 곱셈의 결과를 누산기들의 제 2 세트(예를 들어, 도 2의 누산기 레지스터(122))로 누적할 수 있다. 입력 특징 맵(502) 행렬 위치들 [2, 1]~[2, 8]의 데이터는 다음 계산들에 사용되지 않을 수 있고, 그러므로 입력 특징 맵(502) 행렬 위치 [3, 1]~[3, 8]의 데이터에 의해 대체될 것이다.
도 5v는 단계 546의 상세한 사항들을 나타낸다. 도 5v에 나타난 바와 같이, 하나의 판독 채널은 SRAM의 입력 특징 맵(502) 행렬 5행의 위치 [4, 9]로부터, 입력 특징 맵(502) 행렬 9열에 대한 가중치 레지스터(528)로 데이터를 로드하고, 그 동안 도 5v에 나타난 바와 같이, 이전 사이클에 로딩된 입력 특징 맵 값들(예를 들어, 입력 특징 맵(502) 행렬의 위치들 [4, 1]~[4, 8] 상의 입력 특징 맵 값들)은 가중치 레지스터들(528)의 이웃하는 열들의 왼쪽으로 시프팅될 수 있다. 캐시(529)는 위치 [2, 1]의 가중치 값 W7을 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [3, 1]~[3, 8]의 입력 특징 맵 값들에 W7을 곱할 수 있고, 곱셈의 결과를 누산기들의 제 1 세트(예를 들어, 도 2의 누산기 레지스터(122))로 누적할 수 있다. 이 단계에서, 프로세서는 출력 특징 맵(508)을 결정하기 위하여 컨볼루션을 위한 계산들의 다음 세트를 완료한다. 입력 특징 맵(502) 행렬 위치들 [3, 0]~[3, 9]의 데이터는 다음 계산들에 사용될 수 있고, 그러므로 도 5v에 나타난 바와 같이 저장될 수 있다. 입력 특징 맵(502) 행렬 위치들 [2, 2]~[2, 9]의 데이터는 다음 계산들에 사용되지 않을 수 있고, 그러므로 입력 특징 맵(502) 행렬 위치 [4, 2]~[4, 9]의 데이터에 의해 대체될 것이다.
도 5w는 도 5n의 단계 548의 상세한 사항들을 나타낸다. 도 5w에 나타난 바와 같이, 4개의 판독 채널들(527)(예를 들어, 분할된 입력 특징 맵 전송 패브릭)은 SRAM(예를 들어, 4개의 SRAM 블록들을 포함하는 SRAM 뱅크 세트)의 입력 특징 맵(502) 행렬의 위치들 [5, 0], [5, 2], [5, 4], 및 [5, 6]으로부터, 복수의(예를 들어, 8개의) 가중치 레지스터들(528)(예를 들어, 도 1 내지 도 2의 가중치 버퍼(116))의 4개의 가중치 레지스터들로 데이터를 로드한다. 캐시(529)는 가중치 행렬(504) 위치 [2, 2]의 가중치 값 W8을 브로드캐스트한다. 각 열(예를 들어, MAC 타일의 PE 열)의 곱셈기들은 가중치 레지스터들(528)에 로딩된 입력 특징 맵(502) 행렬 위치들 [3, 2]~[3, 9]의 입력 특징 맵 값들에 W8을 곱할 수 있고, 곱셈의 결과를 누산기들의 제 2 세트(예를 들어, 도 2의 누산기 레지스터(122))로 누적할 수 있고, 그리고 누산기들의 제 2 세트는 다음 사이클 동안 SRAM 뱅크들(예를 들어, SRAM 뱅크 세트들)로 다시 쓰여질 수 있다. 몇몇 실시 예들에서, 누산기들의 제 1 세트는 다음 사이클을 시작하는 곱셈들을 누적하는 데 사용될 수 있다.
단계 532부터 단계 548까지의 결과들은 출력 특징 맵(508)의 2행(530)을 결정하기 위하여 더해질 수 있다. 2행(530)의 계산이 도 5n 내지 도 5w를 참조하여 상술되었으나, 통상의 기술자는 출력 특징 맵(508)의 나머지 행들은 실질적으로 유사한 연산들을 이용하여 입력 특징 맵(502)의 나머지 행들의 데이터에 기반하여 계산될 수 있음을 이해할 것이다. 유사하게, 입력 특징 맵(502)의 나머지 8개 열들만큼의 너비를 지니는 섹션들(예를 들어, 두 번째 8개 열들만큼의 너비를 지니는 섹션(404))에 대응하는 출력 특징 맵(508)의 부분들도, 출력 특징 맵(508)의 1행을 도 5a 내지 도 5m을 참조하여 상술한 바와 같이 계산하는 것으로 시작하고, 출력 특징 맵(508)의 나머지 행들을 도 5n 내지 도 5w를 참조하여 상술한 바와 같이 계산하여, 유사한 연산들을 이용하여 계산될 수 있다.
비록 여기에서 제 1, 제 2, 제3 등의 용어들은 다양한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들을 설명하기 위해 사용되지만, 이러한 요소들, 성분들, 영역들, 층들 그리고/또는 섹션들은 이러한 용어들로 인해 제한되지 않는 것으로 이해될 것이다. 이러한 용어들은 다른 요소, 성분, 영역, 층, 또는 섹션으로부터 하나의 요소, 구성, 영역, 층 또는 섹션을 구별하기 위해 사용된다. 따라서, 후술하는 제 1 구성 요소, 성분, 영역, 층, 또는 섹션은 본 발명의 사상 및 범위를 벗어나지 않고, 제 2 구성 요소, 성분, 영역, 층, 또는 섹션을 지칭 할 수 있다.
하나의 요소 또는 도면에서 도시된 다른 구성 요소(들) 또는 특징(들)과의 특징적인 관계를 설명하기 위한 설명을 용이하게 하기 위해 “아래의”, “아래”, “낮은”, “특정 부분 아래”, “위에”, “상부”와 같은 공간적이고 상대적인 용어들이 여기에서 사용될 수 있다. 공간적이고 상대적인 용어들은 도면에서 묘사된 방향에 더해 사용 또는 동작에서 장치의 다른 방향들을 포함하도록 의도된 것이 이해될 것이다. 예를 들면, 만약 도면의 장치가 뒤집어지면, 다른 구성 요소들 또는 특징들의 “아래” 또는 “아래의” 또는 “특정 부분 아래”로 설명된 구성요소들은 다른 구성 요소들 또는 특징들의 “위로” 맞춰지게 된다. 따라서, “아래의” 또는 “특정 부분 아래”의 예시적인 용어들은 위 또는 아래 방향 모두를 포함할 수 있다. 장치는 다르게 맞춰질 수 있으며(예를 들면, 90도 도는 다른 방향으로 회전됨) 그리고 공간적으로 상대적인 기술어들은 그에 따라 해석되어야 한다.
본 명세서에서 사용된 용어들은 단지 특정한 실시 예들을 설명하기 위한 것이고, 본 발명을 제한하려는 것으로 의도되지 않았다. 본 명세서에서 사용된 바와 같이, “대체로”, “약” 용어 그리고 이와 유사한 용어들은 근사치의 용어들로서 사용되고, 정도의 용어들로서 사용되지 않고. 본 발명의 통상의 기술자에 의해 식별되는 측정된 또는 계산된 값들의 고유한 변동을 고려하기 위한 것이다.
본 명세서에서 사용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 “하나”는 복수의 형태도 포함하는 것으로 의도된다. “포함하는”, 그리고 “포함하고 있는” 용어들이 본 명세서에서 사용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 성분들의 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 그리고/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는다. 본 명세서에서 사용된 바와 같이, “및/또는” 용어는 하나 또는 그 이상의 열거된 항목들과 연관된 임의의 그리고 모든 조합들을 포함한다. “적어도 하나”와 같은 표현들은 요소들 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다. 또한, 본 발명의 실시 예들을 기술할 때 "할 수 있다"의 사용은 "본 발명의 하나 이상의 실시 예들"을 의미한다. 또한, "예시" 용어는 예 또는 그림을 의미한다. 본 명세서에서 사용된 바와 같이, “사용”, “사용되는”, 그리고 “사용된” 용어들은 “이용”, “이용되는”, 그리고 “이용된” 용어들의 동의어로 각각 간주될 수 있다.
요소 또는 층이 다른 요소 또는 층 “에”, “에 연결된”, “에 결합된”, 또는 “에 이웃한” 것으로 언급되는 때, 그것은 다른 요소 또는 층 “에 직접적으로”, “에 직접적으로 연결된”, “에 직접적으로 결합된”, “에 바로 이웃한”일 수 있거나, 하나 또는 그 이상의 사이의 요소들 또는 층들이 존재할 수 있다. 반면, 하나의 구성 요소 또는 층이 다른 구성 요소 또는 층 “에 직접적으로”, “에 직접적으로 연결된”, “에 직접적으로 결합된”, “에 바로 이웃한”다고 언급되는 경우에는, 중간에 매개 요소 또는 층이 존재하지 않음을 나타낸다.
본 명세서에 언급된 임의의 수치 범위는, 언급된 범위 내에 포함되며 동일한 수치 정밀도를 지니는 모든 하위 범위를 포함하는 것으로 의도된다. 예를 들어, “내지 10.0”이라는 범위는 언급된 최소값 1.0 및 언급된 최대값 10.0 사이(및 포함하는), 즉, 1.0 이상의 최소값 및 10.0 이하의 최대값을 갖는, 예를 들어, 2.4 내지 7.6과 같은 범위를 포함하는 것으로 의도된다. 본 명세서에 언급된 임의의 최대 수치 제한은 그 안에 포함된 모든 더 낮은 수치 제한을 포함하는 것으로 의도되며, 본 명세서에 언급된 임의의 최소 수치 제한은 그 안에 포함된 모든 더 높은 수치 제한을 포함하는 것으로 의도된다.
몇몇 실시 예들에서, 본 명세서에 개시된 방법들 및 시스템들의 다른 실시예들의 하나 또는 그 이상의 출력들은, 하나 또는 그 이상의 출력, 또는 본 명세서에 개시된 방법들 및 시스템들의 다른 실시 예들의 하나 또는 그 이상의 출력들과 관련된 정보를 디스플레이하기 위한 디스플레이 장치에 연결되거나 또는 디스플레이 장치를 갖는 전자 장치로 전송될 수 있다.
본 명세서에서 기술된 본 발명의 실시 예에 따른 전자 또는 전기 장치들 그리고/또는 다른 임의의 관련된 장치들 또는 요소들은 임의의 적합한 하드웨어, 펌웨어(예를 들면, Application Specific Integrated Circuit; ASIC), 소프트웨어, 또는 소프트웨어, 펌웨어, 그리고 하드웨어의 조합을 이용하여 구현될 수 있다. 예를 들어, 이러한 장치들의 다양한 요소들은 하나의 집적 회로(Integrated Circuit; IC) 칩 또는 분리된 IC 칩들로 형성될 수 있다. 또한, 이러한 장치들의 다양한 요소들은 유연한 인쇄 회로 필름(Flexible Printed Circuit Film), TCP(Tape Carrier Package), 인쇄 회로 기판(Printed Circuit Board; PCB) 위에 구현되거나 하나의 기판 위에서 형성될 수 있다. 또한, 이러한 장치들의 다양한 요소들은 컴퓨터 프로그램 명령들을 실행하고 본 명세서에서 설명된 다양한 기능들을 수행하기 위한 다른 시스템 요소들과 상호 작용하는 하나 이상의 컴퓨팅 장치들에서 또는 하나 이상의 프로세서들에서 수행되는 프로세스 또는 스레드(Thread)일 수 있다. 컴퓨터 프로그램 명령들은 예를 들면 RAM(Random Access Memory)과 같은 표준 메모리 장치를 이용하는 컴퓨팅 장치에서 구현되는 메모리 내에 저장된다. 컴퓨터 프로그램 명령들은 또한 예를 들면 CD-ROM, 플래시 드라이브(Flash Drive), 또는 그와 같은 다른 일시적이지 않은 컴퓨터 읽기 가능한 미디어(Non-transitory Computer Readable Media)에 저장될 수도 있다. 또한, 본 발명의 통상의 기술자는 본 발명의 예시적인 실시 예들의 사상 및 범위를 벗어나지 않고 다양한 컴퓨팅 장치들의 기능은 단일 컴퓨팅 장치에 통합되거나 집적되고, 특정 컴퓨팅 장치의 기능이 하나 또는 그 이상의 다른 컴퓨팅 장치들에 분산될 수 있음을 인식해야 한다.
비록 내적 아키텍처 상에서 2차원 컨볼루션 레이어 맵핑을 가속화하기 위한 시스템 및 방법의 예시적인 실시 예들이 본 명세서에 구체적으로 설명되고 나타났지만, 통상의 기술자에게 많은 수정들 및 변형들이 명백할 것이다. 따라서, 본 명세서에 개시된 원리들에 따른 내적 아키텍처 상에서 2차원 컨볼루션 레이어 맵핑을 가속화하기 위한 시스템 및 방법은 본 명세서에 구체적으로 기술된 바와 다르게 실시될 수 있음이 이해될 것이다. 본 명세서에 개시된 발명은 또한 이하의 청구 범위 및 그와 균등한 범위에 의해 정의된다.

Claims (20)

  1. 컨볼루션 연산을 수행하는 방법에 있어서,
    프로세서에 의해, 상기 프로세서의 제 1 저장 장치에 x*y 차원을 갖는 컨볼루션 커널을 저장하는 단계;
    상기 프로세서에 의해, 상기 프로세서의 제 2 저장 장치에 n*m 차원을 갖는 입력 특징 맵의 제 1 부분집합의 원소 값들을 저장하는 단계;
    상기 프로세서에 의해, 상기 입력 특징 맵의 상기 제 1 부분집합의 원소 값들의 각 값과, 상기 컨볼루션 커널의 상기 x*y 원소들 중 제 1 원소 값의 제 1 동시 곱셈을 수행하는 단계;
    상기 프로세서에 의해, 상기 컨볼루션 커널의 상기 x*y 원소들 중 남은 값 각각에 대하여, 상기 입력 특징 맵 원소 값들의 대응하는 부분집합의 원소 값들과 상기 남은 값의 제 2 동시 곱셈을 수행하는 단계;
    상기 프로세서에 의해, 각 동시 곱셈에 대하여, 상기 프로세서에 연결된 누적기에 상기 각 동시 곱셈의 결과를 저장하는 단계; 및
    상기 누적기의 상기 저장된 값들을 출력 특징 맵(OFM)의 제 1 행으로서 출력하는 단계를 포함하되,
    상기 x는 상기 컨볼루션 커널의 행들의 개수이고,
    상기 y는 상기 컨볼루션 커널의 열들의 개수이고,
    상기 n은 상기 입력 특징 맵의 행들의 개수이고,
    상기 m은 상기 입력 특징 맵의 열들의 개수인 방법.
  2. 제 1 항에 있어서,
    상기 누적기의 상기 값들을 상기 OFM의 상기 제 1 행으로서 출력하는 단계는,
    상기 프로세서에 의해, 상기 누적기에 저장된 복수의 동시 곱셈들의 결과들을 더하여 상기 OFM의 상기 제 1 열을 생성하는 단계를 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 제 1 저장 장치는 상기 프로세서에 연결된 캐시 메모리를 포함하고,
    상기 제 2 저장 장치는 상기 프로세서의 곱셈-누적(MAC) 타일의 처리 요소(PE)에 위치한 복수의 레지스터들을 포함하고, 그리고
    상기 복수의 레지스터들은 9-비트 레지스터들인 방법.
  4. 제 3 항에 있어서,
    상기 프로세서에 의해, 상기 제 1 부분집합의 원소 값들을 복수의 레지스터들에서 왼쪽으로 한 레지스터 시프트하는 단계를 더 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 프로세서에 의해, 상기 컨볼루션 커널의 상기 x*y 원소들 중 상기 제 1 원소 값을 상기 제 2 저장 장치로 브로드캐스트하는 단계; 및
    상기 프로세서에 의해, 상기 컨볼루션 커널의 상기 x*y 원소들 중 제 2 원소 값을 상기 제 2 저장 장치로 브로드캐스트하는 단계를 더 포함하되,
    상기 입력 특징 맵 상기 제 1 부분집합의 원소 값들은 상기 입력 특징 맵 1행의 1열부터 p열까지의 값들을 포함하고, 그리고
    상기 입력 특징 맵 원소 값들의 제 2 부분집합은 상기 입력 특징 맵 1행의 2열부터 (p+1)열까지의 값들을 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 x*y 차원을 갖는 상기 컨볼루션 커널은 가중치 행렬이고,
    상기 가중치 행렬은 복수의 가중치 값들을 포함하고,
    상기 가중치 행렬의 상기 복수의 가중치 값들은 상기 프로세서에 연결된 캐시 메모리에 저장되고, 그리고
    상기 n*m 차원을 갖는 상기 입력 특징 맵은 복수의 활성화 값들을 포함하는 방법.
  7. 제 6 항에 있어서,
    상기 프로세서는 복수의 곱셈-누적(MAC) 타일들을 포함하고,
    각 MAC 타일은 복수의 처리 요소(PE) 행들 및 복수의 PE 열들을 포함하는 PE 어레이를 포함하고,
    상기 복수의 PE 열들의 각 PE 열은 복수의 PE들과 합산기 트리를 포함하는 방법.
  8. 제 7 항에 있어서,
    상기 각 MAC 타일은 복수의 활성화 레인들을 포함하는 캐시 메모리를 더 포함하고,
    각 활성화 레인은 상기 MAC 타일의 상기 PE 어레이의 행에 대응하는 방법.
  9. 제 7 항에 있어서,
    상기 복수의 PE들의 각 PE는, 상기 입력 특징 맵의 상기 복수의 활성화 값들을 저장하도록 구성되는 복수의 레지스터들, 상기 복수의 레지스터들에 연결되고 상기 입력 특징 맵의 활성화들과 상기 캐시 메모리의 가중치 값들을 곱하도록 구성되는 곱셈기, 및 상기 곱셈기에 연결되고 상기 곱셈기의 출력을 상기 복수의 레지스터들의 값에 더한 결과를 상기 복수의 레지스터들에 저장하도록 구성되는 PE 누적기를 포함하는 방법.
  10. 제 7 항에 있어서,
    상기 MAC 타일의 상기 PE 어레이는 8개의 PE 열들을 포함하고,
    상기 MAC 타일의 상기 8개의 PE 열들의 각 PE 열은 16개의 PE들을 포함하는 방법.
  11. 컨볼루션 연산을 수행하기 위한 시스템에 대하여,
    메모리 및 상기 메모리와 연결된 프로세서를 포함하고,
    상기 프로세서는:
    상기 프로세서의 제 1 저장 장치에 x*y 차원을 갖는 컨볼루션 커널을 저장하고;
    상기 프로세서의 제 2 저장 장치에 n*m 차원을 갖는 입력 특징 맵 원소 값들의 제 1 부분집합을 저장하고;
    상기 입력 특징 맵 상기 제 1 부분집합의 원소 값들의 각 값과, 상기 컨볼루션 커널의 상기 x*y 원소들 중 제 1 원소 값의 제 1 동시 곱셈을 수행하고;
    상기 컨볼루션 커널의 상기 x*y 원소들 중 남은 값 각각에 대하여, 상기 입력 특징 맵 원소 값들의 대응하는 부분집합의 남은 값들과 상기 남은 값의 제 2 동시 곱셈을 수행하고;
    각 동시 곱셈에 대하여, 상기 프로세서에 연결된 누적기에 상기 각 동시 곱셈의 결과를 저장하고; 그리고
    상기 누적기의 상기 저장된 값들을 출력 특징 맵(OFM)의 제 1 행으로서 출력하도록 구성되고,
    상기 x는 상기 컨볼루션 커널의 행들의 개수이고,
    상기 y는 상기 컨볼루션 커널의 열들의 개수이고,
    상기 n은 상기 입력 특징 맵의 행들의 개수이고,
    상기 m은 상기 입력 특징 맵의 열들의 개수인 시스템.
  12. 제 11 항에 있어서,
    상기 프로세서는 상기 누적기에 저장된 복수의 동시 곱셈들의 결과들을 더하여 상기 OFM의 상기 제 1 열을 생성함으로써 상기 누적기의 상기 값들을 상기 OFM의 상기 제 1 행으로서 출력하도록 더 구성되는 시스템.
  13. 제 11 항에 있어서,
    상기 제 1 저장 장치는 상기 프로세서에 연결된 캐시 메모리를 포함하고,
    상기 제 2 저장 장치는 상기 프로세서의 곱셈-누적(MAC) 타일의 처리 요소(PE)에 위치한 복수의 레지스터들을 포함하고, 그리고
    상기 복수의 레지스터들은 9-비트 레지스터들인 시스템.
  14. 제 13 항에 있어서,
    상기 프로세서는 상기 제 1 부분집합의 원소 값들을 복수의 레지스터들에서 왼쪽으로 한 레지스터 시프트하도록 더 구성되는 시스템.
  15. 제 11 항에 있어서,
    상기 프로세서는:
    상기 컨볼루션 커널의 상기 x*y 원소들 중 상기 제 1 원소 값을 상기 제 2 저장 장치로 브로드캐스트하고; 그리고
    상기 컨볼루션 커널의 상기 x*y 원소들 중 제 2 원소 값을 상기 제 2 저장 장치로 브로드캐스트하도록 더 구성되는 시스템.
  16. 제 11 항에 있어서,
    상기 x*y 차원을 갖는 상기 컨볼루션 커널은 가중치 행렬이고,
    상기 가중치 행렬은 복수의 가중치 값들을 포함하고,
    상기 가중치 행렬의 상기 복수의 가중치 값들은 상기 프로세서에 연결된 캐시 메모리에 저장되고,
    상기 n*m 차원을 갖는 상기 입력 특징 맵은 복수의 활성화 값들을 포함하고,
    상기 프로세서는 복수의 곱셈-누적(MAC) 타일들을 포함하고,
    각 MAC 타일은 복수의 처리 요소(PE) 행들 및 복수의 PE 열들을 포함하는 PE 어레이를 포함하고,
    상기 복수의 PE 열들의 각 PE 열은 복수의 PE들과 합산기 트리를 포함하는 시스템.
  17. 제 16 항에 있어서,
    상기 각 MAC 타일은 복수의 활성화 레인들을 포함하는 캐시 메모리를 더 포함하고,
    각 활성화 레인은 상기 MAC 타일의 상기 PE 어레이의 행에 대응하고,
    상기 MAC 타일의 상기 PE 어레이는 8개의 PE 열들을 포함하고,
    상기 MAC 타일의 상기 8개의 PE 열들의 각 PE 열은 16개의 PE들을 포함하는 시스템.
  18. 제 16 항에 있어서,
    상기 복수의 PE들의 각 PE는, 상기 입력 특징 맵의 상기 복수의 활성화 값들을 저장하도록 구성되는 복수의 레지스터들, 상기 복수의 레지스터들에 연결되고 상기 입력 특징 맵의 활성화들과 상기 캐시 메모리의 가중치 값들을 곱하도록 구성되는 곱셈기, 및 상기 곱셈기에 연결되고 상기 곱셈기의 출력을 상기 복수의 레지스터들의 값에 더한 결과를 상기 복수의 레지스터들에 저장하도록 구성되는 PE 누적기를 포함하는 시스템.
  19. 프로세서에 의해, 제 1 행렬의 제 1 부분집합의 원소 값들의 각 값과, 제 2 행렬의 x*y 원소들 중 제 1 원소 값의 제 1 동시 곱셈을 수행하는 단계;
    상기 프로세서에 의해, 상기 제 2 행렬의 상기 x*y 원소들 중 남은 값 각각에 대하여, 상기 제 1 행렬 원소 값들의 대응하는 부분집합의 남은 값과 제 2 동시 곱셈을 수행하는 단계;
    상기 프로세서에 의해, 각 동시 곱셈에 대하여, 상기 프로세서에 연결된 누적기에 상기 각 동시 곱셈의 결과를 저장하는 단계; 및
    상기 누적기의 상기 저장된 값들을 출력 특징 맵(OFM)의 제 1 행으로서 출력하는 단계를 포함하는 방법.
  20. 제 19 항에 있어서,
    상기 프로세서에 의해, 상기 프로세서의 제 1 저장 장치에 x*y 차원을 갖는 상기 제 2 행렬을 저장하는 단계;
    상기 프로세서에 의해, 상기 프로세서의 제 2 저장 장치에 n*m 차원을 갖는 상기 제 1 행렬의 상기 제 1 부분집합의 원소 값들을 저장하는 단계; 및
    상기 프로세서에 의해, 상기 제 2 저장 장치에 상기 제 1 행렬의 제 2 부분집합의 원소 값들을 저장하는 단계를 더 포함하되,
    상기 x는 상기 제 2 행렬의 행들의 개수이고,
    상기 y는 상기 제 2 행렬의 열들의 개수이고,
    상기 n은 상기 제 1 행렬의 행들의 개수이고,
    상기 m은 상기 제 1 행렬의 열들의 개수이고,
    상기 제 1 행렬의 상기 제 1 부분집합의 원소 값들은 상기 제 1 행렬 1행의 1열부터 p열까지의 값들을 포함하고, 그리고
    상기 제 1 행렬의 상기 제 2 부분집합의 원소 값들은 상기 제 1 행렬 1행의 2열부터 (p+1)열까지의 값들을 포함하는 방법.
KR1020200111173A 2019-12-12 2020-09-01 내적 아키텍처 상 2차원 컨볼루션 레이어 맵핑 가속화 KR20210074992A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962947423P 2019-12-12 2019-12-12
US62/947,423 2019-12-12
US16/900,819 2020-06-12
US16/900,819 US20210182025A1 (en) 2019-12-12 2020-06-12 Accelerating 2d convolutional layer mapping on a dot product architecture

Publications (1)

Publication Number Publication Date
KR20210074992A true KR20210074992A (ko) 2021-06-22

Family

ID=72422119

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200111173A KR20210074992A (ko) 2019-12-12 2020-09-01 내적 아키텍처 상 2차원 컨볼루션 레이어 맵핑 가속화

Country Status (5)

Country Link
US (1) US20210182025A1 (ko)
EP (1) EP3836028A1 (ko)
KR (1) KR20210074992A (ko)
CN (1) CN112989267A (ko)
TW (1) TWI832006B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102414583B1 (ko) 2017-03-23 2022-06-29 삼성전자주식회사 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법
US11726950B2 (en) * 2019-09-28 2023-08-15 Intel Corporation Compute near memory convolution accelerator
US11755683B2 (en) 2019-12-23 2023-09-12 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors (FAST) in machine learning
US11462003B2 (en) * 2020-03-25 2022-10-04 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors in convolutional neural networks
US11797830B2 (en) 2020-03-25 2023-10-24 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors in convolutional neural networks
US11144615B1 (en) * 2020-04-14 2021-10-12 Apple Inc. Circuit for performing pooling operation in neural processor
US20210406654A1 (en) * 2020-06-29 2021-12-30 Alibaba Group Holding Limited Artificial neural network with sparse weights
TWI798972B (zh) * 2021-12-01 2023-04-11 大陸商星宸科技股份有限公司 智慧處理器裝置與降低記憶體頻寬的方法
US20230244448A1 (en) * 2022-02-01 2023-08-03 Microsoft Technology Licensing, Llc Multiply-accumulator array circuit with activation cache

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5285403A (en) * 1989-12-29 1994-02-08 U.S. Philips Corporation Arithmetic processing module to be associated with a microprocessor central processing unit
US9805303B2 (en) * 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
KR20180073118A (ko) * 2016-12-22 2018-07-02 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
CN106844294B (zh) * 2016-12-29 2019-05-03 华为机器有限公司 卷积运算芯片和通信设备
US11803377B2 (en) * 2017-09-08 2023-10-31 Oracle International Corporation Efficient direct convolution using SIMD instructions
KR102452953B1 (ko) * 2017-10-30 2022-10-11 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
KR20190051697A (ko) * 2017-11-07 2019-05-15 삼성전자주식회사 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
EP3769266A4 (en) * 2018-05-08 2021-12-15 Tartan Ai Ltd. PROCESSING ELEMENT FOR NEURAL NETWORK
CN108615036B (zh) * 2018-05-09 2021-10-01 中国科学技术大学 一种基于卷积注意力网络的自然场景文本识别方法
US20200210517A1 (en) * 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
CN110110707A (zh) * 2019-05-24 2019-08-09 苏州闪驰数控系统集成有限公司 人工智能cnn、lstm神经网络动态识别系统
US20210011732A1 (en) * 2019-07-09 2021-01-14 MemryX Inc. Matrix Data Reuse Techniques in Processing Systems

Also Published As

Publication number Publication date
EP3836028A1 (en) 2021-06-16
US20210182025A1 (en) 2021-06-17
TW202123093A (zh) 2021-06-16
TWI832006B (zh) 2024-02-11
CN112989267A (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
KR20210074992A (ko) 내적 아키텍처 상 2차원 컨볼루션 레이어 맵핑 가속화
US11734006B2 (en) Deep vision processor
US11775313B2 (en) Hardware accelerator for convolutional neural networks and method of operation thereof
US10394929B2 (en) Adaptive execution engine for convolution computing systems
US11204976B2 (en) Expanded kernel generation
JP7394104B2 (ja) ハードウェアにおけるカーネルストライドの実行
CN109992743B (zh) 矩阵乘法器
CN107862650B (zh) 加速计算二维图像cnn卷积的方法
CN105892989B (zh) 一种神经网络加速器及其运算方法
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
CN116541647A (zh) 运算加速器、处理方法及相关设备
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
Liu et al. Towards an efficient accelerator for DNN-based remote sensing image segmentation on FPGAs
US11164032B2 (en) Method of performing data processing operation
Liu et al. WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs
CN110716751B (zh) 高并行度计算平台、系统及计算实现方法
CN116090518A (zh) 基于脉动运算阵列的特征图处理方法、装置以及存储介质
CN117063182A (zh) 一种数据处理方法和装置
CN110765413A (zh) 矩阵求和结构及神经网络计算平台
CN111178505B (zh) 卷积神经网络的加速方法和计算机可读存储介质
WO2023114417A2 (en) One-dimensional computational unit for an integrated circuit

Legal Events

Date Code Title Description
A201 Request for examination