(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-17
(54)【発明の名称】ニューラルネットワークにおける1つ以上のメモリセルに印加するためのバイアス電圧の決定
(51)【国際特許分類】
G11C 16/08 20060101AFI20241210BHJP
G11C 11/54 20060101ALI20241210BHJP
G11C 7/04 20060101ALI20241210BHJP
H10B 41/30 20230101ALI20241210BHJP
H10B 41/35 20230101ALI20241210BHJP
H01L 21/336 20060101ALI20241210BHJP
G11C 11/56 20060101ALI20241210BHJP
G06N 3/063 20230101ALI20241210BHJP
【FI】
G11C16/08 120
G11C11/54
G11C7/04
H10B41/30
H10B41/35
H01L29/78 371
G11C11/56 220
G06N3/063
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024521166
(86)(22)【出願日】2022-01-27
(85)【翻訳文提出日】2024-06-04
(86)【国際出願番号】 US2022014166
(87)【国際公開番号】W WO2023086117
(87)【国際公開日】2023-05-19
(32)【優先日】2021-11-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-01-26
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】トラン、ヒュー バン
【テーマコード(参考)】
5B225
5F083
5F101
【Fターム(参考)】
5B225BA02
5B225BA03
5B225CA07
5B225DA10
5B225DD07
5B225DD11
5B225DE02
5B225EA01
5B225EG14
5B225FA01
5B225FA06
5B225FA07
5F083EP02
5F083EP18
5F083EP24
5F083ER02
5F083ER09
5F083ER13
5F083ER17
5F083ER18
5F083KA01
5F083KA05
5F101BA01
5F101BA45
5F101BB04
5F101BC11
5F101BE02
5F101BE05
5F101BE06
(57)【要約】
温度が変化するときに、正確性又は電力消費に関して、深層学習人工ニューラルネットワークにおけるアナログニューラルメモリを改善するための多数の実施形態が開示される。いくつかの実施形態では、ニューラルネットワークにおける1つ以上のメモリセルに印加するためのバイアス値をリアルタイムで決定するための方法が実行される。他の実施形態では、バイアス電圧は、ルックアップテーブルから決定され、読み出し動作中に、メモリセルの端子に印加される。
【選択図】
図6
【特許請求の範囲】
【請求項1】
ニューラルネットワークのための方法であって、前記方法は、
メモリセルのセットに関連付けられた動作温度を検知するステップと、
前記検知された動作温度に基づいて、ルックアップテーブルにおいてバイアスを決定するステップと、
前記決定されたバイアスを前記メモリセルのセットの端子に印加するステップと、
前記メモリセルのセットに対して読み出し動作を実行するステップと、を含む、方法。
【請求項2】
前記バイアスはメモリセルから生成される、請求項1に記載の方法。
【請求項3】
前記メモリセルのセットは、前記ニューラルネットワークにおけるニューロンを含む、請求項1に記載の方法。
【請求項4】
前記メモリセルのセットは第1のアレイ内に配置されている、請求項1に記載の方法。
【請求項5】
メモリセルの第2のセットに関連付けられた第2の動作温度を検知するステップと、
前記第2の動作温度に基づいて、ルックアップテーブルにおいて第2のバイアスを決定するステップと、
前記決定された第2のバイアスを前記メモリセルの第2のセットの端子に印加するステップであって、前記メモリセルの第2のセットは、前記第1のアレイとは異なる第2のアレイ内に配置されている、印加するステップと、
前記メモリセルの第2のセットに対して読み出し動作を実行するステップと、を更に含む、請求項4に記載の方法。
【請求項6】
前記メモリセルのセットは、前記ニューラルネットワークにおける単一層に含まれる、請求項1に記載の方法。
【請求項7】
前記メモリセルのセットは、前記ニューラルネットワークにおける複数のアレイ内の全てのメモリセルを含む、請求項1に記載の方法。
【請求項8】
前記メモリセルのセットは、前記ニューラルネットワークにおける複数のアレイ内の1つ以上の選択されたアレイ内の全てのメモリセルを含む、請求項1に記載の方法。
【請求項9】
前記メモリセルのセットはスプリットゲートフラッシュメモリセルを含む、請求項1に記載の方法。
【請求項10】
前記メモリセルのセットはスタックゲートフラッシュメモリセルを含む、請求項1に記載の方法。
【請求項11】
バイアスルックアップテーブルに投入するための方法であって、前記方法は、
N個の値のうちのいずれかを記憶することができるメモリセルを、前記N個の値のうちの1つでプログラムするステップと、
増加するサイズの一連の電流を、前記プログラムされたメモリセルのビット線に流すステップと、
比較出力を生成するために、前記ビット線の電圧を基準電圧と比較するステップと、
前記比較出力が値を変化させるときに、前記メモリセルの制御ゲート端子の電圧を測定し、前記電圧をルックアップテーブルに記憶するステップと、を含む、方法。
【請求項12】
前記メモリアレイは不揮発性メモリセルを含む、請求項11に記載の方法。
【請求項13】
前記メモリアレイは揮発性メモリセルを含む、請求項11に記載の方法。
【請求項14】
前記制御ゲート端子の前記電圧は、サンプルアンドホールド回路を使用して測定される、請求項11に記載の方法。
【請求項15】
ニューラルネットワークのための方法であって、前記方法は、
動作温度を検知するステップと、
前記検知された動作温度をデジタルビットで示すステップと、
出力ニューロン電流を電圧に変換するステップと、
前記デジタルビットに応答して、前記電圧をスケーリングするステップと、を含む、方法。
【請求項16】
バイアスを生成するための電圧平均化回路であって、
出力ノードと接地との間に結合された可変レジスタと、
複数の測定ブロックであって、各測定ブロックは、それぞれの入力電圧を電流に変換し、かつ前記電流を前記出力ノードにミラーする、複数の測定ブロックと、を備え、
前記出力ノードは、前記入力電圧の平均に等しいバイアスを前記複数の測定ブロックに提供する、電圧平均化回路。
【請求項17】
前記出力ノードにおける電圧が、各測定ブロックによって提供された値の合計に等しく、前記値は、前記測定ブロックによって受信された前記入力電圧に前記可変レジスタの比率を乗算し、前記測定ブロックの前記レジスタの合計で除算し、前記それぞれの入力電圧の前記合計を乗算したものを含む、請求項16に記載の電圧平均化回路。
【請求項18】
前記出力電圧は、前記ニューラルネットワークメモリアレイ内の1つ以上のセルの制御ゲート端子に印加される、請求項17に記載の電圧平均化回路。
【請求項19】
ニューラルネットワークのための方法であって、前記方法は、
メモリセルのセットに関連付けられた動作温度を検知するステップと、
前記検知された動作温度に基づいて、バイアスを決定するステップと、
前記決定されたバイアスを前記メモリセルのセットの端子に印加するステップと、
前記メモリセルのセットに対して読み出し動作を実行するステップと、を含む、方法。
【請求項20】
前記メモリセルのセットは、前記ニューラルネットワークにおけるニューロンを含む、請求項19に記載の方法。
【請求項21】
前記バイアスはメモリセルから生成される、請求項19に記載の方法。
【請求項22】
メモリアレイのためのバイアスを生成するための方法であって、前記方法は、
値を記憶するように、メモリセルをプログラムするステップと、
前記プログラムされたメモリセルのビット線に、増加するサイズの一連の電流を流すステップと、
前記バイアスを決定するように、前記メモリセルの制御ゲート端子の電圧を測定するステップと、を含む、方法。
【請求項23】
前記決定されたバイアスを記憶するステップ、を更に含む、請求項22に記載の方法。
【請求項24】
メモリセルのアレイ内の1つ以上のメモリセルに対する動作中に、前記バイアスを前記1つ以上のメモリセルに印加するステップを更に含む、請求項23に記載の方法。
【請求項25】
前記アレイはアナログニューラルメモリアレイである、請求項24に記載の方法。
【請求項26】
前記プログラムされたメモリセルの複数の異なる動作温度について、前記プログラムするステップ、前記流すステップ、前記測定するステップ、及び前記記憶するステップを実行するステップを含む、請求項23に記載の方法。
【請求項27】
ニューラルネットワークにおけるメモリアレイのためのバイアスをリアルタイムで決定するための方法であって、前記方法は、
値を記憶するように、メモリセルをプログラムするステップと、
前記プログラムされたメモリセルのビット線に所定の電流を流すステップと、
前記バイアスを決定するように、前記メモリセルの制御ゲート端子の電圧を測定するステップと、を含む、方法。
【請求項28】
前記バイアスを記憶するステップ、を更に含む、請求項27に記載の方法。
【請求項29】
メモリセルのアレイ内の1つ以上のメモリセルに対する動作中に、前記バイアスを前記1つ以上のメモリセルに印加するステップを更に含む、請求項28に記載の方法。
【請求項30】
前記アレイはアナログニューラルメモリアレイである、請求項29に記載の方法。
【請求項31】
前記プログラムされたメモリセルの複数の異なる動作温度について、前記プログラムするステップ、前記印加するステップ、前記測定するステップ、及び前記記憶するステップを実行するステップを含む、請求項28に記載の方法。
【請求項32】
ニューラルネットワークのための方法であって、前記方法は、
メモリセルをプログラムするステップと、
増加するサイズの一連の電流を、前記プログラムされたメモリセルのビット線に流すステップと、
比較出力を生成するために、前記ビット線の電圧を基準電圧と比較するステップと、
前記比較出力が値を変化したときに、前記メモリセルの制御ゲート端子の電圧を測定し、そして、前記電圧を、決定されたバイアスとして記憶するステップと、
前記決定されたバイアスを前記メモリセルのセットの端子に印加するステップと、
前記メモリセルのセットに対して読み出し動作を実行するステップと、を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本出願は、2021年11月12日に出願された「Optimization of Analog Neural Memory in a Deep Learning Artificial Neural Network as to Performance,Power,or Temperature」と題する米国仮特許出願第63/279,028号、及び2022年1月26日に出願された「Determination of a Bias Voltage to Apply to One or More Memory Cells in a Neural Network」と題する米国特許出願第17/585,452号の優先権を主張する。
【0002】
(発明の分野)
様々な温度環境におけるパフォーマンス又は電力に関して、深層学習人工ニューラルネットワークにおけるアナログニューラルメモリを改善するための多数の実施形態が開示される。
【背景技術】
【0003】
人工ニューラルネットワークは、生物学的ニューラルネットワーク(動物の中枢神経系、特に脳)を模倣しており、多数の入力に依存し得、かつ、一般的に未知である関数を推定する又は近似するために使用される。人工ニューラルネットワークは、通常、お互いの間でメッセージを交換する相互接続した「ニューロン」の層を含む。
【0004】
図1は人工ニューラルネットワークを示しており、図中、円は、入力又はニューロンの層を例解する。接続(シナプスと呼ばれる)は、矢印によって表され、経験に基づいてチューニングされ得る数値の重みを有する。これにより、ニューラルネットワークは入力に適応し、学習可能になる。典型的には、ニューラルネットワークは、複数の入力の層を含む。典型的には、ニューロンの1つ以上の中間層、及びニューラルネットワークの出力を提供するニューロンの出力層が存在する。各レベルのニューロンが、シナプスから受信したデータに基づいて個々に又は集合的に決定を行う。
【0005】
高性能情報処理用の人工ニューラルネットワークの開発における主要な課題のうちの1つは、適切なハードウェア技術の欠如である。実際に、実用ニューラルネットワークは、非常に多数のシナプスに依拠しており、これによりニューロン間の高い接続性、すなわち、非常に高度な計算処理の並列化が可能となる。原理的には、このような複雑性は、デジタルスーパーコンピュータ又は専用グラフィックプロセッシングユニットクラスタによって実現が可能である。しかしながら、高コストに加え、これらのアプローチはまた、生物学的ネットワークが主として低精度のアナログ計算を実行するのではるかに少ないエネルギーしか消費しないのと比較して、エネルギー効率が劣っていることに悩まされている。人工ニューラルネットワークにはCMOSアナログ回路が使用されてきたが、ほとんどのCMOS実装シナプスは、多数のニューロン及びシナプスを前提とすると、嵩高過ぎていた。
【0006】
出願人は以前に、参照により組み込まれる米国特許出願第15/594,439号において、シナプスとして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は、読み出し動作、消去動作、及びプログラム動作を実行するためにメモリセル110の端子に印加され得る典型的な電圧及び電流範囲を示す。
表1:
図3のフラッシュメモリセル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(ferroelectric 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つの目的を果たす。第一に、それは、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つの目的を果たす。第1に、メモリアレイ1203は、VMMアレイ1200によって使用される重みを記憶する。第2に、メモリアレイ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】
場合によっては、正確性が非常に重要であり、システムの正確性を(おそらく、電力消費を犠牲にして)改善することが望ましい。他の例では、電力管理は非常に重要であり、(おそらく、正確性を犠牲にして)システムの電力消費を改善する(すなわち、電力消費を低減する)ことが望ましい。他の例では、動作温度が変化するときに、正確性を維持するための能力が望ましい。電力消費及び正確性の代わりに、待ち時間又は他のパフォーマンス基準などの他の特性を最大化することができる。
【0090】
様々な温度環境において正確性又は電力消費を改善するために、ニューラルネットワークシステムの特性を変更することができることが望ましい。
【発明の概要】
【0091】
温度変化としての正確性、電力消費、又は他の基準に関して、深層学習人工ニューラルネットワークにおけるアナログニューラルメモリを改善するための多数の実施形態が開示される。いくつかの実施形態では、ニューラルネットワーク内の1つ以上のメモリセルに印加するバイアス値をリアルタイムで決定するための方法が実行される。他の実施形態では、バイアス電圧は、ルックアップテーブルから決定され、読み出し動作中にメモリセルの端子に印加される。
【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】
【
図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】ベクトルマトリックス乗算システムの別の実施形態を示す。
【
図35】ニューラルネットワークからのパフォーマンスデータを示す。
【
図43】スケーラ及びアナログデジタル変換器の一実装を示す。
【発明を実施するための形態】
【0145】
本発明の人工ニューラルネットワークは、CMOS技術及び不揮発性メモリアレイの組み合わせを利用する。
<VMMシステムの概要>
【0146】
図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に実装され得る。
【0147】
入力回路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の傾斜をほぼ同じに保つことになどによってアレイ(ニューロン)出力の精度を高めるために、ニューロン出力又はアレイ出力(ビット線出力など)のための温度補償関数を実装し得る。
【0148】
上述したように、ニューラルネットワークは、多くの異なる層を含むことができ、各層内で、その層内の1つ以上のアレイに記憶された重み値を必要とする多くの計算が実行されることになる。いくつかの層は、他の層よりも多く使用されることになり、そのような層は、それらの高い使用頻度に基づいてニューラルネットワークの全体的な正確性にとってより重要であることが理解され得る。
【0149】
図35は、MNIST(Modified National Institute of Standards and Technology、米国国立標準技術研究所)桁分類のためのMLP(multi-layer perceptron、多層パーセプトロン)ニューラルネットワーク内の重みの使用頻度に関して、本発明者らによって収集されたデータを反映するグラフ3501を示している。図示の例では、n個のレベルがあり、ここで、各L(L0、...、Ln)は、重みの範囲を表す。見て分かるように、より低い重みは、他の重み範囲よりもはるかに頻繁に使用される。このグラフでは、一例として、Lnは、全体的なネットワークパフォーマンスに大きくは寄与しない。したがって、レベルLnにおいてアレイに印加される制御ゲート電圧を低減することなどによって、Lnを0値に設定することができ、これは、正確性に著しく影響を及ぼすことなく、より低い制御ゲート電圧において引き出されるより低いセル電流に起因して、より低い電力消費をもたらす。
【0150】
ニューラルネットワークは、複数の層を含む。各層は、その層に固有である重み分布を有することができる。したがって、全体的なネットワークパフォーマンスを改善するために、層毎に異なる技術が必要とされ得る。例えば、Lnは、第1の層では少量しか寄与しない可能性があるが、第2の層では有意に寄与する可能性がある。
【0151】
本実施例は、ニューラルネットワークの動作を改善する方法を提供する。最適化という用語が利用される場合があるが、本方法は、絶対的な最適化、すなわち、可能な限り完全な、機能的な、又は効果的な最適化を必ずしも保証するものではなく、代わりに、本明細書で使用される場合の最適化という用語は、単に従来技術の方法に対する改善として意味するものであることを理解されたい。
【0152】
図35はまた、読み出し動作中に、メモリセルの制御ゲートに印加される電圧VCGの変化に基づく読み出し動作の正確性を示す表3502を示している。図から分かるように、VCGを1.8Vから1.6Vに下げることは、正確性に影響を与えず、VCGを1.5Vから1.4Vに下げることは、正確性に小さな影響を与える。VCG(又はVEG)が低下するにつれて、セル電流は、サブスレッショルド式に基づいて、指数関数的に低下する。これは、場合によっては、正確性を犠牲にすることなく、又は正確性を許容可能な程度まで犠牲にしながら、メモリセルの端子に印加される電圧を降下させることによって、電力が節約され得ることを示す。同様に、線形領域において、より低い入力行電圧は、より低い電流をもたらす。更に、動作温度の変化は、正確性及び電力消費の両方に影響を及ぼす可能性があり、同様に、VCG及び/又はEG調整(すなわち、大きさの増加又は減少)を使用して、温度が変化するにつれて、改善された電力及び/又は正確性を得ることができることを理解することができる。
【0153】
図35のこの考察に基づいて、メモリセル(CG、EG、WLなど)の1つ以上の端子に対して異なるバイアス電圧を決定及び印加して、電力消費を改善する(おそらく、正確性を犠牲にして、例えば、使用されるVCGを低下させることによって)、静的温度条件中に正確性を改善する(おそらく、電力消費を犠牲にして、例えば、使用されるVCGを増加させることによって)、又は変化する温度条件中に正確性を改善若しくは維持する(おそらく、電力消費を犠牲にして、例えば、温度が変化するにつれてVCGを増加させることによって)ことができることが理解されよう。正確性及び電力消費の代わりに、他のパフォーマンス特性を最大化することができる。
【0154】
これらの概念を念頭において、様々な方法が、ここで説明される。
【0155】
図36は、ニューラルネットワーク内の特定の層に対して実行されるニューラルネットワーク層方法3600を示す。例えば、この方法は、全体的なネットワーク正確性に対する重大な影響に起因して、より重要であると考えられる1つの層(又は1つ超の層)で実行され得る。
【0156】
ステップ3601において、デフォルト電圧バイアスが、読み出し動作中に、層のアレイ内のセルの端子(例えば、制御ゲート端子)に印加される。このデフォルト電圧バイアスは、通常、プログラムされた重みが検証されるときの、検証動作中に使用されるバイアス値と同じである。
【0157】
ステップ3602において、パフォーマンス推論が行われる。
【0158】
ステップ3603において、デフォルトバイアスがアレイに印加されるときの、ネットワークのパフォーマンス(例えば、正確性)に関するベースラインデータが収集される。このデータは、例えば、MNIST推論演算の正確性を示すデータである。このベースラインデータは、ステップ3605におけるパフォーマンス目標チェックのための基準点として機能することになる。
【0159】
ステップ3604において、バイアスが調整され(例えば、特定の増分だけ増加又は減少され)、次いで、アレイの層内のセルの端子(例えば、制御ゲート端子)に印加される。
【0160】
ステップ3605では、パフォーマンス目標チェックが実行される。パフォーマンスデータ結果が、ステップ3603において実行されたパフォーマンスデータ収集と比較して目標範囲内にある場合、本方法は、パフォーマンス目標が満たされなくなるまでステップ3604に進み、満たされなくなった時点で、本方法は、ステップ3606の完了に進み、本方法は、目標範囲内のパフォーマンスデータをもたらしたバイアスの最後のセットであった以前のバイアス条件を記憶する。
【0161】
ステップ3606において、以前のバイアスのセットは、良好であるとみなされ、その層に関連して将来の使用のために(ルックアップテーブルなどに)記憶される。任意選択的に、現在の動作温度は、バイアスレベルとともに記憶されることができる。
【0162】
図37は、ニューラルネットワークアレイ3700を示す。ニューラルネットワークアレイ3700は、アレイ3701-0、...、3701-nを備え、ここで、n+1は、ニューラルネットワーク3700内のアレイの数である。ニューラルネットワーク3700はまた、温度センサ3703-iを備え、ここで、iは、ニューラルネットワーク3700内の特定の場所内の動作温度を検知するセンサの数である。任意選択的に、各アレイ3701-0、...、3701-nは、各温度センサ3703がアレイ3701-0、...、3701-nのうちの1つ、及びそのようなアレイに含まれるメモリセルに関連付けられるように、(i=n+1となるように)それ自体の温度センサ3703を含む。温度電圧バイアスルックアップテーブル(lookup table、LUT)3704-i(ここで、iは、電圧バイアスルックアップテーブルの数である)が参照され、検知された温度に基づいて、1つ以上の端子(例えば、限定するものではないが、制御ゲート端子又は消去ゲート端子)のためのバイアス電圧が取得される。次いで、温度バイアス3702と呼ばれるそれらのバイアス電圧が、問題の特定のアレイ内の各セルに印加される。したがって、温度バイアス3702-0が、アレイ3701-0に印加され、以下同様である。各アレイ3701-0、...、3701-nは、ニューラルネットワーク内の1つ以上のニューロンを形成する。
【0163】
図38は、アレイ3801を示す。アレイ3801は、例えば、
図37のアレイ3701-0、3701-nのうちのいずれかに使用することができる。この実施形態では、同じアレイ3801内に含まれる異なるサブアレイ3802-0、...、3802-kに対して異なるバイアス電圧(例えば、VCG)を使用することができ、すなわち、アレイ3801は、複数のサブアレイに分割される。例えば、各サブアレイ3802-0、...、3802ーkは、それ自体の温度バイアス3803-0、...、3803-kをそれぞれ受信することができる。アレイ3801内の異なる場所で測定された特定の動作温度に基づく補償を可能にすることに加えて、この実施形態はまた、異なるタイプの重みが各サブアレイ3802に記憶される状況にも適している。各電流範囲が異なる温度バイアスを必要とする可能性があるため、例えば、サブアレイ3802-0は、0~30nAの範囲の重みを記憶し得、アレイ3801-1は、30~60nAの範囲の重みを記憶し得、以下同様である。
【0164】
この実施形態はまた、異なるアレイ内のメモリセルが異なるモード(領域)で動作する状況にも適している。例えば、異なるモード(領域)が異なる温度バイアスを必要とする可能性があるため、サブアレイ3802-0内のセルは、サブスレッショルドモードで動作し得るが、サブアレイ3802-n内のセルは、線形モードで動作し得る。
【0165】
図39は、ニューラルネットワークアレイ3900を示す。この実施形態では、
図38に関する教示は、ニューラルネットワークアレイ3900内のm+1個のアレイ3901-0、...、3901-mに拡張される。各アレイ3901は、k+1個のアレイ3902-0a、...、3902-kaに分割される(ここで、aは、0からmまでの範囲のアレイ番号である)。各アレイ3902は、それ自体の温度バイアス3903-0a、...、3903-kaをそれぞれ受信する。各アレイ3901は、異なる数のアレイに分割することができ、他のアレイ3901と同じ数のアレイに分割する必要はないことを更に理解されたい。
【0166】
図40Aは、ニューラルネットワークアレイ4000を示す。単一層内の典型的なニューラルネットワーク読み出し(推論)動作では、デジタル入力値DIN[m:0]が、アレイ4001に印加され、その結果、デジタル出力DOUT[n:0](又は代替として、アナログ値)が得られる。アレイ4001は、アレイ又はアレイの一部であってもよい。
【0167】
ニューラルネットワーク4000では、ルックアップテーブル4003内の1つ以上の値を見つけるために、基準が使用される。この基準は、例えば、所望の入力値及び出力値、現在の動作温度値、並びに最低電力消費、目標パフォーマンス(例えば、正確性若しくは待ち時間)、又はある特定の温度におけるパフォーマンスを目標とすることが所望されるかどうかを含み得る。次いで、ルックアップテーブル4003は、これらの基準に基づいて、バイアスを提供することになる。その後、バイアスは、読み出し動作中にアレイ4001に印加され、方法4000が完了する。アレイ4001は、不揮発性メモリセル又は揮発性メモリセルを含むことができる。
【0168】
図40Bは、バイアスルックアップテーブル(bias look up table、BLUT)4020を示す。アレイ4021は、揮発性又は不揮発性メモリセルのアレイ又はアレイの一部である。アレイ4021は、デジタル入力DIN[m:0]を受信し、デジタル出力DOUT[n:0]を出力する。デジタル出力データパターンは、限定するものではないが、線形若しくはサブスレッショルドメモリセル関係から、又はシリコン特性データからなどの所望の出力に応じてプログラム可能である。次いで、デジタル出力データDOUT[n:0]は、デジタルアナログ変換器4022に印加され、この変換器は、問題のアレイ又はサブアレイに印加される所望のバイアスアナログ電圧を出力する。BLUT4020は、例えば、ニューラルネットワークのパフォーマンスを改善するために、温度センサとともにバイアス値、すなわち温度バイアスを提供するために使用される。
【0169】
図41は、バイアス生成回路4100を示す。温度センサ4101Aは、動作温度を検知し、デジタルビットD[m:0]で動作温度を示す。任意選択的に、タイマー4104は、例えば、10~100ms(ネットワークパフォーマンスに著しくは影響を及ぼさない許容可能な温度変化として摂氏1度を用いて、シリコンが例として摂氏1度増加するのにかかる時間)毎などに、温度検知及び後続のバイアス生成を開始することができる。それらのD[m:0]ビットは、その動作温度に基づいて印加されるべきバイアス値、すなわち、適切な温度バイアスを見つけるために、ルックアップテーブル4102において参照を実行するために使用される。バイアス値はデジタルビットD[k:0]で示され、デジタルビットはデジタルアナログ変換器4103に提供され、デジタルアナログ変換器はデジタルビットをバイアス電圧に変換し、次いで、バイアス電圧は、読み出し(推論)動作中にアレイ内のメモリセルの端子(例えば、制御ゲート端子)に印加され得る。
【0170】
図42は、スケーリング回路4200を示す。温度センサ4201は、動作温度を検知し、デジタルビットD[n:0]で動作温度を示す。それらのデジタルビットはスケーラ4202に提供され、スケーラはまた、ニューロン読み出し動作の結果としてアレイから出力ニューロン電流Ineuも受信する。スケーラ4202は、Ineuの電流電圧変換を実行し、D[n:0]に基づいてその信号のスケーリングを実行する。例えば、サブスレッショルド領域の場合、より高い温度は、(より高いメモリセル電流に起因して)より高いニューロン電流をもたらし、したがって、ADC4203に印加される前にこの電流をスケールダウンすることが望ましい。線形領域の場合、より高い温度は、典型的に、(より低いセル電流に起因して)より低いニューロン電流をもたらし、したがって、ADC4203に印加される前に、この電流をスケールアップすることが望ましい。その結果は、アナログデジタル変換器4203に提供される、温度にわたってよりバランスの取れたアナログ値であり、Ineuのスケーリングされたデジタルバージョンを表すデジタル出力ビットD[n:0]をもたらし、このスケーリングは、動作温度を検知することを少なくとも部分的に補償する。
【0171】
図43は、
図42からのスケーラITV(電流電圧変換器)4202及びアナログデジタル変換器4203の実装である、スケーリング回路4300を示す。スケーラ4202はプログラム可能利得を有し、これは、R値(ニューロン電流を、ADCによってデジタル化される電圧に変換するためにRを使用するITV回路の場合)又はC値(ニューロン電流を、ADCによってデジタル化される電圧に変換するためにCを使用するITV回路の場合)をプログラムすることによってプログラムすることができる。スケーラ4202はまた、(ニューロン(ビット線)電流のための)プログラム可能な電流ミラーとしても実装することができる。ADC4203は、プログラム可能なnビットADCであり、ここで、nは、例えば、4又は8又は12ビットであり得る。
【0172】
図44Aは較正回路4400を示し、
図44Bは、較正回路4400を利用してルックアップテーブル4470に値を投入する較正方法4450を示す。電流デジタルアナログ変換器4402は、メモリセル4401のビット線と、比較器4403の非反転入力とに結合され、この比較器はまた、その反転入力において基準電圧VREFも受け取る。メモリセル4401は、単一のセル又は複数のセル(例えば、基準アレイ、又はメインアレイの一部からの)であり得る。
【0173】
上述したように、アナログニューラルメモリシステムに使用される各不揮発性メモリセル又は揮発性メモリセルは、消去及びプログラムされて、浮遊ゲート内に、非常に具体的かつ精確な電荷量、すなわち、電子の数を保持することができる。例えば、各浮遊ゲートはN個の異なる値のうちの1つを保持するべきであり、ここで、Nは、各セルによって示され得る異なる重みの数である。Nの例としては、16、32、64、128及び256が挙げられる。較正方法4450は、メモリセル4401に記憶することができるN個の異なる値の各々に対して実行される。較正方法4450が実行されるたびに、メモリセル4401は、10nAの読み出し電流など、N個の異なる値のうちの1つにプログラム(チューニング)される(ステップ4451)。
【0174】
メモリセル4401の制御ゲートにおける電圧は、較正方法4450に従って測定される。ビット線電流は、電流デジタルアナログ変換器4402によって低電流(1nAなど)から高電流(100nAなど)に変化し、その結果、増加するサイズの電流が流され、比較器4403の出力(比較出力と呼ばれる)が監視される。ある時点で、比較出力の値が変化する(例えば、「0」から「1」に)(ステップ4452)。フリップが発生するとき、すなわち、電流デジタルアナログ変換器4402によるビット線電流の任意の変化の前に、メモリセル4401の制御ゲート電圧が測定され、その制御ゲート電圧は、ルックアップテーブル4470に記憶することができる。この方法は、メモリセルに記憶することができる他のN個の可能な値に対して繰り返される。1つ超のセルが使用される場合、電流DAC(IDAC)によって提供される電流は、それに応じて調整される必要があり、例えば、4つのセルが(例えば、平均化のために)各セルにおいて1nAで使用される場合、IDAC電流は、4nAである。結果として生じるCG電圧は、ルックアップテーブル4470に記憶される(ステップ4454)。
【0175】
別の実施形態において、ルックアップテーブル4470は、ルックアップテーブル4470が温度バイアスルックアップテーブル(temperature bias lookup table、TBLUT)であるように、予想される動作範囲内の複数の温度の値を含むように更に拡張される。
【0176】
例えば、N=128(8ビット入力値に対応する)の状況の場合、等価電流範囲は、1na~128nAであり得、各1nAの増分は、N個のレベルのうちの1つに関連付けられる。次いで、較正回路4400及び較正方法4450を使用して、複数の異なる温度(例えば、-40C、-39C、...、0C、...25C、26C、...、85C)の各々について全ての128レベルについてのCG電圧をルックアップテーブル4470に投入する。例えば、N=128に対して10個の異なる温度点が使用される場合、ルックアップテーブルは、1280個の値(10個の異なる温度の各々に対する128個のレベルの各々について1つの値を投入する。
【0177】
別の較正方法では、アレイ内のサンプルを表す(重み)電流を記憶するために複数のセルが使用される。次いで、IDAC4402からのバイアス電流が流され、CGが、複数のセル及びそれらの対応する記憶された値(重み)の各々について、上記のように抽出される。これは、温度にわたって決定されて、ルックアップテーブルに記憶され得、したがって、温度にわたるCGバイアス変化は、異なる記憶された値(重み)に対してルックアップテーブルから呼び出されて、問題のセルに対する記憶された値に基づいてアレイに適用され得る。任意選択的に、これは、リアルタイムで実行することができ、バイアスは、動作中にアレイ内の様々なセルに印加される。
【0178】
別の実施形態では、
図44A、44Bの較正回路4400及び較正方法4450を使用して、複数の異なる温度の各々について、N個のレベルの各々について印加されるCG電圧の平均を計算することができる。例えば、N個の各値、及び各温度に対して、M個の異なる読み取り値を取得することができ、平均読み取り値をルックアップテーブル4470に記憶することができる。例えば、N=128に対して10個の異なる温度点が使用される場合、1280
*M個の読み取り値が取得されることになり、1280個の異なる平均が、ルックアップテーブル4470に記憶される。
【0179】
別の実施形態では、複数の温度の各々についてN個全ての可能な値について測定を行う代わりに、可能な値のより小さいセットについて(例えば、N個全ての可能な値の代わりにN個の可能な値のうちの4つについて)、測定を行うことができ、可能な値のそれらのより小さいセットの平均を、使用される特定の温度についてルックアップテーブル4470に記憶することができる。したがって、10個の異なる温度が使用される場合、ルックアップテーブル4470は、10個の値(10個の異なる温度の各々に対して1つの値のみを含むことになる。
【0180】
別の実施形態では、EGバイアス電圧もまた、変更される。CG電圧の測定は、異なるEGバイアス電圧で行われ、CG及びEGバイアスはルックアップテーブル4470に記憶される。
【0181】
図45は、n+1個の異なるメモリセルに対して実行された測定に基づいて、平均バイアスを決定するためのバイアス平均回路4500を示す。較正方法4450は、n+1個の異なるセルに対して実行され、各々は、そのセルに対する「最適」又は平均バイアス電圧を表す電圧(例えば、VCG)をもたらす。
【0182】
各セルは、ここで測定ブロック4501-0~4501-nとして示される測定ブロック4501に関連付けられる。各測定ブロック4501は、全く同じものである。測定ブロック4501-0は、演算増幅器4502-0と、電流ミラーとして配置されたPMOSトランジスタ4503-0及び4504と、NMOSトランジスタ4505-0と、レジスタ4506-0とを備える。他の測定ブロック4501は、全く同じ構成要素を含む。動作中、各測定ブロック4501は、そのPMOSトランジスタ4504を通るミラー電流に寄与し、そのミラー電流はレジスタ4507の上部端子において合計され、そのレジスタ4507は可変レジスタであってもよい。出力VOUTは、ブロック4501への入力として提供された様々な電圧の平均である(4506に対するレジスタ4507の値の適切な比率による)。出力電圧VOUT=(R-4507/R-4506)*VIN0~VINnの合計、例えばn=3、R-4507/R-4506=1/4、VOUT=(1/4)*(VIN0+VIN1+VIN2+VIN3)=4つの入力電圧VIN0~3の平均電圧である。
【0183】
出力電圧VOUTは、ニューラルネットワークメモリアレイ内の1つ以上のセルの制御ゲート端子に、バイアスとして印加され得る。
【0184】
図46Aは、バイアス生成ブロック4600を示す。バイアス生成ブロック4600は、メモリセル4601のビット線及び比較器4603の非反転入力に結合された電流デジタルアナログ変換器4602を備え、その比較器4603はまた、その反転入力に基準電圧VREFをも受信する(ここで、VREFは、
図44に示されるものと同じVREFである)。行レジスタ4604はデジタル値DRIN[0:7]をIDAX4602に提供し、IDAX4602は、デジタル値をセル4601のビット線端子に流される電流に変換する。スイッチ4605が閉じられると、外部電圧VINが、CG端子に印加される。スイッチ4606は閉じられ、コンデンサ4607は、CGと同じ電圧に充電される。比較器4603の出力が変化すると、スイッチ4606は開かれる。その時点でのコンデンサ4607の電圧は、比較器4603の出力を変化させたCG電圧を表し、これは、決定されたバイアス電圧である。すなわち、スイッチ4606及びコンデンサ4607は、サンプルアンドホールド回路を形成する。この電圧は、バッファ4608によって一定に保持され、アレイ内の制御ゲートに印加される。メモリセル4601は、サブスレッショルド領域又は線形領域で動作されることができる。
【0185】
図46Bはバイアス生成ブロック4650を示し、これは、メモリセル4651がCGバイアスを生成するためにダイオード接続され、かつ比較器を使用しないことを除いて、バイアス生成ブロック4600と同様である。バイアス生成ブロック4650は、
図44Aにおいて、ルックアップテーブル4470のためのCGバイアス値を生成するために使用され得る。バイアス生成ブロック4650は、メモリセル4651のビット線に結合された電流デジタルアナログ変換器4652を備える。電流デジタルアナログ変換器4652は、行レジスタ4654によって制御される。セル4651の制御ゲートにおける電圧は、スイッチ4656によってサンプリングされ、それは、次に、コンデンサ4657をその電圧に充電し、コンデンサ4657は、スイッチ4656が開かれた後に、その電圧を保持する。すなわち、スイッチ4656及びコンデンサ4657は、サンプルアンドホールド回路を形成する。この電圧は、バッファ4658によって一定に保持され、アレイ内の制御ゲートに印加される。メモリセル4651は、サブスレッショルド領域又は線形領域で動作することができる。バイアス生成ブロック4650は、行レジスタ4654からの入力デジタル値DRIN[0:7]を、アレイに印加される等価CG電圧に変換する。
【0186】
図46Cは、バイアス生成ブロック4680を示しており、これは、レベルシフタ4685を追加することを除いて、バイアス生成ブロック4650と同様である。バイアス生成ブロック4680は、
図44Aにおいて、ルックアップテーブル4470のためのCGバイアス値を生成するために使用され得る。バイアス生成ブロック4680は、メモリセル4651のビット線に結合された電流デジタルアナログ変換器4652を備える。電流デジタルアナログ変換器4652は、行レジスタ4654によって制御される。レベルシフタ4685は、電流デジタルアナログ変換器4652の出力と、メモリセル4651の制御ゲート端子との間に配置され、例えば、バイアス電圧(例えば、0.2V~0.5V)だけ電圧をシフトする。セル4651の制御ゲートにおける電圧は、スイッチ4656によってサンプリングされ、それは、次に、コンデンサ4657をその電圧に充電し、コンデンサ4657は、スイッチ4656が開かれた後に、その電圧を保持する。すなわち、スイッチ4656及びコンデンサ4657は、サンプルアンドホールド回路を形成する。この電圧は、バッファ4658によって一定に保持され、アレイ内の制御ゲートに印加される。メモリセル4651は、サブスレッショルド領域又は線形領域で動作することができる。バイアス生成ブロック4650は、行レジスタ4654からの入力デジタル値DRIN[0:7]を、アレイに印加される等価CG電圧に変換する。
【0187】
図47は、ニューラルネットワークにおける特定のニューロンに対して実行されるニューラルネットワークニューロン方法4700を示す。ステップ4701において、公称バイアスが、アレイの対象となる特定のニューロンに印加される。この方法は、その使用頻度に起因してより重要であると考えられるニューロンに対して実行され得る。ステップ4702~4706は、
図36のステップ3602~3606と全く同じである。
【0188】
図48は、ニューラルネットワーク方法4800示す。この方法4800は、メモリセルの第1のセットに関連付けられた動作温度を検知するステップ(ステップ4801)と、検知された動作温度に基づいて、ルックアップテーブルにおいてバイアスを決定するステップ(ステップ4802)と、決定されたバイアスをメモリセルの第1のセットの端子に印加するステップ(ステップ4803)と、メモリセルの第1のセットに対して読み出し動作を実行するステップ(ステップ4804)と、を含む。任意選択的に、メモリセルの第1のセットは、アレイ内の全てのセルを含むことができる。任意選択的に、メモリセルの第1のセットは、全てのアレイ内の全てのセルを含むことができる。任意選択的に、方法4800は、メモリセルの第2のセットに関連付けられた動作温度を検知するステップ(ステップ4805)と、第2の検知された動作温度に基づいて、ルックアップテーブルにおいてバイアスを決定するステップ(ステップ4806)と、決定されたバイアスをメモリセルの第2のセットの端子に印加するステップ(ステップ4807)と、メモリセルの第2のセットに対して読み出し動作を実行するステップ(ステップ4808)と、を更に含む。
【0189】
図49は、ニューラルネットワーク動作方法4900を示しており、これは、バイアス較正がリアルタイムで実行されることを除いて、ニューラルネットワーク動作方法4800と同様である。ニューラルネットワーク動作方法4900は、メモリセルの第1のセットに関連付けられた動作温度を検知するステップ(ステップ4901)と、検知された動作温度に基づいてバイアスを決定するステップ(ステップ4902)、決定されたバイアスをメモリセルの第1のセットの端子に印加するステップ(ステップ4903)と、メモリセルの第1のセットに対して読み出し動作を実行するステップ(ステップ4904)と、を含む。任意選択的に、メモリセルの第1のセットは、アレイ内の全てのセルを含むことができる。任意選択的に、メモリセルの第1のセットは、全てのアレイ内の全てのセルを含むことができる。任意選択的に、方法4900は、メモリセルの第2のセットに関連付けられた動作温度を検知するステップ(ステップ4905)と、第2の検知された動作温度に基づいて、バイアスを決定するステップ(ステップ4906)と、決定されたバイアスをメモリセルの第2のセットの端子に印加するステップ(ステップ4907)と、メモリセルの第2のセットに対して読み出し動作を実行するステップ(ステップ4908)と、を更に含む。
【0190】
図50は、ニューラルネットワーク方法5000を示しており、これは、1つ以上のメモリセルをプログラムするステップ(ステップ5001)と、プログラムされたメモリセルに複数の電流を流すステップ(ステップ5002)と、各プログラムされたメモリセルの制御ゲート端子の電圧を測定し、かつプログラムされたメモリセルに記憶された値を記憶するセルのための決定バイアスとして電圧を記憶するステップ(ステップ5003)と、メモリセルのセットに記憶されるべき値を記憶するセルのための決定されたバイアスの使用に基づいて、メモリセルのセットの端子にバイアス電圧を印加するステップ(ステップ5004)と、メモリセルのセットに対して読み出し動作を実行するステップ(ステップ5005)と、を含む。
【0191】
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「に間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に伴わずに形成すること、及びその要素を基板に間接的に1つ以上の中間材料/要素をそれらの間に伴って形成することを含み得る。
【手続補正書】
【提出日】2024-06-04
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ニューラルネットワークのための方法であって、前記方法は、
メモリセルのセットに関連付けられた動作温度を検知するステップと、
前記検知された動作温度に基づいて、ルックアップテーブルにおいてバイアスを決定するステップと、
前記決定されたバイアスを前記メモリセルのセットの端子に印加するステップと、
前記メモリセルのセットに対して読み出し動作を実行するステップと、を含む、方法。
【請求項2】
前記バイアスはメモリセルから生成される、請求項1に記載の方法。
【請求項3】
前記メモリセルのセットは、前記ニューラルネットワークにおけるニューロンを含む、請求項1に記載の方法。
【請求項4】
前記メモリセルのセットは第1のアレイ内に配置されている、請求項1に記載の方法。
【請求項5】
メモリセルの第2のセットに関連付けられた第2の動作温度を検知するステップと、
前記第2の動作温度に基づいて、ルックアップテーブルにおいて第2のバイアスを決定するステップと、
前記決定された第2のバイアスを前記メモリセルの第2のセットの端子に印加するステップであって、前記メモリセルの第2のセットは、前記第1のアレイとは異なる第2のアレイ内に配置されている、印加するステップと、
前記メモリセルの第2のセットに対して読み出し動作を実行するステップと、を更に含む、請求項4に記載の方法。
【請求項6】
前記メモリセルのセットは、前記ニューラルネットワークにおける単一層に含まれる、請求項1に記載の方法。
【請求項7】
前記メモリセルのセットは、前記ニューラルネットワークにおける複数のアレイ内の全てのメモリセルを含む、請求項1に記載の方法。
【請求項8】
前記メモリセルのセットは、前記ニューラルネットワークにおける複数のアレイ内の1つ以上の選択されたアレイ内の全てのメモリセルを含む、請求項1に記載の方法。
【請求項9】
前記メモリセルのセットはスプリットゲートフラッシュメモリセルを含む、請求項1に記載の方法。
【請求項10】
前記メモリセルのセットはスタックゲートフラッシュメモリセルを含む、請求項1に記載の方法。
【請求項11】
バイアスルックアップテーブルに投入するための方法であって、前記方法は、
N個の値のうちのいずれかを記憶することができるメモリセルを、前記N個の値のうちの1つでプログラムするステップと、
増加するサイズの一連の電流を、前記プログラムされたメモリセルのビット線に流すステップと、
比較出力を生成するために、前記ビット線の電圧を基準電圧と比較するステップと、
前記比較出力が値を変化させるときに、前記メモリセルの制御ゲート端子の電圧を測定し、前記電圧をルックアップテーブルに記憶するステップと、を含む、方法。
【請求項12】
前記メモリ
セルは不揮発性メモリセル
である、請求項11に記載の方法。
【請求項13】
前記メモリ
セルは揮発性メモリセル
である、請求項11に記載の方法。
【請求項14】
前記制御ゲート端子の前記電圧は、サンプルアンドホールド回路を使用して測定される、請求項11に記載の方法。
【請求項15】
ニューラルネットワークのための方法であって、前記方法は、
動作温度を検知するステップと、
前記検知された動作温度をデジタルビットで示すステップと、
出力ニューロン電流を電圧に変換するステップと、
前記デジタルビットに応答して、前記電圧をスケーリングするステップと、を含む、方法。
【請求項16】
バイアスを生成するための電圧平均化回路であって、
出力ノードと接地との間に結合された可変レジスタと、
複数の測定ブロックであって、各測定ブロックは、それぞれの入力電圧を電流に変換し、かつ前記電流を前記出力ノードにミラーする、複数の測定ブロックと、を備え、
前記出力ノードは、前記入力電圧の平均に等しいバイアスを前記複数の測定ブロックに提供する、電圧平均化回路。
【請求項17】
前記出力ノードにおける電圧が、各測定ブロックによって提供された値の合計に等しく、前記値は、前記測定ブロックによって受信された前記入力電圧に前記可変レジスタの比率を乗算し、前記測定ブロックの前記
可変レジスタの合計で除算し、前記それぞれの入力電圧の前記合計を乗算したものを含む、請求項16に記載の電圧平均化回路。
【請求項18】
前記出力
ノードにおける前記電圧は
、ニューラルネットワークメモリアレイ内の1つ以上のセルの制御ゲート端子に印加される、請求項17に記載の電圧平均化回路。
【請求項19】
ニューラルネットワークのための方法であって、前記方法は、
メモリセルのセットに関連付けられた動作温度を検知するステップと、
前記検知された動作温度に基づいて、バイアスを決定するステップと、
前記決定されたバイアスを前記メモリセルのセットの端子に印加するステップと、
前記メモリセルのセットに対して読み出し動作を実行するステップと、を含む、方法。
【請求項20】
前記メモリセルのセットは、前記ニューラルネットワークにおけるニューロンを含む、請求項19に記載の方法。
【請求項21】
前記バイアスはメモリセルから生成される、請求項19に記載の方法。
【請求項22】
メモリアレイのためのバイアスを生成するための方法であって、前記方法は、
値を記憶するように、メモリセルをプログラムするステップと、
前記プログラムされたメモリセルのビット線に、増加するサイズの一連の電流を流すステップと、
前記バイアスを決定するように、前記メモリセルの制御ゲート端子の電圧を測定するステップと、を含む、方法。
【請求項23】
前記決定されたバイアスを記憶するステップ、を更に含む、請求項22に記載の方法。
【請求項24】
メモリセルのアレイ内の1つ以上のメモリセルに対する動作中に、前記バイアスを前記1つ以上のメモリセルに印加するステップを更に含む、請求項23に記載の方法。
【請求項25】
前記アレイはアナログニューラルメモリアレイである、請求項24に記載の方法。
【請求項26】
前記プログラムされたメモリセルの複数の異なる動作温度について、前記プログラムするステップ、前記流すステップ、前記測定するステップ、及び前記記憶するステップを実行するステップを含む、請求項23に記載の方法。
【請求項27】
ニューラルネットワークにおけるメモリアレイのためのバイアスをリアルタイムで決定するための方法であって、前記方法は、
値を記憶するように、メモリセルをプログラムするステップと、
前記プログラムされたメモリセルのビット線に所定の電流を流すステップと、
前記バイアスを決定するように、前記メモリセルの制御ゲート端子の電圧を測定するステップと、を含む、方法。
【請求項28】
前記バイアスを記憶するステップ、を更に含む、請求項27に記載の方法。
【請求項29】
メモリセルのアレイ内の1つ以上のメモリセルに対する動作中に、前記バイアスを前記1つ以上のメモリセルに印加するステップを更に含む、請求項28に記載の方法。
【請求項30】
前記アレイはアナログニューラルメモリアレイである、請求項29に記載の方法。
【請求項31】
前記プログラムされたメモリセルの複数の異なる動作温度について、前記プログラムするステップ、前記印加するステップ、前記測定するステップ、及び前記記憶するステップを実行するステップを含む、請求項28に記載の方法。
【請求項32】
ニューラルネットワークのための方法であって、前記方法は、
メモリセルをプログラムするステップと、
増加するサイズの一連の電流を、前記プログラムされたメモリセルのビット線に流すステップと、
比較出力を生成するために、前記ビット線の電圧を基準電圧と比較するステップと、
前記比較出力が値を変化したときに、前記メモリセルの制御ゲート端子の電圧を測定し、そして、前記電圧を、決定されたバイアスとして記憶するステップと、
前記決定されたバイアスを前記メモリセルのセットの端子に印加するステップと、
前記メモリセルのセットに対して読み出し動作を実行するステップと、を含む、方法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0011
【補正方法】変更
【補正の内容】
【0011】
表1は、読み出し動作、消去動作、及びプログラム動作を実行するためにメモリセル110の端子に印加され得る典型的な電圧及び電流範囲を示す。
表1:図
2のフラッシュメモリセル210の動作
【表1】
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0040
【補正方法】変更
【補正の内容】
【0040】
代替的に、本明細書に記載されたVMMアレイのフラッシュメモリセルは、線形領域で動作するように構成することができる。
Ids=ベータ*(Vgs-Vth)*Vds;ベータ=u*Cox*Wt/L
W∝(Vgs-Vth)
すなわち、線形領域における重みWは、(Vgs-Vth)に比例する
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0043
【補正方法】変更
【補正の内容】
【0043】
代替的に、本明細書に記載されたVMMアレイのメモリセルは、飽和領域で動作するように構成することができる。
Ids=1/2*ベータ*(Vgs-Vth)2;ベータ=u*Cox*Wt/L
W∝(Vgs-Vth)2、すなわち重みWは、(Vgs-Vth)2に比例する
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】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アレイ
1200と同様であり、各個々のセルは、個別のEG線の使用により、浮遊ゲートの所望の電荷量に達するために、必要に応じて完全に消去され、部分的にプログラムされ、部分的に消去され得る。示されるように、基準アレイ1301及び1302は、端子BLR0、BLR1、BLR2及びBLR3における入力電流を制御ゲート電圧CG0、CG1、CG2及びCG3に変換し(マルチプレクサ1314を介したダイオード接続された基準セルの作用を通じて)、これらの電圧は行方向でメモリセルに適用される。電流出力(ニューロン)は、ビット線BL0~BLN中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0176
【補正方法】変更
【補正の内容】
【0176】
例えば、N=128(8ビット入力値に対応する)の状況の場合、等価電流範囲は、1na~128nAであり得、各1nAの増分は、N個のレベルのうちの1つに関連付けられる。次いで、較正回路4400及び較正方法4450を使用して、複数の異なる温度(例えば、-40℃、-39℃、...、0℃、...25℃、26℃、...、85℃)の各々について全ての128レベルについてのCG電圧をルックアップテーブル4470に投入する。例えば、N=128に対して10個の異なる温度点が使用される場合、ルックアップテーブルは、1280個の値(10個の異なる温度の各々に対する128個のレベルの各々について1つの値を投入する。
【国際調査報告】