(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-29
(45)【発行日】2023-09-06
(54)【発明の名称】人工ニューラルネットワークにおけるアナログニューラルメモリのための精密なプログラミング方法及び装置
(51)【国際特許分類】
G11C 11/56 20060101AFI20230830BHJP
G11C 16/04 20060101ALI20230830BHJP
G11C 16/10 20060101ALI20230830BHJP
【FI】
G11C11/56 210
G11C16/04 120
G11C16/10 140
(21)【出願番号】P 2022526411
(86)(22)【出願日】2020-05-22
(86)【国際出願番号】 US2020034326
(87)【国際公開番号】W WO2021096563
(87)【国際公開日】2021-05-20
【審査請求日】2022-06-24
(32)【優先日】2019-11-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-01-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】トラン、ヒュー バン
(72)【発明者】
【氏名】レムケ、スティーブン
(72)【発明者】
【氏名】ティワリ、ビピン
(72)【発明者】
【氏名】ドー、ナン
(72)【発明者】
【氏名】レイテン、マーク
【審査官】後藤 彰
(56)【参考文献】
【文献】国際公開第2019/177691(WO,A1)
【文献】国際公開第2019/108334(WO,A1)
【文献】特表2021-517706(JP,A)
【文献】特表2021-504868(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 11/56
G11C 16/04
G11C 16/10
(57)【特許請求の範囲】
【請求項1】
N個の可能な値のうちの1つを記憶するために、選択された不揮発性メモリセルをプログラミングする方法であって、Nが2より大きい整数であり、前記選択された不揮発性メモリセルが、浮遊ゲート、制御ゲート端子、消去ゲート端子、及びソース線端子を含み、前記方法が、
複数のプログラム検証サイクルを含む第1のプログラミングプロセスを実行するステップであって、大きさが増加していくプログラミング電圧が、第1のプログラム検証サイクルの後に、各プログラム検証サイクル内の前記選択された不揮発性メモリセルの端子に印加される、実行するステップを含み、
各プログラム検証サイクルが、
前記選択された不揮発性メモリセルの前記消去ゲート端子及び前記制御ゲート端子のうちの1つに第1の電圧を印加するステップと、
前記印加の結果として前記選択された不揮発性メモリセルを通る第1の電流を測定するステップと、
前記選択された不揮発性メモリセルの前記消去ゲート端子及び前記制御ゲート端子のうちの前記1つに第2の電圧を印加するステップと、
前記印加の結果として前記選択された不揮発性メモリセルを通る第2の電流を測定するステップと、
前記第1の電圧、前記第2の電圧、前記第1の電流、及び前記第2の電流に基づいて、傾斜値を決定するステップと、
決定された前記傾斜値に基づいて、次のプログラム検証サイクルの、大きさが増加していく前記プログラミング電圧の次のプログラミング電圧を決定するステップと、を含む
、方法。
【請求項2】
前記次のプログラミング電圧を使用して、前記選択された不揮発性メモリセルをプログラミングするステップを更に含む、請求項
1に記載の方法。
【請求項3】
読み出し動作中又は検証動作中に前記選択された不揮発性メモリセルを通る電流が第1のスレッショルド電流値以下になるまで、次のプログラミング電圧を決定する前記ステップと、前記次のプログラミング電圧を使用して、前記不揮発性メモリセルをプログラミングする前記ステップと、を繰り返すステップを更に含む、請求項
2に記載の方法。
【請求項4】
N個の可能な値のうちの1つを記憶するために、選択された不揮発性メモリセルをプログラミングする方法であって、Nが2より大きい整数であり、前記選択された不揮発性メモリセルが、浮遊ゲート、制御ゲート端子、消去ゲート端子、及びソース線端子を含み、前記方法が、
複数のプログラム検証サイクルを含む第1のプログラミングプロセスを実行するステップであって、大きさが増加していくプログラミング電圧が、第1のプログラム検証サイクルの後に、各プログラム検証サイクル内の前記選択された不揮発性メモリセルの端子に印加される、実行するステップを含み、
各プログラム検証サイクルは、読み出し動作中又は検証動作中に前記選択された不揮発性メモリセルを通る電流が、第1のスレッショルド電流値以下であることを検証するステップを含み、
前記読み出し動作中又は検証動作中に前記選択された不揮発性メモリセルを通る前記電流が前記第1のスレッショルド電流値以下である場合、読み出し動作中又は検証動作中に前記選択された不揮発性メモリセルを通る電流が、第2のスレッショルド電流値以下になるまで、第2のプログラミングプロセスを実行するステップを更に含む
、方法。
【請求項5】
前記第2のプログラミングプロセスが、前記選択された不揮発性メモリセルの前記制御ゲートに、大きさが増加していく電圧パルスを印加するステップを含む、請求項4に記載の方法。
【請求項6】
前記第2のプログラミングプロセスが、前記選択された不揮発性メモリセルの前記消去ゲートに、大きさが増加していく電圧パルスを印加するステップを更に含む、請求項5に記載の方法。
【請求項7】
前記第2のプログラミングプロセスが、前記選択された不揮発性メモリセルの前記消去ゲートに、大きさが減少していく電圧パルスを印加するステップを更に含む、請求項5に記載の方法。
【請求項8】
N個の可能な値のうちの1つを記憶するために、選択された不揮発性メモリセルをプログラミングする方法であって、Nが2より大きい整数であり、前記選択された不揮発性メモリセルが、浮遊ゲート、制御ゲート端子、消去ゲート端子、及びソース線端子を含み、前記方法が、
複数のプログラム検証サイクルを含む第1のプログラミングプロセスを実行するステップであって、大きさが増加していくプログラミング電圧が、第1のプログラム検証サイクルの後に、各プログラム検証サイクル内の前記選択された不揮発性メモリセルの端子に印加される、実行するステップを含み、
第1のプログラミングプロセスを実行する前記ステップは、
前記選択された不揮発性メモリセルを通る電流が第3のスレッショルド電流値以下である場合、前記選択された不揮発性メモリセルを消去し、前記第1のプログラミングプロセスを繰り返すステップを更に含む
、方法。
【請求項9】
読み出し動作中又は検証動作中に前記選択された不揮発性メモリセルを通る電流が第4のスレッショルド電流値以下になるまで、第3のプログラミングプロセスを実行するステップを更に含む、請求項
8に記載の方法
。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本出願は、2019年11月11日に出願された米国特許仮出願第62/933,809号、表題「PRECISE PROGRAMMING METHOD AND APPARATUS FOR ANALOG NEURAL MEMORY IN A DEEP LEARNING ARTIFICIAL NEURAL NETWORK」、及び2020年1月23日に出願された米国特許出願第16/751,202号、表題「PRECISE PROGRAMMING METHOD AND APPARATUS FOR ANALOG NEURAL MEMORY IN A DEEP LEARNING ARTIFICIAL NEURAL NETWORK」に対する優先権を主張する。
【0002】
(発明の分野)
人工ニューラルネットワーク内のベクトル行列乗算(VMM)アレイ内の不揮発性メモリセルの浮遊ゲートに精確な量の電荷を精密かつ迅速に堆積させるための精密プログラミングアルゴリズム及び装置について、多数の実施形態が開示される。
【背景技術】
【0003】
人工ニューラルネットワークは、生物学的ニューラルネットワーク(動物の中枢神経系、特に脳)を模倣しており、多数の入力に依存し得、かつ、一般的に未知である関数を推定する又は近似するために使用される。人工ニューラルネットワークは、概して、メッセージを交換する相互接続した「ニューロン」の層を含む。
【0004】
図1は人工ニューラルネットワークを示しており、図中、円は、入力又はニューロンの層を表す。接続(シナプスと呼ばれる)は、矢印によって表され、経験に基づいて調整され得る数値の重みを有する。これにより、人工ニューラルネットワークは入力に適応し、学習可能になる。典型的には、人工ニューラルネットワークは、複数の入力の層を含む。典型的には、1つ以上のニューロンの中間層、及びニューラルネットワークの出力を提供するニューロンの出力層が存在する。それぞれのレベルでニューロンは、シナプスから受信したデータに基づいて個々に又は合わせて決定を行う。
【0005】
高性能情報処理用の人工ニューラルネットワークの開発における主要な課題の1つは、適切なハードウェア技術の欠如である。実際には、実用人工ニューラルネットワークは、非常に多数のシナプスに依拠しており、これによりニューロン間の高い接続性、すなわち、非常に高度な計算処理の並列化が可能となる。原理的には、このような複雑性は、デジタルスーパーコンピュータ又は専用グラフィックプロセッシングユニットクラスタによって実現が可能である。しかしながら、高コストに加え、これらのアプローチはまた、生物学的ネットワークが主として低精度のアナログ計算を実施するのではるかに少ないエネルギーしか消費しないのと比較して、エネルギー効率が劣っていることに悩まされている。人工ニューラルネットワークにはCMOSアナログ回路が使用されてきたが、ほとんどのCMOS実装シナプスは、多数のニューロン及びシナプスを前提とすると、嵩高過ぎていた。
【0006】
出願人は以前に、参照により組み込まれる米国特許公開2017/0337466号として公開された米国特許出願第15/594,439号において、シナプスとして1つ以上の不揮発性メモリアレイを利用する人工(アナログ)ニューラルネットワークを開示した。不揮発性メモリアレイは、アナログニューロモーフィックメモリとして動作する。本明細書で使用される場合、ニューロモーフィックという用語は、神経システムのモデルを実装する回路を意味する。アナログニューロモーフィックメモリは、第1の複数の入力を受信して、それから第1の複数の出力を生成するように構成されている第1の複数のシナプス、及び第1の複数の出力を受信するように構成された第1の複数のニューロンを含む。第1の複数のシナプスは複数のメモリセルを含み、各メモリセルは、半導体基板内に形成された、間にチャネル領域が延在している離間したソース領域及びドレイン領域と、チャネル領域の第1の部分の上方に配設され、チャネル領域の第1の部分から絶縁された浮遊ゲートと、チャネル領域の第2の部分の上方に配設され、チャネル領域の第2の部分から絶縁された非浮遊ゲートと、を含む。複数のメモリセルのそれぞれは、浮遊ゲート上のある個数の電子に対応する重み値を記憶するように構成されている。複数のメモリセルは、第1の複数の入力に、記憶された重み値を乗算して第1の複数の出力を生成するように構成される。この様式で配置されるメモリセルのアレイは、ベクトル行列乗算(VMM)アレイと称され得る。
【0007】
アナログニューロモーフィックメモリアレイに使用される各不揮発性メモリセルは、消去・プログラムに対応して、浮遊ゲート内に電荷、すなわち電子の数、を非常に特異的かつ精確な量で保持しなければならない。例えば、各浮遊ゲートはN個の異なる値のうちの1つを保持しなければならず、ここで、Nは、各セルによって示され得る異なる重みの数である。Nの例としては、16、32、64、128及び256が挙げられる。アナログニューロモーフィックメモリシステムにおける1つの課題は、選択されたセルを、Nの異なる値に必要とされる精度及び粒度でプログラムする能力である。
【0008】
必要とされるのは、アナログニューロモーフィックメモリにおいてVMMアレイと共に使用するのに適した、改善されたプログラミングシステム及び方法である。
【発明の概要】
【0009】
アナログニューロモーフィックメモリ内のベクトル行列乗算(VMM)アレイ内の不揮発性メモリセルの浮遊ゲートに精確な量の電荷を精密かつ迅速に堆積させるための精密プログラミングアルゴリズム及び装置について、多数の実施形態が開示される。それにより、選択されたセルは、N個の異なる値のうちの1つを保持するために、極めて高い精度でプログラミングすることができる。
【0010】
【0011】
【0012】
【0013】
【0014】
【0015】
【0016】
【0017】
【0018】
【0019】
【0020】
【0021】
【0022】
【0023】
【0024】
【0025】
【0026】
【0027】
【0028】
【0029】
【0030】
【0031】
【0032】
【0033】
【0034】
【0035】
【0036】
【0037】
【0038】
【0039】
【0040】
【0041】
【0042】
【0043】
【0044】
【0045】
【0046】
【0047】
【0048】
【0049】
【0050】
【0051】
【0052】
【0053】
【0054】
【0055】
【0056】
【0057】
【0058】
【0059】
【0060】
【0061】
【0062】
【0063】
【0064】
【0065】
【0066】
【0067】
【0068】
【0069】
【0070】
【図面の簡単な説明】
【0071】
【
図1】先行技術の人工ニューラルネットワークを示す図である。
【
図2】先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図3】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図4】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図5】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図6】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図7】先行技術の積層ゲートフラッシュメモリセルを示す。
【
図8】1つ以上の不揮発性メモリアレイを利用する例示的な人工ニューラルネットワークの様々なレベルを示す図である。
【
図9】ベクトル行列乗算システムを示すブロック図である。
【
図10】1つ以上のベクトル行列乗算システムを利用する例示的な人工ニューラルネットワークを示すブロック図である。
【
図11】ベクトル行列乗算システムの別の実施形態を示す。
【
図12】ベクトル行列乗算システムの別の実施形態を示す。
【
図13】ベクトル行列乗算システムの別の実施形態を示す。
【
図14】ベクトル行列乗算システムの別の実施形態を示す。
【
図15】ベクトル行列乗算システムの別の実施形態を示す。
【
図16】ベクトル行列乗算システムの別の実施形態を示す。
【
図17】ベクトル行列乗算システムの別の実施形態を示す。
【
図18】ベクトル行列乗算システムの別の実施形態を示す。
【
図19】ベクトル行列乗算システムの別の実施形態を示す。
【
図20】ベクトル行列乗算システムの別の実施形態を示す。
【
図21】ベクトル行列乗算システムの別の実施形態を示す。
【
図22】ベクトル行列乗算システムの別の実施形態を示す。
【
図23】ベクトル行列乗算システムの別の実施形態を示す。
【
図24】ベクトル行列乗算システムの別の実施形態を示す。
【
図25】先行技術の長・短期メモリシステムを示す。
【
図26】長・短期メモリシステムで使用する例示的なセルを示す。
【
図29】先行技術のゲート付き回帰型ユニットシステムを示す。
【
図30】ゲート付き回帰型ユニットシステムで使用する例示的なセルを示す。
【
図33A】不揮発性メモリセルをプログラミングする方法の一実施形態を示す。
【
図33B】不揮発性メモリセルをプログラミングする方法の別の実施形態を示す。
【
図34】粗プログラミング方法の一実施形態を示す。
【
図35】不揮発性メモリセルのプログラミングで使用される例示的なパルスを示す。
【
図36A】不揮発性メモリセルのプログラミングで使用される例示的なパルスを示す。
【
図36B】不揮発性メモリセルのプログラミングで使用される例示的な相補的増分及び減少パルスを示す。
【
図37】セルの傾斜特性に基づいてプログラミングパラメータを調節する、不揮発性メモリセルのプログラミングのための較正アルゴリズムを示す。
【
図39】不揮発性メモリセルのプログラミングのための較正アルゴリズムを示す。
【
図40】不揮発性メモリセルのプログラミングのための較正アルゴリズムを示す。
【
図41】
図40の較正アルゴリズムで使用される回路を示す。
【
図42】プログラミング動作中に不揮発性メモリセルの制御ゲートに印加される電圧の例示的な進行を示す。
【
図43】プログラミング動作中に不揮発性メモリセルの制御ゲートに印加される電圧の例示的な進行を示す。
【
図44】ベクトル乗算行列システム内の不揮発性メモリセルのプログラミング中にプログラミング電圧を印加するためのシステムを示す。
【
図45】変調器、アナログ-デジタル変換器、及び加算器を含む出力ブロックを有するベクトル乗算行列システムを示す。
【
図49A】ニューロン出力用の積分型アナログ-デジタル変換器の一実施形態を示す。
【
図49B】
図49Aの積分型アナログ-デジタル変換器の経時的な電圧出力を示すグラフを示す。
【
図49C】ニューロン出力用の積分型アナログ-デジタル変換器の別の実施形態を示す。
【
図49D】
図49Cの積分型アナログ-デジタル変換器の経時的な電圧出力を示すグラフを示す。
【
図49E】ニューロン出力用の積分型アナログ-デジタル変換器の別の実施形態を示す。
【
図49F】ニューロン出力用の積分型アナログ-デジタル変換器の別の実施形態を示す。
【
図50A】ニューロン出力用の逐次比較型アナログ-デジタル変換器を示す。
【
図50B】ニューロン出力用の逐次比較型アナログ-デジタル変換器を示す。
【
図51】シグマデルタ型アナログ-デジタル変換器の一実施形態を示す。
【
図52A】ランプ型アナログ-デジタル変換器の一実施形態を示す。
【
図52B】ランプ型アナログ-デジタル変換器の一実施形態を示す。
【
図52C】ランプ型アナログ-デジタル変換器の一実施形態を示す。
【
図53】アルゴリズム型アナログ-デジタル変換器の一実施形態を示す。
【
図55】
図54の論理マルチビットセルをプログラミングする方法を示す。
【発明を実施するための形態】
【0072】
本発明の人工ニューラルネットワークは、CMOS技術及び不揮発性メモリアレイの組み合わせを利用する。
[不揮発性メモリセル]
【0073】
デジタル不揮発性メモリは周知である。例えば、参照により本明細書に組み込まれる、米国特許第5,029,130号(「’130号特許」)は、フラッシュメモリセルの一種であるスプリットゲート型不揮発性メモリセルのアレイを開示する。このようなメモリセル210を
図2に示す。各メモリセル210は、半導体基板12内に形成されたソース領域14とドレイン領域16と、を含み、ソース領域14とドレイン領域16の間にはチャネル領域18がある。浮遊ゲート20は、チャネル領域18の第1の部分の上方に絶縁されて形成され(並びに、チャネル領域18の第1の部分の導電性を制御して)、ソース領域14の一部分の上方にかけて形成される。ワード線端子22(典型的には、ワード線に結合される)は、チャネル領域18の第2の部分の上方に配設され、チャネル領域18の第2の部分から絶縁された、(並びに、チャネル領域18の第2の部分の導電性を制御する)第1の部分と、上に向かって浮遊ゲート20の上方にかけて延在する第2の部分と、を有する。浮遊ゲート20及びワード線端子22は、ゲート酸化物によって基板12から絶縁される。ビット線端子24はドレイン領域16に結合される。
【0074】
ワード線端子22に高圧正電圧を印加することによって、メモリセル210に対して消去が行われ(電子が浮遊ゲートから除去される)、これによって、浮遊ゲート20の電子は、浮遊ゲート20からワード線端子22までそれらの間にある絶縁体の中をファウラーノルドハイム(Fowler-Nordheim)トンネリングを介して通過する。
【0075】
メモリセル210は、ワード線端子22に正電圧、及びソース領域14に正電圧を印加することによってプログラムされる(電子が浮遊ゲートに印加される)。電子電流は、ソース領域14(ソース線端子)からドレイン領域16に向かって流れる。電子は加速し、ワード線端子22と浮遊ゲート20との間の間隙に達すると、加熱される。熱せられた電子の一部が、浮遊ゲート20からの静電引力に起因して、浮遊ゲート20にゲート酸化物を介して注入される。
【0076】
メモリセル210は、ドレイン領域16及びワード線端子22に正の読み出し電圧を印加する(ワード線端子の下方のチャネル領域18の部分をオンにする)ことによって、読み出される。浮遊ゲート20が正に帯電する(すなわち、電子を消去する)と、浮遊ゲート20の下方のチャネル領域18の部分も同様にオンになり、電流はチャネル領域18を流れ、これは、消去された状態つまり「1」の状態として検知される。浮遊ゲート20が負に帯電する(すなわち、電子でプログラムされる)と、浮遊ゲート20の下方のチャネル領域の部分はほとんど又は完全にオフになり、電流はチャネル領域18を流れず(又はほとんど流れず)、これは、プログラムされた状態つまり「0」の状態として検知される。
【0077】
表1は、読み出し、消去、及びプログラム動作を実行するためのメモリセル110の端子に印加され得る典型的な電圧範囲を示す。
表1:
図2のフラッシュメモリセル210の動作
【表1】
「読み出し1」は、セル電流がビット線に出力される読み出しモードである。「読み出し2」は、セル電流がソース線端子の出力である読み出しモードである。
【0078】
図3は、制御ゲート(control gate、CG)端子28を追加した、
図2のメモリセル210と同様のメモリセル310を示す。制御ゲート端子28は、プログラミング中に高電圧(例えば、10V)、消去中に低又は負電圧(例えば、0v/-8V)、読み出し中に低又は中程度電圧(例えば、0v/2.5V)でバイアスされる。他の端子は、
図2の端子と同様にバイアスされる。
【0079】
図4は、ソース領域14と、ドレイン領域16と、チャネル領域18の第1の部分の上方にある浮遊ゲート20と、チャネル領域18の第2の部分の上方にある選択ゲート22(典型的には、ワード線、WL、に結合される)と、浮遊ゲート20の上方にある制御ゲート28と、ソース領域14の上方にある消去ゲート30と、を含む4ゲートメモリセル410を示す。この構成は、あらゆる目的のため参照により本明細書に組み込まれる、米国特許第6,747,310号に記載されている。ここで、全てのゲートは、浮遊ゲート20を除いて、非浮遊ゲートであり、つまり、それらは電圧源に電気的に接続される又は接続可能である。プログラミングは、熱せられた電子がチャネル領域18から浮遊ゲート20にその電子自体を注入することによって実行される。消去は、電子が浮遊ゲート20から消去ゲート30へトンネリングすることによって実行される。
【0080】
表2は、読み出し、消去、及びプログラム動作を実行するためのメモリセル410の端子に印加され得る典型的な電圧範囲を示す。
表2:
図4のフラッシュメモリセル410の動作
【表2】
「読み出し1」は、セル電流がビット線に出力される読み出しモードである。「読み出し2」は、セル電流がソース線端子の出力である読み出しモードである。
【0081】
図5は、メモリセル510が消去ゲート(erase gate、EG)端子を含まないことを除いて、
図4のメモリセル410と同様のメモリセル510を示す。消去は、基板18を高電圧にバイアスし、制御ゲートCG端子28を低電圧又は負電圧にバイアスすることによって行われる。代替的に、ワード線端子22を正電圧にバイアスし、制御ゲート端子28を負電圧にバイアスすることによって、消去が行われる。プログラミング及び読み出しは、
図4のものと同様である。
【0082】
図6は、別の種類のフラッシュメモリセルである、3ゲートメモリセル610を示す。メモリセル610は、メモリセル610が別個の制御ゲート端子を有しないことを除いて、
図4のメモリセル410と同一である。(消去ゲート端子の使用を通じて消去が起こる)消去動作及び読み出し動作は、制御ゲートバイアスが印加されないことを除いて、
図4のものと同様である。プログラミング動作もまた、制御ゲートバイアスなしで行われるため、結果として、プログラム動作中は、制御ゲートバイアスの不足を補償するため、より高い電圧がソース線端子に印加されなければならない。
【0083】
表3は、読み出し、消去、及びプログラム動作を実行するためのメモリセル610の端子に印加され得る典型的な電圧範囲を示す。
表3:
図6のフラッシュメモリセル610の動作
【表3】
「読み出し1」は、セル電流がビット線に出力される読み出しモードである。「読み出し2」は、セル電流がソース線端子の出力である読み出しモードである。
【0084】
図7は、別の種類のフラッシュメモリセルである、積層ゲートメモリセル710を示す。メモリセル710は、浮遊ゲート20がチャネル領域18全体の上方にわたって延在し、制御ゲート端子22(ワード線に結合される)が絶縁層(図示せず)によって分離されて浮遊ゲート20の上方に延在することを除いて、
図2のメモリセル210と同様である。消去、プログラミング、及び読み出し動作は、メモリセル210について前述したものと同様の方法で動作する。
【0085】
表4は、読み出し、消去、及びプログラム動作を実行するためのメモリセル710及び基板12の端子に印加され得る典型的な電圧範囲を示す。
表4:
図7のフラッシュメモリセル710の動作
【表4】
【0086】
「読み出し1」は、セル電流がビット線に出力される読み出しモードである。「読み出し2」は、セル電流がソース線端子の出力である読み出しモードである。任意選択的に、メモリセル210、310、410、510、610、又は710の行及び列を含むアレイでは、ソース線は、メモリセルの1行又はメモリセルの隣接する2行に結合され得る。すなわち、ソース線端子は、メモリセルの隣接する行によって共有され得る。
【0087】
上記の人工ニューラルネットワークにおける不揮発性メモリセルの種類のうちの1つを含むメモリアレイを利用するために、2つの修正が行われる。第1に、以下に更に説明されるように、アレイ内の他のメモリセルのメモリ状態に悪影響を与えずに各メモリセルを個々にプログラム、消去、及び読み出しできるように線を構成する。第2に、メモリセルの連続(アナログ)プログラミングを提供する。
【0088】
具体的には、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲート上の電荷)を、完全に消去された状態から完全にプログラムされた状態へ、独立して、かつ他のメモリセルの乱れが最小で、連続的に変えることができる。別の実施形態では、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全にプログラムされた状態から完全に消去された状態へ、及び逆もまた同様に、独立して、かつ他のメモリセルの乱れが最小で、連続的に変えることができる。これはつまり、セル記憶がアナログであるか、又は多数の不連続値(16又は64の異なる値など)のうちの1つを最低限記憶できることを意味し、これにより、メモリアレイ内の全てのセルが非常に精密に、かつ個別に調整可能となり、またメモリアレイは記憶に対して理想的になり、ニューラルネットワークのシナプシスの重みに微調整が可能となる。
【0089】
本明細書に記載される方法及び手段は、限定することなく、SONOS(ケイ素-酸化物-窒化物-酸化物-ケイ素、窒化物中の電荷トラップ)、MONOS(金属-酸化物-窒化物-酸化物-ケイ素、窒化物中の金属電荷トラップ)、ReRAM(抵抗変化型メモリ)、PCM(相変化メモリ)、MRAM(磁気抵抗メモリ)、FeRAM(強誘電体メモリ)、OTP(バイレベル又はマルチレベルの1回のみのプログラムが可能)及びCeRAM(強相関電子メモリ)などの他の不揮発性メモリ技術に適用することができる。本明細書に記載される方法及び手段は、限定することなく、SRAM、DRAM、及び他の揮発性シナプスセルなどのニューラルネットワークに使用される揮発性メモリ技術に適用することができる。
[不揮発性メモリセルアレイを使用するニューラルネットワーク]
【0090】
図8は、本実施形態の不揮発性メモリアレイを利用するニューラルネットワークの非限定例を概念的に示す。この例は、顔認識アプリケーション用に不揮発性メモリアレイニューラルネットワークを使用するが、不揮発性メモリアレイベースのニューラルネットワークを使用して他の適切なアプリケーションを実施することも可能である。
【0091】
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の異なる特徴マップを生成する。
【0092】
本例では、層C1において、それぞれ30×30ピクセルを有する16個の特徴マップが存在する。各ピクセルは、入力とカーネルとの乗算から抽出された新しい特徴ピクセルであり、したがって、各特徴マップは、2次元アレイであり、したがってこの例では、層C1は、2次元アレイの16層を構成する(本明細書で言及される層及びアレイは、必ずしも物理的関係ではなく論理的な関係であり、すなわち、アレイは必ずしも物理的な2次元アレイに配向されないことに留意されたい)。層C1内の16個の特徴マップの各々は、フィルタスキャンに適用される異なるシナプス重みのセット16個のうちの1つによって生成される。C1特徴マップは全て、境界同定など、同じ画像特徴の異なる態様を対象とすることができる。例えば、第1のマップ(この第1のマップを生成するのに使用される全てのスキャンに共有される第1の重みセットを使用して生成される)は、円形エッジを識別することができ、第2のマップ(第1の重みセットと異なる第2の重みセットを使用して生成される)は、長方形エッジ又は特定の特徴のアスペクト比などを識別することができる。
【0093】
層C1から、各特徴マップ内の重なり合わずに連続する2×2領域からの値をプールする層S1へ行く前には、活性化関数P1(プーリング)が適用される。プーリング関数の目的は、近隣の位置を平均すること(又はmax関数を使用することも可能である)、例えばエッジ位置の依存を低減すること、及び次の段階に行く前にデータサイズを低減することである。層S1において、16個の15×15特徴マップ(すなわち、それぞれ15×15ピクセルの異なるアレイ16個)が存在する。層S1から層C2に行くシナプスCB2は、S1内のマップを4×4フィルタにより1ピクセルのフィルタシフトでスキャンする。層C2において、22個の12×12特徴マップが存在する。層C2から、各特徴マップ内の重なり合わずに連続する2×2領域からの値をプールする層S2へ行く前には、活性化関数P2(プーリング)が適用される。層S2において、22個の6×6特徴マップが存在する。層S2から層C3へ行くシナプスCB3では活性化関数(プーリング)が適用され、ここで層C3内の全てのニューロンは、CB3のそれぞれのシナプスを介して層S2内の全てのマップに接続する。層C3において、64個のニューロンが存在する。層C3から出力層S3へと行くシナプスCB4は、C3をS3に完全に接続する、すなわち、層C3内の全てのニューロンは、層S3内の全てのニューロンに接続される。S3における出力は、10個のニューロンを含み、ここで出力が最も高いニューロンが、クラスを決定する。この出力は、例えば、元の画像の内容の同定又は分類(クラス分け)を示すことができる。
【0094】
シナプスの各層は、不揮発性メモリセルのアレイ又はアレイの一部を使用して実行される。
【0095】
図9は、その目的のために使用可能なシステムのブロック図である。ベクトル行列乗算(VMM)システム32は、不揮発性メモリセルを含み、ある層と次の層との間のシナプス(図
8のCB1、CB2、CB3、及びCB4など)として利用される。具体的には、VMMシステム32は、行及び列に配置された不揮発性メモリセルを含むVMMアレイ33、消去ゲート及びワード線ゲートデコーダ34、制御ゲートデコーダ35、ビット線デコーダ36、並びにソース線デコーダ37を含み、それらのデコーダは不揮発性メモリセルアレイ33に対するそれぞれの入力をデコードする。VMMアレイ33への入力は、消去ゲート及びワード線ゲートデコーダ34から、又は制御ゲートデコーダ35から行うことができる。この例におけるソース線デコーダ37はまた、VMMアレイ33の出力をデコードする。代替的に、ビット線デコーダ36が、VMMアレイ33の出力をデコードすることができる。
【0096】
VMMアレイ33は、2つの目的を果たす。第1に、それは、VMMシステム32によって使用される重みを記憶する。第2に、VMMアレイ33は、効果的に、入力に、VMMアレイ33に記憶された重みを乗算し、それらを出力線(ソース線又はビット線)ごとに合計して出力を生成し、これは、次の層への入力又は最後の層への入力になる。乗算及び加算の関数を実行することによって、VMMアレイ33は、別個の乗算及び加算の論理回路の必要性をなくし、また、その場でのメモリ計算により電力効率も良い。
【0097】
VMMアレイ33の出力は、VMMアレイ33の出力を合計してその畳み込み用の単一の値を作成する、差動加算器(加算オペアンプ又は加算カレントミラーなど)38に供給される。差動加算器38は、正の重み入力及び負の重み入力両方の総和を実行して単一の値を出力するように配置される。
【0098】
差動加算器38の合計された出力値は、次に出力を整流する活性化関数回路39に供給される。活性化関数回路39は、シグモイド関数、tanh関数、ReLU関数、又は任意の他の非線形関数を提供し得る。活性化関数回路39の整流された出力値は、次の層(例えば
図8のC1)の特徴マップの要素になり、次いで、次のシナプスに適用されて次の特徴マップ層又は最後の層を生成する。したがって、この例では、VMMアレイ33は、複数のシナプス(それらは、ニューロンの前の層から、又は画像データベースなどの入力層から、入力を受信する)を構成し、加算器38及び活性化関数回路39は、複数のニューロンを構成する。
【0099】
図9のVMMシステム32への入力(WLx、EGx、CGx、及び任意選択的にBLx及びSLx)は、アナログレベル、バイナリレベル、デジタルパルス(この場合、パルスを適切な入力アナログレベルに変換するために、パルス-アナログ変換器PACが必要とされ得る)又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが提供される)であり得、出力は、アナログレベル、バイナリレベル、デジタルパルス、又はデジタルビットであり得る(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが提供される)。
【0100】
図10は、図中でVMMシステム32a、32b、32c、32d及び32eとして標示されたVMMシステム32の多数の層の使用を示すブロック図である。
図10に示されるように、入力(Inputxで示される)は、デジタル-アナログ変換器31によってデジタルからアナログに変換され、入力VMMシステム32aに提供される。変換されたアナログ入力は、電圧又は電流であり得る。第1の層の入力D/A変換は、入力VMMシステム32aの行列乗算器の適切なアナログレベルに入力Inputxをマッピングする関数又はLUT(ルックアップテーブル)を使用することによって行うことができる。入力変換はまた、外部アナログ入力を入力VMMシステム32aへのマッピングされたアナログ入力に変換するように、アナログ-アナログ(A/A)変換器によって行うこともできる。入力変換はまた、外部デジタル入力を入力VMMシステム32aへのマッピングされたデジタルパルス(単数又は複数)に変換するために、デジタル-デジタルパルス(D/P)変換器によって行うこともできる。
【0101】
入力VMMシステム32aによって生成された出力は、次に、次のVMMシステム(隠しレベル1)32bへの入力として提供され、次に、次の入力VMMシステム32bは、入力VMMシステム(隠しレベル2)32cへの入力として提供される出力を生成する、などとなる。VMMシステム32の様々な層は、畳み込みニューラルネットワーク(convolutional neural network、CNN)のシナプス及びニューロンの各層として機能する。VMMシステム32a、32b、32c、32d及び32eはそれぞれ、対応の不揮発性メモリアレイを含むスタンドアローンの物理的システムとすることができ、又は複数のVMMシステムは、同じ物理的不揮発性メモリアレイの異なる部分を利用することができ、又は複数のVMMシステムは、同じ物理的不揮発性メモリアレイの重なり合う部分を利用することができる。それぞれのVMMシステム32a、32b、32c、32d、及び32eはまた、そのアレイ又はニューロンの様々な部分に対して時間多重化され得る。
図10に示される例は、5つの層(32a、32b、32c、32d、32e)、すなわち、1つの入力層(32a)、2つの隠れ層(32b、32c)、及び2つの完全に接続された層(32d、32e)を含む。当業者であれば、これは単なる例示であり、代わりにシステムが2つを超える隠れ層及び2つを超える完全に接続された層を含み得ることを理解するであろう。
[VMMアレイ]
【0102】
図11は、
図3に示されるメモリセル310に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1100を示す。VMMアレイ1100は、不揮発性メモリセルのメモリアレイ1101と、不揮発性基準メモリセルの基準アレイ1102(アレイの頂部に位置する)と、を含む。代替的に、別の基準アレイが底部に位置することができる。
【0103】
VMMアレイ1100では、制御ゲート線1103などの制御ゲート線が垂直方向に延びており(したがって、行方向の基準アレイ1102が、制御ゲート線1103に直交する)、消去ゲート線1104などの消去ゲート線が水平方向に延びている。ここで、VMMアレイ1100への入力は、制御ゲート線(CG0、CG1、CG2、CG3)に提供され、VMMアレイ1100の出力は、ソース線(SL0、SL1)に現れる。一実施形態では、偶数行のみが使用され、別の実施形態では、奇数行のみが使用される。各ソース線(それぞれSL0、SL1)に加えられる電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0104】
ニューラルネットワークについて本明細書に記載されているように、VMMアレイ1100の不揮発性メモリセル、すなわちVMMアレイ1100のフラッシュメモリは、サブスレッショルド領域で動作するように構成されることが好ましい。
【0105】
本明細書に記載される不揮発性基準メモリセル及び不揮発性メモリセルは、以下のように弱い反転でバイアスされる:
Ids=Io*e(Vg-Vth)/nVt=w*Io*e(Vg)/nVt
式中、w=e(-Vth)/nVtであり、
式中、Idsはドレイン-ソース間電流であり、Vgは、メモリセルのゲート電圧であり、Vthは、メモリセルのスレッショルド電圧であり、Vtは、熱電圧=k*T/qであり、kはボルツマン定数、Tはケルビン温度、qは電子電荷とし、nは、傾斜係数=1+(Cdep/Cox)であり、Cdep=空乏層の容量、及びCoxはゲート酸化物層の容量とし、Ioは、スレッショルド 電圧に等しいゲート電圧におけるメモリセル電流であり、Ioは、(Wt/L)*u*Cox*(n-1)*Vt2に比例し、式中、uはキャリア移動度であり、Wt及びLはそれぞれ、メモリセルの幅及び長さである。
【0106】
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流Idsを入力電圧Vgに変換するI-Vログ変換器を使用した場合:
Vg=n*Vt*log[Ids/wp*Io]
式中、wpは、基準又は周辺メモリセルのwである。
【0107】
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流Idsを入力電圧Vgに変換するI-Vログ変換器を使用した場合:
Vg=n*Vt*log[Ids/wp*Io]
【0108】
式中、wpは、基準又は周辺メモリセルのwである。
【0109】
ベクトル行列乗算器VMMアレイとして使用されるメモリアレイについて、出力電流は以下である:
Iout=wa*Io*e(Vg)/nVt、すなわち
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/nVt
Iin=wp*Io*e(Vg)/nVt
式中、メモリアレイの各メモリセルのwa=wである。
【0110】
ワード線又は制御ゲートは、入力電圧のためのメモリセルの入力として使用することができる。
【0111】
代替的、本明細書に記載されたVMMアレイの不揮発性メモリセルは、線形領域で動作するように構成することができる。
Ids=β*(Vgs-Vth)*Vds; β=u*Cox*Wt/L
W α (Vgs-Vth)
すなわち、直線領域における重量Wは、(Vgs-Vth)に比例する。
【0112】
ワード線又は制御ゲート又はビット線又はソース線は、線形領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、メモリセルの出力として使用することができる。
【0113】
I-V線形変換器用に、線形領域で動作するメモリセル(基準メモリセル又は周辺メモリセルなど)若しくはトランジスタ、又は抵抗器を使用して、入出力電流を入出力電圧に線形変換することができる。
【0114】
代替的に、本明細書に記載されたVMMアレイのメモリセルは、飽和領域で動作するように構成することができる。
Ids=1/2*β*(Vgs-Vth)2; β=u*Cox*Wt/L
W α (Vgs-Vth)2、すなわち重みWは、(Vgs-Vth)2に比例する。
【0115】
ワード線、制御ゲート、又は消去ゲートは、飽和領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、出力ニューロンの出力として使用することができる。
【0116】
代替的に、本明細書に記載されるVMMアレイのメモリセルは、全ての領域又はそれらの組み合わせ(サブスレッショルド、線形、又は飽和)で使用することができる。
【0117】
図9のVMMアレイ33のための他の実施形態は、参照により本明細書に組み込まれる米国特許出願第15/826,345号に記載されている。上記出願に記載されているように、ソース線又はビット線は、ニューロン出力(電流和出力)として使用することができる。
【0118】
図12は、
図2に示されるメモリセル210に特に適したニューロンVMMアレイ1200を示し、入力層と次の層との間のシナプスとして利用される。VMMアレイ1200は、不揮発性メモリセルのメモリアレイ1203と、第1の不揮発性基準メモリセルの基準アレイ1201と、第2の不揮発性基準メモリセルの基準アレイ1202と、を含む。アレイの列方向に配置された基準アレイ1201及び1202は、端子BLR0、BLR1、BLR2、及びBLR3に流入する電流入力を電圧入力WL0、WL1、WL2、及びWL3に変換するように機能する。実際には、第1及び第2の不揮発性基準メモリセルは、電流入力が流入する状態で、マルチプレクサ1214(一部のみ示す)を通してダイオード接続される。基準セルは、標的基準レベルに調整(例えば、プログラム)される。標的基準レベルは、基準ミニアレイマトリックス(図示せず)によって提供される。
【0119】
メモリアレイ1203は、2つの目的を果たす。第1に、VMMアレイ1200により使用される重みを、それぞれのメモリセルに記憶する。第2に、メモリアレイ1203は、メモリセルアレイ1203に記憶された重みによって、入力(すなわち、端子BLR0、BLR1、BLR2、及びBLR3に提供された電流入力であり、これを基準アレイ1201及び1202が入力電圧に変換して、ワード線WL0、WL1、WL2、及びWL3に供給する)を有効に乗算して、次いで、全ての結果(メモリセル電流)を加算して、それぞれのビット線(BL0~BLN)の出力を生成し、この出力は次の層への入力又は最後の層への入力となる。メモリアレイ1203が乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性はなくなり、また、電力効率も良い。ここで、電圧入力はワード線WL0、WL1、WL2、及びWL3に提供され、出力は、読み出し(推論)動作中にビット線BL0~BLNそれぞれに現れる。各々のビット線BL0~BLNに配置された電流は、その特定のビット線に接続された全ての不揮発性メモリセルからの電流の合計関数を実行する。
【0120】
表5は、VMMアレイ1200の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示し、FLTは、浮遊、すなわち電圧が印可されないことを示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表5:
図12のVMMアレイ1200の動作
【表5】
【0121】
図13は、
図2に示されるメモリセル210に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1300を示す。VMMアレイ1300は、不揮発性メモリセルのメモリアレイ1303と、第1の不揮発性基準メモリセルの基準アレイ1301と、第2の不揮発性基準メモリセルの基準アレイ1302と、を含む。基準アレイ1301及び1302は、VMMアレイ1300の行方向に延びる。VMMアレイは、VMMアレイ1300においてワード線が垂直方向に延びることを除いて、VMM 1000と同様である。ここで、入力はワード線(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)に提供され、出力は、読み出し動作中にソース線(SL0、SL1)に現れる。各ソース線に加えられる電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0122】
表6は、VMMアレイ1300の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表6:
図13のVMMアレイ1300の動作
【表6】
【0123】
図14は、
図3に示されるメモリセル310に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1400を示す。VMMアレイ1400は、不揮発性メモリセルのメモリアレイ1403と、第1の不揮発性基準メモリセルの基準アレイ1401と、第2の不揮発性基準メモリセルの基準アレイ1402と、を含む。基準アレイ1401及び1402は、端子BLR0、BLR1、BLR2、及びBLR3に流入する電流入力を電圧入力CG0、CG1、CG2、及びCG3に変換するように機能する。実際には、第1及び第2の不揮発性基準メモリセルは、電流入力がBLR0、BLR1、BLR2、及びBLR3を通って流入する状態で、マルチプレクサ1412(一部のみ示す)を通してダイオード接続される。マルチプレクサ1412は、読み出し動作中に第1及び第2の不揮発性基準メモリセルの各々のビット線(BLR0など)の一定電圧を確実にするために、それぞれのマルチプレクサ1405及びカスコーディングトランジスタ1404を各々含む。基準セルは、標的基準レベルに調整される。
【0124】
メモリアレイ1403は、2つの目的を果たす。第1に、VMMアレイ1400によって使用される重みを記憶する。第2に、メモリアレイ1403は、入力(端子BLR0、BLR1、BLR2、及びBLR3に提供された電流入力であり、基準アレイ1401及び1402がこれらの電流入力を入力電圧に変換して、制御ゲート(CG0、CG1、CG2、及びCG3)に供給する)に、メモリセルアレイに記憶された重みを掛けて、次いで、全ての結果(セル電流)を加算して出力を生成し、この出力はBL0~BLNに出現し、次の層への入力又は最後の層への入力となる。メモリアレイが乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性がなくなり、また、電力効率も良い。ここで、入力は制御ゲート線(CG0、CG1、CG2、及びCG3)に提供され、出力は、読み出し動作中にビット線(BL0~BLN)に現れる。各ビット線に加えられる電流は、その特定のビット線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0125】
VMMアレイ1400は、メモリアレイ1403内の不揮発性メモリセルの一方向調整を実施する。すなわち、各不揮発性メモリセルは消去され、次いで、浮遊ゲート上の所望の電荷に達するまで部分的にプログラムされる。これは、例えば、以下に記載される精密プログラミング技術を使用して実行することができる。過度に多くの電荷が浮遊ゲートに加えられる場合(誤った値がセルに記憶されるなど)、セルは消去されなければならず、一連の部分的なプログラミング動作をやり直さなければならない。示されるように、同じ消去ゲート(EG0又はEG1など)を共有する2つの行は、一緒に消去される必要があり(ページ消去として知られる)、その後、各セルは、浮遊ゲート上の所望の電荷に達するまで部分的にプログラムされる。
【0126】
表7は、VMMアレイ1400の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタ内の非選択セルの制御ゲート、選択セルとは異なるセクタ内の非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表7:
図14のVMMアレイ1400の動作
【表7】
【0127】
図15は、
図3に示されるメモリセル310に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1500を示す。VMMアレイ1500は、不揮発性メモリセルのメモリアレイ1503と、
第1の不揮発性基準メモリセルの基準アレイ150
1と、第2の不揮発性基準メモリセルの基準アレイ1502とを含む。EG線EGR0、EG0、EG1、及びEGR1は垂直に延び、CG線CG0、CG1、CG2、及びCG3並びにSL線WL0、WL1、WL2、及びWL3は水平に延びる。VMMアレイ1500は、VMMアレイ1500が双方向調整を実装することを除いてVMMアレイ1400と同様であり、個々のセルはそれぞれ、個別のEG線の使用により、浮遊ゲートの所望の電荷量に達するために、完全に消去され、部分的にプログラムされ、必要に応じて部分的に消去することができる。示されるように、基準アレイ1501及び1502は、端子BLR0、BLR1、BLR2及びBLR3内の入力電流を制御ゲート電圧CG0、CG1、CG2及びCG3に変換し(マルチプレクサ1514を介したダイオード接続された基準セルの作用を通じて)、これらの電圧は行方向でメモリセルに印加される。電流出力(ニューロン)は、ビット線BL0~BLN中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
【0128】
表8は、VMMアレイ1500の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタ内の非選択セルの制御ゲート、選択セルとは異なるセクタ内の非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表8:
図15のVMMアレイ1500の動作
【表8】
【0129】
図16は、
図2に示されるメモリセル210に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1600を示す。VMMアレイ1600では、入力INPUT
0、...、INPUT
Nは、ビット線BL
0、...、BL
Nでそれぞれ受信され、出力OUTPUT
1、OUTPUT
2、OUTPUT
3、及びOUTPUT
4は、ソース線SL
0、SL
1、SL
2、及びSL
3にそれぞれ生成される。
【0130】
図17は、
図2に示されるメモリセル210に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1700を示す。この例では、入力INPUT
0、INPUT
1、INPUT
2、及びINPUT
3は、ソース線SL
0、SL
1、SL
2、及びSL
3でそれぞれ受信され、出力OUTPUT
0、...、OUTPUT
Nは、ビット線BL0、...、BL
Nに生成される。
【0131】
図18は、
図2に示されるメモリセル210に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1800を示す。この例では、入力INPUT
0、...、INPUT
Mは、ワード線WL
0、...、WL
Mでそれぞれ受信され、出力OUTPUT
0、...、OUTPUT
Nは、ビット線BL
0、...、BL
Nに生成される。
【0132】
図19は、
図3に示されるメモリセル310に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1900を示す。この例では、入力INPUT
0、...、INPUT
Mは、ワード線WL
0、...、WL
Mでそれぞれ受信され、出力OUTPUT
0、...、OUTPUT
Nは、ビット線BL
0、...、BL
Nに生成される。
【0133】
図20は、
図4に示されるメモリセル410に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ2000を示す。この例では、入力INPUT
0、...、INPUT
nがそれぞれ垂直制御ゲート線CG
0、...、CG
Nで受信され、出力OUTPUT
1及びOUTPUT
2がソース線SL
0及びSL
1に生成される。
【0134】
図21は、
図4に示されるメモリセル410に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ2100を示す。この例では、入力INPUT
0、...、INPUT
Nは、ビット線BL
0、...、BL
Nにそれぞれ結合されているビット線制御ゲート2901-1、2901-2、...、2901-(N-1)及び2901-Nのゲートでそれぞれ受信される。例示的な出力OUTPUT
1及びOUTPUT
2が、ソース線SL
0及びSL
1に生成される。
【0135】
図22は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ2200を示す。この例では、入力INPUT
0、...、INPUT
Mは、ワード線WL
0、...、WL
Mで受信され、出力OUTPUT
0、...、OUTPUT
Nは、ビット線BL
0、...、BL
Nにそれぞれ生成される。
【0136】
図23は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ2300を示す。この例では、入力INPUT
0、...、INPUT
Mは、制御ゲート線CG
0、...、CG
Mで受信される。出力OUTPUT
0、...、OUTPUT
Nは、垂直ソース線SL
0、...、SL
Nにそれぞれ生成され、各ソース線SL
iは、列i内の全てのメモリセルのソース線に結合されている。
【0137】
図24は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ2400を示す。この例では、入力INPUT
0、...、INPUT
Mは、制御ゲート線CG
0、...、CG
Mで受信される。出力OUTPUT
0、...、OUTPUT
Nは、垂直ビット線BL
0、...、BL
Nにそれぞれ生成され、各ビット線BL
iは、列i内の全てのメモリセルのビット線に結合されている。
[長・短期メモリ]
【0138】
先行技術は、長・短期メモリ(long short-term memory、LSTM)として知られる概念を含む。LSTMは、人工ニューラルネットワークで使用されることが多い。LSTMは、人工ニューラルネットワークが、所定の任意の期間にわたって情報を覚え、後続の動作においてその情報を使用することを可能にする。従来のLSTMは、セル、入力ゲート、出力ゲート、及び忘却ゲートを含む。3つのゲートは、セル内及びセル外への情報の流れ、及び情報がLSTM内で記憶される期間を調整する。VMMは、LSTMにおいて特に有用である。
【0139】
図25は、例示的なLSTM2500を示す。この例におけるLSTM2500は、セル2501、2502、2503、及び2504を含む。セル2501は、入力ベクトルx
0を受け取り、出力ベクトルh
0及びセル状態ベクトルc
0を生成する。セル2502は、入力ベクトルx
1と、セル2501からの出力ベクトル(隠れ状態)h
0と、セル2501からのセル状態c
0とを受け取り、出力ベクトルh
1とセル状態ベクトルc
1とを生成する。セル2503は、入力ベクトルx
2と、セル2502からの出力ベクトル(隠れ状態)h
1と、セル2502からのセル状態c
1とを受け取り、出力ベクトルh
2とセル状態ベクトルc
2とを生成する。セル2504は、入力ベクトルx
3と、セル2503からの出力ベクトル(隠れ状態)h
2と、セル2503からのセル状態c
2とを受け取り、出力ベクトルh
3を生成する。追加のセルも使用可能であり、4つのセルを有するLSTMは、単なる例である。
【0140】
図26は、
図25のセル2501、2502、2503及び2504に使用可能なLSTMセル2600の例示的な実装を示す。LSTMセル2600は、入力ベクトルx(t)と、先行するセルからのセル状態ベクトルc(t-1)と、先行するセルからの出力ベクトルh(t-1)とを受け取り、セル状態ベクトルc(t)及び出力ベクトルh(t)を生成する。
【0141】
LSTMセル2600は、シグモイド関数デバイス2601、2602、及び2603を含み、各々が0~1の数を適用することで、入力ベクトルのそれぞれの成分が出力ベクトルに寄与する程度を制御する。LSTMセル2600はまた、入力ベクトルに双曲線正接関数を適用するためのtanhデバイス2604及び2605と、2つのベクトルを乗算するための乗算器デバイス2606、2607、及び2608と、2つのベクトルを加算するための加算器デバイス2609と、を含む。出力ベクトルh(t)は、システム内の次のLSTMセルに提供することができ、又は他の目的でアクセスすることができる。
【0142】
図27は、LSTMセル2600の一実装の一例であるLSTMセル2700を示す。読者の便宜のために、LSTMセル2600からの同じ採番方法が、LSTMセル2700で使用される。シグモイド関数デバイス2601、2602、及び2603、並びにtanhデバイス2604は各々、複数のVMMアレイ2701及び活性化回路ブロック2702を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるLSTMセルにおいて特に有用であることが理解できる。
【0143】
LSTMセル2700の代替例(及びLSTMセル2600の一実装の別の例)を
図28に示す。
図28では、シグモイド関数デバイス2601、2602及び2603、並びにtanhデバイス2604は、同じ物理ハードウェア(VMMアレイ2801及び活性化関数ブロック2802)を、時分割多重化された方式で共有し得る。LSTMセル2800はまた、2つのベクトルを乗算するための乗算器デバイス2803と、2つのベクトルを加算するための加算器デバイス2808と、(活性化回路ブロック2802を含む)tanhデバイス2605と、シグモイド関数ブロック2802から出力される値i(t)を記憶するレジスタ2807と、マルチプレクサ2810を介して乗算器デバイス2803から出力される値f(t)
*c(t-1)を記憶するレジスタ2804と、マルチプレクサ2810を介して乗算器デバイス2803から出力される値i(t)
*u(t)を記憶するレジスタ2805と、マルチプレクサ2810を介して乗算器デバイス2803から出力される値o(t)
*c~(t)を記憶するレジスタ2806と、マルチプレクサ2809と、を含む。
【0144】
LSTMセル2700がVMMアレイ2701とそれぞれの活性化関数ブロック2702との複数のセットを含むのに対し、LSTMセル2800は、LSTMセル2800の実施形態において複数の層を表すために使用される、VMMアレイ2801と活性化関数ブロック2802との1つのセットのみ含む。LSTMセル2800は、LSTMセル2700と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/4で済むので、LSTM2700よりも必要とするスペースが少ない。
【0145】
LSTMユニットは典型的には複数のVMMアレイを含み、これらは各々、加算器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることが更に理解できる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される実施形態では、VMMアレイ自体の外側に必要とされる回路の最小化を試みる。
[ゲート付き回帰型ユニット]
【0146】
アナログVMM実装を、ゲート付き回帰型ユニット(gated recurrent unit、GRU)に利用することができる。GRUは、反復人工ニューラルネットワーク内のゲート機構である。GRUは、GRUセルが一般にLSTMセルよりも少ない構成要素を含むことを除いて、LSTMに類似している。
【0147】
図29は、例示的なGRU2900を示す。この例におけるGRU2900は、セル2901、2902、2903及び2904を含む。セル2901は、入力ベクトルx
0を受け取り、出力ベクトルh
0を生成する。セル2902は、入力ベクトルx
1と、セル2901からの出力ベクトルh
0とを受け取り、出力ベクトルh
1を生成する。セル2903は、入力ベクトルx
2と、セル2902からの出力ベクトル(隠れ状態)h
1とを受け取り、出力ベクトルh
2を生成する。セル2904は、入力ベクトルx
3と、セル2903からの出力ベクトル(隠れ状態)h
2とを受け取り、出力ベクトルh
3を生成する。追加のセルも使用可能であり、4つのセルを有するGRUは、単なる例である。
【0148】
図30は、
図29のセル2901、2902、2903、及び2904に使用することができるGRUセル3000の例示的な実装を示す。GRUセル3000は、入力ベクトルx(t)と、先行するGRUセルからの出力ベクトルh(t-1)とを受け取り、出力ベクトルh(t)を生成する。GRUセル3000は、シグモイド関数デバイス3001及び3002を含み、それらの各々が、出力ベクトルh(t-1)及び入力ベクトルx(t)からの成分に0~1の数を適用する。GRUセル3000はまた、入力ベクトルに双曲線正接関数を適用するためのtanhデバイス3003と、2つのベクトルを乗算するための複数の乗算器デバイス3004、3005及び3006と、2つのベクトルを加算するための加算器デバイス3007と、1から入力を減算して出力を生成するためのコンプリメンタリデバイス3008とを含む。
【0149】
図31は、GRUセル3000の一実装の一例であるGRUセル3100を示す。読者の便宜のために、GRUセル3000からの同じ採番方法が、GRUセル3100で使用される。
図31から分かるように、シグモイド関数デバイス3001及び3002、並びにtanhデバイス3003は各々、複数のVMMアレイ3101及び活性化関数ブロック3102を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるGRUセルにおいて特に使用されることが理解できる。
【0150】
GRUセル3100の代替例(及びGRUセル3000の一実装の別の例)を
図32に示す。
図32において、GRUセル3200は、VMMアレイ3201及び活性化関数ブロック3202を使用しており、シグモイド関数として構成された場合には、0~1の数を適用することで、入力ベクトルのそれぞれの成分が出力ベクトルに寄与する程度を制御する。
図32では、シグモイド関数デバイス3001及び3002、並びにtanhデバイス3003は、同じ物理ハードウェア(VMMアレイ3201及び活性化関数ブロック3202)を、時分割多重化された方式で共有する。GRUセル3200はまた、2つのベクトルを乗算するための乗算器デバイス3203と、2つのベクトルを加算するための加算器デバイス3205と、1から入力を減算して出力を生成するためのコンプリメンタリデバイス3209と、マルチプレクサ3204と、マルチプレクサ3204を介して乗算器デバイス3203から出力される値h(t-1)
*r(t)を保持するレジスタ3206と、マルチプレクサ3204を介して乗算器デバイス3203から出力される値h(t-1)
*z(t)を保持するレジスタ3207と、マルチプレクサ3204を介して乗算器デバイス3203から出力される値h^(t)
*(1-z((t))を保持するレジスタ3208と、を含む。
【0151】
GRUセル3100がVMMアレイ3101と活性化関数ブロック3102との複数のセットを含むのに対し、GRUセル3200は、GRUセル3200の実施形態において複数の層を表すために使用されるVMMアレイ3201と活性化関数ブロック3202の1つのセットのみを含む。GRUセル3200は、GRUセル3100と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/3で済むので、GRUセル3100よりも必要とするスペースが少ない。
【0152】
GRUを利用するシステムは典型的には複数のVMMアレイを含み、これらの各々は、加算器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることが更に理解できる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される実施形態では、VMMアレイ自体の外側に必要とされる回路の最小化を試みる。
【0153】
VMMアレイへの入力は、アナログレベル、バイナリレベル、タイミングパルス、又はデジタルビットであり得、出力はアナログレベル、バイナリレベル、タイミングパルス、又はデジタルビットであり得る(この場合、出力アナログレベルの電流又は電圧をデジタルビットに変換するために出力ADCが必要とされる)。
【0154】
VMMアレイ内のそれぞれのメモリセルに関して、それぞれの重みwは、単一のメモリセルによって、又は差分セルによって、又は2つのブレンドメモリセル(2つ以上のセルの平均)によって実装することができる。差分セルの場合では、重みwを差分重み(w=w+-w-)として実装するために、2つのメモリセルが必要とされる。2つのブレンドメモリセルの場合は、2つのセルの平均として重みwを実装するために2つのメモリセルが必要とされる。
[VMM内のセルの精密プログラミングのための実施形態]
【0155】
ここで、メモリセルの異なる端子に印加されるプログラミング電圧を増分又は減少させることによって、VMM内のメモリセルを精密にプログラミングするための実施形態を説明する。
【0156】
図33Aは、プログラミング方法3300を示す。最初に、方法は、典型的には受信されるプログラム(調整)コマンドに応じて、開始する(ステップ3301)。次に、一斉プログラム動作が、全てのセルを「0」状態にプログラムする(ステップ3302)。次いで、それぞれのセルが、読み出し動作中に例えば約3~5μAの電流を引き込むように、ソフト消去動作が、全てのセルに対して中間弱消去レベルに消去を行う(ステップ3303)。これは、読み出し動作中に各セルが約20~30μAの電流を引き込む、深く消去された最高レベルとは対照的である。ソフト消去は、例えば、中間セル電流に達するまで増分消去電圧パルスを適用することによって行われる。増分消去電圧パルスは、ハード消去(すなわち、最大消去レベル)から経験されるメモリセルへの劣化を制限するために行われる。次いで、全ての非選択セルで非常に深いプログラムされた状態までセルの浮遊ゲートに電子を追加するハードプログラムが実行されて(ステップ3304)、それらのセルが本当に「オフ」であることを確実にし、すなわち、それらのセル、例えば未使用のメモリセルは、読み出し動作中に無視できる量の電流しか引き込まない。ハードプログラムは、例えば、より高い増分プログラム電圧パルス及び/又はより長いプログラム時間で実行される。
【0157】
次いで、粗プログラミング方法(セルを標的にかなり近づける、例えば、標的の2倍~100倍)が、選択されたセルで実行され(ステップ3305)、続いて精密プログラミング方法が、選択されたセルで実行されて(ステップ3306)、選択されたそれぞれのセルに所望される精確な値をプログラムする。
【0158】
図33Bは、プログラミング方法3300と同様の別のプログラミング方法3310を示す。しかしながら、方法が開始した後(ステップ3301)、
図33Aのステップ3302でのように全てのセルを「0」状態にプログラムするプログラム動作の代わりに、ソフト消去動作が使用されて、全てのセルに対して消去を行って「1」状態にする(ステップ3312)。次いで、各セルが読み出し動作中に約3~5uAの電流を引き込むように、ソフトプログラム動作(ステップ3313)が使用されて、全てのセルを中間レベルにプログラムする。その後、粗プログラミング方法3305及び精密プログラミング方法3306は、
図33Aの場合と同様に実行される。
図33Bの実施形態の変形は、ソフトプログラム動作(ステップ3313)を完全に除去する。精密(微細)プログラミングステップ3306を実行する前に、複数の徐々に小さい粗標的を標的とすることなどによって、複数の粗プログラミング方法を使用して、プログラミングを加速することができる。精密プログラミング方法3306は、例えば、微細(精密)増分プログラム電圧パルス又は一定のプログラムタイミングパルスで行われる。
【0159】
メモリセルの異なる端子を、粗プログラミング方法3305及び精密プログラミング方法3306に使用することができる。すなわち、粗プログラミング方法3305の間、メモリセルの端子のうちの1つ(粗プログラミング端子と称され得る)に印加される電圧は、所望の電圧レベルが浮遊ゲート20内で達成されるまで変更され、精密プログラミング方法3306中に、メモリセルの端子のうちの1つ(精密プログラミング端子と呼ばれ得る)に印加される電圧は、所望のレベルが達成されるまで変更される。粗プログラミング端子及び精密プログラミング端子として使用することができる端子の様々な組み合わせを表9に示す。
表9:粗及び精密プログラミング方法に使用されるメモリセル端子
【表9】
粗プログラミング及び精密プログラミングステップに対して、端子の他の組み合わせが可能である。
【0160】
図34は、検索及び実行方法3400である、粗プログラミング方法3305の第1の実施形態を示す。最初に、ルックアップテーブル検索又は関数(I-V曲線)を実行して、選択されたセルの粗標的電流値(I
CT)を、その選択されたセルに記憶されることが意図される値に基づいて決定する(ステップ3401)。このテーブルは、例えば、ケイ素特性評価によって、又はウェハ試験の較正から作成される。選択されたセルは、N個(例えば、128個、64個、32個など)の可能な値のうちの1つの値を記憶するようにプログラムすることができる。N個の値の各々は、選択されたセルによって読み出し動作中に引き込まれる異なる所望の電流値(I
D)に対応する。一実施形態では、ルックアップテーブルは、検索及び実行方法3400中に選択されたセルに対する粗標的電流値I
CTとして使用するためのM個の可能な電流値を含み得、Mは、Nより小さい整数である。例えば、Nが8である場合、Mは4であり得、これは、選択されたセルが記憶し得る8個の可能な値が存在することを意味し、4つの粗標的電流値のうちの1つは、検索及び実行方法3400の粗標的として選択されることになる。すなわち、検索及び実行方法3400(繰り返しになるが、粗プログラミング方法3305の実施形態である)は、選択されたセルを、所望の値(I
D)に幾分近い値(I
CT)に迅速にプログラムすることを意図しており、次いで、精密プログラミング方法3306は、所望の値(I
D)を達成するか、又は所望の値(I
D)に極めて近くなるように、選択されたセルをより精密にプログラムすることを意図する。
【0161】
セル値、所望の電流値、及び粗標的電流値の例を、N=8及びM=4の単純な例について表10及び11に示す。
表10:N=8の場合のN個の所望の電流値の例
【表10】
表11:M=4の場合のM個の標的電流値の例
【表11】
オフセット値I
CTOFFSETxは、粗調整中に所望の電流値をオーバーシュートしてしまうのを防止するために使用される。
【0162】
粗目標電流値I
CTが選択されると、ステップ3402において、選択されたセルは、上記の表9に列挙されたシーケンスのうちの1つに従って、初期電圧v
0を、選択されたセルの粗プログラミング端子に印加することによってプログラムされる。(初期電圧v
0の値及び適切な粗プログラミング端子は、任意選択的に、粗標的電流値I
CTと対応させてv
0を記憶する電圧ルックアップテーブルから決定することができる。)
表12 粗プログラミング端子に印加される初期電圧v
0
【表12】
【0163】
次に、ステップ3403では、選択されたセルは、電圧vi=vi-1+vincrementを、粗プログラミング端子に印加することによってプログラムされ、式中、iは1から始まり、このステップが繰り返されるたびに増分し、vincrementは、所望される変化の粒度に見合う程度のプログラミングを引き起こす粗電圧の増分である。したがって、第1の時間ステップ3403はi=1で実行され、v1は、v0+vincrementである。次いで、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が測定される、検証動作が行われる(ステップ3404)。IcellがICT(ここでは第1のスレッショルド値である)以下である場合、検索及び実行方法3400は完了し、精密プログラミング方法3306を開始することが可能となる。IcellがICT以下でない場合、ステップ3403が繰り返され、iは増分される。
【0164】
したがって、粗プログラミング方法3305が終了し、精密プログラミング方法3306が開始する時点で、電圧viは、選択されたセルをプログラムするために、粗プログラミング端子に印加される最後の電圧であり、選択されたセルは、粗標的電流値ICTに関連付けられた値、特にICT以下である値を記憶することになる。精密プログラミング方法3306の目標は、選択されたセルを、読み出し動作中に、選択されたセルが電流ID(+/-30%以下などの許容可能なマージンの偏差を加減する)を引き込む点にプログラムすることであり、この電流は、選択されたセルに記憶されることが意図される値に関連付けられている所望の電流値である。
【0165】
図35は、粗プログラミング方法3305中の、表9による、選択されたメモリセルの粗プログラミング端子に、及び/又は精密プログラム方法3306中の、選択されたメモリセルの精密プログラミング端子に、印加され得る、異なる電圧進行の例を示す。
【0166】
第1のアプローチ下では、選択されたメモリセルを更にプログラムするために、増加する電圧が、粗プログラミング端子及び/又は精密プログラミング端子に、漸次印加される。開始点はviであり、これは粗プログラミング方法3305中に印加された最後の電圧である。増分vp1がviに加えられ、次いで、電圧vi+vp1が使用されて、選択されたセルをプログラムする(進行3501において左から2番目のパルスによって示される)。vp1は、vincrement(粗プログラミング方法3305の間に使用される電圧増分)より小さい増分である。それぞれのプログラミング電圧がプログラミング端子に印加された後、IcellがIPT1(第1の精密標的電流値であり、ここでは第2のスレッショルド値である)以下であるかどうかの判定が行われる、検証ステップ(ステップ3404と同様)が実行され、IPT1=ID+IPT1OFFSETであり、IPT1OFFSETは、プログラムオーバーシュートを防止するために加算されるオフセット値である。判定が否である場合、別の増分vp1が、前に印加されたプログラミング電圧に加えられ、プロセスが繰り返される。これは、IcellがIPT1以下である時点まで繰り返され、この時点で、プログラミングシーケンスのこの部分は停止する。任意選択的に、IPT1がIDに等しいか、又は十分に許容された精度でIDにほぼ等しい場合、選択されたメモリセルは正常にプログラムされている。
【0167】
I
PT1がI
Dに十分に近接していない場合は、より小さい粒度の更なるプログラミングを行うことができる。ここで、進行3502が使用される。進行3502の開始点は、進行3501下のプログラミングに使用された最後の電圧である。増分V
p2(v
p1よりも小さい)がその電圧に加えられ、組み合わされた電圧が精密プログラミング端子に印加されて、選択されたメモリセルをプログラムする。それぞれのプログラミング電圧が印加された後、I
cellがI
PT2(第2の精密標的電流値であり、ここでは第3のスレッショルド値である)以下であるかどうかの判定が行われる、検証ステップ(ステップ3404と同様)が実行され、I
PT2=ID+I
PT2OFFSETであり、I
PT2OFFSETは、プログラムオーバーシュートを防止するために加算されるオフセット値である。判定が否である場合、別の増分V
p2が、前に印加されたプログラミング電圧に加えられ、プロセスが繰り返される。これは、I
cellがI
PT2以下である時点まで繰り返され、この時点で、プログラミングシーケンスのこの部分は停止する。ここで、標的値が十分に許容された精度で達成されているので、I
PT2はI
Dに等しいか、又はプログラミングが停止することができるほどI
Dに十分に近接していると想定される。当業者は、使用されるプログラミング増分が段々と小さくなって追加の進行が適用され得ることを理解することができる。例えば、
図36Aでは、2つだけではなく、3つの進行(3601、3602、及び3603)が適用される。
【0168】
第2のアプローチが、進行3503に示される。ここで、選択されたメモリセルのプログラミング中に印加される電圧を増加させる代わりに、同じ電圧(Vi、又はVi+Vp1+Vp1、又はVi+Vp2+Vp2など)が、期間が増加していく持続時間に対して印加される。進行3501におけるvp1及び進行3502におけるvp2などの増分電圧を加える代わりに、それぞれの印加パルスが、前に印加されたパルスよりもtp1だけ長くなるように、追加の時間増分tp1がプログラミングパルスに加えられる。各プログラミングパルスが精密プログラミング端子に印加された後、進行3501について前述したのと同じ検証ステップが実行される。任意選択的に、プログラミングパルスに加えられる追加の時間増分が前の使用された進行よりも短い持続時間である、追加の進行を、印加することができる。
【0169】
任意選択的に、プログラミングパルスが、使用される以前のプログラムサイクルの進行と同じ持続時間である、追加のプログラムサイクルの進行を適用することができる。1つの時間的な進行のみが示されているが、当業者は、任意の数の異なる時間的進行が印加され得ることを理解するであろう。すなわち、プログラミング中に使用される電圧の大きさを変更する代わりに、又はプログラミング中に使用される電圧パルスの周期を変更する代わりに、システムは、代わりに、使用されるプログラミングサイクルの数を変更することができる。
【0170】
図36Bは、1つの精度プログラミング端子に印加される電圧が増加し、別の精度プログラミング端子に印加される電圧が減少する相補的パルスプログラムの進行の図を示す。例えば、増加する電圧進行が、選択されたセルの制御ゲートに印加され、減少する電圧進行が、選択されたセルの消去ゲート又はソース線に印加され得る。又は、別の方法では、増加する電圧進行が、選択されたセルの消去ゲート又はソース線に印加され、減少する電圧進行が、選択されたセルの制御ゲートに印加され得る。これらの相補的な進行プログラムパルスは、プログラミングにおいてより大きな精度をもたらす。例えば、10mVのCG増分及び20mVのEG減少を有するプログラミングパルスサイクルでは、精密プログラミングパルスサイクルの後のFG内の結果として生じる電圧は、FGに対する40%CGカップリング比及び10%EGカップリング比を仮定すると、10mV
*40%-20mV
*15%=約1mVである。この相補的パルスプログラム方法は、粗プログラムステップ3305が典型的には、そのプログラミング動作中にCG増分又はEG増分のみを使用するため、粗プログラムステップ3305後に精密プログラムステップ3306において使用することができる。
【0171】
ここで、粗プログラミング方法3305の第2及び第3の実施形態について、更なる詳細が提供される。
【0172】
図37は、適応較正方法3700である、粗プログラミング(調整)方法3305の第2の実施形態を示す。方法が開始する(ステップ3701)。セルは、表9に示されるシーケンスのうちの1つに従って、初期電圧v
0を粗プログラミング端子に印加することによってプログラムされる(ステップ3702)。検索及び実行方法3400とは異なり、ここでv
0は、ルックアップテーブルから得られず、代わりに比較的小さい初期値とすることができる。セルの制御ゲート(又は消去ゲート)電圧(CG1又はEG1と称され得る)は、第1の電流値IR1(例えば、100na)で測定され、同じゲート上の電圧(CG2又はEG2と称され得る)は、第2の電流値IR2(例えば、10na)で測定される、すなわち、IR2がIR1の10%である非限定的な実施形態では、サブスレッショルドI-V傾斜は、それらの測定値(例えば、電流の360mV/dec又はdV/d LOG(I))に基づいて決定され、記憶されている(ステップ3703)。線形領域のI-V傾斜は、dV/dIである。
【0173】
新しい電圧viが決定される。このステップが最初に実行されるとき、i=1であり、プログラム電圧v1は、例えば以下のようなサブスレッショルド式を使用して、記憶されたサブスレッショルド傾斜値並びに電流標的及びオフセット値に基づいて決定される。
vi=vi-1+vincrement、
Vincrementは、Vgの傾斜に比例する
Vg=n*Vt*log[Ids/wa*Io]
ここで、waはメモリセルのwであり、Idsはセル電流であり、Ioは、Vg=Vth、Vtが熱電圧であり、1~2のgを利用し、V1が電流IR1で決定され、V2が電流IR2で決定されるときのセル電流である。
傾斜=(V1-V2)/(LOG(IR1)-LOG(IR2))
式中、vincrement=α*傾斜*(LOG(IR1)-LOG(ICT))であり、
ICTは標的電流であり、αは、オーバーシュートを防止するための所定の定数(プログラミングオフセット値)<1、であって、例えば0.9である。
【0174】
記憶された傾斜値が比較的急勾配である場合、比較的小さい電流オフセット値を使用することができる。記憶された傾斜値が比較的平坦である場合、比較的高い電流オフセット値を使用することができる。したがって、傾斜情報を決定することは、問題の特定のセルにカスタマイズされている電流オフセット値が選択されることを可能にする。これは、一般に、プログラミングプロセスをより短くする。ステップ3704が繰り返されると、iは増分され、vi=vi-1+vincrementである。次いで、セルは、viを粗適応プログラミング端子に印加することによってプログラムされる。vincrementはまた、標的電流値と対応させてvincrementの値を記憶するルックアップテーブルから決定することもできる。
【0175】
次に、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が測定される、検証動作が行われる(ステップ3705)。IcellがICT(ここでは粗標的スレッショルド値である)以下である場合、ICT=ID+ICTOFFSET、ICTOFFSETは、プログラムオーバーシュートを防止するために追加されるオフセット値であり、適応較正方法3700は完了し、精密プログラミング方法3306が開始され得る。IcellはICT以下でない場合、次いで、ステップ3704~3705(新しい傾斜測定値が新しいデータポイントを用いて測定される)又はステップ3703~3705(以前に使用された同じ傾斜が再使用される場合)を繰り返し、iが増分される。
【0176】
図38は、方法3703の実装のための回路の高レベルブロック図を示す。電流源3801は、例示的な電流値IR1及びIR2を、選択されたセル(ここではメモリセル3802)に印加するために使用され、次いで、メモリセル3802の粗プログラミング端子における電圧(IR1の場合V1(VCGR1又はVEGR1)及びIR2の場合V2(VCGR2又はVEGR2))が測定され、粗プログラミング端子が表9に従って選択される。線形傾斜は、LOGI-V曲線上のセル電流の(V1-V2)/decadeであるか、すなわち(V1-V2)/(LOG(IR1)-LOG(IR2))に等しい。
【0177】
図39は、適応較正方法3900である、プログラミング方法3305の第3の実施形態を示す。方法が開始する(ステップ3901)。セルは、v
0をセルの粗適応プログラミング端子に印加することによって、デフォルトの出発値v
0でプログラムされる(ステップ3902)。v
0は、シリコン特性評価から作成されるようなルックアップテーブルから得られ、テーブル値は、プログラムされた標的をオーバーシュートしないようにオフセットされる。v
0の例を表13に示す。
表13:適応較正方法3900中にコース適応プログラミング端子に印加される初期電圧v
0
【表13】
【0178】
ステップ3903では、次のプログラミング電圧を予測する際に使用されるI-V傾斜パラメータが作成される。第1の電圧、V1が、選択されたセルの制御ゲート又は消去ゲートに印加され、結果として生じるセル電流、IR1が測定される。次いで、第2の電圧、V2が、選択されたセルの制御ゲート又は消去ゲートに印加され、結果として生じるセル電流、IR2が測定される。傾斜は、それらの測定値に基づいて決定され、例えば、サブスレッショルド領域(サブスレッショルドで動作するセル)における次の等式に従って記憶される:
傾斜=(V1-V2)/(LOG(IR1)-LOG(IR2))
(ステップ3903)。V1及びV2の値の例を、上記の表13に示す。
【0179】
I-V傾斜情報を決定することは、問題の特定のセルにカスタマイズされているvincrement値が選択されることを可能にする。これは、一般に、プログラミングプロセスをより短くする。
【0180】
ステップ3904が実行されるたびに、iが増分され、初期値は0であり、所望のプログラミング電圧、viを、記憶された傾斜値並びに電流標的及びオフセット値に基づき、次のような等式を使用して決定する。
vi=vi-1+vincrement、
式中、vincrement=α*傾斜*(LOG(IR1)-LOG(ICT))、
ICTは標的電流であり、αは、オーバーシュートを防止するための所定の定数(プログラミングオフセット値)<1、であって、例えば0.9である。
【0181】
次いで、選択されたセルは、viを使用してプログラムされる。(ステップ3905)
【0182】
次に、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が測定される、検証動作が行われる(ステップ3906)。IcellがICT(ここでは粗標的スレッショルド値である)以下である場合、ICT=ID+ICTOFFSET、ICTOFFSETは、プログラムオーバーシュートを防止するために追加されるオフセット値であり、プロセスはステップ3907に進む。そうでない場合、プロセスはステップ3903(新しい傾斜測定)又は3904(以前の傾斜が再使用される)に戻り、iが増分される。
【0183】
ステップ3907において、Icellは、ICTより小さいスレッショルド値、ICT2と比較される。この目的は、オーバーシュートが発生したかどうかを確認することである。すなわち、目標は、IcellがICT未満になることであるが、IcellがICTをはるかに下回っている場合、オーバーシュートが発生しており、記憶された値は、実際には誤った値に対応している可能性がある。IcellがICT2以下でない場合、オーバーシュートは発生しておらず、適応較正方法3900が完了しており、その時点でプロセスは精密プログラミング方法3306に進む。IcellがICT2以下である場合、オーバーシュートが発生している。その場合、選択されたセルは消去され(ステップ3908)、プログラミングプロセスはステップ3902で再開する。任意選択的に、ステップ3908が所定の回数より多く実行される場合、選択されたセルは、使用されるべきではない不良セルと見なされ得、エラー信号が出力されるか、又はフラグが設定され、セルを識別する。
【0184】
精密プログラム方法3306は、複数の検証及びプログラムサイクルからなり得、次のパルスに向かって、パルス幅が固定されてプログラム電圧が一定の微細電圧によって増分されるか、又はプログラム電圧が固定されてプログラムパルス幅が変化する。
【0185】
任意選択的に、読み出し動作中又は検証動作中に、選択された不揮発性メモリセルを通る電流が第1のスレッショルド電流値以下であるかどうかを判定するステップ3906は、不揮発性メモリセルの端子に固定バイアスを印加し、選択された不揮発性メモリセルによって引き込まれた電流を測定及びデジタル化してデジタル出力ビットを生成し、デジタル出力ビットを、第1のスレッショルド電流、ICTを表すデジタルビットと比較することによって、実行され得る。
【0186】
任意選択的に、読み出し動作中又は検証動作中に、選択された不揮発性メモリセルを通る電流が第2のスレッショルド電流値以下であるかどうかを判定するステップ3907は、不揮発性メモリセルの端子に固定バイアスを印加し、選択された不揮発性メモリセルによって引き込まれた電流を測定及びデジタル化してデジタル出力ビットを生成し、デジタル出力ビットを、第2のスレッショルド電流、ICT2を表すデジタルビットと比較することによって、実行され得る。
【0187】
任意選択的に、読み出し動作中又は検証動作中に、選択された不揮発性メモリセルを通る電流が、それぞれ、第1又は第2のスレッショルド電流値以下であるかどうかを判定するステップ3906,3907は、不揮発性メモリセルの端子に入力を印加し、選択された不揮発性メモリセルによって引き込まれた電流を出力パルスで変調して変調出力を生成し、変調出力をデジタル化してデジタル出力ビットを生成し、デジタル出力ビットを、それぞれ、第1又は第2のスレッショルド電流を表すデジタルビットと比較することによって、実行され得る。
【0188】
電流を検証又は読み出す目的でセル電流を測定することは、ノイズの影響を低減するために、複数回分、例えば、8~32回分を平均することによって行うことができる。
【0189】
図40は、絶対較正方法4000である、粗プログラミング方法3305の第4の実施形態を示す。方法が開始する(ステップ4001)。セルの関連端子は、デフォルトの出発値v
0でプログラムされる(ステップ4002)。v
0の例を表14に示す。
表14:絶対較正方法4000中にメモリセル端子に印加される初期電圧v
0
【表14】
【0190】
粗プログラミング端子上の電圧vTxは、
図38に関連して上述したようにセルを通して駆動される電流値Itargetで測定され、記憶される(ステップ4003)。新しい粗プログラミング電圧、v
1は、記憶された電圧vTx及びオフセット値、vToffset(Ioffsetに対応する)に基づいて、決定される(ステップ4004)。例えば、新しい所望の電圧v
1は、以下のように計算することができる:v
1=v
0+(VTBIAS-vTx)-vToffset、式中、例えばVTBIAS=約1.5Vであり、これは、最大標的電流(メモリセルが許容する最大電流レベルを意味する)でのデフォルト端子電圧である。基本的に、新しい標的電圧は、標的電流及び最大電圧及びオフセットにおける電流電圧vTxとの差である量によって調整される。
【0191】
次いで、セルは、viを使用してプログラムされる(ステップ4005)。i=1のとき、ステップ4004からの電圧v1が使用される。i>=2のとき、電圧vi=vi-1+vincrementが使用される。vincrementは、標的電流値と対応させてvincrementの値を記憶するルックアップテーブルから決定することができる。次に、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)がICTと比較される(ステップ4006)。IcellがICT(ここではスレッショルド値である)以下である場合、絶対較正方法4000は完了し、精密プログラミング方法3306が開始され得る。IcellがICT以下でない場合、ステップ4005~4006が繰り返され、iは増分される。
【0192】
図41は、絶対較正方法4000のステップ4003においてvTxを測定するための回路4100を示す。vTxは、各メモリセル4103(4103-0、4103-1、4103-2、...4103-n)で測定される。ここで、n+1個の異なる電流源4101(4101-0、4101-1、4101-2、...、4101-n)は、大きさが増加していく異なる電流IO0、IO1、IO2、...IOnを生成する。各電流源4101は、それぞれのインバータ4102(4102-0、4102-1、4102-2、...、4102-n)及びメモリセル4103(4103-0、4103-1、4103-2、...4103-n)に接続されている。各インバータ4102(4102-0、4102-1、4102-2、...、4102-n)への入力は、最初は高く、各インバータの出力は最初は低い。IO0<IO1<IO2<...<IOnであるため、インバータ4102-0の出力は、メモリセル4103-0が電流源4101-0から電流を引き出し、またインバータ4102-0の入力ノードから電流を引き出し、インバータ4102-0への入力電圧を、他のインバータ4102への入力電圧の前に、低下させることになるため、まず低から高に切り替わる。次にインバータ4102-1の出力が低から高に切り替わり、次いでインバータ4102-2の出力が同様に切り替わり、以下インバータ4102-nの出力が低から高に切り替わるまで同様である。各インバータ4102は、それぞれのスイッチ4104(4104-0、4104-1、4104-2、...、4104-n)を制御し、その結果、インバータ4102の出力が高であるとき、スイッチ4104は閉じられ、これにより、vTxがコンデンサ4105(4105-0、4105-1、4105-2、...、4105-n)によってサンプリングされる。したがって、スイッチ4104及びコンデンサ4105は、サンプルアンドホールド回路を形成する。このようにして、vTxは、サンプルアンドホールド回路を使用して測定される。
【0193】
図42は、適応較正方法3700又は絶対較正方法4000中に、選択されたセルをプログラミングするための例示的な進行4200を示す。電圧VTP(CG又はEG端子に印加されるプログラミング電圧であり、
図37のステップ3704及び
図40のステップ4005におけるviに対応する)は、ビット線イネーブル信号En_blx(xが1とnの間で変化する、式中、nはビット線の数である)を使用して、選択されたメモリセルの端子に印加される。
【0194】
図43は、適応較正方法3700又は絶対較正方法4000中に、選択されたセルをプログラミングするための別の例示的な進行4300を示す。電圧VTP(CG又はEG端子に印加されるプログラミング電圧であり、
図37のステップ3704及び
図40のステップ4005におけるviに対応する)は、ビット線イネーブル信号En_blx(xが1とnの間で変化する、式中、nはビット線の数である)を使用して、選択されたメモリセルの端子に印加される。
【0195】
別の実施形態では、制御ゲート端子に印加される電圧が増分され、消去ゲート端子に印加される電圧も増分される。
【0196】
別の実施形態では、制御ゲート端子に印加される電圧が増分され、消去ゲート端子に印加される電圧が減少する。これを表15に示す。
表15:制御ゲート端子増分及び消去ゲート端子減少
【表15】
【0197】
比較のために、制御ゲート端子のみを増分すること、又は消去ゲート端子のみを増分することの例は、表16に含まれる。
表16:制御ゲート端子増分、消去ゲート端子増分
【表16】
【0198】
図44は、精密プログラミング後の、VMMアレイ内で読み出し又は検証するための入力及び出力方法を実装するためのシステムを示す。入力関数回路4401は、デジタルビット値を受信し、それらのデジタル値をアナログ信号に変換して使用することで、アレイ4404内の選択されたセルの制御ゲートに電圧を印加し、選択されたセルは、制御ゲートデコーダ4402を介して決定される。同時に、ワード線デコーダ4403もまた、選択されたセルが位置する行を選択するために使用される。出力ニューロン回路ブロック4405は、アレイ4404内のセルの各列からの出力電流を受信する。出力回路ブロック4405は、積分型アナログ-デジタル変換器(ADC)、逐次比較型(SAR)ADC、シグマデルタ型ADC、又はデジタル出力を提供するための任意の他のADCスキームを含む。
【0199】
一実施形態では、入力機能回路4401に提供されるデジタル値は、4つのビット(DIN3、DIN2、DIN1、及びDIN0)、又は任意の数のビットを含み、それらのビットによって表されるデジタル値は、プログラミング動作中に制御ゲートに適用される入力パルスの数に対応する。パルス数が多いほど、セルに、より大きな値が記憶されることになり、セルが読み出されると、より大きな出力電流を引き起こす。入力ビット値及びパルス値の例を表17に示す。
表17:デジタルビット入力と生成パルス数
【表17】
【0200】
上記の例では、4ビット入力デジタルに対して最大15パルスが存在する。各パルスは、1つの単位セル値(電流)、すなわち、精密プログラムされた電流に等しい。例えば、Icell単位=1nAの場合、DIN[3~0]=0001では、Icell=1*1nA=1nAであり、DIN[3~0]=1111では、Icell=15*1nA=15nAである。
【0201】
別の実施形態では、デジタルビット入力は、表18に示すように、セル又はニューロン(例えば、ビット線出力の精密にプログラムされた値)値を読み出すために、デジタルビット位置加算を使用する。ここで、4つのパルス又は4つの固定された同一バイアス入力(例えば、ワード線又は制御ゲートの入力)のみが、4ビットのデジタル値を評価するために必要とされる。例えば、第1のパルス又は第1の固定バイアスは、DIN0を評価するために使用され、第1の値と同じ値を有する第2のパルス又は第2の固定バイアスは、DIN1を評価するために使用され、第1の値と同じ値を有する第3のパルス又は第3の固定バイアスは、DIN2を評価するために使用され、第1の値と同じ値を有する第4のパルス又は第4の固定バイアスは、DIN3を評価するために使用される。次いで、表19に示すように、各出力結果が2^n(nはデジタルビット位置)である乗算係数で乗算(スケーリング)された、4つのパルスからの結果が、ビット位置に従って加算される。実現されるデジタルビット加算式は、以下のものである:出力=2^0*DIN0+2^1*DIN1+2^2*DIN2+2^3*DIN3)*Icell単位、式中、Icellは、精密プログラムされた電流を表す。
【0202】
例えば、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である。
表18:デジタルビット入力加算
【表18】
表19:デジタル入力ビットDnの総和と2^n出力乗算係数
【表19】
【0203】
複数のデジタル入力パルス範囲及び入力デジタル範囲の総和を有するハイブリッド入力を有する別の実施形態は、例示的な4ビットデジタル入力について表20に示される。この実施形態では、DINn-0は、m個の異なるグループに分割することができ、各グループは、評価され、出力は、グループバイナリ位置によって乗算係数によってスケーリングされる。例えば、4ビットDIN3-0の場合、グループはDIN3-2及びDIN1-0であり得、DIN1-0の出力は1でスケーリングされ(X1)、DIN3-2の出力は4でスケーリングされる(X4)。
表20:複数の入力範囲を有するハイブリッド入出力の総和
【表20】
【0204】
別の実施形態は、ハイブリッド入力範囲をハイブリッドスーパーセルと組み合わせる。ハイブリッドスーパーセルは、複数の物理xビットセルを含み、xセル出力を2^nバイナリ位置でスケーリングした論理nビットセルを実装する。例えば、8ビットの論理セルを実装するために、2つの4ビットセル(セル1、セル0)が使用される。セル0の出力は、1でスケーリングされ(X1)、セル1の出力は、4でスケーリングされる(X、2^2)。8ビットの論理セルを実装するための2つの2ビット物理セル及び1つの4ビット物理セルなど、nビット論理セルを実装するための物理xセルの他の組み合わせが可能である。
【0205】
図45は、デジタルビット入力がデジタルビット位置加算を使用して、デジタル入力ビット位置に従って設計された出力パルス幅を用いてモジュレータ4510によって変調されたセル又はニューロン(例えば、ビット線出力の値)電流を読み出すこと(例えば、電流を出力電圧(V=電流
*パルス幅/容量)に変換するため)を除き、
図44のシステムに類似する別の実施形態を示す。例えば、第1のバイアス(入力ワード線又は制御ゲートに印加される)は、DIN0を評価するために使用され、電流(セル又はニューロン)出力は、モジュレータ4510によって、1(x1)単位であるDIN0ビット位置に比例する単位パルス幅で変調され、第2の入力バイアスは、DIN1を評価するために使用され、電流出力は、モジュレータ4510によって、2(x2)単位であるDIN1ビット位置に比例するパルス幅で変調され、第3の入力バイアスは、DIN2を評価するために使用され、電流出力は、モジュレータ4510によって、4(x4)単位であるDIN2ビット位置に比例するパルス幅で変調され、第4の入力バイアスは、DIN3を評価するために使用され、電流出力は、モジュレータ4510によって、8(x8)単位であるDIN3ビット位置に比例するパルス幅で変調される。次いで、各出力は、デジタル入力ビットDIN0~DIN3ごとにADC(アナログ-デジタル変換器)4511によってデジタルビットに変換される。次いで、総出力は、DIN0-3入力から生成された4つのデジタル出力の総和として加算器4512によって出力される。
【0206】
図46は、検証動作中又は出力ニューロンのアナログ-デジタル変換中にVMM、Icellの出力を合計して、VMMの出力を表す単一のアナログ値を得るために使用することができる電荷加算器4600の例を示しており、単一のアナログ値は、次いで任意選択的にデジタルビット値に変換することができる。電荷加算器4600は、例えば、加算器4512として使用され得る。電荷加算器4600は、電流源4601(ここでは、VMMによって出力された電流Icellを表す)と、スイッチ4602及びサンプルアンドホールド(S/H)コンデンサ4603を含むサンプルアンドホールド回路と、を含む。示される例は、出力のための4ビットのデジタル値を利用するが、代わりに他の数のビットを使用することができる。4つの評価パルスから生成された値を保持するための4つのS/H回路が存在し、これらの値はプロセスの終了時に合計される。S/Hコンデンサ4603は、そのS/Hコンデンサの2^n
*DINnビット位置に関連付けられる比率で選択される。例えば、C_DIN3のスイッチ4602は、Icell>8×電流スレッショルドの時に閉じられ、C_DIN2のスイッチ4602は、Icell>4×電流スレッショルドの時に閉じられ、C_DIN1のスイッチ4602は、Icell>2×電流スレッショルドの時に閉じられ、C_DIN0のスイッチ4602は、Icell>電流スレッショルドの時に閉じられる。したがって、サンプルアンドホールドコンデンサ4603によって記憶されたデジタル値は、Icell4601の値を反映する。
【0207】
図47は、検証動作中又は出力ニューロンのアナログ-デジタル変換中にVMM、Icellの出力を合計するために使用することができる電流加算器4700を示す。電荷加算器4700は、例えば、加算器4512として使用され得る。電流加算器4700は、電流源4701(ここではVMMから出力されたIcellを表す)、スイッチ4702、スイッチ4703、及び4704、並びにトランジスタ4705を含む。示される例は、出力の4ビットのデジタル値を利用し、ビット値は、電流I_DIN0、I_DIN1、I_DIN2、及びI_DIN3によって表される。各トランジスタ4705のビット位置は、そのビットによって表される値に影響を与える。I_DIN3のスイッチ4703は、Icell>8×電流スレッショルドの時に閉じられ、I_DIN2のスイッチ4703は、Icell>4×電流スレッショルドの時に閉じられ、I_DIN1のスイッチ4704は、Icell>2×電流スレッショルドの時に閉じられ、I_DIN0のスイッチ4703は、Icell>電流スレッショルドの時に閉じられる。したがって、トランジスタ4705(「1」が正の電流によって表され、「0」が電流なしで表され、又は逆もまた同様)によって出力されるデジタル値は、Icell4601の値を反映する。
【0208】
図48は、複数のデジタル値を受信し、それらを一緒に合計し、入力の和を表す出力DOUTを生成する、デジタル加算器4800を示す。デジタル加算器4600は、例えば、加算器4512として使用され得る。デジタル加算器4800は、検証動作中又は出力ニューロンのアナログ-デジタル変換中に使用され得る。4ビットのデジタル値の例で示されるように、4つの評価パルスからの値を保持するためのデジタル出力ビットが存在し、これらの値はプロセスの終了時に合計される。デジタル出力は、2^n
*DINnビット位置に基づいてデジタルスケーリングされ、例えば、DOUT3=x8 DOUT0、_DOUT2=x4 DOUT1、I_DOUT1=x2 DOUT0、I_DOUT0=DOUT0である。
【0209】
図49Aは、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用される二重傾斜積分型ADC 4900を示す。積分オペアンプ4901及び積分コンデンサ4902からなる積分器は、基準電流IREFに対してセル電流ICELLを積分する。
図49Bに示されるように、固定時間t1の間、スイッチS1は閉じられ、スイッチS2が開いており、セル電流はアップ積分され(Voutは波形4950で上昇し)、スイッチS1は開かれ、スイッチS2は閉じられ、その結果、基準電流IREFは、時間t2にダウン積分されるように印加される(Voutは波形4950で下降する)。電流Icellの値は、=t2/t1
*IREFとして決定される。例えば、t1に対して、10ビットのデジタルビット解像度では、1024サイクルが使用され、t2に対するサイクル数は、Icell値に応じて0~1024サイクルに変化する。標的値がVREFとしてコンパレータ4904に適用されると、コンパレータ4904の出力EC4905は、VOUTがVREFを下回るまでIREFを適用したサイクル数を決定するためのトリガとして使用され得る。
【0210】
図49Cは、セル電流をデジタル出力ビットに変換するために出力ニューロン4966、ICELLに適用される単一傾斜積分型ADC4960を示す。ADC4960
は、積分オペアンプ4961、積分コンデンサ4962、オペアンプ4964、並びにスイッチS1及びS3
を含む。積分オペアンプ4961及び積分コンデンサ4962は、出力ニューロン電流、ICELLを積分する。
図49Dに示されるように、時間t1の間、セル電流は、アップ積分され(VoutはVref2に達するまで上昇し)、時間t1と同時に始まるが、時間t1よりも大きい時間t2の間、基準セルのセル電流は、アップ積分される。セル電流ICELLは、=Cint
*Vref2/tとして決定される。コンパレータ4965の出力に結合されたパルスカウンタは、それぞれの積分時間t1、t2中のパルスの数(デジタル出力ビット)をカウントするために使用される。例えば、図示されるように、t1に対するデジタル出力ビットは、t2のデジタル出力ビットよりも少なく、これは、t1の間のセル電流がt2中のセル電流よりも大きいことを意味する。初期較正は、積分コンデンサ値を基準電流及び固定時間で較正するために行われ、Cint=Tref
*Iref/Vref2である。
【0211】
図49Eは、セル電流をデジタル出力ビットに変換するために出力ニューロン4984、ICELLに適用される二重傾斜積分型ADC4980を示す。二重傾斜積分型ADC4980は、スイッチS1、S2、及びS3、オペアンプ4981、コンデンサ4982、並びに基準電流源4983を含む。二重傾斜積分型ADC 4980は、積分オペアンプを利用しない。セル電流又は基準電流は、コンデンサ4982で直接積分される。パルスカウンタは、積分時間の間のパルス(デジタル出力ビット)をカウントするために使用される。電流Icellは、=t2/t1
*IREFである。
【0212】
図49Fは、セル電流をデジタル出力ビットに変換するために出力ニューロン4994、ICELLに適用される単一傾斜積分型ADC4990を示す。単一傾斜積分型ADC4990は、スイッチS2及びS3、オペアンプ4991、並びにコンデンサ4992を含む。単一傾斜積分型ADC 4980は、積分オペアンプを利用しない。セル電流は、コンデンサ4992で直接積分される。パルスカウンタは、積分時間の間のパルス(デジタル出力ビット)をカウントするために使用される。セル電流Icell=Cint
*Vref2/tである。
【0213】
図50Aは、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用されるSAR(逐次比較型)ADCを示す。セル電流は、抵抗器を通して降下させて、電圧VCELLに変換することができる。代替的に、セル電流は、S/Hコンデンサをチャージアップして、セル電流を電圧VCELLに変換することができる。VCELLは、コンパレータ5003の反転入力に提供され、その出力はSAR5001の選択入力に供給される。クロック入力CLKは、SAR5001に更に提供される。MSBビット(最上位ビット)から始まるビットを計算するために、二分探索が使用される。SAR5001から出力され、DAC5002への入力として受信されるデジタルビットDN-D0に基づいて、DAC5002の出力は、コンパレータ5003の非反転入力、すなわち、コンパレータ5003に適切なアナログ基準電圧を設定するために使用される。コンパレータ5003の出力は、次のアナログレベルを選択するために、SAR5001に順番にフィードバックされる。
図50Bに示されるように、4ビットのデジタル出力ビットの例では、4つの評価期間が存在し、限定することなく、アナログレベルを中間に設定することによってDOUT3を評価するための第1のパルス、次いで、アナログレベルを上半分の中間又は下半分の中間に設定することによってDOUT2を評価するための第2のパルスがある。
【0214】
サイクリック型(アルゴリズム型)ADCなどの修正された二分探索は、セル調整(例えば、プログラミング)検証又は出力ニューロン変換に使用され得る。スイッチトキャップ(SC)電荷再分配ADCなどの修正された二分探索(Modified Binary Search)は、セル調整(例えば、プログラミング)検証又は出力ニューロン変換に使用され得る。
【0215】
図51は、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用されるシグマデルタ型ADC 5100を示す。オペアンプ5101及びコンデンサ5105からなる積分器は、選択されたセル電流5106からの電流ICELLと、1ビット電流cDAC5104からもたらされる基準電流IREFとの総和を積分する。コンパレータ5102は、基準電圧、VREF2に対してオペアンプ5101の積分された出力電圧を比較する。クロックドDFF5103は、DFF5103のD入力で受信されるコンパレータ5102の出力に応じてデジタル出力ストリームを提供する。デジタル出力ストリームは、典型的には、デジタル出力ビットとして出力される前にデジタルフィルタに進む。
【0216】
図52Aは、電流源5201(受け取られたニューロン電流ICELLを表す)と、スイッチ5202と、可変構成可能コンデンサ5203と、コンパレータ5204であって、可変構成可能コンデンサ5203をはさんで生じるVneuと表示された電圧を非反転入力として受け取り、構成可能基準電圧Vreframpを反転入力として受け取り、出力Coutを生成する、コンパレータ5204と、を含む、ランプ型アナログ-デジタル変換器5200を示す。Vreframpは、比較クロックサイクルごとに離散的なレベルでランプアップされる。コンパレータ5204は、VneuをVreframpと比較し、結果として、出力CoutはVneu>Vreframpの時に「1」となり、そうでなければ「0」となる。このように、出力Coutは、Ineuに応答して幅が変化するパルスとなる。Ineuが大きいほどCoutが「1」となる期間は長くなり、その結果、出力Coutのパルス幅は広くなる。デジタルカウンタ5220は、それぞれOT1A及びOT2Aと印された2つの異なるICELL電流について、
図52Bに示すように出力Coutのパルス522の各パルスをデジタル出力ビットであるカウント値5221に変換する。
【0217】
代替的に、ランプ電圧Vreframpは、
図52Bのグラフ5250に示される連続ランプ電圧5255である。
【0218】
代替的に、粗-微細ランプ変換アルゴリズムを利用することによって変換時間を短縮するための、複数ランプの実施形態を
図52Cに示す。まず、粗基準ランプ基準電圧5271を、各ICELLの部分範囲を求めるために高速でランプさせる。次に、部分範囲ごとの微細基準ランプ基準電圧5272、すなわちVreframp1及びVreframp2をそれぞれ使用して、それぞれの部分範囲内のICELL電流を変換する。図示のように、微細基準ランプ電圧の2つの部分範囲が存在する。2つ以上の粗/微細ステップ又は2つの部分範囲が可能である。
【0219】
図53は、スイッチ5301、スイッチ5302、サンプルアンドホールド(S/H)回路5303、1ビットアナログ-デジタル変換器(ADC)5304、1ビットデジタル-アナログ変換器(DAC)5305、加算器5306、及び2残差演算増幅器(2xオペアンプ)5307のゲインを含む、アルゴリズム型アナログ-デジタル出力変換器5300を示す。アルゴリズム型アナログ-デジタル出力変換器5300は、アナログ入力Vin並びにスイッチ5302及び5302に適用される制御信号に応答して、変換デジタル出力5308を生成する。アナログ入力Vinで受信された入力(例えば、
図52のVneu)は、スイッチ5302に応答してS/H回路5303で最初にサンプリングされ、次いでNビットに対してNクロックサイクルで変換が実行される。各変換クロックサイクルに対して、1ビットADC5304は、S/H電圧5309を基準電圧VREF/2と比較し、デジタルビット(例えば、入力≦VREF/2の場合は「0」、入力>VREF/2の場合は「1」)を出力する。デジタル出力信号5308であるこのデジタル出力ビットは、次に、1ビットDAC5305によってアナログ電圧(例えば、VREF/2又は0Vのいずれか)に変換され、加算器5306に供給されてS/H電圧5309から減算される。次いで、2×残差オペアンプ5307は、加算器差電圧出力を増幅して変換残差電圧5310とし、変換残差電圧5310は、次のクロックサイクルのためにスイッチ5301を介してS/H回路5303に供給される。この1ビット(すなわち、2レベル)アルゴリズム型ADCの代わりに、1.5ビット(すなわち、3レベル)アルゴリズム型ADCを使用して、ADC5304及び残差オペアンプ5307などからのオフセットの影響を低減することができる。1.5ビットアルゴリズム型ADCと共に使用するためには、1.5ビット又は2ビット(すなわち、4レベル)DACが好ましい。
別の実施形態では、ハイブリッド型ADCを使用することができる。例えば、9ビットのADCについて、最初の4ビットはSAR ADCによって生成され得、残りの5ビットは、傾斜型ADC又はランプ型ADCを使用して生成され得る。
[単一論理マルチビットセルとしての複数の物理セルのプログラミング及び検証]
【0220】
上述のプログラミング及び検証デバイス及び方法は、論理マルチビットセルとして複数の物理セルと同時に動作することができる。
【0221】
図54は、物理セル5401-1、5401-2、...、5401-iとラベル付けされたi個の物理セルを含む論理マルチビットセル5400を示す。一実施形態では、物理セル5401は、均一な拡散幅(トランジスタ幅)を有する。別の実施形態では、物理セル5401は、不均一な拡散幅(異なるトランジスタ幅、より大きな幅を有するトランジスタは、より多くのレベルを記憶することができ、したがってより多くのビット数を記憶することができる)を有する。両方の実施形態では、物理セル5401は、単位として、具体的には、mビットセルの各々よりも多くのレベルを記憶することができる単一の論理nビットセルとしてプログラムされ、検証され、読み出される。例えば、m=2の場合、各物理セル5401は、4つのレベル(L0、L1、L2、L3)のうちの1つを保持することができる。2つのそのようなセルは、n=3で単一の論理セルとして処理することができ、その結果、単一の論理セルは、8つのレベル(L0、L1、L2、L3、L4、L5、L6、L7)のうちの1つを保持することができる。別の例として、m=3の場合、各物理セル5401は、8レベル(L0、...、L7)のうちの1つを保持することができる。4つのそのようなセルは、n=5で単一の論理セルとして処理することができ、その結果、単一の論理セルは、32レベル(L0、...、L31)のうちの1つを保持することができる。
【0222】
図55は、プログラミング論理マルチビットセル5400の方法5500を示す。第1に、i個の物理セル5401-1、...、5401-iのうちのj個(式中、j≦i)は、j個の物理セルの粗電流標的が達成されるまで、粗プログラミング方法3305のうちのいずれかを使用して、プログラム、検証される(ステップ5501)。次に、j個の物理セルのうちのk個(式中、k≦j)は、精密電流標的が、k個の物理セルが達成されるまで、精密プログラミング方法3306のうちのいずれかを使用して、プログラム、検証される(ステップ5502)。
【0223】
方法5500は、i個の物理セル5401-1、...5401-iのうちの1つを超えるサブセットで実行され、論理マルチビットセル5400の所望の全体レベルを達成することができる。
【0224】
例えば、i=4である場合、4つのセル、5401-1、5401-2、5401-3、及び5401-4が存在する。各セルが8個の異なるレベルのうちの1つを保持することができると仮定する場合、論理マルチビットセル5400は、32個の異なるレベルのうちの1つを保持することができる。所望のプログラミング値がL27である場合、そのレベル(所望の読み出し電流に対応する)は、任意の数の異なる方法で達成することができる。
【0225】
例えば、方法5500は、それらのセルが集合的にL23(24番目のレベル)を保持するまで、セル5401-1、5401-2、及び5401-3で実行することができ、次いで、方法5500は、セル5401-4で実行されて、論理マルチビットセル5400がL27(28番目のレベル)を達成するように、そのセルを4番目のレベルにプログラムする。
【0226】
別の例として、方法5500は、それらのセルが集合的にL25(26番目のレベル)を保持するまで、セル5401-1、5401-2、5401-3、及び5401-4 で実行することができ、次いで、方法5500は、論理マルチビットセル5400の全体がL27(28番目のレベル)を達成する値を記憶するまで、セル5401-4でのみ実行することができる。
【0227】
他のアプローチが可能であり、所望のレベルが達成されるまで、i個の物理セルの異なるサブセットで、方法5500を実行することができる。
【0228】
別の実施形態では、i個の物理セルが、不均一な拡散幅を有する状況において、粗プログラミングステップ3305は、j1個の物理セルが、集合的に粗電流標的を達成するまで、より広いトランジスタ幅を有するj1個の物理セルで実行することができ、次いで、精密プログラミングステップ3306は、j1+j2個の物理セルが、集合的に精密電流標的を達成するまで、最も小さいトランジスタ幅を有するj2個の物理セルで実行することができる。
【0229】
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「の上に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「の上に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「に間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に伴わずに形成すること、及びその要素を基板の上に間接的に1つ以上の中間材料/要素をそれらの間に伴って形成することを含み得る。