(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-27
(45)【発行日】2023-10-05
(54)【発明の名称】相変化メモリの閉ループ・プログラミング
(51)【国際特許分類】
G06N 3/063 20230101AFI20230928BHJP
G06G 7/60 20060101ALI20230928BHJP
【FI】
G06N3/063
G06G7/60
(21)【出願番号】P 2021568981
(86)(22)【出願日】2020-04-07
(86)【国際出願番号】 IB2020053316
(87)【国際公開番号】W WO2020234658
(87)【国際公開日】2020-11-26
【審査請求日】2022-09-22
(32)【優先日】2019-05-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ガリ、エステバン アンブロギオ
(72)【発明者】
【氏名】バール、ジェフリー
(72)【発明者】
【氏名】マッキン、チャールズ
(72)【発明者】
【氏名】ツァイ、シドニー
(72)【発明者】
【氏名】ナラヤナン、プリティッシュ
【審査官】坂庭 剛史
(56)【参考文献】
【文献】国際公開第2019/049842(WO,A1)
【文献】国際公開第2017/163139(WO,A1)
【文献】特表2013-524394(JP,A)
【文献】特開2013-114737(JP,A)
【文献】特開2005-251383(JP,A)
【文献】米国特許第09842647(US,B1)
【文献】米国特許出願公開第2008/0056023(US,A1)
【文献】特開2004-234707(JP,A)
【文献】国際公開第2018/087617(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063-3/065
G06G 7/60
G11C 11/56
G11C 13/00
H10B 63/10
(57)【特許請求の範囲】
【請求項1】
コンピュータ実施方法であって、
人工ニューラル・ネットワークを実施するクロスバー・アレイ内の複数のアナログ・シナプスに関連付けられた初期重み値を、前記複数のアナログ・シナプスにパルス・シーケンスを送信することによって更新することであって、前記アナログ・シナプスのそれぞれがコンダクタンス・ユニットを含み、前記アナログ・シナプスの更新された重み値が、前記コンダクタンス・ユニットのコンダクタンス値に基づき、前記パルス・シーケンスが、前記コンダクタンス・ユニットの前記コンダクタンス値を変更する、前記更新することと、
前記複数のアナログ・シナプスの前記更新された重み値を前記アナログ・シナプスに関連付けられた目標重み値と比較することと、
前記比較に基づいて前記クロスバー・アレイからアナログ・シナプスのセットを選択することであって、前記選択が、前記アナログ・シナプスに関連付けられた選択フラグを用いて示される、前記選択することと、
選択される前記アナログ・シナプスのセットからの前記アナログ・シナプスのそれぞれの前記重み値を、変動期間の電気パルスのセットを前記アナログ・シナプスのセットに送信することによって更新することであって、前記電気パルスのセットが、前記アナログ・シナプスのセットに対応する前記コンダクタンス・ユニットの前記コンダクタンス値を変更する、前記更新することと、
を含む、方法。
【請求項2】
前記複数のアナログ・シナプスに送信される前記パルス・シーケンスが、所定の期間のものであり、均一重みパルス・シーケンスが、振幅が減少する複数の電流パルスを含む、請求項1に記載の方法。
【請求項3】
前記コンダクタンス・ユニットが、複数の不揮発性メモリ・デバイスを含む、請求項1に記載の方法。
【請求項4】
前記アナログ・シナプスに関連付けられた重み値が、前記複数の不揮発性メモリ・デバイスのそれぞれのコンダクタンス値に基づいて計算される、請求項3に記載の方法。
【請求項5】
前記不揮発性メモリ・デバイスが、相変化メモリ・デバイスである、請求項4に記載の方法。
【請求項6】
前記不揮発性メモリ・デバイスが、抵抗変化型メモリ・デバイスである、請求項4に記載の方法。
【請求項7】
前記複数の不揮発性メモリ・デバイスが、上位ペア(MSP)および下位ペア(LSP)を形成するように構成される、4つの不揮発性メモリ・デバイスを含む、請求項4に記載の方法。
【請求項8】
前記アナログ・シナプスの重み値が、W=Fx(G
+-G
-)+g
+-g
-として計算され、Fが、スケール係数であり、G
+およびG
-が、前記MSPのコンダクタンス値であり、g
+およびg
-が、前記LSPのコンダクタンス値である、請求項7に記載の方法。
【請求項9】
コンダクタンス・ユニットの前記コンダクタンス値を変更することが、前記コンダクタンス値を更新するための所定の順序に従って、前記コンダクタンス・ユニットからの前記不揮発性メモリ・デバイスのそれぞれのコンダクタンス値を変更することを含む、請求項7に記載の方法。
【請求項10】
前記所定の順序に従って、前記MSPのうちの前記不揮発性メモリ・デバイスの前記コンダクタンス値が、最初に更新される、請求項9に記載の方法。
【請求項11】
前記所定の順序にさらに従って、前記MSPのうちの前記不揮発性メモリ・デバイスの前記コンダクタンス値が、前記不揮発性メモリ・デバイスに関連付けられた符号フラグに従って更新される、請求項10に記載の方法。
【請求項12】
前記アナログ・シナプスのセットを選択することが、重み値と目標値との間の差が所定の閾値よりも大きい、前記アナログ・シナプスのセットを選択することを含む、請求項1に記載の方法。
【請求項13】
前記アナログ・シナプスのセットから第1のアナログ・シナプスを除去することをさらに含み、前記第1のアナログ・シナプスについての前記重み値と前記目標重み値との差が、所定の閾値範囲内である、請求項1に記載の方法。
【請求項14】
前記第1のアナログ・シナプスが、前記第1のアナログ・シナプスの前記重み値が前記変動期間の電気パルスのセットによって更新されることに応答して、前記アナログ・シナプスのセットから除去される、請求項13に記載の方法。
【請求項15】
前記変動期間の電気パルスのセットが、第1のアナログ・シナプスのための第1の電気パルスを含み、前記第1の電気パルスが、前記第1のアナログ・シナプスの前記重み値と前記目標重み値との間の第1の差に基づく、請求項1に記載の方法。
【請求項16】
システムであって、
プロセッサと、
1つまたは複数のクロスバー・アレイを含むコプロセッサと、を備え、
前記プロセッサが、クロスバー・アレイを有する人工ニューラル・ネットワークの層をマッピングすることによって前記コプロセッサを用いて前記人工ニューラル・ネットワークを実施するように構成され、前記人工ニューラル・ネットワークを実施することが、
人工ニューラル・ネットワークを実施するクロスバー・アレイ内の複数のアナログ・シナプスに関連付けられた初期重み値を、前記複数のアナログ・シナプスにパルス・シーケンスを送信することによって更新することであって、前記アナログ・シナプスのそれぞれがコンダクタンス・ユニットを含み、前記アナログ・シナプスの更新された重み値が、前記コンダクタンス・ユニットのコンダクタンス値に基づき、前記パルス・シーケンスが、前記コンダクタンス・ユニットの前記コンダクタンス値を変更する、前記更新することと、
前記複数のアナログ・シナプスの前記更新された重み値を前記アナログ・シナプスに関連付けられた目標重み値と比較することと、
前記比較に基づいて前記クロスバー・アレイからアナログ・シナプスのセットを選択することであって、前記選択が、前記アナログ・シナプスに関連付けられた選択フラグを用いて示される、前記選択することと、
選択される前記アナログ・シナプスのセットからの前記アナログ・シナプスのそれぞれの前記重み値を、変動期間の電気パルスのセットを前記アナログ・シナプスのセットに送信することによって更新することであって、前記電気パルスのセットが、前記アナログ・シナプスのセットに対応する前記コンダクタンス・ユニットの前記コンダクタンス値を変更する、前記更新することと、
を含む方法を含む、システム。
【請求項17】
前記コンダクタンス・ユニットが、複数の不揮発性メモリ・デバイスを含む、請求項16に記載のシステム。
【請求項18】
前記アナログ・シナプスに関連付けられた重み値が、前記複数の不揮発性メモリ・デバイスのそれぞれのコンダクタンス値に基づいて計算される、請求項17に記載のシステム。
【請求項19】
前記複数の不揮発性メモリ・デバイスが、上位ペア(MSP)および下位ペア(LSP)を形成するように構成される、4つの不揮発性メモリ・デバイスを含み、前記アナログ・シナプスの重み値が、W=Fx(G
+-G
-)+g
+-g
-として計算され、Fが、スケール係数であり、G
+およびG
-が、前記MSPのコンダクタンス値であり、g
+およびg
-が、前記LSPのコンダクタンス値である、請求項18に記載のシステム。
【請求項20】
具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令が、クロスバー・アレイを有する人工ニューラル・ネットワークの層をマッピングすることによって前記人工ニューラル・ネットワークを実施する方法を実行するように、処理回路によって実行可能であり、前記人工ニューラル・ネットワークを実施することが、
前記クロスバー・アレイ内の複数のアナログ・シナプスに関連付けられた重み値を、前記クロスバー・アレイ内の前記複数のアナログ・シナプスにパルス・シーケンスを送信することによって更新することであって、各アナログ・シナプスがコンダクタンス・ユニットを含み、前記アナログ・シナプスの重み値が、前記コンダクタンス・ユニットのコンダクタンス値に基づき、前記パルス・シーケンスが、前記コンダクタンス・ユニットの前記コンダクタンス値を変更する、前記更新することと、
前記複数のアナログ・シナプスの前記重み値を前記アナログ・シナプスに関連付けられた目標重み値と比較することと、
前記比較に基づいて前記クロスバー・アレイからアナログ・シナプスのセットを選択することであって、前記選択が、前記アナログ・シナプスに関連付けられた選択フラグを用いて示される、前記選択することと、
選択される前記アナログ・シナプスのセットからの前記各アナログ・シナプスの前記重み値を、変動期間の電気パルスのセットを前記アナログ・シナプスのセットに送信することによって更新することであって、前記電気パルスのセットが、前記アナログ・シナプスのセットに対応する前記コンダクタンス・ユニットの前記コンダクタンス値を変更する、前記更新することと、
を含む、コンピュータ・プログラム製品。
【請求項21】
前記コンダクタンス・ユニットが、複数の不揮発性メモリ・デバイスを含む、請求項20に記載のコンピュータ・プログラム製品。
【請求項22】
前記アナログ・シナプスに関連付けられた重み値が、前記複数の不揮発性メモリ・デバイスのそれぞれのコンダクタンス値に基づいて計算される、請求項21に記載のコンピュータ・プログラム製品。
【請求項23】
前記複数の不揮発性メモリ・デバイスが、上位ペア(MSP)および下位ペア(LSP)を形成するように構成される、4つの不揮発性メモリ・デバイスを含み、前記アナログ・シナプスの重み値が、W=Fx(G
+-G
-)+g
+-g
-として計算され、Fが、スケール係数であり、G
+およびG
-が、前記MSPのコンダクタンス値であり、g
+およびg
-が、前記LSPのコンダクタンス値である、請求項22に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コンピュータ技術に関し、より詳細には、閉ループ・プログラミングを用いて相変化メモリ(PCM)・セルをプログラミングすることに関する。
【背景技術】
【0002】
PCMは、別個の電気的特徴を有する2つの相の間で切り替える特性を有する材料の特徴を利用する。例えば、これらの材料は、(i)不規則なアモルファス相と(ii)規則的な結晶相または多結晶相との間で切り替わることがあり、2つの相は、著しく異なる値の抵抗率に関連付けられている。さらに、材料がアモルファス相または結晶相へ部分的にのみ切り替わる中間構成が、抵抗率の中間値に関連付けられ得る。
【発明の概要】
【0003】
1つまたは複数の実施形態によれば、コンピュータ実施方法は、人工ニューラル・ネットワークを実施するクロスバー・アレイ内のアナログ・シナプスに関連付けられた重み値を、アナログ・シナプスにパルス・シーケンスを送信することによって更新することを含む。各アナログ・シナプスは、コンダクタンス・ユニットを含み、アナログ・シナプスの重み値は、コンダクタンス・ユニットのコンダクタンス値に基づく。パルス・シーケンスは、コンダクタンス・ユニットのコンダクタンス値を変更する。方法は、アナログ・シナプスの重み値をアナログ・シナプスに関連付けられた目標重み値と比較することをさらに含む。方法は、比較に基づいてクロスバー・アレイからアナログ・シナプスのセットを選択することをさらに含む。選択は、アナログ・シナプスに関連付けられた選択フラグを用いて示される。方法は、選択されるアナログ・シナプスのセットからの各アナログ・シナプスの重み値を、変動期間の電気パルスのセットをアナログ・シナプスのセットに送信することによって更新することをさらに含む。電気パルスのセットが、アナログ・シナプスのセットに対応するコンダクタンス・ユニットのコンダクタンス値を変更する。
【0004】
1つまたは複数の例において、アナログ・シナプスに送信されるパルス・シーケンスは、所定の期間のものであり、均一重みパルス・シーケンスが、振幅が減少する複数の電流パルスを含む。1つまたは複数の例において、コンダクタンス・ユニットが、不揮発性メモリ・デバイスのセットである。さらに、アナログ・シナプスに関連付けられた重み値が、不揮発性メモリ・デバイスのそれぞれのコンダクタンス値に基づいて計算される。1つまたは複数の例において、不揮発性メモリ・デバイスが、相変化メモリ・デバイスである。1つまたは複数の例において、不揮発性メモリ・デバイスが、抵抗変化型メモリ・デバイスである。
【0005】
1つまたは複数の例において、不揮発性メモリ・デバイスのセットが、上位ペア(MSP)および下位ペア(LSP)を形成するように構成される、4つの不揮発性メモリ・デバイスを含む。アナログ・シナプスの重み値が、W=Fx(G+-G-)+g+-g-として計算され、Fが、スケール係数であり、G+およびG-が、MSPのコンダクタンス値であり、g+およびg-が、LSPのコンダクタンス値である。
【0006】
1つまたは複数の例において、コンダクタンス・ユニットのコンダクタンス値を変更することが、コンダクタンス値を更新するための所定の順序に従って、コンダクタンス・ユニットからの各不揮発性メモリ・デバイスのコンダクタンス値を変更することを含む。1つまたは複数の例において、所定の順序に従って、MSPのうちの不揮発性メモリ・デバイスのコンダクタンス値が、最初に更新される。さらに、所定の順序に従って、MSPのうちの不揮発性メモリ・デバイスのコンダクタンス値が、不揮発性メモリ・デバイスに関連付けられた符号フラグに従って更新される。
【0007】
1つまたは複数の例において、アナログ・シナプスのセットを選択することが、重み値と目標値との間の差が所定の閾値よりも大きい、アナログ・シナプスのセットを選択することを含む。
【0008】
1つまたは複数の例において、方法は、アナログ・シナプスのセットから第1のアナログ・シナプスを除去することをさらに含み、第1のアナログ・シナプスについての重み値と目標重み値との差が、所定の閾値範囲内である。例えば、第1のアナログ・シナプスが、第1のアナログ・シナプスの重み値が変動期間の電気パルスのセットによって更新されることに応答して、アナログ・シナプスのセットから除去される。
【0009】
1つまたは複数の例において、変動期間の電気パルスのセットが、第1のアナログ・シナプスのための第1の電気パルスを含み、第1の電気パルスが、第1のアナログ・シナプスの重み値と目標重み値との間の第1の差に基づく。
【0010】
上述の特徴は、また、実施態様の他の種類のなかでも、少なくともシステム、コンピュータ・プログラム製品、および機械によって提供され得る。本発明の1つまたは複数の実施形態によれば、システムは、プロセッサを含み、コプロセッサは、1つまたは複数のクロスバー・アレイを含み、プロセッサは、クロスバー・アレイを有する人工ニューラル・ネットワークの層をマッピングすることによって、コプロセッサを用いて人工ニューラル・ネットワークを実施するように構成される。1つまたは複数の実施形態によれば、コンピュータ・プログラム製品は、具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含み、プログラム命令が、クロスバー・アレイを有する人工ニューラル・ネットワークの層をマッピングすることによって人工ニューラル・ネットワークを実施する方法を実行するように、処理回路によって実行可能である。
【0011】
1つまたは複数の実施形態によれば、クロスバー・アレイは、複数の相変化メモリ・デバイスを含み、相変化メモリ・デバイスは、クロスバー・アレイ内の各クロスポイントにある。4つの相変化メモリ・デバイスの全てのセットは、コンダクタンス・ユニットを形成し、そのようなコンダクタンス・ユニットのセットは、人工ニューラル・ネットワークにおけるアナログ・シナプスのセットを表す。電気回路は、クロスバー・アレイ内の複数のアナログ・シナプスに対するパルス・シーケンスを受信することであって、アナログ・シナプスの重み値が、コンダクタンス・ユニットのコンダクタンス値に基づき、パルス・シーケンスがコンダクタンス・ユニットのコンダクタンス値を変更する、受信することを含む方法を実行することによって、相変化メモリ・デバイスのコンダクタンス値をプログラムする。方法は、選択されるアナログ・シナプスのセットからの各アナログ・シナプスの重み値を、変動期間の電気パルスのセットをアナログ・シナプスのセットについて受信することによって更新することをさらに含む。電気パルスのセットが、アナログ・シナプスのセットに対応するコンダクタンス・ユニットのコンダクタンス値を変更する。クロスバー・アレイからのアナログ・シナプスのセットは、複数のアナログ・シナプスの重み値をアナログ・シナプスに関連付けられた目標重み値と比較することに基づいて選択される。
【0012】
1つまたは複数の実施形態によれば、コンピュータ実施方法は、クロスバー・アレイ内の相変化メモリ・デバイスのセットから、2つのペアの相変化メモリ・デバイスをコンダクタンス・ユニットとして構成することであって、コンダクタンス・ユニットのセットが、人工ニューラル・ネットワークにおける複数のアナログ・シナプスを表す、構成することを含む。方法は、クロスバー・アレイ内のアナログ・シナプスのセットにパルス・シーケンスを送信することであって、アナログ・シナプスの重み値がコンダクタンス・ユニットのコンダクタンス値に基づき、パルス・シーケンスがコンダクタンス・ユニットのコンダクタンス値を変更する、送信することをさらに含む。方法は、選択されるアナログ・シナプスのサブセットからの各アナログ・シナプスの重み値を、変動期間の電気パルスのセットをアナログ・シナプスのサブセットに送信することによって更新することをさらに含む。電気パルスのセットが、アナログ・シナプスのサブセットに対応するコンダクタンス・ユニットのコンダクタンス値を変更する。クロスバー・アレイからのアナログ・シナプスのサブセットは、アナログ・シナプスのセットの重み値をアナログ・シナプスに関連付けられた目標重み値と比較することに基づいて選択される。
【0013】
追加の技術的特徴および利点が、本発明の技術を通して実現される。本発明の実施形態および態様が、本明細書において詳細に説明され、特許請求される主題の一部と考えられる。より良く理解するために、詳細な説明および図面を参照する。
【0014】
本明細書で説明される排他的権利の詳細は、明細書の末尾における特許請求の範囲において詳細に指示され、明確に請求される。本発明の実施形態の、前述のおよびその他の特徴および利点は、添付図面と併せて用いられる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【0015】
【
図1】深層ニューラル・ネットワークのブロック図を示す。
【
図2A】本発明の1つまたは複数の実施形態による、アナログ・メモリのクロスバー・アレイを用いた深層ニューラル・ネットワークのブロック図を示す。
【
図2B】本発明の1つまたは複数の実施形態による、アナログ・メモリのクロスバー・アレイを用いた深層ニューラル・ネットワークのブロック図を示す。
【
図2C】本発明の1つまたは複数の実施形態による、アナログ・メモリのクロスバー・アレイを用いた深層ニューラル・ネットワークのブロック図を示す。
【
図3】本発明の1つまたは複数の実施形態による、相変化メモリ・アレイ・デバイスのブロック図を示す。
【
図4】本発明の1つまたは複数の実施形態による、複数のニューロンに連結されたクロスバー・アレイをネットワークとして用いて実施されるニューロモーフィック・システムの構造を示す。
【
図5】本発明の1つまたは複数の実施形態による、相変化メモリ・デバイスに重みをマッピングすることについての概要を示す。
【
図6】本発明の1つまたは複数の実施形態による、所望の重みをコンダクタンス・ユニットにマッピングすることの可視化を示す。
【
図7】本発明の1つまたは複数の実施形態による、減少する電流掃引の例を示す。
【
図8】本発明の1つまたは複数の実施形態による、コンダクタンス・ユニットに送信されるパルス・シーケンスを示す。
【
図9】本発明の1つまたは複数の実施形態による、クロスバー・アレイを用いて実施されるアナログ・シナプスへのニューラル・ネットワーク重みをプログラミングする方法のフローチャートを示す。
【発明を実施するための形態】
【0016】
本明細書において示される図面は、例示である。本発明の範囲から逸脱することなく、図面またはそこで説明される動作に対して多くの変形が存在し得る。例えば、アクションは、異なる順序で実行されてもよく、またはアクションが、追加され、削除され、もしくは修正されてもよい。また、「連結される」という用語およびその変形は、2つの要素間に通信経路を有することを述べ、それらの間に介在する要素/接続を有しない要素間の直接接続を意味しない。これらの変形の全てが、明細書の一部と考えられる。
【0017】
添付図面および開示される実施形態の以下の詳細な説明において、図面に示される様々な要素には、2桁または3桁の参照番号が与えられる。わずかな例外を除いて、各参照番号の左端の桁は、その要素が最初に示される図面に対応する。
【0018】
本発明の様々な実施形態が、関連する図面を参照して本明細書において説明される。本発明の代替の実施形態は、この発明の範囲から逸脱することなく考案され得る。様々な接続および位置関係(例えば、上、下、隣接など)は、以下の説明および図面における要素間において述べられている。これらの接続または位置関係あるいはその両方が、特段の指定がない限り、直接または間接であってもよく、本発明は、この点に関して限定であることを意図するものではない。したがって、エンティティの連結は、直接連結または間接連結のいずれかを指してもよく、エンティティ間の位置関係は、直接または間接の位置関係であってもよい。さらに、本明細書において説明される様々なタスクおよび処理ステップは、本明細書で詳細に説明されない追加ステップまたは機能性を有する、より包括的な手続またはプロセスに組み込まれ得る。
【0019】
以下の定義および略称は、特許請求の範囲および明細書の解釈のために使用されることとなる。本明細書において使用される、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「包含する」、もしくは「包含している」という用語、またはそれらの任意の他の変形は、非排他的包含を含むように意図される。例えば、要素のリストを含む合成物、混合物、プロセス、方法、製品、または装置は、必ずしもそれらの要素だけに限定されず、明示的に列挙されない他の要素、またはそのような合成物、混合物、プロセス、方法、製品、もしくは装置に固有の他の要素を含み得る。
【0020】
さらに、「例示的」という用語は、「例、事例、または例示として機能すること」を意味するために、本明細書において使用される。本明細書において「例示的」と説明される任意の実施形態または設計は、必ずしも他の実施形態または設計よりも好適または有利であると解釈されるべきではない。「少なくとも1つの」および「1つまたは複数の」という用語は、1以上の任意の整数、即ち、1、2、3、4などを含むように理解され得る。「複数の」という用語は、2以上の任意の整数、即ち、2、3、4、5などを含むように理解され得る。「接続」という用語は、間接「接続」および直接「接続」の両方を含み得る。
【0021】
「約」、「実質的に」、「ほぼ」という用語およびそれらの変形は、本出願の出願時点に入手可能な機器に基づく特定の数量の測定値に関連する誤差の程度を含むように意図される。例えば、「約」は、所与の値の±8%、または5%、または2%の範囲を含み得る。
【0022】
簡潔さのために、本発明の態様を作成し使用することに関連する従来技術は、本明細書において詳細に説明されてもされなくてもよい。特に、本明細書で説明される様々な技術的特徴を実施するコンピューティング・システムおよび特定のコンピュータ・プログラムの様々な態様が、よく知られている。それに応じて、簡潔にするために、多くの従来の実施の詳細は、本明細書で簡潔に述べられるだけであり、または周知のシステムまたはプロセスあるいはその両方の詳細を提供することなく完全に省略される。
【0023】
前述の通り、相変化メモリ(PCM)素子は、別個の電気的特徴を有する2つの相の間で切り替える特性を有する材料の特徴を利用する。現在、カルコゲナイドまたはカルコゲニック材料と呼ばれるTeまたはSeなどの、周期表の第6族の合金が、相変化セルにおいて有利に使用され得る。カルコゲナイドでは、材料がアモルファス相(抵抗率がより大きい)から結晶相(抵抗率がより小さい)へ、かつその逆へ移るときに、抵抗率が、2桁以上の大きさにより変化する。
【0024】
そのような特徴は、デジタル・データ記憶のためのメモリ・セルおよびアレイを提供するために使用されるPCM素子を与える。特に、相変化メモリにおいて、カルコゲニック材料の一部が、プログラマブル・レジスタとして用いられ、カルコゲニック材料は、それぞれが第1の論理値および第2の論理値に関連付けられた、高抵抗状態と低抵抗状態との間で、およびその逆に切り替えるように、制御された電流によって電気的に加熱され得る。カルコゲナイドの状態は、顕熱を引き起こさないように十分に低い電圧をかけることによって、およびそれを横断する電流を測定することによって、読み出され得る。電流は、カルコゲニック材料のコンダクタンスに比例するため、2つの状態を区別することが可能である。例えば、Ge、Sb、およびTeの合金(Ge2Sb2Te5、GST)によって形成されるカルコゲナイドは、コンピュータおよび他の種類のデジタル記憶デバイスなどにおいて、オーバライト可能なメモリ・デバイスに情報を記憶するために広く用いられている。
【0025】
高抵抗性のアモルファス状態と高導電性の結晶状態との間の相遷移は、適当な振幅および期間の電流パルスを通して電気的に誘導され得る。特に、アモルファス状態(「リセット」)への遷移は、ジュール効果により融解点を超えてカルコゲナイドを加熱するのに十分な振幅の電流パルスを印加することによって得られる。用いられる電流パルスは、カルコゲナイドの冷却が結晶化を防止するほど高速であるように急峻なエッジを有し、例えば、矩形電流パルスである。結晶状態(「セット」)への遷移は、異なる技術を用いて誘導され得る。したがって、PCMデバイスの相のコンダクタンスが異なるため、これを用いてビットを記憶することが可能である。ビットが中間コンダクタンスを有する状態に入るように、温度を制御することも可能である。ビットを記憶することに加えて、これは、サブスレッショルド相変化の所定のグループ(またはセット)が段階的にビット反転になり得るため、計算を実行するために用いられ得る。
【0026】
このように計算を行うことの利点は、動作がメモリ内で行われるためにそれがメモリとの行き来を回避すること、および動作が並列で行われ得ることの、2つの要素を持つ。これらの差異は、ニューロンの集団の挙動と本来の類似点を有し、それによって、PCMデバイスは、深層ニューラル・ネットワーク(DNN)などの人工ニューラル・ネットワーク(ANN)において使用するのに適当になる。
【0027】
PCMは、DNN(または他の種類のニューラル・ネットワーク)での使用にさらに適している。これは、ニューロンの活動はバイナリ、オール・オア・ナッシング状態ではなく、オンとオフとの間の中間的な挙動の範囲を採用し得るためである。したがって、1と0との間の状態を採用するPCMデバイスの能力は、それがニューロンの挙動を直接的にモデル化することを可能にする。
【0028】
訓練にこれを用いるために、PCMデバイス(ビット)のグリッド(またはアレイ)が、DNNの各層にマッピングされ得る。配線でできた通信ネットワークは、ニューロンがそれ自体の間で通信することを可能にする。その通信の強度は、メモリの状態によって設定され、その場合に、メモリの状態は、完全オンと完全オフとの間のスペクトル上にある。その状態は、同様に、それに流れ込む全てのビットによって設定される。通信ハードウェアは、可変強度信号を相変化ビットから異なる期間の信号に変換する。信号は、デジタル通信ネットワークと互換性がある。
【0029】
典型的には、DNNを実施するために、従来のデジタル・メモリ・チップとプロセッサ・チップとの間のネットワークのための重みデータを移送する必要性、および常に重みをメモリに維持する必要性のために、前向き推論計算は、低速かつエネルギー多消費型であり得る。上述の通り、PCMベースのバイトを用いるアナログ不揮発性メモリは、重みデータの場所でアナログ・ドメインにおいて並列化された積和演算を実行すること、およびメモリ内に記憶された重みデータをリフレッシュする必要性を低下させることによって、前向き推論を高速化し、エネルギー消費を減少させ得る。このようなDNNの実際の適用は、無制限であり、IoTデバイスのためのリアルタイム・センサ・データ処理および推論などを含み得る。
【0030】
前向き推論の精度は、重みプログラミングの精度に強く依存する。しかしながら、所望のアナログ・コンダクタンス値に対してPCMなどのアナログ・メモリをプログラミングすることは、特にアナログ・メモリ・アレイにおける可変性では、自明ではない。例えば、PCMデバイスは、メモリ・セルおよび下部電極のサイズに依存して異なる最大コンダクタンスを有し得る。したがって、1つの単一のプログラミング条件が、アレイ内の全てのPCMデバイスを同じアナログ・コンダクタンス値にすることはできない。さらに、そのようなPCMデバイス・ベースのDNNの実際の実施態様において、いくつかの追加の技術的問題が存在する。例えば、ハードウェアは、ニューラル・ネットワークを有効にする1と0との間の状態の同一範囲を有しない。さらに、PCMデバイスがどのように応答するかにおいて、ビット毎の可変性が存在する。PCMのプログラミングでの別の技術的課題は、デバイス毎の反復が異なることがあり、かつ無限に長くかかる場合があることから、有限時間内に複数デバイスを同時にプログラミングすることである。
【0031】
本発明の1つまたは複数の実施形態を用いた本明細書で説明される技術は、そのような技術的課題を克服する。本発明の1つまたは複数の実施形態は、定義済み時間フレーム内に複数のPCMデバイスを特定のアナログ・コンダクタンス状態へ同時にプログラミングすることを容易にする。本発明の1つまたは複数の実施形態によってもたらされる他の利点および実際の用途は、本明細書の説明に基づいて当業者に明らかとなるであろう。
【0032】
本発明の1つまたは複数の実施形態は、デバイス間可変性を克服することによって、PCMデバイスなどの不揮発性メモリ・デバイスの中間アナログ・コンダクタンス・プログラミングを容易にする。したがって、本発明の1つまたは複数の実施形態は、特定のアナログ・コンダクタンス状態への不揮発性メモリの行毎の閉ループ・プログラミングを提供する。本発明の1つまたは複数の実施形態の実験結果は、説明する技術が、デバイス可変性に対して堅牢であることを示しており、定義済み時間フレーム内で所望のプログラミング品質を達成する。
【0033】
図1は、深層ニューラル・ネットワークのブロック図を示す。図示されるDNN100は、入力層110、隠れ層120、および出力層130を有し、各層がニューロン105を含む。DNNは、生物学的ニューラル・ネットワークによって大まかな着想を得ている。ニューロン105は、可塑性シナプスによって相互接続される並列処理ユニットとして動作する。相互接続の重みを調節することによって、DNN100は、分類問題などのある問題を効率的に解決し得る。DNN100の訓練は、概して、典型的には逆伝播と呼ばれる、グローバル教師あり学習アルゴリズムに基づく。訓練の間、入力データは、ニューロン層110、120、および130を通って順伝播され、シナプス・ネットワークが積和演算を実行する。最終層(出力層130)の応答が、入力データ・ラベルと比較され、誤差が逆伝播される。順伝播および逆伝播の両方のステップが、行列ベクトル乗算のシーケンスを伴う。続いて、シナプス重みは、誤差を減少させるために更新される。非常に大きなニューラル・ネットワークに対して非常に大きなデータセット(複数ギガバイト)を用いてこれらの動作を繰り返し実行する必要があるため、このブルート・フォース最適化手法では、フォン・ノイマン機械上で最先端のネットワークを訓練するのに何日も、または何週間もかかることがある。したがって、本発明の1つまたは複数の実施形態では、PCMデバイスの複数のクロスバー・アレイを含むコプロセッサ、ならびに深層学習のそのようなステップを高速化するための他のアナログ通信リンクおよび周辺回路が用いられる。
【0034】
図2A、
図2B、および
図2Cは、本発明の1つまたは複数の実施形態による、アナログ・メモリのクロスバー・アレイを用いた深層ニューラル・ネットワークのブロック図を示す。シナプス重みは、クロスバー・アレイ200に編成された不揮発性メモリ(NVM)デバイス210のコンダクタンス値に関して、DNN100の各層(110、120、および130)に関連付けられる。NVMデバイス210は、PCMデバイス、抵抗変化型メモリ(RRAM)・デバイスなどであってもよい。
図2A、
図2B、および
図2Cにおいて、DNN100を実施する様々なフェーズ、
図2Aにおける順伝播、
図2Bにおける逆伝播、および
図2Cにおける重み更新が示されている。
【0035】
1つまたは複数の例において、DNN100の複数の層(110、120、および130)のそれぞれに対応する複数のそのようなクロスバー・アレイが存在する。本発明の1つまたは複数の実施形態によれば、コプロセッサ/チップ/システムは、ニューロン活性化関数およびクロスバー・アレイ200の間の通信を実施するための追加周辺回路と共に、そのようなクロスバー・アレイ200を含む。
【0036】
図3は、本発明の1つまたは複数の実施形態による、相変化メモリ・アレイ・デバイスのブロック図を示す。アーキテクチャは、チップ/システム300上のフレキシブル・ルーティング・ネットワークによって接続された複数の同一のアレイ・ブロック310を示す。各アレイ・ブロック310は、NVMデバイス210のクロスバー・アレイ200を表す。フレキシブル・ルーティング・ネットワークは、少なくとも3つのタスク、(1)チップ300のエッジからデバイス・アレイ310へチップ入力(例データ、例ラベル、および重みオーバライドなど)を伝達すること、(2)アレイ310からチップ300のエッジへチップ出力(推論された分類および更新された重みなど)を搬送すること、ならびに(3)多層ニューラル・ネットワークを実施するために様々なアレイ310を相互接続すること、を有する。各アレイ310は、シナプス接続115の高密度グリッドと接続された、入力ニューロン110(ここでは各アレイの「西」側に示される)、および出力ニューロン130(「南」側)を有する。周辺回路は、個々の行に割り当てられた回路(行回路320)および列に割り当てられた回路(列回路330)に分割され、回路は、いくつかの近隣の行および列の間で共有される。
【0037】
本発明の1つまたは複数の実施形態によれば、クロスバー・アレイ200は、ニューロモーフィック集積回路のためのスパイク・タイミング依存可塑性(STDP)学習規則に基づいてスパイキング・ニューロン・ネットワークを含むニューロモーフィック・ネットワークを提供する。例えば、本発明の1つまたは複数の実施形態は、NVMデバイス210(例えば、PCMデバイス)などのナノスケール・メモリ・シナプスを通して互いに対話する、相補型金属酸化膜半導体(CMOS)電子ニューロンを用いたスパイクベース計算を提供する。
【0038】
そのようなニューロモーフィック・ネットワークでは、電子ニューロンは、NVMデバイス210によって表されるプログラマブル電子シナプスを介して相互接続される。シナプス・コンダクタンスは、STDPの通り、シナプス前ニューロンおよびシナプス後ニューロンの相対スパイク時間の関数として時間と共に変化する。具体的には、STDP学習規則は、そのシナプス前ニューロンが発火した後にそのシナプス後ニューロンが発火する場合にシナプスのコンダクタンスを増加させること、および2つの発火の順序が逆である場合にシナプスのコンダクタンスを減少させることによって、シナプス(NVMデバイス210)をプログラムする。学習規則はSTDPによって定義され、シナプス・コンダクタンスは、シナプス前ニューロンおよびシナプス後ニューロンの相対スパイク時間の関数として時間と共に変化する。シナプス・コンダクタンスの変化は、対応するシナプス後ニューロンおよびシナプス前ニューロンにおける発火イベントの間の精密遅延に依存する。遅延が長いほど、シナプス・コンダクタンスの大きさの変化が小さい。
【0039】
図4は、本発明の1つまたは複数の実施形態による、複数のニューロンに連結されたクロスバー・アレイをネットワークとして用いて実施されるニューロモーフィック・システムの構造を示す。図示されるニューロモーフィック・システム400は、クロスバー・アレイ200を用いて相互接続された複数のニューロン414、416、418、および420を含む。一例では、クロスバー・アレイ200は、約0.1nm~10μmの範囲内のピッチを有する。システム400は、クロスバー・アレイ412のクロスポイント接合点において可変状態レジスタとして使用されるNVMデバイス210を含むシナプス・デバイス422をさらに含む。シナプス・デバイス422は、軸索経路424および膜経路427が樹状突起426に直交するように、軸索経路424、樹状突起経路426、および膜経路427に接続される。「軸索経路」、「樹状突起経路」、および「膜経路」という用語は、それぞれ「軸索」、「樹状突起」、および「膜」と呼ばれることもある。
【0040】
スパイキング電子ニューロンは、プログラマブルNVMシナプス(例えば、PCMデバイス)を通して他のニューロンからの入力を統合し、統合された入力が所定の閾値を超えるときにスパイクする。例えば、バイナリ確率的STDPと呼ばれる、ニューロモーフィック・ネットワークにおけるSTDPの実施態様において、各電子ニューロンは、単純なレジスタ・キャパシタ(RC)回路を用いてその最後のスパイキング・イベントを覚えている。よって、電子ニューロンがスパイクするときに、後述のように、複数のイベントが発生する。一例では、スパイキング・ニューロンは、内部「メモリ」キャパシタをV0に充電し、キャパシタにわたる電位は、Vt=V0e-t/RC、RC=50msに従って衰退する。
【0041】
スパイキング・ニューロンは、その軸索および樹状突起上にナノ秒「アラート」パルスを送信する。軸索において生成されたアラート・パルスが電圧スパイクである場合、下流ニューロンが、(次いで下流ニューロンによって統合され得る)関与するニューロンの各ペア間のシナプス(PCMデバイス)のコンダクタンスによって重み付けされて、電流信号を受信する。樹状突起において生成されたアラート・パルスは、上流ニューロンによって統合されないが、ハンドシェーク信号としての役割をして、シナプスのためのプログラミング・パルスが差し迫っていることを示す情報をそれらのニューロンへ中継する。
【0042】
有限遅延後、スパイキング・ニューロンは、本来はシナプス(PCMデバイス)のプログラミングを誘導できない、セミプログラミング・パルスを生成する。先にアラート・パルスを受信した上流ニューロンおよび下流ニューロンは、(内部キャパシタにおいて保持される各ニューロンの最後の発火後の経過時間に依存して)変調された振幅を有する適当なパルスを介して応答する。各応答パルスは、STDPを達成するために関与するニューロンのクロスポイント接合点において、各シナプス(PCMデバイス)をプログラムするためにセミプログラミング・パルスと結合する。シナプス後ニューロンは、矩形パルスを送信することによって応答し、矩形パルスは、シナプスの抵抗率を効果的に増大させ(即ち、コンダクタンスを減少させ)、シナプス前ニューロンは、三角パルスを送信することによって応答し、三角パルスは、シナプスの抵抗率を効果的に減少させる(即ち、コンダクタンスを増大させる)。
【0043】
クロスバー・アレイ200は、クロスポイント接合点においてNVMデバイス210を含むナノスケール・クロスバー・アレイであってもよく、上記電子ニューロン間の任意接続および可塑性接続を実施するために利用される。各シナプス・デバイス422は、電界効果トランジスタ(FET)を含み得るアクセスまたは制御デバイス425をさらに含み、それは、あらゆるクロスバー接合点において、信号通信(ニューロン発火イベント)中のクロストークを防止するために、ならびに漏出および電力消費を最小化するために、ダイオードとして配線されない。他の実施形態では、他の種類の回路が制御デバイス425として用いられてもよく、FETが1つの可能な例として本明細書での説明において用いられることに留意されたい。
【0044】
電子ニューロン414、416、418、および420は、クロスバー・アレイ200の周辺部において回路として構成される。設計および製造が単純であることに加えて、クロスバー・アーキテクチャは、利用可能な空間の効率的な使用をもたらす。完全なクロスバー・アレイに固有の完結したニューロン接続は、電気初期化または製造中に望ましくない場所でマスク・ステップを省略することによって、いずれかの任意接続に転換され得る。クロスバー・アレイ200は、ニューロン間の通信をカスタマイズするように構成され得る(例えば、ニューロンは、決して別のニューロンと通信しない)。任意接続は、製造レベルにおいて、あるシナプスを遮断することによって得られ得る。したがって、システム400のアーキテクチャ原理は、生物学的ニューロモーフィック・ネットワークにおいて観察される全ての直接配線結合を模倣し得る。
【0045】
クロスバー・アレイ200は、
図4に示されるドライバ・デバイスX
2、X
3、およびX
4をさらに含む。デバイスX
2、X
3、およびX
4は、インターフェース・ドライバ・デバイスを含み得る。具体的には、樹状突起426は、クロスバー・アレイ200の1つの側にドライバ・デバイスX
2を有し、クロスバー・アレイのもう1つの側にレベル変換器デバイス(例えば、センス増幅器)X
4を有する。軸索424は、クロスバー・アレイ200の1つの側にドライバ・デバイスX
3を有する。ドライバ・デバイスは、「西」側および「南」側(
図3)など、本明細書で説明された関数を実施するCMOS論理回路を含み得る。
【0046】
センス増幅器デバイスX4は、興奮性スパイキング電子ニューロン(Ne)414、416、および418に入り、同様に、軸索ドライバ・デバイスX3および樹状突起ドライバ・デバイスX2に接続する。ニューロン420は、阻害性スパイキング電子ニューロン(Ni)である。概して、興奮性スパイキング電子ニューロンは、そのターゲット・ニューロンをより発火しやすくし、阻害性スパイキング電子ニューロンは、そのターゲット・ニューロンを発火しにくくする。スパイキング電子ニューロンの様々な実施態様が使用され得る。概して、そのようなニューロンは、ソース興奮性ニューロンからの入力が受信されるときに増加し、ソース阻害性ニューロンからの入力が受信されるときに減少する、カウンタを含む。増加または減少の量は、ソース・ニューロンからターゲット・ニューロンへの接続強度に依存する。カウンタがある閾値に達すると、ニューロンは、独自のスパイクを生成し(即ち、発火し)、カウンタは、基準値へのリセットを経験する。スパイキング電子ニューロンという用語は、本明細書では「電子ニューロン」と呼ばれる。
【0047】
一例としてのシナリオでは、ニューロン414、416、418、および420は、樹状突起ニューロンである。各樹状突起ニューロンは、対応する変換器デバイスX4から入力を受信する。ニューロン414、416、418、および420は、また、出力を含み、経路415および417に沿って複数のデバイスX2、X3にそれぞれ信号を生成する。よって、ニューロン414、416、418、および420は、軸索接続に沿って出力を生成するときに軸索ニューロンとして機能し得る。ニューロン414、416、418、および420のいずれかが発火するときに、それらは、それらの軸索接続およびそれらの樹状突起接続へパルスを送出する。
【0048】
この例では、興奮性ニューロン414、416、418(Ne)のそれぞれが、統合および発火をもたらすように構成される。各阻害性ニューロン420(Ni)は、ネットワーク活動全体に依存して興奮性ニューロンの活動を調節するように構成される。当業者が認識するように、興奮性ニューロンおよび阻害性ニューロンの正確な数は、ニューロモーフィック・システム400を用いて解く問題の性質に依存して変動し得る。
【0049】
短期間のリード・スパイクが、通信のために軸索ドライバ・デバイスX3に印加され得る。延長パルスは、軸索ドライバ・デバイスX3に印加されてもよく、短い負パルスは、プログラミングのために軸索ドライバ・パルスを通る途中で樹状突起ドライバ・デバイスX2に印加されてもよい。このようにして、軸索ドライバ・デバイスX3は、長いプログラミング・パルスおよび通信スパイクを提供する。樹状突起ドライバ・デバイスX2は、遅延のあるプログラミング・パルスを提供する。ニューロン回路がアナログ論理回路を用いて実施される、本発明の1つまたは複数の実施形態において、対応するセンス増幅器X4は、統合のためにシナプス電流レベルをニューロン電流レベルに変換する。代替的に、または追加で、ニューロン回路がデジタル論理回路を用いて実施される場合に、対応するセンス増幅器X4は、統合のためにシナプス電流レベルをバイナリ・デジタル信号に変換する。
【0050】
FET駆動シナプス・デバイス422は、時間フェーズ化様式でSTDPを実施する。そのような実施は、高密度電子スパイキング・ニューロン・ネットワークの実現を可能にし、ニューロンのスパイクは、ある時間フェーズまたはグローバル・タイミング基準に制限されて、フェーズ化されたシナプスにおけるプログラミング活動をもたらす。概して、本発明の実施形態によれば、軸索ニューロンは、それらが樹状突起入力接続から受信する入力が閾値を超えるときに、「スパイク」または「発火」する(パルスを送信する)。一例では、生物学的現象を模倣するために必要な典型的周波数は、約10kHzであり、ナノスケール電子コンポーネントの通信およびプログラミングのために十分な時間ウィンドウを残す。
【0051】
本発明の1つまたは複数の実施形態において、ニューロモーフィック・ネットワーク10におけるシナプス重み更新および通信は、STDPを達成するために、グローバル・タイミング基準信号(即ち、グローバル・クロック)の特定のフェーズに制限される。ネットワークにおける通信が、グローバル・タイミング基準信号のあるフェーズに制限されると、FETデバイス425は、シナプス(PCMデバイス)422におけるアクセスまたは制御デバイスとして使用される。ニューロンがスパイクするとき、スパイクは、X2およびX3ドライバに通信される。各X3ドライバは、2つの導電経路424および427をそれぞれ介して、対応するシナプス422におけるFET425のソースおよびゲートを制御する。各シナプス422において、各FETのゲート端子は、シナプス前ニューロンに接続される膜として用いられて、接続されたプログラマブル・レジスタを通して流れる電流に対する精密な制御を可能にする。
【0052】
概して、クロスバー・アレイ412における発火ニューロンからのスパイキング信号に応答して、ドライバX2およびX3からの信号の結合されたアクションが、そのクロスバー・アレイ接合点におけるシナプス422のNVMデバイス210に、発火ニューロンのスパイキング・タイミング・アクションに基づいて値を変更させる。これは、NVMデバイス210のプログラミングを提供する。ニューロンのアナログ実施態様において、各レベル変換器デバイスX4は、対応するニューロンによる統合のためにそれぞれの対応するシナプス422からの電流量を変換するように構成される回路を含む。ニューロンのデジタル実施態様の場合、各レベル変換器デバイスX4は、同一機能を果たすセンス増幅器である。
【0053】
クロスバー・アレイ200におけるニューロンからデバイスX2、X3、X4へ信号を配信するタイミング、および信号を生成する際のデバイスX2、X3、X4のタイミングは、シナプスのプログラミングを可能にする。一実施態様は、電子ニューロンの最後のスパイキングがNVMデバイス210によって連結される軸索ドライバおよび樹状突起ドライバにスパイキング信号を発火してからの時間の関数として、NVMデバイス210のコンダクタンスを増加または減少させることによって、NVMデバイス210の状態を変更することを含む。概して、ニューロンは、スパイク信号を生成し、デバイスX2、X3、およびX4は、スパイク信号を解釈し、応答して、シナプス422をプログラムするために上述した信号を生成する。シナプスおよびニューロンは、アナログまたはデジタルであってもよい。
【0054】
一例では、短期間のリード・スパイク(例えば、約0.1msの長さ)が、通信のために軸索ドライバ・デバイスX3に印加される。延長パルス(例えば、約200msの長さ)は、軸索ドライバ・デバイスX3に印加される。短い負パルス(例えば、約50nsの長さ)は、シナプス422をプログラミングするために、軸索ドライバ・パルスを通るほぼ中間で樹状突起ドライバ・デバイスX2に印加される。このようにして、軸索ドライバ・デバイスX3は、長いプログラミング・パルスおよび通信スパイクを提供する。
【0055】
これらのシグナリング技術は、
図2A、
図2B、および
図2Cに示されるように、クロスバー・アレイ200を用いてDNN100を実施する動作のために用いられる。
図2Aを参照すると、順伝播は、積和演算を実行するシナプス・ネットワークを有するニューロン層(110、120、および130)を通してデータを処理することを含む。前方パスに関連付けられた行列ベクトル乗算は、図示されるクロスバー・アレイ200を用いてO(1)の複雑性で実施され得る。例えば、Aが行列でxおよびbはベクトルである場合に、Ax=bを実行するために、Aの成分が、クロスバー200に編成されたPCMデバイス210のコンダクタンス値に線形マッピングされる。xの値は、行に沿って印加される読み出し電圧の振幅または期間に符号化される。Aの正の成分および負の成分は、減算回路と共に別々のデバイス上でコード化される。代替的には、1つまたは複数の例において、負のベクトル成分が、負の電圧として印加される。列に沿った結果となる電流は、結果bに比例する。入力が期間に符号化される場合、結果bは、合計の充電(例えば、時間にわたって積分された電流)である。用いられるNVMデバイス210の特性は、多重レベルの記憶ケイパビリティおよびキルヒホッフの法則、オームの法則およびキルヒホッフの電流則である。
【0056】
図2Bはクロスバー・アレイ200によって実行される逆伝播を示す。同一のクロスバー構成が、Aの転置行列との行列ベクトル乗算を実行するために使用され得る。このため、入力電圧は、列ラインに印加され、結果となる電流は、行に沿って測定される。したがって、逆伝播は、シナプス重みを表す行列の転置との乗算を伴い、それは、上述の順伝播について説明されたのと同じように、O(1)の複雑性で実現され得る。
【0057】
図2Cは、重み更新を示しており、行列の成分がNVMデバイス210のコンダクタンス値にマッピングされる。このようなマッピングは、本明細書で説明されるように、プログラミング曲線を用いて反復プログラミングを介して達成され得る。
【0058】
クロスバー・アレイ210およびニューロモーフィック・システム400の説明が1つの可能な例としての実施態様であること、ならびに本発明の1つまたは複数の実施形態が他の種類の実施態様において用いられ得ることに留意されたい。
【0059】
典型的には、NVMデバイス210をプログラミングすること(重みを更新すること)は、コンプライアンス電流が安定的に増加するSETパルスを反復して印加することにより行われる。より低いコンダクタンス値への突然の遷移を引き起こし得るRESETパルスとは異なり、部分的なSETパルスの連続的な印加は、NVMデバイス210のコンダクタンス値のより漸進的な増加をもたらすと考えられる。したがって、NVMデバイス210を用いたニューロモーフィック・システム400の場合、既存の解決策では、部分的なSETパルスがシナプス可塑性規則を実施するために用いられる。
【0060】
例えば、NVMデバイス210のアナログ・コンダクタンス調節のための典型的なプログラミング戦略は、目標アナログ・コンダクタンス値に到達するために、(パルス期間も潜在的に増加しつつ)コンプライアンス電流が安定的に増加するSETパルスを反復して印加することである。しかしながら、技術的な課題は、この技術と共に存在する。例えば、ある電流閾値に到達した後、NVMデバイス210のサブセットが、印加されたパルスの間、部分的にRESETを得ることがあり、それによって、コンダクタンスが増加ではなく減少される。電流閾値は、PCMデバイス毎に異なり、よって、NVMデバイス210の数が増加するにつれてクロスバー・アレイに対する制御が困難である。
【0061】
本発明の1つまたは複数の実施形態は、プログラミング技術を用いることによってそのような技術的課題に対処する。本発明の1つまたは複数の実施形態は、目標コンダクタンスに到達するために、(パルス期間も潜在的に増加しつつ)コンプライアンス電流が減少するRESETパルスを反復して印加する戦略を用いる。コンプライアンス電流が、RESETのための電流閾値よりも降下するとき、パルスは、SETパルスになるが、PCMコンダクタンス値は、プログラミング条件がもう有効でなくなっても最高コンダクタンス値またはその付近にとどまる。さらに、低コンダクタンス値における精密度は、実験によって述べるような既存技術と比較して実質的に改善される。本発明の1つまたは複数の実施形態を用いて実証されるプログラミング技術は、行毎のプログラミング方式と互換性があり、有限数のサイクルで完結され得る。プログラミング結果は、アレイ内のデバイス間可変性に耐性がある。さらに、本明細書で説明される技術は、重み毎に2つのビット、1つの関与ビットおよび1つの符号ビットだけを用いることによって、物理的実施態様に関連付けられた回路領域および電力コストを最小化する。本発明の1つまたは複数の実施形態の他の利点および実際の用途は、本明細書の説明から明らかとなるであろう。
【0062】
本発明の1つまたは複数の実施形態は、可変性の存在下でPCMデバイスのクロスバー・アレイにおいて所望のアナログ・コンダクタンス値を達成する、反復プログラミング・シーケンスを用いることによって、既存技術での技術的課題に対処する。プログラミング・シーケンスは、反復型であるが、制限された数のプログラミング・ステップを用いて、コンダクタンス値を目標アナログ・コンダクタンスからの所望の範囲内に持ってくる。
【0063】
プログラミング・シーケンスは、全てのNVMデバイスをソフト・リセット状態で初期化することで開始し、次いで、最初にリセット・パルス長をあるコンプライアンス電流において調節することによって反復してプログラミングし、次いで、NVMコンダクタンスが目標範囲内にあるまで、コンプライアンス電流を段階的に減少させる。コンプライアンス電流およびパルス期間などの正確なプログラミング・パラメータは、クロスバー・アレイに依存する。本発明の1つまたは複数の実施形態は、クロスバー・アレイ特徴を通してこれらのプログラミング・パラメータを判断する方法を容易にする。クロスバー・アレイにおけるプログラミングされた重みが、DNNについての、例えば前向き推論についての、合理的性能を達成するために示される。DNNにおいて1つの重みを表すためのコンダクタンスの複数のペアの使用は、プログラミングの精度も改善する。
【0064】
図5は、本発明の1つまたは複数の実施形態による、相変化メモリ・デバイスに重みをマッピングすることについての概要を示す。クロスバー・アレイ200からのNVM隣接デバイス210のセットは、「コンダクタンス・ユニット」510を形成するように構成される。コンダクタンス・ユニット510は、DNN100からの重み値を表すために用いられる。
図5の示された例において、2つのペア(即ち、クロスバー・アレイ200からの4つのPCMデバイス210)が、コンダクタンス・ユニット510内の4つのPCMデバイス210のコンダクタンス値をプログラムすることによって、重みにマッピングされる。重み合計(コンダクタンス、例えばμSにおける)は、4つのPCMコンダクタンス値の重み付けされた合計であり、それは、Fの重要度係数を有するコンダクタンス値の上位ペア(MSP)512および下位ペア(LSP)514に分割される。したがって、コンダクタンス・ユニット510に関連付けられた重みは、PCMデバイス210の2つのペアを含み、W=F(G
+-G
-)+g
+-g
-によって表され得る。(G+、G-)は、MSP512におけるPCMデバイス210のコンダクタンス値であり、(g+、g-)は、LSP514におけるPCMデバイス210のコンダクタンス値である。+および-符号は、開始時にPCMデバイス210に割り当てられる。MSP/LSPの一部としてPCMデバイス210を指定すること、およびさらにPCMデバイス210に符号を割り当てることは、クロスバー・アレイ200内の各PCMデバイス210に「役割」を割り当てることの一部であり得る。重要度係数Fは、所定の値であり、クロスバー・アレイ内のPCMデバイス210の各列に関連付けられた異なる値であってもよい。
【0065】
コンダクタンス・ユニットにおける重みは、次いでスケーリング係数αを用いてDNN100のソフトウェア重み520にマッピングされる。例えば、ソフトウェア重みは、不揮発性メモリ・デバイス210によってサポートされる動的範囲にスケールされなければならない場合がある。動的範囲は、NVMデバイス210が、それが保持し得るデバイス・コンダクタンスの範囲に基づいて寄与し得る電流値の範囲を示している。区別可能な電流値のセットは、アナログ・メモリ・デバイスの有効ビット分解能を表す。動的範囲は、重み/コンダクタンスの目標セットにおいて発生する重みまたはコンダクタンスの最大値および最小値を反映する。有効ビット分解能は、読み出しおよび書き込みノイズなどのデバイス特徴によって判断される。コンダクタンスの動的範囲は、各アナログ・メモリ・デバイスのF係数およびコンダクタンス範囲に依存し、一方、ソフトウェア重みの動的範囲は、ソフトウェア訓練手続(例えば、ハイパーパラメータ、オプティマイザなど)に依存する。動的範囲は、プログラムされるべき事前訓練された重みの所与の数値範囲であってもよい。
【0066】
重要度係数Fおよびスケーリング係数αは、「プログラミング不備の確率(Pfail)」と本明細書で呼ばれる設定可能な値を用いて最適化される。目標重みが低コンダクタンス範囲にマッピングされるとき、PCMデバイス210のコンダクタンス応答は粗い。一方、目標重みが高コンダクタンス範囲にマッピングされるとき、PCMデバイス210のコンダクタンス範囲が制限されることに起因して、Pfailが増加する。高いFは、MSP512とLSP514との間の不均衡を表し、それは、クロスバー・アレイ内のPCMデバイス210にわたる重み収束に悪影響を及ぼし得る。低いF(例えば、F<1)は、MSP512およびLSP514の役割を実際上逆にし、また、より高いPfailをもたらす。本発明の1つまたは複数の実施形態において、Pfailは、目標コンダクタンス範囲内にない重みの数をカウントすることによって動的に計算される。
【0067】
本発明の1つまたは複数の実施形態によれば、コンダクタンス・ユニット510は、コンダクタンス値の後続の更新のためのコンダクタンス・ユニット510の選択を示すために用いられる選択/関与フラグ516をさらに含む。例えば、選択フラグ516はビットであってもよく、ビットが1(または0)であることは、コンダクタンス・ユニット510が後続の反復において更新されることを示し得る。この場合、選択フラグ516を0(または1)にマークすることは、コンダクタンス・ユニット510を後続の反復において更新されることとなるコンダクタンス・ユニットのセットから除去することを示し得る。選択フラグ516は、ビットを用いる以外の任意の他のやり方で実施され得ると理解されたい。
【0068】
図6は、本発明の1つまたは複数の実施形態による、所望の重みをコンダクタンス・ユニットにマッピングすることの可視化を示す。マッピングは、4つのフェーズ(602、604、606、および608)にわたって実行され、各フェーズにおいて、コンダクタンス・ユニット510からの4つのPCMデバイス210のうちの1つのコンダクタンスが調整される。調整は、コンダクタンス・ユニット510について構成されるべき所望の重み(W
D)と、コンダクタンス・ユニット510の実際の重みWとの間の誤差を減少させるために、閉ループ・プログラミングを用いて実行される。誤差=W-W
Dである。代替的には、誤差は、W
D-W、またはその減算の絶対値として計算され得る。誤差閾値620は、調整されているコンダクタンス値が十分であるかどうか、またはコンダクタンス値に対するさらなる調整が必要であるかどうかをチェックするために用いられる。閉ループ・プログラミングは、計算された誤差が、所定の誤差閾値620の範囲内にあることを保証するために実行され、条件が満たされるまでコンダクタンス値が調整される。
【0069】
閉ループ・プログラミングは、パルス幅変調およびコンプライアンス電流変調を含む。本発明の1つまたは複数の実施形態において、パルス幅変調が、目標とされている所定の閾値未満かつ所定の閾値より大きい、コンダクタンス・ユニット510を考慮するために用いられる。コンダクタンス・ユニット510が、所望の重みの所定の閾値620(例えば、±0.25uS)の実質的な範囲内の重みを有する時点で、コンダクタンス・ユニット510は、後続の反復において調整されなければならないコンダクタンス・ユニットのセットから除去される。本発明の1つまたは複数の実施形態によれば、コンプライアンス電流は、それが所望の目標コンダクタンス付近に到達するまで段階的にPCMコンダクタンスを増大させるために、ハードRESETから部分的RESETを通して部分的SETへ、PCMデバイス510をリセットするために降下される。ここで、「所望の目標コンダクタンス付近」は、コンダクタンス・ユニット510の重み(W)が目標重み(WD)から閾値620の範囲内にあることを示す。
【0070】
本発明の1つまたは複数の実施形態において、正の重みは、W=FG++g+を用いてマッピングされ、負の重みG-およびg-は、リセット状態で保持される。さらに、負の重みは、負の重みについて反対のやり方でマッピングされる。さらに、G+が、最初にプログラムされ、次いで、残余誤差が、g+またはg-を用いて補正される。G+(またはG-)に対するそのようなプログラム動作は、G-(またはG+)をリセット状態のままにして、対称ノイズ分布につながる。Gについてのプログラミング誤差は、F係数(例えば、F=3)によって乗算される。
【0071】
図7は、本発明の1つまたは複数の実施形態による、減少する電流掃引の例を示す。図示されたプロット700は、各コンダクタンス・ユニット510が所定の期間(即ちパルス幅)、例えばt
p=24nsの間に減少する値(大きさ)のコンプライアンス電流を受信する場合に初期パルス・シーケンスとして実行される、減少する電流掃引を示す。各コンダクタンス・ユニット510によって受信されるコンプライアンス電流値は、均一目標、例えば2μSに基づく。コンダクタンス・ユニット510について予め定められたパルス幅および均一目標は、他の実施形態では異なり得る。コンプライアンス電流値は、クロスバー・アレイ200に基づく所定の値であってもよい。
【0072】
コンプライアンス電流掃引のそのような第1のシーケンスの後、各コンダクタンス・ユニット510における誤差は、コンダクタンス・ユニット510のどれがそれらの目標重みに到達するかを判断するために計算される。計算された誤差に基づいて、あるコンダクタンス・ユニット510のみ、即ち、PCMデバイス210のあるグループが、後続のパルス掃引に関与するために選択される。「目標信頼性」の範囲内にうまく入るPCMデバイス210は、後続パルスを受信するPCMデバイス210のグループにおいて選択されない(グループから除去される)。ここで、「目標信頼性」の範囲は、前のプログラミング・パルスへのコンダクタンス応答およびコンダクタンス・ユニット510に基づく。同様に、目標重みと実際の重みとの間の誤差が、所定の閾値620の範囲内にあるときに、そのようなコンダクタンス・ユニットにおけるPCMデバイスは、目標信頼性の範囲にあるとしてマークされる。さらに、様々な一定期間のパルスの複数のシーケンス(それぞれが高電流値から低電流値への完全掃引から構成される)が、選択されたコンダクタンス・ユニット510に印加される。
【0073】
図8は、本発明の1つまたは複数の実施形態による、コンダクタンス・ユニットに送信されるパルス・シーケンスを示す。プロット800において示されるように、所定の均一目標についての初期コンプライアンス電流掃引700は、一定パルス期間において電流掃引が減少して完結する。初期電流掃引700の後のコンダクタンス・ユニット510の目標信頼性範囲に基づいて、追加パルス・シーケンス810は、可変パルス幅で送信される。各パルス・シーケンス810のパルス幅は、そのパルス・シーケンスを受信するコンダクタンス・ユニット510における誤差に依存する。
【0074】
可変幅パルス・シーケンス810の各セットの後、目標信頼性範囲内のコンダクタンス・ユニット510の選択は、コンダクタンス・ユニット510のそれぞれにおける誤差に基づいて実行される。目標信頼性範囲内にまだない、それらのコンダクタンス・ユニット510について、プロセスは、追加の可変幅パルス・シーケンス810を送信すること、および対応する誤差をチェックすることによって反復される。
【0075】
クロスバー・アレイ200におけるコンダクタンス・ユニット510をこの方式でプログラムすることによって、クロスバー・アレイ200におけるデバイス可変性にもかかわらず、正確なコンダクタンス・プログラミングが達成される。さらに、1つまたは複数のコンダクタンス・ペアを用いて各重みを表す重みプログラミングは、単一デバイスからのコンダクタンス・プログラミング・ノイズと比較して低いノイズを示す。また、4つのPCMデバイス210(PCMの2つのペア)に重みをマッピングすることは、本発明の1つまたは複数の実施形態において重み誤差を著しく減少させる。しかしながら、重みは、本発明の他の実施形態においてコンダクタンス・ユニット510として構成される異なる数のPCMデバイス210にマッピングされ得ることに留意されたい。実行される様々な実験は、ソフトウェア等価精度が、本発明の1つまたは複数の実施形態における重みマッピングおよびプログラミング技術を用いて、DNN、例えば、長短期記憶ネットワークについて達成されることを実証している。
【0076】
図9は、本発明の1つまたは複数の実施形態による、クロスバー・アレイを用いて実施されるアナログ・シナプスへのニューラル・ネットワーク重みをプログラミングする方法のフローチャートを示す。この場合のシナプスは、コンダクタンス・ユニット510であり、クロスバー・アレイ200内のPCMデバイス210などの不揮発性メモリ・デバイスの1つまたは複数のペアである。方法は、910において、予期される読み出し電流を表す目標重み値のセットにニューラル・ネットワーク重みをマッピングすることを含む。マッピングは、シナプスにおいてどの電流値がどの重み値を表すかをPCMデバイス210の動的範囲に基づいて較正することを含み得る。
【0077】
方法は、920において、役割のセットのうちの1つに各アナログ・シナプス510内の各PCMデバイス210を割り当てることをさらに含み、各役割は、アナログ重要度および符号の両方によって一意に識別される。役割を設定することは、1つまたは複数のPCMデバイス210のグループをコンダクタンス・ユニット510の一部として構成することを含み、コンダクタンス・ユニット510のコンダクタンスが、アナログ・シナプスの重み値を表す。言い換えると、コンダクタンス・ユニット510は、DNN100からのアナログ・シナプスを表す。さらに、役割を設定することは、MSP512またはLSP514のいずれかの一部としてPCMデバイス210とそれらのいずれかの位置とを関連付けることを含み得る。位置は、符号フラグ(例えば、ビット)を用いて設定され得る。符号フラグは、コンダクタンス・ユニット510におけるPCMデバイス210が重み更新/プログラミングの間更新される順序を示す。
【0078】
方法は、930において、シナプスを重みでプログラミングすることをさらに含む。シナプスをプログラミングすることは、932において、各行、列、またはアナログ・シナプスのクロスバー・アレイ200の他のアドレス可能なサブセットから、PCMデバイス210のセットの対応するサブセットを表す目標重み値のベクトルを抽出することを含む。さらに、方法は、934において、その目標重み値の符号に対応する目標符号ビットをPCMデバイス210のそれぞれに割り当てることを含む。さらに、方法は、936において、ペアのどのメンバがプログラムされるべきかの順序を識別する符号ビットを用いて、MSP512からLSP514へ、アナログ・シナプスのベクトル内の各PCMデバイス210を反復してプログラムすることを含む。例えば、正(+)のPCMデバイス210は、本発明の1つまたは複数の実施形態において最初にプログラムされる。他の実施形態では、負(-)が割り当てられたPCMデバイス210が、最初にプログラムされる。
【0079】
さらに、938において、アクティブ・パルス期間を表すパルス期間のセットのそれぞれについて、関与ビットのベクトルが割り当てられ、各関与ビットが上記目標重みベクトル内のPCMデバイス210のうちの1つに対応し、関与ビットは、各シナプス内でプログラムされているコンダクタンスの役割の追加プログラミングを必要とする、任意のシナプスについてアクティブ化される。関与ビットは、コンダクタンス値が1つまたは複数のパルス・シーケンスを用いてさらに調整されなければならないことを示す。
【0080】
方法は、940において、シナプスのアクティブ・ベクトル内のアクティブ化された関与ビットを用いて、コンダクタンス・ユニット内の全てのPCMデバイスにコンダクタンス・プログラミング・パルスを反復適用することをさらに含む。1つまたは複数の例において、パルス・シーケンスは、より高いプログラミング電流から開始すること、およびより低いプログラミング電流に向かって進むこと(減少すること)が適用される。各反復において、方法は、942において、アクティブ・シナプスのベクトルの各メンバの合計有効重みを測定することと、それを関連する目標重み値と比較することと、を含む。942において、比較に基づいて、アクティブ・シナプスについての関与ビットがクリアされる。ビットは、測定された重み値が関連する目標重み値に到達した、即ち、誤差が所定の閾値620よりも少ない(か、または等しい)シナプスについて、クリアされる。
【0081】
上記プログラミング・ステップは、プログラミング・パルス・シーケンスを用いて繰り返されるが、(i)944において、プログラムが不十分であったコンダクタンス値に対処するためのより長いパルス、および(ii)946において、過度にプログラムされたコンダクタンス値に対処するためのより短いパルスを用いて繰り返される。ここで、プログラムが不十分であることは、所望のコンダクタンスが実際のコンダクタンスよりも大きいことを示し、過度にプログラムされていることは、所望のコンダクタンスがPCMデバイス210における実際のコンダクタンスよりも小さいことを示す。
【0082】
プログラミングは、950において、クロスバー・アレイ200にわたってより高い重要度からより低い重要度の順に、全てのコンダクタンスの役割が処理されるまで、繰り返される。
【0083】
クロスバー・アレイ200における不揮発性メモリ・デバイス210は、相変化メモリ(PCM)・デバイス、抵抗変化型メモリ(RRAM)などのうちのいずれか1つであってもよい。
【0084】
したがって、本発明の1つまたは複数の実施形態は、可変性の存在下でPCMデバイスなどのNVMデバイスのクロスバー・アレイにおいて所望のアナログ・コンダクタンス値を達成する、反復プログラミング・シーケンスを提供する。提供されるプログラミング・シーケンスは、反復型であり、制限された数のプログラミング・ステップを用いて、コンダクタンス値を目標アナログ・コンダクタンスからの所望の範囲内に持ってくる。詳細に説明されたように、プログラミング・シーケンスは、全てのPCMデバイスをソフト・リセット状態で初期化することで開始し、次いで、最初にリセット・パルス長をあるコンプライアンス電流において調節することによって反復してプログラミングし、その後、PCMコンダクタンスが目標範囲内にあるまで、コンプライアンス電流を段階的に減少させる。コンプライアンス電流およびパルス期間などの正確なプログラミング・パラメータは、クロスバー・アレイに依存し、設定可能な所定のパラメータであってもよい。クロスバー・アレイにおいてプログラムされた重みは、前向き推論などについて、DNNを実施するために用いられ得る。
【0085】
本発明の1つまたは複数の実施形態によれば、コンダクタンスの複数のペアが、プログラミング精度を改善するための、DNNにおける1つの重みを表すために用いられる。
【0086】
本発明は、任意の可能な統合の技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0087】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令をその上に記録させる溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号であると解釈されるべきではない。
【0088】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組み合わせを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
【0089】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラム言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続されてもよい。あるいは、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0090】
本発明の態様は、発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
【0091】
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を作成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方式で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
【0092】
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ実施プロセスを作り出すために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。
【0093】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施態様のアーキテクチャ、機能性、および動作を例示する。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェアベース・システムによって実施され得ることにも留意されたい。
【0094】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示された実施形態に限定することを意図したものではない。多くの修正および変形が、説明される実施形態の範囲から逸脱することなく当業者に明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の用途、もしくは市場で発見される技術を超える技術的改善を最もよく説明するため、または他の当業者が本明細書で説明された実施形態を理解することを可能にするために、選択された。
【0095】
本発明の例において、クロスバー・アレイ内の複数の相変化メモリ・デバイスから、相変化メモリ・デバイスの2つのペアをコンダクタンス・ユニットとして構成することであって、複数のコンダクタンス・ユニットが、人工ニューラル・ネットワークにおける複数のアナログ・シナプスを表す、構成することと、クロスバー・アレイ内の複数のアナログ・シナプスにパルス・シーケンスを送信することであって、アナログ・シナプスの重み値が、コンダクタンス・ユニットのコンダクタンス値に基づき、パルス・シーケンスがコンダクタンス・ユニットのコンダクタンス値を変更する、送信することと、アナログ・シナプスのセットに変動期間の電気パルスのセットを送信することによって、選択されるアナログ・シナプスのセットからのアナログ・シナプスのそれぞれの重み値を更新することであって、電気パルスのセットが、アナログ・シナプスのセットに対応するコンダクタンス・ユニットのコンダクタンス値を変更し、クロスバー・アレイからのアナログ・シナプスのセットが、複数のアナログ・シナプスの重み値をアナログ・シナプスに関連付けられた目標重み値と比較することに基づいて選択される、更新することと、を含む、コンピュータ実施方法が提供される。
【0096】
本発明の別の例において、複数の相変化メモリ・デバイスであって、相変化メモリ・デバイスのうちの1つが、クロスバー・アレイ内の複数のクロスポイントのそれぞれに位置し、4つの相変化メモリ・デバイスの全てのセットがコンダクタンス・ユニットを形成し、複数のコンダクタンス・ユニットが、人工ニューラル・ネットワークにおける複数のアナログ・シナプスを表す、複数の相変化メモリ・デバイスと、クロスバー・アレイ内の複数のアナログ・シナプスに対するパルス・シーケンスを受信することであって、アナログ・シナプスの重み値が、コンダクタンス・ユニットのコンダクタンス値に基づき、パルス・シーケンスがコンダクタンス・ユニットのコンダクタンス値を変更する、受信すること、およびアナログ・シナプスのセットに対する変動期間の電気パルスのセットを受信することによって選択されるアナログ・シナプスのセットからのアナログ・シナプスのそれぞれの重み値を更新することであって、電気パルスのセットが、アナログ・シナプスのセットに対応するコンダクタンス・ユニットのコンダクタンス値を変更し、クロスバー・アレイからのアナログ・シナプスのセットが、複数のアナログ・シナプスの重み値をアナログ・シナプスに関連付けられた目標重み値と比較することに基づいて選択される、更新することを含む方法を実行することによって、相変化メモリ・デバイスのコンダクタンス値をプログラムするように構成される電気回路と、を含む、クロスバー・アレイが提供される。