KR20200053886A - 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템 - Google Patents

뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템 Download PDF

Info

Publication number
KR20200053886A
KR20200053886A KR1020180137345A KR20180137345A KR20200053886A KR 20200053886 A KR20200053886 A KR 20200053886A KR 1020180137345 A KR1020180137345 A KR 1020180137345A KR 20180137345 A KR20180137345 A KR 20180137345A KR 20200053886 A KR20200053886 A KR 20200053886A
Authority
KR
South Korea
Prior art keywords
task
hardware
core
neural network
neural
Prior art date
Application number
KR1020180137345A
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 KR1020180137345A priority Critical patent/KR20200053886A/ko
Priority to US16/439,928 priority patent/US11733968B2/en
Priority to CN201910836241.2A priority patent/CN111178494A/zh
Priority to TW108136017A priority patent/TW202018599A/zh
Publication of KR20200053886A publication Critical patent/KR20200053886A/ko
Priority to US18/342,385 priority patent/US11995417B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • 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/045Combinations of networks
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

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

Abstract

이질성(heterogeneity) 및 재구성 가능성(reconfigurability)을 갖는 뉴럴 프로세싱 유닛이 제공된다. 뉴럴 프로세싱 유닛(Neural Processing Unit)은 제1 뉴럴 네트워크 연산을 포함하는 어플리케이션 작업(application-work)을 수행하되, 제1 뉴럴 네트워크(Neural Network) 연산을 수행하는 제1 프로세싱 코어(processing core), 제1 프로세싱 코어의 제1 워크로드(workload)에 따라, 어플리케이션 작업의 일부를 하드웨어 블록-작업(hardware block-work)으로 분배하는 작업 분배 모듈(work distributing module), 및 하드웨어 블록-작업을 수행하는 하드웨어 코어로 재구성되는 하드웨어 블록을 포함한다.

Description

뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템{NEURAL PROCESSING UNIT, NEURAL PROCESSING SYSTEM, AND APPLICATION SYSTEM}
본 발명은 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템에 관한 것으로, 좀 더 구체적으로, 재구성 가능한 하드웨어 블록을 포함하는 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템에 관한 것이다.
DNN(Deep Neural Network) 연산을 수행하기 위해 CPU(Central Processing Unit) 또는 GPU(Graphic Processing Unit) 등의 프로세싱 코어가 사용될 수 있다. DNN 연산의 처리량이 증가함에 따라, DNN 연산을 빠르게 수행하기 위해 NPU(Neural Processing Unit)이 사용될 수 있다.
DNN 연산은 CNN(Convolutional Neural Network) 연산 또는 RNN(Recurrent Neural Network) 연산 등으로 세분화 될 수 있다. DNN 연산의 종류에 따라 하드웨어 구조가 상이한 NPU를 사용할 수 있다. 예를 들어, CNN 연산을 수행하기 위한 NPU의 하드웨어 구조와, RNN 연산을 수행하기 위한 NPU의 하드웨어 구조가 상이할 수 있다.
어플리케이션 작업을 수행하는데 있어, 복수의 종류의 DNN 연산이 수행될 수 있다. 예를 들어, 하나의 어플리케이션에서, CNN 연산과 RNN 연산 모두가 수행될 수 있다.
NPU가 하나의 종류의 DNN 연산을 수행하기 위한 하드웨어 구조를 갖는 경우, 다른 종류의 DNN 연산을 수행하지 못하거나 시간이 지체될 수 있다. 또한, NPU가 복수의 종류의 DNN 연산을 수행하기 위한 하드웨어 구조를 갖는 경우에도, 어플리케이션 작업에 포함된 DNN 연산의 양에 따라, 어플리케이션 작업을 수행하는 시간이 지체될 수 있다. 예를 들어, NPU가 하나의 CNN 프로세싱 코어와 하나의 RNN 프로세싱 코어를 갖을 수 있다. 만약, NPU에서 수행되는 어플리케이션 작업에 포함된 CNN 연산의 양과 RNN 연산의 양이 상이한 경우, 리소스의 낭비가 있을 수 있다. 즉, 하나의 프로세싱 코어는 다른 하나의 프로세싱 코어보다 먼저 연산의 수행을 완료할 수 있다. 전체 어플리케이션 작업은, 다른 하나의 프로세싱 코어의 연산이 수행이 완료될 때까지, 지체될 수 있다.
따라서, 어플리케이션 작업을 빠르게 처리하기 하고, 리소스의 낭비를 막기 위하여, 두가지 이상의 뉴럴 네트워크 연산을 동시에 처리하기 위한, 이질성(heterogeneity) 및, 두가지 이상의 뉴럴 네트워크 연산을 처리하기 위해 하드웨어가 재구성되는 능력인, 재구성 가능성(reconfigurability)을 갖는 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템에 대한 연구가 필요하다.
본 발명이 해결하고자 하는 기술적 과제는, 어플리케이션 작업을 빠르게 처리하고, 리소스의 낭비를 막기 위하여 이질성(heterogeneity) 및 재구성 가능성(reconfigurability)을 갖는 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 뉴럴 프로세싱 유닛(Neural Processing Unit)은, 제1 뉴럴 네트워크 연산을 포함하는 어플리케이션 작업(application-work)을 수행하는 뉴럴 프로세싱 유닛으로서, 상기 제1 뉴럴 네트워크(neural network) 연산을 수행하는 제1 프로세싱 코어(processing core), 상기 제1 프로세싱 코어의 제1 워크로드(workload)에 따라, 상기 어플리케이션 작업의 일부를 하드웨어 블록-작업(hardware block-work)으로 분배하는 작업 분배 모듈(work distributing module), 및 상기 하드웨어 블록-작업을 수행하는 하드웨어 코어로 재구성되는 하드웨어 블록을 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 뉴럴 프로세싱 유닛은, 제1 뉴럴 네트워크의 연산을 수행하기 위한 제1 하드웨어 코어 또는 상기 제1뉴럴 네트워크와는 상이한 제2 뉴럴 네트워크의 연산을 수행하는 제2 하드웨어 코어로 재구성가능한(reconfigurable) 하드웨어 블록, 및 상기 제1 뉴럴 네트워크의 연산 또는 상기 제2 뉴럴 네트워크의 연산에서 사용되는 함수 데이터를 저장하는 내부 메모리(internal memory)를 포함한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 뉴럴 프로세싱 시스템(Neural Processing System)은, 외부 메모리(external memory), 및 제1 뉴럴 네트워크의 연산을 수행하기 위한 제1 프로세싱 코어와 재구성가능한 하드웨어 블록을 포함하는 뉴럴 프로세싱 유닛을 포함하되, 상기 외부 메모리는 상기 하드웨어 블록을 재구성하기 위한 메타 데이터(meta data)를 저장한다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 어플리케이션 시스템(Application System)은 어플리케이션을 실행(executing)하고, 상기 어플리케이션 실행에 필요한 작업들 중 제1 뉴럴 네트워크 연산을 포함하는 제1 어플리케이션 작업을 분배하는 CPU, 상기 제1 뉴럴 네트워크 연산을 수행하기 위한 제1 프로세싱 코어와 재구성가능한 하드웨어 블록을 포함하고, 상기 제1 프로세싱 코어와 상기 하드웨어 블록을 이용하여 상기 CPU에 의해 분배된 상기 제1 어플리케이션 작업을 수행하는 뉴럴 프로세싱 유닛, 및 상기 하드웨어 블록을 재구성하기 위한 메타 데이터를 상기 뉴럴 프로세싱 유닛으로 전달하는 재구성 로더(reconfiguration loader)를 포함한다.
도 1은 몇몇 실시예에 따른, 뉴럴 프로세싱 유닛(Neural Processing Unit)의 블록도이다.
도 2는 몇몇 실시예에 따른, 뉴럴 프로세싱 유닛의 블록도이다.
도 3은 몇몇 실시예에 따른, 뉴럴 프로세싱 유닛의 블록도이다.
도 4는 몇몇 실시예에 따른, 뉴럴 프로세싱 유닛의 블록도이다.
도 5는 몇몇 실시예에 따른, DNN(Deep Neural Network) 연산을 설명하기 위한 블록도이다.
도 6은 몇몇 실시예에 따른, DNN 연산의 블록도이다.
도 7은 양자화된 가중치 데이터를 설명하기 위한 도면이다.
도 8은 몇몇 실시예에 따른, 뉴럴 프로세싱 유닛의 블록도이다.
도 9는 몇몇 실시예에 따른, 뉴럴 프로세싱 유닛의 블록도이다.
도 10은 함수 데이터를 설명하기 위한 도면이다.
도 11은 몇몇 실시예에 따른, 뉴럴 프로세싱 시스템의 블록도이다.
도 12는 몇몇 실시예에 따른, 뉴럴 프로세싱 시스템의 블록도이다.
도 13은 몇몇 실시예에 따른, 뉴럴 프로세싱 시스템의 블록도이다.
도 14는 몇몇 실시예에 따른, 어플리케이션 시스템의 블록도이다.
도 15는 몇몇 실시예에 따른 어플리케이션 작업의 플로우(flow)를 나타내는 블록도이다.
도 16은 몇몇 실시예에 따른 메모리 내의 데이터 플로우를 나타내는 블록도이다.
도 1 내지 도 4를 참조하여, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛(Neural Processing Unit)에 대해 설명한다. 도 1 내지 4는 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛의 블록도이다.
도 1을 참조하면, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛(100)은 제1 프로세싱 코어(processing core)(110), 작업 분배 모듈(work distributing module, 120), 하드웨어 블록(hardware block, 130) 및 버스(140)를 포함할 수 있다.
뉴럴 프로세싱 유닛(100)은 어플리케이션 작업(150)을 수행할 수 있다. 어플리케이션 작업(150)은 제1 프로세싱 코어-작업(152) 또는 하드웨어 블록-작업(154)을 포함할 수 있다. 제1 프로세싱 코어-작업(152)은 이하에서 설명될 제1 프로세싱 코어(110)에 의해 수행될 수 있다. 하드웨어 블록-작업(154)은 이하에서 설명될 하드웨어 코어에 의해 수행될 수 있다. 여기서 하드웨어 코어는 하드웨어 블록(130)으로부터 재구성된, 도 2 내지 도 4와 관련하여 후술하는 CNN 처리 하드웨어 코어(132), RNN 처리 하드웨어 코어(134), MAC 연산을 수행하는 MAC 처리 하드웨어 코어(136) 등을 의미할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
제1 프로세싱 코어(110)는 제1 뉴럴 네트워크 연산을 수행할 수 있다. 즉, 제1 프로세싱 코어-작업(152)은 제1 뉴럴 네트워크 연산을 포함할 수 있다. 예를 들어, 제1 뉴럴 네트워크 연산은 CNN(Convolutional Neural Network) 연산일 수 있고, 제1 프로세싱 코어(110)는 CNN 연산을 처리하기 위한 CNN IP(intellectual property) 코어일 수 있다. 또한, 제1 뉴럴 네트워크 연산은 RNN(Recurrent Neural Network) 연산일 수 있고, 제1 프로세싱 코어(110)는 RNN 연산을 처리하기 위한 RNN IP 코어일 수 있다. 이와 같이, 본 명세서에서는, 제1 뉴럴 네트워크 연산의 예시로, CNN 연산과 RNN 연산을 설명하였으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
작업 분배 모듈(120)은 어플리케이션 작업(150)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 작업 분배 모듈(120)은 제1 프로세싱 코어(110)의 제1 워크로드(workload)에 따라, 어플리케이션 작업(150)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 예를 들어, 작업 분배 모듈(120)은 버스(140)를 통해 제1 프로세싱 코어(110)로부터 제1 워크로드를 수신할 수 있다. 또한, 작업 분배 모듈(120)은 제1 워크로드에 따라, 어플리케이션 작업(150)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다.
몇몇 실시예에서, 작업 분배 모듈(120)은 뉴럴 프로세싱 유닛(100)으로 입력된 어플리케이션 작업(150)을 제1 프로세싱 코어(110) 및 하드웨어 블록(130)에 분배할 수 있다. 예를 들어, 작업 분배 모듈(120)은 어플리케이션 작업(150) 중 제1 뉴럴 네트워크 연산을 제1 프로세싱 코어-작업(152)으로 분배하고, 나머지 연산을 하드웨어 블록-작업(154)으로 분배할 수 있다.
몇몇 실시예에서, 작업 분배 모듈(120)은 제1 워크로드가 미리 정의된 값을 초과하는지 여부에 따라, 제1 프로세싱 코어-작업(152)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 예를 들어, 작업 분배 모듈(120)은, 만약 제1 워크로드가 미리 정의된 값을 초과하는 경우, 제1 프로세싱 코어-작업(152)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 이때, 제1 프로세싱 코어-작업(152)에 포함된 제1 뉴럴 네트워크 연산의 일부가 하드웨어 블록-작업(154)으로 분배될 수 있다. 또한, 작업 분배 모듈(120)은, 만약 제1 워크로드가 미리 정의된 값을 초과하지 않는 경우, 제1 프로세싱 코어-작업(152)의 일부를 하드웨어 블록-작업(154)으로 분배하지 않을 수 있다. 이때, 작업 분배 모듈(120)은, 어플리케이션 작업(150)에 포함된 다른 연산을 하드웨어 블록-작업(154)으로 분배할 수 있다.
작업 분배 모듈(120)은 하드웨어일 수 있다. 예를 들어, 작업 분배 모듈(120)은 별도의 IP 코어일 수 있으나, 이에 제한된 것은 아니다. 또한, 작업 분배 모듈(120)은 소프트웨어일 수 있다. 예를 들어, 뉴럴 프로세싱 유닛(100)은 어플리케이션 작업(150) 중 제1 프로세싱 코어-작업(152) 및 하드웨어 블록-작업(154)을 제외한 나머지 일반 작업(general work)을 수행하는 일반 프로세싱 코어(general processing core)를 포함할 수 있고, 작업 분배 모듈(120)은 일반 프로세싱 코어에서 수행되는 소프트웨어일 수 있다.
하드웨어 블록(130)은 하드웨어 블록-작업(154)을 수행하기 위한 하드웨어 코어로 재구성될 수 있다. 즉, 하드웨어 블록(130)은 하드웨어 블록-작업(154)에 따라, 하드웨어 블록-작업(154)을 수행하기 위한 구조를 갖는 하드웨어 코어로 재구성될 수 있다. 만약 작업 분배 모듈(120)이 제1 뉴럴 네트워크 연산을 하드웨어 블록-작업(154)으로 분배하는 경우, 하드웨어 블록(130)은 제1 뉴럴 네트워크 연산을 처리하기 위한 하드웨어 코어로 재구성 될 수 있다. 만약 작업 분배 모듈(120)이 제1 뉴럴 네트워크와는 상이한 제2 뉴럴 네트워크 연산을 하드웨어 블록-작업(154)으로 분배하는 경우, 하드웨어 블록(130)은 제2 뉴럴 네트워크 연산을 처리하기 위한 하드웨어 코어로 재구성 될 수 있다.
일 예로, 하드웨어 블록-작업(154)이 CNN(Convolutional Neural Network) 연산인 경우, 하드웨어 블록(130)은, 도 2에서 후술되는, CNN 처리 하드웨어 코어(132)로 재구성될 수 있다. 다른 예로, 하드웨어 블록-작업(154)이 RNN(Recurrent Neural Network) 연산인 경우, 하드웨어 블록(130)은, 도 3에서 후술되는, RNN 처리 하드웨어 코어(134)로 재구성될 수 있다. 또 다른 예로, 하드웨어 블록-작업(154)이 MAC(Multiply and Accumulate) 연산인 경우, 하드웨어 블록(130)은, 도 4에서 후술되는, MAC 연산을 수행하는 MAC 처리 하드웨어 코어(136)로 재구성될 수 있다.
몇몇 실시예에서, 하드웨어 블록(130)은, 뉴럴 프로세싱 유닛(100)이 어플리케이션 작업을 수행하는 도중에, 하드웨어 블록-작업(154)을 수행하기 위한 하드웨어 코어로 재구성될 수 있다. 예를 들어, 뉴럴 프로세싱 유닛(100)이 어플리케이션 작업을 수행하는 도중, 작업 분배 모듈(120)은 제1 뉴럴 네트워크 연산과 제1 뉴럴 네트워크와는 상이한 제2 뉴럴 네트워크 연산을 순차적으로 하드웨어 블록-작업(154)으로 분배할 수 있다. 이때, 하드웨어 블록(130)은 제1 뉴럴 네트워크 연산을 처리하기 위한 제1 하드웨어 코어 및 제2 뉴럴 네트워크 연산을 처리하기 위한 제2 하드웨어 코어로 순차적으로 재구성될 수 있다.
하드웨어 블록(130)은 하드웨어 기술 언어(예를 들어, Verilog)로 프로그래밍되는 논리블록을 포함할 수 있다. 일 예로, 하드웨어 블록(130)은 FPGA(Field Programmable Gate Array)일 수 있다. 다른 예로, 뉴럴 프로세싱 유닛은 eFPGA(embedded FPGA)이고, 하드웨어 블록(130)은 eFPGA에 포함된 FPGA 블록일 수 있다.
버스(140)는 작업 분배 모듈(120), 제1 프로세싱 코어(110), 및 하드웨어 블록(130) 사이의 데이터를 이동시키기 위한 통로일 수 있다. 버스(140)는 뉴럴 프로세싱 유닛(100)의 어플리케이션 작업(150)을 작업 분배 모듈(120)로 전달하기 위한 통로일 수 있다. 버스(140)는 작업 분배 모듈(120)에서 분배된 제1 프로세싱 코어-작업(152) 및 하드웨어 블록-작업(154)을 각각 제1 프로세싱 코어(110) 및 하드웨어 블록(130)로 전달하기 위한 통로일 수 있다.
도 2를 참조하면, 도 1의 하드웨어 블록(130)은 CNN(Convolutional Neural Network) 처리 하드웨어 코어(132)로 재구성될 수 있다. 예를 들어, 만약 작업 분배 모듈(120)로부터 분배된 하드웨어 블록-작업(154)이 CNN 연산인 경우, 하드웨어 블록(130)은 CNN 연산을 처리하기 위한 CNN 처리 하드웨어 코어(132)로 재구성될 수 있다. CNN 연산은, 예컨대 영상 인식 처리에 관한 뉴럴 네트워크 연산을 포함할 수 있다. 예를 들어, CNN 연산은 영상에서 문자, 사람, 또는 물체 등을 인식하기 위한 뉴럴 네트워크 연산을 포함할 수 있다.
도 3을 참조하면, 도 1의 하드웨어 블록(130)은 RNN(Convolutional Neural Network) 처리 하드웨어 코어(134)로 재구성될 수 있다. 예를 들어, 만약 작업 분배 모듈(120)로부터 분배된 하드웨어 블록-작업(154)이 RNN 연산인 경우, 하드웨어 블록(130)은 RNN 연산을 처리하기 위한 RNN 처리 하드웨어 코어(134)로 재구성될 수 있다. RNN 연산은, 예컨대 음성 인식 처리에 관한 뉴럴 네트워크 연산을 포함할 수 있다. 예를 들어, RNN 연산은 음성으로부터 문자, 음악, 또는 음원 등을 인식하기 위한 뉴럴 네트워크 연산을 포함할 수 있다.
도 4를 참조하면, 하드웨어 블록(130)은 MAC 연산을 수행하는 MAC 처리 하드웨어 코어(136)로 재구성될 수 있다. 몇몇 실시예에서, 제1 뉴럴 네트워크 연산은 제1 MAC(Multiply and Accumulate) 연산을 포함할 수 있다. 작업 분배 모듈(120)은, 제1 프로세싱 코어(110)의 제1 워크로드에 대한 제1 MAC 연산의 비율에 기초하여, 제1 MAC 연산의 일부를 상기 하드웨어 블록-작업으로 분배할 수 있다. 일 예로, 만약 제1 프로세싱 코어(110)의 제1 워크로드에 대한 제1 MAC 연산의 비율이 미리 정의된 값을 초과하는 경우, 작업 분배 모듈(120)은 제1 MAC 연산의 일부를 상기 하드웨어 블록-작업(154)으로 분배할 수 있다. 예를 들어 미리 정의된 값이 0.4이고, 제1 워크로드에 대한 제1 MAC 연산의 비율이 0.6인 경우, 작업 분배 모듈(120)은 제1 MAC 연산의 일부를 상기 하드웨어 블록-작업(154)으로 분배할 수 있다. 이때, 하드웨어 블록(130)은 제1 MAC 연산을 수행하기 위한 MAC 처리 하드웨어 코어(136)으로 재구성될 수 있다. 다른 예로, 만약 제1 프로세싱 코어(110)의 제1 워크로드에 대한 제1 MAC 연산의 비율이 미리 정의된 값을 초과하지 않는 경우, 작업 분배 모듈(120)은 제1 MAC 연산의 일부를 하드웨어 블록-작업(154)으로 분배하지 않을 수 있다. 이때, 하드웨어 블록(130)은 MAC 처리 하드웨어 코어(136)으로 재구성되지 않을 수 있다.
MAC 처리 하드웨어 코어(136)는, 예를 들어 일련의 입력 값들(X1, X2, ?, Xm)과 일련의 가중치 값(WX1, WX2, ?, WXm)들로부터, 가중된 입력 값들의 합(X1*WX1+X2*WX2+?+Xm*WXm)을 연산하는 MAC 연산을 수행할 수 있다. 몇몇 실시예에서, MAC 처리 하드웨어 코어(136)는 곱셈 연산을 수행하는 곱셈기(Multiplier) 및 덧셈 연산을 수행하는 덧셈기(Adder)를 포함할 수 있다.
곱셈기는 입력 값(X1, X2, ?, Xm) 및 일련의 가중치 값(WX1, WX2, ?, WXm)으로부터, 가중된 입력 값(X1*WX2+X2*WX2+?+Xm*WXm)을 연산할 수 있다. 일 예로, MAC 처리 하드웨어 코어(136)의 곱셈기는 일련의 입력 값들과 일련의 입력 값들(X1, X2, ?, Xm)과 일련의 가중치 값(WX1, WX2, ?, WXm)을 직접 곱하는 곱셈기(Multiplier)를 포함할 수 있다. 다른 예로, MAC 처리 하드웨어 코어(136)의 곱셈기는, 이하의 도 5 내지 7에서 자세히 설명되는, 양자화된 가중치 데이터를 포함하는 룩업 테이블(Look-Up Table)을 포함할 수 있다.
덧셈기는 가중된 입력 값(X1*WX1, X2*WX2, ?, Xm*WXm)으로부터, 가중된 입력 값들의 합(X1*WX1+X2*WX2+?+Xm*WXm)을 연산할 수 있다.
도 5 및 6을 참조하여, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛의 MAC 처리 하드웨어 코어(136)에 대해 설명한다. 설명의 편의를 위해 도 1 내지 4에서 설명한 것과 다른 점을 위주로 설명한다. 도 5 및 6은 몇몇 실시예에 따른, DNN(Deep Neural Network) 연산을 설명하기 위한 블록도이다.
도 5를 참조하면, DNN 연산은 MAC 연산(210) 및 활성 함수 연산(220)을 포함한다.
MAC 연산(210)은 입력 값(X1, X2, ?, Xm) 및 일련의 가중치 값(WX1, WX2, ?, WXm)으로부터, 가중된 입력 값들의 합(X0*WX0+X1*WX1+?+Xm*WXm)을 연산을 연산할 수 있다. 본원의 몇몇 실시예에 따르면, MAC 연산(210)은 뉴럴 프로세싱 유닛의 MAC 처리 하드웨어 코어(136)에 의해 수행될 수 있다.
활성 함수 연산(220)은 입력 값(∑XiWi)에 기초하여 활성 함수 출력 값(f(∑XiWi))을 연산할 수 있다. 예를 들어, 활성 함수 연산(240)에 사용되는 활성 함수는 sigmoid 함수, tanh(hyperbolic tangent) 함수, 및 ReLU(Rectified Linear Unit) 함수 등을 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다. 본원의 몇몇 실시예에 따르면, 활성 함수 연산(220)은 도 9와 관련하여 후술하는 내부 메모리(internal memory)(160)에 의해 수행될 수 있다.
도 6을 참조하면, 본원의 몇몇 실시예에 따른 MAC 처리 하드웨어 코어(136)는, MAC 연산(210)을 수행하기 위해, 제1 내지 제m 디먹스(Demux)(D1, ?, Dm), 제1 내지 제m 룩업 테이블(T1, ?, Tm), 및 덧셈기(A1)를 포함할 수 있다.
제1 내지 제m 디먹스(D1, ?, Dm)는 가중치 값의 인덱스를 결정할 수 있다. 예를 들어, 제1 디먹스(T1)는 제1 입력 값(X1)에 대한 제1 가중치 값(WX1)의 제1 인덱스(IdX1=2)를 결정할 수 있다. 제2 디먹스(T2)는 제2 입력 값(X2)에 대한 제2 가중치 값(WX2)의 인덱스(IdX2=0)를 결정할 수 있다. 제m 디먹스(Tm)는 제m 입력 값(Xm)에 대한 제m 가중치 값(WXm)의 인덱스(IdXm=1)를 결정할 수 있다. 가중치 값의 인덱스에 대해서는, 이하의 도 7에서 자세히 설명한다.
제1 내지 제m 룩업 테이블(T1, ?, Tm)은 입력 데이터와 양자화된 일련의 가중치 값의 곱셈 값을 포함할 수 있다. 예를 들어, 제1 룩업 테이블(T1)은 제1 입력 데이터(X1)와 양자화된 일련의 가중치 값(W'0, W'1, ?, W'15)의 곱셈 값(X1*W'0, X1*W'1, ?, X1*W'15)을 포함할 수 있다. 제2 룩업 테이블(T2)은 제2 입력 데이터(X2)와 양자화된 일련의 가중치 값(W'0, W'1, ?, W'15)의 곱셈 값(X2*W'0, X2*W'1, ?, X2*W'15)을 포함할 수 있다. 제m 룩업 테이블(Tm)은 제m 입력 데이터(Xm)와 양자화된 일련의 가중치 값(W'0, W'1, ?, W'15)의 곱셈 값(Xm*W'0, Xm*W'1, ?, Xm*W'15)을 포함할 수 있다. 양자화된 일련의 가중치 값에 대해서는, 이하의 도 7에서 자세히 설명한다.
제1 내지 제m 디먹스(D1, ?, Dm)는 룩업 테이블의 인덱스에 해당하는 양자화된 데이터를 덧셈기(A1)로 송신할 수 있다. 예를 들어, 제1 디먹스(T1)는 제1 룩업 테이블(T1)의 제1 인덱스(IdX1=2)에 해당하는 "입력 데이터(X1)와 양자화된 가중치 데이터(W'2)를 곱한 값(X1*W'2)"을 덧셈기(A1)로 송신할 수 있다. 제2 디먹스(T2)는 제2 룩업 테이블(T2)의 제2 가중치 값(WX2)의 제2 인덱스(IdX2=0)에 해당하는 "입력 데이터(X2)와 양자화된 가중치 데이터(W'0)를 곱한 값(X2*W'0)"을 덧셈기(A1)로 송신할 수 있다. 제m 디먹스(Tm)는 제m 룩업 테이블(Tm)의 제m 가중치 값(WXm)의 제m 인덱스(IdXm=1)에 해당하는 "입력 데이터(Xm)와 양자화된 가중치 데이터(W'1)를 곱한 값(Xm*W'1)"을 덧셈기(A1)로 송신할 수 있다.
덧셈기(A1)는 제1 내지 제m 디먹스(D1, ?, Dm)로부터 송신된 가중치 데이터(X1*W'2, X2*W'0, ..., Xm*W'1)들의 합(X1*W'2+X2*W'0+Xm*W'1)을 연산할 수 있다. 덧셈기(A1)로부터의 결과 값은 활성 함수 연산(220)으로 입력될 수 있다.
이처럼, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛(100)의 하드웨어 블록(130)이, 양자화된 가중치 데이터를 포함하는 룩업 테이블을 이용하여 MAC 연산을 수행하는, MAC 처리 하드웨어 코어(136)로 재구성되는 경우, 일반적인 MAC 연산에서 수행되는 입력 값과 가중치 값들의 곱셈 연산을 생략할 수 있다. 따라서, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛(100)은 어플리케이션 작업(150)을 빠르게 처리할 수 있고, 동시에 리소스를 절약할 수 있다.
도 7을 참조하여, 양자화된 가중치 데이터와 가중치 값의 인덱스에 대해 설명한다. 도 7은 양자화된 가중치 데이터를 설명하기 위한 도면이다. 도 7에 도시된 그래프에서, 가로 축은 가중치 값의 크기를 나타내고, 세로 축은 가중치 값의 분포를 나타낸다. 도 7의 가중치 값은 정규 분포(normal distribution)을 따르는 것으로 도시되었으나, 이에 제한된 것은 아니다.
도 7을 참조하면, 가중치 값의 분포는 복수의 영역을 포함할 수 있다. 예를 들어, 가중치 값의 분포는 동일한 넓이를 갖는 제0 내지 제15 영역(R0, R1, ..., R15)을 포함할 수 있다. 또한, 가중치 값의 분포는 동일한 넓이를 갖는 128개의 영역을 포함할 수 있다.
복수의 영역(R0, R1, ..., R15)은 각각 하나의 양자화된 가중치 데이터(W'0, W'1, ..., W'15)를 포함할 수 있다. 일 예로, 양자화된 가중치 데이터(W'0, W'1, ..., W'15)는 각각의 영역에서의 중앙 값(median value)일 수 있다. 즉, R1 영역의 가로 축이 W'1i 부터 W'1f 인 경우, W'1i 부터 W'1 까지의 영역의 넓이는 W'1 부터 W'1f 까지의 영역 넓이와 같을 수 있다. 다른 예로, 양자화된 가중치 데이터(W'0, W'1, ?, W'15)는 각각의 영역에서의 중심 값(Mean Value)일 수 있다. 즉, R1 영역의 가로 축이 W'1i 부터 W'1f 인 경우, W'1 은 (W'1i +W'1f)/2 일 수 있다.다시 도 6을 참조하면, MAC 처리 하드웨어 코어(136)의 제1 내지 제m 디먹스(D1, ?e, Dm)는 각각의 입력 값들(X1, X2, ?, Xm)에 대한 가중치 값(WX1, WX2, ?, WXm)의 인덱스를 결정할 수 있다. 예를 들어, 제1 디먹스(D1)는 제1 입력 값(X1)에 대한 제1 가중치 값(WX1)이, 도 7에 도시된, 가중치 값의 분포의 복수의 영역에서 어느 영역에 포함되는지에 기초하여, 인덱스를 결정할 수 있다. 예를 들어, 제1 가중치 값(WX1)이 제2 영역(R2)에 포함되는 경우, 제1 인덱스(IdX1)는 2로 결정될 수 있다. 제2 가중치 값(WX2)이 제0 영역(R0)에 포함되는 경우, 제2 인덱스(IdX1)는 0으로 결정될 수 있다. 제m 가중치 값(WXm)이 제1 영역(R1)에 포함되는 경우, 제m 인덱스(IdXm)는 1로 결정될 수 있다.
이하, 도 8을 참조하여, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛에 대해 설명한다. 설명의 편의를 위해 도 1 내지 7에서 설명한 것과 다른 점을 위주로 설명한다. 도 8은 몇몇 실시예에 따른, 뉴럴 프로세싱 유닛의 블록도이다.
도 8을 참조하면, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛(102)은 제1 프로세싱 코어(110), 제2 프로세싱 코어(112), 작업 분배 모듈(120), 하드웨어 블록(130), 및 버스(140)을 포함할 수 있다.
뉴럴 프로세싱 유닛(100)은 어플리케이션 작업(150)을 수행할 수 있다. 어플리케이션 작업(150)은 제1 프로세싱 코어-작업(152), 제2 프로세싱 코어-작업(156), 또는 하드웨어 블록-작업(154)을 포함할 수 있다. 제2 프로세싱 코어-작업(156)은 이하에서 설명될 제2 프로세싱 코어(112)에 의해 수행될 수 있다.
제1 프로세싱 코어(110)는 제2 뉴럴 네트워크 연산을 수행할 수 있다. 즉, 제2 프로세싱 코어-작업(156)은 제2 뉴럴 네트워크 연산을 포함할 수 있다. 예를 들어, 제2 뉴럴 네트워크 연산은 CNN 연산일 수 있고, 제2 프로세싱 코어(112)는 CNN 연산을 처리하기 위한 CNN IP 코어일 수 있다. 또한, 제2 뉴럴 네트워크 연산은 RNN 연산일 수 있고, 제2 프로세싱 코어(112)는 RNN 연산을 처리하기 위한 RNN IP 코어일 수 있다. 이와 같이, 본 명세서에서는, 제2 뉴럴 네트워크 연산의 예시로, CNN 연산과 RNN 연산을 설명하였으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
제2 뉴럴 네트워크 연산은 제1 뉴럴 네트워크 연산과는 상이한 종류의 뉴럴 네트워크 연산일 수 있다. 일 예로, 제1 뉴럴 네트워크 연산이 CNN 연산인 경우, 제2 뉴럴 네트워크 연산은 RNN 연산일 수 있다. 다른 예로, 제1 뉴럴 네트워크 연산이 RNN 연산인 경우, 제2 뉴럴 네트워크 연산은 CNN 연산일 수 있다.
작업 분배 모듈(120)은 어플리케이션 작업(150)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 작업 분배 모듈(120)은 제1 프로세싱 코어(110)의 제1 워크로드(workload)와 제2 프로세싱 코어(112)의 제2 워크로드에 기초하여, 어플리케이션 작업(150)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 예를 들어, 작업 분배 모듈(120)은 버스(140)를 통해 제1 프로세싱 코어로부터 제1 워크로드를, 제2 프로세싱 코어(112)로부터 제2 워크로드를 수신할 수 있다. 또한, 작업 분배 모듈(120)은 수신된 제1 워크로드 및 제2 워크로드에 기초하여, 어플리케이션 작업(150)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다.
몇몇 실시예에서, 작업 분배 모듈(120)은 뉴럴 프로세싱 유닛(102)으로 입력된 어플리케이션 작업(150)을 제1 프로세싱 코어(110), 제2 프로세싱 코어(112) 및 하드웨어 블록(130)에 분배할 수 있다. 예를 들어, 작업 분배 모듈(120)은, 어플리케이션 작업(150) 중, 제1 뉴럴 네트워크 연산을 제1 프로세싱 코어-작업(152)으로 분배하고, 제2 뉴럴 네트워크 연산을 제2 프로세싱 코어-작업(156)으로 분배하고, 나머지 연산을 하드웨어 블록-작업(154)으로서 하드웨어 블록(130)에 분배할 수 있다.
몇몇 실시예에서, 작업 분배 모듈(120)은 제1 워크로드 및 제2 워크로드에 기초하여, 제1 프로세싱 코어-작업(152)의 일부 또는 제2 프로세싱 코어-작업(156)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 예를 들어, 작업 분배 모듈(120)은 제1 워크로드의 양과 제2 워크로드의 양을 비교하여, 제1 프로세싱 코어-작업(152)의 일부 또는 제2 프로세싱 코어-작업(156)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 일 예로, 작업 분배 모듈(120)은, 만약 제1 워크로드의 양이 제2 워크로드의 양 보다 큰 경우, 제1 프로세싱 코어-작업(152)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 이때, 제1 프로세싱 코어-작업(152)에 포함된 제1 뉴럴 네트워크 연산의 일부가 하드웨어 블록-작업(154)으로 분배될 수 있다. 다른 예로, 작업 분배 모듈(120)은, 만약 제1 워크로드의 양이 제2 워크로드의 양 보다 작은 경우, 제2 프로세싱 코어-작업(156)의 일부를 하드웨어 블록-작업(154)으로 분배할 수 있다. 이때, 제2 프로세싱 코어-작업(156)에 포함된 제2 뉴럴 네트워크 연산의 일부가 하드웨어 블록-작업(154)으로 분배될 수 있다.
이하, 도 5 및 9를 참조하여, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛에 대해 설명한다. 설명의 편의를 위해 도 1 내지 8에서 설명한 것과 다른 점을 위주로 설명한다. 도 9는 몇몇 실시예에 따른, 뉴럴 프로세싱 유닛의 블록도이다.
도 9을 참조하면, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 유닛(104)은 제1 프로세싱 코어(110), 작업 분배 모듈(120), 하드웨어 블록(130), 버스(140) 및 내부 메모리(Internal Memory, 160)을 포함할 수 있다.
내부 메모리(160)는 뉴럴 네트워크 연산에서 사용되는 함수 데이터를 저장할 수 있다. 예를 들어, 내부 메모리(160)는 제1 프로세싱 코어-작업(152) 또는 하드웨어 블록-작업(154)에 포함된 제1 뉴럴 네트워크 연산 또는 제2 뉴럴 네트워크 연산에서 사용되는 함수 데이터를 저장할 수 있다.
좀 더 구체적으로, 내부 메모리(160)는, 도 5의 활성 함수 연산(220)에서 사용되는 활성 함수의 함수 데이터를 저장할 수 있다. 함수 데이터는 활성 함수에 대한 키(Key) 및 값(Value)를 포함할 수 있다. 키(key)는 활성 함수의 입력 데이터(예를 들어, k)이고, 값(Value)는 활성 함수의 출력 데이터(예를 들어, f(k))일 수 있다. 따라서, 내부 메모리(160)를 사용함으로써, DNN 연산에서 활성 함수 연산을 직접 수행하는 대신에, 미리 저장된 출력 데이터를 리드할 수 있다. 이는 DNN 연산을 처리하는데 걸리는 시간을 효과적으로 감소시킬 수 있다.
내부 메모리(160)는 복수의 활성 함수의 함수 데이터를 저장할 수 있다. 예를 들어, 내부 메모리(160)는 tanh 함수의 함수 데이터와 ReLU 함수의 함수 데이터를 동시에 저장할 수 있다. 예를 들어, 제1 뉴럴 네트워크 연산에서 Sigmoid 함수가 사용되고, 제2 뉴럴 네트워크 연산에서 ReLU 함수가 사용되는 경우, 내부 메모리(160)는 Sigmoid 함수 및 ReLU 함수의 함수 데이터를 저장할 수 있다.
몇몇 실시예에서, 하드웨어 블록(130)이 제1 뉴럴 네트워크 연산을 수행하기 위한 제1 하드웨어 코어로 재구성되는 경우, 내부 메모리(160)는 제1 뉴럴 네트워크의 연산에 사용되는 활성 함수의 함수 데이터를 저장할 수 있다. 또한, 하드웨어 블록(130)이 제2 뉴럴 네트워크 연산을 수행하기 위한 제2 하드웨어 코어로 재구성되는 경우, 내부 메모리(160)는 제2 뉴럴 네트워크의 연산에 사용되는 활성 함수의 함수 데이터를 저장할 수 있다.
몇몇 실시예에서, 내부 메모리(160)는 제1 프로세싱 코어(110) 또는 하드웨어 블록(130)에서 수행되는 연산에 따라, 저장된 함수 데이터를 업데이트할 수 있다. 또한, 하드웨어 블록(130)이 제1 하드웨어 코어 또는 제2 하드웨어 코어로 재구성된 경우, 내부 메모리(160)는, 제1 하드웨어 코어 또는 제2 하드웨어 코어에서 수행되는 연산에 따라, 저장된 함수 데이터를 업데이트할 수 있다.
내부 메모리(160)는 저장된 함수 데이터를 업데이트하기 위해 기존에 저장된 함수 데이터를 삭제하고, 뉴럴 프로세싱 유닛(104)의 외부에 배치된 메모리로부터의 새로운 함수 데이터를 저장할 수 있다. 또한, 내부 메모리(160)는, 뉴럴 프로세싱 유닛(104)이 어플리케이션 작업을 수행하는 도중, 저장된 함수 데이터를 업데이트할 수 있다.
몇몇 실시예에서, 내부 메모리(160)는 CAM(Content-addressable memory)일 수 있다. 몇몇 실시예에서, Binary-CAM 또는 TCAM(Ternary CAM)일 수 있다.
이하, 도 5, 9, 및 10을 참조하여, 본원의 몇몇 실시예에 따른 내부 메모리에 저장된 함수 데이터에 대해 설명한다. 도 10은 함수 데이터를 설명하기 위한 도면이다. 도 10은 활성 함수가 tanh인 경우를 도시되었으나, 이에 제한된 것은 아니다. 도 10에서, 가로 축은 함수의 입력 도메인(x), 세로 축은 함수의 출력 도메인(y)을 나타낸다.
몇몇 실시예에서, 내부 메모리(160)는 활성 함수의 일부 영역을 포함하는 함수 데이터를 저장할 수 있다. 예를 들어, 내부 메모리(160)에 저장된 함수 데이터는, 도 10에 도시된, 데이터 영역(RD)의 함수 데이터를 포함할 수 있다. 데이터 영역(RD)은 tanh 함수의 일부 영역일 수 있다. 예를 들어, 데이터 영역(RD)은 특정 도메인(예를 들어, -1.5<x<1.5)을 갖는 영역일 수 있다. 내부 메모리(160)는 활성 함수의 전체 데이터가 아닌, 활성 함수의 일부 영역을 포함하는 함수 데이터를 저장함으로써, 리소스를 절약할 수 있다.
이하, 도 11 내지 13을 참조하여, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 시스템에 대해 설명한다. 설명의 편의를 위해 도 1 내지 10에서 설명한 것과 다른 점을 위주로 설명한다. 도 11 내지 13은 몇몇 실시예에 따른, 뉴럴 프로세싱 시스템의 블록도이다.
도 11을 참조하면, 본원의 몇몇 실시예에 따른 뉴럴 프로세싱 시스템(200)은 뉴럴 프로세싱 유닛(104) 및 외부 메모리(external memory, 170)을 포함한다.
외부 메모리(170)는 뉴럴 프로세싱 유닛(104)의 하드웨어 블록(130)을 재구성하기 위한 메타 데이터(meta data)를 저장할 수 있다. 예를 들어, 외부 메모리(170)는 하드웨어 블록(130)을 CNN 처리 하드웨어 코어(132)로 재구성하기 위한 CNN 재구성 데이터 또는 하드웨어 블록(130)을 RNN 처리 하드웨어 코어(134)로 재구성 하기 위한 RNN 재구성 데이터를 포함할 수 있다. 또한, 외부 메모리(170)는 하드웨어 블록(130)을 MAC 처리 하드웨어 코어(136)로 재구성하기 위한 MAC 재구성 데이터를 포함할 수 있다. 예를 들어, MAC 재구성 데이터는 하드웨어 블록(130)을 양자화된 가중치 데이터를 저장하는 룩업 테이블을 포함하는 MAC 처리 하드웨어 코어(136)로 재구성하기 위한 재구성 데이터를 포함할 수 있다.
외부 메모리(170)는 제1 뉴럴 프로세싱 코어(110) 또는 하드웨어 블록(130)에서 사용되는 모든 함수 데이터를 저장할 수 있다. 외부 메모리(170)는 제1 프로세싱 코어(110) 또는 하드웨어 블록(130)에서 수행되는 연산에 따라, 뉴럴 프로세싱 유닛으로 저장된 함수 데이터를 제공할 수 있다. 외부 메모리(170)로부터 제공된 함수 데이터는 내부 메모리(160)에 저장될 수 있다. 외부 메모리(170)로부터 제공된 함수 데이터를 사용하여, 내부 메모리(160)에 저장된 함수 데이터가 업데이트될 수 있다.
예를 들어, 도 12 및 13를 참조하면, 외부 메모리(170)는 하드웨어 블록(130)을 제1 하드웨어 코어로 재구성하기 위한 제1 메타 데이터(Meta data 1) 및 하드웨어 블록(130)을 제2 하드웨어 코어로 재구성하기 위한 제2 메타 데이터(Meta data 2)를 포함한다. 또한, 외부 메모리(170)는 제1 활성 함수 데이터(f1(x)) 및 제2 활성 함수 데이터(f2(x))를 포함한다.
도 12에서, 외부 메모리(170) 뉴럴 프로세싱 유닛에 제1 메타 데이터를 제공할 수 있다. 이때, 하드웨어 블록(130)은 제1 하드웨어 코어로 재구성될 수 있다. 또한, 외부 메모리(170) 뉴럴 프로세싱 유닛에 제1 활성 함수 데이터를 제공할 수 있다. 이때, 제1 활성 함수 데이터는 내부 메모리(160)에 저장될 수 있다.
도 13에서, 외부 메모리(170) 뉴럴 프로세싱 유닛에 제2 메타 데이터를 제공할 수 있다. 이때, 하드웨어 블록(130)은 제2 하드웨어 코어로 재구성될 수 있다. 또한, 외부 메모리(170) 뉴럴 프로세싱 유닛에 제2 활성 함수 데이터를 제공할 수 있다. 이때, 제2 활성 함수 데이터는 내부 메모리(160)에 저장될 수 있다.
외부 메모리(170)는 통상적으로 사용될 수 있는 메모리 장치일 수 있다. 예를 들어, 외부 메모리(170)는 DRAM 또는 플래쉬 메모리일 수 있다. 또한, 외부 메모리는 플래쉬 메모리를 포함하는 SSD(Solid State Drive) 장치일 수 있으나, 이에 제한된 것은 아니다.
이하, 도 14를 참조하여, 본원의 몇몇 실시예에 따른 어플리케이션 시스템에 대해 설명한다. 도 14는 몇몇 실시예에 따른 어플리케이션 시스템의 블록도이다.
도 14를 참조하면, 본원의 몇몇 실시예에 따른 어플리케이션 시스템(application system, 300)은 소프트웨어 계층(software level, 310), 커널 계층(kernel level, 320), 및 하드웨어 계층(hardware level, 330)을 포함한다. 도 14에 개시된 어플리케이션 시스템(300)은 설명의 편의상 소프트웨어 계층(310), 커널 계층(320), 및 하드웨어 계층(330)을 포함하는 것으로 도시되었으나 이에 제한되는 것은 아니다. 또한, 소프트웨어 계층(310), 커널 계층(320), 및 하드웨어 계층(330)은 어플리케이션 시스템(300)의 동작을 설명하기 위한 개념적인 계층일 수 있다.
몇몇 실시예에서, 어플리케이션(310)은 소프트웨어 계층(310)에서 실행된다. 예를 들어, 소프트웨어 계층(310)은, 이하에서 설명되는 것과 같이, CPU(331), GPU(334), 또는 뉴럴 프로세싱 유닛(106)에서 수행되는 어플리케이션 작업들이 수행되는 것을 나타낼 수 있다.
몇몇 실시예에서, 하드웨어 계층(330)은 뉴럴 프로세싱 유닛(106), CPU(331), 메모리(332), DMA(direct memory access, 333), 및 GPU(334)을 포함할 수 있다.
몇몇 실시예에서, 뉴럴 프로세싱 유닛(106)은 제1 프로세싱 코어, 작업 분배 모듈, 하드웨어 블록 및 버스를 포함할 수 있다. 일 예로, 뉴럴 프로세싱 유닛(106)은, 도 1 내지 4를 참조하여 설명된 뉴럴 프로세싱 유닛(100)일 수 있다. 다른 예로, 뉴럴 프로세싱 유닛(106)은 도 8를 참조하여 설명된 뉴럴 프로세싱 유닛(102)일 수 있다. 또 다른 예로, 뉴럴 프로세싱 유닛(106)은 도 9를 참조하여 설명된 뉴럴 프로세싱 유닛(104)일 수 있다.
CPU(331)는 어플리케이션(312)의 실행을 위한 작업을 수행할 수 있다. 예를 들어, 사용자 장비에서 어플리케이션(312)의 실행을 요청하는 경우, CPU(331)는 어플리케이션(312)의 실행을 위한 일련의 어플리케이션 작업들을 수행할 수 있다. 또한, CPU(331)는 어플리케이션 작업들 중 일부를 뉴럴 프로세싱 유닛(106) 또는 GPU(334)로 분배할 수 있다. 몇몇 실시예에서, CPU(331)는 어플리케이션(312) 실행에 필요한 작업들 중 제1 뉴럴 네트워크 연산을 포함하는 어플리케이션 작업을 뉴럴 프로세싱 유닛(106)으로 분배할 수 있다. 또한, CPU(331)는 어플리케이션 실행에 필요한 작업들 중 일부 어플리케이션 작업을 GPU(334)로 분배할 수 있다.
몇몇 실시예에서, 어플리케이션은 컴파일될 때, 어플리케이션 작업이 각각 어느 프로세서(예를 들어, CPU(331), GPU(334), 또는 뉴럴 프로세싱 유닛(106))에서 수행될지를 결정할 수 있다. CPU(331)는, 컴파일된 파일로부터 어플리케이션 작업들에 대한 정보를 식별하여, 특정 어플리케이션 작업을 NPU(106)에 분배할지 또는 GPU(334)에 분배할지 여부를 결정할 수 있다.
몇몇 실시예에서, CPU(331)는 통상적으로 사용되는 중앙 처리 장치일 수 있다. 예를 들어, CPU(331)는 레지스터, 프로그램 카운터, 명령어 레지스터, 산술논리 연산 장치, 제어부, 및 내부 버스 등으로 구성될 수 있으며, 설명의 편의를 위해, CPU(331)의 구조에 대한 자세한 설명은 생략한다.
GPU(334)는 CPU(331)로부터 분배된 어플리케이션 작업을 수행할 수 있다. 예를 들어, CPU(331)는 이미지 연산 등을 포함하는 어플리케이션 작업을 GPU(334)에 분배할 수 있다. GPU(334)는 이미지 연산 등을 포함하는 어플리케이션 작업을 수행한 뒤, 수행 결과를 CPU(331)에게 전달할 수 있다.
몇몇 실시예에서, GPU(334)는 통상적으로 사용될 수 있는 그래픽 프로세싱 장치일 수 있다. 예를 들어, GPU(334)는 다수의 ALU(arithmetic logic unit)를 포함할 수 있으나, 이에 제한된 것은 아니다.
메모리(332)는 어플리케이션(312)의 실행을 위한 데이터를 저장할 수 있다. 예를 들어, 메모리(332)는 어플리케이션(312)의 실행을 위한 프로그램 코드 또는 라이브러리 코드 등을 저장할 수 있다. 구체적으로 예를 들면, CPU(331)에서 어플리케이션(312)이 실행되는 경우, 메모리(332)는 SSD 장치 등과 같은 외부 저장 장치로부터 어플리케이션(312)의 실행을 위한 프로그램 코드 또는 라이브러리 코드 등을 불러올 수 있다.
프로그램 코드는 어플리케이션(312)을 수행하기 위한 코드일 수 있다. 몇몇 실시예에서, 프로그램 코드는 CPU(331), GPU(334), 또는 뉴럴 프로세싱 유닛(106)에서 수행될 수 있다. 예를 들어, 어플리케이션(312)의 실행을 위한 어플리케이션 작업은 프로그램 코드의 형태로 메모리에 저장될 수 있다.
라이브러리 코드는 어플리케이션(312)을 실행하는데 필요한 함수 데이터 등을 포함할 수 있다. 예를 들어, GPU(334) 또는 뉴럴 프로세싱 유닛(106)에서 어플리케이션 작업을 수행하는 경우, GPU(334) 또는 뉴럴 프로세싱 유닛(106)은 어플리케이션 작업을 수행하는데 필요한 함수 데이터를 메모리에 저장된 라이브러리 코드에서 불러올 수 있다.
메모리(332)는 뉴럴 프로세싱 유닛(106)의 하드웨어 블록을 재구성하기 위한 메타 데이터를 저장할 수 있다. 예를 들어, 메모리(332)는 하드웨어 블록을 제1 뉴럴 네트워크 연산을 수행하기 하드웨어 코어로 재구성하기 위한 재구성 데이터를 저장할 수 있다. 또한, 메모리(332)는 하드웨어 블록을 RNN, CNN, 또는 MAC 연산을 처리하기 위한 하드웨어 코어로 재구성하기 위한 재구성 데이터를 저장할 수 있다.
몇몇 실시예에서, 메모리(332)는 통상적으로 사용될 수 있는 메모리 장치일 수 있다. 예를 들어, 메모리(332)는 DRAM일 수 있으나, 이에 제한된 것은 아니다.
DMA(333)는 CPU(331)의 개입없이, 메모리(332)에 저장된 데이터를 GPU(334) 또는 뉴럴 프로세싱 유닛(106)로 전달할 수 있다. 예를 들어, DMA(333)는, GPU(334) 또는 뉴럴 프로세싱 유닛(106)에서 어플리케이션 작업을 하는데 필요한 함수 데이터를 요청하는 경우, CPU(331)를 통하지 않고 메모리(332)에 저장된 함수 데이터를 GPU(334) 또는 뉴럴 프로세싱 유닛(106)으로 전달할 수 있다. 몇몇 실시예에서, DMA(333)는 메모리(332)에 저장된 메타 데이터를 뉴럴 프로세싱 유닛(106)으로 전달할 수 있다.
DMA(333)는 통상적으로 사용될 수 있는 DMA일 수 있다. 예를 들어, DMA(333)는 소스 레지스터, destiny 레지스터, 카운터 레지스터, CPU 컨트롤 레지스터, 또는 버스 컨트롤러를 포함하는 하드웨어로 구현될 수 있으나, 이에 제한된 것은 아니다.
커널 계층(320)은 재구성 로더(322)를 포함할 수 있다. 몇몇 실시예에서, 재구성 로더(322)는 하드웨어 계층(330)에 포함된 DMA(333), CPU(331), 또는 뉴럴 프로세싱 유닛(106)과 연결되어, 메모리(332)로부터 뉴럴 프로세싱 유닛(106)으로 메타 데이터를 전달할 수 있다.
좀 더 구체적으로, 뉴럴 프로세싱 유닛(106)의 작업 분배 모듈은 CPU(331)로부터 분배된 어플리케이션 작업 중 일부를 하드웨어 블록-작업으로 할당할 수 있다. 예를 들어, 뉴럴 프로세싱 유닛(106)의 작업 분배 모듈은, 제1 프로세싱 코어의 제1 워크로드에 따라, 어플리케이션 작업의 일부를 하드웨어 블록-작업으로 할당할 수 있다. 뉴럴 프로세싱 유닛(106)은 재구성 로더(322)로 하드웨어 블록을 하드웨어 블록-작업을 수행하는 하드웨어 코어로 재구성하기 위한 메타 데이터를 요청할 수 있다. 예를 들어, 뉴럴 프로세싱 유닛(106)은, 제1 프로세싱 코어의 제1 워크로드에 따라, 재구성 로더(322)로 메타 데이터를 요청할 수 있다. 재구성 로더(322)는 DMA(333)를 사용하여 메모리(332)에 저장된 메타 데이터를 뉴럴 프로세싱 유닛(106)으로 전달할 수 있다. 또한, 재구성 로더(322)는, DMA(333)의 사용이 불가능한 경우, CPU(331)를 사용하여 메모리(332)에 저장된 메타 데이터를 뉴럴 프로세싱 유닛(106)으로 전달할 수 있다.
이하, 도 14 내지 16을 참조하여, 본원의 몇몇 실시예에 따른 어플리케이션 시스템에서 수행되는 어플리케이션 작업의 플로우에 대해 설명한다. 도 15는 몇몇 실시예에 따른 어플리케이션 작업의 플로우(flow)를 나타내는 블록도이다. 도 16은 몇몇 실시예에 따른 메모리 내의 데이터 플로우를 나타내는 블록도이다.
도 15를 참조하면, 어플리케이션의 실행을 위해서 제1 내지 제m 어플리케이션 작업이 실행될 수 있다. 몇몇 실시예에서, 제1 내지 제m 어플리케이션 작업은 각각 CPU, GPU, 또는 뉴럴 프로세싱 유닛(NPU)에 의해 수행될 수 있다. 예를 들어, 제1, 제m-2, 및 제m 어플리케이션 작업은 CPU에서 수행되고, 제3 및 제m-1 어플리케이션 작업은 뉴럴 프로세싱 유닛에서 수행되고, 제2 어플리케이션 작업은 GPU에서 수행될 수 있다.
도 16을 참조하면, 어플리케이션이 실행되는 경우, 메모리(332)로부터 프로그램 코드 또는 라이브러리 코드가 리드될 수 있다. 몇몇 실시예에서, 도 15와 같이 제1 내지 제m 어플리케이션 작업이 실행되는 경우, 메모리(332)로부터 CPU 프로그램 코드, GPU 라이브러리 코드, 또는 NPU 라이브러리 코드가 리드될 수 있다. 예를 들어, CPU(331)에서 제1, m-2, 및 제m 어플리케이션 작업이 수행되는 경우, CPU(331)는 메모리(332)로부터 CPU 프로그램 코드를 리드할 수 있다. 또한, 뉴럴 프로세싱 유닛(106)에 의해서 제3 및 제m-1 어플리케이션 작업이 수행되는 경우, DMA(333) 또는 CPU(331)는 메모리(332)에 저장된 뉴럴 프로세싱 유닛 라이브러리 코드를 리드하여 뉴럴 프로세싱 유닛(106)으로 전달할 수 있다. 또한, GPU(334)에 의해서 제2 어플리케이션 작업이 수행되는 경우, DMA(333) 또는 CPU(331)는 메모리(332)에 저장된 GPU 라이브러리 코드를 리드하여 GPU(334)로 전달할 수 있다. 이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100, 102, 104, 106: 뉴럴 프로세싱 유닛(Neural Processing Unit)
200: 뉴럴 프로세싱 시스템(Neural Processing System)
300: 어플리케이션 시스템(Application System)

Claims (10)

  1. 제1 뉴럴 네트워크 연산(Neural Network)을 포함하는 어플리케이션 작업(Application-Work)을 수행하는 뉴럴 프로세싱 유닛(Neural Processing Unit)으로서,
    상기 제1 뉴럴 네트워크 연산을 수행하는 제1 프로세싱 코어(processing core);
    상기 제1 프로세싱 코어의 제1 워크로드(workload)에 따라, 상기 어플리케이션 작업의 일부를 하드웨어 블록-작업(hardware block-work)으로 분배하는 작업 분배 모듈(work distributing module); 및
    상기 하드웨어 블록-작업을 수행하는 하드웨어 코어로 재구성되는 하드웨어 블록을 포함하는, 뉴럴 프로세싱 유닛.
  2. 제1항에 있어서,
    상기 작업 분배 모듈은 상기 제1 워크로드가 미리 정의된 값을 초과하는지 여부에 따라, 상기 제1 뉴럴 네트워크 연산의 일부를 상기 하드웨어 블록-작업으로 분배하는, 뉴럴 프로세싱 유닛.
  3. 제1항에 있어서,
    상기 제1 프로세싱 코어에 의해 수행되는 상기 제1 뉴럴 네트워크 연산은 제1 MAC(Multiply and Accumulate) 연산을 더 포함하고,
    상기 작업 분배 모듈은, 상기 제1 워크로드에서 상기 제1 MAC 연산이 차지하는 비율에 기초하여, 상기 제1 MAC 연산의 일부를 상기 하드웨어 블록-작업으로 분배하는, 뉴럴 프로세싱 유닛.
  4. 제1항에 있어서,
    상기 하드웨어 블록-작업이 MAC 연산인 경우, 상기 하드웨어 블록은 양자화된 가중치 데이터를 포함하는 룩업 테이블(Look Up-Table)을 이용하여 상기 MAC 연산을 수행하는 MAC 처리 하드웨어 코어로 재구성되는 뉴럴 프로세싱 유닛.
  5. 제1항에 있어서,
    상기 어플리케이션 작업은 상기 제1 뉴럴 네트워크 연산과 다른 제2 뉴럴 네트워크 연산을 포함하고,
    상기 뉴럴 프로세싱 유닛은, 상기 제2 뉴럴 네트워크 연산을 수행하는 제2 프로세싱 코어를 더 포함하되,
    상기 작업 분배 모듈은, 상기 제1 워크로드와 상기 제2 프로세싱 코어의 제2 워크로드에 기초하여, 상기 제1 뉴럴 네트워크 연산의 일부 또는 상기 제2 뉴럴 네트워크 연산의 일부를 상기 하드웨어 블록-작업으로 분배하는, 뉴럴 프로세싱 유닛.
  6. 제1 뉴럴 네트워크의 연산을 수행하기 위한 제1 하드웨어 코어 또는 상기 제1 뉴럴 네트워크와는 상이한 제2 뉴럴 네트워크의 연산을 수행하는 제2 하드웨어 코어로 재구성가능한(reconfigurable) 하드웨어 블록; 및
    상기 제1 뉴럴 네트워크의 연산 또는 상기 제2 뉴럴 네트워크의 연산에서 사용되는 함수 데이터를 저장하는 내부 메모리(internal memory)를 포함하는, 뉴럴 프로세싱 유닛.
  7. 제6항에 있어서,
    상기 내부 메모리는, 상기 하드웨어 블록이 상기 제1 하드웨어 코어로 재구성되는 경우 상기 제1 뉴럴 네트워크의 연산에 사용되는 함수 데이터를 저장하고, 상기 하드웨어 블록이 상기 제2 하드웨어 코어로 재구성되는 경우 상기 제2 뉴럴 네트워크의 연산에 사용되는 함수 데이터를 저장하는, 뉴럴 프로세싱 유닛.
  8. 제7항에 있어서,
    상기 내부 메모리는, 상기 제1 하드웨어 코어 또는 상기 제2 하드웨어 코어에서 수행되는 연산에 따라, 저장된 상기 함수 데이터를 업데이트하는, 뉴럴 프로세싱 유닛.
  9. 어플리케이션을 실행(executing)하고, 상기 어플리케이션 실행에 필요한 작업들 중 제1 뉴럴 네트워크 연산을 포함하는 제1 어플리케이션 작업을 분배하는 CPU;
    상기 제1 뉴럴 네트워크 연산을 수행하기 위한 제1 프로세싱 코어와 재구성가능한 하드웨어 블록을 포함하고, 상기 제1 프로세싱 코어와 상기 하드웨어 블록을 이용하여 상기 CPU에 의해 분배된 상기 제1 어플리케이션 작업을 수행하는 뉴럴 프로세싱 유닛; 및
    상기 하드웨어 블록을 재구성하기 위한 메타 데이터를 상기 뉴럴 프로세싱 유닛으로 전달하는 재구성 로더(reconfiguration loader)를 포함하는 어플리케이션 시스템(Application System).
  10. 제9항에 있어서,
    상기 뉴럴 프로세싱 유닛은, 상기 제1 프로세싱 코어의 제1 워크로드에 따라, 상기 제1 어플리케이션 작업의 일부를 하드웨어 블록-작업으로 분배하는 작업 분배 모듈을 포함하고,
    상기 메타 데이터는, 상기 하드웨어 블록을, 상기 하드웨어 블록-작업을 수행하는 하드웨어 코어로 재구성하기 위한 제1 재구성 데이터를 포함하고,
    상기 재구성 로더는, 상기 제1 워크로드에 따라, 상기 제1 재구성 데이터를 상기 뉴럴 프로세싱 유닛으로 전달하는, 어플리케이션 시스템.

KR1020180137345A 2018-11-09 2018-11-09 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템 KR20200053886A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180137345A KR20200053886A (ko) 2018-11-09 2018-11-09 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템
US16/439,928 US11733968B2 (en) 2018-11-09 2019-06-13 Neural processing unit, neural processing system, and application system
CN201910836241.2A CN111178494A (zh) 2018-11-09 2019-09-05 神经处理单元、神经处理系统和应用系统
TW108136017A TW202018599A (zh) 2018-11-09 2019-10-04 神經處理單元
US18/342,385 US11995417B2 (en) 2018-11-09 2023-06-27 Neural processing unit, neural processing system, and application system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180137345A KR20200053886A (ko) 2018-11-09 2018-11-09 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템

Publications (1)

Publication Number Publication Date
KR20200053886A true KR20200053886A (ko) 2020-05-19

Family

ID=70550567

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180137345A KR20200053886A (ko) 2018-11-09 2018-11-09 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템

Country Status (4)

Country Link
US (2) US11733968B2 (ko)
KR (1) KR20200053886A (ko)
CN (1) CN111178494A (ko)
TW (1) TW202018599A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022131397A1 (ko) * 2020-12-16 2022-06-23 주식회사 모빌린트 Cnn-rnn 아키텍처 전환형 연산 가속장치 설계 방법
US11886973B2 (en) 2022-05-30 2024-01-30 Deepx Co., Ltd. Neural processing unit including variable internal memory

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389858B (zh) * 2018-04-20 2023-06-09 伊姆西Ip控股有限责任公司 存储设备的故障恢复方法和设备
KR20200053886A (ko) * 2018-11-09 2020-05-19 삼성전자주식회사 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템
US11023360B2 (en) * 2018-11-14 2021-06-01 The Mathworks, Inc. Systems and methods for configuring programmable logic devices for deep learning networks
US11372404B2 (en) * 2019-02-22 2022-06-28 Qualcomm Incorporated Systems and methods for adaptive model processing
TWI746084B (zh) * 2020-07-24 2021-11-11 義守大學 多重函數計算器
US11550545B2 (en) 2020-11-06 2023-01-10 SK Hynix Inc. Low-power, low-memory multiply and accumulate (MAC) unit
KR20230046356A (ko) 2021-09-29 2023-04-06 삼성전자주식회사 메모리 장치, 메모리 장치의 동작 방법, 그리고 메모리 장치를 포함하는 전자 장치
CN114239818B (zh) * 2021-12-23 2023-04-18 电子科技大学 基于tcam和lut的存内计算架构神经网络加速器

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496971B1 (en) 2000-02-07 2002-12-17 Xilinx, Inc. Supporting multiple FPGA configuration modes using dedicated on-chip processor
KR20030057806A (ko) 2001-12-29 2003-07-07 엘지전자 주식회사 Fpga 구성 데이터 로딩 제어장치 및 방법
EP2069957A1 (en) 2006-10-03 2009-06-17 Lucent Technologies Inc. Method and apparatus for reconfiguring ic architectures
JP5810962B2 (ja) 2011-03-30 2015-11-11 富士通株式会社 記憶制御装置、記憶制御方法及び記憶制御プログラム
US20130332778A1 (en) * 2012-06-07 2013-12-12 Vmware, Inc. Performance-imbalance-monitoring processor features
US9136842B2 (en) 2013-06-07 2015-09-15 Altera Corporation Integrated circuit device with embedded programmable logic
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10804930B2 (en) * 2015-12-16 2020-10-13 International Business Machines Corporation Compressed data layout with variable group size
US10089178B2 (en) * 2016-02-29 2018-10-02 International Business Machines Corporation Developing an accurate dispersed storage network memory performance model through training
EP3446260B1 (en) * 2016-05-20 2019-09-25 DeepMind Technologies Limited Memory-efficient backpropagation through time
JP2018005762A (ja) 2016-07-07 2018-01-11 株式会社リコー 情報処理装置及びコンフィグレーション方法
US10116311B2 (en) 2016-08-03 2018-10-30 Silicon Mobility Embedded FPGA with multiple configurable flexible logic blocks instantiated and interconnected by abutment
US10089577B2 (en) * 2016-08-05 2018-10-02 Xilinx, Inc. Binary neural networks on progammable integrated circuits
US10621486B2 (en) 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US10936941B2 (en) * 2016-08-12 2021-03-02 Xilinx, Inc. Efficient data access control device for neural network hardware acceleration system
GB2555628B (en) * 2016-11-04 2019-02-20 Advanced Risc Mach Ltd Main processor error detection using checker processors
KR102631381B1 (ko) * 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
JP6968681B2 (ja) * 2016-12-21 2021-11-17 ホーチキ株式会社 火災監視システム
US11216722B2 (en) 2016-12-31 2022-01-04 Intel Corporation Hardware accelerator template and design framework for implementing recurrent neural networks
US11010338B2 (en) * 2017-04-06 2021-05-18 Shanghai Cambricon Information Technology Co., Ltd Data screening device and method
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
CN107704922B (zh) 2017-04-19 2020-12-08 赛灵思公司 人工神经网络处理装置
US10585703B2 (en) * 2017-06-03 2020-03-10 Apple Inc. Dynamic operation allocation for neural networks
CN109426553A (zh) * 2017-08-21 2019-03-05 上海寒武纪信息科技有限公司 任务切分装置及方法、任务处理装置及方法、多核处理器
JP7294768B2 (ja) * 2017-08-04 2023-06-20 オムロン株式会社 画像処理システム
US11222256B2 (en) * 2017-10-17 2022-01-11 Xilinx, Inc. Neural network processing system having multiple processors and a neural network accelerator
WO2019104638A1 (zh) * 2017-11-30 2019-06-06 深圳市大疆创新科技有限公司 神经网络处理的方法、装置、加速器、系统和可移动设备
US10671147B2 (en) * 2017-12-18 2020-06-02 Facebook, Inc. Dynamic power management for artificial intelligence hardware accelerators
US11150899B2 (en) * 2018-04-09 2021-10-19 Advanced Micro Devices, Inc. Selecting a precision level for executing a workload in an electronic device
US11556762B2 (en) * 2018-04-21 2023-01-17 Microsoft Technology Licensing, Llc Neural network processor based on application specific synthesis specialization parameters
US10929612B2 (en) * 2018-04-24 2021-02-23 Electronics And Telecommunications Research Institute Neural network memory computing system and method
US11487846B2 (en) * 2018-05-04 2022-11-01 Apple Inc. Performing multiply and accumulate operations in neural network processor
US11200490B2 (en) * 2018-05-04 2021-12-14 Apple Inc. Processing group convolution in neural network processor
US11663125B2 (en) * 2018-05-24 2023-05-30 Arm Limited Cache configuration performance estimation
JP7047612B2 (ja) * 2018-06-08 2022-04-05 沖電気工業株式会社 ニューラルネットワーク軽量化装置、情報処理装置、ニューラルネットワーク軽量化方法およびプログラム
US10282864B1 (en) * 2018-09-17 2019-05-07 StradVision, Inc. Method and device for encoding image and testing method and testing device using the same
US11651227B2 (en) * 2018-10-05 2023-05-16 Sri International Trusted neural network system
CN109472360B (zh) * 2018-10-30 2020-09-04 北京地平线机器人技术研发有限公司 神经网络的更新方法、更新装置和电子设备
KR20200053886A (ko) * 2018-11-09 2020-05-19 삼성전자주식회사 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템
US20200342291A1 (en) * 2019-04-23 2020-10-29 Apical Limited Neural network processing

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022131397A1 (ko) * 2020-12-16 2022-06-23 주식회사 모빌린트 Cnn-rnn 아키텍처 전환형 연산 가속장치 설계 방법
US11886973B2 (en) 2022-05-30 2024-01-30 Deepx Co., Ltd. Neural processing unit including variable internal memory

Also Published As

Publication number Publication date
US11733968B2 (en) 2023-08-22
US20200151549A1 (en) 2020-05-14
CN111178494A (zh) 2020-05-19
US20230342113A1 (en) 2023-10-26
US11995417B2 (en) 2024-05-28
TW202018599A (zh) 2020-05-16

Similar Documents

Publication Publication Date Title
KR20200053886A (ko) 뉴럴 프로세싱 유닛, 뉴럴 프로세싱 시스템, 및 어플리케이션 시스템
Mittal et al. A survey of techniques for optimizing deep learning on GPUs
Kiningham et al. GRIP: A graph neural network accelerator architecture
CN110674936A (zh) 一种神经网络处理方法、装置、计算机设备及存储介质
EP3566134B1 (en) Multi-function unit for programmable hardware nodes for neural network processing
CN106875013B (zh) 用于多核优化循环神经网络的系统和方法
JP2022046552A (ja) ニューラルネットワーク計算タイル
JP7227272B2 (ja) 再構成可能なコアレベルおよびベクトルレベルの並列性を有する並列計算アーキテクチャ
JP2021515300A (ja) ニューラル・ネットワーク・アクセラレータ
CN110826708B (zh) 一种用多核处理器实现神经网络模型拆分方法及相关产品
US20190130270A1 (en) Tensor manipulation within a reconfigurable fabric using pointers
CN110689121A (zh) 一种用多核处理器实现神经网络模型拆分方法及相关产品
US11880426B2 (en) Integer matrix multiplication engine using pipelining
US11275561B2 (en) Mixed precision floating-point multiply-add operation
CN111488177A (zh) 数据处理方法、装置、计算机设备和存储介质
JP2021521539A (ja) ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャ
Rendle et al. Robust large-scale machine learning in the cloud
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
Waidyasooriya et al. Accelerator architecture for simulated quantum annealing based on resource-utilization-aware scheduling and its implementation using OpenCL
CN108108242B (zh) 基于大数据的存储层智能分发控制方法
KR20210084220A (ko) 부분 판독/기입을 갖는 재구성 가능한 시스톨릭 어레이를 위한 시스템 및 방법
US20230419166A1 (en) Systems and methods for distributing layers of special mixture-of-experts machine learning models
Han et al. Distributed deep learning platform for pedestrian detection on IT convergence environment
CN111522776B (zh) 一种计算架构
Ma et al. F2M: Scalable field-aware factorization machines

Legal Events

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