KR20200075185A - 뉴럴 프로세싱 시스템 및 그것의 동작 방법 - Google Patents

뉴럴 프로세싱 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20200075185A
KR20200075185A KR1020180163038A KR20180163038A KR20200075185A KR 20200075185 A KR20200075185 A KR 20200075185A KR 1020180163038 A KR1020180163038 A KR 1020180163038A KR 20180163038 A KR20180163038 A KR 20180163038A KR 20200075185 A KR20200075185 A KR 20200075185A
Authority
KR
South Korea
Prior art keywords
processing
neural
processing device
neural network
operators
Prior art date
Application number
KR1020180163038A
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 KR1020180163038A priority Critical patent/KR20200075185A/ko
Priority to DE102019120930.7A priority patent/DE102019120930A1/de
Priority to US16/552,631 priority patent/US20200193278A1/en
Priority to CN201910858105.3A priority patent/CN111325312A/zh
Priority to SG10201908709YA priority patent/SG10201908709YA/en
Publication of KR20200075185A publication Critical patent/KR20200075185A/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
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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/048Activation functions

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 Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Feedback Control In General (AREA)
  • Power Sources (AREA)

Abstract

본 발명은 다양한 종류의 프로세싱 장치들을 이용하여 뉴럴 프로세싱을 수행하는 뉴럴 프로세싱 시스템 및 그것의 동작 방법을 개시한다. 본 발명의 하나의 실시 예에 따른 복수의 프로세싱 장치들을 포함하는 뉴럴 프로세싱 시스템의 동작 방법은 복수의 프로세싱 장치들의 상태 정보에 기초하여 복수의 프로세싱 장치들 중 뉴럴 네트워크를 기반으로 프로세싱을 수행할 제1 프로세싱 장치를 선택하는 단계, 뉴럴 네트워크의 오퍼레이터들 중 적어도 하나가 제1 프로세싱 장치에 의해 지원되지 않는 경우, 제1 프로세싱 장치에 의해 지원되는 제1 지원 오퍼레이터들을 기반으로 뉴럴 네트워크를 변환하는 단계 및 변환된 뉴럴 네트워크를 기반으로, 제1 프로세싱 장치에 의해, 프로세싱을 수행하는 단계를 포함한다.

Description

뉴럴 프로세싱 시스템 및 그것의 동작 방법{NEURAL PROCESSING SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 뉴럴 프로세싱 시스템에 관한 것으로, 좀 더 상세하게는 다양한 종류의 프로세싱 장치들을 이용하여 뉴럴 프로세싱을 수행하는 뉴럴 프로세싱 시스템 및 그것의 동작 방법에 관한 것이다.
뉴럴 프로세싱 시스템은 뉴럴 네트워크(neural network)를 기반으로 데이터를 처리하는 시스템이다. 뉴럴 프로세싱은 많은 양의 데이터 연산을 요구할 수 있다. 이에 따라, 효율적인 데이터 처리를 위해, 중앙 처리 장치(CPU; Central Processing Unit), 그래픽 처리 장치(GPU; Graphic Processing Unit), 뉴럴 프로세싱 장치(NPU; Neural Processing Unit), 디지털 신호 프로세서(DSP; Digital Signal Processor) 등의 다양한 종류의 프로세싱 장치들이 이용되고 있다. 프로세싱 장치들은 서로 다른 오퍼레이터(operator)들을 지원할 수 있다. 이에 따라, 수행될 오퍼레이터에 따라 프로세싱을 수행할 프로세싱 장치가 선택될 수 있다.
뉴럴 프로세싱을 위한 특정 뉴럴 네트워크가 주어진 경우, 특정 뉴럴 네트워크는 특정 오퍼레이터의 수행을 요구할 수 있다. 이에 따라, 다양한 종류의 프로세싱 장치들 중 특정 오퍼레이터를 지원하는 프로세싱 장치가 선택될 수 있다. 특정 뉴럴 네트워크를 기반으로 뉴럴 프로세싱이 반복되는 경우, 하나의 프로세싱 장치에 대하여 부하(load)가 집중될 수 있다. 이에 따라, 프로세싱 장치에 발생되는 열 등으로 인하여 프로세싱 성능이 저하될 수 있고, 프로세싱 장치가 손상될 수 있다.
본 발명의 목적은 위에서 설명한 바와 같이, 뉴럴 프로세싱을 수행하는 다양한 종류의 프로세싱 장치들 중 특정 프로세싱 장치로 부하가 집중되는 것을 방지하여 프로세싱 성능을 향상시킬 수 있는 뉴럴 프로세싱 시스템 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 하나의 실시 예에 따른 복수의 프로세싱 장치들을 포함하는 뉴럴 프로세싱 시스템의 동작 방법은 상기 복수의 프로세싱 장치들의 상태 정보에 기초하여 상기 복수의 프로세싱 장치들 중 뉴럴 네트워크를 기반으로 프로세싱을 수행할 제1 프로세싱 장치를 선택하는 단계, 상기 뉴럴 네트워크의 오퍼레이터(operator)들 중 적어도 하나가 상기 제1 프로세싱 장치에 의해 지원되지 않는 경우, 상기 제1 프로세싱 장치에 의해 지원되는 제1 지원 오퍼레이터들을 기반으로 상기 뉴럴 네트워크를 변환하는 단계 및 상기 변환된 뉴럴 네트워크를 기반으로, 상기 제1 프로세싱 장치에 의해, 상기 프로세싱을 수행하는 단계를 포함한다.
본 발명의 하나의 실시 예에 따른 제1 프로세싱 장치 및 제2 프로세싱 장치를 포함하는 뉴럴 프로세싱 시스템의 동작 방법은 뉴럴 네트워크를 기반으로, 상기 제1 프로세싱 장치에 의해, 제1 뉴럴 프로세싱을 수행하는 단계, 상기 제1 뉴럴 프로세싱을 수행한 후, 상기 제1 프로세싱 장치의 온도가 임계값을 초과하는 경우, 상기 제2 프로세싱 장치에 의해 지원되는 지원 오퍼레이터들을 기반으로 상기 뉴럴 네트워크를 변환하는 단계 및 상기 변환된 뉴럴 네트워크를 기반으로, 상기 제2 프로세싱 장치에 의해, 제2 뉴럴 프로세싱을 수행하는 단계를 포함한다.
본 발명의 하나의 실시 예에 따른 뉴럴 프로세싱 시스템은 제1 지원 오퍼레이터들을 지원하도록 구성된 제1 프로세싱 장치, 제2 지원 오퍼레이터들을 지원하도록 구성된 제2 프로세싱 장치, 상기 제1 및 제2 프로세싱 장치들의 상태 정보를 감시하도록 구성된 상태 정보 모니터 및 상기 상태 정보에 기초하여 상기 제1 및 제2 프로세싱 장치들 중 뉴럴 네트워크를 기반으로 입력 데이터에 대한 프로세싱을 수행할 프로세싱 장치를 선택하도록 구성된 뉴럴 프로세싱 컨트롤러를 포함하고, 상기 뉴럴 네트워크의 오퍼레이터들 중 적어도 하나가 상기 선택된 프로세싱 장치에 의해 지원되지 않는 경우, 상기 뉴럴 프로세싱 컨트롤러는 상기 제1 지원 오퍼레이터들 및 상기 제2 지원 오퍼레이터들 중 상기 선택된 프로세싱 장치의 지원 오퍼레이터들을 기반으로 상기 뉴럴 네트워크를 변환하도록 더 구성된다.
본 발명에 따르면, 프로세싱 장치들의 상태 정보를 고려하여 뉴럴 프로세싱을 수행할 프로세싱 장치가 선택됨으로써 하나의 프로세싱 장치로 부하가 집중되는 것을 방지할 수 있다. 이에 따라, 뉴럴 프로세싱 성능이 저하되거나 프로세싱 장치가 손상되는 것을 방지할 수 있다.
또한, 본 발명에 따르면, 선택된 프로세싱 장치에 의해 지원되는 오퍼레이터들에 기초하여 뉴럴 네트워크가 변환될 수 있다. 이에 따라, 선택된 프로세싱 장치는 변환된 뉴럴 네트워크를 기반으로 뉴럴 프로세싱을 수행할 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 뉴럴 프로세싱 시스템(100)을 보여주는 블록도이다.
도 2는 도 1의 뉴럴 프로세싱 시스템(100)의 예시적인 동작을 보여주는 순서도이다.
도 3은 도 1의 제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112)의 지원 오퍼레이터들의 예시를 보여주는 도면이다.
도 4a는 도 1의 뉴럴 네트워크(NNa)의 하나의 예시를 보여주는 도면이다.
도 4b는 도 4a의 뉴럴 네트워크(NNa)로부터 변환된 도 1의 뉴럴 네트워크(NNb)의 하나의 예시를 보여주는 도면이다.
도 5는 도 1의 뉴럴 프로세싱 시스템(100)의 소프트웨어 구조를 보여주는 블록도이다.
도 6은 본 발명의 다른 실시 예에 따른 뉴럴 프로세싱 시스템(200)을 보여주는 블록도이다.
도 7은 도 1의 뉴럴 프로세싱 시스템(100)이 온도 정보에 따라 프로세싱 장치를 선택하는 하나의 예시를 설명하기 위한 블록도이다.
도 8은 도 1의 뉴럴 프로세싱 시스템(100)이 전압 정보에 따라 프로세싱 장치를 선택하는 하나의 예시를 설명하기 위한 블록도이다.
도 9는 도 1의 뉴럴 프로세싱 시스템(100)이 전류 정보에 따라 프로세싱 장치를 선택하는 하나의 예시를 설명하기 위한 블록도이다.
도 10은 도 1의 뉴럴 프로세싱 시스템(100)이 클록 주파수 정보에 따라 프로세싱 장치를 선택하는 하나의 예시를 설명하기 위한 블록도이다.
도 11은 도 1의 뉴럴 프로세싱 시스템(100)의 예시적인 동작을 보여주는 순서도이다.
도 12는 도 1의 뉴럴 프로세싱 시스템(100)이 도 11의 동작을 수행하는 하나의 예시를 설명하기 위한 블록도이다.
도 13은 본 발명의 하나의 실시 예에 따른 시스템 온 칩(300)을 나타내는 블록도이다.
도 14는 본 발명의 실시 예에 따른 휴대용 단말기(1000)를 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
본 명세서에서 “뉴럴 네트워크”는 인간의 뇌 기능을 모방하여 데이터를 처리하기 위한 네트워크일 수 있다. 인간의 뇌는 뉴런(neuron)들 사이의 시냅스(synapse)를 통해 하나의 뉴런으로부터 다른 뉴런으로 신호를 전달할 수 있다. 이러한 뉴런들과 시냅스들의 연결 관계가 “뉴럴 네트워크”로 구현될 수 있다. 이 경우, 뉴런은 그래프의 노드(node)에 대응하고, 시냅스는 노드와 노드를 연결하는 선에 대응할 수 있다. 따라서, 본 명세서에서 “뉴럴 네트워크”는 그래프의 연결 정보를 나타내는 파라미터(parameter)들을 포함할 수 있다.
본 명세서에서 “뉴럴 프로세싱”은 뉴럴 네트워크를 기반으로 데이터를 처리하는 동작을 의미한다. 즉, “뉴럴 프로세싱”은 뉴럴 네트워크에 포함된 파라미터들을 기반으로 데이터에 대하여 다양한 연산을 수행함을 나타낼 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 뉴럴 프로세싱 시스템(100)을 보여주는 블록도이다. 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크를 기반으로 데이터를 처리할 수 있는 다양한 종류의 전자 장치 또는 전자 회로로 구현될 수 있다. 예를 들어, 뉴럴 프로세싱 시스템(100)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰, 웨어러블(wearable) 장치, 사물 인터넷(IoT; Internet of Things) 장치, 전기 자동차, 워크스테이션, 서버 시스템, 직접 회로(IC; Integrated Circuit), 마더보드(mother board), 시스템 온 칩(SoC; System On Chip), 마이크로프로세서, 애플리케이션 프로세서(AP; Application Processor) 또는 반도체 칩셋으로 구현될 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크를 기반으로 데이터를 처리하는 어떠한 종류의 장치 또는 회로로 구현될 수 있다.
뉴럴 프로세싱 시스템(100)은 프로세싱 그룹(110), 상태 정보 모니터(120), 뉴럴 프로세싱 컨트롤러(130) 및 메모리(140)를 포함할 수 있다.
프로세싱 그룹(110)은 뉴럴 프로세싱 컨트롤러(130)로부터 제공되는 뉴럴 네트워크(NNb)를 기반으로 뉴럴 프로세싱을 수행할 수 있다. 프로세싱 그룹(110)은 뉴럴 네트워크(NNb)를 기반으로 입력 데이터(IN)를 처리하여 결과 데이터(OUT)를 출력할 수 있다. 예를 들어, 프로세싱 그룹(110)은 입력 데이터(IN)로서 이미지 데이터를 수신할 수 있다. 프로세싱 그룹(110)은 뉴럴 프로세싱을 수행하여 이미지 데이터에 포함된 객체를 식별할 수 있다. 프로세싱 그룹(110)은 식별된 객체를 결과 데이터(OUT)로서 출력할 수 있다. 즉, 프로세싱 그룹(110)은 입력 데이터(IN)에 대한 추론(inference)을 수행할 수 있다.
프로세싱 그룹(110)은 제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112)를 포함할 수 있다. 예시적으로, 제1 프로세싱 장치(111) 또는 제2 프로세싱 장치(112) 중 선택된 하나가 뉴럴 네트워크(NNb)를 기반으로 뉴럴 프로세싱을 수행할 수 있다 뉴럴 프로세싱을 수행할 프로세싱 장치는 뉴럴 프로세싱 컨트롤러(130)에 의해 선택될 수 있다. 선택된 프로세싱 장치는 입력 데이터(IN)를 처리하고, 결과 데이터(OUT)를 출력할 수 있다.
제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112)는 다양한 종류의 오퍼레이터(operator)들을 수행하는 장치일 수 있다. 오퍼레이터는 뉴럴 네트워크 기반의 데이터 처리를 위해 수행될 수 있는 다양한 종류의 연산(operation)들 또는 동작 함수들을 나타낼 수 있다. 예를 들어, 오퍼레이터는 컨볼루션(CONV) 연산, 곱셈(MUL) 연산, 덧셈(ADD) 연산, 누적(ACC) 연산, 활성화 함수들(ReLU, TANH), 소프트맥스(SOFTMAX) 함수, 전결합(FC; Fully Connected) 연산, 맥스풀링(MAXPOOLING) 연산, 순환 뉴럴 네트워크(RNN; Recurrent Neural Network) 연산 등을 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않는다.
예를 들어, 제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112)는 각각 중앙 처리 장치(CPU; Central Processing Unit), 그래픽 처리 장치(GPU; Graphic Processing Unit), 뉴럴 프로세싱 장치(NPU; Neural Processing Unit), 디지털 신호 프로세서(DSP; Digital Signal Processor) 중 하나일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112) 각각은 데이터 처리를 수행할 수 있는 어떠한 종류의 연산 장치로 구현될 수 있다. 예를 들어, 제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112)는 서로 다른 종류의 프로세싱 장치일 수 있으나, 본 발명은 이에 한정되지 않는다.
제1 프로세싱 장치(111)에 의해 지원되는 오퍼레이터는 제2 프로세싱 장치(112)에 의해 지원되는 오퍼레이터(이하, 지원 오퍼레이터라 함)와 다를 수 있다. 예를 들어, 제1 프로세싱 장치(111)의 지원 오퍼레이터들 중 적어도 하나는 제2 프로세싱 장치(112)의 지원 오퍼레이터들에 포함되지 않을 수 있다. 제1 프로세싱 장치(111)와 제2 프로세싱 장치(112)가 서로 다른 종류의 프로세싱 장치인 경우, 제1 프로세싱 장치(111)의 지원 오퍼레이터와 제2 프로세싱 장치(112)의 지원 오퍼레이터는 다를 수 있다. 그러나, 본 발명이 이에 한정되지 않으며, 제1 프로세싱 장치(111)와 제2 프로세싱 장치(112)가 동일한 종류의 프로세싱 장치더라도, 제1 프로세싱 장치(111)의 지원 오퍼레이터는 제2 프로세싱 장치(112)의 지원 오퍼레이터와 다를 수 있다.
제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112) 각각은 자신의 지원 오퍼레이터를 기반으로 동작할 수 있다. 예시적으로, 제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112) 각각은 자신의 지원 오퍼레이터와 다른 오퍼레이터를 수행하지 못할 수 있다. 예를 들어, 뉴럴 네트워크(NNb) 기반의 뉴럴 프로세싱을 위해, 제1 프로세싱 장치(111)가 지원하지 않는 오퍼레이터의 수행이 요구되는 경우, 제1 프로세싱 장치(111)는 뉴럴 네트워크(NNb) 기반의 뉴럴 프로세싱을 수행하지 못할 수 있다.
도 1에 도시된 바와 같이, 프로세싱 그룹(110)은 제1 및 제2 프로세싱 장치들(111, 112)을 포함할 수 있으나, 본 발명은 이에 한정되지 않는다. 예를 들어, 프로세싱 그룹(110)은 다양한 개수의 프로세싱 장치들을 포함할 수 있다. 이하에서는, 설명의 편의를 위해, 뉴럴 프로세싱 시스템(100)은 두 개의 프로세싱 장치들(111, 112)을 포함하는 것으로 가정한다.
상태 정보 모니터(120)는 프로세싱 그룹(110)의 상태 정보(SI)를 감시할 수 있다. 상태 정보(SI)는 제1 및 제2 프로세싱 장치들(111, 112)의 동작 성능에 영향을 줄 수 있는 다양한 정보를 포함할 수 있다. 예를 들어, 상태 정보(SI)는 제1 프로세싱 장치(111)의 온도, 제1 프로세싱 장치(111)로 제공되는 전압 및 전류와 제1 프로세싱 장치(111)로 제공되는 클록 주파수 중 적어도 하나를 포함할 수 있다.
상태 정보 모니터(120)는 직접 상태 정보(SI)를 감지할 수 있는 센서를 포함할 수 있으나, 별도의 센서들로부터 제공되는 센싱 정보를 수집할 수 있다. 이 경우, 상태 정보 모니터(120)는 센싱 정보에 기초하여 상태 정보(SI)를 출력할 수 있다. 예를 들어, 상태 정보 모니터(120)는 센싱 정보가 변경되는 경우, 업데이트된 상태 정보(SI)를 출력할 수 있다.
상태 정보 모니터(120)는 제1 프로세싱 장치(111)의 제1 상태 정보(SI1)를 감시하고, 제2 프로세싱 장치(112)의 제2 상태 정보(SI2)를 감시할 수 있다. 제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112)의 동작 상태에 따라, 제1 상태 정보(SI1) 및 제2 상태 정보(SI2)는 서로 다를 수 있다. 상태 정보 모니터(120)는 제1 상태 정보(SI1) 및 제2 상태 정보(SI2)를 뉴럴 프로세싱 컨트롤러(130)로 제공할 수 있다.
상태 정보 모니터(120)는 상태 정보(SI)를 누적하여 관리할 수 있다. 예를 들어, 상태 정보 모니터(120)는 별도의 테이블을 이용하여 상태 정보(SI)를 저장하고, 시간에 따른 상태 정보(SI)의 변화를 확인할 수 있다. 시간에 따른 상태 정보(SI)의 변화에 기초하여 제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112)의 열화 가능성 등의 다양한 정보가 판별될 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 제공된 상태 정보(SI)에 기초하여 뉴럴 프로세싱을 수행할 프로세싱 장치를 선택할 수 있다. 예를 들어, 뉴럴 프로세싱 컨트롤러(130)는 상태 정보(SI)에 따라 동작 성능이 저하될 가능성이 있는 프로세싱 장치를 제외하고, 프로세싱 장치를 선택할 수 있다. 뉴럴 프로세싱 컨트롤러(130)는 선택된 프로세싱 장치로 뉴럴 네트워크(NNb) 기반의 뉴럴 프로세싱을 요청할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 메모리(140)로부터 뉴럴 네트워크(NNa)를 수신할 수 있다. 예를 들어, 뉴럴 네트워크(NNa)는 그래프 연결 정보를 나타내는 파라미터들과 학습된 파라미터들(예를 들어, 가중치(weight), 바이어스(bias))을 포함할 수 있다. 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)를 분석할 수 있다. 이에 따라, 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)를 기반으로 뉴럴 프로세싱을 수행할 때, 수행되어야 할 오퍼레이터들을 판별할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 판별된 뉴럴 네트워크(NNa)의 오퍼레이터들에 기초하여 뉴럴 네트워크(NNa)로부터 뉴럴 네트워크(NNb)를 생성할 수 있다. 뉴럴 네트워크(NNa)의 오퍼레이터들이 선택된 프로세싱 장치의 지원 오퍼레이터들에 포함되는 경우, 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNb)를 뉴럴 네트워크(NNa)와 동일하게 생성할 수 있다. 뉴럴 네트워크(NNa)의 오퍼레이터들 중 적어도 하나가 선택된 프로세싱 장치의 지원 오퍼레이터들에 포함되지 않는 경우, 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)를 변환하여 뉴럴 네트워크(NNb)를 생성할 수 있다. 즉, 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)를 그대로 이용하여 뉴럴 네트워크(NNb)를 생성하거나 뉴럴 네트워크(NNa)를 변환하여 뉴럴 네트워크(NNb)를 생성할 수 있다.
예를 들어, 뉴럴 네트워크(NNa)의 오퍼레이터들 중 제1 오퍼레이터가 선택된 프로세싱 장치의 지원 오퍼레이터들에 포함되지 않는 경우, 뉴럴 프로세싱 컨트롤러(130)는 제1 오퍼레이터가 선택된 프로세싱 장치의 지원 오퍼레이터들 중 적어도 하나로 변환되도록 뉴럴 네트워크(NNa)를 변환할 수 있다. 이 경우, 변환된 적어도 하나의 오퍼레이터들은 제1 오퍼레이터와 동일한 동일한 입력에 대하여 동일한 연산 결과를 제공할 수 있다. 변환된 뉴럴 네트워크(NNb)의 오퍼레이터들은 선택된 프로세싱 장치의 지원 오퍼레이터들에 포함될 수 있다. 따라서, 선택된 프로세싱 장치는 오퍼레이터와 관련된 문제 없이 뉴럴 프로세싱을 수행할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNb)를 제1 프로세싱 장치(111) 또는 제2 프로세싱 장치(112) 중 선택된 하나로 제공할 수 있다. 뉴럴 네트워크(NNb)를 수신한 선택된 프로세싱 장치는 뉴럴 네트워크(NNb)를 기반으로 뉴럴 프로세싱을 수행할 수 있다.
도 1에 도시된 바와 같이, 뉴럴 프로세싱 컨트롤러(130)는 프로세싱 그룹(110)과 별개의 컨트롤러로 구현될 수 있으나, 본 발명은 이에 한정되지 않는다. 예를 들어, 뉴럴 프로세싱 컨트롤러(130)는 제1 및 제2 프로세싱 장치들(111, 112) 중 하나에 포함될 수 있다. 이 경우, 뉴럴 프로세싱 컨트롤러(130)를 포함하는 프로세싱 장치는 뉴럴 프로세싱을 수행할 프로세싱 장치를 선택하고, 뉴럴 네트워크(NNa)를 변환할 뿐만 아니라, 직접 뉴럴 프로세싱을 수행할 수 있다.
메모리(140)는 뉴럴 네트워크(NNa)를 저장할 수 있다. 예를 들어, 메모리(140)는 DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등과 같은 휘발성 메모리, 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않는다.
상술한 바와 같이, 뉴럴 프로세싱 컨트롤러(130)는 프로세싱 장치들(111, 112) 각각의 상태 정보(SI)를 고려하여 뉴럴 프로세싱을 수행할 프로세싱 장치를 선택할 수 있다. 뉴럴 프로세싱 컨트롤러(130)는 선택된 프로세싱 장치가 뉴럴 프로세싱을 수행할 수 있도록 뉴럴 네트워크(NNa)를 변환할 수 있다. 이 경우, 선택된 프로세싱 장치의 지원 오퍼레이터들에 기초하여 뉴럴 네트워크(NNa)가 변환될 수 있다. 선택된 프로세싱 장치는 변환된 뉴럴 네트워크(NNb)를 기반으로 뉴럴 프로세싱을 수행할 수 있다. 따라서, 뉴럴 프로세싱 시스템(100)은 지원 오퍼레이터들에 대한 제약 없이, 복수의 프로세싱 장치들(111, 112)을 이용하여 뉴럴 프로세싱을 수행할 수 있다.
도 2는 도 1의 뉴럴 프로세싱 시스템(100)의 예시적인 동작을 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S101 단계에서, 뉴럴 프로세싱 시스템(100)은 프로세싱 장치들(111, 112) 각각의 상태 정보(SI)에 기초하여 프로세싱 장치를 선택할 수 있다. 예시적으로, 뉴럴 프로세싱 시스템(100)은 상태 정보(SI)뿐만 아니라 프로세싱 장치들(111, 112) 각각의 지원 오퍼레이터들을 고려하여 프로세싱 장치를 선택할 수 있다. 예를 들어, 프로세싱 장치들(111, 112)의 상태 정보(SI)가 실질적으로 동일하거나 유사한 경우, 뉴럴 프로세싱 시스템(100)은 지원 오퍼레이터들을 고려할 수 있다. 뉴럴 프로세싱 시스템(100)은 프로세싱 장치들(111, 112) 중 뉴럴 네트워크(NNa)의 오퍼레이터들을 모두 포함하는 지원 오퍼레이터들을 수행할 수 있는 프로세싱 장치를 선택할 수 있다. 또는, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)의 오퍼레이터가 변환될 수 있는 지원 오퍼레이터들을 포함하는 프로세싱 장치를 선택할 수 있다. 예를 들어, 뉴럴 네트워크(NNa)의 제1 오퍼레이터를 수행할 수 있는 프로세싱 장치가 없는 경우, 뉴럴 프로세싱 시스템(100)은 제1 오퍼레이터가 변환될 수 있는 지원 오퍼레이터들을 포함하는 프로세싱 장치를 선택할 수 있다.
S102 단계에서, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)의 모든 오퍼레이터들이 선택된 프로세싱 장치의 지원 오퍼레이터들에 포함되는지 여부를 판별할 수 있다. 뉴럴 프로세싱 시스템(100)은 프로세싱 장치들(111, 112) 각각의 지원 오퍼레이터들에 대한 정보를 미리 저장할 수 있다. 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)의 오퍼레이터들과 선택된 프로세싱 장치의 지원 오퍼레이터들을 비교할 수 있다.
비교 결과, 뉴럴 네트워크(NNa)의 오퍼레이터들 중 하나라도 지원 오퍼레이터들에 포함되지 않는 경우, S103 단계에서, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)를 변환할 수 있다. 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)의 모든 오퍼레이터들이 지원 오퍼레이터들에 포함되도록 뉴럴 네트워크(NNa)를 변환할 수 있다. 이에 따라, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)와 다른 뉴럴 네트워크(NNb)를 생성할 수 있다. S104 단계에서, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNb)를 기반으로 뉴럴 프로세싱을 수행할 수 있다. 뉴럴 프로세싱 시스템(100)은 선택된 프로세싱 장치를 통해 뉴럴 프로세싱을 수행할 수 있다.
비교 결과, 뉴럴 네트워크(NNa)의 모든 오퍼레이터들이 지원 오퍼레이터들에 포함되는 경우, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)를 변환하지 않을 수 있다. 이에 따라, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)와 동일한 뉴럴 네트워크(NNb)를 생성할 수 있다. S104 단계에서, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNb)를 기반으로 뉴럴 프로세싱을 수행할 수 있다. 뉴럴 프로세싱 시스템(100)은 선택된 프로세싱 장치를 통해 뉴럴 프로세싱을 수행할 수 있다.
이하에서는, 도 3 내지 도 4b를 참조하여 도 1의 뉴럴 프로세싱 컨트롤러(130)의 동작을 구체적으로 설명할 것이다. 설명의 편의를 위해, 뉴럴 프로세싱 컨트롤러(130)가 상태 정보(SI)에 따라 제2 프로세싱 장치(112)를 선택하는 것으로 가정한다.
도 3은 도 1의 제1 프로세싱 장치(111) 및 제2 프로세싱 장치(112)의 지원 오퍼레이터들의 예시를 보여주는 도면이다. 구체적으로, 도 3의 지원 오퍼레이터들에 대한 정보는 뉴럴 프로세싱 컨트롤러(130)가 참조할 수 있는 테이블로 관리될 수 있다.
도 1 및 도 3을 참조하면, 제1 프로세싱 장치(111)는 컨볼루션(CONV) 연산, 전결합(FC) 연산, 활성화 함수(ReLU), 순환 뉴럴 네트워크(RNN) 연산, 맥스풀링(MAXPOOLING) 연산 및 소프트맥스(SOFTMAX) 함수를 지원할 수 있다. 제2 프로세싱 장치(112)는 곱셈(MUL) 연산, 덧셈(ADD) 연산, 누적(ACC) 연산, 전결합(FC) 연산, 활성화 함수(ReLU), 맥스풀링(MAXPOOLING) 연산 및 소프트맥스(SOFTMAX) 함수를 지원할 수 있다.
제1 프로세싱 장치(111)의 지원 오퍼레이터들 중 적어도 하나는 제2 프로세싱 장치(112)의 지원 오퍼레이터들에 포함되지 않을 수 있다. 마찬가지로, 제2 프로세싱 장치(112)의 지원 오퍼레이터들 중 적어도 하나는 제1 프로세싱 장치(111)의 지원 오퍼레이터들에 포함되지 않을 수 있다. 예를 들어, 제1 프로세싱 장치(111)의 컨볼루션(CONV) 연산은 제2 프로세싱 장치(112)의 지원 오퍼레이터들에 포함되지 않을 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 도 3의 지원 오퍼레이터들에 대한 정보를 미리 저장할 수 있다. 예를 들어, 뉴럴 프로세싱 시스템(100)의 초기화 동작 시, 뉴럴 프로세싱 컨트롤러(130)는 각각의 프로세싱 장치들(111, 112)로부터 지원 오퍼레이터들에 대한 정보를 수신하여 저장할 수 있다.
도 4a는 도 1의 뉴럴 네트워크(NNa)의 하나의 예시를 보여주는 도면이다. 도 4b는 도 4a의 뉴럴 네트워크(NNa)로부터 변환된 도 1의 뉴럴 네트워크(NNb)의 하나의 예시를 보여주는 도면이다.
도 4a를 참조하면, 뉴럴 네트워크(NNa)는 다양한 종류의 오퍼레이터들에 대응하는 레이어들을 포함할 수 있다. 뉴럴 네트워크(NNa)는 컨볼루션(CONV) 연산에 대응하는 제1 레이어(L1a), 맥스풀링(MAXPOOLING) 연산에 대응하는 제2 레이어(L2a), 전결합(FC) 연산에 대응하는 제3 레이어(L3a) 및 소프트맥스(SOFTMAX) 함수에 대응하는 제4 레이어(L4a)를 포함할 수 있다. 예를 들어, 뉴럴 네트워크(NNa)는 컨볼루셔널 뉴럴 네트워크(CNN; Convolutional Neural Network)일 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니다.
도 4b를 참조하면, 뉴럴 네트워크(NNb)는 다양한 종류의 오퍼레이터들에 대응하는 레이어들을 포함할 수 있다. 뉴럴 네트워크(NNb)는 곱셈(MUL) 연산에 대응하는 제1 레이어(L1b), 누적(ACC) 연산에 대응하는 제2 레이어(L2b), 맥스풀링(MAXPOOLING) 연산에 대응하는 제3 레이어(L3b), 전결합(FC) 연산에 대응하는 제4 레이어(L4b) 및 소프트맥스(SOFTMAX) 함수에 대응하는 제5 레이어(L5b)를 포함할 수 있다.
도 1, 도 3 내지 도 4b를 참조하면, 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)를 분석하여 오퍼레이터들을 판별할 수 있다. 이에 따라, 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)의 오퍼레이터들(CONV, MAXPOOLING, FC, SOFTMAX)을 판별할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 판별된 오퍼레이터들과 선택된 제2 프로세싱 장치(112)의 지원 오퍼레이터들을 비교할 수 있다. 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)의 컨볼루션(CONV) 연산이 제2 프로세싱 장치(112)의 지원 오퍼레이터들에 포함되지 않음을 판별할 수 있다. 이에 따라, 뉴럴 프로세싱 컨트롤러(130)는 컨볼루션(CONV) 연산이 지원 오퍼레이터들 중 적어도 하나로 변환될 수 있도록 뉴럴 네트워크(NNa)를 변환할 수 있다. 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa) 중 컨볼루션(CONV) 연산에 대응하는 제1 레이어(L1a)만을 변환할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)의 제1 레이어(L1a)를 변환하여 뉴럴 네트워크(NNb)의 제1 및 제2 레이어들(L1b, L2b)을 생성할 수 있다. 컨볼루션(CONV) 연산에 대응하는 제1 레이어(L1a)의 그래프 연결 정보로부터 곱셈(MUL) 연산과 누적(ACC) 연산에 대응하는 제1 및 제2 레이어들(L1b, L2b)의 그래프 연결 정보가 생성될 수 있다. 즉, 뉴럴 프로세싱 컨트롤러(130)는 제1 레이어(L1a)의 그래프 연결 정보를 기반으로 제1 및 제2 레이어들(L1b, L2b)의 그래프 연결 정보를 생성할 수 있다. 이 경우, 곱셈(MUL) 연산과 누적(ACC) 연산에 대응하는 제1 및 제2 레이어들(L1b, L2b)은 컨볼루션(CONV) 연산에 대응하는 제1 레이어(L1a)와 동일한 입력에 대하여 동일한 연산 결과를 제공할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNb)를 제2 프로세싱 장치(112)로 제공할 수 있다. 제2 프로세싱 장치(112)는 뉴럴 네트워크(NNb)를 기반으로 입력 데이터(IN)를 처리하여 결과 데이터(OUT)를 출력할 수 있다. 예를 들어, 제2 프로세싱 장치(112)는 곱셈(MUL) 연산 및 누적(ACC) 연산을 통해 입력 데이터(IN)에 대한 특징 데이터를 추출할 수 있다. 제2 프로세싱 장치(112)는 맥스풀링(MAXPOOLING) 연산을 통해 추출된 특징 데이터에 대한 샘플링을 수행할 수 있다. 샘플링된 데이터는 특징 데이터 중 최대값일 수 있다. 제2 프로세싱 장치(112)는 전결합(FC) 연산을 통해 특징 데이터의 차원을 감소시킬 수 있다. 예를 들어, 제2 프로세싱 장치(112)는 활성화 함수를 이용하여 2차원의 특징 데이터를 1차원으로 감소시킬 수 있다. 제2 프로세싱 장치(112)는 소프트맥스(SOFTMAX) 함수를 통해 최대우도(maximum likelihood)를 예측(estimate)할 수 있다. 이에 따라, 제2 프로세싱 장치(112)는 최대우도에 대응하는 값을 결과 데이터(OUT)로 출력할 수 있다.
도 5는 도 1의 뉴럴 프로세싱 시스템(100)의 소프트웨어 구조를 보여주는 블록도이다. 도 5를 참조하면, 뉴럴 프로세싱 시스템(100)은 큐(Queue)(11), 스케줄러(12) 및 컴파일러(13)를 포함할 수 있다.
큐(11)는 뉴럴 네트워크를 입력하고 출력할 수 있는 자료 구조이다. 큐(11)를 통해 다양한 뉴럴 프로세싱을 위한 다양한 뉴럴 네트워크들이 저장될 수 있다. 이 경우, 큐(11)는 먼저 수행될 뉴럴 프로세싱과 연관된 뉴럴 네트워크가 먼저 처리되도록 뉴럴 네트워크들을 저장할 수 있다. 큐(11)에 저장된 뉴런 네트워크들 중 일부는 동일할 수 있다. 또는 뉴런 네트워크들 중 일부는 서로 다를 수 있다. 큐(11)는 도 1의 메모리(140)를 통해 구현될 수 있다.
스케줄러(12)는 처리되어야 할 뉴럴 네트워크(NNa)를 큐(11)로부터 가져올 수 있다. 다양한 뉴럴 네트워크들이 큐(11)에 저장된 경우, 스케줄러(12)는 큐(11)에 저장된 순서에 따라 뉴럴 네트워크(NNa)를 가져올 수 있다. 스케줄러(12)는 프로세싱 장치들의 상태 정보(SI)에 기초하여 뉴럴 프로세싱을 수행할 프로세싱 장치를 선택할 수 있다. 프로세싱 장치를 선택한 후, 스케줄러(12)는 뉴럴 네트워크(NNa)와 선택된 프로세싱 장치 정보(SDI)를 컴파일러(13)로 제공할 수 있다.
컴파일러(13)는 프로세싱 장치 별 지원 오퍼레이터들에 대한 정보를 참조하여 선택된 프로세싱 장치가 뉴럴 네트워크(NNa)를 기반으로 프로세싱을 수행할 수 있는지 여부를 판별할 수 있다. 컴파일러(13)는 선택된 프로세싱 장치의 지원 오퍼레이터들이 뉴럴 네트워크(NNa)의 오퍼레이터들을 모두 포함하는 경우, 선택 프로세싱 장치가 프로세싱 가능한 것으로 판별할 수 있다. 이 경우, 컴파일러(13)는 뉴럴 네트워크(NNa)와 동일한 뉴럴 네트워크(NNb)를 스케줄러(12)로 제공할 수 있다.
컴파일러(13)는 선택된 프로세싱 장치의 지원 오퍼레이터들이 뉴럴 네트워크(NNa)의 오퍼레이터들 중 적어도 하나를 포함하지 않는 경우, 선택된 프로세싱 장치가 프로세싱 불가능한 것으로 판별할 수 있다. 컴파일러(13)는 뉴럴 네트워크(NNa)의 오퍼레이터들 중 지원 오퍼레이터들에 포함되지 않는 오퍼레이터를 변환할 수 있다. 변환된 오퍼레이터는 선택된 프로세싱 장치의 지원 오퍼레이터들에 포함될 수 있다. 이에 따라, 컴파일러(13)는 뉴럴 네트워크(NNa)를 변환하여 뉴럴 네트워크(NNb)를 생성할 수 있다. 컴파일러(13)는 뉴럴 네트워크(NNb)를 스케줄러(12)로 제공할 수 있다.
스케줄러(12)는 선택된 프로세싱 장치로 뉴럴 네트워크(NNb)를 제공할 수 있다. 선택된 프로세싱 장치는 뉴럴 네트워크(NNb)를 기반으로 뉴럴 프로세싱을 수행할 수 있다. 이와 같은 방식으로, 뉴럴 프로세싱 시스템(100)은 큐(11)가 비워질 때까지 반복하여 동작할 수 있다.
스케줄러(12) 및 컴파일러(13)는 뉴럴 프로세싱 컨트롤러(130) 내부 메모리 또는 외부 메모리에 저장되는 소프트웨어일 수 있다. 스케줄러(12) 및 컴파일러(13)는 뉴럴 프로세싱 컨트롤러(130)에 의해 구동될 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 뉴럴 프로세싱 시스템(200)을 보여주는 블록도이다. 도 6을 참조하면, 뉴럴 프로세싱 시스템(200)은 프로세싱 그룹(210), 상태 정보 모니터(220), 뉴럴 프로세싱 컨트롤러(230) 및 메모리(240)를 포함할 수 있다. 프로세싱 그룹(210), 상태 정보 모니터(220), 뉴럴 프로세싱 컨트롤러(230) 및 메모리(240)는 도 1의 프로세싱 그룹(110), 상태 정보 모니터(120), 뉴럴 프로세싱 컨트롤러(130) 및 메모리(140)와 유사하게 동작하므로, 이하에서는 뉴럴 프로세싱 시스템(100)과 뉴럴 프로세싱 시스템(200) 사이의 차이점을 기준으로 뉴럴 프로세싱 시스템(200)의 동작을 설명할 것이다.
뉴럴 프로세싱 컨트롤러(230)는 상태 정보(SI)에 따라 뉴럴 프로세싱을 수행할 프로세싱 장치를 선택할 수 있다. 뉴럴 프로세싱 컨트롤러(230)는 뉴럴 프로세싱 단계 별로 프로세싱 장치를 다르게 선택할 수 있다. 예를 들어, 전체 뉴럴 프로세싱 중 일부 뉴럴 프로세싱이 제2 프로세싱 장치(212)를 통해 수행되고, 나머지 프로세싱이 제1 프로세싱 장치(211)를 통해 수행되도록 뉴럴 프로세싱 컨트롤러(230)는 뉴럴 프로세싱 작업을 스케줄링할 수 있다.
이하에서는, 도 3 내지 도 4b를 참조하여 도 6의 뉴럴 프로세싱 컨트롤러(230)의 동작을 구체적으로 설명할 것이다.
도 3 내지 도 4b 및 도 6을 참조하면, 뉴럴 프로세싱 컨트롤러(230)는 뉴럴 네트워크 분할기(231)를 통해 뉴럴 네트워크(NNa)를 제1 및 제2 뉴럴 네트워크들(NNa1, NNa2)로 분할할 수 있다. 예를 들어, 뉴럴 네트워크 분할기(231)는 오퍼레이터 단위로 뉴럴 네트워크(NNa)를 분할할 수 있다. 뉴럴 프로세싱 컨트롤러(230)는 제2 프로세싱 장치(212)가 제1 뉴럴 네트워크(NNa1)를 기반으로 제1 프로세싱을 수행하고, 제1 프로세싱 장치(211)가 제2 뉴럴 네트워크(NNa2)를 기반으로 제2 프로세싱을 수행하도록 프로세싱 작업을 스케줄링할 수 있다. 즉, 뉴럴 프로세싱 작업이 제1 프로세싱 장치(211) 및 제2 프로세싱 장치(212)로 배분될 수 있다.
제2 프로세싱 장치(212)가 제1 뉴럴 네트워크(NNa1)를 기반으로 제1 프로세싱을 수행하기 전에, 뉴럴 프로세싱 컨트롤러(230)는 제1 뉴럴 네트워크(NNa1)를 분석하여 제1 뉴럴 네트워크(NNa1)의 오퍼레이터(CONV)를 판별할 수 있다.
뉴럴 프로세싱 컨트롤러(230)는 판별된 오퍼레이터와 제2 프로세싱 장치(212)의 지원 오퍼레이터들을 비교할 수 있다. 뉴럴 프로세싱 컨트롤러(230)는 제1 뉴럴 네트워크(NNa1)의 컨볼루션(CONV) 연산이 제2 프로세싱 장치(212)의 지원 오퍼레이터들에 포함되지 않음을 판별할 수 있다. 이에 따라, 뉴럴 프로세싱 컨트롤러(230)는 컨볼루션(CONV) 연산이 지원 오퍼레이터들 중 적어도 하나로 변환될 수 있도록 제1 뉴럴 네트워크(NNa1)를 변환할 수 있다. 뉴럴 프로세싱 컨트롤러(230)는 제1 뉴럴 네트워크(NNa1)를 변환하여 뉴럴 네트워크(NNb)의 제1 뉴럴 네트워크(NNb1)를 생성할 수 있다. 뉴럴 프로세싱 컨트롤러(230)는 제1 뉴럴 네트워크(NNb1)를 제2 프로세싱 장치(212)로 제공할 수 있다. 제2 프로세싱 장치(212)는 제1 뉴럴 네트워크(NNb1)를 기반으로 입력 데이터(IN)에 대한 곱셈(MUL) 연산 및 누적(ACC) 연산을 수행할 수 있다.
제1 프로세싱 장치(211)가 제2 뉴럴 네트워크(NNa2)를 기반으로 제2 프로세싱을 수행하기 전에, 뉴럴 프로세싱 컨트롤러(230)는 제2 뉴럴 네트워크(NNa2)를 분석하여 제2 뉴럴 네트워크(NNa2)의 오퍼레이터들(MAXPOOLING, FC, SOFTMAX)을 판별할 수 있다.
뉴럴 프로세싱 컨트롤러(230)는 판별된 오퍼레이터들과 제1 프로세싱 장치(211)의 지원 오퍼레이터들을 비교할 수 있다. 뉴럴 프로세싱 컨트롤러(230)는 제2 뉴럴 네트워크(NNa2)의 오퍼레이터들이 제1 프로세싱 장치(211)의 지원 오퍼레이터들에 포함됨을 판별할 수 있다. 이에 따라, 뉴럴 프로세싱 컨트롤러(230)는 제2 뉴럴 네트워크(NNa2)와 동일하게 뉴럴 네트워크(NNb)의 제2 뉴럴 네트워크(NNb2)를 생성할 수 있다. 뉴럴 프로세싱 컨트롤러(230)는 제2 뉴럴 네트워크(NNb2)를 제1 프로세싱 장치(211)로 제공할 수 있다. 제1 프로세싱 장치(211)는 제2 프로세싱 장치(212)의 동작으로부터 출력된 데이터를 이용하여 제2 프로세싱을 수행할 수 있다. 제1 프로세싱 장치(211)는 제2 뉴럴 네트워크(NNb2)를 기반으로 제2 프로세싱을 수행하여 결과 데이터(OUT)를 출력할 수 있다.
도 1의 뉴럴 프로세싱 시스템(100)에 따르면, 하나의 뉴럴 프로세싱이 복수의 프로세싱 장치들 중 선택된 하나에 의해 모두 수행될 수 있다. 뉴럴 프로세싱 시스템(100)과 다르게, 도 6의 뉴럴 프로세싱 시스템(200)에 따르면, 하나의 뉴럴 프로세싱이 복수의 프로세싱으로 분할되어 복수의 프로세싱 장치들에 의해 수행될 수 있다. 이에 따라, 뉴럴 프로세싱 시스템(200)은 뉴럴 프로세싱 작업을 세분화하여 프로세싱 장치들로 분배할 수 있고, 효율적으로 뉴럴 프로세싱을 수행할 수 있다.
이하에서는, 설명의 편의를 위해, 도 1의 뉴럴 프로세싱 시스템(100)을 기준으로 본 발명의 실시 예들에 따른 뉴럴 프로세싱 시스템의 동작들을 추가로 설명할 것이나, 도 5의 뉴럴 프로세싱 시스템(200)에도 동일하게 적용될 수 있다.
도 7은 도 1의 뉴럴 프로세싱 시스템(100)이 온도 정보에 따라 프로세싱 장치를 선택하는 하나의 예시를 설명하기 위한 블록도이다. 도 7을 참조하면, 제1 온도 센서(113)는 제1 프로세싱 장치(111)의 온도를 감지하고, 제2 온도 센서(114)는 제2 프로세싱 장치(112)의 온도를 감지할 수 있다. 감지된 온도는 상태 정보 모니터(120)로 전달될 수 있다. 상태 정보 모니터(120)는 프로세싱 그룹(110)의 온도(TP)를 감시할 수 있다. 상태 정보 모니터(120)는 제1 프로세싱 장치(111)의 온도(TP1)와 제2 프로세싱 장치(112)의 온도(TP2)를 뉴럴 프로세싱 컨트롤러(130)로 제공할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 온도(TP)에 기초하여 제1 프로세싱 장치(111) 또는 제2 프로세싱 장치(112) 중 하나를 선택할 수 있다. 예를 들어, 제1 프로세싱 장치(111)의 온도(TP1)가 임계값을 초과하는 경우, 뉴럴 프로세싱 컨트롤러(130)는 제2 프로세싱 장치(112)를 선택할 수 있다. 이 경우, 임계값은 제1 프로세싱 장치(111)의 동작 성능이 저하될 가능성이 존재하는 기준 온도일 수 있다. 제1 프로세싱 장치(111)의 온도(TP1)가 임계값을 초과하는 상태에서 제1 프로세싱 장치(111)에 의해 뉴럴 프로세싱이 수행되는 경우, 프로세싱 속도가 느려질 뿐만 제1 프로세싱 장치(111)의 온도(TP1)가 더 증가될 수 있다. 이 경우, 제1 프로세싱 장치(111)가 손상될 수 있다. 제2 프로세싱 장치(112)에 의해 뉴럴 프로세싱이 수행되는 경우, 부하가 적절하게 분배되어 제1 프로세싱 장치(111)의 온도(TP1)가 다시 감소될 수 있다. 따라서, 동작 성능의 저하 없이 뉴럴 프로세싱이 지속적으로 수행될 수 있다.
도 8은 도 1의 뉴럴 프로세싱 시스템(100)이 전압 정보에 따라 프로세싱 장치를 선택하는 하나의 예시를 설명하기 위한 블록도이다. 도 8을 참조하면, 뉴럴 프로세싱 시스템(100)은 전력 관리 집적 회로(PMIC; Power Management Integrated Circuit)(150)를 더 포함할 수 있다. PMIC(150)는 프로세싱 그룹(110)의 동작을 위한 전력(PW)을 공급할 수 있다. PMIC(150)는 제1 프로세싱 장치(111)의 동작 상태에 따른 전력(PW1)을 제1 프로세싱 장치(111)로 제공할 수 있다. PMIC(150)는 제2 프로세싱 장치(112)의 동작 상태에 따른 전력(PW2)을 제2 프로세싱 장치(112)로 제공할 수 있다. 예를 들어, 제1 프로세싱 장치(111)의 부하가 커지는 경우, PMIC(150)는 공급되는 전력(PW1)을 증가시킬 수 있다.
상태 정보 모니터(120)는 프로세싱 그룹(110)의 전압(V)을 감시할 수 있다. 상태 정보 모니터(120)는 PMIC(150)로부터 제1 프로세싱 장치(111)로 제공되는 전압(V1) 및 제2 프로세싱 장치(112)로 제공되는 전압(V2)을 감시할 수 있다. 상태 정보 모니터(120)는 제1 프로세싱 장치(111)의 전압(V1)과 제2 프로세싱 장치(112)의 전압(V2)을 뉴럴 프로세싱 컨트롤러(130)로 제공할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 전압(V)에 기초하여 제1 프로세싱 장치(111) 또는 제2 프로세싱 장치(112) 중 하나를 선택할 수 있다. 예를 들어, 제1 프로세싱 장치(111)의 전압(V1)이 임계값을 초과하는 경우, 뉴럴 프로세싱 컨트롤러(130)는 제2 프로세싱 장치(112)를 선택할 수 있다. 이 경우, 임계값은 제1 프로세싱 장치(111)의 동작 성능이 저하될 가능성이 존재하는 기준 전압일 수 있다. 제1 프로세싱 장치(111)의 전압(V1)이 임계값을 초과하는 상태에서 제1 프로세싱 장치(111)에 의해 뉴럴 프로세싱이 수행되는 경우, 전력 소모가 커질 수 있다. 또한, 제1 프로세싱 장치(111)의 온도가 증가됨에 따라, 제1 프로세싱 장치(111)가 손상될 수 있다. 제2 프로세싱 장치(112)에 의해 뉴럴 프로세싱이 수행되는 경우, 부하가 적절하게 분배될 수 있고, 과도한 전력이 공급되지 않을 수 있다. 이에 따라, 뉴럴 프로세싱 시스템(100)은 저전력으로 동작할 수 있다.
도 9는 도 1의 뉴럴 프로세싱 시스템(100)이 전류 정보에 따라 프로세싱 장치를 선택하는 하나의 예시를 설명하기 위한 블록도이다. 도 9를 참조하면, 뉴럴 프로세싱 시스템(100)은 도 8을 참조하여 설명된 전력 관리 집적 회로(PMIC)(150)를 포함할 수 있다. 상태 정보 모니터(120)는 프로세싱 그룹(110)의 전류(I)을 감시할 수 있다. 상태 정보 모니터(120)는 PMIC(150)로부터 제공되는 전력(PW1)에 따라 제1 프로세싱 장치(111)를 통해 흐르는 전류(I1)를 감시할 수 있다. 상태 정보 모니터(120)는 PMIC(150)로부터 제공되는 전력(PW2)에 따라 제2 프로세싱 장치(112)를 통해 흐르는 전류(I2)를 감시할 수 있다. 상태 정보 모니터(120)는 제1 프로세싱 장치(111)의 전류(I1)와 제2 프로세싱 장치(112)의 전류(I2)를 뉴럴 프로세싱 컨트롤러(130)로 제공할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 전류(I)에 기초하여 제1 프로세싱 장치(111) 또는 제2 프로세싱 장치(112) 중 하나를 선택할 수 있다. 예를 들어, 제1 프로세싱 장치(111)의 전류(I1)가 임계값을 초과하는 경우, 뉴럴 프로세싱 컨트롤러(130)는 제2 프로세싱 장치(112)를 선택할 수 있다. 이 경우, 임계값은 제1 프로세싱 장치(111)의 동작 성능이 저하될 가능성이 존재하는 기준 전류일 수 있다. 제1 프로세싱 장치(111)의 전류(I1)가 임계값을 초과하는 상태에서 제1 프로세싱 장치(111)에 의해 뉴럴 프로세싱이 수행되는 경우, 전력 소모가 커질 수 있다. 또한, 제1 프로세싱 장치(111)의 온도가 증가됨에 따라, 제1 프로세싱 장치(111)가 손상될 수 있다. 제2 프로세싱 장치(112)에 의해 뉴럴 프로세싱이 수행되는 경우, 부하가 적절하게 분배될 수 있고, 과도한 전력이 공급되지 않을 수 있다. 이에 따라, 뉴럴 프로세싱 시스템(100)은 저전력으로 동작할 수 있다.
도 10은 도 1의 뉴럴 프로세싱 시스템(100)이 클록 주파수 정보에 따라 프로세싱 장치를 선택하는 하나의 예시를 설명하기 위한 블록도이다. 도 10를 참조하면, 뉴럴 프로세싱 시스템(100)은 클록 생성기(160)를 더 포함할 수 있다. 클록 생성기(160)는 프로세싱 그룹(110)의 동작을 위한 클록(CLK)을 제공할 수 있다. 클록 생성기(160)는 제1 프로세싱 장치(111)의 동작 상태에 따른 클록(CLK1)을 제1 프로세싱 장치(111)로 제공할 수 있다. 클록 생성기(160)는 제2 프로세싱 장치(112)의 동작 상태에 따른 클록(CLK2)을 제2 프로세싱 장치(112)로 제공할 수 있다. 예를 들어, 제1 프로세싱 장치(111)의 부하가 커지는 경우, 클록 생성기(160)는 클록(CLK1)의 주파수를 증가시킬 수 있다. 예를 들어, 클록 생성기(160)는 위상 고정 루프(PLL; Phase-Locked Loop) 또는 지연 고정 루프(DLL; Delay-Locked Loop)일 수 있다.
상태 정보 모니터(120)는 프로세싱 그룹(110)의 클록 주파수(CF)를 감시할 수 있다. 상태 정보 모니터(120)는 제1 프로세싱 장치(111)의 클록 주파수(CF1) 및 제2 프로세싱 장치(112)의 클록 주파수(CF2)를 감시할 수 있다. 상태 정보 모니터(120)는 제1 프로세싱 장치(111)의 클록 주파수(CF1)와 제2 프로세싱 장치(112)의 클록 주파수(CF2)를 뉴럴 프로세싱 컨트롤러(130)로 제공할 수 있다.
뉴럴 프로세싱 컨트롤러(130)는 클록 주파수(CF1, CF2)에 기초하여 제1 프로세싱 장치(111) 또는 제2 프로세싱 장치(112) 중 하나를 선택할 수 있다. 예를 들어, 제1 프로세싱 장치(111)의 클록 주파수(CF1)가 임계값을 초과하는 경우, 뉴럴 프로세싱 컨트롤러(130)는 제2 프로세싱 장치(112)를 선택할 수 있다. 이 경우, 임계값은 제1 프로세싱 장치(111)의 동작 성능이 저하될 가능성이 존재하는 기준 주파수일 수 있다. 제1 프로세싱 장치(111)의 클록 주파수(CF1)가 임계값을 초과하는 상태에서 제1 프로세싱 장치(111)에 의해 뉴럴 프로세싱이 수행되는 경우, 주파수 증가에 따른 전력 소모가 커질 수 있다. 또한, 제1 프로세싱 장치(111)의 온도가 증가됨에 따라, 제1 프로세싱 장치(111)가 손상될 수 있다. 제2 프로세싱 장치(112)에 의해 뉴럴 프로세싱이 수행되는 경우, 부하가 적절하게 분배될 수 있다. 이에 따라, 뉴럴 프로세싱 시스템(100)은 저전력으로 동작할 수 있다.
도 7 내지 도 10에서는 뉴럴 프로세싱 시스템(100)이 온도, 전압, 전류 또는 클록 주파수 중 하나에 기초하여 프로세싱 장치를 선택하는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 뉴럴 프로세싱 시스템(100)은 다양한 상태 정보 중 두 종류 이상의 상태 정보에 기초하여 프로세싱 장치를 선택할 수 있다.
이하에서는, 도 11 및 도 12를 참조하여 뉴럴 프로세싱 시스템(100)이 동일한 뉴럴 네트워크(NNa)를 기반으로 복수의 뉴럴 프로세싱을 수행하는 동작을 설명할 것이다. 설명의 편의를 위해, 뉴럴 네트워크(NNa)의 모든 오퍼레이터들은 제1 프로세싱 장치(111)의 지원 오퍼레이터들에 포함되고, 뉴럴 네트워크(NNa)의 오퍼레이터들 중 적어도 하나는 제2 프로세싱 장치(112)의 지원 오퍼레이터들에 포함되지 않는 것으로 가정한다.
도 11은 도 1의 뉴럴 프로세싱 시스템(100)의 예시적인 동작을 보여주는 순서도이다. 도 1 및 도 11을 참조하면, S111 단계에서, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)를 기반으로 제1 뉴럴 프로세싱을 수행할 수 있다. 뉴럴 프로세싱 시스템(100)은 제1 뉴럴 프로세싱을 위해 상태 정보(SI)에 기초하여 제1 프로세싱 장치(111)를 선택할 수 있다. 예를 들어, 뉴럴 프로세싱 시스템(100)은 제1 프로세싱 장치(111)의 상태 정보(SI1)가 임계값 이하이고, 제1 프로세싱 장치(111)의 지원 오퍼레이터들이 뉴럴 네트워크(NNa)의 모든 오퍼레이터들을 포함하는 것에 기초하여, 제1 프로세싱 장치(111)를 선택할 수 있다. 이에 따라, 제1 뉴럴 프로세싱은 제1 프로세싱 장치(111)에 의해 수행될 수 있다. 제1 프로세싱 장치(111)는 제1 뉴럴 프로세싱을 수행하여 제1 입력 데이터(IN1)로부터 제1 결과 데이터(OUT1)를 출력할 수 있다.
제1 뉴럴 프로세싱이 수행된 이후, 뉴럴 프로세싱 시스템(100)은 동일한 뉴럴 네트워크(NNa)를 기반으로 제2 뉴럴 프로세싱을 수행할 수 있다. 제2 뉴럴 프로세싱을 수행하기 위해, S112 단계에서, 뉴럴 프로세싱 시스템(100)은 제1 프로세싱 장치(111)의 상태 정보(SI1)의 값이 임계값을 초과하는지 여부를 판별할 수 있다. 예를 들어, 제1 뉴럴 프로세싱의 수행에 따라 상태 정보(SI1)는 달라질 수 있다. 이에 따라, 상태 정보(SI1)는 임계값을 초과할 수 있다. 도 7 내지 도 10에서 설명한 바와 같이, 뉴럴 프로세싱 시스템(100)은 제1 프로세싱 장치(111)의 온도, 전압, 전류 및 클록 주파수 중 하나가 임계값을 초과하는지 여부를 판별할 수 있다.
상태 정보(SI1)의 값이 임계값을 초과하는 경우, S113 단계에서, 뉴럴 프로세싱 시스템(100)은 제2 뉴럴 프로세싱을 위해 제2 프로세싱 장치(112)를 선택할 수 있다. S114 단계에서, 뉴럴 프로세싱 시스템(100)은 제2 프로세싱 장치(112)에 의해 제2 뉴럴 프로세싱이 수행될 수 있도록 뉴럴 네트워크(NNa)를 변환할 수 있다. 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)를 변환하여 뉴럴 네트워크(NNb)를 생성할 수 있다. 이 경우, 뉴럴 네트워크(NNb)의 모든 오퍼레이터들은 제2 프로세싱 장치(112)의 지원 오퍼레이터들에 포함될 수 있다. S115 단계에서, 뉴럴 프로세싱 시스템(100)은 제2 프로세싱 장치(112)을 통해 변환된 뉴럴 네트워크(NNb)를 기반으로 제2 뉴럴 프로세싱을 수행할 수 있다. 제2 프로세싱 장치(112)는 제2 뉴럴 프로세싱을 수행하여 제2 입력 데이터(IN2)로부터 제2 결과 데이터(OUT2)를 출력할 수 있다.
상태 정보(SI1)의 값이 임계값 이하인 경우, S116 단계에서, 뉴럴 프로세싱 시스템(100)은 제2 뉴럴 프로세싱을 위해 제1 프로세싱 장치(111)를 선택할 수 있다. 제1 프로세싱 장치(111)의 지원 오퍼레이터들은 뉴럴 네트워크(NNa)의 모든 오퍼레이터들을 포함할 수 있다. 이에 따라, 제1 프로세싱 장치(111)에 의해 제2 뉴럴 프로세싱이 수행되는 경우, 뉴럴 프로세싱 시스템(100)은 뉴럴 네트워크(NNa)를 변환하지 않을 수 있다. 뉴럴 네트워크(NNa)의 변환 과정이 생략되는 경우, 뉴럴 프로세싱 시스템(100)은 더 빠르게 제2 뉴럴 프로세싱을 수행할 수 있다. 즉, 뉴럴 프로세싱 시스템(100)은 프로세싱 속도를 빠르게 하기 위해, 제1 프로세싱 장치(111)를 선택할 수 있다. S117 단계에서, 뉴럴 프로세싱 시스템(100)은 제1 프로세싱 장치(111)를 통해 뉴럴 네트워크(NNa)와 동일한 뉴럴 네트워크(NNb)를 기반으로 제2 뉴럴 프로세싱을 수행할 수 있다. 제1 프로세싱 장치(111)는 제2 뉴럴 프로세싱을 수행하여 제2 입력 데이터(IN2)로부터 제2 결과 데이터(OUT2)를 출력할 수 있다.
도 12는 도 1의 뉴럴 프로세싱 시스템(100)이 도 11의 동작을 수행하는 하나의 예시를 설명하기 위한 블록도이다. 도 12를 참조하면, 제1 뉴럴 프로세싱을 수행하기 위해, 뉴럴 프로세싱 컨트롤러(130)는 메모리(140)로부터 뉴럴 네트워크(NNa)를 출력할 수 있다. 뉴럴 프로세싱 컨트롤러(130)는 제1 프로세싱 장치(111)의 온도(TP1) 및 제2 프로세싱 장치(112)의 온도(TP2)에 기초하여 제1 뉴럴 프로세싱을 수행할 프로세싱 장치를 선택할 수 있다. 뉴럴 프로세싱 컨틀로러(130)는 제1 뉴럴 프로세싱을 위해 제1 프로세싱 장치(111)를 선택할 수 있다(①-1).
뉴럴 프로세싱 컨트롤러(130)는 선택된 제1 프로세싱 장치(111)의 지원 오퍼레이터들이 뉴럴 네트워크(NNa)의 오퍼레이터들을 모두 포함하는지 여부를 판별할 수 있다. 제1 프로세싱 장치(111)의 지원 오퍼레이터들이 뉴럴 네트워크(NNa)의 오퍼레이터들을 모두 포함하는 것에 기초하여, 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)와 동일한 뉴럴 네트워크(NNb)를 생성할 수 있다. 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)를 제1 프로세싱 장치(111)로 제공할 수 있다(①-2). 제1 프로세싱 장치(111)는 뉴럴 네트워크(NNa)를 기반으로 제1 뉴럴 프로세싱을 수행할 수 있다(①-3). 제1 뉴럴 프로세싱에 따라, 제1 프로세싱 장치(111)의 온도(TP1)는 증가될 수 있다. 상태 정보 모니터(120)는 제1 프로세싱 장치(111)의 온도(TP1) 변화를 감시할 수 있다.
제2 뉴럴 프로세싱을 수행하기 위해, 뉴럴 프로세싱 컨트롤러(130)는 메모리(140)로부터 뉴럴 네트워크(NNa)를 출력할 수 있다. 뉴럴 프로세싱 컨트롤러(130)는 제1 프로세싱 장치(111)의 온도(TP1)가 임계값을 초과하는지 여부를 판별할 수 있다. 온도(TP1)가 임계값을 초과하는 경우, 뉴럴 프로세싱 컨트롤러(130)는 제2 뉴럴 프로세싱을 위해 제2 프로세싱 장치(112)를 선택할 수 있다(②-1).
뉴럴 프로세싱 컨트롤러(130)는 선택된 제2 프로세싱 장치(112)의 지원 오퍼레이터들이 뉴럴 네트워크(NNa)의 오퍼레이터들을 모두 포함하는지 여부를 판별할 수 있다. 제2 프로세싱 장치(111)의 지원 오퍼레이터들이 뉴럴 네트워크(NNa)의 오퍼레이터들 중 적어도 하나를 포함하지 않는 것에 기초하여, 뉴럴 프로세싱 컨트롤러(130)는 뉴럴 네트워크(NNa)를 변환하여 뉴럴 네트워크(NNb)를 생성할 수 있다. 즉, 뉴럴 네트워크(NNb)는 변환된 뉴럴 네트워크(tNNa)일 수 있다. 뉴럴 프로세싱 컨트롤러(130)는 변환된 뉴럴 네트워크(tNNa)를 제2 프로세싱 장치(112)로 제공할 수 있다(②-2). 제2 프로세싱 장치(112)는 변환된 뉴럴 네트워크(tNNa)를 기반으로 제2 뉴럴 프로세싱을 수행할 수 있다(②-3). 제2 뉴럴 프로세싱에 따라, 제2 프로세싱 장치(112)의 온도(TP2)는 증가될 수 있다.
상술한 바와 같이, 뉴럴 프로세싱 시스템(100)의 동작에 따르면, 동일한 뉴럴 네트워크(NNa)를 기반으로 뉴럴 프로세싱이 여러 번 수행되는 경우, 복수의 프로세싱 장치들에 의해 분산되어 수행될 수 있다. 이 경우, 복수의 프로세싱 장치들로 부하가 분산될 수 있다. 따라서, 하나의 프로세싱 장치만 온도가 상승되어 프로세싱 장치가 손상되거나 동작 성능이 저하되는 것을 방지할 수 있다.
도 13은 본 발명의 하나의 실시 예에 따른 시스템 온 칩(300)을 나타내는 블록도이다. 도 13을 참조하면, 시스템 온 칩(300)은 CPU(310), DSP(320), GPU(330), NPU(340), 모니터링 회로(350), 메모리(360), 메모리 인터페이스(370) 및 버스(380)를 포함할 수 있다.
CPU(310)는 시스템 온 칩(300)의 구성 요소들의 동작을 전반적으로 제어할 수 있다. CPU(310)는 응용 프로그램의 실행에 따라 생성되는 명령들을 해석하고 명령들을 처리하기 위한 다양한 동작들을 수행할 수 있다. CPU(310)는 명령들을 처리하기 위해 직접 연산을 수행하거나 다른 프로세싱 장치들(320, 330, 340)로 연산을 배분할 수 있다.
예를 들어, CPU(310)는 도 1 내지 도 12를 참조하여 설명된 프로세싱 장치(111, 112, 211, 212)의 기능들 및 뉴럴 프로세싱 컨트롤러(130, 230)의 기능들을 포함할 수 있다. CPU(310)는 뉴럴 프로세싱을 위한 프로세싱 장치를 선택하고, 선택된 프로세싱 장치의 지원 오퍼레이터들에 기초하여 뉴럴 네트워크를 변환할 수 있다. CPU(310)는 도 5에서 설명된 스케줄러(12)와 컴파일러(13)를 구동시켜 프로세싱 장치를 선택하고, 뉴럴 네트워크를 변환할 수 있다. 또한, CPU(310) 자신이 뉴럴 프로세싱을 위해 선택되는 경우, CPU(310)는 직접 뉴럴 네트워크를 기반으로 뉴럴 프로세싱을 수행할 수 있다. 이에 따라, CPU(310)는 하나의 프로세싱 장치로 부하가 집중되는 것을 방지할 수 있고, 뉴럴 프로세싱의 성능이 저하되는 것을 방지할 수 있다.
DSP(320)는 디지털 신호를 고속으로 처리하기 위한 프로세싱 장치일 수 있다. 예를 들어, DSP(320)는 도 1 내지 도 12를 참조하여 설명된 프로세싱 장치(111, 112, 211, 212)의 기능을 포함할 수 있다. 즉, DSP(320)는 CPU(310)로부터 제공되는 뉴럴 네트워크를 기반으로 뉴럴 프로세싱을 수행할 수 있다.
GPU(330)는 그래픽 데이터를 고속으로 처리하기 위한 프로세싱 장치일 수 있다. GPU(330)는 그래픽 데이터 처리뿐만 아니라, 일반적인 데이터 처리를 위해 이용될 수 있다. 예를 들어, GPU(330)는 도 1 내지 도 12를 참조하여 설명된 프로세싱 장치(111, 112, 211, 212)의 기능을 포함할 수 있다. 즉, GPU(330)는 CPU(310)로부터 제공되는 뉴럴 네트워크를 기반으로 뉴럴 프로세싱을 수행할 수 있다.
NPU(340)는 뉴럴 프로세싱을 위한 전용 프로세싱 장치일 수 있다. NPU(340)를 통해 딥 러닝(deep learning), 머신 러닝(machine learning) 등의 인공지능과 연관된 다양한 연산들이 수행될 수 있다. 예를 들어, NPU(340)는 도 1 내지 도 12를 참조하여 설명된 프로세싱 장치(111, 112, 211, 212)의 기능을 포함할 수 있다. 즉, NPU(340)는 CPU(310)로부터 제공되는 뉴럴 네트워크를 기반으로 뉴럴 프로세싱을 수행할 수 있다.
모니터링 회로(350)는 CPU(310), DSP(320), GPU(330) 및 NPU(340)의 상태 정보를 감지하거나, 감지된 상태 정보를 감시할 수 있다. 모니터링 회로(350)는 다양한 상태 정보를 CPU(310)로 제공할 수 있다. 이에 따라, CPU(310)는 상태 정보에 기초하여 프로세싱을 수행할 프로세싱 장치를 선택할 수 있다. 예를 들어, 모니터링 회로(350)는 도 1 내지 도 12를 참조하여 설명된 상태 정보 모니터(120, 220)의 기능을 포함할 수 있다.
메모리(360)는 시스템 온 칩(300)의 동작에 이용되는 데이터를 저장할 수 있다. 예시적으로, 메모리(360)는 CPU(310)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 예를 들어, 메모리(360)는 도 1 내지 도 12를 참조하여 설명된 메모리(140, 240)의 기능을 포함할 수 있다. 즉, 메모리(360)는 처리될 뉴럴 네트워크를 저장할 수 있다.
메모리 인터페이스(370)는 시스템 온 칩(300) 외부의 메모리로부터 데이터를 수신하거나 외부의 메모리로 데이터를 제공할 수 있다. 예를 들어, 시스템 온 칩(300) 외부의 메모리는 도 1 내지 도 12를 참조하여 설명된 메모리(140, 240)의 기능을 포함할 수 있다. 즉, 외부 메모리가 뉴럴 네트워크를 저장하는 경우, 메모리 인터페이스(370)는 외부 메모리로부터 뉴럴 네트워크를 수신할 수 있다. 메모리 인터페이스(370)는 수신된 뉴럴 네트워크를 선택된 프로세싱 장치로 제공할 수 있다.
버스(380)는 시스템 온 칩(300) 내부에서 온 칩 네트워크를 제공할 수 있다. 예를 들어, 버스(380)는 데이터 및 제어 신호를 전달하는 경로를 제공할 수 있다. 예를 들어, CPU(310)는 버스(380)를 통해 구성 요소들 각각으로 명령을 전달할 수 있다. 예를 들어, CPU(310), DSP(320), GPU(330) 및 NPU(340)는 버스(380)를 통해 뉴럴 네트워크를 수신할 수 있다.
도 13에서 시스템 온 칩(300)은 프로세싱 장치로서 CPU(310), DSP(320), GPU(330) 및 NPU(340)를 포함하는 것으로 도시되었지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 시스템 온 칩(300)은 뉴럴 프로세싱과 연관된 연산을 수행할 수 있는 다양한 프로세싱 장치들을 더 포함할 수 있다.
도 14는 본 발명의 실시 예에 따른 휴대용 단말기(1000)를 보여주는 블록도이다. 도 14를 참조하면, 본 발명의 실시 예에 따른 휴대용 단말기(1000)는 이미지 처리부(1100), 무선 송수신부(1200), 오디오 처리부(1300), 버퍼 메모리(1400), 불휘발성 메모리(1500), 사용자 인터페이스(1600) 및 컨트롤러(1700)를 포함한다.
이미지 처리부(1100)는 렌즈(1110)를 통해 광 신호를 수신할 수 있다. 이미지 처리부(1100)에 포함되는 이미지 센서(1120) 및 이미지 신호 프로세서(1130)는 수신되는 광 신호에 기초하여, 외부 객체와 관련되는 이미지 데이터를 생성할 수 있다. 디스플레이부(1140)는 외부 장치(예를 들어, 컨트롤러(1700))로부터 데이터를 수신하고, 수신된 데이터에 기초하여 디스플레이 패널을 통해 영상을 표시할 수 있다.
무선 송수신부(1200)는 안테나(1210)를 통해 외부 장치/시스템과 신호를 교환할 수 있다. 무선 송수신부(1200)의 송수신기(1220) 및 Modem(Modulator/Demodulator)(1230)은 다양한 무선 통신 규약에 따라, 외부 장치/시스템과 교환되는 신호를 처리할 수 있다.
오디오 처리부(1300)는 오디오 신호 프로세서(1310)를 이용하여 소리 정보를 처리할 수 있고, 오디오를 재생하고 출력할 수 있다. 오디오 처리부(1300)는 마이크(1320)를 통해 오디오 입력을 수신할 수 있다. 오디오 처리부(1300)는 스피커(1330)를 통해 재생되는 오디오를 출력할 수 있다.
버퍼 메모리(1400)는 휴대용 단말기(1000)의 동작에 이용되는 데이터를 저장할 수 있다. 예를 들어, 버퍼 메모리(1400)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다. 예를 들어, 버퍼 메모리(1400)는 도 1 내지 도 12를 참조하여 설명된 메모리(140, 240)의 기능을 포함할 수 있다.
불휘발성 메모리(1500)는 전력 공급과 무관하게 데이터를 저장할 수 있다. 예를 들어, 불휘발성 메모리(1500)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 다양한 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 예를 들어, 불휘발성 메모리(1500)는 SD(Secure Digital) 카드와 같은 착탈식 메모리, 및/또는 eMMC(Embedded Multimedia Card)와 같은 내장(Embedded) 메모리를 포함할 수 있다. 예를 들어, 불휘발성 메모리(1500)는 도 1 내지 도 12를 참조하여 설명된 메모리(140, 240)의 기능을 포함할 수 있다.
사용자 인터페이스(1600)는 사용자와 휴대용 단말기(1000) 사이의 통신을 중재할 수 있다. 예를 들어, 사용자 인터페이스(1600)는 키패드, 버튼, 터치 스크린, 터치 패드, 자이로스코프 센서, 진동 센서, 가속 센서 등과 같은 입력 인터페이스를 포함할 수 있다. 예를 들어, 사용자 인터페이스(1600)는 모터, LED 램프 등과 같은 출력 인터페이스를 포함할 수 있다.
컨트롤러(1700)는 휴대용 단말기(1000)의 구성 요소들의 전반적인 동작들을 제어할 수 있다. 컨트롤러(1700)는 범용(General-purpose) 프로세서, 전용(Special-purpose) 프로세서, 어플리케이션 프로세서, 마이크로프로세서 등과 같이, 하나 이상의 프로세서 코어를 포함하는 연산 처리 장치/회로로 구현될 수 있다. 예를 들어, 컨트롤러(1700)는 도 1 내지 도 12를 참조하여 설명된 뉴럴 프로세싱 시스템(100, 200)의 기능을 포함할 수 있다. 예를 들어, 컨트롤러(1700)는 도 13을 참조하여 설명된 시스템 온 칩(300)의 기능을 포함할 수 있다. 이에 따라, 컨트롤러(1700)는 뉴럴 네트워크를 기반으로 뉴럴 프로세싱을 수행할 수 있다. 즉, 휴대용 단말기(1000)는 뉴럴 프로세싱을 통해 데이터를 처리함으로써 이미지 인식, 음성 인식 등 다양한 인공지능 서비스를 제공할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100, 200: 뉴럴 프로세싱 시스템
110, 210: 프로세싱 그룹
111, 122, 211, 212: 프로세싱 장치
120, 220: 상태 정보 모니터
130 230: 뉴럴 프로세싱 컨트롤러
140, 240: 메모리
150: PMIC
160: 클록 생성기

Claims (20)

  1. 복수의 프로세싱 장치들을 포함하는 뉴럴 프로세싱 시스템의 동작 방법에 있어서,
    상기 복수의 프로세싱 장치들의 상태 정보에 기초하여 상기 복수의 프로세싱 장치들 중 뉴럴 네트워크를 기반으로 프로세싱을 수행할 제1 프로세싱 장치를 선택하는 단계;
    상기 뉴럴 네트워크의 오퍼레이터(operator)들 중 적어도 하나가 상기 제1 프로세싱 장치에 의해 지원되지 않는 경우, 상기 제1 프로세싱 장치에 의해 지원되는 제1 지원 오퍼레이터들을 기반으로 상기 뉴럴 네트워크를 변환하는 단계; 및
    상기 변환된 뉴럴 네트워크를 기반으로, 상기 제1 프로세싱 장치에 의해, 상기 프로세싱을 수행하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 뉴럴 네트워크의 상기 오퍼레이터들이 상기 제1 프로세싱 장치에 의해 모두 지원되는 경우, 상기 뉴럴 네트워크를 기반으로, 상기 제1 프로세싱 장치에 의해, 상기 프로세싱이 수행되는 동작 방법.
  3. 제 1 항에 있어서,
    상기 제1 지원 오퍼레이터들은 상기 복수의 프로세싱 장치들 중 제2 프로세싱 장치에 의해 지원되는 제2 지원 오퍼레이터들과 동일하지 않은 동작 방법.
  4. 제 1 항에 있어서,
    상기 뉴럴 네트워크를 변환하는 단계는 상기 오퍼레이터들 중 상기 적어도 하나를 상기 제1 지원 오퍼레이터들 중 적어도 하나로 변환하는 단계를 포함하는 동작 방법.
  5. 제 1 항에 있어서,
    상기 상태 정보는 상기 복수의 프로세싱 장치들 각각에 대한 온도 정보를 포함하고,
    상기 제1 프로세싱 장치는 상기 온도 정보에 기초하여 선택되는 동작 방법.
  6. 제 1 항에 있어서,
    상기 상태 정보는 상기 복수의 프로세싱 장치들 각각에 대한 전압 정보를 포함하고,
    상기 제1 프로세싱 장치는 상기 전압 정보에 기초하여 선택되는 동작 방법.
  7. 제 1 항에 있어서,
    상기 상태 정보는 상기 복수의 프로세싱 장치들 각각에 대한 전류 정보를 포함하고,
    상기 제1 프로세싱 장치는 상기 전류 정보에 기초하여 선택되는 동작 방법.
  8. 제 1 항에 있어서,
    상기 상태 정보는 상기 복수의 프로세싱 장치들 각각에 대한 클록 주파수 정보를 포함하고,
    상기 제1 프로세싱 장치는 상기 클록 주파수 정보에 기초하여 선택되는 동작 방법.
  9. 제 1 항에 있어서,
    상기 복수의 프로세싱 장치들은 중앙 처리 장치(CPU; Central Processing Unit), 그래픽 처리 장치(GPU; Graphic Processing Unit), 뉴럴 프로세싱 장치(NPU; Neural Processing Unit) 및 디지털 신호 처리기(DSP; Digital Signal Processor)를 포함하는 동작 방법.
  10. 제1 프로세싱 장치 및 제2 프로세싱 장치를 포함하는 뉴럴 프로세싱 시스템의 동작 방법에 있어서,
    뉴럴 네트워크를 기반으로, 상기 제1 프로세싱 장치에 의해, 제1 뉴럴 프로세싱을 수행하는 단계;
    상기 제1 뉴럴 프로세싱을 수행한 후, 상기 제1 프로세싱 장치의 온도가 임계값을 초과하는 경우, 상기 제2 프로세싱 장치에 의해 지원되는 지원 오퍼레이터들을 기반으로 상기 뉴럴 네트워크를 변환하는 단계; 및
    상기 변환된 뉴럴 네트워크를 기반으로, 상기 제2 프로세싱 장치에 의해, 제2 뉴럴 프로세싱을 수행하는 단계를 포함하는 동작 방법.
  11. 제 10 항에 있어서,
    상기 제1 프로세싱 장치의 상기 온도가 상기 임계값 이하인 경우, 상기 제1 프로세싱 장치에 의해, 상기 뉴럴 네트워크를 기반으로 상기 제2 뉴럴 프로세싱이 수행되는 동작 방법.
  12. 제 10 항에 있어서,
    상기 뉴럴 네트워크의 오퍼레이터들은 상기 제1 프로세싱 장치에 의해 지원되고, 상기 뉴럴 네트워크의 오퍼레이터들 중 적어도 하나는 상기 제2 프로세싱 장치에 의해 지원되지 않는 동작 방법.
  13. 제 10 항에 있어서,
    상기 뉴럴 네트워크를 변환하는 단계는 상기 뉴럴 네트워크의 오퍼레이터들 중 상기 제2 프로세싱 장치에 의해 지원되지 않는 제1 오퍼레이터를 상기 지원 오퍼레이터들 중 적어도 하나로 변환하는 단계를 포함하는 동작 방법.
  14. 제 10 항에 있어서,
    상기 제1 뉴럴 프로세싱에 의해 상기 제1 프로세싱 장치의 상기 온도가 증가되고, 상기 제2 뉴럴 프로세싱에 의해 상기 제2 프로세싱 장치의 온도가 증가되는 동작 방법.
  15. 제1 지원 오퍼레이터들을 지원하도록 구성된 제1 프로세싱 장치;
    제2 지원 오퍼레이터들을 지원하도록 구성된 제2 프로세싱 장치;
    상기 제1 및 제2 프로세싱 장치들의 상태 정보를 감시하도록 구성된 상태 정보 모니터; 및
    상기 상태 정보에 기초하여 상기 제1 및 제2 프로세싱 장치들 중 뉴럴 네트워크를 기반으로 입력 데이터에 대한 프로세싱을 수행할 프로세싱 장치를 선택하도록 구성된 뉴럴 프로세싱 컨트롤러를 포함하고,
    상기 뉴럴 네트워크의 오퍼레이터들 중 적어도 하나가 상기 선택된 프로세싱 장치에 의해 지원되지 않는 경우, 상기 뉴럴 프로세싱 컨트롤러는 상기 제1 지원 오퍼레이터들 및 상기 제2 지원 오퍼레이터들 중 상기 선택된 프로세싱 장치의 지원 오퍼레이터들을 기반으로 상기 뉴럴 네트워크를 변환하도록 더 구성된 뉴럴 프로세싱 시스템.
  16. 제 15 항에 있어서,
    상기 제1 지원 오퍼레이터들은 상기 제2 지원 오퍼레이터들과 동일하지 않은 뉴럴 프로세싱 시스템.
  17. 제 15 항에 있어서,
    상기 뉴럴 프로세싱 컨트롤러는,
    상기 상태 정보에 기초하여 상기 제1 및 제2 프로세싱 장치들 중 상기 프로세싱을 수행할 상기 프로세싱 장치를 선택하도록 구성된 스케줄러; 및
    상기 뉴럴 네트워크의 상기 오퍼레이터들 중 상기 적어도 하나를 상기 선택된 프로세싱 장치의 상기 지원 오퍼레이터들 중 적어도 하나로 변환하여 상기 변환된 뉴럴 네트워크를 생성하도록 구성된 컴파일러를 포함하는 뉴럴 프로세싱 시스템.
  18. 제 17 항에 있어서,
    상기 스케줄러는 상기 제1 및 제2 프로세싱 장치들의 상기 상태 정보가 유사한 경우, 상기 뉴럴 네트워크의 상기 오퍼레이터들과 상기 제1 및 제2 지원 오퍼레이터들에 기초하여 상기 프로세싱을 수행할 상기 프로세싱 장치를 선택하는 뉴럴 프로세싱 시스템.
  19. 제 17 항에 있어서,
    상기 컴파일러는 상기 제1 및 제2 지원 오퍼레이터들에 대한 정보를 포함하는 테이블을 참조하여 상기 변환된 뉴럴 네트워크를 생성하는 뉴럴 프로세싱 시스템.
  20. 제 15 항에 있어서,
    상기 상태 정보는 온도 정보, 전압 정보, 전류 정보 및 클록 주파수 정보 중 적어도 하나를 포함하는 뉴럴 프로세싱 시스템.
KR1020180163038A 2018-12-17 2018-12-17 뉴럴 프로세싱 시스템 및 그것의 동작 방법 KR20200075185A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180163038A KR20200075185A (ko) 2018-12-17 2018-12-17 뉴럴 프로세싱 시스템 및 그것의 동작 방법
DE102019120930.7A DE102019120930A1 (de) 2018-12-17 2019-08-02 Neuronales Verarbeitungssystem und Betriebsverfahren desselben
US16/552,631 US20200193278A1 (en) 2018-12-17 2019-08-27 Neural processing system and operating method thereof
CN201910858105.3A CN111325312A (zh) 2018-12-17 2019-09-11 神经处理系统及其操作方法
SG10201908709YA SG10201908709YA (en) 2018-12-17 2019-09-19 Neural processing system and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180163038A KR20200075185A (ko) 2018-12-17 2018-12-17 뉴럴 프로세싱 시스템 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20200075185A true KR20200075185A (ko) 2020-06-26

Family

ID=70859444

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180163038A KR20200075185A (ko) 2018-12-17 2018-12-17 뉴럴 프로세싱 시스템 및 그것의 동작 방법

Country Status (5)

Country Link
US (1) US20200193278A1 (ko)
KR (1) KR20200075185A (ko)
CN (1) CN111325312A (ko)
DE (1) DE102019120930A1 (ko)
SG (1) SG10201908709YA (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220025143A (ko) * 2020-08-21 2022-03-03 주식회사 딥엑스 신경망 프로세싱 유닛
WO2022163985A1 (ko) * 2021-01-29 2022-08-04 주식회사 노타 인공지능 추론모델을 경량화하는 방법 및 시스템
KR20220149414A (ko) * 2021-04-30 2022-11-08 주식회사 딥엑스 이종의 센서로 제공되는 이종의 데이터를 처리하기 위한 퓨전-인공신경망을 위해 구현되는 npu
US11511772B2 (en) 2021-04-30 2022-11-29 Deepx Co., Ltd. NPU implemented for artificial neural networks to process fusion of heterogeneous data received from heterogeneous sensors
US11562220B2 (en) 2021-04-14 2023-01-24 Deepx Co., Ltd. Neural processing unit capable of reusing data and method thereof

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220147810A1 (en) * 2020-11-06 2022-05-12 Micron Technology, Inc. Discovery of hardware characteristics of deep learning accelerators for optimization via compiler
CN113570033B (zh) * 2021-06-18 2023-04-07 北京百度网讯科技有限公司 神经网络处理单元、神经网络的处理方法及其装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10585703B2 (en) * 2017-06-03 2020-03-10 Apple Inc. Dynamic operation allocation for neural networks
US11334398B2 (en) * 2018-08-29 2022-05-17 International Business Machines Corporation Learning-based thermal estimation in multicore architecture
US20190042916A1 (en) * 2018-09-28 2019-02-07 Intel Corporation Reward-Based Updating of Synaptic Weights with A Spiking Neural Network to Perform Thermal Management

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220025143A (ko) * 2020-08-21 2022-03-03 주식회사 딥엑스 신경망 프로세싱 유닛
US11977916B2 (en) 2020-08-21 2024-05-07 Deepx Co., Ltd. Neural processing unit
WO2022163985A1 (ko) * 2021-01-29 2022-08-04 주식회사 노타 인공지능 추론모델을 경량화하는 방법 및 시스템
US11562220B2 (en) 2021-04-14 2023-01-24 Deepx Co., Ltd. Neural processing unit capable of reusing data and method thereof
KR20220149414A (ko) * 2021-04-30 2022-11-08 주식회사 딥엑스 이종의 센서로 제공되는 이종의 데이터를 처리하기 위한 퓨전-인공신경망을 위해 구현되는 npu
US11511772B2 (en) 2021-04-30 2022-11-29 Deepx Co., Ltd. NPU implemented for artificial neural networks to process fusion of heterogeneous data received from heterogeneous sensors
US11731656B2 (en) 2021-04-30 2023-08-22 Deepx Co., Ltd. NPU implemented for artificial neural networks to process fusion of heterogeneous data received from heterogeneous sensors

Also Published As

Publication number Publication date
SG10201908709YA (en) 2020-07-29
CN111325312A (zh) 2020-06-23
DE102019120930A1 (de) 2020-06-18
US20200193278A1 (en) 2020-06-18

Similar Documents

Publication Publication Date Title
KR20200075185A (ko) 뉴럴 프로세싱 시스템 및 그것의 동작 방법
US11195520B2 (en) Always-on keyword detector
CN110520853B (zh) 直接存储器访问的队列管理
US10963783B2 (en) Technologies for optimized machine learning training
CN109375951B (zh) 一种用于执行全连接层神经网络正向运算的装置和方法
CN107408062B (zh) 用于卸载和加载处理器/协处理器安排的数据的技术
US20210319317A1 (en) Methods and apparatus to perform machine-learning model operations on sparse accelerators
US20210320967A1 (en) Edge Server with Deep Learning Accelerator and Random Access Memory
CN104035747B (zh) 用于并行计算的方法和装置
CN109726353B (zh) 卷积运算装置和方法
EP3525119A1 (en) Deep learning fpga converter
US20240118992A1 (en) Systems, apparatus, and methods to debug accelerator hardware
US20210319823A1 (en) Deep Learning Accelerator and Random Access Memory with a Camera Interface
US20210271960A1 (en) Performance scaling for dataflow deep neural network hardware accelerators
CN115270697A (zh) 用于自动更新自主工厂的人工智能模型的方法和装置
US20220375519A1 (en) Adaptive memory management and control circuitry
WO2023080976A1 (en) Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerator
US11436025B2 (en) Smart compute resistive memory
CN116097281A (zh) 经由无限宽度神经网络的理论的超参数传递
US20210365804A1 (en) Dynamic ai model transfer reconfiguration to minimize performance, accuracy and latency disruptions
JP2021022370A (ja) コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体
US20240177024A1 (en) System and method for managing inference models based on inference generation frequencies
US20240177027A1 (en) System and method for managing inference model performance through proactive communication system analysis
CN111290701A (zh) 数据读写控制方法、装置、介质和电子设备
US20240177067A1 (en) System and method for managing deployment of related inference models