KR102167211B1 - 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서 - Google Patents

합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서 Download PDF

Info

Publication number
KR102167211B1
KR102167211B1 KR1020180160495A KR20180160495A KR102167211B1 KR 102167211 B1 KR102167211 B1 KR 102167211B1 KR 1020180160495 A KR1020180160495 A KR 1020180160495A KR 20180160495 A KR20180160495 A KR 20180160495A KR 102167211 B1 KR102167211 B1 KR 102167211B1
Authority
KR
South Korea
Prior art keywords
operation unit
output
feature map
buffer
multiplication
Prior art date
Application number
KR1020180160495A
Other languages
English (en)
Other versions
KR20200072666A (ko
Inventor
하순회
Original Assignee
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서울대학교산학협력단 filed Critical 서울대학교산학협력단
Priority to KR1020180160495A priority Critical patent/KR102167211B1/ko
Publication of KR20200072666A publication Critical patent/KR20200072666A/ko
Application granted granted Critical
Publication of KR102167211B1 publication Critical patent/KR102167211B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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

Landscapes

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

Abstract

선택적 합성곱 뉴럴 프로세서는 상기 합성곱 계층은,특징 지도를 포함하는 상기 특징 지도 버퍼의 출력 및 필터를 포함하는 상기 필터 버퍼의 출력을 입력으로 하여 병렬로 서로 곱하는 곱셈 연산부, 상기 곱셈 연산부의 출력을 누산하는 누산 연산부, 상기 곱셈 연산부의 출력을 덧셈트리 형식으로 더하는 덧셈트리 연산부 및 상기 곱셈 연산부의 출력을 상기 누산 연산부 또는 상기 덧셈트리 연산부 중 어느 하나의 입력으로 선택하여 전송하는 연산 선택부를 포함한다.

Description

합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서{SELECTIVE DATA PROCESSING METHOD OF CONVOLUTION LAYER AND NEURAL NETWORK PROCESSOR USING THEREOF}
본 발명은 합성곱 계층의 선택적 데이터 처리 방법 및 합성곱 계층의 선택적 데이터 처리 방법을 이용하는 뉴럴 프로세서에 관한 것이다. 보다 상세하게는 합성곱 계층의 세부 연산을 선택적으로 수행할 수 있는 합성곱 계층의 선택적 데이터 처리 방법 및 합성곱 계층의 선택적 데이터 처리 방법을 이용하는 뉴럴 프로세서에 관한 것이다.
일반적으로 뉴럴 프로세서란 계산량이 많은 기계 학습(machine learning) 알고리즘을 가속하기 위한 프로세서로서 뉴럴 엔진, 뉴로 프로세서, 뉴로 컴퓨터, 하드웨어 가속기, 연산 가속기 등의 다양한 용어로 불리워지고 있다. 뉴럴 프로세서는 특히 합성곱 기반의 심층 학습(딥 러닝: Deep Learning)인 CNN(Convolution Neural Network)을 가속하기 위해 주로 사용되고 있다. CNN은 DNN(Deep Neural Network)의 일종으로 이미지 분류, 객체 인식 등의 다양한 기계 학습 응용에서 널리 사용되는 기술로써 네트워크에서 요구하는 계산량이 매우 높기 때문에 이를 하드웨어적으로 가속하는 하드웨어 가속기인 뉴럴 프로세서의 연산 성능은 CNN에서 매우 중요한 요소이다.
CNN의 핵심 연산은 입력을 필터링하는 합성곱(convolution)이며 하나의 네트웍이 복수의 합성곱 계층으로 구성된다. 일반적인 CNN은 하나의 입력에 대하여 복수개의 필터를 적용하여 합성곱을 계산하는데, 하나의 합성곱은 입력과 필터의 원소들을 곱하고 곱한 값들을 더하는 방식으로 이루어진다. 하나의 합성곱 계층을 병렬화하는 방식은 매우 다양하며 기존의 뉴럴 프로세서들은 하나의 병렬화 방식을 선택하여 합성곱을 가속한다.
기존의 뉴럴 프로세서들의 합성곱 계층을 병렬화 하는 방식은 곱셈을 병렬화 하는 관점에서 보면 출력 픽셀을 몇 개를 동시에 계산할 것인지를 정하는 픽셀 레벨 병렬화 정도와 하나의 출력 픽셀을 계산하기 위하여 몇 개의 곱셈을 병렬로 수행할 것인지를 정하는 곱셈 레벨 병렬화 정도에 따라서 구조가 나뉘며, 곱셈과 덧셈을 수행하는 데이터패스의 관점에서 보면 곱셈과 누산을 동시에 수행하는 MAC(Multiply and Accumulate) 유닛을 사용하는 구조와 병렬로 수행한 다수개의 곱셈을 덧셈트리로 더하는 구조로 나뉜다.
기존의 덧셈트리로 더하는 구조는 도 4와 같이 하나의 특징 지도 버퍼당 출력 픽셀 개수만큼의 필터 버퍼를 필요로 하며, 각 필터 버퍼당 하나의 병렬 곱셈기 및 이와 연결되는 하나의 덧셈트리를 필요로 한다. 여기서, 병렬 곱셈기는 복수개의 곱셈기의 집합일 수 있다. 이러한 기존의 덧셈트리로 더하는 구조의 경우 채널 방향으로 곱셈을 먼저 수행하도록 입력 특징 지도와 채널을 배열하여 버퍼에 저장한다. 널리 알려진 CNN 중에는 필터 채널의 크기를 1로 하고 입력 특징지도의 채널 별로 다른 필터를 적용하는 뎁스별 컨볼루션(Depthwise Convolution)을 사용하는 것이 있는데, 필터의 채널 크기가 1이면 병렬적으로 수행할 곱셈의 개수가 1이고 하나의 출력 픽셀 계산에 필요한 곱셈의 개수가 필터의 크기와 같기 때문에 덧셈 트리기반의 뉴럴 프로세서는 비효율적인 구조가 되어 구조의 활용도(utilization)가 매우 낮아 지는 문제점이 있다. 기존의 MAC 유닛을 사용하는 구조도 채널 방향으로 곱셈을 병렬적으로 수행하도록 연산기가 구성되어 있는 경우 채널의 크기가 1이면 채널 방향의 곱셈 병렬성을 활용하지 못하는 문제점이 있다. 또한, 기존의 덧셈트리로 더하는 구조의 경우 출력 특징 지도와 입력 특징 지도를 픽셀별로 더하는 연산을 지원하지 못하는 문제점이 있어 개선이 요구되어 왔다.
한국공개특허공보 제10-2018-0052063호(2018.05.17)
이에 본 발명의 기술적 과제는 이러한 점에서 착안된 것으로, 본 발명의 목적은 합성곱 계층의 세부 연산을 선택적으로 수행할 수 있는 합성곱 계층의 선택적 데이터 처리 방법을 제공하는 것이다.
또한 본 발명의 다른 목적은 세부 연산을 선택적으로 수행할 수 있는 합성곱 계층의 선택적 데이터 처리 방법을 이용하는 뉴럴 프로세서를 제공하는 것이다. 본 발명에서는 합성곱 계층의 선택적 데이터 처리 방법을 이용하는 뉴럴 프로세서를 선택적 합성곱 뉴럴 프로세서로 명명한다.
상기한 본 발명의 목적을 실현하기 위한 선택적 합성곱 뉴럴 프로세서에서 상기 합성곱 계층은,특징 지도를 포함하는 상기 특징 지도 버퍼의 출력 및 필터를 포함하는 상기 필터 버퍼의 출력을 입력으로 하여 병렬로 서로 곱하는 곱셈 연산부, 상기 곱셈 연산부의 출력을 누산하는 누산 연산부, 상기 곱셈 연산부의 출력을 덧셈트리 형식으로 더하는 덧셈트리 연산부 및 상기 곱셈 연산부의 출력을 상기 누산 연산부 또는 상기 덧셈트리 연산부 중 어느 하나의 입력으로 선택하여 전송하는 연산 선택부를 포함한다.
본 발명의 일 실시예에 있어서, 상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부는 복수개일 수 있다.
본 발명의 일 실시예에 있어서, 상기 특징 지도 버퍼의 개수는 상기 필터 버퍼의 개수와 동일할 수 있다.
본 발명의 일 실시예에 있어서, 상기 합성곱 계층은 채널별 합성곱을 수행하고, 상기 곱셈 연산부는 상기 특징 지도의 채널 방향으로 곱셈을 수행할 수 있다.
본 발명의 일 실시예에 있어서, 상기 합성곱 계층은 채널별 합성곱 및 픽셀별 합성곱을 수행하고, 상기 곱셈 연산부는 상기 특징 지도의 채널 방향으로 곱셈을 수행하며, 상기 연산 선택부는 상기 채널별 합성곱을 수행할 경우 상기 곱셈 연산부의 출력을 상기 누산 연산부의 입력으로 전송하고, 상기 픽셀별 합성곱을 수행할때는 상기 곱셈 연산부의 출력을 상기 덧셈트리 연산부의 입력으로 전송할 수 있다.
본 발명의 일 실시예에 있어서, 선택적 합성곱 뉴럴 프로세서는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 상기 곱셈 연산부 또는 타 연산부 중 어느 하나의 입력으로 선택하여 전송하는 합성곱 선택부를 더 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 타 연산부는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 서로 더하는 덧셈 연산부 또는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 산술 논리 연산을 수행하는 ALU(산술논리연산장치: Arithmetic and Logic Unit)일 수 있다.
본 발명의 일 실시예에 있어서, 상기 연산 선택부는 선택입력을 포함하는 디멀티플렉서(Demux)일 수 있다.
본 발명의 일 실시예에 있어서, 상기 필터 버퍼에는 필터들이 인터리빙 방식으로 저장될 수 있다.
본 발명의 일 실시예에 있어서, 상기 누산 연산부의 개수는 상기 필터 버퍼의 폭과 같고, 상기 덧셈트리 연산부의 입력의 개수는 상기 필터 버퍼의 폭과 같을 수 있다.
상기한 본 발명의 목적을 실현하기 위한 합성곱 계층의 선택적 데이터 처리 방법은 곱셈 연산부가 특징 지도를 포함하는 특징 지도 버퍼의 출력 및 필터를 포함하는 필터 버퍼의 출력을 입력으로 하여 병렬로 서로 곱하는 단계, 연산 선택부가 상기 곱셈 연산부의 출력을 누산 연산부 또는 덧셈트리 연산부 중 어느 하나의 입력으로 선택하여 전송하는 연산 선택 단계, 누산 연산부가 상기 곱셈 연산부의 출력을 누산하는 단계 및 덧셈트리 연산부가 상기 곱셈 연산부의 출력을 덧셈트리 형식으로 더하는 단계를 포함한다.
본 발명의 일 실시예에 있어서, 상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부는 복수개이고, 상기 병렬로 서로 곱하는 단계, 연산 선택 단계, 누산하는 단계 및 덧셈트리 형식으로 더하는 단계는 각 상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부에서 독립적으로 수행될 수 있다.
본 발명의 일 실시예에 있어서, 상기 특징 지도 버퍼의 개수는 상기 필터 버퍼의 개수와 동일할 수 있다.
본 발명의 일 실시예에 있어서, 상기 합성곱 계층은 채널별 합성곱을 수행하고, 상기 병렬로 서로 곱하는 단계에서는 곱셈 연산부가 상기 특징 지도의 채널 방향으로 곱셈을 수행할 수 있다.
본 발명의 일 실시예에 있어서, 상기 합성곱 계층은 채널별 합성곱 및 픽셀별 합성곱을 수행하고, 상기 병렬로 서로 곱하는 단계에서는 상기 곱셈 연산부가 상기 특징 지도의 채널 방향으로 곱셈을 수행하며, 상기 연산 선택 단계에서는 상기 연산 선택부는 상기 채널별 합성곱을 수행할 경우 상기 곱셈 연산부의 출력을 상기 누산 연산부의 입력으로 전송하고, 상기 픽셀별 합성곱을 수행할때는 상기 곱셈 연산부의 출력을 상기 덧셈트리 연산부의 입력으로 전송할 수 있다.
본 발명의 일 실시예에 있어서, 합성곱 계층의 선택적 데이터 처리 방법은 합성곱 선택부가 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 상기 곱셈 연산부 또는 타 연산부 중 어느 하나의 입력으로 선택하여 전송하는 합성곱 선택 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 타 연산부는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 서로 더하는 덧셈 연산부 또는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 산술 논리 연산을 수행하는 ALU(산술논리연산장치: Arithmetic and Logic Unit)일 수 있다.
본 발명의 일 실시예에 있어서, 상기 연산 선택부는 선택입력을 포함하는 디멀티플렉서(Demux)일 수 있다.
본 발명의 일 실시예에 있어서, 필터 버퍼가 필터들을 인터리빙 방식으로 저장하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 누산 연산부의 개수는 상기 필터 버퍼의 폭과 같고, 상기 덧셈트리 연산부의 입력의 개수는 상기 필터 버퍼의 폭과 같을 수 있다.
본 발명의 실시예들에 따르면, 합성곱 계층의 선택적 데이터 처리 방법 및 합성곱 계층의 선택적 데이터 처리 방법을 이용하는 뉴럴 프로세서는 곱셈 연산부의 출력을 누산 연산부 또는 덧셈트리 연산부 중 어느 하나의 입력으로 선택해서 전송하는 연산 선택부를 포함한다. 따라서, 일반적인 합성곱, 채널별 합성곱 및 픽셀별 합성곱을 수행시 효과적인 연산기를 선택하여 효율적으로 가속할 수 있다.
또한, 합성곱 계층의 선택적 데이터 처리 방법 및 합성곱 계층의 선택적 데이터 처리 방법을 이용하는 뉴럴 프로세서는 특징 지도 버퍼의 출력 및 필터 버퍼의 출력을 곱셈 연산부 또는 타 연산부 중 어느 하나의 입력으로 선택해서 전송하는 합성곱 선택부를 포함한다. 따라서, 덧셈트리 데이터패스 구조를 포함하는 뉴럴 프로세서에서도 합성곱 연산이 아닌 타 연산을 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다.
도 2는 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다.
도 3은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서의 구현예를 나타내는 도면이다.
도 4는 일반적인 뉴럴 프로세서의 구현예를 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다.
도 6은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다.
도 7은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다.
도 8은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다.
도 9는 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법을 나타내는 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법을 나타내는 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법을 나타내는 흐름도이다.
도 12는 본 발명의 일 실시예에 따른 특징 지도 및 필터를 나타내는 도면이다.
도 13은 본 발명의 일 실시예에 따른 픽셀별 합성곱 연산 및 채널별 합성곱 연산을 나타내는 도면이다.
도 14는 본 발명의 일 실시예에 따른 특징 지도 버퍼에 저장되는 특징 지도의 데이터 레이아웃을 나타내는 도면이다.
도 15는 본 발명의 일 실시예에 따른 필터 버퍼에 저장되는 필터의 데이터 레이아웃을 나타내는 도면이다.
도 16은 채널별 합성곱 연산 및 픽셀별 합성곱을 나타내는 도면이다.
도 17은 일반적인 뉴럴 프로세서 구조를 포함하는 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 실시예들을 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다.
상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함하다" 또는 "이루어진다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
일반적인 합성곱 계층을 포함하는 뉴럴 프로세서는 기계학습이 필요한 데이터를 입력받는 입력부, 상기 입력된 데이터의 특징을 추출하여 특징 지도를 생성하고 저장하는 특징 지도부, 상기 입력된 데이터에 대한 필터를 생성하고 저장하는 필터부, 상기 특징 지도와 상기 필터에 합성곱을 수행하는 합성곱 계층 및 상기 합성곱 계층을 출력 픽셀로 하는 출력부를 포함한다. 여기서 상기 특징 지도부는 특정 순서, 특정 시간 간격 및 특정 크기에 따라서 상기 특징 지도를 상기 합성곱 계층으로 전송하기 위한 특징 지도 버퍼를 포함할 수 있으며, 상기 필터부 또한 특정 순서, 특정 시간 간격 및 특정 크기에 따라서 상기 필터를 상기 합성곱 계층으로 전송하기 위한 필터 버퍼를 포함할 수 있다.
상기 입력부, 상기 특징 지도부, 상기 필터부, 상기 합성곱 계층 및 상기 출력부에서 입력으로부터 출력 한 픽셀의 값을 구하기 위한 뉴럴 프로세서의 동작을 콘볼루션 신경망(CNN: Convolutional Neural Network)에서 예를 들어 설명하면, 도 12와 같이 상기 입력부는 Ci개의 크기가 W×H인 2차원 이미지를 입력받고, 상기 특징 지도부는 이들 입력을 크기가 W, H, Ci인 x, y, z 축 방향의 3차원 특징 지도 (feature map)로 저장하며, 상기 합성곱 계층은 상기 필터부에 저장된 KХKХCi 크기를 갖는 Co개의 3차원 필터를 상기 특징 지도에 적용하여 Co개의 다른 특징들이 추출된 출력 특징 지도를 생성할 수 있다. 이때, z 방향의 좌표를 채널이라 할 수 있다. 상기 뉴럴 프로세서의 합성곱 계층에서 상기 출력 특징 지도의 각 좌표를 얻기 위한 연산을 예를 들어 설명하면, 도 13과 같이 하나의 좌표를 얻기 위해서는 K*K*Ci 개의 곱셈과 동일한 개수의 덧셈을 수행하며, 좌표 개수가 H*W*Co개인 상기 출력 특징 지도의 모든 좌표를 계산하기 위해서는 H*W*Co*K*K*Ci개의 곱셈 연산 및 이와 동일한 개수의 덧셈을 수행할 수 있다.
본 발명의 선택적 합성곱 뉴럴 프로세서는 특징 지도 버퍼, 필터 버퍼 및 합성곱 계층을 포함하는 뉴럴 프로세서에 대한 것으로, 본 발명의 구성 및 특징들은 특징 지도 버퍼, 필터 버퍼 및 합성곱 계층을 포함하는 모든 뉴럴 프로세서의 구조에 적용될 수 있으며, 그 구성을 포함할 수 있다, 예를 들면, 도 17과 같이 본 발명의 선택적 합성곱 뉴럴 프로세서는 입력부, 특징 지도 버퍼를 포함하는 특징 지도부, 필터 버퍼를 포함하는 필터부, 합성곱 계층 및 출력부를 포함할 수 있다. 따라서, 일반적인 뉴럴 프로세서의 구성 및 구조에 대한 상세한 설명은 생략하며, 본 발명의 특징적인 구성에 대한 부분만을 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서의 합성곱 계층을 나타내는 구성도이다. 도 2는 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다. 도 3은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서의 구현예를 나타내는 도면이다.
도 1 내지 도 3을 참조하면, 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서의 합성곱 계층은 곱셈 연산부, 연산 선택부, 누산 연산부 및 덧셈트리 연산부를 포함한다.
상기 특징 지도 버퍼는 상기 특징 지도(feature map)를 입력 받아 행 단위로 저장하여 출력할 수 있다. 예를 들면, 상기 특징 지도는 영상 데이터에서 사람의 시각에 두드러지게 구분되는 영역을 표현하는 특징을 나타내는 정보일 수 있다. 상기 특징 지도 버퍼의 행 단위로 출력되는 데이터는 상기 합성곱 계층으로 전송될 수 있다. 상기 특징 지도 버퍼는 입력을 행 단위로 저장하고 출력하는 시프트 버퍼일 수 있으나, 본 발명은 이에 한정되는 것은 아니고, 상기 특징 지도를 행 단위로 저장하고 출력하는 다양한 방식의 버퍼가 사용될 수 있다.
상기 특징 지도는 상기 특징 지도 버퍼에 채널방향으로 저장될 수 있다. 예를 들면, 도 14와 같이 특징 지도는 x,y,z 축을 갖는 3차원 데이터이고, 상기 특징 지도 버퍼의 하나의 행에는 상기 3차원 데이터인 특징 지도의 z축 방향의 데이터가 순차적으로 저장될 수 있다. 따라서, 상기 특징 지도 버퍼는 채널방향으로 저장된 상기 특징 지도를 합성곱 계층의 입력으로 전송할 수 있다.
상기 필터 버퍼는 상기 필터를 행 단위로 저장하여 출력할 수 있다. 예를 들면, 상기 필터는 가중치 정보를 갖는 가중치 필터일 수 있다. 예를 들면, 상기 선택적 합성곱 뉴럴 프로세서의 입력은 2차원 영상 데이터이고, 상기 특징 지도는 상기 영상 데이터에서 사람의 시각에 두드러지게 구분되는 영역을 표현한 데이터이며, 상기 필터는 상기 특징 지도에 대한 가중치 데이터일 수 있다. 예를 들면, 데이터패스에서 덧셈트리 대신 누산기나 ALU를 사용하는 경우 상기 필터는 이전 단계에서 출력된 특징 지도일 수 있다. 상기 필터 버퍼의 행 단위로 출력되는 데이터는 상기 합성곱 계층으로 전송될 수 있다. 상기 필터 버퍼는 입력을 행 단위로 저장하고 출력하는 시프트 버퍼일 수 있으나, 본 발명은 이에 한정되는 것은 아니고, 상기 필터를 행 단위로 저장하고 출력하는 다양한 방식의 버퍼가 사용될 수 있다.
상기 필터 버퍼에는 필터들이 인터리빙 방식으로 저장될 수 있다. 인터리빙 방식이란 끼워넣기 방식으로 데이터를 정렬하는 방식으로, 예를 들면, 도 16과 같이 폭(하나의 행의 원소 개수)이 L인 필터 버퍼에는 L개의 필터의 원소가 하나씩 순차적으로 돌아가며 저장될 수 있다. 예를 들면, 하나의 필터는 상기 필터 버퍼의 깊이 방향으로 배치될 수 있다. 상기 필터 버퍼는 필터의 크기와 동일한 개수의 행의 개수를 가질 수 있다. 예를 들면, 상기 필터의 크기는 K*K이고 상기 필터 버퍼는 K*K개의 행에 깊이 방향으로 저장되며, K*K개의 클럭 사이클에 상기 필터 버퍼의 전송이 종료되며 상기 필터 버퍼와 연결된 누산 연산부의 최종값이 출력 픽셀 값이 될 수 있다.
상기 특징 지도 버퍼의 개수는 상기 필터 버퍼의 개수와 동일할 수 있다. 예를 들면, 상기 특징 지도 버퍼에 n개의 필터가 사용될 때 상기 n개의 필터들은 인터리빙 방식으로 하나의 필터 버퍼에 저장될 수 있다.
상기 곱셈 연산부는 특징 지도를 포함하는 특징 지도 버퍼의 출력 및 필터를 포함하는 필터 버퍼의 출력을 입력으로 하여 병렬로 서로 곱할 수 있다. 예를 들면, 상기 특징 지도 버퍼는 L개의 원소(버퍼의 폭)를 갖는 시프트 버퍼이고, 상기 필터 버퍼 또한 L개의 원소(버퍼의 폭)를 갖는 시프트 버퍼이며, 상기 곱셈 연산부는 상기 특징 지도 버퍼 및 상기 필터 버퍼의 각 원소에 1:1로 연결되는 복수개의 곱셈기 일 수 있다. 따라서, 상기 곱셈 연산부에서 곱셈기의 개수는 상기 특징 지도 버퍼의 폭 또는 상기 필터 버퍼의 폭과 같을 수 있다.
상기 누산 연산부는 상기 곱셈 연산부의 출력을 누산할 수 있다. 상기 누산 연산부의 개수는 상기 필터 버퍼의 폭(L)과 같을 수 있다. 상기 누산 연산부의 개수는 상기 특징 지도 버퍼의 폭과 같을 수 있다. 상기 누산 연산부는 각 출력 픽셀의 부분합을 계산할 수 있다. 출력 픽셀이란 상기 출력부의 출력인 출력 특징 지도의 픽셀을 의미한다.
상기 누산 연산부는 복수개의 누산기를 포함할 수 있다. 각 누산기의 출력은 하나의 출력 픽셀일 수 있다. 상기 누산 연산부의 출력은 상기 출력부로 전송될 수 있다. 상기 누산 연산부는 상기 곱셈 연산부가 포함하는 곱셈기의 개수와 동일한 개수의 누산기를 포함할 수 있다. 예를 들면, 상기 곱셈 연산부는 상기 특징 지도 버퍼의 폭 및 상기 필터 버퍼의 폭(L)과 동일한 개수의 곱셈기를 포함하고, 상기 누산 연산부는 상기 곱셈기의 개수와 동일한 개수의 누산기를 포함하며, 상기 곱셈기들의 출력은 상기 누산기들의 입력에 각각 연결될 수 있고, 상기 곱셈기들의 출력과 상기 누산기들의 입력 사이에는 연산 선택부가 배치될 수 있다. 또한, 상기 곱셈기들의 출력과 상기 누산기들의 입력 사이에는 데이터 버스가 배치될 수 있으나, 본 발명에서는 데이터 버스의 유무를 한정하는 것은 아니다.
상기 덧셈트리 연산부는 상기 곱셈 연산부의 출력을 덧셈트리 형식으로 더할 수 있다. 상기 덧셈트리 연산부의 입력의 개수는 상기 필터 버퍼의 폭(L)과 같을 수 있다. 상기 덧셈트리 연산부의 입력의 개수는 상기 특징 지도 버퍼의 폭(L)과 같을 수 있다.
상기 덧셈트리 연산부는 상기 필터의 모든 원소를 전부 입력으로 받을때까지 상기 덧셈트리 연산부의 출력이 상기 덧셈트리 연산부의 입력으로 다시 되먹임될 수 있다. 따라서, 상기 필터별 덧셈 결과값을 누적할 수 있다. 예를 들면, 상기 덧셈트리 연산부의 되먹임 되지 않는 최종 출력은 상기 필터 버퍼의 필터별 부분합일 수 있다. 여기서, 상기 필터는 상기 필터 버퍼에 인터리빙 형식으로 저장되는 필터들의 집합을 의미할 수 있다.
상기 덧셈트리 연산부의 출력은 하나의 출력 픽셀일 수 있다. 상기 덧셈트리 연산부의 출력은 상기 출력부로 전송될 수 있다. 상기 덧셈트리 연산부는 상기 곱셈 연산부가 포함하는 곱셈기의 개수와 동일한 개수의 입력 데이터패스를 포함할 수 있다. 예를 들면, 상기 곱셈 연산부는 상기 특징 지도 버퍼의 폭 및 상기 필터 버퍼의 폭(L)과 동일한 개수의 곱셈기를 포함하고, 상기 덧셈트리 연산부는 상기 곱셈기의 개수와 동일한 개수의 입력 데이터패스를 포함하며, 상기 곱셈기들의 출력은 상기 덧셈트리 연산부의 입력 데이터패스에 각각 연결될 수 있고, 상기 곱셈기들의 출력과 상기 덧셈트리 연산부의 입력 데이터패스 사이에는 연산 선택부가 배치될 수 있다. 또한, 상기 곱셈기들의 출력과 상기 덧셈트리 연산부의 입력 데이터패스 사이에는 데이터 버스가 배치될 수 있으나, 본 발명에서는 데이터 버스의 유무를 한정하는 것은 아니다.
상기 덧셈트리 연산부는 L개의 곱셈으로부터 하나의 출력 픽셀값을 생성하며, 상기 누산 연산부는 L개의 곱셈으로부터 L개의 각각 다른 출력 픽셀 값을 계산할 수 있다.
상기 연산 선택부는 상기 곱셈 연산부의 출력을 상기 누산 연산부 또는 상기 덧셈트리 연산부 중 어느 하나의 입력으로 선택하여 전송할 수 있다. 상기 연산 선택부는 상기 곱셈 연산부의 출력을 상기 누산 연산부 또는 상기 덧셈트리 연산부 중 어느 하나의 입력으로 선택하여 전송하도록 결정하는 제어입력을 포함할 수 있다. 예를 들면, 상기 연산 선택부는 선택입력을 포함하는 디멀티플렉서(Demux)이고, 상기 제어입력은 상기 선택입력일 수 있다. 디멀티플렉서란 하나의 입력 신호를 받아 다수의 출력 데이터패스중 하나로 출력하는 장치로서, 디멀티플렉서의 선택입력이란 상기 다수의 출력 데이터패스를 선택하는 입력신호이다. 상기 연산 선택부는 복수개의 디멀티플렉서(Demux)를 포함할 수 있다.
상기 연산 선택부는 채널별 합성곱을 수행할 경우에는 상기 곱셈 연산부의 출력을 상기 누산 연산부의 입력으로 전송할 수 있다. 채널별 합성곱은 합성곱을 채널별로 수행하는 것을 의미한다. 예를 들면, 채널별로 독립적인 필터를 갖는 뎁스별 컨볼루션(Depthwise Convolution) 등이 포함될 수 있다. 상기 채널별 합성곱의 필터에서 채널의 크기는 1일 수 있다. 상기 곱셈 연산부는 상기 특징 지도의 채널 방향으로 곱셈을 수행할 수 있다. 예를 들면, 상기 합성곱 계층은 채널별 합성곱을 수행하고, 상기 곱셈 연산부는 상기 특징 지도의 채널 방향으로 곱셈을 수행하며, 상기 누산 연산부는 상기 곱셈 연산부의 출력을 누산하여 출력 픽셀을 병렬로 생성할 수 있다.
상기 합성곱 계층(Convolution layer)은 채널별 합성곱 및 픽셀별 합성곱을 수행하고, 상기 곱셈 연산부는 상기 특징 지도의 채널 방향으로 곱셈을 수행할 수 있다. 상기 연산 선택부는 채널별 합성곱의 수행시에는 상기 곱셈 연산부의 출력을 상기 누산 연산부의 입력으로 전송하고, 상기 픽셀별 합성곱의 수행시에는 상기 곱셈 연산부의 출력을 상기 덧셈트리 연산부의 입력으로 전송할 수 있다. 픽셀별 합성곱(Pointwise Convolution)이란 하나의 입력 픽셀에 대하여 1대1로 합성곱 연산을 하는 방법을 의미한다. 예를 들면, 도 16과 같이 뎁스별 컨볼루션의 수행 결과값에 가중치 필터를 1대1로 곱한 후 그 결과값을 전부 더하여 하나의 필터 당 하나의 출력 픽셀을 생성할 수 있다. 상기 합성곱 계층(Convolution layer)은 채널별 합성곱 및 픽셀별 합성곱을 순차적으로 수행하는 세퍼러블 컨볼루션(Depthwise Separable Convolution)을 수행할 수 있다.
도 2를 참조하면, 상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부는 복수개일 수 있다.
상기 복수개의 특징 지도 버퍼는 특징 지도를 복수개로 나누어 저장할 수 있다. 예를 들면, 상기 특징 지도 버퍼는 N개이고, 상기 특징 지도 버퍼들은 상기 특징 지도를 채널 방향으로 N등분하여 저장할 수 있다. 이때, 상기 특징 지도의 채널 크기가 상기 특징 지도의 폭(W)과 상기 특징 지도 버퍼의 개수(N)의 곱보다 작을 때에는 상기 특징 지도를 X 방향 또는 Y 방향으로 나누어 상기 특징 지도 버퍼에 저장할 수 있다. 따라서 상기 특징 지도의 폭(W)과 상기 특징 지도 버퍼의 개수(N)를 곱한 개수만큼의 출력 픽셀이 동시에 병렬적으로 연산될 수 있다.
상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부의 개수는 동일할 수 있다. 예를 들면, 하나의 상기 특징 지도 버퍼 및 하나의 상기 필터 버퍼는 하나의 곱셈 연산부에 연결되고, 상기 하나의 곱셈 연산부는 하나의 상기 연산 선택부에 연결되며, 상기 하나의 연산 선택부는 하나의 상기 누산 연산부 및 하나의 상기 덧셈트리 연산부에 연결될 수 있다. 이때, 상기 하나의 연산 선택부는 복수개의 디멀티플렉서를 포함할 수 있고, 상기 하나의 누산 연산부는 복수개의 누산기를 포함할 수 있다.
도 5는 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다. 도 6은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다. 도 7은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다. 도 8은 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서를 나타내는 구성도이다.
본 실시예에 따른 선택적 합성곱 뉴럴 프로세서는 합성곱 선택부, 덧셈 연산부 및 ALU를 제외하고는 도 1 내지 도 3의 선택적 합성곱 뉴럴 프로세서와 실질적으로 동일하다. 따라서, 도 1 내지 도 3의 선택적 합성곱 뉴럴 프로세서와 동일한 구성요소는 동일한 도면 부호를 부여하고, 반복되는 설명은 생략한다.
도 5 내지 도 8을 참조하면, 본 발명의 일 실시예에 따른 선택적 합성곱 뉴럴 프로세서는 합성곱 선택부를 포함하며, 덧셈 연산부 또는 ALU를 포함한다
상기 덧셈 연산부는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 서로 더할 수 있다. 상기 덧셈 연산부는 픽셀간의 덧셈을 수행할 수 있다. 예를 들면, 상기 합성곱 계층은 상기 출력부의 출력인 출력 특징 지도가 상기 필터 버퍼로 연결되어 상기 특징 지도부의 특징 지도에 더해지는 연산을 수행하고, 상기 덧셈 연산부는 상기 출력 특징 지도 및 상기 특징 지도의 덧셈 연산을 수행할 수 있다.
상기 합성곱 선택부는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 상기 곱셈 연산부 또는 상기 덧셈 연산부 중 어느 하나의 입력으로 선택하여 전송할 수 있다. 상기 합성곱 선택부는 복수개일 수 있다. 상기 합성곱 선택부들은 상기 특징 지도 버퍼의 출력을 상기 곱셈 연산부 또는 상기 덧셈 연산부 중 어느 하나의 입력으로 선택하여 전송하는 제1 합성곱 선택부 및 상기 필터 버퍼의 출력을 상기 곱셈 연산부 또는 상기 덧셈 연산부 중 어느 하나의 입력으로 선택하여 전송하는 제2 합성곱 선택부를 포함할 수 있다. 예를 들면, 상기 합성곱 계층은 상기 출력부의 출력인 출력 특징 지도가 상기 특징 지도부로 연결되어 상기 특징 지도부의 특징 지도에 더해지는 연산을 수행하고, 상기 제1 합성곱 선택부는 상기 특징 지도 버퍼의 출력을, 상기 제2 합성곱 선택부는 상기 필터 버퍼의 출력을 상기 덧셈 연산부로 전송하며, 상기 덧셈 연산부는 상기 특징 지도 버퍼의 출력과 상기 필터 버퍼의 출력을 더할 수 있다. 이때, 상기 필터 버퍼에는 상기 출력 특징 지도가 저장될 수 있다. 그러나, 본 발명은 이에 한정되는 것은 아니고, 상기 필터 버퍼에는 상기 특징 지도와 덧셈 연산이 필요한 다양한 데이터가 저장될 수 있다.
상기 ALU(산술논리연산장치: Arithmetic and Logic Unit)는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 산술 논리 연산을 수행할 수 있다.
상기 합성곱 선택부는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 상기 곱셈 연산부 또는 상기 ALU중 어느 하나의 입력으로 선택하여 전송할 수 있다. 상기 합성곱 선택부는 복수개일 수 있다. 상기 합성곱 선택부들은 상기 특징 지도 버퍼의 출력을 상기 곱셈 연산부 또는 상기 ALU중 어느 하나의 입력으로 선택하여 전송하는 제3 합성곱 선택부 및 상기 필터 버퍼의 출력을 상기 곱셈 연산부 또는 상기 ALU중 어느 하나의 입력으로 선택하여 전송하는 제4 합성곱 선택부를 포함할 수 있다.
상기 합성곱 선택부는 상기 덧셈 연산부 또는 ALU 외에도 다양한 연산기와 연결되어 선택적 연산을 구현할 수 있다.
상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부, 상기 덧셈트리 연산부, 상기 합성곱 선택부, 상기 덧셈 연산부 및 상기 ALU는 복수개일 수 있다. 이러한 구조는 상기 도 2를 참조하여 설명한 부분에 상기 합성곱 선택부와 상기 덧셈 연산부 또는 상기 ALU가 추가된 것을 제외하면 실질적으로 동일하므로 반복되는 설명은 생략한다.
상기 합성곱 선택부의 개수는 상기 특징 지도 버퍼의 개수와 동일할 수 있다. 이때, 상기 합성곱 선택부는 상기 제1 합성곱 선택부 및 상기 제2 합성곱 선택부 또는 상기 제3 합성곱 선택부 및 상기 제4 합성곱 선택부를 포함하는 하나의 합성곱 선택부 그룹을 의미한다. 상기 덧셈 연산부의 개수는 상기 특징 지도 버퍼의 개수와 동일할 수 있다. 상기 ALU의 개수는 상기 특징 지도 버퍼의 개수와 동일할 수 있다.
도 9는 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법을 나타내는 흐름도이다. 도 10은 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법을 나타내는 흐름도이다. 도 11은 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법을 나타내는 흐름도이다.
본 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법은 선택적 합성곱 뉴럴 프로세서에서 수행되며, 카테고리만 상이할 뿐 도 1 내지 도 3, 도 5 내지 도 8의 선택적 합성곱 뉴럴 프로세서와 실질적으로 동일하다. 따라서, 도 1 내지 도 3, 도 5 내지 도 8의 선택적 합성곱 뉴럴 프로세서와 동일한 구성요소는 동일한 도면 부호를 부여하고, 반복되는 설명은 생략하며, 각 단계의 연관성만을 추가 기술한다.
도 9 내지 도 11을 참조하면, 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법은 병렬로 서로 곱하는 단계(S100), 연산 선택 단계(S200), 누산하는 단계(S300) 및 덧셈트리 형식으로 더하는 단계(S400)를 포함한다.
상기 병렬로 서로 곱하는 단계(S100)에서는 곱셈 연산부가 특징 지도를 포함하는 특징 지도 버퍼의 출력 및 필터를 포함하는 필터 버퍼의 출력을 입력으로 하여 병렬로 서로 곱할 수 있다.
상기 연산 선택 단계(S200)에서는 연산 선택부가 상기 곱셈 연산부의 출력을 누산 연산부 또는 덧셈트리 연산부 중 어느 하나의 입력으로 선택하여 전송할 수 있다.
상기 누산하는 단계(S300)에서는 누산 연산부가 상기 곱셈 연산부의 출력을 누산할 수 있다.
상기 덧셈트리 형식으로 더하는 단계(S400)에서는 덧셈트리 연산부가 상기 곱셈 연산부의 출력을 덧셈트리 형식으로 더하는 단계를 포함할 수 있다.
상기 합성곱 계층은 채널별 합성곱 및 픽셀별 합성곱의 수행하고 상기 병렬로 서로 곱하는 단계(S100)에서는 상기 곱셈 연산부가 상기 특징 지도의 채널 방향으로 곱셈을 수행하며, 상기 연산 선택 단계(S200)에서는 상기 연산 선택부는 상기 채널별 합성곱을 수행할 경우 상기 곱셈 연산부의 출력을 상기 누산 연산부의 입력으로 전송하고, 상기 픽셀별 합성곱을 수행할때는 상기 곱셈 연산부의 출력을 상기 덧셈트리 연산부의 입력으로 전송할 수 있다. 따라서, 상기 채널별 합성곱을 수행할 경우 상기 누산하는 단계(S300)가 수행되고, 상기 픽셀별 합성곱을 수행할때는 상기 덧셈트리 형식으로 더하는 단계(S400)가 수행될 수 있다.
상기 병렬로 서로 곱하는 단계(S100)는 상기 선택적 합성곱 뉴럴 프로세서의 곱셈 연산부가 수행하는 동작과 실질적으로 동일하며, 상기 연산 선택 단계(S200), 상기 누산하는 단계(S300) 및 상기 덧셈트리 형식으로 더하는 단계(S400)는 각각 상기 선택적 합성곱 뉴럴 프로세서의 연산 선택부, 누산 연산부 및 덧셈트리 연산부가 수행하는 동작과 실질적으로 동일하다. 따라서, 반복되는 설명은 생략한다.
상기 합성곱 계층은 채널별 합성곱을 수행하고 상기 병렬로 서로 곱하는 단계(S100)에서는 곱셈 연산부가 상기 특징 지도의 채널 방향으로 곱셈을 수행할 수 있다. 상기 채널별 합성곱 및 이를 수행하는 방법에 대한 설명은 상기 선택적 합성곱 뉴럴 프로세서의 채널별 합성곱 부분의 설명과 동일하므로 반복되는 설명은 생략한다.
상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부는 복수개이고, 상기 병렬로 서로 곱하는 단계(S100), 상기 연산 선택 단계(S200), 상기 누산하는 단계(S300) 및 상기 덧셈트리 형식으로 더하는 단계(S400)는 각 상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부에서 독립적으로 수행될 수 있다.
상기 특징 지도 버퍼의 개수는 상기 필터 버퍼의 개수와 동일할 수 있다. 상기 연산 선택부는 선택입력을 포함하는 디멀티플렉서(Demux)일 수 있다. 상기 누산 연산부의 개수는 상기 필터 버퍼의 폭과 같고, 상기 덧셈트리 연산부의 입력의 개수는 상기 필터 버퍼의 폭과 같을 수 있다. 상기 필터 버퍼가 필터들을 인터리빙 방식으로 저장하는 단계(미도시)를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법은 합성곱 선택 단계(S90)를 더 포함할 수 있다. 상기 합성곱 선택 단계(S90)에서는 합성곱 선택부가 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 상기 곱셈 연산부 또는 타 연산부 중 어느 하나의 입력으로 선택하여 전송할 수 있다.
상기 타 연산부는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 서로 더하는 덧셈 연산부 또는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 산술 논리 연산을 수행하는 ALU(산술논리연산장치: Arithmetic and Logic Unit)일 수 있다.
본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법은 서로 더하는 단계(S500)를 더 포함할 수 있으며, 상기 서로 더하는 단계(S500)에서는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 서로 더하는 연산을 수행할 수 있다. 상기 서로 더하는 단계(S500)는 상기 선택적 합성곱 뉴럴 프로세서의 상기 덧셈 연산부의 설명과 동일하므로 반복되는 설명은 생략한다.
본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법은 산술 논리 연산을 수행하는 단계(S600)를 더 포함할 수 있으며, 상기 산술 논리 연산을 수행하는 단계(S600)에서는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 산술 논리 연산을 수행할 수 있다. 상기 산술 논리 연산을 수행하는 단계(S600)는 상기 선택적 합성곱 뉴럴 프로세서의 상기 ALU의 설명과 동일하므로 반복되는 설명은 생략한다.
도 10을 참조하여 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법의 단계별 연관관계를 설명하면, 상기 연산 선택 단계(S200)는 상기 병렬로 서로 곱하는 단계(S100)의 수행 후에 수행될 수 있다. 상기 누산하는 단계(S300) 및 상기 덧셈트리 형식으로 더하는 단계(S400)는 상기 연산 선택 단계(S200)에서 선택된 경우에 수행될 수 있다.
도 10을 참조하여 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법의 단계별 연관관계를 설명하면, 상기 서로 더하는 단계(S500) 및 상기 병렬로 서로 곱하는 단계(S100)는 상기 합성곱 연산 선택 단계(S90)에서 선택된 경우에 수행될 수 있다. 상기 연산 선택 단계(S200)는 상기 병렬로 서로 곱하는 단계(S100)의 수행 후에 수행될 수 있다. 상기 누산하는 단계(S300) 및 상기 덧셈트리 형식으로 더하는 단계(S400)는 상기 연산 선택 단계(S200)에서 선택된 경우에 수행될 수 있다.
도 11을 참조하여 본 발명의 일 실시예에 따른 합성곱 계층의 선택적 데이터 처리 방법의 단계별 연관관계를 설명하면, 상기 산술 논리 연산을 수행하는 단계(S600) 및 상기 병렬로 서로 곱하는 단계(S100)는 상기 합성곱 연산 선택 단계(S90)에서 선택된 경우에 수행될 수 있다. 상기 연산 선택 단계(S200)는 상기 병렬로 서로 곱하는 단계(S100)의 수행 후에 수행될 수 있다. 상기 누산하는 단계(S300) 및 상기 덧셈트리 형식으로 더하는 단계(S400)는 상기 연산 선택 단계(S200)에서 선택된 경우에 수행될 수 있다.
상기 필터들을 인터리빙 방식으로 저장하는 단계(미도시)는 상기 병렬로 서로 곱하는 단계(S100)의 수행 전 또는 상기 합성곱 연산 선택 단계(S90)의 이전에 수행될 수 있다.
본 발명의 실시예들에 따르면, 연산 선택부는 누산 연산부와 덧셈트리 연산부를, 합성곱 선택부는 곱셈 연산부와 타 연산부를 선택하여 합성곱 계층의 데이터패스를 유동적으로 결정할 수 있다. 따라서, 필요에 따라 효과적인 합성곱 계층의 데이터패스를 선택하여 하드웨어의 가속도를 높이고 다양한 연산의 선택적 데이터패스를 제공하여 하드웨어의 활용도를 높일 수 있다.
이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 통상의 기술자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 곱셈 연산부
200: 연산 선택부
300: 누산 연산부
400: 덧셈트리 연산부
500: 합성곱 선택부

Claims (20)

  1. 특징 지도 버퍼, 필터 버퍼 및 합성곱 계층을 포함하는 선택적 합성곱 뉴럴 프로세서에 있어서,
    상기 합성곱 계층은,
    특징 지도를 포함하는 상기 특징 지도 버퍼의 출력 및 필터를 포함하는 상기 필터 버퍼의 출력을 입력으로 하여 병렬로 서로 곱하는 곱셈 연산부;
    상기 곱셈 연산부의 출력을 누산하는 누산 연산부;
    상기 곱셈 연산부의 출력을 덧셈트리 형식으로 더하는 덧셈트리 연산부; 및
    상기 곱셈 연산부의 출력을 상기 누산 연산부 또는 상기 덧셈트리 연산부 중 어느 하나의 입력으로 선택하여 전송하는 연산 선택부를 포함하고,
    상기 합성곱 계층은 채널별 합성곱 및 픽셀별 합성곱을 수행하고,
    상기 곱셈 연산부는 상기 특징 지도의 채널 방향으로 곱셈을 수행하며,
    상기 연산 선택부는 상기 채널별 합성곱을 수행할 경우 상기 곱셈 연산부의 출력을 상기 누산 연산부의 입력으로 전송하고, 상기 픽셀별 합성곱을 수행할 때는 상기 곱셈 연산부의 출력을 상기 덧셈트리 연산부의 입력으로 전송하는 선택적 합성곱 뉴럴 프로세서.
  2. 제1항에 있어서, 상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부는 복수개인 선택적 합성곱 뉴럴 프로세서.
  3. 제1항에 있어서, 상기 특징 지도 버퍼의 개수는 상기 필터 버퍼의 개수와 동일한 선택적 합성곱 뉴럴 프로세서.
  4. 제1항에 있어서. 상기 합성곱 계층은 채널별 합성곱을 수행하고,
    상기 곱셈 연산부는 상기 특징 지도의 채널 방향으로 곱셈을 수행하는 선택적 합성곱 뉴럴 프로세서.
  5. 삭제
  6. 제1항에 있어서, 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 상기 곱셈 연산부 또는 타 연산부 중 어느 하나의 입력으로 선택하여 전송하는 합성곱 선택부를 더 포함하는 선택적 합성곱 뉴럴 프로세서.
  7. 제6항에 있어서, 상기 타 연산부는,
    상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 서로 더하는 덧셈 연산부 또는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 산술 논리 연산을 수행하는 ALU(산술논리연산장치: Arithmetic and Logic Unit)인 선택적 합성곱 뉴럴 프로세서.
  8. 제1항에 있어서, 상기 연산 선택부는 선택입력을 포함하는 디멀티플렉서(Demux)인 선택적 합성곱 뉴럴 프로세서.
  9. 제1항에 있어서, 상기 필터 버퍼에는 필터들이 인터리빙 방식으로 저장되는 선택적 합성곱 뉴럴 프로세서.
  10. 제1항에 있어서, 상기 누산 연산부의 개수는 상기 필터 버퍼의 폭과 같고,
    상기 덧셈트리 연산부의 입력의 개수는 상기 필터 버퍼의 폭과 같은 선택적 합성곱 뉴럴 프로세서.
  11. 특징 지도 버퍼, 필터 버퍼 및 합성곱 계층을 포함하는 선택적 합성곱 뉴럴 프로세서에서 수행되는 합성곱 계층의 선택적 데이터 처리 방법에 있어서,
    곱셈 연산부가 특징 지도를 포함하는 특징 지도 버퍼의 출력 및 필터를 포함하는 필터 버퍼의 출력을 입력으로 하여 병렬로 서로 곱하는 단계;
    연산 선택부가 상기 곱셈 연산부의 출력을 누산 연산부 또는 덧셈트리 연산부 중 어느 하나의 입력으로 선택하여 전송하는 연산 선택 단계;
    누산 연산부가 상기 곱셈 연산부의 출력을 누산하는 단계; 및
    덧셈트리 연산부가 상기 곱셈 연산부의 출력을 덧셈트리 형식으로 더하는 단계를 포함하고,
    상기 합성곱 계층은 채널별 합성곱 및 픽셀별 합성곱의 수행하고,
    상기 병렬로 서로 곱하는 단계에서는 상기 곱셈 연산부가 상기 특징 지도의 채널 방향으로 곱셈을 수행하며,
    상기 연산 선택 단계에서는 상기 연산 선택부는 상기 채널별 합성곱을 수행할 경우 상기 곱셈 연산부의 출력을 상기 누산 연산부의 입력으로 전송하고, 상기 픽셀별 합성곱을 수행할때는 상기 곱셈 연산부의 출력을 상기 덧셈트리 연산부의 입력으로 전송하는 합성곱 계층의 선택적 데이터 처리 방법.
  12. 제11항에 있어서, 상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부는 복수개이고,
    상기 병렬로 서로 곱하는 단계, 연산 선택 단계, 누산하는 단계 및 덧셈트리 형식으로 더하는 단계는 각 상기 특징 지도 버퍼, 상기 필터 버퍼, 상기 곱셈 연산부, 상기 연산 선택부, 상기 누산 연산부 및 상기 덧셈트리 연산부에서 독립적으로 수행되는 합성곱 계층의 선택적 데이터 처리 방법.
  13. 제11항에 있어서, 상기 특징 지도 버퍼의 개수는 상기 필터 버퍼의 개수와 동일한 합성곱 계층의 선택적 데이터 처리 방법.
  14. 제11항에 있어서. 상기 합성곱 계층은 채널별 합성곱을 수행하고,
    상기 병렬로 서로 곱하는 단계에서는 곱셈 연산부가 상기 특징 지도의 채널 방향으로 곱셈을 수행하는 합성곱 계층의 선택적 데이터 처리 방법.
  15. 삭제
  16. 제11항에 있어서, 합성곱 선택부가 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 상기 곱셈 연산부 또는 타 연산부 중 어느 하나의 입력으로 선택하여 전송하는 합성곱 선택 단계를 더 포함하는 합성곱 계층의 선택적 데이터 처리 방법.
  17. 제16항에 있어서, 상기 타 연산부는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 서로 더하는 덧셈 연산부 또는 상기 특징 지도 버퍼의 출력 및 상기 필터 버퍼의 출력을 입력으로 하여 산술 논리 연산을 수행하는 ALU(산술논리연산장치: Arithmetic and Logic Unit)인 합성곱 계층의 선택적 데이터 처리 방법.
  18. 제11항에 있어서, 상기 연산 선택부는 선택입력을 포함하는 디멀티플렉서(Demux)인 합성곱 계층의 선택적 데이터 처리 방법.
  19. 제11항에 있어서, 필터 버퍼가 필터들을 인터리빙 방식으로 저장하는 단계를 더 포함하는 합성곱 계층의 선택적 데이터 처리 방법.
  20. 제11항에 있어서, 상기 누산 연산부의 개수는 상기 필터 버퍼의 폭과 같고,
    상기 덧셈트리 연산부의 입력의 개수는 상기 필터 버퍼의 폭과 같은 합성곱 계층의 선택적 데이터 처리 방법.
KR1020180160495A 2018-12-13 2018-12-13 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서 KR102167211B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180160495A KR102167211B1 (ko) 2018-12-13 2018-12-13 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180160495A KR102167211B1 (ko) 2018-12-13 2018-12-13 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서

Publications (2)

Publication Number Publication Date
KR20200072666A KR20200072666A (ko) 2020-06-23
KR102167211B1 true KR102167211B1 (ko) 2020-10-19

Family

ID=71137920

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180160495A KR102167211B1 (ko) 2018-12-13 2018-12-13 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서

Country Status (1)

Country Link
KR (1) KR102167211B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116368496A (zh) * 2020-10-15 2023-06-30 三星电子株式会社 电子设备和电子设备的控制方法
KR20230100050A (ko) 2021-12-28 2023-07-05 주식회사 퓨쳐디자인시스템 광폭 데이터 정렬장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102335955B1 (ko) 2016-11-07 2021-12-08 한국전자통신연구원 컨볼루션 신경망 시스템 및 그것의 동작 방법
KR102592721B1 (ko) * 2017-01-11 2023-10-25 한국전자통신연구원 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Zhao, Boya, Mingjiang Wang, and Ming Liu. "An energy-efficient coarse grained spatial architecture for convolutional neural networks AlexNet." Ieice Electronics Express (2017.07.27. 공개)*

Also Published As

Publication number Publication date
KR20200072666A (ko) 2020-06-23

Similar Documents

Publication Publication Date Title
CN111667051B (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
US11537687B2 (en) Spatial locality transform of matrices
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
CN107832839A (zh) 执行卷积神经网络中的运算的方法和装置
CN110366732A (zh) 用于在卷积神经网络中进行矩阵处理的方法和设备
CN105930902A (zh) 一种神经网络的处理方法、系统
KR102167211B1 (ko) 합성곱 계층의 선택적 데이터 처리 방법 및 이를 이용한 뉴럴 프로세서
KR102126857B1 (ko) 행 단위 연산 뉴럴 프로세서 및 이를 이용한 데이터 처리 방법
EP3896615A1 (en) Computation unit and method for performing computations for deep neural networks
TW202123093A (zh) 實行卷積運算的系統及方法
CN111583095B (zh) 图像数据存储方法、图像数据处理方法、系统及相关装置
CN103078732A (zh) 一种素域椭圆曲线加密的点乘加速电路
CN112395092B (zh) 数据处理方法及人工智能处理器
WO2022121474A1 (zh) 优化神经网络卷积残差结构的方法、系统、设备及介质
KR20220015813A (ko) 딥러닝 연산 수행 방법 및 장치
CN111133457B (zh) 电子设备及其控制方法
CN110414672B (zh) 卷积运算方法、装置及系统
CN109598335B (zh) 一种二维卷积脉动阵列结构及实现方法
CN112799852B (zh) 逻辑节点的多维sbp分布式签名决策系统及其方法
CN116882455A (zh) 一种Pointwise卷积计算装置与方法
CN111047025B (zh) 一种卷积计算方法及装置
JP2019040403A (ja) 半導体装置および画像認識システム
US20220171605A1 (en) Systolic array cells with multiple accumulators
JP2023518717A (ja) 機械学習アクセラレータの電力削減
CN117063182A (zh) 一种数据处理方法和装置

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant