IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シリコン ストーリッジ テクノロージー インコーポレイテッドの特許一覧

特許7008167使用頻度に基づいてプログラム状態の分離を変更するためのメモリデバイス及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-01-12
(45)【発行日】2022-01-25
(54)【発明の名称】使用頻度に基づいてプログラム状態の分離を変更するためのメモリデバイス及び方法
(51)【国際特許分類】
   G11C 11/54 20060101AFI20220118BHJP
   G11C 11/56 20060101ALI20220118BHJP
   G11C 16/04 20060101ALI20220118BHJP
   G06G 7/60 20060101ALI20220118BHJP
   G06N 3/063 20060101ALI20220118BHJP
【FI】
G11C11/54
G11C11/56 220
G11C16/04 180
G06G7/60
G06N3/063
【請求項の数】 27
(21)【出願番号】P 2021544164
(86)(22)【出願日】2019-08-29
(86)【国際出願番号】 US2019048935
(87)【国際公開番号】W WO2020159581
(87)【国際公開日】2020-08-06
【審査請求日】2021-09-24
(31)【優先権主張番号】62/798,417
(32)【優先日】2019-01-29
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/382,060
(32)【優先日】2019-04-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】特許業務法人英知国際特許事務所
(72)【発明者】
【氏名】トラン、ヒュー、バン
(72)【発明者】
【氏名】レムケ、スティーブン
(72)【発明者】
【氏名】ティワリ、ビピン
(72)【発明者】
【氏名】ドー、ナン
(72)【発明者】
【氏名】レイテン、マーク
【審査官】後藤 彰
(56)【参考文献】
【文献】特表2019-517138(JP,A)
【文献】国際公開第2017/200883(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 11/54
G06G 7/60
G06N 3/063
G11C 11/56
G11C 16/04
(57)【特許請求の範囲】
【請求項1】
メモリデバイスであって、
複数のメモリセルと、
コントローラであって、
前記メモリセルの各々を複数のプログラム状態のうちの1つにプログラムすることと、
前記メモリセルへの印加電圧の読み出し動作を使用して前記メモリセルを読み出すことと、を行うように構成され、
前記読み出し動作中に、前記プログラム状態のうちの隣接するものの間の分離は、前記複数のメモリセルにおける前記プログラム状態の使用頻度に基づいて変化する、コントローラと、を含む、メモリデバイス。
【請求項2】
前記複数のプログラム状態の各々について、前記コントローラは、
前記複数のメモリセルにおける前記プログラム状態の前記使用頻度を判定することと、
前記判定された使用頻度に基づいて、前記プログラム状態と前記プログラム状態のうちの隣接する1つとの間の分離を設定することと、を行うように構成される、請求項1に記載のメモリデバイス。
【請求項3】
前記コントローラは、第1の使用頻度を有する前記プログラム状態のうちの第1の状態の分離を設定し、前記第1の使用頻度よりも高い第2の使用頻度を有する前記プログラム状態のうちの第2の状態の分離を設定するように構成され、前記プログラム状態のうちの前記第2の状態の前記分離は、前記プログラム状態のうちの前記第1の状態の前記分離よりも大きい、請求項2に記載のメモリデバイス。
【請求項4】
前記コントローラは、前記プログラム状態の第1のグループの分離を第1の値に設定し、前記プログラム状態の第2のグループの分離を前記第1の値よりも大きい第2の値に設定するように構成され、前記プログラム状態の前記第2のグループの各々は、前記プログラム状態の前記第1のグループのうちのいずれの使用頻度よりも高い使用頻度を有する、請求項2に記載のメモリデバイス。
【請求項5】
前記複数のメモリセルは、不揮発性メモリセルである、請求項1に記載のメモリデバイス。
【請求項6】
ニューラルネットワークデバイスであって、
第1の複数の入力を受信し、それから第1の複数の出力を生成するように構成された、第1の複数のシナプスであって、該第1の複数のシナプスは、
複数のメモリセルと、
コントローラであって、
前記メモリセルの各々を複数のプログラム状態のうちの1つにプログラムすることと、
前記メモリセルへの印加電圧の読み出し動作を使用して前記メモリセルを読み出すことと、を行うように構成され、
前記読み出し動作中、前記プログラム状態のうちの隣接するものの間の分離は、前記複数のメモリセルにおける前記プログラム状態の使用頻度に基づいて変化する、コントローラと、を含み、
前記複数のメモリセルは、前記第1の複数の入力及び前記複数のプログラム状態に基づいて前記第1の複数の出力を生成するように構成される、第1の複数のシナプスと、
前記第1の複数の出力を受信するように構成された第1の複数のニューロンと、を含む、ニューラルネットワークデバイス。
【請求項7】
前記複数のプログラム状態の各々について、前記コントローラは、
前記複数のメモリセルにおける前記プログラム状態の前記使用頻度を判定することと、
前記判定された使用頻度に基づいて、前記プログラム状態と前記プログラム状態のうちの隣接する1つとの間の分離を設定することと、を行うように構成される、請求項6に記載のニューラルネットワークデバイス。
【請求項8】
前記コントローラは、第1の使用頻度を有する前記プログラム状態のうちの第1の状態の分離を設定し、前記第1の使用頻度よりも高い第2の使用頻度を有する前記プログラム状態のうちの第2の状態の分離を設定するように構成され、前記プログラム状態のうちの前記第2の状態の前記分離は、前記プログラム状態のうちの前記第1の状態の前記分離よりも大きい、請求項7に記載のニューラルネットワークデバイス。
【請求項9】
前記コントローラは、前記プログラム状態の第1のグループの分離を第1の値に設定し、前記プログラム状態の第2のグループの分離を前記第1の値よりも大きい第2の値に設定するように構成され、前記プログラム状態の前記第2のグループの各々は、前記プログラム状態の前記第1のグループのうちのいずれの使用頻度よりも高い使用頻度を有する、請求項7に記載のニューラルネットワークデバイス。
【請求項10】
前記第1の複数のニューロンから第2の複数の入力を受信し、それから第2の複数の出力を生成するように構成された、第2の複数のシナプスであって、前記第2の複数のシナプスは、
複数の第2のメモリセルと、
前記コントローラであって、
前記第2のメモリセルの各々を複数の第2のプログラム状態のうちの1つにプログラムすることと、
前記第2のメモリセルへの第2の印加電圧の第2の読み出し動作を使用して前記第2のメモリセルを読み出すことと、を行うように構成され、
前記第2の読み出し動作中、前記第2のプログラム状態のうちの隣接するものの間の分離は、前記複数の第2のメモリセルにおける前記第2のプログラム状態の使用頻度に基づいて変化する、コントローラと、を含み、
前記複数の第2のメモリセルは、前記第2の複数の入力及び前記複数の第2のプログラム状態に基づいて前記第2の複数の出力を生成するように構成される、第2の複数のシナプスと、
前記第2の複数の出力を受信するように構成された第2の複数のニューロンと、をさらに含む、請求項6に記載のニューラルネットワークデバイス。
【請求項11】
前記複数の第2のプログラム状態の各々について、前記コントローラは、
前記複数の第2のメモリセルにおける前記第2のプログラム状態の前記使用頻度を判定することと、
前記判定された使用頻度に基づいて、前記第2のプログラム状態と前記第2のプログラム状態のうちの隣接する1つとの間の分離を設定することと、を行うように構成される、請求項10に記載のニューラルネットワークデバイス。
【請求項12】
前記コントローラは、第3の使用頻度を有する前記第2のプログラム状態のうちの第1の状態の分離を設定し、前記第3の使用頻度よりも高い第4の使用頻度を有する前記第2のプログラム状態のうちの第2の状態の分離を設定するように構成され、前記第2のプログラム状態のうちの前記第2の状態の前記分離は、前記第2のプログラム状態のうちの前記第1の状態の前記分離よりも大きい、請求項11に記載のニューラルネットワークデバイス。
【請求項13】
前記コントローラは、前記第2のプログラム状態の第1のグループの分離を第3の値に設定し、前記第2のプログラム状態の第2のグループの分離を前記第3の値よりも大きい第4の値に設定するように構成され、前記第2のプログラム状態の前記第2のグループの各々は、前記第2のプログラム状態の前記第1のグループのうちのいずれの使用頻度よりも高い使用頻度を有する、請求項11に記載のニューラルネットワークデバイス。
【請求項14】
前記プログラム状態のうちの隣接するものの間の前記分離の値は、前記第2のプログラム状態のうちの隣接するものの間の前記分離の値とは異なる、請求項10に記載のニューラルネットワークデバイス。
【請求項15】
前記複数のプログラム状態の総数は、前記複数の第2のプログラム状態の総数とは異なる、請求項10に記載のニューラルネットワークデバイス。
【請求項16】
前記メモリセルは揮発性であり、前記第2のメモリセルは不揮発性であるか、又は前記メモリセルは不揮発性であり、前記第2のメモリセルは揮発性である、請求項10に記載のニューラルネットワークデバイス。
【請求項17】
前記複数のメモリセルが不揮発性メモリセルであり、前記複数の第2メモリセルが不揮発性メモリセルである、請求項10に記載のニューラルネットワークデバイス。
【請求項18】
メモリセルをプログラミングする方法であって、
複数のメモリセルの各々を複数のプログラム状態のうちの1つにプログラミングするステップと、
前記メモリセルへの印加電圧の読み出し動作を使用して、前記メモリセルを読み出すステップと、
前記複数のメモリセルにおける前記プログラム状態の各々についての使用頻度を判定するステップと、
前記プログラム状態の各々について、前記プログラム状態の前記判定された使用頻度に基づいて、前記読み出し動作中の前記プログラム状態と前記プログラム状態のうちの隣接する1つとの間の分離を設定するステップと、を含む、方法。
【請求項19】
前記設定することは、
第1の使用頻度を有する前記プログラム状態のうちの第1の状態の分離を設定するステップと、
前記第1の使用頻度よりも高い第2の使用頻度を有する前記プログラム状態のうちの第2の状態の分離を設定するステップと、を更に含み、
前記プログラム状態のうちの前記第2の状態の前記分離は、前記プログラム状態のうちの前記第1の状態の前記分離よりも大きい、請求項18に記載の方法。
【請求項20】
前記設定するステップは、
前記プログラム状態の第1のグループの分離を第1の値に設定するステップと、
前記プログラム状態の第2のグループの分離を前記第1の値よりも大きい第2の値に設定するステップと、を更に含み、
前記プログラム状態の前記第2のグループの各々は、前記プログラム状態の前記第1のグループのうちのいずれの使用頻度よりも高い使用頻度を有する、請求項18に記載の方法。
【請求項21】
ニューラルネットワークデバイスであって、
第1の複数の入力を受信し、それから第1の複数の出力を生成するように構成された、第1の複数のシナプスであって、前記第1の複数のシナプスは、
複数の第1のメモリセルと、
コントローラであって、
前記第1のメモリセルの各々を複数の第1のプログラム状態のうちの1つにプログラムすることと、
前記第1のメモリセルへの印加電圧の読み出し動作を使用して前記第1のメモリセルを読み出すことと、を行うように構成された、コントローラと、を含み
前記複数の第1のメモリセルは、前記第1の複数の入力及び前記複数の第1のプログラム状態に基づいて前記第1の複数の出力を生成するように構成される、第1の複数のシナプスと、
前記第1の複数の出力を受信するように構成された、第1の複数のニューロンと、
前記第1の複数のニューロンから第2の複数の入力を受信し、それから第2の複数の出力を生成するように構成された、第2の複数のシナプスであって、前記第2の複数のシナプスは、
複数の第2のメモリセルと、
前記コントローラであって、
前記第2のメモリセルの各々を複数の第2のプログラム状態のうちの1つにプログラムすることと、
前記第2のメモリセルへの第2の印加電圧の第2の読み出し動作を使用して前記第2のメモリセルを読み出すことと、を行うように構成された、前記コントローラと、を含み、
前記複数の第2のメモリセルは、前記第2の複数の入力及び前記複数の第2のプログラム状態に基づいて前記第2の複数の出力を生成するように構成される、第2の複数のシナプスと、
前記第2の複数の出力を受信するように構成された第2の複数のニューロンであって、
前記複数の第1のプログラム状態の総数は、前記複数の第2のプログラム状態の総数とは異なることと、
前記複数の第1のプログラム状態の総数は2のみであり、前記複数の第2のプログラム状態の総数は2を超えるか、又は前記複数の第1のプログラム状態の総数は2を超え、前記複数の第2のプログラム状態の総数は2のみであることと、
前記第1のメモリセルは揮発性であり、前記第2のメモリセルは不揮発性であるか、又は前記第1のメモリセルは不揮発性であり、前記第2のメモリセルは揮発性であることと、
前記第1のメモリセル及び前記第2のメモリセルは不揮発性であることと、
前記コントローラは、閾値を上回る前記第1の読み出し動作及び閾値を下回る前記第2の読み出し動作を実行するか、又は閾値を下回る前記第1の読み出し動作及び閾値を上回る前記第2の読み出し動作を実行するように構成されることと、
前記コントローラは、閾値を上回る前記第1の読み出し動作及び前記第2の読み出し動作を実行するか、又は閾値を下回る前記第1の読み出し動作及び前記第2の読み出し動作を実行するように構成されること、のうちの少なくとも1つである、第2の複数のニューロンと、を含む、ニューラルネットワークデバイス。
【請求項22】
前記複数の第1のプログラム状態の総数は、前記複数の第2のプログラム状態の総数とは異なる、請求項21に記載のニューラルネットワークデバイス。
【請求項23】
前記複数の第1のプログラム状態の総数は2のみであり、前記複数の第2のプログラム状態の総数は2を超えるか、又は前記複数の第1のプログラム状態の総数は2を超え、前記複数の第2のプログラム状態の総数は2のみである、請求項21に記載のニューラルネットワークデバイス。
【請求項24】
前記第1のメモリセルは揮発性であり、前記第2のメモリセルは不揮発性であるか、又は前記第1のメモリセルは不揮発性であり、前記第2のメモリセルは揮発性である、請求項21に記載のニューラルネットワークデバイス。
【請求項25】
前記第1のメモリセル及び前記第2のメモリセルは、不揮発性である、請求項21に記載のニューラルネットワークデバイス。
【請求項26】
前記コントローラは、閾値を上回る前記第1の読み出し動作及び閾値を下回る前記第2の読み出し動作を実行するか、又は閾値を下回る前記第1の読み出し動作及び閾値を上回る前記第2の読み出し動作を実行するように構成される、請求項21に記載のニューラルネットワークデバイス。
【請求項27】
前記コントローラは、閾値を上回る前記第1の読み出し動作及び前記第2の読み出し動作を実行するか、又は閾値を下回る前記第1の読み出し動作及び前記第2の読み出し動作を実行するように構成される、請求項21に記載のニューラルネットワークデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願)
本出願は、2019年4月11日出願の米国特許出願第16/382060号及び2019年1月29日出願の米国仮特許出願第62/798417号の利益を主張するものである。
【0002】
(発明の分野)
本発明は、ニューラルネットワークに関する。
【背景技術】
【0003】
人工ニューラルネットワークは、多数の入力により得る機能を推定又は近似するために使用され、概ね既知である生物学的ニューラルネットワーク(動物の中枢神経系、特に脳)によく似ている。人工ニューラルネットワークは、概して、メッセージを交換する相互接続した「ニューロン」の層を含む。図1は、人工ニューラルネットワークを図示しており、ここで円は、入力又はニューロンの層を表す。接続(シナプスと呼ばれる)は、矢印によって表され、経験に基づいて調整され得る数値の重みを有する。これは、ニューラルネットが入力に適応できるようにし、学習できるようにする。典型的には、ニューラルネットワークは、複数の入力の層を含む。典型的には、1つ以上のニューロンの中間層、及びニューラルネットワークの出力を提供するニューロンの出力層が存在する。それぞれのレベルでニューロンは、シナプスから受信したデータに基づいて個々に又は合わせて決定を行う。
【0004】
高性能情報処理用の人工ニューラルネットワークの開発における主要な課題の1つは、適切なハードウェア技術の欠如である。実際には、実用ニューラルネットワークは、非常に多数のシナプスに依拠しており、これによりニューロン間の高い接続性、すなわち、非常に高度な計算処理の並列化が可能となる。原理的には、このような複雑性は、デジタルスーパーコンピュータ又は専用GPU(グラフィックプロセッシングユニット)クラスタによって実現が可能である。しかしながら、高コストに加え、これらのアプローチはまた、生物学的ネットワークが主として低精度のアナログ計算を実施するのではるかに少ないエネルギーしか消費しないのと比較して、エネルギー効率が劣っていることに悩まされている。人工ニューラルネットワークにはCMOSアナログ回路が使用されてきたが、ほとんどのCMOS実装シナプスは、多数のニューロン及びシナプスを前提とすると、嵩高過ぎていた。
【発明の概要】
【0005】
上記の問題及び必要性は、複数のメモリセル及びコントローラを含むメモリデバイスによって対処される。前記コントローラは、前記メモリセルの各々を複数のプログラム状態のうちの1つにプログラムするように構成され、前記メモリセルへの印加電圧の読み出し動作を使用して前記メモリセルを読み出し、前記読み出し動作中に、前記プログラム状態のうちの隣接するものの間の分離は、前記複数のメモリセルにおける前記プログラム状態の使用頻度に基づいて変化する。
【0006】
ニューラルネットワークデバイスは、第1の複数の入力を受信し、第1の複数の出力をそれから生成するように構成された第1の複数のシナプスを含む。該第1の複数のシナプスは、複数のメモリセル及びコントローラを含む。該コントローラは、前記メモリセルの各々を複数のプログラム状態のうちの1つにプログラムするように構成され、前記メモリセルへの印加電圧の読み出し動作を使用して前記メモリセルを読み出し、前記読み出し動作中、前記プログラム状態のうちの隣接するものの間の分離は、前記複数のメモリセルにおける前記プログラム状態の使用頻度に基づいて変化する。前記複数のメモリセルは、前記第1の複数の入力及び前記複数のプログラム状態に基づいて前記第1の複数の出力を生成するように構成される。第1の複数のニューロンは、前記第1の複数の出力を受信するように構成される。
【0007】
メモリセルをプログラミングする方法は、複数のメモリセルの各々を複数のプログラム状態のうちの1つにプログラミングするステップと、前記メモリセルへの印加電圧の読み出し動作を使用して、前記メモリセルを読み出すステップと、前記複数のメモリセルにおける前記プログラム状態の各々についての使用頻度を判定するステップと、前記プログラム状態の各々に対し、前記プログラム状態の前記判定された使用頻度に基づいて、前記読み出し動作中の前記プログラム状態と前記プログラム状態のうちの隣接する1つとの間の分離を設定するステップと、を含む。
【0008】
ニューラルネットワークデバイスは、第1及び第2の複数のシナプスと、第1及び第2の複数のニューロンと、を含む。前記第1の複数のシナプスは、第1の複数の入力を受信し、第1の複数の出力をそれから生成するように構成され、前記第1の複数のシナプスは、複数の第1のメモリセルと、前記第1のメモリセルの各々を複数の第1のプログラム状態のうちの1つにプログラムし、前記第1のメモリセルへの印加電圧の読み出し動作を使用して前記第1のメモリセルを読み出すように構成されたコントローラと、を含む。前記複数の第1のメモリセルは、前記第1の複数の入力及び前記複数の第1のプログラム状態に基づいて前記第1の複数の出力を生成するように構成される。前記第1の複数のニューロンは、前記第1の複数の出力を受信するように構成される。前記第2の複数のシナプスは、前記第1の複数のニューロンから第2の複数の入力を受信し、それから第2の複数の出力を生成するように構成される。前記第2の複数のシナプスは、複数の第2のメモリセルを含み、前記コントローラは、前記第2のメモリセルの各々を複数の第2のプログラム状態のうちの1つにプログラムするように構成され、前記第2のメモリセルへの第2の印加電圧の第2の読み出し動作を使用して前記第2のメモリセルを読み出すように構成される。前記複数の第2のメモリセルは、前記第2の複数の入力及び前記複数の第2のプログラム状態に基づいて前記第2の複数の出力を生成するように構成される。前記第2の複数のニューロンは、前記第2の複数の出力を受信するように構成される。ここで、前記ニューラルネットワークデバイスは、更に、次のうちの少なくとも1つによって特徴付けられる。
前記複数の第1のプログラム状態の総数は、前記複数の第2のプログラム状態の総数とは異なることと、
前記複数の第1のプログラム状態の総数は2のみであり、前記複数の第2のプログラム状態の総数は2を超えるか、又は前記複数の第1のプログラム状態の総数は2を超え、前記複数の第2のプログラム状態の総数は2のみであることと、
前記第1のメモリセルは揮発性であり、前記第2のメモリセルは不揮発性であるか、又は前記第1のメモリセルは不揮発性であり、前記第2のメモリセルは揮発性であることと、
前記第1のメモリセル及び前記第2のメモリセルは不揮発性であることと、
前記コントローラは、閾値を上回る前記第1の読み出し動作及び閾値を下回る前記第2の読み出し動作を実行するか、又は閾値を下回る前記第1の読み出し動作及び閾値を上回る前記第2の読み出し動作を実行するように構成されることと、
前記コントローラは、閾値を上回る前記第1の読み出し動作及び前記第2の読み出し動作を実行するか、又は閾値を下回る前記第1の読み出し動作及び前記第2の読み出し動作を実行するように構成されること。
【0009】
本発明の他の目的及び特徴は、明細書、特許請求の範囲、添付図面を精読することによって明らかになるであろう。
【0010】
【0011】
【0012】
【0013】
【0014】
【0015】
【0016】
【0017】
【0018】
【0019】
【0020】
【0021】
【0022】
【0023】
【0024】
【0025】
【0026】
【0027】
【0028】
【0029】
【0030】
【0031】
【0032】
【0033】
【0034】
【0035】
【0036】
【0037】
【0038】
【0039】
【0040】
【0041】
【0042】
【図面の簡単な説明】
【0043】
図1】人工ニューラルネットワークを示す図である。
図2】従来の2ゲート不揮発性メモリセルの側断面図である。
図3図2のメモリセルに対する従来のアレイアーキテクチャを示す図である。
図4】従来の2ゲート不揮発性メモリセルの側断面図である。
図5図4のメモリセルに対する従来のアレイアーキテクチャを示す図である。
図6】従来の4ゲート不揮発性メモリセルの側断面図である。
図7図6のメモリセルに対する従来のアレイアーキテクチャを示す図である。
図8A】均等な間隔であるニューラルネットワークの重みレベルの割当てを示す図である。
図8B】不均等な間隔であるニューラルネットワークの重みレベルの割当てを示す図である。
図9】双方向調整アルゴリズムを示すフローチャートである。
図10】電流比較を使用した重みマッピングを示すブロック図である。
図11】電圧比較を使用した重みマッピングを示すブロック図である。
図12】不揮発性メモリアレイを利用する異なるレベルの例示のニューラルネットワークを示す図である。
図13】ベクトル乗算器マトリクスを示すブロック図である。
図14】様々なレベルのベクトル乗算器マトリクスを示すブロック図である。
図15】2ゲートのメモリセルのアレイの第1のアーキテクチャを示す概略図である。
図16】2ゲートのメモリセルのアレイの第2のアーキテクチャを示す概略図である。
図17】2ゲートのメモリセルのアレイの第3のアーキテクチャを示す概略図である。
図18】2ゲートのメモリセルを使用した電流-電圧変換器を示す概略図である。
図19】4ゲートのメモリセルのアレイの第1のアーキテクチャを示す概略図である。
図20】4ゲートのメモリセルを使用した電流-電圧変換器を示す概略図である。
図21】4ゲートのメモリセルのアレイの第2のアーキテクチャを示す概略図である。
図22】4ゲートのメモリセルのアレイの第3のアーキテクチャを示す概略図である。
図23】4ゲートのメモリセルのアレイの第4のアーキテクチャを示す概略図である。
図24】4ゲートのメモリセルのアレイの第5のアーキテクチャを示す概略図である。
図25】3ゲートの不揮発性メモリセルの側断面図である。
図26】3ゲートのメモリセルのアレイのアーキテクチャを示す概略図である。
図27】3ゲートの不揮発性メモリセルの側断面図である。
図28図27の3ゲートのメモリセルのアレイのアーキテクチャを示す概略図である。
図29図27の3ゲートのメモリセルのアレイのアーキテクチャを示す概略図である。
図30図27の3ゲートのメモリセルのアレイのアーキテクチャを示す概略図である。
図31図27の3ゲートのメモリセルのアレイのアーキテクチャを示す概略図である。
図32】2ゲートの不揮発性メモリセルの側断面図である。
図33図32の2ゲートメモリセルのアレイのアーキテクチャを示す概略図である。
図34図32の2ゲートメモリセルのアレイのアーキテクチャを示す概略図である。
図35図32の2ゲートメモリセルのアレイのアーキテクチャを示す概略図である。
図36図32の2ゲートメモリセルのアレイのアーキテクチャを示す概略図である。
図37図32の2ゲートメモリセルのアレイのアーキテクチャを示す概略図である。
図38図32の2ゲートメモリセルのアレイのアーキテクチャを示す概略図である。
図39図32の2ゲートメモリセルのアレイのアーキテクチャを示す概略図である。
図40】プログラム状態レベルの関数としての使用密度を示すグラフである。
図41】異なるプログラム状態レベル分離方式を示す図である。
図42】プログラム状態レベルの関数としての使用密度を示すグラフである。
図43】異なるプログラム状態レベル分離方式を示す図である。
図44】プログラム状態レベルの関数としての使用密度を示すグラフである。
図45】異なるプログラム状態レベル分離方式を示す図である。
図46】プログラム状態レベルの関数としての使用密度を示すグラフである。
図47】異なるプログラム状態レベル分離方式を示す図である。
図48】メモリアレイ(複数可)の動作を実装するためのメモリアレイ(複数可)と同じチップのコントローラを示す図である。
【発明を実施するための形態】
【0044】
本発明の人工ニューラルネットワークは、CMOS技術及び不揮発性メモリアレイの組み合わせを利用する。デジタル不揮発性メモリは、周知である。例えば、米国特許第5,029,130号(「’130特許」)は、分割ゲート不揮発性メモリセルのアレイを開示する。’130特許に開示されているメモリセルは、メモリセル10として図2に示されている。各メモリセル10は、半導体基板12に形成されたソース領域及びドレイン領域14/16を含み、それらの間にチャネル領域18を有する。浮遊ゲート20は、チャネル領域18の第1の部分の上方に形成され、チャネル領域18の第1の部分から絶縁されており(かつその伝導率を制御し)、ドレイン領域16の一部分の上方に形成される。制御ゲート22(すなわち、第2のチャネル制御ゲート)は、チャネル領域18の第2の部分の上方に配設され、チャネル領域18の第2の部分から絶縁される(かつその伝導率を制御する)第1の部分22bと、浮遊ゲート20の上方で上に延在する第2の部分22cと、を有する。浮遊ゲート20及び制御ゲート22は、ゲート酸化物26によって基板12から絶縁される。
【0045】
メモリセル10は、制御ゲート22に高い正電圧を印加することによって消去され(ここで電子は、浮遊ゲート20から除去される)、それにより、ファウラーノルドハイムトンネリングによって浮遊ゲート20から制御ゲート22まで中間絶縁体24を通って浮遊ゲート20の電子をトンネリングさせる。
【0046】
メモリセル10は、制御ゲート22に正電圧を印加し、ドレイン16に正電圧を印加することによってプログラムされる(ここで電子は、浮遊ゲート20に加えられる)。電子電流は、ソース14からドレイン16に向かって流れることになる。電子は、制御ゲート22と浮遊ゲート20との間の間隙に達すると、加速し加熱されることになる。熱せられた電子のいくらかは、浮遊ゲート20からの静電引力に起因してゲート酸化物26を通って浮遊ゲート20に注入される。
【0047】
メモリセル10は、ドレイン16及び制御ゲート22に正の読み出し電圧を印加することによって読み出される(制御ゲート下のチャネル領域の部分をオンにする)。浮遊ゲート20が正に帯電する(すなわち、電子を消去し、容量的にドレイン16の正の電圧に結合する)場合、浮遊ゲート20下のチャネル領域18の部分は、次に同様にオンになり、電流は、チャネル領域18を流れ、これは、消去された状態つまり「1」の状態として検知される。浮遊ゲート20が負に帯電する(すなわち、電子でプログラムされる)と、浮遊ゲート20の下方のチャネル領域18の部分はほとんど又は完全にオフになり、電流はチャネル領域18を流れず(又はほとんど流れず)、これは、プログラムされた状態つまり「0」の状態として検出される。
【0048】
メモリセル10の従来のアレイアーキテクチャのアーキテクチャを図3に示す。メモリセル10は、行及び列に配置される。各列において、メモリセルは、ミラー方式にエンドツーエンドで配置され、その結果、それらのメモリセルは、それぞれが共通ソース領域14(source、S)を共有するメモリセルのペアとして形成され、メモリセルペアの隣接するセットはそれぞれ共通ドレイン領域16(drain、D)を共有する。任意の所与のメモリセルの行のソース領域14は全て、ソース線14aによって電気的に接続される。任意の所与のメモリセルの列のドレイン領域16は全て、ビット線16aによって電気的に接続される。任意の所与のメモリセルの行の制御ゲート22は全て、制御ゲート線22aによって電気的に接続される。したがって、メモリセルを個々にプログラム及び読み出しすることができる一方、メモリセル消去は1行ずつ実行される(メモリセルの各行は、制御ゲート線22aへの高電圧の適用によって一緒に消去される)。特定のメモリセルを消去する場合は、同じ行にある全てのメモリセルもまた消去される。
【0049】
当業者には、ソース及びドレインは互換性があり得ることが理解され、ここで浮遊ゲート20は、図4に示されるように、ドレイン16の代わりにソース14の上方に部分的に延在し得る。図5は、メモリセル10、ソース線14a、ビット線16a、及び制御ゲート線22aを含む対応するメモリセルアーキテクチャを最も良く示している。図から明らかなように、同じ行のメモリセル10は、同じソース線14a及び同じ制御ゲート線22aを共有し、一方同じ列の全てのセルのドレイン領域は、同じビット線16aに電気的に接続されている。アレイの設計は、デジタルアプリケーション用に最適化されており、例えば、1.6V及び7.6Vを選択した制御ゲート線22a及びソース線14aにそれぞれ印加し、選択したビット線16aを接地することによるなど、選択したセルの個々のプログラミングを可能にする。同じペア内の選択されていないメモリセルを妨害することは、選択されていないビット線16aに2ボルト超の電圧を印加し、残りの線を接地することによって回避される。消去に関与しているプロセス(浮遊ゲート20から制御ゲート22までの電子のファウラーノルドハイムトンネリング)は、ドレイン電圧(すなわち、同じソース線14aを共有する行方向で2つの隣接するセルにより異なり得る電圧のみ)に弱く影響を受けるだけであるので、メモリセル10を個々に消去することはできない。動作電圧の非限定的な例としては、以下が挙げられる。
表1
【表1】
読み出し1は、セル電流がビット線に流れる読み出しモードである。読み出し2は、セル電流がソースラインに流れる読み出しモードである。
【0050】
3つ以上のゲートを有する分割ゲートメモリセルもまた既知である。例えば、図6に示されるように、ソース領域14、ドレイン領域16、チャネル領域18の第1の部分の上方の浮遊ゲート20、チャネル領域18の第2の部分の上方の選択ゲート28(すなわち、第2のチャネル制御ゲート)、浮遊ゲート20の上方の制御ゲート22、及びソース領域14の上方の消去ゲート30を有するメモリセルが既知である(例えば、米国特許第6,747,310号を参照)。ここで、全てのゲートは、浮遊ゲート20を除いて、非浮遊ゲートであり、つまり、それらは電圧若しくは電流源に電気的に接続されるか又は接続可能である。プログラミングは、浮遊ゲート20にそれ自体を注入するチャネル領域18からの熱せられた電子によって示される。消去は、浮遊ゲート20から消去ゲート30へトンネリングする電子によって示される。
【0051】
4ゲートのメモリセルアレイのアーキテクチャは、図7に示されるように構成され得る。この実施形態では、それぞれの水平の選択ゲート線28aは、メモリセルのその行の選択ゲート28全てを電気的に一緒に接続する。それぞれの水平の制御ゲート線22aは、メモリセルのその行の制御ゲート22全てを電気的に一緒に接続する。それぞれの水平のソース線14aは、ソース領域14を共有するメモリセルの2つの行に対するソース領域14全てを電気的に一緒に接続する。それぞれのビット線16aは、メモリセルのその列のドレイン領域16全てを電気的に一緒に接続する。それぞれの消去ゲート線30aは、消去ゲート30を共有するメモリセルの2つの行に対する消去ゲート30全てを電気的に一緒に接続する。以前のアーキテクチャと同様に、個々のメモリセルは、独立してプログラム及び読み出しを行うことができる。しかしながら、メモリセルを個々に消去する方法はない。消去は、消去ゲート線30aに高い正電圧を印加することによって実行され、このことは同じ消去ゲート線30aを共有するメモリセルの両方の行の同時消去をもたらす。例示的な非限定的な動作電圧は、下の表2内のものを含み得る(この実施形態では、選択ゲート線28aはワード線(word line、WL)と呼ばれることがある):
表2
【表2】
読み出し1は、セル電流がビット線に流れる読み出しモードである。読み出し2は、セル電流がソースラインに流れる読み出しモードである。
【0052】
上述の不揮発性メモリアレイをニューラルネットワークで利用するために、2つの改変がなされていてもよい。第1に、以下に更に説明されるように、アレイ内の他のメモリセルのメモリ状態に悪影響を与えずに各メモリセルを個々にプログラム、消去、及び読み出しすることができるように線を再構成してもよい。第2に、メモリセルの連続(アナログ)プログラミングを提供してもよい。具体的には、アレイ内の各メモリセルのメモリ又はプログラム状態(すなわち、浮遊ゲートの電子の数に反映される浮遊ゲートの電荷)を、完全に消去された状態から完全にプログラムされた状態へ、及び逆もまた同様に、独立して、他のメモリセルの異常が最小で連続的に変更することができる。このことは、セル格納がアナログであるか、又は多数の別個の値のうちの1つを最低限格納することができ、それは、メモリアレイ内の全てのセルに対する非常に正確、かつ個々の調整を可能にし、またメモリアレイを格納に理想的にし、ニューラルネットワークのシナプシスの重みに微調整を加えることを意味する。
メモリセルのプログラミング及び格納
【0053】
メモリセル内に格納されるニューラルネットワークの重みレベルの割り当ては、図8Aに示されるような均等な間隔、又は図8Bに示されるような不均等な間隔であり得る。不揮発性メモリセルのプログラミングは、図9に示されるものなど双方向調整アルゴリズムを使用して実装され得る。Icellは、プログラムされる標的セルの読み出し電流であり、Itargetは、セルが理想的にプログラムされる際の所望の読み出し電流である。標的セル読み出し電流Icellを読み出し(工程1)、標的読み出し電流Itargetと比較する(工程2)。標的セル読み出し電流Icellが、標的読み出し電流Itargetより大きい場合は、プログラミング調整プロセスを実行して(工程3)浮遊ゲート20(ルックアップテーブル又はシリコン系の近似関数を使用して制御ゲート22の所望の初期及び漸増のプログラミング電圧VCGを判定する)の電子数を増大させ(工程3a~3b)、必要に応じてこれを繰り返すことができる(工程3c)。標的セル読み出し電流Icellが、標的読み出し電流Itargetより小さい場合は、消去調整プロセスを実行して(工程4)浮遊ゲート20(ルックアップテーブル又はシリコン系の近似関数を使用して消去ゲート30の所望の初期及び漸増の消去電圧VEGを判定してもよい)の電子数を減少させ(工程4a~4b)、必要に応じてこれを繰り返すことができる(工程4c)。プログラミング調整プロセスが標的読み出し電流を通り過ぎると、(許容できるデルタ値内で)標的読み出し電流を達成するまで次に消去調整プロセスを実行し(工程3d及び工程4aで始まる)、逆もまた同様である(工程4d及び工程3aで始まる)。
【0054】
不揮発性メモリセルのプログラミングは、プログラミング調整を使用して一方向の調整アルゴリズムを使用して代わりに実装され得る。このアルゴリズムを使用して、メモリセル10を最初に完全に消去し、次に標的メモリセル10の読み出し電流が標的閾値に達するまで図9のプログラミング調整工程3a~3cを実行する。あるいは、不揮発性メモリセルの調整は、消去調整を使用して一方向の調整アルゴリズムを使用して実装され得る。このアプローチでは、メモリセルを最初に完全にプログラムし、次に標的メモリセルの読み出し電流が標的閾値に達するまで図9の消去調整工程4a~4cを実行する。
【0055】
図10は、電流比較を使用した重みマッピングを示す図である。重みデジタルビット(例えば、各シナプシスに対して5ビットの重み、メモリセルの標的デジタル重みを表す)は、デジタルアナログ変換器(digital-to-analog converter、DAC)40に入力され、DAC40はビットを電圧Vout(例えば、64電圧レベル-5ビット)に変換する。Voutは、電圧電流変換器V/I Conv42によって電流Iout(例えば、64電流レベル-5ビット)に変換される。電流Ioutは、電流比較器IComp44に供給される。プログラム又は消去アルゴリズムの有効化は、メモリセル10に入力される(例えば、消去:EG電圧をインクリメント、又はプログラム:CG電圧をインクリメント)。出力メモリセル電流Icellout(すなわち、読み出し動作から)は、電流比較器IComp44に供給される。電流比較器IComp44は、メモリセル電流Icelloutを重みデジタルビット由来の電流Ioutと比較してメモリセル10に格納された重みを示す信号を生成する。
【0056】
図11は、電圧比較を使用した重みマッピングを示す図である。重みデジタルビット(例えば、各シナプシスに対して5ビットの重み)は、デジタルアナログ変換器(DAC)40に入力され、DAC40はビットを電圧Vout(例えば、64電圧レベル-5ビット)に変換する。Voutは、電圧比較器VComp46に供給される。プログラム又は消去アルゴリズムの有効化は、メモリセル10に入力される(例えば、消去:EG電圧をインクリメント、又はプログラム:CG電圧をインクリメント)。出力メモリセル電流Icelloutは、電圧V2outへの変換(例えば、64電圧レベル-5ビット)のために電流-電圧変換器I/V Conv48に供給される。電圧V2outは、電圧比較器VComp46に供給される。電圧比較器VComp46は、電圧Vout及びV2outを比較してメモリセル10に格納された重みを示す信号を生成する。
【0057】
重みマッピング比較の別の実施形態は、入力重み及び/又はメモリセルの出力のための可変パルス幅(すなわち、パルス幅は、重みの値に比例するか、又は反比例する)。重みマッピング比較の更に別の実施形態では、デジタルパルス(例えば、クロックから生成されたパルス、パルスの数は、重みの値に比例するか、又は反比例する)は、入力重み及び/又はメモリセルの出力に使用される。
不揮発性メモリセルアレイを使用するニューラルネットワーク
【0058】
図12は、不揮発性メモリアレイを利用するニューラルネットワークの非限定例を概念的に図示する。この例は、顔認識アプリケーションのために不揮発性メモリアレイニューラルネットを使用するが、不揮発性メモリアレイベースのニューラルネットワークを使用して他の任意の適切なアプリケーションを実施することができる。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フィルタは次に右側に1ピクセルだけシフトされ(すなわち、3ピクセルの列を右側に追加し、左側で3ピクセルの列をドロップする)、そのため、この新しく位置付けられたフィルタの9ピクセル値が、シナプスCB1に提供されるため、それらに同じ重みを乗算し、関連するシナプスによって第2の単一の出力値を判定する。このプロセスを、3×3フィルタが32×32ピクセル画像全体にわたって3色全て及び全てのビットについてスキャンするまで続ける(精度値)。プロセスは次に、層C1の特徴マップ全てが計算されるまで、異なる重みのセットを使用して繰り返されて、C1の異なる特徴マップを生成する。
【0059】
本例では、層C1において、それぞれ30×30ピクセルを有する16個の特徴マップが存在する。各ピクセルは、入力とカーネルとの乗算から抽出された新しい特徴ピクセルであり、したがって、各特徴マップは、2次元アレイであり、したがってこの例では、シナプスCB1は、2次元アレイの16層を構成する(本明細書で言及されるニューロン層及びアレイは、必ずしも物理的関係ではなく論理的な関係であり、すなわち、アレイは必ずしも物理的な2次元アレイに配向されないことに留意する)。16個の特徴マップの各々は、フィルタスキャンに適用される16個の異なるシナプス重みのセットの1つによって生成される。C1特徴マップは全て、境界同定など、同じ画像特徴の異なる態様を対象とすることができる。例えば、第1のマップ(この第1のマップを生成するのに使用される全てのスキャンに共有される第1の重みセットを使用して生成される)は、円形エッジを識別することができ、第2のマップ(第1の重みセットと異なる第2の重みセットを使用して生成される)は、方形エッジ又は特定の特徴のアスペクト比などを識別することができる。
【0060】
層C1から層S1へ行く前には、各特徴マップ内の重なり合わずに連続する2×2領域からの値をプールする活性化関数P1(プーリング)が適用される。プーリング段階の目的は、平均して近隣の位置にすること(又はmax関数もまた使用され得る)、例えばエッジ位置の依存を低減すること、及び次の段階に行く前にデータサイズを低減することである。層S1において、16個の15×15特徴マップ(すなわち、それぞれ15×15ピクセルの異なるアレイ16個)が存在する。層S1から層C2へ行くCB2内のシナプス及び関連するニューロンは、S1内のマップを1ピクセルのフィルタシフトを使用して4×4フィルタでスキャンする。層C2において、22個の12×12特徴マップが存在する。層C2から層S2へ行く前には、各特徴マップ内の重なり合わずに連続する2×2領域からの値をプールする活性化関数P2(プーリング)が適用される。層S2において、22個の6×6特徴マップが存在する。活性化関数は、層S2から層C3へ行くシナプスCB3で適用され、ここで層C3内の全てのニューロンは層S2内の全てのマップに接続する。層C3において、64個のニューロンが存在する。層C3から出力層S3へ行くシナプスCB4は、S3をC3と完全に接続する。S3における出力は、10個のニューロンを含み、ここで出力が最も高いニューロンが、クラスを判定する。この出力は、例えば、元の画像の内容の同定又は分類を示すことができる。
【0061】
シナプスの各レベルは、不揮発性メモリセルのアレイ又はアレイの一部を使用して実行される。図13は、不揮発性メモリセルを含み、入力層と次の層との間のシナプスとして利用されるベクターとマトリクスとの乗算(vector-by-matrix multiplication、VMM)アレイのブロック図である。具体的には、VMMアレイ32は、不揮発性メモリセルのアレイ33、消去ゲート及びワード線ゲートデコーダ34、制御ゲートデコーダ35、ビット線デコーダ36、並びにソース線デコーダ37を含み、それらのデコーダはメモリセルアレイ33に対する入力をデコードする。この例におけるソース線デコーダ37はまた、メモリセルアレイ33の出力をデコードする。あるいは、ビット線デコーダ36は、不揮発性メモリセルアレイ33の出力をデコードすることができる。メモリアレイは、2つの目的を果たす。第1に、VMMアレイ32によって使用される重みを格納する。第2に、メモリセルアレイは、メモリセルアレイに格納された重みによって、入力を有効に乗算して、各出力ラインに沿って結果を一緒に加算して出力を生成し、この出力は次の層への入力又は最後の層への入力になる。乗算及び加算の関数を実行することによって、メモリアレイは、別個の乗算及び加算の論理回路の必要性をなくし、また、その場でのメモリ計算により電力効率も良い。
【0062】
メモリアレイの出力は、メモリセルアレイの出力を合計してその畳み込み用の単一の値を生成する単一又は差動加算回路38に供給される。合計された出力値は、次に出力を整流する活性化関数回路39に供給される。活性化関数には、シグモイド、tanh、又はReLU関数でもよい。回路39からの整流された出力値は、次の層(例えば上の説明ではC1)として特徴マップの要素になり、次いで、次のシナプスに適用されて次の特徴マップ層又は最後の層を生成する。したがって、この例では、不揮発性メモリセルアレイ33は、複数のシナプスを構成し(ニューロンの前の層から、又は画像データベースなどの入力層から、入力を受信する)、加算回路38及び活性化関数回路39は、複数のニューロンを構成する。
【0063】
図14は、図中でVMMアレイ32a、32b、32c、32d、及び32eとして標示されたVMMアレイ32の多数の層の使用を示すブロック図である。図14に示されるように、入力(Inputxで示される)は、デジタルアナログ変換器31によってデジタルからアナログに変換され、入力VMMアレイ32aに提供される。入力VMMアレイ32aによって生成された出力は、次に、次のVMMアレイ(隠しレベル1)32bへの入力として提供され、次に入力VMMアレイ(隠しレベル2)32cへの入力として提供される出力を生成する、などとなる。VMMアレイ32の様々な層は、畳み込みニューラルネットワーク(convolutional neural network、CNN)のシナプス及びニューロンの各層として機能する。VMMアレイ32a、32b、32c、32d及び32eはそれぞれスタンドアローンの物理的不揮発性メモリアレイとすることができ、又は複数のVMMアレイは、同じ物理的不揮発性メモリアレイの異なる部分を利用することができ、又は複数のVMMアレイは、同じ物理的不揮発性メモリアレイの重なり合う部分を利用することができる。図14に示される例は、5つの層(32a、32b、32c、32d、32e)、すなわち、1つの入力層(32a)、2つの隠れ層(32b、32c)、及び2つの完全に接続された層(32d、32e)を含む。当業者であれば、これは単なる例示であり、代わりにシステムが2つを超える隠れ層及び2つを超える完全に接続された層を含み得ることを理解するであろう。
【0064】
図15は、ソース加算マトリクス乗算器として配置された2ゲートのメモリセル(すなわち、図4に示されるものなど)のアレイを示す。図15のアレイの様々なゲート及び領域線は、図5のものと同じである(対応する構造の同じ要素番号を有する)。そのセルに適切な重み値を使用してメモリセルの各々がプログラムされた後で、アレイは、ソース加算マトリクス乗算器として作動する。マトリクス電圧入力は、Vin0-Vinnであり、ビット線16aに印加される。図15のアレイに関して出力のマトリクスIout0...IoutNは、ソース線22aに生成される。各出力Ioutは、行内の全てのセルについて入力電流Iに、セルに格納された重みWを乗じた値の合計である。
Iout=Σ(Ij*Wij)
式中、「i」は行を表し、「j」はメモリセルが存在する列を表す。入力電圧が入力電流の代わりに印加される場合、図15にVin0-Vinnとして示されるように、各出力Ioutは、その行内の全てのセルについて、セル内に格納された重みWの入力電圧倍の合計に比例する。
Iout α Σ(Vj*Wij)
【0065】
メモリセルの各行は、その列内のメモリセルに格納された重み値の合計によって決定される出力電流Ioutとして表される重み値の合計を有する単一のニューロンとして作動する。任意の所与のニューロンの出力は電流の形態であり、その後、次の後続のVMMアレイステージのための活性化関数回路による調整後の入力として使用することができる。
【0066】
図16は、ドレイン(例えば、メモリアレイのビット線)加算マトリクス乗算器として配置された2ゲートのメモリセル10(すなわち、図4に示されるものなど)のアレイの別の構成を示す。図16のアレイの線及び入力は、図15中のアレイと同じである。しかしながら、マトリクス電圧入力Vin0...Vin3はソース線14aに印加され、マトリクス出力Iout0...IoutNはビット線16aに生成される(すなわち、各出力Ioutは、列内の全てのセルに対するセル内に格納された重みWに比例するセル電流の合計である)。前の実施形態と同様に、任意の所与のニューロンの出力は電流の形態であり、その後、次の後続のVMMアレイステージのための活性化関数回路による調整後の入力電流として使用することができる。
【0067】
図17は、ドレイン加算マトリクス乗算器として配置された2ゲートのメモリセル(すなわち、図4に示されるものなど)のアレイの別の構成を示す。図17のアレイの線及び入力は、図15中のアレイと同じである。しかしながら、マトリクス電圧入力Vin0...Vin7は制御ゲート線22aに印加され、マトリクス出力(電流)Iout0...IoutNはビット線16aに生成する(すなわち、各出力Ioutは、列内の全てのセルに対するセル内に格納された重みWに比例するセル電流の合計である)。
【0068】
入力が電圧であり、出力が電流であるとすると、図17において、第1の段階後の後続の各VMM段階は、好ましくは、前のVMM段階からの入力電流を入力電圧Vinとして使用される電圧に変換するための回路機構を含む。図18は、そのような電流電圧変換回路機構の例を示しているが、これは、次のステージへの適用のための、入力電流Iin0...IinNを入力電圧Vin0...VinNにログ変換する修正されたメモリセルの行である。本明細書に記載されたメモリセルは、弱反転にバイアスされる。
Ids=Io*(Vg-Vth)/kVt=w*Io*(Vg)/kVt
式中、w=e(-Vth)/kVtである。
入力電流を入力電圧に変換するためのメモリセルを使用するIーVログ変換器について:
Vg=k*Vt*log[Ids/wp*Io]
式中、wpは、基準又は周辺メモリセルのwである。ベクトルマトリックス乗算器VMMとして使用されるメモリアレイについて、出力電流は以下である:
Iout=wa*Io*(Vg)/kVt、すなわち
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/kVt
式中、メモリアレイの各メモリセルのwa=wである。制御ゲート線22aは、電流の間に電圧変換の間に閉じられるスイッチBLRによってビット線16aに接続される入力電圧のためのメモリセルの入力として使用することができる。
【0069】
あるいは、本明細書に記載されるVMMアレイの不揮発性メモリセルは、線形領域で動作するように構成することができる。
Ids=beta*(Vgs-Vth)*Vds;beta=u*Cox*Wt/L
式中、Wt及びLは、トランジスタのそれぞれの幅及び長さである。
W α(Vgs-Vth)は、重みWが(Vgs Vth)に比例する。
【0070】
制御ゲート線又はビット線又はソース線は、線形領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、出力ニューロンの出力として使用することができる。
【0071】
I-V線形変換器用に、線形領域又は抵抗器で動作するメモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して、入出力電流を入出力電圧に線形変換することができる。あるいは、本明細書に記載されるVMMアレイの不揮発性メモリセルは、飽和領域で動作するように構成することができる。
Ids=1/2*beta*(Vgs-Vth)2;beta=u*Cox*Wt/L
W α(Vgs-Vth)2、すなわち重みWは(Vgs-Vth)2に比例する。
【0072】
制御ゲート線は、飽和領域内で動作するメモリセルの入力として使用することができる。ビット線又はソース線は、出力ニューロンの出力として使用することができる。あるいは、本明細書に記載されるVMMアレイの不揮発性メモリセルは、全ての領域又はそれらの組み合わせ(サブスレショルド、線形、又は飽和)で使用することができる。上述の電流-電圧変換回路又は技術は、本明細書のいずれかの実施形態で使用することができ、電流の形態の任意の所与のニューロンからの電流出力を、次の後続のVMMアレイステージの活性化関数回路で調整した後、入力として使用することができる。
【0073】
図19は、ドレイン(ビット線)加算マトリクス乗算器として配置された4ゲートのメモリセル(すなわち、図6に示されるものなど)のアレイの構成を示す。図19のアレイの線及び入力は、図7中のものと同じである。そのセルに適切な重み値を使用してメモリセルのそれぞれがプログラムされた後で、アレイは、ドレイン加算マトリクス乗算器として作動する。マトリクス電圧入力は、Vin0~Vin3であり、選択ゲート線28aに印加される。マトリクス出力Iout0...Ioutnは、ビット線16aに生成される。各出力Ioutは、列内の全てのセルについて、セルに格納された重みWを乗じた値に比例するセル電流の合計である。
【0074】
入力が電圧であり、出力が電流であるとすると、図19において、第1の段階後の後続の各VMM段階は、好ましくは、前のVMM段階からの入力電流を入力電圧Vinとして使用される電圧に変換するための回路機構を含む。図20は、そのような電流電圧変換回路機構の例を示しているが、これは入力電流Iin0...IinNを入力電圧Vin0...VinNにログ変換する修正されたメモリセルの行である。同様に、線形電流-電圧変換器は、線形領域で動作される修正されたメモリセルとともに使用されて、入力電圧Vin0..VinNへの流入電流Iin0...IinNを線形変換することができる。図20に示すように、選択ゲート線28aは、電流対電圧変換のためにスイッチBLRによってビット線16aに接続される。あるいは、制御ゲート線22aは、電流を電圧変換するためにビット線16aに接続され得る。
【0075】
図21は、ドレイン加算マトリクス乗算器として配置された4ゲートのメモリセル(すなわち、図6に示されるものなど)のアレイの別の構成を示す。図21のアレイの線及び入力は、図7中のものと同じである。そのセルに適切な重み値を使用してメモリセルのそれぞれがプログラムされた後で、アレイは、ドレイン加算マトリクス乗算器として作動する。マトリクス電圧入力は、Vin0~Vin3であり、制御ゲート線22aに印加される。マトリクス出力Iout0...Ioutnは、ビット線16aに生成される。各出力Ioutは、列内の全てのセルについて、セルに格納された重みWを乗じた値に比例するセル電流の合計である。
【0076】
図22は、ソース加算マトリクス乗算器として配置された4ゲートのメモリセル10(すなわち、図6に示されるものなど)のアレイの別の構成を示す。図22のアレイの線は、各メモリセルを独立してプログラム、消去、及び読み出しすることができるように、制御ゲート線22aが水平の代わりに垂直に走ることを除いて、図7のアレイと同じである。具体的には、メモリセルの各列は、その列内のメモリセルの全ての制御ゲート22を一緒に電気的に接続する制御ゲート線22a含む。マトリクス電圧入力Vin0...VinNは、制御ゲート線22aに生成され、マトリクス出力Iout0...Iout1は、ソース線14aに生成される。
【0077】
図23は、ソース加算マトリクス乗算器として配置された4ゲートのメモリセル(すなわち、図6に示されるものなど)のアレイの別の構成を示す。図23のアレイの線は、図22のアレイと同じである。マトリクス電圧入力Vin0...VinNは、ビット線16aに生成され、マトリクス出力Iout0...Iout1は、ソース線14aに生成される。
【0078】
図24は、ソース加算マトリクス乗算器として配置された4ゲートのメモリセル(すなわち、図6に示されるものなど)のアレイの別の構成を示す。図24のアレイの線は、各ビット線がビット線をオンにするスイッチとして機能するビット線バッファトランジスタ60を含む(すなわち、ビット線をその電流又は電圧ソースに結合する)ことを除き、図22のアレイと同じである。マトリクス入力Vin0...VinNがトランジスタ60のゲートに生成され、マトリクス出力はIout0...Iout1は、ソース線14aに生成される。この構成の利点は、ビット線に直接入力を供給する代わりに、マトリクス入力を電圧として(トランジスタ60を動作させる)電圧として供給することができることである。これにより、定電圧源をトランジスタのゲートに供給される入力電圧Vinに応答して提供されるビット線に(すなわち、トランジスタ60を介して)印加することができる。
【0079】
図25図26は、ドレイン加算マトリクス乗算器として配置された3ゲートメモリセルのアレイの構成を示す。メモリセルは、図25に示されており、消去ゲートが存在しないことを除いては、図6と同じである。一実施形態では、セル消去は、選択ゲート28に正電圧を印加し、電子が浮遊ゲート20から選択ゲート28にトンネリングする。以下は、図25の3ゲートメモリセルの例示的かつ非限定的な動作電圧の表である。
表3
【表3】
読み出し1は、セル電流がビット線に流れる読み出しモードである。読み出し2は、セル電流がソースラインに流れる読み出しモードである。
【0080】
メモリセルのアレイの線は、図26に示されており、消去ゲート線30aが存在せず(消去ゲートが存在しないため)、ソース線14aが、水平の代わりに垂直に走り、各メモリセルが独立してプログラム、消去、及び読み出しできることを除いては、図19のアレイのものと同じである。具体的には、メモリセルの各列は、その列内のメモリセルについて全てのソース領域14を一緒に接続するソース線14aを含む。そのセルに適切な重み値を使用してメモリセルの各々がプログラムされた後で、アレイは、ソース加算マトリクス乗算器として作動する。マトリクス電圧入力は、Vin0~Vin3であり、制御ゲート線22aに印加される。あるいは、マトリクス電圧入力を選択ゲート線28aに印加することができる。マトリクス出力Iout0...Ioutnは、ソース線14aに生成される。各出力Ioutは、列内の全てのセルについて、セルに格納された重みWを乗じた値に比例するセル電流の合計である。あるいは、マトリクス出力はビット線16aに生成される。別の実施形態では、ソース線14aは水平に(すなわち、各々は、メモリセルの行の全てのソース領域を接続する)。図25図26の代替的な消去動作は、高電圧、例えば、10V~20Vのp型基板12を有することができ、低電圧又は負電圧、例えば-10V~0Vの制御ゲート22を有することができ、それによって電子は浮遊ゲート20から基板12にトンネリングする。
【0081】
図27は、制御ゲート22が存在しないことを除いて、図6のメモリセルと同様の3ゲートを有するメモリセル10を示す。読み出し、消去、及びプログラムは、同様の方法で行われるが、制御ゲートにバイアスを加えることなく行われる。例示的な非限定的な動作電圧は、以下の表4のものを含むことができる。
表4
【表4】
読み出し1は、セル電流がビット線に流れる読み出しモードである。読み出し2は、セル電流がソースラインに流れる読み出しモードである。
【0082】
図28は、図27のメモリセル10を使用したメモリセルアレイアーキテクチャを示し、全ての行は、ビット線16aを除く水平/行方向に延在する。そのセルに適切な重み値を使用してメモリセルの各々がプログラムされた後で、アレイは、ビット線加算マトリクス乗算器として作動する。マトリクス電圧入力は、Vin0~Vin3であり、選択ゲート線28aに印加される。マトリクス出力Iout0...Ioutnは、ビット線16aに生成される。各出力Ioutは、列内の全てのセルについて、セルに格納された重みWを乗じた値に比例するセル電流の合計である。このアレイアーキテクチャについては、図29に示すように、選択ゲート線28の代わりに、マトリクス電圧入力を消去ゲート線30aに印加することができることに留意されたい。あるいは、マトリクス入力は、代わりに、図30に示すように選択ゲート線28a又は消去ゲート線30aに印加された電圧入力の代わりに、ソース線14aに印加された電圧入力であってもよい。更にもう1つの代替例では、マトリクス入力は、図31に示すように、ソース線14aの電流出力を用いてビット線16aに印加された電圧入力であり得る。
【0083】
図32は、積層ゲート構成における2つのゲートのみを有するメモリセル10を示す。メモリセルは、上述のメモリセルと同様に、チャネル領域18が間に存在するソース領域及びドレイン領域14/16を含む。しかしながら、本メモリセル構成では、浮遊ゲート20はチャネル領域全体にわたって延在し、制御ゲート22は浮遊ゲートの上方に配設される。このメモリセルは、ソース側にホット電子注入を用いてプログラムされる。代替のプログラムをドレイン側で行うことができる。メモリセルは、電子が浮遊ゲート20から基板12にトンネリングする、基板12、ソース領域14、又はドレイン領域16に高い正電圧を印加することによって消去される。このメモリセルは、制御ゲート及びソース領域14に読み出し電圧を印加することによって読み取られる。例示的な非限定的な動作電圧は、以下の表5のものを含むことができる。
表5
【表5】
読み出し1は、セル電流がビット線に流れる読み出しモードである。読み出し2は、セル電流がソースラインに流れる読み出しモードである。
【0084】
図33は、図32のメモリセル10を使用したメモリセルアレイアーキテクチャを示し、ビット線16aを除いて全ての行が水平/行方向に延在する。そのセルに適切な重み値を使用してメモリセルの各々がプログラムされた後で、アレイは、ビット線加算マトリクス乗算器として作動する。マトリクス電圧入力は、Vin0~Vin3であり、制御ゲート線22aに印加される。マトリクス出力Iout0...Ioutnは、ビット線16aに生成される。各出力Ioutは、列内の全てのセルについて、セルに格納された重みWを乗じた値に比例するセル電流の合計である。このアレイアーキテクチャについては、図34に示すように、マトリクス入力は、制御ゲート線22aに印加する電圧入力の代わりに、ソース線14aに印加する電圧入力に代えてもよいことに留意されたい。更にもう1つの代替例では、マトリクス入力は、図35に示すように、ソース線14aの電流出力を用いてビット線16aに印加される電圧入力でもよい。
【0085】
図36は、図32のメモリセル10を使用する別のメモリセルアレイアーキテクチャを示す。図36のアレイアーキテクチャは、水平の代わりに制御ゲート線22aが垂直に走ることを除いて、図33のアレイアーキテクチャと同じである(すなわち、各制御ゲート線22aは、メモリセルの全ての制御ゲート22を列のうちの1つに接続する)。そのセルに適切な重み値を使用してメモリセルの各々がプログラムされた後で、アレイは、ソース線加算マトリクス乗算器として作動する。マトリクス電圧入力は、Vin0~Vin3であり、制御ゲート線22aに印加される。マトリクス出力Iout0...Ioutnは、ソース線14aに生成される。各出力Ioutは、行内の全てのセルについてセルに格納された重みWに比例するセル電流の合計である。
【0086】
図37は、図32のメモリセル10を使用する別のメモリセルアレイアーキテクチャを示す。図37のアレイアーキテクチャは、水平の代わりにソース線14aが垂直に走ることを除いて、図33のアレイアーキテクチャと同じである(すなわち、各ソース線14aは、メモリセルの全てのソース線14を列のうちの1つに接続する)。そのセルに適切な重み値を使用してメモリセルの各々がプログラムされた後で、アレイは、ソース線加算マトリクス乗算器として作動する。マトリクス電圧入力は、Vin0~Vin3であり、制御ゲート線22aに印加される。マトリクス出力Iout0...Ioutnは、ソース線14aに生成される。各出力Ioutは、列内の全てのセルについて、セルに格納された重みWを乗じた値に比例するセル電流の合計である。あるいは、マトリクス出力は、図38に示すようにソース線14aの代わりにビット線16aに生成される。
【0087】
図39は、図32のメモリセル10を使用する別のメモリセルアレイアーキテクチャを示す。図39のアレイアーキテクチャは、メモリセルの各列に2つの制御ゲート線22a(すなわち、偶数行の列内の全てのメモリセルに対して制御ゲート22を一緒に接続する第1の制御ゲート線22a1と、奇数行の列の全てのメモリセルに対して制御ゲート22を一緒に接続する第2の制御ゲート線22a2が存在することを除いては、図36のアレイアーキテクチャと同じである。そのセルに適切な重み値を使用してメモリセルの各々がプログラムされた後で、アレイは、ソース線加算マトリクス乗算器として作動する。この構成用のマトリクス電圧入力は、Vin0~Vinnであり、制御ゲート線22a1及び22a2に印加される。マトリクス出力Iout0...Iout2は、ソース線14aに生成される。各出力Ioutは、行内の全てのセルについてセルに格納された重みWに比例するセル電流の合計である。各列の2つの入力は、差分入力でもよい。
【0088】
前述した実施形態は全て、アナログ又はデジタル方式で、かつメモリセルの閾値を下回るか又は上回るかのいずれかで、メモリセルを動作させることができる。本明細書で使用される、デジタル方式で動作するという語は、メモリセルが、動作中の2つ、例えば、プログラムされた状態及び消去された状態によって表される「0」及び「1」のプログラム状態(プログラムレベルとも呼ばれる)のうちの1つを表すようにプログラム又は消去することができることを意味する。アナログ方式で動作するということは、メモリセルが、動作中に2つ以上のプログラム状態、例えば、4ビットの同等のメモリセルのための16のプログラム状態のうちの1つを表すようにプログラム又は消去されてもよいことを意味する。閾値を超えて動作するということは、印加された読み出し電圧(複数可)が、(そのプログラム状態に応じて)メモリセルをオンにするのに十分であることを意味し、つまり、読み出し電圧(複数可)とセル電流との間に線形又は飽和関係が存在するようにして、チャネル領域(すなわち、読み出し電流又はセル電流)を通じて電流を伝導することを意味する。閾値を下回って動作することは、印加された読み出し電圧(複数可)がメモリセルを強くオンにするのに十分ではないことを意味し、つまり、メモリセルを通る任意の電流がサブスレショルド電流と見なされることを意味する。サブスレショルド動作中の読み出し電圧(複数可)とセル電流との間の関係は線形ではないが、指数関数的に予測可能かつ反復可能である。したがって、サブスレショルドメモリセル動作は、極端な低電力アナログ動作にはより良好に適しているが、閾値を上回る動作の線形特性は、高速性能のためのデジタル動作により良好に適している。しかしながら、特定の用途では、又は動作範囲を拡張するために、閾値を下回るデジタル動作、及び/又は閾値を上回るアナログ動作が望ましいかもしれない。
【0089】
メモリセルがアナログ方式で動作される場合、プログラム状態を最適化することによって、ネットワーク精度を改善することができる。具体的には、図8A及び図8Bに関連して上述したように、メモリセル内に格納された重みレベルの割り当ては、メモリセルが、メモリセルへの重み値のマッピング(プログラム又は消去による同調)中に理想的に達成するプログラム状態の違い(消去された状態を含む)に対応するため、格納された重みが、入ってくる入力への読み出し動作中に適切に適用されるようになる。プログラム状態の違いは、浮遊ゲートに加えられた電子の数違いを反映し、同じ読み出し動作電圧を印加した場合にチャネル領域を通る可能な読み出し電流の違いに対応する。浮遊ゲートの電子が多ければ多いほど、プログラム状態が高くなる(したがって、読み出し動作中のチャネル読み出し電流が低くなる)。したがって、図8Aの16プログラム状態では、L0状態は、最も消去されたプログラム状態(浮遊ゲートが最少の電子量を含む)を反映する。L1は、浮遊ゲートにプログラムされた第1の量の電子を有するプログラム状態を反映する。L2は、第1の量の電子よりも多い第2の量の電子が浮遊ゲートにプログラムされたプログラム状態を反映するなどである。この実施形態では、プログラム状態は、互いに均等に離間されており、つまり、メモリセルに印加された、読み出し印加電圧の所与の読み出し動作に関して、任意の2つの隣接するプログラム状態は、読み出し電流の同じ差だけ互いに異なることを意味する。別の言い方をすれば、メモリセルを1つのプログラミング状態から次のプログラミング状態に移動させるように浮遊ゲートを追加の電子でプログラミングすることは、常に、読み出し印加電圧の所与の読み出し動作の読み出し電流の減少をもたらすことになる。あるいは、読み出し電流が読み出し電圧に変換される場合、上記は、読み出し電流の代わりに読み出し電圧に対して等しく適用される。したがって、本明細書使用される、プログラム状態の間隔又は2つのプログラム状態間の分離とは、メモリセルへの読み出し印加電圧の同一の読み出し動作条件下での、読み出し電流から導出される読み出し電流又は読み出し電圧の差を意味する。対照的に、図8Bでは、より高いレベルのプログラム状態は、より低いレベルのプログラム状態よりもより近い間隔である(すなわち、プログラム状態の隣接レベル間の読み出し電流又は読み出し電圧の差は、プログラム状態レベルの関数であり、隣接するより高いレベルのプログラム状態を分離する読み出し電流又は読み出し電圧の差は、隣接する低レベルのプログラム状態の差よりも小さい)。
【0090】
改善されたニューラルネットワークシステムの信頼性及び性能は、単にプログラム状態レベル数に基づく代わりに、様々なプログラム状態の使用密度に基づいてプログラム状態の分離を変更することによって達成することができることが発見された。使用密度は、そのプログラム状態(すなわち、そのプログラム状態の使用頻度)にプログラムされた相対数メモリセルを反映する。任意の所与のプログラム状態の使用密度が高くなるほど(すなわち、使用頻度が高いほど)、他のプログラム状態と比較して、そのプログラム状態にプログラムされるメモリセルの相対数が大きくなる。例えば、図40は、16のプログラム状態を採用するシステムの例示的な使用密度を示し、中間のプログラム状態が最も多く使用され、下位のプログラム状態及び上位のプログラム状態の使用は最も少ない。この実施例では、他のプログラム状態のうちのどれよりも、L7のプログラム状態により多くのメモリセルがプログラムされる。システムの信頼性及び性能を増加させるために、最も多く使用される状態は、それらのプログラム状態の場合よりも、隣接するプログラム状態からの分離が大きくなるように設定される。これは、図41に示されており、プログラム状態L4~L11は、プログラム状態L0~L3及びL12~15よりも更に離間している(すなわち、隣接する状態間の分離S1は、隣接する状態間の分離S2よりも大きい)。依然としてメモリセルのプログラム状態を性格に読み出すことができるとはいえ、プログラミング中に目標と実際の調整された状態レベルとの間にはより大きな偏差が存在する可能性があるので、プログラム状態分離が大きいほど、達成可能な潜在的な精度及び信頼性が向上する。読み出しの不正確さに対する許容範囲が大きいが、分離がより大きいプログラム状態でプログラムされたメモリセルの方が正確に読み取ることができる。プログラム分離をより大きくするによって克服することができる不正確性のソースとしては、調整の不正確性、読み出しの不正確性、熱又は1/fノイズ、セル-セル結合などを挙げることができる。
【0091】
図42及び図43は、異なる使用密度の例を示す図であり、図41及び図42に示されるものに対して、上位のプログラム状態の使用が少なくなり、下位のプログラム状態の使用が多くなる。この例では、プログラム状態L2~L9は、プログラム状態L0~L1及びL10~L15よりも互いから更に離間している。このシステムは、複数のメモリセルによって使用されることの方が多い場合、より分離が大きい、下位のプログラム状態を好む。
【0092】
図44及び図45は、最も使用されるのが少ない中間のプログラム状態である、異なる使用密度の例を示す。この例では、プログラム状態L0~L3及びL11~L15は、プログラム状態L4~L10に対して互いに更に離間している。このシステムは、より多くの場合、複数のメモリセルによって使用される場合、中間のプログラム状態より、下位及び上位のプログラム状態に有利である。
【0093】
図46及び図47は、異なる使用密度の例を示し、より高い使用密度(L3、L7、L10、及びL11)のプログラム状態が互いに隣接していない、異なる使用密度の例を示す。実施形態は、使用密度が、プログラム状態によって、個々に考慮され得ることを反映している。別の実施形態では、特定のプログラム状態がニューラルネットワークの精度に影響を及ぼす場合には、それらのプログラム状態は、更に離れて離間される。
【0094】
隣接するプログラム状態間の分離は、S1又はS2として示されているが、2つを超える分離値も使用でき、及び/又は分離は、使用される頻度が低い状態のみ、及び/又はより頻繁に使用される状態のみの間で変化し得ることに留意されたい。更に、分離の変化を実装する1つの方法は、S1分離が対数であり、S2分離が線形であるか、又はその逆であることである。あるいは、S1及びS2は、異なる量の対数差でもよい。
【0095】
使用密度は、例えば、ニューラルネットワークのトレーニング中に判定することができる。このようなトレーニングは、所望の出力を達成するために、ニューラルネットワークに既知の入力を提供することを含んでいてもよい。次いで、実際の出力を所望の出力と比較してエラーを判定して、所望の出力が達成されるか、又はシステムがある統計的に望ましい展に到達するまで、格納された重みを調整してシステムを改善するために使用する。このトレーニングの一部として、様々なプログラム状態の使用密度が判定され、上述のようにプログラム状態の分離を調整するために使用される。使用密度は、複数のレベルを合わせて全体的に、又は、より細かく個々に層ごとに判定して実装することもできる。使用密度を判定するための他の技術は、特定の用途に基づいて、又は履歴情報に基づいて、どの重み(したがって、どのプログラム状態)が最も使用されるかを推定する予測モデルを作成することを含むことができる。
【0096】
動作の種類(デジタル対アナログ)、及び/又はプログラム状態分離スキームは、速度、精度、信頼性、電力消費などの観点から性能を最大化するために、ニューラルネット層の関数として、同じでも、変化してもよい。例えば、2つの異なる隣接する、又は隣接していないニューラルネット層は、2つの異なる動作モード(一方はデジタル的に動作し、他方はアナログ方式で動作する)、又は同じ動作モードを使用することができる。追加的に又は代替的に、いくつかのVMMアレイは閾値未満で動作することができ、一方で、他は閾値を上回って動作することができる。また、アナログ方式で動作する2つの異なる隣接する若しくは隣接しないニューラルネットワーク層は、異なるプログラム状態分離スキームを利用することができ、及び/又は異なる数のプログラム状態を利用することができる(すなわち、所与のニューラルネット層が必要とするプログラム状態が少ない場合には、使用する更に間隔が広いプログラム状態はより少なくてもよい)、又は同じプログラム状態分離スキームを使用することができる。特定の例として、図12では、層S1から層C2へと進むCB2中のシナプスは、デジタル的に動作されることができ、一方、CB3(層S2及び層C3から進む)及びCB4(層C3から層S3へと進む)のシナプスは、アナログ様式で動作されることができる。追加的に、CB2中のニューラルネット層の一部は、16のレベルを使用して図41のプログラム状態分離スキームを使用して動作することができるが、他のものは、8つのみのレベルを使用して図8のプログラム状態分離スキームを使用して動作する。追加的に又は代替的に、CB2内のニューラルネット層の一部は、図41のプログラム状態分離スキームを使用して動作することができる(中間状態は他のプログラム状態よりも更に離れている)一方、他のものは、図45のプログラム状態分離スキームを使用して動作する(中間状態は、他のプログラム状態よりも間隔が近くなっている)。
【0097】
各ニューラルネット層の目的やニーズに合わせて、異なる動作(デジタル対アナログ、閾値を上回るか又は下回るか、アナログのプログラミング状態の増減など)をするVMMアレイを使用することで、性能を向上させることができる。例えば、メモリセルを閾値を下回って(サブスレショルドで)動作させると、電力消費(例えば、数百ナノアンペアから1つ以下のピコアンペアまでの電流)が低減し、したがって、極端な低電力アナログ動作のためにより良好である。メモリセルを閾値を上回って動作させると、より多くの電力(例えば、数百ナノアンペアから数十マイクロアンペアまでの電流)を消費するが、デジタル動作、より大きい動作範囲、より高い電流によるより多くの状態レベル、及び高速性能により適した特性を提供する。デジタル方式でメモリセルを動作させることにより、畳み込み、プール、非線形関数などの異なる機械学習(ディープラーニング)動作に、より高い柔軟性を提供するが、より多くの電力を消費する。アナログ方式でメモリセルを動作させることは、柔軟性が低いが、消費が少ない(例えば、デジタル的に動作するメモリセルによって消費される電力の1/10又は更には1/100とすることもできる)。したがって、各VMMアレイの動作は、そのニューラルネット層の性能を最大化するために、(デジタル/アナログ、閾値を上回る又は下回る、プログラム状態分離スキームなど)設定することができ、これは、他のVMMアレイと同じであっても、又は異なっていてもよい。
【0098】
異なる動作や構成を持つVMMアレイを単独で、又は上述の多様なタイプのVMMアレイ動作の1つ以上と組み合わせて使用することで、性能を更に向上させることができる別の例として、上述のアナログ不揮発性VMMと組み合わせてアナログ揮発性VMMアレイを使用する方法がある。このようなアナログ揮発性VMMアレイは、揮発性メモリセル(DRAM、SRAM、コンデンサベースのカスタムメモリセルなど、メモリセルの電源を切ると記憶情報が失われるが、浮遊ゲートを持つ不揮発性メモリセルのように、メモリセルの電源を切っても格納情報が維持されるもの)で形成され、畳み込み層として使用することができる。例えば、フィルタの重みは、上述のアナログ不揮発性アレイに格納される。次いで、これらの重みは、アナログ揮発性VMMアレイに転送され、次いで、畳み込みがアナログ揮発性VMMアレイで動作させられる。そのようにすることの1つの利点は、揮発性メモリセルを使用する速度の増加(不揮発性メモリセルよりも速く動作する)であろうが、電力がオフにされた後、不揮発性メモリセル内に格納された重みが維持される。揮発性メモリセルのVMMアレイは、異なる機械学習(ディープラーニング)動作のためにより柔軟であるが、より頻繁に(例えば、典型的には、ミリ秒の時間枠で)リフレッシュする必要があり、したがって、より多くの電力を消費する。不揮発性メモリセルのVMMアレイは、異なる機械学習(ディープラーニング)動作のためにあまり柔軟ではないが、(例えば、典型的には、数ヶ月又は数年の時間枠で)リフレッシュされるべき頻度が低く、したがって、消費する電力がより少ない。したがって、任意の所与の用途に関して、揮発性VMMアレイの複数の層、及び/又は不揮発性層の複数の層を、各VMM層の要件及び上述の利点及び揮発性及び不揮発性VMMアレイの欠点に応じて使用してもよい。
【0099】
上記機能の全ては、神経網機能に使用される上述のメモリセル10のメモリアレイ(複数可)に接続される制御回路を含むコントローラ100の制御下で実行することができる。図48に示すように、コントローラ100は、メモリアレイ(複数可)120と同じ半導体チップ又は基板110にあることが好ましい。しかしながら、コントローラ100はまた、別個の半導体チップ又は基板に配置されてもよく、半導体チップ又は基板110の異なる場所に配設された複数のコントローラ又は異種の制御回路の集合であってもよい。
【0100】
一部のニューラルネットワークアプリケーションは、正及び負の重みの両方を使用し、その場合、コントローラ100は、メモリセルが重みでプログラムされたときに、いくつかのプログラム状態に負の重みを、また、他のプログラム状態に正の重みをマッピングする。次いで、動作中、コントローラ100は、負の重みでプログラムされたメモリセルから生成された出力電流に対して適切な動作を実行する。
【0101】
本発明は、本明細書に図示された上記実施形態(複数可)に限定されるものではなく、任意の特許請求の範囲の範疇に収まるあらゆる変形例を包含することが理解されよう。例えば、本明細書で本発明に言及することは、任意の特許請求項又は特許請求項の用語の範囲を限定することを意図しておらず、その代わり、単に、1つ以上の特許請求項によって網羅され得る1つ以上の特徴に言及するものである。上記で説明した材料、プロセス、及び数値の実施例は、単に例示的なものであり、特許請求の範囲を限定するものと見なされるべきではない。単一の材料層は、かかる又は類似の材料から構成される多数の層として形成することができ、そして、逆もまた同様である。各メモリセルアレイの出力は、次のニューロン層に送られる前にフィルタコンデンセーションによって操作されるが、そうである必要はない。最後に、上述したマトリクス乗算器アレイの実施形態の各々では、入力電圧や出力電流に使用されていないラインについては、その構成のメモリセルの表に記載されている公称読み出し電圧を、動作中にそのラインに適用することができる(ただし、必ずしもそうする必要はない)。
【0102】
本明細書で使用される、用語「の上方に(over)」及び「に(on)」は共に、「に直接」(中間材料、要素、又は間隙がそれらの間に配設されていない)及び「に間接的に」(中間材料、要素、又は間隙がそれらの間に配設されている)を包括的に含むことに留意されるべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「間接的に隣接した」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されていない)、及び「に間接的に取り付けられた」(中間材料、要素、又は間隙がそれらの間に配設されている)を含み、「電気的に結合された」は、「直接電気的に結合された」(中間材料又は要素がそれらの間で要素を電気的に連結していない)、及び「間接的に電気的に結合された」(中間材料又は要素がそれらの間で要素を電気的に連結している)を含む。例えば、「基板の上方に」要素を形成することは、中間材料/要素が介在せずに直接基板にその要素を形成することも、1つ以上の中間材料/要素が介在して間接的に基板にその要素を形成することも含み得る。
【要約】
メモリデバイスは、複数のメモリセル及びコントローラを含む。コントローラは、メモリセルの各々を複数のプログラム状態のうちの1つにプログラムし、メモリセルに印加電圧の読み出し動作を使用してメモリセルを読み出すように構成される。読み出し動作中に、プログラム状態のうちの隣接するものの間の分離は、複数のメモリセルにおけるプログラム状態の使用頻度に基づいて変化する。
【選択図】図41
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46
図47
図48