KR20200119164A - 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법 - Google Patents

정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법 Download PDF

Info

Publication number
KR20200119164A
KR20200119164A KR1020190041648A KR20190041648A KR20200119164A KR 20200119164 A KR20200119164 A KR 20200119164A KR 1020190041648 A KR1020190041648 A KR 1020190041648A KR 20190041648 A KR20190041648 A KR 20190041648A KR 20200119164 A KR20200119164 A KR 20200119164A
Authority
KR
South Korea
Prior art keywords
layer
management table
edge
memory management
name
Prior art date
Application number
KR1020190041648A
Other languages
English (en)
Inventor
이미영
이주현
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020190041648A priority Critical patent/KR20200119164A/ko
Priority to US16/808,124 priority patent/US11507799B2/en
Publication of KR20200119164A publication Critical patent/KR20200119164A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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

Landscapes

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

Abstract

본 발명의 실시 예에 따른 신경망 연산 장치는 외부 메모리 장치와 통신하고, 복수의 레이어들을 실행하도록 구성된다. 신경망 연산 장치의 동작 방법은 복수의 레이어들 중 제1 레이어에 대한 제1 레이어 정보 및 제1 메모리 관리 테이블을 기반으로 제1 입력 주소를 연산하고, 제1 메모리 관리 테이블을 갱신하여 제2 메모리 관리 테이블을 생성하는 단계, 연산된 제1 입력 주소를 기반으로 외부 메모리 장치로부터 제1 레이어로 입력될 제1 입력 데이터를 읽는 단계, 제1 레이어 정보 및 제1 메모리 관리 테이블을 기반으로, 제1 출력 주소를 연산하고, 제2 메모리 관리 테이블을 갱신하여 제3 메모리 관리 테이블을 생성하는 단계, 및 제2 출력 주소를 기반으로, 외부 메모리 장치에, 제1 레이어로부터 출력된 제1 출력 데이터를 저장하는 단계를 포함한다.

Description

정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법{INFORMATION PROCESSING APPARATUS AND OPERATION METHOD OF NEURAL NETWORK PROCESSING DEVICE THEREIN}
본 발명은 정보 처리 기술에 관한 것으로, 좀 더 상세하게는 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법에 관한 것이다.
최근 영상 인식을 위한 기술로 심층 신경망(Deep Neural Network) 기법의 하나인 컨볼루션 신경망(Convolutional Neural Network; 이하, CNN)이 활발하게 연구되고 있다. 신경망 구조는 사물 인식이나 필기체 인식 등 다양한 객체 인지 분야에서 뛰어난 성능을 보이고 있다. 특히, CNN은 객체 인식에 매우 효과적인 성능을 제공하고 있다.
최근에는 효율적인 CNN 구조가 제시되면서, 신경망을 이용한 인식률을 거의 인간이 인식할 수 있는 수준에까지 이르렀다. 그러나 CNN신경망 구조가 매우 복잡하기 때문에, 큰 연산량이 필요하고, 이에 따라, 고성능 서버 또는 GPU를 이용한 하드웨어 가속 방법이 사용된다. 또한, CNN 신경망에서 사용되는 데이터의 크기가 방대하기 때문에, 대용량 및 고속의 메모리 장치가 요구된다. 따러서, 대용량 및 고속 메모리 장치가 지원되지 않는 환경(예를 들어, 모바일 장치)에서는 정상적인 신경망 동작이 어려울 수 있다.
본 발명의 목적은 제한된 용량을 갖는 외부 메모리 장치를 효율적으로 사용하기 위한 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 외부 메모리 장치와 통신하고, 복수의 레이어들을 실행하도록 구성된 신경망 연산 장치의 동작 방법은 상기 복수의 레이어들 중 제1 레이어에 대한 제1 레이어 정보 및 제1 메모리 관리 테이블을 기반으로 제1 입력 주소를 연산하고, 상기 제1 메모리 관리 테이블을 갱신하여 제2 메모리 관리 테이블을 생성하는 단계; 상기 연산된 제1 입력 주소를 기반으로 상기 외부 메모리 장치로부터 상기 제1 레이어로 입력될 제1 입력 데이터를 읽는 단계; 상기 제1 레이어 정보 및 상기 제2 메모리 관리 테이블을 기반으로, 제1 출력 주소를 연산하고, 상기 제2 메모리 관리 테이블을 갱신하여 제3 메모리 관리 테이블을 생성하는 단계; 및 상기 제2 출력 주소를 기반으로, 상기 외부 메모리 장치에, 상기 제1 레이어로부터 출력된 제1 출력 데이터를 저장하는 단계를 포함하고, 상기 제1 내지 제3 메모리 관리 테이블들은 상기 제1 입력 데이터 또는 상기 제1 출력 데이터와 관련되고, 상기 제1 레이어와 연결된 적어도 하나의 에지에 대한 정보를 포함하고, 상기 외부 메모리 장치의 저장 공간은 상기 복수의 레이어들로부터 출력되는 데이터의 전체 크기보다 작다.
예시적인 실시 예에서, 상기 적어도 하나의 에지에 대한 정보는 상기 적어도 하나의 에지에 대한 소스 필드, 타겟 필드, 크기 필드, 토글 필드, 및 병합 필드를 포함한다.
예시적인 실시 예에서, 상기 제1 레이어 정보는 상기 제1 레이어에 대한 제1 레이어 명칭, 상기 제1 입력 데이터에 대한 제1 입력 데이터 명칭, 상기 제1 출력 데이터에 대한 제1 출력 데이터 명칭을 포함하고, 상기 소스 필드는 상기 제1 레이어 명칭 및 상기 제1 입력 데이터 명칭 중 어느 하나로 설정되고, 상기 타겟 필드는 상기 제1 레이어 명칭 및 상기 제1 출력 데이터 명칭 중 어느 하나로 설정되고, 상기 크기 필드는 상기 제1 입력 데이터 또는 상기 제1 출력 데이터의 크기에 대한 정보로 설정되고, 상기 토글 필드는 상기 외부 메모리 장치의 복수의 영역들 중 하나를 가리키도록 설정되고, 상기 병합 필드는 상기 적어도 하나의 에지가 병합될지 여부를 가리키도록 설정된다.
예시적인 실시 예에서, 상기 제1 레이어 정보는 상기 제1 레이어의 제1 레이어 명칭 및 상기 제1 입력 데이터에 대한 제1 입력 데이터 명칭을 포함하고,
상기 제1 레이어 정보 및 상기 제1 메모리 관리 테이블을 기반으로, 제1 입력 주소를 연산하고, 상기 제1 메모리 관리 테이블을 갱신하여 제2 메모리 관리 테이블을 생성하는 단계는, 상기 제1 메모리 관리 테이블에서, 상기 제1 입력 데이터 명칭과 동일한 제1 타겟 필드가 존재하는지 탐색하는 단계; 상기 제1 메모리 관리 테이블에서, 상기 제1 타겟 필드가 존재하는 경우, 상기 적어도 하나의 에지 중 상기 제1 타겟 필드와 대응되는 제1 에지에 대한 정보를 갱신하는 단계; 및 상기 제1 에지에 대한 상기 갱신된 정보를 기반으로 상기 입력 주소를 연산하는 단계를 포함한다.
예시적인 실시 예에서, 상기 제1 에지에 대한 상기 소스 필드를 상기 입력 데이터 명칭으로 변경하고, 상기 동일한 타겟 필드와 대응되는 상기 에지에 대한 상기 타겟 필드를 상기 제1 레이어 명칭으로 변경함으로써, 상기 제1 메모리 관리 테이블이 갱신되어 상기 제2 메모리 관리 테이블이 생성된다.
예시적인 실시 예에서, 상기 제1 레이어 정보 및 상기 제1 메모리 관리 테이블을 기반으로, 제1 입력 주소를 연산하고, 상기 제1 메모리 관리 테이블을 갱신하여 제2 메모리 관리 테이블을 생성하는 단계는, 상기 제1 메모리 관리 테이블에서, 상기 제1 레이어 명칭과 동일한 제2 타겟 필드가 존재하는지 판별하는 단계를 더 포함하고, 상기 제1 메모리 관리 테이블에서, 상기 제2 타겟 필드가 존재하지 않는 경우, 상기 제1 에지의 상기 병합 필드는 베이스 에지를 가리키는 제1 값으로 설정되고, 상기 메모리 관리 테이블에서, 상기 제2 타겟 필드가 존재하는 경우, 상기 제1 에지의 상기 병합 필드는 병합 에지를 가리키는 제2 값으로 설정됨으로써, 상기 제1 메모리 관리 테이블이 갱신되어 상기 제2 메모리 관리 테이블이 생성된다.
예시적인 실시 예에서, 상기 동작 방법은 상기 제1 입력 데이터를 읽은 이후에, 상기 제2 메모리 관리 테이블을 기반으로 상기 적어도 하나의 에지들 중 상기 병합 필드가 상기 제2 값으로 설정된 에지를 삭제하는 단계를 더 포함한다.
예시적인 실시 예에서, 상기 동작 방법은 상기 입력 데이터를 읽은 이후에, 상기 제2 메모리 관리 테이블을 기반으로 상기 적어도 하나의 에지들 중 상기 병합 필드가 상기 제1 값으로 설정된 에지의 상기 토글 필드를 변경하는 단계를 더 포함한다.
예시적인 실시 예에서, 상기 제1 레이어 정보는 상기 제1 레이어의 제1 레이어 명칭 및 상기 제1 출력 데이터에 대한 제1 출력 데이터 명칭을 포함하고, 상기 제1 레이어에 대한 상기 제1 레이어 정보 및 상기 제2 메모리 관리 테이블을 기반으로, 제1 출력 주소를 연산하고, 상기 제2 메모리 관리 테이블을 갱신하여 제3 메모리 관리 테이블을 생성하는 단계는, 상기 제2 메모리 관리 테이블에서, 상기 제1 레이어 명칭과 동일한 제1 타겟 필드가 존재하는지 판별하는 단계; 상기 갱신된 메모리 관리 테이블에서 상기 제1 타겟 필드가 존재하지 않는 경우, 상기 제1 레이어 명칭 및 상기 제1 출력 데이터 명칭을 기반으로 새로운 에지에 대한 정보를 상기 제2 메모리 관리 테이블에 추가하는 단계; 상기 제2 메모리 관리 테이블에서 상기 제1 타겟 필드가 존재하는 경우, 상기 제1 타겟 필드와 대응되는 제1 에지에 대한 정보를 갱신하는 단계; 및 상기 새로운 에지에 대한 정보 및 상기 갱신된 제1 에지에 대한 정보를 기반으로 상기 출력 주소를 연산하는 단계를 포함하고, 상기 새로운 에지에 대한 정보가 추가되거나 또는 상기 제1 에지에 대한 정보가 갱신됨으로써, 상기 제2 메모리 관리 테이블이 갱신되어 상기 제3 메모리 관리 테이블이 생성된다.
예시적인 실시 예에서, 상기 제1 에지의 상기 소스 필드가 상기 제1 레이어 명칭으로 변경되고, 상기 제1 에지의 상기 타겟 필드가 상기 출력 데이터 명칭으로 변경됨으로써, 상기 제1 에지에 대한 정보가 갱신된다.
예시적인 실시 예에서, 상기 동작 방법은 상기 복수의 레이어들 중 제2 레이어에 대한 제2 레이어 정보 및 상기 제3 메모리 관리 테이블을 기반으로 제2 입력 주소를 연산하고, 상기 제3 메모리 관리 테이블을 갱신하여 제4 메모리 관리 테이블을 생성하는 단계; 및 상기 연산된 제2 입력 주소를 기반으로 상기 외부 메모리 장치로부터 상기 제2 레이어에 대한 제2 입력 데이터를 읽는 단계를 더 포함하고, 상기 제1 레이어 및 상기 제2 레이어가 직접적으로 연결된 경우, 상기 제2 입력 주소는 상기 제1 출력 주소와 동일하다.
예시적인 실시 예에서, 상기 복수의 레이어들 중 적어도 하나의 레이어에 대하여 연산된 출력 주소는 상기 제1 입력 주소와 동일하다.
본 발명의 실시 예에 따른 정보 처리 장치는 메모리 장치; 및 상기 외부 메모리 장치로부터 입력 데이터를 읽고, 상기 읽은 입력 데이터를 기반으로 복수의 레이어들을 통해 신경망 연산 동작을 수행하고, 상기 신경 연산 동작에 따른 복수의 출력 데이터를 상기 외부 메모리에 저장하도록 구성된 신경망 연산 장치를 포함하고, 상기 신경망 연산 장치는: 상기 입력 데이터를 기반으로 상기 복수의 레이어들 각각을 실행하여 상기 출력 데이터를 출력하도록 구성된 뉴럴 프로세서; 상기 입력 데이터 및 상기 복수의 출력 데이터와 연관된 적어도 하나의 에지에 대한 정보를 포함하는 메모리 관리 테이블을 저장하도록 구성된 내부 메모리; 및 상기 메모리 관리 테이블 및 상기 복수의 레이어들 각각의 레이어 정보를 기반으로 상기 복수의 레이어들 각각에 대한 입력 주소 및 출력 주소를 연산하도록 구성된 프로세서; 및 상기 입력 주소를 기반으로 상기 외부 메모리 장치로부터 상기 입력 데이터를 읽고, 상기 출력 주소를 기반으로 상기 외부 메모리 장치로 상기 출력 데이터를 저장하도록 구성된 메모리 제어기를 포함하고, 상기 외부 메모리 장치의 저장 공간은 상기 복수의 레이어들 각각으로부터의 상기 출력 데이터의 전체 크기보다 작다.
예시적인 실시 예에서, 상기 복수의 레이어들 중 적어도 2개의 레이어들에 대한 출력 주소들은 서로 동일히다.
예시적인 실시 예에서, 상기 적어도 하나의 에지에 대한 정보는 상기 적어도 하나의 에지에 대한 소스 필드, 타겟 필드, 크기 필드, 토글 필드, 및 병합 필드를 포함한다.
예시적인 실시 예에서, 상기 레이어 정보는 상기 복수의 레이어들 각각에 대한 레이어 명칭, 입력 데이터 명칭, 출력 데이터 명칭을 포함하고, 상기 소스 필드는, 상기 프로세서에 의해, 상기 레이어 명칭 및 상기 입력 데이터 명칭 중 어느 하나로 설정되고, 상기 타겟 필드는, 상기 프로세서에 의해, 상기 레이어 명칭 및 상기 출력 데이터 명칭 중 어느 하나로 설정되고, 상기 크기 필드는, 상기 프로세서에 의해, 상기 입력 데이터 또는 상기 출력 데이터의 크기에 대한 정보로 설정되고, 상기 토글 필드는, 상기 프로세서에 의해, 상기 메모리 장치의 복수의 영역들 중 하나를 가리키도록 설정되고, 상기 병합 필드는, 상기 프로세서에 의해, 상기 적어도 하나의 에지가 병합될지 여부를 가리키도록 설정된다.
본 발명의 실시 예에 따르면, 신경망 연산 장치는 복수의 레이어들 각각의 레이어 정보 및 메모리 관리 테이블을 기반으로 외부 메모리 장치를 동적으로 관리할 수 있다. 따라서, 외부 메모리 장치의 저장 공간이 제한적이더라도, 신경망 연산 장치는 정상적으로 신경망 연산 동작을 수행할 수 있다. 따라서 감소된 비용 및 향상된 성능을 갖는 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 정보 처리 장치를 보여주는 블록도이다.
도 2는 도 1의 신경망 연산 장치를 예시적으로 보여주는 블록도이다.
도 3은 도 1의 신경망 연산 장치의 신경망 연산 동작을 예시적으로 보여주는 도면이다.
도 4는 도 1의 신경망 연산 장치의 동작을 보여주는 순서도이다.
도 5는 도 1의 메모리 관리 테이블을 예시적으로 보여주는 도면이다.
도 6은 도 4의 S120 단계의 동작(즉, 입력 주소 연산 동작)을 좀 더 상세하게 보여주는 순서도이다.
도 7은 도 6의 S12a 단계의 동작을 보여주는 순서도이다.
도 8은 도 4의 S130 단계의 동작(즉, 출력 주소 연산 동작)을 보여주는 순서도이다.
도 9 및 도 10a 내지 도 10i는 본 발명의 실시 예에 따른 신경망 연산 장치의 메모리 주소 연산 동작 또는 메모리 영역 할당 동작을 설명하기 위한 도면들이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
또한, 상세한 설명 또는 도면에서 사용되는 기능 블록들은 본 발명의 실시 예에서 소프트웨어, 하드웨어, 또는 그것들의 조합으로 구현될 수 있으며, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있고, 하드웨어는 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(MEMS; microelectromechanical system), 수동 소자들, 또는 그것들의 조합일 수 있다.
도 1은 본 발명의 실시 예에 따른 정보 처리 장치를 보여주는 블록도이다. 도 1을 참조하면, 정보 처리 장치(100)는 신경망 연산 장치(110) 및 외부 메모리 장치(120)를 포함할 수 있다. 예시적인 실시 예에서, 정보 처리 장치는 개인용 컴퓨터, 노트북, 스마트폰, 태블릿, 디지털 카메라 등과 같은 다양한 컴퓨팅 시스템들 중 하나일 수 있다.
신경망 연산 장치(110)는 다양한 신경망 연산 동작을 수행하도록 구성될 수 있다. 예를 들어, 신경망 연산 장치(110)는 컨볼루션 신경망, 심층 신경망 등과 같은 다양한 기계 학습 알고리즘 또는 인공 지능 알고리즘을 기반으로 외부로부터의 데이터에 대한 식별(예를 들어, 객체 인식, 이미지 분류, 위치 인식 등)을 수행할 수 있다. 일 예로서, 컨볼루션 신경망은 다양한 목적(예를 들어, 범용 객체 인식, 위치 인식 등)을 위해 학습되고, 학습된 모델을 기반으로 다양한 목적을 구현할 수 있다.
외부 메모리 장치(120)는 신경망 연산 장치(110)로부터 출력되는 데이터를 저장하거나 또는 저장된 데이터를 신경망 연산 장치(110)로 제공하도록 구성될 수 있다. 예시적인 실시 예에서, 외부 메모리 장치(120)는 DRAM, SRAM 등과 같이 전원이 차단되면 데이터가 소실되는 휘발성 메모리이거나 또는 플래시 메모리, PRAM, ReRAM, MRAM, FRAM 등과 같이 전원이 차단되더라도 데이터가 유지되는 불휘발성 메모리 중 어느 하나일 수 있다.
예시적인 실시 예에서, 신경망 연산 장치(110)는 복수의 레이어들을 순차적으로 처리함으로써, 상술된 연산(즉, 신경망 연산)을 수행하도록 구성될 수 있다. 예를 들어, 복수의 레이어들 각각은 입력 데이터에 대하여 미리 정해진 연산을 수행하고, 수행된 연산의 결과를 출력 데이터로서 출력할 수 있다. 출력 데이터는 다음 레이어의 입력 데이터로서 제공될 수 있다. 이러한 입력 데이터 및 출력 데이터는 대응하는 레이어에서 사용되기 때문에, 입력 데이터 및 출력 데이터는 외부 메모리 장치(120)에 저장되고 관리된다. 이 때, 외부 메모리 장치(120)의 용량이 복수의 레이어들 각각의 입력 데이터 및 출력 데이터를 저장하는데 충분하지 않은 경우, 신경망 연산 장치(110)는 신경망 연산 동작을 정상적으로 수행하지 못할 수 있다.
본 발명의 실시 예에 따른 신경망 연산 장치(110)는 메모리 관리 테이블(111)을 기반으로, 제한된 크기를 갖는 외부 메모리 장치(120)를 관리함으로써, 복수의 레이어들 각각에 대한 입력 데이터 및 출력 데이터를 정상적으로 관리할 수 있다. 예를 들어, 메모리 관리 테이블(111)은 특정 레이어에서의 입력 데이터에 대한 외부 메모리 장치(120)의 입력 주소 및 특정 레이어에서의 출력 데이터에 대한 외부 메모리 장치(120)의 출력 주소를 관리하기 위한 다양한 정보를 포함할 수 있다. 본 발명의 실시 예에 따른 메모리 관리 테이블(111)은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 2는 도 1의 신경망 연산 장치를 예시적으로 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 신경망 연산 장치(110)는 프로세서(112), 뉴럴 프로세서(113), 내부 메모리(114), 주소 관리 모듈(115), 주소 연산 모듈(116), 및 외부 메모리 제어기(117)를 포함할 수 있다.
프로세서(112)는 신경망 연산 장치(110)의 제반 동작을 제어할 수 있다. 뉴럴 프로세서(113)는 복수의 레이어들 각각에서 수행되는 연산 동작을 수행하도록 구성될 수 있다. 내부 메모리(114)는 신경망 연산 장치(110)의 버퍼 메모리 또는 동작 메모리로서 사용될 수 있다.
주소 관리 모듈(115)은 뉴럴 프로세서(113)에서 실행되는 복수의 레이어들에 대한 레이어 정보를 기반으로, 도 1을 참조하여 설명된 메모리 관리 테이블(111)을 관리 또는 갱신하도록 구성될 수 있다. 예를 들어, 뉴럴 프로세서(113)에서 제1 레이어에 대한 연산이 수행되는 경우, 주소 관리 모듈(115)은 제1 레이어에 대한 레이어 정보(예를 들어, 제1 레이어의 명칭, 제1 레이어의 입력 데이터의 명칭, 및 제1 레이어의 출력 데이터의 명칭 등)를 기반으로, 메모리 관리 테이블(111)을 관리 또는 갱신할 수 있다.
주소 연산 모듈(116)은 도 1을 참조하여 설명된 메모리 관리 테이블(111)을 기반으로 뉴럴 프로세서(113)에서 실행되는 레이어의 입력 데이터 및 출력 데이터 각각에 대한 외부 메모리 장치(120)의 입력 주소 및 출력 주소를 연산하도록 구성될 수 있다. 예를 들어, 뉴럴 프로세서(113)에서 제1 레이어에 대한 연산이 수행되는 경우, 주소 연산 모듈(116)은 메모리 관리 테이블(111)을 기반으로 제1 레이어에 대한 입력 주소 및 출력 주소를 연산할 수 있다. 여기에서, 제1 레이어에 대한 입력 주소는 외부 메모리 장치(120)의 저장 공간 중 제1 레이어로 입력될 입력 데이터가 저장된 위치를 가리키고, 제1 레이어에 대한 출력 주소는 외부 메모리 장치(120)의 저장 공간 중 제1 레이어로부터 출력될 출력 데이터가 저장될 위치를 가리킨다.
예시적인 실시 예에서, 도 1을 참조하여 설명된 메모리 관리 테이블(111)은 내부 메모리(114)에 저장될 수 있고, 주소 관리 모듈(115) 및 주소 연산 모듈(116)에 의해 관리될 수 있다. 예시적인 실시 예에서, 주소 관리 모듈(115) 또는 주소 연산 모듈(116)은 소프트웨어 형태, 하드웨어 형태 또는 그것들의 조합의 형태로 구현될 수 있다. 소프트웨어 형태의 주소 관리 모듈(115) 또는 주소 연산 모듈(116)은 내부 메모리(114)에 저장될 수 있고, 내부 메모리(114)에 저장된 프로그램 코드 또는 명령어는 프로세서(112)에 의해 실행될 수 있다. 즉, 프로세서(112)는 주소 관리 모듈(115) 또는 주소 연산 모듈(116)의 동작을 수행하도록 구성될 수 있다.
외부 메모리 제어기(117)는 외부 메모리 장치(120)를 제어하도록 구성될 수 있다. 예를 들어, 외부 메모리 제어기(117)는 주소 연산 모듈(116)에 의해 연산된 입력 주소를 기반으로, 외부 메모리 장치(120)로부터 입력 데이터를 읽고, 읽은 입력 데이터를 뉴럴 프로세서(113)로 전달할 수 있다. 뉴럴 프로세서(113)는 수신된 입력 데이터를 기반으로 신경망 연산을 수행하여 출력 데이터를 생성할 수 있다.
외부 메모리 제어기(117)는 주소 연산 모듈(116)에 의해 연산된 출력 주소를 기반으로, 뉴럴 프로세서(113)로부터 생성된 출력 데이터를 외부 메모리 장치(120)에 저장할 수 있다.
상술된 바와 같이, 신경망 연산 장치(110)는 메모리 관리 테이블(111)을 기반으로 외부 메모리 장치(120)의 저장 공간을 관리할 수 있다. 또는, 신경망 연산 장치(110)는 메모리 관리 테이블(111)을 기반으로, 신경망 연산에서 사용되는 입력 데이터 또는 출력 데이터를 저장하기 위한 공간을 외부 메모리 장치(120)에 동적으로 할당할 수 있다. 따라서, 외부 메모리 장치(120)의 공간이 제한적이더라도, 신경망 연산 장치(110)가 메모리 관리 테이블(111)을 기반으로 저장 공간을 동적으로 할당할 수 있기 때문에, 신경망 연산 장치(110)가 정상적으로 동작할 수 있다.
도 3은 도 1의 신경망 연산 장치의 신경망 연산 동작을 예시적으로 보여주는 도면이다. 본 발명의 실시 예를 명확하게 설명하기 위하여, 신경망 연산 장치(110)의 신경망 연산 동작을 수행하는데 불필요한 구성 요소들은 생략된다. 또한, 도 3의 실시 예에서, 신경망 연산 장치(110)의 신경망 연산 동작은 간략하게 도시되나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 신경망 연산 장치(110)는 Inception, ResNet, DenseNet, GoogleNet, VGG 등과 같이 잘 알려진 신경망(특히, 컨볼루션 신경망)에 따른 연산을 수행하도록 구성될 수 있다.
도 1 및 도 3을 참조하면, 신경망 연산 장치(110)는 입력 데이터(DT0)에 대한 신경망 연산 동작을 수행하고, 신경망 연산 동작의 결과로서 출력 데이터(RDT)(또는 결과 데이터)를 출력할 수 있다. 예를 들어, 신경망 연산 장치(110)가 이미지 정보를 수신하고, 수신된 이미지 정보를 분류하는 경우, 입력 데이터(DT0)는 이미지 데이터일 수 있고, 출력 데이터(RDT)는 분류 결과에 대한 정보일 수 있다.
신경망 연산 장치(110)는 복수의 레이어들을 통해 순차적인 연산을 수행함으로써, 상술된 신경망 연산 동작을 수행할 수 있다. 예를 들어, 신경망 연산 장치(110)의 복수의 레이어들은 입력 레이어(IL), 제1 내지 제3 연산 레이어들(L1~L3), 및 출력 레이어(OL)를 포함할 수 있다.
신경망 연산 장치(110)의 입력 레이어(IL)는 입력 데이터(DT0)를 수신하고, 수신된 입력 데이터(DT0)는 외부 메모리 장치(120)에 저장될 수 있다. 제1 연산 레이어(L1)는 외부 메모리 장치(120)에 저장된 입력 데이터(DT0)를 수신하고, 수신된 입력 데이터(DT0)에 대한 연산을 수행하여 제1 데이터(DT1)를 출력할 수 있다. 출력된 제1 데이터(DT1)는 외부 메모리 장치(120)에 저장될 수 있다.
제2 연산 레이어(L2)는 외부 메모리 장치(120)에 저장된 제1 데이터(DT1)를 수신하고, 수신된 제1 데이터(DT1)에 대한 연산을 수행하여 제2 데이터(DT2)를 출력할 수 있다. 출력된 제2 데이터(DT2)는 외부 메모리 장치(120)에 저장될 수 있다.
제3 연산 레이어(L3)는 외부 메모리 장치(120)에 저장된 제2 데이터(DT2)를 수신하고, 수신된 제2 데이터(DT2)에 대한 연산을 수행하여 제3 데이터(DT3)를 출력할 수 있다. 출력된 제3 데이터(DT3)는 외부 메모리 장치(120)에 저장될 수 있다.
출력 레이어(OL)는 외부 메모리 장치(120)에 저장된 제3 데이터(DT3)를 수신하고, 수신된 제3 데이터(DT3)를 출력 데이터(RDT)로서 출력할 수 있다.
상술된 바와 같이, 복수의 레이어들(IL, L1~L3) 각각에서 생성된 출력 데이터는 다음 레이어로 전달되기 위하여 외부 메모리 장치(120)에 저장될 수 있다. 만약 외부 메모리 장치(120)의 저장 공간이 복수의 레이어들(IL, L1~L3) 각각에서 생성된 출력 데이터 전부의 크기보다 작은 경우, 신경망 연산 장치(110)가 정상적으로 동작하지 않을 수 있다.
본 발명의 실시 예에 따른 신경망 연산 장치(110)는 복수의 레이어들 각각에 대한 레이어 정보를 기반으로 복수의 레이어들 각각에서 출력되는 출력 데이터가 저장될 외부 메모리 장치(120)의 영역을 가리키는 출력 주소; 및 복수의 레이어들 각각으로 입력될 입력 데이터가 저장된 외부 메모리 장치(120)의 영역을 가리키는 입력 주소를 관리 또는 연산할 수 있다. 따라서, 본 발명의 실시 예에 따른 신경망 연산 장치(110)는 제한된 크기의 외부 메모리 장치(120)를 사용하여 정상적인 신경망 연산 동작을 수행할 수 있다.
비록, 도 3의 실시 예에서, 일부 레이어들이 도시되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 신경망 연산 장치(110)는 추가적인 레이어들을 통해 신경망 연산 동작을 수행할 수 있다. 또한, 비록 도 3의 실시 예에서, 복수의 레이어들이 순차적으로 연결되는 구성이 게시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 복수의 레이어들은 다양한 방식으로 연결될 수 있다.
도 4는 도 1의 신경망 연산 장치의 동작을 보여주는 순서도이다. 도 1 및 도 4를 참조하면, S110 단계에서, 신경망 연산 장치(110)는 복수의 레이어들 각각에 대한 레이어 정보를 수신할 수 있다. 예를 들어, 신경망 연산 장치(110)는 외부 장치(예를 들어, 서버, 외부 호스트 등)로부터 신경망 연산 장치(110)에 포함된 복수의 레이어들 각각에 대한 레이어 정보를 수신할 수 있다.
예시적인 실시 예에서, 특정 레이어에 대한 레이어 정보는 특정 레이어의 레이어 명칭, 특정 레이어로 입력되는 입력 데이터에 대한 정보, 및 특정 레이어로부터 출력되는 출력 데이터에 대한 정보를 포함할 수 있다. 특정 레이어로 입력되는 입력 데이터에 대한 정보는 입력 데이터에 대한 입력 데이터 명칭, 입력 데이터의 개수, 및 입력 데이터의 크기에 대한 정보를 포함할 수 있다. 특정 레이어로부터 출력되는 출력 데이터에 대한 정보는 출력 데이터에 대한 출력 데이터 명칭, 출력 데이터의 개수, 및 출력 데이터의 크기에 대한 정보를 포함할 수 있다.
예시적인 실시 예에서, 상술된 레이어 정보는 신경망 연산 장치(110)에서 수행되는 신경망 연산 동작에서의 복수의 레이어들의 연결 관계를 기반으로 결정될 수 있다.
S115 단계에서, 변수(k)가 '1'로 설정된다. S115 단계의 변수(k)는 본 발명의 실시 예에 따른 신경망 연산 장치(110)의 반복 동작을 설명하기 위한 것이며, 본 발명의 범위가 이에 한정되지 않음이 이해될 것이다.
S120 단계에서, 신경망 연산 장치(110)는 제k 레이어에 대한 레이어 정보 및 메모리 관리 테이블(111)을 기반으로 제k 레이어의 입력 주소를 연산할 수 있다. 예를 들어, 신경망 연산 장치(110)는 입력된 레이어 정보 중 제k 레이어에 대한 레이어 정보를 기반으로 메모리 관리 테이블(111)을 탐색하고, 탐색 결과를 기반으로 메모리 관리 테이블(111)을 갱신할 수 있다. 신경망 연산 장치(110)는 갱신된 메모리 관리 테이블(111)을 기반으로 제k 레이어로 입력된 입력 데이터에 대한 입력 주소를 연산할 수 있다. 예시적인 실시 예에서, 신경망 연산 장치(110)는 탐색 결과를 기반으로 메모리 관리 테이블(111)을 갱신할 수 있다.
S120-1 단계에서, 신경망 연산 장치(110)는 연산된 입력 주소를 기반으로 제k 레이에어 대한 연산 동작을 수행할 수 있다. 예를 들어, 신경망 연산 장치(110)는 연산된 입력 주소를 기반으로 외부 메모리 장치(120)로부터 입력 데이터를 읽고, 읽은 입력 데이터에 대한 신경망 연산 동작을 수행할 수 있다.
예시적인 실시 예에서, 제k 레이어로 입력될 입력 데이터의 개수가 n개(n은 1보다 큰 정수)인 경우, 신경망 연산 장치(110)는 S120 단계 및 S120-1 단계의 동작들을 n회 반복 수행할 수 있다.
S130 단계에서, 신경망 연산 장치(110)는 제k 레이어에 대한 레이어 정보 및 메모리 관리 테이블(111)을 기반으로 제k 레이어의 출력 주소를 연산할 수 있다. 예를 들어, 신경망 연산 장치(110)는 입력된 레이어 정보 중 제k 레이어에 대한 레이어 정보를 기반으로 메모리 관리 테이블(111)을 탐색하고, 탐색 결과를 기반으로 메모리 관리 테이블(111)을 갱신할 수 있다. 신경망 연산 장치(110)는 갱신된 메모리 관리 테이블(111)을 기반으로 제k 레이어로부터 출력될 출력 데이터에 대한 출력 주소를 연산할 수 있다. 예시적인 실시 예에서, 신경망 연산 장치(110)는 탐색 결과를 기반으로 메모리 관리 테이블(111)을 갱신할 수 있다.
S130-1 단계에서, 신경망 연산 장치(110)는 연산된 출력 주소를 기반으로 제k 레이어의 출력 데이터를 외부 메모리 장치에 저장할 수 있다. 예시적인 실시 예에서, 제k 레이어로부터 출력될 출력 데이터의 개수가 m개(단, m은 1보다 큰 정수)인 경우, 신경망 연산 장치(110)는 S130 단계 및 S130-1 단계의 동작들을 m회 반복 수행할 수 있다.
S140 단계에서, 변수(k)가 최대인지 판별된다. 즉, 신경망 연산 장치(110)는 복수의 레이어들 모두에 대한 연산 동작이 완료되었는지 판별할 수 있다.
변수(k)가 최대인 경우(즉, 복수의 레이어들 모두에서 연산 동작이 완료된 경우), 신경망 연산 장치(110)는 동작을 종료한다. 변수(k)가 최대가 아닌 경우, S145 단계에서, 변수(k)가 '1'만큼 증가하고, 이후에 신경망 연산 장치(110)는 S115 단계의 동작을 수행한다.
상술된 바와 같이, 본 발명의 실시 예에 따른 신경망 연산 장치(110)는 복수의 레이어들 각각에 대한 레이어 정보 및 메모리 관리 테이블(111)을 기반으로 외부 메모리 장치(120)에 대한 입력 주소 및 출력 주소를 관리 또는 연산할 수 있다. 이에 따라, 외부 메모리 장치(120)의 저장 공간이 제한적이더라도, 신경망 연산 장치(110)는 정상적으로 신경망 연산 동작을 수행할 수 있다.
도 5는 도 1의 메모리 관리 테이블을 예시적으로 보여주는 도면이다. 도 5에 도시된 메모리 관리 테이블(111)은 본 발명의 실시 예들을 용이하게 설명하기 위한 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 1 및 도 5를 참조하면, 메모리 관리 테이블(111)은 에지 필드, 소스 필드, 타겟 필드, 크기 필드, 토글 필드, 병합 필드, 및 오프셋 필드를 포함할 수 있다.
에지 필드는 복수의 레이어들 사이의 연결 관계를 가리키는 에지에 대한 정보를 가리킬 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 제1 데이터(DT1)는 제1 연산 레이어(L1)에 대하여 출력 데이터이면서, 제2 연산 레이어(L2)에 대하여 입력 데이터일 수 있다. 즉, 제1 및 제2 연산 레이어들(L1, L2)은 하나의 에지로 연결된 것으로 이해될 수 있다. 다시 말해서, 본 발명의 실시 예에서, 에지(edge)는 특정 레이어들 사이의 연결 관계(또는 데이터 공유 관계) 등을 가리킬 수 있다.
예시적인 실시 예에서, 본 발명의 실시 예에 따르면, 신경망 연산 장치(110)가 복수의 레이어들에 대한 신경망 연산 동작을 수행함에 따라, 메모리 관리 테이블(111)의 에지들의 개수가 증가 또는 감소될 수 있다. 즉, 특정 시점에서의 메모리 관리 테이블(111)에 저장된 에지들의 개수는 외부 메모리 장치(120)에 저장된 데이터의 개수를 의미할 수 있다.
소스 필드 및 타겟 필드는 각각 레이어 명칭 또는 데이터 명칭으로 설정될 수 있다. 입력 주소가 연산되는 과정에서, 소스 필드는 특정 레이어에 대한 레이어 명칭으로 설정될 수 있고, 타겟 필드는 특정 레이어에 대한 입력 데이터의 명칭으로 설정될 수 있다. 출력 주소가 연산되는 과정에서, 소스 필드는 특정 레이어에 대한 출력 데이터의 명칭으로 설정될 수 있고, 타겟 필드는 특정 레이어에 대한 레이어 명칭으로 설정될 수 있다.
크기 필드는 에지 필드와 대응하는 데이터의 크기에 대한 정보를 가리킬 수 있다.
토글 필드는 외부 메모리 장치(120)의 영역을 구분하기 위한 정보를 가리킬 수 있다. 예를 들어, 외부 메모리 장치(120)가 이중 버퍼로서 사용되는 경우, 외부 메모리 장치(120)는 독립적으로 액세스 가능한 적어도 2개의 영역들로 구분될 수 있다. 이 때, 토글 필드에 따라 외부 메모리 장치(120)로 액세스될 특정 영역이 결정될 수 있다. 예시적인 실시 예에서, 외부 메모리 장치(120)의 구동 방식 또는 구조에 따라 토글 필드는 생략될 수 있다.
병합 정보는 메모리 관리 테이블(111)에 포함된 복수의 에지들 중 병합될 에지들을 표시하기 위한 정보일 수 있다. 이하에서 설명되는 바와 같이, 병합 정보에 따라, 메모리 관리 테이블(111)에 포함된 복수의 에지들이 병합될 수 있다.
오프셋 정보는 복수의 에지들의 병합에 의해 공백이 되는 영역을 가리키기 위한 정보일 수 있다.
상술된 메모리 관리 테이블(111)의 좀 더 구체적인 구성은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 6은 도 4의 S120 단계의 동작(즉, 입력 주소 연산 동작)을 좀 더 상세하게 보여주는 순서도이다. 설명의 편의를 위하여, 신경망 연산 장치(110)는 제1 레이어(L1)(도 3 참조)에 대한 연산 동작을 수행하는 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 신경망 연산 장치(110)는 다른 레이어들 각각에 대하여 도 6에 도시된 순서도와 유사한 방식으로 입력 주소를 연산할 수 있다.
설명의 편의를 위하여, 도 6의 순서도는 신경망 연산 장치(110)에 의해 수행되는 것으로 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 도 6의 순서도의 동작들은 신경망 연산 장치(110)의 주소 관리 모듈(116) 또는 주소 연산 모듈(116)에 의해 수행되거나, 또는 주소 관리 모듈(116) 또는 주소 연산 모듈(116)을 실행하도록 구성된 프로세서(112)에 의해 수행될 수 있다.
S121 단계에서, 신경망 연산 장치(110)는 제1 레이어(L1)에 대한 레이어 명칭 및 입력 데이터 명칭을 수신할 수 있다. 예를 들어, 신경망 연산 장치(110)는 도 4를 참조하여 설명된 레이어 정보로부터 제1 레이어(L1)에 대한 레이어 명칭 및 입력 데이터 명칭을 확인할 수 있다.
S122 단계에서, 신경망 연산 장치(110)는 제1 레이어(L1)의 레이어 명칭과 타겟 필드가 동일한 에지가 존재하는지 판별할 수 있다. 예를 들어, 신경망 연산 장치(110)는 메모리 관리 테이블(111)의 타겟 필드를 스캔하여, 제1 레이어(L1)의 레이어 명칭과 동일한 값이 존재하는지 판별할 수 있다.
메모리 관리 테이블(111)에서, 제1 레이어(L1)의 레이어 명칭과 동일한 값을 갖는 타겟 필드가 존재하지 않는 경우, S123 단계에서, 신경망 연산 장치(110)는 제1 레이어의 입력 데이터 명칭과 타겟 필드가 동일한 에지가 존재하는지 판별할 수 있다. 예를 들어, 신경망 연산 장치(110)는 메모리 관리 테이블(111)의 타겟 필드를 스캔하여, 제1 레이어(L1)의 입력 데이터 명칭과 동일한 타겟 필드가 존재하는지 판별할 수 있다.
메모리 관리 테이블(111)에서, 제1 레이어(L1)의 입력 데이터 명칭과 동일한 값을 갖는 타겟 필드가 존재하지 않는 것은 외부 메모리 장치(120)에 제1 레이어(L1)로 입력될 입력 데이터가 저장되어 있지 않음을 가리키므로, 이 경우, 신경망 연산 장치(110)는 동작을 종료한다.
메모리 관리 테이블(111)에서, 제1 레이어(L1)의 입력 데이터 명칭과 동일한 값을 갖는 타겟 필드가 존재하는 경우, S124 단계에서, 신경망 연산 장치(110)는 제1 레이어(L1)의 레이어 명칭 및 입력 데이터 명칭을 기반으로 관리 테이블을 갱신할 수 있다. 예를 들어, 제1 레이어(L1)의 입력 데이터 명칭과 타겟 필드가 동일한 에지가 제1 에지라고 가정한다. 이 경우, 신경망 연산 장치(110)는 제1 에지와 대응되는 소스 필드의 값을 제1 레이어(L1)의 입력 데이터 명칭으로 변경하고, 제1 에지와 대응되는 타겟 필드의 값을 제1 레이어(L1)의 레이어 명칭으로 변경한다. 즉, 제1 에지와 대응되는 소스 필드의 값이 제1 레이어(L1)의 입력 데이터 명칭이고, 제1 에지와 대응되는 타겟 필드의 값이 제1 레이어(L1)의 레이어 명칭이라는 것은 제1 에지와 대응되는 주소에 저장된 데이터가 제1 레이어(L1)로 입력될 입력 데이터라는 것을 의미할 수 있다. 예시적인 실시 예에서, S124 단계를 통해 갱신된 에지는 이하에서 설명되는 베이스 에지로 결정될 수 있다.
S122 단계의 판별 동작이, 메모리 관리 테이블(111)에서, 제1 레이어(L1)의 레이어 명칭과 동일한 값을 갖는 타겟 필드가 존재하는 것을 가리키는 경우, 신경망 연산 장치(110)는 S125 단계의 동작을 수행할 수 있다. S125 단계의 동작은 S123 단계의 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S125 단계의 판별 동작이, 메모리 관리 테이블(111)에서, 제1 레이어(L1)의 입력 데이터 명칭과 동일한 값을 갖는 타겟 필드가 존재하지 않음을 가리키는 경우, 신경망 연산 장치(110)는 동작을 종료한다.
S125 단계의 판별 동작이, 메모리 관리 테이블(111)에서, 제1 레이어(L1)의 입력 데이터 명칭과 동일한 값을 갖는 타겟 필드가 존재함을 가리키는 경우, S126 단계에서, 신경망 연산 장치(110)는 제1 레이어(L1)의 레이어 명칭 및 입력 데이터 명칭을 기반으로 관리 테이블을 갱신할 수 있다. 예를 들어, 신경망 연산 장치(110)는 S124 단계의 동작과 유사하게, 메모리 관리 테이블을 갱신할 수 있다. 예시적인 실시 예에서, S125 단계를 통해 갱신된 에지는 이하에서 설명되는 병합 에지로서 결정될 수 있다.
이에 추가적으로, 신경망 연산 장치(110)는 병합 정보를 갱신할 수 있다. 예를 들어, 제1 레이어(L1)로 입력될 입력 데이터의 개수가 2개이고, 2개의 데이터는 각각 제1 에지 및 제2 에지에 대응하는 것으로 가정하자. 신경망 연산 장치(110)는 도 6의 순서도에 따른 동작을 2회 수행함으로써, 제1 레이어(L1)로 입력될 2개의 입력 데이터에 대한 입력 주소를 연산할 수 있다. 이 때, 첫 번째 입력 주소 연산 과정에서, 제1 에지의 타겟 필드가 제1 레이어(L1)의 레이어 명칭으로 변경될 것이다. (즉, 도 6의 S121, S122, S123, 및 S124 단계들을 통함.) 이후의 두 번째 입력 주소 연산 과정에서, 제1 에지의 타겟 필드가 제1 레이어(L1)의 레이어 명칭과 동일하므로, 신경망 연산 장치(110)는 S122, S125, 및 S126 단계들을 통한 동작을 수행할 것이다. 이 경우, 신경망 연산 장치(110)는 제1 에지 및 제2 에지에 대응하는 2개의 입력 데이터를 수신할 수 있다. 이후에, 외부 메모리 장치(120)에 대한 효율적인 메모리 관리를 위하여, 제1 에지 및 제2 에지는 서로 병합되어야 할 것이다. 즉, S124 단계에서 갱신되는 에지는 베이스 에지로 설정될 수 있고, S126 단계에서 갱신되는 에지는 병합 에지로 설정될 수 있다. 에지의 병합에 대한 정보는 메모리 관리 테이블(111)의 병합 필드에 설정될 수 있다.
S127 단계에서, 신경망 연산 장치(110)는 갱신된 메모리 관리 테이블을 기반으로, 입력 주소를 연산할 수 있다. 예를 들어, 신경망 연산 장치(110)는 S124 단계 또는 S126 단계에서, 갱신된 에지에 대한 정보를 기반으로 입력 주소를 연산할 수 있다. 예를 들어, 갱신된 에지가 제n 에지인 경우, 제n 에지와 대응하는 입력 주소는 수학식 1과 같이 연산될 수 있다.
Figure pat00001
수학식 1을 참조하면, ADDR[En]은 제n 에지에 대응하는 외부 메모리 장치(120)의 주소를 가리킨다. Size:BF는 외부 메모리 장치(120)의 단위 버퍼에 대한 크기를 가리킨다. 예를 들어, 외부 메모리 장치(120)가 16MB의 크기를 갖고, 8MB로 구분된 이중 버퍼인 경우, Size:BF는 8MB에 대응하는 값일 수 있다. TG는 제n 에지에 대응하는 토글 필드의 값일 수 있다. SUM[Size:E0~n-1]은 제0 내지 제n-1 에지들 각각의 크기의 합을 가리킨다. SUM[OFS:E0~n-1]은 제0 내지 제n-1 에지들 각각의 오프셋의 합을 가리킨다. 상술된 수학식 1에 따라 제n 에지에 대응하는 외부 메모리 장치(120)의 주소가 연산될 수 있다.
S128 단계에서, 신경망 연산 장치(110)는 연산된 입력 주소를 기반으로 외부 메모리 장치(120)로부터 입력 데이터를 읽고, 읽은 입력 데이터에 대한 레이어 연산을 수행할 수 있다.
S129 단계에서, 신경망 연산 장치(110)는 모든 입력 데이터에 대한 연산이 완료되었는지 판별할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 하나의 레이어에 대한 입력 데이터의 개수는 복수 개일 수 있다. 이 경우, 신경망 연산 장치(110)는 도 6의 순서도에 따른 입력 주소 연산 동작을 복수 회 수행할 수 있다. 모든 입력 데이터에 대한 연산이 완료되지 않은 경우(즉, 연산되지 않은 입력 데이터가 존재하는 경우), 신경망 연산 장치(110)는 S121 단계를 수행할 수 있다. 이 경우, 입력 데이터 명칭은 연산되지 않은 입력 데이터에 대한 명칭으로 변경될 것이다.
모든 입력 데이터에 대한 연산이 완료된 경우, 신경망 연산 장치(110)는 S12a 단계의 동작을 수행할 수 있다. S12a 단계의 동작은 도 7을 참조하여 상세하게 설명된다.
도 7은 도 6의 S12a 단계의 동작을 보여주는 순서도이다. 도 1, 도 6, 및 도 7을 참조하면, 신경망 연산 장치(110)는 S12a-1 내지 S12a-4 단계들을 통해 메모리 관리 테이블을 갱신 또는 병합할 수 있다. 설명의 편의를 위하여, 앞서 설명된 바와 유사하게, 제1 레이어(L1)를 기준으로 이하의 동작들이 설명된다.
예를 들어, S12a-1 단계에서, 신경망 연산 장치(110)는 레이어 명칭과 동일한 타겟 필드를 탐색할 수 있다. 예를 들어, 신경망 연산 장치(110)는 메모리 관리 테이블(111)을 스캔하여 제1 레이어(L1)의 레이어 명칭과 동일한 타겟 필드를 탐색할 수 있다.
제1 레이어(L1)의 레이어 명칭과 동일한 타겟 필드가 존재하지 않는 것은 도 6을 참조하여 설명된 S124 단계 및 S126 단계를 통해 갱신된 에지가 없다는 것을 의미할 수 있다. 이 경우, 신경망 연산 장치(110)는 동작을 종료할 수 있다.
제1 레이어(L1)의 레이어 명칭과 동일한 타겟 필드가 존재하는 경우, S12a-2 단계에서, 신경망 연산 장치(110)는 베이스 에지의 토글 필드를 갱신할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 도 6의 S124 단계 및 S126 단계에서, 탐색된 에지들에 대응하는 병합 정보가 갱신될 수 있다. 이 경우, 탐색된 에지들은 베이스 에지 또는 병합 에지일 수 있다. 베이스 에지는 유지될 에지이므로, 토글 필드를 갱신함으로써, 외부 메모리 장치(120)에서의 베이스 에지의 위치가 변경될 수 있다. 예시적인 실시 예에서, 외부 메모리 장치(120)가 멀티-버퍼가 아닌 경우, 토글 필드를 갱신하는 동작은 생략될 수 있다.
S12a-3 단계에서, 신경망 연산 장치(110)는 오프셋 필드를 갱신할 수 있다. S12a-4 단계에서, 신경망 연산 장치(110)는 병합될 에지들을 삭제할 수 있다.
예를 들어, 제1 레이어(L1)의 입력 주소 연산 과정에서, 메모리 관리 테이블(111)에 포함된 에지 필드, 병합 필드, 및 오프셋 필드가 표 1과 같이 갱신된 것으로 가정한다. 설명의 편의를 위하여, 표 1 에서 메모리 관리 테이블(111)의 일부 정보만 기재된다.
에지 E0 E1 E2 E3 E4 E5 E6 E7 E8
병합 T T(b) - T T - - T -
오프셋 - - 1 - - 2 - - 1
표 1을 참조하면, 제1 에지(E1)는 베이스 에지일 수 있고, 제0, 제3, 제4, 제7 에지들(E0, E3, E4, E7)은 병합 에지들(즉, 병합될 에지들)일 수 있다. 이 경우, 제1 레이어(L1)의 모든 입력 데이터에 대한 입력 주소 연산이 완료된 이후에, 병합 에지들(즉, E0, E3, E4, E7))은 삭제되고, 베이스 에지(즉, E1)만 남을 것이다. 이 경우, 병합 에지들이 삭제됨에 따라, 다른 에지들(예들 들어, E2, E5, E8)에 대한 주소 연산시, 정확한 주소가 연산되지 않을 수 있다.이를 방지하기 위하여, 오프셋 필드가 설정될 수 있다. 예를 들어, 제2 에지(E2)에 대한 오프셋 필드는 "1"로 설정될 수 있다. 이는 제2 에지(E2) 이전의 에지들 중 병합에 의해 삭제된 에지(즉, E0)의 크기가 "1"임을 의미한다. 또는 제5 에지(E5)에 대한 오프셋 필드는 "2"로 설정될 수 있다. 이는 제2 및 제5 에지들(E,2, E5) 사이의 에지들 중 병합에 의해 삭제된 에지(즉, E3, E4)의 크기가 "2"임을 의미한다. 즉, 병합에 의해 삭제된 에지들의 크기가 남은 에지들의 오프셋 필드에 설정됨으로써, 이후의 주소 연산이 정확하게 수행될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 신경망 연산 장치(110)는 특정 레이어의 레이어 정보 및 메모리 관리 테이블(111)을 기반으로 입력 주소를 연산함으로써, 외부 메모리 장치(120)가 제한된 크기를 갖더라도 입력 데이터 및 출력 데이터를 정상적으로 처리할 수 있다.
도 8은 도 4의 S130 단계의 동작(즉, 출력 주소 연산 동작)을 보여주는 순서도이다. 도 6 및 도 7을 참조하여 설명된 바와 마찬가지로, 설명의 편의를 위하여, 제1 레이어(L1)를 기준으로 도 8의 순서도에 따른 동작이 설명된다.
도 1, 도 3, 및 도 8을 참조하면, S131 단계에서, 신경망 연산 장치(110)는 제1 레이어(L1)에 대한 레이어 명칭 및 출력 데이터 명칭을 수신할 수 있다. 예를 들어, 신경망 연산 장치(110)는 도 4를 참조하여 설명된 레이어 정보로부터 제1 레이어(L1)에 대한 레이어 명칭 및 출력 데이터 명칭을 확인할 수 있다.
S132 단계에서, 신경망 연산 장치(110)는 제1 레이어(L1)의 레이어 명칭과 동일한 타겟 필드를 갖는 에지를 탐색할 수 있다. 예를 들어, 신경망 연산 장치(110)는 메모리 관리 테이블(111)을 스캔하여, 제1 레이어(L1)의 레이어 명칭과 동일한 타겟 필드를 탐색할 수 있다.
제1 레이어(L1)의 레이어 명칭과 동일한 타겟 필드가 존재하지 않는 경우, S133 단계에서, 신경망 연산 장치(110)는 제1 레이어(L1)의 레이어 명칭 및 출력 데이터 명칭을 기반으로 메모리 관리 테이블(111)에 새로운 에지를 추가할 수 있다. 새로운 에지의 소스 필드는 제1 레이어의 레이어 명칭일 수 있고, 새로운 에지의 타겟 필드는 출력 데이터 명칭일 수 있다.
제1 레이어(L1)의 레이어 명칭과 동일한 타겟 필드가 존재하는 경우, S134 단계에서, 신경망 연산 장치(110)는 제1 레이어(L1)의 레이어 명칭 및 출력 데이터 명칭을 기반으로, 메모리 관리 테이블을 갱신할 수 있다. 예를 들어, 제1 에지가 제1 레이어(L1)의 레이어 명칭과 동일한 타겟 필드와 대응되는 것으로 가정하자. 이 경우, 신경망 연산 장치(110)는 제1 에지의 소스 필드를 제1 레이어(L1)의 레이어 명칭으로 변경하고, 제1 에지의 타겟 필드를 제1 레이어(L1)의 출력 데이터 명칭으로 변경할 수 있다.
S135 단계에서, 신경망 연산 장치(110)는 메모리 관리 테이블(111)을 기반으로 출력 주소를 연산할 수 있다. 예를 들어, 신경망 연산 장치(110)는 S133 단계에서 새롭게 추가된 에지와 대응되는 정보 또는 S134 단계에서 갱신된 에지에 대한 정보를 기반으로 출력 주소를 연산할 수 있다. 출력 주소의 연산 방법은 수학식 1을 참조하여 설명된 입력 주소 연산과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S136 단계에서, 신경망 연산 장치(110)는 연산된 출력 주소를 기반으로 외부 메모리 장치(120)에 출력 데이터를 저장할 수 있다.
예시적인 실시 예에서, 제1 레이어(L1)의 출력 데이터의 개수가 m개(단, m은 2보다 큰 정수)인 경우, 신경망 연산 장치(110)는 도 8의 순서도에 따른 출력 주소 연산 동작을 m회 수행할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 신경망 연산 장치(110)는 복수의 레이어들 각각의 레이어 정보 및 메모리 관리 테이블(111)을 기반으로 외부 메모리 장치(120)에 대한 입력 주소 및 출력 주소를 연산할 수 있다. 즉, 신경망 연산 장치(110)가 복수의 레이어들 각각에 대하여 외부 메모리 장치(120)의 영역을 동적으로 할당할 수 있기 때문에, 외부 메모리 장치(120)의 저장 공간이 제한적이더라도, 정상적인 신경망 연산 동작이 가능하다.
도 9 및 도 10a 내지 도 10i는 본 발명의 실시 예에 따른 신경망 연산 장치의 메모리 주소 연산 동작 또는 메모리 영역 할당 동작을 설명하기 위한 도면들이다. 설명의 편의를 위하여, 본 발명의 기술적 특징을 설명하는데 불필요한 구성 요소들은 생략된다.
먼저 도 1 및 도 9를 참조하면, 신경망 연산 장치(110)는 입력 레이어(INL), 제1 내지 제4 합성곱 레이어들(CONV1~CONV4), 풀링 레이어(POOL), 및 깊이 연결 레이어(DCL)를 순차적으로 또는 병렬적으로 수행함으로써, 신경망 연산 동작을 수행할 수 있다.
입력 레이어(INL)는 입력 데이터(DT_in)를 수신하고, 수신된 입력 데이터(DT_in)를 기반으로 제0 데이터(DT0)를 출력할 수 있다. 제0 데이터(DT0)는 제1 합성곱 레이어(CONV1)의 입력 데이터로서 제공될 수 있다.
제1 합성 곱 레이어(CONV1)는 제0 데이터(DT0)를 수신하고, 수신된 제0 데이터(DT0)에 대한 연산을 수행하여, 3개의 데이터(DT1-1, DT1-2, DT1-3)를 출력할 수 있다. 3개의 데이터(DT1-1, DT1-2, DT1-3)은 각각 풀링 레이어(POOL1), 제2 합성곱 레이엉(CONV2), 및 제3 합성곱 레이어(CONV3)의 입력 데이터로서 제공될 수 있다.
풀링 레이어(POOL)는 데이터(DT1-1)를 수신하고, 수신된 데이터(DT1-1)에 대한 연산을 수행하여 데이터(DT2-1)를 출력할 수 있다. 출력된 데이터(DT2-1)는 깊이 연결 레이어(DCL)의 입력 데이터로서 제공될 수 있다.
제2 합성곱 레이어(CONV2)는 데이터(DT1-2)를 수신하고, 수신된 데이터(DT1-2)에 대한 연산을 수행하여 데이터(DT2-2)를 출력할 수 있다. 출력된 데이터(DT2-2)는 제4 합성곱 레이어(CONV4)의 입력 데이터로서 제공될 수 있다.
제3 합성곱 레이어(CONV3)는 데이터(DT1-3)를 수신하고, 수신된 데이터(DT1-3)에 대한 연산을 수행하여 데이터(DT2-3)를 출력할 수 있다. 출력된 데이터(DT2-3)는 깊이 연결 레이어(DCL)의 입력 데이터로서 제공될 수 있다.
제4 합성곱 레이어(CONV4)는 데이터(DT2-2)를 수신하고, 수신된 데이터(DT2-2)에 대한 연산을 수행하여 제3 데이터(DT3)를 출력할 수 있다. 제3 데이터(DT3)는 깊이 연결 레이어(DCL)의 입력 데이터로서 제공될 수 있다.
깊이 연결 레이어(DCL)는 데이터(DT2-1, DT3, DT2-3)를 수신하고, 수신된 데이터(DT2-1, DT3, DT2-3)에 대한 연산을 수행하여 출력 데이터(DT_out)를 출력할 수 있다.
상술된 다양한 데이터(DT0, DT1-1, DT1-2, DT1-3, DT2-1, DT2-2, DT2-3, DT3)는 외부 메모리 장치(120)에 저장될 수 있다. 이 때, 각 데이터가 저장되는 위치는 앞서 설명된 입력 주소 연산 및 출력 주소 연산에 의해 결정될 수 있다. 즉, 외부 메모리 장치(120)의 전체 저장 공간의 크기가 데이터(DT0, DT1-1, DT1-2, DT1-3, DT2-1, DT2-2, DT2-3, DT3) 전체의 크기보다 작더라도 신경망 연산 장치(110)는 정상적으로 출력 데이터(DT_out)를 출력할 수 있다.
이하에서, 도 10a 내지 도 10i를 참조하여, 도 9의 복수의 레이어들 각각에서의 입력 주소 연산 및 출력 주소 연산이 수행되는 과정이 설명된다. 설명의 편의를 위하여, 외부 메모리 장치(120)는 이중 버퍼 구조를 갖고, 버퍼 단위는 '8'인 것으로 가정한다.
먼저, 도 10a를 참조하면, 입력 레이어(INL)에서, 출력 주소 연산 동작이 수행될 수 있다. 이 경우, 신경망 연산 장치(110)의 출력 주소 연산 동작에 의해 메모리 관리 테이블(111)에 제0 에지(E0)에 대한 정보가 추가될 수 있다. 예를 들어, 초기 동작에서, 메모리 관리 테이블(111)이 비어 있는 것으로 가정하자. 이 때, 도 8를 참조하여 설명된 바와 같이, 입력 레이어(INL)에 대한 입력 주소 연산시, 메모리 관리 테이블(111)에서, 입력 레이어(INL)의 레이어 명칭과 동일한 타겟 필드가 존재하지 않으므로, 입력 레이어(INL)의 레이어 명칭(즉, INL) 및 입력 데이터 명칭(즉, DT0)을 각각 소스 필드 및 타겟 필드로 갖는 제0 에지(E0)에 대한 정보가 메모리 관리 테이블(111)에 추가된다. 추가된 제0 에지(E0)에 대한 소스 필드는 'INL'이고, 타겟 필드는 'DT0'이고, 크기 필드는 '4'이고, 토글 필드는 '0'일 수 있다.
신경망 연산 장치(110)는 추가된 제0 에지(E0)에 대한 정보를 기반으로 수학식 1에 따라 출력 주소를 연산할 수 있다. 이 때, 연산된 출력 주소는 제0 주소([A0])일 수 있다. 신경만 연산 장치(110)는 연산된 출력 주소([A0])와 대응되는 영역에 제0 데이터(DT0)를 저장할 수 있다.
다음으로, 도 10b를 참조하면, 제1 합성곱 레이어(CONV1)에서, 입력 주소 연산 동작이 수행될 수 있다. 이 경우, 신경망 연산 장치(110)의 입력 주소 연산 동작에 의해 메모리 관리 테이블(111)에서 제0 에지(E0)와 대응되는 정보가 갱신될 수 있다. 예를 들어, 도 4를 참조하여 설명된 바와 같이, 메모리 관리 테이블(111)에서, 제1 합성 곱 레이어(CONV1)의 입력 데이터 명칭(즉, DT0)와 동일한 값을 갖는 타겟 필드가 존재하므로, 대응하는 제0 에지(E0)의 소스 필드가 제1 합성곱 레이어(CONV1)의 입력 데이터 명칭(즉, DT0)으로 변경되고, 제0 에지(E0)의 타겟 필드가 제1 합성곱 레이어(CONV1)의 레이어 명칭(즉, CONV1)으로 변경될 수 있다.
신경망 연산 장치(110)는 갱신된 제0 에지(E0)에 대한 정보를 기반으로 수학식 1에 따라 입력 주소를 연산할 수 있다. 이 때, 연산된 입력 주소는 제0 주소([A0])일 수 있다. 신경망 연산 장치(110)는 연산된 출력 주소([A0])와 대응되는 영역으로부터 제0 데이터(DT0)를 읽을 수 있다.
이후에, 신경망 연산 장치(110)는 도 7을 참조하여 설명된 바와 같이, 메모리 관리 테이블(111)을 갱신 또는 병합할 수 있다. 도 7의 순서도에 따라 제0 에지(E0)의 토글 필드가 "1"로 변경될 수 있다. 예시적인 실시 예에서, 제1 합성곱 레이어(CONV1)의 입력 데이터의 개수는 "1"이므로, 병합 정보를 설정하는 구성은 생략될 수 있다.
다음으로, 도 10c를 참조하면, 제1 합성곱 레이어(CONV1)에서, 출력 주소 연산 동작이 수행될 수 있다. 도 9를 참조하여 설명된 바와 같이, 제1 합성곱 레이어(CONV1)로부터 출력되는 데이터는 3개일 수 있다. 즉, 신경망 연산 장치(110)는 도 8을 참조하여 설명된 출력 주소 연산 동작을 3회 반복 수행할 수 있다.
예를 들어, 신경망 연산 장치(110)는 제1 합성곱 레이어(CONV1)의 출력 데이터(DT1-1)에 대한 출력 주소 연산 동작을 수행할 수 있다. 도 8을 참조하여 설명된 바와 같이, 제1 합성곱 레이어(CONV1)의 레이어 명칭(즉, CONV1)과 동일한 타겟 필드가 존재하므로, 이에 대응하는 제0 에지(E0)의 정보가 갱신될 수 있다. 이 때, 제0 에지(E0)의 소스 필드는 제1 합성곱 레이어(CONV1)의 레이어 명칭(CONV1)으로 변경되고, 타겟 필드는 출력 데이터의 명칭(즉, DT1-1)으로 변경될 수 있다. 신경망 연산 장치(110)는 갱신된 제0 에지(E0)에 대한 정보를 기반으로, 수학식 1에 따라 출력 주소를 연산할 수 있다. 이 때, 연산된 출력 주소는 제8 주소([A8])일 수 있다. 신경망 연산 장치(110)는 데이터(DT1-1)를 외부 메모리 장치(120)의 제8 주소([A8])와 대응되는 영역에 저장할 수 있다.
이후에, 신경망 연산 장치(110)는 제1 합성곱 레이어(CONV1)의 출력 데이터(DT1-2)에 대한 출력 주소 연산 동작을 수행할 수 있다. 이 때, 도 8을 참조하여 설명된 바와 같이, 제1 합성곱 레이어(CONV1)의 레이어 명칭(즉, CONV1)과 동일한 타겟 필드가 존재하기 않기 때문에(이는 제0 에지(E0)에 대한 정보가 이전에 갱신되었기 때문임.), 신경망 연산 장치(110)는 새로운 에지(즉, 제1 에지(E1))에 대한 정보를 추가할 수 있다. 제1 에지(E1)의 소스 필드는 제1 합성곱 레이어(CONV1)의 레이어 명칭(즉, CONV1)이고, 타겟 필드는 제1 합성곱 레이어(CONV1)의 출력 데이터의 명칭(즉, DT1-2)이고, 크기 필드는 "2"이고, 토글 필드는 "0"일 수 있다.
신경망 연산 장치(110)는 추가된 제1 에지(E1)에 대한 정보를 기반으로, 수학식 1에 따라 출력 주소를 연산할 수 있다. 이 때, 연산된 출력 주소는 제4 주소([A4])일 수 있다. 신경망 연산 장치(110)는 데이터(DT1-2)를 외부 메모리 장치(120)의 제4 주소([A4])와 대응되는 영역에 저장할 수 있다.
이후에, 신경망 연산 장치(110)는 제1 합성곱 레이어(CONV1)의 출력 데이터(DT1-3)에 대한 출력 주소를 연산할 수 있다. 이는 앞서 설명된 출력 데이터(DT1-2)에 대한 출력 주소 연산과 유사하므로 이에 대한 상세한 설명은 생략된다. 이에 따라, 메모리 관리 테이블(111)에는 출력 데이터(DT1-3)에 대응하는 제2 에지(E2)에 대한 정보가 추가될 수 있다. 추가된 제2 에지(E2)의 소스 필드는 제1 합성곱 레이어(CONV1)의 레이어 명칭(즉, CONV1)이고, 타겟 필드는 제1 합성곱 레이어(CONV1)의 출력 데이터의 명칭(즉, DT1-3)이고, 크기 필드는 "1"이고, 토글 필드는 "0"일 수 있다. 신경망 연산 장치(110)는 추가된 제2 에지(E2)에 대한 정보를 기반으로, 수학식 1에 따라 출력 주소를 연산할 수 있다. 이 때, 연산된 출력 주소는 제6 주소([A6])일 수 있다. 신경망 연산 장치(110)는 데이터(DT1-3)를 외부 메모리 장치(120)의 제6 주소([A6])와 대응되는 영역에 저장할 수 있다.
다음으로, 도 10d를 참조하면, 풀링 레이어(POOL)에서, 입력 주소 연산 동작이 수행될 수 있다. 이 경우, 신경망 연산 장치(110)의 입력 주소 연산 동작에 의해 메모리 관리 테이블(111)의 제0 에지(E0)에 대한 정보가 갱신될 수 있다. 예를 들어, 도 4를 참조하여 설명된 바와 같이, 메모리 관리 테이블(111)에서, 풀링 레이어(POOL)의 입력 데이터 명칭(즉, DT1-1)과 동일한 타겟 필드가 존재하므로, 대응하는 제0 에지(E0)의 소스 필드가 풀링 레이어의 입력 데이터 명칭(즉, DT1-1)으로 변경되고, 타겟 필드가 풀링 레이어의 레이어 명칭(즉, POOL)로 변경될 수 있다. 신경망 연산 장치(110)는 갱신된 제0 에지(E0)에 대한 정보를 수학식 1에 따라 입력 주소를 연산할 수 있다. 이 때 연산된 입력 주소는 제8 주소([A8])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 연산된 입력 추소([A0])와 대응되는 영역으로부터 입력 데이터(DT1-1)를 읽을 수 있다.
신경망 연산 장치(110)는 제2 합성곱 레이어(CONV2) 및 제3 합성곱 레이어(CONV3) 각각에서, 입력 주소 연산 동작을 수행할 수 있다. 제2 합성곱 레이어(CONV2) 및 제3 합성곱 레이어(CONV3) 각각에서의 입력 주소 연산 동작은 앞서 설명된 풀링 레이어(POOL)에서의 입력 주소 연산 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
제2 합성곱 레이어(CONV2)의 입력 주소 연산 동작에서, 제1 에지(E1)의 정보가 갱신될 수 있다. 갱신된 제1 에지(E1)의 소스 필드는 제2 합성곱 레이어(CONV2)의 입력 데이터 명칭(즉, DT1-2)로 변경되고, 타겟 필드는 제2 합성곱 레이어(CONV2)의 레이어 명칭(즉, CONV2)으로 변경된다. 신경망 연산 장치(110)는 갱신된 제1 에지(E1)의 정보를 기반으로 수학식 1에 따라 입력 주소를 연산할 수 있고, 이 때 연산된 입력 주소는 제4 주소([A4])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 제4 주소([A4])와 대응되는 영역으로부터 입력 데이터(DT1-2)를 읽을 수 있다.
제3 합성곱 레이어(CONV3)의 입력 주소 연산 동작에서, 제2 에지(E2)의 정보가 갱신될 수 있다. 갱신된 제2 에지(E2)의 소스 필드는 제3 합성곱 레이어(CONV3)의 입력 데이터 명칭(즉, DT1-3)로 변경되고, 타겟 필드는 제3 합성곱 레이어(CONV3)의 레이어 명칭(즉, CONV3)으로 변경된다. 신경망 연산 장치(110)는 갱신된 제2 에지(E2)의 정보를 기반으로 수학식 1에 따라 입력 주소를 연산할 수 있고, 이 때 연산된 입력 주소는 제6 주소([A6])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 제6 주소([A6])와 대응되는 영역으로부터 입력 데이터(DT1-3)를 읽을 수 있다.
이후에, 신경망 연산 장치(110)는 도 7을 참조하여 설명된 바와 같이, 메모리 관리 테이블(111)을 갱신 또는 병합할 수 있다. 이에 따라, 제0 에지(E0)의 토글 필드는 "0"으로 변경되고, 제1 에지(E1)의 토글 필드는 "1"로 변경되고, 제2 에지(E2)의 토글 필드는 "1"로 변경된다.
다음으로, 도 10e를 참조하면, 풀링 레이어(POOL), 제2 합성곱 레이어(CONV2), 및 제3 합성곱 레이어(CONV3) 각각에서, 출력 주소 연산 동작이 수행될 수 있다. 풀링 레이어(POOL), 제2 합성곱 레이어(CONV2), 및 제3 합성곱 레이어(CONV3) 각각에서의 출력 주소 연산 동작은 앞서 설명된 입력 레이어(INL) 및 제1 합성곱 레이어(CONV1)에서의 출력 주소 연산 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
풀링 레이어(POOL)에서의 출력 주소 연산 동작에 의해 메모리 관리 테이블(111)에서, 제0 에지(E0)에 대한 정보가 갱신될 수 있다. 갱신된 제0 에지(E0)의 소스 필드는 풀링 레이어(POOL)의 레이어 명칭(즉, POOL)으로 변경되고, 타겟 필드는 풀링 레이어(POOL)의 출력 데이터 명칭(즉, DT2-1)으로 변경된다. 신경망 연산 장치(110)는 갱신된 제0 에지(E0)의 정보를 기반으로 출력 주소를 연산할 수 있고, 이 때 연산된 출력 주소는 제0 주소([A0])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 제0 주소([A0])와 대응되는 영역에 출력 데이터(DT2-1)를 저장할 수 있다.
제2 합성곱 레이어(CONV2)에서의 출력 주소 연산 동작에 의해 메모리 관리 테이블(111)에서, 제1 에지(E1)에 대한 정보가 갱신될 수 있다. 갱신된 제1 에지(E1)의 소스 필드는 제2 합성곱 레이어(CONV2)의 레이어 명칭(즉, CONV2)으로 변경되고, 타겟 필드는 제2 합성곱 레이어(CONV2)의 출력 데이터 명칭(즉, DT2-2)으로 변경된다. 신경망 연산 장치(110)는 갱신된 제1 에지(E1)의 정보를 기반으로 출력 주소를 연산할 수 있고, 이 때 연산된 출력 주소는 제12 주소([A12])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 제12 주소([A12])와 대응되는 영역에 출력 데이터(DT2-2)를 저장할 수 있다.
마찬가지로, 제3 합성곱 레이어(CONV3)에서의 출력 주소 연산 동작에 의해 메모리 관리 테이블(111)에서, 제2 에지(E2)에 대한 정보가 갱신될 수 있다. 갱신된 제2 에지(E2)의 소스 필드는 제3 합성곱 레이어(CONV3)의 레이어 명칭(즉, CONV3)으로 변경되고, 타겟 필드는 제3 합성곱 레이어(CONV3)의 출력 데이터 명칭(즉, DT2-3)으로 변경된다. 신경망 연산 장치(110)는 갱신된 제2 에지(E2)의 정보를 기반으로 출력 주소를 연산할 수 있고, 이 때 연산된 출력 주소는 제14 주소([A14])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 제14 주소([A14])와 대응되는 영역에 출력 데이터(DT2-3)를 저장할 수 있다.
다음으로, 도 10f를 참조하면, 제4 합성곱 레이어(CONV4)에서, 입력 주소 연산 동작이 수행될 수 있다. 이는 앞서 설명된 입력 레이어(IN) 및 제1 합성곱 레이어(CONV1)에서의 입력 주소 연산 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
제4 합성곱 레이어(CONV4)에서의 입력 주소 연산 동작에 의해 메모리 관리 테이블(111)에서 제1 에지(E1)와 대응되는 정보가 갱신될 수 있다. 갱신된 제1 에지(E1)의 소스 필드는 제4 합성곱 레이어(CONV4)의 출력 데이터 명칭(DT2-2)으로 변경되고, 타겟 필드는 제4 합성곱 레이어(CONV4)의 레이어 명칭(즉, CONV4)으로 변경된다. 신경망 연산 장치(110)는 갱신된 제1 에지(E1)에 대한 정보를 기반으로 수학식 1에 따라 입력 주소를 연산할 수 있다. 이 때, 연산된 입력 주소는 제12 주소([A12])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 입력 주소([A12])와 대응되는 영역으로부터 입력 데이터(DT2-2)를 읽을 수 있다.
이후에, 신경망 연산 장치(110)는 도 7을 참조하여 설명된 바와 같이, 메모리 관리 테이블(111)을 갱신 또는 병합할 수 있고, 이에 따라, 제2 에지(E2)의 토글 필드가 "0"으로 변경될 수 있다.
다음으로, 도 10g를 참조하면, 제4 합성곱 레이어(CONV4)에서, 출력 주소 연산 동작이 수행될 수 있다. 이는 앞서 설명된 각 레이어에서의 출력 주소 연산 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
제4 합성곱 레이어(CONV4)에서의 출력 주소 연산에 의해 제1 에지(E1)에 대한 정보가 갱신될 수 있다. 갱신된 제1 에지(E1)의 소스 필드는 제4 합성곱 레이어(CONV4)의 레이어 명칭(즉, CONV4)으로 변경되고, 타겟 필드는 제4 합성곱 레이어(CONV4)의 출력 데이터 명칭(즉, DT3)으로 변경된다. 신경망 연산 장치(110)는 갱신된 제1 에지(E1)에 대한 정보를 기반으로 수학식 1에 따라 출력 주소를 연산할 수 있다. 이 때, 연산된 출력 주소는 제4 주소([A4])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 출력 주소([A4])와 대응되는 영역에 출력 데이터(DT3)를 저장할 수 있다.
다음으로, 도 10h를 참조하면, 깊이 연결 레이어(DCL)에서, 입력 주소 연산 동작이 수행될 수 있다. 예를 들어, 깊이 연결 레이어(DCL)의 입력 데이터는 3개(즉, DT2-1, DT3, DT2-3)일 수 있다. 도 6을 참조하여 설명된 바와 같이, 신경망 연산 장치(110)는 입력 데이터 각각에 대한 입력 주소 연산 동작을 수행할 수 있다.
먼저, 신경망 연산 장치(110)는 깊이 연결 레이어(DCL)의 입력 데이터(DT2-1)에 대한 입력 주소 연산 동작을 수행할 수 있다. 도 6을 참조하여 설명된 바와 같이, 메모리 관리 테이블(111)에서, 깊이 연결 레이어(DCL)의 레이어 명칭와 동일한 타겟 필드가 존재하지 않기 때문에, 깊이 연결 레이어(DCL)의 입력 데이터(DT2-1)와 동일한 타겟 필드를 갖는 제0 에지(E0)에 대한 정보가 갱신된다. 갱신된 제0 에지(E0)의 소스 필드는 깊이 연결 레이어(DCL)의 입력 데이터 명칭(즉, DT21)로 변경되고, 타겟 필드는 깊이 연결 레이어(DCL)의 레이어 명칭(즉, DCL)로 변경된다. 또한, 깊이 연결 레이어(DCL)의 입력 데이터가 복수 개이므로, 깊이 연결 레이어(DCL)에서의 입력 주소 연산 동작에서 처음 탐색된 제0 에지(E0)는 베이스 에지로 설정될 수 있다. 이에 따라, 갱신된 제0 에지(E0)의 병합 필드는 T(b)로 설정될 수 있다. 이는 제0 에지(E0)가 베이스 에지임을 의미한다. 예시적인 실시 예에서, 상술된 깊이 연결 레이어(DCL)의 입력 데이터(DT2-1)에 대한 입력 주소 연산 동작은 도 6의 S122 단계, S123 단계, 및 S124 단계의 동작들을 통해 수행된다.
신경망 연산 장치(110)는 갱신된 제0 에지(E0)의 정보를 기반으로 수학식 1에 따라 입력 주소를 연산할 수 있다. 이 때, 연산된 입력 주소는 제0 주소([A0])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 제0 주소([A0])와 대응되는 영역으로부터 입력 데이터(DT2-1)를 읽을 수 있다.
다음으로, 신경망 연산 장치(110)는 깊이 연결 레이어(DCL)의 입력 데이터(DT3)에 대한 입력 주소 연산 동작을 수행할 수 있다. 앞서 설명된 바와 유사하게, 깊이 연결 레이어(DCL)의 입력 데이터(DT3)에 대한 입력 주소 연산 동작에 의해 제1 에지(E1)에 대한 정보가 갱신될 수 있다. 갱신된 제1 에지(E1)의 소스 필드는 깊이 연결 레이어(DCL)의 입력 데이터 명칭(즉, DT3)으로 변경되고, 타겟 필드는 깊이 연결 레이어(DCL)의 레이어 명칭(즉, DCL)로 변경된다. 이 때, 앞선 입력 데이터(DT2-1)에 대한 입력 주소 연산 동작과 달리, 메모리 관리 테이블(111)에서, 깊이 연결 레이어(DCL)의 레이어 명칭와 동일한 타겟 필드가 존재하기 때문에(이는 앞서 제0 에지(E0)에 대한 정보가 갱신되었기 때문임), 제1 에지(E1)의 병합 필드는 "T"로 설정된다. 이는 제1 에지(E1)가 이후에 병합될 에지임을 가리킨다. 예시적인 실시 예에서, 상술된 깊이 연결 레이어(DCL)의 입력 데이터(DT3)에 대한 입력 주소 연산 동작은 도 6의 S122 단계, S125 단계, 및 S126 단계의 동작들을 통해 수행된다.
신경망 연산 장치(110)는 갱신된 제1 에지(E1)의 정보를 기반으로 수학식 1에 따라 입력 주소를 연산할 수 있다. 이 때, 연산된 입력 주소는 제4 주소([A4])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 제4 주소([A4])와 대응되는 영역으로부터 입력 데이터(DT3)를 읽을 수 있다.
다음으로, 신경망 연산 장치(110)는 깊이 연결 레이어(DCL)의 입력 데이터(DT2-3)에 대한 입력 주소 연산 동작을 수행할 수 있다. 이는 앞서 설명된 입력 데이터(DT3)에 대한 입력 주소 연산 동작과 유사하므로, 이에 대한 상세한 설명은 생략된다.
깊이 연결 레이어(DCL)의 입력 데이터(DT2-3)에 대한 입력 주소 연산 동작에 의해 제2 에지(E2)의 정보가 갱신될 수 있다. 갱신되 제2 에지(E2)의 소스 필드는 깊이 연결 레이어(DCL)의 입력 데이터 명칭(즉, DT2-3)으로 변경되고, 타겟 필드는 깊이 연결 레이어(DCL)의 레이어 명칭(즉, DCL)으로 변경되고, 병합 필드는 "T"로 설정된다. 신경망 연산 장치(110)는 갱신된 제2 에지(E2)의 정보를 기반으로 수학식 1에 따라 입력 주소를 연산할 수 있다. 이 때, 연산된 입력 주소는 제16 주소([A4])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 제4 주소([A4])와 대응되는 영역으로부터 입력 데이터(DT3)를 읽을 수 있다.
이후에, 신경망 연산 장치(110)는 메모리 관리 테이블(111)을 갱신 또는 병합할 수 있다. 예를 들어, 도 7을 참조하여 설명된 바와 같이, 신경망 연산 장치(110)는 베이스 에지로 설정된 제0 에지(E0)의 토글 필드를 "1"로 변경할 수 있다. 이후에, 신경망 연산 장치(110)는 병합 필드가 "T"로 설정된 제2 및 제3 에지들(E2, E3)에 대한 정보를 삭제할 수 있다.
비록 도면에 도시되지는 않았으나, 병합될 에지들(또는 삭제될 에지들)보다 앞선 에지들 중에서, 베이스 에지 또는 병합 에지가 아닌 적어도 하나의 에지가 존재하는 경우, 적어도 하나의 에지에 오프셋 필드가 설정될 수 있다.
다음으로, 도 10i를 참조하면, 깊이 연결 레이어(DCL)에서 출력 데이터(DT_out)에 대한 출력 주소 연산 동작이 수행될 수 있다. 이는 앞서 설명된 입력 레이어(INL) 또는 제1 합성곱 레이어(CONV1)의 출력 주소 연산 동작과 유사함으로, 이에 대한 상세한 설명은 생략된다.
깊이 연결 레이어(DCL)에서의 출력 주소 연산 동작에 의해 제0 에지(E0)에 대한 정보가 갱신될 수 있다. 갱신된 제0 에지(E0)의 소스 필드는 깊이 연결 레이어(DCL)의 레이어 명칭(즉, DCL)로 변경되고, 타겟 필드는 출력 데이터 명칭(즉, DT_out)으로 변경된다. 신경망 연산 장치(110)는 갱신된 제0 에지(E0)의 정보를 기반으로 출력 주소를 연산할 수 있고, 연산된 출력 주소는 제8 주소([A8])일 수 있다. 신경망 연산 장치(110)는 외부 메모리 장치(120)의 제8 주소([A8]에 대응되는 영역에 출력 데이터(DT_out)를 저장할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 신경망 연산 장치(110)는 복수의 레이어들 각각의 레이어 정보를 기반으로 외부 메모리 장치(120)에 대한 저장 공간을 동적으로 할당할 수 있다. 즉, 신경망 연산 장치(110)에 의해 입출력되는 데이터의 전체 크기보다 외부 메모리 장치(120)의 저장 공간이 더 작더라도, 신경망 연산 장치(110)는 정상적으로 신경망 연산 동작을 수행할 수 있다. 따라서, 감소된 비용 및 향상된 성능을 갖는 신경망 연산 장치가 제공된다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 정보 처리 장치
110: 신경망 연산 장치
111: 메모리 관리 테이블
120: 외부 메모리 장치

Claims (16)

  1. 외부 메모리 장치와 통신하고, 복수의 레이어들을 실행하도록 구성된 신경망 연산 장치의 동작 방법에 있어서,
    상기 복수의 레이어들 중 제1 레이어에 대한 제1 레이어 정보 및 제1 메모리 관리 테이블을 기반으로 제1 입력 주소를 연산하고, 상기 제1 메모리 관리 테이블을 갱신하여 제2 메모리 관리 테이블을 생성하는 단계;
    상기 연산된 제1 입력 주소를 기반으로 상기 외부 메모리 장치로부터 상기 제1 레이어로 입력될 제1 입력 데이터를 읽는 단계;
    상기 제1 레이어 정보 및 상기 제2 메모리 관리 테이블을 기반으로, 제1 출력 주소를 연산하고, 상기 제2 메모리 관리 테이블을 갱신하여 제3 메모리 관리 테이블을 생성하는 단계; 및
    상기 제2 출력 주소를 기반으로, 상기 외부 메모리 장치에, 상기 제1 레이어로부터 출력된 제1 출력 데이터를 저장하는 단계를 포함하고,
    상기 제1 내지 제3 메모리 관리 테이블들은 상기 제1 입력 데이터 또는 상기 제1 출력 데이터와 관련되고, 상기 제1 레이어와 연결된 적어도 하나의 에지에 대한 정보를 포함하고,
    상기 외부 메모리 장치의 저장 공간은 상기 복수의 레이어들로부터 출력되는 데이터의 전체 크기보다 작은 동작 방법.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 에지에 대한 정보는 상기 적어도 하나의 에지에 대한 소스 필드, 타겟 필드, 크기 필드, 토글 필드, 및 병합 필드를 포함하는 동작 방법.
  3. 제 2 항에 있어서,
    상기 제1 레이어 정보는 상기 제1 레이어에 대한 제1 레이어 명칭, 상기 제1 입력 데이터에 대한 제1 입력 데이터 명칭, 상기 제1 출력 데이터에 대한 제1 출력 데이터 명칭을 포함하고,
    상기 소스 필드는 상기 제1 레이어 명칭 및 상기 제1 입력 데이터 명칭 중 어느 하나로 설정되고,
    상기 타겟 필드는 상기 제1 레이어 명칭 및 상기 제1 출력 데이터 명칭 중 어느 하나로 설정되고,
    상기 크기 필드는 상기 제1 입력 데이터 또는 상기 제1 출력 데이터의 크기에 대한 정보로 설정되고,
    상기 토글 필드는 상기 외부 메모리 장치의 복수의 영역들 중 하나를 가리키도록 설정되고,
    상기 병합 필드는 상기 적어도 하나의 에지가 병합될지 여부를 가리키도록 설정되는 동작 방법.
  4. 제 2 항에 있어서,
    상기 제1 레이어 정보는 상기 제1 레이어의 제1 레이어 명칭 및 상기 제1 입력 데이터에 대한 제1 입력 데이터 명칭을 포함하고,
    상기 제1 레이어 정보 및 상기 제1 메모리 관리 테이블을 기반으로, 제1 입력 주소를 연산하고, 상기 제1 메모리 관리 테이블을 갱신하여 제2 메모리 관리 테이블을 생성하는 단계는:
    상기 제1 메모리 관리 테이블에서, 상기 제1 입력 데이터 명칭과 동일한 제1 타겟 필드가 존재하는지 탐색하는 단계;
    상기 제1 메모리 관리 테이블에서, 상기 제1 타겟 필드가 존재하는 경우, 상기 적어도 하나의 에지 중 상기 제1 타겟 필드와 대응되는 제1 에지에 대한 정보를 갱신하는 단계; 및
    상기 제1 에지에 대한 상기 갱신된 정보를 기반으로 상기 입력 주소를 연산하는 단계를 포함하는 동작 방법.
  5. 제 4 항에 있어서,
    상기 제1 에지에 대한 상기 소스 필드를 상기 입력 데이터 명칭으로 변경하고, 상기 동일한 타겟 필드와 대응되는 상기 에지에 대한 상기 타겟 필드를 상기 제1 레이어 명칭으로 변경함으로써, 상기 제1 메모리 관리 테이블이 갱신되어 상기 제2 메모리 관리 테이블이 생성되는 동작 방법.
  6. 제 4 항에 있어서,
    상기 제1 레이어 정보 및 상기 제1 메모리 관리 테이블을 기반으로, 제1 입력 주소를 연산하고, 상기 제1 메모리 관리 테이블을 갱신하여 제2 메모리 관리 테이블을 생성하는 단계는:
    상기 제1 메모리 관리 테이블에서, 상기 제1 레이어 명칭과 동일한 제2 타겟 필드가 존재하는지 판별하는 단계를 더 포함하고,
    상기 제1 메모리 관리 테이블에서, 상기 제2 타겟 필드가 존재하지 않는 경우, 상기 제1 에지의 상기 병합 필드는 베이스 에지를 가리키는 제1 값으로 설정되고, 상기 메모리 관리 테이블에서, 상기 제2 타겟 필드가 존재하는 경우, 상기 제1 에지의 상기 병합 필드는 병합 에지를 가리키는 제2 값으로 설정됨으로써, 상기 제1 메모리 관리 테이블이 갱신되어 상기 제2 메모리 관리 테이블이 생성되는 동작 방법.
  7. 제 6 항에 있어서,
    상기 동작 방법은:
    상기 제1 입력 데이터를 읽은 이후에, 상기 제2 메모리 관리 테이블을 기반으로 상기 적어도 하나의 에지들 중 상기 병합 필드가 상기 제2 값으로 설정된 에지를 삭제하는 단계를 더 포함하는 동작 방법.
  8. 제 6 항에 있어서,
    상기 동작 방법은:
    상기 입력 데이터를 읽은 이후에, 상기 제2 메모리 관리 테이블을 기반으로 상기 적어도 하나의 에지들 중 상기 병합 필드가 상기 제1 값으로 설정된 에지의 상기 토글 필드를 변경하는 단계를 더 포함하는 동작 방법.
  9. 제 2 항에 있어서,
    상기 제1 레이어 정보는 상기 제1 레이어의 제1 레이어 명칭 및 상기 제1 출력 데이터에 대한 제1 출력 데이터 명칭을 포함하고,
    상기 제1 레이어에 대한 상기 제1 레이어 정보 및 상기 제2 메모리 관리 테이블을 기반으로, 제1 출력 주소를 연산하고, 상기 제2 메모리 관리 테이블을 갱신하여 제3 메모리 관리 테이블을 생성하는 단계는:
    상기 제2 메모리 관리 테이블에서, 상기 제1 레이어 명칭과 동일한 제1 타겟 필드가 존재하는지 판별하는 단계;
    상기 갱신된 메모리 관리 테이블에서 상기 제1 타겟 필드가 존재하지 않는 경우, 상기 제1 레이어 명칭 및 상기 제1 출력 데이터 명칭을 기반으로 새로운 에지에 대한 정보를 상기 제2 메모리 관리 테이블에 추가하는 단계;
    상기 제2 메모리 관리 테이블에서 상기 제1 타겟 필드가 존재하는 경우, 상기 제1 타겟 필드와 대응되는 제1 에지에 대한 정보를 갱신하는 단계; 및
    상기 새로운 에지에 대한 정보 및 상기 갱신된 제1 에지에 대한 정보를 기반으로 상기 출력 주소를 연산하는 단계를 포함하고,
    상기 새로운 에지에 대한 정보가 추가되거나 또는 상기 제1 에지에 대한 정보가 갱신됨으로써, 상기 제2 메모리 관리 테이블이 갱신되어 상기 제3 메모리 관리 테이블이 생성되는 동작 방법.
  10. 제 9 항에 있어서,
    상기 제1 에지의 상기 소스 필드가 상기 제1 레이어 명칭으로 변경되고, 상기 제1 에지의 상기 타겟 필드가 상기 출력 데이터 명칭으로 변경됨으로써, 상기 제1 에지에 대한 정보가 갱신되는 동작 방법.
  11. 제 1 항에 있어서,
    상기 복수의 레이어들 중 제2 레이어에 대한 제2 레이어 정보 및 상기 제3 메모리 관리 테이블을 기반으로 제2 입력 주소를 연산하고, 상기 제3 메모리 관리 테이블을 갱신하여 제4 메모리 관리 테이블을 생성하는 단계; 및
    상기 연산된 제2 입력 주소를 기반으로 상기 외부 메모리 장치로부터 상기 제2 레이어에 대한 제2 입력 데이터를 읽는 단계를 더 포함하고,
    상기 제1 레이어 및 상기 제2 레이어가 직접적으로 연결된 경우, 상기 제2 입력 주소는 상기 제1 출력 주소와 동일한 동작 방법.
  12. 제 1 항에 있어서,
    상기 복수의 레이어들 중 적어도 하나의 레이어에 대하여 연산된 출력 주소는 상기 제1 입력 주소와 동일한 동작 방법.
  13. 메모리 장치; 및
    상기 외부 메모리 장치로부터 입력 데이터를 읽고, 상기 읽은 입력 데이터를 기반으로 복수의 레이어들을 통해 신경망 연산 동작을 수행하고, 상기 신경 연산 동작에 따른 복수의 출력 데이터를 상기 외부 메모리에 저장하도록 구성된 신경망 연산 장치를 포함하고,
    상기 신경망 연산 장치는:
    상기 입력 데이터를 기반으로 상기 복수의 레이어들 각각을 실행하여 상기 출력 데이터를 출력하도록 구성된 뉴럴 프로세서;
    상기 입력 데이터 및 상기 복수의 출력 데이터와 연관된 적어도 하나의 에지에 대한 정보를 포함하는 메모리 관리 테이블을 저장하도록 구성된 내부 메모리; 및
    상기 메모리 관리 테이블 및 상기 복수의 레이어들 각각의 레이어 정보를 기반으로 상기 복수의 레이어들 각각에 대한 입력 주소 및 출력 주소를 연산하도록 구성된 프로세서; 및
    상기 입력 주소를 기반으로 상기 외부 메모리 장치로부터 상기 입력 데이터를 읽고, 상기 출력 주소를 기반으로 상기 외부 메모리 장치로 상기 출력 데이터를 저장하도록 구성된 메모리 제어기를 포함하고,
    상기 외부 메모리 장치의 저장 공간은 상기 복수의 레이어들 각각으로부터의 상기 출력 데이터의 전체 크기보다 작은 정보 처리 장치.
  14. 제 13 항에 있어서,
    상기 복수의 레이어들 중 적어도 2개의 레이어들에 대한 출력 주소들은 서로 동일한 정보 처리 장치.
  15. 제 13 항에 있어서,
    상기 적어도 하나의 에지에 대한 정보는 상기 적어도 하나의 에지에 대한 소스 필드, 타겟 필드, 크기 필드, 토글 필드, 및 병합 필드를 포함하는 정보 처리 장치.
  16. 제 15 항에 있어서,
    상기 레이어 정보는 상기 복수의 레이어들 각각에 대한 레이어 명칭, 입력 데이터 명칭, 출력 데이터 명칭을 포함하고,
    상기 소스 필드는, 상기 프로세서에 의해, 상기 레이어 명칭 및 상기 입력 데이터 명칭 중 어느 하나로 설정되고,
    상기 타겟 필드는, 상기 프로세서에 의해, 상기 레이어 명칭 및 상기 출력 데이터 명칭 중 어느 하나로 설정되고,
    상기 크기 필드는, 상기 프로세서에 의해, 상기 입력 데이터 또는 상기 출력 데이터의 크기에 대한 정보로 설정되고,
    상기 토글 필드는, 상기 프로세서에 의해, 상기 메모리 장치의 복수의 영역들 중 하나를 가리키도록 설정되고,
    상기 병합 필드는, 상기 프로세서에 의해, 상기 적어도 하나의 에지가 병합될지 여부를 가리키도록 설정되는 정보 처리 장치.
KR1020190041648A 2019-04-09 2019-04-09 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법 KR20200119164A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190041648A KR20200119164A (ko) 2019-04-09 2019-04-09 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법
US16/808,124 US11507799B2 (en) 2019-04-09 2020-03-03 Information processing apparatus and method of operating neural network computing device therein

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190041648A KR20200119164A (ko) 2019-04-09 2019-04-09 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200119164A true KR20200119164A (ko) 2020-10-19

Family

ID=72747466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190041648A KR20200119164A (ko) 2019-04-09 2019-04-09 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법

Country Status (2)

Country Link
US (1) US11507799B2 (ko)
KR (1) KR20200119164A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024076165A1 (ko) * 2022-10-06 2024-04-11 오픈엣지테크놀로지 주식회사 신경망 연산을 위한 명령어 세트 생성방법과 이를 위한 컴퓨팅 장치
WO2024096381A1 (ko) * 2022-11-01 2024-05-10 오픈엣지테크놀로지 주식회사 신경망 및 액티베이션의 파티션 및 시뮬레이션 방법 및 이를 위한 컴퓨팅 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7406083B2 (en) * 2002-08-27 2008-07-29 International Business Machines Corporation Method for preserving the order of data packets processed along different processing paths
JP2007096972A (ja) * 2005-09-29 2007-04-12 Toshiba Corp 信号受信装置およびその受信信号管理方法ならびに受信信号管理プログラム
JP2010072753A (ja) * 2008-09-16 2010-04-02 Hitachi Ltd 自動拡張ボリューム及び省電力機能を備えたストレージシステム
KR20150089538A (ko) 2014-01-28 2015-08-05 한국전자통신연구원 인-메모리 데이터 관리 장치 및 인-메모리 데이터 관리 방법
KR20180027887A (ko) * 2016-09-07 2018-03-15 삼성전자주식회사 뉴럴 네트워크에 기초한 인식 장치 및 뉴럴 네트워크의 트레이닝 방법
US11907760B2 (en) 2016-09-23 2024-02-20 Apple Inc. Systems and methods of memory allocation for neural networks
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10424040B2 (en) 2017-04-21 2019-09-24 Intel Corporation Dynamic allocation of cache based on instantaneous bandwidth consumption at computing devices
KR101945918B1 (ko) 2017-04-28 2019-02-08 서울대학교산학협력단 메모리의 쓰기를 제어하는 뉴럴네트워크 수행 방법 및 장치
KR102372423B1 (ko) 2017-05-16 2022-03-10 한국전자통신연구원 파라미터 공유 장치 및 방법
TWI661299B (zh) * 2018-04-30 2019-06-01 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024076165A1 (ko) * 2022-10-06 2024-04-11 오픈엣지테크놀로지 주식회사 신경망 연산을 위한 명령어 세트 생성방법과 이를 위한 컴퓨팅 장치
WO2024096381A1 (ko) * 2022-11-01 2024-05-10 오픈엣지테크놀로지 주식회사 신경망 및 액티베이션의 파티션 및 시뮬레이션 방법 및 이를 위한 컴퓨팅 장치

Also Published As

Publication number Publication date
US11507799B2 (en) 2022-11-22
US20200327390A1 (en) 2020-10-15

Similar Documents

Publication Publication Date Title
US9235874B2 (en) Image processor for and method of upscaling and denoising using contextual video information
CN107609098B (zh) 搜索方法及装置
US8904149B2 (en) Parallelization of online learning algorithms
US20130042055A1 (en) Memory system including key-value store
US12013899B2 (en) Building a graph index and searching a corresponding dataset
KR102509913B1 (ko) 최대화된 중복 제거 메모리를 위한 방법 및 장치
KR102535666B1 (ko) 대형 그래프 처리를 위한 그래프 데이터 분할
US20150169611A1 (en) Systems and methods for dynamic visual search engine
KR20200119164A (ko) 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 동작 방법
US11269811B2 (en) Method and apparatus for maximized dedupable memory
US9213498B2 (en) Memory system and controller
US10067715B2 (en) Buffer-based update of state data
EP2869184A1 (en) Information processing apparatus, data transfer control method, and data transfer control program
CN106302374A (zh) 一种用于提高表项访问带宽和原子性操作的装置及方法
US11907586B2 (en) Storage device configured to support multi-streams and operation method thereof
US10997497B2 (en) Calculation device for and calculation method of performing convolution
US20120166718A1 (en) Flash Storage Device and Data Writing Method Thereof
WO2011055007A1 (en) Semantic network with selective indexing
CN101271466B (zh) 一种基于自适应字典树的电子词典单词检索方法
EP3605354A1 (en) Artificial intelligence-enabled search for a storage system
US11914587B2 (en) Systems and methods for key-based indexing in storage devices
US11580084B2 (en) High performance dictionary for managed environment
CN117649331A (zh) 用于装配在车辆上和/或中的至少两个传感器设备的模型创建设备和模型创建方法
KR20230025748A (ko) 데이터 차원을 감소시키는 가속기 그리고 연관된 시스템들 및 방법들
KR20220081874A (ko) 정보 처리 장치 및 그것에 포함된 신경망 연산 장치의 오류 분석 방법

Legal Events

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