KR20200059153A - 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기 - Google Patents

룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기 Download PDF

Info

Publication number
KR20200059153A
KR20200059153A KR1020190146454A KR20190146454A KR20200059153A KR 20200059153 A KR20200059153 A KR 20200059153A KR 1020190146454 A KR1020190146454 A KR 1020190146454A KR 20190146454 A KR20190146454 A KR 20190146454A KR 20200059153 A KR20200059153 A KR 20200059153A
Authority
KR
South Korea
Prior art keywords
target
weight
features
results
input
Prior art date
Application number
KR1020190146454A
Other languages
English (en)
Other versions
KR102451519B1 (ko
Inventor
유회준
이진묵
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to US16/689,199 priority Critical patent/US20200160161A1/en
Publication of KR20200059153A publication Critical patent/KR20200059153A/ko
Application granted granted Critical
Publication of KR102451519B1 publication Critical patent/KR102451519B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기에 관한 것이다. 본 발명의 실시예에 따른 심층 신경망 가속기는 입력 특징들을 저장하는 특징 로더, 가중치를 저장하는 가중치 메모리, 및 처리 요소를 포함한다. 처리 요소는 입력 특징들에 1 비트 가중치 값들을 적용하여 1 비트 가중치 값들에 따른 결과들을 생성한다. 처리 요소는 가중치 메모리로부터 입력 특징들에 대응되는 타겟 가중치를 수신하고, 결과들 중 수신된 타겟 가중치에 대응되는 타겟 결과를 선택하여 출력 특징들을 생성한다.

Description

룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기{DEEP NEURAL NETWORK ACCELERATOR INCLUDING LOOKUP TABLE BASED BIT-SERIAL PROCESSING ELEMENTS}
본 발명은 심층 신경망 프로세서에 관한 것으로, 좀 더 상세하게는 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기에 관한 것이다.
딥 러닝(Deep Learning)은 뉴런과 가중치의 집계로 구성되는 심층 신경망(Deep Neural Network; DNN)을 데이터베이스를 사용하여 학습하는 과정일 수 있다. 학습된 DNN에 입력 데이터를 입력하여 추론 결과가 얻어질 수 있다. DNN은 컨볼루션 신경망(Convolutional Neural Network; CNN), 재귀 신경망(Recurrent Neural Network; RNN), 및 완전-연결 심층 신경망(Fully-connected DNN; FCDNN) 등으로 구성될 수 있으며, DNN의 형태는 추론 목적에 의존할 수 있다.
일례로, DNN의 학습 시에, 32 비트 또는 64 비트의 부동 소수점 연산을 이용하여, 가중치가 학습될 수 있다. 학습된 DNN의 가중치들은 비트-스케일러블(Bit-scalable)한 특성을 가질 수 있어, 32 비트 또는 64 비트보다 낮은 정밀도를 갖는 가중치가 입력 데이터의 처리를 위하여 사용될 수 있다. 이 경우, 메모리로부터 읽혀지는 가중치의 양이 줄어들 수 있다. 그리고, 주어진 하드웨어 리소스 하에서, 다수의 낮은 비트 정밀도 처리 요소들이 사용될 수 있으므로, 추론의 처리율(throughput)이 향상될 수 있다. 즉, DNN 추론 연산의 에너지 효율이 향상될 수 있다. 그러나, 다양한 DNN들 또는 DNN 내의 레이어들 각각에서 스케일러블한 최소 비트 정밀도는 서로 다르므로, 적응적인 가중치 비트 정밀도를 지원하는 연산기가 요구된다.
본 발명은 다양한 비트 정밀도를 지원하는 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기를 제공할 수 있다.
또한, 본 발명은 룩업 테이블을 이용하여 입력 특징을 재사용함으로써, 개선된 전력 효율을 갖는 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기를 제공할 수 있다.
본 발명의 실시예에 따른 심층 신경망 가속기는 입력 특징들을 저장하는 특징 로더, 가중치를 저장하는 가중치 메모리, 및 처리 요소를 포함한다. 처리 요소는 입력 특징들에 1 비트 가중치 값들을 적용하여 1 비트 가중치 값들에 따른 결과들을 생성하고, 가중치 메모리로부터 입력 특징들에 대응되는 타겟 가중치를 수신하고, 결과들 중 수신된 타겟 가중치에 대응되는 타겟 결과를 선택하여 출력 특징들을 생성한다.
일례로, 처리 요소는 제1 시간 동안 타겟 가중치의 제1 비트들을 수신하고, 결과들 중 제1 비트들에 대응되는 제1 타겟 결과를 선택하고, 상기 제1 시간 이후의 제2 시간 동안 타겟 가중치의 제2 비트들을 수신하고, 결과들 중 제2 비트들에 대응되는 제2 타겟 결과를 선택하고, 제1 타겟 결과에 제2 타겟 결과를 누적한다.
일례로, 처리 요소는 1 비트 가중치 값들의 모든 조합들을 생성하고, 조합들 각각에 대한 입력 특징들과 1 비트 가중치 값들의 부분 곱을 계산하여, 결과들을 생성한다.
일례로, 타겟 가중치는, 입력 특징들에 각각 대응되는 제1 가중치 값들 및 타겟 결과의 반전 여부를 결정하는 제2 가중치 값을 포함하고, 제1 가중치 값들 및 제2 가중치 값은 제1 값 또는 제2 값을 갖는 1 비트 가중치이다. 일례로, 처리 요소는, 제2 가중치 값이 제1 값인 경우, 제1 가중치 값들에 기초하여 타겟 결과를 선택하고, 타겟 결과에 기초하여 출력 특징들을 생성하고, 제2 가중치 값이 제2 값인 경우, 제1 가중치 값들을 반전하여 타겟 결과를 선택하고, 타겟 결과를 반전하여 상기 출력 특징들을 생성한다.
일례로, 타겟 가중치는, 입력 특징들에 각각 대응되는 가중치 값들을 포함하고, 가중치 값들 각각은 1 비트보다 큰 비트 수를 갖는다. 일례로, 처리 요소는, 가중치 값들의 최하위 비트들에 기초하여 제1 타겟 결과를 선택하고, 가중치 값들의 최하위 비트들 및 최상위 비트들 사이의 비트들에 기초하여 제2 타겟 결과를 선택하고, 가중치 값들의 최상위 비트들에 기초하여 제3 타겟 결과를 선택한다. 일례로, 처리 요소는, 제2 타겟 결과를 비트-쉬프트하고, 비트-쉬프트된 제2 타겟 결과를 제1 타겟 결과에 가산하여 중간 누적 결과를 생성하고, 제3 타겟 결과를 비트-쉬프트하여, 중간 누적 결과에 비트-쉬프트된 제3 타겟 결과를 감산한다.
일례로, 처리 요소는, 입력 특징들 중 제1 특징들에 대응되는 제1 결과들을 생성하고, 가중치 메모리로부터 제1 특징들에 대응되는 제1 타겟 가중치를 수신하고, 제1 결과들 중 제1 타겟 가중치에 대응되는 제1 타겟 결과를 출력하는 제1 룩업 테이블 묶음, 입력 특징들 중 제2 특징들에 대응되는 제2 결과들을 생성하고, 가중치 메모리로부터 제2 특징들에 대응되는 제2 타겟 가중치를 수신하고, 제2 결과들 중 제2 타겟 가중치에 대응되는 제2 타겟 결과를 출력하는 제2 룩업 테이블 묶음, 및 제1 타겟 결과 및 제2 타겟 결과를 누적하여 출력 특징들을 생성하는 누산기를 포함한다.
일례로, 처리 요소는, 업데이트 신호에 기초하여, 특징 로더로부터 수신된 상기 입력 특징들 또는 가중치 메모리로부터 수신된 타겟 가중치를 출력하는 멀티플렉서, 입력 특징들 중 제1 특징들에 대응되는 제1 결과들을 저장하고, 출력된 타겟 가중치 중 제1 특징들에 대응되는 제1 타겟 가중치를 수신하고, 제1 결과들 중 제1 타겟 가중치에 대응되는 제1 타겟 결과를 출력하는 제1 룩업 테이블 모듈, 입력 특징들 중 제2 특징들에 대응되는 제2 결과들을 저장하고, 출력된 타겟 가중치 중 상기 제2 특징들에 대응되는 제2 타겟 가중치를 수신하고, 제2 결과들 중 제2 타겟 가중치에 대응되는 제2 타겟 결과를 출력하는 제2 룩업 테이블 모듈, 및 제1 특징들에 기초하여 제1 결과들을 생성하고, 제2 특징들에 기초하여 제2 결과들을 생성하고, 제1 및 제2 타겟 결과들을 누적하는 모듈 가산기를 포함한다.
일례로, 처리 요소는, 결과들을 저장하는 파일 레지스터들, 및 타겟 가중치를 수신하여 파일 레지스터로부터 타겟 결과를 선택하는 멀티플렉서들을 포함한다. 일례로, 처리 요소는, 타겟 가중치에서, 입력 특징들의 개수 및 멀티플렉서들의 개수의 곱과 같은 비트 개수의 가중치 값들을 수신하고, 수신된 가중치 값들을 멀티플렉서들에 전달하는 가중치 입력 회로를 더 포함한다.
일례로, 특징 로더는 제1 입력 특징 맵의 제1 부분 및 제2 입력 특징 맵의 제2 부분을 정렬하여, 입력 특징들을 생성한다.
본 발명의 실시예에 따른 심층 신경망 가속기는 각각이 입력 특징 맵 및 가중치에 기초하여 출력 특징 맵을 생성하는 심층 신경망 코어들, 및 심층 신경망 코어들 각각으로부터 출력 특징 맵을 수신하고, 수신된 출력 특징 맵을 누적하여 최종 출력 특징 맵을 생성하는 집계 코어를 포함한다. 심층 신경망 코어들 각각은, 가중치를 저장하는 가중치 메모리, 각각이 입력 특징 맵의 일부인 입력 특징들을 저장하는 특징 로더들, 및 각각이 특징 로더들 중 하나로부터 입력 특징들을 수신하고, 입력 특징들에 대응되는 타겟 가중치에 기초하여 출력 특징 맵에 포함되는 출력 특징들을 생성하는 처리 요소들을 포함한다. 처리 요소들 각각은, 입력 특징들에 1 비트 가중치 값들을 적용하여 1 비트 가중치 값들에 따른 결과들을 생성하고, 결과들 중 수신된 타겟 가중치에 대응되는 타겟 결과를 선택하여 출력 특징들을 생성한다.
본 발명의 실시예에 따른 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기는 다양한 비트 정밀도를 지원할 수 있고, 전력 효율을 향상시킬 수 있다.
도 1은 본 발명의 실시예에 따른 심층 신경망 가속기의 블록도이다.
도 2는 도 1의 DNN 코어의 예시적인 블록도이다.
도 3은 도 2의 처리 요소들에서 수행되는 룩업 테이블 기반의 비트-시리얼 처리 동작을 설명하기 위한 도면이다.
도 4는 도 3에서 설명된 특징의 재사용을 설명하기 위한 그래프이다.
도 5 내지 도 7은 도 1 및 도 2에서 설명된 처리 요소를 사용하여 FCDNN 또는 RNN 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 8 내지 도 10은 도 1 및 도 2에서 설명된 처리 요소를 사용하여 CNN 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 11은 도 8 내지 도 10에서 설명된 CNN 동작이 DNN 코어에서 수행되는 과정을 설명하기 위한 도면이다.
도 12는 도 2의 처리 요소의 예시적인 블록도이다.
도 13은 도 12의 처리 요소의 룩업 테이블을 이용한 출력 특징 맵을 생성하는 과정을 설명하기 위한 도면이다.
도 14는 도 12의 LUT 모듈의 동작을 구체적으로 설명하기 위한 도면이다.
도 15는 1-비트 정밀도를 갖는 가중치에서, LUT 모듈의 동작을 설명하기 위한 도면이다.
도 16은 1-비트보다 큰 정밀도를 갖는 가중치에서, LUT 모듈의 동작을 설명하기 위한 도면이다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재된다.
도 1은 본 발명의 실시예에 따른 심층 신경망(DNN) 가속기의 블록도이다. 도 1을 참조하면, DNN 가속기(100)는 게이트 웨이들(101, 102), 네트워크 온 칩(NoC, 110), 심층 신경망(DNN) 코어들(121, 122, 123, 124), 집계 코어(130), SIMD(Single Instruction Multiple Data) 코어(140), 및 RISC(Reduced Instruction Set Computed) 컨트롤러(150)를 포함할 수 있다. 도 1에 도시된 DNN 가속기(100)의 아키텍처는 예시적인 것으로, 도 1에 제한되지 않는다. 일례로, DNN 코어들(121~124)의 개수가 도 1과 다를 수 있다.
게이트 웨이들(101, 102)은 외부 메모리(미도시) 등과 DNN 가속기(100)를 연결시킬 수 있다. 게이트 웨이들(101, 102)은 외부 메모리(미도시)에 저장된 가중치들 또는 특징 맵을 DNN 가속기(100)로 전달하고, DNN 가속기(100)로부터 생성된 처리 결과들을 외부 메모리(미도시)로 전달하는데 사용될 수 있다.
네트워크 온 칩(110)은 일례로, 2차원 메쉬 타입일 수 있다. 네트워크 온 칩(110)은 게이트 웨이들(101, 102)에 연결될 수 있다. 네트워크 온 칩(110)은 DNN 코어들(121~124), 집계 코어(130), SIMD 코어(140), 및 RISC 컨트롤러(150) 사이의 데이터 전달 경로를 제공할 수 있다.
DNN 코어들(121~124)은 독립적으로 입력 특징과 가중치의 연산에 따라 부분 합들(partial sums)을 생성할 수 있다. 이러한 부분 합들의 누적에 따라 출력 특징들이 생성될 수 있다. DNN 코어들(121~124) 각각은 룩업-테이블 기반의 비트-시리얼 처리 요소들을 포함할 수 있다. 이를 통하여, DNN 코어들(121~124) 각각은 다양한 비트 정밀도를 지원할 수 있고, 입력 특징을 재사용할 수 있다. DNN 코어들(121~124) 각각에 대한 구체적인 내용은 후술된다.
집계 코어(130)는 네트워크 온 칩(110)과 다른 전용 경로를 통하여, DNN 코어들(121~124) 각각으로부터 부분 합들(출력 특징들)을 수신할 수 있다. 집계 코어(130)는 DNN 코어들(121~124) 각각으로부터 수신된 출력 특징들을 집계하여, 최종 출력 특징 맵을 생성할 수 있다.
SIMD 코어(140)는 최종 출력 특징 맵에 비선형 활성화 함수(non-linear activation function) 또는 요소-단위 곱(element-wise multiplication)과 같은 벡터 처리를 수행하여 최종 출력 결과들을 생성할 수 있다. 일례로, 활성화 함수는 구간적 선형 근사(piecewise linear approximation)을 사용하여 구현될 수 있다.
RISC 코어(150)는 DNN 동작 시에, 명령어를 실행하는데 사용될 수 있다. 이러한 명령어는 네트워크 온 칩(110)을 통하여 내부 코어들 사이의 데이터 통신을 수행하는데 요구되는 명령어일 수 있다.
도 2는 도 1의 DNN 코어의 예시적인 블록도이다. 도 2에 도시된 DNN 코어(120)는 도 1의 DNN 코어들(121~124) 중 하나에 대응된다. 도 2를 참조하면, DNN 코어(120)는 입출력 회로(125), 특징 로더들(126), 가중치 메모리(127), 및 처리 요소들(128)을 포함할 수 있다.
입출력 회로(125)는 코어(120)와 네트워크 온 칩(110) 사이의 데이터 통신을 수행하도록 구성될 수 있다. 일례로, 입출력 회로(125)는 코어(120)와 네트워크 온 칩(110) 사이의 데이터 전달을 위한 스위치, 데이터의 직접적인 전달을 제어하기 위한 DMA(Direct Memory Access) 컨트롤러, 커스텀 명령어 디코더, 및 커스텀 명령어 셋에 대한 컨트롤러를 포함할 수 있다.
특징 로더들(126)은 정렬된 특징 맵 로더들(aligned feature map loaders, AFL)일 수 있다. 특징 로더들(126)의 개수는 처리 요소들(128)의 개수와 같을 수 있다. 특징 로더들(126)은 입출력 회로(125)를 통하여 외부로부터 입력 특징 맵들을 수신할 수 있다. 특징 로더들(126)은 컨볼루션 동작 중에 데이터 지역성(data locality)을 활용함으로써, 입력 특징 맵을 인출(fetch)하는데 요구되는 외부 메모리의 액세스를 감소시키도록 설계될 수 있다. 특징 로더들(126)은 입력 특징 맵들을 정렬 및 저장한 후에, 요구되는 입력 특징 맵들을 처리 요소들(128)에 제공하는 버퍼일 수 있다. 입력 특징 맵들의 정렬은 현재 가속화되는 네트워크가 컨볼루션 레이어든, 재귀 레이어든, 또는 완전-연결 레이어든, 관계없이 처리 요소들(128)의 DNN 동작을 가능케 할 수 있다.
가중치 메모리(127)는 심층 신경망 동작을 위한 가중치들을 저장하도록 구성될 수 있다. 가중치 메모리(127)는 입출력 회로(125)를 통하여 외부로부터 가중치들을 수신할 수 있다. 가중치 메모리(127)는 요구되는 가중치들을 처리 요소들(128)에 제공할 수 있다.
처리 요소들(128)은 DNN 동작을 위한 행렬 곱 연산을 수행할 수 있다. 처리 요소들(128)은 비트-시리얼 방식으로 다양한 비트 정밀도를 갖는 가중치에 대한 MAC(Multiply-and-accumulate) 연산을 수행할 수 있다. 일례로, 처리 요소들(128)은 비트-시리얼 방식을 이용하여, 1 비트부터 16 비트까지의 모든 가중치 비트 정밀도로 MAC 연산을 지원할 수 있다. 처리 요소들(128)은 룩업 테이블(Lookup table, LUT)을 이용한 MAC 연산을 수행할 수 있다. 이를 위하여, 처리 요소들(128) 각각은 LUT 묶음들(LBs) 및 누산기(AC)를 포함할 수 있다.
하나의 LUT 묶음(LB)은 복수의 LUT 모듈들을 포함할 수 있다. LUT 묶음(LB)은 LUT 모듈에서 관리되는 LUT에 액세스함으로써, MAC 연산들을 수행할 수 있다. LUT는 특정 가중치 값에 대응되는 입력 특징 값을 매핑하는데 사용될 수 있다. 입력 특징과 가중치 행렬의 행렬 곱 연산 시에, 입력 특징은 가중치 행렬의 행 또는 열의 개수만큼 재사용될 수 있다. 처리 요소들(128)은 LUT를 이용하여, 입력 특징 맵을 여러 번 재사용할 수 있고, 행렬 곱 연산 시에 에너지 효율성을 향상시킬 수 있다.
누산기(AC)는 LUT 묶음들(LBs)로부터 행렬 곱 연산 결과인 부분 합들을 누적하여 출력 특징 맵을 생성할 수 있다. 이러한 출력 특징 맵 (또는 출력 특징)은 전용 경로를 통하여, 집계 코어(130)로 출력될 수 있다.
도 3은 도 2의 처리 요소들에서 수행되는 룩업 테이블 기반의 비트-시리얼 처리 동작을 설명하기 위한 도면이다. 도 3을 참조하면, 처리 요소들(123)은 예시적으로 n개(PE0, PE1, …, PEn)인 것으로 가정한다. n개의 처리 요소들(PE0~PEn) 각각은 1 비트 가중치의 MAC 연산의 반복을 통하여, 1 비트 내지 16 비트의 다양한 가중치 비트 정밀도로 DNN 동작을 수행할 수 있다.
처리 요소들(PE0~PEn) 각각은 입력 특징(IF0, IF1, …, IFn)을 특징 로더들(126)로부터 수신하고, 가중치를 가중치 메모리(127)로부터 수신할 수 있다. 가중치는 1 비트 단위로 처리 요소들(PE0~PEn) 각각에 제공될 수 있다. 일례로, 제1 시간(t0)에 제1 처리 요소(PE0)는 입력 특징(IF0)과 1-비트 가중치 W[0,0]의 논리 곱, 누적, 및 쉬프트 연산을 수행할 수 있다. 제1 시간(t0) 이후 제2 시간(t1)에 제1 처리 요소(PE1)는 입력 특징(IF0)과 1-비트 가중치 W[0,1]의 논리 곱을 수행하고, 제1 시간(t0)의 결과에 논리 곱을 누적하고, 쉬프트 연산을 수행할 수 있다. 이러한 반복에 기초하여, 처리 요소들(PE0~PEn) 각각은 출력 특징(OF0, OF1, …, OFn)을 생성할 수 있다.
입력 특징들(IF0~IFn)은 제1 내지 제16 시간들(t0~t15) 동안 재사용될 수 있다. 비트-시리얼 동작은 가중치에 사용될 수 있다. 이러한 재사용은 룩업 테이블을 이용하여 입력 특징을 위한 외부 메모리의 액세스를 감소시켜, DNN 가속기(100)의 전력 소모를 감소시킬 수 있다. 기존의 고정 소수점 연산기와 비교하여, DNN 가속기(100)는 15 비트, 8 비트, 4 비트, 및 1 비트들의 정밀도들에서 각각 23.1%, 27.2%, 41%, 및 53.6%의 전력 소모량의 감소 효과를 가질 수 있다.
도 4는 도 3에서 설명된 특징의 재사용을 설명하기 위한 그래프이다. 도 4를 참조하면, 가중치 비트 정밀도에 따른 재사용 가능한 데이터의 비율을 도시한다. 재사용 가능한 데이터의 비율은 재사용 가능한 특징과 재사용 가능한 가중치 사이의 비율을 나타낸다.
RNN 및 FCDNN에서, 가중치의 비트 정밀도와 관계없이, 가중치의 재사용이 불가능하고, 특징의 재사용만이 가능하다. 따라서, RNN 및 FCDNN 연산에서는 특징 맵이 재사용된다.
반면, CNN에서, 가중치 및 특징의 재사용이 가능하다. 가중치 비트 정밀도가 낮아질수록, 재사용 가능한 가중치에 비하여 재사용 가능한 특징이 많아질 수 있다. 즉, 가중치 비트 정밀도가 낮아질수록, CNN 연산 특성이 RNN 및 FCDNN에 가까워질 수 있다. 본 발명의 DNN 가속기(100)는 CNN 연산 시에, 특징 맵을 재사용하기 위하여, 특징 맵을 1차원 벡터로 벡터화할 수 있다.
이에 따라, DNN 가속기(100)는 CNN, RNN, 및 FCDNN 동작 모두를 지원할 수 있다. 도 3에서 설명된, 룩업 테이블 기반의 비트-시리얼 처리 동작 및 재사용을 통하여, DNN 가속기(100)는 다양한 가중치 비트 정밀도를 지원할 수 있다. DNN 가속기(100)는 DNN 타입에 따라, CNN을 수행하는 처리 요소들(128)의 개수와 RNN 또는 FCDNN을 수행하는 처리 요소들(128)의 개수를 조절할 수 있다.
도 5 내지 도 7은 도 1 및 도 2에서 설명된 처리 요소를 사용하여 FCDNN 또는 RNN 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 5를 참조하면, 입력 특징 맵(IF)은 1차원 특징 벡터로 표현될 수 있고, 가중치(WT)는 2차원 행렬로 표현될 수 있다. FCDNN 또는 RNN 연산 시에, 입력 특징 맵(IF)에서, N개의 입력 특징들 각각은 행렬 곱 연산을 위하여 M개의 가중치 값들(W1~WM)과 곱하여질 수 있다. 즉, 하나의 입력 특징은 M번 재사용될 수 있다. 도 5에서, 하나의 입력 특징에 대한 연산이 도시되나, 다른 입력 특징들 모두 M번 재사용될 수 있다. 행렬 곱 연산 결과, 출력 특징 맵(OF)이 생성될 수 있다. 출력 특징 맵(OF)은 1차원 특징 벡터로 표현될 수 있고, M개의 출력 특징들을 포함할 수 있다. 출력 특징들은 입력 특징들과 가중치 곱의 부분 합들이 누적된 결과일 수 있다.
FCDNN에서, 제1 레이어에 대응되는 특징 맵(입력 특징 맵(IF))에 가중치(WT)가 적용되어 제2 레이어에 대응되는 특징 맵(출력 특징 맵(OF))이 생성될 수 있다. RNN에서, 제1 시간에 대응되는 특징 맵(입력 특징 맵(IF))에 가중치(WT)가 적용되어 제2 시간에 대응되는 특징 맵(출력 특징 맵(OF))이 생성될 수 있다.
도 6을 참조하면, 입력 특징 맵(IF)이 특징 로더(AFL0)로 인출될 수 있다. 입력 특징 맵(IF)은 1차원 특징 벡터로 표현될 수 있다. 처리 요소(PE0)의 제1 LUT 묶음(LB0)은 입력 특징 맵(IF)의 일부 특징들을 입력 받을 수 있다. 그리고, 제1 LUT 묶음(LB0)은 가중치 메모리(127)에 저장된 가중치(WT) 중 수신된 특징들에 대응되는 가중치를 입력 받을 수 있다. 가중치(WT)는 2차원 행렬로 표현될 수 있다. 제1 LUT 묶음(LB0)은 수신된 입력 특징들 및 가중치들의 행렬 곱 연산에 기초하여, 부분 합들을 생성할 수 있다. 이를 위하여, 입력 특징들은 제1 LUT 묶음(LB0)에서 재사용될 수 있다. 누산기(AC)는 제1 LUT 묶음(LB0)으로부터 출력된 부분 합들을 누적할 수 있다.
도 7을 참조하면, 처리 요소(PE0)의 제2 LUT 묶음(LB1)은 입력 특징 맵(IF)의 일부 특징들을 입력 받을 수 있다. 제1 LUT 묶음(LB0)이 수신하는 입력 특징들은 제2 LUT 묶음(LB1)이 수신하는 입력 특징들과 다를 수 있다. 그리고, 제2 LUT 묶음(LB1)은 가중치 메모리(127)에 저장된 가중치(WT) 중 수신된 특징들에 대응되는 가중치를 입력 받을 수 있다. 제1 LUT 묶음(LB0)이 수신하는 가중치들은 제2 LUT 묶음(LB1)이 수신하는 가중치들과 다를 수 있다. 제2 LUT 묶음(LB1)은 수신된 입력 특징들 및 가중치들의 행렬 곱 연산에 기초하여, 부분 합들을 생성할 수 있다. 이를 위하여, 입력 특징들은 제2 LUT 묶음(LB1)에서 재사용될 수 있다. 누산기(AC)는 제1 LUT 묶음(LB0) 및 제2 LUT 묶음(LB1)을 포함하는 LUT 묶음들(LBs)로부터 출력된 부분 합들을 누적할 수 있다. 누적 결과, 누산기(AC)로부터 출력 특징 맵(OF)이 생성될 수 있다.
도 8 내지 도 10은 도 1 및 도 2에서 설명된 처리 요소를 사용하여 CNN 동작을 수행하는 과정을 설명하기 위한 도면이다.
도 8을 참조하면, 입력 특징 맵(IF)은 예시적으로 N개의 2차원 특징 맵들을 포함할 수 있다. 가중치(WT)는 NXM개의 2차원 행렬들로 표현될 수 있다. 2차원 특징 맵의 일부는 M개의 2차원 가중치 행렬들과 행렬 곱 연산될 수 있다. 이 때, 2차원 특징 맵의 일부는 M번 재사용될 수 있다. 행렬 곱 연산 결과는 출력 특징 맵(OF)의 일부일 수 있다. 행렬 곱 연산 결과가 누적되어, 출력 특징 맵(OF)이 생성될 수 있다. 출력 특징 맵(OF)은 M개의 2차원 특징 맵들을 포함할 수 있다.
도 9를 참조하면, 입력 특징 맵(IF)의 일부가 특징 로더(AFL0)로 인출될 수 있다. 특징 로더(AFL0)로 인출되는 입력 특징 맵(IF)은 N개의 2차원 특징 맵들에서 특정 영역에 대응되는 특징들을 포함할 수 있다. 특징 로더(AFL0)에서, 인출된 입력 특징들은 1차원 벡터로 변환될 수 있다. 이는 도 4에서 설명한 바와 같이, CNN 연산 시에, 특징 맵을 재사용하기 위함이다.
처리 요소(PE0)의 제1 LUT 묶음(LB0)은 특징 로더(AFL0)에 저장된 입력 특징 맵(IF)의 일부 특징들을 입력 받을 수 있다. 예시적으로, 3개의 2차원 특징 맵들에서의 일부 특징들인 특징 a, 특징 b, 및 특징 c가 제1 LUT 묶음(LB0)에 제공될 수 있다. 제1 LUT 묶음(LB0)은 가중치 메모리(127)에 저장된 가중치(WT) 중 특징 a, 특징 b, 및 특징 c에 대응되는 가중치를 입력 받을 수 있다. 일례로, 도 8에서 설명된 NXM개의 2차원 가중치 행렬들 중 3M개의 가중치 행렬들의 일부 값들이 제1 LUT 묶음(LB0)에 제공될 수 있다. 제1 LUT 묶음(LB0)은 수신된 입력 특징들 및 가중치들의 행렬 곱 연산에 기초하여, 부분 합들을 생성할 수 있다. 이를 위하여, 특징 a, 특징 b, 및 특징 c는 제1 LUT 묶음(LB0)에서 재사용될 수 있다. 누산기(AC)는 제1 LUT 묶음(LB0)으로부터 출력된 부분 합들을 누적할 수 있다.
도 10을 참조하면, 처리 요소(PE0)의 제2 LUT 묶음(LB1)은 특징 로더(AFL0)에 저장된 입력 특징 맵(IF)의 일부 특징들을 입력 받을 수 있다. 제1 LUT 묶음(LB0)이 수신하는 입력 특징들은 제2 LUT 묶음(LB1)이 수신하는 입력 특징들과 다를 수 있으며, 예시적으로 특징 d, 특징 e, 및 특징 f일 수 있다. 그리고, 제2 LUT 묶음(LB1)은 가중치 메모리(127)에 저장된 가중치(WT) 중 특징 d, 특징 e, 및 특징 f에 대응되는 가중치를 입력 받을 수 있다. 제1 LUT 묶음(LB0)이 수신하는 가중치들은 제2 LUT 묶음(LB1)이 수신하는 가중치들과 다를 수 있다. 제2 LUT 묶음(LB1)은 수신된 입력 특징들 및 가중치들의 행렬 곱 연산에 기초하여, 부분 합들을 생성할 수 있다. 이를 위하여, 특징 d, 특징 e, 및 특징 f는 제2 LUT 묶음(LB1)에서 재사용될 수 있다. 누산기(AC)는 LUT 묶음들(LBs)로부터 출력된 부분 합들을 누적할 수 있다. 누적 결과, 누산기(AC)로부터 출력 특징 맵(OF)이 생성될 수 있다.
도 11은 도 8 내지 도 10에서 설명된 CNN 동작이 DNN 코어에서 수행되는 과정을 설명하기 위한 도면이다. 도 11에 도시된 제1 내지 제3 특징 로더들(AFL0, AFL1, AFL2), 제1 내지 제3 처리 요소들(PE0, PE1, PE2), 및 가중치 메모리(127)는 도 1의 DNN 코어들(121~124) 중 하나에 포함될 수 있고, 도 8 내지 도 10에서 설명된 CNN 동작을 수행하는데 사용될 수 있다.
제1 내지 제3 특징 로더들(AFL0~AFL2)은 입력 특징 맵(IF)의 일부를 인출할 수 있다. 제1 내지 제3 특징 로더들(AFL0~AFL2) 각각이 인출하는 특징들의 적어도 일부는 서로 다를 수 있다. 일례로, 제1 특징 로더(AFL0)는 2차원 특징 맵들 중 제1 영역의 특징들을 인출하고, 제2 특징 로더(AFL1)는 2차원 특징 맵들 중 제2 영역의 특징들을 인출할 수 있다. 컨볼루션 연산을 위하여, 제1 영역의 일부와 제2 영역의 일부는 중첩할 수 있다. 인출되는 입력 특징 맵(IF)은 특정 방향으로 슬라이드될 수 있다.
제1 내지 제3 처리 요소들(PE0~PE2)은 도 9 및 도 10에서 설명한 바와 같이, 가중치 메모리(127)로부터 가중치들(WT)을 수신하고, 입력 특징들과 가중치들(WT)을 행렬 곱 연산할 수 있다. 그 결과, 제1 내지 제3 처리 요소들(PE0~PE2) 각각은 출력 특징 맵을 생성할 수 있다. 제1 내지 제3 처리 요소들(PE0~PE2)로부터 출력된 출력 특징 맵은 도 1의 집계 코어(130)에 누적될 수 있다. 이에 따라, 컨볼루션 연산 결과인 최종 출력 특징맵이 집계 코어(130)에서 생성될 수 있다.
도 12는 도 2의 처리 요소의 예시적인 블록도이다. 처리 요소(PE)는 상술된 가중치(WT)의 비트-시리얼 처리 및 입력 특징(IF)의 재사용을 수행할 수 있도록 구성된다. 도 12를 참조하면, 처리 요소(PE)는 LUT 묶음들(LBs), 묶음 가산기(BA), 및 쉬프트 가산기(SA)를 포함할 수 있다. 묶음 가산기(BA) 및 및 쉬프트 가산기(SA)는 도 2의 누산기(AC)에 포함되는 구성으로 이해될 수 있다.
LUT 묶음(LB)은 멀티플렉서(BM), 복수의 LUT 모듈들(LM0, LM1, LM2, LM3), 제어 로직(CL), 및 모듈 가산기(MA)를 포함할 수 있다. 4개의 LUT 모듈들(LM0, LM1, LM2, LM3)이 도시되나, LUT 모듈들의 개수는 이에 제한되지 않는다.
멀티플렉서(BM)는 가중치(WT) 및 입력 특징 맵(IF)을 수신한다. 여기에서, 입력 특징 맵(IF)은 상술된 바와 같이, 특징 로더로부터 제공된 1차원 특징 벡터일 수 있다. 가중치(WT)는 상술된 바와 같이, 가중치 메모리에 저장된 가중치들 중 일부일 수 있다. 멀티플렉서(BM)는 업데이트 신호(UDS)에 기초하여, 가중치(WT)를 제어 로직(CL)에 출력하거나, 입력 특징 맵(IF)을 제어 로직(CL)에 출력할 수 있다.
새로운 입력 특징 맵(IF)이 수신되는 경우, 업데이트 신호(UDS)가 활성화 레벨을 갖고, 멀티플렉서(BM)는 입력 특징 맵(IF)을 제어 로직(CL)으로 출력할 수 있다. 제어 로직(CL)은 룩업 테이블의 업데이트 값(UV)을 생성하도록, 모듈 가산기(MA)를 제어할 수 있다. 모듈 가산기(MA)는 입력 특징 맵(IF)의 특징들과 1 비트 가중치의 모든 부분 곱의 조합을 계산하여, 업데이트 값(UV)을 생성할 수 있다. 일례로, 입력 특징 맵(IF)이 특징 A 및 특징 B를 포함하는 경우, 업데이트 값(UV)은 A, B, 0, A+B를 포함할 수 있다. 업데이트 값(UV)은 가중치(WT)와 매칭되어 복수의 LUT 모듈들(LM0~LM3)에서 관리될 수 있다.
복수의 LUT 모듈들(LM0~LM3)에서 부분 곱들이 업데이트된 이후에, 업데이트 신호(UDS)가 비활성 레벨을 갖고, 멀티플렉서(BM)는 가중치(WT)를 제어 로직(CL)으로 출력할 수 있다. 제어 로직(CL)은 가중치(WT)를 복수의 LUT 모듈들(LM0~LM3)로 전달할 수 있다. 복수의 LUT 모듈들(LM0~LM3)은 수신된 가중치(WT)와 매칭되는 업데이트 값(UV)을 이용하여, 가중치(WT)와 입력 특징 맵(IF)의 일부 특징들의 곱의 부분 합들을 출력할 수 있다. 이러한 부분 합들은, 업데이트 값(UV)을 이용하여 입력 특징 맵(IF)을 재사용함으로써, 생성될 수 있다.
모듈 가산기(MA)는 복수의 LUT 모듈들(LM0~LM3) 각각으로부터 수신된 부분 합들을 누적하여, 가중치(WT)와 입력 특징 맵(IF)의 부분 합들(Lsum)을 생성할 수 있다.
묶음 가산기(BA)는 복수의 LUT 묶음들(LBs)로부터 출력되는 부분 합들(Lsum)을 누적하여, 복수의 LUT 묶음들(LBs)에 입력되는 특징 맵에 대응되는 부분 합들(Bsum)을 생성할 수 있다. 쉬프트 가산기(SA)는 부분 합들(Bsum)을 비트-쉬프트 및 누적하여, 출력 특징 맵(OF)을 생성할 수 있다.
도 13은 도 12의 처리 요소의 룩업 테이블을 이용한 출력 특징 맵을 생성하는 과정을 설명하기 위한 도면이다. 입력 특징 맵(IF)은 제1 내지 제3 특징들(A, B, C)를 포함할 수 있다. 제1 내지 제3 가중치들(Wa, Wb, Wc)은 각각 제1 내지 제3 특징들(A, B, C)에 대응된다. 업데이트 과정에서, 제1 내지 제3 특징들(A, B, C) 및 제1 내지 제3 가중치들(Wa, Wb, Wc)의 가능한 모든 부분 곱이 도 12의 LUT 모듈들(LM0~LM3)에서 관리될 수 있다. 이러한 부분 곱들은 (0, A, B, C, A+B, A+C, B+C, A+B+C)로 나타날 수 있다.
처리 요소(PE)는 제1 내지 제3 가중치들(Wa, Wb, Wc) 각각의 비트들에 대응되는 값들을 룩업 테이블로부터 읽을 수 있다. 처리 요소(PE)는 제1 시간(t0) 동안 최하위 비트들 000과 매칭되는 0을 누적하고, 제2 시간(t1) 동안 그 다음 비트들 100과 매칭되는 A를 비트-쉬프트 및 누적할 수 있다. 이러한 연산은 제1 내지 제3 가중치들(Wa, Wb, Wc) 각각의 비트 수만큼 반복될 수 있다. 마지막 제8 시간(t7) 동안, 처리 요소(PE)는 최상위 비트들 111과 매칭되는 A+B+C를 비트-쉬프트 및 누적할 수 있다. 이 때, 최상위 비트들에 대응되는 값은 2의 보수 곱셈 연산을 위하여, 누적된 값에서 감산될 수 있다. 그 결과, 제1 내지 제3 특징들(A, B, C)에 대응되는 출력 특징 맵(OF)이 계산될 수 있다.
처리 요소(PE)는 룩업 테이블을 기반으로, 입력 특징 맵(IF), 즉 제1 내지 제3 특징들(A, B, C)을 재사용할 수 있다. 이 경우, 처리 요소(PE)는 1 비트 가중치의 부분 합을 반복하여 계산하지 않을 수 있다. 따라서, 처리 요소(PE) 및 DNN 가속기(100)의 전력 효율이 향상될 수 있다.
도 14는 도 12의 LUT 모듈의 동작을 구체적으로 설명하기 위한 도면이다. 도 14를 참조하면, LUT 모듈(LM)은 룩업 테이블을 관리하는 파일 레지스터들, 멀티플렉서들(MUXs), 및 가중치 입력 회로를(WI) 포함할 수 있다. 편의상, 구체적인 수치로 LUT 모듈의 동작이 설명되나, 이러한 수치들은 LUT 모듈의 구성 및 동작을 제한하지 않는 것으로 이해될 것이다.
입력 특징 맵(IF)은 제1 내지 제4 특징들(A, B, C, D)을 포함한다. 1-비트 정밀도를 갖는 가중치(WT)에서, 제1 내지 제4 특징들(A, B, C, D)이 모두 재사용된다. 1 비트보다 큰 비트 정밀도를 갖는 가중치(WT)에서, 제4 특징(D)은 사용되지 않고, 제1 내지 제3 특징들(A, B, C)이 재사용된다.
파일 레지스터들은 제1 내지 제4 특징들(A, B, C, D) 또는 제1 내지 제3 특징들(A, B, C)에 기초한 업데이트 값(UV)을 관리할 수 있다. 파일 레지스터들은 제1 내지 제3 특징들(A, B, C)의 조합 수와 같은 8개의 값들을 관리할 수 있다. 최대 16-비트 가중치 정밀도를 지원하기 위하여, 8개의 16-비트 파일 레지스터들이 제공될 수 있다. 이 경우, 업데이트 값(UV)은 128비트일 수 있다.
멀티플렉서들(MUXs)은 파일 레지스터들에 병렬적인 접근을 위하여 12개로 구성될 수 있다. 이 경우, a=12이고, LUT 모듈(LM0)에서 커버되는 가중치(WT)는 4X12 행렬일 수 있다. 하나의 LUT 묶음이 4개의 LUT 모듈들을 포함하는 경우, 하나의 LUT 묶음에서 커버되는 가중치는 12X12 행렬일 수 있다. 하나의 처리 요소가 4개의 LUT 묶음들을 포함하는 경우, 하나의 처리 요소에서 커버되는 가중치는 48X12 행렬일 수 있다. 이 경우, 하나의 처리 요소가 16-비트 가중치 정밀도의 MAC 연산을 수행한다면, 처리 요소는 16 사이클 동안 48X12 MAC 연산들을 수행할 수 있다.
가중치 입력 회로(WI)는 1 사이클 당, 멀티플렉서들(Mux)의 개수에 대응되는 3X12 비트 또는 4X12 비트의 가중치 값들을 수신할 수 있다. 1 사이클에서 수신되는 가중치 값들은 가중치 행렬의 원소들에서 동일한 자리수의 비트들일 수 있다. 일례로, 최초 사이클에서, 수신되는 가중치 값들은 가중치 행렬의 원소들에서 최하위 비트들일 수 있다.
가중치 입력 회로(WI)는 1-비트 정밀도를 갖는 가중치(WT)에서, 4X12 비트 가중치 값들을 수신할 수 있다. 가중치 행렬의 제4 행들의 가중치 값들 (12 비트)에 기초하여, 제1 내지 제3 행들의 가중치 값들(36 비트) 또는 이의 반전된 값들이 멀티플렉서들(Mux)로 출력될 수 있다. 제4 행들의 가중치 값들은 제1 내지 제3 행들의 가중치 값들의 MAC 연산 시에, 덧셈 또는 뺄셈을 선택하기 위한 값들일 수 있다. 1-비트 정밀도를 갖는 가중치(WT)의 구체적인 설명은 도 15에서 후술된다.
가중치 입력 회로(WI)는 1-비트보다 큰 비트 정밀도를 갖는 가중치(WT)에서, 3X12 비트 가중치 값들을 수신할 수 있다. 제1 내지 제3 행들의 가중치 값들(36 비트)은 멀티플렉서들(Mux)로 출력될 수 있다. 이 경우, 도 13과 같이 MAC 연산이 수행될 수 있다. 1-비트보다 큰 비트 정밀도를 갖는 가중치(WT)의 구체적인 설명은 도 16에서 후술된다.
멀티플렉서들(MUXs)은 가중치 입력 회로(WI)를 통하여 제공되는 가중치 값들에 기초하여, 출력 결과(R0)를 생성할 수 있다. 멀티플렉서들(MUXs)은 수신된 가중치 값들에 대응되는 업데이트 값(UV)을 파일 레지스터로부터 읽을 수 있다. 그리고, 멀티플렉서들(MUXs)은 파일 레지스터로부터 읽혀진 값을 출력 결과(R0)로 출력할 수 있다. 일례로, 출력 결과(R0)는 부분 합 연산을 위하여 도 12의 모듈 가산기(MA)로 출력될 수 있다. 이 경우, 입력 특징 맵(IF)이 사이클마다 재사용될 수 있다. 또한, 룩업 테이블의 업데이트 값(UV)을 이용하여 출력 결과(R0)를 생성하므로, 가중치(WT)와 입력 특징 맵(IF)의 반복적인 계산으로 인한 전력 소모가 감소할 수 있다.
도 15는 1-비트 정밀도를 갖는 가중치에서, LUT 모듈의 동작을 설명하기 위한 도면이다. 도 15에서, 도 14의 제1 내지 제4 특징들(A, B, C, D)에 기초하여 룩업 테이블이 업데이트된다. 업데이트 시에, 가중치 값이 0에 대응되는 특징이 감산되는 것으로 이해될 것이다. 도 14의 가중치(WT)에서, 1 비트의 가중치 값들이 2차원 행렬을 구성할 수 있다. 예시적으로, 도 14의 가중치(WT)의 제1 열의 가중치 값들 W(0,0)은 1이고, W(1,0)은 0이고, W(2,0)은 1이고, W(3,0)은 0인 것으로 가정한다. 다른 열들의 가중치 값들은 LUT 모듈의 다른 멀티플렉서에 처리될 수 있다.
W(3,0)이 0이므로, 도 14의 멀티플렉서(MUX)는 반전된 가중치 값들을 수신할 수 있다. 즉, 멀티플렉서(MUX)는 반전된 W(0,0)인 0, 반전된 W(1,0)인 1, 및 반전된 W(2,0)인 0을 수신할 수 있다. 이에 따라, 룩업 테이블의 인덱스 010에 대응되는 D-C+B-A가 파일 레지스터들로부터 읽혀질 수 있다. 그리고, W(3,0)이 0이므로, 출력 결과는 D-C+B-A이 반전된 A-B+C-D일 수 있다. 즉, 제4 특징(D)에 대응되는 제4 행의 가중치들은 출력 결과의 반전 여부를 결정하는데 사용될 수 있다.
도 16은 1-비트보다 큰 정밀도를 갖는 가중치에서, LUT 모듈의 동작을 설명하기 위한 도면이다. 도 16에서, 도 14의 제1 내지 제3 특징들(A, B, C)에 기초하여 룩업 테이블이 업데이트된다. 도 14의 가중치(WT)에서, n 비트의 가중치 값들이 2차원 행렬을 구성할 수 있다. 가중치(WT)의 제1 내지 제3 행들의 가중치 값들이 멀티플렉서(MUX)로 입력될 수 있다.
제1 시간 동안, 멀티플렉서(MUX)는 W(0,0), W(1,0), 및 W(2,0)의 최하위 비트들인 W(0,0)[0], W(1,0)[0], 및 W(2,0)[0]을 수신할 수 있다. 이에 따라, 최하위 비트들에 대응되는 룩업 테이블의 값이 파일 레지스터들로부터 읽혀질 수 있다. 제2 시간 동안, 멀티플렉서(MUX)는 W(0,0), W(1,0), 및 W(2,0)의 최하위 비트들의 다음 비트들인 W(0,0)[1], W(1,0)[1], 및 W(2,0)[1]을 수신할 수 있다. 이에 따른 출력 결과들은 비트-쉬프트되어, 제1 시간에 생성된 출력 결과에 누적될 수 있다. 그리고, W(0,0), W(1,0), 및 W(2,0)의 최상위 비트들인 W(0,0)[n-1], W(1,0)[n-1], 및 W(2,0)[n-1]은 2의 보수 곱셈 연산에 따라 누적된 값에서 감산될 수 있다. 이러한 연산들에 기초하여, W(0,0)A+W(1,0)B+W(2,0)C가 생성될 수 있다.
즉, 도 14의 LUT 모듈을 이용하여, 도 15와 같이, 1-비트의 가중치 정밀도가 지원될 수 있고, 도 16과 같이, 1-비트보다 큰 비트 가중치 정밀도가 지원될 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 용이하게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다.
100: DNN 가속기 110: 네트워크 온 칩
120~124: DNN 코어 125: 입출력 회로
126: 특징 로더들 127: 가중치 메모리
128 처리 요소들 130: 집계 코어
LB: LUT 묶음 AC: 누산기
LM: LUT 모듈

Claims (20)

  1. 입력 특징들을 저장하는 특징 로더;
    가중치를 저장하는 가중치 메모리; 및
    상기 입력 특징들에 1 비트 가중치 값들을 적용하여 상기 1 비트 가중치 값들에 따른 결과들을 생성하고, 상기 가중치 메모리로부터 상기 입력 특징들에 대응되는 타겟 가중치를 수신하고, 상기 결과들 중 상기 수신된 타겟 가중치에 대응되는 타겟 결과를 선택하여 출력 특징들을 생성하는 처리 요소를 포함하는 심층 신경망 가속기.
  2. 제1 항에 있어서,
    상기 처리 요소는,
    제1 시간 동안 상기 타겟 가중치의 제1 비트들을 수신하고, 상기 결과들 중 상기 제1 비트들에 대응되는 제1 타겟 결과를 선택하고,
    상기 제1 시간 이후의 제2 시간 동안 상기 타겟 가중치의 제2 비트들을 수신하고, 상기 결과들 중 상기 제2 비트들에 대응되는 제2 타겟 결과를 선택하고, 상기 제1 타겟 결과에 상기 제2 타겟 결과를 누적하는 심층 신경망 가속기.
  3. 제1 항에 있어서,
    상기 처리 요소는,
    상기 1 비트 가중치 값들의 모든 조합들을 생성하고, 상기 조합들 각각에 대한 상기 입력 특징들과 상기 1 비트 가중치 값들의 부분 곱을 계산하여, 상기 결과들을 생성하는 심층 신경망 가속기.
  4. 제1 항에 있어서,
    상기 타겟 가중치는, 상기 입력 특징들에 각각 대응되는 제1 가중치 값들 및 상기 타겟 결과의 반전 여부를 결정하는 제2 가중치 값을 포함하고, 상기 제1 가중치 값들 및 상기 제2 가중치 값은 제1 값 또는 제2 값을 갖는 1 비트 가중치이고,
    상기 처리 요소는,
    상기 제2 가중치 값이 상기 제1 값인 경우, 상기 제1 가중치 값들에 기초하여 상기 타겟 결과를 선택하고, 상기 타겟 결과에 기초하여 상기 출력 특징들을 생성하고,
    상기 제2 가중치 값이 상기 제2 값인 경우, 상기 제1 가중치 값들을 반전하여 상기 타겟 결과를 선택하고, 상기 타겟 결과를 반전하여 상기 출력 특징들을 생성하는 심층 신경망 가속기.
  5. 제1 항에 있어서,
    상기 타겟 가중치는, 상기 입력 특징들에 각각 대응되는 가중치 값들을 포함하고, 상기 가중치 값들 각각은 1 비트보다 큰 비트 수를 갖고,
    상기 처리 요소는,
    상기 가중치 값들의 최하위 비트들에 기초하여 제1 타겟 결과를 선택하고, 상기 가중치 값들의 상기 최하위 비트들 및 최상위 비트들 사이의 비트들에 기초하여 제2 타겟 결과를 선택하고, 상기 가중치 값들의 상기 최상위 비트들에 기초하여 제3 타겟 결과를 선택하는 심층 신경망 가속기.
  6. 제5 항에 있어서,
    상기 처리 요소는,
    상기 제2 타겟 결과를 비트-쉬프트하고, 상기 비트-쉬프트된 제2 타겟 결과를 상기 제1 타겟 결과에 가산하여 중간 누적 결과를 생성하고, 상기 제3 타겟 결과를 비트-쉬프트하여, 상기 중간 누적 결과에 상기 비트-쉬프트된 제3 타겟 결과를 감산하는 심층 신경망 가속기.
  7. 제1 항에 있어서,
    상기 처리 요소는,
    상기 입력 특징들 중 제1 특징들에 대응되는 제1 결과들을 생성하고, 상기 가중치 메모리로부터 상기 제1 특징들에 대응되는 제1 타겟 가중치를 수신하고, 상기 제1 결과들 중 상기 제1 타겟 가중치에 대응되는 제1 타겟 결과를 출력하는 제1 룩업 테이블 묶음;
    상기 입력 특징들 중 제2 특징들에 대응되는 제2 결과들을 생성하고, 상기 가중치 메모리로부터 상기 제2 특징들에 대응되는 제2 타겟 가중치를 수신하고, 상기 제2 결과들 중 상기 제2 타겟 가중치에 대응되는 제2 타겟 결과를 출력하는 제2 룩업 테이블 묶음; 및
    상기 제1 타겟 결과 및 상기 제2 타겟 결과를 누적하여 상기 출력 특징들을 생성하는 누산기를 포함하는 심층 신경망 가속기.
  8. 제1 항에 있어서,
    상기 처리 요소는,
    업데이트 신호에 기초하여, 상기 특징 로더로부터 수신된 상기 입력 특징들 또는 상기 가중치 메모리로부터 수신된 상기 타겟 가중치를 출력하는 멀티플렉서;
    상기 입력 특징들 중 제1 특징들에 대응되는 제1 결과들을 저장하고, 상기 출력된 타겟 가중치 중 상기 제1 특징들에 대응되는 제1 타겟 가중치를 수신하고, 상기 제1 결과들 중 상기 제1 타겟 가중치에 대응되는 제1 타겟 결과를 출력하는 제1 룩업 테이블 모듈;
    상기 입력 특징들 중 제2 특징들에 대응되는 제2 결과들을 저장하고, 상기 출력된 타겟 가중치 중 상기 제2 특징들에 대응되는 제2 타겟 가중치를 수신하고, 상기 제2 결과들 중 상기 제2 타겟 가중치에 대응되는 제2 타겟 결과를 출력하는 제2 룩업 테이블 모듈; 및
    상기 제1 특징들에 기초하여 상기 제1 결과들을 생성하고, 상기 제2 특징들에 기초하여 상기 제2 결과들을 생성하고, 상기 제1 및 제2 타겟 결과들을 누적하는 모듈 가산기를 포함하는 심층 신경망 가속기.
  9. 제1 항에 있어서,
    상기 처리 요소는,
    상기 결과들을 저장하는 파일 레지스터들; 및
    상기 타겟 가중치를 수신하여 상기 파일 레지스터로부터 상기 타겟 결과를 선택하는 멀티플렉서들을 포함하는 심층 신경망 가속기.
  10. 제9 항에 있어서,
    상기 처리 요소는,
    상기 타겟 가중치에서, 상기 입력 특징들의 개수 및 상기 멀티플렉서들의 개수의 곱과 같은 비트 개수의 가중치 값들을 수신하고, 상기 수신된 가중치 값들을 상기 멀티플렉서들에 전달하는 가중치 입력 회로를 더 포함하는 심층 신경망 가속기.
  11. 제1 항에 있어서,
    상기 특징 로더는 제1 입력 특징 맵의 제1 부분 및 제2 입력 특징 맵의 제2 부분을 정렬하여, 상기 입력 특징들을 생성하는 심층 신경망 가속기.
  12. 각각이 입력 특징 맵 및 가중치에 기초하여 출력 특징 맵을 생성하는 심층 신경망 코어들; 및
    상기 심층 신경망 코어들 각각으로부터 상기 출력 특징 맵을 수신하고, 상기 수신된 출력 특징 맵을 누적하여 최종 출력 특징 맵을 생성하는 집계 코어를 포함하고,
    상기 심층 신경망 코어들 각각은,
    상기 가중치를 저장하는 가중치 메모리;
    각각이 상기 입력 특징 맵의 일부인 입력 특징들을 저장하는 특징 로더들; 및
    각각이 상기 특징 로더들 중 하나로부터 상기 입력 특징들을 수신하고, 상기 입력 특징들에 대응되는 타겟 가중치에 기초하여 상기 출력 특징 맵에 포함되는 출력 특징들을 생성하는 처리 요소들을 포함하고,
    상기 처리 요소들 각각은, 상기 입력 특징들에 1 비트 가중치 값들을 적용하여 상기 1 비트 가중치 값들에 따른 결과들을 생성하고, 상기 결과들 중 상기 수신된 타겟 가중치에 대응되는 타겟 결과를 선택하여 상기 출력 특징들을 생성하는 심층 신경망 가속기.
  13. 제12 항에 있어서,
    상기 특징 로더들 중 제1 특징 로더는 상기 입력 특징 맵의 제1 영역에 대응되는 입력 특징들을 상기 처리 요소들 중 제1 처리 요소로 출력하고,
    상기 특징 로더들 중 제2 특징 로더는 상기 입력 특징 맵의 제2 영역에 대응되는 입력 특징들을 상기 처리 요소들 중 제2 처리 요소로 출력하는 심층 신경망 가속기.
  14. 제13 항에 있어서,
    상기 제1 영역의 일부는 상기 제2 영역의 일부에 중첩하는 심층 신경망 가속기.
  15. 제12 항에 있어서,
    상기 처리 요소들 각각은,
    상기 입력 특징들 중 제1 특징들에 대응되는 제1 결과들을 생성하고, 상기 가중치 메모리로부터 상기 제1 특징들에 대응되는 제1 타겟 가중치를 수신하고, 상기 제1 결과들 중 상기 제1 타겟 가중치에 대응되는 제1 타겟 결과를 출력하는 제1 룩업 테이블 묶음;
    상기 입력 특징들 중 제2 특징들에 대응되는 제2 결과들을 생성하고, 상기 가중치 메모리로부터 상기 제2 특징들에 대응되는 제2 타겟 가중치를 수신하고, 상기 제2 결과들 중 상기 제2 타겟 가중치에 대응되는 제2 타겟 결과를 출력하는 제2 룩업 테이블 묶음; 및
    상기 제1 타겟 결과 및 상기 제2 타겟 결과를 누적하여 상기 출력 특징들을 생성하는 누산기를 포함하는 심층 신경망 가속기.
  16. 제15 항에 있어서,
    상기 입력 특징 맵은 제1 특징 맵 및 제2 특징 맵을 포함하고,
    상기 특징 로더는, 상기 제1 특징 맵에서 상기 제1 특징들을 추출하고, 상기 제2 특징 맵에서 상기 제2 특징들을 추출하고, 상기 제1 특징들을 상기 제1 룩업 테이블 묶음으로 전달하고, 상기 제2 특징들을 상기 제2 룩업 테이블 묶음으로 전달하는 심층 신경망 가속기.
  17. 제15 항에 있어서,
    상기 제1 룩업 테이블 묶음은,
    상기 제1 결과들의 제1 부분을 저장하고, 상기 제1 부분에 기초하여 상기 제1 타겟 결과의 제1 타겟 부분을 출력하는 제1 룩업 테이블 모듈;
    상기 제1 결과들의 제2 부분을 저장하고, 상기 제2 부분에 기초하여 상기 제1 타겟 결과의 제2 타겟 부분을 출력하는 제2 룩업 테이블 모듈; 및
    상기 제1 특징들에 기초하여 상기 제1 결과들을 생성하고, 상기 제1 타겟 부분 및 상기 제2 타겟 부분을 누적하여 상기 제1 타겟 결과를 생성하는 제1 모듈 가산기를 포함하고,
    상기 제2 룩업 테이블 묶음은,
    상기 제2 결과들의 제3 부분을 저장하고, 상기 제3 부분에 기초하여 상기 제2 타겟 결과의 제3 타겟 부분을 출력하는 제3 룩업 테이블 모듈;
    상기 제2 결과들의 제4 부분을 저장하고, 상기 제4 부분에 기초하여 상기 제2 타겟 결과의 제4 타겟 부분을 출력하는 제4 룩업 테이블 모듈; 및
    상기 제2 특징들에 기초하여 상기 제2 결과들을 생성하고, 상기 제3 타겟 부분 및 상기 제4 타겟 부분을 누적하여 상기 제2 타겟 결과를 생성하는 제2 모듈 가산기를 포함하는 심층 신경망 가속기.
  18. 제12 항에 있어서,
    상기 타겟 가중치는, 상기 입력 특징들에 각각 대응되는 제1 가중치 값들 및 상기 타겟 결과의 반전 여부를 결정하는 제2 가중치 값을 포함하고, 상기 제1 가중치 값들 및 상기 제2 가중치 값은 제1 값 또는 제2 값을 갖는 1 비트 가중치이고,
    상기 처리 요소들 각각은,
    상기 제2 가중치 값이 상기 제1 값인 경우, 상기 제1 가중치 값들에 기초하여 상기 타겟 결과를 선택하고, 상기 타겟 결과에 기초하여 상기 출력 특징들을 생성하고,
    상기 제2 가중치 값이 상기 제2 값인 경우, 상기 제1 가중치 값들을 반전하여 상기 타겟 결과를 선택하고, 상기 타겟 결과를 반전하여 상기 출력 특징들을 생성하는 심층 신경망 가속기.
  19. 제12 항에 있어서,
    상기 타겟 가중치는, 상기 입력 특징들에 각각 대응되는 가중치 값들을 포함하고, 상기 가중치 값들 각각은 1 비트보다 큰 비트 수를 갖고,
    상기 처리 요소들 각각은,
    상기 가중치 값들의 최하위 비트들에 기초하여 제1 타겟 결과를 선택하고, 상기 가중치 값들의 상기 최하위 비트들 및 최상위 비트들 사이의 비트들에 기초하여 제2 타겟 결과를 선택하고, 상기 가중치 값들의 상기 최상위 비트들에 기초하여 제3 타겟 결과를 선택하는 심층 신경망 가속기.
  20. 제19 항에 있어서,
    상기 제2 타겟 결과를 비트-쉬프트하고, 상기 비트-쉬프트된 제2 타겟 결과를 상기 제1 타겟 결과에 가산하여 중간 누적 결과를 생성하고, 상기 제3 타겟 결과를 비트-쉬프트하여, 상기 중간 누적 결과에 상기 비트-쉬프트된 제3 타겟 결과를 감산하는 심층 신경망 가속기.
KR1020190146454A 2018-11-20 2019-11-15 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기 KR102451519B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/689,199 US20200160161A1 (en) 2018-11-20 2019-11-20 Deep neural network accelerator including lookup table based bit-serial processing elements

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20180143617 2018-11-20
KR1020180143617 2018-11-20

Publications (2)

Publication Number Publication Date
KR20200059153A true KR20200059153A (ko) 2020-05-28
KR102451519B1 KR102451519B1 (ko) 2022-10-07

Family

ID=70920099

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190146454A KR102451519B1 (ko) 2018-11-20 2019-11-15 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기

Country Status (1)

Country Link
KR (1) KR102451519B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102437329B1 (ko) * 2022-07-06 2022-08-30 주식회사 스퀴즈비츠 행렬곱 연산 장치 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016186823A1 (en) * 2015-05-21 2016-11-24 Google Inc. Batch processing in a neural network processor
KR20170099848A (ko) * 2014-12-19 2017-09-01 인텔 코포레이션 컨볼루션 연산을 수행하기 위한 저장 디바이스 및 방법
WO2017201627A1 (en) * 2016-05-26 2017-11-30 The Governing Council Of The University Of Toronto Accelerator for deep neural networks
KR20180050928A (ko) * 2016-11-07 2018-05-16 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170099848A (ko) * 2014-12-19 2017-09-01 인텔 코포레이션 컨볼루션 연산을 수행하기 위한 저장 디바이스 및 방법
WO2016186823A1 (en) * 2015-05-21 2016-11-24 Google Inc. Batch processing in a neural network processor
WO2017201627A1 (en) * 2016-05-26 2017-11-30 The Governing Council Of The University Of Toronto Accelerator for deep neural networks
KR20180050928A (ko) * 2016-11-07 2018-05-16 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102437329B1 (ko) * 2022-07-06 2022-08-30 주식회사 스퀴즈비츠 행렬곱 연산 장치 및 방법

Also Published As

Publication number Publication date
KR102451519B1 (ko) 2022-10-07

Similar Documents

Publication Publication Date Title
US10867239B2 (en) Digital architecture supporting analog co-processor
CN111758106B (zh) 用于大规模并行神经推理计算元件的方法和系统
KR102557589B1 (ko) 가속화된 수학 엔진
EP3590077B1 (en) Neural network processing with model pinning
CN110383237B (zh) 可重新配置的矩阵乘法器系统和方法
KR102292349B1 (ko) 처리 장치 및 처리 방법
KR100336266B1 (ko) 신경 프로세서, 포화 유니트, 계산 유니트 및 가산기 회로
WO2020057161A1 (zh) 一种用于卷积神经网络加速器的拆分累加器
CN107704916A (zh) 一种基于fpga实现rnn神经网络的硬件加速器及方法
CN107729989A (zh) 一种用于执行人工神经网络正向运算的装置及方法
US20200160161A1 (en) Deep neural network accelerator including lookup table based bit-serial processing elements
CN115039067A (zh) 包括具有高效预规格化和扩展动态范围的熔合乘法累加的脉动阵列
US9372665B2 (en) Method and apparatus for multiplying binary operands
Chen et al. A matrix-multiply unit for posits in reconfigurable logic leveraging (open) CAPI
CN110851779A (zh) 用于稀疏矩阵运算的脉动阵列架构
EP3841461B1 (en) Digital circuit with compressed carry
KR102451519B1 (ko) 룩업 테이블 기반의 비트-시리얼 처리 요소를 포함하는 심층 신경망 가속기
Chalamalasetti et al. MORA-an architecture and programming model for a resource efficient coarse grained reconfigurable processor
CN108255463B (zh) 一种数字逻辑运算方法、电路和fpga芯片
US11941407B2 (en) Pipeline architecture for bitwise multiplier-accumulator (MAC)
KR20230121151A (ko) 디지털 곱셈기 회로망의 수치 정밀도
US11610095B2 (en) Systems and methods for energy-efficient data processing
EP4345600A1 (en) Multiplication hardware block with adaptive fidelity control system
CN112632464A (zh) 用于处理数据的处理装置
Preston et al. Numerical Operations

Legal Events

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