KR102603799B1 - 메모리 장치 및 그 동작 방법 - Google Patents

메모리 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR102603799B1
KR102603799B1 KR1020210116479A KR20210116479A KR102603799B1 KR 102603799 B1 KR102603799 B1 KR 102603799B1 KR 1020210116479 A KR1020210116479 A KR 1020210116479A KR 20210116479 A KR20210116479 A KR 20210116479A KR 102603799 B1 KR102603799 B1 KR 102603799B1
Authority
KR
South Korea
Prior art keywords
accumulation
multiplication
circuit
digital
analog
Prior art date
Application number
KR1020210116479A
Other languages
English (en)
Other versions
KR20220033021A (ko
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 매크로닉스 인터내셔널 컴퍼니 리미티드
Publication of KR20220033021A publication Critical patent/KR20220033021A/ko
Application granted granted Critical
Publication of KR102603799B1 publication Critical patent/KR102603799B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06JHYBRID COMPUTING ARRANGEMENTS
    • G06J1/00Hybrid computing arrangements
    • 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
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • Algebra (AREA)
  • Neurology (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Nonlinear Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computer Hardware Design (AREA)
  • Automation & Control Theory (AREA)
  • Fuzzy Systems (AREA)
  • Read Only Memory (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)

Abstract

메모리 장치 및 그 동작 방법이 제공된다. 상기 메모리 장치는 복수의 웨이트들을 저장하기 위한 복수의 메모리 셀들을 구비하는 메모리 어레이를 포함하고; 복수의 곱셈 결과들을 발생시키도록 복수의 입력 데이터 및 상기 웨이트들에 대해 비트단위 곱셈을 수행하기 위한 곱셈 회로를 포함하고, 상기 비트단위 곱셈의 수행에서, 상기 메모리 셀들은 복수의 메모리 셀 전류들을 발생시키며; 상기 곱셈 결과들에 대해 디지털 누산을 수행하기 위한 디지털 누산 회로를 포함하고; 제1 곱셈 및 누적(MAC) 연산 결과를 발생시키도록 상기 메모리 셀 전류들에 대해 아날로그 누산을 수행하기 위한 아날로그 누산 회로를 포함하며; 상기 아날로그 누산, 상기 디지털 누산 또는 혼성 누산을 수행하는 지를 결정하기 위한 결정 유닛을 포함하고, 상기 혼성 누산의 수행에서, 상기 디지털 누산 회로가 상기 제1 MAC 연산 결과에 기초하여 작동된다.

Description

메모리 장치 및 그 동작 방법{MEMORY DEVICE AND OPERATION METHOD THEREOF}
본 발명은 대체로 인메모리 컴퓨팅(In-Memory-Computing: IMC) 메모리 장치 및 그 동작 방법에 관한 것이다.
인공 지능("AI")은 최근에 많은 분야들에 대해 매우 효과적인 솔루션으로서 부각되어 왔다. AI에서 중요한 문제는 AI가 곱셈 및 누적(multiply-and-accumulation: MAC)을 수행하기 위해 많은 양의 입력 데이터(예를 들면, 입력 특징 맵들)와 웨이트들을 포함하는 점이다.
그러나, 현재의 AI 구조는 통상적으로 IO(입력/출력) 병목 현상 및 비효율적인 MAC 연산 흐름과 직면하고 있다.
높은 정확도를 구현하기 위해, 이는 다중 비트의 입력들 및 다중 비트의 웨이트들을 가지는 MAC 연산들을 수행할 수 있다. 그렇지만, 상기 IO 병목 현상이 악화되며, 효율이 보다 낮아진다.
인메모리 컴퓨팅("IMC")은 IMC가 프로세스 중심 아키텍처에서 복잡한 산술 논리 장치(ALU)를 감소시킬 수 있고, 메모리 내에서 MAC 연산의 큰 병렬성을 제공할 수 있기 때문에 MAC 연산들을 가속할 수 있다.
불휘발성 IMC(NVM 기반의 IMC)의 이점들은 불휘발성 저장, 데이터 이동 감소 등에 의존한다.
IMC의 실행에서, 상기 동작 속도 및 상기 동작 정확도가 모두 충족될 경우, 상기 IMC 성능은 개선될 것이다.
본 발명은 인메모리 컴퓨팅(IMC) 메모리 장치 및 그 동작 방법을 제공한다.
일 실시예에 따르면, 메모리 장치가 제공되며, 상기 메모리 장치는 복수의 웨이트(weight)들을 저장하기 위한 복수의 메모리 셀들을 구비하는 메모리 어레이를 포함하고; 상기 메모리 어레이에 연결되며, 복수의 곱셈 결과들을 발생시키도록 복수의 입력 데이터 및 상기 웨이트들에 대해 비트단위(bitwise) 곱셈을 수행하기 위한 곱셈 회로(multiplication circuit)를 포함하고, 상기 비트단위 곱셈의 수행에서, 상기 메모리 셀들은 복수의 메모리 셀 전류들을 발생시키며; 상기 곱셈 회로에 연결되며, 상기 곱셈 결과들에 대해 디지털 누산을 수행하기 위한 디지털 누산 회로(accumulating circuit)를 포함하고; 상기 메모리 어레이에 연결되며, 제1 곱셈 및 누적(MAC) 연산 결과를 발생시키도록 상기 메모리 셀 전류들에 대해 아날로그 누산을 수행하기 위한 아날로그 누산 회로를 포함하고; 상기 디지털 누산 회로 및 상기 아날로그 누산 회로에 연결되며, 상기 아날로그 누산, 상기 디지털 누산 또는 혼성 누산을 수행하는 지를 결정하기 위한 결정 유닛(decision unit)을 포함하고; 상기 혼성 누산의 수행에서, 상기 디지털 누산 회로가 상기 제1 MAC 연산 결과에 기초하여 작동된다.
다른 실시예에 따르면, 메모리 장치를 위한 동작 방법이 제공된다. 상기 동작 방법은 복수의 웨이트들을 상기 메모리 장치의 메모리 어레이의 복수의 메모리 셀들 내에 저장하는 단계를 포함하고; 복수의 곱셈 결과들을 발생시키도록 복수의 입력 데이터 및 상기 웨이트들에 대해 비트단위 곱셈을 수행하는 단계를 포함하며; 복수의 곱셈 결과들을 발생시키도록 복수의 입력 데이터 및 상기 웨이트들에 대해 비트단위 곱셈을 수행하는 단계를 포함하고, 비트단위 곱셈에서, 상기 메모리 셀들은 복수의 메모리 셀 전류들을 발생시키며; 아날로그 누산, 디지털 누산 또는 혼성 누산을 수행하는 지를 결정하는 단계를 포함하고; 상기 아날로그 누산의 수행에서, 제1 MAC 연산 결과를 발생시키도록 상기 메모리 셀 전류들에 대해 상기 아날로그 누산을 수행하는 단계를 포함하며; 상기 디지털 누산의 수행에서, 제2 MAC 연산 결과를 발생시키도록 상기 곱셈 결과들에 대해 상기 디지털 누산을 수행하는 단계를 포함하고; 상기 혼성 누산의 수행에서, 상기 제1 MAC 연산 결과에 기초하여 상기 디지털 누산을 작동시키는 지를 결정하는 단계를 포함한다.
본 발명의 실시예들에 따르면, unFDP 기반의 데이터 매핑을 이용함으로써, 상기 MAC 연산에 이용되는 메모리 셀 숫자가 감소되며, 이에 따라 동작 비용도 절감된다. 또한, 오류 정정 코드(ECC) 비용도 감소되며, 페일-비트 효과의 공차가 개선된다.
도 1은 본 발명의 일 실시예에 따른 IMC 메모리 장치의 기능 블록도를 도시한다.
도 2는 본 발명의 일 실시예에 따른 데이터 매핑을 도시한다.
도 3a 내지 도 3c는 본 발명의 실시예들에 따른 데이터 매핑의 몇몇 가능한 예들을 도시한다.
도 4는 본 발명의 일 실시예의 곱셈 동작들의 예를 나타낸다.
도 5a 및 도 5b는 본 발명의 일 실시예에 따른 그루핑 연산(다수결 연산) 및 계수를 도시한다.
도 6은 본 발명의 일 실시예에 따른 MAC 연산 흐름들을 도시한다.
도 7a는 본 발명의 일 실시예에서의 고정 메모리 페이지의 프로그래밍을 도시한다. 도 7b는 본 발명의 일 실시예에서의 판독 전압 조정을 위한 흐름도를 도시한다.
도 8은 본 발명의 일 실시예에 따른 MAC 연산 흐름을 도시한다.
다음의 상세한 설명에서, 설명의 목적으로 많은 특정 사항들이 개시되는 실시예들의 완전한 이해를 제공하기 위해 설시된다. 그러나, 하나 또는 그 이상의 실시예들이 이들 특정 사항들 없이 수행될 수 있는 점은 분명해질 것이다. 다른 예들에서, 잘 알려진 구조들과 장치들은 도시를 간략하게 하기 위해 개략적으로 도시된다.
본 발명의 기술적 용어들은 본 발명의 기술 분야에서의 일반적인 정의를 기초로 한다. 본문에서 하나 또는 일부 용어들이 기재되거나 설명되는 경우, 이들 용어들의 정의는 본문에서의 기재나 설명에 근거한다. 각각의 개시되는 실시예들은 하나 또는 그 이상의 기술적인 특징들을 가진다. 가능한 구현예에서, 해당 기술 분야의 숙련자라면 본 발명의 임의의 실시예의 일부 또는 모든 기술적인 특징들을 선택적으로 구현할 수 있거나, 본 발명의 실시예들의 일부 또는 모든 기술적인 특징들을 선택적으로 결합할 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 인메모리 컴퓨팅(In-Memory-Computing: IMC) 메모리 장치(100)의 기능 블록도를 나타낸다. 상기 IMC 메모리 장치(100)는 메모리 어레이(110), 곱셈 회로(multiplication circuit)(120), 입력/출력 회로(130), 디지털 누산 회로(accumulating circuit)(135), 아날로그 누산 회로(160), 결정 유닛(decision unit)(170) 및 비교기(comparator)(163)를 포함한다. 상기 디지털 누산 회로(135)는 그루핑 회로(grouping circuit)(140) 및 계수 유닛(counting unit)(150)을 포함한다. 상기 아날로그 누산 회로(160)는 아날로그-디지털 컨버터(ADC)(161)를 포함한다. 상기 메모리 어레이(110), 상기 곱셈 회로(120), 상기 아날로그 누산 회로(160) 및 상기 아날로그-디지털 컨버터(161)는 아날로그이지만, 상기 디지털 누산 회로(135), 상기 그루핑 회로(140) 및 상기 계수 유닛(150)은 디지털이다.
상기 메모리 어레이(110)는 복수의 메모리 셀들(111)을 포함한다. 본 발명의 일 실시예에서, 상기 메모리 셀(111)은, 예를 들면, 이에 한정되는 것은 아니지만, 불휘발성 메모리 셀이다. 곱셈 및 누적(MAC) 연산들에서, 상기 메모리 셀들(111)은 상기 웨이트들을 저장하기 위해 이용된다.
상기 곱셈 회로(120)는 상기 메모리 어레이(110)에 연결된다. 상기 곱셈 회로(120)는 복수의 단일-비트 곱셈 유닛들(121)을 포함한다. 각각의 상기 단일-비트 곱셈 유닛들(121)은 입력 래치(121A), 감지 증폭기(sensing amplifier: SA)(121B), 출력 래치(121C) 및 공통 데이터 래치(CDL)(121D)를 포함한다. 상기 입력 래치(121A)는 상기 메모리 어레이(110)에 연결된다. 상기 감지 증폭기(121B)는 상기 입력 래치(121A)에 연결된다. 상기 출력 래치(121C)는 상기 감지 증폭기(121B)에 연결된다. 상기 공통 데이터 래치(121D)는 상기 출력 래치(121C)에 연결된다.
상기 입력/출력 회로(130)는 상기 곱셈 회로(120), 상기 그루핑 회로(140) 및 상기 계수 유닛(150)에 연결된다. 상기 입력/출력 회로(130)는 입력 데이터를 수신하고, 상기 메모리 장치(100)에 의해 발생된 데이터를 출력하기 위한 것이다.
상기 디지털 누산 회로(135)는 디지털 누산을 수행하기 위한 것이며, 세부 사항들은 다음에 설명되는 바와 같다.
상기 아날로그 누산 회로(160)는 아날로그 누산을 수행하기 위한 것이며, 세부 사항들은 다음에 설명되는 바와 같다.
상기 결정 유닛(170)은 상기 메모리 장치(100)가 아날로그 누산, 디지털 누산, 또는 혼성(hybrid) 누산을 수행할 지를 결정하기 위한 것이다. 상기 결정 유닛(170)은 상기 아날로그 누산 회로(160) 또는 상기 디지털 누산 회로(135)가 가능한 지를 결정하기 위해 가능 신호(enable signal)들(EN1, EN2)을 상기 아날로그 누산 회로(160) 및 상기 디지털 누산 회로(135)로 각기 출력한다.
상기 아날로그 누산은 상기 아날로그 누산 회로(160)는 가능하지만, 상기 디지털 누산 회로(135)는 불능인 것을 의미한다. 상기 디지털 누산은 상기 디지털 누산 회로(135)가 가능하지만, 상기 아날로그 누산 회로(160)는 불능인 것을 의미한다. 상기 혼성 누산은 상기 아날로그 누산 회로(160) 및 상기 디지털 누산 회로(135) 모두가 가능한 것을 의미한다.
상기 ADC(161)는 상기 메모리 어레이(110)의 메모리 셀들(111)에 연결된다. 상기 메모리 셀들(111)로부터의 셀 전류들은 합산되며, 제1 MAC 연산 결과(OUT1)로 전환되도록 상기 ADC(161) 내로 입력된다.
상기 비교기(163)는 상기 제1 MAC 연산 결과(OUT1)를 트리거(trigger) 기준 값과 비교하기 위해 상기 ADC(161)에 연결된다. 상기 혼성 누산의 수행에서, 상기 제1 MAC 연산 결과(OUT1)가 상기 트리거 기준 값보다 낮을 때, 상기 비교기(163)는 트리거 신호(TS)를 상기 디지털 누산 회로(135)로 출력하지 않으며, 상기 제1 MAC 연산 결과(OUT1)가 상기 트리거 기준 값보다 높을 때, 상기 비교기(163)는 상기 디지털 누산을 수행하기 위한 상기 디지털 누산 회로(135)를 작동시키도록 상기 트리거 신호(TS)를 상기 디지털 누산 회로(135)로 출력한다. 상기 아날로그 누산이 수행될 때, 상기 비교기(163)로부터의 트리거 신호(TS)는 상기 디지털 누산 회로(135)에 의해 무시될 것이다.
본 발명의 일 실시예에서, 상기 아날로그 누산은 상기 MAC 연산 속도를 향상시키도록 쓸모없는 데이터를 신속하게 필터링하는 데 이용될 수 있고, 상기 디지털 누산은 상기 MAC 연산 정확도를 향상시키도록 필터링되지 않은 데이터를 누적할 수 있으며, 상기 혼성 누산은 저해상도의 양자화(quantization)의 이용의 변화 영향을 소거할 수 있고, 쓸모없는 데이터의 누적을 회피할 수 있으며, 해상도를 유지할 수 있다. 즉, 상기 혼성 누산은 상기 아날로그 누산 및 상기 디지털 누산의 장점들과 단점들을 상호 절충시킨다.
상기 그루핑 회로(140)는 상기 곱셈 회로(120)에 연결된다. 상기 그루핑 회로(140)는 복수의 그루핑 유닛들(141)을 포함한다. 상기 그루핑 유닛들(141)은 복수의 그루핑 결과들을 발생시키기 위해 상기 단일-비트 곱셈 유닛들(121)로부터의 복수의 곱셈 연산 결과들에 대해 그루핑 연산들을 수행한다. 본 발명의 가능한 일 실시예에서, 상기 그루핑 기술은 다수결 기술(majority technique), 예를 들면, 다수결 함수 기술에 의해 구현될 수 있다. 상기 그루핑 회로(140)는 상기 다수결 함수 기술에 기초한 다수결 그루핑 회로로 구현될 수 있으며, 상기 그루핑 유닛들(141)은 분산 다수결 그루핑 유닛으로 구현될 수 있지만, 본 발명이 이에 한정되는 것은 아니다. 상기 그루핑 기술은 다른 유사한 기술들에 의해 구현될 수 있다. 본 발명의 일 실시예에서, 상기 그루핑 회로(140)는 선택적이다.
상기 계수 유닛(150)은 상기 그루핑 회로(140) 또는 상기 곱셈 회로(120)에 연결된다. 본 발명의 일 실시예에서, 상기 계수 유닛(150)은 제2 MAC 연산 결과(OUT2)(상기 메모리 장치(100)가 상기 그루핑 회로(140)를 포함하지 않을 때)를 발생시키기 위해 상기 곱셈 회로로부터의 곱셈 연산 결과들에 대해 비트단위(bitwise) 계수 또는 비트단위 누산을 수행하기 위한 것이다. 또는, 상기 계수 유닛(150)은 상기 제2 MAC 연산 결과(OUT2)(상기 메모리 장치(100)가 상기 그루핑 회로(140)를 포함할 때)를 발생시키기 위해 상기 그루핑 회로(140)로부터의 그루핑 결과들(즉, 상기 다수결 결과들)에 대해 비트단위 계수 또는 비트단위 누산을 수행하기 위한 것이다. 본 발명의 일 실시예에서, 상기 계수 유닛(150)은 알려진 계수 회로들, 예를 들면, 이에 한정되는 것은 아니지만, 리플 카운터(ripple counter)로 구현될 수 있다. 본문에서, "계수(counting)" 및 "누산(accumulating)"이라는 용어들은 상호 교환적이며, 계수기(counter)와 누산기(accumulator)는 실질적으로 동일한 의미를 가진다.
다시 말하면, 상기 결정 유닛(170)이 상기 메모리 장치(100)가 상기 아날로그 누산을 수행하는 것을 결정할 때, 상기 제1 MAC 연산 결과(OUT1)가 상기 MAC 연산 결과로 이용된다. 상기 결정 유닛(170)이 상기 메모리 장치(100)가 상기 디지털 누산을 수행하는 것을 결정할 때, 상기 제2 MAC 연산 결과(OUT2)가 상기 MAC 연산 결과로 이용된다. 상기 결정 유닛(170)이 상기 메모리 장치(100)가 상기 혼성 누산을 수행하는 것을 결정할 때, 상기 디지털 누산 회로(135)가 상기 트리거 신호(TS)에 의해 작동되기 전에는 상기 제1 MAC 연산 결과(OUT1)가 상기 MAC 연산 결과로 이용되며, 상기 디지털 누산 회로(135)가 상기 트리거 신호(TS)에 의해 작동된 후에는 상기 제2 MAC 연산 결과(OUT2)가 상기 MAC 연산 결과로 이용된다.
이제 본 발명의 일 실시예에 따른 데이터 매핑(data mapping)을 도시하는 도 2를 참조한다. 도 2에 도시한 바와 같이, 각 입력 데이터 및 각 웨이트(weight)는 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 형식으로)에 대해 수행된다.
이해를 위하여, 데이터 매핑의 일 예가 설명되지만, 본 발명이 이에 한정되는 것은 아니다.
이제 본 발명의 일 실시예에 따라 하나의 차원으로의 데이터 매핑의 가능한 예를 도시하는 도 3a를 참조한다. 도 3a에 도시한 바와 같이, 상기 입력 데이터는 (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, 상기 값 형식으로 표현됨)는 3회 중복되며, 이에 따라 상기 입력 데이터의 MSB의 unFDP 형식은 111111000이다. 유사하게, 상기 입력 데이터의 LSB의 각각의 비트(001, 상기 값 형식으로 표현됨)는 3회 중복되며, 이에 따라 상기 입력 데이터의 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)이 될 것이다.
이제 본 발명의 일 실시예에 따른 데이터 매핑의 다른 가능한 예를 도시하는 도 3b를 참조한다. 도 3b에 도시한 바와 같이, 상기 입력 데이터는 (IN1)=(2)이고, 상기 웨이트는 (We1)=(1)이다. 상기 입력 데이터 및 상기 웨이트는 4-비트이다.
상기 입력 데이터는 상기 이진 포맷으로 나타내어지며, 이에 따라 IN1=0010이다. 유사하게, 상기 웨이트는 상기 이진 포맷으로 나타내어지며, 이에 따라 We1=0001이다.
상기 입력 데이터 및 상기 웨이트는 단항 코드(값 형식)로 부호화된다. 예를 들면, 입력 데이터의 가장 높은 비트 "0"은 "00000000"로 부호화되는 반면, 입력 데이터의 가장 낮은 비트 "0"은 "0"으로 부호화되는 등으로 된다. 유사하게, 상기 웨이트 가장 높은 비트 "0"은 "00000000"로 부호화되는 반면, 상기 웨이트의 가장 낮은 비트 "1"은 "1"로 부호화된다.
다음에, 상기 입력 데이터의 각 비트(상기 단항 코드로 부호화됨)가 상기 unFDP 형식으로 표현되도록 수회 중복된다. 예를 들면, 상기 입력 데이터의 가장 높은 비트(301A)(상기 단항 코드로 부호화됨)는 상기 비트들(303A)로 15회 중복되며, 상기 입력 데이터의 가장 낮은 비트(301B)(상기 단항 코드로 부호화됨)는 상기 비트들(303B)로 15회 중복된다.
상기 웨이트(302)(상기 단항 코드로 부호화됨)는 상기 unFDP 형식으로 나타내어지도록 15회 중복된다.
상기 곱셈 연산이 MAC 연산 결과를 발생시키기 위해 상기 입력 데이터(상기 unFDP 형식으로 표현됨) 및 상기 웨이트들(상기 unFDP 형식으로 표현됨)에 대해 수행된다. 상세하게는, 상기 입력 데이터의 비트들(303A)은 상기 웨이트(302)와 곱해지고, 상기 입력 데이터의 비트들(303B)은 상기 웨이트(302)와 곱해지는 등이 된다. 상기 MAC 연산 결과("2")는 상기 곱셈 값들을 더하여 발생된다.
이제 본 발명의 일 실시예에 따른 데이터 매핑의 다른 가능한 예를 도시하는 도 3c를 참조한다. 도 3c에 도시한 바와 같이, 상기 입력 데이터는 (IN1)=(1)이고, 상기 웨이트는 (We1)=(5)이다. 상기 입력 데이터 및 상기 웨이트는 4-비트이다.
상기 입력 데이터는 상기 이진 형식 포맷으로 표현되며, 이에 따라 IN1=0001이다. 유사하게, 상기 웨이트는 상기 이진 형식 포맷으로 표현되며, 이에 따라 We1=0101이다.
다음에, 상기 입력 데이터 및 상기 웨이트가 단항 코드(값 형식)로 부호화된다.
다음에, 상기 입력 데이터의 각각의 비트(상기 단항 코드로 부호화됨)가 상기 unFDP 형식으로 표현되도록 수회 중복된다. 도 3c에서, 비트 "0"은 상기 입력 데이터의 각각의 비트 및 상기 웨이트의 각각의 비트가 중복될 때에 더해진다. 예를 들면, 상기 입력 데이터의 가장 높은 비트(311A)(상기 단항 코드로 부호화됨)는 상기 비트들(313A)을 형성하기 위해 15회 중복되고, 비트 "0"이 가산되며, 상기 입력 데이터의 가장 낮은 비트(311B)(상기 단항 코드로 부호화됨)는 상기 비트들(313B)을 형성하기 위해 15회 중복되고, 비트 "0"이 가산된다. 이렇게 함으로써, 상기 입력 데이터가 상기 unFDP 형식으로 나타내어진다.
유사하게, 상기 웨이트(312)(상기 단항 코드로 부호화됨)가 15회 중복되고, 비트 "0"이 각각의 상기 웨이트들(314) 내로 추가적으로 가산된다. 이렇게 함으로써, 상기 웨이트가 상기 unFDP 형식으로 나타내어진다.
상기 곱셈 연산이 MAC 연산 결과를 발생시키기 위해 상기 입력 데이터(상기 unFDP 형식으로 표현됨) 및 상기 웨이트들(상기 unFDP 형식으로 표현됨)에 대해 수행된다. 상세하게는, 상기 입력 데이터의 비트들(313A)은 상기 웨이트(314)와 곱해지며, 상기 입력 데이터의 비트들(313B)은 상기 웨이트(314)와 곱해지는 등이 된다며. 상기 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을 다시 참조하면, 본 발명의 일 실시예에서, 곱셈 연산들에서 상기 웨이트(트랜스컨덕턴스(transconductance))는 상기 메모리 어레이(110)의 메모리 셀들(111) 내에 저장되며, 상기 입력 데이터(상기 전압)는 저장되어 상기 입력/출력 회로(130)에 의해 판독되고, 상기 공통 데이터 래치(121D)로 전송된다. 상기 공통 데이터 래치(121D)는 상기 입력 데이터를 상기 입력 래치(121A)로 출력한다.
본 발명의 일 실시예의 곱셈 연산들을 설명하기 위해, 이제 본 발명의 일 실시예의 곱셈 연산들의 일 예를 도시하는 도 4를 참조한다. 도 4는 메모리 장치가 선택된 비트 라인 판독 기능을 지원하는 경우에 이용된다. 도 4에서, 상기 입력 래치(121A)는 래치(제1 래치)(405) 및 비트 라인 스위치(410)를 포함한다.
도 4에 도시한 바와 같이, 상기 웨이트는 도 2에 도시한 바와 같은 단항 코드(값 형식)로 나타내어진다. 따라서, 상기 웨이트의 가장 높은 비트는 여덟의 메모리 셀들(111) 내에 저장되고, 상기 웨이트의 두 번째로 높은 비트는 넷의 메모리 셀들(111) 내에 저장되며, 상기 웨이트의 세 번째로 높은 비트는 둘의 메모리 셀들(111) 내에 저장되고, 상기 웨이트의 가장 낮은 비트는 하나의 메모리 셀(111) 내에 저장된다.
유사하게, 상기 입력 데이터는 단항 코드(값 형식)(도 2에 도시한 바와 같은)로 나타내어진다. 따라서, 상기 입력 데이터의 가장 높은 비트는 여덟의 공통 데이터 래치들(121D) 내에 저장되고, 상기 입력 데이터의 두 번째로 높은 비트는 넷의 공통 데이터 래치들(121D) 내에 저장되며, 상기 입력 데이터의 세 번째로 높은 비트는 둘의 공통 데이터 래치들(121D) 내에 저장되고, 상기 입력 데이터의 가장 낮은 비트는 하나의 공통 데이터 래치(121D) 내에 저장된다. 상기 입력 데이터는 상기 공통 데이터 래치들(121D)로부터 상기 래치들(405)까지 송신된다.
도 4에서, 상기 복수의 비트라인 스위치들(410)은 상기 메모리 셀들(111)과 상기 감지 증폭기들(121B) 사이에 연결된다. 상기 비트 라인 스위치들(410)은 상기 래치들(405)의 출력들에 의해 제어된다. 예를 들면, 상기 래치(405)가 비트 "1"을 출력할 때, 상기 비트 라인 스위치(410)가 연결되는 반면, 상기 래치(405)가 비트 "0"을 출력할 때, 비트 라인 스위치(410)는 연결 해제된다.
또한, 상기 메모리 셀(111) 내에 저장된 웨이트가 비트 1이고, 상기 비트 라인 스위치(410)가 연결될(즉, 상기 입력 데이터가 비트 1일) 때, 상기 SA(121B)는 상기 곱셈 결과 "1"을 발생시키도록 메모리 셀 전류를 감지한다. 상기 메모리 셀(111) 내에 저장된 웨이트가 비트 0이고, 상기 비트 라인 스위치(410)가 연결될(즉, 상기 입력 데이터가 비트 1일) 때, 상기 SA(121B)는 메모리 셀 전류를 감지하지 않는다. 상기 메모리 셀(111) 내에 저장된 웨이트가 비트 1이고, 상기 비트 라인 스위치(410)가 연결 해제될(즉, 상기 입력 데이터가 비트 0일) 때, 상기 SA(121B)는 (상기 곱셈 결과 "0"을 발생시키도록) 메모리 셀 전류를 감지하지 않는다. 상기 메모리 셀(111) 내에 저장된 웨이트가 비트 0이고, 상기 비트 라인 스위치(410)가 연결 해제될(즉, 상기 입력 데이터가 비트 0일) 때, 상기 SA(121B)는 메모리 셀 전류를 감지하지 않는다.
다시 말하면, 도 4에 도시한 레이아웃을 통해, 상기 입력 데이터가 비트 1이고, 상기 웨이트가 비트 1일 때, 상기 SA(121B)는 (상기 곱셈 결과 "1"을 발생시키도록) 상기 메모리 셀 전류를 감지한다. 다른 상황들에서, 상기 SA(121B)는 (상기 곱셈 결과 "0"을 발생시키도록) 메모리 셀 전류를 감지하지 않는다.
상기 메모리 셀들(111)로부터의 메모리 셀 전류들 IMC가 합산되며, 상기 ADC(161)로 입력된다.
상기 입력 데이터, 상기 웨이트, 상기 디지털 곱셈 결과 및 상기 아날로그 메모리 셀 전류 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))에 의해 발생되는 각각의 아날로그 메모리 셀 전류를 지칭한다.본 발명의 일 실시예에서, 곱셈 연산들에서 상기 선택된 비트 라인 판독(SBL-판독) 명령이 단일-비트 표현에 기인하는 변화 영향을 감소시키기 위해 재사용될 수 있다.
이제 본 발명의 일 실시예에 따른 그루핑 연산(다수결 연산) 및 비트단위 계수를 도시하는 도 5a를 참조한다. 도 5a에 도시한 바와 같이, "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임)이다.
도 5b는 도 3c에서의 하나의 누산 예를 나타낸다. 도 3c 및 도 5b를 참조하면, 도 5b에 도시한 바와 같이, 상기 입력 데이터의 비트들(313B)(도 3c 참조)은 상기 웨이트(314)와 곱해진다. 상기 웨이트(314)와 상기 입력 데이터의 비트들(313B)의 곱셈(도 3c 참조)에 의해 발생된 상기 곱셈 결과의 첫 번째의 네 비트들("0000")은 상기 제1 곱셈 결과 "GM1"로서 그룹지어진다. 유사하게, 상기 웨이트(314)와 상기 입력 데이터의 비트들(313B)의 곱셈(도 3c 참조)에 의해 발생된 상기 곱셈 결과의 다섯 번째 내지 여덟 번째 비트들("0000")은 상기 제2 곱셈 결과 "GM2"로서 그룹지어진다. 상기 웨이트(314)와 상기 입력 데이터의 비트들(313B)의 곱셈(도 3c 참조)에 의해 발생된 상기 곱셈 결과의 아홉 번째 내지 열두 번째 비트들("1111")은 상기 제3 곱셈 결과 "GM3"로서 그룹지어진다. 상기 웨이트(314)와 상기 입력 데이터의 비트들(313B)의 곱셈(도 3c 참조)에 의해 생성된 상기 곱셈 결과의 열세 번째 내지 열여섯 번째 비트들("0010")은 직접 계수된다.
상기 그루핑 연산(상기 다수결 연산) 후, 상기 제1 그루핑 결과(CB1)는 "0"(그 누적 웨이트는 22임)이고, 상기 제2 그루핑 결과(CB2)는 "0"(그 누적 웨이트는 22임)이며, 상기 제3 그루핑 결과(CB3)는 "1"(그 누적 웨이트는 22임)이다. 계수에 있어서, 상기 MAC 연산 결과는 각각의 상기 누적 웨이트를 곱한 상기 각각의 그루핑 결과들(CB1-CB4)을 누적하여 발생된다. 예를 들면, 도 5b에 도시한 바와 같이, 상기 MAC 연산 결과(상기 제2 MAC 연산 결과 OUT2)는 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"으로 결정된다.
이에 따라, 본 발명의 일실시예에서, 그루핑(다수결) 함수에 의해, 상기 에러 비트들이 감소된다.
상기 그루핑 회로(140)로부터의 다수결 결과들은 비트단위 계수를 위해 상기 계수 유닛(150)으로 입력된다.
계수에 있어서, 상기 MSB 벡터의 곱셈 결과들에 대한 계수 결과 및 상기 LSB 벡터의 곱셈 결과들에 대한 계수 결과는 더해지거나 누적된다. 도 5a에 도시한 바와 같이, 두 개의 누산기(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 연산 결과는 8+4=12이다.
상술한 바로부터, 본 발명의 일 실시예에서의 계수 또는 누산에서, 상기 입력 데이터는 상기 unFDP 형식이며, 상기 CDL 내에 저장된 데이터는 상기 MSB 벡터 및 상기 LSB 벡터로 그룹지어진다. 그루핑(다수결) 함수에 의해, 상기 MSB 벡터 및 상기 LSB 벡터 내의 에러 비트들이 감소된다.
또한, 본 발명의 일 실시예에서, 종래의 누산기(종래의 계수기)가 사용될 지라도, 계수 및 누산에서의 시간 요소도 감소된다. 이는 디지털 계수 명령(에러 비트 계수)이 본 발명의 일 실시예에서 적용되고, 다른 벡터들(상기 MSB 벡터 및 상기 LSB 벡터)이 다른 누산 웨이트들로 할당되기 때문이다. 가능한 일 예에서, 상기 누적 연산에서의 시간 소요는 약 40%까지 감소된다.
도 6은 본 발명의 일 실시예에서의 MAC 연산을 도시한다. 도 6에서, DMAC는 제1 디지털 누산(상기 다수결 연산이 수행되지 않음. 즉, 상기 메모리 장치(100)가 상기 그루핑 회로(140)를 포함하지 않음)로 지칭되고, mDMAC는 제2 디지털 누산(상기 다수결 연산이 수행됨. 즉, 상기 메모리 장치(100)가 상기 그루핑 회로(140)를 포함함)으로 지칭되며, AMAC는 상기 아날로그 누산으로 지칭되고, HMAC는 상기 혼성 누산으로 지칭된다.
본 발명의 일 실시예의 제1 디지털 누산 MAC 연산 흐름에서, 상기 입력 데이터가 상기 메모리 장치로 전송된다. 상기 비트 라인 설정 및 상기 워드 라인 설정은 동시에 수행된다. 상기 비트 라인 설정 후, 감지가 수행된다. 이후에, 상기 디지털 누산이 수행된다. 상기 디지털 누산 결과는 돌아간다. 앞서의 단계들은 모든 입력 데이터가 처리될 때까지 반복된다.
본 발명의 일 실시예의 제2 디지털 누산 MAC 연산 흐름에 대해 설명하면, 상기 다수결 연산이 상기 디지털 누산 속도를 더 향상시킬 수 있다.
본 발명의 일 실시예의 아날로그 누산 MAC 연산 흐름에 대해 설명하면, 데이터 감지 주기 동안에, ADC 전환 및 비교 연산이 완료되며, 이는 상기 아날로그 누산 속도를 더 향상시킬 수 있다.
본 발명의 일 실시예의 혼성 누산 MAC 연산 흐름에 대해 설명하면, 상기 아날로그 누산 및 상기 디지털 누산 모두가 수행되며, 이에 따라 상기 혼성 누산의 연산 속도는 아날로그 누산보다 느려지지만, 상기 디지털 누산보다는 빨라진다. 상기 혼성 누산의 정확도는 상기 디지털 누산과 거의 동등하지만, 상기 아날로그 누산보다는 높다.
도 6으로부터, 본 발명의 실시예에서 상기 MAC 연산은 두 가지 유형들의 하위-연산(sub-operation)들을 가진다. 상기 제1 하위-연산은 상기 입력 데이터와 상기 웨이트들을 곱하는 곱셈이며, 상기 선택된 비트 라인 판독 명령을 기초로 한다. 상기 제2 하위-연산은 누산(데이터 계수), 특히 페일-비트 계수이다. 본 발명의 다른 가능한 실시예에서, 보다 많은 계수 유닛들이 상기 계수 또는 누적 연산들을 가속하기 위해 이용될 수 있다.
상기 디지털 누적의 연산 주기는 상기 계수 유닛(150)이 비트 병렬로 누산을 수행하기 때문에 주로 상기 계수 유닛(150)의 누산 속도에 의존한다. 상기 ADC(161)의 양자화 정확도는 주로 상기 메모리 셀들의 변화 공차에 의존한다. 따라서, 상기 디지털 누산은 높은 정확도를 가지지만, 상기 아날로그 누산과 비교하여 낮은 누산 속도를 가진다.
또한, 본 발명의 일 실시예에서, 상기 판독 전압도 조정된다. 도 7a는 본 발명의 일 실시예에서의 고정 메모리 페이지(fixed memory page)의 프로그래밍을 도시한다. 도 7b는 본 발명의 일 실시예에서의 판독 전압 조정을 위한 흐름도를 도시한다.
도 7a에 도시한 바와 같이, 단계 710에서, 알려진 입력 데이터가 고정 메모리 페이지 내로 프로그램되며, 여기서 상기 알려진 입력 데이터의 비트 전송률은 비트 "0"의 50% 및 비트 "1"의 50%이다.
도 7b에 도시한 바와 같이, 단계 720에서, 상기 고정 메모리 페이지가 판독되고, 상기 ADC가 가능하게 된다. 단계 730에서, 상기 ADC로부터의 출력 값(즉, 상기 제1 MAC 연산 결과(OUT1))이 기준 테스트 값(예를 들면, 이에 한정되는 것은 아니지만, 상기 ADC가 8-비트 ADC일 경우, 상기 기준 테스트 값은 127임)에 가까운 지가 결정된다. 단계 730에서 '아니오'일 경우, 상기 흐름은 단계 740로 진행된다. 단계 730에서 '예'일 경우, 상기 흐름은 단계 750로 진행된다.
단계 740에서, 상기 ADC로부터의 출력 값이 상기 기준 테스트 값보다 작을 때, 상기 판독 전압이 증가되며, 상기 ADC로부터의 출력 값이 상기 기준 테스트 값보다 클 때, 상기 판독 전압이 감소된다. 단계 740 후, 상기 흐름은 단계 720로 돌아간다.
단계 750에서, 현재 판독 전압이 후속하는 판독 동작을 위해 기록된다.
상기 판독 전압은 상기 ADC로부터의 출력 값 및 비트 1의 판독에 영향을 미칠 수 있다. 본 발명의 일 실시예에서, 동작 조건들(예를 들면, 이에 한정되는 것은 아니지만, 프로그래밍 사이클, 온도 또는 판독 장애)에 기초하여, 상기 판독 전압은 높은 정확도와 높은 신뢰성을 유지하기 위해 주기적으로 보정된다.
도 8은 본 발명의 일 실시예에 따른 MAC 연산 흐름을 나타낸다. 단계 810에서, 복수의 웨이트들이 메모리 장치의 메모리 어레이의 복수의 메모리 셀들 내에 저장된다. 단계 820에서, 비트단위 곱셈이 복수의 곱셈 결과들을 발생시키기 위해 복수의 입력 데이터 및 상기 웨이트들에 대해 수행되며, 여기서 비트단위 곱셈에서 상기 메모리 셀들은 복수의 메모리 셀 전류들을 발생시킨다. 단계 830에서, 아날로그 누산, 디지털 누산 또는 혼성 누산이 수행되는 지가 결정된다. 단계 840에서, 상기 아날로그 누산의 수행에서, 상기 아날로그 누산은 제1 MAC 연산 결과를 발생시키도록 상기 메모리 셀 전류들에 대해 수행된다. 단계 850에서, 상기 디지털 누산의 수행에서, 상기 디지털 누산은 제2 MAC 연산 결과를 발생시키도록 상기 곱셈 결과들에 대해 수행된다. 단계 860에서, 상기 혼성 누산의 수행에서, 상기 디지털 누산이 상기 제1 MAC 연산 결과에 기초하여 작동된다.
본 발명의 일 실시예는 NAND형 플래시 메모리, 또는 유지 및 열 변화에 민감한 메모리 장치, 예를 들면, 이에 한정되는 것은 아니지만, NOR형 플래시 메모리, 상변화 메모리, 자기 RAM 또는 저항 RAM에 적용된다.
본 발명의 일 실시예는 3D 구조의 메모리 장치 및 2D 구조의 메모리 장치, 예를 들면, 이에 한정되는 것은 아니지만, 2D/3D NAND형 플래시 메모리, 2D/3D NOR형 플래시 메모리, 2D/3D 상변화 메모리, 2D/3D 자기 RAM 또는 2D/3D 저항 RAM에 적용된다.
비록 본 발명의 일 실시예에서, 상기 입력 데이터 및/또는 상기 웨이트가 상기 MSB 벡터 및 상기 LSB 벡터(즉, 두 벡터들)로 나누어지지만, 본 발명이 이에 한정되는 것은 아니다. 본 발명의 다른 가능한 실시예에서, 상기 입력 데이터 및/또는 상기 웨이트는 보다 많은 벡터들로 나누어지며, 이는 여전히 본 발명의 사상과 범주 이내이다.
본 발명의 실시예는 다수결 그룹 기술에 적용될 뿐만 아니라, 누산을 가속하기 위한 다른 그루핑 기술들에도 적용된다.
본 발명의 실시예는 AI 기술들, 예를 들면, 이에 한정되는 것은 아니지만, 얼굴인식이다.
본 발명의 일 실시예에서, 상기 ADC(161)는 전류 모드 ADC, 전압 모드 ADC 또는 혼성 모드 ADC로 구현될 수 있다.
본 발명의 일 실시예는 직렬 MAC 연산들 또는 병렬 MAC 연산들로 적용될 수 있다.
해당 기술 분야의 숙련자에게는 개시된 실시예들에 대해 다양한 변경들과 변화들이 이루어질 수 있는 점이 분명해질 것이다. 본문의 내용과 실시예들은 다음의 특허청구범위 및 그 균등물들에 의해 나타내어지는 본 발명의 진정한 범주 내에서 예시적으로만 간주되는 것으로 의도된다.
100:IMC 메모리 장치 110:메모리 어레이
111:메모리 셀들 120:곱셈 회로
121:단일-비트 곱셈 유닛들 121A:입력 래치
121B:감지 증폭기 121C:출력 래치
121D:공통 데이터 래치 130:입력/출력 회로
135:디지털 누산 회로 140:그루핑 회로
150:계수 유닛 160:아날로그 누산 회로
161:아날로그-디지털 컨버터 163:비교기
170:결정 유닛

Claims (16)

  1. 메모리 장치에 있어서,
    복수의 웨이트(weight)들을 저장하기 위한 복수의 메모리 셀들을 구비하는 메모리 어레이를 포함하고;
    상기 메모리 어레이에 연결되며, 복수의 곱셈 결과들을 발생시키도록 복수의 입력 데이터 및 상기 웨이트들에 대해 비트단위(bitwise) 곱셈을 수행하기 위한 곱셈 회로(multiplication circuit)를 포함하고, 상기 비트단위 곱셈의 수행에서, 상기 메모리 셀들은 복수의 메모리 셀 전류들을 발생시키며;
    상기 곱셈 회로에 연결되며, 상기 곱셈 결과들에 대해 디지털 누산을 수행하기 위한 디지털 누산 회로(accumulating circuit)를 포함하고;
    상기 메모리 어레이에 연결되며, 제1 곱셈 및 누적(MAC) 연산 결과를 발생시키도록 상기 메모리 셀 전류들에 대해 아날로그 누산을 수행하기 위한 아날로그 누산 회로를 포함하고;
    상기 디지털 누산 회로 및 상기 아날로그 누산 회로에 연결되며, 상기 아날로그 누산, 상기 디지털 누산 또는 혼성 누산을 수행하는 지를 결정하기 위한 결정 유닛(decision unit)을 포함하고,
    상기 혼성 누산의 수행에서, 상기 디지털 누산 회로가 상기 제1 MAC 연산 결과에 기초하여 작동되는 것을 특징으로 하는 메모리 장치.
  2. 제1항에 있어서,
    상기 아날로그 누산의 수행에서, 상기 결정 유닛은 상기 아날로그 누산 회로를 가능하게 하지만, 상기 디지털 누산 회로는 불능으로 하고;
    상기 디지털 누산의 수행에서, 상기 결정 유닛은 상기 디지털 누산 회로를 가능하게 하지만, 상기 아날로그 누산 회로는 불능으로 하며;
    상기 혼성 누산의 수행에서, 상기 결정 유닛은 상기 아날로그 누산 회로 및 상기 디지털 누산 회로 모두를 가능하게 하는 것을 특징으로 하는 메모리 장치.
  3. 제1항에 있어서,
    상기 아날로그 누산 회로 및 상기 디지털 누산 회로에 연결되며, 상기 디지털 누산을 수행하기 위한 상기 디지털 누산 회로를 작동시키기 위해 트리거(trigger) 신호를 상기 디지털 누산 회로에 출력하도록 상기 제1 MAC 연산 결과를 트리거 기준 값과 비교하기 위한 비교기(comparator)를 더 포함하는 것을 특징으로 하는 메모리 장치.
  4. 제1항에 있어서, 상기 아날로그 누산 회로는 상기 메모리 어레이에 연결되는 아날로그-디지털 컨버터를 포함하며, 상기 메모리 셀들로부터의 상기 메모리 셀 전류들은 합산되고, 상기 제1 MAC 연산 결과로 전환되도록 상기 아날로그-디지털 컨버터로 입력되는 것을 특징으로 하는 메모리 장치.
  5. 제1항에 있어서, 상기 디지털 누산 회로는 상기 곱셈 회로에 연결되며, 제2 MAC 연산 결과를 발생시키도록 상기 곱셈 결과들에 대해 비트단위 계수를 수행하기 위한 계수 유닛(counting unit)을 포함하는 것을 특징으로 하는 메모리 장치.
  6. 제5항에 있어서, 상기 곱셈 회로 및 상기 계수 유닛에 연결되며, 복수의 그루핑 결과들을 발생시키도록 상기 곱셈 회로로부터의 상기 곱셈 결과들에 대해 그루핑 연산들을 수행하고, 상기 그루핑 결과들을 상기 계수 유닛에 전송하기 위한 그루핑 회로(grouping circuit)를 더 포함하는 것을 특징으로 하는 메모리 장치.
  7. 제1항에 있어서,
    각각의 상기 입력 데이터 또는 각각의 상기 웨이트들의 복수의 비트들은 복수의 비트 벡터들로 나누어지고;
    상기 비트 벡터들의 각각의 비트는 이진 형식으로부터 단항 코드(unary code)로 전환되며;
    상기 단항 코드로 표현된 상기 비트 벡터들의 각각의 상기 비트는 언폴딩 도트 곱(unfolding dot product: unFDP) 형식으로 수회 중복되고;
    상기 곱셈 회로는 상기 곱셈 결과들을 발생시키도록 상기 unFDP 형식으로 표현된 상기 입력 데이터 및 상기 웨이트들에 대해 곱셈 연산들을 수행하는 것을 특징으로 하는 메모리 장치.
  8. 제6항에 있어서, 상기 곱셈 결과들에 대한 그루핑 연산들의 수행에서, 상기 그루핑 회로는 상기 그루핑 결과들을 발생시키도록 상기 곱셈 결과들에 대해 각각의 그루핑 연산들을 수행하는 것을 특징으로 하는 메모리 장치.
  9. 제6항에 있어서, 비트단위 계수에서, 상기 그루핑 결과들은 상기 제2 MAC 연산 결과를 발생시키도록 각기 다른 누산 웨이트들로 할당되는 것을 특징으로 하는 메모리 장치.
  10. 제6항에 있어서, 상기 그루핑 회로는 복수의 다수결 유닛(majority unit)들을 포함하는 다수결 회로인 것을 특징으로 하는 메모리 장치.
  11. 메모리 장치를 위한 동작 방법에 있어서,
    복수의 웨이트들을 상기 메모리 장치의 메모리 어레이의 복수의 메모리 셀들 내에 저장하는 단계를 포함하고;
    복수의 곱셈 결과들을 발생시키도록 복수의 입력 데이터 및 상기 웨이트들에 대해 비트단위 곱셈을 수행하는 단계를 포함하며;
    복수의 곱셈 결과들을 발생시키도록 복수의 입력 데이터 및 상기 웨이트들에 대해 비트단위 곱셈을 수행하는 단계를 포함하고, 비트단위 곱셈에서, 상기 메모리 셀들은 복수의 메모리 셀 전류들을 발생시키며;
    아날로그 누산, 디지털 누산 또는 혼성 누산을 수행하는 지를 결정하는 단계를 포함하고;
    상기 아날로그 누산의 수행에서, 제1 MAC 연산 결과를 발생시키도록 상기 메모리 셀 전류들에 대해 상기 아날로그 누산을 수행하는 단계를 포함하며;
    상기 디지털 누산의 수행에서, 제2 MAC 연산 결과를 발생시키도록 상기 곱셈 결과들에 대해 상기 디지털 누산을 수행하는 단계를 포함하고;
    상기 혼성 누산의 수행에서, 상기 제1 MAC 연산 결과에 기초하여 상기 디지털 누산을 작동시키는 지를 결정하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 위한 동작 방법.
  12. 제11항에 있어서,
    상기 메모리 셀들로부터의 상기 메모리 셀 전류들을 합산하고, 상기 제1 MAC 연산 결과로 아날로그-디지털 전환을 수행하는 단계를 포함하는 것을 특징으로 하는 메모리 장치를 위한 동작 방법.
  13. 제11항에 있어서, 상기 제1 MAC 연산 결과는 상기 디지털 누산을 작동시키는 지를 결정하기 위해 트리거 기준 값과 비교되는 것을 특징으로 하는 메모리 장치를 위한 동작 방법.
  14. 제11항에 있어서,
    각각의 상기 입력 데이터 또는 각각의 상기 웨이트들의 복수의 비트들은 복수의 비트 벡터들로 나누어지고;
    상기 비트 벡터들의 각각의 비트는 이진 형식으로부터 단항 코드로 전환되며;
    상기 단항 코드로 표현된 상기 비트 벡터들의 각각의 상기 비트는 언폴딩 도트 곱(unFDP) 형식으로 수회 중복되고;
    곱셈 연산들이 상기 곱셈 결과들을 발생시키도록 상기 unFDP 형식으로 표현된 상기 입력 데이터 및 상기 웨이트들에 대해 수행되는 것을 특징으로 하는 메모리 장치를 위한 동작 방법.
  15. 제14항에 있어서, 비트단위 계수에서, 복수의 그루핑 결과들은 상기 제2 MAC 연산 결과를 발생시키도록 각기 다른 누산 웨이트들로 할당되는 것을 특징으로 하는 메모리 장치를 위한 동작 방법.
  16. 제14항에 있어서, 상기 곱셈 결과들에 대해 그루핑 연산들을 수행하는 단계는 상기 곱셈 결과들에 대해 다수결 연산들을 수행하여 이루어지는 것을 특징으로 하는 메모리 장치를 위한 동작 방법.
KR1020210116479A 2020-09-08 2021-09-01 메모리 장치 및 그 동작 방법 KR102603799B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063075311P 2020-09-08 2020-09-08
US63/075,311 2020-09-08
US17/375,024 US12106070B2 (en) 2020-09-08 2021-07-14 Memory device and operation method thereof
US17/375,024 2021-07-14

Publications (2)

Publication Number Publication Date
KR20220033021A KR20220033021A (ko) 2022-03-15
KR102603799B1 true KR102603799B1 (ko) 2023-11-17

Family

ID=80461938

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210116479A KR102603799B1 (ko) 2020-09-08 2021-09-01 메모리 장치 및 그 동작 방법

Country Status (4)

Country Link
US (1) US12106070B2 (ko)
JP (1) JP7255068B2 (ko)
KR (1) KR102603799B1 (ko)
CN (1) CN114153421A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115935878B (zh) * 2023-01-06 2023-05-05 上海后摩智能科技有限公司 基于模拟信号的多比特数据计算电路、芯片及计算装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190102170A1 (en) 2018-09-28 2019-04-04 Intel Corporation Techniques for current-sensing circuit design for compute-in-memory
US10741247B1 (en) 2019-06-21 2020-08-11 Macronix International Co., Ltd. 3D memory array device and method for multiply-accumulate

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781702A (en) 1995-06-07 1998-07-14 Univ South Western Hybrid chip-set architecture for artificial neural network system
US6803989B2 (en) 1997-07-15 2004-10-12 Silverbrook Research Pty Ltd Image printing apparatus including a microcontroller
US8064269B2 (en) * 2008-05-02 2011-11-22 Micron Technology, Inc. Apparatus and methods having majority bit detection
US9892782B1 (en) * 2011-05-25 2018-02-13 Terra Prime Technologies, Llc Digital to analog converters and memory devices and related methods
US9830999B2 (en) * 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US10410724B2 (en) * 2016-04-08 2019-09-10 SK Hynix Inc. Erase page indicator
US11308290B2 (en) * 2017-04-17 2022-04-19 Octavo Systems Llc Mixed signal computer architecture
JP2019139300A (ja) * 2018-02-06 2019-08-22 国立大学法人北海道大学 ニューラル電子回路
US11669446B2 (en) * 2018-06-18 2023-06-06 The Trustees Of Princeton University Configurable in memory computing engine, platform, bit cells and layouts therefore
US10643119B2 (en) * 2018-07-24 2020-05-05 Sandisk Technologies Llc Differential non-volatile memory cell for artificial neural network
US10755783B2 (en) * 2018-08-27 2020-08-25 Silicon Storage Technology Temperature and leakage compensation for memory cells in an analog neural memory system used in a deep learning neural network
KR102658831B1 (ko) * 2018-12-31 2024-04-18 삼성전자주식회사 비휘발성 메모리 장치 및 비휘발성 메모리 장치를 이용한 계산 방법
US11474785B2 (en) * 2019-02-08 2022-10-18 Samsung Electronics Co., Ltd. Memory device and computing device using the same
CN111614353A (zh) * 2019-02-26 2020-09-01 北京知存科技有限公司 一种存算一体芯片中数模转换电路与模数转换电路复用装置
CN112151095A (zh) 2019-06-26 2020-12-29 北京知存科技有限公司 存算一体芯片、存储单元阵列结构
US11561795B2 (en) * 2020-03-30 2023-01-24 Arm Limited Accumulating data values and storing in first and second storage devices
WO2022177570A1 (en) * 2021-02-19 2022-08-25 University Of Central Florida Research Foundation, Inc. Hybrid analog and digital computational system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190102170A1 (en) 2018-09-28 2019-04-04 Intel Corporation Techniques for current-sensing circuit design for compute-in-memory
US10741247B1 (en) 2019-06-21 2020-08-11 Macronix International Co., Ltd. 3D memory array device and method for multiply-accumulate

Also Published As

Publication number Publication date
JP7255068B2 (ja) 2023-04-11
JP2022045335A (ja) 2022-03-18
CN114153421A (zh) 2022-03-08
US20220075600A1 (en) 2022-03-10
KR20220033021A (ko) 2022-03-15
US12106070B2 (en) 2024-10-01

Similar Documents

Publication Publication Date Title
KR102207909B1 (ko) 비트라인의 전하 공유에 기반하는 cim 장치 및 그 동작 방법
CN114430889A (zh) 连续按位排序二进制加权乘法累加器
KR102603799B1 (ko) 메모리 장치 및 그 동작 방법
Liu et al. Sme: Reram-based sparse-multiplication-engine to squeeze-out bit sparsity of neural network
US11764801B2 (en) Computing-in-memory circuit
Rhe et al. VWC-SDK: Convolutional weight mapping using shifted and duplicated kernel with variable windows and channels
CN110889080B (zh) 乘积累加运算装置、乘积累加运算方法和系统
KR102603795B1 (ko) 메모리 장치 및 그 동작 방법
US11656988B2 (en) Memory device and operation method thereof
TWI783573B (zh) 記憶體裝置及其操作方法
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
Jiang et al. An In-Memory-Computing STT-MRAM Macro with Analog ReLU and Pooling Layers for Ultra-High Efficient Neural Network
Huang et al. Sparsity-aware non-volatile computing-in-memory macro with analog switch array and low-resolution current-mode ADC
CN111611528A (zh) 电流值可变的电流积分和电荷共享的多位卷积运算模组
TWI777645B (zh) 記憶體裝置及其操作方法
US20230161556A1 (en) Memory device and operation method thereof
Zhang et al. MACC-SRAM: A Multistep Accumulation Capacitor-Coupling In-Memory Computing SRAM Macro for Deep Convolutional Neural Networks
Vignali 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
US20230221956A1 (en) Memory device and operating method thereof
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
Demirkiran et al. Leveraging Residue Number System for Designing High-Precision Analog Deep Neural Network Accelerators
Li et al. Combining Max Pooling and ReLU Activation Function in Stochastic Computing
Liu et al. An Energy-Efficient Mixed-Bit ReRAM-based Computing-in-Memory CNN Accelerator with Fully Parallel Readout
Yoshioka A 818–4094 TOPS/W Capacitor-Reconfigured Analog CIM for Unified Acceleration of CNNs and Transformers
Shi et al. Specific ADC of NVM-Based Computation-in-Memory for Deep Neural Networks

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant