KR20220018199A - 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법 - Google Patents

희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20220018199A
KR20220018199A KR1020200098417A KR20200098417A KR20220018199A KR 20220018199 A KR20220018199 A KR 20220018199A KR 1020200098417 A KR1020200098417 A KR 1020200098417A KR 20200098417 A KR20200098417 A KR 20200098417A KR 20220018199 A KR20220018199 A KR 20220018199A
Authority
KR
South Korea
Prior art keywords
data
value
floating
sparsity
point
Prior art date
Application number
KR1020200098417A
Other languages
English (en)
Other versions
KR102477533B1 (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 KR1020200098417A priority Critical patent/KR102477533B1/ko
Priority to US17/073,839 priority patent/US20220044090A1/en
Publication of KR20220018199A publication Critical patent/KR20220018199A/ko
Application granted granted Critical
Publication of KR102477533B1 publication Critical patent/KR102477533B1/ko

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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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/02Comparing digital values
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Nonlinear Science (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명의 실시 예에 따른 연산 장치는, 제1 데이터의 제1 부호 비트 및 제1 지수 비트들, 그리고 제2 데이터의 제2 부호 비트 및 제2 지수 비트들을 기반으로 희소성 데이터를 생성하도록 구성된 제1 연산 코어, 및 희소성 데이터를 기반으로, 제1 데이터 및 제2 데이터의 부동 소수점 연산의 결과 값을 출력 데이터로서 출력하거나, 또는 부동 소수점 연산을 생략하고 미리 정해진 값을 출력 데이터로서 출력하도록 구성된 제2 연산 코어를 포함한다.

Description

희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법{COMPUTING DEVICE USING SPARSITY DATA AND OPERATING METHOD THEREOF}
본 발명은 연산 장치 및 그것의 동작 방법에 관한 것으로, 좀 더 상세하게는 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법에 관한 것이다.
최근, 이미지 인식을 위한 기술로써 심층 신경망(DNN; Deep Neural Network) 기법 중 하나인 컨볼루션 신경망(CNN; Convolution Neural Network)이 활발하게 연구되고 있다. 컨볼루션 신경망 기반의 연산 장치는 사물 인식이나 필기체 인식 등과 같은 다양한 객체 인지 분야에서 뛰어난 성능을 보일 뿐만 아니라, 객체의 동작을 정확하게 인식할 수 있고, 생성적 적대 신경망(GAN; Generative Adversarial Network)에서의 정밀한 페이크 이미지를 생성하는데 사용될 수 있다.
그러나, 심층 신경망 기반의 연산 장치는 정확한 연산 결과를 얻을 수 있는 대신, 추론 및 학습을 위해 많은 연산들을 필요로 한다. 처리해야 될 연산들이 증가함에 따라, 심층 신경망 기반의 연산 장치는 연산에 소요되는 시간이 증가하고, 처리 속도가 지연되며, 전력 소모가 증가하는 문제가 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 간략화된 부동 소수점 연산을 기반으로 생성된 희소성 데이터를 이용하여 불필요한 연산들을 생략하는 연산 장치 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 연산 장치는, 제1 데이터의 제1 부호 비트 및 제1 지수 비트들, 그리고 제2 데이터의 제2 부호 비트 및 제2 지수 비트들을 기반으로 희소성 데이터를 생성하도록 구성된 제1 연산 코어, 및 상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 부동 소수점 연산의 결과 값을 출력 데이터로서 출력하거나, 또는 상기 부동 소수점 연산을 생략하고 미리 정해진 값을 상기 출력 데이터로서 출력하도록 구성된 제2 연산 코어를 포함한다.
예시적인 실시 예에서, 상기 제1 데이터는 심층 신경망의 입력 계층 또는 상기 심층 신경망의 적어도 하나의 은닉 계층에 포함된다.
예시적인 실시 예에서, 상기 부동 소수점 연산은 상기 제1 데이터의 상기 제1 부호 비트, 상기 제1 지수 비트들, 및 제1 가수 비트들, 그리고 상기 제2 데이터의 상기 제2 부호 비트, 상기 제2 지수 비트들, 및 상기 제2 가수 비트들을 기반으로 수행된다.
예시적인 실시 예에서, 상기 연산 장치는 상기 제1 데이터를 저장하도록 구성된 제1 메모리 장치, 상기 제2 데이터를 저장하도록 구성된 제2 메모리 장치, 및 상기 출력 데이터를 저장하도록 구성된 제3 메모리 장치를 더 포함한다.
예시적인 실시 예에서, 상기 제1 연산 코어는 상기 제1 부호 비트 및 상기 제2 부호 비트를 기반으로 적어도 하나의 부호 값을 계산하고, 상기 제1 지수 비트들 및 상기 제2 지수 비트들을 기반으로 적어도 하나의 지수 값을 계산하고, 상기 적어도 하나의 부호 값 및 상기 적어도 하나의 지수 값을 기반으로 적어도 하나의 부분 합을 계산하고, 상기 적어도 하나의 부분 합을 누적한 값이 임계 값을 초과하면, 제1 값을 갖는 상기 희소성 데이터를 생성하고, 그리고 상기 적어도 하나의 부분 합을 누적한 상기 값이 상기 임계 값 이하이면, 제2 값을 갖는 희소성 데이터를 생성하도록 더 구성된다.
예시적인 실시 예에서, 상기 제1 연산 코어는 상기 제1 부호 비트 및 상기 제2 부호 비트의 배타적 논리합 연산을 기반으로 부호 연산 신호를 생성하도록 구성된 논리 게이트, 상기 제1 지수 비트들 및 상기 제2 지수 비트들의 덧셈을 기반으로 지수 연산 신호를 생성하도록 구성된 제1 고정 소수점 가산기, 상기 부호 연산 신호 및 상기 지수 연산 신호를 기반으로 부분 연산 신호를 생성하도록 구성된 데이터 선형 인코더, 적어도 하나의 이전의 부분 연산 신호에 대응하는 이전의 누적 연산 신호 및 상기 부분 연산 신호를 기반으로, 통합 연산 신호 또는 누적 연산 신호를 생성하도록 구성된 제2 고정 소수점 가산기, 상기 이전의 누적 연산 신호를 상기 제2 고정 소수점 가산기에 제공하고, 상기 누적 연산 신호를 저장하도록 구성된 레지스터, 및 상기 통합 연산 신호에 대응하는 값이 임계 값을 초과하면 제1 값을 갖는 상기 희소성 데이터를 생성하고, 상기 통합 연산 신호에 대응하는 상기 값이 상기 임계 값 이하이면 제2 값을 갖는 상기 희소성 데이터를 생성하도록 구성된 희소성 데이터 생성기를 포함한다.
예시적인 실시 예에서, 상기 제2 연산 코어는 상기 희소성 데이터가 제1 값인지 또는 제2 값인지를 판별하고, 상기 부동 소수점 연산의 수행 여부를 제어하고, 그리고 상기 희소성 데이터가 상기 제2 값으로 판별되면 상기 미리 결정된 값을 갖는 상기 출력 데이터를 생성하도록 구성된 출력-제로 스키핑 모듈, 및 상기 출력-제로 스키핑 모듈의 제어에 따라 상기 부동 소수점 연산을 수행하고, 그리고 상기 부동 소수점 연산의 상기 결과 값을 상기 출력 데이터로서 생성하도록 구성된 FPMAC(Floating Point Multiply-Accumulate) 유닛을 포함한다.
예시적인 실시 예에서, 상기 제2 연산 코어는 상기 제1 지수 비트들의 값 또는 상기 제2 지수 비트들의 값이 임계 값 이하이면, 상기 미리 정해진 값을 갖는 상기 출력 데이터를 생성하도록 구성된 입력-제로 스키핑 모듈을 더 포함한다.
예시적인 실시 예에서, 상기 제1 데이터는 IEEE(Institute of Electrical and Electronic Engineers) 754 표준에 따른 16비트 부동 소수점, 32비트 부동 소수점, 또는 64비트 부동 소수점으로 표현되는 입력 데이터이고, 상기 제2 데이터는 상기 IEEE 754 표준에 따른 상기 16비트 부동 소수점, 상기 32비트 부동 소수점, 또는 상기 64비트 부동 소수점으로 표현되는 가중치 데이터이다.
본 발명의 실시 예에 따른 연산 장치는, 제1 데이터 및 제2 데이터를 기반으로 희소성 데이터를 생성하도록 구성된 제1 연산 코어, 및 상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 부동 소수점 연산의 결과 값 및 미리 정해진 값 중 하나를 상기 출력 데이터로서 출력하도록 구성된 제2 연산 코어를 포함한다.
예시적인 실시 예에서, 상기 희소성 데이터는 상기 제1 데이터의 부호 및 지수, 그리고 상기 제2 데이터의 부호 및 지수를 기반으로 생성되고, 그리고 상기 부동 소수점 연산은 상기 제1 데이터의 상기 부호, 상기 지수, 및 가수, 그리고 상기 제2 데이터의 상기 부호, 상기 지수, 및 가수를 기반으로 수행된다.
예시적인 실시 예에서, 상기 제2 연산 코어는 상기 희소성 데이터가 제1 값인지 또는 제2 값인지를 판별하고, 상기 희소성 데이터가 상기 제1 값으로 판별되면, 상기 부동 소수점 연산의 결과 값을 출력 데이터로서 출력하고, 그리고 상기 희소성 데이터가 상기 제2 값으로 판별되면, 상기 부동 소수점 연산을 생략하고 미리 정해진 값을 상기 출력 데이터로서 출력하도록 더 구성된다.
예시적인 실시 예에서, 상기 연산 장치는 상기 제1 데이터를 저장하도록 구성된 제1 메모리 장치, 상기 제2 데이터를 저장하도록 구성된 제2 메모리 장치, 및 상기 출력 데이터를 저장하도록 구성된 제3 메모리 장치를 더 포함한다.
본 발명의 실시 예에 따른 연산 장치의 동작 방법은, 제1 부호 비트, 제1 지수 비트들, 및 제1 가수 비트들을 포함하는 제1 데이터, 그리고 제2 부호 비트, 제2 지수 비트들, 및 제2 가수 비트들을 포함하는 제2 데이터를 수신하는 단계, 상기 제1 부호 비트, 상기 제1 지수 비트들, 상기 제2 부호 비트, 및 상기 제2 지수 비트들을 기반으로 희소성 데이터를 생성하는 단계, 및 상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 부동 소수점 연산의 결과 값을 출력 데이터로서 생성하거나, 또는 상기 부동 소수점 연산을 생략하고 미리 정해진 값을 상기 출력 데이터로서 생성하는 단계를 포함한다.
예시적인 실시 예에서, 상기 희소성 데이터를 생성하는 단계는 상기 부동 소수점 연산이 순전파(forward propagation)로 판별되면, 상기 제1 부호 비트, 상기 제1 지수 비트들, 상기 제2 부호 비트, 및 상기 제2 지수 비트들을 기반으로 상기 희소성 데이터를 생성하는 단계를 포함한다.
예시적인 실시 예에서, 상기 희소성 데이터를 생성하는 단계는 상기 제1 부호 비트 및 상기 제2 부호 비트의 배타적 논리합 연산, 및 상기 제1 지수 비트들 및 상기 제2 지수 비트들의 덧셈을 수행하는 단계, 상기 배타적 논리합 연산 및 상기 덧셈을 기반으로 선형 인코딩을 수행하여 부분 연산 값을 획득하는 단계, 상기 부분 연산 값 및 적어도 하나의 이전의 부분 연산 값을 기반으로 누적 연산을 수행하여 통합 연산 값을 획득하는 단계, 및 상기 통합 연산 값과 임계 값의 비교를 기반으로 상기 희소성 데이터를 생성하는 단계를 포함한다.
예시적인 실시 예에서, 상기 통합 연산 값과 상기 임계 값의 상기 비교를 기반으로 상기 희소성 데이터를 생성하는 단계는 상기 통합 연산 값이 상기 임계 값을 초과하면, 제1 값을 갖는 상기 희소성 데이터를 생성하는 단계, 및 상기 통합 연산 값이 상기 임계 값 이하이면, 제2 값을 갖는 상기 희소성 데이터를 생성하는 단계를 포함한다.
예시적인 실시 예에서, 상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 상기 부동 소수점 연산의 상기 결과 값을 상기 출력 데이터로서 생성하거나, 또는 상기 부동 소수점 연산을 생략하고 상기 미리 정해진 값을 상기 출력 데이터로서 생성하는 단계는 상기 희소성 데이터가 상기 제1 값인지 또는 상기 제2 값인지를 판별하는 단계, 및 상기 희소성 데이터가 상기 제1 값으로 판별되면, 상기 제1 데이터 및 상기 제2 데이터의 상기 부동 소수점 연산을 수행하고, 상기 부동 소수점 연산의 상기 결과 값을 상기 출력 데이터로서 생성하는 단계를 포함한다.
예시적인 실시 예에서, 상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 상기 부동 소수점 연산의 상기 결과 값을 상기 출력 데이터로서 생성하거나, 또는 상기 부동 소수점 연산을 생략하고 상기 미리 정해진 값을 상기 출력 데이터로서 생성하는 단계는 상기 희소성 데이터가 상기 제1 값인지 또는 상기 제2 값인지를 판별하는 단계, 및 상기 희소성 데이터가 상기 제2 값으로 판별되면, 상기 미리 정해진 값을 상기 출력 데이터로서 생성하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 간략화된 부동 소수점 연산을 기반으로 생성된 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법이 제공된다.
또한, 본 발명의 실시 예에 따르면, 희소성 데이터를 이용하여 불필요한 연산들이 생략됨으로써, 연산 속도가 증가하고, 전력 소모가 감소된 연산 장치 및 그것의 동작 방법이 제공된다.
도 1은 연산 장치를 예시적으로 보여주는 블록도이다.
도 2는 도 1의 부동 소수점 연산을 예시적으로 설명하는 도면이다.
도 3은 본 발명의 실시 예에 따른 연산 장치를 예시적으로 보여주는 블록도이다.
도 4a는 도 3의 제1 연산 코어의 연산 과정을 예시적으로 설명하는 도면이다.
도 4b는 도 3의 제2 연산 코어의 연산 과정을 예시적으로 설명하는 도면이다.
도 5는 도 3의 제1 연산 코어를 예시적으로 구체화한 블록도이다.
도 6은 본 발명의 다른 실시 예에 따른 연산 장치를 예시적으로 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 심층 신경망 연산을 예시적으로 설명하는 도면이다.
도 8은 본 발명의 실시 예에 따른 연산 장치의 동작 방법을 보여주는 순서도이다.
도 9는 도 8의 희소성 데이터를 계산하는 단계를 예시적으로 구체화한 순서도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다. 이하에서, 설명의 편의를 위하여, 유사한 구성 요소들은 동일하거나 또는 유사한 참조 번호를 사용하여 표현된다.
이하의 도면들 또는 상세한 설명에서의 모듈들은 도면에 도시되거나 또는 상세한 설명에 기재된 구성 요소 이외에 다른 것들과 연결될 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 직접적 또는 비직접적일 수 있다. 모듈들 또는 구성 요소들 사이의 연결은 각각 통신에 의한 연결이거나 또는 물리적인 접속일 수 있다.
도 1은 연산 장치(10)를 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 연산 장치(10)는 제1 메모리 장치(11), 제2 메모리 장치(12), 연산 코어(13), 및 제3 메모리 장치(14)를 포함할 수 있다. 연산 장치(10)는 심층 신경망(DNN; Deep Neural Network) 기반의 연산 장치일 수 있다. 예를 들어, 연산 장치(10)는 부동 소수점(floating point)으로 표현되는 입력 데이터(ID) 및 가중치 데이터(WD)를 기반으로 컨볼루션(Convoultion) 연산을 수행하여 획득된 값을 갖는 출력 데이터(OD)를 생성하는 장치일 수 있다. 부동 소수점은 소수점의 위치를 고정하지 않고 컴퓨터에서 실수(real number)를 근사치의 값으로 표현하는 방법을 의미한다.
제1 메모리 장치(11)는 적어도 하나의 입력 데이터(ID)를 저장할 수 있다. 입력 데이터(ID)는 캡처된 이미지에 포함된 픽셀 값일 수 있거나, 또는 녹화된 비디오에 포함된 픽셀 값일 수 있다. 적어도 하나의 입력 데이터(ID) 각각은 부동 소수점의 형태를 가질 수 있다. 입력 데이터(ID)는 부호 비트(SB, sign bit), 지수 비트들(EB, exponent bits), 및 가수 비트들(FB, fraction bits)를 포함할 수 있다. 부호 비트(SB), 지수 비트들(EB), 및 가수 비트들(FB)에 대한 상세한 설명은 도 2와 함께 후술될 것이다.
제2 메모리 장치(12)는 적어도 하나의 가중치 데이터(WD)를 저장할 수 있다. 가중치 데이터(WD)는 입력 데이터(ID)에서 추출할 특징에 대응하는 데이터일 수 있다. 가중치 데이터(WD)는 가중치 파라미터로 불릴 수 있고, 일련의 가중치 데이터(WD)의 집합은 필터(filter) 또는 커널(kernel)로 불릴 수 있다. 적어도 하나의 가중치 데이터(WD) 각각은 부동 소수점으로 표현되는 수치 값에 대응할 수 있다. 가중치 데이터(WD)는 부호 비트(SB), 지수 비트들(EB), 및 가수 비트들(FB)를 포함할 수 있다.
연산 코어(13)는 제1 메모리 장치(11)로부터 적어도 하나의 입력 데이터(ID)를 수신할 수 있다. 연산 코어(13)는 제2 메모리 장치(12)로부터 적어도 하나의 가중치 데이터(WD)를 수신할 수 있다. 연산 코어(13)는 적어도 하나의 입력 데이터(ID) 및 적어도 하나의 가중치 데이터(WD)를 기반으로 심층 신경망 연산(예를 들어, 컨볼루션 연산)을 수행할 수 있다. 연산 코어(13)는 심층 신경망 연산을 기반으로 획득된 값을 갖는 출력 데이터(OD)를 제3 메모리 장치(14)로 출력할 수 있다.
예시적인 실시 예에서, 연산 코어(13)는 FPMAC(Floating Point Multiply-Accumulate) 유닛을 포함할 수 있다. FPMAC 유닛은 부동 소수점 방식으로 표현된 적어도 하나의 입력 데이터(ID) 및 적어도 하나의 가중치 데이터(WD)를 기반으로 곱셈 및 누적 연산을 수행하는 유닛일 수 있다. FPMAC 유닛은 입력 데이터(ID) 및 가중치 데이터(WD) 각각의 부호, 지수, 및 가수에 대한 연산들을 모두 수행하므로, 연산 속도가 느리고, 전력 소모가 클 수 있다.
제3 메모리 장치(14)는 연산 코어(13)로부터 적어도 하나의 출력 데이터(OD)를 수신하고 저장할 수 있다. 출력 데이터(OD)는 특성 맵(feature map)의 적어도 일부를 나타내는 데이터일 수 있다. 적어도 하나의 출력 데이터(OD)는 적어도 하나의 입력 데이터(ID) 및 적어도 하나의 가중치 데이터(WD)의 컨볼루션 연산으로 생성된 값을 가질 수 있다. 출력 데이터(OD)는 부호 비트(SB), 지수 비트들(EB), 및 가수 비트들(FB)를 포함할 수 있다.
입력 데이터(ID) 및 가중치 데이터(WD)의 컨볼루션 연산을 수행하는 연산 장치(10)는 종래의 일반적인 연산 장치(예를 들어, 심층 신경망 연산이 아닌 단순 비교 연산을 수행하는 연산 장치)보다 이미지 처리의 인식도 및 정확도가 높을 수 있다. 그러나, 연산 장치(10)는 추론 및 학습을 위해 많은 연산들을 수행하여야 하므로, 연산에 소요되는 시간이 길고, 이미지 처리의 속도가 지연되며, 전력 소모가 증가하는 문제가 있다. 이러한 문제들이 해결된 본 발명의 실시 예에 따른 연산 장치는 도 3과 함께 후술될 것이다.
도 2는 도 1의 부동 소수점 연산을 예시적으로 설명하는 도면이다. 도 2를 참조하면, 부동 소수점 방식으로 표현되는 데이터가 예시적으로 도시된다. 데이터는 도 1의 입력 데이터(ID), 가중치 데이터(WD), 또는 출력 데이터(OD)에 대응할 수 있다. 부동 소수점 방식에서 데이터는 다음의 수학식 1과 같이 표현될 수 있다.
Figure pat00001
수학식 1은 부동 소수점 방식으로 표현되는 데이터를 설명하는 수식이다. Data는 부동 소수점 방식으로 표현될 데이터를 의미한다. Sign은 부호가 양수이면 '0'을 출력하고, 부호가 음수이면 '1'을 출력하는 함수이다. Exponent는 2진수 체계로 정규화한 값의 지수부를 추출하는 함수이다. Fraction은 2진수 체계로 정규화한 값에서 가수부를 추출하는 함수이다. 수학식 1에서, Sign(Data)는 데이터의 부호 비트(SB)에 대응할 수 있다. Exponent(Data)는 데이터의 지수 비트들(EB)에 대응할 수 있다. Fraction(Data)는 데이터의 가수 비트들(FB)에 대응할 수 있다.
좀 더 상세하게는, 데이터는 부호 비트(SB), 지수 비트들(EB), 및 가수 비트들(FB)을 포함할 수 있다. 부호 비트(SB)는 데이터의 부호가 양수이면 '0'을 나타내고, 데이터의 부호가 음수이면 '1'을 나타낼 수 있다. 지수 비트들(EB)은 데이터의 지수 부분에 대응하는 비트들일 수 있다. 가수 비트들(FB)은 데이터의 가수 부분에 대응하는 비트들일 수 있다.
예를 들어, IEEE(Institute of Electrical and Electronic Engineers) 754 표준에 따른 16비트 부동 소수점 방식으로 표현되는 데이터를 가정할 때, 10진수 체계의 실수 13.5(10)는 2진수 체계에서 1.1011(2)*23으로 정규화될 수 있다. 이 경우, 부호는 양수이므로, 부호 비트(SB)는 '0'을 가리킬 수 있다. 지수가 '3'이며 16비트 부동 소수점 방식에서 지수 바이어스 값은 '15'이므로, 지수 비트들(EB)은 지수 및 지수 바이어스 값의 합(18)을 2진수로 표현한 '10010'을 가리킬 수 있다. 가수 부분은 '1011'이므로, 가수 비트들(FB)은 유효한 가수 부분 이후의 비트들을 '0'들로 채운 '1011000000'을 가리킬 수 있다.
그러나, 본 발명의 범위는 이에 제한되지 않으며, 본 발명의 실시 예에 따른 연산 장치(10)는 IEEE 표준의 부동 소수점 연산뿐만 아니라, 부호, 지수, 및 가수의 조합으로 표현되는 모든 부동 소수점 연산에 적용될 수 있다.
도 2를 참조하면, 도면의 간략화 및 설명의 편의를 위하여, 데이터는 16비트 부동 소수점으로 표현되었으나, 본 발명의 범위는 이에 제한되지 않는다. 예를 들어, 데이터는 n비트 부동 소수점으로 표현될 수 있다. 이 때, n은 임의의 자연수이다.
예를 들어, 데이터가 16비트 부동 소수점으로 표현되는 경우, 데이터의 부호 비트(SB)는 1개의 비트로 구성될 수 있고, 데이터의 지수 비트들(EB)은 5개의 비트들로 구성될 수 있으며, 데이터의 가수 비트들(FB)은 10개의 비트들로 구성될 수 있다.
예를 들어, 데이터가 32비트 부동 소수점으로 표현되는 경우, 데이터의 부호 비트(SB)는 1개의 비트로 구성될 수 있고, 데이터의 지수 비트들(EB)은 8개의 비트들로 구성될 수 있으며, 데이터의 가수 비트들(FB)은 23개의 비트들로 구성될 수 있다.
예를 들어, 데이터가 64비트 부동 소수점으로 표현되는 경우, 데이터의 부호 비트(SB)는 1개의 비트로 구성될 수 있고, 데이터의 지수 비트들(EB)은 11개의 비트들로 구성될 수 있으며, 데이터의 가수 비트들(FB)은 52개의 비트들로 구성될 수 있다.
데이터에서 지수 비트들(EB)을 구성하는 비트들의 수가 증가할수록, 큰 단위의 숫자 및 작은 단위의 숫자를 표현할 수 있다. 데이터에서 가수 비트들(FB)을 구성하는 비트들의 수가 증가할수록, 근사값을 실제값에 더욱 가깝게 표현할 수 있다. 한편, 지수 비트들(EB)을 구성하는 비트들의 수 및 가수 비트들(FB)을 구성하는 비트들의 수가 증가할수록, 데이터의 크기(예를 들어, 비트 또는 용량)가 증가하고, 필요한 연산량이 증가할 수 있다.
도 3은 본 발명의 실시 예에 따른 연산 장치(100)를 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 연산 장치(100)는 제1 메모리 장치(110), 제2 메모리 장치(120), 제1 연산 코어(130a), 제2 연산 코어(130b), 및 제3 메모리 장치(140)를 포함할 수 있다. 제1 메모리 장치(110), 제2 메모리 장치(120), 및 제3 메모리 장치(140)는 도 1의 제1 메모리 장치(11), 제2 메모리 장치(12), 및 제3 메모리 장치(14)와 유사하므로, 이에 대한 상세한 설명은 생략된다.
제1 연산 코어(130a)는 제1 메모리 장치(110)로부터 적어도 하나의 입력 데이터(ID)를 수신할 수 있다. 제1 연산 코어(130a)는 제2 메모리 장치(120)로부터 적어도 하나의 가중치 데이터(WD)를 수신할 수 있다. 제1 연산 코어(130a)는 희소성 데이터 생성기(131a)를 포함할 수 있다. 희소성 데이터 생성기(131a)는 입력 데이터(ID)의 부호 비트(SB) 및 지수 비트들(EB)과 가중치 데이터(WD)의 부호 비트(SB) 및 지수 비트들(EB)을 기반으로 희소성 데이터(SD)를 생성할 수 있다. 제1 연산 코어(130a)는 희소성 데이터(SD)를 제2 연산 코어(130b)로 출력할 수 있다. 희소성 데이터(SD)를 이용한 연산은, 가수를 생략하고 부호 및 지수만을 이용하여 수행되므로, 일반적인 부동 소수점 연산보다 빠를 수 있다.
희소성 데이터(SD)는 본 연산(예를 들어, 제2 연산 코어(130b)에서의 부동 소수점 연산) 수행 전에, 대응하는 출력 데이터(OD)가 심층 신경망 연산에 필요한지 여부를 미리 예측한 데이터일 수 있다. 예를 들어, 음수의 값을 갖는 출력 데이터(OD) 및 '0'의 값을 갖는 출력 데이터(OD)는 특성 맵에서 불필요한 데이터일 수 있다. 희소성 데이터(SD)는 가수 비트들(FB)의 연산을 생략하고, 부호 비트(SB) 및 지수 비트들(EB)만을 이용하여, 대응하는 출력 데이터(OD)가 양수의 값을 가질 것으로 예측되면 '1'로 표시되고, 대응하는 출력 데이터(OD)가 음수로 예측되거나 '0'으로 예측되면 '0'으로 표시된 비트 플래그(bit flag)일 수 있다. 이 때, 예측은 부동 소수점 체계의 부호, 지수, 및 가수 중에서 부호 및 지수만을 이용하여 연산하는 것을 의미할 수 있다.
예를 들어, 입력 데이터(ID) 및 가중치 데이터(WD)에 대한 희소성 데이터(SD)가 '0'인 경우, 입력 데이터(ID) 및 가중치 데이터(WD)의 컨볼루션 연산(예를 들어, 부호, 지수, 및 가수를 모두 이용한 부동 소수점 연산)이 생략되고, 미리 정해진 값(예를 들어, '0')을 갖는 출력 데이터(OD)가 생성될 수 있다. 반면에, 입력 데이터(ID) 및 가중치 데이터(WD)에 대한 희소성 데이터(SD)가 '1'인 경우, 입력 데이터(ID) 및 가중치 데이터(WD)의 컨볼루션 연산이 수행되고, 수행된 컨볼루션 연산의 값을 갖는 출력 데이터(OD)가 생성될 수 있다.
예시적인 실시 예에서, 제1 연산 코어(130a)는 출력 데이터(OD)를 예측한 값이 임계 값(threshold value) 이하이면 특정 값(예를 들어, '0')으로 판별할 수 있다. 임계 값은 특정 값(예를 들어, '0')으로 판별할 기준이 되는 미리 정해진 작은 값일 수 있다. 예를 들어, 제1 연산 코어(130a)는 입력 데이터(ID)의 지수 비트들(EB) 및 가중치 데이터(WD)의 지수 비트들(EB)을 기반으로 계산한 값이 임계 값보다 작으면, 대응하는 출력 데이터(OD)를 '0'으로 예측할 수 있다.
제2 연산 코어(130b)는 제1 메모리 장치(110)로부터 적어도 하나의 입력 데이터(ID)를 수신할 수 있다. 제2 연산 코어(130b)는 제2 메모리 장치(120)로부터 적어도 하나의 가중치 데이터(WD)를 수신할 수 있다. 제2 연산 코어(130b)는 제1 연산 코어(130a)로부터 희소성 데이터(SD)를 수신할 수 있다. 제2 연산 코어(130b)는 '0'으로 표시된 희소성 데이터(SD)에 대응하는 부동 소수점 연산을 생략하고, 미리 정해진 값(예를 들어, '0')을 갖는 출력 데이터(OD)를 생성할 수 있다. 제2 연산 코어(130b)는 '1'로 표시된 희소성 데이터(SD)에 대응하는 부동 소수점 연산을 수행하여 출력 데이터(OD)를 생성할 수 있다. 제2 연산 코어(130b)는 출력 데이터(OD)를 제3 메모리 장치(140)로 출력할 수 있다.
제2 연산 코어(130b)는 FPMAC 유닛 및 출력-제로 스키핑 모듈(Out-zero skipping module)을 포함할 수 있다. 출력-제로 스키핑 모듈은 희소성 데이터(SD)가 제1 값(예를 들어, '1')인지 또는 제2 값(예를 들어, '0')인지를 판별하고, 입력 데이터(ID) 및 가중치 데이터(WD)의 부동 소수점 연산이 FPMAC 유닛에서 수행될지 여부를 제어할 수 있다. 또한, 출력-제로 스키핑 모듈은, 희소성 데이터(SD)가 제2 값(예를 들어, '0')으로 판별되면, 미리 정해진 값(예를 들어, '0')을 갖는 출력 데이터(OD)를 생성할 수 있다.
FPMAC 유닛은 출력-제로 스키핑 모듈의 제어에 따라, 제1 값(예를 들어, '1')으로 판별된 희소성 데이터(SD)에 대응하는 부동 소수점 연산을 수행할 수 있다. FPMAC 유닛은 부동 소수점 연산을 기반으로 획득된 값을 갖는 출력 데이터(OD)를 생성할 수 있다.
예를 들어, 적어도 하나의 출력 데이터(OD)의 적어도 일부가 3x3 크기의 행렬을 이루고, 제1, 제3, 및 제5 출력 데이터(OD1, OD3, OD5)가 제1 연산 코어(130a)에 의해 양수로 예측되는 경우, 제2 연산 코어(130b)는 부동 소수점 연산을 수행하여 획득된 값들을 갖는 제1, 제3, 및 제5 출력 데이터(OD1, OD3, OD5)를 생성할 수 있다. 제2 연산 코어(130b)는 부동 소수점 연산을 수행하지 않고, 제1, 제3, 및 제5 출력 데이터(OD1, OD3, OD5) 이외의 다른 출력 데이터를 생성할 수 있다. 다른 출력 데이터는 미리 정해진 값(예를 들어, '0')을 가질 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 부동 소수점 형태의 데이터 중 가수를 제외한 부호 및 지수를 기반으로 희소성 데이터(SD)를 생성하고, 희소성 데이터(SD)를 기반으로 불필요한 컨볼루션 연산을 생략함으로써, 연산에 소요되는 시간이 단축되고, 이미지 처리의 속도가 향상되며, 전력 소모가 감소한 연산 장치(100)가 제공될 수 있다.
도 4a는 도 3의 제1 연산 코어(130a)의 연산 과정을 예시적으로 설명하는 도면이다. 도 3 및 도 4a를 참조하면, 제1 연산 코어(130a)에서 입력 데이터(ID) 및 가중치 데이터(WD)를 기반으로 희소성 데이터(SD)를 생성하는 과정이 설명된다. 제1 연산 코어(130a)는 입력 데이터(ID)의 부호 비트(SB) 및 지수 비트들(EB)과 가중치 데이터(WD)의 부호 비트(SB) 및 지수 비트들(EB)을 기반으로 희소성 데이터(SD)를 생성할 수 있다.
제1 메모리 장치(110)에 저장된 복수의 입력 데이터(ID)의 집합은 입력 데이터 행렬을 구성할 수 있다. 예를 들어, 입력 데이터 행렬은 이미지 파일에 대응할 수 있다. 본 발명의 이해를 돕기 위해, 입력 데이터 행렬은 4x4 크기를 갖고, 제1 내지 제16 입력 데이터(ID1~ID16)를 포함하는 것으로 도시된다. 다만, 본 발명의 범위는 이에 제한되지 않으며, 입력 데이터 행렬의 행 및 열 각각의 크기는 증가 또는 감소할 수 있다.
제2 메모리 장치(120)에 저장된 복수의 가중치 데이터(WD)의 집합은 가중치 데이터 행렬을 구성할 수 있다. 예를 들어, 가중치 데이터 행렬은 가중치 데이터의 집합, 필터, 또는 커널에 대응할 수 있다. 본 발명의 이해를 돕기 위해, 가중치 데이터 행렬은 2x2 크기를 갖고, 제1 내지 제4 가중치 데이터(WD1~WD4)를 포함하는 것으로 도시된다. 가중치 데이터 행렬의 크기는 입력 데이터 행렬의 크기보다 작을 수 있다. 다만, 본 발명의 범위는 이에 제한되지 않으며, 가중치 데이터 행렬의 행 및 열 각각의 크기는 증가 또는 감소할 수 있다.
예시적인 실시 예에서, 제1 연산 코어(130a)는 입력 데이터 행렬의 적어도 일부 및 가중치 데이터 행렬을 기반으로 희소성 데이터를 생성할 수 있다. 예를 들어, 제1 연산 코어(130a)는 입력 데이터 행렬의 입력 데이터(ID1, ID2, ID5, ID6) 및 가중치 데이터 행렬의 가중치 데이터(WD1, WD2, WD3, WD4)를 기반으로 제1 희소성 데이터(SD1)를 생성할 수 있다.
좀 더 상세하게는, 입력 데이터(ID1, ID2, ID5, ID6)의 부호 비트(SB) 및 지수 비트들(EB)과 가중치 데이터(WD1, WD2, WD3, WD4)의 부호 비트(SB) 및 지수 비트들(EB)을 기반으로 예측된 값이 임계 값을 초과하면, 제1 희소성 데이터(SD1)의 값은 제1 값(예를 들어, '1')으로 결정될 수 있다. 입력 데이터(ID1, ID2, ID5, ID6)의 부호 비트(SB) 및 지수 비트들(EB)과 가중치 데이터(WD1, WD2, WD3, WD4)의 부호 비트(SB) 및 지수 비트들(EB)을 기반으로 예측된 값이 임계 값 이하이면(예측된 값의 크기가 임계 값(TV)을 초과하지만 예측된 값이 음수인 경우도 포함), 제1 희소성 데이터(SD1)의 값은 제2 값(예를 들어, '0')으로 결정될 수 있다.
제2 내지 제9 희소성 데이터(SD2~SD9)는 제1 희소성 데이터(SD1)와 유사하게 생성될 수 있다. 예를 들어, 제1 연산 코어(130a)는 입력 데이터(ID2, ID3, ID6, ID7) 및 가중치 데이터(WD1, WD2, WD3, WD4)를 기반으로 제2 희소성 데이터(SD2)를 생성할 수 있다. 제1 연산 코어(130a)는 입력 데이터(ID3, ID4, ID7, ID8) 및 가중치 데이터(WD1, WD2, WD3, WD4)를 기반으로 제3 희소성 데이터(SD3)를 생성할 수 있다. 생성된 복수의 희소성 데이터(SD1~SD9)는 희소성 데이터 행렬을 구성할 수 있다.
도 4b는 도 3의 제2 연산 코어(130b)의 연산 과정을 예시적으로 설명하는 도면이다. 도 3 및 도 4b를 참조하면, 제2 연산 코어(130b)에서 입력 데이터(ID), 가중치 데이터(WD), 및 희소성 데이터(SD)를 기반으로 출력 데이터(OD)를 생성하는 과정이 설명된다. 제2 연산 코어(130b)는 입력 데이터(ID), 가중치 데이터(WD), 및 희소성 데이터(SD)를 기반으로 출력 데이터(OD)를 생성할 수 있다.
이 때, 출력 데이터(OD)가 제1 값(예를 들어, '1')을 갖는 희소성 데이터(SD)에 대응하는 경우, 제2 연산 코어(130b)는 입력 데이터(ID) 및 가중치 데이터(WD)의 부동 소수점 연산을 기반으로 획득된 값을 갖는 출력 데이터(OD)를 생성할 수 있다. 반면에, 출력 데이터(OD)가 제2 값(예를 들어, '0')을 갖는 희소성 데이터(SD)에 대응하는 경우, 제2 연산 코어(130b)는, 부동 소수점 연산 없이, 미리 정해진 값을 갖는 출력 데이터(OD)를 생성할 수 있다.
제1 메모리 장치(110)에 저장된 복수의 입력 데이터(ID)의 집합은 입력 데이터 행렬을 구성할 수 있다. 제2 메모리 장치(120)에 저장된 복수의 가중치 데이터(WD)의 집합은 가중치 데이터 행렬을 구성할 수 있다. 입력 데이터 행렬 및 가중치 데이터 행렬의 특징은 도 4a에서 설명된 것과 유사하므로, 이에 대한 상세한 설명은 생략된다.
제2 연산 코어(130b)에서 생성된 복수의 출력 데이터(OD)의 집합은 출력 데이터 행렬을 구성할 수 있다. 제3 메모리 장치(140)는 제2 연산 코어(130b)로부터 출력 데이터 행렬을 수신하고 저장할 수 있다. 예를 들어, 출력 데이터 행렬은 특성 맵에 대응할 수 있다.
출력 데이터 행렬의 크기는 입력 데이터 행렬의 크기 및 가중치 데이터 행렬의 크기를 기반으로 결정될 수 있다. 출력 데이터 행렬의 크기는 도 4a의 희소성 데이터 행렬의 크기와 같을 수 있다. 본 발명의 이해를 돕기 위해, 출력 데이터 행렬은 3x3 크기를 갖고, 제1 내지 제9 출력 데이터(OD1~OD9)를 포함하는 것으로 도시된다. 다만, 본 발명의 범위는 이에 제한되지 않으며, 출력 데이터 행렬의 행 및 열 각각의 크기는 증가 또는 감소할 수 있다.
예시적인 실시 예에서, 제2 연산 코어(130b)는 입력 데이터 행렬의 적어도 일부, 가중치 데이터 행렬, 및 대응하는 희소성 데이터를 기반으로 출력 데이터를 생성할 수 있다. 예를 들어, 제2 연산 코어(130b)는 입력 데이터 행렬의 입력 데이터(ID1, ID2, ID5, ID6), 가중치 데이터 행렬의 가중치 데이터(WD1, WD2, WD3, WD4), 및 제1 희소성 데이터(SD1)를 기반으로 제1 출력 데이터(OD1)를 생성할 수 있다.
좀 더 상세하게는, 제1 희소성 데이터(SD1)가 제1 값(예를 들어, '1')을 가지면, 제2 연산 코어(130b)는 입력 데이터(ID1, ID2, ID5, ID6) 및 가중치 데이터(WD1, WD2, WD3, WD4)의 부동 소수점 연산을 기반으로 획득된 값을 갖는 제1 출력 데이터(OD1)를 생성할 수 있다. 제1 출력 데이터(OD1)의 값은 ID1*WD1 + ID2*WD2 + ID5*WD3 + ID6*WD4의 연산을 통해 획득될 수 있다. 제1 희소성 데이터(SD1)가 제2 값(예를 들어, '0')을 가지면, 제2 연산 코어(130b)는, 부동 소수점 연산을 수행하지 않고, 미리 정해진 값(예를 들어, '0')을 갖는 제1 출력 데이터(OD1)를 생성할 수 있다. 제2 내지 제9 출력 데이터(OD2~OD9)는 제1 출력 데이터(OD1)와 유사하게 생성될 수 있다.
도 5는 도 3의 제1 연산 코어(130a)를 예시적으로 구체화한 블록도이다. 도 5를 참조하면, 부호 비트(SB) 및 지수 비트들(EB)을 기반으로 희소성 데이터(SD)를 생성하는 제1 연산 코어(130a)가 예시적으로 도시된다. 제1 연산 코어(130a)는 희소성 데이터 생성기(131a), XOR 논리 게이트(132a), 제1 고정 소수점 가산기(133a), 데이터 선형 인코더(134a), 제2 고정 소수점 가산기(135a), 및 레지스터(136a)를 포함할 수 있다.
XOR 논리 게이트(132a)는 입력 데이터(ID)의 부호 비트(SB) 및 가중치 데이터(WD)의 부호 비트(SB)를 수신할 수 있다. XOR 논리 게이트(132a)는 입력 데이터(ID)의 부호 비트(SB) 및 가중치 데이터(WD)의 부호 비트(SB)의 XOR 논리 연산을 기반으로 부호 연산 신호(SO)를 생성할 수 있다.
제1 고정 소수점 가산기(133a)는 입력 데이터(ID)의 지수 비트들(EB) 및 가중치 데이터(WD)의 지수 비트들(EB)을 수신할 수 있다. 제1 고정 소수점 가산기(133a)는 입력 데이터(ID)의 지수 비트들(EB) 및 가중치 데이터(WD)의 지수 비트들(EB)의 덧셈을 기반으로 지수 연산 신호(EO)를 생성할 수 있다.
데이터 선형 인코더(134a)는 XOR 논리 게이트(132a)로부터 부호 연산 신호(SO)를 수신할 수 있다. 데이터 선형 인코더(134a)는 제1 고정 소수점 가산기(133a)로부터 지수 연산 신호(EO)를 수신할 수 있다. 데이터 선형 인코더(134a)는 부호 연산 신호(SO) 및 지수 연산 신호(EO)를 기반으로 부분 연산 신호(PO)를 생성할 수 있다. 부분 연산 신호(PO)는 부호의 연산 값 및 지수의 연산 값을 선형적으로 인코딩한 값을 포함할 수 있다. 예시적인 실시 예에서, 데이터 선형 인코더(134a)는 원-핫 인코딩(one-hot encoding)을 수행하는 인코더일 수 있다.
제2 고정 소수점 가산기(135a)는 데이터 선형 인코더(134a)로부터 부분 연산 신호(PO)를 수신할 수 있다. 제2 고정 소수점 가산기(135a)는 적어도 하나의 이전의 부분 연산 신호(미도시)에 대응하는 이전의 누적 연산 신호(AOp)를 레지스터(136a)로부터 수신할 수 있다. 제2 고정 소수점 가산기(135a)는 레지스터(136a)로부터의 이전의 누적 연산 신호(AOp) 및 부분 연산 신호(PO)를 기반으로, 통합 연산 신호(IO) 또는 누적 연산 신호(AO)를 생성할 수 있다.
통합 연산 신호(IO)는 대응하는 입력 데이터들 모두 및 가중치 데이터들 모두에 대응하는 신호일 수 있다. 누적 연산 신호(AO)는 대응하는 입력 데이터들 일부 및 가중치 데이터들 일부에 대응하는 신호일 수 있다. 예를 들어, 도 4a에서의 제1 희소성 데이터(SD1)를 생성하는 경우, 통합 연산 신호(IO)는 입력 데이터들(ID1, ID2, ID5, ID6) 및 가중치 데이터들(WD1, WD2, WD3, WD4)을 기반으로 연산된 값에 대응할 수 있고, 누적 연산 신호(AO)는 입력 데이터들(ID1, ID2, ID5) 및 가중치 데이터들(WD1, WD2, WD3)을 기반으로 연산된 값에 대응할 수 있다.
레지스터(136a)는 제2 고정 소수점 가산기(135a)로 이전의 누적 연산 신호(AOp)를 출력할 수 있다. 레지스터(136a)는 제2 고정 소수점 가산기(135a)로부터 누적 연산 신호(AO)를 수신할 수 있다. 레지스터(136a)는 누적 연산 신호(AO)에 대응하는 값을 저장할 수 있다. 하나의 희소성 데이터(SD)에 대응하는 다음의 입력 데이터(ID) 및 다음의 가중치 데이터(WD)의 연산이 수행되기 전에, 레지스터(136a)는 누적 연산 신호(AO)를 이전의 누적 연산 신호(AOp)로 취급할 수 있다. 하나의 희소성 데이터(SD)에 대응하는 모든 입력 데이터(ID) 및 모든 가중치 데이터(WD)의 연산이 완료되면, 레지스터(136a)에 저장된 누적 연산 신호(AO)에 대응하는 값은 리셋될 수 있다.
희소성 데이터 생성기(131a)는 제2 고정 소수점 가산기(135a)로부터 통합 연산 신호(IO)를 수신할 수 있다. 희소성 데이터 생성기(131a)는 임계 값(TV)을 저장할 수 있다. 희소성 데이터 생성기(131a)는 통합 연산 신호(IO)에 대응하는 값이 임계 값(TV)을 초과하면, 제1 값(예를 들어, '1')을 갖는 희소성 데이터(SD)를 생성할 수 있다. 희소성 데이터 생성기(131a)는 통합 연산 신호(IO)에 대응하는 값이 임계 값(TV) 이하이면(통합 연산 신호(IO)에 대응하는 값의 크기가 임계 값(TV)을 초과하지만 통합 연산 신호(IO)에 대응하는 값이 음수인 경우도 포함), 제2 값(예를 들어, '0')을 갖는 희소성 데이터(SD)를 생성할 수 있다. 희소성 데이터 생성기(131a)는 희소성 데이터(SD)를 제2 연산 코어(130b)로 출력할 수 있다.
제1 연산 코어(130a)가 하나의 희소성 데이터(SD)에 대응하는 복수의 입력 데이터(ID) 및 복수의 가중치 데이터(WD)를 기반으로 연산을 수행하는 특징은 다음의 수학식 2를 참조하여 더욱 상세하게 설명된다.
Figure pat00002
수학식 2는 제1 연산 코어(130a)가 희소성 데이터(SD)를 연산하는 과정을 설명하는 수식이다. WD는 가중치 데이터이다. ID는 입력 데이터이다. 시그마 기호(∑)는 하나의 희소성 데이터(SD)에 대응하는 복수의 입력 데이터 및 복수의 가중치 데이터를 합하는 것을 의미한다. 부호 부분은 XOR 논리 연산을 기반으로 연산될 수 있다. 지수 부분은 합산 연산을 기반으로 연산될 수 있다.
좀 더 상세하게는, 부호 부분의 XOR 논리 연산은 XOR 논리 게이트(132a)에 의해 수행될 수 있다. 지수 부분의 합산 연산은 제1 고정 소수점 가산기(133a)에 의해 수행될 수 있다. 연산된 부호 및 연산된 지수를 기반으로 2n 또는 -2n의 형태로 변환하는 연산은 데이터 선형 인코더(134a)에 의해 수행될 수 있다. 시그마 기호(∑)에 대응하는 합산 연산은 제2 고정 소수점 가산기(135a)에 의해 수행될 수 있다. 레지스터(136a)는 제2 고정 소수점 가산기(135a)의 덧셈을 보조하는 버퍼로서 기능할 수 있다.
예시적인 실시 예에서, 제1 연산 코어(130a)는 제1 부호 비트 및 제2 부호 비트를 기반으로 적어도 하나의 부호 값을 계산하고, 제1 지수 비트들 및 제2 지수 비트들을 기반으로 적어도 하나의 지수 값을 계산하고, 적어도 하나의 부호 값 및 적어도 하나의 지수 값을 기반으로 적어도 하나의 부분 합을 계산하고, 적어도 하나의 부분 합을 누적한 값이 임계 값(TV)을 초과하면, 제1 값을 갖는 희소성 데이터(SD)를 생성하고, 그리고 적어도 하나의 부분 합을 누적한 값이 상기 임계 값(TV) 이하이면, 제2 값을 갖는 희소성 데이터(SD)를 생성하도록 구성될 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 연산 장치(200)를 예시적으로 보여주는 블록도이다. 도 6을 참조하면, 연산 장치(200)는 제1 메모리 장치(110), 제2 메모리 장치(120), 제1 연산 코어(130a), 제2 연산 코어(130b), 및 제3 메모리 장치(140)를 포함할 수 있다. 제1 메모리 장치(110), 제2 메모리 장치(120), 제1 연산 코어(130a), 및 제3 메모리 장치(140)는 도 3의 제1 메모리 장치(110), 제2 메모리 장치(120), 제1 연산 코어(130a), 및 제3 메모리 장치(140)와 유사하므로, 이에 대한 상세한 설명은 생략된다.
제2 연산 코어(130b)는 FPMAC 유닛, 입력-제로 스키핑 모듈(In-zero skipping module), 및 출력-제로 스키핑 모듈(Out-zero skipping module)을 포함할 수 있다. 즉, 제2 연산 코어(130b)는, 도 3의 제2 연산 코어(130b)와 달리, 입력-제로 스키핑 모듈을 더 포함할 수 있다.
입력-제로 스키핑 모듈은 입력 데이터(ID) 또는 가중치 데이터(WD)가 특정 값(예를 들어, '0')인지를 판별하고, 부동 소수점 연산이 FPMAC 유닛에서 수행될지 여부를 제어할 수 있다. 입력-제로 스키핑 모듈은 입력 데이터(ID) 또는 가중치 데이터(WD)가 특정 값(예를 들어, '0')으로 판별되면, 미리 정해진 값(예를 들어, '0')을 갖는 출력 데이터(OD)를 생성할 수 있다.
출력-제로 스키핑 모듈은 출력 데이터(OD)를 예측하는 희소성 데이터(SD)를 기반으로 부동 소수점 연산을 생략할지를 판별하는 반면에, 입력-제로 스키핑 모듈은 입력 데이터(ID) 또는 가중치 데이터(WD) 자체를 기반으로 부동 소수점 연산을 생략할지를 판별하므로, 입력-제로 스키핑 모듈은 출력-제로 스키핑 모듈과 차이가 있다.
예시적인 실시 예에서, 입력-제로 스키핑 모듈은 입력 데이터(ID)의 지수 비트들(EB) 또는 가중치 데이터(WD)의 지수 비트들(EB)을 기반으로 출력 데이터(OD)를 생성할 수 있다. 예를 들어, 입력-제로 스키핑 모듈은 입력 데이터(ID)의 지수 비트들(EB)의 값 또는 가중치 데이터(WD)의 지수 비트들(EB)의 값이 임계 값 이하이면, 미리 정해진 값(예를 들어, '0')을 갖는 출력 데이터(OD)를 생성할 수 있다. 이 때, 출력 데이터(OD)에 대응하는 부동 소수점 연산이 생략될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 출력-제로 스키핑 모듈에서 희소성 데이터(SD)를 기반으로 불필요한 컨볼루션 연산을 생략할 뿐만 아니라, 입력-제로 스키핑 모듈에서 입력 데이터(ID) 및 가중치 데이터(WD)가 특정 값인지 판별하여 불필요한 컨볼루션 연산을 생략함으로써, 연산에 소요되는 시간이 단축되고, 이미지 처리의 속도가 향상되며, 전력 소모가 감소한 연산 장치(200)가 제공될 수 있다.
도 7은 본 발명의 실시 예에 따른 심층 신경망 연산을 예시적으로 설명하는 도면이다. 도 7을 참조하면, 심층 신경망 연산이 예시적으로 설명된다. 심층 신경망 연산에서, 추론 및 학습을 수행하기 위해 순전파(forward propagation) 및 역전파(back propagation)가 수행될 수 있다. 순전파는 입력 계층에서 출력 계층을 향하여 데이터를 처리하는 것을 의미할 수 있다. 역전파는 출력 계층에서 입력 계층을 향하여 데이터를 처리하는 것을 의미할 수 있다.
심층 신경망 연산에서 데이터들의 처리는 입력 계층, 은닉 계층, 및 출력 계층을 참조하여 설명될 수 있다. 입력 계층은 복수의 입력 데이터(ID1~ID4)를 포함할 수 있다. 은닉 계층은 복수의 은닉 데이터(HD1~HD3)를 포함할 수 있다. 출력 계층은 복수의 출력 데이터(OD1, OD2)를 포함할 수 있다. 계층들 사이의 연산(예를 들어, 입력 계층 및 은닉 계층의 사이의 연산, 또는 은닉 계층 및 출력 계층의 사이의 연산)은 이전 계층의 데이터들 및 가중치 데이터(WD)의 컨볼루션 연산을 기반으로 수행될 수 있다.
입력 계층, 은닉 계층, 및 출력 계층 각각에 포함된 데이터의 수는 예시적인 것이며, 데이터의 수는 증가 또는 감소할 수 있다. 또한, 수행되는 심층 신경망 연산에 따라, 입력 계층 및 출력 계층 사이의 은닉 계층의 수는 증가할 수 있거나, 또는 은닉 계층이 생략될 수 있다.
예시적인 실시 예에서, 계층들 사이의 컨볼루션 연산들 중에서 연산 결과가 특정 값(예를 들어, '0')으로 예측되는 연산은 생략될 수 있다. 예를 들어, 도 3의 연산 장치(100)는 입력 계층의 복수의 입력 데이터(ID1~ID4) 및 대응하는 가중치 데이터(WD)를 기반으로 희소성 데이터(SD)를 생성하고, 희소성 데이터(SD)를 기반으로 불필요한 연산(예를 들어, 연산 결과가 음수 또는 '0')을 생략하고, 은닉 데이터(HD1~HD3)를 생성할 수 있다.
다른 예를 들면, 도 3의 연산 장치(100)는 은닉 계층의 은닉 데이터(HD1~HD3) 및 대응하는 가중치 데이터(WD)를 기반으로 희소성 데이터(SD)를 생성하고, 희소성 데이터(SD)를 기반으로 불필요한 연산을 생략하고, 출력 데이터(OD1, OD2)를 생성할 수 있다.
예시적인 실시 예에서, 연산 장치는 순전파의 연산에서 희소성 데이터를 생성하여 불필요한 연산을 생략할 수 있다. 보다 상세하게는, 순전파 연산 이후에 역전파 연산이 수행될 수 있다. 역전파 연산에서의 희소성 데이터는 대응하는 순전파 연산에서의 희소성 데이터와 동일할 수 있다. 역전파 연산은 순전파 연산을 참조할 수 있으나, 순전파 연산은 시간적으로 나중에 수행되는 역전파 연산을 참조할 수 없으므로, 순전파 연산에서 희소성 데이터를 생성하는 실익이 클 수 있다. 예를 들어, 도 3의 연산 장치(100)는 순전파 연산에서 희소성 데이터(SD)를 생성하여 불필요한 연산을 생략할 수 있고, 연산 장치(100)는 역전파 연산에서 순전파 연산의 희소성 데이터(SD)를 참조하여 불필요한 연산을 생략할 수 있다.
도 8은 본 발명의 실시 예에 따른 연산 장치의 동작 방법을 보여주는 순서도이다. 도 8을 참조하면, 연산 장치의 동작 방법이 예시적으로 설명된다. S110 단계에서, 연산 장치는 입력 데이터 및 가중치 데이터의 부동 소수점 연산이 순전파인지 판별할 수 있다. 부동 소수점 연산이 순전파로 판별되면, 연산 장치는 S120 단계를 수행할 수 있다. 부동 소수점 연산이 순전파가 아닌 것으로 판별되면(예를 들어, 부동 소수점 연산이 역전파로 판별되면), 연산 장치는 S130 단계를 수행할 수 있다.
S120 단계에서, 연산 장치는 희소성 데이터를 생성할 수 있다. 좀 더 상세하게는, 연산 장치는 입력 데이터의 부호 비트 및 지수 비트들과 가중치 데이터의 부호 비트 및 지수 비트들을 기반으로 희소성 데이터를 생성할 수 있다. 이 때, 입력 데이터 및 가중치 데이터의 부동 소수점 연산 결과가 양수이면, 희소성 데이터는 제1 값을 가질 수 있다. 입력 데이터 및 가중치 데이터의 부동 소수점 연산 결과가 음수이거나 특정 값(예를 들어, '0')이면, 희소성 데이터는 제2 값을 가질 수 있다.
S130 단계에서, 연산 장치는 희소성 데이터를 기반으로 입력 데이터 및 가중치 데이터의 부동 소수점 연산을 수행할 수 있다. 좀 더 상세하게는, 희소성 데이터가 제1 값으로 판별되면, 연산 장치는 입력 데이터 및 가중치 데이터의 부동 소수점 연산을 기반으로 획득된 값을 갖는 출력 데이터를 생성할 수 있다. 희소성 데이터가 제2 값으로 판별되면, 연산 장치는 미리 정해진 값을 갖는 출력 데이터를 생성할 수 있다. S130 단계는, S110 단계에서 순전파가 아닌 것으로 판별되거나 또는 S120 단계를 수행한 다음에 수행될 수 있다. S110 단계에서 순전파가 아닌 것으로 판별된 경우(예를 들어, 역전파로 판별된 경우), 연산 장치는 역전파에 대응하는 순전파의 희소성 데이터를 참조할 수 있다.
도 9는 도 8의 희소성 데이터를 계산하는 단계를 예시적으로 구체화한 순서도이다. 도 9를 참조하면, 도 8의 순서도에 따른 희소성 데이터를 계산하는 단계(S120)를 예시적으로 구체화한 순서도가 도시된다. S120 단계는 S121 단계 내지 S125 단계를 포함할 수 있다.
S121 단계에서, 연산 장치는 입력 데이터의 부호 비트 및 지수 비트들과 가중치 데이터의 부호 비트 및 지수 비트들을 수신할 수 있다. 예시적인 실시 예에서, 연산 장치는 내장된 메모리 장치로부터 입력 데이터의 부호 비트 및 지수 비트들을 로드할 수 있고, 연산 장치는 내장된 다른 메모리 장치로부터 가중치 데이터의 부호 비트 및 지수 비트들을 로드할 수 있다.
S122 단계에서, 연산 장치는 입력 데이터의 부호 비트 및 가중치 데이터의 부호 비트의 배타적 논리합 연산을 수행할 수 있다. 연산 장치는 입력 데이터의 지수 비트들 및 가중치 데이터의 지수 비트들의 덧셈을 수행할 수 있다.
S123 단계에서, 연산 장치는 S122 단계에서 수행된 배타적 논리합 연산 및 S122 단계에서 수행된 덧셈을 기반으로 선형 인코딩을 수행하여 부분 연산 값을 획득할 수 있다.
S124 단계에서, 연산 장치는 S123 단계에서 획득된 부분 연산 값 및 적어도 하나의 이전의 부분 연산 값을 기반으로 누적 연산을 수행하여 통합 연산 값을 획득할 수 있다. 예를 들어, 도 4a 및 도 9를 함께 참조하면, S123 단계에서 획득된 부분 연산 값은 ID6*WD4에 대응할 수 있고, 적어도 하나의 이전의 부분 연산 값은 ID1*WD1 + ID2*WD2 + ID5*WD3에 대응할 수 있으며, 통합 연산 값은 ID1*WD1 + ID2*WD2 + ID5*WD3 + ID6*WD4에 대응할 수 있다.
S125 단계에서, 연산 장치는 S124 단계에서 획득된 통합 연산 값과 임계 값의 비교를 기반으로 희소성 데이터를 생성할 수 있다. 이 때, 통합 연산 값이 임계 값을 초과하면, 희소성 데이터는 제1 값을 가질 수 있다. 통합 연산 값이 임계 값 이하이면(통합 연산 값의 크기가 임계 값을 초과하지만, 통합 연산 값이 음수인 경우도 포함), 희소성 데이터는 제2 값을 가질 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100, 200: 연산 장치
110, 210: 제1 메모리 장치
120, 220: 제2 메모리 장치
130a, 230a: 제1 연산 코어
130b, 230b: 제2 연산 코어
140, 240: 제3 메모리 장치

Claims (19)

  1. 제1 데이터의 제1 부호 비트 및 제1 지수 비트들, 그리고 제2 데이터의 제2 부호 비트 및 제2 지수 비트들을 기반으로 희소성 데이터를 생성하도록 구성된 제1 연산 코어; 및
    상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 부동 소수점 연산의 결과 값을 출력 데이터로서 출력하거나, 또는 상기 부동 소수점 연산을 생략하고 미리 정해진 값을 상기 출력 데이터로서 출력하도록 구성된 제2 연산 코어를 포함하는 연산 장치.
  2. 제 1 항에 있어서,
    상기 제1 데이터는 심층 신경망의 입력 계층 또는 상기 심층 신경망의 적어도 하나의 은닉 계층에 포함되는 연산 장치.
  3. 제 1 항에 있어서,
    상기 부동 소수점 연산은 상기 제1 데이터의 상기 제1 부호 비트, 상기 제1 지수 비트들, 및 제1 가수 비트들, 그리고 상기 제2 데이터의 상기 제2 부호 비트, 상기 제2 지수 비트들, 및 상기 제2 가수 비트들을 기반으로 수행되는 연산 장치.
  4. 제 1 항에 있어서,
    상기 제1 데이터를 저장하도록 구성된 제1 메모리 장치;
    상기 제2 데이터를 저장하도록 구성된 제2 메모리 장치; 및
    상기 출력 데이터를 저장하도록 구성된 제3 메모리 장치를 더 포함하는 연산 장치.
  5. 제 1 항에 있어서,
    상기 제1 연산 코어는:
    상기 제1 부호 비트 및 상기 제2 부호 비트를 기반으로 적어도 하나의 부호 값을 계산하고,
    상기 제1 지수 비트들 및 상기 제2 지수 비트들을 기반으로 적어도 하나의 지수 값을 계산하고,
    상기 적어도 하나의 부호 값 및 상기 적어도 하나의 지수 값을 기반으로 적어도 하나의 부분 합을 계산하고,
    상기 적어도 하나의 부분 합을 누적한 값이 임계 값을 초과하면, 제1 값을 갖는 상기 희소성 데이터를 생성하고, 그리고
    상기 적어도 하나의 부분 합을 누적한 상기 값이 상기 임계 값 이하이면, 제2 값을 갖는 희소성 데이터를 생성하도록 더 구성된 연산 장치.
  6. 제 1 항에 있어서,
    상기 제1 연산 코어는:
    상기 제1 부호 비트 및 상기 제2 부호 비트의 배타적 논리합 연산을 기반으로 부호 연산 신호를 생성하도록 구성된 논리 게이트;
    상기 제1 지수 비트들 및 상기 제2 지수 비트들의 덧셈을 기반으로 지수 연산 신호를 생성하도록 구성된 제1 고정 소수점 가산기;
    상기 부호 연산 신호 및 상기 지수 연산 신호를 기반으로 부분 연산 신호를 생성하도록 구성된 데이터 선형 인코더;
    적어도 하나의 이전의 부분 연산 신호에 대응하는 이전의 누적 연산 신호 및 상기 부분 연산 신호를 기반으로, 통합 연산 신호 또는 누적 연산 신호를 생성하도록 구성된 제2 고정 소수점 가산기;
    상기 이전의 누적 연산 신호를 상기 제2 고정 소수점 가산기에 제공하고, 상기 누적 연산 신호를 저장하도록 구성된 레지스터; 및
    상기 통합 연산 신호에 대응하는 값이 임계 값을 초과하면 제1 값을 갖는 상기 희소성 데이터를 생성하고, 상기 통합 연산 신호에 대응하는 상기 값이 상기 임계 값 이하이면 제2 값을 갖는 상기 희소성 데이터를 생성하도록 구성된 희소성 데이터 생성기를 포함하는 연산 장치.
  7. 제 1 항에 있어서,
    상기 제2 연산 코어는:
    상기 희소성 데이터가 제1 값인지 또는 제2 값인지를 판별하고, 상기 부동 소수점 연산의 수행 여부를 제어하고, 그리고 상기 희소성 데이터가 상기 제2 값으로 판별되면 상기 미리 결정된 값을 갖는 상기 출력 데이터를 생성하도록 구성된 출력-제로 스키핑 모듈; 및
    상기 출력-제로 스키핑 모듈의 제어에 따라 상기 부동 소수점 연산을 수행하고, 그리고 상기 부동 소수점 연산의 상기 결과 값을 상기 출력 데이터로서 생성하도록 구성된 FPMAC(Floating Point Multiply-Accumulate) 유닛을 포함하는 연산 장치.
  8. 제 7 항에 있어서,
    상기 제2 연산 코어는:
    상기 제1 지수 비트들의 값 또는 상기 제2 지수 비트들의 값이 임계 값 이하이면, 상기 미리 정해진 값을 갖는 상기 출력 데이터를 생성하도록 구성된 입력-제로 스키핑 모듈을 더 포함하는 연산 장치.
  9. 제 1 항에 있어서,
    상기 제1 데이터는 IEEE(Institute of Electrical and Electronic Engineers) 754 표준에 따른 16비트 부동 소수점, 32비트 부동 소수점, 또는 64비트 부동 소수점으로 표현되는 입력 데이터이고,
    상기 제2 데이터는 상기 IEEE 754 표준에 따른 상기 16비트 부동 소수점, 상기 32비트 부동 소수점, 또는 상기 64비트 부동 소수점으로 표현되는 가중치 데이터인 연산 장치.
  10. 제1 데이터 및 제2 데이터를 기반으로 희소성 데이터를 생성하도록 구성된 제1 연산 코어; 및
    상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 부동 소수점 연산의 결과 값 및 미리 정해진 값 중 하나를 상기 출력 데이터로서 출력하도록 구성된 제2 연산 코어를 포함하는 연산 장치.
  11. 제 10 항에 있어서,
    상기 희소성 데이터는 상기 제1 데이터의 부호 및 지수, 그리고 상기 제2 데이터의 부호 및 지수를 기반으로 생성되고, 그리고
    상기 부동 소수점 연산은 상기 제1 데이터의 상기 부호, 상기 지수, 및 가수, 그리고 상기 제2 데이터의 상기 부호, 상기 지수, 및 가수를 기반으로 수행되는 연산 장치.
  12. 제 10 항에 있어서,
    상기 제2 연산 코어는:
    상기 희소성 데이터가 제1 값인지 또는 제2 값인지를 판별하고,
    상기 희소성 데이터가 상기 제1 값으로 판별되면, 상기 부동 소수점 연산의 결과 값을 출력 데이터로서 출력하고, 그리고
    상기 희소성 데이터가 상기 제2 값으로 판별되면, 상기 부동 소수점 연산을 생략하고 미리 정해진 값을 상기 출력 데이터로서 출력하도록 더 구성된 연산 장치.
  13. 제 10 항에 있어서,
    상기 제1 데이터를 저장하도록 구성된 제1 메모리 장치;
    상기 제2 데이터를 저장하도록 구성된 제2 메모리 장치; 및
    상기 출력 데이터를 저장하도록 구성된 제3 메모리 장치를 더 포함하는 연산 장치.
  14. 연산 장치의 동작 방법에 있어서:
    제1 부호 비트, 제1 지수 비트들, 및 제1 가수 비트들을 포함하는 제1 데이터, 그리고 제2 부호 비트, 제2 지수 비트들, 및 제2 가수 비트들을 포함하는 제2 데이터를 수신하는 단계;
    상기 제1 부호 비트, 상기 제1 지수 비트들, 상기 제2 부호 비트, 및 상기 제2 지수 비트들을 기반으로 희소성 데이터를 생성하는 단계; 및
    상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 부동 소수점 연산의 결과 값을 출력 데이터로서 생성하거나, 또는 상기 부동 소수점 연산을 생략하고 미리 정해진 값을 상기 출력 데이터로서 생성하는 단계를 포함하는 연산 방법.
  15. 제 14 항에 있어서,
    상기 희소성 데이터를 생성하는 단계는:
    상기 부동 소수점 연산이 순전파(forward propagation)로 판별되면, 상기 제1 부호 비트, 상기 제1 지수 비트들, 상기 제2 부호 비트, 및 상기 제2 지수 비트들을 기반으로 상기 희소성 데이터를 생성하는 단계를 포함하는 연산 방법.
  16. 제 14 항에 있어서,
    상기 희소성 데이터를 생성하는 단계는:
    상기 제1 부호 비트 및 상기 제2 부호 비트의 배타적 논리합 연산, 및 상기 제1 지수 비트들 및 상기 제2 지수 비트들의 덧셈을 수행하는 단계;
    상기 배타적 논리합 연산 및 상기 덧셈을 기반으로 선형 인코딩을 수행하여 부분 연산 값을 획득하는 단계;
    상기 부분 연산 값 및 적어도 하나의 이전의 부분 연산 값을 기반으로 누적 연산을 수행하여 통합 연산 값을 획득하는 단계; 및
    상기 통합 연산 값과 임계 값의 비교를 기반으로 상기 희소성 데이터를 생성하는 단계를 포함하는 연산 방법.
  17. 제 16 항에 있어서,
    상기 통합 연산 값과 상기 임계 값의 상기 비교를 기반으로 상기 희소성 데이터를 생성하는 단계는:
    상기 통합 연산 값이 상기 임계 값을 초과하면, 제1 값을 갖는 상기 희소성 데이터를 생성하는 단계; 및
    상기 통합 연산 값이 상기 임계 값 이하이면, 제2 값을 갖는 상기 희소성 데이터를 생성하는 단계를 포함하는 연산 방법.
  18. 제 17 항에 있어서,
    상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 상기 부동 소수점 연산의 상기 결과 값을 상기 출력 데이터로서 생성하거나, 또는 상기 부동 소수점 연산을 생략하고 상기 미리 정해진 값을 상기 출력 데이터로서 생성하는 단계는:
    상기 희소성 데이터가 상기 제1 값인지 또는 상기 제2 값인지를 판별하는 단계; 및
    상기 희소성 데이터가 상기 제1 값으로 판별되면, 상기 제1 데이터 및 상기 제2 데이터의 상기 부동 소수점 연산을 수행하고, 상기 부동 소수점 연산의 상기 결과 값을 상기 출력 데이터로서 생성하는 단계를 포함하는 연산 방법.
  19. 제 17 항에 있어서,
    상기 희소성 데이터를 기반으로, 상기 제1 데이터 및 상기 제2 데이터의 상기 부동 소수점 연산의 상기 결과 값을 상기 출력 데이터로서 생성하거나, 또는 상기 부동 소수점 연산을 생략하고 상기 미리 정해진 값을 상기 출력 데이터로서 생성하는 단계는:
    상기 희소성 데이터가 상기 제1 값인지 또는 상기 제2 값인지를 판별하는 단계; 및
    상기 희소성 데이터가 상기 제2 값으로 판별되면, 상기 미리 정해진 값을 상기 출력 데이터로서 생성하는 단계를 포함하는 연산 방법.
KR1020200098417A 2020-08-06 2020-08-06 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법 KR102477533B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200098417A KR102477533B1 (ko) 2020-08-06 2020-08-06 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법
US17/073,839 US20220044090A1 (en) 2020-08-06 2020-10-19 Computing device using sparsity data and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200098417A KR102477533B1 (ko) 2020-08-06 2020-08-06 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20220018199A true KR20220018199A (ko) 2022-02-15
KR102477533B1 KR102477533B1 (ko) 2022-12-15

Family

ID=80113862

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200098417A KR102477533B1 (ko) 2020-08-06 2020-08-06 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US20220044090A1 (ko)
KR (1) KR102477533B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11681922B2 (en) * 2019-11-26 2023-06-20 Numenta, Inc. Performing inference and training using sparse neural network
US20240062833A1 (en) * 2022-08-19 2024-02-22 Macronix International Co., Ltd. Page buffer counting for in-memory search

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180067426A (ko) * 2016-12-12 2018-06-20 톰슨 라이센싱 희소 행렬을 재구성하기 위한 신호 수송 데이터를 인코딩하는 방법 및 장치
KR101929847B1 (ko) * 2018-05-15 2018-12-17 주식회사 퓨쳐디자인시스템 희소행렬 연산 방법과 장치
KR20200052201A (ko) * 2018-11-05 2020-05-14 삼성전자주식회사 뉴럴 네트워크 활성화 맵의 손실 압축

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5901076A (en) * 1997-04-16 1999-05-04 Advanced Micro Designs, Inc. Ripple carry shifter in a floating point arithmetic unit of a microprocessor
CN107330515A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行人工神经网络正向运算的装置和方法
JP7490572B2 (ja) * 2018-05-08 2024-05-27 三星電子株式会社 ニューラル・ネットワーク処理要素
US11403097B2 (en) * 2019-06-26 2022-08-02 Intel Corporation Systems and methods to skip inconsequential matrix operations
US11650819B2 (en) * 2019-12-13 2023-05-16 Intel Corporation Apparatuses, methods, and systems for instructions to multiply floating-point values of about one
US11714998B2 (en) * 2020-05-05 2023-08-01 Intel Corporation Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180067426A (ko) * 2016-12-12 2018-06-20 톰슨 라이센싱 희소 행렬을 재구성하기 위한 신호 수송 데이터를 인코딩하는 방법 및 장치
KR101929847B1 (ko) * 2018-05-15 2018-12-17 주식회사 퓨쳐디자인시스템 희소행렬 연산 방법과 장치
KR20200052201A (ko) * 2018-11-05 2020-05-14 삼성전자주식회사 뉴럴 네트워크 활성화 맵의 손실 압축

Also Published As

Publication number Publication date
KR102477533B1 (ko) 2022-12-15
US20220044090A1 (en) 2022-02-10

Similar Documents

Publication Publication Date Title
Valueva et al. Application of the residue number system to reduce hardware costs of the convolutional neural network implementation
CN109478144B (zh) 一种数据处理装置和方法
US10929746B2 (en) Low-power hardware acceleration method and system for convolution neural network computation
CN110447010B (zh) 在硬件中执行矩阵乘法
CN112740171A (zh) 乘法和累加电路
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
CN108363559B (zh) 神经网络的乘法处理方法、设备和计算机可读介质
CN111783974A (zh) 模型构建及图像处理方法、装置、硬件平台及存储介质
CN114341892A (zh) 具有用于高效参数更新的降低精度参数分量的机器学习硬件
KR102477533B1 (ko) 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법
CN111767986A (zh) 一种基于神经网络的运算方法及装置
KR20190140841A (ko) 확률 적응적 자원 할당을 통한 신경망 하드웨어 가속
CN112119407B (zh) 由补偿指令使能的低精度深度神经网络
CN110826706B (zh) 用于神经网络的数据处理方法和装置
WO2022163861A1 (ja) ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム
TW202109281A (zh) 帶正負號多字乘法器
CN112130805A (zh) 包括浮点加法器的芯片、设备及浮点运算的控制方法
CN112085154A (zh) 用于神经网络的压缩和推断加速的非对称量化
CN112101511A (zh) 稀疏卷积神经网络
TW202312033A (zh) 雙指數邊界框浮點處理器
US20200110635A1 (en) Data processing apparatus and method
JP7506276B2 (ja) 半導体ハードウェアにおいてニューラルネットワークを処理するための実装および方法
EP4325397A1 (en) Information processing apparatus, information processing method, and computer-readable storage medium
US20230161558A1 (en) Method and apparatus with quantization scheme implementation of artificial neural network
WO2022230906A1 (ja) ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム

Legal Events

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