KR20220145143A - 뉴럴 네트워크 장치 및 그의 동작 방법 - Google Patents
뉴럴 네트워크 장치 및 그의 동작 방법 Download PDFInfo
- Publication number
- KR20220145143A KR20220145143A KR1020210051857A KR20210051857A KR20220145143A KR 20220145143 A KR20220145143 A KR 20220145143A KR 1020210051857 A KR1020210051857 A KR 1020210051857A KR 20210051857 A KR20210051857 A KR 20210051857A KR 20220145143 A KR20220145143 A KR 20220145143A
- Authority
- KR
- South Korea
- Prior art keywords
- circuit
- processing circuit
- output
- input
- processing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/08—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/16—Storage of analogue signals in digital stores using an arrangement comprising analogue/digital [A/D] converters, digital memories and digital/analogue [D/A] converters
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/12—Analogue/digital converters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Image Analysis (AREA)
Abstract
뉴럴 네트워크 장치 및 그의 동작 방법이 개시된다. 일 실시예에 따른 뉴럴 네트워크 장치는, 입력 액티베이션(input activation) 및 웨이트(weight)에 대한 VMM(Vector-by-Matrix Multiplication) 연산을 수행하는 제1 처리 회로 및 제2 처리 회로와, 상기 제1 처리 회로의 출력을 저장하는 제1 레지스터와, 상기 레지스터의 출력 및 상기 제2 처리 회로의 출력을 가산하는 가산기와, 상기 가산기의 출력을 저장하는 제2 레지스터와, 동일한 입력 액티베이션을 상기 제1 처리 회로 및 상기 제2 처리 회로에 입력하고, 상기 제1 처리 회로 및 상기 제2 처리 회로를 제어하는 입력 회로를 포함한다.
Description
본 개시는 뉴럴 네트워크 장치 및 그의 동작 방법에 관한 것이다.
뉴럴 네트워크 연산들을 수행하는 뉴로모픽 프로세서(neuromorphic processor)에 관한 관심이 증대되고 있다. 예를 들어, 뉴런 회로 및 시냅스 회로를 포함하는 뉴로모픽 프로세서를 구현하고자 하는 연구가 진행되고 있다. 이와 같은 뉴로모픽 프로세서는 Convolutional Neural Network(CNN), Recurrent Neural Network(RNN), Feedforward Neural Network(FNN) 등과 같은 다양한 뉴럴 네트워크들을 구동하기 위한 뉴럴 네트워크 장치로 이용될 수 있고, 데이터 분류(classification) 또는 이미지 인식(recognition)을 포함하는 분야들에서 활용될 수 있다.
일 실시예에 따른 뉴럴 네트워크 장치는, 입력 액티베이션(input activation) 및 웨이트(weight)에 대한 VMM(Vector-by-Matrix Multiplication) 연산을 수행하는 제1 처리 회로 및 제2 처리 회로와, 상기 제1 처리 회로의 출력을 저장하는 제1 레지스터와, 상기 레지스터의 출력 및 상기 제2 처리 회로의 출력을 가산하는 가산기와, 상기 가산기의 출력을 저장하는 제2 레지스터와, 동일한 입력 액티베이션을 상기 제1 처리 회로 및 상기 제2 처리 회로에 입력하고, 상기 제1 처리 회로 및 상기 제2 처리 회로를 제어하는 입력 회로를 포함한다.
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은, 상기 웨이트를 읽고 쓰는(read-write) RW(read-write) 회로와, 입력 액티베이션을 아날로그 신호로 디코딩하는 디코더와, 출력 액티베이션을 디지털 신호로 변환하는 ADC(analog-to-digital converter)와, VMM 연산을 수행하는 하나 이상의 크로스바 어레이를 포함하고, 상기 하나 이상의 크로스바 어레이는, 상기 RW 회로, 상기 디코더 및 상기 ADC를 공유할 수 있다.
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은, 상기 하나 이상의 크로스바 어레이 중 선택된 하나의 크로스바 어레이가 상기 VMM 연산을 수행할 수 있다.
상기 하나 이상의 크로스바 어레이 각각은, 복수의 로우 라인들과, 상기 복수의 로우 라인들과 교차하는 복수의 칼럼 라인들과, 상기 복수의 로우 라인들 및 상기 복수의 칼럼 라인들의 교차점들에 배치되고, 커널(kernel)에 포함되는 웨이트들을 저장하는 복수의 메모리 셀들을 포함할 수 있다.
상기 입력 회로는, 상기 입력 액티베이션을 포함하는 입력 피처맵(input feature map)을 저장하는 IFM 버퍼(IFM(input feature map) buffer)와, 상기 제1 처리 회로 및 상기 제2 처리 회로를 제어하는 제어 회로와, 상기 웨이트를 제어하는 웨이트 RW 회로(weight RW circuit)를 포함할 수 있다.
일 실시예에 따른 뉴럴 네트워크 장치는, 웨이트(weight) 및 동일한 입력 액티베이션(input activation)에 대한 VMM(Vector-by-Matrix Multiplication) 연산을 수행하는 복수의 처리 회로와, 매 사이클 마다 상기 입력 액티베이션을 상기 복수의 처리 회로에 입력하고, 상기 복수의 처리 회로를 제어하는 입력 회로와, 상기 복수의 처리 회로의 출력을 순차적으로 가산하는 가산 회로를 포함한다.
상기 가산 회로는, 기 복수의 처리 회로 중 제1 처리 회로의 출력을 저장하는 제1 레지스터와, 상기 제1 레지스터의 출력 및 상기 복수 처리 회로 중 제2 처리회로의 출력을 가산하는 가산기와, 상기 가산기의 출력을 저장하는 제2 레지스터를 포함할 수 있다.
상기 뉴럴 네트워크 장치는, 상기 가산 회로의 출력에 대한 후처리를 수행하는 포스트 프로세싱 회로(post processing circuit)를 더 포함할 수 있다.
상기 뉴럴 네트워크 장치는, 회로의 출력을 지연시켜 상기 포스트 프로세싱 회로에 입력하는 지연 회로(delay circuit)를 더 포함할 수 있다.
상기 복수의 처리 회로 각각은, 상기 웨이트를 읽고 쓰는(read-write) RW(read-write) 회로와, 입력 액티베이션을 아날로그 신호로 디코딩하는 디코더와, 출력 액티베이션을 디지털 신호로 변환하는 ADC(analog-to-digital converter)와, VMM 연산을 수행하는 하나 이상의 크로스바 어레이들을 포함하고, 상기 하나 이상의 크로스바 어레이들은, 상기 RW 회로, 상기 디코더 및 상기 ADC를 공유할 수 있다.
상기 복수의 처리 회로 각각은, 상기 하나 이상의 크로스바 어레이 중 선택된 하나의 크로스바 어레이가 상기 VMM 연산을 수행할 수 있다.
상기 하나 이상의 크로스바 어레이 각각은, 복수의 로우 라인들과, 상기 복수의 로우 라인들과 교차하는 복수의 칼럼 라인들과, 상기 복수의 로우 라인들 및 상기 복수의 칼럼 라인들의 교차점들에 배치되고, 커널(kernel)에 포함되는 웨이트들을 저장하는 복수의 메모리 셀들을 포함할 수 있다.
상기 입력 회로는, 상기 입력 액티베이션을 포함하는 입력 피처맵(input feature map)을 저장하는 IFM 버퍼(IFM(input feature map) buffer)와, 상기 복수의 처리 회로를 제어하는 제어 회로와, 상기 웨이트를 제어하는 웨이트 RW 회로(weight RW circuit)를 포함할 수 있다.
일 실시예에 따른 뉴럴 네트워크 장치의 동작 방법은, 제1 입력 액티베이션을 제1 처리 회로 및 제2 처리 회로에 입력하는 단계와, 상기 제1 입력 액티베이션에 대한 상기 제1 처리 회로의 제1 부분 합(partial-sum)을 레지스터에 저장하는 단계와, 제2 입력 액티베이션을 상기 제1 처리 회로 및 상기 제2 처리 회로에 입력하는 단계와, 상기 제2 입력 액티베이션에 대한 상기 제2 처리 회로의 제2 부분 합과 상기 레지스터에서 출력되는 상기 제1 부분 합을 가산기에 입력하는 단계를 포함한다.
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은, 입력 액티베이션(input activation) 및 웨이트(weight)에 대한 VMM(Vector-by-Matrix Multiplication) 연산을 수행할 수 있다.
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은, 상기 웨이트를 읽고 쓰는(read-write) RW(read-write) 회로와, 입력 액티베이션을 아날로그 신호로 디코딩하는 디코더와, 출력 액티베이션을 디지털 신호로 변환하는 ADC(analog-to-digital converter)와, VMM 연산을 수행하는 하나 이상의 크로스바 어레이들을 포함하고, 상기 하나 이상의 크로스바 어레이들은, 상기 RW 회로, 상기 디코더 및 상기 ADC를 공유할 수 있다.
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은, 상기 하나 이상의 크로스바 어레이 중 선택된 하나의 크로스바 어레이가 상기 VMM 연산을 수행할 수 있다.
상기 하나 이상의 크로스바 어레이 각각은, 복수의 로우 라인들;
상기 복수의 로우 라인들과 교차하는 복수의 칼럼 라인들과, 상기 복수의 로우 라인들 및 상기 복수의 칼럼 라인들의 교차점들에 배치되고, 커널(kernel)에 포함되는 웨이트들을 저장하는 복수의 메모리 셀들을 포함할 수 있다.
상기 방법은, 상기 가산기의 출력을 후처리를 수행하는 포스트 프로세싱 회로(post processing circuit)에 입력하는 단계를 더 포함할 수 있다.
상기 방법은, 상기 가산기의 출력을 지연시켜 상기 포스트 프로세싱 회로에 입력하는 지연 회로에 입력하는 단계를 더 포함할 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 인 메모리 컴퓨팅(In-memory computing) 회로를 나타내는 도면이다.
도 4는 일 실시예에 따른 뉴럴 네트워크 장치를 나타내는 도면이다.
도 5는 도 4에 도시된 처리 회로를 나타내는 도면이다.
도 6은 도 5에 도시된 뉴럴 네트워크 장치의 프로세싱 엘리먼트를 나타내는 도면이다.
도 7은 도 6에 도시된 프로세싱 엘리먼트의 동작의 일 예를 설명하기 위한 도면이다.
도 8은 도 6의 도시된 프로세싱 엘리먼트의 동작을 다른 예를 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 뉴럴 네트워크 장치를 나타내는 도면이다.
도 10은 일 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
도 11은 일 실시예에 따른 뉴럴 네트워크 장치의 동작 방법을 나타내는 흐름도이다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 인 메모리 컴퓨팅(In-memory computing) 회로를 나타내는 도면이다.
도 4는 일 실시예에 따른 뉴럴 네트워크 장치를 나타내는 도면이다.
도 5는 도 4에 도시된 처리 회로를 나타내는 도면이다.
도 6은 도 5에 도시된 뉴럴 네트워크 장치의 프로세싱 엘리먼트를 나타내는 도면이다.
도 7은 도 6에 도시된 프로세싱 엘리먼트의 동작의 일 예를 설명하기 위한 도면이다.
도 8은 도 6의 도시된 프로세싱 엘리먼트의 동작을 다른 예를 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 뉴럴 네트워크 장치를 나타내는 도면이다.
도 10은 일 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
도 11은 일 실시예에 따른 뉴럴 네트워크 장치의 동작 방법을 나타내는 흐름도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
뉴럴 네트워크(1)는 노드들과 에지들을 이용하여 수학적 모델로 표현될 수 있다. 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 1의 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크 중 일부의 레이어들에 해당될 수 있다. 따라서, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크의 컨볼루션 레이어, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등에 해당될 수 있다. 다만, 이하에서는 편의상, 뉴럴 네트워크(1)가 컨볼루션 뉴럴 네트워크의 컨볼루션 레이어에 해당되는 것으로 가정하여 설명한다.
컨볼루션 레이어에서, 제1 피처 맵(feature map 1, FM1)은 입력 피처 맵에 해당될 수 있고, 제2 피처 맵(FM2)은 출력 피처 맵에 해당될 수 있다. 피처 맵은 입력 데이터의 다양한 특징이 표현된 데이터 세트를 의미할 수 있다. 피처 맵들(FM1, FM2)은 2차원 이상의 고차원 매트릭스일 수 있고, 각각의 액티베이션(activation) 파라미터들을 갖는다. 피처 맵들(FM1, FM2)이 예를 들어 3차원 피처 맵들에 해당되는 경우, 피처 맵들(FM1, FM2)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함) 및 깊이(C)를 가진다. 이때, 깊이(C)는 채널들의 개수에 대응될 수 있다.
컨볼루션 레이어에서, 제1 피처 맵(FM1) 및 웨이트 맵(WM)에 대한 컨볼루션 연산이 수행될 수 있고, 그 결과 제2 피처 맵(FM2)이 생성될 수 있다. 웨이트 맵(WM)은 제1 피처 맵(FM1)을 필터링할 수 있으며, 웨이트 필터 또는 웨이트 커널(kernel)로 지칭된다. 일 예에서, 웨이트 맵(WM)의 깊이, 즉 채널 개수는 제1 피처 맵(FM1)의 깊이, 즉 채널 개수와 동일하다. 웨이트 맵(WM)은 제1 피처 맵(FM1)을 슬라이딩 윈도로 하여 횡단하는 방식으로 시프트된다. 각 시프트 동안, 웨이트 맵(WM)에 포함되는 웨이트들 각각이 제1 피처 맵(FM1)과 중첩된 영역에서의 모든 피처 값과 곱해지고 더해질 수 있다. 제1 피처 맵(FM1)과 웨이트 맵(WM)이 컨볼루션됨에 따라, 제2 피처 맵(FM2)의 하나의 채널이 생성될 수 있다.
도 1에는 하나의 웨이트 맵(WM)이 표시되었으나, 실질적으로는 복수의 웨이트 맵들이 제1 피처 맵(FM1)과 컨볼루션 되어, 제2 피처 맵(FM2)의 복수의 채널들이 생성될 수 있다. 한편, 컨벌루션 레이어의 제2 피처 맵(FM2)은 다음 레이어의 입력 피처 맵이 될 수 있다. 예를 들어, 제2 피처 맵(FM2)는 풀링(pooling) 레이어의 입력 피처 맵이 될 수 있다. 다만, 이에 제한되는 것은 아니다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
뉴럴 네트워크(2)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 연산 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다.
뉴럴 네트워크(2)는 앞서 설명된 바와 같이, 2개 이상의 히든 레이어들을 포함하는 DNN 또는 n-계층 뉴럴 네트워크일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 뉴럴 네트워크(2)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. 뉴럴 네트워크(2)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(2)는 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(2)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)는 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, 뉴럴 네트워크(2)는 도 2에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(2)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)에 포함된 레이어들 각각은 다양한 개수의 채널들(노드들)을 포함할 수 있다.
뉴럴 네트워크(2)의 레이어들 각각에 포함된 채널들은 서로 연결되어 데이터를 처리할 수 있다. 예를 들어, 하나의 채널은 다른 채널들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 채널들로 출력할 수 있다.
채널들 각각의 입력 및 출력 각각은 입력 액티베이션 및 출력 액티베이션이라고 지칭될 수 있다. 즉, 액티베이션은 한 채널의 출력임과 동시에, 다음 레이어에 포함된 채널들의 입력에 해당되는 파라미터일 수 있다. 한편, 채널들 각각은 이전 레이어에 포함된 채널들로부터 수신된 액티베이션들 및 웨이트들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 채널에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 채널들 간의 연결관계에 할당되는 값일 수 있다.
채널들 각각은 입력을 수신하여 출력 액티베이션을 출력하는 연산 유닛(computational unit) 또는 프로세싱 엘리먼트(processing element)에 의해 처리될 수 있고, 채널들 각각의 입력-출력은 매핑될 수 있다. 예를 들어, σ는 액티베이션 함수(activation function)이고, 는 (i-1) 번째 레이어에 포함된 k 번째 채널로부터 i 번째 레이어에 포함된 j번째 채널로의 웨이트며, 는 i 번째 레이어에 포함된 j 번째 채널의 바이어스(bias)이고, 는 i 번째 레이어의 j 번째 채널의 액티베이션이라고 할 때, 액티베이션 는 다음과 같은 수학식 1을 이용하여 계산될 수 있다.
도 2에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 채널(CH 1)의 액티베이션은 로 표현될 수 있다. 또한, 은 수학식 1에 따라 의 값을 가질 수 있다. 액티베이션 함수 σ는 Rectified Linear Unit (ReLU)일 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 액티베이션 함수 σ는 시그모이드(Sigmoid), 하이퍼볼릭 탄젠트(tanh), 맥스아웃(Maxout) 등일 수도 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(2)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 연산 과정을 거친다. 이와 같은 연산 과정에서 수많은 MAC(Multiply-accumulate) 연산들이 수행되며, MAC 연산의 피연산자인 액티베이션 및 웨이트를 적절한 시점에 로드(load)하기 위한 수많은 메모리 접근 동작들이 함께 수행되어야 한다.
한편, 일반적인 디지털 컴퓨터는 연산부와 메모리가 분리되고, 분리된 두 블록들 간의 데이터 전달을 위한 공통의 데이터 버스를 포함하는 폰 노이만(Von Neumann) 구조를 이용한다. 따라서, 데이터의 이동과 연산이 계속해서 반복되는 뉴럴 네트워크(2)를 실시하는 과정에서 데이터 전달을 위해 많은 시간이 소요되고, 과도한 전력이 소모될 수 있다. 이러한 문제를 극복하기 위해, MAC 연산을 수행하기 위한 메모리와 연산부를 하나로 통합시키는 아키텍쳐로서, 인 메모리 컴퓨팅(In-memory Computing) 회로가 제안되었다. 이하 도 3을 참조하여 인 메모리 컴퓨팅 회로에 대해 보다 상세히 설명한다.
도 3은 일 실시예에 따른 인 메모리 컴퓨팅 회로를 나타내는 도면이다.
인 메모리 컴퓨팅 회로(3)는 아날로그 크로스바 어레이(Analog crossbar array)(30) 및 ADC(Analog to Digital Converter)(40)를 포함할 수 있다. 다만, 도 3에 도시된 인 메모리 컴퓨팅 회로(3)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 인 메모리 컴퓨팅 회로(3)에는 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
아날로그 크로스바 어레이(30)는 복수의 로우 라인들(310), 복수의 칼럼 라인들(320) 및 복수의 메모리 셀(330)들을 포함할 수 있다. 복수의 로우 라인들(310)은 입력 데이터를 수신하기 위해 이용될 수 있다. 예를 들어, 복수의 로우 라인들(310)이 N개(N은 임의의 자연수)의 로우 라인들인 경우, N개의 로우 라인들에는 입력 액티베이션들에 대응되는 전압들 V1, V2, …, VN이 인가될 수 있다. 복수의 칼럼 라인들(320)은 복수의 로우 라인들(310)과 교차할 수 있다. 예를 들어, 복수의 칼럼 라인들(320)이 M개(M은 임의의 자연수)의 칼럼 라인들인 경우, 복수의 칼럼 라인들(320)과 복수의 로우 라인들(310)은 N x M 개의 교차점들에서 교차할 수 있다.
한편, 복수의 로우 라인들(310) 및 복수의 칼럼 라인들(320)의 교차점들에는 복수의 메모리 셀(330)들이 배치될 수 있다. 복수의 메모리 셀(330)들 각각은 웨이트들을 저장하기 위해 ReRAM(Resistive RAM), MRAM(Magnetic RAM), eFlash 등의 비휘발성 메모리로 구현될 수 있으나, 이에 반드시 제한되는 것은 아니다. 복수의 메모리 셀(330)들 각각은 SRAM(Static Random Access Memory)와 같은 휘발성 메모리일 수도 있다.
도 3에 도시된 예시에 있어서, 복수의 메모리 셀(330)들은 웨이트들에 대응되는 컨턱턴스(Conductance)들 G11, …, GNM을 가지는 바, 복수의 로우 라인들(310) 각각에 입력 액티베이션에 대응되는 전압이 인가되면, 옴(Ohm)의 법칙에 따라 I = V x G의 크기를 갖는 전류가 각 메모리 셀(330)을 통해 출력될 수 있다. 하나의 칼럼 라인을 따라 배치되는 메모리 셀들로부터 출력된 전류들은 서로 합쳐지므로, 복수의 칼럼 라인들(320)을 따라 전류 합 I1, ..., IM이 출력될 수 있다. 전류 합 I1, ..., IM은 아날로그 방식으로 수행된 MAC 연산의 결과에 대응될 수 있다.
ADC(40)는 아날로그 크로스바 어레이(30)로부터 출력된 아날로그 MAC 연산의 결과(즉, 전류 합 I1, ..., IM)를 디지털 신호로 변환할 수 있다. 디지털 신호로 변환된 MAC 연산의 결과는 ADC(40)로부터 출력되어 이후의 뉴럴 네트워크 연산 과정에 이용될 수 있다.
한편, 도 3에 도시된 바와 같은, 인 메모리 컴퓨팅 회로(3)는 디지털 컴퓨터에 비해 코어 연산부의 복잡도가 낮고, 전력 소모가 적으며, 회로의 크기도 작다는 장점들을 갖는다. 다만, 뉴럴 네트워크 모델의 수천, 수만 개의 뉴런들이 연결된 시냅스 웨이트를 인 메모리 컴퓨팅 회로(3)에 매핑하는 과정에서 물리적 크기에 대한 제약이 발생될 수 있다. 본 개시에 따르면, 물리적 크기에 대한 제약을 만족하면서도 다양한 장점들을 갖는 인 메모리 컴퓨팅 회로(3)를 활용하여 저전력으로 뉴럴 네트워크를 운용하는 뉴럴 네트워크 장치가 제공될 수 있다. 이하 도면들을 참조하여 본 개시에 따른 뉴럴 네트워크 장치의 효율적인 구조 및 운용 방법에 대해 상세히 설명한다.
도 4는 일 실시예에 따른 뉴럴 네트워크 장치를 나타내는 도면이다.
뉴럴 네트워크 장치(400)는 뉴럴 네트워크 연산을 수행할 수 있다. 뉴럴 네트워크 장치(400)는 하나 이상의 프로세싱 엘리먼트(401)을 포함할 수 있다. 뉴럴 네트워크 장치(400)는 각각의 프로세싱 엘리먼트(401)에 데이터를 전송하는 멀티-캐스팅 IFM 버스(multicasting IFM(input feature map) bus)와 각각의 프로세싱 엘리먼트(401)의 출력을 수신하여 후처리를 수행하는 포스트 프로세싱 회로(post processing circuit)을 더 포함할 수 있다.
프로세싱 엘리먼트(401)은 입력 회로(input circuit)(410), 처리 회로(processing circuit)(430), 레지스터(register)(450) 및 가산기(adder)(470)을 포함할 수 있다. 프로세싱 엘리먼트(401)는 하나의 입력 회로(410), 하나의 입력 회로(410)에 연결된 복수의 처리 회로(430) 및 복수의 처리 회로(430)와 연결된 레지스터(450)와 가산기(470)를 포함할 수 있다. 즉, 하나의 프로세싱 엘리먼트(401)에 포함된 복수의 처리 회로(430)는 하나의 입력 회로(410)를 공유할 수 있다.
도 4에서는 프로세싱 엘리먼트(401)가 여섯 개의 처리 회로(430)를 포함하는 것으로 도시했지만, 이에 한정되지 않으며 프로세싱 엘리먼트(401)는 수행하고자 하는 뉴럴 네트워크 연산에 따라 적절한 개수의 처리 회로(430)를 포함할 수 있다.
입력 회로(410)는 동일한 입력 액티베이션(input activation)을 복수의 처리 회로(430)에 입력할 수 있다. 입력 회로(430)는 매 사이클 마다 입력 피처 맵(input feature map)에 포함되는 액티베이션을 연산될 순서대로 복수의 처리 회로(430)에 입력할 수 있다.
처리 회로(430)는 하나 이상의 크로스바 어레이를 포함할 수 있다. 처리 회로(430)는 크로스바 어레이를 통해 입력 액티베이션 및 웨이트에 대한VMM(Vector-by-Matrix Multiplication) 연산을 수행할 수 있다.
처리 회로(430)는 가산기(470)로 부분 합(partial-sum)을 출력할 수 있다. 가산기(470)는 레지스터(450)의 출력과 처리 회로(430)의 출력을 더하여 다음 레지스터(450)에 저장할 수 있다. 매 사이클 마다 순차적으로 복수의 처리 회로(430)의 출력이 더해져 다음 레지스터(450)에 저장될 수 있고, 최종적으로 모든 처리 회로(430)의 출력이 더해져 포스트 프로세싱 회로(490)로 전달될 수 있다. 레지스터(450) 및 가산기(470)가 순서대로 연결된 회로는 가산 회로라고 지칭될 수 있다.
처리 회로(430) 중 일부만 활성화되고, 나머지 처리 회로(430)는 비활성화될 수 있다. 예를 들어, 처리 회로(430) 중 세 개만 활성화되어 연산을 수행하고, 나머지 세 개의 처리 회로(430)는 비활성화될 수 있다. 비활성화 된 처리 회로(430)는 출력이 0을 인식되어 바이패스(bypass)와 같은 효과를 가질 수 있다. 이 경우, 활성화된 처리 회로(430)의 출력들만 가산될 수 있다.
뉴럴 네트워크 장치(400)는 복수의 처리 회로(410)가 하나의 입력 회로(410)를 공유함으로써 장치 내 소자들의 공간적 효율성을 증대할 수 있다. 또한, 처리 회로(430)의 출력은 이웃하는 처리 회로(430)의 출력과 순차적으로 더해지므로, 뉴럴 네트워크 장치(400)의 경로 복잡성(routing complexity)이 감소할 수 있다.
도 5는 도 4에 도시된 처리 회로를 나타내는 도면이다.
처리 회로(430)는 RW 회로(RW(read-write) circuit)(510), 디코더(decoder)(530), 하나 이상의 크로스바 어레이(XBAR)(550) 및 ADC(analog-to-digital converter)(570)를 포함할 수 있다. 하나 이상의 크로스바 어레이(550)는 RW 회로(510), 디코더(530) 및 ADC(570)을 공유할 수 있다.
처리 회로(430)는 하나 이상의 크로스바 어레이(550) 중 선택된 하나의 크로스바 어레이(550)를 통해 MAC 연산을 수행할 수 있다. 특정 사이클에 연산을 수행할 하나 이상의 크로스바 어레이(550) 중 하나의 크로스바 어레이(550)가 활성화될 수 있다.
RW 회로(510)는 처리 회로(430)에 포함된 크로스바 어레이(550)의 웨이트 값을 읽고 쓸(read-wirte) 수 있고, 디코더(530)는 입력 액티베이션의 입출력을 제어하고, 입력 액티베이션을 아날로그 신호로 디코딩할 수 있고, ADC(570)는 출력 액티베이션을 디지털 신호로 변환할 수 있다.
도 6은 도 5에 도시된 뉴럴 네트워크 장치의 프로세싱 엘리먼트를 나타내는 도면이다.
프로세싱 엘리먼트(600)은 입력 회로(610), 제1 내지 제3 처리 회로(630, 631, 632), 제1 및 제2 레지스터(650, 651), 및 제1 및 제2 가산기(670, 671)을 포함할 수 있다. 프로세싱 엘리먼트(600)은 도 4에 도시된 프로세싱 엘리먼트(401)에 대응될 수 있고, 입력 회로(610), 제1 내지 제2 처리 회로(630, 631, 632), 제1 및 제2 레지스터(650, 651) 및 제1 및 제2 가산기(670, 671) 역시 각각 도 4에 도시된 입력 회로(410), 처리 회로(430), 레지스터(450) 및 가산기(470)에 대응될 수 있다.
도 6에는 프로세싱 엘리먼트(600)가 세 개의 처리 회로(630, 631, 632)를 포함하는 것으로 도시했지만 이에 한정되지 않는다. 뉴럴 네트워크 연산에 이용되는 커널(kernel)의 크기에 따라 처리 회로(630, 631, 632)의 개수는 달라질 수 있다. 예를 들어, 도 6에 도시된 프로세싱 엘리먼트(600)는 너비(width) 또는 높이(height)가 3인 커널에 대응하는 연산을 수행할 수 있고, 각각의 출력은 1 x 3 또는 3 x 1 커널에 대한 연산 결과일 수 있다.
입력 회로(610)는 IFM 버퍼(IFM(input feature map) buffer)(611) 제어 회로(control circuit)(613) 및 웨이트 RW 회로(weight RW(read-write) circuit)(615)를 포함할 수 있다.
IFM 버퍼(611)은 입력 액티베이션을 포함하는 입력 피처 맵(feature map)을 버퍼링(buffering)할 수 있고, 제어 회로(613)은 처리 회로(430)를 제어할 수 있고, 웨이트 RW 회로(weight RW(read-write) circuit) 처리 회로(430)에 포함되는 크로스바 어레이(XBAR)의 웨이트 값을 읽고 쓸 수 있다.
제1 처리 회로(630), 제2 처리 회로(631) 및 제3 처리 회로(632)는 각각 제1 레지스터(650), 제1 가산기(670) 및 제2 가산기(671)에 연산 결과를 출력할 수 있다. 제1 가산기(670)는 제1 레지스터(650) 및 제2 처리 회로(631)의 출력을 합하여 제2 레지스터(651)로 출력할 수 있다. 제2 가산기(671)는 제2 레지스터(651) 및 제3 처리 회로(632)을 합하여 출력할 수 있다. 경우에 따라, 제1 내지 제3 처리 회로(630, 631, 632) 중 일부는 비활성화 되어 출력이 0으로 인식될 수 있다.
도 7은 도 6에 도시된 프로세싱 엘리먼트의 동작의 일 예를 설명하기 위한 도면이다.
도 7을 참조하여, 도 7에 도시된 입력 피처맵(IFM) 및 웨이트(weight)에 대해 프로세싱 엘리먼트(600)의 뉴럴 네트워크 연산을 설명하도록 한다. 설명의 편의를 위해 도 7에서는, 입력 피처맵(IFM)을 2차원 행렬로 도시했지만, 입력 피처맵(IFM)은 크로스 바 어레이(XBAR)의 로우(row)에 해당하는 크기의 채널을 가지는 것으로 이해되어야 한다. 즉, 프로세싱 엘리먼트(600)는 다수의 채널에 대한 MAC 연산을 수행할 수 있다.
제1 내지 제3 처리 회로(630, 631, 633)은 입력 액티베이션에 각각 웨이트 W00, W01, W02에 대한 MAC 연산을 수행할 수 있다.
첫번째 사이클(t=0)에서, 제1 내지 제3 처리 회로(630, 631, 633)에 액티베이션 A0가 입력될 수 있다. 제1 내지 제3 처리 회로(630, 631, 633)는 MAC 연산을 수행하여 각각 액티베이션 A0W00, A0W01 및 A0W02를 출력할 수 있다. 제1 레지스터(650)는 제1 처리 회로(630)의 액티베이션 A0W00을 저장할 수 있다.
두번째 사이클(t=1)에서, 제1 내지 제3 처리 회로(630, 631, 633)에 액티베이션 A1가 입력될 수 있다. 제1 내지 제3 처리 회로(630, 631, 633)는 MAC 연산을 수행하여 각각 액티베이션 A1W00, A1W01 및 A1W02를 출력할 수 있다. 제1 레지스터(650)는 첫번째 사이클에서 저장한 액티베이션 A0W00을 출력할 수 있다. 제1 가산기(670)는 제1 레지스터(650)의 출력 A0W00과 제2 처리 회로(631)의 출력 A1W01를 합하여 제2 레지스터(651)로 출력할 수 있다. 제2 레지스터(651)는 액티베이션 A0W00 + A1W01을 저장할 수 있다.
세번째 사이클(t=2)에서, 제1 내지 제3 처리 회로(630, 631, 633)에 액티베이션 A2가 입력될 수 있다. 제1 내지 제3 처리 회로(630, 631, 633)는 MAC 연산을 수행하여 각각 액티베이션 A2W00, A2W01 및 A2W02를 출력할 수 있다. 제2 레지스터(651)는 두번째 사이클에서 저장한 액티베이션 A0W00 + A1W01을 출력할 수 있다. 제2 가산기(671)는 제2 레지스터(650)의 출력 A1W01과 제3 처리 회로(631)의 출력 A2W02를 합하여 최종적으로 액티베이션 A0W00 + A1W01 + A2W02를 출력할 수 있다.
상술한 첫번째 내지 세번째 사이클이 동일하게 반복되면서, 제1 내지 제3 처리 회로(630, 631, 633)에 액티베이션 A3가 입력되는 네번째 사이클(t=3)에서는 최종적으로 액티베이션 A1W00 + A2W01 + A3W02가 출력될 수 있다.
도 8은 도 6의 도시된 프로세싱 엘리먼트의 동작을 다른 예를 설명하기 위한 도면이다.
프로세싱 엘리먼트(600)는 LSTM(long short-term memory)의 연산을 수행할 수 있다. 예를 들어, 프로세싱 엘리먼트(600)는 수학식 2와 같이 표현된 연산을 수행할 수 있다.
입력 회로(610)은 제1 처리 회로(630) 및 제2 처리 회로(631)에 포함된 크로스바 어레이 중 하나에 각각 웨이트 Wxh 및 Whh를 저장할 수 있다. 입력 회로(610)는 1로만 구성된 입력 벡터에 대해 각 컬럼(column)의 바이어스(bias)가 계산되어 출력되도록 정의된 웨이트 Wb를 제3 처리 회로(632)에 포함된 크로스바 어레이 중 하나에 저장할 수 있다.
프로세싱 엘리먼트(600)는 제1 내지 제3 처리 회로(630, 631, 632) 각각에서 웨이트 Wxh 및 Whh 및 Wb가 저장된 크로스바 어레이를 통해 수학식 2의 f t , i t , o t 및 g t 를 계산하는 연산을 수행할 수 있다. 예를 들어, 프로세싱 엘리먼트(600)는 처리 회로(630, 631, 632)에 포함된 네 개의 크로스바 어레이에 각각 f t , i t , o t 및 g t 를 계산하기 위한 웨이트를 저장하여 순차적으로 크로스바 어레이를 선택하여 연산을 수행할 수 있다.
도 9는 일 실시예에 따른 뉴럴 네트워크 장치를 나타내는 도면이다.
뉴럴 네트워크 장치(900)는 입력 회로(910), 제1 내지 제4 처리 회로 그룹(931, 932, 933, 934), 지연 회로(950) 및 포스트 프로세싱 회로(970)를 포함할 수 있다. 입력 회로(910) 및 포스트 프로세싱 회로(970)는 도 4에 도시된 입력 회로(410) 및 포스트 프로세싱 회로(490)에 대응될 수 있고, 제1 내지 제4 처리 회로 그룹(931, 932, 933, 934)에 포함된 처리 회로, 레지스터 및 가산기는 각각 도 4에 도시된 처리 회로(430), 레지스터(450) 및 가산기(470)에 대응될 수 있다.
지연 회로(950)는 프로세싱 엘리먼트의 출력을 지연시켜 포스트 프로세싱 회로(970)에 입력할 수 있다. 지연 회로(950)는 각각의 처리 회로 그룹(931, 932, 933, 934)의 출력을 특정 사이클만큼 지연시켜 포스트 프로세싱 회로로 출력함으로써, 뉴럴 네트워크 장치(900)의 연산 다양성 및 효율성을 향상시킬 수 있다. 예를 들어, 뉴럴 네트워크 장치(900)가 제1 처리 회로 그룹(931) 및 제4 처리 회로 그룹(934)을 통해 3 x 3 컨벌루션 연산을 수행하는 경우(즉, 제2 처리 회로 그룹(932) 및 제3 처리 회로 그룹(933)은 비활성화된 경우), 제1 및 처리 회로 그룹(931)은 여섯 사이클의 지연이 발생하고, 제4 처리 회로 그룹(934)은 세 사이클의 지연이 발생하는데, 지연 회로(950)는 제1 처리 회로 그룹(931) 및 제4 처리 회로 그룹(934)의 연산 결과를 동기화하여 포스트 프로세싱 회로(970)에 전송할 수 있다. 지연 회로(950)는 제2 처리 회로 그룹(932) 및 제3 처리 회로 그룹(933)이 선택된 경우에도 마찬가지 역할을 수행할 수 있다.
도 10은 일 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
전자 시스템(1000)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나, 전자 시스템(1000)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(1000)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(1000)은 프로세서(1010), RAM(1020), 뉴럴 네트워크 장치(1030), 메모리(1040), 센서 모듈(1050) 및 통신 모듈(1060)을 포함할 수 있다. 전자 시스템(1000)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(1000)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다.
프로세서(1010)는 전자 시스템(1000)의 전반적인 동작을 제어한다. 프로세서(1010)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(1010)는 메모리(1040)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일부 실시예에 있어서, 프로세서(1010)는 메모리(1040)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1030)의 기능을 제어할 수 있다. 프로세서(1010)는 CPU(Central Processing Unit), GPU(Graphics Processing Unit), AP(Application Processor) 등으로 구현될 수 있다.
RAM(1020)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(1040)에 저장된 프로그램들 및/또는 데이터는 프로세서(1010)의 제어 또는 부팅 코드에 따라 RAM(1020)에 일시적으로 저장될 수 있다. RAM(1020)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(1030)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 CNN, RNN, FNN, Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(1030)는 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 장치로서, 앞서 도 4 내지 도 7을 참조하여 설명한 뉴럴 네트워크 장치에 해당할 수 있다.
뉴럴 네트워크 장치(1030)는 쉬프트 레지스터 회로를 이용하여 복수의 크로스바 어레이들이 동일한 입력 데이터를 공유 및 처리하도록 제어하고, 복수의 크로스바 어레이들로부터 출력되는 연산 결과들 중 적어도 일부를 선별할 수 있다. 또한, 뉴럴 네트워크 장치(1030)는 선별된 연산 결과들을 기 설정된 개수의 사이클 단위로 누적하여 더함으로써, 최종 출력을 획득할 수 있다. 이에 따라, 입력 재사용이 증가되고, 메모리 접근 횟수가 감소되는바, 뉴럴 네트워크 장치(1030)를 구동하기 위한 소모 전력이 감소될 수 있다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(1030)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(1000)이 탑재된 전자 시스템의 종류 또는 기능에 따라 뉴럴 네트워크 장치(1030)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(1040)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(1040)는 뉴럴 네트워크 장치(1030)의 연산 수행 과정에서 생성되는 중간 결과들을 저장할 수 있다.
메모리(1040)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1040)는 휘발성 메모리 또는 비휘발성 메모리 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(1040)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1050)은 전자 시스템(1000)이 탑재되는 전자 시스템 주변의 정보를 수집할 수 있다. 센서 모듈(1050)은 전자 시스템의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1050)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1050)은 변환된 데이터를 뉴럴 네트워크 장치(1030)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(1050)은 이미지 센서를 포함할 수 있으며, 전자 시스템의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(1030)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1050)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(1030)에 제공할 수 있다.
통신 모듈(1060)은 외부 디바이스와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1060)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
도 11은 일 실시예에 따른 뉴럴 네트워크 장치의 동작 방법을 나타내는 흐름도이다.
뉴럴 네트워크 장치는 제1 입력 액티베이션을 제1 처리 회로 및 제2 처리회로에 입력할 수 있다(1110). 제1 처리 회로 및 제2 처리 회로 각각은 입력 액티베이션(input activation) 및 웨이트(weight)에 대한 VMM(Vector-by-Matrix Multiplication) 연산을 수행할 수 있다.
제1 처리 회로 및 제2 처리 회로 각각은, 크로스바 어레이(550)의 웨이트 값을 읽고 쓰는(read-wirte) RW(read-write) 회로, 입력 액티베이션을 아날로그 신호로 디코딩하는 디코더, 출력 액티베이션을 디지털 신호로 변환하는 ADC(analog-to-digital converter), MAC 연산을 수행하는 하나 이상의 크로스바 어레이들을 포함할 수 있고, 하나 이상의 크로스바 어레이들은 상기 RW 회로, 상기 디코더 및 상기 ADC를 공유할 수 있다. 제1 처리 회로 및 제2 처리 회로 각각은, 상기 하나 이상의 크로스바 어레이 중 선택된 하나의 크로스바 어레이가 상기 MAC 연산을 수행할 수 있다.
크로스바 어레이 각각은, 복수의 로우 라인들, 상기 복수의 로우 라인들과 교차하는 복수의 칼럼 라인들, 상기 복수의 로우 라인들 및 상기 복수의 칼럼 라인들의 교차점들에 배치되고, 커널(kernel)에 포함되는 웨이트들을 저장하는 복수의 메모리 셀들을 포함할 수 있다.
뉴럴 네트워크 장치는 제1 입력 액티베이션에 대응하여 제1 처리 회로에서 출력되는 제1 부분 합(partial-sum)을 레지스터에 저장할 수 있다(1120). 뉴럴 네트워크 장치는 제2 입력 액티베이션을 제1 처리 회로 및 제2 처리 회로에 입력할 수 있다(1130).
뉴럴 네트워크 장치는 제2 입력 액티베이션에 대응하여 제2 처리 회로에서 출력되는 제2 부분 합과 상기 레지스터에서 출력되는 제1 부분 합을 가산기에 입력할 수 있다(1140). 뉴럴 네트워크 장치는 가산기의 출력을 후처리를 수행하는 포스트 프로세싱 회로에 입력할 수 있다. 뉴럴 네트워크 장치는 가산기의 출력을 지연시켜 포스트 프로세싱 회로에 입력할 수 있다.
뉴럴 네트워크 장치의 동작 방법은 두 개의 처리 회로로 연산을 수행하는 동작 방법으로 한정되는 것이 아니고, 복수 개의 처리 회로에 대해 상술한 방법을 반복 수행하여 뉴럴 네트워크 연산을 수행할 수 있는 것으로 이해되어야 한다. 또한, 도 9에서 생략된 내용이라 하더라도, 도 4 내지 도 9를 참조하여 설명한 뉴럴 네트워크의 동작 역시 뉴럴 네트워크 장치의 동작 방법에 적용되는 것으로 이해되어야 한다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (20)
- 입력 액티베이션(input activation) 및 웨이트(weight)에 대한 VMM(Vector-by-Matrix Multiplication) 연산을 수행하는 제1 처리 회로 및 제2 처리 회로;
상기 제1 처리 회로의 출력을 저장하는 제1 레지스터;
상기 레지스터의 출력 및 상기 제2 처리 회로의 출력을 가산하는 가산기;
상기 가산기의 출력을 저장하는 제2 레지스터; 및
동일한 입력 액티베이션을 상기 제1 처리 회로 및 상기 제2 처리 회로에 입력하고, 상기 제1 처리 회로 및 상기 제2 처리 회로를 제어하는 입력 회로
를 포함하는, 뉴럴 네트워크 장치.
- 제1항에 있어서,
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은,
상기 웨이트를 읽고 쓰는(read-write) RW(read-write) 회로;
입력 액티베이션을 아날로그 신호로 디코딩하는 디코더;
출력 액티베이션을 디지털 신호로 변환하는 ADC(analog-to-digital converter); 및
VMM 연산을 수행하는 하나 이상의 크로스바 어레이를 포함하고,
상기 하나 이상의 크로스바 어레이는, 상기 RW 회로, 상기 디코더 및 상기 ADC를 공유하는, 뉴럴 네트워크 장치.
- 제2항에 있어서,
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은,
상기 하나 이상의 크로스바 어레이 중 선택된 하나의 크로스바 어레이가 상기 VMM 연산을 수행하는, 뉴럴 네트워크 장치.
- 제2항에 있어서,
상기 하나 이상의 크로스바 어레이 각각은,
복수의 로우 라인들;
상기 복수의 로우 라인들과 교차하는 복수의 칼럼 라인들; 및
상기 복수의 로우 라인들 및 상기 복수의 칼럼 라인들의 교차점들에 배치되고, 커널(kernel)에 포함되는 웨이트들을 저장하는 복수의 메모리 셀들을 포함하는, 뉴럴 네트워크 장치.
- 제1항에 있어서,
상기 입력 회로는,
상기 입력 액티베이션을 포함하는 입력 피처맵(input feature map)을 저장하는 IFM 버퍼(IFM(input feature map) buffer);
상기 제1 처리 회로 및 상기 제2 처리 회로를 제어하는 제어 회로; 및
상기 웨이트를 제어하는 웨이트 RW 회로(weight RW circuit);
를 포함하는, 뉴럴 네트워크 장치.
- 웨이트(weight) 및 동일한 입력 액티베이션(input activation)에 대한 VMM(Vector-by-Matrix Multiplication) 연산을 수행하는 복수의 처리 회로;
매 사이클 마다 상기 입력 액티베이션을 상기 복수의 처리 회로에 입력하고, 상기 복수의 처리 회로를 제어하는 입력 회로; 및
상기 복수의 처리 회로의 출력을 순차적으로 가산하는 가산 회로
를 포함하는, 뉴럴 네트워크 장치.
- 제6항에 있어서,
상기 가산 회로는,
상기 복수의 처리 회로 중 제1 처리 회로의 출력을 저장하는 제1 레지스터;
상기 제1 레지스터의 출력 및 상기 복수 처리 회로 중 제2 처리회로의 출력을 가산하는 가산기; 및
상기 가산기의 출력을 저장하는 제2 레지스터
를 포함하는, 뉴럴 네트워크 장치.
- 제6항에 있어서,
상기 가산 회로의 출력에 대한 후처리를 수행하는 포스트 프로세싱 회로(post processing circuit)를 더 포함하는, 뉴럴 네트워크 장치.
- 제8항에 있어서,
상기 가산 회로의 출력을 지연시켜 상기 포스트 프로세싱 회로에 입력하는 지연 회로(delay circuit)를 더 포함하는, 뉴럴 네트워크 장치.
- 제6항에 있어서,
상기 복수의 처리 회로 각각은,
상기 웨이트를 읽고 쓰는(read-write) RW(read-write) 회로;
입력 액티베이션을 아날로그 신호로 디코딩하는 디코더;
출력 액티베이션을 디지털 신호로 변환하는 ADC(analog-to-digital converter); 및
VMM 연산을 수행하는 하나 이상의 크로스바 어레이들을 포함하고,
상기 하나 이상의 크로스바 어레이들은, 상기 RW 회로, 상기 디코더 및 상기 ADC를 공유하는, 뉴럴 네트워크 장치.
- 제10항에 있어서,
상기 복수의 처리 회로 각각은,
상기 하나 이상의 크로스바 어레이 중 선택된 하나의 크로스바 어레이가 상기 VMM 연산을 수행하는, 뉴럴 네트워크 장치.
- 제10항에 있어서,
상기 하나 이상의 크로스바 어레이 각각은,
복수의 로우 라인들;
상기 복수의 로우 라인들과 교차하는 복수의 칼럼 라인들; 및
상기 복수의 로우 라인들 및 상기 복수의 칼럼 라인들의 교차점들에 배치되고, 커널(kernel)에 포함되는 웨이트들을 저장하는 복수의 메모리 셀들을 포함하는, 뉴럴 네트워크 장치.
- 제6항에 있어서,
상기 입력 회로는,
상기 입력 액티베이션을 포함하는 입력 피처맵(input feature map)을 저장하는 IFM 버퍼(IFM(input feature map) buffer);
상기 복수의 처리 회로를 제어하는 제어 회로; 및
상기 웨이트를 제어하는 웨이트 RW 회로(weight RW circuit);
를 포함하는, 뉴럴 네트워크 장치.
- 뉴럴 네트워크 장치의 동작 방법에 있어서,
제1 입력 액티베이션을 제1 처리 회로 및 제2 처리 회로에 입력하는 단계;
상기 제1 입력 액티베이션에 대응하여 상기 제1 처리 회로에서 출력되는 제1 부분 합(partial-sum)을 레지스터에 저장하는 단계;
제2 입력 액티베이션을 상기 제1 처리 회로 및 상기 제2 처리 회로에 입력하는 단계; 및
상기 제2 입력 액티베이션에 대응하여 상기 제2 처리 회로에서 출력되는 제2 부분 합과 상기 레지스터에서 출력되는 상기 제1 부분 합을 가산기에 입력하는 단계
를 포함하는, 방법.
- 제14항에 있어서,
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은,
입력 액티베이션(input activation) 및 웨이트(weight)에 대한 VMM(Vector-by-Matrix Multiplication) 연산을 수행하는, 방법.
- 제14항에 있어서,
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은,
상기 웨이트를 읽고 쓰는(read-write) RW(read-write) 회로;
입력 액티베이션을 아날로그 신호로 디코딩하는 디코더;
출력 액티베이션을 디지털 신호로 변환하는 ADC(analog-to-digital converter); 및
VMM 연산을 수행하는 하나 이상의 크로스바 어레이들을 포함하고,
상기 하나 이상의 크로스바 어레이들은, 상기 RW 회로, 상기 디코더 및 상기 ADC를 공유하는, 방법.
- 제16항에 있어서,
상기 제1 처리 회로 및 상기 제2 처리 회로 각각은,
상기 하나 이상의 크로스바 어레이 중 선택된 하나의 크로스바 어레이가 상기 VMM 연산을 수행하는, 방법.
- 제16항에 있어서,
상기 하나 이상의 크로스바 어레이 각각은,
복수의 로우 라인들;
상기 복수의 로우 라인들과 교차하는 복수의 칼럼 라인들; 및
상기 복수의 로우 라인들 및 상기 복수의 칼럼 라인들의 교차점들에 배치되고, 커널(kernel)에 포함되는 웨이트들을 저장하는 복수의 메모리 셀들을 포함하는, 방법.
- 제14항에 있어서,
상기 가산기의 출력을 후처리를 수행하는 포스트 프로세싱 회로(post processing circuit)에 입력하는 단계
를 더 포함하는, 방법.
- 제19항에 있어서,
상기 가산기의 출력을 지연시켜 상기 포스트 프로세싱 회로에 입력하는 지연 회로에 입력하는 단계
를 더 포함하는, 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210051857A KR20220145143A (ko) | 2021-04-21 | 2021-04-21 | 뉴럴 네트워크 장치 및 그의 동작 방법 |
US17/408,951 US20220343147A1 (en) | 2021-04-21 | 2021-08-23 | Apparatus and method with neural network operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210051857A KR20220145143A (ko) | 2021-04-21 | 2021-04-21 | 뉴럴 네트워크 장치 및 그의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220145143A true KR20220145143A (ko) | 2022-10-28 |
Family
ID=83694359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210051857A KR20220145143A (ko) | 2021-04-21 | 2021-04-21 | 뉴럴 네트워크 장치 및 그의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220343147A1 (ko) |
KR (1) | KR20220145143A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240104361A1 (en) * | 2022-09-19 | 2024-03-28 | Texas Instruments Incorporated | Neural network processor |
-
2021
- 2021-04-21 KR KR1020210051857A patent/KR20220145143A/ko unknown
- 2021-08-23 US US17/408,951 patent/US20220343147A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220343147A1 (en) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220335284A1 (en) | Apparatus and method with neural network | |
JP7304148B2 (ja) | ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置 | |
US20210366542A1 (en) | Apparatus and method with in-memory processing | |
US20210390382A1 (en) | Neural network apparatus performing floating-point operation and operating method of the same | |
US11763153B2 (en) | Method and apparatus with neural network operation | |
CN112825153A (zh) | 神经网络系统中数据处理的方法、神经网络系统 | |
US11868874B2 (en) | Two-dimensional array-based neuromorphic processor and implementing method | |
KR20220010362A (ko) | 뉴럴 네트워크 장치 및 그의 동작 방법 | |
US11756610B2 (en) | Apparatus and method with in-memory delay dependent processing | |
US11853869B2 (en) | Neural network apparatus and method of processing variable-resolution operation by the same | |
KR20220145143A (ko) | 뉴럴 네트워크 장치 및 그의 동작 방법 | |
JP7507549B2 (ja) | ニューロモーフィック装置、及びニューロモーフィック装置でマルチビットニューロモーフィック演算を処理する方法 | |
KR20240014767A (ko) | 웨이트 압축 방법 및 장치 | |
KR20220084845A (ko) | 채널 수에 기초하여 컨볼루션 연산을 수행하는 npu 장치 및 이의 동작 방법 | |
KR20240025827A (ko) | Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법 | |
US20220114427A1 (en) | Neural network apparatus | |
KR20230123309A (ko) | 프루닝 방법 및 장치 | |
CN115204377A (zh) | 具有多位运算的装置和方法 | |
KR20240044918A (ko) | Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법 |