(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-17
(54)【発明の名称】深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用のプログラム可能出力ブロック
(51)【国際特許分類】
G06N 3/065 20230101AFI20240709BHJP
G06G 7/60 20060101ALI20240709BHJP
G06G 7/184 20060101ALI20240709BHJP
【FI】
G06N3/065
G06G7/60
G06G7/184
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023578766
(86)(22)【出願日】2021-10-05
(85)【翻訳文提出日】2024-02-15
(86)【国際出願番号】 US2021053644
(87)【国際公開番号】W WO2023282923
(87)【国際公開日】2023-01-12
(32)【優先日】2021-07-05
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】トラン、ヒュー バン
(57)【要約】
人工ニューラルネットワーク内のVMMアレイとともに使用するためのプログラム可能出力ブロック用の多数の実施形態が開示される。一実施形態では、出力ブロックの利得は、構成信号によって構成することができる。別の実施形態では、出力ブロック内のADCの分解能は、構成信号によって構成することができる。
【選択図】
図8
【特許請求の範囲】
【請求項1】
ニューラルネットワークメモリアレイの出力を生成するためのプログラム可能ニューロン出力ブロックであって、
前記ニューラルネットワークメモリアレイから電流を受信するための1つ以上の入力ノードと、
利得構成信号を受信し、前記利得構成信号に応答して受信された前記電流に利得係数を適用して出力を生成するための利得構成回路と、を備える、プログラム可能ニューロン出力ブロック。
【請求項2】
前記利得構成信号がアナログ信号を含む、請求項1に記載のプログラム可能ニューロン出力ブロック。
【請求項3】
前記利得構成信号がデジタルビットを含む、請求項1に記載のプログラム可能ニューロン出力ブロック。
【請求項4】
前記利得構成回路が、前記利得構成信号によって制御される可変抵抗器を備える、請求項1に記載のプログラム可能ニューロン出力ブロック。
【請求項5】
前記利得構成回路が、前記利得構成信号によって制御される可変コンデンサを備える、請求項1に記載のプログラム可能ニューロン出力ブロック。
【請求項6】
前記利得構成信号が、前記電流が受信された前記ニューラルネットワークメモリアレイにおいて有効にされる行又は列の数に依存する、請求項1に記載のプログラム可能ニューロン出力ブロック。
【請求項7】
ニューラルネットワークメモリアレイの出力を生成するためのプログラム可能ニューロン出力ブロックであって、
前記ニューラルネットワークメモリアレイからの電流及び制御信号を受信し、デジタル出力を生成するためのアナログ-デジタル変換器であって、前記デジタル出力の分解能が前記制御信号によって決定される、アナログ-デジタル変換器、を備える、プログラム可能ニューロン出力ブロック。
【請求項8】
前記制御信号がアナログ信号を含む、請求項7に記載のプログラム可能ニューロン出力ブロック。
【請求項9】
前記制御信号がデジタルビットを含む、請求項7に記載のプログラム可能ニューロン出力ブロック。
【請求項10】
ニューラルネットワークメモリアレイの出力を生成するためのプログラム可能ニューロン出力ブロックであって、
前記ニューラルネットワークメモリアレイの前記出力をデジタル出力に変換するためのハイブリッドアナログ-デジタル変換器であって、
前記デジタル出力の第1の部分を生成するための第1のアナログ-デジタル変換器と、
前記デジタル出力の第2の部分を生成するための第2のアナログ-デジタル変換器と、を備える、ハイブリッドアナログ-デジタル変換器、を備える、プログラム可能ニューロン出力ブロック。
【請求項11】
前記第1のアナログ-デジタル変換器が、逐次近似レジスタアナログ-デジタル変換器を含む、請求項10に記載のプログラム可能ニューロン出力ブロック。
【請求項12】
前記第2のアナログ-デジタル変換器が、シリアルアナログ-デジタル変換器を含む、請求項11に記載のプログラム可能ニューロン出力ブロック。
【請求項13】
前記第1のアナログ-デジタル変換器が、アルゴリズム型アナログ-デジタル変換器を含む、請求項10に記載のプログラム可能ニューロン出力ブロック。
【請求項14】
前記第2のアナログ-デジタル変換器が、シリアルアナログ-デジタル変換器を含む、請求項13に記載のプログラム可能ニューロン出力ブロック。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本出願は、2019年3月6日出願の米国仮特許出願第62/814,813号、表題「System for Converting Neuron Current Into Neuron Current-Based Time Pulses in an Analog Neural Memory in a Deep Learning Artificial Neural Network」及び、2019年1月18日出願の米国仮特許出願第62/794,492号、表題「System for Converting Neuron Current Into Neuron Current-Based Time Pulses in an Analog Neural Memory in a Deep Learning Artificial Neural Network」からの優先権を主張する、2019年3月14日に出願の米国特許出願第16/353,830号、表題「System for Converting Neuron Current Into Neuron Current-Based Time Pulses in an Analog Neural Memory in a Deep Learning Artificial Neural Network」の一部継続出願であり、これらの全ては、参照により本明細書に組み込まれる。
【0002】
(発明の分野)
人工ニューラルネットワーク内のベクトル行列乗算(vector-by-matrix multiplication、VMM)アレイとともに使用するためのプログラム可能出力ブロック用の多数の実施形態が開示される。
【背景技術】
【0003】
人工ニューラルネットワークは、生物学的ニューラルネットワーク(動物の中枢神経系、特に脳)を模倣しており、多数の入力に依存し得、かつ、一般的に未知である関数を推定する又は近似するために使用される。人工ニューラルネットワークは、概して、お互いの間でメッセージを交換する相互接続した「ニューロン」の層を含む。
【0004】
図1は人工ニューラルネットワークを示しており、図中、円は、入力又はニューロンの層を表す。接続(シナプスと呼ばれる)は、矢印によって表され、経験に基づいてチューニングされ得る数値の重みを有する。これにより、ニューラルネットワークは入力に適応し、学習可能になる。典型的には、ニューラルネットワークは、複数の入力の層を含む。典型的には、1つ以上のニューロンの中間層、及びニューラルネットワークの出力を提供するニューロンの出力層が存在する。各レベルでニューロンは、シナプスから受信したデータに基づいて個々に又は集合的に決定を行う。
【0005】
高性能情報処理用の人工ニューラルネットワークの開発における主要な課題のうちの1つは、適切なハードウェア技術の欠如である。実際には、実用ニューラルネットワークは、非常に多数のシナプスに依拠しており、これによりニューロン間の高い接続性、すなわち、非常に高度な計算処理の並列化が可能となる。原理的には、このような複雑性は、デジタルスーパーコンピュータ又は専用グラフィックプロセッシングユニットクラスタによって実現が可能である。しかしながら、高コストに加え、これらのアプローチはまた、生物学的ネットワークが主として低精度のアナログ計算を実施するのではるかに少ないエネルギーしか消費しないのと比較して、エネルギー効率が劣っていることに悩まされている。人工ニューラルネットワークにはCMOSアナログ回路が使用されてきたが、ほとんどのCMOS実装シナプスは、必要な多数のニューロン及びシナプスを前提とすると、嵩高過ぎていた。
【0006】
出願人は以前に、参照により組み込まれる米国特許出願公開第2017/0337466号として公開された米国特許出願第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】
VMMアレイを利用するシステムにおける1つの課題は、VMMアレイの出力を正確に測定し、その出力を別のVMMアレイの入力ブロックなどの別の段階に転送する能力である。多くのアプローチが知られているが、それぞれは、漏れ電流による情報の損失などの特定の欠点を有する。
【0009】
必要とされるのは、VMMアレイの出力電流を受信し、その出力電流を、電子機器の別の段階に転送するのにより適した形態に変換するための改善された出力ブロックである。
【発明の概要】
【0010】
人工ニューラルネットワーク内のVMMアレイとともに使用するためのプログラム可能出力ブロック用の多数の実施形態が開示される。一実施形態では、出力ブロックの利得は、構成信号によって構成することができる。別の実施形態では、出力ブロック内のADCの分解能は、構成信号によって構成することができる。
【0011】
【0012】
【0013】
【0014】
【0015】
【0016】
【0017】
【0018】
【0019】
【0020】
【0021】
【0022】
【0023】
【0024】
【0025】
【0026】
【0027】
【0028】
【0029】
【0030】
【0031】
【0032】
【0033】
【0034】
【0035】
【0036】
【0037】
【0038】
【0039】
【0040】
【0041】
【0042】
【0043】
【0044】
【0045】
【0046】
【0047】
【0048】
【0049】
【0050】
【0051】
【0052】
【0053】
【0054】
【0055】
【0056】
【0057】
【0058】
【0059】
【0060】
【0061】
【0062】
【0063】
【0064】
【0065】
【0066】
【0067】
【0068】
【0069】
【0070】
【0071】
【0072】
【0073】
【0074】
【0075】
【0076】
【0077】
【0078】
【図面の簡単な説明】
【0079】
【
図1】先行技術の人工ニューラルネットワークを示す図である。
【
図2】先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図3】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図4】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図5】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図6】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図7】先行技術の積層ゲートフラッシュメモリセルを示す。
【
図8】1つ以上の不揮発性メモリアレイを利用する例示的な人工ニューラルネットワークの様々なレベルを例解する図である。
【
図9】ベクトル行列乗算システムを例解するブロック図である。
【
図10】1つ以上のベクトル行列乗算システムを利用する例示的な人工ニューラルネットワークを例解するブロック図である。
【
図11】ベクトル行列乗算システムの別の実施形態を示す。
【
図12】ベクトル行列乗算システムの別の実施形態を示す。
【
図13】ベクトル行列乗算システムの別の実施形態を示す。
【
図14】ベクトル行列乗算システムの別の実施形態を示す。
【
図15】ベクトル行列乗算システムの別の実施形態を示す。
【
図17】長・短期記憶システムでの使用のための例示的なセルを示す。
【
図20】先行技術のゲート付き回帰型ユニットシステムを示す。
【
図21】ゲート付き回帰型ユニットシステムでの使用のための例示的なセルを示す。
【
図24】ベクトル行列乗算システムの別の実施形態を示す。
【
図25】ベクトル行列乗算システムの別の実施形態を示す。
【
図26】ベクトル行列乗算システムの別の実施形態を示す。
【
図27】ベクトル行列乗算システムの別の実施形態を示す。
【
図28】ベクトル行列乗算システムの別の実施形態を示す。
【
図29】ベクトル行列乗算システムの別の実施形態を示す。
【
図30】ベクトル行列乗算システムの別の実施形態を示す。
【
図31】ベクトル行列乗算システムの別の実施形態を示す。
【
図33】フラッシュアナログニューロメモリシステムを示す。
【
図50】デジタル化後に活性化される出力の態様を示す。
【
図51】デジタル化後に活性化される出力の態様を示す。
【
図55A】デジタルビット-パルス行変換器を示す。
【
図59】プログラム可能ニューロン出力ブロックを示す。
【
図60】ニューロン出力ブロックでの使用ためのプログラム可能アナログ-デジタル変換器を示す。
【
図62】構成可能なシリアルアナログ-デジタル変換器を示す。
【
図63】構成可能なニューロンSAR(逐次近似レジスタ)アナログ-デジタル変換器を示す。
【
図64】パイプライン型SAR ADC回路を示す。
【
図65】ハイブリッドSAR・シリアルADC回路を示す。
【
図66】アルゴリズム型ADC出力ブロックを示す。
【発明を実施するための形態】
【0080】
本発明の人工ニューラルネットワークは、CMOS技術及び不揮発性メモリアレイの組み合わせを利用する。
不揮発性メモリセル
【0081】
デジタル不揮発性メモリは、周知である。例えば、参照により本明細書に組み込まれる、米国特許第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に結合される。
【0082】
ワード線端子22に高圧正電圧を加えることによって、メモリセル210に対して消去が行われ(電子が浮遊ゲートから除去される)、これによって、浮遊ゲート20の電子は、浮遊ゲート20からワード線端子22までそれらの間にある絶縁体の中をファウラーノルドハイム(Fowler-Nordheim)トンネリングを介して通過する。
【0083】
メモリセル210は、ワード線端子22に正電圧、及びソース領域14に正電圧を加えることによってプログラムされる(電子が浮遊ゲートに印加される)。電子電流は、ソース領域14からドレイン領域16に向かって流れることになる。電子は加速し、ワード線端子22と浮遊ゲート20との間の間隙に達すると、発熱する。熱せられた電子の一部は、浮遊ゲート20からの静電引力に起因して、浮遊ゲート20にゲート酸化物を介して注入される。
【0084】
メモリセル210は、ドレイン領域16及びワード線端子22に正の読み出し電圧を加える(ワード線端子の下方のチャネル領域18の部分をオンにする)ことによって、読み出される。浮遊ゲート20が正に帯電する(すなわち、電子を消去する)と、浮遊ゲート20の下方のチャネル領域18の部分も同様にオンになり、電流はチャネル領域18を流れ、これは、消去された状態つまり「1」の状態として検知される。浮遊ゲート20が負に帯電する(すなわち、電子でプログラムされる)と、浮遊ゲート20の下方のチャネル領域の部分はほとんど又は完全にオフになり、電流はチャネル領域18を流れず(又はほとんど流れず)、これは、プログラムされた状態つまり「0」の状態として検知される。
【0085】
表1は、読み出し、消去、及びプログラム動作を実行するためのメモリセル110の端子に印加され得る典型的な電圧範囲を示す。
表1:
図2のフラッシュメモリセル210の動作
【表1】
【0086】
図3は、制御ゲート(control gate、CG)28を追加した、
図2のメモリセル210と同様のメモリセル310を示す。制御ゲート28は、プログラミング中に高電圧(例えば、10V)、消去中に低又は負電圧(例えば、0V/-8V)、読み出し中に低又は中程度電圧(例えば、0V/2.5V)でバイアスされる。他の端子は、
図2の端子と同様にバイアスされる。
【0087】
図4は、ソース領域14と、ドレイン領域16と、チャネル領域18の第1の部分の上方にある浮遊ゲート20と、チャネル領域18の第2の部分の上方にある選択ゲート22(典型的には、ワード線、WL、に結合される)と、浮遊ゲート20の上方にある制御ゲート28と、ソース領域14の上方にある消去ゲート30と、を備える、4ゲートメモリセル410を示す。この構成は、あらゆる目的のため参照により本明細書に組み込まれる、米国特許第6,747,310号に記載されている。ここで、全てのゲートは、浮遊ゲート20を除いて、非浮遊ゲートであり、つまり、それらは電圧源に電気的に接続される又は接続可能である。プログラミングは、熱せられた電子がチャネル領域18から浮遊ゲート20にその電子自体を注入することによって実行される。消去は、電子が浮遊ゲート20から消去ゲート30へトンネリングすることによって実行される。
【0088】
表2は、読み出し、消去、及びプログラム動作を実行するためのメモリセル310の端子に印加され得る典型的な電圧範囲を示す。
表2:
図4のフラッシュメモリセル410の動作
【表2】
【0089】
図5は、メモリセル510が消去ゲート(erase gate、EG)を含まないことを除いて、
図4のメモリセル410と同様のメモリセル510を示す。消去は、基板18を高電圧にバイアスし、制御ゲートCG28を低電圧又は負電圧にバイアスすることによって行われる。あるいは、ワード線22を正電圧にバイアスし、制御ゲート28を負電圧にバイアスすることによって、消去が行われる。プログラミング及び読み出しは、
図4のものと同様である。
【0090】
図6は、別の種類のフラッシュメモリセルである、3ゲートメモリセル610を示す。メモリセル610は、メモリセル610が別個の制御ゲートを有しないことを除いて、
図4のメモリセル410と同一である。(消去ゲートの使用を通じて消去が起こる)消去動作及び読み出し動作は、制御ゲートバイアスが印加されないことを除いて、
図4のものと同様である。プログラミング動作もまた、制御ゲートバイアスなしで行われるため、結果として、プログラム動作中は、制御ゲートバイアスの不足を補償するため、より高い電圧がソース線に印加されなければならない。
【0091】
表3は、読み出し、消去、及びプログラム動作を実行するためのメモリセル610の端子に印加され得る典型的な電圧範囲を示す。
表3:
図6のフラッシュメモリセル610の動作
【表3】
【0092】
図7は、別の種類のフラッシュメモリセルである、積層ゲートメモリセル710を示す。メモリセル710は、浮遊ゲート20がチャネル領域18全体の上方に延在し、制御ゲート22(ここでワード線に結合される)が絶縁層(図示せず)によって分離されて浮遊ゲート20の上方に延在することを除いて、
図2のメモリセル210と同様である。消去、プログラミング、及び読み出し動作は、メモリセル210について前述したものと同様の方法で動作する。
【0093】
表4は、読み出し動作、消去動作、及びプログラム動作を実行するためのメモリセル710及び基板12の端子に印加され得る典型的な電圧範囲を示す。
表4:
図7のフラッシュメモリセル710の動作
【表4】
【0094】
上記の人工ニューラルネットワークにおける不揮発性メモリセルの種類のうちの1つを含むメモリアレイを利用するために、2つの修正が行われる。第一に、以下に更に説明されるように、アレイ内の他のメモリセルのメモリ状態に悪影響を与えずに各メモリセルを個々にプログラム、消去、及び読み出しできるように線を構成する。第二に、メモリセルの連続(アナログ)プログラミングを提供する。
【0095】
具体的には、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全に消去された状態から完全にプログラムされた状態へ、独立して、かつ他のメモリセルの異常が最小で、連続的に変えることができる。別の実施形態では、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全にプログラムされた状態から完全に消去された状態へ、及び逆もまた同様に、独立して、かつ他のメモリセルの異常が最小で、連続的に変えることができる。これはつまり、セル記憶がアナログであるか、又は多数の不連続値(16個又は64個の異なる値など)のうちの1つを最低限記憶することができることを意味し、これにより、メモリアレイ内の全てのセルが非常に精密に、かつ個々にチューニング可能となり、また、メモリアレイが、記憶、及びニューラルネットワークのシナプシスの重みへの微細チューニング調整に対して、理想的なものになる。
【0096】
本明細書に記載される方法及び手段は、SONOS(silicon-oxide-nitride-oxide-silicon,charge trap in nitride)(ケイ素-酸化物-窒化物-酸化物-ケイ素、窒化物中の電荷トラップ)、MONOS(metal-oxide-nitride-oxide-silicon,metal charge trap in nitride)(金属-酸化物-窒化物-酸化物-ケイ素、窒化物中の金属電荷トラップ)、ReRAM(resistive ram)(抵抗変化型メモリ)、PCM(phase change memory)(相変化メモリ)、MRAM(magnetic ram)(磁気抵抗メモリ)、FeRAM(ferroelectric ram)(強誘電体メモリ)、OTP(bi-level or multi-level one time programmable)(バイレベル又はマルチレベルの1回のみのプログラムが可能)、CeRAM(correlated electron ram)(強相関電子メモリ)などの他の不揮発性メモリ技術に適用することができる。本明細書に記載される方法及び手段は、限定することなく、SRAM、DRAM、及び/又は揮発性シナプスセルなどのニューラルネットワークで使用される揮発性メモリ技術に適用することができる。
不揮発性メモリセルアレイを使用するニューラルネットワーク
【0097】
図8は、本実施形態の不揮発性メモリアレイを利用するニューラルネットワークの非限定例を概念的に例解する。この例は、顔認識アプリケーション用に不揮発性メモリアレイニューラルネットワークを使用するが、不揮発性メモリアレイベースのニューラルネットワークを使用して他の適切なアプリケーションを実装することも可能である。
【0098】
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の異なる特徴マップを生成する。
【0099】
本例では、層C1において、各々30×30ピクセルを有する16個の特徴マップが存在する。各ピクセルは、入力とカーネルとの乗算から抽出された新しい特徴ピクセルであり、したがって、各特徴マップは、二次元アレイであり、したがってこの例では、層C1は、二次元アレイの16層を構成する(本明細書で言及される層及びアレイは、必ずしも物理的関係ではなく論理的な関係であり、すなわち、アレイは必ずしも物理的な二次元アレイに配向されないことに留意されたい)。層C1内の16個の特徴マップの各々は、フィルタスキャンに適用される異なるシナプス重みのセット16個のうちの1つによって生成される。C1特徴マップは全て、境界同定など、同じ画像特徴の異なる態様を対象とすることができる。例えば、第1のマップ(この第1のマップを生成するために使用される全てのスキャンに共有される第1の重みセットを使用して生成される)は、円形エッジを識別することができ、第2のマップ(第1の重みセットと異なる第2の重みセットを使用して生成される)は、長方形エッジ又はある特定の特徴のアスペクト比などを識別することができる。
【0100】
層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個のニューロンを含み、ここで出力が最も高いニューロンが、クラスを決定する。この出力は、例えば、元の画像の内容の同定又は分類(クラス分け)を示すことができる。
【0101】
シナプスの各層は、不揮発性メモリセルのアレイ又はアレイの一部を使用して実装される。
【0102】
図9は、その目的のために使用され得るアレイのブロック図である。ベクトル行列乗算(VMM)アレイ32は、不揮発性メモリセルを含み、ある層と次の層との間のシナプス(
図6のCB1、CB2、CB3、及びCB4など)として利用される。具体的には、VMMアレイ32は、不揮発性メモリセルのアレイ33、消去ゲート及びワード線ゲートデコーダ34、制御ゲートデコーダ35、ビット線デコーダ36、並びにソース線デコーダ37を含み、それらのデコーダは不揮発性メモリセルアレイ33に対するそれぞれの入力をデコードする。VMMアレイ32への入力は、消去ゲート及びワード線ゲートデコーダ34から、又は制御ゲートデコーダ35から行うことができる。この例におけるソース線デコーダ37はまた、不揮発性メモリセルアレイ33の出力をデコードする。代替的に、ビット線デコーダ36が、不揮発性メモリセルアレイ33の出力をデコードすることができる。
【0103】
不揮発性メモリセルアレイ33は、2つの目的を果たす。第一に、不揮発性メモリセルアレイ33は、VMMアレイ32によって使用される重みを記憶する。第二に、不揮発性メモリセルアレイ33は、不揮発性メモリセルアレイ33に格納された重みによって、入力を有効に乗算して、それらを出力線(ソース線又はビット線)ごとに加算して、出力を生成し、この出力は次の層への入力又は最後の層への入力になる。不揮発性メモリセルアレイ33が乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性はなくなり、また、メモリ内の計算により電力効率も良い。
【0104】
不揮発性メモリセルアレイ33の出力は、不揮発性メモリセルアレイ33の出力を合計してその畳み込み用の単一の値を作成する、差動合計器(合計オペアンプ又は合計カレントミラーなど)38に供給される。差動合計器38は、正の重み及び負の重みの総和を実行するように配置される。
【0105】
差動合算器38の合計された出力値は、次に出力を整流する活性化関数回路39に供給される。活性化関数回路39は、シグモイド、tanh、又はReLU関数を提供し得る。活性化関数回路39の整流された出力値は、次の層(例えば
図8のC1)の特徴マップの要素になり、次いで、次のシナプスに適用されて次の特徴マップ層又は最後の層を生成する。したがって、この例では、不揮発性メモリセルアレイ33は、複数のシナプスを構成し(ニューロンの前の層から、又は画像データベースなどの入力層から、入力を受信する)、合計器38及び活性化関数回路39は、複数のニューロンを構成する。
【0106】
図9のVMMアレイ32への入力(WLx、EGx、CGx、及び任意選択的にBLx及びSLx)は、アナログレベル、バイナリレベル、デジタルパルス(この場合、パルス-アナログ変換器PACは、パルスを適切な入力アナログレベルに変換するのに必要とされ得る)又はデジタルビット(この場合、DACは、デジタルビットを適切な入力アナログレベルに変換するのに提供される)であり得、出力は、アナログレベル、バイナリレベル、デジタルパルス、又はデジタルビットであり得る(この場合、出力ADCは出力アナログレベルをデジタルビットに変換するのに提供される)。
【0107】
図10は、図中でVMMアレイ32a、32b、32c、32d及び32eとして標示されたVMMアレイ32の多数の層の使用を示すブロック図である。
図10に示されるように、入力(Inputxで示される)は、デジタル-アナログ変換器31によってデジタルからアナログに変換され、入力VMMアレイ32aに提供される。変換されたアナログ入力は、電圧又は電流であり得る。第1の層の入力D/A変換は、入力VMMアレイ32aの行列乗算器の適切なアナログレベルに入力Inputxをマッピングする関数又はLUT(ルックアップテーブル)を使用することによって行うことができる。入力変換はまた、外部アナログ入力を入力VMMアレイ32aへのマッピングされたアナログ入力に変換するために、アナログ-アナログ(analog to analog、A/A)変換器によって行うこともできる。入力変換はまた、外部デジタル入力を入力VMMアレイ32aへのマッピングされたデジタルパルス(単数又は複数)に変換するために、デジタル-デジタルパルス(D/P)変換器によって行うこともできる。
【0108】
入力VMMアレイ32aによって生成された出力は、次に、次のVMMアレイ(隠しレベル1)32bへの入力として提供され、次に入力VMMアレイ(隠しレベル2)32cへの入力として提供される出力を生成する、などとなる。VMMアレイ32の様々な層は、畳み込みニューラルネットワーク(convolutional neural network、CNN)のシナプス及びニューロンの各層として機能する。VMMアレイ32a、32b、32c、32d及び32eはそれぞれスタンドアローンの物理的不揮発性メモリアレイとすることができ、又は複数のVMMアレイは、同じ物理的不揮発性メモリアレイの異なる部分を利用することができ、又は複数のVMMアレイは、同じ物理的不揮発性メモリアレイの重なり合う部分を利用することができる。各VMMアレイ32a、32b、32c、32d、及び32eはまた、そのアレイ又はニューロンの様々な部分に対して時間多重化され得る。
図10に示される例は、5つの層(32a、32b、32c、32d、32e)、すなわち、1つの入力層(32a)、2つの隠れ層(32b、32c)、及び2つの全接続層(32d、32e)を含む。当業者であれば、これは単なる例示であり、代わりにシステムが2つを超える隠れ層及び2つを超える完全接続層を含み得ることを理解するであろう。
ベクトル行列乗算(VMM)アレイ
【0109】
図11は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1100を示す。VMMアレイ1100は、不揮発性メモリセルのメモリアレイ1101と、不揮発性基準メモリセルの基準アレイ1102(アレイの頂部に位置する)と、を含む。代替的に、別の基準アレイが底部に位置することができる。
【0110】
VMMアレイ1100では、制御ゲート線1103などの制御ゲート線が垂直方向に延びており(したがって、行方向の基準アレイ1102が、制御ゲート線1103に直交する)、消去ゲート線1104などの消去ゲート線が水平方向に延びている。ここで、VMMアレイ1100への入力は、制御ゲート線(CG0、CG1、CG2、CG3)に提供され、VMMアレイ1100の出力は、ソース線(SL0、SL1)に現れる。一実施形態では、偶数行のみが使用され、別の実施形態では、奇数行のみが使用される。各ソース線(それぞれSL0、SL1)の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0111】
ニューラルネットワークについて本明細書に記載されているように、VMMアレイ1100の不揮発性メモリセル、すなわちVMMアレイ1100のフラッシュメモリは、サブスレッショルド領域で動作するように構成されることが好ましい。
【0112】
本明細書に記載される不揮発性基準メモリセル及び不揮発性メモリセルは、以下のように弱い反転でバイアスされる:
Ids=Io*e(Vg-Vth)/kVt=w*Io*e(Vg)/kVt
式中、w=e(-Vth)/kVtである。
【0113】
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流を入力電圧に変換するI-Vログ変換器を使用した場合:
Vg=k*Vt*log[Ids/wp*Io]
式中、wpは、基準又は周辺メモリセルのwである。
【0114】
ベクトル行列乗算器VMMアレイとして使用されるメモリアレイについて、出力電流は以下である:
Iout=wa*Io*e(Vg)/kVt、すなわち
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/kVt
式中、waは、メモリアレイの各メモリセルのwである。
【0115】
ワード線又は制御ゲートは、入力電圧のためのメモリセルの入力として使用することができる。
【0116】
代替的に、本明細書に記載されたVMMアレイのフラッシュメモリセルは、線形領域で動作するように構成することができる。
Ids=β*(Vgs-Vth)*Vds;β=u*Cox*W/L
W=α(Vgs-Vth)
【0117】
ワード線又は制御ゲート又はビット線又はソース線は、線形領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、メモリセルの出力として使用することができる。
【0118】
I-V線形変換器用に、線形領域で動作するメモリセル(基準メモリセル又は周辺メモリセルなど)若しくはトランジスタ、又は抵抗器を使用して、入出力電流を入出力電圧に線形変換することができる。
【0119】
図9のVMMアレイ32のための他の実施形態は、参照により本明細書に組み込まれる米国特許出願第15/826,345号に記載されている。上記出願に記載されているように、ソース線又はビット線は、ニューロン出力(電流和出力)として使用することができる。あるいは、本明細書に記載されたVMMアレイのフラッシュメモリセルは、飽和領域で動作するように構成することができる。
Ids=α1/2
*β
*(Vgs-Vth)
2;β=u
*Cox
*W/L
W=α(Vgs-Vth)
2
【0120】
ワード線、制御ゲート、又は消去ゲートは、飽和領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、出力ニューロンの出力として使用することができる。
【0121】
あるいは、本明細書に記載されるVMMアレイのフラッシュメモリセルは、全ての領域又はそれらの組み合わせ(サブスレッショルド、線形、又は飽和)で使用することができる。
【0122】
図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(一部のみ示す)を通してダイオード接続される。基準セルは、目標基準レベルにチューニング(例えば、プログラム)される。目標基準レベルは、基準ミニアレイ行列(図示せず)によって提供される。
【0123】
メモリアレイ1203は、2つの目的を果たす。第一に、メモリアレイ1203は、VMMアレイ1200により使用される重みを、それぞれのメモリセルに記憶する。第二に、メモリアレイ1203は、メモリアレイ1203に記憶された重みを、入力(すなわち、端子BLR0、BLR1、BLR2、及びBLR3に提供された電流入力であり、これを基準アレイ1201及び1202が入力電圧に変換して、ワード線WL0、WL1、WL2、及びWL3に供給する)に有効に乗算して、次いで、全ての結果(メモリセル電流)を加算して、それぞれのビット線(BL0~BLN)の出力を生成し、この出力は次の層への入力又は最後の層への入力となる。乗算及び加算の関数を実行することで、メモリアレイ1203は、別個の乗算及び加算の論理回路の必要性をなくし、また、電力効率も良い。ここで、電圧入力はワード線WL0、WL1、WL2、及びWL3に提供され、出力は、読み出し(推論)動作中にそれぞれのビット線BL0~BLNに現れる。ビット線BL0~BLNの各々の電流は、その特定のビット線に接続された全ての不揮発性メモリセルからの電流の合計関数を実行する。
【0124】
表5は、VMMアレイ1200の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表5:
図12のVMMアレイ1200の動作
【表5】
【0125】
図13は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1300を示す。VMMアレイ1300は、不揮発性メモリセルのメモリアレイ1303と、第1の不揮発性基準メモリセルの基準アレイ1301と、第2の不揮発性基準メモリセルの基準アレイ1302と、を含む。基準アレイ1301及び1302は、VMMアレイ1300の行方向に延びる。VMMアレイは、VMMアレイ1300においてワード線が垂直方向に延びることを除いて、VMM1000と同様である。ここで、入力はワード線(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)に提供され、出力は、読み出し動作中にソース線(SL0、SL1)に現れる。各ソース線の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0126】
表6は、VMMアレイ1300の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表6:
図13のVMMアレイ1300の動作
【表6】
【0127】
図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をそれぞれ含む。基準セルは、目標基準レベルにチューニングされる。
【0128】
メモリアレイ1403は、2つの目的を果たす。第一に、メモリアレイ1403は、VMMアレイ1400によって使用される重みを記憶する。第二に、メモリアレイ1403は、メモリアレイに記憶された重みを、入力(端子BLR0、BLR1、BLR2、及びBLR3に提供された電流入力であり、基準アレイ1401及び1402がこれらの電流入力を入力電圧に変換して、制御ゲート(CG0、CG1、CG2、及びCG3)に供給する)に有効に乗算して、次いで、全ての結果(セル電流)を加算して出力を生成し、この出力はBL0~BLNに現れ、次の層への入力又は最後の層への入力となる。メモリアレイが乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性がなくなり、また、電力効率も良い。ここで、入力は制御ゲート線(CG0、CG1、CG2、及びCG3)に提供され、出力は、読み出し動作中にビット線(BL0~BLN)に現れる。各ビット線の電流は、その特定のビット線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0129】
VMMアレイ1400は、メモリアレイ1403内の不揮発性メモリセルの一方向チューニングを実装する。すなわち、各不揮発性メモリセルは消去され、次いで、浮遊ゲートの所望の電荷に達するまで部分的にプログラムされる。これは、例えば、以下に記載される精密プログラミング技術を使用して実行することができる。過度に多くの電荷が浮遊ゲートに加えられる場合(誤った値がセルに記憶されるなど)、セルは消去されなければならず、一連の部分的なプログラミング動作をやり直さなければならない。示されるように、同じ消去ゲート(EG0又はEG1など)を共有する2つの行は、一緒に消去される必要があり(ページ消去として知られる)、その後、各セルは、浮遊ゲートの所望の電荷に達するまで部分的にプログラムされる。
【0130】
表7は、VMMアレイ1400の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタ内の非選択セルの制御ゲート、選択セルとは異なるセクタ内の非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表7:
図14のVMMアレイ1400の動作
【表7】
【0131】
図15は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1500を示す。VMMアレイ1500は、不揮発性メモリセルのメモリアレイ1503と、基準アレイ1501又は第1の不揮発性基準メモリセルと、第2の不揮発性基準メモリセルの基準アレイ1502と、を備える。EG線EGR0、EG0、EG1、及びEGR1は垂直に延び、CG線CG0、CG1、CG2、及びCG3並びにSL線WL0、WL1、WL2、及びWL3は水平に延びる。VMMアレイ1500は、VMMアレイ1500が双方向チューニングを実装することを除いてVMMアレイ1400と同様であり、各個々のセルは、個別のEG線の使用により、浮遊ゲートの所望の電荷量に達するために、完全に消去され、部分的にプログラムされ、必要に応じて部分的に消去することができる。示されるように、基準アレイ1501及び1502は、端子BLR0、BLR1、BLR2及びBLR3における入力電流を制御ゲート電圧CG0、CG1、CG2及びCG3に変換し(マルチプレクサ1514を介したダイオード接続された基準セルの作用を通じて)、これらの電圧は行方向でメモリセルに印加される。電流出力(ニューロン)は、ビット線BL0~BLN中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
【0132】
表8は、VMMアレイ1500の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタ内の非選択セルの制御ゲート、選択セルとは異なるセクタ内の非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表8:
図15のVMMアレイ1500の動作
【表8】
【0133】
図24は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2400を示す。VMMアレイ2400では、入力INPUT
0....、INPUT
nは、ビット線BL
0、...BL
nでそれぞれ受信され、出力OUTPUT
1、OUTPUT
2、OUTPUT
3、及びOUTPUT
4は、ソース線SL
0、SL
1、SL
2、及びSL
3でそれぞれ生成される。
【0134】
図25は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2500を示す。この例では、入力INPUT
0、INPUT
1、INPUT
2、及びINPUT
3は、ソース線SL
0、SL
1、SL
2、及びSL
3でそれぞれ受信され、出力OUTPUT
0、...OUTPUT
Nは、ビット線BL
0、...、BL
Nで生成される。
【0135】
図26は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2600を示す。この例では、入力INPUT
0、...、INPUT
Mは、ワード線WL
0、...、WL
Mでそれぞれ受信され、出力OUTPUT
0、...OUTPUT
Nは、ビット線BL
0、...、BL
Nで生成される。
【0136】
図27は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2700を示す。この例では、入力INPUT
0、...、INPUT
Mは、ワード線WL
0、...、WL
Mでそれぞれ受信され、出力OUTPUT
0、...OUTPUT
Nは、ビット線BL
0、...、BL
Nで生成される。
【0137】
図28は、
図4に示されるメモリセル410に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2800を示す。この例では、入力INPUT
0、...、INPUT
nは、ビット線BL
0、...、BL
Nでそれぞれ受信、出力OUTPUT
1及びOUTPUT
2は、消去ゲート線EG
0及びEG
1で生成される。
【0138】
図29は、
図4に示されるメモリセル410に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2900を示す。この例では、入力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で生成される。
【0139】
図30は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ3000を示す。この例では、入力INPUT
0、...、INPUT
Mは、ワード線WL
0、...、WL
Mで受信され、出力OUTPUT
0、...、OUTPUT
Nは、ビット線BL
0、...、BL
Nでそれぞれ生成される。
【0140】
図31は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ3100を示す。この例では、入力INPUT
0、...、INPUT
Mは、制御ゲート線CG
0、...、CG
Mで受信される。出力OUTPUT
0、...、OUTPUT
Nは、ソース線SL
0、...、SL
Nで生成され、各ソース線SL
iは、列i内の全てのメモリセルのソース線端子に結合される。
【0141】
図32は、VMMシステム3200を示す。VMMシステム3200は、VMMアレイ3201(VMM900、1000、1100、1200、及び1320など、前述したVMM設計のいずれか、又は他のVMM設計に基づくことができる)、低電圧行デコーダ3202、高電圧行デコーダ3203、参照セル低電圧列デコーダ3204(列方向に示されており、これは行方向の変換を出力するために入力を提供することを意味する)、ビット線マルチプレクサ3205、制御論理3206、アナログ回路3207、ニューロン出力ブロック3208、入力VMM回路ブロック3209、プリデコーダ3210、試験回路3211、消去プログラム制御ロジックEPCTL3212、アナログ及び高電圧生成回路3213、ビット線PEドライバ3214、冗長アレイ3215及び3216、NVRセクタ3217、並びに参照セクタ3218を含む。入力回路ブロック3209は、外部入力からメモリアレイの入力端子へのインターフェースとして機能する。ニューロン出力ブロック3208は、メモリアレイ出力から外部インターフェースへのインターフェースとして機能する。
【0142】
低電圧行デコーダ3202は、読み出し動作及びプログラム動作のためのバイアス電圧を提供し、高電圧行デコーダ3203にデコード信号を提供する。高電圧行デコーダ3203は、プログラム動作及び消去動作のための高電圧バイアス信号を提供する。参照セル低電圧列デコーダ3204は、参照セルのデコード機能を提供する。ビット線PEドライバ3214は、プログラム、検証、及び消去動作中のビット線の制御機能を提供する。アナログ及び高電圧生成回路3213は、様々なプログラム、消去、プログラム検証、及び読み出し動作に必要な複数の電圧を提供する共有バイアスブロックである。冗長アレイ3215及び3216は、欠陥のあるアレイ部分を置き換えるためのアレイ冗長性を提供する。NVR(不揮発性レジスタ別名情報セクタ)セクタ3217は、ユーザ情報、デバイスID、パスワード、セキュリティキー、トリムビット、構成ビット、製造情報を制限なく格納するために使用されるアレイセクタであるセクタである。
【0143】
図33は、アナログニューロメモリシステム3300を示す。アナログニューロメモリシステム3300は、マクロブロック3301a、3301b、3301c、3301d、3301e、330If、3301g、及び3301hと、ニューロン出力(合計器回路及びサンプルアンドホールドS/H回路など)ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hと、入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3304hと、を含む。マクロブロック3301a、3301b、3301c、3301d、3301e、及び3301fのそれぞれは、フラッシュメモリセルなどの不揮発性メモリセルの行及び列を含むVMMアレイを含むVMMサブシステムである。ニューロメモリサブシステム3333は、マクロブロック3301、入力ブロック3303、及びニューロン出力ブロック3302を含む。ニューロメモリサブシステム3333は、それ自体のデジタル制御ブロックを有してもよい。
【0144】
アナログニューロメモリシステム3300は、
図36に関して以下で更に詳細に論じられるシステム制御ブロック3304、アナログ低電圧ブロック3305、高電圧ブロック3306、及びタイミング制御回路3670を更に備える。
【0145】
システム制御ブロック3304は、一般的な制御機能及び演算動作を処理するためのARM/MIPS/RISC_Vコアなどの1つ以上のマイクロコントローラコアを含んでもよい。システム制御ブロック3304はまた、単一の命令を用いて複数のデータで動作するSIMD(単一命令多重データ)ユニットを含んでもよい。システム制御ブロック3304は、DSPコアを含んでもよい。システム制御ブロック3304は、限定することなく、プール、平均、最小、最大、ソフトマックス、加算、減算、乗算、除算、ログ、アンチログ、ReLu、シグモイド、tanhなどの関数、及びデータ圧縮を実行するためのハードウェア又はソフトウェアを含んでもよい。システム制御ブロック3304は、活性化の近似器/量子化器/正規化器などの機能を実行するハードウェア又はソフトウェアを含んでもよい。システム制御ブロック3304は、入力データの近似器/量子化器/正規化器などの機能を実行する能力を含み得る。システム制御ブロック3304は、活性化の近似器/量子化器/正規化器の機能を実行するハードウェア又はソフトウェアを含み得る。ニューロメモリサブシステム3333の制御ブロックは、マイクロコントローラコア、SIMDコア、DSPコア、及び他の機能ユニットなどのシステム制御ブロック3304の同様の要素を含んでもよい。
【0146】
一実施形態では、ニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hはそれぞれ、構成可能な長い相互接続を推進できる低インピーダンス出力型バッファ(例えば、オペアンプ)回路を含む。一実施形態では、入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hはそれぞれ、加算の高インピーダンス電流出力を提供する。別の実施形態では、ニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hはそれぞれ活性化回路を含み、この場合、出力を推進するために追加の低インピーダンスバッファが必要とされる。
【0147】
別の実施形態では、ニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hはそれぞれ、アナログ信号の代わりにデジタルビットを出力するアナログ-デジタル変換ブロックを含む。この実施形態では、入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hは各々、それぞれのニューロン出力ブロックからデジタルビットを受信してデジタルビットをアナログ信号に変換するデジタル-アナログ変換ブロックを含む。
【0148】
したがって、ニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hは、マクロブロック3301a、3301b、3301c、3301d、3301e、及び3301fからの出力電流を受信し、任意選択的に、その出力電流をアナログ電圧、デジタルビット、又は各パルスの幅若しくはパルスの数が出力電流の値に応じて変動する1つ以上のデジタルパルスに変換する。同様に、入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hは、アナログ電流、アナログ電圧、デジタルビット、又は各パルスの幅若しくはパルスの数が出力電流の値に応答して変動するデジタルパルスを任意選択的に受信し、アナログ電流をマクロブロック3301a、3301b、3301c、3301d、3301e、及び3301fに提供する。入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hは、電圧電流変換器、入力信号中のデジタルパルスの数若しくは入力信号中のデジタルパルスの幅の長さをカウントするためのアナログ若しくはデジタルカウンタ、又はデジタル-アナログ変換器を任意選択で備える。
【0149】
任意選択的に、ニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hは、出力電流をアナログ電圧、デジタルビット、又は1つ以上のデジタルパルスに変換するとき、プログラム可能な利得を適用することができる。これは、プログラム可能ニューロンと呼ぶことができる。
【0150】
図59は、プログラム可能ニューロン出力ブロック5900の例を示しており、プログラム可能ニューロン出力ブロック5900は、VMMアレイからの出力ニューロン電流Ineuと、利得構成5901と、を受け取り、利得Gを有する出力ニューロン電流Ineuを表す出力5902を生成し、Gの値は利得構成5901に応答して設定される。利得構成5901は、アナログ信号又はデジタルビットであり得る。一実施形態では、プログラム可能ニューロン出力ブロック5900は、利得制御回路5903を備え、利得制御回路5903は、利得Gを生成するために利得構成5901によって制御される可変抵抗器5904又は可変コンデンサ5905を備える。出力5902は、アナログ電圧、アナログ電流、デジタルビット、又は1つ以上のデジタルパルスであり得る。いくつかの実施形態では、利得構成5901は、プログラム可能ニューロン出力ブロック5900の利得Gをトリミングして、漏れ電流などの望ましくない現象を補償するために使用される。
【0151】
任意選択的に、各プログラム可能ニューロン出力ブロック5900は、異なる利得構成5901を備えることができる。これは、例えば、(アレイ出力をスケーリングするためなどの)異なる利得がニューラルネットワークの異なる層において実装されることを可能にする。
【0152】
別の実施形態では、利得構成5901は、例えば、出力ニューロン電流Ineuを生成するためにいくつの行が有効にされるかを意味する入力サイズに部分的に依存する。
【0153】
別の実施形態では、利得構成5901は、VMMアレイに入力される全ての行の値に部分的に依存する。例えば、VMMアレイに対する8ビット行入力に対して、最大値は、1行に対する入力として256(2^8)、4行に対する入力として1024などである。例えば、256行が有効にされる場合、これらの行の合計値に関する決定が行われ、利得構成5901は、この値に応答して修正される。
【0154】
別の実施形態では、利得構成5901は、出力ニューロン範囲に依存する。例えば、出力ニューロン電流Ineuが第1の範囲内にある場合、第1の利得G1が利得構成5901によって適用される。出力ニューロン電流Ineuが第2の範囲内にある場合、第2の利得G2が利得構成5901を介して適用される。これは範囲に関連して説明されてきたが、当業者であれば、より多くの範囲が制限なく実装され得ることを認識するであろう。
長・短期メモリ
【0155】
先行技術は、長・短期メモリ(long short-term memory、LSTM)として知られる概念を含む。LSTMユニットは、しばしば、ニューラルネットワーク内で使用される。LSTMによって、ニューラルネットワークは所定の任意の期間にわたって情報を記憶し、後続の動作においてその情報を使用することができる。従来のLSTMユニットは、セル、入力ゲート、出力ゲート、及び忘却ゲートを含む。3つのゲートは、セル内及びセル外への情報の流れ、及び情報がLSTM内で記憶される期間を調節し、VMMは、LSTMユニットにおいて特に有用である。
【0156】
図16は、例示的なLSTM1600を示す。この例におけるLSTM1600は、セル1601、1602、1603、及び1604を含む。セル1601は、入力ベクトルx
0を受け取り、出力ベクトルh
0及びセル状態ベクトルc
0を生成する。セル1602は、入力ベクトルx
1と、セル1601からの出力ベクトル(隠れ状態)h
0と、セル1601からのセル状態c
0と、を受け取り、出力ベクトルh
1と、セル状態ベクトルc
1と、を生成する。セル1603は、入力ベクトルx
2と、セル1602からの出力ベクトル(隠れ状態)h
1と、セル1602からのセル状態c
1と、を受け取り、出力ベクトルh
2と、セル状態ベクトルc
2と、を生成する。セル1604は、入力ベクトルx
3と、セル1603からの出力ベクトル(隠れ状態)h
2と、セル1603からのセル状態c
2と、を受け取り、出力ベクトルh
3を生成する。追加のセルも使用可能であり、4つのセルを有するLSTMは、単なる例である。
【0157】
図17は、
図16のセル1601、1602、1603、及び1604に使用され得るLSTMセル1700の例示的な実装を示す。LSTMセル1700は、入力ベクトルx(t)と、先行するセルからのセル状態ベクトルc(t-1)と、先行するセルからの出力ベクトルh(t-1)と、を受け取り、セル状態ベクトルc(t)及び出力ベクトルh(t)を生成する。
【0158】
LSTMセル1700は、シグモイド関数デバイス1701、1702、及び1703を含み、それぞれが0~1の数を適用して、入力ベクトルのそれぞれの成分が出力ベクトルに寄与する程度を制御する。LSTMセル1700はまた、入力ベクトルに双曲線正接関数を適用するためのtanhデバイス1704及び1705と、2つのベクトルを乗算するための乗算器デバイス1706、1707、及び1708と、2つのベクトルを加算するための加算器デバイス1709と、を含む。出力ベクトルh(t)は、システム内の次のLSTMセルに提供することができるか、又は他の目的でアクセスすることができる。
【0159】
図18は、LSTMセル1700の一実装の一例であるLSTMセル1800を示す。読者の便宜のために、LSTMセル1700からの同じ採番方法が、LSTMセル1800で使用される。シグモイド関数デバイス1701、1702、及び1703、並びにtanhデバイス1704は各々、複数のVMMアレイ1801及び活性化回路ブロック1802を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるLSTMセルにおいて特に有用であることが分かる。乗算器デバイス1706、1707、及び1708、並びに加算器デバイス1709は、デジタル方式又はアナログ方式で実装される。活性化関数ブロック1802は、デジタル方式又はアナログ方式で実装され得る。
【0160】
LSTMセル1800の代替例(及びLSTMセル1700の一実装の別の例)を
図19に示す。
図19では、シグモイド関数デバイス1701、1702及び1703、並びにtanhデバイス1704は、同じ物理ハードウェア(VMMアレイ1901及び活性化関数ブロック1902)を、時分割多重化された方式で共有する。LSTMセル1900はまた、2つのベクトルを乗算するための乗算器デバイス1903と、2つのベクトルを加算するための加算器デバイス1908と、(活性化回路ブロック1902を含む)tanhデバイス1705と、値i(t)を、i(t)がシグモイド関数ブロック1902から出力されるときに記憶するためのレジスタ1907と、値f(t)
*c(t-1)を、その値がマルチプレクサ1910を介して乗算器デバイス1903から出力されるときに記憶するためのレジスタ1904と、値i(t)
*u(t)を、その値がマルチプレクサ1910を介して乗算器デバイス1903から出力されるときに記憶するためのレジスタ1905と、値o(t)
*c~(t)を、その値がマルチプレクサ1910を介して乗算器デバイス1903から出力されるときに記憶するためのレジスタ1906と、マルチプレクサ1909と、を含む。
【0161】
LSTMセル1800がVMMアレイ1801とそれぞれの活性化関数ブロック1802との複数のセットを含むのに対し、LSTMセル1900は、LSTMセル1900の実施形態において複数の層を表すために使用される、VMMアレイ1901及び活性化関数ブロック1902の1つのセットのみを含む。LSTMセル1900は、LSTMセル1800と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/4で済むので、LSTM1800よりも必要とするスペースが少ない。
【0162】
LSTMユニットは典型的には複数のVMMアレイを含み、これらは各々、合計器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることを更に理解することができる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。
ゲート付き回帰型ユニット
【0163】
アナログVMM実装は、ゲート付き回帰型ユニット(gated recurrent unit、GRU)システムに利用することができる。GRUは、反復ニューラルネットワーク内のゲート機構である。GRUは、GRUセルが一般にLSTMセルよりも少ない構成要素を含むことを除いて、LSTMに類似している。
【0164】
図20は、例示的なGRU2000を示す。この例におけるGRU2000は、セル2001、2002、2003及び2004を含む。セル2001は、入力ベクトルx
0を受け取り、出力ベクトルh
0を生成する。セル2002は、入力ベクトルx
1と、セル2001からの出力ベクトルh
0と、を受け取り、出力ベクトルh
1を生成する。セル2003は、入力ベクトルx
2と、セル2002からの出力ベクトル(隠れ状態)h
1と、を受け取り、出力ベクトルh
2を生成する。セル2004は、入力ベクトルx
3と、セル2003からの出力ベクトル(隠れ状態)h
2と、を受け取り、出力ベクトルh
3を生成する。追加のセルも使用可能であり、4つのセルを有するGRUは、単なる例である。
【0165】
図21は、
図20のセル2001、2002、2003、及び2004に使用され得るGRUセル2100の例示的な実装を示す。GRUセル2100は、入力ベクトルx(t)と、先行するGRUセルからの出力ベクトルh(t-1)と、を受け取り、出力ベクトルh(t)を生成する。GRUセル2100は、シグモイド関数デバイス2101及び2102を含み、それらのそれぞれが、出力ベクトルh(t-1)及び入力ベクトルx(t)からの成分に0~1の数を適用する。GRUセル2100はまた、入力ベクトルに双曲線正接関数を適用するためのtanhデバイス2103と、2つのベクトルを乗算するための複数の乗算器デバイス2104、2105、及び2106と、2つのベクトルを加算するための加算器デバイス2107と、1から入力を減算して出力を生成するための相補デバイス2108と、を含む。
【0166】
図22は、GRUセル2100の一実装の一例であるGRUセル2200を示す。読者の便宜のために、GRUセル2100からの同じ採番方法が、GRUセル2200で使用される。
図22から分かるように、シグモイド関数デバイス2101及び2102、並びにtanhデバイス2103はそれぞれ、複数のVMMアレイ2201及び活性化関数ブロック2202を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるGRUセルにおいて特に使用されることが分かる。乗算器デバイス2104、2105、2106、加算器デバイス2107、及び相補デバイス2108は、デジタル方式又はアナログ方式で実装される。活性化関数ブロック2202は、デジタル方式又はアナログ方式で実装され得る。
【0167】
GRUセル2200の代替例(及びGRUセル2300の一実装の別の例)を
図23に示す。
図23では、GRUセル2300は、VMMアレイ2301及び活性化関数ブロック2302を利用しており、シグモイド関数として構成された場合には、0~1の数を適用して、入力ベクトルのそれぞれの成分が出力ベクトルに寄与する程度を制御する。
図23では、シグモイド関数デバイス2101及び2102、並びにtanhデバイス2103は、同じ物理ハードウェア(VMMアレイ2301及び活性化関数ブロック2302)を、時分割多重化された方式で共有する。GRUセル2300はまた、2つのベクトルを乗算するための乗算器デバイス2303と、2つのベクトルを加算するための加算器デバイス2305と、1から入力を減算して、出力を生成するための相補デバイス2309と、マルチプレクサ2304と、値h(t-1)
*r(t)を、その値がマルチプレクサ2304を介して乗算器デバイス2303から出力されるときに保持するためのレジスタ2306と、値h(t-1)
*z(t)を、その値がマルチプレクサ2304を介して乗算器デバイス2303から出力されるときに保持するためのレジスタ2307と、値h^(t)
*(1-z(t))を、その値がマルチプレクサ2304を介して乗算器デバイス2303から出力されるときに保持するためのレジスタ2308と、を含む。
【0168】
GRUセル2200がVMMアレイ2201及び活性化関数ブロック2202の複数のセットを含むのに対し、GRUセル2300は、GRUセル2300の実施形態において複数の層を表すために使用される、VMMアレイ2301及び活性化関数ブロック2302の1つのセットのみを含む。GRUセル2300は、GRUセル2200と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/3で済むので、GRUセル2200よりも必要とするスペースが少ない。
【0169】
GRUシステムは典型的には複数のVMMアレイを含み、これらは各々、合計器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることが更に理解できる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。
【0170】
VMMアレイへの入力は、アナログレベル、バイナリレベル、又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが必要とされる)であり、出力はアナログレベル、バイナリレベル、又はデジタルビット(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが必要とされる)であり得る。
【0171】
VMMアレイ内の各メモリセルに関して、各重みwは、単一のメモリセルによって、又は差分セルによって、又は2つのブレンドメモリセル(2つのセルの平均)によって実装することができる。差動セルの場合では、重みwを差動重み(w=w+-w-)として実装するために、2つのメモリセルが必要とされる。2つのブレンドメモリセルの場合は、2つのセルの平均として重みwを実装するために2つのメモリセルが必要とされる。
出力回路
【0172】
図34Aは、出力ニューロン、I
NEU3406に適用されて、出力ニューロン電流をデジタルパルス又はデジタル出力ビットに変換する積分デュアル混合スロープ(integrating dual-mixed slope)アナログ-デジタル変換器(analog-to-digitai converter、ADC)3400を示す。
【0173】
一実施形態では、ADC3400は、ニューロン出力ブロック((
図32のニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hなど)内のアナログ出力電流をデジタルパルスに変換し、その幅は、ニューロン出力ブロック内のアナログ出力電流の大きさに比例して変動する。積分オペアンプ3401及び積分コンデンサ3402を含む積分器は、基準電流IREF3407に対して、メモリアレイ電流I
NEU3406(出力ニューロン電流である)を積分する。
【0174】
任意選択的に、IREF3407は、0の温度係数、又はニューロン電流INEU3406を追跡する温度係数を有するバンドギャップフィルタ含むことができる。後者は、任意選択的に、試験フェーズ中に決定された値を含む基準アレイから得ることができる。
【0175】
任意選択的に、回路が動作温度以上である間に較正ステップを実行して、アレイ又は制御回路内に存在する任意の漏れ電流をオフセットすることができ、その後はオフセット値を
図34B又は
図35BのIneuから差し引くことができる。
【0176】
初期化フェーズの間、スイッチ3408は閉じられる。次いで、Vout3403及び演算増幅器3401の負端子への入力は、VREFになる。その後、
図34Bに示すように、スイッチ33408は開かれ、一定時間trefの間、ニューロン電流I
NEU3406は、上積分(up-integrated)される。一定時間trefの間、Voutは上昇し、ニューロン電流が変化するにつれてその傾きは変化する。その後、期間tmeasの間、一定基準電流IREFは、時間tmeas(Voutが降下する期間)に、下積分(down integrated)され、tmeasは、VoutをVREFまで下積分するために必要とされる時間である。
【0177】
出力EC3405は、VOUT>VREFVのときに高くなり、そうでなければ低くなる。したがって、EC3405は、幅が期間tmeasを反映するパルスを生成し、期間tmeasは次に、電流I
NEU3406に比例する。
図34Bでは、tmeas=Ineu1である例の波形3410、及びtmeas=Ineu2である例の波形3412として、EC3405が示されている。したがって、出力ニューロン電流I
NEU3406は、デジタルパルスEC3405に変換され、デジタルパルスEC3405の幅は、出力ニューロン電流I
NEU3406の大きさに比例して変動する。
【0178】
電流I
NEU3406は、=tmeas/tref
*IREFである。例えば、10ビットの所望の出力ビット分解の場合、trefは、1024クロックサイクルに等しい時間である。期間tmeasは、INEU3406の値及びIrefの値に応じて0クロックサイクルに等しい期間から1024クロックサイクルまで変化する。
図34Bは、I
NEU3406=Ineu1であるもの、及びI
NEU3406=Ineu2を有するものといった、I
NEU3406の2つの異なる値の例を示す。したがって、ニューロン電流I
NEU3406は、充電の速度及び傾きに影響を及ぼす。
【0179】
任意選択的に、出力パルスEC3405は、別のVMMアレイの入力ブロックなどの、次の回路の段階への送信のために、均一な期間の一連のパルスに変換することができる。期間tmeasの開始時に、出力EC3405は、基準クロック3441を用いてANDゲート3440に入力される。出力は、VOUT>VREFの期間中、パルス系列3442(パルス系列3442のパルスの周波数はクロック3441の周波数と同じである)になる。パルスの数は、期間tmeasに比例し、期間tmeasは、電流INEU3406に比例する。
【0180】
任意選択的に、パルス系列3443を、カウンタ3420に入力することができ、カウンタ3420は、パルス系列3442のパルスの数をカウントし、ニューロン電流INEU3406に正比例するパルス系列3442におけるパルスの数のデジタルカウントであるカウント値3421を生成する。カウント値3421は、デジタルビットのセットを含む。別の実施形態では、積分デュアルスロープADC3400は、ニューロン電流INEU3407をパルスに変換することができ、パルスの幅は、ニューロン電流INEU3407の大きさに反比例している。この反転は、デジタル又はアナログ方式で行うことができ、後続の回路へ出力するための一連のパルス又はデジタルビットに変換することができる。
【0181】
図35Aは、出力ニューロン、I
NEU3504に適用されて、セル電流を変動する幅のデジタルパルス又は一連のデジタル出力ビットへと変換する積分デュアル混合スロープADC3500を示す。例えば、ADC3500は、ニューロン出力ブロック(
図32のニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hなど)内のアナログ出力電流をデジタル出力ビットのセットに変換するために使用され得る。積分オペアンプ3501及び積分コンデンサ3502を含む積分器は、基準電流IREF3503に対して、ニューロン電流I
NEU3504を積分する。スイッチ3505を閉じて、VOUTをリセットすることができる。
【0182】
初期化フェーズ中に、スイッチ3505は閉じられ、VOUTが電圧V
BIASに充電される。その後、
図35Bに示すように、スイッチ3505は開かれ、一定時間trefの間、セル電流I
NEU3504は、上積分される。その後、基準電流IREF3503は、Voutが接地に降下するまで、時間tmeasの間に下積分される。電流I
NEU3504=tmeas Ineu/treU
*IREF。例えば、10ビットの所望の出力ビット分解の場合、trefは、1024クロックサイクルに等しい時間である。期間tmeasは、I
NEU3504及びIrefの値に応じて0クロックサイクルに等しい期間から1024クロックサイクルまで変化する。
図35Bは、電流Ineu1を有するもの、及び電流Ineu2を有するものといった、2つの異なるIneu値の例を示す。したがって、ニューロン電流I
NEU3504は、充電及び放電の速度及び傾きに影響を及ぼす。
【0183】
出力3506は、VOUT>VREFのときに高くなり、そうでなければ低くなる。したがって、出力3506は、幅が期間tmeasを反映するパルスを生成し、tmeasは次に、電流I
NEU3404に比例する。
図35Bでは、tmeas=Ineu1である例の波形3512、及びtmeas=Ineu2である例の波形3515として、出力3506が示されている。したがって、出力ニューロン電流I
NEU3504は、パルス、出力3506に変換され、パルスの幅は、出力ニューロン電流I
NEU3504の大きさに比例して変動する。
【0184】
任意選択的に、出力3506は、別のVMMアレイの入力ブロックなどの、次の回路の段階への送信のために、均一な期間の一連のパルスに変換することができる。期間tmeasの開始時に、出力3506は、基準クロック3507を用いてANDゲート3508に入力される。出力は、VOUT>VREFの期間中、パルス系列3509(パルス系列3509のパルスの周波数は基準クロック3507の周波数と同じである)になる。パルスの数は、期間tmeasに比例し、期間tmeasは、電流INEU3504に比例する。
【0185】
任意選択的に、パルス系列3509を、カウンタ3510に入力することができ、カウンタ3510は、パルス系列3509のパルスの数をカウントし、波形3514、3517によって示されるように、ニューロン電流INEU3504に正比例するパルス系列3509におけるパルスの数のデジタルカウントであるカウント値3511を生成する。カウント値3511は、デジタルビットのセットを含む。
【0186】
別の実施形態では、積分デュアルスロープADC3500は、ニューロン電流INEU3504をパルスに変換することができ、パルスの幅は、ニューロン電流INEU3504の大きさに反比例している。この反転は、デジタル又はアナログ方式で行うことができ、後続の回路へ出力するための1つ以上のパルス又はデジタルビットに変換することができる。
【0187】
図35Bは、I
NEU3504について、それぞれ2つのニューロン電流値Ineu1及びIneu2のカウント値3511(デジタルビット)を示す。
【0188】
図36A及び
図36Bは、動作中にVMMで実行される例示的な方法3600及び3650に関連する波形を示す。各方法3600及び3650において、ワード線WL0、WL1、及びWL2は、様々な異なる入力を受信し、これらの入力は任意選択的に、アナログ電圧波形に変換してワード線に適用することができる。これらの実施例では、電圧VCは、第1のVMMの出力ブロック内のADC3400又は3500内の、それぞれ
図34A及び
図35Aの積分コンデンサ3402又は3502の電圧を表し、OTパルス(=「1」)は、ニューロンの出力(ニューロンの値に比例する)が積分デュアルスロープADC3400又は3500を使用して捕捉される期間を表す。
図34及び
図35を参照して説明されたように、出力ブロックの出力は、第1のVMMの出力ニューロン電流に比例して変化する幅のパルスであってもよく、又はパルスの数が第1のVMMのニューロン電流に比例して変化する、均一な幅の一連のパルスであってもよい。次いで、これらのパルスは、第2のVMMへの入力として適用され得る。
【0189】
方法3600の間、一連のパルス(パルス系列3442又はパルス系列3509など)、又は一連のパルスから導出されるアナログ電圧は、第2のVMMアレイのワード線に印加される。あるいは、一連のパルス、又は一連のパルスから導出されるアナログ電圧を、第2のVMMアレイ内のセルの制御ゲートに印加することができる。パルスの数(又はクロックサイクル)は、入力の大きさに直接対応する。この特定の例では、WL1の入力の大きさはWL0の入力の大きさに対して4倍である(4パルス対1パルス)。
【0190】
方法3650の間、様々な幅の単一パルス(EC3405又は出力3506など)、又は単一パルスから導出される(derives)アナログ電圧は、第2のVMMアレイのワード線に印加されるが、パルスは可変パルス幅を有する。あるいは、パルス又はパルスから導出されるアナログ電圧を、制御ゲートに印加することができる。単一パルスの幅は、入力の大きさに直接対応する。例えば、WL1の入力の大きさはWL0の入力の大きさに対して4倍である(WL1パルス幅は、WL0パルス幅に対して4倍である)。
【0191】
更に、
図36Cを参照すると、タイミング制御回路3670を使用して、VMMアレイの出力及び入力インターフェースを管理し、様々な出力又は様々な入力の変換を順次分割することによって、VMMシステムの電力を管理することができる。
図56は、電力管理方法5600を描く。第1のステップは、ベクトル行列乗算アレイの複数の入力を受信する(ステップ5601)。第2のステップは、複数の入力を複数の入力のセットに編成する(ステップ5602)。第3のステップは、複数の入力のセットのそれぞれをアレイに順次提供する(ステップ5603)。
【0192】
電力管理方法5600の一実施形態は、以下である。VMMシステム(VMMアレイのワード線又は制御ゲートなど)への入力は、経時的に順次適用することができる。例えば、512個のワード線入力を有するVMMアレイの場合、ワード線入力は、4つの群、WL0~127、WL128~255、WL256~383、及びWL383~511に分割することができる。各群は、異なる時間に有効化することができ、出力読み出し動作を、
図34~
図36の出力積分回路などによって、4つのワード線群のうちの1つに対応する群に対して実行する(ニューロン電流をデジタルビットに変換する)ことができる。次いで、4つの群のそれぞれが順番に読み取られた後、出力デジタルビット結果を一緒に組み合わせる。この動作は、タイミング制御回路3670によって制御され得る。
【0193】
別の実施形態では、タイミング制御回路3670は、
図33のアナログニューロメモリシステム3300などのベクトル行列乗算システムで電力管理を実行する。タイミング制御回路3670は、異なる時間に入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hを有効にすることなどによって、入力を経時的に順次VMMサブシステム3333に適用させることができる。同様に、タイミング制御回路3670は、異なる時間にニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hを有効にすることなどによって、VMMサブシステム333からの出力を経時的に順次読み出させることができる。
【0194】
図57は、電力管理方法5700を示す。第1のステップは、ベクトル行列乗算アレイから複数の出力を受信する(ステップ5701)。次のステップは、アレイからの複数の出力を複数の出力のセットに編成する(ステップ5702)。次のステップは、複数の出力のセットのそれぞれを変換器回路に順次提供する(ステップ5703)。
【0195】
電力管理方法5700の一実施形態は、以下である。電力管理は、異なる時間にニューロン出力群を順次読み出すことによって、つまり、複数のニューロン出力(ビット線)にわたる出力回路(出力ADC回路など)を多重化することによって、タイミング制御回路3670により実施することができる。ビット線は、異なる群に配置され得、出力回路は、タイミング制御回路3670の制御下で、一度に1つの群で順次に動作する。
【0196】
図58は、電力管理方法5800示す。複数のアレイを含むベクトル行列乗算システムにおいて、第1のステップは、複数の入力を受信する。次のステップは、複数のアレイのうちの1つ以上を順次有効にして、複数の入力のうちのいくつか又は全てを受信することである(ステップ5802)。
【0197】
電力管理方法5800の一実施形態は、以下である。タイミング制御回路3670は、一度に1つのニューラルネットワーク層で動作することができる。例えば、1つのニューラルネットワーク層が第1のVMMアレイ内に表され、第2のニューラルネットワーク層が第2のVMMアレイ内に表される場合、出力読み出し動作(ニューロン出力がデジタルビットに変換される場合など)は、一度に1つのVMMアレイで順次に実行され、それによってVMMシステムの電力を管理することができる。
【0198】
別の実施形態では、タイミング制御回路3670は、
図33に示すように、複数のニューロメモリサブシステム3333又は複数のマクロ3301を順次に有効にすることによって動作することができる。
【0199】
別の実施形態では、タイミング制御回路3670は、非アクティブ期間中(順次有効になるオンとオフとの間の休止期間を意味する)にアレイバイアスを放電することなく、
図33に示すような複数のニューロメモリサブシステム3333又は複数のマクロ3301を順次有効にすることによって動作することができる(例えば、制御ゲートCGに対してワード線WL及び/若しくはビット線BLを入力として、かつビット線(bitltine)BLを出力としてバイアスするか、又はワード線WLに対して制御ゲートCG及び/若しくはビット線BLを入力として、かつビット線BLを出力としてバイアスする)。これは、1つ以上の読み出し動作中に(例えば、推論又は分類動作中に)複数回使用されるアレイバイアスを、再び不必要な放電及び充電から節電することである。
【0200】
図37~
図44は、
図33の入力回路ブロック3303a、3303b、3303c、3303d、3303e、3303f、3303g、及び3303hなどのVMM入力ブロック、又は
図33のニューロン出力ブロック3302a、3302b、3302c、3302d、3302e、3302f、3302g、及び3302hなどのニューロン出力ブロックにおいて使用され得る様々な回路を示す。
【0201】
図37は、任意選択的に使用して、積分デュアルスロープADC3400又は3500によって生成されたデジタルパルスを電圧に変換することができるパルス-電圧変換器3700を示し、この電圧は、例えば、VMMメモリアレイの(例えば、WL線又はCG線の)入力として印加され得る。パルス-電圧変換器3700は、基準電流IREFを生成する基準電流発生器3701、コンデンサ3702、及びスイッチ3703を備える。入力はスイッチ3703を制御するために使用される。パルスが入力に受信されると、スイッチが閉じられ、電荷がコンデンサ3702に蓄積され、結果として入力信号が完了した後のコンデンサ3702の電圧は、受信されたパルスの数を示すことになる。コンデンサは、任意選択的に、ワード線又は制御ゲート電気容量であり得る。
【0202】
図38は、任意選択的に使用して、ニューロン出力電流を電圧に変換することができる電流-電圧変換器3800を示し、この電圧は、例えば、VMMメモリアレイの(例えば、WL線又はCG線の)入力として印加され得る。電流-電圧変換器3800は、ここでは、受信したニューロン電流、ineu(又はIin)を表す電流発生器3801、及び可変抵抗器3802を備える。出力Voutは、ニューロン電流が増加するにつれて、サイズが増大する。可変抵抗器3802は、所望に応じて、Voutの最大範囲を増加又は減少させるように調整することができる。
【0203】
図39は、任意選択的に使用して、ニューロン出力電流を電圧に変換することができる電流-電圧変換器3900を示し、この電圧は、例えば、VMMメモリアレイの(例えば、WL線又はCG線の)入力として印加され得る。電流-電圧変換器3900は、オペアンプ3901、コンデンサ3902、スイッチ3903、スイッチ3904、及びここでニューロン電流ICELLを表す電流源3905を備える。動作中、スイッチ3903は開かれ、スイッチ3904は閉じられる。出力Voutは、ニューロン電流ICELL3905の大きさに比例して振幅を増加させる。
【0204】
図40は、任意選択的に使用して、ニューロン出力電流を対数電圧に変換することができる電流-対数電圧変換器4000を示し、この対数電圧は、例えば、VMMメモリアレイの(例えば、WL線又はCG線の)入力として印加され得る。電流-対数電圧変換器4000は、メモリセル4001、スイッチ4002(メモリセル4001のワード線端子を、Voutを生成するノードに選択的に接続する)、及びここではニューロン電流IiNを表す電流源4003を含む。動作中、スイッチ4002は閉じられ、出力Voutは、ニューロン電流iINの大きさに比例して振幅を増加させる。
【0205】
図41は、任意選択的に使用して、ニューロン出力電流を対数電圧に変換することができる電流-対数電圧変換器4100を示し、この対数電圧は、例えば、VMMメモリアレイの(例えば、WL線又はCG線の)入力として印加され得る。電流-対数電圧変換器4100は、メモリセル4101、スイッチ4102(メモリセル4101の制御ゲート端子を、Voutを生成するノードに選択的に接続する)、及びここではニューロン電流IiNを表す電流源4103を含む。動作中、スイッチ4102は閉じられ、出力Voutは、ニューロン電流IiNの大きさに比例して振幅を増加させる。
【0206】
図42は、任意選択的に使用して、デジタルデータ(すなわち、0及び1のデータ)を電圧に変換することができるデジタルデータ-電圧変換器4200を示し、この電圧は、例えば、VMMメモリアレイの(例えば、WL線又はCG線の)入力として印加され得る。デジタルデータ-電圧変換器4200は、コンデンサ4201、調節可能な電流源4202(ここでは、メモリセルの基準アレイからの電流である)、及びスイッチ4203を含む。デジタルデータはスイッチ4203を制御する。例えば、デジタルデータが「1」であるときにスイッチ4203を閉じることができ、デジタルデータが「0」であるときに開くことができる。コンデンサ4201に蓄積された電圧は出力OUTであり、デジタルデータの値に対応する。任意選択的に、コンデンサは、ワード線又は制御ゲート電気容量であり得る。
【0207】
図43は、任意選択的に使用して、デジタルデータ(すなわち、0及び1)を電圧に変換することができるデジタルデータ-電圧変換器4300を示し、この電圧は、例えば、VMMメモリアレイの(例えば、WL線又はCG線の)入力として印加され得る。デジタルデータ-電圧変換器4300は、可変抵抗器4301、調節可能な電流源4302(ここでは、メモリセルの基準アレイからの電流である)、及びスイッチ4303を含む。デジタルデータはスイッチ4303を制御する。例えば、デジタルデータが「1」であるときにスイッチ4303を閉じることができ、デジタルデータが「0」であるときに開くことができる。出力電圧は、デジタルデータの値に対応する。
【0208】
図44は、
図42及び
図43における調節可能な電流源4202及び4302の基準電流を提供するために使用することができる基準アレイ4400を示す。
【0209】
図45~
図47は、プログラミング動作後に、VMM内のフラッシュメモリセルが、そのフラッシュメモリセルに格納されることが意図されるW値に対応する適切な電荷を含むことを検証するための構成要素を示す。
【0210】
図45は、デジタル入力としてW値の基準セットを受信し、いくつかのプログラムされたフラッシュメモリセルから検知されたWデジタル値を受信するデジタル比較器4500を示す。デジタル比較器4500は、1つ以上のフラッシュメモリセルが正しい値でプログラムされていないことを示す不整合が存在する場合にフラグを生成する。
【0211】
図46は、変換器4600と協働する
図45のデジタル比較器4500を示す。検知されたW値は、変換器4600の複数のインスタンス化によって提供される。変換器4600は、フラッシュメモリセルからセル電流ICELLを受信し、そのセル電流を、ADC3400又は3500などの前述した変換器のうちの1つ以上を使用して、デジタル比較器4500に提供され得るデジタルデータに変換する。
【0212】
図47は、アナログ入力としてW値の基準セットを受信し、いくつかのプログラムされたフラッシュメモリセルから検知されたWアナログ値を受信するアナログ比較器4700を示す。アナログ比較器4700は、1つ以上のフラッシュメモリセルが正しい値でプログラムされていないことを示す不整合が存在する場合にフラグを生成する。
【0213】
図48は、変換器4800と協働する
図47のアナログ比較器4700を示す。検知されたW値は、変換器4800によって提供される。変換器4800は、感知されたW値のデジタル値を受信し、(パルス-電圧変換器3700、デジタルデータ-電圧変換器4200、又はデジタルデータ-電圧変換器4300など)前述した変換器のうちの1つ以上を使用して、アナログ比較器4700に提供することができるアナログ信号に変換する。
【0214】
図49は、出力回路4900を示す。(前述の積分デュアルスロープADC3400又は3500を使用することなどによって)ニューロンの出力がデジタル化される場合は、ニューロン出力に対して活性化関数を実行する必要が依然としてあり得ることを理解されたい。
図49は、ニューロン出力が可変幅のパルス又はパルス系列に変換される前に活性化が生じる実施形態を示す。出力回路4900は、活性化回路4901及び電流-パルス変換器4902を備える。活性化回路は、様々なフラッシュメモリセルからIneuron値を受信し、受信したIneuron値の総和であるIneuron_actを生成する。次に、電流-パルス変換器4902は、Ineuron_actを一連のデジタルパルス及び/又は一連のデジタルパルスのカウントを表すデジタルデータに変換する。前述した他の変換器(積分デュアルスロープADC3400又は3500など)は、変換器4902の代わりに使用することができる。
【0215】
別の実施形態では、活性化は、デジタルパルスが生成された後に生じ得る。この実施形態では、デジタル出力ビットは、アクティブ化マッピングテーブル又はアクティブ化マッピングユニット5010によって実装される機能を使用して、新しいデジタルビットのセットにマッピングされる。このようなマッピングの例は、
図50及び
図51にグラフで示されている。活性化デジタルマッピングは、シグモイド、tanh、ReLu、又は任意の活性化関数をシミュレートすることができる。更に、活性化デジタルマッピングは、出力ニューロンを量子化することができる。
【0216】
図52は、プログラミング動作後の検証動作中にVMMの出力を合計して、出力を表す単一のアナログ値を得るために使用できる電荷合計器5200の例を示しており、この単一のアナログ値は、任意選択的にデジタルビット値に変換することができる。電荷合計器5200は、電流源5201と、スイッチ5202及びサンプルアンドホールド(sample-and-hold、S/H)コンデンサ5203を含むサンプルアンドホールド回路と、を含む。4ビットのデジタル値の例で示されるように、4つの評価パルスからの値を保持するための4つのS/H回路が存在し、これらの値はプロセスの終了時に合計される。S/Hコンデンサ5203は、そのS/Hコンデンサの2^n
*DINnビット位置に関連付けられる比率で選択され、例えば、C_DIN3=x8 Cu、C_DIN2=x4 Cu、C_DIN1=x2 Cu、DIN0=x1 Cuである。電流源5201もまた、それに応じて比率が乗じられる。
【0217】
図53は、プログラミング動作後の検証動作中にVMMの出力を合計するために使用できる電流合計器5300を示す。電流合計器5300は、電流源5301、スイッチ5302、スイッチ5303及び5304、並びにスイッチ5305を含む。4ビットのデジタル値の例で示されるように、4つの評価パルスからの値を保持するための電流源回路が存在し、これらの値はプロセスの終了時に合計される。電流源は、2^n
*DINnビット位置に基づいて比率が乗じられ、例えば、I_DIN3=x8 Icell単位、I_DIN2=x4 Icell単位、I_DIN1=x2 Icell単位、I_DIN0=x1 Icell単位である。
【0218】
図54は、複数のデジタル値を受信し、それらを一緒に合計し、入力の和を表す出力DOUTを生成する、デジタル合計器5400を示す。デジタル合計器5400は、プログラミング動作後の検証動作中に使用することができる。4ビットのデジタル値の例で示されるように、4つの評価パルスからの値を保持するためのデジタル出力ビットが存在し、これらの値はプロセスの終了時に合計される。デジタル出力は、2^n
*DINnビット位置に基づいてデジタルでスケーリングされ、例えば、DOUT3=x8 DOUT0、_DOUT2=x4 DOUT1、I_DOUT1=x2 DOUT0、I_DOUT0=DOUT0である。
【0219】
図55A及び
図55Bは、入力ブロック、行デコーダ、又は出力ブロック内で使用されるデジタルビット-パルス幅変換器5500を示す。デジタルビット-パルス幅変換器5500から出力されるパルス幅は、
図36Bに関連して上述したように、その値に比例する。デジタルビット-パルス幅変換器は、バイナリカウンタ5501を含む。バイナリカウンタ5501の状態Q[N:0]は、ロードシーケンス内のシリアルデータ又はパラレルデータによってロードされ得る。行制御論理5510は、
図34及び
図35の積分ADCなどのブロックから提供されるデジタルデータ入力の値に比例するパルス幅を有する電圧パルスを出力する。
【0220】
図55Bは、そのデジタルビット値に比例する幅を有する出力パルス幅の波形を示す。最初に、受信されたデジタルビット内のデータが反転され、反転された桁ビットは、カウンタ5501にシリアル又はパラレルのどちらかでロードされる。次いで、行パルス幅は、最大カウンタ値に達するまで、バイナリ方式でカウントすることによって、波形5520に示されるように行制御論理5510によって生成される。
【0221】
任意選択的に、パルス系列-パルス変換器を使用して、パルス系列(
図34Bの信号3411又は3413、及び
図35Bの信号3513又は3516など)、を含む出力を、VMMアレイ内のワード線又は制御ゲートに適用されるVMMアレイへの入力として使用される、パルス系列のパルス数に比例して幅が変化する単一パルス(
図36Bの信号WL0、WL1及びWLeなど)に変換することができる。パルス系列-パルス変換器の例は、制御論理を有するバイナリカウンタである。
【0222】
例は、4ビットデジタル入力に関して表9に示される通りである。
表9:出力パルス幅へのデジタル入力ビット
【表9】
【0223】
別の実施形態は、アップバイナリカウンタ及びデジタル比較論理を使用する。すなわち、出力パルス幅は、バイナリカウンタのデジタル出力がデジタル入力ビットと同じになるまで、アップバイナリカウンタをカウントすることによって生成される。
【0224】
別の実施形態は、ダウンバイナリカウンタを使用する。最初に、ダウンバイナリカウンタは、デジタルデータ入力パターンとシリアル又はパラレルにロードされる。次いで、出力パルス幅は、バイナリカウンタのデジタル出力が最小値、すなわち「0」論理状態に達するまでダウンバイナリカウンタをカウントダウンすることによって生成される。
【0225】
別の実施形態では、アナログ-デジタル変換器の分解能は、制御信号によって構成することができる。
図60は、プログラム可能ADC6000を示す。プログラム可能ADC6000は、出力ニューロン電流Ineuなどのアナログ信号を受信し、それを、デジタルビットのセットを備える出力6002に変換する。プログラム可能ADC600は、アナログ制御信号又はデジタル制御ビットのセットであり得る構成6001を受信する。一例では、出力6002の分解能は、構成6001によって決定される。例えば、構成6001が第1の値を有する場合、出力は、4ビットのセットであり得るが、構成6001が第2の値を有する場合、出力は、8ビットのセットであり得る。
【0226】
粗いレベル感知回路(図示せず)を使用して、複数のアレイ出力電流をサンプリングすることができ、この電流の値に基づいて、利得(スケーリング係数)を構成することができる。
【0227】
利得は、特定のニューラルネットワークごとに構成することができ、利得は、最良の性能のためにニューラルネットワークトレーニング中に設定することができる。
【0228】
別の実施形態では、ADCは、上述のアーキテクチャのハイブリッドであり得る。例えば、第1のADCは、SAR ADCとスロープADCとのハイブリッドであり得る。第2のADCは、SAR ADC及びランプADCのハイブリッドであってもよく、第3のADCは、アルゴリズム型ADC及びランプADCのハイブリッドであってもよく、限定されない。
【0229】
図61Aは、ハイブリッド出力変換ブロック6100を示す。出力ブロック6100は、差動信号IW+及びIW-を受信する。逐次近似レジスタADC6101は、差動信号IW+及びIW-を受信し、IW+及びIW-によって表されるアナログ値に最もよく対応する上位デジタルビット(例えば、8ビットデジタル表現における最上位ビットB7~B4)を決定する。SAR ADC6101がそれらの上位ビットを決定すると、信号IW+及びIW-から上位ビットによって表される値を引いたものを表すアナログ信号が、シリアルADCブロック6102(スロープADC又はランプADCなど)に提供され、次いで、シリアルADCブロック6102が、その差に対応する下位ビット(例えば、8ビットデジタル表現における最下位ビットB3~B0)を決定する。次に、上位ビット及び下位ビットを直列に結合して、入力信号IW+及びIW-を表すデジタル出力を生成する。
【0230】
図61Bは、出力ブロック6110を示す。出力ブロック6110は、差動信号IW+及びIW-を受信する。アルゴリズム型ADC6103は、IW+及びIW-に対応する上位ビット(例えば、8ビットデジタル表現におけるビットB7~B4)を決定し、次いで、シリアルADCブロック6104は、下位ビット(例えば、8ビットデジタル表現の場合、ビットB3~B0)を決定する。
【0231】
図61Cは、出力ブロック6120を示す。出力ブロック6120は、差動信号IW+及びIW-を受信する。出力ブロック6120は、異なる変換方式(
図61A及び
図61Bに示されるものなど)を1つの回路に組み合わせることによって、差動信号IW+及びIW-をデジタルビットに変換する、ハイブリッドADCを含む。
【0232】
図62は、構成可能なシリアルADC6200を示す。シリアルADC6200は、出力ニューロン電流Ineuを積分コンデンサ6202(Cint)に積分する積分器6270を含む。
【0233】
一実施形態では、VRAMP6250が、比較器6204の反転入力に提供される。この場合、IREF6251はオフである。デジタル出力(カウント値)6221は、比較器6204が極性を切り替えるまでVRAMP6250をランプすることによって生成され、カウンタ6220は、ランプの開始から比較器6204が極性を切り替えるまでクロックパルスをカウントし、その時点でカウンタ6220はデジタル出力(カウント値)6221を提供する。
【0234】
別の実施形態では、VREF6255が、比較器6204の反転入力に提供される。VOUT6203は、VOUT6203がVREF6255に達するまで、ランプ電流6251(IREF)によってランプダウンされ、その時点で、EC6205信号がカウンタ6220のカウントを無効にし、その時点で、カウンタ6220がデジタル出力(カウント値)6221を提供する。(nビット)ADC6200は、目標アプリケーションに応じて、より低い精度(nビットよりも少ない)又はより高い精度(nビットよりも多い)を有するように構成可能である。精度のコンフィギュアビリティは、限定することなく、コンデンサ6202の静電容量、電流6251(IREF)、VRAMP6250のランピング速度、又はクロック6241のクロック周波数を構成することによって行われる。
【0235】
別の実施形態では、VMMアレイのADC回路は、nビットよりも低い精度を有するように構成され、別のVMMアレイのADC回路は、ビットよりも高い精度を有するように構成される。
【0236】
別の実施形態では、1つのニューロン回路のシリアルADC回路6200の1つのインスタンスは、次のニューロン回路のシリアルADC回路6200の別のインスタンスと組み合わせて、シリアルADC回路6200の2つのインスタンスの積分コンデンサ6202を組み合わせることによってなど、nビットよりも高い精度を有するADC回路を生成するように構成されている。
【0237】
図63は、構成可能なニューロンSAR(逐次近似レジスタ)ADC6300を示す。この回路は、基準電圧VREFに基づいて、電圧入力Vinをデジタル出力6306に変換する、バイナリコンデンサを使用する電荷再分配に基づく逐次近似変換器である。ADC6300は、バイナリコンデンサDAC(capacitor DAC、CDAC)6301、オペアンプ/比較器6302、並びにSAR論理及びレジスタ6303を含む。示されるように、GndV6304は、低電圧基準レベル、例えば、接地レベルである。SAR論理及びレジスタ6303は、デジタル出力6306を提供する。他の非バイナリコンデンサ構造は、重み付けされた基準電圧又は出力による補正を用いて実装され得る。
【0238】
図64は、次のSAR ADCと組み合わせてパイプライン方式でビット数を増加させるために使用され得るパイプライン型SAR ADC回路6400を示す。SAR ADC回路6400は、バイナリCDAC6401、オペアンプ/比較器6402、オペアンプ/比較器6403、並びにSAR論理及びレジスタ6404を備える。示されるように、GndVは、低電圧基準レベル、例えば、接地レベルである。SAR論理及びレジスタ6404は、デジタル出力6406を提供する。Vinは入力電圧であり、VREFは基準電圧である。V残余は、コンデンサ6405によって生成され、SAR ADC変換シーケンスの次のステージへの入力として提供される。
【0239】
図65は、ハイブリッド方式でビット数を増加させるために使用され得るハイブリッドSAR+シリアルADC回路6500を示す。SAR ADC回路6500は、バイナリCDAC6501、オペアンプ/比較器6502、並びにSAR論理及びレジスタ6503を備える。示されるように、GndVは、低電圧基準レベル、例えば、SAR ADC動作中の接地レベルである。SAR論理及びレジスタ6503は、デジタル出力を提供する。Vinは入力電圧であり、VREFは基準電圧である。VREFRAMPは、オペアンプ/比較器6502へのGndV入力の代わりに、シリアルADC動作中に基準ランプ電圧として使用される。
【0240】
ハイブリッドADCアーキテクチャの他の例は、SAR ADC+シグマデルタADC、フラッシュADC+シリアルADC、パイプライン型ADC+シリアルADC、シリアルADC+SAR ADC、及び他のアーキテクチャを含む。
【0241】
図66は、アルゴリズム型ADC出力ブロック6600を示す。出力ブロック6600は、示されるように構成された、サンプルホールド回路6601と、1bアナログ-デジタル変換器6602と、デジタル-アナログ変換器6603と、合計器6604と、演算増幅器6605と、制御スイッチ6606及び6607と、を含む。
【0242】
別の実施形態では、サンプルホールド回路が、VMMアレイ内の各行への入力のために使用される。例えば、入力がDACを含む場合、DACはサンプルホールド回路を含むことができる。
【0243】
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「に間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に伴わずに形成すること、及びその要素を基板に間接的に1つ以上の中間材料/要素をそれらの間に伴って形成することを含み得る。
【手続補正書】
【提出日】2024-02-15
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0125
【補正方法】変更
【補正の内容】
【0125】
図13は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1300を示す。VMMアレイ1300は、不揮発性メモリセルのメモリアレイ1303と、第1の不揮発性基準メモリセルの基準アレイ1301と、第2の不揮発性基準メモリセルの基準アレイ1302と、を含む。基準アレイ1301及び1302は、VMMアレイ1300の行方向に延びる。VMMアレイは、VMMアレイ1300においてワード線が垂直方向に延びることを除いて、VMM1000と同様である。ここで、入力はワード線(WLA0、WLB0、WLA1、WLB
1、WLA2、WLB2、WLA3、WLB3)に提供され、出力は、読み出し動作中にソース線(SL0、SL1)に現れる。各ソース線の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0131
【補正方法】変更
【補正の内容】
【0131】
図15は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1500を示す。VMMアレイ1500は、不揮発性メモリセルのメモリアレイ1503と、
第1の不揮発性基準メモリセルの基準アレイ150
1と、第2の不揮発性基準メモリセルの基準アレイ1502と、を備える。EG線EGR0、EG0、EG1、及びEGR1は垂直に延び、CG線CG0、CG1、CG2、及びCG3並びにSL線WL0、WL1、WL2、及びWL3は水平に延びる。VMMアレイ1500は、VMMアレイ1500が双方向チューニングを実装することを除いてVMMアレイ1400と同様であり、各個々のセルは、個別のEG線の使用により、浮遊ゲートの所望の電荷量に達するために、完全に消去され、部分的にプログラムされ、必要に応じて部分的に消去することができる。示されるように、基準アレイ1501及び1502は、端子BLR0、BLR1、BLR2及びBLR3における入力電流を制御ゲート電圧CG0、CG1、CG2及びCG3に変換し(マルチプレクサ1514を介したダイオード接続された基準セルの作用を通じて)、これらの電圧は行方向でメモリセルに印加される。電流出力(ニューロン)は、ビット線BL0~BLN中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0145
【補正方法】変更
【補正の内容】
【0145】
システム制御ブロック3304は、一般的な制御機能及び演算動作を処理するためのARM/MIPS/RISC_Vコアなどの1つ以上のマイクロコントローラコアを含んでもよい。システム制御ブロック3304はまた、単一の命令を用いて複数のデータで動作するSIMD(単一命令多重データ)ユニットを含んでもよい。システム制御ブロック3304は、DSPコアを含んでもよい。システム制御ブロック3304は、限定することなく、プール、平均、最小、最大、ソフトマックス、加算、減算、乗算、除算、ログ、アンチログ、ReLu、シグモイド、tanhなどの関数、及びデータ圧縮を実行するためのハードウェア又はソフトウェアを含んでもよい。システム制御ブロック3304は、活性化の近似器/量子化器/正規化器などの機能を実行するハードウェア又はソフトウェアを含んでもよい。システム制御ブロック3304は、入力データの近似器/量子化器/正規化器などの機能を実行する能力を含み得る。ニューロメモリサブシステム3333の制御ブロックは、マイクロコントローラコア、SIMDコア、DSPコア、及び他の機能ユニットなどのシステム制御ブロック3304の同様の要素を含んでもよい。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0176
【補正方法】変更
【補正の内容】
【0176】
初期化フェーズの間、スイッチ3408は閉じられる。次いで、Vout3403及び演算増幅器3401の負端子への入力は、VREFになる。その後、
図34Bに示すように、スイッ
チ3408は開かれ、一定時間trefの間、ニューロン電流I
NEU3406は、上積分(up-integrated)される。一定時間trefの間、Voutは上昇し、ニューロン電流が変化するにつれてその傾きは変化する。その後、期間tmeasの間、一定基準電流IREFは、時間tmeas(Voutが降下する期間)に、下積分(down integrated)され、tmeasは、VoutをVREFまで下積分するために必要とされる時間である。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0190
【補正方法】変更
【補正の内容】
【0190】
方法3650の間、様々な幅の単一パルス(EC3405又は出力3506など)、又は単一パルスから導出される(derived)アナログ電圧は、第2のVMMアレイのワード線に印加されるが、パルスは可変パルス幅を有する。あるいは、パルス又はパルスから導出されるアナログ電圧を、制御ゲートに印加することができる。単一パルスの幅は、入力の大きさに直接対応する。例えば、WL1の入力の大きさはWL0の入力の大きさに対して4倍である(WL1パルス幅は、WL0パルス幅に対して4倍である)。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0204
【補正方法】変更
【補正の内容】
【0204】
図40は、任意選択的に使用して、ニューロン出力電流を対数電圧に変換することができる電流-対数電圧変換器4000を示し、この対数電圧は、例えば、VMMメモリアレイの(例えば、WL線又はCG線の)入力として印加され得る。電流-対数電圧変換器4000は、メモリセル4001、スイッチ4002(メモリセル4001のワード線端子を、Voutを生成するノードに選択的に接続する)、及びここではニューロン電流IiNを表す電流源4003を含む。動作中、スイッチ4002は閉じられ、出力Voutは、ニューロン電流
IiNの大きさに比例して振幅を増加させる。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0221
【補正方法】変更
【補正の内容】
【0221】
任意選択的に、パルス系列-パルス変換器を使用して、パルス系列(
図34Bの信号3411又は3413、及び
図35Bの信号3513又は3516など)、を含む出力を、VMMアレイ内のワード線又は制御ゲートに適用されるVMMアレイへの入力として使用される、パルス系列のパルス数に比例して幅が変化する単一パルス(
図36Bの信号WL0、WL1及びWL
2など)に変換することができる。パルス系列-パルス変換器の例は、制御論理を有するバイナリカウンタである。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0241
【補正方法】変更
【補正の内容】
【0241】
図66は、アルゴリズム型ADC出力ブロック6600を示す。出力ブロック6600は、示されるように構成された、サンプルホールド回路6601と
、アナログ-デジタル変換器6602と、デジタル-アナログ変換器6603と、合計器6604と、演算増幅器6605と、制御スイッチ6606及び6607と、を含む。
【国際調査報告】