KR20190136431A - 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 - Google Patents

뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 Download PDF

Info

Publication number
KR20190136431A
KR20190136431A KR1020180062130A KR20180062130A KR20190136431A KR 20190136431 A KR20190136431 A KR 20190136431A KR 1020180062130 A KR1020180062130 A KR 1020180062130A KR 20180062130 A KR20180062130 A KR 20180062130A KR 20190136431 A KR20190136431 A KR 20190136431A
Authority
KR
South Korea
Prior art keywords
memory
sub
hardware
neural network
request
Prior art date
Application number
KR1020180062130A
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 KR1020180062130A priority Critical patent/KR20190136431A/ko
Priority to US16/229,146 priority patent/US11176438B2/en
Priority to CN201910040910.5A priority patent/CN110554913A/zh
Publication of KR20190136431A publication Critical patent/KR20190136431A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • HELECTRICITY
    • H02GENERATION; CONVERSION OR DISTRIBUTION OF ELECTRIC POWER
    • H02MAPPARATUS FOR CONVERSION BETWEEN AC AND AC, BETWEEN AC AND DC, OR BETWEEN DC AND DC, AND FOR USE WITH MAINS OR SIMILAR POWER SUPPLY SYSTEMS; CONVERSION OF DC OR AC INPUT POWER INTO SURGE OUTPUT POWER; CONTROL OR REGULATION THEREOF
    • H02M1/00Details of apparatus for conversion
    • H02M1/0003Details of control, feedback or regulation circuits
    • H02M1/0012Control circuits using digital or numerical techniques

Landscapes

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

Abstract

뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법이 개시된다. 본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 시스템은, 뉴럴 네트워크 처리를 위한 다수의 연산들을 포함하는 리퀘스트를 각각 적어도 하나의 연산을 포함하는 다수의 서브 리퀘스트들로 분할하고, 상기 분할된 다수의 서브 리퀘스트들을 전용 하드웨어 및 하나 이상의 일반 하드웨어들에 할당하며, 하드웨어들이 메모리들을 억세스함에 소요되는 코스트를 나타내는 코스트 정보를 참조하여 각각의 서브 리퀘스트에 대해 입력 및 출력을 위한 메모리를 할당하는 연산 할당 매니저 및 상기 연산 할당 결과에 따라 상기 전용 하드웨어 및 하나 이상의 일반 하드웨어들을 이용하여 상기 다수의 서브 리퀘스트들을 실행하는 뉴럴 네트워트 장치를 구비하며, 상기 연산 할당 매니저는 적어도 두 개의 서브 리퀘스트들에 대해 서로 다른 메모리를 할당하는 것을 특징으로 한다.

Description

뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법{Neural network system, Application processor having the same and Operating method of neural network system}
본 개시의 기술적 사상은 뉴럴 네트워크 시스템에 관한 것으로서, 상세하게는 연산 효율성을 향상한 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 하나 이상의 뉴럴 네트워크 모델을 이용한 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
딥 러닝 알고리즘 등 다양한 종류의 뉴럴 네트워크들이 존재하고, 각각의 뉴럴 네트워크는 다양한 종류의 연산들을 수행할 수 있다. 이 때, 연산 속도를 가속하기 위해 전용 하드웨어가 개발되고 있으나, 상기 다양한 종류의 연산들 중 일부는 전용 하드웨어에 의해 지원되지 않을 수 있으며, 이로 인해 뉴럴 네트워크의 처리 성능이 낮아지는 문제가 발생될 수 있다.
본 발명의 기술적 사상이 해결하려는 과제는, 뉴럴 네트워크 모델의 연산 효율을 향상할 수 있는 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 시스템은, 뉴럴 네트워크 처리를 위한 다수의 연산들을 포함하는 리퀘스트를 각각 적어도 하나의 연산을 포함하는 다수의 서브 리퀘스트들로 분할하고, 상기 분할된 다수의 서브 리퀘스트들을 전용 하드웨어 및 하나 이상의 일반 하드웨어들에 할당하며, 하드웨어들이 메모리들을 억세스함에 소요되는 코스트를 나타내는 코스트 정보를 참조하여 각각의 서브 리퀘스트에 대해 입력 및 출력을 위한 메모리를 할당하는 연산 할당 매니저 및 상기 연산 할당 결과에 따라 상기 전용 하드웨어 및 하나 이상의 일반 하드웨어들을 이용하여 상기 다수의 서브 리퀘스트들을 실행하는 뉴럴 네트워트 장치를 구비하며, 상기 연산 할당 매니저는 적어도 두 개의 서브 리퀘스트들에 대해 서로 다른 메모리를 할당하는 것을 특징으로 한다.
한편, 본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크 시스템의 동작방법은, 프로세서의 제어에 기반하여, 뉴럴 네트워크 처리를 위한 다수의 연산들을 포함하는 리퀘스트를 각각 적어도 하나의 연산을 포함하는 다수의 서브 리퀘스트들로 분할하는 단계와, 상기 프로세서의 제어에 기반하여, 상기 다수의 서브 리퀘스트들 중 전용 하드웨어가 실행할 수 있는 연산을 포함하는 일부의 서브 리퀘스트를 상기 전용 하드웨어에 할당하는 단계와, 상기 프로세서의 제어에 기반하여, 상기 다수의 서브 리퀘스트들 중 나머지 서브 리퀘스트들을 실행하기 위한 하나 이상의 일반 하드웨어들을 선택하는 단계와, 상기 프로세서의 제어에 기반하여, 상기 전용 하드웨어 및 상기 일반 하드웨어들이 메모리들을 억세스함에 소요되는 코스트 정보를 참조함에 의해 상기 다수의 서브 리퀘스트들 각각에 메모리를 할당하는 단계 및 상기 할당된 메모리를 억세스함에 의해, 상기 전용 하드웨어 및 상기 선택된 일반 하드웨어들이 상기 다수의 서브 리퀘스트들을 실행하는 단계를 구비하는 것을 특징으로 한다.
한편, 본 개시의 기술적 사상의 일측면에 따른 어플리케이션 프로세서는, 프로그램들을 저장하는 메모리와, 상기 메모리에 저장된 프로그램들을 실행하는 프로세서 및 상기 메모리에 로딩 가능한 프로그램들을 포함하는 연산 할당 매니저를 구비하고, 상기 프로세서는, 상기 연산 할당 매니저를 실행함으로써, 뉴럴 네트워크 처리를 위한 다수의 연산들을 포함하는 리퀘스트를 각각 적어도 하나의 연산을 포함하는 다수의 서브 리퀘스트들로 분할하고, 상기 다수의 서브 리퀘스트들을 실행할 전용 하드웨어 및 하나 이상의 일반 하드웨어들을 선택하며, 하드웨어들이 메모리들을 억세스함에 소요되는 코스트를 나타내는 코스트 정보를 참조함에 의해 상기 다수의 서브 리퀘스트들 각각에 메모리를 할당하는 것을 특징으로 한다.
본 발명의 기술적 사상의 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법에 따르면, 운영 체제 측면에서 뉴럴 네트워크의 연산들을 다수 하드웨어들에 할당하기 위한 처리를 수행할 필요 없이, 그 하위 레벨에서 전용 하드웨어에 의해 지원되지 않는 연산들을 일반 하드웨어에 효율적으로 할당할 수 있는 효과가 있다.
또한, 본 발명의 기술적 사상의 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법에 따르면, 서브 리퀘스트 단위로 메모리 코스트에 기반한 최적의 메모리를 할당할 수 있으므로, 메모리 카피 등의 자원 낭비를 최소할 수 있으며, 빠른 메모리 억세스를 통해 뉴럴 네트워크 연산의 효율을 향상할 수 있는 효과가 있다.
또한, 본 발명의 기술적 사상의 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법에 따르면, 파워 소모 등 다양한 코스트에 기반하여 메모리가 할당되어 이용될 수 있으므로, 뉴럴 네트워크 연산을 수행하는 시스템의 파워 효율을 향상할 수 있는 효과가 있다.
도 1은 본 발명의 예시적인 실시예에 따른 연산 할당 매니저를 포함하는 전자 시스템을 나타내는 블록도이다.
도 2는 도 1의 경로 선택기의 일 동작 예를 나타내는 블록도이다.
도 3은 도 1의 메모리 할당기의 일 동작 예를 나타내는 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따른 뉴럴 네트워크 시스템을 포함하는 전자 시스템의 구현 예를 나타내는 개념도이다.
도 5는 본 발명의 예시적인 실시예에 따른 연산 할당 매니저의 구성의 일 예를 나타내는 블록도이다.
도 6a,b 및 도 7은 본 발명의 예시적인 실시예들에 따른 뉴럴 네트워크 시스템의 동작방법을 나타내는 플로우차트이다.
도 8은 본 발명의 예시적인 실시예에 따른 뉴럴 네트워크 시스템에서 경로 선택기의 일 동작 예를 나타내는 도면이다.
도 9는 도 8에서의 경로 선택기에 기반하여 서브 리퀘스트들에 하드웨어들이 할당된 예를 나타내는 도면이다.
도 10a,b,c는 본 발명의 실시예들에 따른 메모리 할당 동작의 일 예를 나타내는 도면이다.
도 11은 본 발명의 예시적인 실시예들에 따라 연산 할당 관리 동작이 완료된 후 뉴럴 네트워크가 실행되는 예를 나타내는 도면이다.
도 12는 본 발명의 변형 가능한 실시예에 따른 뉴럴 네트워크 시스템의 동작 예를 나타내는 개념도이다.
도 13a,b는 본 발명의 다양한 실시예들에 따른 연산 할당 관리 동작을 나타내는 블록도이다.
도 14는 본 발명의 예시적인 실시예에 따른 연산 할당 매니저가 소프트웨어적으로 구현되는 예를 나타내는 블록도이다.
도 15는 본 발명의 예시적인 실시예에 따른 연산 할당 매니저가 자동차에 채용되는 자율 운행 모듈 내에 구현되는 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 본 발명의 예시적인 실시예에 따른 연산 할당 매니저를 포함하는 전자 시스템을 나타내는 블록도이다. 일 실시예에 따라, 도 1의 전자 시스템(100)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(100)이 채용된 모바일 장치 등의 시스템의 구성들을 제어할 수 있다.
도 1의 전자 시스템(100)은 모바일 장치에 채용되는 어플리케이션 프로세서(Application Processor, AP)일 수 있다. 또는, 도 1의 전자 시스템(100)은 컴퓨팅 시스템에 해당하거나, 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System, ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트 폰, 의료 장치, 모바일 장치, 영상 표시 장치, 계측 장치, IoT(Internet of Things) 장치 등에 해당될 수 있으며, 이 외에도 본 발명의 연산 할당 매니저는 다양한 시스템들에 적용될 수 있다. 이하에서는, 도 1의 전자 시스템(100)이 어플리케이션 프로세서(AP)에 해당하는 것으로 가정된다.
도 1을 참조하면, 전자 시스템(100)은 프로세서(110), RAM(Random Access memory, 120), 뉴럴 네트워크 장치(130), 연산 할당 매니저(140) 및 메모리(150)를 포함할 수 있다. 일 실시예에 있어서, 전자 시스템(100)의 구성들 중 적어도 일부는 하나의 반도체 칩에 탑재될 수 있다. 또한, 일 구현 예에 따라 연산 할당 매니저(140)는 뉴럴 네트워크 장치(130) 내의 구성인 것으로 정의될 수도 있을 것이다.
전자 시스템(100)이 뉴럴 네트워크를 처리하는 점에서, 전자 시스템(100)은 뉴럴 네트워크 시스템(NNS)을 포함하는 것으로 정의될 수 있다. 뉴럴 네트워크 시스템(NNS)은 뉴럴 네트워크 동작과 관련하여, 전자 시스템(100)에 구비되는 구성들 중 적어도 일부를 포함할 수 있다. 일 예로서, 도 1에는 뉴럴 네트워크 시스템(NNS)이 프로세서(110), 뉴럴 네트워크 장치(130) 및 연산 할당 매니저(140)를 포함하는 것으로 예시되었으나 본 발명의 실시예는 이에 국한될 필요가 없다. 예컨대, 뉴럴 네트워크 동작에 관여되는 다른 다양한 종류의 구성들이 뉴럴 네트워크 시스템(NNS)에 구비되는 것으로 정의되어도 무방할 것이다.
프로세서(110)는 전자 시스템(100)의 전반적인 동작을 제어할 수 있으며, 일 예로서 프로세서(110)는 중앙 프로세싱 유닛(Central processing unit, CPU)일 수 있다. 프로세서(110)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(110)는 RAM(120) 및 메모리(140)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, 프로세서(110)는 메모리(140)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(130)의 기능을 제어할 수 있다.
RAM(120)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(140)에 저장된 프로그램들 및/또는 데이터는 프로세서(110)의 제어 또는 부팅 코드에 따라 RAM(120)에 일시적으로 로딩될 수 있다. RAM(120)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(130)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크 의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크의 모델들은 GoogLeNet, AlexNet, VGG Network 등과 같은 CNN(Convolution Neural Network), R-CNN(Region with Convolution Neural Network), RPN(Region Proposal Network), RNN(Recurrent Neural Network), S-DNN(Stacking-based deep Neural Network), S-SDNN(State-Space Dynamic Neural Network), Deconvolution Network, DBN(Deep Belief Network), RBM(Restricted Boltzman Machine), Fully Convolutional Network, LSTM(Long Short-Term Memory) Network, Classification Network 등 다양한 종류의 모델들을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(130)는 뉴럴 네트워크의 모델들에 따른 연산을 수행하기 위한 하나 이상의 프로세서(예컨대, 전용 하드웨어)를 포함할 수 있다. 또한, 뉴럴 네트워크 장치(130)는 뉴럴 네트워크의 모델들에 대응하는 프로그램들을 저장하기 위한 별도의 메모리(미도시)를 포함할 수도 있다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(130)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(100)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(130)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 정보 신호를 생성할 수 있다.
뉴럴 네트워크 연산은 일반(general) 하드웨어나 특정 소프트웨어에 최적화된 전용 하드웨어 등 다양한 종류의 하드웨어(또는, 프로세서)들에 의해 실행될 수 있다. 일 예로, CPU나 GPU 등의 일반 하드웨어에 의해 다양한 종류의 뉴럴 네트워크 모델들이 실행될 수 있으나, 전용 하드웨어에 대비하여 성능이나 전력 소모에서 연산 특성이 낮을 수 있다. 또한, 전용 하드웨어(예컨대, ASIC, NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등)에 의해 특정 뉴럴 네트워크 모델이 실행되면 성능 및 전력 소모 측면에서 유리하나, 전용 하드웨어는 일부 종류의 연산을 지원하지 않으므로 다양한 종류의 뉴럴 네트워크 모델을 실행하는 데에 단점이 발생될 수 있다.
일 예로, 입력 피쳐 맵 크기, 필터 크기 및 데이터 특성 등 다양한 원인에 기인하여, 뉴럴 네트워크에는 전용 하드웨어가 가속할 수 없는 연산들이 포함될 수 있으므로, 전용 하드웨어에 의해 뉴럴 네트워크의 처리 효율성을 확보하는 데 한계가 발생된다. 또한, 전용 하드웨어가 가속할 수 없는 연산들은 다른 일반 하드웨어에 의해 실행될 필요가 있는데, 이와 같은 과정에서 전용 하드웨어의 연산 결과가 특정한 메모리에 저장되고, 상기 메모리에 저장된 연산 결과가 일반 하드웨어로 전달되는 과정에서 다수의 메모리 카피 동작이 발생될 수 있다. 예컨대, 전용 하드웨어가 처리하는 데이터 특성과 일반 하드웨어가 처리하는 데이터 특성이 다르므로, 데이터 레이아웃(Data layout), 양자화 알고리즘(Quantization algorithm), 압축 알고리즘(Compression algorithm) 등의 특성 변환 처리 과정이 추가로 발생되고 이는 다수 회의 메모리 카피 동작을 발생시킬 수 있으며, 이로 인해 뉴럴 네트워크의 연산 속도가 저하될 수 있다.
일 실시예에 따라, 연산 할당 매니저(140)은 뉴럴 네트워크의 연산들을 다수의 하드웨어들에 할당하는 동작을 관리할 수 있다. 예컨대, 연산 할당 매니저(140)는 운영 체제 또는 시스템의 하드웨어 추상화 계층(hardware abstraction layer, HAL)을 통해 뉴럴 네트워크의 다수의 연산들을 포함하는 하나의 리퀘스트(Request)를 수신하고, 상기 리퀘스트를 다수의 서브 리퀘스트(Sub_request)로 분할한 후, 상기 서브 리퀘스트들을 전용 하드웨어 및 일반 하드웨어를 포함하는 다수의 하드웨어들에 할당할 수 있다. 즉, 하나의 서브 리퀘스트는 하나 이상의 연산들을 포함하고, 하드웨어들 각각은 자신에게 할당된 서브 리퀘스트의 연산을 수행할 수 있다.
일 실시예에 따라, 연산 할당 매니저(140)는 경로 선택기(Path selector, 141) 및 메모리 할당기(Memory allocator, 142)를 포함할 수 있다. 경로 선택기(141)는 전자 시스템(100)에 의해 실행되는 어플리케이션이 요구하는 뉴럴 네트워크에 대해 각각의 서브 리퀘스트를 실행할 하드웨어를 선택할 수 있으며, 이는 서브 리퀘스트들을 다수의 하드웨어들로 제공하는 경로를 선택하는 동작으로 정의될 수 있다. 예컨대, 상기 뉴럴 네트워크의 연산들을 NPU 등의 특정한 전용 하드웨어에 의해 실행함에 있어서, 상기 전용 하드웨어에 의해 실행 가능한 연산들(예컨대, 제1 그룹의 연산들)은 상기 전용 하드웨어에 할당되고, 상기 전용 하드웨어에 의해 실행 불가능한 연산들(예컨대, 제2 그룹의 연산들)은 CPU 또는 GPU 등의 일반 하드웨어에 할당되도록 경로 선택 동작이 수행될 수 있다.
일 예로서, 상기 뉴럴 네트워크의 실행을 요청하는 리퀘스트가 순차적으로 수행되는 제1 내지 제M 연산들을 포함하고, 그 중 제A 내지 제B 연산들(단, A 및 B는 M 보다 작은 정수)이 상기 전용 하드웨어에 의해 수행될 수 없는 제2 그룹의 연산들에 해당할 때, 상기 리퀘스트들은 제1 내지 제(A-1) 연산들을 포함하는 제1 서브 리퀘스트와, 제A 내지 제B 연산들을 포함하는 제2 서브 리퀘스트와, 제(B+1) 내지 제M 연산들을 포함하는 제3 서브 리퀘스트로 분할될 수 있다. 이 때, 경로 선택 동작에 기반하여, 제1 서브 리퀘스트는 상기 전용 하드웨어에 의해 실행되고, 제2 서브 리퀘스트는 일반 하드웨어에 의해 실행되며, 제3 서브 리퀘스트는 상기 전용 하드웨어에 의해 실행될 수 있다.
한편, 메모리 할당기(142)는 각각의 서브 리퀘스트의 실행에 이용되는 메모리를 대응하는 서브 리퀘스트에 할당할 수 있다. 예컨대, 메모리 할당기(142)는 각각의 서브 리퀘스트의 입력이 저장되는 메모리와, 각각의 서브 리퀘스트의 출력이 저장될 메모리를 나타내는 정보를 생성할 수 있다.
일 실시예에 따라, 전자 시스템(100)을 포함하는 시스템은 도 1에 도시된 메모리 이외에도 다른 다양한 종류의 메모리들을 포함할 수 있다. 이 때, 전용 하드웨어가 제1 서브 리퀘스트의 결과를 저장하고, 저장된 결과를 일반 하드웨어가 독출하는 과정에서 메모리 코스트가 발생될 수 있으며, 상기 메모리 코스트는 전자 시스템(100)이 채용된 시스템에 구비되는 다수의 메모리들에 대해 서로 다르게 발생될 수 있다. 이 때, 메모리 할당기(142)는 전용 하드웨어의 연산 결과가 일반 하드웨어로 전달되는 과정에서 가장 작은 또는 상대적으로 작은 메모리 코스트를 갖는 메모리를 선택하여 상기 제1 서브 리퀘스트에 할당할 수 있다.
또는, 상기 메모리 할당 동작은 다양한 방식에 의해 수행될 수 있다. 예컨대, 다수의 서브 리퀘스트들이 일련하게 수행될 때, 연산 결과를 저장하는 과정에서의 메모리 코스트가 존재할 수 있고, 연산 결과를 독출하는 과정에서의 메모리 코스트가 존재할 수 있으며, 상기 저장 및 독출 과정에서의 메모리 코스트들 중 어느 하나가 선택적으로 고려되어 메모리 할당 동작이 수행될 수도 있을 것이다.
또는, 변형 가능한 실시예로서, 전술한 제2 서브 리퀘스트는 일반 하드웨어에 의해 실행될 수 있으며, 전자 시스템(100)을 포함하는 시스템은 도 1에 도시된 프로세서 이외에도 다른 다양한 종류의 일반 하드웨어들을 포함할 수 있다. 이 때, 경로 선택기(141)는 상기 다양한 일반 하드웨어들에 대한 메모리 코스트 정보를 수신하고, 이를 기반으로 하여 서브 리퀘스트가 할당될 일반 하드웨어를 선택할 수도 있을 것이다. 즉, 서브 리퀘스트를 실행할 일반 하드웨어가 선택된 후 상기 선택된 일반 하드웨어가 억세스할 수 있는 다수의 메모리들 중 메모리 코스트를 기반으로 하여 메모리가 할당되거나, 상대적으로 작은 메모리 코스트로서 전용 하드웨어와 연산 결과를 통신할 수 있는 일반 하드웨어들 중에서 상기 서브 리퀘스트를 실행할 일반 하드웨어가 선택될 수도 있을 것이다. 상기와 같은 다양한 방식에 따라, 뉴럴 네트워크의 연산을 두 개 이상의 하드웨어들에 할당함에 있어서 연산 처리 성능이 저하되는 것을 감소 또는 최소화할 수 있다.
한편, 메모리 코스트는 메모리 동작과 관련하여 다양한 종류의 요소들을 포함할 수 있다. 예컨대, 전술한 메모리 할당기(142)는 다수의 메모리들 중 그 코스트가 가장 작은 메모리를 각각의 서브 리퀘스트에 할당할 수 있으며, 메모리 코스트는 메모리 사이즈, 기록/독출 레이턴시, 대역폭 및 소모 파워 중 적어도 하나를 포함할 수 있다.
상기와 같은 본 발명의 예시적인 실시예에 따르면, 뉴럴 네트워크 시스템(NNS)이 뉴럴 네트워크의 모든 연산을 가속할 수 있는 것으로 시스템에 통보할 수 있으며, 이에 따라 운영 체제 측면에서의 연산 할당 처리가 수행될 필요가 없이 뉴럴 네트워크 시스템(NNS)이 뉴럴 네트워크의 연산들을 통합하여 관리할 수 있다. 또한, 이종의 다른 하드웨어들에 의한 연산 처리에 있어서, 다수 회의 메모리 카피가 수행될 필요가 없이 데이터 공유(data share)를 통해 연산 결과의 입출력 연결이 가능하며, 또한 연산의 파이프라인(pipeline) 처리가 가능할 수 있으므로 뉴럴 네트워크 처리 성능이 향상될 수 있다.
한편, 연산 할당 매니저(140)는 다양한 형태로 구현될 수 있으며, 일 실시예에 따라 연산 할당 매니저(140)는 하드웨어 형태로 구현되거나 또는 소프트웨어 형태로 구현될 수 있다. 연산 할당 매니저(140)가 하드웨어 형태로 구현되는 경우, 연산 할당 매니저(140)는 연산 경로 선택 및 메모리 할당을 위한 정보들을 하드웨어적으로 수신하고 이에 대한 신호 처리를 위한 회로들을 포함할 수 있다. 또는, 연산 할당 매니저(140)는 소프트웨어 형태로 구현될 수 있으며, RAM(120)에 로딩되어 프로세서(110)에 의해 실행됨으로써 전술한 연산 경로 선택 및 메모리 할당 동작이 수행될 수 있다. 즉, 전술한 연산 할당 관리 동작은 프로세서(110)가 연산 할당 매니저(140)에 포함되는 프로그램을 실행함으로써 수행되는 것으로 설명될 수 있을 것이다.
한편, 도 1에 도시된 전자 시스템(100)이 어플리케이션 프로세서에 해당하는 경우, 전자 시스템(100)이 채용된 시스템은 하나 이상의 일반 하드웨어와 추가의 전용 하드웨어를 더 포함할 수도 있으며, 다수의 서브 리퀘스트들은 전자 시스템(100)의 내부 및 외부의 하드웨어들에 할당될 수도 있다. 이하, 본 발명의 예시적인 실시예들에 따른 뉴럴 네트워크의 시스템의 동작 예들을 설명함에 있어서, 하드웨어로 지칭되는 구성은 일반 하드웨어 및 전용 하드웨어를 포함하는 개념일 수 있다.
도 2는 도 1의 경로 선택기(141)의 일 동작 예를 나타내는 블록도이다.
도 1 및 도 2를 참조하면, 경로 선택기(141)는 뉴럴 네트워크 연산에서 요청되는 하나의 리퀘스트(Req)를 수신하고 이를 N 개의 서브 리퀘스트들(N sub_Req)로 분할할 수 있다. 경로 선택기(141)가 리퀘스트(Req)를 수신함은, 리퀘스트(Req)에 포함되는 다수의 연산들에 대한 정보를 수신하는 것으로 설명될 수 있으며, 일 예로서 뉴럴 네트워크에 대한 분석 동작을 통해 전체적인 연산 과정이 그래프화된 정보(Info_graph)를 수신할 수 있다.
경로 선택기(141)는 다양한 종류의 정보들에 기반하여 리퀘스트(Req)를 N 개의 서브 리퀘스트들(N sub_Req)로 분할할 수 있다. 예컨대, 경로 선택기(141)는 상기 뉴럴 네트워크에 대한 분석 결과로서의 정보(Info_graph)와 함께, 뉴럴 네트워크 연산을 실행하는 다수의 하드웨어들의 스태틱(Static) 정보 및 다이나믹(Dynamic) 정보에 기반하여 상기 분류 동작을 수행할 수 있다. 일 예로서, 스태틱 정보는 뉴럴 네트워크 연산을 실행하는 하드웨어의 성능 및 특성 등의 컴퓨팅 리소스(Info_resource) 정보를 포함할 수 있다. 또한, 다이나믹 정보는 뉴럴 네트워크 연산을 실행하는 도중에 발생될 수 있는 각종 정보들을 포함하며, 일 예로서 런타임(runtime) 과정에서의 컴퓨팅 컨텍스트(Info_context) 정보를 포함할 수 있다. 경로 선택기(141)는 상기와 같은 다양한 정보들에 기반하여 N 개의 서브 리퀘스트들(N sub_Req)을 실행할 일반 하드웨어 및 전용 하드웨어를 선택할 수 있으며, 선택 결과에 따라 서브 리퀘스트들이 제공될 하드웨어들을 나타내는 경로 정보(Info_path)를 생성할 수 있다.
예컨대, 리퀘스트(Req)는 시스템으로부터 제공된 전용 하드웨어에 의한 연산의 실행을 요청하는 리퀘스트에 해당할 수 있고, 리퀘스트(Req)에는 상기 전용 하드웨어에 의해 실행이 불가능한 연산들이 포함되며, 상기 전용 하드웨어에 의해 실행 불가능한 연산들을 실행할 하나 이상의 일반 하드웨어들이 경로 선택기(141)에 의해 선택될 수 있다.
도 3은 도 1의 메모리 할당기(142)의 일 동작 예를 나타내는 블록도이다.
도 1 및 도 3을 참조하면, 메모리 할당기(142)는 전술한 뉴럴 네트워크를 분석한 정보(Info_graph) 및 경로 정보(Info_path)를 이용하여 서브 리퀘스트들(N sub_Req) 각각에 메모리를 할당할 수 있다. 일 예로서, 메모리 할당기(142)는 리퀘스트(Req)의 입력 및 출력을 위한 메모리 정보(Info_mem)로부터, 상기한 정보들에 기반하여 서브 리퀘스트들(N sub_Req) 각각의 입력 및 출력을 위한 메모리 정보를 생성할 수 있다. 상기 메모리 할당기(142)로부터 생성되는 정보는 다수의 서브 리퀘스트들(N sub_Req)에 대해 할당된 메모리를 나타내는 점에서 메모리 리스트(Memory List)로 지칭될 수 있다.
일 실시예에 따라, 제1 서브 리퀘스트를 전용 하드웨어가 실행하고, 제2 서브 리퀘스트를 일반 하드웨어가 실행하는 것으로 가정할 때, 메모리 리스트(Memory List)를 참조함에 의해 전용 하드웨어는 제1 서브 리퀘스트의 실행 결과를 메모리 리스트(Memory List)가 지정하는 메모리에 저장할 수 있다. 또한, 일반 하드웨어는 메모리 리스트(Memory List)로부터 제2 서브 리퀘스트의 입력 및 출력을 위해 지정된 메모리들을 판단하고, 제1 서브 리퀘스트의 실행 결과를 독출하여 제2 서브 리퀘스트를 실행하고, 제2 서브 리퀘스트의 실행 결과를 메모리 리스트(Memory List)가 지정하는 메모리에 저장할 수 있다.
일 실시예에 따라, 메모리 할당기(142)는 링크 정보(Link_Info(142_1))를 저장할 수 있으며, 링크 정보(Link_Info(142_1))는 각각의 하드웨어가 다양한 종류의 메모리들을 억세스하기 위한 필요로 되는 메모리 코스트 정보를 포함할 수 있다. 일 예로서, 각각의 하드웨어는 다양한 종류의 메모리들에 링크되어 억세스 동작을 수행할 수 있으며, 상기 다양한 종류의 메모리들을 억세스함에 있어서 그 메모리 성능이 다를 수 있다. 예컨대, 억세스 동작에 있어서 그 레이턴시가 작을수록 연산 성능에 유리하며, 레이턴시가 작은 메모리에 대한 억세스는 메모리 코스트가 작은 반면에, 레이턴시가 큰 메모리에 대한 억세스는 메모리 코스트가 클 수 있다. 메모리 할당기(142)는 서브 리퀘스트들(N sub_Req) 각각에 메모리를 할당함에 있어서, 서브 리퀘스트들(N sub_Req) 각각을 실행하는 하드웨어와 링크 정보(Link_Info(142_1))를 참조하여 각각의 서브 리퀘스트들(N sub_Req)에 최적화된 메모리를 선택하고 할당할 수 있다.
전술한 본 발명의 예시적인 실시예의 뉴럴 네트워크 시스템에 따르면, 뉴럴 네트워크 정보를 기초로 하여 뉴럴 네트워크 연산을 최적화하여 실행할 수 있으며, 시스템 관점에서는 전용 하드웨어가 뉴럴 네트워크의 모든 연산을 가속할 수 있는 것으로 인식될 수 있도록 한다. 또한, 일반 하드웨어와 전용 하드웨어의 조합에 의해 뉴럴 네트워크의 연산들을 실행하더라도 메모리 카피에 기인하는 성능 저하를 최소화할 수 있다.
도 4는 본 발명의 예시적인 실시예에 따른 뉴럴 네트워크 시스템을 포함하는 전자 시스템의 구현 예를 나타내는 개념도이다. 도 4에는 뉴럴 네트워크 시스템의 실행을 위해 전자 시스템(200)에 채용된 소프트웨어 구조가 예시되며, 그 일 예로서 안드로이드 플랫폼이 도시되나 본 발명의 실시예들은 특정 종류의 플랫폼에 한정되지는 않는다. 예컨대, 본 발명의 실시예들은 애플의 iOS, RIM사의 블랙베리 OS, 또는 마이크로소프트의 윈도폰 등 임의의 운영 체제에 의해 구동되는 전자 시스템에도 적용될 수 있을 것이다.
뉴럴 네트워크 시스템을 동작하기 위한 소프트웨어 구조는 어플리케이션 레벨(210) 및 시스템 레벨(220, 230)을 포함할 수 있다. 또한, 전자 시스템(200)은 전술한 실시예들에 따른 연산 할당을 관리하는 통합 드라이버(240)와 전자 시스템(200)에 구비되는 다양한 종류의 하드웨어들을 구동하기 위한 유저 드라이버들(251 ~ 256)을 포함할 수 있다. 전자 시스템(200)의 소프트웨어 구조는 통합 드라이버(240)가 구동하는 전용 하드웨어(예컨대, NPU)가 뉴럴 네트워크의 전체 연산을 실행하는 것으로 판단할 수 있으며, 이에 따라 통합 드라이버(240)는 NPU 하드웨어 추상화 계층(hardware abstraction layer, HAL)으로 지칭될 수도 있을 것이다. 시스템 레벨(230)의 하드웨어 추상화 계층(HAL)은 유저 드라이버 API를 통해 뉴럴 네트워크 연산을 위한 리퀘스트를 통합 드라이버(240)로 제공할 수 있다.
도 4를 참조하면, 어플리케이션 레벨(210)은 뉴럴 네트워크 기반의 리퀘스트를 발행하는 어플리케이션으로서 딥 러닝 어플리케이션을 포함할 수 있으며, 또한 뉴럴 네트워크 API(NN API)를 통하여 딥 러닝 어플리케이션과 그 하위 레벨 사이의 인터페이스를 제공하는 딥 러닝 프레임워크(Deep Learning Framework)를 포함할 수 있다. 또한, 시스템 레벨(220, 230)은 하나 이상의 가상 머신(VM)을 통해 뉴럴 네트워크 런타임 상에서 딥 러닝 어플리케이션을 구동시킬 수 있으며, 또한 시스템 레벨(220, 230)의 하드웨어 추상화 계층(hardware abstraction layer, HAL)은 유저 드라이버 API를 통해 하드웨어 인터페이스를 제공할 수 있다.
한편, 통합 드라이버(240)는 다양한 종류의 하드웨어들에 대응하여 배치되는 유저 드라이버들(251 ~ 256)에 대해 공통한 인터페이스를 제공할 수 있다. 또한, 통합 드라이버(240)에는 전술한 실시예에서의 연산 할당 관리 기능이 채용될 수 있으며, 뉴럴 네트워크 기반의 리퀘스트에 대해 전술한 연산 할당 관리 동작에 기반하여 리퀘스트를 다수의 서브 리퀘스트들로 분할할 수 있으며, 또한 분할된 서브 리퀘스트들을 유저 드라이버들(251 ~ 256)을 통해 적어도 두 개의 하드웨어들에 할당함으로써 서브 리퀘스트들의 실행을 스케쥴링할 수 있다.
유저 드라이버들(251 ~ 256) 각각은 대응하는 실제 하드웨어의 구동을 제어하고, 도 4에는 그 일 예로서 NPU 유저 드라이버(251), GPU 유저 드라이버(252), DSP 유저 드라이버(253), CPU 유저 드라이버(254), DMA(Direct Memory Access) 유저 드라이버(255) 및 기타 다른 하드웨어에 대한 유저 드라이버(256) 등이 예시된다. 그러나, 본 발명의 실시예는 이에 국한될 필요 없이, 연산 기능을 수행하는 다이렉트 메모리 억세스(DMA) 드라이버 및 멀티미디어 드라이버 등 다양한 다른 종류의 하드웨어들을 관리하기 위한 드라이버들이 전자 시스템(200)에 더 구비되고, 상기 추가의 드라이버들이 통합 드라이버(240)에 의해 더 관리될 수도 있을 것이다.
도 5는 본 발명의 예시적인 실시예에 따른 연산 할당 매니저의 구성의 일 예를 나타내는 블록도이다.
도 5를 참조하면, 연산 할당 매니저(300)은 뉴럴 네트워크 분석기(310), 컨텍스트 매니저(320), 컴퓨팅 리소스 모듈(330), 경로 선택기(340) 및 메모리 할당기(350)를 포함할 수 있다. 또한, 메모리 할당기(350)는 하드웨어들 각각의 메모리들에 대한 메모리 코스트 정보를 갖는 링크 정보(Link_Info(351))를 포함할 수 있다.
뉴럴 네트워크 분석기(310)는 입력 뉴럴 네트워크에 포함되는 전체 연산들에 대한 정보를 분석할 수 있으며, 또한 각각의 하드웨어에 의해 수행이 가능한 연산의 종류를 분석할 수 있다. 일 예로서, 뉴럴 네트워크 분석기(310)는 입력 뉴럴 네트워크의 전체적인 연산 구조에 관련된 정보와 상기 연산을 지원할 수 있는 하드웨어를 나타내는 정보 등을 포함하는 연산 그래프 정보를 생성할 수 있다.
경로 선택기(340)는 상기 뉴럴 네트워크 분석기(310)로부터의 분석 결과를 기초로 하여 뉴럴 네트워크 처리를 위한 다수의 연산들을 포함하는 리퀘스트를 다수의 서브 리퀘스트들로 분할하고, 분할된 서브 리퀘스트들을 실행할 다수의 하드웨어들을 선택할 수 있다. 경로 선택기(340)는 연산들을 수행할 하드웨어들을 할당하는 점에서 리소스 관리 기능을 수행하는 것으로 설명될 수 있다.
일 예로서, 경로 선택기(340)는 뉴럴 네트워크 분석기(310)의 분석 결과와 함께 컴퓨팅 리소스(Info_resource) 정보 및 컴퓨팅 컨텍스트(Info_context) 정보에 기초하여 전용 하드웨어에 의해 실행 가능한 연산들(제1 그룹의 연산들)과 전용 하드웨어에 의해 실행 불가능한 연산들(제2 그룹의 연산들)을 판단할 수 있으며, 상기 판단 결과에 기반하여 서브 리퀘스트들로의 분할 동작을 수행할 수 있다. 또한, 경로 선택기(340)는 제1 그룹의 연산들을 포함하는 서브 리퀘스트를 상기 전용 하드웨어에 할당하고, 상기 전용 하드웨어에 의해 지원되지 않는 제2 그룹의 연산들을 포함하는 서브 리퀘스트를 할당할 하나 이상의 일반 하드웨어들을 선택할 수 있다. 또한, 하드웨어에 대한 할당 동작에 있어서, 컴퓨팅 리소스(Info_resource) 정보 및 컴퓨팅 컨텍스트(Info_context) 정보에 기초하여 다수의 하드웨어들 중 상기 서브 리퀘스트들의 수행에 최적화된 하드웨어들이 선택될 수 있다.
컨텍스트 매니저(320)는 전술한 컴퓨팅 컨텍스트(Info_context) 정보를 생성하고, 컴퓨팅 리소스 모듈(330)은 컴퓨팅 리소스(Info_resource) 정보를 생성할 수 있다. 전술한 실시예에서와 같이, 컴퓨팅 리소스(Info_resource) 정보는 다양한 하드웨어들에 관련된 스태틱 정보들로서 컨벌루션/가산/최대값 등의 연산 방식 정보, 커널 구조 정보, 데이터 플로우(data flow) 정보 및 하드웨어의 성능 및 파워 소모 등의 용량(Capacity) 등 다양한 종류의 정보들을 포함할 수 있다. 또한, 컴퓨팅 컨텍스트(Info_context) 정보는 리소스에 관련된 다이나믹 정보로서, 컴퓨팅 리소스 상태의 변동, 파워/온도 정보, 버스(BUS)/메모리/스토리지 상태, 어플리케이션 종류 및 어플리케이션의 라이프 사이클(Lifecycle) 등 다양한 종류의 정보들을 포함할 수 있다. 컨텍스트 매니저(320) 및 컴퓨팅 리소스 모듈(330)은 전술한 다양한 정보들을 경로 선택기(340)로 제공할 수 있으며, 본 발명의 실시예들에 따른 컴퓨팅 컨텍스트(Info_context) 정보 및 컴퓨팅 리소스(Info_resource) 정보는 전술한 예에 한정될 필요가 없이 다양한 종류의 다른 정보들을 더 포함하여도 무방하다.
메모리 할당기(350)는 경로 선택기(340)에 의해 분할된 서브 리퀘스트들의 입출력 정보를 저장하기 위한 메모리를 선택하고 이를 각각의 서브 리퀘스트에 할당할 수 있다. 각각의 하드웨어는 하나 이상의 메모리들을 억세스할 수 있으며, 메모리들을 억세스하기 위해 필요로 되는 메모리 코스트는 서로 다른 값을 가질 수 있다. 메모리 할당기(350)는 경로 선택기(340)에 의해 분할된 서브 리퀘스트들의 정보 및 메모리 코스트 정보를 갖는 링크 정보(Link_Info(351))를 참조하여 상기 서브 리퀘스트들 각각에 대해 메모리를 할당할 수 있다. 일 예로서, 메모리 할당기(350)는 각각의 서브 리퀘스트에 대해, 입력이 저장되는 메모리의 위치 및 출력이 저장될 메모리의 위치를 나타내는 정보를 포함하는 메모리 리스트를 생성할 수 있다.
일 예로, 리퀘스트가 제1 내지 제3 서브 리퀘스트들로 분할되고, 제1 내지 제3 서브 리퀘스트들의 연산이 순차적으로 수행되며, 전용 하드웨어에 의해 지원되지 않는 연산들을 포함하는 제2 서브 리퀘스트가 일반 하드웨어에 의해 실행되는 경우를 가정하면 다음과 같다. 전용 하드웨어는 메모리 리스트가 지시하는 메모리로부터 입력을 수신하고, 수신된 입력을 이용하여 제1 서브 리퀘스트의 연산 결과를 생성하며, 연산 결과로서의 출력을 메모리 리스트가 지시하는 메모리(예컨대, 제1 메모리)에 저장할 수 있다. 또한, 일반 하드웨어는 메모리 리스트가 지시하는 제1 메모리로부터 입력(또는, 제1 서브 리퀘스트의 연산 결과)을 수신하고, 수신된 입력을 이용하여 제2 서브 리퀘스트의 연산 결과를 생성하며, 연산 결과로서의 출력을 메모리 리스트가 지시하는 메모리(예컨대, 제2 메모리)에 저장할 수 있다. 이와 유사하게, 상기 전용 하드웨어는 제2 메모리를 억세스하여 입력을 수신하고, 제3 서브 리퀘스트의 연산 결과를 메모리 리스트가 지시하는 메모리(예컨대, 제3 메모리)에 저장할 수 있다.
한편, 제1 서브 리퀘스트와 제3 서브 리퀘스트가 동일한 전용 하드웨어에 의해 실행됨에 따라 전술한 제1 메모리와 제2 메모리는 동일한 메모리에 해당할 수있다. 만약, 제1 서브 리퀘스트가 제1 전용 하드웨어에 의해 실행되고, 제3 서브 리퀘스트가 서로 다른 제2 전용 하드웨어에 의해 실행되는 경우, 제1 전용 하드웨어와 상기 일반 하드웨어 사이에서 최소의 메모리 코스트를 제공하는 메모리와, 제2 전용 하드웨어와 상기 일반 하드웨어 사이에서 최소의 메모리 코스트를 제공하는 메모리는 서로 다를 수 있다. 즉, 제1 메모리와 제2 메모리는 서로 다른 종류의 메모리일 수도 있다.
도 6a,b 및 도 7은 본 발명의 예시적인 실시예들에 따른 뉴럴 네트워크 시스템의 동작방법을 나타내는 플로우차트이다.
도 6a를 참조하면, 전자 시스템에서 다양한 종류들의 어플리케이션들(APP.A ~ APP.C)이 실행되고, 상기 어플리케이션들에 의해 뉴럴 네트워크 연산을 위한 리퀘스트가 발행될 수 있다. 예컨대, 어플리케이션들(APP.A ~ APP.C) 각각으로부터 뉴럴 네트워크 연산에 관련된 각종 데이터들(DATA_A ~ DATA_C)이 전술한 실시예들에서의 뉴럴 네트워크 분석기로 제공될 수 있다.
뉴럴 네트워크 분석기는 어플리케이션들(APP.A ~ APP.C)로부터 제공된 데이터들(DATA_A ~ DATA_C)을 기반으로 하여 연산들의 전체적인 구조를 분석하고 그 결과를 제공할 수 있다(S11). 예컨대, 뉴럴 네트워크 분석기는 각각의 어플리케이션으로부터의 데이터에 기반하여 연산들의 전체 구조를 나타내는 그래프 정보를 생성함과 함께(S12), 하드웨어들 각각에 의해 실행 가능한 연산들을 나타내는 정보를 제공할 수 있다. 도 6b는 뉴럴 네트워크 분석기에 의해 생성될 수 있는 그래프 정보의 일 예를 나타내고, 상기 그래프 정보를 통하여 뉴럴 네트워크 처리를 위한 전체적인 연산 구조가 판단될 수 있다.
상기와 같은 뉴럴 네트워크 분석 결과로서의 그래프 정보는 경로 선택기로 제공될 수 있으며, 경로 선택기는 전술한 실시예들에 따라 다수의 연산들을 포함하는 다수의 서브 리퀘스트들로 분할하고, 분할된 서브 리퀘스트들을 실행할 다수의 하드웨어들을 선택할 수 있다(S13). 예컨대, 경로 선택기는 뉴럴 네트워크 분석기로부터의 정보와, 다수의 하드웨어들에 대한 스태틱 및 다이나믹 정보에 기반하여 분할 동작을 수행하고, 다수의 하드웨어들에 의한 서브 리퀘스트들의 실행을 스케줄링할 수 있다. 이에 따라 경로 선택기는 서브 리퀘스트들들을 다수의 하드웨어들에 할당한 연산 경로 정보를 생성할 수 있다(S14).
한편, 메모리 할당기는 전술한 뉴럴 네트워크 분석기로부터의 그래프 정보와 경로 선택기로부터의 연산 경로 정보를 이용하여 메모리 할당 동작을 수행할 수 있다(S15). 예컨대, 전술한 실시예들에 따라 메모리 할당기는 다양한 종류의 하드웨어들 및 메모리들 사이의 메모리 코스트 정보를 갖는 링크 정보를 포함하며, 상기 정보들을 이용하여 각각의 서브 리퀘스트에 대응하는 메모리 정보를 포함하는 메모리 리스트를 생성할 수 있다(S16). 상기와 같은 동작에 따라, 다수의 서브 리퀘스트들은 각각의 연산에 최적화된 하드웨어로 할당되고, 또한 각각의 서브 리퀘스트를 실행함에 있어서 소요되는 메모리 코스트를 최소화할 수 있다. 또한, 상기와 같은 실시예에 따르면, 다수의 하드웨어들을 통해 연산 실행을 이동시킴에 있어서 데이터 카피를 수행할 필요가 없이, 하드웨어들에 의해 공유될 수 있는 메모리에 연산 결과를 저장함으로써 메모리 코스트를 최소화할 수 있다.
한편, 도 7은 메모리 할당 동작에 기반하여 선택되는 메모리의 일 예를 나타낸다.
도 7을 참조하면, 전술한 분할 동작을 통해 제1 내지 제3 서브 리퀘스트들이 생성될 수 있으며, 제1 내지 제3 서브 리퀘스트들은 순차적으로 수행될 수 있다. 또한, 제1 서브 리퀘스트는 제1 일반 하드웨어에 할당되고, 제2 서브 리퀘스트는 전용 하드웨어에 할당되며, 제3 서브 리퀘스트는 제2 일반 하드웨어에 할당될 수 있다.
메모리 할당기는 링크 정보를 참조함에 의해 제1 일반 하드웨어와 전용 하드웨어 사이에서의 다양한 메모리들에 대해 메모리 코스트 정보를 확인하고(S21), 확인 결과에 따라 최소의 메모리 코스트를 갖는 제1 메모리를 판단하며, 제1 서브 리퀘스트에 상기 제1 메모리를 할당할 수 있다(S22). 이와 유사하게, 메모리 할당기는 링크 정보를 참조함에 의해 상기 전용 하드웨어와 제2 일반 하드웨어 사이에서의 메모리 코스트 정보를 확인하고(S23), 확인 결과에 따라 최소의 메모리 코스트를 갖는 제2 메모리를 판단하며, 제2 서브 리퀘스트에 상기 제2 메모리를 할당할 수 있다(S24).
상기와 같은 할당 동작이 완료되면 서브 리퀘스트들에 대한 실행이 시작되며, 제1 일반 하드웨어는 제1 서브 리퀘스트의 연산 결과를 상기 할당된 제1 메모리에 저장할 수 있다(S25). 또한, 상기 전용 하드웨어는 제1 메모리로부터 연산 결과를 독출하고 이를 이용하여 제2 서브 리퀘스트를 실행하며, 제2 서브 리퀘스트의 연산 결과를 상기 할당된 제2 메모리에 저장할 수 있다(S26). 상기한 제2 일반 하드웨어는 제2 메모리에 저장된 연산 결과를 이용하여 제3 서브 리퀘스트를 실행할 수 있을 것이다.
도 8은 본 발명의 예시적인 실시예에 따른 뉴럴 네트워크 시스템에서 경로 선택기의 일 동작 예를 나타내는 도면이다.
도 8을 참조하면, 뉴럴 네트워크의 리퀘스트는 소정의 데이터 구조에 따라 다양한 정보(예컨대, 리퀘스트 정보)를 포함할 수 있으며, 일 예로서 상기 리퀘스트 정보는 뉴럴 네트워크 모델 정보(model_info), 뉴럴 네트워크 모델의 사이즈 정보(size_model_info), 입력 메모리 정보(memory input) 및 출력 메모리 정보(memory output)를 포함할 수 있다. 예컨대, 상기 뉴럴 네트워크의 리퀘스트를 실행함에 있어서, 뉴럴 네트워크의 입력 데이터는 입력 메모리 정보(memory input)에서 지정되는 메모리로부터 제공되고, 뉴럴 네트워크의 출력 데이터는 출력 메모리 정보(memory output)에서 지정되는 메모리에 저장될 수 있다.
전술한 경로 선택기의 연산 경로 선택에 따라, 상기 리퀘스트 정보로부터 다수의 서브 리퀘스트 정보들이 생성될 수 있다. 만약, 상기 리퀘스트가 N 개의 서브 리퀘스트들로 분류되는 경우, 상기 리퀘스트 정보로부터 N 개의 서브 리퀘스트 정보들이 생성될 수 있다. 일 예로서, 상기 서브 리퀘스트 정보들의 데이터 구조는 전술한 리퀘스트 정보의 데이터 구조와 동일할 수 있으며, 데이터 구조에 포함되는 정보의 값은 일부 변동될 수 있다. 예컨대, 서브 리퀘스트 정보에서 뉴럴 네트워크 모델 정보(model_info)는 리퀘스트 정보의 뉴럴 네트워크 모델 정보(model_info)와 동일할 수 있다. 반면에, 전술한 서브 리퀘스트로의 분할 동작, 메모리 할당 동작 등에 기반하여, 서브 리퀘스트 정보에서 뉴럴 네트워크 모델의 사이즈 정보(size_model_info), 입력 메모리 정보(memory input) 및 출력 메모리 정보(memory output)는 상기 리퀘스트 정보의 내용과 상이할 수 있다.
도 9는 도 8에서의 경로 선택기에 기반하여 서브 리퀘스트들에 하드웨어들이 할당된 예를 나타내는 도면이다.
도 9를 참조하면, 뉴럴 네트워크에 따른 리퀘스트는 리퀘스트 정보에서 지정하는 메모리로부터 독출되는 입력 데이터를 이용하여 다수 회(예컨대, 6 회)의 연산들을 수행하고, 그 수행 결과가 리퀘스트 정보에서 지정하는 메모리에 저장될 수 있다. 이 때, 상기 리퀘스트는 3 개의 서브 리퀘스트들로 분할되고, 제1 서브 리퀘스트에 포함되는 제1 및 제2 연산들(op1, op2)은 일반 하드웨어로서 GPU가 실행하고, 제2 서브 리퀘스트에 포함되는 제3 및 제4 연산들(op3, op4)은 전용 하드웨어로서 NPU가 실행하며, 제3 서브 리퀘스트에 포함되는 제5 및 제6 연산들(op5, op6)은 상기 GPU가 실행하는 것으로 가정된다.
한편, 도 9에 도시된 바와 같은 뉴럴 네트워크 분석기로부터의 그래프 정보와 경로 선택기로부터의 경로 선택 정보는 전술한 실시예들에 따라 메모리 할당기로 제공될 수 있으며, 메모리 할당기는 GPU가 실행한 제1 서브 리퀘스트의 연산 결과를 저장할 메모리와, NPU가 실행한 제2 서브 리퀘스트의 연산 결과를 저장할 메모리를 선택할 수 있을 것이다.
도 10a,b,c는 본 발명의 실시예들에 따른 메모리 할당 동작의 일 예를 나타내는 도면이다.
도 10a는 뉴럴 네트워크 시스템을 포함하는 전자 시스템 내의 메모리들의 연결 상태를 나타낸다. 예컨대, 뉴럴 네트워크 연산을 수행할 수 있는 다양한 종류의 하드웨어들(예컨대, CPU, GPU, NPU, DSP, DMA, HW 등)이 전자 시스템 내에 구비되고, 다양한 종류의 메모리들(L2 캐쉬, 시스템 캐쉬, DRAM 및 SRAM 등)이 다수의 하드웨어들에 의해 억세스될 수 있다. 도 10a에 도시된 연결 구조는 하나의 구현 예에 불과한 것으로서, 전자 시스템 내에서 메모리들은 다양한 구조에 따라 연결될 수 있으며, 이에 따라 메모리 코스트 정보는 시스템 별로 다르게 설정될 수 있다.
한편, 도 10b은 메모리 할당기가 포함하는 링크 정보의 일 예를 나타내며, 도 10c는 링크 정보의 값의 일 예를 나타낸다. 도 10b를 참조하면, 메모리 할당기는 다수의 하드웨어들 및 다수의 메모리들에 따라 다수의 링크 정보들을 포함할 수 있으며, 각각의 링크 정보는 하드웨어 정보(master HW), 상기 하드웨어에 링크된 메모리 정보(linked_meme) 및 상기 하드웨어와 메모리 사이의 코스트 정보(link_cost)를 포함할 수 있다. 전술한 바와 같이, 억세스에 소요되는 메모리 코스트는 메모리 사이즈, 레이턴시, 대역폭 및 소모 파워 등 다양한 요소들을 포함할 수 있으며, 코스트 정보(link_cost)는 상기 다양한 요소들의 조합에 기반하여 산출된 값일 수 있다. 또는, 코스트 정보(link_cost)는 상기 다양한 요소들 각각에 대응하여 별도의 정보를 갖도록 링크 정보가 구현될 수도 있을 것이다.
한편, 도 10c는 링크 정보의 값의 다양한 예들을 나타내며, 도 10c에 도시된 링크 정보의 값은 도 10a에 도시된 구조와는 무관하게 임의적으로 도시한 값에 해당한다. 도 10c를 참조하면, 메모리 연결 구조에 따라 하드웨어는 다양한 종류의 메모리들에 대해 서로 다른 메모리 코스트를 가질 수 있다. 일 예로서 도 10c에서는 메모리 코스트 값이 작을수록 파워 소모가 적거나 레이턴시가 작은 억세스에 유리한 메모리에 해당하고, 반대로 메모리 코스트 값이 클수록 억세스에 불리한 메모리를 나타낸다.
일반 하드웨어에 해당하는 CPU를 참조하면, CPU와 GPU 가 버스를 통해 직접 연결됨에 따라 CPU와 GPU 사이에서 데이터가 직접 송수신될 수 있으며, 이 경우 CPU는 GPU에 대해 가장 작은 메모리 코스트(예컨대, 0)를 가질 수 있다. 예컨대, CPU는 GPU 내의 버퍼(또는, 캐쉬)를 억세스하거나 GPU는 CPU 내의 버퍼를 억세스할 수 있음에 따라, CPU와 GPU 사이에서 메모리 코스트가 최소 값을 가질 수 있다. 한편, CPU는 시스템 캐쉬에 대해서는 메모리 코스트가 1의 값을 가지고, DRAM에 대해서는 메모리 코스트가 3의 값을 가질 수 있다. 즉, CPU는 시스템 캐쉬나 DRAM을 억세스하는 것에 비해 GPU 와의 사이에서 데이터를 직접 통신하는 것이 메모리 코스트 측면에서 유리하다.
이와 유사하게, GPU는 CPU에 대해 가장 작은 메모리 코스트(예컨대, 0)를 가질 수 있으며, 시스템 캐쉬에 대해서는 메모리 코스트가 1의 값을 가지고, 고대역폭 메모리(High Bandwidth Memory, HBM)에 대해서는 메모리 코스트가 2의 값을 가지고, DRAM에 대해서는 메모리 코스트가 3의 값을 가질 수 있다. 또한, 전용 하드웨어로서 NPU는 일반 하드웨어로서 DSP에 대해 메모리 코스트가 0의 값을 가지고, SRAM에 대해서는 메모리 코스트가 1의 값을 가지며, DRAM에 대해서는 메모리 코스트가 3의 값을 가질 수 있다. 또한, DSP는 NPU에 대해 메모리 코스트가 0의 값을 가지고, SRAM에 대해서는 메모리 코스트가 1의 값을 가질 수 있다.
메모리 할당기는 상기와 같이 구현될 수 있는 링크 정보들을 이용하여 각각의 서브 리퀘스트에 대해 최적화된 메모리를 할당할 수 있으며, 만약 어느 하나의 리퀘스트들이 3 개의 서브 리퀘스트들로 분할되고, 상기 3 개의 서브 리퀘스트들이 NPU, DSP 및 NPU에 의해 순차적으로 수행된다면, NPU와 DSP 사이에서 최소의 메모리 코스트를 갖는 메모리가 선택될 수 있다. 예컨대, 도 10c의 예에서 NPU 내의 버퍼를 DSP가 억세스할 수 있는 경우, NPU 에서의 연산 결과는 NPU 내부에 구비되는 버퍼에 저장될 수 있으며, 또한 DSP에서의 연산 결과는 NPU 내부에 구비되는 버퍼에 저장될 수 있다.
도 10c에는 메모리의 종류로서 일부만이 예시되었으나, 본 발명의 실시예는 이에 국한될 필요가 없다. 예컨대, 다른 다양한 종류의 하드웨어들과 Storage, remote storage, RDMA, Memory server, MemCache 등 다른 다양한 종류의 메모리들 사이에서의 메모리 코스트 정보가 메모리 할당기에 더 포함될 수도 있을 것이다.
도 11은 본 발명의 예시적인 실시예들에 따라 연산 할당 관리 동작이 완료된 후 뉴럴 네트워크가 실행되는 예를 나타내는 도면이다.
도 11을 참조하면, 뉴럴 네트워크 처리를 위한 하나의 리퀘스트는 다수 개(예컨대, 3 개)의 서브 리퀘스트들(Sub_Req 1 ~ Sub_Req 3)로 분할되고, 제1 서브 리퀘스트는 리퀘스트가 지정한 메모리로부터 독출된 입력에 기초하여 GPU에 의해 실행되고, 그 연산 결과(예컨대, 제2 연산(op2)의 결과)가 GPU와 NPU 사이에서 상대적으로 작은 메모리 코스트를 갖는 시스템 캐쉬에 저장될 수 있다. 또한, 제2 서브 리퀘스트는 시스템 캐쉬에 저장된 데이터를 기초로 NPU에 의해 실행되며, 그 연산 결과(예컨대, 제4 연산(op4)의 결과)가 상기 시스템 캐쉬에 저장될 수 있다. 또한, 제3 서브 리퀘스트는 시스템 캐쉬에 저장된 데이터를 기초로 GPU에 의해 실행되고, 최종 연산 결과(예컨대, 제6 연산(op6)의 결과)는 리퀘스트에서 지정된 메모리에 저장될 수 있다.
도 12는 본 발명의 변형 가능한 실시예에 따른 뉴럴 네트워크 시스템의 동작 예를 나타내는 개념도이다. 도 12의 예에서는 다이나믹 정보를 이용하여 실시간으로 서브 리퀘스트를 실행하는 하드웨어를 변경하는 예가 도시된다.
도 12를 참조하면, 다수의 연산들(op1 ~ op6)을 포함하는 리퀘스트가 다수의 서브 리퀘스트들로 분할될 수 있으며, 일 예로서 리퀘스트는 제1 및 제2 연산들(op1, op2)을 포함하는 제1 서브 리퀘스트와, 제3 및 제4 연산들(op3, op4)을 포함하는 제2 서브 리퀘스트와, 제5 및 제6 연산들(op5, op6)을 포함하는 제3 서브 리퀘스트로 분류될 수 있으며, 제1 및 제3 서브 리퀘스트들은 일반 하드웨어인 GPU에 할당되고, 제2 서브 리퀘스트는 전용 하드웨어인 NPU에 할당되는 것으로 가정된다. 또한, 메모리 할당 동작을 통해 시스템 캐쉬가 선택됨에 따라, 제1 서브 리퀘스트 및 제2 서브 리퀘스트 각각의 연산 결과가 시스템 캐쉬에 저장되는 것으로 가정된다.
일 실시예에 따라, 전용 하드웨어로서 NPU는 일반 하드웨어로서 DSP와의 사이에서 최소의 메모리 코스트를 갖는 것으로 가정될 수 있다. 반면에, 연산 할당 매니저(또는, 경로 선택기)는 스태틱 정보 및 다이나믹 정보 등 다양한 정보들을 통해 연산을 수행할 하드웨어들의 경로를 선택할 수 있으며, NPU와의 사이에서 최소의 메모리 코스트를 갖는 DSP가 카메라 등의 다른 장치에 의해 선점되어 사용됨에 따라 DSP 대신에 다른 일반 하드웨어(예컨대, GPU)가 할당될 수 있다.
상기 서브 리퀘스트들에 따른 연산을 실행하는 도중에, DSP가 다른 장치에 의해 사용되는 동작이 종료됨에 따라 연산 할당 매니저는 제3 서브 리퀘스트가 상기 DSP에 의해 실행되는 것이 유리함을 판단할 수 있다. 또한, NPU와 DSP 사이에서 최소의 메모리 코스트를 갖는 메모리가 판단될 수 있으며, NPU와 DSP 사이에 공유되는 버퍼가 존재함이 판단됨에 따라 상기 버퍼가 제2 서브 리퀘스트의 연산 결과(또는, 제3 서브 리퀘스트의 입력 데이터)가 위치하는 메모리로 선택될 수 있다.
상기와 같은 연산 할당 매니저의 실시간 할당 동작에 따라, NPU는 제3 및 제4 연산들(op3, op4)을 포함하는 제2 서브 리퀘스트를 실행하고 그 연산 결과를 버퍼(예컨대, DSP 내에 구비되는 버퍼)에 저장할 수 있다. 또한, DSP는 그 내부의 버퍼에 저장된 연산 결과를 입력으로 하여 제5 및 제6 연산들(op5, op6)을 포함하는 제3 서브 리퀘스트를 실행하고, 그 연산 결과를 생성할 수 있다.
한편, 도 12에 도시된 실시예는 다음과 같은 동작으로도 설명될 수 있다.
예컨대, NPU와의 사이에서 최소의 메모리 코스트를 갖는 데이터 억세스를 수행할 수 있는 GPU가 선택됨에 따라, 제3 서브 리퀘스트가 GPU에 할당될 수 있다. 연산 할당 매니저는 다이나믹 정보에 기반하여 GPU에 그래픽 프로세싱 등 다른 작업이 할당되었음이 판단될 수 있으며, 이에 따라 연산 할당 매니저는 다른 나머지 일반 하드웨어들 중 상대적으로 작은(또는, 가장 작은) 메모리 코스트를 갖는 DSP를 선택하고 이를 상기 제3 서브 리퀘스트에 할당할 수 있다. 이에 따라, DSP는 메모리 할당기에 의해 새로이 할당된 메모리에 저장된 제2 서브 리퀘스트의 연산 결과를 이용하여 상기 제3 서브 리퀘스트를 실행할 수 있다.
도 13a,b는 본 발명의 다양한 실시예들에 따른 연산 할당 관리 동작을 나타내는 블록도이다. 도 13a에서는 전용 하드웨어(예컨대, NPU)가 서브 리퀘스트를 실행함에 있어서 입력과 출력 과정에서 서로 다른 메모리를 억세스하는 예가 도시되고, 도 13b에서는 전용 하드웨어가 다수의 서브 리퀘스트들을 실행함에 있어서 서브 리퀘스트 별로 서로 다른 메모리를 억세스하는 예가 도시된다.
도 13a를 참조하면, 제1 일반 하드웨어로서 CPU는 제1 서브 리퀘스트(Sub_Req 1)를 실행하고, 순차적으로 NPU가 제2 서브 리퀘스트(Sub_Req 2)를 실행하며, 제2 일반 하드웨어로서 GPU는 제3 서브 리퀘스트(Sub_Req 3)를 실행할 수 있다. 이 때, NPU와 CPU와의 사이에서 제1 메모리(Mem 1)가 최소의 메모리 코스트를 가지며, NPU와 GPU와의 사이에서 제2 메모리(Mem 2)가 최소의 메모리 코스트를 가질 수 있다. 이에 따라, NPU는 제2 서브 리퀘스트(Sub_Req 2)의 실행을 위한 입력을 제1 메모리(Mem 1)로부터 억세스하고, NPU는 제2 서브 리퀘스트(Sub_Req 2)의 실행 결과를 제1 메모리(Mem 1)와는 서로 다른 제2 메모리(Mem 2)에 저장할 수 있다.
한편, 도 13b를 참조하면, 다수의 서브 리퀘스트들 중에서 NPU는 두 개 이상의 서브 리퀘스트들을 할당받고 이를 실행할 수 있으며, 일 예로 NPU가 제1 서브 리퀘스트(Sub_Req 1) 및 제(A-1) 서브 리퀘스트(Sub_Req A-1)을 실행하는 예가 도시된다. 또한, NPU의 제1 서브 리퀘스트(Sub_Req 1)의 연산 결과는 CPU로 제공될 수 있고, 제(A-1) 서브 리퀘스트(Sub_Req A-1)의 연산 결과는 GPU로 제공될 수 있다.
NPU는 각각의 서브 리퀘스트를 실행함에 있어서, 서로 다른 메모리로부터 연산 입력을 억세스하고, 서로 다른 종류의 메모리에 연산 결과를 저장할 수 있다. 예컨대, NPU와 CPU와의 사이에서 제1 메모리(Mem 1)가 최소의 메모리 코스트를 가지며, NPU와 GPU와의 사이에서 제2 메모리(Mem 2)가 최소의 메모리 코스트를 가짐에 따라, NPU는 제1 서브 리퀘스트(Sub_Req 1)의 연산 결과를 제1 메모리(Mem 1)에 저장하는 반면에, NPU는 제(A-1) 서브 리퀘스트(Sub_Req A-1)의 연산 결과를 제2 메모리(Mem 2)에 저장할 수 있다.
도 14는 본 발명의 예시적인 실시예에 따른 연산 할당 매니저가 소프트웨어적으로 구현되는 예를 나타내는 블록도이다. 도 14에 도시된 시스템은 어플리케이션 프로세서(400)일 수 있으며, 어플리케이션 프로세서(400)는 반도체 칩으로서 시스템 온 칩(SoC)으로 구현될 수 있다.
어플리케이션 프로세서(400)는 프로세서(410) 및 동작 메모리(420)를 포함할 수 있다. 또한, 도 14에는 도시되지 않았으나, 어플리케이션 프로세서(400)는 시스템 버스에 연결되는 하나 이상의 IP(Intellectual Property) 모듈들을 더 포함할 수도 있다. 동작 메모리(420)는 어플리케이션 프로세서(400)가 채용되는 시스템의 동작과 관련된 각종 프로그램 및 명령어 등의 소프트웨어를 저장할 수 있으며, 일 예로서 운영 체제(421), 뉴럴 네트워크 모듈(422) 및 할당 매니저 모듈(423)을 포함할 수 있다. 프로세서(410)는 동작 메모리(420)에 로딩된 할당 매니저 모듈(423)을 실행할 수 있으며, 전술한 실시예들에 따라 리퀘스트가 다수의 서브 리퀘스트들로 분할되고, 각각의 서브 리퀘스트에 메모리가 할당되는 기능이 수행될 수 있다.
한편, 하나 이상의 하드웨어들이 뉴럴 네트워크 모듈(422)을 실행함에 의해 뉴럴 네트워크의 연산을 수행할 수 있으며, 일 예로서 전술한 실시예들에 따라 서브 리퀘스트 단위로 분할된 연산들이 다수의 하드웨어들에 의해 실행될 수 있다. 일 예로서, 도 14에 도시된 프로세서(410), 도시되지 않은 하나 이상의 전용 하드웨어와 일반 하드웨어들 중에서 선택된 두 개 이상의 하드웨어들에 의해 다수의 서브 리퀘스트들이 실행될 수 있다.
도 15는 본 발명의 예시적인 실시예에 따른 연산 할당 매니저가 자동차에 채용되는 자율 운행 모듈 내에 구현되는 예를 나타내는 블록도이다. 도 15에 도시된 시스템은 자율 운행 시스템(500)에 해당할 수 있으며, 자율 운행 시스템(500)은 센서 정보 수집부(510), 네비게이션 정보 수집부(520), 자율 운행 모듈(530) 및 중앙 처리 장치(540)를 포함할 수 있다. 또한, 자율 운행 모듈(530)은 뉴럴 네트워크 장치(531) 및 연산 할당 매니저(532)를 포함할 수 있다.
뉴럴 네트워크 장치(531)는 각종 영상 정보 및 음성 정보를 이용한 뉴럴 네트워크 동작을 수행하고, 수행 결과를 기초로 영상 인식 결과 및 음성 인식 결과 등의 정보 신호를 생성할 수 있다. 일 예로서, 센서 정보 수집부(510)는 카메라나 마이크 등의 각종 영상 정보 및 음성 정보를 수집할 수 있는 장치들을 포함하고, 이를 자율 운행 모듈(530)로 제공할 수 있다. 또한, 네비게이션 정보 수집부(520)는 자동차 운행과 관련된 각종 정보(예컨대, 위치 정보 등)를 자율 운행 모듈(530)로 제공할 수 있다. 뉴럴 네트워크 장치(531)는 센서 정보 수집부(510) 및/또는 네비게이션 정보 수집부(520)로부터의 정보를 입력으로 하여, 다양한 종류의 뉴럴 네트워크 모델을 실행함으로써 상기 정보 신호를 생성할 수 있다.
연산 할당 매니저(532)는 전술한 실시예들에 따라 리퀘스트를 다수의 서브 리퀘스트들로 분할하고, 각각의 서브 리퀘스트에 메모리를 할당하는 기능을 수행할 수 있다. 연산 할당 매니저(532)는 자율 운행 모듈(530) 내부 또는 외부에 구비될 수 있는 하나 이상의 전용 하드웨어 및 일반 하드웨어들에 뉴럴 네트워크 연산을 위한 서브 리퀘스트들을 할당하고, 뉴럴 네트워크 장치(531)는 상기 할당된 하드웨어 및 메모리에 기반하여 서브 리퀘스트 단위로 연산을 실행할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 뉴럴 네트워크 처리를 위한 다수의 연산들을 포함하는 리퀘스트를 각각 적어도 하나의 연산을 포함하는 다수의 서브 리퀘스트들로 분할하고, 상기 분할된 다수의 서브 리퀘스트들을 전용 하드웨어 및 하나 이상의 일반 하드웨어들에 할당하며, 하드웨어들이 메모리들을 억세스함에 소요되는 코스트를 나타내는 코스트 정보를 참조하여 각각의 서브 리퀘스트에 대해 입력 및 출력을 위한 메모리를 할당하는 연산 할당 매니저; 및
    상기 연산 할당 결과에 따라 상기 전용 하드웨어 및 하나 이상의 일반 하드웨어들을 이용하여 상기 다수의 서브 리퀘스트들을 실행하는 뉴럴 네트워트 장치를 구비하며,
    상기 연산 할당 매니저는 적어도 두 개의 서브 리퀘스트들에 대해 서로 다른 메모리를 할당하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  2. 제1항에 있어서,
    상기 다수의 서브 리퀘스트들은 순차적으로 실행되는 제1 및 제2 서브 리퀘스트들을 포함하고, 상기 제1 서브 리퀘스트는 일반 하드웨어에 할당되고, 상기 제2 서브 리퀘스트는 전용 하드웨어에 할당되며,
    상기 전용 하드웨어 또는 상기 제1 일반 하드웨어에 구비되는 내부 버퍼를 이용하여, 상기 일반 하드웨어로부터의 연산 결과가 상기 내부 버퍼를 통해 상기 제2 서브 리퀘스트의 입력으로서 제공되는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  3. 제1항에 있어서,
    상기 다수의 서브 리퀘스트들은 순차적으로 실행되는 제1 내지 제3 서브 리퀘스트들을 포함하고, 상기 제1 서브 리퀘스트는 제1 일반 하드웨어에 할당되고, 상기 제2 서브 리퀘스트는 전용 하드웨어에 할당되며, 상기 제3 서브 리퀘스트는 제2 일반 하드웨어에 할당되고,
    상기 코스트 정보에 기반하여, 상기 제1 서브 리퀘스트에는 제1 메모리가 할당되고, 상기 제2 서브 리퀘스트에는 상기 제1 메모리와는 다른 제2 메모리가 할당되는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  4. 제1항에 있어서,
    상기 리퀘스트에 포함되는 다수의 연산들은 상기 전용 하드웨어에 의해 실행 가능한 제1 그룹의 연산들과 상기 전용 하드웨어에 의해 실행 불가능한 제2 그룹의 연산들을 포함하고,
    상기 연산 할당 매니저는,
    상기 제1 그룹의 연산들을 포함하는 서브 리퀘스트를 상기 전용 하드웨어에 할당하고, 상기 제2 그룹의 연산들을 포함하는 서브 리퀘스트를 상기 하나 이상의 일반 하드웨어들에 할당하는 경로 선택기; 및
    상기 전용 하드웨어 및 상기 일반 하드웨어들의 상기 메모리들에 대한 코스트 정보를 참조함에 의해 상기 서브 리퀘스트들 각각의 연산 결과가 저장되는 메모리를 할당하는 메모리 할당기를 포함하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  5. 제4항에 있어서,
    상기 리퀘스트에 포함되는 다수의 연산들의 연산 구조를 나타내는 그래프 정보를 생성하는 뉴럴 네트워크 분석기를 더 구비하고,
    상기 경로 선택기는, 상기 그래프 정보를 참조하여 상기 전용 하드웨어 및 상기 일반 하드웨어들의 할당 동작을 수행하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  6. 제5항에 있어서,
    상기 메모리 할당기는, 상기 뉴럴 네트워크 분석기로부터의 그래프 정보, 상기 경로 선택기로부터의 할당 결과, 상기 전용 하드웨어와 상기 일반 하드웨어들의 상기 메모리들에 대한 코스트 정보를 참조함에 의해 상기 각각의 서브 리퀘스트에 대해 메모리를 할당하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  7. 프로세서의 제어에 기반하여, 뉴럴 네트워크 처리를 위한 다수의 연산들을 포함하는 리퀘스트를 각각 적어도 하나의 연산을 포함하는 다수의 서브 리퀘스트들로 분할하는 단계;
    상기 프로세서의 제어에 기반하여, 상기 다수의 서브 리퀘스트들 중 전용 하드웨어가 실행할 수 있는 연산을 포함하는 일부의 서브 리퀘스트를 상기 전용 하드웨어에 할당하는 단계;
    상기 프로세서의 제어에 기반하여, 상기 다수의 서브 리퀘스트들 중 나머지 서브 리퀘스트들을 실행하기 위한 하나 이상의 일반 하드웨어들을 선택하는 단계;
    상기 프로세서의 제어에 기반하여, 상기 전용 하드웨어 및 상기 일반 하드웨어들이 메모리들을 억세스함에 소요되는 코스트 정보를 참조함에 의해 상기 다수의 서브 리퀘스트들 각각에 메모리를 할당하는 단계; 및
    상기 할당된 메모리를 억세스함에 의해, 상기 전용 하드웨어 및 상기 선택된 일반 하드웨어들이 상기 다수의 서브 리퀘스트들을 실행하는 단계를 구비하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  8. 제7항에 있어서,
    상기 리퀘스트에 포함되는 다수의 연산들은 상기 전용 하드웨어에 의해 실행 가능한 제1 그룹의 연산들과 상기 전용 하드웨어에 의해 실행 불가능한 제2 그룹의 연산들을 포함하고,
    상기 분할하는 단계는, 상기 제1 그룹의 연산들과 상기 제2 그룹의 연산들을 서로 다른 서브 리퀘스트로 분할하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  9. 제8항에 있어서,
    상기 제1 그룹의 연산들을 포함하는 하나 이상의 서브 리퀘스트들이 상기 전용 하드웨어에 할당되고,
    상기 제2 그룹의 연산들을 포함하는 하나 이상의 서브 리퀘스트들을 실행하기 위해, 상기 뉴럴 네트워크 시스템 내의 다수의 일반 하드웨어들 중에서 적어도 하나의 일반 하드웨어가 선택되는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  10. 제8항에 있어서,
    상기 제1 그룹의 연산들을 포함하는 다수의 서브 리퀘스트들이 상기 전용 하드웨어에 할당되고,
    상기 제2 그룹의 연산들을 포함하는 다수의 서브 리퀘스트들을 실행하기 위해, 상기 뉴럴 네트워크 시스템 내의 다수의 일반 하드웨어들 중에서 두 개 이상의 일반 하드웨어들이 선택되는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  11. 제7항에 있어서,
    상기 다수의 서브 리퀘스트들은 순차적으로 실행되는 제1 및 제2 서브 리퀘스트들을 포함하고, 상기 제1 서브 리퀘스트는 전용 하드웨어에 의해 실행되고, 상기 제2 서브 리퀘스트는 제1 일반 하드웨어에 의해 실행되며,
    상기 메모리를 할당하는 단계는, 상기 메모리들 중 상기 전용 하드웨어와 상기 제1 일반 하드웨어 사이에서의 억세스에 소요되는 코스트가 가장 작은 메모리를 상기 제1 서브 리퀘스트에 할당하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  12. 제7항에 있어서,
    상기 코스트 정보는, 메모리 사이즈, 기록/독출 레이턴시, 대역폭 및 소모 파워 중 적어도 하나를 포함하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  13. 제7항에 있어서,
    상기 코스트 정보에 따라 상기 다수의 서브 리퀘스트들에 할당되는 메모리의 종류가 가변되는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  14. 제7항에 있어서,
    상기 다수의 서브 리퀘스트들은 순차적으로 실행되는 제1 내지 제3 서브 리퀘스트들을 포함하고, 상기 제1 및 제3 서브 리퀘스트들은 상기 전용 하드웨어에 의해 실행되고, 상기 제2 서브 리퀘스트는 제1 일반 하드웨어에 의해 실행되며,
    상기 코스트 정보에 따라 상기 제1 및 제2 서브 리퀘스트들 각각에 제1 메모리가 할당되는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  15. 제7항에 있어서,
    상기 다수의 서브 리퀘스트들은 순차적으로 실행되는 제1 내지 제3 서브 리퀘스트들을 포함하고, 상기 제1 서브 리퀘스트는 제1 일반 하드웨어에 의해 실행되고, 상기 제2 서브 리퀘스트는 상기 전용 하드웨어에 의해 실행되며, 상기 제3 서브 리퀘스트는 제2 일반 하드웨어에 의해 실행되며,
    상기 코스트 정보에 따라 상기 제1 리퀘스트에는 제1 메모리가 할당되고, 상기 제2 리퀘스트에는 제2 메모리가 할당되는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  16. 제7항에 있어서,
    상기 다수의 서브 리퀘스트들은 순차적으로 실행되는 제1 및 제2 서브 리퀘스트들을 포함하고, 상기 제1 서브 리퀘스트는 상기 전용 하드웨어에 할당되며,
    상기 일반 하드웨어들을 선택하는 단계는, 상기 제2 서브 리퀘스트의 실행을 위해 제1 일반 하드웨어를 선택하며,
    상기 제2 서브 리퀘스트가 실행되기 전에 상기 제1 일반 하드웨어가 다른 작업에 할당되었음을 판단하는 단계; 및
    상기 전용 하드웨어와의 사이에서 가장 작은 코스트에 따른 억세스를 수행하는 제2 일반 하드웨어를 상기 제2 서브 리퀘스트의 실행을 위해 선택하는 단계를 더 구비하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작방법.
  17. 프로그램들을 저장하는 메모리;
    상기 메모리에 저장된 프로그램들을 실행하는 프로세서; 및
    상기 메모리에 로딩 가능한 프로그램들을 포함하는 연산 할당 매니저를 구비하고,
    상기 프로세서는, 상기 연산 할당 매니저를 실행함으로써, 뉴럴 네트워크 처리를 위한 다수의 연산들을 포함하는 리퀘스트를 각각 적어도 하나의 연산을 포함하는 다수의 서브 리퀘스트들로 분할하고, 상기 다수의 서브 리퀘스트들을 실행할 전용 하드웨어 및 하나 이상의 일반 하드웨어들을 선택하며, 하드웨어들이 메모리들을 억세스함에 소요되는 코스트를 나타내는 코스트 정보를 참조함에 의해 상기 다수의 서브 리퀘스트들 각각에 메모리를 할당하는 것을 특징으로 하는 어플리케이션 프로세서.
  18. 제17항에 있어서,
    상기 전용 하드웨어 및 하나 이상의 일반 하드웨어들을 포함하는 뉴럴 네트워크 장치를 더 구비하고,
    상기 뉴럴 네트워크 장치는 상기 각각의 서브 리퀘스트에 대해 할당된 메모리를 이용한 입출력 동작을 통해 상기 서브 리퀘스트들을 실행하는 것을 특징으로 하는 어플리케이션 프로세서.
  19. 제17항에 있어서,
    상기 연산 할당 매니저는 상기 전용 하드웨어 및 하나 이상의 일반 하드웨어들의 다이나믹 정보에 관련된 컨텍스트 정보를 제공하는 컴퓨팅 컨텍스트 모듈 및 상기 전용 하드웨어 및 하나 이상의 일반 하드웨어들의 연산 특성에 관련된 리소스 정보를 제공하는 컴퓨팅 리소스 모듈을 더 포함하고,
    상기 서브 리퀘스트들을 실행할 하드웨어들은, 상기 컨텍스트 정보 및 상기 리소스 정보 중 적어도 하나를 이용하여 선택되는 것을 특징으로 하는 어플리케이션 프로세서.
  20. 제17항에 있어서, 상기 연산 할당 매니저는,
    상기 전용 하드웨어 및 하나 이상의 일반 하드웨어들 각각의 상기 메모리들에 대한 코스트 정보를 갖는 다수의 링크 정보들을 포함하고, 상기 다수의 서브 리퀘스트들에 할당된 메모리들의 정보를 갖는 메모리 리스트를 생성하는 것을 특징으로 하는 어플리케이션 프로세서.
KR1020180062130A 2018-05-30 2018-05-30 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 KR20190136431A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180062130A KR20190136431A (ko) 2018-05-30 2018-05-30 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US16/229,146 US11176438B2 (en) 2018-05-30 2018-12-21 Neural network system, application processor having the same, and method of operating the neural network system
CN201910040910.5A CN110554913A (zh) 2018-05-30 2019-01-16 神经网络***及其操作方法以及应用处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180062130A KR20190136431A (ko) 2018-05-30 2018-05-30 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법

Publications (1)

Publication Number Publication Date
KR20190136431A true KR20190136431A (ko) 2019-12-10

Family

ID=68693924

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180062130A KR20190136431A (ko) 2018-05-30 2018-05-30 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법

Country Status (3)

Country Link
US (1) US11176438B2 (ko)
KR (1) KR20190136431A (ko)
CN (1) CN110554913A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP4290379A1 (en) 2022-06-09 2023-12-13 Seoul National University R & DB Foundation Method and terminal for performing scheduling
WO2024128388A1 (ko) * 2022-12-12 2024-06-20 주식회사 모빌린트 리오더버퍼와 인터리빙을 이용한 dma와 dram 간 접속 장치 및 이를 이용한 방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015126429A1 (en) * 2014-02-24 2015-08-27 Hewlett-Packard Development Company, L.P. Repurposable buffers for target port processing of a data transfer
KR102382186B1 (ko) * 2018-10-10 2022-04-05 삼성전자주식회사 딥 러닝을 위한 고성능 컴퓨팅 시스템
CN113366508A (zh) * 2019-01-04 2021-09-07 蒂普爱可斯有限公司 执行电子设备特定功能的训练模型创建方法、执行相同功能的学习模型、专用芯片及其操作方法及电子设备和***
US20210056220A1 (en) * 2019-08-22 2021-02-25 Mediatek Inc. Method for improving confidentiality protection of neural network model
CN111598221B (zh) * 2020-05-14 2023-07-25 山东浪潮科学研究院有限公司 一种软硬件协同加速神经网络算法的方法及***
US11915056B2 (en) 2020-10-15 2024-02-27 Nec Corporation Combination of multiple data processing and machine learning frameworks for a target hardware
KR20220078787A (ko) 2020-12-03 2022-06-13 삼성전자주식회사 컴퓨팅 장치의 동작 방법 그리고 명령들을 저장하는 컴퓨터로 독출 가능한 저장 매체
CN112579286B (zh) * 2020-12-16 2021-08-06 全芯智造技术有限公司 用于光源掩模优化的方法、设备和存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447664B2 (en) * 2003-08-28 2008-11-04 Boeing Co Neural network predictive control cost function designer
US7219085B2 (en) 2003-12-09 2007-05-15 Microsoft Corporation System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit
WO2007066319A1 (en) 2005-12-08 2007-06-14 Mentor Graphics Corporation Conversion of switching signals of a circuit simulation into a transaction model
US9195233B2 (en) 2006-02-27 2015-11-24 Perrone Robotics, Inc. General purpose robotics operating system
US8983883B2 (en) 2006-08-17 2015-03-17 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Autonomic and apoptotic, aeronautical and aerospace systems, and controlling scientific data generated therefrom
US9665822B2 (en) 2010-06-30 2017-05-30 International Business Machines Corporation Canonical spiking neuron network for spatiotemporal associative memory
US8712941B2 (en) 2011-09-21 2014-04-29 Brain Corporation Elementary network description for efficient link between neuronal models and neuromorphic systems
US9704094B2 (en) 2015-02-19 2017-07-11 International Business Machines Corporation Mapping of algorithms to neurosynaptic hardware
US9542244B2 (en) * 2015-04-22 2017-01-10 Ryft Systems, Inc. Systems and methods for performing primitive tasks using specialized processors
JP6542062B2 (ja) 2015-08-04 2019-07-10 株式会社東芝 機械学習装置
US10769533B2 (en) 2015-09-04 2020-09-08 Baidu Usa Llc Systems and methods for efficient neural network deployments
US9904874B2 (en) * 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
WO2017100711A1 (en) 2015-12-10 2017-06-15 Google Inc. Augmenting neural networks with external memory
US10460231B2 (en) * 2015-12-29 2019-10-29 Samsung Electronics Co., Ltd. Method and apparatus of neural network based image signal processor
EP3411835B1 (en) 2016-02-05 2023-07-05 DeepMind Technologies Limited Augmenting neural networks with hierarchical external memory
US9836888B2 (en) 2016-02-18 2017-12-05 Edx Technologies, Inc. Systems and methods for augmented reality representations of networks
US11055063B2 (en) 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
AU2016203619A1 (en) 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
CN107688855B (zh) * 2016-08-12 2021-04-13 赛灵思公司 针对于复杂神经网络的分层量化方法与装置
US9792397B1 (en) 2017-01-08 2017-10-17 Alphaics Corporation System and method for designing system on chip (SoC) circuits through artificial intelligence and reinforcement learning
US10324644B2 (en) * 2017-03-31 2019-06-18 Hewlett Packard Enterprise Development Lp Memory side accelerator thread assignments
CN107832839B (zh) * 2017-10-31 2020-02-14 南京地平线机器人技术有限公司 执行卷积神经网络中的运算的方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP4290379A1 (en) 2022-06-09 2023-12-13 Seoul National University R & DB Foundation Method and terminal for performing scheduling
KR20230169755A (ko) 2022-06-09 2023-12-18 서울대학교산학협력단 스케줄링을 수행하는 방법 및 단말기
WO2024128388A1 (ko) * 2022-12-12 2024-06-20 주식회사 모빌린트 리오더버퍼와 인터리빙을 이용한 dma와 dram 간 접속 장치 및 이를 이용한 방법

Also Published As

Publication number Publication date
US11176438B2 (en) 2021-11-16
US20190370630A1 (en) 2019-12-05
CN110554913A (zh) 2019-12-10

Similar Documents

Publication Publication Date Title
KR20190136431A (ko) 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
KR102606825B1 (ko) 뉴럴 네트워크 모델을 변형하는 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
Yang et al. Re-thinking CNN frameworks for time-sensitive autonomous-driving applications: Addressing an industrial challenge
US20210019600A1 (en) Multi-memory on-chip computational network
US10846621B2 (en) Fast context switching for computational networks
US20190180183A1 (en) On-chip computational network
KR20190055610A (ko) 뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
CN111258744A (zh) 一种基于异构计算的任务处理方法及软硬件框架***
JP7451614B2 (ja) オンチップの計算ネットワーク
US11003429B1 (en) Compile-time scheduling
KR20210148586A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템
US20210158131A1 (en) Hierarchical partitioning of operators
US11562554B1 (en) Workload reduction for non-maximum suppression operation
JP2023511467A (ja) 機械学習ワークロードのためのタスクスケジューリング
US20240220164A1 (en) Process isolation for a processor-in-memory ("pim") device
US11521007B2 (en) Accelerator resource utilization by neural networks
US11868872B1 (en) Direct memory access operation for neural network accelerator
US11797280B1 (en) Balanced partitioning of neural network based on execution latencies
US20190318229A1 (en) Method and system for hardware mapping inference pipelines
KR20240007354A (ko) 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법
US11610102B1 (en) Time-based memory allocation for neural network inference
US10891056B2 (en) Virtualization of memory compute functionality
KR20220034520A (ko) 프로세싱 장치, 컴퓨팅 장치, 및 프로세싱 장치의 동작 방법
KR101989033B1 (ko) 플랫폼 관리 장치 및 방법
US11625269B1 (en) Scheduling for locality of reference to memory

Legal Events

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