KR20220071723A - 딥러닝 연산 수행 방법 및 장치 - Google Patents

딥러닝 연산 수행 방법 및 장치 Download PDF

Info

Publication number
KR20220071723A
KR20220071723A KR1020200159177A KR20200159177A KR20220071723A KR 20220071723 A KR20220071723 A KR 20220071723A KR 1020200159177 A KR1020200159177 A KR 1020200159177A KR 20200159177 A KR20200159177 A KR 20200159177A KR 20220071723 A KR20220071723 A KR 20220071723A
Authority
KR
South Korea
Prior art keywords
input
deep learning
multiplexer
adder
data
Prior art date
Application number
KR1020200159177A
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 삼성전자주식회사
Priority to KR1020200159177A priority Critical patent/KR20220071723A/ko
Priority to US17/356,771 priority patent/US20220164164A1/en
Publication of KR20220071723A publication Critical patent/KR20220071723A/ko

Links

Images

Classifications

    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • 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
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)

Abstract

딥러닝 연산 수행 방법 및 장치가 개시된다. 일 실시예에 따른 딥러닝 연산 수행 장치는 복수의 가산기 트리들이 행과 열 방향으로 연결된 시스톨릭 가산기 트리 및 복수의 가산기 트리들 중 적어도 하나의 가산기 트리의 입력 레지스터와 연결되고, 복수의 연산 모드에 대응하여 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서를 포함한다.

Description

딥러닝 연산 수행 방법 및 장치{METHOD AND APPARATUS FOR PERFORMING DEEP LEARNING OPERATIONS}
아래 실시예들은 딥러닝 연산 수행 방법 및 장치에 관한 것이다.
현재 임베디드 NPU(Neural Processing Unit)에서 저전력 구동을 위해 가산기 트리(Adder Tree) 구조가 많이 사용되고 있다.
가산기 트리 구조는 시스톨릭 어레이(Systolic array) 대비 약 1/2의 전력을 소모하면서 동일한 성능(performance)을 달성할 수 있지만, 뎁스와이즈 컨볼루션(depthwise convolution)과 같은 연산에서는 MAC(multiplier accumulator) 유닛의 이용 효율이 떨어져서 처리 속도의 급격한 하락을 피할 수 없는 단점이 있다.
다만, MAC의 이용 효율만을 고려한 아키텍처의 경우 엘리먼트와이즈 합/곱(elementwise add/multiplication) 연산을 지원하지 않아서 뎁스와이즈 연산을 제외하고는 상대적으로 큰 영역에 대한 전력 소모가 발생하기 때문에, 전력 소모를 줄이면서 엘리먼트와이즈 합/곱을 수행하는 연산 장치가 요구된다.
일 실시예에 따른 딥러닝 연산 수행 장치는 복수의 가산기 트리(adder tree)들이 행과 열 방향으로 연결된 시스톨릭 가산기 트리(systolic adder tree); 및 상기 복수의 가산기 트리들 중 적어도 하나의 가산기 트리의 입력 레지스터와 연결되고, 복수의 연산 모드에 대응하여 상기 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서를 포함한다.
상기 입력 멀티플렉서는 상기 가산기 트리의 입력 레지스터의 토글(toggle) 여부를 결정하는 제1 멀티플렉서를 포함할 수 있다.
상기 입력 멀티플렉서는 상기 가산기 트리의 곱셈기(multiplier)의 입력을 결정하는 제2 멀티플렉서를 포함할 수 있다.
상기 복수의 연산 모드는 토글 모드, 가변 파이프라인(pipeline) 모드 및 데이터 피딩(data feeding) 모드 중 적어도 하나를 포함할 수 있다.
상기 제1 멀티플렉서는 가변 파이프라인 모드에 응답하여, 상기 가산기 트리의 입력 레지스터를 토글하지 않을 수 있다.
상기 제1 멀티플렉서는 토글 모드에 응답하여, 윗 행 가산기 트리의 입력 레지스터에 저장된 데이터를 상기 가산기 트리의 입력 레지스터로 전달할 수 있다.
상기 제1 멀티플렉서는 데이터 피딩 모드에 응답하여, 새로운 데이터를 상기 가산기 트리의 입력 레지스터로 전달할 수 있다.
상기 제2 멀티플렉서는 가변 파이프라인 모드에 응답하여, 윗 행 가산기 트리의 입력 레지스터에 저장된 데이터를 상기 가산기 트리의 곱셈기의 입력으로 결정할 수 있다.
상기 제2 멀티플렉서는 토글 모드에 응답하여, 상기 가산기 트리의 입력 레지스터에 저장된 데이터를 상기 가산기 트리의 곱셈기의 입력으로 결정할 수 있다.
상기 제2 멀티플렉서는 데이터 피딩 모드에 응답하여, 상기 가산기 트리의 입력 레지스터에 저장된 데이터를 상기 가산기 트리의 곱셈기의 입력으로 결정할 수 있다.
일 실시예에 따른 딥러닝 연산 수행 장치는 상기 딥러닝 연산 수행 장치의 동작 주파수 및 동작 전압 중 적어도 하나에 기초하여, 상기 입력 멀티플렉서의 연산 모드를 결정하는 제어회로를 더 포함할 수 있다.
상기 제어회로는 상기 가산기 트리의 입력 레지스터의 1 클럭 사이클(clock cycle)에 이동할 수 있는 열 방향 데이터 이동 경로 및 상기 데이터 이동 경로에 대응하는 상기 멀티플렉서의 연산 모드를 결정할 수 있다.
일 실시예에 따른 딥러닝 연산 수행 장치는 같은 행에 포함된 복수의 가산기 트리들의 출력 데이터 합을 저장하는 출력 레지스터; 및 상기 출력 레지스터에 저장된 데이터를 다른 행으로 전달할지 여부를 결정하는 출력 멀티플렉서를 더 포함할 수 있다.
일 실시예에 따른 딥러닝 연산 수행 장치는 수의 서브 가산기 트리들 각각의 출력 데이터 합을 저장하는 서브 출력 레지스터; 및 기 서브 출력 레지스터에 저장된 데이터를 비선형 함수(non-linear function)에 통과시키는 비선형 함수 모듈을 더 포함할 수 있다.
일 실시예에 따른 딥러닝 연산 수행 방법은 연산 모드 및 입력 데이터를 수신하는 단계; 상기 연산 모드에 대응하여 시스톨릭 가산기 트리에 포함된 복수의 가산기 트리들의 동작을 제어하는 단계; 및 상기 연산 모드에 대응하여, 상기 복수의 가산기 트리들 중 적어도 하나의 가산기 트리의 입력 레지스터와 연결되고, 상기 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서의 동작을 제어하는 단계를 포함한다.
상기 입력 멀티플렉서는 제1 멀티플렉서 및 제2 멀티플렉서 중 적어도 하나를 포함하고, 상기 입력 멀티플렉서의 동작을 제어하는 단계는 상기 연산 모드에 대응하여, 상기 가산기 트리의 입력 레지스터의 토글 여부를 결정하는 제1 멀티플렉서의 동작을 제어하는 단계; 및 상기 연산 모드에 대응하여, 상기 가산기 트리의 곱셈기의 입력을 결정하는 제2 멀티플렉서의 동작을 제어하는 단계를 포함할 수 있다.
상기 입력 멀티플렉서의 동작을 제어하는 단계는 딥러닝 연산 수행 장치의 동작 주파수 및 동작 전압 중 적어도 하나에 기초하여, 상기 입력 멀티플렉서의 연산 모드를 결정하는 단계를 포함할 수 있다.
일 실시예에 따른 딥러닝 연산 수행 방법은 같은 행에 포함된 복수의 가산기 트리들의 출력 데이터 합을 저장하는 출력 레지스터의 동작을 제어하는 단계; 및 상기 출력 레지스터에 저장된 데이터를 다른 행으로 전달할지 여부를 결정하는 출력 멀티플렉서의 동작을 제어하는 단계를 더 포함할 수 있다.
일 실시예에 따른 딥러닝 연산 수행 방법은 복수의 서브 가산기 트리들 각각의 출력 데이터 합을 저장하는 서브 출력 레지스터의 동작을 제어하는 단계; 및 상기 서브 출력 레지스터에 저장된 데이터를 비선형 함수에 통과시키는 비선형 함수 모듈의 동작을 제어하는 단계를 더 포함할 수 있다.
도 1a는 인공 신경망(Artificial Neural Network) 모델을 설명하기 위한 도면이고, 도 1b는 가산기 트리(adder tree) 구조를 이용한 딥 러닝 연산 방법을 설명하기 위한 도면이며, 도 1c는 복수의 MAC 유닛들을 포함하는 SIMD 구조를 이용한 딥 러닝 연산 방법을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 딥 러닝 연산 수행 장치의 회로도의 일 예를 도시한 도면이다.
도 3은 일 실시예에 따른 딥 러닝 연산 수행 장치의 회로도의 다른 예를 도시한 도면이다.
도 4는 일 실시예에 따른 복수의 연산 모드에 따른 딥러닝 연산 수행 장치의 구체적인 동작 방법을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 입력 데이터를 배치하는 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 MAC 어레이를 합성하는 방법을 설명하기 위한 도면이다,
도 7은 일 실시예에 따른 딥러닝 연산 장치에서 비선형 함수 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 한 행의 출력 데이터를 다른 행으로 전달하여 출력 데이터를 합하는 방법을 설명하기 위한 도면이다.
도 9는 딥러닝 연산 수행 장치의 하드웨어 구현의 예를 나타낸다.
도 10은 일 실시예에 따른 딥러닝 연산 수행 방법을 설명하기 위한 순서도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1a는 인공 신경망(Artificial Neural Network) 모델을 설명하기 위한 도면이고, 도 1b는 가산기 트리(adder tree) 구조를 이용한 딥 러닝 연산 방법을 설명하기 위한 도면이며, 도 1c는 복수의 MAC 유닛들을 포함하는 SIMD 구조를 이용한 딥 러닝 연산 방법을 설명하기 위한 도면이다.
딥 러닝(Deep Learning) 기법을 포함하는 인공지능(AI) 알고리즘은 인공 신경망(Artificial Neural Network)에 입력 데이터를 입력시키고, 컨볼루션 등의 연산을 통해 출력 데이터를 학습하고, 학습된 인공 신경망을 이용하여 특징을 추출할 수 있다. 인공 신경망은 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(Computational Architecture)를 의미할 수 있다. 인공 신경망 내에서, 뇌의 뉴런들에 해당되는 노드들은 서로 연결되어 있고, 입력 데이터를 처리하기 위하여 집합적으로 동작한다. 다양한 종류의 인공 신경망들을 예로 들면, 컨볼루션 뉴럴 네트워크(CNN; Convolutional Neural Network), 회귀 뉴럴 네트워크(RNN; Recurrent Neural Network), 딥 빌리프 네트워크(DBN; Deep Belief Network), 제한된 볼츠만 기계(Restricted Boltzman Machine, RBM) 방식 등이 있고, 이에 제한되지 않는다. 피드-포워드(feed-forward) 인공 신경망에서, 인공 신경망의 뉴런들은 다른 뉴런들과의 연결들(links)을 갖는다. 이와 같은 연결들은 인공 신경망을 통해, 한방향으로, 예를 들어 순방향(forward direction)으로 확장될 수 있다.
여러 종류의 인공 신경망들 중에서, 컨볼루션 신경망은 입력 데이터로부터 특징들(features)을 추출하기 위해 이용될 수 있다. 일 예로, 컨볼루션 신경망은 입력 영상으로부터 테두리, 선 색 등과 같은 시각적 특징들을 추출할 수 있다. 컨볼루션 신경망은 복수의 레이어를 포함할 수 있으며, 각각의 레이어는 입력 데이터를 수신하고 처리하여 해당 레이어에서 출력되는 데이터를 생성할 수 있다. 레이어에서 출력되는 데이터는, 컨볼루션 신경망에 입력된 이미지 또는 입력된 특징맵(Feature Map)을 필터(filter)의 웨이트(weight) 값과 컨볼루션 연산하여 생성한 특징맵 일 수 있다. 컨볼루션 신경망의 초기 레이어들은 입력으로부터 에지들 또는 그레디언트들과 같은 단순한 특징들을 추출하고, 컨볼루션 신경망의 후속 레이어들은 이미지 내의 눈, 코 등과 같은 점진적으로 더 복잡한 특징들을 추출할 수 있다.
도 1a의 도면(110)을 참조하면, 일 실시예에 따른 컨볼루션 연산은 (8, 8) 크기를 갖고 3개의 입력 채널로 구성된 입력 특징맵(111)과 (3, 3) 크기를 갖고 3개의 채널로 구성된 필터(113)와의 곱셈 및 덧셈 연산을 하여 (6, 6) 크기를 갖고 1개의 채널로 구성된 출력 특징맵(115)을 생성하는 과정을 포함할 수 있다. 실시예에서, 데이터의 크기는 (폭, 높이) 및 채널의 수로 정의될 수 있다,
도면(120)을 참조하면, 뎁스와이즈(depthwise) 컨볼루션 연산은 동일 채널 내에서만 컨볼루션 연산을 수행하며, 이를 통해 각 채널의 공간적 특징(spatial feature)을 추출할 수 있다. 뎁스와이즈 컨볼루션 연산은 (8, 8) 크기를 갖고 3개의 입력 채널로 구성된 입력 특징맵(111)과 (3, 3) 크기를 갖는 3개의 필터(124, 125, 126)를 각 입력 채널 별로 컨볼루션 연산을 수행하여, 각 입력 채널에 대응하는 출력 특징맵(127, 128, 129)을 포함하는 (6, 6) 크기를 갖고 3개의 출력 채널로 구성된 출력 특징맵(130)을 생성하는 과정을 포함할 수 있다. 예를 들어, 제1 입력 채널의 입력 특징맵(121)과 제1 필터(124)와의 곱셈 및 덧셈 연산을 하여 1 출력 채널의 출력 특징맵(127)이 생성되고, 마찬가지로 제2 입력 채널의 입력 특징맵(122) 및 제 3 입력 채널의 입력 특징맵(123)과 각각 제2 필터(125) 및 제3 필터(126) 과의 곱셈 및 덧셈 연산을 하여 대응하는 출력 채널의 출력 특징맵(128, 129)이 생성될 수 있다.
도 1b를 참조하면, 딥 러닝 연산 수행 장치는 컨볼루션 연산 수행에 있어서, 저전력 구동을 위하여 가산기 트리(adder tree) 구조를 사용할 수 있다. 가산기 트리 구조는 두 데이터의 곱을 계산하는 복수의 곱셈기, 인접한 두 곱셈기의 출력의 합 또는 인접한 두 가산기의 합을 계산하는 가산기 및 최종 출력 데이터를 누적 합산하는 하나의 누산기(accumulator)를 포함할 수 있다. 가산기 트리 구조는 적은 수의 누산기(예를 들어, 하나의 누산기)만을 사용하기 때문에, 저전력으로 컨볼루션 연산을 수행할 수 있다.
예를 들어, 가산기 트리 구조는 (5, 5) 크기를 갖고 4개의 입력 채널로 구성된 입력 특징맵(140)에서, 제1 입력 채널의 입력 특징맵(141)의 9개 데이터(0, 1, 2, 5, 6, 7, 10, 11, 12)와 (3, 3) 크기를 갖는 4개의 필터들(150)에서, 제1 필터(151)의 웨이트 값(weight)(0 내지 8) 사이의 컨볼루션 연산을 수행할 수 있다. 가산기 트리 구조의 곱셈기는 제1 입력 채널의 입력 특징맵(141)의 각 데이터와 제1 필터(151)의 각 웨이트 값의 곱을 계산하고, 트리 구조의 가산기는 곱셈기의 출력 값들, 즉 0*0, 1*1, 2*2, 5*3, 6*4, 7*5, 10*6, 11*7, 12*8을 누적하여 합산할 수 있다.
일반적인 컨볼루션 연산은 각 입력 채널의 입력 특징맵들의 출력 값을 누적하여 합산하여 계산하기 때문에, 입력 특징맵(141)과 필터(151)의 컨볼루션 연산에 사용되지 않는 곱셈기들(160)을 이용하여 다른 입력 채널의 입력 특징맵에 대한 컨볼루션 연산을 수행할 수 있다. 그러나, 뎁스와이즈 컨볼루션 연산은 각 입력 채널의 입력 특징맵 별로 컨볼루션 연산을 수행하기 때문에, 가산기 트리 구조를 이용하여 뎁스와이즈 컨볼루션 연산을 수행하는 경우 곱셈기들(160)은 사용되지 않게 되어 자원 이용 효율(resource utilization)이 낮아질 수 있다.
또한, 가산기 트리 구조를 이용한 컨볼루션 연산은 긴 데이터 경로(data path)로 인하여 딥 러닝 연산 수행 장치가 낮은 클럭 주파수(clock frequency)에서 동작할 수 있다. 따라서, 가산기 트리 구조는 일반적인 컨볼루션 연산 수행에는 적합하나 뎁스와이즈 컨볼루션 연산과 같이 데이터의 병렬 처리 연산에는 적합하지 않을 수 있다. 나아가, 가산기 트리 구조를 이용하여 7x1, 1x7, 3x1, 1x3 등 비대칭 필터를 이용한 비대칭 컨볼루션 연산을 수행하는 경우에도 자원 이용 효율이 낮아질 수 있다.
도 1c를 참조하면, 딥 러닝 연산 수행 장치는 복수의 MAC 유닛들을 포함하는 SIMD(Single Instruction Multiple Data) 구조를 이용하여 뎁스와이즈 컨볼루션 연산을 수행할 수 있다.
SIMD 구조는 동일한 동작을 하는 복수의 프로세싱 엘리먼트(PE; Processing Element)들(191, 192, 193, 194)로 이루어져 있으며, 각 프로세싱 엘리먼트에 입력 데이터를 입력함으로써 동시에 많은 연산을 할 수 있다. SIMD 구조의 각 프로세싱 엘리먼트는 ACC = ACC + (A x B) 연산을 수행하는 MAC(multiplier accumulator) 유닛으로 구성될 수 있다.
SIMD 구조에서 MAC 유닛마다 누산기가 있기 때문에, 각 채널 별로 컨볼루션 연산을 수행하는 뎁스와이즈 컨볼루션 연산 수행에 적합할 수 있다. 예를 들어, SIMD 구조의 프로세싱 엘리먼트들(191, 192, 193, 194) 각각은 (5, 5) 크기를 갖고 4개의 입력 채널로 구성된 입력 특징맵들(171, 172, 173, 174)과 (3, 3) 크기를 갖는 필터들(181, 182, 183, 184) 사이의 뎁스와이즈 컨볼루션 연산을 수행할 수 있다. 구체적으로 프로세싱 엘리먼트(191)는 입력 특징맵(171)과 필터(181) 사이의 컨볼루션 연산을, 프로세싱 엘리먼트(192)는 입력 특징맵(172)과 필터(182) 사이의 컨볼루션 연산을, 프로세싱 엘리먼트(193)는 입력 특징맵(173)과 필터(183) 사이의 컨볼루션 연산을, 프로세싱 엘리먼트(194)는 입력 특징맵(174)과 필터(184) 사이의 컨볼루션 연산을 수행할 수 있다. 또한, SIMD 구조는 연산의 데이터 경로가 짧기 때문에 높은 클럭 주파수에서 동작할 수 있다
그러나, SIMD 구조는 모든 MAC 유닛에서 누산기를 필요로 하기 때문에 전력 소모가 많을 수 있다. 예를 들어, 가산기 트리 구조를 이용하여 일반적인 컨볼루션 연산을 수행하는 경우에는 하나의 누산기만 있으면 충분하지만, SIMD 구조를 이용하여 일반적인 컨볼루션 연산을 수행하는 경우에는 모든 누산기가 동작하게 되어 전력 효율이 떨어질 수 있다. 따라서, SIMD 구조는 뎁스와이즈 컨볼루션 연산과 같이 데이터의 병렬 처리 연산에는 적합하나 일반적인 컨볼루션 연산 수행에는 적합하지 않을 수 있다.
전술한 바와 같이, 가산기 트리 구조는 일반적인 컨볼루션 연산 수행에는 적합하나 비대칭 필터를 이용한 비대칭 컨볼루션 연산 및 뎁스와이즈 컨볼루션 연산과 같은 데이터의 병렬 처리 연산에는 적합하지 않을 수 있고, 반대로 SIMD 구조는 뎁스와이즈 컨볼루션 연산과 같이 데이터의 병렬 처리 연산에는 적합하나 일반적인 컨볼루션 연산 수행에는 적합하지 않을 수 있다.
아래에서 상세히 설명하겠지만, 일 실시예에 따른 딥 러닝 연산 수행 장치는 가산기 트리 구조와 마찬가지로 모든 어레이마다 누산기를 포함하지 않음으로써 SIMD 구조보다 크기(area)를 작게 만들 수 있고 전력 효율이 좋을 수 있고, 가산기 트리 구조와 달리 입력 데이터가 열 방향으로 전달되어 공유될 수 있으므로 가산기 트리 구조보다 메모리 읽기/쓰기 전력을 절감할 수 있다.
도 2는 일 실시예에 따른 딥 러닝 연산 수행 장치의 회로도의 일 예를 도시한 도면이다.
도 2를 참조하면, 일 실시예에 따른 딥러닝 연산 수행 장치는 복수의 가산기 트리(adder tree)들이 행과 열 방향으로 연결된 시스톨릭 가산기 트리(systolic adder tree)를 포함할 수 있다. 예를 들어, 도 2의 시스톨릭 가산기 트리는 2개의 행(row)으로 구성되고, 각 행에는 8개의 입력 레지스터 쌍이 배치되어 있고, 각각의 입력 레지스터 쌍에는 웨이트(weight) 및 액티베이션(activation)이 입력될 수 있다.
또한, 딥러닝 연산 수행 장치는 복수의 가산기 트리들 중 적어도 하나의 가산기 트리의 입력 레지스터와 연결되고, 복수의 연산 모드에 대응하여 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서를 포함할 수 있다. 예를 들어, 도 2의 딥러닝 연산 수행 장치는 8개의 입력 레지스터 쌍(예를 들어, (211, 212) 또는 (221, 222)) 중 어느 하나의 입력 레지스터(예를 들어, 웨이트가 저장되는 입력 레지스터(212 또는 222))와 연결되고, 복수의 연산 모드에 대응하여 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서(213 또는 223)를 포함할 수 있다.
딥러닝 연산 수행 장치는 입력 멀티플렉서를 통해 윗 행 가산기 트리의 입력 레지스터에 저장된 데이터를 아래 행 가산기 트리의 입력 레지스터로 전달할 수 있다.
예를 들어, 제어신호 ‘0’이 입력되는 경우 아래 행 가산기 트리의 입력 멀티플렉서(223)는 윗 행 가산기 트리의 입력 레지스터(212)에 저장된 데이터를 데이터 경로(230)를 통해 아래 행 입력 레지스터(222)로 전달할 수 있다. 반면에, 제어신호 '1'이 입력되는 경우 아래 행 가산기 트리의 입력 멀티플렉서(223)는 윗 행 가산기 트리의 입력 레지스터(212)에 저장된 데이터가 아닌 새로운 웨이트 데이터를 수신할 수 있다.
딥러닝 연산 수행 장치는 각각의 입력 레지스터 쌍마다 다른 액티베이션 및 웨이트를 입력할 수 있어서 가산기 트리 모드에 비해 자원 이용 효율이 높을 수 있다. 그러나, 도 2의 딥러닝 연산 수행 장치는 바로 윗 행의 데이터만을 전달받을 수 있다는 한계가 있다.
도 3은 일 실시예에 따른 딥 러닝 연산 수행 장치의 회로도의 다른 예를 도시한 도면이다.
도 3을 참조하면, 다른 실시예에 따른 딥러닝 연산 수행 장치는 복수의 가산기 트리들이 행과 열 방향으로 연결된 시스톨릭 가산기 트리를 포함할 수 있다. 예를 들어, 도 3의 시스톨릭 가산기 트리는 4개의 행으로 구성되고, 각 행에는 8개의 입력 레지스터 쌍이 배치되어 있고, 각각의 입력 레지스터 쌍에는 웨이트 및 액티베이션이 입력될 수 있다.
또한, 딥러닝 연산 수행 장치는 복수의 가산기 트리들 중 적어도 하나의 가산기 트리의 입력 레지스터와 연결되고, 복수의 연산 모드에 대응하여 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서를 포함할 수 있다. 예를 들어, 도 3의 딥러닝 연산 수행 장치는 8개의 입력 레지스터 쌍(예를 들어, (311, 312) 또는 (321, 322)) 중 어느 하나의 입력 레지스터(예를 들어, 웨이트가 저장되는 입력 레지스터(312 또는 322))와 연결되고, 복수의 연산 모드에 대응하여 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서(313, 314 또는 323, 324)를 포함할 수 있다.
보다 구체적으로, 딥러닝 연산 수행 장치는 가산기 트리의 입력 레지스터의 토글 여부를 결정하는 제1 멀티플렉서 및 가산기 트리의 곱셈기(multiplier)의 입력을 결정하는 제2 멀티플렉서를 포함할 수 있다. 예를 들어, 딥러닝 연산 수행 장치는 가산기 트리의 입력 레지스터(312, 322)의 토글 여부를 결정하는 제1 멀티플렉서(313, 323) 및 가산기 트리의 곱셈기(315, 325)의 입력을 결정하는 제2 멀티플렉서(314, 324)를 포함할 수 있다.
딥 러닝 연산 수행 장치는 복수의 연산 모드 중 어느 하나를 선택할 수 있도록 구현될 수 있으며, 연산 모드는 토글(toggle) 모드, 가변 파이프라인(pipeline) 모드 및/또는 데이터 피딩(data feeding) 모드를 포함할 수 있다. 예를 들어, 딥 러닝 연산 수행 장치는 제어신호 ‘0’이 입력되는 경우는 가변 파이프라인 모드로, 제어신호 ‘1’이 입력되는 경우는 데이터 피딩 모드로, 제어신호 ‘2’가 입력되는 경우는 토글 모드 로 동작할 수 있다.
제1 멀티플렉서(323)는 가변 파이프라인 모드(예를 들어, 제어신호 '0'이 입력되는 경우)에 응답하여, 가산기 트리의 입력 레지스터(322)를 토글하지 않을 수 있다. 제1 멀티플렉서(323)는 토글 모드(예를 들어, 제어신호 '2'가 입력되는 경우)에 응답하여, 윗 행 가산기 트리의 입력 레지스터(312)에 저장된 데이터를 가산기 트리의 입력 레지스터(322)로 전달할 수 있다. 제1 멀티플렉서(323)는 데이터 피딩 모드(예를 들어, 제어신호 '3'가 입력되는 경우)에 응답하여, 새로운 데이터를 가산기 트리의 입력 레지스터(322)로 전달할 수 있다.
제2 멀티플렉서(324)는 가변 파이프라인 모드(예를 들어, 제어신호 '0'이 입력되는 경우)에 응답하여, 윗 행 가산기 트리의 입력 레지스터(312)에 저장된 데이터를 가산기 트리의 곱셈기(325)의 입력으로 결정할 수 있다. 제2 멀티플렉서(324)는 토글 모드(예를 들어, 제어신호 '2'가 입력되는 경우)에 응답하여, 가산기 트리의 입력 레지스터(322)에 저장된 데이터를 가산기 트리의 곱셈기(325)의 입력으로 결정할 수 있다. 제2 멀티플렉서(324)는 데이터 피딩 모드(예를 들어, 제어신호 '3'가 입력되는 경우)에 응답하여, 토글 모드와 마찬가지로 가산기 트리의 입력 레지스터(322)에 저장된 데이터를 가산기 트리의 곱셈기(325)의 입력으로 결정할 수 있다.
가변 파이프라인 모드로 동작하는 딥 러닝 연산 수행 장치는 입력 레지스터를 토글하지 않는 대신에, 입력 멀티플렉서를 이용하여 곱셈기에 데이터를 전달할 수 있다. 이를 통해, 딥러닝 연산 수행 장치는 바로 윗 행의 데이터 뿐만 아니라, 가산기 트리의 입력 레지스터의 클럭 피리어드(clock period)가 허용하는 최대한 멀리 있는 행의 데이터도 전달받을 수 있다.
멀티플렉서의 경우, 레지스터에 비해 전력 소모가 훨씬 적기 때문에(예를 들어, 8bit 플립플롭(flip-flop)이 8bit 멀티플렉서에 비해 7배 많은 전력을 소모할 수 있다), 도 3의 딥 러닝 연산 수행 장치는 도 2의 딥러닝 연산 수행 장치에 비해 전력 효율이 좋을 수 있다. 아래에서, 도 4를 참조하여 토글 모드, 가변 파이프라인 모드 및/또는 데이터 피딩 모드에 따른 딥러닝 연산 수행 장치의 구체적인 동작 방법을 설명한다.
도 4는 일 실시예에 따른 복수의 연산 모드에 따른 딥러닝 연산 수행 장치의 구체적인 동작 방법을 설명하기 위한 도면이다.
도 4를 참조하면, 일 실시예에 따른 딥러닝 연산 수행 장치(400)는 4개의 행에 배치된 MAC 어레이(401, 402, 403, 404) 형태로 표현될 수 있다. MAC 어레이(401, 402, 403, 404) 각각은 도 3의 딥러닝 연산 수행 장치의 각 행에 대응될 수 있다.
딥 러닝 연산 수행 장치(400)는 입력 멀티플렉서를 이용하여 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 제어할 수 있다. 예를 들어, 멀티플렉서는 복수의 가산기 트리들 각각에 배치될 수도 있고, 일부의 가산기 트리에만 배치될 수도 있다. 멀티플렉서가 일부의 가산기 트리에만 배치되는 경우, 특정 멀티플렉서는 복수의 가산기 트리들을 함께 제어할 수도 있다.
딥 러닝 연산 수행 장치(410)는 MAC 어레이(412, 413, 414)가 모두 토글 모드(예를 들어, 제어신호 '2'가 입력되는 경우)로 동작하는 예를 보여준다. MAC 어레이(412, 413, 414)는 모두 토글 모드로 동작하기 때문에, MAC 어레이(411)의 입력 레지스터에 저장된 데이터는 1 클럭 사이클(clock cycle)이 지나면 MAC 어레이(412)로 전달되고, 다시 1 클럭 사이클이 지나면 MAC 어레이(413)로 전달되고, 다시1 클럭 사이클이 지나면 MAC 어레이(413)로 전달될 수 있다. 딥 러닝 연산 수행 장치(410)는 높은 동작 주파수를 요구하는 어플리케이션에서 사용될 수 있지만, 모든 입력 레지스터가 토글되기 때문에 전력 소모가 클 수 있다.
딥 러닝 연산 수행 장치(420)는 MAC 어레이(422) 및 MAC 어레이(423)는 가변 파이프라인 모드(예를 들어, 제어신호 '0'이 입력되는 경우)로 동작하고, MAC 어레이(424)는 토글 모드(예를 들어, 제어신호 '2'이 입력되는 경우)로 동작하는 예를 보여준다. MAC 어레이(422, 423)는 가변 파이프라인 모드로 동작하기 때문에, MAC 어레이(421)의 입력 레지스터에 저장된 데이터가 0클럭 사이클만에 MAC 어레이(422) 및 MAC 어레이(423)으로 전달될 수 있다. 또한, MAC 어레이(424)는 토글 모드로 동작하기 때문에 MAC 어레이(421)의 입력 레지스터에 저장된 데이터가 1 클럭 사이클이 지나면 MAC 어레이(424)로 전달될 수 있다. 결과적으로, MAC 어레이(422) 및 MAC 어레이(423)의 입력 레지스터가 모두 토글하지 않기 때문에, 전력 소모가 줄어들 수 있다.
딥 러닝 연산 수행 장치(430)는 MAC 어레이(432) 및 MAC 어레이(434)는 가변 파이프라인 모드(예를 들어, 제어신호 '0'이 입력되는 경우)로 동작하고, MAC 어레이(433)는 데이터 피딩 모드(예를 들어, 제어신호 '1'이 입력되는 경우)로 동작하는 예를 보여준다. MAC 어레이(432)는 가변 파이프라인 모드로 동작하기 때문에, MAC 어레이(431)의 입력 레지스터에 저장된 데이터가 0클럭 사이클만에 MAC 어레이(432)로 전달될 수 있다. 또한, MAC 어레이(433)는 데이터 피딩 모드로 동작하기 때문에 MAC 어레이(431)의 입력 레지스터에 저장된 데이터와 상이한 새로운 데이터가 MAC 어레이(433)로 전달될 수 있다. 이후에, MAC 어레이(434)는 가변 파이프라인 모드로 동작하기 때문에, MAC 어레이(433)의 입력 레지스터에 저장된 데이터가 0클럭 사이클만에 MAC 어레이(434)로 전달될 수 있다.
딥 러닝 연산 수행 장치(400)는 연산 모드 및 MAC 어레이에 인가되는 전압을 조절하면 전체적인 소비 전력을 효과적으로 줄일 수 있다.
도 5는 일 실시예에 따른 입력 데이터를 배치하는 방법을 설명하기 위한 도면이다.
도 5를 참조하면, 일 실시예에 따른 뎁스와이즈 컨볼루션 연산에서, 메모리의 읽기 전력을 줄이기 위해 필터 데이터(예를 들어, 웨이트)를 도면(510 내지 560)과 같이 배치할 수 있다.
필터 크기가 MAC 어레이의 가로 길이보다 작은 경우에는, 뎁스와이즈 컨볼루션 연산의 경우 필터가 각 채널마다 하나씩 있기 때문에 하나의 액티베이션의 각 채널을 연산할 동안 필터 데이터를 도면(510 내지 530)처럼 저장해두면 메모리에서 필터 데이터를 읽어올 필요가 없다.
필터 크기가 MAC 어레이의 가로 길이보다 큰 경우에는, 메모리에서 필터 데이터를 읽어올 필요 없이 복수의 행에 필터 데이터를 저장할 수 있도록 레지스터의 용량을 늘려서 도면(540 내지 550)처럼 처리한다면 메모리 읽기 전력을 줄일 수 있다. 도면(540)의 경우, MAC 어레이의 가로 길이가 64라고 한다면, 2 클럭 사이클에 9*9 필터를 연산할 수 있는데, 두 번째 클럭 사이클에서 처리하는 데이터의 길이가 MAC 어레이보다 짧으므로 동작하지 않는 레지스터들은 클럭 게이팅(clock gating) 통해 전력 소모를 줄일 수 있다.
또한, 9*9 필터처럼 큰 사이즈의 필터를 처리할 때는 도면(560)처럼 복수 행의 가산기 트리에 데이터를 저장함으로써, 레지스터의 값을 변화시키지 않고도 처리할 수 있다.
도 6은 일 실시예에 따른 MAC 어레이를 합성하는 방법을 설명하기 위한 도면이다,
도 6을 참조하면, 일 실시예에 따른 MAC 어레이 합성 방법은 파이프라인 스테이지(pipeline stage)를 조절하여 최적의 성능과 전력 효율을 도출할 수 있다. 파이프라인 스테이지는 2D MAC 어레이에서 사용되는 입력 레지스터 행을 의미한다. 합성된 2D MAC 어레이(610)는 입력 레지스터(611) 및 가산기 트리(612)를 포함하고, 합성된 2D MAC 어레이(620)는 입력 레지스터(621) 및 가산기 트리(622)를 포함할 수 있다. 합성된 2D MAC 어레이(610)의 파이프라인 스테이지는 1일 수 있고, 합성된 2D MAC 어레이(620)의 파이프라인 스테이지는 2일 수 있다.
합성된 2D MAC 어레이(610)에서, 1클럭 사이클에 갈 수 있는 데이터 경로(613)는 합성된 2D MAC 어레이(620)에서, 1클럭 사이클에 갈 수 있는 데이터 경로(623)보다 길기 때문에, 합성된 2D MAC 어레이(610)는 합성된 2D MAC 어레이(620)보다 동작 주파수가 낮은 경우에 적합할 수 있다. 합성된 2D MAC 어레이(610)는 합성된 2D MAC 어레이(620) 보다 1클럭 사이클에 갈 수 있는 데이터 경로가 길기 때문에, 크기(area)가 크고 전력 소모 또한 심할 수 있다.
일 실시예에 따른 MAC 어레이 합성 방법에 따르면, 사용하고자 하는 어플리케이션의 동작 주파수에 맞게 파이프라인을 조절하여 합성함으로써, 크기(area)를 최소화할 수 있고 전력 효율을 극대화할 수 있다. MAC 어레이 합성 방법에 따르면, 사용하고자 하는 어플리케이션의 동작 주파수가 높은 경우 입력 레지스터가 중간에서 신호를 자주 챌 수 있도록 파이프 라인을 삽입할 수 있다.
예를 들어, MAC 어레이는 사용하고자 하는 어플리케이션의 동작 주파수에서 입력 레지스터를 가장 적게 사용할 수 있도록 합성될 수 있다. 또는, MAC 어레이는 MAC 어레이에 인가되는 동작 전압을 동작 주파수에서 정상적으로 가산기 트리가 동작하는 범위 내에서 가장 낮게 설정함으로써, 전력 소모를 줄일 수 있다.
아래 표 1은 동작 주파수 및 동작 전압에 따른 파이프라인 스테이지를 나타낸다.
0.71V 0.61V 0.51V 0.41V
500MHz 2 2 4 8
600MHz 2 4 4 8
700MHz 4 4 8 16
800MHz 4 4 8 16
900MHz 4 8 16 32
1000MHz 8 16 32 X
딥러닝 연산 수행 장치는 표 1과 같은 동작 주파수 및 동작 전압에 따른 파이프라인 스테이지를 저장할 수 있고, 이를 이용하여 동적 전압 스케일링(DVFS; Dynamic Voltage and Frequency Scaling)에 활용할 수 있다. 보다 구체적으로, 딥러닝 연산 수행 장치는 제어회로를 포함할 수 있고, 제어회로는 딥러닝 연산 수행 장치의 동작 주파수 및 동작 전압 중 적어도 하나에 기초하여, 입력 멀티플렉서의 연산 모드를 결정할 수 있다.도 7은 일 실시예에 따른 딥러닝 연산 장치에서 비선형 함수 연산을 수행하는 방법을 설명하기 위한 도면이다.도 7을 참조하면, 일 실시예에 따른 딥러닝 연산 장치는 각 행의 가산기 트리를 N개의 서브 트리(sub tree)로 나누고, 각 서브 트리 별로 각기 다른 연산을 수행할 수 있다.
예를 들어, 딥러닝 연산 장치는 각 행의 가산기 트리(710)(예를 들어, 64 가산기 트리)를 4개의 서브 트리(예를 들어, 16 가산기 트리)로 나눌 수 있다. 이 경우, 3*3 뎁스와이즈 컨볼루션 연산을 수행할 때는, 16 가산기 트리 별로 따로 출력을 처리하여 4개의 출력 데이터를 출력하고, 5*5 뎁스와이즈 컨볼루션 연산을 수행할 때는, 32 가산기 트리 별로 묶어서 출력을 처리하여 2개의 출력 데이터를 출력하고, 나머지 경우(예를 들어, 일반적인 컨볼루션 연산)는 64 가산기 트리 전체를 한 값으로 합하여 하나의 출력 데이터를 출력할 수 있다.
이를 위하여, 딥러닝 연산 장치는 N개의 서브 트리의 출력을 누산(accumulation)할 수 있는 서브 출력 레지스터를 포함하는 누산 모듈(720) 및 N개의 서브 트리의 출력을 받아서, 비선형 함수(NLF; non-linear function)(예를 들어, ReLU, Sigmoid, Tanh, Leaky ReLU, swich, SeLU) 연산을 수행하는 비선형 함수 모듈(730)을 포함할 수 있다. 종래의 경우, 비선형 함수 연산은 NPU가 아닌 CPU에서 수행되었으나, 일 실시예에 따른 딥러닝 장치는 비선형 함수 모듈(730)을 포함하기 때문에, NPU 단에서 타이밍 로스(timing loss) 없이 바로 처리할 수 있다.
도 8은 일 실시예에 따른 한 행의 출력 데이터를 다른 행으로 전달하여 출력 데이터를 합하는 방법을 설명하기 위한 도면이다.
도 8을 참조하면, 일 실시예에 따른 딥러닝 연산 장치는 제1행(810)에 포함된 복수의 가산기 트리들의 출력 데이터 합을 저장하는 출력 레지스터(830) 및 출력 레지스터에 저장된 데이터를 제2행(820)으로 전달할지 여부를 결정하는 출력 멀티플렉서(840)를 포함할 수 있다.
딥러닝 연산 장치는 제1행(810)에 있는 에 포함된 복수의 가산기 트리들의 출력 데이터 합을 제2행(820)으로 보내서, 메모리의 쓰기 횟수를 줄일 수 있다. 예를 들어, 2x2 컨볼루션 연산을 수행하는 경우, 4개의 필터 데이터를 각 행의 입력 레지스터에 저장하고 액티베이션도 해당하는 각 행에 넣어서 부분합(partial sum)이 없거나(예를 들어, 채널 깊이가 가산기 트리의 가로 길이 보다 작거나 같을 때), 최소화하면서 연산할 수 있는 장점이 있다.
메모리의 읽기/쓰기 시 발생하는 전력 소모가 일반적으로 레지스터, 멀티플렉서, 가산기의 전력 소모보다 훨씬 크기 때문에, 딥러닝 연산 장치는 전력 소모를 줄일 수 있다.
도 9는 딥러닝 연산 수행 장치의 하드웨어 구현의 예를 나타낸다.
도 9를 참조하면, 딥러닝 연산 수행 장치는 인스트럭션 메모리(911), CPU(Central Processing Unit)(913), 주변장치(peripherals)(915) 및 SFR(Special Function Register)(917)을 포함할 수 있다.
딥러닝 연산 수행 장치(10)는 NLF(Non Linear Function)(951), MAC 어레이(953), DMA(Direct Memory Access)(955), 제어부(971)를 포함할 수 있다.
또한, 딥러닝 연산 수행 장치(10)는 복수의 SRAM(Static Random Access Memory)(975)를 포함하는 메모리 컨트롤러(973)를 더 포함할 수 있다.
도 10은 일 실시예에 따른 딥러닝 연산 수행 방법을 설명하기 위한 순서도이다.
도 10을 참조하면, 일 실시예에 따른 단계들(1010 내지 1030)은 도 1a 내지 도 9를 참조하여 전술한 딥러닝 연산 수행 장치에 의해 수행될 수 있다. 딥러닝 연산 수행 장치는 하나 또는 그 이상의 하드웨어 모듈, 하나 또는 그 이상의 소프트웨어 모듈, 또는 이들의 다양한 조합에 의하여 구현될 수 있다.
단계(1010)에서, 딥러닝 연산 수행 장치는 연산 모드 및 입력 데이터를 수신한다.
단계(1020)에서, 딥러닝 연산 수행 장치는 연산 모드에 대응하여 시스톨릭 가산기 트리에 포함된 복수의 가산기 트리들의 동작을 제어한다.
단계(1030)에서, 딥러닝 연산 수행 장치는 연산 모드에 대응하여, 복수의 가산기 트리들 중 적어도 하나의 가산기 트리의 입력 레지스터와 연결되고, 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서의 동작을 제어한다.
입력 멀티플렉서는 제1 멀티플렉서 및 제2 멀티플렉서 중 적어도 하나를 포함하고, 딥러닝 연산 수행 장치는 연산 모드에 대응하여, 가산기 트리의 입력 레지스터의 토글 여부를 결정하는 제1 멀티플렉서의 동작을 제어하고, 연산 모드에 대응하여, 가산기 트리의 곱셈기의 입력을 결정하는 제2 멀티플렉서의 동작을 제어할 수 있다.
딥러닝 연산 수행 장치는 딥러닝 연산 수행 장치의 동작 주파수 및 동작 전압 중 적어도 하나에 기초하여, 입력 멀티플렉서의 연산 모드를 결정할 수 있다.
딥러닝 연산 수행 장치는 같은 행에 포함된 복수의 가산기 트리들의 출력 데이터 합을 저장하는 출력 레지스터의 동작을 제어하고, 출력 레지스터에 저장된 데이터를 다른 행으로 전달할지 여부를 결정하는 출력 멀티플렉서의 동작을 제어할 수 있다.
딥러닝 연산 수행 장치는 복수의 서브 가산기 트리들 각각의 출력 데이터 합을 저장하는 서브 출력 레지스터의 동작을 제어하고, 서브 출력 레지스터에 저장된 데이터를 비선형 함수에 통과시키는 비선형 함수 모듈의 동작을 제어할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 복수의 가산기 트리(adder tree)들이 행과 열 방향으로 연결된 시스톨릭 가산기 트리(systolic adder tree); 및
    상기 복수의 가산기 트리들 중 적어도 하나의 가산기 트리의 입력 레지스터와 연결되고, 복수의 연산 모드에 대응하여 상기 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서
    를 포함하는 딥러닝 연산 수행 장치.
  2. 제1항에 있어서,
    상기 입력 멀티플렉서는
    상기 가산기 트리의 입력 레지스터의 토글(toggle) 여부를 결정하는 제1 멀티플렉서
    를 포함하는, 딥러닝 연산 수행 장치.
  3. 제1항에 있어서,
    상기 입력 멀티플렉서는
    상기 가산기 트리의 곱셈기(multiplier)의 입력을 결정하는 제2 멀티플렉서
    를 포함하는, 딥러닝 연산 수행 장치.
  4. 제1항에 있어서,
    상기 복수의 연산 모드는
    토글 모드, 가변 파이프라인(pipeline) 모드 및 데이터 피딩(data feeding) 모드 중 적어도 하나를 포함하는, 딥러닝 연산 수행 장치.
  5. 제2항에 있어서,
    상기 제1 멀티플렉서는
    가변 파이프라인 모드에 응답하여, 상기 가산기 트리의 입력 레지스터를 토글하지 않는, 딥러닝 연산 수행 장치.
  6. 제2항에 있어서,
    상기 제1 멀티플렉서는
    토글 모드에 응답하여, 윗 행 가산기 트리의 입력 레지스터에 저장된 데이터를 상기 가산기 트리의 입력 레지스터로 전달하는, 딥러닝 연산 수행 장치.
  7. 제2항에 있어서,
    상기 제1 멀티플렉서는
    데이터 피딩 모드에 응답하여, 새로운 데이터를 상기 가산기 트리의 입력 레지스터로 전달하는, 딥러닝 연산 수행 장치.
  8. 제3항에 있어서,
    상기 제2 멀티플렉서는
    가변 파이프라인 모드에 응답하여, 윗 행 가산기 트리의 입력 레지스터에 저장된 데이터를 상기 가산기 트리의 곱셈기의 입력으로 결정하는, 딥러닝 연산 수행 장치.
  9. 제3항에 있어서,
    상기 제2 멀티플렉서는
    토글 모드에 응답하여, 상기 가산기 트리의 입력 레지스터에 저장된 데이터를 상기 가산기 트리의 곱셈기의 입력으로 결정하는, 딥러닝 연산 수행 장치.
  10. 제3항에 있어서,
    상기 제2 멀티플렉서는
    데이터 피딩 모드에 응답하여, 상기 가산기 트리의 입력 레지스터에 저장된 데이터를 상기 가산기 트리의 곱셈기의 입력으로 결정하는, 딥러닝 연산 수행 장치.
  11. 제1항에 있어서,
    상기 딥러닝 연산 수행 장치의 동작 주파수 및 동작 전압 중 적어도 하나에 기초하여, 상기 입력 멀티플렉서의 연산 모드를 결정하는 제어회로
    를 더 포함하는, 딥러닝 연산 수행 장치.
  12. 제11항에 있어서,
    상기 제어회로는
    상기 가산기 트리의 입력 레지스터의 1 클럭 사이클(clock cycle)에 이동할 수 있는 열 방향 데이터 이동 경로 및 상기 데이터 이동 경로에 대응하는 상기 멀티플렉서의 연산 모드를 결정하는, 딥러닝 연산 수행 장치.
  13. 제1항에 있어서,
    같은 행에 포함된 복수의 가산기 트리들의 출력 데이터 합을 저장하는 출력 레지스터; 및
    상기 출력 레지스터에 저장된 데이터를 다른 행으로 전달할지 여부를 결정하는 출력 멀티플렉서
    를 더 포함하는, 딥러닝 연산 수행 장치.
  14. 제1항에 있어서,
    복수의 서브 가산기 트리들 각각의 출력 데이터 합을 저장하는 서브 출력 레지스터; 및
    상기 서브 출력 레지스터에 저장된 데이터를 비선형 함수(non-linear function)에 통과시키는 비선형 함수 모듈
    을 더 포함하는, 딥러닝 연산 수행 장치.
  15. 연산 모드 및 입력 데이터를 수신하는 단계;
    상기 연산 모드에 대응하여 시스톨릭 가산기 트리에 포함된 복수의 가산기 트리들의 동작을 제어하는 단계; 및
    상기 연산 모드에 대응하여, 상기 복수의 가산기 트리들 중 적어도 하나의 가산기 트리의 입력 레지스터와 연결되고, 상기 복수의 가산기 트리들 사이의 열 방향 데이터 이동을 결정하는 입력 멀티플렉서의 동작을 제어하는 단계
    를 포함하는 딥러닝 연산 수행 방법.
  16. 제15항에 있어서,
    상기 입력 멀티플렉서는
    제1 멀티플렉서 및 제2 멀티플렉서 중 적어도 하나를 포함하고,
    상기 입력 멀티플렉서의 동작을 제어하는 단계는
    상기 연산 모드에 대응하여, 상기 가산기 트리의 입력 레지스터의 토글 여부를 결정하는 제1 멀티플렉서의 동작을 제어하는 단계; 및
    상기 연산 모드에 대응하여, 상기 가산기 트리의 곱셈기의 입력을 결정하는 제2 멀티플렉서의 동작을 제어하는 단계
    를 포함하는, 딥러닝 연산 수행 방법.
  17. 제15항에 있어서,
    상기 입력 멀티플렉서의 동작을 제어하는 단계는
    딥러닝 연산 수행 장치의 동작 주파수 및 동작 전압 중 적어도 하나에 기초하여, 상기 입력 멀티플렉서의 연산 모드를 결정하는 단계
    를 포함하는, 딥러닝 연산 수행 방법.
  18. 제15항에 있어서,
    같은 행에 포함된 복수의 가산기 트리들의 출력 데이터 합을 저장하는 출력 레지스터의 동작을 제어하는 단계; 및
    상기 출력 레지스터에 저장된 데이터를 다른 행으로 전달할지 여부를 결정하는 출력 멀티플렉서의 동작을 제어하는 단계
    를 더 포함하는, 딥러닝 연산 수행 방법.
  19. 제15항에 있어서,
    복수의 서브 가산기 트리들 각각의 출력 데이터 합을 저장하는 서브 출력 레지스터의 동작을 제어하는 단계; 및
    상기 서브 출력 레지스터에 저장된 데이터를 비선형 함수에 통과시키는 비선형 함수 모듈의 동작을 제어하는 단계
    를 더 포함하는, 딥러닝 연산 수행 방법.
  20. 하드웨어와 결합되어 제15항 내지 제19항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.

KR1020200159177A 2020-11-24 2020-11-24 딥러닝 연산 수행 방법 및 장치 KR20220071723A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200159177A KR20220071723A (ko) 2020-11-24 2020-11-24 딥러닝 연산 수행 방법 및 장치
US17/356,771 US20220164164A1 (en) 2020-11-24 2021-06-24 Method and apparatus with deep learning operations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200159177A KR20220071723A (ko) 2020-11-24 2020-11-24 딥러닝 연산 수행 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220071723A true KR20220071723A (ko) 2022-05-31

Family

ID=81658260

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200159177A KR20220071723A (ko) 2020-11-24 2020-11-24 딥러닝 연산 수행 방법 및 장치

Country Status (2)

Country Link
US (1) US20220164164A1 (ko)
KR (1) KR20220071723A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11785340B2 (en) * 2020-03-16 2023-10-10 Sony Semiconductor Solutions Corporation Signal processing device, signal processing method, and parameter search method
US20220188073A1 (en) * 2020-12-11 2022-06-16 Amazon Technologies, Inc. Data-type-aware clock-gating
US20230015148A1 (en) * 2021-07-16 2023-01-19 Google Llc Multiplier and Adder in Systolic Array

Also Published As

Publication number Publication date
US20220164164A1 (en) 2022-05-26

Similar Documents

Publication Publication Date Title
KR102492477B1 (ko) 행렬 곱셈기
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
KR20220071723A (ko) 딥러닝 연산 수행 방법 및 장치
CN108205701B (zh) 一种执行卷积计算的系统及方法
CN107301456B (zh) 基于向量处理器的深度神经网络多核加速实现方法
US10846591B2 (en) Configurable and programmable multi-core architecture with a specialized instruction set for embedded application based on neural networks
US20190026626A1 (en) Neural network accelerator and operation method thereof
Liu et al. An FPGA-based processor for training convolutional neural networks
CN108416437A (zh) 用于乘加运算的人工神经网络的处理系统及方法
CN111105023B (zh) 数据流重构方法及可重构数据流处理器
KR20220015813A (ko) 딥러닝 연산 수행 방법 및 장치
US20220083857A1 (en) Convolutional neural network operation method and device
CN107085562B (zh) 一种基于高效复用数据流的神经网络处理器及设计方法
US20210117755A1 (en) Power-efficient hybrid traversal apparatus and method for convolutional neural network accelerator architecture
CN110383300A (zh) 一种计算装置及方法
EP3674982A1 (en) Hardware accelerator architecture for convolutional neural network
CN110580519B (zh) 一种卷积运算装置及其方法
US20200356809A1 (en) Flexible pipelined backpropagation
Colleman et al. High-utilization, high-flexibility depth-first CNN coprocessor for image pixel processing on FPGA
Bai et al. A unified hardware architecture for convolutions and deconvolutions in CNN
CN110414672B (zh) 卷积运算方法、装置及系统
Duan et al. Energy-efficient architecture for FPGA-based deep convolutional neural networks with binary weights
KR102256289B1 (ko) 인공 신경망에서 학습을 통한 로드 밸런싱 방법 및 시스템
CN110716751B (zh) 高并行度计算平台、系统及计算实现方法
US20210174181A1 (en) Hardware Implementation of a Neural Network