[go: up one dir, main page]

KR20210027878A - 연산 회로, 이를 포함하는 뉴럴 프로세싱 유닛 및 전자 기기 - Google Patents

연산 회로, 이를 포함하는 뉴럴 프로세싱 유닛 및 전자 기기 Download PDF

Info

Publication number
KR20210027878A
KR20210027878A KR1020190108893A KR20190108893A KR20210027878A KR 20210027878 A KR20210027878 A KR 20210027878A KR 1020190108893 A KR1020190108893 A KR 1020190108893A KR 20190108893 A KR20190108893 A KR 20190108893A KR 20210027878 A KR20210027878 A KR 20210027878A
Authority
KR
South Korea
Prior art keywords
signal
input
rca
signals
bits
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020190108893A
Other languages
English (en)
Inventor
김용환
김욱
김재준
류성주
Original Assignee
삼성전자주식회사
포항공과대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 포항공과대학교 산학협력단 filed Critical 삼성전자주식회사
Priority to KR1020190108893A priority Critical patent/KR20210027878A/ko
Priority to US16/847,872 priority patent/US11435981B2/en
Publication of KR20210027878A publication Critical patent/KR20210027878A/ko
Pending legal-status Critical Current

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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • 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
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • G06F7/503Half or full adders, i.e. basic adder cells for one denomination using carry switching, i.e. the incoming carry being connected directly, or only via an inverter, to the carry output under control of a carry propagate signal
    • 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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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

Landscapes

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

Abstract

본 발명의 실시 형태에 따른 연산 회로는, 순차적으로 입력되는 복수 개의 입력 신호들 각각을 래치하고, 상기 복수 개의 입력 신호들을 기초로 복수 개의 제1 가산 신호들 및 복수 개의 제2 가산 신호들을 순차적으로 출력하는 입력 버퍼, 상기 복수 개의 제1 가산 신호들을 누산하여 출력하는 제1 RCA(ripple carry adder), 상기 제1 RCA에서 발생된 캐리(carry)를 래치하고, 출력하는 플립플롭, 상기 복수 개의 제2 가산 신호들을 누산한 값에 상기 캐리를 가산하여 출력하는 제2 RCA, 및 상기 제1 RCA의 출력 신호와 상기 제2 RCA의 출력 신호를 래치하고, 합산 신호를 출력하는 출력 버퍼를 포함하고, 상기 복수 개의 입력 신호들을 모두 합한 상기 합산 신호를 출력하기 전에 적어도 하나 이상의 무효인 합산 신호를 출력할 수 있다.

Description

연산 회로, 이를 포함하는 뉴럴 프로세싱 유닛 및 전자 기기{ARITHMETIC CIRCUIT, AND NEURAL PROCESSING UNIT AND ELECTRONIC APPARATUS INCLUDING THE SAME}
본 발명은 연산 회로, 이를 포함하는 뉴럴 프로세싱 유닛 및 전자 기기에 관한 것이다.
머신 러닝(machine learning)은 수많은 MAC(multiply-accumulate) 연산을 필요로 한다. 즉, MAC 연산은 머신 러닝을 수행하는 과정의 대부분을 차지한다. 따라서, 머신 러닝을 수행하는 뉴럴 프로세싱 유닛도 많은 수의 MAC 연산을 위한 연산 회로를 포함할 수 있다.
연산 회로는 보통 파이프라이닝(pipelining) 방법을 사용하여 설계되는데, 파이프라이닝 과정에서 지켜야 하는 피드포워드 컷셋(feedforward-cutset) 규칙으로 인해 많은 수의 플립플롭(flip-flop)이 삽입되며, 이로 인해 칩의 크기 및 소모 전력이 증가할 수 있다.
본 발명의 기술적 사상이 이루고자 하는 과제 중 하나는, 뉴럴 프로세싱 유닛을 위한 MAC 연산 회로로서, 칩의 크기 및 소모 전력을 최소화할 수 있는 연산 회로를 제공하는 것이다.
본 발명의 일 실시예에 따른 연산 회로는, 순차적으로 입력되는 복수 개의 입력 신호들 각각을 래치하고, 상기 복수 개의 입력 신호들을 기초로 복수 개의 제1 가산 신호들 및 복수 개의 제2 가산 신호들을 순차적으로 출력하는 입력 버퍼, 상기 복수 개의 제1 가산 신호들을 누산하여 출력하는 제1 RCA(ripple carry adder), 상기 제1 RCA에서 발생된 캐리(carry)를 래치하고 출력하는 플립플롭, 상기 복수 개의 제2 가산 신호들을 누산한 값에 상기 캐리를 가산하여 출력하는 제2 RCA, 및 상기 제1 RCA의 출력 신호와 상기 제2 RCA의 출력 신호를 래치하고, 상기 복수 개의 입력 신호들을 합한 합산 신호를 출력하는 출력 버퍼를 포함하고, 상기 출력 버퍼는 상기 복수 개의 입력 신호들을 모두 합한 합산 신호를 출력하기 전에 적어도 하나 이상의 무효인 상기 합산 신호를 출력할 수 있다.
본 발명의 일 실시예에 따른 뉴럴 프로세싱 유닛은, n비트의 제1 신호와 m비트의 제2 신호를 입력받아 상기 제1 신호와 상기 제2 신호를 곱한 값을 출력하는 멀티플라이어, 상기 멀티플라이어로부터 순차적으로 입력되는 복수 개의 입력 신호들 각각을 래치하고 상기 복수 개의 입력 신호들 각각에 따라 복수 개의 제1 가산 신호들 및 복수 개의 제2 가산 신호들을 순차적으로 출력하는 입력 버퍼, 상기 복수 개의 제1 가산 신호들을 누산하여 출력하는 제1 RCA(ripple carry adder), 상기 제1 RCA에서 발생된 캐리(carry)를 래치하고, 출력하는 제1 플립플롭, 상기 복수 개의 제2 가산 신호들을 누산한 값에 상기 캐리를 가산하여 출력하는 제2 RCA, 및 상기 제1 RCA의 출력 신호와 상기 제2 RCA의 출력 신호를 래치하고, 상기 복수 개의 입력 신호들을 합한 합산 신호를 출력하는 출력 버퍼를 포함하고, 상기 출력 버퍼는 상기 복수 개의 입력 신호들을 모두 합한 합산 신호를 출력하기 전에 적어도 하나 이상의 무효인 상기 합산 신호를 출력할 수 있다.
본 발명의 일 실시예에 따른 전자 기기는, 머신 러닝을 위한 데이터들을 저장하는 메모리, 및 적어도 하나 이상의 연산 회로를 포함하며, 상기 데이터들을 이용하여 머신 러닝을 수행하는 뉴럴 프로세싱 유닛을 포함하고, 상기 적어도 하나 이상의 연산 회로 각각은 순차적으로 입력되는 복수 개의 입력 신호들 각각을 래치하고, 상기 복수 개의 입력 신호들 각각에 따라 복수 개의 제1 가산 신호들 및 복수 개의 제2 가산 신호들을 순차적으로 출력하는 입력 버퍼, 상기 복수 개의 제1 가산 신호들을 누산하여 출력하는 제1 RCA(ripple carry adder), 상기 제1 RCA에서 발생된 캐리(carry)를 래치하고, 출력하는 플립플롭, 상기 복수 개의 제2 가산 신호들을 누산한 값에 상기 캐리를 가산하여 출력하는 제2 RCA, 상기 제1 RCA의 출력 신호와 상기 제2 RCA의 출력 신호를 래치하고, 합산 신호를 출력하는 출력 버퍼를 포함할 수 있다.
본 발명의 일 실시예에 따른 연산 회로는, 피드포워드 컷셋(feedforward-cutset) 규칙을 따르지 않고 크리티컬 패스에만 연결된 플립플랍을 포함함으로써, MAC 연산에 필요한 플립플랍의 개수를 최소화할 수 있는 효과가 있다.
또한, 본 발명의 일 실시예에 따른 연산 회로는, MAC 연산에 필요한 플립플랍의 개수를 최소화함으로써, 칩의 크기 및 소모 전력을 감소시킬 수 있는 효과가 있다.
본 발명의 다양하면서도 유익한 장점과 효과는 상술한 내용에 한정되지 않으며, 본 발명의 구체적인 실시 형태를 설명하는 과정에서 보다 쉽게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 연산 회로를 개략적으로 나타낸 블록도이다.
도 2는 비교예의 연산 회로를 개략적으로 나타낸 블록도이다.
도 3은 본 발명의 일 실시예에 따른 연산 회로와 비교예의 연산 회로의 동작을 설명하기 위한 도면이다.
도 4 내지 도 7 각각은 본 발명의 일 실시예에 따른 연산 회로를 개략적으로 나타낸 블록도이다.
도 8은 본 발명의 일 실시예에 따른 연산 회로를 이용한 MAC 연산 과정을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따른 연산 회로를 포함하는 뉴럴 네트워크의 구조를 나타낸 도면이다.
도 10은 도 9의 각 뉴럴에서 수행되는 MAC 연산 과정을 설명하기 위한 도면이다.
도 11은 본 발명의 일 실시예에 따른 뉴럴 프로세싱 유닛을 포함하는 전자 기기를 나타낸 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 형태들을 설명한다. 그러나, 본 발명의 실시형태는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 이하 설명하는 실시 형태로 한정되는 것은 아니다. 또한, 본 발명의 실시형태는 당해 기술분야에서 평균적인 지식을 가진 자에게 본 발명을 더욱 완전하게 설명하기 위해서 제공되는 것이다.
도 1은 본 발명의 일 실시예에 따른 연산 회로를 개략적으로 나타낸 블록도이다.
도 1을 참조하면, 연산 회로(100)는 입력 버퍼(110), 제1 RCA(ripple carry adder)(121), 제2 RCA(122), 플립플롭(130), 제1 출력 버퍼(141), 및 제2 출력 버퍼(142)를 포함할 수 있다.
입력 버퍼(110)는 입력 신호(A[n-1:0])를 입력받고, 제1 가산 신호(Areg[m-1:0]) 및 제2 가산 신호(Areg[n-1:m])를 출력할 수 있다. 입력 버퍼(110)는 클럭 신호에 응답하여 동작할 수 있다.
제1 RCA(121)는 순차적으로 입력되는 제1 가산 신호(Areg[m-1:0])를 누산하여 제1 합산 신호(S[m-1]:0)와 캐리(carry)를 생성할 수 있다.
제2 RCA(122)는 순차적으로 입력되는 제2 가산 신호(Areg[n-1:m])를 누산한 값에 제1 RCA(121)가 생성한 캐리를 가산하여 제2 합산 신호(S[k-1:m])를 생성할 수 있다.
플립플롭(130)은 제1 RCA(121)에서 발생된 캐리를 제2 RCA(122)로 전달할 수 있다. 플립플롭(130)은 클럭 신호에 응답하여 동작할 수 있다.
제1 출력 버퍼(141)는 제1 RCA(121)가 생성한 제1 합산 신호(S[m-1:0])를 래치(latch)하고, 이를 출력할 수 있다.
제2 출력 버퍼(142)는 제2 RCA(122)가 발생시킨 제2 합산 신호(S[k-1:m])를 래치하고, 이를 출력할 수 있다.
이와 같이, 연산 회로(100)는 순차적으로 입력되는 n 비트의 입력 신호(A[n-1:0])를 누산하여 k 비트의 합산 신호(S[k-1:0])를 생성할 수 있다. 여기서, n은 1 이상의 정수이고, k는 n보다 크거나 같은 정수이며, m은 k보다 작은 정수일 수 있다.
k가 n보다 클 경우, 제2 가산 신호(Areg[k-1:m])의 상위 (k-n) 비트(즉, Areg[k-1:n])는 부호 확장(sign extension)에 의해 생성될 수 있다.
도 1에 나타낸 바와 같이, 연산 회로(100)는 파이프라이닝(pipelining)에 의해 구현될 수 있다. 다만, 본 발명의 일 실시예에 따른 연산 회로(100)는, 피드포워드 컷셋(feedforward-cutset) 규칙에 의해 플립플롭이 추가되어야 할 에지(edge)들 중 크리티컬 패스(critical path)에 해당하지 않는 에지에는 플립플롭이 추가되지 않을 수 있다. 즉, 본 발명의 일 실시예에 따른 연산 회로(100)는 파이프라이닝에 의해 구현되되, 피드포워드 컷셋 규칙을 따르지 않고 크리티컬 패스에만 플립플롭이 추가될 수 있다. 크리티컬 패스는 실제 연산이 수행되는 부분과 직접적으로 연관되는 패스일 수 있으며, 연산 회로(100)가 사용되는 뉴럴 프로세싱 유닛(neural processing unit: NPU)의 클럭 속도를 결정하는 패스일 수도 있다.
도 2는 비교예의 연산 회로를 개략적으로 나타낸 블록도로서, 비교예의 연산 회로(200)는 입력 버퍼(210), 제1 RCA(221), 제2 RCA(222), 플립플롭(230), 플립플롭 어레이(241), 출력 버퍼(242), 제1 삽입 어레이(251), 및 제2 삽입 어레이(252)를 포함할 수 있다.
입력 버퍼(210), 제1 RCA(221), 제2 RCA(222), 플립플롭(230), 플립플롭 어레이(241), 및 출력 버퍼(242)의 기능은 도 1의 입력 버퍼(110), 제1 RCA(121), 제2 RCA(122), 플립플롭(130), 제1 출력 버퍼(141), 및 제2 출력 버퍼(142)와 동일할 수 있다.
제1 삽입 어레이(251) 및 제2 삽입 어레이(252)는 클럭 신호에 응답하여 동작하며, 입력되는 신호를 래치하고 출력할 수 있다.
즉, 비교예의 연산 회로(200)는 제1 삽입 어레이(251) 및 제2 삽입 어레이(252)가 추가된 것을 제외하면 도 1의 연산 회로(100)와 동일할 수 있다.
다음의 표 1은 도 1에 나타낸 본 발명의 일 실시예에 따른 연산 회로(100)와 도 2에 나타낸 비교예의 연산 회로(200)의 동작을 설명하기 위한 것으로서, n과 k는 모두 32이고, m은 16일 수 있다. 표 1에서 가산 신호(Areg)와 합산 신호(S)는 16진수로 표기되어 있다.
클록 비교예 실시예(도 1)
[31:16] [15:0] C [31:16] [15:0] C
Cycle 1 Areg 7325 AB2C
-
Areg 7325 AB2C
-
S 0000 0000 S 0000 0000
Cycle 2 Areg 4823 F135
-
Areg 4823 F135
-
S 0000 0000 S 7325 AB2C
Cycle 3 Areg 2823 F432
-
Areg 2823 F432
1
S 7325 AB2C S BB48 9C61
Cycle 4 Areg 0000 0000
1
Areg 0000 0000
1
S BB49 9C61 S E36C 9093
Cycle 5 Areg 0000 0000
1
Areg 0000 0000
-
S E36D 9093 S E36D 9093
먼저, 표 1을 참조하여 도 2의 비교예의 동작을 설명하면, 사이클 1에서, 입력된 값[7325 AB2C](이하, A1)이 입력 버퍼(210)로부터 출력될 수 있다. 입력 버퍼(210)로부터 출력된 A1의 상위 16비트는 제2 삽입 어레이(252)에 래치되고, A1의 하위 16비트는 제1 RCA(221)로 입력될 수 있다. 제1 RCA(221)는 누산 동작을 수행하여 그 결과를 출력하고, 제1 RCA(221)의 출력(즉, A1의 하위 16비트)은 플립플롭 어레이(241)에 래치될 수 있다.
사이클 2에서, 사이클 1에서 제2 삽입 어레이(252)에 래치된 값(즉, A1의 상위 16비트)는 제2 삽입 어레이(252)로부터 출력되어 제2 RCA(222)로 입력되고, 제2 RCA(222)는 누산 동작을 수행하여 그 결과를 출력하고, 제2 RCA(222)의 출력(즉, A1 의 상위 16비트)은 출력 버퍼(242)에 래치될 수 있다. 또한, 사이클 1에서 플립플롭 어레이(241)에 래치된 값(즉, A1의 하위 16비트)은 플립플롭 어레이(241)로부터 출력되어 제1 삽입 어레이(251)에 래치될 수 있다.
사이클 2에서, 입력된 [4823 F135](이하, A2)는 입력 버퍼(210)로부터 출력되고, 입력 버퍼(210)로부터 출력된 A2의 상위 16비트는 제2 삽입 어레이(252)에 래치되고, A2의 하위 16비트는 제1 RCA(221)로 입력될 수 있다. 제1 RCA(221)는 누산 동작을 수행하여 그 결과를 출력하고, 제1 RCA(221)의 출력(즉, 플립플롭 어레이(241)로부터 출력된 A1의 하위 16비트와 입력 버퍼(210)로부터 출력된 A2의 하위 16비트의 합)은 플립플롭 어레이(241)에 래치될 수 있다. 제1 RCA(221)에서 발생된 캐리는 플립플롭(230)에 래치될 수 있다.
사이클 3에서, 사이클 2에서 출력 버퍼(242)에 래치된 값(즉, A1의 상위 16비트)와 제1 삽입 어레이(251)에 래치된 값(즉, A1의 하위 16비트)이 출력될 수 있다. 즉, 사이클 3에서 출력되는 합산 신호(S[31:0])는 사이클 1에서 입력된 A1일 수 있다.
사이클 3에서, 사이클 2에서 제2 삽입 어레이(252)에 래치된 값(즉, A2의 상위 16비트)는 제2 삽입 어레이(252)로부터 출력되어 제2 RCA(222)로 입력되고, 제2 RCA(222)는 누산 동작을 수행하여 그 결과를 출력하고, 제2 RCA(222)의 출력(즉, 출력 버퍼(242)에서 출력된 A1의 상위 16비트와 제2 삽입 어레이(252)에서 출력된 A2의 상위 16 비트의 합)은 출력 버퍼(242)에 래치될 수 있다. 또한, 사이클 2에서 플립플롭 어레이(241)에 래치된 값(즉, A1의 하위 16비트와 A2의 하위 16비트의 합)은 플립플롭 어레이(241)로부터 출력되어 제1 삽입 어레이(251)에 래치될 수 있다.
사이클 3에서, 입력된 [7325 AB2C](이하, A3)가 입력 버퍼(210)로부터 출력되고, 입력 버퍼(210)로부터 출력된 A3의 상위 16비트는 제2 삽입 어레이(252)에 래치되고, A3의 하위 16비트는 제1 RCA(221)로 입력될 수 있다. 제1 RCA(221)는 누산 동작을 수행하여 그 결과를 출력하고, 제1 RCA(221)의 출력(즉, A1의 하위 16비트와 A2의 하위 16비트와 A3의 하위 16비트의 합)은 플립플롭 어레이(241)에 래치될 수 있다. 제1 RCA(221)에서 발생된 캐리는 플립플롭(230)에 래치될 수 있다.
사이클 4에서, 사이클 3에서 출력 버퍼(242)에 래치된 값(즉, A1의 상위 16비트와 A2의 상위 16비트의 합)에 플립플롭(230)에 저장된 캐리가 가산된 값과, 제1 삽입 어레이(251)에 래치된 값(즉, A1의 하위 16비트와 A2의 하위 16비트의 합)이 출력될 수 있다. 즉, 사이클 4에서 출력되는 합산 신호(S[31:0])는 A1과 A2의 합일 수 있다.
사이클 4에서, 사이클 3에서 제2 삽입 어레이(252)에 래치된 값(즉, A3의 상위 16비트)는 제2 삽입 어레이(252)로부터 출력되어 제2 RCA(222)로 입력되고, 제2 RCA(222)는 누산 동작을 수행하여 그 결과를 출력하고, 제2 RCA(222)의 출력(즉, A1의 상위 16비트와 A2의 상위 16비트와 A3의 상위 16비트의 합)은 출력 버퍼(242)에 래치될 수 있다. 또한, 사이클 3에서 플립플롭 어레이(241)에 래치된 값(즉, A1의 하위 16비트와 A2의 하위 16비트와 A3의 하위 16비트의 합)은 플립플롭 어레이(241)로부터 출력되어 제1 삽입 어레이(251)에 래치될 수 있다.
사이클 5에서, 사이클 4에서 출력 버퍼(242)에 래치된 값(즉, A1의 상위 16비트와 A2의 상위 16비트와 A3의 상위 16비트의 합)에 플립플롭(230)에 저장된 캐리가 가산된 값과, 제1 삽입 어레이(251)에 래치된 값(즉, A1의 하위 16비트와 A2의 하위 16비트와 A3의 하위 16비트의 합)이 출력될 수 있다. 즉, 사이클 5에서 출력되는 합산 신호(S[31:0])는 A1과 A2와 A3의 합일 수 있다.
다음으로, 도 1에 나타낸 본 발명의 일 실시예의 동작을 설명한다.
사이클 1에서, 입력된 값[7325 AB2C](이하, A1)이 입력 버퍼(110)로부터 출력될 수 있다. 입력 버퍼(110)로부터 출력된 A1의 하위 16비트는 제1 RCA(121)로 입력되고, 제1 RCA(121)는 누산 동작을 수행하여 그 결과를 출력하고, 제1 RCA(121)의 출력(즉, A1의 하위 16비트)은 제1 출력 버퍼(141)에 래치될 수 있다. 입력 버퍼(110)로부터 출력된 A1의 상위 16비트는 제2 RCA(122)로 입력되고, 제2 RCA는 누산 동작을 수행하여 그 결과를 출력하고, 제2 RCA(122)의 출력(즉, A1의 상위 16비트)는 제2 출력 버퍼(142)에 래치될 수 있다.
사이클 2에서, 사이클 1에서 제2 출력 버퍼(142) 및 제1 출력 버퍼(141)에 래치된 값이 합산 신호(S[31:0])로서 출력될 수 있다.
또한, 사이클 2에서, 입력된 값[4823 F135](이하, A2)이 입력 버퍼(110)로부터 출력될 수 있다. 입력 버퍼(110)로부터 출력된 A2의 상위 16비트는 제2 RCA(122)로 입력되고, 입력 버퍼(110)로부터 출력된 A2의 하위 16비트는 제1 RCA(121)로 입력될 수 있다. 제1 RCA(121)는 누산 동작을 수행하여 그 결과를 출력하고, 제1 RCA(121)의 출력(즉, A1의 하위 16비트와 A2의 하위 16비트의 합)은 제1 출력 버퍼(141)에 래치될 수 있다. 제1 RCA(121)에서 발생된 캐리는 플립플롭(130)에 래치될 수 있다. 제2 RCA(122)는 누산 동작을 수행하여 그 결과를 출력하고, 제2 RCA(122)의 출력(즉, A1의 상위 16비트와 A2의 상위 16비트의 합)은 제2 출력 버퍼(142)에 래치될 수 있다.
사이클 3에서, 사이클 2에서 제2 출력 버퍼(142) 및 제1 출력 버퍼(141)에 래치된 값이 합산 신호(S[31:0])로서 출력될 수 있다. 다만, 제1 RCA에서 발생된 캐리가 가산되지 않았으므로, 사이클 3에서 출력되는 합산 신호(S[31:0])는 A1 및 A2와 무관한 값(즉, 무효한(invalid) 값)일 수 있다.
사이클 3에서, 입력된 값[7325 AB2C](이하, A3)이 입력 버퍼(110)로부터 출력되고, 입력 버퍼(110)로부터 출력된 A3의 상위 16비트는 제2 RCA(122)로 입력되고, A3의 하위 16비트는 제1 RCA(121)로 입력될 수 있다. 제1 RCA(121)는 누산 동작을 수행하여 그 결과를 출력하고, 제1 RCA(121)의 출력(즉, A1의 하위 16비트와 A2의 하위 16비트와 A3의 하위 16비트의 합)은 제1 출력 버퍼(141)에 래치될 수 있다. 제1 RCA(121)에서 발생된 캐리는 플립플롭(130)에 래치될 수 있다. 제2 RCA(122)는 누산 동작을 수행하여 그 결과를 출력하고, 제2 RCA(122)의 출력(즉, A1의 상위 16비트와 A2의 상위 16비트와 A3의 상위 16비트의 합)은 제2 출력 버퍼(142)에 래치될 수 있다.
사이클 4에서, 사이클 3에서 제2 출력 버퍼(142)에 래치된 값에 사이클 2에서 제1 RCA(121)에서 발생한 캐리를 합산한 값 및 제2 출력 버퍼(141)에 래치된 값이 합산 신호(S[31:0])로서 출력될 수 있다. 다만, 사이클 3에서 제1 RCA에서 발생된 캐리는 가산되지 않았으므로, 사이클 3에서 출력되는 합산 신호(S[31:0])는 A1, A2 및 A3와 무관한 값(즉, 무효한(invalid) 값)일 수 있다. 사이클 3에서 출력되는 합산 신호(S[31:0])는 제1 출력 버퍼(141) 및 제2 출력 버퍼(142)에 래치될 수 있다.
사이클 5에서, 사이클 4에서 제1 출력 버퍼(142)에 래치된 값에 사이클 3에서 제1 RCA(121)에서 발생한 캐리를 합산한 값 및 제2 출력 버퍼(141)에 래치된 값이 합산 신호(S[31:0])로서 출력될 수 있다. 따라서, 사이클 5에서 출력되는 합산 신호(S[31:0])는 A1과 A2와 A3를 합한 값으로서, 유효한(valid) 값일 수 있다.
도 3은 본 발명의 일 실시예에 따른 연산 회로와 비교예의 연산 회로의 동작을 설명하기 위한 도면이다.
표 1 및 도 3을 참조하면, 도 2에 나타낸 비교예의 경우, 피드포워드 컷셋 규칙에 따라 파이프라이닝을 하였기 때문에, 3번째 클럭 사이클부터 A1, A1+A2, 및 A1+A2+A3가 순차적으로 출력될 수 있다(도 3의 (a)).
반면, 도 1에 나타낸 본 발명의 일 실시예의 경우, 5번째 클럭 사이클에서 출력되는 최종값은 유효한 데이터(즉, A1+A2+A3)이지만, 그 이전에 출력되는 데이터는 무효인 데이터일 수 있다. 다시 말하면, 도 1에 나타낸 본 발명의 일 실시예의 경우, 복수개의 데이터들이 클럭 사이클마다 연속적으로 입력되기만 한다면, 최종 결과값은 유효한 값이 될 수 있다(도 3(b)).
뉴럴 네트워크 알고리즘의 경우, 연산의 중간 결과는 필요하지 않고, 연산의 최종 결과만을 필요로 한다. 따라서, 본 발명의 연산 회로를 뉴럴 프로세싱 유닛에 적용한다면, 플립플롭의 수를 크게 줄일 수 있으므로 칩 사이즈를 감소시킬 수 있을 뿐만 아니라, 전력 소모도 감소시킬 수 있다.
도 4는 본 발명의 일 실시예에 따른 연산 회로를 개략적으로 나타낸 블록도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 연산 회로(100-1)는 입력 버퍼(110-1), 제1 RCA(121-1), 제2 RCA(122-1), 제3 RCA(123-1), 제4 RCA(124-1), 제1 플립플롭(131-1), 제2 플립플롭(132-1), 제3 플립플롭(133-1), 및 출력 버퍼(140-1)를 포함할 수 있다.
도 4의 본 발명의 일 실시예는 RCA의 개수가 4개이고, 파이프라이닝을 위해 삽입된 플립플롭의 개수가 3개인 것을 제외하면 도 1에 나타낸 본 발명의 일 실시예와 동일하다. 즉, 본 발명의 일 실시예에 따르면, 파이프라이닝시 제1 내지 제4 RCA들(121-1, 122-1, 123-1, 124-1)의 사이에만 플립플롭(131-1, 132-1, 133-1)이 삽입될 수 있다. 상술한 바와 같이, 도 4와 같이 구현하더라도 최종 결과값은 유효한 값이 될 수 있다. 따라서, 본 발명의 일 실시예에 따른 연산 회로(100-1)는 칩 사이즈 및 소모 전력을 감소시키면서도 뉴럴 프로세싱 유닛에 적합한 특성을 가질 수 있다.
도 5는 본 발명의 일 실시예에 따른 연산 회로를 개략적으로 나타낸 블록도이다.
도 5를 참조하면, 연산 회로(100-2)는 입력 버퍼(110-2), 제1 RCA(121-1), 제2 RCA(122-2), 플립플롭(130-2), 출력 버퍼(140-2), 및 부호 확장기(150-2)를 포함할 수 있다.
입력 버퍼(110-2), 제1 RCA(121-1), 플립플롭(130-2), 및 출력 버퍼(140-2)의 기능 및 동작은 도 1의 입력 버퍼(110-2), 제1 RCA(121-1), 플립플롭(130-2), 및 제1 및 제2 출력 버퍼(141, 142)와 동일할 수 있다.
부호 확장기(150-2)는 입력 신호(A[n-1:0])의 최상위 비트(A[n-1])를 기초로, 확장된 비트들을 생성할 수 있다. 즉, 부호 확장기(150-1)는 최상위 비트(A[n-1])가 1이면, 가산 신호의 비트들(Areg[k-1:n])의 값을 1로, 최상위 비트(A[n-1])가 0이면 가산 신호의 비트들(Areg[k-1:n])의 값을 0으로 설정할 수 있다. 가산 신호의 비트들(Areg[n-1:0])은 입력 신호(A[n-1:0])와 동일할 수 있다.
도 5에 나타낸 바와 같이, 본 발명의 일 실시예에 따르면, 파이프라이닝시 피드포워드 컷셋 규칙에 따라 플립플롭을 삽입하여야 할 에지들 중, 실제 연산에 직접 관련된 에지(예를 들면, 도 5에서 제1 RCA(121-1)과 제2 RCA(122-2) 사이)에만 플립플롭을 삽입할 수 있다.
다만, 이 경우, 원하지 않는 트랜지션(transition)이 발생할 수 있다.
다음의 표 2는, 비교예와 도 5의 실시예에서 10진수 7과 -4를 더하는 연산을 수행하는 과정을 설명하기 위한 것으로서, 도 5에서 n 및 m은 4이고, k는 8일 수 있다.
표 2에서, Areg[7:4]는 부호 확장기(도 5의 150-2)에 의해 생성된 비트들이고, 음수는 2의 보수로 표현되어 있다.
클록 비교예 실시예(도 1)
[7:4] [3:0] C [7:4] [3:0] C
Cycle 1 Areg 0000 0111
-
Areg 0000 0111
-
S 0000 0000 S 0000 0000
Cycle 2 Areg 1111 1100
-
Areg 1111 1100
-
S 0000 0000 S 0000 0111
Cycle 3 Areg 0000 0000
-
Areg 0000 0000
1
S 0000 0111 S 1111 0011
Cycle 4 Areg 0000 0000
1
Areg 0000 0000
1
S 0000 0011 S 0000 0011
각 클록 사이클에서의 비교예와 실시예의 동작은 표 1에 대한 설명을 참고하면 쉽게 이해될 것이다.
표 2에 나타낸 바와 같이, 도 5의 실시예의 경우, 사이클 3에서 원하지 않은 트랜지션이 발생하였음을 알 수 있다.
즉, 본 발명의 일 실시예에 따르면, 하위 비트들의 연산에서 발생한 캐리가 한 클럭 뒤에서 상위 비트들의 합에 가산되기 때문에, 표 2와 같은 경우에 원하지 않는 트랜지션이 발생될 수 있다.
도 6은 본 발명의 일 실시예에 따른 연산 회로를 개략적으로 나타낸 블록도이다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 연산 회로(100-3)는 입력 버퍼(110-3), 제1 RCA(121-3), 제2 RCA(122-3), 플립플롭(130-3), 출력버퍼(140-3), 제1 부호 확장기(151-3), 및 전환 방지부(160-3)를 포함할 수 있다. 전환 방지부(160-3)는 제2 부호 확장기(152-3), 제1 논리 소자(153-3), 제2 논리 소자(154-3), 및 플립플롭(155-3)를 포함할 수 있다.
입력 버퍼(110-3), 제1 RCA(121-3), 제2 RCA(122-3), 플립플롭(130-3), 및 출력버퍼(140-3)의 기능과 동작은 도 1에서 설명한 입력 버퍼(110), 제1 RCA(121), 제2 RCA(122), 플립플롭(130), 및 제1 및 제2 출력버퍼(141, 142)의 기능 및 동작과 동일할 수 있다.
제1 부호 확장기(151-3)의 기능 및 동작은 도 5에서 설명한 부호 확장기(150-2)의 기능 및 동작과 동일할 수 있다. 다만, n이 m보다 크거나 같을 경우, 제1 부호 확장기(151-3)는 생략될 수 있다.
전환 방지부(160-3)는 입력 신호(A[n-1:0])의 최상위 비트(A[n-1])와 제1 RCA(121-3)에서 발생한 캐리에 응답하여 합산 신호(S[k-1:0])의 부적절한 전환을 방지할 수 있다. 전환 방지부(160-3)는 입력 신호(A[n-1:0])의 최상위 비트(A[n-1])가 1이고 제1 RCA(121-3)에서 발생한 캐리가 0일 때만 1을 출력하고, 그 이외의 경우에는 0을 출력하는 제1 논리 소자(153-3), 제1 논리 소자(153-3)의 출력 신호에 따라 부호 비트를 가산 신호의 상위 비트(즉, Areg[k-1:m])에 복사하는 제2 부호 확장기(152-3), 입력 신호(A[n-1:0])의 최상위 비트(A[n-1])가 0이고 제1 RCA(121-3)에서 발생한 캐리가 1일 때만 1을 출력하고, 그 이외의 경우에는 0을 출력하는 제2 논리 소자(154-3), 및 클럭 신호에 응답하여 제2 논리 소자(154-3)의 출력 신호를 래치하고, 제2 RCA(122-3)로 출력하는 플립플롭(155-3)을 포함할 수 있다.
즉, 전환 방지부(160-3)는 입력 신호(A[n-1:0])의 최상위 비트(A[n-1])가 "1"인 경우에도, 제1 RCA(121-3)에서 발생한 캐리가 "1"이라면 제2 부호 확장기(152-3)가 가산 신호의 상위 비트들(즉, Areg[k-1:m])이 "1"이 되지 않도록 할 수 있다. 따라서, 표 2의 사이클 3에서 발생하는 의도하지 않은 트랜지션을 방지할 수 있다.
도 7은 본 발명의 일 실시예에 따른 연산 회로를 개략적으로 나타낸 블록도이다.
도 7을 참조하면, 연산 회로(100-4)는 입력 버퍼(110-4), 제1 내지 제4 RCA(121-4~124-4), 제1 내지 제3 플립플롭(131-4~133-4), 출력 버퍼(140-4), 및 전환 방지부(160-4)를 포함할 수 있다.
입력 버퍼(110-4), 제1 내지 제4 RCA(121-4~124-4), 제1 내지 제3 플립플롭(131-4~133-4), 출력 버퍼(140-4) 각각의 기능 및 동작은 도 1에서 설명한 입력 버퍼(110), 제1 및 제2 RCA(121, 122), 플립플롭(130), 및 출력 버퍼(140)의 기능 및 동작을 참고하면 쉽게 이해될 것이다. 전환 방지부(160-4)의 구성과 기능 및 동작은 도 6에서 설명한 전환 방지부(160-3)와 동일할 수 있다.
즉, 도 7의 연산 회로(100-4)는 RCA 및 플립플롭의 수가 증가한 것을 제외하면, 도 6의 연산 회로(100-3)와 동일할 수 있다.
도 8은 본 발명의 일 실시예에 따른 연산 회로를 이용한 MAC 연산 과정을 설명하기 위한 도면이다.
본 발명의 일 실시예에 따른 뉴럴 네트워크는, 도 1 내지 도 7을 참조하여 전술한 연산 회로 및 소정의 멀티플라이어(multiplier)를 포함하는 뉴럴 프로세싱 유닛을 이용하여 MAC 연산을 수행할 수 있다. 일부 예에서, MAC 연산에 이용되는 멀티플라이어는 dadda 멀티플라이어를 포함할 수 있다. 다만, 이는 예시적인 것일 뿐 본 발명의 실시예들이 이에 한정되는 것은 아니다. 이하, 멀티플라이어는 dadda 멀티플라이어인 것을 전제로 MAC 연산 과정을 설명하기로 한다.
도 8을 참조하면, 스테이지 2의 타겟 하이트(target height)는 6이고, 스테이지 3의 타겟 하이트는 4이고, 스테이지 4의 타겟 하이트는 3이고, 스테이지 5의 타겟 하이트는 2일 수 있다.
영역들(R11, R12, R13, R14)은 타겟 하이트를 맞추기 위해 연산이 수행되는 비트들을 나타낸 것으로서, 사선 표시(/)은 반가산기(half adder), 엑스 표시(X)는 전가산기(full adder)에 의해 연산이 수행되는 비트들일 수 있다.
본 발명의 일 실시예에 따르면, 연산이 수행되는 비트들, 즉, 소정의 영역들(R11, R12, R13, R14)과 관련된 에지들에만 플립플롭을 삽입할 수 있다.
따라서, 삽입되는 플립플롭의 개수를 감소시킬 수 있고, 이를 통해 칩 사이즈 및 소모 전력도 감소시킬 수 있다.
도 8에서는 8비트의 신호와 8비트의 신호를 곱하는 경우를 예를 들어 설명하였으나, 본 발명의 개념은 n비트의 신호와 m비트의 신호(여기서, n, m은 0보다 큰 정수)를 곱하는 dadda 멀티플라이어에 적용될 수 있다.
도 9는 본 발명의 일 실시예에 따른 연산 회로를 포함하는 뉴럴 네트워크의 구조를 나타낸 도면이다.
도 9를 참조하면, 뉴럴 네트워크(10)는 입력 레이어(11), 히든 레이어(13) 및 출력 레이어(15)를 포함할 수 있다.
뉴럴 네트워크(10)의 각 레이어는 소정의 가중치를 갖고 상호 연결된 복수의 노드들(N)을 포함할 수 있으며, 각 노드(N)는 뉴럴에 대응할 수 있다.
입력 레이어(11)는 소정의 입력 데이터(Din1, Din2)를 히든 레이어(13)로 전달할 수 있다. 히든 레이어(13)는 복수의 컨볼루션 레이어들(CL1-CL3)을 포함할 수 있으며, 입력 레이어(11)로부터 전달된 입력 데이터(Din1, Din2)에 대해 뉴럴 프로세싱 유닛(Neural Processing Unit: NPU)을 이용한 컨볼루션(convolution) 연산을 수행할 수 있다. 컨볼루션 연산의 대부분은 MAC(multiply-accumulate) 연산으로 구성될 수 있다. 출력 레이어(15)는 히든 레이어(13)의 컨볼루션 연산 결과에 기초하여 뉴럴 네트워크(10)의 출력 데이터(Dout1, Dout2)를 생성할 수 있다.
도 9에서는 입력 레이어(11)가 2개의 노드들을 포함하고, 히든 레이어(13)의 각 레이어가 3개의 노드들을 포함하며, 출력 레이어(15)가 2개의 노드들을 포함하는 것을 도시하나, 본 발명의 실시예들이 이에 한정되는 것은 아니다. 예컨대, 입력 레이어(11)는 1개의 노드를 포함하고, 히든 레이어(15)의 각 레이어는 5개의 노드들을 포함하며, 출력 레이어(15)는 3개의 노드들을 포함할 수도 있다.
도 10은 도 9의 각 뉴럴에서 수행되는 MAC 연산 과정을 설명하기 위한 도면이다.
도 10을 참조하면, 뉴럴 프로세싱 유닛(NPU)은 'N(채널 개수) × W(데이터 너비) × H(데이터 높이)'의 크기를 갖는 입력 데이터(Din)에 대해 MAC 연산을 수행하여 도 1 내지 도 8을 참조하여 설명한 합산 신호(S[n-1:0])를 생성할 수 있다. 뉴럴 프로세싱 유닛(NPU)은 이러한 MAC 연산을 반복 수행함으로써 'M(채널 개수) × C(데이터 너비) × R(데이터 높이)'의 크기를 갖는 출력 데이터(Dout)를 생성할 수 있다.
뉴럴 프로세싱 유닛(NPU)은 멀티플라이어(MP)에 본 발명의 일 실시예에 따른 연산 회로가 적용된 구조를 가질 수 있다.
멀티플라이어(MP)는 입력 값 및 이에 대응하는 가중치 값에 대한 곱셈 연산을 수행할 수 있다. 일부 예에서, 멀티플라이어(MP)는 dadda 멀티플라이어일 수 있다. 다만, 이는 예시적인 것이므로 본 발명의 실시예들이 이에 한정되는 것은 아님에 유의하여야 한다.
도 8을 참조하여 전술한 바와 같이, 멀티플라이어(MP)는 n비트의 제1 신호와 m비트의 제2 신호를 입력받아, 상기 제1 신호와 상기 제2 신호를 곱한 값을 출력하되, 소정의 타겟 하이트(target height)를 만족하기 위해 적어도 일부의 비트들에 대해 전가산 또는 반가산을 수행하는 복수 개의 스테이지들을 포함할 수 있다.
본 발명의 일 실시예에 따른 연산 회로는 가산기(ADD)와 출력 버퍼(OB)로 간략하게 표현될 수 있다. 가산기(AD)는 도 1 내지 도 7을 참조하여 전술한 RCA(ripple carry adder)에 대응할 수 있다.
가산기(ADD)는 멀티플라이어(MP)의 출력값을 입력받아 복수의 사이클 동안 누산 동작을 반복 수행할 수 있다. MAC 연산 과정은 복수의 사이클들을 포함하며, 가산기(ADD)에 의해 각 사이클에서 생성된 합산(S1-Sn) 신호는 출력 버퍼(OB)에 래치될 수 있다. 또한, 각 사이클에서 생성된 합산 신호(S1-Sn)는 가산기(ADD)로 피드백되어 다음 사이클에서 합산 신호(S1-Sn)를 생성하는 데 이용될 수 있다.
MAC 연산 과정에서, 뉴럴 프로세싱 유닛(NPU)은 소정의 사이클(Sn-2)까지는 무효(invalid)인 데이터를 출력하지만, 해당 사이클 이후(Sn-1)부터는 유효(valid)인 데이터를 출력할 수 있다. 뉴럴 프로세싱 유닛(NPU)은 소정의 사이클 이후(Sn) 생성되는 유효인 데이터를 최종 데이터로서 출력하므로, 중간 과정(S1-Sn-2)에서 생성된 데이터의 무효성은 무시될 수 있다. 뉴럴 네트워크 알고리즘의 경우, MAC 연산의 중간 결과는 필요하지 않고, 연산의 최종 결과만을 필요로 한다. 이러한 특성을 이용하여, 본 발명의 일 실시예에 따른 연산 회로는, 피드포워드 컷셋 규칙을 따르지 않고, 실제 연산이 수행되는 부분과 직접적으로 연관된 크리티컬 패스에만 플립플롭이 연결될 수 있다.
도 11을 참조하면, 전자기기(20)는 뉴럴 프로세싱 유닛(NPU, 21), 메모리(22), 입출력 장치(23), 프로세서(24), 및 통신 모듈(25) 등을 포함할 수 있다. 또한, 전자기기(20)는 전원 장치, 디스플레이 장치 등을 더 포함할 수 있다.
프로세서(24)는 특정 연산이나 명령어 및 태스크 등을 수행할 수 있다. 프로세서(24)는 중앙 처리 장치(CPU) 또는 마이크로프로세서 유닛(MCU), 시스템 온 칩(SoC) 등일 수 있으며, 버스(26)를 통해 뉴럴 프로세싱 유닛(21), 메모리(22), 입출력 장치(23) 및 통신 모듈(25) 등과 통신할 수 있다.
메모리(23)는 머신 러닝에 필요한 학습 데이터 등을 저장하는 저장 매체일 수 있다. 메모리(23)는 랜덤 액세스 메모리(RAM)와 같은 휘발성 메모리, 또는 플래시 메모리 등과 같은 비휘발성 메모리를 포함할 수 있다. 또한, 메모리(23)는 저장장치로서 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD), 및 광학 드라이브(ODD) 중 적어도 하나를 포함할 수도 있다. 입출력 장치(22)는 사용자에게 제공되는 키보드, 마우스, 터치스크린 등과 같은 입력 장치 및 디스플레이, 오디오 출력부 등과 같은 출력 장치를 포함할 수 있다.
뉴럴 프로세싱 유닛(21)은 머신 러닝에 필요한 MAC(multiply-accumulate) 연산을 수행하기 위해, 도 1 내지 도 8을 참조하여 전술한 본 발명의 다양한 실시예들에 따른 연산 회로를 포함할 수 있다. 뉴럴 프로세싱 유닛(21)에 포함된 연산 회로는 파이프라이닝(pipelining) 방법을 사용하여 설계될 수 있으며, 피드포워드 컷셋(feedforward-cutset) 규칙을 따르지 않고 크리티컬 패스에만 연결된 플립플롭을 포함할 수 있다. 따라서, 본 발명의 일 실시예에 따른 뉴럴 프로세싱 유닛(21)은 MAC 연산에 필요한 플립플롭의 개수를 크게 줄일 수 있으므로 칩 사이즈를 감소시킬 수 있을 뿐만 아니라, 전력 소모도 감소시킬 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 형태의 치환, 수정 및 변형이 가능하다는 것은 당 기술분야의 통상의 지식을 가진 자에게는 자명할 것이다.
100, 100-1, 100-2, 100-3, 100-4 : 연산 회로
110, 110-1, 110-2, 110-3, 110-4 : 입력 버퍼
121, 122 : RCA
130 : 플립플롭
141, 142, 140-1, 140-2, 140-3, 140-4 : 출력 버퍼
N : 노드
MP : 멀티플라이어 AD : 가산기
OB : 출력 버퍼
21 : 뉴럴 프로세싱 유닛 22 : 메모리
23: 입출력 장치 24 : 프로세서
25 : 통신 모듈

Claims (20)

  1. 순차적으로 입력되는 복수 개의 입력 신호들 각각을 래치하고, 상기 복수 개의 입력 신호들을 기초로 복수 개의 제1 가산 신호들 및 복수 개의 제2 가산 신호들을 순차적으로 출력하는 입력 버퍼;
    상기 복수 개의 제1 가산 신호들을 누산하여 출력하는 제1 RCA(ripple carry adder);
    상기 제1 RCA에서 발생된 캐리(carry)를 래치하고 출력하는 플립플롭;
    상기 복수 개의 제2 가산 신호들을 누산한 값에 상기 캐리를 가산하여 출력하는 제2 RCA; 및
    상기 제1 RCA의 출력 신호와 상기 제2 RCA의 출력 신호를 래치하고, 상기 복수 개의 입력 신호들을 합한 합산 신호를 출력하는 출력 버퍼;를 포함하고,
    상기 출력 버퍼는,
    상기 복수 개의 입력 신호들을 모두 합한 합산 신호를 출력하기 전에 적어도 하나 이상의 무효인 상기 합산 신호를 출력하는,
    연산 회로.
  2. 제1항에 있어서,
    상기 입력 신호는 n(n은 1 이상의 정수) 비트의 신호이고, 상기 합산 신호는 k(k는 상기 n보다 큰 정수) 비트의 신호이며,
    상기 입력 신호의 최상위 비트에 따라 부호 확장을 통해 (k-n) 비트의 신호를 생성하는 부호 확장기를 더 포함하는,
    연산 회로.
  3. 제1항에 있어서,
    상기 입력 신호는 n(n은 1 이상의 정수) 비트의 신호이고, 상기 합산 신호는 k(k는 상기 n보다 큰 정수) 비트의 신호이며,
    상기 입력 신호의 최상위 비트에 따라 부호 확장을 통해 (k-n) 비트의 신호를 생성하되, 상기 캐리 및 상기 입력 신호의 최상위 비트에 따라 상기 (k-n) 비트의 신호들 중 적어도 일부의 값을 결정하는 전환 방지부를 더 포함하는,
    연산 회로.
  4. 제3항에 있어서,
    상기 전환 방지부는,
    상기 입력 신호의 최상위 비트가 1이고 상기 캐리가 0인 경우, 상기 (k-n) 비트의 신호를 모두 1의 값을 갖는 신호로서 생성하는,
    연산 회로.
  5. 제3항에 있어서,
    상기 전환 방지부는,
    상기 입력 신호의 최상위 비트가 1이고 상기 캐리가 1인 경우, 상기 (k-n) 비트의 신호를 적어도 하나의 0의 값을 갖는 신호로서 생성하는,
    연산 회로.
  6. 제1항에 있어서,
    피드포워드 컷셋(feedforward-cutset) 규칙에 따라 삽입 플립플롭이 추가되어야 할 에지들 중, 크리티컬 패스(critical path)에 해당하지 않는 에지는 상기 삽입 플립플롭에 추가되지 않는,
    연산 회로.
  7. n비트의 제1 신호와 m비트의 제2 신호를 입력받아, 상기 제1 신호와 상기 제2 신호를 곱한 값을 출력하는 멀티플라이어;
    상기 멀티플라이어로부터 순차적으로 입력되는 복수 개의 입력 신호들 각각을 래치하고, 상기 복수 개의 입력 신호들 각각에 따라 복수 개의 제1 가산 신호들 및 복수 개의 제2 가산 신호들을 순차적으로 출력하는 입력 버퍼;
    상기 복수 개의 제1 가산 신호들을 누산하여 출력하는 제1 RCA(ripple carry adder);
    상기 제1 RCA에서 발생된 캐리(carry)를 래치하고, 출력하는 제1 플립플롭;
    상기 복수 개의 제2 가산 신호들을 누산한 값에 상기 캐리를 가산하여 출력하는 제2 RCA; 및
    상기 제1 RCA의 출력 신호와 상기 제2 RCA의 출력 신호를 래치하고, 상기 복수 개의 입력 신호들을 합한 합산 신호를 출력하는 출력 버퍼를 포함하고,
    상기 출력 버퍼는,
    상기 복수 개의 입력 신호들을 모두 합한 합산 신호를 출력하기 전에 적어도 하나 이상의 무효인 상기 합산 신호를 출력하는,
    뉴럴 프로세싱 유닛.
  8. 제7항에 있어서,
    상기 멀티플라이어는,
    소정의 타겟 하이트(target height)를 만족하기 위해 적어도 일부의 비트들에 대해 전가산 또는 반가산을 수행하는 복수 개의 스테이지들을 포함하는,
    뉴럴 프로세싱 유닛.
  9. 제8항에 있어서,
    상기 멀티플라이어는,
    상기 복수 개의 스테이지들 사이에서 상기 전가산 또는 상기 반가산이 수행되는 비트들과 연관된 패스에 배치되는, 적어도 하나 이상의 제2 플립플롭을 더 포함하는,
    뉴럴 프로세싱 유닛.
  10. 제7항에 있어서,
    상기 입력 신호는 n(n은 1 이상의 정수) 비트의 신호이고, 상기 합산 신호는 k(k는 상기 n보다 큰 정수) 비트의 신호이며,
    상기 입력 신호의 최상위 비트에 따라 부호 확장을 통해 (k-n) 비트의 신호를 생성하는 부호 확장기를 더 포함하는,
    뉴럴 프로세싱 유닛.
  11. 제7항에 있어서,
    상기 입력 신호는 n(n은 1 이상의 정수) 비트의 신호이고, 상기 합산 신호는 k(k는 상기 n보다 큰 정수) 비트의 신호이며,
    상기 입력 신호의 최상위 비트에 따라 부호 확장을 통해 (k-n) 비트의 신호를 생성하되, 상기 캐리 및 상기 입력 신호의 최상위 비트에 따라 상기 (k-n) 비트의 신호들 중 적어도 일부의 값을 결정하는 전환 방지부를 더 포함하는,
    뉴럴 프로세싱 유닛.
  12. 제11항에 있어서,
    상기 전환 방지부는,
    상기 입력 신호의 최상위 비트가 1이고 상기 캐리가 0인 경우, 상기 (k-n) 비트의 신호를 모두 1의 값을 갖는 신호로서 생성하는,
    뉴럴 프로세싱 유닛.
  13. 제11항에 있어서,
    상기 전환 방지부는,
    상기 입력 신호의 최상위 비트가 1이고 상기 캐리가 1인 경우, 상기 (k-n) 비트의 신호를 적어도 하나의 0 값을 갖는 신호로서 생성하는,
    뉴럴 프로세싱 유닛.
  14. 제8항에 있어서,
    피드포워드 컷셋(feedforward-cutset) 규칙에 따라 삽입 플립플롭이 추가되어야 할 에지들 중, 크리티컬 패스(critical path)에 해당하지 않는 에지는 상기 삽입 플립플롭에 추가되지 않는,
    뉴럴 프로세싱 유닛.
  15. 머신 러닝을 위한 데이터들을 저장하는 메모리; 및
    적어도 하나 이상의 연산 회로를 포함하며, 상기 데이터들을 이용하여 머신 러닝을 수행하는 뉴럴 프로세싱 유닛을 포함하고,
    상기 적어도 하나 이상의 연산 회로 각각은
    순차적으로 입력되는 복수 개의 입력 신호들 각각을 래치하고, 상기 복수 개의 입력 신호들 각각에 따라 복수 개의 제1 가산 신호들 및 복수 개의 제2 가산 신호들을 순차적으로 출력하는 입력 버퍼;
    상기 복수 개의 제1 가산 신호들을 누산하여 출력하는 제1 RCA(ripple carry adder);
    상기 제1 RCA에서 발생된 캐리(carry)를 래치하고, 출력하는 플립플롭;
    상기 복수 개의 제2 가산 신호들을 누산한 값에 상기 캐리를 가산하여 출력하는 제2 RCA;
    상기 제1 RCA의 출력 신호와 상기 제2 RCA의 출력 신호를 래치하고, 합산 신호를 출력하는 출력 버퍼를 포함하는,
    전자 기기.
  16. 제15항에 있어서,
    상기 뉴럴 프로세싱 유닛은
    n비트의 제1 신호와 m비트의 제2 신호를 입력받아, 상기 제1 신호와 상기 제2 신호를 곱한 값을 상기 복수 개의 입력 신호들로서 출력하는 멀티플라이어(multiplier)를 더 포함하고,
    상기 멀티플라이어는,
    전가산 연산 또는 반가산 연산이 수행되는 비트들과 연관된 패스(path)에 배치되는 적어도 하나의 플립플롭을 포함하는,
    전자 기기.
  17. 제15항에 있어서,
    상기 입력 신호는 n(n은 1 이상의 정수) 비트의 신호이고, 상기 합산 신호는 k(k는 상기 n보다 큰 정수) 비트의 신호이며,
    상기 연산 회로는,
    상기 입력 신호의 최상위 비트에 따라 부호 확장을 통해 (k-n) 비트의 신호를 생성하는 부호 확장기를 더 포함하는,
    전자 기기.
  18. 제15항에 있어서,
    상기 입력 신호는 n(n은 1 이상의 정수) 비트의 신호이고, 상기 합산 신호는 k(k는 상기 n보다 큰 정수) 비트의 신호이며,
    상기 연산 회로는,
    상기 입력 신호의 최상위 비트에 따라 부호 확장을 통해 (k-n) 비트의 신호를 생성하되, 상기 캐리 및 상기 입력 신호의 최상위 비트에 따라 상기 (k-n) 비트의 신호들 중 적어도 일부의 값을 결정하는 전환 방지부를 더 포함하는,
    전자 기기.
  19. 제18항에 있어서,
    상기 전환 방지부는,
    상기 입력 신호의 최상위 비트가 1이고 상기 캐리가 0인 경우, 상기 (k-n) 비트의 신호를 모두 1의 값을 갖는 신호로서 생성하는,
    전자 기기.
  20. 제18항에 있어서,
    상기 전환 방지부는,
    상기 입력 신호의 최상위 비트가 1이고 상기 캐리가 1인 경우, 상기 (k-n) 비트의 신호를 적어도 하나의 0의 값을 갖는 신호로서 생성하는,
    전자 기기.
KR1020190108893A 2019-09-03 2019-09-03 연산 회로, 이를 포함하는 뉴럴 프로세싱 유닛 및 전자 기기 Pending KR20210027878A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190108893A KR20210027878A (ko) 2019-09-03 2019-09-03 연산 회로, 이를 포함하는 뉴럴 프로세싱 유닛 및 전자 기기
US16/847,872 US11435981B2 (en) 2019-09-03 2020-04-14 Arithmetic circuit, and neural processing unit and electronic apparatus including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190108893A KR20210027878A (ko) 2019-09-03 2019-09-03 연산 회로, 이를 포함하는 뉴럴 프로세싱 유닛 및 전자 기기

Publications (1)

Publication Number Publication Date
KR20210027878A true KR20210027878A (ko) 2021-03-11

Family

ID=74682274

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190108893A Pending KR20210027878A (ko) 2019-09-03 2019-09-03 연산 회로, 이를 포함하는 뉴럴 프로세싱 유닛 및 전자 기기

Country Status (2)

Country Link
US (1) US11435981B2 (ko)
KR (1) KR20210027878A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI696947B (zh) * 2019-09-26 2020-06-21 中原大學 乘積累加裝置及其方法
US12293163B1 (en) 2024-01-09 2025-05-06 Recogni Inc. Split accumulator with a shared adder
US12039290B1 (en) * 2024-01-09 2024-07-16 Recogni Inc. Multiply accumulate (MAC) unit with split accumulator

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5010509A (en) * 1988-10-05 1991-04-23 United Technologies Corporation Accumulator for complex numbers
US5337395A (en) 1991-04-08 1994-08-09 International Business Machines Corporation SPIN: a sequential pipeline neurocomputer
US5812993A (en) 1996-03-07 1998-09-22 Technion Research And Development Foundation Ltd. Digital hardware architecture for realizing neural network
US6009448A (en) 1997-08-18 1999-12-28 Industrial Technology Research Institute Pipelined parallel-serial architecture for a modified least mean square adaptive filter
US6463453B1 (en) 1998-01-12 2002-10-08 Motorola, Inc. Low power pipelined multiply/accumulator with modified booth's recoder
US7424503B2 (en) * 2003-10-01 2008-09-09 Agilent Technologies, Inc. Pipelined accumulators
US9189014B2 (en) 2008-09-26 2015-11-17 Intel Corporation Sequential circuit with error detection
KR101094574B1 (ko) 2009-10-29 2011-12-19 인하대학교 산학협력단 Bch 복호기를 위한 고속 소면적 파이프라인 폴딩 방식 벨르캄프-메시 알고리즘 연산 회로 및 그 방법
TW201134100A (en) * 2010-03-26 2011-10-01 Novatek Microelectronics Corp (Xiu-accumulator) adder circuit and Xiu-accumulator circuit using the same
US9176927B2 (en) 2011-11-08 2015-11-03 The Royal Institution For The Advancement Of Learning/Mcgill University Methods and systems for decoding polar codes
US10338919B2 (en) 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
US11080131B2 (en) 2017-06-19 2021-08-03 Yissum Research Development Company Of The Hebrew University Of Jerusalem Ltd. High performance method and system for performing fault tolerant matrix multiplication
US10210137B2 (en) 2017-06-28 2019-02-19 Intel Corporation Binary multiplier for binary vector factorization
KR101981109B1 (ko) 2017-07-05 2019-05-22 울산과학기술원 연산 속도를 향상시킨 simd mac 유닛, 그 동작 방법 및 simd mac 유닛의 배열을 이용한 콘볼루션 신경망 가속기

Also Published As

Publication number Publication date
US20210064339A1 (en) 2021-03-04
US11435981B2 (en) 2022-09-06

Similar Documents

Publication Publication Date Title
EP1025486B1 (en) Fast regular multiplier architecture
EP0448367B1 (en) High speed digital parallel multiplier
KR20210027878A (ko) 연산 회로, 이를 포함하는 뉴럴 프로세싱 유닛 및 전자 기기
CN109542393B (zh) 一种近似4-2压缩器及近似乘法器
US10877733B2 (en) Segment divider, segment division operation method, and electronic device
EP0416869B1 (en) Digital adder/accumulator
WO2018204898A1 (en) Fast binary counters based on symmetric stacking and methods for same
JP4852061B2 (ja) 低密度パリティ検査(ldpc)デコーダに応用する演算回路
US10355737B2 (en) Touch screen controller for increasing data processing speed and touch system including the same
US20040107233A1 (en) Serial finite field multiplier
CN110633068A (zh) 行波进位加法器
US6609142B1 (en) Method of performing multiplication with accumulation in a Galois body
US4985861A (en) High speed digital signal processor for signed digit numbers
JP4607604B2 (ja) 4:2csaセル及び4:2キャリ保存加算方法
WO2022088683A1 (zh) 计算芯片、算力板和数据处理设备
CN110515586B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111694543B (zh) 近似乘法器设计方法、近似乘法器和图像锐化电路
KR20220143562A (ko) 메모리 장치 및 그 동작 방법
JP2003179505A (ja) ターボ復号器外因正規化
CN111258542B (zh) 乘法器、数据处理方法、芯片及电子设备
US6631393B1 (en) Method and apparatus for speculative addition using a limited carry
US20240069868A1 (en) Mac operator related to correcting a computational error
Gustafsson et al. Bit-level pipelinable general and fixed coefficient digit-serial/parallel multipliers based on shift-accumulation
JP3940564B2 (ja) 乗算回路
CN112732219B (zh) 一种ssd主控芯片中乘法运算电路和方法

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20190903

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20220824

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20190903

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20240822

Patent event code: PE09021S01D

E90F Notification of reason for final refusal
PE0902 Notice of grounds for rejection

Comment text: Final Notice of Reason for Refusal

Patent event date: 20250417

Patent event code: PE09021S02D