KR102610842B1 - 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법 - Google Patents
뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법 Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 48
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 21
- 238000011017 operating method Methods 0.000 title description 4
- 230000015654 memory Effects 0.000 claims abstract description 44
- 238000000034 method Methods 0.000 claims abstract description 8
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 21
- 238000010606 normalization Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 7
- 238000013473 artificial intelligence Methods 0.000 description 3
- 210000004556 brain Anatomy 0.000 description 2
- 241000282412 Homo Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법이 개시된다. 프로세싱 엘리먼트는, 제1 메모리에 저장되어 있는 제1 값과 제2 메모리에 저장되어 있는 제2 값 중에서 하나를 선택하여 출력하는 제1 멀티플렉서, 제1 데이터 입력 신호와 제1 멀티플렉서의 출력 값 중에서 하나를 선택하여 출력하는 제2 멀티플렉서, 상기 제1 멀티플렉서의 출력 값과 제2 데이터 입력 신호 중 하나를 선택하여 출력하는 제3 멀티플렉서, 제2 멀티플렉서의 출력 값과 제3 멀티플렉서의 출력 값을 곱하는 곱셈기, 제2 멀티플렉서의 출력 값과 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 제4 멀티플렉서, 그리고 제4 멀티플렉서의 출력 값을 저장하는 제3 메모리를 포함할 수 있다.
Description
본 발명은 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법에 관한 것이다.
뉴럴 네트워크(신경망)(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은 본 발명의 실시예에 따른 출력 데이터 전달 동작을 나타내는 도면이다.
도 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 값과 제2 메모리에 저장되어 있는 제2 값 중에서 하나를 선택하여 출력하는 제1 멀티플렉서,
제1 데이터 입력 신호와 상기 제1 멀티플렉서의 출력 값 중에서 하나를 선택하여 출력하는 제2 멀티플렉서,
상기 제1 멀티플렉서의 출력 값과 제2 데이터 입력 신호 중 하나를 선택하여 출력하는 제3 멀티플렉서,
상기 제2 멀티플렉서의 출력 값과 상기 제3 멀티플렉서의 출력 값을 곱하는 곱셈기,
상기 제2 멀티플렉서의 출력 값과 상기 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 제4 멀티플렉서, 그리고
상기 제4 멀티플렉서의 출력 값을 저장하는 제3 메모리를 포함하는 프로세싱 엘리먼트. - 제1항에 있어서,
상기 제1 값, 상기 제2 값, 그리고 상기 제3 메모리에 저장되어 있는 제3 값 중에서 하나를 선택하여 출력하는 제5 멀티플렉서, 그리고
상기 제1 값, 상기 제2 값, 그리고 상기 제2 데이터 입력 신호 중에서 하나를 선택하여 출력하는 제6 멀티플렉서를 더 포함하는 프로세싱 엘리먼트. - 제2항에 있어서,
상기 제5 멀티플렉서의 출력 값과 상기 제6 멀티플렉서의 출력 값을 더하거나 최대 값을 획득하는 덧셈/최대값 계산기를 더 포함하며,
상기 덧셈/최대값 계산기의 출력 값은 상기 제1 메모리 및 상기 제2 메모리 중 하나에 저장되는 프로세싱 엘리먼트. - 제3항에 있어서,
상기 더한 값, 상기 최대 값, 그리고 상기 제3 값 중 하나를 선택하여 출력하는 제7 멀티플렉서, 그리고
상기 제7 멀티플렉서의 출력 값을 상기 제1 메모리 및 상기 제2 메모리 중 하나에 저장하는 디멀티플렉서를 더 포함하는 프로세싱 엘리먼트. - 제4항에 있어서,
상기 제1 값과 상기 제2 값 중에서 하나를 선택하여 상기 프로세싱 엘리먼트에 이웃하는 프로세싱 엘리먼트로 출력하는 제8 멀티플렉서를 더 포함하는 프로세싱 엘리먼트. - 제1항에 있어서,
상기 제1 멀티플렉서의 출력 값을 소정의 기준 값과 비교하고 비교 결과 값을 상기 제4 멀티플렉서로 출력하는 비교기를 더 포함하는 프로세싱 엘리먼트. - 제6항에 있어서,
상기 제4 멀티플렉서는 상기 비교 결과 값에 따라 상기 제2 멀티플렉서의 출력 값과 상기 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 프로세싱 엘리먼트. - 제3항에 있어서,
상기 제2 멀티플렉서는 상기 제1 데이터 입력 신호를 출력하고 상기 제3 멀티플렉서는 상기 제2 데이터 입력 신호를 출력하며,
상기 곱셈기는 상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제3 값을 출력하며,
상기 제3 값은 상기 제1 메모리에 저장되는 프로세싱 엘리먼트. - 제8항에 있어서,
상기 곱셈기는 상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제4 값을 출력하며,
상기 제5 멀티플렉서는 상기 제4 값을 출력하고 상기 제6 멀티플렉서는 상기 제 3값을 출력하며,
상기 덧셈/최대값 계산기는 상기 제4 값과 상기 제3 값을 더한 값인 제5 값을 출력하며,
상기 제5 값은 상기 제1 메모리에 새롭게 저장되는 프로세싱 엘리먼트. - 제3항에 있어서,
상기 제5 멀티플렉서는 상기 제1 값을 출력하고, 상기 제6 멀티플렉서는 상기 제2 데이터 입력 신호를 출력하며,
상기 덧셈/최대값 계산기는 상기 제1 값과 상기 제2 데이터 입력 신호를 더한 값인 제3 값을 출력하며,
상기 제3 값은 상기 제1 메모리에 새롭게 저장되는 프로세싱 엘리먼트. - 제2항에 있어서,
상기 제1 멀티플렉서는 상기 제1 값을 출력하고, 상기 제2 멀티플렉서는 상기 제1 값을 출력하고, 상기 제3 멀티플렉서는 상기 제2 데이터 입력 신호를 선택하여 출력하며,
상기 곱셈기는 상기 제1 값과 상기 제2 데이터 입력 신호를 곱한 값인 제3 값을 출력하며,
상기 제3 값은 상기 제1 메모리에 새롭게 저장되는 프로세싱 엘리먼트. - 제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 메모리에 새롭게 저장되는 프로세싱 엘리먼트. - 제3항에 있어서,
상기 제1 데이터 입력 신호는 상기 제5 멀티플렉서를 통해 상기 덧셈/최대값 계산기에 입력되고 상기 제2 값은 상기 제6 멀티플렉서를 통해 상기 덧셈/최대값 계산기에 입력되며,
상기 덧셈/최대값 계산기는 상기 제1 데이터 입력 신호와 상기 제2 값 중에서 큰 값인 제3 값을 출력하며,
상기 제3 값은 상기 프로세싱 엘리먼트에 이웃한 프로세싱 엘리먼트로 전달되는 프로세싱 엘리먼트. - 제1항에 있어서,
상기 제1 메모리, 상기 제2 메모리, 그리고 상기 제3 메모리는 레지스터인 프로세싱 엘리먼트. - 뉴럴 네트워크에서 연산을 수행하는 프로세싱 엘리먼트로서,
제1 메모리에 저장되어 있는 제1 값과 제1 데이터 입력 신호 중에서 상기 제1 값을 선택하여 출력하는 제1 멀티플렉서,
상기 제1 값과 제2 데이터 입력 신호 중 상기 제2 데이터 입력 신호를 선택하여 출력하는 제2 멀티플렉서,
상기 제1 값과 상기 제2 멀티플렉서의 출력 값을 곱하는 곱셈기,
상기 제1 값을 소정의 기준 값과 비교하는 비교기, 그리고
상기 비교기의 비교 결과에 따라 상기 제1 멀티플렉서의 출력 값과 상기 곱셈기의 출력 값 중에서 하나를 선택하여 출력하는 제3 멀티플렉서를 포함하는 프로세싱 엘리먼트. - 제15항에 있어서,
상기 제3 멀티플렉서의 출력 값과 제2 메모리에 저장되어 있는 제2 값 중 큰 값을 획득하는 최대값 계산기를 더 포함하며,
상기 최대값 계산기의 출력 값은 상기 제1 메모리에 새롭게 저장되는 프로세싱 엘리먼트. - 제15항에 있어서,
상기 기준 값은 0이며, 상기 제2 데이터 입력 신호는 0인 프로세싱 엘리먼트. - 뉴럴 네트워크에서 프로세싱 엘리먼트의 동작 방법으로서,
제1 멀티플렉서에 의해, 제1 레지스터에 저장되어 있는 제1 값과 제1 데이터 입력 신호 중 상기 제1 데이터 입력 신호를 선택하는 단계,
제2 멀티플렉서에 의해, 상기 제1 값과 제2 데이터 입력 신호 중 상기 제2 데이터 입력 신호를 선택하는 단계,
상기 제1 데이터 입력 신호와 상기 제2 데이터 입력 신호를 곱한 값인 제2 값을 생성하는 단계, 그리고
상기 제1 레지스터에 상기 제2 값을 저장하는 단계를 포함하는 동작 방법. - 삭제
- 삭제
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 |
---|---|---|---|
KR20170164173 | 2017-12-01 | ||
KR1020170164173 | 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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586898B2 (en) * | 2019-01-29 | 2023-02-21 | Silicon Storage Technology, Inc. | Precision programming circuit for 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)
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 | 富士通株式会社 | 演算器および演算器の制御方法 |
-
2018
- 2018-11-29 KR KR1020180150840A patent/KR102610842B1/ko active IP Right Grant
- 2018-11-30 US US16/206,687 patent/US11494623B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20190065144A (ko) | 2019-06-11 |
US20190244084A1 (en) | 2019-08-08 |
US11494623B2 (en) | 2022-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102610842B1 (ko) | 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법 | |
JP6977239B2 (ja) | 行列乗算器 | |
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
Ma et al. | Scalable and modularized RTL compilation of convolutional neural networks onto FPGA | |
CN107578098B (zh) | 基于脉动阵列的神经网络处理器 | |
US20180260710A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
CN105892989B (zh) | 一种神经网络加速器及其运算方法 | |
WO2022170997A1 (zh) | 基于risc-v指令集进行数据处理的方法、***、设备及介质 | |
KR101788829B1 (ko) | 콘볼루션 신경망 컴퓨팅 장치 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN110352434A (zh) | 利用模型固定的神经网络处理 | |
KR20190074195A (ko) | 뉴럴 프로세싱 가속기 | |
KR20160142791A (ko) | 뉴럴 네트워크 실시 방법 및 장치 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
JP2021509747A (ja) | ハードウェアベースのプーリングのシステムおよび方法 | |
Meng et al. | Accelerating proximal policy optimization on cpu-fpga heterogeneous platforms | |
Chen et al. | Zara: A novel zero-free dataflow accelerator for generative adversarial networks in 3d reram | |
CN108304925B (zh) | 一种池化计算装置及方法 | |
US20160187861A1 (en) | Systems and methods to adaptively select execution modes | |
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) | 卷积计算单元、计算方法及神经网络计算平台 | |
JP7435602B2 (ja) | 演算装置および演算システム | |
US20200160161A1 (en) | Deep neural network accelerator including lookup table based bit-serial processing elements |
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 |