KR20230110360A - 딥 러닝 인공 신경망에서의 아날로그 신경 메모리를위한 디지털 출력 메케니즘 - Google Patents

딥 러닝 인공 신경망에서의 아날로그 신경 메모리를위한 디지털 출력 메케니즘 Download PDF

Info

Publication number
KR20230110360A
KR20230110360A KR1020237021984A KR20237021984A KR20230110360A KR 20230110360 A KR20230110360 A KR 20230110360A KR 1020237021984 A KR1020237021984 A KR 1020237021984A KR 20237021984 A KR20237021984 A KR 20237021984A KR 20230110360 A KR20230110360 A KR 20230110360A
Authority
KR
South Korea
Prior art keywords
voltage
input
sequence
current
output block
Prior art date
Application number
KR1020237021984A
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 claimed from PCT/US2021/026284 external-priority patent/WO2022146468A1/en
Publication of KR20230110360A publication Critical patent/KR20230110360A/ko

Links

Images

Classifications

    • 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
    • G06N3/065Analogue means
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • 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
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/12Analogue/digital converters
    • H03M1/34Analogue value compared with reference values
    • H03M1/38Analogue value compared with reference values sequentially only, e.g. successive approximation type
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B41/00Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates
    • H10B41/30Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by the memory core region
    • 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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/12Analogue/digital converters
    • H03M1/34Analogue value compared with reference values
    • H03M1/38Analogue value compared with reference values sequentially only, e.g. successive approximation type
    • H03M1/46Analogue value compared with reference values sequentially only, e.g. successive approximation type with digital/analogue converter for supplying reference values to converter
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/12Analogue/digital converters
    • H03M1/50Analogue/digital converters with intermediate conversion to time interval
    • H03M1/54Input signal sampled and held with linear return to datum
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M3/00Conversion of analogue values to or from differential modulation
    • H03M3/30Delta-sigma modulation
    • H03M3/458Analogue/digital converters using delta-sigma modulation as an intermediate step

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Neurology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Read Only Memory (AREA)
  • Character Discrimination (AREA)
  • Non-Volatile Memory (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
  • Analogue/Digital Conversion (AREA)
  • Networks Using Active Elements (AREA)

Abstract

인공 신경망에서 벡터x매트릭스 승산(VMM) 어레이 내의 선택된 비휘발성 메모리 셀 내에 저장된 값을 판독하거나 검증하기 위한 다수의 실시예가 개시된다. 실시예는 판독 또는 검증 동작 동안 VMM 어레이에 입력을 적용하기 위한 입력 블록의 다양한 설계 및 판독 또는 검증 동작 동안 VMM 어레이로부터 출력을 수신하기 위한 출력 블록의 다양한 설계를 포함한다.

Description

딥 러닝 인공 신경망에서의 아날로그 신경 메모리를 위한 디지털 출력 메케니즘
우선권 주장
본 출원은 2021년 01월 01일자로 출원되고 발명의 명칭이 "Input and Digital Output Mechanisms for Analog Neural Memory in a Deep Learning Artificial Neural Network,"인 미국 가특허 출원 번호 제63/133,270호, 및 2021년 03월 31일자로 출원되고 발명의 명칭이 "Digital Output Mechanisms for Analog Neural Memory in a Deep Learning Artificial Neural Network."인 미국 특허 출원 번호 제17/219,352호에 대한 우선권을 주장한다.
기술분야
인공 신경망에서 벡터x매트릭스 승산(VMM) 어레이 내의 비휘발성 메모리 셀을 판독 또는 검증하기 위한 출력 메케니즘의 많은 실시예가 개시된다.
인공 신경망은 생물학적 신경망(동물의 중추신경계, 특히 뇌)을 모방하며, 다수의 입력에 의존할 수 있고 일반적으로 알려져 있지 않은 함수를 추정하거나 근사화하는 데 이용된다. 인공 신경망은 일반적으로 서로 간에 메시지를 교환하는 상호연결된 "뉴런"의 층을 포함한다.
도 1은 인공 신경망을 예시하며, 원은 입력 또는 뉴런의 층을 표현한다. 연결부(시냅스로 지칭되는)는 화살표로 표현되며, 경험에 기초하여 튜닝될 수 있는 수치 가중치를 갖는다. 이것은 신경망을 입력에 적응할 수 있고 학습할 수 있게 만든다. 전형적으로, 신경망은 다수의 입력 층을 포함한다. 전형적으로 뉴런의 하나 이상의 중간 층, 및 신경망의 출력을 제공하는 뉴런의 출력 층이 있다. 각 레벨의 뉴런은 개별적으로 또는 집합적으로 시냅스로부터 수신된 데이터에 기초하여 결정을 내린다.
고성능 정보 처리를 위한 인공 신경망의 개발에서의 주요 문제 중 하나는 적절한 하드웨어 기술의 결여이다. 사실상, 실제 신경망은 매우 많은 수의 시냅스에 의존하며, 뉴런 사이의 높은 연결성, 즉 매우 높은 계산 병렬성을 가능하게 한다. 원칙적으로, 그러한 복잡성은 디지털 슈퍼컴퓨터 또는 특수 그래픽 처리 유닛 클러스터로 달성될 수 있다. 그러나, 고비용 외에도, 이들 접근법은 또한 주로 저정밀 아날로그 계산을 수행하기 때문에 훨씬 적은 에너지를 소비하는 생물학적 망에 비해 평범한 에너지 효율을 겪는다. CMOS 아날로그 회로가 인공 신경망에 사용되어 왔지만, 대부분의 CMOS 구현 시냅스는 많은 수의 뉴런 및 시냅스를 고려해 볼 때 너무 부피가 컸다.
출원인은 참조로 포함되는, 미국 특허 출원 번호 제15/594,439호에서 하나 이상의 비휘발성 메모리 어레이를 시냅스로서 활용하는 인공(아날로그) 신경망을 이전에 개시하였다. 비휘발성 메모리 어레이는 아날로그 뉴로모픽 메모리로서 동작한다. 신경망 장치는 제1 복수의 입력을 수신하고 그로부터 제1 복수의 출력을 생성하도록 구성된 제1 복수의 시냅스, 및 제1 복수의 출력을 수신하도록 구성된 제1 복수의 뉴런을 포함한다. 제1 복수의 시냅스는 복수의 메모리 셀을 포함하며, 메모리 셀 각각은 반도체 기판 내에 형성되고 그 사이에 연장되는 채널 영역을 갖는 이격된 소스 영역 및 드레인 영역, 채널 영역의 제1 부분 위에 배치되고 그로부터 절연되는 플로팅 게이트, 및 채널 영역의 제2 부분 위에 배치되고 그로부터 절연되는 비플로팅 게이트를 포함한다. 복수의 메모리 셀 각각은 플로팅 게이트 상의 전자의 수에 대응하는 가중치 값을 저장하도록 구성된다. 복수의 메모리 셀은 제1 복수의 입력을 저장된 가중치 값과 승산하여 제1 복수의 출력을 생성하도록 구성된다.
아날로그 뉴로모픽 메모리 시스템에서 사용되는 각 비휘발성 메모리 셀은 플로팅 게이트에서 매우 특정적이고 정확한 양의 전하, 즉 일정 수의 전자를 유지하도록 소거되고 프로그램되어야 한다. 예를 들어, 각 플로팅 게이트는 N개의 상이한 값 중 하나를 유지해야 하며, N은 각 셀에 의해 표시될 수 있는 상이한 가중치의 수이다. N의 예는 16, 32, 64, 128 및 256을 포함한다.
하나의 VMM의 출력이 종종 다른 VMM에 적용될 필요가 있기 때문에, VMM 시스템에서 VMM의 출력을 비트로 변환하고 입력 비트를 다른 VMM에 적용할 수 있는 것이 바람직하다. 이어서, 문제는 VMM 시스템을 위한 비트 코딩 메케니즘을 가장 잘 구현하는 방법에 대해 나타난다.
필요한 것은 프로그래밍, 검증, 및 판독을 수행하기 위한 VMM에 대한 개선된 입력 및 출력 블록이다.
인공 신경망에서 벡터x매트릭스 승산(VMM) 어레이 내의 선택된 메모리 셀 내에 저장된 값을 판독하거나 검증하기 위한 다수의 실시예가 개시된다. 실시예는 VMM 어레이와 함께 사용하기 위한 입력 블록 및 출력 블록의 다양한 설계를 포함한다.
일 실시예에서, 비휘발성 메모리 셀의 어레이로부터 출력을 생성하기 위한 출력 블록은 어레이에 대한 입력의 시퀀스에 응답하여 생성된 어레이 내의 하나 이상의 선택된 비휘발성 메모리 셀로부터 전류의 시퀀스를 수신하고 전류의 시퀀스에 응답하여 전압 또는 전압의 시퀀스를 생성하기 위한 전류-전압 변환기 및 전압 또는 전압의 시퀀스를 복수의 출력 비트로 변환하기 위한 아날로그-디지탈 변환기를 포함하며, 복수의 출력 비트는 전류의 시퀀스 또는 전압 또는 전압의 시퀀스 중 하나 이상에 수행되는 가중화 함수를 반영한다.
다른 실시예에서, 비휘발성 메모리 셀의 어레이로부터 출력을 생성하기 위한 출력 블록은 어레이에 적용되는 입력에 응답하여 어레이 내의 하나 이상의 선택된 비휘발성 메모리 셀로부터 전류를 수신하고 전류를 전압으로 변환하기 위한 전류-전압 변환기를 포함하며, 전류-전압 변환기는 전압을 유지하기 위해 샘플링 및 홀드 회로를 포함한다.
다른 실시예에서, 어레이에 의해 수신된 입력의 시퀀스에 응답하여 비휘발성 메모리 셀의 어레이로부터 수신된 전류의 시퀀스로부터 출력을 생성하기 위한 출력 블록은 전류의 시퀀스를 수신하고 전류의 시퀀스를 복수의 출력 비트를 포함하는 출력으로 변환하기 위한 아날로그-디지털 변환기를 포함한다.
도 1은 인공 신경망을 예시하는 도면이다.
도 2는 종래 기술의 분리형 게이트 플래시 메모리 셀을 도시한다.
도 3은 다른 종래 기술의 분리형 게이트 플래시 메모리 셀을 도시한다.
도 4는 다른 종래 기술의 분리형 게이트 플래시 메모리 셀을 도시한다.
도 5는 다른 종래 기술의 분리형 게이트 플래시 메모리 셀을 도시한다.
도 6은 하나 이상의 비휘발성 메모리 어레이를 활용하는 상이한 레벨의 예시적인 인공 신경망을 예시하는 도면이다.
도 7은 벡터x매트릭스 승산 시스템을 예시하는 블록 도면이다.
도 8은 하나 이상의 벡터x매트릭스 승산 시스템을 활용하는 예시적인 인공 신경망을 예시하는 블록 도면이다.
도 9는 벡터x매트릭스 승산 시스템의 다른 실시예를 도시한다.
도 10은 벡터x매트릭스 승산 시스템의 다른 실시예를 도시한다.
도 11은 벡터x매트릭스 승산 시스템의 다른 실시예를 도시한다.
도 12는 벡터x매트릭스 승산 시스템의 다른 실시예를 도시한다.
도 13은 벡터x매트릭스 승산 시스템의 다른 실시예를 도시한다.
도 14는 종래 기술의 장단기 메모리 시스템을 도시한다.
도 15는 장단기 메모리 시스템에서 사용하기 위한 예시적인 셀을 도시한다.
도 16은 도 15의 예시적인 셀의 실시예를 도시한다.
도 17은 도 15의 예시적인 셀의 다른 실시예를 도시한다.
도 18은 종래 기술의 게이티드 순환 유닛 시스템을 도시한다.
도 19는 게이티드 순환 유닛 시스템에서 사용하기 위한 예시적인 셀을 도시한다.
도 20은 도 19의 예시적인 셀의 실시예를 도시한다.
도 21은 도 19의 예시적인 셀의 다른 실시예를 도시한다.
도 22a는 비휘발성 메모리 셀을 프로그래밍하는 방법의 실시예를 도시한다.
도 22b는 비휘발성 메모리 셀을 프로그래밍하는 방법의 다른 실시예를 도시한다.
도 23은 코올스 프로그래밍 방법의 실시예를 도시한다.
도 24는 비휘발성 메모리 셀의 프로그래밍에서 사용되는 예시적인 펄스를 도시한다.
도 25는 비휘발성 메모리 셀의 프로그래밍에서 사용되는 예시적인 펄스를 도시한다.
도 26a 및 도 26b는 셀의 기울기 특성에 기초하여 프로그래밍 파라미터를 조절하는 비휘발성 메모리 셀의 프로그래밍을 위한 교정 알고리즘을 도시한다.
도 27은 도 26의 교정 알고리즘에 사용되는 회로를 도시한다.
도 28은 비휘발성 메모리 셀의 프로그래밍을 위한 교정 알고리즘을 도시한다.
도 29는 도 28의 교정 알고리즘에 사용되는 회로를 도시한다.
도 30은 프로그래밍 동작 동안 비휘발성 메모리 셀의 제어 게이트에 적용되는 전압의 예시적인 진행을 도시한다.
도 31은 프로그래밍 동작 동안 비휘발성 메모리 셀의 제어 게이트에 적용되는 전압의 예시적인 진행을 도시한다.
도 32는 벡터x승산 매트릭스 시스템 내의 비휘발성 메모리 셀의 프로그래밍 동안 프로그래밍 전압을 적용하기 위한 시스템을 도시한다.
도 33은 전하 합산기 회로를 도시한다.
도 34는 전류 합산기 회로를 도시한다.
도 35는 디지털 합산기 회로를 도시한다.
도 36a는 뉴런 출력을 위한 적분 아날로그-디지털 변환기의 실시예를 도시한다.
도 36b는 도 36a의 적분 아날로그-디지털 변환기의 시간 경과에 따른 전압 출력을 보여주는 그래프를 도시한다.
도 36c는 뉴런 출력을 위한 적분 아날로그-디지털 변환기의 다른 실시예를 도시한다.
도 36d는 도 36c의 적분 아날로그-디지털 변환기의 시간 경과에 따른 전압 출력을 보여주는 그래프를 도시한다.
도 36e는 뉴런 출력을 위한 적분 아날로그-디지털 변환기의 다른 실시예를 도시한다.
도 36f는 뉴런 출력을 위한 적분 아날로그-디지털 변환기의 다른 실시예를 도시한다.
도 37a 및 도 37b는 뉴런 출력을 위한 연속 근사 아날로그-디지털 변환기를 도시한다.
도 38은 시그마 델타 아날로그-디지털 변환기의 실시예를 도시한다.
도 39는 출력 블록을 도시한다.
도 40은 벡터x매트릭스 승산 시스템의 다른 실시예를 도시한다.
도 41은 벡터x매트릭스 승산 시스템의 다른 실시예를 도시한다.
도 42는 벡터x매트릭스 승산 시스템의 다른 실시예를 도시한다.
도 43은 벡터x매트릭스 승산 시스템의 블록 도면을 도시한다.
도 44는 디지털 합산기를 도시한다.
도 45는 출력 블록을 도시한다.
도 46은 전류-전압 변환기의 실시예를 도시한다.
도 47은 전류-전압 변환기의 다른 실시예를 도시한다.
도 48은 전류-전압 변환기의 다른 실시예를 도시한다.
도 49a는 전류-전압 변환기의 다른 실시예를 도시한다.
도 49b는 무손실 가변 저항기의 실시예를 도시한다.
도 50은 전류-전압 변환기의 다른 실시예를 도시한다.
도 51은 전류-전압 변환기의 다른 실시예를 도시한다.
도 52a, 도 52b, 및 도 52c는 하이브리드 직렬 변환기의 실시예를 도시한다.
본 발명의 인공 신경망은 CMOS 기술과 비휘발성 메모리 어레이의 조합을 활용한다.
비휘발성 메모리 셀
디지털 비휘발성 메모리는 잘 알려져 있다. 예를 들어, 본 원에 참조로 포함되는, 미국 특허 제5,029,130호("'130 특허")는 플래시 메모리 셀의 한 유형인, 분리형 게이트 비휘발성 메모리 셀의 어레이를 개시하고 있다. 그러한 메모리 셀(210)이 도 2에 도시되어 있다. 각 메모리 셀(210)은 반도체 기판(12) 내에 형성된, 그 사이에 채널 영역(18)을 갖는 소스 영역(14) 및 드레인 영역(16)을 포함한다. 플로팅 게이트(20)는 채널 영역(18)의 제1 부분 위에 형성되고 그로부터 절연되며(그리고 전도도를 제어하며), 소스 영역(14)의 일부분 위에 형성된다. 워드 라인 단자(22)(전형적으로 워드 라인에 결합되는)는 채널 영역(18)의 제2 부분 위에 배치되고 그로부터 절연되는(그리고 그의 전도도를 제어하는) 제1 부분, 및 플로팅 게이트(20) 위로 연장되는 제2 부분을 갖는다. 플로팅 게이트(20) 및 워드 라인 단자(22)는 게이트 산화물에 의해 기판(12)으로부터 절연된다. 비트 라인(24)은 드레인 영역(16)에 결합된다.
메모리 셀(210)은 워드 라인 단자(22) 상에 높은 양의 전압을 배치함으로써 소거되며(전자가 플로팅 게이트로부터 제거됨), 플로팅 게이트(20) 상의 전자가 파울러-노드하임(FN) 터널링을 통해 중간 절연체를 통과하여 플로팅 게이트(20)로부터 워드 라인 단자(22)로 터널링하게 한다.
메모리 셀(210)은 워드 라인 단자(22) 상에 양의 전압 및 소스 영역(14) 상에 양의 전압을 배치함으로써 고온 전자에 의한 소스 측 주입(SSI)에 의해 프로그램된다(전자가 플로팅 게이트 상에 배치됨). 전자 전류가 드레인 영역(16)으로부터 소스 영역(14)을 향해 흐를 것이다. 전자는 워드 라인 단자(22)와 플로팅 게이트(20) 사이의 간극에 도달할 때 가속되고 가열될 것이다. 가열된 전자 중 일부는 플로팅 게이트(20)로부터의 정전기적 인력으로 인해 게이트 산화물을 통과하여 플로팅 게이트(20) 상으로 주입될 것이다.
메모리 셀(210)은 드레인 영역(16) 및 워드 라인 단자(22) 상에 양의 판독 전압을 배치함(워드 라인 단자 아래의 채널 영역(18)의 부분을 턴온시킴)으로써 판독된다. 플로팅 게이트(20)가 양으로 대전되면(즉, 전자가 소거되면), 플로팅 게이트(20) 아래의 채널 영역(18)의 부분이 또한 턴온되고, 전류가 채널 영역(18)을 가로질러 흐를 것이며, 소거된 또는 "1" 상태로 감지된다. 플로팅 게이트(20)가 음으로 대전되면(즉, 전자로 프로그램되면), 플로팅 게이트(20) 아래의 채널 영역의 부분은 대부분 또는 완전히 턴오프되고, 전류가 채널 영역(18)을 가로질러 흐르지 않을 것이며(또는 흐름이 거의 없을 것이며), 프로그램된 또는 "0" 상태로 감지된다.
표 1은 판독, 소거, 및 프로그램 동작을 수행하기 위해 메모리 셀(110)의 단자에 적용될 수 있는 전형적인 전압 및 전류 범위를 도시한다:
[표 1]
Figure pct00001
다른 타입의 플래시 메모리 셀인 다른 분리형 게이트 메모리 셀 구성이 알려져 있다. 예를 들어, 도 3은 소스 영역(14), 드레인 영역(16), 채널 영역(18)의 제1 부분 위의 플로팅 게이트(20), 채널 영역(18)의 제2 부분 위의 선택 게이트(22)(전형적으로 워드 라인(WL)에 결합됨), 플로팅 게이트(20) 위의 제어 게이트(28), 및 소스 영역(14) 위의 소거 게이트(30)를 포함하는 4개 게이트 메모리 셀(310)을 도시한다. 이러한 구성은, 모든 목적을 위해 본 원에 참조로 포함되는, 미국 특허 제6,747,310호에 설명되어 있다. 여기서, 모든 게이트는 플로팅 게이트(20)를 제외하고 비플로팅 게이트이며, 그들이 전압원에 전기적으로 연결되거나 연결 가능하다는 것을 의미한다. 프로그래밍은 채널 영역(18)으로부터의 가열된 전자가 플로팅 게이트(20) 상으로 자신을 주입하는 것에 의해 수행된다. 소거는 전자가 플로팅 게이트(20)로부터 소거 게이트(30)로 터널링하는 것에 의해 수행된다.
표 2는 판독, 소거, 및 프로그램 동작을 수행하기 위해 메모리 셀(310)의 단자에 적용될 수 있는 전형적인 전압 및 전류 범위를 도시한다:
[표 2]
Figure pct00002
도 4는 플래시 메모리 셀의 다른 유형인 3개 게이트 메모리 셀(410)을 도시한다. 메모리 셀(410)은, 메모리 셀(410)이 별개의 제어 게이트를 갖지 않는다는 점을 제외하고는, 도 3의 메모리 셀(310)과 동일하다. 소거 동작(소거 게이트의 사용을 통해 발생하는 소거에 의해) 및 판독 동작은, 제어 게이트 바이어스가 적용되지 않는다는 점을 제외하고는, 도 3의 것과 유사하다. 프로그래밍 동작은 또한, 제어 게이트 바이어스 없이 행해지고, 결과적으로, 제어 게이트 바이어스의 결여를 보상하기 위해 프로그램 동작 동안 소스 라인 상에 더 높은 전압이 적용되어야 한다.
표 3은 판독, 소거, 및 프로그램 동작을 수행하기 위해 메모리 셀(410)의 단자에 적용될 수 있는 전형적인 전압 및 전류 범위를 도시한다:
[표 3]
Figure pct00003
도 5는 플래시 메모리 셀의 다른 유형인 적층형 게이트 메모리 셀(510)을 도시한다. 메모리 셀(510)은, 절연 층(미도시)에 의해 분리되어, 플로팅 게이트(20)가 전체 채널 영역(18) 위로 연장되고, 제어 게이트(22)(여기서 워드 라인에 결합될 것임)가 플로팅 게이트(20) 위로 연장된다는 점을 제외하고는, 도 2의 메모리 셀(210)과 유사하다. 소거는 FG로부터 기판으로의 전자의 FN 터널링에 의해 행해지고, 프로그래밍은 채널(18)과 드레인 영역(16) 사이의 영역에서 채널 고온 전자(CHE) 주입에 의해, 소스 영역(14)으로부터 드레인 영역(16)으로 흐르는 전자에 의하며 더 높은 제어 게이트 전압을 갖는 메모리 셀(210)에 대한 그것과 유사한 판독 동작에 의한 것이다.
표 4는 판독, 소거, 및 프로그램 동작을 수행하기 위해 메모리 셀(510) 및 기판(12)의 단자에 적용될 수 있는 전형적인 전압 범위를 도시한다:
[표 4]
Figure pct00004
본 원에서 설명된 방법 및 수단은, 제한 없이, 핀펫 분리형 게이트 플래시 또는 적층 게이트 플래시 메모리, 낸드 플래시, 소노스(실리콘-산화물-질화물-산화물-실리콘, 질화물 내의 전하 트랩), 모노스(금속-산화물-질화물-산화물-실리콘, 질화물 내의 금속 전하 트랩), 알이램(저항성 램), 피시엠(상 변화 메모리), 엠램(강자기 램), 에프이램(강유전체 램), 시티(전하 트랩) 메모리, 시엔(탄소 나노튜브) 메모리, 오티피(2 레벨 또는 복수 레벨 1회 프로그램 가능), 및 시이램(상관 전자 램)과 같은 다른 비휘발성 메모리 기술에 적용될 수 있다.
인공 신경망에서 전술한 비휘발성 메모리 셀의 유형 중 하나를 포함하는 메모리 어레이를 활용하기 위해, 2개의 수정이 이루어진다. 첫째, 라인은 하기에서 더 설명되는 바와 같이, 각 메모리 셀이 어레이 내의 다른 메모리 셀의 메모리 상태에 악영향을 미치지 않으면서 개별적으로 프로그램, 소거, 및 판독될 수 있도록 구성된다. 둘째, 메모리 셀의 연속적인(아날로그) 프로그래밍이 제공된다.
구체적으로, 어레이 내의 각 메모리 셀의 메모리 상태(즉, 플로팅 게이트 상의 전하)는, 독립적 및 다른 메모리 셀의 교란을 최소화하며, 완전 소거된 상태로부터 완전 프로그램된 상태로 연속적으로 변경될 수 있다. 다른 실시예에서, 어레이 내의 각 메모리 셀의 메모리 상태(즉, 플로팅 게이트 상의 전하)는, 독립적 및 다른 메모리 셀의 교란을 최소화하며, 완전 프로그램된 상태로부터 완전 소거된 상태로 연속적으로 변경될 수 있고, 그 역으로도 가능하다. 이것은 셀 저장소가 아날로그이거나 또는 적어도, 많은 개별 값(예를 들어 16개 또는 64개의 상이한 값) 중 하나를 저장할 수 있음을 의미하며, 메모리 어레이 내의 모든 셀의 매우 정밀하고 개별적인 튜닝을 허용하고, 메모리 어레이를 신경망의 시냅스 가중치에 대한 미세 튜닝 조절을 저장하고 행하는 데 이상적인 것으로 되게 한다.
비휘발성 메모리 셀 어레이를 채용한 신경망
도 6은 본 실시예의 비휘발성 메모리 어레이를 활용하는 신경망의 비제한적인 예를 개념적으로 예시한다. 이 예는 안면 인식 응용을 위해 비휘발성 메모리 어레이 신경망을 이용하지만, 임의의 다른 적절한 응용이 비휘발성 메모리 어레이 기반 신경망을 이용하여 구현될 수 있다.
(S0)은, 이 예에 대해, 5 비트 정밀도를 갖는 32×32 픽셀 RGB 이미지(즉, 각각의 색깔 R, G 및 B에 대해 하나씩인 3개의 32×32 픽셀 어레이, 각 픽셀은 5 비트 정밀도임)인 입력 층이다. 입력 층(S0)으로부터 층(C1)으로 가는 시냅스(CB1)는 일부 경우에 가중치 및 다른 경우에 공유 가중치의 상이한 세트를 적용하며, 입력 이미지를 3×3 픽셀 중첩 필터(커널)로 스캔하며, 필터를 1개의 픽셀(또는 모델에 의해 지시되는 바와 같이 1개 초과의 픽셀)만큼 시프트한다. 구체적으로, 이미지의 3×3 부분 내의 9개 픽셀(즉, 필터 또는 커널로 지칭됨)에 대한 값이 시냅스(CB1)에 제공되며, 이들 9개의 입력 값이 적절한 가중치와 승산되고, 그 승산의 출력을 합산한 후, 단일 출력 값이 결정되고, 층(C1)의 피처 맵 중 하나의 픽셀을 생성하기 위해 CB1의 제1 시냅스에 의해 제공된다. 이어서, 3×3 필터가 입력 층(S0) 내에서 하나의 픽셀만큼 우측으로 시프트되며(즉, 우측 상에 3개 픽셀의 컬럼을 추가하고, 좌측 상에 3개 픽셀의 컬럼을 뺌), 이에 의해 이러한 새롭게 위치된 필터에서의 9개 픽셀 값이 시냅스(CB1)에 제공되며, 그들은 동일한 가중치와 승산되고, 제2 단일 출력 값이 연관된 시냅스에 의해 결정된다. 이러한 프로세스는, 3개의 모든 색깔 및 모든 비트(정밀도 값)에 대해, 3×3 필터가 입력 층(S0)의 전체 32×32 픽셀 이미지를 가로질러서 스캔할 때까지 계속된다. 이어서, 프로세스는, 층(C1)의 상이한 피처 맵을 생성하기 위해, 층(C1)의 모든 피처 맵이 계산될 때까지, 가중치의 상이한 세트를 사용하여 반복된다.
층(C1)에, 본 예에서, 각각 30×30 픽셀을 갖는 16개의 피처 맵이 있다. 각 픽셀은 입력과 커널을 승산하는 것으로부터 추출된 새로운 피처 픽셀이고, 따라서 각 피처 맵은 2차원 어레이이고, 따라서, 이러한 예에서, 층(C1)은 2차원 어레이의 16개 층을 구성한다(본 원에서 언급된 층 및 어레이는 반드시 물리적 관계인 것이 아니라 논리적 관계임 - 즉, 어레이는 반드시 물리적으로 2차원 어레이로 배향되지는 않음에 유념함). 층(C1) 내의 16개의 피처 맵의 각각은 필터 스캔에 적용된 시냅스 가중치의 상이한 16개 세트 중 하나에 의해 생성된다. (C1)피처 맵은 모두, 경계 식별과 같은 동일한 이미지 피처의 상이한 양태에 관한 것일 수 있다. 예를 들어, 제1 맵(이러한 제1 맵을 생성하는 데 사용되는 모든 스캔을 위해 공유되는 제1 가중치 세트를 사용하여 생성됨)은 원형 에지를 식별할 수 있고, 제2 맵(제1 가중치 세트와는 상이한 제2 가중치 세트를 사용하여 생성됨)은 직사각형 에지, 또는 특정 피처의 종횡비 등을 식별할 수 있다.
활성화 함수(P1)(풀링)가 층(C1)으로부터 층(S1)으로 가기 전에 적용되며, 각 피처 맵 내의 연속적인 비중첩 2×2 영역으로부터의 값을 풀링한다. 풀링 함수(P1)의 목적은, 예를 들어 에지 위치의 의존성을 감소시키고 다음 스테이지로 가기 전에 데이터 크기를 감소시키기 위해 인근 위치를 평균하는 것이다(또는 최대 함수가 또한 사용될 수 있음). 층(S1)에, 16개의 15×15 피처 맵(즉, 각각 15×15 픽셀의 상이한 16개 어레이)이 있다. 층(S1)으로부터 층(C2)으로 가는 시냅스(CB2)는 1 픽셀의 필터 시프트를 갖는 4×4 필터로 층(S1) 내의 맵을 스캔한다. 층(C2)에, 22개의 12×12 피처 맵이 있다. 활성화 함수(P2)(풀링)가 층(C2)으로부터 층(S2)으로 가기 전에 적용되며, 각 피처 맵 내의 연속적인 비중첩 2×2 영역으로부터의 값을 풀링한다. 층(S2)에, 22개의 6×6 피처 맵이 있다. 활성화 함수(풀링)가 층(S2)으로부터 층(C3)으로 가는 시냅스(CB3)에서 적용되며, 층(C3) 내의 모든 뉴런은 (CB3)의 각 시냅스를 통해 층(S2) 내의 모든 맵에 연결된다. 층(C3)에, 64개의 뉴런이 있다. 층(C3)으로부터 출력 층(S3)으로 가는 시냅스(CB4)는 (C3)을 (S3)에 완전히 연결하며, 즉 층(C3) 내의 모든 뉴런은 층(S3) 내의 모든 뉴런에 연결된다. (S3)에서의 출력은 10개의 뉴런을 포함하며, 최고 출력 뉴런이 클래스를 결정한다. 이러한 출력은, 예를 들어, 원래의 이미지의 내용의 식별 또는 분류를 나타낼 수 있다.
시냅스의 각 층은 비휘발성 메모리 셀의 어레이 또는 어레이의 일부를 사용하여 구현된다.
도 7은 그 목적을 위해 사용될 수 있는 어레이의 블록 도면이다. 벡터x매트릭스 승산(VMM) 어레이(32)는 비휘발성 메모리 셀을 포함하며, 하나의 층과 다음 층 사이에서 시냅스(도 6의 (CB1), (CB2), (CB3), (CB4)와 같은)로서 활용된다. 구체적으로, VMM 어레이(32)는 비휘발성 메모리 셀(33)의 어레이, 소거 게이트 및 워드 라인 게이트 디코더(34), 제어 게이트 디코더(35), 비트 라인 디코더(36) 및 소스 라인 디코더(37)를 포함하며, 비휘발성 메모리 셀 어레이(33)에 대한 각각의 입력을 디코딩한다. VMM 어레이(32)로의 입력은 소거 게이트 및 워드 라인 게이트 디코더(34)로부터 또는 제어 게이트 디코더(35)로부터일 수 있다. 이 예에서, 소스 라인 디코더(37)는 또한 비휘발성 메모리 셀 어레이(33)의 출력을 디코딩한다. 대안적으로, 비트 라인 디코더(36)는 비휘발성 메모리 셀 어레이(33)의 출력을 디코딩할 수 있다.
비휘발성 메모리 셀 어레이(33)는 2개의 목적을 담당한다. 첫째, 그것은 VMM 어레이(32)에 의해 사용될 가중치를 저장한다. 둘째, 비휘발성 메모리 셀 어레이(33)는 입력을 비휘발성 메모리 셀 어레이(33)에 저장된 가중치와 사실상 승산하고 다음 층으로의 입력 또는 최종 층으로의 입력이 될 출력을 생성하기 위해 출력 라인(소스 라인 또는 비트 라인)마다 가산한다. 승산 및 가산 함수를 수행함으로써, 비휘발성 메모리 셀 어레이(33)는 별개의 승산 및 가산 로직 회로에 대한 필요성을 무효화하고, 또한 그의 인-시츄 메모리 계산으로 인해 전력 효율적이다.
비휘발성 메모리 셀 어레이(33)의 출력은 차동 합산기(합산 연산 증폭기 또는 합산 전류 미러와 같은)(38)에 공급되며, 그 콘볼루션에 대한 단일 값을 생성하기 위해 비휘발성 메모리 셀 어레이(33)의 출력을 합산한다. 차동 합산기(38)는 양의 가중치 및 음의 가중치의 합산을 수행하도록 배열된다.
이어서 차동 합산기(38)의 합산된 출력 값은 출력을 정류하는 활성화 함수 회로(39)에 공급된다. 활성화 함수 회로(39)는 시그모이드, tanh 또는 ReLU 함수를 제공할 수 있다. 활성화 함수 회로(39)의 정류된 출력 값은 다음 층(예를 들어, 도 6의 C1)으로서 피처 맵의 요소가 되고, 이어서 다음 피처 맵 층 또는 최종 층을 생성하기 위해 다음 시냅스에 적용된다. 따라서, 이 예에서, 비휘발성 메모리 셀 어레이(33)는 복수의 시냅스(이전 뉴런 층으로부터 또는 이미지 데이터베이스와 같은 입력 층으로부터 그들의 입력을 수신함)을 구성하고, 합산 연산 증폭기(38) 및 활성화 함수 회로(39)는 복수의 뉴런을 구성한다.
도 7의 VMM 어레이(32)에 대한 입력(WLx, EGx, CGx, 및 선택적으로 BLx 및 SLx)은 아날로그 레벨, 이진 레벨, 또는 디지털 비트일 수 있고(이 경우, DAC는 디지털 비트를 적절한 입력 아날로그 레벨로 변환하기 위해 제공됨), 출력은 아날로그 레벨, 이진 레벨, 또는 디지털 비트일 수 있다(이 경우, 출력 ADC는 출력 아날로그 레벨을 디지털 비트로 변환하기 위해 제공됨).
도 8은 여기에서 VMM 어레이(32a, 32b, 32c, 32d, 및 32e)로 표지된 VMM 어레이(32)의 다수의 층의 사용을 도시하는 블록 도면이다. 도 8에 도시된 바와 같이, Inputx로 표기된 입력은 디지털-아날로그 변환기(31)에 의해 디지털로부터 아날로그로 변환되고, 입력 VMM 어레이(32a)에 제공된다. 변환된 아날로그 입력은 전압 또는 전류일 수 있다. 제1 층에 대한 입력 D/A 변환은, 입력(Inputx)을 입력 VMM 어레이(32a)의 매트릭스 승산기에 대한 적절한 아날로그 레벨에 맵핑시키는 함수 또는 LUT(룩업테이블)를 사용함으로써 행해질 수 있다. 입력 변환은 또한, 외부 아날로그 입력을 입력 VMM 어레이(32a)로 맵핑된 아날로그 입력으로 변환하기 위한 아날로그-아날로그(A/A) 변환기에 의해 행해질 수 있다.
입력 VMM 어레이(32a)에 의해 생성된 출력은 다음 VMM 어레이(은닉 레벨 1)(32b)로의 입력으로서 제공되고, 이어서 다음 VMM 어레이(은닉 레벨 2)(32c)로의 입력으로서 제공되는 출력을 생성하는, 등등이다. VMM 어레이(32)의 다양한 층은 콘볼루션 신경망(CNN)의 시냅스 및 뉴런의 상이한 층으로서 기능한다. 각 VMM 어레이(32a, 32b, 32c, 32d, 및 32e)는 독립형, 물리적 비휘발성 메모리 어레이일 수 있으며, 또는 다수의 VMM 어레이는 동일한 물리적 비휘발성 메모리 어레이의 상이한 부분을 활용할 수 있으며, 또는 다수의 VMM 어레이는 동일한 물리적 비휘발성 메모리 어레이의 중첩 부분을 활용할 수 있다. 도 8에 도시된 예는 다음과 같은 5개의 층(32a, 32b, 32c, 32d, 32e)을 포함한다: 하나의 입력 층(32a), 2개의 은닉 층(32b, 32c) 및 2개의 완전히 연결된 층(32d, 32e). 당업자는 이것은 단지 예시적인 것이고 시스템이 대신에 2개 초과의 은닉 층 및 2개 초과의 완전히 연결된 층을 포함할 수 있다는 것을 인식할 것이다.
벡터x매트릭스 승산(VMM) 어레이
도 9는 뉴런 VMM 어레이(900)를 도시하며, 이는 도 3에 도시된 바와 같은 메모리 셀(310)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런의 부분 및 시냅스로서 활용된다. VMM 어레이(900)는 비휘발성 메모리 셀의 메모리 어레이(901) 및 비휘발성 기준 메모리 셀의 기준 어레이(902)(어레이의 상부에 있는)를 포함한다. 대안적으로, 다른 기준 어레이가 바닥에 배치될 수 있다.
VMM 어레이(900)에서, 제어 게이트 라인(903)과 같은 제어 게이트 라인이 수직 방향으로 이어지고(따라서, 로우 방향의 기준 어레이(902)는 제어 게이트 라인(903)에 직교함), 소거 게이트 라인(904)과 같은 소거 게이트 라인이 수평 방향으로 이어진다. 여기서, VMM 어레이(900)로의 입력은 제어 게이트 라인(CG0, CG1, CG2, CG3) 상에 제공되고, VMM 어레이(900)의 출력은 소스 라인(SL0, SL1) 상에 나타난다. 일 실시예에서, 짝수 로우만이 사용되고, 다른 실시예에서 홀수 로우만이 사용된다. 각 소스 라인(SL0, SL1, 각각) 상에 배치된 전류는 그 특정 소스 라인에 연결된 메모리 셀로부터의 모든 전류의 합산 함수를 수행한다.
신경망에 대해 본 원에 설명된 바와 같이, VMM 어레이(900)의 비휘발성 메모리 셀, 즉 VMM 어레이(900)의 메모리 셀(310)은 바람직하게는 하위-임계 영역에서 동작하도록 구성된다.
본 원에 기술된 비휘발성 기준 메모리 셀 및 비휘발성 메모리 셀은 약한 반전(하위-임계 영역)에서 바이어싱되며:
Ids = Io * e (Vg- Vth)/nVt = w * Io * e (Vg)/nVt,
여기서 w = e (- Vth)/nVt
여기서 Ids는 드레인-소스 전류이고; Vg는 메모리 셀 상의 게이트 전압이고; Vth는 메모리 셀의 임계 전압이고; Vt는 열 전압 = k*T/q이며, 이때 k는 볼츠만 상수이고, T는 켈빈 단위의 온도이고, q는 전자 전하이고; n은 기울기 인자 = 1 + (Cdep/Cox)이며, 이때 Cdep = 공핍 층의 커패시턴스이고, Cox는 게이트 산화물 층의 커패시턴스이고; Io는 임계 전압과 동일한 게이트 전압에서의 메모리 셀 전류이고, Io는 (Wt/L)*u*Cox* (n-1) * Vt2에 비례하며, 여기서 u는 캐리어 이동도이고, Wt 및 L은 메모리 셀의, 각각, 폭 및 길이이다.
입력 전류를 입력 전압으로 변환하기 위해 메모리 셀(기준 메모리 셀 또는 주변 메모리 셀과 같은) 또는 트랜지스터를 사용하는 I-V 로그 변환기에 대해:
Vg= n*Vt*log [Ids/wp*Io]
여기서, wp는 기준 또는 주변 메모리 셀의 w이다.
전류 입력이 있는 벡터 매트릭스 승산기(VMM) 어레이로서 사용되는 메모리 어레이에 대해, 출력 전류는 다음과 같다:
Iout = wa * Io * e (Vg)/nVt,
Iout = (wa/wp) * Iin = W * Iin이고
W = e (Vthp - Vtha)/nVt
여기서, wa = 메모리 어레이 내의 각 메모리 셀의 w이다.
Vthp는 주변 메모리 셀의 유효 임계 전압이고, Vtha는 메인(데이터) 메모리 셀의 유효 임계 전압이다. 트랜지스터의 임계 전압은 기판 바디 바이어스 전압의 함수이고, Vsb로 표시된 기판 바디 바이어스 전압은 그러한 온도에서 다양한 조건을 보상하도록 변조될 수 있다는 점에 유의한다. 임계 전압(Vth)은 다음과 같이 표현될 수 있다:
Vth = Vth0 + 감마 (SQRT |Vsb ― 2*φF) - SQRT |2* φF |)
여기서 Vth0은 제로 기판 바이어스에서의 임계 전압이고, φF는 표면 전위이고, 감마는 바디 효과 파라미터이다.
워드 라인 또는 제어 게이트는 입력 전압을 위해 메모리 셀에 대한 입력으로서 사용될 수 있다.
대안적으로, 본 원에서 설명된 VMM 어레이의 플래시 메모리 셀은 선형 영역에서 동작하도록 구성될 수 있다:
Ids = 베타* (Vgs-Vth)*Vds; 베타 = u*Cox*Wt/L,
W = α (Vgs-Vth)이다.
이는 선형 영역에서의 가중치(W)가 (Vgs-Vth)에 비례한다는 것을 의미함
워드 라인 또는 제어 게이트 또는 비트 라인 또는 소스 라인은 선형 영역에서 동작되는 메모리 셀에 대한 입력으로서 사용될 수 있다. 비트 라인 또는 소스 라인은 메모리 셀에 대한 출력으로서 사용될 수 있다.
I-V 선형 변환기에 대해, 선형 영역에서 동작하는 메모리 셀(기준 메모리 셀 또는 주변 메모리 셀과 같은) 또는 트랜지스터는 입력/출력 전류를 입력/출력 전압으로 선형적으로 변환하는 데 사용될 수 있다.
대안적으로, 본 원에 기술된 VMM 어레이의 메모리 셀은 포화 영역에서 동작하도록 구성될 수 있다:
Ids = ½ * 베타* (Vgs-Vth)2; 베타 = u*Cox*Wt/L
Wα (Vgs-Vth)2, 이는 가중치(W)가 (Vgs-Vth)2에 비례한다는 것을 의미함
워드 라인, 제어 게이트, 또는 소거 게이트가 포화 영역에서 동작되는 메모리 셀에 대한 입력으로서 사용될 수 있다. 비트 라인 또는 소스 라인은 출력 뉴런에 대한 출력으로서 사용될 수 있다.
대안적으로, 본 원에 기술된 VMM 어레이의 메모리 셀은 신경망의 각각의 층 또는 다중 층에 대한 모든 영역 또는 이들(하위 임계, 선형, 또는 포화)의 조합에서 사용될 수 있다.
도 7의 VMM 어레이(32)에 대한 다른 실시예가, 본 원에 참조로 포함되는 미국 특허 출원 번호 제15/826,345호에 설명되어 있다. 그 출원에 설명되어 있는 바와 같이, 소스 라인 또는 비트 라인이 뉴런 출력(전류 합산 출력)으로서 사용될 수 있다.
도 10은 뉴런 VMM 어레이(1000)를 도시하며, 이는 도 2에 도시된 바와 같은 메모리 셀(210)에 특히 적합하고, 입력 층과 다음 층 사이의 시냅스로서 활용된다. VMM 어레이(1000)는 비휘발성 메모리 셀의 메모리 어레이(1003), 제1 비휘발성 기준 메모리 셀의 기준 어레이(1001), 및 제2 비휘발성 기준 메모리 셀의 기준 어레이(1002)를 포함한다. 어레이의 컬럼 방향으로 배열된 기준 어레이(1001 및 1002)는, 단자(BLR0, BLR1, BLR2, 및 BLR3) 내로 흐르는 전류 입력을 전압 입력(WL0, WL1, WL2, 및 WL3)으로 변환하는 것을 담당한다. 실제로, 제1 및 제2 비휘발성 기준 메모리 셀은 그들 내로 흐르는 전류 입력으로 멀티플렉서(1014)(단지 부분적으로 도시됨)을 통해 다이오드 연결된다. 기준 셀은 타겟 기준 레벨로 튜닝(예를 들어, 프로그램된)된다. 타겟 기준 레벨은 기준 미니 어레이 매트릭스(미도시)에 의해 제공된다.
메모리 어레이(1003)는 2개의 목적을 담당한다. 첫째, 그것은 VMM 어레이(1000)에 의해 사용될 가중치를 그것의 각각의 메모리 셀 상에 저장한다. 둘째, 메모리 어레이(1003)는 입력(즉, 기준 어레이(1001 및 1002)가 워드 라인(WL0, WL1, WL2, 및 WL3)에 공급하기 위해 입력 전압으로 변환하는, 단자(BLR0, BLR1, BLR2, 및 BLR3)에 제공되는 전류 입력)을 메모리 어레이(1003)에 저장된 가중치와 사실상 승산하고, 이어서 모든 결과(메모리 셀 전류)를, 다음 층에 대한 입력 또는 최종 층에 대한 입력이 될 각각의 비트 라인(BL0 ~ BLN) 상의 출력을 생성하기 위해 가산한다. 승산 및 가산 함수를 수행함으로써, 메모리 어레이(1003)는 별개의 승산 및 가산 로직 회로에 대한 필요성을 무효화하고, 또한 전력 효율적이다. 여기서, 전압 입력은 워드 라인(WL0, WL1, WL2, 및 WL3) 상에 제공되고, 출력은 판독(추론) 동작 동안 각각의 비트 라인(BL0 ~ BLN) 상에 나타난다. 비트 라인(BL0 ~ BLN) 각각의 상에 배치된 전류는 그 특정 비트 라인에 연결된 모든 비휘발성 메모리 셀로부터의 전류의 합산 함수를 수행한다.
표 5는 VMM 어레이(1000)에 대한 동작 전압 및 전류를 도시한다. 표 내의 컬럼은 선택된 셀에 대한 워드 라인, 비선택된 셀에 대한 워드 라인, 선택된 셀에 대한 비트 라인, 비선택된 셀에 대한 비트 라인, 선택된 셀에 대한 소스 라인, 및 비선택된 셀에 대한 소스 라인 상에 배치된 전압을 나타낸다. 로우는 판독, 소거, 및 프로그램의 동작을 나타낸다.
[표 5]
Figure pct00005
도 11은 뉴런 VMM 어레이(1100)를 도시하며, 이는 도 2에 도시된 바와 같은 메모리 셀(210)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런의 부분 및 시냅스로서 활용된다. VMM 어레이(1100)는 비휘발성 메모리 셀의 메모리 어레이(1103), 제1 비휘발성 기준 메모리 셀의 기준 어레이(1101), 및 제2 비휘발성 기준 메모리 셀의 기준 어레이(1102)를 포함한다. 기준 어레이(1101 및 1102)는 VMM 어레이(1100)의 로우 방향으로 이어진다. VMM 어레이는, VMM 어레이(1100)에서 워드 라인이 수직 방향으로 이어진다는 점을 제외하고는, VMM(1000)과 유사하다. 여기서, 입력은 워드 라인(WLA0, WLB0, WLA1, WLB2, WLA2, WLB2, WLA3, WLB3) 상에 제공되고, 출력은 판독 동작 동안 소스 라인(SL0, SL1) 상에 나타난다. 각 소스 라인 상에 배치된 전류는 그 특정 소스 라인에 연결된 메모리 셀로부터의 모든 전류의 합산 함수를 수행한다.
표 6은 VMM 어레이(1100)에 대한 동작 전압 및 전류를 도시한다. 표 내의 컬럼은 선택된 셀에 대한 워드 라인, 비선택된 셀에 대한 워드 라인, 선택된 셀에 대한 비트 라인, 비선택된 셀에 대한 비트 라인, 선택된 셀에 대한 소스 라인, 및 비선택된 셀에 대한 소스 라인 상에 배치된 전압을 나타낸다. 로우는 판독, 소거, 및 프로그램의 동작을 나타낸다.
[표 6]
Figure pct00006
도 12는 뉴런 VMM 어레이(1200)를 도시하며, 이는 도 3에 도시된 바와 같은 메모리 셀(310)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런의 부분 및 시냅스로서 활용된다. VMM 어레이(1200)는 비휘발성 메모리 셀의 메모리 어레이(1203), 제1 비휘발성 기준 메모리 셀의 기준 어레이(1201), 및 제2 비휘발성 기준 메모리 셀의 기준 어레이(1202)를 포함한다. 기준 어레이(1201 및 1202)는 단자(BLR0, BLR1, BLR2, 및 BLR3) 내로 흐르는 전류 입력을 전압 입력(CG0, CG1, CG2, 및 CG3)으로 변환하는 것을 담당한다. 실제로, 제1 및 제2 비휘발성 기준 메모리 셀은 BLR0, BLR1, BLR2, 및 BLR3을 통해 그들 내로 흐르는 전류 입력으로 멀티플렉서(1212)(단지 부분적으로 도시됨)을 통해 다이오드 연결된다. 멀티플렉서(1212) 각각은 판독 동작 동안 제1 및 제2 비휘발성 기준 메모리 셀 각각의 비트 라인(BLR0과 같은) 상의 일정한 전압을 보장하기 위해 각각의 멀티플렉서(1205) 및 캐스코딩 트랜지스터(1204)를 포함한다. 기준 셀은 타겟 기준 레벨로 튜닝된다.
메모리 어레이(1203)는 2개의 목적을 담당한다. 첫째, 그것은 VMM 어레이(1200)에 의해 사용될 가중치를 저장한다. 둘째, 메모리 어레이(1203)는 입력(단자(BLR0, BLR1, BLR2, 및 BLR3)에 제공되는 전류 입력, 기준 어레이(1201 및 1202)는 이러한 전류 입력을 제어 게이트(CG0, CG1, CG2, 및 CG3)에 공급할 입력 전압으로 변환함)을 메모리 어레이에 저장된 가중치와 사실상 승산하고, 이어서 모든 결과(셀 전류)를, (BL0 ~ BLN) 상에 나타나며 다음 층에 대한 입력 또는 최종 층에 대한 입력이 될, 출력을 생성하기 위해 가산한다. 승산 및 가산 함수를 수행함으로써, 메모리 어레이는 별개의 승산 및 가산 로직 회로에 대한 필요성을 무효화하고, 또한 전력 효율적이다. 여기서, 입력은 제어 게이트 라인(CG0, CG1, CG2, 및 CG3) 상에 제공되고, 출력은 판독 동작 동안 비트 라인(BL0 ~ BLN) 상에 나타난다. 각 비트 라인 상에 배치된 전류는 그 특정 비트 라인에 연결된 메모리 셀로부터의 모든 전류의 합산 함수를 수행한다.
VMM 어레이(1200)는 메모리 어레이(1203) 내의 비휘발성 메모리 셀에 대한 단방향 튜닝을 구현한다. 즉, 각 비휘발성 메모리 셀은 소거되고, 이어서 플로팅 게이트 상의 원하는 전하에 도달할 때까지 부분적으로 프로그램된다. (잘못된 값이 셀에 저장되도록) 너무 많은 전하가 플로팅 게이트 상에 배치되는 경우, 셀은 소거되고, 부분 프로그래밍 동작의 시퀀스가 다시 시작된다. 도시된 바와 같이, 동일한 소거 게이트(EG0 또는 Eg1과 같은)를 공유하는 2개의 로우가 함께 소거되고(페이지 소거로서 알려짐), 그 후에 각각의 셀은 플로팅 게이트 상의 원하는 전하에 도달할 때까지 부분적으로 프로그래밍된다.
표 7은 VMM 어레이(1200)에 대한 동작 전압 및 전류를 도시한다. 표 내의 컬럼은 선택된 셀에 대한 워드 라인, 비선택된 셀에 대한 워드 라인, 선택된 셀에 대한 비트 라인, 비선택된 셀에 대한 비트 라인, 선택된 셀에 대한 제어 게이트, 선택된 셀과 동일한 섹터 내의 비선택된 셀에 대한 제어 게이트, 선택된 셀과는 상이한 섹터 내의 비선택된 셀에 대한 제어 게이트, 선택된 셀에 대한 소거 게이트, 비선택된 셀에 대한 소거 게이트, 선택된 셀에 대한 소스 라인, 및 비선택된 셀에 대한 소스 라인 상에 배치된 전압을 나타낸다. 로우는 판독, 소거, 및 프로그램의 동작을 나타낸다.
[표 7]
Figure pct00007
도 13은 뉴런 VMM 어레이(1300)를 도시하며, 도 3에 도시된 바와 같은 메모리 셀(310)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런의 부분 및 시냅스로서 활용된다. VMM 어레이(1300)는 비휘발성 메모리 셀의 메모리 어레이(1303), 제1 비휘발성 기준 메모리 셀의 기준 어레이(1301), 및 제2 비휘발성 기준 메모리 셀의 기준 어레이(1302)를 포함한다. EG 라인(EGR0, EG0, EG1, 및 EGR1)은 수직으로 이어지는 반면, CG 라인(CG0, CG1, CG2, 및 CG3) 및 SL 라인(WL0, WL1, WL2, 및 WL3)은 수평으로 이어진다. VMM 어레이(1300)는, VMM 어레이(1300)가 양방향 튜닝을 구현한다는 점을 제외하고는 VMM 어레이(1400)와 유사하며, 각 개별 셀은 별개의 EG 라인의 사용으로 인해 플로팅 게이트 상의 원하는 전하량에 도달하기 위해 필요에 따라 완전히 소거되고, 부분적으로 프로그램되고, 부분적으로 소거될 수 있다. 도시된 바와 같이, 기준 어레이(1301 및 1302)는 단자(BLR0, BLR1, BLR2, 및 BLR3) 내의 입력 전류를 로우 방향으로 메모리 셀에 적용될 제어 게이트 전압(CG0, CG1, CG2, 및 CG3)으로(멀티플렉서(1314)를 통한 다이오드 연결된 기준 셀의 동작을 통해) 변환한다. 전류 출력(뉴런)은 비트 라인(BL0 ~ BLN)에 있으며, 각 비트 라인은 그 특정 비트 라인에 연결된 비휘발성 메모리 셀로부터의 모든 전류를 합산한다.
표 8은 VMM 어레이(1300)에 대한 동작 전압 및 전류를 도시한다. 표 내의 컬럼은 선택된 셀에 대한 워드 라인, 비선택된 셀에 대한 워드 라인, 선택된 셀에 대한 비트 라인, 비선택된 셀에 대한 비트 라인, 선택된 셀에 대한 제어 게이트, 선택된 셀과 동일한 섹터 내의 비선택된 셀에 대한 제어 게이트, 선택된 셀과는 상이한 섹터 내의 비선택된 셀에 대한 제어 게이트, 선택된 셀에 대한 소거 게이트, 비선택된 셀에 대한 소거 게이트, 선택된 셀에 대한 소스 라인, 및 비선택된 셀에 대한 소스 라인 상에 배치된 전압을 나타낸다. 로우는 판독, 소거, 및 프로그램의 동작을 나타낸다.
[표 8]
Figure pct00008
페이지 또는 워드 기반 튜닝을 사용하여 개선된 VMM 시스템
도 40은 VMM 어레이(4000)를 도시한다. VMM 어레이(4000)는 비휘발성 메모리 셀의 페이지에 대한 단방향 또는 양방향 튜닝을 구현한다. 여기서, 예시적인 페이지(4001)는 각각 다른 로우에 있는 2개의 워드를 포함한다. 워드는 복수의 메모리 셀, 예를 들면, 8 내지 64개를 포함한다. 특별한 워드는 단 하나의 셀 또는 소수의 셀을 포함할 수 있다. 인접한 로우의 쌍은 SL0 또는 SL1과 같은 소스 라인을 공유한다. 페이지(4001) 내의 모든 셀은, 예시적인 페이지 세트(4001) 내의 모든 셀의 소거 게이트 단자(EGW)에 대한 전압의 제공을 제어하는, 소거 게이트 활성화 트랜지스터(4002)에 의해 제어되는 공통 소거 게이트 라인을 공유한다. 여기서, 페이지(4001) 내의 모든 셀은 동시에 소거될 수 있다. 그 후, 페이지(4001) 내의 셀은 프로그램(워드 내의 각 셀이 한 번에 튜닝될 수 있음을 의미하는 셀단위; 워드 내의 모든 셀이 동시에 튜닝될 수 있음을 의미하는 워드단위); 및 소거(워드 내의 모든 셀이 동시에 튜닝될 수 있음을 의미하는 워드단위) 동작을 통해 단방향 또는 양방향으로 튜닝될 수 있고 페이지(4001) 내의 일부 셀은 프로그램 동작을 통해 단방향으로 튜닝될 수 있다. 프로그램 동작은 도 24 내지 도 26을 참조하여 하기에 설명된 정밀 프로그래밍 기법을 포함할 수 있다. 너무 많은 전자 전하가 플로팅 게이트 상에 배치되면(이는 부정확한 전류 값, 즉, 의도된 전류 값보다 낮은 전류 값이 셀에 저장되게 할 것이다), 셀은 소거되어야 하고, 부분적인 프로그래밍 동작의 시퀀스는 다시 시작되어야 한다.
도 41은 VMM 어레이(4100)를 도시한다. VMM 어레이(4100)는 비휘발성 메모리 셀의 워드에 대한 단방향 또는 양방향 튜닝을 구현한다. 여기서, 예시적인 워드(4101)는 하나의 로우 내의 복수의 셀을 포함한다. 워드(4101) 내의 모든 셀은 워드(4101)의 모든 셀의 소거 게이트 단자에 대한 전압의 제공을 제어하는 소거 게이트 활성화 트랜지스터(4102)에 의해 제어되는 공통 소거 게이트 라인을 공유한다. 여기서, 워드(4101) 내의 모든 셀은 동시에 소거될 수 있다. 그 후, 워드(4101) 내의 셀은 프로그램(워드 내의 각 셀이 한 번에 튜닝될 수 있음을 의미하는 셀단위; 워드 내의 모든 셀이 동시에 튜닝될 수 있음을 의미하는 워드단위); 및 소거(워드 내의 모든 셀이 동시에 튜닝될 수 있음을 의미하는 워드단위) 동작을 통해 단방향 또는 양방향으로 튜닝될 수 있다. 프로그램 동작은 하기에 설명된 정밀 프로그래밍 기법을 포함할 수 있다. 너무 많은 전자 전하가 플로팅 게이트 상에 배치되면(이는 부정확한 전류 값, 즉, 의도된 전류 값보다 낮은 전류 값이 셀에 저장되게 한다), 셀은 소거되어야 하고, 부분적인 프로그래밍 동작의 시퀀스는 다시 시작되어야 한다.
도 42는 VMM 어레이(4200)를 도시한다. VMM 어레이(4200)는 비휘발성 메모리 셀의 워드에 대한 단방향 또는 양방향 튜닝을 구현한다. 여기서, 예시적인 워드(4201)는 셀의 2개의 절반 워드를 포함한다. 각각의 절반 워드는 소거 게이트를 공유하는 로우에 속한다. 워드(4201) 내의 모든 셀은 소거 게이트 단자(EGW)에 연결된 공통 소거 게이트 라인을 공유한다. VMM 어레이(1800 및 1700)와 달리, 소거 게이트 활성화 트랜지스터는 존재하지 않는다. 여기서, 워드(4201) 내의 모든 셀은 동시에 소거될 수 있다. 그 후, 워드(4201) 내의 셀은 프로그램(워드 내의 각 셀이 한 번에 튜닝될 수 있음을 의미하는 셀단위; 워드 내의 모든 셀이 동시에 튜닝될 수 있음을 의미하는 워드단위); 및 소거(워드 내의 모든 셀이 동시에 튜닝될 수 있음을 의미하는 워드단위) 동작을 통해 단방향 또는 양방향으로 튜닝될 수 있다. 프로그램 동작은 하기에 설명된 정밀 프로그래밍 기법을 포함할 수 있다. 너무 많은 전자 전하가 플로팅 게이트 상에 배치되면(이는 부정확한 전류 값, 즉, 의도된 전류 값보다 낮은 전류 값이 셀에 저장되게 한다), 셀은 소거되어야 하고, 부분적인 프로그래밍 동작의 시퀀스는 다시 시작되어야 한다.
장단기 메모리
종래 기술은 장단기 메모리(LSTM)로 알려진 개념을 포함한다. LSTM 유닛은 종종 신경망에서 사용된다. LSTM은 신경망이 미리 결정된 임의적인 시간 간격에 걸쳐 정보를 기억하고 후속 동작에서 그 정보를 사용하도록 허용한다. 종래의 LSTM 유닛은 셀, 입력 게이트, 출력 게이트 및 망각 게이트를 포함한다. 3개의 게이트는 셀 내 및 셀 외부로의 정보의 흐름 및 LSTM에서 정보가 기억되는 시간 간격을 조절한다. VMM은 LSTM 유닛에서 특히 유용하다.
도 14는 예시적인 LSTM(1400)을 도시한다. 이 예에서의 LSTM(1400)은 셀(1401, 1402, 1403, 및 1404)을 포함한다. 셀(1401)은 입력 벡터(x0)를 수신하고 출력 벡터(h0) 및 셀 상태 벡터(c0)를 생성한다. 셀(1402)은 입력 벡터(x1), 셀(1401)로부터의 출력 벡터(은닉 상태)(h0), 및 셀(1401)로부터의 셀 상태(c0)를 수신하고, 출력 벡터(h1) 및 셀 상태 벡터(c1)를 생성한다. 셀(1403)은 입력 벡터(x2), 셀(1402)로부터의 출력 벡터(은닉 상태)(h1), 및 셀(1402)로부터의 셀 상태(c1)를 수신하고, 출력 벡터(h2) 및 셀 상태 벡터(c2)를 생성한다. 셀(1404)은 입력 벡터(x3), 셀(1403)로부터의 출력 벡터(은닉 상태)(h2), 및 셀(1403)로부터의 셀 상태(c2)를 수신하고, 출력 벡터(h3)를 생성한다. 추가적인 셀이 사용될 수 있으며, 4개의 셀을 갖는 LSTM은 단지 예일 뿐이다.
도 15는 도 14의 셀(1401, 1402, 1403, 및 1404)에 대해 사용될 수 있는 LSTM 셀(1500)의 예시적인 구현을 도시한다. LSTM 셀(1500)은 입력 벡터(x(t)), 선행 셀로부터의 셀 상태 벡터(c(t-1)), 및 선행 셀로부터의 출력 벡터(h(t-1))를 수신하고, 셀 상태 벡터(c(t)) 및 출력 벡터(h(t))를 생성한다.
LSTM 셀(1500)은 시그모이드 함수 장치(1501, 1502, 및 1503)를 포함하며, 이들 각각은 얼마나 많은 입력 벡터 내의 각 구성 요소가 출력 벡터로 통하도록 허용되는지를 제어하기 위해 0과 1 사이의 수를 적용한다. LSTM 셀(1500)은 또한 입력 벡터에 쌍곡선 탄젠트 함수를 적용하기 위한 tanh 장치(1504 및 1505), 2개의 벡터를 함께 승산하기 위한 승산기 장치(1506, 1507, 및 1508), 및 2개의 벡터를 함께 가산하기 위한 가산 장치(1509)를 포함한다. 출력 벡터(h(t))는 시스템 내의 다음 LSTM 셀에 제공될 수 있거나, 그것은 다른 목적을 위해 액세스될 수 있다.
도 16은 LSTM 셀(1500)의 구현의 예인 LSTM 셀(1600)을 도시한다. 독자의 편의를 위해, LSTM 셀(1500)로부터의 동일한 번호 부여가 LSTM 셀(1600)에 사용된다. 시그모이드 함수 장치(1501, 1502, 및 1503) 및 tanh 장치(1504) 각각은 다수의 VMM 어레이(1601) 및 활성화 회로 블록(1602)을 포함한다. 따라서, VMM 어레이가 소정의 신경망 시스템에서 사용되는 LSTM 셀에 특히 유용함을 알 수 있다.
LSTM 셀(1600)에 대한 대안(및 LSTM 셀(1500)의 구현예의 다른 예)이 도 17에 도시되어 있다. 도 17에서, 시그모이드 함수 장치(1501, 1502, 및 1503) 및 tanh 장치(1504)는 시간 다중화 방식으로 동일한 물리적 하드웨어(VMM 어레이(1701) 및 활성화 함수 블록(1702))를 공유한다. LSTM 셀(1700)은, 또한, 2개의 벡터를 함께 승산하기 위한 승산기 장치(1703), 2개의 벡터를 함께 가산하기 위한 가산 장치(1708), tanh 장치(1505)(활성화 회로 블록(1702)을 포함함), i(t)가 시그모이드 함수 블록(1702)으로부터 출력될 때 값 i(t)를 저장하기 위한 레지스터(1707), 값 f(t) * c(t-1)을 그 값이 멀티플렉서(1710)를 통해 승산기 장치(1703)로부터 출력될 때 저장하기 위한 레지스터(1704), 값 i(t) * u(t)를 그 값이 멀티플렉서(1710)를 통해 승산기 장치(1703)로부터 출력될 때 저장하기 위한 레지스터(1705), 및 값 o(t) * c~(t)를 그 값이 멀티플렉서(1710)를 통해 승산기 장치(1703)로부터 출력될 때 저장하기 위한 레지스터(1706), 및 멀티플렉서(1709)를 포함한다.
LSTM 셀(1600)은 VMM 어레이(1601) 및 각각의 활성화 함수 블록(1602)의 다수의 세트를 포함하는 반면, LSTM 셀(1700)은 LSTM 셀(1700)의 실시예에서 다수의 층을 나타내는 데 사용되는 VMM 어레이(1701) 및 활성화 함수 블록(1702)의 하나의 세트만을 포함한다. LSTM 셀(1700)이 LSTM 셀(1600)과 비교하여 VMM 및 활성화 함수 블록을 위해 1/4만큼의 공간을 요구할 것이기 때문에, LSTM 셀(1700)은 LSTM(1600)보다 더 적은 공간을 요구할 것이다.
LSTM 유닛은 전형적으로 다수의 VMM 어레이를 포함할 것이며, 이들 각각은 합산기 및 활성화 회로 블록 및 고전압 생성 블록과 같은, VMM 어레이 밖의 소정의 회로 블록에 의해 제공되는 기능을 요구한다는 것을 더 알 수 있다. 각 VMM 어레이에 대한 별개의 회로 블록을 제공하는 것은 반도체 장치 내의 상당한 양의 공간을 요구할 것이고 다소 비효율적일 것이다. 따라서, 하기에 설명되는 실시예는 VMM 어레이 자체 밖에서 요구되는 회로부를 최소화하려고 시도한다.
게이티드 순환 유닛
아날로그 VMM 구현예는 GRU(게이티드 순환 유닛) 시스템에 활용될 수 있다. GRU는 순환 신경망에서의 게이팅 메케니즘이다. GRU는, GRU 셀이 대체적으로 LSTM 셀보다 더 적은 구성요소를 포함하는 것을 제외하고는, LSTM과 유사하다.
도 18은 예시적인 GRU(1800)를 도시한다. 이 예에서의 GRU(1800)는 셀(1801, 1802, 1803, 및 1804)을 포함한다. 셀(1801)은 입력 벡터(x0)를 수신하고 출력 벡터(h0)를 생성한다. 셀(1802)은 입력 벡터(x1), 셀(1801)로부터의 출력 벡터(h0)를 수신하고, 출력 벡터(h1)를 생성한다. 셀(1803)은 입력 벡터(x2) 및 셀(1802)로부터의 출력 벡터(은닉 상태)(h1)를 수신하고, 출력 벡터(h2)를 생성한다. 셀(1804)은 입력 벡터(x3) 및 셀(1803)로부터의 출력 벡터(은닉 상태)(h2)를 수신하고, 출력 벡터(h3)를 생성한다. 추가적인 셀이 사용될 수 있으며, 4개의 셀을 갖는 GRU는 단지 예일 뿐이다.
도 19는 도 18의 셀(1801, 1802, 1803, 및 1804)에 사용될 수 있는 GRU 셀(1900)의 예시적인 구현예를 도시한다. GRU 셀(1900)은 선행 GRU 셀로부터 입력 벡터(x(t)) 및 출력 벡터(h(t-1))를 수신하고, 출력 벡터(h(t))를 생성한다. GRU 셀(1900)은 시그모이드 함수 장치(1901 및 1902)를 포함하고, 이들 각각은 0과 1 사이의 수를 출력 벡터(h(t-1)) 및 입력 벡터(x(t))로부터의 구성요소에 적용한다. GRU 셀(1900)은 또한 입력 벡터에 쌍곡선 탄젠트 함수를 적용하기 위한 tanh 장치(1903), 2개의 벡터를 함께 승산하기 위한 복수의 승산기 장치(1904, 1905, 및 1906), 2개의 벡터를 함께 가산하기 위한 가산 장치(1907), 및 1로부터 입력을 감산하여 출력을 생성하기 위한 상보 장치(1908)를 포함한다.
도 20은 GRU 셀(1900)의 구현의 예인 GRU 셀(2000)을 도시한다. 독자의 편의를 위해, GRU 셀(1900)로부터의 동일한 번호 부여가 GRU 셀(2000)에 사용된다. 도 20에서 알 수 있는 바와 같이, 시그모이드 함수 장치(1901 및 1902) 및 tanh 장치(1903) 각각은 다수의 VMM 어레이(2001) 및 활성화 함수 블록(2002)을 포함한다. 따라서, VMM 어레이는 소정의 신경망 시스템에서 사용되는 GRU 셀에서 특히 유용하다는 것을 알 수 있다.
GRU 셀(2000)에 대한 대안(및 GRU 셀(1900)의 구현예의 다른 예)이 도 21에 도시되어 있다. 도 21에서, GRU 셀(2100)은 VMM 어레이(2101) 및 활성화 함수 블록(2102)을 활용하며, 시그모이드 함수로서 구성될 때, 얼마나 많은 입력 벡터 내의 각 구성요소가 출력 벡터로 통하도록 허용되는지를 제어하기 위해 0과 1 사이의 수를 적용한다. 도 21에서, 시그모이드 함수 장치(1901 및 1902) 및 tanh 장치(1903)는 시간 다중화 방식으로 동일한 물리적 하드웨어(VMM 어레이(2101) 및 활성화 함수 블록(2102))를 공유한다. GRU 셀(2100)은, 또한, 2개의 벡터를 함께 승산하기 위한 승산기 장치(2103), 2개의 벡터를 함께 가산하기 위한 가산 장치(2105), 1로부터 입력을 감산하여 출력을 생성하기 위한 상보 장치(2109), 멀티플렉서(2104), 값 h(t-1) * r(t)를 그 값이 멀티플렉서(2104)를 통해 승산기 장치(2103)로부터 출력될 때 유지하기 위한 레지스터(2106), 값 h(t-1) *z(t)를 그 값이 멀티플렉서(2104)를 통해 승산기 장치(2103)로부터 출력될 때 유지하기 위한 레지스터(2107), 및 값 h^(t) * (1-z(t))를 그 값이 멀티플렉서(2104)를 통해 승산기 장치(2103)로부터 출력될 때 유지하기 위한 레지스터(2108)를 포함한다.
GRU 셀(2000)은 VMM 어레이(2001) 및 활성화 함수 블록(2002)의 다수의 세트를 포함하는 반면, GRU 셀(2100)은 GRU 셀(2100)의 실시예에서 다수의 층을 나타내는 데 사용되는 VMM 어레이(2101) 및 활성화 함수 블록(2102)의 하나의 세트만을 포함한다. GRU 셀(2100)이 GRU 셀(2000)과 비교하여 VMM 및 활성화 함수 블록에 대해 1/3만큼의 공간을 요구할 것이기 때문에, GRU 셀(2100)은 GRU 셀(2000)보다 더 적은 공간을 필요로 할 것이다.
GRU 시스템은 전형적으로 다수의 VMM 어레이를 포함할 것이며, 이들 각각은 합산기 및 활성화 회로 블록 및 고전압 생성 블록과 같은, VMM 어레이 밖의 소정의 회로 블록에 의해 제공되는 기능을 요구한다는 것을 더 알 수 있다. 각 VMM 어레이에 대한 별개의 회로 블록을 제공하는 것은 반도체 장치 내의 상당한 양의 공간을 요구할 것이고 다소 비효율적일 것이다. 따라서, 하기에 설명되는 실시예는 VMM 어레이 자체 밖에서 요구되는 회로부를 최소화하려고 시도한다.
VMM 어레이에 대한 입력은 아날로그 레벨, 이진 레벨, 펄스, 시간 변조된 펄스 또는 디지털 비트일 수 있고(이 경우에 DAC가 디지털 비트를 적절한 입력 아날로그 레벨로 변환하는 데 필요함), 출력은 아날로그 레벨, 이진 레벨, 타이밍 펄스, 펄스 또는 디지털 비트일 수 있다(이 경우에 출력 ADC가 출력 아날로그 레벨을 디지털 비트로 변환하는 데 필요함).
VMM 어레이 내의 각각의 메모리 셀에 대해, 각각의 가중치(W)는 단일 메모리 셀에 의해 또는 차동 셀에 의해 또는 2개의 블렌드 메모리 셀(2개의 셀의 평균)에 의해 구현될 수 있다. 차동 셀의 경우에, 2개의 메모리 셀은 차동 가중치(W = W+ ― W-)로서 가중치(W)를 구현하는 데 필요하다. 2개의 블렌드 메모리 셀에서, 2개의 메모리 셀은 2개의 셀의 평균으로서 가중치(W)를 구현하는 데 필요하다.
VMM 시스템 개요
도 43은 VMM 시스템(4300)의 블록 도면을 도시한다. VMM 시스템(4300)은 VMM 어레이(4301), 로우 디코더(4302), 고전압 디코더(4303), 컬럼 디코더(4304), 비트 라인 드라이버(4305), 입력 회로(4306), 출력 회로(4307), 제어 로직(4308), 및 바이어스 생성기(4309)를 포함한다. VMM 시스템(4300)은 전하 펌프(4311), 전하 펌프 조절기(4312), 및 고전압 레벨 생성기(4313)를 포함하는 고전압 생성 블록(4310)을 더 포함한다. VMM 시스템(4300)은 (프로그래밍/소거, 또는 가중치 튜닝으로 알려진)알고리즘 제어기(4314), 아날로그 회로부(4315), 제어 엔진(4316)(산술 함수, 활성화 함수, 내장 마이크로제어기 로직 등과 같은 특수 기능을 포함할 수 있음), 및 테스트 제어 로직(4317)을 더 포함한다. 하기에 설명되는 시스템 및 방법은 VMM 시스템(4300)에서 구현될 수 있다.
입력 회로(4306)는 DAC(디지털-아날로그 변환기), DPC(디지털-펄스 변환기, 디지털-시간 변조된 펄스 변환기), AAC(전류-전압 변환기, 로그 변환기와 같은, 아날로그-아날로그 변환기), PAC(펄스-아날로그 레벨 변환기), 또는 임의의 다른 유형의 변환기와 같은 회로를 포함할 수 있다. 입력 회로(4306)는 정규화, 선형 또는 비선형 업/다운 스케일링 함수, 또는 산술 함수를 구현할 수 있다. 입력 회로(4306)는 입력 레벨을 위한 온도 보상 함수를 구현할 수 있다. 입력 회로(4306)는 ReLU 또는 시그모이드와 같은 활성화 함수를 구현할 수 있다. 출력 회로(4307)는 ADC(뉴런 아날로그 출력을 디지털 비트로 변환하기 위한 아날로그-디지털 변환기), AAC(전류-전압 변환기, 로그 변환기와 같은 아날로그-아날로그 변환기), APC(아날로그-펄스(들) 변환기, 아날로그-시간 변조된 펄스 변환기), 또는 임의의 다른 유형의 변환기와 같은 회로를 포함할 수 있다. 출력 회로(4307)는 ReLU 또는 시그모이드와 같은 활성화 함수를 구현할 수 있다. 출력 회로(4307)는 뉴런 출력을 위한 통계 정규화, 규칙화, 업/다운 스케일링/이득 함수, 통계적 반올림, 또는 산술 함수(예를 들어, 가산, 감산, 제산, 승산, 시프트, 로그)를 구현할 수 있다. 출력 회로(4307)는 어레이의 전력 소모를 대략 일정하게 유지하기 위해 또는 제 IV 기울기를 대략 동일하게 유지하는 것과 같은 어레이(뉴런) 출력의 정밀도를 향상시키기 위해, 뉴런 출력 또는 어레이 출력(비트라인 출력과 같은)에 대한 온도 보상 함수를 구현할 수 있다.
VMM 내의 셀의 정밀 프로그래밍을 위한 실시예
도 22a는 프로그래밍 방법(2200)을 도시한다. 먼저, 전형적으로 수신되는 프로그램 명령에 응답하여 발생하는 방법이 시작된다(단계(2201)). 다음에, 대규모 프로그램 동작이 모든 셀을 '0' 상태로 프로그래밍한다(단계(2202)). 이어서, 소프트 소거 동작은, 모든 셀을 각 셀이 판독 동작 동안 대략 3 내지 5 ㎂의 전류를 흘리도록 중간 레벨(약한 소거에 의해 달성되는, 즉, 완전 소거 보다 적게)로 소거한다(단계(2203)). 이는, 판독 동작 동안 각 셀이 대략 ~20 내지 30 ㎂의 전류를 흘리는 깊은 소거 레벨과는 대조적이다. 이어서, 하드 프로그램이 셀의 플로팅 게이트에 전자를 추가하고 모든 양전하를 제거하여(단계(2204)) 그들 셀이 판독 동작 동안 무시할만한 양의 전류를 흘릴 것임을 의미하는 그들 셀이 실제로 "오프"인 것을 보장하기 위해 모든 비선택 셀 또는 0 가중치 셀(즉, 가중치=0 인 셀 또는 미미한 가중치, 즉 미미한 임계값을 갖는 가중치)에 대해 매우 깊은 프로그램된 상태로 수행된다.
이어서, 각 선택된 셀에 대해 요구되는 정밀한 값을 프로그램하기 위해 코올스 프로그래밍 방법이 선택된 셀에 대해 수행되고(단계(2205)), 뒤이어, 선택된 셀에 대한 정밀 프로그래밍 방법(단계(2206))이 이어진다. 여기서, 선택된 셀은 프로그래밍 방법(2200)의 대상으로서 식별되고 적절한 워드 라인 및 비트 라인을 어써팅함으로써 또는 일부 다른 메케니즘에 의해 선택되는 셀이다.
도 22b는 프로그래밍 방법(2200)과 유사한 다른 프로그래밍 방법(2210)을 도시한다. 그러나, 도 22a의 단계(2202)에서와 같이 모든 셀을 '0' 상태로 프로그램하기 위한 프로그램 동작 대신에, 방법이 시작(단계(2201))된 후에, 소거 동작이 모든 셀을 '1' 상태로 소거하는 데 사용된다(단계(2212)). 이어서, 소프트 프로그램 동작(단계(2213))이, 판독 동작 동안 각 셀이 대략 3 내지 5 uA의 전류를 흘리도록 모든 셀을 중간 레벨(소프트 프로그래밍에 의해 달성되는, 즉, 완전 프로그래밍보다 적은)로 프로그램하는 데 사용된다. 그 후에, 선택되지 않은 셀의 하드 프로그래밍(단계(2204)) 및 코올스 및 정밀 프로그래밍 방법(단계(2205 ~ 2206))이 도 22a와 관련하여 전술한 바와 같이 이어진다 도 22b의 실시예의 변형은 소프트 프로그래밍 방법(단계(2213))을 완전히 제거한다.
도 23은 검색 및 실행 방법(2300)인, 코올스 프로그래밍 방법(2205)의 제1 실시예를 도시한다. 먼저, 룩업 테이블 검색, 또는 사전 결정된 기능이 그러한 선택된 셀에 저장되도록 의도되는 값에 기초하여 선택된 셀의 각각에 대한 코올스 타겟 전류 값(ICT)을 결정하기 위해 수행된다(단계(2301)). 선택된 셀은 N개의 가능한 값(예를 들어, 제한없이, 128개, 64개, 32개) 중 하나를 저장하도록 프로그래밍될 수 있다. N개의 값의 각각은 판독 동작 동안 선택된 셀에 의해 흘리게되는 상이한 원하는 전류 값(ID)에 대응한다. 일 실시예에서, 룩업 테이블 또는 기능(예를 들어, 데이터에 대한 곡선 피팅에서 비롯된 또는 메모리 동작의 물리학에 기초하는 기능으로, 기능은 최종 타겟 값 및 기존 값과 같은 변수에 대해 동작하고, 다음 동작에 대한 예상되거나 원하는 타겟을 계산함)은 검색 및 실행 방법(2300) 동안 선택된 셀에 대한 코올스 타겟 전류 값 ICT로 사용할 M개의 가능 전류 값을 포함하며, M은 N보다 작은 정수이다. 예를 들어, N이 8 이면, M은 4일 수 있으며,선택된 셀이 저장할 수 있는 8개의 가능한 값이 있음을 의미하며, 검색 및 실행 방법(2300)에 대한 코올스 타겟 전류 값 ICT으로서 4개의 코올스 타겟 전류 값 ICT 중 하나가 선택될 것이다. 즉, 검색 및 실행 방법(2300)은 선택된 셀을 원하는 전류 값(ID)에 다소 가까운 코올스 타겟 전류 값(ICT)으로 신속하게 프로그래밍하도록 마련되며, 이어서, 정밀 프로그래밍 방법(2206)은 선택된 셀을 원하는 전류 값(ID)에 극히 가깝도록 더 정밀하게 프로그램한다.
셀 값, 원하는 전류 값, 및 코올스 타겟 전류 값의 예가 N=8 및 M=4의 간단한 예에 대해 표 9 및 표 10에 도시되어 있다:
[표 9]
Figure pct00009
[표 10]
Figure pct00010
오프셋 값(ICTOFFSETx)은 코올스 프로그래밍 동안 원하는 전류 값이 오버슈팅하는 것을 방지하는 데 사용된다.
일단 코올스 타겟 전류 값(ICT)이 선택되면, 선택된 셀은 선택된 셀(예를 들어, 메모리 셀(210, 310, 410, 또는 510))의 셀 아키텍처 유형에 기초하여 선택된 셀의 적절한 단자에 전압(v0)을 적용함으로써 프로그램된다(단계(2302)). 선택된 셀이 도 3의 유형 메모리 셀(310)이면, 전압(v0)은 제어 게이트 단자(28)에 적용되고, v0은 코올스 타겟 전류 값(ICT)에 따라 5 내지 7V 일 수 있다. v0의 값은 선택적으로 v0 대 코올스 타겟 전류 값(ICT)을 저장하는 전압 룩업 테이블로부터 결정될 수 있다.
다음으로, 선택된 셀은 전압 vi = vi-1+vincrement를 적용함으로써 프로그램되며, i는 1에서 시작하며 이 단계가 반복될 때마다 증분되고(단계(2303)), vincrement는 원하는 변화의 입도에 적절한 정도의 프로그래밍을 야기할 작은 전압이다. 이에 따라, 단계(2303)가 처음 수행될 때, i=1이고, v1은 v0 + vincrement일 것이다. 이어서 검증 동작이 수행되며(단계(2304)), 선택된 셀에 대해 판독 동작이 수행되고, 선택된 셀을 통해 흘리게 되는 전류(Icell)가 측정된다. Icell이 ICT(제1 임계 값) 이하인 경우, 검색 및 실행 방법(2300)은 완료되고, 정밀 프로그래밍 방법(2206)이 시작될 수 있다. Icell이 ICT 이하가 아닌 경우, 단계(2303)이 반복되고, i가 증분된다.
따라서, 코올스 프로그래밍 방법(2205)이 종료되고 정밀 프로그래밍 방법(2206)이 시작되는 시점에서, 전압(vi)은 선택된 셀을 프로그램하는 데 사용되는 마지막 전압일 것이고, 선택된 셀은 코올스 타겟 전류 값(ICT)과 연관된 값을 저장할 것이다. 정밀 프로그래밍 방법(2206)은, 선택된 셀을, 판독 동작 동안 그것이 원하는 전류 값(ID)(50 pA 이하와 같은 허용가능한 양의 편차 플러스 또는 마이너스)을 흘리는 지점까지 프로그램하며, 이는 선택된 셀에 저장되도록 의도되는 값과 연관되는 원하는 전류 값(ID)이다.
도 24는 정밀 프로그램 방법(2206) 동안 선택된 메모리 셀의 제어 게이트에 적용될 수 있는 상이한 전압 진행의 예를 도시한다.
제1 실시예에서, 증가하는 전압은 선택된 메모리 셀을 더 프로그램하기 위해 제어 게이트에 점진적으로 적용된다. 시작 지점은 vi이며, 이는 코올스 프로그래밍 방법(2205) 동안 적용된 마지막 전압이다. vp1의 증분이 v1에 추가되고, 이어서, 전압(v1+vp1)이 선택된 셀을 프로그램하는 데 사용된다(진행(2401)에서 좌측으로부터 두번째 펄스에 의해 표시됨). vp1은 vincrement(코올스 프로그래밍 방법(2205) 동안 사용된 전압 증분)보다 작은 증분이다. 각 프로그래밍 전압이 적용된 후에, 검증 단계(단계(2304)와 유사한)가 수행되며, Icell이 IPT1(이는 제1 정밀 타겟 전류 값이고, 여기서는 제2 임계 값임) 이하인지 결정이 이루어지고, IPT1 = ID + IPT1OFFSET이고, IPT1OFFSET는 프로그램 오버슈팅을 방지하기 위해 추가되는 오프셋 값이다. 만약 IPT1 이하가 아니면, 다른 증분(vp1)이 이전에 적용된 프로그래밍 전압에 추가되고, 프로세스가 반복된다. Icell이 IPT1 이하인 지점에서, 이어서, 프로그래밍 시퀀스의 이러한 부분이 정지된다. 선택적으로, IPT1이 ID와 동일하거나, 또는 충분한 정밀도(허용가능한 양의 편차를 의미함)로 ID와 거의 동일하다면, 선택된 메모리 셀은 성공적으로 프로그램되었다.
IPT1이 ID와 동일하지 않거나, 또는 충분한 정밀도로 ID와 거의 동일하다면, 더 작은 입도의 추가 프로그래밍이 발생한다. 여기서, 이제 진행(2402)이 사용된다. 진행(2402)을 위한 시작 지점은 진행(2401) 하에서 프로그래밍에 사용된 마지막 전압이다. Vp2(vp1보다 더 작은)의 증분이 그 프로그래밍 전압에 추가되고, 조합된 전압이 선택된 메모리 셀을 프로그램하기 위해 적용된다. 각 프로그래밍 전압이 적용된 후에, 검증 단계(단계(2304)와 유사한)가 수행되며, Icell이 IPT2(제2 정밀 타겟 전류 값이고, 여기서는 제3 임계 값임) 이하인지 결정이 이루어지고, IPT2 = ID + IPT2OFFSET이고, IPT2OFFSET는 프로그램 오버슈팅을 방지하기 위해 추가되는 오프셋 값이다. 만약 Icell이 IPT2 이하가 아니면, 다른 증분(vp2)이 이전에 적용된 프로그래밍 전압에 추가되고, 프로세스가 반복된다. Icell이 IPT2 이하인 지점에서, 이어서, 프로그래밍 시퀀스의 이러한 부분이 정지된다. 여기서, 타겟 값이 충분한 정밀도로 달성되었기 때문에, IPT2는 ID와 동일하거나 ID와 충분히 가까워 프로그래밍이 정지될 수 있다고 가정된다. 당업자는, 추가적인 진행이 IPT2가 ID와 동일하지 않거나 또는 프로그래밍이 중지될 수 있는 ID에 충분히 가까운 경우 사용된 더 작고 작은 프로그래밍 증분으로 적용될 수 있음을 이해할 수 있다. 예를 들어, 도 25에서, 3개의 진행(2501, 2502, 및 2503)이 단지 2개 대신에 적용된다.
제2 실시예가 진행(2403)에 도시되어 있다. 여기서, 선택된 메모리 셀의 프로그래밍 동안 적용되는 프로그래밍 전압을 증가시키는 대신에, 동일한 프로그래밍 전압이 증가하는 기간의 지속기간 동안 적용된다. 진행(2401)에서 vp1 및 진행(2403)에서 vp2와 같은 증분 전압을 추가하는 대신에, 각 적용된 펄스가 이전에 적용된 펄스보다 tp1만큼 더 길도록, 시간(tp1)의 추가적인 증분이 프로그래밍 펄스에 추가된다. 도시된 예에서, 제1 펄스는 지속기간(tp0)을 갖고, 제2 펄스는 지속기간(tp0 + tp1)을 갖는다. 각 프로그래밍 펄스가 적용된 후에, 진행(2401)에 대해 이전에 설명된 바와 같이 동일한 검증 단계가 수행된다. 선택적으로, 추가적인 진행이 적용될 수 있으며, 프로그래밍 펄스에 추가되는 시간의 추가적인 증분은 사용된 이전 진행보다 더 작은 지속기간을 갖는다. 단지 하나의 시간 진행만이 도시되지만, 당업자는 임의의 수의 상이한 시간 진행이 적용될 수 있다는 것을 인식할 것이다.
이제, 코올스 프로그래밍 방법(2205)의 2개의 추가적인 실시예에 대한 추가적인 상세내용이 제공될 것이다.
도 26a는 적응 교정 방법(2600)인 코올스 프로그래밍 방법(2205)(도 22a 및 도 22b에 도시된)의 제2 실시예를 도시한다. 방법이 시작된다(단계(2601)). 선택된 셀은 디폴트 시작 프로그래밍 전압 값(v0)에서 프로그램된다(단계(2602)). 검색 및 실행 방법(2300)에서와 달리, 여기서 프로그래밍 전압 값(v0)은 룩업 테이블로부터 또는 함수로부터 비롯되지 않고, 대신에, 비교적 작은 초기 값일 수 있다. 셀의 제어 게이트 전압(Vcg)은 제1 전류 값(IR1)(예를 들어, 100na) 및 제2 전류 값(IR2)(예를 들어, 10na)에서 측정되고, 기울기는 그들 측정(예를 들어, 360 ㎷/dec의 전류)에 기초하여 결정되고 저장된다(단계(2603)).
새로운 프로그래밍 전압(vi)이 결정된다. 이 단계가 처음 수행될 때, i=1이고, v1은, 저장된 기울기 값 및 코올스 타겟 전류 값(ICT)과 같은, 전류 타겟 값 및 오프셋 값에 기초하여 다음과 같은 하위 임계 방정식을 사용하여 결정된다:
vi= vi-1 + vincrement,
vincrement는 Vcg 대 log [Ids/wa*Io] 의 기울기에 비례하며,
Vcg= n*Vt*log [Ids/wa*Io]이며
여기서, Vcg는 제어 게이트 전압이며, wa는 메모리 셀의 w이고, Ids는 전류 타겟 더하기 오프셋 값이다.
저장된 기울기 값이 비교적 가파른 경우, 비교적 작은 전류 오프셋 값이 사용될 수 있다. 저장된 기울기 값이 비교적 평평한 경우, 비교적 높은 전류 오프셋 값이 사용될 수 있다. 이에 따라, 기울기 정보를 결정하는 것은 문제의 특정 셀에 대해 맞춤화된 전류 오프셋 값이 선택될 수 있게 한다. 이는 궁극적으로, 프로그래밍 프로세스를 더 짧게 만든다. 이러한 단계가 반복되면, i는 증분되고, vi = vi-1 + vincrement이다. 이어서, 셀이 vi를 사용하여 프로그램되고 vincrement는, vincrement의 값 대 코올스 타겟 전류 값(ICT)과 같은 전류 타겟 값을 저장하는 룩업 테이블로부터 결정될 수 있다.
다음에, 검증 동작이 발생하며, 판독 동작이 선택된 셀에 대해 수행되고, 선택된 셀을 통해 흘리게되는 전류(Icell)가 코올스 타겟 전류 값(ICT)과 비교된다(단계(2605)). ICT는 ID+ ICTOFFSET으로 설정되고, ICTOFFSET는 프로그램 오버슈팅을 방지하기 위해 추가되는 오프셋 값이며, Icell이 코올스 타겟 전류 값(ICT) 이하이면, 적응적 교정 방법(2600)이 완료되고, 정밀 프로그래밍 방법(2206)이 시작될 수 있다. Icell이 ICT 이하가 아닌 경우, 단계(2604) ~ 단계(2605)가 반복되고, i가 증분된다.
도 26b는 적응 교정 방법(2650)인 코올스 프로그래밍 방법(2205)의 제2 실시예를 도시한다. 방법이 시작된다(단계(2651)). 셀은 디폴트 시작 값(v0)에서 프로그램된다(단계(2652)). v0는 실리콘 특성화로부터 생성된 룩업 테이블로부터 비롯되며, 테이블 값은 프로그램된 타겟이 오버슈팅하지 않도록 오프셋 값(ICTOFFSET)을 더 제공한다.
단계(2653)에서, 다음 프로그래밍 전압을 결정하는 데 사용되는 I-V 기울기 파라미터가 생성된다. 제1 제어 게이트 판독 전압, VCGR1이 선택된 셀에 적용되고, 발생한 셀 전류, IR1이 측정된다. 이어서, 제2 제어 게이트 판독 전압, VCGR2가 선택된 셀에 적용되고, 발생한 셀 전류, IR2가 측정된다. 기울기는 그들 측정에 기초하여 결정되고, 예를 들어 하위 임계 영역(하위 임계에서 동작하는 셀)의 방정식에 따라 저장된다:
기울기 = (VCGR1 ― VCGR2) / (LOG(IR1) ― LOG(IR2))
(단계(2653)). VCGR1 및 VCGR2에 대한 값의 예는 각각 1.5 V 및 1.3 V이다.
따라서, 기울기를 결정하는 것은, 선택된 셀의 각각에 대해 맞춤화되는 Vincrement 값이 선택될 수 있게 한다. 이는 프로그래밍 프로세스를 더 짧게 만든다.
단계(2654)가 수행될 때, i는 증분되고, 새로운 프로그래밍 전압, Vi가 저장된 기울기 값 및 코올스 타겟 전류 값(ICT) 및 오프셋 값에 기초하여 다음과 같은 방정식을 사용하여 결정된다:
Vi = Vi-1 + Vincrement,
vincrement = 알파* 기울기 * (LOG (IR1) ― LOG (ICT))이고,
알파는 오버슈팅을 방지하기 위한 1 미만의 미리 결정된 상수(프로그래밍 오프셋 값), 예를 들어 0.9이다.
이어서 셀은 프로그래밍 전압(vi)을 사용하여 프로그램된다(단계(2655)). 여기서, vi는 사용된 프로그래밍 방식에 따라 선택된 셀의 소스 라인 단자, 제어 게이트 단자 또는 소거 게이트 단자에 적용될 수 있다.
다음에, 검증 동작이 발생하며, 판독 동작이 선택된 셀에 대해 수행되고, 선택된 셀을 통해 흘리게 되는 전류(Icell)가 코올스 타겟 전류 값(ICT)과 비교된다(단계(2656)). 코올스 타겟 임계 값(ICT)이 ID+ ICTOFFSET으로 설정되고, ICTOFFSET는 프로그램 오버슈팅을 방지하기 위해 추가되는 오프셋 값이며, Icell이 코올스 타겟 전류 값(ICT) 이하이면, 프로세스는 단계(2657)로 진행한다. 그렇지 않으면, 프로세스는 단계(2654)로 복귀하고, i는 증분된다.
단계(2657)에서, 오버슈트가 발생했는지 결정하기 위해, Icell은 코올스 타겟 전류 값(ICT)보다 작은 임계 값(ICT2)과 비교된다. 즉, 단계(2654 내지 2656)는 Icell이 코올스 타겟 전류 값(ICT) 미만인 것을 보증하지만, Icell이 코올스 타겟 전류 값(ICT)보다 너무 훨씬 낮을 수 있다, 즉, 오버슈트가 발생했고 Icell이 잘못된 값에 대응하는 저장된 값을 나타낼 수 있다. Icell이 ICT2 이하가 아닌 경우, 오버슈팅이 발생하지 않았고, 적응형 교정 방법(2650)이 완료되었으며, 그 시점에 프로세스는 시작 값(vi) 및 셀이 코올스 타겟 임계 값(ICT) 또는 그에 근접하게 프로그램된 정밀 프로그래밍 방법(2206)으로 진행한다. Icell이 ICT2 이하인 경우, 오버슈트가 발생했고, 이어서 선택된 셀이 소거되고(단계(2658)), 프로그래밍 프로세스는 단계(2652)에서 다시 시작하고, 이번 회에는 또 오버슈팅하는 것을 피하기 위해 더 작은 Vincrement을 갖는다. 선택적으로, 단계(2658)가 사전 결정된 횟수보다 더 수행되는 경우, 선택된 셀은 사용되지 않아야 하는 불량 셀로 간주될 수 있다.
도 24 및 도 25와 관련하여 전술한 바와 같이, 정밀 프로그램 방법(2206)은 다수의 검증 및 프로그램 사이클로 이루어지며, 여기서 프로그램 전압은 고정된 펄스 폭으로 일정한 미세 전압만큼 증분되거나, 또는 프로그램 전압은 고정되고 프로그램 펄스 폭은 다음 펄스에서 가변하거나 일정하다.
선택적으로, 판독 또는 검증 동작 동안 선택된 비휘발성 메모리 셀을 통한 전류가 코올스 타겟 전류 값(ICT) 이하인지를 결정하는 단계(2656)는, 비휘발성 메모리 셀의 단자에 고정 바이어스를 적용하고, 디지털 출력 비트를 생성하기 위해 선택된 비휘발성 메모리 셀에 의해 흘리게된 전류를 측정하고 디지털화하며, 디지털 출력 비트를 제1 임계 전류 값(ICT)을 나타내는 디지털 비트와 비교함으로써 수행될 수 있다.
선택적으로, 판독 또는 검증 동작 동안 선택된 비휘발성 메모리 셀을 통한 전류가 코올스 타겟 전류 값(ICT) 이하인지를 결정하는 단계는, 비휘발성 메모리 셀의 단자에 입력을 적용하고, 변조된 출력을 생성하기 위해 비휘발성 메모리 셀에 의해 흘리게된 전류를 입력 펄스로 변조하며, 디지털 출력 비트를 생성하기 위해 변조된 출력을 디지털화하며, 디지털 출력 비트를 제1 임계 전류(ICT)를 나타내는 디지털 비트와 비교함으로써 수행될 수 있다.
도 27은 적응 교정 방법(2600)의 일부를 수행하기 위한 예시적인 회로 구현예를 도시한다. 단계(2603) 동안, 전류원(2701)은 예시적인 전류 값(IR1 및 IR2)을 선택된 셀(여기에서는, 메모리 셀(2702))에 적용하는 데 사용되고, 이어서, 메모리 셀(2702)의 제어 게이트에서의 전압(IR1에 대한 CGR1 및 IR2에 대한 CGR2)이 측정된다. 위에서 나타낸 바와 같이, 기울기는 (VCGR1― VCGR2)/(LOG (IR1) ― LOG (IR2))이다.
도 28은 절대 교정 방법(2800)인 코올스 프로그래밍 방법(2205)의 다른 실시예를 도시한다. 방법이 시작된다(단계(2801)). 셀은 디폴트 시작 값(v0)에서 프로그램된다(단계(2802)). 셀의 제어 게이트 전압(VCGRx)는 전류 값 Itarget(즉, 셀 전류의 최종 원하는 값)에서 측정되고 저장된다(단계(2803)). 프로그래밍 전압(v1)은 저장된 제어 게이트 전압 및 전류 값(Itarget) 더하기 오프셋 값(Ioffset+Itarget)에 기초하여 결정된다(단계(2804)). 예를 들어, 새로운 프로그래밍 전압(v1)은 다음과 같이 계산될 수 있다: v1= v0 + (VCGBIAS - 저장된 VCGR), VCGBIAS는 최대 타겟 전류에서의 디폴트 판독 제어 게이트 전압(일 실시예에서 약 1.5 V인)이고 저장된 VCGR은 단계(2803)의 측정된 판독 제어 게이트 전압이다.
이어서 셀은 프로그래밍 전압(vi)을 사용하여 프로그램된다. i=1일 때, 단계(2804)로부터의 전압(v1)이 사용된다. i>=2일 때, 전압(vi) = vi-1 + Vincrement가 사용된다. vincrement는, vincrement의 값 대 전류 값(Itarget)을 저장하는 룩업 테이블로부터 결정될 수 있다. 다음에, 검증 동작이 발생하며, 판독 동작이 선택된 셀에 대해 수행되고, 선택된 셀을 통해 흘리게되는 전류(Icell)가 코올스 타겟 전류 값(ICT)과 비교된다(단계(2806)). Icell이 코올스 타겟 전류 값(ICT) 이하인 경우, 절대 교정 방법(2800)은 완료되고, 정밀 프로그래밍 방법(2206)이 시작될 수 있다. Icell이 코올스 타겟 전류 값(ICT) 이하가 아닌 경우, 단계(2805) 및 단계(2806)가 반복되고, i는 증분된다.
도 29는 절대 교정 방법(2800)의 단계(2803)를 구현하기 위한 회로(2900)를 도시한다. 전압원(미도시)은, 초기 전압에서 시작하여 상향 램핑하는 VCGR을 생성한다. 여기서, n+1개의 상이한 전류원(2901)(2901-0, 2901-1, 2901-2, ..., 2901-n)이 증가하는 크기의 상이한 전류(IO0, IO1, IO2, ..., IOn)를 생성한다. 각각의 전류 소스(2901)는 각각의 인버터(2902)(2902-0, 2902-1, 2902-2, ..., 2902-n) 및 메모리 셀(2903)(2903-0, 2903-1, 2903-2, ..., 2903-n)에 연결된다. VCGR이 상향 램핑됨에 따라, 각 메모리 셀(2903)은 증가하는 양의 전류를 흘리고, 각 인버터(2902)로의 입력 전압은 감소한다. IO0 < IO1 < IO2 <... < IOn이기 때문에, 인버터(2902-0)의 출력은 VCGR이 증가함에 따라 먼저 로우로부터 하이로 전환할 것이다. 인버터(2902-1)의 출력이 로우로부터 하이로 전환하고, 다음에 인버터(2902-2)의 출력이 로우로부터 하이로 전환하는 등, 인버터(2902-n)의 출력이 로우로부터 하이로 전환할 때까지 전환할 것이다. 각각의 인버터(2902)는 각각의 스위치(2904)(2904-0, 2904-1, 2904-2,.., 2904-n)를 제어하여, 인버터(2902)의 출력이 로우일 때, 스위치(2904)가 닫히고, 인버터(2902)의 출력이 하이일 때 스위치(2904)가 개방되도록 한다. 인버터(2902)가 로우로부터 하이로 전환할 때, 스위치(2904)가 로우일 때 샘플링된 VCGR은, 각각의 커패시터(2905)(2905-0, 2905-1, 2905-2, …, 2905-n)에 의해 유지된다. 이에 따라, 각각의 스위치(2904) 및 커패시터(2905)는 샘플-앤드-홀드 회로를 형성한다. IO0, IO1, IO2,..., IOn의 값은 Itarget의 가능한 값으로서 사용되고, 각각의 샘플링된 전압은 도 28의 절대 교정 방법(2800)에서 연관된 값(VCGRx)으로서 사용된다. 그래프(2906)는 시간 경과에 따라 상향 램핑하는 VCGR, 및 다양한 시간에서 로우에서 하이로 전환하는 인버터(2902-0, 2902-1, 2902-n)의 출력을 보여준다.
도 30은 적응 교정 방법(2600) 또는 절대 교정 방법(2800) 동안 선택된 셀을 프로그래밍하기 위한 예시적인 진행(3000)을 도시한다. 일 실시예에서, 전압(Vcgp)은 메모리 셀의 선택된 로우의 제어 게이트에 적용된다. 선택된 로우 내의 선택된 메모리 셀의 수는, 예를 들어, 32개이다. 따라서, 선택된 로우 내의 최대 32개의 메모리 셀이 병렬로 프로그램될 수 있다. 각 메모리 셀은 비트 라인 활성화 신호에 의해 프로그래밍 전류(Iprog)에 결합하도록 활성화된다. 비트 라인 활성화 신호가 비활성인 경우(선택된 비트라인에 양의 전압이 적용됨을 의미함), 메모리 셀은 금지된다(프로그램되지 않음). 도 30에 도시된 바와 같이, 비트 라인 활성화 신호(En_ blx)(x는 1 내지 n에서 변화하며, n은 비트 라인의 개수임)는 그러한 비트 라인에 대해 요구되는 Vcgp 전압 레벨로(따라서, 상기 비트 라인 상의 선택된 메모리에 대해) 상이한 시간에 활성화된다. 다른 실시예에서, 선택된 셀의 제어 게이트에 적용되는 전압은 비트 라인 상의 활성화 신호를 사용하여 제어될 수 있다. 각 비트 라인 활성화 신호는 그러한 비트 라인에 대응하는(도 28에 설명된 vi와 같은) 원하는 전압이 Vcgp로서 적용되게 한다. 비트 라인 활성화 신호는 또한, 비트 라인 내로 흐르는 프로그래밍 전류를 제어할 수 있다. 이러한 예에서, 각 후속 제어 게이트 전압(Vcgp)은 이전 전압보다 더 높다. 대안적으로, 각 후속 제어 게이트 전압은 이전 전압보다 더 낮거나 더 높을 수 있다. Vcgp에서의 각 후속 증분은 이전의 증분과 동일하거나 동일하지 않을 수 있다.
도 31은 적응 교정 방법(2600) 또는 절대 교정 방법(2800) 동안 선택된 셀을 프로그래밍하기 위한 예시적인 진행(3100)을 도시한다. 일 실시예에서, 비트 라인 활성화 신호(예를 들어 EN_bln, EN_bl1, EN_bl5)는 선택된 비트 라인 (즉, 선택된 메모리 셀에 결합된 비트 라인)이 대응하는 Vcgp 전압 레벨로 프로그램될 수 있게 한다. 다른 실시예에서, 선택된 셀의 증분 램핑 제어 게이트에 적용되는 전압은 비트 라인 활성화 신호를 사용하여 제어될 수 있다. 각 비트 라인 활성화 신호는 그러한 비트 라인에 대응하는 원하는 전압(도 28에 설명된 vi와 같은)이 제어 게이트 전압에 적용되게 한다. 이러한 예에서, 각 후속 증분은 이전의 증분과 동일하다.
도 32는 VMM 어레이로 판독 또는 검증하기 위한 입력 및 출력 방법을 구현하기 위한 시스템을 도시한다. 입력 함수 회로(3201)는 디지털 비트 값을 수신하고, 이어서, 그런 디지털 값을 제어 게이트 디코더(3202), 워드 라인 디코더(3203), 및 비트 라인(미도시)에 의해 선택되는 어레이(3204) 내의 선택된 셀의 제어 게이트에 전압을 적용하는 데 사용되는 아날로그 신호로 변환한다. 하기에 설명된 실시예에서 입력은 선택된 메모리 셀에 적용되고, 이어서 선택된 셀에서 수신된 입력 및 저장된 가중치(W)의 승산 동작을 나타내는 출력 전류를 생성한다. 출력 뉴런 회로 블록(3205)은 VMM 어레이(3204) 내의 셀의 각 컬럼(뉴런)에 대한 출력 동작을 수행한다. 출력 회로 블록(3205)은 적분 아날로그-디지털 변환기(ADC), 연속 근사(SAR) ADC, 또는 시그마 델타 ADC를 사용하여 구현될 수 있다.
일 실시예에서, 입력 함수 회로(3201)에 제공되는 디지털 값은 4개의 비트(DIN3, DIN2, DIN1, 및 DIN0)를 포함하며, 이는 입력이 16개의 상이한 값 중 하나일 수 있음을 의미한다. 비트 값의 16개의 상이한 조합의 각각은 선택된 셀의 제어 게이트에 적용될 입력 펄스의 상이한 수에 대응하고, 이는 이어서 그 셀에서 입력 값 및 저장된 가중치(W)의 승산을 나타내는 출력 전류를 생성할 것이다. 더 많은 수의 펄스는 셀의 더 큰 출력 값(전류)을 야기할 것이다. 입력 비트 값, DIN[3:0] 및 제어 게이트에 적용된 대응하는 수의 펄스의 예가 표 11에 도시되어 있다.
[표 11]
Figure pct00011
위의 예에서, 셀 값을 판독하기 위한 4개의 비트 디지털 값에 대해 최대 16개의 펄스가 있다. 각 펄스는 하나의 단위 셀 값(전류)과 동일하다. 예를 들어, Icell 단위 = 1 nA인 경우, DIN[3-0] = 0001에 대해, Icell = 1*1 nA = 1 nA이고; DIN[3-0] = 1111에 대해, Icell = 15*1 nA = 15 nA이다.
다른 실시예에서, 디지털 비트 입력은, 표 12에 도시된 바와 같은 셀 값을 판독하기 위해 디지털 비트 위치 합산을 사용한다. 여기서, 4개의 비트 디지털 값을 평가하기 위해 4개의 펄스만이 필요하다. 예를 들어, DIN0을 평가하기 위해 제1 펄스가 사용되고, DIN1을 평가하기 위해 제2 펄스가 사용되고, DIN2를 평가하기 위해 제3 펄스가 사용되고, DIN3을 평가하기 위해 제4 펄스가 사용된다. 이어서, 4개의 펄스로부터의 결과가 비트 위치에 따라 합산된다. 실현된 디지털 비트 합산 방정식은 다음과 같다: 출력 = 2^0*DIN0 + 2^1*DIN1 + 2^2*DIN2 + 2^3*DIN3)*Icell 단위.
예를 들어, Icell 단위 = 1nA인 경우, DIN[3-0] = 0001에 대해, Icell 총계 = 0+0+0+1*1nA = 1nA이고, DIN[3-0] = 1111에 대해, Icell 총계 = 8*1nA + 4*1nA + 2*1nA + 1*1nA =15nA이다.
[표 12]
Figure pct00012
도 33은, 출력을 표현하고 이어서 디지털 비트 값으로 선택적으로 변환될 수 있는 단일 아날로그 값을 획득하기 위해, 검증 또는 판독 동작 동안 VMM의 출력을 합산하는 데 사용될 수 있는 전하 합산기(3300)의 예를 도시한다. 전하 합산기(3300)는 전류원(3301) 및 스위치(3302) 및 샘플-앤드-홀드(S/H) 커패시터(3303)를 포함하는 샘플-앤드-홀드 회로의 어레이를 포함한다. 4개의 비트 디지털 값의 예에 대해 도시된 바와 같이, 4개의 평가 펄스로부터 값을 유지하기 위해 4개의 S/H 회로가 있으며, 값은 프로세스의 마지막에 합산된다. S/H 커패시터(3303)는 그 S/H 커패시터에 대한 2^n*DINn 비트 위치와 연관된 비율로 선택되며; 예를 들어, C_DIN3 = x8 Cu DIN3(Cu는 단위 커패시터임), C_DIN2 = 비트 DIN2에 대한 x4 Cu, C_DIN1 = 비트 DIN1에 대한 x2 Cu, DIN0 = 비트 DIN9에 대한 x1 Cu 이다. 전류원(3301)은 또한, 따라서 비율이 정해진다.
도 34는 검증 또는 판독 동작 동안 VMM의 출력을 합산하는 데 사용될 수 있는 전류 합산기(3400)를 도시한다. 전류 합산기(3400)는 전류원(3401)(이는 Icell로 VMM 어레이의 출력임), 트랜지스터(3402), 스위치(3403), 노드(3404), 및 트랜지스터(3405)를 포함한다. 이 예에서, 현재 합산기(3400)는 직렬 방식으로 노드(3404)에서 DIN0, DIN1, DIN2, 및 DIN3의 4개의 디지털 값을 출력한다. 4개의 평가 펄스가 순차적으로 VMM 어레이에 입력된다. 제1 펄스 동안, 시간 기간(t_DIN0)에 대해, DIN0에 대응하는 스위치(3403)가 닫히고 다른 스위치(3403)가 개방된다. 제2 펄스 동안, 시간 기간(t_DIN1)에 대해, DIN1에 대응하는 스위치(3404)가 닫히고 다른 스위치가 개방된다. 제3 펄스 동안, DIN2에 대응하는 스위치(3404)가 시간 기간(t_DIN2) 동안 닫히고, 다른 스위치가 개방된다. 제4 펄스 동안, DIN3에 대응하는 스위치(3404)가 시간 기간(t_DIN3) 동안 닫히고, 다른 스위치가 개방된다. 프로세스의 종료 시에, 값은 디지털 출력을 생성하기 위해 합산되며, 가중화 프로세스는 DIN의 상대 비트 위치에 기초하여 DIN 값에 적용된다. 예를 들어, DOUT는 8*I_DIN3 + 4 *I_DIN2, + 2*I_DIN1 + 1*I_DIN0일 수 있다.
도 39는 출력 블록(3900)(도 32의 출력 블록(3205)의 실시예임)을 도시한다. 출력 블록(3900)은 VMM 어레이(도 32의 어레이(3204)와 같은)로부터, 여기서는 ICELL(3901)으로 도시된, 출력 전류를 수신한다. 출력 블록(3900)은 D/A 변환기(3902), 시프터(3903), 가산기(3904), 및 출력 레지스터(3905)를 포함한다.
여기서, VMM의 입력 블록(도 32의 입력 블록(3201)과 같은)에 대한 입력은 DIN[n:0]이고, n은 입력 비트 2진 인덱스 번호이며 총 i 비트가 있으며, i는 1 내지 n+1 범위일 수 있다고 가정된다. 예를 들어, i= 4인 경우, 입력은 4개의 비트, DIN3, DIN2, DIN1, 및 DIN0일 것이다. 각 입력 비트, DINx는 한 번에 한개씩 VMM(3204)의 입력 블록(3201)에 적용된다.
입력 블록(3201)은 어레이(3204) 내의 선택된 셀의 단자에 적용되는(본 원에 설명된 실시예 또는 다른 알려진 기법 중 하나를 사용하여) DINx를 입력 신호로 변환한다(선택된 셀은 워드 라인 디코더(3203) 및 선택된 비트 라인에 의해 선택됨, 미도시). 일 실시예에서, 입력 신호는 예시적인 4개의 비트 입력에 대한 표 13에 도시된 바와 같은 가변 지속기간의 단일 펄스이다. 펄스(T펄스)의 입력 신호(VMM 어레이에 대한 행 입력)는 데이터 DIN[3:0]의 십진수 값(0 내지 15)에 비례하는 폭을 갖는다.
[표 13]
Figure pct00013
다른 실시예에서, 입력 신호는 예시적인 4개의 비트 입력에 대해 표 14a에 도시된 바와 같이 아날로그 바이어스 전압이다. 입력 신호는, 예를 들어 선형 영역에서 동작하는 셀에 대해 선형으로 이격된 16개의 전압 레벨을 가질 수 있다. 대안적으로, 입력 신호는 서브-임계 영역에서 동작하는 셀에 대해 로그로 이격될 수 있고(전압 값이 셀 전류의 로그에 비례한다는 것을 의미함), 예를 들어 2진 전류 값에 대해 VCGINk = VCGIN (k-1) ― (1/n*Vt) *LN 2에서 VCGIN은 대응하는 CG 단자 상의 전압이다.
[표 14A]
Figure pct00014
특정 로우에 대해 4개의 비트 입력 DIN[3:0]은 16개의 레벨(예를 들어, VCGIN0, …, 또는 VCGIN15) 중 하나의 전압 레벨이 선택되어 VMM 어레이의 로우에 적용되게 할 것이다. 일 실시예에서, 이러한 동작은 모든 4개의 입력 데이터 비트에서 동시에 동작하며, 이는 4개의 입력 데이터 비트가 16개의 가능한 전압 레벨 중 하나로 변환되고 로우에 적용될 것임을 의미한다. 대안적인 실시예에서, 데이터 입력 비트는 한 번에 하나씩 순차적인 방식(입력 비트 단위 동작)으로 적용되며, 이어서, 각 데이터 입력에 대한 결과는 아날로그 도메인(도 33, 도 34) 또는 디지털 도메인(도 35, 도 39)에서 함께 가산(합산)된다. 선택적으로, 각각의 데이터 입력 비트는 그의 비트 위치에 기초하여 가중될 수 있다. 예를 들어, 최하위 비트 위치에서 "1"은 전압(VCGIN1)이 VMM 어레이의 로우에 입력으로서 적용되게 할 수 있는 반면, 최상위 비트 위치에서 "1"은 전압(VCGIN8)이, 도 39의 출력 블록(3900)을 사용함에 의한 것과 같이, VMM 어레이의 로우에 입력으로서 적용되게 할 수 있다.
다른 실시예에서, 어레이의 입력 블록에 대한 입력 신호는 선형 또는 하위 임계 또는 임의의 영역에서 동작하는 셀에 대한 일정한 아날로그 바이어스 전압을 갖는 입력 비트 단위 동작(예를 들어, 동작은 DIN0, 이어서 DIN1, 이어서 DIN2, 이어서 DIN3 입력에 대해 수행된다)에 대해 표 14B에 도시된 예시적인 4개의 비트 입력이다.
[표 14B]
Figure pct00015
입력 비트 DIN당 이진 가중 결과는, 도 34에 도시된 것과 같은 전류 합산기를 사용함에 의한 것과 같이, 아날로그 도메인, 또는 도 35 또는 도 44의 실시예를 사용함에 의한 것과 같이, 디지털 도메인에서 함께 합산된다. 도 44는 특정 가중치가 입력 비트에 응답하여 생성된 각각의 출력 스트림에 할당된 것을 제외하고는 도 35의 디지털 합산기(3500)와 동일한 디지털 합산기(4400)를 도시한다.
다른 실시예에서, 어레이의 입력 블록에 대한 입력 신호는 4개의 아날로그 바이어스 레벨의 예과 함께 입력 다중비트단위 동작(예를 들어, DIN3 및 DIN2 함께, 및 DIN1 및 DIN0 함께)을 위해 표 14C에 도시된 바와 같은 예시적인 4개의 비트 입력이다: 일 실시예에서, 4개의 아날로그 레벨은 출력 셀 전류에 대한 선형 동일 스케일링을 보장하기 위해 선형 영역, 예를 들어, 0 V,.25 V, 0.5 V, 1.0 V로 작동하는 셀에 대해 선형적으로 이격된다. 다른 실시예에서, 레벨은, 출력 셀 전류에 대한 선형 스케일링을 보장하기 위해 서브-임계로 작동하는 셀에 대해 로그 이격되며, 예를 들어 전압 값이 서브 임계 영역에서 동작하는 셀에 대한 전류의 로그, 예를 들어, 이진 전류 값에 대한 VCGINk = VCGIN (k-1) ― (1/n*Vt) *LN 2에 비례함을 의미한다.
[표 14C]
Figure pct00016
다중비트 DIN[1:0] 및 DIN[3:2] 당 이진 가중 결과는 아날로그 도메인(도 34에서 전류 합산기와 유사) 또는 디지털 도메인(도 35, 도 39)에서 함께 합산된다.
다른 실시예에서, 입력 신호는, 아날로그 바이어스 공급 및 펄스를 갖는 예시적인 4개의 비트 입력에 대해 표 15에 도시된 바와 같이, 펄스 구성요소(아날로그 바이어스 공급 변조된 펄스)가 추가된 아날로그 바이어스 전압 구성요소를 포함하는 하이브리드 신호이다. 펄스는 길이(T펄스)에 의해 또는 미리 결정된 시간 기간(펄스) 내의 펄스의 수에 의해 변조될 수 있다:
[표 15]
Figure pct00017
위의 표에서, "4.5X"의 값은 1X 펄스의 폭의 4.5 배와 동일한 폭을 갖는 펄스, 또는 4 1X 펄스에 1X 펄스의 폭의 절반을 갖는 펄스를 더한 펄스를 의미한다.
입력 데이터는 다수의 입력 데이터-인 세트로 분할되고, 각각의 데이터-인 세트는 특정 전압 바이어스 레벨에 할당되며, 예를 들어 8개의 비트 입력 DIN[7:0]에 대해, 제1 로우 공급(VCGIN1)은 세트 DIN[3:0] 내의 입력 비트에 적용되고, VCGIN1과 상이한 제2 로우 공급(VCGIN2)은 세트 DIN[7:4] 내의 입력 비트에 대해 적용된다. 2개의 이진 입력 세트 분할의 이 예시적인 실시예에서, 아날로그 바이어스 공급(VCGIN2)(제2 데이터-인 세트 DIN[7:4]에 대해)은 아날로그 바이어스 공급(VCGIN1)(제1 데이터-인 세트 DIN[3:0]에 대해)에 의해 생성된 셀 전류의 2배인 셀 전류를 생성한다. 예를 들어, VCGIN2/VCGIN1의 비율은 선형 영역에서 동작하는 셀에 대해 2배일 수 있다. 각각의 데이터-인 세트에 대해 상이한 VCGIN 전압이 적용되기 때문에, VCGIN의 차이가 2개의 멤버를 구별할 것이기 때문에 동일한 기간을 갖는 동일한 수의 펄스가 데이터-인 세트 DIN[7:4]의 멤버 및 데이터-인 세트 DIN[3:0]의 멤버에 적용될 수 있다.
이 실시예의 변형에서, 각각의 입력 데이터-인 세트에 대해 2개의 분할이 사용될 수 있으며, 각각의 분할은 상이한 아날로그 바이어스 전압에 대응하며, 이는 4개의 상이한 전압(VCGIN1, VCGIN2, VCGIN3, 및 VCGIN4)이 사용됨을 의미한다. 이는 필요한 펄스의 수/기간을 더 감소시킬 수 있다. 즉, VCGIN의 차이가 4개의 상이한 값, 멤버를 구별할 것이기 때문에, 4개의 상이한 데이터-인 값은 동일한 수/기간의 펄스를 사용할 수 있다.
도 39를 다시 참조하면, 출력 블록(3900)은 입력(DINx)에 응답하여 VMM으로부터 출력 전류(ICELL)를 수신한다. D/A 변환기(3902)는 ICELL을 DINn에 응답하여 생성된 출력의 디지탈 값을 나타내는 디지털 형태(DOUT[m:0])로 변환하며, 각 DOUT_n은 하나 이상의 출력 비트의 세트이다.
시프터(3903), 가산기(3904), 및 레지스터(3905)는 각 입력 비트(DINn)에 응답하여 생성되는 각 출력(DOUT[m:0]_n)에 상이한 가중치를 적용하도록 동작한다. n=4인 간단한 예에서, 시프터(3902), 가산기(3904), 및 레지스터(3905)는 다음의 동작을 수행한다:
(1) DIN0에 응답하여, 시프터(3903)는 (1)의 결과를 산출하기 위해 DOUT_0[m:0]0을 수신하고, 그것을 시프트하지 않는다;
(2) DIN1에 응답하여, 시프터(3903)는 DOUT_1[m:0]을 수신하고, 하나의 비트를 좌측으로 시프트하고, 가산기(3904)는 (2)의 결과를 산출하기 위해 시프트된 결과를 (1)의 결과에 가산한다;
(3) DIN2에 응답하여, 시프터(3903)는 DOUT_2[m:0]를 수신하고, 2개의 비트를 좌측으로 시프트하고, 가산기(3904)는 (3)의 결과를 산출하기 위해 시프트된 결과를 (2)의 결과에 가산한다;
(4) DIN3에 응답하여, 시프터(3903)는 DOUT_3[m:0]를 수신하고, 3개의 비트를 좌측으로 시프트하고, 가산기(3904)는 (4)의 결과, 최종 결과 DOUT[m:0]를 산출하기 위해 시프트된 결과를 (3)의 결과에 가산한다;
DIN[n:0] 입력이 각 데이터 입력의 이진 가중치에 대해 나타내도록 아날로그 전압 레벨과 조합되는 경우, 이러한 하이브리드 입력 비트 단위 동작에 대한 시프팅 없이 가산만이 필요하다. 출력 레지스터(3905)는 (4)의 결과를 DOUT으로서 저장하고 출력한다.
추가 입력 및 출력 회로
도 35는 복수의 디지털 값을 수신하고, 그들을 함께 합산하고, 입력의 합을 나타내는 출력(DOUT)을 생성하는 디지털 합산기(3500)를 도시한다. 검증 또는 판독 동작 동안 디지털 합산기(3500)가 사용될 수 있다. 도 35는 비트(DOUT0, DOUT1, DOUT2, 및 DOUT3)를 포함하는 4개의 비트 디지털 값의 예를 도시한다. 각각의 비트는 평가 입력 펄스로부터 생성된다. 각각의 비트는 그의 비트 위치에 기초하여 가중될 수 있으며, 2^n의 가중치(t_DINn)는 비트 DINn에 적용된다. 예를 들어, DOUT3은 2^3 (=8)으로 승산될 수 있고, DOUT2은 2^2 (=4)으로 승산될 수 있고, DOUT1은 2^1 (=2)으로 승산될 수 있고, DOUT0은 2^0 (=1)으로 승산될 수 있다.
도 36a는 어레이 셀 전류를 디지털 출력 비트(DOUTx)로 변환하기 위해 출력 뉴런에 적용된 적분 이중 기울기 ADC(3600)를 도시한다. 적분 연산 증폭기(3601) 및 적분 커패시터(3602)로 이루어진 적분기는 셀 전류(ICELL) 대 기준 전류(IREF)를 적분한다. 도 36b에 도시된 바와 같이, 고정 시간(t1)(적분 시간) 동안, 셀 전류는 위로 적분되고(Vout이 상승함), 이어서, 기준 전류가 시간(t2) 동안 적용되며 아래로 적분된다(Vout이 하강함, 비적분 시간). 전류(Icell) = (t2/t1* IREF)이다. 예를 들어, (t1) 동안, 10개의 비트 디지털 비트 해상도에서, 1024개의 사이클이 사용되며, (t2) 동안의 사이클 수는 Icell 값에 따라 0 내지 1024개 사이클로 달라진다. 신호(EC)에 의해 활성화되는 디지털 카운터(3630)는 t2 기간 동안 디지털 출력 비트(DOUTx)를 생성하는 데 사용된다.
도 36c는 출력 뉴런에 적용되어 어레이 셀 전류를 디지털 출력 비트로 변환하는 적분 단일 기울기 ADC(3660)를 도시한다. 적분 연산 증폭기(3661), 적분 커패시터(3662), 스위치(S3), 및 비교기(3664)로 이루어진 적분기는 어레이 셀 전류(ICELL)(3666)를 적분하고 출력 신호(EC)를 생성한다.
도 36d에 도시된 바와 같이, 그래프(3670)는 시간(t1) 동안, 셀 전류(ICELL1)가 위로 적분되고(VOUT은, 도 36c에서 EC의 값에서의 변화에 대응하는 VREF2에 도달할 때까지 상승함), 시간(t2) 동안 다른 셀 전류(ICELL2)가 위로 적분되는 것을 도시한다. 셀 전류(ICELL) = Cint*VREF2/t, 여기서 t는 EC가 값을 변화하기 이전에 경과하는 시간이다. 신호(EC)에 의해 활성화된 펄스 카운터(3668)는 적분 시간(t) 동안 펄스의 수를 카운팅하는 데 사용되고, 펄스의 수는 디지털 출력 값(DOUTx)를 나타낸다.
도시된 예에서, t1에 대한 카운트가 t2에 대한 카운트보다 작을 것이기 때문에 t1에 대한 디지털 출력은 t2에 대한 디지털 출력보다 작을 것이며, 이는 또한 시간 기간(t1) 동안 셀 전류(ICELL1)가 시간 기간(t2) 동안 셀 전류(ICELL2)보다 더 크다는 것을 의미한다. . 적분 커패시터(3662) 값을 기준 전류(Iref) 및 고정된 시간(Tref), Cint = Tref*Iref/VREF2으로 교정하기 위해 초기 교정이 행해진다,
도 36e는 ICELL(3684), 비교기(3681), 스위치(S1), 스위치(S2), 스위치(S3), 커패시터(3682), 및 기준 전류원(3683)을 포함하는 적분 이중 기울기 ADC(3680)를 도시한다. 적분 이중 기울기 ADC(3680)는 출력 뉴런 전류(ICELL 3684)를 수신하고 출력(EC)을 생성한다. 적분 이중 기울기 ADC(3680)는 적분 연산 증폭기를 활용하지 않으며, 셀 전류 또는 기준 전류는 커패시터(3682) 상에 직접 적분된다. 신호(EC)에 의해 활성화되는 펄스 카운터(3687)는 적분 시간 동안 펄스를 카운팅하는 데 사용되며, 여기서 적분 시간은 EC가 값을 변화할 때 종료된다. 펄스 카운터의 출력은 ICELL을 나타내는 디지털 출력(DOUTx)이다. 전류(ICELL) = (t2/t1* IREF)이다.
도 36f는 ICELL(3694), 비교기(3691), 스위치(S2), 스위치(S3), 및 커패시터(3692)를 포함하는 적분 단일 기울기 ADC(3690)를 도시한다. 적분 단일 기울기 ADC(3690)는 출력 뉴런 전류(ICELL 3694)를 수신하고 출력(EC)을 생성한다. 적분 단일 기울기 ADC(3690)는 적분 연산 증폭기를 활용하지 않으며, 셀 전류는 커패시터(3692) 상에 직접 적분된다. 신호(EC)에 의해 활성화되는 펄스 카운터(3697)는 적분 시간 동안 디지털 출력 펄스를 카운팅하는 데 사용되며, 여기서 적분 시간은 EC가 값을 변화할 때 종료된다. 펄스 카운터의 출력은 ICELL을 나타내는 디지털 출력(DOUTx)이다. 셀 전류(ICELL) = Cint*Vref2/t이다.
도 37a는 출력 뉴런에 적용되어 셀(어레이) 전류를 디지털 출력 비트로 변환하는 SAR(연속 근사 레지스터) ADC(3700)를 도시한다. 셀 전류는 저항기를 가로질러 강하되어 VCELL로 변환될 수 있다. 대안적으로, 셀 전류는 VCELL로 변환하기 위해 S/H 커패시터를 충전하는 데 사용될 수 있다. MSB 비트(최상위 비트)로부터 시작하는 비트를 계산하기 위해 이진 검색이 사용된다. SAR(3701)로부터의 디지털 비트에 기초하여, DAC(3702)는 비교기(3703)에 적절한 아날로그 기준 전압을 설정하는 데 사용된다. 비교기(3703)의 출력은 다음 아날로그 레벨을 선택하도록 SAR(3701)에 피드백한다. 도 37b에 도시된 바와 같이, 4개의 비트 디지털 출력 비트의 예에 대해, 4개의 평가 기간이 있다: 아날로그 레벨을 중간으로 설정함으로써 DOUT3을 평가하기 위한 제1 펄스, 이어서, 아날로그 레벨을 상단 절반의 중간 또는 하단 절반의 중간으로 설정함으로써 DOUT2를 평가하기 위한 제2 펄스. DOUT3 및 DOUT4는 유사하게 범위를 절반으로 나눈다. 다른 실시예는 SAR CDAC(전하 재분배 CDAC)를 사용하여 뉴런 전류를 디지털 출력 비트로 변환할 수 있다.
도 38은 셀 전류를 디지털 출력 비트로 변환하기 위해 출력 뉴런에 적용되는 시그마 델타 ADC(3800)를 도시한다. 연산 증폭기(3801) 및 커패시터(3805)로 이루어진 적분기는 1개의 비트 전류 DAC(3804)로부터 생성된 기준 전류 및 선택된 셀 전류로부터의 전류의 합산을 적분한다. 비교기(3802)는 적분 출력 전압 대 기준 전압을 비교한다. 클록된 DFF(3803)는 비교기(3802)의 출력에 따라 디지털 출력 스트림을 제공한다. 디지털 출력 스트림은 전형적으로, 디지털 출력 비트를 출력하기 전에 디지털 필터로 간다.
도 45는 출력 블록(4500)을 도시한다. 출력 블록(4500)은 전류-전압 변환기(4501) 및 아날로그-디지털 변환기(4502)를 포함한다. 출력 블록(4500)은 VMM 어레이로부터 출력 전류를 수신하고, 여기서 Ineu로 도시되며, 출력 전류는 수행되는 판독 또는 검증 동작에 대한 VMM 어레이로부터의 출력 값을 나타낸다. 전류-전압 변환기(4501)는 출력 전류(Ineu)를, 여기서 VOUT로서 도시된 전압 신호로 변환하여, 전압(VOUT)이 VMM으로부터의 출력 전류(Ineu)를 나타낸다. A/D 변환기(4502)는 전압(VOUT)을 디지털 형태로 변환하고 디지털 출력을 출력하고, 여기서 DOUT로서 도시된다.
출력 블록(4500)의 일 구현예에서, 전류-전압 변환기(4501)는 입력의 시퀀스에 응답하여 어레이 내의 하나 이상의 선택된 비휘발성 메모리 셀로부터의 전류의 시퀀스를 수신하고 전류의 시퀀스를 전압의 시퀀스로 변환한다. 이어서, A/D 변환기는 전류-전압 변환기(4501)로부터 수신된 전압의 시퀀스를 복수의 출력 비트로 변환하고, 복수의 출력 비트는 전압의 시퀀스의 가중 합에 기초하여 생성된다.
도 46은 도 45의 전류-전압 변환기(4501)의 일 실시예인 무손실(I*Rmux 강하없음) 전류-전압 변환기(4600)를 도시한다. 전류-전압 변환기(4600)는 연산 증폭기(4601); 저항기(4602, 4603, 4604,및 4605) 및 스위치(4606, 4607, 4608, 4609, 4610, 4611, 4612, 및 4613)를 포함한다. 무손실 가변 저항기 유닛은 저항기 및 2개의 스위치(먹스), 예를 들어, 저항기(4602, 4606) 및 스위치(4610 및 4606)로 구성되며, 하나의 스위치(스위치(4610))는 전류를 운반하고 하나의 스위치(스위치(4606))는 전류를 운반하지 않고, 출력은 전류를 운반하지 않는 스위치로부터 취해진다.
전류-전압 변환기(4600)는 전류(Ineu)를 수신하고 전압(VOUT)을 출력한다. 특히, VOUT는 출력 전압(VOUT)에서 먹싱(스위치의 I*R 강하)으로 인해, 전압 강하를 겪지 않고 측정될 수 있으며, 이는 출력 전압이 피드백 루프 또는 전류 루프 외부에 샘플링됨을 의미한다. 예를 들어, 스위치(4613, 및 4609)가 닫히고(온) 다른 스위치가 개방(오프)일 때, VOUT는 VREF + (R4602 + R4603 + R4604 + R4605)*(Ineu)와 동일하다. 다른 예로서, 스위치(4610, 및 4606)가 닫히고(온) 다른 스위치가 개방(오프)일 때, VOUT는 VREF + (R4602*Ineu)이다. 전류(Ineu)가 전압(VOUT)으로 변환된 후에, 전압(VOUT)은 모든 스위치를 개방함으로써 샘플링되고 유지될 수 있다. 이러한 경우에, 전압(VOUT)은 기준 레벨(VREF)을 참조한다.
도 47은 도 45에서의 전류-전압 변환기(4501)의 실시예인 전류-전압 변환기(4700)를 도시한다. 전류-전압 변환기(4700)는 비교기(4701); 스위치(4702, 4705, 4706, 및 4707); S/H(샘플링 및 홀드) 커패시터(4703); 및 가변 저항기(4704)를 포함한다. 전류-전압 변환기(4700)는 전류(Ineu)를 수신하고 S/H 전압(VOUT)을 출력한다. 무손실 가변 저항기(4704)는 도 46의 저항기(4650)와 유사하다. 전류 대 전압 변환 동안, 전류(Ineu)는 저항기(4704)를 통해 흘러서 출력 전압 = R4704*Ineu을 생성하며, S1(4702), S2(4705) 및 S3(4707)은 닫히고(온), S4(4706)은 개방되며(오프), S3가 전류를 운반하지 않기 때문에 출력(VOUT)은 R4704*Ineu이다. 유지 기간 동안, S4는 닫히고(온), S1, S2 및 S3은 개방되며(오프), VOUT은 커패시터(4703) 상에 유지된다. 특히, VOUT는 VOUT이 전류를 운반하는 스위치의 외부에서 측정(활성화)되기 때문에 전압 강하를 겪지 않고 측정될 수 있다.
도 48은 도 45에서의 전류-전압 변환기(4501)의 실시예인 전류-전압 변환기(4800)를 도시한다. 전류-전압 변환기(4800)는 연산 증폭기(4801); 스위치(4802, 및 4805); S/H 커패시터(4803) 및 가변 저항기(4804)를 포함한다. 전류-전압 변환기(4800)는 전류(Ineu)를 수신하고 전압(VOUT)을 출력한다. 특히, VOUT는 VOUT이 전류를 운반하는 스위치(먹스)의 외부에서 측정(활성화)되기 때문에 전압 강하없이 측정될 수 있다. . 전류 대 전압 변환 동안, 전류(Ineu)는 저항기(4804)를 통해 흘러서 출력 전압 = R4804*Ineu을 생성하며, S1(4802), S2(4805)는 닫히고(온), S2가 전류를 운반하지 않기때문에 출력(VOUT)은 R4804*Ineu이다. 유지 기간 동안, S1 및 S2는 개방되고(오프), VOUT는 커패시터(4803) 상에 유지되고, S/H 전압 VOUT는 이 경우에 접지 레벨에 대해 참조한다.
대안적으로, 전류-전압 변환기(4700, 및 4800)는 가변 저항기(4704 또는 4804)를 포함하지 않으며, 이 경우에 Ineu는 미리 결정된 트리밍가능 타이밍 펄스 값에 의해 제어되는 가변 신호 펄스 활성화 스위치(4702 또는 4802)에 의해 S/H 커패시터(4703 또는 4803)를 충전하며, 타이밍 펄스 값은 Ineu 동적 전류 범위에 기초하여 선택된다. 이 경우에, S/H 커패시터는 트리밍가능 커패시턴스 값을 갖는 가변 커패시터일 수 있다.
도 49a는 도 45에서의 전류-전압 변환기(4501)의 실시예인 전류-전압 변환기(4900)를 도시한다. 전류-전압 변환기(4900)는 스위치(4901 및 4902); 가변 저항기(4903); 및 커패시터(4904)를 포함한다. 전류-전압 변환기(4800)는 전류(Ineu)를 수신하고 전압(VOUT)을 출력한다. 전류 대 전압 변환 동안, 전류(Ineu)는 가변 저항기(4903)를 통해 흘러서 출력 전압 = R4903*Ineu을 생성하며, S1(4901)은 닫히고(온) 출력(VOUT)은 R4804*Ineu이다. 유지 기간 동안, S1은 개방되고(오프), VOUT이 커패시터(4904) 상에 유지되고, 가변 저항기(4903) 내부의 스위치(먹스)(예를 들어 도 49b의 가변 저항기(4950) 내의 S1a/S2a/S3a/S4a)가 또한 개방된다(오프). 특히, VOUT는 VOUT이 전류를 운반하는 스위치(먹스)의 외부에서 측정(활성화)되기 때문에 전압 강하없이 측정될 수 있다.
도 49b는 4903에서 사용된 바와 같은 가변 저항기(4950)를 도시한다. 가변 저항기(4950)는 스위치(S1a, S2a, S3a, S4a, S1b, S2b, S3b,및 S4b)를 포함한다.
도 50은 도 45에서의 전류-전압 변환기(4501)의 실시예인 전류-전압 변환기(5000)를 도시한다. 전류-전압 변환기(5000)는 연산 증폭기(op amp)(5001); 레벨 시프터(5002)(트랜지스터(5004)의 게이트 = 트랜지스터(5004)의 드레인 - Voffset)); NMOS 트랜지스터(5003), PMOS 트랜지스터(5004, 및 5005); 스위치(5006, 및 5007); 가변 저항기(5008)(이는 도 49b와 관련하여 전술한 바와 같이 구현될 수 있음); 커패시터(5009); 및 전압원(VH)을 포함한다. 전류-전압 변환기(5000)는 전류(Ineu)를 수신하고 전압(VOUT)을 출력한다. 특히, VOUT는 전압 강하를 겪지 않고 유사하게(도 49에서와 같이) 측정될 수 있다. S/H 전압(VOUT)은 이 경우에 접지 레벨에 대해 참조한다. 연산 증폭기(5001) 및 트랜지스터(5003)는 판독 동작 동안 어레이의 비트 라인 상에 고정 바이어스 전압(VREF)(5010)을 적용한다. PMOS 트랜지스터(5004, 및 5005)는 어레이 출력 전류(Ineu)를 가변 저항기(5008) 및 S/H 커패시터(5009)로 미러링하기 위해 가변비 전류 미러로서 역할을 한다. 대안적으로, 전류-전압 변환기(5000)는 가변 저항기(5008)를 포함하지 않으며, 이 경우 미러링된 Ineu는 미리 결정된 트리밍가능 타이밍 펄스 값에 의해 제어되는 스위치(5006)를 활성화하는 가변 신호 펄스에 의해 S/H 커패시터(5009)를 충전하며, 타이밍 펄스 값은 Ineu 동적 전류 범위에 기초하여 선택된다. 이 경우에, S/H 커패시터는 트리밍가능 커패시턴스 값을 갖는 가변 커패시터일 수 있다.
도 51은 도 45에서의 전류-전압 변환기(4501)의 실시예인 전류-전압 변환기(5100)를 도시한다. 전류-전압 변환기(5100)는 연산 증폭기(5101); NMOS 트랜지스터(5102), 가변 저항기(5103)(이는 도 49b와 관련하여 전술한 바와 같이 구현될 수 있음); 스위치(5104, 및 5105); 커패시터(5106); 및 전압원(VH)을 포함한다. 전류-전압 변환기(5100)는 전류(Ineu)를 수신하고 전압(VOUT)을 출력한다. 특히, VOUT는 도 50에서와 유사하게 전압 강하를 겪지 않고 측정될 수 있으며, S/H 전압(VOUT)은 이 경우에 고전력 공급(VH)을 참조한다. 연산 증폭기(5101) 및 트랜지스터(5102)는 판독 동작 동안 비트 라인 상에 고정 바이어스(VREF)(5110)를 적용하는 것을 담당한다. 대안적으로, 전류-전압 변환기(5100)는 가변 저항기(5103)를 포함하지 않으며, 이 경우 Ineu는 미리 결정된 트리밍가능 펄스 타이밍 값에 의해 제어되는 스위치(5106)를 활성화하는 가변 신호 펄스를 통해 S/H 커패시터(5106)를 방전하며, 타이밍 값은 Ineu 동적 전류 범위에 기초하여 선택된다. 이 경우에, S/H 커패시터는 트리밍가능 커패시턴스 값을 갖는 가변 커패시터일 수 있다.
도 52a는 도 48과 관련하여 전술한 무손실 전류-전압 변환기(4800)를 활용하는 하이브리드 직렬 아날로그-디지털 변환기(5200)를 도시한다. 이는 전류-전압 변환기(5220), 비교기(5209), 전류원(5206, 및 5207), 및 스위치(S1, 및 S2)로 구성된다. 전류-전압 변환기(5220)는 도 46, 도 47, 도 49, 도 50, 및 도 51에서 전술한 전류-전압 변환기 중 임의의 것을 사용하여 대신에 구현될 수 있다. 전류-전압 변환기(5220)는 연산 증폭기(5201), 스위치(5205), 가변 저항기(5204) 및 샘플링 및 홀드 커패시터(5203)를 포함한다.
도 52b는, 시간 기간(t1) 동안, 스위치(5208)(S1)가 개방되고 이어서 개방하는 스위치(5202)(S2)에 의해 커패시터(5203)에 의해 유지되는 동안 전류(ICELL)(5206)이 닫히는 스위치(5202)(S2)에 의해 전압(VOUT)으로 변환되는 하이브리드 직렬 ADC 변환기(5200)의 동작의 타이밍 도면(5250)을 도시한다. 기간(t2) 동안 IREF(5207)는 비적분 기간을 시작하기 위해 스위치(5208)(S1)를 닫음으로써 활성화되며, EC가 하이인 한, 클록 펄스(미도시)가 펄스 카운터(5210)에 의해 카운트되는, 이 시간동안 t2로 표시되는, 카운팅 기간을 의미하며, 이는 디지털 비트(DOUT), 즉 카운트의 수로 변환된다. 비교기 출력 EC를 디지털 비트로 변환하기 위한 디지털 카운터 및 클록 및 제어 로직은 도시되지 않는다.
도 52c는, t1 기간이 도 52b의 것과 동일한, 하이브리드 직렬 ADC 변환기(5200)의 동작의 다른 타이밍 도면(5250)을 도시한다. 시간 기간(t2) 동안, 전압(VOUT)은 기준 전압(VREF2)을 VREF1과 같은 기준 레벨로부터 그의 최대 레벨로 램핑함으로써 디지털 비트(DOUT)로 변환된다. 시간 기간(t2) 동안, 디지털 카운터(미도시)는 펄스를 카운트하고, 디지털 카운터의 출력은 출력(DOUT)이다. 시간 기간(t2)은 VREF2가 VOUT를 초과할 때 종료되며, 이는 도 52a에서 EC 변화의 값을 초래할 것이다.
본 원에 사용된 바와 같이, 용어 "~ 위에" 및 "~ 상에" 둘 모두는 "직접적으로 ~ 상에"(어떠한 중간 재료, 요소 또는 공간도 사이에 배치되지 않음)와 "간접적으로~ 상에"(중간 재료, 요소 또는 공간이 사이에 배치됨)를 포괄적으로 포함한다는 것에 유의하여야 한다. 마찬가지로, 용어 "인접한"은 "직접적으로 인접한"(어떠한 중간 재료, 요소 또는 공간도 사이에 배치되지 않음)과 "간접적으로 인접한"(중간 재료, 요소 또는 공간이 사이에 배치됨)을 포함하고, "~에 장착되는"은 "직접적으로 ~에 장착되는"(어떠한 중간 재료, 요소 또는 공간도 사이에 배치되지 않음)과 "간접적으로 ~에 장착되는"(중간 재료, 요소 또는 공간이 사이에 배치됨)을 포함하고, "전기적으로 결합되는"은 "직접적으로 ~에 전기적으로 결합되는"(요소를 함께 전기적으로 연결시키는 어떠한 중간 재료 또는 요소도 사이에 없음)과 "간접적으로 ~에 전기적으로 결합되는"(요소를 함께 전기적으로 연결시키는 중간 재료 또는 요소가 사이에 있음)을 포함한다. 예를 들어, "기판 위에" 요소를 형성하는 것은 어떠한 중간 재료/요소도 사이에 갖지 않고서 직접적으로 기판 상에 요소를 형성하는 것뿐만 아니라, 하나 이상의 중간 재료/요소를 사이에 갖고서 간접적으로 기판 상에 요소를 형성하는 것을 포함할 수 있다.

Claims (46)

  1. 비휘발성 메모리 셀의 어레이로부터 출력을 생성하기 위한 출력 블록으로서,
    상기 어레이에 대한 입력의 시퀀스에 응답하여 생성된 상기 어레이 내의 하나 이상의 선택된 비휘발성 메모리 셀로부터의 전류의 시퀀스를 수신하고 상기 전류의 시퀀스에 응답하여 전압 또는 전압의 시퀀스를 생성하기 위한 전류-전압 변환기; 및
    상기 전압 또는 상기 전압의 시퀀스를 복수의 출력 비트로 변환하기 위한 아날로그-디지털 변환기를 포함하고, 상기 복수의 출력 비트는 상기 전류의 시퀀스 또는 상기 전압 또는 상기 전압의 시퀀스 중 하나 이상에 수행되는 가중화 함수를 반영하는, 출력 블록.
  2. 제1항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 펄스를 포함하고, 상기 펄스의 폭은 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  3. 제1항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압에 추가된 펄스를 포함하고, 상기 펄스의 폭은 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  4. 제1항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 하나 이상의 펄스의 시퀀스를 포함하고, 상기 하나 이상의 펄스의 시퀀스 내의 상기 펄스의 수는 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  5. 제1항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압에 추가된 하나 이상의 펄스의 시퀀스를 포함하고, 상기 하나 이상의 펄스의 시퀀스 내의 상기 펄스의 수는 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  6. 제1항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압에 추가된 펄스를 포함하고, 상기 펄스의 폭은 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  7. 제1항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압을 포함하고, 상기 아날로그 바이어스 전압의 크기는 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  8. 제1항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압을 포함하고, 상기 아날로그 바이어스 전압의 크기는 상기 입력에 의해 나타나는 다수의 디지털 비트에 대한 데이터 값에 비례하는, 출력 블록.
  9. 제1항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압을 포함하고, 상기 아날로그 바이어스 전압의 크기는 상기 입력에 의해 나타나는 디지털 비트의 비트 위치에 따라 변하는, 출력 블록.
  10. 제1항에 있어서, 상기 비휘발성 메모리 셀은 분리형 게이트 플래시 메모리 셀인, 출력 블록.
  11. 제1항에 있어서, 상기 비휘발성 메모리 셀은 적층형 게이트 플래시 메모리 셀인, 출력 블록.
  12. 제1항에 있어서, 상기 전류-전압 변환기는 무손실인, 출력 블록.
  13. 제1항에 있어서, 상기 전류-전압 변환기는, 상기 전압 또는 상기 전압의 시퀀스를 출력하는 샘플링 및 홀드 회로를 포함하는, 출력 블록.
  14. 제1항에 있어서, 상기 전류-전압 변환기는 상기 전압 또는 상기 전압의 시퀀스를 출력하는 연산 증폭기를 포함하는, 출력 블록.
  15. 제1항에 있어서, 상기 전류-전압 변환기는 상기 전압 또는 상기 전압의 시퀀스를 출력하는 무손실 가변 저항기 유닛을 포함하는, 출력 블록.
  16. 제1항에 있어서, 상기 어레이는 벡터 매트릭스 승산기 어레이인, 출력 블록.
  17. 제16항에 있어서, 상기 비휘발성 메모리 셀은 분리형-게이트 플래시 메모리 셀인, 출력 블록.
  18. 제16항에 있어서, 상기 비휘발성 메모리 셀은 적층형-게이트 플래시 메모리 셀인, 출력 블록.
  19. 비휘발성 메모리 셀의 어레이로부터 출력을 생성하기 위한 출력 블록으로서,
    상기 어레이에 적용되는 입력에 응답하여 상기 어레이 내의 하나 이상의 선택된 비휘발성 메모리 셀로부터 전류를 수신하고 전류를 전압으로 변환하기 위한 전류-전압 변환기를 포함하며, 상기 전류-전압 변환기는 전압을 유지하기 위해 샘플링 및 홀드 회로를 포함하는, 출력 블록.
  20. 제19항에 있어서,
    상기 전압을 복수의 출력 비트로 변환하기 위한 아날로그-디지털 변환기를 더 포함하는, 출력 블록.
  21. 제19항에 있어서, 상기 전류-전압 변환기는 상기 전압을 제공하는 무손실 가변 저항기 유닛을 포함하는, 출력 블록.
  22. 제20항에 있어서, 상기 아날로그-디지털 변환기는 하이브리드 직렬 아날로그-디지털 변환기인, 출력 블록.
  23. 제20항에 있어서, 상기 아날로그-디지털 변환기는 상기 전압을 디지털 비트로 변환하기 위해 카운트를 수행하는, 출력 블록.
  24. 제23항에 있어서, 상기 카운트에 대한 기간은 홀드 커패시터를 방전하는 기준 전류에 의해 결정되는, 출력 블록.
  25. 제23항에 있어서, 상기 카운트에 대한 기간은, 그것이 임계 전압과 교차할 때까지 기준 전압 램핑에 의해 결정되는, 출력 블록.
  26. 제19항에 있어서, 상기 비휘발성 메모리 셀은 분리형-게이트 플래시 메모리 셀인, 출력 블록.
  27. 제19항에 있어서, 상기 비휘발성 메모리 셀은 적층형-게이트 플래시 메모리 셀인, 출력 블록.
  28. 제19항에 있어서, 상기 전류-전압 변환기는 상기 출력 블록의 상기 출력 전류로부터의 전압 강하없이 상기 전류의 시퀀스를 전압의 시퀀스로 변환하는, 출력 블록.
  29. 제19항에 있어서, 상기 전류-전압 변환기는 상기 전압을 제공하는 연산 증폭기를 포함하는, 출력 블록.
  30. 제29항에 있어서, 상기 어레이는 벡터 매트릭스 승산기 어레이인, 출력 블록.
  31. 제19항에 있어서, 상기 전류-전압 변환기는 제어 스위치를 통해 하나 이상의 선택된 비휘발성 메모리 셀로부터의 상기 전류에 의해 충전되는 커패시터를 포함하는, 출력 블록.
  32. 제31항에 있어서, 상기 커패시터는 가변 커패시터인, 출력 블록.
  33. 제32항에 있어서, 상기 가변 커패시터는 트리밍가능한, 출력 블록.
  34. 제31항에 있어서, 상기 커패시터는 상기 전압이 기준 전압을 초과할 때 종료되는 제1 시간 기간 동안 충전되는, 출력 블록.
  35. 제34항에 있어서, 상기 전류-전압 변환기는 상기 전압을 상기 기준 전압과 비교하기 위한 연산 증폭기를 포함하는, 출력 블록.
  36. 제34항에 있어서, 상기 커패시터는 상기 전류-전압 변환기에 의해 제공되는 상기 전압이 접지에 도달할 때 종료되는 제2 시간 기간 동안 방전되는, 출력 블록.
  37. 제36항에 있어서, 카운터는 카운트를 출력하기 위해 상기 제2 시간 기간 동안 클록 펄스를 카운트하고, 상기 카운트는 상기 전압의 디지털 버전인, 출력 블록.
  38. 상기 어레이에 의해 수신된 입력의 시퀀스에 응답하여 비휘발성 메모리 셀의 어레이로부터 수신된 전류의 시퀀스로부터 출력을 생성하기 위한 출력 블록으로서,
    상기 전류의 시퀀스를 수신하고 상기 전류의 시퀀스를 복수의 출력 비트를 포함하는 출력으로 변환하기 위한 아날로그-디지털 변환기를 포함하는, 출력 블록.
  39. 제38항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 펄스를 포함하고, 상기 펄스의 폭은 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  40. 제38항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압에 추가된 펄스를 포함하고, 상기 펄스의 폭은 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  41. 제38항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 하나 이상의 펄스의 시퀀스를 포함하고, 상기 하나 이상의 펄스의 시퀀스 내의 상기 펄스의 수는 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  42. 제38항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압에 추가된 하나 이상의 펄스의 시퀀스를 포함하고, 상기 하나 이상의 펄스의 시퀀스 내의 상기 펄스의 수는 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  43. 제38항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압에 추가된 펄스를 포함하고, 상기 펄스의 폭은 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  44. 제38항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압을 포함하고, 상기 아날로그 바이어스 전압의 크기는 상기 입력에 대한 데이터 값에 비례하는, 출력 블록.
  45. 제38항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압을 포함하고, 상기 아날로그 바이어스 전압의 크기는 상기 입력에 의해 나타나는 다수의 디지털 비트에 대한 데이터 값에 비례하는, 출력 블록.
  46. 제38항에 있어서, 상기 입력의 시퀀스 내의 각각의 입력은 아날로그 바이어스 전압을 포함하고, 상기 아날로그 바이어스 전압의 크기는 상기 입력에 의해 나타나는 디지털 비트의 비트 위치에 따라 변하는, 출력 블록.
KR1020237021984A 2021-01-01 2021-04-07 딥 러닝 인공 신경망에서의 아날로그 신경 메모리를위한 디지털 출력 메케니즘 KR20230110360A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163133270P 2021-01-01 2021-01-01
US63/133,270 2021-01-01
US17/219,352 US20220215239A1 (en) 2021-01-01 2021-03-31 Digital output mechanisms for analog neural memory in a deep learning artificial neural network
US17/219,352 2021-03-31
PCT/US2021/026284 WO2022146468A1 (en) 2021-01-01 2021-04-07 Digital output mechanisms for analog neural memory in a deep learning artificial neural network

Publications (1)

Publication Number Publication Date
KR20230110360A true KR20230110360A (ko) 2023-07-21

Family

ID=82218721

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237021984A KR20230110360A (ko) 2021-01-01 2021-04-07 딥 러닝 인공 신경망에서의 아날로그 신경 메모리를위한 디지털 출력 메케니즘

Country Status (6)

Country Link
US (1) US20220215239A1 (ko)
EP (1) EP4272122A1 (ko)
JP (1) JP2024502798A (ko)
KR (1) KR20230110360A (ko)
CN (1) CN116635869A (ko)
TW (1) TWI820532B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11755899B2 (en) * 2019-11-11 2023-09-12 Silicon Storage Technology, Inc. Precise programming method and apparatus for analog neural memory in an artificial neural network

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10741568B2 (en) * 2018-10-16 2020-08-11 Silicon Storage Technology, Inc. Precision tuning for the programming of analog neural memory in a deep learning artificial neural network
US11409352B2 (en) * 2019-01-18 2022-08-09 Silicon Storage Technology, Inc. Power management for an analog neural memory in a deep learning artificial neural network
US11507642B2 (en) * 2019-05-02 2022-11-22 Silicon Storage Technology, Inc. Configurable input blocks and output blocks and physical layout for analog neural memory in deep learning artificial neural network
US11200297B2 (en) * 2019-06-12 2021-12-14 International Business Machines Corporation Integrator voltage shifting for improved performance in softmax operation

Also Published As

Publication number Publication date
TWI820532B (zh) 2023-11-01
JP2024502798A (ja) 2024-01-23
TW202247048A (zh) 2022-12-01
CN116635869A (zh) 2023-08-22
EP4272122A1 (en) 2023-11-08
US20220215239A1 (en) 2022-07-07

Similar Documents

Publication Publication Date Title
KR102657705B1 (ko) 딥 러닝 인공 신경 네트워크 내의 아날로그 신경 메모리를 위한 출력 어레이 뉴런 변환 및 교정
CN112868063B (zh) 深度学习人工神经网络中的模拟神经存储器的编程的精确调谐
JP7329151B2 (ja) 人工ニューラルネットワーク内のアナログニューラルメモリにおけるデータドリフトを補償するための回路
JP7340101B2 (ja) 人工ニューラルネットワークにおけるアナログニューラルメモリのための精密なプログラミング方法及び装置
CN114402391A (zh) 深度学习人工神经网络中的模拟神经存储器的编程的精确调谐
TWI820532B (zh) 深度學習人工神經網路中類比神經記憶體之數位輸出機制
TWI843232B (zh) 決定施加至神經網路中的一或多個記憶體胞元的偏壓
TWI842636B (zh) 深度學習人工神經網路中類比神經記憶體的輸出電路
US20240062812A1 (en) Determination of a bias voltage to apply to one or more memory cells
US20230306246A1 (en) Calibration of electrical parameters in a deep learning artificial neural network
WO2022146468A1 (en) Digital output mechanisms for analog neural memory in a deep learning artificial neural network
WO2024063792A1 (en) Verification method and system in artificial neural network array
EP4341933A1 (en) Output circuit for analog neural memory in a deep learning artificial neural network
WO2022245384A1 (en) Output circuit for analog neural memory in a deep learning artificial neural network
WO2023154075A1 (en) Calibration of electrical parameters in a deep learning artificial neural network
TW202230376A (zh) 深度學習人工神經網路中類比神經記憶體之輸入及數位輸出機制
KR20240026194A (ko) 딥 러닝 인공 신경망에서의 아날로그 뉴럴 메모리를 위한 입력 회로
EP4381502A1 (en) Input circuitry for analog neural memory in a deep learning artificial neural network