(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-05
(45)【発行日】2022-10-14
(54)【発明の名称】深層学習人工ニューラルネットワークのアナログニューラルメモリにおいて不揮発性メモリセルのプログラミング動作中に格納された値を検証するためのアルゴリズム及び回路
(51)【国際特許分類】
G11C 11/56 20060101AFI20221006BHJP
G11C 11/54 20060101ALI20221006BHJP
G11C 16/34 20060101ALI20221006BHJP
【FI】
G11C11/56 210
G11C11/54
G11C16/34 140
(21)【出願番号】P 2021544167
(86)(22)【出願日】2019-09-07
(86)【国際出願番号】 US2019050119
(87)【国際公開番号】W WO2020159583
(87)【国際公開日】2020-08-06
【審査請求日】2021-10-27
(32)【優先日】2019-03-21
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-01-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】トラン、ヒュー、バン
(72)【発明者】
【氏名】ブー、サン
(72)【発明者】
【氏名】トリン、ステファン
(72)【発明者】
【氏名】ホン、スタンレー
(72)【発明者】
【氏名】リ、アン
【審査官】後藤 彰
(56)【参考文献】
【文献】特表2011-505649(JP,A)
【文献】特開平2-15497(JP,A)
【文献】特開平8-297984(JP,A)
【文献】国際公開第2017/200883(WO,A1)
【文献】特開2000-11674(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 16/34
G11C 11/54
G11C 11/56
(57)【特許請求の範囲】
【請求項1】
格納された重みを複数のデジタル出力ビットに変換することによる、不揮発性メモリセルのマルチレベルプログラミング動作に続いて前記不揮発性メモリセル内の前記格納された重みを検証するためのニューラルネットワーク用の検証方法であって、
前記不揮発性メモリセルの出力を単一の基準線における基準値と比較し、前記メモリセルの出力が前記基準値より大きい場合には、第1の値のデジタル出力ビットを生成し、前記メモリセルの出力が前記基準値より小さい場合には、第2の値のデジタル出力ビットを生成するステップと、
残りのデジタル出力ビットのそれぞれを生成するために前記比較するステップを繰り返すステップであって、基準値は、前記先行する比較するステップの前記デジタル出力ビットに基づいて選択される、繰り返すステップと、を含む、検証方法。
【請求項2】
前記不揮発性メモリセルの前記出力は、前記格納された重みから変換された電流又は電圧である、請求項1に記載の検証方法。
【請求項3】
実行された最初の比較するステップは、前記複数のデジタル出力ビットの最上位ビットを生成する、請求項1に記載の検証方法。
【請求項4】
実行された最後の比較するステップは、前記複数のデジタル出力ビットの最下位ビットを生成する、請求項1に記載の検証方法。
【請求項5】
前記不揮発性メモリセルは、積層ゲートメモリセルである、請求項1に記載の検証方法。
【請求項6】
前記不揮発性メモリセルは、スプリットゲートメモリセルである、請求項1に記載の検証方法。
【請求項7】
格納された重みを複数のデジタル出力ビットに変換することによる、ニューラルネットワーク用の、不揮発性メモリセルのマルチレベルプログラミング動作に続いて前記不揮発性メモリセル内の前記格納された重みを検証するための検証方法であって、
前記不揮発性メモリセルの出力を基準値と比較し、前記不揮発性メモリセルの出力が前記基準値を超える場合には、第1の値の第1のデジタル出力ビットを生成し、前記不揮発性メモリセルの出力が前記基準値より小さい場合には、第2の値の第1のデジタル出力ビットを生成するステップと、
前記メモリセルの出力を、前記第1のデジタル出力ビットが第1の値を有する場合には第2の基準値と、前記第1のデジタル出力ビットが第2の値を有する場合には第3の基準値と比較し、
前記不揮発性メモリセルの出力が前記第2の基準値より大きい場合には、第1の値の第2のデジタル出力ビットを生成し、格納された電圧が前記第2の基準値より小さい場合には、第2の値の第2のデジタル出力ビットを生成することと、
前記不揮発性メモリセルの出力が前記第3の基準値より大きい場合には、第1の値の第2のデジタル出力ビットを生成し、前記不揮発性メモリセルの出力が前記第3の基準
値より小さい場合には、第2の値の第2のデジタル出力ビットを生成することと、のうちの1つを実行するステップと、を含む、検証方法。
【請求項8】
前記メモリセルの前記出力は、前記格納された重みから変換された電流又は電圧である、請求項7に記載の検証方法。
【請求項9】
実行された最初の比較するステップは、前記複数のデジタル出力ビットの最上位ビットを生成する、請求項7に記載の検証方法。
【請求項10】
前記不揮発性メモリセルは、積層ゲートメモリセルである、請求項7に記載の検証方法。
【請求項11】
前記不揮発性メモリセルは、スプリットゲートメモリセルである、請求項7に記載の検証方法。
【請求項12】
ニューラルネットワーク用の不揮発性メモリセルのプログラミング動作に続いて検証動作中に使用する調整可能な基準電流源であって、
入力電圧を提供するための調整可能な電流源と、
前記入力電圧及び制御信号を受け取り、出力電流を生成するためのデバイスのアレイであって、前記制御信号は、温度計コード方式で前記デバイスのアレイ内の1つ以上のデバイスを作動させる、デバイスのアレイと、
前記出力電流を受け取り、基準電圧を生成するためのバッファミラーと、を含み、
前記基準電圧は、前記調整可能な電
流源及び前記制御信号に応じて変化する、調整可能な基準電流源。
【請求項13】
前記バッファミラーは、ミラーバイアス電圧を駆動する演算増幅器を含む、請求項12に記載の調整可能な基準電流源。
【請求項14】
前記デバイスのアレイ内の各デバイスは、第1のNMOSトランジスタ及び第2のNMOSトランジスタを含み、前記第1のNMOSトランジスタのソースは、前記第2のNMOSトランジスタのドレインに結合される、請求項12に記載の調整可能な基準電流源。
【請求項15】
前記不揮発性メモリセルは、スプリットゲートメモリセルである、請求項12に記載の調整可能な基準電流源。
【請求項16】
前記不揮発性メモリセルは、積層ゲートメモリセルである、請求項12に記載の調整可能な基準電流源。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本出願は、2019年1月29日に出願された「Precision Programming Circuit For Analog Neural Memory In Deep Learning Artificial Neural Network」と題する米国仮特許出願第62/798,394号、及び2019年3月21日に出願された「Algorithms And Circuitry For Verifying A Value Stored During A Programming Operation Of A Non-volatile Memory Cell In An Analog Neural Memory In Deep Learning Artificial Neural Network」と題する米国特許出願第16/360,955号に対する優先権を主張するものである。
【0002】
(発明の分野)
アナログニューラルメモリにおいてプログラミング動作中に不揮発性メモリセルに格納された値を検証するための多数の検証アルゴリズム及び回路が開示される。
【背景技術】
【0003】
人工ニューラルネットワークは、生物学的ニューラルネットワーク(動物の中枢神経系、特に脳)を模倣しており、多数の入力に依存し得、かつ、一般的に未知である関数を推定する又は近似するために使用される。人工ニューラルネットワークは、概して、メッセージを交換する相互接続した「ニューロン」の層を含む。
【0004】
図1は人工ニューラルネットワークを示しており、図中、円は、入力又はニューロンの層を表す。接続(シナプスと呼ばれる)は、矢印によって表され、経験に基づいて調整され得る数値の重みを有する。これにより、ニューラルネットワークは入力に適応し、学習可能になる。典型的には、ニューラルネットワークは、複数の入力の層を含む。典型的には、1つ以上のニューロンの中間層、及びニューラルネットワークの出力を提供するニューロンの出力層が存在する。それぞれのレベルでニューロンは、シナプスから受信したデータに基づいて個々に又は合わせて決定を行う。
【0005】
高性能情報処理用の人工ニューラルネットワークの開発における主要な課題の1つは、適切なハードウェア技術の欠如である。実際には、実用ニューラルネットワークは、非常に多数のシナプスに依拠しており、これによりニューロン間の高い接続性、すなわち、非常に高度な計算処理の並列化が可能となる。原理的には、このような複雑性は、デジタルスーパーコンピュータ又は専用GPU(グラフィックプロセッシングユニット)クラスタによって実現が可能である。しかしながら、高コストに加え、これらのアプローチはまた、生物学的ネットワークが主として低精度のアナログ計算を実施するのではるかに少ないエネルギーしか消費しないのと比較して、エネルギー効率が劣っていることに悩まされている。人工ニューラルネットワークにはCMOSアナログ回路が使用されてきたが、多数のニューロン及びシナプスが必要になると、ほとんどのCMOS実装シナプスは、嵩張りすぎて扱いにくかった。
【0006】
出願人は以前に、米国特許出願公開第2017/0337466号として公開された、参照により組み込まれる米国特許出願第15/594,439号において、1つ以上の不揮発性メモリアレイをシナプスとして利用する人工(アナログ)ニューラルネットワークを開示した。前記不揮発性メモリアレイは、アナログニューロモーフィックメモリとして動作する。ニューラルネットワークデバイスは、第1の複数の入力を受信して、それから第1の複数の出力を生成するように構成された第1の複数のシナプス、及び第1の複数の出力を受信するように構成された第1の複数のニューロンを含む。前記第1の複数のシナプスは複数のメモリセルを含み、各メモリセルは、半導体基板内に形成された、間にチャネル領域が延在している離間したソース領域及びドレイン領域と、チャネル領域の第1の部分の上方に配設され、チャネル領域の第1の部分から絶縁された浮遊ゲートと、チャネル領域の第2の部分の上方に配設され、チャネル領域の第2の部分から絶縁された非浮遊ゲートと、を含む。前記複数のメモリセルのそれぞれは、浮遊ゲートの多くの電子に対応する重み値を格納するように構成される。複数のメモリセルは、第1の複数の入力に、格納された重み値を乗算して第1の複数の出力を生成するように構成される。
【0007】
アナログニューロモーフィックメモリシステムに使用される各不揮発性メモリセルは、消去・プログラムに対応して、浮遊ゲート内に電荷、すなわち電子の数、を非常に特異的かつ正確な量で保持しなければならない。例えば、各浮遊ゲートはN個の異なる値のうちの1つを保持しなければならず、ここで、Nは、各セルによって示され得る異なる重みの数である。Nの例としては、16、32、64、128及び256が挙げられる。
【0008】
選択されたセルの浮遊ゲートは、各浮動ゲートが異なるN個の値のうちの1つを保持することができるように、非常に特異的かつ正確な量の電荷を保持するようにプログラムされることが必要になるので、VMMシステムにおける1つの課題は、VMMのメモリセルを正確にプログラムする能力である。関連する課題は、プログラムされた値が、意図した値の許容範囲内にあることを検証する能力である。
【0009】
プログラミング動作中に不揮発性メモリセルに格納された値の精度を検証するための改善された検証アルゴリズム及び回路が必要とされている。
【発明の概要】
【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】
【
図1】先行技術の人工ニューラルネットワークを示す図である。
【
図2】先行技術のスプリットゲート型フラッシュメモリセルを示す。
【
図3】別の先行技術のスプリットゲート型フラッシュメモリセルを示す。
【
図4】別の先行技術のスプリットゲート型フラッシュメモリセルを示す。
【
図5】別の先行技術のスプリットゲート型フラッシュメモリセルを示す。
【
図6】別の先行技術のスプリットゲート型フラッシュメモリセルを示す。
【
図7】先行技術の積層ゲート型フラッシュメモリセルを示す。
【
図8】1つ以上の不揮発性メモリアレイを利用する例示的な人工ニューラルネットワークの各レベルを示す図である。
【
図9】ベクトル行列乗算システムを示すブロック図である。
【
図10】1つ以上のベクトル行列乗算システムを利用する例示的な人工ニューラルネットワークを示すブロック図である。
【
図11】ベクトル行列乗算システムの別の実施形態を示す。
【
図12】ベクトル行列乗算システムの別の実施形態を示す。
【
図13】ベクトル行列乗算システムの別の実施形態を示す。
【
図14】ベクトル行列乗算システムの別の実施形態を示す。
【
図15】ベクトル行列乗算システムの別の実施形態を示す。
【
図16】先行技術の長・短期メモリシステムを示す。
【
図17】長・短期メモリシステムで使用する例示的なセルを示す。
【
図20】先行技術のゲート付き回帰型ユニットシステムを示す。
【
図21】ゲート付き回帰型ユニットシステムで使用する例示的なセルを示す。
【
図24】ベクトル行列乗算システムの別の実施形態を示す。
【
図25】ベクトル行列乗算システムの別の実施形態を示す。
【
図26】ベクトル行列乗算システムの別の実施形態を示す。
【
図27】ベクトル行列乗算システムの別の実施形態を示す。
【
図28】ベクトル行列乗算システムの別の実施形態を示す。
【
図29】ベクトル行列乗算システムの別の実施形態を示す。
【
図30】ベクトル行列乗算システムの別の実施形態を示す。
【
図31】ベクトル行列乗算システムの別の実施形態を示す。
【
図34】ベクトル乗算器行列システムと共に使用するための高電圧生成ブロックを示す。
【
図35】チャージポンプ及びチャージポンプ調整回路を示す。
【
図36】電流補償回路を有する高電圧生成ブロックを示す。
【
図37】電流補償回路を有する別の高電圧生成ブロックを示す。
【
図39】電流補償を提供するためのダミービット線を示す。
【
図60】
図59の調整可能な基準電圧源で使用される分岐回路を示す。
【発明を実施するための形態】
【0069】
本発明の人工ニューラルネットワークは、CMOS技術及び不揮発性メモリアレイの組み合わせを利用する。
不揮発性メモリセル
【0070】
デジタル不揮発性メモリは、周知である。例えば、参照により本明細書に組み込まれる、米国特許第5,029,130号(「’130号特許」)は、フラッシュメモリセルの一種である、スプリットゲート型不揮発性メモリセルのアレイを開示する。このようなメモリセル210を
図2に示す。各メモリセル210は、半導体基板12内に形成されたソース領域14とドレイン領域16と、を含み、ソース領域14とドレイン領域16の間にはチャネル領域18がある。浮遊ゲート20は、チャネル領域18の第1の部分の上方に形成され、チャネル領域18の第1の部分から絶縁され(チャネル領域18の第1の部分の導電性を制御して)、ソース領域14の一部分の上方に形成される。ワード線端子22(典型的には、ワード線に結合される)は、チャネル領域18の第2の部分の上方に配設され、チャネル領域18の第2の部分から絶縁された(チャネル領域18の第2の部分の導電性を制御する)第1の部分と、浮遊ゲート20の上方で上に向かって延在する第2の部分と、を有する。浮遊ゲート20及びワード線端子22は、ゲート酸化物によって基板12から絶縁される。ビット線24はドレイン領域16に結合される。
【0071】
ワード線端子22に高圧正電圧を印加することによって、メモリセル210に対して消去が行われ(電子が浮遊ゲートから除去される)、これによって、浮遊ゲート20の電子は、浮遊ゲート20からワード線端子22までそれらの間にある絶縁体の中をファウラーノルドハイム(Fowler-Nordheim)トンネリングを介して通過する。
【0072】
メモリセル210は、ワード線端子22に正電圧、及びソース領域14に正電圧を印加することによってプログラムされる(電子が浮遊ゲートに印加される)。電子電流は、ソース領域14からドレイン領域16に向かって流れる。電子は加速し、ワード線端子22と浮遊ゲート20との間の間隙に達すると、発熱する。熱せられた電子の一部が、浮遊ゲート20からの静電引力に起因して、浮遊ゲート20にゲート酸化物を介して注入される。
【0073】
メモリセル210は、ドレイン領域16及びワード線端子22に正の読み出し電圧を印加する(ワード線端子の下方のチャネル領域18の部分をオンにする)ことによって、読み出される。浮遊ゲート20が正に帯電する(すなわち、電子を消去する)と、浮遊ゲート20の下方のチャネル領域18の部分も同様にオンになり、電流はチャネル領域18を流れ、これは、消去された状態つまり「1」の状態として検知される。浮遊ゲート20が負に帯電する(すなわち、電子でプログラムされる)と、浮遊ゲート20の下方のチャネル領域の部分はほとんど又は完全にオフになり、電流はチャネル領域18を流れず(又はほとんど流れず)、これは、プログラムされた状態つまり「0」の状態として検出される。
【0074】
表1は、読み出し、消去、及びプログラム動作を実行するためのメモリセル110の端子に印加され得る典型的な電圧範囲を示す。
表1:
図2のフラッシュメモリセル210の動作
【表1】
【0075】
図3は、制御ゲート(CG)28を追加した、
図2のメモリセル210と同様のメモリセル310を示す。制御ゲート28は、プログラミング中に高電圧、例えば、10Vに、消去中に低電圧又は負電圧、例えば、0v/-8Vに、読み出し中に低電圧又は中点電圧、例えば、0v/2.5Vにバイアスされる。他の端子は、
図2の端子と同様にバイアスされる。
【0076】
図4は、ソース領域14と、ドレイン領域16と、チャネル領域18の第1の部分の上方にある浮遊ゲート20と、チャネル領域18の第2の部分の上方にある選択ゲート22(典型的には、ワード線、WL、に結合される)と、浮遊ゲート20の上方にある制御ゲート28と、ソース領域14の上方にある消去ゲート30と、を含む4ゲートメモリセル410を示す。この構成は、あらゆる目的のため参照により本明細書に組み込まれる、米国特許第6,747,310号に記載されている。ここで、全てのゲートは、浮遊ゲート20を除いて、非浮遊ゲートであり、つまり、それらは電圧源に電気的に接続される又は接続可能である。プログラミングは、熱せられた電子がチャネル領域18から浮遊ゲート20にその電子自体を注入することによって実行される。消去は、電子が浮遊ゲート20から消去ゲート30へトンネリングすることによって実行される。
【0077】
表2は、読み出し、消去、及びプログラム動作を実行するためのメモリセル310の端子に印加され得る典型的な電圧範囲を示す。
表2:
図4のフラッシュメモリセル410の動作
【表2】
【0078】
図5は、メモリセル510を示しており、メモリセル510が消去ゲートを含まないことを除いて、
図4のメモリセル410と同様である。消去は、基板18を高電圧にバイアスし、制御ゲートCG 28を低電圧又は負電圧にバイアスすることによって実行される。あるいは、消去は、ワード線22を正電圧にバイアスし、制御ゲート28を負電圧にバイアスすることによって実行される。プログラミング及び読み出しは、
図4のものと同様である。
【0079】
図6は、別の種類のフラッシュメモリセルである、3ゲートメモリセル610を示す。メモリセル610は、メモリセル610が別個の制御ゲートを有しないことを除いて、
図4のメモリセル410と同一である。消去動作(消去ゲートの使用を通して消去が起こる)及び読み出し動作は、制御ゲートバイアスが印加されないことを除いて、
図4のものと同様である。プログラミング動作もまた、制御ゲートバイアスなしで行われるため、結果として、プログラム動作中は、制御ゲートバイアスの不足を補償するため、より高い電圧がソース線に印加されなければならない。
【0080】
表3は、読み出し、消去、及びプログラム動作を実行するためのメモリセル610の端子に印加され得る典型的な電圧範囲を示す。
表3:
図6のフラッシュメモリセル610の動作
【表3】
【0081】
図7は、別の種類のフラッシュメモリセルである、積層ゲートメモリセル710を示す。メモリセル710は、浮遊ゲート20がチャネル領域18全体の上方に延在し、制御ゲート22(ここではワード線に結合される)が絶縁層(図示せず)によって分離された浮遊ゲート20の上方に延在することを除いて、
図2のメモリセル210と同様である。消去、プログラミング、及び読み出し動作は、メモリセル210について前述したものと同様の方法で動作する。
【0082】
表4は、読み出し、消去、及びプログラム動作を実行するためのメモリセル710及び基板12の端子に印加され得る典型的な電圧範囲を示す。
表4:
図7のフラッシュメモリセル710の動作
【表4】
【0083】
上記の人工ニューラルネットワークにおける不揮発性メモリセルの種類のうちの1つを含むメモリアレイを利用するために、2つの修正が行われる。第1に、以下に更に説明されるように、アレイ内の他のメモリセルのメモリ状態に悪影響を与えずに各メモリセルを個々にプログラム、消去、及び読み出しできるように線を構成する。第2に、メモリセルの連続(アナログ)プログラミングを提供する。
【0084】
具体的には、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全に消去された状態から完全にプログラムされた状態へ、独立して、かつ他のメモリセルの異常が最小で、連続的に変えることができる。別の実施形態では、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全にプログラムされた状態から完全に消去された状態へ、及び逆もまた同様に、独立して、かつ他のメモリセルの異常が最小で、連続的に変えることができる。これはつまり、セル格納がアナログであるか、又は多数の不連続値(16又は64の異なる値など)のうちの1つを最低限格納できることを意味し、これにより、メモリアレイ内の全てのセルが非常に正確に、かつ個別に調整可能となり、またメモリアレイは格納に対して理想的になり、ニューラルネットワークのシナプシスの重みに微調整が可能となる。
【0085】
本明細書に記載される方法及び手段は、限定することなく、SONOS(ケイ素-酸化物-窒化物-酸化物-ケイ素、窒化物中の電荷トラップ)、MONOS(金属-酸化物-窒化物-酸化物-ケイ素、窒化物中の金属電荷トラップ)、ReRAM(抵抗変化型メモリ)、PCM(相変化メモリ)、MRAM(磁気抵抗メモリ)、FeRAM(強誘電体メモリ)、OTP(バイレベル又はマルチレベルの1回のみのプログラムが可能)及びCeRAM(強相関電子メモリ)などの他の不揮発性メモリ技術に適用することができる。本明細書に記載される方法及び手段は、限定することなく、SRAM、DRAM、及び揮発性シナプスセルなどのニューラルネットワークに使用される揮発性メモリ技術に適用することができる。
不揮発性メモリセルアレイを使用するニューラルネットワーク
【0086】
図8は、本実施形態の不揮発性メモリアレイを利用するニューラルネットワークの非限定実施例を概念的に示す。この例は、顔認識アプリケーション用に不揮発性メモリアレイニューラルネットワークを使用するが、不揮発性メモリアレイベースのニューラルネットワークを使用して他の適切なアプリケーションを実施することも可能である。
【0087】
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の異なる特徴マップを生成する。
【0088】
本例では、層C1において、それぞれ30×30ピクセルを有する16個の特徴マップが存在する。各ピクセルは、入力とカーネルとの乗算から抽出された新しい特徴ピクセルであり、したがって、各特徴マップは、2次元アレイであり、したがってこの例では、層C1は、2次元アレイの16層を構成する(本明細書で言及される層及びアレイは、必ずしも物理的関係ではなく論理的な関係であり、すなわち、アレイは必ずしも物理的な2次元アレイに配向されないことに留意されたい)。層C1内の16個の特徴マップの各々は、フィルタスキャンに適用された異なるシナプス重みのセット16個のうちの1つによって生成される。C1特徴マップは全て、境界同定など、同じ画像特徴の異なる態様を対象とすることができる。例えば、第1のマップ(この第1のマップを生成するのに使用された全てのスキャンに共有された第1の重みセットを使用して生成される)は、円形エッジを識別することができ、第2のマップ(第1の重みセットと異なる第2の重みセットを使用して生成される)は、方形エッジ又は特定の特徴のアスペクト比などを識別することができる。
【0089】
層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個のニューロンを含み、ここで出力が最も高いニューロンが、クラスを決定する。この出力は、例えば、元の画像の内容の同定又は分類を示すことができる。
【0090】
シナプスの各層は、不揮発性メモリセルのアレイ又はアレイの一部を使用して実行される。
【0091】
図9は、その目的のために使用可能なアレイのブロック図である。ベクトル行列乗算(Vector-by-matrix multiplication、VMM)アレイ32は、不揮発性メモリセルを含み、ある層と次の層との間のシナプス(
図6のCB1、CB2、CB3、及びCB4など)として利用される。具体的には、VMMアレイ32は、不揮発性メモリセルのアレイ33、消去ゲート及びワード線ゲートデコーダ34、制御ゲートデコーダ35、ビット線デコーダ36、並びにソース線デコーダ37を含み、それらのデコーダは不揮発性メモリセルアレイ33に対するそれぞれの入力をデコードする。VMMアレイ32への入力は、消去ゲート及びワード線ゲートデコーダ34から、又は制御ゲートデコーダ35から行うことができる。この例におけるソース線デコーダ37はまた、不揮発性メモリセルアレイ33の出力をデコードする。あるいは、ビット線デコーダ36が、不揮発性メモリセルアレイ33の出力をデコードすることができる。
【0092】
不揮発性メモリセルアレイ33は、2つの目的を果たす。第1に、VMMアレイ32によって使用される重みを格納する。第2に、不揮発性メモリセルアレイ33は、不揮発性メモリセルアレイ33に格納された重みによって、入力を有効に乗算して、それらを出力線(ソース線又はビット線)ごとに加算して、出力を生成し、この出力は次の層への入力又は最後の層への入力になる。不揮発性メモリセルアレイ33が乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性はなくなり、また、メモリ内の計算により電力効率も良い。
【0093】
不揮発性メモリセルアレイ33の出力は、不揮発性メモリセルアレイ33の出力を合計してその畳み込み用の単一の値を作成する、差動加算器(加算オペアンプ又は加算カレントミラーなど)38に供給される。差動加算器38は、正の重み及び負の重みの総和を実行するように配置される。
【0094】
差動加算器38の合計された出力値は、次に出力を整流する活性化関数回路39に供給される。活性化関数回路39は、シグモイド関数、tanh関数、ReLU関数、又は任意の他の非線形関数を提供し得る。活性化関数回路39の整流された出力値は、次の層(例えば
図8のC1)の特徴マップの要素になり、次いで、次のシナプスに適用されて次の特徴マップ層又は最後の層を生成する。したがって、この例では、不揮発性メモリセルアレイ33は、複数のシナプスを構成し(ニューロンの前の層から、又は画像データベースなどの入力層から、入力を受信する)、加算器38及び活性化関数回路39は、複数のニューロンを構成する。
【0095】
図9のVMMアレイ32への入力(WLx、EGx、CGx、及び任意選択的にBLx及びSLx)は、アナログレベル、バイナリレベル、デジタルパルス(この場合、パルスを適切な入力アナログレベルに変換するためにパルスアナログ変換器PACが必要とされ得る)又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが提供される)であり得、出力は、アナログレベル、バイナリレベル、デジタルパルス、又はデジタルビット(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが提供される)であり得る。
【0096】
図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へのマッピングされた1つ又は複数のデジタルパルスに変換するために、デジタル-デジタルパルス(D/P)変換器によって行うこともできる。
【0097】
入力VMMアレイ32aによって生成された出力は、次に、次のVMMアレイ(隠しレベル1)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)アレイ
【0098】
図11は、
図3に示されるメモリセル310に特に適したニューロンVMMアレイ1100を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。VMMアレイ1100は、不揮発性メモリセルのメモリアレイ1101と、不揮発性基準メモリセルの基準アレイ1102(アレイの頂部に位置する)と、を含む。あるいは、別の基準アレイが底部に位置することができる。
【0099】
VMMアレイ1100では、制御ゲート線1103などの制御ゲート線が垂直方向に延びており(したがって、行方向の基準アレイ1102が、制御ゲート線1103に直交する)、消去ゲート線1104などの消去ゲート線が水平方向に延びている。ここで、VMMアレイ1100への入力は、制御ゲート線(CG0、CG1、CG2、CG3)に提供され、VMMアレイ1100の出力はソース線(SL0、SL1)に現れる。一実施形態では、偶数行のみが使用され、別の実施形態では、奇数行のみが使用される。各ソース線(それぞれSL0、SL1)に流れる電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0100】
ニューラルネットワークについて本明細書に記載されているように、VMMアレイ1100の不揮発性メモリセル、すなわちVMMアレイ1100のフラッシュメモリは、サブスレッショルド領域で動作するように構成されることが好ましい。
【0101】
本明細書に記載される不揮発性基準メモリセル及び不揮発性メモリセルは、以下のように弱い反転でバイアスされる:
Ids=Io*e(Vg-Vth)/kVt=w*Io*e(Vg)/kVt
式中、w=e(-Vth)/kVtである。
【0102】
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流を入力電圧に変換するI-Vログ変換器を使用した場合:
Vg=k*Vt*log[Ids/wp*Io]
式中、wpは、基準又は周辺メモリセルのwである。
【0103】
ベクトル行列乗算器VMMアレイとして使用されたメモリアレイについて、出力電流は以下である:
Iout=wa*Io*e(Vg)/kVt、すなわち
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/kVt
式中、メモリアレイの各メモリセルのwa=wである。
【0104】
ワード線又は制御ゲートは、入力電圧のためのメモリセルの入力として使用することができる。
【0105】
あるいは、本明細書に記載されたVMMアレイのフラッシュメモリセルは、線形領域で動作するように構成することができる。
Ids=β*(Vgs-Vth)*Vds;β=u*Cox*W/L
W=α(Vgs-Vth)
【0106】
ワード線又は制御ゲート又はビット線又はソース線は、線形領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、メモリセルの出力として使用することができる。
【0107】
I-V線形変換器用に、線形領域で動作するメモリセル(基準メモリセル又は周辺メモリセルなど)若しくはトランジスタ、又は抵抗器を使用して、入出力電流を入出力電圧に線形変換することができる。
【0108】
図9のVMMアレイ32のための他の実施形態は、参照により本明細書に組み込まれる米国特許出願第15/826,345号に記載されている。上記出願に記載されているように、ソース線又はビット線は、ニューロン出力(電流和出力)として使用することができる。あるいは、本明細書に記載されたVMMアレイのフラッシュメモリセルは、飽和領域で動作するように構成することができる。
Ids=α 1/2
*β
*(Vgs-Vth)
2;β=u
*Cox
*W/L
W=α(Vgs-Vth)
2
【0109】
ワード線、制御ゲート、又は消去ゲートは、飽和領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、出力ニューロンの出力として使用することができる。
【0110】
あるいは、本明細書に記載されるVMMアレイのフラッシュメモリセルは、全ての領域又はそれら(サブスレッショルド領域、線形領域、又は飽和領域)の組み合わせで使用することができる。
【0111】
図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(一部のみ示す)を通してダイオード接続される。基準セルは、標的基準レベルに調整(例えば、プログラム)される。標的基準レベルは、基準ミニアレイ行列(図示せず)によって提供される。
【0112】
メモリアレイ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に流れる電流は、その特定のビット線に接続された全ての不揮発性メモリセルからの電流の合計関数を実行する。
【0113】
表5は、VMMアレイ1200の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に印加された電圧を示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表5:
図12のVMMアレイ1200の動作
【表5】
【0114】
図13は、
図2に示されるメモリセル210に特に適したニューロンVMMアレイ1300を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。VMMアレイ1300は、不揮発性メモリセルのメモリアレイ1303と、第1の不揮発性基準メモリセルの基準アレイ1301と、第2の不揮発性基準メモリセルの基準アレイ1302と、を含む。基準アレイ1301及び1302は、VMMアレイ1300の行方向に延びる。VMMアレイは、VMMアレイ1300においてワード線が垂直方向に延びることを除いて、VMM1000と同様である。ここで、入力はワード線(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)に提供され、出力は、読み出し動作中にソース線(SL0、SL1)に現れる。各ソース線に流れる電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0115】
表6は、VMMアレイ1300の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に印加された電圧を示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表6:
図13のVMMアレイ1300の動作
【表6】
【0116】
図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を各々含む。基準セルは、標的基準レベルに調整される。
【0117】
メモリアレイ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)に現れる。各ビット線に流れる電流は、その特定のビット線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0118】
VMMアレイ1400は、メモリアレイ1403内の不揮発性メモリセルの一方向調整を実施する。すなわち、各不揮発性メモリセルは消去され、次いで、浮遊ゲートにおける所望の電荷に達するまで部分的にプログラムされる。これは、例えば、以下に記載される精密プログラミング技術を使用して実行することができる。過度に多くの電荷が浮遊ゲートに加えられる場合(誤った値がセルに格納されるなど)、セルは消去されなければならず、一連の部分的なプログラミング動作をやり直さなければならない。示されるように、同じ消去ゲート(EG0又はEG1など)を共有する2つの行は、一緒に消去される必要があり(ページ消去として知られる)、その後、各セルは、浮遊ゲートにおける所望の電荷に達するまで部分的にプログラムされる。
【0119】
表7は、VMMアレイ1400の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタ内の非選択セルの制御ゲート、選択セルとは異なるセクタ内の非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線に印加された電圧を示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表7:
図14のVMMアレイ1400の動作
【表7】
【0120】
図15は、
図3に示されるメモリセル310に特に適したニューロンVMMアレイ1500を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。VMMアレイ1500は、不揮発性メモリセルのメモリアレイ1503と、基準アレイ1501又は第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中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
【0121】
表8は、VMMアレイ1500の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタ内の非選択セルの制御ゲート、選択セルとは異なるセクタ内の非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線に印加された電圧を示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表8:
図15のVMMアレイ1500の動作
【表8】
【0122】
図24は、
図2に示されるメモリセル210に特に適したニューロンVMMアレイ2400を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。VMMアレイ2400では、入力INPUT
0、...、INPUT
Nがそれぞれビット線BL
0、...、BL
Nに受信され、出力OUTPUT
1、OUTPUT
2、OUTPUT
3、及びOUTPUT
4がそれぞれソース線SL
0、SL
1、SL
2、及びSL
3に生成される。
【0123】
図25は、
図2に示されるメモリセル210に特に適したニューロンVMMアレイ2500を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。この例では、入力INPUT
0、INPUT
1、INPUT
2、及びINPUT
3がそれぞれソース線SL
0、SL
1、SL
2、及びSL
3に受信され、出力OUTPUT
0、...、OUTPUT
Nがビット線BL
0、...、BL
Nに生成される。
【0124】
図26は、
図2に示されるメモリセル210に特に適したニューロンVMMアレイ2600を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。この例では、入力INPUT
0、...、INPUT
Mがそれぞれワード線WL
0、...、WL
Mに受信され、出力OUTPUT
0、...OUTPUT
Nがビット線BL
0、...、BL
Nに生成される。
【0125】
図27は、
図3に示されるメモリセル310に特に適したニューロンVMMアレイ2700を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。この例では、入力INPUT
0、...、INPUT
Mがそれぞれワード線WL
0、...、WL
Mに受信され、出力OUTPUT
0、...OUTPUT
Nがビット線BL
0、...、BL
Nに生成される。
【0126】
図28は、
図4に示されるメモリセル410に特に適したニューロンVMMアレイ2800を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。この例では、入力INPUT
0、...、INPUT
nがそれぞれ制御ゲート線CG
0、...、CG
Nに受信され、出力OUTPUT
1及びOUTPUT
2がソース線SL
0及びSL
1に生成される。
【0127】
図29は、
図4に示されるメモリセル410に特に適したニューロンVMMアレイ2900を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。この例では、入力INPUT
0、...、INPUT
Nがそれぞれビット線制御ゲートのゲート2901-1、2901-2、...、2901-(N-1)、及び2901-Nに受信され、これらはそれぞれビット線BL
0、...、BL
Nに結合される。例示的な出力OUTPUT
1及びOUTPUT
2が、ソース線SL
0及びSL
1に生成される。
【0128】
図30は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適したニューロンVMMアレイ3000を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。この例では、入力INPUT
0、...、INPUT
Mがワード線WL
0、...、WL
Mに受信され、出力OUTPUT
0、...OUTPUT
Nがそれぞれビット線BL
0、...、BL
Nに生成される。
【0129】
図31は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適したニューロンVMMアレイ3100を示し、入力層と次の層との間のシナプス及びニューロンの一部として利用される。この例では、入力INPUT
0、...、INPUT
Mが制御ゲート線CG
0、...、CG
Mに受信される。出力OUTPUT
0、...、OUTPUT
Nがそれぞれソース線SL
0、...、SL
Nに生成され、各ソース線SL
iは、列iの全てのメモリセルのソース線端子に結合される。
【0130】
図32は、VMMシステム3200を示す。VMMシステム3200は、VMMアレイ3201(VMM900、1000、1100、1200、及び1320、又は他のVMM設計など、前述したVMM設計のいずれかに基づくことができる)、低電圧行デコーダ3202、高電圧行デコーダ3203、基準セル低電圧列デコーダ3204(列方向に示されており、これは入力から出力への変換を行方向に提供することを意味する)、ビット線マルチプレクサ3205、制御論理3206、アナログ回路3207、ニューロン出力ブロック3208、入力VMM回路ブロック3209、プレデコーダ3210、試験回路3211、消去-プログラム制御論理EPCTL 3212、アナログ及び高電圧生成回路3213、ビット線PEドライバ3214、冗長アレイ3215及び3216、NVRセクタ3217、並びに基準セクタ3218を含む。入力回路ブロック3209は、外部入力からメモリアレイの入力端子へのインターフェースとして機能する。ニューロン出力ブロック3208は、メモリアレイ出力から外部インターフェースへのインターフェースとして機能する。
【0131】
低電圧行デコーダ3202は、読み出し動作及びプログラム動作のためのバイアス電圧を提供し、高電圧行デコーダ3203のためのデコード信号を提供する。高電圧行デコーダ3203は、プログラム動作及び消去動作のための高電圧バイアス信号を提供する。任意選択の基準セル低電圧列デコーダ3204は、基準セルのためのデコード機能を提供する。ビット線PEドライバ3214は、プログラム動作、検証動作、及び消去動作中のビット線のための制御機能を提供する。アナログ及び高電圧生成回路3213は、様々なプログラム、消去、プログラム検証、及び読み出し動作に必要な複数の電圧を提供する共有バイアスブロックである。任意選択の冗長アレイ3215及び3216は、欠陥のあるアレイ部分を置き換えるためのアレイ冗長性を提供する。任意選択のNVR(情報セクタとしても知られる不揮発性レジスタ)セクタ3217は、ユーザ情報、デバイスID、パスワード、セキュリティキー、トリムビット、構成ビット、製造情報を、これらに限定することなく、格納するために使用されるアレイセクタであるセクタである。
【0132】
図33は、アナログニューロメモリシステム3300を示す。アナログニューロメモリシステム3300は、マクロブロック3301a、3301b、3301c、3301d、3301e、3301f、3301g、及び3301hと、ニューロン出力(加算器回路及びサンプルアンドホールドS/H回路など)ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hと、入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3304hとを含む。マクロブロック3301a、3301b、3301c、3301d、3301e、及び3301fのそれぞれは、VMMアレイを含むVMMサブシステムである。ニューロメモリサブシステム3333は、マクロブロック3301、入力ブロック3303、及びニューロン出力ブロック3302を含む。ニューロメモリサブシステム3333は、独自のデジタル制御ブロックを有してもよい。
【0133】
アナログニューロメモリシステム3300は、システム制御ブロック3304、アナログ低電圧ブロック3305、及び高電圧ブロック3306を更に含む。
システム制御ブロック3304は、一般的な制御機能及び演算動作を処理するためのARM/MIPS/RISC_Vコアなどのマイクロコントローラコアを含んでもよい。システム制御ブロック3304はまた、単一の命令で複数のデータを演算するためのSIMD(単一命令複数データ)ユニットを含んでもよい。これは、DSPコアを含んでもよい。これは、限定することなく、プーリング、平均化、最小、最大、ソフト最大、加算、減算、乗算、除算、対数、逆対数、ReLu、シグモイド、tanh、データ圧縮などの機能を実行するためのハードウェア又はソフトウェアを含んでもよい。これは、活性化近似器/量子化器/正規化器などの機能を実行するためのハードウェア又はソフトウェアを含んでもよい。これは、入力データ近似器/量子化器/正規化器などの機能を実行する能力を含んでもよい。これは、活性化近似器/量子化器/正規化器の機能を実行するためのハードウェア又はソフトウェアを含んでもよい。ニューロメモリサブシステム3333の制御ブロックは、マイクロコントローラコア、SIMDコア、DSPコア、及び他の機能ユニットなど、システム制御ブロック3304の類似した要素を含んでもよい。
【0134】
一実施形態では、ニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hはそれぞれ、構成可能な長い相互接続を駆動できる低インピーダンス出力型バッファ(例えば、オペアンプ)回路を含む。一実施形態では、入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hはそれぞれ、加算の高インピーダンス電流出力を提供する。別の実施形態では、ニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hはそれぞれ活性化回路を含み、この場合、出力を駆動するために追加の低インピーダンスバッファが必要とされる。
【0135】
別の実施形態では、ニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hはそれぞれ、アナログ信号の代わりにデジタルビットを出力するアナログデジタル変換ブロックを含む。この実施形態では、入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hはそれぞれ、対応のニューロン出力ブロックからデジタルビットを受信し、デジタルビットをアナログ信号に変換するデジタルアナログ変換ブロックを含む。
【0136】
したがって、ニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hは、マクロブロック3301a、3301b、3301c、3301d、3301e、及び3301fから出力電流を受け取り、任意選択的に、その出力電流をアナログ電圧、デジタルビット、又は各パルスの幅若しくはパルスの数が出力電流の値に応じて変化する1つ以上のデジタルパルスに変換する。同様に、入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hは、任意選択的に、アナログ電流、アナログ電圧、デジタルビット、又は各パルスの幅若しくはパルスの数が出力電流の値に応じて変化するデジタルパルスを受け取り、マクロブロック3301a、3301b、3301c、3301d、3301e、及び3301fにアナログ電流を提供する。入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hは、任意選択的に、電圧電流変換器、入力信号内のデジタルパルスの数若しくは入力信号内のデジタルパルスの幅を計数するためのアナログ若しくはデジタルカウンタ、又はデジタルアナログ変換器を含む。
長・短期メモリ
【0137】
先行技術は、長・短期メモリ(long short-term memory、LSTM)として知られる概念を含む。LSTMユニットは、しばしば、ニューラルネットワーク内で使用される。LSTMによって、ニューラルネットワークは所定の任意の期間にわたって情報を記憶し、後続の動作においてその情報を使用することができる。従来のLSTMユニットは、セル、入力ゲート、出力ゲート、及び忘却ゲートを含む。3つのゲートは、セル内及びセル外への情報の流れ、及び情報がLSTM内で記憶される期間を調整する。VMMは、LSTMユニットにおいて特に有用である。
【0138】
図16は、例示的なLSTM1600を示す。この例におけるLSTM1600は、セル1601、1602、1603、及び1604を含む。セル1601は、入力ベクトルx
0を受け取り、出力ベクトルh
0及びセル状態ベクトルc
0を生成する。セル1602は、入力ベクトルx
1と、セル1601からの出力ベクトル(隠れ状態)h
0と
、セル1601からのセル状態c
0とを受け取り、出力ベクトルh
1とセル状態ベクトルc
1とを生成する。セル1603は、入力ベクトルx
2と、セル1602からの出力ベクトル(隠れ状態)h
1と、セル1602からのセル状態c
1とを受け取り、出力ベクトルh
2とセル状態ベクトルc
2とを生成する。セル1604は、入力ベクトルx
3と、セル1603からの出力ベクトル(隠れ状態)h
2と、セル1603からのセル状態c
2とを受け取り、出力ベクトルh
3を生成する。追加のセルも使用可能であり、4つのセルを有するLSTMは、単なる例である。
【0139】
図17は、
図16のセル1601、1602、1603、及び1604に使用可能なLSTMセル1700の例示的な実装を示す。LSTMセル1700は、入力ベクトルx(t)と、先行するセルからのセル状態ベクトルc(t-1)と、先行するセルからの出力ベクトルh(t-1)とを受け取り、セル状態ベクトルc(t)及び出力ベクトルh(t)を生成する。
【0140】
LSTMセル1700は、シグモイド関数デバイス1701、1702、及び1703を含み、各々が0~1の数を適用することで、入力ベクトルの各成分が出力ベクトルに寄与する程度を制御する。LSTMセル1700はまた、入力ベクトルに双曲線正接関数を適用するためのtanhデバイス1704及び1705と、2つのベクトルを乗算するための乗算器デバイス1706、1707、及び1708と、2つのベクトルを加算するための加算デバイス1709と、を含む。出力ベクトルh(t)は、システム内の次のLSTMセルに提供することができ、又は他の目的でアクセスすることができる。
【0141】
図18は、LSTMセル1700の一実装例であるLSTMセル1800を示す。読者の便宜のために、LSTMセル1700からの同じ採番方法が、LSTMセル1800で使用される。シグモイド関数デバイス1701、1702、及び1703、並びにtanhデバイス1704は各々、複数のVMMアレイ1801及び活性化回路ブロック1802を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるLSTMセルにおいて特に有用であることが理解できる。乗算器デバイス1706、1707、及び1708、並びに加算デバイス1709は、デジタル方式で、又はアナログ方式で実装される。活性化関数ブロック1802は、デジタル方式で、又はアナログ方式で実装することができる。
【0142】
LSTMセル1800の代替例(及びLSTMセル1700の実装の別の例)を
図19に示す。
図19では、シグモイド関数デバイス1701、1702、及び1703、並びにtanhデバイス1704は、同じ物理ハードウェア(VMMアレイ1901及び活性化関数ブロック1902)を、時分割多重化された方式で共有する。LSTMセル1900はまた、2つのベクトルを乗算するための乗算器デバイス1903と、2つのベクトルを加算するための加算デバイス1908と、(活性化回路ブロック1902を含む)tanhデバイス1705と、シグモイド関数ブロック1902から出力される値i(t)を格納するレジスタ1907と、乗算器デバイス1903からマルチプレクサ1910を介して出力される値f(t)
*c(t-1)を格納するレジスタ1904と、乗算器デバイス1903からマルチプレクサ1910を介して出力される値i(t)
*u(t)を格納するレジスタ1905と、乗算器デバイス1903からマルチプレクサ1910を介して出力される値o(t)
*c~(t)を格納するレジスタ1906と、マルチプレクサ1909とを含む。
【0143】
LSTMセル1800がVMMアレイ1801と対応の活性化関数ブロック1802との複数のセットを含むのに対し、LSTMセル1900は、LSTMセル1900の実施形態において複数の層を表すために使用される、VMMアレイ1901と活性化関数ブロック1902との1つのセットのみ含む。LSTMセル1900は、LSTMセル1800と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/4で済むので、LSTMセル1900は、LSTM1800よりも必要とするスペースが少ない。
【0144】
LSTMユニットは典型的には複数のVMMアレイを含み、これらは各々、加算器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供された機能を必要とすることが更に理解できる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。
ゲート付き回帰型ユニット
【0145】
アナログVMM実装は、ゲート付き回帰型ユニット(gated recurrent unit、GRU)システムに利用することができる。GRUは、反復ニューラルネットワーク内のゲート機構である。GRUは、GRUセルが一般にLSTMセルよりも少ない構成要素を含むことを除いて、LSTMに類似している。
【0146】
図20は、例示的なGRU2000を示す。この例におけるGRU2000は、セル2001、2002、2003、及び2004を含む。セル2001は入力ベクトルx
0を受け取り、出力ベクトルh
0を生成する。セル2002は、入力ベクトルx
1と、セル2001からの出力ベクトルh
0とを受け取り、出力ベクトルh
1を生成する。セル2003は、入力ベクトルx
2と、セル2002からの出力ベクトル(隠れ状態)h
1とを受け取り、出力ベクトルh
2を生成する。セル2004は、入力ベクトルx
3と、セル2003からの出力ベクトル(隠れ状態)h
2とを受け取り、出力ベクトルh
3を生成する。追加のセルも使用可能であり、4つのセルを有するGRUは、単なる例である。
【0147】
図21は、
図20のセル2001、2002、2003、及び2004に使用可能なGRUセル2100の例示的な実装を示す。GRUセル2100は、入力ベクトルx(t)と、先行するGRUセルからの出力ベクトルh(t-1)とを受け取り、出力ベクトルh(t)を生成する。GRUセル2100は、シグモイド関数デバイス2101及び2102を含み、各々が、出力ベクトルh(t-1)及び入力ベクトルx(t)からの成分に0~1の数を適用する。GRUセル2100はまた、入力ベクトルに双曲線正接関数を適用するためのtanhデバイス2103と、2つのベクトルを乗算するための乗算器デバイス2104、2105、及び2106と、2つのベクトルを加算するための加算デバイス2107と、1から入力を減算して出力を生成するコンプリメンタリデバイス2108とを含む。
【0148】
図22は、GRUセル2100の一実装例であるGRUセル2200を示す。読者の便宜のために、GRUセル2100からの同じ採番方法が、GRUセル2200で使用される。
図22から分かるように、シグモイド関数デバイス2101及び2102、並びにtanhデバイス2103は各々、複数のVMMアレイ2201及び活性化関数ブロック2202を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるGRUセルにおいて特に使用されることが理解できる。乗算器デバイス2104、2105、2106、加算デバイス2107、及びコンプリメンタリデバイス2108は、デジタル方式で、又はアナログ方式で実装される。活性化関数ブロック2202は、デジタル方式で、又はアナログ方式で実装することができる。
【0149】
GRUセル2200の代替例(及びGRUセル2300の実装の別の例)を
図23に示す。
図23において、GRUセル2300は、VMMアレイ2301及び活性化関数ブロック2302を使用しており、シグモイド関数として構成された場合には、0~1の数を適用することで、入力ベクトルの各成分が出力ベクトルに寄与する程度を制御する。
図23では、シグモイド関数デバイス2101及び2102、並びにtanhデバイス2103は、同じ物理ハードウェア(VMMアレイ2301及び活性化関数ブロック2302)を、時分割多重化された方式で共有する。GRUセル2300はまた、2つのベクトルを乗算するための乗算器デバイス2303と、2つのベクトルを加算するための加算デバイス2305と、1から入力を減算して出力を生成するためのコンプリメンタリデバイス2309と、マルチプレクサ2304と、乗算器デバイス2303からマルチプレクサ2304を介して出力される値h(t-1)
*r(t)を保持するレジスタ2306と、乗算器デバイス2303からマルチプレクサ2304を介して出力される値h(t-1)
*z(t)を保持するレジスタ2307と、乗算器デバイス2303からマルチプレクサ2304を介して出力される値h^(t)
*(1-z((t))を保持するレジスタ2308と、を含む。
【0150】
GRUセル2200がVMMアレイ2201と活性化関数ブロック2202との複数のセットを含むのに対し、GRUセル2300は、GRUセル2300の実施形態において複数の層を表すために使用される、VMMアレイ2301と活性化関数ブロック2302との1つのセットのみを含む。GRUセル2300は、GRUセル2200と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/3で済むので、GRUセル2300は、GRUセル2200よりも必要とするスペースが少ない。
【0151】
GRUシステムは典型的には複数のVMMアレイを含み、これらは各々、加算器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供された機能を必要とすることが更に理解できる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。
【0152】
VMMアレイへの入力は、アナログレベル、バイナリレベル、又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが必要とされる)であり、出力はアナログレベル、バイナリレベル、又はデジタルビット(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが必要とされる)であり得る。
【0153】
VMMアレイ内の各メモリセルに関して、各重みwは、単一のメモリセルによって、又は差分セルによって、又は2つのブレンドメモリセル(2つのセルの平均)によって実装することができる。差分セルの場合では、重みwを差分重み(w=w+-w-)として実装するために、2つのメモリセルが必要とされる。2つのブレンドメモリセルの場合は、2つのセルの平均として重みwを実装するために2つのメモリセルが必要とされる。
高電圧生成回路及び他の回路
【0154】
図34は、VMMシステム3400のブロック図を示す。VMMシステム3400は、VMMアレイ3408、行デコーダ3407、高電圧デコーダ3409、列デコーダ3410、及びビット線ドライバ3411を含む。VMMシステム3400は、チャージポンプ3401、チャージポンプ調整器3402、及び高電圧レベル生成器3403を含む高電圧生成ブロック3412を更に含む。VMMシステム3400は、アルゴリズムコントローラ3404、アナログ回路3405、及び制御論理3406を更に含む。
【0155】
図35は、チャージポンプ3401及びチャージポンプ調整器3402に関する更なる詳細を提供する。チャージポンプ3401は、イネーブル信号3501によって制御される。イネーブル信号3501がアサートされないとき、チャージポンプ3401は、その出力の電圧を増加させ続ける。イネーブル信号3501がアサートされるとき、チャージポンプ3401は、その出力の電圧レベルを維持する。チャージポンプ調整器3402は、ダイオード3504、3506、及び3508の直列接続と、ダイオード3504、3506、及び3508のそれぞれ1つのカソードにそれぞれ結合された、抵抗器3505、3507、及び3509とを含む、分圧器構造を備える。その構造内の分圧電圧ノードは、電圧基準を含む別の入力を受け取るコンパレータ3503に入力される。チャージポンプ3401からの電圧出力が、ダイオード3504、3506、及び3508を作動させ、それにより電流が流れるのに十分であるとき、分圧電圧ノードからの電圧が電圧基準を超えると、イネーブル信号がアサートされる。したがって、チャージポンプ調整器3402は、ダイオード3504、3506、及び3508並びに抵抗器3505、3507、及び3509の特性に基づく所望の電圧レベルが達成されるまでチャージポンプ3401を制御する。分圧器構造の例として3つのダイオード及び3つの抵抗器が示されているが、典型的には4つ以上が必要とされる。あるいは、ダイオード及び抵抗器の代わりにコンデンサを実装して、コンパレータ3503への入力を提供するための所望の電圧比を生成することができる。あるいは、適切な比率のコンデンサをダイオード及び抵抗器と並列に接続して、分圧器構造の応答を加速させることができる。
【0156】
図36は、VMMシステム3400の一実施形態であるVMMシステム3600を示す。VMMシステム3600は、高電圧バッファ3601及び調整可能な電流シンク3602を含む。高電圧生成ブロック3412は、高電圧バッファ3601に提供される電圧を生成し、これは次に、その電圧を高電圧デコーダ3409及び調整可能な電流シンク(プログラム補償電流Icomp)3602に提供する。調整可能な電流シンク3602によって高電圧バッファ3601から引き込まれる電流Icompは、例えば、プログラムされるメモリセルの数を補償するために、高電圧バッファ3601内に補償された電圧ドロップ(例えば、プログラムされる1/2/.../32IOに対してdVout1/2/../32ドロップ)を誘発するように、かつ高電圧バッファ3601の温度を低下させるように調整することができる。例えば、Icomp=(プログラムされるメモリセルの数)
*Iprog
*Mであり、式中、Iprog=セルプログラミング電流であり、M=プログラミング動作中のメモリセルのホットキャリア効果による乗数である。補償Icompは、変動する出力負荷にわたって一定の高電圧出力を維持するために適用される。
【0157】
図37は、高電圧バッファ3701及び調整可能な電流シンク3702と共に使用されるVMMシステム3700の一実施形態を示す。高電圧生成器3412は、高電圧バッファ3701に提供される電圧を生成し、これは次に、その電圧を高電圧デコーダ3409に提供する。調整可能な電流シンクによって高電圧デコーダ3409から引き込まれる電流(補償電流)Icomp 3702は、例えば、高電圧デコーダ3409内の電流ドロップを(プログラムされるメモリセルの数の関数として)低減するように、かつ/又は高電圧デコーダ3409の温度を低下させるように調整することができる。例えば、Icomp=(プログラムされるメモリセルの数)
*Iprog
*M。Iprog=セルプログラミング電流、M=プログラミング動作中のメモリセルのホットキャリア効果による乗数である。補償Icompは、変動する出力負荷にわたって一定の高電圧出力を維持するために適用される。
【0158】
図38は、ここで演算増幅器である高電圧バッファ3801と共に使用されるVMMシステム3800を示す。高電圧生成器3412は、高電圧バッファ3801に提供される電圧を生成し、これは次に、その電圧を高電圧デコーダ3409に提供する。高電圧デコーダ3409からの出力(例えば、出力はデコーダ内のHV電圧のフィードバックインジケータである)は、高電圧バッファ3801への入力として提供され、次いで、高電圧バッファ3801は、閉ループ演算増幅器として動作する。閉ループ補償は、変動する出力負荷にわたって一定の高電圧出力を維持するために適用される。
【0159】
図39は、VMMシステム2400、2600、2700、又は2800と共に、例えば、各VMMシステム内のVMMアレイへの追加として使用されるプログラム電流補償ブロック3900を示す。ここで、ダミープログラムビット線(プログラム可能ダミーアレイ)には、32ビット線の各グループが提供されている。例えば、グループ3901はダミービット線3903を含み、グループ3902はダミービット線3904を含む。これらのダミービット線3903及び3904は、それぞれ、グループ3901及び3902内の1つ以上の他のビットがプログラムされていない場合にオンにする(ビット線プログラミング電流を提供する)ことができる。これにより、プログラミング動作中に引き込まれる電流が、ダミービット線3903及び3904を使用しない場合より一定に維持される。プログラムダミーアレイ補償スキームは、変動する出力負荷にわたって一定の高電圧出力を維持するために適用される。
【0160】
図40は、高電圧デコーダ3409を実装するために使用することができる高電圧デコーダブロック4000の例を示す。ここで、ソース線4005は、VMMアレイ3408内の1つ又は2つの行に結合される。NMOSトランジスタ4001、4002、4003、及び4004は、図示のようにソース線4005に結合される。HV電源4010は、HVバッファ3601、3701又は3801などから提供され、HV比較信号4011は、
図38に示されるものなどある。
【0161】
図41は、試験回路4100を示す。試験回路4100は、イネーブル信号ENを受信する、高電圧トランスミッタ4101を含む。高電圧トランスミッタは、NMOSトランジスタ4102及びNMOSカスコードトランジスタ4103に高電圧イネーブル信号を提供する。NMOSトランジスタ4102の一方の端子は外部試験パッドに接続し、NMOSトランジスタ4103の一方の端子は、VMMシステム3400内の内部ノードに結合される。この回路は、例えば、電圧較正プロセス中に使用することができる。
【0162】
図42は、高電圧生成ブロック3412の一実施形態を示しており、ここでは、高電圧生成回路4200、制御論理ブロック4201、アナログ回路ブロック4202、及び試験ブロック4203を含む。高電圧生成回路4200は、チャージポンプ及び調整器4204と、高電圧インクリメンタ4205と、高電圧演算増幅器4206とを含む。高電圧インクリメンタ4205の出力の電圧は、以下で更に説明するように、高電圧インクリメンタ4205内のトランジスタに送信されたトリム信号に基づいて制御することができる。制御論理ブロック4201は、制御論理入力を受け取り、制御論理出力を生成する。アナログ回路ブロック4202は、基準電圧Vrefを受け取って、他の場所で使用されるようにバイアス信号iBiasを付与するために使用可能な電流を生成するための電流バイアス生成器4207を含む。アナログ回路ブロック4202はまた、トリムビットのセットTRBIT_WLを受け取って、各種動作中にワード線に印加する電圧を生成するための電圧生成器4208を含む。試験ブロック4203は、試験パッドMONHV_PADで信号を受信し、試験中に監視するための様々な信号を出力する。
【0163】
図43は、高電圧生成ブロック3412の別の実施形態を示す。ここで、高電圧生成ブロックは、チャージポンプ及び調整器4301と、高電圧(HV)インクリメンタ4303と、高電圧演算増幅器4302とを含む。高電圧インクリメンタ4303の出力の電圧は、高電圧インクリメンタ4303内のトランジスタのゲートに送信された信号に基づいて制御することができる。HVインクリメンタ4303は、接地からチャージポンプ4301の出力まで直列に接続された抵抗器ストリング4315iから構成される。スイッチ4310a、4310b、...、4310zのネットワークは、電圧レベルをストリングに沿って増分方式で多重化するために使用される。トランジスタのゲートは、高電圧レベルシフタ(HVLS)4320によって有効化/無効化され、HVLS4320は、デジタル制御入力によって有効化/無効化される。HVLS 4320は、デジタル電圧レベル、例えば、1Vを高電圧レベル、例えば、12Vに変換するために使用される。例えば、抵抗器ストリング4315iは、10mV(1つの抵抗器の両端電圧)の電圧増分で3V~10Vの電圧レベルを提供する。したがって、抵抗器ストリングの出力VHVROUTは、10mVの増分で3V~10Vの値を有することになる。HV演算増幅器4302は、このVHVROUT増分電圧をバッファするために使用される。最高電圧、例えば、10Vにおいて必要とされるHV電圧により、この値における、又はこの値に近いときのPMOSスイッチでは、絶縁破壊(BV)状態に近いことに関連した漏れが起こる。これは、小さい増分電圧(例えば、10mV)の精度に影響を及ぼす。したがって、このBV漏れを克服するための改善が必要とされる。まず、PMOSスイッチの位置に従ってHVLS回路の供給をタップする。例えば、4~6Vのストリング位置でのPMOSスイッチの場合、HVLSの高供給は6Vである(より典型的な12V供給の代わり)。更に、低供給は4Vとすることができる(より典型的な接地の値の代わり。これにより、この抵抗器ストリング位置でのPMOSスイッチ全体にわたって電圧ストレスが低減される。VHVROUTに接続されたPMOSスイッチの場合、BVストレスを回避するために、適応HVバイアスと直列する2つが、それぞれの多重化経路を無効化するために必要とされ、例えば、PMOS 4310e/4310f及び4310y/4310zが図示されている。PMOS 4310f及び4310zは、多重化経路無効化のために使用される。例えば、PMOS 4310f及び4310zのゲートは、高電圧、例えば、10Vの多重化経路を無効化する10Vである。オフ状態では、PMOS 4310eのゲートは、好ましくは、カスコーディングがBV漏れを低減する約6Vであり、PMOS 4310fのゲートは10Vである。オン状態では、PMOS 4310fのゲートは約6Vとすることができ、PMOS 4310fのゲートは、8V~10V(例として)の多重化経路を対応のストリングからVHVROUTまで通すために<6Vとすることができる。オフ状態では、PMOS 4310yのゲートは、カスコーディングがBV漏れを低減する約6Vであり、PMOS 4310zのゲートは10Vである。オン状態では、PMOS 4310yのゲートは0Vとすることができ、PMOS 4310zのゲートは、3V~5V(例として)の多重化経路をストリングからVHVROUTまで通すために0Vとすることができる。
【0164】
図44は、高電圧生成ブロック3412の別の実施形態を示す。高電圧生成ブロック3412は、高電圧演算増幅器4403、SC(スイッチキャップ)ネットワーク4402、及びSCネットワーク4401を含む。SCネットワーク4402は、調整可能なコンデンサ4404を含む。SCネットワーク4401は、スイッチ4405、4407、4408、及び4409、並びに調整可能なコンデンサ4406を含む。SCネットワーク4402用のコンデンサ4404を調整するために、HVレベル、例えば、10~13Vで動作する高電圧レベルシフタ(HVLS)回路が必要とされ得る。SCネットワーク4401には、IO電圧(例えば、1.8V、2.5V)又はコア電圧(例えば、1.2V)スイッチング回路が必要とされる。
【0165】
図45は、
図44の高電圧演算増幅器4403に使用することができる高電圧演算増幅器4500を示す。高電圧演算増幅器4500は、示された構成要素を示された配置で含む。HVカスコードバイアスノードVCASP、VCASN1、及びVCASN2は、トランジスタにわたる最大ストレス電圧ドロップを最小化するために電圧値が出力電圧VOUTに依存するように適応的な方式で実装される。例えば、ノード電圧VOUTが高であるとき、VCASN2は高であり、VCASN1は低である。
【0166】
図46は、
図44の高電圧演算増幅器4403に使用することができる高電圧演算増幅器4600を示す。高電圧演算増幅器4600は、示された構成要素を示された配置で含む。HVカスコードバイアスノードVCASN2A、及びVCASN2Bは、トランジスタにわたる最大電圧ドロップを最小化するために電圧値が出力電圧VOUTに依存するように実装される。例えば、ノード電圧VOUTが高であるとき、VCASN1B及びVCAS2Bは高である。
【0167】
図47は、
図44の高電圧演算増幅器4403の適応高電圧カスコードバイアスを提供するために使用することができる適応高電圧源4700を示す。適応高電圧源4700は、示された構成要素を示された配置で含む。
【0168】
図48は、ビット線ドライバ3411のそれぞれに使用することができる列ドライバ4800を示す。列ドライバ4800は、図示の構成では、ラッチ4801、インバータ4802、NORゲート4803、PMOSトランジスタ4804、NMOSトランジスタ4805及び4806、並びに検知増幅器4807を備える。図示されているように、VCASAレベルは、より高いレベルのVINを追跡し、具体的には、VIN+2
*VT_PMOSにほぼ等しい。VCASBレベルは、より低いレベルのVINを追跡し、具体的には、VIN-V
*VT_NMOSにほぼ等しい。異なるMOSトランジスタ及び異なるI
*R電圧ドロップ(電流経路への抵抗Rの挿入など)によって、他の値が可能である。
【0169】
図49は、
図48の検知増幅器4807に使用することができる、検知増幅器4900を示す。検知増幅器4900は、図示の構成では、調整可能な電流基準源4901、スイッチ4902、NMOSトランジスタ4903、コンデンサ4904、スイッチ4905、電流源4906、及びインバータ4907を含む。検知増幅器4907は、VMMアレイ3408内のメモリセル4908に結合される。
【0170】
図50は、ビット線基準デコーダ5001及び基準セル5001
0~5002
Nを含む基準アレイ回路5000を示す。
【0171】
図51は、ビット線基準デコーダ5101及び基準セル5102
0~5100
Nを含む基準アレイ回路5100を示す。
精密プログラミング回路及びアルゴリズム
【0172】
図52は、演算増幅器5201、抵抗器5203、及び可変抵抗器5202(低電圧ドメイン可変抵抗器であり得る)を含む、HV演算増幅器4403用の電圧を提供するための適応高電圧源5200を示す。適応高電圧源5200は入力V
INを受け取り、高電圧信号HV
OUTを生成し、そのゲインは、抵抗トリム回路ネットワーク(図示せず)によって可変抵抗器5202の抵抗を調整することによって調整することができる。一実施形態では、抵抗器5203は低電圧ドメイン(例えば、1V又は1.8V)内にあり、低電圧デバイスを使用し、演算増幅器5201及び可変抵抗器5202はトリム回路ネットワークと共に高電圧ドメイン(例えば、12V)内にあり、高電圧デバイスを使用する。次いで、HV
OUTは、不揮発性メモリセルをプログラムするために使用することができる。
【0173】
図53は、演算増幅器5301、可変抵抗器5303、及び抵抗器5302を含む、HV演算増幅器3403用の電圧を提供するための適応高電圧源5300を示す。適応高電圧源5300は入力V
INを受け取り、高電圧信号HV
OUTを生成し、そのゲインは、抵抗トリム回路ネットワーク(図示せず)によって可変抵抗器5303の抵抗を調整することによって調整することができる。一実施形態では、可変抵抗器5303及びトリム回路ネットワークは低電圧ドメイン(例えば、1V又は1.8V)内にあり、低電圧デバイスを使用し、演算増幅器5301及び抵抗器5302は高電圧ドメイン(例えば、12V)内にあり、高電圧デバイスを使用する。次いで、HV
OUTは、不揮発性メモリセルをプログラムするために使用することができる。
【0174】
図54は、演算増幅器5401、抵抗器5402、抵抗器5403、演算増幅器5404、及び調整可能な分圧器5405を含む、HV演算増幅器4403用の電圧を提供するための適応高電圧源5400を示す。調整可能な分圧器5405は、電圧源V
Sを受け取り、抵抗器5408、及びiセットの抵抗器5406iとスイッチ5407iを含む。演算増幅器5404の非反転端子の入力電圧でもあり、入力電圧V
INでもある、調整可能な分圧器5405によって出力される電圧は、スイッチ5407iのどれが閉じているかに応じて変化する。入力V
INに応じて、高電圧信号HV
OUTが生成される。ここで、V
INの大きさは、調整可能な分圧器5405によって調整することができる。一実施形態では、調整可能な分圧器5405及び演算増幅器5404は低電圧ドメイン(例えば、1V又は1.8V)内にあり、低電圧デバイスを使用し、演算増幅器5401は高電圧ドメイン(例えば、12V)内にあり、高電圧デバイスを使用する。次いで、HV
OUTは、不揮発性メモリセルをプログラムするために使用することができる。
【0175】
図55は、調整可能な分圧器5505及び細かい抵抗器HVネットワーク5580を含む、HV演算増幅器4403用の電圧を提供するための適応高電圧源5500を示す。細かい抵抗器HVネットワーク5580は、バッファ5501、バッファ5502、及びjセットの抵抗器5504jとスイッチ5504jを含む調整可能な分圧器5503を含む。調整可能な分圧器5505は、電圧源V
Sを受け取り、抵抗器4408、及びiセットの抵抗器5506iとスイッチネットワーク5507iを含む。調整可能な分圧器5505によって出力された電圧は、スイッチネットワーク5507iのスイッチのどれが閉じているかに応じて変化する。調整可能な分圧器5503は、高電圧HV_COARSE 1及びHV_COARSE 2を受け取る。高電圧HV_COARSE 1は更に、適応高電圧源5500の第1の出力である。HV_FINEである、調整可能な分圧器5503によって出力された電圧は、HV_COARSE、及びスイッチネットワーク5504jのスイッチのどれが閉じているかに応じて変化する。ここで、HV_COARSE1/2の大きさは、調整可能な分圧器5505内で閉じられるスイッチネットワーク5507iのスイッチを変えることによって調整することができる。HV_FINEの大きさは、調整可能な分圧器5503内で閉じられるスイッチネットワーク5504jのスイッチを変えることによって調整することができる。数値例として、調整可能な分圧器5505は、1ステップ当たり200mV(すなわち、電圧増分、1つの抵抗器5506の両端電圧)を提供することができ、HV_COARSE 1及びHV_COARSE 2の両端電圧は600mVであり、調整可能な分圧器5503は、1ステップ当たり5mV(すなわち、電圧増分、1つの抵抗器5504jの両端電圧)を提供することができる。これらの高電圧は、不揮発性メモリセルをプログラムするために使用することができる。
【0176】
図56は、粗いSC(スイッチキャップ)ネットワーク5650及び細かい抵抗器HVネットワーク5680を含む、HV演算増幅器4403用の電圧を提供するための適応高電圧源5600を示す。粗いSCネットワーク5650は、演算増幅器5601、SCネットワーク5609、及びSCネットワーク5608を含む。SCネットワーク5609は、静電容量CFBの調整可能なコンデンサ5602を含む。SCネットワーク5608は、静電容量CINの調整可能なコンデンサ5603と、スイッチ5604、5605、5606、及び5607とを含む。ここで、HV
OUT=V
IN
*(CIN/CFB)である。細かい抵抗器HVネットワーク5680は、
図55のネットワーク5580と同様である。粗いSCネットワーク5650は、粗い調整可能なレベル、例えば、200mVのステップを提供し、細かい抵抗器HVネットワーク5680は、細かいレベル、例えば、5mVのステップを提供する。HV
OUTは、不揮発性メモリセルをプログラムするために使用することができる。
【0177】
図52、
図43、
図52~
図56に示されるHV演算増幅器5403用の適応HV源は、電力を出力電圧の関数として最適化するために使用される。VHVOPA=VOUT+dV、例えば、VOUT=4V及びdV=2Vである場合、VHVOPA=6Vである。基本的に、HVOPA 4403は、最大HV電圧(例えば、12V)を常に供給する必要はない。
【0178】
図57は、ハードウェア実装を簡略化する1つの単一レベル基準のみを使用した修正SAR(逐次比較)連続検証アルゴリズム5700を示す。この図は、セル出力を、4つの入力デジタルビットに対して比較される4つの出力デジタルビットに変換するために使用される4ビット検証アルゴリズムを示す。最上位ビットDOUT3は、基準線での中央基準値を適用し、セル出力を基準レベルに対して比較することによって、最初に変換される。次に、次の有効ビットDOUT2が、上半分(すなわち、L8~L15)での中央基準値を適用し、セル出力を中央基準レベルに対して比較し、次いで、下半分(すなわち、L7~L0)での中央基準値を適用し、セル出力を中央基準レベルに対して比較することによって、変換される。次のデジタルビットも、同様に変換される。このアプローチは、4ビットの出力に対して15個の変換パルス(ステップ)を必要とする。セル出力は、メモリセル内の格納された重みから変換された電流又は電圧のいずれかである。
【0179】
図58は、変換パルス数が半減している2つの基準線を使用した修正SAR連続検証アルゴリズム5800を示す。最上位ビットは、単一の基準線を使用して上記のように行われる。次の連続変換ステップは、2つの基準線を使用する。各基準線に対して、変換ステップは上記のものと同様である。このアプローチは、4ビットの出力に対して8個のステップを必要とする。
【0180】
上記の検証アルゴリズムは、ニューロン電流(VMMアレイからの出力電流)をデジタルビットに変換するために使用することができる。
【0181】
図59は、不揮発性メモリセルのプログラム動作に続いて検証動作中に使用する調整可能な2D温度計コード基準電流源5900を示す。2D温度計コード基準電流源5900は、バッファミラー5901(演算増幅器5902及びPMOSトランジスタ5903を含む)、調整可能なバイアス源5904、及びデバイス5906のi行及びj列のアレイを含む2Dアレイ5905を含み、特定のデバイス5906は、ラベル5906-(行)(列)によって表記される。ここで、バッファミラー5901による基準電流出力の量を調整することができるように、デバイス5906の様々な組み合わせを作動させることができる。図示のように、2Dアレイ5905内に16個の電流ミラー(デバイス5906)が存在する。調整可能な2D温度計コード基準電流源5900は、基本的に、4つのデジタル入力コードを、バイアス源5904から提供されるIbiasunitの1~16倍の値を有する基準電流バイアスに変換する。これらは、例えば、
図58に示されるようなVMMアレイ内のメモリセルの16個のレベルに対応する。
【0182】
例えば、バイアス源5904は、デバイス5906にミラーリングされる、1nAの電流Ibiasunitを提供することができる。ここで、第1の列は、デバイス5906-11~5906-1jからなり、左から右に、一度に1つのデバイス5906が順次有効化される。次いで、次の行は、左から右に順次に有効化されて、第1の列に付け加えることができ、これは、5個、次いで6個、次いで7個、次いで8個のデバイス5906が有効化されることを意味する。したがって、デバイス5906を連続的に有効化することによって、従来のバイナリデコーディングに関連するトランジスタ不整合状況を回避することができる。次いで、有効化されたデバイス5906の合計は、バッファミラー5901によってミラーリングされ、調整可能な電流として出力され、これは、
図39の調整可能な電流基準源3901に使用され得る。バイアス源5904は、50pA/100pA/200pA/../100nAなどのトリミング可能な範囲のユニットバイアスを提供することができる。図示の調整可能な4×4の2D温度計コード基準電流源5900は、32×32又は8×32などの任意の他の寸法であってもよい。
【0183】
図60は、
図59のデバイス5906に使用することができる、基準分岐回路6000を示す。基準分岐回路6000は、図示されるように構成された、NMOSトランジスタ6001及び6002を含む。トランジスタ6002は、電流ミラーバイアストランジスタであり、トランジスタ6001は、イネーブリングトランジスタ(バイアストランジスタ6002が出力ノードOUTPUTに接続されることを可能にする)である。
【0184】
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「の上に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「に間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に伴わずに形成すること、及びその要素を基板の上に間接的に1つ以上の中間材料/要素をそれらの間に伴って形成することを含み得る。