KR20200082617A - 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치 - Google Patents

메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치 Download PDF

Info

Publication number
KR20200082617A
KR20200082617A KR1020180173364A KR20180173364A KR20200082617A KR 20200082617 A KR20200082617 A KR 20200082617A KR 1020180173364 A KR1020180173364 A KR 1020180173364A KR 20180173364 A KR20180173364 A KR 20180173364A KR 20200082617 A KR20200082617 A KR 20200082617A
Authority
KR
South Korea
Prior art keywords
bits
multiplier
read
multiplication
value
Prior art date
Application number
KR1020180173364A
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 KR1020180173364A priority Critical patent/KR20200082617A/ko
Priority to US16/549,968 priority patent/US11113231B2/en
Priority to CN201910826041.9A priority patent/CN111383692A/zh
Publication of KR20200082617A publication Critical patent/KR20200082617A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4094Bit-line management or control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/24Bit-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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

메모리 장치를 이용한 계산 방법은, 피승수 값의 m개의 피승수 비트들을 복제하여 배열한 m*n개의(m, n은 자연수) 피승수 배열 비트들을 m*n개의 메모리 셀들에 저장하는 단계, 승수 값의 n개의 승수 비트들을 복제하여 배열한 m*n개의 승수 배열 비트들을 상기 m*n개의 메모리 셀들에 상응하는 m*n개의 독출-기입 단위 회로들에 저장하는 단계, 상기 m*n개의 승수 배열 비트들에 기초하여 상기 m*n개의 메모리 셀들에 저장된 m*n개의 피승수 배열 비트들을 선택적으로 독출하여, 상기 m*n개의 독출-기입 단위 회로들에 상기 m*n개의 피승수 배열 비트들 및 상기 m*n개의 승수 배열 비트들을 비트 단위로 곱한 m*n개의 곱셈 비트들을 저장하는 단계 및 상기 m*n개의 독출-기입 유닛들에 저장된 상기 m*n개의 곱셈 비트들에 기초하여 상기 피승수 값 및 상기 승수 값의 곱셈 값을 계산하는 단계를 포함한다.

Description

메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치{Calculation method using memory device and memory device performing the same}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치에 관한 것이다.
메모리 대역폭과 지연시간(latency or delay time)은 많은 프로세스 시스템들에서 중요한 성능 병목(performance bottleneck)의 원인이 된다. 메모리 용량을 늘리기 위해 메모리 칩의 패키지 내부에 적층된 반도체 다이들(semiconductor dies)은 실리콘 관통 전극 또는 기판 관통 전극(TSV, through-silicon via 또는 through-substrate via)을 통해 전기적으로 연결된다. 한편, 3차원 낸드 메모리 장치는 메모리 셀들을 수직 방향으로 배치함으로써 집적도를 향상시키고 있다. 이러한 기술을 통해 메모리 장치의 용량을 증가하면서도 대역폭과 지연시간의 패널티를 억제할 수 있다. 외부 장치의 메모리 장치에 대한 액세스(access)는 외부 장치와 메모리 장치 사이의 디바이스간(inter-device) 대역폭과 지연시간의 페널티가 발생한다. 따라서 외부 장치가 수행하는 데이터 프로세스가 적층형 메모리 장치로의 다중 액세스를 요구할 때 이러한 대역폭과 지연시간은 시스템의 프로세스 효율과 전력 소모량에 현저한 영향을 미친다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 효율적으로 프로세싱-인-메모리(PIM, processing in memory) 또는 컴퓨팅-인-메모리(CIM, computing in memory)를 수행할 수 있는 메모리 장치를 제공하는 것이다.
또한 본 발명의 일 목적은, 효율적으로 프로세싱-인-메모리 또는 컴퓨팅-인-메모리를 수행할 수 있는 메모리 장치를 이용한 계산 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 메모리 장치를 이용한 계산 방법은, 피승수 값의 m개의 피승수 비트들을 복제하여 배열한 m*n개의(m, n은 자연수) 피승수 배열 비트들을 m*n개의 메모리 셀들에 저장하는 단계, 승수 값의 n개의 승수 비트들을 복제하여 배열한 m*n개의 승수 배열 비트들을 상기 m*n개의 메모리 셀들에 상응하는 m*n개의 독출-기입 단위 회로들에 저장하는 단계, 상기 m*n개의 승수 배열 비트들에 기초하여 상기 m*n개의 메모리 셀들에 저장된 m*n개의 피승수 배열 비트들을 선택적으로 독출하여, 상기 m*n개의 독출-기입 단위 회로들에 상기 m*n개의 피승수 배열 비트들 및 상기 m*n개의 승수 배열 비트들을 비트 단위로 곱한 m*n개의 곱셈 비트들을 저장하는 단계 및 상기 m*n개의 독출-기입 유닛들에 저장된 상기 m*n개의 곱셈 비트들에 기초하여 상기 피승수 값 및 상기 승수 값의 곱셈 값을 계산하는 단계를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 메모리 장치를 이용한 행렬 곱셈 방법은, p행 r열의 피승수 행렬에 포함되는 (i, k) 피승수 값 및 r행 q열의 승수 행렬에 포함되는 (k, j) 승수 값을 곱하여, 모든 i, k 및 j (i는 1부터 p까지의 자연수, k는 1부터 r까지의 자연수, j는 1부터 q까지의 자연수)에 대한 p*r*q개의 (i, k, j) 곱셈 값들을 계산하는 단계 및 모든 k에 대한 r개의 (i, k, j) 곱셈 값들을 합산하여, 상기 p행 r열의 피승수 행렬 및 상기 r행 q열의 승수 행렬을 곱한 p행 q열의 곱셈 행렬에 포함되는 모든 i 및 j에 대한 p*q개의 (i, j) 성분 값들을 계산하는 단계를 포함한다. 상기 p*r*q개의 (i, k, j) 곱셈 값들의 각각을 계산하는 단계는, 상기 계산 방법에 의해 수행될 수 있다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 메모리 장치는, 피승수 행렬에 포함되는 피승수 값들의 복수의 피승수 비트들을 복제하여 배열한 복수의 피승수 배열 비트들 및 승수 행렬에 포함되는 승수 값들의 복수의 승수 비트들을 복제하여 배열한 복수의 승수 배열 비트들을 발생하는 데이터 복제부, 복수의 비트 라인들에 각각 연결되고 상기 복수의 피승수 배열 비트들을 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이, 상기 복수의 비트 라인들에 각각 연결되고 상기 복수의 승수 배열 비트들을 저장하고 상기 저장된 복수의 승수 배열 비트들에 기초하여 상기 복수의 메모리 셀들로부터 선택적으로 독출되는 상기 복수의 피승수 배열 비트들을 수신하여 상기 복수의 피승수 비트들 및 상기 복수의 승수 비트들을 비트 단위로 곱한 복수의 곱셈 비트들을 저장하는 복수의 독출-기입 단위 회로들 및 상기 복수의 독출-기입 단위 회로들에 저장된 상기 복수의 곱셈 비트들에 기초하여 상기 피승수 행렬 및 상기 승수 행렬을 곱한 곱셈 행렬의 성분 값들을 계산하는 계산부를 포함한다.
본 발명의 실시예들에 따른 메모리 장치 및 메모리 장치를 이용한 계산 방법은, 데이터 집약적(data-intensive)인 데이터 프로세스를 메모리 장치에 포함된 독출-기입 회로 및 계산부에 의해 수행함으로써 메모리 장치 및 외부 장치 사이에 교신되는 데이터의 양을 감소하여 데이터 프로세싱 시간 및 전력소모를 감소할 수 있다.
본 발명의 실시예들에 따른 메모리 장치 및 메모리 장치를 이용한 계산 방법은, 데이터의 효율적인 재배열 및 상기 독출-기입 회로를 이용하여 비트 단위의 곱셈을 병렬적으로 수행하고, 메모리 장치 내에서 덧셈 연산을 수행함으로써 MLP(multilayer perceptron), RNN(recurrent neural network), CNN(convolutional neural network) 등의 데이터 프로세싱 시간 및 전력소모를 감소할 수 있다.
도 1은 본 발명의 실시예들에 따른 메모리 장치의 계산 방법을 나타내는 순서도이다.
도 2 내지 5는 본 발명의 실시예들에 따른 데이터의 재배열 방법 및 재배열된 데이터에 의한 비트 단위 곱셈을 나타내는 도면들이다.
도 6은 3차원 낸드 플래시 메모리 장치의 예시적인 독출 바이어스 조건을 나타내는 도면이다.
도 7 및 8은 본 발명의 실시예들에 따른 메모리 장치를 이용한 계산 방법에 적용될 수 있는 선택 독출 동작의 실시예들을 나타내는 도면들이다.
도 9 및 10은 본 발명의 실시예들에 따른 메모리 장치에 포함되는 가중 덧셈기의 일 실시예를 나타내는 도면들이다.
도 11은 본 발명의 일 실시예에 따른 데이터의 재배열 방법을 나타내는 도면이다.
도 12는 도 11의 재배열 데이터에 대한 선택 독출 방법에 따른 곱셈 비트들을 나타내는 도면이다.
도 13은 도 12의 곱셈 비트들에 기초한 가중 덧셈 방법의 일 실시예를 나타내는 도면이다.
도 14는 본 발명의 일 실시예에 따른 재배열 데이터에 대한 선택 독출 방법에 따른 곱셈 비트들을 나타내는 도면이다.
도 15는 도 14의 곱셈 비트들에 기초한 가중 덧셈 방법의 일 실시예를 나타내는 도면이다.
도 16은 본 발명의 일 실시예에 따른 데이터의 재배열 방법을 나타내는 도면이다.
도 17은 도 16의 재배열 데이터에 대한 선택 독출 방법에 따른 곱셈 비트들을 나타내는 도면이다.
도 18은 도 17의 곱셈 비트들에 기초한 가중 덧셈 방법의 일 실시예를 나타내는 도면이다.
도 19a 내지 19e는 본 발명의 실시예들에 따른 데이터의 재배열 방법들을 나타내는 도면들이다.
도 20은 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 21은 본 발명의 실시예들에 따른 비휘발성 메모리 장치를 나타내는 블록도이다.
도 22a는 도 21의 메모리 셀 어레이를 나타내는 블록도이다.
도 22b는 도 22a의 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 23은 본 발명의 실시예들에 따른 메모리 장치를 이용한 인공 신경망 시스템에 의해 구동되는 딥 러닝 신경망 구조의 예를 설명하기 위한 도면이다.
도 24는 행렬 곱셈의 일 예를 나타내는 도면이다.
도 25는 본 발명의 실시예들에 따른 메모리 장치를 이용한 행렬 곱셈 방법을 나타내는 순서도이다.
도 26 및 27은 본 발명의 실시예들에 따른 메모리 장치를 이용한 행렬 곱셈 방법을 위한 코맨드 세트의 실시예들을 나타내는 도면들이다.
도 28 및 29는 본 발명의 실시예들에 따른 메모리 장치에 포함되는 계산부의 실시예들을 나타내는 도면들이다.
도 30은 본 발명의 실시예들에 따른 비휘발성 장치에 포함되는 페이지 버퍼 배치의 일 실시예 및 가중 덧셈 방법을 나타내는 도면이다.
도 31은 본 발명의 실시예들에 따른 메모리 장치를 포함하는 모바일 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 메모리 장치의 계산 방법을 나타내는 순서도이다.
도 1에는 복수의 비트 라인들에 각각 연결된 복수의 독출-기입 단위 회로들을 이용하여 상기 복수의 비트 라인들에 각각 연결된 복수의 메모리 셀들에 대한 독출 동작 및 기입 동작을 수행하는 메모리 장치를 이용한 계산 방법이 도시되어 있다. 도 1의 계산 방법은 MAC(multiplication and accumulation) 연산 방법을 포함할 수 있다. 도 1의 계산 방법은 복수 비트의 두 값을 곱하는 경우에 해당하며, 스칼라 계산 방법이라 칭할 수 있다. 이러한 스칼라 계산 방법을 이용하여 후술하는 바와 같이 행렬 곱셈을 효율적으로 수행할 수 있다.
도 1을 참조하면, 피승수 값의 m개의 피승수 비트들을 복제하여 배열한 m*n개의(m, n은 자연수) 피승수 배열 비트들을 m*n개의 메모리 셀들에 저장한다(S100). 또한 승수 값의 n개의 승수 비트들을 복제하여 배열한 m*n개의 승수 배열 비트들을 상기 m*n개의 메모리 셀들에 상응하는 m*n개의 독출-기입 단위 회로들에 저장한다(S200). 상기 피승수 값(multiplicand value) 및 상기 승수 값(multiplier value)은 서로 곱해지는 두 값들을 지칭하기 위한 것이며 어느 특정한 데이터 또는 값에 한정되는 것은 아니다. 일 실시예에서, 상기 메모리 셀들에 저장되는 피승수 값은 인공 신경망(ANN, artificial neural network)의 가중치에 해당하고 상기 승수 값은 입력 값 또는 액티베이션 값에 해당할 수 있다. 다른 실시예에서, 상기 메모리 셀들에 저장되는 피승수 값은 입력 값에 해당하고 승수 값이 가중치에 해당할 수 있다.
피승수 값 및 승수 값은 비트 단위의 곱셈을 위해 서로 다른 방식으로 복제되고 배열될 수 있다. 이러한 복제 배열 방식 또는 재배열 방식의 실시예들을 도 2 내지 5를 참조하여 후술한다.
상기 m*n개의 승수 배열 비트들에 기초하여 상기 m*n개의 메모리 셀들에 저장된 m*n개의 피승수 배열 비트들을 선택적으로 독출하여, 상기 m*n개의 독출-기입 단위 회로들에 상기 m*n개의 피승수 비트들 및 상기 m*n개의 승수 비트들을 비트 단위로 곱한 m*n개의 곱셈 비트들을 저장한다 (S300).
제1 실시예에서, 상기 선택적인 독출의 결과는 상기 승수 배열 비트들이 저장되어 있는 상기 독출-기입 단위 회로들에 포함된 래치들로 입력될 수 있다. 이 경우, 상기 독출-기입 단위 회로들에 포함된 래치들에 저장된 상기 승수 배열 비트들은 상기 곱셈 비트들로 갱신될 수 있다.
제2 실시예에서, 상기 독출-기입 단위 회로들은 상기 승수 배열 비트들을 저장하는 제1 래치들과 구별되는 제2 래치들을 포함할 수 있다. 이 경우, 상기 선택적인 독출의 결과는 상기 제2 래치들로 입력되어 상기 곱셈 비트들은 상기 제2 래치들에 저장될 수 있고, 상기 제1 래치들에 저장된 상기 승수 배열 비트들은 갱신되지 않고 유지될 수 있다.
본 개시에서는 도시 및 설명의 편의상 상기 제1 실시예를 중심으로 설명하지만, 동일한 방법들이 상기 제2 실시예에 의해서도 수행될 수 있음을 이해할 수 있을 것이다.
본 발명의 실시예들에 따른 메모리 장치를 이용하는 계산 방법은 메모리 장치의 동작을 위해 필수적으로 구비되는 독출-기입 회로를 이용하여 비트 단위의 곱셈을 수행한다. 상기 비트 단위의 곱셈은 적절히 재배열된 데이터 비트들의 저장 및 선택 독출 동작을 통해 수행될 수 있다. 상기 선택 독출 동작의 실시예들은 도 6 내지 8을 참조하여 후술한다.
상기 m*n개의 독출-기입 유닛들에 저장된 상기 m*n개의 곱셈 비트들에 기초하여 상기 피승수 값 및 상기 승수 값의 곱셈 값을 계산한다(S400). 상기 곱셈 비트들에 기초한 곱셈 값의 계산은 적어도 하나의 가중 덧셈기를 이용하여 수행될 수 있다. 상기 가중 덧셈기의 실시예들은 도 9a 내지 30을 참조하여 후술한다.
이와 같이, 본 발명의 실시예들에 따른 메모리 장치 및 메모리 장치를 이용한 계산 방법은, 데이터의 효율적인 재배열 및 상기 독출-기입 회로를 이용하여 비트 단위의 곱셈을 병렬적으로 수행하고, 메모리 장치 내에서 덧셈 연산을 수행함으로써 데이터 프로세싱 시간 및 전력소모를 감소할 수 있다.
도 2 내지 5는 본 발명의 실시예들에 따른 데이터의 재배열 방법 및 재배열된 데이터에 의한 비트 단위 곱셈을 나타내는 도면들이다.
도 2 내지 5에서 피승수 값(VA)은 m개의 피승수 비트들(A0~Am-1)을 포함하고 승수 값(VB)는 n개의 승수 비트들(A0~An-1)을 포함한다. 이 경우 피승수 값(VA) 및 승수 값(VB)의 곱셈 값(VA*VB)은 수학식 1과 같이 표현될 수 있다.
[수학식 1]
VA*VB=(A0*20+A1*21+A2*22+…+Am-1*2m-1)*(B0*20+B1*21+B2*22+…+Bn-1*2n-1)=A0*B0*20+(A1*B0+A0*B1)*21+…+(Am-1*Bn-1)*2m+n-2
수학식1에서 AiBj는(i는 0부터 m-1까지의 정수, j는 0부터 n-1까지의 정수) (i, j)곱셈 비트라 칭할 수 있고, 곱셈 비트들의 총 개수는 m*n개가 된다.
메모리 장치에 저장되고 선택적으로 독출되는 피승수 값 및 복수의 독출-기입 단위 회로들에 저장되는 승수 값은 서로 다른 방식에 의해 복제되고 배열될 수 있다.
도 2를 참조하면, m*n개의 피승수 배열 비트들(ARRA)은 m개의 피승수 비트들(A0~Am-1)의 각각을 n개씩 인접하도록 순차적으로 배열하는 제1 복제 배열 방식(SCH1)에 의해 발생될 수 있다. 한편, m*n개의 승수 배열 비트들(ARRB)은 n개의 승수 비트들(B0~Bn-1)을 m번 반복적으로 배열하는 제2 복제 배열 방식(SCH2)에 의해 발생될 수 있다.
도 3에는 도 2의 복제 배열에 상응하는 곱셈 비트들(MBa)의 배열이 도시되어 있다. 곱셈 비트들(MBa)은 m개의 피승수 비트들(A0~Am-1)에 상응하는 m개의 비트 그룹들(GR0~GRm-1)로 그룹화될 수 있다. m개의 비트 그룹들(GR0~GRm-1)에 상응하는 m개의 중간 곱셈 값들((AB)0~(AB)m-1 또는 A0*B~Am-1*B)은 수학식 2와 같이 표현될 수 있다.
[수학식 2]
(AB)i=Ai*B=Ai*(B0*20+B1*21+B2*22+…+Bn-1*2n-1) (i는 0부터 m-1까지의 정수)
수학식 2의 중간 곱셈 값들을 이용하면 곱셈 값(VA*VB)은 수학식 3과 같이 표현될 수 있다.
[수학식 3]
VA*VB=A0*B*20+A1*B*21+A2*B*22+…+Am-1*B*2m-1
= (AB)0*20+(AB)1*21+(AB)2*22+…+(AB)m-1*2m-1
= SUMi {Ai*B*2i}
결과적으로, 중간 곱셈 값들(A0*B~Am-1*B)에 m개의 피승수 비트들(A0~Am-1)에 상응하는 m개의 비트 가중치들(20~2m-1)을 각각 곱한 m개의 가중 중간 곱셈 값들(A0*B*20~Am-1*B*2m-1)을 순차적으로 합산하여 곱셈 값(VA*VB)을 계산할 수 있다.
도 4를 참조하면, m*n개의 승수 배열 비트들(ARRB)은 n개의 승수 비트들(B0~Bn-1)의 각각을 m개씩 인접하도록 순차적으로 배열하는 제1 복제 배열 방식(SCH1)에 의해 발생될 수 있다. 한편, m*n개의 피승수 배열 비트들(ARRA)은 m개의 피승수 비트들(A0~Am-1)을 n번 반복적으로 배열하는 제2 복제 배열 방식(SCH2)에 의해 발생될 수 있다.
도 5에는 도 4의 복제 배열에 상응하는 곱셈 비트들(MBb)의 배열이 도시되어 있다. 곱셈 비트들(MBb)은 n개의 승수 비트들(B0~Bn-1)에 상응하는 n개의 비트 그룹들(GR0~GRn-1)로 그룹화될 수 있다. n개의 비트 그룹들(GR0~GRn-1)에 상응하는 n개의 중간 곱셈 값들((AB)0~(AB)n-1 또는 A*B0~A*Bn-1)은 수학식 4와 같이 표현될 수 있다.
[수학식 4]
(AB)j=A*Bj=(A0*20+A1*21+A2*22+…+Am-1*2m-1)*Bj (j는 0부터 n-1까지의 정수)
수학식 4의 중간 곱셈 값들을 이용하면 곱셈 값(VA*VB)은 수학식 5와 같이 표현될 수 있다.
[수학식 5]
VA*VB=A*B0*20+A*B1*21+A*B2*22+…+A*Bn-1*2n-1
= (AB)0*20+(AB)1*21+(AB)2*22+…+(AB)n-1*2n-1
= SUMj {A*Bj*2j}
결과적으로, 중간 곱셈 값들(A*B0~A*Bn-1)에 n개의 승수 비트들(B0~Bn-1)에 상응하는 n개의 비트 가중치들(20~2n-1)을 각각 곱한 n개의 가중 중간 곱셈 값들(A*B0*20~A*Bn-1*2n-1)을 순차적으로 합산하여 곱셈 값(VA*VB)을 계산할 수 있다.
도 6은 3차원 낸드 플래시 메모리 장치의 예시적인 독출 바이어스 조건을 나타내는 도면이다.
도 6에는 편의상 하나의 메모리 블록(BLK)에 포함되는 복수의 낸드 스트링들 중에서 제 1 비트 라인(BL1)에 연결된 낸드 스트링(NS11, NS21)과 제 2 비트 라인(BL2)에 연결된 낸드 스트링(NS12, NS22)만이 도시되어 있다.
독출 동작시 제 1 비트 라인(BL1) 및 제 2 비트 라인(BL2)은 0의 값에 상응하는 초기화 전압(예를 들어, 0V)에서 1의 값에 상응하는 프리차지 전압(예를 들어, 약 0.5V)으로 프리차지(precharge) 된다. 제 1 비트 라인(BL1)에 연결된 낸드 스트링들(NS11, NS21) 및 제 2 비트 라인(BL2)에 연결된 낸드 스트링들(NS12, NS22) 중에서, 독출 동작 시에 낸드 스트링 NS21 및 낸드 스트링 NS22가 선택된다고 가정하면, 제 1 스트링 선택 라인(SSL1)에는 예를 들어, 접지 전압(0V)이 인가되고, 제 2 스트링 선택 라인(SSL2)에는, 예를 들어, 전원 전압(Vcc)이 인가된다. 또한, 제 1 접지 선택 라인(GSL1)에는 예를 들어, 접지 전압(0V)이 인가되고, 제 2 접지 선택 라인(GSL2)에는 전원 전압(Vcc)이 인가된다. 선택 워드 라인(예를 들면, WL5)에는 선택 독출 전압(VR)이 인가되고, 비선택 워드 라인(예를 들면, WL4, WL6)에는 비선택 독출 전압(VPS)이 인가된다.
이러한 독출 바이어스 조건에서는, 선택된 메모리 셀들(A, B)의 드레인 및 소스의 전압은 각각, 예를 들어, 0.5V와 0V이며, 게이트에는 선택 독출 전압(VR)이 인가된다. 그리고 선택 독출 전압(VR)의 전압 레벨을 변화시킴에 따라, 메모리 셀에 저장된 데이터를 판별하는 독출 동작이 수행된다. 선택 워드 라인((WL5)에 연결되지만 비선택 낸드 스트링들(NS11, NS12)에 포함되는 메모리 셀들(C, D)의 채널은 플로팅(floating) 상태에 있다.
도 7 및 8은 본 발명의 실시예들에 따른 메모리 장치를 이용한 계산 방법에 적용될 수 있는 선택 독출 동작의 실시예들을 나타내는 도면들이다. 도 7 및 8에는 도시 및 설명의 편의상 4개의 비트 라인들에 대해 설명하지만, 비트 라인들의 개수에 무관하게 후술하는 선택 독출 동작이 이해될 수 있을 것이다.
도 7을 참조하면, 제1 내지 제4 프리차지 회로들(PCCa~PCCd)은 제1 내지 제4 메모리 셀들(MCa~MCd)에 저장된 값들에 대한 센싱 동작 전에 제1 내지 제4 비트 라인들(BLa~BLd)을 프리차지 전압(VPC)으로 프리차지하기 위해 구비된다.
일 실시예에서, 도 7에 도시된 바와 같이, 선택 독출 동작(SRO)은 제1 내지 제4 독출-기입 단위 회로들(RWUa~RWUd)에 저장된 승수 배열 비트들의 각각에 기초하여 제1 내지 제4 비트 라인들(BLa~BLd)을 선택적으로 프리차지하는 방식으로 수행될 수 있다. 도 7의 예에서, 1의 값을 갖는 승수 배열 비트들에 상응하는 비트 라인들(BLa, BLd)은 인에이블되는 프리차지 회로들(PCCa, PCCd)에 의해 0의 값에 상응하는 초기화 전압(Vo)에서 1의 값에 상응하는 프리차지 전압(VPC)으로 프리차지한다. 한편, 0의 값을 갖는 승수 배열 비트들에 상응하는 비트 라인들(BLb, BLc)은 상응하는 프리차지 회로들(PCCa, PCCd)이 디스에이블되어 초기화 전압(Vo)을 유지한다.
이와 같이, 제1 내지 제4 비트 라인들(BLa~BLd)을 선택적으로 프리차지한 상태에서 제1 내지 제4 메모리 셀들(MCa~MCd)에 대한 센싱 동작을 수행한다. 1의 값을 갖는 제1 메모리 셀(MCa)은 오프 셀이 되어 제1 비트 라인(BLa)의 프리차지 전압(VPC)이 유지되고 제1 독출-기입 단위 회로(RWUa)의 저장 값은 1을 유지한다. 0의 값을 갖는 제4 메모리 셀(MCd)은 온 셀이 되어 제4 비트 라인(BLd)의 프리차지 전압(VPC)이 초기화 전압(Vo)으로 하강하고 제4 독출-기입 단위 회로(RWUd)의 저장 값은 1에서 0으로 갱신된다. 제2 및 제3 독출-기입 단위 회로들(RWUb, RWUc)에 저장된 0의 값은 제2 및 제3 메모리 셀들(MCb, MCc)의 온 셀 또는 오프 셀에 관계 없이 유지된다.
결과적으로 선택 독출 동작(SRO)이 완료된 후, 독출-기입 단위 회로들(RWUa~RWUd)에 저장되어 있던 승수 배열 비트들은 메모리 셀들에 저장된 피승수 배열 비트들 및 승수 배열 비트들을 비트 단위로 곱한 곱셈 비트들로 갱신된다.
도 8을 참조하면, 제1 내지 제4 스위치 회로들(SWa~SWd)은 제1 내지 제4 비트 라인들(BLa~BLd) 및 제1 내지 제4 독출-기입 단위 회로들(RWUa~RWUd)의 전기적인 연결을 제어하기 위해 구비된다.
일 실시예에서, 도 8에 도시된 바와 같이, 선택 독출 동작(SRO)은 제1 내지 제4 독출-기입 단위 회로들(RWUa~RWUd)에 저장된 승수 배열 비트들의 각각에 기초하여 제1 내지 제4 독출-기입 단위 회로들(RWUa~RWUd) 및 제1 내지 제4 비트 라인들(BLa~BLd)을 선택적으로 연결하는 방식으로 수행될 수 있다. 도 8의 예에서, 1의 값을 갖는 승수 배열 비트들에 상응하는 비트 라인들(BLa, BLd)은 턴온되는 스위치 회로들(SWa, SWd)에 의해 독출-기입 단위 회로들(RWUa, RWUd)에 전기적으로 연결된다. 한편, 0의 값을 갖는 승수 배열 비트들에 상응하는 비트 라인들(BLb, BLc)은 턴오프되는 스위치 회로들(SWa, SWd)에 의해 상응하는 독출-기입 단위 회로들(RWUb, RWUc)과 전기적으로 차단된다.
이와 같이, 제1 내지 제4 독출-기입 단위 회로들(RWUa~RWUd) 및 제1 내지 제4 비트 라인들(BLa~BLd)을 선택적으로 연결한 상태에서 제1 내지 제4 메모리 셀들(MCa~MCd)에 대한 센싱 동작을 수행한다. 1의 값을 갖는 제1 메모리 셀(MCa)에 연결된 제1 독출-기입 단위 회로(RWUa)의 저장 값은 1을 유지한다. 0의 값을 갖는 제4 메모리 셀(MCd)에 연결된 제4 독출-기입 단위 회로(RWUd)의 저장 값은 1에서 0으로 갱신된다. 제2 및 제3 독출-기입 단위 회로들(RWUb, RWUc)에 저장된 0의 값은 제2 및 제3 메모리 셀들(MCb, MCc)의 저장 값에 관계 없이 유지된다.
결과적으로 선택 독출 동작(SRO)이 완료된 후, 독출-기입 단위 회로들(RWUa~RWUd)에 저장되어 있던 승수 배열 비트들은 메모리 셀들에 저장된 피승수 배열 비트들 및 승수 배열 비트들을 비트 단위로 곱한 곱셈 비트들로 갱신된다.
도 9 및 10은 본 발명의 실시예들에 따른 메모리 장치에 포함되는 가중 덧셈기의 일 실시예를 나타내는 도면들이다.
도 9를 참조하면, 가중 덧셈기(WAD)는 전술한 중간 곱셈 값들((AB)i)(i는 0이상의 정수)을 순차적으로 수신하고, 중간 곱셈 값들((AB)i)에 상응하는 비트 가중치들(2i)을 각각 곱한 가중 중간 곱셈 값들((AB)i*2i) 을 순차적으로 합산하여 곱셈 값(VA*VB)을 계산한다.
도 10을 참조하면, 가중 덧셈기(540)는 덧셈기(541)와 버퍼(542)를 포함하여 구현될 수 있다. 덧셈기(541)는 순차적으로 수신되는 중간 곱셈 값들((AB)i)에 대한 가중 덧셈을 수행한다. 전술한 비트 가중치(2i)의 곱셈은 쉬프트 신호(SFT)에 따른 쉬프트 동작으로 대체될 수 있다. 가중 덧셈기(540)는 리셋 신호(RST)에 응답하여 초기화될 수 있고, 출력 제어 신호(OUTEN)에 응답하여 연산 결과 데이터(VA*VB)를 출력할 수 있다. 이러한 적어도 하나의 가중 덧셈기(540)를 이용하여 후술하는 바와 같은 곱셈 비트들에 기초한 연산을 효율적으로 수행할 수 있다.
이하, 설명 및 도시의 편의를 위하여 도 11 내지 18을 참조하여 피승수 값이 4개의 피승수 비트들을 포함하고 승수 값이 8개의 승수 비트들을 포함하는 실시예들을 설명하지만, 본원 발명의 실시예들은 이러한 비트들의 특정한 개수에 한정되지 않는다. 도 11 내지 18에서, 피승수 값은 1001(2진수)=9(10진수)에 해당하고 승수 값은 10010011(2진수) =147(10진수)에 해당한다.
도 11은 본 발명의 일 실시예에 따른 데이터의 재배열 방법을 나타내는 도면이고, 도 12는 도 11의 재배열 데이터에 대한 선택 독출 방법에 따른 곱셈 비트들을 나타내는 도면이고, 도 13은 도 12의 곱셈 비트들에 기초한 가중 덧셈 방법의 일 실시예를 나타내는 도면이다.
도 11 내지 13은 도 2 및 3의 복제 및 배열 방법에 상응하는 경우를 나타낸다. 도 11에 도시된 바와 같이, 제1 내지 제32 비트 라인들(BL0~BL31)에 상응하는 32개의 메모리 셀들(MC0~MC31)에 제1 복제 배열 방식(SCH1)에 따른 32개의 피승수 배열 비트들이 저장된다. 이후, 제1 내지 제32 비트 라인들(BL0~BL31)에 상응하는 32개의 독출-기입 단위 회로들(RWU0~RWU31)에 제2 복제 배열 방식(SCH2)에 따른 32개의 승수 배열 비트들이 저장된다.
도 12를 참조하면, 전술한 선택 독출 동작(SRO)의 수행에 의해, 32개의 독출-기입 단위 회로들(RWU0~RWU31)에 저장된 32개의 승수 배열 비트들이 32개의 곱셈 비트들(A0*B0~A3*B7)로 갱신된다. 32개의 곱셈 비트들(A0*B0~A3*B7)은 4개의 피승수 비트들(A0~A3)에 상응하는 4개의 비트 그룹들(GR0~GR3)로 그룹화될 수 있다. 4개의 비트 그룹들(GR0~GR3)에 상응하는 4개의 중간 곱셈 값들((AB)0~(AB)3 또는 A0*B~A3*B)은 전술한 수학식 2와 같이 표현될 수 있다.
도 13을 참조하면, 전술한 가중 덧셈기(WAD)는 시점들(T0~T3)에서 4개의 중간 곱셈 값들(A0*B~A3*B)을 순차적으로 수신하여 가중 덧셈들을 순차적으로 수행한다. 도 13에 도시된 바와 같이, 비트 가중치(2i)의 곱셈은 가중 덧셈기(WAD)에 저장된 값을 1자리씩 쉬프트하는 방식으로 수행될 수 있다. 즉, 도 13에 도시된 바와 같이 다음에 수신되는 중간 곱셈 값의 합산을 수행하기 전에 20 자리가 왼쪽으로 하나씩 쉬프트된다.
이와 같이 4개의 중간 곱셈 값들(A0*B~A3*B)의 가중 덧셈이 완료된 시점(T4)에서 가중 덧셈기(WAD)의 저장 값은 피승수 값(VA) 및 승수 값(VB)의 곱셈 값(VA*VB)에 해당하는 9*147(10진수) =1323(10진수) =10100101011(이진수)가 된다.
도 14는 본 발명의 일 실시예에 따른 재배열 데이터에 대한 선택 독출 방법에 따른 곱셈 비트들을 나타내는 도면이고, 도 15는 도 14의 곱셈 비트들에 기초한 가중 덧셈 방법의 일 실시예를 나타내는 도면이다.
도 12의 경우에는 32개의 독출-기입 단위 회로들(RWU0~RWU31)에 곱셈 비트들(A0*B0~A3*B7)이 오름차순으로 저장된 반면에, 도 14의 경우에는 32개의 독출-기입 단위 회로들(RWU0~RWU31)에 곱셈 비트들(A0*B0~A3*B7)이 내림차순으로 저장되어 있다. 도 14의 곱셈 비트들(A0*B0~A3*B7)의 배열은 피승수 배열 비트들 및 승수 배열 비트들을 내림차순으로 배열한 경우에 해당한다.
도 15를 참조하면, 전술한 가중 덧셈기(WAD)는 시점들(T0~T3)에서 4개의 중간 곱셈 값들(A0*B~A3*B)을 순차적으로 수신하여 가중 덧셈들을 순차적으로 수행한다. 도 13의 경우에는 A0*B부터 오름차순으로 4개의 중간 곱셈 값들(A0*B~A3*B)이 수신되었으나, 도 15의 경우에는 A3*B부터 내림차순으로 4개의 중간 곱셈 값들(A0*B~A3*B)이 수신된다. 도 15에 도시된 바와 같이, 비트 가중치(2i)의 곱셈은 가중 덧셈기(WAD)에 저장된 값을 1자리씩 쉬프트하는 방식으로 수행될 수 있다. 즉, 도 15에 도시된 바와 같이 다음에 수신되는 중간 곱셈 값의 합산을 수행하기 전에 가중 덧셈기(WAD)에 저장된 값이 왼쪽으로 하나씩 쉬프트된다. 도 15의 경우에는 20 자리가 고정되고 쉬프트되지 않는다.
이와 같이 4개의 중간 곱셈 값들(A0*B~A3*B)의 가중 덧셈이 완료된 시점(T4)에서 가중 덧셈기(WAD)의 저장 값은 피승수 값(VA) 및 승수 값(VB)의 곱셈 값(VA*VB)에 해당하는 9*147(10진수) =1323(10진수) =10100101011(이진수)가 된다.
도 16은 본 발명의 일 실시예에 따른 데이터의 재배열 방법을 나타내는 도면이고, 도 17은 도 16의 재배열 데이터에 대한 선택 독출 방법에 따른 곱셈 비트들을 나타내는 도면이고, 도 18은 도 17의 곱셈 비트들에 기초한 가중 덧셈 방법의 일 실시예를 나타내는 도면이다.
도 16 내지 18은 도 4 및 5의 복제 및 배열 방법에 상응하는 경우를 나타낸다. 도 16에 도시된 바와 같이, 제1 내지 제32 비트 라인들(BL0~BL31)에 상응하는 32개의 메모리 셀들(MC0~MC31)에 제2 복제 배열 방식(SCH2)에 따른 32개의 피승수 배열 비트들이 저장된다. 이후, 제1 내지 제32 비트 라인들(BL0~BL31)에 상응하는 32개의 독출-기입 단위 회로들(RWU0~RWU31)에 제1 복제 배열 방식(SCH1)에 따른 32개의 승수 배열 비트들이 저장된다.
도 17을 참조하면, 전술한 선택 독출 동작(SRO)의 수행에 의해, 32개의 독출-기입 단위 회로들(RWU0~RWU31)에 저장된 32개의 승수 배열 비트들이 32개의 곱셈 비트들(A0*B0~A3*B7)로 갱신된다. 32개의 곱셈 비트들(A0*B0~A3*B7)은 8개의 승수 비트들(B0~B7)에 상응하는 8개의 비트 그룹들(GR0~GR7)로 그룹화될 수 있다. 8개의 비트 그룹들(GR0~GR7)에 상응하는 8개의 중간 곱셈 값들((AB)0~(AB)7 또는 A*B0~A*B7)은 전술한 수학식 4와 같이 표현될 수 있다.
도 18을 참조하면, 전술한 가중 덧셈기(WAD)는 시점들(T0~T7)에서 8개의 중간 곱셈 값들(A*B0~A*B7)을 순차적으로 수신하여 가중 덧셈들을 순차적으로 수행한다. 도 18에 도시된 바와 같이, 비트 가중치(2i)의 곱셈은 가중 덧셈기(WAD)에 저장된 값을 1자리씩 쉬프트하는 방식으로 수행될 수 있다. 즉, 도 18에 도시된 바와 같이 다음에 수신되는 중간 곱셈 값의 합산을 수행하기 전에 20 자리가 왼쪽으로 하나씩 쉬프트된다.
이와 같이 8개의 중간 곱셈 값들(A*B0~A*B7)의 가중 덧셈이 완료된 시점(T8)에서 가중 덧셈기(WAD)의 저장 값은 피승수 값(VA) 및 승수 값(VB)의 곱셈 값(VA*VB)에 해당하는 9*147(10진수) =1323(10진수) =10100101011(이진수)가 된다.
도 19a 내지 19e는 본 발명의 실시예들에 따른 데이터의 재배열 방법들을 나타내는 도면들이다.
도 11, 12, 14 및 16의 데이터의 재배열 방법들을 통하여 본 발명의 계산 방법들을 설명하였으나, 이에 한정되는 것은 아니며. 도 19a 내지 19e에 도시된 바와 같은 다양한 데이터의 재배열 방법들을 이용하여 본 발명의 계산 방법들이 수행될 수도 있다.
도 19a는 피승수 배열 비트들(ARRA)을 제1 복제 배열 방식(SCH1)에 의해 내림차순으로 배열하고 승수 배열 비트들(ARRB)을 제2 복제 배열 방식(SCH2)에 의해 오름차순으로 배열한 실시예를 나타낸다.
도 19b는 피승수 배열 비트들(ARRA)을 제1 복제 배열 방식(SCH1)에 의해 오름차순으로 배열하고 승수 배열 비트들(ARRB)을 제2 복제 배열 방식(SCH2)에 의해 내림차순으로 배열한 실시예를 나타낸다.
도 19c는 피승수 배열 비트들(ARRA)을 제2 복제 배열 방식(SCH2)에 의해 내림차순으로 배열하고 승수 배열 비트들(ARRB)을 제1 복제 배열 방식(SCH1)에 의해 오름차순으로 배열한 실시예를 나타낸다.
도 19d는 피승수 배열 비트들(ARRA)을 제2 복제 배열 방식(SCH2)에 의해 오름차순으로 배열하고 승수 배열 비트들(ARRB)을 제1 복제 배열 방식(SCH1)에 의해 내림차순으로 배열한 실시예를 나타낸다.
도 19e는 피승수 배열 비트들(ARRA)을 제2 복제 배열 방식(SCH2)에 의해 내림차순으로 배열하고 승수 배열 비트들(ARRB)을 제1 복제 배열 방식(SCH1)에 의해 내림차순으로 배열한 실시예를 나타낸다.
도 20은 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 20을 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(20) 및 적어도 하나의 메모리 장치(30)를 포함할 수 있다.
도 20에 도시된 메모리 장치(30)는 비휘발성 메모리 장치일 수 있고, 메모리 시스템(10)은 메모리 카드, USB 메모리, SSD 등과 같은 플래시 메모리를 기반으로 하는 데이터 저장 매체를 포함할 수 있다.
비휘발성 메모리 장치(30)는 메모리 컨트롤러(20)의 제어에 따라 소거, 기입 또는 독출 동작 등을 수행할 수 있다. 이를 위하여, 비휘발성 메모리 장치(30)는 입출력 라인을 통해 메모리 컨트롤러(20)로부터 커맨드(CMD), 어드레스(ADDR)를 수신하고, 메모리 컨트롤러(20)와 프로그램 동작 또는 독출 동작을 위한 데이터(DATA)를 송수신한다. 또한, 비휘발성 메모리 장치(30)는 제어 라인을 통하여 제어 신호(CTRL)를 수신할 수 있고, 비휘발성 메모리 장치(30)는 메모리 컨트롤러(20)로부터 파워(PWR)를 제공받을 수 있다.
비휘발성 메모리 장치(30)는 도 1 내지 18을 참조하여 설명한 바와 같은 스칼라 곱셈 방법 및 후술하는 행렬 곱셈 방법을 수행하기 위한 독출-기입 회로(RWC)(40), 데이터 복제부(DCAC)(50) 및 계산부(CAL)(60)를 포함할 수 있다.
도 21은 본 발명의 실시예들에 따른 비휘발성 메모리 장치를 나타내는 블록도이다.
도 21을 참조하면, 비휘발성 메모리 장치(30)는 메모리 셀 어레이(100), 어드레스 디코더(430), 페이지 버퍼 회로(410), 데이터 입출력 회로(420), 제어 회로(450) 및 전압 생성기(460)를 포함할 수 있다.
메모리 셀 어레이(100)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인(GSL)을 통해 어드레스 디코더(430)와 연결될 수 있다. 또한, 메모리 셀 어레이(100)는 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(410)와 연결될 수 있다.
메모리 셀 어레이(100)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결되는 복수의 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 메모리 셀 어레이(100)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(100)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 수직 메모리 낸드 스트링들을 포함할 수 있다.
제어 회로(450)는 메모리 컨트롤러(20)로부터 커맨드 신호(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드 신호(CMD) 및 어드레스 신호(ADDR)에 기초하여 비휘발성 메모리 장치(10)의 소거 루프, 프로그램 루프 및 독출 동작을 제어할 수 있다. 여기서 프로그램 루프는 프로그램 동작과 프로그램 검증 동작을 포함할 수 있고, 소거 루프는 소거 동작과 소거 검증 동작을 포함할 수 있다. 여기서 독출 동작은 노멀 독출 동작과 데이터 리커버리 독출 동작을 포함할 수 있다.
예를 들어, 제어 회로(450)는 커맨드 신호(CMD)에 기초하여 전압 생성기(460)를 제어하기 위한 제어 신호들(CTL) 및 페이지 버퍼 회로(410)를 제어하기 위한 제어 신호들(PBC)을 생성하고, 어드레스 신호(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 생성할 수 있다. 제어 회로(450)는 로우 어드레스(R_ADDR)를 어드레스 디코더(430)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(420)에 제공할 수 있다.
어드레스 디코더(430)는 복수의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(100)와 연결될 수 있다.
프로그램 동작 또는 독출 동작시, 어드레스 디코더(430)는 제어 회로(450)로부터 제공되는 로우 어드레스(R_ADDR)에 기초하여 복수의 워드 라인들(WL) 중의 하나를 선택 워드 라인으로 결정하고, 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
또한, 프로그램 동작 또는 독출 동작시, 어드레스 디코더(430)는 제어 회로(450)로부터 제공되는 로우 어드레스(R_ADDR)에 기초하여 복수의 스트링 선택 라인들(SSL) 중의 하나를 선택 스트링 선택 라인으로 결정하고, 나머지 스트링 선택 라인들을 비선택 스트링 선택 라인들로 결정할 수 있다.
전압 생성기(460)는 제어 회로(450)로부터 제공되는 제어 신호들(CTL)에 기초하여 비휘발성 메모리 장치(30)의 동작에 필요한 워드 라인 전압들(VWL)을 생성할 수 있다. 전압 생성기(460)로부터 생성되는 워드 라인 전압들(VWL)은 어드레스 디코더(430)를 통해 복수의 워드 라인들(WL)에 구동 전압들로서 인가될 수 있다.
페이지 버퍼 회로(410)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(100)와 연결될 수 있다. 페이지 버퍼 회로(410)는 복수의 페이지 버퍼를 포함할 수 있다. 일 실시예에 있어서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에 있어서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다.
페이지 버퍼 회로(410)는 프로그램 동작시 선택된 페이지에 프로그램될 데이터 또는 기입 데이터를 임시로 저장하고, 독출 동작시 선택된 페이지로부터 독출된 데이터를 임시로 저장할 수 있다.
데이터 입출력 회로(420)는 데이터 라인들(DL)을 통해 페이지 버퍼 회로(410)와 연결될 수 있다. 프로그램 동작시, 데이터 입출력 회로(420)는 메모리 컨트롤러(20)로부터 프로그램 데이터(DATA)를 수신하고, 제어 회로(450)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 프로그램 데이터(DATA)를 페이지 버퍼 회로(410)에 제공할 수 있다. 독출 동작시, 데이터 입출력 회로(420)는 제어 회로(450)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 페이지 버퍼 회로(410)에 저장된 독출 데이터(DATA)를 상기 메모리 컨트롤러(20)에 제공할 수 있다. 페이지 버퍼 회로(410)와 입출력 회로(420)는 제어 회로(450)에 의하여 제어될 수 있다.
비휘발성 메모리 장치(30)는 페이지 버퍼 회로(420)를 이용하여 곱셈 동작을 수행하기 위한 데이터 복제-배열 회로(DCAC)(50) 및 계산부(CAL)(60)를 포함할 수 있다. 전술한 독출-기입 회로는 페이지 버퍼 회로(410)에 상응하고, 독출-기입 회로에 포함되는 복수의 독출-기입 단위 회로들은 상기 페이지 버퍼에 포함되는 복수의 페이지 버퍼들에 상응할 수 있다. 데이터 복제-배열 회로(50) 및 계산부(60)는 데이터 입출력 회로(420)에 포함될 수도 있고, 데이터 입출력 회로(420)와 구별되는 별개의 구성으로 구현될 수도 있다.
데이터 복제부(50)는 피승수 행렬에 포함되는 피승수 값들의 복수의 피승수 비트들을 복제하여 배열한 복수의 피승수 배열 비트들 및 승수 행렬에 포함되는 승수 값들의 복수의 승수 비트들을 복제하여 배열한 복수의 승수 배열 비트들을 발생한다.
페이지 버퍼 회로(410)에 포함되는 복수의 페이지 버퍼들은 상기 복수의 비트 라인들에 각각 연결되고 상기 복수의 승수 배열 비트들을 저장하고 상기 저장된 복수의 승수 배열 비트들에 기초하여 상기 복수의 메모리 셀들로부터 선택적으로 독출되는 상기 복수의 피승수 배열 비트들을 수신하여 상기 복수의 피승수 비트들 및 상기 복수의 승수 비트들을 비트 단위로 곱한 복수의 곱셈 비트들을 저장한다.
계산부(60)는 상기 복수의 페이지 버퍼들에 저장된 상기 복수의 곱셈 비트들에 기초하여 상기 피승수 행렬 및 상기 승수 행렬을 곱한 곱셈 행렬의 성분 값들을 계산한다.
도 22a는 도 21의 메모리 셀 어레이를 나타내는 블록도이다.
도 22a에 도시된 바와 같이, 메모리 셀 어레이(100)는 복수의 메모리 블록들(BLK1~BLKz)을 포함할 수 있다. 메모리 블록들(BLK1~BLKz)은 어드레스 디코더(430)에 의해 선택된다. 예를 들면, 어드레스 디코더(430)는 메모리 블록들(BLK1~BLKz) 중 블록 어드레스에 대응하는 메모리 블록을 선택할 수 있다.
도 22b는 도 22a의 메모리 블록의 등가 회로를 나타내는 회로도이다.
전술한 메모리 셀 어레이는 복수의 메모리 블록들을 포함할 수 있다. 도 22b에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 방향(D1)으로 형성될 수 있다.
도 22b를 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 셀 스트링들, 즉 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 22b에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, GTL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 도 22에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
도 23은 본 발명의 실시예들에 따른 메모리 장치를 이용한 인공 신경망 시스템에 의해 구동되는 딥 러닝 신경망 구조의 예를 설명하기 위한 도면이다.
도 23을 참조하면, 일반적인 신경망의 네트워크 구조는 입력 레이어(IL), 복수의 히든 레이어들(HL1, HL2, ..., HLn) 및 출력 레이어(OL)를 포함할 수 있다.
입력 레이어(IL)는 i(i는 자연수)개의 입력 노드들(x1, x2, ..., xi)을 포함할 수 있고, 길이가 i인 벡터 입력 데이터(IDAT)가 각 입력 노드에 입력될 수 있다.
복수의 히든 레이어들(HL1, HL2, ..., HLn)은 n(n은 자연수)개의 히든 레이어들을 포함하며, 히든 노드들(h11, h12, h13, ..., h1m, h21, h22, h23, ..., h2m, hn1, hn2, hn3, ..., hnm)을 포함할 수 있다. 예를 들어, 히든 레이어(HL1)는 m(m은 자연수)개의 히든 노드들(h11, h12, h13, ..., h1m)을 포함할 수 있고, 히든 레이어(HL2)는 m개의 히든 노드들(h21, h22, h23, ..., h2m)을 포함할 수 있으며, 히든 레이어(HLn)는 m개의 히든 노드들(hn1, hn2, hn3, ..., hnm)을 포함할 수 있다.
출력 레이어(OL)는 분류할 클래스에 대응하는 j(j는 자연수)개의 출력 노드들(y1, y2, ..., yj)을 포함할 수 있고, 입력 데이터(IDAT)에 대하여 각 클래스 별로 결과(예를 들어, 점수 또는 class score)를 출력할 수 있다. 출력 레이어(OL)는 fully connected 레이어라고 부를 수 있으며, 예를 들어 입력 데이터(IDAT)가 자동차에 대응할 확률을 수치로 나타낼 수 있다.
도 23에 도시된 네트워크 구조는, 두 개의 노드들 사이에 직선으로 도시된 노드들 간의 연결(branch)과, 도시되지는 않았지만 각 연결에서 사용되는 가중치(weight) 값들을 포함할 수 있다. 이 때, 하나의 레이어 내의 노드들 간에는 연결이 되지 않을 수 있고, 서로 다른 레이어들에 포함되는 노드들은 완전하게 혹은 부분적으로 연결될 수 있다.
도 23의 각 노드(예를 들어, h11)(이하, 노드 hij를 편의상 hij로 표현한다) 는 이전 노드(예를 들어, x1)의 출력을 입력 받아 연산할 수 있고, 연산 결과를 이후 노드(예를 들어, h21)에 출력할 수 있다. 이 때, 각 노드는 입력된 값을 특정 함수, 예를 들어 비선형 함수에 적용하여 출력할 값을 연산할 수 있다.
일반적으로 신경망의 네트워크 구조는 미리 결정되어 있으며, 노드들 간의 연결에 따른 가중치들은 이미 어떤 클래스에 속할지 정답이 알려진 데이터를 이용하여 적절한 값을 산정할 수 있다. 이와 같이 이미 정답이 알려진 데이터들을 '학습 데이터'라고 하고, 가중치를 결정하는 과정을 '학습'이라고 할 수 있다. 또한, 독립적으로 학습이 가능한 구조와 가중치의 묶음을 '모델'이라고 가정하고, 가중치가 결정된 모델이 입력 데이터가 어느 클래스에 속할지를 예측하여 그 예측값을 출력하는 것을 '테스트' 과정이라고 한다.
한편, 도 23에 도시된 일반적인 신경망은 각 노드(예를 들어, h11)가 앞쪽 레이어(previous layer)(예를 들어, IL)의 모든 노드들(예를 들어, x1, x2, ..., xi)과 연결되어 있어, 입력 데이터(IDAT)가 영상(또는 음성)인 경우에 영상의 크기가 증가할수록 필요한 가중치의 개수가 기하급수적으로 증가하며, 따라서 영상을 다루기에 적절하지 않을 수 있다. 이에 따라, 신경망에 필터 기술을 병합하여, 신경망이 2차원 영상을 잘 습득할 수 있도록 구현된 컨볼루션(convolutional) 신경망이 연구되고 있다.
이와 같이 딥 러닝 인공 신경망은 복수의 레이어들을 포함할 수 있고, 복수의 레이어들의 각각에 대하여 행렬 곱셈 또는 행렬-벡터 곱셈이 요구된다.
도 24는 행렬 곱셈의 일 예를 나타내는 도면이다.
도 24에 도시된 바와 같이, p행 r열의 피승수 행렬(MW)에 포함되는 (i, k) 피승수 값(Wik) 및 r행 q열의 승수 행렬(MX)에 포함되는 (k, j) 승수 값(Xkj)을 곱하여, 모든 i, k 및 j (i는 1부터 p까지의 자연수, k는 1부터 r까지의 자연수, j는 1부터 q까지의 자연수)에 대한 p*r*q개의 (i, k, j) 곱셈 값들(WikXkj)을 계산한다.
모든 k에 대한 r개의 (i, k, j) 곱셈 값들(WikXkj)을 합산하여, p행 r열의 피승수 행렬(MW) 및 r행 q열의 승수 행렬(MX)을 곱한 p행 q열의 곱셈 행렬(MY)에 포함되는 모든 i 및 j에 대한 p*q개의 (i, j) 성분 값들(Yij)을 계산한다.
p*r*q개의 (i, k, j) 곱셈 값들의 계산은 스칼라 곱셈에 해당하고, 따라서, 각각의 곱셈 값은 도 1 내지 18을 참조하여 설명한 방법에 의해 수행될 수 있다.
도 25는 본 발명의 실시예들에 따른 메모리 장치를 이용한 행렬 곱셈 방법을 나타내는 순서도이고, 도 26 및 27은 본 발명의 실시예들에 따른 메모리 장치를 이용한 행렬 곱셈 방법을 위한 코맨드 세트의 실시예들을 나타내는 도면들이다.
복수의 비트 라인들에 각각 연결된 복수의 독출-기입 단위 회로들을 이용하여 상기 복수의 비트 라인들에 각각 연결된 복수의 메모리 셀들에 대한 독출 동작 및 기입 동작을 수행하는 메모리 장치를 이용하여 도 24에 도시된 바와 같은 행렬 곱셈을 수행할 수 있다.
도 24 및 25를 참조하면, 피승수 행렬(MW)의 피승수 값들(W11~Wpr)을 메모리 장치의 메모리 셀들에 저장한다(S10). 이후 승수 행렬(MX)의 승수 값들(X11~Xrq)을 독출-기입 회로에 저장한다(S20). 전술한 바와 같이, 피승수 값들(W11~Wpr) 및 승수 값들(X11~Xrq)의 각각은 피승수 배열 비트들 및 승수 배열 비트들로 복제되고 배열된 상태로 저장될 수 있다.
피승수 행렬(MW)에 포함되는 피승수 값들(W11~Wpr)은 도 23을 참조하여 전술한 인공 신경망의 MAC 연산의 가중치들에 해당하고, 승수 행렬(MX)에 포함되는 승수 값들(X11~Xrq)은 상기 MAC 연산의 입력 값들에 해당할 수 있다.
도 26 및 27에는 본 발명의 실시예들에 따른 행렬 곱셈을 위한 피승수 데이터(DW) 및 승수 데이터(DX)를 전송하기 위해 메모리 콘트롤러로부터 메모리 장치로 제공되는 코맨드 세트들의 일 예가 도시되어 있다. R/B는 메모리 장치로부터 메모리 콘트롤러로 제공되는 레디/비지 신호이고, DQ는 입출력 패드들 또는 입출력 패드 상의 전송 신호를 나타낸다. 코맨드 세트들은 코맨드들(CMD1~CMD4), 어드레스들(ADD) 및 전송 데이터(DW, DX)의 조합으로 구성될 수 있다. tDCA는 전술한 데이터 복제 및 배열에 소요되는 시간을 나타내고, tPROG은 데이터를 메모리 셀들에 저장하는 시간을 나타내고, tR은 데이터 독출 시간을 나타내고, tCAL은 가중 덧셈기들에 의한 가중 덧셈 시간 및 누적기에 의한 누적 시간을 나타낸다. 본 발명의 실시예들에 따라서, 도 26의 코맨트 세트에 의해서 기입 어드레스에 피승수 데이터가 저장되고, 이후 도 27의 코맨드 세트에 의해서 승수 데이터가 타겟 어드레스에 상응하는 페이지 버퍼들에 저장된다. 행렬 곱셈이 완료된 후에는 행렬 곱셈의 결과 데이터(DY)가 메모리 장치로부터 메모리 콘트롤러로 제공될 수 있다.
다시 도 24 및 25를 참조하면, 피승수 값들 및 승수 값들의 비트 단위 곱셈을 수행한다(S30). 상기 비트 단위 곱셈은 전술한 바와 같은 선택 독출 동작(SRO)에 의해 수행되고, 그 결과로서 곱셈 비트들이 상기 독출-기입 회로에 저장될 수 있다.
가중 덧셈을 수행하여 피승수 값 및 승수 값의 곱셈 값들을 계산한다(S40). 상기 곱셈 값들의 계산은 상기 독출-기입 회로에 저장된 곱셈 비트들을 비트 그룹 단위로 독출하여 전술한 바와 같은 가중 덧셈기들을 이용하여 수행될 수 있다.
곱셈 값들을 합산하여 곱셈 행렬의 성분 값들을 제공한다(S50). 곱셈 값들의 합산은, 도 28 및 29를 참조하여 후술하는 누적기들을 이용하여 수행될 수 있다.
도 28 및 29는 본 발명의 실시예들에 따른 메모리 장치에 포함되는 계산부의 실시예들을 나타내는 도면들이다.
도 28 및 29에는 r개의 서브 페이지 버퍼 회로들(PBC1~PBCr)이 반복적으로 배열되어 있다. r개의 서브 페이지 버퍼 회로들(PBC1~PBCr)은 도 24의 행렬 곱셈의 결과인 곱셈 행렬(MY)의 하나의 성분 값(Yij)에 상응한다. 도 28 및 29에는 도시의 편의상 곱셈 행렬(XY)의 두 개의 성분 값들(Y11, Y21)에 상응하는 구성만이 도시되어 있다.
도 28을 참조하면, 계산부(61)는 복수의 가중 덧셈기들(WAD11, WAD12) 및 복수의 누적기들(ACC11, ACC21)을 포함한다.
p*r*q개의 (i, k, j) 곱셈 값들(WikXkj) 중 각각의 i 및 j 에 대한 r개의 (i, k, j) 곱셈 값들(WikXkj)은 메모리 장치에 내장되는 하나의 가중 덧셈기(WADij)를 이용하여 순차적으로 계산될 수 있다. 즉, r개의 곱셈 값들(V11X11~W1rXrq)은 가중 덧셈기(WAD11)를 이용하여 순차적으로 계산되고, r개의 곱셈 값들(V21X11~W2rXrq)은 가중 덧셈기(WAD21)를 이용하여 순차적으로 계산될 수 있다.
P*q개의 (i, j) 성분 값들(Y11~Ypq)은 메모리 장치에 내장되는 p*q개의 누적기들을 이용하여 병렬적으로 계산될 수 있다. 예를 들어, 도 28에 도시된 바와 같이, 2개의 성분 값들(Y11, Y21)은 2개의 누적기들(ACC11, ACC21)을 이용하여 병렬적으로 계산될 수 있다.
도 29를 참조하면, 계산부(62)는 복수의 가중 덧셈기들(WAD111~WAD1r1, WAD211~WAD2r1) 및 복수의 누적기들(ACC11, ACC21)을 포함한다.
상기 p*r*q개의 (i, k, j) 곱셈 값들(WikXkj) 중 각각의 i 및 j 에 대한 r개의 (i, k, j) 곱셈 값들(WikXkj)은 메모리 장치에 내장되는 r개의 덧셈기들(WADi1j~WADirj)을 이용하여 병렬적으로 계산될 수 있다. 즉, r개의 곱셈 값들(V11X11~W1rXrq)은 r개의 가중 덧셈기들(WAD111~WAD1r1)을 이용하여 순차적으로 계산되고, r개의 곱셈 값들(V21X11~W2rXrq)은 r개의 가중 덧셈기들(WAD211~2r1)을 이용하여 순차적으로 계산될 수 있다.
P*q개의 (i, j) 성분 값들(Y11~Ypq)은 메모리 장치에 내장되는 p*q개의 누적기들을 이용하여 병렬적으로 계산될 수 있다. 예를 들어, 도 29에 도시된 바와 같이, 2개의 성분 값들(Y11, Y21)은 2개의 누적기들(ACC11, ACC21)을 이용하여 병렬적으로 계산될 수 있다.
도 30은 본 발명의 실시예들에 따른 비휘발성 장치에 포함되는 페이지 버퍼 배치의 일 실시예 및 가중 덧셈 방법을 나타내는 도면이다.
도 30을 참조하면, 복수의 독출-기입 단위 회로들, 즉 페이지 버퍼들은 복수의 행들 및 복수의 열들로 이루어진 매트릭스의 형태로 배치될 수 있다. 도 30에는 피승수 값(W)이 8개의 비트들(W0~W8)을 포함하고 승수 값(X)이 8개의 비트들을 포함하는 경우에 하나의 곱셈 값(W*X)에 해당하는 64개의 페이지 버퍼들(PBij)(i 및 j는 각각 0부터 7까지의 정수)이 도시되어 있다.
도 30에 도시된 바와 같이, 상기 매트릭스의 동일한 열에 배치된 페이지 버퍼들은 계산부에 포함되는 가중 덧셈기(WAD)의 동일한 입력 단자와 연결될 수 있다. 즉 제1 열의 페이지 버퍼들(PB00~PB70)은 제1 입력 단자(N0)에 공통으로 연결되고, 제2 열의 페이지 버퍼들(PB01~PB71)은 제2 입력 단자(N1)에 공통으로 연결되고, 이와 같은 방식으로 제8 열의 페이지 버퍼들(PB07~PB77)은 제8 입력 단자(N7)에 공통으로 연결될 수 있다.
동일한 행에 속하는 8개의 페이지 버퍼들은 공통의 선택 신호에 의해 동시에 인에이블되어 저장된 값들을 가중 덧셈기(WAD)의 8개의 입력 단자들(N0~N7)로 동시에 제공할 수 있다. 즉, 제1 행의 페이지 버퍼들(PB00~PB07)은 제1 선택 신호(SEL0)에 응답하여 동시에 인에이블되고, 제2 행의 페이지 버퍼들(PB10~PB17)은 제2 선택 신호(SEL1)에 응답하여 동시에 인에이블되고, 이와 같은 방식으로 제8 행의 페이지 버퍼들(PB70~PB77)은 제8 선택 신호(SEL7)에 응답하여 동시에 인에이블될 수 있다.
이와 같은 와이어드 오어(Wired OR) 구조를 이용하여 전술한 가중 덧셈을 효율적으로 수행할 수 있다.
도 31은 본 발명의 실시예들에 따른 메모리 장치를 포함하는 모바일 시스템을 나타내는 블록도이다.
도 31을 참조하면, 모바일 시스템(3000)은 어플리케이션 프로세서(AP)(3100), 통신(Connectivity)부(3200), 휘발성 메모리 장치(VM)(3300), 비휘발성 메모리 장치(NVM)(3400), 사용자 인터페이스(3500) 및 파워 서플라이(3600)를 포함한다.
어플리케이션 프로세서(3100)는 인터넷 브라우저, 게임, 동영상 등을 제공하는 어플리케이션들을 실행할 수 있다. 통신부(3200)는 외부 장치와 무선 통신 또는 유선 통신을 수행할 수 있다. 휘발성 메모리 장치(3300)는 어플리케이션 프로세서(3100)에 의해 처리되는 데이터를 저장하거나, 동작 메모리(Working Memory)로서 작동할 수 있다. 예를 들어, 휘발성 메모리 장치(3300)는 DDR SDRAM, LPDDR SDRAM, GDDR SDRAM, RDRAM 등과 같은 동적 랜덤 액세스 메모리일 수 있다. 비휘발성 메모리 장치(3400)는 모바일 시스템(3000)을 부팅하기 위한 부트 이미지를 저장할 수 있다. 사용자 인터페이스(3500)는 키패드, 터치 스크린과 같은 하나 이상의 입력 장치, 및/또는 스피커, 디스플레이 장치와 같은 하나 이상의 출력 장치를 포함할 수 있다. 파워 서플라이(3600)는 모바일 시스템(3000)의 동작 전압을 공급할 수 있다. 또한, 실시예에 따라, 모바일 시스템(3000)은 카메라 이미지 프로세서(Camera Image Processor; CIS)를 더 포함할 수 있고, 메모리 카드(Memory Card), 솔리드 스테이트 드라이브(Solid State Drive; SSD), 하드 디스크 드라이브(Hard Disk Drive; HDD), 씨디롬(CD-ROM) 등과 같은 저장 장치를 더 포함할 수 있다.
비휘발성 메모리 장치(3400) 및/또는 휘발성 메모리 장치(3300)는 도 1 내지 도 30을 참조하여 전술한 바와 같은 곱셈 또는 행렬 곱셈을 수행하기 위한 구성을 가질 수 있다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치를 포함하는 메모리 시스템은 복수의 메모리 플레인들의 각각에 전속적으로 할당되는 복수의 플레인 전속 패드 세트들을 통하여 데이터 전송의 지연을 감소하고 병렬적인 데이터 전송을 지원함으로써 데이터 전송 대역폭을 증가시킬 수 있다.
또한, 본 발명의 실시예들에 따른 메모리 장치 및 상기 메모리 장치를 이용한 계산 방법은, 데이터의 효율적인 재배열 및 상기 독출-기입 회로를 이용하여 비트 단위의 곱셈을 병렬적으로 수행하고, 메모리 장치 내에서 덧셈 연산을 수행함으로써 데이터 프로세싱 시간 및 전력소모를 감소할 수 있다.
본 발명의 실시예들은 메모리 장치 및 이를 포함하는 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 복수의 비트 라인들에 각각 연결된 복수의 독출-기입 단위 회로들을 이용하여 상기 복수의 비트 라인들에 각각 연결된 복수의 메모리 셀들에 대한 독출 동작 및 기입 동작을 수행하는 메모리 장치를 이용한 계산 방법으로서,
    피승수 값의 m개의 피승수 비트들을 복제하여 배열한 m*n개의(m, n은 자연수) 피승수 배열 비트들을 m*n개의 메모리 셀들에 저장하는 단계;
    승수 값의 n개의 승수 비트들을 복제하여 배열한 m*n개의 승수 배열 비트들을 상기 m*n개의 메모리 셀들에 상응하는 m*n개의 독출-기입 단위 회로들에 저장하는 단계;
    상기 m*n개의 승수 배열 비트들에 기초하여 상기 m*n개의 메모리 셀들에 저장된 m*n개의 피승수 배열 비트들을 선택적으로 독출하여, 상기 m*n개의 독출-기입 단위 회로들에 상기 m*n개의 피승수 배열 비트들 및 상기 m*n개의 승수 배열 비트들을 비트 단위로 곱한 m*n개의 곱셈 비트들을 저장하는 단계; 및
    상기 m*n개의 독출-기입 유닛들에 저장된 상기 m*n개의 곱셈 비트들에 기초하여 상기 피승수 값 및 상기 승수 값의 곱셈 값을 계산하는 단계를 포함하는 메모리 장치를 이용한 계산 방법.
  2. 제1 항에 있어서,
    상기 m*n개의 독출-기입 단위 회로들에 상기 m*n개의 곱셈 비트들을 저장하는 단계는,
    1의 값을 갖는 승수 배열 비트들에 상응하는 피승수 배열 비트들을 메모리 셀들로부터 독출하여 상기 독출-기입 단위 회로들에 저장된 상기 1의 값을 갖는 승수 배열 비트들을 상기 독출된 피승수 배열 비트들로 대체하는 단계; 및
    0의 값을 갖는 승수 배열 비트들에 상응하는 피승수 배열 비트들에 관계없이 상기 독출-기입 단위 회로들에 저장된 상기 0의 값을 갖는 승수 배열 비트들 그대로 유지하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 이용한 계산 방법.
  3. 제1 항에 있어서,
    상기 m*n개의 독출-기입 단위 회로들에 상기 m*n개의 곱셈 비트들을 저장하는 단계는,
    상기 m*n개의 승수 배열 비트들의 각각에 기초하여 상기 m*n개의 비트 라인들을 선택적으로 프리차지하는 단계; 및
    상기 m*n개의 비트 라인들을 선택적으로 프리차지한 상태에서 상기 m*n개의 메모리 셀들에 대한 센싱 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 이용한 계산 방법.
  4. 제3 항에 있어서,
    상기 m*n개의 비트 라인들을 선택적으로 프리차지하는 단계는,
    1의 값을 갖는 승수 배열 비트들에 상응하는 비트 라인들을 0의 값에 상응하는 초기화 전압에서 1의 값에 상응하는 프리차지 전압으로 프리차지하는 단계; 및
    0의 값을 갖는 승수 배열 비트들에 상응하는 비트 라인들을 상기 초기화 전압으로 유지하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 이용한 계산 방법.
  5. 제1 항에 있어서,
    상기 m*n개의 독출-기입 단위 회로들에 상기 m*n개의 곱셈 비트들을 저장하는 단계는,
    상기 m*n개의 승수 배열 비트들의 각각에 기초하여 상기 m*n개의 독출-기입 단위 회로들 및 상기 m*n개의 비트 라인들을 선택적으로 연결하는 단계; 및
    상기 m*n개의 독출-기입 단위 회로들 및 상기 m*n개의 비트 라인들을 선택적으로 연결한 상태에서 상기 m*n개의 메모리 셀들에 대한 센싱 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 이용한 계산 방법.
  6. 제5 항에 있어서,
    상기 m*n개의 독출-기입 단위 회로들 및 상기 m*n개의 비트 라인들을 선택적으로 연결하는 단계는,
    1의 값을 갖는 승수 배열 비트들에 상응하는 비트 라인들을 상응하는 독출-기입 단위 회로들에 전기적으로 연결하는 단계; 및
    0의 값을 갖는 승수 배열 비트들에 상응하는 비트 라인들을 상응하는 독출-기입 단위 회로들과 전기적으로 차단하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 이용한 계산 방법.
  7. 제1 항에 있어서,
    상기 m*n개의 피승수 배열 비트들은 상기 m개의 피승수 비트들의 각각을 n개씩 인접하도록 순차적으로 배열하는 제1 복제 배열 방식에 의해 발생되고,
    상기 m*n개의 승수 배열 비트들은 상기 n개의 승수 비트들을 m번 반복적으로 배열하는 제2 복제 배열 방식에 의해 발생되는 것을 특징으로 하는 메모리 장치를 이용한 계산 방법.
  8. 제7 항에 있어서,
    상기 m*n개의 곱셈 비트들에 기초하여 상기 피승수 값 및 상기 승수 값의 곱셈 값을 계산하는 단계는,
    상기 m*n개의 독출-기입 단위 회로들에 저장된 상기 m*n개의 곱셈 비트들을 상기 m개의 피승수 비트들에 상응하는 m개의 비트 그룹들로 그룹화하는 단계;
    상기 m개의 비트 그룹들에 상응하는 m개의 중간 곱셈 값들을 순차적으로 독출하는 단계; 및
    상기 m개의 중간 곱셈 값들에 상기 m개의 피승수 비트들에 상응하는 m개의 비트 가중치들을 각각 곱한 m개의 가중 중간 곱셈 값들을 순차적으로 합산하여 상기 곱셈 값을 계산하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 이용한 계산 방법.
  9. 제1 항에 있어서,
    상기 m*n개의 승수 배열 비트들은 상기 n개의 승수 비트들의 각각을 m개씩 인접하도록 순차적으로 배열하는 제1 복제 배열 방식에 의해 발생되고,
    상기 m*n개의 피승수 배열 비트들은 상기 m개의 피승수 비트들을 n번 반복적으로 배열하는 제2 복제 배열 방식에 의해 발생되는 것을 특징으로 하는 메모리 장치를 이용한 계산 방법.
  10. 제9 항에 있어서,
    상기 m*n개의 곱셈 비트들에 기초하여 상기 피승수 값 및 상기 승수 값의 곱셈 값을 계산하는 단계는,
    상기 m*n개의 독출-기입 단위 회로들에 저장된 상기 m*n개의 곱셈 비트들을 상기 n개의 승수 비트들에 상응하는 n개의 비트 그룹들로 그룹화하는 단계;
    상기 n개의 비트 그룹들에 상응하는 n개의 중간 곱셈 값들을 순차적으로 독출하는 단계; 및
    상기 n개의 중간 곱셈 값들에 상기 n개의 피승수 비트들에 상응하는 n개의 비트 가중치들을 각각 곱한 n개의 가중 중간 곱셈 값들을 순차적으로 합산하여 상기 곱셈 값을 계산하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 이용한 계산 방법.
  11. 복수의 비트 라인들에 각각 연결된 복수의 독출-기입 단위 회로들을 이용하여 상기 복수의 비트 라인들에 각각 연결된 복수의 메모리 셀들에 대한 독출 동작 및 기입 동작을 수행하는 메모리 장치를 이용한 행렬 곱셈 방법으로서,
    p행 r열의 피승수 행렬에 포함되는 (i, k) 피승수 값 및 r행 q열의 승수 행렬에 포함되는 (k, j) 승수 값을 곱하여, 모든 i, k 및 j (i는 1부터 p까지의 자연수, k는 1부터 r까지의 자연수, j는 1부터 q까지의 자연수)에 대한 p*r*q개의 (i, k, j) 곱셈 값들을 계산하는 단계; 및
    모든 k에 대한 r개의 (i, k, j) 곱셈 값들을 합산하여, 상기 p행 r열의 피승수 행렬 및 상기 r행 q열의 승수 행렬을 곱한 p행 q열의 곱셈 행렬에 포함되는 모든 i 및 j에 대한 p*q개의 (i, j) 성분 값들을 계산하는 단계를 포함하고,
    상기 p*r*q개의 (i, k, j) 곱셈 값들의 각각을 계산하는 단계는,
    피승수 값의 m개의 피승수 비트들을 복제하여 배열한 m*n개의(m, n은 자연수) 피승수 배열 비트들을 m*n개의 메모리 셀들에 저장하는 단계;
    승수 값의 n개의 승수 비트들을 복제하여 배열한 m*n개의 승수 배열 비트들을 상기 m*n개의 메모리 셀들에 상응하는 m*n개의 독출-기입 단위 회로들에 저장하는 단계;
    상기 m*n개의 승수 배열 비트들에 기초하여 상기 m*n개의 메모리 셀들에 저장된 m*n개의 피승수 배열 비트들을 선택적으로 독출하여, 상기 m*n개의 독출-기입 단위 회로들에 상기 m*n개의 피승수 비트들 및 상기 m*n개의 승수 비트들을 비트 단위로 곱한 m*n개의 곱셈 비트들을 저장하는 단계; 및
    상기 m*n개의 독출-기입 유닛들에 저장된 상기 m*n개의 곱셈 비트들에 기초하여 상기 피승수 값 및 상기 승수 값의 곱셈 값을 계산하는 단계를 포함하는 메모리 장치를 이용한 행렬 곱셈 방법.
  12. 제11 항에 있어서,
    상기 p*r*q개의 (i, k, j) 곱셈 값들 중 각각의 i 및 j 에 대한 r개의 (i, k, j) 곱셈 값들은 상기 메모리 장치에 내장되는 하나의 가중 덧셈기를 이용하여 순차적으로 계산되는 것을 특징으로 하는 메모리 장치를 이용한 행렬 곱셈 방법.
  13. 제11 항에 있어서,
    상기 p*r*q개의 (i, k, j) 곱셈 값들 중 각각의 i 및 j 에 대한 r개의 (i, k, j) 곱셈 값들은 상기 메모리 장치에 내장되는 r개의 덧셈기들을 이용하여 병렬적으로 계산되는 것을 특징으로 하는 메모리 장치를 이용한 행렬 곱셈 방법.
  14. 제11 항에 있어서,
    상기 곱셈 행렬에 포함되는 상기 p*q개의 (i, j) 성분 값들은 상기 메모리 장치에 내장되는 p*q개의 누적기들을 이용하여 병렬적으로 계산되는 것을 특징으로 하는 메모리 장치를 이용한 행렬 곱셈 방법.
  15. 피승수 행렬에 포함되는 피승수 값들의 복수의 피승수 비트들을 복제하여 배열한 복수의 피승수 배열 비트들 및 승수 행렬에 포함되는 승수 값들의 복수의 승수 비트들을 복제하여 배열한 복수의 승수 배열 비트들을 발생하는 데이터 복제부;
    복수의 비트 라인들에 각각 연결되고 상기 복수의 피승수 배열 비트들을 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이;
    상기 복수의 비트 라인들에 각각 연결되고 상기 복수의 승수 배열 비트들을 저장하고 상기 저장된 복수의 승수 배열 비트들에 기초하여 상기 복수의 메모리 셀들로부터 선택적으로 독출되는 상기 복수의 피승수 배열 비트들을 수신하여 상기 복수의 피승수 비트들 및 상기 복수의 승수 비트들을 비트 단위로 곱한 복수의 곱셈 비트들을 저장하는 복수의 독출-기입 단위 회로들; 및
    상기 복수의 독출-기입 단위 회로들에 저장된 상기 복수의 곱셈 비트들에 기초하여 상기 피승수 행렬 및 상기 승수 행렬을 곱한 곱셈 행렬의 성분 값들을 계산하는 계산부를 포함하는 메모리 장치.
  16. 제15 항에 있어서,
    1의 값을 갖는 승수 배열 비트들에 상응하는 피승수 배열 비트들을 메모리 셀들로부터 독출하여 상기 독출-기입 단위 회로들에 저장된 상기 1의 값을 갖는 승수 배열 비트들을 상기 독출된 피승수 배열 비트들로 대체하고,
    0의 값을 갖는 승수 배열 비트들에 상응하는 피승수 배열 비트들에 관계없이 상기 독출-기입 단위 회로들에 저장된 상기 0의 값을 갖는 승수 배열 비트들 그대로 유지하는 것을 특징으로 하는 메모리 장치.
  17. 제16항에 있어서,
    상기 복수의 승수 배열 비트들의 각각에 기초하여 상기 복수의 비트 라인들을 선택적으로 프리차지하여 상기 복수의 메모리 셀들로부터 상기 복수의 피승수 배열 비트들을 선택적으로 독출하는 것을 특징으로 하는 메모리 장치.
  18. 제15 항에 있어서,
    상기 피승수 행렬에 포함되는 피승수 값들은 인공 신경망의 MAC 연산의 가중치들에 해당하고,
    상기 승수 행렬에 포함되는 승수 값들은 상기 MAC 연산의 입력 값들에 해당하는 것을 특징으로 하는 메모리 장치.
  19. 제15 항에 있어서,
    상기 복수의 독출-기입 단위 회로들은 복수의 행들 및 복수의 열들로 이루어진 매트릭스의 형태로 배치되고,
    상기 매트릭스의 동일한 열에 배치된 독출-기입 단위 회로들은 상기 계산부에 포함되는 가중 덧셈기의 동일한 입력 단자와 연결되는 것을 특징으로 하는 메모리 장치.
  20. 제15 항에 있어서,
    상기 메모리 장치는 낸드 플래시 메모리 장치에 해당하고,
    상기 복수의 독출-기입 단위 회로들은 상기 낸드 플래시 메모리 장치의 독출 동작 및 기입 동작을 위한 복수의 페이지 버퍼들에 해당하는 것을 특징으로 하는 메모리 장치.
KR1020180173364A 2018-12-31 2018-12-31 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치 KR20200082617A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180173364A KR20200082617A (ko) 2018-12-31 2018-12-31 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치
US16/549,968 US11113231B2 (en) 2018-12-31 2019-08-23 Method of processing in memory (PIM) using memory device and memory device performing the same
CN201910826041.9A CN111383692A (zh) 2018-12-31 2019-09-03 使用存储器装置的存储器中处理的方法及存储器装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180173364A KR20200082617A (ko) 2018-12-31 2018-12-31 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치

Publications (1)

Publication Number Publication Date
KR20200082617A true KR20200082617A (ko) 2020-07-08

Family

ID=71122841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180173364A KR20200082617A (ko) 2018-12-31 2018-12-31 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치

Country Status (3)

Country Link
US (1) US11113231B2 (ko)
KR (1) KR20200082617A (ko)
CN (1) CN111383692A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230020876A (ko) * 2021-08-04 2023-02-13 한국과학기술원 인 메모리 컴퓨팅을 통해 컨벌루션 뉴럴 네트워크 연산을 수행하는 방법

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110537259A (zh) 2019-06-28 2019-12-03 长江存储科技有限责任公司 三维存储器件中的存储器内计算
CN110476209B (zh) * 2019-06-28 2020-11-17 长江存储科技有限责任公司 三维存储器件中的存储器内计算
US11693657B2 (en) 2019-09-05 2023-07-04 Micron Technology, Inc. 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
US11829729B2 (en) * 2019-09-05 2023-11-28 Micron Technology, Inc. Spatiotemporal fused-multiply-add, and related systems, methods and devices
US11934824B2 (en) 2019-09-05 2024-03-19 Micron Technology, Inc. Methods for performing processing-in-memory operations, and related memory devices and systems
KR20210093127A (ko) * 2020-01-17 2021-07-27 에스케이하이닉스 주식회사 Aim 장치
US11537861B2 (en) 2020-06-23 2022-12-27 Micron Technology, Inc. Methods of performing processing-in-memory operations, and related devices and systems
CN112071343B (zh) * 2020-08-18 2022-09-13 安徽大学 一种在存储器中结合电容实现乘法的sram电路结构
US11809838B2 (en) 2020-09-08 2023-11-07 Macronix International Co., Ltd. Memory device and operation method thereof
TWI777645B (zh) * 2020-09-08 2022-09-11 旺宏電子股份有限公司 記憶體裝置及其操作方法
WO2022087810A1 (en) * 2020-10-27 2022-05-05 NeoNexus Pte. Ltd. Apparatus and method for matrix multiplication using processing-in-memory
KR20220059039A (ko) * 2020-11-02 2022-05-10 삼성전자주식회사 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 프로그램 방법
CN116136835B (zh) * 2023-04-19 2023-07-18 中国人民解放军国防科技大学 一种三进二出数值获取方法、装置及介质

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3795880A (en) * 1972-06-19 1974-03-05 Ibm Partial product array multiplier
US3878985A (en) * 1973-11-30 1975-04-22 Advanced Micro Devices Inc Serial-parallel multiplier using booth{3 s algorithm with combined carry-borrow feature
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5715187A (en) * 1996-03-04 1998-02-03 Holtek Microelectronics, Inc. Method and apparatus for integer multiplication
US6571268B1 (en) * 1998-10-06 2003-05-27 Texas Instruments Incorporated Multiplier accumulator circuits
US7047272B2 (en) 1998-10-06 2006-05-16 Texas Instruments Incorporated Rounding mechanisms in processors
US6513054B1 (en) 2000-02-22 2003-01-28 The United States Of America As Represented By The Secretary Of The Army Asynchronous parallel arithmetic processor utilizing coefficient polynomial arithmetic (CPA)
WO2003021423A2 (en) * 2001-09-04 2003-03-13 Microunity Systems Engineering, Inc. System and method for performing multiplication
WO2003088033A1 (en) 2002-04-09 2003-10-23 University Of Rochester Multiplier-based processor-in-memory architectures for image and graphics processing
US20040122887A1 (en) * 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
JP4170267B2 (ja) * 2004-07-09 2008-10-22 Necエレクトロニクス株式会社 乗算剰余演算器及び情報処理装置
JP5194302B2 (ja) * 2008-02-20 2013-05-08 ルネサスエレクトロニクス株式会社 半導体信号処理装置
US20110106872A1 (en) * 2008-06-06 2011-05-05 William Hasenplaugh Method and apparatus for providing an area-efficient large unsigned integer multiplier
US20110264719A1 (en) * 2008-10-30 2011-10-27 Audioasics A/S High radix digital multiplier
US8583898B2 (en) 2009-06-12 2013-11-12 Cray Inc. System and method for managing processor-in-memory (PIM) operations
US8238173B2 (en) * 2009-07-16 2012-08-07 Zikbit Ltd Using storage cells to perform computation
US9477636B2 (en) 2009-10-21 2016-10-25 Micron Technology, Inc. Memory having internal processors and data communication methods in memory
US8560592B2 (en) 2010-07-30 2013-10-15 National Instruments Corporation Performing multiplication for a multi-channel notch rejection filter
US20120169659A1 (en) 2010-08-29 2012-07-05 Welland David R Apparatus for capacitance sensor with interference rejection and associated methods
US9280315B2 (en) 2011-10-27 2016-03-08 Intel Corporation Vector processor having instruction set with vector convolution function for fir filtering
KR101927228B1 (ko) 2012-04-10 2018-12-11 한국전자통신연구원 누산기 및 이를 포함하는 데이터 가중 평균화 장치
US9153230B2 (en) 2012-10-23 2015-10-06 Google Inc. Mobile speech recognition hardware accelerator
US20150154005A1 (en) * 2013-12-02 2015-06-04 Kuo-Tseng Tseng Methods and Apparatuses for Performing Multiplication
US20160026912A1 (en) 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
US9760533B2 (en) 2014-08-14 2017-09-12 The Regents On The University Of Michigan Floating-gate transistor array for performing weighted sum computation
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
CN106796811B (zh) * 2015-05-05 2019-07-30 Gsi科技公司 Sram多单元操作
CN109074845B (zh) * 2016-03-23 2023-07-14 Gsi 科技公司 存储器内矩阵乘法及其在神经网络中的使用
US10180820B2 (en) 2016-09-30 2019-01-15 HEWLETT PACKARD ENTERPRlSE DEVELOPMENT LP Multiply-accumulate circuits
US10817587B2 (en) * 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US10338919B2 (en) * 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
US20190266218A1 (en) * 2018-02-28 2019-08-29 Wave Computing, Inc. Matrix computation within a reconfigurable processor fabric
US10528642B2 (en) * 2018-03-05 2020-01-07 International Business Machines Corporation Multiple precision integer multiple by matrix-matrix multiplications using 16-bit floating point multiplier
US10620951B2 (en) * 2018-06-22 2020-04-14 Intel Corporation Matrix multiplication acceleration of sparse matrices using column folding and squeezing
US10692570B2 (en) * 2018-07-11 2020-06-23 Sandisk Technologies Llc Neural network matrix multiplication in memory cells
US10528643B1 (en) * 2018-08-01 2020-01-07 Sandisk Technologies Llc Vector-matrix multiplication using non-volatile memory cells
US10534840B1 (en) * 2018-08-08 2020-01-14 Sandisk Technologies Llc Multiplication using non-volatile memory cells
KR102658831B1 (ko) * 2018-12-31 2024-04-18 삼성전자주식회사 비휘발성 메모리 장치 및 비휘발성 메모리 장치를 이용한 계산 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230020876A (ko) * 2021-08-04 2023-02-13 한국과학기술원 인 메모리 컴퓨팅을 통해 컨벌루션 뉴럴 네트워크 연산을 수행하는 방법

Also Published As

Publication number Publication date
US20200210369A1 (en) 2020-07-02
US11113231B2 (en) 2021-09-07
CN111383692A (zh) 2020-07-07

Similar Documents

Publication Publication Date Title
KR20200082617A (ko) 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치
US10210935B2 (en) Associative row decoder
US10971230B2 (en) Nonvolatile memory device and method of processing in memory (PIM) using the same
US10153042B2 (en) In-memory computational device with bit line processors
KR101939234B1 (ko) 메모리 장치, 메모리 시스템 및 상기 메모리 장치의 독출 전압의 제어 방법
US11416178B2 (en) Memory device performing parallel calculation processing, operating method thereof, and operating method of memory controller controlling the memory device
US11847339B2 (en) Apparatus for outputting internal state of memory apparatus and memory system using the apparatus
US20200402579A1 (en) Nonvolatile memory device and memory system including the same
KR102314136B1 (ko) 비휘발성 메모리 장치, 메모리 시스템 및 그것의 동작 방법
JP7368182B2 (ja) 複数のメモリプレーンを含む不揮発性メモリ装置及びこれを含むメモリシステム
KR20140014547A (ko) 메모리 장치 및 상기 메모리 장치의 독출 전압 결정 방법
KR20200054000A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR102253836B1 (ko) 페이지 버퍼 및 이를 포함하는 비휘발성 메모리 장치
KR102329800B1 (ko) 메모리 장치 및 메모리 장치의 에지 워드라인 관리 방법
KR20160050393A (ko) 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
US20160322109A1 (en) Non-volatile memory device, memory system, and methods of operating the device and system
KR20210062845A (ko) 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터
JP2023025687A (ja) メモリ装置およびその動作方法
US9502105B2 (en) Resistive memory device, operating method thereof, and system having the same
CN114816326A (zh) 存储器内运算器及存储器内运算方法
KR20210060022A (ko) 인공 지능 기능이 탑재된 스토리지 장치 및 이를 포함하는 스토리지 시스템
CN115836347A (zh) 一种存储器及数据迁移方法
EP4174646A1 (en) Storage device supporting multi-tenant operation and methods of operating same
EP4184332A1 (en) Storage controller and storage device including the same
CN112992233A (zh) 存储器设备中写入和读取数据的方法及其操作方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal