KR20190041388A - 전자 장치 및 그 제어 방법 - Google Patents

전자 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR20190041388A
KR20190041388A KR1020180022960A KR20180022960A KR20190041388A KR 20190041388 A KR20190041388 A KR 20190041388A KR 1020180022960 A KR1020180022960 A KR 1020180022960A KR 20180022960 A KR20180022960 A KR 20180022960A KR 20190041388 A KR20190041388 A KR 20190041388A
Authority
KR
South Korea
Prior art keywords
elements
arithmetic
topic
input
row
Prior art date
Application number
KR1020180022960A
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 CN201880057625.8A priority Critical patent/CN111095304A/zh
Priority to PCT/KR2018/006509 priority patent/WO2019074185A1/en
Priority to EP18866233.2A priority patent/EP3659073A4/en
Priority to US16/031,565 priority patent/US20190114542A1/en
Publication of KR20190041388A publication Critical patent/KR20190041388A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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/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/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
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

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

Abstract

딥러닝(Deep Learning)을 수행하는 전자 장치가 개시된다. 본 전자 장치는 대상 데이터 및 커널 데이터가 저장된 스토리지 및 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하는 프로세서를 포함하고, 프로세서는 복수의 연산 소자 각각에 대상 데이터에 포함된 복수의 제1 엘리먼트 중 제1 논제로(non-zero) 엘리먼트를 입력하며, 커널 데이터에 포함된 복수의 제2 엘리먼트 중 제2 논제로 엘리먼트를 복수의 연산 소자 중 제1 로우에 포함된 복수의 제1 연산 소자 각각에 순차적으로 입력하고, 복수의 제1 연산 소자 각각은 입력된 제1 논제로 엘리먼트의 뎁스(depth) 정보 및 입력된 제2 논제로 엘리먼트의 뎁스 정보에 기초하여, 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다.

Description

전자 장치 및 그 제어 방법 {ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF }
본 개시는 전자 장치 및 그 제어 방법에 대한 것으로, 더욱 상세하게는 컨볼루션(convolution) 연산을 수행하는 전자 장치 및 그 제어 방법에 대한 것이다.
또한, 본 개시는 기계 학습 알고리즘을 활용하여 인간 두뇌의 인지, 판단 등의 기능을 모사하는 인공 지능(Artificial Intelligence, AI) 시스템 및 그 응용에 관한 것이다.
근래에는 인간 수준의 지능을 구현하는 인공 지능 시스템이 다양한 분야에서 이용되고 있다. 인공 지능 시스템은 기존의 룰(rule) 기반 스마트 시스템과 달리 기계가 스스로 학습하고 판단하며 똑똑해지는 시스템이다. 인공 지능 시스템은 사용할수록 인식률이 향상되고 사용자 취향을 보다 정확하게 이해할 수 있게 되어, 기존 룰 기반 스마트 시스템은 점차 딥러닝 기반 인공 지능 시스템으로 대체되고 있다.
인공 지능 기술은 기계학습(예로, 딥러닝) 및 기계학습을 활용한 요소 기술들로 구성된다.
기계학습은 입력 데이터들의 특징을 스스로 분류/학습하는 알고리즘 기술이며, 요소기술은 딥러닝 등의 기계학습 알고리즘을 활용하여 인간 두뇌의 인지, 판단 등의 기능을 모사하는 기술로서, 언어적 이해, 시각적 이해, 추론/예측, 지식 표현, 동작 제어 등의 기술 분야로 구성된다.
인공 지능 기술이 응용되는 다양한 분야는 다음과 같다. 언어적 이해는 인간의 언어/문자를 인식하고 응용/처리하는 기술로서, 자연어 처리, 기계 번역, 대화시스템, 질의 응답, 음성 인식/합성 등을 포함한다. 시각적 이해는 사물을 인간의 시각처럼 인식하여 처리하는 기술로서, 객체 인식, 객체 추적, 영상 검색, 사람 인식, 장면 이해, 공간 이해, 영상 개선 등을 포함한다. 추론 예측은 정보를 판단하여 논리적으로 추론하고 예측하는 기술로서, 지식/확률 기반 추론, 최적화 예측, 선호 기반 계획, 추천 등을 포함한다. 지식 표현은 인간의 경험정보를 지식데이터로 자동화 처리하는 기술로서, 지식 구축(데이터 생성/분류), 지식 관리(데이터 활용) 등을 포함한다. 동작 제어는 차량의 자율 주행, 로봇의 움직임을 제어하는 기술로서, 움직임 제어(항법, 충돌, 주행), 조작 제어(행동 제어) 등을 포함한다.
특히, 컨볼루션 신경망(Convolutional Neural Network, CNN)은 2차원 데이터 또는 3차원 데이터의 학습에 적합한 구조를 가지고 있으며, 역전달(backpropagation algorithm)을 통해 훈련이 가능하다. CNN은 영상 내 객체 분류, 객체 탐지 등 다양한 응용 분야에 폭넓게 활용되고 있다.
여기서, CNN은 대부분의 연산이 컨볼루션(convolution) 연산이며, 컨볼루션 연산은 대부분이 입력 데이터 간 곱셈 연산으로 이루어져 있다. 다만, 입력 데이터인 대상 데이터(ex : Image) 및 커널(kernel) 데이터는 다수의 0을 포함할 수 있고, 이 경우에도 곱셈 연산을 수행하는 것은 불필요하다.
예를 들어, 입력 데이터 간의 곱셈 연산 시 입력 데이터 중 적어도 하나가 0이면, 곱셈 결과는 0이다. 즉, 입력 데이터 중 적어도 하나가 0이면 곱셈 연산을 수행하지 않더라도 그 결과는 0임을 알 수 있다. 이 경우, 불필요한 곱셈 연산을 생략하여 연산 싸이클을 단축할 수 있으며, 이를 데이터 sparsity를 처리한다고 표현한다.
다만, 종래에는 복수의 연산 소자(Processing Element)가 1차원 어레이의 형태로 구현된 상태에서 데이터 sparsity를 처리하는 방법만이 개발된 상태이며, 복수의 연산 소자가 2차원 어레이의 형태로 구현된 상태에서 데이터 sparsity를 처리하는 방법은 개발되지 않은 상태이다.
본 개시는 상술한 필요성에 따른 것으로, 본 개시의 목적은 컨볼루션 연산 과정에서의 불필요한 연산을 생략하여 연산 속도를 향상시키기 위한 전자 장치 및 그 제어 방법을 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 개시의 일 실시 예에 따르면, 딥러닝(Deep Learning)을 수행하는 전자 장치는, 대상 데이터 및 커널 데이터가 저장된 스토리지 및 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하는 프로세서를 포함하고, 상기 프로세서는 상기 복수의 연산 소자 각각에 상기 대상 데이터에 포함된 복수의 제1 엘리먼트 중 제1 논제로(non-zero) 엘리먼트를 입력하며, 상기 커널 데이터에 포함된 복수의 제2 엘리먼트 중 제2 논제로 엘리먼트를 상기 복수의 연산 소자 중 제1 로우에 포함된 복수의 제1 연산 소자 각각에 순차적으로 입력하고, 상기 복수의 제1 연산 소자 각각은 입력된 제1 논제로 엘리먼트의 뎁스(depth) 정보 및 입력된 제2 논제로 엘리먼트의 뎁스 정보에 기초하여, 상기 입력된 제1 논제로 엘리먼트 및 상기 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다.
또한, 상기 복수의 연산 소자 각각은 복수의 레지스터 파일을 포함하며, 상기 프로세서는 상기 제1 논제로 엘리먼트의 로우(row) 정보 및 컬럼(column) 정보에 기초하여 상기 복수의 연산 소자 중 대응되는 연산 소자를 식별하고, 상기 제1 논제로 엘리먼트의 뎁스 정보에 기초하여 상기 식별된 연산 소자에 포함된 복수의 레지스터 파일 중 대응되는 레지스터 파일에 상기 제1 논제로 엘리먼트를 입력할 수 있다.
그리고, 상기 프로세서는 상기 제2 논제로 엘리먼트의 로우 정보, 컬럼 정보 및 뎁스 정보에 기초하여 상기 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
또한, 상기 프로세서는 상기 제2 논제로 엘리먼트 중 하나의 로우 및 하나의 컬럼에 포함된 제2 논제로 엘리먼트를 뎁스에 기초하여 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하고, 상기 하나의 로우 및 상기 하나의 컬럼에 포함된 제2 논제로 엘리먼트 전부가 상기 복수의 제1 연산 소자 각각에 입력되면, 상기 하나의 로우 및 상기 하나의 컬럼과는 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 입력할 수 있다.
그리고, 상기 프로세서는 상기 하나의 로우 및 상기 하나의 컬럼에 제2 논제로 엘리먼트가 없는 경우 0을 상기 복수의 제1 연산 소자 각각에 입력하며, 상기 0이 상기 복수의 제1 연산 소자 각각에 입력되면, 상기 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트의 개수에 기초하여 상기 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트 또는 0을 상기 복수의 제1 연산 소자 각각에 입력할 수 있다.
또한, 상기 프로세서는 상기 복수의 연산 소자 각각에 저장된 상기 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 상기 제1 논제로 엘리먼트가 없는 뎁스가 식별되면, 상기 제2 엘리먼트 중 상기 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 상기 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
그리고, 상기 프로세서는 복수의 예비 연산 소자를 더 포함하고, 상기 복수의 연산 소자 각각에 저장된 상기 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 상기 제1 논제로 엘리먼트가 기설정된 개수 이내인 뎁스가 식별되면, 상기 제2 엘리먼트 중 상기 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 상기 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하며, 상기 뎁스에 대응되는 제1 논제로 엘리먼트 및 상기 뎁스에 대응되는 제2 논제로 엘리먼트를 상기 복수의 예비 연산 소자로 입력하여 연산을 수행할 수 있다.
또한, 상기 프로세서는 상기 복수의 제1 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 상기 복수의 제1 연산 소자로 입력된 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자로부터 상기 복수의 연산 소자 중 제2 로우에 포함된 복수의 제2 연산 소자 각각으로 시프트하도록 상기 복수의 연산 소자를 제어하고, 상기 복수의 제2 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 상기 복수의 제2 연산 소자로 시프트된 제2 논제로 엘리먼트를 상기 복수의 제2 연산 소자로부터 상기 복수의 연산 소자 중 제3 로우에 포함된 복수의 제3 연산 소자 각각으로 시프트하도록 상기 복수의 연산 소자를 제어할 수 있다.
그리고, 상기 프로세서는 상기 복수의 연산 소자 각각에 입력된 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하는 경우, 상기 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 직전 연산 결과에 누적하여 상기 복수의 레지스터 파일 중 하나에 저장할 수 있다.
또한, 상기 프로세서는 상기 복수의 연산 소자 각각에 입력되는 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하지 않는 경우, 상기 복수의 연산 소자 각각의 상기 복수의 레지스터 파일 중 하나에 저장된 연산 결과를 인접한 연산 소자로 시프트하고, 상기 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 상기 시프트된 연산 결과에 누적하여 상기 복수의 레지스터 파일 중 하나에 저장할 수 있다.
한편, 본 개시의 일 실시 예에 따르면, 딥러닝(Deep Learning)을 수행하는 전자 장치의 제어 방법에 있어서, 상기 전자 장치는 대상 데이터 및 커널 데이터가 저장된 스토리지 및 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하는 프로세서를 포함하고, 상기 제어 방법은 상기 복수의 연산 소자 각각에 상기 대상 데이터에 포함된 복수의 제1 엘리먼트 중 제1 논제로(non-zero) 엘리먼트를 입력하는 단계, 상기 커널 데이터에 포함된 복수의 제2 엘리먼트 중 제2 논제로 엘리먼트를 상기 복수의 연산 소자 중 제1 로우에 포함된 복수의 제1 연산 소자 각각에 순차적으로 입력하는 단계 및 상기 복수의 제1 연산 소자 각각에서 입력된 제1 논제로 엘리먼트의 뎁스(depth) 정보 및 입력된 제2 논제로 엘리먼트의 뎁스 정보에 기초하여, 상기 입력된 제1 논제로 엘리먼트 및 상기 입력된 제2 논제로 엘리먼트 간 연산을 수행하는 단계를 포함할 수 있다.
또한, 상기 복수의 연산 소자 각각은 복수의 레지스터 파일을 포함하며, 상기 제1 논제로 엘리먼트를 입력하는 단계는 상기 제1 논제로 엘리먼트의 로우(row) 정보 및 컬럼(column) 정보에 기초하여 상기 복수의 연산 소자 중 대응되는 연산 소자를 식별하는 단계 및 상기 제1 논제로 엘리먼트의 뎁스 정보에 기초하여 상기 식별된 연산 소자에 포함된 복수의 레지스터 파일 중 대응되는 레지스터 파일에 상기 제1 논제로 엘리먼트를 입력하는 단계를 포함할 수 있다.
그리고, 상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는 상기 제2 논제로 엘리먼트의 로우 정보, 컬럼 정보 및 뎁스 정보에 기초하여 상기 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
또한, 상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는 상기 제2 논제로 엘리먼트 중 하나의 로우 및 하나의 컬럼에 포함된 제2 논제로 엘리먼트를 뎁스에 기초하여 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하는 단계 및 상기 하나의 로우 및 상기 하나의 컬럼에 포함된 제2 논제로 엘리먼트 전부가 상기 복수의 제1 연산 소자 각각에 입력되면, 상기 하나의 로우 및 상기 하나의 컬럼과는 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 입력하는 단계를 포함할 수 있다.
그리고, 상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는 상기 하나의 로우 및 상기 하나의 컬럼에 제2 논제로 엘리먼트가 없는 경우 0을 상기 복수의 제1 연산 소자 각각에 입력하는 단계 및 상기 0이 상기 복수의 제1 연산 소자 각각에 입력되면, 상기 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트의 개수에 기초하여 상기 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트 또는 0을 상기 복수의 제1 연산 소자 각각에 입력하는 단계를 포함할 수 있다.
또한, 상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는 상기 복수의 연산 소자 각각에 저장된 상기 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 상기 제1 논제로 엘리먼트가 없는 뎁스가 식별되면, 상기 제2 엘리먼트 중 상기 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 상기 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
그리고, 상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는 상기 복수의 연산 소자 각각에 저장된 상기 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 상기 제1 논제로 엘리먼트가 기설정된 개수 이내인 뎁스가 식별되면, 상기 제2 엘리먼트 중 상기 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 상기 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하며, 상기 제어 방법은 상기 뎁스에 대응되는 제1 논제로 엘리먼트 및 상기 뎁스에 대응되는 제2 논제로 엘리먼트를 상기 프로세서에 포함된 복수의 예비 연산 소자로 입력하여 연산을 수행하는 단계를 더 포함할 수 있다.
또한, 상기 복수의 제1 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 상기 복수의 제1 연산 소자로 입력된 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자로부터 상기 복수의 연산 소자 중 제2 로우에 포함된 복수의 제2 연산 소자 각각으로 시프트하는 단계 및 상기 복수의 제2 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 상기 복수의 제2 연산 소자로 시프트된 제2 논제로 엘리먼트를 상기 복수의 제2 연산 소자로부터 상기 복수의 연산 소자 중 제3 로우에 포함된 복수의 제3 연산 소자 각각으로 시프트하는 단계를 더 포함할 수 있다.
그리고, 상기 복수의 연산 소자 각각에 입력된 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하는 경우, 상기 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 직전 연산 결과에 누적하여 상기 복수의 레지스터 파일 중 하나에 저장하는 단계를 더 포함할 수 있다.
또한, 상기 복수의 연산 소자 각각에 입력되는 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하지 않는 경우, 상기 복수의 연산 소자 각각의 상기 복수의 레지스터 파일 중 하나에 저장된 연산 결과를 인접한 연산 소자로 시프트하는 단계 및 상기 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 상기 시프트된 연산 결과에 누적하여 상기 복수의 레지스터 파일 중 하나에 저장하는 단계를 더 포함할 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 전자 장치는 대상 데이터에 포함된 0에 따라 대상 데이터 일부 및 커널 데이터 일부의 연산을 생략하여 컨볼루션 연산 속도를 향상시킬 수 있다.
도 1a 및 도 1b는 본 개시의 이해를 돕기 위한 3차원 입력 데이터 간의 컨볼루션(convolution) 연산을 설명하기 위한 도면이다.
도 2는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 나타내는 블럭도이다.
도 3은 본 개시의 일 실시 예에 따른 복수의 연산 소자(Processing Element)를 나타내는 도면이다.
도 4a 내지 도 4d는 본 개시의 일 실시 예에 따른 대상 데이터 및 커널 데이터 중 논제로 엘리먼트를 입력하는 방법을 설명하기 위한 도면들이다.
도 5a 내지 도 5m는 본 개시의 일 실시 예에 따른 연산 소자의 싸이클 별 동작을 설명하기 위한 도면들이다.
도 6a 및 도 6b는 본 개시의 추가 실시 예에 따른 커널 데이터의 데이터 sparsity를 처리하는 방법을 설명하기 위한 도면들이다.
도 7a 및 도 7b는 본 개시의 또다른 추가 실시 예에 따른 대상 데이터(Feature Map Data)의 데이터 sparsity를 처리하는 방법을 설명하기 위한 도면들이다.
도 8은 본 개시의 일 실시 예에 따른 연산 소자의 구조를 설명하기 위한 도면이다.
도 9는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
이하에서, 첨부된 도면을 이용하여 본 개시의 다양한 실시 예들에 대하여 구체적으로 설명한다.
도 1a 및 도 1b는 본 개시의 이해를 돕기 위한 3차원 입력 데이터 간의 컨볼루션(convolution) 연산을 설명하기 위한 도면이다. 여기서, 컨볼루션 연산은 딥 러닝(deep learning)에서 매우 높은 비중으로 수행되는 연산이며, 대상 데이터와 커널 데이터의 연산을 통해 대상 데이터로부터 커널 데이터에 대응되는 특성을 부각시키는 연산일 수 있다.
먼저, 도 1a의 좌측은 3차원 대상 데이터(Feature Map Data)의 일 예이고, 도 1a의 우측은 3차원 커널 데이터(Kernel Data)의 일 예를 나타낸다. 도 1a에서 대상 데이터는 4개의 로우(row), 4개의 컬럼(column) 및 5개의 뎁스(depth)로 구성된 3차원 데이터이고, 커널 데이터는 2개의 로우, 2개의 컬럼 및 5개의 뎁스로 구성된 3차원 데이터일 수 있다.
도 1b는 도 1a의 대상 데이터 및 커널 데이터의 컨볼루션 연산에 따른 출력 데이터(Output Data)를 나타내는 도면이다. 출력 데이터는 3개의 로우 및 3개의 컬럼으로 구성된 2차원 데이터일 수 있다.
출력 데이터 중 Out11은 하기와 같은 수식으로 산출할 수 있다.
Out11 = F11,1 × A,1 + F11,2 × A,2 + F11,3 × A,3 + F11,4 × A,4 + F11,5 × A,5 + F12,1 × B,1 + F12,2 × B,2 + F12,3 × B,3 + F12,4 × B,4 + F12,5 × B,5 + F21,1 × D,1 + F21,2 × D,2 + F21,3 × D,3 + F21,4 × D,4 + F21,5 × D,5 + F22,1 × C,1 + F22,2 × C,2 + F22,3 × C,3 + F22,4 × C,4 + F22,5 × C,5
여기서, F11,1의 쉼표 좌측은 대상 데이터의 로우 및 컬럼을 나타내고, F11,1의 쉼표 우측은 대상 데이터의 뎁스를 나타낸다. 예를 들어, F21,3은 대상 데이터의 제2 로우, 제1 컬럼 및 제3 뎁스의 데이터를 나타내며, 나머지 대상 데이터도 동일한 방법으로 표시하였다. A,1의 쉼표 좌측은 커널 데이터의 로우 및 컬럼을 나타내고, 쉼표 우측은 커널 데이터의 뎁스를 나타낸다. 예를 들어, D,4는 커널 데이터의 제2 로우, 제1 컬럼 및 제4 뎁스의 데이터를 나타내며, 나머지 커널 데이터도 동일한 방법으로 표시하였다. 이하에서는 설명의 편의를 위해 상술한 표기법을 그대로 이용한다.
출력 데이터의 나머지는 동일한 커널 데이터와 대상 데이터의 다른 로우 및 컬럼에 대한 연산으로 산출할 수 있다. 예를 들어, 출력 데이터 중 Out23은 대상 데이터에서 F23, F24, F33, F34의 모든 뎁스에 포함된 데이터와 커널 데이터의 연산을 통해 산출할 수 있다.
이상과 같이 3차원 입력 데이터 간 컨볼루션 연산을 수행하기 위해서는 3차원 입력 데이터의 뎁스가 동일할 필요가 있다. 또한, 입력 데이터가 3차원 데이터이더라도 출력 데이터는 2차원 데이터로 변경될 수 있다.
또한, 도 1b의 도면은 대상 데이터의 외곽 픽셀에 대한 연산을 생략한 결과이며, 외곽 픽셀에 대한 연산이 추가됨에 따라 다른 형태의 출력 데이터가 생성될 수도 있다.
한편, 이상에서는 3차원 입력 데이터 간의 컨볼루션 연산 개념만을 설명하였으며, 하드웨어적인 구현에 있어서는 다양한 방법이 이용될 수 있다.
한편, 이하에서는 설명의 편의를 위해 F11,1, F11,2, F11,3, F11,4, F11,5, F21,1 ..., F44,4, F44,5와 같은 대상 데이터를 구성하는 개별 데이터를 제1 엘리먼트로서 설명하고, A,1, A,2, A,3, A,4, B,1, ..., C,4, D,1, D,2, D,3, D,4와 같은 커널 데이터를 구성하는 개별 데이터를 제2 엘리먼트로서 설명한다. 또한, 도 1a 및 도 1b에서 도시된 로우, 컬럼 및 뎁스의 기준 방향은 이하의 도면에서 동일하다.
도 2는 본 개시의 일 실시 예에 따른 전자 장치(100)의 구성을 나타내는 블럭도이다.
도 2에 도시된 바와 같이, 전자 장치(100)는 스토리지(110) 및 프로세서(120)를 포함한다.
전자 장치(100)는 딥러닝(Deep Learning)을 수행하는 장치일 수 있다. 특히, 전자 장치(100)는 컨볼루션(convolution) 연산을 수행할 수 있는 장치일 수 있다. 예를 들어, 전자 장치(100)는 데스크탑 PC, 노트북, 스마트폰, 태블릿 PC, 서버 등일 수 있다. 또는, 전자 장치(100)는 클라우딩 컴퓨팅 환경이 구축된 시스템 자체일 수도 있다. 다만, 이에 한정되는 것은 아니며, 전자 장치(100)는 컨볼루션 연산이 가능한 장치라면 어떤 장치라도 무방하다.
스토리지(110)는 대상 데이터 및 커널 데이터 등을 저장할 수 있다. 여기서, 대상 데이터 및 커널 데이터는 스토리지(110)의 형태에 대응되도록 저장될 수 있다. 예를 들어, 스토리지(110)는 2차원 형태의 복수의 셀(cell)을 포함할 수 있고, 3차원의 대상 데이터 및 커널 데이터는 2차원 형태의 복수의 셀에 저장될 수 있다.
이 경우, 프로세서(120)는 2차원 형태의 복수의 셀에 저장된 데이터를 3차원의 대상 데이터 및 커널 데이터로서 식별할 수 있다. 예를 들어, 프로세서(120)는 복수의 셀 중 1번부터 25번 셀에 저장된 데이터를 대상 데이터의 제1 뎁스의 데이터로서 식별하고, 복수의 셀 중 26번부터 50번 셀에 저장된 데이터를 대상 데이터의 제2 뎁스의 데이터로서 식별할 수 있다.
한편, 커널 데이터는 전자 장치(100)에 의해 생성될 수도 있고, 전자 장치(100)가 아닌 외부 전자 장치에 의해 생성되어 수신된 정보일 수도 있다. 대상 데이터는 외부 전자 장치로부터 수신된 정보일 수 있다.
스토리지(110)는 하드디스크, 비휘발성 메모리 및 휘발성 메모리 등으로 구현될 수 있다.
프로세서(120)는 전자 장치(100)의 동작을 전반적으로 제어한다.
일 실시 예에 따라 프로세서(120)는 디지털 시그널 프로세서(digital signal processor(DSP), 마이크로 프로세서(microprocessor), TCON(Time controller)으로 구현될 수 있다. 다만, 이에 한정되는 것은 아니며, 중앙처리장치(central processing unit(CPU)), MCU(Micro Controller Unit), MPU(micro processing unit), 컨트롤러(controller), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)), ARM 프로세서 중 하나 또는 그 이상을 포함하거나, 해당 용어로 정의될 수 있다. 또한, 프로세서(120)는 프로세싱 알고리즘이 내장된 SoC(System on Chip), LSI(large scale integration)로 구현될 수도 있고, FPGA(Field Programmable gate array) 형태로 구현될 수도 있다.
프로세서(120)는 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함할 수 있으며, 복수의 연산 소자의 동작을 제어할 수 있다.
예를 들어, 도 3에 도시된 바와 같이, 복수의 연산 소자는 매트릭스 형태로 배열될 수 있으며, 인접한 연산 소자 간에는 데이터의 공유가 가능하다. 도 3에서는 상측에서 하측 방향으로 데이터가 전송되는 것으로 도시되었으나, 이에 한정되는 것은 아니며, 하측에서 상측 방향으로 데이터가 전송될 수도 있다.
복수의 연산 소자 각각은 기본적으로 곱셈기(multiplier) 및 산술 논리 연산 장치(Arithmetic Logic Unit, ALU)를 포함하며, ALU는 적어도 하나 이상의 가산기(adder)를 포함할 수 있다. 복수의 연산 소자 각각은 곱셈기 및 ALU를 이용하여 사칙 연산을 수행할 수 있다. 또한, 복수의 연산 소자 각각은 복수의 레지스터 파일을 포함할 수 있다.
프로세서(120)는 복수의 연산 소자 각각에 대상 데이터에 포함된 복수의 제1 엘리먼트 중 제1 논제로(non-zero) 엘리먼트를 입력할 수 있다. 예를 들어, 프로세서(120)는 스토리지(110)에 저장된 대상 데이터에서 0이 아닌 제1 논제로 엘리먼트를 식별하고, 식별된 제1 논제로 엘리먼트를 복수의 연산 소자로 입력할 수 있다. 즉, 프로세서(120)는 스토리지(110)에 저장된 대상 데이터로부터 실시간으로 제1 논제로 엘리먼트만을 추출할 수 있다.
또는, 프로세서(120)는 복수의 연산 소자로 제1 논제로 엘리먼트를 입력하기 전, 대상 데이터로부터 제1 논제로 엘리먼트만을 추출하고, 추출된 제1 논제로 엘리먼트를 스토리지(110)에 저장할 수 있다. 이 경우, 스토리지(110)는 대상 데이터및 추출된 제1 논제로 엘리먼트를 저장할 수 있다. 프로세서(120)는 추출된 제1 논제로 엘리먼트를 곧바로 복수의 연산 소자로 입력할 수 있다.
프로세서(120)는 제1 논제로 엘리먼트의 로우 정보 및 컬럼 정보에 기초하여 복수의 연산 소자 중 대응되는 연산 소자를 식별하고, 식별된 연산 소자에 제1 논제로 엘리먼트를 입력할 수 있다.
예를 들어, 프로세서(120)는 제1 논제로 엘리먼트가 제1 로우 및 제1 컬럼이면, 복수의 연산 소자 중 제1 연산 소자에 제1 논제로 엘리먼트를 입력하고, 제1 논제로 엘리먼트가 제2 로우 및 제2 컬럼이면, 복수의 연산 소자 중 제2 연산 소자에 제1 논제로 엘리먼트를 입력할 수 있다. 여기서, 제1 로우 및 제1 컬럼에 속하는 제1 논제로 엘리먼트는 뎁스가 서로 다른 복수의 엘리먼트를 포함할 수 있고, 프로세서(120)는 제1 로우 및 제1 컬럼에 속하는 복수의 제1 논제로 엘리먼트를 제1 연산 소자의 복수의 레지스터 파일 각각에 입력할 수 있다.
프로세서(120)는 제1 논제로 엘리먼트의 뎁스 정보에 기초하여 식별된 연산 소자에 포함된 복수의 레지스터 파일 중 대응되는 레지스터 파일에 제1 논제로 엘리먼트를 입력할 수 있다. 여기서, 연산 소자는 대상 데이터의 뎁스 각각에 대응되는 복수의 레지스터 파일을 포함할 수 있다.
예를 들어, 연산 소자는 대상 데이터의 제1 뎁스에 대응되는 제1 레지스터 파일, 제2 뎁스에 대응되는 제2 레지스터 파일, ..., 제n 뎁스에 대응되는 제n 레지스터 파일을 포함할 수 있고, 프로세서(120)는 제1 로우 및 제1 컬럼에 속하는 제1 논제로 엘리먼트 중 제1 뎁스의 엘리먼트는 제1 연산 소자에 포함된 제1 레지스터 파일에 입력하고, 제2 뎁스의 엘리먼트는 제1 연산 소자에 포함된 제2 레지스터 파일에 입력할 수 있다. 만약, 제1 로우 및 제1 컬럼에 속하는 제1 논제로 엘리먼트 중 제2 뎁스의 엘리먼트가 없다면, 제1 연산 소자에 포함된 제2 레지스터 파일은 엘리먼트를 저장하지 않을 수 있다.
다만, 이에 한정되는 것은 아니며, 프로세서(120)는 제1 논제로 엘리먼트의 뎁스 정보를 고려하지 않고, 식별된 연산 소자에 포함된 복수의 레지스터 파일에 순차적으로 제1 논제로 엘리먼트를 입력할 수도 있다. 이 경우, 프로세서(120)는 각 레지스터 파일에 저장된 제1 논제로 엘리먼트의 뎁스 정보를 제1 논제로 엘리먼트와 함께 저장할 수 있다.
예를 들어, 제1 로우 및 제1 컬럼에 속하는 제1 논제로 엘리먼트가 제1 뎁스, 제3 뎁스, 제4 뎁스의 엘리먼트인 경우, 프로세서(120)는 제1 연산 소자에 포함된 제1 레지스터 파일, 제2 레지스터 파일 및 제3 레지스터 파일에 순차적으로 제1 논제로 엘리먼트를 입력할 수 있다. 이 경우, 프로세서(120)는 제1 레지스터 파일에 저장된 제1 논제로 엘리먼트가 제1 뎁스의 엘리먼트이고, 제2 레지스터 파일에 저장된 제1 논제로 엘리먼트가 제3 뎁스의 엘리먼트이고, 제3 레지스터 파일에 저장된 제1 논제로 엘리먼트가 제4 뎁스의 엘리먼트임을 저장할 수 있다.
프로세서(120)는 커널 데이터에 포함된 복수의 제2 엘리먼트 중 제2 논제로 엘리먼트를 복수의 연산 소자 중 제1 로우에 포함된 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
예를 들어, 프로세서(120)는 스토리지(110)에 저장된 커널 데이터에서 0이 아닌 제2 논제로 엘리먼트를 식별하고, 식별된 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다. 즉, 프로세서(120)는 스토리지(110)에 저장된 커널 데이터로부터 실시간으로 제2 논제로 엘리먼트만을 추출할 수 있다.
여기서, 순차적으로 입력하는 동작의 의미는 복수의 제2 논제로 엘리먼트의 입력 순서를 의미한다. 예를 들어, 제1 뎁스의 제2 논제로 엘리먼트, 제2 뎁스의 제2 논제로 엘리먼트 및 제3 뎁스의 제2 논제로 엘리먼트가 있는 경우, 프로세서(120)는 제1 싸이클에서 제1 뎁스의 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 입력하고, 제1 싸이클 다음의 제2 싸이클에서 제2 뎁스의 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 입력하며, 제2 싸이클 다음의 제3 싸이클에서 제3 뎁스의 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 입력할 수 있다.
또는, 프로세서(120)는 복수의 제1 연산 소자 각각으로 제2 논제로 엘리먼트를 입력하기 전, 커널 데이터로부터 제2 논제로 엘리먼트만을 추출하고, 추출된 제2 논제로 엘리먼트를 스토리지(110)에 저장할 수 있다. 이 경우, 스토리지(110)는 커널 데이터및 추출된 제2 논제로 엘리먼트를 저장할 수 있다. 프로세서(120)는 추출된 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
여기서, 복수의 연산 소자 중 제1 로우에 포함된 복수의 제1 연산 소자는 복수의 연산 소자 매트릭스에서 일측 모서리에 배치된 복수의 연산 소자일 수 있다. 예를 들어, 복수의 제1 연산 소자는 도 3의 최상단에 배치된 5개의 연산 소자일 수 있다.
프로세서(120)는 제2 논제로 엘리먼트의 로우 정보, 컬럼 정보 및 뎁스 정보에 기초하여 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다. 이때, 프로세서(120)는 제2 논제로 엘리먼트를 제2 논제로 엘리먼트의 뎁스 정보와 함께 복수의 제1 연산 소자 각각에 순차적으로 입력할 수도 있다.
프로세서(120)는 제2 논제로 엘리먼트 중 하나의 로우 및 하나의 컬럼에 포함된 제2 논제로 엘리먼트를 뎁스에 기초하여 복수의 제1 연산 소자 각각에 순차적으로 입력하고, 하나의 로우 및 하나의 컬럼에 포함된 제2 논제로 엘리먼트 전부가 복수의 제1 연산 소자 각각에 입력되면, 하나의 로우 및 하나의 컬럼과는 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 입력할 수 있다.
예를 들어, 프로세서(120)는 제1 로우 및 제1 컬럼에 포함된 제2 논제로 엘리먼트를 뎁스 순으로 복수의 제1 연산 소자 각각에 순차적으로 입력하고, 제1 로우 및 제1 컬럼에 포함된 제2 논제로 엘리먼트의 입력이 완료되면 제1 로우 및 제2 컬럼에 포함된 제2 논제로 엘리먼트를 뎁스 순으로 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
여기서, 프로세서(120)는 하나의 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 입력하고, 싸이클(cycle)이 변경되면 다음 순서의 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 입력할 수 있다.
또한, 프로세서(120)는 하나의 로우 및 하나의 컬럼에 제2 논제로 엘리먼트가 없는 경우 0을 복수의 제1 연산 소자 각각에 입력하며, 0이 복수의 제1 연산 소자 각각에 입력되면, 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트의 개수에 기초하여 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트 또는 0을 복수의 제1 연산 소자 각각에 입력할 수 있다. 하나의 로우 및 하나의 컬럼에 해당하는 엘리먼트 간 연산이 종료되면 누적된 연산 결과의 시프트가 필요하며, 0을 입력하는 이유는 시프트를 위함이다. 이에 대한 구체적인 설명은 후술한다.
프로세서(120)는 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 제1 논제로 엘리먼트가 없는 뎁스가 식별되면, 제2 엘리먼트 중 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
예를 들어, 프로세서(120)는 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 제3 뎁스에 대응되는 제1 논제로 엘리먼트가 없는 경우, 제2 엘리먼트 중 제3 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략할 수 있다. 좀더 구체적으로, 제1 로우 및 제1 컬럼에 속하는 제2 논제로 엘리먼트가 제1 뎁스, 제3 뎁스, 제4 뎁스의 엘리먼트인 경우, 프로세서(120)는 제1 로우 및 제1 컬럼에 속하는 제2 논제로 엘리먼트 중 제1 뎁스의 엘리먼트를 복수의 제1 연산 소자 각각에 입력하고, 싸이클이 변경되면 제1 로우 및 제1 컬럼에 속하는 제2 논제로 엘리먼트 중 제4 뎁스의 엘리먼트를 복수의 제1 연산 소자 각각에 입력할 수 있다. 즉, 제1 로우 및 제1 컬럼에 속하는 제2 논제로 엘리먼트 중 제3 뎁스의 엘리먼트를 복수의 제1 연산 소자 각각으로 입력하더라도, 제3 뎁스에 대응되는 제1 논제로 엘리먼트가 없는 이상 연산 결과는 0이며, 프로세서(120)는 제1 로우 및 제1 컬럼에 속하는 제2 논제로 엘리먼트 중 제3 뎁스의 엘리먼트를 입력하지 않음으로써 싸이클을 단축할 수 있다.
또는, 프로세서(120)는 복수의 예비 연산 소자를 더 포함하고, 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 제1 논제로 엘리먼트가 기설정된 개수 이내인 뎁스가 식별되면, 제2 엘리먼트 중 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력하며, 뎁스에 대응되는 제1 논제로 엘리먼트 및 뎁스에 대응되는 제2 논제로 엘리먼트를 복수의 예비 연산 소자로 입력하여 연산을 수행할 수 있다.
예를 들어, 프로세서(120)는 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 제3 뎁스에 대응되는 제1 논제로 엘리먼트가 5개 이내이면, 제2 엘리먼트 중 제3 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 제3 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력하며, 제3 뎁스에 대응되는 제1 논제로 엘리먼트 및 제3 뎁스에 대응되는 제2 논제로 엘리먼트를 복수의 예비 연산 소자로 입력하여 연산을 수행할 수 있다.
복수의 제1 연산 소자 각각은 입력된 제1 논제로 엘리먼트의 뎁스 정보 및 입력된 제2 논제로 엘리먼트의 뎁스 정보에 기초하여, 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다.
복수의 연산 소자 중 나머지 연산 소자는 인접한 연산 소자로부터 제2 논제로 엘리먼트를 입력받을 수 있다. 나머지 연산 소자 각각은 입력된 제1 논제로 엘리먼트의 뎁스 정보 및 입력된 제2 논제로 엘리먼트의 뎁스 정보에 기초하여, 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다.
여기서, 제1 논제로 엘리먼트 및 제2 논제로 엘리먼트는 싸이클 별로 복수의 연산 소자 각각에 입력될 수 있다. 이 경우, 복수의 연산 소자 각각은 싸이클 별로 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 각각의 뎁스 정보에 기초하여 수행할 수 있다.
또는, 제1 논제로 엘리먼트는 복수의 연산 소자에 한꺼번에 기 입력된 상태이고, 제2 논제로 엘리먼트는 싸이클 별로 복수의 연산 소자 각각에 입력될 수도 있다. 이 경우, 복수의 연산 소자 각각은 기 저장된 제1 논제로 엘리먼트 및 싸이클 별로 입력된 제2 논제로 엘리먼트 간 연산을 각각의 뎁스 정보에 기초하여 수행할 수도 있다.
프로세서(120)는 복수의 제1 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 복수의 제1 연산 소자로 입력된 제2 논제로 엘리먼트를 복수의 제1 연산 소자로부터 복수의 연산 소자 중 제2 로우에 포함된 복수의 제2 연산 소자 각각으로 시프트하도록 복수의 연산 소자를 제어하고, 복수의 제2 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 복수의 제2 연산 소자로 시프트된 제2 논제로 엘리먼트를 복수의 제2 연산 소자로부터 복수의 연산 소자 중 제3 로우에 포함된 복수의 제3 연산 소자 각각으로 시프트하도록 복수의 연산 소자를 제어할 수 있다. 여기서, 프로세서(120)는 싸이클이 변경되면 시프트 동작이 수행되도록 복수의 연산 소자를 제어할 수 있다.
프로세서(120)는 복수의 연산 소자 각각에 입력된 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하는 경우, 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 직전 연산 결과에 누적하여 복수의 레지스터 파일 중 하나에 저장할 수 있다. 여기서, 복수의 레지스터 파일은 제1 논제로 엘리먼트가 저장되는 복수의 레지스터 파일 및 연산 결과를 누적하여 저장하기 위한 레지스터 파일을 포함할 수 있다.
프로세서(120)는 복수의 연산 소자 각각에 입력되는 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하지 않는 경우, 복수의 연산 소자 각각의 복수의 레지스터 파일 중 하나에 저장된 연산 결과를 인접한 연산 소자로 시프트하고, 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 시프트된 연산 결과에 누적하여 복수의 레지스터 파일 중 하나에 저장할 수 있다.
이상과 같은 방법을 통해 프로세서(120)는 대상 데이터 및 커널 데이터 간의 연산에서 불필요한 연산을 단축할 수 있다. 이하에서는 좀더 구체적인 도면을 통해 프로세서(120)의 연산 방법에 대하여 설명한다.
도 4a 내지 도 4d는 본 개시의 일 실시 예에 따른 대상 데이터 및 커널 데이터 중 논제로 엘리먼트를 입력하는 방법을 설명하기 위한 도면들이다.
도 4a의 좌측은 3차원 대상 데이터를 나타내는 도면이고, 도 4a의 우측은 3차원 커널 데이터 1 및 3차원 커널 데이터 2를 나타낸다.
후술하는 바와 같이, 커널 데이터가 복수의 제1 연산 소자에 순차적으로 입력되기 때문에, 복수의 커널 데이터의 연산이 용이할 수 있다. 이에 대하여는 이후의 도면을 통해 구체적으로 설명한다.
도 4a에서 우측 상단을 향하는 제1 화살표 방향은 모두 뎁스 방향을 나타낸다. 또한, 도 4a에서 시계 방향으로 회전하는 제2 화살표 방향은 커널 데이터의 연산 순서를 나타낸다. 구체적으로, A에 해당하는 모든 뎁스의 커널 데이터의 연산이 완료되면 B에 해당하는 모든 뎁스의 커널 데이터의 연산이 수행될 수 있다. 즉, 연산 순서는 A -> B -> C -> D 일 수 있다.
도 4b의 좌측 상단은 대상 데이터에서 제1 로우를 나타내고, 도 4b의 좌측 하단은 대상 데이터에서 제2 로우를 나타내며, 화살표 방향은 도 4a의 제1 화살표 방향과 같이 뎁스 방향을 나타낸다. 도 4b의 좌측에 기재된 숫자는 뎁스의 인덱스를 나타내며 엘리먼트가 0이 아닌 경우이고, 숫자가 기재되지 않은 뎁스는 엘리먼트가 0인 경우를 나타낸다. 예를 들어, 대상 데이터의 제1 로우 및 제1 컬럼에서 제1 뎁스, 제4 뎁스 및 제5 뎁스의 엘리먼트는 0이 아니며, 제2 뎁스 및 제3 뎁스의 엘리먼트는 0이다.
도 4b의 우측은 도 4b의 좌측에서 제1 논제로 엘리먼트만을 기재한 도면이다. 프로세서(120)는 도 4b의 좌측과 같은 대상 데이터로부터 제1 논제로 엘리먼트만을 식별하고, 식별된 제1 논제로 엘리먼트를 복수의 연산 소자로 입력할 수 있다. 또는, 프로세서(120)는 도 4b의 우측과 같이 제1 논제로 엘리먼트만을 추출하고, 추출된 제1 논제로 엘리먼트를 스토리지(110)에 별도로 저장하며, 저장된 제1 논제로 엘리먼트를 추출하여 복수의 연산 소자로 입력할 수도 있다. 이 경우, 프로세서(120)는 도 4b에서와 같이 먼저 제1 로우의 F11의 뎁스 방향으로 먼저 추출하고, 옆으로 이동하여 F12의 뎁스 방향으로 제1 논제로 엘리먼트를 추출할 수 있다. 프로세서(120)는 동일한 방법으로 F13, F14 각각의 뎁스 방향으로 제1 논제로 엘리먼트를 추출할 수 있다. 프로세서(120)는 제2 로우에 대하여도 동일한 방법으로 제1 논제로 엘리먼트를 추출할 수 있다.
도 4b에서는 설명의 편의를 위하여 대상 데이터에서 제1 로우 및 제2 로우만을 도시하였으며, 설명의 편의를 위하여 이하에서도 대상 데이터의 제1 로우 및 제2 로우만을 설명한다. 나머지 로우에 대한 동작은 제1 로우 및 제2 로우에 대한 동작과 동일하다.
도 4c의 좌측은 커널 데이터 1 및 커널 데이터 2를 로우 및 컬럼에 따라 도시한 도면이다. 도 4c에서 화살표 방향은 도 4a의 제1 화살표 방향과 같이 뎁스 방향을 나타낸다. 도 4c의 좌측에 기재된 숫자는 뎁스의 인덱스를 나타내며 엘리먼트가 0이 아닌 경우이고, 숫자가 기재되지 않은 뎁스는 엘리먼트가 0인 경우를 나타낸다. 예를 들어, 커널 데이터의 제1 로우 및 제1 컬럼에서 제1 뎁스 및 제3 뎁스의 엘리먼트는 0이 아니며, 제2 뎁스, 제4 뎁스 및 제5 뎁스의 엘리먼트는 0이다.
도 4c의 우측은 도 4c의 좌측에서 제2 논제로 엘리먼트만을 기재한 도면이다. 프로세서(120)는 도 4c의 좌측과 같은 커널 데이터로부터 제2 논제로 엘리먼트만을 식별하고, 식별된 제2 논제로 엘리먼트를 복수의 제1 연산 소자로 순차적으로 입력할 수 있다. 또는, 프로세서(120)는 도 4c의 우측과 같이 제2 논제로 엘리먼트만을 추출하고, 추출된 제2 논제로 엘리먼트를 스토리지(110)에 별도로 저장하며, 저장된 제2 논제로 엘리먼트를 추출하여 복수의 제1 연산 소자로 순차적으로 입력할 수도 있다. 이 경우, 프로세서(120)는 도 4c에서와 같이 먼저 A의 뎁스 방향으로 먼저 추출하고, 옆으로 이동하여 B의 뎁스 방향으로 제2 논제로 엘리먼트를 추출할 수 있다. 프로세서(120)는 동일한 방법으로 C, D 각각의 뎁스 방향으로 제2 논제로 엘리먼트를 추출할 수 있다.
한편, 프로세서(120)는 도 4d에 도시된 바와 같이, 4 × 4 매트릭스 형태의 복수의 연산 소자를 포함할 수 있다. 복수의 연산 소자 중 상단의 첫 번째 로우(410)에 포함된 4개의 연산 소자를 복수의 제1 연산 소자로서 가정한다.
프로세서(120)는 대상 데이터의 제1 로우에 포함된 제1 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 예를 들어, 프로세서(120)는 대상 데이터의 제1 로우 및 제1 컬럼에 포함된 제1 뎁스, 제4 뎁스 및 제5 뎁스의 엘리먼트를 복수의 제1 연산 소자 중 좌측에서 첫 번째에 위치한 연산 소자에 입력하고, 대상 데이터의 제1 로우 및 제2 컬럼에 포함된 제1 뎁스, 제3 뎁스 및 제4 뎁스의 엘리먼트를 복수의 제1 연산 소자 중 좌측에서 두 번째에 위치한 연산 소자에 입력하고, 대상 데이터의 제1 로우 및 제3 컬럼에 포함된 제1 뎁스, 제3 뎁스 및 제5 뎁스의 엘리먼트를 복수의 제1 연산 소자 중 좌측에서 세 번째에 위치한 연산 소자에 입력하고, 대상 데이터의 제1 로우 및 제4 컬럼에 포함된 제1 뎁스, 제2 뎁스 및 제5 뎁스의 엘리먼트를 복수의 제1 연산 소자 중 좌측에서 네 번째에 위치한 연산 소자에 입력할 수 있다.
또한, 프로세서(120)는 대상 데이터의 제2 로우에 포함된 제1 논제로 엘리먼트를 첫 번째 로우(410)의 바로 아래에 위치한 로우에 포함된 4개의 연산 소자(이하에서는 복수의 제2 연산 소자로 설명한다)에 입력할 수 있다. 예를 들어, 프로세서(120)는 대상 데이터의 제2 로우 및 제1 컬럼에 포함된 제1 뎁스, 제2 뎁스, 제3 뎁스 및 제4 뎁스의 엘리먼트를 복수의 제2 연산 소자 중 좌측에서 첫 번째에 위치한 연산 소자에 입력하고, 대상 데이터의 제2 로우 및 제2 컬럼에 포함된 제4 뎁스 및 제5 뎁스의 엘리먼트를 복수의 제2 연산 소자 중 좌측에서 두 번째에 위치한 연산 소자에 입력하고, 대상 데이터의 제2 로우 및 제3 컬럼에 포함된 제3 뎁스의 엘리먼트를 복수의 제2 연산 소자 중 좌측에서 세 번째에 위치한 연산 소자에 입력하고, 대상 데이터의 제2 로우 및 제4 컬럼에 포함된 제2 뎁스, 제3 뎁스, 제4 뎁스 및 제5 뎁스의 엘리먼트를 복수의 제2 연산 소자 중 좌측에서 네 번째에 위치한 연산 소자에 입력할 수 있다.
한편, 프로세서(120)는 커널 데이터 1의 제1 로우 및 제1 컬럼에 포함된 제2 논제로 엘리먼트를 뎁스 순으로 복수의 제1 연산 소자에 순차적으로 입력할 수 있다.
그리고, 프로세서(120)는 커널 데이터 1의 제1 로우 및 제1 컬럼에 포함된 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력하고, 커널 데이터 1의 제1 로우 및 제2 컬럼에 포함된 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력하고, 커널 데이터 1의 제2 로우 및 제2 컬럼에 포함된 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력하고, 커널 데이터 1의 제2 로우 및 제1 컬럼에 포함된 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력할 수 있다.
그리고, 프로세서(120)는 커널 데이터 1에 포함된 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력하고, 커널 데이터 2에 포함된 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력할 수 있다.
예를 들어, 프로세서(120)는 커널 데이터 1의 제1 로우 및 제1 컬럼에 포함된 제1 뎁스 및 제3 뎁스의 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력하고, 커널 데이터 1의 제1 로우 및 제2 컬럼에 포함된 제1 뎁스, 제2 뎁스, 제3 뎁스, 제4 뎁스 및 제5 뎁스의 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력하고, 커널 데이터 1의 제2 로우 및 제2 컬럼에 포함된 제1 뎁스, 제2 뎁스, 제3 뎁스 및 제5 뎁스의 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력할 수 있다. 프로세서(120)는 커널 데이터 1의 제2 로우 및 제1 컬럼에 제2 논제로 엘리먼트가 포함되어 있지 않은 경우, 0을 복수의 제1 연산 소자에 입력할 수 있다. 그리고, 프로세서(120)는 커널 데이터 2의 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력하며, 입력 순서는 커널 데이터 1의 경우와 동일할 수 있다.
프로세서(120)는 하나의 제2 논제로 엘리먼트를 복수의 제1 연산 소자로 입력하고, 싸이클이 변경되면 또 다른 제2 논제로 엘리먼트를 복수의 제1 연산 소자로 순차적으로 입력할 수 있다.
복수의 제1 연산 소자 각각은 싸이클이 변경되면 입력된 제2 논제로 엘리먼트를 복수의 제2 연산 소자 중 인접한 제2 연산 소자로 시프트할 수 있다. 복수의 제2 연산 소자 각각은 싸이클이 변경되면 입력된 제2 논제로 엘리먼트를 하측 방향의 인접한 연산 소자로 시프트할 수 있다.
한편, 프로세서(120)는 제1 싸이클에서 제1 논제로 엘리먼트 전체를 복수의 연산 소자에 입력하고, 첫 번째 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 그리고, 프로세서(120)는 제1 싸이클의 다음인 제2 싸이클에서 두 번째 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 즉, 프로세서(120)는 이후의 싸이클에서 제2 논제로 엘리먼트만을 복수의 제1 연산 소자에 입력할 수 있다.
또는, 프로세서(120)는 제1 싸이클에서 제1 논제로 엘리먼트 전체가 아니라 복수의 제1 연산 소자에 대응되는 제1 논제로 엘리먼트만을 복수의 제1 연산 소자에 입력하고, 첫 번째 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수도 있다. 그리고, 프로세서(120)는 제2 싸이클에서 복수의 제2 연산 소자에 대응되는 제1 논제로 엘리먼트만을 복수의 제2 연산 소자에 입력하고, 두 번째 제2 논제로 엘리먼트를 복수의 제2 연산 소자에 입력할 수도 있다. 즉, 프로세서(120)는 싸이클 별로 제1 논제로 엘리먼트의 일부만을 복수의 제1 연산 소자에 입력할 수도 있다.
도 5a 내지 도 5m는 본 개시의 일 실시 예에 따른 연산 소자의 싸이클 별 동작을 설명하기 위한 도면들이다. 설명의 편의를 위하여 도 5a 내지 도 5m에서는 도 4a 내지 도 4d의 복수의 제1 연산 소자 및 복수의 제2 연산 소자의 동작에 대하여 설명한다. 도 5a 내지 도 5m에서 복수의 제1 연산 소자를 상측에, 복수의 제2 연산 소자를 하측에 도시하였다. 또한, 각각의 연산 소자에서 좌측은 제1 논제로 엘리먼트를 나타내고, 가운데가 제2 논제로 엘리먼트를 나타내며, 우측은 연산 결과를 나타낸다.
예를 들어, 도 5a의 좌측 상단은 복수의 제1 연산 소자 중 하나를 나타내며, 좌측(510)은 대상 데이터에서 제1 로우 및 제1 컬럼에 포함된 제1 뎁스, 제4 뎁스 및 제5 뎁스의 제1 논제로 엘리먼트를 나타내고, 가운데(520)는 커널 데이터 1에서 제1 로우 및 제1 컬럼에 포함된 제1 뎁스의 제2 논제로 엘리먼트를 나타내며, 우측(530)은 연산 결과를 나타낸다. 다만, 우측(530)에서 구체적인 연산 결과 값의 기재는 생략하였다.
먼저, 도 5a에 도시된 바와 같이, 프로세서(120)는 제1 싸이클에 제1 논제로 엘리먼트를 복수의 제1 연산 소자 및 복수의 제2 연산 소자에 입력할 수 있다. 다만, 이에 한정되는 것은 아니며, 프로세서(120)는 제1 싸이클에 제1 논제로 엘리먼트를 복수의 제1 연산 소자에 입력하고, 제2 싸이클에 제1 논제로 엘리먼트를 복수의 제2 연산 소자에 입력할 수도 있다. 여기서, 프로세서(120)는 각 연산 소자에 대응되는 제1 논제로 엘리먼트를 입력할 수 있으며, 이는 상술하였으므로 구체적인 설명은 생략한다.
프로세서(120)는 제1 싸이클에 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 여기서, 입력되는 제2 논제로 엘리먼트는 커널 데이터 1의 제1 로우 및 제1 컬럼에 포함된 제1 뎁스의 제2 논제로 엘리먼트이다.
복수의 제1 연산 소자 각각은 입력된 제1 논제로 엘리먼트의 뎁스 정보 및 입력된 제2 논제로 엘리먼트의 뎁스 정보에 기초하여, 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행하고, 연산 결과를 저장할 수 있다. 예를 들어, 입력된 제2 논제로 엘리먼트는 제1 뎁스의 엘리먼트이므로, 복수의 제1 연산 소자 중 제1 뎁스의 제1 논제로 엘리먼트가 저장된 좌측부터 첫 번째, 세 번째 및 네 번째 연산 소자는 제1 논제로 엘리먼트 및 제2 논제로 엘리먼트 간 연산을 수행할 수 있다. 다만, 복수의 제1 연산 소자 중 제1 뎁스의 제1 논제로 엘리먼트가 저장되지 않은 좌측부터 두 번째 연산 소자는 제1 논제로 엘리먼트 및 제2 논제로 엘리먼트 간 연산을 수행하지 않는다. 연산 결과는 각각의 연산 소자에 저장되며, 인접한 연산 소자로 시프트되지 않는다. 시프트에 대하여는 후술한다.
복수의 제2 연산 소자는 제2 논제로 엘리먼트가 입력되지 않았으므로 연산을 수행하지 않는다.
그리고, 도 5b에 도시된 바와 같이, 프로세서(120)는 제2 싸이클에 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 여기서, 입력되는 제2 논제로 엘리먼트는 커널 데이터 1의 제1 로우 및 제1 컬럼에 포함된 제3 뎁스의 제2 논제로 엘리먼트이다.
이와 동시에, 복수의 제1 연산 소자 각각은 제1 싸이클에서 입력된 제2 논제로 엘리먼트를 인접한 제2 연산 소자로 시프트할 수 있다.
복수의 제1 연산 소자 각각은 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다. 그리고, 복수의 제1 연산 소자 각각은 제2 싸이클의 연산 결과를 제1 싸이클의 연산 결과와 합산하여 인접한 연산 소자로 시프트할 수 있다. 시프트하는 이유는 커널 데이터 1에서 제1 로우 및 제1 컬럼에 포함된 제2 논제로 엘리먼트가 모두 입력되었기 때문이다. 즉, 제2 싸이클에서 입력된 제2 논제로 엘리먼트가 커널 데이터 1의 제1 로우 및 제1 컬럼에 포함된 마지막 제2 논제로 엘리먼트이기 때문이다. 시프트 방향은 다음 싸이클에서 입력될 제2 논제로 엘리먼트가 커널 데이터 1에서 위치하는 로우 및 컬럼에 따라 결정된다. 제3 싸이클에서는 커널 데이터 1의 제1 로우 및 제2 컬럼에 포함된 제1 뎁스의 제2 논제로 엘리먼트가 입력될 예정이며, 이는 커널 데이터 1의 제1 로우 및 제1 컬럼을 기준으로 우측에 해당한다. 즉, 시프트 방향은 우측일 수 있다. 만약, 제3 싸이클에서는 커널 데이터 1의 제2 로우 및 제1 컬럼에 포함된 제1 뎁스의 제2 논제로 엘리먼트가 입력될 예정이라면, 이는 커널 데이터 1의 제1 로우 및 제1 컬럼을 기준으로 하측에 해당하며, 시프트 방향은 하측일 수 있다.
복수의 제2 연산 소자 각각은 이전 싸이클에서 복수의 제1 연산 소자의 동작과 동일한 연산 방법으로 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다.
그리고, 도 5c에 도시된 바와 같이, 프로세서(120)는 제3 싸이클에 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 여기서, 입력되는 제2 논제로 엘리먼트는 커널 데이터 1의 제1 로우 및 제2 컬럼에 포함된 제1 뎁스의 제2 논제로 엘리먼트이다.
이와 동시에, 복수의 제1 연산 소자 각각은 제2 싸이클에서 입력된 제2 논제로 엘리먼트를 인접한 제2 연산 소자로 시프트할 수 있다. 또한, 복수의 제2 연산 소자 각각은 제2 싸이클에서 입력된 제2 논제로 엘리먼트를 하측에 인접한 연산 소자(미도시)로 시프트할 수 있다.
즉, 복수의 제1 연산 소자 및 복수의 제2 연산 소자는 싸이클이 변경되면 이전 싸이클에서 시프트되어 입력된 제2 논제로 엘리먼트를 하측에 인접한 연산 소자로 시프트할 수 있다. 이하에서는 동일한 동작이 반복되므로 제2 논제로 엘리먼트의 시프트에 대한 설명은 생략한다.
복수의 제1 연산 소자 각각은 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다. 그리고, 복수의 제1 연산 소자 각각은 제2 싸이클에서 시프트된 연산 결과를 제3 싸이클의 연산 결과와 합산하고, 합산된 연산 결과를 저장할 수 있다.
복수의 제2 연산 소자 각각은 이전 싸이클에서 복수의 제1 연산 소자의 동작과 동일한 연산 방법으로 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행하고, 연산 결과를 우측으로 시프트할 수 있다.
즉, 복수의 제2 연산 소자 각각은 이전 싸이클의 복수의 제1 연산 소자의 동작과 동일하게 동작할 수 있다. 이하에서는 별도의 설명이 없는 경우 복수의 제2 연산 소자의 동작은 이전 싸이클에서 복수의 제1 연산 소자의 동작과 동일하다.
도 5d 내지 도 5f 각각은 커널 데이터 1의 제1 로우 및 제2 컬럼에 포함된 제2 뎁스, 제3 뎁스 및 제4 뎁스의 제2 논제로 엘리먼트가 입력됨에 따른 동작을 나타내며, 이상에서 설명한 바와 동일하므로 구체적인 설명은 생략한다.
이후, 도 5g에 도시된 바와 같이, 프로세서(120)는 제7 싸이클에 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 여기서, 입력되는 제2 논제로 엘리먼트는 커널 데이터 1의 제1 로우 및 제2 컬럼에 포함된 제5 뎁스의 제2 논제로 엘리먼트이다.
복수의 제1 연산 소자 각각은 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다. 그리고, 복수의 제1 연산 소자 각각은 제7 싸이클의 연산 결과를 제6 싸이클의 연산 결과와 합산하여 인접한 제2 연산 소자로 시프트할 수 있다. 상술한 바와 같이, 다음 싸이클에서는 커널 데이터 1의 제2 로우 및 제2 컬럼에 포함된 제1 뎁스의 제2 논제로 엘리먼트가 입력될 예정이고, 이는 커널 데이터 1의 제1 로우 및 제2 컬럼을 기준으로 하측에 해당하며, 시프트 방향은 하측일 수 있다.
복수의 제2 연산 소자 각각은 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다.
여기서, 복수의 제2 연산 소자 각각은 인접한 제1 연산 소자로부터 시프트된 연산 결과를 제7 싸이클에서의 연산 결과와 별도로 저장할 수 있다. 즉, 상측에 인접한 연산 소자로부터 하측 방향으로 시프트된 연산 결과는 현재 싸이클의 연산 결과와 합산되지 않는다.
그리고, 도 5h에 도시된 바와 같이, 프로세서(120)는 제8 싸이클에 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 여기서, 입력되는 제2 논제로 엘리먼트는 커널 데이터 1의 제2 로우 및 제2 컬럼에 포함된 제1 뎁스의 제2 논제로 엘리먼트이다.
복수의 제1 연산 소자 각각은 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다.
복수의 제2 연산 소자 각각은 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행할 수 있다. 여기서, 복수의 제2 연산 소자 각각은 제7 싸이클에서의 연산 결과와 제8 싸이클에서의 연산 결과를 합산하고, 합산된 연산 결과를 하측에 인접한 연산 소자로 시프트할 수 있다. 한편, 제7 싸이클에서 상측에 인접한 연산 소자로부터 시프트된 연산 결과는 복수의 제2 연산 소자 각각에 그대로 저장된 상태일 수 있다.
그리고, 도 5i에 도시된 바와 같이, 프로세서(120)는 제9 싸이클에 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 여기서, 입력되는 제2 논제로 엘리먼트는 커널 데이터 1의 제2 로우 및 제2 컬럼에 포함된 제2 뎁스의 제2 논제로 엘리먼트이다.
복수의 제1 연산 소자 각각은 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행하고, 이전 싸이클의 연산 결과와 현재 싸이클의 연산 결과를 합산하며, 합산된 연산 결과를 저장할 수 있다.
복수의 제2 연산 소자 각각은 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행하고, 제7 싸이클에서 상측에 인접한 연산 소자로부터 시프트된 연산 결과와 현재 싸이클의 연산 결과를 합산하며, 합산된 연산 결과를 저장할 수 있다.
도 5j 및 도 5k는 커널 데이터 1의 제2 로우 및 제2 컬럼에 포함된 제3 뎁스 및 제5 뎁스의 제2 논제로 엘리먼트가 입력됨에 따른 동작을 나타내며, 이상에서 설명한 바와 연산 방법, 합산 방법 및 시프트 방법은 동일하므로 구체적인 설명은 생략한다. 다만, 도 5k에 도시된 바와 같이, 합산된 연산 결과는 좌측으로 시프트될 수 있다. 즉, 도 5k의 합산된 연산 결과의 시프트 방향은 도 5b의 합산된 연산 결과의 시프트 방향과 반대일 수 있다.
이후, 도 5l에 도시된 바와 같이, 프로세서(120)는 제12 싸이클에 0을 복수의 제1 연산 소자에 입력할 수 있다. 여기서, 커널 데이터 1의 제2 로우 및 제1 컬럼에는 제2 논제로 엘리먼트가 없기 때문에 프로세서(120)는 0을 복수의 제1 연산 소자에 입력할 수 있다.
도 5l에서는 다음 싸이클에 입력되는 제2 논제로 엘리먼트가 커널 데이터 2의 제2 논제로 엘리먼트이므로 시프트가 불필요하다. 반면, 다음 싸이클에 입력되는 제2 논제로 엘리먼트가 동일한 커널 데이터 1의 제2 논제로 엘리먼트라면 시프트가 필요하다. 이 경우, 프로세서(120)는 0을 복수의 제1 연산 소자에 입력하고, 복수의 제1 연산 소자 각각에 저장되어 있던 연산 결과는 인접한 연산 소자로 시프트될 수 있다.
그리고, 도 5m에 도시된 바와 같이, 프로세서(120)는 제13 싸이클에 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 입력할 수 있다. 여기서, 입력되는 제2 논제로 엘리먼트는 커널 데이터 2의 제1 로우 및 제1 컬럼에 포함된 제2 뎁스의 제2 논제로 엘리먼트이다. 복수의 제1 연산 소자 및 복수의 제2 연산 소자의 동작은 이상에서 설명한 바와 동일하다.
즉, 이상과 같은 방법을 이용하면 복수의 커널 데이터에 대해 연속적인 컨볼루션 연산을 수행할 수 있다. 여기서, 프로세서(120)는 커널 데이터 1에 대한 연산 결과를 출력할 수 있다.
한편, 도 5a 내지 도 5m에서는 4 × 4 매트릭스 형태의 복수의 연산 소자를 도시하였으나, 이에 한정되는 것은 아니며, 복수의 연산 소자의 개수는 얼마든지 달라질 수 있다.
또한, 대상 데이터 역시 4 × 4 × 5 형태로 설명하였으나, 이에 한정되는 것은 아니며, 얼마든지 다른 형태일 수도 있다. 예를 들어, 대상 데이터 역시 16 × 16 × 5 형태이며, 4 × 4 매트릭스 형태의 복수의 연산 소자를 이용하는 경우, 프로세서(120)는 대상 데이터의 로우 및 컬럼을 기준으로 4개로 구분하고, 각각에 대하여 컨볼루션 연산을 수행할 수도 있다.
도 6a 및 도 6b는 본 개시의 추가 실시 예에 따른 커널 데이터의 데이터 sparsity를 처리하는 방법을 설명하기 위한 도면들이다.
프로세서(120)는 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 제1 논제로 엘리먼트가 없는 뎁스가 식별되면, 제2 엘리먼트 중 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
예를 들어, 도 6a에 도시된 바와 같이, 프로세서(120)는 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 제2 뎁스에 해당하는 제1 논제로 엘리먼트가 없음을 식별할 수 있다. 이 경우, 도 6a에 도시된 바와 같이, 프로세서(120)는 커널 데이터 1 및 커널 데이터 2에 포함된 제2 뎁스의 제2 논제로 엘리먼트를 제거하고, 나머지 제2 논제로 엘리먼트를 복수의 제1 연산 소자에 순차적으로 입력할 수 있다.
여기서, 프로세서(120)는 커널 데이터 1 및 커널 데이터 2에 포함된 제2 뎁스의 제2 논제로 엘리먼트를 제거하고, 나머지 제2 논제로 엘리먼트를 스토리지(110)에 별도로 저장하며, 나머지 제2 논제로 엘리먼트를 순차적으로 추출하여 복수의 제1 연산 소자에 입력할 수 있다. 또는, 프로세서(120)는 커널 데이터 1 및 커널 데이터 2에서 제2 논제로 엘리먼트를 순차적으로 추출하며, 제2 뎁스의 제2 논제로 엘리먼트가 식별되면 이를 건너뛰고, 제2 뎁스가 아닌 제2 논제로 엘리먼트를 추출하여 복수의 제1 연산 소자에 입력할 수도 있다.
또는, 프로세서(120)는 제1 논제로 엘리먼트가 복수의 연산 소자 각각에 입력되기 전에, 모든 로우 및 모든 컬럼에 제1 논제로 엘리먼트가 없는 뎁스를 식별할 수도 있다.
도 7a 및 도 7b는 본 개시의 또다른 추가 실시 예에 따른 대상 데이터(Feature Map Data)의 데이터 sparsity를 처리하는 방법을 설명하기 위한 도면들이다.
프로세서(120)는 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 제1 논제로 엘리먼트가 기설정된 개수 이내인 뎁스가 식별되면, 제2 엘리먼트 중 식별된 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
예를 들어, 도 7a에 도시된 바와 같이, 프로세서(120)는 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 제1 논제로 엘리먼트가 3개 이내인 제2 뎁스가 식별되면, 제2 엘리먼트 중 제2 뎁스에 대응되는 제2 논제로 엘리먼트(720)의 입력을 생략하고 제2 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
이 경우, 식별된 뎁스의 제1 논제로 엘리먼트는 복수의 연산 소자 중 일부에 저장되어 있을 수 있으나, 식별된 뎁스의 제2 논제로 엘리먼트(720)가 입력되지 않는 이상 연산이 이루어지지 않기 때문에 싸이클이 단축될 수 있다. 단축되는 싸이클은 도 6a 및 도 6b의 경우와 동일하다.
한편, 프로세서(120)는 복수의 예비 연산 소자를 더 포함할 수 있고, 식별된 뎁스에 대응되는 제1 논제로 엘리먼트 및 식별된 뎁스에 대응되는 제2 논제로 엘리먼트를 복수의 예비 연산 소자로 입력하여 별도로 연산을 수행할 수 있다.
예를 들어, 도 7b에 도시된 바와 같이, 프로세서(120)는 복수의 예비 연산 소자(730)를 더 포함할 수 있고, 식별된 뎁스에 대응되는 제1 논제로 엘리먼트(710) 및 식별된 뎁스에 대응되는 제2 논제로 엘리먼트(720)를 복수의 예비 연산 소자(730)로 입력하여 별도로 연산을 수행할 수 있다.
즉, 프로세서(120)는 복수의 연산 소자를 이용하여 도 5a 내지 도 5m과 같은 연산을 수행하고, 병렬적으로 복수의 예비 연산 소자(730)를 이용하여 식별된 뎁스에 대응되는 제1 논제로 엘리먼트(710) 및 식별된 뎁스에 대응되는 제2 논제로 엘리먼트(720)를 연산할 수 있다.
이후, 프로세서(120)는 복수의 예비 연산 소자(730)로부터 출력되는 연산 결과를 복수의 연산 소자로부터 출력되는 연산 결과 중 대응되는 연산 결과에 합산할 수 있다.
도 8은 본 개시의 일 실시 예에 따른 연산 소자의 구조를 설명하기 위한 도면이다.
연산 소자는 Kernel 단자(811), FMap 단자(812), PSum 단자(813), BottomAcc 단자(814), LeftAcc 단자(821), RightAcc 단자(822), Ctrl_Inst 단자(823), LeftAcc 단자(831), RightAcc 단자(832), Kernel 단자(841), PSum 단자(842), BottomAcc 단자(843)와 같은 복수의 단자를 구비할 수 있다. 또한, 연산 소자는 Register File(850), Multiplier(860), 멀티플렉서(870), Adder(880) 등을 포함할 수 있다.
연산 소자는 Kernel 단자(811), FMap 단자(812), PSum 단자(813) 및 Ctrl_Inst 단자(823) 각각을 통해 제2 논제로 엘리먼트, 제1 논제로 엘리먼트, 스토리지(110)에 저장된 데이터 및 명령어를 입력받을 수 있다. 또한, 연산 소자는 Kernel 단자(841)을 통해 제2 논제로 엘리먼트를 하부에 인접한 연산 소자로 시프트할 수 있다. 특히, 연산 소자는 PSum 단자(813) 및 PSum 단자(842)를 이용하여 스토리지(110)에 직접 데이터를 입력받거나 출력할 수 있다.
연산 소자는 BottomAcc 단자(814), RightAcc 단자(822) 및 LeftAcc 단자(831)를 통해 인접한 연산 소자로부터 연산 결과를 입력받을 수 있다. 또한, 연산 소자는 LeftAcc 단자(821), RightAcc 단자(832) 및 BottomAcc 단자(843)를 통해 인접한 연산 소자로 직접 연산한 연산 결과를 시프트할 수 있다.
Register File(850)은 FMap 단자(812)을 통해 입력된 제1 논제로 엘리먼트 및 연산 결과를 저장할 수 있다.
Multiplier(860)는 Kernel 단자(811)를 통해 입력된 제2 논제로 엘리먼트 및 Register File(850)로부터 입력되는 제1 논제로 엘리먼트의 곱셈 연산을 수행할 수 있다.
멀티플렉서(870)는 인접한 연산 소자로부터 입력되는 연산 결과, 연산 소자 내에서 연산된 연산 결과, PSum 단자(813)로부터 입력되는 데이터 및 Register File(850)로부터 입력되는 데이터 중 하나를 Adder(880)에 제공할 수 있다.
Adder(880)는 Multiplier(860)로부터 입력되는 곱셈 연산 결과 및 멀티플렉서(870)로부터 입력되는 데이터의 덧셈 연산을 수행할 수 있다.
그 밖에 연산 소자는 멀티플렉서 등을 더 포함할 수 있다.
한편, 도 8은 연산 소자의 일 예를 나타내며, 이에 한정되는 것은 아니다.
도 9는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다. 여기서, 전자 장치는 딥러닝(Deep Learning)을 수행하며, 대상 데이터 및 커널 데이터가 저장된 스토리지 및 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하는 프로세서를 포함할 수 있다.
먼저, 복수의 연산 소자 각각에 대상 데이터에 포함된 복수의 제1 엘리먼트 중 제1 논제로(non-zero) 엘리먼트를 입력한다(S910). 그리고, 커널 데이터에 포함된 복수의 제2 엘리먼트 중 제2 논제로 엘리먼트를 복수의 연산 소자 중 제1 로우에 포함된 복수의 제1 연산 소자 각각에 순차적으로 입력한다(S920). 그리고, 복수의 제1 연산 소자 각각에서 입력된 제1 논제로 엘리먼트의 뎁스(depth) 정보 및 입력된 제2 논제로 엘리먼트의 뎁스 정보에 기초하여, 입력된 제1 논제로 엘리먼트 및 입력된 제2 논제로 엘리먼트 간 연산을 수행한다(S930).
여기서, 복수의 연산 소자 각각은 복수의 레지스터 파일을 포함하며, 제1 논제로 엘리먼트를 입력하는 단계(S910)는 제1 논제로 엘리먼트의 로우(row) 정보 및 컬럼(column) 정보에 기초하여 복수의 연산 소자 중 대응되는 연산 소자를 식별하는 단계 및 제1 논제로 엘리먼트의 뎁스 정보에 기초하여 식별된 연산 소자에 포함된 복수의 레지스터 파일 중 대응되는 레지스터 파일에 제1 논제로 엘리먼트를 입력하는 단계를 포함할 수 있다.
그리고, 제2 논제로 엘리먼트를 순차적으로 입력하는 단계(S920)는 제2 논제로 엘리먼트의 로우 정보, 컬럼 정보 및 뎁스 정보에 기초하여 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
여기서, 제2 논제로 엘리먼트를 순차적으로 입력하는 단계(S920)는 제2 논제로 엘리먼트 중 하나의 로우 및 하나의 컬럼에 포함된 제2 논제로 엘리먼트를 뎁스에 기초하여 복수의 제1 연산 소자 각각에 순차적으로 입력하는 단계 및 하나의 로우 및 하나의 컬럼에 포함된 제2 논제로 엘리먼트 전부가 복수의 제1 연산 소자 각각에 입력되면, 하나의 로우 및 하나의 컬럼과는 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 입력하는 단계를 포함할 수 있다.
또한, 제2 논제로 엘리먼트를 순차적으로 입력하는 단계(S920)는 하나의 로우 및 하나의 컬럼에 제2 논제로 엘리먼트가 없는 경우 0을 복수의 제1 연산 소자 각각에 입력하는 단계 및 0이 복수의 제1 연산 소자 각각에 입력되면, 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트의 개수에 기초하여 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트 또는 0을 복수의 제1 연산 소자 각각에 입력하는 단계를 포함할 수 있다.
한편, 제2 논제로 엘리먼트를 순차적으로 입력하는 단계(S920)는 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 제1 논제로 엘리먼트가 없는 뎁스가 식별되면, 제2 엘리먼트 중 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력할 수 있다.
또는, 제2 논제로 엘리먼트를 순차적으로 입력하는 단계(S920)는 복수의 연산 소자 각각에 저장된 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 제1 논제로 엘리먼트가 기설정된 개수 이내인 뎁스가 식별되면, 제2 엘리먼트 중 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 복수의 제1 연산 소자 각각에 순차적으로 입력하며, 제어 방법은 뎁스에 대응되는 제1 논제로 엘리먼트 및 뎁스에 대응되는 제2 논제로 엘리먼트를 프로세서에 포함된 복수의 예비 연산 소자로 입력하여 연산을 수행하는 단계를 더 포함할 수 있다.
한편, 복수의 제1 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 복수의 제1 연산 소자로 입력된 제2 논제로 엘리먼트를 복수의 제1 연산 소자로부터 복수의 연산 소자 중 제2 로우에 포함된 복수의 제2 연산 소자 각각으로 시프트하는 단계 및 복수의 제2 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 복수의 제2 연산 소자로 시프트된 제2 논제로 엘리먼트를 복수의 제2 연산 소자로부터 복수의 연산 소자 중 제3 로우에 포함된 복수의 제3 연산 소자 각각으로 시프트하는 단계를 더 포함할 수 있다.
여기서, 복수의 연산 소자 각각에 입력된 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하는 경우, 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 직전 연산 결과에 누적하여 복수의 레지스터 파일 중 하나에 저장하는 단계를 더 포함할 수 있다.
그리고, 복수의 연산 소자 각각에 입력되는 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하지 않는 경우, 복수의 연산 소자 각각의 복수의 레지스터 파일 중 하나에 저장된 연산 결과를 인접한 연산 소자로 시프트하는 단계 및 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 시프트된 연산 결과에 누적하여 복수의 레지스터 파일 중 하나에 저장하는 단계를 더 포함할 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 전자 장치는 대상 데이터에 포함된 0에 따라 대상 데이터 일부 및 커널 데이터 일부의 연산을 생략하여 컨볼루션 연산 속도를 향상시킬 수 있다.
한편, 이상에서 설명한 대상 데이터 및 커널 데이터는 3차원 데이터라면 얼마든지 다른 형태여도 무방하다. 또한, 프로세서에 포함된 복수의 연산 소자의 개수 역시 얼마든지 다를 수도 있다.
한편, 본 개시의 일시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 전자 장치(A))를 포함할 수 있다. 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 프로세서의 제어 하에 다른 구성요소들을 이용하여 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
또한, 본 개시의 일 실시 예에 따르면, 이상에서 설명된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
또한, 본 개시의 일 실시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에서 구현될 수 있다. 일부 경우에 있어 본 명세서에서 설명되는 실시 예들이 프로세서 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 동작을 수행할 수 있다.
한편, 상술한 다양한 실시 예들에 따른 기기의 프로세싱 동작을 수행하기 위한 컴퓨터 명령어(computer instructions)는 비일시적 컴퓨터 판독 가능 매체(non-transitory computer-readable medium)에 저장될 수 있다. 이러한 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 명령어는 특정 기기의 프로세서에 의해 실행되었을 때 상술한 다양한 실시 예에 따른 기기에서의 처리 동작을 특정 기기가 수행하도록 한다. 비일시적 컴퓨터 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 비일시적 컴퓨터 판독 가능 매체의 구체적인 예로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 있을 수 있다.
또한, 상술한 다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시에 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100 : 전자 장치 110 : 스토리지
120 : 프로세서

Claims (20)

  1. 딥러닝(Deep Learning)을 수행하는 전자 장치에 있어서,
    대상 데이터 및 커널 데이터가 저장된 스토리지; 및
    매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하는 프로세서;를 포함하고,
    상기 프로세서는,
    상기 복수의 연산 소자 각각에 상기 대상 데이터에 포함된 복수의 제1 엘리먼트 중 제1 논제로(non-zero) 엘리먼트를 입력하며, 상기 커널 데이터에 포함된 복수의 제2 엘리먼트 중 제2 논제로 엘리먼트를 상기 복수의 연산 소자 중 제1 로우에 포함된 복수의 제1 연산 소자 각각에 순차적으로 입력하고,
    상기 복수의 제1 연산 소자 각각은,
    입력된 제1 논제로 엘리먼트의 뎁스(depth) 정보 및 입력된 제2 논제로 엘리먼트의 뎁스 정보에 기초하여, 상기 입력된 제1 논제로 엘리먼트 및 상기 입력된 제2 논제로 엘리먼트 간 연산을 수행하는, 전자 장치.
  2. 제1항에 있어서,
    상기 복수의 연산 소자 각각은, 복수의 레지스터 파일을 포함하며,
    상기 프로세서는,
    상기 제1 논제로 엘리먼트의 로우(row) 정보 및 컬럼(column) 정보에 기초하여 상기 복수의 연산 소자 중 대응되는 연산 소자를 식별하고,
    상기 제1 논제로 엘리먼트의 뎁스 정보에 기초하여 상기 식별된 연산 소자에 포함된 복수의 레지스터 파일 중 대응되는 레지스터 파일에 상기 제1 논제로 엘리먼트를 입력하는, 전자 장치.
  3. 제2항에 있어서,
    상기 프로세서는,
    상기 제2 논제로 엘리먼트의 로우 정보, 컬럼 정보 및 뎁스 정보에 기초하여 상기 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하는, 전자 장치.
  4. 제3항에 있어서,
    상기 프로세서는,
    상기 제2 논제로 엘리먼트 중 하나의 로우 및 하나의 컬럼에 포함된 제2 논제로 엘리먼트를 뎁스에 기초하여 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하고,
    상기 하나의 로우 및 상기 하나의 컬럼에 포함된 제2 논제로 엘리먼트 전부가 상기 복수의 제1 연산 소자 각각에 입력되면, 상기 하나의 로우 및 상기 하나의 컬럼과는 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 입력하는, 전자 장치.
  5. 제4항에 있어서,
    상기 프로세서는,
    상기 하나의 로우 및 상기 하나의 컬럼에 제2 논제로 엘리먼트가 없는 경우 0을 상기 복수의 제1 연산 소자 각각에 입력하며,
    상기 0이 상기 복수의 제1 연산 소자 각각에 입력되면, 상기 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트의 개수에 기초하여 상기 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트 또는 0을 상기 복수의 제1 연산 소자 각각에 입력하는, 전자 장치.
  6. 제3항에 있어서,
    상기 프로세서는,
    상기 복수의 연산 소자 각각에 저장된 상기 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 상기 제1 논제로 엘리먼트가 없는 뎁스가 식별되면, 상기 제2 엘리먼트 중 상기 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 상기 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하는, 전자 장치.
  7. 제3항에 있어서,
    상기 프로세서는,
    복수의 예비 연산 소자를 더 포함하고,
    상기 복수의 연산 소자 각각에 저장된 상기 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 상기 제1 논제로 엘리먼트가 기설정된 개수 이내인 뎁스가 식별되면, 상기 제2 엘리먼트 중 상기 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 상기 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하며,
    상기 뎁스에 대응되는 제1 논제로 엘리먼트 및 상기 뎁스에 대응되는 제2 논제로 엘리먼트를 상기 복수의 예비 연산 소자로 입력하여 연산을 수행하는, 전자 장치.
  8. 제3항에 있어서,
    상기 프로세서는,
    상기 복수의 제1 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 상기 복수의 제1 연산 소자로 입력된 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자로부터 상기 복수의 연산 소자 중 제2 로우에 포함된 복수의 제2 연산 소자 각각으로 시프트하도록 상기 복수의 연산 소자를 제어하고,
    상기 복수의 제2 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 상기 복수의 제2 연산 소자로 시프트된 제2 논제로 엘리먼트를 상기 복수의 제2 연산 소자로부터 상기 복수의 연산 소자 중 제3 로우에 포함된 복수의 제3 연산 소자 각각으로 시프트하도록 상기 복수의 연산 소자를 제어하는, 전자 장치.
  9. 제8항에 있어서,
    상기 프로세서는,
    상기 복수의 연산 소자 각각에 입력된 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하는 경우, 상기 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 직전 연산 결과에 누적하여 상기 복수의 레지스터 파일 중 하나에 저장하는, 전자 장치.
  10. 제8항에 있어서,
    상기 프로세서는,
    상기 복수의 연산 소자 각각에 입력되는 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하지 않는 경우, 상기 복수의 연산 소자 각각의 상기 복수의 레지스터 파일 중 하나에 저장된 연산 결과를 인접한 연산 소자로 시프트하고,
    상기 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 상기 시프트된 연산 결과에 누적하여 상기 복수의 레지스터 파일 중 하나에 저장하는, 전자 장치.
  11. 딥러닝(Deep Learning)을 수행하는 전자 장치의 제어 방법에 있어서,
    상기 전자 장치는,
    대상 데이터 및 커널 데이터가 저장된 스토리지 및 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하는 프로세서를 포함하고,
    상기 제어 방법은,
    상기 복수의 연산 소자 각각에 상기 대상 데이터에 포함된 복수의 제1 엘리먼트 중 제1 논제로(non-zero) 엘리먼트를 입력하는 단계;
    상기 커널 데이터에 포함된 복수의 제2 엘리먼트 중 제2 논제로 엘리먼트를 상기 복수의 연산 소자 중 제1 로우에 포함된 복수의 제1 연산 소자 각각에 순차적으로 입력하는 단계; 및
    상기 복수의 제1 연산 소자 각각에서 입력된 제1 논제로 엘리먼트의 뎁스(depth) 정보 및 입력된 제2 논제로 엘리먼트의 뎁스 정보에 기초하여, 상기 입력된 제1 논제로 엘리먼트 및 상기 입력된 제2 논제로 엘리먼트 간 연산을 수행하는 단계;를 포함하는, 제어 방법.
  12. 제11항에 있어서,
    상기 복수의 연산 소자 각각은, 복수의 레지스터 파일을 포함하며,
    상기 제1 논제로 엘리먼트를 입력하는 단계는,
    상기 제1 논제로 엘리먼트의 로우(row) 정보 및 컬럼(column) 정보에 기초하여 상기 복수의 연산 소자 중 대응되는 연산 소자를 식별하는 단계; 및
    상기 제1 논제로 엘리먼트의 뎁스 정보에 기초하여 상기 식별된 연산 소자에 포함된 복수의 레지스터 파일 중 대응되는 레지스터 파일에 상기 제1 논제로 엘리먼트를 입력하는 단계;를 포함하는, 제어 방법.
  13. 제12항에 있어서,
    상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는,
    상기 제2 논제로 엘리먼트의 로우 정보, 컬럼 정보 및 뎁스 정보에 기초하여 상기 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하는, 제어 방법.
  14. 제13항에 있어서,
    상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는,
    상기 제2 논제로 엘리먼트 중 하나의 로우 및 하나의 컬럼에 포함된 제2 논제로 엘리먼트를 뎁스에 기초하여 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하는 단계; 및
    상기 하나의 로우 및 상기 하나의 컬럼에 포함된 제2 논제로 엘리먼트 전부가 상기 복수의 제1 연산 소자 각각에 입력되면, 상기 하나의 로우 및 상기 하나의 컬럼과는 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 입력하는 단계;를 포함하는, 제어 방법.
  15. 제14항에 있어서,
    상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는,
    상기 하나의 로우 및 상기 하나의 컬럼에 제2 논제로 엘리먼트가 없는 경우 0을 상기 복수의 제1 연산 소자 각각에 입력하는 단계; 및
    상기 0이 상기 복수의 제1 연산 소자 각각에 입력되면, 상기 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트의 개수에 기초하여 상기 다른 로우 및 컬럼에 포함된 제2 논제로 엘리먼트 또는 0을 상기 복수의 제1 연산 소자 각각에 입력하는 단계;를 포함하는, 제어 방법.
  16. 제13항에 있어서,
    상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는,
    상기 복수의 연산 소자 각각에 저장된 상기 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 상기 제1 논제로 엘리먼트가 없는 뎁스가 식별되면, 상기 제2 엘리먼트 중 상기 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 상기 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하는, 제어 방법.
  17. 제13항에 있어서,
    상기 제2 논제로 엘리먼트를 순차적으로 입력하는 단계는,
    상기 복수의 연산 소자 각각에 저장된 상기 제1 논제로 엘리먼트 중 모든 로우 및 모든 컬럼에 상기 제1 논제로 엘리먼트가 기설정된 개수 이내인 뎁스가 식별되면, 상기 제2 엘리먼트 중 상기 뎁스에 대응되는 제2 논제로 엘리먼트의 입력을 생략하고 상기 뎁스에 대응되지 않는 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자 각각에 순차적으로 입력하며,
    상기 제어 방법은,
    상기 뎁스에 대응되는 제1 논제로 엘리먼트 및 상기 뎁스에 대응되는 제2 논제로 엘리먼트를 상기 프로세서에 포함된 복수의 예비 연산 소자로 입력하여 연산을 수행하는 단계;를 더 포함하는, 제어 방법.
  18. 제13항에 있어서,
    상기 복수의 제1 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 상기 복수의 제1 연산 소자로 입력된 제2 논제로 엘리먼트를 상기 복수의 제1 연산 소자로부터 상기 복수의 연산 소자 중 제2 로우에 포함된 복수의 제2 연산 소자 각각으로 시프트하는 단계; 및
    상기 복수의 제2 연산 소자에서 논제로 엘리먼트 간 연산이 완료되면, 상기 복수의 제2 연산 소자로 시프트된 제2 논제로 엘리먼트를 상기 복수의 제2 연산 소자로부터 상기 복수의 연산 소자 중 제3 로우에 포함된 복수의 제3 연산 소자 각각으로 시프트하는 단계;를 더 포함하는, 제어 방법.
  19. 제18항에 있어서,
    상기 복수의 연산 소자 각각에 입력된 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하는 경우, 상기 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 직전 연산 결과에 누적하여 상기 복수의 레지스터 파일 중 하나에 저장하는 단계;를 더 포함하는, 제어 방법.
  20. 제18항에 있어서,
    상기 복수의 연산 소자 각각에 입력되는 제2 논제로 엘리먼트가 직전 연산에 이용된 제2 논제로 엘리먼트와 동일한 로우 및 동일한 컬럼에 속하지 않는 경우, 상기 복수의 연산 소자 각각의 상기 복수의 레지스터 파일 중 하나에 저장된 연산 결과를 인접한 연산 소자로 시프트하는 단계; 및
    상기 입력된 제2 논제로 엘리먼트에 의한 연산 결과를 상기 시프트된 연산 결과에 누적하여 상기 복수의 레지스터 파일 중 하나에 저장하는 단계;를 더 포함하는, 제어 방법.
KR1020180022960A 2017-10-12 2018-02-26 전자 장치 및 그 제어 방법 KR20190041388A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201880057625.8A CN111095304A (zh) 2017-10-12 2018-06-08 电子设备及其控制方法
PCT/KR2018/006509 WO2019074185A1 (en) 2017-10-12 2018-06-08 ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF
EP18866233.2A EP3659073A4 (en) 2017-10-12 2018-06-08 ELECTRONIC DEVICE AND CONTROL PROCEDURE FOR IT
US16/031,565 US20190114542A1 (en) 2017-10-12 2018-07-10 Electronic apparatus and control method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762571599P 2017-10-12 2017-10-12
US62/571,599 2017-10-12

Publications (1)

Publication Number Publication Date
KR20190041388A true KR20190041388A (ko) 2019-04-22

Family

ID=66282988

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180022960A KR20190041388A (ko) 2017-10-12 2018-02-26 전자 장치 및 그 제어 방법

Country Status (3)

Country Link
EP (1) EP3659073A4 (ko)
KR (1) KR20190041388A (ko)
CN (1) CN111095304A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3714406A4 (en) * 2018-03-07 2021-02-17 Samsung Electronics Co., Ltd. ELECTRONIC DEVICE AND ITS CONTROL PROCESS
WO2021177617A1 (en) * 2020-03-02 2021-09-10 Samsung Electronics Co., Ltd. Electronic apparatus and method for controlling thereof
KR20220095091A (ko) * 2020-12-29 2022-07-06 한양대학교 산학협력단 데이터 재사용을 통해 컨볼루션 연산 속도를 향상시킨 3차원 객체 인식 방법 및 장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1923793A2 (en) * 2006-10-03 2008-05-21 Sparsix Corporation Memory controller for sparse data computation system and method therefor
EP2657842B1 (en) * 2012-04-23 2017-11-08 Fujitsu Limited Workload optimization in a multi-processor system executing sparse-matrix vector multiplication
JP6083300B2 (ja) * 2013-03-29 2017-02-22 富士通株式会社 プログラム、並列演算方法および情報処理装置
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
KR101843243B1 (ko) * 2015-10-30 2018-03-29 세종대학교산학협력단 제로값을 피연산자로 갖는 연산자에 대한 연산을 스킵하는 연산 방법 및 연산 장치
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3714406A4 (en) * 2018-03-07 2021-02-17 Samsung Electronics Co., Ltd. ELECTRONIC DEVICE AND ITS CONTROL PROCESS
US11113361B2 (en) 2018-03-07 2021-09-07 Samsung Electronics Co., Ltd. Electronic apparatus and control method thereof
WO2021177617A1 (en) * 2020-03-02 2021-09-10 Samsung Electronics Co., Ltd. Electronic apparatus and method for controlling thereof
KR20220095091A (ko) * 2020-12-29 2022-07-06 한양대학교 산학협력단 데이터 재사용을 통해 컨볼루션 연산 속도를 향상시킨 3차원 객체 인식 방법 및 장치

Also Published As

Publication number Publication date
EP3659073A4 (en) 2020-09-30
CN111095304A (zh) 2020-05-01
EP3659073A1 (en) 2020-06-03

Similar Documents

Publication Publication Date Title
US20210390653A1 (en) Learning robotic tasks using one or more neural networks
US11551280B2 (en) Method, manufacture, and system for recommending items to users
JP7286013B2 (ja) ビデオコンテンツ認識方法、装置、プログラム及びコンピュータデバイス
EP4206957A1 (en) Model training method and related device
US11423288B2 (en) Neuromorphic synthesizer
CN112002309A (zh) 模型训练方法和设备
CN111325664B (zh) 风格迁移方法、装置、存储介质及电子设备
KR20190099931A (ko) 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치
US11144291B1 (en) Loop-oriented neural network compilation
US20240135174A1 (en) Data processing method, and neural network model training method and apparatus
KR20190041388A (ko) 전자 장치 및 그 제어 방법
CN116416416A (zh) 虚拟试衣模型的训练方法、虚拟试衣方法及电子设备
US20190114542A1 (en) Electronic apparatus and control method thereof
CN113939801A (zh) 利用自我修正代码减少神经网络的计算量
CN112668689A (zh) 进行多媒体数据处理的方法和设备
KR20190106010A (ko) 전자 장치 및 머신 러닝 수행 방법
Anitha et al. Convolution Neural Network and Auto-encoder Hybrid Scheme for Automatic Colorization of Grayscale Images
CN112115744A (zh) 点云数据的处理方法及装置、计算机存储介质、电子设备
CN114925320A (zh) 一种数据处理方法及相关装置
CN113407820A (zh) 模型训练方法及相关系统、存储介质
JP2022032703A (ja) 情報処理システム
Zhu et al. Support vector machine optimized using the improved fish swarm optimization algorithm and its application to face recognition
Arhore et al. Optimisation of convolutional neural network architecture using genetic algorithm for the prediction of adhesively bonded joint strength
KR20190118332A (ko) 전자 장치 및 그 제어 방법
WO2019089553A1 (en) Tensor radix point calculation in a neural network

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal