KR102610842B1 - 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법 - Google Patents

뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법 Download PDF

Info

Publication number
KR102610842B1
KR102610842B1 KR1020180150840A KR20180150840A KR102610842B1 KR 102610842 B1 KR102610842 B1 KR 102610842B1 KR 1020180150840 A KR1020180150840 A KR 1020180150840A KR 20180150840 A KR20180150840 A KR 20180150840A KR 102610842 B1 KR102610842 B1 KR 102610842B1
Authority
KR
South Korea
Prior art keywords
value
multiplexer
outputs
input signal
data input
Prior art date
Application number
KR1020180150840A
Other languages
English (en)
Other versions
KR20190065144A (ko
Inventor
조용철
권영수
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US16/206,687 priority Critical patent/US11494623B2/en
Publication of KR20190065144A publication Critical patent/KR20190065144A/ko
Application granted granted Critical
Publication of KR102610842B1 publication Critical patent/KR102610842B1/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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
    • 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
    • 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/044Recurrent networks, e.g. Hopfield networks

Abstract

뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법이 개시된다. 프로세싱 엘리먼트는, 제1 메모리에 저장되어 있는 제1 값과 제2 메모리에 저장되어 있는 제2 값 중에서 하나를 선택하여 출력하는 제1 멀티플렉서, 제1 데이터 입력 신호와 제1 멀티플렉서의 출력 값 중에서 하나를 선택하여 출력하는 제2 멀티플렉서, 상기 제1 멀티플렉서의 출력 값과 제2 데이터 입력 신호 중 하나를 선택하여 출력하는 제3 멀티플렉서, 제2 멀티플렉서의 출력 값과 제3 멀티플렉서의 출력 값을 곱하는 곱셈기, 제2 멀티플렉서의 출력 값과 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 제4 멀티플렉서, 그리고 제4 멀티플렉서의 출력 값을 저장하는 제3 메모리를 포함할 수 있다.

Description

뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법{PROCESSING ELEMENT AND OPERATING METHOD THEREOF IN NEURAL NETWORK}
본 발명은 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법에 관한 것이다.
뉴럴 네트워크(신경망)(Neural Network)는 트레이닝을 통해 인간과 비슷한 지능과 판단력이 필요한 다양한 응용 영역에 사용되고 있다. 최근에 알파고, 이미지 넷(IMAGE NET) 등을 통해 뉴럴 네트워크의 잠재력이 널리 알려지게 되었고 인공지능의 성능을 높이기 위해 뉴럴 네트워크 알고리즘 및 구조에 대한 연구가 활발이 진행되고 있다.
뉴럴 네트워크의 기본적인 개념은 인간 뇌의 구조, 연산 및 동작 원리를 흉내 내는 것이다. 인간 뇌는 거대한 병렬적 신경망(massively parallel neural network)으로서 기존 컴퓨터의 본 뉴먼(Von Neuman) 방식의 중앙처리장치(Central Processing Unit)가 명령어를 통해 순차적으로(serial) 연산을 수행하는 방법과는 차이가 있다.
현재 뉴럴 네트워크의 연산은 주로 GPGPU(General-Purpose computing on Graphics Processing Units)를 사용하고 있고 CPU보다 성능이 더욱 우수하다. 한편, 최근에는 컨벌루션 신경망(Convolutional Neural Network)이 영상 인식 등 다양한 응용 분야에서 대표적으로 사용되고 있다.
GPGPU는 그래픽(Graphics) 연산을 위해 디자인 된 것이므로 뉴럴 네트워크 연산에 특화된 아키텍쳐가 아니며 파워 소모가 많아 운영자에게 부담이 된다.
본 발명이 해결하고자 하는 과제는 뉴럴 네트워크의 연산에 적합한 프로세싱 엘리먼트를 제공하는 것이다.
본 발명의 실시예에 따르면, 뉴럴 네트워크에서의 프로세싱 엘리먼트이 제공된다. 상기 프로세싱 엘리먼트는, 제1 메모리에 저장되어 있는 제1 값과 제2 메모리에 저장되어 있는 제2 값 중에서 하나를 선택하여 출력하는 제1 멀티플렉서, 제1 데이터 입력 신호와 상기 제1 멀티플렉서의 출력 값 중에서 하나를 선택하여 출력하는 제2 멀티플렉서, 상기 제1 멀티플렉서의 출력 값과 제2 데이터 입력 신호 중 하나를 선택하여 출력하는 제3 멀티플렉서, 상기 제2 멀티플렉서의 출력 값과 상기 제3 멀티플렉서의 출력 값을 곱하는 곱셈기, 상기 제2 멀티플렉서의 출력 값과 상기 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 제4 멀티플렉서, 그리고 상기 4 멀티플렉서의 출력 값을 저장하는 제3 메모리를 포함할 수 있다.
상기 프로세싱 엘리먼트는, 상기 제1 값, 상기 제2 값, 그리고 상기 제3 메모리에 저장되어 있는 제3 값 중에서 하나를 선택하여 출력하는 제5 멀티플렉서, 그리고 상기 제1 값, 상기 제2 값, 그리고 상기 제2 데이터 입력 신호 중에서 하나를 선택하여 출력하는 제6 멀티플렉서를 더 포함할 수 있다.
상기 프로세싱 엘리먼트는 상기 제5 멀티플렉서의 출력 값과 상기 제6 멀티플렉서의 출력 값을 더하거나 최대 값을 획득하는 덧셈/최대값 계산기를 더 포함할 수 있으며, 상기 덧셈/최대값 계산기의 출력 값은 상기 제1 메모리 및 상기 제2 메모리 중 하나에 저장될 수 있다.
상기 프로세싱 엘리먼트는, 상기 더한 값, 상기 최대 값, 그리고 상기 제3 값 중 하나를 선택하여 출력하는 제7 멀티플렉서, 그리고 상기 제7 멀티플렉서의 출력 값을 상기 제1 메모리 및 상기 제2 메모리 중 하나에 저장하는 디멀티플렉서를 더 포함할 수 있다.
상기 프로세싱 엘리먼트는, 상기 제1 값과 상기 제2 값 중에서 하나를 선택하여 상기 프로세싱 엘리먼트에 이웃하는 프로세싱 엘리먼트로 출력하는 제8 멀티플렉서를 더 포함할 수 있다.
상기 프로세싱 엘리먼트는, 상기 제1 멀티플렉서의 출력 값을 소정의 기준 값과 비교하고 비교 결과 값을 상기 제4 멀티플렉서로 출력하는 비교기를 더 포함할 수 있다.
상기 제4 멀티플렉서는 상기 비교 결과 값에 따라 상기 제2 멀티플렉서의 출력 값과 상기 곱셈기의 출력 값 중에서 하나를 선택하여 출력할 수 있다.
상기 제2 멀티플렉서는 상기 제1 데이터 입력 신호를 출력하고 상기 제3 멀티플렉서는 상기 제2 데이터 입력 신호를 출력할 수 있으며, 상기 곱셈기는 상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제3 값을 출력할 수 있으며, 상기 제3 값은 상기 제1 메모리에 저장될 수 있다.
상기 곱셈기는 상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제4 값을 출력할 수 있으며, 상기 제5 멀티플렉서는 상기 제4 값을 출력하고 상기 제6 멀티플렉서는 상기 제 3값을 출력할 수 있으며, 상기 덧셈/최대값 계산기는 상기 제4 값과 상기 제3 값을 더한 값인 제5 값을 출력할 수 있으며, 상기 제5 값은 상기 제1 메모리에 새롭게 저장될 수 있다.
상기 제5 멀티플렉서는 상기 제1 값을 출력할 수 있고, 상기 제6 멀티플렉서는 상기 제2 데이터 입력 신호를 출력할 수 있으며, 상기 덧셈/최대값 계산기는 상기 제1 값과 상기 제2 데이터 입력 신호를 더한 값인 제3 값을 출력할 수 있으며, 상기 제3 값은 상기 제1 메모리에 새롭게 저장될 수 있다.
상기 제1 멀티플렉서는 상기 제1 값을 출력할 수 있고, 상기 제2 멀티플렉서는 상기 제1 값을 출력할 수 있고, 상기 제3 멀티플렉서는 상기 제2 데이터 입력 신호를 선택하여 출력할 수 있으며, 상기 곱셈기는 상기 제1 값과 상기 제2 데이터 입력 신호를 곱한 값인 제3 값을 출력할 수 있으며, 상기 제3 값은 상기 제1 메모리에 새롭게 저장될 수 있다.
상기 제1 멀티플렉서는 상기 제1 값을 출력할 수 있고, 상기 제2 멀티플렉서는 상기 제1 값을 출력할 수 있고, 상기 제3 멀티플렉서는 0의 값인 상기 제2 데이터 입력 신호를 출력할 수 있으며, 상기 곱셈기는 상기 제1 값과 0을 곱한 값인 0의 값을 출력할 수 있으며, 상기 제4 멀티플렉서는 상기 제1 값이 0보다 큰 경우 상기 제1 값을 출력하고 상기 제1 값이 상기 0보다 작은 경우 0을 출력할 수 있으며, 상기 제5 멀티플렉서는 상기 제4 멀티플렉서의 출력 값을 출력할 수 있고, 상기 제6 멀티플렉서는 상기 제2 값을 출력할 수 있으며, 상기 덧셈/최대값 계산기는 상기 제4 멀티플렉서의 출력 값과 상기 제2 값 중에서 큰 값인 제3 값을 출력할 수 있으며, 상기 제3 값은 상기 제1 메모리에 새롭게 저장될 수 있다.
상기 제1 데이터 입력 신호는 상기 제5 멀티플렉서를 통해 상기 덧셈/최대값 계산기에 입력될 수 있고 상기 제2 값은 상기 제6 멀티플렉서를 통해 상기 덧셈/최대값 계산기에 입력될 수 있으며, 상기 덧셈/최대값 계산기는 상기 제1 데이터 입력 신호와 상기 제2 값 중에서 큰 값인 제3 값을 출력할 수 있으며, 상기 제3 값은 상기 프로세싱 엘리먼트에 이웃한 프로세싱 엘리먼트로 전달될 수 있다.
상기 제1 메모리, 상기 제2 메모리, 그리고 상기 제3 메모리는 레지스터일 수 있다.
본 발명의 다른 실시예에 따르면, 뉴럴 네트워크에서 연산을 수행하는 프로세싱 엘리먼트가 제동된다. 상기 프로세싱 엘리먼트는, 제1 메모리에 저장되어 있는 제1 값과 제1 데이터 입력 신호 중에서 상기 제1 값을 선택하여 출력하는 제1 멀티플렉서, 상기 제1 값과 제2 데이터 입력 신호 중 상기 제2 데이터 입력 신호를 선택하여 출력하는 제2 멀티플렉서, 상기 제1 값과 상기 제2 멀티플렉서의 출력 값을 곱하는 곱셈기, 상기 제1 값을 소정의 기준 값과 비교하는 비교기, 그리고 상기 비교기의 비교 결과에 따라 상기 제1 멀티플렉서의 출력 값과 상기 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 제3 멀티플렉서를 포함할 수 있다.
상기 프로세싱 엘리먼트는 상기 제3 멀티플렉서의 출력 값과 제2 메모리에 저장되어 있는 제2 값 중 큰 값을 획득하는 최대값 계산기를 더 포함할 수 있으며, 상기 최대값 계산기의 출력 값은 상기 제1 메모리에 새롭게 저장될 수 있다.
상기 기준 값은 0일 수 있으며, 상기 제2 데이터 입력 신호는 0일 수 있다.
본 발명의 또 다른 실시예에 따르면, 뉴럴 네트워크에서 프로세싱 엘리먼트의 동작 방법이 제공된다. 상기 동작 방법은, 제1 멀티플렉서에 의해, 제1 레지스터에 저장되어 있는 제1 값과 제1 데이터 입력 신호 중 상기 제1 데이터 입력 신호를 선택하는 단계, 제2 멀티플렉서에 의해, 상기 제1 값과 제2 데이터 입력 신호 중 상기 제2 데이터 입력 신호를 선택하는 단계, 상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제2 값을 생성하는 단계, 그리고 상기 제1 레지스터에 상기 제2 값을 저장하는 단계를 포함할 수 있다.
상기 동작 방법은, 상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제3 값을 생성하는 단계, 상기 제3 값과 상기 제4 값을 더한 값인 제5 값을 생성하는 단계, 그리고 상기 제1 레지스터에 상기 제5 값을 저장하는 단계를 더 포함할 수 있다.
상기 제1 데이터 입력 신호 및 상기 제2 데이터 입력 신호는 상기 프로세싱 엘리먼트에 이웃하는 프로세싱 엘리먼트들로부터 각각 입력되는 데이터일 수 있다.
본 발명의 실시예에 따른 프로세싱 엘리먼트는 다양한 뉴럴 네트워크 연산을 수행할 수 있다.
도 1은 본 발명의 실시예에 따른 시스톨릭 어레이(systolic array)를 나타내는 도면이다.
도 2는 본 발명의 실시예에 따른 복수의 PE간에 전달되는 신호를 나타내는 도면이다.
도 3은 본 발명의 실시예에 따른 PE의 내부 회로 구성을 나타내는 도면이다.
도 4a는 본 발명의 실시예에 따른 PE의 곱셈 연산에 대한 동작을 나타내는 도면이다.
도 4b는 본 발명의 실시예에 따른 PE의 곱셈 및 덧셈 연산에 대한 동작을 나타내는 도면이다.
도 5는 본 발명의 실시예에 따른 PE의 정규화 및 바이어스 연산에 대한 동작을 나타내는 도면이다.
도 6은 본 발명의 실시예에 따른 PE의 정규화 연산에 대한 동작을 나타내는 도면이다.
도 7은 본 발명의 실시예에 따른 PE의 ReLU 함수 및 맥스 풀 연산에 대한 동작을 나타내는 도면이다.
도 8은 ReLU 함수를 나타내는 그래프이다.
도 9는 본 발명의 실시예에 따른 PE의 맥스 풀 연산 및 플러쉬 데이터 동작을 나타내는 도면이다.
도 10은 본 발명의 실시예에 따른 출력 데이터 전달 동작을 나타내는 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시예에 따른 시스톨릭 어레이(systolic array)를 나타내는 도면이다. 더욱 상세히 설명하면, 도 1은 컨벌루션 뉴럴 망(Convolution Neural Network, CNN) 연산에 사용되는 시스톨릴 어레이를 나타내는 도면이다.
도 1에 나타낸 바와 같이, 시스톨릴 어레이는 복수의 프로세싱 엘리먼트(Processing Element, PE)(1000)를 포함하며, 복수의 PE(1000)가 어레이(Array) 형태로 연결되어 있다. 복수의 PE(1000)는 어레이 형태로 연결되어, 이웃 PE 간의 데이터를 주고받으며 연산을 수행한다. 입력 데이터(2000)는 웨이트(Weight) 값으로서 컨벌류션 연산하기 전에 미리 정해진 값일 수 있으며, 입력 데이터(3000)는 연산하기 위한 오디오 또는 이미지의 값일 수 있다.
시스톨릴 어레이 내부적으로는 각 PE(1000)간의 데이터 전달을 통해 데이터 재사용(data reuse)이 수행되어, 중복되는 메모리 액세스(memory access)를 최소화 할 수 있다. 주기적으로 데이터의 이동이 이루어 지고 주기적으로 출력이 이루어지는 플러쉬(Flush) 방식이 사용될 수 있다. 한편, 시스톨릭 어레이의 입출력 데이터 전달 방향과 PE 간의 데이터 전달 전달 방향은 연산될 알고리즘의 데이터 입출력 설계(scheme)에 따라 결정될 수 있다.
도 2는 본 발명의 실시예에 따른 복수의 PE(1000)간에 전달되는 신호를 나타내는 도면이다.
각 PE(1000)는 제1 데이터 입력 신호(A_in), 제2 데이터 입력 신호(B_in), 그리고 제3 데이터 입력 신호(Z_in)를 입력 받는다. 제1 데이터 입력 신호(A_in)는 좌측 PE 또는 입력 데이터(3000)로부터 입력되는 데이터 신호이며, 제2 데이터 입력 신호(B_in)는 상측 PE 또는 입력 데이터(2000)로부터 입력되는 데이터 신호이다. 그리고 제3 데이터 입력 신호(Z_in)은 우측 PE로부터 입력되는 데이터 신호이다.
각 PE(1000)는 제1 데이터 출력 신호(A_out), 제2 데이터 출력 신호(B_out), 그리고 제3 데이터 출력 신호(Z_out)를 출력한다. 제1 데이터 출력 신호(A_out)는 우측 PE로 출력되는 데이터 신호이며, 제2 데이터 출력 신호(B_out)은 하측 PE로 출력되는 데이터 신호이다. 그리고 제3 데이터 출력 신호(Z_out)는 좌측 PE로 출력되는 데이터 신호이다.
그리고 각 PE(1000)는 제어부(도시하지 않음) 또는 좌측 PE로부터 제어 입력 신호(Cntrl_in)를 입력 받으며 우측 PE로 제어 출력 신호(Cntrl_out)를 출력한다.
도 3은 본 발명의 실시예에 따른 PE(1000)의 내부 회로 구성을 나타내는 도면이다.
도 3에 나타낸 바와 같이, 본 발명의 실시예에 따른 PE(1000)는 복수의 멀티플렉서(multiplexer)(100, 110, 120, 130, 140, 150, 160, 180), 디멀티플렉서(demultiplexer)(170), 비교기(200), 곱셈기(300), 덧셈/최대값 계산기(400), 그리고 복수의 레지스터(500, 510, 520, 530, 540, 550, 560, 570)를 포함한다. 본 발명의 실시예에서는 데이터를 저장하는 소자로서 편의상 레지스터로 설명하나 다른 메모리 소자가 사용될 수 있다.
복수의 멀티플렉서(100, 110, 120, 130, 140, 150, 160, 180) 및 디멀티플렉서(170)는 제어 신호를 통해 제어된다. 아래의 표 1은 CNN 연산 동작을 수행하기 위한 복수의 멀티플렉서(100, 110, 120, 130, 140, 150, 160, 180) 및 디멀티플렉서(170)의 제어 신호(Control Signal)및 이의 동작 방법을 나타낸다. 표 1의 제어 신호는 별도의 제어부(도시 하지 않음)에 의해 제공될 수 있다.
도 3 및 표 1을 참조하면, 멀티플렉서(100)는 제어신호(mul_a_sel)에 의해 제어되며 곱셈기(300)의 곱셈 동작을 위해 제1 데이터 입력 신호(A_in)와 멀티플렉스(130)의 출력 값 중에서 하나를 선택한 후 곱셈기(300)로 출력한다. 멀티플렉서(110)는 제어신호(mul_b_sel)에 의해 제어되며 곱셈기(300)의 동작을 위해 멀티플렉스(130)의 출력과 제2 데이터 입력 신호(B_in) 중에서 하나를 선택한 후 곱셈기(300)로 출력한다.
멀티플렉서(130)는 제어신호(z_mul_in_sel)에 의해 제어되며 곱셈기(300)의 곱셈 동작을 위해 레지스터(Z0_reg)(550)의 값과 레지스터(Z1_reg)(560)의 값 중에서 하나를 선택한 후 비교기(200) 및 멀티플렉서(100)로 출력한다.
멀티플렉서(120)는 제어신호(P_reg_in_sel)에 의해 제어되며 레지스터(P_reg)(500)에 데이터를 저장하기 위해 곱셈기(300)의 출력 값, 멀티플렉서(100)의 출력 값, 그리고 비교기(200)의 출력 값 중에서 하나를 선택한 후 레지스터(500)로 출력한다.
비교기(200)는 멀티플렉서(130)을 출력(즉, 레지스터(550) 또는 레지스터(560)에 저장된 값)을 소정의 기준 값(예를 들면, 0)과 비교하여 기준 값보다 큰지 작은지에 대한 정보를 멀티플렉서(120)로 출력한다. 표 1을 참조하면, 멀티플렉서(120)의 제어신호(P_reg_in_sel)가 2(즉, 10)로 설정되고 멀티플렉서(130)의 출력이 기준 값(0)보다 큰 경우, 멀티플렉서(120)는 멀티플렉서(100)의 출력 값을 선택하여 출력한다. 멀티플렉서(120)의 제어신호(P_reg_in_sel)가 2로 설정되고 멀티플렉서(130)의 출력이 기준 값(0)보다 작은 경우, 멀티플렉서(120)는 곱셈기(300)의 출력 값을 선택하여 출력한다.
멀티플렉서(140)는 제어신호(add_in_a_sel)에 의해 제어되며 덧셈/최대값 계산기(400)의 동작을 위해 복수의 레지스터(550, 560, 500) 값 중에서 하나를 선택한 후 덧셈/최대값 계산기(400)로 출력한다. 여기서, 제어신호(add_in_a_sel)가 2로 설정된 경우 멀티플렉서(140)는 레지스터(500)의 값을 선택하여 출력하며 제어신호(add_in_a_sel)가 3으로 설정된 경우 멀티플렉서(140)는 레지스터(500)의 값에 대해서 음수(-)를 취한 후(즉, -P_reg) 출력한다.
멀티플렉서(150)는 제어신호(add_in_b_sel)에 의해 제어되며 덧셈/최대값 계산기(400)의 동작을 위해 복수의 레지스터(550, 560, 510) 값 중에서 하나를 선택한 후 덧셈/최대값 계산기(400)로 출력한다. 여기서, 제어신호(add_in_a_sel)가 2로 설정된 경우 멀티플렉서(150)는 레지스터(510)의 값을 선택하여 출력하며 제어신호(add_in_a_sel)가 3으로 설정된 경우 멀티플렉서(150)는 레지스터(510)의 값에 대해서 음수(-)를 취한 후(즉, -B_reg) 출력한다.
덧셈/최대값 계산기(400)는 덧셈 동작 또는 최대 값 계산을 수행하여 뎃셈 값 또는 최대 값을 출력한다. 덧셈/최대값 계산기(400)는 멀티플렉서(140)의 출력 값과 멀티플렉서(150)의 출력 값을 더한 후 더한 값(sum)을 멀티플렉서(160)로 출력한다. 그리고 덧셈/최대값 계산기(400)는 멀티플렉서(140)의 출력 값과 멀티플렉서(150)의 출력 값 중에서 큰 값을 취한 후 큰 값(즉, 최대 값(max))을 멀티플렉서(160)로 출력한다.
멀티플렉서(160)는 제어신호(z_sav_sel)에 의해 제어되며 덧셈/최대값 계산기(400)의 출력 값(sum, max), 레지스터(500)의 값, 그리고 레지스터(570)의 값 중에서 하나를 선택한 후 디멀티플렉서(demultiplexer)(170)로 출력한다.
디멀티플렉서(170)는 제어신호(z_wr_sel)에 의해 제어되며 멀티플렉서(160)의 출력 값을 레지스터(550) 또는 레지스터(560)에 저장한다.
그리고 멀티플렉서(180)는 제어신호(z_out_sel)에 의해 제어되며 0, 레지스터(550)의 값, 레지스터(560)의 값, 그리고 레지스터(570)의 값 중에서 하나를 선택한 후 제3 데이터 출력 신호(Z_out)로서 출력한다.
도 3에 나타낸 본 발명의 실시예에 따른 PE(1000)는 복수의 멀티플렉서들의 제어를 통해 프로그래밍 가능(programmable)하며 다양한 데이터 플로우 설계(scheme), 연산(operation), 알고리즘 등을 효율적으로 수행할 수 있다. 도 2 및 도 3에 나타낸 제어신호, 데이터 입력 신호, 데이터 출력 신호 등은 매 주기(cycle)마다 전달되며, 실제적인 연산은 2 주기(2cycle)가 소요될 수 있다.
이하에서는 도 4 내지 도 10를 참조하여 CNN 연산 시에 PE(1000)의 동작에 대해서 설명한다.
CNN 연산에 사용되는 연산은 i) 컨벌루션 연산, ii) 정규화(Normalization) 및 바이어스 연산, iii) 정규화 연산, iv) ReLU(Rectified Linear Unit) 함수 및 맥스 풀(Max Pool) 연산, v) 맥스 풀(Max Pool) 연산 및 플러쉬(Flush) 데이터, vi) 출력 데이터 전달을 포함한다.
먼저, 도 4a 및 도 4b를 참조하여 컨벌루션(convolution) 연산에 대해서 설명한다. 컨벌루션 연산은 곱셈 연산과 덧셈 연산으로 구성된다.
도 4a는 본 발명의 실시예에 따른 PE(1000)의 곱셈 연산에 대한 동작을 나타내는 도면이다. 도 4a에서 진하게 표시된 부분은 곱셈 연산 시의 신호 흐름을 나타낸다.
도 4a를 참조하면, 멀티플렉서(100)는 제1 데이터 입력 신호(A_in)를 출력하고, 멀티플렉서(110)는 제2 데이터 입력 신호(B_in)를 출력한다. 곱셈기(300)는 제1 데이터 입력 신호(A_in)와 제2 데이터 입력 신호(B_in)을 곱하며, 곱한 값은 멀티플렉서(120)를 통해 레지스터(500)에 저장된다. 그리고 레지스터(500)에 저장된 값은 멀티플렉서(160) 및 디멀티플렉서(170)를 통해 레지스터(550)에 저장된다.
한편, 제1 데이터 입력 신호(A_in)은 레지스터(520)에 저장되며, 레지스터(520)에 저장된 값은 제1 데이터 출력 신호(A_out)로 출력된다. 제2 데이터 입력 신호(B_in)는 레지스터(510)에 저장되며, 레지스터(510)에 저장된 값은 제2 데이터 출력 신호(B_out)로 출력된다.
그리고 제어 입력 신호(cntrl_in)는 레지스터(530)에 저장되며, 레지스터(530)에 저장된 값은 제어 출력 신호(cntrl_out)로 출력된다. 그리고 레지스터(530)에 저장된 값은 레지스터(540)에 저장된다.
도 4b는 본 발명의 실시예에 따른 PE(1000)의 곱셈 및 덧셈 연산에 대한 동작을 나타내는 도면이다. 도 4b에서 진하게 표시된 부분은 곱셈 및 덧셈 연산 시의 신호 흐름을 나타낸다.
도 4b를 참조하면, 곱셈 연산 시의 동작은 도 4a에서 설명한 부분과 동일하다. 즉, 곱셈기(300)는 제1 데이터 입력 신호(A_in)과 제2 데이터 입력 신호(B_in)를 곱하며, 곱한 값은 레지스터(500)에 저장된다.
멀티플렉서(140)는 레지스터(500)에 저장된 값을 덧셈/최대값 계산기(400)로 출력하고 멀티플렉서(150)는 레지스터(550)에 저장된 값을 덧셈/최대값 계산기(400)로 출력한다.
덧셈/최대값 계산기(400)는 입력 되는 두 값을 더하며, 더한 값은 멀티플렉서(160) 및 디멀티플렉서(170)를 통해 레지스터(550)에 새롭게 저장된다. 즉, 레지스터(550)에 저장되는 값은 도 4a의 동작을 통해 계산된 값에서 도 4b의 동작을 통해 계산된 값으로 대체된다.
도 5를 참조하여, 정규화 및 바이어스 연산에 대해서 설명한다. 정규화 및 바이어스 연산은 덧셈 동작을 통해 구현될 수 있다.
도 5는 본 발명의 실시예에 따른 PE(1000)의 정규화 및 바이어스 연산에 대한 동작을 나타내는 도면이다. 도 5에서 진하게 표시된 부분은 정규화 및 바이어스 연산 시의 신호 흐름을 나타낸다.
도 5를 참조하면, 제2 데이터 입력 신호(B_in)는 레지스터(510) 및 멀티플렉서(150)를 통해 덧셈/최대값 계산기(400)로 입력된다. 그리고 레지스터(550)에 저장되어 있던 값은 멀티플렉스(140)를 통해 덧셈/최대값 계산기(400)로 입력된다.
덧셈/최대값 계산기(400)는 입력되는 두 값을 더하며, 더한 값은 멀티플렉서(160) 및 디멀티플렉서(170)를 통해 레지스터(550)에 새롭게 저장된다.
한편, 제어 입력 신호(cntrl_in)는 레지스터(530)에 저장되며, 레지스터(530)에 저장된 값은 제어 출력 신호(cntrl_out)로 출력된다. 그리고 레지스터(530)에 저장된 값은 레지스터(540)에 저장된다.
도 6을 참조하여, 정규화 연산에 대해서 설명한다. 정규화 연산은 곱셈 동작을 통해 구현될 수 있다.
도 6은 본 발명의 실시예에 따른 PE(1000)의 정규화 연산에 대한 동작을 나타내는 도면이다. 도 6에서 진하게 표시된 부분은 정규화 연산 시의 신호 흐름을 나타낸다.
도 6을 참조하면, 제2 데이터 입력 신호(B_in)는 멀티플렉서(110)를 통해 곱셈기(300)로 입력된다. 그리고 레지스터(550)에 저장되어 있던 값은 멀티플렉서(130) 및 멀티플렉서(100)를 통해 곱셈기(300)로 입력된다.
곱셈기(300)는 입력되는 두 값을 곱하며, 곱한 값은 멀티플렉서(120)를 통해 레지스터(500)에 저장된다. 그리고 레지스터(500)에 저장된 값은 멀티플렉서(160) 및 디멀티플렉서(170)를 통해 레지스터(550)에 새롭게 저장된다.
한편, 제2 데이터 입력 신호(B_in)는 레지스터(510)에 저장되며, 레지스터(510)에 저장된 값은 제2 데이터 출력 신호(B_out)로서 출력된다. 제어 입력 신호(cntrl_in)는 레지스터(530)에 저장되며, 레지스터(530)에 저장된 값은 제어 출력 신호(cntrl_out)로 출력된다. 그리고 레지스터(530)에 저장된 값은 레지스터(540)에 저장된다.
도 7을 참조하여, ReLU 함수 및 맥스 풀(Max Pool) 연산에 대해서 설명한다. ReLU 함수는 아래의 수학식 1과 같다.
도 8은 ReLU 함수를 나타내는 그래프이다. 도 8에 나타낸 바와 같이, ReLU 함수는 음수의 입력(z)에 대해서 출력을 '0'으로 고정한다.
도 7은 본 발명의 실시예에 따른 PE(1000)의 ReLU 함수 및 맥스 풀 연산에 대한 동작을 나타내는 도면이다. 도 7에서 진하게 표시된 부분은 ReLU 함수 및 맥스 풀 연산 시의 신호 흐름을 나타낸다.
도 7에서, 레지스터(560)는 이미 계산된 값이 미리 저장되어 있는 것으로 가정한다.
도 7을 참조하면, 제2 데이터 입력 신호(B_in)는 '0'의 값이다. 0의 값인 제2 데이터 입력 신호(B_in)은 멀티플렉서(110)을 통해 곱셈기(300)로 입력된다. 그리고 레지스터(550)에 저장되어 있던 값('Z0'라 함)은 멀티플렉서(130)를 통해 비교기(200)로 입력되고, 레지스터(550)에 저장되어 있던 값(Z0)은 멀티플렉서(130) 및 멀티플렉서(100)를 통해 곱셈기(300) 및 멀티플렉서(120)로 입력된다.
비교기(200)는 입력되는 값(즉, 레지스터(550)에 저장되어 있던 값 Z0)과 기준 값(0)을 비교하여 기준 값(0)보다 큰지 작은지에 대한 정보를 멀티플렉서(120)로 출력한다. 곱셈기(300)는 입력되는 두 신호를 곱한 후 곱한 값(즉, 0)을 멀티플렉서(120)로 출력한다.
그리고 Z0 > 0 인 경우, 멀티플렉서(120)는 멀티플렉서(100)의 출력 신호(즉, Z0)를 출력한다. Z0 < 0 인 경우, 멀티플렉서(120)는 곱셈기(300)의 출력 신호(즉, 0)를 출력한다. 멀티플렉서(120)의 출력 값은 레지스터(500)에 저장되며, 레지스터(500)에 저장된 값은 멀티플렉서(140)를 통해 덧셈/최대값 계산기(400)로 입력된다. 한편, 레지스터(560)에 미리 저장되어 있던 값은 멀티플렉서(150)를 통해 덧셈/최대값 계산기(400)로 입력된다.
덧셈/최대값 계산기(400)는 멀티플렉서(140)의 출력 값과 멀티플렉서(150)의 출력 값 중에서 큰 값(max)을 출력하며, 이 값은 멀티플렉서(160) 및 디멀티플렉서(170)를 통해 레지스터(550)에 새롭게 저장된다.
도 9를 참조하여, 맥스 풀 연산 및 플러쉬 데이터 동작에 대해서 설명한다.
도 9는 본 발명의 실시예에 따른 PE(1000)의 맥스 풀 연산 및 플러쉬 데이터 동작을 나타내는 도면이다. 도 9에서 진하게 표시된 부분은 맥스 풀 연산 및 플러쉬 데이터 동작 시의 신호 흐름을 나타낸다.
도 9에서, 레지스터(560)에는 이미 계산된 값('Z1'이라 함)이 미리 저장되어 있는 것으로 가정한다.
제1 데이터 입력 신호(A_in)는 멀티플렉서(100), 멀티플렉서(120), 레지스터(500), 그리고 멀티플렉서(140)를 통해 덧셈/최대값 계산기(400)로 입력된다. 그리고 레지스터(560)에 저장되어 있던 값(Z1)은 멀티플렉서(150)를 통해 덧셈/최대값 계산기(400)로 입력된다.
덧셈/최대값 계산기(400)는 멀티플렉서(140)의 출력 값과 멀티틀렉서(150)의 출력 값 중에서 큰 값(max)을 출력하며, 이 값은 멀티플렉서(160) 및 디멀티플렉서(170)를 통해 레지스터(560)에 새롭게 저장된다. 그리고 레지스터(560)에 새롭게 저장된 값은 멀티플렉서(180)를 통해 제3 데이터 출력 신호(Z_out)로서 출력된다. 여기서, 제3 데이터 출력 신호(Z_out)는 이웃하는 PE(1000)로 전달되는 데이터이다.
도 10을 참조하여, 출력 데이터 전달 동작에 대해서 설명한다.
도 10은 본 발명의 실시예에 따른 출력 데이터 전달 동작을 나타내는 도면이다. 도 10에서 진하게 표시된 부분은 출력 데이터 전달 동작 시의 신호 흐름을 나타낸다.
도 10을 참조하면, 제3 데이터 입력 신호(Z_in)은 레지스터(570)에 저장되며, 레지스터(570)에 저장되어 있는 값은 멀티플렉서(180)을 통해 제3 데이터 출력 신호(Z_out)로서 출력된다. 여기서, 제3 데이터 출력 신호(Z_out)는 이웃하는 PE(1000)로 플러쉬 아웃(flush out)되는 데이터이다.
도 4 내지 도 10에 설명한 바와 같이 본 발명의 실시예에 따른 PE(1000)는 CNN 연산 동작을 수행할 수 있다. 그리고 본 발명의 실시예에 따른 PE(1000)는 복수의 멀티플렉서의 제어 신호를 프로그래밍하여 뉴럴 네트워크에서 필요한 연산 종류의 대부분을 수행할 수 있다. 즉, 본 발명의 실시예에 따른 PE(1000)는 반복 뉴럴 네트워크(Recurrent Neural Network)의 종류인 LSTM(Long Short Term Memory)에 필요한 연산도 수행할 수 있다. LSTM에 필요한 연산을 수행하는 구체적인 방법은 도 3에서 설명한 PE(1000)를 통해 본 발명이 속하는 기술 분야에 통상의 지식을 가진 자라면 알 수 있는 바 구체적인 설명은 생략한다. 한편, 본 발명의 실시예에 따른 PE(1000)는 애플리케이션에 따라 다양하게 설정될 수 있다. 그리고 본 발명의 실시예에 따른 PE(1000)는 CNN의 메모리 주파수 병목(memory bandwidth bottleneck)을 시스톨릭한 디자인의 데이터 재사용(data reuse)를 통해 해결함으로써, AI(Artificial Intelligence) 적용을 위한 병렬 연산 및 효율성 있는 컴퓨팅 플랫폼을 제공할 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 뉴럴 네트워크에서의 프로세싱 엘리먼트로서,
    제1 메모리에 저장되어 있는 제1 값과 제2 메모리에 저장되어 있는 제2 값 중에서 하나를 선택하여 출력하는 제1 멀티플렉서,
    제1 데이터 입력 신호와 상기 제1 멀티플렉서의 출력 값 중에서 하나를 선택하여 출력하는 제2 멀티플렉서,
    상기 제1 멀티플렉서의 출력 값과 제2 데이터 입력 신호 중 하나를 선택하여 출력하는 제3 멀티플렉서,
    상기 제2 멀티플렉서의 출력 값과 상기 제3 멀티플렉서의 출력 값을 곱하는 곱셈기,
    상기 제2 멀티플렉서의 출력 값과 상기 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 제4 멀티플렉서, 그리고
    상기 제4 멀티플렉서의 출력 값을 저장하는 제3 메모리를 포함하는 프로세싱 엘리먼트.
  2. 제1항에 있어서,
    상기 제1 값, 상기 제2 값, 그리고 상기 제3 메모리에 저장되어 있는 제3 값 중에서 하나를 선택하여 출력하는 제5 멀티플렉서, 그리고
    상기 제1 값, 상기 제2 값, 그리고 상기 제2 데이터 입력 신호 중에서 하나를 선택하여 출력하는 제6 멀티플렉서를 더 포함하는 프로세싱 엘리먼트.
  3. 제2항에 있어서,
    상기 제5 멀티플렉서의 출력 값과 상기 제6 멀티플렉서의 출력 값을 더하거나 최대 값을 획득하는 덧셈/최대값 계산기를 더 포함하며,
    상기 덧셈/최대값 계산기의 출력 값은 상기 제1 메모리 및 상기 제2 메모리 중 하나에 저장되는 프로세싱 엘리먼트.
  4. 제3항에 있어서,
    상기 더한 값, 상기 최대 값, 그리고 상기 제3 값 중 하나를 선택하여 출력하는 제7 멀티플렉서, 그리고
    상기 제7 멀티플렉서의 출력 값을 상기 제1 메모리 및 상기 제2 메모리 중 하나에 저장하는 디멀티플렉서를 더 포함하는 프로세싱 엘리먼트.
  5. 제4항에 있어서,
    상기 제1 값과 상기 제2 값 중에서 하나를 선택하여 상기 프로세싱 엘리먼트에 이웃하는 프로세싱 엘리먼트로 출력하는 제8 멀티플렉서를 더 포함하는 프로세싱 엘리먼트.
  6. 제1항에 있어서,
    상기 제1 멀티플렉서의 출력 값을 소정의 기준 값과 비교하고 비교 결과 값을 상기 제4 멀티플렉서로 출력하는 비교기를 더 포함하는 프로세싱 엘리먼트.
  7. 제6항에 있어서,
    상기 제4 멀티플렉서는 상기 비교 결과 값에 따라 상기 제2 멀티플렉서의 출력 값과 상기 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 프로세싱 엘리먼트.
  8. 제3항에 있어서,
    상기 제2 멀티플렉서는 상기 제1 데이터 입력 신호를 출력하고 상기 제3 멀티플렉서는 상기 제2 데이터 입력 신호를 출력하며,
    상기 곱셈기는 상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제3 값을 출력하며,
    상기 제3 값은 상기 제1 메모리에 저장되는 프로세싱 엘리먼트.
  9. 제8항에 있어서,
    상기 곱셈기는 상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제4 값을 출력하며,
    상기 제5 멀티플렉서는 상기 제4 값을 출력하고 상기 제6 멀티플렉서는 상기 제 3값을 출력하며,
    상기 덧셈/최대값 계산기는 상기 제4 값과 상기 제3 값을 더한 값인 제5 값을 출력하며,
    상기 제5 값은 상기 제1 메모리에 새롭게 저장되는 프로세싱 엘리먼트.
  10. 제3항에 있어서,
    상기 제5 멀티플렉서는 상기 제1 값을 출력하고, 상기 제6 멀티플렉서는 상기 제2 데이터 입력 신호를 출력하며,
    상기 덧셈/최대값 계산기는 상기 제1 값과 상기 제2 데이터 입력 신호를 더한 값인 제3 값을 출력하며,
    상기 제3 값은 상기 제1 메모리에 새롭게 저장되는 프로세싱 엘리먼트.
  11. 제2항에 있어서,
    상기 제1 멀티플렉서는 상기 제1 값을 출력하고, 상기 제2 멀티플렉서는 상기 제1 값을 출력하고, 상기 제3 멀티플렉서는 상기 제2 데이터 입력 신호를 선택하여 출력하며,
    상기 곱셈기는 상기 제1 값과 상기 제2 데이터 입력 신호를 곱한 값인 제3 값을 출력하며,
    상기 제3 값은 상기 제1 메모리에 새롭게 저장되는 프로세싱 엘리먼트.
  12. 제3항에 있어서,
    상기 제1 멀티플렉서는 상기 제1 값을 출력하고, 상기 제2 멀티플렉서는 상기 제1 값을 출력하고, 상기 제3 멀티플렉서는 0의 값인 상기 제2 데이터 입력 신호를 출력하며,
    상기 곱셈기는 상기 제1 값과 0을 곱한 값인 0의 값을 출력하며,
    상기 제4 멀티플렉서는 상기 제1 값이 0보다 큰 경우 상기 제1 값을 출력하고 상기 제1 값이 상기 0보다 작은 경우 0을 출력하며,
    상기 제5 멀티플렉서는 상기 제4 멀티플렉서의 출력 값을 출력하고, 상기 제6 멀티플렉서는 상기 제2 값을 출력하며,
    상기 덧셈/최대값 계산기는 상기 제4 멀티플렉서의 출력 값과 상기 제2 값 중에서 큰 값인 제3 값을 출력하며,
    상기 제3 값은 상기 제1 메모리에 새롭게 저장되는 프로세싱 엘리먼트.
  13. 제3항에 있어서,
    상기 제1 데이터 입력 신호는 상기 제5 멀티플렉서를 통해 상기 덧셈/최대값 계산기에 입력되고 상기 제2 값은 상기 제6 멀티플렉서를 통해 상기 덧셈/최대값 계산기에 입력되며,
    상기 덧셈/최대값 계산기는 상기 제1 데이터 입력 신호와 상기 제2 값 중에서 큰 값인 제3 값을 출력하며,
    상기 제3 값은 상기 프로세싱 엘리먼트에 이웃한 프로세싱 엘리먼트로 전달되는 프로세싱 엘리먼트.
  14. 제1항에 있어서,
    상기 제1 메모리, 상기 제2 메모리, 그리고 상기 제3 메모리는 레지스터인 프로세싱 엘리먼트.
  15. 뉴럴 네트워크에서 연산을 수행하는 프로세싱 엘리먼트로서,
    제1 메모리에 저장되어 있는 제1 값과 제1 데이터 입력 신호 중에서 상기 제1 값을 선택하여 출력하는 제1 멀티플렉서,
    상기 제1 값과 제2 데이터 입력 신호 중 상기 제2 데이터 입력 신호를 선택하여 출력하는 제2 멀티플렉서,
    상기 제1 값과 상기 제2 멀티플렉서의 출력 값을 곱하는 곱셈기,
    상기 제1 값을 소정의 기준 값과 비교하는 비교기, 그리고
    상기 비교기의 비교 결과에 따라 상기 제1 멀티플렉서의 출력 값과 상기 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 제3 멀티플렉서를 포함하는 프로세싱 엘리먼트.
  16. 제15항에 있어서,
    상기 제3 멀티플렉서의 출력 값과 제2 메모리에 저장되어 있는 제2 값 중 큰 값을 획득하는 최대값 계산기를 더 포함하며,
    상기 최대값 계산기의 출력 값은 상기 제1 메모리에 새롭게 저장되는 프로세싱 엘리먼트.
  17. 제15항에 있어서,
    상기 기준 값은 0이며, 상기 제2 데이터 입력 신호는 0인 프로세싱 엘리먼트.
  18. 뉴럴 네트워크에서 프로세싱 엘리먼트의 동작 방법으로서,
    제1 멀티플렉서에 의해, 제1 레지스터에 저장되어 있는 제1 값과 제1 데이터 입력 신호 중 상기 제1 데이터 입력 신호를 선택하는 단계,
    제2 멀티플렉서에 의해, 상기 제1 값과 제2 데이터 입력 신호 중 상기 제2 데이터 입력 신호를 선택하는 단계,
    상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제2 값을 생성하는 단계, 그리고
    상기 제1 레지스터에 상기 제2 값을 저장하는 단계를 포함하는 동작 방법.
  19. 삭제
  20. 삭제
KR1020180150840A 2017-12-01 2018-11-29 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법 KR102610842B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/206,687 US11494623B2 (en) 2017-12-01 2018-11-30 Processing element and operating method thereof in neural network

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170164173 2017-12-01
KR20170164173 2017-12-01

Publications (2)

Publication Number Publication Date
KR20190065144A KR20190065144A (ko) 2019-06-11
KR102610842B1 true KR102610842B1 (ko) 2023-12-07

Family

ID=66846841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180150840A KR102610842B1 (ko) 2017-12-01 2018-11-29 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법

Country Status (2)

Country Link
US (1) US11494623B2 (ko)
KR (1) KR102610842B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11144824B2 (en) * 2019-01-29 2021-10-12 Silicon Storage Technology, Inc. Algorithms and circuitry for verifying a value stored during a programming operation of a non-volatile memory cell in an analog neural memory in deep learning artificial neural network
CN112667288A (zh) * 2019-10-15 2021-04-16 北京希姆计算科技有限公司 数据运算电路、数据处理装置、芯片、卡板及电子设备
CN111275180B (zh) * 2020-02-28 2023-04-07 西安微电子技术研究所 一种降低深度神经网络数据迁移及功耗的卷积运算结构
KR102272518B1 (ko) 2020-03-13 2021-07-05 인천대학교 산학협력단 시스톨릭 어레이 장치
KR20220015680A (ko) 2020-07-31 2022-02-08 삼성전자주식회사 딥러닝 연산 수행 방법 및 장치
EP4012618A1 (en) 2020-12-08 2022-06-15 Electronics and Telecommunications Research Institute Artificial intelligence processor and method of processing deep-learning operation using the same

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2703010B2 (ja) 1988-12-23 1998-01-26 株式会社日立製作所 ニユーラルネツト信号処理プロセツサ
KR970007006B1 (ko) 1993-08-31 1997-05-01 한국전자통신연구원 인공 신경 회로와 패턴 분리 및 인식용 발진 신경 망의 구조
KR101001296B1 (ko) 2008-11-04 2010-12-14 한국전자통신연구원 3차원 신경회로망 구현장치
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US9805303B2 (en) 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US20160358069A1 (en) * 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
KR102325602B1 (ko) * 2015-07-06 2021-11-12 삼성전자주식회사 데이터를 병렬적으로 처리하는 장치 및 방법
US10037192B2 (en) * 2015-10-21 2018-07-31 Altera Corporation Methods and apparatus for performing product series operations in multiplier accumulator blocks
KR20180012439A (ko) 2016-07-27 2018-02-06 삼성전자주식회사 회선 신경망에서 가속기 및 이의 동작 방법
US10089078B2 (en) * 2016-09-23 2018-10-02 Stmicroelectronics S.R.L. Circuit for performing a multiply-and-accumulate operation
JP2018156266A (ja) * 2017-03-16 2018-10-04 富士通株式会社 演算器および演算器の制御方法

Also Published As

Publication number Publication date
US20190244084A1 (en) 2019-08-08
US11494623B2 (en) 2022-11-08
KR20190065144A (ko) 2019-06-11

Similar Documents

Publication Publication Date Title
KR102610842B1 (ko) 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법
KR102492477B1 (ko) 행렬 곱셈기
CN107578098B (zh) 基于脉动阵列的神经网络处理器
Ma et al. Scalable and modularized RTL compilation of convolutional neural networks onto FPGA
US20180260710A1 (en) Calculating device and method for a sparsely connected artificial neural network
CN105892989B (zh) 一种神经网络加速器及其运算方法
US20170316312A1 (en) Systems and methods for deep learning processor
WO2022170997A1 (zh) 基于risc-v指令集进行数据处理的方法、系统、设备及介质
CN110036369A (zh) 一种计算方法及相关产品
KR101788829B1 (ko) 콘볼루션 신경망 컴퓨팅 장치
CN111897579A (zh) 图像数据处理方法、装置、计算机设备和存储介质
KR20160142791A (ko) 뉴럴 네트워크 실시 방법 및 장치
CN111105023B (zh) 数据流重构方法及可重构数据流处理器
Chen et al. Zara: A novel zero-free dataflow accelerator for generative adversarial networks in 3d reram
JP2021509747A (ja) ハードウェアベースのプーリングのシステムおよび方法
Meng et al. Accelerating proximal policy optimization on cpu-fpga heterogeneous platforms
Zhao et al. mrna: Enabling efficient mapping space exploration for a reconfiguration neural accelerator
US9939792B2 (en) Systems and methods to adaptively select execution modes
CN108304925B (zh) 一种池化计算装置及方法
Geng et al. O3BNN: An out-of-order architecture for high-performance binarized neural network inference with fine-grained pruning
CN110580519B (zh) 一种卷积运算装置及其方法
CN108334944B (zh) 一种人工神经网络运算的装置及方法
CN110766128A (zh) 卷积计算单元、计算方法及神经网络计算平台
US20200160161A1 (en) Deep neural network accelerator including lookup table based bit-serial processing elements
Niu et al. SPEC2: Spectral sparse CNN accelerator on FPGAs

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right