(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-09
(45)【発行日】2024-12-17
(54)【発明の名称】深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用のデジタル出力機構
(51)【国際特許分類】
G11C 11/56 20060101AFI20241210BHJP
G11C 16/26 20060101ALI20241210BHJP
G11C 11/54 20060101ALI20241210BHJP
G06N 3/065 20230101ALI20241210BHJP
G06G 7/60 20060101ALI20241210BHJP
G06G 7/16 20060101ALI20241210BHJP
【FI】
G11C11/56 220
G11C16/26 140
G11C11/54
G06N3/065
G06G7/60
G06G7/16 510
(21)【出願番号】P 2023539789
(86)(22)【出願日】2021-04-07
(86)【国際出願番号】 US2021026284
(87)【国際公開番号】W WO2022146468
(87)【国際公開日】2022-07-07
【審査請求日】2023-08-22
(32)【優先日】2021-01-01
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】トラン、ヒュー バン
(72)【発明者】
【氏名】ブー、サン
(72)【発明者】
【氏名】トリン、ステファン
(72)【発明者】
【氏名】ホン、スタンレー
(72)【発明者】
【氏名】レ、ギア
(72)【発明者】
【氏名】レ、トアン
(72)【発明者】
【氏名】パム、ヒエン
【審査官】後藤 彰
(56)【参考文献】
【文献】国際公開第2020/222869(WO,A1)
【文献】国際公開第2020/149890(WO,A1)
【文献】国際公開第2020/149889(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 11/56
G11C 16/26
G11C 11/54
G06N 3/065
G06G 7/60
G06G 7/16
(57)【特許請求の範囲】
【請求項1】
不揮発性メモリセルのアレイから出力を生成するための出力ブロックであって、
前記アレイへの一連の入力に応答して、生成された前記アレイ内の1つ以上の選択された不揮発性メモリセルから一連の電流を受け取り、かつ前記一連の電流に応答して電圧又は一連の電圧を生成するための電流-電圧変換器と、
前記電圧又は前記一連の電圧を複数の出力ビットに変換するためのアナログ-デジタル変換器であって、前記複数の出力ビットは、前記一連の電流又は前記電圧若しくは前記一連の電圧のうちの1つ以上に対して実行される重み付け関数を反映する、アナログ-デジタル変換器と、を備える、出力ブロック。
【請求項2】
前記一連の入力のうちの各入力はパルスを含み、前記パルスの幅は、前記入力のデータ値に比例する、請求項1に記載の出力ブロック。
【請求項3】
前記一連の入力のうちの各入力は、アナログバイアス電圧に加算されるパルスを含み、前記パルスの幅は、前記入力のデータ値に比例する、請求項1に記載の出力ブロック。
【請求項4】
前記一連の入力のうちの各入力は、一連の1つ以上のパルスを含み、前記一連の1つ以上のパルス内のパルスの数は、前記入力のデータ値に比例する、請求項1に記載の出力ブロック。
【請求項5】
前記一連の入力のうちの各入力は、アナログバイアス電圧に加算される一連の1つ以上のパルスを含み、前記一連の1つ以上のパルス内のパルスの数は、前記入力のデータ値に比例する、請求項1に記載の出力ブロック。
【請求項6】
前記一連の入力のうちの各入力は、アナログバイアス電圧に加算されるパルスを含み、前記パルスの幅は、前記入力のデータ値に比例する、請求項1に記載の出力ブロック。
【請求項7】
前記一連の入力のうちの各入力は、アナログバイアス電圧を含み、前記アナログバイアス電圧の大きさは、前記入力のデータ値に比例する、請求項1に記載の出力ブロック。
【請求項8】
前記一連の入力のうちの各入力は、アナログバイアス電圧を含み、前記アナログバイアス電圧の大きさは、前記入力によって表される複数のデジタルビットのデータ値に比例する、請求項1に記載の出力ブロック。
【請求項9】
前記一連の入力のうちの各入力は、アナログバイアス電圧を含み、前記アナログバイアス電圧の大きさは、前記入力によって表されるデジタルビットのビット位置に応じて変化する、請求項1に記載の出力ブロック。
【請求項10】
前記不揮発性メモリセルは、スプリットゲートフラッシュメモリセルである、請求項1に記載の出力ブロック。
【請求項11】
前記不揮発性メモリセルは、積層ゲートフラッシュメモリセルである、請求項1に記載の出力ブロック。
【請求項12】
前記電流-電圧変換器は、無損失である、請求項1に記載の出力ブロック。
【請求項13】
前記電流-電圧変換器は、前記電圧又は前記一連の電圧を出力するサンプルアンドホールド回路を備える、請求項1に記載の出力ブロック。
【請求項14】
前記電流-電圧変換器は、前記電圧又は前記一連の電圧を出力する演算増幅器を備える、請求項1に記載の出力ブロック。
【請求項15】
前記電流-電圧変換器は、前記電圧又は前記一連の電圧を出力する無損失可変抵抗ユニットを含む、請求項1に記載の出力ブロック。
【請求項16】
前記アレイは、ベクトルマトリックス乗算器アレイである、請求項1に記載の出力ブロック。
【請求項17】
前記不揮発性メモリセルは、スプリットゲートフラッシュメモリセルである、請求項16に記載の出力ブロック。
【請求項18】
前記不揮発性メモリセルは、積層ゲートフラッシュメモリセルである、請求項16に記載の出力ブロック
。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本出願は、2021年1月1日に出願された「Input and Digital Output Mechanisms for Analog Neural Memory in a Deep Learning Artificial Neural Network」と題する米国特許仮出願第63/133,270号、及び2021年3月31日に出願された「Digital Output Mechanisms for Analog Neural Memory in a Deep Learning Artificial Neural Network」と題する米国特許出願第17/219,352号の優先権を主張する。
【0002】
(発明の分野)
人工ニューラルネットワークにおけるベクトルマトリックス乗算(vector-by-matrix multiplication、VMM)アレイ内の不揮発性メモリセルを読み出す又は検証するための出力機構の多数の実施形態が開示される。
【背景技術】
【0003】
人工ニューラルネットワークは、生物学的ニューラルネットワーク(動物の中枢神経系、特に脳)を模倣しており、多数の入力に依存し得、かつ、一般的に未知である関数を推定する又は近似するために使用される。人工ニューラルネットワークは、概して、お互いの間でメッセージを交換する相互接続した「ニューロン」の層を含む。
【0004】
図1は人工ニューラルネットワークを示しており、図中、円は、入力又はニューロンの層を表す。接続(シナプスと呼ばれる)は、矢印によって表され、経験に基づいてチューニングされ得る数値の重みを有する。これにより、ニューラルネットワークは入力に適応し、学習可能になる。典型的には、ニューラルネットワークは、複数の入力の層を含む。典型的には、1つ以上のニューロンの中間層、及びニューラルネットワークの出力を提供するニューロンの出力層が存在する。各レベルでニューロンは、シナプスから受け取ったデータに基づいて個々に又は集合的に意思決定を行う。
【0005】
高性能情報処理用の人工ニューラルネットワークの開発における主要な課題のうちの1つは、適切なハードウェア技術の欠如である。実際には、実用ニューラルネットワークは、非常に多数のシナプスに依拠しており、これによりニューロン間の高い接続性、すなわち、非常に高度な計算処理の並列化が可能となる。原理的には、このような複雑性は、デジタルスーパーコンピュータ又は専用グラフィックプロセッシングユニットクラスタによって実現が可能である。しかしながら、高コストに加え、これらのアプローチはまた、生物学的ネットワークが主として低精度のアナログ計算を実施するのではるかに少ないエネルギーしか消費しないのと比較して、エネルギー効率が劣っていることに悩まされている。人工ニューラルネットワークにはCMOSアナログ回路が使用されてきたが、ほとんどのCMOS実装シナプスは、多数のニューロン及びシナプスを前提とすると、嵩高過ぎていた。
【0006】
出願人は以前に、参照により組み込まれる米国特許出願第15/594,439号において、シナプスとして1つ以上の不揮発性メモリアレイを利用する人工(アナログ)ニューラルネットワークを開示した。不揮発性メモリアレイは、アナログニューロモーフィックメモリとして動作する。ニューラルネットワークデバイスは、第1の複数の入力を受け取って、それから第1の複数の出力を生成するように構成されている第1の複数のシナプス、及び第1の複数の出力を受け取るように構成された第1の複数のニューロンを含む。第1の複数のシナプスは複数のメモリセルを含み、メモリセルの各々は、半導体基板内に形成された、間にチャネル領域が延在する離間したソース領域及びドレイン領域と、チャネル領域の第1の部分の上方に絶縁されて配設される浮遊ゲートと、チャネル領域の第2の部分の上方に絶縁されて配設される非浮遊ゲートと、を含む。複数のメモリセルの各々は、浮遊ゲートの多くの電子に対応する重み値を記憶するように構成されている。複数のメモリセルは、第1の複数の入力に、記憶された重み値を乗算して第1の複数の出力を生成するように構成される。
【0007】
アナログニューロモーフィックメモリシステムに使用される各不揮発性メモリセルは、消去・プログラムに対応して、浮遊ゲート内に電荷、すなわち電子の数、を非常に具体的かつ精確な量で保持しなければならない。例えば、各浮遊ゲートはN個の異なる値のうちの1つを保持しなければならず、ここで、Nは、各セルによって示され得る異なる重みの数である。Nの例としては、16、32、64、128及び256が挙げられる。
【0008】
1つのVMMの出力はしばしば別のVMMに適用される必要があるので、VMMシステムにおいては、VMMの出力をビットに変換し、入力ビットを別のVMMに適用できることが望ましい。次に、VMMシステムのビット符号化機構をどのようにして最良に実装するかに関する課題が生じる。
【0009】
必要とされるのは、プログラミング、検証、及び読み出しを実行するためのVMMのための改善された入力及び出力ブロックである。
【発明の概要】
【0010】
人工ニューラルネットワークにおけるベクトルマトリックス乗算(VMM)アレイ内の選択されたメモリセルに記憶された値を読み出す又は検証するための多数の実施形態が開示される。実施形態は、VMMアレイとともに使用するための入力ブロック及び出力ブロックの様々な設計を含む。
【0011】
一実施形態では、不揮発性メモリセルのアレイから出力を生成するための出力ブロックは、アレイへの一連の入力に応答して、生成されたアレイ内の1つ以上の選択された不揮発性メモリセルから一連の電流を受け取り、かつ一連の電流に応答して電圧又は一連の電圧を生成するための電流-電圧変換器と、電圧又は一連の電圧を複数の出力ビットに変換するためのアナログ-デジタル変換器とを備え、複数の出力ビットは、一連の電流又は電圧若しくは一連の電圧のうちの1つ以上に対して実行される重み付け関数を反映する。
【0012】
別の実施形態では、不揮発性メモリセルのアレイから出力を生成するための出力ブロックは、アレイに印加される入力に応答して、アレイ内の1つ以上の選択された不揮発性メモリセルから電流を受け取り、電流を電圧に変換するための電流-電圧変換器を備え、電流-電圧変換器は、電圧を保持するためのサンプルアンドホールド回路を備える。
【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】
【図面の簡単な説明】
【0072】
【
図1】人工ニューラルネットワークを例解する図である。
【
図2】先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図3】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図4】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図5】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図6】1つ以上の不揮発性メモリアレイを利用する例示的な人工ニューラルネットワークの様々なレベルを例解する図である。
【
図7】ベクトルマトリックス乗算システムを例解するブロック図である。
【
図8】1つ以上のベクトルマトリックス乗算システムを利用する例示的な人工ニューラルネットワークを例解するブロック図である。
【
図9】ベクトルマトリックス乗算システムの別の実施形態を示す。
【
図10】ベクトルマトリックス乗算システムの別の実施形態を示す。
【
図11】ベクトルマトリックス乗算システムの別の実施形態を示す。
【
図12】ベクトルマトリックス乗算システムの別の実施形態を示す。
【
図13】ベクトルマトリックス乗算システムの別の実施形態を示す。
【
図14】先行技術の長・短期メモリシステムを示す。
【
図15】長・短期メモリシステムで使用する例示的なセルを示す。
【
図18】先行技術のゲート付き回帰型ユニットシステムを示す。
【
図19】ゲート付き回帰型ユニットシステムでの使用のための例示的なセルを示す。
【
図22A】不揮発性メモリセルをプログラミングする方法の一実施形態を示す。
【
図22B】不揮発性メモリセルをプログラミングする方法の別の実施形態を示す。
【
図23】粗プログラミング方法の一実施形態を示す。
【
図24】不揮発性メモリセルのプログラミングで使用される例示的なパルスを示す。
【
図25】不揮発性メモリセルのプログラミングで使用される例示的なパルスを示す。
【
図26A】セルの傾斜特性に基づいてプログラミングパラメータを調整する、不揮発性メモリセルのプログラミングのための較正アルゴリズムを示す。
【
図26B】セルの傾斜特性に基づいてプログラミングパラメータを調整する、不揮発性メモリセルのプログラミングのための較正アルゴリズムを示す。
【
図28】不揮発性メモリセルのプログラミングのための較正アルゴリズムを示す。
【
図30】プログラミング動作中に不揮発性メモリセルの制御ゲートに印加される電圧の例示的な進行を示す。
【
図31】プログラミング動作中に不揮発性メモリセルの制御ゲートに印加される電圧の例示的な進行を示す。
【
図32】ベクトル乗算マトリックスシステム内の不揮発性メモリセルのプログラミング中にプログラミング電圧を印加するためのシステムを示す。
【
図36A】ニューロン出力用の積分型アナログ-デジタル変換器の一実施形態を示す。
【
図36B】
図36Aの積分型アナログ-デジタル変換器の経時的な電圧出力を示すグラフを示す。
【
図36C】ニューロン出力用の積分型アナログ-デジタル変換器の別の実施形態を示す。
【
図36D】
図36Cの積分型アナログ-デジタル変換器の経時的な電圧出力を示すグラフを示す。
【
図36E】ニューロン出力用の積分型アナログ-デジタル変換器の別の実施形態を示す。
【
図36F】ニューロン出力用の積分型アナログ-デジタル変換器の別の実施形態を示す。
【
図37A】ニューロン出力用の逐次比較型アナログ-デジタル変換器を示す。
【
図37B】ニューロン出力用の逐次比較型アナログ-デジタル変換器を示す。
【
図38】シグマデルタ型アナログ-デジタル変換器の一実施形態を示す。
【
図40】ベクトルマトリックス乗算システムの別の実施形態を示す。
【
図41】ベクトルマトリックス乗算システムの別の実施形態を示す。
【
図42】ベクトルマトリックス乗算システムの別の実施形態を示す。
【
図43】ベクトルマトリックス乗算システムのブロック図を示す。
【
図49A】電流-電圧変換器の別の実施形態を示す。
【
図52A】ハイブリッドシリアル変換器の実施形態を示す。
【
図52B】ハイブリッドシリアル変換器の実施形態を示す。
【
図52C】ハイブリッドシリアル変換器の実施形態を示す。
【発明を実施するための形態】
【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、FN)トンネリングを介して通過する。
【0076】
メモリセル210は、ワード線端子22に正電圧、及びソース領域14に正電圧を加えることによって、ホットエレクトロンによるソースサイド注入(source side injection、SSI)によって、プログラムされる(電子が浮遊ゲートに加えられる)。電子電流は、ドレイン領域16からソース領域14に向かって流れる。電子は加速し、ワード線端子22と浮遊ゲート20との間の間隙に達すると、発熱する。熱せられた電子の一部は、浮遊ゲート20からの静電引力に起因して、浮遊ゲート20にゲート酸化物を介して注入される。
【0077】
メモリセル210は、ドレイン領域16及びワード線端子22に正の読み出し電圧を加える(ワード線端子の下方のチャネル領域18の部分をオンにする)ことによって、読み出される。浮遊ゲート20が正に帯電する(すなわち、電子を消去する)と、浮遊ゲート20の下方のチャネル領域18の部分も同様にオンになり、電流はチャネル領域18を流れ、これは、消去された状態つまり「1」の状態として検知される。浮遊ゲート20が負に帯電する(すなわち、電子でプログラムされる)と、浮遊ゲート20の下方のチャネル領域の部分はほとんど又は完全にオフになり、電流はチャネル領域18を流れず(又はほとんど流れず)、これは、プログラムされた状態つまり「0」の状態として検知される。
【0078】
表1は、読み出し、消去、及びプログラム動作を実行するためにメモリセル110の端子に印加することができる典型的な電圧及び電流範囲を示す。
表1:
図3のフラッシュメモリセル210の動作
【表1】
【0079】
他の種類のフラッシュメモリセルとして、他のスプリットゲート型メモリセル構成も知られている。例えば、
図3は、ソース領域14と、ドレイン領域16と、チャネル領域18の第1の部分の上方にある浮遊ゲート20と、チャネル領域18の第2の部分の上方にある選択ゲート22(典型的には、ワード線、WL、に結合される)と、浮遊ゲート20の上方にある制御ゲート28と、ソース領域14の上方にある消去ゲート30と、を含む4ゲートメモリセル310を示す。この構成は、あらゆる目的のため参照により本明細書に組み込まれる、米国特許第6,747,310号に記載されている。ここで、全てのゲートは、浮遊ゲート20を除いて、非浮遊ゲートであり、つまり、それらは電圧源に電気的に接続される又は接続可能である。プログラミングは、熱せられた電子がチャネル領域18から浮遊ゲート20にその電子自体を注入することによって実行される。消去は、電子が浮遊ゲート20から消去ゲート30へトンネリングすることによって実行される。
【0080】
表2は、読み出し、消去、及びプログラム動作を実行するためにメモリセル310の端子に印加することができる典型的な電圧/電流範囲を示す。
表2:
図3のフラッシュメモリセル310の動作
【表2】
【0081】
図4は、別の種類のフラッシュメモリセルである、3ゲートメモリセル410を示す。メモリセル410は、メモリセル410が別個の制御ゲートを有しないことを除いて、
図3のメモリセル310と同一である。(消去ゲートの使用を通じて消去が起こる)消去動作及び読み出し動作は、制御ゲートバイアスが印加されないことを除いて、
図3のものと同様である。プログラミング動作もまた、制御ゲートバイアスなしで行われるため、結果として、プログラム動作中は、制御ゲートバイアスの不足を補償するため、より高い電圧がソース線に印加されなければならない。
【0082】
表3は、読み出し、消去、及びプログラム動作を実行するためにメモリセル410の端子に印加することができる典型的な電圧/電流範囲を示す。
表3:
図4のフラッシュメモリセル410の動作
【表3】
【0083】
図5は、別の種類のフラッシュメモリセルである、積層ゲートメモリセル510を示す。メモリセル510は、浮遊ゲート20がチャネル領域18全体の上方に延在し、制御ゲート22(ここでワード線に結合される)が絶縁層(図示せず)によって分離されて浮遊ゲート20の上方に延在することを除いて、
図2のメモリセル210と同様である。消去は、FGから基板への電子のFNトンネリングによって行われ、プログラミングは、チャネル18とドレイン領域16との間の領域でのチャネルホットエレクトロン(channel hot electron、CHE)注入によって、ソース領域14からドレイン領域16に向かって流れる電子によって、及びより高い制御ゲート電圧を有するメモリセル210の読み出し動作と同様である読み出し動作によって行われる。
【0084】
表4は、読み出し、消去、及びプログラム動作を実行するためのメモリセル510及び基板12の端子に印加され得る典型的な電圧範囲を示す。
表4:
図5のフラッシュメモリセル510の動作
【表4】
【0085】
本明細書に記載される方法及び手段は、限定されないが、FINFETスプリットゲートフラッシュ又はスタックゲートフラッシュメモリ、NANDフラッシュ、SONOS(ケイ素-酸化物-窒化物-酸化物-ケイ素、窒化物中の電荷トラップ)、MONOS(金属-酸化物-窒化物-酸化物-ケイ素、窒化物中の金属電荷トラップ)、ReRAM(抵抗変化型メモリ)、PCM(相変化メモリ)、MRAM(磁気抵抗メモリ)、FeRAM(強誘電体メモリ)、CT(電荷トラップ)メモリ、CN(カーボンチューブ)メモリ、OTP(バイレベル又はマルチレベルの1回のみのプログラムが可能)及びCeRAM(強相関電子メモリ)などの他の不揮発性メモリ技術に適用され得る。
【0086】
上記の人工ニューラルネットワークにおける不揮発性メモリセルの種類のうちの1つを含むメモリアレイを利用するために、2つの修正が行われる。第一に、以下に更に説明されるように、アレイ内の他のメモリセルのメモリ状態に悪影響を与えずに各メモリセルを個々にプログラム、消去、及び読み出しできるように線を構成する。第二に、メモリセルの連続(アナログ)プログラミングを提供する。
【0087】
具体的には、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全に消去された状態から完全にプログラムされた状態へ、独立して、かつ他のメモリセルの乱れが最小で、連続的に変えることができる。別の実施形態では、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全にプログラムされた状態から完全に消去された状態へ、及び逆もまた同様に、独立して、かつ他のメモリセルの乱れが最小で、連続的に変えることができる。これはつまり、セル記憶がアナログであるか、又は多数の不連続値(16個又は64個の異なる値など)のうちの1つを最低限記憶することができることを意味し、これにより、メモリアレイ内の全てのセルが非常に精確に、かつ個々にチューニング可能となり、また、メモリアレイが、記憶、及びニューラルネットワークのシナプシスの重みへの微細チューニング調整に対して、理想的なものになる。
不揮発性メモリセルアレイを使用するニューラルネットワーク
【0088】
図6は、本実施形態の不揮発性メモリアレイを利用するニューラルネットワークの非限定例を概念的に例解する。この例は、顔認識アプリケーション用に不揮発性メモリアレイニューラルネットワークを使用するが、不揮発性メモリアレイベースのニューラルネットワークを使用して他の適切なアプリケーションを実装することも可能である。
【0089】
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の異なる特徴マップを生成する。
【0090】
本例では、層C1において、各々30×30ピクセルを有する16個の特徴マップが存在する。各ピクセルは、入力とカーネルとの乗算から抽出された新しい特徴ピクセルであり、したがって、各特徴マップは、二次元アレイであり、したがってこの例では、層C1は、二次元アレイの16層を構成する(本明細書で言及される層及びアレイは、必ずしも物理的関係ではなく論理的な関係であり、すなわち、アレイは必ずしも物理的な二次元アレイに配向されないことに留意されたい)。層C1内の16個の特徴マップの各々は、フィルタスキャンに適用される異なるシナプス重みのセット16個のうちの1つによって生成される。C1特徴マップは全て、境界識別など、同じ画像特徴の異なる態様を対象とすることができる。例えば、第1のマップ(この第1のマップを生成するために使用される全てのスキャンに共有される第1の重みセットを使用して生成される)は、円形エッジを識別することができ、第2のマップ(第1の重みセットと異なる第2の重みセットを使用して生成される)は、長方形エッジ又はある特定の特徴のアスペクト比などを識別することができる。
【0091】
層C1から層S1へ行く前には、各特徴マップ内の重なり合わずに連続する2×2領域からの値をプールする活性化関数P1(プーリング)が適用される。プーリング関数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個のニューロンを含み、ここで出力が最も高いニューロンが、クラスを決定する。この出力は、例えば、元の画像の内容の識別又は分類(クラス)を示すことができる。
【0092】
シナプスの各層は、不揮発性メモリセルのアレイ又はアレイの一部を使用して実装される。
【0093】
図7は、その目的のために使用可能なアレイのブロック図である。ベクトルマトリックス乗算(VMM)アレイ32は、不揮発性メモリセルを含み、ある層と次の層との間のシナプス(
図6のCB1、CB2、CB3、及びCB4など)として利用される。具体的には、VMMアレイ32は、不揮発性メモリセルのアレイ33、消去ゲート及びワード線ゲートデコーダ34、制御ゲートデコーダ35、ビット線デコーダ36、並びにソース線デコーダ37を含み、それらのデコーダは不揮発性メモリセルアレイ33に対するそれぞれの入力をデコードする。VMMアレイ32への入力は、消去ゲート及びワード線ゲートデコーダ34から、又は制御ゲートデコーダ35から行うことができる。この例におけるソース線デコーダ37はまた、不揮発性メモリセルアレイ33の出力をデコードする。代替的に、ビット線デコーダ36が、不揮発性メモリセルアレイ33の出力をデコードすることもできる。
【0094】
不揮発性メモリセルアレイ33は、2つの目的を果たす。第一に、メモリセルアレイ33は、VMMアレイ32によって使用される重みを記憶する。第二に、不揮発性メモリセルアレイ33は、不揮発性メモリセルアレイ33に格納された重みを、入力に有効に乗算して、それらを出力線(ソース線又はビット線)ごとに加算して、出力を生成し、この出力は次の層への入力又は最後の層への入力になる。不揮発性メモリセルアレイ33が乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性はなくなり、また、メモリ内の計算により電力効率も良い。
【0095】
不揮発性メモリセルアレイ33の出力は、不揮発性メモリセルアレイ33の出力を合計してその畳み込み用の単一の値を作成する、差動合計器(合計オペアンプ又は合計カレントミラーなど)38に供給される。差動合計器38は、正の重み及び負の重みの総和を実行するように配置される。
【0096】
差動合計器38の合計された出力値は、次に出力を整流する活性化関数回路39に供給される。活性化関数回路39は、シグモイド、tanh、又はReLU関数を提供し得る。活性化関数回路39の整流された出力値は、次の層(例えば
図6のC1)として特徴マップの要素になり、次いで、次のシナプスに適用されて次の特徴マップ層又は最後の層を生成する。したがって、この例では、不揮発性メモリセルアレイ33は、複数のシナプスを構成し(ニューロンの前の層から、又は画像データベースなどの入力層から、入力を受け取る)、合計オペアンプ38及び活性化関数回路39は、複数のニューロンを構成する。
【0097】
図7のVMMアレイ32への入力(WLx、EGx、CGx、及び任意選択的にBLx及びSLx)は、アナログレベル、バイナリレベル、又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが提供される)であり得、出力は、アナログレベル、バイナリレベル、又はデジタルビットであり得る(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが提供される)。
【0098】
図8は、図中でVMMアレイ32a、32b、32c、32d及び32eとして標示されたVMMアレイ32の多数の層の使用を示すブロック図である。
図8に示されるように、入力(Inputxで示される)は、デジタル-アナログ変換器31によってデジタルからアナログに変換され、入力VMMアレイ32aに提供される。変換されたアナログ入力は、電圧又は電流であり得る。第1の層の入力D/A変換は、入力VMMアレイ32aのマトリックス乗算器の適切なアナログレベルに入力Inputxをマッピングする関数又はLUT(ルックアップテーブル)を使用することによって行うことができる。入力変換はまた、外部アナログ入力を入力VMMアレイ32aへのマッピングされたアナログ入力に変換するために、アナログ-アナログ(analog to analog、A/A)変換器によって行うこともできる。
【0099】
入力VMMアレイ32aによって生成された出力は、次に、次のVMMアレイ(隠しレベル1)32bへの入力として提供され、次に入力VMMアレイ(隠しレベル2)32cへの入力として提供される出力を生成する、などとなる。VMMアレイ32の様々な層は、畳み込みニューラルネットワーク(convolutional neural network、CNN)のシナプス及びニューロンの各層として機能する。VMMアレイ32a、32b、32c、32d及び32eはそれぞれスタンドアローンの物理的不揮発性メモリアレイとすることができ、又は複数のVMMアレイは、同じ物理的不揮発性メモリアレイの異なる部分を利用することができ、又は複数のVMMアレイは、同じ物理的不揮発性メモリアレイの重なり合う部分を利用することができる。
図8に示される例は、5つの層(32a、32b、32c、32d、32e)、すなわち、1つの入力層(32a)、2つの隠れ層(32b、32c)、及び2つの完全接続層(32d、32e)を含む。当業者であれば、これは単なる例示であり、代わりにシステムが2つを超える隠れ層及び2つを超える完全接続層を含み得ることを理解するであろう。
ベクトルマトリックス乗算(VMM)アレイ
【0100】
図9は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ900を示す。VMMアレイ900は、不揮発性メモリセルのメモリアレイ901と、不揮発性基準メモリセルの基準アレイ902(アレイの頂部に位置する)と、を含む。代替的に、別の基準アレイが底部に位置することもできる。
【0101】
VMMアレイ900では、制御ゲート線903などの制御ゲート線が垂直方向に延びており(したがって、行方向の基準アレイ902が、制御ゲート線903に直交する)、消去ゲート線904などの消去ゲート線が水平方向に延びている。ここで、VMMアレイ900への入力は、制御ゲート線(CG0、CG1、CG2、CG3)に提供され、VMMアレイ900の出力は、ソース線(SL0、SL1)に現れる。一実施形態では、偶数行のみが使用され、別の実施形態では、奇数行のみが使用される。各ソース線(それぞれSL0、SL1)の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0102】
ニューラルネットワークについて本明細書に記載されているように、VMMアレイ900の不揮発性メモリセル、すなわちVMMアレイ900のメモリセル310は、サブスレッショルド領域で動作するように構成されることが好ましい。
【0103】
本明細書に記載される不揮発性基準メモリセル及び不揮発性メモリセルは、以下のように弱反転(サブスレッショルド領域)でバイアスされる:
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はそれぞれ、メモリセルの幅及び長さである。
【0104】
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流を入力電圧に変換するI-Vログ変換器を使用した場合:
Vg=n*Vt*log[Ids/wp*Io]
式中、wpは、基準又は周辺メモリセルのwである。
【0105】
電流入力を伴うベクトルマトリックス乗算器VMMアレイとして使用されるメモリアレイについて、出力電流は以下である:
Iout=wa*Io*e(Vg)/nVt、すなわち
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/nVt
式中、wa=メモリアレイの各メモリセルのwである。
Vthpは周辺メモリセルの有効スレッショルド電圧であり、Vthaはメイン(データ)メモリセルの有効スレッショルド電圧である。トランジスタのスレッショルド電圧は基板本体バイアス電圧の関数であり、Vsbと表される基板本体バイアス電圧は、そのような温度で様々な条件を補償するように変調され得ることに留意されたい。スレッショルド電圧Vthは、次のように表すことができる。
Vth=Vth0+ガンマ(SQRT|Vsb-2*ΦF)-SQRT|2*ΦF|)
式中、Vth0は、ゼロ基板バイアスを有するスレッショルド電圧であり、ΦFは表面電位であり、ガンマは本体効果パラメータである。
【0106】
ワード線又は制御ゲートは、入力電圧のためのメモリセルの入力として使用することができる。
【0107】
代替的に、本明細書に記載されたVMMアレイのフラッシュメモリセルは、線形領域で動作するように構成することができる。
Ids=ベータ*(Vgs-Vth)*Vds; ベータ=u*Cox*Wt/L
W=α(Vgs-Vth)
すなわち、線形領域における重みWは、(Vgs-Vth)に比例する
【0108】
ワード線又は制御ゲート又はビット線又はソース線は、線形領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、メモリセルの出力として使用することができる。
【0109】
I-V線形変換器用に、線形領域で動作するメモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して、入出力電流を入出力電圧に線形変換することができる。
【0110】
代替的に、本明細書に記載されたVMMアレイのメモリセルは、飽和領域で動作するように構成することができる。
Ids=1/2*ベータ*(Vgs-Vth)2; ベータ=u*Cox*Wt/L
W α (Vgs-Vth)2、すなわち、重みWは(Vgs-Vth)2に比例する
【0111】
ワード線、制御ゲート、又は消去ゲートは、飽和領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、出力ニューロンの出力として使用することができる。
【0112】
代替的に、本明細書に記載されるVMMアレイのメモリセルは、ニューラルネットワークの各層又は多層に対して全ての領域又はそれらの組み合わせ(サブスレッショルド、線形、又は飽和)で使用され得る。
【0113】
図7のVMMアレイ32のための他の実施形態は、参照により本明細書に組み込まれる米国特許出願第15/826,345号に記載されている。上記出願に記載されているように、ソース線又はビット線は、ニューロン出力(電流和出力)として使用することができる。
【0114】
図10は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間のシナプスとして利用される、ニューロンVMMアレイ1000を示す。VMMアレイ1000は、不揮発性メモリセルのメモリアレイ1003と、第1の不揮発性基準メモリセルの基準アレイ1001と、第2の不揮発性基準メモリセルの基準アレイ1002と、を含む。アレイの列方向に配置された基準アレイ1001及び1002は、端子BLR0、BLR1、BLR2、及びBLR3に流入する電流入力を電圧入力WL0、WL1、WL2、及びWL3に変換するように機能する。実際には、第1及び第2の不揮発性基準メモリセルは、電流入力が流入する状態で、マルチプレクサ1014(一部のみ示す)を通してダイオード接続される。基準セルは、目標基準レベルにチューニング(例えば、プログラム)される。目標基準レベルは、基準ミニアレイマトリックス(図示せず)によって提供される。
【0115】
メモリアレイ1003は、2つの目的を果たす。第一に、メモリアレイ1003は、VMMアレイ1000により使用される重みを、それぞれのメモリセルに記憶する。第二に、メモリアレイ1003は、メモリアレイ1003に記憶された重みを、入力(すなわち、端子BLR0、BLR1、BLR2、及びBLR3に提供された電流入力であり、これを基準アレイ1001及び1002が入力電圧に変換して、ワード線WL0、WL1、WL2、及びWL3に供給する)に有効に乗算して、次いで、全ての結果(メモリセル電流)を加算して、それぞれのビット線(BL0~BLN)の出力を生成し、この出力は次の層への入力又は最後の層への入力となる。乗算及び加算の関数を実行することで、メモリアレイ1003は、別個の乗算及び加算の論理回路の必要性をなくし、また、電力効率も良い。ここで、電圧入力はワード線WL0、WL1、WL2、及びWL3に提供され、出力は、読み出し(推論)動作中にそれぞれのビット線BL0~BLNに現れる。ビット線BL0~BLNの各々の電流は、その特定のビット線に接続された全ての不揮発性メモリセルからの電流の合計関数を実行する。
【0116】
表5は、VMMアレイ1000の動作電圧及び電流を示す。表中の列は、選択されたセルのワード線、選択されていないセルのワード線、選択されたセルのビット線、選択されていないセルのビット線、選択されたセルのソース線、及び選択されていないセルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表5:
図10のVMMアレイ1000の動作
【表5】
【0117】
図11は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1100を示す。VMMアレイ1100は、不揮発性メモリセルのメモリアレイ1103と、第1の不揮発性基準メモリセルの基準アレイ1101と、第2の不揮発性基準メモリセルの基準アレイ1102と、を含む。基準アレイ1101及び1102は、VMMアレイ1100の行方向に延びる。VMMアレイは、VMMアレイ1100においてワード線が垂直方向に延びることを除いて、VMM1000と同様である。ここで、入力はワード線(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)に提供され、出力は、読み出し動作中にソース線(SL0、SL1)に現れる。各ソース線の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0118】
表6は、VMMアレイ1100の動作電圧及び電流を示す。表中の列は、選択されたセルのワード線、選択されていないセルのワード線、選択されたセルのビット線、選択されていないセルのビット線、選択されたセルのソース線、及び選択されていないセルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表6:
図11のVMMアレイ1100の動作
【表6】
【0119】
図12は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1200を示す。VMMアレイ1200は、不揮発性メモリセルのメモリアレイ1203と、第1の不揮発性基準メモリセルの基準アレイ1201と、第2の不揮発性基準メモリセルの基準アレイ1202と、を含む。基準アレイ1201及び1202は、端子BLR0、BLR1、BLR2、及びBLR3に流入する電流入力を電圧入力CG0、CG1、CG2、及びCG3に変換するように機能する。実際には、第1及び第2の不揮発性基準メモリセルは、電流入力がBLR0、BLR1、BLR2、及びBLR3を通って流入する状態で、マルチプレクサ1212(一部のみ示す)を通してダイオード接続される。マルチプレクサ1212は、読み出し動作中に第1及び第2の不揮発性基準メモリセルの各々のビット線(BLR0など)の一定電圧を確実にするために、対応のマルチプレクサ1205及びカスコーディングトランジスタ1204をそれぞれ含む。基準セルは、目標基準レベルにチューニングされる。
【0120】
メモリアレイ1203は、2つの目的を果たす。第一に、メモリアレイ1203は、VMMアレイ1200によって使用される重みを記憶する。第二に、メモリアレイ1203は、メモリアレイに記憶された重みを、入力(端子BLR0、BLR1、BLR2、及びBLR3に提供された電流入力であり、基準アレイ1201及び1202がこれらの電流入力を入力電圧に変換して、制御ゲート(CG0、CG1、CG2、及びCG3)に供給する)に有効に乗算して、次いで、全ての結果(セル電流)を加算して出力を生成し、この出力はBL0~BLNに現れ、次の層への入力又は最後の層への入力となる。メモリアレイが乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性がなくなり、また、電力効率も良い。ここで、入力は制御ゲート線(CG0、CG1、CG2、及びCG3)に提供され、出力は、読み出し動作中にビット線(BL0~BLN)に現れる。各ビット線の電流は、その特定のビット線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0121】
VMMアレイ1200は、メモリアレイ1203内の不揮発性メモリセルの一方向チューニングを実装する。すなわち、各不揮発性メモリセルは消去され、次いで、浮遊ゲートの所望の電荷に達するまで部分的にプログラムされる。過度に多くの電荷が浮遊ゲートに加えられる場合(誤った値がセルに記憶されるなどの場合)、セルは消去され、一連の部分的なプログラミング動作が最初からやり直される。示されるように、同じ消去ゲート(EG0又はEG1など)を共有する2つの行は、一緒に消去され(ページ消去として知られる)、その後、各セルは、浮遊ゲートの所望の電荷に達するまで部分的にプログラムされる。
【0122】
表7は、VMMアレイ1200の動作電圧及び電流を示す。表中の列は、選択されたセルのワード線、選択されていないセルのワード線、選択されたセルのビット線、選択されていないセルのビット線、選択されたセルの制御ゲート、選択されたセルと同じセクタ内の選択されていないセルの制御ゲート、選択されたセルとは異なるセクタ内の選択されていないセルの制御ゲート、選択されたセルの消去ゲート、選択されていないセルの消去ゲート、選択されたセルのソース線、及び選択されていないセルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表7:
図12のVMMアレイ1200の動作
【表7】
【0123】
図13は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1300を示す。VMMアレイ1300は、不揮発性メモリセルのメモリアレイ1303と
、第1の不揮発性基準メモリセル
の基準アレイ1301と、第2の不揮発性基準メモリセルの基準アレイ1302と、を備える。EG線EGR0、EG0、EG1、及びEGR1は垂直に延び、CG線CG0、CG1、CG2、及びCG3並びにSL線WL0、WL1、WL2、及びWL3は水平に延びる。VMMアレイ1300は、VMMアレイ1300が双方向チューニングを実装することを除いてVMMアレイ1400と同様であり、各個々のセルは、個別のEG線の使用により、浮遊ゲートの所望の電荷量に達するために、完全に消去され、部分的にプログラムされ、必要に応じて部分的に消去することができる。示されるように、基準アレイ1301及び1302は、端子BLR0、BLR1、BLR2及びBLR3における入力電流を制御ゲート電圧CG0、CG1、CG2及びCG3に変換し(マルチプレクサ1314を介したダイオード接続された基準セルの作用を通じて)、これらの電圧は行方向でメモリセルに印加される。電流出力(ニューロン)は、ビット線BL0~BLN中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
【0124】
表8は、VMMアレイ1300の動作電圧及び電流を示す。表中の列は、選択されたセルのワード線、選択されていないセルのワード線、選択されたセルのビット線、選択されていないセルのビット線、選択されたセルの制御ゲート、選択されたセルと同じセクタ内の選択されていないセルの制御ゲート、選択されたセルとは異なるセクタ内の選択されていないセルの制御ゲート、選択されたセルの消去ゲート、選択されていないセルの消去ゲート、選択されたセルのソース線、及び選択されていないセルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表8:
図13のVMMアレイ1300の動作
【表8】
ページ又はワード基準のチューニングによる改善されたVMMシステム
【0125】
図40は、VMMアレイ4000を示す。VMMアレイ4000は、不揮発性メモリセルのページの一方向又は双方向チューニングを実装する。ここで、例示的なページ4001は、それぞれが異なる行にある2つのワードを含む。ワードは、複数のメモリセル、例えば、8~64個を含む。特別なワードは、1つのセルのみ又は数個のセルを含み得る。隣接する行の対は、SL0又はSL1などのソース線を共有する。ページ4001内の全てのセルは、例示的なページセット4001内の全てのセルの消去ゲート端子EGWへの電圧の提供を制御する、消去ゲートイネーブルトランジスタ4002によって制御される共通の消去ゲート線を共有する。ここで、ページ4001内の全てのセルは、同時に消去され得る。その後、ページ4001内のセルは、プログラム(セル単位では、ワード内の各セルが一度にチューニングされ得ることを意味し、ワード単位では、ワード内の全てのセルが同時にチューニングされ得ることを意味する)及び消去(ワード単位では、ワード内の全てのセルが同時にチューニングされ得ることを意味する)動作を通して一方向又は双方向にチューニングされ得、ページ4001内のいくつかのセルは、プログラム動作を通して一方向にチューニングされ得る。プログラム動作は、
図24~
図26を参照して以下に記載される精密プログラミング技術を含み得る。浮遊ゲートに電子電荷がかかりすぎる(誤った電流値、すなわち、意図された電流値より低い電流値がセルに記憶される原因となる)場合、セルは消去される必要があり、部分的なプログラミング動作のシーケンスをやり直す必要がある。
【0126】
図41は、VMMアレイ4100を示す。VMMアレイ4100は、不揮発性メモリセルのワードの一方向又は双方向チューニングを実装する。ここで、例示的なワード4101は、1行に複数のセルを含む。ワード4101内の全てのセルは、ワード4101内の全てのセルの消去ゲート端子への電圧の提供を制御する、消去ゲートイネーブルトランジスタ4102によって制御される共通の消去ゲート線を共有する。ここで、ワード4101内の全てのセルは、同時に消去され得る。その後、ワード4101内のセルは、プログラム(セル単位では、ワード内の各セルが一度にチューニングされ得ることを意味し、ワード単位では、ワード内の全てのセルが同時にチューニングされ得ることを意味する)及び消去(ワード単位では、ワード内の全てのセルが同時にチューニングされ得ることを意味する)動作を通して一方向又は双方向にチューニングされ得る。プログラム動作は、以下に記載される精密プログラミング技術を含み得る。浮遊ゲートに電子電荷がかかりすぎる(その結果、誤った電流値、すなわち、意図された電流値より低い電流値がセルに記憶される)場合、セルは消去される必要があり、部分的なプログラミング動作のシーケンスをやり直す必要がある。
【0127】
図42は、VMMアレイ4200を示す。VMMアレイ4200は、不揮発性メモリセルのワードの一方向又は双方向チューニングを実装する。ここで、例示的なワード4201は、セルの2つの半ワードを含む。それぞれの半ワードは、消去ゲートを共有する行に属する。ワード4201内の全てのセルは、消去ゲート端子EGWに接続された共通の消去ゲート線を共有する。VMMアレイ1800及び1700とは異なり、消去ゲートイネーブルトランジスタは存在しない。ここで、ワード4201内の全てのセルは、同時に消去され得る。その後、ワード4201内のセルは、プログラム(セル単位では、ワード内の各セルが一度にチューニングされ得ることを意味し、ワード単位では、ワード内の全てのセルが同時にチューニングされ得ることを意味する)及び消去(ワード単位では、ワード内の全てのセルが同時にチューニングされ得ることを意味する)動作を通して一方向又は双方向にチューニングされ得る。プログラム動作は、以下に記載される精密プログラミング技術を含み得る。浮遊ゲートに電子電荷がかかりすぎる(その結果、誤った電流値、すなわち、意図された電流値より低い電流値がセルに記憶される)場合、セルは消去される必要があり、部分的なプログラミング動作のシーケンスをやり直す必要がある。
長・短期メモリ
【0128】
先行技術は、長・短期メモリ(long short-term memory、LSTM)として知られる概念を含む。LSTMユニットは、しばしば、ニューラルネットワーク内で使用される。LSTMによって、ニューラルネットワークは所定の任意の期間にわたって情報を記憶し、後続の動作においてその情報を使用することができる。従来のLSTMユニットは、セル、入力ゲート、出力ゲート、及び忘却ゲートを含む。3つのゲートは、セル内及びセル外への情報の流れ、及び情報がLSTM内で記憶される期間を調節する。VMMは、LSTMユニットにおいて特に有用である。
【0129】
図14は、例示的なLSTM1400を示す。この例におけるLSTM1400は、セル1401、1402、1403及び1404を含む。セル1401は、入力ベクトルx
0を受け取り、出力ベクトルh
0及びセル状態ベクトルc
0を生成する。セル1402は、入力ベクトルx
1と、セル1401からの出力ベクトル(隠れ状態)h
0と、セル1401からのセル状態c
0と、を受け取り、出力ベクトルh
1と、セル状態ベクトルc
1と、を生成する。セル1403は、入力ベクトルx
2と、セル1402からの出力ベクトル(隠れ状態)h
1と、セル1402からのセル状態c
1と、を受け取り、出力ベクトルh
2と、セル状態ベクトルc
2と、を生成する。セル1404は、入力ベクトルx
3と、セル1403からの出力ベクトル(隠れ状態)h
2と、セル1403からのセル状態c
2と、を受け取り、出力ベクトルh
3を生成する。追加のセルも使用可能であり、4つのセルを有するLSTMは、単なる例である。
【0130】
図15は、
図14のセル1401、1402、1403、及び1404に使用可能なLSTMセル1500の例示的な実装を示す。LSTMセル1500は、入力ベクトルx(t)と、先行するセルからのセル状態ベクトルc(t-1)と、先行するセルからの出力ベクトルh(t-1)と、を受け取り、セル状態ベクトルc(t)及び出力ベクトルh(t)を生成する。
【0131】
LSTMセル1500は、シグモイド関数デバイス1501、1502、及び1503を含み、各々が0~1の数を適用して、入力ベクトルの各成分が出力ベクトルに寄与する程度を制御する。LSTMセル1500はまた、入力ベクトルに双曲線正接関数を適用するためのtanhデバイス1504及び1505と、2つのベクトルを乗算するための乗算器デバイス1506、1507、及び1508と、2つのベクトルを加算するための加算デバイス1509と、を含む。出力ベクトルh(t)は、システム内の次のLSTMセルに提供することができるか、又は他の目的でアクセスすることができる。
【0132】
図16は、LSTMセル1500の一実装の一例であるLSTMセル1600を示す。読者の便宜のために、LSTMセル1500からの同じ採番方法が、LSTMセル1600で使用される。シグモイド関数デバイス1501、1502、及び1503、並びにtanhデバイス1504は各々、複数のVMMアレイ1601及び活性化回路ブロック1602を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるLSTMセルにおいて特に有用であることが分かる。
【0133】
LSTMセル1600の代替例(及びLSTMセル1500の一実装の別の例)を
図17に示す。
図17では、シグモイド関数デバイス1501、1502及び1503、並びにtanhデバイス1504は、同じ物理ハードウェア(VMMアレイ1701及び活性化関数ブロック1702)を、時分割多重化された方式で共有する。LSTMセル1700はまた、2つのベクトルを乗算するための乗算器デバイス1703と、2つのベクトルを加算するための加算デバイス1708と、(活性化回路ブロック1702を含む)tanhデバイス1505と、値i(t)を、i(t)がシグモイド関数ブロック1702から出力されるときに記憶するためのレジスタ1707と、値f(t)
*c(t-1)を、その値がマルチプレクサ1710を介して乗算器デバイス1703から出力されるときに記憶するためのレジスタ1704と、値i(t)
*u(t)を、その値がマルチプレクサ1710を介して乗算器デバイス1703から出力されるときに記憶するためのレジスタ1705と、値o(t)
*c~(t)を、その値がマルチプレクサ1710を介して乗算器デバイス1703から出力されるときに記憶するためのレジスタ1706と、マルチプレクサ1709と、を含む。
【0134】
LSTMセル1600がVMMアレイ1601とそれぞれの活性化関数ブロック1602との複数のセットを含むのに対し、LSTMセル1700は、LSTMセル1700の実施形態において複数の層を表すために使用される、VMMアレイ1701及び活性化関数ブロック1702の1つのセットのみを含む。LSTMセル1700は、LSTMセル1600と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/4で済むので、LSTMセル1700は、LSTM1600より必要とするスペースが少ない。
【0135】
LSTMユニットは典型的には複数のVMMアレイを含み、これらは各々、合計器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることを更に理解することができる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される実施形態では、VMMアレイ自体の外側に必要とされる回路の最小化を試みる。
ゲート付き回帰型ユニット
【0136】
アナログVMM実装は、ゲート付き回帰型ユニット(gated recurrent unit、GRU)システムに利用することができる。GRUは、反復ニューラルネットワーク内のゲート機構である。GRUは、GRUセルが一般にLSTMセルより少ない数の成分を含むことを除いて、LSTMに類似している。
【0137】
図18は、例示的なGRU1800を示す。この例におけるGRU1800は、セル1801、1802、1803及び1804を含む。セル1801は、入力ベクトルx
0を受け取り、出力ベクトルh
0を生成する。セル1802は、入力ベクトルx
1と、セル1801からの出力ベクトルh
0と、を受け取り、出力ベクトルh
1を生成する。セル1803は、入力ベクトルx
2と、セル1802からの出力ベクトル(隠れ状態)h
1と、を受け取り、出力ベクトルh
2を生成する。セル1804は、入力ベクトルx
3と、セル1803からの出力ベクトル(隠れ状態)h
2と、を受け取り、出力ベクトルh
3を生成する。追加のセルも使用可能であり、4つのセルを有するGRUは、単なる例である。
【0138】
図19は、
図18のセル1801、1802、1803、及び1804に使用することができるGRUセル1900の例示的な実装を示す。GRUセル1900は、入力ベクトルx(t)と、先行するGRUセルからの出力ベクトルh(t-1)と、を受け取り、出力ベクトルh(t)を生成する。GRUセル1900は、シグモイド関数デバイス1901及び1902を含み、それらの各々が、出力ベクトルh(t-1)及び入力ベクトルx(t)からの成分に0~1の数を適用する。GRUセル1900はまた、入力ベクトルに双曲線正接関数を適用するためのtanhデバイス1903と、2つのベクトルを乗算するための複数の乗算器デバイス1904、1905、及び1906と、2つのベクトルを加算するための加算デバイス1907と、1から入力を減算して出力を生成するための相補デバイス1908と、を含む。
【0139】
図20は、GRUセル1900の一実装の一例であるGRUセル2000を示す。読者の便宜のために、GRUセル1900からの同じ採番方法が、GRUセル2000で使用される。
図20から分かるように、シグモイド関数デバイス1901及び1902、並びにtanhデバイス1903は各々、複数のVMMアレイ2001及び活性化関数ブロック2002を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるGRUセルにおいて特に使用されることが分かる。
【0140】
GRUセル2000の代替例(及びGRUセル1900の一実装の別の例)を
図21に示す。
図21において、GRUセル2100は、VMMアレイ2101及び活性化関数ブロック2102を利用しており、シグモイド関数として構成された場合には、0~1の数を適用して、入力ベクトルの各成分が出力ベクトルに寄与する程度を制御する。
図21では、シグモイド関数デバイス1901及び1902、並びにtanhデバイス1903は、同じ物理ハードウェア(VMMアレイ2101及び活性化関数ブロック2102)を、時分割多重化された方式で共有する。GRUセル2100はまた、2つのベクトルを乗算するための乗算器デバイス2103と、2つのベクトルを加算するための加算デバイス2105と、1から入力を減算して、出力を生成するための相補デバイス2109と、マルチプレクサ2104と、値h(t-1)
*r(t)を、その値がマルチプレクサ2104を介して乗算器デバイス2103から出力されるときに保持するためのレジスタ2106と、値h(t-1)
*z(t)を、その値がマルチプレクサ2104を介して乗算器デバイス2103から出力されるときに保持するためのレジスタ2107と、値h^(t)
*(1-z((t))を、その値がマルチプレクサ2104を介して乗算器デバイス2103から出力されるときに保持するためのレジスタ2108と、を備える。
【0141】
GRUセル2000がVMMアレイ2001及び活性化関数ブロック2002の複数のセットを含むのに対し、GRUセル2100は、GRUセル2100の実施形態において複数の層を表すために使用される、VMMアレイ2101及び活性化関数ブロック2102の1つのセットのみを含む。GRUセル2100は、GRUセル2000と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/3で済むので、GRUセル2100は、GRUセル2000より必要とするスペースが少ない。
【0142】
GRUシステムは典型的には複数のVMMアレイを含み、これらは各々、合計器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることが更に理解できる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される実施形態では、VMMアレイ自体の外側に必要とされる回路の最小化を試みる。
【0143】
VMMアレイへの入力は、アナログレベル、バイナリレベル、パルス、時間変調パルス、又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが必要とされる)であり、出力は、アナログレベル、バイナリレベル、タイミングパルス、パルス、又はデジタルビット(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが必要とされる)であり得る。
【0144】
VMMアレイ内のそれぞれのメモリセルに関して、それぞれの重みWは、単一のメモリセルによって、又は差分セルによって、又は2つのブレンドメモリセル(2つのセルの平均)によって実装することができる。差分セルの場合では、重みWを差分重み(W=W+-W-)として実装するために、2つのメモリセルが必要とされる。2つのブレンドメモリセルの場合は、2つのセルの平均として重みWを実装するために2つのメモリセルが必要とされる。
VMMシステムの概要
【0145】
図43は、VMMシステム4300のブロック図を示す。VMMシステム4300は、VMMアレイ4301、行デコーダ4302、高電圧デコーダ4303、列デコーダ4304、ビット線ドライバ4305、入力回路4306、出力回路4307、制御論理4308、及びバイアス生成器4309を備える。VMMシステム4300は、チャージポンプ4311、チャージポンプレギュレータ4312、及び高電圧レベル生成器4313を含む、高電圧生成ブロック4310を更に備える。VMMシステム4300は、(プログラム/消去、又は別名重みチューニング)アルゴリズムコントローラ4314、アナログ回路4315、制御エンジン4316(算術機能、起動機能、埋め込みマイクロコントローラ論理などの特殊機能を含み得る)、及びテスト制御論理4317を更に備える。以下に記載されるシステム及び方法は、VMMシステム4300に実装され得る。
【0146】
入力回路4306は、DAC(デジタル-アナログ変換器)、DPC(デジタル-パルス変換器、デジタル-時間変調パルス変換器)、AAC(電流-電圧変換器などのアナログ-アナログ変換器、対数変換器)、PAC(パルス-アナログレベル変換器)、又は任意の他の種類の変換器などの回路を含み得る。入力回路4306は、正規化、線形若しくは非線形アップ/ダウンスケーリング関数、又は算術関数を実装し得る。入力回路4306は、入力レベルのための温度補償関数を実装し得る。入力回路4306は、ReLU又はシグモイドなどの活性化関数を実装し得る。出力回路4307は、ADC(ニューロンアナログ出力をデジタルビットに変換するための、アナログ-デジタル変換器)、AAC(電流-電圧変換器などのアナログ-アナログ変換器、対数変換器)、APC(アナログ-パルス変換器、アナログ-時間変調パルス変換器)、又は任意の他の種類の変換器などの回路を含み得る。出力回路4307は、ReLU又はシグモイドなどの活性化関数を実装し得る。出力回路4307は、ニューロン出力の統計的正規化、正則化、アップ/ダウンスケーリング/ゲイン関数、統計的丸め、又は算術関数(例えば、加算、減算、除算、乗算、シフト、ログ)を実装し得る。出力回路4307は、アレイの電力消費をほぼ一定に保つために、又はIVの傾斜をほぼ同じに保つことになどによってアレイ(ニューロン)出力の精度を高めるために、ニューロン出力又はアレイ出力(ビット線出力など)のための温度補償関数を実装し得る。
VMM内のセルの精密プログラミングのための実施形態
【0147】
図22Aは、プログラミング方法2200を示す。最初に、方法は、典型的には受け取られるプログラムコマンドに応じて、開始する(ステップ2201)。次に、一斉プログラム動作が、全てのセルを「0」状態にプログラムする(ステップ2202)。次いで、各セルが読み出し動作中に約3~5μAの電流を引き込むように、ソフト消去動作が、全てのセルに対して中間レベルまで消去を行う(弱消去、すなわち、完全ではない消去によって達成される)(ステップ2203)。これは、読み出し動作中に各セルが約20~30μAの電流を引き込む、深く消去されたレベルとは対照的である。次いで、全ての選択されていないセル又はゼロ重みセル(すなわち、重み=ゼロ又は微々たる重み、すなわち、微々たるスレッショルド内の重みのセル)で非常に深いプログラムされた状態までセルの浮遊ゲートに電子を追加し、全ての正電荷を除去するハードプログラムが実行されて(ステップ2204)、それらのセルが本当に「オフ」であることを確実にし、これは、それらのセルが読み出し動作中に無視できる量の電流しか引き込まないことを意味する。
【0148】
次いで、粗プログラミング方法が、選択されたセルで実行され(ステップ2205)、続いて精密プログラミング方法が、選択されたセルで実行されて(ステップ2206)、各選択されたセルに所望される精密な値をプログラムする。ここで、選択されたセルは、プログラミング方法2200の対象として識別され、適切なワード線及びビット線をアサートすることによって、又は何らかの他の機構によって選択されるセルである。
【0149】
図22Bは、プログラミング方法2200と同様の別のプログラミング方法2210を示す。しかしながら、方法が開始した後(ステップ2201)、
図22Aのステップ2202でのように全てのセルを「0」状態にプログラムするプログラム動作の代わりに、消去動作が使用されて、全てのセルに対して消去を行って「1」状態にする(ステップ2212)。次いで、各セルが読み出し動作中に約3~5uAの電流を引き込むように、ソフトプログラム動作(ステップ2213)が使用されて、全てのセルを中間レベルにプログラムする(ソフトプログラミング、すなわち、完全ではないプログラミングによって達成される)。その後、
図22Aに関連して上述したように、選択されていないセルのハードプログラミング(ステップ2204)並びに粗かつ精密なプログラミング方法が続く(ステップ2205~2206)。
図22Bの実施形態の変形形態は、ソフトプログラミング方法(ステップ2213)を完全に除去する。
【0150】
図23は、検索及び実行方法2300である、粗プログラミング方法2205の第1の実施形態を示す。最初に、ルックアップテーブル検索、又は所定の関数を実行して、選択されたセルの各々の粗標的電流値(I
CT)を、その選択されたセルに記憶されることが意図される値に基づいて決定する(ステップ2301)。選択されたセルは、N(例えば、限定することなく、128、64、32)個の可能な値のうちの1つを記憶するようにプログラムすることができる。N個の値の各々は、選択されたセルによって読み出し動作中に引き込まれる異なる所望の電流値(I
D)に対応する。一実施形態では、ルックアップテーブル又は関数(例えば、データへの曲線当てはめから導出された関数、又はメモリ挙動の物理学に基づく関数であり、この関数は、最終標的値及び既存の値などの変数に作用し、次の動作のための予想又は所望の標的を計算する)は、探索及び実行方法2300中に選択されたセルのための粗標的電流値I
CTとして使用するためのM個の可能な電流値を含み、ここで、MはN未満の整数である。例えば、Nが8である場合、Mは4である可能性があり、これは、選択されたセルが記憶することができる8つの可能な値が存在することを意味し、4つの粗標的電流値I
CTのうちの1つが、探索及び実行方法2300のための粗標的電流値I
CTとして選択される。すなわち、検索及び実行方法2300は、選択されたセルを、所望の電流値I
Dに幾分近い粗標的電流値(I
CT)に迅速にプログラムするように配置され、次いで、精密プログラミング方法2206は、所望の電流値I
Dに極めて近くなるように、選択されたセルをより精密にプログラムする。
【0151】
セル値、所望の電流値、及び粗標的電流値の例を、N=8及びM=4の単純な例について表9及び10に示す。
表9:N=8の場合のN個の所望の電流値の例
【表9】
表10:M=4の場合のM個の標的電流値の例
【表10】
オフセット値I
CTOFFSETxは、粗プログラミング中に所望の電流値をオーバーシュートしてしまうのを防止するために使用される。
【0152】
粗標的電流値I
CTが選択されると、選択されたセルは、選択されたセルのセルアーキテクチャタイプ(例えば、メモリセル210、310、410、又は510)に基づいた、選択されたセルの適切な端子に電圧v
0を印加することによってプログラムされる(ステップ2302)。選択されたセルが
図3のメモリセル310のタイプである場合、電圧v
0は制御ゲート端子28に印加され、v
0は粗標的電流値I
CTに応じて5~7Vであり得る。v
0の値は、任意選択的に、粗標的電流値I
CTと対応させてv
0を記憶する電圧ルックアップテーブルから決定することができる。
【0153】
次に、選択されたセルは、電圧vi=vi-1+vincrementを印加することによってプログラムされ、式中、iは1で開始し、このステップが繰り返されるたびに増分し(ステップ2303)、vincrementは、所望される変化の粒度に見合う程度のプログラミングを引き起こす小さい電圧である。したがって、第1の時間ステップ2303はi=1で実行され、v1は、v0+vincrementである。次いで、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が測定される、検証動作が実行される(ステップ2304)。IcellがICT(第1のスレッショルド値)以下である場合、検索及び実行方法2300は完了し、精密プログラミング方法2206が開始し得る。IcellがICT以下でない場合、ステップ2303が繰り返され、iは増分される。
【0154】
したがって、粗プログラミング方法2205が終了し、精密プログラミング方法2206が開始する時点で、電圧viは、選択されたセルをプログラムするために使用される最後の電圧であり、選択されたセルは、粗標的電流値ICTに関連付けられた値を記憶する。精密プログラミング方法2206は、選択されたセルを、読み出し動作中に選択されたセルが所望の電流値ID(50pA以下などの許容可能な量の偏差を加減する)を引き込む点にプログラムし、この電流は、選択されたセルに記憶されることが意図される値に関連付けられている所望の電流値IDである。
【0155】
図24は、精密プログラム方法2206中に、選択されたメモリセルの制御ゲートに印加することができる異なる電圧進行の例を示す。
【0156】
第1の実施形態では、選択されたメモリセルを更にプログラムするために、増加する電圧が制御ゲートに漸次印加される。開始点はviであり、これは粗プログラミング方法2205中に印加された最後の電圧である。増分vp1がv1に加えられ、次いで、電圧v1+vp1が使用されて、選択されたセルをプログラムする(進行2401において左から第2のパルスによって示される)。vp1は、vincrement(粗プログラミング方法2205の間に使用される電圧増分)より小さい増分である。各プログラミング電圧が印加された後、IcellがIPT1(第1の精密標的電流値であり、ここでは第2のスレッショルド値である)以下であるかどうかの決定が行われる、検証ステップ(ステップ2304と同様)が実行され、IPT1=ID+IPT1OFFSETであり、IPT1OFFSETは、プログラムオーバーシュートを防止するために加算されるオフセット値である。IPT1以下でない場合、別の増分vp1が、前に印加されたプログラミング電圧に加えられ、プロセスが繰り返される。IcellがIPT1以下である時点で、プログラミングシーケンスのこの部分は停止する。任意選択的に、IPT1がIDに等しいか、又は十分な精度で(許容可能な偏差量を意味する)IDにほぼ等しい場合、選択されたメモリセルは正常にプログラムされている。
【0157】
I
PT1がI
Dに等しくないか、又は十分な精度でI
Dにほぼ等しくはない場合、より小さい粒度の更なるプログラミングが行われる。ここで、進行2402が使用される。進行2402の開始点は、進行2401下のプログラミングに使用された最後の電圧である。増分V
p2(v
p1より小さい)がそのプログラミング電圧に加えられ、組み合わされた電圧が印加されて、選択されたメモリセルをプログラムする。各プログラミング電圧が印加された後、I
cellがI
PT2(第2の精密標的電流値であり、ここでは第3のスレッショルド値である)以下であるかどうかの決定が行われる、検証ステップ(ステップ2304と同様)が実行され、ここで、I
PT2=ID+I
PT2OFFSETであり、ここで、I
PT2OFFSETは、プログラムオーバーシュートを防止するために加算されるオフセット値である。I
cellがI
PT2以下ではない場合、別の増分V
p2が、前に印加されたプログラミング電圧に加えられ、プロセスが繰り返される。I
cellがI
PT2以下である時点で、プログラミングシーケンスのこの部分は停止する。ここで、標的値が十分な精度で達成されているので、I
PT2はI
Dに等しいか、又はプログラミングが停止できるほどI
Dに十分に近接していると想定される。当業者であれば、I
PT2がI
Dに等しくないか、又はプログラミングを停止することができるほどI
Dに近くない場合、ますます小さいプログラミング増分を使用して追加の進行を適用することができることを理解することができる。例えば、
図25では、2つだけではなく、3つの進行(2501、2502、及び2503)が適用される。
【0158】
第2の実施形態が、進行2403に示される。ここで、選択されたメモリセルのプログラミング中に印加されるプログラミング電圧を増加させる代わりに、増加する期間の持続時間に対して同じプログラミング電圧が印加される。進行2401におけるvp1及び進行2403におけるvp2などの増分電圧を加算する代わりに、各印加パルスが、前に印加されたパルスよりtp1だけ長くなるように、追加の時間増分tp1がプログラミングパルスに加算される。図示の例では、第1のパルスは持続時間tp0を有し、第2のパルスは持続時間tp0+tp1を有する。各プログラミングパルスが印加された後、進行2401について前述したのと同じ検証ステップが実行される。任意選択的に、プログラミングパルスに加えられる追加の時間増分が前の使用された進行より短い持続時間である、追加の進行を、印加することができる。1つの時間的な進行のみが示されているが、当業者は、任意の数の異なる時間的進行が印加され得ることを理解するであろう。
【0159】
ここで、粗プログラミング方法2205の2つの更なる実施形態について、更なる詳細が提供される。
【0160】
図26Aは、適応較正方法2600である、(
図22A及び
図22Bに示される)粗プログラミング方法2205の第2の実施形態を示す。方法が開始する(ステップ2601)。選択されたセルは、デフォルトの出発プログラミング電圧値v
0でプログラムされる(ステップ2602)。検索及び実行方法2300とは異なり、ここで、プログラミング電圧値v
0は、ルックアップテーブルから、又は関数から得られず、代わりに比較的小さい初期値である。セルの制御ゲート電圧(Vcg)は、第1の電流値IR1(例えば、100na)及び第2の電流値IR2(例えば、10na)で測定され、傾斜は、それらの測定値に基づいて決定され(例えば、360mV/電流のデケイド)、記憶される(ステップ2603)。
【0161】
新しいプログラミング電圧viが決定される。このステップが最初に実行されるとき、i=1であり、v1は、以下のようなサブスレッショルド式を使用して、記憶された傾斜値並びに粗標的電流値ICTなどの電流標的値及びオフセット値に基づいて決定される。
vi=vi-1+vincrement、
vincrementは、log[Ids/wa*Io]に対するVcgの傾斜に比例し
Vcg=n*Vt*log[Ids/wa*Io]
ここで、Vcgは制御ゲート電圧であり、waはメモリセルのwであり、Idsは電流標的プラスオフセット値である。
【0162】
記憶された傾斜値が比較的急勾配である場合、比較的小さい電流オフセット値を使用することができる。記憶された傾斜値が比較的平坦である場合、比較的高い電流オフセット値を使用することができる。したがって、傾斜情報を決定することは、問題の特定のセルにカスタマイズされている電流オフセット値が選択されることを可能にする。これは、最終的に、プログラミングプロセスをより短くする。このステップが繰り返されると、iはインクリメントされ、vi=vi-1+vincrementである。次いで、セルは、viを使用してプログラムされる。vincrementは、vincrement対粗標的電流値ICTなどの電流標的値の値を記憶するルックアップテーブルから決定することができる。
【0163】
次に、検証動作が行われ、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が粗標的電流値ICTと比較される(ステップ2605)。Icellが粗標的電流値ICT以下であり、ICTがID+ICTOFFSETに設定され、ICTOFFSETは、プログラムオーバーシュートを防止するために追加されるオフセット値である場合、適応較正方法2600は完了し、精密プログラミング方法2206が開始され得る。IcellがICT以下でない場合、ステップ2604~2605が繰り返され、iは増分される。
【0164】
図26Bは、適応較正方法2650である、粗プログラミング方法2205の第2の実施形態を示す。方法が開始する(ステップ2651)。セルは、デフォルトの出発値v
0でプログラムされる(ステップ2652)。v
0は、シリコン特性評価から作成されるルックアップテーブルから得られ、テーブル値は、プログラムされた標的をオーバーシュートしないようにオフセット値I
CTOFFSETを更に提供する。
【0165】
ステップ2653では、次のプログラミング電圧を決定する際に使用されるI-V傾斜パラメータが作成される。第1の制御ゲート読み出し電圧VCGR1が選択されたセルに印加され、結果として生じるセル電流IR1が測定される。次いで、第2の制御ゲート読み出し電圧VCGR2が選択されたセルに印加され、結果として生じるセル電流IR2が測定される。傾斜は、それらの測定値に基づいて決定され、例えば、サブスレッショルド領域(サブスレッショルドで動作するセル)における次の等式に従って記憶される:
傾斜=(VCGR1-VCGR2)/(LOG(IR1)-LOG(IR2))
(ステップ2653)。VCGR1及びVCGR2の値の例は、それぞれ1.5V及び1.3Vである。
【0166】
傾斜値を決定することは、選択されたセルの各々にカスタマイズされているvincrement値が選択されることを可能にする。これは、プログラミングプロセスをより短くする。
【0167】
ステップ2654が実行されると、iが増分され、新しいプログラミング電圧viは、記憶された傾斜値並びに粗標的電流値ICT及びオフセット値に基づき、次のような等式を使用して決定される。
vi=vi-1+vincrement、
式中、vincrement=アルファ*傾斜*(LOG(IR1)-LOG(ICT))であり、
式中、アルファは、オーバーシュートを防止するためには、1(プログラミングオフセット値)未満の所定の定数、例えば0.9である。
【0168】
次いで、セルは、プログラミング電圧viを使用してプログラムされる(ステップ2655)。ここでは、viは、使用されるプログラミングスキームに応じて、選択されたセルのソース線端子、制御ゲート端子、又は消去ゲート端子に印加され得る。
【0169】
次に、検証動作が行われ、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が粗標的電流値ICTと比較される(ステップ2656)。Icellが粗標的電流値ICT以下であり、粗標的スレッショルドICTがID+ICTOFFSETに設定され、ICTOFFSETは、プログラムオーバーシュートを防止するために加えられるオフセット値である場合、プロセスはステップ2657に進む。そうでない場合、プロセスはステップ2654に戻り、iは増分される。
【0170】
ステップ2657において、Icellは、オーバーシュートが発生したかを決定するために、粗標的電流値ICTより小さいスレッショルド値、ICT2と比較される。すなわち、ステップ2654~2656は、Icellが粗標的電流値ICTを下回ることを確実にするが、Icellが粗標的電流値ICTをはるかに下回る可能性があり、すなわち、オーバーシュートが発生し、Icellが誤った値に対応する記憶された値を表す可能性がある。IcellがICT2以下でない場合、オーバーシュートは発生しておらず、適応較正方法2650は完了しており、その時点で、プロセスは、開始値vi及びセルが粗標的スレッショルド値ICTに、又はその近くにプログラムされた状態で、精密プログラミング方法2206に進行する。IcellがICT2以下である場合、オーバーシュートが発生しており、選択されたセルが消去され(ステップ2658)、プログラミングプロセスがステップ2652で再開され、今度は、オーバーシュートを再び回避するために、より小さいVincrementで再開される。任意選択的に、ステップ2658が所定の回数より多く実行される場合、選択されたセルは、使用されるべきではない不良セルと見なされ得る。
【0171】
精密プログラム方法2206は、複数の検証及びプログラムサイクルからなり、
図24~
図25に関連して上述されるように、プログラム電圧が固定パルス幅を有する一定の微細電圧によって増分されるか、又はプログラム電圧は固定され、プログラムパルス幅は次のパルスのために変化するか若しくは一定である。
【0172】
任意選択的に、読み出し動作又は検証動作中に選択された不揮発性メモリセルを通る電流が粗標的電流スレッショルド値ICT以下であるかどうかを決定するステップ(2656)は、不揮発性メモリセルの端子に固定バイアスを印加し、選択された不揮発性メモリセルによって引き込まれた電流を測定及びデジタル化してデジタル出力ビットを生成し、デジタル出力ビットを、第1のスレッショルド電流値ICTを表すデジタルビットと比較することによって実行され得る。
【0173】
任意選択的に、読み出し動作又は検証動作中に選択された不揮発性メモリセルを通る電流が粗標的電流値I
CT以下であるかどうかを決定するステップは、不揮発性メモリセルの端子に入力を印加し、不揮発性メモリセルによって引き込まれた電流を入力パルスで変調して変調出力を生成し、変調出力をデジタル化してデジタル出力ビットを生成し、デジタル出力ビットを、第1のスレッショルド電流I
CTを表すデジタルビットと比較することによって実行され得る。
図27は、適応較正方法2600の一部を実行するための例示的な回路実装を示す。ステップ2603中、例示的な電流値IR1及びIR2を選択されたセル(ここではメモリセル2702)に印加するために電流源2701が使用され、次いで、メモリセル2702の制御ゲートにおける電圧(IR1に対するCGR1及びIR2に対するCGR2)が測定される。上記に示すように、傾斜値は、(V
CGR1-V
CGR2)/(LOG(IR
1)-LOG(IR
2))である。
【0174】
図28は、絶対較正方法2800である、粗プログラミング方法2205の別の実施形態を示す。方法が開始する(ステップ2801)。セルは、デフォルトの出発値v
0でプログラムされる(ステップ2802)。セルの制御ゲート電圧V
CGRxは、電流値Itarget(すなわち、セル電流の最終的な所望の値)で測定され、記憶される(ステップ2803)。プログラミング電圧v
1は、記憶された制御ゲート電圧並びに電流値Itargetプラスオフセット値、Ioffset+Itargetに基づいて決定される(ステップ2804)。例えば、新しいプログラミング電圧v
1は、以下のように計算することができる:v
1=v
0+(V
CGBIAS-記憶されたV
CGR)、式中、V
CGBIASは、最大標的電流でのデフォルトの読み出し制御ゲート電圧であり(これは、一実施形態では、約1.5Vであり)、記憶されたV
CGRは、ステップ2803の測定された読み出し制御ゲート電圧である。
【0175】
次いで、セルは、プログラミング電圧viを使用してプログラムされる。i=1のとき、ステップ2804からの電圧v1が使用される。i≧2のとき、電圧vi=vi-1+Vincrementが使用される。vincrementは、電流値Itargetと対応させてvincrementの値を記憶するルックアップテーブルから決定することができる。次に、検証動作が行われ、選択されたセルで読み出し動作が実行され、選択されたセルを通って引き込まれる電流(Icell)が粗標的電流値ICTと比較される(ステップ2806)。Icellが粗標的電流値ICT以下である場合、絶対較正方法2800は完了し、精密プログラミング方法2206が開始され得る。Icellが粗標的電流値ICT以下でない場合、ステップ2805~2806が繰り返され、iは増分される。
【0176】
図29は、絶対較正方法2800のステップ2803を実装するための回路2900を示す。電圧源(図示せず)はV
CGRを生成し、これは、初期電圧で開始し、上昇する。ここで、n+1個の異なる電流源2901(2901-0、2901-1、2901-2、...、2901-n)は、大きさが増加していく異なる電流IO0、IO1、IO2、...IOnを生成する。各電流源2901は、それぞれのインバータ2902(2902-0、2902-1、2902-2、...、2902-n)及びメモリセル2903(2903-0、2903-1、2903-2、...2903-n)に接続されている。V
CGRが上昇するにつれて、各メモリセル2903は、増加する量の電流を引き込み、各インバータ2902への入力電圧は減少する。IO0<IO1<IO2<...<IOnであるため、V
CGRが増加するにつれて、最初にインバータ2902-0の出力が低から高に切り替わる。次にインバータ2902-1の出力が低から高に切り替わり、次いでインバータ2902-2の出力が同様に切り替わり、以下インバータ2902-nの出力が低から高に切り替わるまで同様である。各インバータ2902は、それぞれのスイッチ2904(2904-0、2904-1、2904-2、..、2904-n)を制御し、インバータ2902の出力が低であるとき、スイッチ2904が閉じられ、インバータ2902の出力が高であるとき、スイッチ2904が開かれるようにする。インバータ2902が低から高に切り替わるとき、スイッチ2904が低であるときにサンプリングされたV
CGRは、それぞれのコンデンサ2905(2905-0、2905-1、2905-2、...、2905-n)によって保持される。したがって、スイッチ2904及びコンデンサ2905の各々は、サンプルアンドホールド回路を形成する。IO0、IO1、IO2、...、IOnの値は、Itargetの可能な値として使用され、それぞれのサンプリングされた電圧は、
図28の絶対較正方法2800において関連する値V
CGRxとして使用される。グラフ2906は、経時的に上昇するVCGR、並びに様々な時間において低から高に切り替わるインバータ2902-0、2902-1、及び2902-nの出力を示す。
【0177】
図30は、適応較正方法2600又は絶対較正方法2800中に、選択されたセルをプログラミングするための例示的な進行3000を示す。一実施形態では、電圧v
cgpは、選択された行のメモリセルの制御ゲートに印加される。選択された行内の選択されたメモリセルの数は、例えば、32個のセルである。したがって、選択された行内の最大32個のメモリセルが、並行してプログラムされ得る。各メモリセルは、ビット線イネーブル信号によって、プログラミング電流Iprogに結合することが可能になる。ビット線イネーブル信号が非アクティブである場合(選択されたビット線に正電圧が印加されていることを意味する)、メモリセルはインヒビット状態である(プログラムされない)。
図30に示されるように、ビット線有効化信号En_blx(xは1~nで変化し、nはビット線の数である)は、異なる時間に、そのビット線に所望されるv
cgp電圧レベルで(したがって、上記ビット線の選択されたメモリに対して)有効化される。別の実施形態では、選択されたセルの制御ゲートに印加される電圧は、ビット線でのイネーブル信号を使用して制御することができる。各ビット線イネーブル信号により、そのビット線に対応する所望の電圧(
図28に記載のv
iなど)がv
cgpとして印加される。ビット線イネーブル信号はまた、ビット線に流れ込むプログラミング電流を制御することもできる。この例では、後続の制御ゲート電圧v
cgpはそれぞれ、その前の電圧より高い。代替的に、後続の制御ゲート電圧はそれぞれ、その前の電圧より低くても、高くてもよい。v
cgpの後続の増分はそれぞれ、その前の増分と等しいか又は等しくないかのいずれでもよい。
【0178】
図31は、適応較正方法2600又は絶対較正方法2800中に、選択されたセルをプログラミングするための例示的な進行3100を示す。一実施形態では、ビット線イネーブル信号(例えば、EN_bln、EN_bl1、EN_bl5)は、選択されたビット線(すなわち、選択されたメモリセルに結合されたビット線)が対応するV
cgp電圧レベルでプログラムされることを可能にする。別の実施形態では、選択されたセルの増分上昇を行う制御ゲートに印加される電圧は、ビット線イネーブル信号を使用して制御することができる。各ビット線イネーブル信号により、そのビット線に対応する所望の電圧(
図28に記載のv
iなど)が制御ゲート電圧に印加される。この例では、後続の増分はそれぞれ、その前の増分と等しい。
【0179】
図32は、VMMアレイで読み出す又は検証するための入力及び出力方法を実装するためのシステムを示す。入力関数回路3201は、デジタルビット値を受け取り、それらのデジタル値をアナログ信号に変換し、次いで、アナログ信号は、制御ゲートデコーダ3202、ワード線デコーダ3203、及びビット線(図示せず)によって選択されるアレイ3204内の選択されたセルの制御ゲートに電圧を印加するために使用される。以下に説明する実施形態では、選択されたメモリセルに入力が印加され、選択されたメモリセルは、受け取った入力と選択されたセル内に記憶された重みWとの乗算演算を表す出力電流を生成する。出力ニューロン回路ブロック3205は、VMMアレイ3204内のセルの各列(ニューロン)の出力作用を実行する。出力回路ブロック3205は、積分型アナログ-デジタル変換器(analog-to-digital converter、ADC)、逐次比較型(successive approximation、SAR)ADC、又はシグマデルタ型ADCを使用して実装することができる。
【0180】
一実施形態において、入力関数回路3201に提供されるデジタル値は、4ビット(DIN3、DIN2、DIN1、及びDIN0)を含み、これは、入力が16個の異なる値のうちの1つであり得ることを意味する。ビット値の16個の異なる組み合わせのそれぞれは、選択されたセルの制御ゲートに印加される異なる数の入力パルスに対応し、そのセルは、入力値とそのセル内に記憶された重みWとの乗算を表す出力電流を生成する。パルスの数が大きいほど、セルの出力値(電流)は大きくなる。入力ビット値DIN[3:0]及び制御ゲートに印加される対応するパルス数の例を表11に示す。
表11:デジタルビット入力と生成パルス数
【表11】
【0181】
上記の例では、セル値を読み出すための4ビットのデジタル値に対して最大16個のパルスが存在する。各パルスは、1単位のセル値(電流)に等しい。例えば、Icell単位=1nAの場合、DIN[3~0]=0001では、Icell=1*1nA=1nAであり、DIN[3~0]=1111では、Icell=15*1nA=15nAである。
【0182】
別の実施形態では、デジタルビット入力は、表12に示すように、セル値を読み出すためにデジタルビット位置合計を使用する。ここで、4ビットのデジタル値を評価するのに、4つのパルスのみが必要である。例えば、第1のパルスはDIN0を評価するために使用され、第2のパルスはDIN1を評価するために使用され、第3のパルスはDIN2を評価するために使用され、第4のパルスはDIN3を評価するために使用される。その後、4つのパルスからの結果は、ビット位置に応じて合計される。実現されるデジタルビット合計式は、以下のものである:出力=2^0*DIN0+2^1*DIN1+2^2*DIN2+2^3*DIN3)*Icell単位。
【0183】
例えば、Icell単位=1nAの場合、DIN[3~0]=0001では、Icell合計=0+0+0+1
*1nA=1nAであり、DIN[3~0]=1111では、Icell合計=8
*1nA+4
*1nA+2
*1nA+1
*1nA=15nAである。
表12:デジタルビット入力合計
【表12】
【0184】
図33は、検証又は読み出し動作中にVMMの出力を合計して、出力を表す単一のアナログ値を得るために使用できる電荷合計器3300の例を示しており、この単一のアナログ値は、任意選択的にデジタルビット値に変換することができる。電荷合計器3300は、電流源3301と、スイッチ3302及びサンプルアンドホールド(sample-and-hold、S/H)コンデンサ3303を含むサンプルアンドホールド回路のアレイと、を含む。4ビットのデジタル値の例で示されるように、4つの評価パルスからの値を保持するための4つのS/H回路が存在し、これらの値はプロセスの終了時に合計される。S/Hコンデンサ3303は、そのS/Hコンデンサの2^n
*DINnビット位置に関連付けられる比率で選択され、例えば、C_DIN3=x8 Cu DIN3(ここで、Cuは単位コンデンサである)、ビットDIN2に対してC_DIN2=x4 Cu、ビットDIN1に対してC_DIN1=x2 Cu、ビットDIN9に対してDIN0=x1 Cuである。電流源3301もまた、それに応じて比率が乗じられる。
【0185】
図34は、検証又は読み出し動作中にVMMの出力を合計するために使用できる電流合計器3400を示す。電流合計器3400は、電流源3401(これは、VMMアレイの出力、Icellである)、トランジスタ3402、スイッチ3403、ノード3404、及びトランジスタ3405を含む。この例では、電流合計器3400は、ノード3404に4つのデジタル値DIN0、DIN1、DIN2、及びDIN3をシリアルに出力する。4つの評価パルスが順番にVMMアレイに入力される。第1のパルスの間、期間t_DIN0の間、DIN0に対応するスイッチ3403は閉じられ、他のスイッチ3403は開かれる。第2のパルスの間、期間t_DIN1の間に、DIN1に対応するスイッチ3404は閉じられ、他のスイッチは開かれる。第3のパルスの間、DIN2に対応するスイッチ3404は、期間t_DIN2の間に閉じられ、他のスイッチは開かれる。第4のパルスの間、DIN3に対応するスイッチ3404は、期間t_DIN3の間に閉じられ、他のスイッチは開かれる。プロセスの終わりに、値が合計されてデジタル出力が生成され、DINの相対ビット位置に基づいてDIN値に重み付けプロセスが適用される。例えば、DOUTは、8
*I_DIN3+4
*I_DIN2、+2
*I_DIN1+1
*I_DIN0に等しくすることができる。
【0186】
図39は、出力ブロック3900(
図32の出力ブロック3205の実施形態である)を示す。出力ブロック3900は、ここではICELL3901として示されるVMMアレイ(
図32のアレイ3204など)から出力電流を受け取る。出力ブロック3900は、D/A変換器3902、シフタ3903、アダー3904、及び出力レジスタ3905を備える。
【0187】
ここで、VMMの入力ブロック(
図32の入力ブロック3201など)への入力はDIN[n:0]であると仮定され、nは入力ビットバイナリインデックス数であり、iは1からn+1までの範囲とすることができる合計iビットが存在する。例えば、i=4の場合、入力は、DIN3、DIN2、DIN1、及びDIN0の4つの入力ビットとなる。各入力ビットDINxは、一度にVMM3204の入力ブロック3201に適用される。
【0188】
入力ブロック3201は、DINxを、アレイ3204内の選択されたセルの端子に印加される入力信号に(本明細書に記載の実施形態又は他の既知の技術のうちの1つを使用して)変換する(ここで、選択されたセルは、ワード線デコーダ3203及び選択されたビット線(図示せず)によって選択される)。一実施形態では、入力信号は、表13に示すように例示的な4ビット入力に対する、可変持続時間の単一パルスである。パルスTPULSEの入力信号(VMMアレイへの行入力)は、datain DIN[3:0]の10進数値(0~15)に比例する幅を有する。
表13.4ビット入力とパルスの例示的な表
【表13】
【0189】
別の実施形態では、入力信号は、表14Aに示すように例示的な4ビット入力に対するアナログバイアス電圧である。入力信号は、例えば、線形領域で動作するセルに対して線形に離間された16個の電圧レベルを有し得る。代替的に、入力信号は、サブスレッショルド領域で動作するセルに対して対数的に離間されてもよく(電圧値がセル電流の対数に比例することを意味する)、例えば、バイナリ電流値に対してVCGINk=VCGIN(k-1)-(1/n
*Vt)
*LN 2であり、VCGINは、対応するCG端子の電圧である。
表14A:4ビット入力とアナログバイアスレベルの例示的な表
【表14A】
【0190】
特定の行に対する4ビット入力DIN[3:0]は、16個のレベル(例えば、VCGIN0、...、又はVCGIN15)のうちの1つのアナログレベルを選択させ、VMMアレイの行に適用させる。一実施形態では、この動作は、4つの入力データビット全てに対して同時に動作し、これは、4つの入力データビットが16個の可能な電圧レベルのうちの1つに変換され、行に印加されることを意味する。代替的な実施形態は、データ入力ビットは、一度に1つずつ順次適用すること(入力ビットごとの演算)であり、各データ入力に対する結果は、次いで、アナログ領域(
図33、
図34)又はデジタル領域(
図35、
図39)において一緒に加算(合計)される。任意選択的に、各データ入力ビットは、そのビット位置に基づいて重み付けされ得る。例えば、
図39の出力ブロック3900を使用することなどによって、最下位ビット位置における「1」は、電圧VCGIN1をVMMアレイの行への入力として印加させ、最上位ビット位置における「1」は、電圧VCGIN8をVMMアレイの行への入力として印加させ得る。
【0191】
別の実施形態では、アレイの入力ブロックへの入力信号は、線形又はサブスレッショルド又は任意の領域において動作するセルに対して一定のアナログバイアス電圧を伴う入力ビットごとの演算(例えば、演算は、DIN0、次いでDIN1、次いでDIN2、次いでDIN3入力に対して行われる)のための表14Bに示される例示的な4ビット入力である。
表14B:4ビット入力と入力ビットごとの演算を伴う単一アナログバイアスレベルの例示的な表
【表14B】
【0192】
入力ビットDINごとのバイナリ重み付け結果は、
図34に示されるものなどの電流合計器を使用することなどによって、アナログ領域において、又は
図35若しくは
図44の実施形態を使用することなどによって、デジタル領域において一緒に合計される。
図44は、特定の重みが入力ビットに応答して、生成された各出力ストリームに割り当てられていることを除いて、
図35のデジタル合計器3500と同じデジタル合計器4400を示す。
【0193】
別の実施形態では、アレイの入力ブロックへの入力信号は、4つのアナログバイアスレベルの例を伴う入力マルチビットごとの演算(例えば、DIN3及びDIN2を合わせて、並びにDIN1及びDIN0を合わせて)のための表14Cに示されるような例示的な4ビット入力である。一実施形態では、4つのアナログレベルが、線形領域、例えば、0V、0.25V、0.5V、1.0Vで動作するセルに対して線形に離間され、出力セル電流に対する線形等スケーリングを確実にする。別の実施形態では、レベルは、出力されるセル電流の線形スケーリングを確実にするために、サブスレッショルドで動作するセルについて対数間隔であり、これは、例えば、電圧値がサブスレッショルド領域で動作するセルについて電流の対数に比例することを意味し、例えば、バイナリ電流値についてVCGINk=VCGIN(k-1)-(1/n
*Vt)
*LN2である。
表14C:4ビット入力と入力マルチビットごとの演算を伴うアナログバイアスレベルの例示的な表
【表14C】
【0194】
マルチビットごとのバイナリ加重結果DIN[1:0]及びDIN[3:2]は、アナログ領域(
図34の電流合計器のような)又はデジタル領域(
図35、
図39)において合計される。
【0195】
別の実施形態では、入力信号は、アナログバイアス供給及びパルスを伴う例示的な4ビット入力に対して表15に示されるような、パルス成分(アナログバイアス供給変調パルス)が加えられたアナログバイアス電圧成分を含むハイブリッド信号である。パルスは、長さ(TPULSE)によって、又は所定の期間内のパルスの数(PULSES)によって変調され得る。
表15:4ビット入力とアナログバイアスレベル及びパルスのハイブリッド入力のための例示的な表
【表15】
上記の表において、「4.5X」の値は、1Xパルスの幅の4.5倍に等しい幅を有するパルス、又は4つの1Xパルスに1Xパルスの半分の幅を有するパルスを加えたものを意味する。
【0196】
入力データは、複数の入力データインセットに分割され、各データインセットは、特定の電圧バイアスレベルに割り当てられる。例えば、8ビット入力DIN[7:0]の場合、第1の行電源VCGIN1は、セットDIN[3:0]内の入力ビットに適用され、VCGIN1とは異なる第2の行電源VCGIN2は、セットDIN[7:4]内の入力ビットに適用される。2つのバイナリ入力セット分割のこの例示的な実施形態において、(第2のデータインセットDIN[7:4]のための)アナログバイアス電源VCGIN2は、(第1のデータインセットDIN[3:0]のための)アナログバイアス電源VCGIN1によって生成されるセル電流の2倍であるセル電流を生成する。例えば、VCGIN2/VCGIN1の比率は、線形領域で動作するセルについては2倍であり得る。各データインセットに対して異なるVCGIN電圧が印加されるので、データインセットDIN[7:4]のメンバとデータインセットDIN[3:0]のメンバとに対して、同じ周期を有する同じ数のパルスを印加することができ、これは、VCGINの差が2つのメンバを区別するからである。
【0197】
この実施形態の変形形態では、各入力データインセットに対して2つの分割を使用することができ、各分割は異なるアナログバイアス電圧に対応し、これは、4つの異なる電圧VCGIN1、VCGIN2、VCGIN3、及びVCGIN4が使用されることを意味する。これは、必要とされるパルスの数/期間を更に低減することができる。すなわち、4つの異なるデータイン値は、VCGINの差が4つの異なる値を区別するので、同じ数/期間のパルスを使用することができる。
【0198】
再び
図39を参照すると、出力ブロック3900は、入力DINxに応答してVMMから出力電流ICELLを受け取る。D/A変換器3902は、ICELLを、DINnに応答して、生成された出力のデジタル値を表すデジタル形式DOUT[m:0]に変換し、各DOUT_nは1つ以上の出力ビットのセットである。
【0199】
シフタ3903、アダー3904、及びレジスタ3905は、各入力ビットDINnに応答して、生成された各出力DOUT[m:0]_nに異なる重みを適用するように動作する。n=4である単純な例では、シフタ3902、アダー3904、及びレジスタ3905は以下の作用を実行する。
(1)DIN0に応答して、シフタ3903はDOUT_0[m:0]0を受け取り、それをシフトせず、(1)の結果を生成する。
(2)DIN1に応答して、シフタ3903はDOUT_1[m:0]を受け取り、それを左に1ビットシフトし、アダー3904はシフトした結果を(1)の結果に加算して(2)の結果を生成する。
(3)DIN2に応答して、シフタ3903はDOUT_2[m:0]を受け取り、それを左に2ビットシフトし、アダー3904はシフトした結果を(2)の結果に加算して(3)の結果を生成する。
(4)DIN3に応答して、シフタ3903はDOUT_3[m:0]を受け取り、それを左に3ビットシフトし、アダー3904は、シフトした結果を(3)の結果に加算して(4)の結果、すなわち最終結果DOUT[m:0]を生成する。
【0200】
DIN[n:0]入力が、各データ入力のバイナリ重みを表すアナログ電圧レベルと組み合わされる場合、加算のみが必要とされ、このようなハイブリッド入力ビットごとの演算のためにシフトすることはない。出力レジスタ3905は、(4)の結果をDOUTとして記憶し、出力する。
追加の入力回路及び出力回路
【0201】
図35は、複数のデジタル値を受け取り、それらを一緒に合計し、入力の和を表す出力DOUTを生成する、デジタル合計器3500を示す。デジタル合計器3500は、検証又は読み出し動作中に使用することができる。
図35は、ビットDOUT0、DOUT1、DOUT2、及びDOUT3を含む4ビットデジタル値の例を示す。各ビットは評価入力パルスから生成される。各ビットは、そのビット位置に基づいて重み付けされることができ、2^nの重みt_DINnがビットDINnに適用される。例えば、DOUT3に2^3(=8)を乗算し、DOUT2に2^2(=4)を乗算し、DOUT1に2^1(=2)を乗算し、DOUT0に2^0(=1)を乗算することができる。
【0202】
図36Aは、アレイセル電流をデジタル出力ビットDOUTxに変換するために出力ニューロンに適用される二重傾斜積分型ADC3600を示す。積分オペアンプ3601及び積分コンデンサ3602からなる積分器は、基準電流IREFに対してセル電流ICELLを積分する。
図36Bに示されるように、固定時間t1の間(積分時間)、セル電流は上へと積分され(VOUTが上昇する)、次いで、基準電流が、時間t2にわたって下へと積分される(VOUTが降下する、非積分時間)ように印加される。電流Icellは、=t2/t1
*IREFである。例えば、t1に対して、10ビットのデジタルビット解像度では、1024サイクルが使用され、t2に対するサイクル数は、Icell値に応じて0~1024サイクルに変化する。信号ECによってイネーブルされるデジタルカウンタ3630は、t2期間中にデジタル出力ビットDOUTxを生成するために使用される。
【0203】
図36Cは、アレイセル電流をデジタル出力ビットに変換するために出力ニューロンに適用される単一傾斜積分型ADC3660を示す。積分オペアンプ3661、積分コンデンサ3662、スイッチS3、及び比較器3664からなる積分器は、アレイセル電流ICELL3666を積分し、出力信号ECを生成する。
【0204】
図36Dに示されるように、グラフ3670は、時間t1の間、セル電流ICELL1が上へと積分され(VOUTがVREF2に達するまで上昇し、これは
図36CのECの値の変化に対応する)、時間t2の間、別のセル電流ICELL2が上へと積分されることを示す。セル電流ICELL=Cint
*VREF2/tであり、ここで、tは、ECが値を変える前に経過する時間である。信号ECによってイネーブルされるパルスカウンタ3668は、積分時間tの間のパルス数をカウントするために使用され、パルス数は、デジタル出力値DOUTxを表す。
【0205】
示される例では、t1のデジタル出力は、t1のカウントがt2のカウントより小さくなるので、t2のデジタル出力より小さくなり、これはまた、期間t1中のセル電流ICELL1が期間t2中のセル電流ICELL2より大きかったことを意味する。.初期較正は、積分コンデンサ3662値を基準電流Iref及び固定時間Trefで較正するために行われ、Cint=Tref*Iref/VREF2である。
【0206】
図36Eは、ICELL3684、比較器3681、スイッチS1、スイッチS2、スイッチS3、コンデンサ3682、及び基準電流源3683を備える二重傾斜積分型ADC3680を示す。二重傾斜積分型ADC3680は、出力ニューロン電流(ICELL3684)を受け取り、出力ECを生成する。二重傾斜積分型ADC3680は、積分オペアンプを利用しない。セル電流又は基準電流は、コンデンサ3682で直接積分される。信号ECによってイネーブルされるパルスカウンタ3687は、積分時間中にパルスをカウントするために使用され、積分時間は、ECが値を変えるときに終了する。パルスカウンタの出力は、ICELLを表すデジタル出力DOUTxである。電流ICELLは、=t2/t1
*IREFである。
【0207】
図36Fは、ICELL3694、比較器3691、スイッチS2、スイッチS3、及びコンデンサ3692を備える単一傾斜積分型ADC3690を示す。単一傾斜積分型ADC3690は、出力ニューロン電流(ICELL3694)を受け取り、出力ECを生成する。単一傾斜積分型ADC3690は、積分オペアンプを利用しない。セル電流は、コンデンサ3692で直接積分される。信号ECによってイネーブルされるパルスカウンタ3697は、積分時間中にデジタル出力パルスをカウントするために使用され、積分時間は、ECが値を変えるときに終了する。パルスカウンタの出力は、ICELLを表すデジタル出力DOUTxである。セル電流ICELL=Cint
*VREF2/tである。
【0208】
図37Aは、セル(アレイ)電流をデジタル出力ビットに変換するために出力ニューロンに適用されるSAR(逐次比較レジスタ)ADC3700を示す。セル電流は、抵抗器を通って降下させて、VCELLに変換することができる。代替的に、セル電流は、S/Hコンデンサをチャージアップして、VCELLに変換することができる。MSBビット(最上位ビット)から始まるビットを計算するために、二分探索が使用される。SAR3701からのデジタルビットに基づいて、適切なアナログ基準電圧を比較器3703に設定するために、DAC3702が使用される。比較器3703の出力は、次のアナログレベルを選択するために、SAR3701にフィードバックされる。
図37Bに示されるように、4ビットのデジタル出力ビットの例では、4つの評価期間が存在し、アナログレベルを中間に設定することによってDOUT3を評価するための第1のパルス、次いで、アナログレベルを上半分の中間又は下半分の中間に設定することによってDOUT2を評価するための第2のパルスなどがある。DOUT3及びDOUT4も同様に範囲を半分に分割する。別の実施形態は、ニューロン電流をデジタル出力ビットに変換するためにSAR CDAC(電荷再分配CDAC)を使用することができる。
【0209】
図38は、セル電流をデジタル出力ビットに変換するために出力ニューロンに適用されるシグマデルタ型ADC3800を示す。オペアンプ3801及びコンデンサ3805からなる積分器は、選択されたセル電流からの電流と、1ビット電流DAC3804からもたらされる基準電流との総和を積分する。比較器3802は、基準電圧に対して積分出力電圧を比較する。クロックドDFF3803は、比較器3802の出力に応じてデジタル出力ストリームを提供する。デジタル出力ストリームは、典型的には、デジタル出力ビットに出力される前にデジタルフィルタに進む。
【0210】
図45は、出力ブロック4500を示す。出力ブロック4500は、電流-電圧変換器4501及びアナログ-デジタル変換器4502を備える。出力ブロック4500は、ここではIneuとして示されるVMMアレイからの出力電流を受け取り、ここで、出力電流は、実行されている読み出し又は検証動作のためのVMMアレイからの出力値を表す。電流-電圧変換器4501は、電圧VOUTがVMMからの出力電流Ineuを表すように、出力電流Ineuを、ここではVOUTとして示される電圧信号に変換する。A/D変換器4502は、電圧VOUTをデジタル形式に変換し、ここではDOUTとして示されるデジタル出力を出力する。
【0211】
出力ブロック4500の一実装では、電流-電圧変換器4501は、一連の入力に応答して、アレイ内の1つ以上の選択された不揮発性メモリセルから一連の電流を受け取り、一連の電流を一連の電圧に変換する。次に、A/D変換器は、電流-電圧変換器4501から受け取った一連の電圧を複数の出力ビットに変換し、複数の出力ビットは、一連の電圧の加重和に基づいて生成される。
【0212】
図46は、
図45の電流-電圧変換器4501の一実施形態である無損失(I
*Rmux降下がない)電流-電圧変換器4600を示す。電流-電圧変換器4600は、演算増幅器4601、抵抗器4602、4603、4604、及び4605、並びにスイッチ4606、4607、4608、4609、4610、4611、4612、及び4613を備える。無損失可変抵抗器ユニットは、抵抗器及び2つのスイッチ(mux)、例えば、抵抗器4602並びにスイッチ4610及び4606からなり、1つのスイッチは、電流を運び(スイッチ4610)、1つのスイッチは、電流を運ばず(スイッチ4606)、出力は、電流を運ばないスイッチから取られる。
【0213】
電流-電圧変換器4600は、電流Ineuを受け取り、電圧VOUTを出力する。特に、VOUTは、出力電圧VOUTにおける多重化(スイッチのI*R降下)に起因する電圧降下を被ることなく測定することができ、これは、出力電圧がフィードバックループ又は電流ループの外側でサンプリングされることを意味する。例えば、スイッチ4613及び4609が閉じられ(オン)、他のスイッチが開かれる(オフ)とき、VOUTは、VREF+(R4602+R4603+R4604+R4605)*(Ineu)に等しい。別の例として、スイッチ4610及び4606が閉じられ(オン)、他のスイッチが開かれている(オフ)とき、VOUTはVREF+(R4602*Ineu)である。電流Ineuが電圧VOUTに変換された後、電圧VOUTは、全てのスイッチを開くことによってサンプリング及び保持され得る。この場合、電圧VOUTは基準レベルVREFを基準とする。
【0214】
図47は、
図45の電流-電圧変換器4501の一実施形態である電流-電圧変換器4700を示す。電流-電圧変換器4700は、比較器4701、スイッチ4702、4705、4706、及び4707、S/H(サンプルアンドホールド)コンデンサ4703、並びに可変抵抗器4704を備える。電流-電圧変換器4700は、電流Ineuを受け取り、S/H電圧VOUTを出力する。無損失可変抵抗器4704は、
図46の抵抗器4650と同様である。電流から電圧への変換の間、電流Ineuは、出力電圧=R4704
*Ineuを生成するために抵抗器4704を通って流れ、S1(4702)、S2(4705)及びS3(4707)は閉じられ(オン)、S4(4706)は開かれ(オフ)、S3は電流を運ばないので、出力VOUTは=R4704
*Ineuである。保持期間中、S4は閉じられ(オン)、S1、S2及びS3は開かれ(オフ)、VOUTはコンデンサ4703に保持される。特に、VOUTは、電流を運ぶスイッチの外部で測定される(イネーブルされる)ので、VOUTは、電圧降下を受けることなく測定され得る。
【0215】
図48は、
図45の電流-電圧変換器4501の一実施形態である電流-電圧変換器4800を示す。電流-電圧変換器4800は、演算増幅器4801、スイッチ4802及び4805、S/Hコンデンサ4803、並びに可変抵抗器4804を備える。電流-電圧変換器4800は、電流Ineuを受け取り、電圧VOUTを出力する。注目すべきことに、VOUTは、電流を運ぶスイッチ(mux)の外側でVOUTが測定される(イネーブルにされる)ことによる電圧降下なしに測定され得る。電流-電圧変換の間、電流Ineuは、出力電圧=R4804
*Ineuを生成するために抵抗器4804を通って流れ、S1(4802)及びS2(4805)は閉じられ(オン)、S2が電流を運ばないので、出力VOUTは、=R4804
*Ineuである。保持期間中、S1及びS2は開かれており(オフ)、VOUTはコンデンサ4803に保持される。この場合、S/H電圧VOUTは接地レベルを基準とする。
【0216】
代替的に、電流-電圧変換器4700及び4800は、可変抵抗器4704又は4804を含まず、その場合、Ineuは、所定の調整可能なタイミングパルス値によって制御される可変信号パルス有効化スイッチ4702又は4802によってS/Hコンデンサ4703又は4803を充電し、ここで、タイミングパルス値は、Ineu動的電流範囲に基づいて選択される。この場合、S/Hコンデンサは、調整可能なキャパシタンス値を有する可変コンデンサであり得る。
【0217】
図49Aは、
図45の電流-電圧変換器4501の一実施形態である電流-電圧変換器4900を示す。電流-電圧変換器4900は、スイッチ4901及び4902、可変抵抗器4903、並びにコンデンサ4904を備える。電流-電圧変換器4800は、電流Ineuを受け取り、電圧VOUTを出力する。電流-電圧変換の間、電流Ineuは、出力電圧=R4804
*Ineuを生成するために可変抵抗器4903を通って流れ、S1(4901)は閉じられ(オン)、出力VOUT=R4903
*Ineuである。保持期間の間、S1は開かれ(オフ)、VOUTはコンデンサ4904に保持され、可変抵抗器4903の内側のスイッチ(mux)(例えば、
図49Bの可変抵抗器4950内のS1a/S2a/S3a/S4a)も開かれる(オフ)。注目すべきことに、VOUTは、電流を運ぶスイッチ(mux)の外側でVOUTが測定される(イネーブルにされる)ことに起因する電圧降下を被ることなく測定され得る。
【0218】
図49Bは、4903で使用されるような可変抵抗器4950を示す。可変抵抗器4950は、スイッチS1a、S2a、S3a、S4a、S1b、S2b、S3b、及びS4bを備える。
【0219】
図50は、
図45の電流-電圧変換器4501の一実施形態である電流-電圧変換器5000を示す。電流-電圧変換器5000は、演算増幅器(op amp)5001、レベルシフタ5002(トランジスタ5004のゲート=トランジスタ5004のドレイン-Voffset)、NMOSトランジスタ5003、PMOSトランジスタ5004及び5005、スイッチ5006及び5007、可変抵抗器5008(
図49Bに関連して上述したように実装することができる)、コンデンサ5009、並びに電圧源VHを備える。電流-電圧変換器5000は、電流Ineuを受け取り、電圧VOUTを出力する。特に、VOUTは、電圧降下を被ることなく、同様に(
図49におけるように)測定されることができる。この場合のS/H電圧VOUTは接地レベルを基準とする。オペアンプ5001及びトランジスタ5003は、読み出し動作中にアレイのビット線に固定バイアス電圧VREF5010を印加する。PMOSトランジスタ5004及び5005は、アレイ出力電流(Ineu)を可変抵抗器5008及びS/Hコンデンサ5009にミラーリングするための可変比電流ミラーとして働く。代替的に、電流-電圧変換器5000は、可変抵抗器5008を含まず、その場合、ミラーリングされたIneuは、所定の調整可能なタイミングパルス値によって制御される可変信号パルス有効化スイッチ5006によってS/Hコンデンサ5009を充電し、ここで、タイミングパルス値は、Ineu動的電流範囲に基づいて選択される。この場合、S/Hコンデンサは、調整可能なキャパシタンス値を有する可変コンデンサであり得る。
【0220】
図51は、
図45の電流-電圧変換器4501の一実施形態である電流-電圧変換器5100を示す。電流-電圧変換器5100は、演算増幅器5101、NMOSトランジスタ5102、可変抵抗器5103(
図49Bに関連して上述したように実装され得る)、スイッチ5104及び5105、コンデンサ5106、並びに電圧源VHを備える。電流-電圧変換器5100は、電流Ineuを受け取り、電圧VOUTを出力する。特に、VOUTは、
図50と同様に電圧降下を受けることなく測定することができる。この場合のS/H電圧VOUTは、高電源VHを基準とする。演算増幅器5101及びトランジスタ5102は、読み出し動作中にビット線に固定バイアスVREF5110を印加する働きをする。代替的に、電流-電圧変換器5100は、可変抵抗器5103を含まず、その場合、Ineuは、所定の調整可能なパルスタイミング値によって制御される可変信号パルス有効化スイッチ5106を通してS/Hコンデンサ5106を放電し、ここで、タイミング値は、Ineu動的電流範囲に基づいて選択される。この場合、S/Hコンデンサは、調整可能なキャパシタンス値を有する可変コンデンサであり得る。
【0221】
図52Aは、
図48に関連して上述した無損失電流-電圧変換器4800を利用するハイブリッドシリアルアナログ-デジタル変換器5200を示す。これは、電流-電圧変換器5220、比較器5209、電流源5206及び5207、並びにスイッチS1及びS2からなる。電流-電圧変換器5220は、代わりに、
図46、
図47、
図49、
図50、及び
図51において上記で説明される電流-電圧変換器のいずれかを使用して実装されてもよい。電流-電圧変換器5220は、演算増幅器5201と、スイッチ5205と、可変抵抗器5204と、サンプルアンドホールドコンデンサ5203とを備える。
【0222】
図52Bは、ハイブリッドシリアルADC変換器5200の動作のタイミング
図5250を示し、期間t1の間、電流ICELL5206は、スイッチ5208(S1)を開いたまま維持しながらスイッチ5202(S2)を閉じることによって電圧VOUTに変換され、次いで、スイッチ5202(S2)を開くことによってコンデンサ5203によって保持される。期間t2の間、IREF5207は、スイッチ5208(S1)を閉じることによってイネーブルされて、非積分期間、すなわちカウント期間を開始し、その間、t2として示される時間、クロックパルス(図示せず)は、ECがハイである限り、パルスカウンタ5210によってカウントされ、これは、デジタルビットDOUT、すなわち、カウント数に変換される。比較器出力ECをデジタルビットに変換するためのデジタルカウンタ及びクロック及び制御論理は示されていない。
【0223】
図52Cは、ハイブリッドシリアルADC変換器5200の動作の別のタイミング
図5250を示し、t1期間は、
図52Bのものと同じである。期間t2の間、電圧VOUTは、基準電圧VREF2をVREF1などの基準レベルからその最大レベルまで上昇させることによってデジタルビットDOUTに変換される。期間t2の間、デジタルカウンタ(図示せず)はパルスをカウントし、デジタルカウンタの出力は出力DOUTである。期間t2は、VREF2がVOUTを超えたときに終了し、その結果、
図52AにおいてECの値が変化する。
【0224】
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「に間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に伴わずに形成すること、及びその要素を基板に間接的に1つ以上の中間材料/要素をそれらの間に伴って形成することを含み得る。