KR20190140808A - 프로세서, 전자 장치 및 그 제어 방법 - Google Patents

프로세서, 전자 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR20190140808A
KR20190140808A KR1020180125239A KR20180125239A KR20190140808A KR 20190140808 A KR20190140808 A KR 20190140808A KR 1020180125239 A KR1020180125239 A KR 1020180125239A KR 20180125239 A KR20180125239 A KR 20180125239A KR 20190140808 A KR20190140808 A KR 20190140808A
Authority
KR
South Korea
Prior art keywords
data
stored
memory
convolution
kernel
Prior art date
Application number
KR1020180125239A
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 EP19810582.7A priority Critical patent/EP3746951A4/en
Priority to PCT/KR2019/006493 priority patent/WO2019231254A1/en
Priority to US16/426,325 priority patent/US11244027B2/en
Priority to CN201980035810.1A priority patent/CN112204585A/zh
Publication of KR20190140808A publication Critical patent/KR20190140808A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • 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/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
    • G06N3/065Analogue 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

Landscapes

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

Abstract

인공지능 알고리즘(artificial intelligence)을 실행하는 전자 장치가 개시된다. 본 프로세서는 메모리, 컨벌루션 연산 유닛 및 버퍼로부터 입력되는 데이터가 제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 메모리에 저장되면, 저장된 입력 데이터를 컨벌루션 연산 유닛으로 제공하고, 컨벌루션 연산 유닛으로부터 제1 연산 데이터가 수신되면, 수신된 제1 연산 데이터를 메모리에 저장하고, 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 저장된 제1 연산 데이터를 컨벌루션 연산 유닛으로 제공하는 컨트롤러를 포함하며, 컨트롤러는, 제1 연산 데이터가 컨벌루션 연산 유닛으로 제공된 후 버퍼로부터 입력되는 데이터를 메모리에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장한다.

Description

프로세서, 전자 장치 및 그 제어 방법 { PROCESSOR, ELECTRONICS APPARATUS AND CONTROL METHOD THEREOF }
본 발명은 프로세서, 전자 장치 및 그 제어 방법에 관한 것으로, 보다 상세하게는 입력 데이터에 컨벌루션 연산을 수행하는 프로세서, 전자 장치 및 그 제어 방법에 관한 것이다.
근래에는 인간 수준의 지능을 구현하는 인공 지능 시스템이 다양한 분야에서 이용되고 있다. 인공 지능 시스템은 기존의 룰(rule) 기반 스마트 시스템과 달리 기계가 스스로 학습하고 판단하며 똑똑해지는 시스템이다. 인공 지능 시스템은 사용할수록 인식률이 향상되고 사용자 취향을 보다 정확하게 이해할 수 있게 되어, 기존 룰 기반 스마트 시스템은 점차 딥러닝 기반 인공 지능 시스템으로 대체되고 있다.
인공 지능 기술은 기계학습(예로, 딥러닝) 및 기계학습을 활용한 요소 기술들로 구성된다.
기계학습은 입력 데이터들의 특징을 스스로 분류/학습하는 알고리즘 기술이며, 요소기술은 딥러닝 등의 기계학습 알고리즘을 활용하여 인간 두뇌의 인지, 판단 등의 기능을 모사하는 기술로서, 언어적 이해, 시각적 이해, 추론/예측, 지식 표현, 동작 제어 등의 기술 분야로 구성된다.
인공 지능 기술이 응용되는 다양한 분야는 다음과 같다. 언어적 이해는 인간의 언어/문자를 인식하고 응용/처리하는 기술로서, 자연어 처리, 기계 번역, 대화시스템, 질의 응답, 음성 인식/합성 등을 포함한다. 시각적 이해는 사물을 인간의 시각처럼 인식하여 처리하는 기술로서, 객체 인식, 객체 추적, 영상 검색, 사람 인식, 장면 이해, 공간 이해, 영상 개선 등을 포함한다. 추론 예측은 정보를 판단하여 논리적으로 추론하고 예측하는 기술로서, 지식/확률 기반 추론, 최적화 예측, 선호 기반 계획, 추천 등을 포함한다. 지식 표현은 인간의 경험정보를 지식데이터로 자동화 처리하는 기술로서, 지식 구축(데이터 생성/분류), 지식 관리(데이터 활용) 등을 포함한다. 동작 제어는 차량의 자율 주행, 로봇의 움직임을 제어하는 기술로서, 움직임 제어(항법, 충돌, 주행), 조작 제어(행동 제어) 등을 포함한다.
이상과 같은 인공 지능 기술은 Deep Neural Network를 처리할 수 있는 프로세서에서 실행될 수 있다. 다만, 이러한 프로세서는 입력 데이터에 DNN을 처리하기 위해 요구되는 내부 메모리의 용량이 제한적이므로 외부 메모리와 통신을 수행하여 데이터를 입출력하여야하는 문제점이 있었다. 특히, 외부 메모리에 데이터를 읽고 쓰는데 많은 시간이 요구됨에 따라 입력 데이터에 DNN을 처리하기 위해 요구되는 시간이 비례하여 증가하는 문제점이 있었다.
이에 따라, 용량이 제한적인 내부 메모리를 효율적으로 이용하여 입력 데이터에 DNN을 처리하는 방법이 요구되었다.
본 개시는 상술한 필요성에 따른 것으로, 본 발명의 목적은 입력 데이터에 컨벌루션 연산을 수행하여 획득된 데이터를 내부 메모리에 저장하는 프로세서, 전자 장치 및 그 제어 방법을 제공함에 있다.
본 개시의 상술한 목적을 달성하기 위한 일 실시 예에 따르면 프로세서는 메모리, 컨벌루션 연산 유닛 및 버퍼로부터 입력되는 데이터가 제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 상기 메모리에 저장되면, 상기 저장된 입력 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 제1 연산 데이터가 수신되면, 상기 수신된 제1 연산 데이터를 상기 메모리에 저장하고, 상기 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 컨트롤러를 포함하며, 상기 컨벌루션 연산 유닛은, 상기 입력 데이터 및 제1 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 상기 제1 연산 데이터를 획득하고, 상기 제1 연산 데이터 및 제2 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 제2 연산 데이터를 획득하고, 상기 컨트롤러는, 상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터를 상기 메모리에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장한다.
또한, 상기 컨트롤러는, 상기 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 제2 연산 데이터가 수신되면, 상기 수신된 제2 연산 데이터를 상기 메모리에 저장하고, 상기 제2 연산 데이터가 제3 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제2 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터가 하나의 라인 만큼 상기 메모리에 저장되면, 해당 라인을 포함하는 상기 제1 커널 데이터에 대응되는 라인 개수만큼의 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 제1 연산 데이터가 수신되면, 상기 제2 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제1 연산 데이터를 저장할 수 있다.
또한, 상기 메모리는, 최소 상기 제1 커널 데이터 내지 제M 커널 데이터의 라인 개수에 대응되는 라인만큼 저장 가능할 수 있다.
또한, 상기 컨트롤러는, 제(M-1) 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터에 기초한 제(M-2) 연산 데이터가 수신되면, 상기 제(M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제(M-2) 연산 데이터를 저장하고, 상기 제(M-2) 연산 데이터를 포함하는 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인 만큼의 제(M-2) 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후, 제(M-1) 연산 데이터가 수신되면, 상기 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제(M-1) 연산 데이터를 저장할 수 있다.
또한, 상기 컨트롤러는, 제(M-1) 연산 데이터가 상기 제M 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 상기 제(M-1) 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 수신된 제M 연산 데이터를 출력 버퍼로 출력할 수 있다.
또한, 상기 컨트롤러는, 제(M-3) 연산 데이터가 제(M-2) 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장된 상태에서, 상기 컨벌루션 연산 유닛으로부터 수신된 제(M-2) 연산 데이터를 상기 메모리에 저장된 제(M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하고, 상기 제(M-2) 연산 데이터가 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인만큼 저장된 상태에서, 상기 컨벌루션 연산 유닛으로부터 수신된 제(M-1) 연산 데이터를 상기 메모리에 저장된 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장할 수 있다.
또한, 상기 메모리는, Circular memory일 수 있다.
또한, 상기 버퍼로부터 입력되는 상기 데이터는 로지컬 어드레스(logical address)를 포함하고, 상기 컨트롤러는, 상기 로지컬 어드레스에 기초하여 상기 입력 데이터를 상기 메모리에 저장할 수 있다.
한편, 본 개시의 일 실시 예에 따른 전자 장치는 입력 데이터를 라인 단위로 그룹핑하여 로지컬 어드레스를 할당하는 버퍼, 및 메모리 및 컨벌루션 연산 유닛을 포함하는 프로세서를 포함하며, 상기 프로세서는, 상기 버퍼로부터 입력되는 데이터를 상기 로지컬 어드레스에 기초하여 저장하고, 상기 데이터가 제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 상기 저장된 입력 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 제1 연산 데이터가 수신되면, 상기 수신된 제1 연산 데이터를 상기 메모리에 저장하고, 상기 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하며, 상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후, 상기 버퍼로부터 입력되는 데이터를 상기 메모리에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장할 수 있다.
또한, 상기 컨벌루션 연산 유닛은, 상기 입력 데이터 및 상기 제1 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 상기 제1 연산 데이터를 획득하고, 상기 제1 연산 데이터 및 상기 제2 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 상기 제2 연산 데이터를 획득할 수 있다.
한편, 본 개시의 일 실시 예에 따른 메모리 및 컨벌루션 연산 유닛을 포함하는 프로세서의 제어 방법은 버퍼로부터 입력되는 데이터가제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 상기 저장된 입력 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계, 상기 입력 데이터 및 상기 제1 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 제1 연산 데이터를 획득하는 단계, 상기 컨벌루션 연산 유닛으로부터 제1 연산 데이터가 수신되면, 상기 수신된 제1 연산 데이터를 상기 메모리에 저장하는 단계, 상기 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계 및 상기 제1 연산 데이터 및 상기 제2 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 제2 연산 데이터를 획득하는 단계를 포함하고, 상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터를 상기 메모리에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는 단계를 더 포함한다.
또한, 상기 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 제2 연산 데이터가 수신되면, 상기 수신된 제2 연산 데이터를 상기 메모리에 저장하는 단계, 상기 제2 연산 데이터가 제3 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제2 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계, 상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 입력 데이터가 하나의 라인 만큼 상기 메모리에 저장되면, 해당 라인을 포함하는 상기 제1 커널 데이터에 대응되는 라인 개수만큼의 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계 및 상기 제1 연산 데이터가 수신되면, 상기 제2 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제1 연산 데이터를 저장하는 단계를 포함할 수 있다.
또한, 상기 메모리는, 최소 상기 제1 커널 데이터 내지 제M 커널 데이터의 라인 개수에 대응되는 라인만큼 저장 가능할 수 있다.
또한, 제(M-1) 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공하는 단계, 상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터에 기초한 제(M-2) 연산 데이터가 수신되면, 상기 제(M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제(M-2) 연산 데이터를 저장하는 단계 및 상기 제(M-2) 연산 데이터를 포함하는 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인 만큼의 제(M-2) 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후, 제(M-1) 연산 데이터가 수신되면, 상기 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제(M-1) 연산 데이터를 저장하는 단계를 포함할 수 있다.
또한, 제(M-1) 연산 데이터가 상기 제M 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 상기 제(M-1) 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 수신된 제M 연산 데이터를 출력 버퍼로 출력하는 단계를 포함할 수 있다.
또한, 제(M-3) 연산 데이터가 제(M-2) 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장된 상태에서, 상기 컨벌루션 연산 유닛으로부터 수신된 제(M-2) 연산 데이터를 상기 메모리에 저장된 (M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는 단계, 상기 제(M-2) 연산 데이터가 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인만큼 저장된 상태에서, 상기 컨벌루션 연산 유닛으로부터 수신된 제(M-1) 연산 데이터를 상기 메모리에 저장된 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는 단계를 포함할 수 있다.
여기서, 상기 메모리는, Circular memory일 수 있다.
또한, 상기 버퍼로부터 입력되는 상기 데이터는 로지컬 어드레스(logical address)를 포함하고, 상기 입력 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계는, 상기 로지컬 어드레스에 기초하여 상기 입력 데이터를 상기 메모리에 저장하는 단계를 포함할 수 있다.
본 발명의 다양한 실시 예들에 따르면, 컨벌루션 연산을 수행하여 획득된 데이터가 내부 메모리에 저장하고, 컨벌루션 연산을 수행하기 위해 필요한 데이터 내부 메모리로부터 불러옴에 따라 프로세서는 프로세서와 외부 메모리 간 대역폭에 상관 없이 입력 데이터에 DNN을 처리할 수 있다.
도 1은 본 개시의 일 실시 예에 따른 프로세서의 구성을 나타내는 블럭도이다.
도 2는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 나타내는 블록도이다.
도 3은 본 개시의 일 실시 예에 따른 컨벌루션을 설명하기 위한 도면이다.
도 4는 종래 기술의 문제점을 설명하기 위한 도면이다.
도 5는 본 개시의 일 실시 예에 따른 딥 뉴럴 네트워크(Deep Neural Network)를 설명하기 위한 도면이다.
도 6 및 도 7은 본 개시의 일 실시 예에 따른 메모리를 설명하기 위한 도면이다.
도 8은 본 개시의 다른 실시 예에 따른 메모리를 설명하기 위한 도면이다.
도 9는 본 개시의 일 실시 예에 따른 프로세서의 제어 방법을 설명하기 위한 흐름도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 개시에 대해 구체적으로 설명하기로 한다. 
본 개시의 실시 예에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 개시의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 개시의 실시 예들은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 특정한 실시 형태에 대해 범위를 한정하려는 것이 아니며, 개시된 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 실시 예들을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 개시에서 "모듈" 혹은 "부"는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 "모듈" 혹은 복수의 "부"는 특정한 하드웨어로 구현될 필요가 있는 "모듈" 혹은 "부"를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서(미도시)로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 개시의 일 실시 예에 따른 프로세서의 구성을 나타내는 블럭도이다.
도 1에 도시된 바와 같이, 프로세서(100)는 메모리(110), 컨벌루션 연산 유닛(120) 및 컨트롤러(130)를 포함한다.
메모리(110)는 버퍼로부터 입력되는 데이터를 저장할 수 있다. 여기서, 입력 데이터는 영상 중 적어도 일부일 수 있다. 여기서, 버퍼는 스트리밍 입력 버퍼(Streaming input buffer)로서, 스트리밍 환경의 이전 단계(Stage)로부터 입력되는 데이터에 로지컬 어드레스(logical address)를 할당할 수 있다. 일 예로, 버퍼는 이전 단계로부터 입력되는 영상 내 픽셀 데이터에 라인 단위의 어드레스(address)를 할당할 수 있다.
본 개시의 일 실시 예에 따른 메모리(110)는 외부 버퍼로부터 입력되는 데이터를 저장할 수 있다. 여기서, 메모리(110)는 로지컬 어드레스에 기초하여 입력 데이터를 메모리에 저장할 수 있다.
일 실시 예에 따라, 메모리(110)는 기 설정된 개수의 라인만큼의 데이터가 저장 가능한 메모리로 구현될 수 있다. 예를 들어, 메모리(110)는 세로 방향으로 20 라인 상당의 용량에 대응되는 데이터를 저장할 수 있다. 다만, 이에 한정되는 것은 아니며 메모리의 저장 가능 용량은 다양하게 구현될 수 있음은 물론이다. 예를 들어, 1080p(1,920×1,080의 해상도)의 Full HD 영상이 입력되는 경우 Full HD 영상에서 20 라인의 영상 영역에 대응되는 픽셀 데이터가 메모리(110)에 저장될 수 있다. 하드웨어적 한계에 따라 프로세서(100) 내의 메모리(110)의 저장 가능 용량이 제한적이므로 입력된 영상 프레임 중 일부 영역 만이 메모리(110)에 저장될 수 있다.
일 예로, 종래의 프로세서가 720p(1280×720의 해상도)의 HD 영상에 대하여 Tile size 32×32(1 Pixel size는 2byte)로 영상 처리를 수행하는 경우를 상정할 수 있다. 종래의 프로세서가 내부 메모리를 이용하여 영상 처리를 수행하기 위해서는 1280×10×32×2 Byte (800KB) 크기의 상대적으로 매우 큰 내부 메모리를 구비하여야 하는 문제가 있었다.
또한, 데이터를 내부 메모리에 비해 상대적으로 크기가 큰 외부 메모리 저장하여 영상 처리를 수행한다면, 메모리 대역폭(Memory Bandwidth)이 제한적이므로 고화질(UHD), 고성능(60FPS) 영상에 대한 영상 처리에 적합하지 않다. 여기서, 데이터는 영상 처리 과정에서 생성 또는 획득되는 복수의 레이어를 의미할 수 있다.
본 개시의 일 실시 예에 따른 프로세서(100)는 내부 메모리(110)에 이전 단계(Stage)로부터 입력되는 스트리밍 데이터(Streaming Data)를 효율적으로 저장하여 외부 메모리와의 제한적인 메모리 대역폭(Memory Bandwidth)과는 독립적으로 영상 처리를 수행할 수 있다.
컨벌루션 연산 유닛(120)은 수신된 데이터 및 커널 데이터에 기초하여 컨벌루션 연산을 수행할 수 있다. 여기서, 수신된 데이터는 메모리(110)에 저장된 데이터 중 컨트롤러(130)의 제어에 따라 컨벌루션 연산 유닛(120)으로 제공된 일부 데이터일 수 있다.
커널 데이터는 DNN(Deep Neural Network) 학습(training)된 가중치(Weight) 데이터일 수 있다. 여기서, DNN은 음성처리, 이미지 처리 등을 위해 고안된 특수한 연결구조를 가진 다층신경망이다. 일 예로, DNN 중 CNN(Convolution Neural Network)은 픽셀에 전처리를 통하여 이미지를 다양하게 필터링하고, 이미지의 특성을 인식할 수 있다. 예를 들어, 커널 데이터는 Nx*Ny*Cin*Cout 데이터일 수 있다. 여기서, Cin은 네트워크의 특정 레이어의 입력 채널이고 Cout은 네트워크의 특정 레이어의 출력 채널을 의미할 수 있다. 컨벌루션 연산 유닛(120)은 메모리(110)로부터 제공된 데이터 및 커널 데이터에 기초하여 컨벌루션을 수행하여 연산 데이터를 획득할 수 있다. 커널 데이터는 필터, 가중치 매트릭스, 학습 매트릭스 등 다양하게 불릴 수 있으나, 이하에서는 설명의 편의를 위해 커널 데이터로 통칭하도록 한다. 한편, 컨벌루션 연산 유닛(120)은 프로세서 내에 마련된 컨벌루션 연산을 수행하는 연산 소자(Processing Element)를 의미할 수 있다.
본 개시의 일 실시 예에 따른 컨벌루션 연산 유닛은 제1 커널 데이터 내지 제M 커널 데이터에 기초하여 제1 연산 데이터 내지 제M 연산 데이터를 획득할 수 있다. 일 예로, 입력 데이터 및 제1 커널 데이터에 기초하여 컨벌루션 연산을 수행하고, 제1 연산 데이터를 획득할 수 있다. 또한, 제1 연산 데이터 및 제2 커널 데이터에 기초하여 컨벌루션 연산을 수행하고, 제2 연산 데이터를 획득할 수 있다. 여기서, 제1 내지 제M 커널 데이터 각각은 제1 내지 제M 필터로 불릴 수도 있다.
커널 데이터는 입력 데이터 또는 연산 데이터를 순회하며 컨벌루션 연산을 수행할 수 있다. 본 개시의 일 실시 예에 따라 제1 내지 제M 커널 데이터 각각은 상이한 크기의 행렬 형태일 수 있다. 또한, 제1 내지 제M 커널 데이터 각각은 상이한 값들로 구성될 수 있다. 본 개시의 일 실시 예에 따른 프로세서(100)는 제1 내지 제M 연산 데이터를 획득하기 위해 컨벌루션 연산을 수행함에 있어서 서로 다른 필터를 이용할 수 있다. 일 예로, 제1 연산 데이터를 획득하기 위해 컨벌루션 연산을 수행하는 경우 제1 커널 데이터를 이용하고, 제M 연산 데이터를 획득하기 위해 컨벌루션 연산을 수행하는 경우 제M 커널 데이터를 이용할 수 있다. 여기서, 제1 커널 데이터 내지 제M 커널 데이터 각각은 서로 다른 필터 세트를 의미할 수 있다.
일 실시 예에 따라, 컨벌루션 연산 유닛(120)은 획득된 연산 데이터를 컨트롤러(130)로 전송할 수 있다. 여기서, 연산 데이터는 컨벌루션 연산 유닛(120)에 의해 컨벌루션 연산이 수행된 데이터를 의미할 수 있다. 연산 데이터는 DNN에 따른 복수의 히든 레이어(Hidden layer)를 의미할 수 있다. 이하에서는, 설명의 편의를 위해 입력 레이어(Input layer)와 출력 레이어(Output layer) 사이의 제1 내지 제(M-1) 히든 레이어(Hidden layer)를 각각 제1 내지 제(M-1) 연산 데이터로 통칭하고, 출력 레이어를 제M 연산 데이터로 통칭하도록 한다.
컨트롤러(130)는 프로세서(100)의 동작을 전반적으로 제어한다.
컨트롤러(130)는 버퍼로부터 입력되는 데이터 메모리(110)에 저장할 수 있다. 본 개시의 일 실시 예에 따라, 컨트롤러(130) 메모리(130) 상에 입력 데이터가 제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 저장된 입력 데이터를 컨벌루션 연산 유닛(120)으로 제공할 수 있다. 일 예로, 제1 커널 데이터가 Nx*Ny*Cin*Cout 데이터이고 메모리(110)에 입력 데이터가 Ny개 저장되면, 컨트롤러(130)는 Ny개의 입력 데이터를 컨벌루션 연산 유닛(120)으로 제공할 수 있다.
본 개시의 일 실시 예에 따라, 컨벌루션 연산 유닛(120)는 Ny개의 입력 데이터 및 제1 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 제1 연산 데이터를 획득할 수 있다. 컨트롤러(130)는 컨벌루션 연산 유닛(120)으로부터 수신된 제1 연산 데이터를 메모리(110)에 저장할 수 있다.
컨트롤러(130)는 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 저장된 제1 연산 데이터를 컨벌루션 연산 유닛(120)으로 제공할 수 있다. 예를 들어, 제1 커널 데이터는 3×3의 매트릭스 형태이고, 제2 커널 데이터는 5×5의 매트릭스 형태일 수 있다. 즉, 제1 커널 데이터 및 제2 커널 데이터의 크기는 상이할 수도 있다. 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼(예를 들어, 5) 저장되면, 컨벌루션 연산 유닛(120)는 저장된 제1 연산 데이터 및 제2 커널 데이터를 이용하여 컨벌루션 연산을 수행하고, 제2 연산 데이터를 획득할 수 있다.
한편, 컨트롤러(130)는 제1 연산 데이터가 컨벌루션 연산 유닛(120)으로 제공된 후, 외부 버퍼로부터 입력되는 데이터를 메모리(110)에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장할 수 있다.
본 개시의 일 실시 예에 따른 컨트롤러(130)는 제1 연산 데이터를 컨벌루션 연산 유닛(120)으로 제공하고, 컨벌루션 연산 유닛(120)으로부터 제2 연산 데이터가 수신되면, 수신된 제2 연산 데이터를 메모리(110)에 저장할 수 있다. 이어서, 컨트롤러(130)는 메모리(110) 상에 제2 연산 데이터가 제3 커널 데이터에 대응되는 라인 개수만큼 저장되면, 저장된 제2 연산 데이터를 컨벌루션 연산 유닛(120)으로 제공할 수 있다.
한편, 컨트롤러(130)는 제1 연산 데이터가 컨벌루션 연산 유닛(120)으로 제공된 후 외부 버퍼로부터 입력되는 데이터가 하나의 라인 만큼 메모리(110)에 저장되면, 해당 라인을 포함하는 제1 커널 데이터에 대응되는 라인 개수만큼의 데이터를 컨벌루션 연산 유닛(120)으로 제공할 수 있다. 예를 들어, 컨트롤러(130)는 외부 버퍼로부터 새롭게 입력되는 데이터를 로지컬 어드레스에 기초하여 메모리(110)에 저장할 수 있다. 컨트롤러(130)는 새롭게 저장된 데이터가 하나의 라인만큼 저장되면, 해당 데이터를 포함하는 제1 커널 데이터에 대응되는 라인 개수 만큼의 데이터를 컨벌루션 연산 유닛(120)으로 제공할 수 있다. 일 예로, 컨트롤러(130)는 제1 커널 데이터가 5×5의 매트릭스 형태이면, 새롭게 저장된 데이터를 포함하는 5 개의 라인 만큼의 데이터를 컨벌루션 연산 유닛(120)으로 제공할 수 있다. 이어서, 컨트롤러(130)는 컨벌루션 연산 유닛(120)으로부터 제1 연산 데이터가 수신되면, 제2 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 새롭게 수신된 제1 연산 데이터를 저장할 수 있다.
본 개시의 일 실시 예에 따른 컨트롤러(130)는 컨벌루션 연산 유닛(120)의 컨벌루션 연산 횟수를 제어할 수 있다. 예를 들어, 컨트롤러(130)는 입력 데이터, 제1 연산 데이터, … , 제(M-1) 연산 데이터 등을 순차적으로 컨벌루션 연산 유닛(120)으로 제공할 수 있다. 일 실시 예에 따라, 컨벌루션 연산 유닛(120)은 컨트롤러(130)로부터 제공된 제(M-1) 연산 데이터에 컨벌루션을 수행하여 제M 연산 데이터를 획득할 수 있다. 여기서, 제M 연산 데이터는 입력 데이터(또는, 입력 레이어)에 대해 DNN을 수행하여 획득한 출력 레이어(Output layer)를 의미할 수 있다. 구체적으로, 컨벌루션 연산 유닛(120)은 입력 데이터에 컨벌루션을 수행하여 제1 연산 데이터를 획득하고, 제1 연산 데이터에 컨벌루션을 수행하여 제2 연산 데이터를 획득할 수 있다. 컨벌루션 연산 유닛(120)은 컨벌루션을 수행하여 제1 연산 데이터, … , 제(M-2) 연산 데이터, 제(M-1) 연산 데이터를 순차적으로 획득하고, 제(M-1) 연산 데이터 및 제M 커널 데이터에 기초하여 컨벌루션을 수행하여 제M 연산 데이터를 획득할 수 있다.
일 실시 예에 따라, 컨벌루션 연산 유닛(120)은 제1 내지 제M 커널 데이터 각각에 기초하여 제1 내지 제M 연산 데이터를 획득할 수 있다. 여기서, 제1 내지 제M 커널 데이터는 각각 상이한 크기 또는 형태를 가질 수 있다. 다만, 이에 한정되는 것은 아니며 컨벌루션 연산 유닛(120)은 영상 처리의 목적 등에 따라 다양한 형태의 커널 데이터를 이용하여 연산 데이터(또는, 히든 레이어)를 획득할 수도 있음은 물론이다.
본 개시의 일 실시 예에 따른 컨트롤러(130)는 제(M-1) 연산 데이터가 제M 커널 데이터에 대응되는 라인 개수만큼의 데이터가 저장되면, 제(M-1) 연산 데이터를 컨벌루션 연산 유닛(120)으로 제공할 수 있다. 컨벌루션 연산 유닛(120)으로부터 제M 연산 데이터가 수신되면, 제M 연산 데이터를 출력 버퍼로 출력할 수 있다. 여기서, 제M 연산 데이터를 연속적으로 DNN(Deep Neural Network)처리 하여 획득한 출력 레이어이다. 본 개시의 일 실시 예에 따라 입력 데이터가 영상이면, 프로세서(100)는 스트리밍(Streaming) 환경에서 영상 프레임을 연속적으로 영상 처리하여 출력할 수 있다. 여기서, 영상 처리는 NR(Noise Reduction), IPC(interlaced to progressive conversion), DE(Detail Enhancement), CE(Contrast Enhancement) 등을 의미할 수 있다. 본 개시의 일 실시 예에 따른 출력 버퍼는 스트리밍 출력 버퍼로 불릴 수 있으나, 이하에서는 설명의 편의상 출력 버퍼로 통칭하도록 한다. 출력 버퍼는 라인 형태의 Feature map output data를 입력 받을 수 있다. 여기서, Feature map output data는 제M 연산 데이터를 의미할 수 있다. 이어서, 요구되는 FPS(Frame per Second)에 기초하여 픽셀 단위로 출력할 수 있다.
한편, 본 개시의 일 실시 예에 따른 컨트롤러(130)는 제(M-1) 연산 데이터를 컨벌루션 연산 유닛(120)으로 제공하고, 제1 연산 데이터가 컨벌루션 연산 유닛(120)으로 제공된 후 버퍼로부터 입력되는 데이터에 기초한 제(M-2) 연산 데이터가 수신되면, 메모리(110)에 저장된 제(M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 수신된 제(M-2) 연산 데이터를 저장할 수 있다.
본 개시의 일 실시 예에 따른 컨트롤러(130)는 제(M-2) 연산 데이터를 포함하는 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인 만큼의 제(M-2) 연산 데이터가 컨벌루션 연산 유닛(120)으로 제공된 후, 제(M-1) 연산 데이터가 수신되면, 메모리(110)에 저장된 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 수신된 제(M-1) 연산 데이터를 저장할 수 있다. 여기서, 제(M-1) 연산 데이터는 새롭게 입력되는 데이터에 기초한 제(M-1) 연산 데이터를 포함하는 데이터를 의미할 수 있다.
컨트롤러(130)는 제(M-3) 연산 데이터가 제(M-2) 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장된 상태에서, 컨벌루션 연산 유닛(120)으로부터 수신된 제(M-2) 연산 데이터를 메모리(110)에 저장된 (M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장할 수 있다.
또한, 컨트롤러(130)는 제(M-2) 연산 데이터가 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인만큼 저장된 상태에서, 컨벌루션 연산 유닛(120)으로부터 수신된 제(M-1) 연산 데이터를 메모리(110)에 저장된 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장할 수 있다.
여기서, 메모리(110)는 Circular memory일 수 있다. 메모리(110)는 최소 상기 제1 커널 데이터 내지 제M 커널 데이터의 라인 개수에 대응되는 라인만큼 저장 가능할 수 있다.
또한, 컨트롤러(130)는 가장 먼저 저장된 데이터가 저장된 위치에 새로운 데이터가 저장되도록 메모리(110)를 제어할 수 있다. 제한적인 크기를 가지는 메모리(110)에 순환 구조로 데이터가 저장될 수 있다. 한편, 도 1에 도시된 메모리(110)는 SRAM 등과 같이 프로세서(100)에 마련된 저장 공간을 의미할 수 있다.
도 2는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 나타내는 블록도이다.
도 2에 도시된 바와 같이, 전자 장치(1000)는 프로세서(100) 및 버퍼(200)를 포함한다. 프로세서(100)의 구성은 도 1에서 설명한 바와 동일하므로 중복되는 설명은 생략한다.
전자 장치(1000)는 입력 데이터에 DNN 처리가 가능한 장치일 수 있다. 예를 들어, 사용자 단말 장치, 디스플레이 장치, 셋톱 박스(set-top box), 태블릿 PC(tablet personal computer), 스마트 폰(smart phone), 전자책 리더기(e-book reader), 데스크탑 PC (desktop PC), 랩탑 PC(laptop PC), 워크스테이션(workstation), 서버, PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어 등일 수 있다. 또는, 전자 장치(100)는 클라우딩 컴퓨팅 환경이 구축된 시스템 자체를 의미할 수도 있다. 다만, 이에 한정되는 것은 아니며, 전자 장치(1000)는 인공 지능 학습이 가능한 장치라면 어떤 장치라도 무방하다.
버퍼(200)는 프로세서(100)의 일 측과 연결되어 입력 데이터를 버퍼링하여 프로세서(100)로 제공할 수 있다. 다른 예에 따른 버퍼(200)는 프로세서(100)의 타 측과 연결되어 프로세서(100)가 출력하는 연산 데이터(또는, 출력 레이어)를 버퍼링하여 전자 장치(1000) 내의 다른 구성 요소로 제공할 수 있다.
특히, 버퍼(200)는 메모리 어드레스 정보를 포함하지 않는 Feature map data를 픽셀 단위로 입력 받을 수 있다. 버퍼(200)는 입력되는 픽셀을 컨벌루션 연산을 수행하기 위한 라인 단위로 그룹핑할 수 있다. 이어서, 버퍼(200)는 데이터에 라인 단위의 로지컬 어드레스를 할당할 수 있다. 프로세서(100)는 버퍼(200)로부터 입력되는 데이터를 로지컬 어드레스에 기초하여 메모리(130)에 저장할 수 있다.
일 예로, 버퍼(200)는 픽셀 단위로 입력되는 데이터를 컨벌루션 연산 처리 단위인 라인 단위로 버퍼링할 수 있다. 이어서, 버퍼(200)는 픽셀 데이터로 라인이 형성되면, 로지컬 어드레스를 할당하여 프로세서(100)로 제공할 수 있다. 프로세서(100)는 로지컬 어드레스에 기초하여 입력 데이터를 저장할 수 있다. 한편, 본 개시의 일 실시 예에 따른 버퍼(200)는 스트리밍 입력 버퍼로 불릴 수 있으나, 이하에서는 설명의 편의상 버퍼(200)로 통칭하도록 한다. 버퍼(200)가 전자 장치(1000) 내의 다른 구성 요소로 연산 데이터를 제공하는 구체적인 실시 예는 도 4에서 설명하도록 한다.
프로세서(100)는 전자 장치(1000)의 동작을 전반적으로 제어한다.
일 실시 예에 따라 프로세서(100)는 디지털 시그널 프로세서(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 프로세서 중 하나 또는 그 이상을 포함하거나, 해당 용어로 정의될 수 있다. 또한, 프로세서(100)는 프로세싱 알고리즘이 내장된 SoC(System on Chip), LSI(large scale integration)로 구현될 수도 있고, FPGA(Field Programmable gate array) 형태로 구현될 수도 있다.
한편, 본 개시의 일 실시 예에 따른 전자 장치(1000)는 프로세서(100) 외부에 메모리(미도시)를 포함할 수 있다. 외부 메모리는 프로세서(100)와 연결되며, 프로세서(100)로부터 데이터를 입력받거나, 프로세서(100)로 데이터를 출력할 수 있다.
일 실시 예에 따라, 외부 메모리는 입력 데이터 및 컨벌루션 연산 정보를 저장할 수도 있다. 여기서, 입력 데이터는 영상 데이터일 수 있다. 메모리로부터 수신된 영상 데이터를 구성하는 영상 프레임은 후술하는 바와 같이 버퍼(200)를 통해 버퍼링되어 프로세서(100)로 제공될 수 있다.
일 실시 예에 따라 프로세서(100)는 DNN(Deep Neural Network) 학습(training)된 커널 데이터를 저장할 수 있다. 예를 들어, 전자 장치(1000)는 제1 내지 제M 커널 데이터를 이용하여 컨벌루션을 수행하고, 입력 데이터에 대한 복수의 히든 레이터를 통해 최종 출력 레이어를 획득할 수 있다. 여기서, 출력 레이어는 영상 처리된 데이터를 의미할 수 있고, 출력 레이어는 다음 단계(Stage)로 제공될 수 있다.
또한, 프로세서(100)는 컨벌루션 연산 정보를 저장할 수 있다. 여기서, 컨벌루션 연산 정보는 컨벌루션 연산의 수행 횟수 등에 대한 정보를 포함할 수 있다. 프로세서(100)는 메모리에 컨벌루션 연산 정보에 기초하여 입력 데이터에 컨벌루션을 수행할 수 있다.
도 3은 본 개시의 일 실시 예에 따른 컨벌루션을 설명하기 위한 도면이다.
본 개시의 일 실시 예에 따른 프로세서(100)는 라인 단위로 수신되는 입력 데이터에 컨벌루션을 수행하여 연산 데이터를 획득하고, 연산 데이터를 출력할 수 있다.
도 3에 도시된 바와 같이, 컨트롤러(130)는 버퍼(200)로부터 입력되는 데이터(10)를 메모리(110)에 저장할 수 있다. 입력 데이터(10)가 제1 커널 데이터(11)의 라인 개수에 대응되는 라인 만큼 저장되면, 입력 데이터(10)를 컨벌루션 연산 유닛(120)으로 제공하고, 제1 연산 데이터(20)를 획득할 수 있다.
일 예로, 제1 커널 데이터(11)가 3×3이고, 입력 데이터(10)가 3개의 라인 만큼 메모리(110)에 저장되면, 프로세서(100)는 입력 데이터(10) 및 제1 커널 데이터(11)에 기초하여 하나의 제1 연산 데이터(20)를 획득할 수 있다. 도 3을 참조하면, 입력 데이터(10)가 메모리(110) 상에 저장됨에 따라 a2, a3, a4 라인이 형성되면, 프로세서(100)는 제1 커널 데이터를 이용하여 컨벌루션을 수행하고, 제1 연산 데이터(20) O3를 획득할 수 있다. 한편, 제1 커널 데이터(11)는 일 예시일 뿐, 프로세서(100)는 다양한 형태의 커널 데이터를 이용하여 컨벌루션을 수행할 수 있음은 물론이다.
도 4는 종래 기술의 문제점을 설명하기 위한 도면이다.
도 4에 도시된 바와 같이 입력 데이터는 복수의 스테이지(Stage) 각각을 통과하면서 영상 처리될 수 있다. 특히, 각 스테이지는 입력 데이터에 NR(Noise Reduction), IPC(interlaced to progressive conversion), DE(Detail Enhancement), CE(Contrast Enhancement) 중 적어도 하나에 대응되는 영상 처리를 수행할 수 있다.
본 개시의 일 실시 예에 따라 특정 스테이지에서 입력 데이터에 영상 처리를 수행함에 있어서 DNN을 이용하는 경우를 상정할 수 있다.
종래의 프로세서는 Stage 2에서 출력된 데이터가 다음 Stage(Stage 3)으로 제공된다. 이어서, Stage 3에서 영상 처리를 수행함에 있어서, 프로세서(100)는 내부에 구비된 메모리의 용량이 제한적이므로 입력 데이터에 컨벌루션을 수행함에 따라 생성되는 다중 레이어를 외부 메모리(Ext. Dram)에 저장하였다. 외부 메모리와 데이터를 송수신하는 대역폭이 제한적이므로 프로세서(100)가 컨벌루션 연산에 요구되는 시간이 증가하거나 다중 레이어를 생성할 수 없는 문제점이 있었다. 또한, 고화질의 영상 처리에 부적합하였다.
본 개시의 일 실시 예에 따른 프로세서(100)는 컨벌루션 연산에 따라 생성되는 다중 레이어를 메모리(110)에 효율적으로 저장할 수 있다.
이하에서는 프로세서(100)가 컨벌루션 연산을 수행함에 따라 다중 레이어가 생성되는 실시 예를 설명하도록 한다.
도 5는 본 개시의 일 실시 예에 따른 DNN(Deep Neural Network)를 설명하기 위한 도면이다.
도 5를 참조하면, 입력 데이터(10)를 메모리(110)에 저장하고, 입력 데이터(10)가 제1 커널 데이터(11)의 라인 개수에 대응되는 라인 만큼 저장되면, 프로세서(100)는 입력 데이터(10)에 컨벌루션을 수행할 수 있다. 도 5에 도시된 바와 같이, 입력 데이터(10) I4, I5, I6에 컨벌루션을 수행하여 제1 연산 데이터(20) a4를 획득할 수 있다. 설명의 편의를 위해 제1 내지 제M 커널 데이터가 3×3인 경우를 상정하여 설명하였으나, 이에 한정되는 것은 아니며 프로세서(100)는 다양한 크기의 커널 데이터에 기초하여 컨벌루션을 수행할 수 있다. 일 예로, 제1 커널 데이터가 3×3 형태의 매트릭스이고 입력 데이터(10)가 3개의 라인 만큼 메모리(110) 상에 저장되면, 프로세서(100)는 입력 데이터(10) 및 제1 커널 데이터에 기초하여 컨벌루션을 수행하고, 제1 연산 데이터(20)를 획득할 수 있다.
프로세서(100)는 제1 연산 데이터(20)가 제2 커널 데이터에 대응되는 라인 개수만큼 획득되면, 제1 연산 데이터(20)에 컨벌루션을 수행하고, 제2 연산 데이터(30)를 획득할 수 있다. 도 5에 도시된 바와 같이 제1 연산 데이터(20) a3, a4, a5에 컨벌루션을 수행하여 제2 연산 데이터(30) b4를 획득할 수 있다. 여기서, 제2 커널 데이터는 제1 커널 데이터와는 상이한 크기를 가질 수 있다. 일 예로, 제2 커널 데이터가 5×5 형태의 매트릭스이면, 제1 연산 데이터(20) a3 내지 a7에 컨벌루션을 수행하여 제2 연산 데이터(30)를 획득할 수 있다.
본 개시의 일 실시 예에 따라 프로세서(100)는 제2 연산 데이터(30) b2, b3, b4와 제3 커널 데이터에 기초하여 컨벌루션을 수행하고, 제3 연산 데이터 (또는, 출력 데이터)(30) O3를 획득할 수 있다. 프로세서(100)는 제3 연산 데이터(30) O1 내지 O9를 획득 및 출력할 수 있다.
여기서, 프로세서(100)가 제3 연산 데이터(30)를 획득하기 위해 프로세서(100)에 구비된 메모리(110)는 입력 데이터(10), 제1 연산 데이터(20) 및 제2 연산 데이터(30) 각각을 저장할 수 있다. 종래의 프로세서는 입력 데이터(10), 제1 연산 데이터(20) 및 제2 연산 데이터(30)를 모두 저장하기에는 프로세서에 구비된 내부 메모리의 용량(또는, 크기)이 제한적이므로, 외부 메모리에 데이터, 히든 레이어 등을 저장하여야 했으며, 다중 레이어 획득이 어려운 문제가 있었다.
도 6 및 도7은 본 개시의 일 실시 예에 따른 메모리를 설명하기 위한 도면이다.
프로세서(100)는 버퍼로부터 입력되는 데이터(10)를 메모리(110)에 저장하고, 입력 데이터(10)가 제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 저장된 입력 데이터(10)에 컨벌루션 연산을 수행하여 제1 연산 데이터(20)를 획득 및 저장할 수 있다.
프로세서(100)는 제1 연산 데이터(20)가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 저장된 제1 연산 데이터(20)에 컨벌루션 연산을 수행하여 제2 연산 데이터(30)를 획득 및 저장할 수 있다.
예를 들어, 프로세서(100)는 입력 데이터(10) I1, I2, I3 및 제1 커널 데이터에 기초하여 컨벌루션을 수행하여 제1 연산 데이터(20) a1을 획득하고, 제1 연산 데이터(20) a1, a2, a3 및 제2 커널 데이터에 기초하여 컨벌루션을 수행하여 제2 연산 데이터(30) b1을 획득할 수 있다. 여기서, 메모리(110)는 I1, I2, I3, a1, a2, a3, b1을 저장할 수 있다.
메모리(110)에는 입력 데이터(10), 제1 연산 데이터(20) 및 제2 연산 데이터(30)가 저장될 수 있다. 예를 들어, 메모리(110)의 저장 공간을 라인으로 표현하면, 제1 내지 제3 라인에 저장된 입력 데이터(10) I4, I5, I6에 컨벌루션 연산을 수행하여 제1 연산 데이터(20) a5를 획득 및 저장하고, 제4 내지 제6 라인에 저장된 제1 연산 데이터(20) a3, a4, a5에 컨벌루션 연산을 수행하여 제2 연산 데이터(30) b4를 획득 및 저장할 수 있다. 도6에 도시된 바와 같이, 메모리(110)는 입력 데이터(10) I4, I5, I6, 제1 연산 데이터(20) a3, a4, a5, 제2 연산 데이터(30) b2, b3, b4를 저장할 수 있다. 여기서, 라인은 프로세서(100)가 로지컬 어드레스에 기초하여 메모리(110) 상에 데이터를 저장함에 따라 형성되는 데이터 처리 단위를 의미할 수 있다.
한편, 프로세서(100)가 제1 연산 데이터에 컨벌루션 연산을 수행하여 제2 연산 데이터를 획득한 후, 버퍼로부터 입력되는 새로운 데이터를 메모리(110) 상에 저장하는 경우를 상정할 수 있다.
도 6을 참조하면, 메모리(110)의 제1 내지 제9 라인 각각에 입력 데이터 또는 연산 데이터가 저장되어 있으면, 버퍼로부터 새롭게 입력되는 데이터는 제1 내지 제9 라인 중 어느 하나의 라인에 저장될 수 있다.
도 6 및 도7에 도시된 바와 같이, 프로세서(100)가 제1 연산 데이터(20) a3, a4, a5에 컨벌루션을 수행한 뒤 다음 라인의 입력 데이터(10) I7이 수신되면, 프로세서(100)는 메모리(110)에 저장된 제1 연산 데이터(20) 중 가장 먼저 저장된 데이터 a3가 저장된 위치에 버퍼로부터 새롭게 입력되는 데이터(10) I7를 저장할 수 있다.
본 개시의 일 실시 예에 따른 프로세서(100)는 제2 연산 데이터(30) b2, b3, b4에 컨벌루션을 수행한 뒤 새롭게 입력되는 데이터(10) I7을 포함하는 3개 라인의 입력 데이터(10) I5, I6, I7에 컨벌루션을 수행함에 따라 제1 연산 데이터(20) a6를 획득하면, 제2 연산 데이터(30) b2, b3, b4 중 가장 먼저 저장된 데이터 b2가 저장된 위치에 제1 연산 데이터(20) a6를 저장할 수 있다.
도 7을 참조하면, 본 개시의 일 실시 예에 따른 프로세서(100)는 제2 연산 데이터(30)가 N-1개 즉, 2개의 라인만큼 저장된 상태에서 제1 연산 데이터(20) a4, a5, a6에 컨벌루션 연산을 수행하여 제2 연산 데이터(30) b5(30-1)를 획득하면, 제2 연산 데이터(30) b5(30-1)를 1번째 라인에 저장할 수 있다. 1번째 라인에 저장된 입력 데이터(10) I4는 제2 연산 데이터(30) b5(30-1)로 대체될 수 있다. 구체적으로, 프로세서(100)는 입력 데이터(10)로부터 형성된 라인 I5, I6, I7에 컨벌루션 연산을 수행하여 제1 연산 데이터(20) a6를 획득할 수 있다. 이어서, 제1 연산 데이터(20) a4, a5, a6에 컨벌루션 연산을 수행하여 제2 연산 데이터(30) b5(30-1)를 획득할 수 있다. 여기서, 제2 연산 데이터(30) b5(30-1)는 메모리(110)를 라인 단위로 구분하였을 때, 제2 연산 데이터(30) b4의 다음 라인에 저장될 수 없다. 따라서, 프로세서(100)는 제2 연산 데이터(30) b5(30-1)를 메모리(100)를 라인 단위로 구분하였을 때, 1번째 라인에 저장할 수 있다. 일 예로, 1번째 라인에 저장되어 있었던 입력 데이터로부터 형성된 라인 I4는 제2 연산 데이터(30) b5(30-1)로 대체될 수 있다. 이어서, 버퍼로부터 입력되는 새로운 데이터는 제1 연산 데이터(20) a4의 위치에 저장되어 라인 I8이 형성될 수 있다.
본 개시의 일 실시 예에 따라 프로세서(100)는 버퍼로부터 새롭게 입력되는 데이터가 메모리(110) 상에 저장됨에 따라 라인 I8이 형성되면, 메모리(110)에 저장된 제1 연산 데이터(20) a4, a5, a6 중 가장 먼저 저장된 데이터 a4가 저장된 위치에 입력 데이터(10) I8을 저장할 수 있다.
프로세서(100)는 입력 데이터(10) I6, I7, I8에 컨벌루션 연산을 수행하여 제1 연산 데이터(20) a7을 획득하고, 제1 연산 데이터(20) a7을 제2 연산 데이터(20) b3, b4, b5 중 가장 먼저 저장된 데이터 b3가 저장된 위치에 제1 연산 데이터(10) a7을 저장할 수 있다. 이와 같이, 버퍼로부터 새롭게 입력되는 데이터가 하나의 라인을 형성하면, 해당 라인을 포함하는 입력 데이터 및 제1 커널 데이터에 기초하여 제1 연산 데이터(20)를 획득하고, 제1 연산 데이터(20)로부터 제2 연산 데이터(30)를 순차적으로 획득할 수 있다.
일 실시 예에 따라 입력 데이터(10), 제1 연산 데이터(20), ... , 제(M-1) 연산 데이터는 메모리(110)에 순환 구조로 저장될 수 있다. 예를 들어, 메모리(110)는 Circular memory로 구현될 수 있다.
일 실시 예에 따른 프로세서(100)는 컨트롤러는, 제(M-3) 연산 데이터가 제(M-2) 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장된 상태에서, 컨벌루션 연산 유닛(120)으로부터 수신된 제(M-2) 연산 데이터를 메모리(110)에 저장된 (M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하고, 제(M-2) 연산 데이터가 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인만큼 저장된 상태에서, 컨벌루션 연산 유닛(120)으로부터 수신된 제(M-1) 연산 데이터를 메모리(110)에 저장된 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장할 수 있다.
도 8은 본 개시의 다른 실시 예에 따른 메모리를 설명하기 위한 도면이다.
도 8의 (a) 및 (b)를 참조하면, 제2 커널 데이터가 3×3 형태의 매트릭스이면, 프로세서(100)는 제1 연산 데이터(20)가 3개의 라인만큼 저장된 상태에서 제1 연산 데이터(20) a3, a4, a5 및 제2 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 제2 연산 데이터(30) b4를 획득할 수 있다. 이어서, 제3 커널 데이터가 3×3 형태의 매트릭스이면, 제2 연산 데이터(30) b2, b3, b4 및 제3 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 제3 연산 데이터(40) c3을 획득할 수 있다.
일 실시 예에 따라, 입력 데이터에 대해 컨벌루션 연산을 수행하여 제1 내지 제3 연산 데이터를 획득하고, 최종적으로 제4 연산 데이터를 획득할 수 있다. 여기서, 제4 연산 데이터는 출력 데이터(또는, 출력 레이어)이고, 버퍼로 출력될 수 있다. 예를 들어, 제3 연산 데이터(40) c1, c2, c3 및 제4 커널 데이터에 기초하여 제4 연산 데이터 O1를 획득하고, 제4 연산 데이터 O1은 버퍼로 출력될 수 있다.
도 8의 (b)를 참조하면, 프로세서(100)는 버퍼로부터 새롭게 입력되는 데이터가 메모리(110)에 저장됨에 따라 하나의 라인 I7이 형성되면, 입력 데이터(10) I5, I6, I7 및 제1 커널 데이터에 기초하여 제1 연산 데이터(20) a6를 획득할 수 있다. 일 실시 예에 따라 프로세서(100)는 제1 연산 데이터(20) a6를 메모리(110)에 저장된 제2 연산 데이터(20) b2, b3, b4 중 가장 먼저 저장된 데이터 b2에 덮어 씌워질 수 있다. 또한, 일 실시 예에 따른 새롭게 획득된 제(M-1) 연산 데이터는 메모리(110)에 저장된 입력 데이터 중 가장 먼저 저장된 데이터에 저장될 수 있다. 도 8의 (b)를 참조하면, 새롭게 획득된 제3 연산 데이터(40) c4(40-1)는 입력 데이터(10) I4가 저장된 위치에 저장될 수 있다.
본 개시의 일 실시 예에 따른 프로세서(100)에 구비된 메모리(110)는 제1 커널 데이터 내지 제M 커널 데이터의 라인 개수에 대응되는 라인만큼의 데이터가 저장될 수 있다. 일 실시 예에 따라 버퍼로부터 새롭게 입력되는 데이터는 메모리(110)에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터에 저장되고, 새롭게 획득된 제(M-2) 연산 데이터는 제(M-1) 연산 데이터 중 가장 먼저 저장된 데이터에 저장될 수 있다. 즉, 메모리(110)는, Circular memory로서, 도 8에 도시된 바와 같이 입력 데이터, 제1 내지 제(M-1) 연산 데이터가 순환적으로 메모리(110) 상에 저장될 수 있다.
일 실시 예에 따라, 프로세서(100)에 구비된 메모리(110)의 크기가 제한적임에도 불구하고, DNN을 통한 영상 처리를 수행함에 있어서 획득되는 복수의 히든 레이어, 연산 데이터를 외부 메모리가 아닌 내부 메모리(110)에 저장할 수 있다. 프로세서(100)는 외부 메모리와의 대역폭 등에 제한없이 영상 처리를 수행할 수 있다. 일 실시 예에 따른 프로세서(100)는 고화질(예를 들어, 4K), 고성능(60FPS)의 영상에 대해서도 내부 메모리(110)만을 이용하여 DNN를 수행할 수도 있다.
도 9는 본 개시의 일 실시 예에 따른 프로세서의 제어 방법을 설명하기 위한 흐름도이다.
본 개시의 일 실시 예에 따른 제어 방법은, 메모리 및 컨벌루션 연산 유닛을 포함하는 프로세서의 제어 방법은, 버퍼로부터 입력되는 데이터가 제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 저장된 입력 데이터를 컨벌루션 연산 유닛으로 제공할 수 있다(S910). 이어서, 컨벌루션 연산 유닛으로부터 제1 연산 데이터가 수신되면, 수신된 제1 연산 데이터를 메모리에 저장할 수 있다(S920). 이어서, 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 저장된 제1 연산 데이터를 컨벌루션 연산 유닛으로 제공할 수 있다(S930).
이어서, 제1 연산 데이터가 컨벌루션 연산 유닛으로 제공된 후 버퍼로부터 입력되는 데이터를 메모리에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장할 수 있다(S940).
일 실시 예에 따른 제어 방법은, 제1 연산 데이터를 컨벌루션 연산 유닛으로 제공하고, 컨벌루션 연산 유닛으로부터 제2 연산 데이터가 수신되면, 수신된 제2 연산 데이터를 메모리에 저장하는 단계, 제2 연산 데이터가 제3 커널 데이터에 대응되는 라인 개수만큼 저장되면, 저장된 제2 연산 데이터를 컨벌루션 연산 유닛으로 제공하는 단계, 제1 연산 데이터가 컨벌루션 연산 유닛으로 제공된 후 버퍼로부터 입력되는 입력 데이터가 하나의 라인 만큼 메모리에 저장되면, 해당 라인을 포함하는 제1 커널 데이터에 대응되는 라인 개수만큼의 데이터를 컨벌루션 연산 유닛으로 제공하는 단계 및 제1 연산 데이터가 수신되면, 제2 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 수신된 제1 연산 데이터를 저장하는 단계를 포함할 수 있다.
여기서, 메모리는, 최소 제1 커널 데이터 내지 제M 커널 데이터의 라인 개수에 대응되는 라인만큼 저장 가능할 수 있다.
여기서, 일 실시 예에 따른 제어 방법은, 제(M-1) 연산 데이터가 컨벌루션 연산 유닛으로 제공하는 단계, 제1 연산 데이터가 컨벌루션 연산 유닛으로 제공된 후 버퍼로부터 입력되는 데이터에 기초한 제(M-2) 연산 데이터가 수신되면, 제(M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 수신된 제(M-2) 연산 데이터를 저장하는 단계 및 제(M-2) 연산 데이터를 포함하는 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인 만큼의 제(M-2) 연산 데이터가 컨벌루션 연산 유닛으로 제공된 후, 제(M-1) 연산 데이터가 수신되면, 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 수신된 제(M-1) 연산 데이터를 저장하는 단계를 포함할 수 있다.
또한, 일 실시 예에 따른 제어 방법은, 제(M-1) 연산 데이터가 제M 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 제(M-1) 연산 데이터를 컨벌루션 연산 유닛으로 제공하고, 컨벌루션 연산 유닛으로부터 수신된 제M 연산 데이터를 출력 버퍼로 출력하는 단계를 포함할 수 있다.
또한, 제(M-3) 연산 데이터가 제(M-2) 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장된 상태에서, 컨벌루션 연산 유닛으로부터 수신된 제(M-2) 연산 데이터를 메모리에 저장된 (M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는 단계, 제(M-2) 연산 데이터가 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인만큼 저장된 상태에서, 컨벌루션 연산 유닛으로부터 수신된 제(M-1) 연산 데이터를 메모리에 저장된 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는 단계를 포함할 수 있다.
일 실시 예에 따른 메모리는, Circular memory일 수 있다.
또한, 일 실시 예에 따른 제어 방법은, 버퍼로부터 입력되는 데이터는 로지컬 어드레스(logical address)를 포함하고, 입력 데이터를 컨벌루션 연산 유닛으로 제공하는 S910 단계는, 로지컬 어드레스에 기초하여 입력 데이터를 메모리에 저장하는 단계를 포함할 수 있다.
한편, 이상에서 설명된 다양한 실시 예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에서 구현될 수 있다. 일부 경우에 있어 본 명세서에서 설명되는 실시 예들이 프로세서 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 작동을 수행할 수 있다.
한편, 상술한 본 개시의 다양한 실시 예들에 따른 처리 동작을 수행하기 위한 컴퓨터 명령어(computer instructions)는 비일시적 컴퓨터 판독 가능 매체(non-transitory computer-readable medium) 에 저장될 수 있다. 이러한 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 명령어는 프로세서에 의해 실행되었을 때 상술한 다양한 실시 예에 따른 처리 동작을 특정 기기가 수행하도록 할 수 있다.
비일시적 컴퓨터 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 비일시적 컴퓨터 판독 가능 매체의 구체적인 예로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 있을 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시에 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100: 프로세서 110: 메모리
120: 컨벌루션 연산 유닛 130: 컨트롤러

Claims (18)

  1. 메모리;
    컨벌루션 연산 유닛; 및
    버퍼로부터 입력되는 데이터가 제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 상기 메모리에 저장되면, 상기 저장된 입력 데이터를 상기 컨벌루션 연산 유닛으로 제공하고,
    상기 컨벌루션 연산 유닛으로부터 제1 연산 데이터가 수신되면, 상기 수신된 제1 연산 데이터를 상기 메모리에 저장하고,
    상기 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 컨트롤러;를 포함하며,
    상기 컨벌루션 연산 유닛은,
    상기 입력 데이터 및 제1 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 상기 제1 연산 데이터를 획득하고,
    상기 제1 연산 데이터 및 제2 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 제2 연산 데이터를 획득하고,
    상기 컨트롤러는,
    상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터를 상기 메모리에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는, 프로세서.
  2. 제1항에 있어서,
    상기 컨트롤러는,
    상기 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 상기 제2 연산 데이터가 수신되면, 상기 수신된 제2 연산 데이터를 상기 메모리에 저장하고, 상기 제2 연산 데이터가 제3 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제2 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고,
    상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터가 하나의 라인 만큼 상기 메모리에 저장되면, 해당 라인을 포함하는 상기 제1 커널 데이터에 대응되는 라인 개수만큼의 데이터를 상기 컨벌루션 연산 유닛으로 제공하고,
    상기 제1 연산 데이터가 수신되면, 상기 제2 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제1 연산 데이터를 저장하는, 프로세서.
  3. 제2항에 있어서,
    상기 메모리는,
    최소 상기 제1 커널 데이터 내지 제M 커널 데이터의 라인 개수에 대응되는 라인만큼 저장 가능한, 프로세서.
  4. 제3항에 있어서,
    상기 컨트롤러는,
    제(M-1) 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고,
    상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터에 기초한 제(M-2) 연산 데이터가 수신되면, 상기 제(M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제(M-2) 연산 데이터를 저장하고,
    상기 제(M-2) 연산 데이터를 포함하는 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인 만큼의 제(M-2) 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후, 제(M-1) 연산 데이터가 수신되면, 상기 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제(M-1) 연산 데이터를 저장하는, 프로세서.
  5. 제4항에 있어서,
    상기 컨트롤러는,
    제(M-1) 연산 데이터가 상기 제M 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 상기 제(M-1) 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 수신된 제M 연산 데이터를 출력하는, 프로세서.
  6. 제3항에 있어서,
    상기 컨트롤러는,
    제(M-3) 연산 데이터가 제(M-2) 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장된 상태에서, 상기 컨벌루션 연산 유닛으로부터 수신된 제(M-2) 연산 데이터를 상기 메모리에 저장된 제(M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하고,
    상기 제(M-2) 연산 데이터가 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인만큼 저장된 상태에서, 상기 컨벌루션 연산 유닛으로부터 수신된 제(M-1) 연산 데이터를 상기 메모리에 저장된 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는, 프로세서.
  7. 제6항에 있어서,
    상기 메모리는, Circular memory인, 프로세서.
  8. 제1항에 있어서,
    상기 버퍼로부터 입력되는 상기 데이터는 로지컬 어드레스(logical address)를 포함하고,
    상기 컨트롤러는,
    상기 로지컬 어드레스에 기초하여 상기 입력 데이터를 상기 메모리에 저장하는, 프로세서.
  9. 입력 데이터를 라인 단위로 그룹핑하여 로지컬 어드레스를 할당하는 버퍼; 및
    메모리 및 컨벌루션 연산 유닛을 포함하는 프로세서;를 포함하며,
    상기 프로세서는,
    상기 버퍼로부터 입력되는 데이터를 상기 로지컬 어드레스에 기초하여 저장하고,
    상기 데이터가 제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 상기 저장된 입력 데이터를 상기 컨벌루션 연산 유닛으로 제공하고,
    상기 컨벌루션 연산 유닛으로부터 제1 연산 데이터가 수신되면, 상기 수신된 제1 연산 데이터를 상기 메모리에 저장하고,
    상기 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하며,
    상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후, 상기 버퍼로부터 입력되는 데이터를 상기 메모리에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는, 전자 장치.
  10. 제9항에 있어서,
    상기 컨벌루션 연산 유닛은,
    상기 입력 데이터 및 상기 제1 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 상기 제1 연산 데이터를 획득하고,
    상기 제1 연산 데이터 및 상기 제2 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 상기 제2 연산 데이터를 획득하는, 전자 장치.
  11. 메모리 및 컨벌루션 연산 유닛을 포함하는 프로세서의 제어 방법에 있어서,
    버퍼로부터 입력되는 데이터가 제1 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 상기 저장된 입력 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계;
    상기 입력 데이터 및 상기 제1 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 제1 연산 데이터를 획득하는 단계;
    상기 컨벌루션 연산 유닛으로부터 상기 제1 연산 데이터가 수신되면, 상기 수신된 제1 연산 데이터를 상기 메모리에 저장하는 단계;
    상기 제1 연산 데이터가 제2 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계; 및
    상기 제1 연산 데이터 및 상기 제2 커널 데이터에 기초하여 컨벌루션 연산을 수행하여 제2 연산 데이터를 획득하는 단계;를 포함하고,
    상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터를 상기 메모리에 저장된 제1 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는 단계;를 더 포함하는, 제어 방법.
  12. 제11항에 있어서,
    상기 제1 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 상기 제2 연산 데이터가 수신되면, 상기 수신된 제2 연산 데이터를 상기 메모리에 저장하는 단계;
    상기 제2 연산 데이터가 제3 커널 데이터에 대응되는 라인 개수만큼 저장되면, 상기 저장된 제2 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계;
    상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 입력 데이터가 하나의 라인 만큼 상기 메모리에 저장되면, 해당 라인을 포함하는 상기 제1 커널 데이터에 대응되는 라인 개수만큼의 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계; 및
    상기 제1 연산 데이터가 수신되면, 상기 제2 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제1 연산 데이터를 저장하는 단계;를 포함하는, 제어 방법.
  13. 제12항에 있어서,
    상기 메모리는,
    최소 상기 제1 커널 데이터 내지 제M 커널 데이터의 라인 개수에 대응되는 라인만큼 저장 가능한, 제어 방법.
  14. 제13항에 있어서,
    제(M-1) 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공하는 단계;
    상기 제1 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후 상기 버퍼로부터 입력되는 데이터에 기초한 제(M-2) 연산 데이터가 수신되면, 상기 제(M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제(M-2) 연산 데이터를 저장하는 단계; 및
    상기 제(M-2) 연산 데이터를 포함하는 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인 만큼의 제(M-2) 연산 데이터가 상기 컨벌루션 연산 유닛으로 제공된 후, 제(M-1) 연산 데이터가 수신되면, 상기 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 상기 수신된 제(M-1) 연산 데이터를 저장하는 단계;를 포함하는, 제어 방법.
  15. 제14항에 있어서,
    제(M-1) 연산 데이터가 상기 제M 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장되면, 상기 제(M-1) 연산 데이터를 상기 컨벌루션 연산 유닛으로 제공하고, 상기 컨벌루션 연산 유닛으로부터 수신된 제M 연산 데이터를 출력 하는 단계;를 포함하는, 제어 방법.
  16. 제13항에 있어서,
    제(M-3) 연산 데이터가 제(M-2) 커널 데이터의 라인 개수에 대응되는 라인 만큼 저장된 상태에서, 상기 컨벌루션 연산 유닛으로부터 수신된 제(M-2) 연산 데이터를 상기 메모리에 저장된 (M-1) 연산 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는 단계;
    상기 제(M-2) 연산 데이터가 제(M-1) 커널 데이터의 라인 개수에 대응되는 라인만큼 저장된 상태에서, 상기 컨벌루션 연산 유닛으로부터 수신된 제(M-1) 연산 데이터를 상기 메모리에 저장된 입력 데이터 중 가장 먼저 저장된 데이터가 저장된 위치에 저장하는 단계;를 포함하는, 제어 방법.
  17. 제11항에 있어서,
    상기 메모리는, Circular memory인, 제어 방법.
  18. 제11항에 있어서,
    상기 버퍼로부터 입력되는 상기 데이터는 로지컬 어드레스(logical address)를 포함하고,
    상기 입력 데이터를 상기 컨벌루션 연산 유닛으로 제공하는 단계는,
    상기 로지컬 어드레스에 기초하여 상기 입력 데이터를 상기 메모리에 저장하는 단계;를 포함하는, 제어 방법.
KR1020180125239A 2018-05-30 2018-10-19 프로세서, 전자 장치 및 그 제어 방법 KR20190140808A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP19810582.7A EP3746951A4 (en) 2018-05-30 2019-05-30 PROCESSOR, ELECTRONIC APPARATUS AND ASSOCIATED CONTROL PROCESS
PCT/KR2019/006493 WO2019231254A1 (en) 2018-05-30 2019-05-30 Processor, electronics apparatus and control method thereof
US16/426,325 US11244027B2 (en) 2018-05-30 2019-05-30 Processor, electronics apparatus and control method thereof
CN201980035810.1A CN112204585A (zh) 2018-05-30 2019-05-30 处理器、电子装置及其控制方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180062167 2018-05-30
KR20180062167 2018-05-30

Publications (1)

Publication Number Publication Date
KR20190140808A true KR20190140808A (ko) 2019-12-20

Family

ID=69063012

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180125239A KR20190140808A (ko) 2018-05-30 2018-10-19 프로세서, 전자 장치 및 그 제어 방법

Country Status (3)

Country Link
EP (1) EP3746951A4 (ko)
KR (1) KR20190140808A (ko)
CN (1) CN112204585A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021261667A1 (ko) * 2020-06-22 2021-12-30 주식회사 퓨리오사에이아이 뉴럴네트워크 프로세서

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5184824B2 (ja) * 2007-06-15 2013-04-17 キヤノン株式会社 演算処理装置及び方法
JP5368687B2 (ja) * 2007-09-26 2013-12-18 キヤノン株式会社 演算処理装置および方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021261667A1 (ko) * 2020-06-22 2021-12-30 주식회사 퓨리오사에이아이 뉴럴네트워크 프로세서

Also Published As

Publication number Publication date
EP3746951A4 (en) 2021-03-31
EP3746951A1 (en) 2020-12-09
CN112204585A (zh) 2021-01-08

Similar Documents

Publication Publication Date Title
US10452979B2 (en) Convolution neural network training apparatus and method thereof
US11409986B2 (en) Trainable vision scaler
US11157764B2 (en) Semantic image segmentation using gated dense pyramid blocks
US10346726B2 (en) Image recognition method and apparatus, image verification method and apparatus, learning method and apparatus to recognize image, and learning method and apparatus to verify image
US11151361B2 (en) Dynamic emotion recognition in unconstrained scenarios
US20190279052A1 (en) Image recognition method and apparatus, image verification method and apparatus, learning method and apparatus to recognize image, and learning method and apparatus to verify image
US20180336439A1 (en) Novelty detection using discriminator of generative adversarial network
JP6857712B2 (ja) 電子装置及びその映像処理方法
US20210109956A1 (en) Visual question answering using visual knowledge bases
US20210192343A1 (en) Method and device for training generative adversarial network for converting between heterogeneous domain data
EP3591581B1 (en) Method and apparatus for building image model
US11113361B2 (en) Electronic apparatus and control method thereof
KR20210062477A (ko) 전자 장치 및 그 제어 방법
EP3843012A1 (en) Method and apparatus with neural network data input and output control
KR20210061146A (ko) 전자 장치 및 그 제어 방법
US11521007B2 (en) Accelerator resource utilization by neural networks
US11704894B2 (en) Semantic image segmentation using gated dense pyramid blocks
KR20190140808A (ko) 프로세서, 전자 장치 및 그 제어 방법
US11568303B2 (en) Electronic apparatus and control method thereof
US11244027B2 (en) Processor, electronics apparatus and control method thereof
TW201818264A (zh) 緩衝裝置及卷積運算裝置與方法
US20220164923A1 (en) Electronic apparatus and controlling method thereof
KR20200116836A (ko) 영상 처리 장치 및 그 영상 처리 방법
EP3843005B1 (en) Method and apparatus with quantized image generation
EP3720138A1 (en) Image processing apparatus and image processing method