KR20190099931A - 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치 - Google Patents

시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR20190099931A
KR20190099931A KR1020180020015A KR20180020015A KR20190099931A KR 20190099931 A KR20190099931 A KR 20190099931A KR 1020180020015 A KR1020180020015 A KR 1020180020015A KR 20180020015 A KR20180020015 A KR 20180020015A KR 20190099931 A KR20190099931 A KR 20190099931A
Authority
KR
South Korea
Prior art keywords
data
input
feature map
input feature
operator
Prior art date
Application number
KR1020180020015A
Other languages
English (en)
Other versions
KR102487535B1 (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 KR1020180020015A priority Critical patent/KR102487535B1/ko
Priority to PCT/KR2019/002029 priority patent/WO2019164237A1/ko
Publication of KR20190099931A publication Critical patent/KR20190099931A/ko
Application granted granted Critical
Publication of KR102487535B1 publication Critical patent/KR102487535B1/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/08Learning methods

Landscapes

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

Abstract

시스톨릭 배열을 통해 입력 데이터에 관하여 컨볼루션 연산을 수행하여 출력 데이터를 학습하는 인공 지능(Artificial Intelligence, AI) 학습 방법 및 장치를 제공한다. 본 개시의 일 실시예에 따르면, 시스톨릭 배열 연산기에 입력되는 데이터의 순서(sequence)를 변경하는 매핑(mapping)을 통해 컨볼루션 연산을 수행하는데 소모되는 전력량을 감소시키고, 연산 속도를 증가시키는 방법 및 장치를 제공한다.

Description

시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치 {METHOD AND APPARATUS FOR OPERATING DEEP LEARNING BY USING THE SYSTOLIC ARRAY}
본 개시는 컨볼루션 뉴럴 네트워크(Convolution Neural Network, CNN)를 기반으로 한 딥 러닝 연산에 있어서, 시스톨릭 배열(Systolic Array)을 이용하여 입력 특징 맵과 필터의 컨볼루션 연산을 수행하는 방법 및 장치에 관한 것이다.
인공 지능(Artificial Intelligence, AI) 시스템은 인간 수준의 지능을 구현하는 컴퓨터 시스템이며, 기존 Rule 기반 스마트 시스템과 달리 기계가 스스로 학습하고 판단하며 똑똑해지는 시스템이다. 인공지능 시스템은 사용할수록 인식률이 향상되고 사용자 취향을 보다 정확하게 이해할 수 있게 되어, 기존 Rule 기반 스마트 시스템은 점차 딥 러닝 기반 인공지능 시스템으로 대체되고 있다.
인공지능 기술은 기계학습(딥 러닝) 및 기계학습을 활용한 요소 기술들로 구성된다.
기계학습은 입력 데이터들의 특징을 스스로 분류/학습하는 알고리즘 기술이며, 요소기술은 딥 러닝 등의 기계학습 알고리즘을 활용하여 인간 두뇌의 인지, 판단 등의 기능을 모사하는 기술로서, 언어적 이해, 시각적 이해, 추론/예측, 지식 표현, 동작 제어 등의 기술 분야로 구성된다.
인공지능 기술이 응용되는 다양한 분야는 다음과 같다. 언어적 이해는 인간의 언어/문자를 인식하고 응용/처리하는 기술로서, 자연어 처리, 기계 번역, 대화시스템, 질의 응답, 음성 인식/합성 등을 포함한다. 시각적 이해는 사물을 인간의 시각처럼 인식하여 처리하는 기술로서, 객체 인식, 객체 추적, 영상 검색, 사람 인식, 장면 이해, 공간 이해, 영상 개선 등을 포함한다. 추론 예측은 정보를 판단하여 논리적으로 추론하고 예측하는 기술로서, 지식/확률 기반 추론, 최적화 예측, 선호 기반 계획, 추천 등을 포함한다. 지식 표현은 인간의 경험정보를 지식데이터로 자동화 처리하는 기술로서, 지식 구축(데이터 생성/분류), 지식 관리(데이터 활용) 등을 포함한다. 동작 제어는 차량의 자율 주행, 로봇의 움직임을 제어하는 기술로서, 움직임 제어(항법, 충돌, 주행), 조작 제어(행동 제어) 등을 포함한다.
딥 러닝 연산을 수행할 때, 계산량이 많은 컨볼루션의 경우, 기가 단위(Giga)의 연산 또는 그에 상응하는 능력을 요구하며, 특히 32bit 또는 16 bit 입력 데이터와 필터의 웨이트(weight) 버스를 사용하는 경우, 추론만 하더라도 프로세서(processor) 내부에서 토글(toggle)되는 데이터의 양이 많다. 토글되는 데이터의 양이 많을수록 프로세서에서 소모되는 전력량이 증가하게 되는바, 최근의 모바일(mobile) 디바이스 환경에서 배터리의 용량 한계로 인한 문제점이 있다.
본 개시는 시스톨릭 배열을 통해 입력 데이터에 관하여 컨볼루션 연산을 수행하여 출력 데이터를 학습하는 딥 러닝 연산에 관한 것으로서, 시스톨릭 배열 연산기에 입력되는 데이터의 순서를 변경하는 매핑(mapping)을 통해 연산을 수행하는데 소모되는 전력량을 감소시키고, 연산 속도를 증가시키는 방법 및 장치를 제공하는 것을 목적으로 한다.
상술한 기술적 과제를 해결하기 위하여, 본 개시의 일 실시예는 순차적인 클럭(clock)에 따라 동일한 값을 갖는 데이터가 기설정된 회수만큼 반복되어 시스톨릭 배열 연산기 내의 곱셈 덧셈 연산기에 입력되도록 입력 특징 맵의 데이터의 순서를 변경하여 상기 입력 특징 맵의 데이터를 시스톨릭 배열로 매핑(mapping)하는 단계, 매핑된 상기 입력 특징 맵의 데이터 및 필터의 웨이트 값을 상기 시스톨릭 배열 연산기에 입력시켜 컨볼루션 연산(convolution)을 수행하는 단계, 및 상기 컨볼루션 연산된 출력값들을 누적 합산(accumulation)하여 출력 특징 맵(output feature map)을 생성하는 단계를 포함하는, 시스톨릭 배열(systolic array)을 이용하여 딥 러닝(deep learning) 연산을 수행하는 방법을 제공한다.
예를 들어, 상기 매핑 단계는 상기 입력 특징 맵의 동일한 두 개의 입력 데이터 값이 반복되어 상기 시스톨릭 배열 연산기에 입력되도록 상기 입력 데이터의 입력 순서를 변경할 수 있다.
예를 들어, 상기 필터는 N by N (NXN) 크기를 갖고, 상기 매핑 단계는 상기 입력 특징 맵의 데이터가 상기 필터의 크기(N)와 동일한 횟수만큼 반복적으로 상기 시스톨릭 배열 연산기에 입력되도록 상기 입력 특징 맵의 데이터의 입력 순서를 변경할 수 있다.
예를 들어, 상기 출력 특징 맵을 생성하는 단계는 상기 필터의 스트라이드(stride) 값 및 상기 스트라이드로 인하여 제1 방향 및 제2 방향으로 중복되는 상기 입력 특징 맵의 데이터를 고려하여 상기 컨볼루션 연산된 출력값들을 선택하는 단계, 및 선택된 출력값들을 누적 합산하여 상기 입력 특징 맵과 상기 필터의 조합으로 인한 출력 특징 맵을 생성하는 단계를 포함할 수 있다.
예를 들어, 상기 방법은 입력 특징 맵의 데이터 중 0값을 갖는 데이터를 식별하는 단계를 더 포함할 수 있다.
예를 들어, 상기 매핑 단계는 0값을 갖는 데이터가 반복적으로 상기 시스톨릭 연산기에 입력되도록 상기 0값을 갖는 데이터끼리 그룹핑(grouping)할 수 있다.
예를 들어, 상기 필터는 N by N (NXN) 크기를 갖고, 상기 매핑 단계는 상기 0값을 데이터가 상기 필터의 크기(N)와 동일한 횟수만큼 반복적으로 상기 시스톨릭 배열 연산기에 입력되도록 상기 0값을 갖는 데이터를 상기 필터의 크기(N) 만큼 모아서 그룹핑할 수 있다.
예를 들어, 상기 방법은 상기 0값을 갖는 데이터의 데이터의 상기 입력 특징 맵(input feature map) 상의 로(row) 및 컬럼(column) 위치를 메모리에 저장하는 단계를 더 포함하고, 상기 컨볼루션 연산을 수행하는 단계는 상기 저장된 위치 정보를 상기 메모리로부터 판독(read)하고, 판독된 위치 정보를 참조하여 상기 0값을 갖는 데이터에 대해서는 곱셈 및 덧셈 연산을 스킵(skip)할 수 있다.
예를 들어, 상기 방법은 0값으로 식별된 데이터가 입력되는 경우, 식별된 0값 데이터의 상기 시스톨릭 배열 상에서의 위치 정보를 획득하는 단계를 더 포함하고, 상기 출력 특징 맵을 생성하는 단계는 획득한 상기 0값 데이터의 위치 정보에 기초하여 상기 입력 특징 맵의 각 영역에 대한 출력값들을 누적 합산할 수 있다.
상술한 기술적 과제를 해결하기 위하여 본 개시의 일 실시예는 시스톨릭 배열을 이용하여 입력 특징 맵의 데이터와 필터의 웨이트 값의 컨볼루션 연산을 수행하는 프로세서를 포함하고, 상기 프로세서는 순차적인 클럭(clock)에 따라 동일한 값을 갖는 데이터가 기설정된 회수만큼 반복되어 곱셈 덧셈 연산기에 입력되도록 상기 입력 특징 맵의 데이터의 순서를 변경하여 상기 입력 특징 맵의 데이터를 시스톨릭 배열로 매핑하는 매퍼(mapper), 매핑된 상기 입력 특징 맵 데이터 또는 상기 필터의 웨이트 값에 대하여 컨볼루션 연산을 수행하는 복수의 곱셈 덧셈 연산기를 포함하는 시스톨릭 배열 연산기, 및 상기 컨볼루션 연산된 출력값들을 누적 합산(accumulation)하여 출력 특징 맵(output feature map)을 생성하는 누산기(adder)를 포함하는, 딥 러닝 연산을 수행하는 전자 장치(electronic device)를 제공한다.
예를 들어, 상기 매퍼는 상기 입력 특징 맵의 동일한 두 개의 입력 데이터 값이 반복되어 상기 시스톨릭 배열 연산기에 입력되도록 상기 입력 데이터의 입력 순서를 변경할 수 있다.
예를 들어, 상기 필터는 N by N (NXN) 크기를 갖고, 상기 매퍼는 상기 입력 특징 맵의 데이터가 상기 필터의 크기(N)와 동일한 횟수만큼 반복적으로 상기 시스톨릭 배열 연산기 내의 상기 곱셈 덧셈 연산기에 입력되도록 상기 입력 특징 맵의 데이터의 입력 순서를 변경할 수 있다.
예를 들어, 상기 누산기는 상기 필터의 스트라이드(stride) 값 및 상기 스트라이드로 인하여 제1 방향 및 제2 방향으로 중복되는 상기 입력 특징 맵의 데이터를 고려하여 상기 컨볼루션 연산된 출력값들을 선택하고, 상기 선택된 출력값들을 누적 합산하여 상기 입력 특징 맵의 각 영역에 대한 출력 특징 맵을 생성할 수 있다.
예를 들어, 상기 매퍼는 상기 입력 특징 맵의 데이터 중 0값을 갖는 데이터를 식별할 수 있다.
예를 들어, 상기 매퍼는 상기 식별된 0값을 갖는 데이터가 반복적으로 상기 시스톨릭 연산기에 입력되도록 상기 0값을 갖는 데이터끼리 그룹핑(grouping)할 수 있다.
예를 들어, 상기 필터는 N by N (NXN) 크기를 갖고, 상기 매퍼는 상기 0값을 데이터가 상기 필터의 크기(N)와 동일한 횟수만큼 반복적으로 상기 시스톨릭 배열 연산기에 입력되도록 상기 0값을 갖는 데이터를 상기 필터의 크기(N) 만큼 모아서 그룹핑할 수 있다.
예를 들어, 상기 전자 장치는 상기 0값을 갖는 데이터의 로(row) 및 컬럼(column) 위치를 저장하는 메모리를 더 포함하고, 상기 프로세서는 상기 저장된 위치 정보를 상기 메모리로부터 판독(read)하고, 판독된 위치 정보를 참조하여 상기 0값을 갖는 데이터에 대해서는 곱셈 및 덧셈 연산을 스킵(skip)할 수 있다.
예를 들어, 상기 전자 장치는 상기 매퍼에 의해 시스톨릭 배열로 매핑된 상기 입력 특징 맵의 데이터 중 0값으로 식별된 데이터의 상기 시스톨릭 배열 상에서의 위치 정보를 획득하는 언매퍼(unmapper)를 더 포함하고, 상기 언매퍼는 획득한 상기 0값 데이터의 위치 정보에 기초하여 상기 입력 특징 맵의 각 영역에 대한 출력값들을 누적 합산하도록 상기 누산기를 제어하는 애더 트리 제어 회로(adder-tree control circuit)를 포함할 수 있다.
상술한 기술적 과제를 해결하기 위하여, 본 개시의 일 실시예는 컴퓨터로 읽을 수 있는 기록 매체를 제공하고, 상기 기록 매체는 순차적인 클럭(clock)에 따라 동일한 값을 갖는 데이터가 기설정된 회수만큼 반복되어 시스톨릭 배열 연산기 내의 곱셈 덧셈 연산기에 입력되도록 입력 특징 맵의 데이터의 순서를 변경하여 상기 입력 특징 맵의 데이터를 시스톨릭 배열로 매핑(mapping)하는 단계, 매핑된 상기 입력 특징 맵의 데이터 및 필터의 웨이트 값을 상기 시스톨릭 배열 연산기에 입력시켜 컨볼루션 연산(convolution)을 수행하는 단계, 및 상기 컨볼루션 연산된 출력값들을 누적 합산(accumulation)하여 출력 특징 맵(output feature map)을 생성하는 단계에 관한 명령어(instruction)들을 포함할 수 있다.
본 개시는, 다음의 자세한 설명과 그에 수반되는 도면들의 결합으로 쉽게 이해될 수 있으며, 참조 번호(reference numerals)들은 구조적 구성요소(structural elements)를 의미한다.
도 1a는 인공 뉴럴 네트워크(Artificial Neural Network)를 이용한 딥 러닝 연산 방법을 도식화한 도면이고, 도 1b는 딥 러닝 연산에서 입력으로 제공되는 입력 특징 맵의 데이터와 필터를 도식화한 도면이다.
도 1c는 컨볼루션 연산을 수행하는 과정을 도식화한 도면이다.
도 2는 종래의 시스톨릭 배열(Systolic Array)을 이용하여 컨볼루션 연산을 수행하는 방법을 설명하기 위한 개념도이다.
도 3a는 본 개시의 일 실시예에 따른 딥 러닝 기반의 컨볼루션 연산을 수행하는 방법을 도식화한 도면이고, 도 3b는 본 개시의 일 실시예에 따라 입력 특징 맵의 데이터의 입력 순서를 변경하여 시스톨릭 배열로 매핑하는 방법을 도식화한 도면이다.
도 3c는 본 개시의 일 실시예에 따른 시스톨릭 배열 연산기를 이용하여 컨볼루션 연산을 수행하고, 연산된 결과 값들을 누적 합산(accumulation)하여 출력 특징 맵을 생성하는 방법을 도식화한 도면이다.
도 4는 본 개시의 일 실시예에 따른 시스톨릭 배열을 이용하여 딥 러닝 연산을 수행하는 방법을 나타내는 흐름도이다.
도 5a는 본 개시의 일 실시예에 따른 딥 러닝 기반의 컨볼루션 연산을 수행하는 방법을 도식화한 도면이고, 도 5b는 본 개시의 일 실시예에 따라 입력 특징 맵의 데이터와 필터의 웨이트를 연산하는 방법을 도식화한 도면이다.
도 6은 본 개시의 일 실시예에 따른 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 장치의 구성 요소를 도시한 블록도이다.
도 7a 및 도 7b는 본 개시의 일 실시예에 따라 입력 특징 맵의 데이터의 입력 순서를 변경하여 시스톨릭 배열로 매핑하는 방법을 도식화한 도면들이다.
도 8은 본 개시의 일 실시예에 따른 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 장치의 구성 요소를 도시한 블록도이다.
도 9a는 본 개시의 일 실시예에 따른 장치의 구성 요소인 메모리의 버퍼(buffer)에 저장된 데이터를 도식화한 도면이고, 도 9b는 본 개시의 일 실시예에 따라 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 방법을 나타내는 흐름도이다.
도 10a는 본 개시의 일 실시예에 따른 장치의 구성 요소인 메모리의 버퍼에 저장된 데이터를 도식화한 도면이고, 도 10b는 본 개시의 일 실시예에 따라 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 방법을 나타내는 흐름도이다.
도 11a는 본 개시의 일 실시예에 따른 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 연산 회로를 도식화한 도면이고, 도 11b는 입력 특징 맵과 필터의 컨볼루션 연산에 따라 생성된 출력 특징 맵을 도식화한 도면이다.
본 명세서의 실시예들에서 사용되는 용어는 본 개시의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "...모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 개시의 실시예들을 상세하게 설명한다.
도 1a는 인공 뉴럴 네트워크(Artificial Neural Network)를 이용한 딥 러닝 연산 방법을 도식화한 도면이고, 도 1b는 딥 러닝 연산에서 입력으로 제공되는 입력 특징 맵(100)의 데이터와 필터(110-1 내지 110-n)를 도식화한 도면이다.
딥 러닝(Deep Learning) 등을 포함하는 인공지능(AI) 알고리즘은 인공 뉴럴 네트워크(Artificial Neural Network, ANN)에 입력 데이터(10)을 입력시키고, 컨볼루션 등의 연산을 통해 출력 데이터(30)를 학습하는 것을 특징으로 한다. 인공 뉴럴 네트워크는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(Computational Architecture)를 의미할 수 있다. 인공 뉴럴 네트워크 내에서, 뇌의 뉴런들에 해당되는 노드들은 서로 연결되어 있고, 입력 데이터를 처리하기 위하여 집합적으로 동작한다. 다양한 종류의 뉴럴 네트워크들을 예로 들면, 컨볼루션 뉴럴 네트워크(Convolutional Neural Network, CNN), 회귀 뉴럴 네트워크(Recurrent Neural Network, RNN), 딥 빌리프 네트워크(Deep Belief Network, DBN), 제한된 볼츠만 기계(Restricted Boltzman Machine, RBM) 방식 등이 있으나, 이에 제한되지 않는다. 피드-포워드(feed-forward) 뉴럴 네트워크에서, 뉴럴 네트워크의 뉴런들은 다른 뉴런들과의 연결들(links)을 갖는다. 이와 같은 연결들은 뉴럴 네트워크를 통해, 한 방향으로, 예를 들어 순방향(forward direction)으로 확장될 수 있다.
도 1a를 참조하면, 인공 뉴럴 네트워크에 입력 데이터(10)가 입력되고, 하나 이상의 레이어(layer)를 포함하는 컨볼루션 뉴럴 네트워크(Convolution Neural Network, CNN)(20)를 통해 출력 데이터(30)가 출력되는 구조가 도시된다. 인공 뉴럴 네트워크는 2개 이상의 레이어를 보유한 딥 뉴럴 네트워크(Deep Neural Network)일 수 있다.
컨볼루션 뉴럴 네트워크(20)는 입력 데이터(10)로부터 테두리, 선 색 등과 같은 "특징들(features)"을 추출하기 위해 이용될 수 있다. 컨볼루션 뉴럴 네트워크(20)는 복수의 레이어를 포함할 수 있다. 각각의 레이어는 데이터를 수신할 수 있고, 해당 레이어에 입력되는 데이터를 처리하여 해당 레이어에서 출력되는 데이터를 생성할 수 있다. 레이어에서 출력되는 데이터는, 컨볼루션 뉴럴 네트워크(20)에 입력된 이미지 또는 입력된 특징 맵(Feature Map)을 하나 이상의 필터(filter)의 웨이트(weight) 값과 컨볼루션 연산하여 생성한 특징 맵일 수 있다. 컨볼루션 뉴럴 네트워크(20)의 초기 레이어들은 입력으로부터 에지들 또는 그레디언트들과 같은 낮은 레벨의 특징들을 추출하도록 동작될 수 있다. 컨볼루션 뉴럴 네트워크(20)의 다음 레이어들은 이미지 내의 눈, 코 등과 같은 점진적으로 더 복잡한 특징들을 추출할 수 있다.
도 1b를 참조하면, 인공 뉴럴 네트워크에 입력으로 제공되는 입력 특징 맵(100) 및 복수의 필터(110-1 내지 110-n)이 도시된다. 입력 특징 맵(100)은 인공 뉴럴 네트워크에 입력되는 이미지의 픽셀 값 또는 수치 데이터의 집합일 수 있으나, 이에 제한되지 않는다. 도 1b에서 입력 특징 맵(100)은 인공 뉴럴 네트워크를 통해 학습할 대상이 되는 이미지의 픽셀 값으로 정의될 수 있다. 예를 들어, 입력 특징 맵(100)은 256×256의 픽셀과 K의 깊이(depth)를 가질 수 있다. 그러나, 상기 값은 예시적인 것이고, 입력 특징 맵(100)의 픽셀 크기가 상기 예시로 한정되는 것은 아니다.
필터(110-1 내지 110-n)은 N개로 형성될 수 있다. 복수의 필터(110-1 내지 110-n) 각각은 n by n(n×n)의 웨이트(weight) 값을 포함할 수 있다. 예를 들어, 복수의 필터(110-1 내지 110-n) 각각은 3×3의 픽셀과 K의 깊이값을 가질 수 있다. 그러나, 상기 필터의 크기는 예시적인 것이고, 복수의 필터(110-1 내지 110-n) 각각의 크기가 상기 예시로 한정되는 것은 아니다.
도 1c는 딥 러닝 기반에서 컨볼루션 연산을 수행하는 과정을 도식화한 도면이다.
도 1c를 참조하면, 인공 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 과정은, 각각의 레이어에서 입력 특징 맵(100)과 필터(110)와의 곱셈 및 덧셈 연산을 하여 출력 값을 생성하고, 출력 값을 누적하여 합산함으로써, 출력 특징 맵(120)을 생성하는 과정을 의미할 수 있다.
컨볼루션 연산 수행 과정은, 현재 레이어에서 입력 특징 맵(100)의 좌측 상단으로부터 우측 하단까지 일정한 크기, 즉 n×n 크기의 필터(110)를 적용하여 곱셈 및 덧셈 연산을 수행하는 과정이다. 이하에서는, 필터(110)의 크기가 3×3인 경우에 컨볼루션 연산을 수행하는 과정을 설명하기로 한다.
예를 들어, 먼저 입력 특징 맵(100)의 좌측 상단 제1 영역(101)에서 3×3, 즉 제1 방향으로 3개의 데이터와 제2 방향으로 3개의 데이터를 포함한 총 9개의 데이터(x11 내지 x33)를 각각 필터(110)의 웨이트 값(weight)(w11 내지 w33)과 곱하는 연산을 수행한다. 이후, 곱셈 연산의 출력 값, 즉 x11*w11, x12*w12, x13*w13, x21*w21, x22*w22, x23*w23, x31*w31, x32*w32, x33*w33을 모두 누적하여 합산하면 출력 특징 맵(120)의 제1-1 출력 데이터(y11)가 생성된다.
이후, 입력 특징 맵(100)의 좌측 상단의 제1 영역(101)에서 제2 영역(102)으로 데이터의 단위만큼 이동하면서 연산한다. 이 때, 컨볼루션 연산 과정에서 입력 특징 맵(100) 내의 데이터가 이동하는 개수를 스트라이드(stride)라고 하며, 스트라이드의 크기에 따라 생성되는 출력 특징 맵(120)의 크기가 결정될 수 있다. 예를 들어, 스트라이드가 1인 경우, 제2 영역(102)에 포함된 총 9개의 입력 데이터(x12 내지 x34)를 필터(110)의 웨이트 값(w11 내지 w33)과 곱하는 연산을 수행하고, 곱셈 연산의 출력 값인 x12*w11, x13*w12, x14*w13, x22*w21, x23*w22, x24*w23, x32*w31, x33*w32, x34*w33을 모두 누적하여 합산하면 출력 특징 맵(120)의 제1-2 출력 데이터(y12)가 생성된다.
도 1c에 도시된 컨볼루션 연산을 수행하여 출력 특징 맵(120)을 생성하는 경우, 입력 특징 맵(100)의 데이터의 수와 필터(110)의 크기에 따라 곱셈 및 덧셈 연산을 수행하는 횟수가 많아지게 된다. 픽셀의 크기가 큰 이미지 파일의 경우 초당 기가(Giga) 단위의 연산을 수행해야 하므로, 연산에 소요되는 시간 및 전력량이 많아지게 되는 문제점이 있다.
도 2는 종래의 시스톨릭 배열(Systolic Array)을 이용하여 컨볼루션 연산을 수행하는 방법을 설명하기 위한 개념도이다.
도 2를 참조하면, 입력 특징 맵(200)의 각 데이터는 일정한 레이턴시(latency)를 갖는 클럭(clock)에 따라 순차적으로 곱셈 덧셈 연산기(211 내지 219)에 입력되는 시스톨릭 배열로 매핑(mapping)될 수 있다. 예를 들어, 제1 클럭에는 시스톨릭 배열의 제1 행(①)의 제1-1 데이터(x11)가 제1 곱셈 덧셈 연산기(211)에 입력될 수 있다. 도 2에는 도시되지 않았지만, 제1-1 데이터(x11)는 제1 클럭에서 w11의 웨이트 값과 곱해질 수 있다. 이후 제2 클럭에서는 제1-1 데이터(x11)는 제2 곱셈 덧셈 연산기(212)에 입력되고, 제2-1 데이터(x21)는 제1 곱셈 덧셈 연산기(211)에 입력되며, 제1-2 데이터(x12)는 제4 곱셈 덧셈 연산기(214)에 입력될 수 있다. 마찬가지로, 제3 클럭에서 제1-1 데이터(x11)는 제3 곱셈 덧셈 연산기(213)에 입력되고, 제2-1 데이터(x21)는 제2 곱셈 덧셈 연산기(212)에 입력되며, 제1-2 데이터(x12)는 제5 곱셈 덧셈 연산기(215)에 입력 될 수 있다. 제3 클럭에서 제3-1 데이터(x31)는 제1 곱셈 덧셈 연산기(211)에 입력되고, 제2-2 데이터(x22)는 제4 곱셈 덧셈 연산기(214)에 입력되며, 제1-3 데이터(x13)는 제7 곱셈 덧셈 연산기(217)에 입력될 수 있다.
전술한 바와 같이, 입력 데이터(200)는 순차적인 클럭에 따라 곱셈 덧셈 연산기(211 내지 219) 내의 각 곱셈 덧셈 연산기에 입력되고, 각 클럭에 따라 입력된 웨이트 값과 곱셈 및 덧셈 연산이 수행될 수 있다. 순차적으로 입력된 입력 특징 맵(200)의 각 데이터와 웨이트 값의 곱셈 및 덧셈 연산을 통해 출력된 값들을 누적 합산함에 따라 출력 특징 맵이 생성될 수 있다.
도 2에 도시된 시스톨릭 배열을 이용한 컨볼루션 연산은 도 1c에 도시된 컨볼루션 연산 보다 연산 속도가 더 빠를 수 있다.
도 3a는 딥 러닝 기반의 컨볼루션 연산을 수행하는 방법을 도식화한 도면이다.
도 3a를 참조하면, 입력 특징 맵(300)의 좌측 상단으로부터 우측 하단까지 일정한 크기, 즉 3×3 크기의 필터(310)를 적용하여 곱셈 및 덧셈 연산을 수행하는 과정이 도시되어 있다.
본 개시의 일 실시예에 따른 컨볼루션 연산은, 먼저 입력 특징 맵(300)의 좌측 상단 제1 영역(301)에서 3×3, 즉 제1 방향으로 3개의 데이터와 제2 방향으로 3개의 데이터를 포함한 총 9개의 데이터(x11 내지 x33)를 각각 필터(310)의 웨이트 값(weight)(w11 내지 w33)과 곱하는 연산을 수행한다. 이후, 곱셈 연산의 출력 값, 즉 x11*w11, x12*w12, x13*w13, x21*w21, x22*w22, x23*w23, x31*w31, x32*w32, x33*w33을 모두 누적하여 합산하면 출력 특징 맵(320)의 제1-1 출력 데이터(y11)가 생성된다.
이후, 입력 특징 맵(300)의 좌측 상단의 제1 영역(301)에서 제2 영역(302)으로 1만큼 스트라이드하고, 제2 영역(302)에 포함된 총 9개의 입력 데이터(x12 내지 x34)를 필터(310)의 웨이트 값(w11 내지 w33)과 곱하는 연산을 수행하고, 곱셈 연산의 출력 값인 x12*w11, x13*w12, x14*w13, x22*w21, x23*w22, x24*w23, x32*w31, x33*w32, x34*w33을 모두 누적하여 합산하면 출력 특징 맵(320)의 제1-2 출력 데이터(y12)가 생성된다. 스트라이드의 크기가 1인 경우, 제1 영역(301)과 제2 영역(302) 사이에서 입력 특징 맵(300)의 데이터 중 중복되어 연산에 사용되는 데이터는 x12, x13, x22, x23, x32, x33을 포함하는 총 6개의 데이터이다.
스트라이드를 계속하여 제3 영역(303)에 도달한 경우, 제3 영역(303)에 포함된 총 9개의 데이터, 즉 x21 내지 x43은 필터(310)의 웨이트 값(w11 내지 w33)과 곱하는 연산이 수행되고, 곱셈 연산의 출력 값인 x21*w11, x22*w12, x23*w13, x31*w21, x32*w22, x33*w23, x41*w31, x42*w32, x43*w33을 모두 누적하여 합산하면 출력 특징 맵(320)의 제2-1 출력 데이터(y21)가 생성된다. 제3 영역(303)과 제1 영역(301) 사이에서 입력 특징 맵(300)의 데이터 중 중복되어 연산에 사용되는 데이터는 x21, x22, x23, x31, x32, x33을 포함하는 총 6개의 데이터이다.
즉, 스트라이드가 1인 경우 입력 데이터 중 특정 영역(300A)에 포함된 입력 데이터(x22, x23, x32, x33, x42, x43)는 총 3번씩 중복되어 곱셈 및 덧셈 연산에 입력되게 된다. 여기서, 중복되는 회수는 필터의 크기 및 스트라이드의 값에 따라 결정될 수 있다. 입력 특징 맵(300)의 데이터가 x11, x12, x13, x12, x13, x14, x13, x14, x15,... , 로 순차적으로 입력됨에 따라 각 클럭마다 데이터를 토글(toggle)해야 하고, 이로 인하여 전력 소비량이 늘어나게 된다.
도 3b는 본 개시의 일 실시예에 따라 입력 특징 맵(300)의 데이터의 입력 순서(sequence)를 변경하여 시스톨릭 배열로 매핑하는 방법을 도식화한 도면이다.
도 3b를 참조하면, 입력 특징 맵(300)의 데이터들은 순차적인 클럭(clock)에 따라 데이터들이 입력되는 시스톨릭 배열로 매핑되고, 입력 특징 맵(300)의 동일한 값을 갖는 데이터가 반복되어 시스톨릭 배열 연산기 내의 각 곱셈 덧셈 연산기(311 내지 319)에 입력되도록 입력 특징 맵(300)의 데이터의 순서를 변경될 수 있다. 예를 들어, 시스톨릭 배열로 매핑된 입력 특징 맵(300)의 제1 행(①)에서, 제1 클럭, 제2 클럭 및 제3 클럭에 따라 시스톨릭 배열 연산기에 입력되는 데이터는 모두 동일한 x11(300-1)일 수 있다. 또한, 제1 행(①)에서, 제4 클럭, 제5 클럭 및 제6 클럭에 따라 시스톨릭 배열 연산기에 입력되는 데이터는 모두 동일한 x12(300-2)이고, 제7 클럭, 제8 클럭 및 제9 클럭에 따라 시스톨릭 배열 연산기에 입력되는 데이터는 모두 동일한 x13(300-3)일 수 있다.
마찬가지로, 시스톨릭 배열로 매핑된 입력 특징 맵(300)의 제2 행(②)에서 제2 클럭, 제3 클럭 및 제4 클럭에 따라 시스톨릭 배열 연산기에 입력되는 데이터는 모두 동일한 x12(300-4)이고, 제3 행(③)에서 제3 클럭, 제4 클럭 및 제5 클럭에 따라 시스톨릭 배열 연산기에 입력되는 데이터는 모두 동일한 x13(300-5)일 수 있다.
시스톨릭 배열 연산기 내의 각 곱셈 덧셈 연산기(311 내지 319) 측면에서 보면, 제1 곱셈 덧셈 연산기(311)에는 제1 클럭 내지 제3 클럭에 따라 입력 특징 맵(300)의 x11 데이터(300-1)가 반복되어 입력될 수 있다. 마찬가지로, 제4 곱셈 덧셈 연산기(314)에는 제2 클럭 내지 제4 클럭에 따라 입력 특징 맵(300)의 x12 데이터(300-4)가 반복되어 입력되고, 제7 곱셈 덧셈 연산기(317)에는 제3 클럭 내지 제5 클럭에 따라 x13 데이터(300-5)가 반복되어 입력될 수 있다.
도 3b에 도시된 실시예에서, 입력 특징 맵(300)은 동일한 값을 갖는 데이터가 기설정된 회수만큼 반복적으로 시스톨릭 배열 연산기에 입력되도록 시스톨릭 배열로 매핑될 수 있다. 여기서, 기설정된 회수는 필터(310)의 크기와 동일할 수 있다. 즉, 필터의 크기가 n×n인 경우, 입력 특징 맵(300)은 동일한 값을 갖는 데이터가 n번 중복되어 반복적으로 시스톨릭 배열 연산기에 입력되도록 매핑될 수 있다. 예를 들어, 필터(310)의 크기가 3×3인 경우, 입력 특징 맵(300)의 x11 데이터(300-1), x21 데이터(300-2), x31 데이터(300-3), x12 데이터(300-4) 및 x13 데이터(300-5)는 총 3번씩 반복되어 시스톨릭 배열 연산기에 입력되도록 입력 순서(sequence)가 변경될 수 있다.
그러나, 입력 특징 맵(300)의 데이터가 반복되는 회수가 필터의 크기로 한정되는 것은 아니다. 일 실시예에서, 입력 특징 맵(300)의 데이터가 반복되어 시스톨릭 배열 연산기에 입력되는 회수는 2회일 수 있다. 이에 대해서는 도 5a 및 도 5b를 참조하여 설명하기로 한다.
도 3c는 본 개시의 일 실시예에 따른 시스톨릭 배열 연산기를 이용하여 컨볼루션 연산을 수행하고, 연산된 결과 값들을 누적 합산(accumulation)하여 출력 특징 맵을 생성하는 방법을 도식화한 도면이다.
도 3c를 참조하면, 시스톨릭 배열 연산기에 입력 특징 맵과 필터의 웨이트 값이 입력되고, 순차적인 클럭에 따라 입력된 특징 맵의 데이터와 필터의 웨이트 값을 곱셈 및 덧셈하는 연산이 수행되는 과정이 도시되어 있다. 예를 들어, 제1 클럭에서 제1-1 데이터(x11)와 제1-1 웨이트(w11)가 제1-1 연산기(1-1)에 의해 곱셈 연산될 수 있다. 제2 클럭에서는, 제1-1 데이터(x11)와 제1-2 웨이트(w12)가 제1-1 연산기(1-1)에 의해 곱셈 연산되고, 제1 클럭에서 연산되었던 x11*w11과 덧셈 연산될 수 있다. 마찬가지로, 제2 클럭에서 제1-1 데이터(x11)는 제2-1 웨이트(w21)과 제2-1 연산기(2-1)에 의해 곱셈 연산되고, 제1-2 데이터(x12)는 제2-2 연산기(2-2)에 의해 제2-1 웨이트(w21)와 곱셈 연산될 수 있다. 제3 클럭에서는, 제1-1 데이터(x11)와 제1-3 웨이트(w13)가 제1-1 연산기(1-1)에 의해 곱셈 연산되고, 기 연산되었던 x11*w11+x11*x12와 덧셈 연산될 수 있다. 또한, 제3 클럭에서 제1-1 데이터(x11)와 제2-2 웨이트(w22)가 제2-2 연산기(2-2)에 의해 곱셈 연산되고, 기 연산되었던 x11*w21과 덧셈 연산될 수 있다. 도 3c의 하단을 참조하면, 상기 방법으로 각 사이클(cycle)에 따라 입력 특징 맵의 각 데이터와 필터의 웨이트 값이 복수의 시스톨릭 배열 연산기에 의해 순차적으로 곱셈 및 덧셈 연산되어 출력될 수 있다.
도 3c에 도시된 실시예에서, 필터가 입력 특징 맵 상에서 스트라이드 됨에 따라 변경되는 입력 특징 맵의 데이터와 필터의 웨이트 값의 조합에 기초하여 시스톨릭 배열 연산기에 의해 연산된 출력 값이 선택되고, 선택된 출력 값들이 누적 합산되어 출력 특징 맵이 생성될 수 있다. 즉, 입력 특징 맵 상에서 필터가 제1 방향(가로 방향) 및 제2 방향(세로 방향)으로 스트라이드 됨에 따라 변경되는 입력 특징 맵의 데이터와 필터의 웨이트 간의 조합에 기초하여 시스톨릭 배열 연산기에 의해 연산된 출력 값을 선택하고, 선택된 출력 값들을 누적 합산하면, 컨볼루션 연산을 수행한 것과 동일한 출력 특징 맵이 얻어질 수 있다.
예를 들어, 제1-1 연산기(1-1)에 의해 곱셈 연산된 x11*w11, 제1-2 연산기(1-2)에 의해 곱셈 연산된 x12*w12, 제1-3 연산기(1-3)에 곱셈 연산된 x13*w13, 제2-1 연산기(2-1)에 의해 곱셈 연산된 x21*w21, 제2-2 연산기(2-2)에 의해 곱셈 연산된 x22*w22, 제2-3 연산기(2-3)에 의해 곱셈 연산된 x23*w23, 제3-1 연산기(3-1)에 의해 곱셈 연산된 x31*w31, 제3-2 연산기(3-2)에 의해 곱셈 연산된 x32*w32, 및 제3-3 연산기(3-3)에 의해 곱셈 연산된 x33*w33을 선택적으로 누적 합산하면, 출력 특징 맵의 제1-1 출력 값(y11)이 생성될 수 있다. 마찬가지로, 제1-2 연산기(1-2)에 의해 곱셈 연산된 x12*w11, 제1-3 연산기(1-3)에 의해 곱셈 연산된 x13*w12, 제1-4 연산기(1-4)에 곱셈 연산된 x14*w13, 제2-2 연산기(2-2)에 의해 곱셈 연산된 x22*w21, 제2-3 연산기(2-3)에 의해 곱셈 연산된 x23*w22, 제2-4 연산기(2-4)에 의해 곱셈 연산된 x24*w23, 제3-2 연산기(3-2)에 의해 곱셈 연산된 x32*w31, 제3-3 연산기(3-3)에 의해 곱셈 연산된 x33*w32, 및 제3-4 연산기(3-4)에 의해 곱셈 연산된 x34*w33을 선택적으로 누적 합산하면, 출력 특징 맵의 제1-2 출력 값(y12)이 생성될 수 있다
종래의 시스톨릭 배열 연산은 중복되어 연산되는 입력 데이터를 고려하지 않고, 입력 특징 맵(300)의 데이터를 순차적으로 입력시키는 방식을 사용하였으므로, 모든 클럭에 따라 입력 데이터의 값을 토글(toggle)해야 된다. 예를 들면, 입력 특징 맵(300)의 데이터가 순차적인 클럭에 따라 x11, x12, x13, x12, x13, x14, ... , 식으로 입력되는바, 모든 클럭에서 버스 데이터를 토글해야 한다. 일반적으로 컨볼루션 뉴럴 네트워크를 이용한 딥 러닝 연산에서는 초 당 기가(giga) 단위의 데이터 연산을 수행해야 되는바, 각 클럭에 따라 버스 데이터(bus data)를 토글 해야 하는 경우 프로세서 또는 칩 내부에서 소모되는 전력량이 증가하게 된다. 제한된 전력만을 사용해야 하는 모바일 디바이스(mobile device), 애플리케이션 또는 컴퓨팅 환경에서 컨볼루션 연산을 통한 딥 러닝에 제한이 있을 수 밖에 없다.
다시 도 3a를 참조하면, 입력 특징 맵(300) 상에서 필터(310)가 제1 방향(가로 방향) 및 제2 방향(세로 방향)으로 1만큼 스트라이드 됨에 따라 입력 특징 맵(300)의 데이터 중 x22, x23, x32, x33, x42, x43은 총 3번 중복되어 곱셈 연산될 수 있다. 본 개시의 실시예는, 입력 특징 맵(300)의 데이터 중 곱셈 및 덧셈 연산에 입력되어 다시 사용(reuse)되는 회수 만큼 입력 특징 맵(300)의 데이터를 중복(overlap)하여 반복적으로 시스톨릭 배열 연산기에 입력되도록 입력 특징 맵(300)의 데이터를 매핑할 수 있다. 일 실시예에서, 시스톨릭 배열 연산기에 입력되는 데이터의 반복 회수는 필터(310)의 크기에 의해 결정될 수 있다. 예를 들어, 필터(310)의 크기가 n×n인 경우, 입력 특징 맵(300)의 데이터가 n번 반복되어 시스톨릭 배열 연산기에 입력되도록 매핑될 수 있다. 예를 들어, 순차적인 클럭에 따라 시스톨릭 배열 연산기 내의 곱셈 및 덧셈 연산기에 입력되는 데이터의 순서가 x11, x11, x11, x21, x21, x21, x31, x31, x31, ... , 순서로 3번씩 반복되도록 입력 특징 맵(300)의 데이터를 매핑할 수 있다.
또한, 도 3c에 도시된 실시예를 참조하면, 매핑된 입력 특징 맵(300)의 데이터가 각 클럭에 따라 반복적으로 입력되고, 입력된 데이터와 필터의 웨이트 값을 곱셈 및 덧셈 연산하여 출력된 값들을 선택적으로 누적 합산하여 출력 특징 맵을 생성할 수 있다.
따라서, 도 3b 및 도 3c에 도시된 실시예에 따르면 입력 특징 맵(300) 중 동일한 값을 갖는 데이터가 반복적으로 시스톨릭 배열 연산기에 입력되므로, 기존 방식의 컨볼루션 연산에 비하여 메모리에 액세스하는 양과 버스 데이터 토글(toggle) 양이 현저하게 줄어드는바, 프로세서 또는 칩 내부에서 소모되는 전력량을 감소시킬 수 있다.
도 4는 본 개시의 일 실시예에 따른 시스톨릭 배열을 이용하여 딥 러닝 연산을 수행하는 방법을 나타내는 흐름도이다. 도 4에 도시된 각 단계(S410 내지 S430)는 컨볼루션 뉴럴 네트워크 기반의 딥 러닝 연산을 수행하는 프로세서(processor) 또는 칩(chip)을 포함하는 컴퓨팅 장치 또는 애플리케이션 프로세서(Application Processor, AP)를 포함하는 모바일 장치에 의해 수행될 수 있다. 이하에서는, 컴퓨팅 장치 및 모바일 장치를 포괄하는 '전자 장치'라는 용어를 사용하기로 한다.
단계 S410에서, 전자 장치는 동일한 값을 갖는 데이터가 기설정된 회수만큼 반복되어 시스톨릭 배열 연산기 내의 곱셈 덧셈 연산기에 입력되도록 입력 특징 맵의 데이터를 시스톨릭 배열로 매핑(mapping)한다. 전자 장치는 일정한 레이턴시(latency)를 갖는 클럭(clock)에 따라 순차적으로 곱셈 덧셈 연산기에 입력되도록 입력 특징 맵의 데이터를 시스톨릭 배열로 매핑할 수 있다. 일 실시예에서, 전자 장치는 시스톨릭 배열 연산기 내의 곱셈 덧셈 연산기에 입력되는 입력 데이터가 적어도 2번 이상 반복되어 입력되도록 시스톨릭 배열 내에서의 입력 특징 맵의 데이터의 입력 순서를 변경할 수 있다. 일 실시예에서, 시스톨릭 배열 연산기 내의 곱셈 덧셈 연산기에 입력되는 데이터의 반복 회수는 필터의 크기에 의해 결정될 수 있다. 예를 들어, 필터의 크기가 n×n인 경우, 전자 장치는 입력 특징 맵의 데이터가 n번 반복되어 시스톨릭 배열 연산기에 입력되도록 입력 특징 맵의 데이터를 매핑될 수 있다.
단계 S420에서, 전자 장치는 매핑된 입력 특징 맵 데이터 및 필터의 웨이트 값을 시스톨릭 배열 연산기에 입력시켜 컨볼루션 연산(convolution)을 수행한다. 일 실시예에서, 전자 장치는 순차적인 클럭에 따라 입력 특징 맵의 데이터가 기설정된 회수만큼 반복적으로 시스톨릭 배열 연산기 내의 곱셈 덧셈 연산기에 입력시키고, 각 클럭에 따라 필터의 웨이트 값이 곱셈 덧셈 연산기에 입력시키면서 컨볼루션 연산을 수행할 수 있다.
단계 S430에서, 전자 장치는 컨볼루션 연산된 출력 값들을 누적 합산(accumulation)하여 출력 특징 맵(output feature map)을 생성한다. 일 실시예에서, 전자 장치는 시스톨릭 배열 연산기 내의 복수의 곱셈 덧셈 연산기 각각에 의해 계산된 입력 특징 맵 데이터와 필터의 웨이트 곱을 누적하여 합산함으로써, 출력 데이터를 생성할 수 있다. 전자 장치는 입력 특징 맵 상에서 필터의 이동(stride)을 참조하여, 복수의 곱셈 덧셈 연산기에서 계산된 복수의 출력 데이터들을 선택적으로 누적 합산할 수 있다. 일 실시예에서, 전자 장치는 스트라이드의 값에 따른 입력 특징 맵의 데이터와 필터의 웨이트 간의 조합에 기초하여 복수의 출력 값들을 선택하고, 선택된 출력 값들을 누적 합산하여 출력 특징 맵을 생성할 수 있다.
도 5a는 딥 러닝 기반의 컨볼루션 연산을 수행하는 방법을 도식화한 도면이다.
도 5a를 참조하면, 입력 특징 맵(500) 상에서 스트라이드 1 만큼 이동하면서 입력 특징 맵(500)의 데이터 값과 곱셈 및 덧셈 연산되는 3×3 크기의 필터(510)가 도시되어 있다.
도 5a에 도시된 실시예에서, 입력 특징 맵(500)의 좌측 상단 제1 영역(501) 상에 3×3, 즉 제1 방향으로 3개의 데이터와 제2 방향으로 3개의 데이터를 포함한 총 9개의 데이터(x11 내지 x33)는 각각 필터(510)의 웨이트 값(weight)(w11 내지 w33)과 곱하는 연산이 수행된다. 곱셈 연산의 출력 값, 즉 x11*w11, x12*w12, x13*w13, x21*w21, x22*w22, x23*w23, x31*w31, x32*w32, x33*w33을 모두 누적하여 합산하면 출력 특징 맵(520)의 제1-1 출력 데이터(y11)가 생성된다.
이후, 입력 특징 맵(500)의 제1 영역(501)에서 제2 영역(502)으로 1만큼 스트라이드하고, 제2 영역(502)에 포함된 총 9개의 입력 데이터(x12 내지 x34)를 필터(510)의 웨이트 값(w11 내지 w33)과 곱하는 연산이 수행되면, 곱셈 연산의 출력 값인 x12*w11, x13*w12, x14*w13, x22*w21, x23*w22, x24*w23, x32*w31, x33*w32, x34*w33이 누적 합산되어 출력 특징 맵(520)의 제1-2 출력 데이터(y12)가 생성된다.
상기 설명한 실시예에서, 스트라이드의 크기가 1인 경우, 제1 영역(501)과 제2 영역(502) 사이에서 입력 특징 맵(500)의 데이터 중 중복되어 연산에 사용되는 데이터는 x12, x13, x22, x23, x32, x33을 포함하는 총 6개의 데이터이다. 즉, 제1 영역(501)에 관한 곱셈 및 덧셈 연산과 제2 영역(502)에 관한 곱셈 및 덧셈 연산이 순차적으로 계산되면서, 입력 특징 맵(500)의 데이터 중 x12, x13, x22, x23, x32, x33는 각각 두번씩 사용되게 된다. 여기서, '사용된다'는 의미는 프로세서 또는 칩 내부에서 입력 데이터(500)의 각 값을 클럭(clock)에 따라 순차적으로 판독(read)하는 것을 의미할 수 있다. 각 클럭에 따라 데이터의 값이 변경되는바, 프로세서 또는 칩 내부에서는 순차적인 각 클럭 마다 버스 데이터를 토글(toggle)해야 하므로, 처리량이 많고, 따라서 전력이 많이 소모될 수 있다.
도 5b는 본 개시의 일 실시예에 따른 시스톨릭 배열을 이용하여 입력 특징 맵의 데이터와 필터의 웨이트를 컨볼루션 연산하는 방법을 도식화한 도면이다.
도 5b를 참조하면, 입력 특징 맵(500)은 순차적인 클럭(clock)에 따라 데이터들이 시스톨릭 연산기(530)에 입력되는 시스톨릭 배열로 매핑될 수 있다. 일 실시예에서, 입력 특징 맵(500)의 데이터들은 클럭에 따라 동일한 값을 갖는 데이터가 두번씩 반복되어 시스톨릭 연산기(530) 내에 입력되도록 매핑될 수 있다. 예를 들어, 시스톨릭 배열로 매핑된 입력 특징 맵(500)의 제1 행에서 입력 데이터는 x11, x12, x12, x13, x13, x14,... , 순서로 시스톨릭 연산기(530)에 입력될 수 있다. 제1 행에서 입력 데이터 x12(500-1)는 두번씩 반복되어 시스톨릭 연산기(530)에 입력될 수 있다. 예를 들어, 제2 클럭에서 x12가 시스톨릭 연산기(530)에 입력되고, 제3 클럭에서도 x12가 시스톨릭 연산기(530)에 입력될 수 있다. 마찬가지로, 제1 행에서 입력 데이터 x13(500-2) 역시 두번씩 반복되어 시스톨릭 연산기(530)에 입력될 수 있다. 예를 들어, 제4 클럭에서 x13이 시스톨릭 연산기(530)에 입력되고, 제5 클럭에서도 x13이 시스톨릭 연산기(530)에 입력될 수 있다.
시스톨릭 배열로 매핑된 입력 특징 맵(500)의 제2 행에서도 입력 데이터가 순차적인 클럭에 따라 두번씩 반복되어 시스톨릭 연산기(530)에 입력될 수 있다. 예를 들어, 시스톨릭 배열의 제2 행에서 입력 특징 맵(500)의 데이터는 x13, x14, x14, x15, x15, x16, ... , 순서로 시스톨릭 연산기(530)에 입력될 수 있다. 제1 행과 마찬가지로, 제2 행에서도 입력 데이터 중 x14(500-3)는 두번씩 반복되어 시스톨릭 연산기(530)에 입력되고, x15(500-4)도 두번씩 반복되어 시스톨릭 연산기(530)에 입력될 수 있다.
도 5b에 도시된 입력 특징 맵(500)의 각 데이터들은 순차적인 클럭에 따라 시스톨릭 연산기(530)에 입력되는 필터(510)와 곱셈 및 덧셈 연산될 수 있다. 필터(510)의 웨이트 값은 순차적인 클럭에 따라 두번씩 중복되어 시스톨릭 연산기(530)에 입력될 수 있다.
도 5b에 도시된 실시예에서, 입력 특징 맵(500)은 동일한 값을 갖는 데이터가 두번씩 반복되어 시스톨릭 연산기(530)에 입력되도록 시스톨릭 배열로 매핑될 수 있다. 도 5b의 실시예에 따르면, 순차적인 클럭에 따라 시스톨릭 연산기(530)에 입력되는 데이터의 값이 두번씩 중복되는바, 종래 모든 클럭에 따라 시스톨릭 연산기(530)에 입력되는 데이터가 변경되는 경우에 비하여 버스 데이터(bus data)의 토글(toggle) 회수가 현저하게 줄어들 수 있다. 따라서, 시스톨릭 연산기(530)를 통해 곱셈 및 덧셈 연산을 수행하는 프로세서 또는 칩 내부의 전력 소모를 감소시킬 수 있다.
도 6은 본 개시의 일 실시예에 따른 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 전자 장치(600)의 구성 요소를 도시한 블록도이다.
도 6을 참조하면, 전자 장치(600)는 프로세서(610)를 포함할 수 있다. 여기서, 전자 장치(600)는 컨볼루션 뉴럴 네트워크 기반의 딥 러닝 연산을 수행하는 컴퓨팅 장치 또는 모바일 장치일 수 있다.
프로세서(610)는 곱셈 및 덧셈 연산을 수행하는 PE(Processing Element)를 포함할 수 있다. 프로세서(610)는 중앙 처리 장치(Central Processing Unit), 마이크로 프로세서(microprocessor) 및 그래픽 프로세서(Graphic Processing Unit) 중 적어도 하나로 구성될 수 있으나, 이에 제한되는 것은 아니다. 일 실시예에서, 전자 장치(600)가 스마트 폰, 태블릿 PC 등과 같은 모바일 디바이스인 경우, 프로세서(610)는 애플리케이션을 실행시키는 애플리케이션 프로세서(Application Processor, AP)일 수 있다.
일 실시예에서, 프로세서(610)는 연산에 필요한 데이터를 읽어오고, 연산 결과를 다시 저장하기 위하여 메모리에 접근할 수 있다. 예를 들어, 프로세서(610)는 메모리로부터 데이터를 읽는 로드 명령어(Load Instruction) 및 메모리에 데이터를 저장하는 저장 명령어(Store Instruction)을 실행할 수 있다.
프로세서(610)는 매퍼(611), 시스톨릭 연산기(612), 및 누산기(adder)(613)를 포함할 수 있다.
매퍼(611)는 입력 특징 맵의 데이터 또는 필터의 웨이트 값에 대하여, 순차적인 클럭에 따라 동일한 값을 갖는 데이터가 반복되어 시스톨릭 연산기(612)에 입력되도록 입력 특징 맵의 데이터 또는 필터의 웨이트 값의 입력 순서(sequence)를 변경하는 매핑(mapping)을 수행할 수 있다. 일 실시예에서, 매퍼(611)는 입력 특징 맵의 데이터가 필터의 크기(N)와 동일한 회수만큼 반복적으로 시스톨릭 연산기(611) 내의 곱셈 덧셈 연산기에 입력되도록 입력 특징 맵의 데이터의 입력 순서(sequence)를 변경할 수 있다. 예를 들어, 필터의 크기가 3×3인 경우, 매퍼(611)는 곱셈 덧셈 연산기에 x11, x12, x13,..., 각각의 입력 데이터가 3번씩 반복하여 입력되도록 입력 특징 맵을 시스톨릭 배열로 매핑할 수 있다. 그러나, 이에 한정되는 것은 아니고, 매퍼(611)는 입력 특징 맵의 데이터를 2번씩 반복되어 곱셈 덧셈 연산기에 입력되도록 입력 특징 맵을 매핑할 수 있다.
시스톨릭 연산기(612)는 복수의 곱셈 덧셈 연산기(Processing Elements)를 포함할 수 있다. 복수의 곱셈 덧셈 연산기 각각은 플립-플롭 회로(flip-flop)로 구성될 수 있다. 복수의 곱셈 덧셈 연산기 각각은 일정한 레이턴시(latency)를 갖는 순차적인 클럭에 따라 입력되는 입력 데이터와 필터의 웨이트 값을 각각 곱하고, 곱해진 값을 더하는 연산을 수행할 수 있다.
누산기(adder)(613)는 입력 특징 맵의 데이터와 필터의 웨이트 값을 곱하여 얻어진 출력 값들을 누적 합산(accumulation)하여 출력 특징 맵을 생성할 수 있다. 누산기(613)는 필터가 입력 특징 맵 상에서 스트라이드(stride) 됨에 따라 변경되는 입력 특징 맵의 데이터와 필터의 웨이트 값의 조합에 기초하여 시스톨릭 배열 연산기(612)의 복수의 곱셈 덧셈 연산기 각각에 의해 계산된 출력 값을 선택할 수 있다. 누산기(613)는 선택한 출력 값들을 누적 합산하여 출력 특징 맵을 생성할 수 있다.
도 7a 및 도 7b는 본 개시의 일 실시예에 따라 입력 특징 맵의 데이터의 입력 순서를 변경하여 시스톨릭 배열로 매핑하는 방법을 도식화한 도면들이다.
도 7a를 참조하면, 입력 특징 맵(700)의 데이터들은 순차적인 클럭(clock)에 따라 데이터들이 입력되는 시스톨릭 배열로 매핑될 수 있다. 입력 특징 맵(700)은 0값을 갖는 데이터가 포함될 수 있다. 예를 들어, 입력 특징 맵(700)이 딥 러닝을 통한 학습의 대상이 되는 이미지인 경우, 검은 색의 픽셀은 픽셀 값이 0일 수 있다. 도 7a에 도시된 실시예에서, 입력 특징 맵(700)의 데이터 중 x22 및 x33은 픽셀 값이 0일 수 있다.
입력 특징 맵(700)의 데이터 중 픽셀 값이 0인 경우, 필터의 웨이트와 곱하는 연산을 수행하더라도, 출력 값이 0이기 때문에 연산을 수행할 필요가 없다. 따라서, 입력 특징 맵(700)의 데이터 중 0값을 갖는 데이터를 식별하고, 식별된 0 데이터의 위치를 참조하여 곱셈 및 덧셈 연산을 수행하지 않는 방식을 제로 스킵핑(zero-skipping)이라고 한다.
도 7a에 도시된 실시예에서는, 제3 클럭에서 0값을 갖는 x22가 시스톨릭 배열 연산기(710) 내의 곱셈 덧셈 연산기에 입력되고, 제5 클럭에서 0값을 갖는 x22가 곱셈 덧셈 연산기에 입력될 수 있다. 마찬가지로, 제7 클럭 및 제9 클럭에서 0값을 갖는 x33이 시스톨릭 배열 연산기(710) 내의 곱셈 덧셈 연산기에 입력될 수 있다. 시스톨릭 배열로 매핑된 입력 특징 맵(700)의 제1 행(①)에서 제4 클럭에서는 0이 아닌 값을 갖는 x12가 입력되지만, 제5 클럭에서는 0값을 갖는 x22가 시스톨릭 배열 연산기(710)에 입력된다. 이후, 제1 행(①)에서 제6 클럭에 따라 다시 0이 아닌 값을 갖는 x32가 시스톨릭 배열 연산기(710)에 입력될 수 있다. 제2 행(②)에서도 순차적인 클럭에 따라 0값을 갖는 데이터 x22 및 x33가 0이 아닌 값을 갖는 데이터들과 교대로 시스톨릭 배열 연산기에 입력된다.
순차적인 클럭에 따라 0값을 갖는 데이터, 0이 아닌 값을 갖는 데이터가 교대로 입력되는 경우, 모든 클럭에 대하여 버스 데이터(bus data)의 토글(toggle)이 일어나게 되어 프로세서 또는 칩이 메모리에 액세스하는 양이 늘어나고, 따라서 전력 소모량이 많아질 수 있다.
도 7b는 본 개시의 일 실시예에 따라 입력 특징 맵(700)의 데이터의 입력 순서(sequence)를 변경하여 시스톨릭 배열로 매핑하는 방법을 도식화한 도면이다.
도 7b를 참조하면, 입력 특징 맵(700)의 데이터들은 순차적인 클럭(clock)에 따라 데이터들이 입력되는 시스톨릭 배열로 매핑되고, 입력 특징 맵(700)의 동일한 값을 갖는 데이터가 반복되어 시스톨릭 배열 연산기(710) 내의 각 곱셈 덧셈 연산기에 입력되도록 입력 특징 맵(700)의 데이터의 순서를 변경될 수 있다. 또한, 입력 특징 맵(700)의 데이터 중 0값을 갖는 데이터(x22 및 x33)는 반복적으로 시스톨릭 연산기(710)에 입력되도록 그룹핑(grouping)할 수 있다. 예를 들어, 0값을 갖는 데이터인 x22는 기설정된 회수만큼 반복되어 시스톨릭 배열 연산기(710)에 입력되도록 제1 그룹(701)으로 그룹핑될 수 있다. 마찬가지로, 0값을 갖는 데이터인 x33도 x22가 반복된 회수와 동일한 회수만큼 반복되어 시스톨릭 배열 연산기(710)에 입력되도록 제2 그룹(702)으로 그룹핑될 수 있다.
일 실시예에서, 0값을 갖는 데이터가 반복되는 회수는 필터의 크기에 의해서 결정될 수 있다. 예를 들어, 필터의 크기가 n×n인 경우, 0값을 n번 반복되어 시스톨릭 연산기(710)에 입력되도록 매핑될 수 있다. 도 7b에 도시된 실시예에서, 필터는 3×3의 크기를 갖는바, 0값을 갖는 데이터 x22, x33이 총 3번 반복되어 시스톨릭 연산기(710)에 입력되도록 매핑될 수 있다.
도 7a를 참조하면, 종래의 시스톨릭 배열을 이용한 컨볼루션 연산 방법은 입력 특징 맵(700)의 데이터 중 0값을 갖는 데이터가 산발적으로 흩어져 있어서, 입력 데이터에 대한 메모리 출력에서 컨볼루션 연산에 관한 누적 합산을 조합하는 것이 복잡한 구조로 되어 있었다. 그러나, 본 개시의 도 7b에 도시된 실시예에 따른 컨볼루션 연산 방법은 입력 특징 맵(700)의 데이터 중 0값을 갖는 데이터(x22, x33)가 소정의 회수만큼 반복되어 시스톨릭 연산기(710)에 입력되도록 매핑되는바, 한번에 적어도 두개 이상 복수개의 입력 데이터의 곱셈 및 덧셈 연산을 생략(skip)할 수 있어, 메모리 액세스 및 프로세서의 전력 소모를 감소시킬 수 있다. 0값을 갖는 입력 데이터의 그룹핑으로 인한 메모리 액세스의 감소 방법은 도 9a, b, 도 10a, b에서 상세하게 설명하기로 한다.
도 8은 본 개시의 일 실시예에 따른 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 전자 장치(800)의 구성 요소를 도시한 블록도이다. 도 8에 도시된 시스톨릭 연산기(812), 및 누산기(813)는 도 6에 도시된 시스톨릭 연산기(612), 및 누산기(613) 각각과 동일한 기능 및 동작을 수행하는 구성 요소인바, 중복되는 설명은 생략한다.
도 8을 참조하면, 전자 장치(800)는 프로세서(810) 및 언매퍼(820)를 포함할 수 있다. 일 실시예에서, 프로세서(810)는 곱셈 및 덧셈 연산을 수행하는 PE (Processing Elements)를 포함하는 중앙 처리 장치(CPU), 마이크로 프로세서(microprocessor), 그래픽 프로세서(Graphic Processing Unit), 및 애플리케이션 프로세서(AP) 중 적어도 하나로 구성될 수 있으나, 이에 제한되는 것은 아니다.
매퍼(811)는 입력 특징 맵의 데이터 중 0값을 갖는 데이터를 식별할 수 있다. 매퍼(811)는 또한, 식별된 0값을 갖는 데이터가 반복적으로 시스톨릭 연산기(812)에 입력되도록 0값을 갖는 데이터끼리 그룹핑(grouping)할 수 있다.
매퍼(811)는 식별된 0값을 갖는 데이터가 소정의 회수만큼 시스톨릭 연산기(812)에 입력되도록 0값의 입력 순서(sequence)를 변경할 수 있다. 상기 소정의 회수는 필터의 크기에 의해 결정될 수 있다. 일 실시예에서, 매퍼(811)는 입력 특징 맵의 데이터 중 0값을 갖는 데이터가 필터의 크기(N)와 동일한 회수만큼 반복적으로 시스톨릭 연산기(812)에 입력되도록 입력 특징 맵의 데이터를 매핑할 수 있다. 예를 들어, 필터의 크기가 3×3인 경우, 매퍼(811)는 곱셈 덧셈 연산기에 0값을 갖는 데이터가 3번씩 반복하여 입력되도록 입력 특징 맵을 시스톨릭 배열로 매핑할 수 있다.
시스톨릭 연산기(812)는 복수의 곱셈 덧셈 연산기(Processing Elements)를 포함할 수 있다. 시스톨릭 연산기(812) 내에 포함되는 복수의 곱셈 덧셈 연산기 각각은 일정한 레이턴시(latency)를 갖는 순차적인 클럭에 따라 입력되는 입력 데이터와 필터의 웨이트 값을 각각 곱하고, 곱해진 값을 더하는 연산을 수행할 수 있다. 시스톨릭 연산기(812)는 0값을 갖는 데이터가 입력되는 경우 곱셈 및 덧셈 연산을 생략(skip)할 수 있다.
누산기(adder)(813)는 입력 특징 맵의 데이터와 필터의 웨이트 값을 곱하여 얻어진 출력 값들을 누적 합산(accumulation)하여 출력 특징 맵을 생성할 수 있다. 누산기(813)는 언매퍼(820)의 누산기 제어부(822)의 제어를 받아, 입력 데이터 중 0값을 갖는 데이터의 위치 정보(address)를 수신하고, 이를 참조하여 출력 값을 선택적으로 누적 합산할 수 있다.
언매퍼(820)는 매퍼(811)에 의해 매핑된 입력 특징 맵의 데이터 각각의 위치 정보를 저장하고, 위치 정보를 기초로 입력 특징 맵의 데이터들을 매핑 전의 배열로 언매핑(unmapping)할 수 있다. 매퍼(811)와 언매퍼(820)의 관계는 인코더(encoder)와 디코더(decoder)의 관계와 유사하다. 매퍼(811)는 입력 특징 맵의 데이터들이 시스톨릭 연산기(812)에 기설정된 회수만큼 반복되어 입력되도록 입력 순서(sequence)를 변경하는 매핑을 수행하고, 언매퍼(820)는 매핑된 입력 특징 맵을 매핑 전의 배열로 다시 복구하는 동작을 수행한다.
언매퍼(820)는 메모리(821) 및 누산기 제어부(822)를 포함할 수 있다.
메모리(821)는 입력 특징 맵의 데이터 중 매퍼(811)에 의해 식별된 0값을 갖는 데이터들의 위치 정보를 저장하는 LUT(Look-Up table)를 저장할 수 있다. 메모리(821)는 예를 들어, DRAM(Dynamic RAM), SRAM(Static RAM), 및 SDRAM(Synchronous Dynamic RAM) 등) 중 적어도 하나로 구성될 수 있으나, 이에 한정되지 않는다. 일 실시예에서, 메모리(821)는 입력 데이터와 필터의 웨이트 값들의 곱셈 및 덧셈 연산으로 인한 출력 값들 중 필터의 크기(n×n) 내에서 누적 합산하여야 하는 데이터의 위치에 관한 정보를 저장할 수 있다. 즉, 메모리(821)는 입력 특징 맵의 데이터 중 0값을 갖는 데이터의 로(Row) 및 컬럼(Column) 단위의 위치 정보를 저장할 수 있다.
누산기 제어부(adder-tree controller)(822)는 입력 특징 맵의 데이터 중 0값을 갖는 데이터의 위치 정보를 참조하여, 출력 값들을 누적 합산함으로써 출력 특징 맵을 생성하도록 누산기(813)를 제어할 수 있다. 일 실시예에서, 누산기 제어부(822)는 메모리(821)에 저장된 입력 특징 맵의 데이터 중 0값으로 식별된 데이터의 로(Row) 및 컬럼(Column) 단위의 위치 정보를 판독(read)하여 제로 스킵(zero-skip)된 개수 정보를 참조할 수 있다.
다른 실시예에서, 누산기 제어부(822)는 시스톨릭 연산기(812)에 입력되는 입력 특징 맵 데이터 중 0값을 갖는 데이터가 몇 사이클(cycle) 이후에 연산되는지에 관한 정보를 실시간으로 매퍼(811)로부터 수신하고, 수신된 정보를 참조하여 출력 값들을 누적 합산하도록 누산기(813)를 제어할 수 있다. 이는, 시스톨릭 배열(Systolic Array)을 이용한 컨볼루션 연산에서 0값을 갖는 데이터의 연산을 생략(skip)하는 경우, 0값 데이터가 스킵된 회수 만큼 출력 값이 상위로 시프트(shift)된다는 점에 착안한 것이다. 즉, 누산기 제어부(822)는 0값을 갖는 데이터가 곱셈 및 덧셈 연산에서 생략(skip)된 회수에 따른 출력 값들의 시프트(shift) 정보를 참조하여, 출력 값들을 누적 합산하고, 이를 통해 출력 특징 맵을 생성할 수 있다.
도 9a는 본 개시의 일 실시예에 따른 장치의 구성 요소인 메모리의 버퍼(buffer)에 저장된 데이터를 도식화한 도면이고, 도 9b는 본 개시의 일 실시예에 따라 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 방법을 나타내는 흐름도이다.
도 9a에서 메모리(900)에 총 4개의 버퍼(901 내지 904)가 있다고 가정하면, 제1 버퍼(901), 제3 버퍼(903), 및 제4 버퍼(904)에는 0이 아닌 입력 데이터가 저장되고, 제2 버퍼(902)에는 0값을 갖는 데이터가 저장될 수 있다.
본 개시의 일 실시예에서, 0값을 갖는 데이터는 메모리(900)의 버퍼에 저장하지 않을 수 있다. 도 9a에 도시된 실시예에서, 0값을 갖는 데이터를 메모리(900)에 저장하지 않는다면, 종래 제3 버퍼(903)에 저장되었던 입력 데이터인 x32와 제4 버퍼(904)에 저장되었던 입력 데이터인 x33은 각각 제2 버퍼(902) 및 제3 버퍼(903)로 시프트(shift)되어 저장될 수 있다.
도 9b를 참조하면, 단계 S910에서, 전자 장치는 입력 특징 맵의 데이터 중 0값(zero)을 갖는 데이터를 식별한다. 일 실시예에서, 프로세서 내의 매퍼는 시스톨릭 배열 연산기에 입력되는 입력 특징 맵의 데이터 중 0값을 갖는 데이터를 식별할 수 있다.
단계 S920에서, 전자 장치는 0값을 갖는 데이터가 반복적으로 시스톨릭 배열 연산기에 입력되도록 0값을 갖는 데이터끼리 그룹핑(grouping)한다. 일 실시예에서, 매퍼는 일정한 레이턴시(latency)를 갖는 순차적인 클럭에 따라 0값을 갖는 입력 데이터가 반복적으로 시스톨릭 배열 연산기에 입력되도록, 입력 특징 맵 내에서 식별된 0값을 갖는 데이터들끼리 그룹핑할 수 있다.
단계 S930에서, 전자 장치는 0값을 갖는 데이터의 로(row) 및 컬럼(column) 위치를 메모리에 저장한다. 일 실시예에서, 전자 장치는 입력 특징 맵 상에서 식별된 0값을 갖는 데이터의 로 및 컬럼 위치 정보를 저장하는 메모리를 포함할 수 있다. 일 실시예에서, 메모리는 0값을 갖는 입력 데이터의 로 및 컬럼 위치를 룩 업 테이블(LUT) 형태로 저장할 수 있다. 이때, 메모리는 0값을 갖는 입력 데이터를 버퍼에 저장하지 않을 수 있다.
단계 S940에서, 전자 장치는 저장된 위치 정보를 메모리로부터 판독(read)하고, 판독한 위치 정보를 참조하여 0값을 갖는 데이터에 대해서는 곱셈 및 덧셈 연산을 스킵(skip)한다.
도 9a 및 도 9b에 도시된 실시예는, 입력 특징 맵의 데이터 중 0값을 갖는 데이터를 메모리(900)의 버퍼 내에 저장하지 않고, 컨볼루션 연산 시 0값 데이터의 로(row) 및 컬럼(column) 위치 정보를 참조하게 함으로써, 메모리의 저장 공간 확보를 더 많이 확보할 수 있다. 또한, 메모리 액세스를 줄임으로써, 전자 장치 내의 프로세서 또는 칩에서 소모되는 전력량을 감소시킬 수 있다.
도 10a는 본 개시의 일 실시예에 따른 장치의 구성 요소인 메모리의 버퍼에 저장된 데이터를 도식화한 도면이고, 도 10b는 본 개시의 일 실시예에 따라 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 방법을 나타내는 흐름도이다.
도 10a를 참조하면, 메모리(1000)의 총 4개의 버퍼(1001 내지 1004) 중 제1 버퍼(1001) 내지 제3 버퍼(1003)에는 0값을 갖는 데이터가 저장되고, 제4 버퍼(1004)에는 0값을 갖는 데이터인 x33이 저장될 수 있다. 도 9a에 도시된 실시예와는 달리, 도 10a에 도시된 실시예는 0값을 갖는 데이터도 메모리(1000)의 버퍼에 저장된다. 그러나, 0값 데이터가 메모리(1000)에 저장되더라도 곱셈 및 덧셈 연산을 수행하는 경우 0값 데이터의 위치 정보를 통해 연산이 생략(skip)될 수 있다. 이에 대해서는 도 10b의 흐름도를 참조하여 설명한다.
도 10b를 참조하면, 단계 S1010에서, 전자 장치는 입력 특징 맵의 데이터 중 0값(zero)을 갖는 데이터를 식별한다. 일 실시예에서, 프로세서 내의 매퍼는 시스톨릭 배열 연산기에 입력되는 입력 특징 맵의 데이터 중 0값을 갖는 데이터를 식별할 수 있다.
단계 S1020에서, 전자 장치는 0값을 갖는 데이터가 반복적으로 시스톨릭 배열 연산기에 입력되도록 0값을 갖는 데이터끼리 그룹핑(grouping)한다.
단계 S1030에서, 전자 장치는 0값 데이터가 입력됨에 따라, 시스톨릭 배열 상에서의 0값 데이터의 위치 정보를 획득한다. 일 실시예에서, 전자 장치에 포함되는 구성 요소인 언매퍼(도 8의 820 참조)는 시스톨릭 연산기에 입력되는 입력 특징 맵 데이터 중 0값 데이터가 몇 사이클(cycle) 이후에 연산되는지에 관한 정보를 실시간으로 매퍼(도 8의 811 참조)로부터 수신하고, 수신된 정보를 참조하여 출력 값들을 누적 합산하도록 누산기(도 8의 813 참조)를 제어할 수 있다. 언매퍼는 시스톨릭 연산기에 0값 데이터가 입력되는 경우 시스톨릭 배열 상에서 0값을 갖는 데이터의 위치 정보를 매퍼로부터 실시간으로 수신할 수 있다.
단계 S1040에서, 전자 장치는 0값 데이터의 위치 정보에 기초하여 입력 특징 맵의 각 영역에 대한 출력값들을 누적 합산하는 누산기(adder-tree)를 제어한다. 일 실시예에서, 전자 장치는 시스톨릭 배열로 매핑된 입력 특징 맵에서 식별된 0값 데이터의 위치 정보를 매퍼(도 8의 811)로부터 실시간으로 획득하고, 획득된 0값 데이터의 위치 정보에 기초하여 시스톨릭 연산기에 의해 곱셈 및 덧셈 연산된 출력 값들을 선택적으로 누적 합산하도록 누산기(도 8의 813 참조)를 제어하는 누산기 제어부(도 8의 822)를 포함할 수 있다.
도 10a 및 도 10b에 도시된 실시예는, 시스톨릭 배열(Systolic Array)을 이용한 컨볼루션 연산에서 0값을 갖는 데이터의 연산을 생략(skip)하는 방법과 관련된 것으로서, 0값 데이터가 스킵된 회수만큼 출력 값이 상위로 시프트(shift)되는 것에 착안한 방법이다. 즉, 0값 데이터가 버퍼(도 10a의 1001 내지 1003 참조)에 저장되어 있더라도 전자 장치 내의 프로세서가 메모리(1000) 내의 0값 데이터가 저장된 버퍼(1001 내지 1003)를 판독(read)하지 않는바, 곱셈 및 덧셈 연산으로 인한 컨볼루션 연산 값이 변경되게 된다. 본 개시의 실시예는, 0값 데이터로 인하여 출력 값이 변경되지 않게 하기 위하여, 시스톨릭 연산기를 통한 곱셈 및 덧셈 연산에서 0값 데이터가 입력됨에 따라 실시간으로 입력된 0값 데이터의 위치 정보를 획득하고, 획득한 0값 데이터의 위치 정보에 기초하여 출력 값을 누적 합산한다. 또한, 메모리(1000)의 버퍼(1001 내지 1003)에 0값 데이터가 저장되더라도 프로세서가 0값 데이터를 액세스하지 않는바, 메모리 액세스로 인한 전력 소모량을 줄일 수 있다.
도 11a는 본 개시의 일 실시예에 따른 시스톨릭 배열을 이용하여 컨볼루션 연산을 수행하는 연산 회로를 도식화한 도면이고, 도 11b는 입력 특징 맵과 필터의 컨볼루션 연산에 따라 생성된 출력 특징 맵을 도식화한 도면이다.
도 11a를 참조하면, 시스톨릭 연산기(1110)는 다섯 개의 플립-플롭 회로(flip-flop)(1110-1 내지 1110-5), 곱셈 연산기(1120), 두개의 덧셈 연산기(1130-1, 1130-2), 및 두개의 클럭 게이트(clock gate) 회로(1140-1, 1140-2)를 포함할 수 있다. 다만, 이는 예시적인 것이고, 시스톨릭 연산기(1110)에 포함되는 플립-플롭 회로(1110-1 내지 1110-5), 덧셈 연산기(1130-1, 1130-2), 및 클럭 게이트 회로(1140-1, 1140-2)의 개수가 도 11a에 도시된 바로 한정되는 것은 아니다.
제1 클럭 게이트 회로(1140-1) 및 제2 클럭 게이트 회로(1140-2)에서는 일정한 레이턴시(latency)를 갖는 순차적인 클럭(clock)을 생성할 수 있다. 순차적인 클럭에 따라 제1 플립 플롭 회로(1110-1)에는 필터의 웨이트 값이 입력되고, 제2 플립 플롭 회로(1110-2)에는 입력 특징 맵의 데이터가 입력될 수 있다. 일 실시예에서, 필터의 웨이트 값은 순차적인 클럭에 따라 두번씩 반복되어 제1 플립 플롭 회로(1110-1)에 입력될 수 있다. 또한, 입력 특징 맵의 데이터는 순차적인 클럭에 따라 두번씩 반복되어 제2 플립 플롭 회로(1110-2)에 입력되도록 시스톨릭 배열로 매핑될 수 있다.
제1 플립 플롭 회로(1110-1)에 입력된 웨이트 값과 제2 플립 플롭 회로(1110-2)에 입력된 데이터는 곱셈 연산기(1120)를 통해 곱해질 수 있다. 순차적인 클럭에 따라 곱셈 연산기(1120)에서 출력된 입력 데이터와 웨이트 값의 곱은 제1 덧셈 연산기(1130-1) 및 제2 덧셈 연산기(1130-2)로 전달된다. 이 때, 제3 플립 플롭 회로(1110-3)는 클럭 게이트 회로(1140-1, 1140-2)에 의해 2진 카운터(Binary Count) 기능을 수행할 수 있다. 즉, 제3 플립 플롭 회로(1110-3)가 하이(high)인 경우 입력 데이터와 웨이트 값의 곱이 제1 덧셈 연산기(1130-1)에 전달되고, 제3 플립 플롭 회로(1110-3)가 로우(low)인 경우 입력 데이터와 웨이트 값의 곱이 제2 덧셈 연산기(1130-2)에 전달될 수 있다. 제4 플립 플롭 회로(1110-4)는 제1 덧셈 연산기(1130-1)에 전달된 입력 데이터와 웨이트 값의 곱을 더한 값을 전달받고, 제5 플립 플롭 회로(1110-5)는 제2 덧셈 연산기(1130-2)에 전달된 입력 데이터와 웨이트 값의 곱을 더한 값을 전달받을 수 있다. 예를 들어, 제4 플립 플롭 회로(1110-4)에서는 제1 클럭에서 S11(x11*w11)를 출력하고, 제3 클럭에서 S13(x12*w12)를 출력할 수 있다. 또한, 제5 플립 플롭 회로(1110-5)에서는 제2 클럭에서 S12(x12*w11)을 출력하고, 제4 클럭에서는 S14(x13*w12)를 출력할 수 있다. 전술한 방식으로 순차적인 클럭에 따라 계산된 출력 값을 누적 합산하는 경우 출력 특징 맵의 데이터를 획득할 수 있다.
도 11a에 도시된 실시예는 종래의 시스톨릭 배열 연산 회로에 비하여 덧셈 연산기 및 플립 플롭 회로의 조합이 하나 더 필요하다. 그러나, 본 개시의 실시예에서 늘어난 덧셈 연산기 및 플립 플롭 회로에 의해 프로세서의 연산량이 두배로 증가하지는 않는데, 이는 제3 플립 플롭 회로(1110-3)가 2진 카운트 기능을 수행하기 때문이다.
도 11b를 참조하면, 입력 특징 맵(FMap 1) 상의 제1 영역(P1)에서 입력 특징 맵(100)의 데이터 x11, x12, x13은 필터(110)의 w11, w12, w13과 각각 곱셈 연산되고, 곱한 결과 값이 누적 합산되어 출력 특징 맵(120)의 제1-1 출력 데이터(x11*w11+x12*w12+x13*w13)가 생성된다. 또한, 입력 특징 맵(FMap 1) 상의 제2 영역(P2)에서 입력 특징 맵(100)의 데이터 x12, x13, x14은 필터(110)의 w11, w12, w13과 각각 곱셈 연산되고, 곱한 결과 값이 누적 합산되어 출력 특징 맵(120)의 제1-2 출력 데이터(x12*w11+x13*w12+x14*w13)가 생성된다. 이는 도 11a에 도시된 시스톨릭 연산기(1110)에 의해 출력된 결과값과 동일하다. 즉, 도 11a에서 S11, S13, S15를 누적 합산하면, 도 11b의 제1-1 출력 데이터 x11*w11+x12*w12+x13*w13가 획득된다. 마찬가지로, 도 11a에서 S12, S14, S16를 누적 합산하면, 도 11b의 제1-2 출력 데이터 x12*w11+x13*w12+x14*w13가 획득된다.
전술한 실시예들에 따른 전자 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 개시의 실시예들은 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.

Claims (19)

  1. 시스톨릭 배열(systolic array)을 이용하여 딥 러닝(deep learning) 연산을 수행하는 방법에 있어서,
    순차적인 클럭(clock)에 따라 동일한 값을 갖는 데이터가 기설정된 회수만큼 반복되어 시스톨릭 배열 연산기 내의 곱셈 덧셈 연산기에 입력되도록 입력 특징 맵의 데이터의 순서를 변경하여 상기 입력 특징 맵의 데이터를 시스톨릭 배열로 매핑(mapping)하는 단계;
    매핑된 상기 입력 특징 맵의 데이터 및 필터의 웨이트 값을 상기 시스톨릭 배열 연산기에 입력시켜 컨볼루션 연산(convolution)을 수행하는 단계; 및
    상기 컨볼루션 연산된 출력값들을 누적 합산(accumulation)하여 출력 특징 맵(output feature map)을 생성하는 단계;
    를 포함하는, 방법.
  2. 제1 항에 있어서,
    상기 매핑 단계는, 상기 입력 특징 맵의 동일한 두 개의 입력 데이터 값이 반복되어 상기 시스톨릭 배열 연산기에 입력되도록 상기 입력 데이터의 입력 순서를 변경하는, 방법.
  3. 제1 항에 있어서,
    상기 필터는 N by N (NXN) 크기를 갖고,
    상기 매핑 단계는 상기 입력 특징 맵의 데이터가 상기 필터의 크기(N)와 동일한 횟수만큼 반복적으로 상기 시스톨릭 배열 연산기에 입력되도록 상기 입력 특징 맵의 데이터의 입력 순서를 변경하는, 방법.
  4. 제1 항에 있어서,
    상기 출력 특징 맵을 생성하는 단계는,
    상기 필터의 스트라이드(stride) 값 및 상기 스트라이드로 인하여 제1 방향 및 제2 방향으로 중복되는 상기 입력 특징 맵의 데이터를 고려하여 상기 컨볼루션 연산된 출력값들을 선택하는 단계; 및
    선택된 출력값들을 누적 합산하여 상기 입력 특징 맵과 상기 필터의 조합으로 인한 출력 특징 맵을 생성하는 단계;
    를 포함하는, 방법.
  5. 제1 항에 있어서,
    상기 입력 특징 맵의 데이터 중 0값을 갖는 데이터를 식별하는 단계; 를 더 포함하는, 방법.
  6. 제5 항에 있어서,
    상기 매핑 단계는, 0값을 갖는 데이터가 반복적으로 상기 시스톨릭 연산기에 입력되도록 상기 0값을 갖는 데이터끼리 그룹핑(grouping)하는, 방법.
  7. 제5 항에 있어서,
    상기 필터는 N by N (NXN) 크기를 갖고,
    상기 매핑 단계는, 상기 0값을 데이터가 상기 필터의 크기(N)와 동일한 횟수만큼 반복적으로 상기 시스톨릭 배열 연산기에 입력되도록 상기 0값을 갖는 데이터를 상기 필터의 크기(N) 만큼 모아서 그룹핑하는, 방법.
  8. 제5 항에 있어서,
    상기 0값을 갖는 데이터의 데이터의 상기 입력 특징 맵(input feature map) 상의 로(row) 및 컬럼(column) 위치를 메모리에 저장하는 단계; 를 더 포함하고,
    상기 컨볼루션 연산을 수행하는 단계는, 상기 저장된 위치 정보를 상기 메모리로부터 판독(read)하고, 판독된 위치 정보를 참조하여 상기 0값을 갖는 데이터에 대해서는 곱셈 및 덧셈 연산을 스킵(skip)하는, 방법.
  9. 제1 항에 있어서,
    상기 0값으로 식별된 데이터가 입력되는 경우, 식별된 0값 데이터의 상기 시스톨릭 배열 상에서의 위치 정보를 획득하는 단계; 를 더 포함하고,
    상기 출력 특징 맵을 생성하는 단계는, 획득한 상기 0값 데이터의 위치 정보에 기초하여 상기 입력 특징 맵의 각 영역에 대한 출력값들을 누적 합산하는, 방법.
  10. 딥 러닝 연산을 수행하는 전자 장치(electronic device)에 있어서,
    시스톨릭 배열을 이용하여 입력 특징 맵의 데이터와 필터의 웨이트 값의 컨볼루션 연산을 수행하는 프로세서를 포함하고,
    상기 프로세서는,
    순차적인 클럭(clock)에 따라 동일한 값을 갖는 데이터가 기설정된 회수만큼 반복되어 곱셈 덧셈 연산기에 입력되도록 상기 입력 특징 맵의 데이터의 순서를 변경하여 상기 입력 특징 맵의 데이터를 시스톨릭 배열로 매핑하는 매퍼(mapper);
    매핑된 상기 입력 특징 맵 데이터 또는 상기 필터의 웨이트 값에 대하여 컨볼루션 연산을 수행하는 복수의 곱셈 덧셈 연산기를 포함하는 시스톨릭 배열 연산기; 및
    상기 컨볼루션 연산된 출력값들을 누적 합산(accumulation)하여 출력 특징 맵(output feature map)을 생성하는 누산기(adder);
    를 포함하는, 전자 장치.
  11. 제10 항에 있어서,
    상기 매퍼는, 상기 입력 특징 맵의 동일한 두 개의 입력 데이터 값이 반복되어 상기 시스톨릭 배열 연산기에 입력되도록 상기 입력 데이터의 입력 순서를 변경하는, 전자 장치.
  12. 제10 항에 있어서,
    상기 필터는 N by N (NXN) 크기를 갖고,
    상기 매퍼는 상기 입력 특징 맵의 데이터가 상기 필터의 크기(N)와 동일한 횟수만큼 반복적으로 상기 시스톨릭 배열 연산기 내의 상기 곱셈 덧셈 연산기에 입력되도록 상기 입력 특징 맵의 데이터의 입력 순서를 변경하는, 전자 장치.
  13. 제10 항에 있어서,
    상기 누산기는, 상기 필터의 스트라이드(stride) 값 및 상기 스트라이드로 인하여 제1 방향 및 제2 방향으로 중복되는 상기 입력 특징 맵의 데이터를 고려하여 상기 컨볼루션 연산된 출력값들을 선택하고, 상기 선택된 출력값들을 누적 합산하여 상기 입력 특징 맵의 각 영역에 대한 출력 특징 맵을 생성하는, 전자 장치.
  14. 제10 항에 있어서,
    상기 매퍼는, 상기 입력 특징 맵의 데이터 중 0값을 갖는 데이터를 식별하는, 전자 장치.
  15. 제14 항에 있어서,
    상기 매퍼는, 상기 식별된 0값을 갖는 데이터가 반복적으로 상기 시스톨릭 연산기에 입력되도록 상기 0값을 갖는 데이터끼리 그룹핑(grouping)하는, 전자 장치.
  16. 제14 항에 있어서,
    상기 필터는 N by N (NXN) 크기를 갖고,
    상기 매퍼는, 상기 0값을 데이터가 상기 필터의 크기(N)와 동일한 횟수만큼 반복적으로 상기 시스톨릭 배열 연산기에 입력되도록 상기 0값을 갖는 데이터를 상기 필터의 크기(N) 만큼 모아서 그룹핑하는, 전자 장치.
  17. 제14 항에 있어서,
    상기 0값을 갖는 데이터의 로(row) 및 컬럼(column) 위치를 저장하는 메모리; 를 더 포함하고,
    상기 프로세서는, 상기 저장된 위치 정보를 상기 메모리로부터 판독(read)하고, 판독된 위치 정보를 참조하여 상기 0값을 갖는 데이터에 대해서는 곱셈 및 덧셈 연산을 스킵(skip)하는, 전자 장치.
  18. 제10 항에 있어서,
    상기 매퍼에 의해 시스톨릭 배열로 매핑된 상기 입력 특징 맵의 데이터 중 0값으로 식별된 데이터의 상기 시스톨릭 배열 상에서의 위치 정보를 획득하는 언매퍼(unmapper); 를 더 포함하고,
    상기 언매퍼는 획득한 상기 0값 데이터의 위치 정보에 기초하여 상기 입력 특징 맵의 각 영역에 대한 출력값들을 누적 합산하도록 상기 누산기를 제어하는 애더 트리 제어 회로(adder-tree control circuit)를 포함하는, 전자 장치.
  19. 제1 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020180020015A 2018-02-20 2018-02-20 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치 KR102487535B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180020015A KR102487535B1 (ko) 2018-02-20 2018-02-20 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치
PCT/KR2019/002029 WO2019164237A1 (ko) 2018-02-20 2019-02-20 시스톨릭 배열을 이용하여 딥 러닝 연산을 수행하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180020015A KR102487535B1 (ko) 2018-02-20 2018-02-20 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190099931A true KR20190099931A (ko) 2019-08-28
KR102487535B1 KR102487535B1 (ko) 2023-01-12

Family

ID=67687842

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180020015A KR102487535B1 (ko) 2018-02-20 2018-02-20 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치

Country Status (2)

Country Link
KR (1) KR102487535B1 (ko)
WO (1) WO2019164237A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102272518B1 (ko) * 2020-03-13 2021-07-05 인천대학교 산학협력단 시스톨릭 어레이 장치
KR20220101961A (ko) * 2021-01-12 2022-07-19 성균관대학교산학협력단 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스
KR20220143333A (ko) * 2021-04-16 2022-10-25 포항공과대학교 산학협력단 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법
KR20230020876A (ko) * 2021-08-04 2023-02-13 한국과학기술원 인 메모리 컴퓨팅을 통해 컨벌루션 뉴럴 네트워크 연산을 수행하는 방법
US11741026B2 (en) 2020-08-31 2023-08-29 Samsung Electronics Co., Ltd. Accelerator, method of operating an accelerator, and electronic device including an accelerator
US11960855B2 (en) 2020-07-31 2024-04-16 Samsung Electronics Co., Ltd. Method and apparatus for performing deep learning operations

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110826710B (zh) * 2019-10-18 2021-04-23 南京大学 基于横向脉动阵列的rnn前向传播模型的硬件加速实现方法
CN112784973A (zh) * 2019-11-04 2021-05-11 北京希姆计算科技有限公司 卷积运算电路、装置以及方法
CN111008697B (zh) * 2019-11-06 2022-08-09 北京中科胜芯科技有限公司 一种卷积神经网络加速器实现架构

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100670766B1 (ko) * 2004-01-24 2007-01-17 학교법인 포항공과대학교 시스톨릭 배열 구조를 가지는 미지 신호 분리 장치 및병렬로 연결된 미지 신호 분리 장치를 포함하는 하드웨어장치
US8479133B2 (en) * 2009-01-27 2013-07-02 Xilinx, Inc. Method of and circuit for implementing a filter in an integrated circuit
KR102276339B1 (ko) * 2014-12-09 2021-07-12 삼성전자주식회사 Cnn의 근사화를 위한 학습 장치 및 방법
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Xuechao Wei et al.,‘Automated Systolic Array Architecture Synthesis for High Throughput CNN Inference on FPGAs’, 2017 54th ACM/EDAC/IEEE Design Automation Conference (DAC), 1-6pages (2017.06.22) *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102272518B1 (ko) * 2020-03-13 2021-07-05 인천대학교 산학협력단 시스톨릭 어레이 장치
US11960855B2 (en) 2020-07-31 2024-04-16 Samsung Electronics Co., Ltd. Method and apparatus for performing deep learning operations
US11741026B2 (en) 2020-08-31 2023-08-29 Samsung Electronics Co., Ltd. Accelerator, method of operating an accelerator, and electronic device including an accelerator
KR20220101961A (ko) * 2021-01-12 2022-07-19 성균관대학교산학협력단 시스톨릭 어레이를 이용하여 깊이별 합성곱 연산을 수행하는 방법 및 디바이스
KR20220143333A (ko) * 2021-04-16 2022-10-25 포항공과대학교 산학협력단 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법
KR20230020876A (ko) * 2021-08-04 2023-02-13 한국과학기술원 인 메모리 컴퓨팅을 통해 컨벌루션 뉴럴 네트워크 연산을 수행하는 방법

Also Published As

Publication number Publication date
WO2019164237A1 (ko) 2019-08-29
KR102487535B1 (ko) 2023-01-12

Similar Documents

Publication Publication Date Title
KR102487535B1 (ko) 시스톨릭 배열(Systolic Array)을 이용하여 딥 러닝(Deep Learning) 연산을 수행하는 방법 및 장치
US20230153620A1 (en) Dynamic processing element array expansion
CN109190756B (zh) 基于Winograd卷积的运算装置及包含该装置的神经网络处理器
US20210224125A1 (en) Operation Accelerator, Processing Method, and Related Device
CN107944545B (zh) 应用于神经网络的计算方法及计算装置
US20190347553A1 (en) Training neural networks using mixed precision computations
WO2021218517A1 (zh) 获取神经网络模型的方法、图像处理方法及装置
CN107766292B (zh) 一种神经网络处理方法及处理系统
CN111783937A (zh) 一种神经网络构建方法以及系统
CN107085562B (zh) 一种基于高效复用数据流的神经网络处理器及设计方法
US11803360B2 (en) Compilation method, apparatus, computing device and medium
JP2021507345A (ja) 畳み込みニューラル・ネットワークの完全なカーネルを近似するためのスパース・カーネルの融合
US11763131B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
KR20190140841A (ko) 확률 적응적 자원 할당을 통한 신경망 하드웨어 가속
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
Foo et al. Era: Expert retrieval and assembly for early action prediction
CN112115744B (zh) 点云数据的处理方法及装置、计算机存储介质、电子设备
CN115545145A (zh) 优化神经网络模型的方法及执行该方法的神经网络模型处理系统
CN115220833A (zh) 优化神经网络模型的方法和提供图形用户界面的方法
KR20190041388A (ko) 전자 장치 및 그 제어 방법
WO2020230374A1 (ja) 演算装置および演算システム
US11568303B2 (en) Electronic apparatus and control method thereof
CN110858504A (zh) 产生化学结构的方法、神经网络设备和非瞬时计算机可读的记录介质
Ikram A benchmark for evaluating Deep Learning based Image Analytics
CN114723024A (zh) 用于存算一体芯片的基于线性规划的神经网络映射方法

Legal Events

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