KR20220143562A - 메모리 장치 및 그 동작 방법 - Google Patents
메모리 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- KR20220143562A KR20220143562A KR1020220020971A KR20220020971A KR20220143562A KR 20220143562 A KR20220143562 A KR 20220143562A KR 1020220020971 A KR1020220020971 A KR 1020220020971A KR 20220020971 A KR20220020971 A KR 20220020971A KR 20220143562 A KR20220143562 A KR 20220143562A
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- accumulation
- results
- multiplication
- memory
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000009825 accumulation Methods 0.000 claims abstract description 149
- 239000000872 buffer Substances 0.000 claims abstract description 52
- 239000013598 vector Substances 0.000 claims description 43
- 238000006243 chemical reaction Methods 0.000 claims description 23
- 238000001514 detection method Methods 0.000 claims description 16
- 230000001960 triggered effect Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 7
- 238000011017 operating method Methods 0.000 claims description 4
- 230000007704 transition Effects 0.000 claims 8
- 238000013506 data mapping Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 8
- 101100162020 Mesorhizobium japonicum (strain LMG 29417 / CECT 9101 / MAFF 303099) adc3 gene Proteins 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000011094 buffer selection Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 101100434411 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ADH1 gene Proteins 0.000 description 1
- 101150102866 adc1 gene Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
- Electrotherapy Devices (AREA)
- Image Input (AREA)
Abstract
메모리 장치 및 그 동작 방법이 제공된다. 상기 메모리 장치는 입력 데이터를 저장하는 복수의 페이지 버퍼들을 포함하며; 상기 페이지 버퍼들에 연결되는 복수의 메모리 평면들을 포함하고, 상기 메모리 평면들의 수신된 어드레스들에 기초하여 복수의 웨이트들이 상기 메모리 평면들 내에 저장되며, 상기 메모리 평면들은 병렬로 복수의 비트 곱셈 결과들을 발생시키도록 상기 웨이트들 및 상기 페이지 버퍼들 내의 상기 입력 데이터에 대해 비트 곱셈을 수행하고; 곱셈 및 누적(MAC) 연산 결과를 발생시키도록 병렬로 또는 순차적으로 상기 메모리 평면들의 비트 곱셈 결과들에 대해 비트 누산을 수행하기 위해 상기 페이지 버퍼들에 연결되는 적어도 하나의 누산 회로를 포함한다.
Description
본 발명은 대체로 인메모리 컴퓨팅(In-Memory-Computing) 메모리 장치 및 그 동작 방법에 관한 것이다.
인공 지능("AI")은 최근에 많은 분야들에 대해 매우 효과적인 해결 방안으로 부각되어 왔다. AI에서 중요한 문제는 AI가 곱셈 및 누적(multiply-and-accumulation: MAC)을 수행하기 위해 많은 양의 입력 데이터(예를 들면, 입력 특성 맵들)와 웨이트(weight)들을 포함하는 점이다.
그러나 현재의 AI 구조는 통상적으로 IO(입력/출력) 병목 현상 및 비효율적인 MAC 연산 흐름과 직면하고 있다.
높은 정확도를 구현하기 위해, 다중 비트의 입력들 및 다중 비트의 웨이트들을 가지는 MAC 연산들이 수행될 수 있다. 그러나 상기 IO 병목 현상은 악화되며, 효율이 보다 저하된다.
인메모리 컴퓨팅("IMC")은 IMC가 프로세스 중심 아키텍처에서 복잡한 산술 논리 장치(ALU)를 감소시킬 수 있고, 메모리 내에서 MAC 연산의 큰 병렬성을 제공할 수 있기 때문에 MAC 연산들을 가속할 수 있다.
IMC의 실행에서, 연산 속도가 향상될 경우, 상기 IMC 성능이 개선될 것이다.
본 발명은 인메모리 컴퓨팅(In-Memory-Computing) 메모리 장치 및 그 동작 방법을 제공한다.
일 실시예에 따르면, 메모리 장치가 제공되며, 상기 메모리 장치는 입력 데이터를 저장하는 복수의 페이지 버퍼들을 포함하고; 상기 페이지 버퍼들에 연결되는 복수의 메모리 평면들을 포함하며, 상기 메모리 평면들의 수신된 어드레스들에 기초하여, 복수의 웨이트(weight)들이 상기 메모리 평면들 내에 저장되고, 상기 메모리 평면들은 병렬로 복수의 비트 곱셈 결과들을 발생시키도록 상기 웨이트들 및 상기 페이지 버퍼들 내의 상기 입력 데이터에 대해 비트 곱셈(bit multiplication)을 수행하며, 상기 비트 곱셈 결과들은 상기 페이지 버퍼들로 다시 저장되고; 곱셈 및 누적(multiply-accumulate: MAC) 연산 결과를 발생시키도록 병렬로 또는 순차적으로 상기 메모리 평면들의 복수의 비트 곱셈 결과들에 대해 비트 누산(bit accumulation)을 수행하기 위해 상기 페이지 버퍼들에 연결되는 적어도 하나의 누산 회로를 포함한다.
다른 실시예에 따르면, 메모리 장치를 위한 동작 방법이 제공된다. 상기 동작 방법은 복수의 페이지 버퍼들 내에 입력 데이터를 저장하는 단계를 포함하고; 복수의 메모리 평면들의 수신된 어드레스들에 기초하여, 상기 메모리 평면들에 의해, 병렬로 복수의 비트 곱셈 결과들을 발생시키도록 상기 복수의 메모리 평면들 내에 저장된 복수의 웨이트들 및 상기 입력 데이터에 대해 병렬로 비트 곱셈을 수행하는 단계를 포함하며, 상기 복수의 비트 곱셈 결과들은 상기 페이지 버퍼들에 다시 저장되고; 곱셈 및 누적(MAC) 연산 결과를 발생시키도록 병렬로 또는 순차적으로 상기 메모리 평면들의 복수의 비트 곱셈 결과들에 대해 비트 누산을 수행하는 단계를 포함한다.
본 발명에 따르면, unFDP 기반의 데이터 매핑을 이용함으로써, MAC 연산에 이용되는 메모리 셀 숫자가 감소되며, 이에 따라 동작 비용도 절감된다. 또한, 에러 정정 코드 비용도 감소되며, 페일-비트 효과의 공차가 개선된다.
도 1은 본 발명의 제1 실시예에 따른 인메모리 컴퓨팅(IMC) 메모리 장치의 기능 블록도를 도시한다.
도 2는 본 발명의 제1 실시예에 따른 메모리 평면 및 누산 회로의 기능 블록도를 도시한다.
도 3은 본 발명의 제1 실시예에 따른 데이터 매핑을 도시한다.
도 4a 내지 도 4c는 본 발명의 제1 실시예에 따른 데이터 매핑의 몇 가지의 가능한 예들을 도시한다.
도 5는 본 발명의 제1 실시예의 곱셈 연산들의 예를 도시한다.
도 6a 및 도 6b는 본 발명의 제1 실시예에 따른 그루핑 연산(다수결 연산) 및 계수를 도시한다.
도 7a 및 도 7b는 본 발명의 제1 실시예에 따른 MAC 연산 흐름들을 도시한다.
도 8은 본 발명의 제2 실시예에 따른 인메모리 컴퓨팅(IMC) 메모리 장치의 기능 블록도를 도시한다.
도 9a 및 도 9b는 본 발명의 제2 실시예에 따른 MAC 연산 흐름들을 도시한다.
도 10은 본 발명의 제3 실시예에 따른 메모리 장치를 위한 동작 방법의 흐름도를 도시한다.
다음의 상세한 설명에서, 설명의 목적으로 많은 특정 사항들이 개시되는 실시예들의 완전한 이해를 제공하기 위해 설시된다. 그러나 하나 또는 그 이상의 실시예들이 이들 특정 사항들 없이 수행될 수 있는 점은 분명해질 것이다. 다른 예들에서, 잘 알려진 구조들과 장치들은 도시를 단순하게 하기 위해 개략적으로 도시된다.
도 2는 본 발명의 제1 실시예에 따른 메모리 평면 및 누산 회로의 기능 블록도를 도시한다.
도 3은 본 발명의 제1 실시예에 따른 데이터 매핑을 도시한다.
도 4a 내지 도 4c는 본 발명의 제1 실시예에 따른 데이터 매핑의 몇 가지의 가능한 예들을 도시한다.
도 5는 본 발명의 제1 실시예의 곱셈 연산들의 예를 도시한다.
도 6a 및 도 6b는 본 발명의 제1 실시예에 따른 그루핑 연산(다수결 연산) 및 계수를 도시한다.
도 7a 및 도 7b는 본 발명의 제1 실시예에 따른 MAC 연산 흐름들을 도시한다.
도 8은 본 발명의 제2 실시예에 따른 인메모리 컴퓨팅(IMC) 메모리 장치의 기능 블록도를 도시한다.
도 9a 및 도 9b는 본 발명의 제2 실시예에 따른 MAC 연산 흐름들을 도시한다.
도 10은 본 발명의 제3 실시예에 따른 메모리 장치를 위한 동작 방법의 흐름도를 도시한다.
다음의 상세한 설명에서, 설명의 목적으로 많은 특정 사항들이 개시되는 실시예들의 완전한 이해를 제공하기 위해 설시된다. 그러나 하나 또는 그 이상의 실시예들이 이들 특정 사항들 없이 수행될 수 있는 점은 분명해질 것이다. 다른 예들에서, 잘 알려진 구조들과 장치들은 도시를 단순하게 하기 위해 개략적으로 도시된다.
본 발명의 기술적인 용어들은 본 발명의 기술 분야에서의 일반적인 정의를 기초로 한다. 본문에서 하나 또는 일부 용어들이 기재되거나 설명되는 경우, 이들 용어들의 정의는 본문에서의 기재나 설명에 근거한다. 각각의 개시되는 실시예들은 하나 또는 그 이상의 기술적인 특징들을 가진다. 가능한 구현 예에서, 해당 기술 분야의 숙련자라면 본 발명의 임의의 실시예의 일부 또는 모든 기술적인 특징들을 선택적으로 구현할 수 있거나, 본 발명의 실시예들의 일부 또는 모든 기술적인 특징들을 선택적으로 결합할 수 있을 것이다.
제1 실시예
도 1은 본 발명의 제1 실시예에 따른 인메모리 컴퓨팅(In-Memory-Computing: IMC) 메모리 장치(100)의 기능 블록도를 도시한다. 상기 메모리 장치(100)는 복수의 메모리 평면(memory plane)들, 복수의 페이지 버퍼(page buffer)들, 복수의 전환 유닛(conversion unit)들, 누산 검출 회로(accumulation detection circuit)(120), 출력 래치(output latch)(130) 및 누산 회로(accumulation circuit)(140)를 포함한다. 상기 전환 유닛들은, 예를 들면, 이에 한정되는 것은 아니지만, 아날로그-디지털 컨버터(ADC)이다.
간편성을 위해, 도 1에서, 상기 메모리 장치(100)는 넷의 메모리 평면들(MP0-MP3), 넷의 페이지 버퍼들(PB0-PB3), 넷의 전환 유닛들(ADC0-ADC3), 누산 검출 회로(120), 출력 래치(130) 및 누산 회로(140)를 포함한다. 그러나 본 발명이 이에 한정되는 것은 아니다.
상기 페이지 버퍼들(PB0-PB3)은 입력 데이터(IN)를 저장할 수 있고, 상기 입력 데이터(IN)를 상기 메모리 평면들(MP0-MP3)로 전송할 수 있다. 상기 메모리 평면들(MP0~MP3)에 의해 발생되는 복수의 비트 곱셈 결과(bit multiplication result)들(BM0-BM3)은 상기 페이지 버퍼들(PB0-PB3)에 다시 저장된다. 또한, 페이지 버퍼 선택 신호(PB_SEL)에 의해 제어되어, 상기 출력 래치(130)가 대응하는 페이지 버퍼들(PB0-PB3)에 저장된 상기 비트 곱셈 결과들(BM0-BM3)을 상기 누산 회로(140)에 대해 선택한다.
상기 메모리 평면들(MP0-MP3)은 상기 페이지 버퍼들(PB0-PB3)에 연결된다. 상기 메모리 평면들(MP0-MP3)은 상기 비트 곱셈 결과들(BM0-BM3)을 병렬로 발생시키기 위해 상기 페이지 버퍼들(PB0-PB3)로부터의 상기 입력 데이터(IN)와 함께 상기 메모리 평면들(MP0-MP3)에 저장된 웨이트(weight)들에 대해 비트 곱셈 연산들(예를 들면, 비트 AND 연산들)을 병렬로 수행한다. 상기 비트 곱셈 결과들(BM0-BM3)은 상기 페이지 버퍼들(PB0-PB3) 내로 다시 저장된다. 또한, 상기 메모리 평면(MP0-MP3)의 하나 또는 그 이상의 메모리 셀 스트링(memory cell string)(들)이 센싱 동작들을 가능하게 하도록 선택된다. 상기 메모리 평면들(MP0-MP3)에 저장된 상기 웨이트들 및 상기 페이지 버퍼들(PB0-PB3)로부터의 상기 입력 데이터(IN)가 비트 곱해질 때, 상기 메모리 평면들(MP0-MP3)의 복수의 메모리 셀들이 복수의 메모리 셀 전류들(IMC0-IMC3)을 발생시키며, 상기 메모리 셀 전류들(IMC0-IMC3)은 상기 전환 유닛들(ADC0-ADC3) 내로 공통적으로 입력된다.
상기 전환 유닛들(ADC0-ADC3)은 상기 메모리 평면들(MP0-MP3)에 연결된다. 상기 메모리 평면들(MP0-MP3)의 메모리 셀 전류들(IMC0-IMC3)은 상기 전환 유닛들(ADC0-ADC3) 내로 각기 입력된다. 상기 전환 유닛들(ADC0-ADC3)은 상기 메모리 평면들(MP0-MP3)의 메모리 셀 전류들(IMC0-IMC3)을 복수의 전환 결과들(AMACO0-AMACO3)로 전환시킨다.
상기 누산 검출 회로(120)는 상기 전환 유닛들(ADC0-ADC3)에 연결된다. 상기 누산 검출 회로(120)는 상기 출력 래치(130)에 페이지 버퍼 선택 신호(PB_SEL)를 발생시키고, 상기 누산 회로(140)에 누산 인에이블 신호(accumulation enable signal)(ACC_EN)를 발생시키도록 상기 전환 유닛들(ADC0-ADC3)의 전환 결과들(AMACO0-AMACO3)을 스레숄드 값(threshold value)과 각기 비교한다. 상기 전환 결과들(AMACO0-AMACO3)이 상기 스레숄드 값보다 높을 때, 상기 페이지 버퍼 선택 신호(PB_SEL)에 대응하여, 상기 출력 래치(130)가 상기 누산 회로(140)에 대해 대응하는 페이지 버퍼들(PB0-PB3)에 저장된 대응하는 비트 곱셈 결과들(BM0-BM3)을 선택한다.
상기 전환 결과들(AMACO0-AMACO3) 중에서 적어도 하나가 상기 스레숄드 값보다 높을 때, 상기 누산 인에이블 신호(ACC_EN)는 가능 상태(enabled state)에 있는 데 반하여, 상기 누산 인에이블 신호(ACC_EN)는 불능 상태(disabled state)에 있다.
상기 출력 래치(130)는 상기 누산 검출 회로(120) 및 상기 페이지 버퍼들(PB0-PB3)에 연결된다. 상기 페이지 버퍼 선택 신호(PB_SEL)에 대응하여, 상기 출력 래치(130)는 상기 누산 회로(140)에 대해 상기 대응하는 페이지 버퍼들(PB0-PB3) 내에 저장된 대응하는 비트 곱셈 결과들(BM0-BM3)을 선택한다. 예를 들면, 이에 한정되는 것은 아니지만, 상기 전환 유닛들(ADC0, ADC1)로부터의 전환 결과들(AMACO0, AMACO1)이 상기 스레숄드 값보다 높을 때, 상기 페이지 버퍼 선택 신호(PB_SEL)에 대응하여, 상기 출력 래치(130)는 상기 누산 회로(140)에 대해 상기 대응하는 페이지 버퍼들(PB0-PB1) 내에 저장된 대응하는 비트 곱셈 결과들(BM0-BM1)을 선택한다.
상기 누산 회로(140)는 상기 출력 래치(130) 및 상기 누산 검출 회로(120)에 연결된다. 상기 누산 인에이블 신호(ACC_EN)에 의해 가능해질 때, 상기 누산 회로(140)는 MAC 연산 결과(OUT)를 발생시키도록 상기 출력 래치(130)로부터의 상기 비트 곱셈 결과들(BM0-BM3)에 대해 비트 누산 연산(bit accumulation operation)들을 수행하며, 상세한 사항들은 이하에서 설명된다.
도 2는 본 발명의 제1 실시예에 따른 메모리 평면 및 누산 회로의 기능 블록도를 도시한다. 도 2의 메모리 평면(MP)은 도 1의 메모리 평면들(MP0-MP3)을 구현하기 위해 이용될 수 있다. 도 2에 도시한 바와 같이, 상기 메모리 평면(MP)은 메모리 블록(210) 및 곱셈 회로(multiplication circuit)(220)를 포함한다. 상기 누산 회로(140)는 그루핑 회로(grouping circuit)(240) 및 계수 유닛(counting unit)(250)을 포함한다. 상기 곱셈 회로(220)는 아날로그인 반면, 상기 누산 회로(140), 상기 그루핑 회로(240) 및 상기 계수 유닛(250)은 디지털이다.
상기 메모리 블록(210)은 복수의 메모리 셀들(211)을 포함한다. 본 발명의 일 실시예에서, 상기 메모리 셀(211)은, 예를 들면 이에 한정되는 것은 아니지만, 불휘발성 메모리 셀이다. MAC 연산들에서, 상기 메모리 셀들(211)은 상기 웨이트들을 저장하기 위해 이용된다.
상기 곱셈 회로(220)는 상기 메모리 블록(210)에 연결된다. 상기 곱셈 회로(220)는 복수의 단일 비트 곱셈 유닛들(221)을 포함한다. 각각의 상기 단일 비트 곱셈 유닛들(221)은 입력 래치(221A), 감지 증폭기(sensing amplifier: SA)(221B), 출력 래치(221C) 및 공통 데이터 래치(common data latch: CDL)(221D)를 포함한다. 상기 입력 래치(221A)는 상기 메모리 블록(210)에 연결된다. 상기 감지 증폭기(221B)는 상기 입력 래치(221A)에 연결된다. 상기 출력 래치(221C)는 상기 감지 증폭기(221B)에 연결된다. 상기 공통 데이터 래치(221D)는 상기 출력 래치(221C)에 연결된다. 상기 곱셈 회로(220)로부터의 비트 곱셈 결과(BM)는 상기 페이지 버퍼(PB)에 다시 저장된다.
상기 메모리 셀(211) 내에 저장된 웨이트들이 로직(logic) 1이고, 대응하는 입력 데이터(IN)도 로직 1일 때, 상기 메모리 셀(211)은 상기 셀 전류를 발생시킨다. 상기 메모리 셀들(211)로부터의 셀 전류들은 메모리 셀 전류(IMC) 내로 합산된다.
본 발명의 제1 실시예에서, "디지털 누산(digital accumulation)"은 상기 누산 회로(140)는 가능하지만, 상기 전환 유닛들(ADC0-ADC3)은 불능인 것을 의미한다. "혼성 누산(hybrid accumulation)"은 상기 누산 회로(140) 및 상기 전환 유닛들(ADC0-ADC3)이 가능인 것을 의미한다. 즉, 본 발명의 제1 실시예에서, 상기 전환 유닛들(ADC0-ADC3)은 선택적으로 트리거(trigger)된다.
본 발명의 일 실시예에서, 상기 전환 유닛들의 트리거는 상기 MAC 연산 속도를 향상시키기 위해 무용한 데이터를 신속하게 필터링하는 데 이용될 수 있으며, 상기 누산 회로(140)는 상기 MAC 연산 정확도를 향상시키기 위해 필터링되지 않은 데이터를 축적할 수 있다. 상기 혼성 누산은 저해상도 양자화(quantization)를 이용하여 변화 영향을 제거할 수 있고, 상기 무용한 데이터의 누산을 회피할 수 있으며, 해상도를 유지할 수 있다.
상기 그루핑 회로(240)는 상기 출력 래치(130)에 연결된다. 상기 그루핑 회로(240)는 복수의 그루핑 유닛들(241)을 포함한다. 상기 그루핑 유닛들(241)은 복수의 그루핑 결과들을 발생시키도록 상기 비트 곱셈 결과들(BM0-BM3)에 대해 그루핑 연산들을 수행한다. 본 발명의 가능한 일 실시예에서, 상기 그루핑 기술은 다수결 기술(majority technique), 예를 들면, 상기 다수결 함수 기술에 의해 구현될 수 있다. 상기 그루핑 회로(240)는 상기 다수결 함수 기술에 기초하는 다수결 그루핑 회로로 구현될 수 있으며, 상기 그루핑 유닛들(241)은 분산 다수결 그루핑 유닛으로 구현될 수 있지만, 본 발명이 이에 한정되게 의도되는 것은 아니다. 상기 그루핑 기술은 다른 유사한 기술들에 의해 구현될 수도 있다.
상기 계수 유닛(250)은 상기 그루핑 회로(240)에 연결된다. 본 발명의 일 실시예에서, 상기 계수 유닛(250)은 상기 MAC 연산 결과(OUT)를 발생시키도록 상기 그루핑 회로(240)로부터의 상기 그루핑 결과들(즉, 상기 다수결 결과들)에 대해 비트단위(bitwise) 계수 또는 비트단위 누산을 수행하기 위한 것이다. 본 발명의 일 실시예에서, 상기 계수 유닛(250)은 알려진 계수 회로들, 예를 들면, 이에 한정되는 것은 아니지만, 리플 카운터(ripple counter)로 구현될 수 있다. 본문에서, "계수(counting)" 및 "누산(accumulating)"이라는 용어들은 상호 교환될 수 있으며, 계수기(counter)와 누산기(accumulator)는 실질적으로 동일한 의미를 가진다.
본 발명의 제1 실시예에서, 도 1 및 도 2의 회로 구조에 의해, 각 메모리 평면으로부터의 전류는 개별적으로 양자화될 수 있다. 또한, 상기 누산 회로(140)는 상기 메모리 평면들에 의해 공유될 수 있으며, 이는 상기 회로 면적을 더 감소시킬 수 있다.
본 발명의 일 실시예에 따른 데이터 매핑(data mapping)을 도시하는 도 3을 이제 참조한다. 도 3에 도시한 바와 같이, 각 입력 및 각 웨이트는 8-비트 정밀도로 N의 크기(들)(N은 양의 정수임)를 가지지만, 본 발명이 이에 의해 한정되는 것은 아니다.
상기 입력 데이터의 데이터 매핑이 예로서 설명되지만, 본 발명이 이에 한정되는 것은 아니다. 다음의 설명은 상기 웨이트들의 데이터 매핑에도 적합할 수 있다.
상기 입력 데이터(또는 상기 웨이트)가 이진 8-비트 형식으로 표현될 때, 상기 입력 데이터(또는 상기 웨이트)는 최상위 비트(most significant bit: MSB) 벡터(vector) 및 최하위 비트(least significant bit: LSB) 벡터를 포함한다. 상기 8-비트 입력 데이터(또는 상기 웨이트)의 MSB 벡터는 비트 B7 내지 비트 B4를 포함하고, 상기 8-비트 입력 데이터(또는 상기 웨이트)의 LSB 벡터는 비트 B3 내지 비트 B0을 포함한다.
상기 입력 데이터의 MSB 벡터 및 LSB 벡터의 각각의 비트는 단항 코드(unary code)(값 형식)로 표현된다. 예를 들면, 상기 입력 데이터의 MSB 벡터의 비트 B7은 B70-B77로 나타내어질 수 있고, 상기 입력 데이터의 MSB 벡터의 비트 B6은 B60-B63으로 나타내어질 수 있으며, 상기 입력 데이터의 MSB 벡터의 비트 B5는 B50-B51로 나타내어질 수 있고, 상기 입력 데이터의 MSB 벡터의 비트 B4는 B4로 나타내어질 수 있다.
이후에, 상기 단항 코드(값 형식)로 표현된 상기 입력 데이터의 MSB 벡터의 각각의 비트 및 상기 입력 데이터의 LSB 벡터의 각각의 비트는 각기 언폴딩 도트 곱(unfolding dot product: unFDP) 형식으로 수회 중복된다. 예를 들면, 상기 입력 데이터의 각각의 상기 MSB 벡터는 (24-1)회 중복되며, 유사하게 상기 입력 데이터의 각각의 상기 LSB 벡터는 (24-1)회 중복된다. 이렇게 함으로써, 상기 입력 데이터는 상기 unFDP 형식으로 나타내어진다. 유사하게, 상기 웨이트들도 상기 unFDP 형식으로 나타내어진다.
곱셈 연산은 복수의 곱셈 결과들을 발생시키도록 상기 입력 데이터(상기 unFDP 형식으로) 및 상기 웨이트들(상기 unFDP 형식으로)에 대해 수행된다.
이해를 위하여, 데이터 매핑의 일예가 설명되지만, 본 발명이 이에 한정되는 것은 아니다.
본 발명의 제1 실시예에 따른 데이터 매핑의 하나의 가능한 예를 도시하는 도 4a를 이제 참조한다. 도 4a에 도시한 바와 같이, 상기 입력 데이터는 (IN1, IN2)=(2, 1)이고, 상기 웨이트는 (We1, We2)=(1, 2)이다. 상기 입력 데이터의 상기 MSB 및 상기 LSB는 이진 형식으로 나타내어지며, 이에 따라 IN1=10인 반면에 IN2=01이다. 유사하게, 상기 웨이트의 MSB 및 LSB는 이진 형식으로 나타내어지며, 이에 따라 We1=01인 반면에 We2=10이다.
이후에, 상기 입력 데이터의 MSB 및 LSB와 상기 웨이트의 MSB 및 LSB가 단항 코드(값 형식)로 부호화된다. 예를 들면, 상기 입력 데이터의 MSB는 "110"로 부호화되는 반면, 상기 입력 데이터의 상기 LSB는 "001"로 부호화된다. 유사하게, 상기 웨이트의 MSB는 "001"로 부호화되는 반면, 상기 웨이트의 LSB는 "110"로 부호화된다.
이후에, 상기 입력 데이터의 MSB의 각각의 비트(110, 상기 단항 코드로 부호화됨) 및 상기 입력 데이터의 LSB의 각각의 비트(001, 상기 단항 코드로 부호화됨)가 상기 unFDP 형식으로 표현되도록 수회 중복된다. 예를 들면, 상기 입력 데이터의 MSB의 각각의 비트(110, 상기 값 형식으로 표현됨)는 세 번 중복되며, 이에 따라 상기 입력 데이터의 MSB의 unFDP 형식은 111111000이다. 유사하게, 상기 입력 데이터의 LSB의 각각의 비트(001, 상기 값 형식으로 표현됨)는 세 번 중복되며, 이에 따라 상기 입력 데이터의 LSB의 unFDP 형식은 000000111이다.
상기 곱셈 연산은 MAC 연산 결과를 발생시키도록 상기 입력 데이터(상기 unFDP 형식으로 표현됨) 및 상기 웨이트들에 대해 수행된다. 상기 MAC 연산 결과는 1*0=0, 1*0=0, 1*1=1, 1*0=0, 1*0=0, 1*1=1, 0*0=0, 0*0=0, 0*1=0, 0*1=0, 0*1=0, 0*0=0, 0*1=0, 0*1=0, 0*0=0, 1*1=1, 1*1=1, 1*0=0이다. 상기 값들은 0+0+1+0+0+1+0+0+0+0+0+0+0+0+0+1+1+0=4로 합산된다.
앞서의 설명으로부터, 상기 입력 데이터가 "i" 비트들인 반면에 상기 웨이트가 "j" 비트들("i" 및 "j" 모두는 양의 정수임)일 때, 상기 MAC(또는 상기 곱셈) 연산들에 이용된 전체 메모리 셀 숫자는 (2i-1)*(2j-1)이 될 것이다.
본 발명의 제1 실시예에 따른 데이터 매핑의 하나의 가능한 예를 도시하는 도 4b를 이제 참조한다. 도 4b에 도시한 바와 같이, 상기 입력 데이터는 (IN1)=(2)이고, 상기 웨이트는 (We1)=(1)이다. 상기 입력 데이터 및 상기 웨이트는 4-비트 내이다.
상기 입력 데이터는 이진 형식으로 나타내어지며, 이에 따라 IN1=0010이다. 유사하게, 상기 웨이트는 이진 형식으로 나타내어지며, 이에 따라 We1=0001이다.
상기 입력 데이터 및 상기 웨이트는 단항 코드(값 형식)로 부호화된다. 예를 들면, 상기 입력 데이터의 가장 높은 비트 "0"은 "00000000"으로 부호화되는 반면, 상기 입력 데이터의 가장 낮은 비트 "0"은 "0"로 부호화되는 등으로 된다. 유사하게, 상기 웨이트 가장 높은 비트 "0"은 "00000000"으로 부호화되는 반면, 상기 웨이트의 가장 낮은 비트 "1"은 "1"로 부호화된다.
이후에, 상기 입력 데이터의 각 비트(상기 단항 코드로 부호화됨)가 상기 unFDP 형식으로 표현되도록 수회 중복된다. 예를 들면, 상기 입력 데이터의 가장 높은 비트(401A)(상기 단항 코드로 부호화됨)는 상기 비트들(403A)로 15회 중복되며, 상기 입력 데이터의 가장 낮은 비트(401B)(상기 단항 코드로 부호화됨)는 상기 비트들(403B)로 15회 중복된다.
상기 웨이트(402)(상기 단항 코드로 부호화됨)는 상기 unFDP 형식으로 나타내어지도록 15회 중복된다.
상기 곱셈 연산은 MAC 연산 결과를 발생시키도록 상기 입력 데이터(상기 unFDP 형식으로 표현됨) 및 상기 웨이트들(상기 unFDP 형식으로 표현됨)에 대해 수행된다. 상세하게는, 상기 입력 데이터의 비트들(403A)이 상기 웨이트(402)와 곱해지고, 상기 입력 데이터의 비트들(403B)이 상기 웨이트(402)와 곱해지는 등이 된다. 상기 MAC 연산 결과("2")는 상기 곱셈 값들을 더하여 발생된다.
본 발명의 제1 실시예에 따른 데이터 매핑의 하나의 가능한 예를 도시하는 도 4c를 이제 참조한다. 도 4c에 도시한 바와 같이, 상기 입력 데이터는 (IN1)=(1)이고, 상기 웨이트는 (We1)=(5)이다. 상기 입력 데이터 및 상기 웨이트는 4-비트 내이다.
상기 입력 데이터는 이진 형식으로 표현되며, 이에 따라 IN1=0001이다. 유사하게, 상기 웨이트는 이진 형식으로 표현되며, 이에 따라 We1=0101이다.
이후에, 상기 입력 데이터의 각각의 비트(상기 단항 코드로 부호화됨)가 상기 unFDP 형식으로 표현되도록 수회 중복된다. 도 4c에서, 비트 "0"이 상기 입력 데이터의 각각의 비트 및 상기 웨이트의 각각의 비트가 중복될 때에 더해진다. 예를 들면, 상기 입력 데이터의 가장 높은 비트(411A)(상기 단항 코드로 부호화됨)는 상기 비트들(413A)을 형성하도록 열다섯 번 중복되고 비트 "0"이 가산되며, 상기 입력 데이터의 가장 낮은 비트(311B)(상기 단항 코드로 부호화됨)는 상기 비트들(413B)을 형성하도록 열다섯 번 중복되고 비트 "0"이 가산된다. 이렇게 함으로써, 상기 입력 데이터가 상기 unFDP 형식으로 나타내어진다.
유사하게, 상기 웨이트(412)(상기 단항 코드로 부호화됨)가 열다섯 번 중복되며, 비트 "0"이 각각의 상기 웨이트들(414) 내로 추가적으로 더해진다. 이렇게 함으로써, 상기 웨이트가 상기 unFDP 형식으로 나타내어진다.
상기 곱셈 연산은 MAC 연산 결과를 발생시키도록 상기 입력 데이터(상기 unFDP 형식으로 표현됨) 및 상기 웨이트들(상기 unFDP 형식으로 표현됨)에 대해 수행된다. 상세하게는, 상기 입력 데이터의 비트들(413A)은 상기 웨이트(414)와 곱해지며, 상기 입력 데이터의 비트들(413B)은 상기 웨이트(414)와 곱해지는 등이 된다. 상기 MAC 연산 결과("5")는 상기 곱셈 값들을 더하여 발생된다.
종래 기술에 있어서, 8-비트 입력 데이터 및 8-비트 웨이트에 대한 MAC 연산들에서, 직접적인 MAC 연산들이 이용될 경우, 상기 직접적인 MAC 연산들에 이용된 전체 메모리 셀 숫자는 255*255*512=33,292,822가 될 것이다.
이에 비하여 본 발명의 일 실시예에서, 8-비트 입력 데이터 및 8-비트 웨이트에 대한 MAC 연산들에서, 상기 직접적인 MAC 연산들에 이용되는 전체 메모리 셀 숫자는 15*15*512*2=115,200*2=230,400이 될 것이다. 이에 따라, 본 발명의 일 실시예에 따른 MAC 연산에 이용되는 메모리 셀 숫자는 종래 기술에서 이용된 메모리 셀 숫자의 약 0.7%이다.
본 발명의 일 실시예에서, unFDP 기반의 데이터 매핑을 이용함으로써, 상기 MAC 연산에 이용되는 메모리 셀 숫자가 감소되며, 이에 따라 동작 비용도 절감된다. 또한, 에러 정정 코드(error correction code: ECC) 비용도 감소되며, 페일-비트(fail-bit) 효과의 공차가 개선된다.
도 1 및 도 2를 다시 참조하면, 본 발명의 일 실시예에서의 곱셈 연산들에서, 상기 웨이트(트랜스컨덕턴스(transconductance))는 상기 메모리 블록(210)의 메모리 셀들(211) 내에 저장되고, 상기 입력 데이터(전압)는 저장되어 상기 페이지 버퍼에 의해 판독되며, 상기 공통 데이터 래치(221D)로 전송된다. 상기 공통 데이터 래치(221D)는 상기 입력 데이터를 상기 입력 래치(221A)로 출력한다.
본 발명의 일 실시예의 곱셈 연산들을 설명하기 위해, 본 발명의 일 실시예에 따른 곱셈 연산의 하나의 예를 도시하는 도 5를 이제 참조한다. 도 5는 상기 메모리 장치가 선택된 비트 라인 판독 기능을 지원하는 경우에 사용된다. 도 5에서, 상기 입력 래치(221A)는 래치(505) 및 비트 라인 스위치(510)를 포함한다.
도 5에 도시한 바와 같이, 상기 웨이트는 도 2에 도시한 바와 같은 단항 코드(값 형식)로 나타내어진다. 이에 따라, 상기 웨이트의 가장 높은 비트는 여덟의 메모리 셀들(211) 내에 저장되고, 상기 웨이트의 두 번째로 높은 비트는 넷의 메모리 셀들(211) 내에 저장되며, 상기 웨이트의 세 번째로 높은 비트는 둘의 메모리 셀들(211) 내에 저장되고, 상기 웨이트의 가장 낮은 비트는 하나의 메모리 셀(211) 내에 저장된다.
유사하게, 상기 입력 데이터는 단항 코드(값 형식)(도 3에 도시한 바와 같은)로 나타내어진다. 이에 따라, 상기 입력 데이터의 가장 높은 비트는 여덟의 공통 데이터 래치들(221D) 내에 저장되고, 상기 입력 데이터의 두 번째로 높은 비트는 넷의 공통 데이터 래치들(221D) 내에 저장되며, 상기 입력 데이터의 세 번째로 높은 비트는 둘의 공통 데이터 래치들(221D) 내에 저장되고, 상기 입력 데이터의 가장 낮은 비트는 하나의 공통 데이터 래치(221D) 내에 저장된다. 상기 입력 데이터는 상기 공통 데이터 래치들(221D)로부터 상기 래치들(505)까지 전송된다.
도 5에서, 상기 복수의 비트라인 스위치들(510)은 상기 메모리 셀들(211) 및 상기 감지 증폭기(221B) 사이에 연결된다. 상기 비트라인 스위치들(510)은 상기 래치들(505)의 출력들에 의해 제어된다. 예를 들면, 상기 래치(505)가 비트 "1"을 출력할 때, 상기 비트 라인 스위치(510)가 연결되는 반면, 상기 래치(505)가 비트 "0"을 출력할 때, 비트 라인 스위치(510)는 연결 해제된다.
또한, 상기 메모리 셀(211) 내에 저장된 웨이트가 비트 1이고, 상기 비트 라인 스위치(510)가 연결될(즉, 상기 입력 데이터가 비트 1일) 때, 상기 SA(221B)는 상기 곱셈 결과 "1"을 발생시키도록 메모리 셀 전류를 감지한다. 상기 메모리 셀(211) 내에 저장된 웨이트가 비트 0이고, 상기 비트 라인 스위치(510)가 연결될(즉, 상기 입력 데이터가 비트 1일) 때, 상기 SA(221B)는 메모리 셀 전류를 감지하지 않는다. 상기 메모리 셀(211) 내에 저장된 웨이트가 비트 1이고, 상기 비트 라인 스위치(510)가 연결 해제될 때(즉, 상기 입력 데이터가 비트 0일 때), 상기 SA(221B)는 (상기 곱셈 결과 "0"을 발생시키도록)메모리 셀 전류를 감지하지 않는다. 상기 메모리 셀(211) 내에 저장된 웨이트가 비트 0이고, 상기 비트 라인 스위치(510)가 연결 해제될 때(즉, 상기 입력 데이터가 비트 0일 때), 상기 SA(221B)는 메모리 셀 전류를 감지하지 않는다.
즉, 도 5에 도시한 레이아웃을 통해, 상기 입력 데이터가 비트 1이고, 상기 웨이트가 비트 1일 때, 상기 SA(221B)는 (상기 곱셈 결과 "1"을 발생시키도록)상기 메모리 셀 전류를 감지한다. 다른 상황들에서, 상기 SA(221B)는 (상기 곱셈 결과 "0"을 발생시키도록)메모리 셀 전류를 감지하지 않는다. 상기 SA(221B)의 곱셈 결과는 상기 출력 래치(221C)로 전송된다. 상기 출력들(상기 출력 래치들(221C)의 비트 곱셈 결과(BM)로부터의)은 상기 공통 데이터 래치(221D)를 통해 상기 페이지 버퍼(PB)로 다시 저장된다.
상기 메모리 셀들(211)로부터의 상기 메모리 셀 전류들(IMC)은 합산되며, 상기 전환 유닛들(ADC0-ADC3) 중에서 하나 내로 입력된다.
상기 입력 데이터, 상기 웨이트, 상기 디지털 곱셈 결과 및 상기 아날로그 메모리 셀 전류(IMC) 사이의 관계는 다음 표와 같다.
상기 입력 데이터 | 상기 웨이트 | 상기 디지털 곱셈 결과 | IMC |
0 | 0(HVT) | 0 | 0 |
0 | +1(LVT) | 0 | 0 |
1 | 0(HVT) | 0 | IHVT |
1 | +1(LVT) | 1 | ILVT |
위의 표에서, HVT 및 LVT는 각기 하이-스레숄드(high-threshold) 메모리 셀 및 로우-스레숄드(low-threshold) 메모리 셀을 지칭하며, IHVT 및 ILVT는 상기 입력 데이터가 로직 1일 때에 상기 하이-스레숄드 메모리 셀(상기 웨이트는 0(HTV)임) 및 상기 로우-스레숄드 메모리 셀(상기 웨이트는 +1(LTV)임)에 의해 발생되는 각각의 아날로그 메모리 셀 전류(IMC)를 의미한다.
본 발명의 일 실시예에서, 곱셈 연산들에서, 선택된 비트라인 판독(SBL-판독) 명령은 단일-비트 표현으로 인한 변화 영향을 감소시키기 위해 재사용될 수 있다.
본 발명의 일 실시예에 따른 그루핑 연산(다수결 연산) 및 비트단위 계수를 도시하는 도 6a를 이제 참조한다. 도 6a에 도시한 바와 같이, "GM1"은 상기 웨이트들에 의한 상기 입력 데이터의 제1 MSB 벡터에 대한 비트단위 곱셈으로부터의 제1 곱셈 결과를 지칭하고, "GM2"는 상기 웨이트들에 의한 상기 입력 데이터의 제2 MSB 벡터에 대한 비트단위 곱셈으로부터의 제2 곱셈 결과를 지칭하며, "GM3"은 상기 웨이트들에 의한 상기 입력 데이터의 제3 MSB 벡터에 대한 비트단위 곱셈으로부터의 제3 곱셈 결과를 지칭하고, "GL"은 상기 웨이트들에 의한 상기 입력 데이터의 LSB 벡터에 대한 비트단위 곱셈으로부터의 제4 곱셈 결과를 지칭한다. 상기 그루핑 연산(상기 다수결 연산) 후, 상기 제1 곱셈 결과 "GM1"에 대해 수행된 그루핑 결과는 제1 그루핑 결과(CB1)(그 누산 웨이트(accumulation weight)는 22임)이고, 상기 제2 곱셈 결과 "GM2"에 대해 수행된 그루핑 결과는 제2 그루핑 결과(CB2)(그 누산 웨이트는 22임)이며, 상기 제3 곱셈 결과 "GM3"에 대해 수행된 그루핑 결과는 제3 그루핑 결과(CB3)(그 누산 웨이트는 22임)이고, 상기 제4 곱셈 결과 "GL"에 대한 직접 계수 결과는 제4 그루핑 결과(CB4)(그 누산 웨이트는 20임)이다.
도 6b는 도 4c에서의 하나의 누산 예를 도시한다. 도 4c 및 도 6b를 참조한다. 도 6b에 도시한 바와 같이, 상기 입력 데이터의 비트들(413B)(도 4c)은 상기 웨이트(414)와 곱해진다. 상기 웨이트(414)와 상기 입력 데이터의 비트들(413B)의 곱셈(도 4c)에 의해 발생된 상기 곱셈 결과의 첫 번째 넷의 비트들("0000")은 상기 제1 곱셈 결과 "GM1"로 그룹지어진다. 유사하게, 상기 웨이트(414)와 상기 입력 데이터의 비트들(413B)의 곱셈(도 4c)에 의해 발생된 상기 곱셈 결과의 다섯 번째 내지 여덟 번째 비트들("0000")은 상기 제2 곱셈 결과 "GM2"로 그룹지어진다. 상기 웨이트(414)와 상기 입력 데이터의 비트들(413B)의 곱셈(도 4c)에 의해 발생된 상기 곱셈 결과의 아홉 번째 내지 열두 번째 비트들("1111")은 상기 제3 곱셈 결과 "GM3"으로 그룹지어진다. 상기 웨이트(414)와 상기 입력 데이터의 비트들(413B)의 곱셈(도 4c)에 의해 발생된 상기 곱셈 결과의 열세 번째 내지 열여섯 번째 비트들("0010")은 직접 계수된다.
상기 그루핑 연산(상기 다수결 연산) 후, 상기 제1 그루핑 결과(CB1)는 "0"(그 누산 웨이트는 22임)이고, 상기 제2 그루핑 결과(CB2)는 "0"(그 누산 웨이트는 22임)이며, 상기 제3 그루핑 결과(CB3)는 "1"(그 누산 웨이트는 22임)이다. 계수에 있어서, 상기 MAC 결과는 각각의 상기 누산 웨이트를 곱한 상기 각각의 그루핑 결과들(CB1-CB4)을 누적하여 발생된다. 예를 들면, 도 6b에 도시한 바와 같이, 상기 MAC 연산 결과(OUT)는 is CB1*22+CB2*22+CB3*22+CB4*20=0*22+0*22+1*22+1*20=0000 0000 0000 0000 0000 0000 0000 0101=5이다.
본 발명의 일 실시예에서, 상기 그루핑 연산(예를 들면, 상기 다수결 원리)은 다음과 같다.
그룹 비트들 | 그루핑 결과(다수결 결과) |
1111(경우 A) | 1 |
1110(경우 B) | 1 |
1100(경우 C) | 1 또는 0 |
1000(경우 D) | 0 |
0000(경우 E) | 0 |
위의 표에서의 경우 A에서, 상기 그룹이 정확한 비트들(에러 비트들이 없는 것을 의미하는 "1111")을 가지기 때문에, 상기 다수결 결과는 1이다. 유사하게, 위의 표에서의 경우 E에서, 상기 그룹이 정확한 비트들(에러 비트들이 없는 것을 의미하는 "0000")을 가지기 때문에, 상기 다수결 결과는 0이다.경우 B에서, 상기 그룹이 하나의 에러 비트("1110" 중에서, 상기 비트 "0"이 에러임)를 가지기 때문에, 다수결 함수에 의해 상기 그룹 "1110"은 "1"인 것으로 결정된다. 경우 D에서, 상기 그룹이 하나의 에러 비트("0001" 중에서 상기 비트 "1"이 에러임)를 가지기 때문에, 다수결 함수에 의해 상기 그룹 "0001"은 "0"인 것으로 결정된다.
경우 C에서, 상기 그룹이 둘의 에러 비트들("1100" 중에서 상기 비트들 "00" 또는 "11"이 에러임)을 가지기 때문에, 다수결 함수에 의해 상기 그룹 "1100"은 "1" 또는 "0"인 것으로 결정된다.
따라서 본 발명의 일 실시예에서, 그루핑(다수결) 함수에 의해 상기 에러 비트들이 감소된다.
상기 그루핑 회로(240)로부터의 다수결 결과들은 비트단위 계수를 위해 상기 계수 유닛(250)으로 입력된다.
계수에 있어서, 상기 MSB 벡터의 곱셈 결과들에 대한 계수 결과 및 상기 LSB 벡터의 곱셈 결과들에 대한 계수 결과는 더해지거나 누적된다. 도 6a에 도시한 바와 같이, 둘의 누산기(accumulator)들이 이용된다. 제1 누산기는 헤비(heavy) 누산 웨이트(예를 들면, 22)가 할당된다. 상기 제1 누산기는, (1) 상기 곱셈 결과 GM1에 대한 상기 그루핑 연산(상기 다수결 연산)의 수행으로부터의 상기 그루핑 결과(상기 다수결 결과)(하나의 비트를 가짐), (2) 상기 곱셈 결과 GM2에 대한 상기 그루핑 연산(상기 다수결 연산)의 수행으로부터의 상기 그루핑 결과(상기 다수결 결과)(하나의 비트를 가짐), 그리고 (3) 상기 곱셈 결과 GM3에 대한 상기 그루핑 연산(상기 다수결 연산)의 수행으로부터의 상기 그루핑 결과(상기 다수결 결과)(하나의 비트를 가짐)를 누적한다. 상기 제1 누산기에 의한 누산 결과는 헤비 누산 웨이트(예를 들면, 22)로 할당된다. 제2 누산기는 라이트(light) 누산 웨이트(예를 들면, 20)가 할당된다. 상기 제2 누산기는 상기 곱셈 결과 GL(다중의 비트들 가짐)를 직접적으로 누적한다. 상기 둘의 누산기들에 의한 둘의 누적 결과들은 상기 MAC 연산 결과를 출력하기 위해 더해진다. 예를 들면, 이에 한정되는 것은 아니지만, (1) 상기 곱셈 결과 GM1에 대한 상기 그루핑(다수결) 연산을 수행하는 것으로부터의 상기 그루핑 결과(상기 다수결 결과)(하나의 비트를 가짐)는 "1"(하나의 비트)이고, (2) 상기 곱셈 결과 GM2에 대한 상기 그루핑(다수결) 연산을 수행하는 것으로부터의 상기 그루핑 결과(상기 다수결 결과)(하나의 비트를 가짐)는 "0"(하나의 비트)이며, (3) 상기 곱셈 결과 GM3에 대한 상기 그루핑(다수결) 연산을 수행하는 것으로부터의 상기 그루핑 결과(상기 다수결 결과)(하나의 비트를 가짐)는 "1"(하나의 비트)이다. 웨이팅(weighting) 후에 상기 제1 누산기에 의한 누산 결과는 2(=1+0+1)*22=8이다. 상기 곱셈 결과 GL은 4이다(셋의 비트들을 가짐). 상기 MAC 연산 결과(OUT)는 8+4=12이다.
상술한 바로부터, 본 발명의 일 실시예에서의 계수 또는 누산에서, 상기 입력 데이터는 상기 unFDP 형식이며, 상기 CDL 내에 저장된 데이터는 상기 MSB 벡터 및 상기 LSB 벡터로 그룹지어진다. 그루핑(다수결) 함수에 의해, 상기 MSB 벡터 및 상기 LSB 벡터 내의 에러 비트들이 감소된다.
또한, 본 발명의 일 실시예에서, 종래의 누산기(종래의 계수기)가 사용될 지라도, 계수 및 누산에서의 시간 요소가 감소된다. 이는 디지털 계수 명령(에러 비트 계수)이 본 발명의 일 실시예에 적용되고, 다른 벡터들(상기 MSB 벡터 및 상기 LSB 벡터)이 다른 누산 웨이트들로 할당되기 때문이다. 가능한 일예에서, 상기 누산 연산에서의 시간 소요는 약 40%까지 감소된다.
도 7a 및 도 7b는 본 발명의 일 실시예에서의 MAC 연산 흐름들을 도시한다. 도 7a는 상기 전환 유닛들(ADC0-ADC3)이 트리거되고, 상기 MAC 연산 흐름도가 혼성 MAC 연산 흐름으로 지칭될 수 있을 때의 상기 MAC 연산 흐름을 도시한다. 도 7b는 상기 전환 유닛들(ADC0-ADC3)이 트리거되지 않고, 상기 MAC 연산 흐름도 디지털 MAC 연산 흐름으로 지칭될 수 있을 때의 상기 MAC 연산 흐름을 도시한다. 상기 전환 유닛들(ADC0-ADC3)이 트리거되지 않을 때, 상기 출력 래치(130)는 비트 누산을 위해 상기 누산 회로(140)로 상기 비트 곱셈 결과들(BM0-BM3)을 출력한다(즉, 상기 출력 래치(130)가 상기 페이지 버퍼 선택 신호(PB_SEL)에 의해 제어되지 않으며, 상기 누산 회로(140)가 상기 누산 인에이블 신호(ACC_EN)에 의해 제어되지 않는다).
도 7a에서, 타이밍 기간(timing period) T11 동안에, 상기 입력이 브로드캐스트(broadcast)된다(즉, 상기 입력 데이터가 수신된다). 타이밍 기간 T12 동안에, 상기 메모리 평면들의 복수의 어드레스들이 수신된다. 상기 메모리 평면들은 다른 어드레스들에 기초하여 연산들을 수행한다. 그러나 본 발명의 일 실시예는 몇몇 메모리 평면들이 동일한 어드레스를 이용하는 상황을 방지하며, 이에 따라 상기 메모리 평면들은 다른 어드레스들을 이용한다. 타이밍 기간 T13 동안, 상기 메모리 평면들의 수신된 어드레스에 기초하여, 비트 곱셈이 수행된다. 타이밍 기간 T14 동안, 상기 비트 곱셈 결과들이 출력된다(예를 들면, 상기 메모리 평면들로부터 상기 누산 회로들로 출력된다). 타이밍 기간 T15 동안, 비트 누산이 수행된다. 다른 메모리 평면들에 대한 비트 누산이 순차적으로 실행된다. 예를 들면, 도 7a에 도시한 바와 같이, 상기 전환 결과들(AMACO0, AMACO2)은 상기 스레숄드 값보다 높고, 상기 메모리 평면들(MP0, MP2)에 대한 비트 누산은 순차적으로 수행되는 반면에 상기 메모리 평면들(MP1, MP3)에 대한 비트 누산은 수행되지 않는다. 물론, 상기 비트 누산의 순서가 도 7a에 의해 한정되는 것은 아니다. 도 7a에서, 상기 메모리 평면(MP2)에 대한 비트 누산이 먼저 실행되고, 이후에 상기 메모리 평면(MP)에 대한 비트 누산이 실행되며, 이러한 점도 본 발명의 사상과 범주 내에 속한다. 타이밍 기간 T16 동안, 상기 MAC 연산 결과들이 출력되며, 상기 메모리 평면들의 다음 어드레스들도 출력된다.
도 7b에서, 타이밍 기간 T21-T24 및 T26은 상기 타이밍 기간 T11-T14 및 T16와 동일하거나 유사하다. 상기 타이밍 기간 T25(비트 누산) 동안, 상기 전환 유닛들(ADC0-ADC3)이 트리거되지 않기 때문에, 비트 누산에서, 모든 메모리 평면들에 대한 비트 누산이 순차적으로 실행된다. 예를 들면, 도 7b에 도시한 바와 같이, 상기 메모리 평면들(MP0, MP1, MP2, MP3)에 대한 비트 누산이 순차적으로 실행된다. 물론, 상기 비트 누산의 순서가 도 7b에 의해 제한되지 않으며, 상기 비트 누산의 다른 실행 순서도 가능하고, 이러한 점도 본 발명의 사상과 범주 내에 속한다.
도 7a 및 도 7b에 도시한 바와 같이, 본 발명의 제1 실시예에서, 다른 메모리 평면들에 대한 상기 비트 곱셈 연산들은 병렬로 수행되는 반면에 다른 메모리 평면들에 대한 상기 비트 누산 연산들은 순차적으로 수행된다. 이에 따라, 본 발명의 제1 실시예에서, 스케줄링(scheduling)은 회로 면적 및 전력 소모를 감소시키는 중앙 집중 제어이다.
도 7a 및 도 7b로부터, 본 발명의 실시예에서의 상기 MAC 연산은 두 가지 유형들의 하위-연산(sub-operation)들을 가진다. 상기 제1 하위-연산은 상기 입력 데이터와 상기 웨이트들을 곱하는 곱셈이며, 상기 선택된 비트 라인 판독 명령에 기초한다. 상기 제2 하위-연산은 누산(데이터 계수), 특히 페일-비트 계수이다. 본 발명의 다른 가능한 실시예에서, 보다 많은 계수 유닛들이 상기 계수 또는 누산 연산들을 촉진시키도록 이용될 수 있다.
제2 실시예
도 8은 본 발명의 제2 실시예에 따른 인메모리 컴퓨팅(IMC) 메모리 장치(800)의 기능 블록도를 도시한다. 상기 메모리 장치(800)는 복수의 메모리 평면들, 복수의 페이지 버퍼들, 복수의 전환 유닛들, 복수의 누산 검출 회로들, 출력 래치(830) 및 복수의 누산 회로들을 포함한다. 상기 전환 유닛은, 예를 들면, 이에 한정되는 것은 아니지만, 아날로그-디지털 컨버터(ADC)이다.
편의성을 위해, 도 8에서, 상기 메모리 장치(800)는 넷의 메모리 평면들(MP0-MP3), 넷의 페이지 버퍼들(PB0-PB3), 넷의 전환 유닛들(ADC0-ADC3), 넷의 누산 검출 회로들(820-0 내지 820-3), 출력 래치(830) 및 넷의 누산 회로들(840-0 내지 840-3)을 포함한다. 그러나 본 발명이 이에 한정되는 것은 아니다.
상기 페이지 버퍼들(PB0-PB3) 입력 데이터(IN)를 저장할 수 있고, 상기 입력 데이터(IN)를 상기 메모리 평면들(MP0-MP3)로 전송할 수 있다. 상기 메모리 평면들(MP0~MP3)에 의해 발생되는 복수의 비트 곱셈 결과들(BM0-BM3)은 상기 누산 회로들(840-0 내지 840-3)로 전송하기 위해 상기 페이지 버퍼들(PB0-PB3)에 다시 저장된다.
상기 메모리 평면들(MP0-MP3)은 상기 페이지 버퍼들(PB0-PB3)에 연결된다. 상기 메모리 평면들(MP0-MP3)은 상기 비트 곱셈 결과들(BM0-BM3)을 병렬로 발생시키기 위해 상기 페이지 버퍼들(PB0-PB3)로부터의 상기 입력 데이터(IN)와 함께 상기 메모리 평면들(MP0-MP3)에 저장된 웨이트(weight)들에 대해 비트 곱셈 연산들(예를 들면, 비트 AND 연산들)을 병렬로 수행한다. 상기 비트 곱셈 결과들(BM0-BM3)은 상기 페이지 버퍼들(PB0-PB3) 내로 다시 저장된다. 또한, 상기 메모리 평면(MP0-MP3)의 하나 또는 그 이상의 메모리 셀 스트링(memory cell string)(들)이 센싱 동작들을 가능하게 하도록 선택된다. 상기 메모리 평면들(MP0-MP3)에 저장된 상기 웨이트들 및 상기 페이지 버퍼들(PB0-PB3)로부터의 상기 입력 데이터(IN)가 비트 곱해질 때, 상기 메모리 평면들(MP0-MP3)의 복수의 메모리 셀들이 복수의 메모리 셀 전류들(IMC0-IMC3)을 발생시키며, 상기 메모리 셀 전류들(IMC0-IMC3)은 상기 전환 유닛들(ADC0-ADC3) 내로 공통적으로 입력된다.
상기 전환 유닛들(ADC0-ADC3)은 상기 메모리 평면들(MP0-MP3)에 연결된다. 상기 메모리 평면들(MP0-MP3)의 메모리 셀 전류들(IMC0-IMC3)은 각기 상기 전환 유닛들(ADC0-ADC3) 내로 입력된다. 상기 전환 유닛들(ADC0-ADC3)은 상기 메모리 평면들(MP0-MP3)의 메모리 셀 전류들(IMC0-IMC3)을 복수의 전환 결과들(AMACO0-AMACO3)로 전환시킨다.
상기 누산 검출 회로들(820-0 내지 820-3)은 상기 전환 유닛들(ADC0-ADC3)에 연결된다. 상기 누산 검출 회로들(820-0 내지 820-3)은 복수의 누산 인에이블 신호들(ACC_EN0-ACC_EN3)을 발생시키도록 상기 누산 회로들(840-0 내지 840-3)에 대해 상기 전환 유닛들(ADC0-ADC3)의 전환 결과들(AMACO0-AMACO3)을 스레숄드 값과 비교한다. 상기 전환 결과들(AMACO0-AMACO3)이 상기 스레숄드 값보다 높을 때, 대응하는 누산 인에이블 신호들(ACC_EN0-ACC_EN3)은 가능 상태에 있는 데 반하여 상기 누산 인에이블 신호들(ACC_EN0-ACC_EN3)은 불능 상태에 있다.
상기 누산 회로들(840-0 내지 840-3)은 상기 누산 검출 회로들(820-0 내지 820-3)에 연결된다. 상기 누산 인에이블 신호들(ACC_EN0-ACC_EN3)에 의해 가능할 때, 상기 누산 회로들(840-0 내지 840-3)은 복수의 디지털 누산 결과들(DMACO0-DMACO3)을 발생시키도록 상기 메모리 평면들(MP0-MP3)로부터의 비트 곱셈 결과들(BM0-BM3)에 대해 비트 누산 연산들을 수행한다.
상기 출력 래치(830)는 상기 누산 회로들(840-0 내지 840-3)에 연결된다. 상기 출력 래치(830)는 상기 누산 회로들(840-0 내지 840-3)로부터의 디지털 누산 결과들(DMACO0-DMACO3)을 상기 MAC 연산 결과(OUT) 내로 출력한다.
상기 누산 회로들(840-0 내지 840-3)은 도 2의 누산 회로(140)와 동일하거나 유사한 회로 구조 및 동작들을 가질 수 있다, 이에 따라 상세한 설명은 생략한다. 유사하게, 도 2의 메모리 평면(MP)이 도 8의 메모리 평면들(MP0-MP3)을 구현하기 위해 이용될 수 있다.
본 발명의 제2 실시예에서, 각각의 메모리 평면의 셀 전류들은 개별적으로 양자화된다.
제2 실시예에서의 데이터 매핑은 제1 실시예에서의 데이터 매핑과 동일하거나 유사할 수 있으며, 이에 따라 상세한 설명은 생략한다.
도 9a 및 도 9b는 본 발명의 제2 실시예에서 MAC 연산 흐름들을 도시한다. 도 9a는 상기 전환 유닛들(ADC0-ADC3)이 트리거되고, 상기 MAC 연산 흐름도 상기 혼성 MAC 연산 흐름으로 지칭될 수 있을 때의 상기 MAC 연산 흐름을 도시한다. 도 9b는 상기 전환 유닛들(ADC0-ADC3)이 트리거되지 않고, 상기 MAC 연산 흐름도 상기 디지털 MAC 연산 흐름으로 지칭될 수 있을 때의 상기 MAC 연산 흐름을 도시한다. 상기 전환 유닛들(ADC0-ADC3)이 트리거되지 않을 때, 상기 누산 회로들(840-0 내지 840-3)은 상기 비트 곱셈 결과들(BM0-BM3)에 대해 비트 누산을 수행한다(즉, 상기 누산 회로들(840-0 내지 840-3)은 상기 누산 인에이블 신호들(ACC_EN0-ACC_EN3)에 의해 제어되지 않는다).
도 9a에서, 타이밍 기간 T31-T34 및 T36은 상기 타이밍 기간 T11-T14 및 T16과 동일하거나 유사하다. 상기 타이밍 기간 T35 동안, 상기 비트 누산이 수행된다. 비트 누산에서, 다른 메모리 평면들에 대한 비트 누산이 병렬로 실행된다. 예를 들면, 도 9a에 도시한 바와 같이, 상기 전환 결과들(AMACO0, AMACO2)이 상기 스레숄드 값보다 높을 경우에 상기 메모리 평면들(MP0, MP2)에 대한 비트 누산은 병렬로 실행되는 반면에 상기 메모리 평면들(MP1, MP3)에 대한 비트 누산은 실행되지 않는다.
도 9b에서, 타이밍 기간 T41-T44 및 T46은 상기 타이밍 기간 T11-T14 및 T16과 동일하거나 유사하다. 상기 타이밍 기간 T45 동안, 상기 전환 유닛들(ADC0-ADC3)이 트리거되지 않기 때문에, 비트 누산에서 모든 메모리 평면들에 대한 비트 누산이 병렬로 실행된다.
도 9a 및 도 9b에 도시한 바와 같이, 본 발명의 제2 실시예에서, 다른 메모리 평면들에 대한 상기 비트 곱셈 연산들이 병렬로 수행되는 반면에 다른 메모리 평면들에 대한 상기 비트 누산 연산들이 병렬로 수행된다. 이에 따라, 본 발명의 제2 실시예에서, 스케줄링은 MAC 연산들을 고정시키는 분산 제어이다.
도 3, 도 4a 내지 도 4c, 도 5 및 도 6a 내지 도 6b는 본 발명의 제2 실시예에도 적용될 수 있다.
제3 실시예
도 10은 본 발명의 제3 실시예에 따른 메모리 장치를 위한 동작 방법을 도시한다. 본 발명의 제3 실시예에 따른 상기 메모리 장치를 위한 동작 방법은 복수의 페이지 버퍼들(1010) 내에 입력 데이터를 저장하는 단계를 포함하고; 복수의 메모리 평면들의 수신된 어드레스들에 기초하여, 상기 메모리 평면들에 의해, 병렬로 복수의 비트 곱셈 결과들을 발생시키도록 상기 복수의 메모리 평면들 내에 저장된 복수의 웨이트들 및 상기 입력 데이터에 대해 병렬로 비트 곱셈을 수행하는 단계를 포함하며, 상기 복수의 비트 곱셈 결과들은 상기 페이지 버퍼들(1020)로 다시 저장되고; 곱셈 및 누적(multiply-accumulate: MAC) 연산 결과를 발생시키도록 병렬로 상기 메모리 평면들의 상기 복수의 비트 곱셈 결과들에 대해 비트 누산을 수행하는 단계를 포함하며, 상기 MAC 연산 결과가 출력되고, 상기 메모리 평면들의 다른 어드레스들도 출력된다(1030). 단계 1010-단계 1030의 세부 사항들은 상술한 바와 같으며, 이에 따라 생략된다.
상기 판독 전압은 상기 ADC로부터의 출력 값 및 비트 1의 판독에 영향을 미칠 수 있다. 본 발명의 제2 내지 제3 실시예들에서, 동작 조건들(예를 들면, 이에 한정되는 것은 아니지만, 프로그래밍 사이클, 온도 또는 판독 교란)에 기초하여, 상기 판독 전압은 높은 정확도 및 높은 신뢰성을 유지하도록 주기적으로 보정될 수 있다.
본 발명의 제1 내지 제3 실시예들은 NAND형 플래시 메모리, 또는 유지 및 열 변화에 민감한 메모리 장치, 예를 들면 이에 한정되는 것은 아니지만, NOR형 플래시 메모리, 상변화 메모리, 자기 RAM 또는 저항 RAM에 적용된다.
본 발명의 제1 내지 제3 실시예들은 3D 구조의 메모리 장치 및 2D 구조의 메모리 장치, 예를 들면 이에 한정되는 것은 아니지만, 2D/3D NAND형 플래시 메모리, 2D/3D NOR형 플래시 메모리, 2D/3D 상변화 메모리, 2D/3D 자기 메모리 RAM 또는 2D/3D 저항 RAM에 작용된다.
비록 본 발명의 제1 내지 제3 실시예들에서, 상기 입력 데이터 및/또는 상기 웨이트는 상기 MSB 벡터 및 상기 LSB 벡터(즉, 두 벡터들)로 나누어지지만, 본 발명이 이에 한정되는 것은 아니다. 본 발명의 다른 가능한 실시예에서, 상기 입력 데이터 및/또는 상기 웨이트는 보다 많은 벡터들로 나누어지며, 이러한 점도 여전히 본 발명의 사상과 범주 내에 속한다.
본 발명의 제1 내지 제3 실시예들은 다수결 그루핑 기술뿐만 아니라 누산을 촉진시키는 다른 그루핑 기술들에도 적용된다.
본 발명의 제1 실시예 내지 제3 실시예는 AI 기술들, 예를 들면 이에 한정되는 것은 아니지만, 얼굴 인식에 적용된다.
본 발명의 제1 실시예 내지 제3 실시예에서, 상기 전환 유닛은 전류 모드 ADC, 전압 모드 ADC 또는 혼성 모드 ADC에 의해 구현될 수 있다.
본 발명의 제1 내지 제3 실시예들은 순차 MAC 연산들 또는 병렬 MAC 연산들에 적용될 수 있다.
본 발명의 제1 내지 제3 실시예들은 불휘발성 메모리 또는 휘발성 메모리에 적용될 수 있다.
해당 기술 분야의 숙련자에게는 개시된 실시예들에 대해 다양한 변경들과 변화들이 이루어질 수 있는 점이 명확해질 것이다. 본문의 내용과 실시예들은 다음의 특허 청구 범위 및 그 균등물들에 의해 나타나는 본 발명의 진정한 범주 내에서 예시적으로만 간주되도록 의도된 것들이다.
100:메모리 장치
120:누산 검출 회로
130:출력 래치 140:누산 회로
210:메모리 블록 211:메모리 셀
220:곱셈 회로 221:곱셈 유닛들
221A:입력 래치 221B:감지 증폭기
221C:출력 래치 221D:공통 데이터 래치
240:그루핑 회로 241:그루핑 유닛들
250:계수 유닛 505:래치
510:비트 라인 스위치
130:출력 래치 140:누산 회로
210:메모리 블록 211:메모리 셀
220:곱셈 회로 221:곱셈 유닛들
221A:입력 래치 221B:감지 증폭기
221C:출력 래치 221D:공통 데이터 래치
240:그루핑 회로 241:그루핑 유닛들
250:계수 유닛 505:래치
510:비트 라인 스위치
Claims (10)
- 메모리 장치에 있어서,
입력 데이터를 저장하는 복수의 페이지 버퍼들을 포함하고;
상기 페이지 버퍼들에 연결되는 복수의 메모리 평면들을 포함하며, 복수의 웨이트(weight)들이 상기 메모리 평면들의 수신된 어드레스들에 기초하여 상기 메모리 평면들 내에 저장되고, 상기 메모리 평면들은 병렬로 복수의 비트 곱셈 결과들을 발생시키도록 상기 웨이트들 및 상기 페이지 버퍼들 내의 상기 입력 데이터에 대해 비트 곱셈(bit multiplication)을 수행하며, 상기 비트 곱셈 결과들은 상기 페이지 버퍼들로 다시 저장되고;
곱셈 및 누적(multiply-accumulate: MAC) 연산 결과를 발생시키도록 병렬로 또는 순차적으로 상기 메모리 평면들의 상기 비트 곱셈 결과들에 대해 비트 누산(bit accumulation)을 수행하기 위해 상기 페이지 버퍼들에 연결되는 적어도 하나의 누산 회로를 포함하는 것을 특징으로 하는 메모리 장치. - 제1항에 있어서,
상기 메모리 평면들로부터의 메모리 셀 전류들을 복수의 전환 결과들로 전환시키기 위해 상기 메모리 평면에 연결되는 복수의 전환 유닛들;
페이지 버퍼 선택 신호를 발생시키고, 누산 인에이블 신호(accumulation enable signal)를 발생시키도록 상기 전환 유닛들의 전환 결과들을 스레숄드 값(threshold value)과 각기 비교하기 위해 상기 전환 유닛들에 연결되는 누산 검출 회로; 및
상기 누산 검출 회로에 연결되는 출력 래치를 더 포함하며, 상기 페이지 버퍼 선택 신호에 대응하여, 상기 출력 래치는 상기 적어도 하나의 누산 회로에 대해 대응하는 페이지 버퍼들 내에 저장된 대응하는 비트 곱셈 결과들을 선택하고, 상기 누산 인에이블 신호에 대응하여, 상기 적어도 하나의 누산 회로는 상기 MAC 연산 결과를 발생시키도록 상기 출력 래치로부터의 상기 비트 곱셈 결과들에 대해 비트 누산 연산들을 순차적으로 수행하는 것을 특징으로 하는 메모리 장치. - 제2항에 있어서,
상기 전환 유닛들이 트리거(trigger)될 때, 상기 메모리 장치는 혼성 MAC 연산을 수행하고, 상기 적어도 하나의 누산 회로는 상기 전환 결과들 중에서 적어도 하나의 표적 전환 결과에 대해 비트 누산을 순차적으로 수행하며, 상기 적어도 하나의 표적 전환 결과는 상기 스레숄드 값보다 크고;
상기 전환 유닛들이 트리거되지 않을 때, 상기 메모리 장치는 디지털 MAC 연산을 수행하며, 상기 적어도 하나의 누산 회로는 모든 상기 전환 결과들에 대해 비트 누산을 순차적으로 수행하고, 상기 전환 결과들은 상기 스레숄드 값보다 높지 않거나, 그렇지 않으며;
상기 적어도 하나의 누산 회로는 복수의 그루핑(grouping) 결과들을 발생시키도록 상기 메모리 평면들로부터의 상기 비트 곱셈 결과들에 대해 그루핑 연산들을 수행하기 위해 그루핑 회로를 포함하고, 상기 MAC 연산 결과를 발생시키도록 상기 그루핑 결과들에 대해 비트단위 계수(counting)를 수행하는 계수 유닛을 포함하며;
각각의 상기 입력 데이터 또는 각각의 상기 웨이트들의 복수의 비트들은 복수의 비트 벡터(bit vector)들로 나누어지고;
상기 비트 벡터들의 각각의 비트는 이진 형식으로부터 단항 코드로 변환되며;
상기 단항 코드로 나타내어지는 상기 비트 벡터들의 상기 각각의 비트는 복수의 횟수들로 언폴딩 도트 곱(unfolding dot product: unFDP) 형식으로 중복되며;
상기 곱셈 회로는 상기 비트 곱셈 결과들을 발생시키도록 상기 unFDP 포맷으로 나타내어지는 상기 입력 데이터 및 상기 웨이트들에 대해 곱셈 연산들을 수행하는 것을 특징으로 하는 메모리 장치. - 제1항에 있어서,
상기 메모리 평면들로부터의 복수의 메모리 셀 전류들을 복수의 전환 결과들로 전환시키기 위해 상기 메모리 평면에 연결되는 복수의 전환 유닛들;
복수의 누산 인에이블 신호들을 발생시키도록 상기 전환 유닛들의 상기 전환 결과들을 스레숄드 값과 비교하기 위해 상기 전환 유닛들에 연결되는 복수의 누산 검출 회로들; 및
출력 래치를 더 포함하며,
상기 적어도 하나의 누산 회로는 복수의 누산 회로들을 포함하고, 상기 누산 검출 회로들에 연결되며, 상기 누산 인에이블 신호들에 의해 가능할 때, 상기 누산 회로들은 복수의 디지털 누산 결과들을 발생시키도록 상기 메모리 평면들로부터의 상기 비트 곱셈 결과들에 대해 병렬로 비트 누산 연산들을 수행하고;
상기 누산 회로들에 연결되는 상기 출력 래치는 상기 누산 회로들로부터의 상기 디지털 누산 결과들을 상기 MAC 연산 결과 내로 출력하는 것을 특징으로 하는 메모리 장치. - 제4항에 있어서,
상기 전환 유닛들이 트리거될 때, 상기 메모리 장치는 혼성 MAC 연산을 수행하고, 상기 누산 회로들은 상기 전환 결과들 중에서 적어도 하나의 표적 전환 결과에 대해 병렬로 비트 누산을 수행하며, 상기 적어도 하나의 표적 전환 결과는 상기 스레숄드 값보다 높고;
상기 전환 유닛들이 트리거되지 않을 때, 상기 메모리 장치는 디지털 MAC 연산을 수행하며, 상기 누산 회로들은 모든 상기 전환 결과들에 대해 병렬로 비트 누산을 수행하고, 상기 전환 결과들은 상기 스레숄드 값보다 높지 않거나, 그렇지 않으며;
각각의 상기 입력 데이터 또는 각각의 상기 웨이트들의 복수의 비트들은 복수의 비트 벡터들로 나누어지고;
상기 비트 벡터들의 각각의 비트는 이진 형식으로부터 단항 코드로 변환되며;
상기 단항 코드로 나타내어지는 상기 비트 벡터들의 상기 각각의 비트는 복수의 횟수들로 unFDP 형식으로 중복되고;
상기 곱셈 회로는 상기 비트 곱셈 결과들을 발생시키도록 상기 unFDP 형식으로 나타내어지는 상기 입력 데이터 및 상기 웨이트들에 대해 곱셈 연산들을 수행하는 것을 특징으로 하는 메모리 장치. - 메모리 장치를 위한 동작 방법에 있어서,
복수의 페이지 버퍼들 내에 입력 데이터를 저장하는 단계를 포함하고;
복수의 메모리 평면들의 수신된 어드레스들에 기초하여, 상기 메모리 평면들에 의해 병렬로 복수의 비트 곱셈 결과들을 발생시키도록 상기 복수의 메모리 평면들 내에 저장된 복수의 웨이트들 및 상기 입력 데이터에 대해 병렬로 비트 곱셈을 수행하는 단계를 포함하며, 상기 복수의 비트 곱셈 결과들은 상기 페이지 버퍼들로 다시 저장되고;
곱셈 및 누적(MAC) 연산 결과를 발생시키도록 병렬로 또는 순차적으로 상기 메모리 평면들의 상기 복수의 비트 곱셈 결과들에 대해 비트 누산을 수행하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 위한 동작 방법. - 제6항에 있어서,
상기 메모리 평면들로부터의 복수의 메모리 셀 전류들을 복수의 전환 결과들로 전환시키는 단계;
페이지 버퍼 선택 신호를 발생시키고, 누산 인에이블 신호를 발생시키도록 상기 전환 결과들을 스레숄드 값과 각기 비교하는 단계; 및
상기 페이지 버퍼 신호 및 상기 누산 인에이블 신호에 대응하여, 상기 MAC 연산 결과를 발생시키도록 비트 누산 연산들을 순차적으로 수행하기 위해 대응하는 페이지 버퍼들 내에 저장된 대응하는 비트 곱셈 결과들을 선택하는 단계를 더 포함하는 것을 특징으로 하는 메모리 장치를 위한 동작 방법. - 제7항에 있어서,
상기 전환 결과들 중에서 적어도 하나의 표적 전환 결과에 대해 순차적으로 비트 누산을 수행하는 혼성 MAC 연산을 수행하며, 상기 적어도 하나의 표적 전환 결과는 상기 스레숄드 값보다 높고;
모든 상기 전환 결과들에 대해 순차적으로 비트 누산을 수행하는 디지털 MAC 연산을 수행하며, 상기 전환 결과들은 상기 스레숄드 값보다 높지 않거나, 그렇지 않으며;
복수의 그루핑 결과들을 발생시키도록 상기 메모리 평면들로부터의 상기 비트 곱셈 결과들에 대해 그루핑 연산들을 수행하고, 상기 MAC 연산 결과를 발생시키도록 상기 그루핑 결과들에 대해 비트단위 계수를 수행하며;
각각의 상기 입력 데이터 또는 각각의 상기 웨이트들의 복수의 비트들은 복수의 비트 벡터들로 나누어지고;
상기 비트 벡터들의 각각의 비트는 이진 형식으로부터 단항 코드로 변환되며;
상기 단항 코드로 나타내어지는 상기 비트 벡터들의 상기 각각의 비트는 복수의 횟수들로 unFDP 형식으로 중복되고;
상기 곱셈 회로는 상기 비트 곱셈 결과들을 발생시키도록 상기 unFDP 형식으로 나타내어지는 상기 입력 데이터 및 상기 웨이트들에 대해 곱셈 연산들을 수행하는 것을 특징으로 하는 메모리 장치를 위한 동작 방법. - 제6항에 있어서,
상기 메모리 평면들로부터의 복수의 메모리 셀 전류들을 복수의 전환 결과들로 전환시키는 단계;
복수의 누산 인에이블 신호들을 발생시키도록 상기 전환 결과들을 스레숄드 값과 각기 비교하는 단계; 및
상기 누산 인에이블 신호들에 대응하여, 복수의 디지털 누산 결과들을 발생시키도록 상기 메모리 평면들로부터의 상기 비트 곱셈 결과들에 대해 병렬로 비트 누산 연산들을 수행하는 단계; 및
상기 디지털 누산 결과들을 상기 MAC 연산 결과 내로 출력하는 단계를 더 포함하는 것을 특징으로 하는 메모리 장치를 위한 동작 방법. - 제9항에 있어서,
상기 전환 결과들 중에서 적어도 하나의 표적 전환 결과에 대해 병렬로 비트 누산을 수행하는 혼성 MAC 연산을 수행하며, 상기 적어도 하나의 표적 전환 결과는 상기 스레숄드 값보다 높고;
모든 상기 전환 결과들에 대해 병렬로 비트 누산을 수행하는 디지털 MAC 연산을 수행하며, 상기 전환 결과들은 상기 스레숄드 값보다 높지 않거나, 그렇지 않으며;
복수의 그루핑 결과들을 발생시키도록 상기 메모리 평면들로부터의 상기 비트 곱셈 결과들에 대해 그루핑 연산들을 수행하고, 상기 MAC 연산 결과를 발생시키도록 상기 그루핑 결과들에 대해 비트단위 계수를 수행하며;
각각의 상기 입력 데이터 또는 각각의 상기 웨이트들의 복수의 비트들은 복수의 비트 벡터들로 나누어지고;
상기 비트 벡터들의 각각의 비트는 이진 형식으로부터 단항 코드로 변환되며;
상기 단항 코드로 나타내어지는 상기 비트 벡터들의 상기 각각의 비트는 복수의 횟수들로 unFDP 형식으로 중복되고;
상기 곱셈 회로는 상기 비트 곱셈 결과들을 발생시키도록 상기 unFDP 형식으로 나타내어지는 상기 입력 데이터 및 상기 웨이트들에 대해 곱셈 연산들을 수행하는 것을 특징으로 하는 메모리 장치를 위한 동작 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163175554P | 2021-04-16 | 2021-04-16 | |
US63/175,554 | 2021-04-16 | ||
US17/542,557 | 2021-12-06 | ||
US17/542,557 US11656988B2 (en) | 2021-04-16 | 2021-12-06 | Memory device and operation method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220143562A true KR20220143562A (ko) | 2022-10-25 |
Family
ID=83602553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220020971A KR20220143562A (ko) | 2021-04-16 | 2022-02-17 | 메모리 장치 및 그 동작 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11656988B2 (ko) |
JP (1) | JP7206531B2 (ko) |
KR (1) | KR20220143562A (ko) |
CN (1) | CN115220690A (ko) |
TW (1) | TWI788128B (ko) |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3260357B2 (ja) * | 1990-01-24 | 2002-02-25 | 株式会社日立製作所 | 情報処理装置 |
JP3250244B2 (ja) | 1992-01-23 | 2002-01-28 | 松下電器産業株式会社 | トラックジャンプ制御装置 |
JP2001188767A (ja) | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
JP3333779B2 (ja) | 2001-12-26 | 2002-10-15 | 松下電器産業株式会社 | 行列演算装置 |
US9507603B2 (en) | 2013-03-09 | 2016-11-29 | Gerald George Pechanek | Methods and apparatus for signal flow graph pipelining that reduce storage of temporary variables |
US10049322B2 (en) | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
US10824934B2 (en) * | 2017-01-12 | 2020-11-03 | Texas Instruments Incorporated | Methods and apparatus for matrix processing in a convolutional neural network |
JP2019057053A (ja) * | 2017-09-20 | 2019-04-11 | 東芝メモリ株式会社 | 半導体記憶装置 |
US11934480B2 (en) | 2018-12-18 | 2024-03-19 | Macronix International Co., Ltd. | NAND block architecture for in-memory multiply-and-accumulate operations |
KR102658831B1 (ko) * | 2018-12-31 | 2024-04-18 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 비휘발성 메모리 장치를 이용한 계산 방법 |
TWI718566B (zh) | 2019-06-21 | 2021-02-11 | 旺宏電子股份有限公司 | 立體記憶體陣列裝置與乘積累加方法 |
US11562205B2 (en) * | 2019-09-19 | 2023-01-24 | Qualcomm Incorporated | Parallel processing of a convolutional layer of a neural network with compute-in-memory array |
-
2021
- 2021-12-06 TW TW110145455A patent/TWI788128B/zh active
- 2021-12-06 US US17/542,557 patent/US11656988B2/en active Active
- 2021-12-17 CN CN202111558035.3A patent/CN115220690A/zh active Pending
-
2022
- 2022-01-31 JP JP2022012871A patent/JP7206531B2/ja active Active
- 2022-02-17 KR KR1020220020971A patent/KR20220143562A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
TWI788128B (zh) | 2022-12-21 |
TW202242873A (zh) | 2022-11-01 |
US11656988B2 (en) | 2023-05-23 |
JP2022164559A (ja) | 2022-10-27 |
CN115220690A (zh) | 2022-10-21 |
JP7206531B2 (ja) | 2023-01-18 |
US20220334964A1 (en) | 2022-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102207909B1 (ko) | 비트라인의 전하 공유에 기반하는 cim 장치 및 그 동작 방법 | |
Jiang et al. | Analog-to-digital converter design exploration for compute-in-memory accelerators | |
US20230315388A1 (en) | Multiply-Accumulate Circuit | |
JP2523590B2 (ja) | 多値演算回路 | |
US11764801B2 (en) | Computing-in-memory circuit | |
KR102603799B1 (ko) | 메모리 장치 및 그 동작 방법 | |
CN110889080B (zh) | 乘积累加运算装置、乘积累加运算方法和系统 | |
KR20220143562A (ko) | 메모리 장치 및 그 동작 방법 | |
Chunn et al. | Comparison of thermometer to binary encoders for flash ADCs | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
KR102603795B1 (ko) | 메모리 장치 및 그 동작 방법 | |
Xuan et al. | HPSW-CIM: A novel ReRAM-based computing-in-memory architecture with constant-term circuit for full parallel hybrid-precision-signed-weight MAC operation | |
Sadath | Design of a Novel Encoder for Flash Analog to Digital Converter | |
CN107222212B (zh) | 提高逐次逼近型模数转换器电路信噪比的方法与实现电路 | |
TWI783573B (zh) | 記憶體裝置及其操作方法 | |
US20230161556A1 (en) | Memory device and operation method thereof | |
CN117492696A (zh) | 乘加运算电路、存储器及电子设备 | |
US20230050279A1 (en) | Integrated circuit and method of operating same | |
US11347478B2 (en) | Analog arithmetic unit | |
US20240113726A1 (en) | Time-interleaved analog to digital converter based on control of counter | |
CN108449076B (zh) | 动态比较器、模数转换器、模数转换系统以及校准方法 | |
Shi et al. | Specific ADC of NVM-Based Computation-in-Memory for Deep Neural Networks | |
Zurla et al. | Designing Circuits for AiMC Based on Non-Volatile Memories: a Tutorial Brief on Trade-offs and Strategies for ADCs and DACs Co-design | |
Kunal et al. | Automated synthesis of mixed-signal ML inference hardware under accuracy constraints | |
Yang et al. | Digital Computation-in-Memory Design with Adaptive Floating Point for Deep Neural Networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |