KR20230068864A - 뉴럴 네트워크 연산 장치 및 방법 - Google Patents

뉴럴 네트워크 연산 장치 및 방법 Download PDF

Info

Publication number
KR20230068864A
KR20230068864A KR1020210155090A KR20210155090A KR20230068864A KR 20230068864 A KR20230068864 A KR 20230068864A KR 1020210155090 A KR1020210155090 A KR 1020210155090A KR 20210155090 A KR20210155090 A KR 20210155090A KR 20230068864 A KR20230068864 A KR 20230068864A
Authority
KR
South Korea
Prior art keywords
data
output
neural network
alu
result
Prior art date
Application number
KR1020210155090A
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 KR1020210155090A priority Critical patent/KR20230068864A/ko
Priority to US17/863,963 priority patent/US20230143371A1/en
Publication of KR20230068864A publication Critical patent/KR20230068864A/ko

Links

Images

Classifications

    • 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
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)

Abstract

뉴럴 네트워크 연산 장치 및 방법이 개시된다. 일 실시예에 따른 뉴럴 네트워크 연산 장치는, 뉴럴 네트워크 연산을 수행하기 위한 데이터를 저장하는 내부 스토리지(internal storage)와, 연산 제어 신호에 기초하여 상기 데이터와 메인 데이터의 간의 연산을 수행하는 ALU(Arithmetic Logical Unit)와, 상기 ALU의 출력과 제1 멀티플렉서(multiplexer)의 출력을 더하는 덧셈기와, 리셋 신호(reset signal)에 기초하여 상기 덧셈기의 출력 및 상기 ALU의 출력 중에서 하나를 출력하는 제1 멀티플렉서와, 페이즈 신호(phase signal)에 기초하여 상기 데이터의 양자화 결과 및 상기 메인 데이터 중에서 하나를 출력하는 제2 멀티플렉서와, 상기 연산 제어 신호, 상기 리셋 신호 및 상기 페이즈 신호를 생성함으로써 상기 ALU, 상기 제1 멀티플렉서 및 상기 제2 멀티플렉서를 제어하는 컨트롤러를 포함한다.

Description

뉴럴 네트워크 연산 장치 및 방법{APPARATUS AND METHOD FOR NEURAL NETWORK OPERATION}
아래 실시예들은 뉴럴 네트워크 연산 장치 및 방법에 관한 것이다.
뉴럴 네트워크 연산은 다양한 레이어에 대응하는 다양한 연산을 포함한다. 예를 들어, 뉴럴 네트워크 연산은 컨볼루션 연산 및 논-컨볼루션 연산을 포함한다.
논-컨볼루션 연산은 리덕션 연산을 포함하는데, 리덕션 연산 중의 하나인 글로벌 풀링(global pooling)은 스퀴즈 앤 익사이테이션(squeeze-and-excitation) 네트워크와 같이 매우 큰 공간 차원(spatial dimension)을 가진 입력 특징맵의 정보를 압축하는데 사용된다.
큰 공간 차원을 가진 입력 특징맵의 정보를 처리하기 위해서는 하나의 출력 픽셀당 대응되는 채널의 모든 2 차원 특징맵의 값을 읽어 계산이 수행될 필요가 있다.
리덕션 연산은 종래의 가속기에서 지원되지 않거나 별도의 코어를 요구하였다. 별도의 코어를 이용하는 경우, 연산량에 비하여 큰 부하가 발생할 수 있어 비효율적이라는 문제가 있다.
일 실시예에 따른 뉴럴 네트워크 연산 장치는, 뉴럴 네트워크 연산을 수행하기 위한 데이터를 저장하는 내부 스토리지(internal storage)와, 연산 제어 신호에 기초하여 상기 데이터와 메인 데이터의 간의 연산을 수행하는 ALU(Arithmetic Logical Unit)와, 상기 ALU의 출력과 제1 멀티플렉서(multiplexer)의 출력을 더하는 덧셈기와, 리셋 신호(reset signal)에 기초하여 상기 덧셈기의 출력 및 상기 ALU의 출력 중에서 하나를 출력하는 제1 멀티플렉서와, 페이즈 신호(phase signal)에 기초하여 상기 데이터의 양자화 결과 및 상기 메인 데이터 중에서 하나를 출력하는 제2 멀티플렉서와, 상기 연산 제어 신호, 상기 리셋 신호 및 상기 페이즈 신호를 생성함으로써 상기 ALU, 상기 제1 멀티플렉서 및 상기 제2 멀티플렉서를 제어하는 컨트롤러를 포함한다.
상기 뉴럴 네트워크 연산 장치는, 상기 내부 스토리지로부터 상기 데이터를 수신하여 저장하는 제1 레지스터와, 상기 메인 데이터를 수신하여 저장하는 제2 레지스터와, 상기 ALU의 출력을 저장하는 제3 레지스터와, 상기 제1 멀티플렉서의 출력을 저장하는 제4 레지스터를 포함할 수 있다.
상기 뉴럴 네트워크 연산 장치는, 양자화 팩터(quantization factor)에 기초하여 상기 데이터를 양자화함으로써 상기 양자화 결과를 생성하는 양자화기를 더 포함할 수 있다.
상기 내부 스토리지는, 상기 데이터의 출력 텐서(output tensor)의 위치를 나타내는 채널 인덱스에 기초하여 상기 데이터를 저장할 수 있다.
상기 ALU는, 상기 연산 제어 신호에 기초하여 상기 데이터와 상기 메인 데이터 간의 덧셈 연산 또는 지수 연산을 수행할 수 있다.
상기 페이즈 신호는, 상기 뉴럴 네트워크 연산 장치가 연산을 수행하지 않도록 하기 위한 제1 페이즈 신호와, 상기 메인 데이터를 출력하고, 상기 내부 스토리지를 업데이트하기 위한 제2 페이즈 신호와, 상기 양자화 결과를 출력하기 위한 제3 페이즈 신호를 포함할 수 있다.
상기 뉴럴 네트워크 연산 장치는, 상기 ALU의 출력의 덧셈을 수행하는 가산기 트리(adder tree)를 더 포함할 수 있다.
상기 ALU는, 지수 연산을 수행하여 지수 연산 결과를 생성하고, 상기 가산기 트리는 상기 지수 연산 결과를 더함으로써 소프트맥스(softmax) 연산을 수행할 수 있다.
상기 양자화기는, 상기 ALU의 출력의 덧셈을 수행하는 가산기 트리의 출력을 양자화할 수 있다.
일 실시예에 따른 뉴럴 네트워크 연산 방법은, 뉴럴 네트워크 연산을 수행하기 위한 데이터를 저장하는 단계와, 상기 데이터와 메인 데이터 간의 연산의 종류를 결정하기 위한 연산 제어 신호, 덧셈기의 출력 및 ALU의 출력 중에서 하나를 선택하기 위한 리셋 신호 및 상기 데이터의 양자화 결과 및 상기 메인 데이터 중에서 하나를 선택하기 위한 페이즈 신호를 생성하는 단계와, 상기 연산 제어 신호에 기초하여 상기 데이터와 상기 메인 데이터 간의 연산을 수행함으로써 연산 결과를 생성하는 단계와, 상기 덧셈기의 출력과 상기 ALU의 출력 중에서 선택된 하나 및 상기 연산 결과에 대하여 덧셈을 수행함으로써 덧셈 결과를 생성하는 단계와, 상기 리셋 신호에 기초하여 상기 덧셈 결과 및 상기 연산 결과 중에서 하나를 선택하여 출력하는 단계와, 상기 페이즈 신호에 기초하여 상기 데이터의 양자화 결과 및 상기 메인 데이터 중에서 하나를 출력하는 단계를 포함한다.
상기 뉴럴 네트워크 연산 방법은, 상기 데이터가 저장된 내부 스토리지로부터 상기 데이터를 수신하여 저장하는 단계와, 상기 메인 데이터를 신하여 저장하는 단계와, 상기 ALU의 출력을 저장하는 단계와, 상기 덧셈 결과 및 상기 연산 결과 중에서 선택된 하나를 저장하는 단계를 더 포함할 수 있다.
상기 페이즈 신호에 기초하여 상기 데이터의 양자화 결과 및 상기 메인 데이터 중에서 하나를 출력하는 단계는, 양자화 팩터(quantization factor)에 기초하여 상기 데이터를 양자화함으로써 상기 양자화 결과를 생성하는 단계를 포함할 수 있다.
상기 저장하는 단계는, 상기 데이터의 출력 텐서(output tensor)의 위치를 나타내는 채널 인덱스에 기초하여 상기 데이터를 저장하는 단계를 포함할 수 있다.
상기 연산 결과를 생성하는 단계는, 상기 연산 제어 신호에 기초하여 상기 데이터와 상기 메인 데이터 간의 덧셈 연산 또는 지수 연산을 수행하는 단계를 포함할 수 있다.
상기 페이즈 신호는, 뉴럴 네트워크 연산을 수행하지 않도록 하기 위한 제1 페이즈 신호와, 상기 메인 데이터를 출력하고, 상기 데이터를 저장하는 내부 스토리지를 업데이트하기 위한 제2 페이즈 신호와, 상기 양자화 결과를 출력하기 위한 제3 페이즈 신호를 포함할 수 있다.
상기 뉴럴 네트워크 연산 방법은, 상기 ALU의 출력의 덧셈을 수행하는 단계를 더 포함할 수 있다.
상기 연산 결과를 생성하는 단계는, 상기 ALU는, 지수 연산을 수행하여 지수 연산 결과를 생성하는 단계를 포함하고, 상기 ALU의 출력의 덧셈을 수행하는 단계는, 상기 지수 연산 결과를 더함으로써 소프트맥스(softmax) 연산을 수행하는 단계를 포함할 수 있다.
상기 양자화 결과를 생성하는 단계는, 상기 ALU의 출력의 덧셈을 수행하는 가산기 트리의 출력을 양자화하는 단계를 포함할 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크 연산 장치의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 리덕션 모듈의 개략적인 블록도의 일 예를 나타낸다.
도 3a 및 도 3b는 페이즈 신호에 따른 도 2의 리덕션 모듈의 동작을 나타낸다.
도 4는 도 1에 도시된 리덕션 모듈의 개략적인 블록도의 다른 예를 나타낸다.
도 5a 및 도 5b는 페이즈 신호에 따른 도 4의 리덕션 모듈의 동작을 나타낸다.
도 6은 도 1에 도시된 뉴럴 네트워크 연산 장치의 구현의 예를 나타낸다.
도 7은 도 1에 도시된 뉴럴 네트워크 연산 장치의 동작의 흐름도를 나타낸다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 뉴럴 네트워크 연산 장치의 개략적인 블록도를 나타낸다.
도 1을 참조하면, 뉴럴 네트워크 연산 장치(10)는 뉴럴 네트워크 연산을 수행할 수 있다. 뉴럴 네트워크 연산 장치(10)는 데이터를 수신하여 뉴럴 네트워크를 이용하여 데이터를 처리함으로써 뉴럴 네트워크 연산 결과를 생성할 수 있다.
뉴럴 네트워크 연산 장치(10)는 가산기 트리(adder tree)를 이용하는 NPU 시스템에 파이프라인 형태로 추가될 수 있다. 뉴럴 네트워크 연산 장치(10)는 메인 데이터 경로(main datapath)의 출력을 차례대로 입력 받아 리덕션 연산(reduction operation)을 효과적으로 수행할 수 있다.
뉴럴 네트워크 연산 장치(10)는 두 개의 분기로 나누어 리덕션 연산을 수행하기 위한 제어 신호를 생성할 수 있다. 제어 신호는 연산 제어 신호, 리셋 신호(reset signal) 및 페이즈 신호(phase signal)를 포함할 수 있다. 뉴럴 네트워크 연산 장치(10)는 리덕션 연산의 결과를 저장하기 위해 내부 스토리지(internal storage)를 초기화하는데 소모되는 오버헤드(overhead)를 줄이기 위해 리셋 신호를 생성함으로써 내부 스토리지(internal storage)에 입력값을 저장할 수 있다.
뉴럴 네트워크는 시냅스의 결합으로 네트워크를 형성한 인공 뉴런(노드)이 학습을 통해 시냅스의 결합 세기를 변화시켜, 문제 해결 능력을 가지는 모델 전반을 의미할 수 있다.
뉴럴 네트워크의 뉴런은 가중치 또는 바이어스의 조합을 포함할 수 있다. 뉴럴 네트워크는 하나 이상의 뉴런 또는 노드로 구성된 하나 이상의 레이어(layer)를 포함할 수 있다. 뉴럴 네트워크는 뉴런의 가중치를 학습을 통해 변화시킴으로써 임의의 입력으로부터 예측하고자 하는 결과를 추론할 수 있다.
뉴럴 네트워크는 심층 뉴럴 네트워크 (Deep Neural Network)를 포함할 수 있다. 뉴럴 네트워크는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network), 퍼셉트론(perceptron), 다층 퍼셉트론(multilayer perceptron), FF(Feed Forward), RBF(Radial Basis Network), DFF(Deep Feed Forward), LSTM(Long Short Term Memory), GRU(Gated Recurrent Unit), AE(Auto Encoder), VAE(Variational Auto Encoder), DAE(Denoising Auto Encoder), SAE(Sparse Auto Encoder), MC(Markov Chain), HN(Hopfield Network), BM(Boltzmann Machine), RBM(Restricted Boltzmann Machine), DBN(Depp Belief Network), DCN(Deep Convolutional Network), DN(Deconvolutional Network), DCIGN(Deep Convolutional Inverse Graphics Network), GAN(Generative Adversarial Network), LSM(Liquid State Machine), ELM(Extreme Learning Machine), ESN(Echo State Network), DRN(Deep Residual Network), DNC(Differentiable Neural Computer), NTM(Neural Turning Machine), CN(Capsule Network), KN(Kohonen Network) 및 AN(Attention Network)를 포함할 수 있다.
뉴럴 네트워크 연산 장치(10)는 PC(personal computer), 데이터 서버, 또는 휴대용 장치 내에 구현될 수 있다.
휴대용 장치는 랩탑(laptop) 컴퓨터, 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), e-북(e-book), 또는 스마트 디바이스(smart device)로 구현될 수 있다. 스마트 디바이스는 스마트 와치(smart watch), 스마트 밴드(smart band), 또는 스마트 링(smart ring)으로 구현될 수 있다.
뉴럴 네트워크 연산 장치(10)는 컨트롤러(100) 및 리덕션 모듈(200)을 포함한다. 컨트롤러(100)는 리덕션 모듈(200)을 제어하기 위한 제어 신호를 생성함으로써 리덕션 모듈(200)을 제어할 수 있다. 컨트롤러(100)는 연산 제어 신호, 리셋 신호 및 페이즈 신호를 생성할 수 있다.
컨트롤러(100)는 프로세서를 포함할 수 있다. 프로세서는 메모리에 저장된 데이터를 처리할 수 있다. 프로세서는 메모리에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
"프로세서"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
리덕션 모듈(200)은 데이터를 처리함으로써 뉴럴 네트워크 연산을 수행함으로써 뉴럴 네트워크 연산 결과를 생성할 수 있다. 리덕션 모듈(200)은 리덕션 연산을 수행할 수 있다. 리덕션 연산은 풀링(pooling) 연산 또는 소프트맥스(softmax) 연산을 포함할 수 있다. 예를 들어, 풀링 연산은 글로벌 풀링(global pooling) 연산을 포함할 수 있다.
뉴럴 네트워크 연산 장치(10)는 리덕션 모듈(200)을 이용하여 리덕션 연산을 수행함으로써 연산의 오버헤드를 감소시키면서 리덕션 연산을 효율적으로 수행할 수 있다. 뉴럴 네트워크 연산 장치(10)는 메인 데이터 경로의 출력 값을 리덕션 모듈(200)로 입력하여 글로벌 풀링 결과를 리덕션 모듈(200)의 내부적으로 업데이트하고, 메인 데이터 경로로부터 수신한 메인 데이터는 바이패스시킴으로써 두 가지 레이어를 동시에 수행할 수 있다.
도 2는 도 1에 도시된 리덕션 모듈의 개략적인 블록도를 나타낸다.
도 2를 참조하면, 리덕션 모듈(200)은 리덕션 연산을 수행할 수 있다. 리덕션 연산은 입력 텐서의 엘리먼트(element) 하나 당 한 가지의 간단한 연산이 요구되고, 출력 텐서의 크기가 상대적으로 작을 수 있다. 리덕션 모듈(200)은 앞선 레이어의 연산의 수행이 끝나 출력이 발생할 때마다, 출력 값에 대응하여 이어지는 리덕션 연산의 결과 값을 내부 스토리지(211)를 통해 업데이트 할 수 있다.
리덕션 모듈(200)은 페이즈에 따라 상이하게 동작할 수 있다. 리덕션 모듈(200)은 앞선 레이어가 처리되는 동안 해당 레이어의 출력을 입력으로 받아 리덕션 연산의 출력 텐서 값을 업데이트하여 다시 내부 스토리지(211)저장하는 업데이트 페이즈(예: 제2 페이즈)와, 모든 업데이트가 끝난 후(예: 앞선 레이어의 처리가 끝난 후) 내부 스토리지(211)에 저장된 값을 외부로 전달하는 쓰기 페이즈(예: 제3 페이즈)에 따라 상이하게 동작할 수 있다.
리덕션 모듈(200)은 메인 데이터 경로의 계산 이후 부분(예: 최종 출력이 생성되는 이후 부분)에 위치할 수 있다. 메인 데이터 경로의 출력은 채널 방향 데이터를 포함할 수 있다.
메인 데이터 경로에서 처리 가능한 컨볼루션과 같은 연산 이후에 리덕션 연산이 존재하는 경우, 리덕션 모듈(200)은 메인 데이터 경로의 부분 출력(partial output)을 입력으로 받아 동작할 수 있다.
리덕션 모듈(200)은 내부 스토리지(211), ALU(Arithmetic Logic Unit)(213), 덧셈기(215), 제1 멀티플렉서(multiplexer)(217) 및 제2 멀티플렉서(219)를 포함할 수 있다. 리덕션 모듈(200)은 제1 레지스터(221), 제2 레지스터(223), 제3 레지스터(225), 제4 레지스터(227) 및 양자화기(229)를 더 포함할 수 있다.
내부 스토리지(211)는 뉴럴 네트워크 연산을 수행하기 위한 데이터를 저장할 수 있다. 내부 스토리지(211)는 데이터의 출력 텐서(output tensor)의 위치를 나타내는 채널 인덱스에 기초하여 데이터를 저장할 수 있다.
채널 인덱스는 리덕션 연산을 수행하기 위해 필요한 입력 데이터 및 입력 데이터에 대응하는 출력 텐서의 위치에 대한 정보를 포함할 수 있다. 컨트롤러(예: 도 1의 컨트롤러(100))는 채널 인덱스에 기초하여 내부 스토리지(211)에 데이터를 저장할 수 있다.
ALU(213)는 연산 제어 신호에 기초하여 데이터와 메인 데이터 간의 연산을 수행할 수 있다. ALU(213)는 연산 제어 신호에 기초하여 데이터와 메인 데이터 간의 덧셈 연산 또는 지수 연산을 수행할 수 있다. ALU(213)는 지수 연산을 수행하여 지수 연산 결과를 생성할 수 있다.
덧셈기(215)는 ALU(213)의 출력과 제1 멀티플렉서(217)의 출력을 더할 수 있다. 데이터는 내부 스토리지(211)에 저장되어 리덕션 모듈(200)의 내부에서 사용되는 데이터를 의미할 수 있고, 메인 데이터는 외부의 메인 데이터 경로(main datapath)의 출력 텐서로부터 수신되는 데이터를 의미할 수 있다.
제1 멀티플렉서(217)는 리셋 신호에 덧셈기(215)의 출력 결과 및 ALU(213)의 출력 중에서 하나를 출력할 수 있다. 제2 멀티플렉서(219)는 페이즈 신호에 기초하여 데이터의 양자화 결과 및 메인 데이터 중에서 하나를 출력할 수 있다.
컨트롤러(100)는 연산 제어 신호, 리셋 신호 및 페이즈 신호를 생성함으로써 ALU(213), 제1 멀티플렉서(217) 및 제2 멀티플렉서(219)를 제어할 수 있다. 페이즈 신호는 뉴럴 네트워크 연산 장치(예: 도 1의 뉴럴 네트워크 연산 장치(10))가 연산을 수행하지 않도록 하기 위한 제1 페이즈 신호, 메인 데이터를 출력하고, 내부 스토리지(211)를 업데이트하기 위한 제2 페이즈 신호 및 양자화 결과를 출력하기 위한 제3 페이즈 신호를 포함할 수 있다.
페이즈 신호는 페이즈에 따라 리덕션 모듈(200)의 동작을 구분하기 위해 필요한 제어 신호일 수 있다. 리덕션 모듈(200)은 페이즈 신호에 따라 두 가지 이상의 모드로 동작할 수 있다. 페이즈 신호에 기초한 제어를 위해서는 컴파일러 수준에서의 제어가 요구될 수 있다.
페이즈 신호는 2 비트 신호일 수 있다. 예를 들어, 페이즈 신호는 다음과 같이 정의될 수 있다.
A. 제1페이즈 신호== 2’b00/2’b11 일 경우, 뉴럴 네트워크 연산 장치(10)는 NOP(No Operation) 상태
B. 제2 페이즈 신호== 2’b01 일 경우, 메인 페이즈: 메인 데이터 경로 동작 및 리덕션 모듈(200) 업데이트
C. 제3 페이즈 신호== 2’b10 일 경우, 리덱션 페이즈: 메인 데이터 경로 정지 및 리덕션 모듈(200) 출력
컨트롤러(100)는 리셋 신호에 기초하여 내부 스토리지(211)를 뉴럴 네트워크를 수행하기 위한 데이터로 초기화할 수 있다. 초기화를 위한 데이터는 제3 레지스터(225)로부터 입력되는 데이터일 수 있다.
컨트롤러(100)는 리셋 신호를 이용하지 않고, 리덕션 모듈(200)의 수행이 필요한 레이어가 수행되기 전에 내부 스토리지(211)를 0으로 초기화할 수 있다. 이 경우, 제1 멀티플렉서(217)를 사용하지 않고, 덧셈기(215)의 출력이 내부 스토리지(211)로 직접적으로 전달될 수 있다.
컨트롤러(100)는 메인 데이터에 대응하는 필터의 첫 번째 출력이 생성되는 시점에 리셋 신호를 생성함으로써 내부 스토리지(211)를 초기화할 수 있다. 리셋 신호는 입력 데이터로 내부 스토리지(211)의 값을 초기화하기 위한 제어 신호를 의미할 수 있다. 컨트롤러(100)는 필터를 처음으로 로드(load)할 때, 필터의 첫 번째 출력이 생성될 때, 리셋 신호를 생성하는 형태로 인스트럭션(instruction) 및 제어 신호를 생성함으로써 리덕션 모듈(200)을 제어할 수 있다.
제1 레지스터(221)는 내부 스토리지(211)로부터 데이터를 수신하여 저장할 수 있다. 제2 레지스터(223)는 메인 데이터를 수신하여 저장할 수 있다. 제3 레지스터(225)는 ALU(213)의 출력을 저장할 수 있다. 제4 레지스터(227)는 제1 멀티플렉서(217)의 출력을 저장할 수 있다.
양자화기(229)는 양자화 팩터(quantization factor)에 기초하여 데이터를 양자화함으로써 양자화 결과를 생성할 수 있다. 양자화 팩터 Q는 리덕션 모듈의 출력 값을 양자화하기 위해 사용될 수 있다. 양자화 팩터는 뉴럴 네트워크 연산이 수행되기 전에 미리 계산될 수 있다. 양자화기(229)는 ALU(213)의 출력의 덧셈을 수행하는 가산기 트리의 출력을 양자화할 수 있다.
내부 스토리지(211), 제1 레지스터(221), 제2 레지스터(223), 제3 레지스터(225) 및 제4 레지스터(227)는 메모리로 구현될 수 있다. 메모리는 프로세서에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서의 동작 및/또는 프로세서의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리는 휘발성 메모리 장치 또는 비휘발성 메모리 장치로 구현될 수 있다.
휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
비휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive Bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노 튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM(PoRAM)), 나노 부유 게이트 메모리(Nano Floating Gate Memory(NFGM)), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
도 3a 및 도 3b는 페이즈 신호에 따른 도 2의 리덕션 모듈의 동작을 나타낸다.
도 3a 및 도 3b를 참조하면, 컨트롤러(예: 도 1의 컨트롤러(100))는 페이즈 신호에 기초하여 리덕션 모듈(예: 도 1의 리덕션 모듈(200))을 제어할 수 있다.
리덕션 연산이 수행될 필요가 있는 경우 컨트롤러(100)는 제2 페이즈(예: 업데이트 페이즈)로 동작할 수 있다. 업데이트 페이즈에서, 메인 데이터 경로가 작동할 때에, 컨트롤러(100)는 내부 스토리지(310)의 출력 텐서를 업데이트하고, 메인 데이터 경로의 출력을 바이패스(bypass)함으로써 이후 단계로 전달할 수 있다. 이 때, 업데이트 방식은 리덕션 연산의 종류에 따라 상이할 수 있다.
메인 데이터 경로의 계산이 종료되면, 제3 페이즈(예: 쓰기 페이즈(write phase))가 수행될 수 있다. 컨트롤러(100)는 쓰기 페이즈에서, 업데이트가 완료된 내부 스토리지(310)의 출력 텐서를 양자화기(370)(예: 도 2의 양자화기(229))를 거쳐 출력시킬 수 있다. 양자화기(229)는 리덕션 연산의 종류에 따라 상이하게 동작할 수 있다.
리덕션 연산의 종류가 글로벌 풀링의 경우, 업데이트 페이즈에서는 내부 스토리지(310)에 채널 입력 데이터들의 합을 저장할 수 있다. 이 때, ALU(예: 도 2의 ALU(213)는 덧셈 연산을 수행하고, 컨트롤러(100)는 첫 번째 입력 데이터를 이용하여 내부 스토리지(310)를 초기화시킬 수 있다.
쓰기 페이즈에서는 글로벌 풀링의 커널 크기 또는 미리 결정된 양자화 팩터에 기초하여 양자화기(370)에서 내부 데이터를 전처리하여 출력할 수 있다.
컨트롤러(100)는 페이즈 신호에 기초하여 업데이트 로직(320) 및 제2 멀티플렉서(330)(예: 도 2의 제2 멀티플렉서(219))를 제어할 수 있다. 제2 페이즈는 메인 데이터 경로에 따른 데이터를 출력하기 위한 페이즈를 의미할 수 있다.
컨트롤러(100)는 제2 페이즈 신호를 생성하여 제2 멀티플렉서(330)가 메인 데이터 경로로부터 메인 데이터를 수신한 제2 레지스터(350)(예: 도 2의 제2 레지스터(223)에 저장된 데이터를 출력 데이터(360)로 생성할 수 있다.
이 때, 컨트롤러(100)는 업데이트 로직(320)을 이용하여 내부 스토리지(310)(예: 도 2의 내부 스토리지(211))를 업데이트하고, 내부 스토리지(310)에 저장된 데이터는 제1 레지스터(340)(예: 도 2의 제1 레지스터(221))에 저장될 수 있다.
제3 페이즈는 내부 스토리지(310)에 저장된 데이터를 양자화하여 출력하는 페이즈를 의미할 수 있다. 제2 멀티플렉서(330)는 제3 페이즈 신호에 기초하여 출력 데이터(360)를 출력할 수 있다. 제2 멀티플렉서(330)는 제3 페이즈 신호에 기초하여 양자화 결과를 출력할 수 있다.
제1 레지스터(340)는 내부 스토리지(310)로부터 데이터를 수신하여 저장할 수 있다. 제1 레지스터(340)는 양자화기(370)(예: 도 2의 양자화기(229))로 데이터를 출력할 수 있다.
양자화기(370)는 양자화 팩터에 기초하여 데이터의 양자화 결과를 생성할 수 있다.
도 4는 도 1에 도시된 리덕션 모듈의 개략적인 블록도의 다른 예를 나타낸다.
도 4를 참조하면, 리덕션 모듈(400)(예: 도 1의 리덕션 모듈(200))은 리덕션 연산을 수행할 수 있다. 리덕션 모듈(400)은 내부 스토리지(411), ALU(413), 덧셈기(415), 제1 멀티플렉서(417) 및 제2 멀티플렉서(419)를 포함할 수 있다. 리덕션 모듈(400)은 제1 레지스터(421), 제2 레지스터(423), 제3 레지스터(425), 제4 레지스터(427), 양자화기(429) 및 가산기 트리(431)를 더 포함할 수 있다.
내부 스토리지(411)는 도 2의 내부 스토리지(211)와 동일하게 동작할 수 있다.
ALU(413)는 연산 제어 신호에 기초하여 데이터와 메인 데이터 간의 연산을 수행할 수 있다. ALU(413)는 연산 제어 신호에 기초하여 데이터와 메인 데이터 간의 덧셈 연산 또는 지수 연산을 수행할 수 있다. ALU(413)는 지수 연산을 수행하여 지수 연산 결과를 생성할 수 있다.
가산기 트리(431)는 ALU(413)의 출력의 덧셈을 수행할 수 있다.
덧셈기(415)는 가산기 트리(431)의 출력과 제1 멀티플렉서(417)의 출력을 더할 수 있다.
제1 레지스터(421)는 도 2의 제1 레지스터(221)와 동일하게 동작할 수 있다. 제2 레지스터(423)는 도 2의 제2 레지스터(223)와 동일하게 동작할 수 있다. 제3 레지스터(425)는 도 2의 제3 레지스터(225)와 동일하게 동작할 수 있다. 제4 레지스터(427)는 도 2의 제4 레지스터(227)와 동일하게 동작할 수 있다.
양자화기(429)는 가산기 트리(431)의 출력을 양자화할 수 있다. 가산기 트리(431)는 ALU(413)로부터 출력된 지수 연산 결과를 더함으로써 소프트맥스(softmax) 연산을 수행할 수 있다.
채널 방향 입출력 형태를 가지는 연산 장치(예: NPU)에 리덕션 모듈(400)이 적용될 수 있다. 리덕션 모듈(400)은 가산기 트리 기반의 연산 장치에 적용될 수 있다.
연산 장치의 메인 데이터 경로에서 발생하는 채널 방향 출력은 리덕션 모듈(400)의 입력으로 들어오고, 입력은 각각 독립적으로 출력 텐서에 관여하므로 엘리먼트-와이즈(element-wise) 기반 컴포넌트(component)로 확장될 수 있다. 가산기 트리(431)는 소프트맥스 연산을 수행하기 위해 추가될 수 있다.
도 5a 및 도 5b는 페이즈 신호에 따른 도 4의 리덕션 모듈의 동작을 나타낸다.
도 5a 및 도 5b를 참조하면, 컨트롤러(예: 도 1의 컨트롤러(100))는 페이즈 신호에 기초하여 리덕션 모듈(예: 도 4의 리덕션 모듈(400))을 제어할 수 있다.
컨트롤러(100)는 페이즈 신호에 기초하여 업데이트 로직(520) 및 제2 멀티플렉서(530)(예: 도 2의 제2 멀티플렉서(219))를 제어할 수 있다. 제2 페이즈(예: 업데이트 페이즈)는 메인 데이터 경로에 따른 데이터를 출력하기 위한 페이즈를 의미할 수 있다.
리덕션 연산의 종류가 소프트맥스 연산인 경우, 업데이트 페이즈에서, 컨트롤러(100)는 입력을 바이패스하여 출력시킬 수 있다. 이 때, ALU(213)는 지수 연산(예: exp(x))을 수행하고, 수행 결과를 내부 스토리지(310)에 저장할 수 있다.
컨트롤러(100)는 지수 연산의 결과들의 합을 가산기 트리(예: 도 4의 가산기 트리(431))를 이용하여 제4 레지스터(예: 도 4의 제4 레지스터(427))에 업데이트하며 저장할 수 있다. 제3 페이즈(예: 쓰기 페이즈))에서, 컨트롤러(100)는 제4 레지스터(427)에 저장된 값에 따라 양자화기(570)(예: 도 4의 양자화기(429))에서 내부 스토리지(510)에 저장된 데이터를 전처리하고 출력시킬 수 있다.
컨트롤러(100)는 제2 페이즈 신호를 생성하여 제2 멀티플렉서(530)가 메인 데이터 경로로부터 메인 데이터를 수신한 제2 레지스터(550)(예: 도 2의 제2 레지스터(223)에 저장된 데이터를 출력 데이터(560)로 생성할 수 있다.
이 때, 컨트롤러(100)는 업데이트 로직(520)을 이용하여 내부 스토리지(510)(예: 도 2의 내부 스토리지(211))를 업데이트하고, 내부 스토리지(510)에 저장된 데이터는 제1 레지스터(540)(예: 도 2의 제1 레지스터(221))에 저장될 수 있다.
제3 페이즈는 내부 스토리지(510)에 저장된 데이터를 양자화하여 출력하는 페이즈를 의미할 수 있다. 제2 멀티플렉서(550)는 제3 페이즈 신호에 기초하여 출력 데이터(560)를 출력할 수 있다. 제2 멀티플렉서(530)는 제3 페이즈 신호에 기초하여 양자화 결과를 출력할 수 있다.
제1 레지스터(540)는 내부 스토리지(510)로부터 데이터를 수신하여 저장할 수 있다. 제1 레지스터(540)는 양자화기(570)(예: 도 2의 양자화기(229))로 데이터를 출력할 수 있다.
양자화기(570)는 양자화 팩터에 기초하여 데이터의 양자화 결과를 생성할 수 있다.
도 6은 도 1에 도시된 뉴럴 네트워크 연산 장치의 구현의 예를 나타낸다.
도 6을 참조하면, 리덕션 모듈(예: 도 1의 리덕션 모듈(200))은 가산기 트리 기반의 연산 장치(예: NPU)에 적용될 수 있다. 리덕션 모듈(200)을 NPU에 적용할 경우, 리덕션 모듈을 제어하기 위한 제어 신호가 요구될 수 있다.
도 7은 도 1에 도시된 뉴럴 네트워크 연산 장치의 동작의 흐름도를 나타낸다.
도 7을 참조하면, 내부 스토리지(예: 도 2의 내부 스토리지(211))는 뉴럴 네트워크 연산을 수행하기 위한 데이터를 저장할 수 있다(710). 내부 스토리지(211)는 데이터의 출력 텐서의 위치를 나타내는 채널 인덱스에 기초하여 데이터를 저장할 수 있다.
컨트롤러(예: 도 1의 컨트롤러(100))는 데이터와 메인 데이터 간의 연산의 종류를 결정하기 위한 연산 제어 신호, 덧셈기의 출력 및 ALU의 출력 중에서 하나를 선택하기 위한 리셋 신호 및 데이터의 양자화 결과 및 메인 데이터 중에서 하나를 선택하기 위한 페이즈 신호를 생성할 수 있다(720).
페이즈 신호는, 뉴럴 네트워크 연산을 수행하지 않도록 하기 위한 제1 페이즈 신호, 메인 데이터를 출력하고, 데이터를 저장하는 내부 스토리지를 업데이트하기 위한 제2 페이즈 신호 및 양자화 결과를 출력하기 위한 제3 페이즈 신호를 포함할 수 있다.
ALU(예: 도 2의 ALU(213))는 연산 제어 신호에 기초하여 데이터와 메인 데이터 간의 연산을 수행함으로써 연산 결과를 생성할 수 있다(730). ALU(213)는 연산 제어 신호에 기초하여 데이터와 메인 데이터 간의 덧셈 연산 또는 지수 연산을 수행할 수 있다. ALU(213)는, 지수 연산을 수행하여 지수 연산 결과를 생성할 수 있다.
가산기 트리(예: 도 4의 가산기 트리(431))는 ALU(213)의 출력의 덧셈을 수행할 수 있다. 가산기 트리(431)는 지수 연산 결과를 더함으로써 소프트맥스 연산을 수행할 수 있다.
덧셈기(예: 도 2의 덧셈기(215))는 덧셈기(215)의 출력과 ALU(213)의 출력 중에서 선택된 하나 및 ALU(213)를 통해 생성된 연산 결과에 대하여 덧셈을 수행함으로써 덧셈 결과를 생성할 수 있다(740).
제1 멀티플렉서(예: 도 2의 제1 멀티플렉서(217))는 리셋 신호에 기초하여 덧셈 결과 및 연산 결과 중에서 하나를 선택하여 출력할 수 있다(750).
제2 멀티플렉서(예: 도 2의 제2 멀티플렉서(219))는 페이즈 신호에 기초하여 데이터의 양자화 결과 및 메인 데이터 중에서 하나를 출력할 수 있다(760). 양자화기(예: 도 2의 양자화기(229))는 양자화 팩터에 기초하여 데이터를 양자화함으로써 양자화 결과를 생성할 수 있다. 양자화기(229)는 ALU(213)의 출력의 덧셈을 수행하는 가산기 트리(431)의 출력을 양자화할 수 있다.
제1 레지스터(예: 도 2의 제1 레지스터(221))는 데이터가 저장된 내부 스토리지(211)로부터 데이터를 수신하여 저장할 수 있다. 제2 레지스터(예: 도 2의 제2 레지스터(223))는 메인 데이터를 수신하여 저장할 수 있다. 제3 레지스터(예: 도 2의 제3 레지스터(225))는 ALU의 출력을 저장할 수 있다. 제4 레지스터(예: 도 2의 제4 레지스터(227))는 덧셈 결과 및 연산 결과 중에서 선택된 하나를 저장할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (19)

  1. 뉴럴 네트워크 연산을 수행하기 위한 데이터를 저장하는 내부 스토리지(internal storage);
    연산 제어 신호에 기초하여 상기 데이터와 메인 데이터의 간의 연산을 수행하는 ALU(Arithmetic Logical Unit);
    상기 ALU의 출력과 제1 멀티플렉서(multiplexer)의 출력을 더하는 덧셈기;
    리셋 신호(reset signal)에 기초하여 상기 덧셈기의 출력 및 상기 ALU의 출력 중에서 하나를 출력하는 제1 멀티플렉서;
    페이즈 신호(phase signal)에 기초하여 상기 데이터의 양자화 결과 및 상기 메인 데이터 중에서 하나를 출력하는 제2 멀티플렉서; 및
    상기 연산 제어 신호, 상기 리셋 신호 및 상기 페이즈 신호를 생성함으로써 상기 ALU, 상기 제1 멀티플렉서 및 상기 제2 멀티플렉서를 제어하는 컨트롤러
    를 포함하는 뉴럴 네트워크 연산 장치.
  2. 제1항에 있어서,
    상기 내부 스토리지로부터 상기 데이터를 수신하여 저장하는 제1 레지스터;
    상기 메인 데이터를 수신하여 저장하는 제2 레지스터;
    상기 ALU의 출력을 저장하는 제3 레지스터; 및
    상기 제1 멀티플렉서의 출력을 저장하는 제4 레지스터
    를 포함하는 뉴럴 네트워크 연산 장치.
  3. 제1항에 있어서,
    양자화 팩터(quantization factor)에 기초하여 상기 데이터를 양자화함으로써 상기 양자화 결과를 생성하는 양자화기
    를 더 포함하는 뉴럴 네트워크 연산 장치.
  4. 제1항에 있어서,
    상기 내부 스토리지는,
    상기 데이터의 출력 텐서(output tensor)의 위치를 나타내는 채널 인덱스에 기초하여 상기 데이터를 저장하는,
    뉴럴 네트워크 연산 장치.
  5. 제1항에 있어서,
    상기 ALU는,
    상기 연산 제어 신호에 기초하여 상기 데이터와 상기 메인 데이터 간의 덧셈 연산 또는 지수 연산을 수행하는,
    뉴럴 네트워크 연산 장치.
  6. 제1항에 있어서,
    상기 페이즈 신호는,
    상기 뉴럴 네트워크 연산 장치가 연산을 수행하지 않도록 하기 위한 제1 페이즈 신호;
    상기 메인 데이터를 출력하고, 상기 내부 스토리지를 업데이트하기 위한 제2 페이즈 신호; 및
    상기 양자화 결과를 출력하기 위한 제3 페이즈 신호
    를 포함하는 뉴럴 네트워크 연산 장치.
  7. 제1항에 있어서,
    상기 ALU의 출력의 덧셈을 수행하는 가산기 트리(adder tree),
    를 더 포함하는 뉴럴 네트워크 연산 장치.
  8. 제7항에 있어서,
    상기 ALU는, 지수 연산을 수행하여 지수 연산 결과를 생성하고,
    상기 가산기 트리는 상기 지수 연산 결과를 더함으로써 소프트맥스(softmax) 연산을 수행하는
    뉴럴 네트워크 연산 장치.
  9. 제3항에 있어서,
    상기 양자화기는,
    상기 ALU의 출력의 덧셈을 수행하는 가산기 트리의 출력을 양자화하는,
    뉴럴 네트워크 연산 장치.
  10. 하드웨어와 결합되어 제1항 내지 제9항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독가능한 매체에 저장된 컴퓨터 프로그램.
  11. 뉴럴 네트워크 연산을 수행하기 위한 데이터를 저장하는 단계;
    상기 데이터와 메인 데이터 간의 연산의 종류를 결정하기 위한 연산 제어 신호, 덧셈기의 출력 및 ALU의 출력 중에서 하나를 선택하기 위한 리셋 신호 및 상기 데이터의 양자화 결과 및 상기 메인 데이터 중에서 하나를 선택하기 위한 페이즈 신호를 생성하는 단계;
    상기 연산 제어 신호에 기초하여 상기 데이터와 상기 메인 데이터 간의 연산을 수행함으로써 연산 결과를 생성하는 단계;
    상기 덧셈기의 출력과 상기 ALU의 출력 중에서 선택된 하나 및 상기 연산 결과에 대하여 덧셈을 수행함으로써 덧셈 결과를 생성하는 단계;
    상기 리셋 신호에 기초하여 상기 덧셈 결과 및 상기 연산 결과 중에서 하나를 선택하여 출력하는 단계; 및
    상기 페이즈 신호에 기초하여 상기 데이터의 양자화 결과 및 상기 메인 데이터 중에서 하나를 출력하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  12. 제11항에 있어서,
    상기 데이터가 저장된 내부 스토리지로부터 상기 데이터를 수신하여 저장하는 단계;
    상기 메인 데이터를 수신하여 저장하는 단계;
    상기 ALU의 출력을 저장하는 단계; 및
    상기 덧셈 결과 및 상기 연산 결과 중에서 선택된 하나를 저장하는 단계
    를 더 포함하는 뉴럴 네트워크 연산 방법.
  13. 제11항에 있어서,
    상기 페이즈 신호에 기초하여 상기 데이터의 양자화 결과 및 상기 메인 데이터 중에서 하나를 출력하는 단계는,
    양자화 팩터(quantization factor)에 기초하여 상기 데이터를 양자화함으로써 상기 양자화 결과를 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  14. 제11항에 있어서,
    상기 저장하는 단계는,
    상기 데이터의 출력 텐서(output tensor)의 위치를 나타내는 채널 인덱스에 기초하여 상기 데이터를 저장하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  15. 제11항에 있어서,
    상기 연산 결과를 생성하는 단계는,
    상기 연산 제어 신호에 기초하여 상기 데이터와 상기 메인 데이터 간의 덧셈 연산 또는 지수 연산을 수행하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  16. 제11항에 있어서,
    상기 페이즈 신호는,
    뉴럴 네트워크 연산을 수행하지 않도록 하기 위한 제1 페이즈 신호;
    상기 메인 데이터를 출력하고, 상기 데이터를 저장하는 내부 스토리지를 업데이트하기 위한 제2 페이즈 신호; 및
    상기 양자화 결과를 출력하기 위한 제3 페이즈 신호
    를 포함하는 뉴럴 네트워크 연산 방법.
  17. 제11항에 있어서,
    상기 ALU의 출력의 덧셈을 수행하는 단계
    를 더 포함하는 뉴럴 네트워크 연산 방법.
  18. 제17항에 있어서,
    상기 연산 결과를 생성하는 단계는,
    상기 ALU는, 지수 연산을 수행하여 지수 연산 결과를 생성하는 단계를 포함하고,
    상기 ALU의 출력의 덧셈을 수행하는 단계는,
    상기 지수 연산 결과를 더함으로써 소프트맥스(softmax) 연산을 수행하는 단계를 포함하는,
    뉴럴 네트워크 연산 방법.
  19. 제13항에 있어서,
    상기 양자화 결과를 생성하는 단계는,
    상기 ALU의 출력의 덧셈을 수행하는 가산기 트리의 출력을 양자화하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
KR1020210155090A 2021-11-11 2021-11-11 뉴럴 네트워크 연산 장치 및 방법 KR20230068864A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210155090A KR20230068864A (ko) 2021-11-11 2021-11-11 뉴럴 네트워크 연산 장치 및 방법
US17/863,963 US20230143371A1 (en) 2021-11-11 2022-07-13 Apparatus and method with neural network operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210155090A KR20230068864A (ko) 2021-11-11 2021-11-11 뉴럴 네트워크 연산 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20230068864A true KR20230068864A (ko) 2023-05-18

Family

ID=86229759

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210155090A KR20230068864A (ko) 2021-11-11 2021-11-11 뉴럴 네트워크 연산 장치 및 방법

Country Status (2)

Country Link
US (1) US20230143371A1 (ko)
KR (1) KR20230068864A (ko)

Also Published As

Publication number Publication date
US20230143371A1 (en) 2023-05-11

Similar Documents

Publication Publication Date Title
US11803733B2 (en) Method for implementing neural network model in heterogeneous computing platform and apparatus for performing the same
KR20230053404A (ko) 뉴럴 네트워크를 이용한 초분광 이미지 분류 방법 및 장치
KR102607993B1 (ko) 양자화를 이용한 뉴럴 네트워크 연산 방법 및 장치
US20220284262A1 (en) Neural network operation apparatus and quantization method
CN114912590A (zh) 处理器、操作处理器的方法以及包括处理器的电子装置
KR20220077709A (ko) 뉴럴 네트워크 연산 방법, 장치 및 그 뉴럴 네트워크 연산을 이용한 키워드 검출 방법
KR20230068864A (ko) 뉴럴 네트워크 연산 장치 및 방법
KR102547997B1 (ko) 효율적인 메모리 접근 방식을 이용한 뉴럴 네트워크 연산 가속 방법 및 장치
US20220284299A1 (en) Method and apparatus with neural network operation using sparsification
US20230058341A1 (en) Neural network training method and apparatus using trend
KR20230063519A (ko) 뉴럴 네트워크 연산 장치 및 방법
KR102682630B1 (ko) 뉴럴 네트워크 연산 장치 및 방법
KR102614909B1 (ko) 희소화를 이용한 뉴럴 네트워크 연산 방법 및 장치
KR20220096466A (ko) 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치
KR20220030681A (ko) 뉴럴 네트워크 연산 장치 및 방법
KR20230041450A (ko) 뉴럴 네트워크 연산 방법 및 장치
KR20240106510A (ko) 뉴럴 네트워크 연산 장치 및 방법
JP7431263B2 (ja) ニューラルネットワーク演算方法及び装置
KR20240062267A (ko) 뉴럴 네트워크 연산 장치 및 방법
KR102675414B1 (ko) 뉴럴 네트워크 연산 방법 및 장치
KR102506988B1 (ko) 이종 손실 함수를 이용하여 학습된 뉴럴 네트워크를 이용한 이상 검출 장치
KR102504412B1 (ko) 머신러닝 기반 미세먼지 센서 오차 보정 장치 및 방법
KR102626850B1 (ko) 뉴럴 네트워크 기반 에너지 하베스팅 방법 및 시스템
KR20240023919A (ko) 컴퓨팅 시스템의 성능 모델링 장치 및 방법
KR20230138372A (ko) 뉴럴 네트워크 연산 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination