KR20200051395A - 신경망 제어 장치 및 방법 - Google Patents

신경망 제어 장치 및 방법 Download PDF

Info

Publication number
KR20200051395A
KR20200051395A KR1020180134727A KR20180134727A KR20200051395A KR 20200051395 A KR20200051395 A KR 20200051395A KR 1020180134727 A KR1020180134727 A KR 1020180134727A KR 20180134727 A KR20180134727 A KR 20180134727A KR 20200051395 A KR20200051395 A KR 20200051395A
Authority
KR
South Korea
Prior art keywords
descriptor
data
neural network
layer
input data
Prior art date
Application number
KR1020180134727A
Other languages
English (en)
Other versions
KR102720879B1 (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 KR1020180134727A priority Critical patent/KR102720879B1/ko
Priority claimed from KR1020180134727A external-priority patent/KR102720879B1/ko
Priority to US16/541,245 priority patent/US20200143228A1/en
Publication of KR20200051395A publication Critical patent/KR20200051395A/ko
Application granted granted Critical
Publication of KR102720879B1 publication Critical patent/KR102720879B1/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout

Landscapes

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

Abstract

본 발명에서는 복수의 프로세스를 수행하기 위한 복수의 데이터를 저장하는 데이터 저장 공간 및 복수의 프로세스에 관한 복수의 디스크립터가 저장되는 시냅스 코드 저장 공간을 포함하는 메모리와, 복수의 디스크립터를 획득하고, 복수의 디스크립터에 기반하여 복수의 데이터를 신경망 연산 장치로 전송하는 메모리 전송 처리기와, 복수의 디스크립터를 메모리 전송 처리기로부터 획득하고, 복수의 프로세스 중 제1 프로세스에 대응하는 제1 디스크립터에 기반하여 제1 디스크립터에 설정된 제1 데이터를 신경망 연산 장치로 전송하고, 제1 디스크립터에 기반하여 제1 프로세스의 다음 동작인 제2 프로세스에 대응하는 제2 디스크립터를 독출하고, 제2 디스크립터에 기반하여 제2 디스크립터에 대응하는 제2 데이터를 신경망 연산 장치로 전송하도록 메모리 전송 처리기를 제어하는 내장 명령어 처리기와, 및 복수의 디스크립터를 생성하는 시냅스 코드 생성부를 포함하는 신경망의 복수의 레이어 각각에 대한 복수의 프로세스를 수행하는 신경망 연산 장치를 제공함으로써, 다른 장치의 간섭 없이 신경망 연산 장치를 고속으로 동작시킬 수 있고, 디스크립터를 위한 메모리 저장 공간을 줄일 수 있다.

Description

신경망 제어 장치 및 방법{APPARATUS FOR NEURAL NETWORK CONTROLLING AND METHOD THEREOF}
본 발명은 신경망의 레이어들 각각에서 제어 동작을 처리하기 위한 장치 및 방법에 관한 것이다.
신경망은 다양한 목적(예: 범용 객체 인식, 위치 인식 등)을 위해 학습되고 적용된다. 신경망 중 CNN(convolution neural network)은 다수의 컨볼루션 필터를 학습을 통해 얻은 후, 이미지를 분류하거나 이미지 위치를 찾는 등에 많이 활용되는 신경망이다.
신경망을 이루는 다양한 레이어들은, 종류에 따라 세부적 동작은 다르지만, 레이어 설정, 입력 데이터 전송, 웨이트 전송, 출력 데이터 저장 동작을 수행하는 것은 공통으로 한다.
레이어 설정 단계의 경우, 레이어마다 특성에 따라 필요한 제어 파라미터를 설정하는 단계로 레이어 마다 다양한 패턴을 보인다. 대용량 웨이트 (VGG16의 경우 540MB)의 레이어 마다 크기가 다른 웨이트 데이터(예: 컨볼루션 레이어를 예로 들면, 크기=출력채널수x입력채널수x커널크기x커널크기)를 전송해야 한다.
또한, 입력 데이터 전송 단계의 경우도 레이어 마다 크기(입력 채널 수, 입력 가로 크기, 입력 세로 크기)가 서로 다르며, 레이어 연산 특성(예: 컨볼루션 레이어의 컨볼루션 필터 커널(kernel), 스트라이드(stride), 패드(pad))에 따라 전송 패턴이 달라진다.
또한, 출력 데이터 저장 단계도 레이어 마다 크기(출력 채널수, 출력 가로크기, 출력 세로 크기)가 서로 다르다.
각 레이어마다 단계 별 프로세싱에 필요한 파라미터 계산 및 제어가 간섭(예: 프로세서로 레이어 설정, 프로세서로 입력 데이터 크기, 위치 계산, 메모리 전송 장치로의 크기 및 위치 설정의 전송, 메모리 전송 장치 시작제어 등)하는 방식은 신경망 연산 속도를 현저하게 떨어뜨리게 된다.
다양한 레이어 조합을 포함하는 신경망의 연산을 수행함에 있어, 레이어 설정, 입력 데이터 전송, 웨이트 전송, 출력 데이터 저장 단계를 각 레이어 마다 공통으로 필요로 하는데, 레이어 특성에 따라 레이어 설정 패턴, 입력 데이터 전송 크기 및 패턴, 웨이트 전송 크기, 출력 데이터 크기 등이 모두 다르다.
이러한 상황에서 각 단계마다 동작에 필요한 파라미터를 계산하고 제어가 간섭할 경우 신경망 연산 속도가 현저하게 떨어지게 된다.
본 발명이 해결하고자 하는 과제는 각 레이어에 대한 각 처리 단계 마다 발생하는 연산 속도의 지연 문제를 해결하는 신경망 제어 장치 및 방법을 제공하는 것이다.
본 발명의 실시예에 따른 신경망의 복수의 레이어 각각에 대한 복수의 프로세스를 수행하는 신경망 연산 장치는 상기 복수의 프로세스를 수행하기 위한 복수의 데이터를 저장하는 데이터 저장 공간 및 상기 복수의 프로세스에 관한 복수의 디스크립터가 저장되는 시냅스 코드 저장 공간을 포함하는 메모리; 상기 복수의 디스크립터를 획득하고, 상기 복수의 디스크립터에 기반하여 상기 복수의 데이터를 상기 신경망 연산 장치로 전송하는 메모리 전송 처리기; 상기 복수의 디스크립터를 상기 메모리 전송 처리기로부터 획득하고, 상기 복수의 프로세스 중 제1 프로세스에 대응하는 제1 디스크립터에 기반하여 상기 제1 디스크립터에 설정된 제1 데이터를 상기 신경망 연산 장치로 전송하고, 상기 제1 디스크립터에 기반하여 상기 제1 프로세스의 다음 동작인 제2 프로세스에 대응하는 제2 디스크립터를 독출하고, 상기 제2 디스크립터에 기반하여 상기 제2 디스크립터에 대응하는 제2 데이터를 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어하는 내장 명령어 처리기; 및 상기 복수의 디스크립터를 생성하는 시냅스 코드 생성부를 포함할 수 있다.
상기 신경망 연산 장치는 상기 복수의 데이터를 이용하여 상기 복수의 레이어 각각에 대한 상기 복수의 프로세스를 수행할 수 있다.
상기 시냅스 코드 생성부는 상기 복수의 레이어 중 제1 레이어에 대한 상기 복수의 프로세스가 종료되면, 상기 제1 레이어의 출력 데이터를 입력값으로 이용하여 상기 제1 레이어의 다음 레이어인 제2 레이어에 대한 상기 복수의 프로세스를 수행할 수 있도록 상기 데이터 공간의 입력 데이터 공간과 상기 데이터 공간의 출력 데이터 공간을 서로 전환할 수 있다.
상기 시냅스 코드 생성부는 상기 입력 데이터의 채널 중 첫번째 채널을 상기 내장 명령어 처리기의 레지스터에 초기화하고 상기 첫번째 채널에 대한 상기 복수의 프로세스를 수행한 후에 상기 레지스터에 1을 합산하도록 하는 내장 명령어 디스크립터를 생성할 수 있다.
상기 내장 명령어 처리기는 상기 내장 명령어 디스크립터를 획득하고, 상기 내장 명령어 디스크립터에 기반하여 상기 입력 데이터의 모든 채널의 픽셀값을 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어할 수 있다.
상기 제1 디스크립터는 상기 제2 디스크립터의 주소 정보를 포함할 수 있다.
상기 내장 명령어 처리기는 상기 제2 디스크립터의 주소 정보를 상기 제1 디스크립터로부터 독출하고, 상기 제2 디스크립터의 주소 정보에 기반하여 상기 제2 디스크립터를 획득하며, 상기 제2 디스크립터에 대응하는 상기 제2 데이터를 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어할 수 있다.
상기 복수의 데이터는 레이어 설정 데이터, 입력 데이터, 복수의 웨이트 및 출력 데이터를 포함하며, 상기 시냅스 코드 생성부는 상기 복수의 웨이트 각각을 상기 입력 데이터에 적용할 때마다 나머지 웨이트 및 출력 데이터에 대한 디스크립터를 생성할 수 있다.
본 발명의 실시예에 따른 신경망의 복수의 레이어 각각에 대한 복수의 프로세스를 수행하는 신경망 제어 방법은 상기 복수의 레이어 각각에 대한 상기 복수의 프로세스를 수행하는 데에 공통으로 이용되며 상기 복수의 프로세스를 수행하기 위한 복수의 데이터를 저장하는 단계; 상기 복수의 프로세스에 관한 복수의 디스크립터를 저장하는 단계; 상기 복수의 디스크립터를 획득하는 단계; 상기 복수의 프로세스 중 제1 프로세스에 대응하는 제1 디스크립터에 기반하여 상기 제1 디스크립터에 설정된 제1 데이터를 전송하는 단계; 상기 제1 디스크립터에 기반하여 상기 제1 프로세스의 다음 동작인 제2 프로세스에 대응하는 제2 디스크립터를 독출하는 단계; 상기 제2 디스크립터에 기반하여 상기 제2 디스크립터에 대응하는 제2 데이터를 전송하는 단계; 및 상기 제1 데이터 및 상기 제2 데이터에 기반하여 상기 복수의 프로세스를 수행하는 단계를 포함할 수 있다.
상기 복수의 레이어 중 제1 레이어에 대한 상기 복수의 프로세스가 종료되면, 상기 제1 레이어의 출력 데이터를 입력값으로 이용하여 상기 제1 레이어의 다음 레이어인 제2 레이어에 대한 상기 복수의 프로세스를 수행할 수 있도록 상기 데이터 공간의 입력 데이터 공간과 상기 데이터 공간의 출력 데이터 공간을 서로 전환하는 단계를 포함할 수 있다.
상기 입력 데이터의 채널 중 첫번째 채널을 상기 내장 명령어 처리기의 레지스터에 초기화하고 상기 첫번째 채널에 대한 상기 복수의 프로세스를 수행한 후에 상기 레지스터에 1을 합산하도록 하는 내장 명령어 디스크립터를 생성하는 단계를 포함할 수 있다.
상기 내장 명령어 디스크립터를 획득하는 단계, 그리고 상기 내장 명령어 디스크립터에 기반하여 상기 입력 데이터의 모든 채널의 픽셀값을 신경망 연산 장치로 전송하는 단계를 포함할 수 있다.
상기 제1 디스크립터는 상기 제2 디스크립터의 주소 정보를 포함할 수 있다.
상기 제2 디스크립터의 주소 정보를 상기 제1 디스크립터로부터 독출하는 단계; 상기 제2 디스크립터의 주소 정보에 기반하여 상기 제2 디스크립터를 획득하는 단계; 및 상기 제2 디스크립터에 대응하는 상기 제2 데이터를 전송하는 단계를 포함할 수 있다.
상기 복수의 데이터는 레이어 설정 데이터, 입력 데이터, 복수의 웨이트 및 출력 데이터를 포함하고, 상기 복수의 프로세스는 상기 레이어를 설정하는 프로세스, 상기 입력 데이터를 독출하는 프로세스, 상기 웨이트를 설정하는 프로세스 및 상기 출력 데이터를 저장하는 프로세스를 포함할 수 있다.
상기 복수의 웨이트 각각을 상기 입력 데이터에 적용할 때마다 나머지 웨이트 및 상기 출력 데이터에 대한 디스크립터를 생성하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 신경망 제어 장치는 신경망의 복수의 레이어 각각에 대한 레이어를 설정하고, 상기 레이어에 입력될 입력 데이터를 획득하며, 상기 입력 데이터에 기반하여 상기 복수의 레이어에 대한 연산을 수행하는 신경망 연산 장치; 상기 레이어 설정을 위한 레이어 설정 데이터 및 상기 입력 데이터를 저장하는 데이터 저장 공간 및 상기 레이어 설정 동작에 대응하는 레이어 설정 디스크립터 및 상기 입력 데이터 획득 동작에 관한 입력 데이터 획득 디스크립터가 저장되는 시냅스 코드 저장 공간을 포함하는 메모리; 상기 레이어 설정 디스크립터 및 상기 입력 데이터 획득 디스크립터를 획득하고, 상기 레이어 설정 디스크립터 및 상기 입력 데이터 획득 디스크립터에 기반하여 상기 레이어 설정 데이터 및 상기 입력 데이터를 상기 신경망 연산 장치로 전송하는 메모리 전송 처리기; 상기 레이어 설정 디스크립터 및 상기 입력 데이터 획득 디스크립터를 상기 메모리 전송 처리기로부터 획득하고, 상기 레이어 설정 디스크립터에 기반하여 상기 레이어 설정 데이터를 상기 신경망 연산 장치로 전송하고, 상기 레이어 설정 디스크립터에 포함된 상기 입력 데이터 획득 디스크립터의 주소 정보에 기반하여 상기 입력 데이터 획득 디스크립터를 독출하고, 상기 입력 데이터 획득 디스크립터에 기반하여 상기 입력 데이터를 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어하는 내장 명령어 처리기; 및 상기 레이어 설정 디스크립터 및 상기 입력 데이터 획득 디스크립터를 생성하는 시냅스 코드 생성부를 포함할 수 있다.
상기 시냅스 코드 생성부는 상기 입력 데이터의 채널 중 제1 채널을 상기 내장 명령어 처리기의 레지스터에 초기화하고 상기 제1 채널에 대한 웨이트 설정 및 출력 데이터 저장 프로세스를 수행한 이후에 상기 레지스터에 1을 합산하도록 하는 내장 명령어 디스크립터를 생성할 수 있다.
상기 내장 명령어 처리기는 상기 내장 명령어 디스크립터를 획득하고, 상기 내장 명령어 디스크립터에 기반하여 상기 입력 데이터의 모든 채널의 픽셀값을 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어할 수 있다.
상기 데이터 저장 공간은 복수의 웨이트 및 출력 데이터를 저장하며, 상기 시냅스 코드 생성부는 상기 복수의 웨이트 각각을 상기 입력 데이터에 적용할 때마다 나머지 웨이트 및 출력 데이터에 대한 디스크립터를 생성할 수 있다.
본 발명의 실시예에 따르면, 신경망의 다양한 레이어의 일련의 과정(레이어 설정, 입력 데이터 전송, 웨이트 전송, 출력 데이터 저장)을 처리할 때 다른 장치의 간섭 없이 고속으로 동작시키는 것이 가능하다.
본 발명의 실시예에 따르면, 디스크립터 내에 내장 명령어와 이를 처리하는 전용 내장 명령어 처리기는 비슷한 처리를 수행하는 여러 개의 디스크립터를 하나의 디스크립터로 생성/저장할 수 있고, 내장 명령어로 계산되는 값(예: 입력 데이터 로딩을 위한 y 위치)으로 동일한 디스크립터가 다양하게 적용될 수 있도록 함으로써 고압축 디스크립터 시냅스 코드를 생성하게 되어, 디스크립터를 위한 메모리 저장 공간을 줄일 수 있다.
도 1은 본 발명의 실시예에 따른 신경망 제어 장치를 도시한다.
도 2는 본 발명의 실시예에 따른 메모리의 데이터 공간의 구성을 도시한다.
도 3은 본 발명의 실시예에 따른 컨볼루션 신경망을 도시한다.
도 4는 본 발명의 실시예에 따른 컨볼루션 신경망의 레이어 중 컨볼루션 레이어에 대한 연산 동작을 도시한다.
도 5는 본 발명의 실시예에 따른 내장 명령어를 포함한 고압축 시냅스 코드 생성 과정을 나타낸 흐름도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 발명의 실시예에 따른 신경망 제어 장치를 도시한다.
도 1의 가는 화살표는 내장 명령어를 포함한 고압축 시냅스 코드(119)의 흐름을 나타내고, 굵은 화살표는 데이터의 흐름을 표기한 것으로 레이어 설정 데이터, 입력 데이터 데이터, 웨이트 데이터, 출력 데이터 데이터의 흐름을 나타낸다.
도 1에 도시된 바와 같이, 신경망 제어 장치(100)는 메모리(110), 메모리 전송 처리기(120), 내장 명령어 처리기(130), 내장 명령어를 포함한 고압축 시냅스 코드 생성 SW(140) 및 신경망 연산 장치(150)를 포함할 수 있다.
내장 명령어를 포함한 고압축 시냅스 코드 생성 SW(140)는 소프트웨어 코드로서, 신경망의 모든 레이어의 링크드 리스트 디스크립터를 생성하는 기능을 담당한다.
신경망 연산 장치(150)는 내장 명령어를 포함한 고압축 시냅스 코드 생성 SW(140)에서 생성되어 메모리(110)에 저장된 내장 명령어를 포함한 고압축 시냅스 코드(119)를 메모리 전송 처리기(120)로부터 링크드 리스트(linked list) 방식으로 읽을 수 있다. 읽혀진 디스크립터 내부에 내장 명령어가 포함된 경우, 신경망 연산 장치(150)는 내장 명령어 처리기(130)에 고압축 시냅스 코드(119)를 읽은 결과를 전송할 수 있다.
메모리 전송 처리기(120)는 메모리 전송 처리기(120)에 입력된 디스크립터에 기반하여 메모리에 포함된 데이터들을 전송할 수 있다. 예를 들면, 디스크립터는 레이어 설정 단계에 대응되는 레이어 설정 디스크립터, 입력 데이터 전송 단계에 대응하는 입력 데이터 전송 디스크립터, 웨이트 전송 단계에 대응하는 웨이트 전송 디스크립터 및 출력 데이터 저장 단계에 대응하는 출력 데이터 저장 디스크립터를 포함할 수 있다. 예를 들면, 메모리 전송 처리기(12)는 레이어 설정 디스크립터를 이용하여 레이어 설정에 필요한 데이터를 디스크립터에 저장된 정보에 기반하여 필요한 곳으로 전송할 수 있다.
디스크립터는 일반 전송 디스크립터 또는 3D 전송 디스크립터를 포함할 수 있다. 일반 전송 디스크립터는 source address, destination address, n bytes, 디스크립터 next address로 구성될 수 있다. 3D 전송 디스크립터(source address, destination address, start x, start y, star z, size x, size y, size n, 디스크립터 next address)로 구성될 수 있다.
메모리 전송 처리기(120)에 일반 디스크립터가 입력된 경우, 메모리 전송 처리기(120)는 n 바이트만큼의 데이터를 메모리 위치 source address 번지에서 메모리 위치 destination address 번지로 전송하고, 다음 디스크립터 위치인 "디스크립터 next address"에서 디스크립터를 읽어서 다음 디스크립터 처리를 위한 준비를 한다. 예를 들면, source address 또는 destination address는 신경망 연산 장치(150) 내의 메모리 위치를 포함할 수 있다.
메모리 전송 처리기(120)에 3D 전송 디스크립터가 입력된 경우, 메모리 전송 처리기(120)는 메모리 위치 source address 번지에서 메모리 위치 destination address 번지로 메모리 시작 위치(x: 데이터의 가로 인덱스, y: 데이터의 세로 인덱스, z: 채널 인덱스))로부터 각 크기(size x, size y, size z)만큼 데이터 전송하고, 디스크립터 위치인 디스크립터 next address로 데이터를 전송할 수 있다.
메모리 전송 처리기(120)는 메모리 위치 destination address로 데이터가 전송된 후, 각 디스크립터들에 포함된 디스크립터 next address에 기반하여 다음 디스크립터에 대응하는 연산을 디스크립터 next address에 기반하여 수행하는 방식으로 동작할 수 있다.
본 발명의 실시예에 따르면, source address, destination address 및 디스크립터 next address가 하나의 디스크립터에 포함된 것을 링크드 리스트라고 정의할 수 있다. 즉, 링크드 리스트는 입력 데이터가 저장된 메모리의 위치인 source address 정보와, 출력 데이터가 저장될 메모리의 위치인 destination address 및 다음 연산 과정에 대응하는 디스크립터의 위치인 디스크립터 next address 정보가 모두 하나의 디스크립터에 포함된 것을 의미할 수 있다. 즉, 링크드 리스트는 현재 연산중인 레이어에 대응하는 데이터들이 저장된 주소와, 출력 데이터가 저장될 주소와, 다음 연산될 단계에 대응하는 디스크립터가 저장된 주소가 하나의 디스크립터에 저장된다.
메모리(110)는 데이터를 저장하기 위한 데이터 공간(111)을 포함할 수 있다. 메모리(110)는 내장 명령어를 포함한 고압축 시냅스 코드(119)를 포함할 수 있다.
메모리 전송 처리기(120)는 메모리(110)에서 내장 명령어를 포함한 고압축 시냅스 코드(119)를 읽어올 수 있으며, 링크드 리스트 방식으로 연결된 디스크립터들을 순차적으로 수행할 수 있다.
신경망 연산 장치(150)는 메모리(110)에서 저장된 내장 명령어를 포함한 고압축 시냅스 코드(119)의 첫번째 디스크립터 위치를 메모리 전송 처리기(120)로 설정할 수 있고, 첫번째 디스크립터 위치에 기반하여 메모리 전송 처리기(120)를 동작시킬 수 있다. 첫번째 디스크립터 위치가 신경망 연산 장치(150)에 의해 동작되면, 메모리 전송 처리기(120)는 신경망 연산 장치(150)로부터 독립적으로 두번째 내지 n번째 디스크립터 위치를 첫번째 내지 n-1번째 디스크립터에 저장된 정보에 기반하여 획득할 수 있다. 즉, 메모리 전송 처리기(120)는 첫번째 디스크립터에 기술된 정보에 기반하여 모든 디스크립터에 저장된 메모리 전송 과정을 순서대로 처리할 수 있다.
내장 명령어 처리기(130)는 메모리 전송 처리기(120)에 입력된 디스크립터에 내장 명령어가 들어있으면, 내장 명령어를 해석하여 명령어를 처리하여 계산 결과를 출력할 수 있다. 예를 들면, 디스크립터0은 내장 명령어 처리기(130)의 r7=0 설정 명령 디스크립터가 될 수 있고, 디스크립터1은 source address, destination address, start x, r7, star z, size x, size y, size n, 디스크립터 next address가 될 수 있으며, 디스크립터2는 내장 명령어 처리기(130)에 r7+=1 설정 명령 디스크립터가 될 수 있고, next_address는 디스크립터1을 의미할 수 있으며, r7을 0으로 초기화 한 후, r7을 1씩 증가하면서 디스크립터1을 반복 수행하는 예시이다.
내장 명령어 처리기(130)는 디스크립터의 특정 비트들을 op_code로 이용하여 일반 디스크립터, 3D 전송 디스크립터 및 내장 명령어 디스크립터를 구분할 수 있다. 예를 들면, 내장 명령어 처리기(130)는 디스크립터 상위 2bit 중 00 비트를 이용하여 일반 디스크립터로 표현할 수 있고, 10 비트를 이용하여 3D 전송 디스크립터로 표현할 수 있으며, 11비트를 이용하여 내장 명령어 디스크립터를 표현할 수 있다.
예를 들면, 내장 명령어는 내장 명령어 처리기(130)에서 디코딩(decoding) 할 수 있도록 규약된 기계어가 될 수 있다.
내장 명령어 처리기(130)는 register1(rs1)의 값과 register2(rs2)의 값을 합해서 register3(rd)에 저장하라는 명령어를 생성할 수 있으며, 생성된 명령어는 "ADD(ccf, rd, ucf, rs1, rs2) ((0x3 <<28) | (ccf << 25) | (OPC_ADD << 21) | (rd<<16) | (ucf<<15) | (rs1<<10) | (rs2<<5)), OPC_ADD: 0x0"가 될 수 있다.
신경망 연산 장치(150)는 레이어 설정 디스크립터 및 파라미터를 획득하여, 레이어에 대한 연산 과정 이전에 레이어 설정 디스크립터 및 파라미터를 설정할 수 있다. 신경망 연산 장치(150)는 입력 데이터와 웨이트를 획득하여 mac 연산을 수행할 수 있다.
신경망 연산 장치(150)의 세부적 동작은 레이어마다 서로 다를 수 있다. 신경망 연산 장치(150)는 출력 데이터 저장 디스크립터에 의해 출력 결과를 메모리(110)로 전송할 수 있다.
도 2는 본 발명의 실시예에 따른 메모리의 데이터 공간의 구성을 도시한다.
도 2에 도시된 바와 같이, 본 발명의 실시예에 따르면, 메모리(210)(도 1의 메모리(110))는 레이어 별로 수행되는 레이어 설정 단계, 입력 데이터 전송 단계, 웨이트 전송 단계 및 출력 데이터 저장 단계에서 모두 이용되는 공통 데이터 영역(211-218) 및 내장 명령어를 포함한 고압축 시냅스 코드(219)를 포함할 수 있다.
입력 데이터 저장 공간(211)은 전송할 데이터가 저장된 주소인 source address 영역으로, 메모리 전송 처리기(120)가 내부에 입력된 디스크립터를 이용하여 해당 영역의 데이터를 신경망 연산 장치(예: 도 1의 신경망 연산 장치(150))로 전송할 수 있다.
출력 데이터 저장 공간(212)은 전송된 데이터를 저장하는 destination address 영역으로, 메모리 전송 처리기(120)가 디스크립터를 이용하여 신경망 연산 장치(150)의 연산 결과를 출력 데이터 저장 공간(212)에 저장할 수 있다.
하나의 레이어에 대한 연산 과정이 종료되면, 입력 데이터 저장 공간(211) 및 출력 데이터 저장 공간(212)이 토글(toggle)되어, 다음 레이어에 대한 연산 과정은 이전 레이어의 출력 데이터 저장 공간(212)에 저장된 데이터를 입력 데이터로서 이용하여 이를 기반으로 수행될 수 있다.
웨이트 영역(213-215)은 각 레이어에서의 웨이트 전송 단계에 디스크립터들에 의해 신경망 연산 장치(150)로 전송되는 웨이트를 저장할 수 있다. 웨이트 영역(213-215)은 모든 레이어에 대한 웨이트를 포함한다.
레이어 설정 영역(216-218)은 레이어 설정 단계에서 디스크립터들에 의해 신경망 연산 장치(150)로 전송되는 설정 파라미터들을 포함할 수 있다. 예를 들면, 레이어 설정 영역(216-218)은 해당 레이어의 kernel size, stride, pad를 포함할 수 있으며, 모든 레이어 설정을 포함한다.
상기한 웨이트 영역(213-215) 및 레이어 설정 영역(216-218)은 하나의 데이터 집단으로서, 모든 레이어에서 이용되기 위한 데이터 집단이며, 메모리 전송 처리기(120)는 레이어마다 다른 디스크립터를 이용하지 않고, 하나의 디스크립터에 의해 설정된 웨이트 영역(213-215) 및 레이어 설정 영역(216-218)을 신경망 연산 장치(150)로 전송할 수 있다.
내장 명령어를 포함한 고압축 시냅스 코드(119)는 내장 명령어를 포함한 고압축 시냅스 코드 생성 SW(140)에서 생성된 디스크립터 시냅스 코드가 저장될 수 있다.
도 3은 본 발명의 실시예에 따른 컨볼루션 신경망을 도시한다.
도 3에 도시된 바와 같이, 본 발명의 실시예에 다른 컨볼루션 신경망(400)은 LeNet 구조로 구성된다.
컨볼루션 신경망(400)은 다수의 컨볼루션 필터들로 구성된 복수의 컨볼루션 레이어(310, 330)를 포함할 수 있다. 예를 들면, 복수의 컨볼루션 레이어 중 입력 데이터에 먼저 합성되는 제1 컨볼루션 레이어(310)의 1 X 28 X 28개의 채널의 데이터 중 20 X 5 X 5개의 채널의 컨볼루션 커널은 복수의 풀링(pooling) 레이어 중 제1 컨볼루션 레이어(310)로부터 컨볼루션 커널을 수신하는 제1 풀링 레이어(320)의 20 X 24 X 24 채널의 데이터 중 1 X 1 X 1만큼의 풀링 데이터에 대응될 수 있다. 예를 들면, 제2 컨볼루션 레이어(330)의 20 X 12 X 12 채널 중 20 X 5 X 5만큼의 데이터는 복수의 풀링(pooling) 레이어 중 제2 컨볼루션 레이어(330)로부터 컨볼루션 커널을 수신하는 제2 풀링 레이어(340)의 50 X 8 X 8 채널의 데이터 중 1 X 1 X 1채널의 풀링 데이터에 대응될 수 있다.
컨볼루션 신경망(400)은 sub-sampling 기능을 담당하는 복수의 풀링(pooling) 레이어(320, 340)를 포함할 수 있다. 예를 들면, 제1 풀링 레이어(320)의 20 X 24 X 24 채널 중 20 X 2 X 2채널의 풀링 데이터는 복수의 컨볼루션 레이어 중 제1 풀링 레이어(320)로부터 풀링 데이터를 수신하는 제2 컨볼루션 레이어(330)의 20 X 12 X 12 채널 중 1 X 1 X 1 채널의 컨볼루션 커널에 대응될 수 있다. 예를 들면, 제2 풀링 레이어(340)의 50 X 8 X 8 채널의 데이터 중 50 X 2 X 2채널의 풀링 데이터는 inner-product FCL(350)의 50 X 4 X 4 채널의 데이터 중 1 X 1 X 1 채널의 inner-product FCL 데이터에 대응될 수 있다.
컨볼루션 신경망(400)은 분류 기능을 담당하는 inner-product FCL(fully connected layer)(350)를 포함할 수 있다. inner-product FCL(fully connected layer)(350)의 크기는 50 X 4 X 4가 될 수 있다. 예를 들면, inner-product FCL(fully connected layer)(350)의 50 X 4 X 4 채널의 모든 데이터는 복수의 Relu1 레이어(360, 370)의 하나의 채널의 데이터에 대응될 수 있다.
컨볼루션 신경망(400)은 액티베이션(activation) 기능을 담당하는 복수의 Relu1 레이어(360, 370)를 포함할 수 있다. Relu1 레이어(360, 370)의 폭은 500이될 수 있다.
컨볼루션 신경망(400)은 정규화 기능을 수행하는 배치 정규화(batch normalization) 레이어(380)를 포함할 수 있다. 배치 정규화(batch normalization) 레이어(380)의 폭은 10이될 수 있다.
예를 들면, 제2 컨볼루션 레이어(330)는 웨이트 데이터(391A, 391B) 및 바이어스 데이터(392)로 구분될 수 있다. 웨이트 데이터는 커널1(391A)부터 커널M(391M)까지 M개의 커널에 대응하는 M개의 단위 웨이트 데이터를 포함할 수 있고, 바이어스 데이터는 M개의 단위 바이어스를 포함할 수 있다.
단위 웨이트 데이터의 크기는 N X K X K가 될 수 있고, 단위 바이어스 데이터의 크기는 1 X 1 X 1가 될 수 있다. 여기서, N은 제2 컨볼루션 레이어(330)의 폭이 될 수 있고, N은 20이 될 수 있다. 여기서, M은 제2 컨볼루션 레이어(330)의 다음 레이어인 제2 풀링 레이어(340)의 폭이 될 수 있고, M은 50이 될 수 있다. 여기서, K는 제2 풀링 레이어(340)의 하나의 채널의 데이터에 대응되는 제2 컨볼루션 레이어(330)의 컨볼루션 커널 집합의 가로 또는 세로 채널 갯수가 될 수 있으며, K는 5가 될 수 있다.
도 4는 본 발명의 실시예에 따른 컨볼루션 신경망의 레이어 중 컨볼루션 레이어에 대한 연산 동작을 도시한다.
도 4에 도시된 바와 같이, 본 발명의 실시예에 따르면, 신경망 연산 장치(150)는 입력 데이터(410) 중 첫번째 세로줄의 첫번째 가로줄(첫번째 채널)의 N X K X K 크기의 입력 데이터(411)와 N X K X K크기의 웨이트 M개(461A, 461M)를 컨볼루션(convolution, 입력 데이터와 같은 위치의 웨이트를 곱하여 모두 더한 값)할 수 있다.
이어서, 신경망 연산 장치(150)는 컨볼루션 과정 후 M개의 1 X 1 X 1크기의 bias 값(462)을 더하여 출력 데이터(420) 중 첫번째 채널의 M개의 1 X 1 X 1크기의 출력값(421)을 계산할 수 있다.
도 5는 본 발명의 실시예에 따른 내장 명령어를 포함한 고압축 시냅스 코드 생성 과정을 나타낸 흐름도이다.
상기에서 도 2의 내장 명령어를 포함한 고압축 시냅스 코드(219) 영역을 제외한 나머지 데이터 영역(211-218)(입력 데이터 저장 공간, 출력 데이터 저장 공간, 웨이트 공간, 레이어 설정 공간)에 각각 해당 데이터가 미리 로드 되어있음을 가정한다. 또한, 신경망 연산 장치(150)가 각 웨이트의 각 커널의 저장 위치를 미리 저장된 테이블(table)로 미리 알고 있음을 가정한다. 모든 레이어 설정의 저장 위치를 table로 미리 알고 있음을 가정한다.
예를 들면, 이하, 입력 데이터 로딩 가로줄 단위가 19줄이고 출력 데이터 저장 가로줄 단위 19줄인 경우를 예시하여 설명한다. 신경망 제어 장치(100)는 가로 19줄에 대한 연산을 한번에 처리하고, 세로 줄 방향으로 19번 반복하여 처리할 수 있다.
도 5에 도시된 바와 같이, 먼저, 신경망 제어 장치(100)는 레이어 설정 디스크립터를 코딩할 수 있다(S501). 예를 들면, 신경망 제어 장치(100)는 메모리(110) 내에서 해당 레이어 설정의 저장 위치를 source address로, 레이어 설정 내용이 전송될 신경망 연산 장치(150)의 주소를 destination address로 설정하고, 입력 데이터 사이즈만큼 전송하도록 디스크립터를 생성하며, 다음 연산에 대응되는 레지스터의 주소를 디스크립터 next address로 설정한다.
그 다음, 신경망 제어 장치(100)는 내장 명령어 처리기 레지스터를 초기화하는 디스크립터를 코딩할 수 있다(S503). 예를 들면, 신경망 제어 장치(100)는 세로 방향 r 위치로 사용할 내장 명령어 처리기에 대한 레지스터를 0으로 초기화할 수 있다. 그 다음, 신경망 제어 장치(100)는 r의 종료 조건을 확인하기 위해 R=19를 레지스터에 초기화할 수 있다. 예를 들면, 내장 명령어 처리기의 레지스터 7번을 0으로 설정하고자 할 경우, 신경망 제어 장치(100)는 기계어로 표현되며 내장 명령어 디스크립터로 저장되도록 r = r7 = 0을 저장할 수 있다. 그 다음, 신경망 제어 장치(100)는 입력 데이터의 세로 방향 위치 if_r을 내장 명령어 처리기 레지스터에 0으로 초기화할 수 있다. 그 다음, 신경망 제어 장치(100)는 매 5줄의 r마다 입력 데이터를 로딩할 수 있도록 if_step을 내장 명령어 레지스터에 5로 초기화할 수 있다.
그 다음, 신경망 제어 장치(100)는 입력 데이터를 로딩하기 위한 디스크립터를 코딩할 수 있다(S505). 예를 들면, 신경망 제어 장치(100)는 if_r 과 r의 레지스터 값이 같으면 입력 데이터 로딩 디스크립터 코딩이 수행되도록 내장 명령어 디스크립터를 코딩할 수 있다. 신경망 제어 장치(100)는 if_r 과 r의 레지스터 값이 서로 다른 경우 bypass 되도록 내장 명령어 디스크립터를 코딩할 수 있다. 입력 데이터 로딩 디스크립터는 "source address = 메모리의 입력 데이터 address, destination address = 신경망 연산기의 메모리 address, start x = 0, start y = if_r, start z = 0, size x = 19, size y = 5 + (kernel size - stride size), size z = 64"와 같이 코딩될 수 있다. 입력 데이터 로딩이 수행되면, 신경망 제어 장치(100)는 다음 입력 데이터 로딩 위치로 if_r를 업데이트할 수 있다. 예를 들면, 신경망 제어 장치(100)는 If_r+=if_step으로 업데이트 되도록 내장 명령어 디스크립터를 코딩할 수 있다.
그 다음, 신경망 제어 장치(100)는 웨이트 전송 디스크립터를 코딩할 수 있다(S507). 이하에서, 신경망 제어 장치(100)가 각 레이어의 모든 커널의 웨이트에 대해 저장 번지와 크기를 table로 알고 있다고 가정한다. 예를 들면, 신경망 제어 장치(100)는 load 웨이트 #0 디스크립터 등의 웨이트 전송 디스크립터들을 순서대로 생성할 수 있다. Sparse 웨이트일 경우, 신경망 제어 장치(100)는 CSR 방식으로 디스크립터들을 코딩하여 0이 아닌 웨이트만 웨이트, sparse index의 짝으로 구성할 수 있다. 예를 들면, 신경망 제어 장치(100)는 모든 웨이트를 순서대로 저장할 수 있다. 웨이트 전송 디스크립터는 'source address = 메모리의 웨이트 address, destination address = 신경망 연산기의 메모리 address, 해당 웨이트의 nbytes, descriptor next address"와 같다.
그 다음, 신경망 제어 장치(100)는 출력 데이터 저장 디스크립터를 코딩할 수 있다(S509). 예를 들면, 신경망 제어 장치(100)는 출력을 원하는 출력 커널 개수 만큼(도 2의 경우 출력 커널 32개가 단위로) 출력 데이터 저장 디스크립터 코딩을 수행한 후, 출력 데이터 저장 디스크립터를 생성할 수 있다. 예를 들면, 출력 데이터 저장 디스크립터는"source address = 메모리의 출력 데이터 address, destination address = 신경망 연산기의 출력 memory address, start x = 0, start y = r (초기= 0), start z = (0, 32, 64?), size x = 19, size y =1, size z = 32"와 같다. start_z는 SW 코드에서 출력을 원하는 start z로 표기한다. 그 다음, 신경망 제어 장치(100)는 모든 커널이 처리될 때까지 웨이트 전송 디스크립터와 출력 데이터 저장 디스크립터 코딩을 반복하여 생성할 수 있다.
그 다음, 신경망 제어 장치(100)는 내장 register 업데이트 및 루프 종료 결정 동작을 다른 세로 라인에 대해서 반복하기 위해 r을 1 증가시키도록 내장 명령어 디스크립터를 작성할 수 있다(S511). 예를 들면, 신경망 제어 장치(100)는 종료 조건으로서 r<R인지 확인하며, 조건을 만족하는 경우 next 디스크립터 address를 if_descrpt_addr로 설정하여 이전의 단계들이 다시 수행되도록 하고, 만족하지 않으면 next 디스크립터 address를 다음 디스크립터 번지로 설정하여 해당 레이어의 코딩을 종료한다.
조건을 확인하여 r<R인 경우, 신경망 제어 장치(100)는 next 디스크립터 address로 if_descrpt_addr로 돌아가서 디스크립터에 대응하는 과정을 반복 수행한다. r이 1 업데이트 되면, 신경망 제어 장치(100)는 입력 데이터 로딩(r=if_r일 때만 수행), 출력 데이터 로딩 동작을 서로 다르게 적용한다. 출력 데이터 저장 디스크립터는 "source address = 메모리의 입력 데이터 address, destination address = 신경망 연산기의 출력 memory address, start x = 0, start y = r (1, 2, 3, ?, R-1), start z = (0, 32, 64 ..), size x = 19, size y =1, size z = 32"이 될 수 있다.
마지막으로, 신경망 제어 장치(100)는 모든 레이어의 코딩이 종료됐는지 확인하고, 그 결과에 기반하여 다음 레이어 코딩으로 진행을 결정하거나 종료를 결정할 수 있다(S513).
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 신경망의 복수의 레이어 각각에 대한 복수의 프로세스를 수행하는 신경망 연산 장치;
    상기 복수의 프로세스를 수행하기 위한 복수의 데이터를 저장하는 데이터 저장 공간 및 상기 복수의 프로세스에 관한 복수의 디스크립터가 저장되는 시냅스 코드 저장 공간을 포함하는 메모리;
    상기 복수의 디스크립터를 획득하고, 상기 복수의 디스크립터에 기반하여 상기 복수의 데이터를 상기 신경망 연산 장치로 전송하는 메모리 전송 처리기;
    상기 복수의 디스크립터를 상기 메모리 전송 처리기로부터 획득하고, 상기 복수의 프로세스 중 제1 프로세스에 대응하는 제1 디스크립터에 기반하여 상기 제1 디스크립터에 설정된 제1 데이터를 상기 신경망 연산 장치로 전송하고, 상기 제1 디스크립터에 기반하여 상기 제1 프로세스의 다음 동작인 제2 프로세스에 대응하는 제2 디스크립터를 독출하고, 상기 제2 디스크립터에 기반하여 상기 제2 디스크립터에 대응하는 제2 데이터를 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어하는 내장 명령어 처리기; 및
    상기 복수의 디스크립터를 생성하는 시냅스 코드 생성부를 포함하는
    신경망 제어 장치.
  2. 제1항에 있어서,
    상기 신경망 연산 장치는 상기 복수의 데이터를 이용하여 상기 복수의 레이어 각각에 대한 상기 복수의 프로세스를 수행하는
    신경망 제어 장치.
  3. 제1항에 있어서,
    상기 시냅스 코드 생성부는 상기 복수의 레이어 중 제1 레이어에 대한 상기 복수의 프로세스가 종료되면, 상기 제1 레이어의 출력 데이터를 입력값으로 이용하여 상기 제1 레이어의 다음 레이어인 제2 레이어에 대한 상기 복수의 프로세스를 수행할 수 있도록 상기 데이터 공간의 입력 데이터 공간과 상기 데이터 공간의 출력 데이터 공간을 서로 전환하는
    신경망 제어 장치.
  4. 제3항에 있어서,
    상기 시냅스 코드 생성부는 상기 입력 데이터의 채널 중 첫번째 채널을 상기 내장 명령어 처리기의 레지스터에 초기화하고 상기 첫번째 채널에 대한 상기 복수의 프로세스를 수행한 후에 상기 레지스터에 1을 합산하도록 하는 내장 명령어 디스크립터를 생성하는
    신경망 제어 장치.
  5. 제4항에 있어서,
    상기 내장 명령어 처리기는 상기 내장 명령어 디스크립터를 획득하고, 상기 내장 명령어 디스크립터에 기반하여 상기 입력 데이터의 모든 채널의 픽셀값을 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어하는
    신경망 제어 장치.
  6. 제1항에 있어서,
    상기 제1 디스크립터는 상기 제2 디스크립터의 주소 정보를 포함하는
    신경망 제어 장치.
  7. 제6항에 있어서,
    상기 내장 명령어 처리기는 상기 제2 디스크립터의 주소 정보를 상기 제1 디스크립터로부터 독출하고, 상기 제2 디스크립터의 주소 정보에 기반하여 상기 제2 디스크립터를 획득하며, 상기 제2 디스크립터에 대응하는 상기 제2 데이터를 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어하는
    신경망 제어 장치.
  8. 제1항에 있어서,
    상기 복수의 데이터는 레이어 설정 데이터, 입력 데이터, 복수의 웨이트 및 출력 데이터를 포함하며,
    상기 시냅스 코드 생성부는 상기 복수의 웨이트 각각을 상기 입력 데이터에 적용할 때마다 나머지 웨이트 및 출력 데이터에 대한 디스크립터를 생성하는
    신경망 제어 장치.
  9. 신경망의 복수의 레이어 각각에 대한 복수의 프로세스를 수행하는 신경망 제어 방법에 있어서,
    상기 복수의 레이어 각각에 대한 상기 복수의 프로세스를 수행하는 데에 공통으로 이용되며 상기 복수의 프로세스를 수행하기 위한 복수의 데이터를 저장하는 단계;
    상기 복수의 프로세스에 관한 복수의 디스크립터를 저장하는 단계;
    상기 복수의 디스크립터를 획득하는 단계;
    상기 복수의 프로세스 중 제1 프로세스에 대응하는 제1 디스크립터에 기반하여 상기 제1 디스크립터에 설정된 제1 데이터를 전송하는 단계;
    상기 제1 디스크립터에 기반하여 상기 제1 프로세스의 다음 동작인 제2 프로세스에 대응하는 제2 디스크립터를 독출하는 단계;
    상기 제2 디스크립터에 기반하여 상기 제2 디스크립터에 대응하는 제2 데이터를 전송하는 단계; 및
    상기 제1 데이터 및 상기 제2 데이터에 기반하여 상기 복수의 프로세스를 수행하는 단계를 포함하는
    방법.
  10. 제9항에 있어서,
    상기 복수의 레이어 중 제1 레이어에 대한 상기 복수의 프로세스가 종료되면, 상기 제1 레이어의 출력 데이터를 입력값으로 이용하여 상기 제1 레이어의 다음 레이어인 제2 레이어에 대한 상기 복수의 프로세스를 수행할 수 있도록 상기 데이터 공간의 입력 데이터 공간과 상기 데이터 공간의 출력 데이터 공간을 서로 전환하는 단계를 포함하는
    방법.
  11. 제10항에 있어서,
    상기 입력 데이터의 채널 중 첫번째 채널을 상기 내장 명령어 처리기의 레지스터에 초기화하고 상기 첫번째 채널에 대한 상기 복수의 프로세스를 수행한 후에 상기 레지스터에 1을 합산하도록 하는 내장 명령어 디스크립터를 생성하는 단계를 포함하는
    방법.
  12. 제11항에 있어서,
    상기 내장 명령어 디스크립터를 획득하는 단계, 그리고
    상기 내장 명령어 디스크립터에 기반하여 상기 입력 데이터의 모든 채널의 픽셀값을 신경망 연산 장치로 전송하는 단계를 포함하는
    방법.
  13. 제9항에 있어서,
    상기 제1 디스크립터는 상기 제2 디스크립터의 주소 정보를 포함하는
    방법.
  14. 제13항에 있어서,
    상기 제2 디스크립터의 주소 정보를 상기 제1 디스크립터로부터 독출하는 단계;
    상기 제2 디스크립터의 주소 정보에 기반하여 상기 제2 디스크립터를 획득하는 단계; 및
    상기 제2 디스크립터에 대응하는 상기 제2 데이터를 전송하는 단계를 포함하는
    방법.
  15. 제9항에 있어서,
    상기 복수의 데이터는 레이어 설정 데이터, 입력 데이터, 복수의 웨이트 및 출력 데이터를 포함하고,
    상기 복수의 프로세스는 상기 레이어를 설정하는 프로세스, 상기 입력 데이터를 독출하는 프로세스, 상기 웨이트를 설정하는 프로세스 및 상기 출력 데이터를 저장하는 프로세스를 포함하는
    방법.
  16. 제15항에 있어서,
    상기 복수의 웨이트 각각을 상기 입력 데이터에 적용할 때마다 나머지 웨이트 및 상기 출력 데이터에 대한 디스크립터를 생성하는 단계를 포함하는
    방법.
  17. 신경망의 복수의 레이어 각각에 대한 레이어를 설정하고, 상기 레이어에 입력될 입력 데이터를 획득하며, 상기 입력 데이터에 기반하여 상기 복수의 레이어에 대한 연산을 수행하는 신경망 연산 장치;
    상기 레이어 설정을 위한 레이어 설정 데이터 및 상기 입력 데이터를 저장하는 데이터 저장 공간 및 상기 레이어 설정 동작에 대응하는 레이어 설정 디스크립터 및 상기 입력 데이터 획득 동작에 관한 입력 데이터 획득 디스크립터가 저장되는 시냅스 코드 저장 공간을 포함하는 메모리;
    상기 레이어 설정 디스크립터 및 상기 입력 데이터 획득 디스크립터를 획득하고, 상기 레이어 설정 디스크립터 및 상기 입력 데이터 획득 디스크립터에 기반하여 상기 레이어 설정 데이터 및 상기 입력 데이터를 상기 신경망 연산 장치로 전송하는 메모리 전송 처리기;
    상기 레이어 설정 디스크립터 및 상기 입력 데이터 획득 디스크립터를 상기 메모리 전송 처리기로부터 획득하고, 상기 레이어 설정 디스크립터에 기반하여 상기 레이어 설정 데이터를 상기 신경망 연산 장치로 전송하고, 상기 레이어 설정 디스크립터에 포함된 상기 입력 데이터 획득 디스크립터의 주소 정보에 기반하여 상기 입력 데이터 획득 디스크립터를 독출하고, 상기 입력 데이터 획득 디스크립터에 기반하여 상기 입력 데이터를 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어하는 내장 명령어 처리기; 및
    상기 레이어 설정 디스크립터 및 상기 입력 데이터 획득 디스크립터를 생성하는 시냅스 코드 생성부를 포함하는
    신경망 제어 장치.
  18. 제17항에 있어서,
    상기 시냅스 코드 생성부는 상기 입력 데이터의 채널 중 제1 채널을 상기 내장 명령어 처리기의 레지스터에 초기화하고 상기 제1 채널에 대한 웨이트 설정 및 출력 데이터 저장 프로세스를 수행한 이후에 상기 레지스터에 1을 합산하도록 하는 내장 명령어 디스크립터를 생성하는
    신경망 제어 장치.
  19. 제18항에 있어서,
    상기 내장 명령어 처리기는 상기 내장 명령어 디스크립터를 획득하고, 상기 내장 명령어 디스크립터에 기반하여 상기 입력 데이터의 모든 채널의 픽셀값을 상기 신경망 연산 장치로 전송하도록 상기 메모리 전송 처리기를 제어하는
    신경망 제어 장치.
  20. 제17항에 있어서,
    상기 데이터 저장 공간은 복수의 웨이트 및 출력 데이터를 저장하며,
    상기 시냅스 코드 생성부는 상기 복수의 웨이트 각각을 상기 입력 데이터에 적용할 때마다 나머지 웨이트 및 출력 데이터에 대한 디스크립터를 생성하는
    신경망 제어 장치.
KR1020180134727A 2018-11-05 2018-11-05 신경망 제어 장치 및 방법 KR102720879B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180134727A KR102720879B1 (ko) 2018-11-05 신경망 제어 장치 및 방법
US16/541,245 US20200143228A1 (en) 2018-11-05 2019-08-15 Neural network control device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180134727A KR102720879B1 (ko) 2018-11-05 신경망 제어 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200051395A true KR20200051395A (ko) 2020-05-13
KR102720879B1 KR102720879B1 (ko) 2024-10-24

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021230624A1 (ko) * 2020-05-15 2021-11-18 삼성전자 주식회사 영상 처리 장치 및 그 동작방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021230624A1 (ko) * 2020-05-15 2021-11-18 삼성전자 주식회사 영상 처리 장치 및 그 동작방법

Also Published As

Publication number Publication date
US20200143228A1 (en) 2020-05-07

Similar Documents

Publication Publication Date Title
US11507429B2 (en) Neural network accelerator including bidirectional processing element array
US11487845B2 (en) Convolutional operation device with dimensional conversion
US5367692A (en) Parallel computer system including efficient arrangement for performing communications among processing node to effect an array transposition operation
KR102382186B1 (ko) 딥 러닝을 위한 고성능 컴퓨팅 시스템
JP6892424B2 (ja) ハイパーパラメータチューニング方法、装置及びプログラム
KR20200107295A (ko) 시스톨릭 어레이 및 프로세싱 시스템
KR20220153689A (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
CN112200300B (zh) 卷积神经网络运算方法及装置
US10552732B2 (en) Multi-layer neural network
US20200387400A1 (en) Allocation system, method and apparatus for machine learning, and computer device
JP2021012680A (ja) データ保存装置、データ処理システム及びこれのための加速装置
CN108304926B (zh) 一种适用于神经网络的池化计算装置及方法
CN115249315B (zh) 面向异构计算设备的深度学习图像分类方法及装置
KR20190063393A (ko) 시스톨릭 어레이를 이용한 cnn 처리 장치 및 방법
CN112559046A (zh) 数据处理装置及人工智能处理器
CN112395092A (zh) 数据处理方法及人工智能处理器
US20210174174A1 (en) Distributed ai training topology based on flexible cable connection
EP4052188B1 (en) Neural network instruction streaming
KR102720879B1 (ko) 신경망 제어 장치 및 방법
KR20200051395A (ko) 신경망 제어 장치 및 방법
KR102373802B1 (ko) 신경망 연산 효율 증대를 위한 신경망 가속기 및 그의 동작 방법
TWI715281B (zh) 用於實施神經網路應用之多晶片系統、適用於多晶片系統的資料處理方法、和非暫態電腦可讀取媒體
CN109272112B (zh) 一种面向神经网络的数据重用指令映射方法、系统及装置
CN112712167B (zh) 支持多种卷积神经网络加速的存储器访问方法及系统
US11847465B2 (en) Parallel processor, address generator of parallel processor, and electronic device including parallel processor

Legal Events

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