JP2024504003A - 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用の入力及びデジタル出力機構 - Google Patents
深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用の入力及びデジタル出力機構 Download PDFInfo
- Publication number
- JP2024504003A JP2024504003A JP2023538012A JP2023538012A JP2024504003A JP 2024504003 A JP2024504003 A JP 2024504003A JP 2023538012 A JP2023538012 A JP 2023538012A JP 2023538012 A JP2023538012 A JP 2023538012A JP 2024504003 A JP2024504003 A JP 2024504003A
- Authority
- JP
- Japan
- Prior art keywords
- input
- output
- memory cell
- cell
- bit
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 234
- 230000001537 neural effect Effects 0.000 title claims description 11
- 238000013528 artificial neural network Methods 0.000 title abstract description 32
- 238000013135 deep learning Methods 0.000 title description 5
- 230000007246 mechanism Effects 0.000 title description 4
- 238000000034 method Methods 0.000 claims description 105
- 230000004044 response Effects 0.000 claims description 20
- 239000013598 vector Substances 0.000 abstract description 63
- 239000011159 matrix material Substances 0.000 abstract description 16
- 238000010586 diagram Methods 0.000 abstract description 6
- 210000004027 cell Anatomy 0.000 description 388
- 230000006870 function Effects 0.000 description 46
- 210000002569 neuron Anatomy 0.000 description 38
- 238000003491 array Methods 0.000 description 28
- 210000000225 synapse Anatomy 0.000 description 28
- 230000004913 activation Effects 0.000 description 22
- 239000003990 capacitor Substances 0.000 description 12
- 239000000463 material Substances 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 102100036301 C-C chemokine receptor type 7 Human genes 0.000 description 8
- 101000716065 Homo sapiens C-C chemokine receptor type 7 Proteins 0.000 description 8
- 102100031658 C-X-C chemokine receptor type 5 Human genes 0.000 description 7
- 101000922405 Homo sapiens C-X-C chemokine receptor type 5 Proteins 0.000 description 7
- 210000004205 output neuron Anatomy 0.000 description 7
- 239000000758 substrate Substances 0.000 description 7
- 238000012795 verification Methods 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 6
- 101100406317 Arabidopsis thaliana BCE2 gene Proteins 0.000 description 5
- 101100493897 Arabidopsis thaliana BGLU30 gene Proteins 0.000 description 5
- 101100422614 Arabidopsis thaliana STR15 gene Proteins 0.000 description 5
- 101100063437 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) DIN7 gene Proteins 0.000 description 5
- 101100141327 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) RNR3 gene Proteins 0.000 description 5
- 101150112501 din1 gene Proteins 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 230000000306 recurrent effect Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000006403 short-term memory Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000007787 long-term memory Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 101100063435 Caenorhabditis elegans din-1 gene Proteins 0.000 description 2
- 102100023226 Early growth response protein 1 Human genes 0.000 description 2
- 101001049697 Homo sapiens Early growth response protein 1 Proteins 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012905 input function Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000000946 synaptic effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 101150051404 CGR1 gene Proteins 0.000 description 1
- 101150107986 CGR2 gene Proteins 0.000 description 1
- 101100243090 Candida glabrata (strain ATCC 2001 / CBS 138 / JCM 3761 / NBRC 0622 / NRRL Y-65) PDH1 gene Proteins 0.000 description 1
- 230000005689 Fowler Nordheim tunneling Effects 0.000 description 1
- 101150085452 IPT1 gene Proteins 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 210000003169 central nervous system Anatomy 0.000 description 1
- 101150054999 cgrA gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0408—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
- G11C16/0425—Erasable 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/24—Bit-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/30—Power supply circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2216/00—Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
- G11C2216/02—Structural aspects of erasable programmable read-only memories
- G11C2216/04—Nonvolatile memory cell provided with a separate control gate for erasing the cells, i.e. erase gate, independent of the normal read control gate
Landscapes
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Read Only Memory (AREA)
- Non-Volatile Memory (AREA)
- Semiconductor Memories (AREA)
- Memory System (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
- Feedback Control In General (AREA)
- Networks Using Active Elements (AREA)
- Image Analysis (AREA)
Abstract
人工ニューラルネットワークにおけるベクトル行列乗算(VMM)アレイ内で選択されたメモリセルに記憶された値を読み出し又は検証するための多数の実施形態が開示されている。一実施形態では、入力は、選択されたメモリセルの端子に印加される一連の入力信号をもたらす入力ビットのセットを含み、更に、デジタル化され、入力ビットのセット内の対応する入力ビットのビットロケーションに基づいてシフトされ、選択されたメモリセルに記憶された値を示す出力を生成するために加算される一連の出力信号をもたらす。【選択図】図6
Description
(優先権の主張)
本出願は、2020年12月23日に出願され、「Input and Digital Output Mechanisms for Analog Neural Memory in a Deep Learning Artificial Neural Network」と題された米国特許出願第17/133,395号の優先権を主張し、この米国特許出願は、2020年7月2日に出願され、「Precision Tuning for the Programming of Analog Neural Memory in a Deep Learning Artificial Neural Network」と題された米国特許出願第16/919,697号の一部継続出願であり、この米国特許出願は、2018年12月21日に出願され、「Precision Tuning for the Programming of Analog Neural Memory in a Deep Learning Artificial Neural Network」と題された米国特許出願第16/231,231号の継続出願であり、この米国特許出願は、2018年10月16日に出願され、「Precision Tuning For the Programming Of Analog Neural Memory In A Deep Learning Artificial Neural Network」と題された米国仮特許出願第62/746,470号の優先権を主張し、これらの全ては、参照により本明細書に組み込まれる。
本出願は、2020年12月23日に出願され、「Input and Digital Output Mechanisms for Analog Neural Memory in a Deep Learning Artificial Neural Network」と題された米国特許出願第17/133,395号の優先権を主張し、この米国特許出願は、2020年7月2日に出願され、「Precision Tuning for the Programming of Analog Neural Memory in a Deep Learning Artificial Neural Network」と題された米国特許出願第16/919,697号の一部継続出願であり、この米国特許出願は、2018年12月21日に出願され、「Precision Tuning for the Programming of Analog Neural Memory in a Deep Learning Artificial Neural Network」と題された米国特許出願第16/231,231号の継続出願であり、この米国特許出願は、2018年10月16日に出願され、「Precision Tuning For the Programming Of Analog Neural Memory In A Deep Learning Artificial Neural Network」と題された米国仮特許出願第62/746,470号の優先権を主張し、これらの全ては、参照により本明細書に組み込まれる。
(発明の分野)
人工ニューラルネットワークにおけるベクトル行列乗算(vector-by-matrix multiplication、VMM)アレイ内の不揮発性メモリセルを読み出し又は検証するための入力及び出力機構の多数の実施形態が開示される。
人工ニューラルネットワークにおけるベクトル行列乗算(vector-by-matrix multiplication、VMM)アレイ内の不揮発性メモリセルを読み出し又は検証するための入力及び出力機構の多数の実施形態が開示される。
人工ニューラルネットワークは、生物学的ニューラルネットワーク(動物の中枢神経系、特に脳)を模倣しており、多数の入力に依存し得、かつ、一般的に未知である関数を推定する又は近似するために使用される。人工ニューラルネットワークは、概して、お互いの間でメッセージを交換する相互接続した「ニューロン」の層を含む。
図1は人工ニューラルネットワークを示しており、図中、円は、入力又はニューロンの層を表す。接続(シナプスと呼ばれる)は、矢印によって表され、経験に基づいてチューニングされ得る数値の重みを有する。これにより、ニューラルネットワークは入力に適応し、学習可能になる。典型的には、ニューラルネットワークは、複数の入力の層を含む。典型的には、1つ以上のニューロンの中間層、及びニューラルネットワークの出力を提供するニューロンの出力層が存在する。各レベルでニューロンは、シナプスから受信したデータに基づいて個々に又は集合的に決定を行う。
高性能情報処理用の人工ニューラルネットワークの開発における主要な課題のうちの1つは、適切なハードウェア技術の欠如である。実際には、実用ニューラルネットワークは、非常に多数のシナプスに依拠しており、これによりニューロン間の高い接続性、すなわち、非常に高度な計算処理の並列化が可能となる。原理的には、このような複雑性は、デジタルスーパーコンピュータ又は専用グラフィックプロセッシングユニットクラスタによって実現が可能である。しかしながら、高コストに加え、これらのアプローチはまた、生物学的ネットワークが主として低精度のアナログ計算を実施するのではるかに少ないエネルギーしか消費しないのと比較して、エネルギー効率が劣っていることに悩まされている。人工ニューラルネットワークにはCMOSアナログ回路が使用されてきたが、ほとんどのCMOS実装シナプスは、多数のニューロン及びシナプスを前提とすると、嵩高過ぎていた。
出願人は以前に、参照により組み込まれる米国特許出願第15/594,439号において、シナプスとして1つ以上の不揮発性メモリアレイを利用する人工(アナログ)ニューラルネットワークを開示した。不揮発性メモリアレイは、アナログニューロモーフィックメモリとして動作する。ニューラルネットワークデバイスは、第1の複数の入力を受信して、それから第1の複数の出力を生成するように構成されている第1の複数のシナプス、及び第1の複数の出力を受信するように構成された第1の複数のニューロンを含む。第1の複数のシナプスは複数のメモリセルを含み、メモリセルの各々は、半導体基板内に形成された、間にチャネル領域が延在する離間したソース領域及びドレイン領域と、チャネル領域の第1の部分の上方に絶縁されて配設される浮遊ゲートと、チャネル領域の第2の部分の上方に絶縁されて配設される非浮遊ゲートと、を含む。複数のメモリセルの各々は、浮遊ゲートのある個数の電子に対応する重み値を記憶するように構成されている。複数のメモリセルは、第1の複数の入力に、記憶された重み値を乗算して第1の複数の出力を生成するように構成される。
アナログニューロモーフィックメモリシステムに使用される各不揮発性メモリセルは、消去・プログラムに対応して、浮遊ゲート内に電荷、すなわち電子の数、を非常に具体的かつ精確な量で保持しなければならない。例えば、各浮遊ゲートはN個の異なる値のうちの1つを保持しなければならず、ここで、Nは、各セルによって示され得る異なる重みの数である。Nの例としては、16、32、64、128及び256が挙げられる。
1つのVMMの出力はしばしば別のVMMに適用される必要があるので、VMMシステムにおいては、VMMの出力をビットに変換し、入力ビットを別のVMMに適用できることが望ましい。次に、VMMシステムのビット符号化機構をどのようにして最良に実装するかに関する課題が生じる。
必要とされるのは、アナログニューロモーフィックメモリシステムにおいてVMMとの使用に適した入力ビット及び出力ビットを利用する改善されたプログラミング、検証、及び読み出しシステム並びに方法である。
人工ニューラルネットワークにおけるベクトル行列乗算(VMM)アレイ内で選択されたメモリセルに記憶された値を読み出し又は検証するための多数の実施形態が開示されている。一実施形態では、入力は、選択されたメモリセルの端子に印加される一連の入力信号をもたらす入力ビットのセットを含み、更に、デジタル化され、入力ビットのセット内の対応する入力ビットのビットロケーションに基づいてシフトされ、選択されたメモリセルに記憶された値を示す出力を生成するために加算される一連の出力信号をもたらす。
本発明の人工ニューラルネットワークは、CMOS技術及び不揮発性メモリアレイの組み合わせを利用する。
不揮発性メモリセル
不揮発性メモリセル
デジタル不揮発性メモリは、周知である。例えば、参照により本明細書に組み込まれる、米国特許第5,029,130号(「’130号特許」)は、フラッシュメモリセルの一種である、スプリットゲート不揮発性メモリセルのアレイを開示する。このようなメモリセル210を図2に示す。各メモリセル210は、半導体基板12内に形成されたソース領域14及びドレイン領域16を含み、ソース領域14とドレイン領域16との間にはチャネル領域18がある。浮遊ゲート20は、チャネル領域18の第1の部分の上方に絶縁されて形成され(並びに、チャネル領域18の第1の部分の導電性を制御して)、ソース領域14の一部分の上方にかけて形成される。ワード線端子22(典型的には、ワード線に結合される)は、チャネル領域18の第2の部分の上方に絶縁されて配設される、(且つ、チャネル領域18の第2の部分の導電性を制御する)第1の部分と、浮遊ゲート20の上方で上に延在する第2の部分と、を有する。浮遊ゲート20及びワード線端子22は、ゲート酸化物によって基板12から絶縁される。ビット線24はドレイン領域16に結合される。
ワード線端子22に高圧正電圧を加えることによって、メモリセル210に対して消去が行われ(電子が浮遊ゲートから除去される)、これによって、浮遊ゲート20の電子は、浮遊ゲート20からワード線端子22までそれらの間にある絶縁体の中をファウラーノルドハイム(Fowler-Nordheim)トンネリングを介して通過する。
メモリセル210は、ワード線端子22に正電圧、及びソース領域14に正電圧を加えることによってプログラムされる(電子が浮遊ゲートに供給される)。電子電流は、ソース領域14からドレイン領域16に向かって流れることになる。電子は加速し、ワード線端子22と浮遊ゲート20との間の間隙に達すると、加熱される。熱せられた電子の一部は、浮遊ゲート20からの静電引力に起因して、浮遊ゲート20にゲート酸化物を介して注入される。
メモリセル210は、ドレイン領域16及びワード線端子22に正の読み出し電圧を加える(ワード線端子の下方のチャネル領域18の部分をオンにする)ことによって、読み出される。浮遊ゲート20が正に帯電する(すなわち、電子を消去する)と、浮遊ゲート20の下方のチャネル領域18の部分も同様にオンになり、電流はチャネル領域18を流れ、これは、消去された状態つまり「1」の状態として検知される。浮遊ゲート20が負に帯電する(すなわち、電子でプログラムされる)と、浮遊ゲート20の下方のチャネル領域の部分はほとんど又は完全にオフになり、電流はチャネル領域18を流れず(又はほとんど流れず)、これは、プログラムされた状態つまり「0」の状態として検知される。
他の種類のフラッシュメモリセルとして、他のスプリットゲート型メモリセル構成も知られている。例えば、図3は、ソース領域14と、ドレイン領域16と、チャネル領域18の第1の部分の上方にある浮遊ゲート20と、チャネル領域18の第2の部分の上方にある選択ゲート22(典型的には、ワード線、WL、に結合される)と、浮遊ゲート20の上方にある制御ゲート28と、ソース領域14の上方にある消去ゲート30と、を含む4ゲートメモリセル310を示す。この構成は、あらゆる目的のため参照により本明細書に組み込まれる、米国特許第6,747,310号に記載されている。ここで、全てのゲートは、浮遊ゲート20を除いて、非浮遊ゲートであり、つまり、それらは電圧源に電気的に接続される又は接続可能である。プログラミングは、熱せられた電子がチャネル領域18から浮遊ゲート20にその電子自体を注入することによって実行される。消去は、電子が浮遊ゲート20から消去ゲート30へトンネリングすることによって実行される。
図4は、別の種類のフラッシュメモリセルである、3ゲートメモリセル410を示す。メモリセル410は、メモリセル410が別個の制御ゲートを有しないことを除いて、図3のメモリセル310と同一である。(消去ゲートの使用を通じて消去が起こる)消去動作及び読み出し動作は、制御ゲートバイアスが印加されないことを除いて、図3のものと同様である。プログラミング動作もまた、制御ゲートバイアスなしで行われるため、結果として、プログラム動作中は、制御ゲートバイアスの不足を補償するため、より高い電圧がソース線に印加されなければならない。
図5は、別の種類のフラッシュメモリセルである、積層ゲートメモリセル510を示す。メモリセル510は、浮遊ゲート20がチャネル領域18全体の上方に延在し、制御ゲート22(ここでワード線に結合される)が絶縁層(図示せず)によって分離されて浮遊ゲート20の上方に延在することを除いて、図2のメモリセル210と同様である。消去、プログラミング、及び読み出し動作は、メモリセル210について前述したものと同様の方法で動作する。
上記の人工ニューラルネットワークにおける不揮発性メモリセルの種類のうちの1つを含むメモリアレイを利用するために、2つの修正が行われる。第一に、以下に更に説明されるように、アレイ内の他のメモリセルのメモリ状態に悪影響を与えずに各メモリセルを個々にプログラム、消去、及び読み出しできるように線を構成する。第二に、メモリセルの連続(アナログ)プログラミングを提供する。
具体的には、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全に消去された状態から完全にプログラムされた状態へ、独立して、かつ他のメモリセルの異常が最小で、連続的に変えることができる。別の実施形態では、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全にプログラムされた状態から完全に消去された状態へ、及び逆もまた同様に、独立して、かつ他のメモリセルの異常が最小で、連続的に変えることができる。これはつまり、セル記憶がアナログであるか、又は多数の不連続値(16又は64の異なる値など)のうちの1つを最低限記憶することができることを意味し、これにより、メモリアレイ内の全てのセルが非常に精確に、かつ個々にチューニング可能となり、また、メモリアレイが、記憶、及びニューラルネットワークのシナプシスの重みへの微細チューニング調整に対して、理想的なものになる。
不揮発性メモリセルアレイを使用するニューラルネットワーク
不揮発性メモリセルアレイを使用するニューラルネットワーク
図6は、本実施形態の不揮発性メモリアレイを利用するニューラルネットワークの非限定例を概念的に例解する。この例は、顔認識アプリケーション用に不揮発性メモリアレイニューラルネットワークを使用するが、不揮発性メモリアレイベースのニューラルネットワークを使用して他の適切なアプリケーションを実装することも可能である。
S0は入力層であり、この例では、5ビット精度の32×32ピクセルRGB画像である(すなわち、各色R、G、及びBにつき1つずつで3つの32×32ピクセルアレイであり、各ピクセルは5ビット精度である)。入力層S0から層C1に行くシナプスCB1は、一部のインスタンスには異なる重みのセットを適用し、他のインスタンスには共有の重みを適用し、入力画像を3×3ピクセルの重なり合うフィルタ(カーネル)でスキャンし、1ピクセル(又はモデルによっては2ピクセル以上)ずつフィルタをシフトする。具体的には、画像の3×3部分における9ピクセルの値(すなわち、フィルタ又はカーネルと称される)は、シナプスCB1に提供され、そこで、これらの9個の入力値に適切な重みを乗算し、その乗算の出力を合計後、単一の出力値が決定され、特徴マップC1の層のうちの1つのピクセルを生成するためにCB1の第1のシナプスによって与えられる。3×3フィルタは次に、入力層S0内で右側に1ピクセルだけシフトされ(すなわち、3ピクセルの列を右側に追加し、左側で3ピクセルの列をドロップする)、これにより、この新しく位置づけられたフィルタの9ピクセル値はシナプスCB1に提供され、そこでそれらに上記と同じ重みを乗算し、関連するシナプスによって第2の単一の出力値を決定する。このプロセスを、3×3フィルタが入力層S0の32×32ピクセル画像全体にわたって3色全て及び全てのビット(精度値)についてスキャンするまで続ける。プロセスは次に、層C1の特徴マップ全てが計算されるまで、異なる重みのセットを使用して繰り返されて、C1の異なる特徴マップを生成する。
本例では、層C1において、各々30×30ピクセルを有する16個の特徴マップが存在する。各ピクセルは、入力とカーネルとの乗算から抽出された新しい特徴ピクセルであり、したがって、各特徴マップは、二次元アレイであり、したがってこの例では、層C1は、二次元アレイの16層を構成する(本明細書で言及される層及びアレイは、必ずしも物理的関係ではなく論理的な関係であり、すなわち、アレイは必ずしも物理的な二次元アレイに配向されないことに留意されたい)。層C1内の16個の特徴マップの各々は、フィルタスキャンに適用される異なるシナプス重みのセット16個のうちの1つによって生成される。C1特徴マップは全て、境界同定など、同じ画像特徴の異なる態様を対象とすることができる。例えば、第1のマップ(この第1のマップを生成するために使用される全てのスキャンに共有される第1の重みセットを使用して生成される)は、円形エッジを識別することができ、第2のマップ(第1の重みセットと異なる第2の重みセットを使用して生成される)は、長方形エッジ又はある特定の特徴のアスペクト比などを識別することができる。
層C1から層S1へ行く前には、各特徴マップ内の重なり合わずに連続する2×2領域からの値をプールする活性化関数P1(プーリング)が適用される。プーリング関数の目的は、近隣の位置を平均すること(又はmax関数を使用することも可能である)、例えばエッジ位置の依存を低減すること、及び次の段階に行く前にデータサイズを低減することである。層S1において、16個の15×15特徴マップ(すなわち、各々15×15ピクセルの異なるアレイ16個)が存在する。層S1から層C2に行くシナプスCB2は、S1内のマップを4×4フィルタにより1ピクセルのフィルタシフトでスキャンする。層C2において、22個の12×12特徴マップが存在する。層C2から層S2へ行く前には、各特徴マップ内の重なり合わずに連続する2×2領域からの値をプールする活性化関数P2(プーリング)が適用される。層S2において、22個の6×6特徴マップが存在する。層S2から層C3へ行くシナプスCB3では活性化関数(プーリング)が適用され、ここで層C3内の全てのニューロンは、CB3のそれぞれのシナプスを介して層S2内の全てのマップに接続する。層C3において、64個のニューロンが存在する。層C3から出力層S3へと行くシナプスCB4は、C3をS3に完全に接続する、すなわち、層C3内の全てのニューロンは、層S3内の全てのニューロンに接続される。S3における出力は、10個のニューロンを含み、ここで出力が最も高いニューロンが、クラスを決定する。この出力は、例えば、元の画像の内容の同定又は分類(クラス分け)を示すことができる。
シナプスの各層は、不揮発性メモリセルのアレイ又はアレイの一部を使用して実装される。
図7は、その目的のために使用可能なアレイのブロック図である。ベクトル行列乗算(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つの目的を果たす。第一に、不揮発性メモリセルアレイ33は、VMMアレイ32によって使用される重みを記憶する。第二に、不揮発性メモリセルアレイ33は、不揮発性メモリセルアレイ33に格納された重みによって、入力を有効に乗算して、それらを出力線(ソース線又はビット線)ごとに加算して、出力を生成し、この出力は次の層への入力又は最後の層への入力になる。不揮発性メモリセルアレイ33が乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性はなくなり、また、メモリ内の計算により電力効率も良い。
不揮発性メモリセルアレイ33の出力は、不揮発性メモリセルアレイ33の出力を合計してその畳み込み用の単一の値を作成する、差動加算器(加算オペアンプ又は加算カレントミラーなど)38に供給される。差動加算器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変換は、入力VMMアレイ32aの行列乗算器の適切なアナログレベルに入力Inputxをマッピングする関数又はLUT(ルックアップテーブル)を使用することによって行うことができる。入力変換はまた、外部アナログ入力を入力VMMアレイ32aへのマッピングされたアナログ入力に変換するように、アナログ-アナログ(analog to analog、A/A)変換器によって行うこともできる。
入力VMMアレイ32aによって生成された出力は、次に、次のVMMアレイ(隠しレベル1)32bへの入力として提供され、次に、VMMアレイ32bは、入力VMMアレイ(隠しレベル2)32cへの入力として提供される出力を生成する、などとなる。VMMアレイ32の様々な層は、畳み込みニューラルネットワーク(convolutional neural network、CNN)のシナプス及びニューロンの各層として機能する。VMMアレイ32a、32b、32c、32d及び32eはそれぞれスタンドアローンの物理的不揮発性メモリアレイとすることができ、又は複数のVMMアレイは、同じ物理的不揮発性メモリアレイの異なる部分を利用することができ、又は複数のVMMアレイは、同じ物理的不揮発性メモリアレイの重なり合う部分を利用することができる。図8に示される例は、5つの層(32a、32b、32c、32d、32e)、すなわち、1つの入力層(32a)、2つの隠れ層(32b、32c)、及び2つの全接続層(32d、32e)を含む。当業者であれば、これは単なる例示であり、代わりにシステムが2つを超える隠れ層及び2つを超える完全接続層を含み得ることを理解するであろう。
ベクトル行列乗算(VMM)アレイ
ベクトル行列乗算(VMM)アレイ
図9は、図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ900を示す。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のフラッシュメモリは、サブスレッショルド領域で動作するように構成されることが好ましい。
本明細書に記載される不揮発性基準メモリセル及び不揮発性メモリセルは、以下のように弱い反転でバイアスされる:
Ids=Io*e(Vg-Vth)/kVt=w*Io*e(Vg)/kVt
式中、w=e(-Vth)/kVtである。
Ids=Io*e(Vg-Vth)/kVt=w*Io*e(Vg)/kVt
式中、w=e(-Vth)/kVtである。
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流を入力電圧に変換するI-Vログ変換器を使用した場合:
Vg=k*Vt*log[Ids/wp*Io]
式中、wpは、基準又は周辺メモリセルのwである。
Vg=k*Vt*log[Ids/wp*Io]
式中、wpは、基準又は周辺メモリセルのwである。
ベクトルマトリックス乗算器VMMアレイとして使用されるメモリアレイについて、出力電流は以下である:
Iout=wa*Io*e(Vg)/kVt、すなわち
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/kVt
式中、wa=メモリアレイの各メモリセルのwである。
Iout=wa*Io*e(Vg)/kVt、すなわち
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/kVt
式中、wa=メモリアレイの各メモリセルのwである。
ワード線又は制御ゲートは、入力電圧のためのメモリセルの入力として使用することができる。
あるいは、本明細書に記載されたVMMアレイのフラッシュメモリセルは、線形領域で動作するように構成することができる。
Ids=ベータ*(Vgs-Vth)*Vds、ベータ=u*Cox*Wt/L
W=α(Vgs-Vth)
Ids=ベータ*(Vgs-Vth)*Vds、ベータ=u*Cox*Wt/L
W=α(Vgs-Vth)
ワード線又は制御ゲート又はビット線又はソース線は、線形領域内で動作するメモリセルの入力として使用することができる。
I-V線形変換器用に、線形領域で動作するメモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して、入出力電流を入出力電圧に線形変換することができる。
図7のVMMアレイ32のための他の実施形態は、参照により本明細書に組み込まれる米国特許出願第15/826,345号に記載されている。上記出願に記載されているように、ソース線又はビット線は、ニューロン出力(電流和出力)として使用することができる。
図10は、図2に示されるメモリセル210に特に適したニューロンVMMアレイ1000を示し、入力層と次の層との間のシナプスとして利用される。VMMアレイ1000は、不揮発性メモリセルのメモリアレイ1003と、第1の不揮発性基準メモリセルの基準アレイ1001と、第2の不揮発性基準メモリセルの基準アレイ1002と、を含む。アレイの列方向に配置された基準アレイ1001及び1002は、端子BLR0、BLR1、BLR2、及びBLR3に流入する電流入力を電圧入力WL0、WL1、WL2、及びWL3に変換するように機能する。実際には、第1及び第2の不揮発性基準メモリセルは、電流入力が流入する状態で、マルチプレクサ1014(一部のみ示す)を通してダイオード接続される。基準セルは、目標基準レベルにチューニング(例えば、プログラム)される。目標基準レベルは、基準ミニアレイマトリックス(図示せず)によって提供される。
メモリアレイ1003は、2つの目的を果たす。第一に、メモリアレイ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:図10のVMMアレイ1000の動作
表5:図10のVMMアレイ1000の動作
図11は、図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1100を示す。VMMアレイ1100は、不揮発性メモリセルのメモリアレイ1103と、第1の不揮発性基準メモリセルの基準アレイ1101と、第2の不揮発性基準メモリセルの基準アレイ1102と、を含む。基準アレイ1101及び1102は、VMMアレイ1100の行方向に延びる。VMMアレイは、VMMアレイ1100においてワード線が垂直方向に延びることを除いて、VMM1000と同様である。ここで、入力はワード線(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)に提供され、出力は、読み出し動作中にソース線(SL0、SL1)に現れる。各ソース線の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
表6は、VMMアレイ1100の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表6:図11のVMMアレイ1100の動作
表6:図11のVMMアレイ1100の動作
図12は、図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1200を示す。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つの目的を果たす。第一に、メモリアレイ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:図12のVMMアレイ1200の動作
表7:図12のVMMアレイ1200の動作
図13は、図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1300を示す。VMMアレイ1300は、不揮発性メモリセルのメモリアレイ1303と、基準アレイ1301又は第1の不揮発性基準メモリセルと、第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:図13のVMMアレイ1300の動作
長・短期メモリ
表8:図13のVMMアレイ1300の動作
先行技術は、長・短期メモリ(long short-term memory、LSTM)として知られる概念を含む。LSTMユニットは、しばしば、ニューラルネットワーク内で使用される。LSTMによって、ニューラルネットワークは所定の任意の期間にわたって情報を記憶し、後続の動作においてその情報を使用することができる。従来のLSTMユニットは、セル、入力ゲート、出力ゲート、及び忘却ゲートを含む。3つのゲートは、セル内及びセル外への情報の流れ、及び情報がLSTM内で記憶される期間を調節する。VMMは、LSTMユニットにおいて特に有用である。
図14は、例示的なLSTM1400を示す。この例におけるLSTM1400は、セル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と、(活性化回路ブロック1702を含む)tanhデバイス1505と、値i(t)を、i(t)がシグモイド関数ブロック1702から出力されるときに記憶するためのレジスタ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の1つのセットのみを含む。LSTMセル1700は、LSTMセル1600と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/4で済むので、LSTMセル1700は、LSTM1600よりも必要とするスペースが少ない。
LSTMユニットは典型的には複数のVMMアレイを含み、これらは各々、加算器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることを更に理解することができる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される実施形態では、VMMアレイ自体の外側に必要とされる回路の最小化を試みる。
ゲート付き回帰型ユニット
ゲート付き回帰型ユニット
アナログVMM実装は、ゲート付き回帰型ユニット(gated recurrent unit、GRU)システムに利用することができる。GRUは、反復ニューラルネットワーク内のゲート機構である。GRUは、GRUセルが一般にLSTMセルよりも少ない構成要素を含むことを除いて、LSTMに類似している。
図18は、例示的なGRU1800を示す。この例におけるGRU1800は、セル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は、入力ベクトルx(t)と、先行するGRUセルからの出力ベクトルh(t-1)と、を受け取り、出力ベクトルh(t)を生成する。GRUセル1900は、シグモイド関数デバイス1901及び1902を含み、それらの各々が、出力ベクトルh(t-1)及び入力ベクトルx(t)からの成分に0~1の数を適用する。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の1つのセットのみを含む。GRUセル2100は、GRUセル2000と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/3で済むので、GRUセル2100は、GRUセル2000よりも必要とするスペースが少ない。
GRUシステムは典型的には複数のVMMアレイを含み、これらは各々、加算器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることが更に理解できる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される実施形態では、VMMアレイ自体の外側に必要とされる回路の最小化を試みる。
VMMアレイへの入力は、アナログレベル、バイナリレベル、又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが必要とされる)であり、出力はアナログレベル、バイナリレベル、又はデジタルビット(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが必要とされる)であり得る。
VMMアレイ内の各メモリセルに関して、各重みwは、単一のメモリセルによって、又は差分セルによって、又は2つのブレンドメモリセル(2つのセルの平均)によって実装することができる。差分セルの場合では、重みwを差分重み(w=w+-w-)として実装するために、2つのメモリセルが必要とされる。2つのブレンドメモリセルの場合は、2つのセルの平均として重みwを実装するために2つのメモリセルが必要とされる。
VMM内のセルの精密プログラミングのための実施形態
VMM内のセルの精密プログラミングのための実施形態
図22Aは、プログラミング方法2200を示す。最初に、方法は、典型的には受信されるプログラムコマンドに応じて、開始する(ステップ2201)。次に、一斉プログラム動作が、全てのセルを「0」状態にプログラムする(ステップ2202)。次いで、各セルが読み出し動作中に約3~5μAの電流を引き込むように、ソフト消去動作が、全てのセルに対して中間弱消去レベルに消去を行う(ステップ2203)。これは、読み出し動作中に各セルが約20~30μAの電流を引き込む、深く消去されたレベルとは対照的である。次いで、全ての非選択セルで非常に深いプログラムされた状態までセルの浮遊ゲートに電子を追加するハードプログラムが実行されて(ステップ2204)、それらのセルが本当に「オフ」であることを確実にし、すなわち、それらのセルは読み出し動作中に無視できる量の電流しか引き込まない。
次いで、粗プログラミング方法が、選択されたセルで実行され(ステップ2205)、続いて精密プログラミング方法が、選択されたセルで実行されて(ステップ2206)、各選択されたセルに所望される精密な値をプログラムする。
図22Bは、プログラミング方法2200と同様の別のプログラミング方法2210を示す。しかしながら、方法が開始した(ステップ2201)後、図22Aのステップ2202でのように全てのセルを「0」状態にプログラムするプログラム動作の代わりに、消去動作が使用されて、全てのセルに対して消去を行って「1」状態にする(ステップ2212)。次いで、各セルが読み出し動作中に約3~5μAの電流を引き込むように、ソフトプログラム動作(ステップ2213)が使用されて、全てのセルを中間状態(レベル)にプログラムする。その後、図22Aの場合と同様に、粗プログラミング方法及び精密プログラミング方法が続く。図22Bの実施形態の変形は、ソフトプログラミング方法(ステップ2213)を完全に除去する。
図23は、検索及び実行方法2300である、粗プログラミング方法2205の第1の実施形態を示す。最初に、ルックアップテーブル検索を実行して、選択されたセルの粗標的電流値(ICT)を、その選択されたセルに記憶されることが意図される値に基づいて決定する(ステップ2301)。選択されたセルは、N個の可能な値(例えば、128、64、32など)のうちの1つを記憶するようにプログラムできるとする。N個の値のそれぞれは、選択されたセルによって読み出し動作中に引き込まれる異なる所望の電流値(ID)に対応し得る。一実施形態では、ルックアップテーブルは、検索及び実行方法2300中に選択されたセルに対する粗標的電流値ICTとして使用するためのM個の可能な電流値を含み得、Mは、Nより小さい整数である。例えば、Nが8である場合、Mは4であり得、これは、選択されたセルが記憶し得る8個の可能な値が存在することを意味し、4つの粗標的電流値のうちの1つは、検索及び実行方法2300の粗標的として選択されることになる。すなわち、検索及び実行方法2300(繰り返しになるが、粗プログラミング方法2205の実施形態である)は、選択されたセルを、所望の値(ID)に幾分近い値(ICT)に迅速にプログラムすることを意図しており、次いで、精密プログラミング方法2206は、所望の値(ID)に極めて近くなるように、選択されたセルをより精密にプログラムすることを意図する。
セル値、所望の電流値、及び粗標的電流値の例を、N=8及びM=4の単純な例について表9及び10に示す。
表9:N=8の場合のN個の所望の電流値の例
表10:M=4の場合のM個の標的電流値の例
オフセット値ICTOFFSETxは、粗調整中に所望の電流値をオーバーシュートしてしまうのを防止するために使用される。
表9:N=8の場合のN個の所望の電流値の例
粗標的電流値ICTが選択されると、選択されたセルは、選択されたセルのセルアーキテクチャタイプ(例えば、メモリセル210、310、410、又は510)に基づいた、選択されたセルの適切な端子に電圧v0を印加することによってプログラムされる(ステップ2302)。選択されたセルが図3のメモリセル310のタイプである場合、電圧v0は制御ゲート端子28に印加され、v0は粗標的電流値ICTに応じて5~7Vであり得る。v0の値は、任意選択的に、粗標的電流値ICTと対応させてv0を記憶する電圧ルックアップテーブルから決定することができる。
次に、選択されたセルは、電圧vi=vi-1+vincrementを印加することによってプログラムされ、式中、iは1で開始し、このステップが繰り返されるたびに増分し、vincrementは、所望される変化の粒度に見合う程度のプログラミングを引き起こす小さい電圧である(ステップ2303)。したがって、第1の時間ステップ2303はi=1で実行され、v1は、v0+vincrementである。次いで、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が測定される、検証動作が行われる(ステップ2304)。IcellがICT(ここでは第1のスレッショルド値である)以下である場合、検索及び実行方法2300は完了し、精密プログラミング方法2206が開始し得る。IcellがICT以下でない場合、ステップ2303が繰り返され、iは増分される。
したがって、粗プログラミング方法2205が終了し、精密プログラミング方法2206が開始する時点で、電圧viは、選択されたセルをプログラムするために使用される最後の電圧であり、選択されたセルは、粗標的電流値ICTに関連付けられた値を記憶することになる。精密プログラミング方法2206の目標は、選択されたセルを、読み出し動作中に選択されたセルが電流ID(50pA以下などの許容可能な量の偏差を加減する)を引き込む点にプログラムすることであり、この電流は、選択されたセルに記憶されることが意図される値に関連付けられている所望の電流値である。
図24は、精密プログラム方法2206中に、選択されたメモリセルの制御ゲートに印加することができる異なる電圧進行の例を示す。
第1のアプローチ下では、選択されたメモリセルを更にプログラムするために、増加する電圧が制御ゲートに漸次印加される。開始点はviであり、これは粗プログラミング方法2205中に印加された最後の電圧である。増分vp1がv1に加えられ、次いで、電圧v1+vp1が使用されて、選択されたセルをプログラムする(進行2401において左から2番目のパルスによって示される)。vp1は、vincrement(粗プログラミング方法2205の間に使用される電圧増分)より小さい増分である。各プログラミング電圧が印加された後、IcellがIPT1(第1の精密標的電流値であり、ここでは第2のスレッショルド値である)以下であるかどうかの判定が行われる、検証ステップ(ステップ2304と同様)が実行され、IPT1=ID+IPT1OFFSETであり、IPT1OFFSETは、プログラムオーバーシュートを防止するために加算されるオフセット値である。判定が否である場合、別の増分vp1が、前に印加されたプログラミング電圧に加えられ、プロセスが繰り返される。IcellがIPT1以下である時点で、プログラミングシーケンスのこの部分は停止する。任意選択的に、IPT1がIDに等しいか、又は十分な精度でIDにほぼ等しい場合、選択されたメモリセルは正常にプログラムされている。
IPT1がIDに十分に近接していない場合は、より小さい粒度の更なるプログラミングを行うことができる。ここで、進行2402が使用される。進行2402の開始点は、進行2401下のプログラミングに使用された最後の電圧である。増分Vp2(vp1よりも小さい)がその電圧に加えられ、組み合わされた電圧が印加されて、選択されたメモリセルをプログラムする。各プログラミング電圧が印加された後、IcellがIPT2(第2の精密標的電流値であり、ここでは第3のスレッショルド値である)以下であるかどうかの判定が行われる、検証ステップ(ステップ2304と同様)が実行され、IPT2=ID+IPT2OFFSETであり、IPT2OFFSETは、プログラムオーバーシュートを防止するために加算されるオフセット値である。判定が否である場合、別の増分Vp2が、前に印加されたプログラミング電圧に加えられ、プロセスが繰り返される。IcellがIPT2以下である時点で、プログラミングシーケンスのこの部分は停止する。ここで、標的値が十分な精度で達成されているので、IPT2はIDに等しいか、又はプログラミングが停止できるほどIDに十分に近接していると想定される。当業者は、使用されるプログラミング増分が段々と小さくなって追加の進行が適用され得ることを理解することができる。例えば、図25では、2つだけではなく、3つの進行(2501、2502、及び2503)が適用される。
第2のアプローチが、進行2403に示される。ここで、選択されたメモリセルのプログラミング中に印加される電圧を増加させる代わりに、増加する期間の持続時間に対して同じ電圧が印加される。進行2401におけるvp1及び進行2403におけるvp2などの増分電圧を加える代わりに、各印加パルスが、前に印加されたパルスよりもtp1だけ長くなるように、追加の時間増分tp1がプログラミングパルスに加えられる。各プログラミングパルスが印加された後、進行2401について前述したのと同じ検証ステップが実行される。任意選択的に、プログラミングパルスに加えられる追加の時間増分が前の使用された進行よりも短い持続時間である、追加の進行を、印加することができる。1つの時間的な進行のみが示されているが、当業者は、任意の数の異なる時間的進行が印加され得ることを理解するであろう。
ここで、粗プログラミング方法2205の2つの更なる実施形態について、更なる詳細が提供される。
図26は、適応較正方法2600である、粗プログラミング方法2205の第2の実施形態を示す。方法が開始する(ステップ2601)。セルは、デフォルトの出発値v0でプログラムされる(ステップ2602)。検索及び実行方法2300とは異なり、ここでv0は、ルックアップテーブルから得られず、代わりに比較的小さい初期値とすることができる。セルの制御ゲート電圧は、第1の電流値IR1(例えば、100na)及び第2の電流値IR2(例えば、10na)で測定され、サブスレッショルド傾斜は、それらの測定値に基づいて決定され(例えば、360mV/dec)、記憶される(ステップ2603)。
新しい所望の電圧viが決定される。このステップが最初に実行されるとき、i=1であり、v1は、以下のようなサブスレッショルド式を使用して、記憶されたサブスレッショルド傾斜値並びに電流標的及びオフセット値に基づいて決定される。
Vi=Vi-1+Vincrement、
Vincrementは、傾斜Vgに比例する
Vg=k*Vt*log[Ids/wa*Io]
ここで、waはメモリセルのwであり、Idsは電流標的プラスオフセット値である。
Vi=Vi-1+Vincrement、
Vincrementは、傾斜Vgに比例する
Vg=k*Vt*log[Ids/wa*Io]
ここで、waはメモリセルのwであり、Idsは電流標的プラスオフセット値である。
記憶された傾斜値が比較的急勾配である場合、比較的小さい電流オフセット値を使用することができる。記憶された傾斜値が比較的平坦である場合、比較的高い電流オフセット値を使用することができる。したがって、傾斜情報を決定することは、問題の特定のセルにカスタマイズされている電流オフセット値が選択されることを可能にする。これは、最終的に、プログラミングプロセスをより短くする。このステップが繰り返されると、iはインクリメントされ、vi=vi-1+vincrementである。次いで、セルは、viを使用してプログラムされる。vincrementは、標的電流値と対応させてvincrementの値を記憶するルックアップテーブルから決定することができる。
次に、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が測定される、検証動作が行われる(ステップ2605)。IcellがICT(ここでは粗標的スレッショルド値である)以下である場合(ICT=ID+ICTOFFSETに設定され、ICTOFFSETは、プログラムオーバーシュートを防止するために追加されるオフセット値である)、適応較正方法2600は完了し、精密プログラミング方法2206が開始され得る。IcellがICT以下でない場合、ステップ2604~2605が繰り返され、iは増分される。
図27は、適応較正方法2600の態様を示す。ステップ2603中、例示的な電流値IR1及びIR2を選択されたセル(ここではメモリセル2702)に印加するために電流源2701が使用され、次いで、メモリセル2702の制御ゲートにおける電圧(IR1に対するCGR1及びIR2に対するCGR2)が測定される。傾斜は、(CGR2-CGR1)/decである。
図28は、絶対較正方法2800である、粗プログラミング方法2205の第2の実施形態を示す。方法が開始する(ステップ2801)。セルは、デフォルトの出発値V0でプログラムされる(ステップ2802)。セル(VCGRx)の制御ゲート電圧は、電流値Itargetで測定され、記憶される(ステップ2803)。新しい所望の電圧v1は、記憶された制御ゲート電圧並びに電流標的及びオフセット値Ioffset+Itargetに基づいて決定される(ステップ2804)。例えば、新しい所望の電圧v1は、以下のように計算することができる:v1=v0+(VCGBIAS-記憶されたVCGR)、式中、VCGBIAS=約1.5Vであり、これは、最大標的電流でのデフォルトの読み出し制御ゲート電圧であり、記憶されたVCGRは、ステップ2803の測定された読み出し制御ゲート電圧である。
次いで、セルは、viを使用してプログラムされる。i=1のとき、ステップ2804からの電圧v1が使用される。i>=2のとき、電圧vi=vi-1+Vincrementが使用される。vincrementは、標的電流値と対応させてvincrementの値を記憶するルックアップテーブルから決定することができる。次に、検証動作が行われ、ここで、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が測定される(ステップ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であるため、VCGRが増加するにつれて、最初にインバータ2902-0の出力が低から高に切り替わる。次にインバータ2902-1の出力が低から高に切り替わり、次いでインバータ2902-2の出力が同様に切り替わり、以下インバータ2902-nの出力が低から高に切り替わるまで同様である。各インバータ2902は、スイッチ2904(2904-0、2904-1、2904-2、...、2904-n)を制御し、その結果、インバータ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を示す。一実施形態では、ビット線イネーブル信号は、選択されたビット線(上記ビット線内の選択されたメモリセルを意味する)が、対応するVcgp電圧レベルでプログラムされることを可能にする。別の実施形態では、選択されたセルの増分上昇を行う制御ゲートに印加される電圧は、ビット線イネーブル信号を使用して制御することができる。各ビット線イネーブル信号により、そのビット線に対応する所望の電圧(図28に記載のviなど)が制御ゲート電圧に印加される。この例では、後続の増分はそれぞれ、その前の増分と等しい。
図32は、VMMアレイで読み出し又は検証するための入力及び出力方法を実装するためのシステムを示す。入力関数回路3201は、デジタルビット値を受信し、それらのデジタル値をアナログ信号に変換して使用することで、制御ゲートデコーダ3202を介して決定した、アレイ3204内の選択されたセルの制御ゲートに電圧を印加する。同時に、ワード線デコーダ3203もまた、選択されたセルが位置する行を選択するために使用される。出力ニューロン回路ブロック3205は、アレイ3204内のセルの各列(ニューロン)の出力作用を実行する。出力回路ブロック3205は、積分型アナログ-デジタル変換器(analog-to-digital converter、ADC)、逐次比較型(successive approximation、SAR)ADC、又はシグマデルタ型ADCを使用して実装することができる。
一実施形態では、入力関数回路3201に提供されるデジタル値は、例として4つのビット(DIN3、DIN2、DIN1、及びDIN0)を含み、様々なビット値は、制御ゲートに印加される異なる数の入力パルスに対応する。パルスの数が大きいほど、セルの出力値(電流)は大きくなる。ビット値及びパルス値の例を表11に示す。
表11:デジタルビット入力と生成パルス数
表11:デジタルビット入力と生成パルス数
上記の例では、セル値を読み出すための4ビットのデジタル値に対して最大16個のパルスが存在する。各パルスは、1単位のセル値(電流)に等しい。例えば、Icell単位=1nAの場合、DIN[3~0]=0001では、Icell=1*1nA=1nAであり、DIN[3~0]=1111では、Icell=15*1nA=15nAである。
別の実施形態では、デジタルビット入力は、表12に示すように、セル値を読み出すためにデジタルビット位置加算を使用する。ここで、4ビットのデジタル値を評価するのに、4つのパルスのみが必要である。例えば、第1のパルスはDIN0を評価するために使用され、第2のパルスはDIN1を評価するために使用され、第3のパルスはDIN2を評価するために使用され、第4のパルスはDIN3を評価するために使用される。その後、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:デジタルビット入力加算
表12:デジタルビット入力加算
図33は、検証動作中にVMMの出力を合計して、出力を表す単一のアナログ値を得るために使用できる電荷加算器3300の例を示しており、この単一のアナログ値は、任意選択的にデジタルビット値に変換することもできる。電荷加算器3300は、電流源3301と、スイッチ3302及びサンプルアンドホールド(sample-and-hold、S/H)コンデンサ3303を含むサンプルアンドホールド回路と、を含む。4ビットのデジタル値の例で示されるように、4つの評価パルスからの値を保持するための4つのS/H回路が存在し、そこで、これらの値はプロセスの終了時に合計される。S/Hコンデンサ3303は、そのS/Hコンデンサの2^n*DINnビット位置に関連付けられる比率で選択され、例えば、C_DIN3=x8 Cu、C_DIN2=x4 Cu、C_DIN1=x2 Cu、DIN0=x1 Cuである。電流源3301もまた、それに応じて比率が乗じられる。
図34は、検証動作中にVMMの出力を合計するために使用できる電流加算器3400を示す。電流加算器3400は、電流源3401、スイッチ3402、スイッチ3403及びスイッチ3404、並びにスイッチ3405を含む。4ビットのデジタル値の例で示されるように、4つの評価パルスからの値を保持するための電流源回路が存在し、これらの値はプロセスの終了時に合計される。電流源は、2^n*DINnビット位置に基づいて比率が乗じられ、例えば、I_DIN3=x8 Icell単位、_I_DIN2=x4 Icell単位、I_DIN1=x2 Icell単位、I_DIN0=x1 Icell単位である。
図39は、出力ブロック3900(図32の出力ブロック3205の実施形態である)を示す。出力ブロック3900は、ここではICELL 3901として示されるVMM(図32のアレイ3204など)から出力電流を受け取る。出力ブロック3900は、D/A変換器3902、シフタ3903、アダー3904、及び出力レジスタ3905を備える。
ここで、VMMの入力ブロック(図32の入力ブロック3201など)への入力はdin_nであると仮定され、nはビット数であり、0からi-1までの合計iビットが存在する。例えば、i=4の場合、入力は、din_3、din_2、din_1、及びdin_0の4ビットとなる。各入力ビットdin_nは、一度にVMM 3204の入力ブロック3201に適用される。
入力ブロック3201は、din_nを、アレイ3204内の選択されたセルの端子に印加される入力信号に(本明細書で説明される実施形態のうちの1つ又は他の既知の技法を使用して)変換する。一実施形態では、入力信号は、表13に示すように例示的な4ビット入力に対するパルスである。
表13.4ビット入力とパルスの例示的な表
表13.4ビット入力とパルスの例示的な表
特定の行に対する4ビット入力DIN[3:0]は、16個のレベル(例えば、VCGIN0、...、又はVCGIN15)のうちの1つのアナログレベルを選択させ、VMMアレイの行に適用させる。この演算は、同時に入力において4つのデータに行われる。代替的な実施形態は、入力において一度に1つのデータを演算すること(入力ビットごとの演算)であり、入力における各データに対する結果は、次いで、アナログ領域(図33、図34)又はデジタル領域(図35、図39)において一緒に加算(合計)される。結果の加算は、アナログバイアスレベル(VCGIN[15:0])が入力ビットにおける全てのデータに対して同じ電圧値を有する場合、各入力ビットに対するバイナリ重みに対して調整される(図39におけるシフト及び加算)。アナログバイアスレベル(VCGIN[15:0])がデータ入力ビットのバイナリ値に等しい電圧値を有する場合、入力ビットのデータに対してバイナリ重み調整は必要ない。
別の実施形態では、アレイの入力ブロックへの入力信号は、一定のアナログバイアス電圧を伴う入力ビットごとの演算(例えば、演算は、DIN0、次いでDIN1、次いでDIN2、次いでDIN3入力に対して行われる)のための表14Bに示される例示的な4ビット入力である。
表14B:4ビット入力と入力ビットごとの演算を伴う単一アナログバイアスレベルの例示的な表
表14B:4ビット入力と入力ビットごとの演算を伴う単一アナログバイアスレベルの例示的な表
入力ビットDINごとのバイナリ加重結果は、(図34の電流加算器を使用することによってなど)アナログ領域において、又は(図35又は図39の実施形態を使用することによってなど)デジタル領域において、合計される。
別の実施形態では、アレイの入力ブロックへの入力信号は、2つのアナログバイアスレベルの例を伴う入力マルチビットごとの演算(例えば、DIN3及びDIN2を合わせて、並びにDIN1及びDIN0を合わせて)のための表14Cに示されるような例示的な4ビット入力である。
表14C:4ビット入力と入力マルチビットごとの演算を伴うアナログバイアスレベルの例示的な表
表14C:4ビット入力と入力マルチビットごとの演算を伴うアナログバイアスレベルの例示的な表
マルチビットごとのバイナリ加重結果DIN[1:0]及びDIN[3:2]は、アナログ領域(図34の電流加算器のような)又はデジタル領域(図35、図39)において合計される。
別の実施形態では、入力信号は、アナログバイアス供給及びパルスを伴う例示的な4ビット入力に対して表15に示されるような、パルス成分(アナログバイアス供給変調パルス幅)が加えられたアナログバイアス電圧成分を含むハイブリッド信号である。
表15:4ビット入力とアナログバイアスレベル及びパルスのハイブリッド入力のための例示的な表
表15:4ビット入力とアナログバイアスレベル及びパルスのハイブリッド入力のための例示的な表
このハイブリッドシステムでは、表15に示すように、入力パルスのタイミングが半分に短縮される。入力データは複数の入力データ入力セットに分割され、各データ入力セットは特定のバイアスレベル成分に割り当てられる。例えば、8ビット入力DIN[7:0]の場合、データ入力セットDIN[3:0]内の入力データは、行電源VCGIN1を受け取り、データ入力セットDIN[7:4]内の入力データは、VCGIN1とは異なる別の行電源VCGIN2を受け取る。2つのバイナリ入力セット分割のこの例示的な実施形態では、(第2のデータ入力セットDIN[7:4]のための)アナログバイアス電源VCGIN2は、(第1のデータ入力セットDIN[3:0]のための)アナログバイアス電源VCGIN1によって生成されるセル電流の2倍であるセル電流を生成し、第2のデータ入力セットDIN[7:4]のためのパルスは、第1のデータ入力セットDIN[3:0]のためのパルスと同じ値である。例えば、VCGIN2/VCGIN1の比率は、線形領域で動作するセルについては2倍である。この実施形態の変形例では、入力データ入力セットに対して2つの分割があり、各々が異なるアナログバイアス電圧に対応する。例えば、必要な入力パルスの幅を4分の1に減少させるために、各々が異なるVCCGINバイアスレベルを有する4つの分割があり得る。
再び図39を参照すると、次に、出力ブロック3900は、入力din_nに応答してVMMから出力電流ICELLを受け取る。D/A変換器3902は、ICELLを、din_nに応答して生成された出力のデジタル値を表すデジタル形式dout_nに変換し、各dout_nは1つ以上のビットのセットである。
シフタ3903、アダー3904、及びレジスタ3905は、各入力ビットDIN_nに応答して生成される各出力DOUT_nに異なる重みを適用するように動作する。n=4である単純な例では、シフタ3902、アダー3904、及びレジスタ3905は以下の作用を実行する。
(1)DIN_0に応答して、シフタ3903はDOUT_0を受信し、それをシフトせず、(1)の結果を生成する。
(2)DIN_1に応答して、シフタ3903はDOUT_1を受信し、それを左に1ビットシフトし、アダーはその結果を(1)の結果に加算して(2)の結果を生成する。
(3)DIN_2に応答して、シフタ3903はDOUT_2を受信し、それを左に2ビットシフトし、アダー3904はその結果を(2)の結果に加算して(3)の結果を生成する。
(4)DIN_3に応答して、シフタは、DOUT_3を受信し、それを左に3ビットシフトし、アダー3904は、その結果を(3)の結果に加算して、(4)の結果、すなわち最終結果を生成する。
(1)DIN_0に応答して、シフタ3903はDOUT_0を受信し、それをシフトせず、(1)の結果を生成する。
(2)DIN_1に応答して、シフタ3903はDOUT_1を受信し、それを左に1ビットシフトし、アダーはその結果を(1)の結果に加算して(2)の結果を生成する。
(3)DIN_2に応答して、シフタ3903はDOUT_2を受信し、それを左に2ビットシフトし、アダー3904はその結果を(2)の結果に加算して(3)の結果を生成する。
(4)DIN_3に応答して、シフタは、DOUT_3を受信し、それを左に3ビットシフトし、アダー3904は、その結果を(3)の結果に加算して、(4)の結果、すなわち最終結果を生成する。
DIN[n:0]入力が、各データ入力のバイナリ重みを表すようにアナログ電圧レベルと組み合わされる場合、加算のみが必要とされ、このハイブリッド入力ビットごとの演算のためにシフトすることはない。出力レジスタ3905は、(4)の結果をDOUTとして出力する。
図35は、複数のデジタル値を受信し、それらを一緒に合計し、入力の和を表す出力DOUTを生成する、デジタル加算器3500を示す。デジタル加算器3500は、検証動作中に使用することができる。4ビットのデジタル値の例で示されるように、4つの評価パルスからの値を保持するためのデジタル出力ビットが存在し、これらの値はプロセスの終了時に合計される。デジタル出力は、2^n*DINnビット位置に基づいてデジタルスケーリングされ、例えば、DOUT3=x8 DOUT0、_DOUT2=x4 DOUT1、I_DOUT1=x2 DOUT0、I_DOUT0=DOUT0である。
図36Aは、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用される二重傾斜積分型ADC 3600を示す。積分オペアンプ3601及び積分コンデンサ3602からなる積分器は、基準電流IREFに対してセル電流ICELLを積分する。図36Bに示されるように、固定時間t1の間、セル電流は上方に積分され(Voutが上昇する)、次いで、基準電流が、時間t2にわたって下方に積分される(Voutが降下する)ように印加される。電流Icellは、=t2/t1*IREFである。例えば、t1に対して、10ビットのデジタルビット解像度では、1024サイクルが使用され、t2に対するサイクル数は、Icell値に応じて0~1024サイクルに変化する。
図36Cは、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用される単一傾斜積分型ADC 3660を示す。積分オペアンプ3661及び積分コンデンサ3662からなる積分器は、セル電流ICELLを積分する。図36Dに示されるように、時間t1の間、セル電流が上方に積分され(VoutがVref2に達するまで上昇する)、時間t2の間、別のセル電流が上方に積分される。セル電流I cell=Cint*Vref2/tである。パルスカウンタは、積分時間tの間のパルス(デジタル出力ビット)数をカウントするために使用される。例えば、図示されるように、t1に対するデジタル出力ビットは、t2のデジタル出力ビットよりも少なく、これは、t1の間のセル電流がt2積分中のセル電流よりも大きいことを意味する。初期較正は、積分コンデンサ値を基準電流及び固定時間で較正するために行われ、Cint=Tref*Iref/Vref2である。
図36Eは、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用される二重傾斜積分型ADC 3680を示す。二重傾斜積分型ADC 3680は、積分オペアンプを利用しない。セル電流又は基準電流は、コンデンサ3682で直接積分される。パルスカウンタは、積分時間の間のパルス(デジタル出力ビット)をカウントするために使用される。電流Icellは、=t2/t1*IREFである。
図36Fは、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用される単一傾斜積分型ADC 3690を示す。単一傾斜積分型ADC 3680は、積分オペアンプを利用しない。セル電流は、コンデンサ3692で直接積分される。パルスカウンタは、積分時間の間のパルス(デジタル出力ビット)をカウントするために使用される。セル電流I cell=Cint*Vref2/tである。
図37Aは、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用されるSAR(逐次比較型)ADCを示す。セル電流は、抵抗器を通して降下させて、VCELLに変換することができる。あるいは、セル電流は、S/Hコンデンサをチャージアップして、VCELLに変換することもできる。MSBビット(最上位ビット)から始まるビットを計算するために、二分探索が使用される。SAR3701からのデジタルビットに基づいて、適切なアナログ基準電圧をコンパレータ3703に設定するために、DAC3702が使用される。コンパレータ3703の出力は、次のアナログレベルを選択するために、SAR3701に順番にフィードバックされる。図37Bに示されるように、4ビットのデジタル出力ビットの例では、4つの評価期間が存在し、アナログレベルを中間に設定することによってDOUT3を評価するための第1のパルス、次いで、アナログレベルを上半分の中間又は下半分の中間に設定することによってDOUT2を評価するための第2のパルスなどがある。
図38は、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用されるシグマデルタ型ADC 3800を示す。オペアンプ3801及びコンデンサ3805からなる積分器は、選択されたセル電流からの電流と、1ビット電流DAC 3804からもたらされる基準電流との総和を積分する。コンパレータ3802は、基準電圧に対して積分出力電圧を比較する。クロックドDFF 3803は、コンパレータ3802の出力に応じてデジタル出力ストリームを提供する。デジタル出力ストリームは、典型的には、デジタル出力ビットに出力される前にデジタルフィルタに進む。
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「に間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に伴わずに形成すること、及びその要素を基板に間接的に1つ以上の中間材料/要素をそれらの間に伴って形成することを含み得る。
図13は、図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1300を示す。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中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
図26は、適応較正方法2600である、粗プログラミング方法2205の第2の実施形態を示す。方法が開始する(ステップ2601)。セルは、デフォルトの出発値v0でプログラムされる(ステップ2602)。検索及び実行方法2300とは異なり、ここでv0は、ルックアップテーブルから得られず、代わりに比較的小さい初期値とすることができる。セルの制御ゲート電圧は、第1の電流値IR1(例えば、100nA)及び第2の電流値IR2(例えば、10nA)で測定され、サブスレッショルド傾斜は、それらの測定値に基づいて決定され(例えば、360mV/dec)、記憶される(ステップ2603)。
Claims (40)
- 選択された不揮発性メモリセルを読み出す方法であって、前記方法は、
複数の入力ビットを入力回路に順次提供するステップと、
前記複数の入力ビットの各々に対して、
前記入力回路によって、前記入力ビットに応答して入力信号を生成するステップと、
前記入力信号を前記選択された不揮発性メモリセルの端子に印加するステップと、
出力回路によって、前記入力ビットに応答して生成された出力を受信するステップと、
前記出力をデジタル出力に変換するステップと、
シフトされた結果を生成するために、前記複数の入力ビット内の前記入力ビットのビットロケーションに基づいて前記デジタル出力をシフトするステップと、
デジタル出力を生成するために、前記複数の入力ビットの全てについて前記シフトされた結果を加算するステップと、を含む、方法。 - 前記選択された不揮発性メモリセルは、スプリットゲート型フラッシュメモリセルである、請求項1に記載の方法。
- 前記端子は、制御ゲート端子である、請求項2に記載の方法。
- 前記選択された不揮発性メモリセルは、ニューラルメモリの一部である、請求項1に記載の方法。
- 前記入力信号は、パルスを含む、請求項1に記載の方法。
- 前記入力信号は、アナログバイアス信号を含む、請求項1に記載の方法。
- 前記入力信号は、アナログバイアス信号及びパルスを含む、請求項1に記載の方法。
- 前記複数の入力ビットのうちの1つは、前記アナログバイアス信号として符号化される、請求項7に記載の方法。
- ニューロモーフィックメモリシステムであって、
複数の選択されたメモリセルを含むアレイと、
各選択されたメモリセルに、一連の入力ビットに応答して、前記選択されたメモリセルの端子に一連の入力信号を印加するように構成された入力ブロックと、
前記選択されたメモリセルの出力を生成するための出力ブロックであって、前記出力ブロックは、前記選択されたメモリセルからの電流をデジタル値に変換するためのアナログ-デジタル変換器、シフタ、アダー、及びレジスタを備える、出力ブロックと、を備え、
前記シフタ、アダー、及びレジスタは、前記一連の入力ビットに応答して一連のデジタル値を受信し、前記一連の入力ビット内の前記入力ビットのビットロケーションに基づいて前記一連のデジタル値内の各デジタル値をシフトし、前記シフト演算の結果を加算して、前記選択されたメモリセル内に記憶された値を示す出力を生成するように構成されている、ニューロモーフィックメモリシステム。 - 前記選択された不揮発性メモリセルは、スプリットゲート型フラッシュメモリセルである、請求項9に記載の方法。
- 前記端子は、制御ゲート端子である、請求項10に記載の方法。
- 前記選択された不揮発性メモリセルは、ニューラルメモリの一部である、請求項9に記載の方法。
- 前記入力信号は、パルスを含む、請求項9に記載の方法。
- 前記入力信号は、アナログバイアス信号を含む、請求項9に記載の方法。
- 前記入力信号は、アナログバイアス信号及びパルスを含む、請求項9に記載の方法。
- 前記複数の入力ビットのうちの1つは、前記アナログバイアス信号として符号化される、請求項15に記載の方法。
- 選択された不揮発性メモリセルを読み出す方法であって、前記方法は、
複数の入力ビットを入力回路に順次提供するステップと、
前記複数の入力ビットの各々に対して、
前記入力回路によって、前記入力ビットに応答して入力信号を生成するステップであって、前記入力信号は、アナログバイアスレベル成分及びパルス幅成分を含む、生成するステップと、
前記入力信号を前記選択された不揮発性メモリセルの端子に印加するステップと、
出力回路によって、前記入力ビットに応答して生成された出力を受信するステップと、
前記出力をデジタル出力に変換するステップと、を含む、方法。 - シフトされた結果を生成するために、前記複数の入力ビット内の前記入力ビットのビットロケーションに基づいて前記デジタル出力をシフトするステップと、
デジタル出力を生成するために、前記複数の入力ビットの全てについて前記シフトされた結果を加算するステップを更に含む、請求項17に記載の方法。 - 前記出力は、電流加算器を使用して生成される、請求項17に記載の方法。
- 前記アナログバイアスレベル成分は、バイナリ加重値である、請求項17に記載の方法。
- 前記出力値は、前記パルス幅変調入力のみに基づいて生成される、請求項17に記載の方法。
- 前記選択された不揮発性メモリセルは、ニューラルメモリの一部である、請求項17に記載の方法。
- 選択された不揮発性メモリセルを読み出す方法であって、前記方法は、
複数の入力ビットを入力回路に順次提供するステップと、
前記複数の入力ビットの各々に対して、
前記入力回路によって、前記入力ビットのマルチビットに応答して入力信号を生成するステップであって、前記入力信号は、アナログバイアスレベルである、生成するステップと、
前記入力信号を前記選択された不揮発性メモリセルの端子に印加するステップと、
出力回路によって、前記入力ビットに応答して生成された出力を受信するステップと、を含む、方法。 - 前記出力をデジタル出力に変換するステップ、を更に含む、請求項23に記載の方法。
- デジタル出力を生成するために、前記複数の入力ビットの全てについて前記結果を加算するステップ、を更に含む、請求項24に記載の方法。
- シフトされた結果を生成するために、前記複数の入力ビット内の前記入力ビットのビットロケーションに基づいて前記デジタル出力をシフトするステップと、
デジタル出力を生成するために、前記複数の入力ビットの全てについて前記シフトされた結果を加算するステップと、を更に含む、請求項24に記載の方法。 - 前記出力は、電流加算器を使用して生成される、請求項25に記載の方法。
- 前記アナログバイアスレベルは、バイナリインデックス値である、請求項23に記載の方法。
- 前記アナログバイアスレベルは、結果として生じるセル出力値が、前記パルス幅変調入力のみに基づいて生成される出力値であるようなレベルである、請求項23に記載の方法。
- 前記選択された不揮発性メモリセルは、ニューラルメモリの一部である、請求項23に記載の方法。
- ニューロモーフィックメモリシステムであって、
選択されたメモリセルを含むアレイと、
各選択されたメモリセルについて、一連の入力ビットに応答して、前記選択されたメモリセルの端子に一連の入力信号を印加するように構成された入力ブロックと、
前記選択されたメモリセルの出力を生成するための出力ブロックであって、前記出力ブロックは、前記一連の入力ビットに応答して、前記アレイから受信された出力を加算するためのアダーを備える、出力ブロックと、を備える、ニューロモーフィックメモリシステム。 - 前記選択された不揮発性メモリセルは、スプリットゲート型フラッシュメモリセルである、請求項31に記載の方法。
- 前記端子は、制御ゲート端子である、請求項32に記載の方法。
- 前記選択された不揮発性メモリセルは、ニューラルメモリの一部である、請求項31に記載の方法。
- 前記入力信号は、パルスを含む、請求項31に記載の方法。
- 前記入力信号は、アナログバイアス信号を含む、請求項31に記載の方法。
- 前記入力信号は、アナログバイアス信号及びパルスを含む、請求項31に記載の方法。
- 前記アダーは、出力電流加算器を備える、請求項31に記載の方法。
- 前記アダーは、出力電荷加算器を備える、請求項31に記載の方法。
- 前記アダーは、デジタル論理アダーを備える、請求項31に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/133,395 US20210118894A1 (en) | 2018-10-16 | 2020-12-23 | Input and digital output mechanisms for analog neural memory in a deep learning artificial neural network |
US17/133,395 | 2020-12-23 | ||
PCT/US2021/022855 WO2022139859A1 (en) | 2020-12-23 | 2021-03-17 | Input and digital output mechanisms for analog neural memory in a deep learning artificial neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024504003A true JP2024504003A (ja) | 2024-01-30 |
Family
ID=75478208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023538012A Pending JP2024504003A (ja) | 2020-12-23 | 2021-03-17 | 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用の入力及びデジタル出力機構 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP4268228A1 (ja) |
JP (1) | JP2024504003A (ja) |
KR (1) | KR20230080483A (ja) |
CN (1) | CN116615784A (ja) |
TW (1) | TWI784816B (ja) |
WO (1) | WO2022139859A1 (ja) |
Family Cites Families (12)
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 |
JP3260357B2 (ja) * | 1990-01-24 | 2002-02-25 | 株式会社日立製作所 | 情報処理装置 |
TW270192B (en) * | 1995-05-11 | 1996-02-11 | Ind Tech Res Inst | Artificial neural network architecture |
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 |
JP2007034537A (ja) * | 2005-07-25 | 2007-02-08 | Sony Corp | 複合型記憶装置、データ書込方法及びプログラム |
US7450426B2 (en) * | 2006-10-10 | 2008-11-11 | Sandisk Corporation | Systems utilizing variable program voltage increment values in non-volatile memory program operations |
US10910061B2 (en) * | 2018-03-14 | 2021-02-02 | Silicon Storage Technology, Inc. | Method and apparatus for programming analog neural memory in a deep learning artificial neural network |
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 |
KR102637733B1 (ko) * | 2018-10-31 | 2024-02-19 | 삼성전자주식회사 | 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법 |
US20200159495A1 (en) * | 2018-11-15 | 2020-05-21 | Samsung Electronics Co., Ltd. | Processing apparatus and method of processing add operation therein |
KR20200061164A (ko) * | 2018-11-23 | 2020-06-02 | 삼성전자주식회사 | 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서 |
CN110728358B (zh) * | 2019-09-30 | 2022-06-10 | 上海商汤智能科技有限公司 | 基于神经网络的数据处理方法和装置 |
-
2021
- 2021-03-17 CN CN202180081820.6A patent/CN116615784A/zh active Pending
- 2021-03-17 JP JP2023538012A patent/JP2024504003A/ja active Pending
- 2021-03-17 KR KR1020237015477A patent/KR20230080483A/ko not_active Application Discontinuation
- 2021-03-17 WO PCT/US2021/022855 patent/WO2022139859A1/en active Application Filing
- 2021-03-17 EP EP21718319.3A patent/EP4268228A1/en active Pending
- 2021-11-29 TW TW110144304A patent/TWI784816B/zh active
Also Published As
Publication number | Publication date |
---|---|
TW202230376A (zh) | 2022-08-01 |
WO2022139859A1 (en) | 2022-06-30 |
TWI784816B (zh) | 2022-11-21 |
EP4268228A1 (en) | 2023-11-01 |
CN116615784A (zh) | 2023-08-18 |
KR20230080483A (ko) | 2023-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7385657B2 (ja) | 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリのプログラミングのための精密な調整 | |
JP7340612B2 (ja) | 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用の電力管理 | |
JP7340694B2 (ja) | 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリのプログラミングのための精密な調整 | |
JP7340101B2 (ja) | 人工ニューラルネットワークにおけるアナログニューラルメモリのための精密なプログラミング方法及び装置 | |
US20240098991A1 (en) | Input and output blocks for an array of memory cells | |
JP2024502798A (ja) | 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用のデジタル出力機構 | |
JP2024504003A (ja) | 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用の入力及びデジタル出力機構 | |
JP2024521006A (ja) | 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用の出力回路 | |
WO2022245384A1 (en) | Output circuit for analog neural memory in a deep learning artificial neural network | |
WO2023282923A1 (en) | Programmable output blocks for analog neural memory in a deep learning artificial neural network | |
JP2024526147A (ja) | 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用のプログラム可能出力ブロック |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230818 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230818 |