(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-02-28
(54)【発明の名称】深層学習人工ニューラルネットワークにおける電気パラメータの較正
(51)【国際特許分類】
G11C 16/30 20060101AFI20250220BHJP
G11C 11/54 20060101ALI20250220BHJP
G11C 7/16 20060101ALI20250220BHJP
G06N 3/04 20230101ALI20250220BHJP
G06N 3/06 20060101ALI20250220BHJP
G06G 7/60 20060101ALI20250220BHJP
【FI】
G11C16/30 120
G11C11/54
G11C7/16
G06N3/04
G06N3/06
G06G7/60
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024537377
(86)(22)【出願日】2022-04-26
(85)【翻訳文提出日】2024-08-20
(86)【国際出願番号】 US2022026363
(87)【国際公開番号】W WO2023154073
(87)【国際公開日】2023-08-17
(32)【優先日】2022-02-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-04-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】トラン、ヒュー バン
【テーマコード(参考)】
5B225
【Fターム(参考)】
5B225BA02
5B225BA03
5B225CA13
5B225EA01
5B225EG08
5B225EG14
5B225FA01
5B225FA02
5B225FA06
(57)【要約】
深層学習人工ニューラルネットワークにおいて様々な電気パラメータの較正を実行するための多数の例が開示されている。一例では、方法は、人工ニューラルネットワーク内の1つ以上の不揮発性メモリセルに印加されるバイアス電圧を調整することと、人工ニューラルネットワーク内の1つ以上の不揮発性メモリセルに対して性能目標チェックを実行することと、電気パラメータが所定の範囲内にあることを性能目標チェックが示すまで、調整及び実行を繰り返すことと、を含む。
【選択図】
図35
【特許請求の範囲】
【請求項1】
方法であって、
人工ニューラルネットワーク内の1つ以上の不揮発性メモリセルに印加されるバイアス電圧を調整するステップと、
前記人工ニューラルネットワーク内の前記1つ以上の不揮発性メモリセルに対して性能目標チェックを実行するステップと、
電気パラメータが所定の範囲内にあることを前記性能目標チェックが示すまで、前記調整するステップ及び前記実行するステップを繰り返すステップと、
を含む、方法。
【請求項2】
前記電気パラメータはニューロン電流である、請求項1に記載の方法。
【請求項3】
前記電気パラメータは平均ニューロン電流である、請求項1に記載の方法。
【請求項4】
方法であって、
ある範囲の複数の電気パラメータを第1の不揮発性メモリシステムに適用し、結果として生じる特性を測定し、所定の目標範囲と比較することによって機械学習モデルを生成するステップと、
動作中に、前記機械学習モデルを使用して、前記第1の不揮発性メモリシステム又は第2の不揮発性メモリシステムに複数の電気パラメータを適用するステップと、
を含む、方法。
【請求項5】
前記電気パラメータは、前記第1の不揮発性メモリシステム又は第2の不揮発性メモリシステム内の1つ以上の不揮発性メモリセルに印加されるバイアス電圧を含む、請求項4に記載の方法。
【請求項6】
システムであって、
デジタル入力に応答して電流を生成する電流デジタル-アナログ変換器と、
第1の端子と、第2の端子と、第3の端子とを含む不揮発性メモリセルであって、前記第1の端子は前記電流デジタル-アナログ変換器から前記電流を受け取り、前記第3の端子は接地に結合され、前記第2の端子の電圧は、前記第1の端子の電圧が基準電圧を超えるか又は下回るまで調整され、前記第2の端子の電圧は次いで、バイアス電圧として不揮発性メモリセルのアレイに印加される、不揮発性メモリセルと、
を備える、システム。
【請求項7】
前記第2の端子は制御ゲート端子である、請求項6に記載のシステム。
【請求項8】
前記第2の端子は消去ゲート端子である、請求項6に記載のシステム。
【請求項9】
前記不揮発性メモリセルと直列のカスコーディングトランジスタを備える、請求項6に記載のシステム。
【請求項10】
前記不揮発性メモリセルの前記第1の端子にバイアス基準電圧を印加するように前記カスコーディングトランジスタのゲートを制御する演算増幅器を備える、請求項9に記載のシステム。
【請求項11】
前記カスコーディングトランジスタの第1の端子の電圧が第2の基準電圧を超えたか又は下回ったことを示す比較器を備える、請求項10に記載のシステム。
【請求項12】
前記不揮発性メモリセルは第4の端子を含み、前記第4の端子の電圧は、前記第1の端子の電圧が基準電圧を超えるか又は下回るまで調整され、前記第4の端子の電圧は次いで、第2のバイアス電圧として捕捉される、請求項6に記載のシステム。
【請求項13】
請求項12に記載のシステムであって、前記システムは、
バイアス制御回路であって、
前記第1の端子から電圧を受け取るための反転端子と、前記基準電圧を受け取るための非反転端子と、第1の出力とを含む、第1の演算増幅器と、
前記第1の演算増幅器から前記第1の出力を受け取って第2の出力を生成する、利得回路と、
を含み、
前記第1の出力は前記第2の端子の電圧であり、前記第2の出力は前記第4の端子の電圧である、
バイアス制御回路
を備える、システム。
【請求項14】
前記利得回路は、第2の演算増幅器と、入力抵抗器と、フィードバック抵抗器とを含む、請求項13に記載のシステム。
【請求項15】
方法であって、
不揮発性メモリセルのアレイを較正するステップと、
前記アレイの特性を測定するステップであって、前記特性は、熱事象が発生する電圧、温度、又は持続時間である、測定するステップと、
前記測定された特性を目標値と比較するステップと、
前記測定された特性が前記目標値と等しいか、又は所定の範囲内にある場合には、前記測定するステップ及び前記比較するステップを繰り返し、前記測定された特性が前記目標値と等しくなく、かつ、所定の範囲内にない場合には、前記較正するステップ、前記測定するステップ、及び前記比較するステップを繰り返すステップと、
を含む、方法。
【請求項16】
前記特性は前記電圧である、請求項15に記載の方法。
【請求項17】
前記特性は前記温度である、請求項15に記載の方法。
【請求項18】
前記特性は前記持続時間である、請求項15に記載の方法。
【請求項19】
方法であって、
不揮発性メモリセルのアレイを較正するステップと、
温度チェックを実行するステップであって、前記温度チェックは、温度を測定するステップと、前記測定された温度を目標温度と比較するステップとを含む、実行するステップと、
前記測定された温度が前記目標温度と等しいか又は所定の範囲内にある場合に、前記温度チェックを繰り返すステップと、
前記測定された温度が前記目標温度に等しくなく、かつ、所定の範囲内にない場合に、電圧チェックを実行するステップであって、前記電圧チェックは、前記アレイ内の電圧を測定するステップと、前記測定された電圧を目標電圧と比較するステップと、前記測定された電圧が前記目標電圧に等しいか、又は所定の範囲内にある場合に前記温度チェックを繰り返すステップと、前記測定された電圧が前記目標電圧に等しくない場合に前記較正を繰り返すステップと、を含む、実行するステップと、
を含む、方法。
【請求項20】
方法であって、
グローバルデジタル-アナログ変換器における第1の基準電圧を調整するステップと、
前記グローバルデジタル-アナログ変換器における第2の基準電圧を調整するステップと、
前記調整された第1の基準電圧及び前記調整された第2の基準電圧を前記グローバルデジタル-アナログ変換器内のトリム回路に印加して、前記グローバルデジタル-アナログ変換器の出力を調整する、印加するステップと、
前記グローバルデジタル-アナログ変換器を使用して、アレイ中の複数の行のバイアス電圧を生成するステップと、
を含む、方法。
【請求項21】
ローカルデジタル-アナログ変換器を較正するステップを含む、請求項20に記載の方法。
【請求項22】
システムであって、
バイアス制御回路と、
サンプリングされたニューロン電流を提供するアレイと、
前記アレイに結合された電流源と、
を備え、
前記アレイに印加される制御ゲートバイアス又は消去ゲートバイアスは、前記サンプリングされたニューロン電流が前記電流源の電流に等しくなるまで、前記バイアス制御回路によって調整される、
システム。
【請求項23】
システムであって、
バイアス制御回路と、
サンプリングされたニューロン電流を提供するアレイと、
ノードでアレイに結合された第1の端子と接地に結合された第2の端子とを含む抵抗器と、
を備え、
前記アレイに印加される制御ゲートバイアス又は消去ゲートバイアスは、前記ノードの電圧が基準電圧に等しくなるまで調整される、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本出願は、参照により本明細書に組み込まれる、2022年2月8日に出願され、「Calibration of Electrical Parameters Using Heuristics and Machine Learning in a Deep Learning Artificial Neural Network」と題する、米国仮特許出願第63/307,983号、及び2022年4月19日に出願された米国特許出願第17/724,415号の優先権を主張する。
【0002】
(発明の分野)
深層学習人工ニューラルネットワークにおいて様々な電気パラメータの較正を実行するための多数の例が開示されている。
【背景技術】
【0003】
人工ニューラルネットワークは、生物学的ニューラルネットワーク(動物の中枢神経系、特に脳)を模倣しており、多数の入力に依存し得、かつ、一般的に未知である関数を推定する又は近似するために使用される。人工ニューラルネットワークは、通常、お互いの間でメッセージを交換する相互接続した「ニューロン」の層を含む。
【0004】
図1は人工ニューラルネットワークを示しており、図中、円は、入力又はニューロンの層を例解する。接続(シナプスと呼ばれる)は、矢印によって表され、経験に基づいてチューニングされ得る数値の重みを有する。これにより、ニューラルネットワークは入力に適応し、学習可能になる。典型的には、ニューラルネットワークは、複数の入力の層を含む。典型的には、ニューロンの1つ以上の中間層、及びニューラルネットワークの出力を提供するニューロンの出力層が存在する。各レベルのニューロンが、シナプスから受信したデータに基づいて個々に又は集合的に決定を行う。
【0005】
高性能情報処理用の人工ニューラルネットワークの開発における主要な課題のうちの1つは、適切なハードウェア技術の欠如である。実際に、実用ニューラルネットワークは、非常に多数のシナプスに依拠しており、これによりニューロン間の高い接続性、すなわち、非常に高度な計算処理の並列化が可能となる。原理的には、このような複雑性は、デジタルスーパーコンピュータ又は専用グラフィックプロセッシングユニットクラスタによって実現が可能である。しかしながら、高コストに加え、これらのアプローチはまた、生物学的ネットワークが主として低精度のアナログ計算を実行するのではるかに少ないエネルギーしか消費しないのと比較して、エネルギー効率が劣っていることに悩まされている。人工ニューラルネットワークにはCMOSアナログ回路が使用されてきたが、ほとんどのCMOS実装シナプスは、多数のニューロン及びシナプスを前提とすると、嵩高過ぎていた。
【0006】
出願人は以前に、参照により組み込まれる米国特許出願公開第2017/0337466(A1)号において、シナプスとして1つ以上の不揮発性メモリアレイを利用する人工(アナログ)ニューラルネットワークを開示した。不揮発性メモリアレイは、アナログニューラルメモリとして動作し、行及び列に配置された不揮発性メモリセルを備える。ニューラルネットワークは、第1の複数の入力を受け取って、それから第1の複数の出力を生成するように構成されている第1の複数のシナプス、及び第1の複数の出力を受け取るように構成された第1の複数のニューロンを含む。第1の複数のシナプスは複数のメモリセルを含み、メモリセルの各々は、半導体基板内に形成された、間にチャネル領域が延在する離間したソース領域及びドレイン領域と、チャネル領域の第1の部分の上方に絶縁されて配設される浮遊ゲートと、チャネル領域の第2の部分の上方に絶縁されて配設される非浮遊ゲートと、を含む。複数のメモリセルの各々は、浮遊ゲートの多くの電子に対応する重み値を記憶する。複数のメモリセルは、第1の複数の入力に、記憶された重み値を乗算して第1の複数の出力を生成する。
<不揮発性メモリセル>
【0007】
不揮発性メモリは、周知である。例えば、参照により本明細書に組み込まれる、米国特許第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に結合される。
【0008】
ワード線端子22に高圧正電圧を加えることによって、メモリセル210に対して消去が行われ(電子が浮遊ゲートから除去される)、これによって、浮遊ゲート20の電子は、浮遊ゲート20からワード線端子22までそれらの間にある絶縁体の中をファウラーノルドハイム(Fowler-Nordheim、FN)トンネリングを介して通過する。
【0009】
メモリセル210は、ワード線端子22に正電圧、及びソース領域14に正電圧を加えることによって、ホットエレクトロンによるソースサイド注入(source side injection、SSI)によって、プログラムされる(電子が浮遊ゲートに加えられる)。電子流は、ドレイン領域16からソース領域14に向かって流れる。電子は加速し、ワード線端子22と浮遊ゲート20との間の間隙に達すると、発熱する。熱せられた電子の一部は、浮遊ゲート20からの静電引力に起因して、浮遊ゲート20にゲート酸化物を介して注入される。
【0010】
メモリセル210は、ドレイン領域16及びワード線端子22に正の読み出し電圧を加える(ワード線端子の下方のチャネル領域18の部分をオンにする)ことによって、読み出される。浮遊ゲート20が正に帯電する(すなわち、電子を消去する)と、浮遊ゲート20の下方のチャネル領域18の部分も同様にオンになり、電流はチャネル領域18を流れ、これは、消去された状態つまり「1」の状態として検知される。浮遊ゲート20が負に帯電する(すなわち、電子でプログラムされる)と、浮遊ゲート20の下方のチャネル領域の部分はほとんど又は完全にオフになり、電流はチャネル領域18を流れず(又はほとんど流れず)、これは、プログラムされた状態つまり「0」の状態として検知される。
【0011】
表1は、読み出し動作、消去動作、及びプログラム動作を実行するためにメモリセル210の端子に印加され得る典型的な電圧/電流範囲を示す。
表1:
図2のフラッシュメモリセル210の動作
【表1】
【0012】
他の種類のフラッシュメモリセルである、他のスプリットゲート型メモリセル構成も知られている。例えば、
図3は、ソース領域14と、ドレイン領域16と、チャネル領域18の第1の部分の上方にある浮遊ゲート20と、チャネル領域18の第2の部分の上方にある選択ゲート22(典型的には、ワード線、WL、に結合される)と、浮遊ゲート20の上方にある制御ゲート28と、ソース領域14の上方にある消去ゲート30と、を含む4ゲートメモリセル310を示す。この構成は、あらゆる目的のため参照により本明細書に組み込まれる、米国特許第6,747,310号に記載されている。ここで、全てのゲートは、浮遊ゲート20を除いて、非浮遊ゲートであり、つまり、それらは電圧源に電気的に接続されている又は接続可能である。プログラミングは、熱せられた電子がチャネル領域18から浮遊ゲート20にその電子自体を注入することによって実行される。消去は、電子が浮遊ゲート20から消去ゲート30へトンネリングすることによって実行される。
【0013】
表2は、読み出し動作、消去動作、及びプログラム動作を実行するためにメモリセル310の端子に印加され得る典型的な電圧/電流範囲を示す。
表2:
図3のフラッシュメモリセル310の動作
【表2】
【0014】
図4は、別の種類のフラッシュメモリセルである、3ゲートメモリセル410を示す。メモリセル410は、メモリセル410が別個の制御ゲートを有しないことを除いて、
図3のメモリセル310と同一である。(消去ゲートの使用を通じて消去が起こる)消去動作及び読み出し動作は、制御ゲートバイアスが印加されないことを除いて、
図3のものと同様である。プログラミング動作もまた、制御ゲートバイアスなしで行われるため、結果として、プログラム動作中は、制御ゲートバイアスの不足を補償するため、より高い電圧がソース線に印加される。
【0015】
表3は、読み出し動作、消去動作、及びプログラム動作を実行するためにメモリセル410の端子に印加され得る典型的な電圧/電流範囲を示す。
表3:
図4のフラッシュメモリセル410の動作
【表3】
【0016】
図5は、別の種類のフラッシュメモリセルである、積層ゲートメモリセル510を示す。メモリセル510は、浮遊ゲート20がチャネル領域18全体の上方に延在し、制御ゲート22(ここでワード線に結合される)が絶縁層(図示せず)によって分離されて浮遊ゲート20の上方に延在することを除いて、
図2のメモリセル210と同様である。消去は、FGから基板への電子のFNトンネリングによって行われ、プログラミングは、チャネル18とドレイン領域16との間の領域でのチャネルホットエレクトロン(channel hot electron、CHE)注入によって、ソース領域14からドレイン領域16に向かって流れる電子によって、及びより高い制御ゲート電圧を有するメモリセル210の読み出し動作と同様である読み出し動作によって行われる。
【0017】
表4は、読み出し動作、消去動作、及びプログラム動作を実行するためのメモリセル510及び基板12の端子に印加され得る典型的な電圧範囲を示す。
表4:
図5のフラッシュメモリセル510の動作
【表4】
【0018】
本明細書に記載される方法及び手段は、限定されないが、FINFETスプリットゲートフラッシュ又はスタックゲートフラッシュメモリ、NANDフラッシュ、SONOS(silicon-oxide-nitride-oxide-silicon、ケイ素-酸化物-窒化物-酸化物-ケイ素、窒化物中の電荷トラップ)、MONOS(metal-oxide-nitride-oxide-silicon、金属-酸化物-窒化物-酸化物-ケイ素、窒化物中の金属電荷トラップ)、ReRAM(resistive ram、抵抗変化型メモリ)、PCM(phase change memory、相変化メモリ)、MRAM(Magnetic ram、磁気抵抗メモリ)、FeRAM(ferroelectric ram、強誘電体メモリ)、CT(charge trap、電荷トラップ)メモリ、CN(carbon-tube、カーボンチューブ)メモリ、OTP(one time programmable、バイレベル又はマルチレベルの1回のみのプログラムが可能)及びCeRAM(correlated electron ram、強相関電子メモリ)などの他の不揮発性メモリ技術に適用され得る。
【0019】
上記の人工ニューラルネットワークにおける不揮発性メモリセルの種類のうちの1つを含むメモリアレイを利用するために、2つの修正が行われる。第一に、以下に更に説明されるように、アレイ内の他のメモリセルのメモリ状態に悪影響を与えずに各メモリセルを個々にプログラム、消去、及び読み出しできるように線を構成する。第二に、メモリセルの連続(アナログ)プログラミングを提供する。
【0020】
具体的には、アレイ内の各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全に消去された状態から完全にプログラムされた状態へ、独立して、かつ他のメモリセルの乱れを最小限に抑えて連続的に変化させることができ、その逆もまた同様である。これはつまり、セル記憶が実質的にアナログであるか、又は多数の不連続値(16個又は64個の異なる値など)のうちの1つを最低限記憶することができることを意味し、これにより、メモリアレイ内の全てのメモリセルが非常に精密に、かつ個々にチューニング可能となり、また、メモリアレイが、記憶、及びニューラルネットワークのシナプシスの重みへの微細チューニング調整に対して、理想的なものになる。
<不揮発性メモリセルアレイを使用するニューラルネットワーク>
【0021】
図6は、本発明の実施例の不揮発性メモリアレイを利用するニューラルネットワークの非限定的な例を概念的に示す。この例は、顔認識アプリケーション用に不揮発性メモリアレイニューラルネットワークを使用するが、不揮発性メモリアレイベースのニューラルネットワークを使用して他の適切なアプリケーションを実装することも可能である。
【0022】
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の異なる特徴マップを生成する。
【0023】
本例では、層C1において、各々30×30ピクセルを有する16個の特徴マップが存在する。各ピクセルは、入力とカーネルとの乗算から抽出された新しい特徴ピクセルであり、したがって、各特徴マップは、二次元アレイであり、したがってこの例では、層C1は、二次元アレイの16層を構成する(本明細書で言及される層及びアレイは、必ずしも物理的関係ではなく論理的な関係であり、すなわち、アレイは必ずしも物理的な二次元アレイに配向されないことに留意されたい)。層C1内の16個の特徴マップの各々は、フィルタスキャンに適用される異なるシナプス重みセット16個のうちの1つによって生成される。C1特徴マップは全て、境界同定など、同じ画像特徴の異なる態様を対象とすることができる。例えば、第1のマップ(この第1のマップを生成するために使用される全てのスキャンに共有される第1の重みセットを使用して生成される)は、円形エッジを識別することができ、第2のマップ(第1の重みセットと異なる第2の重みセットを使用して生成される)は、長方形エッジ又はある特定の特徴のアスペクト比などを識別することができる。
【0024】
層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個のニューロンを含み、ここで出力が最も高いニューロンが、クラスを決定する。この出力は、例えば、元の画像の内容の同定又は分類(クラス分け)を示すことができる。
【0025】
シナプスの各層は、不揮発性メモリセルのアレイ又はアレイの一部を使用して実装される。
【0026】
図7は、その目的のために使用可能なアレイのブロック図である。ベクトルマトリックス乗算(Vector-by-matrix multiplication、VMM)アレイ32は、不揮発性メモリセルを含み、ある層と次の層との間のシナプス(
図6のCB1、CB2、CB3、及びCB4など)として利用される。具体的には、VMMアレイ32は、不揮発性メモリセルのアレイ33、消去ゲート及びワード線ゲートデコーダ34、制御ゲートデコーダ35、ビット線デコーダ36、並びにソース線デコーダ37を含み、それらのデコーダは不揮発性メモリセルアレイ33に対するそれぞれの入力をデコードする。VMMアレイ32への入力は、消去ゲート及びワード線ゲートデコーダ34から、又は制御ゲートデコーダ35から行うことができる。この例におけるソース線デコーダ37はまた、不揮発性メモリセルアレイ33の出力をデコードする。代替的に、ビット線デコーダ36が、不揮発性メモリセルアレイ33の出力をデコードすることができる。
【0027】
不揮発性メモリセルアレイ33は、2つの目的を果たす。第一に、不揮発性メモリセルアレイ33は、VMMアレイ32によって使用される重みを記憶する。第二に、不揮発性メモリセルアレイ33は、不揮発性メモリセルアレイ33に格納された重みを、入力に有効に乗算して、それらを出力線(ソース線又はビット線)毎に加算して、出力を生成し、この出力は次の層への入力又は最後の層への入力になる。不揮発性メモリセルアレイ33が乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性はなくなり、また、メモリ内の計算により電力効率も良い。
【0028】
不揮発性メモリセルアレイ33の出力は、不揮発性メモリセルアレイ33の出力を合計してその畳み込み用の単一の値を作成する、差動合計器(合計オペアンプ又は合計カレントミラーなど)38に供給される。差動合計器38は、正の重み及び負の重みの総和を実行するように配置される。
【0029】
差動合計器38の合計された出力値は、次に出力を整流する活性化関数ブロック39に供給される。活性化関数ブロック39は、シグモイド、tanh、又はReLU関数を提供し得る。活性化関数ブロック39の整流された出力値は、次の層(例えば
図6のC1)として特徴マップの要素になり、次いで、次のシナプスに適用されて次の特徴マップ層又は最後の層を生成する。したがって、この例では、不揮発性メモリセルアレイ33は、複数のシナプスを構成し(ニューロンの前の層から、又は画像データベースなどの入力層から、入力を受け取る)、合計オペアンプ38及び活性化関数ブロック39は、複数のニューロンを構成する。
【0030】
図7のVMMアレイ32への入力(WLx、EGx、CGx、及び任意選択的にBLx及びSLx)は、アナログレベル、バイナリレベル、又はデジタルビット(この場合、DACが、デジタルビットを適切な入力アナログレベルに変換するために提供される)であり得、出力は、アナログレベル、バイナリレベル、又はデジタルビットであり得る(この場合、出力ADCが、出力アナログレベルをデジタルビットに変換するために提供される)。
【0031】
図8は、図中でVMMアレイ32a、32b、32c、32d及び32eとして標示されたVMMアレイ32の多数の層の使用を示すブロック図である。
図8に示されるように、入力(Inputxで示される)は、デジタル-アナログ変換器31によってデジタルからアナログに変換され、入力VMMアレイ32aに提供される。変換されたアナログ入力は、電圧又は電流であり得る。第1の層の入力D/A変換は、入力VMMアレイ32aのマトリックス乗算器の適切なアナログレベルに入力Inputxをマッピングする関数又はLUT(look up table、ルックアップテーブル)を使用することによって行うことができる。入力変換はまた、外部アナログ入力を入力VMMアレイ32aへのマッピングされたアナログ入力に変換するために、アナログ-アナログ(analog to analog、A/A)変換器によって行うこともできる。
【0032】
入力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)アレイ>
【0033】
図9は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ900を示す。VMMアレイ900は、不揮発性メモリセルのメモリアレイ901と、不揮発性基準メモリセルの基準アレイ902(アレイの頂部に位置する)と、を含む。代替的に、別の基準アレイが底部に位置することができる。
【0034】
VMMアレイ900では、制御ゲート線903などの制御ゲート線が垂直方向に延びており(したがって、行方向の基準アレイ902が、制御ゲート線903に直交する)、消去ゲート線904などの消去ゲート線が水平方向に延びている。ここで、VMMアレイ900への入力は、制御ゲート線(CG0、CG1、CG2、CG3)に提供され、VMMアレイ900の出力は、ソース線(SL0、SL1)に現れる。一例では偶数行のみが使用され、別の例では奇数行のみが使用される。各ソース線(それぞれSL0、SL1)の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0035】
ニューラルネットワークについて本明細書に記載されているように、VMMアレイ900の不揮発性メモリセル、すなわちVMMアレイ900のメモリセル310は、任意選択的に、サブスレッショルド領域で動作するように構成される。
【0036】
本明細書に記載される不揮発性基準メモリセル及び不揮発性メモリセルは、以下のように弱反転(サブスレッショルド領域)でバイアスされ:
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はそれぞれ、メモリセルの幅及び長さである。
【0037】
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流を入力電圧に変換するI-Vログ変換器を使用した場合:
Vg=n*Vt*log[Ids/wp*Io]
式中、wpは、基準又は周辺メモリセルのwである。
【0038】
電流入力を伴うベクトルマトリックス乗算器VMMアレイとして使用されるメモリアレイについて、出力電流は以下である:
Iout=wa
*Io
*e
(Vg)/nVt、すなわち
Iout=(wa/wp)
*Iin=W
*Iin
W=e
(Vthp-Vtha)/nVt
ここで、wa=メモリアレイの各メモリセルのwである。
Vthpは周辺メモリセルの有効閾値電圧であり、Vthaはメイン(データ)メモリセルの有効閾値電圧である。トランジスタの閾値電圧は基板本体バイアス電圧の関数であり、Vsbと表される基板本体バイアス電圧は、そのような温度で様々な条件を補償するように変調され得ることに留意されたい。閾値電圧Vthは、次のように表すことができ:
【数1】
式中、Vth0は、ゼロ基板バイアスを有するスレッショルド電圧であり、φFは表面電位であり、ガンマは本体効果パラメータである。
【0039】
ワード線又は制御ゲートは、入力電圧のためのメモリセルの入力として使用することができる。
【0040】
代替的に、本明細書に記載されたVMMアレイのフラッシュメモリセルは、線形領域で動作するように構成することができる:
Ids=ベータ*(Vgs-Vth)*Vds;ベータ=u*Cox*Wt/L
W=α(Vgs-Vth)
すなわち、線形領域における重みWは、(Vgs-Vth)に比例する。
【0041】
ワード線又は制御ゲート又はビット線又はソース線は、線形領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、メモリセルの出力として使用することができる。
【0042】
I-V線形変換器用に、線形領域で動作するメモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して、入出力電流を入出力電圧に線形変換することができる。
【0043】
代替的に、本明細書に記載されたVMMアレイのメモリセルは、飽和領域で動作するように構成することができる:
Ids=1/2*ベータ*(Vgs-Vth)2、ベータ=u*Cox*Wt/L
W∝(Vgs-Vth)2、すなわち、重みWは(Vgs-Vth)2に比例する。
【0044】
ワード線、制御ゲート、又は消去ゲートは、飽和領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、出力ニューロンの出力として使用することができる。
【0045】
代替的に、本明細書に記載されるVMMアレイのメモリセルは、ニューラルネットワークの各層又は多層に対して全ての領域又はそれらの組み合わせ(サブスレッショルド、線形、又は飽和)で使用され得る。
【0046】
図7のVMMアレイ32の他の例は、参照により本明細書に組み込まれる米国特許第10,748,630号に記載されている。上記出願に記載されているように、ソース線又はビット線は、ニューロン出力(電流和出力)として使用することができる。
【0047】
図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(部分的にのみ示される)を通してダイオード接続される。基準セルは、目標基準レベルにチューニング(例えば、プログラム)される。目標基準レベルは、基準ミニアレイマトリックス(図示せず)によって提供される。
【0048】
メモリアレイ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の各々の電流は、その特定のビット線に接続された全ての不揮発性メモリセルからの電流の合計関数を実行する。
【0049】
表5は、VMMアレイ1000の動作電圧及び電流を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表5:
図10のVMMアレイ1000の動作
【表5】
【0050】
図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)に現れる。各ソース線の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0051】
表6は、VMMアレイ1100の動作電圧及び電流を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表6:
図11のVMMアレイ1100の動作
【表6】
【0052】
図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を含む。基準セルは、目標基準レベルにチューニングされる。
【0053】
メモリアレイ1203は、2つの目的を果たす。第一に、メモリアレイ1203は、VMMアレイ1200によって使用される重みを記憶する。第二に、メモリアレイ1203は、メモリアレイに記憶された重みを、入力(端子BLR0、BLR1、BLR2、及びBLR3に提供された電流入力であり、基準アレイ1201及び1202がこれらの電流入力を入力電圧に変換して、制御ゲート(CG0、CG1、CG2、及びCG3)に供給する)に有効に乗算して、次いで、全ての結果(セル電流)を加算して出力を生成し、この出力はBL0~BLNに現れ、次の層への入力又は最後の層への入力となる。メモリアレイが乗算及び加算の関数を実行することで、別個の乗算及び加算の論理回路の必要性がなくなり、また、電力効率も良い。ここで、入力は制御ゲート線(CG0、CG1、CG2、及びCG3)に提供され、出力は、読み出し動作中にビット線(BL0~BLN)に現れる。各ビット線の電流は、その特定のビット線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0054】
VMMアレイ1200は、メモリアレイ1203内の不揮発性メモリセルの一方向チューニングを実装する。すなわち、各不揮発性メモリセルは消去され、次いで、浮遊ゲートの所望の電荷に達するまで部分的にプログラムされる。過度に多くの電荷が浮遊ゲートに加えられる場合(誤った値がセルに記憶されるなど)、セルは消去され、一連の部分的なプログラミング動作が最初からやり直される。示されるように、同じ消去ゲート(EG0又はEG1など)を共有する2つの行は、一緒に消去され(ページ消去として知られる)、その後、各セルは、浮遊ゲートの所望の電荷に達するまで部分的にプログラムされる。
【0055】
表7は、VMMアレイ1200の動作電圧及び電流を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタ内の非選択セルの制御ゲート、選択セルとは異なるセクタ内の非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表7:
図12のVMMアレイ1200の動作
【表7】
【0056】
図13は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1300を示す。VMMアレイ1300は、不揮発性メモリセルのメモリアレイ1303と、基準アレイ1301又は第1の不揮発性基準メモリセルと、第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中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
【0057】
表8は、VMMアレイ1300の動作電圧及び電流を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタ内の非選択セルの制御ゲート、選択セルとは異なるセクタ内の非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線に加えられる電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
表8:
図13のVMMアレイ1300の動作
【表8】
【0058】
図22は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2200を示す。VMMアレイ2200では、入力INPUT
0...、INPUT
Nは、それぞれ、ビット線BL
0、...BL
Nで受信され、出力OUTPUT
1、OUTPUT
2、OUTPUT
3、及びOUTPUT
4は、それぞれ、ソース線SL
0、SL
1、SL
2、及びSL
3で生成される。
【0059】
図23は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2300を示す。この例では、入力INPUT
0、INPUT
1、INPUT
2、及びINPUT
3は、それぞれ、ソース線SL
0、SL
1、SL
2、及びSL
3で受信され、出力OUTPUT
0、...OUTPUT
Nは、ビット線BL
0、...、BL
Nで生成される。
【0060】
図24は、
図2に示されるメモリセル210に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2400を示す。この例では、入力INPUT
0、...、INPUT
Mは、それぞれ、ワード線WL
0、...、WL
Mで受信され、出力OUTPUT
0、...OUTPUT
Nは、ビット線BL
0、...、BL
Nで生成される。
【0061】
図25は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2500を示す。この例では、入力INPUT
0、...、INPUT
Mは、それぞれ、ワード線WL
0、...、WL
Mで受信され、出力OUTPUT
0、...OUTPUT
Nは、ビット線BL
0、...、BL
Nで生成される。
【0062】
図26は、
図4に示されるメモリセル410に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2600を示す。この例では、入力INPUT
0、...、INPUT
nが、それぞれ、垂直制御ゲート線CG
0、...、CG
Nに受信され、出力OUTPUT
1及びOUTPUT
2がソース線SL
0及びSL
1に生成される。
【0063】
図27は、
図4に示されるメモリセル410に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2700を示す。この例では、それぞれ、入力INPUT
0、...、INPUT
Nは、それぞれ、ビット線BL
0、...、BL
Nに結合されているビット線制御ゲート2701-1、2701-2、...、2701-(N-1)及び2701-Nのゲートに受信される。例示的な出力OUTPUT
1及びOUTPUT
2が、ソース線SL
0及びSL
1に生成される。
【0064】
図28は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2800を示す。この例では、入力INPUT
0、...、INPUT
Mは、それぞれ、ワード線WL
0、...、WL
Mに受信され、出力OUTPUT
0、...、OUTPUT
Nは、ビット線BL
0、...、BL
Nに生成される。
【0065】
図29は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ2900を示す。この例では、入力INPUT
0、...、INPUT
Mは、制御ゲート線CG
0、...、CG
Mに受信される。出力OUTPUT
0、...、OUTPUT
Nは、それぞれ、垂直ソース線SL
0、...、SL
Nに生成され、各ソース線SL
iは、列i内の全てのメモリセルのソース線に結合されている。
【0066】
図30は、
図3に示されるメモリセル310、
図5に示されるメモリセル510、及び
図7に示されるメモリセル710に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ3000を示す。この例では、入力INPUT
0、...、INPUT
Mは、制御ゲート線CG
0、...、CG
Mに受信される。出力OUTPUT
0、...、OUTPUT
Nは、それぞれ、垂直ビット線BL
0、...、BL
Nに生成され、各ビット線BL
iは、列i内の全てのメモリセルのビット線に結合されている。
<長・短期メモリ>
【0067】
先行技術は、長・短期メモリ(long short-term memory、LSTM)として知られる概念を含む。LSTMユニットは、しばしば、ニューラルネットワーク内で使用される。LSTMによって、ニューラルネットワークは所定の任意の期間にわたって情報を記憶し、後続の動作においてその情報を使用することができる。従来のLSTMユニットは、セル、入力ゲート、出力ゲート、及び忘却ゲートを含む。3つのゲートは、セル内及びセル外への情報の流れ、及び情報がLSTM内で記憶される期間を調節する。VMMは、LSTMユニットにおいて特に有用である。
【0068】
図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は、単なる例である。
【0069】
図15は、
図14のセル1401、1402、1403、及び1404に使用可能なLSTMセル1500の例示的な実装を示す。LSTMセル1500は、入力ベクトルx(t)と、先行するセルからのセル状態ベクトルc(t-1)と、先行するセルからの出力ベクトルh(t-1)と、を受け取り、セル状態ベクトルc(t)及び出力ベクトルh(t)を生成する。
【0070】
LSTMセル1500は、シグモイド関数デバイス1501、1502、及び1503を含み、それらの各々が0~1の数を適用して、入力ベクトルの各成分が出力ベクトルに寄与する程度を制御する。LSTMセル1500はまた、入力ベクトルに双曲線正接関数を適用するためのtanhデバイス1504及び1505と、2つのベクトルを乗算するための乗算器デバイス1506、1507、及び1508と、2つのベクトルを加算するための加算器デバイス1509と、を含む。出力ベクトルh(t)は、システム内の次のLSTMセルに提供することができるか、又は他の目的のためにアクセスすることができる。
【0071】
図16は、LSTMセル1500の一実装の一例であるLSTMセル1600を示す。読者の便宜のために、LSTMセル1500からの同じ採番方法が、LSTMセル1600で使用される。シグモイド関数デバイス1501、1502、及び1503、並びにtanhデバイス1504は各々、複数のVMMアレイ1601及び活性化関数ブロック1602を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるLSTMセルにおいて特に有用であることが分かる。乗算器デバイス1506、1507、及び1508、並びに加算器デバイス1509は、デジタル方式又はアナログ方式で実装される。活性化関数ブロック1602は、デジタル方式、又はアナログ方式で実装され得る。
【0072】
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と、を含む。
【0073】
LSTMセル1600がVMMアレイ1601とそれぞれの活性化関数ブロック1602との複数のセットを含むのに対し、LSTMセル1700は、LSTMセル1700の例では複数の層を表すために使用される、VMMアレイ1701及び活性化関数ブロック1702の1つのセットのみを含む。LSTMセル1700は、LSTMセル1600と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/4で済むので、LSTMセル1700は、LSTM1600より必要とするスペースが少ない。
【0074】
LSTMユニットは典型的には複数のVMMアレイを含み、これらの各々は、加算器及び活性化関数ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることを更に理解することができる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される例は、VMMアレイ自体の外側に必要とされる回路を削減する。
<ゲート付き回帰型ユニット>
【0075】
アナログVMM実装は、GRU(gated recurrent unit、ゲート付き回帰型ユニット)システムに利用することができる。GRUは、反復ニューラルネットワーク内のゲート機構である。GRUは、GRUセルが一般にLSTMセルよりも少数の構成要素を含むことを除いて、LSTMに類似している。
【0076】
図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は、単なる例である。
【0077】
図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と、を含む。
【0078】
図20は、GRUセル1900の一実装の一例であるGRUセル2000を示す。読者の便宜のために、GRUセル1900からの同じ採番方法が、GRUセル2000で使用される。
図20から分かるように、シグモイド関数デバイス1901及び1902、並びにtanhデバイス1903は各々、複数のVMMアレイ2001及び活性化関数ブロック2002を含む。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるGRUセルにおいて特に使用されることが分かる。乗算器デバイス1904、1905、1906、加算器デバイス1907、及び相補デバイス1908は、デジタル方式又はアナログ方式で実装される。活性化関数ブロック2002は、デジタル方式、又はアナログ方式で実装され得る。
【0079】
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と、を含む。
【0080】
GRUセル2000がVMMアレイ2001及び活性化関数ブロック2002の複数のセットを含むのに対し、GRUセル2100は、GRUセル2100の例では複数の層を表すために使用される、VMMアレイ2101及び活性化関数ブロック2102の1つのセットのみを含む。GRUセル2100は、GRUセル2000と比較して、VMM及び活性化関数ブロックのために必要とするスペースは1/3で済むので、GRUセル2100は、GRUセル2000よりも必要とするスペースが少ない。
【0081】
GRUシステムは典型的には複数のVMMアレイを含み、これらの各々は、加算器及び活性化関数ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることが更に理解できる。各VMMアレイのための別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される例は、VMMアレイ自体の外側に必要とされる回路を削減する。
【0082】
VMMアレイへの入力は、アナログレベル、バイナリレベル、パルス、時間変調パルス、又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが必要とされる)であり、出力は、アナログレベル、バイナリレベル、タイミングパルス、パルス、又はデジタルビット(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが必要とされる)であり得る。
【0083】
一般に、VMMアレイ内の各メモリセルに関して、各重みWは、単一のメモリセルによって、又は差動セルによって、又は2つのブレンドメモリセル(2つのセルの平均)によって実装することができる。差分セルの場合では、重みWを差分重み(W=W+-W-)として実装するために、2つのメモリセルが必要とされる。2つのブレンドメモリセルの場合は、2つのセルの平均として重みWを実装するために2つのメモリセルが必要とされる。
【0084】
図31は、VMMシステム3100を示す。いくつかの例では、VMMアレイに記憶された重みWは、差動対、W+(正の重み)及びW-(負の重み)として記憶され、ここで、W=(W+)-(W-)である。VMMシステム3100において、複数のビット線の半分は、W+線、すなわち、正の重みW+を記憶することになるメモリセルに接続するビット線として指定され、複数のビット線の他の半分は、W-線、すなわち、負の重みW-を実装するメモリセルに接続するビット線として指定される。W-線は、W+線の間に交互に散在される。減算演算は、加算回路3101及び3102のような、W+線及びW-線から電流を受け取る加算回路によって実行される。W+線の出力及びW-線の出力を一緒に組み合わせて、(W+、W-)線の全ての対の(W+、W-)セルの各対に対して効果的にW=W+-W-を与える。これまでW+線間に交互に散在するW-線に関して説明してきたが、他の例では、W+線及びW-線は、アレイ内のどこにでも任意に配置され得る。
【0085】
図32は、別の例を示す。VMMシステム3210において、正の重みW+は第1のアレイ3211に実装され、負の重みW-は第2のアレイ3212内に実装され、第2のアレイ3212は第1のアレイとは別個であり、結果として生じる重みは、加算回路3213によって適切に一緒に組み合わされる。
【0086】
図33は、VMMシステム3300を示す。VMMアレイに記憶された重みWは、差動対、W+(正の重み)及びW-(負の重み)として記憶され、ここで、W=(W+)-(W-)である。VMMシステム3300は、アレイ3301及びアレイ3302を備える。アレイ3301及び3302の各々における複数のビット線の半分は、W+線として指定され、すなわち、正の重みW+を記憶するメモリセルに接続するビット線であり、アレイ3301及び3302の各々における複数のビット線の他の半分はW-線として指定され、すなわち、負の重みW-を実装するメモリセルに接続するビット線である。W-線は、W+線の間に交互に散在される。減算演算は、加算回路3303、3304、3305及び3306のような、W+線及びW-線から電流を受け取る加算回路によって実行される。各アレイ3301、3302からのW+線の出力及びW-線の出力をそれぞれ一緒に組み合わせて、(W+、W-)線の全ての対の(W+、W-)セルの各対に対して効果的にW=W+-W-を与える。加えて、各アレイ3301及び3302からのW値は、各W値がアレイ3301からのW値からアレイ3302からのW値を引いた結果であり、加算回路3307及び3308からの最終結果が2つの差分値のうちの1つの差分値であることを意味するように、加算回路3307及び3308を介して更に組み合わされ得る。
【0087】
アナログニューラルメモリシステムに使用される各不揮発性メモリセルは、消去・プログラムに対応して、浮遊ゲート内に電荷、すなわち電子の数、を非常に具体的かつ精確な量で保持する。例えば、各浮遊ゲートはN個の異なる値のうちの1つを保持するべきであり、ここで、Nは、各セルによって示され得る異なる重みの数である。Nの例としては、16、32、64、128及び256が挙げられる。
【0088】
同様に、読み出し動作は、N個の異なるレベル間を正確に識別することができなければならない。
【0089】
VMMシステムにおけるプログラム及び読み出し動作では精度が極めて重要であることが理解されよう。しかしながら、メモリセル間の内因性の差異が、システムの正確度を損なう可能性がある。例えば、セルが導通させ得る最大セル電流(Icell max)、セルに記憶されているビット数、セルのI-V傾斜(アナログ連続入力)(セルの端子の各々特定の電圧に対するセルによって引き出される電流を示す)、温度挙動、及びセルが奇数行に位置するのか又は偶数行に位置するのか等の特性が、ニューラルネットワーク性能に影響を及ぼし得る。セルがどのように利用されるかの外因性の差異もまた、正確度を損なう可能性がある。例えば、外部構成要素とセルとの間の回路不整合及び差異、並びにアレイ内のセルの位置に基づく電流降下などの特性が、正確度に影響を及ぼす。
【0090】
動作中のセル間の内因性及び外因性の差異を補償するためにVMMシステムにおいてリアルタイムで実行することができる較正技術が必要とされている。
【発明の概要】
【0091】
深層学習人工ニューラルネットワークにおいて様々な電気パラメータの較正を実行するための多数の例が開示されている。そのような電気パラメータの較正は、トランジスタ、メモリセル、もしくは他のデバイス間の差異、又は動作温度の変化を補償することができる。電気パラメータは、深層学習人工ニューラルネットワーク全体、深層学習人工ニューラルネットワーク内の各層、又は深層学習人工ニューラルネットワーク内の層の一部に対して較正をすることができる。
【0092】
【0093】
【0094】
【0095】
【0096】
【0097】
【0098】
【0099】
【0100】
【0101】
【0102】
【0103】
【0104】
【0105】
【0106】
【0107】
【0108】
【0109】
【0110】
【0111】
【0112】
【0113】
【0114】
【0115】
【0116】
【0117】
【0118】
【0119】
【0120】
【0121】
【0122】
【0123】
【0124】
【0125】
【0126】
【0127】
【0128】
【0129】
【0130】
【0131】
【0132】
【0133】
【0134】
【0135】
【0136】
【0137】
【0138】
【0139】
【0140】
【0141】
【0142】
【0143】
【0144】
【0145】
【0146】
【0147】
【0148】
【0149】
【0150】
【0151】
【0152】
【0153】
【0154】
【0155】
【0156】
【0157】
【0158】
【0159】
【0160】
【0161】
【0162】
【0163】
【0164】
【0165】
【0166】
【0167】
【0168】
【0169】
【0170】
【0171】
【図面の簡単な説明】
【0172】
【
図1】人工ニューラルネットワークを例解する図である。
【
図2】先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図3】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図4】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図5】別の先行技術のスプリットゲートフラッシュメモリセルを示す。
【
図6】1つ以上の不揮発性メモリアレイを利用する例示的な人工ニューラルネットワークの様々なレベルを例解する図である。
【
図7】ベクトルマトリックス乗算システムを例解するブロック図である。
【
図8】1つ以上のベクトルマトリックス乗算システムを利用する例示的な人工ニューラルネットワークを例解するブロック図である。
【
図9】ベクトルマトリックス乗算システムの別の例を示す。
【
図10】ベクトルマトリックス乗算システムの別の例を示す。
【
図11】ベクトルマトリックス乗算システムの別の例を示す。
【
図12】ベクトルマトリックス乗算システムの別の例を示す。
【
図13】ベクトルマトリックス乗算システムの別の例を示す。
【
図14】先行技術の長・短期メモリシステムを示す。
【
図15】長・短期メモリシステムで使用する例示的なセルを示す。
【
図18】先行技術のゲート付き回帰型ユニットシステムを示す。
【
図19】ゲート付き回帰型ユニットシステムで使用する例示的なセルを示す。
【
図22】ベクトルマトリックス乗算システムの別の例を示す。
【
図23】ベクトルマトリックス乗算システムの別の例を示す。
【
図24】ベクトルマトリックス乗算システムの別の例を示す。
【
図25】ベクトルマトリックス乗算システムの別の例を示す。
【
図26】ベクトルマトリックス乗算システムの別の例を示す。
【
図27】ベクトルマトリックス乗算システムの別の例を示す。
【
図28】ベクトルマトリックス乗算システムの別の例を示す。
【
図29】ベクトルマトリックス乗算システムの別の例を示す。
【
図30】ベクトルマトリックス乗算システムの別の例を示す。
【
図31】ベクトルマトリックス乗算システムの別の例を示す。
【
図32】ベクトルマトリックス乗算システムの別の例を示す。
【
図33】ベクトルマトリックス乗算システムの別の例を示す。
【
図34】ベクトルマトリックス乗算システムの別の例を示す。
【
図38】ベクトルマトリックス乗算システムの動作温度の典型的な経時変化を示すグラフを示す。
【
図39】様々な動作温度で様々な値を記憶する様々な不揮発性メモリセルの電流-電圧特性を示す。
【
図41】差動逐次アドレスレジスタアナログ-デジタル変換器を示す。
【
図48】例示的なデュアルレジスタブロックを示す。
【
図52】グローバルデジタル-アナログ変換器及び行デコーダの一例を示す。
【
図53】グローバルデジタル-アナログ変換器及び行デコーダの一例を示す。
【
図54】グローバルデジタル-アナログ変換器及び行デコーダの一例を示す。
【
図55】デジタル-アナログ変換器の例示的な波形を示す。
【
図56】デジタル-アナログ変換器の例示的な波形を示す。
【
図57】デジタル-アナログ変換器の出力例を示す。
【
図58】デジタル-アナログ変換器の出力例を示す。
【
図68】例示的なアレイ及びサンプリングされたニューロン回路を示す。
【
図69】例示的なアレイ、基準アレイ、及びサンプリングされたニューロン回路を示す。
【
図70】例示的な基準アレイ及びサンプリングされたニューロン回路を示す。
【
図79】GDAC入力レベルから出力レベルへの選択の一例を示す。
【
図80】GDAC入力レベルから出力レベルへの選択の一例を示す。
【
図81】GDAC入力レベルから出力レベルへの選択の一例を示す。
【発明を実施するための形態】
【0173】
本発明の実施例の人工ニューラルネットワークは、CMOS技術及び不揮発性メモリアレイの組み合わせを利用する。
<VMMシステムの概要>
【0174】
図34は、例示的なVMMシステム3400のブロック図を示す。VMMシステム3400は、VMMアレイ3401、行デコーダ3402、高電圧デコーダ3403、列デコーダ3404、ビット線ドライバ3405、入力回路3406、出力回路3407、制御論理3408、及びバイアス生成器3409を備える。VMMシステム3400は、チャージポンプ3411、チャージポンプレギュレータ3412、及び高電圧アナログ精度レベル生成器3413を含む、高電圧生成ブロック3410を更に備える。VMMシステム3400は、(プログラム/消去、又は重みチューニング)アルゴリズムコントローラ3414、アナログ回路3415、制御エンジン3416(限定するものではないが、算術機能、起動機能、埋め込みマイクロコントローラ論理などの機能を含み得る)、及びテスト制御論理3417を更に備える。以下に記載されるシステム及び方法は、VMMシステム3400に実装され得る。
【0175】
入力回路3406は、DAC(digital to analog converter、デジタルアナログ変換器)、DPC(digital to pulses converter、デジタルパルス変換器、digital to time modulated pulse converter、デジタル時間変調パルス変換器)、AAC(analog to analog converter、電流電圧変換器、対数変換器などのアナログアナログ変換器)、PAC(pulse to analog level converter、パルスアナログレベル変換器)、又は任意の他の種類の変換器などの回路を含み得る。入力回路3406は、正規化、線形もしくは非線形アップ/ダウンスケーリング関数、又は算術関数を実装し得る。入力回路3406は、入力レベルのための温度補償関数を実装し得る。入力回路3406は、ReLU又はシグモイドなどの活性化関数を実装し得る。出力回路3407は、ADC(analog to digital converter、ニューロンアナログ出力をデジタルビットに変換するための、アナログ-デジタル変換器)、AAC(analog to analog converter、電流-電圧変換器、対数変換器などのアナログ-アナログ変換器)、APC(analog to pulse converter、アナログ-パルス変換器、analog to time modulated pulse converter、アナログ-時間変調パルス変換器)、又は任意の他の種類の変換器などの回路を含み得る。出力回路3407は、正規化線形活性化関数(rectified linear activation function、ReLU)又はシグモイドなどの活性化関数を実装し得る。出力回路3407は、ニューロン出力の統計的正規化、正則化、アップ/ダウンスケーリング/ゲイン関数、統計的丸め、又は算術関数(例えば、加算、減算、除算、乗算、シフト、ログ)を実装し得る。出力回路3407は、アレイの電力消費をほぼ一定に保つために、又はIVの傾斜をほぼ同じに保つことになどによってアレイ(ニューロン)出力の精度を高めるために、ニューロン出力又はアレイ出力(ビット線出力など)のための温度補償関数を実装し得る。
【0176】
リアルタイム較正を実行するための2つのアプローチが、本明細書で説明される。第一に、近似を使用するアプローチが開示され(
図35及び
図36に示す)、平均I-Vデータセットが、実際のアレイ又はサンプリングされたアレイ又は基準アレイから蓄積されたデータに基づいて仮定される。第二に、学習挙動(
図37に示す)を使用するアプローチが開示され、パラメータがネットワーク性能に適合される。
【0177】
図35は、VMMシステム3400を較正するための例示的な較正方法3500を示す。
【0178】
第一に、1つ以上の電気パラメータが調整され、メモリセル、メモリアレイ、又は周辺回路に適用される(動作3501)。これが、実行中の動作3501の最初のインスタンスである場合、電気パラメータに初期値が使用される。これが、実行中の動作3501の2回目以降のインスタンスである場合、動作3503(後述)において決定された任意の調整された電気パラメータが適用される。
【0179】
メモリセルレベルで変更することができる電気パラメータの例は、セルに記憶される重みの分解能(変化するn、ここでnはセルのビット分解能である)(例えば、より小さいnを使用することで精度がより良好に制御される)、セルが引き出すことができる最大セル電流(Icell max)及び/又は最小セル電流(Icell min)(例えば、より低いIcell maxはより低い電力をもたらし、より高いIcell minは改善されたベースラインノイズ耐性をもたらす);セルI-V傾斜(例えば、特定の性能測定基準を達成するための傾斜);並びにセル温度挙動及び関連する補償方式(温度変化時のバイアス電圧の調整など)を含むが、これらに限定されない。
【0180】
メモリアレイレベルで変更することができる電気パラメータの例は、許容される欠陥(スタックした「1」又は「0」、不良行又は不良列)の数;許容されるノイズフロア(例えば、冗長セル/アレイ部分と置換する前、又は特定のセル/アレイ部分を使用できないようにする前の熱雑音又はポップコーンノイズ又はフリッカーノイズなど);バンクの数(M行N列);書き込みI/O幅(並列に書き込まれたセルの数;これは、例えば、動作電流からのIRdrop、すなわち電圧降下に対するトレードオフである);ソース線を共有する行の数;セクタサイズ(行及び列の数、これは、例えば、同じ高電圧線の共有による妨害に対する面積のトレードオフである);アレイバイアス条件(ビット線、ワード線、制御ゲート、消去ゲートへのバイアスなど)を含むが、これらに限定されない。
【0181】
周辺回路レベルで変化させることができる電気パラメータの例には、出力ニューロン回路における抵抗、キャパシタンス、又は別の可変特性;出力に対して実行されるスケーリングの程度;ニューロン出力から生成されたデジタル出力のビット分解能;オフセット較正;電力と速度との間のトレードオフ;デジタル-アナログ変換器、アナログ-デジタル変換器、又は活性化回路を対象とした多重化(VMMアレイ毎にいくつが必要とされるか、レイテンシ及びスループットのトレードオフ対面積)が含まれるが、これらに限定されない。正規化回路又は整形回路などの回路は、周辺回路の更なる例である。
【0182】
第二に、性能目標チェックが実行される(動作3502)。これは、例えば、ニューロン電流(アレイからのビット線電流)又は平均ニューロン電流(ここで、ニューロン電流及び平均ニューロン電流は、決定された値の例である)が特定の温度で目標電流(所定の閾値)を満たすかどうかをチェックすること、あるいはニューロン電流又は平均ニューロン電流が活性化後に所定の閾値を満たすかどうかをチェックすることを含むことができる。性能目標は、目標ニューロン値、回路正確度、電力、又はレイテンシに関係し得る。性能目標(所定の閾値)が達成された場合、較正方法3500は動作3506に進み、完了する。そうでない場合、方法は次の動作3503に進む。
【0183】
動作3503において、適用された電気パラメータが調整される(動作3503)。
【0184】
動作3504において、システムは、適用された電気パラメータが、構成要素又はシステムの公差に対応する範囲内など、所定の範囲内にあるかどうかを判定する。そうである場合、動作3501、3502、3503、及び3504が繰り返される。そうでない場合、(電気パラメータが許容可能な量を超えて調整されたことを意味するので)ネットワーク回路は不良であるとみなされ、使用されない(動作3505)。例えば、これは不良ダイの結果であり得る。
【0185】
任意選択的に、方法3500は、VMMシステム3400の動作中にリアルタイムで実行することができ、これは、例えば、VMMシステム3400の動作温度の変化に伴ってパラメータを較正するのに有用であろう。
【0186】
図36は、VMMシステム3400を較正するための例示的な較正方法3600を示す。較正方法3600は、ニューラルネットワーク推論を利用する。そのような推論を生成するためのニューラルネットワークは、多層パーセプトロン(MLP)、畳み込みニューラルネットワーク(CNN)(例えば、残余ネットワーク、ResNet-x)、反復ニューラルネットワーク(RNN)(例えば、長・短期メモリ、LSTM)など、任意の既知のタイプのニューラルネットワークであり得る。
【0187】
第一に、電気パラメータが適用される(動作3601)。これが、実行中の動作3601の最初のインスタンスである場合、電気パラメータに初期値が使用される。これが、実行中の動作3601の2回目以降のインスタンスである場合、動作3603(後述)において決定された任意の調整された電気パラメータが適用される。パラメータは、較正方法3500の動作3501に関して前述したパラメータと同じであり得る。
【0188】
第二に、性能ニューラルネットワーク推論目標チェックが実行される(動作3602)。これは、例えば、Modified National Institute of Standards and Technology(MNIST)の数字を認識すること、又はImageNetの画像を分類することを含むことができる。目標が達成された場合、較正方法3600は動作3606に進み、完了する。そうでない場合、方法は次の動作に進む。
【0189】
動作3603において、適用された電気パラメータが調整される。
【0190】
次に、システムは、適用された電気パラメータが、構成要素又はシステムの公差に対応する範囲内など、所定の範囲内にあるかどうかを判定する(動作3604)。そうである場合、動作3601、3602、3604、及び3604が繰り返される。そうでない場合、(電気パラメータが許容可能な量を超えて調整されたことを意味するので)ネットワーク回路は不良であるとみなされ、使用されない(動作3605)。例えば、これは不良ダイの結果であり得る。
【0191】
任意選択的に、方法3600は、VMMシステム3400の動作中にリアルタイムで実行することができ、これは、例えば、VMMシステム3400の動作温度の変化に伴ってパラメータを較正するのに有用であろう。
【0192】
図37は、VMMシステム3400を較正するための例示的な較正方法3700を示す。較正方法3700は、機械学習を利用する。
【0193】
第一に、ある範囲のバイアス電圧などの電気パラメータを第1の不揮発性メモリシステム(例えば、VMMシステム3400)に適用し、結果として生じるニューロン電流又は平均ニューロン電流などの特性を測定し、測定された結果として生じる特性を所定の目標範囲と比較することによって、機械学習モデルセットが生成される。(動作3701)。これらのパラメータは、較正方法3500の動作3501に関して前述したパラメータと同じであり得る。
【0194】
第二に、第1の不揮発性メモリシステム又は第2の不揮発性メモリシステム(例えば、VMMシステム3400の別のインスタンス)の動作中に、機械学習モデルを使用して、メモリセル、メモリアレイ、及び周辺回路に適用する電気パラメータを決定する(動作3702)。
【0195】
図38は、温度の関数として動作中に電気パラメータがどの程度急速に変化し得るかを示す例を提供する。
図38は、均一なシリコンウェハの温度を特定の温度に変化させるのにかかる時間量である、均一なウェハのシリコン熱伝導率を示す。この熱伝導率は、シリコン内の局所的な電力消費を含む様々な要因によって影響され得る。このグラフに基づいて、熱伝導率は、1度の変化毎に約100msである。これは、温度の影響を受ける電気パラメータが、動作中に100ms毎に調整を必要とし得ることを意味する。
【0196】
図39は、VMMシステム3400内の異なるメモリセル間の差異の例を提供する。
図39は、各セルがサブスレッショルド領域で動作しているときの複数のメモリセルの電流-電圧データ(I-V傾斜を示す)を示す。電流は、電圧VCGがセルの制御ゲートに印加されたときにセルによって引き出される電流Icellである。図から分かるように、I-V傾斜は、VCGの値毎に異なり得る。セル毎の特定のI-V傾斜は、セルの固有の特性によって影響を受け、セルに記憶された値Wに基づいて、並びにセルの動作温度に基づいて変動し得る。I-V傾斜はまた、マスクアライメントステップ又はプロセスステップあるいはプロセスインプラントにおけるそのような差異(エッチングむら等)に起因して、セルの物理的寸法又は電気パラメータに基づいて変動する。
【0197】
図40は、差動電流-電圧変換器4001を示す。差動電流-電圧変換器4001は、演算増幅器4003と、可変積分抵抗器4004及び4005と、コモンモード回路4006(演算増幅器4003の差動増幅器実装のために使用される)とを含む。差動電流-電圧変換器4001は、2つの電流入力IBL+及びIBL-を差動出力電圧VO+及びVO-に変換し、出力電圧は可変抵抗器4004及び4005の抵抗に比例する。入力電流IBL+及びIBL-は、任意で、正の重み及び負の重みを表す電流であってもよい。例えば、IBL+は、単一のセルからの電流Iw+、又はビット線に結合された複数のw+セルからの電流の和であるビット線電流であってもよく、IBL-は、単一のセルからの電流Iw-、又はビット線に結合された複数のw-セルからの電流の和であるビット線電流であってもよい。そのような正の重み及び負の重みは、重み(W=W+-W-)を示すためにニューラルネットワークにおいて使用され得る。別の例では、2つの入力電流IBL+及びIBL-は、アレイからのセル電流又はビット線電流、及び基準電流を表すことができる。
【0198】
図41は、差動逐次アドレスレジスタ(SAR)アナログ-デジタル変換器(ADC)4102を示す。
【0199】
差動逐次アドレスレジスタアナログ-デジタル変換器4102は、適切なデジタル出力を識別するために、全ての可能な量子化レベルにわたるバイナリサーチを使用して、アナログ入力又は差動アナログ入力をデジタル出力に変換する。
【0200】
差動逐次アドレスレジスタアナログ-デジタル変換器4102は、バイナリ容量性デジタル-アナログ変換器(CDAC)4107と、バイナリCDAC4108(CDAC4107と相補的)と、比較器4109と、SAR論理及びレジスタ4110とを備える。
【0201】
差動逐次アドレスレジスタアナログ-デジタル変換器4102は、差動電流入力Vinp及びVinnを受け取る。SAR論理及びレジスタ4110は、電圧源をキャパシタに結合するCDAC4107及び4108内のスイッチを制御する、全ての可能なデジタルビットの組み合わせを巡回する。比較器4109の出力が反転すると、SAR論理及びレジスタ4110内のデジタルビットの組み合わせがデジタル出力として出力される。任意選択で、SAR論理及びレジスタ4110は、デジタル値のビットの過半数が「1」である場合に「1」であり、対応するデジタル値のビットの過半数が「1」でない場合に、「0」である追加の1ビットデジタル出力DMAJをデジタル出力内に生成する。
【0202】
図42は、
図34のVMMアレイ3401などのVMMアレイ内の1つ以上のビット線に対して読み出し動作を実行するためのオフセット較正を実装する例示的な読み出し回路4200を示す。読み出し回路4200は、比較器4201、オフセット較正キャパシタデジタル-アナログ変換器4202、オフセット較正キャパシタデジタル-アナログ変換器4203、及び較正コントローラ4204を備える。較正コントローラ4204は、
図39に示すように、温度むらに起因して生成されるオフセットを補償するために、en及びenbと標識される種々のスイッチを閉鎖又は開放することによって、オフセット較正キャパシタデジタル-アナログ変換器4202及びオフセット較正キャパシタデジタル-アナログ変換器4203内の種々のキャパシタを有効化する。
【0203】
図40及び
図41の回路に対する
図35及び
図36の較正又は訓練プロセス中の学習のための電気パラメータは、ビット分解能の程度(4ビット、5ビット、又は8ビット分解能など)、ニューロンスケーリングの程度(例えば、4X~256Xなどのスケーリング係数の大きさなど)、バイアス電流による電力消費の程度(より高いバイアス電流は、より多くの電力及びより速い速度を意味するなど)、並びに温度補償のために追加されるオフセットの量(より高いオフセット値の追加は、より高い回路複雑度を犠牲にしたより高い精度を意味する)を含む。
【0204】
図43は、
図34のVMMアレイ3401のようなVMMアレイに入力を提供するために使用される例示的な入力ブロック4300を示す。入力ブロック4300は、グローバルデジタル-アナログ変換器(DAC)4301と、アドレス行デコーダ4302-0~4302-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、アドレス行デコーダと、行レジスタ4303-0~4303-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、行レジスタと、デジタル比較器ブロック4304-0~4304-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、デジタル比較器ブロックと、行サンプルホールド(S/H)バッファ4305-0~4305-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、行サンプルホールドバッファと、出力信号4306-0~4306-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、出力信号と、カウンタ4307と、を備える。
【0205】
アドレス行デコーダ4302-0~4302-nは、行アドレスADD[n:0]及びイネーブル信号ENを受信する。ENROWで示される各アドレス行デコーダの出力は、ADD[n:0]がその特定の行のアドレスであり、かつENがアサートされるときにハイである。行レジスタ4303-0~4303-nには、その特定の行のそれぞれのデジタル入力ビットDINx(xは8ビット又は16ビットなどのビット数である)がロードされ、ロード動作はクロック信号CLKによってトリガされ、DINxはその特定の行の活性化入力である。ベクトル乗算マトリックス演算を行う。特定のアドレス行デコーダ4302の出力がハイであるとき、関連する行レジスタ4303がイネーブルされ、そのデジタルビットDINxを出力する。カウンタ4307は、信号ENによってイネーブルされると、別のクロック信号CLKB内のパルスをカウントする。カウンタ4307の出力はカウント値である。デジタル比較器ブロック4304-0~4304-nは、それぞれの行レジスタ4303の各々に記憶された活性化値DINxをカウント値と比較する。カウント値が特定の行レジスタ4302に記憶された値と一致する場合、対応する行サンプルホールドバッファ4305がイネーブルされて、グローバルDAC4301からのアナログ出力値をサンプリング及び保持する。グローバルDAC4301は、(当該行の行レジスタ4303のDINxにも一致する)カウント値に対してデジタル-アナログ変換を実行する。各行サンプルホールドバッファ4305は、保持したアナログ値を出力信号4306として出力する。例えば、x=8であり、DINxが8ビット入力である(DINxに256個の異なる値があることを意味する)場合、カウンタ4307は256までカウントし、次いでリセットされる。そうすることで、DINxの全ての可能な値がカバーされ、各行サンプルホールドバッファ4305にその関連するDINxの値がロードされる。
【0206】
出力信号4306は、例えば、その特定の行におけるプログラミング又は読み出し動作中に、あるいは全ての行が読み出されるニューラル読み出し動作中に、制御ゲート線又はワード線に印加され得る。ニューラル読み出し中、全てのサンプルホールドバッファ4305は、それぞれの出力信号4306を介してアレイ入力端子を駆動するようにイネーブルされ、その結果、ビット線電流がVMMアレイによって出力され、ビット線電流は次いで、ITV(電流-電圧変換器)回路及びADC(アナログ-デジタル変換器)回路などの出力回路によって処理される。
【0207】
出力信号4306は、例えば、その特定の行におけるプログラミング動作中にそれぞれの制御ゲート線又はワード線に適用され得る。
【0208】
別の例では、行サンプルホールドバッファ4304は、時分割多重化方式で複数の行によって共有され得る。
【0209】
図44は、
図34のVMMアレイ3401のようなVMMアレイに入力を提供するために使用される例示的な行入力ブロック4400を示す。入力ブロック4400は、グローバルデジタル-アナログ変換器(DAC)4401と、アドレス行デコーダ4402-0~4402-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、アドレス行デコーダと、行レジスタ4403-0~4403-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、行レジスタと、デジタルマルチプレクサ(mux)ブロック4404-0~4404-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、デジタルマルチプレクサブロックと、行サンプルホールドバッファ4405-0~4005-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、行サンプルホールドバッファと、出力信号4406-0~4406-nであって、各々、0~nの番号が付けられた行のうちの1つに対応する、出力信号と、を含む。
【0210】
アドレス行デコーダ4402-0~4402-nは、行アドレスADD[n:0]及びイネーブル信号ENを受信する。ENROWで示される各アドレス行デコーダの出力は、ADD[n:0]がその特定の行のアドレスであるときにハイである。行レジスタ4403-0~4303-nには、その特定の行のそれぞれのデジタル入力ビットDINx(xは8ビット又は16ビットなどのビット数である)がロードされ、ロード動作はクロック信号CLKによってトリガされ、DINxはその特定の行の活性化入力である。特定のアドレス行デコーダ4402の出力がハイであり、かつENがアサートされるとき、関連する行レジスタ4403がイネーブルされ、そのそれぞれのデジタルビットDINxを出力する。CLKCOUNTxは、カウンタによって提供されるカウント値であり、1と行の総数との間の範囲であり得る。デジタルマルチプレクサ4404は、CLKCOUNTxに応答して、それぞれの行レジスタ4403のデータをバスDIN_GDACxに多重送信する。CLKCOUNTxは、各行のDINxがグローバルDAC4401に順に適用されるように、各行を連続した順序(行0、行1、...)でイネーブルする。各行サンプルホールドバッファ4405は、その関連するアドレス行デコーダ4402の出力を受け取り、行アドレスがその特定の行の行アドレスと一致するとき、それぞれの信号ENROWによってイネーブルされ、その場合、行サンプルホールドバッファ4405は、グローバルDAC4401からの値をサンプリングし、それをそれぞれのアナログ出力4406として提供する。出力信号4406は、例えば、その特定の行におけるプログラミング動作中に制御ゲート線又はワード線に適用され得る。
【0211】
別の例では、行サンプルホールドバッファ4405は、行サンプルホールドバッファを時間多重化するために複数の行に共用され得る。
【0212】
図45は、
図34のVMMアレイ3401のようなVMMアレイに入力を提供するために使用される例示的な入力ブロック4500を示す。入力ブロック4500は、
図44の入力ブロック4400と同様であるが、ニューラル読み出し動作のためにグローバルデジタル-アナログ変換器からの複数の出力を提供する。入力ブロック4500は、グローバルデジタル-アナログ変換器及び行デコーダ4501と、アドレス行デコーダ4502-0~4502-nであって、各々、0~nの番号が付けられた行のうちのそれぞれ1つに対応する、アドレス行デコーダと、行レジスタ4503-0~4503-nであって、各々、0~nの番号が付けられた行のうちのそれぞれ1つに対応する、行レジスタと、デジタル比較器4504~4504-nであって、各々、0~nの番号が付けられた行のうちのそれぞれ1つに対応する、デジタル比較器と、行サンプルホールドバッファ4505-0~4505-nであって、各々、0~nの番号が付けられた行のうちのそれぞれ1つに対応する、行サンプルホールドバッファと、出力信号4506-0~4506-nであって、各々、0~nの番号が付けられた行のうちのそれぞれ1つに対応する、出力信号と、を含む。
【0213】
アドレス行デコーダ4502-0~4502-nは、行アドレスADD[n:0]及びイネーブル信号ENを受信する。ENROWで示される各アドレス行デコーダ4502の出力は、ADD[n:0]がその特定の行のアドレスであり、かつENがアサートされるときにハイである。行レジスタ4503-0~4503-nには、それぞれのデジタル入力ビットDINx(xは8ビット又は16ビットなどのビット数である)がロードされ、ロードは、その特定の行のクロック信号CLKによってトリガされ、DINxは、その特定の行の活性化入力である。特定のアドレス行デコーダ4502の出力ENROWがハイであるとき、関連する行レジスタ4503がイネーブルされ、そのデジタルビットDINxを出力する。カウンタ4507は、信号ENによってイネーブルされると、別のクロック信号CLKB内のパルスをカウントする。カウンタ4507の出力はカウント値である。デジタル比較器ブロック4504-0~4504-nは、それぞれの行レジスタ4503の各々に記憶された活性化値DINxをカウント値と比較する。カウント値が特定の行レジスタ4502に記憶された値と一致する場合、対応する行サンプルホールドバッファ4505がイネーブルされて、GDAC4501からのアナログ出力値をサンプリング及び保持する。図示のように、GDAC4501からの2つの垂直アナログ出力線がある。例えば、8ビットGDAC4501の場合、一方のラインは、0~127のアナログレベル(00000000~01111111に対応する)の出力を供給することができ、他方のラインは、128~255のアナログレベル(10000000~11111111に対応する)の出力を供給することができる。両方のラインが同時に動作して、行DACサンプリング時間を256(DAC)クロックから128(DAC)クロックに短縮することができる。出力信号4506は、例えば、その特定の行におけるプログラミング動作中に制御ゲート線又はワード線に適用され得る。
【0214】
任意選択で、グローバルデジタル-アナログ変換器4501は、奇数行用の第1のグローバルDACと、偶数行用の第2のグローバルDACとを備えることができる。
【0215】
図46は、
図34のVMMアレイ3401のようなVMMアレイに入力を提供するために使用される例示的な入力ブロック4600を示す。入力ブロック4600は、アナログ電圧源4601と、アドレス行デコーダ4602-0~4602-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちのそれぞれ1つに対応する、アドレス行デコーダと、行レジスタ4603-0~4603-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちのそれぞれ1つに対応する、行レジスタと、ローカルデジタル-アナログ変換器4604-0~4604-n(各行はそれ自体のDACを有する)であって、各々、0~nの番号が付けられた行のそれぞれ1つに対応する、ローカルデジタル-アナログ変換器と、行バッファ4605-0~4605-nであって、各々、0~nの番号が付けられた行のうちのそれぞれ1つに対応する、行バッファと、出力信号4606-0~4606-nであって、各々、0~nの番号が付けられた行のうちのそれぞれ1つに対応する、出力信号と、を含む。
【0216】
アドレス行デコーダ4602は、行アドレスADD[n:0]及びイネーブル信号ENxを受信する。各アドレス行デコーダENROWの出力は、ADD[n:0]がその特定の行のアドレスであり、かつENxがアサートされるときにハイである。行レジスタ4603-0~4303-nには、その特定の行のそれぞれのデジタル入力ビットDINx(xは8ビット又は16ビットなどのビット数である)がロードされ、ロードはクロック信号CLKによってトリガされ、DINxはその特定の行の活性化入力である。特定のアドレス行デコーダ4602の出力ENROWがハイであるとき、関連する行レジスタ4603がイネーブルされ、そのデジタルビットDINxを出力する。
【0217】
ローカルデジタル-アナログ変換器4604-0~4604-nは、関連する行レジスタ4603に記憶されたデジタルビットDINxに対してデジタル-アナログ変換を実行する。その行に対応する行サンプルホールドバッファ4605は、デジタル-アナログ変換器4604からのアナログ出力をサンプリングし、その値を保持し、その値は、その特定の行の出力信号4606として適用される。出力信号4606は、例えば、他の図に関して上述した方式で、その特定の行(複数可)におけるプログラミング動作中に制御ゲート線又はワード線に適用され得る。
【0218】
図47は、グローバルDACブロック4707が追加された、
図46の入力ブロックと同様の例示的な入力ブロック4700を示す。グローバルDACブロック4707は、ローカルDAC4704と連携して動作する。例えば、CDAC DAC(容量性電荷再分配DAC)の場合、グローバルDAC4707は、ローカルCDAC DACに追加の基準電圧を提供して、DAC分解能を拡張することができる。
【0219】
入力ブロック4300、4400、4500、4600、及び4700に関連する較正のための電気パラメータは、(DINxのビット数を変更することによる)ビット分解能の程度、(DAC4604及び4704並びにGDACx4301、4401、4501、4601、及び4707による)バイアスの程度(基準電圧の値を調整すること、又は可変抵抗器などの可変要素を調整することを意味する)、(DAC4604及び4704並びにGDACx4301、4401、4501、4601、及び4707による)電力消費の程度、(DAC4604及び4704並びにGDACx4301、4401、4501、4601、及び4707による)速度、(DAC4604及び4704並びにGDACx4301、4401、4501、4601、及び4707による)オフセットの程度、(DAC4604及び4704並びにGDACx4301、4401、4501、4601、及び4707による)温度補償の程度を含むことができるが、これらに限定されない。
【0220】
図48は、
図43、
図43、
図44、
図46、及び
図47の任意の個々のレジスタの代わりに使用することができる、行レジスタ4303、4403、4503、4603、及び4703のいずれかなどの例示的なデュアルレジスタブロック4800を示す。デュアルレジスタブロック4800は、選択信号1によって制御されるマルチプレクサ4803と、選択信号2によって制御されるマルチプレクサ4804と、行レジスタ4801及び4802とを備える。行レジスタ4801にマルチプレクサ4803を介してデータをロードすることができ、行レジスタ4802は、マルチプレクサ4804を介してデータを出力し、その逆も可能である。これにより、行レジスタのロード及び読み出しに必要な動作時間が短縮されるが、これは、これらの動作を同時に又は部分的に同時に行うことができるからである。対照的に、単一レジスタ構成では、データを読み出す前にレジスタにロードする時間が必要である。
【0221】
図49は、デジタル-アナログ変換器を備えることができる入力ブロックの例示的な入力-出力値4900を示す。ここで、入力ブロックは、256個の異なる値L0~L255に対応する8個のデジタルビットを受け取る。入力ブロックは、グラフに示すように、対数関数に従って、8つのデジタルビットに応答してアナログ電圧Vinを生成する。
【0222】
図50は、例示的な出力ブロック5000を示す。出力ブロックは、電流-電圧変換器5001(スケーラブルニューロン回路)及びアナログ-デジタル変換器5002を備える。電流-電圧変換器5001は、VMMアレイ内の列からの出力として出力電流Ineuを受け取り、この電流を電圧に変換する。アナログ-デジタル変換器5002は、電圧をn+1個のデジタルビットのセットD[n:0]に変換する。図示のように、電流-電圧変換器5001及びアナログ-デジタル変換器5002は構成可能である(例えば、nビット分解能、電力、レイテンシ、スケーリング)。
【0223】
図51は、入力ブロック(行入力バイアス生成器)5100を示す。入力ブロック5100は、kビットデジタル-アナログ変換器5101、マッピングスカラー5102、及びnビットアナログ-デジタル変換器5103を備える。kビットデジタル-アナログ変換器5101は、k個のビットを入力とし、線形関数又は対数関数を用いてアナログ信号を生成する。グラフ5105及び5107は、対数関数に従って生成されたアナログ信号の例を示し、グラフ5104及び5106は、線形関数に従って生成されたアナログ信号の例を示す。マッピングスカラー5102は、アナログ信号に対してスケーリング関数を実行し、nビットアナログ-デジタル変換器5103は、マッピングスカラー5102の出力をnビットのデジタル出力に変換する。したがって、出力ブロック5100は、マッピングスカラー5102を介してkビット値をnビット値に変換する。例えば、kは10~14ビットであり、nは5~8ビットである。変換(マッピング)は、例えば、
図59~
図64の較正回路によって支援される。
【0224】
図52は、デジタル入力及び1つ以上のバイアス電圧に応答して不揮発性メモリアレイに印加されるアナログ信号を生成するために、それぞれ
図43~
図47のGDAC4301、4401、4501、4601、及び4707に使用することができる調整可能なGDAC5220を示す。調整可能なGDAC5220は、グローバルDACx5221及びバイアス生成器5227を含む。バイアス生成器5227は、基準アレイ5223と、バイアス5224を生成するバイアス生成回路5222とを含む。バイアス生成回路5222は、基準アレイ5223を使用して、基準アレイ5223が経験する温度変化に基づいて温度が自動的に補償されるバイアス5224を生成する。例えば、バイアス5224は、基準アレイ5223の温度の影響を受ける基準アレイ5223によって引き出される電流に基づくことができる。このバイアス5224は、結果として生じ、アレイに供給される出力電圧5226が温度に対して補償されるように、グローバルDAC5221に供給される。
【0225】
図53は、
図43~
図47のグローバルデジタル-アナログ変換器及び行デコーダ4301、4401、4501、4601、及び4707に使用することができるグローバルデジタル-アナログ変換器及び行デコーダ5350の一例を示す。グローバルデジタル-アナログ変換器及び行デコーダ5350は、DAC5351、マッピングブロック5361、及び出力バッファ5371を含む。制御論理(図示せず)は、(ENなどのイネーブル信号を使用した様々なブロックのイネーブル、制御信号のマルチプレクサへの供給、及び他の制御機能などの機能を実行するために)GDACの動作を制御する。
【0226】
DAC5351は、高基準電圧VREFH及び低基準電圧VREFLを受け取る。DAC5351は、任意選択で線形関数又は対数関数に従って、VREFLとVREFHとの間の範囲の電圧を生成するために使用される複数の抵抗器の電圧ラダーを含む。例えば、電圧ラダー内の頂部抵抗器の頂部ノードは、電圧VREFHを有し、抵抗器の底部は、頂部抵抗器における電圧降下に起因して、より低い電圧を有する。底部抵抗器の底部ノードは電圧VREFLを有する。これにより、電圧ラダーは、VMMアレイの不揮発性メモリセルを線形モード又はサブスレッショルドモードで動作させるためにVMMアレイへの電圧供給が所望されるときに必要とされる複数の電圧レベル(L0、...、Lk)(例えば、kは4095であってもよい)を生成する。
【0227】
デジタル-アナログ変換器5351は、マッピングブロック5361内のサブブロック5363を介してm+1個の電圧のうちの1つを選択するために使用されるデジタル入力DIN[n:0]を受け取り、(m+1)=2^(n+1)である。例えば、(n+1)=8である場合、(m+1)=256である。マッピングブロック5361は、(m+1)個のトリムブロック5362及び(m+1)個のマルチプレクサ5363を含む。マッピングブロック5361は、DAC5351からのk+1個の電圧レベルを、DIN[n:0]に対応するそれぞれのアナログ出力に変換する。これは、例えば、アレイ内の不揮発性メモリセルがサブスレッショルド領域で動作している場合に有用であり得る各レベル(トリムブロックL0_trm、...Lm_trmによって表される)のローカルトリミングを用いて達成される。これは、サブスレッショルド領域又は線形領域内の温度に対するVMMアレイ内の不揮発性メモリセルの最も良好に整合するI-V傾斜を達成するために望ましい。
【0228】
基準電圧VREFL及びVREFHを調整することによって、k+1個のレベルも調整される。これは、例えば、この入力ブロックの出力範囲をメモリセルの入力範囲と一致させるためである。これは、基準レベルVREFL及びVREFHを、温度に対するメモリセルのゲートバイアスの基準レベルと一致するように調整する(例えば、高温では低くシフトし、低温では高くシフトする)ことによる温度補償のためでもある。更なる個々のレベル調整及び温度補償は、マッピングブロック5361のレベルトリミング回路によって行われる。変換(マッピング)及び温度補償は、例えば、
図59~
図64の較正回路によって支援される。
【0229】
図54は、中間的な中間基準レベルVREFMxが追加された、
図53と同様のグローバルデジタル-アナログ変換器及び行デコーダ5480の一例を示す。VREFMx基準レベルの調整及び温度挙動は、VREFH基準レベル及びVREFL基準レベルと同様に制御される。この例は、中間基準レベルを抵抗器ラダーに印加してGDAC5480のI-V傾斜整合とメモリアレイの入力とを更に調整するための追加のバッファ5482を含む。
【0230】
図79~
図81は、
図53及び
図54のグローバルデジタル-アナログ変換器及び行デコーダ5350及び5480の任意選択の実装形態に関する追加の詳細を示す。
【0231】
図79は、GDAC入力レベルから出力レベルへの選択方法7900を示す。この例では、4096個の異なるレベル入力(k=4095)があり、出力レベル(m=3)当たり4個のトリムビットTRIM[3:0]があり、256個の可能な出力レベル(L0..Ln)がある。
【0232】
図80は、GDAC入力レベルから出力レベルへの選択方法8000を示す。この例では、4096個のレベル入力(k=4095)があり、出力レベル(m=3)当たり4個のトリムビットTRIM[3:0]があり、256個の可能な出力レベル(L0..Ln)がある。ブロック8001はグループ選択である。図示のように、4つのグループが存在する。ブロック8002は、グループ選択ブロック8001からの1024個の可能な出力を調整するトリム選択ブロックである。ブロック8003は、64:1多重化を行う出力選択ブロックである。図示のように、
図79と比較して必要なトリムブロック回路の数は少ない。
【0233】
図81は、GDAC入力レベルから出力レベルへの選択方法8100を示す。この例では、4096個のレベル入力(k=4095)があり、出力レベル(m=3)当たり4個のトリムビットTRIM[3:0]があり、256個の出力レベル(L0..Ln)がある。ブロック8101はグループ選択である。図示のように、4つのグループが存在する。ブロック8102及び8103は、グループ選択ブロック8101からの1024個の可能な出力を調整するトリム選択ブロックである。ブロック8104及び8105は、64:1多重化を行う出力選択ブロックである。図示のように、
図79と比較して必要なトリムブロック回路の数は少ない。レイテンシを短縮するために、一方ではブロック8102と8104との間で、他方ではブロック8103と8105との間でピンポン法を実行することができる。例えば、ブロック8102が入力レベルの第1のセットに対してトリム動作を実行する間、入力レベルの第2のグループがブロック8103においてトリムビットを設定するために使用され、その逆も同様である。
【0234】
図55は、それぞれ
図43~
図47の行サンプルホールドバッファ4305、4405、4505、4605、及び4705によるサンプルホールド動作のための線形電圧レベルを示す例示的な波形5500を示す。GDAC出力は、いくつかの異なる値をとることができる。行サンプルホールドバッファ4305、4405、4505、4605、及び4705によって出力され得るサンプル値の2つの例、すなわち第1のサンプル値及び第2のサンプル値が示されている。このような値は、デジタル値が線形関数に従ってアナログ値に変換される線形領域で動作するVMMアレイ内のメモリセルに適している。
【0235】
図56は、それぞれ
図43~
図47の行サンプルホールドバッファ4305、4405、4505、4605、及び4705による例示的なサンプルホールド動作の対数電圧レベルを示す例示的な波形5600を示す。GDAC出力は、いくつかの異なる値をとることができる。行サンプルホールドバッファ4305、4405、4505、4605、及び4705によって出力され得るサンプル値の2つの例、すなわち第1のサンプル値及び第2のサンプル値が示されている。このような値は、デジタル値が対数関数に従ってアナログ値に変換されるサブスレッショルド領域で動作するメモリセルに適している。
【0236】
代替的には、グローバルDAC電圧波形は、飽和領域で動作するメモリセルに利用することができる。
【0237】
図57は、2つの出力が異なる動作温度で生成される、8ビット分解能(256個のレベル)の例示的な2つの線形デジタル-アナログ出力5700を示す。
【0238】
図58は、出力がセグメント化されている例示的なデジタル/アナログ出力5800を示す。各デジタル入力は、
図57と同じアナログ電圧出力に対応するが、入力は、それぞれが異なる電圧曲線に対応するサブグループにグループ化されている。例えば、入力L0~L63は電圧曲線V1に対応し、入力L64~L127は電圧曲線V2に対応し、入力L128~L191は電圧曲線V3に対応し、入力L192~L255は電圧曲線V4に対応する。これは、例えば、2つの最上位ビットを使用して、印加する電圧曲線V1、V2、V3、又はV4を決定し、次に残りの6ビットを選択された電圧曲線内の適切な電圧に変換することによって達成することができる。この例では、デジタル入力の数の1/4をグローバルDACによって変換する必要があるので、グローバルDACサンプリング時間は4分の1に短縮される。4個のセグメントの代わりに、2個、8個、又は16個などの他の数のセグメントを使用することができる。
【0239】
図59は、電流デジタル-アナログ変換器5901と、オペアンプ(演算増幅器)5902と、FETとして図示されるトランジスタ5903と、メモリセル5904とを備える例示的な行バイアス(I-Vセル/アレイ)較正回路5900を示す。電流デジタル-アナログ変換器5901は、デジタル入力DIN[0:n]を受け取ってアナログ電流を出力し、DIN[0:n]は、メモリセル5904によって引き出される可能性のある電流に対応する範囲のデジタル値を提供する。カスコーディングトランジスタ5903を有するオペアンプ5902は、メモリセル5904のビット線にバイアス基準電圧VREFを印加する。メモリセル5904の制御ゲート端子からの電圧は、CGbiasとして出力される。IDAC5901からの電流が変化すると、制御ゲート端子からの電圧もそれに応じて変化する。
【0240】
較正回路5900は、サブスレッショルド動作において、256個のレベルについて0.5nAステップで1~128nAの電流範囲で電圧CGbiasを生成するために使用され得る。したがって、電圧CGbiasに対して256個のレベルが存在し、各レベルは、電流ステップ当たり0.5nAの256個の電流レベルのうちの1つを反映する。これらのCGbias値を、
図43~
図47のDAC回路及びGDAC回路内の差異を補償するために、VMMアレイ内のメモリセルの行に適用することができ、その結果、所与のデジタル入力は、メモリセルを含む行がどのDAC回路に取り付けられているかにかかわらず、VMMアレイ内のメモリセルに対して同じ効果を有することになる。
【0241】
較正回路5900は、ニューロン電流(ビット線電流)などの所定の電流に対する等価電圧を生成するために使用することもできる。例えば、10μAのニューロン電流に対して、対応するCG電圧が存在する。この場合、メモリセル5904は、ニューラルメモリアレイ内のデータパターンを表すために、いくつかの混合電流パターンを有する複数のセル(サブスレッショルドモードで動作する)を含むことになる。複数のセルが使用される場合に得られるCGバイアス電圧は、温度の変化によってニューロン電流及びアレイ電流が変化しないように、読み出し動作中にアレイに印加される。
【0242】
図59及び
図60~
図62のメモリセル5904、6004、6134、及び6254(以下で説明する)は、
図34のVMMアレイ3401などのメインVMMアレイの一部、又は別個の基準セクタもしくは外部ミニアレイであってもよい。
【0243】
図60は、電流デジタル-アナログ変換器(IDAC)6001と、オペアンプ6002と、比較器6006と、FET6003と、メモリセル6004とを備える行バイアス較正回路6000を示す。FET6003は、カスケード関数を実行する。電流デジタル-アナログ変換器6001は、デジタル入力DIN[0:n]を受け取ってアナログ電流を出力し、DIN[0:n]は、メモリセル6004によって引き出される可能性のある電流に対応する範囲のデジタル値を提供する。カスコーディングFET6003を有するオペアンプ6002は、メモリセル6004のビット線BL(第1の端子)にバイアス基準電圧VREFを印加する。比較器6006は、その反転入力で第2の基準電圧VREF2を受け取り、その出力で制御信号6007を生成する。メモリセル6004の制御ゲート(第2の端子)の電圧、すなわちCGbiasは、比較器6006が極性を切り替えるまで掃引され、これは、カスコーディングFET6003の第1の端子がVREF2を超えたときに生じる値を制御信号6007が変化させることを意味する。制御信号6007の変化は、制御ゲートバイアスCGbiasをサンプリング及び保持するために使用され、CGbiasは、次いで、VMMアレイ内のセルの行の制御ゲート端子に印加されるバイアス電圧として使用される。メモリセル6004のソース線(第3の端子)は、接地に結合され得る。
【0244】
較正回路6000の用途は、
図59の較正回路5900の用途と同様である。
【0245】
図61は、電流DAC6131と、オペアンプ6132と、メモリセル6134とを備える例示的な行バイアス較正回路6130を示す。オペアンプ6132は、メモリセル6134内の電流がIDAC6131の電流と同じになるように、メモリセル6134の端子CG(第2の端子)に電圧を出力する。較正回路6100の用途は、
図59の用途と同様である。VREFは、ビット線BL(メモリセル6134の第1の端子)の正確な電圧を調整して、ビット線電圧差による不正確さを低減するために使用される電圧である。例えば、VREFは0.6Vであってもよく、これは、この動作中の電圧ビット線が0.6Vであることを意味する。メモリセル6134のソース線(第3の端子)は、接地に結合され得る。
【0246】
図62は、電流DAC6251と、バイアス制御回路6252と、メモリセル6254とを備える例示的な行バイアス較正回路6250を示す。電流DAC6251は、メモリセル6254のビット線(第1の端子)に接続される。バイアス制御回路6252は、メモリセル6254内の電流がIDAC6251の電流と同じになるように、メモリセル54のCG端子及びEG端子(いずれも第2の端子又は第4の端子と呼ぶことができる)の各々に電圧を出力する。VREFは、ビット線BL(メモリセル6254の第1の端子)の電圧を調整するために使用される電圧である。回路6250の用途は、
図59の用途と同様である。メモリセル6254のソース線(第3の端子)は、接地に結合され得る。CG端子及びEG端子の両方の電圧は、ビット線電圧がVREFを超えるまでとすることができ、その時点で、CG電圧及びEG電圧をバイアス電圧としてVMMアレイに印加することができる。
【0247】
図63は、例示的なバイアス制御回路6352を示す。例示的なバイアス制御回路6352は、不揮発性メモリセルの第1の端子(BL)から電圧を受け取るための反転端子と、基準電圧を受けるための非反転端子と、第1の出力とを含むオペアンプ6362(第1の演算増幅器)及び、オペアンプ6363(第2の演算増幅器)と、入力抵抗器R1 6367と、フィードバック抵抗器R2 6368とからなる利得回路を備える。利得は、例えば約1.9の比であってもよい比R2/R1によって定められる。したがって、オペアンプ6363の出力であるEGBIASは、CGbiasの約1.9倍である。他の比率も可能である。CGbiasは、他の例では、EGbiasの関数として提供され得る。
【0248】
図64は、電流DAC6471と、オペアンプ6472と、メモリセル6473とを備える例示的な較正回路6470を示す。電流DAC6471の出力は、メモリセル6473のビット線(第1の端子)に接続される。オペアンプ6472は、メモリセル6473内の電流がIDAC6471の電流と同じになるように、メモリセル6473のEG端子(第2の端子)に電圧を出力する。VREFは、ビット線BL(メモリセル6473の第1の端子)の電圧を調整するために使用される電圧である。任意選択で、オペアンプ6472は、
図63のようにバイアス制御EGCG_CTL回路6452で置き換えることができ、バイアス制御回路6452は、メモリセル6473内の電流がIDAC6471の電流と同じになるように端子CG及びEGに電圧を出力する。メモリセル6473のソース線(第3の端子)は接地に結合されている。
【0249】
図65は、マルチプレクサ6501と、キャパシタバンク6502と、バッファ6503とを備える入力ブロック6500を示す。マルチプレクサ6501は、m+1個のデジタルビット[m:0]を選択信号として受け取り、また、n+1個のキャパシタ(L0,.Ln)から電圧を受け取り、受け取ったデジタルビットに応答して、選択された電圧をバッファ6503に提供し、バッファ6503は、選択された電圧をバイアス電圧として出力する。これは、(
図43~
図47に示す方式の代わりに)DAC出力を生成する別の方式である。したがって、一例では、8ビットDAC(m=7)は、256個の電圧レベルを保持するために256個のキャパシタ(n=255)を備える。これらの電圧レベルは、例えば、デジタルビット入力に基づく線形関数又は対数関数に従って、
図59~
図64の行バイアス較正回路によって生成される。
【0250】
図66は、例示的な行入力回路6600を示す。行入力回路6600は、スイッチ6601、6602、6603、6604、及び6605と、キャパシタ6606及び6607と、比較器6608とを備える。行入力回路6600は、バッファ機能及びオフセット較正機能を提供する。オフセットキャパシタ6606は、スイッチ6603(第2のスイッチ)及び6602(第3のスイッチ)が閉じており、スイッチ6601(第1のスイッチ)、6605が開いているときに、オペアンプ6608のオフセット電圧をサンプリングする。次いで、キャパシタ6606は、スイッチ6601(第1のスイッチ)が閉じ、スイッチ6603(第2のスイッチ)及び6602(第3のスイッチ)が開いている状態で逆に再接続され、したがって、キャパシタ6606のオフセット電圧は、オペアンプ56098のオフセットを相殺する。
【0251】
図67は、グローバルデジタル-アナログ変換器6701と、グローバルデジタル-アナログ変換器6702と、スイッチ6703及び6704とを備える例示的なグローバル入力生成器6700を示す。グローバル入力生成器6700は、通常動作を遅延させることなくリアルタイム較正を可能にする。例えば、グローバルデジタル-アナログ変換器6701を使用してアレイを較正することができ、グローバルデジタル-アナログ変換器6702を読み出しニューラル動作に使用することができ、その逆も可能である。
【0252】
較正はまた、
図68~
図70に示すような以下の較正システムを使用して製造プロセス中に実行することができる。
【0253】
図68は、アレイ6801と、ニューロン電流比較回路6802と、バイアスコントローラ6803と備える製造較正システム6800を示す。アレイ6801は、較正中のVMMシステムの一部であり、最終的に使用のために現場に送られる。ニューロン電流比較回路6802及びバイアスコントローラ6803は、製造プロセス中に使用するために同じVMMシステム内にあってもよく、又は製造中にのみ使用される外部試験機器の一部であってもよい。アレイ6801は、所定の重みのセットを記憶するようにプログラムされる。次いで、ニューロン出力電流が生成され、サンプリングされ、ニューロン電流比較回路6802によって、この所定の重みのセットの目標ニューロン電流と比較される。比較に基づいて、バイアスコントローラ6803は、ニューロン出力が目標ニューロン電流に等しいか、又は目標ニューロン電流の許容閾値内であることをニューロン電流比較回路6802が示すまで、選択されたセルのCG端子又はEG端子に印加されるバイアス電圧を修正する。これは、限定はしないが、ニューラルネットワーク全体(複数の層を含み得る)、単一層、又は単一層の一部分に対して実行され得る。したがって、ニューロン電流比較回路6802は、複数のビット線から電流を受け取り、複数のビット線からの電流のサンプリングからアナログ出力を生成するためのサンプリングされたニューロン回路である。
【0254】
図69は、アレイ6801(第1のアレイ)と、基準アレイ6901(第2のアレイ)と、ニューロン電流比較回路6802と、バイアスコントローラ6803とを備える製造較正システム6900を示す。各ビット線は、アレイ6801内の列及び基準アレイ6901内の列に結合されている。製造較正システム6900は、アレイ6801上ではなく埋め込み基準アレイ6901上で動作が実行されることを除いて、製造較正システム6800と同様である。アレイ6801は、正規ベクトルマトリックス乗算演算に使用される。
【0255】
図70は、基準アレイ7001と、ニューロン電流比較回路6802と、バイアスコントローラ6803とを備える製造較正システム7000を示す。製造較正システム7000は、基準アレイ7001が別個であり、メインVMMアレイと同じデバイスに組み込まれていないことを除いて、製造較正システム6900と同様である。
【0256】
図68~
図70におけるニューロン電流のサンプリングは、ニューラル層又はネットワークの重み分布の平均値を表し得る。
【0257】
任意選択で、回路が基準電流Irefを利用するときはいつでも、
図69及び
図70の基準アレイ6901又は7001を使用して基準電流を生成することができる。これは、基準アレイ6901又は基準アレイ7001の(温度変化に起因する、又は較正によって行われる補正に起因するなどの)任意の変化が基準電流の生成にも伝播するため有用である。
【0258】
図71は、アレイ7101と、電流源7102と、バイアス制御回路7103とを備えるアレイ較正器7100を示す。電流源7102は目標電流を供給する。アレイ7101は、サンプリングされたニューロン電流出力を提供する。アレイ7101は、読み出し動作中にバイアス制御回路7103によってアレイの一部又は全部に印加される、(較正パラメータである)制御ゲートバイアス信号又は消去ゲートバイアス信号を変化させることによって較正することができる。アレイ7101によって供給される電流が電流源7102に等しい場合は、出力の極性が切り替わり、これは、印加された制御ゲートバイアス又は消去ゲートバイアスが適切であることを示す。任意選択で、較正パラメータは、動作温度及びアレイに記憶される値とともに、ルックアップテーブルに記憶され得る。
【0259】
図72は、アレイ7201と、抵抗器7202と、バイアス制御回路7203とを備える例示的な電流-電圧変換器7200を示す。抵抗器7202は出力電圧を提供する。アレイ7201は、サンプリングされたニューロン電流出力を提供する。アレイ7201から出力されるサンプリングされたニューロン電流は、読み出し動作中にバイアス制御回路7203によってアレイに印加される制御ゲートバイアス信号又は消去ゲートバイアス信号を変化させることによって変化させることができる。出力電圧が所望の目標電圧に等しい場合は、制御ゲートバイアス又は消去ゲートバイアスの所望の構成が達成されている。これは、例えば、
図68~
図70と併せて使用される。
【0260】
図73は、例示的な較正方法7300を示す。方法が開始する(動作7301)。次の動作は、不揮発性メモリセルのアレイの較正である(動作7302)。アレイの特性(ここでは、制御ゲート端子又は消去ゲート端子の電圧)が測定され、目標電圧(又は電流)などの目標と比較される(動作7303)。測定された電圧が目標電圧に等しいか、又は(所定の範囲の)許容可能なマージンだけ逸脱している場合、動作7303は、較正が必要かどうかを判定するために周期的に繰り返され、較正が必要な場合は、例えば、動作温度が変化した場合に起こり得る。測定電圧が目標電圧に等しくなく、(所定の範囲の)許容可能なマージンだけ逸脱しているのでもない場合、較正動作7302が繰り返される。
【0261】
図74は、例示的な較正方法7400を示す。方法が開始する(動作7401)。次の動作は、不揮発性メモリセルのアレイの較正である(動作7402)。温度センサは、特性(ここでは温度)を測定し、これを目標温度と比較する(動作7403)。測定された温度が目標温度に等しいか、又は(所定の範囲の)許容可能なマージンだけ逸脱している場合、動作7403は、較正が必要かどうかを判定するために周期的に繰り返され、較正が必要な場合は、動作温度が変化した場合に起こり得る。測定された温度が目標温度に等しくなく、(所定の範囲の)許容可能なマージンだけ逸脱しているのでもない場合、較正動作7402が繰り返される。
【0262】
図75は、例示的な較正方法7500を示す。方法が開始する(動作7501)。次の動作は、不揮発性メモリセルのアレイの較正である(動作7502)。温度センサは、特性(ここでは温度)を測定し、これを目標温度と比較する(動作7503)。測定された温度が目標温度に等しいか、又は(所定の範囲の)許容可能なマージンだけ異なる場合、動作7503が周期的に繰り返される。測定された温度が目標温度に等しくなく、(所定の範囲の)許容可能なマージンだけ逸脱しているのでもない場合、方法は動作7504に進み、アレイ特性(電圧又は電流、ここでは制御ゲート端子又は消去ゲート端子の電圧)が目標電圧と比較される。測定されたアレイ特性(例えば、電圧)が目標に等しいか、又は(所定の範囲の)許容可能なマージンだけ異なる場合、方法は動作7303に戻る。測定された特性が目標特性に等しくなく、(所定の範囲の)許容可能なマージンだけ逸脱しているのでもない場合、方法は動作7502に戻って較正を繰り返す。較正方法7500の利点は、測定されたアレイ特性が実際に目標と異なる場合にのみ較正手順を繰り返すことである。例えば、測定された温度が目標温度と異なるが、測定されたアレイ特性が目標と比較して依然として(所定の範囲の)許容可能なマージン内にある場合があり、その場合、較正は繰り返されない。
【0263】
図76は、例示的な較正方法7600を示す。方法が開始する(動作7601)。次の動作は、不揮発性メモリセルのアレイの較正である(動作7602)。時間センサが、事象の時間を測定し、これを目標時間と比較し、時間は、1度の増加が距離Xを隔てて感知されるのにかかる時間(熱伝導率)などの熱伝導率に関連し得る(動作7603)。これらが等しいか、又は(所定の範囲の)許容可能なマージンだけ異なる場合、較正が必要かどうかを判定するために、動作7603が周期的に繰り返される。これらが等しくなく、(所定の範囲の)許容できるマージンだけ異なるのでもない場合、方法7400は較正動作7402をトリガする。
【0264】
図77は、
図53~
図54のグローバルデジタル-アナログ変換器及び行デコーダ5350又は5480の例示的な較正方法7700を示す。方法が開始する(動作7801)。較正は、出力DAC_OUTを調整し、次いで、
図43~
図47の入力ブロック4300、4400、4500、4600、及び4700の複数の行のバイアス電圧を生成するために使用される、
図53又は
図54のグローバル基準レベルVREFL、VREFH、及び/又はVREFMを調整することによって実行される(動作7802)。方法が終了する(動作7803)。
【0265】
図78は、
図47のグローバルDAC4707及びローカルDAC4704に使用される例示的な較正方法7800を示す。方法が開始する(動作7801)。較正は、出力DAC_OUTを調整する
図53及び
図54のグローバル基準レベルVREFL、VREFH、及び/又はVREFMを調整することによって、
図47のGDAC4707に使用されるグローバルDAC及び行デコーダ5350又は5480(
図53及び
図54)に対して実行される(動作7802)。次いで、
図47のローカルデジタル-アナログ変換器4704が、
図47で較正される(動作7803)。方法が終了する(動作7804)。
【0266】
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「に間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に伴わずに形成すること、及びその要素を基板に間接的に1つ以上の中間材料/要素をそれらの間に伴って形成することを含み得る。
【手続補正書】
【提出日】2024-08-20
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0056
【補正方法】変更
【補正の内容】
【0056】
図13は、
図3に示されるメモリセル310に特に適しており、かつ入力層と次の層との間でシナプス及びニューロンの一部として利用される、ニューロンVMMアレイ1300を示す。VMMアレイ1300は、不揮発性メモリセルのメモリアレイ1303と、
第1の不揮発性基準メモリセルの基準アレイ130
1と、第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中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0190
【補正方法】変更
【補正の内容】
【0190】
次に、システムは、適用された電気パラメータが、構成要素又はシステムの公差に対応する範囲内など、所定の範囲内にあるかどうかを判定する(動作3604)。そうである場合、動作3601、3602、3603、及び3604が繰り返される。そうでない場合、(電気パラメータが許容可能な量を超えて調整されたことを意味するので)ネットワーク回路は不良であるとみなされ、使用されない(動作3605)。例えば、これは不良ダイの結果であり得る。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0205
【補正方法】変更
【補正の内容】
【0205】
アドレス行デコーダ4302-0~4302-nは、行アドレスADD[n:0]及びイネーブル信号ENを受信する。ENROWで示される各アドレス行デコーダの出力は、ADD[n:0]がその特定の行のアドレスであり、かつENがアサートされるときにハイである。行レジスタ4303-0~4303-nには、その特定の行のそれぞれのデジタル入力ビットDINx(xは8ビット又は16ビットなどのビット数である)がロードされ、ロード動作はクロック信号CLKによってトリガされ、DINxはその特定の行の活性化入力である。特定のアドレス行デコーダ4302の出力がハイであるとき、関連する行レジスタ4303がイネーブルされ、そのデジタルビットDINxを出力する。カウンタ4307は、信号ENによってイネーブルされると、別のクロック信号CLKB内のパルスをカウントする。カウンタ4307の出力はカウント値である。デジタル比較器ブロック4304-0~4304-nは、それぞれの行レジスタ4303の各々に記憶された活性化値DINxをカウント値と比較する。カウント値が特定の行レジスタ4302に記憶された値と一致する場合、対応する行サンプルホールドバッファ4305がイネーブルされて、グローバルDAC4301からのアナログ出力値をサンプリング及び保持する。グローバルDAC4301は、(当該行の行レジスタ4303のDINxにも一致する)カウント値に対してデジタル-アナログ変換を実行する。各行サンプルホールドバッファ4305は、保持したアナログ値を出力信号4306として出力する。例えば、x=8であり、DINxが8ビット入力である(DINxに256個の異なる値があることを意味する)場合、カウンタ4307は256までカウントし、次いでリセットされる。そうすることで、DINxの全ての可能な値がカバーされ、各行サンプルホールドバッファ4305にその関連するDINxの値がロードされる。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0209
【補正方法】変更
【補正の内容】
【0209】
図44は、
図34のVMMアレイ3401のようなVMMアレイに入力を提供するために使用される例示的な行入力ブロック4400を示す。入力ブロック4400は、グローバルデジタル-アナログ変換器(
GDAC)4401と、アドレス行デコーダ4402-0~4402-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、アドレス行デコーダと、行レジスタ4403-0~4403-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、行レジスタと、デジタルマルチプレクサ(mux)ブロック4404-0~4404-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、デジタルマルチプレクサブロックと、行サンプルホールドバッファ4405-0~4005-nであって、各々、VMMアレイ内の0~nの番号が付けられた行のうちの1つに対応する、行サンプルホールドバッファと、出力信号4406-0~4406-nであって、各々、0~nの番号が付けられた行のうちの1つに対応する、出力信号と、を含む。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0220
【補正方法】変更
【補正の内容】
【0220】
図48は、
図43、
図44、
図45、
図46、及び
図47の任意の個々のレジスタの代わりに使用することができる、行レジスタ4303、4403、4503、4603、及び4703のいずれかなどの例示的なデュアルレジスタブロック4800を示す。デュアルレジスタブロック4800は、選択信号1によって制御されるマルチプレクサ4803と、選択信号2によって制御されるマルチプレクサ4804と、行レジスタ4801及び4802とを備える。行レジスタ4801にマルチプレクサ4803を介してデータをロードすることができ、行レジスタ4802は、マルチプレクサ4804を介してデータを出力し、その逆も可能である。これにより、行レジスタのロード及び読み出しに必要な動作時間が短縮されるが、これは、これらの動作を同時に又は部分的に同時に行うことができるからである。対照的に、単一レジスタ構成では、データを読み出す前にレジスタにロードする時間が必要である。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0250
【補正方法】変更
【補正の内容】
【0250】
図66は、例示的な行入力回路6600を示す。行入力回路6600は、スイッチ6601、6602、6603、6604、及び6605と、キャパシタ6606及び6607と、比較器6608とを備える。行入力回路6600は、バッファ機能及びオフセット較正機能を提供する。オフセットキャパシタ6606は、スイッチ6603(第2のスイッチ)及び6602(第3のスイッチ)が閉じており、スイッチ6601(第1のスイッチ)、6605が開いているときに、オペアンプ6608のオフセット電圧をサンプリングする。次いで、キャパシタ6606は、スイッチ6601(第1のスイッチ)が閉じ、スイッチ6603(第2のスイッチ)及び6602(第3のスイッチ)が開いている状態で逆に再接続され、したがって、キャパシタ6606のオフセット電圧は、オペアンプ
6608のオフセットを相殺する。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0262
【補正方法】変更
【補正の内容】
【0262】
図75は、例示的な較正方法7500を示す。方法が開始する(動作7501)。次の動作は、不揮発性メモリセルのアレイの較正である(動作7502)。温度センサは、特性(ここでは温度)を測定し、これを目標温度と比較する(動作7503)。測定された温度が目標温度に等しいか、又は(所定の範囲の)許容可能なマージンだけ異なる場合、動作7503が周期的に繰り返される。測定された温度が目標温度に等しくなく、(所定の範囲の)許容可能なマージンだけ逸脱しているのでもない場合、方法は動作7504に進み、アレイ特性(電圧又は電流、ここでは制御ゲート端子又は消去ゲート端子の電圧)が目標電圧と比較される。測定されたアレイ特性(例えば、電圧)が目標に等しいか、又は(所定の範囲の)許容可能なマージンだけ異なる場合、方法は動作7
503に戻る。測定された特性が目標特性に等しくなく、(所定の範囲の)許容可能なマージンだけ逸脱しているのでもない場合、方法は動作7502に戻って較正を繰り返す。較正方法7500の利点は、測定されたアレイ特性が実際に目標と異なる場合にのみ較正手順を繰り返すことである。例えば、測定された温度が目標温度と異なるが、測定されたアレイ特性が目標と比較して依然として(所定の範囲の)許容可能なマージン内にある場合があり、その場合、較正は繰り返されない。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0263
【補正方法】変更
【補正の内容】
【0263】
図76は、例示的な較正方法7600を示す。方法が開始する(動作7601)。次の動作は、不揮発性メモリセルのアレイの較正である(動作7602)。時間センサが、事象の時間を測定し、これを目標時間と比較し、時間は、1度の増加が距離Xを隔てて感知されるのにかかる時間(熱伝導率)などの熱伝導率に関連し得る(動作7603)。これらが等しいか、又は(所定の範囲の)許容可能なマージンだけ異なる場合、較正が必要かどうかを判定するために、動作7603が周期的に繰り返される。これらが等しくなく、(所定の範囲の)許容できるマージンだけ異なるのでもない場合、方法7
600は較正動作7
602をトリガする。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】0264
【補正方法】変更
【補正の内容】
【0264】
図77は、
図53~
図54のグローバルデジタル-アナログ変換器及び行デコーダ5350又は5480の例示的な較正方法7700を示す。方法が開始する(動作7
701)。較正は、出力DAC_OUTを調整し、次いで、
図43~
図47の入力ブロック4300、4400、4500、4600、及び4700の複数の行のバイアス電圧を生成するために使用される、
図53又は
図54のグローバル基準レベルVREFL、VREFH、及び/又はVREFMを調整することによって実行される(動作7
702)。方法が終了する(動作7
703)。
【国際調査報告】