KR20240052994A - 신경망에서 하나 이상의 메모리 셀에 인가할 바이어스 전압 결정 - Google Patents

신경망에서 하나 이상의 메모리 셀에 인가할 바이어스 전압 결정 Download PDF

Info

Publication number
KR20240052994A
KR20240052994A KR1020247011823A KR20247011823A KR20240052994A KR 20240052994 A KR20240052994 A KR 20240052994A KR 1020247011823 A KR1020247011823 A KR 1020247011823A KR 20247011823 A KR20247011823 A KR 20247011823A KR 20240052994 A KR20240052994 A KR 20240052994A
Authority
KR
South Korea
Prior art keywords
neural network
bias
array
memory cells
memory
Prior art date
Application number
KR1020247011823A
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
Priority claimed from US17/585,452 external-priority patent/US20230154528A1/en
Application filed by 실리콘 스토리지 테크놀로지 인크 filed Critical 실리콘 스토리지 테크놀로지 인크
Publication of KR20240052994A publication Critical patent/KR20240052994A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0408Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
    • G11C16/0425Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors comprising cells containing a merged floating gate and select transistor
    • 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/24Bit-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Non-Volatile Memory (AREA)
  • Read Only Memory (AREA)

Abstract

온도 변화에 따른 정확도 또는 전력 소모에 관해 딥러닝 인공 신경망의 아날로그 신경 메모리를 개선하기 위한 수많은 실시형태가 개시된다. 일부 실시형태들에서, 신경망에서 하나 이상의 메모리 셀에 인가할 바이어스 값을 실시간으로 결정하는 방법이 수행된다. 다른 실시형태들에서, 바이어스 전압은 룩업 테이블로부터 결정되고 판독 동작 중에 메모리 셀의 단자에 인가된다.

Description

신경망에서 하나 이상의 메모리 셀에 인가할 바이어스 전압 결정
우선권 주장
본 출원은 2021년 11월 12일자로 출원되고 발명의 명칭이 "성능, 전력 또는 온도에 관한 딥 러닝 인공 신경망의 아날로그 신경 메모리 최적화(Optimization of Analog Neural Memory in a Deep Learning Artificial Neural Network as to Performance, Power, or Temperature)"인 미국 임시 특허 출원 제63/279,028호, 및 2022년 1월 26일자로 출원되고 발명의 명칭이 "신경망에서 하나 이상의 메모리 셀에 인가할 바이어스 전압 결정(Determination of a Bias Voltage to Apply to One or More Memory Cells in a Neural Network)"인 미국 특허 출원 제17/585,452호의 우선권을 주장한다.
기술분야
다양한 온도 환경에서 성능 또는 전력에 관해 딥러닝 인공 신경망의 아날로그 신경 메모리를 개선하기 위한 수많은 실시형태가 개시된다.
인공 신경망은 생물학적 신경망(동물의 중추신경계, 특히 뇌)을 모방하며, 다수의 입력에 의존할 수 있고 일반적으로 알려져 있지 않은 함수들을 추정하거나 근사화하는 데 이용된다. 인공 신경망은, 일반적으로, 서로 메시지들을 교환하는 상호연결된 "뉴런(neuron)들"의 층들을 포함한다.
도 1은 인공 신경망을 예시하며, 여기서 원들은 뉴런들의 층들 또는 입력들을 나타낸다. 연접부들(시냅스(synapse)들로 지칭됨)은 화살표로 표현되며, 경험에 기초하여 튜닝될 수 있는 수치 가중치를 갖는다. 이는 신경망들을 입력들에 적응할 수 있고 학습할 수 있게 만든다. 전형적으로, 신경망들은 다수의 입력들의 층을 포함한다. 전형적으로 뉴런들의 하나 이상의 중간 층, 및 신경망의 출력을 제공하는 뉴런들의 출력 층이 있다. 각각의 레벨의 뉴런들은 개별적으로 또는 집합적으로 시냅스들로부터의 수신된 데이터에 기초하여 결정을 행한다.
고성능 정보 처리를 위한 인공 신경망의 개발에서의 주요 과제들 중 하나는 적절한 하드웨어 기술의 결여이다. 사실상, 실제 신경망들은 매우 많은 수의 시냅스들에 의존하여, 뉴런들 사이의 높은 접속성, 즉 매우 높은 계산 병렬성(computational parallelism)을 가능하게 한다. 원칙적으로, 그러한 복잡성은 디지털 슈퍼컴퓨터들 또는 특수 그래픽 처리 유닛 클러스터들로 달성될 수 있다. 그러나, 고비용에 더하여, 이들 접근법은 또한 주로 저-정밀 아날로그 계산을 수행하기 때문에 훨씬 적은 에너지를 소모하는 생물학적 망(biological network)과 비교하여 평범한 에너지 효율을 겪는다. CMOS 아날로그 회로가 인공 신경망에 사용되어 왔지만, 대부분의 CMOS-구현된 시냅스들은 많은 수의 뉴런들 및 시냅스들을 고려해 볼 때 너무 부피가 컸다.
출원인은 참고로 포함되는 미국 특허 출원 제15/594,439호에서 하나 이상의 비휘발성 메모리 어레이를 시냅스로 이용하는 인공 (아날로그) 신경망을 이전에 개시하였다. 비휘발성 메모리 어레이들은 아날로그 신경 메모리로 동작한다. 신경망 디바이스는 제1 복수의 입력들을 수신하고 그로부터 제1 복수의 출력들을 생성하도록 구성된 제1 복수의 시냅스들, 및 제1 복수의 출력들을 수신하도록 구성된 제1 복수의 뉴런들을 포함한다. 제1 복수의 시냅스들은 복수의 메모리 셀들을 포함하는데, 여기서 메모리 셀들 각각은 반도체 기판 내에 형성되고 채널 영역이 사이에 연장되는 이격된 소스 영역과 드레인 영역, 채널 영역의 제1 부분 위에 배치되고 그로부터 절연되는 플로팅 게이트, 및 채널 영역의 제2 부분 위에 배치되고 그로부터 절연되는 비-플로팅 게이트를 포함한다. 복수의 메모리 셀들 각각은 플로팅 게이트 상의 전자들의 수에 대응하는 가중치 값을 저장하도록 구성된다. 복수의 메모리 셀들은 제1 복수의 입력들을 저장된 가중치 값들과 승산하여 제1 복수의 출력들을 생성하도록 구성된다.
비휘발성 메모리 셀들
비휘발성 메모리들이 잘 알려져 있다. 예를 들어, 본원에 참고로 포함되는 미국 특허 제5,029,130호("'130 특허")는 플래시 메모리 셀들의 한 유형인, 분리형 게이트 비휘발성 메모리 셀들의 어레이를 개시하고 있다. 그러한 메모리 셀(210)이 도 2에 도시되어 있다. 각각의 메모리 셀(210)은 반도체 기판(12) 내에 형성된 소스 영역(14) 및 드레인 영역(16)을 포함하며, 그 영역들 사이에 채널 영역(18)이 있다. 플로팅 게이트(20)가 소스 영역(14)의 일부분 위에, 그리고 채널 영역(18)의 제1 부분 위에 형성되고 그로부터 절연된다(그리고 그의 전도율을 제어한다). 워드 라인 단자(22)(전형적으로 워드 라인에 결합됨)가 채널 영역(18)의 제2 부분 위에 배치되고 그로부터 절연되는(그리고 그의 전도율을 제어하는) 제1 부분, 및 위쪽으로 그리고 플로팅 게이트(20) 위로 연장되는 제2 부분을 갖는다. 플로팅 게이트(20) 및 워드 라인 단자(22)는 게이트 산화물에 의해 기판(12)으로부터 절연된다. 비트 라인(24)이 드레인 영역(16)에 결합된다.
메모리 셀(210)은 워드 라인 단자(22) 상에 높은 포지티브 전압을 배치함으로써 소거되는데(여기서 전자들이 플로팅 게이트로부터 제거됨), 이는 플로팅 게이트(20) 상의 전자들이 파울러-노드하임(Fowler-Nordheim, FN) 터널링을 통해 중간 절연체를 통과하여 플로팅 게이트(20)로부터 워드 라인 단자(22)로 터널링하게 한다.
메모리 셀(210)은 워드 라인 단자(22) 상에 포지티브 전압을, 그리고 소스 영역(14) 상에 포지티브 전압을 배치함으로써 핫 전자(hot electron)들(여기서, 전자들은 플로팅 게이트 상에 배치됨)로 소스측 주입(SSI)에 의해 프로그래밍된다. 전자 전류가 드레인 영역(16)으로부터 소스 영역(14)을 향해 흐를 것이다. 전자들은 그들이 워드 라인 단자(22)와 플로팅 게이트(20) 사이의 갭에 도달할 때 가속되고 가열될 것이다. 가열된 전자들 중 일부는 플로팅 게이트(20)로부터의 정전 인력으로 인해 게이트 산화물을 통과하여 플로팅 게이트(20) 상으로 주입될 것이다.
메모리 셀(210)은 드레인 영역(16) 및 워드 라인 단자(22) 상에 포지티브 판독 전압들을 배치함(이는 워드 라인 단자 아래의 채널 영역(18)의 부분을 턴온시킴)으로써 판독된다. 플로팅 게이트(20)가 양으로 대전되면(즉, 전자가 소거되면), 플로팅 게이트(20) 아래의 채널 영역(18)의 부분이 또한 턴온되고, 전류가 채널 영역(18)을 가로질러 흐를 것이며, 소거 상태 또는 "1" 상태로 감지된다. 플로팅 게이트(20)가 음으로 대전되면(즉, 전자로 프로그래밍되면), 플로팅 게이트(20) 아래의 채널 영역의 부분은 대부분 또는 완전히 턴오프되고, 전류가 채널 영역(18)을 가로질러 흐르지 않을 것이며(또는 흐름이 거의 없을 것이며), 프로그래밍된 상태 또는 "0" 상태로 감지된다.
표 1은 판독 동작, 소거 동작, 및 프로그래밍 동작을 수행하기 위해 메모리 셀(110)의 단자들에 인가될 수 있는 전형적인 전압 및 전류 범위들을 도시한다:
[표 1]
플래시 메모리 셀들의 다른 유형들인 다른 분리형 게이트 메모리 셀 구성들이 알려져 있다. 예를 들어, 도 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]
도 4는 플래시 메모리 셀의 다른 유형인 3-게이트 메모리 셀(410)을 도시한다. 메모리 셀(410)은, 메모리 셀(410)이 별개의 제어 게이트를 갖지 않는다는 점을 제외하고는, 도 3의 메모리 셀(310)과 동일하다. 소거 동작(그에 의해 소거 게이트의 사용을 통해 소거가 발생함) 및 판독 동작은, 제어 게이트 바이어스가 인가되지 않는다는 점을 제외하고는, 도 3의 것과 유사하다. 프로그래밍 동작은 또한 제어 게이트 바이어스 없이 행해지고, 결과적으로, 제어 게이트 바이어스의 결여를 보상하기 위해 프로그램 동작 동안 소스 라인 상에 더 높은 전압이 인가되어야 한다.
표 3은 판독 동작, 소거 동작, 및 프로래밍 동작을 수행하기 위해 메모리 셀(410)의 단자들에 인가될 수 있는 전형적인 전압 및 전류 범위들을 도시한다:
[표 3]
도 5는 플래시 메모리 셀의 다른 유형인 적층형 게이트 메모리 셀(510)을 도시한다. 메모리 셀(510)은, 절연 층(도시되지 않음)에 의해 분리되어, 플로팅 게이트(20)가 전체 채널 영역(18) 위로 연장되고, 제어 게이트(22)(여기서 워드 라인에 결합될 것임)가 플로팅 게이트(20) 위로 연장된다는 점을 제외하고는, 도 2의 메모리 셀(210)과 유사하다. 소거는 FG로부터 기판으로의 전자들의 FN 터널링에 의해 행해지고, 프로그래밍은 소스 영역(14)으로부터 드레인 영역(16)을 향해 흐르는 전자들에 의해, 채널(18)과 드레인 영역(16) 사이의 영역에서의 채널 핫 전자(CHE) 주입에 의해 행해지고, 판독 동작은 더 높은 제어 게이트 전압을 갖고서 메모리 셀(210)에 대한 것과 유사하다.
표 4는 판독 동작, 소거 동작, 및 프로래밍 동작을 수행하기 위해 기판(12) 및 메모리 셀(510)의 단자들에 인가될 수 있는 전형적인 전압 범위들을 보여준다.
[표 4]
본원에 설명된 방법들 및 수단들은, 제한 없이, FINFET 분리형 게이트 플래시 또는 적층 게이트 플래시 메모리, NAND 플래시, SONOS(silicon-oxide-nitride-oxide-silicon, 질화물 내의 전하 트랩), MONOS(metal-oxide-nitride-oxide-silicon, 질화물 내의 금속 전하 트랩), ReRAM(resistive ram), PCM(phase change memory), MRAM(magnetic ram), FeRAM(ferroelectric ram), CT(charge trap) 메모리, CN(carbon-tube) 메모리, OTP(bi-level or multi-level one time programmable), 및 CeRAM(correlated electron ram)과 같은 다른 비휘발성 메모리 기술들에 적용될 수 있다.
인공 신경망에서 위에서 설명된 비휘발성 메모리 셀들의 유형들 중 하나를 포함하는 메모리 어레이들을 이용하기 위해, 두 가지 수정이 이루어진다. 첫째, 라인들은, 하기에서 추가로 설명되는 바와 같이, 각각의 메모리 셀이 어레이 내의 다른 메모리 셀들의 메모리 상태에 악영향을 미치지 않으면서 개별적으로 프로그램, 소거, 및 판독될 수 있도록 구성된다. 둘째, 메모리 셀들의 연속적인 (유사한) 프로그래밍이 제공된다.
구체적으로, 어레이 내의 각 메모리 셀의 메모리 상태(즉, 플로팅 게이트 상의 전하)는, 독립적 및 다른 메모리 셀의 교란을 최소화하며, 완전 소거된 상태로부터 완전 프로그래밍된 상태로 연속적으로 변경될 수 있다. 다른 실시형태에서, 어레이 내의 각각의 메모리 셀의 메모리 상태(즉, 플로팅 게이트 상의 전하)는, 독립적으로 그리고 다른 메모리 셀들의 교란을 최소화시킨 상태로, 완전 프로그래밍된 상태로부터 완전 소거된 상태로 연속적으로 변경될 수 있고, 그 역으로도 가능하다. 이것은 셀 저장소가 유사하거나 또는 적어도, 많은 개별 값들(예컨대 16개 또는 64개의 상이한 값) 중 하나를 저장할 수 있음을 의미하는데, 이는 메모리 어레이 내의 모든 셀들의 매우 정밀하고 개별적인 튜닝을 허용하고, 메모리 어레이를 신경망의 시냅스 가중치들을 저장하고 그들에 대한 미세 튜닝 조정을 행하는 데 이상적인 것으로 되게 한다.
비휘발성 메모리 셀 어레이들을 채용한 신경망들
도 6은 본 실시형태의 비휘발성 메모리 어레이를 활용하는 신경망의 비제한적인 예를 개념적으로 예시한다. 이 예는 안면 인식 애플리케이션에 대해 비휘발성 메모리 어레이 신경망을 이용하지만, 비휘발성 메모리 어레이 기반 신경망을 이용하여 임의의 다른 적절한 애플리케이션이 구현될 수 있다.
S0은, 이 예에 대해, 5 비트 정밀도를 갖는 32x32 픽셀 RGB 이미지(즉, 각각의 컬러 R, G 및 B에 대해 하나씩인 3개의 32x32 픽셀 어레이들, 각각의 픽셀은 5 비트 정밀도임)인 입력 층이다. 입력 층(S0)으로부터 층(C1)으로 가는 시냅스(CB1)는 일부 경우에 가중치의 상이한 세트를 적용하고 다른 경우에 공유 가중치를 적용하며, 입력 이미지를 3x3 픽셀 중첩 필터(커널)로 스캔하며, 필터를 1개의 픽셀(또는 모델에 의해 지시되는 바와 같이 1개 초과의 픽셀)만큼 시프트한다. 구체적으로, 이미지의 3x3 부분 내의 9개 픽셀들(즉, 필터 또는 커널로 지칭됨)에 대한 값들이 시냅스들(CB1)에 제공되며, 여기서 이들 9개의 입력 값들이 적절한 가중치들과 승산되고, 그 승산의 출력들을 합산한 후, 단일 출력 값이 결정되고, 층(C1)의 피처 맵(feature map)들 중 하나의 픽셀을 생성하기 위해 CB1의 제1 시냅스에 의해 제공된다. 이어서, 3x3 필터가 입력 층(S0) 내에서 하나의 픽셀씩 우측으로 시프트되며(즉, 우측에 3개 픽셀들의 열(column)을 추가하고, 좌측에서 3개 픽셀들의 열을 뺌), 여기서 이러한 새롭게 위치된 필터에서의 9개 픽셀 값들이 시냅스들(CB1)에 제공되고, 이에 의해 이들은 동일한 가중치들과 승산되고, 제2 단일 출력 값이 연관된 시냅스에 의해 결정된다. 이러한 프로세스는, 3개의 모든 컬러들에 대해 그리고 모든 비트들(정밀도 값들)에 대해, 3x3 필터가 입력 층(S0)의 전체 32x32 픽셀 이미지를 가로질러서 스캔할 때까지 계속된다. 이어서, 프로세스는, 층(C1)의 모든 피처 맵들이 계산될 때까지, 가중치들의 상이한 세트들을 사용하여 반복되어 층(C1)의 상이한 피처 맵을 생성한다.
층(C1)에, 본 예에서, 각각 30x30 픽셀들을 갖는 16개 피처 맵들이 있다. 각각의 픽셀은 입력들과 커널을 승산하는 것으로부터 추출된 새로운 피처 픽셀이고, 따라서 각각의 피처 맵은 2차원 어레이이고, 따라서, 이러한 예에서, 층(C1)은 2차원 어레이들의 16개 층들을 구성한다(본원에서 언급된 층들 및 어레이들은 반드시 물리적 관계인 것이 아니라 논리적 관계임 - 즉, 어레이들은 반드시 물리적으로 2차원 어레이들로 배향되지는 않음 - 에 유념한다). 층(C1) 내의 16개 피처 맵들 각각은 필터 스캔에 적용되는 시냅스 가중치들의 상이한 16개 세트들 중 하나의 세트에 의해 생성된다. C1 피처 맵들은 모두, 경계 식별과 같은 동일한 이미지 피처의 상이한 양태들에 관한 것일 수 있다. 예를 들어, 제1 맵(이러한 제1 맵을 생성하는 데 사용되는 모든 스캔을 위해 공유되는 제1 가중치 세트를 사용하여 생성됨)은 원형 가장자리들을 식별할 수 있고, 제2 맵(제1 가중치 세트와는 상이한 제2 가중치 세트를 사용하여 생성됨)은 직사각형 가장자리들, 또는 특정 피처들의 종횡비 등을 식별할 수 있다.
활성화 함수(P1)(풀링(pooling))가 층(C1)으로부터 층(S1)으로 가기 전에 적용되는데, 이는 각각의 피처 맵 내의 연속적인 비중첩 2x2 영역들로부터의 값들을 풀링한다. 풀링 함수(P1)의 목적은, 예를 들어 가장자리 위치 의존성을 감소시키고 다음 스테이지로 가기 전에 데이터 크기를 감소시키기 위해, 인근 위치를 평균하는 것이다(또는 최대 함수가 사용될 수도 있음). 층(S1)에, 16개 15x15 피처 맵들(즉, 각각 15x15 픽셀들의 상이한 16개 어레이들)이 있다. 층(S1)으로부터 층(C2)으로 가는 시냅스들(CB2)은 1 픽셀의 필터 시프트를 갖는 4x4 필터들로 층(S1) 내의 맵들을 스캔한다. 층(C2)에, 22개 12x12 피처 맵들이 있다. 활성화 함수(P2)(풀링)가 층(C2)으로부터 층(S2)으로 가기 전에 적용되는데, 이는 각각의 피처 맵 내의 연속적인 비중첩 2x2 영역들로부터의 값들을 풀링한다. 층(S2)에, 22개 6x6 피처 맵들이 있다. 활성화 함수(풀링)가 층(S2)으로부터 층(C3)으로 가는 시냅스들(CB3)에서 적용되며, 여기서 층(C3) 내의 모든 뉴런은 CB3의 각자의 시냅스를 통해 층(S2) 내의 모든 맵에 접속된다. 층(C3)에, 64개 뉴런들이 있다. 층(C3)으로부터 출력 층(S3)으로 가는 시냅스들(CB4)은 C3을 S3에 완전히 접속시키는데, 즉 층(C3) 내의 모든 뉴런은 층(S3) 내의 모든 뉴런에 접속된다. S3에서의 출력은 10개 뉴런들을 포함하고, 여기서 최고 출력 뉴런이 클래스를 결정한다. 이러한 출력은, 예를 들어, 원래의 이미지의 내용의 식별 또는 분류를 나타낼 수 있다.
시냅스들의 각각의 층은 비휘발성 메모리 셀들의 어레이 또는 그들의 어레이의 일부를 사용하여 구현된다.
도 7은 그 목적을 위해 사용될 수 있는 어레이의 블록 다이어그램이다. 벡터x매트릭스 승산(vector-by-matrix multiplication, VMM) 어레이(32)는 비휘발성 메모리 셀들을 포함하고, 하나의 층과 다음 층 사이에서 시냅스(예컨대, 도 6의 CB1, CB2, CB3, 및 CB4)로 이용된다. 구체적으로, VMM 어레이(32)는 비휘발성 메모리 셀들(33)의 어레이, 소거 게이트 및 워드 라인 게이트 디코더(34), 제어 게이트 디코더(35), 비트 라인 디코더(36) 및 소스 라인 디코더(37)를 포함하며, 이들은 비휘발성 메모리 셀 어레이(33)에 대한 각자의 입력들을 디코딩한다. VMM 어레이(32)로의 입력은 소거 게이트 및 워드 라인 게이트 디코더(34)로부터 또는 제어 게이트 디코더(35)로부터의 것일 수 있다. 이 예에서, 소스 라인 디코더(37)는 또한 비휘발성 메모리 셀 어레이(33)의 출력을 디코딩한다. 대안적으로, 비트 라인 디코더(36)는 비휘발성 메모리 셀 어레이(33)의 출력을 디코딩할 수 있다.
비휘발성 메모리 셀 어레이(33)는 두 가지 목적에 기여한다. 첫째, 그것은 VMM 어레이(32)에 의해 사용될 가중치들을 저장한다. 둘째, 비휘발성 메모리 셀 어레이(33)는 입력들을 비휘발성 메모리 셀 어레이(33)에 저장된 가중치들과 유효하게 승산하고 이들을 출력 라인(소스 라인 또는 비트 라인)마다 가산하여 출력을 생성하며, 이는 다음 층으로의 입력 또는 최종 층으로의 입력일 것이다. 승산 및 가산 함수를 수행함으로써, 비휘발성 메모리 셀 어레이(33)는 별개의 승산 및 가산 로직 회로들에 대한 필요성을 무효화하고, 또한 그의 인시투(in-situ) 메모리 계산으로 인해 전력 효율적이다.
비휘발성 메모리 셀 어레이(33)의 출력은 비휘발성 메모리 셀 어레이(33)의 출력들을 합산하여 해당 합성곱(convolution)에 대한 단일 값을 생성하는 차동 합산기(예컨대, 합산 연산 증폭기 또는 합산 전류 미러)(38)에 공급된다. 차동 합산기(38)는 포지티브 가중치 및 네거티브 가중치의 합산을 수행하도록 배열된다.
이어서 차동 합산기(38)의 합산된 출력 값들은 활성화 함수 블록(39)에 공급되며, 이는 출력을 정류한다. 활성화 함수 블록(39)은 시그모이드(sigmoid), 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: convolutional neural network)의 시냅스들 및 뉴런들의 상이한 층들로서 기능한다. 각각의 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)과 같은 제어 게이트 라인들이 수직 방향으로 이어지고(따라서, 행(row) 방향의 기준 어레이(902)는 제어 게이트 라인(903)에 직교함), 소거 게이트 라인(904)과 같은 소거 게이트 라인들이 수평 방향으로 이어진다. 여기서, VMM 어레이(900)로의 입력들은 제어 게이트 라인들(CG0, CG1, CG2, CG3) 상에 제공되고, VMM 어레이(900)의 출력은 소스 라인들(SL0, SL1) 상에 나타난다. 일 실시형태에서, 짝수 행들만이 사용되고, 다른 실시형태에서 홀수 행들만이 사용된다. 각각의 소스 라인(각각, SL0, SL1) 상에 배치된 전류는 그 특정 소스 라인에 접속된 메모리 셀들로부터의 모든 전류들의 합산 함수를 수행한다.
신경망에 대해 본 원에 설명된 바와 같이, VMM 어레이(900)의 비휘발성 메모리 셀, 즉 VMM 어레이(900)의 메모리 셀(310)은 바람직하게는 하위 임계값 영역에서 동작하도록 구성된다.
본원에 기술된 비휘발성 기준 메모리 셀들 및 비휘발성 메모리 셀들은 약 반전(weak inversion)으로 바이어싱되며(하위 임계값 영역):
Ids = Io * e (Vg- Vth)/nVt = w * Io * e (Vg)/nVt,
여기서 w = e (- Vth)/nVt
여기서 Ids는 드레인-소스 전류이고; Vg는 메모리 셀 상의 게이트 전압이고; Vth는 메모리 셀의 임계 전압이고; Vt는 열 전압(thermal voltage) = 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)에 대한 다른 실시형태들은, 본원에 인용되어 포함되는 미국 특허 제10,748,630호에 기술되어 있다. 그 출원에 기술되어 있는 바와 같이, 소스 라인 또는 비트 라인이 뉴런 출력(전류 합산 출력)으로 사용될 수 있다.
도 10은 뉴런 VMM 어레이(1000)를 도시하며, 이는 도 2에 도시된 바와 같은 메모리 셀들(210)에 특히 적합하고, 입력 층과 다음 층 사이의 시냅스로서 이용된다. VMM 어레이(1000)는 비휘발성 메모리 셀들의 메모리 어레이(1003), 제1 비휘발성 기준 메모리 셀들의 기준 어레이(1001), 및 제2 비휘발성 기준 메모리 셀들의 기준 어레이(1002)를 포함한다. 어레이의 열(column) 방향으로 배열된 기준 어레이들(1001 및 1002)은, 단자들(BLR0, BLR1, BLR2, 및 BLR3) 내로 흐르는 전류 입력들을 전압 입력들(WL0, WL1, WL2, 및 WL3)로 변환하는 역할을 한다. 실제로, 제1 및 제2 비휘발성 기준 메모리 셀들은 그들 내로 흐르는 전류 입력들과 멀티플렉서들(1014)(단지 부분적으로 도시됨)을 통해 다이오드 접속된다. 기준 셀들은 목표 기준 레벨들로 튜닝(예를 들어, 프로그래밍)된다. 목표 기준 레벨들은 기준 미니-어레이 매트릭스(도시되지 않음)에 의해 제공된다.
메모리 어레이(1003)는 두 가지 목적에 기여한다. 첫째, 메모리 어레이는 VMM 어레이(1000)에 의해 사용될 가중치들을 그의 각각의 메모리 셀에 저장한다. 둘째, 메모리 어레이(1003)는 입력들(즉, 단자들(BLR0, BLR1, BLR2, 및 BLR3)에 제공되는 전류 입력들, 이들은 기준 어레이들(1001 및 1002)에 의해 워드 라인(WL0, WL1, WL2, 및 WL3)에 공급할 입력 전압들로 변환됨)을 메모리 어레이(1003)에 저장된 가중치들과 유효하게 승산하고, 이어서 모든 결과들(메모리 셀 전류들)을 가산하여 출력을 생성하는데, 각자의 비트 라인(BL0 - BLN) 상에서, 이는 다음 층에 대한 입력 또는 최종 층에 대한 입력일 것이다. 승산 및 가산 함수를 수행함으로써, 메모리 어레이(1003)는 별개의 승산 및 가산 로직 회로들에 대한 필요성을 무효화하고, 또한 전력 효율적이다. 여기서, 전압 입력들은 워드 라인들(WL0, WL1, WL2, 및 WL3) 상에 제공되고, 출력은 판독(추론) 동작 동안 각자의 비트 라인들(BL0 - BLN) 상에 나타난다. 비트 라인들(BL0 - BLN) 각각에 배치된 전류는 그 특정 비트 라인에 접속된 모든 비휘발성 메모리 셀들로부터의 전류들의 합산 함수를 수행한다.
표 5는 VMM 어레이(1000)에 대한 동작 전압들 및 전류들을 보여준다. 표 내의 열들은 선택된 셀들에 대한 워드 라인들, 비선택된 셀들에 대한 워드 라인들, 선택된 셀들에 대한 비트 라인들, 비선택된 셀들에 대한 비트 라인들, 선택된 셀들에 대한 소스 라인들, 및 비선택된 셀들에 대한 소스 라인들 상에 배치된 전압들을 나타낸다. 행들은 판독 동작, 소거 동작, 및 프로그래밍 동작을 나타낸다.
[표 5]
도 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]
도 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) 및 캐스코딩 트랜지스터(cascoding transistor)(1204)를 포함한다. 기준 셀들은 목표 기준 레벨들로 튜닝된다.
메모리 어레이(1203)는 두 가지 목적에 기여한다. 첫째, 그것은 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]
도 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)은 (멀티플렉서들(1314)을 통한 다이오드 접속된 기준 셀들의 액션을 통해) 단자(BLR0, BLR1, BLR2, 및 BLR3) 내의 입력 전류를 행 방향으로 메모리 셀들에 인가될 제어 게이트 전압들(CG0, CG1, CG2, 및 CG3)로 변환한다. 전류 출력(뉴런)은 비트 라인들(BL0 - BLN)에 있으며, 여기서 각각의 비트 라인은 그 특정 비트 라인에 접속된 비휘발성 메모리 셀들로부터의 모든 전류들을 합산한다.
표 8은 VMM 어레이(1300)에 대한 동작 전압들 및 전류들을 보여준다. 표 내의 열들은 선택된 셀들에 대한 워드 라인들, 비선택된 셀들에 대한 워드 라인들, 선택된 셀들에 대한 비트 라인들, 비선택된 셀들에 대한 비트 라인들, 선택된 셀들에 대한 제어 게이트들, 선택된 셀들과 동일한 섹터 내의 비선택된 셀들에 대한 제어 게이트들, 선택된 셀들과는 상이한 섹터 내의 비선택된 셀들에 대한 제어 게이트들, 선택된 셀들에 대한 소거 게이트들, 비선택된 셀들에 대한 소거 게이트들, 선택된 셀들에 대한 소스 라인들, 및 비선택된 셀들에 대한 소스 라인들 상에 배치된 전압들을 나타낸다. 행들은 판독 동작, 소거 동작, 및 프로그래밍 동작을 나타낸다.
[표 8]
Figure pct00008
도 22는 뉴런 VMM 어레이(2200)를 도시하며, 이는 도 2에 도시된 바와 같은 메모리 셀들(210)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런들의 부분들 및 시냅스들로 이용된다. VMM 어레이(2200)에서, 입력(INPUT0. …, INPUTN)은 비트 라인(BL0, . . . BLN) 상에서 각각 수신되며, 출력(OUTPUT1, OUTPUT2, OUTPUT3, 및 OUTPUT4)은 소스 라인(SL0, SL1, SL2, 및 SL3) 상에 각각 생성된다.
도 23은 뉴런 VMM 어레이(2300)를 도시하며, 이는 도 2에 도시된 바와 같은 메모리 셀들(210)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런들의 부분들 및 시냅스들로서 이용된다. 이 예에서, 입력(INPUT0, INPUT1, INPUT2, 및 INPUT3)은 각각 소스 라인(SL0, SL1, SL2, 및 SL3) 상에서 수신되고, 출력(OUTPUT0, . . . OUTPUTN)은 비트 라인(BL0, …, BLN) 상에서 생성된다.
도 24는 뉴런 VMM 어레이(2400)를 도시하며, 이는 도 2에 도시된 바와 같은 메모리 셀들(210)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런들의 부분들 및 시냅스들로서 이용된다. 이 예에서, 입력(INPUT0, …, INPUTM)은 각각 워드 라인(WL0, …, WLM) 상에서 수신되고, 출력(OUTPUT0, . . . OUTPUTN)은 비트 라인(BL0, …, BLN) 상에서 생성된다.
도 25는 뉴런 VMM 어레이(2500)를 도시하며, 이는 도 3에 도시된 바와 같은 메모리 셀들(310)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런들의 부분들 및 시냅스들로서 이용된다. 이 예에서, 입력(INPUT0, …, INPUTM)은 각각 워드 라인(WL0, …, WLM) 상에서 수신되고, 출력(OUTPUT0, . . . OUTPUTN)은 비트 라인(BL0, …, BLN) 상에서 생성된다.
도 26은 뉴런 VMM 어레이(2600)를 도시하며, 이는 도 4에 도시된 바와 같은 메모리 셀들(410)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런들의 부분들 및 시냅스들로서 이용된다. 이 예에서, 입력들(INPUT0, ..., INPUTn)은 각각 수직 제어 게이트 라인들(CG0, ..., CGN) 상에서 수신되고, 출력들(OUTPUT1 및 OUTPUT2)은 소스 라인들(SL0 및 SL1) 상에서 생성된다.
도 27은 뉴런 VMM 어레이(2700)를 도시하며, 이는 도 4에 도시된 바와 같은 메모리 셀들(410)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런들의 부분들 및 시냅스들로서 이용된다. 이 예에서, 입력들(INPUT0, ..., INPUTN)은, 각각 비트 라인들(BL0, ..., BLN)에 결합되는, 각각 비트 라인 제어 게이트들(2701-1, 2701-2, ..., 2701-(N-1), 및 2701-N)의 게이트들 상에서 수신된다. 예시적인 출력들(OUTPUT1 및 OUTPUT2)이 소스 라인들(SL0 및 SL1) 상에서 생성된다.
도 28은, 도 3에 도시된 바와 같은 메모리 셀(310), 도 5에 도시된 바와 같은 메모리 셀(510), 및 도 7에 도시된 바와 같은 메모리 셀(710)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런들의 부분들 및 시냅스들로서 이용되는 뉴런 VMM 어레이(2800)를 도시한다. 이 예에서, 입력들(INPUT0, ..., INPUTM)은 워드 라인들(WL0, ..., WLM) 상에서 수신되고, 출력들(OUTPUT0, ..., OUTPUTN)은 각각 비트 라인들(BL0, ..., BLN) 상에서 생성된다.
도 29는, 도 3에 도시된 바와 같은 메모리 셀(310), 도 5에 도시된 바와 같은 메모리 셀(510), 및 도 7에 도시된 바와 같은 메모리 셀(710)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런들의 부분들 및 시냅스들로서 이용되는 뉴런 VMM 어레이(2900)를 도시한다. 이 예에서, 입력들(INPUT0, ..., INPUTM)은 제어 게이트 라인들(CG0, …, CGM) 상에서 수신된다. 출력들(OUTPUT0, ..., OUTPUTN)은 각각 수직 소스 라인들(SL0, ..., SLN) 상에서 생성되며, 여기서 각각의 소스 라인(SLi)은 열 i 내의 모든 메모리 셀들의 소스 라인들에 결합된다.
도 30은, 도 3에 도시된 바와 같은 메모리 셀(310), 도 5에 도시된 바와 같은 메모리 셀(510), 및 도 7에 도시된 바와 같은 메모리 셀(710)에 특히 적합하고, 입력 층과 다음 층 사이의 뉴런들의 부분들 및 시냅스들로서 이용되는 뉴런 VMM 어레이(3000)를 도시한다. 이 예에서, 입력들(INPUT0, ..., INPUTM)은 제어 게이트 라인들(CG0, …, CGM) 상에서 수신된다. 출력들(OUTPUT0, ..., OUTPUTN)은 각각 수직 비트 라인들(BL0, ..., BLN) 상에서 생성되며, 여기서 각각의 비트 라인(BLi)은 열 i 내의 모든 메모리 셀들의 비트 라인들에 결합된다.
장단기 메모리
종래 기술은 장단기 메모리(long short-term memory, 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 셀들에 특히 유용함을 알 수 있다. 승산기 디바이스들(1506, 1507, 및 1508) 및 가산 디바이스(1509)는 디지털 방식으로 또는 아날로그 방식으로 구현된다. 활성화 함수 블록들(1602)은 디지털 방식으로 또는 아날로그 방식으로 구현될 수 있다.
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)보다 더 적은 공간을 필요로 할 것인데, 그 이유는 LSTM 셀(1700)이 LSTM 셀(1600)과 비교하여 VMM들 및 활성화 함수 블록들에 대해 1/4만큼의 공간을 요구할 것이기 때문이다.
LSTM 유닛들은 전형적으로 다수의 VMM 어레이를 포함할 것이며, 이들 각각은 합산기 및 활성화 함수 블록 및 고전압 생성 블록들과 같은, VMM 어레이들 밖의 소정 회로 블록들에 의해 제공되는 기능을 요구한다는 것을 추가로 알 수 있다. 각각의 VMM 어레이에 대한 별개의 회로 블록들을 제공하는 것은 반도체 디바이스 내의 상당한 양의 공간을 필요로 할 것이고 다소 비효율적일 것이다. 따라서 후술하는 실시형태들은 VMM 어레이들 자체 밖에서 요구되는 회로를 감소시킨다.
게이티드 회귀 유닛(Gated Recurrent Unit)들
아날로그 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 셀들에서 특히 유용하다는 것을 알 수 있다. 승산기 디바이스들(1904, 1905, 1906), 가산 디바이스(1907), 및 상보 디바이스(1908)는 디지털 방식으로 또는 아날로그 방식으로 구현된다. 활성화 함수 블록들(2002)은 디지털 방식으로 또는 아날로그 방식으로 구현될 수 있다.
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)보다 더 적은 공간을 필요로 할 것인데, 그 이유는 GRU 셀(2100)이 GRU 셀(2000)과 비교하여 VMM들 및 활성화 함수 블록들에 대해 1/3만큼의 공간을 요구할 것이기 때문이다.
GRU 시스템들은 전형적으로 다수의 VMM 어레이를 포함할 것이며, 이들 각각은 합산기 및 활성화 함수 블록 및 고전압 생성 블록들과 같은, VMM 어레이들 밖의 소정 회로 블록들에 의해 제공되는 기능을 요구한다는 것을 추가로 알 수 있다. 각각의 VMM 어레이에 대한 별개의 회로 블록들을 제공하는 것은 반도체 디바이스 내의 상당한 양의 공간을 필요로 할 것이고 다소 비효율적일 것이다. 따라서 후술하는 실시형태들은 VMM 어레이들 자체 밖에서 요구되는 회로를 감소시킨다.
VMM 어레이들에 대한 입력은 아날로그 레벨, 이진 레벨, 펄스, 시간 변조된 펄스, 또는 디지털 비트들일 수 있고(이 경우에 DAC가 디지털 비트들을 적절한 입력 아날로그 레벨로 변환하는 데 필요함), 출력은 아날로그 레벨, 이진 레벨, 타이밍 펄스, 펄스들, 또는 디지털 비트들일 수 있다(이 경우에 출력 ADC가 출력 아날로그 레벨을 디지털 비트들로 변환하는 데 필요함).
일반적으로, VMM 어레이 내의 각각의 메모리 셀에 대해, 각각의 가중치(W)는 단일 메모리 셀에 의해 또는 차동 셀에 의해 또는 2개의 블렌드(blend) 메모리 셀들(2개의 셀들의 평균)에 의해 구현될 수 있다. 차동 셀 경우에, 2개의 메모리 셀들은 차동 가중치(W = W+ - W-)로서 가중치(W)를 구현하는 데 필요하다. 2개의 블렌드 메모리 셀들에서, 2개의 메모리 셀들은 2개의 셀들의 평균으로 가중치(W)를 구현하는 데 필요하다.
도 31은 VMM 시스템(3100)을 도시한다. 몇몇 실시형태들에서, VMM 어레이에 저장되는 가중치들(W)은 차동 쌍들 W+(포지티브 가중치) 및 W-(네거티브 가중치)로서 저장되며, 여기서 W = (W+) - (W-)이다. VMM 시스템(3100)에서, 비트 라인들의 절반은 W+ 라인들, 즉 포지티브 가중치들(W+)을 저장할 메모리 셀들에 접속하는 비트 라인들로 지정되고, 비트 라인들의 다른 절반은 W- 라인들, 즉 네거티브 가중치들(W-)을 구현하는 메모리 셀들에 접속하는 비트 라인들로 지정된다. W- 라인들은 W+ 라인들 사이에 교대로 산재된다. 감산 동작은 합산 회로들(3101 및 3102)과 같은, W+ 라인 및 W- 라인으로부터 전류를 받는 합산 회로에 의해 수행된다. W+ 라인의 출력과 W- 라인의 출력은 함께 조합되어 (W+, W-) 라인들의 모든 쌍들에 대해 (W+, W-) 셀들의 각각의 쌍에 대한 W = W+ - W-를 효과적으로 제공한다. 상기는 W+ 라인들 사이에 교대로 산재된 W- 라인들과 관련하여 설명되었지만, 다른 실시형태들에서 W+ 라인들 및 W- 라인들은 어레이 내의 어디든 임의적으로 위치될 수 있다.
도 32는 다른 실시형태를 도시한다. VMM 시스템(3210)에서, 포지티브 가중치들(W+)이 제1 어레이(3211)에서 구현되고 네거티브 가중치들(W-)이 제2 어레이(3212)에서 구현되며, 제2 어레이(3212)는 제1 어레이와는 별개이며, 결과적인 가중치들은 합산 회로들(3213)에 의해 함께 적절하게 조합된다.
도 33은 VMM 시스템(3300)을 도시한다. VMM 어레이에 저장되는 가중치들(W)은 차동 쌍들 W+(포지티브 가중치) 및 W-(네거티브 가중치)로서 저장되며, 여기서 W = (W+) - (W-)이다. VMM 시스템(3300)은 어레이(3301) 및 어레이(3302)를 포함한다. 어레이(3301 및 3302) 각각 내의 비트 라인들의 절반은 W+ 라인들, 즉 포지티브 가중치들(W+)을 저장할 메모리 셀들에 접속하는 비트 라인들로 지정되고, 어레이(3301 및 3302) 각각 내의 비트 라인들의 다른 절반은 W- 라인들, 즉 네거티브 가중치들(W-)을 구현하는 메모리 셀들에 접속하는 비트 라인들로 지정된다. W- 라인들은 W+ 라인들 사이에 교대로 산재된다. 감산 동작은 합산 회로들(3303, 3304, 3305, 및 3306)과 같은, W+ 라인 및 W- 라인으로부터 전류를 받는 합산 회로에 의해 수행된다. 각각의 어레이(3301, 3302)로부터의 W+ 라인의 출력과 W- 라인의 출력은 각각 함께 조합되어 (W+, W-) 라인들의 모든 쌍들에 대해 (W+, W-) 셀들의 각각의 쌍에 대한 W = W+ - W-를 효과적으로 제공한다. 또한, 각각의 어레이(3301 및 3302)로부터의 W 값들은 합산 회로들(3307 및 3308)을 통해 추가로 조합될 수 있으며, 따라서 각각의 W 값은 어레이(3301)로부터의 W 값 - 어레이(3302)로부터의 W 값의 결과이며, 이는 합산 회로들(3307 및 3308)로부터의 최종 결과가 2개의 차동 값들의 차동 값임을 의미한다.
아날로그 신경 메모리 시스템에서 사용되는 각각의 비휘발성 메모리 셀들은 플로팅 게이트에서 매우 특정적이고 정확한 양의 전하를, 즉 전자들의 수를 보유하도록 소거 및 프로그래밍되어야 한다. 예를 들어, 각 플로팅 게이트는 N개의 상이한 값 중 하나를 유지해야 하며, N은 각 셀에 의해 표시될 수 있는 상이한 가중치의 수이다. N의 예는 16, 32, 64, 128 및 256을 포함한다.
유사하게, 판독 동작은 N개의 상이한 레벨 사이를 정확하게 식별할 수 있어야 한다.
일부 경우에서는, 정확도가 매우 중요하며, (전력 소모를 희생하더라도) 시스템의 정확도를 개선하는 것이 바람직하다. 다른 경우에는 전력 관리가 매우 중요하며, (정확도를 희생하더라도) 시스템의 전력 소모를 개선하는 것(즉, 전력 소모를 줄이는 것)이 바람직하다. 다른 경우에서는, 동작 온도가 변할 때 정확도를 유지할 수 있는 능력이 바람직하다. 전력 소모 및 정확도 대신에 레이턴시 또는 기타 성능 기준과 같은 다른 특성들이 극대화될 수 있다.
다양한 온도 환경에서 정확도 또는 전력 소모를 개선하기 위해 신경망 시스템의 특성들을 변경할 수 있다면 바람직할 것이다.
온도 변화에 따른 정확도, 전력 소모 또는 다른 기준에 관해 딥러닝 인공 신경망의 아날로그 신경 메모리를 개선하기 위한 수많은 실시형태들이 개시된다. 일부 실시형태들에서, 신경망에서 하나 이상의 메모리 셀에 인가할 바이어스 값을 실시간으로 결정하는 방법이 수행된다. 다른 실시형태들에서, 바이어스 전압은 룩업 테이블로부터 결정되고 판독 동작 중에 메모리 셀의 단자에 인가된다.
도 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의 예시적인 셀의 다른 실시형태를 도시한다.
도 22는 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 23은 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 24는 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 25는 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 26은 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 27은 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 28은 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 29는 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 30은 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 31은 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 32는 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 33은 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 34는 벡터x매트릭스 승산 시스템의 다른 실시형태를 도시한다.
도 35는 신경망으로부터의 성능 데이터를 도시한다.
도 36은 신경망 방법을 도시한다.
도 37는 신경망 어레이를 도시한다.
도 38는 어레이를 도시한다.
도 39는 신경망 어레이를 도시한다.
도 40a는 방법을 도시한다.
도 40b는 바이어스 룩업 테이블을 도시한다.
도 41은 방법을 도시한다.
도 42는 방법을 도시한다.
도 43은 아날로그-디지털 변환기의 구현예를 도시한다.
도 44a는 교정 회로를 도시하고 도 44b는 교정 방법을 도시한다.
도 45는 바이어스 평균 회로를 도시한다.
도 46a는 바이어스 생성 블록을 도시한다.
도 46b는 다른 고전압 생성 블록을 도시한다.
도 46c는 다른 고전압 생성 블록을 도시한다.
도 47은 신경망 층 방법을 도시한다.
도 48은 신경망 방법을 도시한다.
도 49는 신경망 방법을 도시한다.
도 50은 신경망 방법을 도시한다.
본 발명의 인공 신경망은 CMOS 기술과 비휘발성 메모리 어레이들의 조합을 이용한다.
VMM 시스템 개관
도 34는 VMM 시스템(3400)의 블록 다이어그램을 도시한다. VMM 시스템(3400)은 VMM 어레이(3401), 행 디코더(row decoder)(3402), 고전압 디코더(3403), 열 디코더(column decoder)(3404), 비트 라인 드라이버들(3405), 입력 회로(3406), 출력 회로(3407), 제어 로직(3408), 및 바이어스 생성기(3409)를 포함한다. VMM 시스템(3400)은 전하 펌프(3411), 전하 펌프 조절기(3412), 및 고전압 아날로그 정밀 레벨 생성기(3413)를 포함하는 고전압 생성 블록(3410)을 추가로 포함한다. VMM 시스템(3400)은 (프로그램/소거, 또는 가중치 튜닝) 알고리즘 컨트롤러(3414), 아날로그 회로(3415), (제한 없이, 산술 함수, 활성화 함수, 임베디드 마이크로컨트롤러 로직과 같은 특수 함수들을 포함할 수 있는) 제어 엔진(3416), 및 테스트 제어 로직(3417)을 추가로 포함한다. 아래에서 설명되는 시스템들 및 방법들은 VMM 시스템(3400)에서 구현될 수 있다.
입력 회로(3406)는 DAC(디지털-아날로그 변환기), DPC(디지털-펄스 변환기, 디지털-시간 변조된 펄스 변환기), AAC(전류-전압 변환기, 로그 변환기와 같은, 아날로그-아날로그 변환기), PAC(펄스-아날로그 레벨 변환기), 또는 임의의 다른 유형의 변환기들과 같은 회로들을 포함할 수 있다. 입력 회로(3406)는 정규화, 선형 또는 비선형 업/다운 스케일링 함수들, 또는 산술 함수들을 구현할 수 있다. 입력 회로(3406)는 입력 레벨들에 대한 온도 보상 함수를 구현할 수 있다. 입력 회로(3406)는 ReLU 또는 시그모이드와 같은 활성화 함수를 구현할 수 있다. 출력 회로(3407)는 ADC(뉴런 아날로그 출력을 디지털 비트들로 변환하기 위한, 아날로그-디지털 변환기), AAC(전류-전압 변환기, 로그 변환기와 같은, 아날로그-아날로그 변환기), APC(아날로그-펄스(들) 변환기, 아날로그-시간 변조된 펄스 변환기), 또는 임의의 다른 유형의 변환기들과 같은 회로들을 포함할 수 있다. 출력 회로(3407)는 정류된 선형 활성화 함수(ReLU) 또는 시그모이드와 같은 활성화 함수를 구현할 수 있다. 출력 회로(3407)는 뉴런 출력들을 위한 통계 정규화, 규칙화, 업/다운 스케일링/이득 함수들, 통계적 반올림, 또는 산술 함수들(예를 들어, 가산, 감산, 제산, 승산, 시프트, 로그)을 구현할 수 있다. 출력 회로(3407)는 어레이의 전력 소모를 대략 일정하게 유지하기 위해 또는 제 IV 기울기를 대략 동일하게 유지하는 것과 같은 어레이(뉴런) 출력의 정밀도를 향상시키기 위해, 뉴런 출력 또는 어레이 출력(비트라인 출력과 같은)에 대한 온도 보상 함수를 구현할 수 있다.
전술한 바와 같이, 신경망은 많은 상이한 층을 포함할 수 있으며, 각 층 내에서, 그 층 내의 하나 이상의 어레이에 저장된 가중치 값들과 관련된 많은 계산들이 수행될 것이다. 일부 층들은 다른 층들보다 더 많이 사용될 것이며, 이러한 층들은 사용 빈도가 높기 때문에 신경망의 전반적인 정확도에 더 중요하다는 것을 알 수 있다.
도 35는 MNIST(미국 국립표준기술연구소) 숫자 분류를 위한 MLP(다층 퍼셉트론(multi-layer perceptron)) 신경망 내에서 가중치의 사용 빈도에 관해 발명자들이 수집한 데이터를 반영하는 그래프(3501)를 도시한다. 도시된 예에서는, n개의 레벨이 있으며, 여기서 각각의 L(L0, ..., Ln)은 가중치 범위를 나타낸다. 볼 수 있는 바와 같이, 낮은 가중치들은 다른 가중치 범위들보다 훨씬 더 자주 사용된다. 이 그래프의 경우, 예로서, Ln은 전반적인 네트워크 성능에 크게 기여하지 않는다. 따라서, Ln 레벨에서 어레이에 인가되는 제어 게이트 전압을 낮추는 식으로 Ln을 0 값으로 설정할 수 있는데, 이는 낮은 제어 게이트 전압에서 소모되는 셀 전류를 감소시켜 전력 소모가 감소되게 하면서도 정확도에는 큰 영향을 미치지 않는다.
신경망은 다수의 층을 포함한다. 각각의 층은 그 층에 특정한 가중치 분포를 가질 수 있다. 따라서, 전반적인 네트워크 성능을 개선하기 위해 각각의 층마다 상이한 기법들이 필요할 수 있다. 예를 들어, Ln은 제1 층에서는 소량만 기여하지만 제2 층에서는 상당한 기여를 할 수도 있다.
본 예들은 신경망의 동작을 개선하는 방법을 제공한다. 최적화라는 용어가 사용될 수 있지만, 그 방법이 반드시 절대적인 최적화, 즉 충분히 완벽하거나 기능적이거나 효과적인 최적화를 보장하는 것은 아니고, 대신 본원에서 사용되는 최적화라는 용어는 단순히 종래 기술의 방법에 비해 개선된 것을 의미한다는 점을 이해해야 한다.
도 35는 또한 판독 동작 중 메모리 셀들의 제어 게이트에 인가되는 전압인 VCG의 변화에 따른 판독 동작들의 정확도를 나타내는 표(3502)를 도시한다. 알 수 있듯이, VCG를 1.8V에서 1.6V로 낮추는 것은 정확도에 어떠한 영향도 미치지 않으며, 1.5V에서 1.4V로 낮추는 것은 정확도에 작게 영향을 미친다. VCG(또는 VEG)가 낮아짐에 따라, 셀 전류가 하위 임계값 공식에 따라 기하급수적으로 낮아진다. 이것은, 일부 경우들에서, 정확도를 희생하지 않고서도 또는 정확도를 허용 가능한 수준으로 희생하면서도 메모리 셀의 단자에 인가되는 전압을 낮추어 전력을 절약할 수 있음을 나타낸다. 마찬가지로, 선형 영역에서, 더 낮은 입력 행 전압(input row voltage)은 전류가 낮아지게 한다. 동작 온도의 변화가 정확도 및 전력 소모 둘 다에 영향을 미칠 수 있으며, 마찬가지로 온도 변화에 따른 전력 및/또는 정확도 향상을 위해 VCG 및/또는 EG 변조(즉, 크기 증가 또는 감소)를 사용할 수 있다는 것을 알 수 있다.
도 35의 이러한 논의에 기초하여, (예를 들어, 사용되는 VCG를 낮춤으로써 정확도를 희생하더라도) 전력 소모를 향상시키기 위해, (예를 들어, 사용되는 VCG를 높임으로써 전력 소모를 희생하더라도) 정적 온도 조건 동안 정확도를 향상시키기 위해, 또는 (예를 들어, 온도 변화에 따라 VCG를 높임으로써 전력 소모를 희생하더라도) 변화하는 온도 조건 동안 정확도를 향상시키거나 유지시키기 위해, 메모리 셀의 하나 이상의 단자(예를 들어, CG, EG, WL 등)에 대해 상이한 바이어스 전압들을 결정하고 인가할 수 있다는 것을 이해할 수 있다. 정확도 및 전력 소모 대신 다른 성능 특성들을 극대화할 수도 있다.
이러한 개념을 염두에 두고, 이제 다양한 방법을 설명하겠다.
도 36은 신경망 내의 특정 층에서 수행되는 신경망 층 방법(3600)을 도시한다. 예를 들어, 이 방법은 전반적인 네트워크 정확도에 큰 영향을 미치기 때문에 더 중요하다고 판단되는 층(또는 둘 이상의 층)에서 수행될 수 있다.
단계 3601에서, 판독 동작 중에 디폴트 전압 바이어스들이 층 어레이의 셀들의 단자들(예를 들어, 제어 게이트 단자들)에 인가된다. 디폴트 전압 바이어스들은 전형적으로 프로그래밍된 가중치가 검증될 때 검증 동작들 중에 사용되는 바이어스 값과 동일하다.
단계 3602에서, 성능 추론이 수행된다.
단계 3603에서, 디폴트 바이어스들이 어레이에 인가될 때 네트워크의 성능(예를 들어 정확도)에 관한 기준 데이터가 수집된다. 이 데이터는, 예를 들어, MNIST 추론 동작의 정확도를 나타내는 데이터이다. 이 기준 데이터는 단계 3605에서 성능 목표 확인을 위한 기준점으로 사용된다.
단계 3604에서, 바이어스들을 변조(예를 들어, 소정의 증가분만큼 증가 또는 감소)한 다음 어레이 층의 셀들의 단자들(예를 들어, 제어 게이트 단자들)에 인가한다.
단계 3605에서, 성능 목표 확인이 수행된다. 성능 데이터 결과가 단계 3603에서 수행된 성능 데이터 수집과 비교하여 목표 범위 내에 있으면, 방법은 성능 목표가 충족되지 않을 때 - 이 지점에서 방법은 단계 3606에서 완료로 진행하고, 목표 범위 내의 성능 데이터 결과를 낸 바이어스들의 마지막 세트인 이전 바이어스 조건을 저장한다 - 까지 단계 3604로 진행한다.
단계 3606에서, 바이어스들의 이전 세트는 양호한 것으로 간주되어 해당 층과 함께 향후 사용을 위해 (예를 들어, 룩업 테이블에) 저장된다. 선택적으로, 현재 동작 온도가 바이어스 레벨들과 함께 저장될 수 있다.
도 37은 신경망 어레이(3700)를 도시한다. 신경망 어레이(3700)는 어레이(3701-0, ..., 3701-n)를 포함하며, 여기서 n+1은 신경망(3700)의 어레이의 수이다. 신경망(3700)은 또한 온도 센서(3703-i)를 포함하며, 여기서 i는 신경망(3700)의 특정 위치에서 동작 온도를 감지하는 센서의 수이다. 선택적으로, 각각의 어레이(3701-0,...,3701-n)는 자체 온도 센서(3703)를 포함하므로(i=n+1), 각각의 온도 센서(3703)는 어레이(3701-0,...3701-n) 중 하나 및 그러한 어레이에 포함된 메모리 셀들과 연관된다. 온도-전압 바이어스 룩업 테이블(LUT)(3704-i)(여기서, i는 전압 바이어스 룩업 테이블들의 수)이 참조되고, 감지된 온도에 기초하여 하나 이상의 단자들(예를 들어, 제어 게이트 단자 또는 소거 게이트 단자, 제한 없음)에 대한 바이어스 전압들이 획득된다. 그런 다음, 온도 바이어스(3702)라고 하는 이러한 바이어스 전압들이 특정 어레이의 각각의 셀에 인가된다. 따라서, 온도 바이어스들(3702-0)이 어레이(3701-0) 등에 인가된다. 각각의 어레이(3701-0,...,3701-n)는 신경망에서 하나 이상의 뉴런을 형성한다.
도 38은 어레이(3801)를 도시한다. 어레이(3801)는, 예를 들어, 도 37의 어레이들(3701-0,...3701-n) 중 임의의 어레이에 사용될 수 있다. 이 실시형태에서는, 동일한 어레이(3801) 내에 포함된 상이한 하위 어레이들(3802-0,..., 3802-k)에 대해 상이한 바이어스 전압들(예를 들어, VCG)이 사용될 수, 즉 어레이(3801)가 다수의 하위 어레이들로 분할될 수 있다. 예를 들어, 각각의 하위 어레이(3802-0,...3802-k)는 각각 자신의 온도 바이어스(3803-0,...3803-k)를 받을 수 있다. 어레이(3801) 내의 상이한 위치들에서 측정된 특정 동작 온도들에 기초한 보상을 허용하는 것 외에도, 이 실시형태는 각각의 하위 어레이(3802) 내에 상이한 유형의 가중치들이 저장되는 상황에도 적합할 수 있다. 예를 들어, 하위 어레이(3802-0)는 0 내지 30nA 범위의 가중치들을 저장하고, 어레이(3801-1)는 30 내지 60nA 범위의 가중치들을 저장하는 등이 행해질 수 있는데, 이는 각각의 전류 범위가 상이한 온도 바이어스를 필요로 할 수 있기 때문이다.
이 실시형태는 또한 상이한 어레이들 내의 메모리 셀들이 상이한 모드들(영역들)에서 동작하는 상황에도 적합할 수 있다. 예를 들어, 하위 어레이(3802-0)의 셀들은 하위 임계값 모드에서 동작하는 반면 하위 어레이(3802-n)의 셀들은 선형 모드에서 동작할 수 있는데, 이는 상이한 모드들(영역들)이 상이한 온도 바이어스들을 필요로 할 수 있기 때문이다.
도 39는 신경망 어레이(3900)를 도시한다. 이 실시형태에서, 도 38에 관한 교시는 신경망 어레이(3900)에서 m+1 어레이들(3901-0,...3901-m)로 확장된다. 각각의 어레이(3901)는 k+1 어레이들(3902-0a,...3902-ka)로 분할된다(여기서, a는 0에서 m까지의 어레이 번호이다). 각각의 어레이(3902)는 자신의 온도 바이어스(3903-0a,...3903-ka)를 각각 받는다. 각각 어레이(3901)는 상이한 수의 어레이들로 분할될 수 있으며, 다른 어레이들(3901)과 동일한 수의 어레이들로 분할될 필요는 없다는 것을 더 이해해야 한다.
도 40a는 신경망 어레이(4000)를 도시한다. 단일 층 내의 전형적인 신경망 판독(추론) 동작에서는, 디지털 입력 값(DIN[m:0])이 어레이(4001)에 인가되고, 그 결과 디지털 출력(DOUT[n:0])(또는, 대안으로, 아날로그 값)이 생성된다. 어레이(4001)는 어레이 또는 어레이의 일부일 수 있다.
신경망(4000)에서, 기준은 룩업 테이블(4003)에서 하나 이상의 값들을 찾는 데 사용된다. 기준은, 예를 들어, 원하는 입력 및 출력 값, 현재 동작 온도 값, 최저 전력 소모, 목표 성능(예를 들어, 정확도 또는 레이턴시) 또는 소정 온도에서의 성능을 목표로 할 것인지 여부를 포함할 수 있다. 그런 다음 룩업 테이블(4003)은 이들 기준에 따라 바이어스들을 제공한다. 그 후, 바이어스들이 판독 동작 중에 어레이(4001)에 인가되고, 이로써 방법(4000)이 완료된다. 어레이(4001)는 비휘발성 메모리 셀들 또는 휘발성 메모리 셀들을 포함할 수 있다.
도 40b는 바이어스 룩업 테이블(BLUT)(4020)을 도시한다. 어레이(4021)는 휘발성 또는 비휘발성 메모리 셀들의 어레이 또는 어레이의 일부이다. 어레이(4021)는 디지털 입력(DIN[m:0])을 수신하고 디지털 출력(DOUT[n:0])을 출력한다. 디지털 출력 데이터 패턴은 선형 또는 하위 임계값 메모리 셀 관계 또는 실리콘 특성화 데이터와 같은 원하는 출력에 따라, 제한 없이, 프로그램 가능하다. 그런 다음 디지털 출력 데이터(DOUT[n:0])는 디지털-아날로그 변환기(4022)에 인가되며, 이 변환기는 원하는 바이어스 아날로그 전압을 출력하여 해당 어레이 또는 하위 어레이에 인가한다. 예를 들어, BLUT(4020) 는 신경망 성능을 개선하기 위해 온도 센서와 함께 바이어스 값들, 즉 온도 바이어스들을 제공하는 데 사용된다.
도 41은 바이어스 생성 회로(4100)를 도시한다. 온도 센서(4101A)는 동작 온도를 감지하고 디지털 비트들(D[m:0])로 동작 온도를 표시한다. 선택적으로, 타이머(4104)는 예를 들어 10 내지 100ms마다(예를 들어 실리콘이 섭씨 1도 상승하는 데 걸리는 시간, 여기서 섭씨 1도는 네트워크 성능에 큰 영향을 주지 않는 허용 온도 변화로 간주함) 온도 감지 및 후속 바이어스 생성을 시작할 수 있다. 이러한 D[m:0] 비트들은 룩업 테이블(4102)에서 룩업을 수행하여 해당 동작 온도에 기초하여 인가되어야 하는 바이어스 값, 즉 적정 온도 바이어스를 찾는 데 사용된다. 바이어스 값은 디지털 비트들(D[k:0])로 표시되며, 디지털-아날로그 변환기(4103)에 제공되어 디지털 비트들이 바이어스 전압으로 변환된 다음 판독(추론) 동작 중에 어레이의 메모리 셀들의 단자들(예를 들어, 제어 게이트 단자들)에 인가될 수 있다.
도 42는 스케일링 회로(4200)를 도시한다. 온도 센서(4201)는 동작 온도를 감지하고 디지털 비트들(D[n:0])로 동작 온도를 표시한다. 이러한 디지털 비트들은 스케일러(4202)에 제공되며, 이 스케일러는 뉴런 판독 동작의 결과로 어레이로부터 출력 뉴런 전류(Ineu)를 받는다. 스케일러(4202)는 Ineu의 전류-전압 변환을 수행하고 D[n:0]에 기초하여 해당 신호의 스케일링을 수행한다. 예를 들어, 하위 임계값 영역의 경우, 온도가 높을수록 뉴런 전류가 높아지므로(메모리 셀 전류가 높아지기 때문), 이 전류를 ADC(4203)에 인가하기 전에 스케일 다운하는 것이 바람직하다. 선형 영역의 경우, 온도가 높을수록 전형적으로 뉴런 전류가 낮아지므로(셀 전류가 낮기 때문), 이 전류를 ADC(4203)에 인가하기 전에 스케일업하는 것이 바람직하다. 그 결과 온도에 대해 보다 균형 잡힌 아날로그 값이 아날로그-디지털 변환기(4203)에 제공되어, 스케일링된 디지털 버전의 Ineu를 나타내는 디지털 출력 비트들(D[n:0])이 생성되며, 스케일링은 적어도 부분적으로 센서 동작 온도를 보상하게 된다.
도 43은 스케일링 회로(4300)를 도시하며, 이는 도 42의 스케일러 ITV(전류-전압 변환기)(4202)와 아날로그-디지털 변환기(4203)를 구현한 것이다. 스케일러(4202) 는 프로그래밍 가능한 이득을 가지고 있으며, 이는 R 값(R을 사용하여 뉴런 전류를 ADC에 의해 디지털화될 전압으로 변환하는 ITV 회로의 경우) 또는 C 값(C를 사용하여 뉴런 전류를 ADC에 의해 디지털화될 전압으로 변환하는 ITV 회로의 경우)을 프로그래밍함으로써 프로그래밍될 수 있다. 스케일러(4202)는 프로그래밍 가능 전류 미러(뉴런(비트 라인) 전류용)로도 구현될 수 있다. ADC(4203)는 프로그래밍 가능 n비트 ADC로, 여기서 n은 예를 들어 4비트, 8비트 또는 12비트일 수 있다.
도 44a는 교정 회로(4400)를 도시하고, 도 44b는 교정 회로(4400)를 활용하여 룩업 테이블(4470)을 값들로 채우는 교정 방법(4450)을 도시한다. 전류 디지털-아날로그 변환기(4402)는 메모리 셀(들)(4401)의 비트 라인(들) 및 비교기(4403)의 비반전 입력에 결합되고, 이 비교기는 또한 그의 반전 입력에서 기준 전압 VREF를 받는다. 메모리 셀(들)(4401)은 (예를 들어, 기준 어레이 또는 메인 어레이의 일부로부터의) 단일 셀 또는 복수의 셀일 수 있다.
전술한 바와 같이, 아날로그 신경 메모리 시스템에서 사용되는 각각의 비휘발성 또는 휘발성 메모리 셀은 플로팅 게이트에서 매우 특정적이고 정확한 양의 전하를, 즉 전자들의 수를 보유하도록 소거 및 프로그래밍되어야 한다. 예를 들어, 각 플로팅 게이트는 N개의 상이한 값 중 하나를 유지해야 하며, N은 각 셀에 의해 표시될 수 있는 상이한 가중치의 수이다. N의 예는 16, 32, 64, 128 및 256을 포함한다. 교정 방법(4450)은 메모리 셀(4401)에 저장될 수 있는 N개의 상이한 값들 각각에 대해 수행된다. 교정 방법(4450)이 수행될 때마다, 메모리 셀(4401)은 10nA의 판독 전류와 같은, N개의 상이한 값 중 1개로 프로그래밍(튜닝)된다(단계 4451).
메모리 셀(4401)의 제어 게이트의 전압은 교정 방법(4450)에 따라 측정된다. 비트 라인 전류는 전류 디지털-아날로그 변환기(4402)에 의해 낮은 전류(예를 들어, 1nA)로부터 높은 전류(예를 들어, 100nA)로 변화되므로, 크기가 증가하는 전류가 인가되고, 비교기(4403)의 출력(비교 출력이라고 지칭)이 모니터링된다. 어느 시점에서, 비교 출력의 값은 변경된다(예를 들어, "0" 으로부터 "1" 로)(단계 4452). 즉, 전류 디지털-아날로그 변환기(4402)에 의한 비트 라인 전류가 변경되기 전에 플립이 발생하면, 메모리 셀(4401)의 제어 게이트 전압이 측정되고 그 제어 게이트 전압이 룩업 테이블(4470)에 저장될 수 있다. 이 방법은 메모리 셀에 저장될 수 있는 다른 N개의 가능한 값들에 대해 반복된다. 두 개 이상의 셀을 사용하는 경우, 그에 따라 전류 DAC(IDAC)에 의해 제공되는 전류들은 적절히 조정되어야 하는데, 예를 들어, 셀당 1nA의 4개 셀들이 사용되는 경우(예를 들어 평균화를 위해), IDAC 전류는 4nA가 된다. 결과적인 CG 전압은 룩업 테이블(4470)에 저장된다(단계 4454).
다른 실시형태에서는, 룩업 테이블(4470)이 예상 동작 범위 내의 복수의 온도에 대한 값들을 포함하도록 더 확장되므로, 룩업 테이블(4470)은 온도 바이어스 룩업 테이블(TBLUT)이 된다.
예를 들어, N=128(8비트 입력 값에 대응하는)인 상황에서, 등가 전류 범위는 1nA 내지 128nA일 수 있으며 각각의 1nA 증분은 N 레벨들 중 하나와 관련된다. 그런 다음, 교정 회로(4400) 및 교정 방법(4450)이 사용되어 복수의 상이한 온도들(예를 들어, -40C, -39C, ...0C, ..25C, 26C, ..., 85C)의 각각에 대해 모든 128 레벨들에 대한 CG 전압들로 룩업 테이블(4470)을 채운다. 예를 들어, N=128에 대해 10개의 상이한 온도 포인트들을 사용하는 경우, 룩업 테이블은 1280개의 값들(10개의 상이한 온도들의 각각에 대해 128개의 레벨들의 각각에 대해 하나의 값)로 채워진다.
다른 교정 방법에서는, 복수의 셀이 사용되어 어레이의 샘플들을 나타내는 (가중치들) 전류들을 저장한다. 그런 다음 IDAC(4402)로부터의 바이어스 전류가 인가되고 복수의 셀들과 그들의 대응하는 저장된 값(가중치들)의 각각에 대해 위와 같이 CG가 추출된다. 이것은 온도에 따라 결정되고 룩업 테이블에 저장될 수 있으므로, 온도에 따른 CG 바이어스 변화들이 룩업 테이블로부터 상이한 저장 값들 (가중치들)에 대해 호출되어 해당 셀에 대해 저장된 값에 기초하여 어레이에 인가될 수 있다. 선택적으로, 이것은 실시간으로 수행될 수 있으며 동작 중에 어레이의 다양한 셀들에 바이어스들이 인가될 수 있다.
다른 실시형태에서는, 도 44의 교정 회로(4400) 및 교정 방법(4450)이 복수의 상이한 온도들의 각각에 대해 각각의 N 레벨들에 대해 인가될 CG 전압의 평균을 계산하는 데 사용될 수 있다. 예를 들어, 각각의 N 값 및 각각의 온도에 대해, M 개의 상이한 판독이 행해지고 평균 판독 값이 룩업 테이블(4470)에 저장될 수 있다. 예를 들어, N=128에 대해 10개의 상이한 온도 포인트들을 사용하는 경우, 1280*M의 판독이 행해질 것이며, 1280개의 상이한 평균값들이 룩업 테이블(4470)에 저장된다.
다른 실시형태에서는, 복수의 온도들 각각에 대해 모든 N개의 가능한 값들에 대한 측정을 행하는 대신, 더 작은 가능한 값들의 세트(예를 들어, 모든 N개의 가능한 값들 대신에 N개의 가능한 값들 4개)에 대한 측정이 행해질 수 있고, 이러한 작은 가능한 값들의 세트의 평균값들이 사용된 특정 온도에 대해 룩업 테이블(4470)에 저장될 수 있다. 따라서, 10개의 상이한 온도들을 사용하는 경우, 룩업 테이블(4470)은 10개의 값들(10개의 상이한 온도들 각각에 대해 하나의 값)만을 포함하게 된다.
다른 실시형태에서는, EG 바이어스 전압도 변화된다. CG 전압의 측정은 상이한 EG 바이어스 전압에서 수행되고, CG 및 EG 바이어스는 룩업 테이블(4470)에 저장된다.
도 45는 n+1 개의 상이한 메모리 셀들에서 수행된 측정에 기초하여 평균 바이어스를 결정하기 위한 바이어스 평균 회로(4500)를 도시한다. 교정 방법(4450)은 n+1 개의 상이한 셀들에 대해 수행되며, 각각의 셀은 그 셀에 대한 "최적" 또는 평균 바이어스 전압을 나타내는 전압(예를 들어, VCG)을 생성한다.
각각의 셀은 여기서 측정 블록들(4501-0 내지 4501-n)로 도시된 측정 블록들(4501)과 연관된다. 각 측정 블록(4501)은 동일하다. 측정 블록(4501-0)은 연산 증폭기(4502-0), 전류 미러로서 배열된 PMOS 트랜지스터들(4503-0 및 4504), NMOS 트랜지스터(4505-0), 및 저항기(4506-0)를 포함한다. 다른 측정 블록들(4501)은 동일한 컴포넌트를 포함한다. 동작 중, 각각의 측정 블록(4501)은 그의 PMOS 트랜지스터(4504)를 통해 미러링된 전류를 제공하며, 이 미러링된 전류는 저항기(4507)의 상부 단자에서 합산되는데, 저항기(4507)는 가변 저항기일 수 있다. 출력 VOUT은 (저항기(4507)의 값을 저항기(4506)의 값으로 나눈 적정 비율로) 블록(4501)에 입력으로 제공되는 다양한 전압들의 평균이다. 출력 전압(VOUT) = (R-4507/R-4506) * (VIN0에서 VINn까지의 합)이며, 예를 들어, n = 3이고 R-4507/R4506 = 1/4인 경우, VOUT = (1/4) * (VIN0+VIN1+VIN2+VIN3) = 4개 입력 전압(VIN0에서 VIN3까지)의 평균 전압이다.
출력 전압 VOUT은 신경망 메모리 어레이에 있는 하나 이상의 셀들의 제어 게이트 단자에 바이어스로 인가될 수 있다.
도 46a는 바이어스 생성 회로(4600)를 도시한다. 바이어스 생성 블록(4600)은 메모리 셀(4601)의 비트 라인과 비교기(4603)의 비반전 입력에 결합된 전류 디지털-아날로그 변환기(4602)를 포함하고, 비교기(4603)는 또한 반전 입력으로 기준 전압(VREF)(여기서 VREF는 도 44에 도시된 VREF와 동일함)을 받는다. 행 레지스터(4604)는 디지털 값인 DRIN[0:7]을 IDAX(4602)에 제공하여, 이 디지털 값을 셀(4601)의 비트 라인 단자에 인가되는 전류로 변환되게 한다. 스위치(4605)가 폐쇄되면 외부 전압(VIN)이 CG 단자에 인가된다. 스위치(4606)가 폐쇄되고 커패시터(4607)가 CG와 동일한 전압으로 충전된다. 비교기(4603)의 출력이 변경되면, 스위치(4606)가 개방된다. 이 시점에서 커패시터(4607)의 전압은 비교기(4603)의 출력을 변화시킨 CG 전압을 나타내는데, 이는 결정된 바이어스 전압이다. 즉, 스위치(4606) 및 커패시터(4607)는 샘플-앤드-홀드 회로를 형성한다. 이 전압은 버퍼(4608)에 의해 일정하게 유지된 다음 어레이의 제어 게이트들에 인가된다. 메모리 셀(4601)은 하위 임계값 영역 또는 선형 영역에서 동작될 수 있다.
도 46b는 바이어스 생성 블록(4650)을 도시한 것으로, 메모리 셀(4651)이 CG 바이어스를 생성하기 위해 다이오드 연결되고 비교기를 사용하지 않는다는 점을 제외하면 바이어스 생성 블록(4600)과 유사하다. 바이어스 생성 블록(4650)은 도 44a의 룩업 테이블(4470)을 위한 CG 바이어스 값을 생성하는 데 사용될 수 있다. 바이어스 생성 블록(4650)은 메모리 셀(4651)의 비트 라인에 결합되는 전류 디지털-아날로그 변환기(4652)를 포함한다. 전류 디지털-아날로그 변환기(4652)는 행 레지스터(row register)(4654)에 의해 제어된다. 셀(4651)의 제어 게이트 전압은 스위치(4656)에 의해 샘플링되고, 이 전압으로 커패시터(4657)가 충전되며, 커패시터(4657)는 스위치(4656)가 개방된 후 그 전압을 유지한다. 즉, 스위치(4656) 및 커패시터(4657)는 샘플-앤드-홀드 회로를 형성한다. 이 전압은 버퍼(4658)에 의해 일정하게 유지된 다음 어레이의 제어 게이트들에 인가된다. 메모리 셀(4651)은 하위 임계값 영역 또는 선형 영역에서 동작될 수 있다. 바이어스 생성 블록(4650)은 행 레지스터(4654)로부터의 입력 디지털 값(DRIN[0:7])을 어레이에 인가될 등가 CG 전압으로 변환한다.
도 46c는 레벨 시프터(4685)를 추가한다는 점을 제외하면 바이어스 생성 블록(4650)과 유사한 바이어스 생성 블록(4680)을 도시한다. 바이어스 생성 블록(4680)은 도 44a의 룩업 테이블(4470)을 위한 CG 바이어스 값을 생성하는 데 사용될 수 있다. 바이어스 생성 블록(4680)은 메모리 셀(4651)의 비트 라인에 결합되는 전류 디지털-아날로그 변환기(4652)를 포함한다. 전류 디지털-아날로그 변환기(4652)는 행 레지스터(4654)에 의해 제어된다. 레벨 시프터(4685)는 전류 디지털-아날로그 변환기(4652)의 출력과 메모리 셀(4651)의 제어 게이트 단자 사이에 배치되고, 예를 들어, 바이어스 전압(예를 들어, 0.2V 내지 0.5V) 만큼 전압을 시프트한다. 셀(4651)의 제어 게이트 전압은 스위치(4656)에 의해 샘플링되고, 이 전압으로 커패시터(4657)가 충전되며, 커패시터(4657)는 스위치(4656)가 개방된 후 그 전압을 유지한다. 즉, 스위치(4656) 및 커패시터(4657)는 샘플-앤드-홀드 회로를 형성한다. 이 전압은 버퍼(4658)에 의해 일정하게 유지된 다음 어레이의 제어 게이트들에 인가된다. 메모리 셀(4651)은 하위 임계값 영역 또는 선형 영역에서 동작될 수 있다. 바이어스 생성 블록(4650)은 행 레지스터(4654)로부터의 입력 디지털 값(DRIN[0:7])을 어레이에 인가될 등가 CG 전압으로 변환한다.
도 47은 신경망 내의 특정 뉴런에서 수행되는 신경망 뉴런 방법(4700)을 도시한다. 단계 4701에서는, 어레이의 특정 관심 뉴런에 공칭 바이어스가 인가된다. 이 방법은 사용 빈도에 따라 더 중요하다고 판단되는 뉴런에 대해 수행될 수 있다. 단계 4702 내지 단계 4706은 도 36의 단계 3602 내지 단계 3606과 동일하다.
도 48은 신경망 방법(4800)을 도시한다. 방법(4800)은 제1 메모리 셀 세트와 관련된 동작 온도를 감지하는 단계(단계 4801); 감지된 동작 온도에 기초하여 룩업 테이블에서 바이어스를 결정하는 단계(단계 4802); 결정된 바이어스를 제1 메모리 셀 세트의 단자들에 인가하는 단계(단계 4803); 및 제1 메모리 셀 세트에 대한 판독 동작을 수행하는 단계(단계 4804)를 포함한다. 선택적으로, 제1 메모리 셀 세트는 어레이의 모든 셀을 포함할 수 있다. 선택적으로, 제1 메모리 셀 세트는 모든 어레이들의 모든 셀을 포함할 수 있다. 선택적으로, 방법(4800)은 제2 메모리 셀 세트와 관련된 동작 온도를 감지하는 단계(단계 4805); 제2 감지된 동작 온도에 기초하여 룩업 테이블에서 바이어스를 결정하는 단계(단계 4806); 결정된 바이어스를 제2 메모리 셀 세트의 단자들에 인가하는 단계(단계 4807); 및 제2 메모리 셀 세트에 대한 판독 동작을 수행하는 단계(단계 4808)를 더 포함한다.
도 49는 신경망 동작 방법(4900)을 도시하는데, 이는 바이어스 교정이 실시간으로 수행되는 것을 제외하고는 신경망 동작 방법(4800)과 유사하다. 신경망 동작 방법(4900)은 제1 메모리 셀 세트와 관련된 동작 온도를 감지하는 단계(단계 4901); 감지된 동작 온도에 기초하여 바이어스를 결정하는 단계(단계 4902); 결정된 바이어스를 제1 메모리 셀 세트의 단자들에 인가하는 단계(단계 4903); 및 제1 메모리 셀 세트에 대한 판독 동작을 수행하는 단계(단계 4904)를 포함한다. 선택적으로, 제1 메모리 셀 세트는 어레이의 모든 셀을 포함할 수 있다. 선택적으로, 제1 메모리 셀 세트는 모든 어레이들의 모든 셀을 포함할 수 있다. 선택적으로, 방법(4900)은 제2 메모리 셀 세트와 관련된 동작 온도를 감지하는 단계(단계 4905); 제2 감지된 동작 온도에 기초하여 바이어스를 결정하는 단계(단계 4906); 결정된 바이어스를 제2 메모리 셀 세트의 단자들에 인가하는 단계(단계 4907); 및 제2 메모리 셀 세트에 대한 판독 동작을 수행하는 단계(단계 4908)를 더 포함한다.
도 50은 하나 이상의 메모리 셀들을 프로그래밍하는 단계(단계 5001); 프로그래밍된 메모리 셀에 복수의 전류들을 인가하는 단계(단계 5002); 각각의 프로그래밍된 메모리 셀의 제어 게이트 단자의 전압을 측정하고, 그 전압을 프로그래밍된 메모리 셀에 저장된 값을 저장하는 셀에 대한 결정 바이어스로서 저장하는 단계(단계 5003); 메모리 셀 세트에 저장될 값들을 저장하는 셀에 대해 결정된 바이어스를 이용하여 메모리 셀 세트의 단자들에 바이어스 전압들을 인가하는 단계(단계 5004); 및 메모리 셀 세트에 대한 판독 동작을 수행하는 단계(단계 5005)를 포함하는 신경망 방법(5000)을 도시한다.
본원에서 사용된 바와 같이, 용어들 "~ 위에" 및 "~ 상에" 둘 모두는 "직접적으로 ~ 상에"(어떠한 중간 재료들, 요소들 또는 공간도 사이에 배치되지 않음)와 "간접적으로 ~ 상에"(중간 재료들, 요소들 또는 공간이 사이에 배치됨)를 포괄적으로 포함한다는 것에 유의하여야 한다. 마찬가지로, 용어 "인접한"은 "직접적으로 인접한"(어떠한 중간 재료들, 요소들 또는 공간도 사이에 배치되지 않음)과 "간접적으로 인접한"(중간 재료들, 요소들 또는 공간이 사이에 배치됨)을 포함하고, "~에 실장되는"은 "직접적으로 ~에 실장되는"(어떠한 중간 재료들, 요소들 또는 공간도 사이에 배치되지 않음)과 "간접적으로 ~에 실장되는"(중간 재료들, 요소들 또는 공간이 사이에 배치됨)을 포함하고, "전기적으로 결합되는"은 "직접적으로 ~에 전기적으로 결합되는"(요소들을 함께 전기적으로 접속시키는 어떠한 중간 재료들 또는 요소들도 사이에 없음)과 "간접적으로 ~에 전기적으로 결합되는"(요소들을 함께 전기적으로 접속시키는 중간 재료들 또는 요소들이 사이에 있음)을 포함한다. 예를 들어, "기판 위에" 요소를 형성하는 것은 어떠한 중간 재료들/요소들도 사이에 갖지 않고서 직접적으로 기판 상에 요소를 형성하는 것뿐만 아니라, 하나 이상의 중간 재료들/요소들을 사이에 갖고서 간접적으로 기판 상에 요소를 형성하는 것을 포함할 수 있다.

Claims (32)

  1. 신경망 방법으로서,
    메모리 셀 세트와 관련된 동작 온도를 감지하는 단계;
    상기 감지된 동작 온도에 기초하여 룩업 테이블에서 바이어스를 결정하는 단계;
    상기 결정된 바이어스를 상기 메모리 셀 세트의 단자들에 인가하는 단계; 및
    상기 메모리 셀 세트에 대한 판독 동작을 수행하는 단계를 포함하는 신경망 방법.
  2. 제1항에 있어서, 상기 바이어스는 메모리 셀로부터 생성되는, 신경망 방법.
  3. 제1항에 있어서, 상기 메모리 셀 세트는 상기 신경망의 뉴런을 포함하는, 신경망 방법.
  4. 제1항에 있어서, 상기 메모리 셀 세트는 제1 어레이에 위치하는, 신경망 방법.
  5. 제4항에 있어서,
    제2 메모리 셀 세트와 관련된 제2 동작 온도를 감지하는 단계;
    상기 제2 동작 온도에 기초하여 룩업 테이블에서 제2 바이어스를 결정하는 단계;
    상기 결정된 제2 바이어스를 상기 제2 메모리 셀 세트 의 단자들에 인가하는 단계 - 상기 제2 메모리 셀 세트는 상기 제1 어레이와는 상이한 제2 어레이에 위치함 -; 및
    상기 제2 메모리 셀 세트에 대한 판독 동작을 수행하는 단계를 더 포함하는 신경망 방법.
  6. 제1항에 있어서, 상기 메모리 셀 세트는 상기 신경망의 단일 층에 포함되는, 신경망 방법.
  7. 제1항에 있어서, 상기 메모리 셀 세트는 상기 신경망의 복수의 어레이들 내의 모든 메모리 셀들을 포함하는, 신경망 방법.
  8. 제1항에 있어서, 상기 메모리 셀 세트는 상기 신경망의 복수의 어레이들 중 하나 이상의 선택된 어레이들 내의 모든 메모리 셀들을 포함하는, 신경망 방법.
  9. 제1항에 있어서, 상기 메모리 셀 세트는 분리형 게이트 플래시 메모리 셀들을 포함하는, 신경망 방법.
  10. 제1항에 있어서, 상기 메모리 셀 세트는 적층형 게이트 플래시 메모리 셀들을 포함하는, 신경망 방법.
  11. 바이어스 룩업 테이블을 채우는 방법으로서,
    N개의 값들 중 임의의 값을 저장하되 N개의 값들 중 1개를 저장할 수 있는 메모리 셀을 프로그래밍하는 단계;
    상기 프로그래밍된 메모리 셀의 비트 라인에 크기가 증가하는 일련의 전류들을 인가하는 단계;
    상기 비트 라인의 전압을 기준 전압과 비교하여 비교 출력을 생성하는 단계;
    상기 비교 출력이 값을 변경하면, 상기 메모리 셀의 제어 게이트 단자의 전압을 측정하고 상기 전압을 룩업 테이블에 저장하는 단계를 포함하는, 바이어스 룩업 테이블을 채우는 방법.
  12. 제11항에 있어서, 상기 메모리 어레이는 비휘발성 메모리 셀들을 포함하는, 바이어스 룩업 테이블을 채우는 방법.
  13. 제11항에 있어서, 상기 메모리 어레이는 휘발성 메모리 셀들을 포함하는, 바이어스 룩업 테이블을 채우는 방법.
  14. 제11항에 있어서, 상기 제어 게이트 단자의 전압은 샘플-앤-홀드 회로를 사용하여 측정되는, 바이어스 룩업 테이블을 채우는 방법.
  15. 신경망 방법으로서,
    동작 온도를 감지하는 단계;
    상기 감지된 동작 온도를 디지털 비트들로 표시하는 단계; 및
    출력 뉴런 전류를 전압으로 변환하는 단계; 및
    상기 전압을 상기 디지털 비트들에 대한 응답으로 스케일링하는 단계를 포함하는 신경망 방법.
  16. 바이어스를 생성하기 위한 전압 평균 회로로서,
    출력 노드와 접지 사이에 결합된 가변 저항기; 및
    각각이 각각의 입력 전압을 전류로 변환하고 그 전류를 상기 출력 노드로 미러링하는 복수의 측정 블록들을 포함하고,
    상기 출력 노드는 상기 복수의 측정 블록들에 대한 상기 입력 전압들의 평균과 동일한 바이어스를 제공하는, 전압 평균 회로.
  17. 제16항에 있어서, 상기 출력 노드의 전압은 각각의 측정 블록에 의해 제공되는 값의 합과 같고, 상기 값은, 상기 측정 블록이 받은 입력 전압에, 상기 가변 저항기를 상기 측정 블록들의 저항기들의 합으로 나눈 비율을 곱하고 상기 각각의 입력 전압들의 합을 곱한 것을 포함하는, 전압 평균 회로.
  18. 제17항에 있어서, 상기 출력 전압은 상기 신경망 메모리 어레이에 있는 하나 이상의 셀들의 제어 게이트 단자에 인가되는, 전압 평균 회로.
  19. 신경망 방법으로서,
    메모리 셀 세트와 관련된 동작 온도를 감지하는 단계;
    상기 감지된 동작 온도에 기초하여 바이어스를 결정하는 단계;
    상기 결정된 바이어스를 상기 메모리 셀 세트의 단자들에 인가하는 단계; 및
    상기 메모리 셀 세트에 대한 판독 동작을 수행하는 단계를 포함하는 신경망 방법.
  20. 제19항에 있어서, 상기 메모리 셀 세트는 상기 신경망의 뉴런을 포함하는, 신경망 방법.
  21. 제19항에 있어서, 상기 바이어스는 메모리 셀로부터 생성되는, 신경망 방법.
  22. 메모리 어레이의 바이어스를 생성하는 방법으로서,
    값을 저장하도록 메모리 셀을 프로그래밍하는 단계;
    상기 프로그래밍된 메모리 셀의 비트 라인에 크기가 증가하는 일련의 전류들을 인가하는 단계; 및
    상기 메모리 셀의 제어 게이트 단자의 전압을 측정하여 상기 바이어스를 결정하는 단계를 포함하는, 메모리 어레이의 바이어스를 생성하는 방법.
  23. 제22항에 있어서,
    상기 결정된 바이어스를 저장하는 단계를 더 포함하는, 메모리 어레이의 바이어스를 생성하는 방법.
  24. 제23항에 있어서,
    상기 바이어스를 메모리 셀 어레이의 하나 이상의 메모리 셀에 상기 하나 이상의 메모리 셀에 대한 동작 동안 인가하는 단계를 더 포함하는, 메모리 어레이의 바이어스를 생성하는 방법.
  25. 제24항에 있어서, 상기 어레이는 아날로그 신경 메모리 어레이인, 메모리 어레이의 바이어스를 생성하는 방법.
  26. 제23항에 있어서,
    상기 프로그래밍된 메모리 셀의 복수의 상이한 동작 온도에 대해 상기 프로그래밍 단계, 인가 단계, 측정 단계, 및 저장 단계를 수행하는 것을 포함하는, 메모리 어레이의 바이어스를 생성하는 방법.
  27. 신경망에서 메모리 어레이의 바이어스를 실시간으로 결정하는 방법으로서,
    값을 저장하도록 메모리 셀을 프로그래밍하는 단계;
    상기 프로그래밍된 메모리 셀의 비트 라인에 미리 결정된 전류를 인가하는 단계; 및
    상기 메모리 셀의 제어 게이트 단자의 전압을 측정하여 상기 바이어스를 결정하는 단계를 포함하는, 신경망에서 메모리 어레이의 바이어스를 실시간으로 결정하는 방법.
  28. 제27항에 있어서,
    상기 바이어스를 저장하는 단계를 더 포함하는, 신경망에서 메모리 어레이의 바이어스를 실시간으로 결정하는 방법.
  29. 제28항에 있어서,
    상기 바이어스를 메모리 셀 어레이의 하나 이상의 메모리 셀에 상기 하나 이상의 메모리 셀에 대한 동작 동안 인가하는 단계를 더 포함하는, 신경망에서 메모리 어레이의 바이어스를 실시간으로 결정하는 방법.
  30. 제29항에 있어서, 상기 어레이는 아날로그 신경 메모리 어레이인, 신경망에서 메모리 어레이의 바이어스를 실시간으로 결정하는 방법.
  31. 제28항에 있어서,
    상기 프로그래밍된 메모리 셀의 복수의 상이한 동작 온도에 대해 상기 프로그래밍 단계, 인가 단계, 측정 단계, 및 저장 단계를 수행하는 것을 포함하는, 신경망에서 메모리 어레이의 바이어스를 실시간으로 결정하는 방법.
  32. 신경망 방법으로서,
    메모리 셀을 프로그래밍하는 단계;
    상기 프로그래밍된 메모리 셀의 비트 라인에 크기가 증가하는 일련의 전류들을 인가하는 단계;
    상기 비트 라인의 전압을 기준 전압과 비교하여 비교 출력을 생성하는 단계;
    상기 비교 출력이 값을 변경한 경우, 상기 메모리 셀의 제어 게이트 단자의 전압을 측정하고 상기 전압을 결정된 바이어스로 저장하는 단계;
    상기 결정된 바이어스를 상기 메모리 셀 세트의 단자들에 인가하는 단계; 및
    상기 메모리 셀 세트에 대한 판독 동작을 수행하는 단계를 포함하는 신경망 방법.
KR1020247011823A 2021-11-12 2022-01-27 신경망에서 하나 이상의 메모리 셀에 인가할 바이어스 전압 결정 KR20240052994A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163279028P 2021-11-12 2021-11-12
US63/279,028 2021-11-12
US17/585,452 US20230154528A1 (en) 2021-11-12 2022-01-26 Determination of a bias voltage to apply to one or more memory cells in a neural network
US17/585,452 2022-01-26
PCT/US2022/014166 WO2023086117A1 (en) 2021-11-12 2022-01-27 Determination of a bias voltage to apply to one or more memory cells in a neural network

Publications (1)

Publication Number Publication Date
KR20240052994A true KR20240052994A (ko) 2024-04-23

Family

ID=80787513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247011823A KR20240052994A (ko) 2021-11-12 2022-01-27 신경망에서 하나 이상의 메모리 셀에 인가할 바이어스 전압 결정

Country Status (4)

Country Link
US (2) US20240062813A1 (ko)
EP (1) EP4385015A1 (ko)
KR (1) KR20240052994A (ko)
WO (1) WO2023086117A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5029130A (en) 1990-01-22 1991-07-02 Silicon Storage Technology, Inc. Single transistor non-valatile electrically alterable semiconductor memory device
US6747310B2 (en) 2002-10-07 2004-06-08 Actrans System Inc. Flash memory cells with separated self-aligned select and erase gates, and process of fabrication
KR101868332B1 (ko) * 2010-11-25 2018-06-20 삼성전자주식회사 플래시 메모리 장치 및 그것을 포함한 데이터 저장 장치
US10748630B2 (en) 2017-11-29 2020-08-18 Silicon Storage Technology, Inc. High precision and highly efficient tuning mechanisms and algorithms for analog neuromorphic memory in artificial neural networks
WO2021011923A1 (en) * 2019-07-17 2021-01-21 Mentium Technologies Inc. Flash memory arrays for computation having digital input and analog output

Also Published As

Publication number Publication date
US20240062813A1 (en) 2024-02-22
EP4385015A1 (en) 2024-06-19
TW202336748A (zh) 2023-09-16
WO2023086117A1 (en) 2023-05-19
US20240062812A1 (en) 2024-02-22

Similar Documents

Publication Publication Date Title
KR102657705B1 (ko) 딥 러닝 인공 신경 네트워크 내의 아날로그 신경 메모리를 위한 출력 어레이 뉴런 변환 및 교정
JP7329151B2 (ja) 人工ニューラルネットワーク内のアナログニューラルメモリにおけるデータドリフトを補償するための回路
TW202341014A (zh) 深度學習人工神經網路中電性參數的校準
KR20230110360A (ko) 딥 러닝 인공 신경망에서의 아날로그 신경 메모리를위한 디지털 출력 메케니즘
KR20220160078A (ko) 소스 라인 풀다운 메커니즘을 갖는 인공 신경망 내의 아날로그 신경 메모리 어레이
KR20240052994A (ko) 신경망에서 하나 이상의 메모리 셀에 인가할 바이어스 전압 결정
US20230154528A1 (en) Determination of a bias voltage to apply to one or more memory cells in a neural network
TWI843232B (zh) 決定施加至神經網路中的一或多個記憶體胞元的偏壓
TWI842636B (zh) 深度學習人工神經網路中類比神經記憶體的輸出電路
TWI822198B (zh) 深度學習人工神經網路中類比神經記憶體的輸出電路
US20230306246A1 (en) Calibration of electrical parameters in a deep learning artificial neural network
US20240104164A1 (en) Verification method and system in artificial neural network array
US20230048411A1 (en) Input circuitry for analog neural memory in a deep learning artificial neural network
US20220374161A1 (en) Output circuit for analog neural memory in a deep learning artificial neural network
CN118043889A (zh) 要施加到神经网络中的一个或多个存储器单元的偏置电压的确定
KR20240026489A (ko) 신경 메모리 가중치 데이터를 아날로그 형태 또는 디지털 형태로 저장하도록 구성 가능한 하이브리드 메모리 시스템
TW202343451A (zh) 包含i-v斜率組構的參考陣列之人工神經網路
WO2024063792A1 (en) Verification method and system in artificial neural network array
WO2023154075A1 (en) Calibration of electrical parameters in a deep learning artificial neural network
WO2022245384A1 (en) Output circuit for analog neural memory in a deep learning artificial neural network
WO2023195999A1 (en) Artificial neural network comprising reference array for i-v slope configuration
TW202422557A (zh) 人工神經網路陣列中的驗證方法及系統
CN117813653A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输出电路
CN117716427A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输入电路