(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-24
(45)【発行日】2023-09-01
(54)【発明の名称】抵抗処理ユニット・アレイのクロスポイント・デバイスに重みを記憶するための方法、そのクロスポイント・デバイス、ニューラル・ネットワークを実施するためのクロスポイント・アレイ、そのシステム、およびニューラル・ネットワークを実施するための方法
(51)【国際特許分類】
G06G 7/60 20060101AFI20230825BHJP
G06N 3/063 20230101ALI20230825BHJP
G11C 11/54 20060101ALI20230825BHJP
【FI】
G06G7/60
G06N3/063
G11C11/54
(21)【出願番号】P 2020531461
(86)(22)【出願日】2018-11-22
(86)【国際出願番号】 IB2018059228
(87)【国際公開番号】W WO2019116128
(87)【国際公開日】2019-06-20
【審査請求日】2021-04-23
(32)【優先日】2017-12-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】コスワッタ、シユランガ
(72)【発明者】
【氏名】リ、ユーロン
(72)【発明者】
【氏名】ソロモン、ポール、マイケル
【審査官】白石 圭吾
(56)【参考文献】
【文献】特開平03-080379(JP,A)
【文献】特開平08-084078(JP,A)
【文献】国際公開第2017/136100(WO,A2)
【文献】特開平02-236659(JP,A)
【文献】特開平03-223982(JP,A)
【文献】特開平06-215163(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06G 1/00-99/00
G06N 3/00-3/12;7/08-99/00
G11C 11/18-11/30;11/42-11/56;13/00-13/06;25/00
(57)【特許請求の範囲】
【請求項1】
抵抗処理ユニット(RPU)アレイのクロスポイント・デバイスに重みを記憶するための方法であって、
前記クロスポイント・デバイスにローカルなコントローラが、前記クロスポイント・デバイスの複数の単一ビット・カウンタの各単一ビット・カウンタの現在の状態を、前記クロスポイント・デバイスにローカルなローカル・メモリに記憶される複数の値の中から読み出すステップと、
前記クロスポイント・デバイスが、前記複数の単一ビット・カウンタからの各単一ビット・カウンタの
前記現在の状態を更新するステップであり、前記複数の単一ビット・カウンタの更新された状態が前記クロスポイント・デバイスに記憶される前記重みを表す、前記
更新するステップと、
前記クロスポイント・デバイスが、前記クロスポイント・デバイスの抵抗器デバイスの電気コンダクタンスを調整するステップであり、前記抵抗器デバイスが複数の抵抗回路を含み、各抵抗回路が前記複数の単一ビット・カウンタからのそれぞれの単一ビット・カウンタに関連付けられ、前記電気コンダクタンスが、前記関連付けられた単一ビット・カウンタの状態に応じて、各抵抗回路を活性化または非活性化することによって調整される、前記調整するステップと、
前記コントローラが、前記複数の単一ビット・カウンタの各単一ビット・カウンタの更新された状態を前記ローカル・メモリに記憶するステップと
を含む方法。
【請求項2】
前記クロスポイント・デバイスは、ニューラル・ネットワークの入力層および隠れ層に通信可能に結合される、請求項1に記載の方法。
【請求項3】
前記
RPUアレイは、クロスバー・アレイであり、前記
更新するステップは、前記クロスバー・アレイを構成する前記クロスポイント・デバイスに結合される一組のワイヤのうちの第1のワイヤおよび第2のワイヤを介して入力される第1の確率的シーケンスおよび第2の確率的シーケンスにより生成されるクロックおよび前記一組のワイヤのうちの第3のワイヤを介して入力される符号に基づいて行われる、請求項1または2に記載の方法。
【請求項4】
前記複数の抵抗回路が2次関数的に増加する抵抗を含み、第1の抵抗回路が所定の抵抗を有し、さらなる後続の各抵抗回路が、前の抵抗回路の値の2倍の抵抗を含む、請求項1に記載の方法。
【請求項5】
前記複数の抵抗回路が複数の電界効果トランジスタ(FET)を含む、請求項4に記載の方法。
【請求項6】
前記複数のFETが、2次関数的に増加するゲート長に少なくとも部分的に基づいて、2次関数的に増加する抵抗を含む、請求項5に記載の方法。
【請求項7】
前記複数のFETが、FETの縦型スタックの一部である、請求項5に記載の方法。
【請求項8】
前記複数の抵抗回路が抵抗器ラダーを含み、前記複数の抵抗回路のそれぞれが、
論理ゲートと、
直列に接続されて前記抵抗器ラダーを構成する抵抗器と、
を備え、
前記論理ゲートが、対応する前記単一ビット・カウンタの前記状態に少なくとも部分的に基づいて活性化される、
請求項4に記載の方法。
【請求項9】
抵抗処理ユニット(RPU)アレイのクロスポイントに重み値を記憶するためのクロスポイント・デバイスであって、
前記クロスポイント・デバイスの複数の単一ビット・カウンタの各単一ビット・カウンタの状態を記憶する、前記クロスポイント・デバイスにローカルなローカル・メモリと、
前記複数の単一ビット・カウンタを含むカウンタであり、前記複数の単一ビット・カウンタの状態が前記クロスポイント・デバイスに記憶される
重みを表す、前記カウンタと、
複数の抵抗回路を備える抵抗器デバイスであり、各抵抗回路が前記複数の単一ビット・カウンタからのそれぞれの単一ビット・カウンタに関連付けられており、前記抵抗回路が前記関連付けられた単一ビット・カウンタの状態に従って活性化または非活性化され、前記抵抗器デバイスの電気コンダクタンスが、活性化されている前記抵抗回路に少なくとも部分的に基づいて調整される、前記抵抗器デバイスと、
前記クロスポイント・デバイスにローカルなコントローラであって、前記複数の単一ビット・カウンタの各単一ビット・カウンタの現在の状態を、前記ローカル・メモリに記憶される複数の値の中から読み出し、また、
前記クロスポイント・デバイスにより前記複数の単一ビット・カウンタからの各単一ビット・カウンタの前記現在の状態が更新され、前記複数の単一ビット・カウンタの各単一ビット・カウンタの更新された状態を前記ローカル・メモリに記憶するコントローラと、
を備える、クロスポイント・デバイス。
【請求項10】
ニューラル・ネットワークを実施するためのクロスポイント・アレイであって、
前記クロスポイント・アレイの各ノードにある複数のクロスポイント・デバイスを含み、各ノードが前記ニューラル・ネットワークのニューロン間の接続を表し、各ノードが当該ノードに割り当てられた重みを記憶し、前記複数のクロスポイント・デバイスの各々が請求項9に記載のものである、クロスポイント・アレイ。
【請求項11】
ニューラル・ネットワークを実施するためのシステムであって、
請求項10に記載のクロスポイント・アレイと、
前記クロスポイント・アレイの各クロスポイント・デバイスに記憶された値を調整するように構成されたグローバル・コントローラと、
を備えるシステム。
【請求項12】
前記クロスポイント・アレイが、
各クロスポイントにおける前記ローカル・メモリであって、前記複数の値として前記クロスポイントの前記クロスポイント・デバイスに割り当てられた複数の重みを記憶するように構成され、前記複数の重みのそれぞれが前記ニューラル・ネットワークからのそれぞれの層間接続に対応する、前記ローカル・メモリと、
各クロスポイントにおける前記コントローラとしてのローカル・コントローラであって、前記ローカル・メモリと結合され、
前記ローカル・メモリから重みを読み出し、
前記クロスポイントにおける前記クロスポイント・デバイスのカウンタの値として重みを設定する、
ように構成されている、前記ローカル・コントローラと、
をさらに備える、請求項11に記載のシステム。
【請求項13】
前記ローカル・コントローラが前記クロスポイント・デバイスの前記カウンタの前記値を前記ローカル・メモリに記憶するようにさらに構成されている、請求項12に記載のシステム。
【請求項14】
ニューラル・ネットワークを実施するための方法であって、
グローバル・コントローラによって、クロスポイント・アレイにロードされるマトリックスを選択するステップであり、選択された前記マトリックスが前記ニューラル・ネットワークの2つの層間の接続に対応する、前記選択するステップと、
前記選択に応じて、前記クロスポイント・アレイのクロスポイントのローカル・コントローラによって、前記クロスポイントに関連付けられたクロスポイント・デバイスの重み値をロードするステップであり、請求項1ないし8のいずれかに記載の方法のステップを含み、前記ローカル・コントローラは、前記コントローラであり、前記重み値が、前記ローカル・メモリに記憶される前記複数の値の中の前記選択されたマトリックスの前記クロスポイントに割り当てられたものである、前記ロードするステップと、
それに応じて、前記クロスポイント・デバイスによって、前記クロスポイントに関連付けられた抵抗器デバイスのコンダクタンスを調整するステップであり、前記コンダクタンスが前記クロスポイント・デバイスにロードされた前記重み値に対応する、前記調整するステップと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、本明細書ではプログラム可能で再構成可能な人工ニューラル・ネットワーク用のカウンタ・ベースの抵抗処理ユニット(RPU:resistive processing unit)と呼ばれる、トレーニング可能な抵抗クロスポイント・デバイスの構成に関する。より詳細には、本発明は、RPU以外の追加の処理要素を必要としないローカル・データ記憶およびローカル・データ処理を提供し、それによって行列反転(matrix inversion)、行列分解(matrix decomposition)などのアルゴリズムを実施するANNの能力を加速する、抵抗処理ユニット(RPU)のクロスバー・アレイから形成された人工ニューラル・ネットワーク(ANN)に関する。
【背景技術】
【0002】
コンピュータによる文字認識および画像認識などの技術的問題は、機械学習技術によってうまく処理されることが知られている。「機械学習」は、データから学習する電子システムの主要な機能を広く説明するために使用される。機械学習および認知科学では、ANNは、動物の生体ニューラル・ネットワーク、特に脳に発想を得た統計学習モデルのファミリーである。ANNを使用して、多数の入力に依存する、一般に未知であるシステムおよび機能を推定または近似することができる。クロスバー・アレイは、ANNアーキテクチャ、ニューロモーフィック・マイクロチップ、超高密度不揮発性メモリを含む、様々な電子回路およびデバイスを形成するために使用される高密度、低コストの回路アーキテクチャである。基本的なクロスバー・アレイ構成は、一組の導電性行ワイヤ、および一組の導電性行ワイヤと交差するように形成された一組の導電性列ワイヤを含む。2組のワイヤ間の交差部は、いわゆるクロスポイント・デバイスによって分離される。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明は、抵抗処理ユニット(RPU)アレイのクロスポイント・デバイスに重みを記憶するための方法、そのクロスポイント・デバイス、ニューラル・ネットワークを実施するためのクロスポイント・アレイ、そのシステム、およびニューラル・ネットワークを実施するための方法を提供する。
【課題を解決するための手段】
【0004】
本発明の一実施形態によると、クロスポイント・デバイスに重みを記憶するための方法は、クロスポイント・デバイスの一組の単一ビット・カウンタからの各単一ビット・カウンタの状態を設定するステップを含み、単一ビット・カウンタの状態が、クロスポイント・デバイスに記憶される重みを表す。本方法は、クロスポイント・デバイスの抵抗器デバイスの電気コンダクタンスを調整するステップをさらに含む。抵抗器デバイスは、一組の抵抗回路を含み、各抵抗回路は、一組の単一ビット・カウンタからのそれぞれの単一ビット・カウンタに関連付けられている。抵抗器デバイスの電気コンダクタンスは、関連付けられた単一ビット・カウンタの状態に従って各抵抗回路を活性化または非活性化することによって調整される。
【0005】
本発明の一実施形態によると、クロスポイント・デバイスは、一組の単一ビット・カウンタを有するカウンタを含み、単一ビット・カウンタの状態が、クロスポイント・デバイスに記憶される重みを表す。抵抗器デバイスは、一組の抵抗回路を含み、各抵抗回路は、一組の単一ビット・カウンタからのそれぞれの単一ビット・カウンタに関連付けられている。抵抗回路は、関連付けられた単一ビット・カウンタの状態に従って活性化または非活性化され、抵抗器デバイスの電気コンダクタンスは、活性化された抵抗回路に少なくとも部分的に基づいて調整される。
【0006】
本発明の一実施形態によると、ニューラル・ネットワークを実施するためのシステムは、複数のノードを含むクロスポイント・アレイを含み、各ノードがニューラル・ネットワークのニューロン間の接続を表し、各ノードがノードに割り当てられた重みを記憶する。クロスポイント・アレイは、各ノードにクロスポイント・デバイスを含む。クロスポイント・デバイスは、複数の単一ビット・カウンタを有するカウンタを含み、単一ビット・カウンタの状態がクロスポイント・デバイスに記憶される重みを表す。さらに、クロスポイント・デバイスは、複数の抵抗回路を有する抵抗器デバイスを含み、各抵抗回路が、単一ビット・カウンタからのそれぞれの単一ビット・カウンタに関連付けられている。抵抗回路は、関連付けられた単一ビット・カウンタの状態に従って活性化または非活性化され、抵抗器デバイスの電気コンダクタンスが、活性化された抵抗回路に少なくとも部分的に基づいて調整される。さらに、グローバル・コントローラがクロスポイント・アレイの各クロスポイント・デバイスに記憶された値を調整する。
【0007】
本発明の一実施形態によると、ニューラル・ネットワークを実施するためのクロスポイント・アレイは、クロスポイント・デバイスがクロスポイント・アレイの各ノードにある、一組のクロスポイント・デバイスを含み、各ノードがニューラル・ネットワークのニューロン間の接続を表し、各ノードがノードに割り当てられた重みを記憶する。クロスポイント・デバイスは、一組の単一ビット・カウンタを有するカウンタを含み、単一ビット・カウンタの状態が、クロスポイント・デバイスに記憶される重みを表す。抵抗器デバイスは、一組の抵抗回路を含み、各抵抗回路は、一組の単一ビット・カウンタからのそれぞれの単一ビット・カウンタに関連付けられている。抵抗回路は、関連付けられた単一ビット・カウンタの状態に従って活性化または非活性化され、抵抗器デバイスの電気コンダクタンスが、活性化された抵抗回路に少なくとも部分的に基づいて調整される。
【0008】
本発明の一実施形態によると、ニューラル・ネットワークを実施するための方法は、グローバル・コントローラによって、クロスポイント・アレイにロードされるマトリックスを選択するステップを含み、マトリックスがニューラル・ネットワークの2つの層間の接続に対応する。本方法は、クロスポイント・アレイのクロスポイントにおけるローカル・コントローラによって、クロスポイントに関連付けられたクロスポイント・デバイスの重み値をロードするステップをさらに含み、重み値が、選択されたマトリックスのクロスポイントに割り当てられる。さらに、本方法は、クロスポイント・デバイスによって、クロスポイントに関連付けられた抵抗器デバイスのコンダクタンスを調整するステップを含み、コンダクタンスがクロスポイント・デバイスにロードされた重み値に対応する。
【0009】
追加の技術的特徴および利点は、本発明の技術を通じて実現される。本発明の実施形態は、本明細書で詳細に説明され、特許請求される主題の一部と見なされる。より良好な理解のために、詳細な説明および図面を参照されたい。
【0010】
本明細書に記載される例は、以下の図を参照してよりよく理解されるであろう。図における構成要素は、必ずしも縮尺通りではない。さらに、図において、同様の参照番号は、異なる図の全体を通して対応する部分を示す。
【図面の簡単な説明】
【0011】
【
図1】生体ニューロンの入力および出力接続の簡略図である。
【
図2】
図1に示す生体ニューロンの簡略化されたモデルである。
【
図3】
図2に示す生体ニューロンのモデルを組み込んだANNの簡略化されたモデルを示す図である。
【
図4】重み更新方法の簡略化されたブロック図である。
【
図5】本発明の一実施形態による重みのアレイを含むANNの図である。
【
図6】本発明の一実施形態によるRPUデバイスのクロスバー・アレイを、RPUの動作を示す電圧シーケンスとともに示す図である。
【
図7】本発明の一実施形態による、RPUアレイのクロスポイント・デバイスとして使用することができるカウンタ・ベースのRPUを示す図である。
【
図8】カウンタの状態に少なくとも部分的に基づいた抵抗器デバイスの調整可能な抵抗である。
【
図9】幅に少なくとも部分的に基づいてFETの抵抗/コンダクタンスを変化させることを示す図である。
【
図10】ゲート長に少なくとも部分的に基づいてFETの抵抗/コンダクタンスを変化させることを示す図である。
【
図11】垂直の幾何学的形状を使用した可変抵抗/コンダクタンスを有する抵抗器デバイスの例を示す図である。
【
図12】本発明の一実施形態による、RPUアレイのクロスポイント・デバイスとして使用することができるカウンタ・ベースのRPUを示す図である。
【
図13】抵抗器ラダーを有するRPUがRPUアレイのクロスポイント・デバイスとしてどのように接続されるかを示す図である。
【
図14】RPUおよび接続回路を使用して実行される順方向伝搬パスを示す図である。
【
図15】RPUおよび接続回路を使用して実行される逆方向伝搬パスを示す図である。
【
図16】RPUデバイスを使用するRPUアレイを示す図である。
【
図17】RPUデバイスを使用するRPUアレイ内のデータフローを示す図である。
【発明を実施するための形態】
【0012】
本明細書に示される図は、例示的なものである。本発明の思想から逸脱することなく、本明細書に記載される図または動作に対して多くの変形形態があり得る。例えば、アクションは、異なる順序で実行することができ、またはアクションは、追加、削除、または変更することができる。また、「結合された」という用語およびその変形形態は、2つの要素間に通信経路を有することを表し、それらの間に介在する要素/接続がない要素間の直接的な接続を意味するものではない。これらの変形形態はすべて、本明細書の一部と考えられる。
【0013】
本発明の様々な実施形態は、関連する図面を参照して本明細書で説明される。本発明の範囲から逸脱することなく本発明の代替の実施形態を考案することができる。以下の説明および図面において、様々な接続および位置関係(例えば、上、下、隣接など)が要素間に記載されている。これらの接続または位置関係あるいはその両方は、別段の規定がない限り、直接的または間接的であってもよく、本発明は、この点に関して限定的であることは意図されていない。したがって、エンティティの結合は、直接的または間接的な結合のいずれかを指すことができ、エンティティ間の位置関係は、直接的または間接的な位置関係であってもよい。さらに、本明細書で説明される様々なタスクおよびプロセス・ステップは、本明細書で詳細に説明されない追加のステップまたは機能を有する、より包括的な手順またはプロセスに組み込むことができる。
【0014】
以下の定義および略語は、特許請求の範囲および本明細書の解釈のために使用されるべきである。本明細書で使用されるとき、用語「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「含有する」、または「含有している」、あるいはそれらの任意の他の変形形態は、非排他的な包含を含むことが意図されている。例えば、要素の列挙を含む組成物、混合物、プロセス、方法、物品、または装置は、必ずしもそれらの要素だけに限定されず、明示的に列挙されていない、またはそのような組成物、混合物、プロセス、方法、物品、もしくは装置に固有の他の要素を含むことができる。
【0015】
さらに、「例示的」という用語は、本明細書では、「例、実例、または例示として役立つ」ことを意味するために使用される。「例示的」として本明細書に記載される任意の実施形態または設計は、他の実施形態または設計よりも好ましいもしくは有利であると必ずしも解釈されるべきではない。「少なくとも1つ」および「1つまたは複数」という用語は、1以上の任意の整数、すなわち1、2、3、4などを含むものと理解することができる。「複数」という用語は、2以上の任意の整数、すなわち2、3、4、5などを含むものと理解することができる。「接続」という用語は、間接的な「接続」および直接的な「接続」を含むことができる。
【0016】
「約」、「実質的に」、「およそ」、およびそれらの変形形態の用語は、出願を申請する時点で利用可能な機器に基づいた特定の量の測定値に関連付けられた誤差の程度を含むことが意図されている。例えば、「約」は、所与の値の±8%、または5%、または2%の範囲を含むことができる。
【0017】
簡潔にするために、本発明の態様を作成および使用することに関連する従来の技法は、本明細書で詳細に説明されることがあり、またはされないことがある。特に、本明細書に記載されている様々な技術的特徴を実施するためのコンピューティング・システムおよび特定のコンピュータ・プログラムの様々な態様は、よく知られている。したがって、簡潔にするために、多くの従来の実施態様の詳細は、よく知られているシステムまたはプロセスあるいはその両方の詳細を提供することなく、本明細書で簡単に言及されるか、または完全に省略される。
【0018】
本発明の1つまたは複数の実施形態は、脳の構造および機能のモデリングに特に重点を置いた生体ニューラル・ネットワークの文脈で説明されているが、本明細書で引用される教示の実施は、特定の環境のモデリングに限定されないことがあらかじめ理解されているものとする。むしろ、本発明の実施形態は、環境への様々な入力をベクトルに転換することができる限り、例えば、気象パターン、インターネットから収集された任意のデータなどを含む、任意のタイプの環境をモデル化することが可能である。
【0019】
人工ニューラル・ネットワーク(ANN)を使用して、多数の入力に依存する、一般に未知のシステムおよび機能を推定または近似することができる。ニューラル・ネットワークは、相互接続された「ニューロン」の概念に基づくクラスのアルゴリズムを使用する。典型的なニューラル・ネットワークでは、ニューロンは、入力に対して動作する所与の活性化関数(activation function)を有する。適切な接続の重みを決定すること(「トレーニング」とも呼ばれるプロセス)によって、ニューラル・ネットワークは、画像や文字などの所望のパターンの認識を効率的に行う。多くの場合、これらのニューロンは、グループ間の接続をより明確にし、値をそれぞれ計算するために、「層」にグループ化される。ニューラル・ネットワークのトレーニングは、計算量の多いプロセスである。
【0020】
ANNは、多くの場合、シミュレートされた「ニューロン」として機能し、電子信号の形態で互いに「メッセージ」を交換する、相互接続されたプロセッサ要素のいわゆる「ニューロモーフィック」システムとして具現化される。生体ニューロン間でメッセージを伝達するシナプス神経伝達物質接続のいわゆる「可塑性」と同様に、シミュレートされたニューロン間で電子メッセージを伝達するANNの接続には、所与の接続の強弱に対応する数値的な重みが付けられている。ANNが入力に適応し、学習することができるように、重みは、経験に基づいて調節および調整され得る。例えば、手書き認識用のANNは、入力画像のピクセルによって活性化することができる一組の入力ニューロンによって定義される。ネットワークの設計者によって決定された関数によって重み付けされ、変換された後、これらの入力ニューロンの活性化は、その後、「隠れ(hidden)」ニューロンとしばしば呼ばれる他の下流のニューロンに渡される。このプロセスは、出力ニューロンが活性化されるまで繰り返される。活性化された出力ニューロンは、どの文字が読み取られたかを判定する。
【0021】
クロスバー・アレイは、クロスポイント・アレイまたはクロスワイヤ・アレイとも呼ばれ、ANNアーキテクチャ、ニューロモーフィック・マイクロチップ、超高密度不揮発性メモリなどの、様々な電子回路およびデバイスを形成するために使用される高密度、低コストの回路アーキテクチャである。基本的なクロスバー・アレイ構成は、一組の導電性行ワイヤ、および一組の導電性行ワイヤと交差するように形成された一組の導電性列ワイヤを含む。2組のワイヤ間の交差部は、薄膜材料から形成することができる、いわゆるクロスポイント・デバイスによって分離される。
【0022】
クロスポイント・デバイスは、事実上、ニューロン間のANNの重み付けされた接続として機能する。ナノスケール・デバイス、例えば、「理想的な」導通状態のスイッチング特性を有するメモリスタは、高いエネルギー効率でシナプス可塑性をエミュレートするために、クロスポイント・デバイスとしてしばしば使用される。理想的なメモリスタ材料の導通状態(例えば、抵抗)は、行ワイヤと列ワイヤの個々のワイヤ間に印加される電圧を制御することによって変更することができる。デジタル・データは、高い導通状態または低い導通状態を実現するために、交差部におけるメモリスタ材料の導通状態を変更することによって記憶することができる。メモリスタ材料は、材料の導通状態を選択的に設定することによって、2つ以上の別個の導通状態を維持するようにプログラムすることもできる。メモリスタ材料の導通状態は、材料に電圧を印加し、ターゲット・クロスポイント・デバイスを通過する電流を測定することによって読み出すことができる。しかしながら、これまでのところ、メモリスタおよびその他の抵抗ランダム・アクセス・メモリ(RRAM)ベースのクロスポイント・デバイスには、ANNアプリケーションに有害ないくつかの実用上の欠点があり、著しいデバイス間ばらつき、および「セット(すなわち、抵抗を増分するための)」操作と「リセット(すなわち、抵抗を減分するための)」操作の非対称性が、2つのそのような主たる制約である。
【0023】
消費電力を制限するために、ANNチップ・アーキテクチャのクロスポイント・デバイスは、しばしば、オフライン学習技術を利用するように設計されており、ターゲット関数の近似は、最初のトレーニング・フェーズが解決されると、変化しない。オフライン学習は、非常にわずかな電力しか引き出さないように、クロスバー・タイプのANNアーキテクチャのクロスポイント・デバイスを簡略化することができる。
【0024】
電力消費がより低くなる可能性があるにもかかわらず、オフライン・トレーニングの実行は、トレーニング・データの入力-出力ペアを一致させるために、典型的には、トレーニング中にANNモデルのかなりな数の調整可能パラメータ(例えば、重み)を修正する必要があるため、困難であり、リソースを大量に消費する可能性がある。したがって、省電力のオフライン学習技法を優先するためにANNアーキテクチャのクロスポイント・デバイスを簡略化することは、典型的には、トレーニング速度およびトレーニング効率が最適化されないことを意味する。
【0025】
電力消費を許容範囲内に維持する単純なクロスポイント・デバイスを提供すること、ならびにANNアーキテクチャのトレーニングの速度および効率を加速することにより、全体的なANNの性能が向上し、より幅広いANNアプリケーションが可能になる。したがって、本明細書では、アレイ内に記憶される対応する重みを表す調整可能なコンダクタンス(抵抗)を提供することができるカウンタ・ベースのクロスポイント・デバイスを使用して、クロスポイント・アレイを使用およびトレーニングすることを容易にする技術的解決策が記載される。さらに、重み記憶のための典型的なコンデンサ・ベースの実施態様と比較して、本明細書に記載される技術的解決策は、電荷損失(charge-loss)および更新電流に対する厳しい要件などの技術的課題に対処する。また、メモリスタまたはRRAMベースのクロスポイント・デバイスとは異なり、カウンタ・ベースのクロスポイント・デバイスは、デバイス間のばらつきが少なく(十分に確立された半導体技術プロセスによってもたらされる)、重み値のアップ・カウント対ダウン・カウントの理想的な対称性を有する。
【0026】
本明細書に記載される技術的解決策は、特定のクロック・イベントに少なくとも部分的に基づいて、カウンタ・ベースのクロスポイント・デバイスによって記憶された値を更新することをさらに容易にする。クロック・イベントは、ニューラル・ネットワークを表すクロスポイント・アレイを容易にし、順方向または逆方向あるいはその両方の伝播後に記憶された重みを更新する。次いで、記憶された重みが、その後の順方向または逆方向あるいはその両方の伝播中に使用される。
【0027】
RPUアレイのRPUとしてカウンタ・ベースのクロスポイント・デバイスを使用することにより、RPUアレイが従来のCMOS技術の堅牢性を有することが容易になる。さらに、デジタル・カウンタを使用することにより、重み増分の増加対減少の対称性が容易になる。さらに、カウンタ・ベースのクロスポイント・デバイスにより、RPUアレイが逆方向伝播に対して確率的並列更新アルゴリズム(stochastic parallel update algorithm)で動作することが容易になる。
【0028】
1つまたは複数の例では、重み要素は、クロスポイント・デバイスのデジタル・カウンタ(例えば、J‐Kフリップ・フロップ・ベースのカウンタ)に記憶される。カウンタの各ビットは、クロスポイント・デバイスの抵抗回路のスタックからの1つまたは複数の抵抗回路に関連付けられている。カウンタのビットは、FETスタックの総抵抗が変換素子(すなわち、各RPUセルの抵抗器素子)として使用されるように、直列に接続されたFETのゲート端子を制御する。したがって、カウンタのビットは、さらに詳細に説明されるように、抵抗回路のスタックの総抵抗の制御を容易にする。
【0029】
本発明の実施形態は、電子システムを対象としているが、参照および説明を容易にするために、電子システムの様々な態様は、例えば、ニューロン、可塑性およびシナプスなどの神経学的専門用語を使用して説明される。電子システムについての本明細書における議論または例示に対して、神経学的専門用語または神経学的省略表記の使用は、参照を容易にするためのものであり、記載された神経機能または神経構成要素の神経形態学的なANN等価物をカバーすることが意図されていることが理解されよう。
【0030】
0と1を操作する従来のデジタル・モデルを利用する代わりに、ANNは、推定または近似されるコア・システム機能の実質的に機能的な等価物である処理要素間の接続を作成する。例えば、IBM(商標)のSyNapse(商標)コンピュータ・チップは、哺乳類の脳と同様の形態、機能、アーキテクチャを提供しようとする電子ニューロモーフィック・マシンの中心的な構成要素である。IBM SyNapseコンピュータ・チップは従来のコンピュータ・チップと同じ基本的なトランジスタ構成要素を使用しているが、そのトランジスタは、ニューロンの挙動およびそれらのシナプス接続を模倣するように構成されている。IBM SyNapseコンピュータ・チップは、100万強のシミュレートされた「ニューロン」のネットワークを使用して情報を処理し、この「ニューロン」が、生体ニューロン間のシナプス通信と同様の電気スパイクを使用して互いに通信する。IBM SyNapseアーキテクチャは、メモリ(すなわち、シミュレートされた「シナプス」)を読み出して単純な動作を実行するプロセッサの構成(すなわち、シミュレートされた「ニューロン」)を含む。異なるコアに典型的には配置されているこれらのプロセッサ間の通信は、オン・チップ・ネットワーク・ルータによって実行される。
【0031】
ここで、
図1、
図2、および
図3を参照して、典型的なANNがどのように動作するかについての一般的な説明を提供する。本明細書で前述したように、典型的なANNは、ニューロンと呼ばれる約1,000億の相互接続された細胞を含む人間の脳をモデル化している。
図1は、図示するように構成および配置された、上流の入力112、114、下流の出力116、および下流の「他の」ニューロン118に接続する経路104、106、108、110を有する生体ニューロン102の簡略図を示す。各生体ニューロン102は、経路104、106、108、110を介して電気インパルスを送受信する。これらの電気インパルスの性質、およびそれらが生体ニューロン102においてどのように処理されるかが、主に全体的な脳の機能性の原因である。生体ニューロン間の経路接続は、強い場合と弱い場合がある。所与のニューロンが入力インパルスを受け取ると、ニューロンは、ニューロンの関数に従って入力を処理し、関数の結果を下流の出力または下流の「他の」ニューロンあるいはその両方に送信する。
【0032】
生体ニューロン102は、
図2に示す式によって表される数学関数f(x)を有するノード202として
図2においてモデル化されている。ノード202は、入力212、214から電気信号を取得し、各入力212、214にそのそれぞれの接続経路204、206の強度を乗算し、入力の和を取り、その和を関数f(x)に渡して、結果216を生成し、この結果216を、最終出力または別のノードへの入力あるいはその両方とすることができる。本明細書では、アスタリスク(*)を使用して乗算を表している。弱い入力信号は、非常に小さな接続強度数で乗算されるため、弱い入力信号が関数に与える影響は非常に小さい。同様に、強い入力信号は、より強い接続強度数で乗算されるため、強い入力信号が関数に与える影響は大きい。関数f(x)は、設計選択であり、様々な関数を用いることができる。f(x)の例示的な設計選択は、双曲線正接関数(hyperbolic tangent function)であり、これは、前の和の関数(function of the previous sum)を取り、マイナス1とプラス1との間の数を出力する。
【0033】
図3は、重み付けされた指向性グラフ(weighted directional graph)として編成された簡略化されたANNモデル300を示し、人工ニューロンは、ノード(例えば、302、308、316)であり、重み付けされた有向エッジ(directed edge)(例えば、m1~m20)がノードを接続する。ANNモデル300は、ノード302、304、306が入力層ノードであり、ノード308、310、312、314が隠れ層ノードであり、ノード316、318が出力層ノードであるように編成されている。各ノードは、接続経路によって、隣接する層のすべてのノードに接続され、接続経路が、接続強度を有する指向性矢印m1~m20として
図3に示されている。1つの入力層、1つの隠れ層、および1つの出力層のみが示されているが、実際には、複数の入力層、隠れ層、および出力層が設けられてもよい。
【0034】
人間の脳の機能性と同様に、ANN300の各入力層ノード302、304、306は、接続強度調整およびノード加算なしで、ソース(図示せず)から直接、入力x1、x2、x3を受け取る。したがって、
図3の下部に列挙された式によって示されるように、y1=f(x1)、y2=f(x2)、およびy3=f(x3)である。各隠れ層ノード308、310、312、314は、その入力を、関連する接続経路に関連付けられた接続強度に従って、すべての入力層ノード302、304、306から受け取る。したがって、隠れ層ノード308では、y4=f(m1*y1+m5*y2+m9*y3)であり、ここで、*は、乗算を表す。
図3の下部に示す関数y5~y9を定義する式によって示されるように、隠れ層ノード310、312、314および出力層ノード316、318に対して、同様の接続強度乗算およびノード加算が実行される。
【0035】
ANNモデル300は、データ・レコードを一度に1つ処理し、レコードの最初の任意の分類をレコードの既知の実際の分類と比較することによって「学習」する。「逆伝播」(すなわち、「誤差の逆方向伝播」)として知られるトレーニング方法論を使用して、最初のレコードの最初の分類からの誤差がネットワークにフィードバックされ、ネットワークの重み付き接続を2回目に修正するために使用され、このフィードバック・プロセスが引き続き何度も繰り返される。ANNのトレーニング・フェーズでは、各レコードの正しい分類がわかっており、したがって、出力ノードに「正しい」値を割り当てることができる。例えば、正しいクラスに対応するノードのノード値は、「1」(または0.9)であり、その他のノード値は、「0」(または0.1)である。したがって、出力ノードに対するネットワークの計算値をこれらの「正しい」値と比較し、各ノードの誤差項を計算することができる(すなわち、「デルタ」ルール)。次いで、これらの誤差項が、次の反復で出力値が「正しい」値に近づくように、隠れ層の重みを調整するために使用される。
【0036】
ニューラル・ネットワークには多くのタイプがあるが、2つの最も広いカテゴリは、フィードフォワード・ネットワークおよびフィードバック/回帰ネットワーク(recurrent network)である。ANNモデル300は、入力、出力、および隠れ層を有する非回帰フィードフォワード・ネットワークである。信号は、一方向にのみ進むことができる。入力データは、計算を実行する処理要素の層上に渡される。各処理要素は、その入力の重み付けされた和に基づいてその計算を行う。次いで、新しい計算値が、次の層に供給される新しい入力値になる。このプロセスは、すべての層を通過して出力を決定するまで続く。しきい値伝達関数が、出力層のニューロンの出力を定量化するために使用されることがある。
【0037】
フィードバック/回帰ネットワークは、フィードバック経路を含み、これは、信号がループを使用して両方向に進むことができることを意味する。ノード間の可能な接続のすべてが許可される。このタイプのネットワークにはループが存在するため、ある特定の動作の下では、このタイプのネットワークは、平衡状態に達するまで連続的に変化する非線形動的システム(non-linear dynamical system)となる可能性がある。フィードバック・ネットワークは、連想記憶(associative memory)および最適化問題においてしばしば使用され、ネットワークは、相互接続された因子の最良の配置を探す。
【0038】
フィードフォワードおよび回帰ANNアーキテクチャにおける機械学習の速度および効率は、ANNクロスバー・アレイのクロスポイント・デバイスが、典型的な機械学習アルゴリズムのコア動作をどのように効果的に実行するかに依存する。機械学習の正確な定義は、定式化することが困難であるが、ANNコンテキストにおける学習プロセスは、ネットワークが特定のタスクを効率的に実行することができるようにクロスポイント・デバイスの接続重みを更新する問題と見なすことができる。クロスポイント・デバイスは、典型的には、利用可能なトレーニング・パターンから必要な接続重みを学習する。ネットワークの重みを繰り返し更新することによって、時間が経つにつれ性能が改善される。人間の専門家によって指定された一連のルールに従う代わりに、ANNは、代表的な例の所与のコレクションから(入出力関係のような)基本的なルールを「学習」する。したがって、学習アルゴリズムは、一般に、学習ルールを使用して、関連する重みを更新または調整あるいはその両方を行うための手順として定義することができる。
【0039】
3つの主要な学習アルゴリズム・パラダイムは、教師あり、教師なし、およびハイブリッドである。教師あり学習(supervised learning)、または「教師」を伴う学習では、ネットワークに対して、すべての入力パターンに対する正解(出力)が提供される。重みは、ネットワークが既知の正解に可能な限り近い回答を生成することができるように決定される。強化学習(reinforcement learning)は、ネットワークには、正解自体ではなく、ネットワーク出力の正確性に関する評価(critique)のみが提供される教師あり学習の変形形態である。対照的に、教師なし学習(unsupervised learning)、または教師を伴わない学習では、トレーニング・データ・セットの各入力パターンに関連付けられた正解は、必要とされない。教師なし学習は、データの根本的な構造、またはデータ内のパターン間の相関関係を探索し、これらの相関関係からパターンをカテゴリに編成する。ハイブリッド学習は、教師あり学習と教師なし学習を組み合わせたものである。重みの部分は、通常、教師あり学習によって決定されるが、その他の部分は、教師なし学習によって取得される。
【0040】
本明細書で前述したように、電力消費を制限するために、ANNチップ・アーキテクチャのクロスポイント・デバイスは、しばしば、オフライン学習技術を利用するように設計され、ターゲット関数の近似は、最初のトレーニング・フェーズが解決されると、変化しない。オフライン学習は、非常にわずかな電力しか引き出さないように、クロスバー・タイプのANNアーキテクチャのクロスポイント・デバイスを簡略化することができる。
【0041】
電力消費がより低くなる可能性があるにもかかわらず、オフライン・トレーニングの実行は、トレーニング・データの入力-出力ペアを一致させるために、典型的には、トレーニング中にANNモデルのかなりな数の調整可能パラメータ(例えば、重み)を修正する必要があるため、困難であり、リソースを大量に消費する可能性がある。
図4は、典型的な読み出し-処理-書き込み更新動作の簡略図を示し、CPU/GPUコア(すなわち、シミュレートされた「ニューロン」)がメモリ(すなわち、シミュレートされた「シナプス」)を読み出し、重み更新処理動作を実行し、次いで更新された重みをメモリに書き戻す。したがって、省電力のオフライン学習技法を優先するためにANNアーキテクチャのクロスポイント・デバイスを簡略化することは、典型的には、トレーニング速度およびトレーニング効率が最適化されないことを意味する。
【0042】
図5は、人工ニューラル・ネットワーク(ANN)アーキテクチャ500を示す。フィードフォワード動作の間、一組の入力ニューロン502はそれぞれ、それぞれの行の重み504に対して並列に入力電圧を提供する。重み504は、本明細書に記載されるカウンタ・ベースの重み要素であるRPUデバイスなどのクロスポイント・デバイスである。重み504はそれぞれ、設定可能な抵抗値を有し、その結果、電流出力が、重み付けされた入力を表すように、重み504からそれぞれの隠れニューロン506に流れる。所与の重みによる電流出力は、
【数1】
として決定され、ここで、Vは、入力ニューロン502からの入力電圧であり、rは、重み504の設定抵抗である。各重みからの電流は列ごとに加算され、隠れニューロン506に流れる。
【0043】
隠れニューロン506は、重み504のアレイからの電流を使用して、いくつかの計算を実行する。次いで、隠れニューロン506は、それ自体の電圧を別のアレイの重み504’に出力する。このアレイは、同じ仕方で機能し、重み504’の列がそれぞれの隠れニューロン506から電圧を受け取って、行ごとに加算された重み付けされた電流出力を生成し、出力ニューロン508に提供する。
【0044】
アレイの追加の層および隠れニューロン506を介在させることによって、任意の数のこれらのステージを実施することができることを理解されたい。
【0045】
逆伝播の間、出力ニューロン508は、重み504’のアレイにわたって電圧を提供する。出力層は、生成されたネットワーク応答をトレーニング・データと比較し、誤差を計算する。誤差は、電圧パルスとしてアレイに印加され、パルスの高さまたは持続時間あるいはその両方が誤差値に比例して変調される。本例では、重み504’の行がそれぞれの出力ニューロン508から並列に電圧を受け取り、その電圧を電流に変換し、この電流を列ごとに加算して、隠れニューロン506への入力を提供する。隠れニューロン506は、重み付けされたフィードバック信号をそのフィードフォワード計算の導関数と組合せ、そのそれぞれの重み504の列にフィードバック信号電圧を出力する前に誤差値を記憶する。重み504’は、重み504と同じように動作し、ラベル付けは、重み504がニューロン502の層とニューロン506の層との間にあり、重み504’がニューロン506の層とニューロン508の層との間にあることを示すために提供されていることに留意されたい。この逆伝播は、すべての隠れニューロン506および入力ニューロン502が誤差値を記憶するまで、ネットワーク500全体を通して進む。
【0046】
重み更新の間、入力ニューロン502および隠れニューロン506は、第1の重み更新電圧を重み504のクロスポイント・アレイに印加し、出力ニューロン508および隠れニューロン506は、第2の重み更新電圧を、ネットワーク500を介して重み504’のクロスポイント・アレイに印加する。さらに、重み504の更新フェーズの間に、入力層502は、入力値に比例する電圧パルスを(行ごとに)印加し、層506は、隠れ層506の誤差値に比例する電圧パルスを(列ごとに)印加する。さらに、ニューロン504’の更新フェーズの間に、隠れ層506は、そのフィードフォワード出力値に比例する電圧パルスを(列ごとに)印加し、出力層508は、出力層508の誤差に比例する電圧パルスを(行ごとに)印加する。これらの電圧の組合せにより、各重み504、504’内に状態変化が生じ、重み504、504’が新たなカウンタ値を取ることになり、ひいては抵抗値が変化する。このようにして、重み504、504’は、ニューラル・ネットワーク500をその処理における誤差に適合させるようにトレーニングすることができる。フィードフォワード、逆伝播、および重み更新という3つの動作モードは、互いに重複しないことに留意されたい。
【0047】
ここで本発明の概要に移ると、本発明の実施形態は、ローカル・データ記憶機能およびローカル・データ処理機能を提供する、本明細書でクロスポイント・デバイスまたは抵抗処理ユニット(RPU)と呼ばれるプログラム可能な抵抗クロスポイント構成要素を対象とする。換言すると、データ処理を実行すると、各RPUに記憶された値が並列かつローカルに更新され、これにより、関連するデータをプロセッサおよび別の記憶素子に出し入れする必要がなくなる。さらに、記載されたRPUによって提供されるローカル・データ記憶およびローカル・データ処理は、行列反転、行列分解などのアルゴリズムを実施するANNの能力を加速させる。したがって、記載されたRPUを有する機械学習ANNアーキテクチャを実施することにより、ANNの速度、効率、および電力消費を最適化する実施態様が可能になる。記載されたRPUおよび結果として得られるANNアーキテクチャは、全体的なANN性能を向上させ、幅広い実用的なANNアプリケーションを可能にする。
【0048】
記載されたRPUは、カウンタと、抵抗回路のスタックを含む抵抗器デバイスと、を含む抵抗クロスポイント・デバイスとして実施することができる。カウンタは、カウンタの各ビットを記憶および出力するデジタル回路を含む。各ビットは、抵抗回路のスタックからのそれぞれの抵抗回路に関連付けられている。各抵抗回路は、対応する所定のコンダクタンス(または抵抗)を提供する。1つまたは複数の例では、抵抗器デバイスのスタックからの抵抗回路のコンダクタンス値は、2次関数的な関係などの所定の関係を有する。ビットの状態(ON=1、OFF=0)に少なくとも部分的に基づいて、対応する抵抗回路は、その対応するコンダクタンスを抵抗器デバイスの総コンダクタンスに加算する。したがって、カウンタに記憶された値に少なくとも部分的に基づいて、抵抗器デバイスのコンダクタンス/抵抗を制御することができる。
【0049】
図6は、RPUの動作を示す電圧シーケンスとともに、本発明を具現化する2端子の非線形RPUデバイスのクロスバー・アレイを示す。
図6は、順方向行列乗算、逆方向行列乗算、および重み更新を実行する2次元(2D)クロスバー・アレイ800の図である。クロスバー・アレイ800は、一組の導電性行ワイヤ802、804、および806と、一組の導電性行ワイヤ802、804、806と交差する一組の導電性列ワイヤ808、810、812、および814と、から形成されている。一組の行ワイヤと一組の列ワイヤとの交差部は、RPUによって分離され、RPUは、それぞれが独自の調整可能/更新可能な抵抗重みを有する抵抗素子として
図6に示され、σ
11、σ
21、σ
31、σ
41、σ
12、σ
22、σ
32、σ
42、σ
13、σ
23、σ
33、およびσ
43としてそれぞれ表されている。説明を容易にするために、
図6では、1つのRPU820のみに参照番号が付けられている。順方向行列乗算では、RPUに電圧を印加し、RPUを通過する電流を測定することによって、RPUの導通状態(すなわち、記憶されている重み)を読み出すことができる。1つまたは複数の例では、クロスバー・アレイ800は、二組の導電性ワイヤ、すなわち二組の行および二組の列を含む。換言すれば、802、804、806、808、810、812、および814のそれぞれは、2つの導電性ワイヤを含む。順方向/逆方向の伝播は、第1の組のワイヤを介して行われ、更新は、第2の組のワイヤを介して行われる。
【0050】
入力電圧V
1、V
2、V
3は、行ワイヤ802、804、806にそれぞれ印加される。各列ワイヤ808、810、812、814は、特定の列ワイヤに沿って各RPUによって生成された電流I
1、I
2、I
3、I
4を合計する。例えば、
図6に示すように、列ワイヤ814によって生成される電流I
4は、式I
4=V
1σ
41+V
2σ
42+V
3σ
43に従う。したがって、アレイ800は、RPUに記憶された値に、電圧V
1、V
2、V
3によって規定される行ワイヤ入力を乗算し、各列の電流値を累積することによって順方向行列乗算を計算する。逆行列乗算(図示せず)は、非常に類似している。逆行列乗算では、列ワイヤ808、810、812、814に電圧が印加され、次いで、電流が行ワイヤ802、804、806から読み出され、累積される。以下でより詳細に説明する重み更新では、列ワイヤおよび行ワイヤに同時に電圧が印加され、関連するRPUデバイスに記憶されているコンダクタンス値がすべて並行して更新される。したがって、重み更新を実行するために必要な乗算および加算演算は、RPUデバイス自体に加えて、アレイ800の関連する行または列ワイヤを使用して、アレイ800の各RPU820においてローカルに実行される。
【0051】
図6の図を引き続き参照すると、1つまたは複数の実施形態による、RPU820の正の重み更新方法論の動作、および導電性行ワイヤ806と導電性列ワイヤ812の交差部におけるその対応する重みσ
33がここで提供される。2Dクロスバー・アレイ800のすべてのRPUに適用される確率的ビット・ストリーム(stochastic bit stream)の形態で必要な電圧パルスを生成するために、更新ジェネレータ回路(図示せず)がクロスバー・アレイ800の周辺に設けられ、周辺「トランスレータ」として使用される。
【0052】
したがって、本明細書に記載されたRPUを含むクロスポイント・アレイを使用して実施されたANNを参照すると、アレイにおいて、各ノードの抵抗(またはコンダクタンス)の値がノード間の結合を決定し、ノードがアレイのRPUデバイスによって表される。さらに、ANNに従ってクロスポイント・アレイをトレーニングすると、所望の結合に応じて、抵抗(またはコンダクタンス)がデバイス間で異なるようになる。ニューラル・ネットワークをトレーニングするためには、抵抗値を能動的に調整する必要がある。トレーニングが完了すると、抵抗値は、新たなタスクのトレーニングが開始されるまで、クロスポイント・アレイ回路の動作中は固定されたままである。
【0053】
図7は、1つまたは複数の実施形態による、RPUアレイにおいてクロスポイント・デバイスとして使用することができるカウンタ・ベースのRPUを表す。RPUデバイス820は、RPU820をクロスポイント・アレイ800に接続する一対の端子901、902を含む。
【0054】
さらに、カウンタ・ベースのRPU820は、単一ビット・カウンタの組であるカウンタ920と、抵抗回路のスタックである抵抗器デバイス930と、を含む。図示するカウンタ・ベースのRPUでは、抵抗器デバイスは、抵抗回路としてトランジスタT1、T2、T3、およびT4を含む。トランジスタは、電界効果トランジスタ(FET)または任意の他のタイプのトランジスタとすることができる。しかしながら、他の実施形態では、抵抗器デバイス930は、抵抗器ラダー(
図12)または任意の他のタイプの回路などの、他のタイプの抵抗回路を含み、これらを一緒に積み重ねて、本明細書に記載される技術的解決策によって提供されるような調整可能/制御可能な抵抗/コンダクタンスを提供することができる。
【0055】
RPUアレイ800の第1の組の導電性ワイヤは、(重み値を更新するのとは対照的に)クロスポイント・デバイス820に記憶された重み値を読み出すために、クロスポイント・デバイス820の読み出し1 901および読み出し2 902端子と結合されている。RPUアレイ800の第2の組の導電性ワイヤは、RPUデバイス820の論理ゲート940およびアップ/ダウン・カウンタ920と結合されている。特に、第2の組のワイヤは、(a)デバイスの論理ゲート入力に接続し、共通の入射(incidence)の下でクロック・パルスを生成し、(b)カウンタのアップ/ダウン入力に接続して、記憶された重み値に従ってカウンタを調整する。第2の組のワイヤに使用される電圧は、論理ゲート940(例えば、ANDゲート)およびカウンタ920の正確な論理演算のために選択される(典型的には、0およびVDD)。さらに、第2の組の各列ワイヤは、2つのワイヤを含み、1つは後続の層-ニューロンの誤差値(δ)に比例する電圧パルスを伝達し、2つ目は誤差値の対応する符号(例えば、0V=-符号、VDD=+符号)を伝達して、クロック・パルスを増分/減分させる。
【0056】
前述したように、順方向/逆方向の伝播は、第1の組の列および行のワイヤを使用して行われ、重み更新は、第2の別個の組のワイヤ(行および列)を介して行われる。順方向および逆方向の伝播の間、電圧パルスは、電流累積動作のために最適化された第1の組のワイヤのワイヤに印加される(すなわち、電圧値は、クロスポイント・デバイスがFET抵抗器スタックに基づいている場合、これらのFETが(飽和領域とは対照的に)線形領域で動作するように選択される)。一方、更新フェーズの間は、クロスバー・アレイ800の第2の組のワイヤが使用される。
【0057】
カウンタ920からの各単一ビット・カウンタは、抵抗器デバイス930からのそれぞれの抵抗回路に対応する。
図7に示す例では、カウンタ920は、抵抗器デバイス930からの4つの抵抗回路のスタックによってそれぞれマッピングされた4つのビットを含むことに留意されたい。しかしながら、他の例では、RPUは、本明細書に示すものとは異なる数の単一カウンタのビットおよび抵抗回路を含むことができる。
【0058】
抵抗器デバイス930によって提供される抵抗/コンダクタンスは、クロスポイントに印加される電圧に少なくとも部分的に基づいて、RPU820によって出力される電流に影響を及ぼす。1つまたは複数の例では、抵抗回路のスタックは、直列に接続された抵抗回路を含む。したがって、抵抗器デバイス930の抵抗は、活性化された各抵抗回路の抵抗の合計である。抵抗器デバイス930からの抵抗回路は、カウンタ920からの対応する単一ビット・カウンタの状態に少なくとも部分的に基づいて活性化される。例えば、単一ビット・カウンタがセットされている場合(=1/ON)、対応する抵抗回路が活性化され、単一ビット・カウンタがセットされていない場合(=0/OFF)、対応する抵抗回路は、活性化されず、またはその逆も同様である。
【0059】
さらに、一連の抵抗状態を生成するために、抵抗器デバイス930からの抵抗回路は、特定の制約を有する。例えば、抵抗回路は、表1に示すように2次関数的(quadratically)に増加する抵抗を有し、連続する各抵抗回路は、スタック内の前の抵抗回路の2倍の抵抗/コンダクタンスを有する。他の例では、抵抗回路は、本明細書の例とは異なる所定の関係を有することができることに留意されたい。
【0060】
【0061】
図8は、本発明の実施形態による、カウンタの状態に少なくとも部分的に基づいた抵抗器デバイスの調整可能な抵抗を示す。R1
hi=T1のOFF状態の抵抗(例えば、100KΩ)およびR1
low=T1のON状態の抵抗(例えば、10KΩ)であると考える。他の抵抗回路T2、T3、およびT4の抵抗は、抵抗回路間の関係、例えば、2次関数的な関係(表1)に少なくとも部分的に基づいて決定することができる。したがって、R2
hi=2R1
hi、R3
hi=4R1
hi、およびR4
hi=8R1
hiである。したがって、カウンタ920が1に設定されている場合、すなわち、T1のみがONに設定されている場合、抵抗器デバイス930の総抵抗は、R1
low+R2
hi+R3
hi+R4
hi=14R1
hi+R1
lowである。カウンタ920に記憶された値に従って抵抗器デバイス930の抵抗を変化させる他の構成が、
図8に示されている。したがって、抵抗器デバイス930の抵抗は、(R
hi-R
low)の刻みで直線的に変化する。
【0062】
抵抗器デバイス930の抵抗回路間の関係は、抵抗器デバイス930がカウンタ値920に従って調整される直線的な刻みを変化させるように、変化させることができることに留意されたい。例えば、抵抗器デバイスで使用される抵抗回路がFETである場合、その関係は、FETの幅、長さ、しきい値電圧(Vt)またはバイアス電圧あるいはその組合せの、様々な組合せによって達成することができる。
【0063】
図9は、本発明の実施形態による、FETの抵抗/コンダクタンスを、その幅に少なくとも部分的に基づいて変化させることを示す。FET T1、T2、T3、およびT4は、それぞれ、様々な幅w1、w2、w3、およびw4のソース962およびドレイン968を有し、ゲート965が実質的に同じゲート長Lを有する。幅w1、w2、w3、およびw4を、抵抗器デバイス930の抵抗/コンダクタンスを変化させるための関係に従って変化させる。例えば、幅w1は、w2の2倍、w2は、w3の2倍、w3は、w4の2倍であり、ここで、w4は、T4に割り当てられた所定のトランジスタ幅である。1つまたは複数の例では、抵抗回路として使用されるFETがFinFETである場合、フィンの数を変更することによって幅を変化させる。例えば、表2は、抵抗回路として使用されるFinFETのフィンの数を変化させることによって、抵抗器デバイス930からの抵抗回路の抵抗/コンダクタンスを変化させる4ビットの例を示す。
【0064】
【0065】
図10は、本発明の実施形態による、ゲート長に少なくとも部分的に基づいてFETの抵抗/コンダクタンスを変化させることを示す。この場合、FET T1、T2、T3、およびT4は、それぞれ、共通の幅wのソース962およびドレイン968と、異なるゲート長L1、L2、L3、およびL4を有するゲート965と、を有する。長さL1、L2、L3、およびL4を、抵抗器デバイス930の抵抗/コンダクタンスを変化させる関係に従って変化させる。例えば、長さL4は、L3の2倍、L3は、L2の2倍、L2は、L1の2倍であり、ここでL1は、L1に割り当てられた所定のトランジスタのゲート長である。
【0066】
図11は、本発明の一実施形態による、垂直の幾何学的形状を使用した可変抵抗/コンダクタンスを有する抵抗器デバイス930の例を示す。ここでは、スタックFETは、垂直の幾何学的形状で製造されている。製造は、基板層上で実行される。基板は、二酸化シリコンを含むことができるBOX(埋め込み酸化物)層などの絶縁層の上に最上層またはシリコン層を含むシリコン・オン・インシュレータ・ウエハとすることができる。基板層は、N+シリコン基板層または任意の他のそのような材料とすることができる。
【0067】
スペーサ層1010は、様々なFETのゲート用のゲート充填層1020の間にスペーサ層1010を堆積させることによって、スタック内の様々なFETを分離するために使用される。例えば、スペーサ1010は、SiNx層とすることができる。
【0068】
ゲート充填1020は、アルミニウム、コバルト、銅、金、ハフニウム、ニッケル、パラジウム、プラチナ、モリブデン、ニオブ、ポリシリコン、ロジウム、銀、タンタル、窒化タンタル、スズ、窒化チタン、チタンタングステン、タングステン、バナジウム、ジルコニウム、導電性ポリマ、およびそれらの混合物からなるグループから選択されたものなどの、任意のタイプの導電性材料で構成することができる。
【0069】
さらに、ゲート誘電体1030を使用して、ゲート充填層1020をスペーサおよびトランジスタチャネル1040から分離する。ゲート誘電体1030は、ヒ化アルミニウム、ヒ化アルミニウムガリウム、窒化アルミニウム、酸化アルミニウム、フッ化バリウム、酸化バリウムストロンチウムチタン、酸化バリウムチタン、フッ化カルシウム、フッ化セリウム、酸化セリウム、ヒ化ガリウム、アルミン酸ハフニウム、酸化ハフニウム、酸窒化ハフニウム、酸化ハフニウムシリコン、酸窒化ハフニウム、酸化インジウム、窒化インジウムガリウム、リン化インジウム、酸化ランタン、酸化ランタンアルミニウム、酸化ランタンシリコン、酸化鉛スカンジウムタンタル、ニオブ酸鉛亜鉛、フッ化マグネシウム、フッ化ニオブ、酸化ニオブ、窒化ケイ素、酸化ケイ素、酸化ストロンチウムビスマスタンタライト、酸化ストロンチウムチタン、酸化ジルコニウム、酸化ジルコニウムシリコン、酸化チタン、二酸化チタン、二酸化タンタル、五酸化タンタル、酸化スズ、アルミン酸ジルコニウム、酸化ジルコニウム、酸窒化ジルコニウム、酸窒化ジルコニウムシリコン、酸化イットリウム、酸化イットリウムシリコン、およびそれらの混合物からなるグループから選択されたものなどの、任意の知られている誘電体材料で構成することができる。少なくとも1つの例では、ゲート誘電体90は、酸化シリコンの誘電率よりも高い誘電率を示す。
【0070】
ゲートチャネル1040をドープして、特定の電気的特性および性能特性を提供することができる。1つまたは複数の例では、チャネル1040は、ゲート電極1020によって囲まれたポリシリコン材料とすることができる。さらに、縦型FETスタックは、抵抗器デバイス930のための読み出し-1 901端子および読み出し-2 902端子を提供する端子1050を含む。
【0071】
ゲート誘電体1020の堆積は、FET T1、T2、T3、およびT4のゲートの様々な長さに従って、間隔を空けて配置され、ゲート長、したがって抵抗/コンダクタンスの間の2次関数的な(または任意の他の所定の)関係を生成する。したがって、抵抗器デバイス930は、様々なゲート長を有する縦型FETスタックとすることができる。
【0072】
再び
図7を参照すると、カウンタ920は、xおよびδの共通の入射時に生成されるクロック・エッジでRPUアレイ800のクロスポイントに重みを記憶するように更新され、したがって、カウンタ920の確率的更新が可能になる。xおよびδは、RPUアレイ800の行および列に印加される電圧であり、電圧の確率的シーケンスを含む。xは、クロスポイント・デバイスへの入力によって生成される確率的パルス信号に対応する。1つまたは複数の例では、xは、所与の層のフィードフォワード出力に基づく確率的シーケンスであり、δは、RPUデバイス820のクロスバー・アレイの後続の層によって計算される誤差に基づいて生成される確率的シーケンスである。
【0073】
したがって、確率的シーケンスxおよびδの両方が共通の波形を有するときに、クロック・エッジが生成され、論理ゲート940によってカウンタに提供される。1つまたは複数の例では、論理ゲート940は、入力としてxおよびδのシーケンスを受け取り、出力としてクロック(CLK)を提供するANDゲートである。他の例では、他の論理ゲートを使用することができる。
【0074】
カウンタ920は、入力としてのCLKに加えて、δの符号を示す第2の入力を受け取る。この符号に基づいて、カウンタ920は、カウンタ920に記憶されたカウント値を増分(符号=+)または減分(符号=-)する。増分/減分に基づいて、カウンタ920の単一ビット・カウンタのビットが変化し、次いで、抵抗器デバイス930の抵抗回路が活性化/非活性化されて、抵抗器デバイス930の抵抗/コンダクタンスが調整される。
【0075】
図12は、本発明の実施形態による、RPUアレイのクロスポイント・デバイスとして使用することができるカウンタ・ベースのRPUを示す。ここで、RPU820Bは、抵抗器デバイス930(
図7)で用いられるFETのスタックを有するRPU820と比較して、抵抗器ラダーを変換素子として含む抵抗器デバイス930を用いている。図示する例では、4ビットの抵抗器ラダーが示されているが、他の例では、抵抗器ラダーに異なる数の抵抗回路を使用して、カウンタ920の異なる数のビットをサポートすることができることに留意されたい。図示する抵抗器ラダーは、カウンタ920の対応する単一ビット・カウンタにそれぞれ関連付けられた4つの抵抗回路を含む。
【0076】
ここで、入力Kiがハイにパルスされると、ラダー回路から流出する電流Ciは、(単一ビット・カウンタ<Q1:Q4>によって表される)カウンタ920の値(すなわち、重み)に比例する。その後、順方向伝搬の間に、出力電流は、RPUアレイ800によって列ごとに累積される。さらに、逆伝播の間に、出力電流は、RPUアレイ800によって行ごとに累積される。
【0077】
図示する4ビットの例では、ANDゲート1210の出力ノードの電圧が<V1:V4>(例えば、VL=0VまたはVH=1Vのいずれか)であると考える。回路からRPUアレイ800の列に流出する電流Ciは、
【数2】
である。
【0078】
より一般的には、rビットの場合、流出する電流は、
【数3】
である。
【0079】
したがって、電流は、4ビットの場合について表3に例示されているように、カウンタのデジタル値に比例し、電流は、1/16Rの刻みで直線的に変化し、ここで、Rは所定の抵抗値である。
【0080】
【0081】
図13は、本発明の一実施形態による、抵抗器ラダーを有するカウンタ・ベースのRPU820Bが、RPUアレイ800内のクロスポイント・デバイスとしてどのように接続されるかを示す。RPUアレイ800内でのRPU820Bの接続には、接続回路1310を使用する。接続回路1310は、さらに図示および説明されるように、4つのトランジスタTr1 1312、Tr2 1314、Tr3 1316、およびTr4 1318を含む。トランジスタTr2およびTr4は、抵抗<<R/2
rを有し、ここで、r=カウンタ920で使用されるビット数である。
【0082】
図14は、本発明の一実施形態による、RPU820Bおよび接続回路1310を使用して実行される順方向伝搬パスを示す。順方向伝搬の間、各クロスポイントの2つのFWDトランジスタ(Tr1 1312およびTr2 1314)は、ONであり、2つのBWDトランジスタ(Tr3 1316およびTr4 1318)は、OFFである。
【0083】
図15は、本発明の一実施形態による、RPU820Bおよび接続回路1310を使用して実行される逆方向伝搬パスを示す。逆伝播の間、各クロスポイントの2つのFWDトランジスタ(Tr1 1312およびTr2 1314)は、OFFであり、2つのBWDトランジスタ(Tr3 1316およびTr4 1318)は、ONである。
【0084】
順方向伝搬および逆方向伝搬の両方において、RPU820Bを使用して、RPUアレイ800の動作は、前述したように継続して、電流は、順方向伝搬では列ごとに、逆方向伝搬では行ごとに累積される。
【0085】
図16は、本発明の一実施形態による、カウンタ・ベースのRPUデバイスを使用するRPUアレイを示す。RPUアレイ800は、各クロスポイントにカウンタ・ベースのRPU820を含む。RPUデバイス820は、本明細書に記載されるようなFETベースまたは抵抗器ラダー・ベースの抵抗器デバイス930を使用することができる。RPUアレイ800は、各クロスポイントに、ローカル・メモリ1610およびローカル・コントローラ1620をさらに含む。
【0086】
特定のクロスポイントのローカル・メモリ1610は、1つまたは複数のANNマトリックスのそれぞれによって特定のクロスポイントに割り当てられた複数の重みを記憶し、各マトリックスは、ANNの2つの隣接する層間の接続に対応する(例えば、マトリックス1は、層Aを層Bに接続し、マトリックス2は、層Bを層Cに接続するなど)。ローカル・コントローラ1620は、グローバル・コントローラ1640から命令を受け取り、処理されているANNの層に基づいて、対応する重みをRPUデバイス820にロードする。したがって、ローカル・コントローラ1620は、ローカル・メモリ1610からの対応する重み値にアクセスし、特定のクロスポイントにおいて、RPUデバイス820のカウンタ920に重み値をロードする。
【0087】
さらに、グローバル・コントローラ1640は、重み更新動作後のカウンタ値の変更をローカル・コントローラ1620に命令する。1つまたは複数の例では、それに応答して、ローカル・コントローラ1620は、更新された重み値をカウンタ920から読み出し、更新された値をその後の使用のためにローカル・メモリ1610に記憶する。
【0088】
1つまたは複数の例では、周辺メモリ1650は、グローバル・コントローラ1640によって使用される情報、例えば、とりわけ、どの層が処理されているかなどのANNの処理を示すパラメータ値を記憶する。
【0089】
図17は、本発明の一実施形態による、カウンタ・ベースのRPUデバイスを使用したRPUアレイ内のデータフローを示す。RPUアレイ800は、各クロスポイントにカウンタ・ベースのRPU820を含む。RPUデバイス820は、本明細書に記載されるようなFETベースまたは抵抗器ラダー・ベースの抵抗器デバイス930を使用することができる。RPUアレイ800の個々のセルの重み要素は、効率的なデータ転送のためにローカル・メモリ1610のセル・レベルにローカルに記憶される。各ANN重みマトリックス(例えば、A-B層間のマトリックス1、B-C層間のマトリックス2など)の特定のセル(例えば、クロスポイント(m、n))に割り当てることができるすべての異なる重みは、ローカル・メモリ1610に記憶される。重みは、それぞれの層動作(すなわち、順方向伝搬、逆方向伝搬、および重み更新)の間にセルにロードされる。さらに、セルの値は、重み更新ステップの後にローカル・メモリ1610に戻されて記憶される。
【0090】
図示するように、ローカル・コントローラ1620は、特定の層(例えば、A-B)が処理されるという指示/命令をグローバル・コントローラ1640から受け取る。したがって、特定のクロスポイント(m、n)のローカル・コントローラ1620は、ローカル・メモリ1610に記憶されているセル(m、n)の重み値を読み出し、RPUアレイ800のクロスポイント(m、n)のRPUデバイス820のカウンタ920を更新する。本明細書に記載されるように、カウンタ値は、クロスポイント(m、n)におけるRPUデバイス820の抵抗器デバイス930の抵抗/コンダクタンスを調整する。したがって、電圧シーケンス(an)が行nにおいてRPUアレイ800に印加されると、RPUデバイス820は、カウンタ値に従って、調整された抵抗/コンダクタンスに少なくとも部分的に基づいて、電流Imを出力として通過させる。列内の複数のRPUデバイス820を横切る電流は、順方向伝搬で累積され、後続の層に入力値を提供する。あるいは、逆伝播では、電流は、行にわたって累積される。
【0091】
したがって、RPUアレイ800は、RPUデバイス820の調整可能な抵抗/コンダクタンスを使用してANNの複数の層を実施することを容易にし、抵抗/コンダクタンスは、RPUデバイス820の抵抗器デバイス930の対応する抵抗回路を活性化/非活性化するカウンタ920を使用して調整可能である。
【0092】
本明細書に記載された本発明の実施形態は、コンデンサ・ベースの重み記憶素子を使用する際に典型的には観察される電荷損失および更新電流に対する厳しい要件を排除することによって、RPUアレイで使用される典型的な重み記憶素子を改善する。本明細書に記載された本発明の実施形態は、カウンタ・ベースのRPUデバイスを重み記憶素子として使用することを容易にし、FETスタックの総抵抗が変換素子(すなわち、各RPUセルの抵抗器素子)として使用されるように、カウンタのビットが、直列に接続されたFETのゲート端子を制御する。あるいは、本明細書に記載された本発明の実施形態は、カウンタのビットに少なくとも部分的に基づいて抵抗器ラダーが変換素子として使用されるカウンタ・ベースのRPUデバイスの使用を容易にする。
【0093】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または記載された本発明の実施形態に限定されることは意図されていない。多くの変更形態および変形形態が、本発明の思想から逸脱することなく、当業者には明らかであろう。本明細書で使用される用語は、本発明の実施形態の原理、市場で見出される技術に対する実際の応用または技術的改良を最も良く説明するか、または当業者が本明細書に記載される本発明の実施形態を理解することができるように選択された。