(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-07
(45)【発行日】2023-12-15
(54)【発明の名称】複数のベクトルマトリックス乗算アレイ及び共有構成要素を備える、深層学習ニューラルネットワーク用のアナログニューラルメモリシステム
(51)【国際特許分類】
G06N 3/063 20230101AFI20231208BHJP
G11C 11/54 20060101ALI20231208BHJP
【FI】
G06N3/063
G11C11/54
(21)【出願番号】P 2021509739
(86)(22)【出願日】2019-07-09
(86)【国際出願番号】 US2019041039
(87)【国際公開番号】W WO2020040893
(87)【国際公開日】2020-02-27
【審査請求日】2022-03-25
(32)【優先日】2018-11-06
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-08-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500147506
【氏名又は名称】シリコン ストーリッジ テクノロージー インコーポレイテッド
【氏名又は名称原語表記】SILICON STORAGE TECHNOLOGY, INC.
(74)【代理人】
【識別番号】110000626
【氏名又は名称】弁理士法人英知国際特許商標事務所
(72)【発明者】
【氏名】トラン、ヒュー バン
(72)【発明者】
【氏名】ブー、サン
(72)【発明者】
【氏名】リ、アン
(72)【発明者】
【氏名】ホン、スタンレー
【審査官】渡辺 順哉
(56)【参考文献】
【文献】米国特許出願公開第2017/0337466(US,A1)
【文献】特開平04-132087(JP,A)
【文献】特開2014-057077(JP,A)
【文献】特開2012-164384(JP,A)
【文献】特開2011-233198(JP,A)
【文献】GUO, Xinjie,Mixed Signal Neurocomputing Based on Floating-gate Memories,UC Santa Barbara Electronic Theses and Dissertations[online],2017年,pp.44-57,[retrieved on 2023.04.28], Retrieved from the Internet: <URL: https://escholarship.org/uc/item/8193688w>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G11C 11/54
(57)【特許請求の範囲】
【請求項1】
アナログニューロモーフィックメモリシステムであって、
複数のベクトルマトリックス乗算システムであって、各ベクトルマトリックス乗算システムは、
メモリセルのアレイと、
低電圧行デコーダと、
高電圧行デコーダと、
低電圧列デコーダと、を備える、複数のベクトルマトリックス乗算システムと、
複数の出力ブロックであって、各出力ブロックは、前記複数のベクトルマトリックス乗算システムのうちの少なくとも1つに応答して出力を提供する、複数の出力ブロックと、
消去動作及びプログラミング動作のうちの1つ以上のために、前記複数のベクトルマトリックス乗算システムの各々に高電圧を同時に提供するように構成された共有高電圧発生器ブロックと、を備える、アナログニューロモーフィックメモリシステム。
【請求項2】
前記複数のベクトルマトリックス乗算システムの各々に対する高電圧補償ブロックを更に備える、請求項1に記載のシステム。
【請求項3】
前記複数のベクトルマトリックス乗算システムの全てに対する高電圧補償ブロックを更に備える、請求項1に記載のシステム。
【請求項4】
前記システムは、2つ以上のベクトルマトリックス乗算システムに対してプログラミング動作を同時に実行するように構成されている、請求項1に記載のシステム。
【請求項5】
前記
2つ以上のベクトルマトリックス乗算システムに対するプログラミング動作は、単一のコマンドに応答して実行される、請求項
4に記載のシステム。
【請求項6】
前記システムは、前記
2つ以上のベクトルマトリックス乗算システムに対するプログラミング動作後に、前記2つ以上のベクトルマトリックス乗算システムに対する検証動作を同時に実行するように構成されている、請求項4に記載のシステム。
【請求項7】
前記
共有高電圧発生器ブロックは、前記ベクトルマトリックス乗算システムの全てにおいて、メモリセルの全てのアレイに対してプログラム動作及び消去動作を同時に実行するのに十分な電圧及び電流を提供することができる、請求項1に記載のシステム。
【請求項8】
前記メモリセルは、スプリットゲートフラッシュメモリセルである、請求項1に記載のシステム。
【請求項9】
各ベクトルマトリックス乗算システムは、長・短期メモリシステムのセルである、請求項1に記載のシステム。
【請求項10】
各ベクトルマトリックス乗算システムは、ゲート付き回帰型ユニットメモリシステムのセルである、請求項1に記載のシステム。
【請求項11】
前記
共有高電圧発生器ブロックは、チャージポンプを備える、請求項1に記載のシステム。
【請求項12】
前記複数の出力ブロックの各々は、加算器及び活性化ブロックを備える、請求項1に記載のシステム。
【請求項13】
各加算器及び活性化ブロックは、前記複数のベクトルマトリックス乗算システムのうちの少なくとも1つに対する加算及び活性化関数を実行するように構成されている、請求項12に記載のシステム。
【請求項14】
アナログニューロモーフィックメモリシステムであって、
複数のベクトルマトリックス乗算システムであって、各ベクトルマトリックス乗算システムは、
メモリセルのアレイと、
低電圧行デコーダと、
高電圧行デコーダと、
低電圧列デコーダと、を備える、複数のベクトルマトリックス乗算システムと、
複数の出力ブロックであって、各出力ブロックは、前記複数のベクトルマトリックス乗算システムのうちの少なくとも1つに応答して出力を提供する、複数の出力ブロックと、
前記複数のベクトルマトリックスシステムのうちの2つ以上のプログラム動作後に、検証動作を同時に実行するように構成された共有検証ブロックと、を備える、システム。
【請求項15】
メモリセルの「0」値を検知するための検知ブロックを更に備え、前記検知ブロックは、前記複数のベクトルマトリックス乗算システムのうちの1つ以上に結合され得る、請求項14に記載のシステム。
【請求項16】
メモリセルの「1」値を検知するための検知ブロックを更に備え、前記検知ブロックは、前記複数のベクトルマトリックス乗算システムのうちの1つ以上に結合され得る、請求項14に記載のシステム。
【請求項17】
前記複数のベクトルマトリックスシステムのうちの2つ以上のメモリセルにおいて読み出し動作を同時に実行するように構成された共有検知ブロックを更に備える、請求項14に記載のシステム。
【請求項18】
前記複数のベクトルマトリックスシステムのうちのいずれかにおいて1つ以上の構成要素を調整するように構成された共有トリムブロックを更に備える、請求項14に記載のシステム。
【請求項19】
前記1つ以上の構成要素は、調節可能な抵抗器を備える、請求項18に記載のシステム。
【請求項20】
前記1つ以上の構成要素は、調節可能なトランジスタを備える、請求項18に記載のシステム。
【請求項21】
前記1つ以上の構成要素は、調節可能な電流源を備える、請求項18に記載のシステム。
【請求項22】
前記共有検証ブロックは、前記ベクトルマトリックス乗算システムの全てにおいて、メモリセルで読み取り動作を同時に実行することができる、請求項14に記載のシステム。
【請求項23】
前記メモリセルは、スプリットゲートフラッシュメモリセルである、請求項14に記載のシステム。
【請求項24】
各ベクトルマトリックス乗算システムは、長・短期メモリシステムのセルである、請求項14に記載のシステム。
【請求項25】
各ベクトルマトリックス乗算システムは、ゲート付き回帰型ユニットメモリシステムのセルである、請求項14に記載のシステム。
【請求項26】
前記複数の出力ブロックの各々は、加算器及び活性化ブロックを備える、請求項14に記載のシステム。
【請求項27】
各加算器及び活性化ブロックは、前記複数のベクトルマトリックス乗算システムのうちの少なくとも1つに対する加算及び活性化関数を実行するように構成されている、請求項26に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本出願は、「Analog NeuroMemory System for Deep Learning NeuroNetwork Comprising Multiple Vector-By-Matrix Multiliplications Arrays and Shared Components」と題する、2018年8月21日に出願された米国仮特許出願第62/720,902号、及び「Analog Neural Memory System for Deep Learning Neural Network Comprising Multiple Vector-By-Matrix Multiplication Arrays and Shared Components」と題する、2018年11月6日に出願された米国特許出願第16/182,492号に対する優先権を主張する。
【0002】
(発明の分野)
深層学習ニューラルネットワークで使用するためのアナログニューロモーフィックメモリシステムについて、多数の実施形態が開示される。アナログニューロモーフィックメモリシステムは、複数のベクトルマトリックス乗算アレイと、それらのアレイによって共有される様々な構成要素であって、高電圧生成ブロック、検証ブロック、及び試験ブロックを含む、様々な構成要素と、を備える。
【背景技術】
【0003】
人工ニューラルネットワークは、生物学的ニューラルネットワーク(動物の中枢神経系、特に脳)を模倣しており、多数の入力に依存し得、かつ、一般的に未知である機能を推定する又は近似するために使用される。人工ニューラルネットワークは、概して、メッセージを交換する相互接続した「ニューロン」の層を含む。
【0004】
図1は、人工ニューラルネットワークを図示しており、ここで円は、入力又はニューロンの層を表す。接続(シナプスと呼ばれる)は、矢印によって表され、経験に基づいて調整され得る数値の重みを有する。これは、ニューラルネットワークが入力に適応できるようにし、学習できるようにする。典型的には、ニューラルネットワークは、複数の入力の層を含む。典型的には、1つ以上のニューロンの中間層、及びニューラルネットワークの出力を提供するニューロンの出力層が存在する。それぞれのレベルでニューロンは、シナプスから受信されたデータに基づいて個々に又は合わせて決定を行う。
【0005】
高性能情報処理用の人工ニューラルネットワークの開発における主要な課題の1つは、適切なハードウェア技術の欠如である。実際には、実用ニューラルネットワークは、非常に多数のシナプスに頼り、ニューロン間の高い接続性、すなわち、非常に高度な計算的並行処理を可能にする。原理的には、このような複雑性は、デジタルスーパーコンピュータ又は専門化したグラフィック処理ユニットクラスタによって実現され得る。しかしながら、高コストに加え、これらのアプローチはまた、主として低精度のアナログ計算を実施するのではるかに少ないエネルギーしか消費しない生物学的ネットワークに比べてあまり良くないエネルギー効率に悩まされている。CMOSアナログ回路は、人工ニューラルネットワークに使用されてきたが、ほとんどのCMOS実装シナプス(CMOS-implemented synapses)は、多数のニューロン及びシナプスを考えると嵩高すぎていた。
【0006】
出願人は以前に、参照により組み込まれる米国特許出願第15/594,439号において、シナプスとして1つ以上の不揮発性メモリアレイを利用する人工(アナログ)ニューラルネットワークを開示した。不揮発性メモリアレイは、アナログニューロモーフィックメモリとして動作する。ニューラルネットワークデバイスは、第1の複数の入力を受信するように、かつそれから第1の複数の出力を生成するように構成されている第1の複数のシナプス、及び第1の複数の出力を受信するように構成された第1の複数のニューロンを含む。第1の複数のシナプスは、半導体基板内に形成された、間にチャネル領域が延在している離間したソース領域及びドレイン領域と、チャネル領域の第1の部分の上方に配設され、チャネル領域の第1の部分から絶縁された浮遊ゲートと、チャネル領域の第2の部分の上方に配設され、チャネル領域の第2の部分から絶縁された非浮遊ゲートと、をそれぞれが含む複数のメモリセルを含む。複数のメモリセルのそれぞれは、浮遊ゲートの多くの電子に対応する重み値を格納するように構成されている。複数のメモリセルは、第1の複数の入力に、格納された重み値を乗算して第1の複数の出力を生成するように構成されている。
【0007】
アナログニューロモーフィックメモリシステムに使用される各不揮発性メモリセルは、消去され、浮遊ゲート内に非常に特異的かつ正確な量の電荷、すなわち電子の数、を保持するようにプログラミングされなければならない。例えば、各浮動ゲートはN個の異なる値のうちの1つを保持しなければならず、ここで、Nは、各セルによって示され得る異なる重みの数である。Nの例としては、16、32、64、128及び256が挙げられる。
【0008】
アナログニューロモーフィックメモリシステム特有の特徴の1つは、システムが2つの異なる種類の読み取り動作をサポートしなければならないことである。通常の読み出し動作では、個々のメモリセルは、従来のメモリシステムのように読み出される。しかしながら、ニューラル読み出し動作では、メモリセルのアレイ全体が一度に読み出され、各ビット線が、そのビット線に接続されたメモリセルからの全ての電流の合計である電流を出力する。
【0009】
両方の種類の読み取り動作をサポートすることにより、いくつかの課題が生じる。例えば、システムは、個々のセル、アレイ全体、又は更には一度にアレイの全てに適用される様々な動作のために、広範囲の電圧及び電流レベルを提供することができなければならない。これは、アレイ自体の外側に広範な回路を必要とし、それにより、システムの半導体ダイに必要とされるスペースの量が増加するだけでなく、電力消費及び製造コストを増加させる可能性がある。
【0010】
必要とされるのは、アレイ自体の外側に必要とされる回路量を最小化する、フラッシュメモリセルのベクトルマトリックス乗算アレイを利用するアナログニューロモーフィックメモリの改善されたアーキテクチャである。
【発明の概要】
【0011】
深層学習ニューラルネットワークで使用するためのアナログニューロモーフィックメモリシステムについて、多数の実施形態が開示される。アナログニューロモーフィックメモリシステムは、複数のベクトルマトリックス乗算アレイと、それらのアレイによって共有される様々な構成要素であって、高電圧生成ブロック、検証ブロック、及び試験ブロックを含む、様々な構成要素と、を備える。
【図面の簡単な説明】
【0012】
【
図1】先行技術の人工ニューラルネットワークを示す図である。
【
図2】従来の2ゲート不揮発性メモリセルの横断面図である。
【
図3】従来の4ゲート不揮発性メモリセルの横断面図である。
【
図4】従来の3ゲート不揮発性メモリセルの横断面図である。
【
図5】別の従来の2ゲート不揮発性メモリセルの横断面図である。
【
図6】不揮発性メモリアレイを利用する異なるレベルの例示的な人工ニューラルネットワークを示す図である。
【
図7】ベクトル乗算器マトリックスを示すブロック図である。
【
図8】様々なレベルのベクトル乗算器マトリクスを示すブロック図である。
【
図9】ベクトル乗算器マトリックスの別の実施形態を示す。
【
図10】ベクトル乗算器マトリックスの別の実施形態を示す。
【
図11】ベクトル乗算器マトリックスの別の実施形態を示す。
【
図12】ベクトル乗算器マトリックスの別の実施形態を示す。
【
図13】ベクトル乗算器マトリックスの別の実施形態を示す。
【
図14】先行技術の長・短期メモリシステムを示す。
【
図15】先行技術の長・短期メモリシステム中の例示的なセルを示す。
【
図16】
図15の長・短期メモリシステム中の例示的なセルの実装を示す。
【
図17】
図15の長・短期メモリシステム中の別の例示的なセルの実装を示す。
【
図18】先行技術のゲート付き回帰型ユニットシステムを示す。
【
図19】先行技術のゲート付き回帰型ユニットシステム中の例示的なセルを示す。
【
図20】
図19のゲート付き回帰型ユニットシステム中の例示的なセルの実装を示す。
【
図21】
図19のゲート付き回帰型ユニットシステム中の別の例示的なセルの実施形態を示す。
【
図22】フラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステムを示す。
【
図23】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステムのVMMシステムを示す。
【
図24】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステムで使用するための出力ブロックを示す。
【
図25】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム内で使用するための適応可能なニューロンを示す。
【
図26】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム内で使用するための活性化関数回路を示す。
【
図27】
図25の適応可能なニューロン内で使用するための演算増幅器を示す。
【
図28】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム内で使用するためのベクトルマトリックス乗算アレイと共に使用される様々なブロックを示す。
【
図29】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム内で使用するためのプログラム及び検知ブロックを示す。
【
図30】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム内で使用するための基準アレイシステムを示す。
【
図31】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム内で使用するためのデコーディング回路を示す。
【
図32】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム内で使用するためのデコーディング回路を示す。
【
図33】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム内で使用するための別の適応可能なニューロンを示す。
【
図35】線形領域内で動作するメモリセルに好適なアレイアーキテクチャを示す。
【
図36】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステムで使用するための高電圧生成ブロックを示す。
【
図37】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステムで使用するためのプログラムバイアスブロックを示す。
【
図38】
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステムで使用するための検知増幅器回路を示す。
【発明を実施するための形態】
【0013】
本発明の人工ニューラルネットワークは、CMOS技術及び不揮発性メモリアレイの組み合わせを利用する。
不揮発性メモリセル
【0014】
デジタル不揮発性メモリは、周知である。例えば、参照により本明細書に組み込まれる、米国特許第5,029,130号(「’130号特許」)は、フラッシュメモリセルの一種である、スプリットゲート不揮発性メモリセルのアレイを開示し、これは、あらゆる目的のために参照により本明細書に組み込まれる。このようなメモリセル210を
図2に示す。各メモリセル210は、半導体基板12内に形成され、チャネル領域18をその間に有するソース領域14とドレイン領域16と、を含む。浮遊ゲート20は、チャネル領域18の第1の部分の上方に形成され、チャネル領域18の第1の部分から絶縁されて(かつチャネル領域18の第1の部分の導電性を制御して)おり、またソース領域14の一部分の上方に形成されている。ワード線端子22(典型的には、ワード線に結合される)は、チャネル領域18の第2の部分の上方に配設され、チャネル領域18の第2の部分から絶縁され、(かつチャネル領域18の第2の部分の導電性を制御する)第1の部分と、浮遊ゲート20の上方で上に延在する第2の部分と、を有する。浮遊ゲート20及びワード線端子22は、ゲート酸化物によって基板12から絶縁される。ビット線24はドレイン領域16に結合される。
【0015】
メモリセル210は、ワード線端子22に高圧正電圧をかけることによって消去され(ここで電子は、浮遊ゲートから除去される)、それにより、ファウラーノルドハイムトンネリングによって浮遊ゲート20からワード線端子22まで中間絶縁体を通って浮遊ゲート20の電子をトンネリングさせる。
【0016】
メモリセル210は、ワード線端子22に正電圧、及びソース領域14に正電圧をかけることによってプログラムされる(ここで電子は、浮遊ゲートに加えられる)。電子電流は、ソース領域14からドレイン領域16に向かって流れることになる。電子は、ワード線端子22と浮遊ゲート20との間の間隙に達すると、加速し発熱する。熱せられた電子の一部が、浮遊ゲート20からの静電引力に起因して、浮遊ゲート20にゲート酸化物を介して注入される。
【0017】
ドレイン領域16及びワード線端子22に正の読み出し電圧をかける(ワード線端子下のチャネル領域18の部分をターンオンする)ことによって、メモリセル210が読み出される。浮遊ゲート20が正に帯電する(すなわち、電子を消去する)場合、浮遊ゲート20下のチャネル領域18の部分は、次に同様にオンになり、電流は、チャネル領域18を流れ、これは、消去された状態又は「1」の状態として検知される。浮遊ゲート20が負に帯電する(すなわち、電子でプログラムされる)場合、次に浮遊ゲート20下のチャネル領域の部分は、ほとんど又は完全にオフになり、電流は、チャネル領域18を流れず(又はわずかに流れる)、プログラムされた状態又は「0」の状態として検知される。
【0018】
表1は、読み出し、消去、及びプログラム動作を実行するためのメモリセル110の端子に印加され得る典型的な電圧範囲を示す。
【表1】
【0019】
他の種類のフラッシュメモリセルである、他のスプリットゲートメモリセル構成が知られている。例えば、
図3は、ソース領域14と、ドレイン領域16と、チャネル領域18の第1の部分の上方にある浮遊ゲート20と、チャネル領域18の第2の部分の上方にある選択ゲート22(典型的には、ワード線、WL、に結合される)と、浮遊ゲート20の上方にある制御ゲート28と、及びソース領域14の上方にある消去ゲート30と、を備える4ゲートメモリセル310を示す。この構成は、米国特許第6,747,310号に記載され、この米国特許は、あらゆる目的のため参照により本明細書に組み込まれる。ここで、全てのゲートは、浮遊ゲート20を除いて、非浮遊ゲートであり、それらは電圧源に電気的に接続されている又は接続可能であることを意味する。プログラミングは、浮遊ゲート20にそれ自体を注入するチャネル領域18からの熱せられた電子によって実行される。消去は、浮遊ゲート20から消去ゲート30へトンネリングする電子によって実行される。
【0020】
表2は、読み出し、消去、及びプログラム動作を実行するためのメモリセル310の端子に印加され得る典型的な電圧範囲を示す。
【表2】
【0021】
図4は、別の種類のフラッシュメモリセルである、3ゲートメモリセル410を示す。メモリセル410は、メモリセル410が別個の制御ゲートを有しないことを除いて、
図3のメモリセル310と同一である。消去動作(消去ゲートの使用を通して消去が起こる)及び読み出し動作は、制御ゲートバイアスが印加されないことを除いて、
図3のものと同様である。プログラミング動作もまた、制御ゲートバイアスなしで行われるため、結果として、プログラム動作中は、制御ゲートバイアスの不足を補償するため、より高い電圧がソース線に印加されなければならない。
【0022】
表3は、読み出し、消去、及びプログラム動作を実行するためのメモリセル410の端子に印加され得る典型的な電圧範囲を示す。
【表3】
【0023】
図5は、別の種類のフラッシュメモリセルである、積層ゲートメモリセル510を示す。メモリセル510は、浮遊ゲート20がチャネル領域18全体にわたって延在し、制御ゲート22(ここではワード線に結合される)が絶縁層(図示せず)によって分離された浮遊ゲート20のに延在することを除いて、
図2のメモリセル210と同様である。消去、プログラミング、及び読み出し動作は、メモリセル210について前述したものと同様の方法で動作する。
【0024】
表4は、読み出し、消去、及びプログラム動作を実行するためのメモリセル510及び基板12の端子に印加され得る典型的な電圧範囲を示す。
【表4】
【0025】
上記の人工ニューラルネットワークにおける不揮発性メモリセルの種類のうちの1つを含むメモリアレイを利用するために、2つの修正が行われる。第1に、以下に更に説明されるように、アレイの他のメモリセルのメモリ状態に悪影響を与えずに各メモリセルを個々にプログラム、消去、及び読み出しすることができるように線を構成する。第2に、メモリセルの連続(アナログ)プログラミングを提供する。
【0026】
具体的には、アレイの各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全に消去された状態から完全にプログラムされた状態へ、独立して、かつ他のメモリセルの異常が最小で連続的に変更することができる。別の実施形態では、アレイの各メモリセルのメモリ状態(すなわち、浮遊ゲートの電荷)を、完全にプログラムされた状態から完全に消去された状態へ、及び逆もまた同様に、独立して、かつ他のメモリセルの異常が最小で連続的に変更することができる。このことは、セル格納がアナログであるか、又は多数の別個の値(16又は64の異なる値など)のうちの1つを最低限格納することができ、それは、メモリアレイの全てのセルの非常に正確、かつ個々の調整を可能にし、またメモリアレイを格納に対して理想的にし、ニューラルネットワークのシナプシスの重みに微調整を加えることを意味する。
不揮発性メモリセルアレイを使用するニューラルネットワーク
【0027】
図6は、本実施形態の不揮発性メモリアレイを利用するニューラルネットワークの非限定実施例を概念的に示す。この例は、顔認識アプリケーションのために不揮発性メモリアレイニューラルネットワークを使用するが、不揮発性メモリアレイベースのニューラルネットワークを使用して他の任意の適切なアプリケーションを実施することができる。
【0028】
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の異なる特徴マップを生成する。
【0029】
層C1において、本例では、それぞれ30×30ピクセルを有する16個の特徴マップが存在する。各ピクセルは、入力とカーネルとの乗算から抽出された新しい特徴ピクセルであり、したがって、各特徴マップは、2次元アレイであり、したがってこの例では、層C1は、2次元アレイの16層を構成する(本明細書で言及される層及びアレイは、必ずしも物理的関係ではなく論理的な関係であり、すなわち、アレイは必ずしも物理的な2次元アレイに配向されないことに留意する)。層C1の16個の特徴マップの各々は、フィルタスキャンに適用される16個の異なるシナプス重みのセットの1つによって生成される。C1特徴マップは全て、境界同定など同じ画像特徴の異なる態様を対象とすることができる。例えば、第1のマップ(この第1のマップを生成するのに使用される全てのスキャンに共有される第1の重みセットを使用して生成される)は、円形エッジを識別することができ、第2のマップ(第1の重みセットと異なる第2の重みセットを使用して生成される)は、方形エッジ又は特定の特徴のアスペクト比などを識別することができる。
【0030】
各特徴マップ中の連続する、重なり合わない2×2領域からの値をプールする活性化関数P1(プーリング)は、層C1から層S1へ行く前に適用される。プーリング機能の目的は、平均して近隣の位置にすること(又はmax関数もまた使用され得る)、例えばエッジ位置の依存を低減すること、及び次の段階に行く前にデータサイズを低減することである。層S1において、16個の15×15特徴マップ(すなわち、16個のそれぞれ15×15ピクセルの異なるアレイ)が存在する。層S1から層C2に行くシナプスCB2は、S1のマップを1ピクセルのフィルタシフトを使用して4×4フィルタでスキャンする。層C2において、22個の12×12特徴マップが存在する。各特徴マップ中の連続する、重なり合わない2×2領域からの値をプールする活性化関数P2(プーリング)は、層C2から層S2へ行く前に適用される。層S2において、22個の6×6特徴マップが存在する。活性化関数(プーリング)は、層S2から層C3へ行くシナプスCB3で適用され、ここで層C3の全てのニューロンは、CB3のそれぞれのシナプスを介して層S2の全てのマップに接続する。層C3において、64個のニューロンが存在する。層C3から出力層S3へと行くシナプスCB4は、C3~S3を完全に接続し、すなわち、層C3の全てのニューロンは、層S3の全てのニューロンに接続される。S3における出力は、10個のニューロンを含み、ここで最も高い出力ニューロンは、クラスを決定する。この出力は、例えば、元の画像の内容の同定又は分類を示すことができる。
【0031】
シナプスの各層は、不揮発性メモリセルのアレイ又はアレイの一部を使用して実行される。
【0032】
図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の出力をデコードすることができる。
【0033】
不揮発性メモリセルアレイ33は、2つの目的を果たす。第1に、VMMアレイ32により使用される重みを格納する。第2に、不揮発性メモリセルアレイ33は、不揮発性メモリセルアレイ33に格納された重みによって、入力を有効に乗算して、それらを出力線(ソース線又はビット線)ごとに加算して、次の層への入力又は最後の層への入力になる、出力を生成する。乗算及び加算の関数を実行することによって、不揮発性メモリセルアレイ33は、別個の乗算及び加算の論理回路の必要性をなくし、また、その現場でのメモリ計算により電力効率も良い。
【0034】
不揮発性メモリセルアレイ33の出力は、不揮発性メモリセルアレイ33の出力を合計してその畳み込み用の単一の値を作成する、差動加算器(加算オペアンプ又は加算カレントミラーなど)38に供給される。差動加算器38は、正の重量及び負の重量の総和を実行するように配置される。
【0035】
差動加算器38の合計された出力値は、次に出力を整流する活性化関数回路39に供給される。活性化関数回路39は、シグモイド、tanh、又はReLU関数を提供し得る。活性化関数回路39の整流された出力値は、次の層(例えば
図6のC1)として特徴マップの要素になり、次いで、次のシナプスに適用されて次の特徴マップ層又は最後の層を生成する。したがって、この例では、不揮発性メモリセルアレイ33は、複数のシナプスを構成し(ニューロンの前の層から、又は画像データベースなどの入力層から入力を受信する)、加算オペアンプ38及び活性化関数回路39は、複数のニューロンを構成する。
【0036】
図7のVMMアレイ32への入力(WLx、EGx、CGx、及び任意選択的にBLx及びSLx)は、アナログレベル、バイナリレベル、又はデジタルビット(この場合、DACは、デジタルビットを適切な入力アナログレベルに変換するために提供される)であり得、出力は、アナログレベル、バイナリレベル、又はデジタルビットであり得る(この場合、出力ADCは出力アナログレベルをデジタルビットに変換するために提供される)。
【0037】
図8は、ここでVMMアレイ32a、32b、32c、32d及び32eとして標示されたVMMアレイ32の多数の層の使用を示すブロック図である。
図8に示されるように、Inputxで示される、入力は、デジタルアナログ変換器31によってデジタルからアナログに変換され、入力VMMアレイ32aに提供される。変換されたアナログ入力は、電圧又は電流であり得る。第1の層の入力D/A変換は、入力VMMアレイ32aのマトリックス乗算器の適切なアナログレベルに入力Inputxをマッピングする関数又はLUT(ルックアップテーブル)を使用することによって行うことができる。入力変換はまた、外部アナログ入力を入力VMMアレイ32aへのマッピングされたアナログ入力に変換するために、アナログ-アナログ(A/A)変換器によって行うこともできる。
【0038】
入力VMMアレイ32aによって生成された出力は、次に、入力VMMアレイ(隠しレベル2)32cへの入力として提供される出力を生成する次のVMMアレイ(隠しレベル1)32bへの入力として提供される、などとなる。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)アレイ
【0039】
図9は、
図3に示されるメモリセル310に特に適したニューロンVMMアレイ900を示し、入力層と次の層との間でシナプス及びニューロンの一部として利用される。VMMアレイ900は、不揮発性メモリセルのメモリアレイ901、及び不揮発性基準メモリセルの基準アレイ902(アレイの頂部で)を備える。あるいは、別の基準アレイが底部に位置することができる。
【0040】
VMMアレイ900では、制御ゲート線903などの制御ゲート線が垂直方向に延びており(したがって、行方向の基準アレイ902が、制御ゲート線903に直交する)、消去ゲート線904などの消去ゲート線が水平方向に延びている。ここで、VMMアレイ900への入力は、制御ゲート線(CG0、CG1、CG2、CG3)に提供され、VMMアレイ900の出力はソース線(SL0、SL1)に現れる。一実施形態では、偶数行のみが使用され、別の実施形態では、奇数行のみが使用される。各ソース線(SL0、SL1、それぞれに)の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0041】
ニューラルネットワークについて本明細書に記載されているように、VMMアレイ900の不揮発性メモリセル、すなわちVMMアレイ900のフラッシュメモリは、サブ閾値領域で動作するように構成されることが好ましい。
【0042】
本明細書に記載される不揮発性基準メモリセル及び不揮発性メモリセルは、以下のように弱い反転でバイアスされ:
Ids=Io*e(Vg-Vth)/kVt=w*Io*e(Vg)/kVt
ここで、w=e(-Vth)/kVtである。
【0043】
メモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを使用して入力電流を入力電圧に変換するI-Vログ変換器を使用した場合:
Vg=k*Vt*log[Ids/wp*Io]
ここで、wpは、基準又は周辺メモリセルのwである。
【0044】
ベクトルマトリックス乗算器VMMアレイとして使用されるメモリアレイについて、出力電流は以下である:
Iout=wa*Io*e(Vg)/kVt、すなわち
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/kVt
ここで、メモリアレイの各メモリセルのwa=wである。
【0045】
ワード線又は制御ゲートは、入力電圧のためのメモリセルの入力として使用することができる。
【0046】
あるいは、本明細書に記載されたVMMアレイのフラッシュメモリセルは、線形領域で動作するように構成することができる。
Ids=β*(Vgs-Vth)*Vds;β=u*Cox*W/L
W=α(Vgs-Vth)
【0047】
ワード線又は制御ゲート又はビット線又はソース線は、入力電圧のための線形領域内で動作するメモリセルの入力として使用することができる。
【0048】
I-V線形変換器では、線形領域で動作するメモリセル(基準メモリセル又は周辺メモリセルなど)又はトランジスタを、入出力電流を入出力電圧に線形変換するために使用することができる。
【0049】
図7のVMMアレイ32のための他の実施形態は、参照により本明細書に組み込まれる米国特許出願第15/826,345号に記載されているとおりである。上記出願に記載されているように、ソース線又はビット線は、ニューロン出力(電流和出力)として使用することができる。
【0050】
図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を通してそれらの中に流れる電流入力にダイオード接続されている。基準セルは、標的基準レベルに調整(例えば、プログラム)される。標的基準レベルは、基準ミニアレイマトリックス(図示せず)によって提供される。
【0051】
メモリアレイ1003は、2つの目的を果たす。第1に、VMMアレイ1000により使用される重みを、それぞれのメモリセルに格納する。第2に、メモリアレイ1003は、メモリセルアレイ1003に格納された重みによって、入力を(すなわち、端子BLR0、BLR1、BLR2、及びBLR3に提供された電流入力であり、これにより基準アレイ1001及び1002がワード線WL0、WL1、WL2、及びWL3に供給するための入力電圧に変換される)有効に乗算して、次いで、全ての結果(メモリセル電流)を加算して、次の層への入力又は最後の層への入力となる、それぞれのビット線(BL0~BLN)の出力を生成する。乗算及び加算の関数を実行することによって、メモリアレイ1003は、別個の乗算及び加算の論理回路の必要性をなくし、また、電力効率も良い。ここで、電圧入力はワード線WL0、WL1、WL2、及びWL3に提供され、出力は、読み出し(推論)動作中にビット線BL0~BLNそれぞれのに現れる。各々のビット線BL0~BLNの電流は、その特定のビット線に接続された全ての不揮発性メモリセルからの電流の合計関数を実行する。
【0052】
表5は、VMMアレイ1000の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線の電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
【表5】
【0053】
図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)のに現れる。各ソース線の電流は、その特定のソース線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0054】
表6は、VMMアレイ1100の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルのソース線、及び非選択セルのソース線の電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
【表6】
【0055】
図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を各々含む。基準セルは、標的基準レベルに調整される。
【0056】
メモリアレイ1203は、2つの目的を果たす。第1に、VMMアレイ1200により使用される重みを格納する。第2に、メモリアレイ1203は、メモリセルアレイに格納された重みによって、入力を(端子BLR0、BLR1、BLR2、及びBLR3へ提供された電流入力であり、基準アレイ1201及び1202は、これらの電流入力を制御ゲート(CG0、CG1、CG2、及びCG3)に供給するための入力電圧に変換する)有効に乗算して、次いで、全ての結果(セル電流)を加算して、BL0~BLNに出現し、かつ次の層への入力又は最後の層への入力となる、出力を生成する。乗算及び加算の関数を実行することによって、メモリアレイは、別個の乗算及び加算の論理回路の必要性をなくし、また、電力効率も良い。ここで、入力は制御ゲート線(CG0、CG1、CG2、及びCG3)に提供され、出力は、読み出し動作中にビット線(BL0~BLN)に現れる。各ビット線の電流は、その特定のビット線に接続されたメモリセルからの全ての電流の合計関数を実行する。
【0057】
VMMアレイ1200は、メモリアレイ1203の不揮発性メモリセルの一方向調整を実施する。すなわち、各不揮発性メモリセルは消去され、次いで、浮遊ゲートの所望の電荷に達するまで部分的にプログラムされる。これは、例えば、以下に記載される新規の精密プログラミング技術を使用して実行することができる。過度に多くの電荷が浮遊ゲートに加えられる場合(誤った値がセル内に格納されるなど)、セルは消去されなければならず、一連の部分的なプログラミング動作をやり直さなければならい。示されるように、同じ消去ゲート(EG0又はEG1など)を共有する2つの行は、一緒に消去される必要があり(ページ消去として知られる)、その後、各セルは、浮遊ゲートの所望の電荷に達するまで部分的にプログラムされる。
【0058】
表7は、VMMアレイ1200の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタの非選択セルの制御ゲート、選択セルとは異なるセクタの非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線の電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
【表7】
【0059】
図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中にあり、各ビット線は、その特定のビット線に接続された不揮発性メモリセルからの全ての電流を合計する。
【0060】
表8は、VMMアレイ1300の動作電圧を示す。表中の列は、選択セルのワード線、非選択セルのワード線、選択セルのビット線、非選択セルのビット線、選択セルの制御ゲート、選択セルと同じセクタの非選択セルの制御ゲート、選択セルとは異なるセクタの非選択セルの制御ゲート、選択セルの消去ゲート、非選択セルの消去ゲート、選択セルのソース線、及び非選択セルのソース線の電圧を示す。行は、読み出し、消去、及びプログラムの動作を示す。
【表8】
長・短期メモリ
【0061】
先行技術は、長・短期メモリ(long short-term memory、LSTM)として知られる概念を含む。LSTMユニットは、しばしば、ニューロンネットワーク内で使用される。LSTMは、ニューラルネットワークが、所定の任意の時間間隔にわたって情報を記憶することを可能にし、後続の動作においてその情報を使用することを可能にする。従来のLSTMユニットは、セル、入力ゲート、出力ゲート、及びフォーゲットゲートを含む。3つのゲートは、セル内及びセル外への情報の流れ、及び情報がLSTM内で記憶される時間間隔を調整する。VMMは、LSTMユニットにおいて特に有用である。
【0062】
図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は単なる例である。
【0063】
図15は、
図14のセル1401、1402、1403及び1404に使用することができる、LSTMセル1500の例示的な実装を示す。LSTMセル1500は、先行するセルから入力ベクトルx(t)、セル状態ベクトルc(t-1)を受け取り、先行するセルから出力ベクトルh(t-1)を受け取り、セル状態ベクトルc(t)及び出力ベクトルh(t)を生成する。
【0064】
LSTMセル1500は、シグモイド関数デバイス1501、1502、1503を備え、各々が、入力ベクトルの各構成要素のうちどれだけの量が出力ベクトルを通して許容されるかを制御するために、0~1の数を適用する。LSTMセル1500はまた、入力ベクトルに双曲線tanh関数を適用するためのtanhデバイス1504及び1505と、2つのベクトルを一緒に乗算するための乗算器デバイス1506、1507及び1508と、2つのベクトルを一緒に加算するための加算器デバイス1509とを備える。出力ベクトルh(t)は、システムの次のLSTMセルに提供することができ、又は他の目的でアクセスすることができる。
【0065】
図16は、LSTMセル1500の一実装例であるLSTMセル1600を示す。読者の便宜のために、LSTMセル1500からの同じ採番方法が、LSTMセル1600で使用される。シグモイド関数デバイス1501、1502及び1503及びtanhデバイス1504は各々、複数のVMMアレイ1601及び活性化回路ブロック1602を備える。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるLSTMセルにおいて特に有用であることが分かり得る。
【0066】
LSTMセル1600の代替例(及びLSTMセル1500の実装の別の例)を
図17に示す。
図17では、シグモイド関数デバイス1501、1502、及び1503、並びにtanhデバイス1504は、同じ物理ハードウェア(VMMアレイ1701及び活性化関数ブロック1702)を、時分割多重化された方式で共有する。LSTMセル1700はまた、2つのベクトルを一緒に乗算するための乗算器デバイス1703と、2つのベクトルを一緒に加算するための加算器デバイス1708と、(活性化回路ブロック1702を備える)tanhデバイス1505と、シグモイド関数ブロック1702からi(t)が出力されたときの値i(t)を格納する、レジスタ1707と、上記値がマルチプレクサ1710を介して乗算器デバイス1703から出力されるときの値f(t)
*c(t-1)を格納する、レジスタ1704と、上記値がマルチプレクサ1710を介して乗算器デバイス1703から出力されるときの値i(t)
*u(t)を格納するレジスタ1705と、上記値がマルチプレクサ1710とマルチプレクサ1709を介して乗算器デバイス1703から出力されるときの値o(t)
*c~(t)を格納する、レジスタ1706とを備える。
【0067】
LSTMセル1600が複数のVMMアレイ1601及びそれぞれの活性化関数ブロック1602の複数の組を含むのに対し、LSTMセル1700は、LSTMセル1700の実施形態において複数の層を表すために使用されるVMMアレイ1701及び活性化関数ブロック1702の1つの組のみを含む。LSTMセル1700は、LSTMセル1600と比較して、VMM及び活性化関数ブロックのために1/4のスペースを必要とするので、LSTMセル1700は、LSTM1600より必要なスペースが少ない。
【0068】
LSTMユニットは、典型的には、複数のVMMアレイを備え、これらは各々、加算器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることが更に理解され得る。各VMMアレイに別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される実施形態は、VMMアレイ自体の外側に必要とされる回路を最小化することを試みる。
ゲート付き回帰型ユニット
【0069】
アナログVMM実装をゲート付き回帰型ユニット(gated recurrent unit、GRU)システムに利用することができる。GRUは、回帰型ニューラルネットワークのゲーティング機構である。GRUは、GRUセルが一般にLSTMセルよりも少ない構成要素を含むことを除いて、LSTMに類似している。
【0070】
図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は単なる例である。
【0071】
図19は、
図18のセル1801、1802、1803及び1804に使用することができる、GRUセル1900の例示的な実装を示す。GRUセル1900は、先行するGRUセルから入力ベクトルx(t)及び出力ベクトルh(t-1)を受け取り、出力ベクトルh(t)を生成する。GRUセル1900は、シグモイド関数デバイス1901及び1902を備え、各々が、出力ベクトルh(t-1)及び入力ベクトルx(t)からの構成要素に0~1の数を適用する。GRUセル1900はまた、入力ベクトルに双曲線tanh関数を適用するためのtanhデバイス1903と、2つのベクトルを一緒に乗算するための乗算器デバイス1904、1905及び1906と、2つのベクトルを一緒に加算するための加算器デバイス1907と、1からの入力を減算して出力を生成する補償デバイス1908とを備える。
【0072】
図20は、GRUセル1900の一実装例であるGRUセル2000を示す。読者の便宜のために、GRUセル1900からの同じ採番方法が、GRUセル2000で使用される。
図20から分かり得るように、シグモイド関数デバイス1901及び1902、並びにtanhデバイス1903は各々、複数のVMMアレイ2001及び活性化関数ブロック2002を備える。したがって、VMMアレイは、特定のニューラルネットワークシステムで使用されるGRUセルにおいて特に使用されることが分かり得る。
【0073】
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と、上記値がマルチプレクサ2104を介して乗算器デバイス2103から出力されるときの値h(t-1)
*r(t)を保持するレジスタ2106と、上記値がマルチプレクサ2104を介して乗算器デバイス2103から出力されるときの値h(t-1)
*z(t)を保持するレジスタ2107と、上記値がマルチプレクサ2104を介して乗算器デバイス2103から出力されるときの値h^(t)
*(1-z((t))を保持するレジスタ2108と、を備える。
【0074】
GRUセル2000が複数のVMMアレイ2001及び活性化関数ブロック2002の複数の組を含むのに対し、GRUセル2100は、GRUセル2100の実施形態において複数の層を表すために使用されるVMMアレイ2101及び活性化関数ブロック2102の1つの組のみを含む。GRUセル2100は、GRUセル2000と比較して、VMM及び活性化関数ブロックのために1/3のスペースを必要とするので、GRUセル2100は、GRUセル2000より必要なスペースが少ないであろう。
【0075】
GRUシステムは、典型的には、複数のVMMアレイを備え、これらは各々、加算器及び活性化回路ブロック及び高電圧生成ブロックなどの、VMMアレイの外側の特定の回路ブロックによって提供される機能を必要とすることが更に理解され得る。各VMMアレイに別個の回路ブロックを提供することは、半導体デバイス内にかなりの量のスペースを必要とし、幾分非効率的であろう。したがって、以下に記載される実施形態は、VMMアレイ自体の外側に必要とされる回路を最小化することを試みる。
【0076】
VMMアレイへの入力は、アナログレベル、バイナリレベル、又はデジタルビット(この場合、デジタルビットを適切な入力アナログレベルに変換するためにDACが必要とされる)であり、出力はアナログレベル、バイナリレベル、又はデジタルビットであり得る(この場合、出力アナログレベルをデジタルビットに変換するために出力ADCが必要とされる)。
【0077】
VMMアレイの各メモリセルに関して、各重みwは、単一のメモリセルによって、又は差動セルによって、又は2つのブレンドメモリセル(2つのセルの平均)によって実装することができる。差動セルの場合では、重みwを差動重み(w=w+-w-)として実装するために、2つのメモリセルが必要とされる。2つのブレンドメモリセルの場合は、2つのセルの平均として重みwを実装するために2つのメモリセルが必要とされる。
フラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム
【0078】
図22は、VMMシステム2221、2222及び2223と共有回路ブロック2217とを備えるフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム2200を示す。VMMシステム2221は、マクロブロック2201と2202及び出力ブロック2207を備え、後者は、加算器、アナログデジタル変換器、又は別のタイプの関数ブロックを備えることができ、マクロブロック2201及び2202のための出力を提供する。VMMシステム2222は、マクロブロック2203と2204及び出力ブロック2208を備え、後者は、加算器、アナログデジタル変換器、又は別の種類の関数ブロックを備えることができ、マクロブロックマクロブロック2203及び2204のための出力を提供する。VMMシステム2223は、マクロブロック2205と2206及び出力ブロック2209を備え、後者は、加算器、アナログデジタル変換器、又は別の種類の関数ブロックを備えることができ、マクロブロックマクロブロック2205及び2206のための出力を提供する。
図23に関してより詳細に議論されるように、マクロブロック2201、2202、2203、2204、2205、及び2206のような各マクロブロックは、1つのVMMアレイを含んでいる。
【0079】
共有回路ブロック2217は、VMMシステム2221、2222、2223によって使用される。この例では、共有回路ブロック2217は、
・アナログ回路ブロック2210と、
・高電圧発生回路2211と、
・検証ブロック2212と、
・システム制御ブロック2213と、
・アレイ基準ブロック2214と、
・検知ブロック2215と、を含む。
【0080】
アナログ回路ブロック2210は、プログラム動作、消去動作、読み出し動作、及び検証動作のための基準電圧、タイミング、及び電流を提供するような動作中、マクロブロック2201、2202、2203、2204、2205及び2206によって要求される特定のアナログ機能を実行するためのアナログ回路を含んでいる。検証動作は、消去又はプログラム中に目標重み(特定の浮遊ゲート電荷を意味する)に到達したことを確認するために使用される。
【0081】
高電圧生成ブロック2211は、プログラム動作や消去動作などの様々な動作の間、マクロブロック2201、2202、2203、2204、2205、及び2206によって要求される様々な高電圧を提供する。任意選択的に、高電圧生成ブロック2211は、それらの高電圧を、マクロブロック2201、2202、2203、2204、2205、及び2206のうちの2つ以上に同時に(十分な電圧と電流で)提供し、かつ、任意選択的に、プログラム動作は、単一のコマンド又は複数のコマンドに応答して、マクロブロック2201、2202、2203、2204、2205、及び2206のうちの2つ以の内部で同時に発生することができ、また、任意選択的に、消去動作は、単一のコマンド又は複数のコマンドに応答して、マクロブロック2201、2202、2203、2204、2205、及び2206のうちの2つ以上の内部で同時に発生することができる。
【0082】
検証ブロック2212は、マクロブロック2201、2202、2203、2204、2205及び2206への書き込み及び検証動作の一部として、又は書き込み動作中にその一部として検証動作を実行する。任意選択的に、検証ブロック2212は、マクロブロック2201、2202、2203、2204、2205及び2206のうちの2つ以上で同時に検証動作を実行することができる。検証ブロック2212は、検知ブロック(
図29に示されるプログラム及び検知ブロック2900の検知部分など)を備える。
【0083】
システム制御ブロック2213は、トリミングブロック2216を用いた様々な構成要素(後述する調整可能な抵抗器、トランジスタ、電流源など)のトリミングなどの様々なシステム制御機能を提供する。また、マクロ/コアインターフェースコマンド制御論理及び書き込みアルゴリズムも提供する。また、複数のマクロ又はコア間で構成要素を共有するための制御論理も提供する、
【0084】
アレイ基準ブロック2214は、マクロブロック2201、2202、2203、2204、2205及び2206の動作を検知又は検証する間に使用するための基準メモリセルを提供する。あるいは、検知又は検証は、抵抗器、MOSFET、又はバンドギャップベースのバイアスによって提供される基準レベルを使用し得る。
【0085】
検知ブロック2215は、書き込み動作中に、マクロブロック2201、2202、2203、2204、2205及び2206、又はその一部分に対して検知動作を実行する。任意選択的に、検知ブロック2215は、マクロブロック2201、2202、2203、2204、2205及び2206のうちの2つ以上で同時に検知動作を実行することができる。検知ブロック2215は、
図29に示されるプログラム及び検知ブロック2900の検知部分などを備え得る。
【0086】
表9は、
図22のフラッシュアナログニューロモーフィックメモリ共有アーキテクチャシステム2200の動作モードを示す。示された表の列は、(左から右の順に)高電圧生成ブロック2211、検証ブロック2212、加算器と活性化回路ブロック2207、2208、2209、アナログ回路ブロック2210、アレイ基準ブロック2214、及びシステム2200に含まれるVMMシステムの各々の状態を示す。マクロモード選択は、MACRO1(マクロブロック2201、2202、2203、2204、2205又は2206などの選択されたマクロブロックである)のためのものである。システムモードでは、MACROが選択された場合にオンである。
【0087】
示された表の行は、(上から下の順に)以下を示す:
・システム質量消去動作であって、システム2200の全ての選択されたマクロの選択されたセルが消去され、
・システム質量プログラム動作であって、システム2200の全ての選択されたマクロの選択されたセルがプログラムされ、プログラム高電圧補償はマクロごと(マクロ高電圧補償ブロックを使用して)に行われ、つまり、補償はマクロレベルで、例えば各マクロ、Icomp=プログラムされていないビット
*Iprogの数で局所的に行われ、あるいは、高電圧補償は、システムレベルごと(システムレベル高電圧補償ブロックを使用して)に行われ、例えば、この場合、大部分のプログラムされていないビットを有するマクロを使用して、高電圧生成回路(hvgen)、例えば、hvgenで、Icomp=プログラムされていないビット
*Iprogの数を補償する。
・システム読み出し/検証動作であって、システム2200の全ての選択されたマクロの選択されたセルが読み出されかつ検証され、複数のコアの複数のセルについて「0」(プログラムされた状態)を読み出す場合、基準「0」マージンI-M0電流を電流検知で使用して、選択されたセル電流の合計が、>I-M0であるかを検出し、次いで「0」の読み出しに失敗し、複数のコアの複数のセルについて「1」(プログラムされた状態)を読み出すために、基準「1」マージンk
*I-M1電流を電流検知で使用して、選択されたセル電流の合計が、<k
*I-M1であるかを検出し、次いで「1」の読み出しに失敗し、例えば、2個のセル、k=2を並列に読み出す。
・マクロ消去動作であって、この場合1つのみのマクロブロック、ここではMACRO1と標示されたものが消去される。セクタ(複数の行からなる)を、マクロセクタ消去で消去することができ、又はマクロ質量消去によってアレイ全体を消去することができる。
・マクロプログラム動作であって、この場合1つのみのマクロブロック、ここではMACRO1と標示されたものがプログラムされる。ワード(複数の列の複数のセルからなる)は、複数の行及び/又は複数の列を有するマクロワードプログラム又は選択された質量アレイでプログラムすることができ、及び/又は複数の列はマクロ質量プログラムによってプログラムすることができる。
・マクロ読み出し/検証動作であって、この場合1つのみのマクロブロック、ここではMACRO1と標示されたものが読み出され、検証される。
・ニューラル読み出し動作であって、この場合単一のマクロブロックの全てのセルが一度に読み出される。
【表9】
【表10】
【0088】
図23は、VMMシステム2300(
図22のVMMシステム2221、2222及び2223を実装するために使用することができる)を示す。VMMシステム2300は、マクロブロック2320(
図22のマクロブロック2201、2202、2203、2204、2205及び2206を実装するために使用することができる)と、活性化関数ブロック2314と、出力ブロック2313とを備え、後者は、加算器、アナログデジタル変換器、又は別の種類の関数ブロックを備えることができ、VMMシステム2300のための出力を提供する。
【0089】
マクロブロック2320は、VMMアレイ2301、低電圧行デコーダ2302、高電圧行デコーダ2303及び低電圧基準列デコーダ2304を備える。低電圧行デコーダ2302は、読み出し及びプログラム動作のためのバイアス電圧を提供し、高電圧行デコーダ2303のデコード信号を提供する。高電圧行デコーダ2303は、プログラム及び消去動作のための高電圧バイアス信号を提供する。
【0090】
マクロブロック2320は、冗長性アレイ2305と2306を更に備える。冗長アレイ2305及び2306は、アレイ2301中の欠陥部分を置き換えるためのアレイ冗長性を提供する。VMMシステム2300は、NVR(不揮発性レジスタ、別名情報セクタ)セクタ2307を更に備え、これは、とりわけ、ユーザ情報、デバイスID、パスワード、セキュリティキー、トリムビット、構成ビット、製造情報などを格納するために使用されるアレイセクタである。マクロブロック2320は、検知動作で使用される基準セルを提供するための基準セクタ2308と、デコーダ2302、2303及び/又は2304のアドレスをデコーディングするためのプレデコーダ2309と、ビット線マルチプレクサ2310と、マクロ制御論理2311と、マクロアナログ回路ブロック2312とを更に備え、各々が、マクロブロック又はVMMアレイレベルで(全てのVMMアレイを含むシステムレベルとは対照的に)関数を実行する。
【0091】
次に、
図22及び
図23に示す回路ブロックの実施形態の実施例を説明する。
【0092】
図24は、出力ブロック2400(
図22の出力ブロック2207、2208、2209及び
図23の出力ブロック2313として使用され得る)を示す。この例では、出力ブロック2400は、加算器及び活性化ブロック2401など、複数の個々の加算器及び活性化回路ブロックを備える。
【0093】
図25は、複数の電流信号を加算し、加算された電流信号を電圧信号に変換するための、低インピーダンス出力を提供するオペアンプを備える適応可能なニューロン回路2500を示し、これは、
図26の加算器ブロック2601a...2601iの各加算器ブロックの実施形態である。調整可能なニューロン出力回路2500は、ここでは、演算増幅器2501の反転入力に提供される電流源2502として表されている、VMMアレイ2401などのVMM(I_NEUと標示されている)から電流を受け取る。演算増幅器2501の非反転入力は、電圧源(VREFと標示されている)に結合される。演算増幅器2501の出力(VOと標示されている)は、NMOSトランジスタ2503のゲートに印加される信号VCONTROLに応答して、実効抵抗R_NEUの可変抵抗として作用するNMOS R_NEUトランジスタ2503に結合される。出力電圧VOは、I_NEU
*R_NEU-VREFに等しい。I_NEUの最大値は、VMMに含まれるシナプスの数及び重量値に依存する。R_NEUは可変抵抗であり、それが結合されるVMMサイズに適合させることができる。更に、加算演算増幅器2501の電力は、電力消費を最小限に抑えるためにR_NEUトランジスタ2503の値に関連して調整される。R_NEUトランジスタ2503の値が増加するにつれて、演算増幅器2501のバイアス(すなわち、電力)は、電流バイアスIBIAS_OPA2504を介して低減され、逆もまた同様である。オペアンプベースの加算回路は低インピーダンス出力を提供することができるので、長い相互接続及びより重い負荷を駆動するように構成するのに好適である。
【0094】
図26は、活性化関数回路2600を示す。活性化関数回路2600は、
図22の活性化回路ブロック2203a、2203b、2203c、2203d、2203e、及び2203f、並びに
図23の活性化回路ブロック2303a、2303b、2303c、2303d、2303e、及び2303f、並びに
図24の活性化ブロック2414のために使用することができる。
【0095】
活性化関数回路2600は、tanh関数を使用して、入力電圧対(Vin+及びVin-)を電流(Iout_neu)に変換し、上述のVMMアレイと共に使用することができる。活性化関数回路2600は、図示されるように構成された、PMOSトランジスタ2601、2602、2603、2604、2605、及び2606、並びにNMOSトランジスタ2607、2608、2609、及び2610を備える。トランジスタ2603、2604、及び2606は、カスコードトランジスタとして機能する。入力NMOS対2607及び2608は、tanh関数を実現するためにサブ閾値領域で動作する。電流I_neu_maxは、取り付けられたVMM(図示せず)から受け取ることができる最大ニューロン電流である。
【0096】
図27は、
図25の演算増幅器2501に使用することができる、演算増幅器2700を示す。演算増幅器2700は、図示の構成において、可変バイアスとして作用するPMOSトランジスタ2701、2702、及び2705、NMOSトランジスタ2703、2704、2706、及び2707、並びにNMOSトランジスタ2708を備える。演算増幅器2700への入力端子は、Vin+(NMOSトランジスタ2704のゲートに印加される)及びVin-(NMOSトランジスタ2703のゲートに印加される)であり、出力はVoutである。バイアス電流Ibias_opaは、NMOSトランジスタ2708のドレインに提供される。
【0097】
図28は、高電圧生成ブロック2800、制御論理ブロック2804、アナログ回路ブロック2805、及び試験ブロック2808を示す。
【0098】
高電圧生成ブロック2800は、チャージポンプ2801、チャージポンプ調整器2802、及び高電圧演算増幅器2803を備える。チャージポンプ調整器2802の出力の電圧は、チャージポンプ調整器2802のNMOSトランジスタのゲートに印加される制御ビットTRBIT_SL<N:0>を使用して制御することができる。制御論理ブロック2804は、制御論理入力を受信し、制御論理出力を生成する。アナログ回路ブロック2805は、基準電圧VREFを受け取り、かつ、例えば、
図25のIBIAS_OPA2504として使用することができるバイアス信号IBIASを生成するために使用することができる電流を生成するための電流バイアス発生器2806を備える。アナログ回路ブロック2805は、基準電圧VREF及びトリムビットの組TRBIT_WLを受け取り、かつ、様々な動作中にワード線に印加する電圧を生成するための電圧発生器2807をも備える。試験ブロック2808は、試験パッド、MONHV_PADの信号を受信し、設計者に様々な信号を出力して試験中に監視する。
【0099】
図29は、プログラム及び検証動作中に使用され得、1つ以上のVMMシステムに結合され得るプログラム及び検知ブロック2900を示す。プログラム及び検知ブロック2900は、複数の個々のプログラム及び検知回路ブロック2901a、2901b...2901jを備え、各々が選択されたメモリセルの「0」又は「1」を読み出すことができる。コントローラ又は制御論理2910は、必要に応じて、各サイクルの間に適切なプログラム及び検知回路ブロック2901a、2901b...2901jを作動させることができる。
【0100】
図30は、
図23の基準セクタ2308の代わりに使用することができる、基準システム3000を示す。基準システム3000は、基準アレイ3002、低電圧行デコーダ3001、高電圧行デコーダ3003及び低電圧基準列デコーダ3004を備える。低電圧行デコーダ3001は、読み出し及びプログラム動作のためのバイアス電圧を提供し、高電圧行デコーダ3003のデコード信号を提供する。高電圧行デコーダ3003は、プログラム及び消去動作のための高電圧バイアス信号を提供する。
【0101】
図31は、
図2に示されるタイプのメモリセルと共に使用するのに適切である、ワード線デコーダ回路3101、ソース線デコーダ回路3104及び高電圧レベルシフタ3108を備えるVMM高電圧デコード回路を示す。
【0102】
ワード線デコーダ回路3101は、図示のように構成された、PMOS選択トランジスタ3102(信号HVO_Bによって制御される)及びNMOS選択トランジスタ3103(信号HVO_Bによって制御される)を備える。
【0103】
ソース線デコーダ回路3104は、NMOS監視トランジスタ3105(信号HVOによって制御される)と、駆動トランジスタ3106(信号HVOによって制御される)と、図示のように構成された(信号HVO_Bによって制御される)トランジスタ3107を備える。
【0104】
高電圧レベルシフタ3108は、有効な信号ENを受信し、高電圧信号HV及びその補体HVO_Bを出力する。
【0105】
図32は、
図3に示されるタイプのメモリセルと共に使用するのに適切である、消去ゲートデコーダ回路3201、制御ゲートデコーダ回路3204、ソース線デコーダ回路3207及び高電圧レベルシフタ3211を備えるVMM高電圧デコード回路を示す。
【0106】
消去ゲートデコーダ回路3201及び制御ゲートデコーダ回路3204は、
図31のワード線デコーダ回路3101と同じ設計を使用する。
【0107】
ソース線デコーダ回路3207は、
図31のソース線デコーダ回路3104と同じ設計を使用する。
【0108】
高電圧レベルシフタ3211は、
図31の高電圧レベルシフタ3108と同じ設計を使用する。
【0109】
図33は、出力ニューロン電流を電圧に変換する適応可能なニューロン回路3300を示す。適応可能なニューロン回路3300は、1つのPMOSトランジスタ3301のみを使用し、かつ、スイッチ3302、3303、及び3304を使用して、それ自体(すなわち、サンプルホールドミラー)をミラーリングするように基本的に構成される。最初に、スイッチ3302及びスイッチ3303が閉じられ、スイッチ3304が開いており、そのとき、PMOSトランジスタ3301は、VMMからの電流を表す電流源3305であるI_NEURONに結合される。次いで、スイッチ3302及びスイッチ3303が開かれ、スイッチ3304が閉じられ、これによって、PMOSトランジスタ3301は、電流I_NEURONをそのドレインから可変抵抗器3306に送る。したがって、適応可能なニューロン3300は、電流信号(I_NEURON)を電圧信号(VO)に変換する。基本的に、トランジスタ3301は、電流I_NEURONをサンプリングし、そのゲートにサンプリングされたゲートソース電圧を格納することによってそれを保持する。オペアンプ回路を使用して、出力電圧VOをバッファして構成可能な相互接続を駆動することができる。
【0110】
図34は、電流サンプルアンドホールドS/H回路3400及び電圧サンプルアンドホールドS/H回路3450を示す。電流S/H回路3400は、サンプリングスイッチ3402及び3403、S/Hコンデンサ3405、入力トランジスタ3404及び出力トランジスタ3406を含む。入力トランジスタ3404は、入力電流3401をS/Hコンデンサ3405のS/H電圧に変換するために使用され、出力トランジスタ3406のゲートに結合される。電圧S/H回路3450は、サンプリングスイッチ3452、S/Hコンデンサ3453及びオペアンプ3454を含む。オペアンプ3454は、コンデンサ3453のS/H電圧をバッファするために使用される。S/H回路3400及び3450は、本明細書に記載される出力加算回路及び/又は活性化回路と共に使用することができる。代替実施形態では、アナログサンプルアンドホールド回路3400及び3450の代わりに、デジタルサンプルアンドホールド回路を使用することができる。
【0111】
図35は、線形領域で動作するメモリセルに好適なアレイアーキテクチャを示す。システム3500は、入力ブロック3501、出力ブロック3502、及びメモリセルのアレイ3503を備える。入力ブロック3501は、アレイ3503のメモリセルのドレイン(ソース線)に結合され、出力ブロック3502は、アレイ3503のメモリセルのビット線に結合される。あるいは、入力ブロック3501は、アレイ3503のメモリセルのワード線に結合され、出力ブロック3502は、アレイ3503のメモリセルのビット線に結合される。
【0112】
システム3500がLSTM又はGRUを実装するために使用される場合、出力ブロック3502及び/又は入力ブロック3501は、LSTM/GRUアーキテクチャに必要とされるように、乗算器ブロック、加算器ブロック、減算器(出力=1-入力)ブロックを含み得、任意選択的に、アナログサンプルアンドホールド回路(
図34の回路3400又は3450など)又はデジタルサンプルアンドホールド回路(例えば、レジスタ又はSRAM)を必要に応じて含むことができる。
【0113】
図36は、
図22の高電圧生成ブロック2211の一例である高電圧生成ブロック3600を示す。高電圧生成ブロック3600は、チャージポンプ3601、チャージポンプ調整器3603、及び高電圧演算増幅器3602を備える。チャージポンプ調整器3603の出力の電圧は、チャージポンプ調整器3603のmux MOSトランジスタのゲートに送られる信号に基づいて制御することができる。
【0114】
図37は、個々のプログラミング回路3702-0,...3702-Nのゲートにバイアスを提供するプログラムバイアス回路3700を示し、それらの各々は、プログラミング動作中に選択されたビット線に結合されたメモリセルにプログラミング電流を提供する。
【0115】
図38は、プログラムの検証態様及び検証動作のために使用することができる、検知増幅器3800を示す。検知増幅器3800は、図示の構成では、調整可能な電流基準源3801、スイッチ3802、NMOSトランジスタ3803、コンデンサ3804、スイッチ3805、電流源3806、及びインバータ3807を備える。検知増幅器3800は、メモリセル3808の検証動作中にメモリセル3808に結合される。
【0116】
本明細書で使用される場合、「の上方に(over)」及び「に(on)」という用語は両方とも、「に直接」(中間材料、要素、又は空間がそれらの間に何ら配設されない)、及び「の上に間接的に」(中間材料、要素、又は空間がそれらの間に配設される)を包括的に含むことに留意するべきである。同様に、「隣接した」という用語は、「直接隣接した」(中間材料、要素、又は空間がそれらの間に何ら配設されない)、及び「間接的に隣接した」(中間材料、要素、又は空間がそれらの間に配設される)を含み、「に取り付けられた」は、「に直接取り付けられた」(中間材料、要素、又は空間がそれらの間に何ら配設されない)、及び「に間接的に取り付けられた」(中間材料、要素、又は空間がそれらの間に配設される)を含み、「電気的に結合された」は、「に直接電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にない)、及び「間接的に電気的に結合された」(要素を一緒に電気的に接続する中間材料又は要素がそれらの間にある)を含む。例えば、要素を「基板の上方に」形成することは、その要素を基板に直接、中間材料/要素をそれらの間に何ら伴わずに、形成すること、及びにその要素を基板の上に間接的に、1つ以上の中間材料/要素をそれらの間に伴って、形成することを含み得る。