KR20200097396A - 메모리 장치 및 이를 이용한 컴퓨팅 장치 - Google Patents

메모리 장치 및 이를 이용한 컴퓨팅 장치 Download PDF

Info

Publication number
KR20200097396A
KR20200097396A KR1020190014683A KR20190014683A KR20200097396A KR 20200097396 A KR20200097396 A KR 20200097396A KR 1020190014683 A KR1020190014683 A KR 1020190014683A KR 20190014683 A KR20190014683 A KR 20190014683A KR 20200097396 A KR20200097396 A KR 20200097396A
Authority
KR
South Korea
Prior art keywords
data
input
weight
bit
period
Prior art date
Application number
KR1020190014683A
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 KR1020190014683A priority Critical patent/KR20200097396A/ko
Priority to US16/578,507 priority patent/US11307826B2/en
Priority to CN202010043153.XA priority patent/CN111553472A/zh
Priority to JP2020013512A priority patent/JP7482636B2/ja
Priority to US16/943,334 priority patent/US11474785B2/en
Publication of KR20200097396A publication Critical patent/KR20200097396A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel

Abstract

메모리 장치가 제공된다. 상기 메모리 장치는 가중치 데이터가 저장되는 메모리 셀, 메모리 셀에서 가중치 데이터를 리드하는 버퍼 메모리, 입력 데이터를 제공받는 입출력 패드, 및 버퍼 메모리에서 가중치 데이터를 제공받고, 입출력 패드에서 입력 데이터를 제공받아 가중치 데이터와 입력 데이터의 콘볼루션(Convolution) 연산을 수행하는 MAC 연산기를 포함하고, 입력 데이터는 제1 구간동안 MAC 연산기에 제공되고, MAC 연산기는 제1 구간과 오버랩되는 제2 구간동안 가중치 데이터와 입력 데이터의 콘볼루션 연산을 수행한다.

Description

메모리 장치 및 이를 이용한 컴퓨팅 장치{A memory device and a computing device using the same}
본 발명은 메모리 장치 및 이를 이용한 컴퓨팅 장치에 관한 것이다.
뉴럴 네트워크(neural network)의 기본적인 알고리즘은 입력 매트릭스와 콘볼루션 필터의 연산을 통해 출력 매트릭스를 도출하는 것이다. 구체적으로, 입력 매트릭스와 콘볼루션 필터를 콘볼루션 연산을 통해, 출력 매트릭스를 결정할 수 있다.
콘볼루션 연산은 수많은 곱 연산과 합 연산의 조합으로 이루어져 있으며, 최근 뉴럴 네트워크의 폭발적인 성장으로, 고대역/저지연의 뉴럴 네트워크 엔진이 요구된다. 이에 따라, 콘볼루션 필터의 크기가 증가하여, 콘볼루션 필터에 포함된 가중치 데이터의 양이 기하급수적으로 증가하고 있다. 또한, 입력 매트릭스에 포함된 입력 데이터의 양도 마찬가지로 기하급수적으로 증가하여, 출력 매트릭스를 생성하기 위해 매우 많은 양의 곱 연산과 합 연산이 수행될 것이 요구된다.
현재의 시스템에서 증가된 요구사항을 만족시키기 위해서는 많은 시간이 소요되어 그 활용도가 낮다. 따라서, 고대역을 유지하나 저지연을 만족하는 뉴럴 네트워크 엔진의 개발이 필요하다.
본 발명이 해결하고자 하는 기술적 과제는 메모리 장치 내에서, 콘볼루션 연산이 수행되고, 간단하고 효과적인 연산을 수행하는 메모리 장치 및 이를 이용한 컴퓨팅 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 메모리 장치 내에서 콘볼루션 연산이 수행되고, 저지연을 만족하는 메모리 장치 및 이를 이용한 컴퓨팅 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 입력 데이터와 출력 데이터가 동시에 In/Out되는 MAC 연산기를 포함하는 메모리 장치, 및 이를 이용한 컴퓨팅 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치는 가중치 데이터가 저장되는 메모리 셀, 메모리 셀에서 가중치 데이터를 리드하는 버퍼 메모리, 입력 데이터를 제공받는 입출력 패드, 및 버퍼 메모리에서 가중치 데이터를 제공받고, 입출력 패드에서 입력 데이터를 제공받아 가중치 데이터와 입력 데이터의 콘볼루션(Convolution) 연산을 수행하는 MAC 연산기를 포함하고, 입력 데이터는 제1 구간동안 MAC 연산기에 제공되고, MAC 연산기는 제1 구간과 오버랩되는 제2 구간동안 가중치 데이터와 입력 데이터의 콘볼루션 연산을 수행한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치는 제1 및 제2 가중치 비트를 포함하는 가중치 데이터가 저장되는 버퍼 메모리, 제1 및 제2 입력 비트를 포함하는 입력 데이터를 수신하는 입출력 패드, 및 제1 내지 제3 누산기를 포함하고, 가중치 데이터와 입력 데이터를 제공받아 가중치 데이터와 입력 데이터의 콘볼루션(Convolution) 연산을 수행하는 MAC 연산기를 포함하고, MAC 연산기가 가중치 데이터와 입력 데이터의 콘볼루션 연산을 수행하는 것은, 제1 가중치 비트와 제1 입력 비트를 곱 연산하여, 제1 누산기에 제공하고, 제2 가중치 비트와 제1 입력 비트를 곱 연산하여, 제2 누산기에 제공하고, 제1 가중치 비트와 제2 입력 비트를 곱 연산하여, 제2 누산기에 제공하고, 제2 가중치 비트와 제2 입력 비트를 곱 연산하여, 제3 누산기에 제공하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치는 가중치 데이터가 저장되는 메모리 셀, 메모리 셀에서 가중치 데이터를 리드하는 버퍼 메모리, 입력 데이터를 제공받는 입출력 패드, 및 가중치 데이터와 입력 데이터의 콘볼루션(Convolution) 연산을 수행하는 MAC 연산기를 포함하고, 입력 데이터가 입출력 패드에 제공되기 전, 버퍼 메모리는 메모리 셀에서 가중치 데이터를 리드하고, 입력 데이터는 제1 구간동안 입출력 패드로부터 MAC 연산기에 제공되고, 가중치 데이터는 제1 구간과 오버랩되는 제2 구간동안 버퍼 메모리로부터 MAC 연산기에 제공된다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 컴퓨팅 장치는 MAC 연산기를 포함하고, 가중치 데이터가 저장되는 메모리 장치, 및 메모리 장치에 입력 데이터를 제공하는 프로세서를 포함하고, MAC 연산기는 입력 데이터와 가중치 데이터를 제공받아, 입력 데이터와 가중치 데이터의 콘볼루션 연산을 수행하고, 입력 데이터가 MAC 연산기에 제공되는 제1 구간과, 가중치 데이터가 MAC 연산기에 제공되는 제2 구간은 오버랩된다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 콘볼루션 연산을 설명하기 위한 예시적인 도면이다.
도 2는 몇몇 실시예에 따른 컴퓨팅 장치를 설명하기 위한 예시적인 블록도이다.
도 3은 몇몇 실시예에 따른 비휘발성 메모리를 설명하기 위한 예시적인 블록도이다.
도 4는 몇몇 실시예에 따른 컴퓨팅 장치의 동작을 설명하기 위한 예시적인 도면이다.
도 5는 몇몇 실시예에 따른 가중치 데이터가 메모리 셀에서 버퍼 메모리에 제공되는 동작을 설명하기 위한 예시적인 도면이다.
도 6은 몇몇 실시예에 따른 입력 데이터와 가중치 데이터가 MAC 연산기에 제공되는 동작을 설명하기 위한 예시적인 도면이다.
도 7은 몇몇 실시예에 따른 MAC 연산기의 연산 결과가 출력 데이터로 제공되는 동작을 설명하기 위한 예시적인 도면이다.
도 8은 몇몇 실시예에 따른 데이터들이 입/출력되는 타이밍을 설명하기 위한 예시적인 도면이다.
도 9는 몇몇 실시예에 따른 MAC 연산기가 입력 데이터와 가중치 데이터를 수신하는 구간을 설명하기 위한 예시적인 도면이다.
도 10 내지 도 12는 몇몇 실시예에 따른 입력 데이터와 출력 데이터의 곱 연산을 설명하기 위한 예시적인 도면이다.
도 13은 몇몇 실시예에 따른 비휘발성 메모리를 설명하기 위한 예시적인 블록도이다.
도 14는 몇몇 실시예에 따른 데이터들이 입/출력되는 타이밍을 설명하기 위한 예시적인 도면이다.
도 1은 콘볼루션 연산을 설명하기 위한 예시적인 도면이다.
도 1을 참조하면, 출력 매트릭스(3, output matrix)는 입력 매트릭스(1, input matrix)와 콘볼루션 필터(2, convolution filter 또는 커널(kernel))을 콘볼루션 연산(convolution operation)하여 생성될 수 있다. 예를 들어, 입력 매트릭스(1)는 제1 입력 데이터(X0) 내지 제20 입력 데이터(X19)를 포함할 수 있다. 또한, 예를 들어, 콘볼루션 필터(2)는 제1 가중치 데이터(W0) 내지 제4 가중치 데이터(W3)를 포함할 수 있다. 또한, 예를 들어, 출력 매트릭스(3)는 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11)를 포함할 수 있다. 본 발명의 몇몇 실시예들이 이러한 용어에 한정되는 것은 아니며, 본 발명의 기술 분야에서 통상의 지식을 가진 자는 이하에서 설명하고자 하는 바를 명확히 이해할 수 있을 것이다. 또한, 설명의 편의를 위해, 도 1은 입력 매트릭스(1)가 4 × 5의 매트릭스를 구성하고, 콘볼루션 필터(2)가 2 × 2의 매트릭스를 구성하고, 출력 매트릭스(3)가 3 × 4의 매트릭스를 구성하는 것으로 설명하나, 이는 설명의 편의를 위한 것이며, 실시예들이 이에 제한되는 것은 아니다. 입력 매트릭스(1) 및 콘볼루션 필터(2)는 더 많거나 적은 데이터를 포함할 수 있으며, 출력 매트릭스(3)는 입력 매트릭스(1)와 콘볼루션 필터(2)의 구성에 따라 결정될 수 있다.
출력 매트릭스(3)는 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 곱 연산과 합 연산에 의해 결정될 수 있다. 다시 말해서, 콘볼루션 연산은 곱 연산과 합 연산의 조합일 수 있다. 예를 들어, 제1 출력 데이터(S0) 및 제2 출력 데이터(S1)는 아래 수학식 1 및 수학식 2를 통해 결정될 수 있다.
[수학식 1]
S0=X0W0+X1W1+X5W2+X6W3
[수학식 2]
S1=X1W0+X2W1+X6W2+X7W3
수학식 1에 설명된 바와 같이, 제1 출력 데이터(S0)는 제1 입력 데이터(X0)와 제1 가중치 데이터(W0)의 곱, 제2 입력 데이터(X1)와 제2 가중치 데이터(W1)의 곱, 제6 입력 데이터(X5)와 제3 가중치 데이터(W2)의 곱 및 제7 입력 데이터(X6)와 제4 가중치 데이터(W3)의 곱을 모두 합하여 결정될 수 있다. 마찬가지로, 수학식 2에 설명된 바와 같이, 제2 출력 데이터(S1)는 제2 입력 데이터(X1)와 제1 가중치 데이터(W0)의 곱, 제3 입력 데이터(X2)와 제2 가중치 데이터(W1)의 곱, 제7 입력 데이터(X6)와 제3 가중치 데이터(W2)의 곱 및 제8 입력 데이터(X7)와 제4 가중치 데이터(W3)의 곱을 모두 합하여 결정될 수 있다.
이와 유사하게, 제1 입력 데이터(X0) 내지 제20 입력 데이터(X19)와 제1 가중치 데이터(W0) 내지 제4 가중치 데이터(W3)에 대해, 곱 연산 및 합 연산을 수행하여, 제3 출력 데이터(S2) 내지 제12 출력 데이터(S11)를 결정할 수 있다. 이하에서는, 출력 매트릭스(3)를 생성하는 컴퓨팅 장치(1000), 즉 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 콘볼루션 연산을 수행하는 컴퓨팅 장치(1000)에 대해 설명한다.
도 2는 몇몇 실시예에 따른 컴퓨팅 장치를 설명하기 위한 예시적인 블록도이다.
도 2를 참조하면, 몇몇 실시예에 따른 컴퓨팅 장치(1000)는 인터페이스(200), 프로세서(300), 캐시 메모리(400) 및 메모리 장치(100)를 포함할 수있다.
몇몇 실시예에 따른 컴퓨팅 장치(1000)는 데스크탑을 비롯한 개인용 컴퓨터, 서버 컴퓨터, 노트북을 비롯한 휴대용 컴퓨터 및 셀룰러 폰(cellular phone), 스마트 폰(smart phone), 태블릿(tablet), MP3, PMP(Portable Multimedia Player), PDA(Personal Digital Assistant), 디지털 카메라(digital camera), 디지털 캠코더(digital camcorder) 등을 비롯한 휴대용 장치를 포함할 수 있다. 또한, 몇몇 실시예에 따른 컴퓨팅 장치(1000)는 뉴럴 네트워크(neural network) 기반의 처리 장치일 수 있다. 예를 들어, 몇몇 실시예에 따른 컴퓨팅 장치(1000)는 콘볼루션 뉴럴 네트워크(CNN: convolution neural network) 기반의 영상 처리(image processing) 장치, 자동 조향 장치 또는 주행 보조 장치 등에 이용될 수 있다. 뿐만 아니라, 몇몇 실시예에 따른 컴퓨팅 장치(1000)는 디지털 신호 처리(DSP: Digital Signal Processing)를 수행하는데 이용될 수 있다. 다만, 본 발명의 기술적 사상은 컴퓨팅 장치(1000)가 이용되는 용도에 한정되지 않으며, 본 발명의 기술 분야에서 통상의 지식을 가진 자는 필요에 따라 다양한 분야에 본 발명의 몇몇 실시예에 따른 컴퓨팅 장치(1000)를 이용할 수 있을 것이다.
인터페이스(200)는 컴퓨팅 장치(1000)에 데이터를 입력하거나 출력하는데 이용될 수 있다. 예를 들어, 도 1에서 설명한 제1 입력 데이터(X0) 내지 제20 입력 데이터(X19)는 인터페이스(200)를 통해 컴퓨팅 장치(1000)에 제공될 수 있으나, 실시예들이 이에 한정되는 것은 아니다. 예를 들어, 제1 입력 데이터(X0) 내지 제20 입력 데이터(X19)는 컴퓨팅 장치(1000) 내에 포함된 특정 구성요소에 의해 생성될 수도 있다.
프로세서(300)는 컴퓨팅 장치(1000)를 제어하기 위한 프로그램 코드를 실행할 수 있다. 몇몇 실시예에 따른 프로세서(300)는 CPU(Central Processing Unit), GPU(Graphic Processing Unit), AP(Application Processor) 및 MPU(Micro Processor Unit) 등을 포함할 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
캐시 메모리(400)는 데이터에 고속으로 접근(access)할 수 있도록, 미래의 요청에 대비해 데이터를 임시로 저장할 수 있는 메모리일 수 있다. 캐시 메모리(400)에 저장된 데이터는 이전에 수행한 연산의 결과일 수 있다. 캐시 메모리(400)는 정적 램(SRAM: Static Random Access Memory), 빠른 정적 램(Fast-SRAM), 및/또는 동적 램(DRAM: Dynamic RAM) 등으로 구현될 수 있으나, 실시예들이 이에 제한되지는 않는다. 또한, 비록 도 1은 캐시 메모리(400)가 프로세서(300)와 분리된 것으로 도시하나, 실시예들이 이에 제한되지는 않는다. 예를 들어, 캐시 메모리(400)는 프로세서(300) 내부의 TCM(Tightly Coupled Memory)일 수 있다.
메모리 장치(100)는 비휘발성 메모리(10) 및 메모리 컨트롤러(20)를 포함할 수 있다. 메모리 컨트롤러(20)는 프로세서(300)로부터의 요청에 응답하여, 비휘발성 메모리(10)에 저장된 데이터를 리드(read) 또는 이레이즈(erase)하거나, 비휘발성 메모리(10)로 데이터를 라이트(write)할 수 있다. 또한, 몇몇 실시예에 따르면, 메모리 컨트롤러(20)는 MAC 명령(MAC CMD)을 수신하여, 비휘발성 메모리(10)가 콘볼루션 연산을 수행하도록 제어할 수 있다.
비휘발성 메모리(10)는 데이터를 비일시적으로 저장할 수 있다. 예를 들어, 비휘발성 메모리(10)는 제1 가중치 데이터(W0) 내지 제4 가중치 데이터(W3)를 저장할 수 있다. 몇몇 실시예에 따른 비휘발성 메모리(10)는 메모리 컨트롤러(20)의 요청에 따라, 콘볼루션 연산을 수행할 수 있다.
비휘발성 메모리(10)는 플래시 메모리(flash memory)의 싱글 레벨 셀(SLC) 또는 멀티 레벨 셀(MLC: Multi Level Cell)일 수 있으나, 실시예들이 이에 제한되지는 않는다. 예를 들어, 비휘발성 메모리(10)는 PC 카드(PCMCIA: personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS), 임베디드 멀티미디어 카드(eMMC), 낸드 플래시 메모리(NAND Flash Memory), 노어 플래시 메모리(NOR Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND Flash Memory) 등을 포함할 수 있다.
비록 도면에 도시하지는 않았으나, 메모리 컨트롤러(20) 및/또는 비휘발성 메모리(10)는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline Integrated Circuit(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있으나, 실시예들이 이에 제한되는 것은 아니다. 비휘발성 메모리(10)에 대한 구체적인 설명을 위해, 도 3을 참조한다.
도 3은 몇몇 실시예에 따른 비휘발성 메모리를 설명하기 위한 예시적인 블록도이다.
도 3을 참조하면, 비휘발성 메모리(10)는 저장 영역(10_S)과 주변 영역(10_P)을 포함할 수 있다. 몇몇 실시예에 따르면, 저장 영역(10_S)에는 복수의 메모리 셀(11)이 배치될 수 있다. 메모리 셀(11) 각각은 데이터를 저장할 수 있다. 예를 들어, 메모리 셀(11)은 제1 가중치 데이터(W0) 내지 제4 가중치 데이터(W3)를 저장할 수 있다. 설명의 편의를 위해, 메모리 셀(11)이 배치되는 저장 영역(10_S) 이외의 다른 영역을 주변 영역(10_P)으로 정의한다.
몇몇 실시예에 따르면, 비휘발성 메모리(10)의 주변 영역(10_P)에는 버퍼 메모리(12), MAC 연산기(13, MAC operator: Multiply and Accumulate operator), 결과 출력 버퍼(14) 및 입출력 패드(15)가 배치될 수 있다.
버퍼 메모리(12)와 입출력 패드(15)는 각각 MAC 연산기(13)에 데이터를 제공할 수 있다. 예를 들어, 버퍼 메모리(12)는 MAC 연산기(13)에 가중치 데이터(W_Data)를 제공하고, 입출력 패드(15)는 MAC 연산기(13)에 입력 데이터(I_Data)를 제공할 수 있다.
MAC 연산기(13)는 제공받은 가중치 데이터(W_Data)와 입력 데이터(I_Data)를 콘볼루션 연산할 수 있다. MAC 연산기(13)는 가중치 데이터(W_Data)와 입력 데이터(I_Data)의 콘볼루션 연산의 결과를, 결과 출력 버퍼(14)에 제공할 수 있다. 결과 출력 버퍼(14)에 제공되는 데이터를 설명의 편의상 결과 데이터(R_Data)로 정의한다. 몇몇 실시예에서, 결과 데이터(R_Data)는 가중치 데이터(W_Data)와 입력 데이터(I_Data)의 콘볼루션 연산의 중간 결과 데이터일 수 있다. 예를 들어, 결과 데이터(R_Data)는 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11) 각각일 수 있다. 다른 예를 들어, 결과 데이터(R_Data)는 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)의 곱(W0X0) 내지 제4 가중치 데이터(W3)와 제20 입력 데이터(X19)의 곱(W3X19) 각각일 수 있다. 그러나, 실시예들이 이에 제한되지는 않으며, 본 발명의 기술 분야에서 통상의 지식을 가진 자는 가중치 데이터(W_Data)와 입력 데이터(I_Data)의 콘볼루션 연산의 중간 결과를 결과 데이터(R_Data)로 설정할 수 있다.
결과 출력 버퍼(14)는 결과 데이터(R_Data)를 저장할 수 있다. 예를 들어, 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11) 각각은 결과 출력 버퍼(14)에 임시로 저장될 수 있다. 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11)가 결과 출력 버퍼(14)에 모두 저장되면, 결과 출력 버퍼(14)는 입출력 패드(15)에 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11)를 제공할 수 있다.
입출력 패드(15)는 비휘발성 메모리(10) 외부에서 입력 데이터(I_Data)를 수신할 수 있다. 입출력 패드(15)는 수신한 입력 데이터(I_Data)를 MAC 연산기(13)에 제공할 수 있다. 또한, 입출력 패드(15)는 결과 출력 버퍼(14)에 저장된 데이터를 수신하여, 이를 출력 데이터(O_Data)로 비휘발성 메모리(10) 외부에 제공할 수 있다. 몇몇 실시예에서, 출력 데이터(O_Data)는 가중치 데이터(W_Data)와 입력 데이터(I_Data)의 콘볼루션 연산에 대한 중간 결과 또는 최종 결과 데이터일 수 있다. 예를 들어, 출력 데이터(O_Data)는 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11)일 수 있다. 다른 예를 들어, 출력 데이터(O_Data)는 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)의 곱(W0X0) 내지 제4 가중치 데이터(W3)와 제20 입력 데이터(X19)의 곱(W3X19)일 수 있다.
도 4는 몇몇 실시예에 따른 컴퓨팅 장치의 동작을 설명하기 위한 예시적인 도면이다.
도 4를 참조하면, 프로세서(300)는 MAC 연산에 대한 요청을 수신한다. 프로세서(300)는 메모리 컨트롤러(20)에 입력 데이터(I_Data)와 함께, MAC 명령(MAC CMD)을 제공할 수 있다.
메모리 컨트롤러(20)는 수신한 MAC 명령(MAC CMD)에 응답하여, 비휘발성 메모리(10)에 가중치 데이터(W_Data)에 대한 리드 명령(Read CMD)을 제공할 수 있다. 비휘발성 메모리(10)는 가중치 데이터(W_Data)에 대한 리드 명령(Read CMD)에 응답하여, 비휘발성 메모리(10)의 저장 영역(10_S) 내에 저장된(예를 들어, 메모리 셀(11)에 저장된) 가중치 데이터(W_Data)를 리드할 수 있다(S110). 리드된 가중치 데이터(W_Data)는 버퍼 메모리(12)에 제공될 수 있다. 예시적인 설명을 위해, 도 5 내지 도 7을 참조한다.
도 5는 몇몇 실시예에 따른 가중치 데이터가 메모리 셀에서 버퍼 메모리에 제공되는 동작을 설명하기 위한 예시적인 도면이다. 도 6은 몇몇 실시예에 따른 입력 데이터와 가중치 데이터가 MAC 연산기에 제공되는 동작을 설명하기 위한 예시적인 도면이다. 도 7은 몇몇 실시예에 따른 MAC 연산기의 연산 결과가 출력 데이터로 제공되는 동작을 설명하기 위한 예시적인 도면이다.
도 4 및 도 5를 참조하면, 가중치 데이터(W_Data)는 복수의 메모리 셀(11) 중 적어도 일부에 저장되어 있을 수 있다. 가중치 데이터(W_Data)는 예를 들어, 제1 가중치 데이터(W0) 내지 제4 가중치 데이터(W3)를 포함할 수 있다. 메모리 컨트롤러(20)는 비휘발성 메모리(10)에 가중치 데이터(W_Data)의 리드 명령(Read CMD)을 제공하여, 메모리 셀(11)에 저장된 가중치 데이터(W_Data)를 버퍼 메모리(12)에 제공할 수 있다. 다시 말해서, 메모리 컨트롤러(20)의 명령에 따라, 가중치 데이터(W_Data)는 메모리 셀(11)에서 버퍼 메모리(12)로 래치(latch)될 수 있다.
즉, 메모리 컨트롤러(20)는 MAC 명령(MAC CMD)에 응답하여, 우선 가중치 데이터(W_Data)가 메모리 셀(11)에서 버퍼 메모리(12)에 리드되도록 제어할 수 있다. 가중치 데이터(W_Data)가 버퍼 메모리(12)에 리드 완료된 경우, 비휘발성 메모리(10)는 메모리 컨트롤러(20)에 리드 완료 응답을 제공할 수 있다.
도 4 및 도 6을 참조하면, 메모리 컨트롤러(20)는 리드 완료 응답을 수신할 수 있다. 메모리 컨트롤러(20)에 리드 완료 응답이 수신되면, 메모리 컨트롤러(20)는 비휘발성 메모리(10)에 입력 데이터(I_Data)를 제공할 수 있다. 예를 들어, 메모리 컨트롤러(20)는 입력 데이터(I_Data)를 입출력 패드(15)에 제공할 수 있다.
MAC 연산기(13)는 입출력 패드(15)를 통해 입력 데이터(I_Data)를 제공받을 수 있다. 예를 들어, MAC 연산기(13)는 제1 입력 데이터(X0) 내지 제20 입력 데이터(X19)를 입출력 패드(15)를 통해 제공받을 수 있다.
MAC 연산기(13)가 입력 데이터(I_Data)를 제공받는 동안, 버퍼 메모리(12)에 래치된 가중치 데이터(W_Data)도 MAC 연산기(13)에 제공될 수 있다. 예를 들어, MAC 연산기(13)가 입출력 패드(15)를 통해 제1 입력 데이터(X0) 내지 제20 입력 데이터(X19)를 제공받는 동안, 버퍼 메모리(12)에 래치된 제1 가중치 데이터(W0) 내지 제4 가중치 데이터(W3)도 MAC 연산기(13)에 제공될 수 있다.
몇몇 실시예에 따르면, 가중치 데이터(W_Data)가 메모리 셀(11)에서 버퍼 메모리(12)에 리드된 이후, MAC 연산기(13)는 입력 데이터(I_Data)를 입출력 패드(15)를 통해 제공받을 수 있다. 예를 들어, MAC 연산기(13)가 제1 입력 데이터(X0) 내지 제20 입력 데이터(X19)를 제공받기 전, 메모리 셀(11)에 저장된 제1 가중치 데이터(W0) 내지 제4 가중치 데이터(W3)는 버퍼 메모리(12)에 리드될 수 있다.
도 4 및 도 7을 참조하면, MAC 연산기(13)는 입력 데이터(I_Data)와 가중치 데이터(W_Data)를 제공받아, 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 콘볼루션 연산을 수행할 수 있다(S120). MAC 연산기(13)는 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 콘볼루션 연산 결과를, 결과 출력 버퍼(14)에 제공할 수 있다. 다시 말해서, MAC 연산기(13)에서 생성된 결과 데이터(R_Data)는 결과 출력 버퍼(14)에 제공될 수 있다. 앞서 설명한 바와 같이, 결과 데이터(R_Data)는 가중치 데이터(W_Data)와 입력 데이터(I_Data)의 콘볼루션 연산의 중간 결과 데이터일 수 있다. 예를 들어, 결과 데이터(R_Data)는 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11) 각각일 수 있다. 다른 예를 들어, 결과 데이터(R_Data)는 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)의 곱(W0X0) 내지 제4 가중치 데이터(W3)와 제20 입력 데이터(X19)의 곱(W3X19) 각각일 수 있다. 몇몇 실시예에 따르면, 결과 출력 버퍼(14)에 저장된 결과 데이터(R_Data)들은 입출력 패드(15)를 통해 출력 데이터(O_Data)로 비휘발성 메모리(10)의 외부로 제공될 수 있다.
도 8은 몇몇 실시예에 따른 데이터들이 입/출력되는 타이밍을 설명하기 위한 예시적인 도면이다.
도 5 내지 도 8을 참조하여, 데이터들이 입/출력되는 타이밍에 대해 설명한다.
제1 구간(P1)동안 버퍼 메모리(12)에 가중치 데이터(W_Data)가 래치될 수 있다. 즉, 비휘발성 메모리(10)의 메모리 셀(11)에 저장된 가중치 데이터(W_Data)는 제1 구간(P1)동안 버퍼 메모리(12)에 제공될 수 있다. 다시 말해서, 버퍼 메모리(12)는 제1 구간(P1)동안 메모리 셀(11)로부터 가중치 데이터(W_Data)를 제공받아, 이를 저장할 수 있다.
제2 구간(P2)동안, 버퍼 메모리(12)는 래치된 가중치 데이터(W_Data)를 MAC 연산기(13)에 제공할 수 있다. 다시 말해서, MAC 연산기(13)는 제2 구간(P2)동안 버퍼 메모리(12)로부터 가중치 데이터(W_Data)를 제공받을 수 있다.
제3 구간(P3)동안, 입출력 패드(15)는 입력 데이터(I_Data)를 MAC 연산기(13)에 제공할 수 있다. 다시 말해서, MAC 연산기(13)는 제3 구간(P3)동안 입출력 패드(15)를 통해 입력 데이터(I_Data)를 제공받을 수 있다. 몇몇 실시예에 따르면, 제1 구간(P1)은 제3 구간(P3)보다 선행할 수 있다. 다시 말해서, MAC 연산기(13)가 입력 데이터(I_Data)를 제공받기 전, 가중치 데이터(W_Data)는 메모리 셀(11)에서 버퍼 메모리(12)에 리드될 수 있다.
몇몇 실시예에 따르면, 제2 구간(P2)과 제3 구간(P3)은 오버랩될 수 있다. 다시 말해서, MAC 연산기(13)는 가중치 데이터(W_Data)와 입력 데이터(I_Data)를 동시에 제공받을 수 있다. 본 명세서에서, 용어 "동시"는 완벽한 동일 시점을 의미하지는 않는다. 용어 "동시"는 서로 다른 두 이벤트가 동일한 구간 내에서 발생되는 것을 의미한다. 즉, 용어 "동시"는 두 이벤트가 순차적으로 발생되는 것이 아니라, 두 이벤트가 함께 병렬적으로 발생되는 것을 의미한다. 예를 들어, 동일 구간 내에서 입력 데이터(I_Data)와 가중치 데이터(W_Data)가 수신되는 경우, 입력 데이터(I_Data)와 가중치 데이터(W_Data)는 "동시"에 수신되는 것으로 볼 수 있다. 다른 예를 들어, 입력 데이터(I_Data)가 제공되는 구간에서, MAC 연산이 수행되는 경우, MAC 연산은 입력 데이터(I_Data)가 제공됨과 "동시"에 수행되는 것으로 볼 수 있다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 본 명세서에서 사용된 "동시"의 의미를 명확히 이해할 수 있을 것이다. 도 9를 참조하여, MAC 연산기(13)가 입력 데이터(I_Data)와 가중치 데이터(W_Data)를 수신하는 구간에 대해 더 구체적으로 설명한다.
도 9는 몇몇 실시예에 따른 MAC 연산기가 입력 데이터와 가중치 데이터를 수신하는 구간을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해, 중복되거나 유사한 내용은 생략하거나 간단히 설명한다.
도 8 및 도 9를 참조하면, 제2 구간(P2)동안, MAC 연산기(13)는 버퍼 메모리(12)에서 가중치 데이터(W_Data)를 제공받을 수 있다. 몇몇 실시예에 따르면, 제2 구간(P2)은 제1 서브 구간(SP1) 및 제2 서브 구간(SP2)을 포함할 수 있다.
제1 서브 구간(SP1)동안, 버퍼 메모리(12)는 MAC 연산기(13)에 제1 가중치 데이터(W0)를 제공할 수 있다. 다시 말해서, MAC 연산기(13)는 제1 서브 구간(SP1)동안 버퍼 메모리(12)에서 제1 가중치 데이터(W0)를 제공받을 수 있다.
제2 서브 구간(SP2)동안, 버퍼 메모리(12)는 MAC 연산기(13)에 제2 가중치 데이터(W1)를 제공할 수 있다. 다시 말해서, MAC 연산기(13)는 제2 서브 구간(SP2)동안 버퍼 메모리(12)에서 제2 가중치 데이터(W1)를 제공받을 수 있다. 몇몇 실시예에 따르면, 제2 서브 구간(SP2)은 제1 서브 구간(SP1) 이후에 배치될 수 있으나, 실시예들이 이에 제한되지는 않는다.
제3 구간(P3)동안, MAC 연산기(13)는 입출력 패드(15)를 통해 입력 데이터(I_Data)를 제공받을 수 있다. 몇몇 실시예에 따르면, 제3 구간(P3)은 제3 서브 구간(SP3) 및 제4 서브 구간(SP4)을 포함할 수 있다.
제3 서브 구간(SP3)동안, 입출력 패드(15)는 MAC 연산기(13)에 제1 입력 데이터(X0)를 제공할 수 있다. 다시 말해서, MAC 연산기(13)는 제3 서브 구간(SP3)동안, 입출력 패드(15)를 통해 제1 입력 데이터(X0)를 제공받을 수 있다.
제4 서브 구간(SP4)동안, 입출력 패드(15)는 MAC 연산기(13)에 제2 입력 데이터(X1)를 제공할 수 있다. 다시 말해서, MAC 연산기(13)는 제4 서브 구간(SP4)동안, 입출력 패드(15)를 통해 제2 입력 데이터(X1)를 제공받을 수 있다. 몇몇 실시예에 따르면, 제4 서브 구간(SP4)은 제3 서브 구간(SP3) 이후에 배치될 수 있으나, 실시예들이 이에 제한되지는 않는다.
몇몇 실시예에 따르면, 제1 서브 구간(SP1)과 제3 서브 구간(SP3)은 오버랩될 수 있다. 또한, 제2 서브 구간(SP2)과 제4 서브 구간(SP4)은 오버랩될 수 있다. 다시 말해서, 몇몇 실시예에 따르면, MAC 연산기(13)는 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)를 동시에 제공받을 수 있다. 또한, MAC 연산기(13)는 제2 가중치 데이터(W1)와 제2 입력 데이터(X1)를 동시에 제공받을 수 있다.
다시 도 5 내지 도 8을 참조하면, 제4 구간(P4)동안, MAC 연산기(13)는 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 콘볼루션 연산을 수행할 수 있다. 몇몇 실시예에 따르면, 제4 구간(P4)과 제2 구간(P2)은 오버랩될 수 있다. 또한, 몇몇 실시예에 따르면, 제4 구간(P4)과 제3 구간(P3)은 오버랩될 수 있다. 다시 말해서, MAC 연산기(13)는 입력 데이터(I_Data)와 가중치 데이터(W_Data)를 제공받는 것과 동시에, 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 콘볼루션 연산을 수행할 수 있다.
비록 도시하지는 않았으나, 제4 구간(P4) 동안, MAC 연산기(13)는 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 콘볼루션 연산의 중간 결과를, 결과 출력 버퍼(14)에 제공할 수 있다. 다시 말해서, 제4 구간(P4)동안, 결과 출력 버퍼(14)는 결과 데이터(R_Data)를 제공받을 수 있다.
제5 구간(P5)동안, 결과 출력 버퍼(14)는 출력 데이터(O_Data)를 입출력 패드(15)를 통해 비휘발성 메모리(10) 외부에 제공할 수 있다. 앞서 설명한 바와 같이, 출력 데이터(O_Data)는 예를 들어, 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11), 또는 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)의 곱(W0X0) 내지 제4 가중치 데이터(W3)와 제20 입력 데이터(X19)의 곱(W3X19)일 수 있다.
몇몇 실시예에 따르면, 비휘발성 메모리(10)는 메모리 셀(11)에서 버퍼 메모리(12)에 가중치 데이터(W_Data)를 래치할 때부터, MAC 연산기(13)의 동작이 종료될 때까지 비지(busy) 상태를 유지할 수 있다. 다시 말해서, 비휘발성 메모리(10)의 내부 동작이 수행되는 동안, 비지 상태 신호(RnBx)는 논리 로우 레벨(0)일 수 있다.
몇몇 실시예에 따르면, 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 콘볼루션 연산은 곱 연산과 합 연산의 조합일 수 있다. 예를 들어, 앞서 설명한 수학식 1을 참조하면, 제1 출력 데이터(S0)는 제1 입력 데이터(X0)와 제1 가중치 데이터(W0)의 곱, 제2 입력 데이터(X1)와 제2 가중치 데이터(W1)의 곱, 제6 입력 데이터(X5)와 제3 가중치 데이터(W2)의 곱 및 제7 입력 데이터(X6)와 제4 가중치 데이터(W3)의 곱을 모두 합한 결과와 같다. 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 효과적인 곱 연산 과정을 설명하기 위해, 도 10 내지 도 12를 참조한다.
도 10 내지 도 12는 몇몇 실시예에 따른 입력 데이터와 출력 데이터의 곱 연산을 설명하기 위한 예시적인 도면이다. 도 10 내지 도 12는 설명의 편의를 위해, 제1 입력 데이터(X0)와 제1 가중치 데이터(W0)의 곱 연산을 예로 들어 설명하나, 실시예들이 이에 제한되지 않는다. 또한, 설명의 편의를 위해, 제1 입력 데이터(X0)는 3비트 데이터이고, 제1 가중치 데이터(W0)도 3비트 데이터인 것을 가정하여 설명하나 실시예들이 이에 제한되지는 않는다. 도 10 내지 도 12에서, 제1 가중치 데이터(W0)는 MSB(Most Significant Bit)가 wb2 이고, 두번째 비트가 wb1이고, LSB(Least Significant Bit)가 wb0인 데이터인 것으로 정의한다. 또한, 제1 입력 데이터(X0)는 MSB가 xb2이고, 두번째 비트가 xb1이고, LSB가 xb0인 데이터인 것으로 정의한다.
도 9 내지 도 12를 참조하면, MAC 연산기(13)는 제1 곱셈기(M_1), 제1 누산기(AC_1), 제2 누산기(AC_2), 제3 누산기(AC_3), 제4 누산기(AC_4) 및 제5 누산기(AC_5)를 포함할 수 있다.
MAC 연산기(13)는 제1 서브 구간(SP1)동안 제1 가중치 데이터(W0)를 제공받을 수 있고, 제3 서브 구간(SP3)동안 제1 입력 데이터(X0)를 제공받을 수 있다. 몇몇 실시예에 따르면, 제1 서브 구간(SP1)동안, 제1 가중치 데이터(W0)의 모든 비트는 제1 곱셈기(M_1)에 동시에 제공되어 래치될 수 있다. 다시 말해서, 제1 가중치 데이터(W0)는 제1 곱셈기(M_1)의 피승수(multiplicand)일 수 있다. 예를 들어, 제1 서브 구간(SP1)동안, wb2, wb1 및 wb0는 제1 곱셈기(M_1)에 동시에 제공되어 래치될 수 있다. 반면, 제3 서브 구간(SP3)동안, 제1 입력 데이터(X0)는 제1 곱셈기(M_1)에 순차적으로 제공될 수 있다. 다시 말해서, 제1 입력 데이터(X0)는 제1 곱셈기(M_1)의 승수(multiplier)일 수 있다. 예를 들어, 제3 서브 구간(SP3)동안, xb2, xb1 및 xb0는 순차적으로 제공될 수 있다.
먼저, 제1 곱셈기(M_1)에 xb0가 제공될 수 있다. 이때, 제1 곱셈기(M_1)는 wb0xb0, wb1xb0, wb2xb0를 연산할 수 있다. wb0xb0, wb1xb0, wb2xb0의 연산은 제1 곱셈기(M_1)에서 병렬적으로 수행될 수 있다. 제1 곱셈기(M_1)는 wb0xb0를 제1 누산기(AC_1)에 제공하고, wb1xb0를 제2 누산기(AC_2)에 제공하고, wb2xb0를 제3 누산기(AC_3)에 제공할 수 있다.
다음으로, 제1 곱셈기(M_1)에 xb1이 제공될 수 있다. 이때, 제1 곱셈기(M_1)는 wb0xb1, wb1xb1, wb2xb1을 연산할 수 있다. wb0xb1, wb1xb1, wb2xb1의 연산은 제1 곱셈기(M_1)에서 병렬적으로 수행될 수 있다. 제1 곱셈기(M_1)는 wb0xb1을 제2 누산기(AC_2)에 제공하고, wb1xb1을 제3 누산기(AC_3)에 제공하고, wb2xb1을 제4 누산기(AC_4)에 제공할 수 있다.
다음으로, 제1 곱셈기(M_1)에 xb2가 제공될 수 있다. 이때, 제1 곱셈기(M_1)는 wb0xb2, wb1xb2, wb2xb2를 연산할 수 있다. wb0xb2, wb1xb2, wb2xb2의 연산은 제1 곱셈기(M_1)에서 병렬적으로 수행될 수 있다. 제1 곱셈기(M_1)는 wb0xb2를 제3 누산기(AC_3)에 제공하고, wb1xb2를 제4 누산기(AC_4)에 제공하고, wb2xb2를 제5 누산기(AC_5)에 제공할 수 있다.
몇몇 실시예에 따르면, 제1 누산기(AC_1) 내지 제5 누산기(AC_5)의 출력 각각은 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)의 곱(W0X0)의 각 자릿수에 해당되는 비트일 수 있다. 몇몇 실시예에 따르면, 제1 누산기(AC_1)의 출력은 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)의 곱(W0X0)의 LSB이고, 제5 누산기(AC_5)의 출력은 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)의 곱(W0X0)의 MSB일 수 있다. 몇몇 실시예에 따른 MAC 연산기(13)는 간단하고 효과적인 방법으로 가중치 데이터(W_Data)와 입력 데이터(I_Data)의 곱 연산을 수행할 수 있다.
비록 도 10 내지 도 12는 제1 곱셈기(M_1)가 하나의 구성요소로 도시되었으나, 실시예들이 이에 제한되지는 않는다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는, 복수의 곱셈기를 이용하여, 과도한 실험 없이, 본 발명의 실시예들을 구현할 수 있을 것이다.
도 13은 몇몇 실시예에 따른 비휘발성 메모리를 설명하기 위한 예시적인 블록도이다. 설명의 편의를 위해, 중복되거나 유사한 내용은 생략하거나 간단히 설명한다.
도 13을 참조하면, 비휘발성 메모리(10)는 저장 영역(10_S)에는 메모리 셀(11)이 배치될 수 있다. 또한, 비휘발성 메모리(10)의 주변 영역(10_P)에는 버퍼 메모리(12), MAC 연산기(13), 결과 출력 패드(16) 및 입출력 패드(15)가 배치될 수 있다. 다시 말해서, 몇몇 실시예에 따른 비휘발성 메모리(10)는 도 3을 이용하여 설명한 비휘발성 메모리(10)에서, 결과 출력 버퍼(14) 대신 결과 출력 패드(16)를 더 포함하는 비휘발성 메모리(10)일 수 있다.
MAC 연산기(13)는 가중치 데이터(W_Data)와 입력 데이터(I_Data)를 콘볼루션 연산하여, 결과 데이터(R_Data)를 생성할 수 있다. MAC 연산기(13)에서 생성된 결과 데이터(R_Data)는 결과 출력 패드(16)에 제공될 수 있다. 앞서 설명한 바와 같이, 결과 데이터(R_Data)는 가중치 데이터(W_Data)와 입력 데이터(I_Data)의 콘볼루션 연산의 중간 결과 데이터일 수 있다. 예를 들어, 결과 데이터(R_Data)는 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11) 각각일 수 있다. 다른 예를 들어, 결과 데이터(R_Data)는 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)의 곱(W0X0) 내지 제4 가중치 데이터(W3)와 제20 입력 데이터(X19)의 곱(W3X19) 각각일 수 있다.
결과 출력 패드(16)에 제공된 결과 데이터(R_Data)는 출력 데이터(O_Data)로 비휘발성 메모리(10) 외부에 제공될 수 있다. 몇몇 실시예에 따르면, 출력 데이터(O_Data)는 결과 데이터(R_Data)와 동일한 데이터일 수 있다.
몇몇 실시예에 따르면, 결과 출력 패드(16)는 입력 데이터(I_Data)를 제공받는 입출력 패드(15)와 별도로 구성될 수 있다. 따라서, 입력 데이터(I_Data)가 입출력 패드(15)를 통해 MAC 연산기(13)에 제공되는 동안, 출력 데이터(O_Data)는 결과 출력 패드(16)를 통해 비휘발성 메모리(10) 외부에 제공될 수 있다. 예시적 설명을 위해 도 14를 참조한다.
도 14는 몇몇 실시예에 따른 데이터들이 입/출력되는 타이밍을 설명하기 위한 예시적인 도면이다. 설명의 편의를 위해 중복되거나 유사한 내용은 생략하거나 간단히 설명한다.
도 13 및 도 14를 참조하면, 제1 구간(P1)동안, 버퍼 메모리(12)는 가중치 데이터(W_Data)를 래치할 수 있다. 즉, 비휘발성 메모리(10)의 메모리 셀(11)에 저장된 가중치 데이터(W_Data)는 제1 구간(P1)동안 버퍼 메모리(12)에 제공될 수 있다.
제2 구간(P2)동안, 버퍼 메모리(12)는 래치된 가중치 데이터(W_Data)를 MAC 연산기(13)에 제공할 수 있다.
제3 구간(P3)동안, 입출력 패드(15)는 입력 데이터(I_Data)를 MAC 연산기(13)에 제공할 수 있다. 몇몇 실시예에 따르면, 제2 구간(P2)과 제3 구간(P3)은 오버랩될 수 있다. 다시 말해서, MAC 연산기(13)는 가중치 데이터(W_Data)와 입력 데이터(I_Data)를 동시에 제공받을 수 있다. 몇몇 실시예에서, 제1 구간(P1)은 제3 구간(P3)보다 선행할 수 있다.
제4 구간(P4)동안, MAC 연산기(13)는 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 콘볼루션 연산을 수행할 수 있다. 몇몇 실시예에 따르면, 제4 구간(P4)과 제2 구간(P2)은 오버랩될 수 있다. 또한, 몇몇 실시예에 따르면, 제4 구간(P4)과 제3 구간(P3)은 오버랩될 수 있다. 다시 말해서, MAC 연산기(13)는 입력 데이터(I_Data)와 가중치 데이터(W_Data)를 제공받는 것과 동시에, 입력 데이터(I_Data)와 가중치 데이터(W_Data)의 콘볼루션 연산을 수행할 수 있다.
제5 구간(P5)동안, MAC 연산기(13)는 결과 데이터(R_Data)를 결과 출력 패드(16)에 제공할 수 있다. 결과 데이터(R_Data)를 제공받은, 결과 출력 패드(16)는 이를 출력 데이터(O_Data)로 비휘발성 메모리(10) 외부에 제공할 수 있다. 몇몇 실시예에 따르면, 제5 구간(P5)은 제2 구간(P2)과 적어도 일부 오버랩될 수 있다. 또한, 제5 구간(P5)은 제3 구간(P3)과 적어도 일부 오버랩될 수 있다. 또한, 제5 구간(P5)은 제4 구간(P4)과 적어도 일부 오버랩될 수 있다. 다시 말해서, MAC 연산기(13)는 적어도 일부 구간에서, 입출력 패드(15)를 통해 입력 데이터(I_Data)를 제공받는 동시에, 결과 출력 패드(16)를 통해 출력 데이터(O_Data)를 비휘발성 메모리(10)의 외부에 제공할 수 있다. 예를 들어, 출력 데이터(O_Data)는 제1 출력 데이터(S0) 내지 제12 출력 데이터(S11) 각각, 또는 제1 가중치 데이터(W0)와 제1 입력 데이터(X0)의 곱(W0X0) 내지 제4 가중치 데이터(W3)와 제20 입력 데이터(X19)의 곱(W3X19) 각각일 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1000: 컴퓨팅 장치 100: 메모리 장치
200: 인터페이스 300: 프로세서
400: 캐시 메모리 10: 비휘발성 메모리
20: 메모리 컨트롤러 11: 메모리 셀
12: 버퍼 메모리 13: MAC 연산기
14: 결과 출력 버퍼 15: 입출력 패드
16: 결과 출력 패드

Claims (20)

  1. 가중치 데이터가 저장되는 메모리 셀;
    상기 메모리 셀에서 상기 가중치 데이터를 리드하는 버퍼 메모리;
    입력 데이터를 제공받는 입출력 패드; 및
    상기 버퍼 메모리에서 상기 가중치 데이터를 제공받고, 상기 입출력 패드에서 상기 입력 데이터를 제공받아 상기 가중치 데이터와 상기 입력 데이터의 콘볼루션(Convolution) 연산을 수행하는 MAC 연산기를 포함하고,
    상기 입력 데이터는 제1 구간동안 상기 MAC 연산기에 제공되고,
    상기 MAC 연산기는 상기 제1 구간과 오버랩되는 제2 구간동안 상기 가중치 데이터와 상기 입력 데이터의 콘볼루션 연산을 수행하는 메모리 장치.
  2. 제 1항에 있어서,
    상기 가중치 데이터는 상기 제1 구간과 오버랩되는 제3 구간동안 상기 MAC 연산기에 제공되는 메모리 장치.
  3. 제 1항에 있어서,
    상기 MAC 연산기에 상기 입력 데이터가 제공되기 전, 상기 버퍼 메모리는 상기 메모리 셀에서 상기 가중치 데이터를 리드하는 메모리 장치.
  4. 제 1항에 있어서,
    상기 입력 데이터는 제1 및 제2 입력 데이터를 포함하고,
    상기 가중치 데이터는 제1 및 제2 가중치 데이터를 포함하고,
    상기 제1 및 제2 입력 데이터는 각각 제1 및 제2 서브 구간동안 상기 MAC 연산기에 제공되고,
    상기 제1 및 제2 가중치 데이터는 각각 제3 및 제4 서브 구간동안 상기 MAC 연산기에 제공되고,
    상기 제1 서브 구간은 상기 제3 서브 구간과 오버랩되고, 상기 제2 서브 구간은 상기 제4 서브 구간과 오버랩되는 메모리 장치.
  5. 제 1항에 있어서,
    상기 가중치 데이터는 제1 및 제2 가중치 비트를 포함하고,
    상기 입력 데이터는 제1 및 제2 입력 비트를 포함하고,
    상기 MAC 연산기는 제1 곱셈기 및 제1 내지 제3 누산기를 포함하되,
    상기 MAC 연산기가 상기 콘볼루션 연산을 수행하는 것은, 상기 제1 곱셈기가 상기 가중치 데이터와 상기 입력 데이터의 곱 연산을 수행하는 것을 포함하고,
    상기 제1 곱셈기가 상기 곱 연산을 수행하는 것은, 상기 제1 곱셈기가,
    상기 제1 가중치 비트와 상기 제1 입력 비트를 곱 연산하여 상기 제1 누산기에 제공하고,
    상기 제2 가중치 비트와 상기 제1 입력 비트를 곱 연산하여 상기 제2 누산기에 제공하고,
    상기 제1 가중치 비트와 상기 제2 입력 비트를 곱 연산하여 상기 제2 누산기에 제공하고,
    상기 제2 가중치 비트와 상기 제2 입력 비트를 곱 연산하여 상기 제3 누산기에 제공하는 것을 포함하는 메모리 장치.
  6. 제 5항에 있어서,
    상기 제1 누산기의 출력은 상기 가중치 데이터와 상기 입력 데이터의 곱 연산의 LSB(Least Significant Bit)인 메모리 장치.
  7. 제 5항에 있어서,
    상기 제2 누산기는 상기 제2 가중치 비트와 상기 제1 입력 비트의 곱 연산 결과와, 상기 제1 가중치 비트와 상기 제2 입력 비트의 곱 연산 결과를 합하여 출력하는 메모리 장치.
  8. 제 1항에 있어서,
    상기 가중치 데이터와 상기 입력 데이터의 콘볼루션 연산 결과가 저장되는, 결과 출력 버퍼를 더 포함하는 메모리 장치.
  9. 제 8항에 있어서,
    상기 결과 출력 버퍼에 저장된 상기 콘볼루션 연산 결과는 상기 입출력 패드를 통해 출력되는 메모리 장치.
  10. 제 1항에 있어서,
    상기 가중치 데이터와 상기 입력 데이터의 콘볼루션 연산 결과가 출력되고, 상기 입출력 패드와 다른, 결과 출력 패드를 더 포함하는 메모리 장치.
  11. 제 10항에 있어서,
    상기 MAC 연산기는 상기 제2 구간과 오버랩되는 제4 구간동안, 상기 콘볼루션 연산 결과를 상기 결과 출력 패드에 제공하는 메모리 장치.
  12. 제1 및 제2 가중치 비트를 포함하는 가중치 데이터가 저장되는 버퍼 메모리;
    제1 및 제2 입력 비트를 포함하는 입력 데이터를 수신하는 입출력 패드; 및
    제1 내지 제3 누산기를 포함하고, 상기 가중치 데이터와 상기 입력 데이터를 제공받아 상기 가중치 데이터와 상기 입력 데이터의 콘볼루션(Convolution) 연산을 수행하는 MAC 연산기를 포함하고,
    상기 MAC 연산기가 상기 가중치 데이터와 상기 입력 데이터의 콘볼루션 연산을 수행하는 것은,
    상기 제1 가중치 비트와 상기 제1 입력 비트를 곱 연산하여, 상기 제1 누산기에 제공하고,
    상기 제2 가중치 비트와 상기 제1 입력 비트를 곱 연산하여, 상기 제2 누산기에 제공하고,
    상기 제1 가중치 비트와 상기 제2 입력 비트를 곱 연산하여, 상기 제2 누산기에 제공하고,
    상기 제2 가중치 비트와 상기 제2 입력 비트를 곱 연산하여, 상기 제3 누산기에 제공하는 것을 포함하는 메모리 장치.
  13. 제 12항에 있어서,
    상기 제1 가중치 비트와 상기 제1 입력 비트의 곱 연산과 상기 제2 가중치 비트와 상기 제1 입력 비트의 곱 연산은 병렬적으로 수행되고,
    상기 제1 가중치 비트와 상기 제2 입력 비트의 곱 연산과 상기 제2 가중치 비트와 상기 제2 입력 비트의 곱 연산은 병렬적으로 수행되는 메모리 장치.
  14. 제 12항에 있어서,
    상기 MAC 연산기가 상기 콘볼루션 연산을 수행하는 것은, 상기 MAC 연산기가 상기 가중치 데이터와 상기 입력 데이터의 곱 연산을 수행하는 것을 포함하고,
    상기 제1 누산기의 출력은 상기 곱 연산의 LSB(Least Significant Bit)인 메모리 장치.
  15. 제 12항에 있어서,
    상기 입력 데이터는 제1 구간동안 상기 MAC 연산기에 제공되고,
    상기 MAC 연산기는 상기 제1 구간과 오버랩되는 제2 구간동안 상기 콘볼루션 연산을 수행하는 메모리 장치.
  16. 제 12항에 있어서,
    상기 입력 데이터는 제1 구간동안 상기 MAC 연산기에 제공되고,
    상기 가중치 데이터는 상기 제1 구간과 오버랩되는 제3 구간동안 상기 MAC 연산기에 제공되는 메모리 장치.
  17. 제 12항에 있어서,
    상기 가중치 데이터가 저장되는 메모리 셀을 더 포함하고,
    상기 가중치 데이터는 상기 메모리 셀로부터 리드되어 상기 버퍼 메모리에 저장되는 메모리 장치.
  18. 제 17항에 있어서,
    상기 MAC 연산기가 상기 입력 데이터를 제공받기 전, 상기 메모리 셀에서 상기 버퍼 메모리로 상기 가중치 데이터가 리드되는 메모리 장치.
  19. 제 12항에 있어서,
    상기 가중치 데이터와 상기 입력 데이터의 콘볼루션 연산 결과가 출력되고, 상기 입출력 패드와 다른, 결과 출력 패드를 더 포함하는 메모리 장치.
  20. 가중치 데이터가 저장되는 메모리 셀;
    상기 메모리 셀에서 상기 가중치 데이터를 리드하는 버퍼 메모리;
    입력 데이터를 제공받는 입출력 패드; 및
    상기 가중치 데이터와 상기 입력 데이터의 콘볼루션(Convolution) 연산을 수행하는 MAC 연산기를 포함하고,
    상기 입력 데이터가 상기 입출력 패드에 제공되기 전, 상기 버퍼 메모리는 상기 메모리 셀에서 상기 가중치 데이터를 리드하고,
    상기 입력 데이터는 제1 구간동안 상기 입출력 패드로부터 상기 MAC 연산기에 제공되고,
    상기 가중치 데이터는 상기 제1 구간과 오버랩되는 제2 구간동안 상기 버퍼 메모리로부터 상기 MAC 연산기에 제공되는 메모리 장치.
KR1020190014683A 2019-02-08 2019-02-08 메모리 장치 및 이를 이용한 컴퓨팅 장치 KR20200097396A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190014683A KR20200097396A (ko) 2019-02-08 2019-02-08 메모리 장치 및 이를 이용한 컴퓨팅 장치
US16/578,507 US11307826B2 (en) 2019-02-08 2019-09-23 Memory device and computing device using the same
CN202010043153.XA CN111553472A (zh) 2019-02-08 2020-01-15 存储器装置
JP2020013512A JP7482636B2 (ja) 2019-02-08 2020-01-30 メモリ装置およびそれを用いたコンピューティング装置
US16/943,334 US11474785B2 (en) 2019-02-08 2020-07-30 Memory device and computing device using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190014683A KR20200097396A (ko) 2019-02-08 2019-02-08 메모리 장치 및 이를 이용한 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR20200097396A true KR20200097396A (ko) 2020-08-19

Family

ID=71946031

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190014683A KR20200097396A (ko) 2019-02-08 2019-02-08 메모리 장치 및 이를 이용한 컴퓨팅 장치

Country Status (3)

Country Link
US (1) US11307826B2 (ko)
KR (1) KR20200097396A (ko)
CN (1) CN111553472A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111382094B (zh) * 2018-12-29 2021-11-30 深圳云天励飞技术有限公司 一种数据处理方法及装置
US11347477B2 (en) * 2019-09-27 2022-05-31 Intel Corporation Compute in/near memory (CIM) circuit architecture for unified matrix-matrix and matrix-vector computations
KR20210083428A (ko) 2019-12-26 2021-07-07 삼성전자주식회사 메모리 장치, 및 이를 포함하는 전자 기기
CN113570034B (zh) * 2021-06-18 2022-09-27 北京百度网讯科技有限公司 处理装置、神经网络的处理方法及其装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3670956A (en) 1968-09-26 1972-06-20 Hughes Aircraft Co Digital binary multiplier employing sum of cross products technique
US5546343A (en) 1990-10-18 1996-08-13 Elliott; Duncan G. Method and apparatus for a single instruction operating multiple processors on a memory chip
JP3765337B2 (ja) 1996-10-25 2006-04-12 株式会社東芝 Macのバンクレジスタ回路
JPH11143786A (ja) 1997-11-13 1999-05-28 Hitachi Ltd ディスクアレイサブシステム用ディスク装置
JP3333779B2 (ja) 2001-12-26 2002-10-15 松下電器産業株式会社 行列演算装置
AU2003221680A1 (en) * 2002-04-09 2003-10-27 The Research Foundation Of State University Of New York Multiplier-based processor-in-memory architectures for image and graphics processing
US7043518B2 (en) * 2003-07-31 2006-05-09 Cradle Technologies, Inc. Method and system for performing parallel integer multiply accumulate operations on packed data
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
US9582465B2 (en) * 2012-11-15 2017-02-28 Elwha Llc Flexible processors and flexible memory
KR102249172B1 (ko) 2014-09-19 2021-05-11 삼성전자주식회사 불 휘발성 메모리 장치
KR20170137761A (ko) * 2015-04-16 2017-12-13 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 곱셈 누적 연산을 수행하는 저항성 메모리 어레이
US10074416B2 (en) * 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
KR102634421B1 (ko) 2016-11-21 2024-02-06 에스케이하이닉스 주식회사 페일 비트 카운터 및 이를 포함하는 반도체 메모리 장치
KR101939359B1 (ko) 2017-02-01 2019-01-16 고려대학교 산학협력단 내부 연산 구조를 포함하는 mtj 메모리 장치

Also Published As

Publication number Publication date
JP2020129373A (ja) 2020-08-27
CN111553472A (zh) 2020-08-18
US11307826B2 (en) 2022-04-19
US20200257500A1 (en) 2020-08-13

Similar Documents

Publication Publication Date Title
CN109213962B (zh) 运算加速器
US11307826B2 (en) Memory device and computing device using the same
US20190188237A1 (en) Method and electronic device for convolution calculation in neutral network
US11574031B2 (en) Method and electronic device for convolution calculation in neural network
US11693657B2 (en) Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
WO2019109795A1 (zh) 卷积运算处理方法及相关产品
KR101705926B1 (ko) 메모리 디바이스의 내부 프로세서의 조건부 연산
CN110415157B (zh) 一种矩阵乘法的计算方法及装置
WO2020238843A1 (zh) 神经网络计算设备、方法以及计算设备
US20100312997A1 (en) Parallel processing and internal processors
WO2023116314A1 (zh) 一种神经网络加速装置、方法、设备和计算机存储介质
CN111767986A (zh) 一种基于神经网络的运算方法及装置
KR20200108774A (ko) 순환 큐 기반의 명령어 메모리를 포함하는 메모리 장치 및 그 동작방법
CN114341802A (zh) 用于执行存储器内处理操作的方法及相关存储器装置和系统
US20230052624A1 (en) Operating mode register
US11474785B2 (en) Memory device and computing device using the same
US20200293452A1 (en) Memory device and method including circular instruction memory queue
CN113254359A (zh) 用于执行存储器内计算的方法和存储器模块
JP7482636B2 (ja) メモリ装置およびそれを用いたコンピューティング装置
Islam et al. A New Hardware-Efficient VLSI-Architecture of GoogLeNet CNN-Model Based Hardware Accelerator for Edge Computing Applications
CN115860080A (zh) 计算核、加速器、计算方法、装置、设备、介质及系统
WO2022007597A1 (zh) 矩阵运算的方法和加速器
CN116400884A (zh) 乘加器的控制方法、装置、计算机设备和存储介质
CN1109188A (zh) 并行算术—逻辑处理装置
CN117574970A (zh) 用于大规模语言模型的推理加速方法、系统、终端及介质

Legal Events

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