KR20200143608A - 뉴럴 네트워크 가속기 - Google Patents

뉴럴 네트워크 가속기 Download PDF

Info

Publication number
KR20200143608A
KR20200143608A KR1020190070884A KR20190070884A KR20200143608A KR 20200143608 A KR20200143608 A KR 20200143608A KR 1020190070884 A KR1020190070884 A KR 1020190070884A KR 20190070884 A KR20190070884 A KR 20190070884A KR 20200143608 A KR20200143608 A KR 20200143608A
Authority
KR
South Korea
Prior art keywords
bits
weight
data
digits
feature
Prior art date
Application number
KR1020190070884A
Other languages
English (en)
Other versions
KR102434401B1 (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 KR1020190070884A priority Critical patent/KR102434401B1/ko
Priority to US16/868,845 priority patent/US11562218B2/en
Priority to JP2020096132A priority patent/JP7028911B2/ja
Publication of KR20200143608A publication Critical patent/KR20200143608A/ko
Priority to KR1020220102105A priority patent/KR20220119571A/ko
Application granted granted Critical
Publication of KR102434401B1 publication Critical patent/KR102434401B1/ko
Priority to US18/085,939 priority patent/US11954582B2/en
Priority to US18/604,268 priority patent/US20240220786A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기는 입력 특징 데이터의 제1 특징 비트들 및 가중치 데이터의 제1 가중치 비트들에 대한 곱셈을 수행하여 제1 곱셈 결과를 생성하도록 구성된 제1 비트 연산기, 상기 입력 특징 데이터의 제2 특징 비트들 및 상기 가중치 데이터의 제2 가중치 비트들에 대한 곱셈을 수행하여 제2 곱셈 결과를 생성하도록 구성된 제2 비트 연산기, 상기 제1 곱셈 결과 및 상기 제2 곱셈 결과를 기반으로 덧셈을 수행하여 덧셈 결과를 생성하도록 구성된 덧셈기, 시프트 값에 따라 상기 덧셈 결과의 자릿수를 시프트하여 시프트된 덧셈 결과를 생성하도록 구성된 시프터, 및 상기 시프트된 덧셈 결과를 기반으로 출력 특징 데이터를 생성하도록 구성된 누산기를 포함한다.

Description

뉴럴 네트워크 가속기{NEURAL NETWORK ACCELERATOR}
본 발명은 반도체 장치에 관한 것으로써, 좀 더 상세하게는 정밀도 가변(precision scalable) 뉴럴 네트워크 가속기에 관한 것이다.
뉴럴 네트워크 가속기는 사람의 두뇌를 모방하여 데이터를 처리하는 하드웨어이다. 뉴럴 네트워크 가속기는 다양한 뉴럴 네트워크 알고리즘을 기반으로 데이터를 처리할 수 있다. 데이터를 처리하기 위해, 뉴럴 네트워크 가속기는 방대한 양의 매트릭스 곱셈을 수행할 수 있다. 이 경우, 데이터 저장을 위한 많은 메모리 사용량 및 데이터 처리를 위한 많은 연산량이 요구될 수 있다. 메모리 사용량 및 연산량을 감소시키기 위해, 데이터의 비트 수를 감소시키는 것과 같이, 데이터의 정밀도(precision)를 낮추는 연구가 진행되고 있다. 데이터의 정밀도가 낮아지는 경우, 메모리 사용량 및 연산량이 감소하는 대신에 뉴럴 네트워크 연산의 정확도(accuracy)가 감소될 수 있다.
뉴럴 네트워크 연산에 요구되는 정확도는 애플리케이션(application)에 따라 다를 수 있다. 다양한 애플리케이션을 지원하기 위해, 요구되는 정확도에 따른 정밀도를 기반으로 연산을 수행할 수 있는 뉴럴 네트워크 가속기가 필요하다. 그러나, 이러한 정밀도 가변 뉴럴 네트워크 가속기가 구현되는 경우, 하드웨어 면적이 커질 수 있고, 연산에 있어 소모되는 전력이 커질 수 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 작은 하드웨어 면적을 가지며, 연산에 있어 적은 전력을 소모하는 정밀도 가변 뉴럴 네트워크 가속기를 제공하는데 있다.
본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기는 입력 특징 데이터의 제1 특징 비트들 및 가중치 데이터의 제1 가중치 비트들에 대한 곱셈을 수행하여 제1 곱셈 결과를 생성하도록 구성된 제1 비트 연산기, 상기 입력 특징 데이터의 제2 특징 비트들 및 상기 가중치 데이터의 제2 가중치 비트들에 대한 곱셈을 수행하여 제2 곱셈 결과를 생성하도록 구성된 제2 비트 연산기, 상기 제1 곱셈 결과 및 상기 제2 곱셈 결과를 기반으로 덧셈을 수행하여 덧셈 결과를 생성하도록 구성된 덧셈기, 시프트 값에 따라 상기 덧셈 결과의 자릿수를 시프트하여 시프트된 덧셈 결과를 생성하도록 구성된 시프터, 및 상기 시프트된 덧셈 결과를 기반으로 출력 특징 데이터를 생성하도록 구성된 누산기를 포함한다.
하나의 실시 예에 있어서, 상기 시프트 값은 상기 입력 특징 데이터에서 상기 제1 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제1 가중치 비트들의 자릿수에 기초하여 결정되거나 상기 입력 특징 데이터에서 상기 제2 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제2 가중치 비트들의 자릿수에 기초하여 결정될 수 있다.
하나의 실시 예에 있어서, 상기 입력 특징 데이터는 상기 제1 비트 연산기 및 상기 제2 비트 연산기의 동작 비트 수에 따라 상기 제1 특징 비트들 및 상기 제2 특징 비트들로 분할되고, 상기 가중치 데이터는 상기 동작 비트 수에 따라 상기 제1 가중치 비트들 및 상기 제2 가중치 비트들로 분할될 수 있다.
하나의 실시 예에 있어서, 상기 제1 특징 비트들의 비트 수와 상기 제1 가중치 비트들의 비트 수는 동일할 수 있다.
하나의 실시 예에 있어서, 상기 제1 비트 연산기는 XNOR 연산 또는 AND 연산 중 선택 신호에 따라 선택된 하나를 기반으로 상기 제1 곱셈 결과를 생성할 수 있다.
하나의 실시 예에 있어서, 상기 출력 특징 데이터는 상기 입력 특징 데이터와 상기 가중치 데이터에 대한 곱셈 결과일 수 있다.
본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기는 입력 특징 데이터의 제1 특징 비트들 및 가중치 데이터의 제1 가중치 비트들을 기반으로 제1 연산 결과를 생성하도록 구성된 제1 프로세싱 회로, 상기 입력 특징 데이터의 제2 특징 비트들 및 상기 가중치 데이터의 제2 가중치 비트들을 기반으로 제2 연산 결과를 생성하도록 구성된 제2 프로세싱 회로, 제1 시프트 값에 따라 상기 제1 연산 결과의 자릿수를 시프트하여 제1 시프트된 연산 결과를 생성하도록 구성된 제1 시프터, 상기 제1 시프트 값과 다른 제2 시프트 값에 따라 상기 제2 연산 결과의 자릿수를 시프트하여 제2 시프트된 연산 결과를 생성하도록 구성된 제2 시프터, 및 상기 제1 시프트된 연산 결과 및 상기 제2 시프트된 연산 결과를 기반으로 출력 특징 데이터를 생성하도록 구성된 누산기를 포함한다.
하나의 실시 예에 있어서, 상기 제1 시프트 값은 상기 입력 특징 데이터에서 상기 제1 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제1 가중치 비트들의 자릿수에 기초하여 결정되고, 상기 제2 시프트 값은 상기 입력 특징 데이터에서 상기 제2 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제2 가중치 비트들의 자릿수에 기초하여 결정될 수 있다.
하나의 실시 예에 있어서, 상기 제1 프로세싱 회로는 상기 제1 특징 비트들 및 상기 제1 가중치 비트들에 대한 제1 곱셈 결과와 상기 입력 특징 데이터의 제3 특징 비트들 및 상기 가중치 데이터의 제3 가중치 비트들에 대한 제2 곱셈 결과를 더하여 상기 제1 연산 결과를 생성할 수 있다.
하나의 실시 예에 있어서, 상기 입력 특징 데이터에서 상기 제1 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제1 가중치 비트들의 자릿수에 기초하여 결정되는 상기 제1 곱셈 결과의 자릿수와 상기 입력 특징 데이터에서 상기 제3 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제3 가중치 비트들의 자릿수에 기초하여 결정되는 상기 제2 곱셈 결과의 자릿수는 동일할 수 있다.
하나의 실시 예에 있어서, 상기 제1 특징 비트들의 비트 수와 상기 제1 가중치 비트들의 비트 수는 동일할 수 있다.
하나의 실시 예에 있어서, 상기 출력 특징 데이터는 상기 입력 특징 데이터와 상기 가중치 데이터에 대한 곱셈 결과일 수 있다.
본 발명에 따르면, 하드웨어 면적이 감소된 정밀도 가변 뉴럴 네트워크 가속기가 제공될 수 있다.
또한, 본 발명에 따르면, 뉴럴 네트워크 연산에 있어서 전력 소모가 최소화될 수 있는 정밀도 가변 뉴럴 네트워크 가속기가 제공될 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기의 블록도를 보여준다.
도 2는 도 1의 프로세싱 회로의 예시적인 블록도를 보여준다.
도 3a 및 도 3b는 도 2의 프로세싱 회로가 입력 특징 데이터 및 가중치 데이터를 기반으로 출력 특징 데이터를 생성하는 하나의 예시를 보여준다.
도 4는 도 2의 프로세싱 회로가 입력 특징 데이터 및 가중치 데이터를 기반으로 출력 특징 데이터를 생성하는 다른 예시를 보여준다.
도 5는 도 2의 프로세싱 회로의 동작의 예시를 보여주는 순서도이다.
도 6a는 도 2의 비트 연산기를 구성하는 회로의 예시를 보여준다.
도 6b는 도 6a의 회로와 동일한 동작을 수행하는 회로의 예시를 보여준다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시 예들이 상세하게 설명된다. 이하의 설명에서, 상세한 구성들 및 구조들과 같은 세부적인 사항들은 단순히 본 발명의 실시 예들의 전반적인 이해를 돕기 위하여 제공된다. 그러므로 본 발명의 기술적 사상 및 범위로부터의 벗어남 없이 본문에 기재된 실시 예들의 변형들은 통상의 기술자 의해 수행될 수 있다. 더욱이, 명확성 및 간결성을 위하여 잘 알려진 기능들 및 구조들에 대한 설명들은 생략된다. 본 명세서에서 사용된 용어들은 본 발명의 기능들을 고려하여 정의된 용어들이며, 특정 기능에 한정되지 않는다. 용어들의 정의는 상세한 설명에 기재된 사항을 기반으로 결정될 수 있다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
다르게 정의되지 않는 한, 본문에서 사용되는 기술적 또는 과학적인 의미를 포함하는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에 의해 이해될 수 있는 의미를 갖는다. 일반적으로 사전에서 정의된 용어들은 관련된 기술 분야에서의 맥락적 의미와 동등한 의미를 갖도록 해석되며, 본문에서 명확하게 정의되지 않는 한, 이상적 또는 과도하게 형식적인 의미를 갖도록 해석되지 않는다.
도 1은 본 발명의 하나의 실시 예에 따른 뉴럴 네트워크 가속기의 블록도를 보여준다. 뉴럴 네트워크 가속기(1000)는 뉴럴 네트워크를 기반으로 입력 특징 데이터(IF)를 처리하여 출력 특징 데이터(OF)를 생성할 수 있다. 예를 들어, 뉴럴 네트워크 가속기(1000)는 컨볼루셔널 뉴럴 네트워크(CNN; Convolutional Neural Network)를 기반으로 입력 특징 데이터(IF)를 처리할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 뉴럴 네트워크 가속기(1000)는 다양한 뉴럴 네트워크 알고리즘을 이용할 수 있다.
도 1을 참조하면, 뉴럴 네트워크 가속기(1000)는 메모리(10) 및 프로세싱 회로(100)를 포함할 수 있다. 메모리(10)는 가중치 데이터(WT)를 저장할 수 있다. 예를 들어, 가중치 데이터(WT)는 커널(kernel) 데이터일 수 있다. 예를 들어, 메모리(10)는 DRAM, SRAM 등의 휘발성 메모리 또는 플래시 메모리, MRAM 등의 비휘발성 메모리로 구현될 수 있다.
프로세싱 회로(100)는 메모리(10)로부터 가중치 데이터(WT)를 수신하고, 가중치 데이터(WT) 및 입력 특징 데이터(IF)를 기반으로 연산을 수행할 수 있다. 프로세싱 회로(100)는 연산 결과로서 출력 특징 데이터(OF)를 생성할 수 있다.
도 1에서는 메모리(10)가 뉴럴 네트워크 가속기(1000) 내부에 포함되는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 뉴럴 네트워크 가속기(1000)는 외부의 메모리로부터 가중치 데이터(WT)를 수신할 수 있다.
본 발명의 실시 예들에 따른 뉴럴 네트워크 가속기(1000)는 요구되는 정확도에 따라 가변되는 데이터 정밀도를 기반으로 연산을 수행할 수 있다. 구체적으로, 요구되는 정확도에 따라 입력 특징 데이터(IF) 및 가중치 데이터(WT)의 비트 수가 달라지더라도, 뉴럴 네트워크 가속기(1000)는 다양한 비트 수를 가지는 입력 특징 데이터(IF) 및 가중치 데이터(WT)를 기반으로 연산을 수행할 수 있다. 이에 따라, 뉴럴 네트워크 가속기(1000)는 뉴럴 네트워크를 기반으로 다양한 정확도를 요구하는 애플리케이션들에 대하여 효율적인 연산을 수행할 수 있다.
도 2는 도 1의 프로세싱 회로의 예시적인 블록도를 보여준다. 도 2를 참조하면, 프로세싱 회로(100)는 제1 내지 제n 서브 프로세싱 회로들(110-130), 제1 내지 제n 시프터들(140-160), 및 누산기(170)를 포함할 수 있다. 제1 서브 프로세싱 회로(110)는 제1 내지 제4 비트 연산기들(111-114) 및 제1 덧셈기(115)를 포함할 수 있다. 제2 서브 프로세싱 회로(120)는 제5 내지 제8 비트 연산기들(121-124) 및 제2 덧셈기(125)를 포함할 수 있다. 제n 서브 프로세싱 회로(130)는 제(4n-3) 내지 제4n 비트 연산기들(131-134) 및 제n 덧셈기(135)를 포함할 수 있다.
비트 연산기들 각각은 입력되는 두 데이터에 대하여 곱셈을 수행할 수 있다. 예를 들어, 입력 특징 데이터(IF) 중 일부 비트들 및 가중치 데이터(WT) 중 일부 비트들이 제1 비트 연산기(111)로 제공될 수 있다. 이 경우, 제1 비트 연산기(111)는 제공된 입력 특징 데이터(IF) 중 일부 비트들 및 가중치 데이터(WT) 중 일부 비트들에 대하여 곱셈 연산을 수행할 수 있다. 예를 들어, 비트 연산기들 각각은 2-비트씩(즉, 비트 연산기의 동작 비트 수가 2-비트) 곱셈을 수행할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니다.
덧셈기들 각각은 대응하는 비트 연산기들로부터 연산 결과들을 수신하고, 수신된 연산 결과들에 대하여 덧셈을 수행할 수 있다. 예를 들어, 제1 덧셈기(115)는 제1 내지 제4 비트 연산기들(111-114)로부터 제공되는 연산 결과들에 대하여 덧셈을 수행할 수 있다.
시프터들 각각은 대응하는 서브 프로세싱 회로로부터 제공된 덧셈 결과의 자릿수를 시프트할 수 있다. 예시적인 실시 예에서, 시프터들 각각은 미리 정해진 시프트 값에 따라 덧셈 결과의 자릿수를 시프트하거나, 또는 별도의 제어 신호로서 입력되는 시프트 값에 따라 덧셈 결과의 자릿수를 시프트할 수 있다. 예를 들어, 시프터는 시프트 값에 따라 덧셈 결과에 0-비트들을 추가하여 덧셈 결과의 자릿수를 시프트할 수 있다.
예시적인 실시 예에서, 시프터들은 서로 다른 시프트 값에 따라 덧셈 결과의 자릿수를 시프트할 수 있다. 예를 들어, 제1 시프터(140)는 덧셈 결과의 자릿수를 4만큼 시프트하고, 제2 시프터(150)는 덧셈 결과의 자릿수를 2만큼 시프트할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 서로 다른 시프터가 동일한 시프트 값에 따라 덧셈 결과의 자릿수를 시프트할 수 있다.
누산기(170)는 시프터들(140-160)로부터 시프트된 덧셈 결과들을 수신할 수 있다. 누산기(170)는 시프트된 덧셈 결과들에 대하여 덧셈을 수행할 수 있다. 이에 따라, 덧셈 결과로서 출력 특징 데이터(OF) 또는 부분합(partial sum)이 생성될 수 있다. 덧셈 결과로서 출력 특징 데이터(OF)가 생성되는 경우, 누산기(170)는 출력 특징 데이터(OF)를 출력할 수 있다. 덧셈 결과로서 부분합이 생성되는 경우, 누산기(170)는 생성되는 부분합들을 누적하여 출력 특징 데이터(OF)를 생성할 수 있다.
도 2에서는 프로세싱 회로(100)가 n개의 서브 프로세싱 회로들(110-130)을 포함하는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 프로세싱 회로(100)는 다양한 개수의 서브 프로세싱 회로들을 포함할 수 있다. 이 경우, 서브 프로세싱 회로들의 개수에 따라 대응하는 시프터들의 개수가 달라질 수 있다.
도 2에서는 하나의 서브 프로세싱 회로가 4개의 비트 연산기들 및 하나의 덧셈기를 포함하는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 하나의 서브 프로세싱 회로는 다양한 개수의 비트 연산기들 및 다양한 개수의 덧셈기를 포함할 수 있다.
이하에서는, 도 3a 내지 도 5를 참조로 하여 도 2의 프로세싱 회로(100)의 동작을 자세하게 설명할 것이다. 설명의 편의를 위해, 뉴럴 네트워크 가속기(1000)가 4-비트의 입력 특징 데이터(IF) 및 4-비트의 가중치 데이터(WT)를 기반으로 출력 특징 데이터(OF)를 산출하는 것으로 가정한다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 뉴럴 네트워크 가속기(1000)는 다양한 비트 수의 입력 특징 데이터(IF) 및 가중치 데이터(WT)에 대한 연산을 지원할 수 있다. 즉, 뉴럴 네트워크 가속기(1000)는 다양한 정밀도를 가지는 데이터에 대한 연산을 지원할 수 있다. 또한, 설명의 편의를 위해, 비트 연산기들 각각이 2-비트씩 곱셈을 수행하는 것으로 가정한다. 즉, 비트 연산기의 동작 비트 수가 2-비트인 것으로 가정하지만, 본 발명이 이에 한정되는 것은 아니다.
도 3a 및 도 3b는 도 2의 프로세싱 회로가 입력 특징 데이터 및 가중치 데이터를 기반으로 출력 특징 데이터를 생성하는 하나의 예시를 보여준다. 프로세싱 회로(200)는 제1 및 제2 입력 특징 데이터(IF1, IF2)와 제1 및 제2 가중치 데이터(WT1, WT2)를 기반으로 출력 특징 데이터(OF)를 산출할 수 있다. 구체적으로, 프로세싱 회로(200)는 제1 입력 특징 데이터(IF1) 및 대응하는 제1 가중치 데이터(WT1)에 대한 곱셈 결과와 제2 입력 특징 데이터(IF2) 및 대응하는 제2 가중치 데이터(WT2)에 대한 곱셈 결과를 더하여 출력 특징 데이터(OF)를 산출할 수 있다. 출력 특징 데이터(OF)를 산출하기 위해, 도 3a에 도시된 바와 같이, 프로세싱 회로(200)는 제1 부분합(PS1)을 먼저 산출할 수 있다. 그 다음으로, 도 3b에 도시된 바와 같이, 프로세싱 회로(200)는 제2 부분합(PS2)을 산출할 수 있다. 이 경우, 제1 부분합(PS1) 및 제2 부분합(PS2)은 원하는 특징 출력 데이터(OF)를 산출하기 위한 중간 데이터일 수 있다. 프로세싱 회로(200)는 제1 부분합(PS1) 및 제2 부분합(PS2)을 더하여 출력 특징 데이터(OF)를 생성할 수 있다.
이하에서는, 도 3a를 참조하여 제1 부분합(PS1)의 산출 동작을 설명한 후, 도 3b를 참조하여 제2 부분합(PS2)의 산출 동작을 설명할 것이다.
먼저, 도 3a를 참조하면, 프로세싱 회로(200)는 제1 및 제2 입력 특징 데이터(IF1, IF2)와 제1 및 제2 가중치 데이터(WT1, WT2)를 수신할 수 있다. 예를 들어, 제1 입력 특징 데이터(IF1)는 '1011'이고, 제2 입력 특징 데이터(IF2)는 '0111'일 수 있다. 제1 가중치 데이터(WT1)는 '0110'이고, 제2 가중치 데이터(WT2)는 '0011'일 수 있다.
제1 및 제2 입력 특징 데이터(IF1, IF2)와 제1 및 제2 가중치 데이터(WT1, WT2)는 비트 연산기의 동작 비트 수에 따라 2-비트씩 분할될 수 있다. 예를 들어, 제1 입력 특징 데이터(IF1)는 특징 비트들(f11, f12)로 분할되고, 제2 입력 특징 데이터(IF2)는 특징 비트들(f21, f22)로 분할될 수 있다. 제1 가중치 데이터(WT1)는 가중치 비트들(w11, w12)로 분할되고, 제2 가중치 데이터(WT2)는 가중치 비트들(w21, w22)로 분할될 수 있다. 이 경우, 특징 비트들(f11, f21)의 자릿수는 특징 비트들(f12, f22)의 자릿수보다 높을 수 있고, 가중치 비트들(w11, w21)의 자릿수는 가중치 비트들(w12, w22)의 자릿수보다 높을 수 있다.
분할된 비트들은 분할된 비트들의 자릿수를 고려하여 서브 프로세싱 회로 및 비트 연산기로 제공될 수 있다. 예를 들어, 제1 부분합(PS1)을 산출하기 위해, 특징 비트들(f11) 및 가중치 비트들(w11)은 제1 서브 프로세싱 회로(210)의 제1 비트 연산기(211)로 제공될 수 있다. 특징 비트들(f21) 및 가중치 비트들(w21)은 제1 서브 프로세싱 회로(210)의 제2 비트 연산기(212)로 제공될 수 있다. 이 경우, 출력 특징 데이터(OF)를 기준으로 특징 비트들(f11) 및 가중치 비트들(w11)에 대한 제1 곱셈 결과(MR1)의 자릿수와 특징 비트들(f21) 및 가중치 비트들(w21)에 대한 제2 곱셈 결과(MR2)의 자릿수는 동일할 수 있다. 특징 비트들(f12) 및 가중치 비트들(w11)은 제2 서브 프로세싱 회로(220)의 제5 비트 연산기(221)로 제공될 수 있다. 특징 비트들(f22) 및 가중치 비트들(w21)은 제2 서브 프로세싱 회로(220)의 제6 비트 연산기(222)로 제공될 수 있다. 이 경우, 출력 특징 데이터(OF)를 기준으로 특징 비트들(f12) 및 가중치 비트들(w11)에 대한 제3 곱셈 결과(MR3)의 자릿수와 특징 비트들(f22) 및 가중치 비트들(w21)에 대한 제4 곱셈 결과(MR4)의 자릿수는 동일할 수 있다.
비트들을 수신한 비트 연산기는 수신된 비트들을 기반으로 곱셈 연산을 수행할 수 있다. 예를 들어, 제1 비트 연산기(211)는 특징 비트들(f11) 및 가중치 비트들(w11)에 대한 곱셈을 수행하여 제1 곱셈 결과(MR1)를 산출할 수 있다.
덧셈기는 제공되는 곱셈 결과들을 더하여 덧셈 결과를 생성할 수 있다. 예를 들어, 제1 덧셈기(215)는 제1 곱셈 결과(MR1) 및 제2 곱셈 결과(MR2)를 더하여 제1 덧셈 결과(AR1)를 생성할 수 있다. 생성된 덧셈 결과는 대응하는 시프터로 제공될 수 있다. 예를 들어, 제1 덧셈 결과(AR1)는 대응하는 제1 시프터(230)로 제공될 수 있다.
시프터는 시프트 값에 따라 덧셈 결과의 자릿수를 시프트할 수 있다. 예를 들어, 제1 시프터(230)는 4인 시프트 값에 따라 제1 덧셈 결과(AR1)의 자릿수를 4만큼 시프트할 수 있다. 이 경우, 시프트 값 '4'는 특징 비트들(f11, f21) 및 가중치 비트들(w11, w21)의 자릿수에 기초하여 정해질 수 있다. 제2 시프터(240)는 2인 시프트 값에 따라 제2 덧셈 결과(AR2)의 자릿수를 2만큼 시프트할 수 있다. 이 경우, 시프트 값 '2'는 특징 비트들(f12, f22) 및 가중치 비트들(w11, w21)의 자릿수에 기초하여 정해질 수 있다. 이에 따라, 제1 시프터(230)로부터 제1 시프트된 덧셈 결과(SR1)가 생성되고, 제2 시프터(240)로부터 제2 시프트된 덧셈 결과(SR2)가 생성될 수 있다.
누산기(250)는 제1 시프트된 덧셈 결과(SR1) 및 제2 시프트된 덧셈 결과(SR2)를 더하여 제1 부분합(PS1)을 생성할 수 있다.
도 3b를 참조하면, 제2 부분합(PS2)을 산출하기 위해, 분할된 비트들이 분할된 비트의 자릿수를 고려하여 서브 프로세싱 회로 및 비트 연산기로 제공될 수 있다. 예를 들어, 특징 비트들(f11) 및 가중치 비트들(w12)은 제1 서브 프로세싱 회로(210)의 제1 비트 연산기(211)로 제공될 수 있다. 특징 비트들(f21) 및 가중치 비트들(w22)은 제1 서브 프로세싱 회로(210)의 제2 비트 연산기(212)로 제공될 수 있다. 이 경우, 출력 특징 데이터(OF)를 기준으로 특징 비트들(f11) 및 가중치 비트들(w12)에 대한 제5 곱셈 결과(MR5)의 자릿수와 특징 비트들(f21) 및 가중치 비트들(w22)에 대한 제6 곱셈 결과(MR6)의 자릿수는 동일할 수 있다. 특징 비트들(f12) 및 가중치 비트들(w12)은 제2 서브 프로세싱 회로(220)의 제5 비트 연산기(221)로 제공될 수 있다. 특징 비트들(f22) 및 가중치 비트들(w22)은 제2 서브 프로세싱 회로(220)의 제6 비트 연산기(222)로 제공될 수 있다. 이 경우, 출력 특징 데이터(OF)를 기준으로 특징 비트들(f12) 및 가중치 비트들(w12)에 대한 제7 곱셈 결과(MR7)의 자릿수와 특징 비트들(f22) 및 가중치 비트들(w22)에 대한 제8 곱셈 결과(MR8)의 자릿수는 동일할 수 있다.
비트들을 수신한 비트 연산기는 수신된 비트들을 기반으로 곱셈 연산을 수행할 수 있다. 예를 들어, 제1 비트 연산기(211)는 특징 비트들(f11) 및 가중치 비트들(w12)에 대한 곱셈을 수행하여 제5 곱셈 결과(MR5)를 산출할 수 있다.
덧셈기는 제공되는 곱셈 결과들을 더하여 덧셈 결과를 생성할 수 있다. 예를 들어, 제1 덧셈기(215)는 제5 곱셈 결과(MR5) 및 제6 곱셈 결과(MR6)를 더하여 제3 덧셈 결과(AR3)를 생성할 수 있다. 생성된 덧셈 결과는 대응하는 시프터로 제공될 수 있다.
시프터는 시프트 값에 따라 덧셈 결과의 자릿수를 시프트할 수 있다. 예를 들어, 제1 시프터(230)는 2인 시프트 값에 따라 제3 덧셈 결과(AR3)의 자릿수를 2만큼 시프트할 수 있다. 이 경우, 시프트 값 '2'는 특징 비트들(f11, f21) 및 가중치 비트들(w12, w22)의 자릿수에 기초하여 정해질 수 있다. 제2 시프터(240)는 0인 시프트 값에 따라 제4 덧셈 결과(AR4)의 자릿수를 시프트하지 않을 수 있다. 이 경우, 시프트 값 '0'은 특징 비트들(f12, f22) 및 가중치 비트들(w12, w22)의 자릿수에 기초하여 정해질 수 있다. 이에 따라, 제1 시프터(230)로부터 제3 시프트된 덧셈 결과(SR3)가 생성되고, 제2 시프터(240)로부터 제4 시프트된 덧셈 결과(SR4)가 생성될 수 있다.
누산기(250)는 제3 시프트된 덧셈 결과(SR3) 및 제4 시프트된 덧셈 결과(SR4)를 더하여 제2 부분합(PS2)을 생성할 수 있다. 누산기(250)는 미리 저장된 제1 부분합(PS1)과 제2 부분합(PS2)을 더하여 출력 특징 데이터(OF)를 생성할 수 있다.
도 4는 도 2의 프로세싱 회로가 입력 특징 데이터 및 가중치 데이터를 기반으로 출력 특징 데이터를 생성하는 다른 예시를 보여준다. 도 4를 참조하면, 프로세싱 회로(300)는 제1 및 제2 입력 특징 데이터(IF1, IF2)와 제1 및 제2 가중치 데이터(WT1, WT2)를 수신할 수 있다. 예를 들어, 제1 입력 특징 데이터(IF1)는 '1011'이고, 제2 입력 특징 데이터(IF2)는 '0111'일 수 있다. 제1 가중치 데이터(WT1)는 '0110'이고, 제2 가중치 데이터(WT2)는 '0011'일 수 있다.
제1 및 제2 입력 특징 데이터(IF1, IF2)와 제1 및 제2 가중치 데이터(WT1, WT2)는, 도 3a 및 도 3b를 참조하여 설명한 바와 같이, 비트 연산기의 동작 비트 수에 따라 2-비트씩 분할될 수 있다.
분할된 비트들은 분할된 비트들의 자릿수를 고려하여 서브 프로세싱 회로 및 비트 연산기로 제공될 수 있다. 예를 들어, 특징 비트들(f11) 및 가중치 비트들(w11)은 제1 서브 프로세싱 회로(310)의 제1 비트 연산기(311)로 제공될 수 있다. 특징 비트들(f21) 및 가중치 비트들(w21)은 제1 서브 프로세싱 회로(310)의 제2 비트 연산기(312)로 제공될 수 있다. 이 경우, 출력 특징 데이터(OF)를 기준으로 특징 비트들(f11) 및 가중치 비트들(w11)에 대한 제1 곱셈 결과(MR1)의 자릿수와 특징 비트들(f21) 및 가중치 비트들(w21)에 대한 제2 곱셈 결과(MR2)의 자릿수는 동일할 수 있다. 특징 비트들(f12) 및 가중치 비트들(w11)은 제2 서브 프로세싱 회로(320)의 제5 비트 연산기(321)로 제공될 수 있다. 특징 비트들(f22) 및 가중치 비트들(w21)은 제2 서브 프로세싱 회로(320)의 제6 비트 연산기(322)로 제공될 수 있다. 특징 비트들(f11) 및 가중치 비트들(w12)은 제2 서브 프로세싱 회로(320)의 제7 비트 연산기(323)로 제공될 수 있다. 특징 비트들(f21) 및 가중치 비트들(w22)은 제2 서브 프로세싱 회로(320)의 제8 비트 연산기(324)로 제공될 수 있다. 이 경우, 출력 특징 데이터(OF)를 기준으로 특징 비트들(f12) 및 가중치 비트들(w11)에 대한 제3 곱셈 결과(MR3)의 자릿수, 특징 비트들(f22) 및 가중치 비트들(w21)에 대한 제4 곱셈 결과(MR4)의 자릿수, 특징 비트들(f11) 및 가중치 비트들(w12)에 대한 제5 곱셈 결과(MR5)의 자릿수, 및 특징 비트들(f21) 및 가중치 비트들(w22)에 대한 제6 곱셈 결과(MR6)의 자릿수는 모두 동일할 수 있다. 특징 비트들(f12) 및 가중치 비트들(w12)은 제3 서브 프로세싱 회로(330)의 제9 비트 연산기(331)로 제공될 수 있다. 특징 비트들(f22) 및 가중치 비트들(w22)은 제3 서브 프로세싱 회로(330)의 제10 비트 연산기(332)로 제공될 수 있다. 이 경우, 출력 특징 데이터(OF)를 기준으로 특징 비트들(f12) 및 가중치 비트들(w12)에 대한 제7 곱셈 결과(MR7)의 자릿수와 특징 비트들(f22) 및 가중치 비트들(w22)에 대한 제8 곱셈 결과(MR8)의 자릿수는 동일할 수 있다.
비트들을 수신한 비트 연산기는 수신된 비트들을 기반으로 곱셈 연산을 수행할 수 있다. 예를 들어, 제1 비트 연산기(311)는 특징 비트들(f11) 및 가중치 비트들(w11)에 대한 곱셈을 수행하여 제1 곱셈 결과(MR1)를 산출할 수 있다.
덧셈기는 제공되는 곱셈 결과들을 더하여 덧셈 결과를 생성할 수 있다. 예를 들어, 제2 덧셈기(325)는 제3 내지 제6 곱셈 결과들(MR3-MR6)을 더하여 제2 덧셈 결과(AR2)를 생성할 수 있다. 생성된 덧셈 결과는 대응하는 시프터로 제공될 수 있다.
시프터는 시프트 값에 따라 덧셈 결과의 자릿수를 시프트할 수 있다. 예를 들어, 제1 시프터(340)는 4인 시프트 값에 따라 제1 덧셈 결과(AR1)의 자릿수를 4만큼 시프트할 수 있다. 이 경우, 시프트 값 '4'는 특징 비트들(f11, f21) 및 가중치 비트들(w11, w21)의 자릿수에 기초하여 정해질 수 있다. 제2 시프터(350)는 2인 시프트 값에 따라 제2 덧셈 결과(AR2)의 자릿수를 2만큼 시프트할 수 있다. 이 경우, 시프트 값 '2'는 특징 비트들(f11, f12, f21, f22) 및 가중치 비트들(w11, w12, w21, w22)의 자릿수에 기초하여 정해질 수 있다. 제3 시프터(360)는 0인 시프트 값에 따라 제3 덧셈 결과(AR3)의 자릿수를 0만큼 시프트할 수 있다. 이 경우, 시프트 값 '0'은 특징 비트들(f12, f22) 및 가중치 비트들(w12, w22)의 자릿수에 기초하여 정해질 수 있다. 이에 따라, 제1 내지 제3 시프터들(340-360)로부터 제1 내지 제3 시프트된 덧셈 결과들(SR1-SR3)이 생성될 수 있다.
누산기(370)는 제1 내지 제3 시프트된 덧셈 결과들(SR1-SR3)을 더하여 출력 특징 데이터(OF)를 생성할 수 있다.
상술한 바와 같이, 본 발명의 실시 예들에 따른 프로세싱 회로는 입력 특징 데이터(IF)의 특징 비트들 및 가중치 데이터(WT)의 가중치 비트들의 자릿수를 고려하여 출력 특징 데이터(OF)를 산출하기 위한 연산을 수행할 수 있다. 이 경우, 하나의 서브 프로세싱 회로의 비트 연산기들로부터 산출되는 곱셈 결과들의 자릿수가 동일하므로, 비트 연산기들 각각으로부터 산출되는 곱셈 결과의 자릿수를 시프트하지 않고, 곱셈 결과들을 더할 수 있다. 이에 따라, 본 발명의 실시 예들에 따른 프로세싱 회로는 비트 연산기들 각각에 대응하는 시프터를 포함하지 않고, 서브 프로세싱 회로들 각각에 대응하는 시프터만 구비할 수 있다. 따라서, 본 발명의 실시 예에 따른 뉴럴 네트워크 가속기(1000)의 하드웨어 면적이 감소될 수 있다. 또한, 시프트 동작이 감소되므로, 뉴럴 네트워크 가속기(1000)의 연산량이 감소될 수 있다.
도 5는 도 2의 프로세싱 회로의 동작의 예시를 보여주는 순서도이다. 도 2 및 도 5를 참조하면, S101 단계에서, 프로세싱 회로(100)는 입력 특징 데이터(IF)의 특징 비트들 및 가중치 데이터(WT)의 가중치 비트들을 분할할 수 있다. 구체적으로, 프로세싱 회로(100)는 비트 연산기의 동작 비트 수에 따라 특징 비트들 및 가중치 비트들을 분할할 수 있다.
S102 단계에서, 프로세싱 회로(100)는 분할된 특징 비트들 및 분할된 가중치 비트들에 대한 곱셈 연산을 수행할 수 있다. 이 경우, 곱셈 결과의 자릿수는 분할된 특징 비트들의 자릿수 및 분할된 가중치 비트들의 자릿수에 따라 정해질 수 있다. S103 단계에서, 프로세싱 회로(100)는 동일한 자릿수를 가지는 곱셈 결과들에 대하여 덧셈 연산을 수행할 수 있다. S104 단계에서, 프로세싱 회로(100)는 시프트 값에 따라 덧셈 결과의 자릿수를 시프트할 수 있다. 이 경우, 시프트 값은 자릿수는 분할된 특징 비트들의 자릿수 및 분할된 가중치 비트들의 자릿수에 따라 정해질 수 있다. S105 단계에서, 프로세싱 회로(100)는 시프트된 덧셈 결과에 기초하여 출력 특징 데이터를 산출할 수 있다.
도 6a는 도 2의 비트 연산기를 구성하는 회로의 예시를 보여준다. 도 6b는 도 6a의 회로와 동일한 동작을 수행하는 회로의 예시를 보여준다. 구체적으로, 도 6a의 회로는, 도 6b와 같이, 선택 신호(SEL)에 기초하여 두 입력 신호들(A, B)에 대한 배타적 부정 논리합(XNOR) 연산 결과 또는 두 입력 신호들(A, B)에 대한 논리곱(AND) 연산 결과 중 하나를 출력 신호(OUT)으로서 출력할 수 있다.
도 6a를 참조하면, 비트 연산기(101)는 제1 내지 제6 피모스들(P-channel MOSFET)(PM1-PM6) 및 제1 내지 제6 엔모스들(N-channel MOSFET)(NM1-NM6)을 포함할 수 있다. 제1 피모스(PM1)의 제1 단자에는 전원 전압(VDD)이 인가되고, 게이트 단자에는 입력 신호(A)가 인가된다. 제2 피모스(PM2)의 제1 단자에는 전원 전압(VDD)이 인가되고, 게이트 단자에는 입력 신호(B)가 인가된다. 제3 피모스(PM3)의 제1 단자는 제1 피모스(PM1)의 제2 단자와 연결되고, 제3 피모스(PM3)의 게이트 단자에는 반전 입력 신호(A_b)가 인가된다. 반전 입력 신호(A_b)는 입력 신호(A)가 반전된 신호이다. 제4 피모스(PM4)의 제1 단자는 제2 피모스(PM2)의 제2 단자와 연결되고, 제4 피모스(PM4)의 게이트 단자에는 반전 입력 신호(B_b)가 인가된다. 반전 입력 신호(B_b)는 입력 신호(B)가 반전된 신호이다. 제5 피모스(PM5)의 게이트 단자에는 선택 신호(SEL)가 인가된다. 제3 피모스(PM3)의 제1 단자, 제4 피모스(PM4)의 제1 단자 및 제5 피모스(PM5)의 제1 단자는 공통으로 연결될 수 있다. 제6 피모스(PM6)의 제1 단자에는 전원 전압(VDD)이 인가되고, 제2 단자는 출력 신호(OUT)가 출력되는 출력 단자와 연결된다.
제1 엔모스(NM1)의 제1 단자는 제3 피모스(PM3)의 제2 단자와 연결되고 게이트 단자에는 선택 신호(SEL)가 인가된다. 제2 엔모스(NM2)의 제1 단자는 제4 피모스(PM4)의 제2 단자와 연결되고, 게이트 단자에는 입력 신호(A)가 인가된다. 제3 엔모스(NM3)의 제1 단자는 제6 피모스(PM6)의 제2 단자 및 출력 단자와 연결되고 제2 단자에는 접지 전압(VSS)이 인가된다. 제1 엔모스(NM1)의 제1 단자, 제2 엔모스(NM2)의 제1 단자, 제3 엔모스(NM3)의 게이트 단자 및 제6 피모스(PM6)의 게이트 단자는 공통으로 연결될 수 있다. 제4 엔모스(NM4)의 제1 단자는 제1 엔모스(NM1)의 제2 단자와 연결되고 게이트 단자에는 반전 입력 신호(A_b)가 인가된다. 제5 엔모스(NM5)의 제1 단자는 제2 엔모스(NM2)의 제2 단자와 연결되고 제2 단자에는 접지 전압(VSS)이 인가된다. 제5 엔모스(NM5)의 게이트 단자에는 입력 신호(B)가 인가된다. 제6 엔모스(NM6)의 제1 단자는 제4 엔모스(NM4)의 제2 단자와 연결되고 제2 단자는 접지 전압(VSS)이 인가된다. 제6 엔모스(NM6)의 게이트 단자에는 반전 입력 신호(B_b)가 인가된다.
도 6a의 비트 연산기(101)에 따르면, 선택 신호(SEL)에 기초하여 두 입력 신호들(A, B)에 대한 XNOR 연산 결과 또는 두 입력 신호들(A, B)에 대한 AND 연산 결과 중 하나가 출력 신호(OUT)로서 출력될 수 있다. 즉, 도 6a의 회로는, 도 6b에 도시된 바와 같이, 두 입력 신호들(A, B)을 입력받는 XNOR 게이트 및 AND 게이트와 선택 신호(SEL)에 기초하여 XNOR 게이트의 출력 또는 AND 게이트의 출력 중 하나를 출력 신호(OUT)로서 출력하는 멀티플렉서(MUL)와 동일한 역할을 수행할 수 있다.
도 6a에 도시된 바와 같이 트랜지스터들을 기반으로 비트 연산기(101)가 구성되는 경우, 도 6b의 논리 회로들과 동일한 기능이 수행될 수 있을 뿐만 아니라 트랜지스터의 개수가 감소될 수 있다. 따라서, 복수의 비트 연산기들을 포함하는 뉴럴 네트워크 가속기(1000)의 하드웨어 면적 및 연산에 소요되는 전력이 감소될 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 비트 연산기(101)는 1-비트 XNOR 연산 또는 1-비트 AND 연산을 모두 지원할 수 있다. 이에 따라, 비트 연산기(101)는 XNOR 연산을 기반으로 곱셈을 수행하거나 AND 연산을 기반으로 곱셈을 수행할 수 있다. 예를 들어, 멀티 비트의 입력 특징 데이터(IF) 및 멀티 비트의 가중치 데이터(WT)가 정밀도 감소를 위해 1-비트로 변환되는 경우, 비트 연산기(101)는 XNOR 연산을 기반으로 곱셈을 수행할 수 있다. 이 경우, 뉴럴 네트워크 기반의 추론 과정에서 연산량이 감소되어 소모되는 전력이 감소될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
10: 메모리
100: 프로세싱 회로
110, 120, 130: 서브 프로세싱 회로
111-114, 121-124, 131-134: 비트 연산기
115, 125, 135: 덧셈기
140, 150, 160: 시프터
170: 누산기
1000: 뉴럴 네트워크 가속기

Claims (12)

  1. 입력 특징 데이터의 제1 특징 비트들 및 가중치 데이터의 제1 가중치 비트들에 대한 곱셈을 수행하여 제1 곱셈 결과를 생성하도록 구성된 제1 비트 연산기;
    상기 입력 특징 데이터의 제2 특징 비트들 및 상기 가중치 데이터의 제2 가중치 비트들에 대한 곱셈을 수행하여 제2 곱셈 결과를 생성하도록 구성된 제2 비트 연산기;
    상기 제1 곱셈 결과 및 상기 제2 곱셈 결과를 기반으로 덧셈을 수행하여 덧셈 결과를 생성하도록 구성된 덧셈기;
    시프트 값에 따라 상기 덧셈 결과의 자릿수를 시프트하여 시프트된 덧셈 결과를 생성하도록 구성된 시프터; 및
    상기 시프트된 덧셈 결과를 기반으로 출력 특징 데이터를 생성하도록 구성된 누산기를 포함하는 뉴럴 네트워크 가속기.
  2. 제 1 항에 있어서,
    상기 시프트 값은 상기 입력 특징 데이터에서 상기 제1 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제1 가중치 비트들의 자릿수에 기초하여 결정되거나 상기 입력 특징 데이터에서 상기 제2 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제2 가중치 비트들의 자릿수에 기초하여 결정되는 뉴럴 네트워크 가속기.
  3. 제 1 항에 있어서,
    상기 입력 특징 데이터는 상기 제1 비트 연산기 및 상기 제2 비트 연산기의 동작 비트 수에 따라 상기 제1 특징 비트들 및 상기 제2 특징 비트들로 분할되고,
    상기 가중치 데이터는 상기 동작 비트 수에 따라 상기 제1 가중치 비트들 및 상기 제2 가중치 비트들로 분할되는 뉴럴 네트워크 가속기.
  4. 제 1 항에 있어서,
    상기 제1 특징 비트들의 비트 수와 상기 제1 가중치 비트들의 비트 수는 동일한 뉴럴 네트워크 가속기.
  5. 제 1 항에 있어서,
    상기 제1 비트 연산기는 XNOR 연산 또는 AND 연산 중 선택 신호에 따라 선택된 하나를 기반으로 상기 제1 곱셈 결과를 생성하는 뉴럴 네트워크 가속기.
  6. 제 1 항에 있어서,
    상기 출력 특징 데이터는 상기 입력 특징 데이터와 상기 가중치 데이터에 대한 곱셈 결과인 뉴럴 네트워크 가속기.
  7. 입력 특징 데이터의 제1 특징 비트들 및 가중치 데이터의 제1 가중치 비트들을 기반으로 제1 연산 결과를 생성하도록 구성된 제1 프로세싱 회로;
    상기 입력 특징 데이터의 제2 특징 비트들 및 상기 가중치 데이터의 제2 가중치 비트들을 기반으로 제2 연산 결과를 생성하도록 구성된 제2 프로세싱 회로;
    제1 시프트 값에 따라 상기 제1 연산 결과의 자릿수를 시프트하여 제1 시프트된 연산 결과를 생성하도록 구성된 제1 시프터;
    상기 제1 시프트 값과 다른 제2 시프트 값에 따라 상기 제2 연산 결과의 자릿수를 시프트하여 제2 시프트된 연산 결과를 생성하도록 구성된 제2 시프터; 및
    상기 제1 시프트된 연산 결과 및 상기 제2 시프트된 연산 결과를 기반으로 출력 특징 데이터를 생성하도록 구성된 누산기를 포함하는 뉴럴 네트워크 가속기.
  8. 제 7 항에 있어서,
    상기 제1 시프트 값은 상기 입력 특징 데이터에서 상기 제1 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제1 가중치 비트들의 자릿수에 기초하여 결정되고,
    상기 제2 시프트 값은 상기 입력 특징 데이터에서 상기 제2 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제2 가중치 비트들의 자릿수에 기초하여 결정되는 뉴럴 네트워크 가속기.
  9. 제 7 항에 있어서,
    상기 제1 프로세싱 회로는 상기 제1 특징 비트들 및 상기 제1 가중치 비트들에 대한 제1 곱셈 결과와 상기 입력 특징 데이터의 제3 특징 비트들 및 상기 가중치 데이터의 제3 가중치 비트들에 대한 제2 곱셈 결과를 더하여 상기 제1 연산 결과를 생성하는 뉴럴 네트워크 가속기.
  10. 제 9 항에 있어서,
    상기 입력 특징 데이터에서 상기 제1 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제1 가중치 비트들의 자릿수에 기초하여 결정되는 상기 제1 곱셈 결과의 자릿수와 상기 입력 특징 데이터에서 상기 제3 특징 비트들의 자릿수 및 상기 가중치 데이터에서 상기 제3 가중치 비트들의 자릿수에 기초하여 결정되는 상기 제2 곱셈 결과의 자릿수는 동일한 뉴럴 네트워크 가속기.
  11. 제 7 항에 있어서,
    상기 제1 특징 비트들의 비트 수와 상기 제1 가중치 비트들의 비트 수는 동일한 뉴럴 네트워크 가속기.
  12. 제 7 항에 있어서,
    상기 출력 특징 데이터는 상기 입력 특징 데이터와 상기 가중치 데이터에 대한 곱셈 결과인 뉴럴 네트워크 가속기.
KR1020190070884A 2019-06-14 2019-06-14 뉴럴 네트워크 가속기 KR102434401B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020190070884A KR102434401B1 (ko) 2019-06-14 2019-06-14 뉴럴 네트워크 가속기
US16/868,845 US11562218B2 (en) 2019-06-14 2020-05-07 Neural network accelerator
JP2020096132A JP7028911B2 (ja) 2019-06-14 2020-06-02 ニューラルネットワークアクセラレータ
KR1020220102105A KR20220119571A (ko) 2019-06-14 2022-08-16 뉴럴 네트워크 가속기
US18/085,939 US11954582B2 (en) 2019-06-14 2022-12-21 Neural network accelerator
US18/604,268 US20240220786A1 (en) 2019-06-14 2024-03-13 Neural network accelerator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190070884A KR102434401B1 (ko) 2019-06-14 2019-06-14 뉴럴 네트워크 가속기

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220102105A Division KR20220119571A (ko) 2019-06-14 2022-08-16 뉴럴 네트워크 가속기

Publications (2)

Publication Number Publication Date
KR20200143608A true KR20200143608A (ko) 2020-12-24
KR102434401B1 KR102434401B1 (ko) 2022-08-22

Family

ID=73746348

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020190070884A KR102434401B1 (ko) 2019-06-14 2019-06-14 뉴럴 네트워크 가속기
KR1020220102105A KR20220119571A (ko) 2019-06-14 2022-08-16 뉴럴 네트워크 가속기

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220102105A KR20220119571A (ko) 2019-06-14 2022-08-16 뉴럴 네트워크 가속기

Country Status (3)

Country Link
US (3) US11562218B2 (ko)
JP (1) JP7028911B2 (ko)
KR (2) KR102434401B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210014793A (ko) * 2019-07-30 2021-02-10 한국과학기술원 뉴럴 네트워크 가속기 시스템 및 그것의 동작 방법
KR102339896B1 (ko) * 2021-05-24 2021-12-16 리벨리온 주식회사 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기
KR102437329B1 (ko) * 2022-07-06 2022-08-30 주식회사 스퀴즈비츠 행렬곱 연산 장치 및 방법
KR102482728B1 (ko) * 2022-07-06 2022-12-29 주식회사 스퀴즈비츠 비트 시리얼 연산 방법 및 컴퓨터 기록 매체

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030072860A (ko) * 2002-03-07 2003-09-19 엘지전자 주식회사 학습된 신경망 설계를 위한 어레이 구조 연산 방법
KR20060044102A (ko) * 2004-11-11 2006-05-16 삼성전자주식회사 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59194242A (ja) 1983-04-19 1984-11-05 Toshiba Corp ディジタル乗算累積加算装置
JPH0816903B2 (ja) 1986-09-17 1996-02-21 富士通株式会社 積和演算回路
US6711602B1 (en) * 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US8959137B1 (en) * 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8645451B2 (en) * 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
JP6183980B1 (ja) 2016-12-02 2017-08-23 国立大学法人東京工業大学 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
CA3116521A1 (en) * 2020-04-29 2021-10-29 Applied Brain Research Inc. Methods and systems for efficient processing of recurrent neural networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030072860A (ko) * 2002-03-07 2003-09-19 엘지전자 주식회사 학습된 신경망 설계를 위한 어레이 구조 연산 방법
KR20060044102A (ko) * 2004-11-11 2006-05-16 삼성전자주식회사 복수 개의 동일한 부분곱 계산 모듈을 포함하는 다중곱셈기 및 다중 곱셈 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210014793A (ko) * 2019-07-30 2021-02-10 한국과학기술원 뉴럴 네트워크 가속기 시스템 및 그것의 동작 방법
KR102339896B1 (ko) * 2021-05-24 2021-12-16 리벨리온 주식회사 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기
KR102437329B1 (ko) * 2022-07-06 2022-08-30 주식회사 스퀴즈비츠 행렬곱 연산 장치 및 방법
KR102482728B1 (ko) * 2022-07-06 2022-12-29 주식회사 스퀴즈비츠 비트 시리얼 연산 방법 및 컴퓨터 기록 매체

Also Published As

Publication number Publication date
US20240220786A1 (en) 2024-07-04
KR20220119571A (ko) 2022-08-30
US20200394504A1 (en) 2020-12-17
JP7028911B2 (ja) 2022-03-02
US20230131035A1 (en) 2023-04-27
JP2020205045A (ja) 2020-12-24
KR102434401B1 (ko) 2022-08-22
US11562218B2 (en) 2023-01-24
US11954582B2 (en) 2024-04-09

Similar Documents

Publication Publication Date Title
KR102434401B1 (ko) 뉴럴 네트워크 가속기
US10956043B2 (en) Computing reduction and prefix sum operations in memory
EP4318275A1 (en) Matrix multiplier and method for controlling matrix multiplier
Lin et al. A fully digital SRAM-based four-layer in-memory computing unit achieving multiplication operations and results store
US20220156045A1 (en) Performing Multiple Bit Computation and Convolution in Memory
US20230083597A1 (en) Configurable nonlinear activation function circuits
US10185545B2 (en) Trailing or leading zero counter having parallel and combinational logic
Somani et al. Reversible adder design for ripple carry and carry look ahead (4, 8, 16, 32-bit)
Premananda et al. Design of low power 8-bit carry select adder using adiabatic logic
Meher et al. A novel DA-based architecture for efficient computation of inner-product of variable vectors
Kumar et al. Approximate Multiplier based on Low power and reduced latency with Modified LSB design
Tripathy et al. High speed low power datapath design using multi threshold logic in 45 nm technology for signsl processing application
Gupta et al. An Algorithm for Nano-pipelining of Circuits and Architectures for a Nanotechnology
You et al. A 1–8b Reconfigurable Digital SRAM Compute-in-Memory Macro for Processing Neural Networks
Rastogi et al. Leakage power reduction in MTCMOS based high speed adders
US20240111525A1 (en) Multiplication hardware block with adaptive fidelity control system
Meher LUT-based circuits for future wireless systems
Hoskins et al. A vlsi implementation of multi-layer neural network with ternary activation functions and limited integer weights
KR20230059127A (ko) 인-메모리 컴퓨팅을 위한 메모리 디바이스, 컴퓨팅 디바이스, 및 방법
HV et al. Implementation of Power Efficient Radix-4 Booth Multiplier with Pre-encoding
WO2023244905A1 (en) Configurable nonlinear activation function circuits
Gowthami et al. Design of 16-bit heterogeneous adder architectures using different homogeneous adders
Chaitanya et al. Design and Analysis of Booth Multiplier with Optimised Power Delay Product
KATNENI et al. Design and Implementation of Carry Select Adder with Pass Transistor Logic
Zhang et al. A fast and flexible accuracy-guaranteed fractional bit-widths optimization approach

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant