KR20200061164A - 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서 - Google Patents

뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서 Download PDF

Info

Publication number
KR20200061164A
KR20200061164A KR1020180146610A KR20180146610A KR20200061164A KR 20200061164 A KR20200061164 A KR 20200061164A KR 1020180146610 A KR1020180146610 A KR 1020180146610A KR 20180146610 A KR20180146610 A KR 20180146610A KR 20200061164 A KR20200061164 A KR 20200061164A
Authority
KR
South Korea
Prior art keywords
data
neural network
integer
floating point
output
Prior art date
Application number
KR1020180146610A
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 KR1020180146610A priority Critical patent/KR20200061164A/ko
Priority to US16/547,495 priority patent/US11429838B2/en
Priority to DE102019122818.2A priority patent/DE102019122818A1/de
Priority to CN201911135614.XA priority patent/CN111222634A/zh
Priority to TW108142449A priority patent/TWI811486B/zh
Publication of KR20200061164A publication Critical patent/KR20200061164A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • 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/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서가 개시된다. 본 개시의 실시예에 따른, 뉴럴 네트워크 장치는 메모리로부터 부동 소수점 데이터를 수신하는 DMA(Direct Memory Access) 컨트롤러, 상기 DMA 컨트롤러를 통해 수신된 상기 부동 소수점 데이터를 정수형 데이터로 변환하는 데이터 변환기, 및 상기 데이터 변환기로부터 제공되는 상기 정수형 데이터를 이용하여 정수 연산에 기반한 뉴럴 네트워크 연산을 수행하는 프로세서를 포함한다.

Description

뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서 {Neural network device for neural network operation, operating method of neural network device and application processor comprising neural network device}
본 개시의 기술적 사상은 뉴럴 네트워크에 관한 것으로서, 더욱 상세하게는, 정수 연산기를 포함하는 뉴럴 네트워크 장치의 부동 소수점 수 처리 방법 및 장치에 관한 것이다.
뉴럴 네트워크(Neural Network)는 동물의 두뇌를 구성하는 생물학적 네트워크를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 지칭한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 기반으로 동작하는 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크의 연산(operation)들을 효율적으로 처리할 수 있는 기술이 요구된다. 특히, 스마트폰과 같은, 저전력 고성능 시스템은 제한된 리소스를 가지므로, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 인공 뉴럴 네트워크의 성능을 최대화 할 수 있는 기술이 요구된다.
본 개시의 기술적 사상은 정수 연산기로 구성된 뉴럴 네트워크 장치에서, 뉴럴 네트워크의 부동 소수점 수를 처리하는 방법 및 장치를 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 실시예에 따른 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 장치는 메모리로부터 부동 소수점 데이터를 수신하는 DMA(Direct Memory Access) 컨트롤러, 상기 DMA 컨트롤러를 통해 수신된 상기 부동 소수점 데이터를 정수형 데이터로 변환하는 데이터 변환기, 및 상기 데이터 변환기로부터 제공되는 상기 정수형 데이터를 이용하여 정수 연산에 기반한 뉴럴 네트워크 연산을 수행하는 프로세서를 포함한다.
본 개시의 실시예에 따른 뉴럴 네트워크의 동작 방법은, 메모리로부터 부동 소수점 입력 데이터를 수신하는 단계; 상기 부동 소수점 입력 데이터를 정수형 입력 데이터로 변환하는 단계; 및 상기 정수형 입력데이터를 이용하여 정수 연산 기반의 뉴럴 네트워크 연산을 수행하는 단계를 포함할 수 있다.
본 개시의 실시예에 따른 애플리케이션 프로세서는, 부동 소수점 타입의 연산 파라미터 및 피쳐 값들을 저장하는 메모리 및 상기 메모리로부터 상기 연산 파라미터 및 상기 피쳐 값들을 수신하고, 상기 연산 파라미터 및 상기 피쳐 값들을 정수 타입으로 변환하고, 정수 타입의 상기 연산 파라미터 및 상기 피쳐 값들을 기초로 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 장치를 포함할 수 있다.
본 개시의 기술적 사상에 따른 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서에 따르면, 뉴럴 네트워크 장치가 부동 소수점 데이터를 외부 장치와 송수신하면서 데이터 변환을 수행하는 바, 뉴럴 네트워크 장치 및 이를 포함하는 뉴럴 네트워크 시스템 및 애플리케이션 프로세서의 처리 속도 및 성능이 향상될 수 있다. 또한 뉴럴 네트워크 장치가 정수 연산기로 구성되어, 정수 연산에 기반하여 뉴럴 네트워크 연산을 수행함에 따라서 뉴럴 네트워크 장치의 회로 사이즈가 감소되고, 소비 전력이 감소되고, 뉴럴 네트워크 연산 결과의 정확성이 향상될 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다.
도 2는 뉴럴 네트워크 구조의 일 예를 나타낸다.
도 3a는 부동 소수점 수의 일 예를 설명하는 도면이다. 도 3b는 정수의 일 예를 설명하는 도면이며, 도 3c는 고정 소수점 수의 일 예를 설명하는 도면이다.
도 4는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 장치의 동작 방법을 나타낸다.
도 5a는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타낸다.
도 5b는 비교예에 따른 뉴럴 네트워크 시스템의 동작을 나타낸다.
도 6은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 장치를 나타내는 도면이다.
도 7a 및 도 7b는 본 개시의 예시적 실시예에 따른 데이터 변환기를 나타내는 회로도이다.
도 8a는 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타낸다.
도 8b는 도 8a의 데이터 변환기의 입력들을 나타낸다.
도 9a는 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타낸다.
도 9b는 도 9a의 데이터 변환기의 입력들을 나타낸다.
도 10은 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타낸다.
도 11은 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타낸다.
도 12는 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타낸다.
도 13은 본 개시의 예시적 실시예에 따른 데이터 변환기를 나타내는 회로도이다.
도 14는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 장치를 나타내는 블록도이다.
도 15는 본 개시의 예시적 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 16은 본 개시의 예시적 실시예에 따른 애플리케이션 프로세서를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다.
뉴럴 네트워크 시스템(100)은 뉴럴 네트워크를 훈련(train)(또는 학습(learn))하거나, 뉴럴 네트워크를 이용하여 입력 데이터를 분석함으로써 입력 데이터에 포함된 정보를 추론(inference)할 수 있다. 뉴럴 네트워크 시스템(100)은 추론된 정보를 기초로 상황 판단을 하거나 또는 뉴럴 네트워크 시스템(100)이 탑재되는 전자 장치의 구성들을 제어할 수 있다. 예컨대, 뉴럴 네트워크 시스템(100)은 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트 폰, 태블릿 디바이스, 스마트 TV, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기, 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS), 영상 표시 장치, 계측 장치 등에 적용될 수 있으며, 이 외에도 뉴럴 네트워크 시스템(100)은 다양한 종류의 전자 장치 중 하나에 탑재될 수 있다. 실시예에 있어서, 도 1의 뉴럴 네트워크 시스템(100)은 애플리케이션 프로세서일 수 있다.
도 1을 참조하면, 뉴럴 네트워크 시스템(100)은 CPU(Central Processing Unit)(110), 뉴럴 네트워크 장치(120), 메모리(130), 및 센서 모듈(140)을 포함할 수 있다. 뉴럴 네트워크 시스템(100)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있으며, 또한 다양한 종류의 프로세서를 더 포함할 수 있다. 실시예에 있어서, 뉴럴 네트워크 시스템(100)의 구성들(예컨대, CPU(110), 뉴럴 네트워크 장치(120), 메모리(130), 및 센서 모듈(140))중 일부 또는 전부는 하나의 반도체 칩에 형성될 수 있다. 예컨대, 뉴럴 네트워크 시스템(100)은 시스템-온 칩(SoC)으로서 구현될 수 있다. 뉴럴 네트워크 시스템(100)의 구성들은 버스(150)를 통해 서로 통신할 수 있다.
CPU(110)는 뉴럴 네트워크 시스템(100)의 전반적인 동작을 제어한다. CPU(110)는 하나의 프로세싱 코어(Single Core)를 포함하거나, 복수의 프로세싱 코어들(Multi-Core)을 포함할 수 있다. CPU(110)는 메모리(130)와 같은 저장 영역에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다.
예를 들어서, CPU(110)는 응용 프로그램(application)을 실행하고, 응용 프로그램의 실행에 따라 요구되는 뉴럴 네트워크 기반의 태스크들을 수행하도록 뉴럴 네트워크 장치(120)를 제어할 수 있다. 뉴럴 네트워크는 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 등 다양한 종류의 뉴럴 네트워크 모델들 중 적어도 하나를 포함할 수 있다.
뉴럴 네트워크 장치(120)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크 연산을 수행할 수 있다. 예컨대 뉴럴 네트워크 연산은, 컨볼루션, 풀링, 활성 함수 연산, 내적 연산, 벡터 연산 등을 포함할 수 있다. 나아가, 뉴럴 네트워크 장치(120)는 뉴럴 네트워크 연산의 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크 장치(120)는 뉴럴 네트워크 연산 가속기, 코프로세서(coprocessor), DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit) 등으로 구현될 수 있다.
한편, 본 실시예에 따른 뉴럴 네트워크 장치(120)는 정수 연산기를 포함하며, 정수 연산에 기반하여 뉴럴 네트워크 연산을 수행할 수 있다. 정수 연산기는 정수 또는 고정 소수점 수를 연산할 수 있다. 정수 연산기는 부동 소수점 연산을 수행하는 부동 소수점 연산기보다 전력 소비가 적고, 처리 속도가 빠르면서, 회로 면적이 작을 수 있다.
그러나, 뉴럴 네트워크는 실수, 예컨대 부동 소수점 수로 표현되는 부동 소수점 데이터를 포함할 수 있다. 예컨대, 부동 소수점 데이터는, 피처 맵, 커널(웨이트 맵), 바이어스 등을 포함할 있다. 부동 소수점 수는 광범위한 값들을 지원할 수 있는 방식으로서, 실수의 근사치를 나타내기에 적합할 수 있다. 정수 연산기는 부동 소수점 데이터를 처리할 수 없다. 따라서, 본 실시예에 따른 뉴럴 네트워크 장치(120)는 부동 소수점 데이터를 처리하기 위하여 데이터 변환기(20)를 구비할 수 있다. 데이터 변환기(20)는 부동 소수점 데이터와 정수형 데이터 간에 데이터 변환을 수행할 수 있다. 즉, 데이터 변환기(20)는 부동 소수점 수를 정수(또는 고정 소수점 수)로 변환하거나, 또는 정수를 부동 소수점 수로 변환할 수 있다.
뉴럴 네트워크 장치(120)는 메모리(130)에 저장된 부동 소수점 데이터(FPD)를 수신하고, 데이터 변환기(20)를 이용하여 부동 소수점 데이터(FPD)를 정수형 데이터(INTD)로 변환할 수 있다. 뉴럴 네트워크 장치(120)는 정수형 데이터(INTD)를 기초로 뉴럴 네트워크 연산을 수행하고, 연산 결과를 메모리(130)에 저장할 수 있다. 이 때, 연산 결과가 정수형 데이터(INTD), 즉 정수형 출력 데이터로서 출력될 수 있다. 데이터 변환기(20)는 출력되는 정수형 데이터(INTD)를 부동 소수점 데이터(FPD)로 변환하고, 뉴럴 네트워크 장치(120)는 변환된 부동 소수점 데이터(FPD)를 메모리(130)에 저장할 수 있다. 실시예에 있어서, 뉴럴 네트워크 장치(120)는 CPU(110)의 개입없이 버스(150)를 통해 메모리(130)와 부동 소수점 데이터(FPD)를 송수신할 수 있다. 즉, 뉴럴 네트워크 장치(120)와 메모리(130) 간에 직접적으로 부동 소수점 데이터(FPD)가 송수신될 수 있다.
메모리(130)는 뉴럴 네트워크 시스템(100)에서 사용되는 프로그램들 및/또는 데이터를 저장할 수 있다. 메모리(130)는 또한, 뉴럴 네트워크를 위한 연산 파라미터(예컨대 웨이트 값들, 바이어스 값들 등), 뉴럴 네트워크의 양자화를 위한 파라미터(예컨대 스케일 펙터, 바이어스 값들 등, 이하 양자화 파라미터라고 함), 입력 데이터(예컨대 입력 피처 맵) 및 출력 데이터(예컨대 출력 피처 맵)를 저장할 수 있다. 상기 연산 파라미터, 양자화 파라미터, 입력 데이터 및 출력 데이터는 부동 소수점 데이터(FPD)일 수 있다.
메모리(130)는 DRAM(Dynamic random Access Memory)일 수 있으나, 이에 한정되는 것은 아니다. 메모리(130)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다. 휘발성 메모리는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등을 포함한다. 실시예에 있어서, 메모리(14)는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(compact flash) 카드, SD(secure digital) 카드, Micro-SD(micro secure digital) 카드, Mini-SD(mini secure digital) 카드, xD(extreme digital) 카드 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(140)은 뉴럴 네트워크 시스템(100)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(140)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 센싱 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(450)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센싱 데이터는 뉴럴 네트워크 장치(120)에 입력 데이터로서 제공되거나, 또는 메모리(130)에 저장될 수 있다. 메모리(130)에 저장된 센싱 데이터는 뉴럴 네트워크 장치(120)로 제공될 수 있다. 실시예에 있어서, 뉴럴 네트워크 장치(120)는 영상 데이터를 처리하는 GPU(Graphic Processing Unit)를 더 포함하고, 센싱 데이터는 GPU에서 가공 처리된 후, 메모리(130) 또는 뉴럴 네트워크 장치(120)에 제공될 수 있다.
예를 들어, 센서 모듈(140)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 영상 데이터를 생성할 수 있다. 센서 모듈(140)에서 출력되는 영상 데이터 또는 GPU에서 가공 처리된 영상 데이터는 부동 소수점 데이터일 수 있으며, 영상 데이터는 뉴럴 네트워크 장치(120)에 직접 제공되거나 또는 메모리(130)에 저장된 후, 뉴럴 네트워크 장치(120)에 제공될 수 있다.
도 2는 뉴럴 네트워크 구조의 일 예를 나타낸다. 도 2를 참조하면, 뉴럴 네트워크(NN)는 복수의 레이어들(L1 내지 Ln)을 포함할 수 있다. 이와 같은 멀티-레이어드 구조의 뉴럴 네트워크는 딥 뉴럴 네트워크(deep neural network; DNN) 또는 딥 러닝 구조(deep learning architecture)로 지칭될 수 있다. 복수의 레이어들(L1 내지 Ln) 각각은 선형 레이어 또는 비선형 레이어일 수 있으며, 실시예에 있어서, 적어도 하나의 레이어 및 적어도 하나의 비선형 레이어가 겹합되어 하나의 레이어로 지칭될 수도 있다. 예시적으로, 선형 레이어는 컨볼루션 레이어(convolution), 풀리 커넥티드(fully connected) 레이어를 포함할 수 있으며, 비선형 레이어는 풀링(pooling) 레이어, 액티베이션 레이어를 포함할 수 있다.
예시적으로, 제1 레이어(L1)는 컨볼루션 레이어이고, 제2 레이어(L2)는 풀링(pooling) 레이어이고, 제n 레이어(Ln)는 출력 레이어로서 풀리 커넥티드(fully connected) 레이어일 수 있다. 뉴럴 네트워크(NN)는 활성(activation) 레이어를 더 포함할 수 있으며, 다른 종류의 연산을 수행하는 레이어를 더 포함할 수 있다.
복수의 레이어들(L1 내지 Ln) 각각은 입력되는 이미지 프레임 또는 이전 레이어에서 생성된 피처 맵을 입력 피처 맵으로서 수신하고, 입력 피처 맵을 연산하여 출력 피처 맵 또는 인식 신호(REC)를 생성할 수 있다. 이때, 피처 맵은 입력 데이터의 다양한 특징이 표현된 데이터를 의미한다. 피처 맵들(FM1, FM2, FM3, FMn)은 예컨대 복수의 피처 값들을 포함하는 2차원 매트릭스 또는 3차원 매트릭스(또는 텐서(tensor)라고 함) 형태를 가질 수 있다. 피처 맵들(FM1, FM2, FM3, FMn)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함) 및 깊이(Dt)를 가지며, 이는 좌표상의 x축, y축 및 z축에 각각 대응할 수 있다. 이때, 깊이(Dt)는 채널 수로 지칭될 수 있다.
제1 레이어(L1)는 제1 피처 맵(FM1)을 웨이트 맵(WM)과 컨볼루션하여 제2 피처 맵(FM2)을 생성할 수 있다. 웨이트 맵(WM)은 복수의 웨이트 값들을 포함하는 2차원 매트릭스 또는 3차원 매트릭스 형태를 가질 수 있다. 웨이트 맵(WM)은 커널로 지칭될 수 있다. 웨이트 맵(WM)은 제1 피처 맵(FM1)을 필터링할 수 있으며, 필터 또는 커널로 지칭될 수 있다. 웨이트 맵(WM)의 깊이, 즉 채널 개수는 제1 피처 맵(FM1)의 깊이, 즉 채널 개수와 동일하며, 웨이트 맵(WM)과 제1 피처 맵(FM1)의 동일한 채널끼리 컨볼루션될 수 있다. 웨이트 맵(WM)이 제1 입력 피처 맵(FM1)을 슬라이딩 윈도로하여 횡단하는 방식으로 시프트된다. 각 시프트동안, 웨이트 맵(WM)에 포함되는 웨이트들 각각이 제1 피처 맵(FM1)과 중첩된 영역에서의 모든 피처값과 곱해지고 더해질 수 있다. 제1 피처 맵(FM1)과 웨이트 맵(WM)이 컨볼루션 됨에 따라, 제2 피처 맵(FM2)의 하나의 채널이 생성될 수 있다. 도 2에는 하나의 웨이트 맵(WM)이 표시되었으나, 실질적으로는 복수개의 웨이트 맵이 제1 피처 맵(FM1)과 컨볼루션됨으로써, 제2 피처 맵(FM2)의 복수개의 채널이 생성될 수 있다. 다시 말해, 제2 피처 맵(FM2)의 채널의 수는 웨이트 맵의 개수에 대응할 수 있다.
제2 레이어(12)는 풀링을 통해 제2 피처 맵(FM2)의 공간적 크기(spatial size)를 변경함으로써, 제3 피처 맵(FM3)을 생성할 수 있다. 풀링은 샘플링 또는 다운-샘플링으로 지칭될 수 있다. 2 차원의 풀링 윈도우(PW)가 풀링 윈도우(PW)의 사이즈 단위로 제2 피처 맵(FM2) 상에서 쉬프트되고, 풀링 윈도우(PW)와 중첩되는 영역의 피처값들 중 최대값(또는 피처값들의 평균값)이 선택될 수 있다. 이에 따라, 제2 피처 맵(FM2)으로부터 공간적 사이즈가 변경된 제3 피처 맵(FM3)이 생성될 수 있다. 제3 피처 맵(FM3)의 채널과 제2 피처 맵(FM2)의 채널 개수는 동일하다.
제n 레이어(Ln)는 제n 피처 맵(FMn)의 피처들을 조합하여 입력 데이터의 클래스(class)(CL)를 분류할 수 있다. 또한, 클래스에 상응하는 인식 신호(REC)를 생성할 수 있다. 예를 들어, 입력 데이터가 영상 데이터이고, 뉴럴 네트워크(NN)가 영상 인식을 수행할 경우, 제n 레이어(Ln)는 이전 레이어로부터 제공되는 제n 피처 맵(FMn)을 기초로 영상 데이터가 나타내는 이미지의 사물에 해당하는 클래스를 추출함으로써 사물을 인식하고, 인식된 사물에 상응하는 인식 신호(REC)를 생성할 수 있다.
도 2를 참조하여 설명한 바와 같이, 뉴럴 네트워크(NN)는 복잡한 아키텍처로 구현될 수 있으며, 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 장치는 수억에서 수백억에 다다를 정도로 매우 많은 연산(operation count)을 수행하게 된다. 그러나, 본 개시의 실시예에 따른 뉴럴 네트워크 시스템(100)은 뉴럴 네트워크 장치(120)가 정수 연산을 수행하는 바, 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치보다 전력 소모 및 회로 면적이 감소될 수 있고, 처리 속도가 향상될 수 있다.
도 3a는 부동 소수점 수의 일 예를 설명하는 도면이다. 도 3b는 정수의 일 예를 설명하는 도면이며, 도 3c는 고정 소수점 수의 일 예를 설명하는 도면이다.
도 3a를 참조하면, 부동 소수점 수(NFP)는 부호와,
Figure pat00001
의 형식으로 표현될 수 있고, b는 지수부(exponent), a는 가수부(fraction)에 해당된다. 부동 소수점 연산에 대한 IEEE(Institute of Electrical and Electronics Engineers) 표준인 IEEE754 표준에 따르면, 32비트의 부동 소수점 수(NFP)에서 1비트는 부호, 8 비트는 지수부를 나타내고 23비트는 가수부를 나타낸다. 도 3a에 도시된 바와 같이, MSB는 부호를 나타내고, MSB 이후의 8 비트는 지수부를, 나머지 23비트는 가수부(또는 분수, 유효수)를 나타낼 수 있다. 그러나, 도 3a의 부동 소수점 수(NFP)는 일 예일 뿐이며, 부동 소수점 수의 비트 수에 따라서, 지수부 및 가수부를 나타내는 비트 수는 변경될 수 있다.
정수(N(INT))는 부호의 유무 및 데이터 사이즈(비트 수)에 따라서 다양한 타입으로 표현될 수 있다. 일 예로서, 일반적으로 컴퓨팅 연산에 사용되는 정수는 도 3b에 도시된 바와 같이 8비트의 데이터로 표현될 수 있다. 정수(N(INT))는 부호를 포함하지 않는(unsigned) 2의 보수(2's complement) 타입으로 표현될 수 있으며, 이 때, 8비트를 포함하는 정수(N(INT))의 값은 수학식 1으로 나타낼 수 있다.
Figure pat00002
이때, i는 정수(N(INT))에서, 비트의 위치를 나타낸다. 예컨대, 도 3a에 도시된 바와 같이, 정수가 8비트의 데이터로 표현될 경우, i가 0이면 LSB를 나타내고, i가 7이면 MSB를 나타낸다. Di는 i 번째 비트의 비트 값(즉, 0 또는 1)을 나타낸다.
정수(N(INT))가 부호(Sign)를 포함하는 1의 보수(2's complement) 타입으로 표현될 경우, MSB가 부호를 나타내고, 이후의 비트들이 정수부(INTn)를 나타낸다. 예컨대, 정수(N(INT))가 8비트의 데이터일 경우, 8번째 비트, 즉 MSB가 부호를 나타내고, 하위 7개의 비트가 정수부(INTn)를 나타낸다. 이 때, 정수(N(INT))의 값은 수학식 2로 나타낼 수 있다.
Figure pat00003
도 3c를 참조하면, 고정 소수점 수(N(FX))는 정수부(INTn) 및 가수부(Fn)를 포함할 수 있다. 예컨대, 32비트로 표현되는 고정 소수점 수(N(FX))에서, 소수점이 K 번째 비트(K-1)와 K+1 번째 비트(K) 사이에 위치한다고 가정할 때(K는 양의 정수), 상위의 (32-K) 개의 비트는 정수부(INTn)를, 하위의K개의 비트는 가수부(Fn)를 나타낼 수 있다. 고정 소수점 수(N(FX))가 부호를 포함하는 1의 보수(1's complement) 타입으로 표현될 경우, 32번째 비트, 즉 MSB가 부호를 나타낼 수 있다.
고정 소수점 수(N(FX))는 정수와 유사한 방식으로 부호와 크기가 계산될 수 있다. 다만, 정수에서 소수점이 0의 자리 이하에 위치하고, 고정 소수 점(N(FX))에서 소수점이 K 번째 비트와 K+1 번째 비트 사이, 즉 상위 32-K 개의 비트 이후에 위치한다. 따라서 32비트를 포함하는 고정 소수점 수(N(FX))의 값은 수학식 3으로 나타낼 수 있다.
Figure pat00004
이 때, 고정 소수점 수(N(FX))가 부호를 포함하지 않으면(unsigned), a는 1이고, 고정 소수점 수(N(FX))가 부호를 포함하면(signed) a는 -1이다.
수학식 3에서 K가 0이면, 정수의 값을 나타내는 수학식 1 또는 수학식 2와 동일하게 표현되고, K가 0이 아니면, 고정 소수점이 되므로, 정수(N(INT))와 고정 소수점 수(N(FX))는 정수 연산기에서 처리될 수 있다.
그러나, 도 3a에 도시된 부동 소수점 수(N(FP))는 일부 비트들이 지수를 나타내는 바, 도 3b의 정수(N(INT)) 및 도 3c의 고정 소수점 수(N(FX))와는 다른 구조를 가지며 정수 연산기에서 처리될 수 없다. 따라서, 데이터 변환부(도 1의 20)는 부동 소수점 수(N(FP))를 정수(N(INT))(또는 고정 소수점 수(N(FX)))로 변환하고, 정수 연산기가 정수(N(INT))를 처리함으로써, 정수 연산 기반의 뉴럴 네트워크 장치(120)가 부동 소수점 수(N(FP))를 처리할 수 있다.
동일한 개수의 비트를 포함하는 부동 소수점 수와 정수의 경우 정수가 더 정확한 값을 나타낼 수 있다. 예를 들어, 16비트의 부동 소수점 수의 경우, IEEE754 표준에 따르면, 유효한 값에 해당하는 가수부는 10비트인 반면, 정수는 16비트가 유효한 데이터를 나타낼 수 있다. 따라서, 데이터 변환기(20)가 부동 소수점 데이터를 정수형 데이터로 변환하고, 정수형 데이터에 기초하여 연산한 뉴럴 네트워크의 연산 결과(예컨대 컨볼루션 연산 결과)는 부동 소수점 연산보다 더 높은 정확도를 가질 수 있다. 이 때, 소수점의 위치를 나타내는 변수가 추가로 필요할 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 장치의 동작 방법을 나타낸다. 도 4는 뉴럴 네트워크 연산을 위한 뉴럴 네트워크 장치(도 1의 120)에서 수행될 수 있다. 따라서, 도 1을 함께 참조하여 설명하기로 한다.
도 4를 참조하면, 뉴럴 네트워크 장치(120)는 메모리(130)로부터 부동 소수점 입력 데이터를 수신할 수 있다(S110). 부동 소수점 입력 데이터는 뉴럴 네트워크 연산에 필요한 입력 피처 값들, 웨이트 값, 함수의 계수들 등을 포함할 수 있다. 또한 뉴럴 네트워크 장치(120)가 양자화된 뉴럴 네트워크를 처리할 경우, 부동 소수점 입력 데이터는 양자화 파라미터들을 포함할 수 있다. 예컨대 양자화 파라미터는 스케일 값(또는 역스케일 값), 바이어스 값 등을 포함할 수 있다.
뉴럴 네트워크 장치(120)는 부동 소수점 입력 데이터를 정수형 입력 데이터로 변환할 수 있다(S120). 예컨대 데이터 변환기(20)는 메모리로부터 수신된 입력 데이터의 부동 소수점 수를 정수형 데이터, 예컨대 정수 또는 고정 소수점 수로 변환할 수 있다. 실시예에 있어서, 데이터 변환기(20)는 양자화 파라미터들을 기초로 부동 소수점 데이터를 양자화된 정수형 데이터로 변환할 수 있다.
뉴럴 네트워크 장치(120)는 변환된 정수형 입력 데이터를 기초로 뉴럴 네트워크 연산을 수행할 수 있다(S130). 뉴럴 네트워크 장치(120)는 정수 연산기를 포함하며, 정수형 입력 데이터에 대하여 정수 연산을 수행함으로써, 뉴럴 네트워크 연산을 수행할 수 있다. 예컨대 뉴럴 네트워크 연산은 컨볼루션, MAC(Multiply and Accumulate) 연산, 풀링 등을 포함할 수 있다. 뉴럴 네트워크 연산이 수행됨에 따라 정수형 출력 데이터가 생성될 수 있다.
뉴럴 네트워크 장치(120)는 정수형 출력 데이터를 부동 소수점 출력 데이터로 변환할 수 있다(S140). 예컨대 데이터 변환기(20)는 정수형 출력 데이터의 정수 또는 고정 소수점 수를 부동 소수점 수로 변환할 수 있다. 실시예에 있어서, 데이터 변환기(20)는 양자화 파라미터들을 기초로 부동 소수점 출력 데이터를 역양자화된 부동 소수점 출력 데이터로 변환할 수 있다.
뉴럴 네트워크 장치(120)는 부동 소수점 출력 데이터를 메모리(130)에 저장할 수 있다(S150).
도 5a는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템(100)의 동작을 나타내고, 도 5a는 비교예에 따른 뉴럴 네트워크 시스템(100')의 동작을 나타낸다.
도 5a를 참조하면, 뉴럴 네트워크 장치(120)는 메모리(130)로부터 부동 소수점 입력 데이터(FPID)를 수신할 수 있다(S1). 실시예에 있어서, 부동 소수점 입력 데이터(FPID)는 CPU(110)의 개입 없이, 버스(150)를 통해 메모리(130)로부터 뉴럴 네트워크 장치(120)로 전송될 수 있다. 예컨대 뉴럴 네트워크 장치(120)는 DMA(Direct Memory Access) 컨트롤러를 포함할 수 있으며, DMA 컨트롤러가 메모리(130)를 액세스하여 부동 소수점 입력 데이터(FPID)를 독출할 수 있다. 뉴럴 네트워크 장치(120)는 데이터 변환기(20)를 이용하여, 메모리(130)로부터 부동 소수점 입력 데이터(FPID)를 수신하면서, 부동 소수점 입력 데이터(FPID)를 정수형 입력 데이터로 변환할 수 있다.
뉴럴 네트워크 장치(120)는 데이터 변환기(20)를 이용하여, 뉴럴 네트워크 연산에 따라 생성되는 정수형 출력 데이터를 부동 소수점 출력 데이터(FPOD)로 변환하고, 부동 소수점 출력 데이터(FPOD)를 메모리(150)에 전송할 수 있다. 실시예에 있어서, 부동 소수점 출력 데이터(FPOD)는 CPU(110)의 개입 없이, 버스(150)를 통해 메모리(130)로부터 뉴럴 네트워크 장치(120)로 전송될 수 있다.
전술한 바와 같이, 본 개시의 실시예에 따른 뉴럴 네트워크 시스템(100)에서는 뉴럴 네트워크 장치(120)가 데이터 변환기(20)를 구비하는 바, 메모리(130)와의 사이에서 부동 소수점 입력 데이터(FPID) 및 부동 소수점 출력 데이터(FPOD)를 송수신할 때, 데이터의 변환이 수행될 수 있다.
도 5b의 비교예에 따른 뉴럴 네트워크 시스템(100')에서, 뉴럴 네트워크 장치(120')는 데이터 변환기를 포함하지 않는다. 따라서, 뉴럴 네트워크 장치(120')는 정수 연산기를 포함하는 바, 부동 소수점 데이터를 처리하기 위하여, 다른 구성, 예컨대 CPU(110)가 부동 소수점 데이터를 정수형 데이터로 변환하는 동작을 수행할 수 있다. CPU(110)가 메모리(130)로부터 출력된 부동 소수점 입력 데이터(FPID)를 버스(150)를 통해 수신하고(S11), 부동 소수점 입력 데이터(FPID)정수형 입력 데이터(INTID)로 변환한 후, 변환된 정수형 입력 데이터(INTID)를 버스(150)를 통해 뉴럴 네트워크 장치(120')에 전송할 수 있다(S12). 또한, CPU(110)는 뉴럴 네트워크 장치(120')로부터 출력되는 정수형 출력 데이터(INTOD)를 버스(150)를 수신하고(S13), 정수형 출력 데이터(INTOD)를 부동 소수점 출력 데이터(FPOD)로 변환한 후, 부동 소수점 출력 데이터(FPOD)를 버스(150)를 통해 메모리(130)에 전송할 수 있다(S14).
도 5a 및 5b를 참조하여 전술한 바에 따르면, 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템(100)에서는 뉴럴 네트워크 장치(120)가 부동 소수점 데이터, 예컨대 부동 소수점 입력 데이터(FPID) 및 부동 소수점 출력 데이터(FPOD)를송수신하면서 데이터 변환을 수행하므로, 부동 소수점 데이터가 메모리(130)로부터 뉴럴 네트워크 장치(120)로 직접 전송될 수 있다. 따라서, 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템(100)에 따르면, 버스(150)의 사용 횟수가 감소되는 바, 버스(150)의 대역폭(BW)에 따른 처리 속도 저하가 감소될 수 있다. 또한 뉴럴 네트워크 장치(120)가 데이터 변환을 수행하므로, CPU(110)의 구동 부담이 감소되는 바 뉴럴 네트워크 장치(120)의 처리 속도가 향상될 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 장치를 나타내는 도면이다. 설명의 편의를 위하여 메모리(130)를 함께 도시한다.
도 6을 참조하면, 뉴럴 네트워크 장치(120)는 DMA 컨트롤러(10), 데이터 변환기(20) 및 뉴럴 네트워크 프로세서(30)를 포함할 수 있다. 도 6에서, DMA 컨트롤러(10) 및 데이터 변환기(20)는 서로 다른 구성으로 도시되었으나, 실시예에 있어서, 데이터 변환기(20)는 DMA 컨트롤러(10)의 일부로서 구현될 수 있다. 실시예에 있어서, 뉴럴 네트워크 장치(120)는 복수의 데이터 변환기(20)를 포함할 수 있다. 복수의 데이터 변환기(20)의 개수는 뉴럴 네트워크 프로세서(30)의 처리 속도 및 메모리(130)의 대역폭에 기초하여 결정될 수 있다.
DMA 컨트롤러(10)는 메모리(130)와 직접 통신할 수 있다. DMA 컨트롤러(10)는 다른 프로세서(예컨대 CPU, GPU 등)의 개입 없이 메모리(130)로부터 데이터(예컨대 부동 소수점 데이터)를 수신하고, 메모리(130)에 데이터를 전송할 수 있다, DMA 컨트롤러(10)는 메모리(130)로부터 부동 소수점 입력 데이터(FPID)를 수신하고, 데이터 변환기(20)로부터 제공되는 부동 소수점 출력 데이터(FPOD)를 메모리(130)에 전송할 수 있다. 예컨대 부동 소수점 입력 데이터(FPID)는 입력 피처 맵(IFM), 연산 파라미터(PM) 등을 포함할 수 있다. 또한 부동 소수점 입력 데이터(FPID)는 양자화 파라미터를 포함할 수 있다.
데이터 변환기(20)는 부동 소수점 데이터와 정수형 데이터 간 데이터 변환을 수행할 수 있다. 데이터 변환기(20)는 DMA 컨트롤러(10)를 통해 수신된 고정 소수점 입력 데이터(FPID)를 정수형 입력 데이터(INTID)로 변환하고, 정수형 입력 데이터(INTID)를 뉴럴 네트워크 프로세서(30)에 제공할 수 있다. 또한 뉴럴 네트워크 프로세서(30)에서 출력되는 정수형 출력 데이터(INTOD)를 부동 소수점 출력 데이터(FPOD)로 변환할 수 있다. 예컨대 부동 소수점 출력 데이터(FPOD)는 출력 피처 맵(OFM)을 포함할 수 있다.
실시예에 있어서, 데이터 변환기(20)는 양자화 파라미터들을 기초로 고정 소수점 입력 데이터(FPID)에 대하여 양자화를 수행함으로써, 양자화된 정수형 입력 데이터(INTID)를 생성할 수 있다. 또한, 데이터 변환기(20)는 양자화 파라미터들을 기초로 정수형 출력 데이터(INTOD)에 대하여 역양자화를 수행함으로써, 역양자화된 부동 소수점 출력 데이터(FPOD)를 생성할 수 있다.
실시예에 있어서, 데이터 변환기(20)는 고정 소수점 입력 데이터(FPID)를 정수형 입력 데이터(INTID)로 단순 변환할 수 있다. 또한, 데이터 변환기(20)는 정수형 출력 데이터(INTOD)를 부동 소수점 출력 데이터(FPOD)로 단순 변환할 수 있다.
실시예에 있어서, 데이터 변환기(20)는 정수형 데이터에 대하여 MAC 연산을수행할 수 있다. 예를 들어서, 데이터 변환기(20)는 메모리(130)로부터 수신되는 정수형 데이터 또는 뉴럴 네트워크 프로세서(30)로부터 출력되는 정수형 데이터에 대하여 MAC 연산을 수행함으로써 뉴럴 네트워크 프로세서(30)의 구동 부담을 감소시킬 수 있다. 전술한 실시예들에 따른 데이터 변환기(20)의 동작은 데이터 변환기(20)의 구성들 중 일부가 선택적으로 동작함으로써 수행될 수 있다.
뉴럴 네트워크 프로세서(30)는 복수의 프로세싱 소자들(PE)을 포함하는 프로세싱 소자 어레이(PEA)를 포함할 수 있다. 도시되지 않았으나 뉴럴 네트워크 프로세서(30)는 뉴럴 네트워크 파라미터, 예컨대 바이어스 값들, 웨이트 값들, 입력 피처들 및 출력 피처들을 저장하기 위한 내부 메모리 및 컨트롤러를 포함할 수 있다. 복수의 프로세싱 소자들(PE)은 정수 연산기를 포함할 수 있으며, 뉴럴 네트워크 프로세서(30)는 정수 연산에 기반하여 뉴럴 네트워크 연산을 수행할 수 있다. 예를 들어서, 뉴럴 네트워크 프로세서(30)는 데이터 변환기(20)로부터 제공되는 정수형 웨이트 값들 및 정수형 입력 피처 값들을 기초로 컨볼루션 연산을 수행할 수 있다.
이하, 데이터 변환기(20)의 구성 및 동작에 대하여 설명하기로 한다.
도 7a 및 도 7b는 본 개시의 예시적 실시예에 따른 데이터 변환기를 나타내는 회로도이다.
도 7a를 참조하면, 데이터 변환기(20)는 곱셈기(21), 지수 및 부호 계산기(22), 쉬프터(23), 덧셈기(24), LOD(25)(Leading One Detector), 증분 및 쉬프팅 회로(27), 및 지수 업데이터(28)를 포함할 수 있다.
데이터 변환기(20)는 입력되는 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)을 연산함으로써, 데이터 변환을 수행할 수 있다. 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)은 부동 소수점 수 또는 정수일 수 있다.
제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)이 부동 소수점 수일 경우를 가정하여 설명하기로 한다. 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)의 부호(Sa, Sab, Sc) 및 지수부(Ea, Eb, Ec)는 지수 및 부호 계산기(22)에 인가되고, 지수 및 부호 계산기(22)는 부호들(Sa, Sab, Sc) 및 지수들(Ea, Eb, Ec)을 기초로 출력되는 지수 및 부호를 결정할 수 있다. 또한 지수 및 부호 계산기(22)는 쉬프터(23)에 제공되는 쉬프팅 정보(SH1)를 결정할 수 있다. 쉬프팅 정보(SH1)는 쉬프팅 방향, 쉬프팅량 및 쉬프팅되는 수(예컨대 두 입력 중 어떤 입력이 쉬프팅 되는지 여부)를 포함할 수 있다. 지수 및 부호 계산기(22)의 상세한 동작은 도 8a, 11 및 12를 참조하여 후술하기로 한다.
곱셈기(21)는 인가되는 두 입력, 예컨대, 제2 입력(IN_B) 및 제3 입력(IN_C)의 가수부(Fb 및 Fc)를 곱하고, 그 결과를 출력할 수 있다. 실시예에 있어서, 곱셈기(21)는 정수형 데이터에 대한 MAC 연산을 지원할 수 있으며, 단일 정밀도(single precision)에 따른 24비트 곱셈기 대신 확장된 비트 수를 갖는 곱셈기, 예컨대 32비트 곱셈기로 구현될 수 있다.
쉬프터(23)는 곱셈기(21)의 출력(R1)과 제1 입력(IN_A)을 수신하고, 출력(R1)과 제1 입력(IN_A) 중 지수 값이 작은 값을 지수 및 부호 계산기(22)로부터 제공되는 쉬프팅 정보(SH1)에 기초하여 쉬프팅시킬 수 있다.
덧셈기(24)는 쉬프터(23)로부터 수신되는 제1 값(LV) 및 제2 값(SV)을 합산할 수 있다. 이 때 덧셈기(24)에는 제1 값(LV) 및 제2 값(SV)의 절대값이 수신되며, 제1 값(LV) 및 제2 값(SV)의 부호에 따라 덧셈기(24)는 감산기로서 동작할 수도 있다.
LOD(25)는 덧셈기(24)의 출력(R2)을 수신하고, 덧셈기(24)의 출력(R2)에서 선행하는 '1' 위치를 검출할 수 있다. LOD(25)는 덧셈기의 출력(R2)을 포스트 정규화 하기 위한 선행하는 '1'이 출력값(OUT)의 가수부의 MSB가 되도록 덧셈기(24)의 출력(R2)하는 쉬프팅 정보(SH2)를 산출할 수 있다.
증분 및 쉬프팅 회로(27)는 연산 부호(OPCD)에 따른 반올림 정책을 반영하여, 덧셈기(24)의 출력(R2)에 대한 반올림 여부를 결정할 수 있다. 증분 및 쉬프팅 회로(27)는 LOD(25)로부터 수신된 쉬프팅 정보(SH2), 반올림 여부, 및 지수 및 부호 계산기(22)로부터 제공되는 지수 및 부호(또는 쉬프팅 정보)를 기초로 쉬프팅 량을 결정하고, 결정된 쉬프팅 량에 따라서 덧셈기(24)의 출력(R2)을 쉬프팅시킬 수 있다.
지수 업데이터(28)는 지수 및 부호 계산기(22)로부터 제공되는 지수 및 부호를 출력값(OUT)의 지수 및 부호로서 출력하거나 또는 지수 및 부호를 업데이트하고, 업데이트된 지수 및 부호를 출력값(OUT)의 지수 및 부호로서 출력할 수 있다.
실시예에 있어서, 데이터 변환기(20)는 부동 소수점 연산에 사용되는 FMA(Fused Multiply-Add) 회로와 유사한 구조를 가질 수 있으며, 전술한 데이터 변환기(20)의 구성들은 균등한 범위에서 변경될 수 있다.
한편, 본 개시의 실시예에 따른 데이터 변환기(20)는 연산 부호(OPCD)(operation code)에 따라서, 도 8a 내지 도 13을 참조하여 후술되는 다양한 동작 모드들 중 하나에 따라 동작할 수 있으며, 이 때, 데이터 변환기(20)의 구성들(곱셈기(21), 지수 및 부호 계산기(22), 쉬프터(23), 덧셈기(24), LOD(25)(Leading One Detector), 증분 및 쉬프팅 회로(27), 및 지수 업데이터(28))는 선택적으로 동작할 수 있다. 다시 말해서, 동작 모드에 따라서, 데이터 변환기(20)의 구성들 중 일부는 활성화되고 다른 일부는 비활성화될 수 있으며, 구성들 간의 입출력 관계가 변경될 수 있다.
또한, 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)이 부동 소수점 수일 경우를 가정하여 설명하였으나, 일부 동작 모드에서 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)은 정수이고, 데이터 변환기(20)은 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)의 데이터(A, B, C)를 기초로 동작할 수 있다.
도 7b는 본 개시의 예시적 실시예에 따른 데이터 변환기를 나타내는 회로도이다. 도 7b를 참조하면, 데이터 변환기(20a)는 곱셈기(21), 지수 및 부호 계산기(22), 쉬프터(23), 덧셈기(24), LZA(26)(Leading Zero Anticipator), 증분 및 쉬프팅 회로(27), 및 가수 업데이터(28)를 포함할 수 있다.
데이터 변환기(20a)의 구성 및 기능은 도 7a의 데이터 변환기(20)와 유사하다. 다만, 도 7a의 LOD(25) 대신 LZA(26)가 사용될 수 있다. LZA(26)는 쉬프터(23)로부터 출력되는 제1 값(LV) 및 제2 값(SV)을 수신하고, 제1 값(LV) 및 제2 값(SV)을 기초로 덧셈기(24)의 출력(R2)을 반올림(rounding) 및 포스트 정규화하는데 요구되는 비트 쉬프팅량(SH2)을 산출할 수 있다. 이하, 본 개시에서, LOD(25)는 LZA(26)로 대체될 수 있다. 예컨대, 빠른 처리 속도가 요구될 경우, 도 7b에 도시된 바와 같이, 데이터 변환기(20a)가 LZA(26)를 구비하고, 저전력이 요구될 경우, 도 7a에 도시된 바와 같이, 데이터 변환기(20)가 LOD(25)를 구비할 수 있다. 그러나, 이에 제한되는 것은 아니며, 실시예에 있어서, 데이터 변환기(20a)는 LOD(25)를 더 구비할 수 있으며, 데이터 변환기(20a)에 요구되는 성능에 따라서, LOD(25) 및 LZA(26) 중 하나가 선택적으로 동작할 수 있다. 예컨대, 데이터 변환기(20a)의 빠른 처리 속도가 요구될 경우, LZA(26)가 사용되고, 저전력이 요구될 경우, LOD(25)가 사용될 수 있다.
이하, 본 개시의 실시예에 따른 데이터 변환기(도 7a의 20)의 동작 모드들에따른 동작 방법이 설명된다. 이하의 설명은 도 7b의 데이터 변환기(20a)에도 적용될 수 있다.
도 8a는 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타내며, 도 8b는 도 8a의 데이터 변환기의 입력들을 나타낸다. 구체적으로, 도 8a는 데이터 변환기(20)가 부동 소수점 수들로 구성되는 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)에 대하여 부동 소수점 FMA 연산을 수행함으로써 부동 소수점 데이터를 양자화하고, 양자화된 값을 정수형 데이터로 변환하는 방법(양자화된 FP2INT 변환)을 나타낸다. 도 8b에 도시된 바와 같이, 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)들 각각은 부호(Sa, Sb, Sc), 지수부(Ea, Eb, Ec) 및 가수부(Fa, Fb, Fc)를 포함할 수 있다.
실수(R)는 수학식 4와 같이 나타낼 수 있고, 실수(R)에 대한 양자화 식은 수학식 5로 나타낼 수 있다.
Figure pat00005
Figure pat00006
이때, Q는 실수(R)에 대한 양자화된 정수를 나타내고, S는 스케일 펙터를 나타내며, Z는 제로 포인트 오프셋을 나타낸다. 실수(R), 스케일 펙터(S), 제로 포인트 오프셋(Z)은 부동 소수점 수이다.
도 8a를 참조하면, 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)은 각각 제로 포인트 오프셋(Z), 변환하고자 하는 실수(R), 및 스케일 펙터의 역수(1/S)를 나타낼 수 있다. 연산 부호(OPCD)는 출력값(OUT)의 데이터 타입(예컨대, 부호화된 정수인지(signed integer) 또는 부호가 없는 정수인지(unsigned integer), 및 정수의 비트 수 등) 및 동작 모드를 나타낼 수 있다. 제로 포인트 오프셋(Z) 및 스케일 펙터의 역수(1/S)는 양자화 파라미터이며, 양자화 모델을 사용하는 뉴럴 네트워크는 양자화 파라미터를 제공할 수 있다. 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)은 부동 소수점 입력 데이터로서 메모리(도 1의 130)로부터 수신될 수 있다.
데이터 변환기(20)는 수학식 6에 따른 연산을 수행함으로써, 제2 입력(IN_B) 에 대한 양자화된 정수를 출력값(OUT)으로서 출력할 수 있다.
Figure pat00007
이때, INT는 부동 소수점 수의 정수로의 변환을 의미하며, 제1 입력 내지 제3 입력(IN_A, IN_B, IN_C)의 부동 소수점 FMA 연산 후 정수 변환을 나타낸다.
연산 부호(OPCD)가 양자화 및 변환(quantization and conversion)을 지시하는 동작 모드를 나타내면, 곱셈기(21), 지수 및 부호 계산기(22), 쉬프터(23), 덧셈기(24), LOD(25)(Leading One Detector), 증분 및 쉬프팅 회로(27)가 활성화되고, 가수 업데이터(28)는 비활성화될 수 있다. 곱셈기(21), 지수 및 부호 계산기(22), 쉬프터(23), 덧셈기(24), LOD(25)(Leading One Detector), 증분 및 쉬프팅 회로(27)는 도 7a를 참조하여 설명한 바와 같이 동작함으로써, 양자화 및 변환을 수행할 수 있다.
이 때, 지수 및 부호 계산기(22)는 제2 입력(IN_B)의 지수부(Eb) 및 제3 입력(IN_C)의 지수부(Ec)의 합과 제1 입력(IN_A)의 지수부(Ea) 중 큰 값을 출력값(OUT)의 지수부로서 선택할 수 있다. 지수 및 부호 계산기(22)는 제2 입력(IN_B)의 부호(Sb)와 제3 입력(IN_C)의 부호(Sc)를 XOR(exclusive OR) 연산하고, 그 결과와 제1 입력(IN_A)의 부호(Sa) 중 큰 값을 출력값(OUT)의 부호로서 선택할 수 있다. 또한 지수 및 부호 계산기(22)는 연산 부호(OPCD)에 따른 데이터 타입이 부호를 포함할 경우, 부호 확장을 수행할 수 있다. 지수 및 부호 계산기(22)는 부호 확장을 반영한 쉬프팅을 지시하는 플래그를 쉬프팅 정보(SH1)로서 쉬프터(23)에 제공할 수 있다.
지수 및 부호 계산기(22)는 제1 입력(IN_A)의 지수부(Ea)에서 제2 입력(IN_B)의 지수부(Eb) 및 제3 입력(IN_C)의 지수부(Eb)의 합을 뺀 값, 즉 지수 차이(D)가 0보다 크면, 제2 입력(IN_B)의 가수부(Fb) 및 제3 입력(IN_C)의 가수부(Fc)를 곱한 값인 곱셈기(21)의 출력(R1)을 지수 차이(D)의 절대값만큼 오른쪽으로 쉬프팅 시키고, 지수 차이(D)가 0보다 작으면, 제1 입력(IN_A)의 가수부(Fa)를 지수 차이(D)의 절대값만큼 오른쪽으로 쉬프팅 시킬 것을 나타내는 쉬프팅 정보(SH1)를 생성할 수 있다. 쉬프터(23)는 쉬프팅 정보(SH1)에 기초하여 쉬프팅 동작을 수행할 수 있다.
본 실시예에서, 지수 및 부호 데이터 변환기(20)의 출력값(OUT)이 정수이므로 지수 업데이터(28)는 동작하지 않는다. 정수인 출력값(OUT)은 연산 부호(POCD)가 나타내는 데이터 타입에 따라서, 부호를 포함하거나 포함하지 않을 수 있고, 데이터 비트 수가 결정될 수 있다.
도 9a는 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타내며, 도 9b는 도 9a의 데이터 변환기의 입력들을 나타낸다. 구체적으로, 도 9a는 양자화 모델을 사용하는 뉴럴 네트워크에서, 뉴럴 네트워크 프로세서(30)의 출력, 즉 정수형 데이터를 포함하는 뉴럴 네트워크 연산의 결과를 부동 소수점 데이터로 변환하는 방법(양자화된 INT2FP 변환)을 나타낸다.
제1 입력(IN_A)은 스케일 펙터(S)와 제로 포인트 오프셋(Z)을 곱한 값이고, 제2 입력(IN_B)은 뉴럴 네트워크 프로세서(30)의 출력인 양자화된 정수이고, 제3 입력(IN_C)은 스케일 펙터(S)일 수 있다.
도 9a에 도시된 바와 같이, 제1 입력(IN_A) 및 제3 입력(IN_B)은 부동 소수점 수이고, 제2 입력(IN_B)은 정수일 수 있다. 제2 입력(IN_B)이 부동 소수점 수처럼 계산될 수 있도록 지수 및 부호 계산기는 제2 입력(IN_B)의 부호(Sb) 및 지수부(Eb)를 설정할 수 있다. 다시 말해서 정수인 제2 입력(IN_B)이 부동 소수점 수로 선처리(pre-processing)될 수 있다. 예를 들어서, 제2 입력(IN_B)이 부호화된 8비트 정수(즉 'signed char')일 경우, 제2 입력(IN_B)의 MSB가 제2 입력(IN_B)의 부호(Sb)로 설정되고, 7이 제2 입력의 지수부(Eb)로 설정될 수 있다. 또한 제2 입력(IN_B)의 8비트 데이터가 제2 입력(IN_B)의 가수부(Fb)로서 곱셈기(21)에 제공될 수 있다. 제2 입력(IN_B)이 부호가 없는 16비트 정수(즉 'unsigned short')일 경우, 제2 입력(IN_B)의 부호(Sb)는 0으로, 지수부(Eb)는 15로 설정되고, 제2 입력(IN_B)의 16비트 데이터가 가수부(Fb)로 설정될 수 있다.
데이터 변환기(20)는 수학식 7에 따른 연산을 수행함으로써, 제2 입력(IN_B) 에 대한 역양자화된 부동 소수점 수를 출력값(OUT)으로서 출력할 수 있다.
Figure pat00008
여기서, FLP는 정수의 부동 소수점 수로의 변환을 의미하며, 정수인 제2 입력(IN_B)을 부동 소수점 수로 선처리하고, 제1 입력 내지 제3 입력(IN_A, IN_B, IN_C)를 부동 소수점 FMA 연산하는 것을 나타낸다.
본 실시예에서, 데이터 변환기(20)의 모든 구성들이 활성화되어 동작할 수 있다. 데이터 변환기(20)의 구성들의 동작은 도 7a 및 도 9a를 참조하여 설명한 바와 동일한 바, 중복되는 설명은 생략하기로 한다.
도 10은 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타낸다. 구체적으로 본 실시예는 데이터 변환기(20)가 정수형 데이터를 입력으로 수신하고 수신된 정수형 데이터에 대하여 MAC 연산을 수행하는 것을 나타낸다. 뉴럴 네트워크 가속기(도 6의 30)가 일반적인 연산 처리를 수행할 경우, 데이터 변환기(20)가 입력 데이터를 처리함으로써, 뉴럴 네트워크 가속기(도 6의 30)의 부담(load)을 감소시킬 수 있다. 예를 들어서, 입력 데이터가 YUV인데, 뉴럴 네트워크 프로세서(30)에서는 RGB 입력 데이터를 처리할 경우, 데이터 변환기(20)는 메모리(130)로부터 데이터가 수신될 때, YUV 데이터를 RGB 데이터로 변환하고, RGB 데이터를 뉴럴 네트워크 프로세서(30)에 제공할 수 있다.
도 10을 참조하면, 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)은 정수이다. 연산 부호(OPCD)가 정수의 MAC 연산을 지시하는 동작 모드를 나타내면, 곱셈기(21), 및 덧셈기(24)는 활성화되고, 다른 구성들, 지수 및 부호 계산기(22), 쉬프터(23), LOD(25), 증분 및 쉬프팅 회로(27), 및 지수 업데이터(28)가 비활성화될 수 있다. 데이터 변환기(20)는 제1 입력(IN_A), 제2 입력(IN_B) 및 제3 입력(IN_C)의 데이터(A, B, C)를 기초로 동작할 수 있다. 곱셈기(21)는 제2 입력(IN_B) 의 데이터 A 및 제3 입력(IN_C)의 데이터 B를 곱하고, 곱셈 결과를 출력할 수 있다. 곱셈기(21)의 출력(R1) 및 제1 입력(IN_A)의 데이터 A는 쉬프터(23)를 바이패스하여 덧셈기(24)에 제1 값(LV) 및 제2 값(SV)으로서 제공될 수 있다. 덧셈기(24)는 제1 값(LV) 및 제2 값(SV)을 더한 결과를 출력할 수 있다. 덧셈기(24)의 출력(R2)은 LOD(25), 증분 및 쉬프팅 회로(27)를 바이패스하여 데이터 변환기(20)의 출력값(OUT)으로서 출력될 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타낸다. 구체적으로 본 실시예는 데이터 변환기(20)가 부동 소수점 수를 정수로 변환하는 것을 나타낸다.
도 11을 참조하면, 부동 소수점 수인 제1 입력(IN_A)이 수신될 수 있으며, 연산 부호(OPCD)가 부동 소수점 수의 정수로의 변환을 지시하는 동작 모드를 나타내면, 지수 및 부호 계산기(22) 및 쉬프터(23)는 활성화되고, 다른 구성들, 곱셈기(21), 덧셈기(24), LOD(25), 증분 및 쉬프팅 회로(27) 및 지수 업데이터(28)는 비활성화될 수 있다.
지수 및 부호 계산기(22)는 제1 입력(IN_A)의 부호(Sa) 및 지수부(Ea)를 수신할 수 있다. 연산 부호(OPCD)에 따른 데이터 타입이 부호를 포함할 경우, 지수 및 부호 계산기(22)는 부호 확장을 수행할 수 있다. 지수 및 부호 계산기(22)는 부호 확장을 반영한 쉬프팅을 지시하는 플래그를 쉬프팅 정보(SH1)로서 쉬프터(23)에 제공할 수 있다.
지수 및 부호 계산기(22)는 지수부(Ea)가 0보다 크면 지수부(Ea)의 값만큼 가수부(Fa)를 왼쪽으로 쉬프팅 시킬 것을 나타내는 쉬프팅 정보(SH1)를 쉬프터(23)에 제공하고, 쉬프터(23)는 쉬프팅 정보(SH1)를 기초로, 제1 입력(IN_A)의 가수부(Fa)를 왼쪽으로 쉬프팅시키고, 그 결과(R2)를 데이터 변환기(20)의 출력값(OUT)으로서 출력할 수 있다. 이 때, 지수부(Ea)의 값이 출력값(OUT)의 정수 타입(예컨대 'char', 'short' 및 'int')에 따른 비트 수를 초과할 경우, 출력값(OUT)은 대응하는 정수 타입의 최대 값일 수 있다. 예컨대, 출력값(OUT)이 32비트 정수, 즉 'int' 타입으로 표현되며, 지수부(Ea)의 값이 32보다 클 경우, 'int' 타입에 따라 나타낼 수 있는 최대값이 출력값(OUT)으로서 출력될 수 있다.
지수 및 부호 계산기(22)는 지수부(Ea)가 1이면, 출력값(OUT)이 1임을 나타내는 정보 및 지수부(Ea)가 0이면, 출력값(OUT)이 0임을 나타내는 정보를 쉬프터(23)에 제공하고, 쉬프터(23)는 상기 정보를 기초로 0 또는 1을 출력값(OUT)으로서 출력할 수 있다.
이에 따라서, 부동 소수점 수인 제1 입력(IB_A)이 정수로 변환될 수 있다. 이 때, 정수인 출력값(OUT)은 연산 부호(POCD)가 나타내는 데이터 타입에 따라서, 부호를 포함하거나 포함하지 않을 수 있고, 데이터 비트 수가 결정될 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 데이터 변환기의 동작 모드의 일 예를 나타낸다. 구체적으로 본 실시예는 데이터 변환기(20)가 정수를 부동 소수점 수로 변환하는 것을 나타낸다.
도 12를 참조하면, 정수인 제1 입력(IN_A)이 수신될 수 있으며, 연산 부호(OPCD)가 정수의 부동 소수점 수로의 변환(INT2FP 변환)을 지시하는 동작 모드를 나타내면, 지수 및 부호 계산기(22), 덧셈기(24) 및 지수 업데이터(28)는 활성화되고, 다른 구성들, 곱셈기(21), 쉬프터(23), LOD(25), 및 증분 및 쉬프팅 회로(27)는 비활성화될 수 있다.
지수 및 부호 계산기(22)는 제1 입력(IN_A)의 MSB를 수신하고, MSB를 출력값(OUT)의 부호로 결정할 수 있다. 제1 입력(IN_A)의 데이터 A는 쉬프터(23)를 바이패스하고, 덧셈기(24)의 제1 값(LV)으로서 제공될 수 있다. 데이터 0이 제2 값(SV)으로서 제공될 수 있으며, 덧셈기(24)는 지수 및 부호 계산기(22)에서 결정된 부호를 기초로 제1 값(LV) 및 제2 값(LV)을 더한 값을 출력(R2)으로서 생성할 수 있다. LOD(25)는 덧셈기(24)의 출력(R2)을 기초로 덧셈기(24)의 출력(R2)에서 선행하는 '1'을 검출하고, 검출 결과를 기초로 덧셈기(24)의 출력(R2)을 부동 소수점 수의 가수부로 매칭시키기 위한 쉬프팅 정보(SH2)를 산출할 수 있다. 예컨대 쉬프팅 정보(SH2)는 부동 소수점 수에서 지수부를 나타내기 위한 쉬프팅 값을 포함할 수 있다.
증분 및 쉬프팅 회로(27)는 덧셈기(24)의 출력(R2)에서 유효 데이터를 나타내는 데이터 비트들을 출력할 수 있다. 또한, 증분 및 쉬프팅 회로(27)는 쉬프팅 정보(SH2), 즉 LOD(25)에서 산출된 쉬프팅 값에 1을 더한 값을 나타내는 쉬프팅 정보(SH)를 생성하고, 쉬프팅 정보(SH)를 지수 및 부호 계산기(22)에 제공할 수 있다.
본 실시예에서, 데이터 변환기(20)의 출력값(OUT)이 부동 소수점 수이므로, 지수 업데이터(28)는 부호 확장을 수행할 수 있으며, 제1 입력(IN_A)의 비트 수에 따라서 출력값(OUT)의 지수부(Ea)를 결정할 수 있다. 이때, 지수 업데이터(28)는 증분 및 쉬프팅 회로(27)로부터 제공되는 쉬프팅 정보(SH)에 기초하여 지수부(Ea)를 왼쪽으로 쉬프팅 시킴으로써, 즉, 지수부(Ea)의 데이터를 증가시킴으로써, 지수부(Ea)를 업데이트할 수 있다. 지수 업데이터(28)에서 출력되는 부호(Sa), 업데이트 된 지수부(Ea) 및 증분 및 쉬프팅 회로(27)의 출력(R3), 즉 가수부(Fa)가 부동 소수점 수인 출력값(OUT)을 구성할 수 있다. 이로써, 정수인 제1 입력(IB_A)이 부동 소수점 수로 변환될 수 있다.
도 13은 본 개시의 예시적 실시예에 따른 데이터 변환기를 나타내는 회로도이다.
도 13을 참조하면, 데이터 변환기(20b)는 곱셈기(21), 지수 및 부호 계산기(22), 쉬프터(23), 덧셈기(24), LZA(26)(Leading Zero Anticipator), 및 지수 업데이터(28)를 포함할 수 있다.
도 13의 데이터 변환기(20b)의 구성 및 동작은 도 7b의 데이터 변환기(20b)의 구성 및 동작과 유사하다. 다만, 도 7b의 증분 및 쉬프팅 회로(27)의 기능은 쉬프터(23) 및 덧셈기(24)의 조합에 따른 기능과 동일 또는 유사한 바, 쉬프터(23) 및 덧셈기(24)가 증분 및 쉬프팅 회로(27)의 동작을 수행할 수 있다. 도 13의 데이터 변환기(20b)에서 도 7b의 증분 및 쉬프팅 회로(27)의 기능 중 쉬프팅 기능은 쉬프터(23)가 수행하고 증분 기능은 덧셈기(24)가 수행할 수 있다. 도 8a, 9a 및 도 12를 참조하여 설명한 바와 같이, 데이터 변환기(20b)가 양자화된 FP2INT 변환, 양자화된 INT2FP 변환 및 INT2FP 변환 중 하나를 수행할 때, 쉬프터(23)가 덧셈기(24)의 출력(R2)을 수신하고, LZA(26)로부터 제공되는 쉬프팅 정보(SH2) 및 지수 및 부호 계산기(22)에서 결정된 지수 및 부호를 기초로 덧셈기(24)의 출력(R2)을 쉬프팅시킬 수 있다. 이에 따라서, 덧셈기(24)의 출력(R2)이 정규화(및 양자화)될 수 있으며, 정규화된 출력(R3)이 덧셈기(24)를 통해 출력될 수 있다.
도 14는 본 개시의 실시예에 따른 뉴럴 네트워크 장치를 나타내는 블록도이다.
도 14를 참조하면, 뉴럴 네트워크 장치(120a)는 DMA 컨트롤러(10), 제1 데이터 변환기(20_1), 제2 데이터 변환기(20_2) 및 뉴럴 네트워크 프로세서(30)를 포함할 수 있다. DMA 컨트롤러(10) 및 뉴럴 네트워크 프로세서(30)의 기능은 도 6의 DMA 컨트롤러(10) 및 뉴럴 네트워크 프로세서(30)의 기능과 동일하다. 따라서, 중복되는 설명은 생략하기로 한다.
도 14에서, 제1 데이터 변환기(20_1)는 DMA 컨트롤러(10)를 통해 수신된 고정 소수점 입력 데이터(FPID)를 정수형 입력 데이터(INTID)로 변환할 수 있다. 제1 데이터 변환기(20_1)는 변환된 정수형 입력 데이터(INTID)를 뉴럴 네트워크 프로세서(30)에 제공할 수 있다.
제2 데이터 변환기(20_2)는 뉴럴 네트워크 프로세서(30)로부터 출력되는 정수형 출력 데이터(INTOD)를 부동 소수점 출력 데이터(FPOD)로 변환할 수 있다. 제2 데이터 변환기(20_2)는 부동 소수점 출력 데이터(FPOD)를 DMA 컨트롤러(10)에 제공할 수 있다.
제1 데이터 변환기(20_1) 및 제2 데이터 변환기(20_2)의 구조는 도 7a, 도 7b 및 도 13을 참조하여 설명한 데이터 변환기(20, 20a, 20b)와 유사할 수 있다. 다만 제1 데이터 변환기(20_1)는 지수 업데이터(28)를 포함하지 않을 수 있다.
실시예에 있어서, 뉴럴 네트워크 장치(120b)는 복수의 데이터 변환기를 포함할 수 있다. 예컨대, 뉴럴 네트워크 장치(120b)는 복수의 제1 데이터 변환기(20_1) 및 복수의 제2 데이터 변환기(20_2)를 포함할 수 있다. 복수의 제1 데이터 변환기(20_1) 및 복수의 제2 데이터 변환기(20_2) 각각의 개수는 뉴럴 네트워크 프로세서(30)의 처리 속도 및 메모리(130)의 대역폭에 기초하여 설정될 수 있다.
도 15는 본 개시의 예시적 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
도 15를 참조하면, 데이터 처리 시스템(1000)은 CPU(1100) 및 복수의 IP(Intellectual Property)(1200, 1300, 1400)를 포함할 수 있다. 데이터 처리 시스템(1000)의 구성들(예컨대 CPU(1100) 및 복수의 IP(1200, 1300, 1400))는 버스(1150)를 통해 서로 데이터를 송수신할 수 있다. 실시예에 있어서, 데이터 처리 시스템(1000)은 시스템-온 칩(SoC)으로 구현될 수 있다.
CPU(1100)는 데이터 처리 시스템(1000)의 전반적인 동작을 제어하며, 복수의 IP(1200, 1300, 1400) 각각은 데이터 처리 시스템(1000) 내에서 특정 기능을 수행할 수 있다.
복수의 IP(1200, 1300, 1400) 중 제1 IP(1200)는 정수 연산 또는 정수 처리에 기초하여 동작할 수 있다. 실시예에 있어서, 제1 IP(1200)는 정수 연산기들을 포함하는 가속기일 수 있다. 제1 IP(1200)는 부동 소수점 데이터(FPD)와 정수형 데이터(INTD) 간 데이터 변환을 수행하는 데이터 변환기(1210)를 구비할 수 있다. 데이터 변환기(1210)는 전술한 본 개시의 다양한 실시예들에 따른 도 7a, 도 7b, 및 도 13의 데이터 변환기(20, 20a, 20b)로 구현될 수 있다. 데이터 변환기(1210)는 다른 구성들, 예컨대 CPU(1100), 제2 IP(1300) 및/또는 제3 IP(1400)로부터 수신되는 부동 소수점 데이터(FPD)를 정수형 데이터(INTD)로 변환할 수 있다. 제1 IP(1200)가 변환된 정수형 데이터(INTD)에 기초하여 동작한 결과는 정수형 데이터(INTD)로서 출력될 수 있으며, 데이터 변환기(1210)는, 정수형 데이터(INTD)를 부동 소수점 데이터(FPD)로 변환할 수 있다.
본 실시예에서 제1 IP(1200)가 데이터 변환기(1210)를 구비하는 것으로 설명되었으나, 이에 제한되는 것은 아니며, 실시예에 있어서, 다른 IP들, 예컨대 제2 IP(1300) 및/또는 제3 IP(1400) 또한 데이터 변환기(1210)를 구비하고, 외부로부터 수신되는 부동 소수점 데이터(FPD)를 정수형 데이터(INTD)로 변환하고, 정수형 데이터(INTD)를 처리하거나 또는 정수 연산을 수행할 수 있다.
도 16은 본 개시의 예시적 실시예에 따른 애플리케이션 프로세서를 나타내는 블록도이다.
도 15를 참조하면, 애플리케이션 프로세서(2000)는 CPU(2100), RAM(Random Access Memory, 2200), GPU(2300), 컴퓨팅 장치(2400), 센서 인터페이스(2500), 디스플레이 인터페이스(2600) 및 메모리 인터페이스(2700)를 포함할 수 있다. 이 외에도 애플리케이션 프로세서(2000)는 통신 모듈을 더 포함할 수 있으며, 애플리케이션 프로세서(2000)의 각 구성(CPU(2100), RAM(Random Access Memory, 2200), GPU(2300), 컴퓨팅 장치(2400), 센서 인터페이스(2500), 디스플레이 인터페이스(2600) 및 메모리 인터페이스(2700))은 버스(2800)를 통해 서로 데이터를 송수신할 수 있다.
CPU(2100)는 애플리케이션 프로세서(2000)의 전반적인 동작을 제어할 수 있다. CPU(2100)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. CPU(2100)는 메모리(2710)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, CPU(2100)는 메모리(2710)에 저장된 프로그램들을 실행함으로써, 컴퓨팅 장치(2400)의 기능을 제어할 수 있다.
RAM(2200)은 프로그램들, 데이터, 및/또는 명령들(instructions)을 일시적으로 저장할 수 있다. 실시 예에 따라, RAM(2200)은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다. RAM(2200)은 인터페이스들(2500, 2600)을 통해 입출력되거나, GPUU(2300) 또는 메인 CPU(2100)에서 생성되는 이미지를 일시적으로 저장할 수 있다.
실시예에 있어서, 애플리케이션 프로세서(2000)는 ROM(Read Only Memory)를더 구비할 수 있다. ROM은 지속적으로 사용되는 프로그램들 및/또는 데이터를 저장할 수 있다. ROM은 EPROM(erasable programmable ROM) 또는 EEPROM(electrically erasable programmable ROM) 등으로 구현될 수 있다.
GPU(2300)는 영상 데이터에 대한 이미지 처리를 수행할 수 있다. 컨대 GPU(2300)는 센서 인터페이스(2500)를 통해 수신되는 영상 데이터에 대한 이미지 처리를 수행할 수 있다. 실시예에 있어서, GPU(2300)는 부동 소수점 연산을 수행할 수 있다.
GPU(2300)에서 처리된 영상 데이터는 메모리(2710)에 저장되거나 또는 디스플레이 인터페이스(2600)를 통해 디스플레이 장치(2610)로 제공될 수 있다. 메모리(2710)에 저장된 영상 데이터는 컴퓨팅 장치(2400)에 제공될 수 있다.
센서 인터페이스(2500)는 애플리케이션 프로세서(2000)에 연결되는 센서(2510)로부터 입력되는 데이터(예컨대, 영상 데이터, 음성 데이터 등)를 인터페이싱할 수 있다.
디스플레이 인터페이스(2600)는 디스플레이 장치(2610)로 출력되는 데이터(예컨대, 이미지)를 인터페이싱할 수 있다. 디스플레이 장치(2610)는 이미지 또는 영상에 대한 데이터를 LCD(Liquid-crystal display), AMOLED(active matrix organic light emitting diodes) 등의 디스플레이를 통해 출력할 수 있다.
메모리 인터페이스(2700)는 애플리케이션 프로세서(2000)의 외부에 있는 메모리(2710)로부터 입력되는 데이터 또는 메모리(2710)로 출력되는 데이터를 인터페이싱할 수 있다. 실시예에 따라, 메모리(2710)는 DRAM이나 SRAM 등의 휘발성 메모리 또는 ReRAM, PRAM 또는 NAND flash 등의 비휘발성 메모리로 구현될 수 있다. 메모리(2710)는 메모리 카드(MMC, eMMC, SD, micro SD) 등으로 구현될 수도 있다.
컴퓨팅 장치(2400)는 도 1 내지 도 14를 참조하여 전술한 바와 같이, 부동 소수점 데이터와 정수형 데이터 간 데이터 변환을 수행하는 데이터 변환기(20)를 포함할 수 있으며, 입력되는 부동 소수점 데이터를 정수형 데이터로 변환하고, 정수형 데이터에 기초한 정수 연산 결과, 즉 정수 데이터를 부동 소수점 데이터로 변환할 수 있다. 실시예에 있어서 컴퓨팅 장치(2400)는 정수 연산에 기반한 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 장치일 수 있다. 예컨대, 컴퓨팅 장치(2400)는, 도 1의 뉴럴 네트워크 장치(120)로 구현될 수 있다. 컴퓨팅 장치(2400)는 메모리(2710)로부터 부동 소수점 데이터를 독출할 때 및 메모리(2710)에 부동 소수점 데이터를 전송할 때, 내부적으로 데이터 변환을 수행할 수 있다. 이에 따라서, CPU(2100)의 부담(load)이 감소되고, 애플리케이션 프로세서(2000)의 처리 속도가 향상될 수 있다. 또한, 컴퓨팅 장치(2400)가 정수 연산을 수행하는 바, 소비 전력이 감소되고, 데이터 처리 결과의 정확도가 향상될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치에 있어서,
    메모리로부터 부동 소수점 데이터를 수신하는 DMA(Direct Memory Access) 컨트롤러;
    상기 DMA 컨트롤러를 통해 수신된 상기 부동 소수점 데이터를 정수형 데이터로 변환하는 데이터 변환기; 및
    상기 데이터 변환기로부터 제공되는 상기 정수형 데이터를 이용하여 정수 연산에 기반한 뉴럴 네트워크 연산을 수행하는 프로세서를 포함하는 뉴럴 네트워크 장치.
  2. 제1 항에 있어서, 상기 프로세서는,
    각각이 상기 정수 연산을 수행하는 복수의 프로세싱 소자들을 포함하는 것을 특징으로 하는 뉴럴 네트워크 장치.
  3. 제1 항에 있어서, 상기 데이터 변환기는,
    부동 소수점 FMA(Fused Multiply-Add) 연산을 수행하는 것을 특징으로 하는 뉴럴 네트워크 장치.
  4. 제1 항에 있어서, 상기 데이터 변환기는, 두 개의 양자화 파라미터 및 입력 값을 기초로 상기 입력 값의 양자화 및 데이터 변환을 수행하며, 상기 두 개의 양자화 파라미터 및 상기 입력 값은 부동 소수점 수인 것을 특징으로 하는 뉴럴 네트워크 장치.
  5. 제4 항에 있어서, 상기 데이터 변환기의 출력은 양자화된 정수이며, 상기 데이터 변환기에 인가되는 연산 부호에 기초하여 상기 정수의 부호 유무 및 상기 정수의 데이터 비트 수가 결정되는 것을 특징으로 하는 뉴럴 네트워크 장치.
  6. 제1 항에 있어서, 상기 데이터 변환기는,
    상기 프로세서로부터 출력되는 정수형 출력 데이터를 부동 소수점 출력 데이터로 변환하는 것을 특징으로 하는 뉴럴 네트워크 장치.
  7. 제6 항에 있어서, 상기 DMA 컨트롤러는 상기 부동 소수점 출력 데이터를 직접 상기 메모리에 저장하는 것을 특징으로 하는 뉴럴 네트워크 장치.
  8. 제6 항에 있어서, 상기 데이터 변환기는,
    두 개의 양자화 파라미터 및 상기 정수형 출력 데이터의 출력 값을 기초로 상기 출력 값의 역양자화 및 데이터 변환을 수행하며, 상기 두 개의 양자화 파라미터는 부동 소수점 수이고, 상기 출력 값은 정수인 것을 특징으로 하는 뉴럴 네트워크 장치.
  9. 제1 항에 있어서, 상기 데이터 변환기는,
    선택적으로, 정수형 입력값들을 수신하고 상기 정수형 입력값들을 기초로 정수 연산을 수행하는 것을 특징으로 하는 뉴럴 네트워크 장치.
  10. 제1 항에 있어서, 상기 데이터 변환기는,
    복수의 부동 소수점 연산기 및 쉬프터들을 포함하며, 수신되는 연산 부호에 따라 상기 복수의 부동 소수점 연산기 및 쉬프터들 중 적어도 일부가 비활성화되고 다른 일부가 활성화됨으로써, 상기 연산 부호에 따른 동작 모드를 수행하는 것을 특징으로 하는 뉴럴 네트워크 장치.
  11. 제1 항에 있어서, 상기 데이터 변환기는,
    제1 출력 및 제2 출력을 출력하는 쉬프터; 및
    상기 제1 출력 및 제2 출력을 합산함으로서 제3 출력을 생성하는 덧셈기를 포함하는 부동 소수점 FMA 회로를 포함하며,
    상기 덧셈기의 출력이 상기 쉬프터에 제공되는 것을 특징으로 하는 뉴럴 네트워크 장치.
  12. 뉴럴 네트워크 장치의 동작 방법에 있어서,
    메모리로부터 부동 소수점 입력 데이터를 수신하는 단계;
    상기 부동 소수점 입력 데이터를 정수형 입력 데이터로 변환하는 단계; 및
    상기 정수형 입력 데이터를 이용하여 정수 연산 기반의 뉴럴 네트워크 연산을 수행하는 단계를 포함하는 방법
  13. 제12 항에 있어서, 상기 부동 소수점 입력 데이터를 수신하는 단계는 상기 메모리로부터 직접 상기 부동 소수점 입력 데이터를 수신하는 것을 특징으로 하는 방법.
  14. 제12 항에 있어서, 상기 부동 소수점 입력 데이터를 정수형 입력 데이터로 변환하는 단계는,
    상기 부동 소수점 입력 데이터로서 수신된 두 개의 양자화 파라미터 및 입력 값을 기초로 상기 입력 값의 양자화 및 데이터 변환을 수행하는 것을 특징으로 하는 방법.
  15. 제15 항에 있어서, 상기 부동 소수점 입력 데이터를 정수형 입력 데이터로 변환하는 단계는,
    연산 부호에 따라, 상기 부동 소수점 입력 데이터에 대한 양자화 및 데이터 변환이 수행되는 제1 동작 모드 및 상기 부동 소수점 입력 데이터에 대한 데이터 변환이 수행되는 제2 동작 모드 중 하나에 기초하여 수행되는 것을 특징으로 하는 방법.
  16. 제12 항에 있어서,
    상기 뉴럴 네트워크 연산의 연산 결과에 따른 정수형 출력 데이터를 부동 소수점 출력 데이터로 변환하는 단계; 및
    상기 부동 소수점 출력 데이터를 상기 메모리에 전송하는 저장하는 단계를 더 포함하는 방법.
  17. 제16 항에 있어서, 상기 정수형 출력 데이터를 부동 소수점 출력 데이터로 변환하는 단계는,
    상기 부동 소수점 입력 데이터로서 수신된 두 개의 양자화 파라미터 및 상기부동 소수점 출력 데이터의 출력 값을 기초로 상기 출력 값의 역양자화 및 데이터 변환을 수행하는 것을 특징으로 하는 방법.
  18. 부동 소수점 타입의 연산 파라미터 및 피쳐 값들을 저장하는 메모리; 및
    상기 메모리로부터 상기 연산 파라미터 및 상기 피쳐 값들을 수신하고, 상기 연산 파라미터 및 상기 피쳐 값들을 정수 타입으로 변환하고, 정수 타입의 상기 연산 파라미터 및 상기 피쳐 값들을 기초로 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서.
  19. 제18 항에 있어서, 상기 뉴럴 네트워크 장치는,
    부동 소수점 타입의 상기 연산 파라미터 및 상기 피쳐 값들을 정수 타입으로 변환하는 데이터 변환기; 및
    정수 타입의 상기 연산 파라미터 및 상기 피쳐 값들을 기초로 정수 연산을 수행함으로써, 상기 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 프로세서를 포함하는 것을 특징으로 하는 애플리케이션 프로세서.
  20. 제19 항에 있어서, 상기 데이터 변환기는,
    정수 타입의 상기 뉴럴 네트워크 연산의 연산 결과를 부동 소수점 수로 변환하는 것을 특징으로 하는 애플리케이션 프로세서.

KR1020180146610A 2018-11-23 2018-11-23 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서 KR20200061164A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180146610A KR20200061164A (ko) 2018-11-23 2018-11-23 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서
US16/547,495 US11429838B2 (en) 2018-11-23 2019-08-21 Neural network device for neural network operation, method of operating neural network device, and application processor including the neural network device
DE102019122818.2A DE102019122818A1 (de) 2018-11-23 2019-08-26 Neuronale Netzwerkvorrichtung für eine neuronale Netzwerkoperation, Verfahren zum Betreiben einer neuronalen Netzwerkvorrichtung und Anwendungsprozessor, der die neuronale Netzwerkvorrichtung beinhaltet
CN201911135614.XA CN111222634A (zh) 2018-11-23 2019-11-19 应用处理器、神经网络器件及操作神经网络器件的方法
TW108142449A TWI811486B (zh) 2018-11-23 2019-11-22 應用處理器、神經網路器件及操作神經網路器件的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180146610A KR20200061164A (ko) 2018-11-23 2018-11-23 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서

Publications (1)

Publication Number Publication Date
KR20200061164A true KR20200061164A (ko) 2020-06-02

Family

ID=70546366

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180146610A KR20200061164A (ko) 2018-11-23 2018-11-23 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서

Country Status (5)

Country Link
US (1) US11429838B2 (ko)
KR (1) KR20200061164A (ko)
CN (1) CN111222634A (ko)
DE (1) DE102019122818A1 (ko)
TW (1) TWI811486B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113593538A (zh) * 2021-09-02 2021-11-02 北京声智科技有限公司 语音特征的分类方法、相关设备及可读存储介质
WO2022097954A1 (ko) * 2020-11-03 2022-05-12 오픈엣지테크놀로지 주식회사 신경망 연산방법 및 신경망 가중치 생성방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10741568B2 (en) 2018-10-16 2020-08-11 Silicon Storage Technology, Inc. Precision tuning for the programming of analog neural memory in a deep learning artificial neural network
US11080017B2 (en) * 2019-02-21 2021-08-03 Micron Technology, Inc. Host-based bit string conversion
US11403067B2 (en) * 2019-03-20 2022-08-02 Micron Technology, Inc. Memory array data structure for posit operations
CN111291876B (zh) * 2020-01-21 2023-03-28 星宸科技股份有限公司 运算装置、运算方法和运算芯片
JP2021175126A (ja) * 2020-04-28 2021-11-01 キヤノン株式会社 分割パターン決定装置、分割パターン決定方法、学習装置、学習方法およびプログラム
KR20220030106A (ko) * 2020-09-02 2022-03-10 삼성전자주식회사 저장 장치, 저장 장치의 동작 방법 및 이를 포함한 전자 장치
US11853759B2 (en) * 2020-11-02 2023-12-26 Electronics And Telecommunications Research Institute Neural network accelerator with type conversion units and operating method thereof
JP2024504003A (ja) * 2020-12-23 2024-01-30 シリコン ストーリッジ テクノロージー インコーポレイテッド 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用の入力及びデジタル出力機構
US20230133360A1 (en) * 2021-10-28 2023-05-04 Taiwan Semiconductor Manufacturing Company, Ltd. Compute-In-Memory-Based Floating-Point Processor

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9147154B2 (en) 2013-03-13 2015-09-29 Google Inc. Classifying resources using a deep network
US11049006B2 (en) * 2014-09-12 2021-06-29 Microsoft Technology Licensing, Llc Computing system for training neural networks
US10373050B2 (en) 2015-05-08 2019-08-06 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
CN106599991B (zh) * 2015-10-08 2019-04-09 上海兆芯集成电路有限公司 具有神经存储器的神经网络单元和集体将来自神经存储器的数据列移位的神经处理单元阵列
US11055063B2 (en) 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
KR102608467B1 (ko) 2016-07-28 2023-12-04 삼성전자주식회사 뉴럴 네트워크의 경량화 방법, 이를 이용한 인식 방법, 및 그 장치
US11222263B2 (en) 2016-07-28 2022-01-11 Samsung Electronics Co., Ltd. Neural network method and apparatus
US20180046903A1 (en) 2016-08-12 2018-02-15 DeePhi Technology Co., Ltd. Deep processing unit (dpu) for implementing an artificial neural network (ann)
US10802992B2 (en) 2016-08-12 2020-10-13 Xilinx Technology Beijing Limited Combining CPU and special accelerator for implementing an artificial neural network
JP6690489B2 (ja) 2016-09-30 2020-04-28 沖電気工業株式会社 情報処理装置、情報処理方法、およびプログラム
CN106502626A (zh) 2016-11-03 2017-03-15 北京百度网讯科技有限公司 数据处理方法和装置
US10528321B2 (en) * 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US10373049B2 (en) 2016-12-20 2019-08-06 Google Llc Generating an output for a neural network output layer
US10586148B2 (en) * 2016-12-31 2020-03-10 Via Alliance Semiconductor Co., Ltd. Neural network unit with re-shapeable memory
US10650303B2 (en) 2017-02-14 2020-05-12 Google Llc Implementing neural networks in fixed point arithmetic computing systems
US10678508B2 (en) * 2018-03-23 2020-06-09 Amazon Technologies, Inc. Accelerated quantized multiply-and-add operations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022097954A1 (ko) * 2020-11-03 2022-05-12 오픈엣지테크놀로지 주식회사 신경망 연산방법 및 신경망 가중치 생성방법
CN113593538A (zh) * 2021-09-02 2021-11-02 北京声智科技有限公司 语音特征的分类方法、相关设备及可读存储介质

Also Published As

Publication number Publication date
CN111222634A (zh) 2020-06-02
TW202025004A (zh) 2020-07-01
DE102019122818A1 (de) 2020-05-28
TWI811486B (zh) 2023-08-11
US20200167632A1 (en) 2020-05-28
US11429838B2 (en) 2022-08-30

Similar Documents

Publication Publication Date Title
US11429838B2 (en) Neural network device for neural network operation, method of operating neural network device, and application processor including the neural network device
EP3474194B1 (en) Method and apparatus with neural network parameter quantization
US20210004663A1 (en) Neural network device and method of quantizing parameters of neural network
US10929746B2 (en) Low-power hardware acceleration method and system for convolution neural network computation
EP3627397B1 (en) Processing method and apparatus
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
US20190130255A1 (en) Method and apparatus for generating fixed-point type neural network
KR102637733B1 (ko) 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
WO2020074989A1 (en) Data representation for dynamic precision in neural network cores
JP7414930B2 (ja) 情報処理装置、情報処理方法
EP4318313A1 (en) Data processing method, training method for neural network model, and apparatus
KR20210154502A (ko) 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
WO2020003043A1 (en) Low precision deep neural network enabled by compensation instructions
KR20210085461A (ko) 프로세싱 장치 및 프로세싱 장치에서 부동 소수점 연산을 처리하는 방법
KR20210124888A (ko) 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서
WO2021081854A1 (zh) 一种卷积运算电路和卷积运算方法
US20210311703A1 (en) Neural network device for neural network operation, operating method of the neural network device, and application processor including the same
US20210312012A1 (en) Neural network device, method of operating the neural network device, and application processor including the neural network device
US20210312269A1 (en) Neural network device for neural network operation, method of operating neural network device, and application processor including neural network device
CN112085175A (zh) 基于神经网络计算的数据处理方法和装置
US11335045B2 (en) Combining feature maps in an artificial intelligence semiconductor solution
US20240135174A1 (en) Data processing method, and neural network model training method and apparatus
TWI834729B (zh) 神經網路處理器及其卷積操作方法
KR20210124883A (ko) 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서
KR102384588B1 (ko) 신경망 연산방법 및 신경망 가중치 생성방법

Legal Events

Date Code Title Description
A201 Request for examination