(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-15
(45)【発行日】2023-12-25
(54)【発明の名称】人工ニューラルネットワークにおけるアナログニューラルメモリのための精密なデータ調整方法及び装置
(51)【国際特許分類】
G11C 16/34 20060101AFI20231218BHJP
G06N 3/063 20230101ALI20231218BHJP
G11C 11/54 20060101ALI20231218BHJP
【FI】
G11C16/34 140
G06N3/063
G11C11/54
(21)【出願番号】P 2022540417
(86)(22)【出願日】2020-07-02
(86)【国際出願番号】 US2020040755
(87)【国際公開番号】W WO2021137894
(87)【国際公開日】2021-07-08
【審査請求日】2022-08-25
(32)【優先日】2020-01-03
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-03-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】トラン、ヒュー バン
(72)【発明者】
【氏名】レムケ、スティーブン
(72)【発明者】
【氏名】ティワリ、ビピン
(72)【発明者】
【氏名】ドー、ナン
(72)【発明者】
【氏名】レイテン、マーク
【審査官】後藤 彰
(56)【参考文献】
【文献】特開平8-249893(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 16/34
G06N 3/063
G11C 11/54
G11C 16/10
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリセルのベクトル行列乗算アレイ内の選択された不揮発性メモリセルを調整する方法であって、前記方法は、
(i)前記選択された不揮発性メモリセルの初
期標的を設定するステップと、
(ii)
前記選択された不揮発性メモリセルに対して、プログラミング動作及び前記初期標的による検証を繰り返し実行するステップと、
(iii)
前記検証をパスした前記選択された
不揮発性メモリセルに対して読み出し動作を実行し、前記読み出し動作中に前記選択された
不揮発性メモリセルによって引き出された
セル出力を決定するステップと、
(iv)前記決定された
セル出力と標的との間の差に基づいて、出力誤差を計算するステップと、
(v)前記出力誤差が所定のスレッショルド未満になるまで、
前記出力誤差に基づいて前記初期標的を設定して、ステップ(i)、(ii)、(iii)、
及び(iv
)を繰り返すステップと、を含む、方法。
【請求項2】
ソフト消去動作を実行するステップを更に含む、請求項
1に記載の方法。
【請求項3】
粗プログラミング-検証サイクルを実行するステップを更に含む、請求項
1に記載の方法。
【請求項4】
微細プログラミング-検証サイクルを実行するステップを更に含む、請求項
1に記載の方法。
【請求項5】
前記選択された不揮発性メモリセルは正の重みを記憶する、請求項
1に記載の方法。
【請求項6】
前記選択された不揮発性メモリセルは負の重みを記憶する、請求項
1に記載の方法。
【請求項7】
選択された不揮発性メモリセルは正の重みを記憶し、かつ選択された不揮発性メモリセルは負の重みを記憶する、請求項
1に記載の方法。
【請求項8】
前記正の重みは非ゼロであり、前記負の重みは非ゼロである、請求項
7に記載の方法。
【請求項9】
前記ベクトル行列乗算アレイ内の1つ以上のセルは、Fowler-Nordheimトンネリングを使用してプログラムされる、請求項
1に記載の方法。
【請求項10】
前記ベクトル行列乗算アレイ内の1つ以上のセルは、ソースサイド注入を使用してプログラムされる、請求項
1に記載の方法。
【請求項11】
セクタ消去を実行するステップと、
前記セクタに対してステップ(i)、(ii)、(iii)、及び(iv)を実行するステップと、を更に含む、請求項
1に記載の方法
。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本出願は、2020年1月3日に出願された「Precise Data Tuning Method And Apparatus For Analog Neuromorphic Memory In An Artificial Neural Network」と題する米国特許仮出願第62/957,013号、及び2020年3月25日に出願された「Precise Data Tuning Method And Apparatus For Analog Neural Memory In An Artificial Neural Network」と題する米国特許出願第16/829,757号の優先権を主張する。
【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】
VMMアレイに使用される各不揮発性メモリセルは、消去・プログラムに対応して、浮遊ゲート内に電荷、すなわち電子の数、を非常に具体的かつ精確な量で保持しなければならない。例えば、各浮遊ゲートはN個の異なる値のうちの1つを保持しなければならず、ここで、Nは、各セルによって示され得る異なる重みの数である。Nの例としては、16、32、64、128及び256が挙げられる。1つの課題は、異なるNの値に必要な精度及び粒度で選択されたセルをプログラムする能力である。例えば、選択されたセルが64個の異なる値のうちの1つを含み得る場合、極めて高い精度がプログラム動作で必要とされる。
【0008】
必要とされるのは、アナログニューロモーフィックメモリにおいてVMMアレイと共に使用するのに適した、改善されたプログラミングシステム及び方法である。
【発明の概要】
【0009】
アナログニューロモーフィックメモリシステム内のVMMアレイ内の不揮発性メモリセルの浮遊ゲートに正確な量の電荷を精密かつ迅速に堆積させるための精密調整アルゴリズム及び装置について、多数の実施形態が開示される。それにより、選択されたセルは、N個の異なる値のうちの1つを保持するために、極めて高い精度でプログラムすることができる。
【0010】
一実施形態では、不揮発性メモリセルのベクトル行列乗算アレイ内の選択された不揮発性メモリセルを調整する方法が提供され、この方法は、(i)選択された不揮発性メモリセルの初期電流標的を設定するステップと、(ii)ベクトル行列乗算アレイ内の全ての不揮発性メモリセルに対してソフト消去を実行するステップと、(iii)選択されたメモリセルに対して粗プログラミング動作を実行するステップと、(iv)選択されたメモリセルに対して微細プログラミング動作を実行するステップと、(v)選択されたメモリセルに対して読み出し動作を実行し、読み出し動作中に選択されたメモリセルによって引き出された電流を決定するステップと、(vi)決定された電流と初期電流標的との間の差に基づいて、出力誤差を計算するステップと、出力誤差が所定のスレッショルド未満になるまでステップ(i)、(ii)、(iii)、(iv)、(v)、及び(vi)を繰り返すステップと、を含む。
【0011】
別の実施形態では、不揮発性メモリセルのベクトル行列乗算アレイ内の選択された不揮発性メモリセルを調整する方法が提供され、この方法は、(i)選択された不揮発性メモリセルの初期標的を設定するステップと、(ii)選択されたメモリセルに対してプログラミング動作を実行するステップと、(iii)選択されたメモリセルに対して読み出し動作を実行し、読み出し動作中に選択されたメモリセルによって引き出されたセル出力を決定するステップと、(iv)決定された出力と初期標的との間の差に基づいて、出力誤差を計算するステップと、(v)出力誤差が所定のスレッショルド未満になるまでステップ(i)、(ii)、(iii)、及び(iv)を繰り返すステップと、を含む。
【0012】
別の実施形態では、ベクトル行列乗算アレイ内の選択されたメモリセルで重み値としてプログラムする電流を提供するためのニューロン出力回路が提供され、ニューロン出力回路は、正の重みを実装するニューロン電流に応答してスケーリングされた電流を生成するための第1の調節可能な電流源と、負の重みを実装するニューロン電流に応答してスケーリングされた電流を生成するための第2の調節可能な電流源と、を含む。
【0013】
別の実施形態では、ベクトル行列乗算アレイ内の選択されたメモリセルで重み値としてプログラムする電流を提供するためのニューロン出力回路であって、ニューロン出力回路は、第1の端子及び第2の端子を含む調節可能なコンデンサであって、第2の端子は、ニューロン出力回路に出力電圧を提供する、調節可能なコンデンサと、第1の端子及び第2の端子を含む制御トランジスタと、調節可能なコンデンサの第1の端子と第2の端子との間に選択的に結合される第1のスイッチと、調節可能なコンデンサの第2の端子と制御トランジスタの第1の端子との間に選択的に結合される第2のスイッチと、制御トランジスタの第2の端子に結合された調節可能な電流源と、を含む。
【0014】
別の実施形態では、ベクトル行列乗算アレイ内の選択されたメモリセルにおけて重み値としてプログラムする電流を提供するためのニューロン出力回路が提供され、ニューロン出力回路は、第1の端子及び第2の端子を含む調節可能なコンデンサであって、第2の端子は、ニューロン出力回路に出力電圧を提供する、調節可能なコンデンサと、第1の端子及び第2の端子を含む制御トランジスタと、調節可能なコンデンサの第2の端子と制御トランジスタの第1の端子との間に選択的に結合されるスイッチと、制御トランジスタの第2の端子に結合された調節可能な電流源と、を含む。
【0015】
別の実施形態では、ベクトル行列乗算アレイ内の選択されたメモリセルで重み値としてプログラムする電流を提供するためのニューロン出力回路であって、ニューロン出力回路は、第1の端子及び第2の端子を含む調節可能なコンデンサであって、第1の端子は、ニューロン出力回路に出力電圧を提供する、調節可能なコンデンサと、第1の端子及び第2の端子を含む制御トランジスタと、調節可能なコンデンサの第1の端子と制御トランジスタの第1の端子との間に選択的に結合される第1のスイッチと、制御トランジスタの第2の端子に結合された調節可能な電流源と、を含む。
【0016】
別の実施形態では、ベクトル行列乗算アレイ内の選択されたメモリセルで重み値としてプログラムする電流を提供するためのニューロン出力回路であって、ニューロン出力回路は、反転入力、非反転入力、及び出力を含む第1の演算増幅器と、反転入力、非反転入力、及び出力を含む第2の演算増幅器と、第1の演算増幅器の反転入力に結合された第1の調節可能な電流源と、第2の演算増幅器の反転入力に結合された第2の調節可能な電流源と、第1の演算増幅器の反転入力に結合された第1の調節可能な抵抗器と、第2の演算増幅器の反転入力に結合された第2の調節可能な抵抗器と、第1の演算増幅器の出力と第2の演算増幅器の反転入力との間に結合された第3の調節可能な抵抗器と、を含む。
【0017】
別の実施形態では、ベクトル行列乗算アレイ内の選択されたメモリセルで重み値としてプログラムする電流を提供するためのニューロン出力回路であって、ニューロン出力回路は、反転入力、非反転入力、及び出力を含む第1の演算増幅器と、反転入力、非反転入力、及び出力を含む第2の演算増幅器と、第1の演算増幅器の反転入力に結合された第1の調節可能な電流源と、第2の演算増幅器の反転入力に結合された第2の調節可能な電流源と、第1の演算増幅器の反転入力と出力との間に結合された第1のスイッチと、第2の演算増幅器の反転入力と出力との間に結合された第2のスイッチと、第1の演算増幅器の反転入力と出力との間に結合された第1の調節可能なコンデンサと、第2の演算増幅器の反転入力と出力との間に結合された第2の調節可能なコンデンサと、第1の演算増幅器の出力と第2の演算増幅器の反転入力との間に結合された第3の調節可能なコンデンサと、を含む。
【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】
【図面の簡単な説明】
【0072】
【
図1】先行技術の人工ニューラルネットワークを示す図である。
【
図2】先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図3】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図4】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図5】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図6】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図7】先行技術の積層ゲートフラッシュメモリセルを示す。
【
図8】1つ以上のVMMアレイを利用する例示的な人工ニューラルネットワークの様々なレベルを示す図である。
【
図9】VMMアレイ及び他の回路を含むVMMシステムを示すブロック図である。
【
図10】1つ以上のVMMシステムを利用する例示的な人工ニューラルネットワークを示すブロック図である。
【
図25】先行技術の長・短期メモリシステムを示す。
【
図26】長・短期メモリシステムで使用する例示的なセルを示す。
【
図29】先行技術のゲート付き回帰型ユニットシステムを示す。
【
図30】ゲート付き回帰型ユニットシステムで使用する例示的なセルを示す。
【
図36A】セルに記憶された値に対する温度の影響を示す。
【
図36B】VMMシステムの動作中のデータドリフトによって生じる問題を示す。
【
図36C】データドリフトを補償するためのブロックを示す。
【発明を実施するための形態】
【0073】
本発明の人工ニューラルネットワークは、CMOS技術及び不揮発性メモリアレイの組み合わせを利用する。
[不揮発性メモリセル]
【0074】
デジタル不揮発性メモリは周知である。例えば、参照により本明細書に組み込まれる、米国特許第5,029,130号(「’130号特許」)は、フラッシュメモリセルの一種であるスプリットゲート型不揮発性メモリセルのアレイを開示する。このようなメモリセル210を
図2に示す。各メモリセル210は、半導体基板12内に形成されたソース領域14とドレイン領域16とを含み、ソース領域14とドレイン領域16の間にはチャネル領域18がある。浮遊ゲート20は、チャネル領域18の第1の部分の上方に絶縁されて形成され(かつ、チャネル領域18の第1の部分の導電性を制御し)、ソース領域14の一部分の上方にかけて形成される。ワード線端子22(典型的には、ワード線に結合される)は、チャネル領域18の第2の部分の上方に絶縁されて配設されている(かつ、チャネル領域18の第2の部分の導電性を制御する)第1の部分と、上に向かって浮遊ゲート20の上方にかけて延在する第2の部分と、を有する。浮遊ゲート20及びワード線端子22は、ゲート酸化物によって基板12から絶縁される。ビット線端子24はドレイン領域16に結合される。
【0075】
ワード線端子22に高圧正電圧を印加することによって、メモリセル210に対して消去が行われ(電子が浮遊ゲートから除去される)、これによって、浮遊ゲート20の電子は、浮遊ゲート20からワード線端子22までそれらの間にある絶縁体の中をファウラーノルドハイム(Fowler-Nordheim)トンネリングを介して通過する。
【0076】
メモリセル210は、ワード線端子22に正電圧、及びソース領域14に正電圧を印加することによってプログラムされる(電子が浮遊ゲートに印加される)。電子電流は、ソース領域14(ソース線端子)からドレイン領域16に向かって流れる。電子は加速し、ワード線端子22と浮遊ゲート20との間の間隙に達すると、加熱される。熱せられた電子の一部が、浮遊ゲート20からの静電引力に起因して、浮遊ゲート20にゲート酸化物を介して注入される。
【0077】
メモリセル210は、ドレイン領域16及びワード線端子22に正の読み出し電圧を印加する(ワード線端子の下方のチャネル領域18の部分をオンにする)ことによって、読み出される。浮遊ゲート20が正に帯電する(すなわち、電子を消去する)と、浮遊ゲート20の下方のチャネル領域18の部分も同様にオンになり、電流はチャネル領域18を流れ、これは、消去された状態つまり「1」の状態として検知される。浮遊ゲート20が負に帯電する(すなわち、電子でプログラムされる)と、浮遊ゲート20の下方のチャネル領域の部分はほとんど又は完全にオフになり、電流はチャネル領域18を流れず(又はほとんど流れず)、これは、プログラムされた状態つまり「0」の状態として検知される。
【0078】
表1は、読み出し、消去、及びプログラム動作を実行するためのメモリセル110の端子に印加され得る典型的な電圧範囲を示す。
表1:
図2のフラッシュメモリセル210の動作
【表1】
「読み出し1」は、セル電流がビット線に出力される読み出しモードである。「読み出し2」は、セル電流がソース線端子の出力である読み出しモードである。
【0079】
図3は、制御ゲート(control gate、CG)端子28を追加した、
図2のメモリセル210と同様のメモリセル310を示す。制御ゲート端子28は、プログラミング中に高電圧(例えば、10V)、消去中に低又は負電圧(例えば、0v/-8V)、読み出し中に低又は中程度電圧(例えば、0v/2.5V)でバイアスされる。他の端子は、
図2の端子と同様にバイアスされる。
【0080】
図4は、ソース領域14と、ドレイン領域16と、チャネル領域18の第1の部分の上方にある浮遊ゲート20と、チャネル領域18の第2の部分の上方にある選択ゲート22(典型的には、ワード線、WL、に結合される)と、浮遊ゲート20の上方にある制御ゲート28と、ソース領域14の上方にある消去ゲート30と、を含む4ゲートメモリセル410を示す。この構成は、あらゆる目的のため参照により本明細書に組み込まれる、米国特許第6,747,310号に記載されている。ここで、全てのゲートは、浮遊ゲート20を除いて、非浮遊ゲートであり、つまり、それらは電圧源に電気的に接続される又は接続可能である。プログラミングは、熱せられた電子がチャネル領域18から浮遊ゲート20にその電子自体を注入することによって実行される。消去は、電子が浮遊ゲート20から消去ゲート30へトンネリングすることによって実行される。
【0081】
表2は、読み出し、消去、及びプログラム動作を実行するためのメモリセル410の端子に印加され得る典型的な電圧範囲を示す。
表2:
図4のフラッシュメモリセル410の動作
【表2】
「読み出し1」は、セル電流がビット線に出力される読み出しモードである。「読み出し2」は、セル電流がソース線端子の出力である読み出しモードである。
【0082】
図5は、メモリセル510が消去ゲート(erase gate、EG)端子を含まないことを除いて、
図4のメモリセル410と同様のメモリセル510を示す。消去は、基板18を高電圧にバイアスし、制御ゲートCG端子28を低電圧又は負電圧にバイアスすることによって行われる。代替的に、ワード線端子22を正電圧にバイアスし、制御ゲート端子28を負電圧にバイアスすることによって、消去が行われる。プログラミング及び読み出しは、
図4のものと同様である。
【0083】
図6は、別の種類のフラッシュメモリセルである、3ゲートメモリセル610を示す。メモリセル610は、メモリセル610が別個の制御ゲート端子を有しないことを除いて、
図4のメモリセル410と同一である。(消去ゲート端子の使用を通じて消去が起こる)消去動作及び読み出し動作は、制御ゲートバイアスが印加されないことを除いて、
図4のものと同様である。プログラミング動作もまた、制御ゲートバイアスなしで行われるため、結果として、プログラム動作中は、制御ゲートバイアスの不足を補償するため、より高い電圧がソース線端子に印加されなければならない。
【0084】
表3は、読み出し、消去、及びプログラム動作を実行するためのメモリセル610の端子に印加され得る典型的な電圧範囲を示す。
表3:
図6のフラッシュメモリセル610の動作
【表3】
「読み出し1」は、セル電流がビット線に出力される読み出しモードである。「読み出し2」は、セル電流がソース線端子の出力である読み出しモードである。
【0085】
図7は、別の種類のフラッシュメモリセルである、積層ゲートメモリセル710を示す。メモリセル710は、浮遊ゲート20がチャネル領域18全体の上方にわたって延在し、制御ゲート端子22(ワード線に結合される)が絶縁層(図示せず)によって分離されて浮遊ゲート20の上方に延在することを除いて、
図2のメモリセル210と同様である。消去、プログラミング、及び読み出し動作は、メモリセル210について前述したものと同様の方法で動作する。
【0086】
表4は、読み出し、消去、及びプログラム動作を実行するためのメモリセル710及び基板12の端子に印加され得る典型的な電圧範囲を示す。
表4:
図7のフラッシュメモリセル710の動作
【表4】
【0087】
「読み出し1」は、セル電流がビット線に出力される読み出しモードである。「読み出し2」は、セル電流がソース線端子の出力である読み出しモードである。任意選択的に、メモリセル210、310、410、510、610、又は710の行及び列を含むアレイでは、ソース線は、メモリセルの1行又はメモリセルの隣接する2行に結合され得る。すなわち、ソース線端子は、メモリセルの隣接する行によって共有され得る。
【0088】
上記の人工ニューラルネットワークにおける不揮発性メモリセルの種類のうちの1つを含むメモリアレイを利用するために、2つの修正が行われる。第1に、以下に更に説明されるように、アレイ内の他のメモリセルのメモリ状態に悪影響を与えずに各メモリセルを個々にプログラム、消去、及び読み出しできるように線を構成する。第2に、メモリセルの連続(アナログ)プログラミングを提供する。
【0089】
具体的には、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全に消去された状態から完全にプログラムされた状態へ、独立して、かつ他のメモリセルの乱れが最小で、連続的に変えることができる。別の実施形態では、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全にプログラムされた状態から完全に消去された状態へ、及び逆もまた同様に、独立して、かつ他のメモリセルの乱れが最小で、連続的に変えることができる。これはつまり、セル記憶がアナログであるか、又は多数の不連続値(16又は64の異なる値など)のうちの1つを最低限記憶できることを意味し、これにより、メモリアレイ内の全てのセルが非常に精確に、かつ個別に調整可能となり、またメモリアレイは記憶に対して理想的になり、ニューラルネットワークのシナプシスの重みに微調整が可能となる。
【0090】
本明細書に記載される方法及び手段は、限定することなく、SONOS(ケイ素-酸化物-窒化物-酸化物-ケイ素、窒化物中の電荷トラップ)、MONOS(金属-酸化物-窒化物-酸化物-ケイ素、窒化物中の金属電荷トラップ)、ReRAM(抵抗変化型メモリ)、PCM(相変化メモリ)、MRAM(磁気抵抗メモリ)、FeRAM(強誘電体メモリ)、OTP(バイレベル又はマルチレベルの1回のみのプログラムが可能)及びCeRAM(強相関電子メモリ)などの他の不揮発性メモリ技術に適用することができる。本明細書に記載される方法及び手段は、限定することなく、SRAM、DRAM、及び他の揮発性シナプスセルなどのニューラルネットワークに使用される揮発性メモリ技術に適用することができる。
[不揮発性メモリセルアレイを使用するニューラルネットワーク]
【0091】
図8は、本実施形態の不揮発性メモリアレイを利用するニューラルネットワークの非限定例を概念的に示す。この例は、顔認識アプリケーション用に不揮発性メモリアレイニューラルネットワークを使用するが、不揮発性メモリアレイベースのニューラルネットワークを使用して他の適切なアプリケーションを実施することも可能である。
【0092】
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の異なる特徴マップを生成する。
【0093】
本例では、層C1において、それぞれ30×30ピクセルを有する16個の特徴マップが存在する。各ピクセルは、入力とカーネルとの乗算から抽出された新しい特徴ピクセルであり、したがって、各特徴マップは、2次元アレイであり、したがってこの例では、層C1は、2次元アレイの16層を構成する(本明細書で言及される層及びアレイは、必ずしも物理的関係ではなく論理的な関係であり、すなわち、アレイは必ずしも物理的な2次元アレイに配向されないことに留意されたい)。層C1内の16個の特徴マップの各々は、フィルタスキャンに適用される異なるシナプス重みのセット16個のうちの1つによって生成される。C1特徴マップは全て、境界同定など、同じ画像特徴の異なる態様を対象とすることができる。例えば、第1のマップ(この第1のマップを生成するのに使用される全てのスキャンに共有される第1の重みセットを使用して生成される)は、円形エッジを識別することができ、第2のマップ(第1の重みセットと異なる第2の重みセットを使用して生成される)は、長方形エッジ又は特定の特徴のアスペクト比などを識別することができる。
【0094】
層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個のニューロンを含み、ここで出力が最も高いニューロンが、クラスを決定する。この出力は、例えば、元の画像の内容の同定又は分類(クラス分け)を示すことができる。
【0095】
シナプスの各層は、不揮発性メモリセルのアレイ又はアレイの一部を使用して実行される。
【0096】
図9は、その目的のために使用可能なシステムのブロック図である。VMMシステム32は、不揮発性メモリセルを含み、ある層と次の層との間のシナプス(
図6のCB1、CB2、CB3、及びCB4など)として利用される。具体的には、VMMシステム32は、行及び列に配置された不揮発性メモリセルを含むVMMアレイ33、消去ゲート及びワード線ゲートデコーダ34、制御ゲートデコーダ35、ビット線デコーダ36、並びにソース線デコーダ37を含み、それらのデコーダは不揮発性メモリセルアレイ33に対するそれぞれの入力をデコードする。VMMアレイ33への入力は、消去ゲート及びワード線ゲートデコーダ34から、又は制御ゲートデコーダ35から行うことができる。この例におけるソース線デコーダ37はまた、VMMアレイ33の出力をデコードする。代替的に、ビット線デコーダ36が、VMMアレイ33の出力をデコードすることができる。
【0097】
VMMアレイ33は、2つの目的を果たす。第1に、それは、VMMシステム32によって使用される重みを記憶する。第2に、VMMアレイ33は、効果的に、入力に、VMMアレイ33に記憶された重みを乗算し、それらを出力線(ソース線又はビット線)ごとに合計して出力を生成し、これは、次の層への入力又は最後の層への入力になる。乗算及び加算の関数を実行することによって、VMMアレイ33は、別個の乗算及び加算の論理回路の必要性をなくし、また、その場でのメモリ計算により電力効率も良い。
【0098】
VMMアレイ33の出力は、VMMアレイ33の出力を合計してその畳み込み用の単一の値を作成する、差動加算器(加算オペアンプ又は加算カレントミラーなど)38に供給される。差動加算器38は、正の重み入力及び負の重み入力両方の総和を実行して単一の値を出力するように配置される。
【0099】
差動加算器38の合計された出力値は、次に出力を整流する活性化関数回路39に供給される。活性化関数回路39は、シグモイド関数、tanh関数、ReLU関数、又は任意の他の非線形関数を提供し得る。活性化関数回路39の整流された出力値は、次の層(例えば
図8のC1)の特徴マップの要素になり、次いで、次のシナプスに適用されて次の特徴マップ層又は最後の層を生成する。したがって、この例では、VMMアレイ33は、複数のシナプス(それらは、ニューロンの前の層から、又は画像データベースなどの入力層から、入力を受信する)を構成し、加算器38及び活性化関数回路39は、複数のニューロンを構成する。
【0100】
図9のVMMシステム32への入力(WLx、EGx、CGx、及び任意選択的にBLx及びSLx)は、アナログレベル、バイナリレベル、デジタルパルス(この場合、パルスを適切な入力アナログレベルに変換するために、パルス-アナログ変換器PACが必要とされ得る)又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが提供される)であり得、出力は、アナログレベル、バイナリレベル、デジタルパルス、又はデジタルビットであり得る(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが提供される)。
【0101】
図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)変換器によって行うこともできる。
【0102】
入力VMMシステム32aによって生成された出力は、次に、次のVMMシステム(隠しレベル1)32bへの入力として提供され、次に、次のVMNシステム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アレイ]
【0103】
図11は、
図3に示されるメモリセル310に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1100を示す。VMMアレイ1100は、不揮発性メモリセルのメモリアレイ1101と、不揮発性基準メモリセルの基準アレイ1102(アレイの頂部に位置する)と、を含む。代替的に、別の基準アレイが底部に位置することができる。
【0104】
VMMアレイ1100では、制御ゲート線1103などの制御ゲート線が垂直方向に延びており(したがって、行方向の基準アレイ1102が、制御ゲート線1103に直交する)、消去ゲート線1104などの消去ゲート線が水平方向に延びている。ここで、VMMアレイ1100への入力は、制御ゲート線(CG0、CG1、CG2、CG3)に提供され、VMMアレイ1100の出力は、ソース線(SL0、SL1)に現れる。一実施形態では、偶数行のみが使用され、別の実施形態では、奇数行のみが使用される。各ソース線(それぞれSL0、SL1)に加えられる電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0105】
ニューラルネットワークについて本明細書に記載されているように、VMMアレイ1100の不揮発性メモリセル、すなわちVMMアレイ1100のフラッシュメモリは、サブスレッショルド領域で動作するように構成されることが好ましい。
【0106】
本明細書に記載される不揮発性基準メモリセル及び不揮発性メモリセルは、以下のように弱い反転でバイアスされる:
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はそれぞれ、メモリセルの幅及び長さである。
【0107】
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流Idsを入力電圧Vgに変換するI-Vログ変換器を使用した場合:
Vg=n*Vt*log[Ids/wp*Io]
式中、wpは、基準又は周辺メモリセルのwである。
【0108】
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流Idsを入力電圧Vgに変換するI-Vログ変換器を使用した場合:
Vg=n*Vt*log[Ids/wp*Io]
【0109】
式中、wpは、基準又は周辺メモリセルのwである。
【0110】
ベクトル行列乗算器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である。
【0111】
ワード線又は制御ゲートは、入力電圧のためのメモリセルの入力として使用することができる。
【0112】
代替的、本明細書に記載されたVMMアレイの不揮発性メモリセルは、線形領域で動作するように構成することができる。
Ids=β*(Vgs-Vth)*Vds; β=u*Cox*Wt/L
W α (Vgs-Vth)
すなわち、直線領域における重量Wは、(Vgs-Vth)に比例する。
【0113】
ワード線又は制御ゲート又はビット線又はソース線は、線形領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、メモリセルの出力として使用することができる。
【0114】
I-V線形変換器用に、線形領域で動作するメモリセル(基準メモリセル又は周辺メモリセルなど)若しくはトランジスタ、又は抵抗器を使用して、入出力電流を入出力電圧に線形変換することができる。
【0115】
代替的に、本明細書に記載されたVMMアレイのメモリセルは、飽和領域で動作するように構成することができる。
Ids=1/2*β*(Vgs-Vth)2; β=u*Cox*Wt/L
W α (Vgs-Vth)2、すなわち重みWは、(Vgs-Vth)2に比例する。
【0116】
ワード線、制御ゲート、又は消去ゲートは、飽和領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、出力ニューロンの出力として使用することができる。
【0117】
代替的に、本明細書に記載されるVMMアレイのメモリセルは、全ての領域又はそれらの組み合わせ(サブスレッショルド、線形、又は飽和)で使用することができる。
【0118】
図9のVMMアレイ33のための他の実施形態は、参照により本明細書に組み込まれる米国特許出願第15/826,345号に記載されている。上記出願に記載されているように、ソース線又はビット線は、ニューロン出力(電流和出力)として使用することができる。
【0119】
図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(一部のみ示す)を通してダイオード接続される。基準セルは、標的基準レベルに調整(例えば、プログラム)される。標的基準レベルは、基準ミニアレイ行列(図示せず)によって提供される。
【0120】
メモリアレイ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に配置された電流は、その特定のビット線に接続された全ての不揮発性メモリセルからの電流の合計関数を実行する。
【0121】
表5は、VMMアレイ1200の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示し、FLTは、浮遊、すなわち電圧が印可されないことを示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表5:
図12のVMMアレイ1200の動作
【表5】
【0122】
図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)に現れる。各ソース線に加えられる電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0123】
表6は、VMMアレイ1300の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表6:
図13のVMMアレイ1300の動作
【表6】
【0124】
図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を各々含む。基準セルは、標的基準レベルに調整される。
【0125】
メモリアレイ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)に現れる。各ビット線に加えられる電流は、その特定のビット線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0126】
VMMアレイ1400は、メモリアレイ1403内の不揮発性メモリセルの一方向調整を実施する。すなわち、各不揮発性メモリセルは消去され、次いで、浮遊ゲート上の所望の電荷に達するまで部分的にプログラムされる。これは、例えば、以下に記載される精密プログラミング技術を使用して実行することができる。過度に多くの電荷が浮遊ゲートに加えられる場合(誤った値がセルに記憶されるなど)、セルは消去されなければならず、一連の部分的なプログラミング動作をやり直さなければならない。示されるように、同じ消去ゲート(EG0又はEG1など)を共有する2つの行は、一緒に消去される必要があり(ページ消去として知られる)、その後、各セルは、浮遊ゲート上の所望の電荷に達するまで部分的にプログラムされる。
表7は、VMMアレイ1400の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタ内の非選択セルの制御ゲート、選択セルとは異なるセクタ内の非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの各動作を示す。
表7:
図14のVMMアレイ1400の動作
【表7】
【0127】
図15は、
図3に示されるメモリセル310に特に適し、入力層と次の層との間でシナプス及びニューロンの一部として利用されるニューロンVMMアレイ1500を示す。VMMアレイ1500は、不揮発性メモリセルのメモリアレイ1503と、
第1の不揮発性基準メモリセルの基準アレイ1501と、第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は、ビット線BL
0、...、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】
図33は、VMMシステム3300のブロック図を示す。VMMシステム3300は、VMMアレイ3301、行デコーダ3302、高電圧デコーダ3303、列デコーダ3304、ビット線ドライバ3305、入力回路3306、出力回路3307、制御論理3308、及びバイアス生成器3309を含む。VMMシステム3300は、チャージポンプ3311、チャージポンプ調整器3312、及び高電圧レベル生成器3313を含む高電圧生成ブロック3310を更に含む。VMMシステム3300は、アルゴリズムコントローラ3314、アナログ回路3315、制御論理3316、及び試験制御論理3317を更に含む。以下に記載されるシステム及び方法は、VMMシステム3300に実装され得る。
【0156】
入力回路3306は、DAC(デジタル-アナログ変換器)、DPC(デジタル-パルス変換器)、AAC(電流-電圧変換器などのアナログ-アナログ変換器)、PAC(パルス-アナログレベル変換器)、又は任意の他のタイプの変換器などの回路を含み得る。入力回路3306は、正規化、スケーリング関数、又は算術関数を実装し得る。入力回路3306は、入力のための温度補償機能を実装し得る。入力回路3306は、ReLU又はシグモイド関数などの活性化関数を実装し得る。
【0157】
出力回路3307は、ADC(ニューロンアナログ出力をデジタルビットに変換するためのアナログ-デジタル変換器)、AAC(電流-電圧変換器などのアナログ-アナログ変換器)、APC(アナログ-パルス変換器)、又は任意の他のタイプの変換器などの回路を含み得る。出力回路3307は、ReLU又はシグモイド関数などの活性化関数を実装し得る。出力回路3307は、ニューロン出力のための正規化、スケーリング関数、又は算術関数を実装し得る。出力回路3307は、以下に記載されるように、ニューロン出力又はアレイ出力(ビット線出力など)のための温度補償関数を実装し得る。
【0158】
図34は、VMMシステム3300内のアルゴリズムコントローラ3314によって実行され得る調整補正方法3400を示す。調整補正方法3400は、セル出力から生じる最終誤差と、セルの元の標的とに基づいて適応標的を生成する。この方法は、典型的には、受信される調整コマンドに応答して開始される(ステップ3401)。選択されたセル又は選択されたセルのグループに対する初期電流標的(プログラム/検証アルゴリズムに使用される)、Itargetv(i)は、関数又はルックアップテーブルを使用することなどによって予測標的モデルを使用して決定され、変数DeltaErrorは0に設定される(ステップ3402)。標的関数は、使用される場合、選択された一つのメモリセル又はセルグループのI-Vプログラム曲線に基づく。標的関数はまた、セルが示すプログラムディスターブの程度(セクタ内のセルアドレス及びセルレベルに依存し、セルは、比較的大きいディスターブを示す場合、抑止状態でより多くのプログラム時間に晒され、より高い電流を有するセルは、典型的により多くのディスターブを有する)、セル対セルの結合、及び様々なタイプのアレイノイズなどのアレイの特徴によって引き起こされる様々な変異に依存する。これらの変異は、ケイ素のPVT(プロセス、電圧、温度)で特徴付けられ得る。ルックアップテーブルは、使用される場合、I-V曲線及び様々な変異をエミュレートするために同じ方法で特徴付けられ得る。
【0159】
次に、それぞれのセルが、読み出し動作中に例えば約3~5μAの電流を引き込むように、VMM内の全てのセルに対して、それぞれのセルを中間弱消去レベルに消去するソフト消去が実行される(ステップ3403)。ソフト消去は、例えば、中間セル電流に達するまで、セルに増分消去パルス電圧を適用することによって実行される。次に、深いプログラミング操作が、例えば、<pA電流レベルに達するために、全ての未使用のセルに対して実行される(ステップ3404)。次いで、誤差結果に基づく標的調節(補正)が実行される。セルがプログラミングでオーバーシュートを受けたことを意味する、DeltaError>0の場合、Itargetv(i+1)は、次いで、Itarget+theta*DeltaErrorに設定され、thetaは、例えば、1又は1に近い数値である(ステップ3405A)。
【0160】
Itarget(i+1)はまた、適切な誤差標的調節/補正によって以前のItarget(i)に基づいて調節され得る。セルがプログラミングでアンダーシュートを受けたことを意味するDeltaError<0の場合、セル電流がまだ標的に到達していないことを意味し、次いで、Itargetv(i+1)は以前の標的Itargetv(i)に設定される(ステップ3405B)。
【0161】
次に、粗プログラム及び/又は微細プログラム並びに検証動作が実行される(ステップ3406)。精密(微細)プログラミングステップを実行する前に、複数の徐々に小さくなる粗標的を標的とすることなどによって、複数の適応粗プログラミング方法が使用されて、プログラミングが加速され得る。適応精密プログラミングは、例えば、微細(精密)増分プログラム電圧パルス又は一定のプログラムタイミングパルスで行われる。粗プログラミング及び微細プログラミングを実行するためのシステム及び方法の例は、参照により本明細書に組み込まれる、本出願と同じ譲受人によって、2019年11月11日に出願された「Precise Programming Method and Apparatus for Analog Neural Memory in a Deep Learning Artificial Neural Network」と題する米国仮特許出願第62/933,809号に記載されている。
【0162】
Icellは、選択されたセルで測定される(ステップ3407)。セル電流は、例えば、電流計回路によって測定され得る。セル電流は、例えば、ADC(アナログ-デジタル変換器)回路によって測定され得、この場合、出力はデジタルビットによって表される。セル電流は、例えば、I-V(電流-電圧変換器)回路によって測定され得、この場合、出力は、アナログ電圧によって表される。DeltaErrorが計算され、これは、Icell-Itargetであり、測定されたセル(Icell)内の実際の電流と標的電流(Itarget)との間の差を表す。|DeltaError|<DeltaMarginの場合、セルは、特定の許容誤差(DeltaMargin)内の標的電流を達成し、方法は終了する(ステップ3410)。|Deltaerror|=abs(DeltaError)=DeltaErrorの絶対値である。そうでない場合、方法はステップ3403に戻り、ステップを順次再実行する(ステップ3410)。
【0163】
図35A及び
図35Bは、VMMシステム3300内のアルゴリズムコントローラ3314によって実行され得る調整補正方法3500を示す。
図35Aを参照すると、方法は、典型的には受信される調整コマンドに応答して開始する(ステップ3501)。VMMアレイ全体は、ソフト消去方法などによって消去される(ステップ3502)。深いプログラミング動作は、セル電流<pAレベルを得るために、全ての未使用のセルに対して実行される(ステップ3503)。VMMアレイ内の全てのセルは、粗及び/又は微細プログラミングサイクルを使用して、0.5~1.0μAなどの中間値にプログラムされる(ステップ3504)。粗プログラミング及び微細プログラミングを実行するためのシステム及び方法の例は、参照により本明細書に組み込まれる、本出願と同じ譲受人によって、2019年11月11日に出願された「Precise Programming Method and Apparatus for Analog Neural Memory in a Deep Learning Artificial Neural Network」と題する米国仮特許出願第62/933,809号に記載されている。上述のように、関数又はルックアップテーブルを使用して、使用されるセルに対する予測標的が設定される(ステップ3505)。次に、VMM内のそれぞれのセクタに対してセクタ調整方法3507が実行される(ステップ3506)。セクタは、典型的には、アレイ内の2つ以上の隣接する行からなる。
【0164】
図35Bは、適応標的セクタ調整方法3507を示す。セクタ内の全てのセルは、(1)粗/微細/一定P/Vサイクル、(2)CG+(CG増分のみ)又はEG+(EG増分のみ)又は相補的CG+/EG-(CG増分及びEG減分)、(3)最初にプログラムされる最も深いセル(セルをグループにまとめることを意味する進行性グループ化などであり、最低電流を有するセルを有するグループが最初にプログラムされる)などの個々の又は組み合わされたプログラム/検証(P/V)方法を使用して、最終的に所望される値(例えば、1nA~50nA)にプログラムされる(ステップ3508A)。次に、Icell<Itargetであるか否かについての決定が行われる
(ステップ3508B)。はいの場合、方法はステップ3509に進む。いいえの場合、方法はステップ3508Aを繰り返す。ステップ3509において、DeltaErrorが測定され、これは、測定されたIcell-Itarget(i+1)に等しい(ステップ3509)。|DeltaError|<DeltaMarginであるか否かについての決定が行われる(ステップ3510)。はいの場合、方法は完了する(ステップ3511)。いいえの場合、標的調節が実行される。セルがプログラミングでオーバーシュートを受けたことを意味するDeltaError>0の場合、標的は、新しい標的をItarget+theta
*DeltaErrorに設定することによって調節され、thetaは、典型的には=1である(ステップ3512A)。Itarget(i+1)はまた、適切な誤差標的調節/補正で、以前のItarget(i)に基づいて調節され得る。セルがプログラミングでアンダーシュートを受けたことを意味するDeltaError<0の場合、セルがまだ標的に到達していないことを意味し、標的は、Itarget(i+1)=Itargetv(i)を意味する以前の標的を保持することによって調節される(ステップ3512B)。セクタをソフト消去する(ステップ3513)。セクタの全てのセルを中間値にプログラムし(ステップ3514)、ステップ3509に戻る。
【0165】
典型的なニューラルネットワークは、正の重みw+及び負の重みw-を有し得、複合重み=w+ - w-である。w+及びw-は、それぞれメモリセルによって実装され(それぞれIw+及びIw-)、複合重み(Iw=Iw+ - Iw-、電流減算)は、周辺回路レベル(アレイビット線出力回路など)で実行され得る。したがって、複合重みに関する重み調整実施形態は、表8に示される例のように、w+セルとw-セルとの両方を同時に調整すること、w+セルのみを調整すること、又はw-セルのみを調整することを含み得る。調整は、
図34/
図35A/
図35Bに関して前述したプログラム/検証及び誤差標的調節方法を使用して実行される。検証は、複合重みのみに対して(例えば、個々の正のw+セル電流又はw-セル電流、w+セル電流のみ、又はw-セル電流のみではなく、複合重み電流を測定して/読み出して)実行され得る。
【0166】
例えば、3naの複合Iwの場合、Iw+は3naであり得、Iw-は0naであり得るか、又は、Iw+は13naであり得、Iw-は10naであり得、これは、正の重みIw+及び負の重みIw-の両方がゼロではないことを意味する(例えば、ゼロは、深くプログラムされたセルを表す)。これは、Iw+及びIw-の両方がノイズの影響を受けにくくなるため、特定の動作条件において好ましいものであり得る。
表
9:重み調整方法
【表9】
【0167】
図36Aは、温度(例としてサブスレッショルド領域内)に対するデータ挙動(I-V曲線)を示し、
図36Bは、VMMシステムの動作中のデータドリフトによって生じた問題を示し、
図36C及び
図36Dは、データドリフトを補償するためのブロックを示し、
図36Cに関しては、温度変化を補償するためのブロックを示す。
【0168】
図36Aは、動作温度が増加するにつれて、VMMアレイ内の任意の所与の選択された不揮発性メモリセル内で検知される電流がサブスレッショルド領域で増加するか、飽和領域で減少するか、又は一般に線形領域で減少する、VMMシステムの既知の特徴を示す。
【0169】
図36Bは、時間の使用に伴うアレイ電流分布(データドリフト)を示し、これは、VMMアレイからの集合出力(VMMアレイ内の全てのビット線からの電流の合計)が、動作時間の使用に伴って右側(又は、利用される技術によっては左側)にシフトすることを示し、合計集合出力がVMMシステムの耐用年数の使用に伴ってドリフトすることを意味する。この現象は、データドリフトとして知られ、データは、使用条件及び環境要因による劣化に起因してドリフトする。
【0170】
図36Cは、データドリフトを補償するために、ビット線出力回路3610の出力に補償電流i
COMPを注入することを含み得る、ビット線補償回路3600を示す。ビット線補償回路3600は、抵抗器又はコンデンサネットワークに基づいて、スケーラ回路によって出力をスケールアップ又はスケールダウンすることを含み得る。ビット線補償回路3600は、その抵抗器又はコンデンサネットワークに基づいてシフタ回路によって出力をシフト又はオフセットすることを含み得る。
【0171】
図36Dは、データドリフトの量を検出するデータドリフトモニタ3620を示す。その情報は、次いで、ビット線補償回路3600への入力として使用され、その結果、適切なレベルのi
COMPが選択され得る。
【0172】
図37は、
図36のビット線補償回路3600の一実施形態であるビット線補償回路3700を示す。ビット線補償回路3700は、調節可能な電流源3701及び調節可能な電流源3702を含み、これらの電流源は一緒にi
COMPを生成し、i
COMPは、調節可能な電流源3701によって生成された電流から調節可能な電流源3701によって生成された電流を引いた値に等しい。
【0173】
図38は、
図36のビット線補償回路3600の一実施形態であるビット線補償回路3700を示す。ビット線補償回路3800は、演算増幅器3801、調節可能な抵抗器3802、及び調節可能な抵抗器3803を含む。演算増幅器3801は、その非反転端子で基準電圧VREFを受け取り、その反転端子でV
INPUTを受け取り、V
INPUTは、
図36Cのビット線出力回路3610から受け取った電圧であり、V
OUTPUTの出力を生成し、V
OUTPUTは、抵抗器3803及び3802の比に基づいてデータドリフトを補償するための、V
INPUTのスケーリングされたバージョンである。抵抗器3803及び/又は3802の値を構成することにより、V
OUTPUTはスケールアップ又はスケールダウンされ得る。
【0174】
図39は、
図36のビット線補償回路3600の一実施形態であるビット線補償回路3900を示す。ビット線補償回路3900は、演算増幅器3901、電流源3902、スイッチ3904、及び調節可能な積分出力コンデンサ3903を含む。ここで、電流源3902は、実際には、VMMアレイ内の単一ビット線又は複数のビット線(正の重み(w+)を合計するためのもの、及び負の重み(w-)を合計するためのものなど)の集合における出力電流である。演算増幅器3901は、その非反転端子で基準電圧VREFを受け取り、その反転端子でV
INPUTを受け取り、V
INPUTは、
図36Cのビット線出力回路3610から受け取った電圧である。ビット線補償回路3900は、調節可能な積分時間におけるコンデンサ3903を通る電流Ineuを積分して、出力電圧V
OUTPUTを生成する積分器として機能し、V
OUTPUT=Inue
*積分時間/C
3903であり、C
3903はコンデンサ3903の値である。したがって、出力電圧V
OUTPUTは、(ビット線)出力電流Ineuに比例し、積分時間に比例し、コンデンサ3903の静電容量に反比例する。ビット線補償回路3900は、V
OUTPUTの出力を生成し、V
OUTPUTの値は、データドリフトを補償するために、コンデンサ3903の構成値及び/又は積分時間に基づいてスケーリングされる。
【0175】
図40は、
図36のビット線補償回路3600の一実施形態であるビット線補償回路4000を示す。ビット線補償回路4000は、M:N比のカレントミラー4010を含み、これは、I
COMP=(M/N)
*i
inputを意味する。カレントミラー4010は、電流i
INPUTを受け取り、その電流をミラーリングし、任意選択的にその電流をスケーリングしてi
COMPを生成する。したがって、M及び/又はNパラメータを構成することによって、i
COMPはスケールアップ又はスケールダウンされ得る。
【0176】
図41は、
図36のビット線補償回路3600の一実施形態であるビット線補償回路4100を示す。ビット線補償回路4100は、演算増幅器4101、調節可能なスケーリング抵抗器4102、調節可能なシフト抵抗器4103、及び調節可能な抵抗器4104を含む。演算増幅器4101は、その非反転端子で基準電圧V
REFを受け取り、その反転端子でV
INを受け取る。V
INは、V
INPUT及びVshftに応答して生成され、V
INPUTは、
図36Cのビット線出力回路3610から受信された電圧であり、Vshftは、V
INPUTとV
OUTPUTとの間のシフトを実装することを意図した電圧である。
このように、V
OUTPUTは、データドリフトを補償するための、V
INPUTのスケーリング及びシフトされたバージョンである。
【0177】
図42は、
図36のビット線補償回路3600の一実施形態であるビット線補償回路4200を示す。ビット線補償回路4200は、演算増幅器4201、入力電流源Ineu4202、電流シフタ4203、スイッチ4205及び4206、並びに調節可能な積分出力コンデンサ4204を含む。ここで、電流源4202は、実際には、VMMアレイ内の単一ビット線又は複数のビット線における出力電流Ineuである。演算増幅器4201は、その非反転端子で基準電圧VREFを受け取り、その反転端子でI
INを受け取り、I
INは、Inueと電流シフタ4203によって出力される電流との合計であり、V
OUTPUTの出力を生成し、V
OUTPUTは、データドリフトを補償するために(コンデンサ4204に基づいて)スケーリング及び(Ishifter4203に基づいて)シフトされる。
【0178】
図43~
図48は、プログラミング又は読み出し動作中にそれぞれの選択されたセルにプログラムされる又は読み出されるW値を提供するために使用され得る、様々な回路を示す。
【0179】
図43は、調節可能な電流源4301及び調節可能な電流源4302を含むニューロン出力回路4300を示し、これらの電流源は一緒にI
OUTを生成し、I
OUTは、調節可能な電流源4301によって生成される電流I
W+から、調節可能な電流源4302によって生成される電流I
W-を引いた値に等しい。調節可能な電流Iw+4301は、正の重みを実装するための、セル電流又はニューロン電流(ビット線電流など)のスケーリングされた電流である。調節可能な電流Iw-4302は、負の重みを実装するための、セル電流又はニューロン電流(ビット線電流など)のスケーリングされた電流である。電流スケーリングは、M:N比のカレントミラー回路、Iout=(M/N)
*Iinなどによって行われる。
【0180】
図44は、調節可能なコンデンサ4401と、制御トランジスタ4405と、スイッチ4402と、スイッチ4403と、調節可能な電流源4404Iw+と、を含むニューロン出力回路4400を示し、このIw+は、M:Nカレントミラー回路などによるセル電流又は(ビット線)ニューロン電流のスケーリングされた出力電流である。トランジスタ4405は、例えば、電流4404に固定バイアス電圧を課すために使用される。回路4404はV
OUTを生成し、V
OUTは、コンデンサ4401に反比例し、調節可能な積分時間(時間スイッチ4403が閉じ、スイッチ4402が開いていた時間)に比例し、調節可能な電流源4404、I
W+によって生成された電流に比例する。V
OUTは、V+ -((Iw+
*積分時間)/C
4401)に等しく、C
4401は、コンデンサ4401の値である。コンデンサ4401の正端子V+は正の供給電圧が接続され、コンデンサ4401の負端子V-は出力電圧V
OUTが接続される。
【0181】
図45は、コンデンサ4401及び調節可能な電流源4502を含むニューロン回路4500を示し、これは、M:Nカレントミラーなどによる、セル電流又は(ビット線)ニューロン電流のスケーリングされた電流である。回路4500は、V
OUTを生成し、V
OUTは、コンデンサ4401に反比例し、調節可能な積分時間(スイッチ4501が開いていた時間)に比例し、調節可能な電流源4502、I
Wiによって生成された電流に比例する。コンデンサ4401は、電流Iw+を積分するその動作を完了した後、ニューロン出力回路44から再使用される。次いで、正端子及び負端子(V+及びV-)は、ニューロン出力回路45内で交換され、正端子には、電流Iw-によって非積分化される出力電圧V
OUTがかけられる。負端子は、クランプ回路(図示せず)によって以前の電圧値に保持される。事実上、出力回路44は、正の重みの実装に使用され、回路45は、負の重みの実装に使用され、コンデンサ4401の最終電荷は、複合重み(Qw=Qw+-Qw-)を効果的に表
す。
【0182】
図46は、調節可能なコンデンサ4601、スイッチ4602、制御トランジスタ4604、及び調節可能な電流源4603を含むニューロン回路4600を示す。回路4600は、V
OUTを生成し、V
OUTは、コンデンサ4601に反比例し、調節可能な積分時間(スイッチ4602が開いていた時間)に比例し、調節可能な電流源4603、I
W-によって生成された電流に比例する。コンデンサ4601の負端子V-は、例えば、接地に等しい。コンデンサ4601の正端子V+は、例えば、電流Iw-を積分する前に正電圧に最初にプリチャージされる。ニューロン回路4600は、複合重み(Qw=Qw+ - Qw-)を実装するために、ニューロン回路4400と共にニューロン回路4500の代わりに使用され得る。
【0183】
図47は、演算増幅器4703及び4706と、調節可能な電流源Iw+4701及びIw-4702と、調節可能な抵抗器4704、4705、及び4707と、を含むニューロン回路4700を示す。ニューロン回路4700は、R4707
*(Iw+ - Iw-)に等しいV
OUTを生成する。調節可能な抵抗器4707は、出力のスケーリングを実装する。調節可能な電流源Iw+4701及びIw-4702はまた、M:N比のカレントミラー回路(Iout=(M/N)
*Iin)などによる出力のスケーリングを実装する。
【0184】
図48は、演算増幅器4803及び4806と、スイッチ4808及び4809と、調節可能な電流源Iw-4802及びIw+4801と、調節可能なコンデンサ4804、4805、及び4807と、を含む、ニューロン回路4800を示す。ニューロン回路4800は、(Iw+ - Iw-)に比例し、積分時間(スイッチ4808及び4809が開いていた時間)に比例し、コンデンサ4807の静電容量に反比例する、V
OUTを生成する。調節可能なコンデンサ4807は、出力のスケーリングを実装する。調節可能な電流源Iw+4801及びIw-4802はまた、M:N比のカレントミラー回路(Iout=(M/N)
*Iin)などによる出力のスケーリングを実装する。積分時間もまた、出力スケーリングを調節し得る。
【0185】
【0186】
図49Aでは、出力回路4901は、ADC回路4911を含み、これは、アナログニューロン出力4910を直接デジタル化してデジタル出力ビット4912を提供するために使用される。
【0187】
図49Bでは、出力回路4902は、ニューロン出力回路4921及びADC4911を含む。ニューロン出力回路4921はニューロン出力4920を受信し、ADC回路4911によってデジタル化される前にそれを成形して、出力4912を生成する。ニューロン出力回路4921は、前述のような正規化、スケーリング、シフト、マッピング、算術演算、活性化、及び/又は温度補償に使用され得る。ADC回路は、シリアル(スロープ又はランプ又はカウント)ADC、SAR ADC、パイプラインADC、シグマデルタADC、又は任意のタイプのADCであり得る。
【0188】
図49Cでは、出力回路は、ニューロン出力4930を受け取るニューロン出力回路4921を含み、変換器回路4931は、ニューロン出力回路4921からの出力を出力4932に変換するためのものである。変換器4931は、ADC、AAC(電流-電圧変換器などのアナログ-アナログ変換器)、APC(アナログ-パルス変換器)、又は任意の他のタイプの変換器を含み得る。ADC4911又は変換器4931は、例えば、ビットマッピング(例えば、量子化)又はクリッピング(例えば、クリップされたReLU)によって、活性化関数を実装するために使用され得る。ADC4911及び変換器4931は、より低い又はより高い精度(例えば、より小さい又はより大きい数のビット)、より低い又はより高い性能(例えば、より遅い又はより速い速度)などのように構成可能であり得る。
【0189】
スケーリング及びシフトに関する別の実施形態は、アレイ(ビット線)の出力を、より低い又はより高いビット精度を有するようなデジタルビットに変換し、次いで、特定の関数(例えば、線形又は非線形、圧縮、非線形活性化など)に従って、正規化(例えば、12ビット~8ビット)、シフト、又は再マッピングなどを介してデジタル出力ビットを操作するために使用される、ADC(アナログ-デジタル)変換回路(例えば、シリアルADC、SAR ADC、パイプラインADC、スロープADCなど)を構成することによるものである。ADC変換回路の例は、参照により本明細書に組み込まれる、本出願と同じ譲受人によって、2019年11月11日に出願された「Precise Programming Method and Apparatus for Analog Neural Memory in a Deep Learning Artificial Neural Network」と題する米国仮特許出願第62/933,809号に記載されている。
【0190】
表
10は、読み出し、消去、及びプログラム動作を実行するための代替アプローチを示す。
表
10:フラッシュメモリセルの動作
【表10】
読み出し及び消去動作は、前の表と同様である。しかしながら、プログラミングのためのこの2つの方法は、Fowler-Nordheim(FN)トンネリング機構によって実装される。
【0191】
入力のスケーリングに関する実施形態は、VMMの特定の数の行を一度に有効にし、次いで結果をまとめて組み合わせることなどによって行われ得る。
【0192】
別の実施形態は、入力電圧をスケーリングし、正規化のために出力を適切に再スケーリングする。
【0193】
パルス幅変調入力のスケーリングに関する別の実施形態は、パルス幅のタイミングを調整することによるものである。この技術の例は、参照により本明細書に組み込まれる、2019年6月21日に本出願と同じ譲受人によって出願された「Configurable Input Blocks and Output Blocks and Physical Layout for Analog Neural Memory in Deep Learning Artificial Neural Network」と題する米国特許出願第16/449,201号に記載されている。
【0194】
入力をスケーリングするための別の実施形態は、入力バイナリビットを一度に1つずつ有効にすることによるものであり、例えば、8ビット入力IN7:0の場合、IN0、IN1、...、IN7をそれぞれ連続して評価し、次いで、出力結果を適切なバイナリビット重み付けと組み合わせる。この技術の例は、参照により本明細書に組み込まれる、2019年6月21日に本出願と同じ譲受人によって出願された「Configurable Input Blocks and Output Blocks and Physical Layout for Analog Neural Memory in Deep Learning Artificial Neural Network」と題する米国特許出願第16/449,201号に記載されている。
【0195】
任意選択的に、上記の実施形態では、電流を検証するか又は読み出す目的でセル電流を測定することは、ノイズ(RTN又は任意のランダムノイズなど)の影響を低減するため、及び/又は欠陥があり、冗長ビットによって置き換えられる必要がある全ての外れ値ビットを検出するために、平均又は複数の測定、例えば、8~32回の測定を取ることであり得る。
【0196】
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「の上に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「の上に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「に間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に伴わずに形成すること、及びその要素を基板に間接的に1つ以上の中間材料/要素をそれらの間に伴って形成することを含み得る。