KR102556506B1 - 뉴로모픽 연산 장치 및 그것의 동작 방법 - Google Patents
뉴로모픽 연산 장치 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR102556506B1 KR102556506B1 KR1020190005447A KR20190005447A KR102556506B1 KR 102556506 B1 KR102556506 B1 KR 102556506B1 KR 1020190005447 A KR1020190005447 A KR 1020190005447A KR 20190005447 A KR20190005447 A KR 20190005447A KR 102556506 B1 KR102556506 B1 KR 102556506B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- bits
- subtotal
- multiplication
- weight
- Prior art date
Links
Images
Classifications
-
- 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/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
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- 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
- 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/4814—Non-logic devices, e.g. operational amplifiers
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
본 발명의 하나의 실시 예에 따른 뉴로모픽 연산 장치는 복수의 특징 데이터 및 복수의 가중치 데이터 중 적어도 하나의 제1 자릿수의 제1 비트들이 모두 0인 것을 감시하여 감시 결과를 출력하도록 구성된 입력 모니터링 회로, 상기 복수의 특징 데이터 및 상기 복수의 가중치 데이터를 기반으로 복수의 부분합 데이터를 생성하는 연산 동작을 수행하되, 상기 감시 결과에 응답하여 상기 복수의 부분합 데이터 중 상기 제1 비트들에 대응하는 제1 부분합 데이터를 생성하는 연산 동작을 생략(skip)하도록 구성된 부분합 데이터 생성기 및 상기 제1 부분합 데이터를 0 값으로 생성하고, 상기 복수의 부분합 데이터 중 상기 제1 부분합 데이터를 제외한 나머지 제2 부분합 데이터 및 상기 0 값으로 생성된 제1 부분합 데이터를 기반으로 결과 데이터를 생성하도록 구성된 시프트 덧셈기를 포함한다.
Description
본 발명은 반도체 장치에 관한 것으로써, 좀 더 상세하게는 뉴럴 네트워크를 기반으로 합성곱을 수행하는 뉴로모픽 연산 장치 및 그것의 동작 방법에 관한 것이다.
뉴로모픽 연산 장치는 인간의 두뇌를 모방하여 데이터를 처리하는 장치이다. 두뇌는 뉴런들 사이의 시냅스를 통해 하나의 뉴런으로부터 다른 뉴런으로 신호를 전달할 수 있다. 두뇌는 시냅스의 연결 강도를 조절하여 뉴런으로부터 다른 뉴런으로 전달되는 신호의 세기를 조절할 수 있다. 시냅스의 연결 강도가 조절됨으로써 정보의 학습 및 추론이 이루어질 수 있다. 뉴로모픽 연산 장치는 뉴런들 사이의 신호 전달 방식에 기초하여 데이터를 처리할 수 있다. 뉴럴 프로세싱은 이와 같은 신호 처리 방식을 이용하여 데이터를 처리하는 것을 일컫는다.
뉴로모픽 연산 장치는 방대한 연산을 필요로 하는 뉴럴 프로세싱을 위해, 저전력 및 저면적의 아날로그 MAC(multiplier-accumulators)으로 구현될 수 있다. 아날로그 MAC은 복수의 디지털 입력 신호들을 아날로그 신호들로 변환하고, 변환된 아날로그 신호들을 합하여 디지털 신호로 변환하는 방식을 사용한다. 아날로그 MAC은 정확도를 높이기 위해 입력 데이터를 1-비트씩 곱하고, 1-비트의 곱셈 결과들을 기반으로 MAC 연산을 수행할 수 있다. 이러한 MAC 연산을 기반으로 뉴로모픽 연산 장치가 동작하는 경우, 뉴럴 프로세싱 속도가 저하될 수 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 1-비트씩 곱셈을 수행하는 아날로그 MAC 기반의 연산 속도를 향상시킬 수 있는 뉴로모픽 연산 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 하나의 실시 예에 따른 뉴로모픽 연산 장치는 복수의 특징 데이터 및 복수의 가중치 데이터 중 적어도 하나의 제1 자릿수의 제1 비트들이 모두 0인 것을 감시하여 감시 결과를 출력하도록 구성된 입력 모니터링 회로, 상기 복수의 특징 데이터 및 상기 복수의 가중치 데이터를 기반으로 복수의 부분합 데이터를 생성하는 연산 동작을 수행하되, 상기 감시 결과에 응답하여 상기 복수의 부분합 데이터 중 상기 제1 비트들에 대응하는 제1 부분합 데이터를 생성하는 연산 동작을 생략(skip)하도록 구성된 부분합 데이터 생성기 및 상기 제1 부분합 데이터를 0 값으로 생성하고, 상기 복수의 부분합 데이터 중 상기 제1 부분합 데이터를 제외한 나머지 제2 부분합 데이터 및 상기 0 값으로 생성된 제1 부분합 데이터를 기반으로 결과 데이터를 생성하도록 구성된 시프트 덧셈기를 포함한다.
하나의 실시 예에 있어서, 상기 입력 모니터링 회로는 상기 제1 자릿수의 상기 제1 비트들을 입력들로 수신하는 OR 게이트를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 입력 모니터링 회로는 상기 제1 자릿수의 상기 제1 비트들 각각을 게이트 단자로 수신하는 모스펫을 포함하고, 상기 모스펫의 일단은 접지 전압에 연결되고 타단은 전원 전압에 연결될 수 있다.
하나의 실시 예에 있어서, 상기 부분합 데이터 생성기는 상기 복수의 특징 데이터의 제2 자릿수의 제2 비트들과 상기 복수의 가중치 데이터의 제3 자릿수의 제3 비트들을 기반으로 곱셈 비트들을 생성하도록 구성된 곱셈 레지스터, 상기 곱셈 비트들의 합에 대응하는 아날로그 신호를 생성하도록 구성된 디지털 아날로그 컨버터, 상기 아날로그 신호를 샘플링하도록 구성된 샘플 홀드 회로 및 상기 샘플링된 아날로그 신호를 디지털 신호로 변환하여 상기 제1 부분합 데이터를 생성하도록 구성된 아날로그 디지털 컨버터를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 곱셈 레지스터는 상기 제2 비트들 중 하나의 비트와 상기 제3 비트들 중 하나의 비트를 곱하여 상기 곱셈 비트들 중 하나를 생성할 수 있다.
하나의 실시 예에 있어서, 상기 곱셈 레지스터는 상기 제1 비트들을 기반으로 곱셈 비트들을 생성하는 동작을 생략하도록 더 구성될 수 있다.
하나의 실시 예에 있어서, 상기 제2 비트들 중 적어도 하나는 1이고, 상기 제3 비트들 중 적어도 하나는 1일 수 있다.
하나의 실시 예에 있어서, 상기 제1 비트들 각각은 부호를 나타내는 비트가 아닐 수 있다.
하나의 실시 예에 있어서, 상기 결과 데이터는 상기 복수의 특징 데이터 및 상기 복수의 가중치 데이터의 합성곱 결과에 대응할 수 있다.
본 발명의 하나의 실시 예에 따른 뉴로모픽 연산 장치의 동작 방법은 복수의 특징 데이터 및 복수의 가중치 데이터 중 적어도 하나의 제1 자릿수의 제1 비트들이 모두 0인 것으로 감시하여 감시 결과를 출력하는 단계, 상기 감시 결과에 응답하여 상기 제1 비트들에 대응하는 제1 부분합 데이터를 생성하는 연산 동작을 생략하는 단계, 상기 제1 부분합 데이터의 값을 0으로 처리하는 단계 및 상기 0으로 처리된 제1 부분합 데이터를 기반으로 결과 데이터를 생성하는 단계를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 복수의 특징 데이터의 제2 자릿수의 제2 비트들과 상기 복수의 가중치 데이터의 제3 자릿수의 제3 비트들을 기반으로 제2 부분합 데이터를 산출하는 단계를 더 포함하고, 상기 결과 데이터는 상기 제1 부분합 데이터 및 상기 제2 부분합 데이터를 기반으로 생성될 수 있다.
하나의 실시 예에 있어서, 상기 제2 부분합 데이터를 산출하는 단계는 상기 제2 비트들과 상기 제3 비트들을 기반으로 곱셈 비트들을 생성하는 단계, 상기 곱셈 비트들의 합에 대응하는 아날로그 신호를 생성하는 단계, 상기 아날로그 신호를 샘플링하는 단계 및 상기 샘플링된 아날로그 신호를 디지털 신호로 변환하여 상기 제2 부분합 데이터를 생성하는 단계를 포함할 수 있다.
하나의 실시 예에 있어서, 상기 제2 비트들 중 적어도 하나는 1이고, 상기 제3 비트들 중 적어도 하나는 1일 수 있다.
하나의 실시 예에 있어서, 상기 제1 비트들 각각은 부호를 나타내는 비트가 아닐 수 있다.
하나의 실시 예에 있어서, 상기 결과 데이터는 상기 복수의 특징 데이터 및 상기 복수의 가중치 데이터의 합성곱 결과에 대응할 수 있다.
본 발명의 실시 예에 따른 뉴로모픽 연산 장치는 입력되는 데이터의 비트들을 감시하고, 감시 결과에 따라 일부 연산 동작을 생략할 수 있다. 이에 따라, 뉴로모픽 연산 장치의 동작 속도가 향상되고, 뉴로모픽 연산 장치가 저전력으로 동작할 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 2는 본 발명의 하나의 실시 예에 따른 뉴로모픽 연산 장치를 보여주는 블록도이다.
도 3a는 도 2의 뉴로모픽 연산 장치로 입력되는 특징 데이터의 예시를 보여준다.
도 3b는 도 2의 뉴로모픽 연산 장치로 입력되는 가중치 데이터의 예시를 보여준다.
도 4는 본 발명의 실시 예에 따른 부분합 데이터의 예시를 보여주는 도면이다.
도 5는 도 2의 입력 모니터링 회로의 하나의 예시를 보여주는 도면이다.
도 6은 도 2의 입력 모니터링 회로의 하나의 예시를 보여주는 도면이다.
도 7은 도 2의 뉴로모픽 연산 장치의 하나의 예시를 보여주는 블록도이다.
도 8은 도 7의 아날로그 디지털 컨버터의 동작의 하나의 예시를 보여주는 타이밍도이다.
도 9는 도 2의 뉴로모픽 연산 장치의 동작의 예시를 보여주는 순서도이다.
도 10은 도 2의 뉴로모픽 연산 장치에 따른 연산 동작의 생략 횟수의 예시를 보여주는 표이다.
도 2는 본 발명의 하나의 실시 예에 따른 뉴로모픽 연산 장치를 보여주는 블록도이다.
도 3a는 도 2의 뉴로모픽 연산 장치로 입력되는 특징 데이터의 예시를 보여준다.
도 3b는 도 2의 뉴로모픽 연산 장치로 입력되는 가중치 데이터의 예시를 보여준다.
도 4는 본 발명의 실시 예에 따른 부분합 데이터의 예시를 보여주는 도면이다.
도 5는 도 2의 입력 모니터링 회로의 하나의 예시를 보여주는 도면이다.
도 6은 도 2의 입력 모니터링 회로의 하나의 예시를 보여주는 도면이다.
도 7은 도 2의 뉴로모픽 연산 장치의 하나의 예시를 보여주는 블록도이다.
도 8은 도 7의 아날로그 디지털 컨버터의 동작의 하나의 예시를 보여주는 타이밍도이다.
도 9는 도 2의 뉴로모픽 연산 장치의 동작의 예시를 보여주는 순서도이다.
도 10은 도 2의 뉴로모픽 연산 장치에 따른 연산 동작의 생략 횟수의 예시를 보여주는 표이다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 상세하게 설명된다. 이하의 설명에서, 상세한 구성들 및 구조들과 같은 세부적인 사항들은 단순히 본 발명의 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러므로 본 발명의 기술적 사상 및 범위로부터의 벗어남 없이 본문에 기재된 실시 예들의 변형들은 통상의 기술자 의해 수행될 수 있다. 더욱이, 명확성 및 간결성을 위하여 잘 알려진 기능들 및 구조들에 대한 설명들은 생략된다. 본 명세서에서 사용된 용어들은 본 발명의 기능들을 고려하여 정의된 용어들이며, 특정 기능에 한정되지 않는다. 용어들의 정의는 상세한 설명에 기재된 사항을 기반으로 결정될 수 있다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
다르게 정의되지 않는 한, 본문에서 사용되는 기술적 또는 과학적인 의미를 포함하는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에 의해 이해될 수 있는 의미를 갖는다. 일반적으로 사전에서 정의된 용어들은 관련된 기술 분야에서의 맥락적 의미와 동등한 의미를 갖도록 해석되며, 본문에서 명확하게 정의되지 않는 한, 이상적 또는 과도하게 형식적인 의미를 갖도록 해석되지 않는다.
도 1은 본 발명의 하나의 실시 예에 따른 뉴럴 네트워크(NN; neural network)의 예시를 나타내는 도면이다. 도 1을 참조하면, 뉴럴 네트워크(NN)는 제1 레이어 및 제2 레이어를 포함할 수 있다. 제1 레이어는 256개의 뉴런들(n0~n255)을 포함하고, 제2 레이어는 하나의 뉴런(n')을 포함할 수 있다. 뉴런들(n0~n255)은 시냅스들(S0~S255)에 의해 뉴런(n')과 연결될 수 있다. 예를 들어, 뉴럴 네트워크(NN)는 컨볼루셔널 뉴럴 네트워크(CNN; convolutional neural network) 중 일부 네트워크를 나타낼 수 있다.
뉴런들(n0~n255)과 뉴런(n') 사이를 연결하는 시냅스들(S0~S255)의 연결 강도는 가중치 데이터(W0~W255)로 나타낼 수 있다. 예를 들어, 제0 가중치 데이터(W0)는 제0 뉴런(n0)과 뉴런(n') 사이의 연결 강도를 나타낼 수 있다. 가중치 데이터(W0~W255) 각각의 값들은 뉴럴 네트워크(NN)에 대한 학습을 통해 결정될 수 있다. 학습을 통해 결정된 가중치 데이터(W0~W255)를 기반으로 입력 데이터에 대한 추론이 수행될 수 있다.
뉴런들(n0~n255)은 특징 데이터(F0~F255)를 출력할 수 있다. 특징 데이터(F0~F255)는 뉴럴 프로세싱을 위해 입력되는 데이터 또는 뉴럴 프로세싱 과정에서 입력 데이터를 기반으로 생성되는 데이터일 수 있다. 예를 들어, 뉴럴 프로세싱을 위해 이미지 픽셀 데이터가 입력되는 경우, 특징 데이터(F0~F255)는 이미지 픽셀 데이터 또는 이미지 픽셀 데이터를 기반으로 생성되는 데이터일 수 있다.
특징 데이터(F0~F255)는 시냅스들(S0~S255)을 통해 뉴런(n')으로 전달될 수 있다. 뉴런(n')은 특징 데이터(F0~F255) 및 가중치 데이터(W0~W255)를 기반으로 결과 데이터(RD)를 출력할 수 있다. 결과 데이터(RD)는 특징 데이터(F0~F255)와 가중치 데이터(W0~W255)의 합성곱 결과에 대응할 수 있다. 즉, 특징 데이터(F0~F255) 각각과 대응하는 가중치 데이터(W0~W255) 각각을 곱하고, 곱셈 결과들을 합함으로써 아래의 수학식 1과 같은 결과 데이터(RD)가 생성될 수 있다.
도 1에는 256개의 뉴런들(n0~n255)이 제1 레이어에 포함되고, 하나의 뉴런(n')이 제2 레이어에 포함되는 뉴럴 네트워크(NN)의 예시가 도시되었지만, 본 발명은 이에 한정되지 않는다. 본 발명의 실시 예에 따른 뉴럴 네트워크(NN)는 다양한 개수의 레이어들을 포함할 수 있고, 각각의 레이어는 다양한 개수의 뉴런들을 포함할 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 뉴럴 네트워크(NN)에 따르면, 이전 레이어의 뉴런들(n0~n255)로부터 출력되는 특징 데이터(F0~F255)와 가중치 데이터(W0~W255)의 합성곱을 기반으로 다음 레이어의 뉴런(n')으로부터 출력되는 결과 데이터(RD)가 생성될 수 있다. 이하에서는, 설명의 편의를 위해, 도 1에 도시된 바와 같이, 256개의 특징 데이터(F0~F255)와 256개의 가중치 데이터(W0~W255)의 합성곱을 기반으로 결과 데이터(RD)를 생성하는 예시를 기준으로 본 발명이 설명될 것이다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 본 발명은 합성곱을 수행하는 임의의 뉴럴 프로세싱에 적용될 수 있다.
도 2는 본 발명의 하나의 실시 예에 따른 뉴로모픽 연산 장치(1000)를 보여주는 블록도이다. 도 3a는 도 2의 뉴로모픽 연산 장치(1000)로 입력되는 특징 데이터(F0~F255)의 예시를 보여준다. 도 3b는 도 2의 뉴로모픽 연산 장치(1000)로 입력되는 가중치 데이터(W0~W255)의 예시를 보여준다.
도 2를 참조하면, 뉴로모픽 연산 장치(1000)는 다양한 형태의 전자 장치 또는 전자 회로로 구현될 수 있다. 예를 들어, 뉴로모픽 연산 장치(1000)는 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 웨어러블(wearable) 장치, 사물 인터넷(IoT; Internet of Things) 장치, 전기 자동차, 직접 회로(IC; Integrated Circuit), 시스템 온 칩(SoC; System On Chip) 등으로 구현될 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 뉴로모픽 연산 장치(1000)는 입력되는 데이터의 합성곱을 수행하는 어떠한 종류의 장치 또는 회로로 구현될 수 있다.
뉴로모픽 연산 장치(1000)는 특징 데이터(F0~F255) 및 가중치 데이터(W0~W255)를 수신할 수 있다. 뉴로모픽 연산 장치(1000)는 특징 데이터(F0~F255) 및 가중치 데이터(W0~W255)를 기반으로 결과 데이터(RD)를 생성할 수 있다. 예를 들어, 도 3a 및 도 3b에 도시된 바와 같이, 특징 데이터(F0~F255) 각각과 가중치 데이터(W0~W255) 각각은 8-비트 데이터일 수 있다. 이 경우, 최상위 비트는 부호를 나타내고, 나머지 비트들은 데이터 값을 나타낼 수 있다. 데이터 값을 나타내는 7개의 비트들은 서로 다른 자릿수에 대응할 수 있다. 7개의 비트들 각각은 제0 내지 제6 자릿수들(pn0~pn6) 중 하나에 대응할 수 있다. 예를 들어, 제0 특징 데이터(F0)의 비트(fb0_0)는 제0 자릿수(pn0)에 대응하고, 비트(fb0_1)는 제1 자릿수(pn1)에 대응할 수 있다.
뉴로모픽 연산 장치(1000)는 연산기(100) 및 입력 모니터링 회로(200)를 포함할 수 있다. 연산기(100)는 부분합 데이터 생성기(110) 및 시프트 덧셈기(120)를 포함할 수 있다. 부분합 데이터 생성기(110)는 특징 데이터(F0~F255) 및 가중치 데이터(W0~W255)를 기반으로 부분합 데이터(PS)를 생성할 수 있다. 부분합 데이터(PS)는 특징 데이터(F0~F255) 각각의 하나의 비트와 가중치 데이터(W0~W255) 각각의 하나의 비트의 1-비트 곱셈 결과들을 합하여 산출되는 데이터이다.
도 3a 및 도 3b를 참조하면, 특징 데이터(F0~F255)의 비트들(fb)과 가중치 데이터(W0~W255)의 비트들(wb)을 기반으로 산출되는 부분합 데이터(PS)는 아래의 수학식 2로 표현될 수 있다.
위의 수학식 2에서, x는 특징 데이터(F0~F255)의 부호 비트를 제외한 비트들의 자릿수를 나타내고, y는 가중치 데이터(W0~W255)의 부호 비트를 제외한 비트들의 자릿수를 나타낸다. 예를 들어, 특징 데이터(F0~F255) 각각의 부호 비트를 제외한 비트들은 제0 내지 제6 자릿수들(pn0~pn6)에 대응할 수 있다.
즉, 부분합 데이터(PS)는 특징 데이터(F0~F255)의 특정 자릿수의 비트들과 가중치 데이터(W0~W255)의 특정 자릿수의 비트들의 1-비트 곱셈 결과들을 합하여 산출될 수 있다. 예를 들어, 특징 데이터(F0~F255)의 제0 자릿수(pn0)의 비트들(fb0_0~fb255_0)과 가중치 데이터(W0~W255)의 제0 자릿수(pn0)의 비트들(wb0_0~wb255_0)에 기초하여 부분합 데이터(PS00)가 생성될 수 있다. 특징 데이터(F0~F255)의 제0 자릿수(pn0)의 비트들(fb0_0~fb255_0)과 가중치 데이터(W0~W255)의 제1 자릿수(pn1)의 비트들(wb0_1~wb255_1)에 기초하여 부분합 데이터(PS01)가 생성될 수 있다. 도 3a 및 도 3b의 예시에 있어서, x 및 y 값은 각각 7개 이므로, 부분합 데이터 생성기(110)는 49개의 부분합 데이터(PS)를 순차적으로 생성할 수 있다.
부분합 데이터 생성기(110)는 특징 데이터(F0~F255) 각각과 가중치 데이터(W0~W255) 각각의 부호를 고려하여 부분합 데이터(PS)를 생성할 수 있다. 부분합 데이터 생성기(110)는 특징 데이터(F0~F255) 각각의 부호 비트와 가중치 데이터(W0~W255) 각각의 부호 비트를 이용하여 부분합 데이터(PS)의 부호를 결정할 수 있다. 이에 따라, 특징 데이터(F0~F255)와 가중치 데이터(W0~W255)가 각각 256개인 경우, 부분합 데이터(PS)의 범위는 -256부터 256까지 일 수 있다. 이 경우, 부분합 데이터(PS)는 513개의 값을 가질 수 있다. 부분합 데이터 생성기(110)로부터 생성되는 부분합 데이터(PS)의 비트 수는 뉴럴 프로세싱에 있어서 요구되는 연산 정확도 및 연산 속도에 따라 결정될 수 있다. 예를 들어, 513개의 값을 나타내기 위한 부분합 데이터(PS)는 9-비트로 결정될 수 있다. 이 경우, 부분합 데이터(PS)는 513개의 값 중 1개의 값을 나타낼 수 없으므로 연산 정확도가 일부 감소될 수 있으나 연산 속도가 증가될 수 있다.
다시 도 2를 참조하면, 시프트 덧셈기(120)는 순차적으로 출력되는 복수의 부분합 데이터(PS)를 합할 수 있다. 예를 들어, 시프트 덧셈기(120)는 부분합 데이터(PS) 각각에 대응하는 자릿수에 따라 부분합 데이터(PS)의 자릿수를 시프트하고, 시프트된 자릿수에 따라 복수의 부분합 데이터(PS)를 합할 수 있다. 이에 따라, 시프트 덧셈기(120)는 결과 데이터(RD)를 산출할 수 있다.
입력 모니터링 회로(200)는 특징 데이터(F0~F255)의 특정 자릿수의 비트들이 모두 0인지 여부를 감시할 수 있다. 또한, 입력 모니터링 회로(200)는 가중치 데이터(W0~W255)의 특정 자릿수의 비트들이 모두 0인지 여부를 감시할 수 있다. 입력 모니터링 회로(200)는 감시 결과(MR)를 연산기(100)로 제공할 수 있다.
예를 들어, 도 3a 및 도 3b에 도시된 바와 같이, 입력 모니터링 회로(200)는 특징 데이터(F0~F255)의 제4 내지 제6 자릿수들(pn4~pn6)의 비트들이 모두 0인 것을 감시할 수 있다. 입력 모니터링 회로(200)는 가중치 데이터(W0~W255)의 제5 및 제6 자릿수들(pn5, pn6)의 비트들이 모두 0인 것을 감시할 수 있다.
부분합 데이터 생성기(110)는 감시 결과(MR)에 기초하여 부분합 데이터(PS)를 산출하는 일부 연산 동작을 생략(skip)할 수 있다. 특정 자릿수의 비트들이 모두 0인 것으로 감시되는 경우, 부분합 데이터 생성기(110)는 특정 자릿수의 비트들과 연관된 부분합 데이터(PS)를 산출하는 연산 동작을 생략할 수 있다.
예를 들어, 도 3a 및 도 3b에 도시된 바와 같이, 특징 데이터(F0~F255)의 제4 내지 제6 자릿수들(pn4~pn6)의 비트들과 가중치 데이터(W0~W255)의 제5 및 제6 자릿수들(pn5, pn6)의 비트들이 모두 0인 것으로 감시되는 경우, 부분합 데이터 생성기(110)는 특징 데이터(F0~F255)의 제4 내지 제6 자릿수들(pn4~pn6)의 비트들과 가중치 데이터(W0~W255)의 제5 및 제6 자릿수들(pn5, pn6)의 비트들과 연관된 부분합 데이터(PS)를 산출하는 연산 동작들을 생략할 수 있다. 이에 따라, 부분합 데이터 생성기(110)는 나머지 비트들만을 이용하여 부분합 데이터(PS)를 산출하는 연산 동작들만을 수행할 수 있다.
시프트 덧셈기(120)는 감시 결과(MR)에 기초하여 부분합 데이터 생성기(110)로부터 생성되지 않은 부분합 데이터(PS)의 값을 0으로 처리할 수 있다. 시프트 덧셈기(120)는 부분합 데이터 생성기(110)로부터 생성된 부분합 데이터(PS)와 내부에서 0 값으로 생성된 부분합 데이터(PS)를 기반으로 결과 데이터(RD)를 산출할 수 있다.
도 4는 본 발명의 실시 예에 따른 부분합 데이터(PS)의 예시를 보여주는 도면이다. 구체적으로, 도 4의 부분합 데이터(PS)는 도 3a 및 도 3b의 특징 데이터(F0~F255) 및 가중치 데이터(W0~W255)를 기반으로 생성될 수 있다. 즉, 특징 데이터(F0~F255)의 제4 내지 제6 자릿수들(pn4~pn6)의 비트들과 가중치 데이터(W0~W255)의 제5 및 제6 자릿수들(pn5, pn6)의 비트들이 모두 0인 경우, 도 4의 부분합 데이터(PS)가 생성될 수 있다.
도 4를 참조하면, 수학식 2에서 설명된 바와 같이, 결과 데이터(RD)를 산출하기 위해 49개의 부분합 데이터(PS)가 생성될 수 있다. 예를 들어, 부분합 데이터(PS00)는 특징 데이터(F0~F255)의 제0 자릿수(pn0)의 비트들과 가중치 데이터(W0~W255)의 제0 자릿수(pn0)의 비트들에 대응할 수 있다. 부분합 데이터(PS66)는 특징 데이터(F0~F255)의 제6 자릿수(pn6)의 비트들과 가중치 데이터(W0~W255)의 제6 자릿수(pn6)의 비트들에 대응할 수 있다.
부분합 데이터 생성기(110)는 특징 데이터(F0~F255)의 제0 내지 제3 자릿수들(pn0~pn3)의 비트들과 가중치 데이터(W0~W255)의 제0 내지 제4 자릿수들(pn0~pn4)의 비트들을 이용하여 부분합 데이터(PS)를 생성할 수 있다. 예를 들어, 부분합 데이터 생성기(110)는 특징 데이터(F0~F255)의 제0 자릿수(pn0)의 비트들(fb0_0~fb255_0)과 가중치 데이터(W0~W255)의 제0 자릿수(pn0)의 비트들(wb0_0~wb255_0)을 기반으로 부분합 데이터(PS00)를 생성할 수 있다.
부분합 데이터 생성기(110)는 특징 데이터(F0~F255)의 제4 내지 제6 자릿수들(pn4~pn6)의 비트들과 가중치 데이터(W0~W255)의 제5 및 제6 자릿수들(pn5, pn6)의 비트들에 연관된 부분합 데이터(PS)는 생성하지 않을 수 있다. 예를 들어, 부분합 데이터 생성기(110)는 가중치 데이터(W0~W255)의 제5 자릿수(pn5)의 비트들(wb0_5~wb255_5)에 연관된 부분합 데이터(PS05, PS15~PS65)를 생성하지 않을 수 있다. 이에 따라, 49개의 부분합 데이터(PS) 중 20개의 부분합 데이터(PS)만이 부분합 데이터 생성기(110)로부터 생성되어 시프트 덧셈기(120)로 출력될 수 있다.
시프트 덧셈기(120)는 부분합 데이터 생성기(110)로부터 생성되지 않은 부분합 데이터(PS)의 값을 0으로 처리할 수 있다. 즉, 시프트 덧셈기(120)는 49개의 부분합 데이터(PS) 중 29개의 부분합 데이터(PS)를 0 값으로 생성할 수 있다. 예를 들어, 부분합 데이터(PS)가 9-비트인 경우, 시프트 덧셈기(120)는 부분합 데이터(PS05)를 '000000000'로 생성할 수 있다. 시프트 덧셈기(120)는 부분합 데이터 생성기(110)로부터 생성된 20개의 부분합 데이터(PS)와 내부에서 생성된 29개의 부분합 데이터(PS)를 합하여 결과 데이터(RD)를 생성할 수 있다. 시프트 덧셈기(120)는 각각의 부분합 데이터(PS)에 대응하는 자릿수에 따라 덧셈을 수행할 수 있다. 이에 따라, 시프트 덧셈기(120)로부터 생성된 결과 데이터(RD)는 21-비트일 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 뉴로모픽 연산 장치(1000)는 특징 데이터(F0~F255)와 가중치 데이터(W0~W255)의 특정 자릿수의 비트들이 모두 0인지 여부를 감시하고, 감시 결과에 따라 일부 연산 동작을 생략할 수 있다. 이에 따라, 특징 데이터(F0~F255)와 가중치 데이터(W0~W255)의 합성곱에 대응하는 결과 데이터(RD)를 산출하기 위한 뉴로모픽 연산 장치(1000)의 동작 속도가 빨라질 수 있다. 또한, 일부 연산 동작의 생략에 따라 뉴로모픽 연산 장치(1000)는 저전력으로 동작할 수 있다.
도 5는 도 2의 입력 모니터링 회로(200)의 하나의 예시를 보여주는 도면이다. 구체적으로, 도 5는 입력 모니터링 회로(200)가 디지털 회로로서 구현되는 예시를 보여준다. 도 5를 참조하면, 입력 모니터링 회로(200)는 OR 게이트(201)를 포함할 수 있다. OR 게이트(201)는 특징 데이터(F0~F255) 또는 가중치 데이터(W0~W255)의 특정 자릿수의 비트들을 입력으로 수신할 수 있다. OR 게이트(201)는 입력되는 비트들의 값에 따라 감시 결과(MR)를 출력할 수 있다.
예를 들어, 도 5에 도시된 바와 같이, 특징 데이터(F0~F255)의 제6 자릿수(pn6)의 비트들(fb0_6~fb255_6)이 OR 게이트(201)로 입력될 수 있다. 이 경우, 비트들(fb0_6~fb255_6)이 모두 0인 경우, OR 게이트(201)는 0을 출력할 수 있다. 비트들(fb0_6~fb255_6) 중 하나의 비트라도 1인 비트가 존재하는 경우, OR 게이트(201)는 1을 출력할 수 있다. 즉, 입력되는 비트들이 모두 0인 경우, 감시 결과(MR)로서 0이 출력될 수 있다. 그러나 본 발명이 이에 한정되는 것은 아니며, OR 게이트(201)의 출력단에 인버터가 추가되거나 OR 게이트(201)가 NOR 게이트로 대체되는 경우, 감시 결과(MR)로서 1이 출력될 수 있다.
도 5에는 특징 데이터(F0~F255)의 제6 자릿수(pn6)의 비트들(fb0_6~fb255_6)이 OR 게이트(201)로 입력되는 예시가 도시되었으나, 본 발명이 이에 한정되는 것은 아니다.
도 6은 도 2의 입력 모니터링 회로(200)의 하나의 예시를 보여주는 도면이다. 구체적으로, 도 6은 입력 모니터링 회로(200)가 아날로그 회로로서 구현되는 예시를 보여준다. 도 6을 참조하면, 입력 모니터링 회로(200)는 제0 내지 제255 NMOS(n-channel MOSFET)들(M0~M255)과 저항(R)을 포함할 수 있다. NMOS들(M0~M255)의 일단은 저항(R)을 통해 전원 전압(Vdd)에 연결되고, 타단은 접지 전압(GND)에 연결될 수 있다. NMOS들(M0~M255)의 게이트 단자들에는 특징 데이터(F0~F255) 또는 가중치 데이터(W0~W255)의 특정 자릿수의 비트들이 입력될 수 있다. 입력 모니터링 회로(200)는 NMOS들(M0~M255)의 일단과 저항(R) 사이의 노드 전압에 기초하여 감시 결과(MR)를 출력할 수 있다.
예를 들어, 도 6에 도시된 바와 같이, 특징 데이터(F0~F255)의 제6 자릿수(pn6)의 비트들(fb0_6~fb255_6)이 NMOS들(M0~M255)의 게이트 단자들로 입력될 수 있다. 비트들(fb0_6~fb255_6)이 모두 0인 경우, NMOS들(M0~M255)은 모두 오프 상태가 되고, 전원 전압(Vdd)에 대응하는 전압(즉, 1)이 감시 결과(MR)로서 출력될 수 있다. 비트들(fb0_6~fb255_6) 중 하나라도 1인 경우, NMOS들(M0~M255) 중 하나는 온 상태가 되고, 접지 전압(GND)에 대응하는 전압(즉, 0)이 감시 결과(MR)로서 출력될 수 있다. 즉, 게이트 단자들로 입력되는 비트들이 모두 0인 경우, 감시 결과(MR)로서 1이 출력될 수 있다. 그러나 본 발명이 이에 한정되는 것은 아니며, 출력단에 인버터가 추가되는 경우, 감시 결과(MR)로서 0이 출력될 수 있다.
도 6에는 특징 데이터(F0~F255)의 제6 자릿수(pn6)의 비트들(fb0_6~fb255_6)이 NMOS들(M0~M255)의 게이트 단자로 입력되는 예시가 도시되었으나, 본 발명이 이에 한정되는 것은 아니다.
도 7은 도 2의 뉴로모픽 연산 장치(1000)의 하나의 예시를 보여주는 블록도이다. 도 7을 참조하면, 뉴로모픽 연산 장치(1000)는 곱셈 레지스터(111), 디지털 아날로그 컨버터(112), 샘플 홀드 회로(113), 아날로그 디지털 컨버터(114), 시프트 덧셈기(120), 입력 레지스터(130) 및 입력 모니터링 회로(200)를 포함한다. 곱셈 레지스터(111), 디지털 아날로그 컨버터(112), 샘플 홀드 회로(113) 및 아날로그 디지털 컨버터(114)는 도 2의 부분합 데이터 생성기(110)에 포함될 수 있다.
입력 레지스터(130)는 특징 데이터(F0~F255) 및 가중치 데이터(W0~W255)를 수신할 수 있다. 입력 레지스터(130)는 제0 내지 제255 레지스터들(IRT0~IRT255)을 포함할 수 있다. 입력 레지스터(130)는 수신된 특징 데이터(F0~F255) 및 가중치 데이터(W0~W255)를 레지스터들(IRT0~IRT255)에 저장할 수 있다. 예를 들어, 제0 특징 데이터(F0) 및 제0 가중치 데이터(W0)는 제0 레지스터(IRT0)에 저장될 수 있다. 입력 레지스터(130)는 특징 데이터(F0~F255) 및 가중치 데이터(W0~W255)를 입력 모니터링 회로(200) 및 곱셈 레지스터(111)로 전달할 수 있다.
입력 모니터링 회로(200)는 특징 데이터(F0~F255)의 특정 자릿수의 비트들이 모두 0인지 여부를 감시할 수 있다. 또한, 입력 모니터링 회로(200)는 가중치 데이터(W0~W255)의 특정 자릿수의 비트들이 모두 0인지 여부를 감시할 수 있다. 입력 모니터링 회로(200)는 감시 결과(MR)를 곱셈 레지스터(111) 및 시프트 덧셈기(120)로 제공할 수 있다.
곱셈 레지스터(111)는 제0 내지 제255 레지스터들(MRT0~MRT255)을 포함할 수 있다. 레지스터들(MRT0~MRT255) 각각은 특징 데이터(F0~F255) 각각의 하나의 비트와 가중치 데이터(W0~W255) 각각의 하나의 비트를 곱하고, 곱셈 비트들(d0~d255, s0~s255)을 출력할 수 있다. 예를 들어, 제0 레지스터(MRT0)는 제0 특징 데이터(F0)의 부호 비트와 제0 가중치 데이터(W0)의 부호 비트를 곱하여 곱셈 비트(s0)를 출력할 수 있다. 제0 레지스터(MRT0)는 제0 특징 데이터(F0)의 나머지 비트들과 제0 가중치 데이터(W0)의 나머지 비트들을 1-비트씩 순차적으로 곱하여 곱셈 비트(d0)를 순차적으로 출력할 수 있다. 예를 들어, 도 3a 및 도 3b에 도시된 바와 같이, 제0 레지스터(MRT0)는 제0 특징 데이터(F0)의 비트(fb0_0)와 제0 가중치 데이터(W0)의 비트(wb0_0)를 곱하여 곱셈 비트(d0)를 출력할 수 있다. 이후, 제0 레지스터(MRT0)는 제0 특징 데이터(F0)의 비트(fb0_0)와 제0 가중치 데이터(W0)의 비트(wb0_1)를 곱하여 곱셈 비트(d0)를 출력할 수 있다.
특징 데이터(F0~F255) 또는 가중치 데이터(W0~W255)의 특정 자릿수의 비트들이 모두 0인 경우, 레지스터들(MRT0~MRT255)은 특정 자릿수의 비트들을 기반으로 생성될 수 있는 곱셈 비트들(d0~d255)을 출력하지 않을 수 있다.
예를 들어, 도 3a 및 도 3b에 도시된 바와 같이, 특징 데이터(F0~F255)의 제4 자릿수(pn4)의 비트들(fb0_4~fb255_4)이 모두 0인 경우, 레지스터들(MRT0~MRT255)은 비트들(fb0_4~fb255_4)을 기반으로 생성될 수 있는 곱셈 비트들(d0~d255)을 출력하지 않을 수 있다. 특징 데이터(F0~F255)의 제4 내지 제6 자릿수(pn4~pn6)의 비트들과 가중치 데이터(W0~W255)의 제5 및 제6 자릿수(pn5, pn6)의 비트들이 모두 0인 경우, 레지스터들(MRT0~MRT255)은 특징 데이터(F0~F255)의 제0 내지 제3 자릿수들(pn0~pn3)의 비트들과 가중치 데이터(W0~W255)의 제0 내지 제4 자릿수들(pn0~pn4)의 비트들의 곱셈 비트들(d0~d255)만을 출력할 수 있다. 이에 따라, 레지스터들(MRT0~MRT255)은 곱셈 비트들(d0~d255)을 순차적으로 20번 출력할 수 있다. 만약, 감시 결과(MR)가 이용되지 않았다면, 곱셈 비트들(d0~d255)이 순차적으로 49번 출력될 수 있다. 즉, 감시 결과(MR)가 이용됨에 따라 곱셈 비트들(d0~d255)이 출력되는 횟수가 감소될 수 있다.
디지털 아날로그 컨버터(112)는 곱셈 비트들(d0~d255, s0~s255)을 기반으로 곱셈 비트들(d0~d255)의 합에 대응하는 아날로그 신호(AS)를 생성할 수 있다. 샘플 홀드 회로(113)는 아날로그 신호(AS)를 샘플링하고 샘플링된 아날로그 신호(SAS)를 유지할 수 있다. 아날로그 디지털 컨버터(114)는 샘플링된 아날로그 신호(SAS)를 디지털 신호로 변환하여 부분합 데이터(PS)를 생성할 수 있다. 아날로그 디지털 컨버터(114)에서 생성된 부분합 데이터(PS)는 시프트 덧셈기(120)로 제공될 수 있다.
예를 들어, 곱셈 레지스터(111)로부터 특징 데이터(F0~F255)의 제0 자릿수(pn0)의 비트들과 가중치 데이터(W0~W255)의 제0 자릿수(pn0)의 비트들을 기반으로 곱셈 비트들(d0~d255)이 출력되는 경우, 아날로그 디지털 컨버터(114)는 부분합 데이터(PS00)를 생성할 수 있다. 이후, 곱셈 레지스터(111)로부터 특징 데이터(F0~F255)의 제0 자릿수(pn0)의 비트들과 가중치 데이터(W0~W255)의 제1 자릿수(pn1)의 비트들을 기반으로 곱셈 비트들(d0~d255)이 출력되는 경우, 아날로그 디지털 컨버터(114)는 부분합 데이터(PS01)를 생성할 수 있다. 이와 같이, 아날로그 디지털 컨버터(114)는 곱셈 레지스터(111)로부터 순차적으로 제공되는 곱셈 비트들(d0~d255)을 기반으로 부분합 데이터(PS)를 순차적으로 생성할 수 있다.
시프트 덧셈기(120)는 순차적으로 출력되는 부분합 데이터(PS)를 각각의 자릿수에 따라 시프트하고 덧셈을 수행하여 결과 데이터(RD)를 생성할 수 있다. 특정 자릿수의 비트들이 모두 0인 경우, 아날로그 디지털 컨버터(114)로부터 특정 자릿수의 비트들과 연관된 부분합 데이터(PS)가 생성되지 않을 수 있다. 이 경우, 시프트 덧셈기(120)는 아날로그 디지털 컨버터(114)에서 생성되지 않는 부분합 데이터(PS)의 값을 0 값으로 처리할 수 있다. 시프트 덧셈기(120)는 내부에서 0 값으로 생성한 부분합 데이터(PS)와 아날로그 디지털 컨버터(114)에서 생성된 부분합 데이터(PS)를 기반으로 결과 데이터(RD)를 생성할 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 뉴로모픽 연산 장치(1000)는 1-비트 곱셈을 기반으로 합성곱을 수행하는 아날로그 MAC으로 구현될 수 있다. 뉴로모픽 연산 장치(1000)는 감시 결과(MR)를 이용하여 곱셈 레지스터(111), 디지털 아날로그 컨버터(112), 샘플 홀드 회로(113) 및 아날로그 디지털 컨버터(114)의 동작 횟수를 감소시킬 수 있다. 이에 따라, 뉴로모픽 연산 장치(1000)의 동작 속도가 향상될 수 있고, 연산 동작이 저전력으로 수행될 수 있다.
도 8은 도 7의 아날로그 디지털 컨버터(114)의 동작의 하나의 예시를 보여주는 타이밍도이다. 구체적으로, 도 3a 내지 도 4를 참조하여 설명된 바와 같이, 특징 데이터(F0~F255)의 제4 내지 제6 자릿수들(pn4~pn6)의 비트들과 가중치 데이터(W0~W255)의 제5 및 제6 자릿수들(pn5, pn6)의 비트들이 모두 0인 것으로 감시되는 것을 전제로, 아날로그 디지털 컨버터(114)의 동작이 설명된다.
도 4 및 도 8을 참조하면, 시간에 따라 아날로그 디지털 컨버터(114)로 클록이 제공될 수 있다. 클록은 제0 내지 제20 펄스들(P0~P20)을 포함할 수 있다. 제0 펄스(P0)에 응답하여 아날로그 디지털 컨버터(114)는 리셋될 수 있다. 이후, 순차적으로 제공되는 펄스들에 응답하여 아날로그 디지털 컨버터(114)는 부분합 데이터(PS)를 순차적으로 생성할 수 있다. 제1 내지 제5 펄스들(P1~P5)에 응답하여 아날로그 디지털 컨버터(114)는 부분합 데이터(PS00~PS04)를 순차적으로 생성할 수 있다. 가중치 데이터(W0~W255)의 제5 및 제6 자릿수들(pn5, pn6)의 비트들이 모두 0이므로, 곱셈 레지스터(111)는 부분합 데이터(PS05, PS06)에 대응하는 곱셈 비트들(d0~d255)을 출력하지 않을 수 있다. 이에 따라, 아날로그 디지털 컨버터(114)는 부분합 데이터(PS04)를 생성한 후, 부분합 데이터(PS05, PS06)의 생성을 생략할 수 있다. 즉, 아날로그 디지털 컨버터(114)는 부분합 데이터(PS04)를 생성한 후, 제6 펄스(P6)에 응답하여 부분합 데이터(PS10)를 생성할 수 있다.
이와 마찬가지로, 아날로그 디지털 컨버터(114)는 부분합 데이터(PS15, P16, PS25, PS26)의 생성을 생략할 수 있다. 도 8에 도시된 바와 같이, 제18 내지 제20 펄스들(P18~P20)에 응답하여 아날로그 디지털 컨버터(114)는 부분합 데이터(PS32~PS34)를 순차적으로 생성할 수 있다. 특징 데이터(F0~F255)의 제4 내지 제6 자릿수들(pn4~pn6)의 비트들과 가중치 데이터(W0~W255)의 제5 및 제6 자릿수들(pn5, pn6)의 비트들이 모두 0이므로, 곱셈 레지스터(111)는 부분합 데이터(PS35 ~PS66)에 대응하는 곱셈 비트들(d0~d255)을 출력하지 않을 수 있다. 이에 따라, 아날로그 디지털 컨버터(114)는 부분합 데이터(PS33)를 생성한 후, 부분합 데이터(PS35~PS66)의 생성을 생략할 수 있다.
상술한 바와 같이, 아날로그 디지털 컨버터(114)는 결과 데이터(RD)를 산출하기 위한 49개의 부분합 데이터(PS) 중 20개의 부분합 데이터(PS)만을 생성할 수 있다. 즉, 결과 데이터(RD)를 산출하기 위해 아날로그 디지털 컨버터(114)는 20개의 클록 펄스들(P1~P20)을 기반으로 동작할 수 있다. 만약, 아날로그 디지털 컨버터(114)가 49개의 부분합 데이터(PS)를 생성하는 경우, 결과 데이터(RD)를 산출하기 위해 아날로그 디지털 컨버터(114)는 49개의 클록 펄스들을 기반으로 동작할 수 있다. 따라서, 본 발명의 실시 예에 따르면, 결과 데이터(RD)를 산출하기 위한 연산 시간이 감소될 수 있다.
시프트 덧셈기(120)는 아날로그 디지털 컨버터(114)에서 생성되지 않은 부분합 데이터(PS)(예를 들어, 부분합 데이터(PS05))를 0 값으로 생성할 수 있다. 시프트 덧셈기(120)는 아날로그 디지털 컨버터(114)에서 생성된 20개의 부분합 데이터(PS)와 내부에서 생성된 29개의 부분합 데이터(PS)를 기반으로 결과 데이터(RD)를 산출할 수 있다.
도 9는 도 2의 뉴로모픽 연산 장치(1000)의 동작의 예시를 보여주는 순서도이다. 도 2 및 도 9를 참조하면, S1001 단계에서, 뉴로모픽 연산 장치(1000)는 특징 데이터(F0~F255) 및 가중치 데이터(W0~W255) 중 적어도 하나의 특정 자릿수의 비트들이 모두 0인 것을 감시할 수 있다. S1002 단계에서, 뉴로모픽 연산 장치(1000)는 감시된 특정 자릿수의 비트들에 대응하는 부분합 데이터(PS)를 산출하는 연산 동작을 생략할 수 있다. 이에 따라, 결과 데이터(RD)를 산출하기 위한 복수의 부분합 데이터(PS) 중 일부 부분합 데이터(PS)가 부분합 데이터 생성기(110)로부터 생성되지 않을 수 있다.
S1003 단계에서, 뉴로모픽 연산 장치(1000)는 특정 자릿수의 비트들에 대응하는 부분합 데이터(PS)를 0 값으로 생성할 수 있다. 즉, 시프트 덧셈기(120)는 부분합 데이터 생성기(110)에서 생성되지 않은 부분합 데이터(PS)의 값을 0으로 처리할 수 있다. S1004 단계에서, 뉴로모픽 연산 장치(1000)는 0 값으로 생성된 부분합 데이터(PS)를 기반으로 결과 데이터(RD)를 생성할 수 있다. 이 경우, 결과 데이터(RD)를 생성하기 위해 시프트 덧셈기(120)에서 생성된 부분합 데이터(PS)뿐만 아니라 부분합 데이터 생성기(110)에서 생성된 부분합 데이터(PS)도 이용될 수 있다.
도 10은 도 2의 뉴로모픽 연산 장치(1000)에 따른 연산 동작의 생략 횟수의 예시를 보여주는 표이다. 도 10을 참조하면, 컨볼루셔널 뉴럴 네트워크(CNN) 모델들 중 하나인 vgg16을 기반으로 부분합 데이터(PS)를 산출하는 연산 동작의 생략 횟수가 도시된다. 특징 데이터와 가중치 데이터가 각각 8-비트인 경우, 부호 비트를 제외한 7-비트들 중 실제 데이터 값을 나타내기 위한 비트의 개수를 유효 비트 수라고 가정한다. 예를 들어, 유효 비트 수가 5인 경우, 7-비트들 중 상위 2개의 비트들은 0일 수 있다.
각각의 레이어에 대하여, 특징 데이터의 평균 유효 비트 수와 가중치 데이터의 평균 유효 비트 수에 기초하여 감시 결과(MR)가 달라질 수 있다. 감시 결과(MR)에 따라 부분합 데이터(PS)를 산출하는 연산 동작의 생략 횟수가 달라질 수 있다. 예를 들어, 제1 레이어(L1)에서 특징 데이터의 평균 유효 비트 수가 6.00이고, 가중치 데이터의 평균 유효 비트 수가 6.76인 경우, 특징 데이터 중 0 비트(즉, 유효하지 않은 비트)에 대응하는 자릿수의 개수는 1이고, 가중치 데이터 중 0 비트에 대응하는 자릿수의 개수는 0일 수 있다. 이 경우, 7개의 부분합 데이터(PS)를 산출하는 연산 동작이 생략될 수 있다.
예를 들어, 제5 레이어(L5)에서 특징 데이터의 평균 유효 비트 수가 3.99이고, 가중치 데이터의 평균 유효 비트 수가 4.50인 경우, 도 3a 및 도 3b에 도시된 바와 같이, 감시 결과(MR)가 생성될 수 있다. 즉, 특징 데이터 중 0 비트에 대응하는 자릿수의 개수는 3이고, 가중치 데이터 중 0 비트에 대응하는 자릿수의 개수는 2일 수 있다. 이 경우, 앞에서 설명한 바와 같이, 29개의 부분합 데이터(PS)를 산출하는 연산 동작이 생략될 수 있다.
도 10에 도시된 바와 같이, 다중 레이어들을 갖는 뉴럴 네트워크를 기반으로 뉴럴 프로세싱이 수행되는 경우, 부분합 데이터(PS)를 산출하는 연산 동작은 약 1/2로 감소될 수 있다. 따라서, 뉴로모픽 연산 장치(1000)의 동작속도가 약 2배 이상 향상될 수 있고, 뉴로모픽 연산 장치(1000)가 저전력으로 동작할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 연산기
110: 부분합 데이터 생성기
111: 곱셈 레지스터
112: 디지털 아날로그 컨버터
113: 샘플 홀드 회로
114: 아날로그 디지털 컨버터
120: 시프트 덧셈기
130: 입력 레지스터
200: 입력 모니터링 회로
1000: 뉴로모픽 연산 장치
110: 부분합 데이터 생성기
111: 곱셈 레지스터
112: 디지털 아날로그 컨버터
113: 샘플 홀드 회로
114: 아날로그 디지털 컨버터
120: 시프트 덧셈기
130: 입력 레지스터
200: 입력 모니터링 회로
1000: 뉴로모픽 연산 장치
Claims (15)
- 복수의 특징 데이터 및 복수의 가중치 데이터 중 적어도 하나의 제1 자릿수의 제1 비트들이 모두 0인 것을 감시하여 감시 결과를 출력하도록 구성된 입력 모니터링 회로;
상기 복수의 특징 데이터 및 상기 복수의 가중치 데이터를 기반으로 복수의 부분합 데이터를 생성하는 연산 동작을 수행하되, 상기 감시 결과에 응답하여 상기 복수의 부분합 데이터 중 상기 제1 비트들에 대응하는 제1 부분합 데이터를 생성하는 연산 동작을 생략(skip)하도록 구성된 부분합 데이터 생성기; 및
상기 제1 부분합 데이터를 0 값으로 생성하고, 상기 복수의 부분합 데이터 중 상기 제1 부분합 데이터를 제외한 나머지 제2 부분합 데이터 및 상기 0 값으로 생성된 제1 부분합 데이터를 기반으로 결과 데이터를 생성하도록 구성된 시프트 덧셈기를 포함하는 뉴로모픽 연산 장치. - 제 1 항에 있어서,
상기 입력 모니터링 회로는 상기 제1 자릿수의 상기 제1 비트들을 입력들로 수신하는 OR 게이트를 포함하는 뉴로모픽 연산 장치. - 제 1 항에 있어서,
상기 입력 모니터링 회로는 상기 제1 자릿수의 상기 제1 비트들 각각을 게이트 단자들로 수신하는 모스펫들을 포함하고, 상기 모스펫의 일단은 접지 전압에 연결되고 타단은 전원 전압에 연결되는 뉴로모픽 연산 장치. - 제 1 항에 있어서,
상기 부분합 데이터 생성기는,
상기 복수의 특징 데이터의 제2 자릿수의 제2 비트들과 상기 복수의 가중치 데이터의 제3 자릿수의 제3 비트들을 기반으로 곱셈 비트들을 생성하도록 구성된 곱셈 레지스터;
상기 곱셈 비트들의 합에 대응하는 아날로그 신호를 생성하도록 구성된 디지털 아날로그 컨버터;
상기 아날로그 신호를 샘플링하도록 구성된 샘플 홀드 회로; 및
상기 샘플링된 아날로그 신호를 디지털 신호로 변환하여 상기 제2 부분합 데이터를 생성하도록 구성된 아날로그 디지털 컨버터를 포함하는 뉴로모픽 연산 장치. - 제 4 항에 있어서,
상기 곱셈 레지스터는 상기 제2 비트들 중 하나의 비트와 상기 제3 비트들 중 하나의 비트를 곱하여 상기 곱셈 비트들 중 하나를 생성하는 뉴로모픽 연산 장치. - 제 4 항에 있어서,
상기 곱셈 레지스터는 상기 제1 비트들을 기반으로 곱셈 비트들을 생성하는 동작을 생략하도록 더 구성된 뉴로모픽 연산 장치. - 제 4 항에 있어서,
상기 제2 비트들 중 적어도 하나는 1이고, 상기 제3 비트들 중 적어도 하나는 1인 뉴로모픽 연산 장치. - 제 1 항에 있어서,
상기 제1 비트들 각각은 부호를 나타내는 비트가 아닌 뉴로모픽 연산 장치. - 제 1 항에 있어서,
상기 결과 데이터는 상기 복수의 특징 데이터 및 상기 복수의 가중치 데이터의 합성곱 결과에 대응하는 뉴로모픽 연산 장치. - 뉴로모픽 연산 장치의 동작 방법에 있어서,
복수의 특징 데이터 및 복수의 가중치 데이터 중 적어도 하나의 제1 자릿수의 제1 비트들이 모두 0인 것으로 감시하여 감시 결과를 출력하는 단계;
상기 복수의 특징 데이터 및 상기 복수의 가중치 데이터를 기반으로 복수의 부분합 데이터를 생성하는 단계로서, 상기 감시 결과에 응답하여 상기 제1 비트들에 대응하는 제1 부분합 데이터를 생성하는 연산 동작을 생략하는 단계;
상기 제1 부분합 데이터의 값을 0으로 처리하는 단계; 및
상기 0으로 처리된 제1 부분합 데이터 및 상기 복수의 부분합 데이터 중에서 상기 제1 부분합 데이터를 제외한 나머지 부분합 데이터를 기반으로 뉴로모픽 연산의 결과 데이터를 생성하는 단계를 포함하는 동작 방법. - 제 10 항에 있어서,
상기 나머지 부분합 데이터는 제2 부분합 데이터를 포함하고,
상기 복수의 특징 데이터의 제2 자릿수의 제2 비트들과 상기 복수의 가중치 데이터의 제3 자릿수의 제3 비트들을 기반으로 상기 제2 부분합 데이터를 산출하는 단계를 더 포함하고,
상기 결과 데이터는 상기 제1 부분합 데이터 및 상기 제2 부분합 데이터를 기반으로 생성되는 동작 방법. - 제 11 항에 있어서,
상기 제2 부분합 데이터를 산출하는 단계는,
상기 제2 비트들과 상기 제3 비트들을 기반으로 곱셈 비트들을 생성하는 단계;
상기 곱셈 비트들의 합에 대응하는 아날로그 신호를 생성하는 단계;
상기 아날로그 신호를 샘플링하는 단계; 및
상기 샘플링된 아날로그 신호를 디지털 신호로 변환하여 상기 제2 부분합 데이터를 생성하는 단계를 포함하는 동작 방법. - 제 11 항에 있어서,
상기 제2 비트들 중 적어도 하나는 1이고, 상기 제3 비트들 중 적어도 하나는 1인 동작 방법. - 제 10 항에 있어서,
상기 제1 비트들 각각은 부호를 나타내는 비트가 아닌 동작 방법. - 제 10 항에 있어서,
상기 결과 데이터는 상기 복수의 특징 데이터 및 상기 복수의 가중치 데이터의 합성곱 결과에 대응하는 동작 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190005447A KR102556506B1 (ko) | 2019-01-15 | 2019-01-15 | 뉴로모픽 연산 장치 및 그것의 동작 방법 |
US16/742,808 US11494630B2 (en) | 2019-01-15 | 2020-01-14 | Neuromorphic arithmetic device and operating method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190005447A KR102556506B1 (ko) | 2019-01-15 | 2019-01-15 | 뉴로모픽 연산 장치 및 그것의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200088955A KR20200088955A (ko) | 2020-07-24 |
KR102556506B1 true KR102556506B1 (ko) | 2023-07-19 |
Family
ID=71516691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190005447A KR102556506B1 (ko) | 2019-01-15 | 2019-01-15 | 뉴로모픽 연산 장치 및 그것의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11494630B2 (ko) |
KR (1) | KR102556506B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102642528B1 (ko) * | 2020-11-18 | 2024-03-04 | 한국전자통신연구원 | 인공 지능 시스템의 그것의 인공 신경망 학습 방법 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5371023A (en) * | 1991-06-11 | 1994-12-06 | Hitachi, Ltd. | Gate circuit, semiconductor integrated circuit device and method of fabrication thereof, semiconductor memory and microprocessor |
KR0170505B1 (ko) | 1995-09-15 | 1999-03-30 | 양승택 | 다층퍼셉트론 신경회로망의 n비트 데이타 표현에 의한 학습방법 |
US8275727B2 (en) | 2009-11-13 | 2012-09-25 | International Business Machines Corporation | Hardware analog-digital neural networks |
US20160358069A1 (en) * | 2015-06-03 | 2016-12-08 | Samsung Electronics Co., Ltd. | Neural network suppression |
US10664271B2 (en) * | 2016-01-30 | 2020-05-26 | Hewlett Packard Enterprise Development Lp | Dot product engine with negation indicator |
US20170344876A1 (en) * | 2016-05-31 | 2017-11-30 | Samsung Electronics Co., Ltd. | Efficient sparse parallel winograd-based convolution scheme |
CN109328361B (zh) * | 2016-06-14 | 2020-03-27 | 多伦多大学管理委员会 | 用于深度神经网络的加速器 |
US11003985B2 (en) | 2016-11-07 | 2021-05-11 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
KR101827779B1 (ko) | 2016-12-05 | 2018-02-09 | 포항공과대학교 산학협력단 | 디지털-아날로그 변환기와 아날로그-디지털 변환기를 이용한 비트 직렬 곱셈누적 연산기 |
US10241971B2 (en) * | 2016-12-15 | 2019-03-26 | Hewlett Packard Enterprise Development Lp | Hierarchical computations on sparse matrix rows via a memristor array |
KR102390379B1 (ko) | 2017-03-06 | 2022-04-26 | 삼성전자주식회사 | 뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치 |
US20180253636A1 (en) | 2017-03-06 | 2018-09-06 | Samsung Electronics Co., Ltd. | Neural network apparatus, neural network processor, and method of operating neural network processor |
US10817260B1 (en) * | 2018-06-13 | 2020-10-27 | Amazon Technologies, Inc. | Reducing dynamic power consumption in arrays |
-
2019
- 2019-01-15 KR KR1020190005447A patent/KR102556506B1/ko active IP Right Grant
-
2020
- 2020-01-14 US US16/742,808 patent/US11494630B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11494630B2 (en) | 2022-11-08 |
US20200226456A1 (en) | 2020-07-16 |
KR20200088955A (ko) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010662B2 (en) | Massively parallel neural inference computing elements | |
CN112114776B (zh) | 一种量子乘法运算方法、装置、电子装置及存储介质 | |
EP3637325A1 (en) | Processing method and accelerating device | |
Lotrič et al. | Applicability of approximate multipliers in hardware neural networks | |
CN112162723B (zh) | 一种量子减法运算方法、装置、电子装置及存储介质 | |
CN111563599B (zh) | 一种量子线路的分解方法、装置、存储介质及电子装置 | |
EP3444757B1 (en) | Discrete data representation supported device and method for forward operation of artificial neural network | |
JPH07248841A (ja) | 非線形関数発生装置およびフォーマット変換装置 | |
CN110222833B (zh) | 一种用于神经网络的数据处理电路 | |
CN112119407B (zh) | 由补偿指令使能的低精度深度神经网络 | |
Saritha et al. | Adaptive and recursive vedic karatsuba multiplier using non linear carry select adder | |
KR101827779B1 (ko) | 디지털-아날로그 변환기와 아날로그-디지털 변환기를 이용한 비트 직렬 곱셈누적 연산기 | |
KR102556506B1 (ko) | 뉴로모픽 연산 장치 및 그것의 동작 방법 | |
JP2006154992A (ja) | ニューロプロセッサ | |
CN112214200B (zh) | 一种量子减法运算方法、装置、电子装置及存储介质 | |
Rasanjani et al. | Fundamental Digital Module Realization Using RTL Design for Quantum Mechanics | |
US11507813B2 (en) | Modulo operation unit | |
Zhang et al. | Reconfigurable multivalued memristor FPGA model for digital recognition | |
CN111860792A (zh) | 一种激活函数的硬件实现装置和方法 | |
WO2023124371A1 (zh) | 数据处理装置、方法、芯片、计算机设备及存储介质 | |
CN115809707B (zh) | 量子比较运算方法、装置、电子装置及基础算术组件 | |
Chang et al. | Design and implementation for a high-efficiency hardware accelerator to realize the learning machine for predicting OLED degradation | |
US11531896B2 (en) | Neural network circuit providing for operations with bit shifting and rounded values of weight information | |
Dorrance et al. | An energy-efficient Bayesian neural network accelerator with CiM and a time-interleaved Hadamard digital GRNG using 22-nm finFET | |
JP4290203B2 (ja) | リダクションアレイの装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |